diff --git a/bower.json b/bower.json index ed8a2f18..407d92af 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "opal", - "version": "1.4.0", + "version": "1.4.1", "homepage": "http://opalrb.com", "authors": [ "Adam Beynon ", diff --git a/index.html b/index.html index 11de0143..967e7690 100644 --- a/index.html +++ b/index.html @@ -136,6 +136,8 @@

Versions available

  • 1.4.0
  • +
  • 1.4.1
  • +
  • current
  • master
  • diff --git a/opal/1.4.1/await.js b/opal/1.4.1/await.js new file mode 100644 index 00000000..1f77e363 --- /dev/null +++ b/opal/1.4.1/await.js @@ -0,0 +1,629 @@ +Opal.modules["promise/v2"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $klass = Opal.klass, $def = Opal.def, $eqeq = Opal.eqeq, $send = Opal.send, $alias = Opal.alias, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $rb_minus = Opal.rb_minus, $to_a = Opal.to_a, $eqeqeq = Opal.eqeqeq, $rb_plus = Opal.rb_plus; + + Opal.add_stubs('instance_variable_set,Array,==,length,first,tap,attr_reader,!=,native?,raise,include?,any?,proc,call,nativity_check!,gen_tracing_proc,<<,there_can_be_only_one!,then,to_proc,fail,always,!,>,value,unshift,-,prev,trace,light_nativity_check!,nil?,resolved?,===,rejected?,map,when,new,rescue,resolve,reject,class,+,object_id,inspect'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'PromiseV2'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.type = $proto.next = $proto.realized = $proto.resolve_proc = $proto.reject_proc = $proto.value = nil; + + (function(self, $parent_nesting) { + + + + $def(self, '$allocate', function $$allocate() { + var $a, self = this, ok = nil, fail = nil, prom = nil; + + + $a = [nil, nil], (ok = $a[0]), (fail = $a[1]), $a; + prom = new self.$$constructor(function(_ok, _fail) { ok = _ok; fail = _fail; }); + prom.$instance_variable_set("@type", "opal"); + prom.$instance_variable_set("@resolve_proc", ok); + prom.$instance_variable_set("@reject_proc", fail); + return prom; + }, 0); + + $def(self, '$when', function $$when($a) { + var $post_args, promises, self = this; + + + + $post_args = Opal.slice.call(arguments); + + promises = $post_args;; + promises = self.$Array(($eqeq(promises.$length(), 1) ? (promises.$first()) : (promises))); + return $send((Promise.all(promises)), 'tap', [], function $$1(prom){ + + + if (prom == null) prom = nil;; + return prom.$instance_variable_set("@type", "when");}, 1); + }, -1); + + $def(self, '$all_resolved', function $$all_resolved($a) { + var $post_args, promises, self = this; + + + + $post_args = Opal.slice.call(arguments); + + promises = $post_args;; + promises = self.$Array(($eqeq(promises.$length(), 1) ? (promises.$first()) : (promises))); + return $send((Promise.allResolved(promises)), 'tap', [], function $$2(prom){ + + + if (prom == null) prom = nil;; + return prom.$instance_variable_set("@type", "all_resolved");}, 1); + }, -1); + + $def(self, '$any', function $$any($a) { + var $post_args, promises, self = this; + + + + $post_args = Opal.slice.call(arguments); + + promises = $post_args;; + promises = self.$Array(($eqeq(promises.$length(), 1) ? (promises.$first()) : (promises))); + return $send((Promise.any(promises)), 'tap', [], function $$3(prom){ + + + if (prom == null) prom = nil;; + return prom.$instance_variable_set("@type", "any");}, 1); + }, -1); + + $def(self, '$race', function $$race($a) { + var $post_args, promises, self = this; + + + + $post_args = Opal.slice.call(arguments); + + promises = $post_args;; + promises = self.$Array(($eqeq(promises.$length(), 1) ? (promises.$first()) : (promises))); + return $send((Promise.race(promises)), 'tap', [], function $$4(prom){ + + + if (prom == null) prom = nil;; + return prom.$instance_variable_set("@type", "race");}, 1); + }, -1); + + $def(self, '$resolve', function $$resolve(value) { + + + + if (value == null) value = nil;; + return $send((Promise.resolve(value)), 'tap', [], function $$5(prom){ + + + if (prom == null) prom = nil;; + prom.$instance_variable_set("@type", "resolve"); + prom.$instance_variable_set("@realized", "resolve"); + return prom.$instance_variable_set("@value", value);}, 1); + }, -1); + + $def(self, '$reject', function $$reject(value) { + + + + if (value == null) value = nil;; + return $send((Promise.reject(value)), 'tap', [], function $$6(prom){ + + + if (prom == null) prom = nil;; + prom.$instance_variable_set("@type", "reject"); + prom.$instance_variable_set("@realized", "reject"); + return prom.$instance_variable_set("@value", value);}, 1); + }, -1); + $alias(self, "all", "when"); + $alias(self, "error", "reject"); + return $alias(self, "value", "resolve"); + })(Opal.get_singleton_class(self), $nesting); + self.$attr_reader("prev", "next"); + + $def(self, '$native?', function $PromiseV2_native$ques$7() { + var self = this; + + return self.type['$!=']("opal") + }, 0); + + $def(self, '$nativity_check!', function $PromiseV2_nativity_check$excl$8() { + var self = this; + + if ($truthy(self['$native?']())) { + return self.$raise($$('ArgumentError'), "this promise is native to JavaScript") + } else { + return nil + } + }, 0); + + $def(self, '$light_nativity_check!', function $PromiseV2_light_nativity_check$excl$9() { + var self = this; + + + if ($truthy(["reject", "resolve", "trace", "always", "fail", "then"]['$include?'](self.type))) { + return nil + }; + if ($truthy(self['$native?']())) { + return self.$raise($$('ArgumentError'), "this promise is native to JavaScript") + } else { + return nil + }; + }, 0); + + $def(self, '$there_can_be_only_one!', function $PromiseV2_there_can_be_only_one$excl$10() { + var self = this; + + if (($truthy(self.next) && ($truthy(self.next['$any?']())))) { + return self.$raise($$('ArgumentError'), "a promise has already been chained") + } else { + return nil + } + }, 0); + + $def(self, '$gen_tracing_proc', function $$gen_tracing_proc(passing) { + var block = $$gen_tracing_proc.$$p || nil, self = this; + + delete $$gen_tracing_proc.$$p; + + ; + return $send(self, 'proc', [], function $$11(i){var res = nil; + + + + if (i == null) i = nil;; + res = passing.$call(i); + Opal.yield1(block, res); + return res;}, 1); + }, 1); + + $def(self, '$resolve', function $$resolve(value) { + var self = this; + + + + if (value == null) value = nil;; + self['$nativity_check!'](); + if ($truthy(self.realized)) { + self.$raise($$('ArgumentError'), "this promise was already resolved") + }; + self.value = value; + self.realized = "resolve"; + self.resolve_proc.$call(value); + return self; + }, -1); + + $def(self, '$reject', function $$reject(value) { + var self = this; + + + + if (value == null) value = nil;; + self['$nativity_check!'](); + if ($truthy(self.realized)) { + self.$raise($$('ArgumentError'), "this promise was already resolved") + }; + self.value = value; + self.realized = "reject"; + self.reject_proc.$call(value); + return self; + }, -1); + + $def(self, '$then', function $$then() { + var block = $$then.$$p || nil, self = this, prom = nil, blk = nil, $ret_or_1 = nil; + + delete $$then.$$p; + + ; + prom = nil; + blk = $send(self, 'gen_tracing_proc', [block], function $$12(val){ + + + if (val == null) val = nil;; + prom.$instance_variable_set("@realized", "resolve"); + return prom.$instance_variable_set("@value", val);}, 1); + prom = self.then(blk); + prom.$instance_variable_set("@prev", self); + prom.$instance_variable_set("@type", "then"); + (self.next = ($truthy(($ret_or_1 = self.next)) ? ($ret_or_1) : ([])))['$<<'](prom); + return prom; + }, 0); + + $def(self, '$then!', function $PromiseV2_then$excl$13() { + var block = $PromiseV2_then$excl$13.$$p || nil, self = this; + + delete $PromiseV2_then$excl$13.$$p; + + ; + self['$there_can_be_only_one!'](); + return $send(self, 'then', [], block.$to_proc()); + }, 0); + + $def(self, '$fail', function $$fail() { + var block = $$fail.$$p || nil, self = this, prom = nil, blk = nil, $ret_or_1 = nil; + + delete $$fail.$$p; + + ; + prom = nil; + blk = $send(self, 'gen_tracing_proc', [block], function $$14(val){ + + + if (val == null) val = nil;; + prom.$instance_variable_set("@realized", "resolve"); + return prom.$instance_variable_set("@value", val);}, 1); + prom = self.catch(blk); + prom.$instance_variable_set("@prev", self); + prom.$instance_variable_set("@type", "fail"); + (self.next = ($truthy(($ret_or_1 = self.next)) ? ($ret_or_1) : ([])))['$<<'](prom); + return prom; + }, 0); + + $def(self, '$fail!', function $PromiseV2_fail$excl$15() { + var block = $PromiseV2_fail$excl$15.$$p || nil, self = this; + + delete $PromiseV2_fail$excl$15.$$p; + + ; + self['$there_can_be_only_one!'](); + return $send(self, 'fail', [], block.$to_proc()); + }, 0); + + $def(self, '$always', function $$always() { + var block = $$always.$$p || nil, self = this, prom = nil, blk = nil, $ret_or_1 = nil; + + delete $$always.$$p; + + ; + prom = nil; + blk = $send(self, 'gen_tracing_proc', [block], function $$16(val){ + + + if (val == null) val = nil;; + prom.$instance_variable_set("@realized", "resolve"); + return prom.$instance_variable_set("@value", val);}, 1); + prom = self.finally(blk); + prom.$instance_variable_set("@prev", self); + prom.$instance_variable_set("@type", "always"); + (self.next = ($truthy(($ret_or_1 = self.next)) ? ($ret_or_1) : ([])))['$<<'](prom); + return prom; + }, 0); + + $def(self, '$always!', function $PromiseV2_always$excl$17() { + var block = $PromiseV2_always$excl$17.$$p || nil, self = this; + + delete $PromiseV2_always$excl$17.$$p; + + ; + self['$there_can_be_only_one!'](); + return $send(self, 'always', [], block.$to_proc()); + }, 0); + + $def(self, '$trace', function $$trace(depth) { + var block = $$trace.$$p || nil, self = this, prom = nil; + + delete $$trace.$$p; + + ; + + if (depth == null) depth = nil;; + prom = $send(self, 'then', [], function $$18(){var $a, self = $$18.$$s == null ? this : $$18.$$s, values = nil, $ret_or_1 = nil, $ret_or_2 = nil, val = nil; + + + values = []; + prom = self; + while ($truthy(($truthy(($ret_or_1 = prom)) ? (($truthy(($ret_or_2 = depth['$!']())) ? ($ret_or_2) : ($rb_gt(depth, 0)))) : ($ret_or_1)))) { + + val = nil; + + try { + val = prom.$value() + } catch ($err) { + if (Opal.rescue($err, [$$('ArgumentError')])) { + try { + val = "native" + } finally { Opal.pop_exception(); } + } else { throw $err; } + };; + values.$unshift(val); + if ($truthy(depth)) { + depth = $rb_minus(depth, 1) + }; + prom = prom.$prev(); + }; + return Opal.yieldX(block, $to_a(values));;}, {$$arity: 0, $$s: self}); + prom.$instance_variable_set("@type", "trace"); + return prom; + }, -1); + + $def(self, '$trace!', function $PromiseV2_trace$excl$19($a) { + var block = $PromiseV2_trace$excl$19.$$p || nil, $post_args, args, self = this; + + delete $PromiseV2_trace$excl$19.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + self['$there_can_be_only_one!'](); + return $send(self, 'trace', $to_a(args), block.$to_proc()); + }, -1); + + $def(self, '$resolved?', function $PromiseV2_resolved$ques$20() { + var self = this; + + + self['$light_nativity_check!'](); + return self.realized['$==']("resolve"); + }, 0); + + $def(self, '$rejected?', function $PromiseV2_rejected$ques$21() { + var self = this; + + + self['$light_nativity_check!'](); + return self.realized['$==']("reject"); + }, 0); + + $def(self, '$realized?', function $PromiseV2_realized$ques$22() { + var self = this; + + + self['$light_nativity_check!'](); + return self.realized['$nil?']()['$!'](); + }, 0); + + $def(self, '$value', function $$value() { + var self = this; + + if ($truthy(self['$resolved?']())) { + if ($eqeqeq($$('PromiseV2'), self.value)) { + return self.value.$value() + } else { + return self.value + } + } else { + return nil + } + }, 0); + + $def(self, '$error', function $$error() { + var self = this; + + + self['$light_nativity_check!'](); + if ($truthy(self['$rejected?']())) { + return self.value + } else { + return nil + }; + }, 0); + + $def(self, '$and', function $$and($a) { + var $post_args, promises, self = this; + + + + $post_args = Opal.slice.call(arguments); + + promises = $post_args;; + promises = $send(promises, 'map', [], function $$23(i){ + + + if (i == null) i = nil;; + if ($eqeqeq($$('PromiseV2'), i)) { + return i + } else { + return $$('PromiseV2').$value(i) + };}, 1); + return $send($send($$('PromiseV2'), 'when', [self].concat($to_a(promises))), 'then', [], function $$24(a, $b){var $post_args, b; + + + + if (a == null) a = nil;; + + $post_args = Opal.slice.call(arguments, 1); + + b = $post_args;; + return [].concat($to_a(a)).concat($to_a(b));}, -2); + }, -1); + + $def(self, '$initialize', function $$initialize() { + var block = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + ; + if ((block !== nil)) { + return Opal.yield1(block, self); + } else { + return nil + }; + }, 0); + + $def(self, '$to_v1', function $$to_v1() { + var self = this, v1 = nil; + + + v1 = $$('PromiseV1').$new(); + $send($send(self, 'then', [], function $$25(i){ + + + if (i == null) i = nil;; + return v1.$resolve(i);}, 1), 'rescue', [], function $$26(i){ + + + if (i == null) i = nil;; + return v1.$reject(i);}, 1); + return v1; + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this, result = nil; + + + result = "#<" + (self.$class()); + if ($truthy(self.type)) { + if (!$truthy(["opal", "resolve", "reject"]['$include?'](self.type))) { + result = $rb_plus(result, ":" + (self.type)) + } + } else { + result = $rb_plus(result, ":native") + }; + if ($truthy(self.realized)) { + result = $rb_plus(result, ":" + (self.realized)) + }; + result = $rb_plus(result, "(" + (self.$object_id()) + ")"); + if (($truthy(self.next) && ($truthy(self.next['$any?']())))) { + result = $rb_plus(result, " >> " + (self.next.$inspect())) + }; + if ($truthy(self.value)) { + result = $rb_plus(result, ": " + (self.value.$inspect())) + }; + result = $rb_plus(result, ">"); + return result; + }, 0); + $alias(self, "catch", "fail"); + $alias(self, "catch!", "fail!"); + $alias(self, "do", "then"); + $alias(self, "do!", "then!"); + $alias(self, "ensure", "always"); + $alias(self, "ensure!", "always!"); + $alias(self, "finally", "always"); + $alias(self, "finally!", "always!"); + $alias(self, "reject!", "reject"); + $alias(self, "rescue", "fail"); + $alias(self, "rescue!", "fail!"); + $alias(self, "resolve!", "resolve"); + $alias(self, "to_n", "itself"); + return $alias(self, "to_v2", "itself"); + })($nesting[0], Promise, $nesting) +}; + +Opal.modules["await"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $coerce_to = Opal.coerce_to, $truthy = Opal.truthy, $klass = Opal.klass, $rb_lt = Opal.rb_lt, $rb_plus = Opal.rb_plus, $def = Opal.def, $send = Opal.send, $module = Opal.module, $to_a = Opal.to_a, $gvars = Opal.gvars, $rb_times = Opal.rb_times, $alias = Opal.alias; + + Opal.add_stubs('warn,require,<,<<,[],+,map_await,to_proc,when,map,empty?,pop,call,new,proc,resolve,*,async?'); + + if ($truthy(Opal.config.experimental_features_severity == 'warning')) { + self.$warn("Await functionality is a technology preview, which means it may change its behavior " + "in the future unless this warning is removed. If you are interested in this part, " + "please make sure you track the async/await/promises tag on Opal issues: " + "https://github.com/opal/opal/issues?q=label%3Aasync%2Fawait%2Fpromises") + }; + var AsyncFunction = Object.getPrototypeOf(async function() {}).constructor;; + self.$require("promise/v2"); + (function($base, $super) { + var self = $klass($base, $super, 'Array'); + + + + + $def(self, '$map_await', async function $$map_await() { + var block = $$map_await.$$p || nil, $a, self = this, i = nil, results = nil; + + delete $$map_await.$$p; + + ; + i = 0; + results = []; + while ($truthy($rb_lt(i, self.length))) { + + results['$<<']((await (Opal.yield1(block, self['$[]'](i))))); + i = $rb_plus(i, 1); + }; + return results; + }, 0); + return $def(self, '$each_await', async function $$each_await() { + var block = $$each_await.$$p || nil, self = this; + + delete $$each_await.$$p; + + ; + (await ($send(self, 'map_await', [], block.$to_proc()))); + return self; + }, 0); + })($nesting[0], null); + (function($base, $parent_nesting) { + var self = $module($base, 'Enumerable'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$each_async', async function $$each_async() { + var block = $$each_async.$$p || nil, self = this; + + delete $$each_async.$$p; + + ; + return (await ($send($$('PromiseV2'), 'when', $to_a($send(self, 'map', [], block.$to_proc()))))); + }, 0) + })($nesting[0], $nesting); + (function($base, $parent_nesting) { + var self = $module($base, 'Kernel'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$exit', async function $$exit(status) { + var $a, $ret_or_1 = nil, block = nil; + if ($gvars.__at_exit__ == null) $gvars.__at_exit__ = nil; + + + + if (status == null) status = true;; + $gvars.__at_exit__ = ($truthy(($ret_or_1 = $gvars.__at_exit__)) ? ($ret_or_1) : ([])); + while (!($truthy($gvars.__at_exit__['$empty?']()))) { + + block = $gvars.__at_exit__.$pop(); + (await (block.$call())); + }; + + if (status.$$is_boolean) { + status = status ? 0 : 1; + } else { + status = $coerce_to(status, $$('Integer'), 'to_int') + } + + Opal.exit(status); + ; + return nil; + }, -1); + return $def(self, '$sleep', function $$sleep(seconds) { + var self = this, prom = nil; + + + prom = $$('PromiseV2').$new(); + setTimeout($send(self, 'proc', [], function $$1(){ + return prom.$resolve()}, 0), $rb_times(seconds, 1000)); + return prom; + }, 1); + })($nesting[0], $nesting); + (function($base) { + var self = $module($base, 'Kernel'); + + + return $alias(self, "await", "itself") + })($nesting[0]); + (function($base, $super) { + var self = $klass($base, $super, 'Proc'); + + + return $def(self, '$async?', function $Proc_async$ques$2() { + var self = this; + + return self instanceof AsyncFunction; + }, 0) + })($nesting[0], null); + return (function($base, $super) { + var self = $klass($base, $super, 'Method'); + + var $proto = self.$$prototype; + + $proto.method = nil; + return $def(self, '$async?', function $Method_async$ques$3() { + var self = this; + + return self.method['$async?']() + }, 0) + })($nesting[0], null); +}; diff --git a/opal/1.4.1/await.min.js b/opal/1.4.1/await.min.js new file mode 100644 index 00000000..f3bd4f75 --- /dev/null +++ b/opal/1.4.1/await.min.js @@ -0,0 +1 @@ +Opal.modules["promise/v2"]=function(Opal){var $nesting=[],nil=Opal.nil,$klass=Opal.klass,$def=Opal.def,$eqeq=Opal.eqeq,$send=Opal.send,$alias=Opal.alias,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$rb_minus=Opal.rb_minus,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$rb_plus=Opal.rb_plus;return Opal.add_stubs("instance_variable_set,Array,==,length,first,tap,attr_reader,!=,native?,raise,include?,any?,proc,call,nativity_check!,gen_tracing_proc,<<,there_can_be_only_one!,then,to_proc,fail,always,!,>,value,unshift,-,prev,trace,light_nativity_check!,nil?,resolved?,===,rejected?,map,when,new,rescue,resolve,reject,class,+,object_id,inspect"),function($base,$super,$parent_nesting){var self=$klass($base,Promise,"PromiseV2"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.type=$proto.next=$proto.realized=$proto.resolve_proc=$proto.reject_proc=$proto.value=nil,function(self,$parent_nesting){$def(self,"$allocate",(function(){var $a,ok=nil,fail=nil,prom=nil;return ok=($a=[nil,nil])[0],fail=$a[1],(prom=new this.$$constructor((function(_ok,_fail){ok=_ok,fail=_fail}))).$instance_variable_set("@type","opal"),prom.$instance_variable_set("@resolve_proc",ok),prom.$instance_variable_set("@reject_proc",fail),prom}),0),$def(self,"$when",(function($a){var promises,self=this;return promises=Opal.slice.call(arguments),promises=self.$Array($eqeq(promises.$length(),1)?promises.$first():promises),$send(Promise.all(promises),"tap",[],(function(prom){return null==prom&&(prom=nil),prom.$instance_variable_set("@type","when")}),1)}),-1),$def(self,"$all_resolved",(function($a){var promises,self=this;return promises=Opal.slice.call(arguments),promises=self.$Array($eqeq(promises.$length(),1)?promises.$first():promises),$send(Promise.allResolved(promises),"tap",[],(function(prom){return null==prom&&(prom=nil),prom.$instance_variable_set("@type","all_resolved")}),1)}),-1),$def(self,"$any",(function($a){var promises,self=this;return promises=Opal.slice.call(arguments),promises=self.$Array($eqeq(promises.$length(),1)?promises.$first():promises),$send(Promise.any(promises),"tap",[],(function(prom){return null==prom&&(prom=nil),prom.$instance_variable_set("@type","any")}),1)}),-1),$def(self,"$race",(function($a){var promises,self=this;return promises=Opal.slice.call(arguments),promises=self.$Array($eqeq(promises.$length(),1)?promises.$first():promises),$send(Promise.race(promises),"tap",[],(function(prom){return null==prom&&(prom=nil),prom.$instance_variable_set("@type","race")}),1)}),-1),$def(self,"$resolve",(function(value){return null==value&&(value=nil),$send(Promise.resolve(value),"tap",[],(function(prom){return null==prom&&(prom=nil),prom.$instance_variable_set("@type","resolve"),prom.$instance_variable_set("@realized","resolve"),prom.$instance_variable_set("@value",value)}),1)}),-1),$def(self,"$reject",(function(value){return null==value&&(value=nil),$send(Promise.reject(value),"tap",[],(function(prom){return null==prom&&(prom=nil),prom.$instance_variable_set("@type","reject"),prom.$instance_variable_set("@realized","reject"),prom.$instance_variable_set("@value",value)}),1)}),-1),$alias(self,"all","when"),$alias(self,"error","reject"),$alias(self,"value","resolve")}(Opal.get_singleton_class(self)),self.$attr_reader("prev","next"),$def(self,"$native?",(function(){return this.type["$!="]("opal")}),0),$def(self,"$nativity_check!",(function(){return $truthy(this["$native?"]())?this.$raise($$("ArgumentError"),"this promise is native to JavaScript"):nil}),0),$def(self,"$light_nativity_check!",(function(){return $truthy(["reject","resolve","trace","always","fail","then"]["$include?"](this.type))?nil:$truthy(this["$native?"]())?this.$raise($$("ArgumentError"),"this promise is native to JavaScript"):nil}),0),$def(self,"$there_can_be_only_one!",(function(){return $truthy(this.next)&&$truthy(this.next["$any?"]())?this.$raise($$("ArgumentError"),"a promise has already been chained"):nil}),0),$def(self,"$gen_tracing_proc",(function $$gen_tracing_proc(passing){var block=$$gen_tracing_proc.$$p||nil;return delete $$gen_tracing_proc.$$p,$send(this,"proc",[],(function(i){var res;return null==i&&(i=nil),res=passing.$call(i),Opal.yield1(block,res),res}),1)}),1),$def(self,"$resolve",(function(value){return null==value&&(value=nil),this["$nativity_check!"](),$truthy(this.realized)&&this.$raise($$("ArgumentError"),"this promise was already resolved"),this.value=value,this.realized="resolve",this.resolve_proc.$call(value),this}),-1),$def(self,"$reject",(function(value){return null==value&&(value=nil),this["$nativity_check!"](),$truthy(this.realized)&&this.$raise($$("ArgumentError"),"this promise was already resolved"),this.value=value,this.realized="reject",this.reject_proc.$call(value),this}),-1),$def(self,"$then",(function $$then(){var blk,$ret_or_1,block=$$then.$$p||nil,prom=nil;return delete $$then.$$p,prom=nil,blk=$send(this,"gen_tracing_proc",[block],(function(val){return null==val&&(val=nil),prom.$instance_variable_set("@realized","resolve"),prom.$instance_variable_set("@value",val)}),1),(prom=this.then(blk)).$instance_variable_set("@prev",this),prom.$instance_variable_set("@type","then"),(this.next=$truthy($ret_or_1=this.next)?$ret_or_1:[])["$<<"](prom),prom}),0),$def(self,"$then!",(function $PromiseV2_then$excl$13(){var block=$PromiseV2_then$excl$13.$$p||nil;return delete $PromiseV2_then$excl$13.$$p,this["$there_can_be_only_one!"](),$send(this,"then",[],block.$to_proc())}),0),$def(self,"$fail",(function $$fail(){var blk,$ret_or_1,block=$$fail.$$p||nil,prom=nil;return delete $$fail.$$p,prom=nil,blk=$send(this,"gen_tracing_proc",[block],(function(val){return null==val&&(val=nil),prom.$instance_variable_set("@realized","resolve"),prom.$instance_variable_set("@value",val)}),1),(prom=this.catch(blk)).$instance_variable_set("@prev",this),prom.$instance_variable_set("@type","fail"),(this.next=$truthy($ret_or_1=this.next)?$ret_or_1:[])["$<<"](prom),prom}),0),$def(self,"$fail!",(function $PromiseV2_fail$excl$15(){var block=$PromiseV2_fail$excl$15.$$p||nil;return delete $PromiseV2_fail$excl$15.$$p,this["$there_can_be_only_one!"](),$send(this,"fail",[],block.$to_proc())}),0),$def(self,"$always",(function $$always(){var blk,$ret_or_1,block=$$always.$$p||nil,prom=nil;return delete $$always.$$p,prom=nil,blk=$send(this,"gen_tracing_proc",[block],(function(val){return null==val&&(val=nil),prom.$instance_variable_set("@realized","resolve"),prom.$instance_variable_set("@value",val)}),1),(prom=this.finally(blk)).$instance_variable_set("@prev",this),prom.$instance_variable_set("@type","always"),(this.next=$truthy($ret_or_1=this.next)?$ret_or_1:[])["$<<"](prom),prom}),0),$def(self,"$always!",(function $PromiseV2_always$excl$17(){var block=$PromiseV2_always$excl$17.$$p||nil;return delete $PromiseV2_always$excl$17.$$p,this["$there_can_be_only_one!"](),$send(this,"always",[],block.$to_proc())}),0),$def(self,"$trace",(function $$trace(depth){var block=$$trace.$$p||nil,prom=nil;return delete $$trace.$$p,null==depth&&(depth=nil),(prom=$send(this,"then",[],(function $$18(){var values=nil,$ret_or_1=nil,$ret_or_2=nil,val=nil;for(values=[],prom=null==$$18.$$s?this:$$18.$$s;$truthy($truthy($ret_or_1=prom)?$truthy($ret_or_2=depth["$!"]())?$ret_or_2:$rb_gt(depth,0):$ret_or_1);){val=nil;try{val=prom.$value()}catch($err){if(!Opal.rescue($err,[$$("ArgumentError")]))throw $err;try{val="native"}finally{Opal.pop_exception()}}values.$unshift(val),$truthy(depth)&&(depth=$rb_minus(depth,1)),prom=prom.$prev()}return Opal.yieldX(block,$to_a(values))}),{$$arity:0,$$s:this})).$instance_variable_set("@type","trace"),prom}),-1),$def(self,"$trace!",(function $PromiseV2_trace$excl$19($a){var args,block=$PromiseV2_trace$excl$19.$$p||nil,self=this;return delete $PromiseV2_trace$excl$19.$$p,args=Opal.slice.call(arguments),self["$there_can_be_only_one!"](),$send(self,"trace",$to_a(args),block.$to_proc())}),-1),$def(self,"$resolved?",(function(){return this["$light_nativity_check!"](),this.realized["$=="]("resolve")}),0),$def(self,"$rejected?",(function(){return this["$light_nativity_check!"](),this.realized["$=="]("reject")}),0),$def(self,"$realized?",(function(){return this["$light_nativity_check!"](),this.realized["$nil?"]()["$!"]()}),0),$def(self,"$value",(function(){return $truthy(this["$resolved?"]())?$eqeqeq($$("PromiseV2"),this.value)?this.value.$value():this.value:nil}),0),$def(self,"$error",(function(){return this["$light_nativity_check!"](),$truthy(this["$rejected?"]())?this.value:nil}),0),$def(self,"$and",(function($a){var $post_args,promises,self=this;return $post_args=Opal.slice.call(arguments),promises=$send(promises=$post_args,"map",[],(function(i){return null==i&&(i=nil),$eqeqeq($$("PromiseV2"),i)?i:$$("PromiseV2").$value(i)}),1),$send($send($$("PromiseV2"),"when",[self].concat($to_a(promises))),"then",[],(function(a,$b){var b;return null==a&&(a=nil),b=Opal.slice.call(arguments,1),[].concat($to_a(a)).concat($to_a(b))}),-2)}),-1),$def(self,"$initialize",(function $$initialize(){var block=$$initialize.$$p||nil;return delete $$initialize.$$p,block!==nil?Opal.yield1(block,this):nil}),0),$def(self,"$to_v1",(function(){var v1=nil;return v1=$$("PromiseV1").$new(),$send($send(this,"then",[],(function(i){return null==i&&(i=nil),v1.$resolve(i)}),1),"rescue",[],(function(i){return null==i&&(i=nil),v1.$reject(i)}),1),v1}),0),$def(self,"$inspect",(function(){var result=nil;return result="#<"+this.$class(),$truthy(this.type)?$truthy(["opal","resolve","reject"]["$include?"](this.type))||(result=$rb_plus(result,":"+this.type)):result=$rb_plus(result,":native"),$truthy(this.realized)&&(result=$rb_plus(result,":"+this.realized)),result=$rb_plus(result,"("+this.$object_id()+")"),$truthy(this.next)&&$truthy(this.next["$any?"]())&&(result=$rb_plus(result," >> "+this.next.$inspect())),$truthy(this.value)&&(result=$rb_plus(result,": "+this.value.$inspect())),result=$rb_plus(result,">")}),0),$alias(self,"catch","fail"),$alias(self,"catch!","fail!"),$alias(self,"do","then"),$alias(self,"do!","then!"),$alias(self,"ensure","always"),$alias(self,"ensure!","always!"),$alias(self,"finally","always"),$alias(self,"finally!","always!"),$alias(self,"reject!","reject"),$alias(self,"rescue","fail"),$alias(self,"rescue!","fail!"),$alias(self,"resolve!","resolve"),$alias(self,"to_n","itself"),$alias(self,"to_v2","itself")}($nesting[0],0,$nesting)},Opal.modules.await=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$coerce_to=Opal.coerce_to,$truthy=Opal.truthy,$klass=Opal.klass,$rb_lt=Opal.rb_lt,$rb_plus=Opal.rb_plus,$def=Opal.def,$send=Opal.send,$module=Opal.module,$to_a=Opal.to_a,$gvars=Opal.gvars,$rb_times=Opal.rb_times,$alias=Opal.alias;Opal.add_stubs("warn,require,<,<<,[],+,map_await,to_proc,when,map,empty?,pop,call,new,proc,resolve,*,async?"),$truthy("warning"==Opal.config.experimental_features_severity)&&self.$warn("Await functionality is a technology preview, which means it may change its behavior in the future unless this warning is removed. If you are interested in this part, please make sure you track the async/await/promises tag on Opal issues: https://github.com/opal/opal/issues?q=label%3Aasync%2Fawait%2Fpromises");var AsyncFunction=Object.getPrototypeOf((async function(){})).constructor;return self.$require("promise/v2"),function($base,$super){var self=$klass($base,null,"Array");$def(self,"$map_await",(async function $$map_await(){var block=$$map_await.$$p||nil,i=nil,results=nil;for(delete $$map_await.$$p,i=0,results=[];$truthy($rb_lt(i,this.length));)results["$<<"](await Opal.yield1(block,this["$[]"](i))),i=$rb_plus(i,1);return results}),0),$def(self,"$each_await",(async function $$each_await(){var block=$$each_await.$$p||nil;return delete $$each_await.$$p,await $send(this,"map_await",[],block.$to_proc()),this}),0)}($nesting[0]),function($base,$parent_nesting){var self=$module($base,"Enumerable"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$each_async",(async function $$each_async(){var block=$$each_async.$$p||nil;return delete $$each_async.$$p,await $send($$("PromiseV2"),"when",$to_a($send(this,"map",[],block.$to_proc())))}),0)}($nesting[0],$nesting),function($base,$parent_nesting){var self=$module($base,"Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$exit",(async function(status){var $ret_or_1,block=nil;for(null==$gvars.__at_exit__&&($gvars.__at_exit__=nil),null==status&&(status=!0),$gvars.__at_exit__=$truthy($ret_or_1=$gvars.__at_exit__)?$ret_or_1:[];!$truthy($gvars.__at_exit__["$empty?"]());)block=$gvars.__at_exit__.$pop(),await block.$call();return status=status.$$is_boolean?status?0:1:$coerce_to(status,$$("Integer"),"to_int"),Opal.exit(status),nil}),-1),$def(self,"$sleep",(function(seconds){var prom=nil;return prom=$$("PromiseV2").$new(),setTimeout($send(this,"proc",[],(function(){return prom.$resolve()}),0),$rb_times(seconds,1e3)),prom}),1)}($nesting[0],$nesting),function($base){var self=$module($base,"Kernel");$alias(self,"await","itself")}($nesting[0]),function($base,$super){var self=$klass($base,null,"Proc");$def(self,"$async?",(function(){return this instanceof AsyncFunction}),0)}($nesting[0]),function($base,$super){var self=$klass($base,null,"Method");return self.$$prototype.method=nil,$def(self,"$async?",(function(){return this.method["$async?"]()}),0)}($nesting[0])}; diff --git a/opal/1.4.1/await.min.js.gz b/opal/1.4.1/await.min.js.gz new file mode 100644 index 00000000..4426effc Binary files /dev/null and b/opal/1.4.1/await.min.js.gz differ diff --git a/opal/1.4.1/base64.js b/opal/1.4.1/base64.js new file mode 100644 index 00000000..ffef29c6 --- /dev/null +++ b/opal/1.4.1/base64.js @@ -0,0 +1,106 @@ +Opal.modules["base64"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $defs = Opal.defs, $hash2 = Opal.hash2, $truthy = Opal.truthy; + + Opal.add_stubs('raise,delete'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Base64'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + var encode, decode; + + // encoder + // [https://gist.github.com/999166] by [https://github.com/nignag] + encode = function (input) { + var str = String(input); + /* eslint-disable */ + for ( + // initialize result and counter + var block, charCode, idx = 0, map = chars, output = ''; + // if the next str index does not exist: + // change the mapping table to "=" + // check if d has no fractional digits + str.charAt(idx | 0) || (map = '=', idx % 1); + // "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8 + output += map.charAt(63 & block >> 8 - idx % 1 * 8) + ) { + charCode = str.charCodeAt(idx += 3/4); + if (charCode > 0xFF) { + self.$raise($$('ArgumentError'), "invalid character (failed: The string to be encoded contains characters outside of the Latin1 range.)"); + } + block = block << 8 | charCode; + } + return output; + /* eslint-enable */ + }; + + // decoder + // [https://gist.github.com/1020396] by [https://github.com/atk] + decode = function (input) { + var str = String(input).replace(/=+$/, ''); + if (str.length % 4 == 1) { + self.$raise($$('ArgumentError'), "invalid base64 (failed: The string to be decoded is not correctly encoded.)"); + } + /* eslint-disable */ + for ( + // initialize result and counters + var bc = 0, bs, buffer, idx = 0, output = ''; + // get next character + buffer = str.charAt(idx++); + // character found in table? initialize bit storage and add its ascii value; + ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, + // and if not first of each 4 characters, + // convert the first 8 bits to one ascii character + bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0 + ) { + // try to find character in table (0-63, not found => -1) + buffer = chars.indexOf(buffer); + } + return output; + /* eslint-enable */ + }; + ; + $defs(self, '$decode64', function $$decode64(string) { + + return decode(string.replace(/\r?\n/g, '')); + }, 1); + $defs(self, '$encode64', function $$encode64(string) { + + return encode(string).replace(/(.{60})/g, "$1\n").replace(/([^\n])$/g, "$1\n"); + }, 1); + $defs(self, '$strict_decode64', function $$strict_decode64(string) { + + return decode(string); + }, 1); + $defs(self, '$strict_encode64', function $$strict_encode64(string) { + + return encode(string); + }, 1); + $defs(self, '$urlsafe_decode64', function $$urlsafe_decode64(string) { + + return decode(string.replace(/\-/g, '+').replace(/_/g, '/')); + }, 1); + return $defs(self, '$urlsafe_encode64', function $$urlsafe_encode64(string, $kwargs) { + var padding, str = nil; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + padding = $kwargs.$$smap["padding"]; + if (padding == null) padding = true; + str = encode(string).replace(/\+/g, '-').replace(/\//g, '_'); + if (!$truthy(padding)) { + str = str.$delete("=") + }; + return str; + }, -2); + })($nesting[0], $nesting) +}; diff --git a/opal/1.4.1/base64.min.js b/opal/1.4.1/base64.min.js new file mode 100644 index 00000000..7144ff1c --- /dev/null +++ b/opal/1.4.1/base64.min.js @@ -0,0 +1 @@ +Opal.modules.base64=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$defs=Opal.defs,$hash2=Opal.hash2,$truthy=Opal.truthy;return Opal.add_stubs("raise,delete"),function($base,$parent_nesting){var encode,decode,self=$module($base,"Base64"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";return encode=function(input){for(var block,charCode,str=String(input),idx=0,map=chars,output="";str.charAt(0|idx)||(map="=",idx%1);output+=map.charAt(63&block>>8-idx%1*8))(charCode=str.charCodeAt(idx+=3/4))>255&&self.$raise($$("ArgumentError"),"invalid character (failed: The string to be encoded contains characters outside of the Latin1 range.)"),block=block<<8|charCode;return output},decode=function(input){var str=String(input).replace(/=+$/,"");str.length%4==1&&self.$raise($$("ArgumentError"),"invalid base64 (failed: The string to be decoded is not correctly encoded.)");for(var bs,buffer,bc=0,idx=0,output="";buffer=str.charAt(idx++);~buffer&&(bs=bc%4?64*bs+buffer:buffer,bc++%4)?output+=String.fromCharCode(255&bs>>(-2*bc&6)):0)buffer=chars.indexOf(buffer);return output},$defs(self,"$decode64",(function(string){return decode(string.replace(/\r?\n/g,""))}),1),$defs(self,"$encode64",(function(string){return encode(string).replace(/(.{60})/g,"$1\n").replace(/([^\n])$/g,"$1\n")}),1),$defs(self,"$strict_decode64",(function(string){return decode(string)}),1),$defs(self,"$strict_encode64",(function(string){return encode(string)}),1),$defs(self,"$urlsafe_decode64",(function(string){return decode(string.replace(/\-/g,"+").replace(/_/g,"/"))}),1),$defs(self,"$urlsafe_encode64",(function(string,$kwargs){var padding,str=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(padding=$kwargs.$$smap.padding)&&(padding=!0),str=encode(string).replace(/\+/g,"-").replace(/\//g,"_"),$truthy(padding)||(str=str.$delete("=")),str}),-2)}($nesting[0],$nesting)}; diff --git a/opal/1.4.1/base64.min.js.gz b/opal/1.4.1/base64.min.js.gz new file mode 100644 index 00000000..9fe292b2 Binary files /dev/null and b/opal/1.4.1/base64.min.js.gz differ diff --git a/opal/1.4.1/benchmark.js b/opal/1.4.1/benchmark.js new file mode 100644 index 00000000..21d44623 --- /dev/null +++ b/opal/1.4.1/benchmark.js @@ -0,0 +1,386 @@ +Opal.modules["benchmark"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $const_set = Opal.const_set, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $rb_times = Opal.rb_times, $def = Opal.def, $to_ary = Opal.to_ary, $klass = Opal.klass, $rb_lt = Opal.rb_lt, $alias = Opal.alias, $gvars = Opal.gvars, $hash2 = Opal.hash2, $eqeqeq = Opal.eqeqeq; + + Opal.add_stubs('sync,sync=,-,+,empty?,print,*,new,===,each,grep,ljust,shift,label,format,list,nil?,benchmark,to_proc,width,puts,length,inject,measure,rjust,map,start,tap,times,clock_gettime,utime,stime,cutime,cstime,module_function,raise,to_s,<,<<,attr_reader,real,memberwise,gsub,dup,%,total,protected,__send__'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Benchmark'); + + var $a, $b, $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $const_set($nesting[0], 'BENCHMARK_VERSION', "2002-04-25"); + + $def(self, '$benchmark', function $$benchmark($a, $b, $c, $d) { + var $post_args, caption, label_width, format, labels, $yield = $$benchmark.$$p || nil, self = this, sync = nil, $writer = nil, $ret_or_1 = nil, report = nil, results = nil; + + delete $$benchmark.$$p; + + + $post_args = Opal.slice.call(arguments); + + if ($post_args.length > 0) caption = $post_args.shift(); + if (caption == null) caption = "";; + + if ($post_args.length > 0) label_width = $post_args.shift(); + if (label_width == null) label_width = nil;; + + if ($post_args.length > 0) format = $post_args.shift(); + if (format == null) format = nil;; + + labels = $post_args;; + return (function() { try { + + sync = $$('STDOUT').$sync(); + + $writer = [true]; + $send($$('STDOUT'), 'sync=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + label_width = ($truthy(($ret_or_1 = label_width)) ? ($ret_or_1) : (0)); + label_width = $rb_plus(label_width, 1); + format = ($truthy(($ret_or_1 = format)) ? ($ret_or_1) : ($$('FORMAT'))); + if (!$truthy(caption['$empty?']())) { + self.$print($rb_plus($rb_times(" ", label_width), caption)) + }; + report = $$('Report').$new(label_width, format); + results = Opal.yield1($yield, report); + if ($truthy(($ret_or_1 = $$('Array')['$==='](results)))) { + $send(results.$grep($$('Tms')), 'each', [], function $$1(t){var self = $$1.$$s == null ? this : $$1.$$s, $ret_or_2 = nil, $ret_or_3 = nil; + + + + if (t == null) t = nil;; + return self.$print(($truthy(($ret_or_2 = ($truthy(($ret_or_3 = labels.$shift())) ? ($ret_or_3) : (t.$label())))) ? ($ret_or_2) : ("")).$ljust(label_width), t.$format(format));}, {$$arity: 1, $$s: self}) + } else { + $ret_or_1 + }; + return report.$list(); + } finally { + ($truthy(sync['$nil?']()) ? (nil) : ((($writer = [sync]), $send($$('STDOUT'), 'sync=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)]))) + }; })(); + }, -1); + + $def(self, '$bm', function $$bm($a, $b) { + var blk = $$bm.$$p || nil, $post_args, label_width, labels, self = this; + + delete $$bm.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + if ($post_args.length > 0) label_width = $post_args.shift(); + if (label_width == null) label_width = 0;; + + labels = $post_args;; + return $send(self, 'benchmark', [$$('CAPTION'), label_width, $$('FORMAT')].concat($to_a(labels)), blk.$to_proc()); + }, -1); + + $def(self, '$bmbm', function $$bmbm(width) { + var $yield = $$bmbm.$$p || nil, self = this, job = nil, sync = nil, $writer = nil, ets = nil; + + delete $$bmbm.$$p; + + + if (width == null) width = 0;; + return (function() { try { + + job = $$('Job').$new(width); + Opal.yield1($yield, job); + width = $rb_plus(job.$width(), 1); + sync = $$('STDOUT').$sync(); + + $writer = [true]; + $send($$('STDOUT'), 'sync=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.$puts("Rehearsal ".$ljust($rb_plus(width, $$('CAPTION').$length()), "-")); + ets = $send(job.$list(), 'inject', [$$('Tms').$new()], function $$2(sum, $mlhs_tmp1){var $a, $b, self = $$2.$$s == null ? this : $$2.$$s, label = nil, item = nil, res = nil; + + + + if (sum == null) sum = nil;; + + if ($mlhs_tmp1 == null) $mlhs_tmp1 = nil;; + $b = $mlhs_tmp1, $a = $to_ary($b), (label = ($a[0] == null ? nil : $a[0])), (item = ($a[1] == null ? nil : $a[1])), $b; + self.$print(label.$ljust(width)); + res = $send($$('Benchmark'), 'measure', [], item.$to_proc()); + self.$print(res.$format()); + return $rb_plus(sum, res);}, {$$arity: 2, $$s: self, $$has_top_level_mlhs_arg: true}).$format("total: %tsec"); + self.$print((((" ") + (ets)) + "\n\n").$rjust($rb_plus($rb_plus(width, $$('CAPTION').$length()), 2), "-")); + self.$print($rb_plus($rb_times(" ", width), $$('CAPTION'))); + return $send(job.$list(), 'map', [], function $$3(label, item){var self = $$3.$$s == null ? this : $$3.$$s; + + + + if (label == null) label = nil;; + + if (item == null) item = nil;; + $$('GC').$start(); + self.$print(label.$ljust(width)); + return $send($send($$('Benchmark'), 'measure', [label], item.$to_proc()), 'tap', [], function $$4(res){var self = $$4.$$s == null ? this : $$4.$$s; + + + + if (res == null) res = nil;; + return self.$print(res);}, {$$arity: 1, $$s: self});}, {$$arity: 2, $$s: self}); + } finally { + ($truthy(sync['$nil?']()) ? (nil) : ((($writer = [sync]), $send($$('STDOUT'), 'sync=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)]))) + }; })(); + }, -1); + if ($truthy((($b = $$('Process', 'skip_raise')) && ($a = $$$($b, 'CLOCK_MONOTONIC', 'skip_raise')) ? 'constant' : nil))) { + $const_set($nesting[0], 'BENCHMARK_CLOCK', $$$($$('Process'), 'CLOCK_MONOTONIC')) + } else { + $const_set($nesting[0], 'BENCHMARK_CLOCK', $$$($$('Process'), 'CLOCK_REALTIME')) + }; + + $def(self, '$measure', function $$measure(label) { + var $a, $yield = $$measure.$$p || nil, t0 = nil, r0 = nil, t1 = nil, r1 = nil; + + delete $$measure.$$p; + + + if (label == null) label = "";; + $a = [$$('Process').$times(), $$('Process').$clock_gettime($$('BENCHMARK_CLOCK'))], (t0 = $a[0]), (r0 = $a[1]), $a; + Opal.yieldX($yield, []); + $a = [$$('Process').$times(), $$('Process').$clock_gettime($$('BENCHMARK_CLOCK'))], (t1 = $a[0]), (r1 = $a[1]), $a; + return $$$($$('Benchmark'), 'Tms').$new($rb_minus(t1.$utime(), t0.$utime()), $rb_minus(t1.$stime(), t0.$stime()), $rb_minus(t1.$cutime(), t0.$cutime()), $rb_minus(t1.$cstime(), t0.$cstime()), $rb_minus(r1, r0), label); + }, -1); + + $def(self, '$realtime', function $$realtime() { + var $yield = $$realtime.$$p || nil, r0 = nil; + + delete $$realtime.$$p; + + r0 = $$('Process').$clock_gettime($$('BENCHMARK_CLOCK')); + Opal.yieldX($yield, []); + return $rb_minus($$('Process').$clock_gettime($$('BENCHMARK_CLOCK')), r0); + }, 0); + self.$module_function("benchmark", "measure", "realtime", "bm", "bmbm"); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Job'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.width = $proto.list = nil; + + + $def(self, '$initialize', function $$initialize(width) { + var self = this; + + + self.width = width; + return (self.list = []); + }, 1); + + $def(self, '$item', function $$item(label) { + var blk = $$item.$$p || nil, self = this, w = nil; + + delete $$item.$$p; + + ; + + if (label == null) label = "";; + if (!(blk !== nil)) { + self.$raise($$('ArgumentError'), "no block") + }; + label = label.$to_s(); + w = label.$length(); + if ($truthy($rb_lt(self.width, w))) { + self.width = w + }; + self.list['$<<']([label, blk]); + return self; + }, -1); + $alias(self, "report", "item"); + self.$attr_reader("list"); + return self.$attr_reader("width"); + })($nesting[0], null, $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Report'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.width = $proto.list = $proto.format = nil; + + + $def(self, '$initialize', function $$initialize(width, format) { + var $a, self = this; + + + + if (width == null) width = 0;; + + if (format == null) format = nil;; + return $a = [width, format, []], (self.width = $a[0]), (self.format = $a[1]), (self.list = $a[2]), $a; + }, -1); + + $def(self, '$item', function $$item($a, $b) { + var blk = $$item.$$p || nil, $post_args, label, format, self = this, res = nil; + + delete $$item.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + if ($post_args.length > 0) label = $post_args.shift(); + if (label == null) label = "";; + + format = $post_args;; + self.$print(label.$to_s().$ljust(self.width)); + self.list['$<<']((res = $send($$('Benchmark'), 'measure', [label], blk.$to_proc()))); + self.$print($send(res, 'format', [self.format].concat($to_a(format)))); + return res; + }, -1); + $alias(self, "report", "item"); + return self.$attr_reader("list"); + })($nesting[0], null, $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Tms'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.utime = $proto.stime = $proto.cutime = $proto.cstime = $proto.label = $proto.real = nil; + + $const_set($nesting[0], 'CAPTION', " user system total real\n"); + $const_set($nesting[0], 'FORMAT', "%10.6u %10.6y %10.6t %10.6r\n"); + self.$attr_reader("utime"); + self.$attr_reader("stime"); + self.$attr_reader("cutime"); + self.$attr_reader("cstime"); + self.$attr_reader("real"); + self.$attr_reader("total"); + self.$attr_reader("label"); + + $def(self, '$initialize', function $$initialize(utime, stime, cutime, cstime, real, label) { + var $a, self = this; + + + + if (utime == null) utime = 0.0;; + + if (stime == null) stime = 0.0;; + + if (cutime == null) cutime = 0.0;; + + if (cstime == null) cstime = 0.0;; + + if (real == null) real = 0.0;; + + if (label == null) label = nil;; + $a = [utime, stime, cutime, cstime, real, label.$to_s()], (self.utime = $a[0]), (self.stime = $a[1]), (self.cutime = $a[2]), (self.cstime = $a[3]), (self.real = $a[4]), (self.label = $a[5]), $a; + return (self.total = $rb_plus($rb_plus($rb_plus(self.utime, self.stime), self.cutime), self.cstime)); + }, -1); + + $def(self, '$add', function $$add() { + var blk = $$add.$$p || nil, self = this; + + delete $$add.$$p; + + ; + return $rb_plus(self, $send($$('Benchmark'), 'measure', [], blk.$to_proc())); + }, 0); + + $def(self, '$add!', function $Tms_add$excl$5() { + var blk = $Tms_add$excl$5.$$p || nil, self = this, t = nil; + + delete $Tms_add$excl$5.$$p; + + ; + t = $send($$('Benchmark'), 'measure', [], blk.$to_proc()); + self.utime = $rb_plus(self.$utime(), t.$utime()); + self.stime = $rb_plus(self.$stime(), t.$stime()); + self.cutime = $rb_plus(self.$cutime(), t.$cutime()); + self.cstime = $rb_plus(self.$cstime(), t.$cstime()); + self.real = $rb_plus(self.$real(), t.$real()); + return self; + }, 0); + + $def(self, '$+', function $Tms_$plus$6(other) { + var self = this; + + return self.$memberwise("+", other) + }, 1); + + $def(self, '$-', function $Tms_$minus$7(other) { + var self = this; + + return self.$memberwise("-", other) + }, 1); + + $def(self, '$*', function $Tms_$$8(x) { + var self = this; + + return self.$memberwise("*", x) + }, 1); + + $def(self, '$/', function $Tms_$slash$9(x) { + var self = this; + + return self.$memberwise("/", x) + }, 1); + + $def(self, '$format', function $$format($a, $b) { + var $post_args, format, args, self = this, str = nil, $ret_or_1 = nil; + + + + $post_args = Opal.slice.call(arguments); + + if ($post_args.length > 0) format = $post_args.shift(); + if (format == null) format = nil;; + + args = $post_args;; + str = $send($send($send($send($send($send($send(($truthy(($ret_or_1 = format)) ? ($ret_or_1) : ($$('FORMAT'))).$dup(), 'gsub', [/(%[-+.\d]*)n/], function $$10(){var $c, self = $$10.$$s == null ? this : $$10.$$s; + + return (("" + ((($c = $gvars['~']) === nil ? nil : $c['$[]'](1)))) + "s")['$%'](self.$label())}, {$$arity: 0, $$s: self}), 'gsub', [/(%[-+.\d]*)u/], function $$11(){var $c, self = $$11.$$s == null ? this : $$11.$$s; + + return (("" + ((($c = $gvars['~']) === nil ? nil : $c['$[]'](1)))) + "f")['$%'](self.$utime())}, {$$arity: 0, $$s: self}), 'gsub', [/(%[-+.\d]*)y/], function $$12(){var $c, self = $$12.$$s == null ? this : $$12.$$s; + + return (("" + ((($c = $gvars['~']) === nil ? nil : $c['$[]'](1)))) + "f")['$%'](self.$stime())}, {$$arity: 0, $$s: self}), 'gsub', [/(%[-+.\d]*)U/], function $$13(){var $c, self = $$13.$$s == null ? this : $$13.$$s; + + return (("" + ((($c = $gvars['~']) === nil ? nil : $c['$[]'](1)))) + "f")['$%'](self.$cutime())}, {$$arity: 0, $$s: self}), 'gsub', [/(%[-+.\d]*)Y/], function $$14(){var $c, self = $$14.$$s == null ? this : $$14.$$s; + + return (("" + ((($c = $gvars['~']) === nil ? nil : $c['$[]'](1)))) + "f")['$%'](self.$cstime())}, {$$arity: 0, $$s: self}), 'gsub', [/(%[-+.\d]*)t/], function $$15(){var $c, self = $$15.$$s == null ? this : $$15.$$s; + + return (("" + ((($c = $gvars['~']) === nil ? nil : $c['$[]'](1)))) + "f")['$%'](self.$total())}, {$$arity: 0, $$s: self}), 'gsub', [/(%[-+.\d]*)r/], function $$16(){var $c, self = $$16.$$s == null ? this : $$16.$$s; + + return ((("(") + ((($c = $gvars['~']) === nil ? nil : $c['$[]'](1)))) + "f)")['$%'](self.$real())}, {$$arity: 0, $$s: self}); + if ($truthy(format)) { + return str['$%'](args) + } else { + return str + }; + }, -1); + + $def(self, '$to_s', function $$to_s() { + var self = this; + + return self.$format() + }, 0); + + $def(self, '$to_a', function $$to_a() { + var self = this; + + return [self.label, self.utime, self.stime, self.cutime, self.cstime, self.real] + }, 0); + + $def(self, '$to_h', function $$to_h() { + var self = this; + + return $hash2(["label", "utime", "stime", "cutime", "cstime", "real"], {"label": self.label, "utime": self.utime, "stime": self.stime, "cutime": self.cutime, "cstime": self.cstime, "real": self.real}) + }, 0); + self.$protected(); + return $def(self, '$memberwise', function $$memberwise(op, x) { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq($$$($$('Benchmark'), 'Tms'), ($ret_or_1 = x))) { + return $$$($$('Benchmark'), 'Tms').$new(self.$utime().$__send__(op, x.$utime()), self.$stime().$__send__(op, x.$stime()), self.$cutime().$__send__(op, x.$cutime()), self.$cstime().$__send__(op, x.$cstime()), self.$real().$__send__(op, x.$real())) + } else { + return $$$($$('Benchmark'), 'Tms').$new(self.$utime().$__send__(op, x), self.$stime().$__send__(op, x), self.$cutime().$__send__(op, x), self.$cstime().$__send__(op, x), self.$real().$__send__(op, x)) + } + }, 2); + })($nesting[0], null, $nesting); + $const_set($nesting[0], 'CAPTION', $$$($$$($$('Benchmark'), 'Tms'), 'CAPTION')); + return $const_set($nesting[0], 'FORMAT', $$$($$$($$('Benchmark'), 'Tms'), 'FORMAT')); + })($nesting[0], $nesting) +}; diff --git a/opal/1.4.1/benchmark.min.js b/opal/1.4.1/benchmark.min.js new file mode 100644 index 00000000..b6571985 --- /dev/null +++ b/opal/1.4.1/benchmark.min.js @@ -0,0 +1 @@ +Opal.modules.benchmark=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$const_set=Opal.const_set,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$rb_times=Opal.rb_times,$def=Opal.def,$to_ary=Opal.to_ary,$klass=Opal.klass,$rb_lt=Opal.rb_lt,$alias=Opal.alias,$gvars=Opal.gvars,$hash2=Opal.hash2,$eqeqeq=Opal.eqeqeq;return Opal.add_stubs("sync,sync=,-,+,empty?,print,*,new,===,each,grep,ljust,shift,label,format,list,nil?,benchmark,to_proc,width,puts,length,inject,measure,rjust,map,start,tap,times,clock_gettime,utime,stime,cutime,cstime,module_function,raise,to_s,<,<<,attr_reader,real,memberwise,gsub,dup,%,total,protected,__send__"),function($base,$parent_nesting){var $b,self=$module($base,"Benchmark"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"BENCHMARK_VERSION","2002-04-25"),$def(self,"$benchmark",(function $$benchmark($a,$b,$c,$d){var $post_args,caption,label_width,format,labels,$yield=$$benchmark.$$p||nil,self=this,sync=nil,$writer=nil,$ret_or_1=nil,report=nil,results=nil;return delete $$benchmark.$$p,($post_args=Opal.slice.call(arguments)).length>0&&(caption=$post_args.shift()),null==caption&&(caption=""),$post_args.length>0&&(label_width=$post_args.shift()),null==label_width&&(label_width=nil),$post_args.length>0&&(format=$post_args.shift()),null==format&&(format=nil),labels=$post_args,function(){try{return sync=$$("STDOUT").$sync(),$writer=[!0],$send($$("STDOUT"),"sync=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],label_width=$truthy($ret_or_1=label_width)?$ret_or_1:0,label_width=$rb_plus(label_width,1),format=$truthy($ret_or_1=format)?$ret_or_1:$$("FORMAT"),$truthy(caption["$empty?"]())||self.$print($rb_plus($rb_times(" ",label_width),caption)),report=$$("Report").$new(label_width,format),results=Opal.yield1($yield,report),$truthy($ret_or_1=$$("Array")["$==="](results))&&$send(results.$grep($$("Tms")),"each",[],(function $$1(t){var $ret_or_2,$ret_or_3;return null==t&&(t=nil),(null==$$1.$$s?this:$$1.$$s).$print(($truthy($ret_or_2=$truthy($ret_or_3=labels.$shift())?$ret_or_3:t.$label())?$ret_or_2:"").$ljust(label_width),t.$format(format))}),{$$arity:1,$$s:self}),report.$list()}finally{$truthy(sync["$nil?"]())||($writer=[sync],$send($$("STDOUT"),"sync=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}}()}),-1),$def(self,"$bm",(function $$bm($a,$b){var $post_args,label_width,labels,blk=$$bm.$$p||nil,self=this;return delete $$bm.$$p,($post_args=Opal.slice.call(arguments)).length>0&&(label_width=$post_args.shift()),null==label_width&&(label_width=0),labels=$post_args,$send(self,"benchmark",[$$("CAPTION"),label_width,$$("FORMAT")].concat($to_a(labels)),blk.$to_proc())}),-1),$def(self,"$bmbm",(function $$bmbm(width){var $yield=$$bmbm.$$p||nil,self=this,job=nil,sync=nil,$writer=nil,ets=nil;return delete $$bmbm.$$p,null==width&&(width=0),function(){try{return job=$$("Job").$new(width),Opal.yield1($yield,job),width=$rb_plus(job.$width(),1),sync=$$("STDOUT").$sync(),$writer=[!0],$send($$("STDOUT"),"sync=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.$puts("Rehearsal ".$ljust($rb_plus(width,$$("CAPTION").$length()),"-")),ets=$send(job.$list(),"inject",[$$("Tms").$new()],(function $$2(sum,$mlhs_tmp1){var $a,self=null==$$2.$$s?this:$$2.$$s,label=nil,item=nil,res=nil;return null==sum&&(sum=nil),null==$mlhs_tmp1&&($mlhs_tmp1=nil),label=null==($a=$to_ary($mlhs_tmp1))[0]?nil:$a[0],item=null==$a[1]?nil:$a[1],self.$print(label.$ljust(width)),res=$send($$("Benchmark"),"measure",[],item.$to_proc()),self.$print(res.$format()),$rb_plus(sum,res)}),{$$arity:2,$$s:self,$$has_top_level_mlhs_arg:!0}).$format("total: %tsec"),self.$print((" "+ets+"\n\n").$rjust($rb_plus($rb_plus(width,$$("CAPTION").$length()),2),"-")),self.$print($rb_plus($rb_times(" ",width),$$("CAPTION"))),$send(job.$list(),"map",[],(function $$3(label,item){var self=null==$$3.$$s?this:$$3.$$s;return null==label&&(label=nil),null==item&&(item=nil),$$("GC").$start(),self.$print(label.$ljust(width)),$send($send($$("Benchmark"),"measure",[label],item.$to_proc()),"tap",[],(function $$4(res){return null==res&&(res=nil),(null==$$4.$$s?this:$$4.$$s).$print(res)}),{$$arity:1,$$s:self})}),{$$arity:2,$$s:self})}finally{$truthy(sync["$nil?"]())||($writer=[sync],$send($$("STDOUT"),"sync=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}}()}),-1),$truthy(($b=$$("Process","skip_raise"))&&$$$($b,"CLOCK_MONOTONIC","skip_raise")?"constant":nil)?$const_set($nesting[0],"BENCHMARK_CLOCK",$$$($$("Process"),"CLOCK_MONOTONIC")):$const_set($nesting[0],"BENCHMARK_CLOCK",$$$($$("Process"),"CLOCK_REALTIME")),$def(self,"$measure",(function $$measure(label){var $a,r0,r1,$yield=$$measure.$$p||nil,t0=nil,t1=nil;return delete $$measure.$$p,null==label&&(label=""),t0=($a=[$$("Process").$times(),$$("Process").$clock_gettime($$("BENCHMARK_CLOCK"))])[0],r0=$a[1],Opal.yieldX($yield,[]),t1=($a=[$$("Process").$times(),$$("Process").$clock_gettime($$("BENCHMARK_CLOCK"))])[0],r1=$a[1],$$$($$("Benchmark"),"Tms").$new($rb_minus(t1.$utime(),t0.$utime()),$rb_minus(t1.$stime(),t0.$stime()),$rb_minus(t1.$cutime(),t0.$cutime()),$rb_minus(t1.$cstime(),t0.$cstime()),$rb_minus(r1,r0),label)}),-1),$def(self,"$realtime",(function $$realtime(){var r0,$yield=$$realtime.$$p||nil;return delete $$realtime.$$p,r0=$$("Process").$clock_gettime($$("BENCHMARK_CLOCK")),Opal.yieldX($yield,[]),$rb_minus($$("Process").$clock_gettime($$("BENCHMARK_CLOCK")),r0)}),0),self.$module_function("benchmark","measure","realtime","bm","bmbm"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Job"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.width=$proto.list=nil,$def(self,"$initialize",(function(width){return this.width=width,this.list=[]}),1),$def(self,"$item",(function $$item(label){var w,blk=$$item.$$p||nil;return delete $$item.$$p,null==label&&(label=""),blk===nil&&this.$raise($$("ArgumentError"),"no block"),w=(label=label.$to_s()).$length(),$truthy($rb_lt(this.width,w))&&(this.width=w),this.list["$<<"]([label,blk]),this}),-1),$alias(self,"report","item"),self.$attr_reader("list"),self.$attr_reader("width")}($nesting[0],0,$nesting),function($base,$super,$parent_nesting){var self=$klass($base,null,"Report"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.width=$proto.list=$proto.format=nil,$def(self,"$initialize",(function(width,format){var $a;return null==width&&(width=0),null==format&&(format=nil),$a=[width,format,[]],this.width=$a[0],this.format=$a[1],this.list=$a[2],$a}),-1),$def(self,"$item",(function $$item($a,$b){var $post_args,label,format,blk=$$item.$$p||nil,self=this,res=nil;return delete $$item.$$p,($post_args=Opal.slice.call(arguments)).length>0&&(label=$post_args.shift()),null==label&&(label=""),format=$post_args,self.$print(label.$to_s().$ljust(self.width)),self.list["$<<"](res=$send($$("Benchmark"),"measure",[label],blk.$to_proc())),self.$print($send(res,"format",[self.format].concat($to_a(format)))),res}),-1),$alias(self,"report","item"),self.$attr_reader("list")}($nesting[0],0,$nesting),function($base,$super,$parent_nesting){var self=$klass($base,null,"Tms"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.utime=$proto.stime=$proto.cutime=$proto.cstime=$proto.label=$proto.real=nil,$const_set($nesting[0],"CAPTION"," user system total real\n"),$const_set($nesting[0],"FORMAT","%10.6u %10.6y %10.6t %10.6r\n"),self.$attr_reader("utime"),self.$attr_reader("stime"),self.$attr_reader("cutime"),self.$attr_reader("cstime"),self.$attr_reader("real"),self.$attr_reader("total"),self.$attr_reader("label"),$def(self,"$initialize",(function(utime,stime,cutime,cstime,real,label){var $a;return null==utime&&(utime=0),null==stime&&(stime=0),null==cutime&&(cutime=0),null==cstime&&(cstime=0),null==real&&(real=0),null==label&&(label=nil),$a=[utime,stime,cutime,cstime,real,label.$to_s()],this.utime=$a[0],this.stime=$a[1],this.cutime=$a[2],this.cstime=$a[3],this.real=$a[4],this.label=$a[5],this.total=$rb_plus($rb_plus($rb_plus(this.utime,this.stime),this.cutime),this.cstime)}),-1),$def(self,"$add",(function $$add(){var blk=$$add.$$p||nil;return delete $$add.$$p,$rb_plus(this,$send($$("Benchmark"),"measure",[],blk.$to_proc()))}),0),$def(self,"$add!",(function $Tms_add$excl$5(){var blk=$Tms_add$excl$5.$$p||nil,t=nil;return delete $Tms_add$excl$5.$$p,t=$send($$("Benchmark"),"measure",[],blk.$to_proc()),this.utime=$rb_plus(this.$utime(),t.$utime()),this.stime=$rb_plus(this.$stime(),t.$stime()),this.cutime=$rb_plus(this.$cutime(),t.$cutime()),this.cstime=$rb_plus(this.$cstime(),t.$cstime()),this.real=$rb_plus(this.$real(),t.$real()),this}),0),$def(self,"$+",(function(other){return this.$memberwise("+",other)}),1),$def(self,"$-",(function(other){return this.$memberwise("-",other)}),1),$def(self,"$*",(function(x){return this.$memberwise("*",x)}),1),$def(self,"$/",(function(x){return this.$memberwise("/",x)}),1),$def(self,"$format",(function($a,$b){var $post_args,format,args,self=this,str=nil,$ret_or_1=nil;return($post_args=Opal.slice.call(arguments)).length>0&&(format=$post_args.shift()),null==format&&(format=nil),args=$post_args,str=$send($send($send($send($send($send($send(($truthy($ret_or_1=format)?$ret_or_1:$$("FORMAT")).$dup(),"gsub",[/(%[-+.\d]*)n/],(function $$10(){var $c,self=null==$$10.$$s?this:$$10.$$s;return((($c=$gvars["~"])===nil?nil:$c["$[]"](1))+"s")["$%"](self.$label())}),{$$arity:0,$$s:self}),"gsub",[/(%[-+.\d]*)u/],(function $$11(){var $c,self=null==$$11.$$s?this:$$11.$$s;return((($c=$gvars["~"])===nil?nil:$c["$[]"](1))+"f")["$%"](self.$utime())}),{$$arity:0,$$s:self}),"gsub",[/(%[-+.\d]*)y/],(function $$12(){var $c,self=null==$$12.$$s?this:$$12.$$s;return((($c=$gvars["~"])===nil?nil:$c["$[]"](1))+"f")["$%"](self.$stime())}),{$$arity:0,$$s:self}),"gsub",[/(%[-+.\d]*)U/],(function $$13(){var $c,self=null==$$13.$$s?this:$$13.$$s;return((($c=$gvars["~"])===nil?nil:$c["$[]"](1))+"f")["$%"](self.$cutime())}),{$$arity:0,$$s:self}),"gsub",[/(%[-+.\d]*)Y/],(function $$14(){var $c,self=null==$$14.$$s?this:$$14.$$s;return((($c=$gvars["~"])===nil?nil:$c["$[]"](1))+"f")["$%"](self.$cstime())}),{$$arity:0,$$s:self}),"gsub",[/(%[-+.\d]*)t/],(function $$15(){var $c,self=null==$$15.$$s?this:$$15.$$s;return((($c=$gvars["~"])===nil?nil:$c["$[]"](1))+"f")["$%"](self.$total())}),{$$arity:0,$$s:self}),"gsub",[/(%[-+.\d]*)r/],(function $$16(){var $c,self=null==$$16.$$s?this:$$16.$$s;return("("+(($c=$gvars["~"])===nil?nil:$c["$[]"](1))+"f)")["$%"](self.$real())}),{$$arity:0,$$s:self}),$truthy(format)?str["$%"](args):str}),-1),$def(self,"$to_s",(function(){return this.$format()}),0),$def(self,"$to_a",(function(){return[this.label,this.utime,this.stime,this.cutime,this.cstime,this.real]}),0),$def(self,"$to_h",(function(){return $hash2(["label","utime","stime","cutime","cstime","real"],{label:this.label,utime:this.utime,stime:this.stime,cutime:this.cutime,cstime:this.cstime,real:this.real})}),0),self.$protected(),$def(self,"$memberwise",(function(op,x){return $eqeqeq($$$($$("Benchmark"),"Tms"),x)?$$$($$("Benchmark"),"Tms").$new(this.$utime().$__send__(op,x.$utime()),this.$stime().$__send__(op,x.$stime()),this.$cutime().$__send__(op,x.$cutime()),this.$cstime().$__send__(op,x.$cstime()),this.$real().$__send__(op,x.$real())):$$$($$("Benchmark"),"Tms").$new(this.$utime().$__send__(op,x),this.$stime().$__send__(op,x),this.$cutime().$__send__(op,x),this.$cstime().$__send__(op,x),this.$real().$__send__(op,x))}),2)}($nesting[0],0,$nesting),$const_set($nesting[0],"CAPTION",$$$($$$($$("Benchmark"),"Tms"),"CAPTION")),$const_set($nesting[0],"FORMAT",$$$($$$($$("Benchmark"),"Tms"),"FORMAT"))}($nesting[0],$nesting)}; diff --git a/opal/1.4.1/benchmark.min.js.gz b/opal/1.4.1/benchmark.min.js.gz new file mode 100644 index 00000000..b8b87dc0 Binary files /dev/null and b/opal/1.4.1/benchmark.min.js.gz differ diff --git a/opal/1.4.1/bigdecimal.js b/opal/1.4.1/bigdecimal.js new file mode 100644 index 00000000..acefab60 --- /dev/null +++ b/opal/1.4.1/bigdecimal.js @@ -0,0 +1,486 @@ +Opal.modules["js"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $def = Opal.def, $truthy = Opal.truthy, $alias = Opal.alias; + + Opal.add_stubs('insert,<<,global,extend'); + return (function($base) { + var self = $module($base, 'JS'); + + + + + $def(self, '$delete', function $JS_delete$1(object, property) { + + return delete object[property] + }, 2); + + $def(self, '$global', function $$global() { + + return Opal.global; + }, 0); + + $def(self, '$in', function $JS_in$2(property, object) { + + return property in object + }, 2); + + $def(self, '$instanceof', function $JS_instanceof$3(value, func) { + + return value instanceof func + }, 2); + if ($truthy(typeof Function.prototype.bind == 'function')) { + + $def(self, '$new', function $JS_new$4(func, $a) { + var block = $JS_new$4.$$p || nil, $post_args, args; + + delete $JS_new$4.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + args.$insert(0, this); + if ($truthy(block)) { + args['$<<'](block) + }; + return new (func.bind.apply(func, args))(); + }, -2) + } else { + + $def(self, '$new', function $JS_new$5(func, $a) { + var block = $JS_new$5.$$p || nil, $post_args, args, f = nil; + + delete $JS_new$5.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + if ($truthy(block)) { + args['$<<'](block) + }; + f = function(){return func.apply(this, args)}; + f["prototype"] = func["prototype"]; + return new f();; + }, -2) + }; + + $def(self, '$typeof', function $JS_typeof$6(value) { + + return typeof value + }, 1); + + $def(self, '$void', function $JS_void$7(expr) { + + return void expr + }, 1); + + $def(self, '$call', function $$call(func, $a) { + var block = $$call.$$p || nil, $post_args, args, self = this, g = nil; + + delete $$call.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + g = self.$global(); + if ($truthy(block)) { + args['$<<'](block) + }; + return g[func].apply(g, args); + }, -2); + + $def(self, '$[]', function $JS_$$$8(name) { + + return Opal.global[name] + }, 1); + $alias(self, "method_missing", "call"); + return self.$extend(self); + })($nesting[0]) +}; + +Opal.modules["bigdecimal/bignumber"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $klass = Opal.klass; + + return (function($base, $super) { + var self = $klass($base, $super, 'BigDecimal'); + + + + var define = function (f) { Opal.const_set(self, 'BigNumber', f()); }; + define.amd = true; + /* global Uint32Array */ + + /* eslint-disable */ + /* bignumber.js v2.1.4 https://github.com/MikeMcl/bignumber.js/LICENCE */ + !function(e){"use strict";function n(e){function E(e,n){var t,r,i,o,u,s,f=this;if(!(f instanceof E))return j&&L(26,"constructor call without new",e),new E(e,n);if(null!=n&&H(n,2,64,M,"base")){if(n=0|n,s=e+"",10==n)return f=new E(e instanceof E?e:s),U(f,P+f.e+1,k);if((o="number"==typeof e)&&0*e!=0||!new RegExp("^-?"+(t="["+N.slice(0,n)+"]+")+"(?:\\."+t+")?$",37>n?"i":"").test(s))return h(f,s,o,n);o?(f.s=0>1/e?(s=s.slice(1),-1):1,j&&s.replace(/^0\.0*|\./,"").length>15&&L(M,v,e),o=!1):f.s=45===s.charCodeAt(0)?(s=s.slice(1),-1):1,s=D(s,10,n,f.s)}else{if(e instanceof E)return f.s=e.s,f.e=e.e,f.c=(e=e.c)?e.slice():e,void(M=0);if((o="number"==typeof e)&&0*e==0){if(f.s=0>1/e?(e=-e,-1):1,e===~~e){for(r=0,i=e;i>=10;i/=10,r++);return f.e=r,f.c=[e],void(M=0)}s=e+""}else{if(!g.test(s=e+""))return h(f,s,o);f.s=45===s.charCodeAt(0)?(s=s.slice(1),-1):1}}for((r=s.indexOf("."))>-1&&(s=s.replace(".","")),(i=s.search(/e/i))>0?(0>r&&(r=i),r+=+s.slice(i+1),s=s.substring(0,i)):0>r&&(r=s.length),i=0;48===s.charCodeAt(i);i++);for(u=s.length;48===s.charCodeAt(--u););if(s=s.slice(i,u+1))if(u=s.length,o&&j&&u>15&&L(M,v,f.s*e),r=r-i-1,r>z)f.c=f.e=null;else if(G>r)f.c=[f.e=0];else{if(f.e=r,f.c=[],i=(r+1)%O,0>r&&(i+=O),u>i){for(i&&f.c.push(+s.slice(0,i)),u-=O;u>i;)f.c.push(+s.slice(i,i+=O));s=s.slice(i),i=O-s.length}else i-=u;for(;i--;s+="0");f.c.push(+s)}else f.c=[f.e=0];M=0}function D(e,n,t,i){var o,u,f,c,a,h,g,p=e.indexOf("."),d=P,m=k;for(37>t&&(e=e.toLowerCase()),p>=0&&(f=J,J=0,e=e.replace(".",""),g=new E(t),a=g.pow(e.length-p),J=f,g.c=s(l(r(a.c),a.e),10,n),g.e=g.c.length),h=s(e,t,n),u=f=h.length;0==h[--f];h.pop());if(!h[0])return"0";if(0>p?--u:(a.c=h,a.e=u,a.s=i,a=C(a,g,d,m,n),h=a.c,c=a.r,u=a.e),o=u+d+1,p=h[o],f=n/2,c=c||0>o||null!=h[o+1],c=4>m?(null!=p||c)&&(0==m||m==(a.s<0?3:2)):p>f||p==f&&(4==m||c||6==m&&1&h[o-1]||m==(a.s<0?8:7)),1>o||!h[0])e=c?l("1",-d):"0";else{if(h.length=o,c)for(--n;++h[--o]>n;)h[o]=0,o||(++u,h.unshift(1));for(f=h.length;!h[--f];);for(p=0,e="";f>=p;e+=N.charAt(h[p++]));e=l(e,u)}return e}function F(e,n,t,i){var o,u,s,c,a;if(t=null!=t&&H(t,0,8,i,w)?0|t:k,!e.c)return e.toString();if(o=e.c[0],s=e.e,null==n)a=r(e.c),a=19==i||24==i&&B>=s?f(a,s):l(a,s);else if(e=U(new E(e),n,t),u=e.e,a=r(e.c),c=a.length,19==i||24==i&&(u>=n||B>=u)){for(;n>c;a+="0",c++);a=f(a,u)}else if(n-=s,a=l(a,u),u+1>c){if(--n>0)for(a+=".";n--;a+="0");}else if(n+=u-c,n>0)for(u+1==c&&(a+=".");n--;a+="0");return e.s<0&&o?"-"+a:a}function _(e,n){var t,r,i=0;for(u(e[0])&&(e=e[0]),t=new E(e[0]);++ie||e>t||e!=c(e))&&L(r,(i||"decimal places")+(n>e||e>t?" out of range":" not an integer"),e),!0}function I(e,n,t){for(var r=1,i=n.length;!n[--i];n.pop());for(i=n[0];i>=10;i/=10,r++);return(t=r+t*O-1)>z?e.c=e.e=null:G>t?e.c=[e.e=0]:(e.e=t,e.c=n),e}function L(e,n,t){var r=new Error(["new BigNumber","cmp","config","div","divToInt","eq","gt","gte","lt","lte","minus","mod","plus","precision","random","round","shift","times","toDigits","toExponential","toFixed","toFormat","toFraction","pow","toPrecision","toString","BigNumber"][e]+"() "+n+": "+t);throw r.name="BigNumber Error",M=0,r}function U(e,n,t,r){var i,o,u,s,f,l,c,a=e.c,h=S;if(a){e:{for(i=1,s=a[0];s>=10;s/=10,i++);if(o=n-i,0>o)o+=O,u=n,f=a[l=0],c=f/h[i-u-1]%10|0;else if(l=p((o+1)/O),l>=a.length){if(!r)break e;for(;a.length<=l;a.push(0));f=c=0,i=1,o%=O,u=o-O+1}else{for(f=s=a[l],i=1;s>=10;s/=10,i++);o%=O,u=o-O+i,c=0>u?0:f/h[i-u-1]%10|0}if(r=r||0>n||null!=a[l+1]||(0>u?f:f%h[i-u-1]),r=4>t?(c||r)&&(0==t||t==(e.s<0?3:2)):c>5||5==c&&(4==t||r||6==t&&(o>0?u>0?f/h[i-u]:0:a[l-1])%10&1||t==(e.s<0?8:7)),1>n||!a[0])return a.length=0,r?(n-=e.e+1,a[0]=h[(O-n%O)%O],e.e=-n||0):a[0]=e.e=0,e;if(0==o?(a.length=l,s=1,l--):(a.length=l+1,s=h[O-o],a[l]=u>0?d(f/h[i-u]%h[u])*s:0),r)for(;;){if(0==l){for(o=1,u=a[0];u>=10;u/=10,o++);for(u=a[0]+=s,s=1;u>=10;u/=10,s++);o!=s&&(e.e++,a[0]==b&&(a[0]=1));break}if(a[l]+=s,a[l]!=b)break;a[l--]=0,s=1}for(o=a.length;0===a[--o];a.pop());}e.e>z?e.c=e.e=null:e.et?null!=(e=i[t++]):void 0};return f(n="DECIMAL_PLACES")&&H(e,0,A,2,n)&&(P=0|e),r[n]=P,f(n="ROUNDING_MODE")&&H(e,0,8,2,n)&&(k=0|e),r[n]=k,f(n="EXPONENTIAL_AT")&&(u(e)?H(e[0],-A,0,2,n)&&H(e[1],0,A,2,n)&&(B=0|e[0],$=0|e[1]):H(e,-A,A,2,n)&&(B=-($=0|(0>e?-e:e)))),r[n]=[B,$],f(n="RANGE")&&(u(e)?H(e[0],-A,-1,2,n)&&H(e[1],1,A,2,n)&&(G=0|e[0],z=0|e[1]):H(e,-A,A,2,n)&&(0|e?G=-(z=0|(0>e?-e:e)):j&&L(2,n+" cannot be zero",e))),r[n]=[G,z],f(n="ERRORS")&&(e===!!e||1===e||0===e?(M=0,H=(j=!!e)?x:o):j&&L(2,n+m,e)),r[n]=j,f(n="CRYPTO")&&(e===!!e||1===e||0===e?(V=!(!e||!a),e&&!V&&j&&L(2,"crypto unavailable",a)):j&&L(2,n+m,e)),r[n]=V,f(n="MODULO_MODE")&&H(e,0,9,2,n)&&(W=0|e),r[n]=W,f(n="POW_PRECISION")&&H(e,0,A,2,n)&&(J=0|e),r[n]=J,f(n="FORMAT")&&("object"==typeof e?X=e:j&&L(2,n+" not an object",e)),r[n]=X,r},E.max=function(){return _(arguments,T.lt)},E.min=function(){return _(arguments,T.gt)},E.random=function(){var e=9007199254740992,n=Math.random()*e&2097151?function(){return d(Math.random()*e)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)};return function(e){var t,r,i,o,u,s=0,f=[],l=new E(q);if(e=null!=e&&H(e,0,A,14)?0|e:P,o=p(e/O),V)if(a&&a.getRandomValues){for(t=a.getRandomValues(new Uint32Array(o*=2));o>s;)u=131072*t[s]+(t[s+1]>>>11),u>=9e15?(r=a.getRandomValues(new Uint32Array(2)),t[s]=r[0],t[s+1]=r[1]):(f.push(u%1e14),s+=2);s=o/2}else if(a&&a.randomBytes){for(t=a.randomBytes(o*=7);o>s;)u=281474976710656*(31&t[s])+1099511627776*t[s+1]+4294967296*t[s+2]+16777216*t[s+3]+(t[s+4]<<16)+(t[s+5]<<8)+t[s+6],u>=9e15?a.randomBytes(7).copy(t,s):(f.push(u%1e14),s+=7);s=o/7}else j&&L(14,"crypto unavailable",a);if(!s)for(;o>s;)u=n(),9e15>u&&(f[s++]=u%1e14);for(o=f[--s],e%=O,o&&e&&(u=S[O-e],f[s]=d(o/u)*u);0===f[s];f.pop(),s--);if(0>s)f=[i=0];else{for(i=-1;0===f[0];f.shift(),i-=O);for(s=1,u=f[0];u>=10;u/=10,s++);O>s&&(i-=O-s)}return l.e=i,l.c=f,l}}(),C=function(){function e(e,n,t){var r,i,o,u,s=0,f=e.length,l=n%R,c=n/R|0;for(e=e.slice();f--;)o=e[f]%R,u=e[f]/R|0,r=c*o+u*l,i=l*o+r%R*R+s,s=(i/t|0)+(r/R|0)+c*u,e[f]=i%t;return s&&e.unshift(s),e}function n(e,n,t,r){var i,o;if(t!=r)o=t>r?1:-1;else for(i=o=0;t>i;i++)if(e[i]!=n[i]){o=e[i]>n[i]?1:-1;break}return o}function r(e,n,t,r){for(var i=0;t--;)e[t]-=i,i=e[t]1;e.shift());}return function(i,o,u,s,f){var l,c,a,h,g,p,m,w,v,N,y,S,R,A,D,F,_,x=i.s==o.s?1:-1,I=i.c,L=o.c;if(!(I&&I[0]&&L&&L[0]))return new E(i.s&&o.s&&(I?!L||I[0]!=L[0]:L)?I&&0==I[0]||!L?0*x:x/0:NaN);for(w=new E(x),v=w.c=[],c=i.e-o.e,x=u+c+1,f||(f=b,c=t(i.e/O)-t(o.e/O),x=x/O|0),a=0;L[a]==(I[a]||0);a++);if(L[a]>(I[a]||0)&&c--,0>x)v.push(1),h=!0;else{for(A=I.length,F=L.length,a=0,x+=2,g=d(f/(L[0]+1)),g>1&&(L=e(L,g,f),I=e(I,g,f),F=L.length,A=I.length),R=F,N=I.slice(0,F),y=N.length;F>y;N[y++]=0);_=L.slice(),_.unshift(0),D=L[0],L[1]>=f/2&&D++;do{if(g=0,l=n(L,N,F,y),0>l){if(S=N[0],F!=y&&(S=S*f+(N[1]||0)),g=d(S/D),g>1)for(g>=f&&(g=f-1),p=e(L,g,f),m=p.length,y=N.length;1==n(p,N,m,y);)g--,r(p,m>F?_:L,m,f),m=p.length,l=1;else 0==g&&(l=g=1),p=L.slice(),m=p.length;if(y>m&&p.unshift(0),r(N,p,y,f),y=N.length,-1==l)for(;n(L,N,F,y)<1;)g++,r(N,y>F?_:L,y,f),y=N.length}else 0===l&&(g++,N=[0]);v[a++]=g,N[0]?N[y++]=I[R]||0:(N=[I[R]],y=1)}while((R++=10;x/=10,a++);U(w,u+(w.e=a+c*O-1)+1,s,h)}else w.e=c,w.r=+h;return w}}(),h=function(){var e=/^(-?)0([xbo])(?=\w[\w.]*$)/i,n=/^([^.]+)\.$/,t=/^\.([^.]+)$/,r=/^-?(Infinity|NaN)$/,i=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(o,u,s,f){var l,c=s?u:u.replace(i,"");if(r.test(c))o.s=isNaN(c)?null:0>c?-1:1;else{if(!s&&(c=c.replace(e,function(e,n,t){return l="x"==(t=t.toLowerCase())?16:"b"==t?2:8,f&&f!=l?e:n}),f&&(l=f,c=c.replace(n,"$1").replace(t,"0.$1")),u!=c))return new E(c,l);j&&L(M,"not a"+(f?" base "+f:"")+" number",u),o.s=null}o.c=o.e=null,M=0}}(),T.absoluteValue=T.abs=function(){var e=new E(this);return e.s<0&&(e.s=1),e},T.ceil=function(){return U(new E(this),this.e+1,2)},T.comparedTo=T.cmp=function(e,n){return M=1,i(this,new E(e,n))},T.decimalPlaces=T.dp=function(){var e,n,r=this.c;if(!r)return null;if(e=((n=r.length-1)-t(this.e/O))*O,n=r[n])for(;n%10==0;n/=10,e--);return 0>e&&(e=0),e},T.dividedBy=T.div=function(e,n){return M=3,C(this,new E(e,n),P,k)},T.dividedToIntegerBy=T.divToInt=function(e,n){return M=4,C(this,new E(e,n),0,1)},T.equals=T.eq=function(e,n){return M=5,0===i(this,new E(e,n))},T.floor=function(){return U(new E(this),this.e+1,3)},T.greaterThan=T.gt=function(e,n){return M=6,i(this,new E(e,n))>0},T.greaterThanOrEqualTo=T.gte=function(e,n){return M=7,1===(n=i(this,new E(e,n)))||0===n},T.isFinite=function(){return!!this.c},T.isInteger=T.isInt=function(){return!!this.c&&t(this.e/O)>this.c.length-2},T.isNaN=function(){return!this.s},T.isNegative=T.isNeg=function(){return this.s<0},T.isZero=function(){return!!this.c&&0==this.c[0]},T.lessThan=T.lt=function(e,n){return M=8,i(this,new E(e,n))<0},T.lessThanOrEqualTo=T.lte=function(e,n){return M=9,-1===(n=i(this,new E(e,n)))||0===n},T.minus=T.sub=function(e,n){var r,i,o,u,s=this,f=s.s;if(M=10,e=new E(e,n),n=e.s,!f||!n)return new E(NaN);if(f!=n)return e.s=-n,s.plus(e);var l=s.e/O,c=e.e/O,a=s.c,h=e.c;if(!l||!c){if(!a||!h)return a?(e.s=-n,e):new E(h?s:NaN);if(!a[0]||!h[0])return h[0]?(e.s=-n,e):new E(a[0]?s:3==k?-0:0)}if(l=t(l),c=t(c),a=a.slice(),f=l-c){for((u=0>f)?(f=-f,o=a):(c=l,o=h),o.reverse(),n=f;n--;o.push(0));o.reverse()}else for(i=(u=(f=a.length)<(n=h.length))?f:n,f=n=0;i>n;n++)if(a[n]!=h[n]){u=a[n]0)for(;n--;a[r++]=0);for(n=b-1;i>f;){if(a[--i]0?(s=u,r=l):(o=-o,r=f),r.reverse();o--;r.push(0));r.reverse()}for(o=f.length,n=l.length,0>o-n&&(r=l,l=f,f=r,n=o),o=0;n;)o=(f[--n]=f[n]+l[n]+o)/b|0,f[n]%=b;return o&&(f.unshift(o),++s),I(e,f,s)},T.precision=T.sd=function(e){var n,t,r=this,i=r.c;if(null!=e&&e!==!!e&&1!==e&&0!==e&&(j&&L(13,"argument"+m,e),e!=!!e&&(e=null)),!i)return null;if(t=i.length-1,n=t*O+1,t=i[t]){for(;t%10==0;t/=10,n--);for(t=i[0];t>=10;t/=10,n++);}return e&&r.e+1>n&&(n=r.e+1),n},T.round=function(e,n){var t=new E(this);return(null==e||H(e,0,A,15))&&U(t,~~e+this.e+1,null!=n&&H(n,0,8,15,w)?0|n:k),t},T.shift=function(e){var n=this;return H(e,-y,y,16,"argument")?n.times("1e"+c(e)):new E(n.c&&n.c[0]&&(-y>e||e>y)?n.s*(0>e?0:1/0):n)},T.squareRoot=T.sqrt=function(){var e,n,i,o,u,s=this,f=s.c,l=s.s,c=s.e,a=P+4,h=new E("0.5");if(1!==l||!f||!f[0])return new E(!l||0>l&&(!f||f[0])?NaN:f?s:1/0);if(l=Math.sqrt(+s),0==l||l==1/0?(n=r(f),(n.length+c)%2==0&&(n+="0"),l=Math.sqrt(n),c=t((c+1)/2)-(0>c||c%2),l==1/0?n="1e"+c:(n=l.toExponential(),n=n.slice(0,n.indexOf("e")+1)+c),i=new E(n)):i=new E(l+""),i.c[0])for(c=i.e,l=c+a,3>l&&(l=0);;)if(u=i,i=h.times(u.plus(C(s,u,a,1))),r(u.c).slice(0,l)===(n=r(i.c)).slice(0,l)){if(i.el&&(d=N,N=y,y=d,o=l,l=h,h=o),o=l+h,d=[];o--;d.push(0));for(m=b,w=R,o=h;--o>=0;){for(r=0,g=y[o]%w,p=y[o]/w|0,s=l,u=o+s;u>o;)c=N[--s]%w,a=N[s]/w|0,f=p*c+a*g,c=g*c+f%w*w+d[u]+r,r=(c/m|0)+(f/w|0)+p*a,d[u--]=c%m;d[u]=r}return r?++i:d.shift(),I(e,d,i)},T.toDigits=function(e,n){var t=new E(this);return e=null!=e&&H(e,1,A,18,"precision")?0|e:null,n=null!=n&&H(n,0,8,18,w)?0|n:k,e?U(t,e,n):t},T.toExponential=function(e,n){return F(this,null!=e&&H(e,0,A,19)?~~e+1:null,n,19)},T.toFixed=function(e,n){return F(this,null!=e&&H(e,0,A,20)?~~e+this.e+1:null,n,20)},T.toFormat=function(e,n){var t=F(this,null!=e&&H(e,0,A,21)?~~e+this.e+1:null,n,21);if(this.c){var r,i=t.split("."),o=+X.groupSize,u=+X.secondaryGroupSize,s=X.groupSeparator,f=i[0],l=i[1],c=this.s<0,a=c?f.slice(1):f,h=a.length;if(u&&(r=o,o=u,u=r,h-=r),o>0&&h>0){for(r=h%o||o,f=a.substr(0,r);h>r;r+=o)f+=s+a.substr(r,o);u>0&&(f+=s+a.slice(r)),c&&(f="-"+f)}t=l?f+X.decimalSeparator+((u=+X.fractionGroupSize)?l.replace(new RegExp("\\d{"+u+"}\\B","g"),"$&"+X.fractionGroupSeparator):l):f}return t},T.toFraction=function(e){var n,t,i,o,u,s,f,l,c,a=j,h=this,g=h.c,p=new E(q),d=t=new E(q),m=f=new E(q);if(null!=e&&(j=!1,s=new E(e),j=a,(!(a=s.isInt())||s.lt(q))&&(j&&L(22,"max denominator "+(a?"out of range":"not an integer"),e),e=!a&&s.c&&U(s,s.e+1,1).gte(q)?s:null)),!g)return h.toString();for(c=r(g),o=p.e=c.length-h.e-1,p.c[0]=S[(u=o%O)<0?O+u:u],e=!e||s.cmp(p)>0?o>0?p:d:s,u=z,z=1/0,s=new E(c),f.c[0]=0;l=C(s,p,0,1),i=t.plus(l.times(m)),1!=i.cmp(e);)t=m,m=i,d=f.plus(l.times(i=d)),f=i,p=s.minus(l.times(i=p)),s=i;return i=C(e.minus(t),m,0,1),f=f.plus(i.times(d)),t=t.plus(i.times(m)),f.s=d.s=h.s,o*=2,n=C(d,m,o,k).minus(h).abs().cmp(C(f,t,o,k).minus(h).abs())<1?[d.toString(),m.toString()]:[f.toString(),t.toString()],z=u,n},T.toNumber=function(){return+this},T.toPower=T.pow=function(e){var n,t,r=d(0>e?-e:+e),i=this;if(!H(e,-y,y,23,"exponent")&&(!isFinite(e)||r>y&&(e/=0)||parseFloat(e)!=e&&!(e=NaN)))return new E(Math.pow(+i,e));for(n=J?p(J/O+2):0,t=new E(q);;){if(r%2){if(t=t.times(i),!t.c)break;n&&t.c.length>n&&(t.c.length=n)}if(r=d(r/2),!r)break;i=i.times(i),n&&i.c&&i.c.length>n&&(i.c.length=n)}return 0>e&&(t=q.div(t)),n?U(t,J,k):t},T.toPrecision=function(e,n){return F(this,null!=e&&H(e,1,A,24,"precision")?0|e:null,n,24)},T.toString=function(e){var n,t=this,i=t.s,o=t.e;return null===o?i?(n="Infinity",0>i&&(n="-"+n)):n="NaN":(n=r(t.c),n=null!=e&&H(e,2,64,25,"base")?D(l(n,o),0|e,10,i):B>=o||o>=$?f(n,o):l(n,o),0>i&&t.c[0]&&(n="-"+n)),n},T.truncated=T.trunc=function(){return U(new E(this),this.e+1,1)},T.valueOf=T.toJSON=function(){var e,n=this,t=n.e;return null===t?n.toString():(e=r(n.c),e=B>=t||t>=$?f(e,t):l(e,t),n.s<0?"-"+e:e)},null!=e&&E.config(e),E}function t(e){var n=0|e;return e>0||e===n?n:n-1}function r(e){for(var n,t,r=1,i=e.length,o=e[0]+"";i>r;){for(n=e[r++]+"",t=O-n.length;t--;n="0"+n);o+=n}for(i=o.length;48===o.charCodeAt(--i););return o.slice(0,i+1||1)}function i(e,n){var t,r,i=e.c,o=n.c,u=e.s,s=n.s,f=e.e,l=n.e;if(!u||!s)return null;if(t=i&&!i[0],r=o&&!o[0],t||r)return t?r?0:-s:u;if(u!=s)return u;if(t=0>u,r=f==l,!i||!o)return r?0:!i^t?1:-1;if(!r)return f>l^t?1:-1;for(s=(f=i.length)<(l=o.length)?f:l,u=0;s>u;u++)if(i[u]!=o[u])return i[u]>o[u]^t?1:-1;return f==l?0:f>l^t?1:-1}function o(e,n,t){return(e=c(e))>=n&&t>=e}function u(e){return"[object Array]"==Object.prototype.toString.call(e)}function s(e,n,t){for(var r,i,o=[0],u=0,s=e.length;s>u;){for(i=o.length;i--;o[i]*=n);for(o[r=0]+=N.indexOf(e.charAt(u++));rt-1&&(null==o[r+1]&&(o[r+1]=0),o[r+1]+=o[r]/t|0,o[r]%=t)}return o.reverse()}function f(e,n){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(0>n?"e":"e+")+n}function l(e,n){var t,r;if(0>n){for(r="0.";++n;r+="0");e=r+e}else if(t=e.length,++n>t){for(r="0",n-=t;--n;r+="0");e+=r}else t>n&&(e=e.slice(0,n)+"."+e.slice(n));return e}function c(e){return e=parseFloat(e),0>e?p(e):d(e)}var a,h,g=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,p=Math.ceil,d=Math.floor,m=" not a boolean or binary digit",w="rounding mode",v="number type has more than 15 significant digits",N="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_",b=1e14,O=14,y=9007199254740991,S=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],R=1e7,A=1e9;if("undefined"!=typeof crypto&&(a=crypto),"function"==typeof define&&define.amd)define(function(){return n()});else if("undefined"!=typeof module&&module.exports){if(module.exports=n(),!a)try{a=require("crypto")}catch(E){}}else e||(e="undefined"!=typeof self?self:Function("return this")()),e.BigNumber=n()}(this); + /* eslint-enable */ + + + })($nesting[0], $$('Numeric')) +}; + +Opal.modules["bigdecimal"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $klass = Opal.klass, $module = Opal.module, $def = Opal.def, $hash2 = Opal.hash2, $send = Opal.send, $to_a = Opal.to_a, $hash = Opal.hash, $defs = Opal.defs, $const_set = Opal.const_set, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $send2 = Opal.send2, $find_super = Opal.find_super, $rb_lt = Opal.rb_lt, $to_ary = Opal.to_ary, $rb_gt = Opal.rb_gt, $rb_ge = Opal.rb_ge, $eqeq = Opal.eqeq, $rb_divide = Opal.rb_divide, $alias = Opal.alias; + + Opal.add_stubs('require,allocate,initialize,warn,BigDecimal,===,attr_reader,new,class,bignumber,nan?,nil?,raise,<,coerce,>,mode,>=,==,/,zero?,infinite?,finite?'); + + $klass($nesting[0], $$('Numeric'), 'BigDecimal'); + self.$require("js"); + self.$require("bigdecimal/bignumber"); + (function($base, $parent_nesting) { + var self = $module($base, 'Kernel'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$BigDecimal', function $$BigDecimal(initial, digits) { + var bigdecimal = nil; + + + + if (digits == null) digits = 0;; + bigdecimal = $$('BigDecimal').$allocate(); + bigdecimal.$initialize(initial, digits); + return bigdecimal; + }, -2) + })($nesting[0], $nesting); + $defs($$('BigDecimal'), '$new', function $new$1($a, $b) { + var $post_args, $kwargs, args, kwargs, self = this; + + + + $post_args = Opal.slice.call(arguments); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + args = $post_args;; + + kwargs = Opal.kwrestargs($kwargs, {});; + self.$warn("BigDecimal.new is deprecated; use BigDecimal() method instead.", $hash2(["uplevel"], {"uplevel": 1})); + return $send(self, 'BigDecimal', $to_a(args).concat([Opal.to_hash(kwargs)])); + }, -1); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'BigDecimal'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $const_set($nesting[0], 'ROUND_MODE', 256); + $const_set($nesting[0], 'ROUND_UP', 0); + $const_set($nesting[0], 'ROUND_DOWN', 1); + $const_set($nesting[0], 'ROUND_CEILING', 2); + $const_set($nesting[0], 'ROUND_FLOOR', 3); + $const_set($nesting[0], 'ROUND_HALF_UP', 4); + $const_set($nesting[0], 'ROUND_HALF_DOWN', 5); + $const_set($nesting[0], 'ROUND_HALF_EVEN', 6); + $const_set($nesting[0], 'SIGN_NaN', 0); + $const_set($nesting[0], 'SIGN_POSITIVE_ZERO', 1); + $const_set($nesting[0], 'SIGN_NEGATIVE_ZERO', -1); + $const_set($nesting[0], 'SIGN_POSITIVE_FINITE', 2); + $const_set($nesting[0], 'SIGN_NEGATIVE_FINITE', -2); + $const_set($nesting[0], 'SIGN_POSITIVE_INFINITE', 3); + $const_set($nesting[0], 'SIGN_NEGATIVE_INFINITE', -3); + $defs(self, '$limit', function $$limit(digits) { + var self = this; + if (self.digits == null) self.digits = nil; + + + + if (digits == null) digits = nil;; + if ($truthy(digits)) { + self.digits = digits + }; + return self.digits; + }, -1); + $defs(self, '$mode', function $$mode(mode, value) { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + if (self.round_mode == null) self.round_mode = nil; + + + + if (value == null) value = nil;; + if ($eqeqeq($$('ROUND_MODE'), ($ret_or_1 = mode))) { + + if ($truthy(value)) { + self.round_mode = value + }; + if ($truthy(($ret_or_2 = self.round_mode))) { + return $ret_or_2 + } else { + return $$('ROUND_HALF_UP') + }; + } else { + return nil + }; + }, -2); + self.$attr_reader("bignumber"); + + $def(self, '$initialize', function $$initialize(initial, digits) { + var self = this; + + + + if (digits == null) digits = 0;; + return (self.bignumber = $$('JS').$new($$('BigNumber'), initial)); + }, -2); + + $def(self, '$==', function $BigDecimal_$eq_eq$2(other) { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq(self.$class(), ($ret_or_1 = other))) { + return self.$bignumber().equals(other.$bignumber()) + } else if ($eqeqeq($$('Number'), $ret_or_1)) { + return self.$bignumber().equals(other) + } else { + return false + } + }, 1); + + $def(self, '$<=>', function $BigDecimal_$lt_eq_gt$3(other) { + var self = this, result = nil, $ret_or_1 = nil; + + + result = ($eqeqeq(self.$class(), ($ret_or_1 = other)) ? (self.$bignumber().comparedTo(other.$bignumber())) : ($eqeqeq($$('Number'), $ret_or_1) ? (self.$bignumber().comparedTo(other)) : (nil))); + return result === null ? nil : result; + }, 1); + + $def(self, '$<', function $BigDecimal_$lt$4(other) { + var $yield = $BigDecimal_$lt$4.$$p || nil, self = this; + + delete $BigDecimal_$lt$4.$$p; + + if (($truthy(self['$nan?']()) || (($truthy(other) && ($truthy(other['$nan?']())))))) { + return false + }; + return $send2(self, $find_super(self, '<', $BigDecimal_$lt$4, false, true), '<', [other], $yield); + }, 1); + + $def(self, '$<=', function $BigDecimal_$lt_eq$5(other) { + var $yield = $BigDecimal_$lt_eq$5.$$p || nil, self = this; + + delete $BigDecimal_$lt_eq$5.$$p; + + if (($truthy(self['$nan?']()) || (($truthy(other) && ($truthy(other['$nan?']())))))) { + return false + }; + return $send2(self, $find_super(self, '<=', $BigDecimal_$lt_eq$5, false, true), '<=', [other], $yield); + }, 1); + + $def(self, '$>', function $BigDecimal_$gt$6(other) { + var $yield = $BigDecimal_$gt$6.$$p || nil, self = this; + + delete $BigDecimal_$gt$6.$$p; + + if (($truthy(self['$nan?']()) || (($truthy(other) && ($truthy(other['$nan?']())))))) { + return false + }; + return $send2(self, $find_super(self, '>', $BigDecimal_$gt$6, false, true), '>', [other], $yield); + }, 1); + + $def(self, '$>=', function $BigDecimal_$gt_eq$7(other) { + var $yield = $BigDecimal_$gt_eq$7.$$p || nil, self = this; + + delete $BigDecimal_$gt_eq$7.$$p; + + if (($truthy(self['$nan?']()) || (($truthy(other) && ($truthy(other['$nan?']())))))) { + return false + }; + return $send2(self, $find_super(self, '>=', $BigDecimal_$gt_eq$7, false, true), '>=', [other], $yield); + }, 1); + + $def(self, '$abs', function $$abs() { + var self = this; + + return self.$class().$new(self.$bignumber().abs()) + }, 0); + + $def(self, '$add', function $$add(other, digits) { + var $a, $b, self = this, _ = nil, result = nil; + + + + if (digits == null) digits = 0;; + if ($truthy(digits['$nil?']())) { + self.$raise($$('TypeError'), "wrong argument type nil (expected Fixnum)") + }; + if ($truthy($rb_lt(digits, 0))) { + self.$raise($$('ArgumentError'), "argument must be positive") + }; + $b = self.$coerce(other), $a = $to_ary($b), (other = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $b; + result = self.$bignumber().plus(other.$bignumber()); + if ($truthy($rb_gt(digits, 0))) { + result = result.toDigits(digits, self.$class().$mode($$('ROUND_MODE'))) + }; + return self.$class().$new(result); + }, -2); + + $def(self, '$ceil', function $$ceil(n) { + var self = this; + + + + if (n == null) n = nil;; + if (!$truthy(self.$bignumber().isFinite())) { + self.$raise($$('FloatDomainError'), "Computation results to 'Infinity'") + }; + if ($truthy(n['$nil?']())) { + return self.$bignumber().round(0, $$('ROUND_CEILING')).toNumber() + } else if ($truthy($rb_ge(n, 0))) { + return self.$class().$new(self.$bignumber().round(n, $$('ROUND_CEILING'))) + } else { + return self.$class().$new(self.$bignumber().round(0, $$('ROUND_CEILING'))) + }; + }, -1); + + $def(self, '$coerce', function $$coerce(other) { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq(self.$class(), ($ret_or_1 = other))) { + return [other, self] + } else if ($eqeqeq($$('Number'), $ret_or_1)) { + return [self.$class().$new(other), self] + } else { + return self.$raise($$('TypeError'), "" + (other.$class()) + " can't be coerced into " + (self.$class())) + } + }, 1); + + $def(self, '$div', function $$div(other, digits) { + var $a, $b, self = this, _ = nil; + + + + if (digits == null) digits = nil;; + if ($eqeq(digits, 0)) { + return $rb_divide(self, other) + }; + $b = self.$coerce(other), $a = $to_ary($b), (other = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $b; + if (($truthy(self['$nan?']()) || ($truthy(other['$nan?']())))) { + self.$raise($$('FloatDomainError'), "Computation results to 'NaN'(Not a Number)") + }; + if ($truthy(digits['$nil?']())) { + + if ($truthy(other['$zero?']())) { + self.$raise($$('ZeroDivisionError'), "divided by 0") + }; + if ($truthy(self['$infinite?']())) { + self.$raise($$('FloatDomainError'), "Computation results to 'Infinity'") + }; + return self.$class().$new(self.$bignumber().dividedToIntegerBy(other.$bignumber())); + }; + return self.$class().$new(self.$bignumber().dividedBy(other.$bignumber()).round(digits, self.$class().$mode($$('ROUND_MODE')))); + }, -2); + + $def(self, '$finite?', function $BigDecimal_finite$ques$8() { + var self = this; + + return self.$bignumber().isFinite() + }, 0); + + $def(self, '$infinite?', function $BigDecimal_infinite$ques$9() { + var self = this; + + + if (($truthy(self['$finite?']()) || ($truthy(self['$nan?']())))) { + return nil + }; + if ($truthy(self.$bignumber().isNegative())) { + return -1 + } else { + return 1 + }; + }, 0); + + $def(self, '$minus', function $$minus(other) { + var $a, $b, self = this, _ = nil; + + + $b = self.$coerce(other), $a = $to_ary($b), (other = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $b; + return self.$class().$new(self.$bignumber().minus(other.$bignumber())); + }, 1); + + $def(self, '$mult', function $$mult(other, digits) { + var $a, $b, self = this, _ = nil; + + + + if (digits == null) digits = nil;; + $b = self.$coerce(other), $a = $to_ary($b), (other = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $b; + if ($truthy(digits['$nil?']())) { + return self.$class().$new(self.$bignumber().times(other.$bignumber())) + }; + return self.$class().$new(self.$bignumber().times(other.$bignumber()).round(digits, self.$class().$mode($$('ROUND_MODE')))); + }, -2); + + $def(self, '$nan?', function $BigDecimal_nan$ques$10() { + var self = this; + + return self.$bignumber().isNaN() + }, 0); + + $def(self, '$quo', function $$quo(other) { + var $a, $b, self = this, _ = nil; + + + $b = self.$coerce(other), $a = $to_ary($b), (other = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $b; + return self.$class().$new(self.$bignumber().dividedBy(other.$bignumber())); + }, 1); + + $def(self, '$sign', function $$sign() { + var self = this; + + + if ($truthy(self.$bignumber().isNaN())) { + return $$('SIGN_NaN') + }; + if ($truthy(self.$bignumber().isZero())) { + return ($truthy(self.$bignumber().isNegative()) ? ($$('SIGN_NEGATIVE_ZERO')) : ($$('SIGN_POSITIVE_ZERO'))) + } else { + return nil + }; + }, 0); + + $def(self, '$sub', function $$sub(other, precision) { + var $a, $b, self = this, _ = nil; + + + $b = self.$coerce(other), $a = $to_ary($b), (other = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $b; + return self.$class().$new(self.$bignumber().minus(other.$bignumber())); + }, 2); + + $def(self, '$to_f', function $$to_f() { + var self = this; + + return self.$bignumber().toNumber() + }, 0); + + $def(self, '$to_s', function $$to_s(s) { + var self = this; + + + + if (s == null) s = "";; + return self.$bignumber().toString(); + }, -1); + + $def(self, '$zero?', function $BigDecimal_zero$ques$11() { + var self = this; + + return self.$bignumber().isZero() + }, 0); + $alias(self, "===", "=="); + $alias(self, "+", "add"); + $alias(self, "-", "minus"); + $alias(self, "*", "mult"); + $alias(self, "/", "quo"); + return $alias(self, "inspect", "to_s"); + })($nesting[0], $$('Numeric'), $nesting); +}; diff --git a/opal/1.4.1/bigdecimal.min.js b/opal/1.4.1/bigdecimal.min.js new file mode 100644 index 00000000..4514352f --- /dev/null +++ b/opal/1.4.1/bigdecimal.min.js @@ -0,0 +1 @@ +Opal.modules.js=function(Opal){var self,nil=Opal.nil,$module=Opal.module,$def=Opal.def,$truthy=Opal.truthy,$alias=Opal.alias;return Opal.add_stubs("insert,<<,global,extend"),self=$module([][0],"JS"),$def(self,"$delete",(function(object,property){return delete object[property]}),2),$def(self,"$global",(function(){return Opal.global}),0),$def(self,"$in",(function(property,object){return property in object}),2),$def(self,"$instanceof",(function(value,func){return value instanceof func}),2),$truthy("function"==typeof Function.prototype.bind)?$def(self,"$new",(function $JS_new$4(func,$a){var args,block=$JS_new$4.$$p||nil;return delete $JS_new$4.$$p,(args=Opal.slice.call(arguments,1)).$insert(0,this),$truthy(block)&&args["$<<"](block),new(func.bind.apply(func,args))}),-2):$def(self,"$new",(function $JS_new$5(func,$a){var $post_args,args,block=$JS_new$5.$$p||nil,f=nil;return delete $JS_new$5.$$p,$post_args=Opal.slice.call(arguments,1),args=$post_args,$truthy(block)&&args["$<<"](block),(f=function(){return func.apply(this,args)}).prototype=func.prototype,new f}),-2),$def(self,"$typeof",(function(value){return typeof value}),1),$def(self,"$void",(function(expr){}),1),$def(self,"$call",(function $$call(func,$a){var args,block=$$call.$$p||nil,self=this,g=nil;return delete $$call.$$p,args=Opal.slice.call(arguments,1),g=self.$global(),$truthy(block)&&args["$<<"](block),g[func].apply(g,args)}),-2),$def(self,"$[]",(function(name){return Opal.global[name]}),1),$alias(self,"method_missing","call"),self.$extend(self)},Opal.modules["bigdecimal/bignumber"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),$klass=(Opal.nil,Opal.klass);return function($base,$super){var self=$klass($base,$super,"BigDecimal"),define=function(f){Opal.const_set(self,"BigNumber",f())};define.amd=!0,function(e){"use strict";function n(e){function E(e,n){var t,r,i,o,u,s,f=this;if(!(f instanceof E))return j&&L(26,"constructor call without new",e),new E(e,n);if(null!=n&&H(n,2,64,M,"base")){if(s=e+"",10==(n|=0))return U(f=new E(e instanceof E?e:s),P+f.e+1,k);if((o="number"==typeof e)&&0*e!=0||!new RegExp("^-?"+(t="["+N.slice(0,n)+"]+")+"(?:\\."+t+")?$",37>n?"i":"").test(s))return h(f,s,o,n);o?(f.s=0>1/e?(s=s.slice(1),-1):1,j&&s.replace(/^0\.0*|\./,"").length>15&&L(M,v,e),o=!1):f.s=45===s.charCodeAt(0)?(s=s.slice(1),-1):1,s=D(s,10,n,f.s)}else{if(e instanceof E)return f.s=e.s,f.e=e.e,f.c=(e=e.c)?e.slice():e,void(M=0);if((o="number"==typeof e)&&0*e==0){if(f.s=0>1/e?(e=-e,-1):1,e===~~e){for(r=0,i=e;i>=10;i/=10,r++);return f.e=r,f.c=[e],void(M=0)}s=e+""}else{if(!g.test(s=e+""))return h(f,s,o);f.s=45===s.charCodeAt(0)?(s=s.slice(1),-1):1}}for((r=s.indexOf("."))>-1&&(s=s.replace(".","")),(i=s.search(/e/i))>0?(0>r&&(r=i),r+=+s.slice(i+1),s=s.substring(0,i)):0>r&&(r=s.length),i=0;48===s.charCodeAt(i);i++);for(u=s.length;48===s.charCodeAt(--u););if(s=s.slice(i,u+1))if(u=s.length,o&&j&&u>15&&L(M,v,f.s*e),(r=r-i-1)>z)f.c=f.e=null;else if(G>r)f.c=[f.e=0];else{if(f.e=r,f.c=[],i=(r+1)%O,0>r&&(i+=O),u>i){for(i&&f.c.push(+s.slice(0,i)),u-=O;u>i;)f.c.push(+s.slice(i,i+=O));s=s.slice(i),i=O-s.length}else i-=u;for(;i--;s+="0");f.c.push(+s)}else f.c=[f.e=0];M=0}function D(e,n,t,i){var o,u,f,c,a,h,g,p=e.indexOf("."),d=P,m=k;for(37>t&&(e=e.toLowerCase()),p>=0&&(f=J,J=0,e=e.replace(".",""),a=(g=new E(t)).pow(e.length-p),J=f,g.c=s(l(r(a.c),a.e),10,n),g.e=g.c.length),u=f=(h=s(e,t,n)).length;0==h[--f];h.pop());if(!h[0])return"0";if(0>p?--u:(a.c=h,a.e=u,a.s=i,h=(a=C(a,g,d,m,n)).c,c=a.r,u=a.e),p=h[o=u+d+1],f=n/2,c=c||0>o||null!=h[o+1],c=4>m?(null!=p||c)&&(0==m||m==(a.s<0?3:2)):p>f||p==f&&(4==m||c||6==m&&1&h[o-1]||m==(a.s<0?8:7)),1>o||!h[0])e=c?l("1",-d):"0";else{if(h.length=o,c)for(--n;++h[--o]>n;)h[o]=0,o||(++u,h.unshift(1));for(f=h.length;!h[--f];);for(p=0,e="";f>=p;e+=N.charAt(h[p++]));e=l(e,u)}return e}function F(e,n,t,i){var o,u,s,c,a;if(t=null!=t&&H(t,0,8,i,w)?0|t:k,!e.c)return e.toString();if(o=e.c[0],s=e.e,null==n)a=r(e.c),a=19==i||24==i&&B>=s?f(a,s):l(a,s);else if(u=(e=U(new E(e),n,t)).e,c=(a=r(e.c)).length,19==i||24==i&&(u>=n||B>=u)){for(;n>c;a+="0",c++);a=f(a,u)}else if(n-=s,a=l(a,u),u+1>c){if(--n>0)for(a+=".";n--;a+="0");}else if((n+=u-c)>0)for(u+1==c&&(a+=".");n--;a+="0");return e.s<0&&o?"-"+a:a}function _(e,n){var t,r,i=0;for(u(e[0])&&(e=e[0]),t=new E(e[0]);++ie||e>t||e!=c(e))&&L(r,(i||"decimal places")+(n>e||e>t?" out of range":" not an integer"),e),!0}function I(e,n,t){for(var r=1,i=n.length;!n[--i];n.pop());for(i=n[0];i>=10;i/=10,r++);return(t=r+t*O-1)>z?e.c=e.e=null:G>t?e.c=[e.e=0]:(e.e=t,e.c=n),e}function L(e,n,t){var r=new Error(["new BigNumber","cmp","config","div","divToInt","eq","gt","gte","lt","lte","minus","mod","plus","precision","random","round","shift","times","toDigits","toExponential","toFixed","toFormat","toFraction","pow","toPrecision","toString","BigNumber"][e]+"() "+n+": "+t);throw r.name="BigNumber Error",M=0,r}function U(e,n,t,r){var i,o,u,s,f,l,c,a=e.c,h=S;if(a){e:{for(i=1,s=a[0];s>=10;s/=10,i++);if(0>(o=n-i))o+=O,u=n,c=(f=a[l=0])/h[i-u-1]%10|0;else if((l=p((o+1)/O))>=a.length){if(!r)break e;for(;a.length<=l;a.push(0));f=c=0,i=1,u=(o%=O)-O+1}else{for(f=s=a[l],i=1;s>=10;s/=10,i++);c=0>(u=(o%=O)-O+i)?0:f/h[i-u-1]%10|0}if(r=r||0>n||null!=a[l+1]||(0>u?f:f%h[i-u-1]),r=4>t?(c||r)&&(0==t||t==(e.s<0?3:2)):c>5||5==c&&(4==t||r||6==t&&(o>0?u>0?f/h[i-u]:0:a[l-1])%10&1||t==(e.s<0?8:7)),1>n||!a[0])return a.length=0,r?(n-=e.e+1,a[0]=h[(O-n%O)%O],e.e=-n||0):a[0]=e.e=0,e;if(0==o?(a.length=l,s=1,l--):(a.length=l+1,s=h[O-o],a[l]=u>0?d(f/h[i-u]%h[u])*s:0),r)for(;;){if(0==l){for(o=1,u=a[0];u>=10;u/=10,o++);for(u=a[0]+=s,s=1;u>=10;u/=10,s++);o!=s&&(e.e++,a[0]==b&&(a[0]=1));break}if(a[l]+=s,a[l]!=b)break;a[l--]=0,s=1}for(o=a.length;0===a[--o];a.pop());}e.e>z?e.c=e.e=null:e.et?null!=(e=i[t++]):void 0};return f(n="DECIMAL_PLACES")&&H(e,0,A,2,n)&&(P=0|e),r[n]=P,f(n="ROUNDING_MODE")&&H(e,0,8,2,n)&&(k=0|e),r[n]=k,f(n="EXPONENTIAL_AT")&&(u(e)?H(e[0],-A,0,2,n)&&H(e[1],0,A,2,n)&&(B=0|e[0],$=0|e[1]):H(e,-A,A,2,n)&&(B=-($=0|(0>e?-e:e)))),r[n]=[B,$],f(n="RANGE")&&(u(e)?H(e[0],-A,-1,2,n)&&H(e[1],1,A,2,n)&&(G=0|e[0],z=0|e[1]):H(e,-A,A,2,n)&&(0|e?G=-(z=0|(0>e?-e:e)):j&&L(2,n+" cannot be zero",e))),r[n]=[G,z],f(n="ERRORS")&&(e===!!e||1===e||0===e?(M=0,H=(j=!!e)?x:o):j&&L(2,n+m,e)),r[n]=j,f(n="CRYPTO")&&(e===!!e||1===e||0===e?(V=!(!e||!a),e&&!V&&j&&L(2,"crypto unavailable",a)):j&&L(2,n+m,e)),r[n]=V,f(n="MODULO_MODE")&&H(e,0,9,2,n)&&(W=0|e),r[n]=W,f(n="POW_PRECISION")&&H(e,0,A,2,n)&&(J=0|e),r[n]=J,f(n="FORMAT")&&("object"==typeof e?X=e:j&&L(2,n+" not an object",e)),r[n]=X,r},E.max=function(){return _(arguments,T.lt)},E.min=function(){return _(arguments,T.gt)},E.random=function(){var e=9007199254740992,n=Math.random()*e&2097151?function(){return d(Math.random()*e)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)};return function(e){var t,r,i,o,u,s=0,f=[],l=new E(q);if(e=null!=e&&H(e,0,A,14)?0|e:P,o=p(e/O),V)if(a&&a.getRandomValues){for(t=a.getRandomValues(new Uint32Array(o*=2));o>s;)(u=131072*t[s]+(t[s+1]>>>11))>=9e15?(r=a.getRandomValues(new Uint32Array(2)),t[s]=r[0],t[s+1]=r[1]):(f.push(u%1e14),s+=2);s=o/2}else if(a&&a.randomBytes){for(t=a.randomBytes(o*=7);o>s;)(u=281474976710656*(31&t[s])+1099511627776*t[s+1]+4294967296*t[s+2]+16777216*t[s+3]+(t[s+4]<<16)+(t[s+5]<<8)+t[s+6])>=9e15?a.randomBytes(7).copy(t,s):(f.push(u%1e14),s+=7);s=o/7}else j&&L(14,"crypto unavailable",a);if(!s)for(;o>s;)9e15>(u=n())&&(f[s++]=u%1e14);for(o=f[--s],e%=O,o&&e&&(u=S[O-e],f[s]=d(o/u)*u);0===f[s];f.pop(),s--);if(0>s)f=[i=0];else{for(i=-1;0===f[0];f.shift(),i-=O);for(s=1,u=f[0];u>=10;u/=10,s++);O>s&&(i-=O-s)}return l.e=i,l.c=f,l}}(),C=function(){function e(e,n,t){var r,i,o,u,s=0,f=e.length,l=n%R,c=n/R|0;for(e=e.slice();f--;)s=((i=l*(o=e[f]%R)+(r=c*o+(u=e[f]/R|0)*l)%R*R+s)/t|0)+(r/R|0)+c*u,e[f]=i%t;return s&&e.unshift(s),e}function n(e,n,t,r){var i,o;if(t!=r)o=t>r?1:-1;else for(i=o=0;t>i;i++)if(e[i]!=n[i]){o=e[i]>n[i]?1:-1;break}return o}function r(e,n,t,r){for(var i=0;t--;)e[t]-=i,i=e[t]1;e.shift());}return function(i,o,u,s,f){var l,c,a,h,g,p,m,w,v,N,y,S,R,A,D,F,_,x=i.s==o.s?1:-1,I=i.c,L=o.c;if(!(I&&I[0]&&L&&L[0]))return new E(i.s&&o.s&&(I?!L||I[0]!=L[0]:L)?I&&0==I[0]||!L?0*x:x/0:NaN);for(v=(w=new E(x)).c=[],x=u+(c=i.e-o.e)+1,f||(f=b,c=t(i.e/O)-t(o.e/O),x=x/O|0),a=0;L[a]==(I[a]||0);a++);if(L[a]>(I[a]||0)&&c--,0>x)v.push(1),h=!0;else{for(A=I.length,F=L.length,a=0,x+=2,(g=d(f/(L[0]+1)))>1&&(L=e(L,g,f),I=e(I,g,f),F=L.length,A=I.length),R=F,y=(N=I.slice(0,F)).length;F>y;N[y++]=0);(_=L.slice()).unshift(0),D=L[0],L[1]>=f/2&&D++;do{if(g=0,0>(l=n(L,N,F,y))){if(S=N[0],F!=y&&(S=S*f+(N[1]||0)),(g=d(S/D))>1)for(g>=f&&(g=f-1),m=(p=e(L,g,f)).length,y=N.length;1==n(p,N,m,y);)g--,r(p,m>F?_:L,m,f),m=p.length,l=1;else 0==g&&(l=g=1),m=(p=L.slice()).length;if(y>m&&p.unshift(0),r(N,p,y,f),y=N.length,-1==l)for(;n(L,N,F,y)<1;)g++,r(N,y>F?_:L,y,f),y=N.length}else 0===l&&(g++,N=[0]);v[a++]=g,N[0]?N[y++]=I[R]||0:(N=[I[R]],y=1)}while((R++=10;x/=10,a++);U(w,u+(w.e=a+c*O-1)+1,s,h)}else w.e=c,w.r=+h;return w}}(),h=function(){var e=/^(-?)0([xbo])(?=\w[\w.]*$)/i,n=/^([^.]+)\.$/,t=/^\.([^.]+)$/,r=/^-?(Infinity|NaN)$/,i=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(o,u,s,f){var l,c=s?u:u.replace(i,"");if(r.test(c))o.s=isNaN(c)?null:0>c?-1:1;else{if(!s&&(c=c.replace(e,(function(e,n,t){return l="x"==(t=t.toLowerCase())?16:"b"==t?2:8,f&&f!=l?e:n})),f&&(l=f,c=c.replace(n,"$1").replace(t,"0.$1")),u!=c))return new E(c,l);j&&L(M,"not a"+(f?" base "+f:"")+" number",u),o.s=null}o.c=o.e=null,M=0}}(),T.absoluteValue=T.abs=function(){var e=new E(this);return e.s<0&&(e.s=1),e},T.ceil=function(){return U(new E(this),this.e+1,2)},T.comparedTo=T.cmp=function(e,n){return M=1,i(this,new E(e,n))},T.decimalPlaces=T.dp=function(){var e,n,r=this.c;if(!r)return null;if(e=((n=r.length-1)-t(this.e/O))*O,n=r[n])for(;n%10==0;n/=10,e--);return 0>e&&(e=0),e},T.dividedBy=T.div=function(e,n){return M=3,C(this,new E(e,n),P,k)},T.dividedToIntegerBy=T.divToInt=function(e,n){return M=4,C(this,new E(e,n),0,1)},T.equals=T.eq=function(e,n){return M=5,0===i(this,new E(e,n))},T.floor=function(){return U(new E(this),this.e+1,3)},T.greaterThan=T.gt=function(e,n){return M=6,i(this,new E(e,n))>0},T.greaterThanOrEqualTo=T.gte=function(e,n){return M=7,1===(n=i(this,new E(e,n)))||0===n},T.isFinite=function(){return!!this.c},T.isInteger=T.isInt=function(){return!!this.c&&t(this.e/O)>this.c.length-2},T.isNaN=function(){return!this.s},T.isNegative=T.isNeg=function(){return this.s<0},T.isZero=function(){return!!this.c&&0==this.c[0]},T.lessThan=T.lt=function(e,n){return M=8,i(this,new E(e,n))<0},T.lessThanOrEqualTo=T.lte=function(e,n){return M=9,-1===(n=i(this,new E(e,n)))||0===n},T.minus=T.sub=function(e,n){var r,i,o,u,s=this,f=s.s;if(M=10,n=(e=new E(e,n)).s,!f||!n)return new E(NaN);if(f!=n)return e.s=-n,s.plus(e);var l=s.e/O,c=e.e/O,a=s.c,h=e.c;if(!l||!c){if(!a||!h)return a?(e.s=-n,e):new E(h?s:NaN);if(!a[0]||!h[0])return h[0]?(e.s=-n,e):new E(a[0]?s:3==k?-0:0)}if(l=t(l),c=t(c),a=a.slice(),f=l-c){for((u=0>f)?(f=-f,o=a):(c=l,o=h),o.reverse(),n=f;n--;o.push(0));o.reverse()}else for(i=(u=(f=a.length)<(n=h.length))?f:n,f=n=0;i>n;n++)if(a[n]!=h[n]){u=a[n]0)for(;n--;a[r++]=0);for(n=b-1;i>f;){if(a[--i]0?(s=u,r=l):(o=-o,r=f),r.reverse();o--;r.push(0));r.reverse()}for(0>(o=f.length)-(n=l.length)&&(r=l,l=f,f=r,n=o),o=0;n;)o=(f[--n]=f[n]+l[n]+o)/b|0,f[n]%=b;return o&&(f.unshift(o),++s),I(e,f,s)},T.precision=T.sd=function(e){var n,t,r=this,i=r.c;if(null!=e&&e!==!!e&&1!==e&&0!==e&&(j&&L(13,"argument"+m,e),e!=!!e&&(e=null)),!i)return null;if(n=(t=i.length-1)*O+1,t=i[t]){for(;t%10==0;t/=10,n--);for(t=i[0];t>=10;t/=10,n++);}return e&&r.e+1>n&&(n=r.e+1),n},T.round=function(e,n){var t=new E(this);return(null==e||H(e,0,A,15))&&U(t,~~e+this.e+1,null!=n&&H(n,0,8,15,w)?0|n:k),t},T.shift=function(e){var n=this;return H(e,-y,y,16,"argument")?n.times("1e"+c(e)):new E(n.c&&n.c[0]&&(-y>e||e>y)?n.s*(0>e?0:1/0):n)},T.squareRoot=T.sqrt=function(){var e,n,i,o,u,s=this,f=s.c,l=s.s,c=s.e,a=P+4,h=new E("0.5");if(1!==l||!f||!f[0])return new E(!l||0>l&&(!f||f[0])?NaN:f?s:1/0);if(0==(l=Math.sqrt(+s))||l==1/0?(((n=r(f)).length+c)%2==0&&(n+="0"),l=Math.sqrt(n),c=t((c+1)/2)-(0>c||c%2),l==1/0?n="1e"+c:n=(n=l.toExponential()).slice(0,n.indexOf("e")+1)+c,i=new E(n)):i=new E(l+""),i.c[0])for(3>(l=(c=i.e)+a)&&(l=0);;)if(u=i,i=h.times(u.plus(C(s,u,a,1))),r(u.c).slice(0,l)===(n=r(i.c)).slice(0,l)){if(i.el&&(d=N,N=y,y=d,o=l,l=h,h=o),o=l+h,d=[];o--;d.push(0));for(m=b,w=R,o=h;--o>=0;){for(r=0,g=y[o]%w,p=y[o]/w|0,u=o+(s=l);u>o;)r=((c=g*(c=N[--s]%w)+(f=p*c+(a=N[s]/w|0)*g)%w*w+d[u]+r)/m|0)+(f/w|0)+p*a,d[u--]=c%m;d[u]=r}return r?++i:d.shift(),I(e,d,i)},T.toDigits=function(e,n){var t=new E(this);return e=null!=e&&H(e,1,A,18,"precision")?0|e:null,n=null!=n&&H(n,0,8,18,w)?0|n:k,e?U(t,e,n):t},T.toExponential=function(e,n){return F(this,null!=e&&H(e,0,A,19)?1+~~e:null,n,19)},T.toFixed=function(e,n){return F(this,null!=e&&H(e,0,A,20)?~~e+this.e+1:null,n,20)},T.toFormat=function(e,n){var t=F(this,null!=e&&H(e,0,A,21)?~~e+this.e+1:null,n,21);if(this.c){var r,i=t.split("."),o=+X.groupSize,u=+X.secondaryGroupSize,s=X.groupSeparator,f=i[0],l=i[1],c=this.s<0,a=c?f.slice(1):f,h=a.length;if(u&&(r=o,o=u,u=r,h-=r),o>0&&h>0){for(r=h%o||o,f=a.substr(0,r);h>r;r+=o)f+=s+a.substr(r,o);u>0&&(f+=s+a.slice(r)),c&&(f="-"+f)}t=l?f+X.decimalSeparator+((u=+X.fractionGroupSize)?l.replace(new RegExp("\\d{"+u+"}\\B","g"),"$&"+X.fractionGroupSeparator):l):f}return t},T.toFraction=function(e){var n,t,i,o,u,s,f,l,c,a=j,h=this,g=h.c,p=new E(q),d=t=new E(q),m=f=new E(q);if(null!=e&&(j=!1,s=new E(e),j=a,(!(a=s.isInt())||s.lt(q))&&(j&&L(22,"max denominator "+(a?"out of range":"not an integer"),e),e=!a&&s.c&&U(s,s.e+1,1).gte(q)?s:null)),!g)return h.toString();for(c=r(g),o=p.e=c.length-h.e-1,p.c[0]=S[(u=o%O)<0?O+u:u],e=!e||s.cmp(p)>0?o>0?p:d:s,u=z,z=1/0,s=new E(c),f.c[0]=0;l=C(s,p,0,1),1!=(i=t.plus(l.times(m))).cmp(e);)t=m,m=i,d=f.plus(l.times(i=d)),f=i,p=s.minus(l.times(i=p)),s=i;return i=C(e.minus(t),m,0,1),f=f.plus(i.times(d)),t=t.plus(i.times(m)),f.s=d.s=h.s,n=C(d,m,o*=2,k).minus(h).abs().cmp(C(f,t,o,k).minus(h).abs())<1?[d.toString(),m.toString()]:[f.toString(),t.toString()],z=u,n},T.toNumber=function(){return+this},T.toPower=T.pow=function(e){var n,t,r=d(0>e?-e:+e),i=this;if(!H(e,-y,y,23,"exponent")&&(!isFinite(e)||r>y&&(e/=0)||parseFloat(e)!=e&&!(e=NaN)))return new E(Math.pow(+i,e));for(n=J?p(J/O+2):0,t=new E(q);;){if(r%2){if(!(t=t.times(i)).c)break;n&&t.c.length>n&&(t.c.length=n)}if(!(r=d(r/2)))break;i=i.times(i),n&&i.c&&i.c.length>n&&(i.c.length=n)}return 0>e&&(t=q.div(t)),n?U(t,J,k):t},T.toPrecision=function(e,n){return F(this,null!=e&&H(e,1,A,24,"precision")?0|e:null,n,24)},T.toString=function(e){var n,t=this,i=t.s,o=t.e;return null===o?i?(n="Infinity",0>i&&(n="-"+n)):n="NaN":(n=r(t.c),n=null!=e&&H(e,2,64,25,"base")?D(l(n,o),0|e,10,i):B>=o||o>=$?f(n,o):l(n,o),0>i&&t.c[0]&&(n="-"+n)),n},T.truncated=T.trunc=function(){return U(new E(this),this.e+1,1)},T.valueOf=T.toJSON=function(){var e,n=this,t=n.e;return null===t?n.toString():(e=r(n.c),e=B>=t||t>=$?f(e,t):l(e,t),n.s<0?"-"+e:e)},null!=e&&E.config(e),E}function t(e){var n=0|e;return e>0||e===n?n:n-1}function r(e){for(var n,t,r=1,i=e.length,o=e[0]+"";i>r;){for(n=e[r++]+"",t=O-n.length;t--;n="0"+n);o+=n}for(i=o.length;48===o.charCodeAt(--i););return o.slice(0,i+1||1)}function i(e,n){var t,r,i=e.c,o=n.c,u=e.s,s=n.s,f=e.e,l=n.e;if(!u||!s)return null;if(t=i&&!i[0],r=o&&!o[0],t||r)return t?r?0:-s:u;if(u!=s)return u;if(t=0>u,r=f==l,!i||!o)return r?0:!i^t?1:-1;if(!r)return f>l^t?1:-1;for(s=(f=i.length)<(l=o.length)?f:l,u=0;s>u;u++)if(i[u]!=o[u])return i[u]>o[u]^t?1:-1;return f==l?0:f>l^t?1:-1}function o(e,n,t){return(e=c(e))>=n&&t>=e}function u(e){return"[object Array]"==Object.prototype.toString.call(e)}function s(e,n,t){for(var r,i,o=[0],u=0,s=e.length;s>u;){for(i=o.length;i--;o[i]*=n);for(o[r=0]+=N.indexOf(e.charAt(u++));rt-1&&(null==o[r+1]&&(o[r+1]=0),o[r+1]+=o[r]/t|0,o[r]%=t)}return o.reverse()}function f(e,n){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(0>n?"e":"e+")+n}function l(e,n){var t,r;if(0>n){for(r="0.";++n;r+="0");e=r+e}else if(++n>(t=e.length)){for(r="0",n-=t;--n;r+="0");e+=r}else t>n&&(e=e.slice(0,n)+"."+e.slice(n));return e}function c(e){return 0>(e=parseFloat(e))?p(e):d(e)}var a,h,g=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,p=Math.ceil,d=Math.floor,m=" not a boolean or binary digit",w="rounding mode",v="number type has more than 15 significant digits",N="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_",b=1e14,O=14,y=9007199254740991,S=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],R=1e7,A=1e9;if("undefined"!=typeof crypto&&(a=crypto),define.amd)define((function(){return n()}));else if("undefined"!=typeof module&&module.exports){if(module.exports=n(),!a)try{a=require("crypto")}catch(E){}}else e||(e=void 0!==self?self:Function("return this")()),e.BigNumber=n()}(this)}($nesting[0],$$("Numeric"))},Opal.modules.bigdecimal=function(Opal){var self=Opal.top,$nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$klass=Opal.klass,$module=Opal.module,$def=Opal.def,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$defs=(Opal.hash,Opal.defs),$const_set=Opal.const_set,$truthy=Opal.truthy,$eqeqeq=Opal.eqeqeq,$send2=Opal.send2,$find_super=Opal.find_super,$rb_lt=Opal.rb_lt,$to_ary=Opal.to_ary,$rb_gt=Opal.rb_gt,$rb_ge=Opal.rb_ge,$eqeq=Opal.eqeq,$rb_divide=Opal.rb_divide,$alias=Opal.alias;return Opal.add_stubs("require,allocate,initialize,warn,BigDecimal,===,attr_reader,new,class,bignumber,nan?,nil?,raise,<,coerce,>,mode,>=,==,/,zero?,infinite?,finite?"),$klass($nesting[0],$$("Numeric"),"BigDecimal"),self.$require("js"),self.$require("bigdecimal/bignumber"),function($base,$parent_nesting){var self=$module($base,"Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$BigDecimal",(function(initial,digits){var bigdecimal=nil;return null==digits&&(digits=0),(bigdecimal=$$("BigDecimal").$allocate()).$initialize(initial,digits),bigdecimal}),-2)}($nesting[0],$nesting),$defs($$("BigDecimal"),"$new",(function($a,$b){var $post_args,$kwargs,args,kwargs,self=this;if($post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return args=$post_args,kwargs=Opal.kwrestargs($kwargs,{}),self.$warn("BigDecimal.new is deprecated; use BigDecimal() method instead.",$hash2(["uplevel"],{uplevel:1})),$send(self,"BigDecimal",$to_a(args).concat([Opal.to_hash(kwargs)]))}),-1),function($base,$super,$parent_nesting){var self=$klass($base,$super,"BigDecimal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"ROUND_MODE",256),$const_set($nesting[0],"ROUND_UP",0),$const_set($nesting[0],"ROUND_DOWN",1),$const_set($nesting[0],"ROUND_CEILING",2),$const_set($nesting[0],"ROUND_FLOOR",3),$const_set($nesting[0],"ROUND_HALF_UP",4),$const_set($nesting[0],"ROUND_HALF_DOWN",5),$const_set($nesting[0],"ROUND_HALF_EVEN",6),$const_set($nesting[0],"SIGN_NaN",0),$const_set($nesting[0],"SIGN_POSITIVE_ZERO",1),$const_set($nesting[0],"SIGN_NEGATIVE_ZERO",-1),$const_set($nesting[0],"SIGN_POSITIVE_FINITE",2),$const_set($nesting[0],"SIGN_NEGATIVE_FINITE",-2),$const_set($nesting[0],"SIGN_POSITIVE_INFINITE",3),$const_set($nesting[0],"SIGN_NEGATIVE_INFINITE",-3),$defs(self,"$limit",(function(digits){return null==this.digits&&(this.digits=nil),null==digits&&(digits=nil),$truthy(digits)&&(this.digits=digits),this.digits}),-1),$defs(self,"$mode",(function(mode,value){var $ret_or_2=nil;return null==this.round_mode&&(this.round_mode=nil),null==value&&(value=nil),$eqeqeq($$("ROUND_MODE"),mode)?($truthy(value)&&(this.round_mode=value),$truthy($ret_or_2=this.round_mode)?$ret_or_2:$$("ROUND_HALF_UP")):nil}),-2),self.$attr_reader("bignumber"),$def(self,"$initialize",(function(initial,digits){return null==digits&&(digits=0),this.bignumber=$$("JS").$new($$("BigNumber"),initial)}),-2),$def(self,"$==",(function(other){var $ret_or_1;return $eqeqeq(this.$class(),$ret_or_1=other)?this.$bignumber().equals(other.$bignumber()):!!$eqeqeq($$("Number"),$ret_or_1)&&this.$bignumber().equals(other)}),1),$def(self,"$<=>",(function(other){var result,$ret_or_1;return null===(result=$eqeqeq(this.$class(),$ret_or_1=other)?this.$bignumber().comparedTo(other.$bignumber()):$eqeqeq($$("Number"),$ret_or_1)?this.$bignumber().comparedTo(other):nil)?nil:result}),1),$def(self,"$<",(function $BigDecimal_$lt$4(other){var $yield=$BigDecimal_$lt$4.$$p||nil;return delete $BigDecimal_$lt$4.$$p,!($truthy(this["$nan?"]())||$truthy(other)&&$truthy(other["$nan?"]()))&&$send2(this,$find_super(this,"<",$BigDecimal_$lt$4,!1,!0),"<",[other],$yield)}),1),$def(self,"$<=",(function $BigDecimal_$lt_eq$5(other){var $yield=$BigDecimal_$lt_eq$5.$$p||nil;return delete $BigDecimal_$lt_eq$5.$$p,!($truthy(this["$nan?"]())||$truthy(other)&&$truthy(other["$nan?"]()))&&$send2(this,$find_super(this,"<=",$BigDecimal_$lt_eq$5,!1,!0),"<=",[other],$yield)}),1),$def(self,"$>",(function $BigDecimal_$gt$6(other){var $yield=$BigDecimal_$gt$6.$$p||nil;return delete $BigDecimal_$gt$6.$$p,!($truthy(this["$nan?"]())||$truthy(other)&&$truthy(other["$nan?"]()))&&$send2(this,$find_super(this,">",$BigDecimal_$gt$6,!1,!0),">",[other],$yield)}),1),$def(self,"$>=",(function $BigDecimal_$gt_eq$7(other){var $yield=$BigDecimal_$gt_eq$7.$$p||nil;return delete $BigDecimal_$gt_eq$7.$$p,!($truthy(this["$nan?"]())||$truthy(other)&&$truthy(other["$nan?"]()))&&$send2(this,$find_super(this,">=",$BigDecimal_$gt_eq$7,!1,!0),">=",[other],$yield)}),1),$def(self,"$abs",(function(){return this.$class().$new(this.$bignumber().abs())}),0),$def(self,"$add",(function(other,digits){var $a,$b,result=nil;return null==digits&&(digits=0),$truthy(digits["$nil?"]())&&this.$raise($$("TypeError"),"wrong argument type nil (expected Fixnum)"),$truthy($rb_lt(digits,0))&&this.$raise($$("ArgumentError"),"argument must be positive"),$b=this.$coerce(other),other=null==($a=$to_ary($b))[0]?nil:$a[0],null==$a[1]?nil:$a[1],result=this.$bignumber().plus(other.$bignumber()),$truthy($rb_gt(digits,0))&&(result=result.toDigits(digits,this.$class().$mode($$("ROUND_MODE")))),this.$class().$new(result)}),-2),$def(self,"$ceil",(function(n){return null==n&&(n=nil),$truthy(this.$bignumber().isFinite())||this.$raise($$("FloatDomainError"),"Computation results to 'Infinity'"),$truthy(n["$nil?"]())?this.$bignumber().round(0,$$("ROUND_CEILING")).toNumber():$truthy($rb_ge(n,0))?this.$class().$new(this.$bignumber().round(n,$$("ROUND_CEILING"))):this.$class().$new(this.$bignumber().round(0,$$("ROUND_CEILING")))}),-1),$def(self,"$coerce",(function(other){var $ret_or_1;return $eqeqeq(this.$class(),$ret_or_1=other)?[other,this]:$eqeqeq($$("Number"),$ret_or_1)?[this.$class().$new(other),this]:this.$raise($$("TypeError"),other.$class()+" can't be coerced into "+this.$class())}),1),$def(self,"$div",(function(other,digits){var $a,$b;return null==digits&&(digits=nil),$eqeq(digits,0)?$rb_divide(this,other):($b=this.$coerce(other),other=null==($a=$to_ary($b))[0]?nil:$a[0],null==$a[1]?nil:$a[1],($truthy(this["$nan?"]())||$truthy(other["$nan?"]()))&&this.$raise($$("FloatDomainError"),"Computation results to 'NaN'(Not a Number)"),$truthy(digits["$nil?"]())?($truthy(other["$zero?"]())&&this.$raise($$("ZeroDivisionError"),"divided by 0"),$truthy(this["$infinite?"]())&&this.$raise($$("FloatDomainError"),"Computation results to 'Infinity'"),this.$class().$new(this.$bignumber().dividedToIntegerBy(other.$bignumber()))):this.$class().$new(this.$bignumber().dividedBy(other.$bignumber()).round(digits,this.$class().$mode($$("ROUND_MODE")))))}),-2),$def(self,"$finite?",(function(){return this.$bignumber().isFinite()}),0),$def(self,"$infinite?",(function(){return $truthy(this["$finite?"]())||$truthy(this["$nan?"]())?nil:$truthy(this.$bignumber().isNegative())?-1:1}),0),$def(self,"$minus",(function(other){var $a,$b;return $b=this.$coerce(other),other=null==($a=$to_ary($b))[0]?nil:$a[0],null==$a[1]?nil:$a[1],this.$class().$new(this.$bignumber().minus(other.$bignumber()))}),1),$def(self,"$mult",(function(other,digits){var $a,$b;return null==digits&&(digits=nil),$b=this.$coerce(other),other=null==($a=$to_ary($b))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$truthy(digits["$nil?"]())?this.$class().$new(this.$bignumber().times(other.$bignumber())):this.$class().$new(this.$bignumber().times(other.$bignumber()).round(digits,this.$class().$mode($$("ROUND_MODE"))))}),-2),$def(self,"$nan?",(function(){return this.$bignumber().isNaN()}),0),$def(self,"$quo",(function(other){var $a,$b;return $b=this.$coerce(other),other=null==($a=$to_ary($b))[0]?nil:$a[0],null==$a[1]?nil:$a[1],this.$class().$new(this.$bignumber().dividedBy(other.$bignumber()))}),1),$def(self,"$sign",(function(){return $truthy(this.$bignumber().isNaN())?$$("SIGN_NaN"):$truthy(this.$bignumber().isZero())?$truthy(this.$bignumber().isNegative())?$$("SIGN_NEGATIVE_ZERO"):$$("SIGN_POSITIVE_ZERO"):nil}),0),$def(self,"$sub",(function(other,precision){var $a,$b;return $b=this.$coerce(other),other=null==($a=$to_ary($b))[0]?nil:$a[0],null==$a[1]?nil:$a[1],this.$class().$new(this.$bignumber().minus(other.$bignumber()))}),2),$def(self,"$to_f",(function(){return this.$bignumber().toNumber()}),0),$def(self,"$to_s",(function(s){return null==s&&(s=""),this.$bignumber().toString()}),-1),$def(self,"$zero?",(function(){return this.$bignumber().isZero()}),0),$alias(self,"===","=="),$alias(self,"+","add"),$alias(self,"-","minus"),$alias(self,"*","mult"),$alias(self,"/","quo"),$alias(self,"inspect","to_s")}($nesting[0],$$("Numeric"),$nesting)}; diff --git a/opal/1.4.1/bigdecimal.min.js.gz b/opal/1.4.1/bigdecimal.min.js.gz new file mode 100644 index 00000000..8ecf64b4 Binary files /dev/null and b/opal/1.4.1/bigdecimal.min.js.gz differ diff --git a/opal/1.4.1/buffer.js b/opal/1.4.1/buffer.js new file mode 100644 index 00000000..8df378bc --- /dev/null +++ b/opal/1.4.1/buffer.js @@ -0,0 +1,1282 @@ +Opal.modules["native"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $defs = Opal.defs, $truthy = Opal.truthy, $send = Opal.send, $Kernel = Opal.Kernel, $hash2 = Opal.hash2, $range = Opal.range, $to_a = Opal.to_a, $def = Opal.def, $alias = Opal.alias, $klass = Opal.klass, $rb_minus = Opal.rb_minus, $send2 = Opal.send2, $find_super = Opal.find_super, $eqeqeq = Opal.eqeqeq, $rb_ge = Opal.rb_ge, $gvars = Opal.gvars; + + Opal.add_stubs('try_convert,native?,respond_to?,to_n,raise,inspect,Native,proc,map!,end_with?,define_method,[],convert,call,to_proc,new,each,native_reader,native_writer,extend,warn,include,is_a?,map,to_a,_Array,method_missing,bind,instance_method,slice,-,length,[]=,enum_for,===,>=,<<,each_pair,method_defined?,_initialize,name,native_module'); + + (function($base, $parent_nesting) { + var self = $module($base, 'Native'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs(self, '$is_a?', function $Native_is_a$ques$1(object, klass) { + var self = this; + + + try { + return object instanceof self.$try_convert(klass); + } + catch (e) { + return false; + } + + }, 2); + $defs(self, '$try_convert', function $$try_convert(value, default$) { + var self = this; + + + + if (default$ == null) default$ = nil;; + + if (self['$native?'](value)) { + return value; + } + else if (value['$respond_to?']("to_n")) { + return value.$to_n(); + } + else { + return default$; + } + ; + }, -2); + $defs(self, '$convert', function $$convert(value) { + var self = this; + + + if (self['$native?'](value)) { + return value; + } + else if (value['$respond_to?']("to_n")) { + return value.$to_n(); + } + else { + self.$raise($$('ArgumentError'), "" + (value.$inspect()) + " isn't native"); + } + + }, 1); + $defs(self, '$call', function $$call(obj, key, $a) { + var block = $$call.$$p || nil, $post_args, args, self = this; + + delete $$call.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 2); + + args = $post_args;; + + var prop = obj[key]; + + if (prop instanceof Function) { + var converted = new Array(args.length); + + for (var i = 0, l = args.length; i < l; i++) { + var item = args[i], + conv = self.$try_convert(item); + + converted[i] = conv === nil ? item : conv; + } + + if (block !== nil) { + converted.push(block); + } + + return self.$Native(prop.apply(obj, converted)); + } + else { + return self.$Native(prop); + } + ; + }, -3); + $defs(self, '$proc', function $$proc() { + var block = $$proc.$$p || nil, self = this; + + delete $$proc.$$p; + + ; + if (!$truthy(block)) { + self.$raise($$('LocalJumpError'), "no block given") + }; + return $send($Kernel, 'proc', [], function $$2($a){var $post_args, args, self = $$2.$$s == null ? this : $$2.$$s, instance = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + $send(args, 'map!', [], function $$3(arg){var self = $$3.$$s == null ? this : $$3.$$s; + + + + if (arg == null) arg = nil;; + return self.$Native(arg);}, {$$arity: 1, $$s: self}); + instance = self.$Native(this); + + // if global is current scope, run the block in the scope it was defined + if (this === Opal.global) { + return block.apply(self, args); + } + + var self_ = block.$$s; + block.$$s = null; + + try { + return block.apply(instance, args); + } + finally { + block.$$s = self_; + } + ;}, {$$arity: -1, $$s: self}); + }, 0); + (function($base, $parent_nesting) { + var self = $module($base, 'Helpers'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$alias_native', function $$alias_native(new$, $a, $b) { + var $post_args, $kwargs, old, as, $yield = $$alias_native.$$p || nil, self = this; + + delete $$alias_native.$$p; + + + $post_args = Opal.slice.call(arguments, 1); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if ($post_args.length > 0) old = $post_args.shift(); + if (old == null) old = new$;; + + as = $kwargs.$$smap["as"]; + if (as == null) as = nil; + if ($truthy(old['$end_with?']("="))) { + return $send(self, 'define_method', [new$], function $$4(value){var self = $$4.$$s == null ? this : $$4.$$s; + if (self["native"] == null) self["native"] = nil; + + + + if (value == null) value = nil;; + self["native"][old['$[]']($range(0, -2, false))] = $$('Native').$convert(value); + return value;}, {$$arity: 1, $$s: self}) + } else if ($truthy(as)) { + return $send(self, 'define_method', [new$], function $$5($c){var block = $$5.$$p || nil, $post_args, args, self = $$5.$$s == null ? this : $$5.$$s, value = nil; + if (self["native"] == null) self["native"] = nil; + + delete $$5.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + value = $send($$('Native'), 'call', [self["native"], old].concat($to_a(args)), block.$to_proc()); + if ($truthy(value)) { + return as.$new(value.$to_n()) + } else { + return nil + };}, {$$arity: -1, $$s: self}) + } else { + return $send(self, 'define_method', [new$], function $$6($c){var block = $$6.$$p || nil, $post_args, args, self = $$6.$$s == null ? this : $$6.$$s; + if (self["native"] == null) self["native"] = nil; + + delete $$6.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send($$('Native'), 'call', [self["native"], old].concat($to_a(args)), block.$to_proc());}, {$$arity: -1, $$s: self}) + }; + }, -2); + + $def(self, '$native_reader', function $$native_reader($a) { + var $post_args, names, self = this; + + + + $post_args = Opal.slice.call(arguments); + + names = $post_args;; + return $send(names, 'each', [], function $$7(name){var self = $$7.$$s == null ? this : $$7.$$s; + + + + if (name == null) name = nil;; + return $send(self, 'define_method', [name], function $$8(){var self = $$8.$$s == null ? this : $$8.$$s; + if (self["native"] == null) self["native"] = nil; + + return self.$Native(self["native"][name])}, {$$arity: 0, $$s: self});}, {$$arity: 1, $$s: self}); + }, -1); + + $def(self, '$native_writer', function $$native_writer($a) { + var $post_args, names, self = this; + + + + $post_args = Opal.slice.call(arguments); + + names = $post_args;; + return $send(names, 'each', [], function $$9(name){var self = $$9.$$s == null ? this : $$9.$$s; + + + + if (name == null) name = nil;; + return $send(self, 'define_method', ["" + (name) + "="], function $$10(value){var self = $$10.$$s == null ? this : $$10.$$s; + if (self["native"] == null) self["native"] = nil; + + + + if (value == null) value = nil;; + return self.$Native(self["native"][name] = value);}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + }, -1); + return $def(self, '$native_accessor', function $$native_accessor($a) { + var $post_args, names, self = this; + + + + $post_args = Opal.slice.call(arguments); + + names = $post_args;; + $send(self, 'native_reader', $to_a(names)); + return $send(self, 'native_writer', $to_a(names)); + }, -1); + })($nesting[0], $nesting); + (function($base, $parent_nesting) { + var self = $module($base, 'Wrapper'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$initialize', function $$initialize(native$) { + var self = this; + + + if (!$truthy($Kernel['$native?'](native$))) { + $Kernel.$raise($$('ArgumentError'), "" + (native$.$inspect()) + " isn't native") + }; + return (self["native"] = native$); + }, 1); + + $def(self, '$to_n', function $$to_n() { + var self = this; + if (self["native"] == null) self["native"] = nil; + + return self["native"] + }, 0); + return $defs(self, '$included', function $$included(klass) { + + return klass.$extend($$('Helpers')) + }, 1); + })($nesting[0], $nesting); + return $defs(self, '$included', function $$included(base) { + var self = this; + + + self.$warn("Including ::Native is deprecated. Please include Native::Wrapper instead."); + return base.$include($$('Wrapper')); + }, 1); + })($nesting[0], $nesting); + (function($base, $parent_nesting) { + var self = $module($base, 'Kernel'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$native?', function $Kernel_native$ques$11(value) { + + return value == null || !value.$$class; + }, 1); + + $def(self, '$Native', function $$Native(obj) { + var $yield = $$Native.$$p || nil, self = this; + + delete $$Native.$$p; + if ($truthy(obj == null)) { + return nil + } else if ($truthy(self['$native?'](obj))) { + return $$$($$('Native'), 'Object').$new(obj) + } else if ($truthy(obj['$is_a?']($$('Array')))) { + return $send(obj, 'map', [], function $$12(o){var self = $$12.$$s == null ? this : $$12.$$s; + + + + if (o == null) o = nil;; + return self.$Native(o);}, {$$arity: 1, $$s: self}) + } else if ($truthy(obj['$is_a?']($$('Proc')))) { + return $send(self, 'proc', [], function $$13($a){var block = $$13.$$p || nil, $post_args, args, self = $$13.$$s == null ? this : $$13.$$s; + + delete $$13.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return self.$Native($send(obj, 'call', $to_a(args), block.$to_proc()));}, {$$arity: -1, $$s: self}) + } else { + return obj + } + }, 1); + $alias(self, "_Array", "Array"); + return $def(self, '$Array', function $$Array(object, $a) { + var block = $$Array.$$p || nil, $post_args, args, self = this; + + delete $$Array.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + if ($truthy(self['$native?'](object))) { + return $send($$$($$('Native'), 'Array'), 'new', [object].concat($to_a(args)), block.$to_proc()).$to_a() + }; + return self.$_Array(object); + }, -2); + })($nesting[0], $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'Object'); + + var $proto = self.$$prototype; + + $proto["native"] = nil; + + self.$include($$$($$$('Native'), 'Wrapper')); + + $def(self, '$==', function $Object_$eq_eq$14(other) { + var self = this; + + return self["native"] === $$$('Native').$try_convert(other) + }, 1); + + $def(self, '$has_key?', function $Object_has_key$ques$15(name) { + var self = this; + + return Opal.hasOwnProperty.call(self["native"], name) + }, 1); + + $def(self, '$each', function $$each($a) { + var $post_args, args, $yield = $$each.$$p || nil, self = this; + + delete $$each.$$p; + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if (($yield !== nil)) { + + + for (var key in self["native"]) { + Opal.yieldX($yield, [key, self["native"][key]]) + } + ; + return self; + } else { + return $send(self, 'method_missing', ["each"].concat($to_a(args))) + }; + }, -1); + + $def(self, '$[]', function $Object_$$$16(key) { + var self = this; + + + var prop = self["native"][key]; + + if (prop instanceof Function) { + return prop; + } + else { + return $$$('Native').$call(self["native"], key) + } + + }, 1); + + $def(self, '$[]=', function $Object_$$$eq$17(key, value) { + var self = this, native$ = nil; + + + native$ = $$$('Native').$try_convert(value); + if ($truthy(native$ === nil)) { + return self["native"][key] = value + } else { + return self["native"][key] = native$ + }; + }, 2); + + $def(self, '$merge!', function $Object_merge$excl$18(other) { + var self = this; + + + + other = $$$('Native').$convert(other); + + for (var prop in other) { + self["native"][prop] = other[prop]; + } + ; + return self; + }, 1); + + $def(self, '$respond_to?', function $Object_respond_to$ques$19(name, include_all) { + var self = this; + + + + if (include_all == null) include_all = false;; + return $Kernel.$instance_method("respond_to?").$bind(self).$call(name, include_all); + }, -2); + + $def(self, '$respond_to_missing?', function $Object_respond_to_missing$ques$20(name, include_all) { + var self = this; + + + + if (include_all == null) include_all = false;; + return Opal.hasOwnProperty.call(self["native"], name); + }, -2); + + $def(self, '$method_missing', function $$method_missing(mid, $a) { + var block = $$method_missing.$$p || nil, $post_args, args, self = this, $writer = nil; + + delete $$method_missing.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + + if (mid.charAt(mid.length - 1) === '=') { + return (($writer = [mid.$slice(0, $rb_minus(mid.$length(), 1)), args['$[]'](0)]), $send(self, '[]=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)]); + } + else { + return $send($$$('Native'), 'call', [self["native"], mid].concat($to_a(args)), block.$to_proc()); + } + ; + }, -2); + + $def(self, '$nil?', function $Object_nil$ques$21() { + + return false + }, 0); + + $def(self, '$is_a?', function $Object_is_a$ques$22(klass) { + var self = this; + + return Opal.is_a(self, klass); + }, 1); + + $def(self, '$instance_of?', function $Object_instance_of$ques$23(klass) { + var self = this; + + return self.$$class === klass; + }, 1); + + $def(self, '$class', function $Object_class$24() { + var self = this; + + return self.$$class; + }, 0); + + $def(self, '$to_a', function $$to_a(options) { + var block = $$to_a.$$p || nil, self = this; + + delete $$to_a.$$p; + + ; + + if (options == null) options = $hash2([], {});; + return $send($$$($$$('Native'), 'Array'), 'new', [self["native"], options], block.$to_proc()).$to_a(); + }, -1); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return "#" + }, 0); + $alias(self, "include?", "has_key?"); + $alias(self, "key?", "has_key?"); + $alias(self, "kind_of?", "is_a?"); + return $alias(self, "member?", "has_key?"); + })($$('Native'), $$('BasicObject')); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Array'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.named = $proto["native"] = $proto.get = $proto.block = $proto.set = $proto.length = nil; + + self.$include($$$($$('Native'), 'Wrapper')); + self.$include($$('Enumerable')); + + $def(self, '$initialize', function $$initialize(native$, options) { + var block = $$initialize.$$p || nil, self = this, $ret_or_1 = nil; + + delete $$initialize.$$p; + + ; + + if (options == null) options = $hash2([], {});; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [native$], null); + self.get = ($truthy(($ret_or_1 = options['$[]']("get"))) ? ($ret_or_1) : (options['$[]']("access"))); + self.named = options['$[]']("named"); + self.set = ($truthy(($ret_or_1 = options['$[]']("set"))) ? ($ret_or_1) : (options['$[]']("access"))); + self.length = ($truthy(($ret_or_1 = options['$[]']("length"))) ? ($ret_or_1) : ("length")); + self.block = block; + if ($truthy(self.$length() == null)) { + return self.$raise($$('ArgumentError'), "no length found on the array-like object") + } else { + return nil + }; + }, -2); + + $def(self, '$each', function $$each() { + var block = $$each.$$p || nil, self = this; + + delete $$each.$$p; + + ; + if (!$truthy(block)) { + return self.$enum_for("each") + }; + + for (var i = 0, length = self.$length(); i < length; i++) { + Opal.yield1(block, self['$[]'](i)); + } + ; + return self; + }, 0); + + $def(self, '$[]', function $Array_$$$25(index) { + var self = this, result = nil, $ret_or_1 = nil; + + + result = (($eqeqeq($$('String'), ($ret_or_1 = index)) || ($eqeqeq($$('Symbol'), $ret_or_1))) ? (($truthy(self.named) ? (self["native"][self.named](index)) : (self["native"][index]))) : ($eqeqeq($$('Integer'), $ret_or_1) ? (($truthy(self.get) ? (self["native"][self.get](index)) : (self["native"][index]))) : (nil))); + if ($truthy(result)) { + if ($truthy(self.block)) { + return self.block.$call(result) + } else { + return self.$Native(result) + } + } else { + return nil + }; + }, 1); + + $def(self, '$[]=', function $Array_$$$eq$26(index, value) { + var self = this; + + if ($truthy(self.set)) { + return self["native"][self.set](index, $$('Native').$convert(value)) + } else { + return self["native"][index] = $$('Native').$convert(value) + } + }, 2); + + $def(self, '$last', function $$last(count) { + var $a, self = this, index = nil, result = nil; + + + + if (count == null) count = nil;; + if ($truthy(count)) { + + index = $rb_minus(self.$length(), 1); + result = []; + while ($truthy($rb_ge(index, 0))) { + + result['$<<'](self['$[]'](index)); + index = $rb_minus(index, 1); + }; + return result; + } else { + return self['$[]']($rb_minus(self.$length(), 1)) + }; + }, -1); + + $def(self, '$length', function $$length() { + var self = this; + + return self["native"][self.length] + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return self.$to_a().$inspect() + }, 0); + return $alias(self, "to_ary", "to_a"); + })($$('Native'), null, $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'Numeric'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.valueOf(); + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Proc'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'String'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.valueOf(); + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Regexp'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.valueOf(); + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'MatchData'); + + var $proto = self.$$prototype; + + $proto.matches = nil; + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.matches + }, 0) + })($nesting[0], null); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Struct'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$to_n', function $$to_n() { + var self = this, result = nil; + + + result = {}; + $send(self, 'each_pair', [], function $$27(name, value){ + + + if (name == null) name = nil;; + + if (value == null) value = nil;; + return result[name] = $$('Native').$try_convert(value, value);}, 2); + return result; + }, 0) + })($nesting[0], null, $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Array'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + + var result = []; + + for (var i = 0, length = self.length; i < length; i++) { + var obj = self[i]; + + result.push($$('Native').$try_convert(obj, obj)); + } + + return result; + + }, 0) + })($nesting[0], null, $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'Boolean'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.valueOf(); + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Time'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'NilClass'); + + + return $def(self, '$to_n', function $$to_n() { + + return null; + }, 0) + })($nesting[0], null); + if (!$truthy($$('Hash')['$method_defined?']("_initialize"))) { + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Hash'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $alias(self, "_initialize", "initialize"); + + $def(self, '$initialize', function $$initialize(defaults) { + var block = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + ; + ; + + if (defaults != null && + (defaults.constructor === undefined || + defaults.constructor === Object)) { + var smap = self.$$smap, + keys = self.$$keys, + key, value; + + for (key in defaults) { + value = defaults[key]; + + if (value && + (value.constructor === undefined || + value.constructor === Object)) { + smap[key] = $$('Hash').$new(value); + } else if (value && value.$$is_array) { + value = value.map(function(item) { + if (item && + (item.constructor === undefined || + item.constructor === Object)) { + return $$('Hash').$new(item); + } + + return self.$Native(item); + }); + smap[key] = value + } else { + smap[key] = self.$Native(value); + } + + keys.push(key); + } + + return self; + } + + return $send(self, '_initialize', [defaults], block.$to_proc()); + ; + }, -1); + return $def(self, '$to_n', function $$to_n() { + var self = this; + + + var result = {}, + keys = self.$$keys, + smap = self.$$smap, + key, value; + + for (var i = 0, length = keys.length; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = smap[key]; + } else { + key = key.key; + value = key.value; + } + + result[key] = $$('Native').$try_convert(value, value); + } + + return result; + + }, 0); + })($nesting[0], null, $nesting) + }; + (function($base, $super) { + var self = $klass($base, $super, 'Module'); + + + return $def(self, '$native_module', function $$native_module() { + var self = this; + + return Opal.global[self.$name()] = self + }, 0) + })($nesting[0], null); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Class'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$native_alias', function $$native_alias(new_jsid, existing_mid) { + var self = this; + + + var aliased = self.prototype['$' + existing_mid]; + if (!aliased) { + self.$raise($$('NameError').$new("undefined method `" + (existing_mid) + "' for class `" + (self.$inspect()) + "'", existing_mid)); + } + self.prototype[new_jsid] = aliased; + + }, 2); + return $def(self, '$native_class', function $$native_class() { + var self = this; + + + self.$native_module(); + return self["new"] = self.$new;; + }, 0); + })($nesting[0], null, $nesting); + return ($gvars.$ = ($gvars.global = self.$Native(Opal.global))); +}; + +Opal.modules["buffer/array"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $gvars = Opal.gvars, $defs = Opal.defs, $eqeq = Opal.eqeq, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $truthy = Opal.truthy, $alias = Opal.alias; + + Opal.add_stubs('include,[],name_for,attr_reader,==,for,to_n,enum_for'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Buffer'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Array'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto["native"] = nil; + + self.$include($$$($$('Native'), 'Wrapper')); + $defs(self, '$for', function $Array_for$1(bits, type) { + if ($gvars.$ == null) $gvars.$ = nil; + + return $gvars.$['$[]']("" + ($$('Buffer').$name_for(bits, type)) + "Array") + }, 2); + self.$include($$('Enumerable')); + self.$attr_reader("buffer", "type"); + + $def(self, '$initialize', function $$initialize(buffer, bits, type) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + if (bits == null) bits = nil;; + + if (type == null) type = nil;; + if ($eqeq($$('Native'), buffer)) { + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [buffer], null) + } else { + + var klass = $$('Array').$for(bits, type); + + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [new klass(buffer.$to_n())], null) + + }; + self.buffer = buffer; + return (self.type = type); + }, -2); + + $def(self, '$bits', function $$bits() { + var self = this; + + return self["native"].BYTES_PER_ELEMENT * 8 + }, 0); + + $def(self, '$[]', function $Array_$$$2(index, offset) { + var self = this; + + + + if (offset == null) offset = nil;; + if ($truthy(offset)) { + return self["native"].subarray(index, offset) + } else { + return self["native"][index] + }; + }, -2); + + $def(self, '$[]=', function $Array_$$$eq$3(index, value) { + var self = this; + + return self["native"][index] = value + }, 2); + + $def(self, '$bytesize', function $$bytesize() { + var self = this; + + return self["native"].byteLength + }, 0); + + $def(self, '$each', function $$each() { + var $yield = $$each.$$p || nil, self = this; + + delete $$each.$$p; + + if (!($yield !== nil)) { + return self.$enum_for("each") + }; + + for (var i = 0, length = self["native"].length; i < length; i++) { + Opal.yield1($yield, self["native"][i]) + } + ; + return self; + }, 0); + + $def(self, '$length', function $$length() { + var self = this; + + return self["native"].length + }, 0); + + $def(self, '$merge!', function $Array_merge$excl$4(other, offset) { + var self = this; + + + ; + return self["native"].set(other.$to_n(), offset); + }, -2); + return $alias(self, "size", "length"); + })($nesting[0], null, $nesting) + })($nesting[0], null, $nesting) +}; + +Opal.modules["buffer/view"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $gvars = Opal.gvars, $defs = Opal.defs, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $alias = Opal.alias; + + Opal.add_stubs('include,!,nil?,[],attr_reader,native?,to_n,name_for'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Buffer'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'View'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto["native"] = nil; + + self.$include($$$($$('Native'), 'Wrapper')); + $defs(self, '$supported?', function $View_supported$ques$1() { + if ($gvars.$ == null) $gvars.$ = nil; + + return $gvars.$['$[]']("DataView")['$nil?']()['$!']() + }, 0); + self.$attr_reader("buffer", "offset"); + + $def(self, '$initialize', function $$initialize(buffer, offset, length) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + if (offset == null) offset = nil;; + + if (length == null) length = nil;; + if ($truthy(self['$native?'](buffer))) { + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [buffer], null) + } else if (($truthy(offset) && ($truthy(length)))) { + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [new DataView(buffer.$to_n(), offset.$to_n(), length.$to_n())], null) + } else if ($truthy(offset)) { + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [new DataView(buffer.$to_n(), offset.$to_n())], null) + } else { + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [new DataView(buffer.$to_n())], null) + }; + self.buffer = buffer; + return (self.offset = offset); + }, -2); + + $def(self, '$length', function $$length() { + var self = this; + + return self["native"].byteLength + }, 0); + + $def(self, '$get', function $$get(offset, bits, type, little) { + var self = this; + + + + if (bits == null) bits = 8;; + + if (type == null) type = "unsigned";; + + if (little == null) little = false;; + return self["native"]["get" + $$('Buffer').$name_for(bits, type)](offset, little); + }, -2); + $alias(self, "[]", "get"); + + $def(self, '$set', function $$set(offset, value, bits, type, little) { + var self = this; + + + + if (bits == null) bits = 8;; + + if (type == null) type = "unsigned";; + + if (little == null) little = false;; + return self["native"]["set" + $$('Buffer').$name_for(bits, type)](offset, value, little); + }, -3); + $alias(self, "[]=", "set"); + + $def(self, '$get_int8', function $$get_int8(offset, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].getInt8(offset, little); + }, -2); + + $def(self, '$set_int8', function $$set_int8(offset, value, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].setInt8(offset, value, little); + }, -3); + + $def(self, '$get_uint8', function $$get_uint8(offset, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].getUint8(offset, little); + }, -2); + + $def(self, '$set_uint8', function $$set_uint8(offset, value, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].setUint8(offset, value, little); + }, -3); + + $def(self, '$get_int16', function $$get_int16(offset, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].getInt16(offset, little); + }, -2); + + $def(self, '$set_int16', function $$set_int16(offset, value, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].setInt16(offset, value, little); + }, -3); + + $def(self, '$get_uint16', function $$get_uint16(offset, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].getUint16(offset, little); + }, -2); + + $def(self, '$set_uint16', function $$set_uint16(offset, value, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].setUint16(offset, value, little); + }, -3); + + $def(self, '$get_int32', function $$get_int32(offset, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].getInt32(offset, little); + }, -2); + + $def(self, '$set_int32', function $$set_int32(offset, value, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].setInt32(offset, value, little); + }, -3); + + $def(self, '$get_uint32', function $$get_uint32(offset, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].getUint32(offset, little); + }, -2); + + $def(self, '$set_uint32', function $$set_uint32(offset, value, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].setUint32(offset, value, little); + }, -3); + + $def(self, '$get_float32', function $$get_float32(offset, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].getFloat32(offset, little); + }, -2); + + $def(self, '$set_float32', function $$set_float32(offset, value, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].setFloat32(offset, value, little); + }, -3); + + $def(self, '$get_float64', function $$get_float64(offset, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].getFloat64(offset, little); + }, -2); + + $def(self, '$set_float64', function $$set_float64(offset, value, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].setFloat64(offset, value, little); + }, -3); + return $alias(self, "size", "length"); + })($nesting[0], null, $nesting) + })($nesting[0], null, $nesting) +}; + +Opal.modules["buffer"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $gvars = Opal.gvars, $defs = Opal.defs, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $alias = Opal.alias; + + Opal.add_stubs('require,include,!,nil?,[],===,native?,new,pack,to_a'); + + self.$require("native"); + self.$require("buffer/array"); + self.$require("buffer/view"); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Buffer'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto["native"] = nil; + + self.$include($$$($$('Native'), 'Wrapper')); + $defs(self, '$supported?', function $Buffer_supported$ques$1() { + if ($gvars.$ == null) $gvars.$ = nil; + + return $gvars.$['$[]']("ArrayBuffer")['$nil?']()['$!']() + }, 0); + $defs(self, '$name_for', function $$name_for(bits, type) { + var part = nil, $ret_or_1 = nil; + + + part = ($eqeqeq("unsigned", ($ret_or_1 = type)) ? ("Uint") : ($eqeqeq("signed", $ret_or_1) ? ("Int") : ($eqeqeq("float", $ret_or_1) ? ("Float") : (nil)))); + return "" + (part) + (bits); + }, 2); + + $def(self, '$initialize', function $$initialize(size, bits) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + if (bits == null) bits = 8;; + if ($truthy(self['$native?'](size))) { + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [size], null) + } else { + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [new ArrayBuffer(size * (bits / 8))], null) + }; + }, -2); + + $def(self, '$length', function $$length() { + var self = this; + + return self["native"].byteLength + }, 0); + + $def(self, '$to_a', function $$to_a(bits, type) { + var self = this; + + + + if (bits == null) bits = 8;; + + if (type == null) type = "unsigned";; + return $$('Array').$new(self, bits, type); + }, -1); + + $def(self, '$view', function $$view(offset, length) { + var self = this; + + + + if (offset == null) offset = nil;; + + if (length == null) length = nil;; + return $$('View').$new(self, offset, length); + }, -1); + + $def(self, '$to_s', function $$to_s() { + var self = this; + + return self.$to_a().$to_a().$pack("c*") + }, 0); + return $alias(self, "size", "length"); + })($nesting[0], null, $nesting); +}; diff --git a/opal/1.4.1/buffer.min.js b/opal/1.4.1/buffer.min.js new file mode 100644 index 00000000..93d0c760 --- /dev/null +++ b/opal/1.4.1/buffer.min.js @@ -0,0 +1 @@ +Opal.modules.native=function(Opal){var self=Opal.top,$nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$defs=Opal.defs,$truthy=Opal.truthy,$send=Opal.send,$Kernel=Opal.Kernel,$hash2=Opal.hash2,$range=Opal.range,$to_a=Opal.to_a,$def=Opal.def,$alias=Opal.alias,$klass=Opal.klass,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super,$eqeqeq=Opal.eqeqeq,$rb_ge=Opal.rb_ge,$gvars=Opal.gvars;return Opal.add_stubs("try_convert,native?,respond_to?,to_n,raise,inspect,Native,proc,map!,end_with?,define_method,[],convert,call,to_proc,new,each,native_reader,native_writer,extend,warn,include,is_a?,map,to_a,_Array,method_missing,bind,instance_method,slice,-,length,[]=,enum_for,===,>=,<<,each_pair,method_defined?,_initialize,name,native_module"),function($base,$parent_nesting){var self=$module($base,"Native"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$defs(self,"$is_a?",(function(object,klass){try{return object instanceof this.$try_convert(klass)}catch(e){return!1}}),2),$defs(self,"$try_convert",(function(value,default$){return null==default$&&(default$=nil),this["$native?"](value)?value:value["$respond_to?"]("to_n")?value.$to_n():default$}),-2),$defs(self,"$convert",(function(value){return this["$native?"](value)?value:value["$respond_to?"]("to_n")?value.$to_n():void this.$raise($$("ArgumentError"),value.$inspect()+" isn't native")}),1),$defs(self,"$call",(function $$call(obj,key,$a){var args,block=$$call.$$p||nil,self=this;delete $$call.$$p,args=Opal.slice.call(arguments,2);var prop=obj[key];if(prop instanceof Function){for(var converted=new Array(args.length),i=0,l=args.length;i0&&(old=$post_args.shift()),null==old&&(old=new$),null==(as=$kwargs.$$smap.as)&&(as=nil),$truthy(old["$end_with?"]("="))?$send(self,"define_method",[new$],(function $$4(value){var self=null==$$4.$$s?this:$$4.$$s;return null==self.native&&(self.native=nil),null==value&&(value=nil),self.native[old["$[]"]($range(0,-2,!1))]=$$("Native").$convert(value),value}),{$$arity:1,$$s:self}):$truthy(as)?$send(self,"define_method",[new$],(function $$5($c){var args,block=$$5.$$p||nil,self=null==$$5.$$s?this:$$5.$$s,value=nil;return null==self.native&&(self.native=nil),delete $$5.$$p,args=Opal.slice.call(arguments),value=$send($$("Native"),"call",[self.native,old].concat($to_a(args)),block.$to_proc()),$truthy(value)?as.$new(value.$to_n()):nil}),{$$arity:-1,$$s:self}):$send(self,"define_method",[new$],(function $$6($c){var args,block=$$6.$$p||nil,self=null==$$6.$$s?this:$$6.$$s;return null==self.native&&(self.native=nil),delete $$6.$$p,args=Opal.slice.call(arguments),$send($$("Native"),"call",[self.native,old].concat($to_a(args)),block.$to_proc())}),{$$arity:-1,$$s:self})}),-2),$def(self,"$native_reader",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each",[],(function $$7(name){var self=null==$$7.$$s?this:$$7.$$s;return null==name&&(name=nil),$send(self,"define_method",[name],(function $$8(){var self=null==$$8.$$s?this:$$8.$$s;return null==self.native&&(self.native=nil),self.$Native(self.native[name])}),{$$arity:0,$$s:self})}),{$$arity:1,$$s:self})}),-1),$def(self,"$native_writer",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each",[],(function $$9(name){var self=null==$$9.$$s?this:$$9.$$s;return null==name&&(name=nil),$send(self,"define_method",[name+"="],(function $$10(value){var self=null==$$10.$$s?this:$$10.$$s;return null==self.native&&(self.native=nil),null==value&&(value=nil),self.$Native(self.native[name]=value)}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:self})}),-1),$def(self,"$native_accessor",(function($a){var $post_args,names,self=this;return $post_args=Opal.slice.call(arguments),$send(self,"native_reader",$to_a(names=$post_args)),$send(self,"native_writer",$to_a(names))}),-1)}($nesting[0],$nesting),function($base,$parent_nesting){var self=$module($base,"Wrapper"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$initialize",(function(native$){return $truthy($Kernel["$native?"](native$))||$Kernel.$raise($$("ArgumentError"),native$.$inspect()+" isn't native"),this.native=native$}),1),$def(self,"$to_n",(function(){return null==this.native&&(this.native=nil),this.native}),0),$defs(self,"$included",(function(klass){return klass.$extend($$("Helpers"))}),1)}($nesting[0],$nesting),$defs(self,"$included",(function(base){return this.$warn("Including ::Native is deprecated. Please include Native::Wrapper instead."),base.$include($$("Wrapper"))}),1)}($nesting[0],$nesting),function($base,$parent_nesting){var self=$module($base,"Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$native?",(function(value){return null==value||!value.$$class}),1),$def(self,"$Native",(function $$Native(obj){return delete $$Native.$$p,$truthy(null==obj)?nil:$truthy(this["$native?"](obj))?$$$($$("Native"),"Object").$new(obj):$truthy(obj["$is_a?"]($$("Array")))?$send(obj,"map",[],(function $$12(o){return null==o&&(o=nil),(null==$$12.$$s?this:$$12.$$s).$Native(o)}),{$$arity:1,$$s:this}):$truthy(obj["$is_a?"]($$("Proc")))?$send(this,"proc",[],(function $$13($a){var args,block=$$13.$$p||nil,self=null==$$13.$$s?this:$$13.$$s;return delete $$13.$$p,args=Opal.slice.call(arguments),self.$Native($send(obj,"call",$to_a(args),block.$to_proc()))}),{$$arity:-1,$$s:this}):obj}),1),$alias(self,"_Array","Array"),$def(self,"$Array",(function $$Array(object,$a){var args,block=$$Array.$$p||nil,self=this;return delete $$Array.$$p,args=Opal.slice.call(arguments,1),$truthy(self["$native?"](object))?$send($$$($$("Native"),"Array"),"new",[object].concat($to_a(args)),block.$to_proc()).$to_a():self.$_Array(object)}),-2)}($nesting[0],$nesting),function($base,$super){var self=$klass($base,$super,"Object");self.$$prototype.native=nil,self.$include($$$($$$("Native"),"Wrapper")),$def(self,"$==",(function(other){return this.native===$$$("Native").$try_convert(other)}),1),$def(self,"$has_key?",(function(name){return Opal.hasOwnProperty.call(this.native,name)}),1),$def(self,"$each",(function $$each($a){var args,$yield=$$each.$$p||nil,self=this;if(delete $$each.$$p,args=Opal.slice.call(arguments),$yield!==nil){for(var key in self.native)Opal.yieldX($yield,[key,self.native[key]]);return self}return $send(self,"method_missing",["each"].concat($to_a(args)))}),-1),$def(self,"$[]",(function(key){var prop=this.native[key];return prop instanceof Function?prop:$$$("Native").$call(this.native,key)}),1),$def(self,"$[]=",(function(key,value){var native$;return native$=$$$("Native").$try_convert(value),$truthy(native$===nil)?this.native[key]=value:this.native[key]=native$}),2),$def(self,"$merge!",(function(other){for(var prop in other=$$$("Native").$convert(other))this.native[prop]=other[prop];return this}),1),$def(self,"$respond_to?",(function(name,include_all){return null==include_all&&(include_all=!1),$Kernel.$instance_method("respond_to?").$bind(this).$call(name,include_all)}),-2),$def(self,"$respond_to_missing?",(function(name,include_all){return null==include_all&&(include_all=!1),Opal.hasOwnProperty.call(this.native,name)}),-2),$def(self,"$method_missing",(function $$method_missing(mid,$a){var args,block=$$method_missing.$$p||nil,self=this,$writer=nil;return delete $$method_missing.$$p,args=Opal.slice.call(arguments,1),"="===mid.charAt(mid.length-1)?($writer=[mid.$slice(0,$rb_minus(mid.$length(),1)),args["$[]"](0)],$send(self,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):$send($$$("Native"),"call",[self.native,mid].concat($to_a(args)),block.$to_proc())}),-2),$def(self,"$nil?",(function(){return!1}),0),$def(self,"$is_a?",(function(klass){return Opal.is_a(this,klass)}),1),$def(self,"$instance_of?",(function(klass){return this.$$class===klass}),1),$def(self,"$class",(function(){return this.$$class}),0),$def(self,"$to_a",(function $$to_a(options){var block=$$to_a.$$p||nil;return delete $$to_a.$$p,null==options&&(options=$hash2([],{})),$send($$$($$$("Native"),"Array"),"new",[this.native,options],block.$to_proc()).$to_a()}),-1),$def(self,"$inspect",(function(){return"#"}),0),$alias(self,"include?","has_key?"),$alias(self,"key?","has_key?"),$alias(self,"kind_of?","is_a?"),$alias(self,"member?","has_key?")}($$("Native"),$$("BasicObject")),function($base,$super,$parent_nesting){var self=$klass($base,null,"Array"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.named=$proto.native=$proto.get=$proto.block=$proto.set=$proto.length=nil,self.$include($$$($$("Native"),"Wrapper")),self.$include($$("Enumerable")),$def(self,"$initialize",(function $$initialize(native$,options){var block=$$initialize.$$p||nil,$ret_or_1=nil;return delete $$initialize.$$p,null==options&&(options=$hash2([],{})),$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[native$],null),this.get=$truthy($ret_or_1=options["$[]"]("get"))?$ret_or_1:options["$[]"]("access"),this.named=options["$[]"]("named"),this.set=$truthy($ret_or_1=options["$[]"]("set"))?$ret_or_1:options["$[]"]("access"),this.length=$truthy($ret_or_1=options["$[]"]("length"))?$ret_or_1:"length",this.block=block,$truthy(null==this.$length())?this.$raise($$("ArgumentError"),"no length found on the array-like object"):nil}),-2),$def(self,"$each",(function $$each(){var block=$$each.$$p||nil;if(delete $$each.$$p,!$truthy(block))return this.$enum_for("each");for(var i=0,length=this.$length();i=,<<,each_pair,method_defined?,_initialize,name,native_module'); + + (function($base, $parent_nesting) { + var self = $module($base, 'Native'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs(self, '$is_a?', function $Native_is_a$ques$1(object, klass) { + var self = this; + + + try { + return object instanceof self.$try_convert(klass); + } + catch (e) { + return false; + } + + }, 2); + $defs(self, '$try_convert', function $$try_convert(value, default$) { + var self = this; + + + + if (default$ == null) default$ = nil;; + + if (self['$native?'](value)) { + return value; + } + else if (value['$respond_to?']("to_n")) { + return value.$to_n(); + } + else { + return default$; + } + ; + }, -2); + $defs(self, '$convert', function $$convert(value) { + var self = this; + + + if (self['$native?'](value)) { + return value; + } + else if (value['$respond_to?']("to_n")) { + return value.$to_n(); + } + else { + self.$raise($$('ArgumentError'), "" + (value.$inspect()) + " isn't native"); + } + + }, 1); + $defs(self, '$call', function $$call(obj, key, $a) { + var block = $$call.$$p || nil, $post_args, args, self = this; + + delete $$call.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 2); + + args = $post_args;; + + var prop = obj[key]; + + if (prop instanceof Function) { + var converted = new Array(args.length); + + for (var i = 0, l = args.length; i < l; i++) { + var item = args[i], + conv = self.$try_convert(item); + + converted[i] = conv === nil ? item : conv; + } + + if (block !== nil) { + converted.push(block); + } + + return self.$Native(prop.apply(obj, converted)); + } + else { + return self.$Native(prop); + } + ; + }, -3); + $defs(self, '$proc', function $$proc() { + var block = $$proc.$$p || nil, self = this; + + delete $$proc.$$p; + + ; + if (!$truthy(block)) { + self.$raise($$('LocalJumpError'), "no block given") + }; + return $send($Kernel, 'proc', [], function $$2($a){var $post_args, args, self = $$2.$$s == null ? this : $$2.$$s, instance = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + $send(args, 'map!', [], function $$3(arg){var self = $$3.$$s == null ? this : $$3.$$s; + + + + if (arg == null) arg = nil;; + return self.$Native(arg);}, {$$arity: 1, $$s: self}); + instance = self.$Native(this); + + // if global is current scope, run the block in the scope it was defined + if (this === Opal.global) { + return block.apply(self, args); + } + + var self_ = block.$$s; + block.$$s = null; + + try { + return block.apply(instance, args); + } + finally { + block.$$s = self_; + } + ;}, {$$arity: -1, $$s: self}); + }, 0); + (function($base, $parent_nesting) { + var self = $module($base, 'Helpers'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$alias_native', function $$alias_native(new$, $a, $b) { + var $post_args, $kwargs, old, as, $yield = $$alias_native.$$p || nil, self = this; + + delete $$alias_native.$$p; + + + $post_args = Opal.slice.call(arguments, 1); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if ($post_args.length > 0) old = $post_args.shift(); + if (old == null) old = new$;; + + as = $kwargs.$$smap["as"]; + if (as == null) as = nil; + if ($truthy(old['$end_with?']("="))) { + return $send(self, 'define_method', [new$], function $$4(value){var self = $$4.$$s == null ? this : $$4.$$s; + if (self["native"] == null) self["native"] = nil; + + + + if (value == null) value = nil;; + self["native"][old['$[]']($range(0, -2, false))] = $$('Native').$convert(value); + return value;}, {$$arity: 1, $$s: self}) + } else if ($truthy(as)) { + return $send(self, 'define_method', [new$], function $$5($c){var block = $$5.$$p || nil, $post_args, args, self = $$5.$$s == null ? this : $$5.$$s, value = nil; + if (self["native"] == null) self["native"] = nil; + + delete $$5.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + value = $send($$('Native'), 'call', [self["native"], old].concat($to_a(args)), block.$to_proc()); + if ($truthy(value)) { + return as.$new(value.$to_n()) + } else { + return nil + };}, {$$arity: -1, $$s: self}) + } else { + return $send(self, 'define_method', [new$], function $$6($c){var block = $$6.$$p || nil, $post_args, args, self = $$6.$$s == null ? this : $$6.$$s; + if (self["native"] == null) self["native"] = nil; + + delete $$6.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send($$('Native'), 'call', [self["native"], old].concat($to_a(args)), block.$to_proc());}, {$$arity: -1, $$s: self}) + }; + }, -2); + + $def(self, '$native_reader', function $$native_reader($a) { + var $post_args, names, self = this; + + + + $post_args = Opal.slice.call(arguments); + + names = $post_args;; + return $send(names, 'each', [], function $$7(name){var self = $$7.$$s == null ? this : $$7.$$s; + + + + if (name == null) name = nil;; + return $send(self, 'define_method', [name], function $$8(){var self = $$8.$$s == null ? this : $$8.$$s; + if (self["native"] == null) self["native"] = nil; + + return self.$Native(self["native"][name])}, {$$arity: 0, $$s: self});}, {$$arity: 1, $$s: self}); + }, -1); + + $def(self, '$native_writer', function $$native_writer($a) { + var $post_args, names, self = this; + + + + $post_args = Opal.slice.call(arguments); + + names = $post_args;; + return $send(names, 'each', [], function $$9(name){var self = $$9.$$s == null ? this : $$9.$$s; + + + + if (name == null) name = nil;; + return $send(self, 'define_method', ["" + (name) + "="], function $$10(value){var self = $$10.$$s == null ? this : $$10.$$s; + if (self["native"] == null) self["native"] = nil; + + + + if (value == null) value = nil;; + return self.$Native(self["native"][name] = value);}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + }, -1); + return $def(self, '$native_accessor', function $$native_accessor($a) { + var $post_args, names, self = this; + + + + $post_args = Opal.slice.call(arguments); + + names = $post_args;; + $send(self, 'native_reader', $to_a(names)); + return $send(self, 'native_writer', $to_a(names)); + }, -1); + })($nesting[0], $nesting); + (function($base, $parent_nesting) { + var self = $module($base, 'Wrapper'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$initialize', function $$initialize(native$) { + var self = this; + + + if (!$truthy($Kernel['$native?'](native$))) { + $Kernel.$raise($$('ArgumentError'), "" + (native$.$inspect()) + " isn't native") + }; + return (self["native"] = native$); + }, 1); + + $def(self, '$to_n', function $$to_n() { + var self = this; + if (self["native"] == null) self["native"] = nil; + + return self["native"] + }, 0); + return $defs(self, '$included', function $$included(klass) { + + return klass.$extend($$('Helpers')) + }, 1); + })($nesting[0], $nesting); + return $defs(self, '$included', function $$included(base) { + var self = this; + + + self.$warn("Including ::Native is deprecated. Please include Native::Wrapper instead."); + return base.$include($$('Wrapper')); + }, 1); + })($nesting[0], $nesting); + (function($base, $parent_nesting) { + var self = $module($base, 'Kernel'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$native?', function $Kernel_native$ques$11(value) { + + return value == null || !value.$$class; + }, 1); + + $def(self, '$Native', function $$Native(obj) { + var $yield = $$Native.$$p || nil, self = this; + + delete $$Native.$$p; + if ($truthy(obj == null)) { + return nil + } else if ($truthy(self['$native?'](obj))) { + return $$$($$('Native'), 'Object').$new(obj) + } else if ($truthy(obj['$is_a?']($$('Array')))) { + return $send(obj, 'map', [], function $$12(o){var self = $$12.$$s == null ? this : $$12.$$s; + + + + if (o == null) o = nil;; + return self.$Native(o);}, {$$arity: 1, $$s: self}) + } else if ($truthy(obj['$is_a?']($$('Proc')))) { + return $send(self, 'proc', [], function $$13($a){var block = $$13.$$p || nil, $post_args, args, self = $$13.$$s == null ? this : $$13.$$s; + + delete $$13.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return self.$Native($send(obj, 'call', $to_a(args), block.$to_proc()));}, {$$arity: -1, $$s: self}) + } else { + return obj + } + }, 1); + $alias(self, "_Array", "Array"); + return $def(self, '$Array', function $$Array(object, $a) { + var block = $$Array.$$p || nil, $post_args, args, self = this; + + delete $$Array.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + if ($truthy(self['$native?'](object))) { + return $send($$$($$('Native'), 'Array'), 'new', [object].concat($to_a(args)), block.$to_proc()).$to_a() + }; + return self.$_Array(object); + }, -2); + })($nesting[0], $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'Object'); + + var $proto = self.$$prototype; + + $proto["native"] = nil; + + self.$include($$$($$$('Native'), 'Wrapper')); + + $def(self, '$==', function $Object_$eq_eq$14(other) { + var self = this; + + return self["native"] === $$$('Native').$try_convert(other) + }, 1); + + $def(self, '$has_key?', function $Object_has_key$ques$15(name) { + var self = this; + + return Opal.hasOwnProperty.call(self["native"], name) + }, 1); + + $def(self, '$each', function $$each($a) { + var $post_args, args, $yield = $$each.$$p || nil, self = this; + + delete $$each.$$p; + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if (($yield !== nil)) { + + + for (var key in self["native"]) { + Opal.yieldX($yield, [key, self["native"][key]]) + } + ; + return self; + } else { + return $send(self, 'method_missing', ["each"].concat($to_a(args))) + }; + }, -1); + + $def(self, '$[]', function $Object_$$$16(key) { + var self = this; + + + var prop = self["native"][key]; + + if (prop instanceof Function) { + return prop; + } + else { + return $$$('Native').$call(self["native"], key) + } + + }, 1); + + $def(self, '$[]=', function $Object_$$$eq$17(key, value) { + var self = this, native$ = nil; + + + native$ = $$$('Native').$try_convert(value); + if ($truthy(native$ === nil)) { + return self["native"][key] = value + } else { + return self["native"][key] = native$ + }; + }, 2); + + $def(self, '$merge!', function $Object_merge$excl$18(other) { + var self = this; + + + + other = $$$('Native').$convert(other); + + for (var prop in other) { + self["native"][prop] = other[prop]; + } + ; + return self; + }, 1); + + $def(self, '$respond_to?', function $Object_respond_to$ques$19(name, include_all) { + var self = this; + + + + if (include_all == null) include_all = false;; + return $Kernel.$instance_method("respond_to?").$bind(self).$call(name, include_all); + }, -2); + + $def(self, '$respond_to_missing?', function $Object_respond_to_missing$ques$20(name, include_all) { + var self = this; + + + + if (include_all == null) include_all = false;; + return Opal.hasOwnProperty.call(self["native"], name); + }, -2); + + $def(self, '$method_missing', function $$method_missing(mid, $a) { + var block = $$method_missing.$$p || nil, $post_args, args, self = this, $writer = nil; + + delete $$method_missing.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + + if (mid.charAt(mid.length - 1) === '=') { + return (($writer = [mid.$slice(0, $rb_minus(mid.$length(), 1)), args['$[]'](0)]), $send(self, '[]=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)]); + } + else { + return $send($$$('Native'), 'call', [self["native"], mid].concat($to_a(args)), block.$to_proc()); + } + ; + }, -2); + + $def(self, '$nil?', function $Object_nil$ques$21() { + + return false + }, 0); + + $def(self, '$is_a?', function $Object_is_a$ques$22(klass) { + var self = this; + + return Opal.is_a(self, klass); + }, 1); + + $def(self, '$instance_of?', function $Object_instance_of$ques$23(klass) { + var self = this; + + return self.$$class === klass; + }, 1); + + $def(self, '$class', function $Object_class$24() { + var self = this; + + return self.$$class; + }, 0); + + $def(self, '$to_a', function $$to_a(options) { + var block = $$to_a.$$p || nil, self = this; + + delete $$to_a.$$p; + + ; + + if (options == null) options = $hash2([], {});; + return $send($$$($$$('Native'), 'Array'), 'new', [self["native"], options], block.$to_proc()).$to_a(); + }, -1); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return "#" + }, 0); + $alias(self, "include?", "has_key?"); + $alias(self, "key?", "has_key?"); + $alias(self, "kind_of?", "is_a?"); + return $alias(self, "member?", "has_key?"); + })($$('Native'), $$('BasicObject')); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Array'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.named = $proto["native"] = $proto.get = $proto.block = $proto.set = $proto.length = nil; + + self.$include($$$($$('Native'), 'Wrapper')); + self.$include($$('Enumerable')); + + $def(self, '$initialize', function $$initialize(native$, options) { + var block = $$initialize.$$p || nil, self = this, $ret_or_1 = nil; + + delete $$initialize.$$p; + + ; + + if (options == null) options = $hash2([], {});; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [native$], null); + self.get = ($truthy(($ret_or_1 = options['$[]']("get"))) ? ($ret_or_1) : (options['$[]']("access"))); + self.named = options['$[]']("named"); + self.set = ($truthy(($ret_or_1 = options['$[]']("set"))) ? ($ret_or_1) : (options['$[]']("access"))); + self.length = ($truthy(($ret_or_1 = options['$[]']("length"))) ? ($ret_or_1) : ("length")); + self.block = block; + if ($truthy(self.$length() == null)) { + return self.$raise($$('ArgumentError'), "no length found on the array-like object") + } else { + return nil + }; + }, -2); + + $def(self, '$each', function $$each() { + var block = $$each.$$p || nil, self = this; + + delete $$each.$$p; + + ; + if (!$truthy(block)) { + return self.$enum_for("each") + }; + + for (var i = 0, length = self.$length(); i < length; i++) { + Opal.yield1(block, self['$[]'](i)); + } + ; + return self; + }, 0); + + $def(self, '$[]', function $Array_$$$25(index) { + var self = this, result = nil, $ret_or_1 = nil; + + + result = (($eqeqeq($$('String'), ($ret_or_1 = index)) || ($eqeqeq($$('Symbol'), $ret_or_1))) ? (($truthy(self.named) ? (self["native"][self.named](index)) : (self["native"][index]))) : ($eqeqeq($$('Integer'), $ret_or_1) ? (($truthy(self.get) ? (self["native"][self.get](index)) : (self["native"][index]))) : (nil))); + if ($truthy(result)) { + if ($truthy(self.block)) { + return self.block.$call(result) + } else { + return self.$Native(result) + } + } else { + return nil + }; + }, 1); + + $def(self, '$[]=', function $Array_$$$eq$26(index, value) { + var self = this; + + if ($truthy(self.set)) { + return self["native"][self.set](index, $$('Native').$convert(value)) + } else { + return self["native"][index] = $$('Native').$convert(value) + } + }, 2); + + $def(self, '$last', function $$last(count) { + var $a, self = this, index = nil, result = nil; + + + + if (count == null) count = nil;; + if ($truthy(count)) { + + index = $rb_minus(self.$length(), 1); + result = []; + while ($truthy($rb_ge(index, 0))) { + + result['$<<'](self['$[]'](index)); + index = $rb_minus(index, 1); + }; + return result; + } else { + return self['$[]']($rb_minus(self.$length(), 1)) + }; + }, -1); + + $def(self, '$length', function $$length() { + var self = this; + + return self["native"][self.length] + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return self.$to_a().$inspect() + }, 0); + return $alias(self, "to_ary", "to_a"); + })($$('Native'), null, $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'Numeric'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.valueOf(); + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Proc'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'String'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.valueOf(); + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Regexp'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.valueOf(); + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'MatchData'); + + var $proto = self.$$prototype; + + $proto.matches = nil; + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.matches + }, 0) + })($nesting[0], null); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Struct'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$to_n', function $$to_n() { + var self = this, result = nil; + + + result = {}; + $send(self, 'each_pair', [], function $$27(name, value){ + + + if (name == null) name = nil;; + + if (value == null) value = nil;; + return result[name] = $$('Native').$try_convert(value, value);}, 2); + return result; + }, 0) + })($nesting[0], null, $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Array'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + + var result = []; + + for (var i = 0, length = self.length; i < length; i++) { + var obj = self[i]; + + result.push($$('Native').$try_convert(obj, obj)); + } + + return result; + + }, 0) + })($nesting[0], null, $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'Boolean'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.valueOf(); + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Time'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'NilClass'); + + + return $def(self, '$to_n', function $$to_n() { + + return null; + }, 0) + })($nesting[0], null); + if (!$truthy($$('Hash')['$method_defined?']("_initialize"))) { + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Hash'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $alias(self, "_initialize", "initialize"); + + $def(self, '$initialize', function $$initialize(defaults) { + var block = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + ; + ; + + if (defaults != null && + (defaults.constructor === undefined || + defaults.constructor === Object)) { + var smap = self.$$smap, + keys = self.$$keys, + key, value; + + for (key in defaults) { + value = defaults[key]; + + if (value && + (value.constructor === undefined || + value.constructor === Object)) { + smap[key] = $$('Hash').$new(value); + } else if (value && value.$$is_array) { + value = value.map(function(item) { + if (item && + (item.constructor === undefined || + item.constructor === Object)) { + return $$('Hash').$new(item); + } + + return self.$Native(item); + }); + smap[key] = value + } else { + smap[key] = self.$Native(value); + } + + keys.push(key); + } + + return self; + } + + return $send(self, '_initialize', [defaults], block.$to_proc()); + ; + }, -1); + return $def(self, '$to_n', function $$to_n() { + var self = this; + + + var result = {}, + keys = self.$$keys, + smap = self.$$smap, + key, value; + + for (var i = 0, length = keys.length; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = smap[key]; + } else { + key = key.key; + value = key.value; + } + + result[key] = $$('Native').$try_convert(value, value); + } + + return result; + + }, 0); + })($nesting[0], null, $nesting) + }; + (function($base, $super) { + var self = $klass($base, $super, 'Module'); + + + return $def(self, '$native_module', function $$native_module() { + var self = this; + + return Opal.global[self.$name()] = self + }, 0) + })($nesting[0], null); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Class'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$native_alias', function $$native_alias(new_jsid, existing_mid) { + var self = this; + + + var aliased = self.prototype['$' + existing_mid]; + if (!aliased) { + self.$raise($$('NameError').$new("undefined method `" + (existing_mid) + "' for class `" + (self.$inspect()) + "'", existing_mid)); + } + self.prototype[new_jsid] = aliased; + + }, 2); + return $def(self, '$native_class', function $$native_class() { + var self = this; + + + self.$native_module(); + return self["new"] = self.$new;; + }, 0); + })($nesting[0], null, $nesting); + return ($gvars.$ = ($gvars.global = self.$Native(Opal.global))); +}; + +Opal.modules["console"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $send = Opal.send, $gvars = Opal.gvars; + + Opal.add_stubs('require,include,raise,==,arity,instance_exec,to_proc,new'); + + self.$require("native"); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Console'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto["native"] = nil; + + self.$include($$$($$('Native'), 'Wrapper')); + + $def(self, '$clear', function $$clear() { + var self = this; + + return self["native"].clear() + }, 0); + + $def(self, '$trace', function $$trace() { + var self = this; + + return self["native"].trace() + }, 0); + + $def(self, '$log', function $$log($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return self["native"].log.apply(self["native"], args); + }, -1); + + $def(self, '$info', function $$info($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return self["native"].info.apply(self["native"], args); + }, -1); + + $def(self, '$warn', function $$warn($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return self["native"].warn.apply(self["native"], args); + }, -1); + + $def(self, '$error', function $$error($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return self["native"].error.apply(self["native"], args); + }, -1); + + $def(self, '$time', function $$time(label) { + var block = $$time.$$p || nil, self = this; + + delete $$time.$$p; + + ; + if (!$truthy(block)) { + self.$raise($$('ArgumentError'), "no block given") + }; + self["native"].time(label); + + return (function() { try { + if ($eqeq(block.$arity(), 0)) { + return $send(self, 'instance_exec', [], block.$to_proc()) + } else { + return Opal.yield1(block, self); + } + } finally { + self["native"].timeEnd() + }; })();; + }, 1); + + $def(self, '$group', function $$group($a) { + var block = $$group.$$p || nil, $post_args, args, self = this; + + delete $$group.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if (!$truthy(block)) { + self.$raise($$('ArgumentError'), "no block given") + }; + self["native"].group.apply(self["native"], args); + + return (function() { try { + if ($eqeq(block.$arity(), 0)) { + return $send(self, 'instance_exec', [], block.$to_proc()) + } else { + return Opal.yield1(block, self); + } + } finally { + self["native"].groupEnd() + }; })();; + }, -1); + return $def(self, '$group!', function $Console_group$excl$1($a) { + var block = $Console_group$excl$1.$$p || nil, $post_args, args, self = this; + + delete $Console_group$excl$1.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if (!(block !== nil)) { + return nil + }; + self["native"].groupCollapsed.apply(self["native"], args); + + return (function() { try { + if ($eqeq(block.$arity(), 0)) { + return $send(self, 'instance_exec', [], block.$to_proc()) + } else { + return Opal.yield1(block, self); + } + } finally { + self["native"].groupEnd() + }; })();; + }, -1); + })($nesting[0], null, $nesting); + if ($truthy((typeof(Opal.global.console) !== "undefined"))) { + return ($gvars.console = $$('Console').$new(Opal.global.console)) + } else { + return nil + }; +}; diff --git a/opal/1.4.1/console.min.js b/opal/1.4.1/console.min.js new file mode 100644 index 00000000..28a34028 --- /dev/null +++ b/opal/1.4.1/console.min.js @@ -0,0 +1 @@ +Opal.modules.native=function(Opal){var self=Opal.top,$nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$defs=Opal.defs,$truthy=Opal.truthy,$send=Opal.send,$Kernel=Opal.Kernel,$hash2=Opal.hash2,$range=Opal.range,$to_a=Opal.to_a,$def=Opal.def,$alias=Opal.alias,$klass=Opal.klass,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super,$eqeqeq=Opal.eqeqeq,$rb_ge=Opal.rb_ge,$gvars=Opal.gvars;return Opal.add_stubs("try_convert,native?,respond_to?,to_n,raise,inspect,Native,proc,map!,end_with?,define_method,[],convert,call,to_proc,new,each,native_reader,native_writer,extend,warn,include,is_a?,map,to_a,_Array,method_missing,bind,instance_method,slice,-,length,[]=,enum_for,===,>=,<<,each_pair,method_defined?,_initialize,name,native_module"),function($base,$parent_nesting){var self=$module($base,"Native"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$defs(self,"$is_a?",(function(object,klass){try{return object instanceof this.$try_convert(klass)}catch(e){return!1}}),2),$defs(self,"$try_convert",(function(value,default$){return null==default$&&(default$=nil),this["$native?"](value)?value:value["$respond_to?"]("to_n")?value.$to_n():default$}),-2),$defs(self,"$convert",(function(value){return this["$native?"](value)?value:value["$respond_to?"]("to_n")?value.$to_n():void this.$raise($$("ArgumentError"),value.$inspect()+" isn't native")}),1),$defs(self,"$call",(function $$call(obj,key,$a){var args,block=$$call.$$p||nil,self=this;delete $$call.$$p,args=Opal.slice.call(arguments,2);var prop=obj[key];if(prop instanceof Function){for(var converted=new Array(args.length),i=0,l=args.length;i0&&(old=$post_args.shift()),null==old&&(old=new$),null==(as=$kwargs.$$smap.as)&&(as=nil),$truthy(old["$end_with?"]("="))?$send(self,"define_method",[new$],(function $$4(value){var self=null==$$4.$$s?this:$$4.$$s;return null==self.native&&(self.native=nil),null==value&&(value=nil),self.native[old["$[]"]($range(0,-2,!1))]=$$("Native").$convert(value),value}),{$$arity:1,$$s:self}):$truthy(as)?$send(self,"define_method",[new$],(function $$5($c){var args,block=$$5.$$p||nil,self=null==$$5.$$s?this:$$5.$$s,value=nil;return null==self.native&&(self.native=nil),delete $$5.$$p,args=Opal.slice.call(arguments),value=$send($$("Native"),"call",[self.native,old].concat($to_a(args)),block.$to_proc()),$truthy(value)?as.$new(value.$to_n()):nil}),{$$arity:-1,$$s:self}):$send(self,"define_method",[new$],(function $$6($c){var args,block=$$6.$$p||nil,self=null==$$6.$$s?this:$$6.$$s;return null==self.native&&(self.native=nil),delete $$6.$$p,args=Opal.slice.call(arguments),$send($$("Native"),"call",[self.native,old].concat($to_a(args)),block.$to_proc())}),{$$arity:-1,$$s:self})}),-2),$def(self,"$native_reader",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each",[],(function $$7(name){var self=null==$$7.$$s?this:$$7.$$s;return null==name&&(name=nil),$send(self,"define_method",[name],(function $$8(){var self=null==$$8.$$s?this:$$8.$$s;return null==self.native&&(self.native=nil),self.$Native(self.native[name])}),{$$arity:0,$$s:self})}),{$$arity:1,$$s:self})}),-1),$def(self,"$native_writer",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each",[],(function $$9(name){var self=null==$$9.$$s?this:$$9.$$s;return null==name&&(name=nil),$send(self,"define_method",[name+"="],(function $$10(value){var self=null==$$10.$$s?this:$$10.$$s;return null==self.native&&(self.native=nil),null==value&&(value=nil),self.$Native(self.native[name]=value)}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:self})}),-1),$def(self,"$native_accessor",(function($a){var $post_args,names,self=this;return $post_args=Opal.slice.call(arguments),$send(self,"native_reader",$to_a(names=$post_args)),$send(self,"native_writer",$to_a(names))}),-1)}($nesting[0],$nesting),function($base,$parent_nesting){var self=$module($base,"Wrapper"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$initialize",(function(native$){return $truthy($Kernel["$native?"](native$))||$Kernel.$raise($$("ArgumentError"),native$.$inspect()+" isn't native"),this.native=native$}),1),$def(self,"$to_n",(function(){return null==this.native&&(this.native=nil),this.native}),0),$defs(self,"$included",(function(klass){return klass.$extend($$("Helpers"))}),1)}($nesting[0],$nesting),$defs(self,"$included",(function(base){return this.$warn("Including ::Native is deprecated. Please include Native::Wrapper instead."),base.$include($$("Wrapper"))}),1)}($nesting[0],$nesting),function($base,$parent_nesting){var self=$module($base,"Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$native?",(function(value){return null==value||!value.$$class}),1),$def(self,"$Native",(function $$Native(obj){return delete $$Native.$$p,$truthy(null==obj)?nil:$truthy(this["$native?"](obj))?$$$($$("Native"),"Object").$new(obj):$truthy(obj["$is_a?"]($$("Array")))?$send(obj,"map",[],(function $$12(o){return null==o&&(o=nil),(null==$$12.$$s?this:$$12.$$s).$Native(o)}),{$$arity:1,$$s:this}):$truthy(obj["$is_a?"]($$("Proc")))?$send(this,"proc",[],(function $$13($a){var args,block=$$13.$$p||nil,self=null==$$13.$$s?this:$$13.$$s;return delete $$13.$$p,args=Opal.slice.call(arguments),self.$Native($send(obj,"call",$to_a(args),block.$to_proc()))}),{$$arity:-1,$$s:this}):obj}),1),$alias(self,"_Array","Array"),$def(self,"$Array",(function $$Array(object,$a){var args,block=$$Array.$$p||nil,self=this;return delete $$Array.$$p,args=Opal.slice.call(arguments,1),$truthy(self["$native?"](object))?$send($$$($$("Native"),"Array"),"new",[object].concat($to_a(args)),block.$to_proc()).$to_a():self.$_Array(object)}),-2)}($nesting[0],$nesting),function($base,$super){var self=$klass($base,$super,"Object");self.$$prototype.native=nil,self.$include($$$($$$("Native"),"Wrapper")),$def(self,"$==",(function(other){return this.native===$$$("Native").$try_convert(other)}),1),$def(self,"$has_key?",(function(name){return Opal.hasOwnProperty.call(this.native,name)}),1),$def(self,"$each",(function $$each($a){var args,$yield=$$each.$$p||nil,self=this;if(delete $$each.$$p,args=Opal.slice.call(arguments),$yield!==nil){for(var key in self.native)Opal.yieldX($yield,[key,self.native[key]]);return self}return $send(self,"method_missing",["each"].concat($to_a(args)))}),-1),$def(self,"$[]",(function(key){var prop=this.native[key];return prop instanceof Function?prop:$$$("Native").$call(this.native,key)}),1),$def(self,"$[]=",(function(key,value){var native$;return native$=$$$("Native").$try_convert(value),$truthy(native$===nil)?this.native[key]=value:this.native[key]=native$}),2),$def(self,"$merge!",(function(other){for(var prop in other=$$$("Native").$convert(other))this.native[prop]=other[prop];return this}),1),$def(self,"$respond_to?",(function(name,include_all){return null==include_all&&(include_all=!1),$Kernel.$instance_method("respond_to?").$bind(this).$call(name,include_all)}),-2),$def(self,"$respond_to_missing?",(function(name,include_all){return null==include_all&&(include_all=!1),Opal.hasOwnProperty.call(this.native,name)}),-2),$def(self,"$method_missing",(function $$method_missing(mid,$a){var args,block=$$method_missing.$$p||nil,self=this,$writer=nil;return delete $$method_missing.$$p,args=Opal.slice.call(arguments,1),"="===mid.charAt(mid.length-1)?($writer=[mid.$slice(0,$rb_minus(mid.$length(),1)),args["$[]"](0)],$send(self,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):$send($$$("Native"),"call",[self.native,mid].concat($to_a(args)),block.$to_proc())}),-2),$def(self,"$nil?",(function(){return!1}),0),$def(self,"$is_a?",(function(klass){return Opal.is_a(this,klass)}),1),$def(self,"$instance_of?",(function(klass){return this.$$class===klass}),1),$def(self,"$class",(function(){return this.$$class}),0),$def(self,"$to_a",(function $$to_a(options){var block=$$to_a.$$p||nil;return delete $$to_a.$$p,null==options&&(options=$hash2([],{})),$send($$$($$$("Native"),"Array"),"new",[this.native,options],block.$to_proc()).$to_a()}),-1),$def(self,"$inspect",(function(){return"#"}),0),$alias(self,"include?","has_key?"),$alias(self,"key?","has_key?"),$alias(self,"kind_of?","is_a?"),$alias(self,"member?","has_key?")}($$("Native"),$$("BasicObject")),function($base,$super,$parent_nesting){var self=$klass($base,null,"Array"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.named=$proto.native=$proto.get=$proto.block=$proto.set=$proto.length=nil,self.$include($$$($$("Native"),"Wrapper")),self.$include($$("Enumerable")),$def(self,"$initialize",(function $$initialize(native$,options){var block=$$initialize.$$p||nil,$ret_or_1=nil;return delete $$initialize.$$p,null==options&&(options=$hash2([],{})),$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[native$],null),this.get=$truthy($ret_or_1=options["$[]"]("get"))?$ret_or_1:options["$[]"]("access"),this.named=options["$[]"]("named"),this.set=$truthy($ret_or_1=options["$[]"]("set"))?$ret_or_1:options["$[]"]("access"),this.length=$truthy($ret_or_1=options["$[]"]("length"))?$ret_or_1:"length",this.block=block,$truthy(null==this.$length())?this.$raise($$("ArgumentError"),"no length found on the array-like object"):nil}),-2),$def(self,"$each",(function $$each(){var block=$$each.$$p||nil;if(delete $$each.$$p,!$truthy(block))return this.$enum_for("each");for(var i=0,length=this.$length();i,attr_reader,nonzero?,d,zero?,new,class,-@,+@,===,coerce,==,>,+,allocate,join,compact,map,to_proc,downcase,wrap,raise,clone,jd,>>,wday,year,month,day,-,to_s,to_i,<,*,reverse,step,abs,each'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Date'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.date = nil; + + self.$include($$('Comparable')); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Infinity'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.d = nil; + + self.$include($$('Comparable')); + + $def(self, '$initialize', function $$initialize(d) { + var self = this; + + + + if (d == null) d = 1;; + return (self.d = d['$<=>'](0)); + }, -1); + self.$attr_reader("d"); + + $def(self, '$zero?', function $Infinity_zero$ques$1() { + + return false + }, 0); + + $def(self, '$finite?', function $Infinity_finite$ques$2() { + + return false + }, 0); + + $def(self, '$infinite?', function $Infinity_infinite$ques$3() { + var self = this; + + return self.$d()['$nonzero?']() + }, 0); + + $def(self, '$nan?', function $Infinity_nan$ques$4() { + var self = this; + + return self.$d()['$zero?']() + }, 0); + + $def(self, '$abs', function $$abs() { + var self = this; + + return self.$class().$new() + }, 0); + + $def(self, '$-@', function $Infinity_$minus$$5() { + var self = this; + + return self.$class().$new(self.$d()['$-@']()) + }, 0); + + $def(self, '$+@', function $Infinity_$plus$$6() { + var self = this; + + return self.$class().$new(self.$d()['$+@']()) + }, 0); + + $def(self, '$<=>', function $Infinity_$lt_eq_gt$7(other) { + var $a, $b, self = this, $ret_or_1 = nil, l = nil, r = nil; + + if ($eqeqeq($$('Infinity'), ($ret_or_1 = other))) { + return self.$d()['$<=>'](other.$d()) + } else if ($eqeqeq($$('Numeric'), $ret_or_1)) { + return self.$d() + } else { + + try { + + $b = other.$coerce(self), $a = $to_ary($b), (l = ($a[0] == null ? nil : $a[0])), (r = ($a[1] == null ? nil : $a[1])), $b; + return l['$<=>'](r); + } catch ($err) { + if (Opal.rescue($err, [$$('NoMethodError')])) { + try { + return nil + } finally { Opal.pop_exception(); } + } else { throw $err; } + }; + } + }, 1); + + $def(self, '$coerce', function $$coerce(other) { + var $yield = $$coerce.$$p || nil, self = this, $ret_or_1 = nil; + + delete $$coerce.$$p; + if ($eqeqeq($$('Numeric'), ($ret_or_1 = other))) { + return [self.$d()['$-@'](), self.$d()] + } else { + return $send2(self, $find_super(self, 'coerce', $$coerce, false, true), 'coerce', [other], $yield) + } + }, 1); + return $def(self, '$to_f', function $$to_f() { + var self = this; + + + if ($eqeq(self.d, 0)) { + return 0 + }; + if ($truthy($rb_gt(self.d, 0))) { + return $$$($$('Float'), 'INFINITY') + } else { + return $$$($$('Float'), 'INFINITY')['$-@']() + }; + }, 0); + })($nesting[0], $$('Numeric'), $nesting); + $const_set($nesting[0], 'JULIAN', $$('Infinity').$new()); + $const_set($nesting[0], 'GREGORIAN', $$('Infinity').$new()['$-@']()); + $const_set($nesting[0], 'ITALY', 2299161); + $const_set($nesting[0], 'ENGLAND', 2361222); + $const_set($nesting[0], 'MONTHNAMES', $rb_plus([nil], ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"])); + $const_set($nesting[0], 'ABBR_MONTHNAMES', ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"]); + $const_set($nesting[0], 'DAYNAMES', ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]); + $const_set($nesting[0], 'ABBR_DAYNAMES', ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]); + (function(self, $parent_nesting) { + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$wrap', function $$wrap(native$) { + var self = this, instance = nil; + + + instance = self.$allocate(); + instance.date = native$; + return instance; + }, 1); + + $def(self, '$parse', function $$parse(string, comp) { + var self = this; + + + + if (comp == null) comp = true;; + + var current_date = new Date(); + + var current_day = current_date.getDate(), + current_month = current_date.getMonth(), + current_year = current_date.getFullYear(), + current_wday = current_date.getDay(), + full_month_name_regexp = $$('MONTHNAMES').$compact().$join("|"); + + function match1(match) { return match[1]; } + function match2(match) { return match[2]; } + function match3(match) { return match[3]; } + function match4(match) { return match[4]; } + + // Converts passed short year (0..99) + // to a 4-digits year in the range (1969..2068) + function fromShortYear(fn) { + return function(match) { + var short_year = fn(match); + + if (short_year >= 69) { + short_year += 1900; + } else { + short_year += 2000; + } + return short_year; + } + } + + // Converts month abbr (nov) to a month number + function fromMonthAbbr(fn) { + return function(match) { + var abbr = fn(match).toLowerCase(); + return $$('ABBR_MONTHNAMES').indexOf(abbr) + 1; + } + } + + function toInt(fn) { + return function(match) { + var value = fn(match); + return parseInt(value, 10); + } + } + + // Depending on the 'comp' value appends 20xx to a passed year + function to2000(fn) { + return function(match) { + var value = fn(match); + if (comp) { + return value + 2000; + } else { + return value; + } + } + } + + // Converts passed week day name to a day number + function fromDayName(fn) { + return function(match) { + var dayname = fn(match), + wday = $send($$('DAYNAMES'), 'map', [], "downcase".$to_proc()).indexOf((dayname).$downcase()); + + return current_day - current_wday + wday; + } + } + + // Converts passed month name to a month number + function fromFullMonthName(fn) { + return function(match) { + var month_name = fn(match); + return $send($$('MONTHNAMES').$compact(), 'map', [], "downcase".$to_proc()).indexOf((month_name).$downcase()) + 1; + } + } + + var rules = [ + { + // DD as month day number + regexp: /^(\d{2})$/, + year: current_year, + month: current_month, + day: toInt(match1) + }, + { + // DDD as year day number + regexp: /^(\d{3})$/, + year: current_year, + month: 0, + day: toInt(match1) + }, + { + // MMDD as month and day + regexp: /^(\d{2})(\d{2})$/, + year: current_year, + month: toInt(match1), + day: toInt(match2) + }, + { + // YYDDD as year and day number in 1969--2068 + regexp: /^(\d{2})(\d{3})$/, + year: fromShortYear(toInt(match1)), + month: 0, + day: toInt(match2) + }, + { + // YYMMDD as year, month and day in 1969--2068 + regexp: /^(\d{2})(\d{2})(\d{2})$/, + year: fromShortYear(toInt(match1)), + month: toInt(match2), + day: toInt(match3) + }, + { + // YYYYDDD as year and day number + regexp: /^(\d{4})(\d{3})$/, + year: toInt(match1), + month: 0, + day: toInt(match2) + }, + { + // YYYYMMDD as year, month and day number + regexp: /^(\d{4})(\d{2})(\d{2})$/, + year: toInt(match1), + month: toInt(match2), + day: toInt(match3) + }, + { + // mmm YYYY + regexp: /^([a-z]{3})[\s\.\/\-](\d{3,4})$/, + year: toInt(match2), + month: fromMonthAbbr(match1), + day: 1 + }, + { + // DD mmm YYYY + regexp: /^(\d{1,2})[\s\.\/\-]([a-z]{3})[\s\.\/\-](\d{3,4})$/i, + year: toInt(match3), + month: fromMonthAbbr(match2), + day: toInt(match1) + }, + { + // mmm DD YYYY + regexp: /^([a-z]{3})[\s\.\/\-](\d{1,2})[\s\.\/\-](\d{3,4})$/i, + year: toInt(match3), + month: fromMonthAbbr(match1), + day: toInt(match2) + }, + { + // YYYY mmm DD + regexp: /^(\d{3,4})[\s\.\/\-]([a-z]{3})[\s\.\/\-](\d{1,2})$/i, + year: toInt(match1), + month: fromMonthAbbr(match2), + day: toInt(match3) + }, + { + // YYYY-MM-DD YYYY/MM/DD YYYY.MM.DD + regexp: /^(\-?\d{3,4})[\s\.\/\-](\d{1,2})[\s\.\/\-](\d{1,2})$/, + year: toInt(match1), + month: toInt(match2), + day: toInt(match3) + }, + { + // YY-MM-DD + regexp: /^(\d{2})[\s\.\/\-](\d{1,2})[\s\.\/\-](\d{1,2})$/, + year: to2000(toInt(match1)), + month: toInt(match2), + day: toInt(match3) + }, + { + // DD-MM-YYYY + regexp: /^(\d{1,2})[\s\.\/\-](\d{1,2})[\s\.\/\-](\-?\d{3,4})$/, + year: toInt(match3), + month: toInt(match2), + day: toInt(match1) + }, + { + // ddd + regexp: new RegExp("^(" + $$('DAYNAMES').$join("|") + ")$", 'i'), + year: current_year, + month: current_month, + day: fromDayName(match1) + }, + { + // monthname daynumber YYYY + regexp: new RegExp("^(" + full_month_name_regexp + ")[\\s\\.\\/\\-](\\d{1,2})(th|nd|rd)[\\s\\.\\/\\-](\\-?\\d{3,4})$", "i"), + year: toInt(match4), + month: fromFullMonthName(match1), + day: toInt(match2) + }, + { + // monthname daynumber + regexp: new RegExp("^(" + full_month_name_regexp + ")[\\s\\.\\/\\-](\\d{1,2})(th|nd|rd)", "i"), + year: current_year, + month: fromFullMonthName(match1), + day: toInt(match2) + }, + { + // daynumber monthname YYYY + regexp: new RegExp("^(\\d{1,2})(th|nd|rd)[\\s\\.\\/\\-](" + full_month_name_regexp + ")[\\s\\.\\/\\-](\\-?\\d{3,4})$", "i"), + year: toInt(match4), + month: fromFullMonthName(match3), + day: toInt(match1) + }, + { + // YYYY monthname daynumber + regexp: new RegExp("^(\\-?\\d{3,4})[\\s\\.\\/\\-](" + full_month_name_regexp + ")[\\s\\.\\/\\-](\\d{1,2})(th|nd|rd)$", "i"), + year: toInt(match1), + month: fromFullMonthName(match2), + day: toInt(match3) + } + ] + + var rule, i, match; + + for (i = 0; i < rules.length; i++) { + rule = rules[i]; + match = rule.regexp.exec(string); + if (match) { + var year = rule.year; + if (typeof(year) === 'function') { + year = year(match); + } + + var month = rule.month; + if (typeof(month) === 'function') { + month = month(match) - 1 + } + + var day = rule.day; + if (typeof(day) === 'function') { + day = day(match); + } + + var result = new Date(year, month, day); + + // an edge case, JS can't handle 'new Date(1)', minimal year is 1970 + if (year >= 0 && year <= 1970) { + result.setFullYear(year); + } + + return self.$wrap(result); + } + } + ; + return self.$raise($$('ArgumentError'), "invalid date"); + }, -2); + + $def(self, '$today', function $$today() { + var self = this; + + return self.$wrap(new Date()) + }, 0); + + $def(self, '$gregorian_leap?', function $gregorian_leap$ques$8(year) { + + return (new Date(year, 1, 29).getMonth()-1) === 0 + }, 1); + return $alias(self, "civil", "new"); + })(Opal.get_singleton_class(self), $nesting); + + $def(self, '$initialize', function $$initialize(year, month, day, start) { + var self = this; + + + + if (year == null) year = -4712;; + + if (month == null) month = 1;; + + if (day == null) day = 1;; + + if (start == null) start = $$('ITALY');; + + // Because of Gregorian reform calendar goes from 1582-10-04 to 1582-10-15. + // All days in between end up as 4 october. + if (year === 1582 && month === 10 && day > 4 && day < 15) { + day = 4; + } + ; + return (self.date = new Date(year, month - 1, day)); + }, -1); + + $def(self, '$-', function $Date_$minus$9(date) { + var self = this; + + + if (date.$$is_number) { + var result = self.$clone(); + result.date.setDate(self.date.getDate() - date); + return result; + } + else if (date.date) { + return Math.round((self.date - date.date) / (1000 * 60 * 60 * 24)); + } + else { + self.$raise($$('TypeError')); + } + + }, 1); + + $def(self, '$+', function $Date_$plus$10(date) { + var self = this; + + + if (date.$$is_number) { + var result = self.$clone(); + result.date.setDate(self.date.getDate() + date); + return result; + } + else { + self.$raise($$('TypeError')); + } + + }, 1); + + $def(self, '$<', function $Date_$lt$11(other) { + var self = this; + + + var a = self.date, b = other.date; + a.setHours(0, 0, 0, 0); + b.setHours(0, 0, 0, 0); + return a < b; + + }, 1); + + $def(self, '$<=', function $Date_$lt_eq$12(other) { + var self = this; + + + var a = self.date, b = other.date; + a.setHours(0, 0, 0, 0); + b.setHours(0, 0, 0, 0); + return a <= b; + + }, 1); + + $def(self, '$>', function $Date_$gt$13(other) { + var self = this; + + + var a = self.date, b = other.date; + a.setHours(0, 0, 0, 0); + b.setHours(0, 0, 0, 0); + return a > b; + + }, 1); + + $def(self, '$>=', function $Date_$gt_eq$14(other) { + var self = this; + + + var a = self.date, b = other.date; + a.setHours(0, 0, 0, 0); + b.setHours(0, 0, 0, 0); + return a >= b; + + }, 1); + + $def(self, '$<=>', function $Date_$lt_eq_gt$15(other) { + var self = this; + + + if (other.$$is_number) { + return self.$jd()['$<=>'](other) + } + + if ($$('Date')['$==='](other)) { + var a = self.date, b = other.date; + a.setHours(0, 0, 0, 0); + b.setHours(0, 0, 0, 0); + + if (a < b) { + return -1; + } + else if (a > b) { + return 1; + } + else { + return 0; + } + } else { + return nil; + } + + }, 1); + + $def(self, '$>>', function $Date_$gt$gt$16(n) { + var self = this; + + + if (!n.$$is_number) { + self.$raise($$('TypeError')); + } + + var result = self.$clone(), date = result.date, cur = date.getDate(); + date.setDate(1); + date.setMonth(date.getMonth() + n); + date.setDate(Math.min(cur, days_in_month(date.getFullYear(), date.getMonth()))); + return result; + + }, 1); + + $def(self, '$<<', function $Date_$lt$lt$17(n) { + var self = this; + + + if (!n.$$is_number) { + self.$raise($$('TypeError')); + } + + return self['$>>'](-n); + + }, 1); + + $def(self, '$clone', function $$clone() { + var self = this; + + return $$('Date').$wrap(new Date(self.date.getTime())) + }, 0); + + $def(self, '$day', function $$day() { + var self = this; + + return self.date.getDate() + }, 0); + + $def(self, '$friday?', function $Date_friday$ques$18() { + var self = this; + + return self.$wday()['$=='](5) + }, 0); + + $def(self, '$jd', function $$jd() { + var self = this; + + + //Adapted from http://www.physics.sfasu.edu/astro/javascript/julianday.html + + var mm = self.date.getMonth() + 1, + dd = self.date.getDate(), + yy = self.date.getFullYear(), + hr = 12, mn = 0, sc = 0, + ggg, s, a, j1, jd; + + hr = hr + (mn / 60) + (sc/3600); + + ggg = 1; + if (yy <= 1585) { + ggg = 0; + } + + jd = -1 * Math.floor(7 * (Math.floor((mm + 9) / 12) + yy) / 4); + + s = 1; + if ((mm - 9) < 0) { + s =- 1; + } + + a = Math.abs(mm - 9); + j1 = Math.floor(yy + s * Math.floor(a / 7)); + j1 = -1 * Math.floor((Math.floor(j1 / 100) + 1) * 3 / 4); + + jd = jd + Math.floor(275 * mm / 9) + dd + (ggg * j1); + jd = jd + 1721027 + 2 * ggg + 367 * yy - 0.5; + jd = jd + (hr / 24); + + return jd; + + }, 0); + + $def(self, '$julian?', function $Date_julian$ques$19() { + var self = this; + + return self.date < new Date(1582, 10 - 1, 15, 12) + }, 0); + + $def(self, '$monday?', function $Date_monday$ques$20() { + var self = this; + + return self.$wday()['$=='](1) + }, 0); + + $def(self, '$month', function $$month() { + var self = this; + + return self.date.getMonth() + 1 + }, 0); + + $def(self, '$next', function $$next() { + var self = this; + + return $rb_plus(self, 1) + }, 0); + + $def(self, '$next_day', function $$next_day(n) { + var self = this; + + + + if (n == null) n = 1;; + return $rb_plus(self, n); + }, -1); + + $def(self, '$next_month', function $$next_month(n) { + var self = this; + + + + if (n == null) n = 1;; + + var result = self.$clone(), date = result.date, cur = date.getDate(); + date.setDate(1); + date.setMonth(date.getMonth() + n); + date.setDate(Math.min(cur, days_in_month(date.getFullYear(), date.getMonth()))); + return result; + ; + }, -1); + + $def(self, '$next_year', function $$next_year(years) { + var self = this; + + + + if (years == null) years = 1;; + return self.$class().$new($rb_plus(self.$year(), years), self.$month(), self.$day()); + }, -1); + + $def(self, '$prev_day', function $$prev_day(n) { + var self = this; + + + + if (n == null) n = 1;; + return $rb_minus(self, n); + }, -1); + + $def(self, '$prev_month', function $$prev_month(n) { + var self = this; + + + + if (n == null) n = 1;; + + var result = self.$clone(), date = result.date, cur = date.getDate(); + date.setDate(1); + date.setMonth(date.getMonth() - n); + date.setDate(Math.min(cur, days_in_month(date.getFullYear(), date.getMonth()))); + return result; + ; + }, -1); + + $def(self, '$prev_year', function $$prev_year(years) { + var self = this; + + + + if (years == null) years = 1;; + return self.$class().$new($rb_minus(self.$year(), years), self.$month(), self.$day()); + }, -1); + + $def(self, '$saturday?', function $Date_saturday$ques$21() { + var self = this; + + return self.$wday()['$=='](6) + }, 0); + + $def(self, '$strftime', function $$strftime(format) { + var self = this; + + + + if (format == null) format = "";; + + if (format == '') { + return self.$to_s(); + } + + return self.date.$strftime(format); + ; + }, -1); + + $def(self, '$sunday?', function $Date_sunday$ques$22() { + var self = this; + + return self.$wday()['$=='](0) + }, 0); + + $def(self, '$thursday?', function $Date_thursday$ques$23() { + var self = this; + + return self.$wday()['$=='](4) + }, 0); + + $def(self, '$to_s', function $$to_s() { + var self = this; + + + var d = self.date, year = d.getFullYear(), month = d.getMonth() + 1, day = d.getDate(); + if (month < 10) { month = '0' + month; } + if (day < 10) { day = '0' + day; } + return year + '-' + month + '-' + day; + + }, 0); + + $def(self, '$to_time', function $$to_time() { + var self = this; + + return $$('Time').$new(self.$year(), self.$month(), self.$day()) + }, 0); + + $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.date + }, 0); + + $def(self, '$tuesday?', function $Date_tuesday$ques$24() { + var self = this; + + return self.$wday()['$=='](2) + }, 0); + + $def(self, '$step', function $$step(limit, step) { + var block = $$step.$$p || nil, self = this, steps_count = nil, steps = nil, result = nil; + + delete $$step.$$p; + + ; + + if (step == null) step = 1;; + steps_count = $rb_minus(limit, self).$to_i(); + steps = ($truthy($rb_lt($rb_times(steps_count, step), 0)) ? ([]) : ($truthy($rb_lt(steps_count, 0)) ? ($send(Opal.Range.$new(0, steps_count['$-@'](), false).$step(step.$abs()), 'map', [], "-@".$to_proc()).$reverse()) : (Opal.Range.$new(0, steps_count, false).$step(step.$abs())))); + result = $send(steps, 'map', [], function $$25(i){var self = $$25.$$s == null ? this : $$25.$$s; + + + + if (i == null) i = nil;; + return $rb_plus(self, i);}, {$$arity: 1, $$s: self}); + if ((block !== nil)) { + + $send(result, 'each', [], function $$26(i){ + + + if (i == null) i = nil;; + return Opal.yield1(block, i);;}, 1); + return self; + } else { + return result + }; + }, -2); + + $def(self, '$upto', function $$upto(max) { + var block = $$upto.$$p || nil, self = this; + + delete $$upto.$$p; + + ; + return $send(self, 'step', [max, 1], block.$to_proc()); + }, 1); + + $def(self, '$downto', function $$downto(min) { + var block = $$downto.$$p || nil, self = this; + + delete $$downto.$$p; + + ; + return $send(self, 'step', [min, -1], block.$to_proc()); + }, 1); + + $def(self, '$wday', function $$wday() { + var self = this; + + return self.date.getDay() + }, 0); + + $def(self, '$wednesday?', function $Date_wednesday$ques$27() { + var self = this; + + return self.$wday()['$=='](3) + }, 0); + + $def(self, '$year', function $$year() { + var self = this; + + return self.date.getFullYear() + }, 0); + + $def(self, '$cwday', function $$cwday() { + var self = this; + + return self.date.getDay() || 7 + }, 0); + + $def(self, '$cweek', function $$cweek() { + var self = this; + + + var d = new Date(self.date); + d.setHours(0,0,0); + d.setDate(d.getDate()+4-(d.getDay()||7)); + return Math.ceil((((d-new Date(d.getFullYear(),0,1))/8.64e7)+1)/7); + + }, 0); + + function days_in_month(year, month) { + var leap = ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0); + return [31, (leap ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month] + } + ; + $alias(self, "eql?", "=="); + return $alias(self, "succ", "next"); + })($nesting[0], null, $nesting) +}; diff --git a/opal/1.4.1/date.min.js b/opal/1.4.1/date.min.js new file mode 100644 index 00000000..00d1ef83 --- /dev/null +++ b/opal/1.4.1/date.min.js @@ -0,0 +1 @@ +Opal.modules.date=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$to_ary=Opal.to_ary,$send2=Opal.send2,$find_super=Opal.find_super,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$const_set=Opal.const_set,$rb_plus=Opal.rb_plus,$send=Opal.send,$alias=Opal.alias,$rb_minus=Opal.rb_minus,$rb_lt=Opal.rb_lt,$rb_times=Opal.rb_times;return Opal.add_stubs("include,<=>,attr_reader,nonzero?,d,zero?,new,class,-@,+@,===,coerce,==,>,+,allocate,join,compact,map,to_proc,downcase,wrap,raise,clone,jd,>>,wday,year,month,day,-,to_s,to_i,<,*,reverse,step,abs,each"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Date"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);function days_in_month(year,month){return[31,year%4==0&&year%100!=0||year%400==0?29:28,31,30,31,30,31,31,30,31,30,31][month]}return self.$$prototype.date=nil,self.$include($$("Comparable")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"Infinity"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.d=nil,self.$include($$("Comparable")),$def(self,"$initialize",(function(d){return null==d&&(d=1),this.d=d["$<=>"](0)}),-1),self.$attr_reader("d"),$def(self,"$zero?",(function(){return!1}),0),$def(self,"$finite?",(function(){return!1}),0),$def(self,"$infinite?",(function(){return this.$d()["$nonzero?"]()}),0),$def(self,"$nan?",(function(){return this.$d()["$zero?"]()}),0),$def(self,"$abs",(function(){return this.$class().$new()}),0),$def(self,"$-@",(function(){return this.$class().$new(this.$d()["$-@"]())}),0),$def(self,"$+@",(function(){return this.$class().$new(this.$d()["$+@"]())}),0),$def(self,"$<=>",(function(other){var $a,$b,$ret_or_1,l=nil,r=nil;if($eqeqeq($$("Infinity"),$ret_or_1=other))return this.$d()["$<=>"](other.$d());if($eqeqeq($$("Numeric"),$ret_or_1))return this.$d();try{return $b=other.$coerce(this),l=null==($a=$to_ary($b))[0]?nil:$a[0],r=null==$a[1]?nil:$a[1],l["$<=>"](r)}catch($err){if(!Opal.rescue($err,[$$("NoMethodError")]))throw $err;try{return nil}finally{Opal.pop_exception()}}}),1),$def(self,"$coerce",(function $$coerce(other){var $yield=$$coerce.$$p||nil;return delete $$coerce.$$p,$eqeqeq($$("Numeric"),other)?[this.$d()["$-@"](),this.$d()]:$send2(this,$find_super(this,"coerce",$$coerce,!1,!0),"coerce",[other],$yield)}),1),$def(self,"$to_f",(function(){return $eqeq(this.d,0)?0:$truthy($rb_gt(this.d,0))?$$$($$("Float"),"INFINITY"):$$$($$("Float"),"INFINITY")["$-@"]()}),0)}($nesting[0],$$("Numeric"),$nesting),$const_set($nesting[0],"JULIAN",$$("Infinity").$new()),$const_set($nesting[0],"GREGORIAN",$$("Infinity").$new()["$-@"]()),$const_set($nesting[0],"ITALY",2299161),$const_set($nesting[0],"ENGLAND",2361222),$const_set($nesting[0],"MONTHNAMES",$rb_plus([nil],["January","February","March","April","May","June","July","August","September","October","November","December"])),$const_set($nesting[0],"ABBR_MONTHNAMES",["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"]),$const_set($nesting[0],"DAYNAMES",["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]),$const_set($nesting[0],"ABBR_DAYNAMES",["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]),function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$wrap",(function(native$){var instance=nil;return(instance=this.$allocate()).date=native$,instance}),1),$def(self,"$parse",(function(string,comp){null==comp&&(comp=!0);var current_date=new Date,current_day=current_date.getDate(),current_month=current_date.getMonth(),current_year=current_date.getFullYear(),current_wday=current_date.getDay(),full_month_name_regexp=$$("MONTHNAMES").$compact().$join("|");function match1(match){return match[1]}function match2(match){return match[2]}function match3(match){return match[3]}function match4(match){return match[4]}function fromShortYear(fn){return function(match){var short_year=fn(match);return short_year+=short_year>=69?1900:2e3}}function fromMonthAbbr(fn){return function(match){var abbr=fn(match).toLowerCase();return $$("ABBR_MONTHNAMES").indexOf(abbr)+1}}function toInt(fn){return function(match){var value=fn(match);return parseInt(value,10)}}function fromFullMonthName(fn){return function(match){var month_name=fn(match);return $send($$("MONTHNAMES").$compact(),"map",[],"downcase".$to_proc()).indexOf(month_name.$downcase())+1}}var fn,rule,i,match,rules=[{regexp:/^(\d{2})$/,year:current_year,month:current_month,day:toInt(match1)},{regexp:/^(\d{3})$/,year:current_year,month:0,day:toInt(match1)},{regexp:/^(\d{2})(\d{2})$/,year:current_year,month:toInt(match1),day:toInt(match2)},{regexp:/^(\d{2})(\d{3})$/,year:fromShortYear(toInt(match1)),month:0,day:toInt(match2)},{regexp:/^(\d{2})(\d{2})(\d{2})$/,year:fromShortYear(toInt(match1)),month:toInt(match2),day:toInt(match3)},{regexp:/^(\d{4})(\d{3})$/,year:toInt(match1),month:0,day:toInt(match2)},{regexp:/^(\d{4})(\d{2})(\d{2})$/,year:toInt(match1),month:toInt(match2),day:toInt(match3)},{regexp:/^([a-z]{3})[\s\.\/\-](\d{3,4})$/,year:toInt(match2),month:fromMonthAbbr(match1),day:1},{regexp:/^(\d{1,2})[\s\.\/\-]([a-z]{3})[\s\.\/\-](\d{3,4})$/i,year:toInt(match3),month:fromMonthAbbr(match2),day:toInt(match1)},{regexp:/^([a-z]{3})[\s\.\/\-](\d{1,2})[\s\.\/\-](\d{3,4})$/i,year:toInt(match3),month:fromMonthAbbr(match1),day:toInt(match2)},{regexp:/^(\d{3,4})[\s\.\/\-]([a-z]{3})[\s\.\/\-](\d{1,2})$/i,year:toInt(match1),month:fromMonthAbbr(match2),day:toInt(match3)},{regexp:/^(\-?\d{3,4})[\s\.\/\-](\d{1,2})[\s\.\/\-](\d{1,2})$/,year:toInt(match1),month:toInt(match2),day:toInt(match3)},{regexp:/^(\d{2})[\s\.\/\-](\d{1,2})[\s\.\/\-](\d{1,2})$/,year:(fn=toInt(match1),function(match){var value=fn(match);return comp?value+2e3:value}),month:toInt(match2),day:toInt(match3)},{regexp:/^(\d{1,2})[\s\.\/\-](\d{1,2})[\s\.\/\-](\-?\d{3,4})$/,year:toInt(match3),month:toInt(match2),day:toInt(match1)},{regexp:new RegExp("^("+$$("DAYNAMES").$join("|")+")$","i"),year:current_year,month:current_month,day:function(fn){return function(match){var dayname=fn(match),wday=$send($$("DAYNAMES"),"map",[],"downcase".$to_proc()).indexOf(dayname.$downcase());return current_day-current_wday+wday}}(match1)},{regexp:new RegExp("^("+full_month_name_regexp+")[\\s\\.\\/\\-](\\d{1,2})(th|nd|rd)[\\s\\.\\/\\-](\\-?\\d{3,4})$","i"),year:toInt(match4),month:fromFullMonthName(match1),day:toInt(match2)},{regexp:new RegExp("^("+full_month_name_regexp+")[\\s\\.\\/\\-](\\d{1,2})(th|nd|rd)","i"),year:current_year,month:fromFullMonthName(match1),day:toInt(match2)},{regexp:new RegExp("^(\\d{1,2})(th|nd|rd)[\\s\\.\\/\\-]("+full_month_name_regexp+")[\\s\\.\\/\\-](\\-?\\d{3,4})$","i"),year:toInt(match4),month:fromFullMonthName(match3),day:toInt(match1)},{regexp:new RegExp("^(\\-?\\d{3,4})[\\s\\.\\/\\-]("+full_month_name_regexp+")[\\s\\.\\/\\-](\\d{1,2})(th|nd|rd)$","i"),year:toInt(match1),month:fromFullMonthName(match2),day:toInt(match3)}];for(i=0;i=0&&year<=1970&&result.setFullYear(year),this.$wrap(result)}return this.$raise($$("ArgumentError"),"invalid date")}),-2),$def(self,"$today",(function(){return this.$wrap(new Date)}),0),$def(self,"$gregorian_leap?",(function(year){return new Date(year,1,29).getMonth()-1==0}),1),$alias(self,"civil","new")}(Opal.get_singleton_class(self),$nesting),$def(self,"$initialize",(function(year,month,day,start){return null==year&&(year=-4712),null==month&&(month=1),null==day&&(day=1),null==start&&(start=$$("ITALY")),1582===year&&10===month&&day>4&&day<15&&(day=4),this.date=new Date(year,month-1,day)}),-1),$def(self,"$-",(function(date){if(date.$$is_number){var result=this.$clone();return result.date.setDate(this.date.getDate()-date),result}if(date.date)return Math.round((this.date-date.date)/864e5);this.$raise($$("TypeError"))}),1),$def(self,"$+",(function(date){if(date.$$is_number){var result=this.$clone();return result.date.setDate(this.date.getDate()+date),result}this.$raise($$("TypeError"))}),1),$def(self,"$<",(function(other){var a=this.date,b=other.date;return a.setHours(0,0,0,0),b.setHours(0,0,0,0),a",(function(other){var a=this.date,b=other.date;return a.setHours(0,0,0,0),b.setHours(0,0,0,0),a>b}),1),$def(self,"$>=",(function(other){var a=this.date,b=other.date;return a.setHours(0,0,0,0),b.setHours(0,0,0,0),a>=b}),1),$def(self,"$<=>",(function(other){if(other.$$is_number)return this.$jd()["$<=>"](other);if($$("Date")["$==="](other)){var a=this.date,b=other.date;return a.setHours(0,0,0,0),b.setHours(0,0,0,0),ab?1:0}return nil}),1),$def(self,"$>>",(function(n){n.$$is_number||this.$raise($$("TypeError"));var result=this.$clone(),date=result.date,cur=date.getDate();return date.setDate(1),date.setMonth(date.getMonth()+n),date.setDate(Math.min(cur,days_in_month(date.getFullYear(),date.getMonth()))),result}),1),$def(self,"$<<",(function(n){return n.$$is_number||this.$raise($$("TypeError")),this["$>>"](-n)}),1),$def(self,"$clone",(function(){return $$("Date").$wrap(new Date(this.date.getTime()))}),0),$def(self,"$day",(function(){return this.date.getDate()}),0),$def(self,"$friday?",(function(){return this.$wday()["$=="](5)}),0),$def(self,"$jd",(function(){var ggg,s,a,j1,jd,mm=this.date.getMonth()+1,dd=this.date.getDate(),yy=this.date.getFullYear(),hr=12;return hr=hr+0+0,ggg=1,yy<=1585&&(ggg=0),jd=-1*Math.floor(7*(Math.floor((mm+9)/12)+yy)/4),s=1,mm-9<0&&(s=-1),a=Math.abs(mm-9),j1=Math.floor(yy+s*Math.floor(a/7)),j1=-1*Math.floor(3*(Math.floor(j1/100)+1)/4),jd=(jd=jd+Math.floor(275*mm/9)+dd+ggg*j1)+1721027+2*ggg+367*yy-.5,jd+=hr/24}),0),$def(self,"$julian?",(function(){return this.date 0) err = $post_args.shift(); + if (err == null) err = nil;; + + rest = $post_args;; + return $send($$('Exception2MessageMapper'), 'Raise', [self.$class(), err].concat($to_a(rest))); + }, -1); + $alias(self, "Fail", "Raise"); + (function(self, $parent_nesting) { + + + + Opal.udef(self, '$' + "included");; + return nil; + })(Opal.get_singleton_class(self), $nesting); + return $defs(self, '$included', function $$included(mod) { + + return mod.$extend($$('Exception2MessageMapper')) + }, 1);}, {$$arity: 0, $$s: self}) + }, 1); + + $def(self, '$Raise', function $$Raise($a, $b) { + var $post_args, err, rest, self = this; + + + + $post_args = Opal.slice.call(arguments); + + if ($post_args.length > 0) err = $post_args.shift(); + if (err == null) err = nil;; + + rest = $post_args;; + return $send($$('E2MM'), 'Raise', [self, err].concat($to_a(rest))); + }, -1); + $alias(self, "Fail", "Raise"); + $alias(self, "fail", "Raise"); + + $def(self, '$def_e2message', function $$def_e2message(c, m) { + var self = this; + + return $$('E2MM').$def_e2message(self, c, m) + }, 2); + + $def(self, '$def_exception', function $$def_exception(n, m, s) { + var self = this; + + + + if (s == null) s = $$('StandardError');; + return $$('E2MM').$def_exception(self, n, m, s); + }, -3); + self.MessageMap = $hash2([], {}); + $defs($$('E2MM'), '$def_e2message', function $$def_e2message(k, c, m) { + var self = this; + + + $send($$('E2MM'), 'instance_eval', [], function $$2(){var self = $$2.$$s == null ? this : $$2.$$s, $writer = nil; + if (self.MessageMap == null) self.MessageMap = nil; + + + $writer = [[k, c], m]; + $send(self.MessageMap, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 0, $$s: self}); + return c; + }, 3); + $defs($$('E2MM'), '$def_exception', function $$def_exception(k, n, m, s) { + var self = this, e = nil; + + + + if (s == null) s = $$('StandardError');; + e = $$('Class').$new(s); + $send($$('E2MM'), 'instance_eval', [], function $$3(){var self = $$3.$$s == null ? this : $$3.$$s, $writer = nil; + if (self.MessageMap == null) self.MessageMap = nil; + + + $writer = [[k, e], m]; + $send(self.MessageMap, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 0, $$s: self}); + if ($truthy(k['$const_defined?'](n, false))) { + $send(k, 'module_eval', [], function $$4(){var self = $$4.$$s == null ? this : $$4.$$s; + + return self.$remove_const(n)}, {$$arity: 0, $$s: self}) + }; + return k.$const_set(n, e); + }, -4); + $defs($$('E2MM'), '$Raise', function $$Raise($a, $b, $c) { + var $post_args, klass, err, rest, self = this, form = nil, b = nil; + if ($gvars["@"] == null) $gvars["@"] = nil; + + + + $post_args = Opal.slice.call(arguments); + + if ($post_args.length > 0) klass = $post_args.shift(); + if (klass == null) klass = $$('E2MM');; + + if ($post_args.length > 0) err = $post_args.shift(); + if (err == null) err = nil;; + + rest = $post_args;; + if ($truthy((form = self.$e2mm_message(klass, err)))) { + + b = ($truthy($gvars["@"]['$nil?']()) ? (self.$caller(1)) : ($gvars["@"])); + if ($truthy(b['$[]'](0)['$=~']($regexp(["^", $$('Regexp').$quote($enc("./e2mmap.rb", "US-ASCII")), ":"])))) { + b.$shift() + }; + return self.$raise(err, $send(self, 'sprintf', [form].concat($to_a(rest))), b); + } else { + return $$('E2MM').$Fail($$('E2MM'), $$('ErrNotRegisteredException'), err.$inspect()) + }; + }, -1); + (function(self, $parent_nesting) { + + return $alias(self, "Fail", "Raise") + })(Opal.get_singleton_class($$('E2MM')), $nesting); + $defs($$('E2MM'), '$e2mm_message', function $$e2mm_message(klass, exp) {try { + + var self = this; + + + $send(klass.$ancestors(), 'each', [], function $$5(c){var self = $$5.$$s == null ? this : $$5.$$s, mes = nil; + if (self.MessageMap == null) self.MessageMap = nil; + + + + if (c == null) c = nil;; + if ($truthy((mes = self.MessageMap['$[]']([c, exp])))) { + Opal.ret(mes) + } else { + return nil + };}, {$$arity: 1, $$s: self}); + return nil; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 2); + (function(self, $parent_nesting) { + + return $alias(self, "message", "e2mm_message") + })(Opal.get_singleton_class(self), $nesting); + return $$('E2MM').$def_exception($$('E2MM'), "ErrNotRegisteredException", "not registered exception(%s)"); + })($nesting[0], $nesting) +}; diff --git a/opal/1.4.1/e2mmap.min.js b/opal/1.4.1/e2mmap.min.js new file mode 100644 index 00000000..5551474f --- /dev/null +++ b/opal/1.4.1/e2mmap.min.js @@ -0,0 +1 @@ +Opal.modules.e2mmap=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$const_set=Opal.const_set,$send2=Opal.send2,$find_super=Opal.find_super,$truthy=Opal.truthy,$rb_lt=Opal.rb_lt,$defs=Opal.defs,$send=Opal.send,$to_a=Opal.to_a,$def=Opal.def,$alias=Opal.alias,$hash2=Opal.hash2,$rb_minus=Opal.rb_minus,$gvars=Opal.gvars,$regexp=Opal.regexp,$enc=Opal.enc;return Opal.add_stubs("<,bind,module_eval,Raise,class,extend,def_e2message,def_exception,instance_eval,[]=,-,new,const_defined?,remove_const,const_set,e2mm_message,nil?,caller,=~,[],quote,shift,raise,sprintf,Fail,inspect,each,ancestors"),function($base,$parent_nesting){var self=$module($base,"Exception2MessageMapper"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"E2MM",$$("Exception2MessageMapper")),$defs($$("E2MM"),"$extend_object",(function $$extend_object(cl){var $yield=$$extend_object.$$p||nil;return delete $$extend_object.$$p,$send2(this,$find_super(this,"extend_object",$$extend_object,!1,!0),"extend_object",[cl],$yield),$truthy($rb_lt(cl,$$("E2MM")))?nil:cl.$bind(this)}),1),$def(self,"$bind",(function(cl){return $send(this,"module_eval",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return $def(self,"$Raise",(function($a,$b){var $post_args,err,rest,self=this;return($post_args=Opal.slice.call(arguments)).length>0&&(err=$post_args.shift()),null==err&&(err=nil),rest=$post_args,$send($$("Exception2MessageMapper"),"Raise",[self.$class(),err].concat($to_a(rest)))}),-1),$alias(self,"Fail","Raise"),function(self,$parent_nesting){Opal.udef(self,"$included")}(Opal.get_singleton_class(self)),$defs(self,"$included",(function(mod){return mod.$extend($$("Exception2MessageMapper"))}),1)}),{$$arity:0,$$s:this})}),1),$def(self,"$Raise",(function($a,$b){var $post_args,err,rest,self=this;return($post_args=Opal.slice.call(arguments)).length>0&&(err=$post_args.shift()),null==err&&(err=nil),rest=$post_args,$send($$("E2MM"),"Raise",[self,err].concat($to_a(rest)))}),-1),$alias(self,"Fail","Raise"),$alias(self,"fail","Raise"),$def(self,"$def_e2message",(function(c,m){return $$("E2MM").$def_e2message(this,c,m)}),2),$def(self,"$def_exception",(function(n,m,s){return null==s&&(s=$$("StandardError")),$$("E2MM").$def_exception(this,n,m,s)}),-3),self.MessageMap=$hash2([],{}),$defs($$("E2MM"),"$def_e2message",(function(k,c,m){return $send($$("E2MM"),"instance_eval",[],(function $$2(){var $writer,self=null==$$2.$$s?this:$$2.$$s;return null==self.MessageMap&&(self.MessageMap=nil),$writer=[[k,c],m],$send(self.MessageMap,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:0,$$s:this}),c}),3),$defs($$("E2MM"),"$def_exception",(function(k,n,m,s){var e;return null==s&&(s=$$("StandardError")),e=$$("Class").$new(s),$send($$("E2MM"),"instance_eval",[],(function $$3(){var $writer,self=null==$$3.$$s?this:$$3.$$s;return null==self.MessageMap&&(self.MessageMap=nil),$writer=[[k,e],m],$send(self.MessageMap,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:0,$$s:this}),$truthy(k["$const_defined?"](n,!1))&&$send(k,"module_eval",[],(function $$4(){return(null==$$4.$$s?this:$$4.$$s).$remove_const(n)}),{$$arity:0,$$s:this}),k.$const_set(n,e)}),-4),$defs($$("E2MM"),"$Raise",(function($a,$b,$c){var $post_args,klass,err,rest,self=this,form=nil,b=nil;return null==$gvars["@"]&&($gvars["@"]=nil),($post_args=Opal.slice.call(arguments)).length>0&&(klass=$post_args.shift()),null==klass&&(klass=$$("E2MM")),$post_args.length>0&&(err=$post_args.shift()),null==err&&(err=nil),rest=$post_args,$truthy(form=self.$e2mm_message(klass,err))?(b=$truthy($gvars["@"]["$nil?"]())?self.$caller(1):$gvars["@"],$truthy(b["$[]"](0)["$=~"]($regexp(["^",$$("Regexp").$quote($enc("./e2mmap.rb","US-ASCII")),":"])))&&b.$shift(),self.$raise(err,$send(self,"sprintf",[form].concat($to_a(rest))),b)):$$("E2MM").$Fail($$("E2MM"),$$("ErrNotRegisteredException"),err.$inspect())}),-1),function(self,$parent_nesting){$alias(self,"Fail","Raise")}(Opal.get_singleton_class($$("E2MM"))),$defs($$("E2MM"),"$e2mm_message",(function(klass,exp){try{return $send(klass.$ancestors(),"each",[],(function $$5(c){var mes,self=null==$$5.$$s?this:$$5.$$s;if(null==self.MessageMap&&(self.MessageMap=nil),null==c&&(c=nil),!$truthy(mes=self.MessageMap["$[]"]([c,exp])))return nil;Opal.ret(mes)}),{$$arity:1,$$s:this}),nil}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),2),function(self,$parent_nesting){$alias(self,"message","e2mm_message")}(Opal.get_singleton_class(self)),$$("E2MM").$def_exception($$("E2MM"),"ErrNotRegisteredException","not registered exception(%s)")}($nesting[0],$nesting)}; diff --git a/opal/1.4.1/e2mmap.min.js.gz b/opal/1.4.1/e2mmap.min.js.gz new file mode 100644 index 00000000..8a77a7c2 Binary files /dev/null and b/opal/1.4.1/e2mmap.min.js.gz differ diff --git a/opal/1.4.1/encoding.js b/opal/1.4.1/encoding.js new file mode 100644 index 00000000..29cc1161 --- /dev/null +++ b/opal/1.4.1/encoding.js @@ -0,0 +1,6 @@ +Opal.modules["encoding"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, nil = Opal.nil; + + Opal.add_stubs('warn'); + return self.$warn("DEPRECATION: encoding is now part of the core library, requiring it is deprecated") +}; diff --git a/opal/1.4.1/encoding.min.js b/opal/1.4.1/encoding.min.js new file mode 100644 index 00000000..2c6551af --- /dev/null +++ b/opal/1.4.1/encoding.min.js @@ -0,0 +1 @@ +Opal.modules.encoding=function(Opal){var self=Opal.top;Opal.nil;return Opal.add_stubs("warn"),self.$warn("DEPRECATION: encoding is now part of the core library, requiring it is deprecated")}; diff --git a/opal/1.4.1/encoding.min.js.gz b/opal/1.4.1/encoding.min.js.gz new file mode 100644 index 00000000..5d66226e Binary files /dev/null and b/opal/1.4.1/encoding.min.js.gz differ diff --git a/opal/1.4.1/enumerator.js b/opal/1.4.1/enumerator.js new file mode 100644 index 00000000..53a77b72 --- /dev/null +++ b/opal/1.4.1/enumerator.js @@ -0,0 +1,3 @@ +Opal.modules["enumerator"] = function(Opal) {/* Generated by Opal 1.4.1 */ + return Opal.nil; +}; diff --git a/opal/1.4.1/enumerator.min.js b/opal/1.4.1/enumerator.min.js new file mode 100644 index 00000000..2cc564f1 --- /dev/null +++ b/opal/1.4.1/enumerator.min.js @@ -0,0 +1 @@ +Opal.modules.enumerator=function(Opal){return Opal.nil}; diff --git a/opal/1.4.1/enumerator.min.js.gz b/opal/1.4.1/enumerator.min.js.gz new file mode 100644 index 00000000..9cd43b08 Binary files /dev/null and b/opal/1.4.1/enumerator.min.js.gz differ diff --git a/opal/1.4.1/erb.js b/opal/1.4.1/erb.js new file mode 100644 index 00000000..3c18ecd4 --- /dev/null +++ b/opal/1.4.1/erb.js @@ -0,0 +1,125 @@ +Opal.modules["template"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $defs = Opal.defs, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $alias = Opal.alias; + + Opal.add_stubs('[],[]=,-,keys,attr_reader,instance_exec,new,to_proc,<<,join'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Template'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.name = $proto.body = nil; + + self._cache = $hash2([], {}); + $defs(self, '$[]', function $Template_$$$1(name) { + var self = this, $ret_or_1 = nil; + if (self._cache == null) self._cache = nil; + + if ($truthy(($ret_or_1 = self._cache['$[]'](name)))) { + return $ret_or_1 + } else { + return self._cache['$[]']("templates/" + (name)) + } + }, 1); + $defs(self, '$[]=', function $Template_$$$eq$2(name, instance) { + var self = this, $writer = nil; + if (self._cache == null) self._cache = nil; + + + $writer = [name, instance]; + $send(self._cache, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }, 2); + $defs(self, '$paths', function $$paths() { + var self = this; + if (self._cache == null) self._cache = nil; + + return self._cache.$keys() + }, 0); + self.$attr_reader("body"); + + $def(self, '$initialize', function $$initialize(name) { + var body = $$initialize.$$p || nil, $a, self = this, $writer = nil; + + delete $$initialize.$$p; + + ; + $a = [name, body], (self.name = $a[0]), (self.body = $a[1]), $a; + + $writer = [name, self]; + $send($$('Template'), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + }, 1); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return "#" + }, 0); + + $def(self, '$render', function $$render(ctx) { + var self = this; + + + + if (ctx == null) ctx = self;; + return $send(ctx, 'instance_exec', [$$('OutputBuffer').$new()], self.body.$to_proc()); + }, -1); + return (function($base, $super) { + var self = $klass($base, $super, 'OutputBuffer'); + + var $proto = self.$$prototype; + + $proto.buffer = nil; + + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return (self.buffer = []) + }, 0); + + $def(self, '$append', function $$append(str) { + var self = this; + + return self.buffer['$<<'](str) + }, 1); + + $def(self, '$join', function $$join() { + var self = this; + + return self.buffer.$join() + }, 0); + return $alias(self, "append=", "append"); + })($nesting[0], null); + })($nesting[0], null, $nesting) +}; + +Opal.modules["erb"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $klass = Opal.klass, $module = Opal.module, $def = Opal.def, $alias = Opal.alias; + + Opal.add_stubs('require,module_function'); + + self.$require("template"); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ERB'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base) { + var self = $module($base, 'Util'); + + + + var escapes = { '&': '&', '<': '<', '>': '>', '"': '"', "'": '''};; + var escape_regexp = /[&<>"']/g;; + + $def(self, '$html_escape', function $$html_escape(str) { + + return ("" + str).replace(escape_regexp, function (m) { return escapes[m] }); + }, 1); + $alias(self, "h", "html_escape"); + self.$module_function("h"); + return self.$module_function("html_escape"); + })($nesting[0]) + })($nesting[0], null, $nesting); +}; diff --git a/opal/1.4.1/erb.min.js b/opal/1.4.1/erb.min.js new file mode 100644 index 00000000..c1e2cf86 --- /dev/null +++ b/opal/1.4.1/erb.min.js @@ -0,0 +1 @@ +Opal.modules.template=function(Opal){var $nesting=[],nil=Opal.nil,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy,$defs=Opal.defs,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$alias=Opal.alias;return Opal.add_stubs("[],[]=,-,keys,attr_reader,instance_exec,new,to_proc,<<,join"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Template"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.name=$proto.body=nil,self._cache=$hash2([],{}),$defs(self,"$[]",(function(name){var $ret_or_1;return null==this._cache&&(this._cache=nil),$truthy($ret_or_1=this._cache["$[]"](name))?$ret_or_1:this._cache["$[]"]("templates/"+name)}),1),$defs(self,"$[]=",(function(name,instance){var $writer;return null==this._cache&&(this._cache=nil),$writer=[name,instance],$send(this._cache,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),2),$defs(self,"$paths",(function(){return null==this._cache&&(this._cache=nil),this._cache.$keys()}),0),self.$attr_reader("body"),$def(self,"$initialize",(function $$initialize(name){var $a,$writer,body=$$initialize.$$p||nil;return delete $$initialize.$$p,$a=[name,body],this.name=$a[0],this.body=$a[1],$writer=[name,this],$send($$("Template"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$inspect",(function(){return"#"}),0),$def(self,"$render",(function(ctx){return null==ctx&&(ctx=this),$send(ctx,"instance_exec",[$$("OutputBuffer").$new()],this.body.$to_proc())}),-1),function($base,$super){var self=$klass($base,null,"OutputBuffer");return self.$$prototype.buffer=nil,$def(self,"$initialize",(function(){return this.buffer=[]}),0),$def(self,"$append",(function(str){return this.buffer["$<<"](str)}),1),$def(self,"$join",(function(){return this.buffer.$join()}),0),$alias(self,"append=","append")}($nesting[0])}($nesting[0],0,$nesting)},Opal.modules.erb=function(Opal){var $base,$parent_nesting,self=Opal.top,$nesting=[],$klass=(Opal.nil,Opal.klass),$module=Opal.module,$def=Opal.def,$alias=Opal.alias;return Opal.add_stubs("require,module_function"),self.$require("template"),$base=$nesting[0],$parent_nesting=$nesting,function($base){var self=$module($base,"Util"),escapes={"&":"&","<":"<",">":">",'"':""","'":"'"},escape_regexp=/[&<>"']/g;return $def(self,"$html_escape",(function(str){return(""+str).replace(escape_regexp,(function(m){return escapes[m]}))}),1),$alias(self,"h","html_escape"),self.$module_function("h"),self.$module_function("html_escape")}([$klass($base,null,"ERB")].concat($parent_nesting)[0])}; diff --git a/opal/1.4.1/erb.min.js.gz b/opal/1.4.1/erb.min.js.gz new file mode 100644 index 00000000..ccc13e31 Binary files /dev/null and b/opal/1.4.1/erb.min.js.gz differ diff --git a/opal/1.4.1/file.js b/opal/1.4.1/file.js new file mode 100644 index 00000000..4a197aea --- /dev/null +++ b/opal/1.4.1/file.js @@ -0,0 +1,6 @@ +Opal.modules["file"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, nil = Opal.nil; + + Opal.add_stubs('warn'); + return self.$warn("File is already part of corelib now, you don't need to require it anymore.") +}; diff --git a/opal/1.4.1/file.min.js b/opal/1.4.1/file.min.js new file mode 100644 index 00000000..746717ab --- /dev/null +++ b/opal/1.4.1/file.min.js @@ -0,0 +1 @@ +Opal.modules.file=function(Opal){var self=Opal.top;Opal.nil;return Opal.add_stubs("warn"),self.$warn("File is already part of corelib now, you don't need to require it anymore.")}; diff --git a/opal/1.4.1/file.min.js.gz b/opal/1.4.1/file.min.js.gz new file mode 100644 index 00000000..0f82173a Binary files /dev/null and b/opal/1.4.1/file.min.js.gz differ diff --git a/opal/1.4.1/fileutils.js b/opal/1.4.1/fileutils.js new file mode 100644 index 00000000..afe14e98 --- /dev/null +++ b/opal/1.4.1/fileutils.js @@ -0,0 +1,3 @@ +Opal.modules["fileutils"] = function(Opal) {/* Generated by Opal 1.4.1 */ + return Opal.nil; +}; diff --git a/opal/1.4.1/fileutils.min.js b/opal/1.4.1/fileutils.min.js new file mode 100644 index 00000000..b5e96f1b --- /dev/null +++ b/opal/1.4.1/fileutils.min.js @@ -0,0 +1 @@ +Opal.modules.fileutils=function(Opal){return Opal.nil}; diff --git a/opal/1.4.1/fileutils.min.js.gz b/opal/1.4.1/fileutils.min.js.gz new file mode 100644 index 00000000..6ee80c07 Binary files /dev/null and b/opal/1.4.1/fileutils.min.js.gz differ diff --git a/opal/1.4.1/forwardable.js b/opal/1.4.1/forwardable.js new file mode 100644 index 00000000..b0e4aa0d --- /dev/null +++ b/opal/1.4.1/forwardable.js @@ -0,0 +1,168 @@ +Opal.modules["forwardable"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $send = Opal.send, $truthy = Opal.truthy, $def = Opal.def, $to_a = Opal.to_a, $alias = Opal.alias; + + Opal.add_stubs('each,respond_to?,def_instance_delegator,include?,start_with?,to_s,define_method,__send__,instance_variable_get,to_proc,def_single_delegator,define_singleton_method'); + + (function($base) { + var self = $module($base, 'Forwardable'); + + + + + $def(self, '$instance_delegate', function $$instance_delegate(hash) { + var self = this; + + return $send(hash, 'each', [], function $$1(methods, accessor){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (methods == null) methods = nil;; + + if (accessor == null) accessor = nil;; + if (!$truthy(methods['$respond_to?']("each"))) { + methods = [methods] + }; + return $send(methods, 'each', [], function $$2(method){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (method == null) method = nil;; + return self.$def_instance_delegator(accessor, method);}, {$$arity: 1, $$s: self});}, {$$arity: 2, $$s: self}) + }, 1); + + $def(self, '$def_instance_delegators', function $$def_instance_delegators(accessor, $a) { + var $post_args, methods, self = this; + + + + $post_args = Opal.slice.call(arguments, 1); + + methods = $post_args;; + return $send(methods, 'each', [], function $$3(method){var self = $$3.$$s == null ? this : $$3.$$s; + + + + if (method == null) method = nil;; + if ($truthy(["__send__", "__id__"]['$include?'](method))) { + return nil; + }; + return self.$def_instance_delegator(accessor, method);}, {$$arity: 1, $$s: self}); + }, -2); + + $def(self, '$def_instance_delegator', function $$def_instance_delegator(accessor, method, ali) { + var $yield = $$def_instance_delegator.$$p || nil, self = this; + + delete $$def_instance_delegator.$$p; + + + if (ali == null) ali = method;; + if ($truthy(accessor.$to_s()['$start_with?']("@"))) { + return $send(self, 'define_method', [ali], function $$4($a){var block = $$4.$$p || nil, $post_args, args, self = $$4.$$s == null ? this : $$4.$$s; + + delete $$4.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send(self.$instance_variable_get(accessor), '__send__', [method].concat($to_a(args)), block.$to_proc());}, {$$arity: -1, $$s: self}) + } else { + return $send(self, 'define_method', [ali], function $$5($a){var block = $$5.$$p || nil, $post_args, args, self = $$5.$$s == null ? this : $$5.$$s; + + delete $$5.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send(self.$__send__(accessor), '__send__', [method].concat($to_a(args)), block.$to_proc());}, {$$arity: -1, $$s: self}) + }; + }, -3); + $alias(self, "delegate", "instance_delegate"); + $alias(self, "def_delegators", "def_instance_delegators"); + return $alias(self, "def_delegator", "def_instance_delegator"); + })($nesting[0]); + return (function($base) { + var self = $module($base, 'SingleForwardable'); + + + + + $def(self, '$single_delegate', function $$single_delegate(hash) { + var self = this; + + return $send(hash, 'each', [], function $$6(methods, accessor){var self = $$6.$$s == null ? this : $$6.$$s; + + + + if (methods == null) methods = nil;; + + if (accessor == null) accessor = nil;; + if (!$truthy(methods['$respond_to?']("each"))) { + methods = [methods] + }; + return $send(methods, 'each', [], function $$7(method){var self = $$7.$$s == null ? this : $$7.$$s; + + + + if (method == null) method = nil;; + return self.$def_single_delegator(accessor, method);}, {$$arity: 1, $$s: self});}, {$$arity: 2, $$s: self}) + }, 1); + + $def(self, '$def_single_delegators', function $$def_single_delegators(accessor, $a) { + var $post_args, methods, self = this; + + + + $post_args = Opal.slice.call(arguments, 1); + + methods = $post_args;; + return $send(methods, 'each', [], function $$8(method){var self = $$8.$$s == null ? this : $$8.$$s; + + + + if (method == null) method = nil;; + if ($truthy(["__send__", "__id__"]['$include?'](method))) { + return nil; + }; + return self.$def_single_delegator(accessor, method);}, {$$arity: 1, $$s: self}); + }, -2); + + $def(self, '$def_single_delegator', function $$def_single_delegator(accessor, method, ali) { + var $yield = $$def_single_delegator.$$p || nil, self = this; + + delete $$def_single_delegator.$$p; + + + if (ali == null) ali = method;; + if ($truthy(accessor.$to_s()['$start_with?']("@"))) { + return $send(self, 'define_singleton_method', [ali], function $$9($a){var block = $$9.$$p || nil, $post_args, args, self = $$9.$$s == null ? this : $$9.$$s; + + delete $$9.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send(self.$instance_variable_get(accessor), '__send__', [method].concat($to_a(args)), block.$to_proc());}, {$$arity: -1, $$s: self}) + } else { + return $send(self, 'define_singleton_method', [ali], function $$10($a){var block = $$10.$$p || nil, $post_args, args, self = $$10.$$s == null ? this : $$10.$$s; + + delete $$10.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send(self.$__send__(accessor), '__send__', [method].concat($to_a(args)), block.$to_proc());}, {$$arity: -1, $$s: self}) + }; + }, -3); + $alias(self, "delegate", "single_delegate"); + $alias(self, "def_delegators", "def_single_delegators"); + return $alias(self, "def_delegator", "def_single_delegator"); + })($nesting[0]); +}; diff --git a/opal/1.4.1/forwardable.min.js b/opal/1.4.1/forwardable.min.js new file mode 100644 index 00000000..591724b0 --- /dev/null +++ b/opal/1.4.1/forwardable.min.js @@ -0,0 +1 @@ +Opal.modules.forwardable=function(Opal){var self,$nesting=[],nil=Opal.nil,$module=Opal.module,$send=Opal.send,$truthy=Opal.truthy,$def=Opal.def,$to_a=Opal.to_a,$alias=Opal.alias;return Opal.add_stubs("each,respond_to?,def_instance_delegator,include?,start_with?,to_s,define_method,__send__,instance_variable_get,to_proc,def_single_delegator,define_singleton_method"),self=$module($nesting[0],"Forwardable"),$def(self,"$instance_delegate",(function(hash){return $send(hash,"each",[],(function $$1(methods,accessor){var self=null==$$1.$$s?this:$$1.$$s;return null==methods&&(methods=nil),null==accessor&&(accessor=nil),$truthy(methods["$respond_to?"]("each"))||(methods=[methods]),$send(methods,"each",[],(function $$2(method){return null==method&&(method=nil),(null==$$2.$$s?this:$$2.$$s).$def_instance_delegator(accessor,method)}),{$$arity:1,$$s:self})}),{$$arity:2,$$s:this})}),1),$def(self,"$def_instance_delegators",(function(accessor,$a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments,1),$send($post_args,"each",[],(function $$3(method){var self=null==$$3.$$s?this:$$3.$$s;return null==method&&(method=nil),$truthy(["__send__","__id__"]["$include?"](method))?nil:self.$def_instance_delegator(accessor,method)}),{$$arity:1,$$s:self})}),-2),$def(self,"$def_instance_delegator",(function $$def_instance_delegator(accessor,method,ali){return delete $$def_instance_delegator.$$p,null==ali&&(ali=method),$truthy(accessor.$to_s()["$start_with?"]("@"))?$send(this,"define_method",[ali],(function $$4($a){var args,block=$$4.$$p||nil,self=null==$$4.$$s?this:$$4.$$s;return delete $$4.$$p,args=Opal.slice.call(arguments),$send(self.$instance_variable_get(accessor),"__send__",[method].concat($to_a(args)),block.$to_proc())}),{$$arity:-1,$$s:this}):$send(this,"define_method",[ali],(function $$5($a){var args,block=$$5.$$p||nil,self=null==$$5.$$s?this:$$5.$$s;return delete $$5.$$p,args=Opal.slice.call(arguments),$send(self.$__send__(accessor),"__send__",[method].concat($to_a(args)),block.$to_proc())}),{$$arity:-1,$$s:this})}),-3),$alias(self,"delegate","instance_delegate"),$alias(self,"def_delegators","def_instance_delegators"),$alias(self,"def_delegator","def_instance_delegator"),function($base){var self=$module($base,"SingleForwardable");return $def(self,"$single_delegate",(function(hash){return $send(hash,"each",[],(function $$6(methods,accessor){var self=null==$$6.$$s?this:$$6.$$s;return null==methods&&(methods=nil),null==accessor&&(accessor=nil),$truthy(methods["$respond_to?"]("each"))||(methods=[methods]),$send(methods,"each",[],(function $$7(method){return null==method&&(method=nil),(null==$$7.$$s?this:$$7.$$s).$def_single_delegator(accessor,method)}),{$$arity:1,$$s:self})}),{$$arity:2,$$s:this})}),1),$def(self,"$def_single_delegators",(function(accessor,$a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments,1),$send($post_args,"each",[],(function $$8(method){var self=null==$$8.$$s?this:$$8.$$s;return null==method&&(method=nil),$truthy(["__send__","__id__"]["$include?"](method))?nil:self.$def_single_delegator(accessor,method)}),{$$arity:1,$$s:self})}),-2),$def(self,"$def_single_delegator",(function $$def_single_delegator(accessor,method,ali){return delete $$def_single_delegator.$$p,null==ali&&(ali=method),$truthy(accessor.$to_s()["$start_with?"]("@"))?$send(this,"define_singleton_method",[ali],(function $$9($a){var args,block=$$9.$$p||nil,self=null==$$9.$$s?this:$$9.$$s;return delete $$9.$$p,args=Opal.slice.call(arguments),$send(self.$instance_variable_get(accessor),"__send__",[method].concat($to_a(args)),block.$to_proc())}),{$$arity:-1,$$s:this}):$send(this,"define_singleton_method",[ali],(function $$10($a){var args,block=$$10.$$p||nil,self=null==$$10.$$s?this:$$10.$$s;return delete $$10.$$p,args=Opal.slice.call(arguments),$send(self.$__send__(accessor),"__send__",[method].concat($to_a(args)),block.$to_proc())}),{$$arity:-1,$$s:this})}),-3),$alias(self,"delegate","single_delegate"),$alias(self,"def_delegators","def_single_delegators"),$alias(self,"def_delegator","def_single_delegator")}($nesting[0])}; diff --git a/opal/1.4.1/forwardable.min.js.gz b/opal/1.4.1/forwardable.min.js.gz new file mode 100644 index 00000000..48d16d02 Binary files /dev/null and b/opal/1.4.1/forwardable.min.js.gz differ diff --git a/opal/1.4.1/gjs.js b/opal/1.4.1/gjs.js new file mode 100644 index 00000000..e6ab8cdf --- /dev/null +++ b/opal/1.4.1/gjs.js @@ -0,0 +1,50 @@ +Opal.modules["gjs/io"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil; + + + /* global imports */; + + var GLib = imports.gi.GLib; + var ByteArray = imports.byteArray; + + var stdin = GLib.IOChannel.unix_new(0); + var stdout = GLib.IOChannel.unix_new(1); + var stderr = GLib.IOChannel.unix_new(2); + + Opal.gvars.stdout.write_proc = function(s) { + var buf = ByteArray.fromString(s); + stdout.write_chars(buf, buf.length); + stdout.flush(); + } + + Opal.gvars.stderr.write_proc = function(s) { + var buf = ByteArray.fromString(s); + stderr.write_chars(buf, buf.length); + stderr.flush(); + } + + Opal.gvars.stdin.read_proc = function(_s) { + var out = stdin.read_line(); + if (out[0] == GLib.IOStatus.EOF) return nil; + return out[1].toString(); + } +; +}; + +Opal.modules["gjs/kernel"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $const_set = Opal.const_set; + + + /* global ARGV */; + $const_set($nesting[0], 'ARGV', ARGV); + return Opal.exit = imports.system.exit;; +}; + +Opal.modules["gjs"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, nil = Opal.nil; + + Opal.add_stubs('require'); + + self.$require("gjs/io"); + return self.$require("gjs/kernel"); +}; diff --git a/opal/1.4.1/gjs.min.js b/opal/1.4.1/gjs.min.js new file mode 100644 index 00000000..b7256da6 --- /dev/null +++ b/opal/1.4.1/gjs.min.js @@ -0,0 +1 @@ +Opal.modules["gjs/io"]=function(Opal){var nil=Opal.nil,GLib=imports.gi.GLib,ByteArray=imports.byteArray,stdin=GLib.IOChannel.unix_new(0),stdout=GLib.IOChannel.unix_new(1),stderr=GLib.IOChannel.unix_new(2);Opal.gvars.stdout.write_proc=function(s){var buf=ByteArray.fromString(s);stdout.write_chars(buf,buf.length),stdout.flush()},Opal.gvars.stderr.write_proc=function(s){var buf=ByteArray.fromString(s);stderr.write_chars(buf,buf.length),stderr.flush()},Opal.gvars.stdin.read_proc=function(_s){var out=stdin.read_line();return out[0]==GLib.IOStatus.EOF?nil:out[1].toString()}},Opal.modules["gjs/kernel"]=function(Opal){Opal.nil;return(0,Opal.const_set)([][0],"ARGV",ARGV),Opal.exit=imports.system.exit},Opal.modules.gjs=function(Opal){var self=Opal.top;Opal.nil;return Opal.add_stubs("require"),self.$require("gjs/io"),self.$require("gjs/kernel")}; diff --git a/opal/1.4.1/gjs.min.js.gz b/opal/1.4.1/gjs.min.js.gz new file mode 100644 index 00000000..3b7cfa11 Binary files /dev/null and b/opal/1.4.1/gjs.min.js.gz differ diff --git a/opal/1.4.1/headless_chrome.js b/opal/1.4.1/headless_chrome.js new file mode 100644 index 00000000..07f9b0f2 --- /dev/null +++ b/opal/1.4.1/headless_chrome.js @@ -0,0 +1,15 @@ +Opal.modules["headless_chrome"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil; + + + Opal.exit = function(code) { + // You can't exit from the browser. + // The first call to Opal.exit should save an exit code. + // All next invocations must be ignored. + + if (typeof(window.OPAL_EXIT_CODE) === "undefined") { + window.OPAL_EXIT_CODE = code; + } + } + +}; diff --git a/opal/1.4.1/headless_chrome.min.js b/opal/1.4.1/headless_chrome.min.js new file mode 100644 index 00000000..20ffccd9 --- /dev/null +++ b/opal/1.4.1/headless_chrome.min.js @@ -0,0 +1 @@ +Opal.modules.headless_chrome=function(Opal){Opal.nil;Opal.exit=function(code){void 0===window.OPAL_EXIT_CODE&&(window.OPAL_EXIT_CODE=code)}}; diff --git a/opal/1.4.1/headless_chrome.min.js.gz b/opal/1.4.1/headless_chrome.min.js.gz new file mode 100644 index 00000000..1e313b6d Binary files /dev/null and b/opal/1.4.1/headless_chrome.min.js.gz differ diff --git a/opal/1.4.1/iconv.js b/opal/1.4.1/iconv.js new file mode 100644 index 00000000..0097d886 --- /dev/null +++ b/opal/1.4.1/iconv.js @@ -0,0 +1,3 @@ +Opal.modules["iconv"] = function(Opal) {/* Generated by Opal 1.4.1 */ + return Opal.nil; +}; diff --git a/opal/1.4.1/iconv.min.js b/opal/1.4.1/iconv.min.js new file mode 100644 index 00000000..2190d741 --- /dev/null +++ b/opal/1.4.1/iconv.min.js @@ -0,0 +1 @@ +Opal.modules.iconv=function(Opal){return Opal.nil}; diff --git a/opal/1.4.1/iconv.min.js.gz b/opal/1.4.1/iconv.min.js.gz new file mode 100644 index 00000000..1c42245c Binary files /dev/null and b/opal/1.4.1/iconv.min.js.gz differ diff --git a/opal/1.4.1/index.html b/opal/1.4.1/index.html new file mode 100644 index 00000000..03f72a12 --- /dev/null +++ b/opal/1.4.1/index.html @@ -0,0 +1,845 @@ + + + + + Opal: CDN distribution for version 1.4.1 + + + +

    Opal: CDN distribution for version 1.4.1

    + + + + diff --git a/opal/1.4.1/js.js b/opal/1.4.1/js.js new file mode 100644 index 00000000..18a048d3 --- /dev/null +++ b/opal/1.4.1/js.js @@ -0,0 +1,103 @@ +Opal.modules["js"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $def = Opal.def, $truthy = Opal.truthy, $alias = Opal.alias; + + Opal.add_stubs('insert,<<,global,extend'); + return (function($base) { + var self = $module($base, 'JS'); + + + + + $def(self, '$delete', function $JS_delete$1(object, property) { + + return delete object[property] + }, 2); + + $def(self, '$global', function $$global() { + + return Opal.global; + }, 0); + + $def(self, '$in', function $JS_in$2(property, object) { + + return property in object + }, 2); + + $def(self, '$instanceof', function $JS_instanceof$3(value, func) { + + return value instanceof func + }, 2); + if ($truthy(typeof Function.prototype.bind == 'function')) { + + $def(self, '$new', function $JS_new$4(func, $a) { + var block = $JS_new$4.$$p || nil, $post_args, args; + + delete $JS_new$4.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + args.$insert(0, this); + if ($truthy(block)) { + args['$<<'](block) + }; + return new (func.bind.apply(func, args))(); + }, -2) + } else { + + $def(self, '$new', function $JS_new$5(func, $a) { + var block = $JS_new$5.$$p || nil, $post_args, args, f = nil; + + delete $JS_new$5.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + if ($truthy(block)) { + args['$<<'](block) + }; + f = function(){return func.apply(this, args)}; + f["prototype"] = func["prototype"]; + return new f();; + }, -2) + }; + + $def(self, '$typeof', function $JS_typeof$6(value) { + + return typeof value + }, 1); + + $def(self, '$void', function $JS_void$7(expr) { + + return void expr + }, 1); + + $def(self, '$call', function $$call(func, $a) { + var block = $$call.$$p || nil, $post_args, args, self = this, g = nil; + + delete $$call.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + g = self.$global(); + if ($truthy(block)) { + args['$<<'](block) + }; + return g[func].apply(g, args); + }, -2); + + $def(self, '$[]', function $JS_$$$8(name) { + + return Opal.global[name] + }, 1); + $alias(self, "method_missing", "call"); + return self.$extend(self); + })($nesting[0]) +}; diff --git a/opal/1.4.1/js.min.js b/opal/1.4.1/js.min.js new file mode 100644 index 00000000..bd0b567d --- /dev/null +++ b/opal/1.4.1/js.min.js @@ -0,0 +1 @@ +Opal.modules.js=function(Opal){var self,nil=Opal.nil,$module=Opal.module,$def=Opal.def,$truthy=Opal.truthy,$alias=Opal.alias;return Opal.add_stubs("insert,<<,global,extend"),self=$module([][0],"JS"),$def(self,"$delete",(function(object,property){return delete object[property]}),2),$def(self,"$global",(function(){return Opal.global}),0),$def(self,"$in",(function(property,object){return property in object}),2),$def(self,"$instanceof",(function(value,func){return value instanceof func}),2),$truthy("function"==typeof Function.prototype.bind)?$def(self,"$new",(function $JS_new$4(func,$a){var args,block=$JS_new$4.$$p||nil;return delete $JS_new$4.$$p,(args=Opal.slice.call(arguments,1)).$insert(0,this),$truthy(block)&&args["$<<"](block),new(func.bind.apply(func,args))}),-2):$def(self,"$new",(function $JS_new$5(func,$a){var $post_args,args,block=$JS_new$5.$$p||nil,f=nil;return delete $JS_new$5.$$p,$post_args=Opal.slice.call(arguments,1),args=$post_args,$truthy(block)&&args["$<<"](block),(f=function(){return func.apply(this,args)}).prototype=func.prototype,new f}),-2),$def(self,"$typeof",(function(value){return typeof value}),1),$def(self,"$void",(function(expr){}),1),$def(self,"$call",(function $$call(func,$a){var args,block=$$call.$$p||nil,self=this,g=nil;return delete $$call.$$p,args=Opal.slice.call(arguments,1),g=self.$global(),$truthy(block)&&args["$<<"](block),g[func].apply(g,args)}),-2),$def(self,"$[]",(function(name){return Opal.global[name]}),1),$alias(self,"method_missing","call"),self.$extend(self)}; diff --git a/opal/1.4.1/js.min.js.gz b/opal/1.4.1/js.min.js.gz new file mode 100644 index 00000000..2a1a31bb Binary files /dev/null and b/opal/1.4.1/js.min.js.gz differ diff --git a/opal/1.4.1/json.js b/opal/1.4.1/json.js new file mode 100644 index 00000000..fbe5e43f --- /dev/null +++ b/opal/1.4.1/json.js @@ -0,0 +1,299 @@ +Opal.modules["json"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $Object = Opal.Object, $hash2 = Opal.hash2, $eqeqeq = Opal.eqeqeq, $defs = Opal.defs, $truthy = Opal.truthy, $def = Opal.def; + + Opal.add_stubs('raise,new,push,[]=,-,[],create_id,json_create,const_get,attr_accessor,create_id=,===,parse,generate,from_object,merge,to_json,responds_to?,to_io,write,to_s,to_a,strftime'); + + (function($base, $parent_nesting) { + var self = $module($base, 'JSON'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $writer = nil; + + + $klass($nesting[0], $$('StandardError'), 'JSONError'); + $klass($nesting[0], $$('JSONError'), 'ParserError'); + + var $hasOwn = Opal.hasOwnProperty; + + function $parse(source) { + try { + return JSON.parse(source); + } catch (e) { + self.$raise($$$($$('JSON'), 'ParserError'), e.message); + } + }; + + function to_opal(value, options) { + var klass, arr, hash, i, ii, k; + + switch (typeof value) { + case 'string': + return value; + + case 'number': + return value; + + case 'boolean': + return !!value; + + case 'undefined': + return nil; + + case 'object': + if (!value) return nil; + + if (value.$$is_array) { + arr = (options.array_class).$new(); + + for (i = 0, ii = value.length; i < ii; i++) { + (arr).$push(to_opal(value[i], options)); + } + + return arr; + } + else { + hash = (options.object_class).$new(); + + for (k in value) { + if ($hasOwn.call(value, k)) { + (($writer = [k, to_opal(value[k], options)]), $send((hash), '[]=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)]); + } + } + + if (!options.parse && (klass = (hash)['$[]']($$('JSON').$create_id())) != nil) { + return $Object.$const_get(klass).$json_create(hash); + } + else { + return hash; + } + } + } + }; + ; + (function(self, $parent_nesting) { + + return self.$attr_accessor("create_id") + })(Opal.get_singleton_class(self), $nesting); + + $writer = ["json_class"]; + $send(self, 'create_id=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + $defs(self, '$[]', function $JSON_$$$1(value, options) { + var self = this; + + + + if (options == null) options = $hash2([], {});; + if ($eqeqeq($$('String'), value)) { + return self.$parse(value, options) + } else { + return self.$generate(value, options) + }; + }, -2); + $defs(self, '$parse', function $$parse(source, options) { + var self = this; + + + + if (options == null) options = $hash2([], {});; + return self.$from_object($parse(source), options.$merge($hash2(["parse"], {"parse": true}))); + }, -2); + $defs(self, '$parse!', function $JSON_parse$excl$2(source, options) { + var self = this; + + + + if (options == null) options = $hash2([], {});; + return self.$parse(source, options); + }, -2); + $defs(self, '$load', function $$load(source, options) { + var self = this; + + + + if (options == null) options = $hash2([], {});; + return self.$from_object($parse(source), options); + }, -2); + $defs(self, '$from_object', function $$from_object(js_object, options) { + var $ret_or_1 = nil, $writer = nil; + + + + if (options == null) options = $hash2([], {});; + if ($truthy(($ret_or_1 = options['$[]']("object_class")))) { + $ret_or_1 + } else { + + $writer = ["object_class", $$('Hash')]; + $send(options, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + if ($truthy(($ret_or_1 = options['$[]']("array_class")))) { + $ret_or_1 + } else { + + $writer = ["array_class", $$('Array')]; + $send(options, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return to_opal(js_object, options.$$smap);; + }, -2); + $defs(self, '$generate', function $$generate(obj, options) { + + + + if (options == null) options = $hash2([], {});; + return obj.$to_json(options); + }, -2); + return $defs(self, '$dump', function $$dump(obj, io, limit) { + var self = this, string = nil; + + + + if (io == null) io = nil;; + + if (limit == null) limit = nil;; + string = self.$generate(obj); + if ($truthy(io)) { + + if ($truthy(io['$responds_to?']("to_io"))) { + io = io.$to_io() + }; + io.$write(string); + return io; + } else { + return string + }; + }, -2); + })($nesting[0], $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'Object'); + + + return $def(self, '$to_json', function $$to_json() { + var self = this; + + return self.$to_s().$to_json() + }, 0) + })($nesting[0], null); + (function($base) { + var self = $module($base, 'Enumerable'); + + + return $def(self, '$to_json', function $$to_json() { + var self = this; + + return self.$to_a().$to_json() + }, 0) + })($nesting[0]); + (function($base, $super) { + var self = $klass($base, $super, 'Array'); + + + return $def(self, '$to_json', function $$to_json() { + var self = this; + + + var result = []; + + for (var i = 0, length = self.length; i < length; i++) { + result.push((self[i]).$to_json()); + } + + return '[' + result.join(',') + ']'; + + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Boolean'); + + + return $def(self, '$to_json', function $$to_json() { + var self = this; + + return (self == true) ? 'true' : 'false'; + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Hash'); + + + return $def(self, '$to_json', function $$to_json() { + var self = this; + + + var result = []; + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + result.push((key).$to_s().$to_json() + ':' + (value).$to_json()); + } + + return '{' + result.join(',') + '}'; + + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'NilClass'); + + + return $def(self, '$to_json', function $$to_json() { + + return "null" + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Numeric'); + + + return $def(self, '$to_json', function $$to_json() { + var self = this; + + return self.toString(); + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'String'); + + + return $def(self, '$to_json', function $$to_json() { + var self = this; + + return JSON.stringify(self); + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Time'); + + + return $def(self, '$to_json', function $$to_json() { + var self = this; + + return self.$strftime("%FT%T%z").$to_json() + }, 0) + })($nesting[0], null); + return (function($base, $super) { + var self = $klass($base, $super, 'Date'); + + + + + $def(self, '$to_json', function $$to_json() { + var self = this; + + return self.$to_s().$to_json() + }, 0); + return $def(self, '$as_json', function $$as_json() { + var self = this; + + return self.$to_s() + }, 0); + })($nesting[0], null); +}; diff --git a/opal/1.4.1/json.min.js b/opal/1.4.1/json.min.js new file mode 100644 index 00000000..feac9dd9 --- /dev/null +++ b/opal/1.4.1/json.min.js @@ -0,0 +1 @@ +Opal.modules.json=function(Opal){var self,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$Object=Opal.Object,$hash2=Opal.hash2,$eqeqeq=Opal.eqeqeq,$defs=Opal.defs,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("raise,new,push,[]=,-,[],create_id,json_create,const_get,attr_accessor,create_id=,===,parse,generate,from_object,merge,to_json,responds_to?,to_io,write,to_s,to_a,strftime"),function($base,$parent_nesting){var self=$module($base,"JSON"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$writer=nil;$klass($nesting[0],$$("StandardError"),"JSONError"),$klass($nesting[0],$$("JSONError"),"ParserError");var $hasOwn=Opal.hasOwnProperty;function $parse(source){try{return JSON.parse(source)}catch(e){self.$raise($$$($$("JSON"),"ParserError"),e.message)}}function to_opal(value,options){var klass,arr,hash,i,ii,k;switch(typeof value){case"string":case"number":return value;case"boolean":return!!value;case"undefined":return nil;case"object":if(!value)return nil;if(value.$$is_array){for(arr=options.array_class.$new(),i=0,ii=value.length;i 0) err = $post_args.shift(); + if (err == null) err = nil;; + + rest = $post_args;; + return $send($$('Exception2MessageMapper'), 'Raise', [self.$class(), err].concat($to_a(rest))); + }, -1); + $alias(self, "Fail", "Raise"); + (function(self, $parent_nesting) { + + + + Opal.udef(self, '$' + "included");; + return nil; + })(Opal.get_singleton_class(self), $nesting); + return $defs(self, '$included', function $$included(mod) { + + return mod.$extend($$('Exception2MessageMapper')) + }, 1);}, {$$arity: 0, $$s: self}) + }, 1); + + $def(self, '$Raise', function $$Raise($a, $b) { + var $post_args, err, rest, self = this; + + + + $post_args = Opal.slice.call(arguments); + + if ($post_args.length > 0) err = $post_args.shift(); + if (err == null) err = nil;; + + rest = $post_args;; + return $send($$('E2MM'), 'Raise', [self, err].concat($to_a(rest))); + }, -1); + $alias(self, "Fail", "Raise"); + $alias(self, "fail", "Raise"); + + $def(self, '$def_e2message', function $$def_e2message(c, m) { + var self = this; + + return $$('E2MM').$def_e2message(self, c, m) + }, 2); + + $def(self, '$def_exception', function $$def_exception(n, m, s) { + var self = this; + + + + if (s == null) s = $$('StandardError');; + return $$('E2MM').$def_exception(self, n, m, s); + }, -3); + self.MessageMap = $hash2([], {}); + $defs($$('E2MM'), '$def_e2message', function $$def_e2message(k, c, m) { + var self = this; + + + $send($$('E2MM'), 'instance_eval', [], function $$2(){var self = $$2.$$s == null ? this : $$2.$$s, $writer = nil; + if (self.MessageMap == null) self.MessageMap = nil; + + + $writer = [[k, c], m]; + $send(self.MessageMap, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 0, $$s: self}); + return c; + }, 3); + $defs($$('E2MM'), '$def_exception', function $$def_exception(k, n, m, s) { + var self = this, e = nil; + + + + if (s == null) s = $$('StandardError');; + e = $$('Class').$new(s); + $send($$('E2MM'), 'instance_eval', [], function $$3(){var self = $$3.$$s == null ? this : $$3.$$s, $writer = nil; + if (self.MessageMap == null) self.MessageMap = nil; + + + $writer = [[k, e], m]; + $send(self.MessageMap, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 0, $$s: self}); + if ($truthy(k['$const_defined?'](n, false))) { + $send(k, 'module_eval', [], function $$4(){var self = $$4.$$s == null ? this : $$4.$$s; + + return self.$remove_const(n)}, {$$arity: 0, $$s: self}) + }; + return k.$const_set(n, e); + }, -4); + $defs($$('E2MM'), '$Raise', function $$Raise($a, $b, $c) { + var $post_args, klass, err, rest, self = this, form = nil, b = nil; + if ($gvars["@"] == null) $gvars["@"] = nil; + + + + $post_args = Opal.slice.call(arguments); + + if ($post_args.length > 0) klass = $post_args.shift(); + if (klass == null) klass = $$('E2MM');; + + if ($post_args.length > 0) err = $post_args.shift(); + if (err == null) err = nil;; + + rest = $post_args;; + if ($truthy((form = self.$e2mm_message(klass, err)))) { + + b = ($truthy($gvars["@"]['$nil?']()) ? (self.$caller(1)) : ($gvars["@"])); + if ($truthy(b['$[]'](0)['$=~']($regexp(["^", $$('Regexp').$quote($enc("./e2mmap.rb", "US-ASCII")), ":"])))) { + b.$shift() + }; + return self.$raise(err, $send(self, 'sprintf', [form].concat($to_a(rest))), b); + } else { + return $$('E2MM').$Fail($$('E2MM'), $$('ErrNotRegisteredException'), err.$inspect()) + }; + }, -1); + (function(self, $parent_nesting) { + + return $alias(self, "Fail", "Raise") + })(Opal.get_singleton_class($$('E2MM')), $nesting); + $defs($$('E2MM'), '$e2mm_message', function $$e2mm_message(klass, exp) {try { + + var self = this; + + + $send(klass.$ancestors(), 'each', [], function $$5(c){var self = $$5.$$s == null ? this : $$5.$$s, mes = nil; + if (self.MessageMap == null) self.MessageMap = nil; + + + + if (c == null) c = nil;; + if ($truthy((mes = self.MessageMap['$[]']([c, exp])))) { + Opal.ret(mes) + } else { + return nil + };}, {$$arity: 1, $$s: self}); + return nil; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 2); + (function(self, $parent_nesting) { + + return $alias(self, "message", "e2mm_message") + })(Opal.get_singleton_class(self), $nesting); + return $$('E2MM').$def_exception($$('E2MM'), "ErrNotRegisteredException", "not registered exception(%s)"); + })($nesting[0], $nesting) +}; + +Opal.modules["matrix/eigenvalue_decomposition"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $def = Opal.def, $alias = Opal.alias, $eqeq = Opal.eqeq, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_gt = Opal.rb_gt, $rb_plus = Opal.rb_plus, $rb_divide = Opal.rb_divide, $rb_times = Opal.rb_times, $neqeq = Opal.neqeq, $rb_lt = Opal.rb_lt, $rb_le = Opal.rb_le, $rb_ge = Opal.rb_ge, $to_ary = Opal.to_ary; + + Opal.add_stubs('is_a?,raise,class,row_count,new,symmetric?,to_a,tridiagonalize,diagonalize,reduce_to_hessenberg,hessenberg_to_real_schur,send,transpose,build_eigenvectors,inverse,dup,each_with_index,==,Complex,[],[]=,-,map,diagonal,eigenvalues,v,d,v_inv,alias_method,private,>,+,-@,abs,/,*,times,downto,sqrt,upto,!=,max,<,<=,hypot,>=,min,cdiv'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Matrix'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'EigenvalueDecomposition'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.size = $proto.symmetric = $proto.d = $proto.e = $proto.v = $proto.h = nil; + + + $def(self, '$initialize', function $$initialize(a) { + var self = this; + + + if (!$truthy(a['$is_a?']($$('Matrix')))) { + self.$raise($$('TypeError'), "Expected Matrix but got " + (a.$class())) + }; + self.size = a.$row_count(); + self.d = $$('Array').$new(self.size, 0); + self.e = $$('Array').$new(self.size, 0); + if ($truthy((self.symmetric = a['$symmetric?']()))) { + + self.v = a.$to_a(); + self.$tridiagonalize(); + return self.$diagonalize(); + } else { + + self.v = $send($$('Array'), 'new', [self.size], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s; + if (self.size == null) self.size = nil; + + return $$('Array').$new(self.size, 0)}, {$$arity: 0, $$s: self}); + self.h = a.$to_a(); + self.ort = $$('Array').$new(self.size, 0); + self.$reduce_to_hessenberg(); + return self.$hessenberg_to_real_schur(); + }; + }, 1); + + $def(self, '$eigenvector_matrix', function $$eigenvector_matrix() { + var self = this; + + return $$('Matrix').$send("new", self.$build_eigenvectors().$transpose()) + }, 0); + $alias(self, "v", "eigenvector_matrix"); + + $def(self, '$eigenvector_matrix_inv', function $$eigenvector_matrix_inv() { + var self = this, r = nil; + + + r = $$('Matrix').$send("new", self.$build_eigenvectors()); + if (!$truthy(self.symmetric)) { + r = r.$transpose().$inverse() + }; + return r; + }, 0); + $alias(self, "v_inv", "eigenvector_matrix_inv"); + + $def(self, '$eigenvalues', function $$eigenvalues() { + var self = this, values = nil; + + + values = self.d.$dup(); + $send(self.e, 'each_with_index', [], function $$2(imag, i){var self = $$2.$$s == null ? this : $$2.$$s, $writer = nil; + + + + if (imag == null) imag = nil;; + + if (i == null) i = nil;; + if ($eqeq(imag, 0)) { + return nil + } else { + + $writer = [i, self.$Complex(values['$[]'](i), imag)]; + $send(values, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + };}, {$$arity: 2, $$s: self}); + return values; + }, 0); + + $def(self, '$eigenvectors', function $$eigenvectors() { + var self = this; + + return $send(self.$build_eigenvectors(), 'map', [], function $$3(ev){ + + + if (ev == null) ev = nil;; + return $$('Vector').$send("new", ev);}, 1) + }, 0); + + $def(self, '$eigenvalue_matrix', function $$eigenvalue_matrix() { + var self = this; + + return $send($$('Matrix'), 'diagonal', $to_a(self.$eigenvalues())) + }, 0); + $alias(self, "d", "eigenvalue_matrix"); + + $def(self, '$to_ary', function $$to_ary() { + var self = this; + + return [self.$v(), self.$d(), self.$v_inv()] + }, 0); + self.$alias_method("to_a", "to_ary"); + self.$private(); + + $def(self, '$build_eigenvectors', function $$build_eigenvectors() { + var self = this; + + return $send(self.e.$each_with_index(), 'map', [], function $$4(imag, i){var self = $$4.$$s == null ? this : $$4.$$s; + if (self.size == null) self.size = nil; + + + + if (imag == null) imag = nil;; + + if (i == null) i = nil;; + if ($eqeq(imag, 0)) { + return $send($$('Array'), 'new', [self.size], function $$5(j){var self = $$5.$$s == null ? this : $$5.$$s; + if (self.v == null) self.v = nil; + + + + if (j == null) j = nil;; + return self.v['$[]'](j)['$[]'](i);}, {$$arity: 1, $$s: self}) + } else if ($truthy($rb_gt(imag, 0))) { + return $send($$('Array'), 'new', [self.size], function $$6(j){var self = $$6.$$s == null ? this : $$6.$$s; + if (self.v == null) self.v = nil; + + + + if (j == null) j = nil;; + return self.$Complex(self.v['$[]'](j)['$[]'](i), self.v['$[]'](j)['$[]']($rb_plus(i, 1)));}, {$$arity: 1, $$s: self}) + } else { + return $send($$('Array'), 'new', [self.size], function $$7(j){var self = $$7.$$s == null ? this : $$7.$$s; + if (self.v == null) self.v = nil; + + + + if (j == null) j = nil;; + return self.$Complex(self.v['$[]'](j)['$[]']($rb_minus(i, 1)), self.v['$[]'](j)['$[]'](i)['$-@']());}, {$$arity: 1, $$s: self}) + };}, {$$arity: 2, $$s: self}) + }, 0); + + $def(self, '$cdiv', function $$cdiv(xr, xi, yr, yi) { + var r = nil, d = nil; + + if ($truthy($rb_gt(yr.$abs(), yi.$abs()))) { + + r = $rb_divide(yi, yr); + d = $rb_plus(yr, $rb_times(r, yi)); + return [$rb_divide($rb_plus(xr, $rb_times(r, xi)), d), $rb_divide($rb_minus(xi, $rb_times(r, xr)), d)]; + } else { + + r = $rb_divide(yr, yi); + d = $rb_plus(yi, $rb_times(r, yr)); + return [$rb_divide($rb_plus($rb_times(r, xr), xi), d), $rb_divide($rb_minus($rb_times(r, xi), xr), d)]; + } + }, 4); + + $def(self, '$tridiagonalize', function $$tridiagonalize() { + var self = this, $writer = nil; + + + $send(self.size, 'times', [], function $$8(j){var self = $$8.$$s == null ? this : $$8.$$s, $writer = nil; + if (self.v == null) self.v = nil; + if (self.size == null) self.size = nil; + if (self.d == null) self.d = nil; + + + + if (j == null) j = nil;; + $writer = [j, self.v['$[]']($rb_minus(self.size, 1))['$[]'](j)]; + $send(self.d, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}); + $send($rb_minus(self.size, 1), 'downto', [$rb_plus(0, 1)], function $$9(i){var self = $$9.$$s == null ? this : $$9.$$s, scale = nil, h = nil, $writer = nil, f = nil, g = nil, hh = nil; + if (self.d == null) self.d = nil; + if (self.e == null) self.e = nil; + + + + if (i == null) i = nil;; + scale = 0.0; + h = 0.0; + $send(i, 'times', [], function $$10(k){var self = $$10.$$s == null ? this : $$10.$$s; + if (self.d == null) self.d = nil; + + + + if (k == null) k = nil;; + return (scale = $rb_plus(scale, self.d['$[]'](k).$abs()));}, {$$arity: 1, $$s: self}); + if ($eqeq(scale, 0.0)) { + + + $writer = [i, self.d['$[]']($rb_minus(i, 1))]; + $send(self.e, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + $send(i, 'times', [], function $$11(j){var self = $$11.$$s == null ? this : $$11.$$s; + if (self.v == null) self.v = nil; + if (self.d == null) self.d = nil; + + + + if (j == null) j = nil;; + + $writer = [j, self.v['$[]']($rb_minus(i, 1))['$[]'](j)]; + $send(self.d, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [j, 0.0]; + $send(self.v['$[]'](i), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [i, 0.0]; + $send(self.v['$[]'](j), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + } else { + + $send(i, 'times', [], function $$12(k){var self = $$12.$$s == null ? this : $$12.$$s; + if (self.d == null) self.d = nil; + + + + if (k == null) k = nil;; + + $writer = [k, $rb_divide(self.d['$[]'](k), scale)]; + $send(self.d, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return (h = $rb_plus(h, $rb_times(self.d['$[]'](k), self.d['$[]'](k))));}, {$$arity: 1, $$s: self}); + f = self.d['$[]']($rb_minus(i, 1)); + g = $$('Math').$sqrt(h); + if ($truthy($rb_gt(f, 0))) { + g = g['$-@']() + }; + + $writer = [i, $rb_times(scale, g)]; + $send(self.e, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + h = $rb_minus(h, $rb_times(f, g)); + + $writer = [$rb_minus(i, 1), $rb_minus(f, g)]; + $send(self.d, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + $send(i, 'times', [], function $$13(j){var self = $$13.$$s == null ? this : $$13.$$s; + if (self.e == null) self.e = nil; + + + + if (j == null) j = nil;; + $writer = [j, 0.0]; + $send(self.e, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}); + $send(i, 'times', [], function $$14(j){var self = $$14.$$s == null ? this : $$14.$$s; + if (self.d == null) self.d = nil; + if (self.v == null) self.v = nil; + if (self.e == null) self.e = nil; + + + + if (j == null) j = nil;; + f = self.d['$[]'](j); + + $writer = [i, f]; + $send(self.v['$[]'](j), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + g = $rb_plus(self.e['$[]'](j), $rb_times(self.v['$[]'](j)['$[]'](j), f)); + $send($rb_plus(j, 1), 'upto', [$rb_minus(i, 1)], function $$15(k){var self = $$15.$$s == null ? this : $$15.$$s; + if (self.v == null) self.v = nil; + if (self.d == null) self.d = nil; + if (self.e == null) self.e = nil; + + + + if (k == null) k = nil;; + g = $rb_plus(g, $rb_times(self.v['$[]'](k)['$[]'](j), self.d['$[]'](k))); + + $writer = [k, $rb_plus(self.e['$[]'](k), $rb_times(self.v['$[]'](k)['$[]'](j), f))]; + $send(self.e, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + + $writer = [j, g]; + $send(self.e, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + f = 0.0; + $send(i, 'times', [], function $$16(j){var self = $$16.$$s == null ? this : $$16.$$s; + if (self.e == null) self.e = nil; + if (self.d == null) self.d = nil; + + + + if (j == null) j = nil;; + + $writer = [j, $rb_divide(self.e['$[]'](j), h)]; + $send(self.e, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return (f = $rb_plus(f, $rb_times(self.e['$[]'](j), self.d['$[]'](j))));}, {$$arity: 1, $$s: self}); + hh = $rb_divide(f, $rb_plus(h, h)); + $send(i, 'times', [], function $$17(j){var self = $$17.$$s == null ? this : $$17.$$s; + if (self.e == null) self.e = nil; + if (self.d == null) self.d = nil; + + + + if (j == null) j = nil;; + $writer = [j, $rb_minus(self.e['$[]'](j), $rb_times(hh, self.d['$[]'](j)))]; + $send(self.e, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}); + $send(i, 'times', [], function $$18(j){var self = $$18.$$s == null ? this : $$18.$$s; + if (self.d == null) self.d = nil; + if (self.e == null) self.e = nil; + if (self.v == null) self.v = nil; + + + + if (j == null) j = nil;; + f = self.d['$[]'](j); + g = self.e['$[]'](j); + $send(j, 'upto', [$rb_minus(i, 1)], function $$19(k){var self = $$19.$$s == null ? this : $$19.$$s, $binary_op_recvr_tmp_3 = nil; + if (self.v == null) self.v = nil; + if (self.e == null) self.e = nil; + if (self.d == null) self.d = nil; + + + + if (k == null) k = nil;; + $binary_op_recvr_tmp_3 = self.v['$[]'](k); + + $writer = [j, $rb_minus($binary_op_recvr_tmp_3['$[]'](j), $rb_plus($rb_times(f, self.e['$[]'](k)), $rb_times(g, self.d['$[]'](k))))]; + $send($binary_op_recvr_tmp_3, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + + $writer = [j, self.v['$[]']($rb_minus(i, 1))['$[]'](j)]; + $send(self.d, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [j, 0.0]; + $send(self.v['$[]'](i), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + }; + + $writer = [i, h]; + $send(self.d, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + $send((0), 'upto', [$rb_minus($rb_minus(self.size, 1), 1)], function $$20(i){var self = $$20.$$s == null ? this : $$20.$$s, $writer = nil, h = nil; + if (self.v == null) self.v = nil; + if (self.size == null) self.size = nil; + if (self.d == null) self.d = nil; + + + + if (i == null) i = nil;; + + $writer = [i, self.v['$[]'](i)['$[]'](i)]; + $send(self.v['$[]']($rb_minus(self.size, 1)), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [i, 1.0]; + $send(self.v['$[]'](i), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + h = self.d['$[]']($rb_plus(i, 1)); + if ($neqeq(h, 0.0)) { + + $send((0), 'upto', [i], function $$21(k){var self = $$21.$$s == null ? this : $$21.$$s; + if (self.v == null) self.v = nil; + if (self.d == null) self.d = nil; + + + + if (k == null) k = nil;; + $writer = [k, $rb_divide(self.v['$[]'](k)['$[]']($rb_plus(i, 1)), h)]; + $send(self.d, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}); + $send((0), 'upto', [i], function $$22(j){var self = $$22.$$s == null ? this : $$22.$$s, g = nil; + + + + if (j == null) j = nil;; + g = 0.0; + $send((0), 'upto', [i], function $$23(k){var self = $$23.$$s == null ? this : $$23.$$s; + if (self.v == null) self.v = nil; + + + + if (k == null) k = nil;; + return (g = $rb_plus(g, $rb_times(self.v['$[]'](k)['$[]']($rb_plus(i, 1)), self.v['$[]'](k)['$[]'](j))));}, {$$arity: 1, $$s: self}); + return $send((0), 'upto', [i], function $$24(k){var self = $$24.$$s == null ? this : $$24.$$s, $binary_op_recvr_tmp_4 = nil; + if (self.v == null) self.v = nil; + if (self.d == null) self.d = nil; + + + + if (k == null) k = nil;; + $binary_op_recvr_tmp_4 = self.v['$[]'](k); + + $writer = [j, $rb_minus($binary_op_recvr_tmp_4['$[]'](j), $rb_times(g, self.d['$[]'](k)))]; + $send($binary_op_recvr_tmp_4, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + }; + return $send((0), 'upto', [i], function $$25(k){var self = $$25.$$s == null ? this : $$25.$$s; + if (self.v == null) self.v = nil; + + + + if (k == null) k = nil;; + $writer = [$rb_plus(i, 1), 0.0]; + $send(self.v['$[]'](k), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + $send(self.size, 'times', [], function $$26(j){var self = $$26.$$s == null ? this : $$26.$$s, $writer = nil; + if (self.v == null) self.v = nil; + if (self.size == null) self.size = nil; + if (self.d == null) self.d = nil; + + + + if (j == null) j = nil;; + + $writer = [j, self.v['$[]']($rb_minus(self.size, 1))['$[]'](j)]; + $send(self.d, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [j, 0.0]; + $send(self.v['$[]']($rb_minus(self.size, 1)), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + + $writer = [$rb_minus(self.size, 1), 1.0]; + $send(self.v['$[]']($rb_minus(self.size, 1)), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [0, 0.0]; + $send(self.e, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + }, 0); + + $def(self, '$diagonalize', function $$diagonalize() { + var self = this, $writer = nil, f = nil, tst1 = nil, eps = nil; + + + $send((1), 'upto', [$rb_minus(self.size, 1)], function $$27(i){var self = $$27.$$s == null ? this : $$27.$$s, $writer = nil; + if (self.e == null) self.e = nil; + + + + if (i == null) i = nil;; + $writer = [$rb_minus(i, 1), self.e['$[]'](i)]; + $send(self.e, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}); + + $writer = [$rb_minus(self.size, 1), 0.0]; + $send(self.e, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + f = 0.0; + tst1 = 0.0; + eps = $$$($$('Float'), 'EPSILON'); + $send(self.size, 'times', [], function $$28(l){var $a, self = $$28.$$s == null ? this : $$28.$$s, m = nil, iter = nil, g = nil, p = nil, r = nil, dl1 = nil, h = nil, c = nil, c2 = nil, c3 = nil, el1 = nil, s = nil, s2 = nil; + if (self.d == null) self.d = nil; + if (self.e == null) self.e = nil; + if (self.size == null) self.size = nil; + + + + if (l == null) l = nil;; + tst1 = [tst1, $rb_plus(self.d['$[]'](l).$abs(), self.e['$[]'](l).$abs())].$max(); + m = l; + while ($truthy($rb_lt(m, self.size))) { + + if ($truthy($rb_le(self.e['$[]'](m).$abs(), $rb_times(eps, tst1)))) { + break; + }; + m = $rb_plus(m, 1); + }; + if ($truthy($rb_gt(m, l))) { + + iter = 0; + do { + + iter = $rb_plus(iter, 1); + g = self.d['$[]'](l); + p = $rb_divide($rb_minus(self.d['$[]']($rb_plus(l, 1)), g), $rb_times(2.0, self.e['$[]'](l))); + r = $$('Math').$hypot(p, 1.0); + if ($truthy($rb_lt(p, 0))) { + r = r['$-@']() + }; + + $writer = [l, $rb_divide(self.e['$[]'](l), $rb_plus(p, r))]; + $send(self.d, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [$rb_plus(l, 1), $rb_times(self.e['$[]'](l), $rb_plus(p, r))]; + $send(self.d, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + dl1 = self.d['$[]']($rb_plus(l, 1)); + h = $rb_minus(g, self.d['$[]'](l)); + $send($rb_plus(l, 2), 'upto', [$rb_minus(self.size, 1)], function $$29(i){var self = $$29.$$s == null ? this : $$29.$$s; + if (self.d == null) self.d = nil; + + + + if (i == null) i = nil;; + $writer = [i, $rb_minus(self.d['$[]'](i), h)]; + $send(self.d, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}); + f = $rb_plus(f, h); + p = self.d['$[]'](m); + c = 1.0; + c2 = c; + c3 = c; + el1 = self.e['$[]']($rb_plus(l, 1)); + s = 0.0; + s2 = 0.0; + $send($rb_minus(m, 1), 'downto', [l], function $$30(i){var self = $$30.$$s == null ? this : $$30.$$s; + if (self.e == null) self.e = nil; + if (self.d == null) self.d = nil; + if (self.size == null) self.size = nil; + + + + if (i == null) i = nil;; + c3 = c2; + c2 = c; + s2 = s; + g = $rb_times(c, self.e['$[]'](i)); + h = $rb_times(c, p); + r = $$('Math').$hypot(p, self.e['$[]'](i)); + + $writer = [$rb_plus(i, 1), $rb_times(s, r)]; + $send(self.e, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + s = $rb_divide(self.e['$[]'](i), r); + c = $rb_divide(p, r); + p = $rb_minus($rb_times(c, self.d['$[]'](i)), $rb_times(s, g)); + + $writer = [$rb_plus(i, 1), $rb_plus(h, $rb_times(s, $rb_plus($rb_times(c, g), $rb_times(s, self.d['$[]'](i)))))]; + $send(self.d, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return $send(self.size, 'times', [], function $$31(k){var self = $$31.$$s == null ? this : $$31.$$s; + if (self.v == null) self.v = nil; + + + + if (k == null) k = nil;; + h = self.v['$[]'](k)['$[]']($rb_plus(i, 1)); + + $writer = [$rb_plus(i, 1), $rb_plus($rb_times(s, self.v['$[]'](k)['$[]'](i)), $rb_times(c, h))]; + $send(self.v['$[]'](k), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [i, $rb_minus($rb_times(c, self.v['$[]'](k)['$[]'](i)), $rb_times(s, h))]; + $send(self.v['$[]'](k), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + p = $rb_divide($rb_times($rb_times($rb_times($rb_times(s['$-@'](), s2), c3), el1), self.e['$[]'](l)), dl1); + + $writer = [l, $rb_times(s, p)]; + $send(self.e, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [l, $rb_times(c, p)]; + $send(self.d, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + } while ($truthy($rb_gt(self.e['$[]'](l).$abs(), $rb_times(eps, tst1))));; + }; + + $writer = [l, $rb_plus(self.d['$[]'](l), f)]; + $send(self.d, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [l, 0.0]; + $send(self.e, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + return $send((0), 'upto', [$rb_minus(self.size, 2)], function $$32(i){var self = $$32.$$s == null ? this : $$32.$$s, k = nil, p = nil; + if (self.d == null) self.d = nil; + if (self.size == null) self.size = nil; + + + + if (i == null) i = nil;; + k = i; + p = self.d['$[]'](i); + $send($rb_plus(i, 1), 'upto', [$rb_minus(self.size, 1)], function $$33(j){var self = $$33.$$s == null ? this : $$33.$$s; + if (self.d == null) self.d = nil; + + + + if (j == null) j = nil;; + if ($truthy($rb_lt(self.d['$[]'](j), p))) { + + k = j; + return (p = self.d['$[]'](j)); + } else { + return nil + };}, {$$arity: 1, $$s: self}); + if ($neqeq(k, i)) { + + + $writer = [k, self.d['$[]'](i)]; + $send(self.d, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [i, p]; + $send(self.d, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return $send(self.size, 'times', [], function $$34(j){var self = $$34.$$s == null ? this : $$34.$$s; + if (self.v == null) self.v = nil; + + + + if (j == null) j = nil;; + p = self.v['$[]'](j)['$[]'](i); + + $writer = [i, self.v['$[]'](j)['$[]'](k)]; + $send(self.v['$[]'](j), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [k, p]; + $send(self.v['$[]'](j), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + } else { + return nil + };}, {$$arity: 1, $$s: self}); + }, 0); + + $def(self, '$reduce_to_hessenberg', function $$reduce_to_hessenberg() { + var self = this, low = nil, high = nil; + + + low = 0; + high = $rb_minus(self.size, 1); + $send($rb_plus(low, 1), 'upto', [$rb_minus(high, 1)], function $$35(m){var self = $$35.$$s == null ? this : $$35.$$s, scale = nil, h = nil, g = nil, $writer = nil; + if (self.ort == null) self.ort = nil; + if (self.size == null) self.size = nil; + if (self.h == null) self.h = nil; + + + + if (m == null) m = nil;; + scale = 0.0; + $send(m, 'upto', [high], function $$36(i){var self = $$36.$$s == null ? this : $$36.$$s; + if (self.h == null) self.h = nil; + + + + if (i == null) i = nil;; + return (scale = $rb_plus(scale, self.h['$[]'](i)['$[]']($rb_minus(m, 1)).$abs()));}, {$$arity: 1, $$s: self}); + if ($neqeq(scale, 0.0)) { + + h = 0.0; + $send(high, 'downto', [m], function $$37(i){var self = $$37.$$s == null ? this : $$37.$$s, $writer = nil; + if (self.h == null) self.h = nil; + if (self.ort == null) self.ort = nil; + + + + if (i == null) i = nil;; + + $writer = [i, $rb_divide(self.h['$[]'](i)['$[]']($rb_minus(m, 1)), scale)]; + $send(self.ort, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return (h = $rb_plus(h, $rb_times(self.ort['$[]'](i), self.ort['$[]'](i))));}, {$$arity: 1, $$s: self}); + g = $$('Math').$sqrt(h); + if ($truthy($rb_gt(self.ort['$[]'](m), 0))) { + g = g['$-@']() + }; + h = $rb_minus(h, $rb_times(self.ort['$[]'](m), g)); + + $writer = [m, $rb_minus(self.ort['$[]'](m), g)]; + $send(self.ort, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + $send(m, 'upto', [$rb_minus(self.size, 1)], function $$38(j){var self = $$38.$$s == null ? this : $$38.$$s, f = nil; + + + + if (j == null) j = nil;; + f = 0.0; + $send(high, 'downto', [m], function $$39(i){var self = $$39.$$s == null ? this : $$39.$$s; + if (self.ort == null) self.ort = nil; + if (self.h == null) self.h = nil; + + + + if (i == null) i = nil;; + return (f = $rb_plus(f, $rb_times(self.ort['$[]'](i), self.h['$[]'](i)['$[]'](j))));}, {$$arity: 1, $$s: self}); + f = $rb_divide(f, h); + return $send(m, 'upto', [high], function $$40(i){var self = $$40.$$s == null ? this : $$40.$$s, $binary_op_recvr_tmp_5 = nil; + if (self.h == null) self.h = nil; + if (self.ort == null) self.ort = nil; + + + + if (i == null) i = nil;; + $binary_op_recvr_tmp_5 = self.h['$[]'](i); + + $writer = [j, $rb_minus($binary_op_recvr_tmp_5['$[]'](j), $rb_times(f, self.ort['$[]'](i)))]; + $send($binary_op_recvr_tmp_5, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + $send((0), 'upto', [high], function $$41(i){var self = $$41.$$s == null ? this : $$41.$$s, f = nil; + + + + if (i == null) i = nil;; + f = 0.0; + $send(high, 'downto', [m], function $$42(j){var self = $$42.$$s == null ? this : $$42.$$s; + if (self.ort == null) self.ort = nil; + if (self.h == null) self.h = nil; + + + + if (j == null) j = nil;; + return (f = $rb_plus(f, $rb_times(self.ort['$[]'](j), self.h['$[]'](i)['$[]'](j))));}, {$$arity: 1, $$s: self}); + f = $rb_divide(f, h); + return $send(m, 'upto', [high], function $$43(j){var self = $$43.$$s == null ? this : $$43.$$s, $binary_op_recvr_tmp_6 = nil; + if (self.h == null) self.h = nil; + if (self.ort == null) self.ort = nil; + + + + if (j == null) j = nil;; + $binary_op_recvr_tmp_6 = self.h['$[]'](i); + + $writer = [j, $rb_minus($binary_op_recvr_tmp_6['$[]'](j), $rb_times(f, self.ort['$[]'](j)))]; + $send($binary_op_recvr_tmp_6, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + + $writer = [m, $rb_times(scale, self.ort['$[]'](m))]; + $send(self.ort, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [$rb_minus(m, 1), $rb_times(scale, g)]; + $send(self.h['$[]'](m), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + } else { + return nil + };}, {$$arity: 1, $$s: self}); + $send(self.size, 'times', [], function $$44(i){var self = $$44.$$s == null ? this : $$44.$$s; + if (self.size == null) self.size = nil; + + + + if (i == null) i = nil;; + return $send(self.size, 'times', [], function $$45(j){var self = $$45.$$s == null ? this : $$45.$$s, $writer = nil; + if (self.v == null) self.v = nil; + + + + if (j == null) j = nil;; + $writer = [j, ($eqeq(i, j) ? (1.0) : (0.0))]; + $send(self.v['$[]'](i), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + return $send($rb_minus(high, 1), 'downto', [$rb_plus(low, 1)], function $$46(m){var self = $$46.$$s == null ? this : $$46.$$s; + if (self.h == null) self.h = nil; + + + + if (m == null) m = nil;; + if ($neqeq(self.h['$[]'](m)['$[]']($rb_minus(m, 1)), 0.0)) { + + $send($rb_plus(m, 1), 'upto', [high], function $$47(i){var self = $$47.$$s == null ? this : $$47.$$s, $writer = nil; + if (self.h == null) self.h = nil; + if (self.ort == null) self.ort = nil; + + + + if (i == null) i = nil;; + $writer = [i, self.h['$[]'](i)['$[]']($rb_minus(m, 1))]; + $send(self.ort, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}); + return $send(m, 'upto', [high], function $$48(j){var self = $$48.$$s == null ? this : $$48.$$s, g = nil; + if (self.ort == null) self.ort = nil; + if (self.h == null) self.h = nil; + + + + if (j == null) j = nil;; + g = 0.0; + $send(m, 'upto', [high], function $$49(i){var self = $$49.$$s == null ? this : $$49.$$s; + if (self.ort == null) self.ort = nil; + if (self.v == null) self.v = nil; + + + + if (i == null) i = nil;; + return (g = $rb_plus(g, $rb_times(self.ort['$[]'](i), self.v['$[]'](i)['$[]'](j))));}, {$$arity: 1, $$s: self}); + g = $rb_divide($rb_divide(g, self.ort['$[]'](m)), self.h['$[]'](m)['$[]']($rb_minus(m, 1))); + return $send(m, 'upto', [high], function $$50(i){var self = $$50.$$s == null ? this : $$50.$$s, $binary_op_recvr_tmp_7 = nil, $writer = nil; + if (self.v == null) self.v = nil; + if (self.ort == null) self.ort = nil; + + + + if (i == null) i = nil;; + $binary_op_recvr_tmp_7 = self.v['$[]'](i); + + $writer = [j, $rb_plus($binary_op_recvr_tmp_7['$[]'](j), $rb_times(g, self.ort['$[]'](i)))]; + $send($binary_op_recvr_tmp_7, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + } else { + return nil + };}, {$$arity: 1, $$s: self}); + }, 0); + return $def(self, '$hessenberg_to_real_schur', function $$hessenberg_to_real_schur() { + var $a, $b, self = this, nn = nil, n = nil, low = nil, high = nil, eps = nil, exshift = nil, p = nil, q = nil, r = nil, s = nil, z = nil, norm = nil, iter = nil, l = nil, $writer = nil, w = nil, x = nil, y = nil, m = nil; + + + nn = self.size; + n = $rb_minus(nn, 1); + low = 0; + high = $rb_minus(nn, 1); + eps = $$$($$('Float'), 'EPSILON'); + exshift = 0.0; + p = (q = (r = (s = (z = 0)))); + norm = 0.0; + $send(nn, 'times', [], function $$51(i){var self = $$51.$$s == null ? this : $$51.$$s, $writer = nil; + if (self.h == null) self.h = nil; + if (self.d == null) self.d = nil; + if (self.e == null) self.e = nil; + + + + if (i == null) i = nil;; + if (($truthy($rb_lt(i, low)) || ($truthy($rb_gt(i, high))))) { + + + $writer = [i, self.h['$[]'](i)['$[]'](i)]; + $send(self.d, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [i, 0.0]; + $send(self.e, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + }; + return $send([$rb_minus(i, 1), 0].$max(), 'upto', [$rb_minus(nn, 1)], function $$52(j){var self = $$52.$$s == null ? this : $$52.$$s; + if (self.h == null) self.h = nil; + + + + if (j == null) j = nil;; + return (norm = $rb_plus(norm, self.h['$[]'](i)['$[]'](j).$abs()));}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + iter = 0; + while ($truthy($rb_ge(n, low))) { + + l = n; + while ($truthy($rb_gt(l, low))) { + + s = $rb_plus(self.h['$[]']($rb_minus(l, 1))['$[]']($rb_minus(l, 1)).$abs(), self.h['$[]'](l)['$[]'](l).$abs()); + if ($eqeq(s, 0.0)) { + s = norm + }; + if ($truthy($rb_lt(self.h['$[]'](l)['$[]']($rb_minus(l, 1)).$abs(), $rb_times(eps, s)))) { + break; + }; + l = $rb_minus(l, 1); + }; + if ($eqeq(l, n)) { + + + $writer = [n, $rb_plus(self.h['$[]'](n)['$[]'](n), exshift)]; + $send(self.h['$[]'](n), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [n, self.h['$[]'](n)['$[]'](n)]; + $send(self.d, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [n, 0.0]; + $send(self.e, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + n = $rb_minus(n, 1); + iter = 0; + } else if ($eqeq(l, $rb_minus(n, 1))) { + + w = $rb_times(self.h['$[]'](n)['$[]']($rb_minus(n, 1)), self.h['$[]']($rb_minus(n, 1))['$[]'](n)); + p = $rb_divide($rb_minus(self.h['$[]']($rb_minus(n, 1))['$[]']($rb_minus(n, 1)), self.h['$[]'](n)['$[]'](n)), 2.0); + q = $rb_plus($rb_times(p, p), w); + z = $$('Math').$sqrt(q.$abs()); + + $writer = [n, $rb_plus(self.h['$[]'](n)['$[]'](n), exshift)]; + $send(self.h['$[]'](n), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [$rb_minus(n, 1), $rb_plus(self.h['$[]']($rb_minus(n, 1))['$[]']($rb_minus(n, 1)), exshift)]; + $send(self.h['$[]']($rb_minus(n, 1)), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + x = self.h['$[]'](n)['$[]'](n); + if ($truthy($rb_ge(q, 0))) { + + if ($truthy($rb_ge(p, 0))) { + z = $rb_plus(p, z) + } else { + z = $rb_minus(p, z) + }; + + $writer = [$rb_minus(n, 1), $rb_plus(x, z)]; + $send(self.d, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [n, self.d['$[]']($rb_minus(n, 1))]; + $send(self.d, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($neqeq(z, 0.0)) { + + $writer = [n, $rb_minus(x, $rb_divide(w, z))]; + $send(self.d, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + + $writer = [$rb_minus(n, 1), 0.0]; + $send(self.e, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [n, 0.0]; + $send(self.e, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + x = self.h['$[]'](n)['$[]']($rb_minus(n, 1)); + s = $rb_plus(x.$abs(), z.$abs()); + p = $rb_divide(x, s); + q = $rb_divide(z, s); + r = $$('Math').$sqrt($rb_plus($rb_times(p, p), $rb_times(q, q))); + p = $rb_divide(p, r); + q = $rb_divide(q, r); + $send($rb_minus(n, 1), 'upto', [$rb_minus(nn, 1)], function $$53(j){var self = $$53.$$s == null ? this : $$53.$$s; + if (self.h == null) self.h = nil; + + + + if (j == null) j = nil;; + z = self.h['$[]']($rb_minus(n, 1))['$[]'](j); + + $writer = [j, $rb_plus($rb_times(q, z), $rb_times(p, self.h['$[]'](n)['$[]'](j)))]; + $send(self.h['$[]']($rb_minus(n, 1)), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [j, $rb_minus($rb_times(q, self.h['$[]'](n)['$[]'](j)), $rb_times(p, z))]; + $send(self.h['$[]'](n), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + $send((0), 'upto', [n], function $$54(i){var self = $$54.$$s == null ? this : $$54.$$s; + if (self.h == null) self.h = nil; + + + + if (i == null) i = nil;; + z = self.h['$[]'](i)['$[]']($rb_minus(n, 1)); + + $writer = [$rb_minus(n, 1), $rb_plus($rb_times(q, z), $rb_times(p, self.h['$[]'](i)['$[]'](n)))]; + $send(self.h['$[]'](i), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [n, $rb_minus($rb_times(q, self.h['$[]'](i)['$[]'](n)), $rb_times(p, z))]; + $send(self.h['$[]'](i), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + $send(low, 'upto', [high], function $$55(i){var self = $$55.$$s == null ? this : $$55.$$s; + if (self.v == null) self.v = nil; + + + + if (i == null) i = nil;; + z = self.v['$[]'](i)['$[]']($rb_minus(n, 1)); + + $writer = [$rb_minus(n, 1), $rb_plus($rb_times(q, z), $rb_times(p, self.v['$[]'](i)['$[]'](n)))]; + $send(self.v['$[]'](i), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [n, $rb_minus($rb_times(q, self.v['$[]'](i)['$[]'](n)), $rb_times(p, z))]; + $send(self.v['$[]'](i), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + } else { + + + $writer = [$rb_minus(n, 1), $rb_plus(x, p)]; + $send(self.d, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [n, $rb_plus(x, p)]; + $send(self.d, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [$rb_minus(n, 1), z]; + $send(self.e, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [n, z['$-@']()]; + $send(self.e, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + }; + n = $rb_minus(n, 2); + iter = 0; + } else { + + x = self.h['$[]'](n)['$[]'](n); + y = 0.0; + w = 0.0; + if ($truthy($rb_lt(l, n))) { + + y = self.h['$[]']($rb_minus(n, 1))['$[]']($rb_minus(n, 1)); + w = $rb_times(self.h['$[]'](n)['$[]']($rb_minus(n, 1)), self.h['$[]']($rb_minus(n, 1))['$[]'](n)); + }; + if ($eqeq(iter, 10)) { + + exshift = $rb_plus(exshift, x); + $send(low, 'upto', [n], function $$56(i){var self = $$56.$$s == null ? this : $$56.$$s, $binary_op_recvr_tmp_8 = nil; + if (self.h == null) self.h = nil; + + + + if (i == null) i = nil;; + $binary_op_recvr_tmp_8 = self.h['$[]'](i); + + $writer = [i, $rb_minus($binary_op_recvr_tmp_8['$[]'](i), x)]; + $send($binary_op_recvr_tmp_8, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + s = $rb_plus(self.h['$[]'](n)['$[]']($rb_minus(n, 1)).$abs(), self.h['$[]']($rb_minus(n, 1))['$[]']($rb_minus(n, 2)).$abs()); + x = (y = $rb_times(0.75, s)); + w = $rb_times($rb_times(-0.4375, s), s); + }; + if ($eqeq(iter, 30)) { + + s = $rb_divide($rb_minus(y, x), 2.0); + s = $rb_times(s, $rb_plus(s, w)); + if ($truthy($rb_gt(s, 0))) { + + s = $$('Math').$sqrt(s); + if ($truthy($rb_lt(y, x))) { + s = s['$-@']() + }; + s = $rb_minus(x, $rb_divide(w, $rb_plus($rb_divide($rb_minus(y, x), 2.0), s))); + $send(low, 'upto', [n], function $$57(i){var self = $$57.$$s == null ? this : $$57.$$s, $binary_op_recvr_tmp_9 = nil; + if (self.h == null) self.h = nil; + + + + if (i == null) i = nil;; + $binary_op_recvr_tmp_9 = self.h['$[]'](i); + + $writer = [i, $rb_minus($binary_op_recvr_tmp_9['$[]'](i), s)]; + $send($binary_op_recvr_tmp_9, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + exshift = $rb_plus(exshift, s); + x = (y = (w = 0.964)); + }; + }; + iter = $rb_plus(iter, 1); + m = $rb_minus(n, 2); + while ($truthy($rb_ge(m, l))) { + + z = self.h['$[]'](m)['$[]'](m); + r = $rb_minus(x, z); + s = $rb_minus(y, z); + p = $rb_plus($rb_divide($rb_minus($rb_times(r, s), w), self.h['$[]']($rb_plus(m, 1))['$[]'](m)), self.h['$[]'](m)['$[]']($rb_plus(m, 1))); + q = $rb_minus($rb_minus($rb_minus(self.h['$[]']($rb_plus(m, 1))['$[]']($rb_plus(m, 1)), z), r), s); + r = self.h['$[]']($rb_plus(m, 2))['$[]']($rb_plus(m, 1)); + s = $rb_plus($rb_plus(p.$abs(), q.$abs()), r.$abs()); + p = $rb_divide(p, s); + q = $rb_divide(q, s); + r = $rb_divide(r, s); + if ($eqeq(m, l)) { + break; + }; + if ($truthy($rb_lt($rb_times(self.h['$[]'](m)['$[]']($rb_minus(m, 1)).$abs(), $rb_plus(q.$abs(), r.$abs())), $rb_times(eps, $rb_times(p.$abs(), $rb_plus($rb_plus(self.h['$[]']($rb_minus(m, 1))['$[]']($rb_minus(m, 1)).$abs(), z.$abs()), self.h['$[]']($rb_plus(m, 1))['$[]']($rb_plus(m, 1)).$abs())))))) { + break; + }; + m = $rb_minus(m, 1); + }; + $send($rb_plus(m, 2), 'upto', [n], function $$58(i){var self = $$58.$$s == null ? this : $$58.$$s; + if (self.h == null) self.h = nil; + + + + if (i == null) i = nil;; + + $writer = [$rb_minus(i, 2), 0.0]; + $send(self.h['$[]'](i), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy($rb_gt(i, $rb_plus(m, 2)))) { + + $writer = [$rb_minus(i, 3), 0.0]; + $send(self.h['$[]'](i), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else { + return nil + };}, {$$arity: 1, $$s: self}); + $send(m, 'upto', [$rb_minus(n, 1)], function $$59(k){var self = $$59.$$s == null ? this : $$59.$$s, notlast = nil; + if (self.h == null) self.h = nil; + + + + if (k == null) k = nil;; + notlast = k['$!=']($rb_minus(n, 1)); + if ($neqeq(k, m)) { + + p = self.h['$[]'](k)['$[]']($rb_minus(k, 1)); + q = self.h['$[]']($rb_plus(k, 1))['$[]']($rb_minus(k, 1)); + r = ($truthy(notlast) ? (self.h['$[]']($rb_plus(k, 2))['$[]']($rb_minus(k, 1))) : (0.0)); + x = $rb_plus($rb_plus(p.$abs(), q.$abs()), r.$abs()); + if ($eqeq(x, 0)) { + return nil; + }; + p = $rb_divide(p, x); + q = $rb_divide(q, x); + r = $rb_divide(r, x); + }; + s = $$('Math').$sqrt($rb_plus($rb_plus($rb_times(p, p), $rb_times(q, q)), $rb_times(r, r))); + if ($truthy($rb_lt(p, 0))) { + s = s['$-@']() + }; + if ($neqeq(s, 0)) { + + if ($neqeq(k, m)) { + + $writer = [$rb_minus(k, 1), $rb_times(s['$-@'](), x)]; + $send(self.h['$[]'](k), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + } else if ($neqeq(l, m)) { + + $writer = [$rb_minus(k, 1), self.h['$[]'](k)['$[]']($rb_minus(k, 1))['$-@']()]; + $send(self.h['$[]'](k), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + p = $rb_plus(p, s); + x = $rb_divide(p, s); + y = $rb_divide(q, s); + z = $rb_divide(r, s); + q = $rb_divide(q, p); + r = $rb_divide(r, p); + $send(k, 'upto', [$rb_minus(nn, 1)], function $$60(j){var self = $$60.$$s == null ? this : $$60.$$s; + if (self.h == null) self.h = nil; + + + + if (j == null) j = nil;; + p = $rb_plus(self.h['$[]'](k)['$[]'](j), $rb_times(q, self.h['$[]']($rb_plus(k, 1))['$[]'](j))); + if ($truthy(notlast)) { + + p = $rb_plus(p, $rb_times(r, self.h['$[]']($rb_plus(k, 2))['$[]'](j))); + + $writer = [j, $rb_minus(self.h['$[]']($rb_plus(k, 2))['$[]'](j), $rb_times(p, z))]; + $send(self.h['$[]']($rb_plus(k, 2)), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + }; + + $writer = [j, $rb_minus(self.h['$[]'](k)['$[]'](j), $rb_times(p, x))]; + $send(self.h['$[]'](k), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [j, $rb_minus(self.h['$[]']($rb_plus(k, 1))['$[]'](j), $rb_times(p, y))]; + $send(self.h['$[]']($rb_plus(k, 1)), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + $send((0), 'upto', [[n, $rb_plus(k, 3)].$min()], function $$61(i){var self = $$61.$$s == null ? this : $$61.$$s; + if (self.h == null) self.h = nil; + + + + if (i == null) i = nil;; + p = $rb_plus($rb_times(x, self.h['$[]'](i)['$[]'](k)), $rb_times(y, self.h['$[]'](i)['$[]']($rb_plus(k, 1)))); + if ($truthy(notlast)) { + + p = $rb_plus(p, $rb_times(z, self.h['$[]'](i)['$[]']($rb_plus(k, 2)))); + + $writer = [$rb_plus(k, 2), $rb_minus(self.h['$[]'](i)['$[]']($rb_plus(k, 2)), $rb_times(p, r))]; + $send(self.h['$[]'](i), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + }; + + $writer = [k, $rb_minus(self.h['$[]'](i)['$[]'](k), p)]; + $send(self.h['$[]'](i), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [$rb_plus(k, 1), $rb_minus(self.h['$[]'](i)['$[]']($rb_plus(k, 1)), $rb_times(p, q))]; + $send(self.h['$[]'](i), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + return $send(low, 'upto', [high], function $$62(i){var self = $$62.$$s == null ? this : $$62.$$s; + if (self.v == null) self.v = nil; + + + + if (i == null) i = nil;; + p = $rb_plus($rb_times(x, self.v['$[]'](i)['$[]'](k)), $rb_times(y, self.v['$[]'](i)['$[]']($rb_plus(k, 1)))); + if ($truthy(notlast)) { + + p = $rb_plus(p, $rb_times(z, self.v['$[]'](i)['$[]']($rb_plus(k, 2)))); + + $writer = [$rb_plus(k, 2), $rb_minus(self.v['$[]'](i)['$[]']($rb_plus(k, 2)), $rb_times(p, r))]; + $send(self.v['$[]'](i), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + }; + + $writer = [k, $rb_minus(self.v['$[]'](i)['$[]'](k), p)]; + $send(self.v['$[]'](i), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [$rb_plus(k, 1), $rb_minus(self.v['$[]'](i)['$[]']($rb_plus(k, 1)), $rb_times(p, q))]; + $send(self.v['$[]'](i), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + } else { + return nil + };}, {$$arity: 1, $$s: self}); + }; + }; + if ($eqeq(norm, 0.0)) { + return nil + }; + $send($rb_minus(nn, 1), 'downto', [0], function $$63(k){var $c, $d, self = $$63.$$s == null ? this : $$63.$$s, cdivr = nil, cdivi = nil; + if (self.d == null) self.d = nil; + if (self.e == null) self.e = nil; + if (self.h == null) self.h = nil; + + + + if (k == null) k = nil;; + p = self.d['$[]'](k); + q = self.e['$[]'](k); + if ($eqeq(q, 0)) { + + l = k; + + $writer = [k, 1.0]; + $send(self.h['$[]'](k), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return $send($rb_minus(k, 1), 'downto', [0], function $$64(i){var self = $$64.$$s == null ? this : $$64.$$s, t = nil; + if (self.h == null) self.h = nil; + if (self.e == null) self.e = nil; + if (self.d == null) self.d = nil; + + + + if (i == null) i = nil;; + w = $rb_minus(self.h['$[]'](i)['$[]'](i), p); + r = 0.0; + $send(l, 'upto', [k], function $$65(j){var self = $$65.$$s == null ? this : $$65.$$s; + if (self.h == null) self.h = nil; + + + + if (j == null) j = nil;; + return (r = $rb_plus(r, $rb_times(self.h['$[]'](i)['$[]'](j), self.h['$[]'](j)['$[]'](k))));}, {$$arity: 1, $$s: self}); + if ($truthy($rb_lt(self.e['$[]'](i), 0.0))) { + + z = w; + return (s = r); + } else { + + l = i; + if ($eqeq(self.e['$[]'](i), 0.0)) { + if ($neqeq(w, 0.0)) { + + $writer = [k, $rb_divide(r['$-@'](), w)]; + $send(self.h['$[]'](i), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + } else { + + $writer = [k, $rb_divide(r['$-@'](), $rb_times(eps, norm))]; + $send(self.h['$[]'](i), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + } + } else { + + x = self.h['$[]'](i)['$[]']($rb_plus(i, 1)); + y = self.h['$[]']($rb_plus(i, 1))['$[]'](i); + q = $rb_plus($rb_times($rb_minus(self.d['$[]'](i), p), $rb_minus(self.d['$[]'](i), p)), $rb_times(self.e['$[]'](i), self.e['$[]'](i))); + t = $rb_divide($rb_minus($rb_times(x, s), $rb_times(z, r)), q); + + $writer = [k, t]; + $send(self.h['$[]'](i), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy($rb_gt(x.$abs(), z.$abs()))) { + + $writer = [k, $rb_divide($rb_minus(r['$-@'](), $rb_times(w, t)), x)]; + $send(self.h['$[]']($rb_plus(i, 1)), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + } else { + + $writer = [k, $rb_divide($rb_minus(s['$-@'](), $rb_times(y, t)), z)]; + $send(self.h['$[]']($rb_plus(i, 1)), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + }; + t = self.h['$[]'](i)['$[]'](k).$abs(); + if ($truthy($rb_gt($rb_times($rb_times(eps, t), t), 1))) { + return $send(i, 'upto', [k], function $$66(j){var self = $$66.$$s == null ? this : $$66.$$s; + if (self.h == null) self.h = nil; + + + + if (j == null) j = nil;; + $writer = [k, $rb_divide(self.h['$[]'](j)['$[]'](k), t)]; + $send(self.h['$[]'](j), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}) + } else { + return nil + }; + };}, {$$arity: 1, $$s: self}); + } else if ($truthy($rb_lt(q, 0))) { + + l = $rb_minus(n, 1); + if ($truthy($rb_gt(self.h['$[]'](n)['$[]']($rb_minus(n, 1)).$abs(), self.h['$[]']($rb_minus(n, 1))['$[]'](n).$abs()))) { + + + $writer = [$rb_minus(n, 1), $rb_divide(q, self.h['$[]'](n)['$[]']($rb_minus(n, 1)))]; + $send(self.h['$[]']($rb_minus(n, 1)), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [n, $rb_divide($rb_minus(self.h['$[]'](n)['$[]'](n), p)['$-@'](), self.h['$[]'](n)['$[]']($rb_minus(n, 1)))]; + $send(self.h['$[]']($rb_minus(n, 1)), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + } else { + + $d = self.$cdiv(0.0, self.h['$[]']($rb_minus(n, 1))['$[]'](n)['$-@'](), $rb_minus(self.h['$[]']($rb_minus(n, 1))['$[]']($rb_minus(n, 1)), p), q), $c = $to_ary($d), (cdivr = ($c[0] == null ? nil : $c[0])), (cdivi = ($c[1] == null ? nil : $c[1])), $d; + + $writer = [$rb_minus(n, 1), cdivr]; + $send(self.h['$[]']($rb_minus(n, 1)), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [n, cdivi]; + $send(self.h['$[]']($rb_minus(n, 1)), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + }; + + $writer = [$rb_minus(n, 1), 0.0]; + $send(self.h['$[]'](n), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [n, 1.0]; + $send(self.h['$[]'](n), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return $send($rb_minus(n, 2), 'downto', [0], function $$67(i){var $e, $f, self = $$67.$$s == null ? this : $$67.$$s, ra = nil, sa = nil, vr = nil, vi = nil, t = nil; + if (self.h == null) self.h = nil; + if (self.e == null) self.e = nil; + if (self.d == null) self.d = nil; + + + + if (i == null) i = nil;; + ra = 0.0; + sa = 0.0; + $send(l, 'upto', [n], function $$68(j){var self = $$68.$$s == null ? this : $$68.$$s; + if (self.h == null) self.h = nil; + + + + if (j == null) j = nil;; + ra = $rb_plus(ra, $rb_times(self.h['$[]'](i)['$[]'](j), self.h['$[]'](j)['$[]']($rb_minus(n, 1)))); + return (sa = $rb_plus(sa, $rb_times(self.h['$[]'](i)['$[]'](j), self.h['$[]'](j)['$[]'](n))));}, {$$arity: 1, $$s: self}); + w = $rb_minus(self.h['$[]'](i)['$[]'](i), p); + if ($truthy($rb_lt(self.e['$[]'](i), 0.0))) { + + z = w; + r = ra; + return (s = sa); + } else { + + l = i; + if ($eqeq(self.e['$[]'](i), 0)) { + + $f = self.$cdiv(ra['$-@'](), sa['$-@'](), w, q), $e = $to_ary($f), (cdivr = ($e[0] == null ? nil : $e[0])), (cdivi = ($e[1] == null ? nil : $e[1])), $f; + + $writer = [$rb_minus(n, 1), cdivr]; + $send(self.h['$[]'](i), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [n, cdivi]; + $send(self.h['$[]'](i), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + } else { + + x = self.h['$[]'](i)['$[]']($rb_plus(i, 1)); + y = self.h['$[]']($rb_plus(i, 1))['$[]'](i); + vr = $rb_minus($rb_plus($rb_times($rb_minus(self.d['$[]'](i), p), $rb_minus(self.d['$[]'](i), p)), $rb_times(self.e['$[]'](i), self.e['$[]'](i))), $rb_times(q, q)); + vi = $rb_times($rb_times($rb_minus(self.d['$[]'](i), p), 2.0), q); + if (($eqeq(vr, 0.0) && ($eqeq(vi, 0.0)))) { + vr = $rb_times($rb_times(eps, norm), $rb_plus($rb_plus($rb_plus($rb_plus(w.$abs(), q.$abs()), x.$abs()), y.$abs()), z.$abs())) + }; + $f = self.$cdiv($rb_plus($rb_minus($rb_times(x, r), $rb_times(z, ra)), $rb_times(q, sa)), $rb_minus($rb_minus($rb_times(x, s), $rb_times(z, sa)), $rb_times(q, ra)), vr, vi), $e = $to_ary($f), (cdivr = ($e[0] == null ? nil : $e[0])), (cdivi = ($e[1] == null ? nil : $e[1])), $f; + + $writer = [$rb_minus(n, 1), cdivr]; + $send(self.h['$[]'](i), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [n, cdivi]; + $send(self.h['$[]'](i), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy($rb_gt(x.$abs(), $rb_plus(z.$abs(), q.$abs())))) { + + + $writer = [$rb_minus(n, 1), $rb_divide($rb_plus($rb_minus(ra['$-@'](), $rb_times(w, self.h['$[]'](i)['$[]']($rb_minus(n, 1)))), $rb_times(q, self.h['$[]'](i)['$[]'](n))), x)]; + $send(self.h['$[]']($rb_plus(i, 1)), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [n, $rb_divide($rb_minus($rb_minus(sa['$-@'](), $rb_times(w, self.h['$[]'](i)['$[]'](n))), $rb_times(q, self.h['$[]'](i)['$[]']($rb_minus(n, 1)))), x)]; + $send(self.h['$[]']($rb_plus(i, 1)), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + } else { + + $f = self.$cdiv($rb_minus(r['$-@'](), $rb_times(y, self.h['$[]'](i)['$[]']($rb_minus(n, 1)))), $rb_minus(s['$-@'](), $rb_times(y, self.h['$[]'](i)['$[]'](n))), z, q), $e = $to_ary($f), (cdivr = ($e[0] == null ? nil : $e[0])), (cdivi = ($e[1] == null ? nil : $e[1])), $f; + + $writer = [$rb_minus(n, 1), cdivr]; + $send(self.h['$[]']($rb_plus(i, 1)), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [n, cdivi]; + $send(self.h['$[]']($rb_plus(i, 1)), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + }; + }; + t = [self.h['$[]'](i)['$[]']($rb_minus(n, 1)).$abs(), self.h['$[]'](i)['$[]'](n).$abs()].$max(); + if ($truthy($rb_gt($rb_times($rb_times(eps, t), t), 1))) { + return $send(i, 'upto', [n], function $$69(j){var self = $$69.$$s == null ? this : $$69.$$s; + if (self.h == null) self.h = nil; + + + + if (j == null) j = nil;; + + $writer = [$rb_minus(n, 1), $rb_divide(self.h['$[]'](j)['$[]']($rb_minus(n, 1)), t)]; + $send(self.h['$[]'](j), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [n, $rb_divide(self.h['$[]'](j)['$[]'](n), t)]; + $send(self.h['$[]'](j), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}) + } else { + return nil + }; + };}, {$$arity: 1, $$s: self}); + } else { + return nil + };}, {$$arity: 1, $$s: self}); + $send(nn, 'times', [], function $$70(i){var self = $$70.$$s == null ? this : $$70.$$s; + + + + if (i == null) i = nil;; + if (($truthy($rb_lt(i, low)) || ($truthy($rb_gt(i, high))))) { + return $send(i, 'upto', [$rb_minus(nn, 1)], function $$71(j){var self = $$71.$$s == null ? this : $$71.$$s; + if (self.h == null) self.h = nil; + if (self.v == null) self.v = nil; + + + + if (j == null) j = nil;; + $writer = [j, self.h['$[]'](i)['$[]'](j)]; + $send(self.v['$[]'](i), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}) + } else { + return nil + };}, {$$arity: 1, $$s: self}); + return $send($rb_minus(nn, 1), 'downto', [low], function $$72(j){var self = $$72.$$s == null ? this : $$72.$$s; + + + + if (j == null) j = nil;; + return $send(low, 'upto', [high], function $$73(i){var self = $$73.$$s == null ? this : $$73.$$s; + if (self.v == null) self.v = nil; + + + + if (i == null) i = nil;; + z = 0.0; + $send(low, 'upto', [[j, high].$min()], function $$74(k){var self = $$74.$$s == null ? this : $$74.$$s; + if (self.v == null) self.v = nil; + if (self.h == null) self.h = nil; + + + + if (k == null) k = nil;; + return (z = $rb_plus(z, $rb_times(self.v['$[]'](i)['$[]'](k), self.h['$[]'](k)['$[]'](j))));}, {$$arity: 1, $$s: self}); + + $writer = [j, z]; + $send(self.v['$[]'](i), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + }, 0); + })($nesting[0], null, $nesting) + })($nesting[0], null, $nesting) +}; + +Opal.modules["matrix/lup_decomposition"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $eqeq = Opal.eqeq, $def = Opal.def, $rb_le = Opal.rb_le, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $neqeq = Opal.neqeq, $rb_times = Opal.rb_times, $rb_plus = Opal.rb_plus, $rb_lt = Opal.rb_lt; + + Opal.add_stubs('include,build,min,>,[],==,<=,new,each_with_index,[]=,-,send,l,u,p,alias_method,attr_reader,times,!=,Raise,*,singular?,is_a?,row_count,column_count,map,to_a,row,upto,+,downto,quo,convert_to_array,size,values_at,elements,raise,class,abs,-@,<'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Matrix'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'LUPDecomposition'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.row_count = $proto.column_count = $proto.pivots = $proto.pivot_sign = nil; + + self.$include($$$($$('Matrix'), 'ConversionHelper')); + + $def(self, '$l', function $$l() { + var self = this; + + return $send($$('Matrix'), 'build', [self.row_count, [self.column_count, self.row_count].$min()], function $$1(i, j){var self = $$1.$$s == null ? this : $$1.$$s; + if (self.lu == null) self.lu = nil; + + + + if (i == null) i = nil;; + + if (j == null) j = nil;; + if ($truthy($rb_gt(i, j))) { + return self.lu['$[]'](i)['$[]'](j) + } else if ($eqeq(i, j)) { + return 1 + } else { + return 0 + };}, {$$arity: 2, $$s: self}) + }, 0); + + $def(self, '$u', function $$u() { + var self = this; + + return $send($$('Matrix'), 'build', [[self.column_count, self.row_count].$min(), self.column_count], function $$2(i, j){var self = $$2.$$s == null ? this : $$2.$$s; + if (self.lu == null) self.lu = nil; + + + + if (i == null) i = nil;; + + if (j == null) j = nil;; + if ($truthy($rb_le(i, j))) { + return self.lu['$[]'](i)['$[]'](j) + } else { + return 0 + };}, {$$arity: 2, $$s: self}) + }, 0); + + $def(self, '$p', function $$p() { + var self = this, rows = nil; + + + rows = $send($$('Array'), 'new', [self.row_count], function $$3(){var self = $$3.$$s == null ? this : $$3.$$s; + if (self.row_count == null) self.row_count = nil; + + return $$('Array').$new(self.row_count, 0)}, {$$arity: 0, $$s: self}); + $send(self.pivots, 'each_with_index', [], function $$4(p, i){var $writer = nil; + + + + if (p == null) p = nil;; + + if (i == null) i = nil;; + $writer = [p, 1]; + $send(rows['$[]'](i), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 2); + return $$('Matrix').$send("new", rows, self.row_count); + }, 0); + + $def(self, '$to_ary', function $$to_ary() { + var self = this; + + return [self.$l(), self.$u(), self.$p()] + }, 0); + self.$alias_method("to_a", "to_ary"); + self.$attr_reader("pivots"); + + $def(self, '$singular?', function $LUPDecomposition_singular$ques$5() {try { + + var self = this; + + + $send(self.column_count, 'times', [], function $$6(j){var self = $$6.$$s == null ? this : $$6.$$s; + if (self.lu == null) self.lu = nil; + + + + if (j == null) j = nil;; + if ($eqeq(self.lu['$[]'](j)['$[]'](j), 0)) { + Opal.ret(true) + } else { + return nil + };}, {$$arity: 1, $$s: self}); + return false; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 0); + + $def(self, '$det', function $$det() { + var self = this, d = nil; + + + if ($neqeq(self.row_count, self.column_count)) { + $$('Matrix').$Raise($$$($$('Matrix'), 'ErrDimensionMismatch')) + }; + d = self.pivot_sign; + $send(self.column_count, 'times', [], function $$7(j){var self = $$7.$$s == null ? this : $$7.$$s; + if (self.lu == null) self.lu = nil; + + + + if (j == null) j = nil;; + return (d = $rb_times(d, self.lu['$[]'](j)['$[]'](j)));}, {$$arity: 1, $$s: self}); + return d; + }, 0); + self.$alias_method("determinant", "det"); + + $def(self, '$solve', function $$solve(b) { + var self = this, nx = nil, m = nil; + + + if ($truthy(self['$singular?']())) { + $$('Matrix').$Raise($$$($$('Matrix'), 'ErrNotRegular'), "Matrix is singular.") + }; + if ($truthy(b['$is_a?']($$('Matrix')))) { + + if ($neqeq(b.$row_count(), self.row_count)) { + $$('Matrix').$Raise($$$($$('Matrix'), 'ErrDimensionMismatch')) + }; + nx = b.$column_count(); + m = $send(self.pivots, 'map', [], function $$8(row){ + + + if (row == null) row = nil;; + return b.$row(row).$to_a();}, 1); + $send(self.column_count, 'times', [], function $$9(k){var self = $$9.$$s == null ? this : $$9.$$s; + if (self.column_count == null) self.column_count = nil; + + + + if (k == null) k = nil;; + return $send($rb_plus(k, 1), 'upto', [$rb_minus(self.column_count, 1)], function $$10(i){var self = $$10.$$s == null ? this : $$10.$$s; + + + + if (i == null) i = nil;; + return $send(nx, 'times', [], function $$11(j){var self = $$11.$$s == null ? this : $$11.$$s, $binary_op_recvr_tmp_10 = nil, $writer = nil; + if (self.lu == null) self.lu = nil; + + + + if (j == null) j = nil;; + $binary_op_recvr_tmp_10 = m['$[]'](i); + + $writer = [j, $rb_minus($binary_op_recvr_tmp_10['$[]'](j), $rb_times(m['$[]'](k)['$[]'](j), self.lu['$[]'](i)['$[]'](k)))]; + $send($binary_op_recvr_tmp_10, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + $send($rb_minus(self.column_count, 1), 'downto', [0], function $$12(k){var self = $$12.$$s == null ? this : $$12.$$s; + + + + if (k == null) k = nil;; + $send(nx, 'times', [], function $$13(j){var self = $$13.$$s == null ? this : $$13.$$s, $writer = nil; + if (self.lu == null) self.lu = nil; + + + + if (j == null) j = nil;; + $writer = [j, m['$[]'](k)['$[]'](j).$quo(self.lu['$[]'](k)['$[]'](k))]; + $send(m['$[]'](k), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}); + return $send(k, 'times', [], function $$14(i){var self = $$14.$$s == null ? this : $$14.$$s; + + + + if (i == null) i = nil;; + return $send(nx, 'times', [], function $$15(j){var self = $$15.$$s == null ? this : $$15.$$s, $binary_op_recvr_tmp_11 = nil, $writer = nil; + if (self.lu == null) self.lu = nil; + + + + if (j == null) j = nil;; + $binary_op_recvr_tmp_11 = m['$[]'](i); + + $writer = [j, $rb_minus($binary_op_recvr_tmp_11['$[]'](j), $rb_times(m['$[]'](k)['$[]'](j), self.lu['$[]'](i)['$[]'](k)))]; + $send($binary_op_recvr_tmp_11, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + return $$('Matrix').$send("new", m, nx); + } else { + + b = self.$convert_to_array(b); + if ($neqeq(b.$size(), self.row_count)) { + $$('Matrix').$Raise($$$($$('Matrix'), 'ErrDimensionMismatch')) + }; + m = $send(b, 'values_at', $to_a(self.pivots)); + $send(self.column_count, 'times', [], function $$16(k){var self = $$16.$$s == null ? this : $$16.$$s; + if (self.column_count == null) self.column_count = nil; + + + + if (k == null) k = nil;; + return $send($rb_plus(k, 1), 'upto', [$rb_minus(self.column_count, 1)], function $$17(i){var self = $$17.$$s == null ? this : $$17.$$s, $writer = nil; + if (self.lu == null) self.lu = nil; + + + + if (i == null) i = nil;; + $writer = [i, $rb_minus(m['$[]'](i), $rb_times(m['$[]'](k), self.lu['$[]'](i)['$[]'](k)))]; + $send(m, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + $send($rb_minus(self.column_count, 1), 'downto', [0], function $$18(k){var self = $$18.$$s == null ? this : $$18.$$s, $writer = nil; + if (self.lu == null) self.lu = nil; + + + + if (k == null) k = nil;; + + $writer = [k, m['$[]'](k).$quo(self.lu['$[]'](k)['$[]'](k))]; + $send(m, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return $send(k, 'times', [], function $$19(i){var self = $$19.$$s == null ? this : $$19.$$s; + if (self.lu == null) self.lu = nil; + + + + if (i == null) i = nil;; + $writer = [i, $rb_minus(m['$[]'](i), $rb_times(m['$[]'](k), self.lu['$[]'](i)['$[]'](k)))]; + $send(m, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + return $$('Vector').$elements(m, false); + }; + }, 1); + return $def(self, '$initialize', function $$initialize(a) { + var self = this, lu_col_j = nil; + + + if (!$truthy(a['$is_a?']($$('Matrix')))) { + self.$raise($$('TypeError'), "Expected Matrix but got " + (a.$class())) + }; + self.lu = a.$to_a(); + self.row_count = a.$row_count(); + self.column_count = a.$column_count(); + self.pivots = $$('Array').$new(self.row_count); + $send(self.row_count, 'times', [], function $$20(i){var self = $$20.$$s == null ? this : $$20.$$s, $writer = nil; + if (self.pivots == null) self.pivots = nil; + + + + if (i == null) i = nil;; + $writer = [i, i]; + $send(self.pivots, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}); + self.pivot_sign = 1; + lu_col_j = $$('Array').$new(self.row_count); + return $send(self.column_count, 'times', [], function $$21(j){var self = $$21.$$s == null ? this : $$21.$$s, p = nil, k = nil, $writer = nil; + if (self.row_count == null) self.row_count = nil; + if (self.column_count == null) self.column_count = nil; + if (self.pivots == null) self.pivots = nil; + if (self.pivot_sign == null) self.pivot_sign = nil; + if (self.lu == null) self.lu = nil; + + + + if (j == null) j = nil;; + $send(self.row_count, 'times', [], function $$22(i){var self = $$22.$$s == null ? this : $$22.$$s, $writer = nil; + if (self.lu == null) self.lu = nil; + + + + if (i == null) i = nil;; + $writer = [i, self.lu['$[]'](i)['$[]'](j)]; + $send(lu_col_j, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}); + $send(self.row_count, 'times', [], function $$23(i){var self = $$23.$$s == null ? this : $$23.$$s, lu_row_i = nil, kmax = nil, s = nil, $writer = nil; + if (self.lu == null) self.lu = nil; + + + + if (i == null) i = nil;; + lu_row_i = self.lu['$[]'](i); + kmax = [i, j].$min(); + s = 0; + $send(kmax, 'times', [], function $$24(k){ + + + if (k == null) k = nil;; + return (s = $rb_plus(s, $rb_times(lu_row_i['$[]'](k), lu_col_j['$[]'](k))));}, 1); + + $writer = [j, (($writer = [i, $rb_minus(lu_col_j['$[]'](i), s)]), $send(lu_col_j, '[]=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)])]; + $send(lu_row_i, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + p = j; + $send($rb_plus(j, 1), 'upto', [$rb_minus(self.row_count, 1)], function $$25(i){ + + + if (i == null) i = nil;; + if ($truthy($rb_gt(lu_col_j['$[]'](i).$abs(), lu_col_j['$[]'](p).$abs()))) { + return (p = i) + } else { + return nil + };}, 1); + if ($neqeq(p, j)) { + + $send(self.column_count, 'times', [], function $$26(k){var self = $$26.$$s == null ? this : $$26.$$s, t = nil, $writer = nil; + if (self.lu == null) self.lu = nil; + + + + if (k == null) k = nil;; + t = self.lu['$[]'](p)['$[]'](k); + + $writer = [k, self.lu['$[]'](j)['$[]'](k)]; + $send(self.lu['$[]'](p), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [k, t]; + $send(self.lu['$[]'](j), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + k = self.pivots['$[]'](p); + + $writer = [p, self.pivots['$[]'](j)]; + $send(self.pivots, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [j, k]; + $send(self.pivots, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.pivot_sign = self.pivot_sign['$-@'](); + }; + if (($truthy($rb_lt(j, self.row_count)) && ($neqeq(self.lu['$[]'](j)['$[]'](j), 0)))) { + return $send($rb_plus(j, 1), 'upto', [$rb_minus(self.row_count, 1)], function $$27(i){var self = $$27.$$s == null ? this : $$27.$$s; + if (self.lu == null) self.lu = nil; + + + + if (i == null) i = nil;; + $writer = [j, self.lu['$[]'](i)['$[]'](j).$quo(self.lu['$[]'](j)['$[]'](j))]; + $send(self.lu['$[]'](i), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}) + } else { + return nil + };}, {$$arity: 1, $$s: self}); + }, 1); + })($nesting[0], null, $nesting) + })($nesting[0], null, $nesting) +}; + +Opal.modules["matrix"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $defs = Opal.defs, $send = Opal.send, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $rb_lt = Opal.rb_lt, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $alias = Opal.alias, $neqeq = Opal.neqeq, $rb_times = Opal.rb_times, $rb_plus = Opal.rb_plus, $def = Opal.def, $rb_ge = Opal.rb_ge, $eqeqeq = Opal.eqeqeq, $const_set = Opal.const_set, $hash2 = Opal.hash2, $rb_gt = Opal.rb_gt, $to_ary = Opal.to_ary, $rb_le = Opal.rb_le, $not = Opal.not, $rb_divide = Opal.rb_divide; + + Opal.add_stubs('require,extend,def_e2message,def_exception,include,autoload,private_class_method,attr_reader,protected,rows,convert_to_array,map!,size,[],each,==,raise,new,transpose,coerce_to_int,<,to_enum,empty,[]=,-,diagonal,scalar,!=,*,coerce_to_matrix,map,send,to_proc,column_count,concat,row_count,each_with_index,+,empty?,method,first,Raise,combine,class,private,fetch,alias_method,elements,-@,>=,times,collect,new_matrix,===,upto,min,inspect,freeze,>,include?,last,pop,end,exclude_end?,<=,to_a,delete_at,square?,determinant,first_minor,**,build,cofactor,!,inject,with_index,all?,conj,singular?,eql?,hash,column_vector,column,apply_through_coercion,/,inverse,I,abs,quo,identity,loop,zero?,>>,eigensystem,+@,determinant_bareiss,find,warn,hstack,rank,round,vstack,real,imag,row,join,to_s,dup,to_ary,message,is_a?,coerce,length,public_send,kind_of?,respond_to?,__send__,coerce_to,count,independent?,collect2,each2,basis,laplace_expansion,sqrt,abs2,magnitude,acos,inner_product,row_vector'); + + self.$require("e2mmap.rb"); + (function($base, $parent_nesting) { + var self = $module($base, 'ExceptionForMatrix'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$extend($$('Exception2MessageMapper')); + self.$def_e2message($$('TypeError'), "wrong argument type %s (expected %s)"); + self.$def_e2message($$('ArgumentError'), "Wrong # of arguments(%d for %d)"); + self.$def_exception("ErrDimensionMismatch", "\#{self.name} dimension mismatch"); + self.$def_exception("ErrNotRegular", "Not Regular Matrix"); + self.$def_exception("ErrOperationNotDefined", "Operation(%s) can\\'t be defined: %s op %s"); + return self.$def_exception("ErrOperationNotImplemented", "Sorry, Operation(%s) not implemented: %s op %s"); + })($nesting[0], $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Matrix'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.rows = nil; + + self.$include($$('Enumerable')); + self.$include($$('ExceptionForMatrix')); + self.$autoload("EigenvalueDecomposition", "matrix/eigenvalue_decomposition"); + self.$autoload("LUPDecomposition", "matrix/lup_decomposition"); + self.$private_class_method("new"); + self.$attr_reader("rows"); + self.$protected("rows"); + $defs($$('Matrix'), '$[]', function $Matrix_$$$1($a) { + var $post_args, rows, self = this; + + + + $post_args = Opal.slice.call(arguments); + + rows = $post_args;; + return self.$rows(rows, false); + }, -1); + $defs($$('Matrix'), '$rows', function $$rows(rows, copy) { + var self = this, size = nil, $ret_or_1 = nil; + + + + if (copy == null) copy = true;; + rows = self.$convert_to_array(rows, copy); + $send(rows, 'map!', [], function $$2(row){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (row == null) row = nil;; + return self.$convert_to_array(row, copy);}, {$$arity: 1, $$s: self}); + size = ($truthy(($ret_or_1 = rows['$[]'](0))) ? ($ret_or_1) : ([])).$size(); + $send(rows, 'each', [], function $$3(row){var self = $$3.$$s == null ? this : $$3.$$s; + + + + if (row == null) row = nil;; + if ($eqeq(row.$size(), size)) { + return nil + } else { + return self.$raise($$('ErrDimensionMismatch'), "row size differs (" + (row.$size()) + " should be " + (size) + ")") + };}, {$$arity: 1, $$s: self}); + return self.$new(rows, size); + }, -2); + $defs($$('Matrix'), '$columns', function $$columns(columns) { + var self = this; + + return self.$rows(columns, false).$transpose() + }, 1); + $defs($$('Matrix'), '$build', function $$build(row_count, column_count) { + var $yield = $$build.$$p || nil, self = this, rows = nil; + + delete $$build.$$p; + + + if (column_count == null) column_count = row_count;; + row_count = $$('CoercionHelper').$coerce_to_int(row_count); + column_count = $$('CoercionHelper').$coerce_to_int(column_count); + if (($truthy($rb_lt(row_count, 0)) || ($truthy($rb_lt(column_count, 0))))) { + self.$raise($$('ArgumentError')) + }; + if (!($yield !== nil)) { + return self.$to_enum("build", row_count, column_count) + }; + rows = $send($$('Array'), 'new', [row_count], function $$4(i){ + + + if (i == null) i = nil;; + return $send($$('Array'), 'new', [column_count], function $$5(j){ + + + if (j == null) j = nil;; + return Opal.yieldX($yield, [i, j]);;}, 1);}, 1); + return self.$new(rows, column_count); + }, -2); + $defs($$('Matrix'), '$diagonal', function $$diagonal($a) { + var $post_args, values, self = this, size = nil, rows = nil; + + + + $post_args = Opal.slice.call(arguments); + + values = $post_args;; + size = values.$size(); + if ($eqeq(size, 0)) { + return $$('Matrix').$empty() + }; + rows = $send($$('Array'), 'new', [size], function $$6(j){var row = nil, $writer = nil; + + + + if (j == null) j = nil;; + row = $$('Array').$new(size, 0); + + $writer = [j, values['$[]'](j)]; + $send(row, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return row;}, 1); + return self.$new(rows); + }, -1); + $defs($$('Matrix'), '$scalar', function $$scalar(n, value) { + var self = this; + + return $send(self, 'diagonal', $to_a($$('Array').$new(n, value))) + }, 2); + $defs($$('Matrix'), '$identity', function $$identity(n) { + var self = this; + + return self.$scalar(n, 1) + }, 1); + (function(self, $parent_nesting) { + + + $alias(self, "unit", "identity"); + return $alias(self, "I", "identity"); + })(Opal.get_singleton_class($$('Matrix')), $nesting); + $defs($$('Matrix'), '$zero', function $$zero(row_count, column_count) { + var self = this, rows = nil; + + + + if (column_count == null) column_count = row_count;; + rows = $send($$('Array'), 'new', [row_count], function $$7(){ + return $$('Array').$new(column_count, 0)}, 0); + return self.$new(rows, column_count); + }, -2); + $defs($$('Matrix'), '$row_vector', function $$row_vector(row) { + var self = this; + + + row = self.$convert_to_array(row); + return self.$new([row]); + }, 1); + $defs($$('Matrix'), '$column_vector', function $$column_vector(column) { + var self = this; + + + column = self.$convert_to_array(column); + return self.$new([column].$transpose(), 1); + }, 1); + $defs($$('Matrix'), '$empty', function $$empty(row_count, column_count) { + var self = this; + + + + if (row_count == null) row_count = 0;; + + if (column_count == null) column_count = 0;; + if (($neqeq(column_count, 0) && ($neqeq(row_count, 0)))) { + self.$raise($$('ArgumentError'), "One size must be 0") + }; + if (($truthy($rb_lt(column_count, 0)) || ($truthy($rb_lt(row_count, 0))))) { + self.$raise($$('ArgumentError'), "Negative size") + }; + return self.$new($rb_times([[]], row_count), column_count); + }, -1); + $defs($$('Matrix'), '$vstack', function $$vstack(x, $a) { + var $post_args, matrices, self = this, result = nil; + + + + $post_args = Opal.slice.call(arguments, 1); + + matrices = $post_args;; + x = $$('CoercionHelper').$coerce_to_matrix(x); + result = $send(x.$send("rows"), 'map', [], "dup".$to_proc()); + $send(matrices, 'each', [], function $$8(m){var self = $$8.$$s == null ? this : $$8.$$s; + + + + if (m == null) m = nil;; + m = $$('CoercionHelper').$coerce_to_matrix(m); + if ($neqeq(m.$column_count(), x.$column_count())) { + self.$raise($$('ErrDimensionMismatch'), "The given matrices must have " + (x.$column_count()) + " columns, but one has " + (m.$column_count())) + }; + return result.$concat(m.$send("rows"));}, {$$arity: 1, $$s: self}); + return self.$new(result, x.$column_count()); + }, -2); + $defs($$('Matrix'), '$hstack', function $$hstack(x, $a) { + var $post_args, matrices, self = this, result = nil, total_column_count = nil; + + + + $post_args = Opal.slice.call(arguments, 1); + + matrices = $post_args;; + x = $$('CoercionHelper').$coerce_to_matrix(x); + result = $send(x.$send("rows"), 'map', [], "dup".$to_proc()); + total_column_count = x.$column_count(); + $send(matrices, 'each', [], function $$9(m){var self = $$9.$$s == null ? this : $$9.$$s; + + + + if (m == null) m = nil;; + m = $$('CoercionHelper').$coerce_to_matrix(m); + if ($neqeq(m.$row_count(), x.$row_count())) { + self.$raise($$('ErrDimensionMismatch'), "The given matrices must have " + (x.$row_count()) + " rows, but one has " + (m.$row_count())) + }; + $send(result, 'each_with_index', [], function $$10(row, i){ + + + if (row == null) row = nil;; + + if (i == null) i = nil;; + return row.$concat(m.$send("rows")['$[]'](i));}, 2); + return (total_column_count = $rb_plus(total_column_count, m.$column_count()));}, {$$arity: 1, $$s: self}); + return self.$new(result, total_column_count); + }, -2); + $defs($$('Matrix'), '$combine', function $$combine($a) { + var $post_args, matrices, $yield = $$combine.$$p || nil, self = this, x = nil, rows = nil; + + delete $$combine.$$p; + + + $post_args = Opal.slice.call(arguments); + + matrices = $post_args;; + if (!($yield !== nil)) { + return $send(self, 'to_enum', ["combine"].concat($to_a(matrices))) + }; + if ($truthy(matrices['$empty?']())) { + return $$('Matrix').$empty() + }; + $send(matrices, 'map!', [], $$('CoercionHelper').$method("coerce_to_matrix").$to_proc()); + x = matrices.$first(); + $send(matrices, 'each', [], function $$11(m){ + + + if (m == null) m = nil;; + if (($eqeq(x.$row_count(), m.$row_count()) && ($eqeq(x.$column_count(), m.$column_count())))) { + return nil + } else { + return $$('Matrix').$Raise($$('ErrDimensionMismatch')) + };}, 1); + rows = $send($$('Array'), 'new', [x.$row_count()], function $$12(i){ + + + if (i == null) i = nil;; + return $send($$('Array'), 'new', [x.$column_count()], function $$13(j){ + + + if (j == null) j = nil;; + return Opal.yield1($yield, $send(matrices, 'map', [], function $$14(m){ + + + if (m == null) m = nil;; + return m['$[]'](i, j);}, 1));;}, 1);}, 1); + return self.$new(rows, x.$column_count()); + }, -1); + + $def(self, '$combine', function $$combine($a) { + var block = $$combine.$$p || nil, $post_args, matrices, self = this; + + delete $$combine.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + matrices = $post_args;; + return $send($$('Matrix'), 'combine', [self].concat($to_a(matrices)), block.$to_proc()); + }, -1); + + $def(self, '$initialize', function $$initialize(rows, column_count) { + var self = this; + + + + if (column_count == null) column_count = rows['$[]'](0).$size();; + self.rows = rows; + return (self.column_count = column_count); + }, -2); + + $def(self, '$new_matrix', function $$new_matrix(rows, column_count) { + var self = this; + + + + if (column_count == null) column_count = rows['$[]'](0).$size();; + return self.$class().$send("new", rows, column_count); + }, -2); + self.$private("new_matrix"); + + $def(self, '$[]', function $Matrix_$$$15(i, j) {try { + + var self = this; + + return $send(self.rows, 'fetch', [i], function $$16(){ + Opal.ret(nil)}, 0)['$[]'](j) + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 2); + $alias(self, "element", "[]"); + $alias(self, "component", "[]"); + + $def(self, '$[]=', function $Matrix_$$$eq$17(i, j, v) { + var self = this, $writer = nil; + + + $writer = [j, v]; + $send(self.rows['$[]'](i), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }, 3); + $alias(self, "set_element", "[]="); + $alias(self, "set_component", "[]="); + self.$private("[]=", "set_element", "set_component"); + + $def(self, '$row_count', function $$row_count() { + var self = this; + + return self.rows.$size() + }, 0); + self.$alias_method("row_size", "row_count"); + self.$attr_reader("column_count"); + self.$alias_method("column_size", "column_count"); + + $def(self, '$row', function $$row(i) {try { + + var block = $$row.$$p || nil, self = this; + + delete $$row.$$p; + + ; + if ((block !== nil)) { + + $send($send(self.rows, 'fetch', [i], function $$18(){var self = $$18.$$s == null ? this : $$18.$$s; + + Opal.ret(self)}, {$$arity: 0, $$s: self}), 'each', [], block.$to_proc()); + return self; + } else { + return $$('Vector').$elements($send(self.rows, 'fetch', [i], function $$19(){ + Opal.ret(nil)}, 0)) + }; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 1); + + $def(self, '$column', function $$column(j) { + var $yield = $$column.$$p || nil, self = this, col = nil; + + delete $$column.$$p; + if (($yield !== nil)) { + + if (($truthy($rb_ge(j, self.$column_count())) || ($truthy($rb_lt(j, self.$column_count()['$-@']()))))) { + return self + }; + $send(self.$row_count(), 'times', [], function $$20(i){var self = $$20.$$s == null ? this : $$20.$$s; + if (self.rows == null) self.rows = nil; + + + + if (i == null) i = nil;; + return Opal.yield1($yield, self.rows['$[]'](i)['$[]'](j));;}, {$$arity: 1, $$s: self}); + return self; + } else { + + if (($truthy($rb_ge(j, self.$column_count())) || ($truthy($rb_lt(j, self.$column_count()['$-@']()))))) { + return nil + }; + col = $send($$('Array'), 'new', [self.$row_count()], function $$21(i){var self = $$21.$$s == null ? this : $$21.$$s; + if (self.rows == null) self.rows = nil; + + + + if (i == null) i = nil;; + return self.rows['$[]'](i)['$[]'](j);}, {$$arity: 1, $$s: self}); + return $$('Vector').$elements(col, false); + } + }, 1); + + $def(self, '$collect', function $$collect() { + var block = $$collect.$$p || nil, self = this, rows = nil; + + delete $$collect.$$p; + + ; + if (!(block !== nil)) { + return self.$to_enum("collect") + }; + rows = $send(self.rows, 'collect', [], function $$22(row){ + + + if (row == null) row = nil;; + return $send(row, 'collect', [], block.$to_proc());}, 1); + return self.$new_matrix(rows, self.$column_count()); + }, 0); + $alias(self, "map", "collect"); + + $def(self, '$each', function $$each(which) {try { + + var $yield = $$each.$$p || nil, self = this, last = nil, $ret_or_1 = nil, block = nil; + + delete $$each.$$p; + + + if (which == null) which = "all";; + if (!($yield !== nil)) { + return self.$to_enum("each", which) + }; + last = $rb_minus(self.$column_count(), 1); + if ($eqeqeq("all", ($ret_or_1 = which))) { + + block = $$('Proc').$new(); + $send(self.rows, 'each', [], function $$23(row){ + + + if (row == null) row = nil;; + return $send(row, 'each', [], block.$to_proc());}, 1); + } else if ($eqeqeq("diagonal", $ret_or_1)) { + $send(self.rows, 'each_with_index', [], function $$24(row, row_index){var self = $$24.$$s == null ? this : $$24.$$s; + + + + if (row == null) row = nil;; + + if (row_index == null) row_index = nil;; + return Opal.yield1($yield, $send(row, 'fetch', [row_index], function $$25(){var self = $$25.$$s == null ? this : $$25.$$s; + + Opal.ret(self)}, {$$arity: 0, $$s: self}));;}, {$$arity: 2, $$s: self}) + } else if ($eqeqeq("off_diagonal", $ret_or_1)) { + $send(self.rows, 'each_with_index', [], function $$26(row, row_index){var self = $$26.$$s == null ? this : $$26.$$s; + + + + if (row == null) row = nil;; + + if (row_index == null) row_index = nil;; + return $send(self.$column_count(), 'times', [], function $$27(col_index){ + + + if (col_index == null) col_index = nil;; + if ($eqeq(row_index, col_index)) { + return nil + } else { + return Opal.yield1($yield, row['$[]'](col_index)); + };}, 1);}, {$$arity: 2, $$s: self}) + } else if ($eqeqeq("lower", $ret_or_1)) { + $send(self.rows, 'each_with_index', [], function $$28(row, row_index){ + + + if (row == null) row = nil;; + + if (row_index == null) row_index = nil;; + return $send((0), 'upto', [[row_index, last].$min()], function $$29(col_index){ + + + if (col_index == null) col_index = nil;; + return Opal.yield1($yield, row['$[]'](col_index));;}, 1);}, 2) + } else if ($eqeqeq("strict_lower", $ret_or_1)) { + $send(self.rows, 'each_with_index', [], function $$30(row, row_index){var self = $$30.$$s == null ? this : $$30.$$s; + + + + if (row == null) row = nil;; + + if (row_index == null) row_index = nil;; + return $send([row_index, self.$column_count()].$min(), 'times', [], function $$31(col_index){ + + + if (col_index == null) col_index = nil;; + return Opal.yield1($yield, row['$[]'](col_index));;}, 1);}, {$$arity: 2, $$s: self}) + } else if ($eqeqeq("strict_upper", $ret_or_1)) { + $send(self.rows, 'each_with_index', [], function $$32(row, row_index){ + + + if (row == null) row = nil;; + + if (row_index == null) row_index = nil;; + return $send($rb_plus(row_index, 1), 'upto', [last], function $$33(col_index){ + + + if (col_index == null) col_index = nil;; + return Opal.yield1($yield, row['$[]'](col_index));;}, 1);}, 2) + } else if ($eqeqeq("upper", $ret_or_1)) { + $send(self.rows, 'each_with_index', [], function $$34(row, row_index){ + + + if (row == null) row = nil;; + + if (row_index == null) row_index = nil;; + return $send(row_index, 'upto', [last], function $$35(col_index){ + + + if (col_index == null) col_index = nil;; + return Opal.yield1($yield, row['$[]'](col_index));;}, 1);}, 2) + } else { + self.$raise($$('ArgumentError'), "expected " + (which.$inspect()) + " to be one of :all, :diagonal, :off_diagonal, :lower, :strict_lower, :strict_upper or :upper") + }; + return self; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, -1); + + $def(self, '$each_with_index', function $$each_with_index(which) {try { + + var $yield = $$each_with_index.$$p || nil, self = this, last = nil, $ret_or_1 = nil; + + delete $$each_with_index.$$p; + + + if (which == null) which = "all";; + if (!($yield !== nil)) { + return self.$to_enum("each_with_index", which) + }; + last = $rb_minus(self.$column_count(), 1); + if ($eqeqeq("all", ($ret_or_1 = which))) { + $send(self.rows, 'each_with_index', [], function $$36(row, row_index){ + + + if (row == null) row = nil;; + + if (row_index == null) row_index = nil;; + return $send(row, 'each_with_index', [], function $$37(e, col_index){ + + + if (e == null) e = nil;; + + if (col_index == null) col_index = nil;; + return Opal.yieldX($yield, [e, row_index, col_index]);;}, 2);}, 2) + } else if ($eqeqeq("diagonal", $ret_or_1)) { + $send(self.rows, 'each_with_index', [], function $$38(row, row_index){var self = $$38.$$s == null ? this : $$38.$$s; + + + + if (row == null) row = nil;; + + if (row_index == null) row_index = nil;; + return Opal.yieldX($yield, [$send(row, 'fetch', [row_index], function $$39(){var self = $$39.$$s == null ? this : $$39.$$s; + + Opal.ret(self)}, {$$arity: 0, $$s: self}), row_index, row_index]);;}, {$$arity: 2, $$s: self}) + } else if ($eqeqeq("off_diagonal", $ret_or_1)) { + $send(self.rows, 'each_with_index', [], function $$40(row, row_index){var self = $$40.$$s == null ? this : $$40.$$s; + + + + if (row == null) row = nil;; + + if (row_index == null) row_index = nil;; + return $send(self.$column_count(), 'times', [], function $$41(col_index){ + + + if (col_index == null) col_index = nil;; + if ($eqeq(row_index, col_index)) { + return nil + } else { + return Opal.yieldX($yield, [row['$[]'](col_index), row_index, col_index]); + };}, 1);}, {$$arity: 2, $$s: self}) + } else if ($eqeqeq("lower", $ret_or_1)) { + $send(self.rows, 'each_with_index', [], function $$42(row, row_index){ + + + if (row == null) row = nil;; + + if (row_index == null) row_index = nil;; + return $send((0), 'upto', [[row_index, last].$min()], function $$43(col_index){ + + + if (col_index == null) col_index = nil;; + return Opal.yieldX($yield, [row['$[]'](col_index), row_index, col_index]);;}, 1);}, 2) + } else if ($eqeqeq("strict_lower", $ret_or_1)) { + $send(self.rows, 'each_with_index', [], function $$44(row, row_index){var self = $$44.$$s == null ? this : $$44.$$s; + + + + if (row == null) row = nil;; + + if (row_index == null) row_index = nil;; + return $send([row_index, self.$column_count()].$min(), 'times', [], function $$45(col_index){ + + + if (col_index == null) col_index = nil;; + return Opal.yieldX($yield, [row['$[]'](col_index), row_index, col_index]);;}, 1);}, {$$arity: 2, $$s: self}) + } else if ($eqeqeq("strict_upper", $ret_or_1)) { + $send(self.rows, 'each_with_index', [], function $$46(row, row_index){ + + + if (row == null) row = nil;; + + if (row_index == null) row_index = nil;; + return $send($rb_plus(row_index, 1), 'upto', [last], function $$47(col_index){ + + + if (col_index == null) col_index = nil;; + return Opal.yieldX($yield, [row['$[]'](col_index), row_index, col_index]);;}, 1);}, 2) + } else if ($eqeqeq("upper", $ret_or_1)) { + $send(self.rows, 'each_with_index', [], function $$48(row, row_index){ + + + if (row == null) row = nil;; + + if (row_index == null) row_index = nil;; + return $send(row_index, 'upto', [last], function $$49(col_index){ + + + if (col_index == null) col_index = nil;; + return Opal.yieldX($yield, [row['$[]'](col_index), row_index, col_index]);;}, 1);}, 2) + } else { + self.$raise($$('ArgumentError'), "expected " + (which.$inspect()) + " to be one of :all, :diagonal, :off_diagonal, :lower, :strict_lower, :strict_upper or :upper") + }; + return self; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, -1); + $const_set($nesting[0], 'SELECTORS', $hash2(["all", "diagonal", "off_diagonal", "lower", "strict_lower", "strict_upper", "upper"], {"all": true, "diagonal": true, "off_diagonal": true, "lower": true, "strict_lower": true, "strict_upper": true, "upper": true}).$freeze()); + + $def(self, '$index', function $$index($a) {try { + + var $post_args, args, $yield = $$index.$$p || nil, self = this, which = nil, value = nil; + + delete $$index.$$p; + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if ($truthy($rb_gt(args.$size(), 2))) { + self.$raise($$('ArgumentError'), "wrong number of arguments(" + (args.$size()) + " for 0-2)") + }; + which = (($eqeq(args.$size(), 2) || ($truthy($$('SELECTORS')['$include?'](args.$last())))) ? (args.$pop()) : ("all")); + if (!(($yield !== nil) || ($eqeq(args.$size(), 1)))) { + return $send(self, 'to_enum', ["find_index", which].concat($to_a(args))) + }; + if ($eqeq(args.$size(), 1)) { + + value = args.$first(); + $send(self, 'each_with_index', [which], function $$50(e, row_index, col_index){ + + + if (e == null) e = nil;; + + if (row_index == null) row_index = nil;; + + if (col_index == null) col_index = nil;; + if ($eqeq(e, value)) { + Opal.ret([row_index, col_index]) + } else { + return nil + };}, 3); + } else { + $send(self, 'each_with_index', [which], function $$51(e, row_index, col_index){ + + + if (e == null) e = nil;; + + if (row_index == null) row_index = nil;; + + if (col_index == null) col_index = nil;; + if ($truthy(Opal.yield1($yield, e))) { + Opal.ret([row_index, col_index]) + } else { + return nil + };}, 3) + }; + return nil; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, -1); + self.$alias_method("find_index", "index"); + + $def(self, '$minor', function $$minor($a) { + var $post_args, param, $b, $c, self = this, $ret_or_1 = nil, row_range = nil, col_range = nil, from_row = nil, to_row = nil, size_row = nil, from_col = nil, to_col = nil, size_col = nil, rows = nil; + + + + $post_args = Opal.slice.call(arguments); + + param = $post_args;; + if ($eqeqeq(2, ($ret_or_1 = param.$size()))) { + + $c = param, $b = $to_ary($c), (row_range = ($b[0] == null ? nil : $b[0])), (col_range = ($b[1] == null ? nil : $b[1])), $c; + from_row = row_range.$first(); + if ($truthy($rb_lt(from_row, 0))) { + from_row = $rb_plus(from_row, self.$row_count()) + }; + to_row = row_range.$end(); + if ($truthy($rb_lt(to_row, 0))) { + to_row = $rb_plus(to_row, self.$row_count()) + }; + if (!$truthy(row_range['$exclude_end?']())) { + to_row = $rb_plus(to_row, 1) + }; + size_row = $rb_minus(to_row, from_row); + from_col = col_range.$first(); + if ($truthy($rb_lt(from_col, 0))) { + from_col = $rb_plus(from_col, self.$column_count()) + }; + to_col = col_range.$end(); + if ($truthy($rb_lt(to_col, 0))) { + to_col = $rb_plus(to_col, self.$column_count()) + }; + if (!$truthy(col_range['$exclude_end?']())) { + to_col = $rb_plus(to_col, 1) + }; + size_col = $rb_minus(to_col, from_col); + } else if ($eqeqeq(4, $ret_or_1)) { + + $c = param, $b = $to_ary($c), (from_row = ($b[0] == null ? nil : $b[0])), (size_row = ($b[1] == null ? nil : $b[1])), (from_col = ($b[2] == null ? nil : $b[2])), (size_col = ($b[3] == null ? nil : $b[3])), $c; + if (($truthy($rb_lt(size_row, 0)) || ($truthy($rb_lt(size_col, 0))))) { + return nil + }; + if ($truthy($rb_lt(from_row, 0))) { + from_row = $rb_plus(from_row, self.$row_count()) + }; + if ($truthy($rb_lt(from_col, 0))) { + from_col = $rb_plus(from_col, self.$column_count()) + }; + } else { + self.$raise($$('ArgumentError'), param.$inspect()) + }; + if (((($truthy($rb_gt(from_row, self.$row_count())) || ($truthy($rb_gt(from_col, self.$column_count())))) || ($truthy($rb_lt(from_row, 0)))) || ($truthy($rb_lt(from_col, 0))))) { + return nil + }; + rows = $send(self.rows['$[]'](from_row, size_row), 'collect', [], function $$52(row){ + + + if (row == null) row = nil;; + return row['$[]'](from_col, size_col);}, 1); + return self.$new_matrix(rows, [$rb_minus(self.$column_count(), from_col), size_col].$min()); + }, -1); + + $def(self, '$first_minor', function $$first_minor(row, column) { + var self = this, arrays = nil; + + + if ($truthy(self['$empty?']())) { + self.$raise($$('RuntimeError'), "first_minor of empty matrix is not defined") + }; + if (!($rb_le(0, row) && ($truthy($rb_lt(row, self.$row_count()))))) { + self.$raise($$('ArgumentError'), "invalid row (" + (row.$inspect()) + " for 0.." + ($rb_minus(self.$row_count(), 1)) + ")") + }; + if (!($rb_le(0, column) && ($truthy($rb_lt(column, self.$column_count()))))) { + self.$raise($$('ArgumentError'), "invalid column (" + (column.$inspect()) + " for 0.." + ($rb_minus(self.$column_count(), 1)) + ")") + }; + arrays = self.$to_a(); + arrays.$delete_at(row); + $send(arrays, 'each', [], function $$53(array){ + + + if (array == null) array = nil;; + return array.$delete_at(column);}, 1); + return self.$new_matrix(arrays, $rb_minus(self.$column_count(), 1)); + }, 2); + + $def(self, '$cofactor', function $$cofactor(row, column) { + var self = this, det_of_minor = nil; + + + if ($truthy(self['$empty?']())) { + self.$raise($$('RuntimeError'), "cofactor of empty matrix is not defined") + }; + if (!$truthy(self['$square?']())) { + $$('Matrix').$Raise($$('ErrDimensionMismatch')) + }; + det_of_minor = self.$first_minor(row, column).$determinant(); + return $rb_times(det_of_minor, (-1)['$**']($rb_plus(row, column))); + }, 2); + + $def(self, '$adjugate', function $$adjugate() { + var self = this; + + + if (!$truthy(self['$square?']())) { + $$('Matrix').$Raise($$('ErrDimensionMismatch')) + }; + return $send($$('Matrix'), 'build', [self.$row_count(), self.$column_count()], function $$54(row, column){var self = $$54.$$s == null ? this : $$54.$$s; + + + + if (row == null) row = nil;; + + if (column == null) column = nil;; + return self.$cofactor(column, row);}, {$$arity: 2, $$s: self}); + }, 0); + + $def(self, '$laplace_expansion', function $$laplace_expansion($kwargs) { + var row, column, self = this, num = nil, $ret_or_1 = nil; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + row = $kwargs.$$smap["row"]; + if (row == null) row = nil; + + column = $kwargs.$$smap["column"]; + if (column == null) column = nil; + num = ($truthy(($ret_or_1 = row)) ? ($ret_or_1) : (column)); + if (($not(num) || (($truthy(row) && ($truthy(column)))))) { + self.$raise($$('ArgumentError'), "exactly one the row or column arguments must be specified") + }; + if (!$truthy(self['$square?']())) { + $$('Matrix').$Raise($$('ErrDimensionMismatch')) + }; + if ($truthy(self['$empty?']())) { + self.$raise($$('RuntimeError'), "laplace_expansion of empty matrix is not defined") + }; + if (!($rb_le(0, num) && ($truthy($rb_lt(num, self.$row_count()))))) { + self.$raise($$('ArgumentError'), "invalid num (" + (num.$inspect()) + " for 0.." + ($rb_minus(self.$row_count(), 1)) + ")") + }; + return $send(self.$send(($truthy(row) ? ("row") : ("column")), num).$map(), 'with_index', [], function $$55(e, k){var self = $$55.$$s == null ? this : $$55.$$s; + + + + if (e == null) e = nil;; + + if (k == null) k = nil;; + return $rb_times(e, $send(self, 'cofactor', $to_a(($truthy(row) ? ([num, k]) : ([k, num])))));}, {$$arity: 2, $$s: self}).$inject("+"); + }, -1); + self.$alias_method("cofactor_expansion", "laplace_expansion"); + + $def(self, '$diagonal?', function $Matrix_diagonal$ques$56() { + var self = this; + + + if (!$truthy(self['$square?']())) { + $$('Matrix').$Raise($$('ErrDimensionMismatch')) + }; + return $send(self.$each("off_diagonal"), 'all?', [], "zero?".$to_proc()); + }, 0); + + $def(self, '$empty?', function $Matrix_empty$ques$57() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$column_count()['$=='](0)))) { + return $ret_or_1 + } else { + return self.$row_count()['$=='](0) + } + }, 0); + + $def(self, '$hermitian?', function $Matrix_hermitian$ques$58() { + var self = this; + + + if (!$truthy(self['$square?']())) { + $$('Matrix').$Raise($$('ErrDimensionMismatch')) + }; + return $send(self.$each_with_index("upper"), 'all?', [], function $$59(e, row, col){var self = $$59.$$s == null ? this : $$59.$$s; + + + + if (e == null) e = nil;; + + if (row == null) row = nil;; + + if (col == null) col = nil;; + return e['$=='](self.$rows()['$[]'](col)['$[]'](row).$conj());}, {$$arity: 3, $$s: self}); + }, 0); + + $def(self, '$lower_triangular?', function $Matrix_lower_triangular$ques$60() { + var self = this; + + return $send(self.$each("strict_upper"), 'all?', [], "zero?".$to_proc()) + }, 0); + + $def(self, '$normal?', function $Matrix_normal$ques$61() {try { + + var self = this; + + + if (!$truthy(self['$square?']())) { + $$('Matrix').$Raise($$('ErrDimensionMismatch')) + }; + $send(self.$rows(), 'each_with_index', [], function $$62(row_i, i){var self = $$62.$$s == null ? this : $$62.$$s; + + + + if (row_i == null) row_i = nil;; + + if (i == null) i = nil;; + return $send(self.$rows(), 'each_with_index', [], function $$63(row_j, j){var self = $$63.$$s == null ? this : $$63.$$s, s = nil; + + + + if (row_j == null) row_j = nil;; + + if (j == null) j = nil;; + s = 0; + $send(self.$rows(), 'each_with_index', [], function $$64(row_k, k){ + + + if (row_k == null) row_k = nil;; + + if (k == null) k = nil;; + return (s = $rb_plus(s, $rb_minus($rb_times(row_i['$[]'](k), row_j['$[]'](k).$conj()), $rb_times(row_k['$[]'](i).$conj(), row_k['$[]'](j)))));}, 2); + if ($eqeq(s, 0)) { + return nil + } else { + Opal.ret(false) + };}, {$$arity: 2, $$s: self});}, {$$arity: 2, $$s: self}); + return true; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 0); + + $def(self, '$orthogonal?', function $Matrix_orthogonal$ques$65() {try { + + var self = this; + + + if (!$truthy(self['$square?']())) { + $$('Matrix').$Raise($$('ErrDimensionMismatch')) + }; + $send(self.$rows(), 'each_with_index', [], function $$66(row, i){var self = $$66.$$s == null ? this : $$66.$$s; + + + + if (row == null) row = nil;; + + if (i == null) i = nil;; + return $send(self.$column_count(), 'times', [], function $$67(j){var self = $$67.$$s == null ? this : $$67.$$s, s = nil; + + + + if (j == null) j = nil;; + s = 0; + $send(self.$row_count(), 'times', [], function $$68(k){var self = $$68.$$s == null ? this : $$68.$$s; + + + + if (k == null) k = nil;; + return (s = $rb_plus(s, $rb_times(row['$[]'](k), self.$rows()['$[]'](k)['$[]'](j))));}, {$$arity: 1, $$s: self}); + if ($eqeq(s, ($eqeq(i, j) ? (1) : (0)))) { + return nil + } else { + Opal.ret(false) + };}, {$$arity: 1, $$s: self});}, {$$arity: 2, $$s: self}); + return true; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 0); + + $def(self, '$permutation?', function $Matrix_permutation$ques$69() {try { + + var self = this, cols = nil; + + + if (!$truthy(self['$square?']())) { + $$('Matrix').$Raise($$('ErrDimensionMismatch')) + }; + cols = $$('Array').$new(self.$column_count()); + $send(self.$rows(), 'each_with_index', [], function $$70(row, i){var found = nil; + + + + if (row == null) row = nil;; + + if (i == null) i = nil;; + found = false; + $send(row, 'each_with_index', [], function $$71(e, j){var $writer = nil; + + + + if (e == null) e = nil;; + + if (j == null) j = nil;; + if ($eqeq(e, 1)) { + + if (($truthy(found) || ($truthy(cols['$[]'](j))))) { + Opal.ret(false) + }; + return (found = (($writer = [j, true]), $send(cols, '[]=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)])); + } else if ($neqeq(e, 0)) { + Opal.ret(false) + } else { + return nil + };}, 2); + if ($truthy(found)) { + return nil + } else { + Opal.ret(false) + };}, 2); + return true; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 0); + + $def(self, '$real?', function $Matrix_real$ques$72() { + var self = this; + + return $send(self, 'all?', [], "real?".$to_proc()) + }, 0); + + $def(self, '$regular?', function $Matrix_regular$ques$73() { + var self = this; + + return self['$singular?']()['$!']() + }, 0); + + $def(self, '$singular?', function $Matrix_singular$ques$74() { + var self = this; + + return self.$determinant()['$=='](0) + }, 0); + + $def(self, '$square?', function $Matrix_square$ques$75() { + var self = this; + + return self.$column_count()['$=='](self.$row_count()) + }, 0); + + $def(self, '$symmetric?', function $Matrix_symmetric$ques$76() {try { + + var self = this; + + + if (!$truthy(self['$square?']())) { + $$('Matrix').$Raise($$('ErrDimensionMismatch')) + }; + $send(self, 'each_with_index', ["strict_upper"], function $$77(e, row, col){var self = $$77.$$s == null ? this : $$77.$$s; + + + + if (e == null) e = nil;; + + if (row == null) row = nil;; + + if (col == null) col = nil;; + if ($neqeq(e, self.$rows()['$[]'](col)['$[]'](row))) { + Opal.ret(false) + } else { + return nil + };}, {$$arity: 3, $$s: self}); + return true; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 0); + + $def(self, '$antisymmetric?', function $Matrix_antisymmetric$ques$78() {try { + + var self = this; + + + if (!$truthy(self['$square?']())) { + $$('Matrix').$Raise($$('ErrDimensionMismatch')) + }; + $send(self, 'each_with_index', ["upper"], function $$79(e, row, col){var self = $$79.$$s == null ? this : $$79.$$s; + + + + if (e == null) e = nil;; + + if (row == null) row = nil;; + + if (col == null) col = nil;; + if ($eqeq(e, self.$rows()['$[]'](col)['$[]'](row)['$-@']())) { + return nil + } else { + Opal.ret(false) + };}, {$$arity: 3, $$s: self}); + return true; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 0); + + $def(self, '$unitary?', function $Matrix_unitary$ques$80() {try { + + var self = this; + + + if (!$truthy(self['$square?']())) { + $$('Matrix').$Raise($$('ErrDimensionMismatch')) + }; + $send(self.$rows(), 'each_with_index', [], function $$81(row, i){var self = $$81.$$s == null ? this : $$81.$$s; + + + + if (row == null) row = nil;; + + if (i == null) i = nil;; + return $send(self.$column_count(), 'times', [], function $$82(j){var self = $$82.$$s == null ? this : $$82.$$s, s = nil; + + + + if (j == null) j = nil;; + s = 0; + $send(self.$row_count(), 'times', [], function $$83(k){var self = $$83.$$s == null ? this : $$83.$$s; + + + + if (k == null) k = nil;; + return (s = $rb_plus(s, $rb_times(row['$[]'](k).$conj(), self.$rows()['$[]'](k)['$[]'](j))));}, {$$arity: 1, $$s: self}); + if ($eqeq(s, ($eqeq(i, j) ? (1) : (0)))) { + return nil + } else { + Opal.ret(false) + };}, {$$arity: 1, $$s: self});}, {$$arity: 2, $$s: self}); + return true; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 0); + + $def(self, '$upper_triangular?', function $Matrix_upper_triangular$ques$84() { + var self = this; + + return $send(self.$each("strict_lower"), 'all?', [], "zero?".$to_proc()) + }, 0); + + $def(self, '$zero?', function $Matrix_zero$ques$85() { + var self = this; + + return $send(self, 'all?', [], "zero?".$to_proc()) + }, 0); + + $def(self, '$==', function $Matrix_$eq_eq$86(other) { + var self = this; + + + if (!($eqeqeq($$('Matrix'), other) && ($eqeq(self.$column_count(), other.$column_count())))) { + return false + }; + return self.$rows()['$=='](other.$rows()); + }, 1); + + $def(self, '$eql?', function $Matrix_eql$ques$87(other) { + var self = this; + + + if (!($eqeqeq($$('Matrix'), other) && ($eqeq(self.$column_count(), other.$column_count())))) { + return false + }; + return self.$rows()['$eql?'](other.$rows()); + }, 1); + + $def(self, '$clone', function $$clone() { + var self = this; + + return self.$new_matrix($send(self.rows, 'map', [], "dup".$to_proc()), self.$column_count()) + }, 0); + + $def(self, '$hash', function $$hash() { + var self = this; + + return self.rows.$hash() + }, 0); + + $def(self, '$*', function $Matrix_$$88(m) { + var self = this, $ret_or_1 = nil, rows = nil, r = nil; + + if ($eqeqeq($$('Numeric'), ($ret_or_1 = m))) { + + rows = $send(self.rows, 'collect', [], function $$89(row){ + + + if (row == null) row = nil;; + return $send(row, 'collect', [], function $$90(e){ + + + if (e == null) e = nil;; + return $rb_times(e, m);}, 1);}, 1); + return self.$new_matrix(rows, self.$column_count()); + } else if ($eqeqeq($$('Vector'), $ret_or_1)) { + + m = self.$class().$column_vector(m); + r = $rb_times(self, m); + return r.$column(0); + } else if ($eqeqeq($$('Matrix'), $ret_or_1)) { + + if ($neqeq(self.$column_count(), m.$row_count())) { + $$('Matrix').$Raise($$('ErrDimensionMismatch')) + }; + rows = $send($$('Array'), 'new', [self.$row_count()], function $$91(i){var self = $$91.$$s == null ? this : $$91.$$s; + + + + if (i == null) i = nil;; + return $send($$('Array'), 'new', [m.$column_count()], function $$92(j){var self = $$92.$$s == null ? this : $$92.$$s; + + + + if (j == null) j = nil;; + return $send(Opal.Range.$new(0,self.$column_count(), true), 'inject', [0], function $$93(vij, k){var self = $$93.$$s == null ? this : $$93.$$s; + + + + if (vij == null) vij = nil;; + + if (k == null) k = nil;; + return $rb_plus(vij, $rb_times(self['$[]'](i, k), m['$[]'](k, j)));}, {$$arity: 2, $$s: self});}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + return self.$new_matrix(rows, m.$column_count()); + } else { + return self.$apply_through_coercion(m, "*") + } + }, 1); + + $def(self, '$+', function $Matrix_$plus$94(m) { + var self = this, $ret_or_1 = nil, rows = nil; + + + if ($eqeqeq($$('Numeric'), ($ret_or_1 = m))) { + $$('Matrix').$Raise($$('ErrOperationNotDefined'), "+", self.$class(), m.$class()) + } else if ($eqeqeq($$('Vector'), $ret_or_1)) { + m = self.$class().$column_vector(m) + } else if (!$eqeqeq($$('Matrix'), $ret_or_1)) { + return self.$apply_through_coercion(m, "+") + }; + if (!($eqeq(self.$row_count(), m.$row_count()) && ($eqeq(self.$column_count(), m.$column_count())))) { + $$('Matrix').$Raise($$('ErrDimensionMismatch')) + }; + rows = $send($$('Array'), 'new', [self.$row_count()], function $$95(i){var self = $$95.$$s == null ? this : $$95.$$s; + + + + if (i == null) i = nil;; + return $send($$('Array'), 'new', [self.$column_count()], function $$96(j){var self = $$96.$$s == null ? this : $$96.$$s; + + + + if (j == null) j = nil;; + return $rb_plus(self['$[]'](i, j), m['$[]'](i, j));}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + return self.$new_matrix(rows, self.$column_count()); + }, 1); + + $def(self, '$-', function $Matrix_$minus$97(m) { + var self = this, $ret_or_1 = nil, rows = nil; + + + if ($eqeqeq($$('Numeric'), ($ret_or_1 = m))) { + $$('Matrix').$Raise($$('ErrOperationNotDefined'), "-", self.$class(), m.$class()) + } else if ($eqeqeq($$('Vector'), $ret_or_1)) { + m = self.$class().$column_vector(m) + } else if (!$eqeqeq($$('Matrix'), $ret_or_1)) { + return self.$apply_through_coercion(m, "-") + }; + if (!($eqeq(self.$row_count(), m.$row_count()) && ($eqeq(self.$column_count(), m.$column_count())))) { + $$('Matrix').$Raise($$('ErrDimensionMismatch')) + }; + rows = $send($$('Array'), 'new', [self.$row_count()], function $$98(i){var self = $$98.$$s == null ? this : $$98.$$s; + + + + if (i == null) i = nil;; + return $send($$('Array'), 'new', [self.$column_count()], function $$99(j){var self = $$99.$$s == null ? this : $$99.$$s; + + + + if (j == null) j = nil;; + return $rb_minus(self['$[]'](i, j), m['$[]'](i, j));}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + return self.$new_matrix(rows, self.$column_count()); + }, 1); + + $def(self, '$/', function $Matrix_$slash$100(other) { + var self = this, $ret_or_1 = nil, rows = nil; + + if ($eqeqeq($$('Numeric'), ($ret_or_1 = other))) { + + rows = $send(self.rows, 'collect', [], function $$101(row){ + + + if (row == null) row = nil;; + return $send(row, 'collect', [], function $$102(e){ + + + if (e == null) e = nil;; + return $rb_divide(e, other);}, 1);}, 1); + return self.$new_matrix(rows, self.$column_count()); + } else if ($eqeqeq($$('Matrix'), $ret_or_1)) { + return $rb_times(self, other.$inverse()) + } else { + return self.$apply_through_coercion(other, "/") + } + }, 1); + + $def(self, '$hadamard_product', function $$hadamard_product(m) { + var self = this; + + return $send(self, 'combine', [m], function $$103(a, b){ + + + if (a == null) a = nil;; + + if (b == null) b = nil;; + return $rb_times(a, b);}, 2) + }, 1); + self.$alias_method("entrywise_product", "hadamard_product"); + + $def(self, '$inverse', function $$inverse() { + var self = this; + + + if (!$truthy(self['$square?']())) { + $$('Matrix').$Raise($$('ErrDimensionMismatch')) + }; + return self.$class().$I(self.$row_count()).$send("inverse_from", self); + }, 0); + $alias(self, "inv", "inverse"); + + $def(self, '$inverse_from', function $$inverse_from(src) { + var self = this, last = nil, a = nil; + + + last = $rb_minus(self.$row_count(), 1); + a = src.$to_a(); + $send((0), 'upto', [last], function $$104(k){var $a, self = $$104.$$s == null ? this : $$104.$$s, i = nil, akk = nil; + if (self.rows == null) self.rows = nil; + + + + if (k == null) k = nil;; + i = k; + akk = a['$[]'](k)['$[]'](k).$abs(); + $send($rb_plus(k, 1), 'upto', [last], function $$105(j){var v = nil; + + + + if (j == null) j = nil;; + v = a['$[]'](j)['$[]'](k).$abs(); + if ($truthy($rb_gt(v, akk))) { + + i = j; + return (akk = v); + } else { + return nil + };}, 1); + if ($eqeq(akk, 0)) { + $$('Matrix').$Raise($$('ErrNotRegular')) + }; + if ($neqeq(i, k)) { + + $a = [a['$[]'](k), a['$[]'](i)], a['$[]='](i, $a[0]), a['$[]='](k, $a[1]), $a; + $a = [self.rows['$[]'](k), self.rows['$[]'](i)], self.rows['$[]='](i, $a[0]), self.rows['$[]='](k, $a[1]), $a; + }; + akk = a['$[]'](k)['$[]'](k); + $send((0), 'upto', [last], function $$106(ii){var self = $$106.$$s == null ? this : $$106.$$s, q = nil, $writer = nil; + + + + if (ii == null) ii = nil;; + if ($eqeq(ii, k)) { + return nil; + }; + q = a['$[]'](ii)['$[]'](k).$quo(akk); + + $writer = [k, 0]; + $send(a['$[]'](ii), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + $send($rb_plus(k, 1), 'upto', [last], function $$107(j){var $binary_op_recvr_tmp_1 = nil; + + + + if (j == null) j = nil;; + $binary_op_recvr_tmp_1 = a['$[]'](ii); + + $writer = [j, $rb_minus($binary_op_recvr_tmp_1['$[]'](j), $rb_times(a['$[]'](k)['$[]'](j), q))]; + $send($binary_op_recvr_tmp_1, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, 1); + return $send((0), 'upto', [last], function $$108(j){var self = $$108.$$s == null ? this : $$108.$$s, $binary_op_recvr_tmp_2 = nil; + if (self.rows == null) self.rows = nil; + + + + if (j == null) j = nil;; + $binary_op_recvr_tmp_2 = self.rows['$[]'](ii); + + $writer = [j, $rb_minus($binary_op_recvr_tmp_2['$[]'](j), $rb_times(self.rows['$[]'](k)['$[]'](j), q))]; + $send($binary_op_recvr_tmp_2, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + $send($rb_plus(k, 1), 'upto', [last], function $$109(j){var $writer = nil; + + + + if (j == null) j = nil;; + $writer = [j, a['$[]'](k)['$[]'](j).$quo(akk)]; + $send(a['$[]'](k), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 1); + return $send((0), 'upto', [last], function $$110(j){var self = $$110.$$s == null ? this : $$110.$$s, $writer = nil; + if (self.rows == null) self.rows = nil; + + + + if (j == null) j = nil;; + $writer = [j, self.rows['$[]'](k)['$[]'](j).$quo(akk)]; + $send(self.rows['$[]'](k), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + return self; + }, 1); + self.$private("inverse_from"); + + $def(self, '$**', function $Matrix_$$$111(other) {try { + + var $a, $b, self = this, $ret_or_1 = nil, x = nil, z = nil, v = nil, d = nil, v_inv = nil; + + if ($eqeqeq($$('Integer'), ($ret_or_1 = other))) { + + x = self; + if ($truthy($rb_le(other, 0))) { + + x = self.$inverse(); + if ($eqeq(other, 0)) { + return self.$class().$identity(self.$column_count()) + }; + other = other['$-@'](); + }; + z = nil; + return $send(self, 'loop', [], function $$112(){ + + if ($eqeq(other['$[]'](0), 1)) { + z = ($truthy(z) ? ($rb_times(z, x)) : (x)) + }; + if ($truthy((other = other['$>>'](1))['$zero?']())) { + Opal.ret(z) + }; + return (x = $rb_times(x, x));}, 0); + } else if ($eqeqeq($$('Numeric'), $ret_or_1)) { + + $b = self.$eigensystem(), $a = $to_ary($b), (v = ($a[0] == null ? nil : $a[0])), (d = ($a[1] == null ? nil : $a[1])), (v_inv = ($a[2] == null ? nil : $a[2])), $b; + return $rb_times($rb_times(v, $send(self.$class(), 'diagonal', $to_a($send(d.$each("diagonal"), 'map', [], function $$113(e){ + + + if (e == null) e = nil;; + return e['$**'](other);}, 1)))), v_inv); + } else { + return $$('Matrix').$Raise($$('ErrOperationNotDefined'), "**", self.$class(), other.$class()) + } + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 1); + + $def(self, '$+@', function $Matrix_$plus$$114() { + var self = this; + + return self + }, 0); + + $def(self, '$-@', function $Matrix_$minus$$115() { + var self = this; + + return $send(self, 'collect', [], function $$116(e){ + + + if (e == null) e = nil;; + return e['$-@']();}, 1) + }, 0); + + $def(self, '$determinant', function $$determinant() { + var $a, $b, self = this, m = nil, $ret_or_1 = nil, m0 = nil, m1 = nil, m2 = nil, m3 = nil; + + + if (!$truthy(self['$square?']())) { + $$('Matrix').$Raise($$('ErrDimensionMismatch')) + }; + m = self.rows; + if ($eqeqeq(0, ($ret_or_1 = self.$row_count()))) { + return 1 + } else if ($eqeqeq(1, $ret_or_1)) { + return m['$[]'](0)['$[]'](0)['$+@']() + } else if ($eqeqeq(2, $ret_or_1)) { + return $rb_minus($rb_times(m['$[]'](0)['$[]'](0)['$+@'](), m['$[]'](1)['$[]'](1)), $rb_times(m['$[]'](0)['$[]'](1), m['$[]'](1)['$[]'](0))) + } else if ($eqeqeq(3, $ret_or_1)) { + + $b = m, $a = $to_ary($b), (m0 = ($a[0] == null ? nil : $a[0])), (m1 = ($a[1] == null ? nil : $a[1])), (m2 = ($a[2] == null ? nil : $a[2])), $b; + return $rb_minus($rb_plus($rb_plus($rb_minus($rb_minus($rb_times($rb_times(m0['$[]'](0)['$+@'](), m1['$[]'](1)), m2['$[]'](2)), $rb_times($rb_times(m0['$[]'](0), m1['$[]'](2)), m2['$[]'](1))), $rb_times($rb_times(m0['$[]'](1), m1['$[]'](0)), m2['$[]'](2))), $rb_times($rb_times(m0['$[]'](1), m1['$[]'](2)), m2['$[]'](0))), $rb_times($rb_times(m0['$[]'](2), m1['$[]'](0)), m2['$[]'](1))), $rb_times($rb_times(m0['$[]'](2), m1['$[]'](1)), m2['$[]'](0))); + } else if ($eqeqeq(4, $ret_or_1)) { + + $b = m, $a = $to_ary($b), (m0 = ($a[0] == null ? nil : $a[0])), (m1 = ($a[1] == null ? nil : $a[1])), (m2 = ($a[2] == null ? nil : $a[2])), (m3 = ($a[3] == null ? nil : $a[3])), $b; + return $rb_plus($rb_minus($rb_minus($rb_plus($rb_plus($rb_minus($rb_minus($rb_plus($rb_plus($rb_minus($rb_minus($rb_plus($rb_plus($rb_minus($rb_minus($rb_plus($rb_plus($rb_minus($rb_minus($rb_plus($rb_plus($rb_minus($rb_minus($rb_times($rb_times($rb_times(m0['$[]'](0)['$+@'](), m1['$[]'](1)), m2['$[]'](2)), m3['$[]'](3)), $rb_times($rb_times($rb_times(m0['$[]'](0), m1['$[]'](1)), m2['$[]'](3)), m3['$[]'](2))), $rb_times($rb_times($rb_times(m0['$[]'](0), m1['$[]'](2)), m2['$[]'](1)), m3['$[]'](3))), $rb_times($rb_times($rb_times(m0['$[]'](0), m1['$[]'](2)), m2['$[]'](3)), m3['$[]'](1))), $rb_times($rb_times($rb_times(m0['$[]'](0), m1['$[]'](3)), m2['$[]'](1)), m3['$[]'](2))), $rb_times($rb_times($rb_times(m0['$[]'](0), m1['$[]'](3)), m2['$[]'](2)), m3['$[]'](1))), $rb_times($rb_times($rb_times(m0['$[]'](1), m1['$[]'](0)), m2['$[]'](2)), m3['$[]'](3))), $rb_times($rb_times($rb_times(m0['$[]'](1), m1['$[]'](0)), m2['$[]'](3)), m3['$[]'](2))), $rb_times($rb_times($rb_times(m0['$[]'](1), m1['$[]'](2)), m2['$[]'](0)), m3['$[]'](3))), $rb_times($rb_times($rb_times(m0['$[]'](1), m1['$[]'](2)), m2['$[]'](3)), m3['$[]'](0))), $rb_times($rb_times($rb_times(m0['$[]'](1), m1['$[]'](3)), m2['$[]'](0)), m3['$[]'](2))), $rb_times($rb_times($rb_times(m0['$[]'](1), m1['$[]'](3)), m2['$[]'](2)), m3['$[]'](0))), $rb_times($rb_times($rb_times(m0['$[]'](2), m1['$[]'](0)), m2['$[]'](1)), m3['$[]'](3))), $rb_times($rb_times($rb_times(m0['$[]'](2), m1['$[]'](0)), m2['$[]'](3)), m3['$[]'](1))), $rb_times($rb_times($rb_times(m0['$[]'](2), m1['$[]'](1)), m2['$[]'](0)), m3['$[]'](3))), $rb_times($rb_times($rb_times(m0['$[]'](2), m1['$[]'](1)), m2['$[]'](3)), m3['$[]'](0))), $rb_times($rb_times($rb_times(m0['$[]'](2), m1['$[]'](3)), m2['$[]'](0)), m3['$[]'](1))), $rb_times($rb_times($rb_times(m0['$[]'](2), m1['$[]'](3)), m2['$[]'](1)), m3['$[]'](0))), $rb_times($rb_times($rb_times(m0['$[]'](3), m1['$[]'](0)), m2['$[]'](1)), m3['$[]'](2))), $rb_times($rb_times($rb_times(m0['$[]'](3), m1['$[]'](0)), m2['$[]'](2)), m3['$[]'](1))), $rb_times($rb_times($rb_times(m0['$[]'](3), m1['$[]'](1)), m2['$[]'](0)), m3['$[]'](2))), $rb_times($rb_times($rb_times(m0['$[]'](3), m1['$[]'](1)), m2['$[]'](2)), m3['$[]'](0))), $rb_times($rb_times($rb_times(m0['$[]'](3), m1['$[]'](2)), m2['$[]'](0)), m3['$[]'](1))), $rb_times($rb_times($rb_times(m0['$[]'](3), m1['$[]'](2)), m2['$[]'](1)), m3['$[]'](0))); + } else { + return self.$determinant_bareiss() + }; + }, 0); + self.$alias_method("det", "determinant"); + + $def(self, '$determinant_bareiss', function $$determinant_bareiss() {try { + + var self = this, size = nil, last = nil, a = nil, no_pivot = nil, sign = nil, pivot = nil; + + + size = self.$row_count(); + last = $rb_minus(size, 1); + a = self.$to_a(); + no_pivot = $send($$('Proc'), 'new', [], function $$117(){ + Opal.ret(0)}, 0); + sign = 1; + pivot = 1; + $send(size, 'times', [], function $$118(k){var $a, previous_pivot = nil, switch$ = nil; + + + + if (k == null) k = nil;; + previous_pivot = pivot; + if ($eqeq((pivot = a['$[]'](k)['$[]'](k)), 0)) { + + switch$ = $send(Opal.Range.$new($rb_plus(k, 1),size, true), 'find', [no_pivot], function $$119(row){ + + + if (row == null) row = nil;; + return a['$[]'](row)['$[]'](k)['$!='](0);}, 1); + $a = [a['$[]'](k), a['$[]'](switch$)], a['$[]='](switch$, $a[0]), a['$[]='](k, $a[1]), $a; + pivot = a['$[]'](k)['$[]'](k); + sign = sign['$-@'](); + }; + return $send($rb_plus(k, 1), 'upto', [last], function $$120(i){var ai = nil; + + + + if (i == null) i = nil;; + ai = a['$[]'](i); + return $send($rb_plus(k, 1), 'upto', [last], function $$121(j){var $writer = nil; + + + + if (j == null) j = nil;; + $writer = [j, $rb_divide($rb_minus($rb_times(pivot, ai['$[]'](j)), $rb_times(ai['$[]'](k), a['$[]'](k)['$[]'](j))), previous_pivot)]; + $send(ai, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 1);}, 1);}, 1); + return $rb_times(sign, pivot); + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 0); + self.$private("determinant_bareiss"); + + $def(self, '$determinant_e', function $$determinant_e() { + var self = this; + + + self.$warn("Matrix#determinant_e is deprecated; use #determinant", $hash2(["uplevel"], {"uplevel": 1})); + return self.$determinant(); + }, 0); + $alias(self, "det_e", "determinant_e"); + + $def(self, '$hstack', function $$hstack($a) { + var $post_args, matrices, self = this; + + + + $post_args = Opal.slice.call(arguments); + + matrices = $post_args;; + return $send(self.$class(), 'hstack', [self].concat($to_a(matrices))); + }, -1); + + $def(self, '$rank', function $$rank() { + var self = this, a = nil, last_column = nil, last_row = nil, pivot_row = nil, previous_pivot = nil; + + + a = self.$to_a(); + last_column = $rb_minus(self.$column_count(), 1); + last_row = $rb_minus(self.$row_count(), 1); + pivot_row = 0; + previous_pivot = 1; + $send((0), 'upto', [last_column], function $$122(k){var $a, switch_row = nil, pivot = nil; + + + + if (k == null) k = nil;; + switch_row = $send(Opal.Range.$new(pivot_row, last_row, false), 'find', [], function $$123(row){ + + + if (row == null) row = nil;; + return a['$[]'](row)['$[]'](k)['$!='](0);}, 1); + if ($truthy(switch_row)) { + + if (!$eqeq(pivot_row, switch_row)) { + $a = [a['$[]'](pivot_row), a['$[]'](switch_row)], a['$[]='](switch_row, $a[0]), a['$[]='](pivot_row, $a[1]), $a + }; + pivot = a['$[]'](pivot_row)['$[]'](k); + $send($rb_plus(pivot_row, 1), 'upto', [last_row], function $$124(i){var ai = nil; + + + + if (i == null) i = nil;; + ai = a['$[]'](i); + return $send($rb_plus(k, 1), 'upto', [last_column], function $$125(j){var $writer = nil; + + + + if (j == null) j = nil;; + $writer = [j, $rb_divide($rb_minus($rb_times(pivot, ai['$[]'](j)), $rb_times(ai['$[]'](k), a['$[]'](pivot_row)['$[]'](j))), previous_pivot)]; + $send(ai, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 1);}, 1); + pivot_row = $rb_plus(pivot_row, 1); + return (previous_pivot = pivot); + } else { + return nil + };}, 1); + return pivot_row; + }, 0); + + $def(self, '$rank_e', function $$rank_e() { + var self = this; + + + self.$warn("Matrix#rank_e is deprecated; use #rank", $hash2(["uplevel"], {"uplevel": 1})); + return self.$rank(); + }, 0); + + $def(self, '$round', function $$round(ndigits) { + var self = this; + + + + if (ndigits == null) ndigits = 0;; + return $send(self, 'map', [], function $$126(e){ + + + if (e == null) e = nil;; + return e.$round(ndigits);}, 1); + }, -1); + + $def(self, '$trace', function $$trace() { + var self = this; + + + if (!$truthy(self['$square?']())) { + $$('Matrix').$Raise($$('ErrDimensionMismatch')) + }; + return $send(Opal.Range.$new(0,self.$column_count(), true), 'inject', [0], function $$127(tr, i){var self = $$127.$$s == null ? this : $$127.$$s; + if (self.rows == null) self.rows = nil; + + + + if (tr == null) tr = nil;; + + if (i == null) i = nil;; + return $rb_plus(tr, self.rows['$[]'](i)['$[]'](i));}, {$$arity: 2, $$s: self}); + }, 0); + $alias(self, "tr", "trace"); + + $def(self, '$transpose', function $$transpose() { + var self = this; + + + if ($truthy(self.$row_count()['$zero?']())) { + return self.$class().$empty(self.$column_count(), 0) + }; + return self.$new_matrix(self.rows.$transpose(), self.$row_count()); + }, 0); + $alias(self, "t", "transpose"); + + $def(self, '$vstack', function $$vstack($a) { + var $post_args, matrices, self = this; + + + + $post_args = Opal.slice.call(arguments); + + matrices = $post_args;; + return $send(self.$class(), 'vstack', [self].concat($to_a(matrices))); + }, -1); + + $def(self, '$eigensystem', function $$eigensystem() { + var self = this; + + return $$('EigenvalueDecomposition').$new(self) + }, 0); + $alias(self, "eigen", "eigensystem"); + + $def(self, '$lup', function $$lup() { + var self = this; + + return $$('LUPDecomposition').$new(self) + }, 0); + $alias(self, "lup_decomposition", "lup"); + + $def(self, '$conjugate', function $$conjugate() { + var self = this; + + return $send(self, 'collect', [], "conjugate".$to_proc()) + }, 0); + $alias(self, "conj", "conjugate"); + + $def(self, '$imaginary', function $$imaginary() { + var self = this; + + return $send(self, 'collect', [], "imaginary".$to_proc()) + }, 0); + $alias(self, "imag", "imaginary"); + + $def(self, '$real', function $$real() { + var self = this; + + return $send(self, 'collect', [], "real".$to_proc()) + }, 0); + + $def(self, '$rect', function $$rect() { + var self = this; + + return [self.$real(), self.$imag()] + }, 0); + $alias(self, "rectangular", "rect"); + + $def(self, '$coerce', function $$coerce(other) { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq($$('Numeric'), ($ret_or_1 = other))) { + return [$$('Scalar').$new(other), self] + } else { + return self.$raise($$('TypeError'), "" + (self.$class()) + " can't be coerced into " + (other.$class())) + } + }, 1); + + $def(self, '$row_vectors', function $$row_vectors() { + var self = this; + + return $send($$('Array'), 'new', [self.$row_count()], function $$128(i){var self = $$128.$$s == null ? this : $$128.$$s; + + + + if (i == null) i = nil;; + return self.$row(i);}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$column_vectors', function $$column_vectors() { + var self = this; + + return $send($$('Array'), 'new', [self.$column_count()], function $$129(i){var self = $$129.$$s == null ? this : $$129.$$s; + + + + if (i == null) i = nil;; + return self.$column(i);}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$to_matrix', function $$to_matrix() { + var self = this; + + return self + }, 0); + + $def(self, '$to_a', function $$to_a() { + var self = this; + + return $send(self.rows, 'collect', [], "dup".$to_proc()) + }, 0); + + $def(self, '$elements_to_f', function $$elements_to_f() { + var self = this; + + + self.$warn("Matrix#elements_to_f is deprecated, use map(&:to_f)", $hash2(["uplevel"], {"uplevel": 1})); + return $send(self, 'map', [], "to_f".$to_proc()); + }, 0); + + $def(self, '$elements_to_i', function $$elements_to_i() { + var self = this; + + + self.$warn("Matrix#elements_to_i is deprecated, use map(&:to_i)", $hash2(["uplevel"], {"uplevel": 1})); + return $send(self, 'map', [], "to_i".$to_proc()); + }, 0); + + $def(self, '$elements_to_r', function $$elements_to_r() { + var self = this; + + + self.$warn("Matrix#elements_to_r is deprecated, use map(&:to_r)", $hash2(["uplevel"], {"uplevel": 1})); + return $send(self, 'map', [], "to_r".$to_proc()); + }, 0); + + $def(self, '$to_s', function $$to_s() { + var self = this; + + if ($truthy(self['$empty?']())) { + return "" + (self.$class()) + ".empty(" + (self.$row_count()) + ", " + (self.$column_count()) + ")" + } else { + return $rb_plus($rb_plus("" + (self.$class()) + "[", $send(self.rows, 'collect', [], function $$130(row){ + + + if (row == null) row = nil;; + return $rb_plus($rb_plus("[", $send(row, 'collect', [], function $$131(e){ + + + if (e == null) e = nil;; + return e.$to_s();}, 1).$join(", ")), "]");}, 1).$join(", ")), "]") + } + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + if ($truthy(self['$empty?']())) { + return "" + (self.$class()) + ".empty(" + (self.$row_count()) + ", " + (self.$column_count()) + ")" + } else { + return "" + (self.$class()) + (self.rows.$inspect()) + } + }, 0); + (function($base, $parent_nesting) { + var self = $module($base, 'ConversionHelper'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$convert_to_array', function $$convert_to_array(obj, copy) { + var self = this, $ret_or_1 = nil, converted = nil, e = nil; + + + + if (copy == null) copy = false;; + if ($eqeqeq($$('Array'), ($ret_or_1 = obj))) { + if ($truthy(copy)) { + return obj.$dup() + } else { + return obj + } + } else if ($eqeqeq($$('Vector'), $ret_or_1)) { + return obj.$to_a() + } else { + + + try { + converted = obj.$to_ary() + } catch ($err) { + if (Opal.rescue($err, [$$('Exception')])) {(e = $err) + try { + self.$raise($$('TypeError'), "can't convert " + (obj.$class()) + " into an Array (" + (e.$message()) + ")") + } finally { Opal.pop_exception(); } + } else { throw $err; } + };; + if (!$truthy(converted['$is_a?']($$('Array')))) { + self.$raise($$('TypeError'), "" + (obj.$class()) + "#to_ary should return an Array") + }; + return converted; + }; + }, -2); + return self.$private("convert_to_array"); + })($nesting[0], $nesting); + self.$extend($$('ConversionHelper')); + (function($base, $parent_nesting) { + var self = $module($base, 'CoercionHelper'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$apply_through_coercion', function $$apply_through_coercion(obj, oper) { + var self = this, coercion = nil; + + try { + + coercion = obj.$coerce(self); + if (!($truthy(coercion['$is_a?']($$('Array'))) && ($eqeq(coercion.$length(), 2)))) { + self.$raise($$('TypeError')) + }; + return coercion['$[]'](0).$public_send(oper, coercion['$[]'](1)); + } catch ($err) { + if (Opal.rescue($err, [$$('StandardError')])) { + try { + return self.$raise($$('TypeError'), "" + (obj.$inspect()) + " can't be coerced into " + (self.$class())) + } finally { Opal.pop_exception(); } + } else { throw $err; } + } + }, 2); + self.$private("apply_through_coercion"); + $defs(self, '$coerce_to', function $$coerce_to(obj, cls, meth) { + var self = this, ret = nil, e = nil; + + + if ($truthy(obj['$kind_of?'](cls))) { + return obj + }; + if (!$truthy(obj['$respond_to?'](meth))) { + self.$raise($$('TypeError'), "Expected a " + (cls) + " but got a " + (obj.$class())) + }; + + try { + ret = obj.$__send__(meth) + } catch ($err) { + if (Opal.rescue($err, [$$('Exception')])) {(e = $err) + try { + self.$raise($$('TypeError'), "" + ("Coercion error: " + (obj.$inspect()) + "." + (meth) + " => " + (cls) + " failed:\n") + ("(" + (e.$message()) + ")")) + } finally { Opal.pop_exception(); } + } else { throw $err; } + };; + if (!$truthy(ret['$kind_of?'](cls))) { + self.$raise($$('TypeError'), "Coercion error: obj." + (meth) + " did NOT return a " + (cls) + " (was " + (ret.$class()) + ")") + }; + return ret; + }, 3); + $defs(self, '$coerce_to_int', function $$coerce_to_int(obj) { + var self = this; + + return self.$coerce_to(obj, $$('Integer'), "to_int") + }, 1); + return $defs(self, '$coerce_to_matrix', function $$coerce_to_matrix(obj) { + var self = this; + + return self.$coerce_to(obj, $$('Matrix'), "to_matrix") + }, 1); + })($nesting[0], $nesting); + self.$include($$('CoercionHelper')); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Scalar'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.value = nil; + + self.$include($$('ExceptionForMatrix')); + self.$include($$('CoercionHelper')); + + $def(self, '$initialize', function $$initialize(value) { + var self = this; + + return (self.value = value) + }, 1); + + $def(self, '$+', function $Scalar_$plus$132(other) { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq($$('Numeric'), ($ret_or_1 = other))) { + return $$('Scalar').$new($rb_plus(self.value, other)) + } else if (($eqeqeq($$('Vector'), $ret_or_1) || ($eqeqeq($$('Matrix'), $ret_or_1)))) { + return $$('Scalar').$Raise($$('ErrOperationNotDefined'), "+", self.value.$class(), other.$class()) + } else { + return self.$apply_through_coercion(other, "+") + } + }, 1); + + $def(self, '$-', function $Scalar_$minus$133(other) { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq($$('Numeric'), ($ret_or_1 = other))) { + return $$('Scalar').$new($rb_minus(self.value, other)) + } else if (($eqeqeq($$('Vector'), $ret_or_1) || ($eqeqeq($$('Matrix'), $ret_or_1)))) { + return $$('Scalar').$Raise($$('ErrOperationNotDefined'), "-", self.value.$class(), other.$class()) + } else { + return self.$apply_through_coercion(other, "-") + } + }, 1); + + $def(self, '$*', function $Scalar_$$134(other) { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq($$('Numeric'), ($ret_or_1 = other))) { + return $$('Scalar').$new($rb_times(self.value, other)) + } else if (($eqeqeq($$('Vector'), $ret_or_1) || ($eqeqeq($$('Matrix'), $ret_or_1)))) { + return $send(other, 'collect', [], function $$135(e){var self = $$135.$$s == null ? this : $$135.$$s; + if (self.value == null) self.value = nil; + + + + if (e == null) e = nil;; + return $rb_times(self.value, e);}, {$$arity: 1, $$s: self}) + } else { + return self.$apply_through_coercion(other, "*") + } + }, 1); + + $def(self, '$/', function $Scalar_$slash$136(other) { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq($$('Numeric'), ($ret_or_1 = other))) { + return $$('Scalar').$new($rb_divide(self.value, other)) + } else if ($eqeqeq($$('Vector'), $ret_or_1)) { + return $$('Scalar').$Raise($$('ErrOperationNotDefined'), "/", self.value.$class(), other.$class()) + } else if ($eqeqeq($$('Matrix'), $ret_or_1)) { + return $rb_times(self, other.$inverse()) + } else { + return self.$apply_through_coercion(other, "/") + } + }, 1); + return $def(self, '$**', function $Scalar_$$$137(other) { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq($$('Numeric'), ($ret_or_1 = other))) { + return $$('Scalar').$new(self.value['$**'](other)) + } else if ($eqeqeq($$('Vector'), $ret_or_1)) { + return $$('Scalar').$Raise($$('ErrOperationNotDefined'), "**", self.value.$class(), other.$class()) + } else if ($eqeqeq($$('Matrix'), $ret_or_1)) { + return $$('Scalar').$Raise($$('ErrOperationNotImplemented'), "**", self.value.$class(), other.$class()) + } else { + return self.$apply_through_coercion(other, "**") + } + }, 1); + })($nesting[0], $$('Numeric'), $nesting); + })($nesting[0], null, $nesting); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Vector'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.elements = nil; + + self.$include($$('ExceptionForMatrix')); + self.$include($$('Enumerable')); + self.$include($$$($$('Matrix'), 'CoercionHelper')); + self.$extend($$$($$('Matrix'), 'ConversionHelper')); + self.$private_class_method("new"); + self.$attr_reader("elements"); + self.$protected("elements"); + $defs($$('Vector'), '$[]', function $Vector_$$$138($a) { + var $post_args, array, self = this; + + + + $post_args = Opal.slice.call(arguments); + + array = $post_args;; + return self.$new(self.$convert_to_array(array, false)); + }, -1); + $defs($$('Vector'), '$elements', function $$elements(array, copy) { + var self = this; + + + + if (copy == null) copy = true;; + return self.$new(self.$convert_to_array(array, copy)); + }, -2); + $defs($$('Vector'), '$basis', function $$basis($kwargs) { + var size, index, self = this, array = nil, $writer = nil; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if (!Opal.hasOwnProperty.call($kwargs.$$smap, 'size')) { + throw Opal.ArgumentError.$new('missing keyword: size'); + } + size = $kwargs.$$smap["size"];; + + if (!Opal.hasOwnProperty.call($kwargs.$$smap, 'index')) { + throw Opal.ArgumentError.$new('missing keyword: index'); + } + index = $kwargs.$$smap["index"];; + if ($truthy($rb_lt(size, 1))) { + self.$raise($$('ArgumentError'), "invalid size (" + (size) + " for 1..)") + }; + if (!($rb_le(0, index) && ($truthy($rb_lt(index, size))))) { + self.$raise($$('ArgumentError'), "invalid index (" + (index) + " for 0..." + (size) + ")") + }; + array = $$('Array').$new(size, 0); + + $writer = [index, 1]; + $send(array, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self.$new(self.$convert_to_array(array, false)); + }, 1); + $defs($$('Vector'), '$zero', function $$zero(size) { + var self = this, array = nil; + + + if ($truthy($rb_lt(size, 0))) { + self.$raise($$('ArgumentError'), "invalid size (" + (size) + " for 0..)") + }; + array = $$('Array').$new(size, 0); + return self.$new(self.$convert_to_array(array, false)); + }, 1); + + $def(self, '$initialize', function $$initialize(array) { + var self = this; + + return (self.elements = array) + }, 1); + + $def(self, '$[]', function $Vector_$$$139(i) { + var self = this; + + return self.elements['$[]'](i) + }, 1); + $alias(self, "element", "[]"); + $alias(self, "component", "[]"); + + $def(self, '$[]=', function $Vector_$$$eq$140(i, v) { + var self = this, $writer = nil; + + + $writer = [i, v]; + $send(self.elements, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }, 2); + $alias(self, "set_element", "[]="); + $alias(self, "set_component", "[]="); + self.$private("[]=", "set_element", "set_component"); + + $def(self, '$round', function $$round(ndigits) { + var self = this; + + + + if (ndigits == null) ndigits = 0;; + return $send(self, 'map', [], function $$141(e){ + + + if (e == null) e = nil;; + return e.$round(ndigits);}, 1); + }, -1); + + $def(self, '$size', function $$size() { + var self = this; + + return self.elements.$size() + }, 0); + + $def(self, '$each', function $$each() { + var block = $$each.$$p || nil, self = this; + + delete $$each.$$p; + + ; + if (!(block !== nil)) { + return self.$to_enum("each") + }; + $send(self.elements, 'each', [], block.$to_proc()); + return self; + }, 0); + + $def(self, '$each2', function $$each2(v) { + var $yield = $$each2.$$p || nil, self = this; + + delete $$each2.$$p; + + if ($truthy(v['$kind_of?']($$('Integer')))) { + self.$raise($$('TypeError'), "Integer is not like Vector") + }; + if ($neqeq(self.$size(), v.$size())) { + $$('Vector').$Raise($$('ErrDimensionMismatch')) + }; + if (!($yield !== nil)) { + return self.$to_enum("each2", v) + }; + $send(self.$size(), 'times', [], function $$142(i){var self = $$142.$$s == null ? this : $$142.$$s; + if (self.elements == null) self.elements = nil; + + + + if (i == null) i = nil;; + return Opal.yieldX($yield, [self.elements['$[]'](i), v['$[]'](i)]);;}, {$$arity: 1, $$s: self}); + return self; + }, 1); + + $def(self, '$collect2', function $$collect2(v) { + var $yield = $$collect2.$$p || nil, self = this; + + delete $$collect2.$$p; + + if ($truthy(v['$kind_of?']($$('Integer')))) { + self.$raise($$('TypeError'), "Integer is not like Vector") + }; + if ($neqeq(self.$size(), v.$size())) { + $$('Vector').$Raise($$('ErrDimensionMismatch')) + }; + if (!($yield !== nil)) { + return self.$to_enum("collect2", v) + }; + return $send($$('Array'), 'new', [self.$size()], function $$143(i){var self = $$143.$$s == null ? this : $$143.$$s; + if (self.elements == null) self.elements = nil; + + + + if (i == null) i = nil;; + return Opal.yieldX($yield, [self.elements['$[]'](i), v['$[]'](i)]);;}, {$$arity: 1, $$s: self}); + }, 1); + $defs($$('Vector'), '$independent?', function $Vector_independent$ques$144($a) { + var $post_args, vs, self = this; + + + + $post_args = Opal.slice.call(arguments); + + vs = $post_args;; + $send(vs, 'each', [], function $$145(v){var self = $$145.$$s == null ? this : $$145.$$s; + + + + if (v == null) v = nil;; + if (!$truthy(v['$is_a?']($$('Vector')))) { + self.$raise($$('TypeError'), "expected Vector, got " + (v.$class())) + }; + if ($eqeq(v.$size(), vs.$first().$size())) { + return nil + } else { + return $$('Vector').$Raise($$('ErrDimensionMismatch')) + };}, {$$arity: 1, $$s: self}); + if ($truthy($rb_gt(vs.$count(), vs.$first().$size()))) { + return false + }; + return $send($$('Matrix'), '[]', $to_a(vs)).$rank()['$eql?'](vs.$count()); + }, -1); + + $def(self, '$independent?', function $Vector_independent$ques$146($a) { + var $post_args, vs, self = this; + + + + $post_args = Opal.slice.call(arguments); + + vs = $post_args;; + return $send(self.$class(), 'independent?', [self].concat($to_a(vs))); + }, -1); + + $def(self, '$zero?', function $Vector_zero$ques$147() { + var self = this; + + return $send(self, 'all?', [], "zero?".$to_proc()) + }, 0); + + $def(self, '$==', function $Vector_$eq_eq$148(other) { + var self = this; + + + if (!$eqeqeq($$('Vector'), other)) { + return false + }; + return self.elements['$=='](other.$elements()); + }, 1); + + $def(self, '$eql?', function $Vector_eql$ques$149(other) { + var self = this; + + + if (!$eqeqeq($$('Vector'), other)) { + return false + }; + return self.elements['$eql?'](other.$elements()); + }, 1); + + $def(self, '$clone', function $$clone() { + var self = this; + + return self.$class().$elements(self.elements) + }, 0); + + $def(self, '$hash', function $$hash() { + var self = this; + + return self.elements.$hash() + }, 0); + + $def(self, '$*', function $Vector_$$150(x) { + var self = this, $ret_or_1 = nil, els = nil; + + if ($eqeqeq($$('Numeric'), ($ret_or_1 = x))) { + + els = $send(self.elements, 'collect', [], function $$151(e){ + + + if (e == null) e = nil;; + return $rb_times(e, x);}, 1); + return self.$class().$elements(els, false); + } else if ($eqeqeq($$('Matrix'), $ret_or_1)) { + return $rb_times($$('Matrix').$column_vector(self), x) + } else if ($eqeqeq($$('Vector'), $ret_or_1)) { + return $$('Vector').$Raise($$('ErrOperationNotDefined'), "*", self.$class(), x.$class()) + } else { + return self.$apply_through_coercion(x, "*") + } + }, 1); + + $def(self, '$+', function $Vector_$plus$152(v) { + var self = this, $ret_or_1 = nil, els = nil; + + if ($eqeqeq($$('Vector'), ($ret_or_1 = v))) { + + if ($neqeq(self.$size(), v.$size())) { + $$('Vector').$Raise($$('ErrDimensionMismatch')) + }; + els = $send(self, 'collect2', [v], function $$153(v1, v2){ + + + if (v1 == null) v1 = nil;; + + if (v2 == null) v2 = nil;; + return $rb_plus(v1, v2);}, 2); + return self.$class().$elements(els, false); + } else if ($eqeqeq($$('Matrix'), $ret_or_1)) { + return $rb_plus($$('Matrix').$column_vector(self), v) + } else { + return self.$apply_through_coercion(v, "+") + } + }, 1); + + $def(self, '$-', function $Vector_$minus$154(v) { + var self = this, $ret_or_1 = nil, els = nil; + + if ($eqeqeq($$('Vector'), ($ret_or_1 = v))) { + + if ($neqeq(self.$size(), v.$size())) { + $$('Vector').$Raise($$('ErrDimensionMismatch')) + }; + els = $send(self, 'collect2', [v], function $$155(v1, v2){ + + + if (v1 == null) v1 = nil;; + + if (v2 == null) v2 = nil;; + return $rb_minus(v1, v2);}, 2); + return self.$class().$elements(els, false); + } else if ($eqeqeq($$('Matrix'), $ret_or_1)) { + return $rb_minus($$('Matrix').$column_vector(self), v) + } else { + return self.$apply_through_coercion(v, "-") + } + }, 1); + + $def(self, '$/', function $Vector_$slash$156(x) { + var self = this, $ret_or_1 = nil, els = nil; + + if ($eqeqeq($$('Numeric'), ($ret_or_1 = x))) { + + els = $send(self.elements, 'collect', [], function $$157(e){ + + + if (e == null) e = nil;; + return $rb_divide(e, x);}, 1); + return self.$class().$elements(els, false); + } else if (($eqeqeq($$('Matrix'), $ret_or_1) || ($eqeqeq($$('Vector'), $ret_or_1)))) { + return $$('Vector').$Raise($$('ErrOperationNotDefined'), "/", self.$class(), x.$class()) + } else { + return self.$apply_through_coercion(x, "/") + } + }, 1); + + $def(self, '$+@', function $Vector_$plus$$158() { + var self = this; + + return self + }, 0); + + $def(self, '$-@', function $Vector_$minus$$159() { + var self = this; + + return $send(self, 'collect', [], function $$160(e){ + + + if (e == null) e = nil;; + return e['$-@']();}, 1) + }, 0); + + $def(self, '$inner_product', function $$inner_product(v) { + var self = this, p = nil; + + + if ($neqeq(self.$size(), v.$size())) { + $$('Vector').$Raise($$('ErrDimensionMismatch')) + }; + p = 0; + $send(self, 'each2', [v], function $$161(v1, v2){ + + + if (v1 == null) v1 = nil;; + + if (v2 == null) v2 = nil;; + return (p = $rb_plus(p, $rb_times(v1, v2.$conj())));}, 2); + return p; + }, 1); + self.$alias_method("dot", "inner_product"); + + $def(self, '$cross_product', function $$cross_product($a) { + var $post_args, vs, self = this, $ret_or_1 = nil, v = nil, rows = nil; + + + + $post_args = Opal.slice.call(arguments); + + vs = $post_args;; + if (!$truthy($rb_ge(self.$size(), 2))) { + self.$raise($$('ErrOperationNotDefined'), "cross product is not defined on vectors of dimension " + (self.$size())) + }; + if (!$eqeq(vs.$size(), $rb_minus(self.$size(), 2))) { + self.$raise($$('ArgumentError'), "wrong number of arguments (" + (vs.$size()) + " for " + ($rb_minus(self.$size(), 2)) + ")") + }; + $send(vs, 'each', [], function $$162(v){var self = $$162.$$s == null ? this : $$162.$$s; + + + + if (v == null) v = nil;; + if (!$truthy(v['$is_a?']($$('Vector')))) { + self.$raise($$('TypeError'), "expected Vector, got " + (v.$class())) + }; + if ($eqeq(v.$size(), self.$size())) { + return nil + } else { + return $$('Vector').$Raise($$('ErrDimensionMismatch')) + };}, {$$arity: 1, $$s: self}); + if ($eqeqeq(2, ($ret_or_1 = self.$size()))) { + return $$('Vector')['$[]'](self.elements['$[]'](1)['$-@'](), self.elements['$[]'](0)) + } else if ($eqeqeq(3, $ret_or_1)) { + + v = vs['$[]'](0); + return $$('Vector')['$[]']($rb_minus($rb_times(v['$[]'](2), self.elements['$[]'](1)), $rb_times(v['$[]'](1), self.elements['$[]'](2))), $rb_minus($rb_times(v['$[]'](0), self.elements['$[]'](2)), $rb_times(v['$[]'](2), self.elements['$[]'](0))), $rb_minus($rb_times(v['$[]'](1), self.elements['$[]'](0)), $rb_times(v['$[]'](0), self.elements['$[]'](1)))); + } else { + + rows = [self].concat($to_a(vs)).concat([$send($$('Array'), 'new', [self.$size()], function $$163(i){var self = $$163.$$s == null ? this : $$163.$$s; + + + + if (i == null) i = nil;; + return $$('Vector').$basis($hash2(["size", "index"], {"size": self.$size(), "index": i}));}, {$$arity: 1, $$s: self})]); + return $$('Matrix').$rows(rows).$laplace_expansion($hash2(["row"], {"row": $rb_minus(self.$size(), 1)})); + }; + }, -1); + self.$alias_method("cross", "cross_product"); + + $def(self, '$collect', function $$collect() { + var block = $$collect.$$p || nil, self = this, els = nil; + + delete $$collect.$$p; + + ; + if (!(block !== nil)) { + return self.$to_enum("collect") + }; + els = $send(self.elements, 'collect', [], block.$to_proc()); + return self.$class().$elements(els, false); + }, 0); + $alias(self, "map", "collect"); + + $def(self, '$magnitude', function $$magnitude() { + var self = this; + + return $$('Math').$sqrt($send(self.elements, 'inject', [0], function $$164(v, e){ + + + if (v == null) v = nil;; + + if (e == null) e = nil;; + return $rb_plus(v, e.$abs2());}, 2)) + }, 0); + $alias(self, "r", "magnitude"); + $alias(self, "norm", "magnitude"); + + $def(self, '$map2', function $$map2(v) { + var block = $$map2.$$p || nil, self = this, els = nil; + + delete $$map2.$$p; + + ; + if (!(block !== nil)) { + return self.$to_enum("map2", v) + }; + els = $send(self, 'collect2', [v], block.$to_proc()); + return self.$class().$elements(els, false); + }, 1); + $klass($nesting[0], $$('StandardError'), 'ZeroVectorError'); + + $def(self, '$normalize', function $$normalize() { + var self = this, n = nil; + + + n = self.$magnitude(); + if ($eqeq(n, 0)) { + self.$raise($$('ZeroVectorError'), "Zero vectors can not be normalized") + }; + return $rb_divide(self, n); + }, 0); + + $def(self, '$angle_with', function $$angle_with(v) { + var self = this, prod = nil; + + + if (!$truthy(v['$is_a?']($$('Vector')))) { + self.$raise($$('TypeError'), "Expected a Vector, got a " + (v.$class())) + }; + if ($neqeq(self.$size(), v.$size())) { + $$('Vector').$Raise($$('ErrDimensionMismatch')) + }; + prod = $rb_times(self.$magnitude(), v.$magnitude()); + if ($eqeq(prod, 0)) { + self.$raise($$('ZeroVectorError'), "Can't get angle of zero vector") + }; + return $$('Math').$acos($rb_divide(self.$inner_product(v), prod)); + }, 1); + + $def(self, '$covector', function $$covector() { + var self = this; + + return $$('Matrix').$row_vector(self) + }, 0); + + $def(self, '$to_a', function $$to_a() { + var self = this; + + return self.elements.$dup() + }, 0); + + $def(self, '$to_matrix', function $$to_matrix() { + var self = this; + + return $$('Matrix').$column_vector(self) + }, 0); + + $def(self, '$elements_to_f', function $$elements_to_f() { + var self = this; + + + self.$warn("Vector#elements_to_f is deprecated", $hash2(["uplevel"], {"uplevel": 1})); + return $send(self, 'map', [], "to_f".$to_proc()); + }, 0); + + $def(self, '$elements_to_i', function $$elements_to_i() { + var self = this; + + + self.$warn("Vector#elements_to_i is deprecated", $hash2(["uplevel"], {"uplevel": 1})); + return $send(self, 'map', [], "to_i".$to_proc()); + }, 0); + + $def(self, '$elements_to_r', function $$elements_to_r() { + var self = this; + + + self.$warn("Vector#elements_to_r is deprecated", $hash2(["uplevel"], {"uplevel": 1})); + return $send(self, 'map', [], "to_r".$to_proc()); + }, 0); + + $def(self, '$coerce', function $$coerce(other) { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq($$('Numeric'), ($ret_or_1 = other))) { + return [$$$($$('Matrix'), 'Scalar').$new(other), self] + } else { + return self.$raise($$('TypeError'), "" + (self.$class()) + " can't be coerced into " + (other.$class())) + } + }, 1); + + $def(self, '$to_s', function $$to_s() { + var self = this; + + return $rb_plus($rb_plus("Vector[", self.elements.$join(", ")), "]") + }, 0); + return $def(self, '$inspect', function $$inspect() { + var self = this; + + return $rb_plus("Vector", self.elements.$inspect()) + }, 0); + })($nesting[0], null, $nesting); +}; diff --git a/opal/1.4.1/matrix.min.js b/opal/1.4.1/matrix.min.js new file mode 100644 index 00000000..8804d06a --- /dev/null +++ b/opal/1.4.1/matrix.min.js @@ -0,0 +1 @@ +Opal.modules.e2mmap=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$const_set=Opal.const_set,$send2=Opal.send2,$find_super=Opal.find_super,$truthy=Opal.truthy,$rb_lt=Opal.rb_lt,$defs=Opal.defs,$send=Opal.send,$to_a=Opal.to_a,$def=Opal.def,$alias=Opal.alias,$hash2=Opal.hash2,$rb_minus=Opal.rb_minus,$gvars=Opal.gvars,$regexp=Opal.regexp,$enc=Opal.enc;return Opal.add_stubs("<,bind,module_eval,Raise,class,extend,def_e2message,def_exception,instance_eval,[]=,-,new,const_defined?,remove_const,const_set,e2mm_message,nil?,caller,=~,[],quote,shift,raise,sprintf,Fail,inspect,each,ancestors"),function($base,$parent_nesting){var self=$module($base,"Exception2MessageMapper"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"E2MM",$$("Exception2MessageMapper")),$defs($$("E2MM"),"$extend_object",(function $$extend_object(cl){var $yield=$$extend_object.$$p||nil;return delete $$extend_object.$$p,$send2(this,$find_super(this,"extend_object",$$extend_object,!1,!0),"extend_object",[cl],$yield),$truthy($rb_lt(cl,$$("E2MM")))?nil:cl.$bind(this)}),1),$def(self,"$bind",(function(cl){return $send(this,"module_eval",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return $def(self,"$Raise",(function($a,$b){var $post_args,err,rest,self=this;return($post_args=Opal.slice.call(arguments)).length>0&&(err=$post_args.shift()),null==err&&(err=nil),rest=$post_args,$send($$("Exception2MessageMapper"),"Raise",[self.$class(),err].concat($to_a(rest)))}),-1),$alias(self,"Fail","Raise"),function(self,$parent_nesting){Opal.udef(self,"$included")}(Opal.get_singleton_class(self)),$defs(self,"$included",(function(mod){return mod.$extend($$("Exception2MessageMapper"))}),1)}),{$$arity:0,$$s:this})}),1),$def(self,"$Raise",(function($a,$b){var $post_args,err,rest,self=this;return($post_args=Opal.slice.call(arguments)).length>0&&(err=$post_args.shift()),null==err&&(err=nil),rest=$post_args,$send($$("E2MM"),"Raise",[self,err].concat($to_a(rest)))}),-1),$alias(self,"Fail","Raise"),$alias(self,"fail","Raise"),$def(self,"$def_e2message",(function(c,m){return $$("E2MM").$def_e2message(this,c,m)}),2),$def(self,"$def_exception",(function(n,m,s){return null==s&&(s=$$("StandardError")),$$("E2MM").$def_exception(this,n,m,s)}),-3),self.MessageMap=$hash2([],{}),$defs($$("E2MM"),"$def_e2message",(function(k,c,m){return $send($$("E2MM"),"instance_eval",[],(function $$2(){var $writer,self=null==$$2.$$s?this:$$2.$$s;return null==self.MessageMap&&(self.MessageMap=nil),$writer=[[k,c],m],$send(self.MessageMap,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:0,$$s:this}),c}),3),$defs($$("E2MM"),"$def_exception",(function(k,n,m,s){var e;return null==s&&(s=$$("StandardError")),e=$$("Class").$new(s),$send($$("E2MM"),"instance_eval",[],(function $$3(){var $writer,self=null==$$3.$$s?this:$$3.$$s;return null==self.MessageMap&&(self.MessageMap=nil),$writer=[[k,e],m],$send(self.MessageMap,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:0,$$s:this}),$truthy(k["$const_defined?"](n,!1))&&$send(k,"module_eval",[],(function $$4(){return(null==$$4.$$s?this:$$4.$$s).$remove_const(n)}),{$$arity:0,$$s:this}),k.$const_set(n,e)}),-4),$defs($$("E2MM"),"$Raise",(function($a,$b,$c){var $post_args,klass,err,rest,self=this,form=nil,b=nil;return null==$gvars["@"]&&($gvars["@"]=nil),($post_args=Opal.slice.call(arguments)).length>0&&(klass=$post_args.shift()),null==klass&&(klass=$$("E2MM")),$post_args.length>0&&(err=$post_args.shift()),null==err&&(err=nil),rest=$post_args,$truthy(form=self.$e2mm_message(klass,err))?(b=$truthy($gvars["@"]["$nil?"]())?self.$caller(1):$gvars["@"],$truthy(b["$[]"](0)["$=~"]($regexp(["^",$$("Regexp").$quote($enc("./e2mmap.rb","US-ASCII")),":"])))&&b.$shift(),self.$raise(err,$send(self,"sprintf",[form].concat($to_a(rest))),b)):$$("E2MM").$Fail($$("E2MM"),$$("ErrNotRegisteredException"),err.$inspect())}),-1),function(self,$parent_nesting){$alias(self,"Fail","Raise")}(Opal.get_singleton_class($$("E2MM"))),$defs($$("E2MM"),"$e2mm_message",(function(klass,exp){try{return $send(klass.$ancestors(),"each",[],(function $$5(c){var mes,self=null==$$5.$$s?this:$$5.$$s;if(null==self.MessageMap&&(self.MessageMap=nil),null==c&&(c=nil),!$truthy(mes=self.MessageMap["$[]"]([c,exp])))return nil;Opal.ret(mes)}),{$$arity:1,$$s:this}),nil}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),2),function(self,$parent_nesting){$alias(self,"message","e2mm_message")}(Opal.get_singleton_class(self)),$$("E2MM").$def_exception($$("E2MM"),"ErrNotRegisteredException","not registered exception(%s)")}($nesting[0],$nesting)},Opal.modules["matrix/eigenvalue_decomposition"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def,$alias=Opal.alias,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt,$rb_plus=Opal.rb_plus,$rb_divide=Opal.rb_divide,$rb_times=Opal.rb_times,$neqeq=Opal.neqeq,$rb_lt=Opal.rb_lt,$rb_le=Opal.rb_le,$rb_ge=Opal.rb_ge,$to_ary=Opal.to_ary;return Opal.add_stubs("is_a?,raise,class,row_count,new,symmetric?,to_a,tridiagonalize,diagonalize,reduce_to_hessenberg,hessenberg_to_real_schur,send,transpose,build_eigenvectors,inverse,dup,each_with_index,==,Complex,[],[]=,-,map,diagonal,eigenvalues,v,d,v_inv,alias_method,private,>,+,-@,abs,/,*,times,downto,sqrt,upto,!=,max,<,<=,hypot,>=,min,cdiv"),function($base,$super,$parent_nesting){var $nesting=[$klass($base,null,"Matrix")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"EigenvalueDecomposition"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.size=$proto.symmetric=$proto.d=$proto.e=$proto.v=$proto.h=nil,$def(self,"$initialize",(function(a){return $truthy(a["$is_a?"]($$("Matrix")))||this.$raise($$("TypeError"),"Expected Matrix but got "+a.$class()),this.size=a.$row_count(),this.d=$$("Array").$new(this.size,0),this.e=$$("Array").$new(this.size,0),$truthy(this.symmetric=a["$symmetric?"]())?(this.v=a.$to_a(),this.$tridiagonalize(),this.$diagonalize()):(this.v=$send($$("Array"),"new",[this.size],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return null==self.size&&(self.size=nil),$$("Array").$new(self.size,0)}),{$$arity:0,$$s:this}),this.h=a.$to_a(),this.ort=$$("Array").$new(this.size,0),this.$reduce_to_hessenberg(),this.$hessenberg_to_real_schur())}),1),$def(self,"$eigenvector_matrix",(function(){return $$("Matrix").$send("new",this.$build_eigenvectors().$transpose())}),0),$alias(self,"v","eigenvector_matrix"),$def(self,"$eigenvector_matrix_inv",(function(){var r=nil;return r=$$("Matrix").$send("new",this.$build_eigenvectors()),$truthy(this.symmetric)||(r=r.$transpose().$inverse()),r}),0),$alias(self,"v_inv","eigenvector_matrix_inv"),$def(self,"$eigenvalues",(function(){var values=nil;return values=this.d.$dup(),$send(this.e,"each_with_index",[],(function $$2(imag,i){var self=null==$$2.$$s?this:$$2.$$s,$writer=nil;return null==imag&&(imag=nil),null==i&&(i=nil),$eqeq(imag,0)?nil:($writer=[i,self.$Complex(values["$[]"](i),imag)],$send(values,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),{$$arity:2,$$s:this}),values}),0),$def(self,"$eigenvectors",(function(){return $send(this.$build_eigenvectors(),"map",[],(function(ev){return null==ev&&(ev=nil),$$("Vector").$send("new",ev)}),1)}),0),$def(self,"$eigenvalue_matrix",(function(){return $send($$("Matrix"),"diagonal",$to_a(this.$eigenvalues()))}),0),$alias(self,"d","eigenvalue_matrix"),$def(self,"$to_ary",(function(){return[this.$v(),this.$d(),this.$v_inv()]}),0),self.$alias_method("to_a","to_ary"),self.$private(),$def(self,"$build_eigenvectors",(function(){return $send(this.e.$each_with_index(),"map",[],(function $$4(imag,i){var self=null==$$4.$$s?this:$$4.$$s;return null==self.size&&(self.size=nil),null==imag&&(imag=nil),null==i&&(i=nil),$eqeq(imag,0)?$send($$("Array"),"new",[self.size],(function $$5(j){var self=null==$$5.$$s?this:$$5.$$s;return null==self.v&&(self.v=nil),null==j&&(j=nil),self.v["$[]"](j)["$[]"](i)}),{$$arity:1,$$s:self}):$truthy($rb_gt(imag,0))?$send($$("Array"),"new",[self.size],(function $$6(j){var self=null==$$6.$$s?this:$$6.$$s;return null==self.v&&(self.v=nil),null==j&&(j=nil),self.$Complex(self.v["$[]"](j)["$[]"](i),self.v["$[]"](j)["$[]"]($rb_plus(i,1)))}),{$$arity:1,$$s:self}):$send($$("Array"),"new",[self.size],(function $$7(j){var self=null==$$7.$$s?this:$$7.$$s;return null==self.v&&(self.v=nil),null==j&&(j=nil),self.$Complex(self.v["$[]"](j)["$[]"]($rb_minus(i,1)),self.v["$[]"](j)["$[]"](i)["$-@"]())}),{$$arity:1,$$s:self})}),{$$arity:2,$$s:this})}),0),$def(self,"$cdiv",(function(xr,xi,yr,yi){var r=nil,d=nil;return $truthy($rb_gt(yr.$abs(),yi.$abs()))?(r=$rb_divide(yi,yr),d=$rb_plus(yr,$rb_times(r,yi)),[$rb_divide($rb_plus(xr,$rb_times(r,xi)),d),$rb_divide($rb_minus(xi,$rb_times(r,xr)),d)]):(r=$rb_divide(yr,yi),d=$rb_plus(yi,$rb_times(r,yr)),[$rb_divide($rb_plus($rb_times(r,xr),xi),d),$rb_divide($rb_minus($rb_times(r,xi),xr),d)])}),4),$def(self,"$tridiagonalize",(function(){var $writer=nil;return $send(this.size,"times",[],(function $$8(j){var $writer,self=null==$$8.$$s?this:$$8.$$s;return null==self.v&&(self.v=nil),null==self.size&&(self.size=nil),null==self.d&&(self.d=nil),null==j&&(j=nil),$writer=[j,self.v["$[]"]($rb_minus(self.size,1))["$[]"](j)],$send(self.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),$send($rb_minus(this.size,1),"downto",[$rb_plus(0,1)],(function $$9(i){var self=null==$$9.$$s?this:$$9.$$s,scale=nil,h=nil,$writer=nil,f=nil,g=nil,hh=nil;return null==self.d&&(self.d=nil),null==self.e&&(self.e=nil),null==i&&(i=nil),scale=0,h=0,$send(i,"times",[],(function $$10(k){var self=null==$$10.$$s?this:$$10.$$s;return null==self.d&&(self.d=nil),null==k&&(k=nil),scale=$rb_plus(scale,self.d["$[]"](k).$abs())}),{$$arity:1,$$s:self}),$eqeq(scale,0)?($writer=[i,self.d["$[]"]($rb_minus(i,1))],$send(self.e,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$send(i,"times",[],(function $$11(j){var self=null==$$11.$$s?this:$$11.$$s;return null==self.v&&(self.v=nil),null==self.d&&(self.d=nil),null==j&&(j=nil),$writer=[j,self.v["$[]"]($rb_minus(i,1))["$[]"](j)],$send(self.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[j,0],$send(self.v["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[i,0],$send(self.v["$[]"](j),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})):($send(i,"times",[],(function $$12(k){var self=null==$$12.$$s?this:$$12.$$s;return null==self.d&&(self.d=nil),null==k&&(k=nil),$writer=[k,$rb_divide(self.d["$[]"](k),scale)],$send(self.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],h=$rb_plus(h,$rb_times(self.d["$[]"](k),self.d["$[]"](k)))}),{$$arity:1,$$s:self}),f=self.d["$[]"]($rb_minus(i,1)),g=$$("Math").$sqrt(h),$truthy($rb_gt(f,0))&&(g=g["$-@"]()),$writer=[i,$rb_times(scale,g)],$send(self.e,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],h=$rb_minus(h,$rb_times(f,g)),$writer=[$rb_minus(i,1),$rb_minus(f,g)],$send(self.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$send(i,"times",[],(function $$13(j){var self=null==$$13.$$s?this:$$13.$$s;return null==self.e&&(self.e=nil),null==j&&(j=nil),$writer=[j,0],$send(self.e,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self}),$send(i,"times",[],(function $$14(j){var self=null==$$14.$$s?this:$$14.$$s;return null==self.d&&(self.d=nil),null==self.v&&(self.v=nil),null==self.e&&(self.e=nil),null==j&&(j=nil),f=self.d["$[]"](j),$writer=[i,f],$send(self.v["$[]"](j),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],g=$rb_plus(self.e["$[]"](j),$rb_times(self.v["$[]"](j)["$[]"](j),f)),$send($rb_plus(j,1),"upto",[$rb_minus(i,1)],(function $$15(k){var self=null==$$15.$$s?this:$$15.$$s;return null==self.v&&(self.v=nil),null==self.d&&(self.d=nil),null==self.e&&(self.e=nil),null==k&&(k=nil),g=$rb_plus(g,$rb_times(self.v["$[]"](k)["$[]"](j),self.d["$[]"](k))),$writer=[k,$rb_plus(self.e["$[]"](k),$rb_times(self.v["$[]"](k)["$[]"](j),f))],$send(self.e,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self}),$writer=[j,g],$send(self.e,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self}),f=0,$send(i,"times",[],(function $$16(j){var self=null==$$16.$$s?this:$$16.$$s;return null==self.e&&(self.e=nil),null==self.d&&(self.d=nil),null==j&&(j=nil),$writer=[j,$rb_divide(self.e["$[]"](j),h)],$send(self.e,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],f=$rb_plus(f,$rb_times(self.e["$[]"](j),self.d["$[]"](j)))}),{$$arity:1,$$s:self}),hh=$rb_divide(f,$rb_plus(h,h)),$send(i,"times",[],(function $$17(j){var self=null==$$17.$$s?this:$$17.$$s;return null==self.e&&(self.e=nil),null==self.d&&(self.d=nil),null==j&&(j=nil),$writer=[j,$rb_minus(self.e["$[]"](j),$rb_times(hh,self.d["$[]"](j)))],$send(self.e,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self}),$send(i,"times",[],(function $$18(j){var self=null==$$18.$$s?this:$$18.$$s;return null==self.d&&(self.d=nil),null==self.e&&(self.e=nil),null==self.v&&(self.v=nil),null==j&&(j=nil),f=self.d["$[]"](j),g=self.e["$[]"](j),$send(j,"upto",[$rb_minus(i,1)],(function $$19(k){var self=null==$$19.$$s?this:$$19.$$s,$binary_op_recvr_tmp_3=nil;return null==self.v&&(self.v=nil),null==self.e&&(self.e=nil),null==self.d&&(self.d=nil),null==k&&(k=nil),$binary_op_recvr_tmp_3=self.v["$[]"](k),$writer=[j,$rb_minus($binary_op_recvr_tmp_3["$[]"](j),$rb_plus($rb_times(f,self.e["$[]"](k)),$rb_times(g,self.d["$[]"](k))))],$send($binary_op_recvr_tmp_3,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self}),$writer=[j,self.v["$[]"]($rb_minus(i,1))["$[]"](j)],$send(self.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[j,0],$send(self.v["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})),$writer=[i,h],$send(self.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),$send(0,"upto",[$rb_minus($rb_minus(this.size,1),1)],(function $$20(i){var h,self=null==$$20.$$s?this:$$20.$$s,$writer=nil;return null==self.v&&(self.v=nil),null==self.size&&(self.size=nil),null==self.d&&(self.d=nil),null==i&&(i=nil),$writer=[i,self.v["$[]"](i)["$[]"](i)],$send(self.v["$[]"]($rb_minus(self.size,1)),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[i,1],$send(self.v["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],h=self.d["$[]"]($rb_plus(i,1)),$neqeq(h,0)&&($send(0,"upto",[i],(function $$21(k){var self=null==$$21.$$s?this:$$21.$$s;return null==self.v&&(self.v=nil),null==self.d&&(self.d=nil),null==k&&(k=nil),$writer=[k,$rb_divide(self.v["$[]"](k)["$[]"]($rb_plus(i,1)),h)],$send(self.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self}),$send(0,"upto",[i],(function $$22(j){var self=null==$$22.$$s?this:$$22.$$s,g=nil;return null==j&&(j=nil),g=0,$send(0,"upto",[i],(function $$23(k){var self=null==$$23.$$s?this:$$23.$$s;return null==self.v&&(self.v=nil),null==k&&(k=nil),g=$rb_plus(g,$rb_times(self.v["$[]"](k)["$[]"]($rb_plus(i,1)),self.v["$[]"](k)["$[]"](j)))}),{$$arity:1,$$s:self}),$send(0,"upto",[i],(function $$24(k){var self=null==$$24.$$s?this:$$24.$$s,$binary_op_recvr_tmp_4=nil;return null==self.v&&(self.v=nil),null==self.d&&(self.d=nil),null==k&&(k=nil),$binary_op_recvr_tmp_4=self.v["$[]"](k),$writer=[j,$rb_minus($binary_op_recvr_tmp_4["$[]"](j),$rb_times(g,self.d["$[]"](k)))],$send($binary_op_recvr_tmp_4,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:self})),$send(0,"upto",[i],(function $$25(k){var self=null==$$25.$$s?this:$$25.$$s;return null==self.v&&(self.v=nil),null==k&&(k=nil),$writer=[$rb_plus(i,1),0],$send(self.v["$[]"](k),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:this}),$send(this.size,"times",[],(function $$26(j){var self=null==$$26.$$s?this:$$26.$$s,$writer=nil;return null==self.v&&(self.v=nil),null==self.size&&(self.size=nil),null==self.d&&(self.d=nil),null==j&&(j=nil),$writer=[j,self.v["$[]"]($rb_minus(self.size,1))["$[]"](j)],$send(self.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[j,0],$send(self.v["$[]"]($rb_minus(self.size,1)),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),$writer=[$rb_minus(this.size,1),1],$send(this.v["$[]"]($rb_minus(this.size,1)),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[0,0],$send(this.e,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),0),$def(self,"$diagonalize",(function(){var eps,$writer=nil,f=nil,tst1=nil;return $send(1,"upto",[$rb_minus(this.size,1)],(function $$27(i){var $writer,self=null==$$27.$$s?this:$$27.$$s;return null==self.e&&(self.e=nil),null==i&&(i=nil),$writer=[$rb_minus(i,1),self.e["$[]"](i)],$send(self.e,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),$writer=[$rb_minus(this.size,1),0],$send(this.e,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],f=0,tst1=0,eps=$$$($$("Float"),"EPSILON"),$send(this.size,"times",[],(function $$28(l){var self=null==$$28.$$s?this:$$28.$$s,m=nil,iter=nil,g=nil,p=nil,r=nil,dl1=nil,h=nil,c=nil,c2=nil,c3=nil,el1=nil,s=nil,s2=nil;for(null==self.d&&(self.d=nil),null==self.e&&(self.e=nil),null==self.size&&(self.size=nil),null==l&&(l=nil),tst1=[tst1,$rb_plus(self.d["$[]"](l).$abs(),self.e["$[]"](l).$abs())].$max(),m=l;$truthy($rb_lt(m,self.size))&&!$truthy($rb_le(self.e["$[]"](m).$abs(),$rb_times(eps,tst1)));)m=$rb_plus(m,1);if($truthy($rb_gt(m,l))){iter=0;do{iter=$rb_plus(iter,1),g=self.d["$[]"](l),p=$rb_divide($rb_minus(self.d["$[]"]($rb_plus(l,1)),g),$rb_times(2,self.e["$[]"](l))),r=$$("Math").$hypot(p,1),$truthy($rb_lt(p,0))&&(r=r["$-@"]()),$writer=[l,$rb_divide(self.e["$[]"](l),$rb_plus(p,r))],$send(self.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[$rb_plus(l,1),$rb_times(self.e["$[]"](l),$rb_plus(p,r))],$send(self.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],dl1=self.d["$[]"]($rb_plus(l,1)),h=$rb_minus(g,self.d["$[]"](l)),$send($rb_plus(l,2),"upto",[$rb_minus(self.size,1)],(function $$29(i){var self=null==$$29.$$s?this:$$29.$$s;return null==self.d&&(self.d=nil),null==i&&(i=nil),$writer=[i,$rb_minus(self.d["$[]"](i),h)],$send(self.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self}),f=$rb_plus(f,h),p=self.d["$[]"](m),c2=c=1,c3=c,el1=self.e["$[]"]($rb_plus(l,1)),s=0,s2=0,$send($rb_minus(m,1),"downto",[l],(function $$30(i){var self=null==$$30.$$s?this:$$30.$$s;return null==self.e&&(self.e=nil),null==self.d&&(self.d=nil),null==self.size&&(self.size=nil),null==i&&(i=nil),c3=c2,c2=c,s2=s,g=$rb_times(c,self.e["$[]"](i)),h=$rb_times(c,p),r=$$("Math").$hypot(p,self.e["$[]"](i)),$writer=[$rb_plus(i,1),$rb_times(s,r)],$send(self.e,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],s=$rb_divide(self.e["$[]"](i),r),c=$rb_divide(p,r),p=$rb_minus($rb_times(c,self.d["$[]"](i)),$rb_times(s,g)),$writer=[$rb_plus(i,1),$rb_plus(h,$rb_times(s,$rb_plus($rb_times(c,g),$rb_times(s,self.d["$[]"](i)))))],$send(self.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$send(self.size,"times",[],(function $$31(k){var self=null==$$31.$$s?this:$$31.$$s;return null==self.v&&(self.v=nil),null==k&&(k=nil),h=self.v["$[]"](k)["$[]"]($rb_plus(i,1)),$writer=[$rb_plus(i,1),$rb_plus($rb_times(s,self.v["$[]"](k)["$[]"](i)),$rb_times(c,h))],$send(self.v["$[]"](k),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[i,$rb_minus($rb_times(c,self.v["$[]"](k)["$[]"](i)),$rb_times(s,h))],$send(self.v["$[]"](k),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:self}),p=$rb_divide($rb_times($rb_times($rb_times($rb_times(s["$-@"](),s2),c3),el1),self.e["$[]"](l)),dl1),$writer=[l,$rb_times(s,p)],$send(self.e,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[l,$rb_times(c,p)],$send(self.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}while($truthy($rb_gt(self.e["$[]"](l).$abs(),$rb_times(eps,tst1))))}return $writer=[l,$rb_plus(self.d["$[]"](l),f)],$send(self.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[l,0],$send(self.e,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),$send(0,"upto",[$rb_minus(this.size,2)],(function $$32(i){var self=null==$$32.$$s?this:$$32.$$s,k=nil,p=nil;return null==self.d&&(self.d=nil),null==self.size&&(self.size=nil),null==i&&(i=nil),k=i,p=self.d["$[]"](i),$send($rb_plus(i,1),"upto",[$rb_minus(self.size,1)],(function $$33(j){var self=null==$$33.$$s?this:$$33.$$s;return null==self.d&&(self.d=nil),null==j&&(j=nil),$truthy($rb_lt(self.d["$[]"](j),p))?(k=j,p=self.d["$[]"](j)):nil}),{$$arity:1,$$s:self}),$neqeq(k,i)?($writer=[k,self.d["$[]"](i)],$send(self.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[i,p],$send(self.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$send(self.size,"times",[],(function $$34(j){var self=null==$$34.$$s?this:$$34.$$s;return null==self.v&&(self.v=nil),null==j&&(j=nil),p=self.v["$[]"](j)["$[]"](i),$writer=[i,self.v["$[]"](j)["$[]"](k)],$send(self.v["$[]"](j),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[k,p],$send(self.v["$[]"](j),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})):nil}),{$$arity:1,$$s:this})}),0),$def(self,"$reduce_to_hessenberg",(function(){var high;return 0,high=$rb_minus(this.size,1),$send($rb_plus(0,1),"upto",[$rb_minus(high,1)],(function $$35(m){var self=null==$$35.$$s?this:$$35.$$s,scale=nil,h=nil,g=nil,$writer=nil;return null==self.ort&&(self.ort=nil),null==self.size&&(self.size=nil),null==self.h&&(self.h=nil),null==m&&(m=nil),scale=0,$send(m,"upto",[high],(function $$36(i){var self=null==$$36.$$s?this:$$36.$$s;return null==self.h&&(self.h=nil),null==i&&(i=nil),scale=$rb_plus(scale,self.h["$[]"](i)["$[]"]($rb_minus(m,1)).$abs())}),{$$arity:1,$$s:self}),$neqeq(scale,0)?(h=0,$send(high,"downto",[m],(function $$37(i){var $writer,self=null==$$37.$$s?this:$$37.$$s;return null==self.h&&(self.h=nil),null==self.ort&&(self.ort=nil),null==i&&(i=nil),$writer=[i,$rb_divide(self.h["$[]"](i)["$[]"]($rb_minus(m,1)),scale)],$send(self.ort,"[]=",$to_a($writer)),$rb_minus($writer.length,1),h=$rb_plus(h,$rb_times(self.ort["$[]"](i),self.ort["$[]"](i)))}),{$$arity:1,$$s:self}),g=$$("Math").$sqrt(h),$truthy($rb_gt(self.ort["$[]"](m),0))&&(g=g["$-@"]()),h=$rb_minus(h,$rb_times(self.ort["$[]"](m),g)),$writer=[m,$rb_minus(self.ort["$[]"](m),g)],$send(self.ort,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$send(m,"upto",[$rb_minus(self.size,1)],(function $$38(j){var self=null==$$38.$$s?this:$$38.$$s,f=nil;return null==j&&(j=nil),f=0,$send(high,"downto",[m],(function $$39(i){var self=null==$$39.$$s?this:$$39.$$s;return null==self.ort&&(self.ort=nil),null==self.h&&(self.h=nil),null==i&&(i=nil),f=$rb_plus(f,$rb_times(self.ort["$[]"](i),self.h["$[]"](i)["$[]"](j)))}),{$$arity:1,$$s:self}),f=$rb_divide(f,h),$send(m,"upto",[high],(function $$40(i){var self=null==$$40.$$s?this:$$40.$$s,$binary_op_recvr_tmp_5=nil;return null==self.h&&(self.h=nil),null==self.ort&&(self.ort=nil),null==i&&(i=nil),$binary_op_recvr_tmp_5=self.h["$[]"](i),$writer=[j,$rb_minus($binary_op_recvr_tmp_5["$[]"](j),$rb_times(f,self.ort["$[]"](i)))],$send($binary_op_recvr_tmp_5,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:self}),$send(0,"upto",[high],(function $$41(i){var self=null==$$41.$$s?this:$$41.$$s,f=nil;return null==i&&(i=nil),f=0,$send(high,"downto",[m],(function $$42(j){var self=null==$$42.$$s?this:$$42.$$s;return null==self.ort&&(self.ort=nil),null==self.h&&(self.h=nil),null==j&&(j=nil),f=$rb_plus(f,$rb_times(self.ort["$[]"](j),self.h["$[]"](i)["$[]"](j)))}),{$$arity:1,$$s:self}),f=$rb_divide(f,h),$send(m,"upto",[high],(function $$43(j){var self=null==$$43.$$s?this:$$43.$$s,$binary_op_recvr_tmp_6=nil;return null==self.h&&(self.h=nil),null==self.ort&&(self.ort=nil),null==j&&(j=nil),$binary_op_recvr_tmp_6=self.h["$[]"](i),$writer=[j,$rb_minus($binary_op_recvr_tmp_6["$[]"](j),$rb_times(f,self.ort["$[]"](j)))],$send($binary_op_recvr_tmp_6,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:self}),$writer=[m,$rb_times(scale,self.ort["$[]"](m))],$send(self.ort,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[$rb_minus(m,1),$rb_times(scale,g)],$send(self.h["$[]"](m),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),{$$arity:1,$$s:this}),$send(this.size,"times",[],(function $$44(i){var self=null==$$44.$$s?this:$$44.$$s;return null==self.size&&(self.size=nil),null==i&&(i=nil),$send(self.size,"times",[],(function $$45(j){var $writer,self=null==$$45.$$s?this:$$45.$$s;return null==self.v&&(self.v=nil),null==j&&(j=nil),$writer=[j,$eqeq(i,j)?1:0],$send(self.v["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:this}),$send($rb_minus(high,1),"downto",[$rb_plus(0,1)],(function $$46(m){var self=null==$$46.$$s?this:$$46.$$s;return null==self.h&&(self.h=nil),null==m&&(m=nil),$neqeq(self.h["$[]"](m)["$[]"]($rb_minus(m,1)),0)?($send($rb_plus(m,1),"upto",[high],(function $$47(i){var $writer,self=null==$$47.$$s?this:$$47.$$s;return null==self.h&&(self.h=nil),null==self.ort&&(self.ort=nil),null==i&&(i=nil),$writer=[i,self.h["$[]"](i)["$[]"]($rb_minus(m,1))],$send(self.ort,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self}),$send(m,"upto",[high],(function $$48(j){var self=null==$$48.$$s?this:$$48.$$s,g=nil;return null==self.ort&&(self.ort=nil),null==self.h&&(self.h=nil),null==j&&(j=nil),g=0,$send(m,"upto",[high],(function $$49(i){var self=null==$$49.$$s?this:$$49.$$s;return null==self.ort&&(self.ort=nil),null==self.v&&(self.v=nil),null==i&&(i=nil),g=$rb_plus(g,$rb_times(self.ort["$[]"](i),self.v["$[]"](i)["$[]"](j)))}),{$$arity:1,$$s:self}),g=$rb_divide($rb_divide(g,self.ort["$[]"](m)),self.h["$[]"](m)["$[]"]($rb_minus(m,1))),$send(m,"upto",[high],(function $$50(i){var $writer,self=null==$$50.$$s?this:$$50.$$s,$binary_op_recvr_tmp_7=nil;return null==self.v&&(self.v=nil),null==self.ort&&(self.ort=nil),null==i&&(i=nil),$binary_op_recvr_tmp_7=self.v["$[]"](i),$writer=[j,$rb_plus($binary_op_recvr_tmp_7["$[]"](j),$rb_times(g,self.ort["$[]"](i)))],$send($binary_op_recvr_tmp_7,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:self})):nil}),{$$arity:1,$$s:this})}),0),$def(self,"$hessenberg_to_real_schur",(function(){var nn,eps,n=nil,high=nil,exshift=nil,p=nil,q=nil,r=nil,s=nil,z=nil,norm=nil,iter=nil,l=nil,$writer=nil,w=nil,x=nil,y=nil,m=nil;for(nn=this.size,n=$rb_minus(nn,1),0,high=$rb_minus(nn,1),eps=$$$($$("Float"),"EPSILON"),exshift=0,p=q=r=s=z=0,norm=0,$send(nn,"times",[],(function $$51(i){var self=null==$$51.$$s?this:$$51.$$s,$writer=nil;return null==self.h&&(self.h=nil),null==self.d&&(self.d=nil),null==self.e&&(self.e=nil),null==i&&(i=nil),($truthy($rb_lt(i,0))||$truthy($rb_gt(i,high)))&&($writer=[i,self.h["$[]"](i)["$[]"](i)],$send(self.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[i,0],$send(self.e,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$send([$rb_minus(i,1),0].$max(),"upto",[$rb_minus(nn,1)],(function $$52(j){var self=null==$$52.$$s?this:$$52.$$s;return null==self.h&&(self.h=nil),null==j&&(j=nil),norm=$rb_plus(norm,self.h["$[]"](i)["$[]"](j).$abs())}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:this}),iter=0;$truthy($rb_ge(n,0));){for(l=n;$truthy($rb_gt(l,0))&&(s=$rb_plus(this.h["$[]"]($rb_minus(l,1))["$[]"]($rb_minus(l,1)).$abs(),this.h["$[]"](l)["$[]"](l).$abs()),$eqeq(s,0)&&(s=norm),!$truthy($rb_lt(this.h["$[]"](l)["$[]"]($rb_minus(l,1)).$abs(),$rb_times(eps,s))));)l=$rb_minus(l,1);if($eqeq(l,n))$writer=[n,$rb_plus(this.h["$[]"](n)["$[]"](n),exshift)],$send(this.h["$[]"](n),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[n,this.h["$[]"](n)["$[]"](n)],$send(this.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[n,0],$send(this.e,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],n=$rb_minus(n,1),iter=0;else if($eqeq(l,$rb_minus(n,1)))w=$rb_times(this.h["$[]"](n)["$[]"]($rb_minus(n,1)),this.h["$[]"]($rb_minus(n,1))["$[]"](n)),p=$rb_divide($rb_minus(this.h["$[]"]($rb_minus(n,1))["$[]"]($rb_minus(n,1)),this.h["$[]"](n)["$[]"](n)),2),q=$rb_plus($rb_times(p,p),w),z=$$("Math").$sqrt(q.$abs()),$writer=[n,$rb_plus(this.h["$[]"](n)["$[]"](n),exshift)],$send(this.h["$[]"](n),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[$rb_minus(n,1),$rb_plus(this.h["$[]"]($rb_minus(n,1))["$[]"]($rb_minus(n,1)),exshift)],$send(this.h["$[]"]($rb_minus(n,1)),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],x=this.h["$[]"](n)["$[]"](n),$truthy($rb_ge(q,0))?(z=$truthy($rb_ge(p,0))?$rb_plus(p,z):$rb_minus(p,z),$writer=[$rb_minus(n,1),$rb_plus(x,z)],$send(this.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[n,this.d["$[]"]($rb_minus(n,1))],$send(this.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$neqeq(z,0)&&($writer=[n,$rb_minus(x,$rb_divide(w,z))],$send(this.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=[$rb_minus(n,1),0],$send(this.e,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[n,0],$send(this.e,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],x=this.h["$[]"](n)["$[]"]($rb_minus(n,1)),s=$rb_plus(x.$abs(),z.$abs()),p=$rb_divide(x,s),q=$rb_divide(z,s),r=$$("Math").$sqrt($rb_plus($rb_times(p,p),$rb_times(q,q))),p=$rb_divide(p,r),q=$rb_divide(q,r),$send($rb_minus(n,1),"upto",[$rb_minus(nn,1)],(function $$53(j){var self=null==$$53.$$s?this:$$53.$$s;return null==self.h&&(self.h=nil),null==j&&(j=nil),z=self.h["$[]"]($rb_minus(n,1))["$[]"](j),$writer=[j,$rb_plus($rb_times(q,z),$rb_times(p,self.h["$[]"](n)["$[]"](j)))],$send(self.h["$[]"]($rb_minus(n,1)),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[j,$rb_minus($rb_times(q,self.h["$[]"](n)["$[]"](j)),$rb_times(p,z))],$send(self.h["$[]"](n),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),$send(0,"upto",[n],(function $$54(i){var self=null==$$54.$$s?this:$$54.$$s;return null==self.h&&(self.h=nil),null==i&&(i=nil),z=self.h["$[]"](i)["$[]"]($rb_minus(n,1)),$writer=[$rb_minus(n,1),$rb_plus($rb_times(q,z),$rb_times(p,self.h["$[]"](i)["$[]"](n)))],$send(self.h["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[n,$rb_minus($rb_times(q,self.h["$[]"](i)["$[]"](n)),$rb_times(p,z))],$send(self.h["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),$send(0,"upto",[high],(function $$55(i){var self=null==$$55.$$s?this:$$55.$$s;return null==self.v&&(self.v=nil),null==i&&(i=nil),z=self.v["$[]"](i)["$[]"]($rb_minus(n,1)),$writer=[$rb_minus(n,1),$rb_plus($rb_times(q,z),$rb_times(p,self.v["$[]"](i)["$[]"](n)))],$send(self.v["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[n,$rb_minus($rb_times(q,self.v["$[]"](i)["$[]"](n)),$rb_times(p,z))],$send(self.v["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this})):($writer=[$rb_minus(n,1),$rb_plus(x,p)],$send(this.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[n,$rb_plus(x,p)],$send(this.d,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[$rb_minus(n,1),z],$send(this.e,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[n,z["$-@"]()],$send(this.e,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),n=$rb_minus(n,2),iter=0;else{for(x=this.h["$[]"](n)["$[]"](n),y=0,w=0,$truthy($rb_lt(l,n))&&(y=this.h["$[]"]($rb_minus(n,1))["$[]"]($rb_minus(n,1)),w=$rb_times(this.h["$[]"](n)["$[]"]($rb_minus(n,1)),this.h["$[]"]($rb_minus(n,1))["$[]"](n))),$eqeq(iter,10)&&(exshift=$rb_plus(exshift,x),$send(0,"upto",[n],(function $$56(i){var self=null==$$56.$$s?this:$$56.$$s,$binary_op_recvr_tmp_8=nil;return null==self.h&&(self.h=nil),null==i&&(i=nil),$binary_op_recvr_tmp_8=self.h["$[]"](i),$writer=[i,$rb_minus($binary_op_recvr_tmp_8["$[]"](i),x)],$send($binary_op_recvr_tmp_8,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),s=$rb_plus(this.h["$[]"](n)["$[]"]($rb_minus(n,1)).$abs(),this.h["$[]"]($rb_minus(n,1))["$[]"]($rb_minus(n,2)).$abs()),x=y=$rb_times(.75,s),w=$rb_times($rb_times(-.4375,s),s)),$eqeq(iter,30)&&(s=$rb_divide($rb_minus(y,x),2),s=$rb_times(s,$rb_plus(s,w)),$truthy($rb_gt(s,0))&&(s=$$("Math").$sqrt(s),$truthy($rb_lt(y,x))&&(s=s["$-@"]()),s=$rb_minus(x,$rb_divide(w,$rb_plus($rb_divide($rb_minus(y,x),2),s))),$send(0,"upto",[n],(function $$57(i){var self=null==$$57.$$s?this:$$57.$$s,$binary_op_recvr_tmp_9=nil;return null==self.h&&(self.h=nil),null==i&&(i=nil),$binary_op_recvr_tmp_9=self.h["$[]"](i),$writer=[i,$rb_minus($binary_op_recvr_tmp_9["$[]"](i),s)],$send($binary_op_recvr_tmp_9,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),exshift=$rb_plus(exshift,s),x=y=w=.964)),iter=$rb_plus(iter,1),m=$rb_minus(n,2);$truthy($rb_ge(m,l))&&(z=this.h["$[]"](m)["$[]"](m),r=$rb_minus(x,z),s=$rb_minus(y,z),p=$rb_plus($rb_divide($rb_minus($rb_times(r,s),w),this.h["$[]"]($rb_plus(m,1))["$[]"](m)),this.h["$[]"](m)["$[]"]($rb_plus(m,1))),q=$rb_minus($rb_minus($rb_minus(this.h["$[]"]($rb_plus(m,1))["$[]"]($rb_plus(m,1)),z),r),s),r=this.h["$[]"]($rb_plus(m,2))["$[]"]($rb_plus(m,1)),s=$rb_plus($rb_plus(p.$abs(),q.$abs()),r.$abs()),p=$rb_divide(p,s),q=$rb_divide(q,s),r=$rb_divide(r,s),!$eqeq(m,l))&&!$truthy($rb_lt($rb_times(this.h["$[]"](m)["$[]"]($rb_minus(m,1)).$abs(),$rb_plus(q.$abs(),r.$abs())),$rb_times(eps,$rb_times(p.$abs(),$rb_plus($rb_plus(this.h["$[]"]($rb_minus(m,1))["$[]"]($rb_minus(m,1)).$abs(),z.$abs()),this.h["$[]"]($rb_plus(m,1))["$[]"]($rb_plus(m,1)).$abs())))));)m=$rb_minus(m,1);$send($rb_plus(m,2),"upto",[n],(function $$58(i){var self=null==$$58.$$s?this:$$58.$$s;return null==self.h&&(self.h=nil),null==i&&(i=nil),$writer=[$rb_minus(i,2),0],$send(self.h["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy($rb_gt(i,$rb_plus(m,2)))?($writer=[$rb_minus(i,3),0],$send(self.h["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),{$$arity:1,$$s:this}),$send(m,"upto",[$rb_minus(n,1)],(function $$59(k){var notlast,self=null==$$59.$$s?this:$$59.$$s;if(null==self.h&&(self.h=nil),null==k&&(k=nil),notlast=k["$!="]($rb_minus(n,1)),$neqeq(k,m)){if(p=self.h["$[]"](k)["$[]"]($rb_minus(k,1)),q=self.h["$[]"]($rb_plus(k,1))["$[]"]($rb_minus(k,1)),r=$truthy(notlast)?self.h["$[]"]($rb_plus(k,2))["$[]"]($rb_minus(k,1)):0,x=$rb_plus($rb_plus(p.$abs(),q.$abs()),r.$abs()),$eqeq(x,0))return nil;p=$rb_divide(p,x),q=$rb_divide(q,x),r=$rb_divide(r,x)}return s=$$("Math").$sqrt($rb_plus($rb_plus($rb_times(p,p),$rb_times(q,q)),$rb_times(r,r))),$truthy($rb_lt(p,0))&&(s=s["$-@"]()),$neqeq(s,0)?($neqeq(k,m)?($writer=[$rb_minus(k,1),$rb_times(s["$-@"](),x)],$send(self.h["$[]"](k),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):$neqeq(l,m)&&($writer=[$rb_minus(k,1),self.h["$[]"](k)["$[]"]($rb_minus(k,1))["$-@"]()],$send(self.h["$[]"](k),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),p=$rb_plus(p,s),x=$rb_divide(p,s),y=$rb_divide(q,s),z=$rb_divide(r,s),q=$rb_divide(q,p),r=$rb_divide(r,p),$send(k,"upto",[$rb_minus(nn,1)],(function $$60(j){var self=null==$$60.$$s?this:$$60.$$s;return null==self.h&&(self.h=nil),null==j&&(j=nil),p=$rb_plus(self.h["$[]"](k)["$[]"](j),$rb_times(q,self.h["$[]"]($rb_plus(k,1))["$[]"](j))),$truthy(notlast)&&(p=$rb_plus(p,$rb_times(r,self.h["$[]"]($rb_plus(k,2))["$[]"](j))),$writer=[j,$rb_minus(self.h["$[]"]($rb_plus(k,2))["$[]"](j),$rb_times(p,z))],$send(self.h["$[]"]($rb_plus(k,2)),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=[j,$rb_minus(self.h["$[]"](k)["$[]"](j),$rb_times(p,x))],$send(self.h["$[]"](k),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[j,$rb_minus(self.h["$[]"]($rb_plus(k,1))["$[]"](j),$rb_times(p,y))],$send(self.h["$[]"]($rb_plus(k,1)),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self}),$send(0,"upto",[[n,$rb_plus(k,3)].$min()],(function $$61(i){var self=null==$$61.$$s?this:$$61.$$s;return null==self.h&&(self.h=nil),null==i&&(i=nil),p=$rb_plus($rb_times(x,self.h["$[]"](i)["$[]"](k)),$rb_times(y,self.h["$[]"](i)["$[]"]($rb_plus(k,1)))),$truthy(notlast)&&(p=$rb_plus(p,$rb_times(z,self.h["$[]"](i)["$[]"]($rb_plus(k,2)))),$writer=[$rb_plus(k,2),$rb_minus(self.h["$[]"](i)["$[]"]($rb_plus(k,2)),$rb_times(p,r))],$send(self.h["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=[k,$rb_minus(self.h["$[]"](i)["$[]"](k),p)],$send(self.h["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[$rb_plus(k,1),$rb_minus(self.h["$[]"](i)["$[]"]($rb_plus(k,1)),$rb_times(p,q))],$send(self.h["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self}),$send(0,"upto",[high],(function $$62(i){var self=null==$$62.$$s?this:$$62.$$s;return null==self.v&&(self.v=nil),null==i&&(i=nil),p=$rb_plus($rb_times(x,self.v["$[]"](i)["$[]"](k)),$rb_times(y,self.v["$[]"](i)["$[]"]($rb_plus(k,1)))),$truthy(notlast)&&(p=$rb_plus(p,$rb_times(z,self.v["$[]"](i)["$[]"]($rb_plus(k,2)))),$writer=[$rb_plus(k,2),$rb_minus(self.v["$[]"](i)["$[]"]($rb_plus(k,2)),$rb_times(p,r))],$send(self.v["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=[k,$rb_minus(self.v["$[]"](i)["$[]"](k),p)],$send(self.v["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[$rb_plus(k,1),$rb_minus(self.v["$[]"](i)["$[]"]($rb_plus(k,1)),$rb_times(p,q))],$send(self.v["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})):nil}),{$$arity:1,$$s:this})}}return $eqeq(norm,0)?nil:($send($rb_minus(nn,1),"downto",[0],(function $$63(k){var $c,$d,self=null==$$63.$$s?this:$$63.$$s,cdivr=nil,cdivi=nil;return null==self.d&&(self.d=nil),null==self.e&&(self.e=nil),null==self.h&&(self.h=nil),null==k&&(k=nil),p=self.d["$[]"](k),q=self.e["$[]"](k),$eqeq(q,0)?(l=k,$writer=[k,1],$send(self.h["$[]"](k),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$send($rb_minus(k,1),"downto",[0],(function $$64(i){var self=null==$$64.$$s?this:$$64.$$s,t=nil;return null==self.h&&(self.h=nil),null==self.e&&(self.e=nil),null==self.d&&(self.d=nil),null==i&&(i=nil),w=$rb_minus(self.h["$[]"](i)["$[]"](i),p),r=0,$send(l,"upto",[k],(function $$65(j){var self=null==$$65.$$s?this:$$65.$$s;return null==self.h&&(self.h=nil),null==j&&(j=nil),r=$rb_plus(r,$rb_times(self.h["$[]"](i)["$[]"](j),self.h["$[]"](j)["$[]"](k)))}),{$$arity:1,$$s:self}),$truthy($rb_lt(self.e["$[]"](i),0))?(z=w,s=r):(l=i,$eqeq(self.e["$[]"](i),0)?$neqeq(w,0)?($writer=[k,$rb_divide(r["$-@"](),w)],$send(self.h["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):($writer=[k,$rb_divide(r["$-@"](),$rb_times(eps,norm))],$send(self.h["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):(x=self.h["$[]"](i)["$[]"]($rb_plus(i,1)),y=self.h["$[]"]($rb_plus(i,1))["$[]"](i),q=$rb_plus($rb_times($rb_minus(self.d["$[]"](i),p),$rb_minus(self.d["$[]"](i),p)),$rb_times(self.e["$[]"](i),self.e["$[]"](i))),t=$rb_divide($rb_minus($rb_times(x,s),$rb_times(z,r)),q),$writer=[k,t],$send(self.h["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy($rb_gt(x.$abs(),z.$abs()))?($writer=[k,$rb_divide($rb_minus(r["$-@"](),$rb_times(w,t)),x)],$send(self.h["$[]"]($rb_plus(i,1)),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):($writer=[k,$rb_divide($rb_minus(s["$-@"](),$rb_times(y,t)),z)],$send(self.h["$[]"]($rb_plus(i,1)),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])),t=self.h["$[]"](i)["$[]"](k).$abs(),$truthy($rb_gt($rb_times($rb_times(eps,t),t),1))?$send(i,"upto",[k],(function $$66(j){var self=null==$$66.$$s?this:$$66.$$s;return null==self.h&&(self.h=nil),null==j&&(j=nil),$writer=[k,$rb_divide(self.h["$[]"](j)["$[]"](k),t)],$send(self.h["$[]"](j),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self}):nil)}),{$$arity:1,$$s:self})):$truthy($rb_lt(q,0))?(l=$rb_minus(n,1),$truthy($rb_gt(self.h["$[]"](n)["$[]"]($rb_minus(n,1)).$abs(),self.h["$[]"]($rb_minus(n,1))["$[]"](n).$abs()))?($writer=[$rb_minus(n,1),$rb_divide(q,self.h["$[]"](n)["$[]"]($rb_minus(n,1)))],$send(self.h["$[]"]($rb_minus(n,1)),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[n,$rb_divide($rb_minus(self.h["$[]"](n)["$[]"](n),p)["$-@"](),self.h["$[]"](n)["$[]"]($rb_minus(n,1)))],$send(self.h["$[]"]($rb_minus(n,1)),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):($d=self.$cdiv(0,self.h["$[]"]($rb_minus(n,1))["$[]"](n)["$-@"](),$rb_minus(self.h["$[]"]($rb_minus(n,1))["$[]"]($rb_minus(n,1)),p),q),$c=$to_ary($d),cdivr=null==$c[0]?nil:$c[0],cdivi=null==$c[1]?nil:$c[1],$writer=[$rb_minus(n,1),cdivr],$send(self.h["$[]"]($rb_minus(n,1)),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[n,cdivi],$send(self.h["$[]"]($rb_minus(n,1)),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=[$rb_minus(n,1),0],$send(self.h["$[]"](n),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[n,1],$send(self.h["$[]"](n),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$send($rb_minus(n,2),"downto",[0],(function $$67(i){var $e,$f,self=null==$$67.$$s?this:$$67.$$s,ra=nil,sa=nil,vr=nil,vi=nil,t=nil;return null==self.h&&(self.h=nil),null==self.e&&(self.e=nil),null==self.d&&(self.d=nil),null==i&&(i=nil),ra=0,sa=0,$send(l,"upto",[n],(function $$68(j){var self=null==$$68.$$s?this:$$68.$$s;return null==self.h&&(self.h=nil),null==j&&(j=nil),ra=$rb_plus(ra,$rb_times(self.h["$[]"](i)["$[]"](j),self.h["$[]"](j)["$[]"]($rb_minus(n,1)))),sa=$rb_plus(sa,$rb_times(self.h["$[]"](i)["$[]"](j),self.h["$[]"](j)["$[]"](n)))}),{$$arity:1,$$s:self}),w=$rb_minus(self.h["$[]"](i)["$[]"](i),p),$truthy($rb_lt(self.e["$[]"](i),0))?(z=w,r=ra,s=sa):(l=i,$eqeq(self.e["$[]"](i),0)?($f=self.$cdiv(ra["$-@"](),sa["$-@"](),w,q),$e=$to_ary($f),cdivr=null==$e[0]?nil:$e[0],cdivi=null==$e[1]?nil:$e[1],$writer=[$rb_minus(n,1),cdivr],$send(self.h["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[n,cdivi],$send(self.h["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):(x=self.h["$[]"](i)["$[]"]($rb_plus(i,1)),y=self.h["$[]"]($rb_plus(i,1))["$[]"](i),vr=$rb_minus($rb_plus($rb_times($rb_minus(self.d["$[]"](i),p),$rb_minus(self.d["$[]"](i),p)),$rb_times(self.e["$[]"](i),self.e["$[]"](i))),$rb_times(q,q)),vi=$rb_times($rb_times($rb_minus(self.d["$[]"](i),p),2),q),$eqeq(vr,0)&&$eqeq(vi,0)&&(vr=$rb_times($rb_times(eps,norm),$rb_plus($rb_plus($rb_plus($rb_plus(w.$abs(),q.$abs()),x.$abs()),y.$abs()),z.$abs()))),$f=self.$cdiv($rb_plus($rb_minus($rb_times(x,r),$rb_times(z,ra)),$rb_times(q,sa)),$rb_minus($rb_minus($rb_times(x,s),$rb_times(z,sa)),$rb_times(q,ra)),vr,vi),$e=$to_ary($f),cdivr=null==$e[0]?nil:$e[0],cdivi=null==$e[1]?nil:$e[1],$writer=[$rb_minus(n,1),cdivr],$send(self.h["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[n,cdivi],$send(self.h["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy($rb_gt(x.$abs(),$rb_plus(z.$abs(),q.$abs())))?($writer=[$rb_minus(n,1),$rb_divide($rb_plus($rb_minus(ra["$-@"](),$rb_times(w,self.h["$[]"](i)["$[]"]($rb_minus(n,1)))),$rb_times(q,self.h["$[]"](i)["$[]"](n))),x)],$send(self.h["$[]"]($rb_plus(i,1)),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[n,$rb_divide($rb_minus($rb_minus(sa["$-@"](),$rb_times(w,self.h["$[]"](i)["$[]"](n))),$rb_times(q,self.h["$[]"](i)["$[]"]($rb_minus(n,1)))),x)],$send(self.h["$[]"]($rb_plus(i,1)),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):($f=self.$cdiv($rb_minus(r["$-@"](),$rb_times(y,self.h["$[]"](i)["$[]"]($rb_minus(n,1)))),$rb_minus(s["$-@"](),$rb_times(y,self.h["$[]"](i)["$[]"](n))),z,q),$e=$to_ary($f),cdivr=null==$e[0]?nil:$e[0],cdivi=null==$e[1]?nil:$e[1],$writer=[$rb_minus(n,1),cdivr],$send(self.h["$[]"]($rb_plus(i,1)),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[n,cdivi],$send(self.h["$[]"]($rb_plus(i,1)),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])),t=[self.h["$[]"](i)["$[]"]($rb_minus(n,1)).$abs(),self.h["$[]"](i)["$[]"](n).$abs()].$max(),$truthy($rb_gt($rb_times($rb_times(eps,t),t),1))?$send(i,"upto",[n],(function $$69(j){var self=null==$$69.$$s?this:$$69.$$s;return null==self.h&&(self.h=nil),null==j&&(j=nil),$writer=[$rb_minus(n,1),$rb_divide(self.h["$[]"](j)["$[]"]($rb_minus(n,1)),t)],$send(self.h["$[]"](j),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[n,$rb_divide(self.h["$[]"](j)["$[]"](n),t)],$send(self.h["$[]"](j),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self}):nil)}),{$$arity:1,$$s:self})):nil}),{$$arity:1,$$s:this}),$send(nn,"times",[],(function $$70(i){var self=null==$$70.$$s?this:$$70.$$s;return null==i&&(i=nil),$truthy($rb_lt(i,0))||$truthy($rb_gt(i,high))?$send(i,"upto",[$rb_minus(nn,1)],(function $$71(j){var self=null==$$71.$$s?this:$$71.$$s;return null==self.h&&(self.h=nil),null==self.v&&(self.v=nil),null==j&&(j=nil),$writer=[j,self.h["$[]"](i)["$[]"](j)],$send(self.v["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self}):nil}),{$$arity:1,$$s:this}),$send($rb_minus(nn,1),"downto",[0],(function $$72(j){return null==j&&(j=nil),$send(0,"upto",[high],(function $$73(i){var self=null==$$73.$$s?this:$$73.$$s;return null==self.v&&(self.v=nil),null==i&&(i=nil),z=0,$send(0,"upto",[[j,high].$min()],(function $$74(k){var self=null==$$74.$$s?this:$$74.$$s;return null==self.v&&(self.v=nil),null==self.h&&(self.h=nil),null==k&&(k=nil),z=$rb_plus(z,$rb_times(self.v["$[]"](i)["$[]"](k),self.h["$[]"](k)["$[]"](j)))}),{$$arity:1,$$s:self}),$writer=[j,z],$send(self.v["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:null==$$72.$$s?this:$$72.$$s})}),{$$arity:1,$$s:this}))}),0)}($nesting[0],0,$nesting)}($nesting[0],0,$nesting)},Opal.modules["matrix/lup_decomposition"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$eqeq=Opal.eqeq,$def=Opal.def,$rb_le=Opal.rb_le,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$neqeq=Opal.neqeq,$rb_times=Opal.rb_times,$rb_plus=Opal.rb_plus,$rb_lt=Opal.rb_lt;return Opal.add_stubs("include,build,min,>,[],==,<=,new,each_with_index,[]=,-,send,l,u,p,alias_method,attr_reader,times,!=,Raise,*,singular?,is_a?,row_count,column_count,map,to_a,row,upto,+,downto,quo,convert_to_array,size,values_at,elements,raise,class,abs,-@,<"),function($base,$super,$parent_nesting){var $nesting=[$klass($base,null,"Matrix")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"LUPDecomposition"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.row_count=$proto.column_count=$proto.pivots=$proto.pivot_sign=nil,self.$include($$$($$("Matrix"),"ConversionHelper")),$def(self,"$l",(function(){return $send($$("Matrix"),"build",[this.row_count,[this.column_count,this.row_count].$min()],(function $$1(i,j){var self=null==$$1.$$s?this:$$1.$$s;return null==self.lu&&(self.lu=nil),null==i&&(i=nil),null==j&&(j=nil),$truthy($rb_gt(i,j))?self.lu["$[]"](i)["$[]"](j):$eqeq(i,j)?1:0}),{$$arity:2,$$s:this})}),0),$def(self,"$u",(function(){return $send($$("Matrix"),"build",[[this.column_count,this.row_count].$min(),this.column_count],(function $$2(i,j){var self=null==$$2.$$s?this:$$2.$$s;return null==self.lu&&(self.lu=nil),null==i&&(i=nil),null==j&&(j=nil),$truthy($rb_le(i,j))?self.lu["$[]"](i)["$[]"](j):0}),{$$arity:2,$$s:this})}),0),$def(self,"$p",(function(){var rows=nil;return rows=$send($$("Array"),"new",[this.row_count],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return null==self.row_count&&(self.row_count=nil),$$("Array").$new(self.row_count,0)}),{$$arity:0,$$s:this}),$send(this.pivots,"each_with_index",[],(function(p,i){var $writer;return null==p&&(p=nil),null==i&&(i=nil),$writer=[p,1],$send(rows["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),2),$$("Matrix").$send("new",rows,this.row_count)}),0),$def(self,"$to_ary",(function(){return[this.$l(),this.$u(),this.$p()]}),0),self.$alias_method("to_a","to_ary"),self.$attr_reader("pivots"),$def(self,"$singular?",(function(){try{return $send(this.column_count,"times",[],(function $$6(j){var self=null==$$6.$$s?this:$$6.$$s;if(null==self.lu&&(self.lu=nil),null==j&&(j=nil),!$eqeq(self.lu["$[]"](j)["$[]"](j),0))return nil;Opal.ret(!0)}),{$$arity:1,$$s:this}),!1}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),0),$def(self,"$det",(function(){var d=nil;return $neqeq(this.row_count,this.column_count)&&$$("Matrix").$Raise($$$($$("Matrix"),"ErrDimensionMismatch")),d=this.pivot_sign,$send(this.column_count,"times",[],(function $$7(j){var self=null==$$7.$$s?this:$$7.$$s;return null==self.lu&&(self.lu=nil),null==j&&(j=nil),d=$rb_times(d,self.lu["$[]"](j)["$[]"](j))}),{$$arity:1,$$s:this}),d}),0),self.$alias_method("determinant","det"),$def(self,"$solve",(function(b){var nx=nil,m=nil;return $truthy(this["$singular?"]())&&$$("Matrix").$Raise($$$($$("Matrix"),"ErrNotRegular"),"Matrix is singular."),$truthy(b["$is_a?"]($$("Matrix")))?($neqeq(b.$row_count(),this.row_count)&&$$("Matrix").$Raise($$$($$("Matrix"),"ErrDimensionMismatch")),nx=b.$column_count(),m=$send(this.pivots,"map",[],(function(row){return null==row&&(row=nil),b.$row(row).$to_a()}),1),$send(this.column_count,"times",[],(function $$9(k){var self=null==$$9.$$s?this:$$9.$$s;return null==self.column_count&&(self.column_count=nil),null==k&&(k=nil),$send($rb_plus(k,1),"upto",[$rb_minus(self.column_count,1)],(function $$10(i){return null==i&&(i=nil),$send(nx,"times",[],(function $$11(j){var $writer,self=null==$$11.$$s?this:$$11.$$s,$binary_op_recvr_tmp_10=nil;return null==self.lu&&(self.lu=nil),null==j&&(j=nil),$binary_op_recvr_tmp_10=m["$[]"](i),$writer=[j,$rb_minus($binary_op_recvr_tmp_10["$[]"](j),$rb_times(m["$[]"](k)["$[]"](j),self.lu["$[]"](i)["$[]"](k)))],$send($binary_op_recvr_tmp_10,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:null==$$10.$$s?this:$$10.$$s})}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:this}),$send($rb_minus(this.column_count,1),"downto",[0],(function $$12(k){var self=null==$$12.$$s?this:$$12.$$s;return null==k&&(k=nil),$send(nx,"times",[],(function $$13(j){var $writer,self=null==$$13.$$s?this:$$13.$$s;return null==self.lu&&(self.lu=nil),null==j&&(j=nil),$writer=[j,m["$[]"](k)["$[]"](j).$quo(self.lu["$[]"](k)["$[]"](k))],$send(m["$[]"](k),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self}),$send(k,"times",[],(function $$14(i){return null==i&&(i=nil),$send(nx,"times",[],(function $$15(j){var $writer,self=null==$$15.$$s?this:$$15.$$s,$binary_op_recvr_tmp_11=nil;return null==self.lu&&(self.lu=nil),null==j&&(j=nil),$binary_op_recvr_tmp_11=m["$[]"](i),$writer=[j,$rb_minus($binary_op_recvr_tmp_11["$[]"](j),$rb_times(m["$[]"](k)["$[]"](j),self.lu["$[]"](i)["$[]"](k)))],$send($binary_op_recvr_tmp_11,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:null==$$14.$$s?this:$$14.$$s})}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:this}),$$("Matrix").$send("new",m,nx)):(b=this.$convert_to_array(b),$neqeq(b.$size(),this.row_count)&&$$("Matrix").$Raise($$$($$("Matrix"),"ErrDimensionMismatch")),m=$send(b,"values_at",$to_a(this.pivots)),$send(this.column_count,"times",[],(function $$16(k){var self=null==$$16.$$s?this:$$16.$$s;return null==self.column_count&&(self.column_count=nil),null==k&&(k=nil),$send($rb_plus(k,1),"upto",[$rb_minus(self.column_count,1)],(function $$17(i){var $writer,self=null==$$17.$$s?this:$$17.$$s;return null==self.lu&&(self.lu=nil),null==i&&(i=nil),$writer=[i,$rb_minus(m["$[]"](i),$rb_times(m["$[]"](k),self.lu["$[]"](i)["$[]"](k)))],$send(m,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:this}),$send($rb_minus(this.column_count,1),"downto",[0],(function $$18(k){var self=null==$$18.$$s?this:$$18.$$s,$writer=nil;return null==self.lu&&(self.lu=nil),null==k&&(k=nil),$writer=[k,m["$[]"](k).$quo(self.lu["$[]"](k)["$[]"](k))],$send(m,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$send(k,"times",[],(function $$19(i){var self=null==$$19.$$s?this:$$19.$$s;return null==self.lu&&(self.lu=nil),null==i&&(i=nil),$writer=[i,$rb_minus(m["$[]"](i),$rb_times(m["$[]"](k),self.lu["$[]"](i)["$[]"](k)))],$send(m,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:this}),$$("Vector").$elements(m,!1))}),1),$def(self,"$initialize",(function(a){var lu_col_j=nil;return $truthy(a["$is_a?"]($$("Matrix")))||this.$raise($$("TypeError"),"Expected Matrix but got "+a.$class()),this.lu=a.$to_a(),this.row_count=a.$row_count(),this.column_count=a.$column_count(),this.pivots=$$("Array").$new(this.row_count),$send(this.row_count,"times",[],(function $$20(i){var $writer,self=null==$$20.$$s?this:$$20.$$s;return null==self.pivots&&(self.pivots=nil),null==i&&(i=nil),$writer=[i,i],$send(self.pivots,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),this.pivot_sign=1,lu_col_j=$$("Array").$new(this.row_count),$send(this.column_count,"times",[],(function $$21(j){var self=null==$$21.$$s?this:$$21.$$s,p=nil,k=nil,$writer=nil;return null==self.row_count&&(self.row_count=nil),null==self.column_count&&(self.column_count=nil),null==self.pivots&&(self.pivots=nil),null==self.pivot_sign&&(self.pivot_sign=nil),null==self.lu&&(self.lu=nil),null==j&&(j=nil),$send(self.row_count,"times",[],(function $$22(i){var $writer,self=null==$$22.$$s?this:$$22.$$s;return null==self.lu&&(self.lu=nil),null==i&&(i=nil),$writer=[i,self.lu["$[]"](i)["$[]"](j)],$send(lu_col_j,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self}),$send(self.row_count,"times",[],(function $$23(i){var kmax,self=null==$$23.$$s?this:$$23.$$s,lu_row_i=nil,s=nil,$writer=nil;return null==self.lu&&(self.lu=nil),null==i&&(i=nil),lu_row_i=self.lu["$[]"](i),kmax=[i,j].$min(),s=0,$send(kmax,"times",[],(function(k){return null==k&&(k=nil),s=$rb_plus(s,$rb_times(lu_row_i["$[]"](k),lu_col_j["$[]"](k)))}),1),$writer=[j,($writer=[i,$rb_minus(lu_col_j["$[]"](i),s)],$send(lu_col_j,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])],$send(lu_row_i,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self}),p=j,$send($rb_plus(j,1),"upto",[$rb_minus(self.row_count,1)],(function(i){return null==i&&(i=nil),$truthy($rb_gt(lu_col_j["$[]"](i).$abs(),lu_col_j["$[]"](p).$abs()))?p=i:nil}),1),$neqeq(p,j)&&($send(self.column_count,"times",[],(function $$26(k){var t,self=null==$$26.$$s?this:$$26.$$s,$writer=nil;return null==self.lu&&(self.lu=nil),null==k&&(k=nil),t=self.lu["$[]"](p)["$[]"](k),$writer=[k,self.lu["$[]"](j)["$[]"](k)],$send(self.lu["$[]"](p),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[k,t],$send(self.lu["$[]"](j),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self}),k=self.pivots["$[]"](p),$writer=[p,self.pivots["$[]"](j)],$send(self.pivots,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[j,k],$send(self.pivots,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.pivot_sign=self.pivot_sign["$-@"]()),$truthy($rb_lt(j,self.row_count))&&$neqeq(self.lu["$[]"](j)["$[]"](j),0)?$send($rb_plus(j,1),"upto",[$rb_minus(self.row_count,1)],(function $$27(i){var self=null==$$27.$$s?this:$$27.$$s;return null==self.lu&&(self.lu=nil),null==i&&(i=nil),$writer=[j,self.lu["$[]"](i)["$[]"](j).$quo(self.lu["$[]"](j)["$[]"](j))],$send(self.lu["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self}):nil}),{$$arity:1,$$s:this})}),1)}($nesting[0],0,$nesting)}($nesting[0],0,$nesting)},Opal.modules.matrix=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$defs=Opal.defs,$send=Opal.send,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$rb_lt=Opal.rb_lt,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$alias=Opal.alias,$neqeq=Opal.neqeq,$rb_times=Opal.rb_times,$rb_plus=Opal.rb_plus,$def=Opal.def,$rb_ge=Opal.rb_ge,$eqeqeq=Opal.eqeqeq,$const_set=Opal.const_set,$hash2=Opal.hash2,$rb_gt=Opal.rb_gt,$to_ary=Opal.to_ary,$rb_le=Opal.rb_le,$not=Opal.not,$rb_divide=Opal.rb_divide;return Opal.add_stubs("require,extend,def_e2message,def_exception,include,autoload,private_class_method,attr_reader,protected,rows,convert_to_array,map!,size,[],each,==,raise,new,transpose,coerce_to_int,<,to_enum,empty,[]=,-,diagonal,scalar,!=,*,coerce_to_matrix,map,send,to_proc,column_count,concat,row_count,each_with_index,+,empty?,method,first,Raise,combine,class,private,fetch,alias_method,elements,-@,>=,times,collect,new_matrix,===,upto,min,inspect,freeze,>,include?,last,pop,end,exclude_end?,<=,to_a,delete_at,square?,determinant,first_minor,**,build,cofactor,!,inject,with_index,all?,conj,singular?,eql?,hash,column_vector,column,apply_through_coercion,/,inverse,I,abs,quo,identity,loop,zero?,>>,eigensystem,+@,determinant_bareiss,find,warn,hstack,rank,round,vstack,real,imag,row,join,to_s,dup,to_ary,message,is_a?,coerce,length,public_send,kind_of?,respond_to?,__send__,coerce_to,count,independent?,collect2,each2,basis,laplace_expansion,sqrt,abs2,magnitude,acos,inner_product,row_vector"),self.$require("e2mmap.rb"),function($base,$parent_nesting){var self=$module($base,"ExceptionForMatrix"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$extend($$("Exception2MessageMapper")),self.$def_e2message($$("TypeError"),"wrong argument type %s (expected %s)"),self.$def_e2message($$("ArgumentError"),"Wrong # of arguments(%d for %d)"),self.$def_exception("ErrDimensionMismatch","#{self.name} dimension mismatch"),self.$def_exception("ErrNotRegular","Not Regular Matrix"),self.$def_exception("ErrOperationNotDefined","Operation(%s) can\\'t be defined: %s op %s"),self.$def_exception("ErrOperationNotImplemented","Sorry, Operation(%s) not implemented: %s op %s")}($nesting[0],$nesting),function($base,$super,$parent_nesting){var self=$klass($base,null,"Matrix"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.rows=nil,self.$include($$("Enumerable")),self.$include($$("ExceptionForMatrix")),self.$autoload("EigenvalueDecomposition","matrix/eigenvalue_decomposition"),self.$autoload("LUPDecomposition","matrix/lup_decomposition"),self.$private_class_method("new"),self.$attr_reader("rows"),self.$protected("rows"),$defs($$("Matrix"),"$[]",(function($a){var rows,self=this;return rows=Opal.slice.call(arguments),self.$rows(rows,!1)}),-1),$defs($$("Matrix"),"$rows",(function(rows,copy){var size,$ret_or_1;return null==copy&&(copy=!0),rows=this.$convert_to_array(rows,copy),$send(rows,"map!",[],(function $$2(row){return null==row&&(row=nil),(null==$$2.$$s?this:$$2.$$s).$convert_to_array(row,copy)}),{$$arity:1,$$s:this}),size=($truthy($ret_or_1=rows["$[]"](0))?$ret_or_1:[]).$size(),$send(rows,"each",[],(function $$3(row){var self=null==$$3.$$s?this:$$3.$$s;return null==row&&(row=nil),$eqeq(row.$size(),size)?nil:self.$raise($$("ErrDimensionMismatch"),"row size differs ("+row.$size()+" should be "+size+")")}),{$$arity:1,$$s:this}),this.$new(rows,size)}),-2),$defs($$("Matrix"),"$columns",(function(columns){return this.$rows(columns,!1).$transpose()}),1),$defs($$("Matrix"),"$build",(function $$build(row_count,column_count){var rows,$yield=$$build.$$p||nil;return delete $$build.$$p,null==column_count&&(column_count=row_count),row_count=$$("CoercionHelper").$coerce_to_int(row_count),column_count=$$("CoercionHelper").$coerce_to_int(column_count),($truthy($rb_lt(row_count,0))||$truthy($rb_lt(column_count,0)))&&this.$raise($$("ArgumentError")),$yield===nil?this.$to_enum("build",row_count,column_count):(rows=$send($$("Array"),"new",[row_count],(function(i){return null==i&&(i=nil),$send($$("Array"),"new",[column_count],(function(j){return null==j&&(j=nil),Opal.yieldX($yield,[i,j])}),1)}),1),this.$new(rows,column_count))}),-2),$defs($$("Matrix"),"$diagonal",(function($a){var $post_args,values,self=this,size=nil,rows=nil;return $post_args=Opal.slice.call(arguments),size=(values=$post_args).$size(),$eqeq(size,0)?$$("Matrix").$empty():(rows=$send($$("Array"),"new",[size],(function(j){var row,$writer;return null==j&&(j=nil),row=$$("Array").$new(size,0),$writer=[j,values["$[]"](j)],$send(row,"[]=",$to_a($writer)),$rb_minus($writer.length,1),row}),1),self.$new(rows))}),-1),$defs($$("Matrix"),"$scalar",(function(n,value){return $send(this,"diagonal",$to_a($$("Array").$new(n,value)))}),2),$defs($$("Matrix"),"$identity",(function(n){return this.$scalar(n,1)}),1),function(self,$parent_nesting){$alias(self,"unit","identity"),$alias(self,"I","identity")}(Opal.get_singleton_class($$("Matrix"))),$defs($$("Matrix"),"$zero",(function(row_count,column_count){var rows;return null==column_count&&(column_count=row_count),rows=$send($$("Array"),"new",[row_count],(function(){return $$("Array").$new(column_count,0)}),0),this.$new(rows,column_count)}),-2),$defs($$("Matrix"),"$row_vector",(function(row){return row=this.$convert_to_array(row),this.$new([row])}),1),$defs($$("Matrix"),"$column_vector",(function(column){return column=this.$convert_to_array(column),this.$new([column].$transpose(),1)}),1),$defs($$("Matrix"),"$empty",(function(row_count,column_count){return null==row_count&&(row_count=0),null==column_count&&(column_count=0),$neqeq(column_count,0)&&$neqeq(row_count,0)&&this.$raise($$("ArgumentError"),"One size must be 0"),($truthy($rb_lt(column_count,0))||$truthy($rb_lt(row_count,0)))&&this.$raise($$("ArgumentError"),"Negative size"),this.$new($rb_times([[]],row_count),column_count)}),-1),$defs($$("Matrix"),"$vstack",(function(x,$a){var matrices,self=this,result=nil;return matrices=Opal.slice.call(arguments,1),x=$$("CoercionHelper").$coerce_to_matrix(x),result=$send(x.$send("rows"),"map",[],"dup".$to_proc()),$send(matrices,"each",[],(function $$8(m){var self=null==$$8.$$s?this:$$8.$$s;return null==m&&(m=nil),m=$$("CoercionHelper").$coerce_to_matrix(m),$neqeq(m.$column_count(),x.$column_count())&&self.$raise($$("ErrDimensionMismatch"),"The given matrices must have "+x.$column_count()+" columns, but one has "+m.$column_count()),result.$concat(m.$send("rows"))}),{$$arity:1,$$s:self}),self.$new(result,x.$column_count())}),-2),$defs($$("Matrix"),"$hstack",(function(x,$a){var matrices,self=this,result=nil,total_column_count=nil;return matrices=Opal.slice.call(arguments,1),x=$$("CoercionHelper").$coerce_to_matrix(x),result=$send(x.$send("rows"),"map",[],"dup".$to_proc()),total_column_count=x.$column_count(),$send(matrices,"each",[],(function $$9(m){var self=null==$$9.$$s?this:$$9.$$s;return null==m&&(m=nil),m=$$("CoercionHelper").$coerce_to_matrix(m),$neqeq(m.$row_count(),x.$row_count())&&self.$raise($$("ErrDimensionMismatch"),"The given matrices must have "+x.$row_count()+" rows, but one has "+m.$row_count()),$send(result,"each_with_index",[],(function(row,i){return null==row&&(row=nil),null==i&&(i=nil),row.$concat(m.$send("rows")["$[]"](i))}),2),total_column_count=$rb_plus(total_column_count,m.$column_count())}),{$$arity:1,$$s:self}),self.$new(result,total_column_count)}),-2),$defs($$("Matrix"),"$combine",(function $$combine($a){var $post_args,matrices,$yield=$$combine.$$p||nil,self=this,x=nil,rows=nil;return delete $$combine.$$p,$post_args=Opal.slice.call(arguments),matrices=$post_args,$yield===nil?$send(self,"to_enum",["combine"].concat($to_a(matrices))):$truthy(matrices["$empty?"]())?$$("Matrix").$empty():($send(matrices,"map!",[],$$("CoercionHelper").$method("coerce_to_matrix").$to_proc()),x=matrices.$first(),$send(matrices,"each",[],(function(m){return null==m&&(m=nil),$eqeq(x.$row_count(),m.$row_count())&&$eqeq(x.$column_count(),m.$column_count())?nil:$$("Matrix").$Raise($$("ErrDimensionMismatch"))}),1),rows=$send($$("Array"),"new",[x.$row_count()],(function(i){return null==i&&(i=nil),$send($$("Array"),"new",[x.$column_count()],(function(j){return null==j&&(j=nil),Opal.yield1($yield,$send(matrices,"map",[],(function(m){return null==m&&(m=nil),m["$[]"](i,j)}),1))}),1)}),1),self.$new(rows,x.$column_count()))}),-1),$def(self,"$combine",(function $$combine($a){var matrices,block=$$combine.$$p||nil,self=this;return delete $$combine.$$p,matrices=Opal.slice.call(arguments),$send($$("Matrix"),"combine",[self].concat($to_a(matrices)),block.$to_proc())}),-1),$def(self,"$initialize",(function(rows,column_count){return null==column_count&&(column_count=rows["$[]"](0).$size()),this.rows=rows,this.column_count=column_count}),-2),$def(self,"$new_matrix",(function(rows,column_count){return null==column_count&&(column_count=rows["$[]"](0).$size()),this.$class().$send("new",rows,column_count)}),-2),self.$private("new_matrix"),$def(self,"$[]",(function(i,j){try{return $send(this.rows,"fetch",[i],(function(){Opal.ret(nil)}),0)["$[]"](j)}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),2),$alias(self,"element","[]"),$alias(self,"component","[]"),$def(self,"$[]=",(function(i,j,v){var $writer;return $writer=[j,v],$send(this.rows["$[]"](i),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),3),$alias(self,"set_element","[]="),$alias(self,"set_component","[]="),self.$private("[]=","set_element","set_component"),$def(self,"$row_count",(function(){return this.rows.$size()}),0),self.$alias_method("row_size","row_count"),self.$attr_reader("column_count"),self.$alias_method("column_size","column_count"),$def(self,"$row",(function $$row(i){try{var block=$$row.$$p||nil;return delete $$row.$$p,block!==nil?($send($send(this.rows,"fetch",[i],(function $$18(){var self=null==$$18.$$s?this:$$18.$$s;Opal.ret(self)}),{$$arity:0,$$s:this}),"each",[],block.$to_proc()),this):$$("Vector").$elements($send(this.rows,"fetch",[i],(function(){Opal.ret(nil)}),0))}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),1),$def(self,"$column",(function $$column(j){var $yield=$$column.$$p||nil,col=nil;return delete $$column.$$p,$yield!==nil?($truthy($rb_ge(j,this.$column_count()))||$truthy($rb_lt(j,this.$column_count()["$-@"]()))||$send(this.$row_count(),"times",[],(function $$20(i){var self=null==$$20.$$s?this:$$20.$$s;return null==self.rows&&(self.rows=nil),null==i&&(i=nil),Opal.yield1($yield,self.rows["$[]"](i)["$[]"](j))}),{$$arity:1,$$s:this}),this):$truthy($rb_ge(j,this.$column_count()))||$truthy($rb_lt(j,this.$column_count()["$-@"]()))?nil:(col=$send($$("Array"),"new",[this.$row_count()],(function $$21(i){var self=null==$$21.$$s?this:$$21.$$s;return null==self.rows&&(self.rows=nil),null==i&&(i=nil),self.rows["$[]"](i)["$[]"](j)}),{$$arity:1,$$s:this}),$$("Vector").$elements(col,!1))}),1),$def(self,"$collect",(function $$collect(){var rows,block=$$collect.$$p||nil;return delete $$collect.$$p,block===nil?this.$to_enum("collect"):(rows=$send(this.rows,"collect",[],(function(row){return null==row&&(row=nil),$send(row,"collect",[],block.$to_proc())}),1),this.$new_matrix(rows,this.$column_count()))}),0),$alias(self,"map","collect"),$def(self,"$each",(function $$each(which){try{var $ret_or_1,$yield=$$each.$$p||nil,last=nil,block=nil;return delete $$each.$$p,null==which&&(which="all"),$yield===nil?this.$to_enum("each",which):(last=$rb_minus(this.$column_count(),1),$eqeqeq("all",$ret_or_1=which)?(block=$$("Proc").$new(),$send(this.rows,"each",[],(function(row){return null==row&&(row=nil),$send(row,"each",[],block.$to_proc())}),1)):$eqeqeq("diagonal",$ret_or_1)?$send(this.rows,"each_with_index",[],(function $$24(row,row_index){var self=null==$$24.$$s?this:$$24.$$s;return null==row&&(row=nil),null==row_index&&(row_index=nil),Opal.yield1($yield,$send(row,"fetch",[row_index],(function $$25(){var self=null==$$25.$$s?this:$$25.$$s;Opal.ret(self)}),{$$arity:0,$$s:self}))}),{$$arity:2,$$s:this}):$eqeqeq("off_diagonal",$ret_or_1)?$send(this.rows,"each_with_index",[],(function $$26(row,row_index){return null==row&&(row=nil),null==row_index&&(row_index=nil),$send((null==$$26.$$s?this:$$26.$$s).$column_count(),"times",[],(function(col_index){return null==col_index&&(col_index=nil),$eqeq(row_index,col_index)?nil:Opal.yield1($yield,row["$[]"](col_index))}),1)}),{$$arity:2,$$s:this}):$eqeqeq("lower",$ret_or_1)?$send(this.rows,"each_with_index",[],(function(row,row_index){return null==row&&(row=nil),null==row_index&&(row_index=nil),$send(0,"upto",[[row_index,last].$min()],(function(col_index){return null==col_index&&(col_index=nil),Opal.yield1($yield,row["$[]"](col_index))}),1)}),2):$eqeqeq("strict_lower",$ret_or_1)?$send(this.rows,"each_with_index",[],(function $$30(row,row_index){return null==row&&(row=nil),null==row_index&&(row_index=nil),$send([row_index,(null==$$30.$$s?this:$$30.$$s).$column_count()].$min(),"times",[],(function(col_index){return null==col_index&&(col_index=nil),Opal.yield1($yield,row["$[]"](col_index))}),1)}),{$$arity:2,$$s:this}):$eqeqeq("strict_upper",$ret_or_1)?$send(this.rows,"each_with_index",[],(function(row,row_index){return null==row&&(row=nil),null==row_index&&(row_index=nil),$send($rb_plus(row_index,1),"upto",[last],(function(col_index){return null==col_index&&(col_index=nil),Opal.yield1($yield,row["$[]"](col_index))}),1)}),2):$eqeqeq("upper",$ret_or_1)?$send(this.rows,"each_with_index",[],(function(row,row_index){return null==row&&(row=nil),null==row_index&&(row_index=nil),$send(row_index,"upto",[last],(function(col_index){return null==col_index&&(col_index=nil),Opal.yield1($yield,row["$[]"](col_index))}),1)}),2):this.$raise($$("ArgumentError"),"expected "+which.$inspect()+" to be one of :all, :diagonal, :off_diagonal, :lower, :strict_lower, :strict_upper or :upper"),this)}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$each_with_index",(function $$each_with_index(which){try{var $ret_or_1,$yield=$$each_with_index.$$p||nil,last=nil;return delete $$each_with_index.$$p,null==which&&(which="all"),$yield===nil?this.$to_enum("each_with_index",which):(last=$rb_minus(this.$column_count(),1),$eqeqeq("all",$ret_or_1=which)?$send(this.rows,"each_with_index",[],(function(row,row_index){return null==row&&(row=nil),null==row_index&&(row_index=nil),$send(row,"each_with_index",[],(function(e,col_index){return null==e&&(e=nil),null==col_index&&(col_index=nil),Opal.yieldX($yield,[e,row_index,col_index])}),2)}),2):$eqeqeq("diagonal",$ret_or_1)?$send(this.rows,"each_with_index",[],(function $$38(row,row_index){var self=null==$$38.$$s?this:$$38.$$s;return null==row&&(row=nil),null==row_index&&(row_index=nil),Opal.yieldX($yield,[$send(row,"fetch",[row_index],(function $$39(){var self=null==$$39.$$s?this:$$39.$$s;Opal.ret(self)}),{$$arity:0,$$s:self}),row_index,row_index])}),{$$arity:2,$$s:this}):$eqeqeq("off_diagonal",$ret_or_1)?$send(this.rows,"each_with_index",[],(function $$40(row,row_index){return null==row&&(row=nil),null==row_index&&(row_index=nil),$send((null==$$40.$$s?this:$$40.$$s).$column_count(),"times",[],(function(col_index){return null==col_index&&(col_index=nil),$eqeq(row_index,col_index)?nil:Opal.yieldX($yield,[row["$[]"](col_index),row_index,col_index])}),1)}),{$$arity:2,$$s:this}):$eqeqeq("lower",$ret_or_1)?$send(this.rows,"each_with_index",[],(function(row,row_index){return null==row&&(row=nil),null==row_index&&(row_index=nil),$send(0,"upto",[[row_index,last].$min()],(function(col_index){return null==col_index&&(col_index=nil),Opal.yieldX($yield,[row["$[]"](col_index),row_index,col_index])}),1)}),2):$eqeqeq("strict_lower",$ret_or_1)?$send(this.rows,"each_with_index",[],(function $$44(row,row_index){return null==row&&(row=nil),null==row_index&&(row_index=nil),$send([row_index,(null==$$44.$$s?this:$$44.$$s).$column_count()].$min(),"times",[],(function(col_index){return null==col_index&&(col_index=nil),Opal.yieldX($yield,[row["$[]"](col_index),row_index,col_index])}),1)}),{$$arity:2,$$s:this}):$eqeqeq("strict_upper",$ret_or_1)?$send(this.rows,"each_with_index",[],(function(row,row_index){return null==row&&(row=nil),null==row_index&&(row_index=nil),$send($rb_plus(row_index,1),"upto",[last],(function(col_index){return null==col_index&&(col_index=nil),Opal.yieldX($yield,[row["$[]"](col_index),row_index,col_index])}),1)}),2):$eqeqeq("upper",$ret_or_1)?$send(this.rows,"each_with_index",[],(function(row,row_index){return null==row&&(row=nil),null==row_index&&(row_index=nil),$send(row_index,"upto",[last],(function(col_index){return null==col_index&&(col_index=nil),Opal.yieldX($yield,[row["$[]"](col_index),row_index,col_index])}),1)}),2):this.$raise($$("ArgumentError"),"expected "+which.$inspect()+" to be one of :all, :diagonal, :off_diagonal, :lower, :strict_lower, :strict_upper or :upper"),this)}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$const_set($nesting[0],"SELECTORS",$hash2(["all","diagonal","off_diagonal","lower","strict_lower","strict_upper","upper"],{all:!0,diagonal:!0,off_diagonal:!0,lower:!0,strict_lower:!0,strict_upper:!0,upper:!0}).$freeze()),$def(self,"$index",(function $$index($a){try{var $post_args,args,$yield=$$index.$$p||nil,self=this,which=nil,value=nil;return delete $$index.$$p,$post_args=Opal.slice.call(arguments),$truthy($rb_gt((args=$post_args).$size(),2))&&self.$raise($$("ArgumentError"),"wrong number of arguments("+args.$size()+" for 0-2)"),which=$eqeq(args.$size(),2)||$truthy($$("SELECTORS")["$include?"](args.$last()))?args.$pop():"all",$yield!==nil||$eqeq(args.$size(),1)?($eqeq(args.$size(),1)?(value=args.$first(),$send(self,"each_with_index",[which],(function(e,row_index,col_index){if(null==e&&(e=nil),null==row_index&&(row_index=nil),null==col_index&&(col_index=nil),!$eqeq(e,value))return nil;Opal.ret([row_index,col_index])}),3)):$send(self,"each_with_index",[which],(function(e,row_index,col_index){if(null==e&&(e=nil),null==row_index&&(row_index=nil),null==col_index&&(col_index=nil),!$truthy(Opal.yield1($yield,e)))return nil;Opal.ret([row_index,col_index])}),3),nil):$send(self,"to_enum",["find_index",which].concat($to_a(args)))}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),self.$alias_method("find_index","index"),$def(self,"$minor",(function($a){var $post_args,param,$b,self=this,$ret_or_1=nil,row_range=nil,col_range=nil,from_row=nil,to_row=nil,size_row=nil,from_col=nil,to_col=nil,size_col=nil,rows=nil;if($post_args=Opal.slice.call(arguments),$eqeqeq(2,$ret_or_1=(param=$post_args).$size()))row_range=null==($b=$to_ary(param))[0]?nil:$b[0],col_range=null==$b[1]?nil:$b[1],from_row=row_range.$first(),$truthy($rb_lt(from_row,0))&&(from_row=$rb_plus(from_row,self.$row_count())),to_row=row_range.$end(),$truthy($rb_lt(to_row,0))&&(to_row=$rb_plus(to_row,self.$row_count())),$truthy(row_range["$exclude_end?"]())||(to_row=$rb_plus(to_row,1)),size_row=$rb_minus(to_row,from_row),from_col=col_range.$first(),$truthy($rb_lt(from_col,0))&&(from_col=$rb_plus(from_col,self.$column_count())),to_col=col_range.$end(),$truthy($rb_lt(to_col,0))&&(to_col=$rb_plus(to_col,self.$column_count())),$truthy(col_range["$exclude_end?"]())||(to_col=$rb_plus(to_col,1)),size_col=$rb_minus(to_col,from_col);else if($eqeqeq(4,$ret_or_1)){if(from_row=null==($b=$to_ary(param))[0]?nil:$b[0],size_row=null==$b[1]?nil:$b[1],from_col=null==$b[2]?nil:$b[2],size_col=null==$b[3]?nil:$b[3],$truthy($rb_lt(size_row,0))||$truthy($rb_lt(size_col,0)))return nil;$truthy($rb_lt(from_row,0))&&(from_row=$rb_plus(from_row,self.$row_count())),$truthy($rb_lt(from_col,0))&&(from_col=$rb_plus(from_col,self.$column_count()))}else self.$raise($$("ArgumentError"),param.$inspect());return $truthy($rb_gt(from_row,self.$row_count()))||$truthy($rb_gt(from_col,self.$column_count()))||$truthy($rb_lt(from_row,0))||$truthy($rb_lt(from_col,0))?nil:(rows=$send(self.rows["$[]"](from_row,size_row),"collect",[],(function(row){return null==row&&(row=nil),row["$[]"](from_col,size_col)}),1),self.$new_matrix(rows,[$rb_minus(self.$column_count(),from_col),size_col].$min()))}),-1),$def(self,"$first_minor",(function(row,column){var arrays=nil;return $truthy(this["$empty?"]())&&this.$raise($$("RuntimeError"),"first_minor of empty matrix is not defined"),$rb_le(0,row)&&$truthy($rb_lt(row,this.$row_count()))||this.$raise($$("ArgumentError"),"invalid row ("+row.$inspect()+" for 0.."+$rb_minus(this.$row_count(),1)+")"),$rb_le(0,column)&&$truthy($rb_lt(column,this.$column_count()))||this.$raise($$("ArgumentError"),"invalid column ("+column.$inspect()+" for 0.."+$rb_minus(this.$column_count(),1)+")"),(arrays=this.$to_a()).$delete_at(row),$send(arrays,"each",[],(function(array){return null==array&&(array=nil),array.$delete_at(column)}),1),this.$new_matrix(arrays,$rb_minus(this.$column_count(),1))}),2),$def(self,"$cofactor",(function(row,column){var det_of_minor;return $truthy(this["$empty?"]())&&this.$raise($$("RuntimeError"),"cofactor of empty matrix is not defined"),$truthy(this["$square?"]())||$$("Matrix").$Raise($$("ErrDimensionMismatch")),det_of_minor=this.$first_minor(row,column).$determinant(),$rb_times(det_of_minor,(-1)["$**"]($rb_plus(row,column)))}),2),$def(self,"$adjugate",(function(){return $truthy(this["$square?"]())||$$("Matrix").$Raise($$("ErrDimensionMismatch")),$send($$("Matrix"),"build",[this.$row_count(),this.$column_count()],(function $$54(row,column){return null==row&&(row=nil),null==column&&(column=nil),(null==$$54.$$s?this:$$54.$$s).$cofactor(column,row)}),{$$arity:2,$$s:this})}),0),$def(self,"$laplace_expansion",(function($kwargs){var row,column,$ret_or_1,num=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(row=$kwargs.$$smap.row)&&(row=nil),null==(column=$kwargs.$$smap.column)&&(column=nil),num=$truthy($ret_or_1=row)?$ret_or_1:column,($not(num)||$truthy(row)&&$truthy(column))&&this.$raise($$("ArgumentError"),"exactly one the row or column arguments must be specified"),$truthy(this["$square?"]())||$$("Matrix").$Raise($$("ErrDimensionMismatch")),$truthy(this["$empty?"]())&&this.$raise($$("RuntimeError"),"laplace_expansion of empty matrix is not defined"),$rb_le(0,num)&&$truthy($rb_lt(num,this.$row_count()))||this.$raise($$("ArgumentError"),"invalid num ("+num.$inspect()+" for 0.."+$rb_minus(this.$row_count(),1)+")"),$send(this.$send($truthy(row)?"row":"column",num).$map(),"with_index",[],(function $$55(e,k){return null==e&&(e=nil),null==k&&(k=nil),$rb_times(e,$send(null==$$55.$$s?this:$$55.$$s,"cofactor",$to_a($truthy(row)?[num,k]:[k,num])))}),{$$arity:2,$$s:this}).$inject("+")}),-1),self.$alias_method("cofactor_expansion","laplace_expansion"),$def(self,"$diagonal?",(function(){return $truthy(this["$square?"]())||$$("Matrix").$Raise($$("ErrDimensionMismatch")),$send(this.$each("off_diagonal"),"all?",[],"zero?".$to_proc())}),0),$def(self,"$empty?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$column_count()["$=="](0))?$ret_or_1:this.$row_count()["$=="](0)}),0),$def(self,"$hermitian?",(function(){return $truthy(this["$square?"]())||$$("Matrix").$Raise($$("ErrDimensionMismatch")),$send(this.$each_with_index("upper"),"all?",[],(function $$59(e,row,col){var self=null==$$59.$$s?this:$$59.$$s;return null==e&&(e=nil),null==row&&(row=nil),null==col&&(col=nil),e["$=="](self.$rows()["$[]"](col)["$[]"](row).$conj())}),{$$arity:3,$$s:this})}),0),$def(self,"$lower_triangular?",(function(){return $send(this.$each("strict_upper"),"all?",[],"zero?".$to_proc())}),0),$def(self,"$normal?",(function(){try{return $truthy(this["$square?"]())||$$("Matrix").$Raise($$("ErrDimensionMismatch")),$send(this.$rows(),"each_with_index",[],(function $$62(row_i,i){var self=null==$$62.$$s?this:$$62.$$s;return null==row_i&&(row_i=nil),null==i&&(i=nil),$send(self.$rows(),"each_with_index",[],(function $$63(row_j,j){var s=nil;if(null==row_j&&(row_j=nil),null==j&&(j=nil),s=0,$send((null==$$63.$$s?this:$$63.$$s).$rows(),"each_with_index",[],(function(row_k,k){return null==row_k&&(row_k=nil),null==k&&(k=nil),s=$rb_plus(s,$rb_minus($rb_times(row_i["$[]"](k),row_j["$[]"](k).$conj()),$rb_times(row_k["$[]"](i).$conj(),row_k["$[]"](j))))}),2),$eqeq(s,0))return nil;Opal.ret(!1)}),{$$arity:2,$$s:self})}),{$$arity:2,$$s:this}),!0}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),0),$def(self,"$orthogonal?",(function(){try{return $truthy(this["$square?"]())||$$("Matrix").$Raise($$("ErrDimensionMismatch")),$send(this.$rows(),"each_with_index",[],(function $$66(row,i){var self=null==$$66.$$s?this:$$66.$$s;return null==row&&(row=nil),null==i&&(i=nil),$send(self.$column_count(),"times",[],(function $$67(j){var self=null==$$67.$$s?this:$$67.$$s,s=nil;if(null==j&&(j=nil),s=0,$send(self.$row_count(),"times",[],(function $$68(k){var self=null==$$68.$$s?this:$$68.$$s;return null==k&&(k=nil),s=$rb_plus(s,$rb_times(row["$[]"](k),self.$rows()["$[]"](k)["$[]"](j)))}),{$$arity:1,$$s:self}),$eqeq(s,$eqeq(i,j)?1:0))return nil;Opal.ret(!1)}),{$$arity:1,$$s:self})}),{$$arity:2,$$s:this}),!0}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),0),$def(self,"$permutation?",(function(){try{var cols=nil;return $truthy(this["$square?"]())||$$("Matrix").$Raise($$("ErrDimensionMismatch")),cols=$$("Array").$new(this.$column_count()),$send(this.$rows(),"each_with_index",[],(function(row,i){var found=nil;if(null==row&&(row=nil),null==i&&(i=nil),found=!1,$send(row,"each_with_index",[],(function(e,j){var $writer=nil;return null==e&&(e=nil),null==j&&(j=nil),$eqeq(e,1)?(($truthy(found)||$truthy(cols["$[]"](j)))&&Opal.ret(!1),$send(cols,"[]=",$to_a($writer=[j,!0])),found=$writer[$rb_minus($writer.length,1)]):$neqeq(e,0)?void Opal.ret(!1):nil}),2),$truthy(found))return nil;Opal.ret(!1)}),2),!0}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),0),$def(self,"$real?",(function(){return $send(this,"all?",[],"real?".$to_proc())}),0),$def(self,"$regular?",(function(){return this["$singular?"]()["$!"]()}),0),$def(self,"$singular?",(function(){return this.$determinant()["$=="](0)}),0),$def(self,"$square?",(function(){return this.$column_count()["$=="](this.$row_count())}),0),$def(self,"$symmetric?",(function(){try{return $truthy(this["$square?"]())||$$("Matrix").$Raise($$("ErrDimensionMismatch")),$send(this,"each_with_index",["strict_upper"],(function $$77(e,row,col){if(null==e&&(e=nil),null==row&&(row=nil),null==col&&(col=nil),!$neqeq(e,(null==$$77.$$s?this:$$77.$$s).$rows()["$[]"](col)["$[]"](row)))return nil;Opal.ret(!1)}),{$$arity:3,$$s:this}),!0}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),0),$def(self,"$antisymmetric?",(function(){try{return $truthy(this["$square?"]())||$$("Matrix").$Raise($$("ErrDimensionMismatch")),$send(this,"each_with_index",["upper"],(function $$79(e,row,col){if(null==e&&(e=nil),null==row&&(row=nil),null==col&&(col=nil),$eqeq(e,(null==$$79.$$s?this:$$79.$$s).$rows()["$[]"](col)["$[]"](row)["$-@"]()))return nil;Opal.ret(!1)}),{$$arity:3,$$s:this}),!0}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),0),$def(self,"$unitary?",(function(){try{return $truthy(this["$square?"]())||$$("Matrix").$Raise($$("ErrDimensionMismatch")),$send(this.$rows(),"each_with_index",[],(function $$81(row,i){var self=null==$$81.$$s?this:$$81.$$s;return null==row&&(row=nil),null==i&&(i=nil),$send(self.$column_count(),"times",[],(function $$82(j){var self=null==$$82.$$s?this:$$82.$$s,s=nil;if(null==j&&(j=nil),s=0,$send(self.$row_count(),"times",[],(function $$83(k){var self=null==$$83.$$s?this:$$83.$$s;return null==k&&(k=nil),s=$rb_plus(s,$rb_times(row["$[]"](k).$conj(),self.$rows()["$[]"](k)["$[]"](j)))}),{$$arity:1,$$s:self}),$eqeq(s,$eqeq(i,j)?1:0))return nil;Opal.ret(!1)}),{$$arity:1,$$s:self})}),{$$arity:2,$$s:this}),!0}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),0),$def(self,"$upper_triangular?",(function(){return $send(this.$each("strict_lower"),"all?",[],"zero?".$to_proc())}),0),$def(self,"$zero?",(function(){return $send(this,"all?",[],"zero?".$to_proc())}),0),$def(self,"$==",(function(other){return!(!$eqeqeq($$("Matrix"),other)||!$eqeq(this.$column_count(),other.$column_count()))&&this.$rows()["$=="](other.$rows())}),1),$def(self,"$eql?",(function(other){return!(!$eqeqeq($$("Matrix"),other)||!$eqeq(this.$column_count(),other.$column_count()))&&this.$rows()["$eql?"](other.$rows())}),1),$def(self,"$clone",(function(){return this.$new_matrix($send(this.rows,"map",[],"dup".$to_proc()),this.$column_count())}),0),$def(self,"$hash",(function(){return this.rows.$hash()}),0),$def(self,"$*",(function(m){var $ret_or_1,rows=nil;return $eqeqeq($$("Numeric"),$ret_or_1=m)?(rows=$send(this.rows,"collect",[],(function(row){return null==row&&(row=nil),$send(row,"collect",[],(function(e){return null==e&&(e=nil),$rb_times(e,m)}),1)}),1),this.$new_matrix(rows,this.$column_count())):$eqeqeq($$("Vector"),$ret_or_1)?(m=this.$class().$column_vector(m),$rb_times(this,m).$column(0)):$eqeqeq($$("Matrix"),$ret_or_1)?($neqeq(this.$column_count(),m.$row_count())&&$$("Matrix").$Raise($$("ErrDimensionMismatch")),rows=$send($$("Array"),"new",[this.$row_count()],(function $$91(i){var self=null==$$91.$$s?this:$$91.$$s;return null==i&&(i=nil),$send($$("Array"),"new",[m.$column_count()],(function $$92(j){var self=null==$$92.$$s?this:$$92.$$s;return null==j&&(j=nil),$send(Opal.Range.$new(0,self.$column_count(),!0),"inject",[0],(function $$93(vij,k){return null==vij&&(vij=nil),null==k&&(k=nil),$rb_plus(vij,$rb_times((null==$$93.$$s?this:$$93.$$s)["$[]"](i,k),m["$[]"](k,j)))}),{$$arity:2,$$s:self})}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:this}),this.$new_matrix(rows,m.$column_count())):this.$apply_through_coercion(m,"*")}),1),$def(self,"$+",(function(m){var $ret_or_1,rows;if($eqeqeq($$("Numeric"),$ret_or_1=m))$$("Matrix").$Raise($$("ErrOperationNotDefined"),"+",this.$class(),m.$class());else if($eqeqeq($$("Vector"),$ret_or_1))m=this.$class().$column_vector(m);else if(!$eqeqeq($$("Matrix"),$ret_or_1))return this.$apply_through_coercion(m,"+");return $eqeq(this.$row_count(),m.$row_count())&&$eqeq(this.$column_count(),m.$column_count())||$$("Matrix").$Raise($$("ErrDimensionMismatch")),rows=$send($$("Array"),"new",[this.$row_count()],(function $$95(i){var self=null==$$95.$$s?this:$$95.$$s;return null==i&&(i=nil),$send($$("Array"),"new",[self.$column_count()],(function $$96(j){return null==j&&(j=nil),$rb_plus((null==$$96.$$s?this:$$96.$$s)["$[]"](i,j),m["$[]"](i,j))}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:this}),this.$new_matrix(rows,this.$column_count())}),1),$def(self,"$-",(function(m){var $ret_or_1,rows;if($eqeqeq($$("Numeric"),$ret_or_1=m))$$("Matrix").$Raise($$("ErrOperationNotDefined"),"-",this.$class(),m.$class());else if($eqeqeq($$("Vector"),$ret_or_1))m=this.$class().$column_vector(m);else if(!$eqeqeq($$("Matrix"),$ret_or_1))return this.$apply_through_coercion(m,"-");return $eqeq(this.$row_count(),m.$row_count())&&$eqeq(this.$column_count(),m.$column_count())||$$("Matrix").$Raise($$("ErrDimensionMismatch")),rows=$send($$("Array"),"new",[this.$row_count()],(function $$98(i){var self=null==$$98.$$s?this:$$98.$$s;return null==i&&(i=nil),$send($$("Array"),"new",[self.$column_count()],(function $$99(j){return null==j&&(j=nil),$rb_minus((null==$$99.$$s?this:$$99.$$s)["$[]"](i,j),m["$[]"](i,j))}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:this}),this.$new_matrix(rows,this.$column_count())}),1),$def(self,"$/",(function(other){var $ret_or_1,rows=nil;return $eqeqeq($$("Numeric"),$ret_or_1=other)?(rows=$send(this.rows,"collect",[],(function(row){return null==row&&(row=nil),$send(row,"collect",[],(function(e){return null==e&&(e=nil),$rb_divide(e,other)}),1)}),1),this.$new_matrix(rows,this.$column_count())):$eqeqeq($$("Matrix"),$ret_or_1)?$rb_times(this,other.$inverse()):this.$apply_through_coercion(other,"/")}),1),$def(self,"$hadamard_product",(function(m){return $send(this,"combine",[m],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),$rb_times(a,b)}),2)}),1),self.$alias_method("entrywise_product","hadamard_product"),$def(self,"$inverse",(function(){return $truthy(this["$square?"]())||$$("Matrix").$Raise($$("ErrDimensionMismatch")),this.$class().$I(this.$row_count()).$send("inverse_from",this)}),0),$alias(self,"inv","inverse"),$def(self,"$inverse_from",(function(src){var last,a=nil;return last=$rb_minus(this.$row_count(),1),a=src.$to_a(),$send(0,"upto",[last],(function $$104(k){var $a,self=null==$$104.$$s?this:$$104.$$s,i=nil,akk=nil;return null==self.rows&&(self.rows=nil),null==k&&(k=nil),i=k,akk=a["$[]"](k)["$[]"](k).$abs(),$send($rb_plus(k,1),"upto",[last],(function(j){var v;return null==j&&(j=nil),v=a["$[]"](j)["$[]"](k).$abs(),$truthy($rb_gt(v,akk))?(i=j,akk=v):nil}),1),$eqeq(akk,0)&&$$("Matrix").$Raise($$("ErrNotRegular")),$neqeq(i,k)&&($a=[a["$[]"](k),a["$[]"](i)],a["$[]="](i,$a[0]),a["$[]="](k,$a[1]),$a=[self.rows["$[]"](k),self.rows["$[]"](i)],self.rows["$[]="](i,$a[0]),self.rows["$[]="](k,$a[1])),akk=a["$[]"](k)["$[]"](k),$send(0,"upto",[last],(function $$106(ii){var q,self=null==$$106.$$s?this:$$106.$$s,$writer=nil;return null==ii&&(ii=nil),$eqeq(ii,k)?nil:(q=a["$[]"](ii)["$[]"](k).$quo(akk),$writer=[k,0],$send(a["$[]"](ii),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$send($rb_plus(k,1),"upto",[last],(function(j){var $binary_op_recvr_tmp_1=nil;return null==j&&(j=nil),$binary_op_recvr_tmp_1=a["$[]"](ii),$writer=[j,$rb_minus($binary_op_recvr_tmp_1["$[]"](j),$rb_times(a["$[]"](k)["$[]"](j),q))],$send($binary_op_recvr_tmp_1,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$send(0,"upto",[last],(function $$108(j){var self=null==$$108.$$s?this:$$108.$$s,$binary_op_recvr_tmp_2=nil;return null==self.rows&&(self.rows=nil),null==j&&(j=nil),$binary_op_recvr_tmp_2=self.rows["$[]"](ii),$writer=[j,$rb_minus($binary_op_recvr_tmp_2["$[]"](j),$rb_times(self.rows["$[]"](k)["$[]"](j),q))],$send($binary_op_recvr_tmp_2,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self}))}),{$$arity:1,$$s:self}),$send($rb_plus(k,1),"upto",[last],(function(j){var $writer;return null==j&&(j=nil),$writer=[j,a["$[]"](k)["$[]"](j).$quo(akk)],$send(a["$[]"](k),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$send(0,"upto",[last],(function $$110(j){var $writer,self=null==$$110.$$s?this:$$110.$$s;return null==self.rows&&(self.rows=nil),null==j&&(j=nil),$writer=[j,self.rows["$[]"](k)["$[]"](j).$quo(akk)],$send(self.rows["$[]"](k),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:this}),this}),1),self.$private("inverse_from"),$def(self,"$**",(function(other){try{var $a,$b,$ret_or_1,x=nil,z=nil,v=nil,d=nil,v_inv=nil;if($eqeqeq($$("Integer"),$ret_or_1=other)){if(x=this,$truthy($rb_le(other,0))){if(x=this.$inverse(),$eqeq(other,0))return this.$class().$identity(this.$column_count());other=other["$-@"]()}return z=nil,$send(this,"loop",[],(function(){return $eqeq(other["$[]"](0),1)&&(z=$truthy(z)?$rb_times(z,x):x),$truthy((other=other["$>>"](1))["$zero?"]())&&Opal.ret(z),x=$rb_times(x,x)}),0)}return $eqeqeq($$("Numeric"),$ret_or_1)?($b=this.$eigensystem(),v=null==($a=$to_ary($b))[0]?nil:$a[0],d=null==$a[1]?nil:$a[1],v_inv=null==$a[2]?nil:$a[2],$rb_times($rb_times(v,$send(this.$class(),"diagonal",$to_a($send(d.$each("diagonal"),"map",[],(function(e){return null==e&&(e=nil),e["$**"](other)}),1)))),v_inv)):$$("Matrix").$Raise($$("ErrOperationNotDefined"),"**",this.$class(),other.$class())}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),1),$def(self,"$+@",(function(){return this}),0),$def(self,"$-@",(function(){return $send(this,"collect",[],(function(e){return null==e&&(e=nil),e["$-@"]()}),1)}),0),$def(self,"$determinant",(function(){var $a,$ret_or_1,m=nil,m0=nil,m1=nil,m2=nil,m3=nil;return $truthy(this["$square?"]())||$$("Matrix").$Raise($$("ErrDimensionMismatch")),m=this.rows,$eqeqeq(0,$ret_or_1=this.$row_count())?1:$eqeqeq(1,$ret_or_1)?m["$[]"](0)["$[]"](0)["$+@"]():$eqeqeq(2,$ret_or_1)?$rb_minus($rb_times(m["$[]"](0)["$[]"](0)["$+@"](),m["$[]"](1)["$[]"](1)),$rb_times(m["$[]"](0)["$[]"](1),m["$[]"](1)["$[]"](0))):$eqeqeq(3,$ret_or_1)?(m0=null==($a=$to_ary(m))[0]?nil:$a[0],m1=null==$a[1]?nil:$a[1],m2=null==$a[2]?nil:$a[2],$rb_minus($rb_plus($rb_plus($rb_minus($rb_minus($rb_times($rb_times(m0["$[]"](0)["$+@"](),m1["$[]"](1)),m2["$[]"](2)),$rb_times($rb_times(m0["$[]"](0),m1["$[]"](2)),m2["$[]"](1))),$rb_times($rb_times(m0["$[]"](1),m1["$[]"](0)),m2["$[]"](2))),$rb_times($rb_times(m0["$[]"](1),m1["$[]"](2)),m2["$[]"](0))),$rb_times($rb_times(m0["$[]"](2),m1["$[]"](0)),m2["$[]"](1))),$rb_times($rb_times(m0["$[]"](2),m1["$[]"](1)),m2["$[]"](0)))):$eqeqeq(4,$ret_or_1)?(m0=null==($a=$to_ary(m))[0]?nil:$a[0],m1=null==$a[1]?nil:$a[1],m2=null==$a[2]?nil:$a[2],m3=null==$a[3]?nil:$a[3],$rb_plus($rb_minus($rb_minus($rb_plus($rb_plus($rb_minus($rb_minus($rb_plus($rb_plus($rb_minus($rb_minus($rb_plus($rb_plus($rb_minus($rb_minus($rb_plus($rb_plus($rb_minus($rb_minus($rb_plus($rb_plus($rb_minus($rb_minus($rb_times($rb_times($rb_times(m0["$[]"](0)["$+@"](),m1["$[]"](1)),m2["$[]"](2)),m3["$[]"](3)),$rb_times($rb_times($rb_times(m0["$[]"](0),m1["$[]"](1)),m2["$[]"](3)),m3["$[]"](2))),$rb_times($rb_times($rb_times(m0["$[]"](0),m1["$[]"](2)),m2["$[]"](1)),m3["$[]"](3))),$rb_times($rb_times($rb_times(m0["$[]"](0),m1["$[]"](2)),m2["$[]"](3)),m3["$[]"](1))),$rb_times($rb_times($rb_times(m0["$[]"](0),m1["$[]"](3)),m2["$[]"](1)),m3["$[]"](2))),$rb_times($rb_times($rb_times(m0["$[]"](0),m1["$[]"](3)),m2["$[]"](2)),m3["$[]"](1))),$rb_times($rb_times($rb_times(m0["$[]"](1),m1["$[]"](0)),m2["$[]"](2)),m3["$[]"](3))),$rb_times($rb_times($rb_times(m0["$[]"](1),m1["$[]"](0)),m2["$[]"](3)),m3["$[]"](2))),$rb_times($rb_times($rb_times(m0["$[]"](1),m1["$[]"](2)),m2["$[]"](0)),m3["$[]"](3))),$rb_times($rb_times($rb_times(m0["$[]"](1),m1["$[]"](2)),m2["$[]"](3)),m3["$[]"](0))),$rb_times($rb_times($rb_times(m0["$[]"](1),m1["$[]"](3)),m2["$[]"](0)),m3["$[]"](2))),$rb_times($rb_times($rb_times(m0["$[]"](1),m1["$[]"](3)),m2["$[]"](2)),m3["$[]"](0))),$rb_times($rb_times($rb_times(m0["$[]"](2),m1["$[]"](0)),m2["$[]"](1)),m3["$[]"](3))),$rb_times($rb_times($rb_times(m0["$[]"](2),m1["$[]"](0)),m2["$[]"](3)),m3["$[]"](1))),$rb_times($rb_times($rb_times(m0["$[]"](2),m1["$[]"](1)),m2["$[]"](0)),m3["$[]"](3))),$rb_times($rb_times($rb_times(m0["$[]"](2),m1["$[]"](1)),m2["$[]"](3)),m3["$[]"](0))),$rb_times($rb_times($rb_times(m0["$[]"](2),m1["$[]"](3)),m2["$[]"](0)),m3["$[]"](1))),$rb_times($rb_times($rb_times(m0["$[]"](2),m1["$[]"](3)),m2["$[]"](1)),m3["$[]"](0))),$rb_times($rb_times($rb_times(m0["$[]"](3),m1["$[]"](0)),m2["$[]"](1)),m3["$[]"](2))),$rb_times($rb_times($rb_times(m0["$[]"](3),m1["$[]"](0)),m2["$[]"](2)),m3["$[]"](1))),$rb_times($rb_times($rb_times(m0["$[]"](3),m1["$[]"](1)),m2["$[]"](0)),m3["$[]"](2))),$rb_times($rb_times($rb_times(m0["$[]"](3),m1["$[]"](1)),m2["$[]"](2)),m3["$[]"](0))),$rb_times($rb_times($rb_times(m0["$[]"](3),m1["$[]"](2)),m2["$[]"](0)),m3["$[]"](1))),$rb_times($rb_times($rb_times(m0["$[]"](3),m1["$[]"](2)),m2["$[]"](1)),m3["$[]"](0)))):this.$determinant_bareiss()}),0),self.$alias_method("det","determinant"),$def(self,"$determinant_bareiss",(function(){try{var size,last,no_pivot,a=nil,sign=nil,pivot=nil;return size=this.$row_count(),last=$rb_minus(size,1),a=this.$to_a(),no_pivot=$send($$("Proc"),"new",[],(function(){Opal.ret(0)}),0),sign=1,pivot=1,$send(size,"times",[],(function(k){var $a,previous_pivot,switch$=nil;return null==k&&(k=nil),previous_pivot=pivot,$eqeq(pivot=a["$[]"](k)["$[]"](k),0)&&(switch$=$send(Opal.Range.$new($rb_plus(k,1),size,!0),"find",[no_pivot],(function(row){return null==row&&(row=nil),a["$[]"](row)["$[]"](k)["$!="](0)}),1),$a=[a["$[]"](k),a["$[]"](switch$)],a["$[]="](switch$,$a[0]),a["$[]="](k,$a[1]),pivot=a["$[]"](k)["$[]"](k),sign=sign["$-@"]()),$send($rb_plus(k,1),"upto",[last],(function(i){var ai=nil;return null==i&&(i=nil),ai=a["$[]"](i),$send($rb_plus(k,1),"upto",[last],(function(j){var $writer;return null==j&&(j=nil),$writer=[j,$rb_divide($rb_minus($rb_times(pivot,ai["$[]"](j)),$rb_times(ai["$[]"](k),a["$[]"](k)["$[]"](j))),previous_pivot)],$send(ai,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1)}),1)}),1),$rb_times(sign,pivot)}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),0),self.$private("determinant_bareiss"),$def(self,"$determinant_e",(function(){return this.$warn("Matrix#determinant_e is deprecated; use #determinant",$hash2(["uplevel"],{uplevel:1})),this.$determinant()}),0),$alias(self,"det_e","determinant_e"),$def(self,"$hstack",(function($a){var matrices,self=this;return matrices=Opal.slice.call(arguments),$send(self.$class(),"hstack",[self].concat($to_a(matrices)))}),-1),$def(self,"$rank",(function(){var last_column,last_row,a=nil,pivot_row=nil,previous_pivot=nil;return a=this.$to_a(),last_column=$rb_minus(this.$column_count(),1),last_row=$rb_minus(this.$row_count(),1),pivot_row=0,previous_pivot=1,$send(0,"upto",[last_column],(function(k){var $a,switch_row,pivot=nil;return null==k&&(k=nil),switch_row=$send(Opal.Range.$new(pivot_row,last_row,!1),"find",[],(function(row){return null==row&&(row=nil),a["$[]"](row)["$[]"](k)["$!="](0)}),1),$truthy(switch_row)?($eqeq(pivot_row,switch_row)||($a=[a["$[]"](pivot_row),a["$[]"](switch_row)],a["$[]="](switch_row,$a[0]),a["$[]="](pivot_row,$a[1])),pivot=a["$[]"](pivot_row)["$[]"](k),$send($rb_plus(pivot_row,1),"upto",[last_row],(function(i){var ai=nil;return null==i&&(i=nil),ai=a["$[]"](i),$send($rb_plus(k,1),"upto",[last_column],(function(j){var $writer;return null==j&&(j=nil),$writer=[j,$rb_divide($rb_minus($rb_times(pivot,ai["$[]"](j)),$rb_times(ai["$[]"](k),a["$[]"](pivot_row)["$[]"](j))),previous_pivot)],$send(ai,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1)}),1),pivot_row=$rb_plus(pivot_row,1),previous_pivot=pivot):nil}),1),pivot_row}),0),$def(self,"$rank_e",(function(){return this.$warn("Matrix#rank_e is deprecated; use #rank",$hash2(["uplevel"],{uplevel:1})),this.$rank()}),0),$def(self,"$round",(function(ndigits){return null==ndigits&&(ndigits=0),$send(this,"map",[],(function(e){return null==e&&(e=nil),e.$round(ndigits)}),1)}),-1),$def(self,"$trace",(function(){return $truthy(this["$square?"]())||$$("Matrix").$Raise($$("ErrDimensionMismatch")),$send(Opal.Range.$new(0,this.$column_count(),!0),"inject",[0],(function $$127(tr,i){var self=null==$$127.$$s?this:$$127.$$s;return null==self.rows&&(self.rows=nil),null==tr&&(tr=nil),null==i&&(i=nil),$rb_plus(tr,self.rows["$[]"](i)["$[]"](i))}),{$$arity:2,$$s:this})}),0),$alias(self,"tr","trace"),$def(self,"$transpose",(function(){return $truthy(this.$row_count()["$zero?"]())?this.$class().$empty(this.$column_count(),0):this.$new_matrix(this.rows.$transpose(),this.$row_count())}),0),$alias(self,"t","transpose"),$def(self,"$vstack",(function($a){var matrices,self=this;return matrices=Opal.slice.call(arguments),$send(self.$class(),"vstack",[self].concat($to_a(matrices)))}),-1),$def(self,"$eigensystem",(function(){return $$("EigenvalueDecomposition").$new(this)}),0),$alias(self,"eigen","eigensystem"),$def(self,"$lup",(function(){return $$("LUPDecomposition").$new(this)}),0),$alias(self,"lup_decomposition","lup"),$def(self,"$conjugate",(function(){return $send(this,"collect",[],"conjugate".$to_proc())}),0),$alias(self,"conj","conjugate"),$def(self,"$imaginary",(function(){return $send(this,"collect",[],"imaginary".$to_proc())}),0),$alias(self,"imag","imaginary"),$def(self,"$real",(function(){return $send(this,"collect",[],"real".$to_proc())}),0),$def(self,"$rect",(function(){return[this.$real(),this.$imag()]}),0),$alias(self,"rectangular","rect"),$def(self,"$coerce",(function(other){return $eqeqeq($$("Numeric"),other)?[$$("Scalar").$new(other),this]:this.$raise($$("TypeError"),this.$class()+" can't be coerced into "+other.$class())}),1),$def(self,"$row_vectors",(function(){return $send($$("Array"),"new",[this.$row_count()],(function $$128(i){return null==i&&(i=nil),(null==$$128.$$s?this:$$128.$$s).$row(i)}),{$$arity:1,$$s:this})}),0),$def(self,"$column_vectors",(function(){return $send($$("Array"),"new",[this.$column_count()],(function $$129(i){return null==i&&(i=nil),(null==$$129.$$s?this:$$129.$$s).$column(i)}),{$$arity:1,$$s:this})}),0),$def(self,"$to_matrix",(function(){return this}),0),$def(self,"$to_a",(function(){return $send(this.rows,"collect",[],"dup".$to_proc())}),0),$def(self,"$elements_to_f",(function(){return this.$warn("Matrix#elements_to_f is deprecated, use map(&:to_f)",$hash2(["uplevel"],{uplevel:1})),$send(this,"map",[],"to_f".$to_proc())}),0),$def(self,"$elements_to_i",(function(){return this.$warn("Matrix#elements_to_i is deprecated, use map(&:to_i)",$hash2(["uplevel"],{uplevel:1})),$send(this,"map",[],"to_i".$to_proc())}),0),$def(self,"$elements_to_r",(function(){return this.$warn("Matrix#elements_to_r is deprecated, use map(&:to_r)",$hash2(["uplevel"],{uplevel:1})),$send(this,"map",[],"to_r".$to_proc())}),0),$def(self,"$to_s",(function(){return $truthy(this["$empty?"]())?this.$class()+".empty("+this.$row_count()+", "+this.$column_count()+")":$rb_plus($rb_plus(this.$class()+"[",$send(this.rows,"collect",[],(function(row){return null==row&&(row=nil),$rb_plus($rb_plus("[",$send(row,"collect",[],(function(e){return null==e&&(e=nil),e.$to_s()}),1).$join(", ")),"]")}),1).$join(", ")),"]")}),0),$def(self,"$inspect",(function(){return $truthy(this["$empty?"]())?this.$class()+".empty("+this.$row_count()+", "+this.$column_count()+")":""+this.$class()+this.rows.$inspect()}),0),function($base,$parent_nesting){var self=$module($base,"ConversionHelper"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$convert_to_array",(function(obj,copy){var $ret_or_1,converted=nil,e=nil;if(null==copy&&(copy=!1),$eqeqeq($$("Array"),$ret_or_1=obj))return $truthy(copy)?obj.$dup():obj;if($eqeqeq($$("Vector"),$ret_or_1))return obj.$to_a();try{converted=obj.$to_ary()}catch($err){if(!Opal.rescue($err,[$$("Exception")]))throw $err;e=$err;try{this.$raise($$("TypeError"),"can't convert "+obj.$class()+" into an Array ("+e.$message()+")")}finally{Opal.pop_exception()}}return $truthy(converted["$is_a?"]($$("Array")))||this.$raise($$("TypeError"),obj.$class()+"#to_ary should return an Array"),converted}),-2),self.$private("convert_to_array")}($nesting[0],$nesting),self.$extend($$("ConversionHelper")),function($base,$parent_nesting){var self=$module($base,"CoercionHelper"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$apply_through_coercion",(function(obj,oper){var coercion=nil;try{return coercion=obj.$coerce(this),$truthy(coercion["$is_a?"]($$("Array")))&&$eqeq(coercion.$length(),2)||this.$raise($$("TypeError")),coercion["$[]"](0).$public_send(oper,coercion["$[]"](1))}catch($err){if(!Opal.rescue($err,[$$("StandardError")]))throw $err;try{return this.$raise($$("TypeError"),obj.$inspect()+" can't be coerced into "+this.$class())}finally{Opal.pop_exception()}}}),2),self.$private("apply_through_coercion"),$defs(self,"$coerce_to",(function(obj,cls,meth){var ret=nil,e=nil;if($truthy(obj["$kind_of?"](cls)))return obj;$truthy(obj["$respond_to?"](meth))||this.$raise($$("TypeError"),"Expected a "+cls+" but got a "+obj.$class());try{ret=obj.$__send__(meth)}catch($err){if(!Opal.rescue($err,[$$("Exception")]))throw $err;e=$err;try{this.$raise($$("TypeError"),"Coercion error: "+obj.$inspect()+"."+meth+" => "+cls+" failed:\n("+e.$message()+")")}finally{Opal.pop_exception()}}return $truthy(ret["$kind_of?"](cls))||this.$raise($$("TypeError"),"Coercion error: obj."+meth+" did NOT return a "+cls+" (was "+ret.$class()+")"),ret}),3),$defs(self,"$coerce_to_int",(function(obj){return this.$coerce_to(obj,$$("Integer"),"to_int")}),1),$defs(self,"$coerce_to_matrix",(function(obj){return this.$coerce_to(obj,$$("Matrix"),"to_matrix")}),1)}($nesting[0],$nesting),self.$include($$("CoercionHelper")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"Scalar"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.value=nil,self.$include($$("ExceptionForMatrix")),self.$include($$("CoercionHelper")),$def(self,"$initialize",(function(value){return this.value=value}),1),$def(self,"$+",(function(other){var $ret_or_1;return $eqeqeq($$("Numeric"),$ret_or_1=other)?$$("Scalar").$new($rb_plus(this.value,other)):$eqeqeq($$("Vector"),$ret_or_1)||$eqeqeq($$("Matrix"),$ret_or_1)?$$("Scalar").$Raise($$("ErrOperationNotDefined"),"+",this.value.$class(),other.$class()):this.$apply_through_coercion(other,"+")}),1),$def(self,"$-",(function(other){var $ret_or_1;return $eqeqeq($$("Numeric"),$ret_or_1=other)?$$("Scalar").$new($rb_minus(this.value,other)):$eqeqeq($$("Vector"),$ret_or_1)||$eqeqeq($$("Matrix"),$ret_or_1)?$$("Scalar").$Raise($$("ErrOperationNotDefined"),"-",this.value.$class(),other.$class()):this.$apply_through_coercion(other,"-")}),1),$def(self,"$*",(function(other){var $ret_or_1;return $eqeqeq($$("Numeric"),$ret_or_1=other)?$$("Scalar").$new($rb_times(this.value,other)):$eqeqeq($$("Vector"),$ret_or_1)||$eqeqeq($$("Matrix"),$ret_or_1)?$send(other,"collect",[],(function $$135(e){var self=null==$$135.$$s?this:$$135.$$s;return null==self.value&&(self.value=nil),null==e&&(e=nil),$rb_times(self.value,e)}),{$$arity:1,$$s:this}):this.$apply_through_coercion(other,"*")}),1),$def(self,"$/",(function(other){var $ret_or_1;return $eqeqeq($$("Numeric"),$ret_or_1=other)?$$("Scalar").$new($rb_divide(this.value,other)):$eqeqeq($$("Vector"),$ret_or_1)?$$("Scalar").$Raise($$("ErrOperationNotDefined"),"/",this.value.$class(),other.$class()):$eqeqeq($$("Matrix"),$ret_or_1)?$rb_times(this,other.$inverse()):this.$apply_through_coercion(other,"/")}),1),$def(self,"$**",(function(other){var $ret_or_1;return $eqeqeq($$("Numeric"),$ret_or_1=other)?$$("Scalar").$new(this.value["$**"](other)):$eqeqeq($$("Vector"),$ret_or_1)?$$("Scalar").$Raise($$("ErrOperationNotDefined"),"**",this.value.$class(),other.$class()):$eqeqeq($$("Matrix"),$ret_or_1)?$$("Scalar").$Raise($$("ErrOperationNotImplemented"),"**",this.value.$class(),other.$class()):this.$apply_through_coercion(other,"**")}),1)}($nesting[0],$$("Numeric"),$nesting)}($nesting[0],0,$nesting),function($base,$super,$parent_nesting){var self=$klass($base,null,"Vector"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.elements=nil,self.$include($$("ExceptionForMatrix")),self.$include($$("Enumerable")),self.$include($$$($$("Matrix"),"CoercionHelper")),self.$extend($$$($$("Matrix"),"ConversionHelper")),self.$private_class_method("new"),self.$attr_reader("elements"),self.$protected("elements"),$defs($$("Vector"),"$[]",(function($a){var array,self=this;return array=Opal.slice.call(arguments),self.$new(self.$convert_to_array(array,!1))}),-1),$defs($$("Vector"),"$elements",(function(array,copy){return null==copy&&(copy=!0),this.$new(this.$convert_to_array(array,copy))}),-2),$defs($$("Vector"),"$basis",(function($kwargs){var size,index,array,$writer;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");if(!Opal.hasOwnProperty.call($kwargs.$$smap,"size"))throw Opal.ArgumentError.$new("missing keyword: size");if(size=$kwargs.$$smap.size,!Opal.hasOwnProperty.call($kwargs.$$smap,"index"))throw Opal.ArgumentError.$new("missing keyword: index");return index=$kwargs.$$smap.index,$truthy($rb_lt(size,1))&&this.$raise($$("ArgumentError"),"invalid size ("+size+" for 1..)"),$rb_le(0,index)&&$truthy($rb_lt(index,size))||this.$raise($$("ArgumentError"),"invalid index ("+index+" for 0..."+size+")"),array=$$("Array").$new(size,0),$send(array,"[]=",$to_a($writer=[index,1])),$rb_minus($writer.length,1),this.$new(this.$convert_to_array(array,!1))}),1),$defs($$("Vector"),"$zero",(function(size){var array;return $truthy($rb_lt(size,0))&&this.$raise($$("ArgumentError"),"invalid size ("+size+" for 0..)"),array=$$("Array").$new(size,0),this.$new(this.$convert_to_array(array,!1))}),1),$def(self,"$initialize",(function(array){return this.elements=array}),1),$def(self,"$[]",(function(i){return this.elements["$[]"](i)}),1),$alias(self,"element","[]"),$alias(self,"component","[]"),$def(self,"$[]=",(function(i,v){var $writer;return $writer=[i,v],$send(this.elements,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),2),$alias(self,"set_element","[]="),$alias(self,"set_component","[]="),self.$private("[]=","set_element","set_component"),$def(self,"$round",(function(ndigits){return null==ndigits&&(ndigits=0),$send(this,"map",[],(function(e){return null==e&&(e=nil),e.$round(ndigits)}),1)}),-1),$def(self,"$size",(function(){return this.elements.$size()}),0),$def(self,"$each",(function $$each(){var block=$$each.$$p||nil;return delete $$each.$$p,block===nil?this.$to_enum("each"):($send(this.elements,"each",[],block.$to_proc()),this)}),0),$def(self,"$each2",(function $$each2(v){var $yield=$$each2.$$p||nil;return delete $$each2.$$p,$truthy(v["$kind_of?"]($$("Integer")))&&this.$raise($$("TypeError"),"Integer is not like Vector"),$neqeq(this.$size(),v.$size())&&$$("Vector").$Raise($$("ErrDimensionMismatch")),$yield===nil?this.$to_enum("each2",v):($send(this.$size(),"times",[],(function $$142(i){var self=null==$$142.$$s?this:$$142.$$s;return null==self.elements&&(self.elements=nil),null==i&&(i=nil),Opal.yieldX($yield,[self.elements["$[]"](i),v["$[]"](i)])}),{$$arity:1,$$s:this}),this)}),1),$def(self,"$collect2",(function $$collect2(v){var $yield=$$collect2.$$p||nil;return delete $$collect2.$$p,$truthy(v["$kind_of?"]($$("Integer")))&&this.$raise($$("TypeError"),"Integer is not like Vector"),$neqeq(this.$size(),v.$size())&&$$("Vector").$Raise($$("ErrDimensionMismatch")),$yield===nil?this.$to_enum("collect2",v):$send($$("Array"),"new",[this.$size()],(function $$143(i){var self=null==$$143.$$s?this:$$143.$$s;return null==self.elements&&(self.elements=nil),null==i&&(i=nil),Opal.yieldX($yield,[self.elements["$[]"](i),v["$[]"](i)])}),{$$arity:1,$$s:this})}),1),$defs($$("Vector"),"$independent?",(function($a){var $post_args,vs,self=this;return $post_args=Opal.slice.call(arguments),$send(vs=$post_args,"each",[],(function $$145(v){var self=null==$$145.$$s?this:$$145.$$s;return null==v&&(v=nil),$truthy(v["$is_a?"]($$("Vector")))||self.$raise($$("TypeError"),"expected Vector, got "+v.$class()),$eqeq(v.$size(),vs.$first().$size())?nil:$$("Vector").$Raise($$("ErrDimensionMismatch"))}),{$$arity:1,$$s:self}),!$truthy($rb_gt(vs.$count(),vs.$first().$size()))&&$send($$("Matrix"),"[]",$to_a(vs)).$rank()["$eql?"](vs.$count())}),-1),$def(self,"$independent?",(function($a){var vs,self=this;return vs=Opal.slice.call(arguments),$send(self.$class(),"independent?",[self].concat($to_a(vs)))}),-1),$def(self,"$zero?",(function(){return $send(this,"all?",[],"zero?".$to_proc())}),0),$def(self,"$==",(function(other){return!!$eqeqeq($$("Vector"),other)&&this.elements["$=="](other.$elements())}),1),$def(self,"$eql?",(function(other){return!!$eqeqeq($$("Vector"),other)&&this.elements["$eql?"](other.$elements())}),1),$def(self,"$clone",(function(){return this.$class().$elements(this.elements)}),0),$def(self,"$hash",(function(){return this.elements.$hash()}),0),$def(self,"$*",(function(x){var $ret_or_1,els=nil;return $eqeqeq($$("Numeric"),$ret_or_1=x)?(els=$send(this.elements,"collect",[],(function(e){return null==e&&(e=nil),$rb_times(e,x)}),1),this.$class().$elements(els,!1)):$eqeqeq($$("Matrix"),$ret_or_1)?$rb_times($$("Matrix").$column_vector(this),x):$eqeqeq($$("Vector"),$ret_or_1)?$$("Vector").$Raise($$("ErrOperationNotDefined"),"*",this.$class(),x.$class()):this.$apply_through_coercion(x,"*")}),1),$def(self,"$+",(function(v){var $ret_or_1,els=nil;return $eqeqeq($$("Vector"),$ret_or_1=v)?($neqeq(this.$size(),v.$size())&&$$("Vector").$Raise($$("ErrDimensionMismatch")),els=$send(this,"collect2",[v],(function(v1,v2){return null==v1&&(v1=nil),null==v2&&(v2=nil),$rb_plus(v1,v2)}),2),this.$class().$elements(els,!1)):$eqeqeq($$("Matrix"),$ret_or_1)?$rb_plus($$("Matrix").$column_vector(this),v):this.$apply_through_coercion(v,"+")}),1),$def(self,"$-",(function(v){var $ret_or_1,els=nil;return $eqeqeq($$("Vector"),$ret_or_1=v)?($neqeq(this.$size(),v.$size())&&$$("Vector").$Raise($$("ErrDimensionMismatch")),els=$send(this,"collect2",[v],(function(v1,v2){return null==v1&&(v1=nil),null==v2&&(v2=nil),$rb_minus(v1,v2)}),2),this.$class().$elements(els,!1)):$eqeqeq($$("Matrix"),$ret_or_1)?$rb_minus($$("Matrix").$column_vector(this),v):this.$apply_through_coercion(v,"-")}),1),$def(self,"$/",(function(x){var $ret_or_1,els=nil;return $eqeqeq($$("Numeric"),$ret_or_1=x)?(els=$send(this.elements,"collect",[],(function(e){return null==e&&(e=nil),$rb_divide(e,x)}),1),this.$class().$elements(els,!1)):$eqeqeq($$("Matrix"),$ret_or_1)||$eqeqeq($$("Vector"),$ret_or_1)?$$("Vector").$Raise($$("ErrOperationNotDefined"),"/",this.$class(),x.$class()):this.$apply_through_coercion(x,"/")}),1),$def(self,"$+@",(function(){return this}),0),$def(self,"$-@",(function(){return $send(this,"collect",[],(function(e){return null==e&&(e=nil),e["$-@"]()}),1)}),0),$def(self,"$inner_product",(function(v){var p=nil;return $neqeq(this.$size(),v.$size())&&$$("Vector").$Raise($$("ErrDimensionMismatch")),p=0,$send(this,"each2",[v],(function(v1,v2){return null==v1&&(v1=nil),null==v2&&(v2=nil),p=$rb_plus(p,$rb_times(v1,v2.$conj()))}),2),p}),1),self.$alias_method("dot","inner_product"),$def(self,"$cross_product",(function($a){var vs,self=this,$ret_or_1=nil,v=nil,rows=nil;return vs=Opal.slice.call(arguments),$truthy($rb_ge(self.$size(),2))||self.$raise($$("ErrOperationNotDefined"),"cross product is not defined on vectors of dimension "+self.$size()),$eqeq(vs.$size(),$rb_minus(self.$size(),2))||self.$raise($$("ArgumentError"),"wrong number of arguments ("+vs.$size()+" for "+$rb_minus(self.$size(),2)+")"),$send(vs,"each",[],(function $$162(v){var self=null==$$162.$$s?this:$$162.$$s;return null==v&&(v=nil),$truthy(v["$is_a?"]($$("Vector")))||self.$raise($$("TypeError"),"expected Vector, got "+v.$class()),$eqeq(v.$size(),self.$size())?nil:$$("Vector").$Raise($$("ErrDimensionMismatch"))}),{$$arity:1,$$s:self}),$eqeqeq(2,$ret_or_1=self.$size())?$$("Vector")["$[]"](self.elements["$[]"](1)["$-@"](),self.elements["$[]"](0)):$eqeqeq(3,$ret_or_1)?(v=vs["$[]"](0),$$("Vector")["$[]"]($rb_minus($rb_times(v["$[]"](2),self.elements["$[]"](1)),$rb_times(v["$[]"](1),self.elements["$[]"](2))),$rb_minus($rb_times(v["$[]"](0),self.elements["$[]"](2)),$rb_times(v["$[]"](2),self.elements["$[]"](0))),$rb_minus($rb_times(v["$[]"](1),self.elements["$[]"](0)),$rb_times(v["$[]"](0),self.elements["$[]"](1))))):(rows=[self].concat($to_a(vs)).concat([$send($$("Array"),"new",[self.$size()],(function $$163(i){var self=null==$$163.$$s?this:$$163.$$s;return null==i&&(i=nil),$$("Vector").$basis($hash2(["size","index"],{size:self.$size(),index:i}))}),{$$arity:1,$$s:self})]),$$("Matrix").$rows(rows).$laplace_expansion($hash2(["row"],{row:$rb_minus(self.$size(),1)})))}),-1),self.$alias_method("cross","cross_product"),$def(self,"$collect",(function $$collect(){var els,block=$$collect.$$p||nil;return delete $$collect.$$p,block===nil?this.$to_enum("collect"):(els=$send(this.elements,"collect",[],block.$to_proc()),this.$class().$elements(els,!1))}),0),$alias(self,"map","collect"),$def(self,"$magnitude",(function(){return $$("Math").$sqrt($send(this.elements,"inject",[0],(function(v,e){return null==v&&(v=nil),null==e&&(e=nil),$rb_plus(v,e.$abs2())}),2))}),0),$alias(self,"r","magnitude"),$alias(self,"norm","magnitude"),$def(self,"$map2",(function $$map2(v){var els,block=$$map2.$$p||nil;return delete $$map2.$$p,block===nil?this.$to_enum("map2",v):(els=$send(this,"collect2",[v],block.$to_proc()),this.$class().$elements(els,!1))}),1),$klass($nesting[0],$$("StandardError"),"ZeroVectorError"),$def(self,"$normalize",(function(){var n;return n=this.$magnitude(),$eqeq(n,0)&&this.$raise($$("ZeroVectorError"),"Zero vectors can not be normalized"),$rb_divide(this,n)}),0),$def(self,"$angle_with",(function(v){var prod;return $truthy(v["$is_a?"]($$("Vector")))||this.$raise($$("TypeError"),"Expected a Vector, got a "+v.$class()),$neqeq(this.$size(),v.$size())&&$$("Vector").$Raise($$("ErrDimensionMismatch")),prod=$rb_times(this.$magnitude(),v.$magnitude()),$eqeq(prod,0)&&this.$raise($$("ZeroVectorError"),"Can't get angle of zero vector"),$$("Math").$acos($rb_divide(this.$inner_product(v),prod))}),1),$def(self,"$covector",(function(){return $$("Matrix").$row_vector(this)}),0),$def(self,"$to_a",(function(){return this.elements.$dup()}),0),$def(self,"$to_matrix",(function(){return $$("Matrix").$column_vector(this)}),0),$def(self,"$elements_to_f",(function(){return this.$warn("Vector#elements_to_f is deprecated",$hash2(["uplevel"],{uplevel:1})),$send(this,"map",[],"to_f".$to_proc())}),0),$def(self,"$elements_to_i",(function(){return this.$warn("Vector#elements_to_i is deprecated",$hash2(["uplevel"],{uplevel:1})),$send(this,"map",[],"to_i".$to_proc())}),0),$def(self,"$elements_to_r",(function(){return this.$warn("Vector#elements_to_r is deprecated",$hash2(["uplevel"],{uplevel:1})),$send(this,"map",[],"to_r".$to_proc())}),0),$def(self,"$coerce",(function(other){return $eqeqeq($$("Numeric"),other)?[$$$($$("Matrix"),"Scalar").$new(other),this]:this.$raise($$("TypeError"),this.$class()+" can't be coerced into "+other.$class())}),1),$def(self,"$to_s",(function(){return $rb_plus($rb_plus("Vector[",this.elements.$join(", ")),"]")}),0),$def(self,"$inspect",(function(){return $rb_plus("Vector",this.elements.$inspect())}),0)}($nesting[0],0,$nesting)}; diff --git a/opal/1.4.1/matrix.min.js.gz b/opal/1.4.1/matrix.min.js.gz new file mode 100644 index 00000000..8149c1d0 Binary files /dev/null and b/opal/1.4.1/matrix.min.js.gz differ diff --git a/opal/1.4.1/nashorn.js b/opal/1.4.1/nashorn.js new file mode 100644 index 00000000..6d34cb29 --- /dev/null +++ b/opal/1.4.1/nashorn.js @@ -0,0 +1,357 @@ +Opal.modules["nashorn/io"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $send = Opal.send, $gvars = Opal.gvars, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $writer = nil; + if ($gvars.stdout == null) $gvars.stdout = nil; + if ($gvars.stderr == null) $gvars.stderr = nil; + + Opal.add_stubs('write_proc=,-'); + + + $writer = [function(s){print(s)}]; + $send($gvars.stdout, 'write_proc=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [function(s){print(s)}]; + $send($gvars.stderr, 'write_proc=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; +}; + +Opal.modules["corelib/file"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $klass = Opal.klass, $const_set = Opal.const_set, $Opal = Opal.Opal, $regexp = Opal.regexp, $rb_plus = Opal.rb_plus, $def = Opal.def, $Kernel = Opal.Kernel, $eqeq = Opal.eqeq, $rb_lt = Opal.rb_lt, $rb_minus = Opal.rb_minus, $range = Opal.range, $send = Opal.send, $alias = Opal.alias; + + Opal.add_stubs('respond_to?,to_path,coerce_to!,pwd,split,sub,+,unshift,join,home,raise,start_with?,absolute_path,==,<,dirname,-,basename,empty?,rindex,[],length,nil?,gsub,find,=~,map,each_with_index,flatten,reject,to_proc,end_with?'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'File'); + + var $nesting = [self].concat($parent_nesting), windows_root_rx = nil; + + + $const_set($nesting[0], 'Separator', $const_set($nesting[0], 'SEPARATOR', "/")); + $const_set($nesting[0], 'ALT_SEPARATOR', nil); + $const_set($nesting[0], 'PATH_SEPARATOR', ":"); + $const_set($nesting[0], 'FNM_SYSCASE', 0); + windows_root_rx = /^[a-zA-Z]:(?:\\|\/)/; + return (function(self, $parent_nesting) { + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$absolute_path', function $$absolute_path(path, basedir) { + var sep = nil, sep_chars = nil, new_parts = nil, $ret_or_1 = nil, path_abs = nil, basedir_abs = nil, parts = nil, leading_sep = nil, abs = nil, new_path = nil; + + + + if (basedir == null) basedir = nil;; + sep = $$('SEPARATOR'); + sep_chars = $sep_chars(); + new_parts = []; + path = ($truthy(path['$respond_to?']("to_path")) ? (path.$to_path()) : (path)); + path = $Opal['$coerce_to!'](path, $$$('String'), "to_str"); + basedir = ($truthy(($ret_or_1 = basedir)) ? ($ret_or_1) : ($$$('Dir').$pwd())); + path_abs = path.substr(0, sep.length) === sep || windows_root_rx.test(path); + basedir_abs = basedir.substr(0, sep.length) === sep || windows_root_rx.test(basedir); + if ($truthy(path_abs)) { + + parts = path.$split($regexp(["[", sep_chars, "]"])); + leading_sep = windows_root_rx.test(path) ? '' : path.$sub($regexp(["^([", sep_chars, "]+).*$"]), "\\1"); + abs = true; + } else { + + parts = $rb_plus(basedir.$split($regexp(["[", sep_chars, "]"])), path.$split($regexp(["[", sep_chars, "]"]))); + leading_sep = windows_root_rx.test(basedir) ? '' : basedir.$sub($regexp(["^([", sep_chars, "]+).*$"]), "\\1"); + abs = basedir_abs; + }; + + var part; + for (var i = 0, ii = parts.length; i < ii; i++) { + part = parts[i]; + + if ( + (part === nil) || + (part === '' && ((new_parts.length === 0) || abs)) || + (part === '.' && ((new_parts.length === 0) || abs)) + ) { + continue; + } + if (part === '..') { + new_parts.pop(); + } else { + new_parts.push(part); + } + } + + if (!abs && parts[0] !== '.') { + new_parts.$unshift(".") + } + ; + new_path = new_parts.$join(sep); + if ($truthy(abs)) { + new_path = $rb_plus(leading_sep, new_path) + }; + return new_path; + }, -2); + + $def(self, '$expand_path', function $$expand_path(path, basedir) { + var self = this, sep = nil, sep_chars = nil, home = nil, leading_sep = nil, home_path_regexp = nil; + + + + if (basedir == null) basedir = nil;; + sep = $$('SEPARATOR'); + sep_chars = $sep_chars(); + if ($truthy(path[0] === '~' || (basedir && basedir[0] === '~'))) { + + home = $$('Dir').$home(); + if (!$truthy(home)) { + $Kernel.$raise($$$('ArgumentError'), "couldn't find HOME environment -- expanding `~'") + }; + leading_sep = windows_root_rx.test(home) ? '' : home.$sub($regexp(["^([", sep_chars, "]+).*$"]), "\\1"); + if (!$truthy(home['$start_with?'](leading_sep))) { + $Kernel.$raise($$$('ArgumentError'), "non-absolute home") + }; + home = $rb_plus(home, sep); + home_path_regexp = $regexp(["^\\~(?:", sep, "|$)"]); + path = path.$sub(home_path_regexp, home); + if ($truthy(basedir)) { + basedir = basedir.$sub(home_path_regexp, home) + }; + }; + return self.$absolute_path(path, basedir); + }, -2); + + // Coerce a given path to a path string using #to_path and #to_str + function $coerce_to_path(path) { + if ($truthy((path)['$respond_to?']("to_path"))) { + path = path.$to_path(); + } + + path = $Opal['$coerce_to!'](path, $$$('String'), "to_str"); + + return path; + } + + // Return a RegExp compatible char class + function $sep_chars() { + if ($$('ALT_SEPARATOR') === nil) { + return Opal.escape_regexp($$('SEPARATOR')); + } else { + return Opal.escape_regexp($rb_plus($$('SEPARATOR'), $$('ALT_SEPARATOR'))); + } + } + ; + + $def(self, '$dirname', function $$dirname(path, level) { + var self = this, sep_chars = nil; + + + + if (level == null) level = 1;; + if ($eqeq(level, 0)) { + return path + }; + if ($truthy($rb_lt(level, 0))) { + $Kernel.$raise($$$('ArgumentError'), "level can't be negative") + }; + sep_chars = $sep_chars(); + path = $coerce_to_path(path); + + var absolute = path.match(new RegExp("^[" + (sep_chars) + "]")), out; + + path = path.replace(new RegExp("[" + (sep_chars) + "]+$"), ''); // remove trailing separators + path = path.replace(new RegExp("[^" + (sep_chars) + "]+$"), ''); // remove trailing basename + path = path.replace(new RegExp("[" + (sep_chars) + "]+$"), ''); // remove final trailing separators + + if (path === '') { + out = absolute ? '/' : '.'; + } + else { + out = path; + } + + if (level == 1) { + return out; + } + else { + return self.$dirname(out, $rb_minus(level, 1)) + } + ; + }, -2); + + $def(self, '$basename', function $$basename(name, suffix) { + var sep_chars = nil; + + + + if (suffix == null) suffix = nil;; + sep_chars = $sep_chars(); + name = $coerce_to_path(name); + + if (name.length == 0) { + return name; + } + + if (suffix !== nil) { + suffix = $Opal['$coerce_to!'](suffix, $$$('String'), "to_str") + } else { + suffix = null; + } + + name = name.replace(new RegExp("(.)[" + (sep_chars) + "]*$"), '$1'); + name = name.replace(new RegExp("^(?:.*[" + (sep_chars) + "])?([^" + (sep_chars) + "]+)$"), '$1'); + + if (suffix === ".*") { + name = name.replace(/\.[^\.]+$/, ''); + } else if(suffix !== null) { + suffix = Opal.escape_regexp(suffix); + name = name.replace(new RegExp("" + (suffix) + "$"), ''); + } + + return name; + ; + }, -2); + + $def(self, '$extname', function $$extname(path) { + var self = this, filename = nil, last_dot_idx = nil; + + + path = $coerce_to_path(path); + filename = self.$basename(path); + if ($truthy(filename['$empty?']())) { + return "" + }; + last_dot_idx = filename['$[]']($range(1, -1, false)).$rindex("."); + if (($truthy(last_dot_idx['$nil?']()) || ($eqeq($rb_plus(last_dot_idx, 1), $rb_minus(filename.$length(), 1))))) { + return "" + } else { + return filename['$[]'](Opal.Range.$new($rb_plus(last_dot_idx, 1), -1, false)) + }; + }, 1); + + $def(self, '$exist?', function $exist$ques$1(path) { + + return Opal.modules[path] != null + }, 1); + + $def(self, '$directory?', function $directory$ques$2(path) { + var files = nil, file = nil; + + + files = []; + + for (var key in Opal.modules) { + files.push(key) + } + ; + path = path.$gsub($regexp(["(^.", $$('SEPARATOR'), "+|", $$('SEPARATOR'), "+$)"])); + file = $send(files, 'find', [], function $$3(f){ + + + if (f == null) f = nil;; + return f['$=~']($regexp(["^", path]));}, 1); + return file; + }, 1); + + $def(self, '$join', function $$join($a) { + var $post_args, paths, result = nil; + + + + $post_args = Opal.slice.call(arguments); + + paths = $post_args;; + if ($truthy(paths['$empty?']())) { + return "" + }; + result = ""; + paths = $send(paths.$flatten().$each_with_index(), 'map', [], function $$4(item, index){ + + + if (item == null) item = nil;; + + if (index == null) index = nil;; + if (($eqeq(index, 0) && ($truthy(item['$empty?']())))) { + return $$('SEPARATOR') + } else if (($eqeq(paths.$length(), $rb_plus(index, 1)) && ($truthy(item['$empty?']())))) { + return $$('SEPARATOR') + } else { + return item + };}, 2); + paths = $send(paths, 'reject', [], "empty?".$to_proc()); + $send(paths, 'each_with_index', [], function $$5(item, index){var next_item = nil; + + + + if (item == null) item = nil;; + + if (index == null) index = nil;; + next_item = paths['$[]']($rb_plus(index, 1)); + if ($truthy(next_item['$nil?']())) { + return (result = "" + (result) + (item)) + } else { + + if (($truthy(item['$end_with?']($$('SEPARATOR'))) && ($truthy(next_item['$start_with?']($$('SEPARATOR')))))) { + item = item.$sub($regexp([$$('SEPARATOR'), "+$"]), "") + }; + return (result = (($truthy(item['$end_with?']($$('SEPARATOR'))) || ($truthy(next_item['$start_with?']($$('SEPARATOR'))))) ? ("" + (result) + (item)) : ("" + (result) + (item) + ($$('SEPARATOR'))))); + };}, 2); + return result; + }, -1); + + $def(self, '$split', function $$split(path) { + + return path.$split($$('SEPARATOR')) + }, 1); + $alias(self, "realpath", "expand_path"); + return $alias(self, "exists?", "exist?"); + })(Opal.get_singleton_class(self), $nesting); + })('::', $$$('IO'), $nesting) +}; + +Opal.modules["nashorn/file"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $klass = Opal.klass, $defs = Opal.defs; + + Opal.add_stubs('require'); + + /* global Java */; + self.$require("corelib/file"); + return (function($base, $super) { + var self = $klass($base, $super, 'File'); + + + + $defs(self, '$read', function $$read(path) { + + + var Paths = Java.type('java.nio.file.Paths'); + var Files = Java.type('java.nio.file.Files'); + var lines = Files.readAllLines(Paths.get(path), Java.type('java.nio.charset.StandardCharsets').UTF_8); + var data = []; + lines.forEach(function(line) { data.push(line); }); + return data.join("\n"); + + }, 1); + $defs(self, '$file?', function $File_file$ques$1(path) { + + + var Files = Java.type('java.nio.file.Files'); + return Files.exists(path) && Files.isRegularFile(path); + + }, 1); + return $defs(self, '$readable?', function $File_readable$ques$2(path) { + + + var Files = Java.type('java.nio.file.Files'); + return Files.exists(path) && Files.isReadable(path); + + }, 1); + })($nesting[0], null); +}; + +Opal.modules["nashorn"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module; + + Opal.add_stubs('require'); + + $module($nesting[0], 'Nashorn'); + self.$require("nashorn/io"); + return self.$require("nashorn/file"); +}; diff --git a/opal/1.4.1/nashorn.min.js b/opal/1.4.1/nashorn.min.js new file mode 100644 index 00000000..d8830b56 --- /dev/null +++ b/opal/1.4.1/nashorn.min.js @@ -0,0 +1 @@ +Opal.modules["nashorn/io"]=function(Opal){var nil=Opal.nil,$send=Opal.send,$gvars=Opal.gvars,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$writer=nil;return null==$gvars.stdout&&($gvars.stdout=nil),null==$gvars.stderr&&($gvars.stderr=nil),Opal.add_stubs("write_proc=,-"),$writer=[function(s){print(s)}],$send($gvars.stdout,"write_proc=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[function(s){print(s)}],$send($gvars.stderr,"write_proc=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]},Opal.modules["corelib/file"]=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$truthy=Opal.truthy,$klass=Opal.klass,$const_set=Opal.const_set,$Opal=Opal.Opal,$regexp=Opal.regexp,$rb_plus=Opal.rb_plus,$def=Opal.def,$Kernel=Opal.Kernel,$eqeq=Opal.eqeq,$rb_lt=Opal.rb_lt,$rb_minus=Opal.rb_minus,$range=Opal.range,$send=Opal.send,$alias=Opal.alias;return Opal.add_stubs("respond_to?,to_path,coerce_to!,pwd,split,sub,+,unshift,join,home,raise,start_with?,absolute_path,==,<,dirname,-,basename,empty?,rindex,[],length,nil?,gsub,find,=~,map,each_with_index,flatten,reject,to_proc,end_with?"),function($base,$super,$parent_nesting){var self=$klass("::",$super,"File"),$nesting=[self].concat($parent_nesting),windows_root_rx=nil;return $const_set($nesting[0],"Separator",$const_set($nesting[0],"SEPARATOR","/")),$const_set($nesting[0],"ALT_SEPARATOR",nil),$const_set($nesting[0],"PATH_SEPARATOR",":"),$const_set($nesting[0],"FNM_SYSCASE",0),windows_root_rx=/^[a-zA-Z]:(?:\\|\/)/,function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);function $coerce_to_path(path){return $truthy(path["$respond_to?"]("to_path"))&&(path=path.$to_path()),path=$Opal["$coerce_to!"](path,$$$("String"),"to_str")}function $sep_chars(){return $$("ALT_SEPARATOR")===nil?Opal.escape_regexp($$("SEPARATOR")):Opal.escape_regexp($rb_plus($$("SEPARATOR"),$$("ALT_SEPARATOR")))}return $def(self,"$absolute_path",(function(path,basedir){var sep,sep_chars,$ret_or_1,path_abs,basedir_abs,part,new_parts=nil,parts=nil,leading_sep=nil,abs=nil,new_path=nil;null==basedir&&(basedir=nil),sep=$$("SEPARATOR"),sep_chars=$sep_chars(),new_parts=[],path=$truthy(path["$respond_to?"]("to_path"))?path.$to_path():path,path=$Opal["$coerce_to!"](path,$$$("String"),"to_str"),basedir=$truthy($ret_or_1=basedir)?$ret_or_1:$$$("Dir").$pwd(),path_abs=path.substr(0,sep.length)===sep||windows_root_rx.test(path),basedir_abs=basedir.substr(0,sep.length)===sep||windows_root_rx.test(basedir),$truthy(path_abs)?(parts=path.$split($regexp(["[",sep_chars,"]"])),leading_sep=windows_root_rx.test(path)?"":path.$sub($regexp(["^([",sep_chars,"]+).*$"]),"\\1"),abs=!0):(parts=$rb_plus(basedir.$split($regexp(["[",sep_chars,"]"])),path.$split($regexp(["[",sep_chars,"]"]))),leading_sep=windows_root_rx.test(basedir)?"":basedir.$sub($regexp(["^([",sep_chars,"]+).*$"]),"\\1"),abs=basedir_abs);for(var i=0,ii=parts.length;i=,<<,each_pair,method_defined?,_initialize,name,native_module'); + + (function($base, $parent_nesting) { + var self = $module($base, 'Native'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs(self, '$is_a?', function $Native_is_a$ques$1(object, klass) { + var self = this; + + + try { + return object instanceof self.$try_convert(klass); + } + catch (e) { + return false; + } + + }, 2); + $defs(self, '$try_convert', function $$try_convert(value, default$) { + var self = this; + + + + if (default$ == null) default$ = nil;; + + if (self['$native?'](value)) { + return value; + } + else if (value['$respond_to?']("to_n")) { + return value.$to_n(); + } + else { + return default$; + } + ; + }, -2); + $defs(self, '$convert', function $$convert(value) { + var self = this; + + + if (self['$native?'](value)) { + return value; + } + else if (value['$respond_to?']("to_n")) { + return value.$to_n(); + } + else { + self.$raise($$('ArgumentError'), "" + (value.$inspect()) + " isn't native"); + } + + }, 1); + $defs(self, '$call', function $$call(obj, key, $a) { + var block = $$call.$$p || nil, $post_args, args, self = this; + + delete $$call.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 2); + + args = $post_args;; + + var prop = obj[key]; + + if (prop instanceof Function) { + var converted = new Array(args.length); + + for (var i = 0, l = args.length; i < l; i++) { + var item = args[i], + conv = self.$try_convert(item); + + converted[i] = conv === nil ? item : conv; + } + + if (block !== nil) { + converted.push(block); + } + + return self.$Native(prop.apply(obj, converted)); + } + else { + return self.$Native(prop); + } + ; + }, -3); + $defs(self, '$proc', function $$proc() { + var block = $$proc.$$p || nil, self = this; + + delete $$proc.$$p; + + ; + if (!$truthy(block)) { + self.$raise($$('LocalJumpError'), "no block given") + }; + return $send($Kernel, 'proc', [], function $$2($a){var $post_args, args, self = $$2.$$s == null ? this : $$2.$$s, instance = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + $send(args, 'map!', [], function $$3(arg){var self = $$3.$$s == null ? this : $$3.$$s; + + + + if (arg == null) arg = nil;; + return self.$Native(arg);}, {$$arity: 1, $$s: self}); + instance = self.$Native(this); + + // if global is current scope, run the block in the scope it was defined + if (this === Opal.global) { + return block.apply(self, args); + } + + var self_ = block.$$s; + block.$$s = null; + + try { + return block.apply(instance, args); + } + finally { + block.$$s = self_; + } + ;}, {$$arity: -1, $$s: self}); + }, 0); + (function($base, $parent_nesting) { + var self = $module($base, 'Helpers'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$alias_native', function $$alias_native(new$, $a, $b) { + var $post_args, $kwargs, old, as, $yield = $$alias_native.$$p || nil, self = this; + + delete $$alias_native.$$p; + + + $post_args = Opal.slice.call(arguments, 1); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if ($post_args.length > 0) old = $post_args.shift(); + if (old == null) old = new$;; + + as = $kwargs.$$smap["as"]; + if (as == null) as = nil; + if ($truthy(old['$end_with?']("="))) { + return $send(self, 'define_method', [new$], function $$4(value){var self = $$4.$$s == null ? this : $$4.$$s; + if (self["native"] == null) self["native"] = nil; + + + + if (value == null) value = nil;; + self["native"][old['$[]']($range(0, -2, false))] = $$('Native').$convert(value); + return value;}, {$$arity: 1, $$s: self}) + } else if ($truthy(as)) { + return $send(self, 'define_method', [new$], function $$5($c){var block = $$5.$$p || nil, $post_args, args, self = $$5.$$s == null ? this : $$5.$$s, value = nil; + if (self["native"] == null) self["native"] = nil; + + delete $$5.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + value = $send($$('Native'), 'call', [self["native"], old].concat($to_a(args)), block.$to_proc()); + if ($truthy(value)) { + return as.$new(value.$to_n()) + } else { + return nil + };}, {$$arity: -1, $$s: self}) + } else { + return $send(self, 'define_method', [new$], function $$6($c){var block = $$6.$$p || nil, $post_args, args, self = $$6.$$s == null ? this : $$6.$$s; + if (self["native"] == null) self["native"] = nil; + + delete $$6.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send($$('Native'), 'call', [self["native"], old].concat($to_a(args)), block.$to_proc());}, {$$arity: -1, $$s: self}) + }; + }, -2); + + $def(self, '$native_reader', function $$native_reader($a) { + var $post_args, names, self = this; + + + + $post_args = Opal.slice.call(arguments); + + names = $post_args;; + return $send(names, 'each', [], function $$7(name){var self = $$7.$$s == null ? this : $$7.$$s; + + + + if (name == null) name = nil;; + return $send(self, 'define_method', [name], function $$8(){var self = $$8.$$s == null ? this : $$8.$$s; + if (self["native"] == null) self["native"] = nil; + + return self.$Native(self["native"][name])}, {$$arity: 0, $$s: self});}, {$$arity: 1, $$s: self}); + }, -1); + + $def(self, '$native_writer', function $$native_writer($a) { + var $post_args, names, self = this; + + + + $post_args = Opal.slice.call(arguments); + + names = $post_args;; + return $send(names, 'each', [], function $$9(name){var self = $$9.$$s == null ? this : $$9.$$s; + + + + if (name == null) name = nil;; + return $send(self, 'define_method', ["" + (name) + "="], function $$10(value){var self = $$10.$$s == null ? this : $$10.$$s; + if (self["native"] == null) self["native"] = nil; + + + + if (value == null) value = nil;; + return self.$Native(self["native"][name] = value);}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + }, -1); + return $def(self, '$native_accessor', function $$native_accessor($a) { + var $post_args, names, self = this; + + + + $post_args = Opal.slice.call(arguments); + + names = $post_args;; + $send(self, 'native_reader', $to_a(names)); + return $send(self, 'native_writer', $to_a(names)); + }, -1); + })($nesting[0], $nesting); + (function($base, $parent_nesting) { + var self = $module($base, 'Wrapper'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$initialize', function $$initialize(native$) { + var self = this; + + + if (!$truthy($Kernel['$native?'](native$))) { + $Kernel.$raise($$('ArgumentError'), "" + (native$.$inspect()) + " isn't native") + }; + return (self["native"] = native$); + }, 1); + + $def(self, '$to_n', function $$to_n() { + var self = this; + if (self["native"] == null) self["native"] = nil; + + return self["native"] + }, 0); + return $defs(self, '$included', function $$included(klass) { + + return klass.$extend($$('Helpers')) + }, 1); + })($nesting[0], $nesting); + return $defs(self, '$included', function $$included(base) { + var self = this; + + + self.$warn("Including ::Native is deprecated. Please include Native::Wrapper instead."); + return base.$include($$('Wrapper')); + }, 1); + })($nesting[0], $nesting); + (function($base, $parent_nesting) { + var self = $module($base, 'Kernel'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$native?', function $Kernel_native$ques$11(value) { + + return value == null || !value.$$class; + }, 1); + + $def(self, '$Native', function $$Native(obj) { + var $yield = $$Native.$$p || nil, self = this; + + delete $$Native.$$p; + if ($truthy(obj == null)) { + return nil + } else if ($truthy(self['$native?'](obj))) { + return $$$($$('Native'), 'Object').$new(obj) + } else if ($truthy(obj['$is_a?']($$('Array')))) { + return $send(obj, 'map', [], function $$12(o){var self = $$12.$$s == null ? this : $$12.$$s; + + + + if (o == null) o = nil;; + return self.$Native(o);}, {$$arity: 1, $$s: self}) + } else if ($truthy(obj['$is_a?']($$('Proc')))) { + return $send(self, 'proc', [], function $$13($a){var block = $$13.$$p || nil, $post_args, args, self = $$13.$$s == null ? this : $$13.$$s; + + delete $$13.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return self.$Native($send(obj, 'call', $to_a(args), block.$to_proc()));}, {$$arity: -1, $$s: self}) + } else { + return obj + } + }, 1); + $alias(self, "_Array", "Array"); + return $def(self, '$Array', function $$Array(object, $a) { + var block = $$Array.$$p || nil, $post_args, args, self = this; + + delete $$Array.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + if ($truthy(self['$native?'](object))) { + return $send($$$($$('Native'), 'Array'), 'new', [object].concat($to_a(args)), block.$to_proc()).$to_a() + }; + return self.$_Array(object); + }, -2); + })($nesting[0], $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'Object'); + + var $proto = self.$$prototype; + + $proto["native"] = nil; + + self.$include($$$($$$('Native'), 'Wrapper')); + + $def(self, '$==', function $Object_$eq_eq$14(other) { + var self = this; + + return self["native"] === $$$('Native').$try_convert(other) + }, 1); + + $def(self, '$has_key?', function $Object_has_key$ques$15(name) { + var self = this; + + return Opal.hasOwnProperty.call(self["native"], name) + }, 1); + + $def(self, '$each', function $$each($a) { + var $post_args, args, $yield = $$each.$$p || nil, self = this; + + delete $$each.$$p; + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if (($yield !== nil)) { + + + for (var key in self["native"]) { + Opal.yieldX($yield, [key, self["native"][key]]) + } + ; + return self; + } else { + return $send(self, 'method_missing', ["each"].concat($to_a(args))) + }; + }, -1); + + $def(self, '$[]', function $Object_$$$16(key) { + var self = this; + + + var prop = self["native"][key]; + + if (prop instanceof Function) { + return prop; + } + else { + return $$$('Native').$call(self["native"], key) + } + + }, 1); + + $def(self, '$[]=', function $Object_$$$eq$17(key, value) { + var self = this, native$ = nil; + + + native$ = $$$('Native').$try_convert(value); + if ($truthy(native$ === nil)) { + return self["native"][key] = value + } else { + return self["native"][key] = native$ + }; + }, 2); + + $def(self, '$merge!', function $Object_merge$excl$18(other) { + var self = this; + + + + other = $$$('Native').$convert(other); + + for (var prop in other) { + self["native"][prop] = other[prop]; + } + ; + return self; + }, 1); + + $def(self, '$respond_to?', function $Object_respond_to$ques$19(name, include_all) { + var self = this; + + + + if (include_all == null) include_all = false;; + return $Kernel.$instance_method("respond_to?").$bind(self).$call(name, include_all); + }, -2); + + $def(self, '$respond_to_missing?', function $Object_respond_to_missing$ques$20(name, include_all) { + var self = this; + + + + if (include_all == null) include_all = false;; + return Opal.hasOwnProperty.call(self["native"], name); + }, -2); + + $def(self, '$method_missing', function $$method_missing(mid, $a) { + var block = $$method_missing.$$p || nil, $post_args, args, self = this, $writer = nil; + + delete $$method_missing.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + + if (mid.charAt(mid.length - 1) === '=') { + return (($writer = [mid.$slice(0, $rb_minus(mid.$length(), 1)), args['$[]'](0)]), $send(self, '[]=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)]); + } + else { + return $send($$$('Native'), 'call', [self["native"], mid].concat($to_a(args)), block.$to_proc()); + } + ; + }, -2); + + $def(self, '$nil?', function $Object_nil$ques$21() { + + return false + }, 0); + + $def(self, '$is_a?', function $Object_is_a$ques$22(klass) { + var self = this; + + return Opal.is_a(self, klass); + }, 1); + + $def(self, '$instance_of?', function $Object_instance_of$ques$23(klass) { + var self = this; + + return self.$$class === klass; + }, 1); + + $def(self, '$class', function $Object_class$24() { + var self = this; + + return self.$$class; + }, 0); + + $def(self, '$to_a', function $$to_a(options) { + var block = $$to_a.$$p || nil, self = this; + + delete $$to_a.$$p; + + ; + + if (options == null) options = $hash2([], {});; + return $send($$$($$$('Native'), 'Array'), 'new', [self["native"], options], block.$to_proc()).$to_a(); + }, -1); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return "#" + }, 0); + $alias(self, "include?", "has_key?"); + $alias(self, "key?", "has_key?"); + $alias(self, "kind_of?", "is_a?"); + return $alias(self, "member?", "has_key?"); + })($$('Native'), $$('BasicObject')); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Array'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.named = $proto["native"] = $proto.get = $proto.block = $proto.set = $proto.length = nil; + + self.$include($$$($$('Native'), 'Wrapper')); + self.$include($$('Enumerable')); + + $def(self, '$initialize', function $$initialize(native$, options) { + var block = $$initialize.$$p || nil, self = this, $ret_or_1 = nil; + + delete $$initialize.$$p; + + ; + + if (options == null) options = $hash2([], {});; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [native$], null); + self.get = ($truthy(($ret_or_1 = options['$[]']("get"))) ? ($ret_or_1) : (options['$[]']("access"))); + self.named = options['$[]']("named"); + self.set = ($truthy(($ret_or_1 = options['$[]']("set"))) ? ($ret_or_1) : (options['$[]']("access"))); + self.length = ($truthy(($ret_or_1 = options['$[]']("length"))) ? ($ret_or_1) : ("length")); + self.block = block; + if ($truthy(self.$length() == null)) { + return self.$raise($$('ArgumentError'), "no length found on the array-like object") + } else { + return nil + }; + }, -2); + + $def(self, '$each', function $$each() { + var block = $$each.$$p || nil, self = this; + + delete $$each.$$p; + + ; + if (!$truthy(block)) { + return self.$enum_for("each") + }; + + for (var i = 0, length = self.$length(); i < length; i++) { + Opal.yield1(block, self['$[]'](i)); + } + ; + return self; + }, 0); + + $def(self, '$[]', function $Array_$$$25(index) { + var self = this, result = nil, $ret_or_1 = nil; + + + result = (($eqeqeq($$('String'), ($ret_or_1 = index)) || ($eqeqeq($$('Symbol'), $ret_or_1))) ? (($truthy(self.named) ? (self["native"][self.named](index)) : (self["native"][index]))) : ($eqeqeq($$('Integer'), $ret_or_1) ? (($truthy(self.get) ? (self["native"][self.get](index)) : (self["native"][index]))) : (nil))); + if ($truthy(result)) { + if ($truthy(self.block)) { + return self.block.$call(result) + } else { + return self.$Native(result) + } + } else { + return nil + }; + }, 1); + + $def(self, '$[]=', function $Array_$$$eq$26(index, value) { + var self = this; + + if ($truthy(self.set)) { + return self["native"][self.set](index, $$('Native').$convert(value)) + } else { + return self["native"][index] = $$('Native').$convert(value) + } + }, 2); + + $def(self, '$last', function $$last(count) { + var $a, self = this, index = nil, result = nil; + + + + if (count == null) count = nil;; + if ($truthy(count)) { + + index = $rb_minus(self.$length(), 1); + result = []; + while ($truthy($rb_ge(index, 0))) { + + result['$<<'](self['$[]'](index)); + index = $rb_minus(index, 1); + }; + return result; + } else { + return self['$[]']($rb_minus(self.$length(), 1)) + }; + }, -1); + + $def(self, '$length', function $$length() { + var self = this; + + return self["native"][self.length] + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return self.$to_a().$inspect() + }, 0); + return $alias(self, "to_ary", "to_a"); + })($$('Native'), null, $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'Numeric'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.valueOf(); + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Proc'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'String'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.valueOf(); + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Regexp'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.valueOf(); + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'MatchData'); + + var $proto = self.$$prototype; + + $proto.matches = nil; + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.matches + }, 0) + })($nesting[0], null); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Struct'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$to_n', function $$to_n() { + var self = this, result = nil; + + + result = {}; + $send(self, 'each_pair', [], function $$27(name, value){ + + + if (name == null) name = nil;; + + if (value == null) value = nil;; + return result[name] = $$('Native').$try_convert(value, value);}, 2); + return result; + }, 0) + })($nesting[0], null, $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Array'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + + var result = []; + + for (var i = 0, length = self.length; i < length; i++) { + var obj = self[i]; + + result.push($$('Native').$try_convert(obj, obj)); + } + + return result; + + }, 0) + })($nesting[0], null, $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'Boolean'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.valueOf(); + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Time'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'NilClass'); + + + return $def(self, '$to_n', function $$to_n() { + + return null; + }, 0) + })($nesting[0], null); + if (!$truthy($$('Hash')['$method_defined?']("_initialize"))) { + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Hash'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $alias(self, "_initialize", "initialize"); + + $def(self, '$initialize', function $$initialize(defaults) { + var block = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + ; + ; + + if (defaults != null && + (defaults.constructor === undefined || + defaults.constructor === Object)) { + var smap = self.$$smap, + keys = self.$$keys, + key, value; + + for (key in defaults) { + value = defaults[key]; + + if (value && + (value.constructor === undefined || + value.constructor === Object)) { + smap[key] = $$('Hash').$new(value); + } else if (value && value.$$is_array) { + value = value.map(function(item) { + if (item && + (item.constructor === undefined || + item.constructor === Object)) { + return $$('Hash').$new(item); + } + + return self.$Native(item); + }); + smap[key] = value + } else { + smap[key] = self.$Native(value); + } + + keys.push(key); + } + + return self; + } + + return $send(self, '_initialize', [defaults], block.$to_proc()); + ; + }, -1); + return $def(self, '$to_n', function $$to_n() { + var self = this; + + + var result = {}, + keys = self.$$keys, + smap = self.$$smap, + key, value; + + for (var i = 0, length = keys.length; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = smap[key]; + } else { + key = key.key; + value = key.value; + } + + result[key] = $$('Native').$try_convert(value, value); + } + + return result; + + }, 0); + })($nesting[0], null, $nesting) + }; + (function($base, $super) { + var self = $klass($base, $super, 'Module'); + + + return $def(self, '$native_module', function $$native_module() { + var self = this; + + return Opal.global[self.$name()] = self + }, 0) + })($nesting[0], null); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Class'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$native_alias', function $$native_alias(new_jsid, existing_mid) { + var self = this; + + + var aliased = self.prototype['$' + existing_mid]; + if (!aliased) { + self.$raise($$('NameError').$new("undefined method `" + (existing_mid) + "' for class `" + (self.$inspect()) + "'", existing_mid)); + } + self.prototype[new_jsid] = aliased; + + }, 2); + return $def(self, '$native_class', function $$native_class() { + var self = this; + + + self.$native_module(); + return self["new"] = self.$new;; + }, 0); + })($nesting[0], null, $nesting); + return ($gvars.$ = ($gvars.global = self.$Native(Opal.global))); +}; diff --git a/opal/1.4.1/native.min.js b/opal/1.4.1/native.min.js new file mode 100644 index 00000000..fd2f0152 --- /dev/null +++ b/opal/1.4.1/native.min.js @@ -0,0 +1 @@ +Opal.modules.native=function(Opal){var self=Opal.top,$nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$defs=Opal.defs,$truthy=Opal.truthy,$send=Opal.send,$Kernel=Opal.Kernel,$hash2=Opal.hash2,$range=Opal.range,$to_a=Opal.to_a,$def=Opal.def,$alias=Opal.alias,$klass=Opal.klass,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super,$eqeqeq=Opal.eqeqeq,$rb_ge=Opal.rb_ge,$gvars=Opal.gvars;return Opal.add_stubs("try_convert,native?,respond_to?,to_n,raise,inspect,Native,proc,map!,end_with?,define_method,[],convert,call,to_proc,new,each,native_reader,native_writer,extend,warn,include,is_a?,map,to_a,_Array,method_missing,bind,instance_method,slice,-,length,[]=,enum_for,===,>=,<<,each_pair,method_defined?,_initialize,name,native_module"),function($base,$parent_nesting){var self=$module($base,"Native"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$defs(self,"$is_a?",(function(object,klass){try{return object instanceof this.$try_convert(klass)}catch(e){return!1}}),2),$defs(self,"$try_convert",(function(value,default$){return null==default$&&(default$=nil),this["$native?"](value)?value:value["$respond_to?"]("to_n")?value.$to_n():default$}),-2),$defs(self,"$convert",(function(value){return this["$native?"](value)?value:value["$respond_to?"]("to_n")?value.$to_n():void this.$raise($$("ArgumentError"),value.$inspect()+" isn't native")}),1),$defs(self,"$call",(function $$call(obj,key,$a){var args,block=$$call.$$p||nil,self=this;delete $$call.$$p,args=Opal.slice.call(arguments,2);var prop=obj[key];if(prop instanceof Function){for(var converted=new Array(args.length),i=0,l=args.length;i0&&(old=$post_args.shift()),null==old&&(old=new$),null==(as=$kwargs.$$smap.as)&&(as=nil),$truthy(old["$end_with?"]("="))?$send(self,"define_method",[new$],(function $$4(value){var self=null==$$4.$$s?this:$$4.$$s;return null==self.native&&(self.native=nil),null==value&&(value=nil),self.native[old["$[]"]($range(0,-2,!1))]=$$("Native").$convert(value),value}),{$$arity:1,$$s:self}):$truthy(as)?$send(self,"define_method",[new$],(function $$5($c){var args,block=$$5.$$p||nil,self=null==$$5.$$s?this:$$5.$$s,value=nil;return null==self.native&&(self.native=nil),delete $$5.$$p,args=Opal.slice.call(arguments),value=$send($$("Native"),"call",[self.native,old].concat($to_a(args)),block.$to_proc()),$truthy(value)?as.$new(value.$to_n()):nil}),{$$arity:-1,$$s:self}):$send(self,"define_method",[new$],(function $$6($c){var args,block=$$6.$$p||nil,self=null==$$6.$$s?this:$$6.$$s;return null==self.native&&(self.native=nil),delete $$6.$$p,args=Opal.slice.call(arguments),$send($$("Native"),"call",[self.native,old].concat($to_a(args)),block.$to_proc())}),{$$arity:-1,$$s:self})}),-2),$def(self,"$native_reader",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each",[],(function $$7(name){var self=null==$$7.$$s?this:$$7.$$s;return null==name&&(name=nil),$send(self,"define_method",[name],(function $$8(){var self=null==$$8.$$s?this:$$8.$$s;return null==self.native&&(self.native=nil),self.$Native(self.native[name])}),{$$arity:0,$$s:self})}),{$$arity:1,$$s:self})}),-1),$def(self,"$native_writer",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each",[],(function $$9(name){var self=null==$$9.$$s?this:$$9.$$s;return null==name&&(name=nil),$send(self,"define_method",[name+"="],(function $$10(value){var self=null==$$10.$$s?this:$$10.$$s;return null==self.native&&(self.native=nil),null==value&&(value=nil),self.$Native(self.native[name]=value)}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:self})}),-1),$def(self,"$native_accessor",(function($a){var $post_args,names,self=this;return $post_args=Opal.slice.call(arguments),$send(self,"native_reader",$to_a(names=$post_args)),$send(self,"native_writer",$to_a(names))}),-1)}($nesting[0],$nesting),function($base,$parent_nesting){var self=$module($base,"Wrapper"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$initialize",(function(native$){return $truthy($Kernel["$native?"](native$))||$Kernel.$raise($$("ArgumentError"),native$.$inspect()+" isn't native"),this.native=native$}),1),$def(self,"$to_n",(function(){return null==this.native&&(this.native=nil),this.native}),0),$defs(self,"$included",(function(klass){return klass.$extend($$("Helpers"))}),1)}($nesting[0],$nesting),$defs(self,"$included",(function(base){return this.$warn("Including ::Native is deprecated. Please include Native::Wrapper instead."),base.$include($$("Wrapper"))}),1)}($nesting[0],$nesting),function($base,$parent_nesting){var self=$module($base,"Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$native?",(function(value){return null==value||!value.$$class}),1),$def(self,"$Native",(function $$Native(obj){return delete $$Native.$$p,$truthy(null==obj)?nil:$truthy(this["$native?"](obj))?$$$($$("Native"),"Object").$new(obj):$truthy(obj["$is_a?"]($$("Array")))?$send(obj,"map",[],(function $$12(o){return null==o&&(o=nil),(null==$$12.$$s?this:$$12.$$s).$Native(o)}),{$$arity:1,$$s:this}):$truthy(obj["$is_a?"]($$("Proc")))?$send(this,"proc",[],(function $$13($a){var args,block=$$13.$$p||nil,self=null==$$13.$$s?this:$$13.$$s;return delete $$13.$$p,args=Opal.slice.call(arguments),self.$Native($send(obj,"call",$to_a(args),block.$to_proc()))}),{$$arity:-1,$$s:this}):obj}),1),$alias(self,"_Array","Array"),$def(self,"$Array",(function $$Array(object,$a){var args,block=$$Array.$$p||nil,self=this;return delete $$Array.$$p,args=Opal.slice.call(arguments,1),$truthy(self["$native?"](object))?$send($$$($$("Native"),"Array"),"new",[object].concat($to_a(args)),block.$to_proc()).$to_a():self.$_Array(object)}),-2)}($nesting[0],$nesting),function($base,$super){var self=$klass($base,$super,"Object");self.$$prototype.native=nil,self.$include($$$($$$("Native"),"Wrapper")),$def(self,"$==",(function(other){return this.native===$$$("Native").$try_convert(other)}),1),$def(self,"$has_key?",(function(name){return Opal.hasOwnProperty.call(this.native,name)}),1),$def(self,"$each",(function $$each($a){var args,$yield=$$each.$$p||nil,self=this;if(delete $$each.$$p,args=Opal.slice.call(arguments),$yield!==nil){for(var key in self.native)Opal.yieldX($yield,[key,self.native[key]]);return self}return $send(self,"method_missing",["each"].concat($to_a(args)))}),-1),$def(self,"$[]",(function(key){var prop=this.native[key];return prop instanceof Function?prop:$$$("Native").$call(this.native,key)}),1),$def(self,"$[]=",(function(key,value){var native$;return native$=$$$("Native").$try_convert(value),$truthy(native$===nil)?this.native[key]=value:this.native[key]=native$}),2),$def(self,"$merge!",(function(other){for(var prop in other=$$$("Native").$convert(other))this.native[prop]=other[prop];return this}),1),$def(self,"$respond_to?",(function(name,include_all){return null==include_all&&(include_all=!1),$Kernel.$instance_method("respond_to?").$bind(this).$call(name,include_all)}),-2),$def(self,"$respond_to_missing?",(function(name,include_all){return null==include_all&&(include_all=!1),Opal.hasOwnProperty.call(this.native,name)}),-2),$def(self,"$method_missing",(function $$method_missing(mid,$a){var args,block=$$method_missing.$$p||nil,self=this,$writer=nil;return delete $$method_missing.$$p,args=Opal.slice.call(arguments,1),"="===mid.charAt(mid.length-1)?($writer=[mid.$slice(0,$rb_minus(mid.$length(),1)),args["$[]"](0)],$send(self,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):$send($$$("Native"),"call",[self.native,mid].concat($to_a(args)),block.$to_proc())}),-2),$def(self,"$nil?",(function(){return!1}),0),$def(self,"$is_a?",(function(klass){return Opal.is_a(this,klass)}),1),$def(self,"$instance_of?",(function(klass){return this.$$class===klass}),1),$def(self,"$class",(function(){return this.$$class}),0),$def(self,"$to_a",(function $$to_a(options){var block=$$to_a.$$p||nil;return delete $$to_a.$$p,null==options&&(options=$hash2([],{})),$send($$$($$$("Native"),"Array"),"new",[this.native,options],block.$to_proc()).$to_a()}),-1),$def(self,"$inspect",(function(){return"#"}),0),$alias(self,"include?","has_key?"),$alias(self,"key?","has_key?"),$alias(self,"kind_of?","is_a?"),$alias(self,"member?","has_key?")}($$("Native"),$$("BasicObject")),function($base,$super,$parent_nesting){var self=$klass($base,null,"Array"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.named=$proto.native=$proto.get=$proto.block=$proto.set=$proto.length=nil,self.$include($$$($$("Native"),"Wrapper")),self.$include($$("Enumerable")),$def(self,"$initialize",(function $$initialize(native$,options){var block=$$initialize.$$p||nil,$ret_or_1=nil;return delete $$initialize.$$p,null==options&&(options=$hash2([],{})),$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[native$],null),this.get=$truthy($ret_or_1=options["$[]"]("get"))?$ret_or_1:options["$[]"]("access"),this.named=options["$[]"]("named"),this.set=$truthy($ret_or_1=options["$[]"]("set"))?$ret_or_1:options["$[]"]("access"),this.length=$truthy($ret_or_1=options["$[]"]("length"))?$ret_or_1:"length",this.block=block,$truthy(null==this.$length())?this.$raise($$("ArgumentError"),"no length found on the array-like object"):nil}),-2),$def(self,"$each",(function $$each(){var block=$$each.$$p||nil;if(delete $$each.$$p,!$truthy(block))return this.$enum_for("each");for(var i=0,length=this.$length();i=,<<,each_pair,method_defined?,_initialize,name,native_module'); + + (function($base, $parent_nesting) { + var self = $module($base, 'Native'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs(self, '$is_a?', function $Native_is_a$ques$1(object, klass) { + var self = this; + + + try { + return object instanceof self.$try_convert(klass); + } + catch (e) { + return false; + } + + }, 2); + $defs(self, '$try_convert', function $$try_convert(value, default$) { + var self = this; + + + + if (default$ == null) default$ = nil;; + + if (self['$native?'](value)) { + return value; + } + else if (value['$respond_to?']("to_n")) { + return value.$to_n(); + } + else { + return default$; + } + ; + }, -2); + $defs(self, '$convert', function $$convert(value) { + var self = this; + + + if (self['$native?'](value)) { + return value; + } + else if (value['$respond_to?']("to_n")) { + return value.$to_n(); + } + else { + self.$raise($$('ArgumentError'), "" + (value.$inspect()) + " isn't native"); + } + + }, 1); + $defs(self, '$call', function $$call(obj, key, $a) { + var block = $$call.$$p || nil, $post_args, args, self = this; + + delete $$call.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 2); + + args = $post_args;; + + var prop = obj[key]; + + if (prop instanceof Function) { + var converted = new Array(args.length); + + for (var i = 0, l = args.length; i < l; i++) { + var item = args[i], + conv = self.$try_convert(item); + + converted[i] = conv === nil ? item : conv; + } + + if (block !== nil) { + converted.push(block); + } + + return self.$Native(prop.apply(obj, converted)); + } + else { + return self.$Native(prop); + } + ; + }, -3); + $defs(self, '$proc', function $$proc() { + var block = $$proc.$$p || nil, self = this; + + delete $$proc.$$p; + + ; + if (!$truthy(block)) { + self.$raise($$('LocalJumpError'), "no block given") + }; + return $send($Kernel, 'proc', [], function $$2($a){var $post_args, args, self = $$2.$$s == null ? this : $$2.$$s, instance = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + $send(args, 'map!', [], function $$3(arg){var self = $$3.$$s == null ? this : $$3.$$s; + + + + if (arg == null) arg = nil;; + return self.$Native(arg);}, {$$arity: 1, $$s: self}); + instance = self.$Native(this); + + // if global is current scope, run the block in the scope it was defined + if (this === Opal.global) { + return block.apply(self, args); + } + + var self_ = block.$$s; + block.$$s = null; + + try { + return block.apply(instance, args); + } + finally { + block.$$s = self_; + } + ;}, {$$arity: -1, $$s: self}); + }, 0); + (function($base, $parent_nesting) { + var self = $module($base, 'Helpers'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$alias_native', function $$alias_native(new$, $a, $b) { + var $post_args, $kwargs, old, as, $yield = $$alias_native.$$p || nil, self = this; + + delete $$alias_native.$$p; + + + $post_args = Opal.slice.call(arguments, 1); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if ($post_args.length > 0) old = $post_args.shift(); + if (old == null) old = new$;; + + as = $kwargs.$$smap["as"]; + if (as == null) as = nil; + if ($truthy(old['$end_with?']("="))) { + return $send(self, 'define_method', [new$], function $$4(value){var self = $$4.$$s == null ? this : $$4.$$s; + if (self["native"] == null) self["native"] = nil; + + + + if (value == null) value = nil;; + self["native"][old['$[]']($range(0, -2, false))] = $$('Native').$convert(value); + return value;}, {$$arity: 1, $$s: self}) + } else if ($truthy(as)) { + return $send(self, 'define_method', [new$], function $$5($c){var block = $$5.$$p || nil, $post_args, args, self = $$5.$$s == null ? this : $$5.$$s, value = nil; + if (self["native"] == null) self["native"] = nil; + + delete $$5.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + value = $send($$('Native'), 'call', [self["native"], old].concat($to_a(args)), block.$to_proc()); + if ($truthy(value)) { + return as.$new(value.$to_n()) + } else { + return nil + };}, {$$arity: -1, $$s: self}) + } else { + return $send(self, 'define_method', [new$], function $$6($c){var block = $$6.$$p || nil, $post_args, args, self = $$6.$$s == null ? this : $$6.$$s; + if (self["native"] == null) self["native"] = nil; + + delete $$6.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send($$('Native'), 'call', [self["native"], old].concat($to_a(args)), block.$to_proc());}, {$$arity: -1, $$s: self}) + }; + }, -2); + + $def(self, '$native_reader', function $$native_reader($a) { + var $post_args, names, self = this; + + + + $post_args = Opal.slice.call(arguments); + + names = $post_args;; + return $send(names, 'each', [], function $$7(name){var self = $$7.$$s == null ? this : $$7.$$s; + + + + if (name == null) name = nil;; + return $send(self, 'define_method', [name], function $$8(){var self = $$8.$$s == null ? this : $$8.$$s; + if (self["native"] == null) self["native"] = nil; + + return self.$Native(self["native"][name])}, {$$arity: 0, $$s: self});}, {$$arity: 1, $$s: self}); + }, -1); + + $def(self, '$native_writer', function $$native_writer($a) { + var $post_args, names, self = this; + + + + $post_args = Opal.slice.call(arguments); + + names = $post_args;; + return $send(names, 'each', [], function $$9(name){var self = $$9.$$s == null ? this : $$9.$$s; + + + + if (name == null) name = nil;; + return $send(self, 'define_method', ["" + (name) + "="], function $$10(value){var self = $$10.$$s == null ? this : $$10.$$s; + if (self["native"] == null) self["native"] = nil; + + + + if (value == null) value = nil;; + return self.$Native(self["native"][name] = value);}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + }, -1); + return $def(self, '$native_accessor', function $$native_accessor($a) { + var $post_args, names, self = this; + + + + $post_args = Opal.slice.call(arguments); + + names = $post_args;; + $send(self, 'native_reader', $to_a(names)); + return $send(self, 'native_writer', $to_a(names)); + }, -1); + })($nesting[0], $nesting); + (function($base, $parent_nesting) { + var self = $module($base, 'Wrapper'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$initialize', function $$initialize(native$) { + var self = this; + + + if (!$truthy($Kernel['$native?'](native$))) { + $Kernel.$raise($$('ArgumentError'), "" + (native$.$inspect()) + " isn't native") + }; + return (self["native"] = native$); + }, 1); + + $def(self, '$to_n', function $$to_n() { + var self = this; + if (self["native"] == null) self["native"] = nil; + + return self["native"] + }, 0); + return $defs(self, '$included', function $$included(klass) { + + return klass.$extend($$('Helpers')) + }, 1); + })($nesting[0], $nesting); + return $defs(self, '$included', function $$included(base) { + var self = this; + + + self.$warn("Including ::Native is deprecated. Please include Native::Wrapper instead."); + return base.$include($$('Wrapper')); + }, 1); + })($nesting[0], $nesting); + (function($base, $parent_nesting) { + var self = $module($base, 'Kernel'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$native?', function $Kernel_native$ques$11(value) { + + return value == null || !value.$$class; + }, 1); + + $def(self, '$Native', function $$Native(obj) { + var $yield = $$Native.$$p || nil, self = this; + + delete $$Native.$$p; + if ($truthy(obj == null)) { + return nil + } else if ($truthy(self['$native?'](obj))) { + return $$$($$('Native'), 'Object').$new(obj) + } else if ($truthy(obj['$is_a?']($$('Array')))) { + return $send(obj, 'map', [], function $$12(o){var self = $$12.$$s == null ? this : $$12.$$s; + + + + if (o == null) o = nil;; + return self.$Native(o);}, {$$arity: 1, $$s: self}) + } else if ($truthy(obj['$is_a?']($$('Proc')))) { + return $send(self, 'proc', [], function $$13($a){var block = $$13.$$p || nil, $post_args, args, self = $$13.$$s == null ? this : $$13.$$s; + + delete $$13.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return self.$Native($send(obj, 'call', $to_a(args), block.$to_proc()));}, {$$arity: -1, $$s: self}) + } else { + return obj + } + }, 1); + $alias(self, "_Array", "Array"); + return $def(self, '$Array', function $$Array(object, $a) { + var block = $$Array.$$p || nil, $post_args, args, self = this; + + delete $$Array.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + if ($truthy(self['$native?'](object))) { + return $send($$$($$('Native'), 'Array'), 'new', [object].concat($to_a(args)), block.$to_proc()).$to_a() + }; + return self.$_Array(object); + }, -2); + })($nesting[0], $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'Object'); + + var $proto = self.$$prototype; + + $proto["native"] = nil; + + self.$include($$$($$$('Native'), 'Wrapper')); + + $def(self, '$==', function $Object_$eq_eq$14(other) { + var self = this; + + return self["native"] === $$$('Native').$try_convert(other) + }, 1); + + $def(self, '$has_key?', function $Object_has_key$ques$15(name) { + var self = this; + + return Opal.hasOwnProperty.call(self["native"], name) + }, 1); + + $def(self, '$each', function $$each($a) { + var $post_args, args, $yield = $$each.$$p || nil, self = this; + + delete $$each.$$p; + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if (($yield !== nil)) { + + + for (var key in self["native"]) { + Opal.yieldX($yield, [key, self["native"][key]]) + } + ; + return self; + } else { + return $send(self, 'method_missing', ["each"].concat($to_a(args))) + }; + }, -1); + + $def(self, '$[]', function $Object_$$$16(key) { + var self = this; + + + var prop = self["native"][key]; + + if (prop instanceof Function) { + return prop; + } + else { + return $$$('Native').$call(self["native"], key) + } + + }, 1); + + $def(self, '$[]=', function $Object_$$$eq$17(key, value) { + var self = this, native$ = nil; + + + native$ = $$$('Native').$try_convert(value); + if ($truthy(native$ === nil)) { + return self["native"][key] = value + } else { + return self["native"][key] = native$ + }; + }, 2); + + $def(self, '$merge!', function $Object_merge$excl$18(other) { + var self = this; + + + + other = $$$('Native').$convert(other); + + for (var prop in other) { + self["native"][prop] = other[prop]; + } + ; + return self; + }, 1); + + $def(self, '$respond_to?', function $Object_respond_to$ques$19(name, include_all) { + var self = this; + + + + if (include_all == null) include_all = false;; + return $Kernel.$instance_method("respond_to?").$bind(self).$call(name, include_all); + }, -2); + + $def(self, '$respond_to_missing?', function $Object_respond_to_missing$ques$20(name, include_all) { + var self = this; + + + + if (include_all == null) include_all = false;; + return Opal.hasOwnProperty.call(self["native"], name); + }, -2); + + $def(self, '$method_missing', function $$method_missing(mid, $a) { + var block = $$method_missing.$$p || nil, $post_args, args, self = this, $writer = nil; + + delete $$method_missing.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + + if (mid.charAt(mid.length - 1) === '=') { + return (($writer = [mid.$slice(0, $rb_minus(mid.$length(), 1)), args['$[]'](0)]), $send(self, '[]=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)]); + } + else { + return $send($$$('Native'), 'call', [self["native"], mid].concat($to_a(args)), block.$to_proc()); + } + ; + }, -2); + + $def(self, '$nil?', function $Object_nil$ques$21() { + + return false + }, 0); + + $def(self, '$is_a?', function $Object_is_a$ques$22(klass) { + var self = this; + + return Opal.is_a(self, klass); + }, 1); + + $def(self, '$instance_of?', function $Object_instance_of$ques$23(klass) { + var self = this; + + return self.$$class === klass; + }, 1); + + $def(self, '$class', function $Object_class$24() { + var self = this; + + return self.$$class; + }, 0); + + $def(self, '$to_a', function $$to_a(options) { + var block = $$to_a.$$p || nil, self = this; + + delete $$to_a.$$p; + + ; + + if (options == null) options = $hash2([], {});; + return $send($$$($$$('Native'), 'Array'), 'new', [self["native"], options], block.$to_proc()).$to_a(); + }, -1); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return "#" + }, 0); + $alias(self, "include?", "has_key?"); + $alias(self, "key?", "has_key?"); + $alias(self, "kind_of?", "is_a?"); + return $alias(self, "member?", "has_key?"); + })($$('Native'), $$('BasicObject')); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Array'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.named = $proto["native"] = $proto.get = $proto.block = $proto.set = $proto.length = nil; + + self.$include($$$($$('Native'), 'Wrapper')); + self.$include($$('Enumerable')); + + $def(self, '$initialize', function $$initialize(native$, options) { + var block = $$initialize.$$p || nil, self = this, $ret_or_1 = nil; + + delete $$initialize.$$p; + + ; + + if (options == null) options = $hash2([], {});; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [native$], null); + self.get = ($truthy(($ret_or_1 = options['$[]']("get"))) ? ($ret_or_1) : (options['$[]']("access"))); + self.named = options['$[]']("named"); + self.set = ($truthy(($ret_or_1 = options['$[]']("set"))) ? ($ret_or_1) : (options['$[]']("access"))); + self.length = ($truthy(($ret_or_1 = options['$[]']("length"))) ? ($ret_or_1) : ("length")); + self.block = block; + if ($truthy(self.$length() == null)) { + return self.$raise($$('ArgumentError'), "no length found on the array-like object") + } else { + return nil + }; + }, -2); + + $def(self, '$each', function $$each() { + var block = $$each.$$p || nil, self = this; + + delete $$each.$$p; + + ; + if (!$truthy(block)) { + return self.$enum_for("each") + }; + + for (var i = 0, length = self.$length(); i < length; i++) { + Opal.yield1(block, self['$[]'](i)); + } + ; + return self; + }, 0); + + $def(self, '$[]', function $Array_$$$25(index) { + var self = this, result = nil, $ret_or_1 = nil; + + + result = (($eqeqeq($$('String'), ($ret_or_1 = index)) || ($eqeqeq($$('Symbol'), $ret_or_1))) ? (($truthy(self.named) ? (self["native"][self.named](index)) : (self["native"][index]))) : ($eqeqeq($$('Integer'), $ret_or_1) ? (($truthy(self.get) ? (self["native"][self.get](index)) : (self["native"][index]))) : (nil))); + if ($truthy(result)) { + if ($truthy(self.block)) { + return self.block.$call(result) + } else { + return self.$Native(result) + } + } else { + return nil + }; + }, 1); + + $def(self, '$[]=', function $Array_$$$eq$26(index, value) { + var self = this; + + if ($truthy(self.set)) { + return self["native"][self.set](index, $$('Native').$convert(value)) + } else { + return self["native"][index] = $$('Native').$convert(value) + } + }, 2); + + $def(self, '$last', function $$last(count) { + var $a, self = this, index = nil, result = nil; + + + + if (count == null) count = nil;; + if ($truthy(count)) { + + index = $rb_minus(self.$length(), 1); + result = []; + while ($truthy($rb_ge(index, 0))) { + + result['$<<'](self['$[]'](index)); + index = $rb_minus(index, 1); + }; + return result; + } else { + return self['$[]']($rb_minus(self.$length(), 1)) + }; + }, -1); + + $def(self, '$length', function $$length() { + var self = this; + + return self["native"][self.length] + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return self.$to_a().$inspect() + }, 0); + return $alias(self, "to_ary", "to_a"); + })($$('Native'), null, $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'Numeric'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.valueOf(); + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Proc'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'String'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.valueOf(); + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Regexp'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.valueOf(); + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'MatchData'); + + var $proto = self.$$prototype; + + $proto.matches = nil; + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.matches + }, 0) + })($nesting[0], null); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Struct'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$to_n', function $$to_n() { + var self = this, result = nil; + + + result = {}; + $send(self, 'each_pair', [], function $$27(name, value){ + + + if (name == null) name = nil;; + + if (value == null) value = nil;; + return result[name] = $$('Native').$try_convert(value, value);}, 2); + return result; + }, 0) + })($nesting[0], null, $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Array'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + + var result = []; + + for (var i = 0, length = self.length; i < length; i++) { + var obj = self[i]; + + result.push($$('Native').$try_convert(obj, obj)); + } + + return result; + + }, 0) + })($nesting[0], null, $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'Boolean'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.valueOf(); + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Time'); + + + return $def(self, '$to_n', function $$to_n() { + var self = this; + + return self + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'NilClass'); + + + return $def(self, '$to_n', function $$to_n() { + + return null; + }, 0) + })($nesting[0], null); + if (!$truthy($$('Hash')['$method_defined?']("_initialize"))) { + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Hash'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $alias(self, "_initialize", "initialize"); + + $def(self, '$initialize', function $$initialize(defaults) { + var block = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + ; + ; + + if (defaults != null && + (defaults.constructor === undefined || + defaults.constructor === Object)) { + var smap = self.$$smap, + keys = self.$$keys, + key, value; + + for (key in defaults) { + value = defaults[key]; + + if (value && + (value.constructor === undefined || + value.constructor === Object)) { + smap[key] = $$('Hash').$new(value); + } else if (value && value.$$is_array) { + value = value.map(function(item) { + if (item && + (item.constructor === undefined || + item.constructor === Object)) { + return $$('Hash').$new(item); + } + + return self.$Native(item); + }); + smap[key] = value + } else { + smap[key] = self.$Native(value); + } + + keys.push(key); + } + + return self; + } + + return $send(self, '_initialize', [defaults], block.$to_proc()); + ; + }, -1); + return $def(self, '$to_n', function $$to_n() { + var self = this; + + + var result = {}, + keys = self.$$keys, + smap = self.$$smap, + key, value; + + for (var i = 0, length = keys.length; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = smap[key]; + } else { + key = key.key; + value = key.value; + } + + result[key] = $$('Native').$try_convert(value, value); + } + + return result; + + }, 0); + })($nesting[0], null, $nesting) + }; + (function($base, $super) { + var self = $klass($base, $super, 'Module'); + + + return $def(self, '$native_module', function $$native_module() { + var self = this; + + return Opal.global[self.$name()] = self + }, 0) + })($nesting[0], null); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Class'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$native_alias', function $$native_alias(new_jsid, existing_mid) { + var self = this; + + + var aliased = self.prototype['$' + existing_mid]; + if (!aliased) { + self.$raise($$('NameError').$new("undefined method `" + (existing_mid) + "' for class `" + (self.$inspect()) + "'", existing_mid)); + } + self.prototype[new_jsid] = aliased; + + }, 2); + return $def(self, '$native_class', function $$native_class() { + var self = this; + + + self.$native_module(); + return self["new"] = self.$new;; + }, 0); + })($nesting[0], null, $nesting); + return ($gvars.$ = ($gvars.global = self.$Native(Opal.global))); +}; + +Opal.modules["buffer/array"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $gvars = Opal.gvars, $defs = Opal.defs, $eqeq = Opal.eqeq, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $truthy = Opal.truthy, $alias = Opal.alias; + + Opal.add_stubs('include,[],name_for,attr_reader,==,for,to_n,enum_for'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Buffer'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Array'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto["native"] = nil; + + self.$include($$$($$('Native'), 'Wrapper')); + $defs(self, '$for', function $Array_for$1(bits, type) { + if ($gvars.$ == null) $gvars.$ = nil; + + return $gvars.$['$[]']("" + ($$('Buffer').$name_for(bits, type)) + "Array") + }, 2); + self.$include($$('Enumerable')); + self.$attr_reader("buffer", "type"); + + $def(self, '$initialize', function $$initialize(buffer, bits, type) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + if (bits == null) bits = nil;; + + if (type == null) type = nil;; + if ($eqeq($$('Native'), buffer)) { + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [buffer], null) + } else { + + var klass = $$('Array').$for(bits, type); + + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [new klass(buffer.$to_n())], null) + + }; + self.buffer = buffer; + return (self.type = type); + }, -2); + + $def(self, '$bits', function $$bits() { + var self = this; + + return self["native"].BYTES_PER_ELEMENT * 8 + }, 0); + + $def(self, '$[]', function $Array_$$$2(index, offset) { + var self = this; + + + + if (offset == null) offset = nil;; + if ($truthy(offset)) { + return self["native"].subarray(index, offset) + } else { + return self["native"][index] + }; + }, -2); + + $def(self, '$[]=', function $Array_$$$eq$3(index, value) { + var self = this; + + return self["native"][index] = value + }, 2); + + $def(self, '$bytesize', function $$bytesize() { + var self = this; + + return self["native"].byteLength + }, 0); + + $def(self, '$each', function $$each() { + var $yield = $$each.$$p || nil, self = this; + + delete $$each.$$p; + + if (!($yield !== nil)) { + return self.$enum_for("each") + }; + + for (var i = 0, length = self["native"].length; i < length; i++) { + Opal.yield1($yield, self["native"][i]) + } + ; + return self; + }, 0); + + $def(self, '$length', function $$length() { + var self = this; + + return self["native"].length + }, 0); + + $def(self, '$merge!', function $Array_merge$excl$4(other, offset) { + var self = this; + + + ; + return self["native"].set(other.$to_n(), offset); + }, -2); + return $alias(self, "size", "length"); + })($nesting[0], null, $nesting) + })($nesting[0], null, $nesting) +}; + +Opal.modules["buffer/view"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $gvars = Opal.gvars, $defs = Opal.defs, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $alias = Opal.alias; + + Opal.add_stubs('include,!,nil?,[],attr_reader,native?,to_n,name_for'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Buffer'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'View'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto["native"] = nil; + + self.$include($$$($$('Native'), 'Wrapper')); + $defs(self, '$supported?', function $View_supported$ques$1() { + if ($gvars.$ == null) $gvars.$ = nil; + + return $gvars.$['$[]']("DataView")['$nil?']()['$!']() + }, 0); + self.$attr_reader("buffer", "offset"); + + $def(self, '$initialize', function $$initialize(buffer, offset, length) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + if (offset == null) offset = nil;; + + if (length == null) length = nil;; + if ($truthy(self['$native?'](buffer))) { + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [buffer], null) + } else if (($truthy(offset) && ($truthy(length)))) { + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [new DataView(buffer.$to_n(), offset.$to_n(), length.$to_n())], null) + } else if ($truthy(offset)) { + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [new DataView(buffer.$to_n(), offset.$to_n())], null) + } else { + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [new DataView(buffer.$to_n())], null) + }; + self.buffer = buffer; + return (self.offset = offset); + }, -2); + + $def(self, '$length', function $$length() { + var self = this; + + return self["native"].byteLength + }, 0); + + $def(self, '$get', function $$get(offset, bits, type, little) { + var self = this; + + + + if (bits == null) bits = 8;; + + if (type == null) type = "unsigned";; + + if (little == null) little = false;; + return self["native"]["get" + $$('Buffer').$name_for(bits, type)](offset, little); + }, -2); + $alias(self, "[]", "get"); + + $def(self, '$set', function $$set(offset, value, bits, type, little) { + var self = this; + + + + if (bits == null) bits = 8;; + + if (type == null) type = "unsigned";; + + if (little == null) little = false;; + return self["native"]["set" + $$('Buffer').$name_for(bits, type)](offset, value, little); + }, -3); + $alias(self, "[]=", "set"); + + $def(self, '$get_int8', function $$get_int8(offset, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].getInt8(offset, little); + }, -2); + + $def(self, '$set_int8', function $$set_int8(offset, value, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].setInt8(offset, value, little); + }, -3); + + $def(self, '$get_uint8', function $$get_uint8(offset, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].getUint8(offset, little); + }, -2); + + $def(self, '$set_uint8', function $$set_uint8(offset, value, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].setUint8(offset, value, little); + }, -3); + + $def(self, '$get_int16', function $$get_int16(offset, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].getInt16(offset, little); + }, -2); + + $def(self, '$set_int16', function $$set_int16(offset, value, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].setInt16(offset, value, little); + }, -3); + + $def(self, '$get_uint16', function $$get_uint16(offset, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].getUint16(offset, little); + }, -2); + + $def(self, '$set_uint16', function $$set_uint16(offset, value, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].setUint16(offset, value, little); + }, -3); + + $def(self, '$get_int32', function $$get_int32(offset, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].getInt32(offset, little); + }, -2); + + $def(self, '$set_int32', function $$set_int32(offset, value, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].setInt32(offset, value, little); + }, -3); + + $def(self, '$get_uint32', function $$get_uint32(offset, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].getUint32(offset, little); + }, -2); + + $def(self, '$set_uint32', function $$set_uint32(offset, value, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].setUint32(offset, value, little); + }, -3); + + $def(self, '$get_float32', function $$get_float32(offset, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].getFloat32(offset, little); + }, -2); + + $def(self, '$set_float32', function $$set_float32(offset, value, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].setFloat32(offset, value, little); + }, -3); + + $def(self, '$get_float64', function $$get_float64(offset, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].getFloat64(offset, little); + }, -2); + + $def(self, '$set_float64', function $$set_float64(offset, value, little) { + var self = this; + + + + if (little == null) little = false;; + return self["native"].setFloat64(offset, value, little); + }, -3); + return $alias(self, "size", "length"); + })($nesting[0], null, $nesting) + })($nesting[0], null, $nesting) +}; + +Opal.modules["buffer"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $gvars = Opal.gvars, $defs = Opal.defs, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $alias = Opal.alias; + + Opal.add_stubs('require,include,!,nil?,[],===,native?,new,pack,to_a'); + + self.$require("native"); + self.$require("buffer/array"); + self.$require("buffer/view"); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Buffer'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto["native"] = nil; + + self.$include($$$($$('Native'), 'Wrapper')); + $defs(self, '$supported?', function $Buffer_supported$ques$1() { + if ($gvars.$ == null) $gvars.$ = nil; + + return $gvars.$['$[]']("ArrayBuffer")['$nil?']()['$!']() + }, 0); + $defs(self, '$name_for', function $$name_for(bits, type) { + var part = nil, $ret_or_1 = nil; + + + part = ($eqeqeq("unsigned", ($ret_or_1 = type)) ? ("Uint") : ($eqeqeq("signed", $ret_or_1) ? ("Int") : ($eqeqeq("float", $ret_or_1) ? ("Float") : (nil)))); + return "" + (part) + (bits); + }, 2); + + $def(self, '$initialize', function $$initialize(size, bits) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + if (bits == null) bits = 8;; + if ($truthy(self['$native?'](size))) { + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [size], null) + } else { + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [new ArrayBuffer(size * (bits / 8))], null) + }; + }, -2); + + $def(self, '$length', function $$length() { + var self = this; + + return self["native"].byteLength + }, 0); + + $def(self, '$to_a', function $$to_a(bits, type) { + var self = this; + + + + if (bits == null) bits = 8;; + + if (type == null) type = "unsigned";; + return $$('Array').$new(self, bits, type); + }, -1); + + $def(self, '$view', function $$view(offset, length) { + var self = this; + + + + if (offset == null) offset = nil;; + + if (length == null) length = nil;; + return $$('View').$new(self, offset, length); + }, -1); + + $def(self, '$to_s', function $$to_s() { + var self = this; + + return self.$to_a().$to_a().$pack("c*") + }, 0); + return $alias(self, "size", "length"); + })($nesting[0], null, $nesting); +}; + +Opal.modules["corelib/process/status"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('attr_reader,=='); + return (function($base, $parent_nesting) { + var self = $module($base, 'Process'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Status'); + + var $proto = self.$$prototype; + + $proto.status = $proto.pid = nil; + + + $def(self, '$initialize', function $$initialize(status, pid) { + var $a, self = this; + + return $a = [status, pid], (self.status = $a[0]), (self.pid = $a[1]), $a + }, 2); + + $def(self, '$exitstatus', function $$exitstatus() { + var self = this; + + return self.status + }, 0); + self.$attr_reader("pid"); + + $def(self, '$success?', function $Status_success$ques$1() { + var self = this; + + return self.status['$=='](0) + }, 0); + return $def(self, '$inspect', function $$inspect() { + var self = this; + + return "#" + }, 0); + })($nesting[0], null) + })('::', $nesting) +}; + +Opal.modules["nodejs/kernel"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $hash2 = Opal.hash2, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $gvars = Opal.gvars, $neqeq = Opal.neqeq, $def = Opal.def; + + Opal.add_stubs('require,is_a?,first,shift,to_n,merge,empty?,===,[],new,!=,raise,==,encode,to_s'); + + self.$require("buffer"); + self.$require("corelib/process/status"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Kernel'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + if (self.__child_process__ == null) self.__child_process__ = nil; + + + self.__child_process__ = require('child_process'); + var __child_process__ = self.__child_process__; + + $def(self, '$system', function $$system($a, $b) { + var $post_args, $kwargs, argv, exception, self = this, env = nil, cmdname = nil, out = nil, status = nil, pid = nil; + + + + $post_args = Opal.slice.call(arguments); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + argv = $post_args;; + + exception = $kwargs.$$smap["exception"]; + if (exception == null) exception = false; + env = $hash2([], {}); + if ($truthy(argv.$first()['$is_a?']($$('Hash')))) { + env = argv.$shift() + }; + env = $$('ENV').$merge(env).$to_n(); + cmdname = argv.$shift(); + out = ($truthy(argv['$empty?']()) ? (__child_process__.spawnSync(cmdname, { shell: true, stdio: 'inherit', env: env })) : ($eqeqeq($$('Array'), cmdname) ? (__child_process__.spawnSync(cmdname['$[]'](0), argv, { argv0: cmdname['$[]'](1), stdio: 'inherit', env: env })) : (__child_process__.spawnSync(cmdname, argv, { stdio: 'inherit', env: env })))); + status = out["status"]; + if ($truthy(status === null)) { + status = 127 + }; + pid = out["pid"]; + $gvars["?"] = $$$($$('Process'), 'Status').$new(status, pid); + if (($truthy(exception) && ($neqeq(status, 0)))) { + self.$raise("Command failed with exit " + (status) + ": " + (cmdname)) + }; + return status['$=='](0); + }, -1); + return $def(self, '$`', function $Kernel_$$1(cmdline) { + + return $$('Buffer').$new(__child_process__.execSync(cmdline)).$to_s().$encode("UTF-8") + }, 1); + })($nesting[0], $nesting); +}; + +Opal.modules["corelib/file"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $klass = Opal.klass, $const_set = Opal.const_set, $Opal = Opal.Opal, $regexp = Opal.regexp, $rb_plus = Opal.rb_plus, $def = Opal.def, $Kernel = Opal.Kernel, $eqeq = Opal.eqeq, $rb_lt = Opal.rb_lt, $rb_minus = Opal.rb_minus, $range = Opal.range, $send = Opal.send, $alias = Opal.alias; + + Opal.add_stubs('respond_to?,to_path,coerce_to!,pwd,split,sub,+,unshift,join,home,raise,start_with?,absolute_path,==,<,dirname,-,basename,empty?,rindex,[],length,nil?,gsub,find,=~,map,each_with_index,flatten,reject,to_proc,end_with?'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'File'); + + var $nesting = [self].concat($parent_nesting), windows_root_rx = nil; + + + $const_set($nesting[0], 'Separator', $const_set($nesting[0], 'SEPARATOR', "/")); + $const_set($nesting[0], 'ALT_SEPARATOR', nil); + $const_set($nesting[0], 'PATH_SEPARATOR', ":"); + $const_set($nesting[0], 'FNM_SYSCASE', 0); + windows_root_rx = /^[a-zA-Z]:(?:\\|\/)/; + return (function(self, $parent_nesting) { + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$absolute_path', function $$absolute_path(path, basedir) { + var sep = nil, sep_chars = nil, new_parts = nil, $ret_or_1 = nil, path_abs = nil, basedir_abs = nil, parts = nil, leading_sep = nil, abs = nil, new_path = nil; + + + + if (basedir == null) basedir = nil;; + sep = $$('SEPARATOR'); + sep_chars = $sep_chars(); + new_parts = []; + path = ($truthy(path['$respond_to?']("to_path")) ? (path.$to_path()) : (path)); + path = $Opal['$coerce_to!'](path, $$$('String'), "to_str"); + basedir = ($truthy(($ret_or_1 = basedir)) ? ($ret_or_1) : ($$$('Dir').$pwd())); + path_abs = path.substr(0, sep.length) === sep || windows_root_rx.test(path); + basedir_abs = basedir.substr(0, sep.length) === sep || windows_root_rx.test(basedir); + if ($truthy(path_abs)) { + + parts = path.$split($regexp(["[", sep_chars, "]"])); + leading_sep = windows_root_rx.test(path) ? '' : path.$sub($regexp(["^([", sep_chars, "]+).*$"]), "\\1"); + abs = true; + } else { + + parts = $rb_plus(basedir.$split($regexp(["[", sep_chars, "]"])), path.$split($regexp(["[", sep_chars, "]"]))); + leading_sep = windows_root_rx.test(basedir) ? '' : basedir.$sub($regexp(["^([", sep_chars, "]+).*$"]), "\\1"); + abs = basedir_abs; + }; + + var part; + for (var i = 0, ii = parts.length; i < ii; i++) { + part = parts[i]; + + if ( + (part === nil) || + (part === '' && ((new_parts.length === 0) || abs)) || + (part === '.' && ((new_parts.length === 0) || abs)) + ) { + continue; + } + if (part === '..') { + new_parts.pop(); + } else { + new_parts.push(part); + } + } + + if (!abs && parts[0] !== '.') { + new_parts.$unshift(".") + } + ; + new_path = new_parts.$join(sep); + if ($truthy(abs)) { + new_path = $rb_plus(leading_sep, new_path) + }; + return new_path; + }, -2); + + $def(self, '$expand_path', function $$expand_path(path, basedir) { + var self = this, sep = nil, sep_chars = nil, home = nil, leading_sep = nil, home_path_regexp = nil; + + + + if (basedir == null) basedir = nil;; + sep = $$('SEPARATOR'); + sep_chars = $sep_chars(); + if ($truthy(path[0] === '~' || (basedir && basedir[0] === '~'))) { + + home = $$('Dir').$home(); + if (!$truthy(home)) { + $Kernel.$raise($$$('ArgumentError'), "couldn't find HOME environment -- expanding `~'") + }; + leading_sep = windows_root_rx.test(home) ? '' : home.$sub($regexp(["^([", sep_chars, "]+).*$"]), "\\1"); + if (!$truthy(home['$start_with?'](leading_sep))) { + $Kernel.$raise($$$('ArgumentError'), "non-absolute home") + }; + home = $rb_plus(home, sep); + home_path_regexp = $regexp(["^\\~(?:", sep, "|$)"]); + path = path.$sub(home_path_regexp, home); + if ($truthy(basedir)) { + basedir = basedir.$sub(home_path_regexp, home) + }; + }; + return self.$absolute_path(path, basedir); + }, -2); + + // Coerce a given path to a path string using #to_path and #to_str + function $coerce_to_path(path) { + if ($truthy((path)['$respond_to?']("to_path"))) { + path = path.$to_path(); + } + + path = $Opal['$coerce_to!'](path, $$$('String'), "to_str"); + + return path; + } + + // Return a RegExp compatible char class + function $sep_chars() { + if ($$('ALT_SEPARATOR') === nil) { + return Opal.escape_regexp($$('SEPARATOR')); + } else { + return Opal.escape_regexp($rb_plus($$('SEPARATOR'), $$('ALT_SEPARATOR'))); + } + } + ; + + $def(self, '$dirname', function $$dirname(path, level) { + var self = this, sep_chars = nil; + + + + if (level == null) level = 1;; + if ($eqeq(level, 0)) { + return path + }; + if ($truthy($rb_lt(level, 0))) { + $Kernel.$raise($$$('ArgumentError'), "level can't be negative") + }; + sep_chars = $sep_chars(); + path = $coerce_to_path(path); + + var absolute = path.match(new RegExp("^[" + (sep_chars) + "]")), out; + + path = path.replace(new RegExp("[" + (sep_chars) + "]+$"), ''); // remove trailing separators + path = path.replace(new RegExp("[^" + (sep_chars) + "]+$"), ''); // remove trailing basename + path = path.replace(new RegExp("[" + (sep_chars) + "]+$"), ''); // remove final trailing separators + + if (path === '') { + out = absolute ? '/' : '.'; + } + else { + out = path; + } + + if (level == 1) { + return out; + } + else { + return self.$dirname(out, $rb_minus(level, 1)) + } + ; + }, -2); + + $def(self, '$basename', function $$basename(name, suffix) { + var sep_chars = nil; + + + + if (suffix == null) suffix = nil;; + sep_chars = $sep_chars(); + name = $coerce_to_path(name); + + if (name.length == 0) { + return name; + } + + if (suffix !== nil) { + suffix = $Opal['$coerce_to!'](suffix, $$$('String'), "to_str") + } else { + suffix = null; + } + + name = name.replace(new RegExp("(.)[" + (sep_chars) + "]*$"), '$1'); + name = name.replace(new RegExp("^(?:.*[" + (sep_chars) + "])?([^" + (sep_chars) + "]+)$"), '$1'); + + if (suffix === ".*") { + name = name.replace(/\.[^\.]+$/, ''); + } else if(suffix !== null) { + suffix = Opal.escape_regexp(suffix); + name = name.replace(new RegExp("" + (suffix) + "$"), ''); + } + + return name; + ; + }, -2); + + $def(self, '$extname', function $$extname(path) { + var self = this, filename = nil, last_dot_idx = nil; + + + path = $coerce_to_path(path); + filename = self.$basename(path); + if ($truthy(filename['$empty?']())) { + return "" + }; + last_dot_idx = filename['$[]']($range(1, -1, false)).$rindex("."); + if (($truthy(last_dot_idx['$nil?']()) || ($eqeq($rb_plus(last_dot_idx, 1), $rb_minus(filename.$length(), 1))))) { + return "" + } else { + return filename['$[]'](Opal.Range.$new($rb_plus(last_dot_idx, 1), -1, false)) + }; + }, 1); + + $def(self, '$exist?', function $exist$ques$1(path) { + + return Opal.modules[path] != null + }, 1); + + $def(self, '$directory?', function $directory$ques$2(path) { + var files = nil, file = nil; + + + files = []; + + for (var key in Opal.modules) { + files.push(key) + } + ; + path = path.$gsub($regexp(["(^.", $$('SEPARATOR'), "+|", $$('SEPARATOR'), "+$)"])); + file = $send(files, 'find', [], function $$3(f){ + + + if (f == null) f = nil;; + return f['$=~']($regexp(["^", path]));}, 1); + return file; + }, 1); + + $def(self, '$join', function $$join($a) { + var $post_args, paths, result = nil; + + + + $post_args = Opal.slice.call(arguments); + + paths = $post_args;; + if ($truthy(paths['$empty?']())) { + return "" + }; + result = ""; + paths = $send(paths.$flatten().$each_with_index(), 'map', [], function $$4(item, index){ + + + if (item == null) item = nil;; + + if (index == null) index = nil;; + if (($eqeq(index, 0) && ($truthy(item['$empty?']())))) { + return $$('SEPARATOR') + } else if (($eqeq(paths.$length(), $rb_plus(index, 1)) && ($truthy(item['$empty?']())))) { + return $$('SEPARATOR') + } else { + return item + };}, 2); + paths = $send(paths, 'reject', [], "empty?".$to_proc()); + $send(paths, 'each_with_index', [], function $$5(item, index){var next_item = nil; + + + + if (item == null) item = nil;; + + if (index == null) index = nil;; + next_item = paths['$[]']($rb_plus(index, 1)); + if ($truthy(next_item['$nil?']())) { + return (result = "" + (result) + (item)) + } else { + + if (($truthy(item['$end_with?']($$('SEPARATOR'))) && ($truthy(next_item['$start_with?']($$('SEPARATOR')))))) { + item = item.$sub($regexp([$$('SEPARATOR'), "+$"]), "") + }; + return (result = (($truthy(item['$end_with?']($$('SEPARATOR'))) || ($truthy(next_item['$start_with?']($$('SEPARATOR'))))) ? ("" + (result) + (item)) : ("" + (result) + (item) + ($$('SEPARATOR'))))); + };}, 2); + return result; + }, -1); + + $def(self, '$split', function $$split(path) { + + return path.$split($$('SEPARATOR')) + }, 1); + $alias(self, "realpath", "expand_path"); + return $alias(self, "exists?", "exist?"); + })(Opal.get_singleton_class(self), $nesting); + })('::', $$$('IO'), $nesting) +}; + +Opal.modules["nodejs/file"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $truthy = Opal.truthy, $const_set = Opal.const_set, $defs = Opal.defs, $alias = Opal.alias, $send = Opal.send, $neqeq = Opal.neqeq, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('require,constants,raise,warn,const_get,new,error,size,respond_to?,path,join,call,start_with?,first,exist?,realpath,!=,close,to_path,pwd,to_str,include?,delete,match?,sub,attr_reader'); + + self.$require("corelib/file"); + + var warnings = {}, errno_codes = $$('Errno').$constants(); + + function handle_unsupported_feature(message) { + switch (Opal.config.unsupported_features_severity) { + case 'error': + $$('Kernel').$raise($$('NotImplementedError'), message) + break; + case 'warning': + warn(message) + break; + default: // ignore + // noop + } + } + function warn(string) { + if (warnings[string]) { + return; + } + warnings[string] = true; + self.$warn(string); + } + function is_utf8(bytes) { + var i = 0; + while (i < bytes.length) { + if ((// ASCII + bytes[i] === 0x09 || + bytes[i] === 0x0A || + bytes[i] === 0x0D || + (0x20 <= bytes[i] && bytes[i] <= 0x7E) + ) + ) { + i += 1; + continue; + } + + if ((// non-overlong 2-byte + (0xC2 <= bytes[i] && bytes[i] <= 0xDF) && + (0x80 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) + ) + ) { + i += 2; + continue; + } + + if ((// excluding overlongs + bytes[i] === 0xE0 && + (0xA0 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) && + (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) + ) || + (// straight 3-byte + ((0xE1 <= bytes[i] && bytes[i] <= 0xEC) || + bytes[i] === 0xEE || + bytes[i] === 0xEF) && + (0x80 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) && + (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) + ) || + (// excluding surrogates + bytes[i] === 0xED && + (0x80 <= bytes[i + 1] && bytes[i + 1] <= 0x9F) && + (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) + ) + ) { + i += 3; + continue; + } + + if ((// planes 1-3 + bytes[i] === 0xF0 && + (0x90 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) && + (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) && + (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF) + ) || + (// planes 4-15 + (0xF1 <= bytes[i] && bytes[i] <= 0xF3) && + (0x80 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) && + (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) && + (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF) + ) || + (// plane 16 + bytes[i] === 0xF4 && + (0x80 <= bytes[i + 1] && bytes[i + 1] <= 0x8F) && + (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) && + (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF) + ) + ) { + i += 4; + continue; + } + + return false; + } + + return true; + } + function executeIOAction(action) { + try { + return action(); + } catch (error) { + if (errno_codes.indexOf(error.code) >= 0) { + var error_class = $$('Errno').$const_get(error.code) + $$('Kernel').$raise((error_class).$new(error.message)) + } + $$('Kernel').$raise(self.$error()) + } + } +; + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'File'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + if (self.__fs__ == null) self.__fs__ = nil; + if (self.__path__ == null) self.__path__ = nil; + if (self.__util__ == null) self.__util__ = nil; + + $proto.eof = $proto.binary_flag = $proto.path = $proto.fd = nil; + + self.__fs__ = require('fs'); + self.__path__ = require('path'); + self.__util__ = require('util'); + var __fs__ = self.__fs__; + var __path__ = self.__path__; + var __util__ = self.__util__; + var __TextEncoder__ = typeof TextEncoder !== 'undefined' ? TextEncoder : __util__.TextEncoder; + var __TextDecoder__ = typeof TextDecoder !== 'undefined' ? TextDecoder : __util__.TextDecoder; + var __utf8TextDecoder__ = new __TextDecoder__('utf8'); + var __textEncoder__ = new __TextEncoder__(); + if ($truthy(__path__.sep !== $$('Separator'))) { + $const_set($nesting[0], 'ALT_SEPARATOR', __path__.sep) + }; + $defs(self, '$read', function $$read(path) { + + return executeIOAction(function(){return __fs__.readFileSync(path).toString()}) + }, 1); + $defs(self, '$write', function $$write(path, data) { + + + executeIOAction(function(){return __fs__.writeFileSync(path, data)}); + return data.$size(); + }, 2); + $defs(self, '$delete', function $File_delete$1(path) { + + return executeIOAction(function(){return __fs__.unlinkSync(path)}) + }, 1); + (function(self, $parent_nesting) { + + return $alias(self, "unlink", "delete") + })(Opal.get_singleton_class(self), $nesting); + $defs(self, '$exist?', function $File_exist$ques$2(path) { + + + if ($truthy(path['$respond_to?']("path"))) { + path = path.$path() + }; + return executeIOAction(function(){return __fs__.existsSync(path)}); + }, 1); + $defs(self, '$realpath', function $$realpath(pathname, dir_string, cache) { + var block = $$realpath.$$p || nil, self = this; + + delete $$realpath.$$p; + + ; + + if (dir_string == null) dir_string = nil;; + + if (cache == null) cache = nil;; + if ($truthy(dir_string)) { + pathname = self.$join(dir_string, pathname) + }; + if ((block !== nil)) { + + __fs__.realpath(pathname, cache, function(error, realpath){ + if (error) Opal.IOError.$new(error.message) + else block.$call(realpath) + }) + + } else { + return executeIOAction(function(){return __fs__.realpathSync(pathname, cache)}) + }; + }, -2); + $defs(self, '$join', function $$join($a) { + var $post_args, paths, $b, prefix = nil; + + + + $post_args = Opal.slice.call(arguments); + + paths = $post_args;; + prefix = ($truthy(($b = paths.$first(), ($b === nil || $b == null) ? nil : $send($b, 'start_with?', ["//"]))) ? ("/") : ("")); + return prefix + __path__.posix.join.apply(__path__, paths); + }, -1); + $defs(self, '$directory?', function $File_directory$ques$3(path) { + var self = this, result = nil, realpath = nil; + + + if (!$truthy(self['$exist?'](path))) { + return false + }; + result = executeIOAction(function(){return !!__fs__.lstatSync(path).isDirectory()}); + if (!$truthy(result)) { + + realpath = self.$realpath(path); + if ($neqeq(realpath, path)) { + result = executeIOAction(function(){return !!__fs__.lstatSync(realpath).isDirectory()}) + }; + }; + return result; + }, 1); + $defs(self, '$file?', function $File_file$ques$4(path) { + var self = this, result = nil, realpath = nil; + + + if (!$truthy(self['$exist?'](path))) { + return false + }; + result = executeIOAction(function(){return !!__fs__.lstatSync(path).isFile()}); + if (!$truthy(result)) { + + realpath = self.$realpath(path); + if ($neqeq(realpath, path)) { + result = executeIOAction(function(){return !!__fs__.lstatSync(realpath).isFile()}) + }; + }; + return result; + }, 1); + $defs(self, '$readable?', function $File_readable$ques$5(path) { + var self = this; + + + if (!$truthy(self['$exist?'](path))) { + return false + }; + return "\n" + " try {\n" + " __fs__.accessSync(path, __fs__.R_OK);\n" + " return true;\n" + " } catch (error) {\n" + " return false;\n" + " }\n" + " "; + }, 1); + $defs(self, '$size', function $$size(path) { + + return executeIOAction(function(){return __fs__.lstatSync(path).size}); + }, 1); + $defs(self, '$open', function $$open(path, mode) { + var $yield = $$open.$$p || nil, self = this, file = nil; + + delete $$open.$$p; + + + if (mode == null) mode = "r";; + file = self.$new(path, mode); + if (($yield !== nil)) { + + return (function() { try { + return Opal.yield1($yield, file); + } finally { + file.$close() + }; })(); + } else { + return file + }; + }, -2); + $defs(self, '$stat', function $$stat(path) { + + + if ($truthy(path['$respond_to?']("path"))) { + path = path.$path() + }; + return $$$($$('File'), 'Stat').$new(path); + }, 1); + $defs(self, '$mtime', function $$mtime(path) { + + return executeIOAction(function(){return __fs__.statSync(path).mtime}) + }, 1); + $defs(self, '$symlink?', function $File_symlink$ques$6(path) { + + return executeIOAction(function(){return __fs__.lstatSync(path).isSymbolicLink()}) + }, 1); + $defs(self, '$absolute_path', function $$absolute_path(path, basedir) { + var $ret_or_1 = nil; + + + + if (basedir == null) basedir = nil;; + path = ($truthy(path['$respond_to?']("to_path")) ? (path.$to_path()) : (path)); + basedir = ($truthy(($ret_or_1 = basedir)) ? ($ret_or_1) : ($$('Dir').$pwd())); + return __path__.normalize(__path__.resolve(basedir.$to_str(), path.$to_str())).split(__path__.sep).join(__path__.posix.sep); + }, -2); + + $def(self, '$initialize', function $$initialize(path, flags) { + var $yield = $$initialize.$$p || nil, self = this, encoding_option_rx = nil, fd = nil; + + delete $$initialize.$$p; + + + if (flags == null) flags = "r";; + self.binary_flag = flags['$include?']("b"); + flags = flags.$delete("b"); + encoding_option_rx = /:(.*)/; + if ($truthy(encoding_option_rx['$match?'](flags))) { + + handle_unsupported_feature("Encoding option (:encoding) is unsupported by Node.js openSync method and will be removed."); + flags = flags.$sub(encoding_option_rx, ""); + }; + self.path = path; + fd = executeIOAction(function(){return __fs__.openSync(path, flags)}); + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [fd, flags], null); + }, -2); + self.$attr_reader("path"); + + $def(self, '$sysread', function $$sysread(bytes) { + var self = this, res = nil; + + if ($truthy(self.eof)) { + return self.$raise($$('EOFError'), "end of file reached") + } else { + + if ($truthy(self.binary_flag)) { + + + var buf = executeIOAction(function(){return __fs__.readFileSync(self.path)}) + var content + if (is_utf8(buf)) { + content = buf.toString('utf8') + } else { + // coerce to utf8 + content = __utf8TextDecoder__.decode(__textEncoder__.encode(buf.toString('binary'))) + } + ; + res = content; + } else { + res = executeIOAction(function(){return __fs__.readFileSync(self.path).toString('utf8')}) + }; + self.eof = true; + self.lineno = res.$size(); + return res; + } + }, 1); + + $def(self, '$write', function $$write(string) { + var self = this; + + return executeIOAction(function(){return __fs__.writeSync(self.fd, string)}) + }, 1); + + $def(self, '$flush', function $$flush() { + var self = this; + + return executeIOAction(function(){return __fs__.fsyncSync(self.fd)}) + }, 0); + + $def(self, '$close', function $$close() { + var $yield = $$close.$$p || nil, self = this; + + delete $$close.$$p; + + executeIOAction(function(){return __fs__.closeSync(self.fd)}); + return $send2(self, $find_super(self, 'close', $$close, false, true), 'close', [], $yield); + }, 0); + return $def(self, '$mtime', function $$mtime() { + var self = this; + + return executeIOAction(function(){return __fs__.statSync(self.path).mtime}) + }, 0); + })($nesting[0], $$('IO'), $nesting); + return (function($base, $super) { + var self = $klass($base, $super, 'Stat'); + + var $proto = self.$$prototype; + if (self.__fs__ == null) self.__fs__ = nil; + + $proto.path = nil; + + self.__fs__ = require('fs'); + var __fs__ = self.__fs__; + + $def(self, '$initialize', function $$initialize(path) { + var self = this; + + return (self.path = path) + }, 1); + + $def(self, '$file?', function $Stat_file$ques$7() { + var self = this; + + return executeIOAction(function(){return __fs__.statSync(self.path).isFile()}) + }, 0); + + $def(self, '$directory?', function $Stat_directory$ques$8() { + var self = this; + + return executeIOAction(function(){return __fs__.statSync(self.path).isDirectory()}) + }, 0); + + $def(self, '$mtime', function $$mtime() { + var self = this; + + return executeIOAction(function(){return __fs__.statSync(self.path).mtime}) + }, 0); + + $def(self, '$readable?', function $Stat_readable$ques$9() { + var self = this; + + return executeIOAction(function(){return __fs__.accessSync(self.path, __fs__.constants.R_OK)}) + }, 0); + + $def(self, '$writable?', function $Stat_writable$ques$10() { + var self = this; + + return executeIOAction(function(){return __fs__.accessSync(self.path, __fs__.constants.W_OK)}) + }, 0); + return $def(self, '$executable?', function $Stat_executable$ques$11() { + var self = this; + + return executeIOAction(function(){return __fs__.accessSync(self.path, __fs__.constants.X_OK)}) + }, 0); + })($$('File'), null); +}; + +Opal.modules["nodejs/dir"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $Opal = Opal.Opal, $alias = Opal.alias; + + Opal.add_stubs('respond_to?,flat_map,to_path,coerce_to!'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Dir'); + + var $nesting = [self].concat($parent_nesting); + if (self.__glob__ == null) self.__glob__ = nil; + if (self.__fs__ == null) self.__fs__ = nil; + if (self.__path__ == null) self.__path__ = nil; + if (self.__os__ == null) self.__os__ = nil; + + + self.__glob__ = require('glob'); + self.__fs__ = require('fs'); + self.__path__ = require('path'); + self.__os__ = require('os'); + var __glob__ = self.__glob__; + var __fs__ = self.__fs__; + var __path__ = self.__path__; + var __os__ = self.__os__; + return (function(self, $parent_nesting) { + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$[]', function $$$1(glob) { + + return __glob__.sync(glob) + }, 1); + + $def(self, '$pwd', function $$pwd() { + + return process.cwd().split(__path__.sep).join(__path__.posix.sep); + }, 0); + + $def(self, '$home', function $$home() { + + return __os__.homedir(); + }, 0); + + $def(self, '$chdir', function $$chdir(path) { + + return process.chdir(path) + }, 1); + + $def(self, '$mkdir', function $$mkdir(path) { + + return __fs__.mkdirSync(path) + }, 1); + + $def(self, '$entries', function $$entries(dirname) { + + + var result = []; + var entries = __fs__.readdirSync(dirname); + for (var i = 0, ii = entries.length; i < ii; i++) { + result.push(entries[i]); + } + return result; + + }, 1); + + $def(self, '$glob', function $$glob(pattern) { + + + if (!$truthy(pattern['$respond_to?']("each"))) { + pattern = [pattern] + }; + return $send(pattern, 'flat_map', [], function $$2(subpattern){ + + + if (subpattern == null) subpattern = nil;; + if ($truthy(subpattern['$respond_to?']("to_path"))) { + subpattern = subpattern.$to_path() + }; + subpattern = $Opal['$coerce_to!'](subpattern, $$('String'), "to_str"); + return __glob__.sync(subpattern);;}, 1); + }, 1); + return $alias(self, "getwd", "pwd"); + })(Opal.get_singleton_class(self), $nesting); + })($nesting[0], null, $nesting) +}; + +Opal.modules["nodejs/io"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $klass = Opal.klass, $alias = Opal.alias, $def = Opal.def, $defs = Opal.defs; + + Opal.add_stubs('require,attr_reader,initialize_before_node_io,write,read'); + + self.$require("nodejs/file"); + + function executeIOAction(action) { + try { + return action(); + } catch (error) { + if (error.code === 'EACCES' || + error.code === 'EISDIR' || + error.code === 'EMFILE' || + error.code === 'ENOENT' || + error.code === 'EPERM') { + throw Opal.IOError.$new(error.message) + } + throw error; + } + } +; + var __fs__ = require('fs'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'IO'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.__fs__ = __fs__; + self.$attr_reader("lineno"); + $alias(self, "initialize_before_node_io", "initialize"); + + $def(self, '$initialize', function $$initialize(fd, flags) { + var self = this; + + + + if (flags == null) flags = "r";; + self.lineno = 0; + return self.$initialize_before_node_io(fd, flags); + }, -2); + $defs(self, '$write', function $$write(path, data) { + + return $$('File').$write(path, data) + }, 2); + $defs(self, '$read', function $$read(path) { + + return $$('File').$read(path) + }, 1); + return $defs(self, '$binread', function $$binread(path) { + + return executeIOAction(function(){return __fs__.readFileSync(path).toString('binary')}) + }, 1); + })($nesting[0], null, $nesting); +}; + +Opal.modules["nodejs/argf"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $const_set = Opal.const_set, $def = Opal.def, $eqeq = Opal.eqeq, $gvars = Opal.gvars, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $rb_gt = Opal.rb_gt, $not = Opal.not, $alias = Opal.alias, $writer = nil; + + Opal.add_stubs('new,include,filename,==,open,argv,shift,close,file,closed?,enum_for,gets,nil?,+,loop,read,-,length,>,to_a,each,attr_accessor,rewind,!,fileno,eof?,lineno='); + + $const_set($nesting[0], 'ARGF', $$('Object').$new()); + (function(self, $parent_nesting) { + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$include($$('Enumerable')); + + $def(self, '$inspect', function $$inspect() { + + return "ARGF" + }, 0); + + $def(self, '$argv', function $$argv() { + + return $$('ARGV') + }, 0); + + $def(self, '$file', function $$file() { + var self = this, fn = nil, $ret_or_1 = nil; + if (self.file == null) self.file = nil; + if ($gvars.stdin == null) $gvars.stdin = nil; + + + fn = self.$filename(); + if ($eqeq(fn, "-")) { + return $gvars.stdin + } else { + return (self.file = ($truthy(($ret_or_1 = self.file)) ? ($ret_or_1) : ($$('File').$open(fn, "r")))) + }; + }, 0); + + $def(self, '$filename', function $$filename() { + var self = this, $ret_or_1 = nil; + if (self.filename == null) self.filename = nil; + if (self.last_filename == null) self.last_filename = nil; + + + if ($truthy(self.filename)) { + return self.filename + }; + if ($eqeq(self.$argv(), ["-"])) { + return "-" + } else if ($eqeq(self.$argv(), [])) { + if ($truthy(($ret_or_1 = self.last_filename))) { + return $ret_or_1 + } else { + return "-" + } + } else { + + self.file = nil; + return (self.filename = (self.last_filename = self.$argv().$shift())); + }; + }, 0); + + $def(self, '$close', function $$close() { + var self = this; + + + self.$file().$close(); + self.filename = nil; + return self; + }, 0); + + $def(self, '$closed?', function $closed$ques$1() { + var self = this; + + return self.$file()['$closed?']() + }, 0); + + $def(self, '$each', function $$each($a) { + var block = $$each.$$p || nil, $post_args, args, $b, self = this, l = nil; + + delete $$each.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if (!(block !== nil)) { + return self.$enum_for("each") + }; + while ($truthy((l = $send(self, 'gets', $to_a(args))))) { + Opal.yield1(block, l) + }; + }, -1); + + $def(self, '$gets', function $$gets($a) { + var $post_args, args, self = this, s = nil; + if (self.lineno == null) self.lineno = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + s = $send(self.$file(), 'gets', $to_a(args)); + if ($truthy(s['$nil?']())) { + + self.$close(); + s = $send(self.$file(), 'gets', $to_a(args)); + }; + if ($truthy(s)) { + self.lineno = $rb_plus(self.lineno, 1) + }; + return s; + }, -1); + + $def(self, '$read', function $$read(len) { + var self = this, buf = nil; + + + + if (len == null) len = nil;; + buf = ""; + return (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], function $$2(){var self = $$2.$$s == null ? this : $$2.$$s, r = nil; + if (self.filename == null) self.filename = nil; + + + r = self.$file().$read(len); + if ($truthy(r)) { + + buf = $rb_plus(buf, r); + len = $rb_minus(len, r.$length()); + }; + self.$file().$close(); + if ((($truthy(len) && ($truthy($rb_gt(len, 0)))) && ($truthy(self.filename)))) { + + Opal.brk(nil, $brk) + } else { + return nil + };}, {$$arity: 0, $$s: self, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + }, -1); + + $def(self, '$readlines', function $$readlines($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send(self, 'each', $to_a(args)).$to_a(); + }, -1); + self.$attr_accessor("lineno"); + + $def(self, '$rewind', function $$rewind() { + var self = this, f = nil; + + + self.lineno = 1; + f = self.$file(); + + try { + f.$rewind() + } catch ($err) { + if (Opal.rescue($err, [$$('StandardError')])) { + try { + nil + } finally { Opal.pop_exception(); } + } else { throw $err; } + };; + return 0; + }, 0); + + $def(self, '$fileno', function $$fileno() { + var self = this; + if (self.last_filename == null) self.last_filename = nil; + if (self.filename == null) self.filename = nil; + + + if (($not(self.filename) && ($truthy(self.last_filename)))) { + return 0 + }; + return self.$file().$fileno(); + }, 0); + + $def(self, '$eof?', function $eof$ques$3() { + var self = this; + + return self.$file()['$eof?']() + }, 0); + $alias(self, "each_line", "each"); + $alias(self, "eof", "eof?"); + $alias(self, "path", "filename"); + $alias(self, "skip", "close"); + $alias(self, "to_i", "fileno"); + return $alias(self, "to_io", "file"); + })(Opal.get_singleton_class($$('ARGF')), $nesting); + + $writer = [1]; + $send($$('ARGF'), 'lineno=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; +}; + +Opal.modules["nodejs/open-uri"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $defs = Opal.defs; + + return (function($base) { + var self = $module($base, 'OpenURI'); + + if (self.__xmlhttprequest__ == null) self.__xmlhttprequest__ = nil; + + + self.__xmlhttprequest__ = require('unxhr'); + var __XMLHttpRequest__ = self.__xmlhttprequest__.XMLHttpRequest; + $defs(self, '$request', function $$request(uri) { + + + var xhr = new __XMLHttpRequest__(); + xhr.open('GET', uri, false); + xhr.responseType = 'arraybuffer'; + xhr.send(); + return xhr; + + }, 1); + return $defs(self, '$data', function $$data(req) { + + + var arrayBuffer = req.response; + var byteArray = new Uint8Array(arrayBuffer); + var result = [] + for (var i = 0; i < byteArray.byteLength; i++) { + result.push(byteArray[i]); + } + return result; + + }, 1); + })($nesting[0]) +}; + +Opal.modules["corelib/comparable"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $module = Opal.module, $rb_gt = Opal.rb_gt, $rb_lt = Opal.rb_lt, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $def = Opal.def; + + Opal.add_stubs('>,<,===,raise,class,<=>,equal?'); + return (function($base) { + var self = $module($base, 'Comparable'); + + var $ret_or_1 = nil; + + + + function normalize(what) { + if (Opal.is_a(what, Opal.Integer)) { return what; } + + if ($rb_gt(what, 0)) { return 1; } + if ($rb_lt(what, 0)) { return -1; } + return 0; + } + + function fail_comparison(lhs, rhs) { + var class_name; + (($eqeqeq(nil, ($ret_or_1 = rhs)) || (($eqeqeq(true, $ret_or_1) || (($eqeqeq(false, $ret_or_1) || (($eqeqeq($$$('Integer'), $ret_or_1) || ($eqeqeq($$$('Float'), $ret_or_1))))))))) ? (class_name = rhs.$inspect()) : (class_name = rhs.$$class)) + $Kernel.$raise($$$('ArgumentError'), "comparison of " + ((lhs).$class()) + " with " + (class_name) + " failed") + } + + function cmp_or_fail(lhs, rhs) { + var cmp = (lhs)['$<=>'](rhs); + if (!$truthy(cmp)) fail_comparison(lhs, rhs); + return normalize(cmp); + } + ; + + $def(self, '$==', function $Comparable_$eq_eq$1(other) { + var self = this, cmp = nil; + + + if ($truthy(self['$equal?'](other))) { + return true + }; + + if (self["$<=>"] == Opal.Kernel["$<=>"]) { + return false; + } + + // check for infinite recursion + if (self.$$comparable) { + delete self.$$comparable; + return false; + } + ; + if (!$truthy((cmp = self['$<=>'](other)))) { + return false + }; + return normalize(cmp) == 0;; + }, 1); + + $def(self, '$>', function $Comparable_$gt$2(other) { + var self = this; + + return cmp_or_fail(self, other) > 0; + }, 1); + + $def(self, '$>=', function $Comparable_$gt_eq$3(other) { + var self = this; + + return cmp_or_fail(self, other) >= 0; + }, 1); + + $def(self, '$<', function $Comparable_$lt$4(other) { + var self = this; + + return cmp_or_fail(self, other) < 0; + }, 1); + + $def(self, '$<=', function $Comparable_$lt_eq$5(other) { + var self = this; + + return cmp_or_fail(self, other) <= 0; + }, 1); + + $def(self, '$between?', function $Comparable_between$ques$6(min, max) { + var self = this; + + + if ($rb_lt(self, min)) { + return false + }; + if ($rb_gt(self, max)) { + return false + }; + return true; + }, 2); + return $def(self, '$clamp', function $$clamp(min, max) { + var self = this; + + + + if (max == null) max = nil;; + + var c, excl; + + if (max === nil) { + // We are dealing with a new Ruby 2.7 behaviour that we are able to + // provide a single Range argument instead of 2 Comparables. + + if (!Opal.is_a(min, Opal.Range)) { + $Kernel.$raise($$$('TypeError'), "wrong argument type " + (min.$class()) + " (expected Range)") + } + + excl = min.excl; + max = min.end; + min = min.begin; + + if (max !== nil && excl) { + $Kernel.$raise($$$('ArgumentError'), "cannot clamp with an exclusive range") + } + } + + if (min !== nil && max !== nil && cmp_or_fail(min, max) > 0) { + $Kernel.$raise($$$('ArgumentError'), "min argument must be smaller than max argument") + } + + if (min !== nil) { + c = cmp_or_fail(self, min); + + if (c == 0) return self; + if (c < 0) return min; + } + + if (max !== nil) { + c = cmp_or_fail(self, max); + + if (c > 0) return max; + } + + return self; + ; + }, -2); + })('::') +}; + +Opal.modules["pathname"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $const_set = Opal.const_set, $regexp = Opal.regexp, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $def = Opal.def, $defs = Opal.defs, $to_ary = Opal.to_ary, $send = Opal.send, $to_a = Opal.to_a, $neqeq = Opal.neqeq, $rb_plus = Opal.rb_plus, $not = Opal.not, $alias = Opal.alias, $module = Opal.module; + + Opal.add_stubs('require,include,quote,===,to_s,path,respond_to?,to_path,is_a?,nil?,raise,class,==,new,pwd,attr_reader,!,relative?,chop_basename,basename,=~,source,[],rindex,sub,absolute?,expand_path,plus,unshift,length,!=,empty?,first,shift,+,join,dirname,pop,reverse_each,directory?,extname,<=>,nonzero?,proc,casecmp,cleanpath,inspect,include?,fill,map,entries'); + + self.$require("corelib/comparable"); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Pathname'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.path = nil; + + self.$include($$('Comparable')); + $const_set($nesting[0], 'SEPARATOR_PAT', $regexp([$$('Regexp').$quote($$$($$('File'), 'SEPARATOR'))])); + + $def(self, '$initialize', function $$initialize(path) { + var self = this; + + + if ($eqeqeq($$('Pathname'), path)) { + self.path = path.$path().$to_s() + } else if ($truthy(path['$respond_to?']("to_path"))) { + self.path = path.$to_path() + } else if ($truthy(path['$is_a?']($$('String')))) { + self.path = path + } else if ($truthy(path['$nil?']())) { + self.$raise($$('TypeError'), "no implicit conversion of nil into String") + } else { + self.$raise($$('TypeError'), "no implicit conversion of " + (path.$class()) + " into String") + }; + if ($eqeq(self.path, "\u0000")) { + return self.$raise($$('ArgumentError')) + } else { + return nil + }; + }, 1); + $defs(self, '$pwd', function $$pwd() { + var self = this; + + return self.$new($$('Dir').$pwd()) + }, 0); + self.$attr_reader("path"); + + $def(self, '$==', function $Pathname_$eq_eq$1(other) { + var self = this; + + return other.$path()['$=='](self.path) + }, 1); + + $def(self, '$absolute?', function $Pathname_absolute$ques$2() { + var self = this; + + return self['$relative?']()['$!']() + }, 0); + + $def(self, '$relative?', function $Pathname_relative$ques$3() { + var $a, $b, $c, self = this, path = nil, r = nil; + + + path = self.path; + while ($truthy((r = self.$chop_basename(path)))) { + $c = r, $b = $to_ary($c), (path = ($b[0] == null ? nil : $b[0])), $c + }; + return path['$=='](""); + }, 0); + + $def(self, '$chop_basename', function $$chop_basename(path) { + var base = nil; + + + base = $$('File').$basename(path); + if ($truthy($$('Regexp').$new("^" + ($$$($$('Pathname'), 'SEPARATOR_PAT').$source()) + "?$")['$=~'](base))) { + return nil + } else { + return [path['$[]'](0, path.$rindex(base)), base] + }; + }, 1); + + $def(self, '$root?', function $Pathname_root$ques$4() { + var self = this; + + return self.path['$==']("/") + }, 0); + + $def(self, '$parent', function $$parent() { + var self = this, new_path = nil; + + + new_path = self.path.$sub(/\/([^\/]+\/?$)/, ""); + if ($eqeq(new_path, "")) { + new_path = ($truthy(self['$absolute?']()) ? ("/") : (".")) + }; + return $$('Pathname').$new(new_path); + }, 0); + + $def(self, '$sub', function $$sub($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $$('Pathname').$new($send(self.path, 'sub', $to_a(args))); + }, -1); + + $def(self, '$cleanpath', function $$cleanpath() { + var self = this; + + return Opal.normalize(self.path) + }, 0); + + $def(self, '$to_path', function $$to_path() { + var self = this; + + return self.path + }, 0); + + $def(self, '$hash', function $$hash() { + var self = this; + + return self.path + }, 0); + + $def(self, '$expand_path', function $$expand_path() { + var self = this; + + return $$('Pathname').$new($$('File').$expand_path(self.path)) + }, 0); + + $def(self, '$+', function $Pathname_$plus$5(other) { + var self = this; + + + if (!$eqeqeq($$('Pathname'), other)) { + other = $$('Pathname').$new(other) + }; + return $$('Pathname').$new(self.$plus(self.path, other.$to_s())); + }, 1); + + $def(self, '$plus', function $$plus(path1, path2) { + var $a, $b, $c, self = this, prefix2 = nil, index_list2 = nil, basename_list2 = nil, r2 = nil, basename2 = nil, prefix1 = nil, $ret_or_1 = nil, r1 = nil, basename1 = nil, suffix2 = nil; + + + prefix2 = path2; + index_list2 = []; + basename_list2 = []; + while ($truthy((r2 = self.$chop_basename(prefix2)))) { + + $c = r2, $b = $to_ary($c), (prefix2 = ($b[0] == null ? nil : $b[0])), (basename2 = ($b[1] == null ? nil : $b[1])), $c; + index_list2.$unshift(prefix2.$length()); + basename_list2.$unshift(basename2); + }; + if ($neqeq(prefix2, "")) { + return path2 + }; + prefix1 = path1; + while ($truthy(true)) { + + while ($truthy(($truthy(($ret_or_1 = basename_list2['$empty?']()['$!']())) ? (basename_list2.$first()['$=='](".")) : ($ret_or_1)))) { + + index_list2.$shift(); + basename_list2.$shift(); + }; + if (!$truthy((r1 = self.$chop_basename(prefix1)))) { + break; + }; + $c = r1, $b = $to_ary($c), (prefix1 = ($b[0] == null ? nil : $b[0])), (basename1 = ($b[1] == null ? nil : $b[1])), $c; + if ($eqeq(basename1, ".")) { + continue; + }; + if ((($eqeq(basename1, "..") || ($truthy(basename_list2['$empty?']()))) || ($neqeq(basename_list2.$first(), "..")))) { + + prefix1 = $rb_plus(prefix1, basename1); + break;; + }; + index_list2.$shift(); + basename_list2.$shift(); + }; + r1 = self.$chop_basename(prefix1); + if (($not(r1) && ($truthy($regexp([$$('SEPARATOR_PAT')])['$=~']($$('File').$basename(prefix1)))))) { + while ($truthy(($truthy(($ret_or_1 = basename_list2['$empty?']()['$!']())) ? (basename_list2.$first()['$==']("..")) : ($ret_or_1)))) { + + index_list2.$shift(); + basename_list2.$shift(); + } + }; + if ($not(basename_list2['$empty?']())) { + + suffix2 = path2['$[]'](Opal.Range.$new(index_list2.$first(), -1, false)); + if ($truthy(r1)) { + return $$('File').$join(prefix1, suffix2) + } else { + return $rb_plus(prefix1, suffix2) + }; + } else if ($truthy(r1)) { + return prefix1 + } else { + return $$('File').$dirname(prefix1) + }; + }, 2); + + $def(self, '$join', function $$join($a) {try { + + var $post_args, args, self = this, result = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if ($truthy(args['$empty?']())) { + return self + }; + result = args.$pop(); + if (!$eqeqeq($$('Pathname'), result)) { + result = $$('Pathname').$new(result) + }; + if ($truthy(result['$absolute?']())) { + return result + }; + $send(args, 'reverse_each', [], function $$6(arg){ + + + if (arg == null) arg = nil;; + if (!$eqeqeq($$('Pathname'), arg)) { + arg = $$('Pathname').$new(arg) + }; + result = $rb_plus(arg, result); + if ($truthy(result['$absolute?']())) { + Opal.ret(result) + } else { + return nil + };}, 1); + return $rb_plus(self, result); + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, -1); + + $def(self, '$split', function $$split() { + var self = this; + + return [self.$dirname(), self.$basename()] + }, 0); + + $def(self, '$dirname', function $$dirname() { + var self = this; + + return $$('Pathname').$new($$('File').$dirname(self.path)) + }, 0); + + $def(self, '$basename', function $$basename() { + var self = this; + + return $$('Pathname').$new($$('File').$basename(self.path)) + }, 0); + + $def(self, '$directory?', function $Pathname_directory$ques$7() { + var self = this; + + return $$('File')['$directory?'](self.path) + }, 0); + + $def(self, '$extname', function $$extname() { + var self = this; + + return $$('File').$extname(self.path) + }, 0); + + $def(self, '$<=>', function $Pathname_$lt_eq_gt$8(other) { + var self = this; + + return self.$path()['$<=>'](other.$path()) + }, 1); + $const_set($nesting[0], 'SAME_PATHS', ($truthy($$$($$('File'), 'FNM_SYSCASE')['$nonzero?']()) ? ($send(self, 'proc', [], function $Pathname$9(a, b){ + + + if (a == null) a = nil;; + + if (b == null) b = nil;; + return a.$casecmp(b)['$=='](0);}, 2)) : ($send(self, 'proc', [], function $Pathname$10(a, b){ + + + if (a == null) a = nil;; + + if (b == null) b = nil;; + return a['$=='](b);}, 2)))); + + $def(self, '$relative_path_from', function $$relative_path_from(base_directory) { + var $a, $b, $c, self = this, dest_directory = nil, dest_prefix = nil, dest_names = nil, r = nil, basename = nil, base_prefix = nil, base_names = nil, $ret_or_1 = nil, $ret_or_2 = nil, relpath_names = nil; + + + dest_directory = self.$cleanpath().$to_s(); + base_directory = base_directory.$cleanpath().$to_s(); + dest_prefix = dest_directory; + dest_names = []; + while ($truthy((r = self.$chop_basename(dest_prefix)))) { + + $c = r, $b = $to_ary($c), (dest_prefix = ($b[0] == null ? nil : $b[0])), (basename = ($b[1] == null ? nil : $b[1])), $c; + if ($neqeq(basename, ".")) { + dest_names.$unshift(basename) + }; + }; + base_prefix = base_directory; + base_names = []; + while ($truthy((r = self.$chop_basename(base_prefix)))) { + + $c = r, $b = $to_ary($c), (base_prefix = ($b[0] == null ? nil : $b[0])), (basename = ($b[1] == null ? nil : $b[1])), $c; + if ($neqeq(basename, ".")) { + base_names.$unshift(basename) + }; + }; + if (!$truthy($$('SAME_PATHS')['$[]'](dest_prefix, base_prefix))) { + self.$raise($$('ArgumentError'), "different prefix: " + (dest_prefix.$inspect()) + " and " + (base_directory.$inspect())) + }; + while ($truthy(($truthy(($ret_or_1 = ($truthy(($ret_or_2 = dest_names['$empty?']()['$!']())) ? (base_names['$empty?']()['$!']()) : ($ret_or_2)))) ? ($$('SAME_PATHS')['$[]'](dest_names.$first(), base_names.$first())) : ($ret_or_1)))) { + + dest_names.$shift(); + base_names.$shift(); + }; + if ($truthy(base_names['$include?'](".."))) { + self.$raise($$('ArgumentError'), "base_directory has ..: " + (base_directory.$inspect())) + }; + base_names.$fill(".."); + relpath_names = $rb_plus(base_names, dest_names); + if ($truthy(relpath_names['$empty?']())) { + return $$('Pathname').$new(".") + } else { + return $$('Pathname').$new($send($$('File'), 'join', $to_a(relpath_names))) + }; + }, 1); + + $def(self, '$entries', function $$entries() { + var self = this; + + return $send($$('Dir').$entries(self.path), 'map', [], function $$11(f){var self = $$11.$$s == null ? this : $$11.$$s; + + + + if (f == null) f = nil;; + return self.$class().$new(f);}, {$$arity: 1, $$s: self}) + }, 0); + $alias(self, "===", "=="); + $alias(self, "eql?", "=="); + $alias(self, "to_s", "to_path"); + return $alias(self, "to_str", "to_path"); + })($nesting[0], null, $nesting); + return (function($base, $parent_nesting) { + var self = $module($base, 'Kernel'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$Pathname', function $$Pathname(path) { + + return $$('Pathname').$new(path) + }, 1) + })($nesting[0], $nesting); +}; + +Opal.modules["nodejs/pathname"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,include,to_str,!,absolute?'); + + self.$require("pathname"); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Pathname'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + if (self.__path__ == null) self.__path__ = nil; + + $proto.path = nil; + + self.$include($$('Comparable')); + self.__path__ = require('path'); + var __path__ = self.__path__; + + $def(self, '$absolute?', function $Pathname_absolute$ques$1() { + var self = this; + + return __path__.isAbsolute(self.path.$to_str()) + }, 0); + + $def(self, '$relative?', function $Pathname_relative$ques$2() { + var self = this; + + return self['$absolute?']()['$!']() + }, 0); + return $def(self, '$to_path', function $$to_path() { + var self = this; + + return self.path + }, 0); + })($nesting[0], null, $nesting); +}; + +Opal.modules["nodejs/env"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $const_set = Opal.const_set, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $alias = Opal.alias; + + Opal.add_stubs('new,to_s,key?,[],raise,to_h,keys,merge'); + + $const_set($nesting[0], 'ENV', $$('Object').$new()); + return (function(self, $parent_nesting) { + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$[]', function $$$1(name) { + + return process.env[name] || nil + }, 1); + + $def(self, '$[]=', function $$$eq$2(name, value) { + + return process.env[name.$to_s()] = value.$to_s() + }, 2); + + $def(self, '$key?', function $key$ques$3(name) { + + return process.env.hasOwnProperty(name) + }, 1); + + $def(self, '$empty?', function $empty$ques$4() { + + return Object.keys(process.env).length === 0; + }, 0); + + $def(self, '$keys', function $$keys() { + + return Object.keys(process.env); + }, 0); + + $def(self, '$delete', function $delete$5(name) { + + + var value = process.env[name] || nil; + delete process.env[name]; + return value; + + }, 1); + + $def(self, '$fetch', function $$fetch(key, default_value) { + var block = $$fetch.$$p || nil, self = this; + + delete $$fetch.$$p; + + ; + ; + if ($truthy(self['$key?'](key))) { + return self['$[]'](key) + }; + if ((block !== nil)) { + return Opal.yield1(block, key) + }; + if (!$truthy(typeof(default_value) === 'undefined')) { + return default_value + }; + return self.$raise($$('KeyError'), "key not found"); + }, -2); + + $def(self, '$to_s', function $$to_s() { + + return "ENV" + }, 0); + + $def(self, '$to_h', function $$to_h() { + var self = this; + + return $send(self.$keys(), 'to_h', [], function $$6(k){var self = $$6.$$s == null ? this : $$6.$$s; + + + + if (k == null) k = nil;; + return [k, self['$[]'](k)];}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$merge', function $$merge(keys) { + var self = this; + + return self.$to_h().$merge(keys) + }, 1); + $alias(self, "has_key?", "key?"); + $alias(self, "include?", "key?"); + $alias(self, "inspect", "to_s"); + $alias(self, "member?", "key?"); + return $alias(self, "to_hash", "to_h"); + })(Opal.get_singleton_class($$('ENV')), $nesting); +}; + +Opal.modules["nodejs"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, nil = Opal.nil; + + Opal.add_stubs('require'); + + self.$require("nodejs/base"); + self.$require("nodejs/kernel"); + self.$require("nodejs/file"); + self.$require("nodejs/dir"); + self.$require("nodejs/io"); + self.$require("nodejs/argf"); + self.$require("nodejs/open-uri"); + self.$require("nodejs/pathname"); + return self.$require("nodejs/env"); +}; diff --git a/opal/1.4.1/nodejs.min.js b/opal/1.4.1/nodejs.min.js new file mode 100644 index 00000000..7a0eaf1a --- /dev/null +++ b/opal/1.4.1/nodejs.min.js @@ -0,0 +1 @@ +Opal.modules["nodejs/base"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$module=Opal.module,$const_set=Opal.const_set,$eqeq=Opal.eqeq,$lambda=Opal.lambda,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$writer=nil;Opal.add_stubs("==,first,shift,write_proc=,-,read_proc=,tty="),function($base,$parent_nesting){var $nesting=[$module($base,"NodeJS")].concat($parent_nesting);$const_set($nesting[0],"VERSION",process.version)}($nesting[0],$nesting),Opal.exit=process.exit,$const_set($nesting[0],"ARGV",process.argv.slice(2)),$eqeq($$("ARGV").$first(),"--")&&$$("ARGV").$shift(),$writer=[$lambda((function(string){return null==string&&(string=nil),process.stdout.write(string)}),1)],$send($$("STDOUT"),"write_proc=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[$lambda((function(string){return null==string&&(string=nil),process.stderr.write(string)}),1)],$send($$("STDERR"),"write_proc=",$to_a($writer)),$writer[$rb_minus($writer.length,1)];var __fs__=require("fs");return $writer=[function(_count){var count,buf=Buffer.alloc(65536);try{count=__fs__.readSync(this.fd,buf,0,65536,null)}catch(e){return nil}return 0==count?nil:buf.toString("utf8",0,count)}],$send($$("STDIN"),"read_proc=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!0],$send($$("STDIN"),"tty=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!0],$send($$("STDOUT"),"tty=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!0],$send($$("STDERR"),"tty=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]},Opal.modules.native=function(Opal){var self=Opal.top,$nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$defs=Opal.defs,$truthy=Opal.truthy,$send=Opal.send,$Kernel=Opal.Kernel,$hash2=Opal.hash2,$range=Opal.range,$to_a=Opal.to_a,$def=Opal.def,$alias=Opal.alias,$klass=Opal.klass,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super,$eqeqeq=Opal.eqeqeq,$rb_ge=Opal.rb_ge,$gvars=Opal.gvars;return Opal.add_stubs("try_convert,native?,respond_to?,to_n,raise,inspect,Native,proc,map!,end_with?,define_method,[],convert,call,to_proc,new,each,native_reader,native_writer,extend,warn,include,is_a?,map,to_a,_Array,method_missing,bind,instance_method,slice,-,length,[]=,enum_for,===,>=,<<,each_pair,method_defined?,_initialize,name,native_module"),function($base,$parent_nesting){var self=$module($base,"Native"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$defs(self,"$is_a?",(function(object,klass){try{return object instanceof this.$try_convert(klass)}catch(e){return!1}}),2),$defs(self,"$try_convert",(function(value,default$){return null==default$&&(default$=nil),this["$native?"](value)?value:value["$respond_to?"]("to_n")?value.$to_n():default$}),-2),$defs(self,"$convert",(function(value){return this["$native?"](value)?value:value["$respond_to?"]("to_n")?value.$to_n():void this.$raise($$("ArgumentError"),value.$inspect()+" isn't native")}),1),$defs(self,"$call",(function $$call(obj,key,$a){var args,block=$$call.$$p||nil,self=this;delete $$call.$$p,args=Opal.slice.call(arguments,2);var prop=obj[key];if(prop instanceof Function){for(var converted=new Array(args.length),i=0,l=args.length;i0&&(old=$post_args.shift()),null==old&&(old=new$),null==(as=$kwargs.$$smap.as)&&(as=nil),$truthy(old["$end_with?"]("="))?$send(self,"define_method",[new$],(function $$4(value){var self=null==$$4.$$s?this:$$4.$$s;return null==self.native&&(self.native=nil),null==value&&(value=nil),self.native[old["$[]"]($range(0,-2,!1))]=$$("Native").$convert(value),value}),{$$arity:1,$$s:self}):$truthy(as)?$send(self,"define_method",[new$],(function $$5($c){var args,block=$$5.$$p||nil,self=null==$$5.$$s?this:$$5.$$s,value=nil;return null==self.native&&(self.native=nil),delete $$5.$$p,args=Opal.slice.call(arguments),value=$send($$("Native"),"call",[self.native,old].concat($to_a(args)),block.$to_proc()),$truthy(value)?as.$new(value.$to_n()):nil}),{$$arity:-1,$$s:self}):$send(self,"define_method",[new$],(function $$6($c){var args,block=$$6.$$p||nil,self=null==$$6.$$s?this:$$6.$$s;return null==self.native&&(self.native=nil),delete $$6.$$p,args=Opal.slice.call(arguments),$send($$("Native"),"call",[self.native,old].concat($to_a(args)),block.$to_proc())}),{$$arity:-1,$$s:self})}),-2),$def(self,"$native_reader",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each",[],(function $$7(name){var self=null==$$7.$$s?this:$$7.$$s;return null==name&&(name=nil),$send(self,"define_method",[name],(function $$8(){var self=null==$$8.$$s?this:$$8.$$s;return null==self.native&&(self.native=nil),self.$Native(self.native[name])}),{$$arity:0,$$s:self})}),{$$arity:1,$$s:self})}),-1),$def(self,"$native_writer",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each",[],(function $$9(name){var self=null==$$9.$$s?this:$$9.$$s;return null==name&&(name=nil),$send(self,"define_method",[name+"="],(function $$10(value){var self=null==$$10.$$s?this:$$10.$$s;return null==self.native&&(self.native=nil),null==value&&(value=nil),self.$Native(self.native[name]=value)}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:self})}),-1),$def(self,"$native_accessor",(function($a){var $post_args,names,self=this;return $post_args=Opal.slice.call(arguments),$send(self,"native_reader",$to_a(names=$post_args)),$send(self,"native_writer",$to_a(names))}),-1)}($nesting[0],$nesting),function($base,$parent_nesting){var self=$module($base,"Wrapper"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$initialize",(function(native$){return $truthy($Kernel["$native?"](native$))||$Kernel.$raise($$("ArgumentError"),native$.$inspect()+" isn't native"),this.native=native$}),1),$def(self,"$to_n",(function(){return null==this.native&&(this.native=nil),this.native}),0),$defs(self,"$included",(function(klass){return klass.$extend($$("Helpers"))}),1)}($nesting[0],$nesting),$defs(self,"$included",(function(base){return this.$warn("Including ::Native is deprecated. Please include Native::Wrapper instead."),base.$include($$("Wrapper"))}),1)}($nesting[0],$nesting),function($base,$parent_nesting){var self=$module($base,"Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$native?",(function(value){return null==value||!value.$$class}),1),$def(self,"$Native",(function $$Native(obj){return delete $$Native.$$p,$truthy(null==obj)?nil:$truthy(this["$native?"](obj))?$$$($$("Native"),"Object").$new(obj):$truthy(obj["$is_a?"]($$("Array")))?$send(obj,"map",[],(function $$12(o){return null==o&&(o=nil),(null==$$12.$$s?this:$$12.$$s).$Native(o)}),{$$arity:1,$$s:this}):$truthy(obj["$is_a?"]($$("Proc")))?$send(this,"proc",[],(function $$13($a){var args,block=$$13.$$p||nil,self=null==$$13.$$s?this:$$13.$$s;return delete $$13.$$p,args=Opal.slice.call(arguments),self.$Native($send(obj,"call",$to_a(args),block.$to_proc()))}),{$$arity:-1,$$s:this}):obj}),1),$alias(self,"_Array","Array"),$def(self,"$Array",(function $$Array(object,$a){var args,block=$$Array.$$p||nil,self=this;return delete $$Array.$$p,args=Opal.slice.call(arguments,1),$truthy(self["$native?"](object))?$send($$$($$("Native"),"Array"),"new",[object].concat($to_a(args)),block.$to_proc()).$to_a():self.$_Array(object)}),-2)}($nesting[0],$nesting),function($base,$super){var self=$klass($base,$super,"Object");self.$$prototype.native=nil,self.$include($$$($$$("Native"),"Wrapper")),$def(self,"$==",(function(other){return this.native===$$$("Native").$try_convert(other)}),1),$def(self,"$has_key?",(function(name){return Opal.hasOwnProperty.call(this.native,name)}),1),$def(self,"$each",(function $$each($a){var args,$yield=$$each.$$p||nil,self=this;if(delete $$each.$$p,args=Opal.slice.call(arguments),$yield!==nil){for(var key in self.native)Opal.yieldX($yield,[key,self.native[key]]);return self}return $send(self,"method_missing",["each"].concat($to_a(args)))}),-1),$def(self,"$[]",(function(key){var prop=this.native[key];return prop instanceof Function?prop:$$$("Native").$call(this.native,key)}),1),$def(self,"$[]=",(function(key,value){var native$;return native$=$$$("Native").$try_convert(value),$truthy(native$===nil)?this.native[key]=value:this.native[key]=native$}),2),$def(self,"$merge!",(function(other){for(var prop in other=$$$("Native").$convert(other))this.native[prop]=other[prop];return this}),1),$def(self,"$respond_to?",(function(name,include_all){return null==include_all&&(include_all=!1),$Kernel.$instance_method("respond_to?").$bind(this).$call(name,include_all)}),-2),$def(self,"$respond_to_missing?",(function(name,include_all){return null==include_all&&(include_all=!1),Opal.hasOwnProperty.call(this.native,name)}),-2),$def(self,"$method_missing",(function $$method_missing(mid,$a){var args,block=$$method_missing.$$p||nil,self=this,$writer=nil;return delete $$method_missing.$$p,args=Opal.slice.call(arguments,1),"="===mid.charAt(mid.length-1)?($writer=[mid.$slice(0,$rb_minus(mid.$length(),1)),args["$[]"](0)],$send(self,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):$send($$$("Native"),"call",[self.native,mid].concat($to_a(args)),block.$to_proc())}),-2),$def(self,"$nil?",(function(){return!1}),0),$def(self,"$is_a?",(function(klass){return Opal.is_a(this,klass)}),1),$def(self,"$instance_of?",(function(klass){return this.$$class===klass}),1),$def(self,"$class",(function(){return this.$$class}),0),$def(self,"$to_a",(function $$to_a(options){var block=$$to_a.$$p||nil;return delete $$to_a.$$p,null==options&&(options=$hash2([],{})),$send($$$($$$("Native"),"Array"),"new",[this.native,options],block.$to_proc()).$to_a()}),-1),$def(self,"$inspect",(function(){return"#"}),0),$alias(self,"include?","has_key?"),$alias(self,"key?","has_key?"),$alias(self,"kind_of?","is_a?"),$alias(self,"member?","has_key?")}($$("Native"),$$("BasicObject")),function($base,$super,$parent_nesting){var self=$klass($base,null,"Array"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.named=$proto.native=$proto.get=$proto.block=$proto.set=$proto.length=nil,self.$include($$$($$("Native"),"Wrapper")),self.$include($$("Enumerable")),$def(self,"$initialize",(function $$initialize(native$,options){var block=$$initialize.$$p||nil,$ret_or_1=nil;return delete $$initialize.$$p,null==options&&(options=$hash2([],{})),$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[native$],null),this.get=$truthy($ret_or_1=options["$[]"]("get"))?$ret_or_1:options["$[]"]("access"),this.named=options["$[]"]("named"),this.set=$truthy($ret_or_1=options["$[]"]("set"))?$ret_or_1:options["$[]"]("access"),this.length=$truthy($ret_or_1=options["$[]"]("length"))?$ret_or_1:"length",this.block=block,$truthy(null==this.$length())?this.$raise($$("ArgumentError"),"no length found on the array-like object"):nil}),-2),$def(self,"$each",(function $$each(){var block=$$each.$$p||nil;if(delete $$each.$$p,!$truthy(block))return this.$enum_for("each");for(var i=0,length=this.$length();i"}),0)},Opal.modules["nodejs/kernel"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$hash2=Opal.hash2,$truthy=Opal.truthy,$eqeqeq=Opal.eqeqeq,$gvars=Opal.gvars,$neqeq=Opal.neqeq,$def=Opal.def;return Opal.add_stubs("require,is_a?,first,shift,to_n,merge,empty?,===,[],new,!=,raise,==,encode,to_s"),self.$require("buffer"),self.$require("corelib/process/status"),function($base,$parent_nesting){var self=$module($base,"Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);null==self.__child_process__&&(self.__child_process__=nil),self.__child_process__=require("child_process");var __child_process__=self.__child_process__;return $def(self,"$system",(function($a,$b){var $post_args,$kwargs,argv,exception,self=this,env=nil,cmdname=nil,out=nil,status=nil,pid=nil;if($post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return argv=$post_args,null==(exception=$kwargs.$$smap.exception)&&(exception=!1),env=$hash2([],{}),$truthy(argv.$first()["$is_a?"]($$("Hash")))&&(env=argv.$shift()),env=$$("ENV").$merge(env).$to_n(),cmdname=argv.$shift(),status=(out=$truthy(argv["$empty?"]())?__child_process__.spawnSync(cmdname,{shell:!0,stdio:"inherit",env:env}):$eqeqeq($$("Array"),cmdname)?__child_process__.spawnSync(cmdname["$[]"](0),argv,{argv0:cmdname["$[]"](1),stdio:"inherit",env:env}):__child_process__.spawnSync(cmdname,argv,{stdio:"inherit",env:env})).status,$truthy(null===status)&&(status=127),pid=out.pid,$gvars["?"]=$$$($$("Process"),"Status").$new(status,pid),$truthy(exception)&&$neqeq(status,0)&&self.$raise("Command failed with exit "+status+": "+cmdname),status["$=="](0)}),-1),$def(self,"$`",(function(cmdline){return $$("Buffer").$new(__child_process__.execSync(cmdline)).$to_s().$encode("UTF-8")}),1)}($nesting[0],$nesting)},Opal.modules["corelib/file"]=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$truthy=Opal.truthy,$klass=Opal.klass,$const_set=Opal.const_set,$Opal=Opal.Opal,$regexp=Opal.regexp,$rb_plus=Opal.rb_plus,$def=Opal.def,$Kernel=Opal.Kernel,$eqeq=Opal.eqeq,$rb_lt=Opal.rb_lt,$rb_minus=Opal.rb_minus,$range=Opal.range,$send=Opal.send,$alias=Opal.alias;return Opal.add_stubs("respond_to?,to_path,coerce_to!,pwd,split,sub,+,unshift,join,home,raise,start_with?,absolute_path,==,<,dirname,-,basename,empty?,rindex,[],length,nil?,gsub,find,=~,map,each_with_index,flatten,reject,to_proc,end_with?"),function($base,$super,$parent_nesting){var self=$klass("::",$super,"File"),$nesting=[self].concat($parent_nesting),windows_root_rx=nil;return $const_set($nesting[0],"Separator",$const_set($nesting[0],"SEPARATOR","/")),$const_set($nesting[0],"ALT_SEPARATOR",nil),$const_set($nesting[0],"PATH_SEPARATOR",":"),$const_set($nesting[0],"FNM_SYSCASE",0),windows_root_rx=/^[a-zA-Z]:(?:\\|\/)/,function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);function $coerce_to_path(path){return $truthy(path["$respond_to?"]("to_path"))&&(path=path.$to_path()),path=$Opal["$coerce_to!"](path,$$$("String"),"to_str")}function $sep_chars(){return $$("ALT_SEPARATOR")===nil?Opal.escape_regexp($$("SEPARATOR")):Opal.escape_regexp($rb_plus($$("SEPARATOR"),$$("ALT_SEPARATOR")))}return $def(self,"$absolute_path",(function(path,basedir){var sep,sep_chars,$ret_or_1,path_abs,basedir_abs,part,new_parts=nil,parts=nil,leading_sep=nil,abs=nil,new_path=nil;null==basedir&&(basedir=nil),sep=$$("SEPARATOR"),sep_chars=$sep_chars(),new_parts=[],path=$truthy(path["$respond_to?"]("to_path"))?path.$to_path():path,path=$Opal["$coerce_to!"](path,$$$("String"),"to_str"),basedir=$truthy($ret_or_1=basedir)?$ret_or_1:$$$("Dir").$pwd(),path_abs=path.substr(0,sep.length)===sep||windows_root_rx.test(path),basedir_abs=basedir.substr(0,sep.length)===sep||windows_root_rx.test(basedir),$truthy(path_abs)?(parts=path.$split($regexp(["[",sep_chars,"]"])),leading_sep=windows_root_rx.test(path)?"":path.$sub($regexp(["^([",sep_chars,"]+).*$"]),"\\1"),abs=!0):(parts=$rb_plus(basedir.$split($regexp(["[",sep_chars,"]"])),path.$split($regexp(["[",sep_chars,"]"]))),leading_sep=windows_root_rx.test(basedir)?"":basedir.$sub($regexp(["^([",sep_chars,"]+).*$"]),"\\1"),abs=basedir_abs);for(var i=0,ii=parts.length;i=0){var error_class=$$("Errno").$const_get(error.code);$$("Kernel").$raise(error_class.$new(error.message))}$$("Kernel").$raise(self.$error())}}return function($base,$super,$parent_nesting){var self=$klass($base,$super,"File"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;null==self.__fs__&&(self.__fs__=nil),null==self.__path__&&(self.__path__=nil),null==self.__util__&&(self.__util__=nil),$proto.eof=$proto.binary_flag=$proto.path=$proto.fd=nil,self.__fs__=require("fs"),self.__path__=require("path"),self.__util__=require("util");var __fs__=self.__fs__,__path__=self.__path__,__util__=self.__util__,__TextEncoder__="undefined"!=typeof TextEncoder?TextEncoder:__util__.TextEncoder,__utf8TextDecoder__=new("undefined"!=typeof TextDecoder?TextDecoder:__util__.TextDecoder)("utf8"),__textEncoder__=new __TextEncoder__;$truthy(__path__.sep!==$$("Separator"))&&$const_set($nesting[0],"ALT_SEPARATOR",__path__.sep),$defs(self,"$read",(function(path){return executeIOAction((function(){return __fs__.readFileSync(path).toString()}))}),1),$defs(self,"$write",(function(path,data){return executeIOAction((function(){return __fs__.writeFileSync(path,data)})),data.$size()}),2),$defs(self,"$delete",(function(path){return executeIOAction((function(){return __fs__.unlinkSync(path)}))}),1),function(self,$parent_nesting){$alias(self,"unlink","delete")}(Opal.get_singleton_class(self)),$defs(self,"$exist?",(function(path){return $truthy(path["$respond_to?"]("path"))&&(path=path.$path()),executeIOAction((function(){return __fs__.existsSync(path)}))}),1),$defs(self,"$realpath",(function $$realpath(pathname,dir_string,cache){var block=$$realpath.$$p||nil;if(delete $$realpath.$$p,null==dir_string&&(dir_string=nil),null==cache&&(cache=nil),$truthy(dir_string)&&(pathname=this.$join(dir_string,pathname)),block===nil)return executeIOAction((function(){return __fs__.realpathSync(pathname,cache)}));__fs__.realpath(pathname,cache,(function(error,realpath){error?Opal.IOError.$new(error.message):block.$call(realpath)}))}),-2),$defs(self,"$join",(function($a){var $post_args,paths,$b;return $post_args=Opal.slice.call(arguments),($truthy(($b=(paths=$post_args).$first())===nil||null==$b?nil:$send($b,"start_with?",["//"]))?"/":"")+__path__.posix.join.apply(__path__,paths)}),-1),$defs(self,"$directory?",(function(path){var result=nil,realpath=nil;return!!$truthy(this["$exist?"](path))&&(result=executeIOAction((function(){return!!__fs__.lstatSync(path).isDirectory()})),$truthy(result)||(realpath=this.$realpath(path),$neqeq(realpath,path)&&(result=executeIOAction((function(){return!!__fs__.lstatSync(realpath).isDirectory()})))),result)}),1),$defs(self,"$file?",(function(path){var result=nil,realpath=nil;return!!$truthy(this["$exist?"](path))&&(result=executeIOAction((function(){return!!__fs__.lstatSync(path).isFile()})),$truthy(result)||(realpath=this.$realpath(path),$neqeq(realpath,path)&&(result=executeIOAction((function(){return!!__fs__.lstatSync(realpath).isFile()})))),result)}),1),$defs(self,"$readable?",(function(path){return!!$truthy(this["$exist?"](path))&&"\n try {\n __fs__.accessSync(path, __fs__.R_OK);\n return true;\n } catch (error) {\n return false;\n }\n "}),1),$defs(self,"$size",(function(path){return executeIOAction((function(){return __fs__.lstatSync(path).size}))}),1),$defs(self,"$open",(function $$open(path,mode){var $yield=$$open.$$p||nil,file=nil;return delete $$open.$$p,null==mode&&(mode="r"),file=this.$new(path,mode),$yield!==nil?function(){try{return Opal.yield1($yield,file)}finally{file.$close()}}():file}),-2),$defs(self,"$stat",(function(path){return $truthy(path["$respond_to?"]("path"))&&(path=path.$path()),$$$($$("File"),"Stat").$new(path)}),1),$defs(self,"$mtime",(function(path){return executeIOAction((function(){return __fs__.statSync(path).mtime}))}),1),$defs(self,"$symlink?",(function(path){return executeIOAction((function(){return __fs__.lstatSync(path).isSymbolicLink()}))}),1),$defs(self,"$absolute_path",(function(path,basedir){var $ret_or_1;return null==basedir&&(basedir=nil),path=$truthy(path["$respond_to?"]("to_path"))?path.$to_path():path,basedir=$truthy($ret_or_1=basedir)?$ret_or_1:$$("Dir").$pwd(),__path__.normalize(__path__.resolve(basedir.$to_str(),path.$to_str())).split(__path__.sep).join(__path__.posix.sep)}),-2),$def(self,"$initialize",(function $$initialize(path,flags){var fd,encoding_option_rx=nil;return delete $$initialize.$$p,null==flags&&(flags="r"),this.binary_flag=flags["$include?"]("b"),flags=flags.$delete("b"),$truthy((encoding_option_rx=/:(.*)/)["$match?"](flags))&&(handle_unsupported_feature("Encoding option (:encoding) is unsupported by Node.js openSync method and will be removed."),flags=flags.$sub(encoding_option_rx,"")),this.path=path,fd=executeIOAction((function(){return __fs__.openSync(path,flags)})),$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[fd,flags],null)}),-2),self.$attr_reader("path"),$def(self,"$sysread",(function(bytes){var self=this,res=nil;if($truthy(self.eof))return self.$raise($$("EOFError"),"end of file reached");if($truthy(self.binary_flag)){var content,buf=executeIOAction((function(){return __fs__.readFileSync(self.path)}));content=function(bytes){for(var i=0;i,to_a,each,attr_accessor,rewind,!,fileno,eof?,lineno="),$const_set($nesting[0],"ARGF",$$("Object").$new()),function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$include($$("Enumerable")),$def(self,"$inspect",(function(){return"ARGF"}),0),$def(self,"$argv",(function(){return $$("ARGV")}),0),$def(self,"$file",(function(){var fn,$ret_or_1=nil;return null==this.file&&(this.file=nil),null==$gvars.stdin&&($gvars.stdin=nil),fn=this.$filename(),$eqeq(fn,"-")?$gvars.stdin:this.file=$truthy($ret_or_1=this.file)?$ret_or_1:$$("File").$open(fn,"r")}),0),$def(self,"$filename",(function(){var $ret_or_1=nil;return null==this.filename&&(this.filename=nil),null==this.last_filename&&(this.last_filename=nil),$truthy(this.filename)?this.filename:$eqeq(this.$argv(),["-"])?"-":$eqeq(this.$argv(),[])?$truthy($ret_or_1=this.last_filename)?$ret_or_1:"-":(this.file=nil,this.filename=this.last_filename=this.$argv().$shift())}),0),$def(self,"$close",(function(){return this.$file().$close(),this.filename=nil,this}),0),$def(self,"$closed?",(function(){return this.$file()["$closed?"]()}),0),$def(self,"$each",(function $$each($a){var args,block=$$each.$$p||nil,self=this,l=nil;if(delete $$each.$$p,args=Opal.slice.call(arguments),block===nil)return self.$enum_for("each");for(;$truthy(l=$send(self,"gets",$to_a(args)));)Opal.yield1(block,l)}),-1),$def(self,"$gets",(function($a){var args,self=this,s=nil;return null==self.lineno&&(self.lineno=nil),args=Opal.slice.call(arguments),s=$send(self.$file(),"gets",$to_a(args)),$truthy(s["$nil?"]())&&(self.$close(),s=$send(self.$file(),"gets",$to_a(args))),$truthy(s)&&(self.lineno=$rb_plus(self.lineno,1)),s}),-1),$def(self,"$read",(function(len){var self=this,buf=nil;return null==len&&(len=nil),buf="",function(){var $brk=Opal.new_brk();try{return $send(self,"loop",[],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s,r=nil;if(null==self.filename&&(self.filename=nil),r=self.$file().$read(len),$truthy(r)&&(buf=$rb_plus(buf,r),len=$rb_minus(len,r.$length())),self.$file().$close(),!($truthy(len)&&$truthy($rb_gt(len,0))&&$truthy(self.filename)))return nil;Opal.brk(nil,$brk)}),{$$arity:0,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}()}),-1),$def(self,"$readlines",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send(self,"each",$to_a($post_args)).$to_a()}),-1),self.$attr_accessor("lineno"),$def(self,"$rewind",(function(){var f=nil;this.lineno=1,f=this.$file();try{f.$rewind()}catch($err){if(!Opal.rescue($err,[$$("StandardError")]))throw $err;Opal.pop_exception()}return 0}),0),$def(self,"$fileno",(function(){return null==this.last_filename&&(this.last_filename=nil),null==this.filename&&(this.filename=nil),$not(this.filename)&&$truthy(this.last_filename)?0:this.$file().$fileno()}),0),$def(self,"$eof?",(function(){return this.$file()["$eof?"]()}),0),$alias(self,"each_line","each"),$alias(self,"eof","eof?"),$alias(self,"path","filename"),$alias(self,"skip","close"),$alias(self,"to_i","fileno"),$alias(self,"to_io","file")}(Opal.get_singleton_class($$("ARGF")),$nesting),$writer=[1],$send($$("ARGF"),"lineno=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]},Opal.modules["nodejs/open-uri"]=function(Opal){var nil=Opal.nil,$module=Opal.module,$defs=Opal.defs;return function($base){var self=$module($base,"OpenURI");null==self.__xmlhttprequest__&&(self.__xmlhttprequest__=nil),self.__xmlhttprequest__=require("unxhr");var __XMLHttpRequest__=self.__xmlhttprequest__.XMLHttpRequest;return $defs(self,"$request",(function(uri){var xhr=new __XMLHttpRequest__;return xhr.open("GET",uri,!1),xhr.responseType="arraybuffer",xhr.send(),xhr}),1),$defs(self,"$data",(function(req){for(var arrayBuffer=req.response,byteArray=new Uint8Array(arrayBuffer),result=[],i=0;i,<,===,raise,class,<=>,equal?"),function($base){var self=$module("::","Comparable"),$ret_or_1=nil;function normalize(what){return Opal.is_a(what,Opal.Integer)?what:$rb_gt(what,0)?1:$rb_lt(what,0)?-1:0}function cmp_or_fail(lhs,rhs){var cmp=lhs["$<=>"](rhs);return $truthy(cmp)||function(lhs,rhs){var class_name;class_name=$eqeqeq(nil,$ret_or_1=rhs)||$eqeqeq(!0,$ret_or_1)||$eqeqeq(!1,$ret_or_1)||$eqeqeq($$$("Integer"),$ret_or_1)||$eqeqeq($$$("Float"),$ret_or_1)?rhs.$inspect():rhs.$$class,$Kernel.$raise($$$("ArgumentError"),"comparison of "+lhs.$class()+" with "+class_name+" failed")}(lhs,rhs),normalize(cmp)}return $def(self,"$==",(function(other){var cmp;return!!$truthy(this["$equal?"](other))||this["$<=>"]!=Opal.Kernel["$<=>"]&&(this.$$comparable?(delete this.$$comparable,!1):!!$truthy(cmp=this["$<=>"](other))&&0==normalize(cmp))}),1),$def(self,"$>",(function(other){return cmp_or_fail(this,other)>0}),1),$def(self,"$>=",(function(other){return cmp_or_fail(this,other)>=0}),1),$def(self,"$<",(function(other){return cmp_or_fail(this,other)<0}),1),$def(self,"$<=",(function(other){return cmp_or_fail(this,other)<=0}),1),$def(self,"$between?",(function(min,max){return!$rb_lt(this,min)&&!$rb_gt(this,max)}),2),$def(self,"$clamp",(function(min,max){var c,excl;if(null==max&&(max=nil),max===nil&&(Opal.is_a(min,Opal.Range)||$Kernel.$raise($$$("TypeError"),"wrong argument type "+min.$class()+" (expected Range)"),excl=min.excl,max=min.end,min=min.begin,max!==nil&&excl&&$Kernel.$raise($$$("ArgumentError"),"cannot clamp with an exclusive range")),min!==nil&&max!==nil&&cmp_or_fail(min,max)>0&&$Kernel.$raise($$$("ArgumentError"),"min argument must be smaller than max argument"),min!==nil){if(0==(c=cmp_or_fail(this,min)))return this;if(c<0)return min}return max!==nil&&(c=cmp_or_fail(this,max))>0?max:this}),-2)}()},Opal.modules.pathname=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def,$defs=Opal.defs,$to_ary=Opal.to_ary,$send=Opal.send,$to_a=Opal.to_a,$neqeq=Opal.neqeq,$rb_plus=Opal.rb_plus,$not=Opal.not,$alias=Opal.alias,$module=Opal.module;return Opal.add_stubs("require,include,quote,===,to_s,path,respond_to?,to_path,is_a?,nil?,raise,class,==,new,pwd,attr_reader,!,relative?,chop_basename,basename,=~,source,[],rindex,sub,absolute?,expand_path,plus,unshift,length,!=,empty?,first,shift,+,join,dirname,pop,reverse_each,directory?,extname,<=>,nonzero?,proc,casecmp,cleanpath,inspect,include?,fill,map,entries"),self.$require("corelib/comparable"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Pathname"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.path=nil,self.$include($$("Comparable")),$const_set($nesting[0],"SEPARATOR_PAT",$regexp([$$("Regexp").$quote($$$($$("File"),"SEPARATOR"))])),$def(self,"$initialize",(function(path){return $eqeqeq($$("Pathname"),path)?this.path=path.$path().$to_s():$truthy(path["$respond_to?"]("to_path"))?this.path=path.$to_path():$truthy(path["$is_a?"]($$("String")))?this.path=path:$truthy(path["$nil?"]())?this.$raise($$("TypeError"),"no implicit conversion of nil into String"):this.$raise($$("TypeError"),"no implicit conversion of "+path.$class()+" into String"),$eqeq(this.path,"\0")?this.$raise($$("ArgumentError")):nil}),1),$defs(self,"$pwd",(function(){return this.$new($$("Dir").$pwd())}),0),self.$attr_reader("path"),$def(self,"$==",(function(other){return other.$path()["$=="](this.path)}),1),$def(self,"$absolute?",(function(){return this["$relative?"]()["$!"]()}),0),$def(self,"$relative?",(function(){var $b,path=nil,r=nil;for(path=this.path;$truthy(r=this.$chop_basename(path));)path=null==($b=$to_ary(r))[0]?nil:$b[0];return path["$=="]("")}),0),$def(self,"$chop_basename",(function(path){var base;return base=$$("File").$basename(path),$truthy($$("Regexp").$new("^"+$$$($$("Pathname"),"SEPARATOR_PAT").$source()+"?$")["$=~"](base))?nil:[path["$[]"](0,path.$rindex(base)),base]}),1),$def(self,"$root?",(function(){return this.path["$=="]("/")}),0),$def(self,"$parent",(function(){var new_path=nil;return new_path=this.path.$sub(/\/([^\/]+\/?$)/,""),$eqeq(new_path,"")&&(new_path=$truthy(this["$absolute?"]())?"/":"."),$$("Pathname").$new(new_path)}),0),$def(self,"$sub",(function($a){var args,self=this;return args=Opal.slice.call(arguments),$$("Pathname").$new($send(self.path,"sub",$to_a(args)))}),-1),$def(self,"$cleanpath",(function(){return Opal.normalize(this.path)}),0),$def(self,"$to_path",(function(){return this.path}),0),$def(self,"$hash",(function(){return this.path}),0),$def(self,"$expand_path",(function(){return $$("Pathname").$new($$("File").$expand_path(this.path))}),0),$def(self,"$+",(function(other){return $eqeqeq($$("Pathname"),other)||(other=$$("Pathname").$new(other)),$$("Pathname").$new(this.$plus(this.path,other.$to_s()))}),1),$def(self,"$plus",(function(path1,path2){var $b,prefix2=nil,index_list2=nil,basename_list2=nil,r2=nil,basename2=nil,prefix1=nil,$ret_or_1=nil,r1=nil,basename1=nil,suffix2=nil;for(prefix2=path2,index_list2=[],basename_list2=[];$truthy(r2=this.$chop_basename(prefix2));)prefix2=null==($b=$to_ary(r2))[0]?nil:$b[0],basename2=null==$b[1]?nil:$b[1],index_list2.$unshift(prefix2.$length()),basename_list2.$unshift(basename2);if($neqeq(prefix2,""))return path2;for(prefix1=path1;$truthy(!0);){for(;$truthy($truthy($ret_or_1=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="]("."):$ret_or_1);)index_list2.$shift(),basename_list2.$shift();if(!$truthy(r1=this.$chop_basename(prefix1)))break;if(prefix1=null==($b=$to_ary(r1))[0]?nil:$b[0],basename1=null==$b[1]?nil:$b[1],!$eqeq(basename1,".")){if($eqeq(basename1,"..")||$truthy(basename_list2["$empty?"]())||$neqeq(basename_list2.$first(),"..")){prefix1=$rb_plus(prefix1,basename1);break}index_list2.$shift(),basename_list2.$shift()}}if(r1=this.$chop_basename(prefix1),$not(r1)&&$truthy($regexp([$$("SEPARATOR_PAT")])["$=~"]($$("File").$basename(prefix1))))for(;$truthy($truthy($ret_or_1=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="](".."):$ret_or_1);)index_list2.$shift(),basename_list2.$shift();return $not(basename_list2["$empty?"]())?(suffix2=path2["$[]"](Opal.Range.$new(index_list2.$first(),-1,!1)),$truthy(r1)?$$("File").$join(prefix1,suffix2):$rb_plus(prefix1,suffix2)):$truthy(r1)?prefix1:$$("File").$dirname(prefix1)}),2),$def(self,"$join",(function($a){try{var $post_args,args,self=this,result=nil;return $post_args=Opal.slice.call(arguments),$truthy((args=$post_args)["$empty?"]())?self:(result=args.$pop(),$eqeqeq($$("Pathname"),result)||(result=$$("Pathname").$new(result)),$truthy(result["$absolute?"]())?result:($send(args,"reverse_each",[],(function(arg){if(null==arg&&(arg=nil),$eqeqeq($$("Pathname"),arg)||(arg=$$("Pathname").$new(arg)),result=$rb_plus(arg,result),!$truthy(result["$absolute?"]()))return nil;Opal.ret(result)}),1),$rb_plus(self,result)))}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$split",(function(){return[this.$dirname(),this.$basename()]}),0),$def(self,"$dirname",(function(){return $$("Pathname").$new($$("File").$dirname(this.path))}),0),$def(self,"$basename",(function(){return $$("Pathname").$new($$("File").$basename(this.path))}),0),$def(self,"$directory?",(function(){return $$("File")["$directory?"](this.path)}),0),$def(self,"$extname",(function(){return $$("File").$extname(this.path)}),0),$def(self,"$<=>",(function(other){return this.$path()["$<=>"](other.$path())}),1),$const_set($nesting[0],"SAME_PATHS",$truthy($$$($$("File"),"FNM_SYSCASE")["$nonzero?"]())?$send(self,"proc",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a.$casecmp(b)["$=="](0)}),2):$send(self,"proc",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a["$=="](b)}),2)),$def(self,"$relative_path_from",(function(base_directory){var $b,dest_directory,dest_prefix=nil,dest_names=nil,r=nil,basename=nil,base_prefix=nil,base_names=nil,$ret_or_1=nil,$ret_or_2=nil,relpath_names=nil;for(dest_directory=this.$cleanpath().$to_s(),base_directory=base_directory.$cleanpath().$to_s(),dest_prefix=dest_directory,dest_names=[];$truthy(r=this.$chop_basename(dest_prefix));)dest_prefix=null==($b=$to_ary(r))[0]?nil:$b[0],basename=null==$b[1]?nil:$b[1],$neqeq(basename,".")&&dest_names.$unshift(basename);for(base_prefix=base_directory,base_names=[];$truthy(r=this.$chop_basename(base_prefix));)base_prefix=null==($b=$to_ary(r))[0]?nil:$b[0],basename=null==$b[1]?nil:$b[1],$neqeq(basename,".")&&base_names.$unshift(basename);for($truthy($$("SAME_PATHS")["$[]"](dest_prefix,base_prefix))||this.$raise($$("ArgumentError"),"different prefix: "+dest_prefix.$inspect()+" and "+base_directory.$inspect());$truthy($truthy($ret_or_1=$truthy($ret_or_2=dest_names["$empty?"]()["$!"]())?base_names["$empty?"]()["$!"]():$ret_or_2)?$$("SAME_PATHS")["$[]"](dest_names.$first(),base_names.$first()):$ret_or_1);)dest_names.$shift(),base_names.$shift();return $truthy(base_names["$include?"](".."))&&this.$raise($$("ArgumentError"),"base_directory has ..: "+base_directory.$inspect()),base_names.$fill(".."),relpath_names=$rb_plus(base_names,dest_names),$truthy(relpath_names["$empty?"]())?$$("Pathname").$new("."):$$("Pathname").$new($send($$("File"),"join",$to_a(relpath_names)))}),1),$def(self,"$entries",(function(){return $send($$("Dir").$entries(this.path),"map",[],(function $$11(f){return null==f&&(f=nil),(null==$$11.$$s?this:$$11.$$s).$class().$new(f)}),{$$arity:1,$$s:this})}),0),$alias(self,"===","=="),$alias(self,"eql?","=="),$alias(self,"to_s","to_path"),$alias(self,"to_str","to_path")}($nesting[0],0,$nesting),function($base,$parent_nesting){var self=$module($base,"Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$Pathname",(function(path){return $$("Pathname").$new(path)}),1)}($nesting[0],$nesting)},Opal.modules["nodejs/pathname"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,include,to_str,!,absolute?"),self.$require("pathname"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Pathname"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;null==self.__path__&&(self.__path__=nil),$proto.path=nil,self.$include($$("Comparable")),self.__path__=require("path");var __path__=self.__path__;return $def(self,"$absolute?",(function(){return __path__.isAbsolute(this.path.$to_str())}),0),$def(self,"$relative?",(function(){return this["$absolute?"]()["$!"]()}),0),$def(self,"$to_path",(function(){return this.path}),0)}($nesting[0],0,$nesting)},Opal.modules["nodejs/env"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$const_set=Opal.const_set,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$alias=Opal.alias;return Opal.add_stubs("new,to_s,key?,[],raise,to_h,keys,merge"),$const_set($nesting[0],"ENV",$$("Object").$new()),function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$[]",(function(name){return process.env[name]||nil}),1),$def(self,"$[]=",(function(name,value){return process.env[name.$to_s()]=value.$to_s()}),2),$def(self,"$key?",(function(name){return process.env.hasOwnProperty(name)}),1),$def(self,"$empty?",(function(){return 0===Object.keys(process.env).length}),0),$def(self,"$keys",(function(){return Object.keys(process.env)}),0),$def(self,"$delete",(function(name){var value=process.env[name]||nil;return delete process.env[name],value}),1),$def(self,"$fetch",(function $$fetch(key,default_value){var block=$$fetch.$$p||nil;return delete $$fetch.$$p,$truthy(this["$key?"](key))?this["$[]"](key):block!==nil?Opal.yield1(block,key):$truthy(void 0===default_value)?this.$raise($$("KeyError"),"key not found"):default_value}),-2),$def(self,"$to_s",(function(){return"ENV"}),0),$def(self,"$to_h",(function(){return $send(this.$keys(),"to_h",[],(function $$6(k){return null==k&&(k=nil),[k,(null==$$6.$$s?this:$$6.$$s)["$[]"](k)]}),{$$arity:1,$$s:this})}),0),$def(self,"$merge",(function(keys){return this.$to_h().$merge(keys)}),1),$alias(self,"has_key?","key?"),$alias(self,"include?","key?"),$alias(self,"inspect","to_s"),$alias(self,"member?","key?"),$alias(self,"to_hash","to_h")}(Opal.get_singleton_class($$("ENV")),$nesting)},Opal.modules.nodejs=function(Opal){var self=Opal.top;Opal.nil;return Opal.add_stubs("require"),self.$require("nodejs/base"),self.$require("nodejs/kernel"),self.$require("nodejs/file"),self.$require("nodejs/dir"),self.$require("nodejs/io"),self.$require("nodejs/argf"),self.$require("nodejs/open-uri"),self.$require("nodejs/pathname"),self.$require("nodejs/env")}; diff --git a/opal/1.4.1/nodejs.min.js.gz b/opal/1.4.1/nodejs.min.js.gz new file mode 100644 index 00000000..c8c72f17 Binary files /dev/null and b/opal/1.4.1/nodejs.min.js.gz differ diff --git a/opal/1.4.1/observer.js b/opal/1.4.1/observer.js new file mode 100644 index 00000000..0dca896e --- /dev/null +++ b/opal/1.4.1/observer.js @@ -0,0 +1,110 @@ +Opal.modules["observer"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def; + + Opal.add_stubs('respond_to?,raise,new,to_s,[]=,-,delete,clear,size,each,send'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Observable'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$add_observer', function $$add_observer(observer, func) { + var $a, self = this, $writer = nil; + if (self.observer_peers == null) self.observer_peers = nil; + + + + if (func == null) func = "update";; + if (!$truthy((($a = self['observer_peers'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { + self.observer_peers = $hash2([], {}) + }; + if (!$truthy(observer['$respond_to?'](func))) { + self.$raise($$('NoMethodError').$new("observer does not respond to `" + (func.$to_s()) + "'", func.$to_s())) + }; + + $writer = [observer, func]; + $send(self.observer_peers, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + }, -2); + + $def(self, '$delete_observer', function $$delete_observer(observer) { + var $a, self = this; + if (self.observer_peers == null) self.observer_peers = nil; + + if ($truthy((($a = self['observer_peers'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { + return self.observer_peers.$delete(observer) + } else { + return nil + } + }, 1); + + $def(self, '$delete_observers', function $$delete_observers() { + var $a, self = this; + if (self.observer_peers == null) self.observer_peers = nil; + + if ($truthy((($a = self['observer_peers'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { + return self.observer_peers.$clear() + } else { + return nil + } + }, 0); + + $def(self, '$count_observers', function $$count_observers() { + var $a, self = this; + if (self.observer_peers == null) self.observer_peers = nil; + + if ($truthy((($a = self['observer_peers'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { + return self.observer_peers.$size() + } else { + return 0 + } + }, 0); + + $def(self, '$changed', function $$changed(state) { + var self = this; + + + + if (state == null) state = true;; + return (self.observer_state = state); + }, -1); + + $def(self, '$changed?', function $Observable_changed$ques$1() { + var $a, self = this; + if (self.observer_state == null) self.observer_state = nil; + + if (($truthy((($a = self['observer_state'], $a != null && $a !== nil) ? 'instance-variable' : nil)) && ($truthy(self.observer_state)))) { + return true + } else { + return false + } + }, 0); + return $def(self, '$notify_observers', function $$notify_observers($a) { + var $post_args, arg, $b, $c, self = this; + if (self.observer_state == null) self.observer_state = nil; + if (self.observer_peers == null) self.observer_peers = nil; + + + + $post_args = Opal.slice.call(arguments); + + arg = $post_args;; + if (($truthy((($b = self['observer_state'], $b != null && $b !== nil) ? 'instance-variable' : nil)) && ($truthy(self.observer_state)))) { + + if ($truthy((($c = self['observer_peers'], $c != null && $c !== nil) ? 'instance-variable' : nil))) { + $send(self.observer_peers, 'each', [], function $$2(k, v){ + + + if (k == null) k = nil;; + + if (v == null) v = nil;; + return $send(k, 'send', [v].concat($to_a(arg)));}, 2) + }; + return (self.observer_state = false); + } else { + return nil + }; + }, -1); + })($nesting[0], $nesting) +}; diff --git a/opal/1.4.1/observer.min.js b/opal/1.4.1/observer.min.js new file mode 100644 index 00000000..554aac00 --- /dev/null +++ b/opal/1.4.1/observer.min.js @@ -0,0 +1 @@ +Opal.modules.observer=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$truthy=Opal.truthy,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def;return Opal.add_stubs("respond_to?,raise,new,to_s,[]=,-,delete,clear,size,each,send"),function($base,$parent_nesting){var self=$module($base,"Observable"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$add_observer",(function(observer,func){var $a,$writer;return null==this.observer_peers&&(this.observer_peers=nil),null==func&&(func="update"),$truthy(null!=($a=this.observer_peers)&&$a!==nil?"instance-variable":nil)||(this.observer_peers=$hash2([],{})),$truthy(observer["$respond_to?"](func))||this.$raise($$("NoMethodError").$new("observer does not respond to `"+func.$to_s()+"'",func.$to_s())),$writer=[observer,func],$send(this.observer_peers,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),-2),$def(self,"$delete_observer",(function(observer){var $a;return null==this.observer_peers&&(this.observer_peers=nil),$truthy(null!=($a=this.observer_peers)&&$a!==nil?"instance-variable":nil)?this.observer_peers.$delete(observer):nil}),1),$def(self,"$delete_observers",(function(){var $a;return null==this.observer_peers&&(this.observer_peers=nil),$truthy(null!=($a=this.observer_peers)&&$a!==nil?"instance-variable":nil)?this.observer_peers.$clear():nil}),0),$def(self,"$count_observers",(function(){var $a;return null==this.observer_peers&&(this.observer_peers=nil),$truthy(null!=($a=this.observer_peers)&&$a!==nil?"instance-variable":nil)?this.observer_peers.$size():0}),0),$def(self,"$changed",(function(state){return null==state&&(state=!0),this.observer_state=state}),-1),$def(self,"$changed?",(function(){var $a;return null==this.observer_state&&(this.observer_state=nil),!(!$truthy(($a=this.observer_state,null!=$a&&$a!==nil?"instance-variable":nil))||!$truthy(this.observer_state))}),0),$def(self,"$notify_observers",(function($a){var $post_args,arg,$b,$c,self=this;return null==self.observer_state&&(self.observer_state=nil),null==self.observer_peers&&(self.observer_peers=nil),$post_args=Opal.slice.call(arguments),arg=$post_args,$truthy(null!=($b=self.observer_state)&&$b!==nil?"instance-variable":nil)&&$truthy(self.observer_state)?($truthy(null!=($c=self.observer_peers)&&$c!==nil?"instance-variable":nil)&&$send(self.observer_peers,"each",[],(function(k,v){return null==k&&(k=nil),null==v&&(v=nil),$send(k,"send",[v].concat($to_a(arg)))}),2),self.observer_state=!1):nil}),-1)}($nesting[0],$nesting)}; diff --git a/opal/1.4.1/observer.min.js.gz b/opal/1.4.1/observer.min.js.gz new file mode 100644 index 00000000..c616c990 Binary files /dev/null and b/opal/1.4.1/observer.min.js.gz differ diff --git a/opal/1.4.1/opal-builder.js b/opal/1.4.1/opal-builder.js new file mode 100644 index 00000000..e702ff20 --- /dev/null +++ b/opal/1.4.1/opal-builder.js @@ -0,0 +1,38419 @@ +Opal.modules["opal/regexp_anchors"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $const_set = Opal.const_set; + + Opal.add_stubs('new'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $const_set(self, 'REGEXP_START', "^"); + $const_set(self, 'REGEXP_END', "$"); + $const_set(self, 'FORBIDDEN_STARTING_IDENTIFIER_CHARS', "\\u0001-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"); + $const_set(self, 'FORBIDDEN_ENDING_IDENTIFIER_CHARS', "\\u0001-\\u0020\\u0022-\\u002F\\u003A-\\u003E\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"); + $const_set(self, 'INLINE_IDENTIFIER_REGEXP', $$('Regexp').$new("[^" + ($$$(self, 'FORBIDDEN_STARTING_IDENTIFIER_CHARS')) + "]*[^" + ($$$(self, 'FORBIDDEN_ENDING_IDENTIFIER_CHARS')) + "]")); + $const_set(self, 'FORBIDDEN_CONST_NAME_CHARS', "\\u0001-\\u0020\\u0021-\\u002F\\u003B-\\u003F\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"); + return $const_set(self, 'CONST_NAME_REGEXP', $$('Regexp').$new("" + ($$$(self, 'REGEXP_START')) + "(::)?[A-Z][^" + ($$$(self, 'FORBIDDEN_CONST_NAME_CHARS')) + "]*" + ($$$(self, 'REGEXP_END')))); + })($nesting[0], $nesting) +}; + +Opal.modules["corelib/comparable"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $module = Opal.module, $rb_gt = Opal.rb_gt, $rb_lt = Opal.rb_lt, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $def = Opal.def; + + Opal.add_stubs('>,<,===,raise,class,<=>,equal?'); + return (function($base) { + var self = $module($base, 'Comparable'); + + var $ret_or_1 = nil; + + + + function normalize(what) { + if (Opal.is_a(what, Opal.Integer)) { return what; } + + if ($rb_gt(what, 0)) { return 1; } + if ($rb_lt(what, 0)) { return -1; } + return 0; + } + + function fail_comparison(lhs, rhs) { + var class_name; + (($eqeqeq(nil, ($ret_or_1 = rhs)) || (($eqeqeq(true, $ret_or_1) || (($eqeqeq(false, $ret_or_1) || (($eqeqeq($$$('Integer'), $ret_or_1) || ($eqeqeq($$$('Float'), $ret_or_1))))))))) ? (class_name = rhs.$inspect()) : (class_name = rhs.$$class)) + $Kernel.$raise($$$('ArgumentError'), "comparison of " + ((lhs).$class()) + " with " + (class_name) + " failed") + } + + function cmp_or_fail(lhs, rhs) { + var cmp = (lhs)['$<=>'](rhs); + if (!$truthy(cmp)) fail_comparison(lhs, rhs); + return normalize(cmp); + } + ; + + $def(self, '$==', function $Comparable_$eq_eq$1(other) { + var self = this, cmp = nil; + + + if ($truthy(self['$equal?'](other))) { + return true + }; + + if (self["$<=>"] == Opal.Kernel["$<=>"]) { + return false; + } + + // check for infinite recursion + if (self.$$comparable) { + delete self.$$comparable; + return false; + } + ; + if (!$truthy((cmp = self['$<=>'](other)))) { + return false + }; + return normalize(cmp) == 0;; + }, 1); + + $def(self, '$>', function $Comparable_$gt$2(other) { + var self = this; + + return cmp_or_fail(self, other) > 0; + }, 1); + + $def(self, '$>=', function $Comparable_$gt_eq$3(other) { + var self = this; + + return cmp_or_fail(self, other) >= 0; + }, 1); + + $def(self, '$<', function $Comparable_$lt$4(other) { + var self = this; + + return cmp_or_fail(self, other) < 0; + }, 1); + + $def(self, '$<=', function $Comparable_$lt_eq$5(other) { + var self = this; + + return cmp_or_fail(self, other) <= 0; + }, 1); + + $def(self, '$between?', function $Comparable_between$ques$6(min, max) { + var self = this; + + + if ($rb_lt(self, min)) { + return false + }; + if ($rb_gt(self, max)) { + return false + }; + return true; + }, 2); + return $def(self, '$clamp', function $$clamp(min, max) { + var self = this; + + + + if (max == null) max = nil;; + + var c, excl; + + if (max === nil) { + // We are dealing with a new Ruby 2.7 behaviour that we are able to + // provide a single Range argument instead of 2 Comparables. + + if (!Opal.is_a(min, Opal.Range)) { + $Kernel.$raise($$$('TypeError'), "wrong argument type " + (min.$class()) + " (expected Range)") + } + + excl = min.excl; + max = min.end; + min = min.begin; + + if (max !== nil && excl) { + $Kernel.$raise($$$('ArgumentError'), "cannot clamp with an exclusive range") + } + } + + if (min !== nil && max !== nil && cmp_or_fail(min, max) > 0) { + $Kernel.$raise($$$('ArgumentError'), "min argument must be smaller than max argument") + } + + if (min !== nil) { + c = cmp_or_fail(self, min); + + if (c == 0) return self; + if (c < 0) return min; + } + + if (max !== nil) { + c = cmp_or_fail(self, max); + + if (c > 0) return max; + } + + return self; + ; + }, -2); + })('::') +}; + +Opal.modules["pathname"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $const_set = Opal.const_set, $regexp = Opal.regexp, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $def = Opal.def, $defs = Opal.defs, $to_ary = Opal.to_ary, $send = Opal.send, $to_a = Opal.to_a, $neqeq = Opal.neqeq, $rb_plus = Opal.rb_plus, $not = Opal.not, $alias = Opal.alias, $module = Opal.module; + + Opal.add_stubs('require,include,quote,===,to_s,path,respond_to?,to_path,is_a?,nil?,raise,class,==,new,pwd,attr_reader,!,relative?,chop_basename,basename,=~,source,[],rindex,sub,absolute?,expand_path,plus,unshift,length,!=,empty?,first,shift,+,join,dirname,pop,reverse_each,directory?,extname,<=>,nonzero?,proc,casecmp,cleanpath,inspect,include?,fill,map,entries'); + + self.$require("corelib/comparable"); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Pathname'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.path = nil; + + self.$include($$('Comparable')); + $const_set($nesting[0], 'SEPARATOR_PAT', $regexp([$$('Regexp').$quote($$$($$('File'), 'SEPARATOR'))])); + + $def(self, '$initialize', function $$initialize(path) { + var self = this; + + + if ($eqeqeq($$('Pathname'), path)) { + self.path = path.$path().$to_s() + } else if ($truthy(path['$respond_to?']("to_path"))) { + self.path = path.$to_path() + } else if ($truthy(path['$is_a?']($$('String')))) { + self.path = path + } else if ($truthy(path['$nil?']())) { + self.$raise($$('TypeError'), "no implicit conversion of nil into String") + } else { + self.$raise($$('TypeError'), "no implicit conversion of " + (path.$class()) + " into String") + }; + if ($eqeq(self.path, "\u0000")) { + return self.$raise($$('ArgumentError')) + } else { + return nil + }; + }, 1); + $defs(self, '$pwd', function $$pwd() { + var self = this; + + return self.$new($$('Dir').$pwd()) + }, 0); + self.$attr_reader("path"); + + $def(self, '$==', function $Pathname_$eq_eq$1(other) { + var self = this; + + return other.$path()['$=='](self.path) + }, 1); + + $def(self, '$absolute?', function $Pathname_absolute$ques$2() { + var self = this; + + return self['$relative?']()['$!']() + }, 0); + + $def(self, '$relative?', function $Pathname_relative$ques$3() { + var $a, $b, $c, self = this, path = nil, r = nil; + + + path = self.path; + while ($truthy((r = self.$chop_basename(path)))) { + $c = r, $b = $to_ary($c), (path = ($b[0] == null ? nil : $b[0])), $c + }; + return path['$=='](""); + }, 0); + + $def(self, '$chop_basename', function $$chop_basename(path) { + var base = nil; + + + base = $$('File').$basename(path); + if ($truthy($$('Regexp').$new("^" + ($$$($$('Pathname'), 'SEPARATOR_PAT').$source()) + "?$")['$=~'](base))) { + return nil + } else { + return [path['$[]'](0, path.$rindex(base)), base] + }; + }, 1); + + $def(self, '$root?', function $Pathname_root$ques$4() { + var self = this; + + return self.path['$==']("/") + }, 0); + + $def(self, '$parent', function $$parent() { + var self = this, new_path = nil; + + + new_path = self.path.$sub(/\/([^\/]+\/?$)/, ""); + if ($eqeq(new_path, "")) { + new_path = ($truthy(self['$absolute?']()) ? ("/") : (".")) + }; + return $$('Pathname').$new(new_path); + }, 0); + + $def(self, '$sub', function $$sub($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $$('Pathname').$new($send(self.path, 'sub', $to_a(args))); + }, -1); + + $def(self, '$cleanpath', function $$cleanpath() { + var self = this; + + return Opal.normalize(self.path) + }, 0); + + $def(self, '$to_path', function $$to_path() { + var self = this; + + return self.path + }, 0); + + $def(self, '$hash', function $$hash() { + var self = this; + + return self.path + }, 0); + + $def(self, '$expand_path', function $$expand_path() { + var self = this; + + return $$('Pathname').$new($$('File').$expand_path(self.path)) + }, 0); + + $def(self, '$+', function $Pathname_$plus$5(other) { + var self = this; + + + if (!$eqeqeq($$('Pathname'), other)) { + other = $$('Pathname').$new(other) + }; + return $$('Pathname').$new(self.$plus(self.path, other.$to_s())); + }, 1); + + $def(self, '$plus', function $$plus(path1, path2) { + var $a, $b, $c, self = this, prefix2 = nil, index_list2 = nil, basename_list2 = nil, r2 = nil, basename2 = nil, prefix1 = nil, $ret_or_1 = nil, r1 = nil, basename1 = nil, suffix2 = nil; + + + prefix2 = path2; + index_list2 = []; + basename_list2 = []; + while ($truthy((r2 = self.$chop_basename(prefix2)))) { + + $c = r2, $b = $to_ary($c), (prefix2 = ($b[0] == null ? nil : $b[0])), (basename2 = ($b[1] == null ? nil : $b[1])), $c; + index_list2.$unshift(prefix2.$length()); + basename_list2.$unshift(basename2); + }; + if ($neqeq(prefix2, "")) { + return path2 + }; + prefix1 = path1; + while ($truthy(true)) { + + while ($truthy(($truthy(($ret_or_1 = basename_list2['$empty?']()['$!']())) ? (basename_list2.$first()['$=='](".")) : ($ret_or_1)))) { + + index_list2.$shift(); + basename_list2.$shift(); + }; + if (!$truthy((r1 = self.$chop_basename(prefix1)))) { + break; + }; + $c = r1, $b = $to_ary($c), (prefix1 = ($b[0] == null ? nil : $b[0])), (basename1 = ($b[1] == null ? nil : $b[1])), $c; + if ($eqeq(basename1, ".")) { + continue; + }; + if ((($eqeq(basename1, "..") || ($truthy(basename_list2['$empty?']()))) || ($neqeq(basename_list2.$first(), "..")))) { + + prefix1 = $rb_plus(prefix1, basename1); + break;; + }; + index_list2.$shift(); + basename_list2.$shift(); + }; + r1 = self.$chop_basename(prefix1); + if (($not(r1) && ($truthy($regexp([$$('SEPARATOR_PAT')])['$=~']($$('File').$basename(prefix1)))))) { + while ($truthy(($truthy(($ret_or_1 = basename_list2['$empty?']()['$!']())) ? (basename_list2.$first()['$==']("..")) : ($ret_or_1)))) { + + index_list2.$shift(); + basename_list2.$shift(); + } + }; + if ($not(basename_list2['$empty?']())) { + + suffix2 = path2['$[]'](Opal.Range.$new(index_list2.$first(), -1, false)); + if ($truthy(r1)) { + return $$('File').$join(prefix1, suffix2) + } else { + return $rb_plus(prefix1, suffix2) + }; + } else if ($truthy(r1)) { + return prefix1 + } else { + return $$('File').$dirname(prefix1) + }; + }, 2); + + $def(self, '$join', function $$join($a) {try { + + var $post_args, args, self = this, result = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if ($truthy(args['$empty?']())) { + return self + }; + result = args.$pop(); + if (!$eqeqeq($$('Pathname'), result)) { + result = $$('Pathname').$new(result) + }; + if ($truthy(result['$absolute?']())) { + return result + }; + $send(args, 'reverse_each', [], function $$6(arg){ + + + if (arg == null) arg = nil;; + if (!$eqeqeq($$('Pathname'), arg)) { + arg = $$('Pathname').$new(arg) + }; + result = $rb_plus(arg, result); + if ($truthy(result['$absolute?']())) { + Opal.ret(result) + } else { + return nil + };}, 1); + return $rb_plus(self, result); + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, -1); + + $def(self, '$split', function $$split() { + var self = this; + + return [self.$dirname(), self.$basename()] + }, 0); + + $def(self, '$dirname', function $$dirname() { + var self = this; + + return $$('Pathname').$new($$('File').$dirname(self.path)) + }, 0); + + $def(self, '$basename', function $$basename() { + var self = this; + + return $$('Pathname').$new($$('File').$basename(self.path)) + }, 0); + + $def(self, '$directory?', function $Pathname_directory$ques$7() { + var self = this; + + return $$('File')['$directory?'](self.path) + }, 0); + + $def(self, '$extname', function $$extname() { + var self = this; + + return $$('File').$extname(self.path) + }, 0); + + $def(self, '$<=>', function $Pathname_$lt_eq_gt$8(other) { + var self = this; + + return self.$path()['$<=>'](other.$path()) + }, 1); + $const_set($nesting[0], 'SAME_PATHS', ($truthy($$$($$('File'), 'FNM_SYSCASE')['$nonzero?']()) ? ($send(self, 'proc', [], function $Pathname$9(a, b){ + + + if (a == null) a = nil;; + + if (b == null) b = nil;; + return a.$casecmp(b)['$=='](0);}, 2)) : ($send(self, 'proc', [], function $Pathname$10(a, b){ + + + if (a == null) a = nil;; + + if (b == null) b = nil;; + return a['$=='](b);}, 2)))); + + $def(self, '$relative_path_from', function $$relative_path_from(base_directory) { + var $a, $b, $c, self = this, dest_directory = nil, dest_prefix = nil, dest_names = nil, r = nil, basename = nil, base_prefix = nil, base_names = nil, $ret_or_1 = nil, $ret_or_2 = nil, relpath_names = nil; + + + dest_directory = self.$cleanpath().$to_s(); + base_directory = base_directory.$cleanpath().$to_s(); + dest_prefix = dest_directory; + dest_names = []; + while ($truthy((r = self.$chop_basename(dest_prefix)))) { + + $c = r, $b = $to_ary($c), (dest_prefix = ($b[0] == null ? nil : $b[0])), (basename = ($b[1] == null ? nil : $b[1])), $c; + if ($neqeq(basename, ".")) { + dest_names.$unshift(basename) + }; + }; + base_prefix = base_directory; + base_names = []; + while ($truthy((r = self.$chop_basename(base_prefix)))) { + + $c = r, $b = $to_ary($c), (base_prefix = ($b[0] == null ? nil : $b[0])), (basename = ($b[1] == null ? nil : $b[1])), $c; + if ($neqeq(basename, ".")) { + base_names.$unshift(basename) + }; + }; + if (!$truthy($$('SAME_PATHS')['$[]'](dest_prefix, base_prefix))) { + self.$raise($$('ArgumentError'), "different prefix: " + (dest_prefix.$inspect()) + " and " + (base_directory.$inspect())) + }; + while ($truthy(($truthy(($ret_or_1 = ($truthy(($ret_or_2 = dest_names['$empty?']()['$!']())) ? (base_names['$empty?']()['$!']()) : ($ret_or_2)))) ? ($$('SAME_PATHS')['$[]'](dest_names.$first(), base_names.$first())) : ($ret_or_1)))) { + + dest_names.$shift(); + base_names.$shift(); + }; + if ($truthy(base_names['$include?'](".."))) { + self.$raise($$('ArgumentError'), "base_directory has ..: " + (base_directory.$inspect())) + }; + base_names.$fill(".."); + relpath_names = $rb_plus(base_names, dest_names); + if ($truthy(relpath_names['$empty?']())) { + return $$('Pathname').$new(".") + } else { + return $$('Pathname').$new($send($$('File'), 'join', $to_a(relpath_names))) + }; + }, 1); + + $def(self, '$entries', function $$entries() { + var self = this; + + return $send($$('Dir').$entries(self.path), 'map', [], function $$11(f){var self = $$11.$$s == null ? this : $$11.$$s; + + + + if (f == null) f = nil;; + return self.$class().$new(f);}, {$$arity: 1, $$s: self}) + }, 0); + $alias(self, "===", "=="); + $alias(self, "eql?", "=="); + $alias(self, "to_s", "to_path"); + return $alias(self, "to_str", "to_path"); + })($nesting[0], null, $nesting); + return (function($base, $parent_nesting) { + var self = $module($base, 'Kernel'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$Pathname', function $$Pathname(path) { + + return $$('Pathname').$new(path) + }, 1) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/hike"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $hash2 = Opal.hash2, $def = Opal.def, $truthy = Opal.truthy, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $to_ary = Opal.to_ary, $regexp = Opal.regexp, $rb_plus = Opal.rb_plus; + + Opal.add_stubs('require,attr_reader,freeze,dup,map,new,to_s,sub,=~,find_in_base_path,find_in_paths,[],directory?,sort,reject,entries,[]=,-,key?,exist?,stat,protected,is_a?,last,pop,split,each,match,join,to_proc,paths_contain?,pattern_for,select,sort_matches,file?,any?,paths,==,length,build_pattern_for,extensions,escape,sort_by,scan,inject,index,+,expand_path,concat,normalize_path,normalize_extension,find,root,private,start_with?,relative?'); + + self.$require("pathname"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Hike'); + + var $nesting = [self].concat($parent_nesting); + + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Index'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.root = $proto.entries = $proto.stats = $proto.pathnames = $proto.patterns = nil; + + self.$attr_reader("paths"); + self.$attr_reader("extensions"); + + $def(self, '$initialize', function $$initialize(root, paths, extensions) { + var self = this; + + + self.root = root; + self.paths = paths.$dup().$freeze(); + self.extensions = extensions.$dup().$freeze(); + self.pathnames = $send(paths, 'map', [], function $$1(path){ + + + if (path == null) path = nil;; + return $$('Pathname').$new(path);}, 1); + self.stats = $hash2([], {}); + self.entries = $hash2([], {}); + return (self.patterns = $hash2([], {})); + }, 3); + + $def(self, '$root', function $$root() { + var self = this; + + return self.root.$to_s() + }, 0); + + $def(self, '$index', function $$index() { + var self = this; + + return self + }, 0); + + $def(self, '$find', function $$find(logical_path) {try { + + var self = this, base_path = nil; + + + base_path = $$('Pathname').$new(self.root); + logical_path = $$('Pathname').$new(logical_path.$sub(/^\//, "")); + if ($truthy(logical_path.$to_s()['$=~'](/^\.\.?\//))) { + $send(self, 'find_in_base_path', [logical_path, base_path], function $$2(path){ + + + if (path == null) path = nil;; + Opal.ret(path);}, 1) + } else { + $send(self, 'find_in_paths', [logical_path], function $$3(path){ + + + if (path == null) path = nil;; + Opal.ret(path);}, 1) + }; + return nil; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 1); + + $def(self, '$entries', function $$entries(path) { + var self = this, $ret_or_1 = nil, $writer = nil, pathname = nil; + + if ($truthy(($ret_or_1 = self.entries['$[]'](path.$to_s())))) { + return $ret_or_1 + } else { + + $writer = [path.$to_s(), ((pathname = $$('Pathname').$new(path)), ($truthy(pathname['$directory?']()) ? ($send(pathname.$entries(), 'reject', [], function $$4(entry){ + + + if (entry == null) entry = nil;; + return entry.$to_s()['$=~'](/^\.|~$|^\#.*\#$/);}, 1).$sort()) : ([])))]; + $send(self.entries, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } + }, 1); + + $def(self, '$stat', function $$stat(path) { + var self = this, key = nil, $writer = nil; + + + key = path.$to_s(); + if ($truthy(self.stats['$key?'](key))) { + return self.stats['$[]'](key) + } else if ($truthy($$('File')['$exist?'](path))) { + + $writer = [key, $$('File').$stat(path)]; + $send(self.stats, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else { + + $writer = [key, nil]; + $send(self.stats, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }; + }, 1); + self.$protected(); + + $def(self, '$extract_options!', function $Index_extract_options$excl$5(arguments$) { + + if ($truthy(arguments$.$last()['$is_a?']($$('Hash')))) { + return arguments$.$pop().$dup() + } else { + return $hash2([], {}) + } + }, 1); + + $def(self, '$find_in_paths', function $$find_in_paths(logical_path) { + var block = $$find_in_paths.$$p || nil, $a, $b, self = this, dirname = nil, basename = nil; + + delete $$find_in_paths.$$p; + + ; + $b = logical_path.$split(), $a = $to_ary($b), (dirname = ($a[0] == null ? nil : $a[0])), (basename = ($a[1] == null ? nil : $a[1])), $b; + return $send(self.pathnames, 'each', [], function $$6(base_path){var self = $$6.$$s == null ? this : $$6.$$s; + + + + if (base_path == null) base_path = nil;; + return $send(self, 'match', [base_path.$join(dirname), basename], block.$to_proc());}, {$$arity: 1, $$s: self}); + }, 1); + + $def(self, '$find_in_base_path', function $$find_in_base_path(logical_path, base_path) { + var block = $$find_in_base_path.$$p || nil, $a, $b, self = this, candidate = nil, dirname = nil, basename = nil; + + delete $$find_in_base_path.$$p; + + ; + candidate = base_path.$join(logical_path); + $b = candidate.$split(), $a = $to_ary($b), (dirname = ($a[0] == null ? nil : $a[0])), (basename = ($a[1] == null ? nil : $a[1])), $b; + if ($truthy(self['$paths_contain?'](dirname))) { + return $send(self, 'match', [dirname, basename], block.$to_proc()) + } else { + return nil + }; + }, 2); + + $def(self, '$match', function $$match(dirname, basename) { + var $yield = $$match.$$p || nil, self = this, matches = nil, pattern = nil; + + delete $$match.$$p; + + matches = self.$entries(dirname); + pattern = self.$pattern_for(basename); + matches = $send(matches, 'select', [], function $$7(m){ + + + if (m == null) m = nil;; + return m.$to_s()['$=~'](pattern);}, 1); + return $send(self.$sort_matches(matches, basename), 'each', [], function $$8(path){var self = $$8.$$s == null ? this : $$8.$$s, pathname = nil, stat = nil; + + + + if (path == null) path = nil;; + pathname = dirname.$join(path); + stat = self.$stat(pathname); + if (($truthy(stat) && ($truthy(stat['$file?']())))) { + return Opal.yield1($yield, pathname.$to_s()); + } else { + return nil + };}, {$$arity: 1, $$s: self}); + }, 2); + + $def(self, '$paths_contain?', function $Index_paths_contain$ques$9(dirname) { + var self = this; + + return $send(self.$paths(), 'any?', [], function $$10(path){ + + + if (path == null) path = nil;; + return dirname.$to_s()['$[]'](0, path.$length())['$=='](path);}, 1) + }, 1); + + $def(self, '$pattern_for', function $$pattern_for(basename) { + var self = this, $ret_or_1 = nil, $writer = nil; + + if ($truthy(($ret_or_1 = self.patterns['$[]'](basename)))) { + return $ret_or_1 + } else { + + $writer = [basename, self.$build_pattern_for(basename)]; + $send(self.patterns, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } + }, 1); + + $def(self, '$build_pattern_for', function $$build_pattern_for(basename) { + var self = this, extension_pattern = nil; + + + extension_pattern = $send(self.$extensions(), 'map', [], function $$11(e){ + + + if (e == null) e = nil;; + return $$('Regexp').$escape(e);}, 1).$join("|"); + return $regexp(["^", basename, "(?:", extension_pattern, ")*$"]); + }, 1); + return $def(self, '$sort_matches', function $$sort_matches(matches, basename) { + var self = this; + + return $send(matches, 'sort_by', [], function $$12(match){var self = $$12.$$s == null ? this : $$12.$$s, extnames = nil; + + + + if (match == null) match = nil;; + extnames = match.$sub(basename.$to_s(), "").$to_s().$scan(/\.[^.]+/); + return $send(extnames, 'inject', [0], function $$13(sum, ext){var self = $$13.$$s == null ? this : $$13.$$s, index = nil; + + + + if (sum == null) sum = nil;; + + if (ext == null) ext = nil;; + index = self.$extensions().$index(ext); + if ($truthy(index)) { + return $rb_plus($rb_plus(sum, index), 1) + } else { + return sum + };}, {$$arity: 2, $$s: self});}, {$$arity: 1, $$s: self}) + }, 2); + })($nesting[0], null, $nesting); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Trail'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.root = $proto.paths = $proto.extensions = nil; + + self.$attr_reader("paths"); + self.$attr_reader("extensions"); + + $def(self, '$initialize', function $$initialize(root) { + var self = this; + + + + if (root == null) root = ".";; + self.root = $$('Pathname').$new(root).$expand_path(); + self.paths = []; + return (self.extensions = []); + }, -1); + + $def(self, '$root', function $$root() { + var self = this; + + return self.root.$to_s() + }, 0); + + $def(self, '$append_paths', function $$append_paths($a) { + var $post_args, paths, self = this; + + + + $post_args = Opal.slice.call(arguments); + + paths = $post_args;; + return self.paths.$concat($send(paths, 'map', [], function $$14(p){var self = $$14.$$s == null ? this : $$14.$$s; + + + + if (p == null) p = nil;; + return self.$normalize_path(p);}, {$$arity: 1, $$s: self})); + }, -1); + + $def(self, '$append_extensions', function $$append_extensions($a) { + var $post_args, extensions, self = this; + + + + $post_args = Opal.slice.call(arguments); + + extensions = $post_args;; + return self.extensions.$concat($send(extensions, 'map', [], function $$15(e){var self = $$15.$$s == null ? this : $$15.$$s; + + + + if (e == null) e = nil;; + return self.$normalize_extension(e);}, {$$arity: 1, $$s: self})); + }, -1); + + $def(self, '$find', function $$find($a) { + var block = $$find.$$p || nil, $post_args, args, self = this; + + delete $$find.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send(self.$index(), 'find', $to_a(args), block.$to_proc()); + }, -1); + + $def(self, '$index', function $$index() { + var self = this; + + return $$('Index').$new(self.$root(), self.$paths(), self.$extensions()) + }, 0); + + $def(self, '$entries', function $$entries(path) { + var pathname = nil; + + + pathname = $$('Pathname').$new(path); + if ($truthy(pathname['$directory?']())) { + return $send(pathname.$entries(), 'reject', [], function $$16(entry){ + + + if (entry == null) entry = nil;; + return entry.$to_s()['$=~'](/^\.|~$|^\#.*\#$/);}, 1).$sort() + } else { + return [] + }; + }, 1); + + $def(self, '$stat', function $$stat(path) { + + if ($truthy($$('File')['$exist?'](path))) { + return $$('File').$stat(path.$to_s()) + } else { + return nil + } + }, 1); + self.$private(); + + $def(self, '$normalize_extension', function $$normalize_extension(ext) { + + if ($truthy(ext['$start_with?']("."))) { + return ext + } else { + return "." + (ext) + } + }, 1); + return $def(self, '$normalize_path', function $$normalize_path(path) { + var self = this; + + + path = $$('Pathname').$new(path); + if ($truthy(path['$relative?']())) { + path = self.root.$join(path) + }; + return path.$expand_path().$to_s(); + }, 1); + })($nesting[0], null, $nesting); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/path_reader"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $regexp = Opal.regexp, $send = Opal.send, $to_a = Opal.to_a, $def = Opal.def, $truthy = Opal.truthy; + + Opal.add_stubs('require,freeze,quote,paths,new,append_paths,append_extensions,expand,nil?,exist?,open,to_proc,=~,absolute?,find_path,file_finder,extensions,private,Pathname,find,attr_reader'); + + self.$require("opal/regexp_anchors"); + self.$require("opal/hike"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'PathReader'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.file_finder = nil; + + $const_set($nesting[0], 'RELATIVE_PATH_REGEXP', $regexp([$$$($$('Opal'), 'REGEXP_START'), "\\.?\\.", $$('Regexp').$quote($$$($$('File'), 'SEPARATOR'))]).$freeze()); + $const_set($nesting[0], 'DEFAULT_EXTENSIONS', [".js", ".js.rb", ".rb", ".opalerb"].$freeze()); + + $def(self, '$initialize', function $$initialize(paths, extensions) { + var self = this; + + + + if (paths == null) paths = $$('Opal').$paths();; + + if (extensions == null) extensions = $$('DEFAULT_EXTENSIONS');; + self.file_finder = $$$($$('Hike'), 'Trail').$new(); + $send(self.file_finder, 'append_paths', $to_a(paths)); + return $send(self.file_finder, 'append_extensions', $to_a(extensions)); + }, -1); + + $def(self, '$read', function $$read(path) { + var self = this, full_path = nil; + + + full_path = self.$expand(path); + if ($truthy(full_path['$nil?']())) { + return nil + }; + if ($truthy($$('File')['$exist?'](full_path))) { + return $send($$('File'), 'open', [full_path, "rb:UTF-8"], "read".$to_proc()) + } else { + return nil + }; + }, 1); + + $def(self, '$expand', function $$expand(path) { + var self = this; + + if (($truthy($$('Pathname').$new(path)['$absolute?']()) || ($truthy(path['$=~']($$('RELATIVE_PATH_REGEXP')))))) { + return path + } else { + return self.$find_path(path) + } + }, 1); + + $def(self, '$paths', function $$paths() { + var self = this; + + return self.$file_finder().$paths() + }, 0); + + $def(self, '$extensions', function $$extensions() { + var self = this; + + return self.$file_finder().$extensions() + }, 0); + + $def(self, '$append_paths', function $$append_paths($a) { + var $post_args, paths, self = this; + + + + $post_args = Opal.slice.call(arguments); + + paths = $post_args;; + return $send(self.$file_finder(), 'append_paths', $to_a(paths)); + }, -1); + self.$private(); + + $def(self, '$find_path', function $$find_path(path) { + var self = this, pathname = nil; + + + pathname = self.$Pathname(path); + if (($truthy(pathname['$absolute?']()) && ($truthy(pathname['$exist?']())))) { + return path + }; + return self.$file_finder().$find(path); + }, 1); + return self.$attr_reader("file_finder"); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/paths"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $defs = Opal.defs, $send = Opal.send, $to_a = Opal.to_a, $def = Opal.def, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus; + + Opal.add_stubs('expand_path,append_paths,concat,require_paths_for_gem,private,find_by_name,raise,each,runtime_dependencies,+,name,gem_dir,map,require_paths,<<,join,extend,freeze,core_dir,std_dir,reset_paths!'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs(self, '$gem_dir', function $$gem_dir() { + + return $$('File').$expand_path("../..", "opal/paths.rb") + }, 0); + $defs(self, '$core_dir', function $$core_dir() { + + return $$('File').$expand_path("../../../opal", "opal/paths.rb") + }, 0); + $defs(self, '$std_dir', function $$std_dir() { + + return $$('File').$expand_path("../../../stdlib", "opal/paths.rb") + }, 0); + $defs(self, '$append_path', function $$append_path(path) { + var self = this; + + return self.$append_paths(path) + }, 1); + $defs(self, '$append_paths', function $$append_paths($a) { + var $post_args, paths, self = this; + if (self.paths == null) self.paths = nil; + + + + $post_args = Opal.slice.call(arguments); + + paths = $post_args;; + self.paths.$concat(paths); + return nil; + }, -1); + (function($base, $parent_nesting) { + var self = $module($base, 'UseGem'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$use_gem', function $$use_gem(gem_name, include_dependencies) { + var self = this; + + + + if (include_dependencies == null) include_dependencies = true;; + return $send(self, 'append_paths', $to_a(self.$require_paths_for_gem(gem_name, include_dependencies))); + }, -2); + self.$private(); + return $def(self, '$require_paths_for_gem', function $$require_paths_for_gem(gem_name, include_dependencies) { + var self = this, paths = nil, spec = nil, gem_dir = nil; + + + paths = []; + spec = $$$($$('Gem'), 'Specification').$find_by_name(gem_name); + if (!$truthy(spec)) { + self.$raise($$('GemNotFound'), gem_name) + }; + if ($truthy(include_dependencies)) { + $send(spec.$runtime_dependencies(), 'each', [], function $$1(dependency){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (dependency == null) dependency = nil;; + return (paths = $rb_plus(paths, self.$require_paths_for_gem(dependency.$name(), include_dependencies)));}, {$$arity: 1, $$s: self}) + }; + gem_dir = spec.$gem_dir(); + $send(spec.$require_paths(), 'map', [], function $$2(path){ + + + if (path == null) path = nil;; + return paths['$<<']($$('File').$join(gem_dir, path));}, 1); + return paths; + }, 2); + })($nesting[0], $nesting); + self.$extend($$('UseGem')); + $defs(self, '$paths', function $$paths() { + var self = this; + if (self.paths == null) self.paths = nil; + + return self.paths.$freeze() + }, 0); + $defs(self, '$reset_paths!', function $Opal_reset_paths$excl$3() { + var self = this; + + + self.paths = [self.$core_dir(), self.$std_dir(), self.$gem_dir()]; + nil; + return nil; + }, 0); + return self['$reset_paths!'](); + })($nesting[0], $nesting) +}; + +Opal.modules["set"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $defs = Opal.defs, $hash2 = Opal.hash2, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $send = Opal.send, $def = Opal.def, $eqeq = Opal.eqeq, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_lt = Opal.rb_lt, $rb_le = Opal.rb_le, $alias = Opal.alias, $module = Opal.module; + + Opal.add_stubs('include,new,nil?,===,raise,each,add,merge,class,respond_to?,subtract,dup,join,to_a,equal?,instance_of?,==,instance_variable_get,size,is_a?,all?,include?,[]=,-,enum_for,[],<<,replace,delete,select,reject,delete_if,to_proc,keep_if,each_key,empty?,eql?,instance_eval,clear,<,<=,any?,!,intersect?,keys'); + + (function($base, $super) { + var self = $klass($base, $super, 'Set'); + + var $ret_or_1 = nil, $proto = self.$$prototype; + + $proto.hash = nil; + + self.$include($$$('Enumerable')); + $defs(self, '$[]', function $Set_$$$1($a) { + var $post_args, ary, self = this; + + + + $post_args = Opal.slice.call(arguments); + + ary = $post_args;; + return self.$new(ary); + }, -1); + + $def(self, '$initialize', function $$initialize(enum$) { + var block = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + ; + + if (enum$ == null) enum$ = nil;; + self.hash = $hash2([], {}); + if ($truthy(enum$['$nil?']())) { + return nil + }; + if (!$eqeqeq($$$('Enumerable'), enum$)) { + $Kernel.$raise($$$('ArgumentError'), "value must be enumerable") + }; + if ($truthy(block)) { + return $send(enum$, 'each', [], function $$2(item){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (item == null) item = nil;; + return self.$add(Opal.yield1(block, item));}, {$$arity: 1, $$s: self}) + } else { + return self.$merge(enum$) + }; + }, -1); + + $def(self, '$dup', function $$dup() { + var self = this, result = nil; + + + result = self.$class().$new(); + return result.$merge(self); + }, 0); + + $def(self, '$-', function $Set_$minus$3(enum$) { + var self = this; + + + if (!$truthy(enum$['$respond_to?']("each"))) { + $Kernel.$raise($$$('ArgumentError'), "value must be enumerable") + }; + return self.$dup().$subtract(enum$); + }, 1); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return "#" + }, 0); + + $def(self, '$==', function $Set_$eq_eq$4(other) { + var self = this; + + if ($truthy(self['$equal?'](other))) { + return true + } else if ($truthy(other['$instance_of?'](self.$class()))) { + return self.hash['$=='](other.$instance_variable_get("@hash")) + } else if (($truthy(other['$is_a?']($$$('Set'))) && ($eqeq(self.$size(), other.$size())))) { + return $send(other, 'all?', [], function $$5(o){var self = $$5.$$s == null ? this : $$5.$$s; + if (self.hash == null) self.hash = nil; + + + + if (o == null) o = nil;; + return self.hash['$include?'](o);}, {$$arity: 1, $$s: self}) + } else { + return false + } + }, 1); + + $def(self, '$add', function $$add(o) { + var self = this, $writer = nil; + + + + $writer = [o, true]; + $send(self.hash, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self; + }, 1); + + $def(self, '$classify', function $$classify() { + var block = $$classify.$$p || nil, self = this, result = nil; + + delete $$classify.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("classify") + }; + result = $send($$$('Hash'), 'new', [], function $$6(h, k){var self = $$6.$$s == null ? this : $$6.$$s, $writer = nil; + + + + if (h == null) h = nil;; + + if (k == null) k = nil;; + $writer = [k, self.$class().$new()]; + $send(h, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 2, $$s: self}); + $send(self, 'each', [], function $$7(item){ + + + if (item == null) item = nil;; + return result['$[]'](Opal.yield1(block, item)).$add(item);}, 1); + return result; + }, 0); + + $def(self, '$collect!', function $Set_collect$excl$8() { + var block = $Set_collect$excl$8.$$p || nil, self = this, result = nil; + + delete $Set_collect$excl$8.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("collect!") + }; + result = self.$class().$new(); + $send(self, 'each', [], function $$9(item){ + + + if (item == null) item = nil;; + return result['$<<'](Opal.yield1(block, item));}, 1); + return self.$replace(result); + }, 0); + + $def(self, '$delete', function $Set_delete$10(o) { + var self = this; + + + self.hash.$delete(o); + return self; + }, 1); + + $def(self, '$delete?', function $Set_delete$ques$11(o) { + var self = this; + + if ($truthy(self['$include?'](o))) { + + self.$delete(o); + return self; + } else { + return nil + } + }, 1); + + $def(self, '$delete_if', function $$delete_if() { + var $yield = $$delete_if.$$p || nil, self = this; + + delete $$delete_if.$$p; + + if (!($yield !== nil)) { + return self.$enum_for("delete_if") + }; + $send($send(self, 'select', [], function $$12(o){ + + + if (o == null) o = nil;; + return Opal.yield1($yield, o);;}, 1), 'each', [], function $$13(o){var self = $$13.$$s == null ? this : $$13.$$s; + if (self.hash == null) self.hash = nil; + + + + if (o == null) o = nil;; + return self.hash.$delete(o);}, {$$arity: 1, $$s: self}); + return self; + }, 0); + + $def(self, '$keep_if', function $$keep_if() { + var $yield = $$keep_if.$$p || nil, self = this; + + delete $$keep_if.$$p; + + if (!($yield !== nil)) { + return self.$enum_for("keep_if") + }; + $send($send(self, 'reject', [], function $$14(o){ + + + if (o == null) o = nil;; + return Opal.yield1($yield, o);;}, 1), 'each', [], function $$15(o){var self = $$15.$$s == null ? this : $$15.$$s; + if (self.hash == null) self.hash = nil; + + + + if (o == null) o = nil;; + return self.hash.$delete(o);}, {$$arity: 1, $$s: self}); + return self; + }, 0); + + $def(self, '$reject!', function $Set_reject$excl$16() { + var block = $Set_reject$excl$16.$$p || nil, self = this, before = nil; + + delete $Set_reject$excl$16.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("reject!") + }; + before = self.$size(); + $send(self, 'delete_if', [], block.$to_proc()); + if ($eqeq(self.$size(), before)) { + return nil + } else { + return self + }; + }, 0); + + $def(self, '$select!', function $Set_select$excl$17() { + var block = $Set_select$excl$17.$$p || nil, self = this, before = nil; + + delete $Set_select$excl$17.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("select!") + }; + before = self.$size(); + $send(self, 'keep_if', [], block.$to_proc()); + if ($eqeq(self.$size(), before)) { + return nil + } else { + return self + }; + }, 0); + + $def(self, '$add?', function $Set_add$ques$18(o) { + var self = this; + + if ($truthy(self['$include?'](o))) { + return nil + } else { + return self.$add(o) + } + }, 1); + + $def(self, '$each', function $$each() { + var block = $$each.$$p || nil, self = this; + + delete $$each.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("each") + }; + $send(self.hash, 'each_key', [], block.$to_proc()); + return self; + }, 0); + + $def(self, '$empty?', function $Set_empty$ques$19() { + var self = this; + + return self.hash['$empty?']() + }, 0); + + $def(self, '$eql?', function $Set_eql$ques$20(other) { + var self = this; + + return self.hash['$eql?']($send(other, 'instance_eval', [], function $$21(){var self = $$21.$$s == null ? this : $$21.$$s; + if (self.hash == null) self.hash = nil; + + return self.hash}, {$$arity: 0, $$s: self})) + }, 1); + + $def(self, '$clear', function $$clear() { + var self = this; + + + self.hash.$clear(); + return self; + }, 0); + + $def(self, '$include?', function $Set_include$ques$22(o) { + var self = this; + + return self.hash['$include?'](o) + }, 1); + + $def(self, '$merge', function $$merge(enum$) { + var self = this; + + + $send(enum$, 'each', [], function $$23(item){var self = $$23.$$s == null ? this : $$23.$$s; + + + + if (item == null) item = nil;; + return self.$add(item);}, {$$arity: 1, $$s: self}); + return self; + }, 1); + + $def(self, '$replace', function $$replace(enum$) { + var self = this; + + + self.$clear(); + self.$merge(enum$); + return self; + }, 1); + + $def(self, '$size', function $$size() { + var self = this; + + return self.hash.$size() + }, 0); + + $def(self, '$subtract', function $$subtract(enum$) { + var self = this; + + + $send(enum$, 'each', [], function $$24(item){var self = $$24.$$s == null ? this : $$24.$$s; + + + + if (item == null) item = nil;; + return self.$delete(item);}, {$$arity: 1, $$s: self}); + return self; + }, 1); + + $def(self, '$|', function $Set_$$25(enum$) { + var self = this; + + + if (!$truthy(enum$['$respond_to?']("each"))) { + $Kernel.$raise($$$('ArgumentError'), "value must be enumerable") + }; + return self.$dup().$merge(enum$); + }, 1); + + function is_set(set) { + ($truthy(($ret_or_1 = (set)['$is_a?']($$$('Set')))) ? ($ret_or_1) : ($Kernel.$raise($$$('ArgumentError'), "value must be a set"))) + } + ; + + $def(self, '$superset?', function $Set_superset$ques$26(set) { + var self = this; + + + is_set(set); + if ($truthy($rb_lt(self.$size(), set.$size()))) { + return false + }; + return $send(set, 'all?', [], function $$27(o){var self = $$27.$$s == null ? this : $$27.$$s; + + + + if (o == null) o = nil;; + return self['$include?'](o);}, {$$arity: 1, $$s: self}); + }, 1); + + $def(self, '$proper_superset?', function $Set_proper_superset$ques$28(set) { + var self = this; + + + is_set(set); + if ($truthy($rb_le(self.$size(), set.$size()))) { + return false + }; + return $send(set, 'all?', [], function $$29(o){var self = $$29.$$s == null ? this : $$29.$$s; + + + + if (o == null) o = nil;; + return self['$include?'](o);}, {$$arity: 1, $$s: self}); + }, 1); + + $def(self, '$subset?', function $Set_subset$ques$30(set) { + var self = this; + + + is_set(set); + if ($truthy($rb_lt(set.$size(), self.$size()))) { + return false + }; + return $send(self, 'all?', [], function $$31(o){ + + + if (o == null) o = nil;; + return set['$include?'](o);}, 1); + }, 1); + + $def(self, '$proper_subset?', function $Set_proper_subset$ques$32(set) { + var self = this; + + + is_set(set); + if ($truthy($rb_le(set.$size(), self.$size()))) { + return false + }; + return $send(self, 'all?', [], function $$33(o){ + + + if (o == null) o = nil;; + return set['$include?'](o);}, 1); + }, 1); + + $def(self, '$intersect?', function $Set_intersect$ques$34(set) { + var self = this; + + + is_set(set); + if ($truthy($rb_lt(self.$size(), set.$size()))) { + return $send(self, 'any?', [], function $$35(o){ + + + if (o == null) o = nil;; + return set['$include?'](o);}, 1) + } else { + return $send(set, 'any?', [], function $$36(o){var self = $$36.$$s == null ? this : $$36.$$s; + + + + if (o == null) o = nil;; + return self['$include?'](o);}, {$$arity: 1, $$s: self}) + }; + }, 1); + + $def(self, '$disjoint?', function $Set_disjoint$ques$37(set) { + var self = this; + + return self['$intersect?'](set)['$!']() + }, 1); + + $def(self, '$to_a', function $$to_a() { + var self = this; + + return self.hash.$keys() + }, 0); + $alias(self, "+", "|"); + $alias(self, "<", "proper_subset?"); + $alias(self, "<<", "add"); + $alias(self, "<=", "subset?"); + $alias(self, ">", "proper_superset?"); + $alias(self, ">=", "superset?"); + $alias(self, "difference", "-"); + $alias(self, "filter!", "select!"); + $alias(self, "length", "size"); + $alias(self, "map!", "collect!"); + $alias(self, "member?", "include?"); + return $alias(self, "union", "|"); + })('::', null); + return (function($base, $parent_nesting) { + var self = $module($base, 'Enumerable'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$to_set', function $$to_set($a, $b) { + var block = $$to_set.$$p || nil, $post_args, klass, args, self = this; + + delete $$to_set.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + if ($post_args.length > 0) klass = $post_args.shift(); + if (klass == null) klass = $$('Set');; + + args = $post_args;; + return $send(klass, 'new', [self].concat($to_a(args)), block.$to_proc()); + }, -1) + })('::', $nesting); +}; + +Opal.modules["opal/config"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $truthy = Opal.truthy, $hash2 = Opal.hash2, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $eqeqeq = Opal.eqeqeq, $lambda = Opal.lambda; + + Opal.add_stubs('require,extend,private,fetch,[]=,config_options,-,define_singleton_method,config,any?,===,raise,inspect,public,each,call,default_config,config_option,new'); + + self.$require("set"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Config'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$extend(self); + self.$private(); + + $def(self, '$config_options', function $$config_options() { + var self = this, $ret_or_1 = nil; + if (self.config_options == null) self.config_options = nil; + + return (self.config_options = ($truthy(($ret_or_1 = self.config_options)) ? ($ret_or_1) : ($hash2([], {})))) + }, 0); + + $def(self, '$config_option', function $$config_option(name, default_value, options) { + var self = this, compiler = nil, valid_values = nil, $writer = nil; + + + + if (options == null) options = $hash2([], {});; + compiler = options.$fetch("compiler_option", nil); + valid_values = options.$fetch("valid_values", [true, false]); + + $writer = [name, $hash2(["default", "compiler"], {"default": default_value, "compiler": compiler})]; + $send(self.$config_options(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + $send(self, 'define_singleton_method', [name], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s; + + return self.$config().$fetch(name, default_value)}, {$$arity: 0, $$s: self}); + return $send(self, 'define_singleton_method', ["" + (name) + "="], function $$2(value){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (value == null) value = nil;; + if (!$truthy($send(valid_values, 'any?', [], function $$3(valid_value){ + + + if (valid_value == null) valid_value = nil;; + return valid_value['$==='](value);}, 1))) { + self.$raise($$('ArgumentError'), "" + ("Not a valid value for option " + (self) + "." + (name) + ", provided " + (value.$inspect()) + ". ") + ("Must be " + (valid_values.$inspect()) + " === " + (value.$inspect()))) + }; + + $writer = [name, value]; + $send(self.$config(), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + }, -3); + self.$public(); + + $def(self, '$default_config', function $$default_config() { + var self = this, default_config = nil; + + + default_config = $hash2([], {}); + $send(self.$config_options(), 'each', [], function $$4(name, options){var default_value = nil, $writer = nil; + + + + if (name == null) name = nil;; + + if (options == null) options = nil;; + default_value = options.$fetch("default"); + default_value = ($eqeqeq($$('Proc'), default_value) ? (default_value.$call()) : (default_value)); + + $writer = [name, default_value]; + $send(default_config, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, 2); + return default_config; + }, 0); + + $def(self, '$compiler_options', function $$compiler_options() { + var self = this, compiler_options = nil; + + + compiler_options = $hash2([], {}); + $send(self.$config_options(), 'each', [], function $$5(name, options){var self = $$5.$$s == null ? this : $$5.$$s, compiler_option_name = nil, $writer = nil; + + + + if (name == null) name = nil;; + + if (options == null) options = nil;; + compiler_option_name = options.$fetch("compiler"); + + $writer = [compiler_option_name, self.$config().$fetch(name)]; + $send(compiler_options, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 2, $$s: self}); + return compiler_options; + }, 0); + + $def(self, '$config', function $$config() { + var self = this, $ret_or_1 = nil; + if (self.config == null) self.config = nil; + + return (self.config = ($truthy(($ret_or_1 = self.config)) ? ($ret_or_1) : (self.$default_config()))) + }, 0); + + $def(self, '$reset!', function $Config_reset$excl$6() { + var self = this; + + return (self.config = nil) + }, 0); + self.$config_option("method_missing_enabled", true, $hash2(["compiler_option"], {"compiler_option": "method_missing"})); + self.$config_option("const_missing_enabled", true, $hash2(["compiler_option"], {"compiler_option": "const_missing"})); + self.$config_option("arity_check_enabled", false, $hash2(["compiler_option"], {"compiler_option": "arity_check"})); + self.$config_option("freezing_stubs_enabled", true, $hash2(["compiler_option"], {"compiler_option": "freezing"})); + self.$config_option("esm", false, $hash2(["compiler_option"], {"compiler_option": "esm"})); + self.$config_option("dynamic_require_severity", "warning", $hash2(["compiler_option", "valid_values"], {"compiler_option": "dynamic_require_severity", "valid_values": ["error", "warning", "ignore"]})); + self.$config_option("missing_require_severity", "error", $hash2(["valid_values"], {"valid_values": ["error", "warning", "ignore"]})); + self.$config_option("irb_enabled", false, $hash2(["compiler_option"], {"compiler_option": "irb"})); + self.$config_option("inline_operators_enabled", true, $hash2(["compiler_option"], {"compiler_option": "inline_operators"})); + self.$config_option("source_map_enabled", true); + return self.$config_option("stubbed_files", $lambda(function $Config$7(){ + return $$('Set').$new()}, 0), $hash2(["valid_values"], {"valid_values": [$$('Set')]})); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/cache"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $truthy = Opal.truthy, $not = Opal.not, $eqeq = Opal.eqeq, $defs = Opal.defs, $klass = Opal.klass, $def = Opal.def, $send = Opal.send, $rb_plus = Opal.rb_plus, $gvars = Opal.gvars, $range = Opal.range; + + Opal.add_stubs('require,attr_writer,singleton_class,!,find_dir,[],==,new,module_function,respond_to?,fetch,to_proc,+,digest,join,runtime_key,get,set,expand_path,gem_dir,grep,map,sort,size,to_f,mtime,to_s,to_i,hexdigest'); + + self.$require("opal/paths"); + nil; + nil; + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$singleton_class().$attr_writer("cache"); + $defs(self, '$cache', function $$cache() { + var self = this, $ret_or_1 = nil; + if (self.cache == null) self.cache = nil; + + return (self.cache = ($truthy(($ret_or_1 = self.cache)) ? ($ret_or_1) : ((($eqeq($$('RUBY_ENGINE'), "opal") || ($truthy($$('ENV')['$[]']("OPAL_CACHE_DISABLE")))) || ($not($$$($$('Cache'), 'FileCache').$find_dir()))) ? ($$$($$('Cache'), 'NullCache').$new()) : ($$$($$('Cache'), 'FileCache').$new())))) + }, 0); + return (function($base, $parent_nesting) { + var self = $module($base, 'Cache'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'NullCache'); + + + return $def(self, '$fetch', function $$fetch($a) { + var $post_args, $rest_arg, $yield = $$fetch.$$p || nil; + + delete $$fetch.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return Opal.yieldX($yield, []);; + }, -1) + })($nesting[0], null); + self.$module_function(); + + $def(self, '$fetch', function $$fetch(cache, key) { + var block = $$fetch.$$p || nil, self = this, data = nil, $ret_or_1 = nil, compiler = nil; + + delete $$fetch.$$p; + + ; + if ($truthy(cache['$respond_to?']("fetch"))) { + return $send(cache, 'fetch', [key], block.$to_proc()) + }; + key = $rb_plus($rb_plus(self.$digest(key.$join("/")), "-"), self.$runtime_key()); + data = cache.$get(key); + if ($truthy(($ret_or_1 = data))) { + return $ret_or_1 + } else { + + compiler = Opal.yieldX(block, []); + cache.$set(key, compiler); + return compiler; + }; + }, 2); + + $def(self, '$runtime_key', function $$runtime_key() { + var self = this, $ret_or_1 = nil, opal_path = nil, files = nil; + if (self.runtime_key == null) self.runtime_key = nil; + if ($gvars.LOADED_FEATURES == null) $gvars.LOADED_FEATURES = nil; + + return (self.runtime_key = ($truthy(($ret_or_1 = self.runtime_key)) ? ($ret_or_1) : (((opal_path = $$('File').$expand_path("..", $$('Opal').$gem_dir())), (files = $$('Dir')['$[]']("" + (opal_path) + "/{Gemfile*,*.gemspec,lib/**/*}")), (files = $rb_plus(files, $gvars.LOADED_FEATURES.$grep(/lib\/(parser|ast)/))), self.$digest([$send(files.$sort(), 'map', [], function $$1(f){ + + + if (f == null) f = nil;; + return "" + (f) + ":" + ($$('File').$size(f)) + ":" + ($$('File').$mtime(f).$to_f());}, 1), $$('RUBY_VERSION'), $$('RUBY_PATCHLEVEL')].$join("/")))))) + }, 0); + return $def(self, '$digest', function $$digest(string) { + + return $$$($$$('Digest'), 'SHA256').$hexdigest(string)['$[]']($range(-32, -1, false)).$to_i(16).$to_s(36) + }, 1); + })($nesting[0], $nesting); + })($nesting[0], $nesting); +}; + +Opal.modules["opal/builder"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $defs = Opal.defs, $send = Opal.send, $hash2 = Opal.hash2, $Opal = Opal.Opal, $def = Opal.def, $to_a = Opal.to_a, $rb_plus = Opal.rb_plus, $send2 = Opal.send2, $find_super = Opal.find_super, $not = Opal.not, $lambda = Opal.lambda, $eqeqeq = Opal.eqeqeq; + + Opal.add_stubs('require,include?,processors,<<,each,extensions,each_pair,public_send,new,paths,flatten,map,compiler_options,missing_require_severity,cache,build,to_proc,build_str,source_for,read,nil?,expand_path,expand_ext,processor_for,+,preload,requires,tree_requires,process_require,autoloads,processed,raise,inspect,message,backtrace,dup,stubs,path_reader,prerequired,to_sym,join,append_paths,include,attr_reader,attr_accessor,private,empty?,to_s,pwd,dirname,Pathname,flat_map,required_trees,find,start_with?,glob,relative_path_from,match?,!,merge,[],===,warn,already_processed,stub?,process_requires,expand,basename'); + + self.$require("opal/path_reader"); + self.$require("opal/paths"); + self.$require("opal/config"); + self.$require("opal/cache"); + self.$require("set"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Builder'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.stubs = $proto.preload = $proto.processors = $proto.path_reader = $proto.prerequired = $proto.compiler_options = $proto.missing_require_severity = $proto.cache = $proto.already_processed = nil; + + $defs(self, '$processors', function $$processors() { + var self = this, $ret_or_1 = nil; + if (self.processors == null) self.processors = nil; + + return (self.processors = ($truthy(($ret_or_1 = self.processors)) ? ($ret_or_1) : ([]))) + }, 0); + $defs(self, '$extensions', function $$extensions() { + var self = this, $ret_or_1 = nil; + if (self.extensions == null) self.extensions = nil; + + return (self.extensions = ($truthy(($ret_or_1 = self.extensions)) ? ($ret_or_1) : ([]))) + }, 0); + $defs(self, '$register_processor', function $$register_processor(processor, processor_extensions) { + var self = this; + + + if ($truthy(self.$processors()['$include?'](processor))) { + return nil + }; + self.$processors()['$<<'](processor); + return $send(processor_extensions, 'each', [], function $$1(ext){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (ext == null) ext = nil;; + return self.$extensions()['$<<'](ext);}, {$$arity: 1, $$s: self}); + }, 2); + $klass($nesting[0], $$('LoadError'), 'MissingRequire'); + $klass($nesting[0], $$('LoadError'), 'ProcessorNotFound'); + + $def(self, '$initialize', function $$initialize(options) { + var self = this, $ret_or_1 = nil; + + + + if (options == null) options = nil;; + $send(($truthy(($ret_or_1 = options)) ? ($ret_or_1) : ($hash2([], {}))), 'each_pair', [], function $$2(k, v){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (k == null) k = nil;; + + if (v == null) v = nil;; + return self.$public_send("" + (k) + "=", v);}, {$$arity: 2, $$s: self}); + self.stubs = ($truthy(($ret_or_1 = self.stubs)) ? ($ret_or_1) : ([])); + self.preload = ($truthy(($ret_or_1 = self.preload)) ? ($ret_or_1) : ([])); + self.processors = ($truthy(($ret_or_1 = self.processors)) ? ($ret_or_1) : ($$$($Opal, 'Builder').$processors())); + self.path_reader = ($truthy(($ret_or_1 = self.path_reader)) ? ($ret_or_1) : ($$('PathReader').$new($$('Opal').$paths(), $send(self.$extensions(), 'map', [], function $$3(e){ + + + if (e == null) e = nil;; + return ["." + (e), ".js." + (e)];}, 1).$flatten()))); + self.prerequired = ($truthy(($ret_or_1 = self.prerequired)) ? ($ret_or_1) : ([])); + self.compiler_options = ($truthy(($ret_or_1 = self.compiler_options)) ? ($ret_or_1) : ($$$($$('Opal'), 'Config').$compiler_options())); + self.missing_require_severity = ($truthy(($ret_or_1 = self.missing_require_severity)) ? ($ret_or_1) : ($$$($$('Opal'), 'Config').$missing_require_severity())); + self.cache = ($truthy(($ret_or_1 = self.cache)) ? ($ret_or_1) : ($$('Opal').$cache())); + return (self.processed = []); + }, -1); + $defs(self, '$build', function $$build($a) { + var block = $$build.$$p || nil, $post_args, args, self = this; + + delete $$build.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send(self.$new(), 'build', $to_a(args), block.$to_proc()); + }, -1); + + $def(self, '$build', function $$build(path, options) { + var self = this; + + + + if (options == null) options = $hash2([], {});; + return self.$build_str(self.$source_for(path), path, options); + }, -2); + + $def(self, '$source_for', function $$source_for(path) { + var self = this; + + return self.$read(path, false) + }, 1); + + $def(self, '$build_str', function $$build_str(source, rel_path, options) { + var self = this, abs_path = nil, asset = nil, requires = nil, error = nil; + + + + if (options == null) options = $hash2([], {});; + try { + + if ($truthy(source['$nil?']())) { + return nil + }; + abs_path = self.$expand_path(rel_path); + rel_path = self.$expand_ext(rel_path); + asset = self.$processor_for(source, rel_path, abs_path, false, options); + requires = $rb_plus($rb_plus(self.$preload(), asset.$requires()), self.$tree_requires(asset, abs_path)); + $send(requires, 'map', [], function $$4(r){var self = $$4.$$s == null ? this : $$4.$$s; + + + + if (r == null) r = nil;; + return self.$process_require(r, asset.$autoloads(), options);}, {$$arity: 1, $$s: self}); + self.$processed()['$<<'](asset); + return self; + } catch ($err) { + if (Opal.rescue($err, [$$('MissingRequire')])) {(error = $err) + try { + return self.$raise(error, "A file required by " + (rel_path.$inspect()) + " wasn't found.\n" + (error.$message()), error.$backtrace()) + } finally { Opal.pop_exception(); } + } else { throw $err; } + }; + }, -3); + + $def(self, '$build_require', function $$build_require(path, options) { + var self = this; + + + + if (options == null) options = $hash2([], {});; + return self.$process_require(path, [], options); + }, -2); + + $def(self, '$initialize_copy', function $$initialize_copy(other) { + var $yield = $$initialize_copy.$$p || nil, self = this; + + delete $$initialize_copy.$$p; + + $send2(self, $find_super(self, 'initialize_copy', $$initialize_copy, false, true), 'initialize_copy', [other], $yield); + self.stubs = other.$stubs().$dup(); + self.preload = other.$preload().$dup(); + self.processors = other.$processors().$dup(); + self.path_reader = other.$path_reader().$dup(); + self.prerequired = other.$prerequired().$dup(); + self.compiler_options = other.$compiler_options().$dup(); + self.missing_require_severity = other.$missing_require_severity().$to_sym(); + return (self.processed = other.$processed().$dup()); + }, 1); + + $def(self, '$to_s', function $$to_s() { + var self = this; + + return $send(self.$processed(), 'map', [], "to_s".$to_proc()).$join("\n") + }, 0); + + $def(self, '$source_map', function $$source_map() { + var self = this; + + return $$$($$$($Opal, 'SourceMap'), 'Index').$new($send(self.$processed(), 'map', [], "source_map".$to_proc()), $hash2(["join"], {"join": "\n"})) + }, 0); + + $def(self, '$append_paths', function $$append_paths($a) { + var $post_args, paths, self = this; + + + + $post_args = Opal.slice.call(arguments); + + paths = $post_args;; + return $send(self.$path_reader(), 'append_paths', $to_a(paths)); + }, -1); + self.$include($$('UseGem')); + self.$attr_reader("processed"); + self.$attr_accessor("processors", "path_reader", "stubs", "prerequired", "preload", "compiler_options", "missing_require_severity", "cache"); + self.$private(); + + $def(self, '$tree_requires', function $$tree_requires(asset, asset_path) { + var self = this, dirname = nil, abs_base_paths = nil; + + + dirname = ($truthy(asset_path.$to_s()['$empty?']()) ? ($$('Pathname').$pwd()) : (self.$Pathname(asset_path).$expand_path().$dirname())); + abs_base_paths = $send(self.$path_reader().$paths(), 'map', [], function $$5(p){ + + + if (p == null) p = nil;; + return $$('File').$expand_path(p);}, 1); + return $send(asset.$required_trees(), 'flat_map', [], function $$6(tree){var self = $$6.$$s == null ? this : $$6.$$s, abs_tree_path = nil, abs_base_path = nil, entries_glob = nil; + + + + if (tree == null) tree = nil;; + abs_tree_path = dirname.$join(tree).$expand_path().$to_s(); + abs_base_path = $send(abs_base_paths, 'find', [], function $$7(p){ + + + if (p == null) p = nil;; + return abs_tree_path['$start_with?'](p);}, 1); + if ($truthy(abs_base_path)) { + + abs_base_path = self.$Pathname(abs_base_path); + entries_glob = self.$Pathname(abs_tree_path).$join("**", "*{.js,}.{" + (self.$extensions().$join(",")) + "}"); + return $send($$('Pathname').$glob(entries_glob), 'map', [], function $$8(file){ + + + if (file == null) file = nil;; + return file.$relative_path_from(abs_base_path).$to_s();}, 1); + } else { + return [] + };}, {$$arity: 1, $$s: self}); + }, 2); + + $def(self, '$processor_for', function $$processor_for(source, rel_path, abs_path, autoload, options) { + var self = this, processor = nil; + + + processor = $send(self.$processors(), 'find', [], function $$9(p){ + + + if (p == null) p = nil;; + return p['$match?'](abs_path);}, 1); + if (($not(processor) && ($not(autoload)))) { + self.$raise($$('ProcessorNotFound'), "can't find processor for rel_path: " + ("" + (rel_path.$inspect()) + ", ") + ("abs_path: " + (abs_path.$inspect()) + ", ") + ("source: " + (source.$inspect()) + ", ") + ("processors: " + (self.$processors().$inspect()))) + }; + options = options.$merge($hash2(["cache"], {"cache": self.$cache()})); + return processor.$new(source, rel_path, self.compiler_options.$merge(options)); + }, 5); + + $def(self, '$read', function $$read(path, autoload) { + var self = this, $ret_or_1 = nil, print_list = nil, message = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = self.$path_reader().$read(path)))) { + return $ret_or_1 + } else { + + print_list = $lambda(function $$10(list){ + + + if (list == null) list = nil;; + return "- " + (list.$join("\n- ")) + "\n";}, 1); + message = $rb_plus($rb_plus($rb_plus($rb_plus($rb_plus("can't find file: " + (path.$inspect()) + " in:\n", print_list['$[]'](self.$path_reader().$paths())), "\nWith the following extensions:\n"), print_list['$[]'](self.$path_reader().$extensions())), "\nAnd the following processors:\n"), print_list['$[]'](self.$processors())); + if (!$truthy(autoload)) { + if ($eqeqeq("error", ($ret_or_2 = self.$missing_require_severity()))) { + self.$raise($$('MissingRequire'), message) + } else if ($eqeqeq("warning", $ret_or_2)) { + self.$warn(message) + } else if (!$eqeqeq("ignore", $ret_or_2)) { + nil + } + }; + return nil; + } + }, 2); + + $def(self, '$process_require', function $$process_require(rel_path, autoloads, options) { + var self = this, autoload = nil, source = nil, abs_path = nil, asset = nil; + + + if ($truthy(self.$prerequired()['$include?'](rel_path))) { + return nil + }; + if ($truthy(self.$already_processed()['$include?'](rel_path))) { + return nil + }; + self.$already_processed()['$<<'](rel_path); + autoload = autoloads['$include?'](rel_path); + source = ($truthy(self['$stub?'](rel_path)) ? ("") : (self.$read(rel_path, autoload))); + if ($truthy(source['$nil?']())) { + return nil + }; + abs_path = self.$expand_path(rel_path); + rel_path = self.$expand_ext(rel_path); + asset = self.$processor_for(source, rel_path, abs_path, autoload, options.$merge($hash2(["requirable"], {"requirable": true}))); + self.$process_requires(rel_path, $rb_plus(asset.$requires(), self.$tree_requires(asset, abs_path)), asset.$autoloads(), options); + return self.$processed()['$<<'](asset); + }, 3); + + $def(self, '$expand_ext', function $$expand_ext(path) { + var self = this, abs_path = nil; + + + abs_path = self.$path_reader().$expand(path); + if ($truthy(abs_path)) { + return $$('File').$join($$('File').$dirname(path), $$('File').$basename(abs_path)) + } else { + return path + }; + }, 1); + + $def(self, '$expand_path', function $$expand_path(path) { + var self = this, $ret_or_1 = nil; + + + if ($truthy(self['$stub?'](path))) { + return nil + }; + return ($truthy(($ret_or_1 = self.$path_reader().$expand(path))) ? ($ret_or_1) : ($$('File').$expand_path(path))).$to_s(); + }, 1); + + $def(self, '$process_requires', function $$process_requires(rel_path, requires, autoloads, options) { + var self = this, error = nil; + + try { + return $send(requires, 'map', [], function $$11(r){var self = $$11.$$s == null ? this : $$11.$$s; + + + + if (r == null) r = nil;; + return self.$process_require(r, autoloads, options);}, {$$arity: 1, $$s: self}) + } catch ($err) { + if (Opal.rescue($err, [$$('MissingRequire')])) {(error = $err) + try { + return self.$raise(error, "A file required by " + (rel_path.$inspect()) + " wasn't found.\n" + (error.$message()), error.$backtrace()) + } finally { Opal.pop_exception(); } + } else { throw $err; } + } + }, 4); + + $def(self, '$already_processed', function $$already_processed() { + var self = this, $ret_or_1 = nil; + + return (self.already_processed = ($truthy(($ret_or_1 = self.already_processed)) ? ($ret_or_1) : ($$('Set').$new()))) + }, 0); + + $def(self, '$stub?', function $Builder_stub$ques$12(path) { + var self = this; + + return self.$stubs()['$include?'](path) + }, 1); + return $def(self, '$extensions', function $$extensions() { + + return $$$($Opal, 'Builder').$extensions() + }, 0); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["ast/node"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $alias = Opal.alias, $hash2 = Opal.hash2, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $eqeq = Opal.eqeq, $rb_plus = Opal.rb_plus, $rb_times = Opal.rb_times, $to_a = Opal.to_a; + + Opal.add_stubs('attr_reader,to_sym,freeze,to_a,assign_properties,hash,class,eql?,type,children,each,instance_variable_set,protected,private,nil?,==,original_dup,send,equal?,respond_to?,to_ast,updated,+,*,fancy_type,is_a?,to_sexp,inspect,map,to_sexp_array,gsub,to_s'); + return (function($base, $parent_nesting) { + var self = $module($base, 'AST'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Node'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.type = $proto.children = nil; + + self.$attr_reader("type"); + self.$attr_reader("children"); + $alias(self, "to_a", "children"); + self.$attr_reader("hash"); + + $def(self, '$initialize', function $$initialize(type, children, properties) { + var $a, self = this; + + + + if (children == null) children = [];; + + if (properties == null) properties = $hash2([], {});; + $a = [type.$to_sym(), children.$to_a().$freeze()], (self.type = $a[0]), (self.children = $a[1]), $a; + self.$assign_properties(properties); + self.hash = [self.type, self.children, self.$class()].$hash(); + return self.$freeze(); + }, -2); + + $def(self, '$eql?', function $Node_eql$ques$1(other) { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.$class()['$eql?'](other.$class()))) ? (self.type['$eql?'](other.$type())) : ($ret_or_2))))) { + return self.children['$eql?'](other.$children()) + } else { + return $ret_or_1 + } + }, 1); + + $def(self, '$assign_properties', function $$assign_properties(properties) { + var self = this; + + + $send(properties, 'each', [], function $$2(name, value){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (name == null) name = nil;; + + if (value == null) value = nil;; + return self.$instance_variable_set("@" + (name), value);}, {$$arity: 2, $$s: self}); + return nil; + }, 1); + self.$protected("assign_properties"); + $alias(self, "original_dup", "dup"); + self.$private("original_dup"); + + $def(self, '$dup', function $$dup() { + var self = this; + + return self + }, 0); + $alias(self, "clone", "dup"); + + $def(self, '$updated', function $$updated(type, children, properties) { + var self = this, new_type = nil, $ret_or_1 = nil, new_children = nil, new_properties = nil, copy = nil; + + + + if (type == null) type = nil;; + + if (children == null) children = nil;; + + if (properties == null) properties = nil;; + new_type = ($truthy(($ret_or_1 = type)) ? ($ret_or_1) : (self.type)); + new_children = ($truthy(($ret_or_1 = children)) ? ($ret_or_1) : (self.children)); + new_properties = ($truthy(($ret_or_1 = properties)) ? ($ret_or_1) : ($hash2([], {}))); + if ((($eqeq(self.type, new_type) && ($eqeq(self.children, new_children))) && ($truthy(properties['$nil?']())))) { + return self + } else { + + copy = self.$original_dup(); + copy.$send("initialize", new_type, new_children, new_properties); + return copy; + }; + }, -1); + + $def(self, '$==', function $Node_$eq_eq$3(other) { + var self = this, $ret_or_1 = nil; + + if ($truthy(self['$equal?'](other))) { + return true + } else if ($truthy(other['$respond_to?']("to_ast"))) { + + other = other.$to_ast(); + if ($truthy(($ret_or_1 = other.$type()['$=='](self.$type())))) { + return other.$children()['$=='](self.$children()) + } else { + return $ret_or_1 + }; + } else { + return false + } + }, 1); + + $def(self, '$concat', function $$concat(array) { + var self = this; + + return self.$updated(nil, $rb_plus(self.children, array.$to_a())) + }, 1); + $alias(self, "+", "concat"); + + $def(self, '$append', function $$append(element) { + var self = this; + + return self.$updated(nil, $rb_plus(self.children, [element])) + }, 1); + $alias(self, "<<", "append"); + + $def(self, '$to_sexp', function $$to_sexp(indent) { + var self = this, indented = nil, sexp = nil; + + + + if (indent == null) indent = 0;; + indented = $rb_times(" ", indent); + sexp = "" + (indented) + "(" + (self.$fancy_type()); + $send(self.$children(), 'each', [], function $$4(child){ + + + if (child == null) child = nil;; + if ($truthy(child['$is_a?']($$('Node')))) { + return (sexp = $rb_plus(sexp, "\n" + (child.$to_sexp($rb_plus(indent, 1))))) + } else { + return (sexp = $rb_plus(sexp, " " + (child.$inspect()))) + };}, 1); + sexp = $rb_plus(sexp, ")"); + return sexp; + }, -1); + $alias(self, "to_s", "to_sexp"); + + $def(self, '$inspect', function $$inspect(indent) { + var self = this, indented = nil, sexp = nil; + + + + if (indent == null) indent = 0;; + indented = $rb_times(" ", indent); + sexp = "" + (indented) + "s(:" + (self.type); + $send(self.$children(), 'each', [], function $$5(child){ + + + if (child == null) child = nil;; + if ($truthy(child['$is_a?']($$('Node')))) { + return (sexp = $rb_plus(sexp, ",\n" + (child.$inspect($rb_plus(indent, 1))))) + } else { + return (sexp = $rb_plus(sexp, ", " + (child.$inspect()))) + };}, 1); + sexp = $rb_plus(sexp, ")"); + return sexp; + }, -1); + + $def(self, '$to_ast', function $$to_ast() { + var self = this; + + return self + }, 0); + + $def(self, '$to_sexp_array', function $$to_sexp_array() { + var self = this, children_sexp_arrs = nil; + + + children_sexp_arrs = $send(self.$children(), 'map', [], function $$6(child){ + + + if (child == null) child = nil;; + if ($truthy(child['$is_a?']($$('Node')))) { + return child.$to_sexp_array() + } else { + return child + };}, 1); + return [self.$type()].concat($to_a(children_sexp_arrs)); + }, 0); + + $def(self, '$deconstruct', function $$deconstruct() { + var self = this; + + return [self.$type()].concat($to_a(self.$children())) + }, 0); + self.$protected(); + return $def(self, '$fancy_type', function $$fancy_type() { + var self = this; + + return self.type.$to_s().$gsub("_", "-") + }, 0); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["ast/processor/mixin"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $send = Opal.send; + + Opal.add_stubs('nil?,to_ast,type,respond_to?,send,handler_missing,map,to_a,process'); + return (function($base, $parent_nesting) { + var self = $module($base, 'AST'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Processor'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base) { + var self = $module($base, 'Mixin'); + + + + + $def(self, '$process', function $$process(node) { + var self = this, on_handler = nil, new_node = nil; + + + if ($truthy(node['$nil?']())) { + return nil + }; + node = node.$to_ast(); + on_handler = "on_" + (node.$type()); + if ($truthy(self['$respond_to?'](on_handler))) { + new_node = self.$send(on_handler, node) + } else { + new_node = self.$handler_missing(node) + }; + if ($truthy(new_node)) { + node = new_node + }; + return node; + }, 1); + + $def(self, '$process_all', function $$process_all(nodes) { + var self = this; + + return $send(nodes.$to_a(), 'map', [], function $$1(node){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (node == null) node = nil;; + return self.$process(node);}, {$$arity: 1, $$s: self}) + }, 1); + return $def(self, '$handler_missing', function $$handler_missing(node) { + + return nil + }, 1); + })($nesting[0]) + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["ast/processor"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass; + + Opal.add_stubs('require,include'); + return (function($base, $parent_nesting) { + var self = $module($base, 'AST'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Processor'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$require("ast/processor/mixin"); + return self.$include($$('Mixin')); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["ast/sexp"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $def = Opal.def; + + Opal.add_stubs('new'); + return (function($base, $parent_nesting) { + var self = $module($base, 'AST'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Sexp'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$s', function $$s(type, $a) { + var $post_args, children; + + + + $post_args = Opal.slice.call(arguments, 1); + + children = $post_args;; + return $$('Node').$new(type, children); + }, -2) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["ast"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module; + + Opal.add_stubs('require'); + return (function($base) { + var self = $module($base, 'AST'); + + + + self.$require("ast/node"); + self.$require("ast/processor"); + return self.$require("ast/sexp"); + })($nesting[0]) +}; + +Opal.modules["parser/ast/node"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $alias = Opal.alias, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def; + + Opal.add_stubs('attr_reader,[],frozen?,dup,node=,-'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'AST'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Node'); + + + + self.$attr_reader("location"); + $alias(self, "loc", "location"); + return $def(self, '$assign_properties', function $$assign_properties(properties) { + var self = this, location = nil, $writer = nil; + + if ($truthy((location = properties['$[]']("location")))) { + + if ($truthy(location['$frozen?']())) { + location = location.$dup() + }; + + $writer = [self]; + $send(location, 'node=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return (self.location = location); + } else { + return nil + } + }, 1); + })($nesting[0], $$$($$$('AST'), 'Node')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["opal/ast/node"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('require,attr_reader,[],frozen?,dup,merge!,loc,line,column'); + + self.$require("ast"); + self.$require("parser/ast/node"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'AST'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Node'); + + var $proto = self.$$prototype; + + $proto.meta = nil; + + self.$attr_reader("meta"); + + $def(self, '$assign_properties', function $$assign_properties(properties) { + var $yield = $$assign_properties.$$p || nil, self = this, meta = nil, $ret_or_1 = nil; + + delete $$assign_properties.$$p; + + if ($truthy((meta = properties['$[]']("meta")))) { + + if ($truthy(meta['$frozen?']())) { + meta = meta.$dup() + }; + self.meta['$merge!'](meta); + } else { + self.meta = ($truthy(($ret_or_1 = self.meta)) ? ($ret_or_1) : ($hash2([], {}))) + }; + return $send2(self, $find_super(self, 'assign_properties', $$assign_properties, false, true), 'assign_properties', [properties], $yield); + }, 1); + + $def(self, '$line', function $$line() { + var self = this; + + if ($truthy(self.$loc())) { + return self.$loc().$line() + } else { + return nil + } + }, 0); + return $def(self, '$column', function $$column() { + var self = this; + + if ($truthy(self.$loc())) { + return self.$loc().$column() + } else { + return nil + } + }, 0); + })($nesting[0], $$$($$$($$$('Parser'), 'AST'), 'Node')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["racc/parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $a, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $const_set = Opal.const_set, $defs = Opal.defs, $gvars = Opal.gvars, $rb_lt = Opal.rb_lt, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $to_ary = Opal.to_ary, $neqeq = Opal.neqeq, $rb_plus = Opal.rb_plus, $eqeq = Opal.eqeq, $rb_ge = Opal.rb_ge, $rb_gt = Opal.rb_gt, $eqeqeq = Opal.eqeqeq, $rb_le = Opal.rb_le, $rb_times = Opal.rb_times; + + Opal.add_stubs('[],class,<,size,[]=,-,__send__,_racc_setup,raise,_racc_init_sysvars,catch,!=,next_token,racc_read_token,+,==,>=,_racc_evalact,!,>,push,racc_shift,-@,_racc_do_reduce,===,racc_accept,throw,on_error,<=,pop,racc_e_pop,inspect,racc_next_state,*,racc_reduce,sprintf,token_to_str,print,racc_token2str,puts,racc_print_stacks,empty?,each,racc_print_states,each_index'); + + (function($base, $parent_nesting) { + var self = $module($base, 'Racc'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return ($klass($nesting[0], $$('StandardError'), 'ParseError'), nil) + })($nesting[0], $nesting); + if (!$truthy((($a = $$$('::', 'ParseError', 'skip_raise')) ? 'constant' : nil))) { + $const_set($nesting[0], 'ParseError', $$$($$('Racc'), 'ParseError')) + }; + return (function($base, $parent_nesting) { + var self = $module($base, 'Racc'); + + var $a, $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + if (!$truthy((($a = $$('Racc_No_Extensions', 'skip_raise')) ? 'constant' : nil))) { + $const_set($nesting[0], 'Racc_No_Extensions', false) + }; + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.yydebug = $proto.racc_debug_out = $proto.racc_error_status = $proto.racc_t = $proto.racc_vstack = $proto.racc_val = $proto.racc_state = $proto.racc_tstack = nil; + + $const_set($nesting[0], 'Racc_Runtime_Version', "1.4.6"); + $const_set($nesting[0], 'Racc_Runtime_Revision', ["originalRevision:", "1.8"]['$[]'](1)); + $const_set($nesting[0], 'Racc_Runtime_Core_Version_R', "1.4.6"); + $const_set($nesting[0], 'Racc_Runtime_Core_Revision_R', ["originalRevision:", "1.8"]['$[]'](1)); + $const_set($nesting[0], 'Racc_Main_Parsing_Routine', "_racc_do_parse_rb"); + $const_set($nesting[0], 'Racc_YY_Parse_Method', "_racc_yyparse_rb"); + $const_set($nesting[0], 'Racc_Runtime_Core_Version', $$('Racc_Runtime_Core_Version_R')); + $const_set($nesting[0], 'Racc_Runtime_Core_Revision', $$('Racc_Runtime_Core_Revision_R')); + $const_set($nesting[0], 'Racc_Runtime_Type', "ruby"); + $defs($$('Parser'), '$racc_runtime_type', function $$racc_runtime_type() { + + return $$('Racc_Runtime_Type') + }, 0); + + $def(self, '$_racc_setup', function $$_racc_setup() { + var $a, $b, self = this, $ret_or_1 = nil, arg = nil, $writer = nil; + if ($gvars.stderr == null) $gvars.stderr = nil; + + + if (!$truthy($$$(self.$class(), 'Racc_debug_parser'))) { + self.yydebug = false + }; + if (!$truthy((($a = self['yydebug'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { + self.yydebug = false + }; + if ($truthy(self.yydebug)) { + + if (!$truthy((($b = self['racc_debug_out'], $b != null && $b !== nil) ? 'instance-variable' : nil))) { + self.racc_debug_out = $gvars.stderr + }; + self.racc_debug_out = ($truthy(($ret_or_1 = self.racc_debug_out)) ? ($ret_or_1) : ($gvars.stderr)); + }; + arg = $$$(self.$class(), 'Racc_arg'); + if ($truthy($rb_lt(arg.$size(), 14))) { + + $writer = [13, true]; + $send(arg, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return arg; + }, 0); + + $def(self, '$_racc_init_sysvars', function $$_racc_init_sysvars() { + var self = this; + + + self.racc_state = [0]; + self.racc_tstack = []; + self.racc_vstack = []; + self.racc_t = nil; + self.racc_val = nil; + self.racc_read_next = true; + self.racc_user_yyerror = false; + return (self.racc_error_status = 0); + }, 0); + + $def(self, '$do_parse', function $$do_parse() { + var self = this; + + return self.$__send__($$('Racc_Main_Parsing_Routine'), self.$_racc_setup(), false) + }, 0); + + $def(self, '$next_token', function $$next_token() { + var self = this; + + return self.$raise($$('NotImplementedError'), "" + (self.$class()) + "#next_token is not defined") + }, 0); + + $def(self, '$_racc_do_parse_rb', function $$_racc_do_parse_rb(arg, in_debug) { + var $a, $b, self = this, action_table = nil, action_check = nil, action_default = nil, action_pointer = nil, _ = nil, token_table = nil, tok = nil, act = nil, i = nil; + + + $b = arg, $a = $to_ary($b), (action_table = ($a[0] == null ? nil : $a[0])), (action_check = ($a[1] == null ? nil : $a[1])), (action_default = ($a[2] == null ? nil : $a[2])), (action_pointer = ($a[3] == null ? nil : $a[3])), (_ = ($a[4] == null ? nil : $a[4])), (_ = ($a[5] == null ? nil : $a[5])), (_ = ($a[6] == null ? nil : $a[6])), (_ = ($a[7] == null ? nil : $a[7])), (_ = ($a[8] == null ? nil : $a[8])), (_ = ($a[9] == null ? nil : $a[9])), (token_table = ($a[10] == null ? nil : $a[10])), (_ = ($a[11] == null ? nil : $a[11])), (_ = ($a[12] == null ? nil : $a[12])), (_ = ($a[13] == null ? nil : $a[13])), $b; + self.$_racc_init_sysvars(); + tok = (act = (i = nil)); + return $send(self, 'catch', ["racc_end_parse"], function $$1(){var $c, $d, $e, self = $$1.$$s == null ? this : $$1.$$s, $ret_or_1 = nil; + if (self.racc_state == null) self.racc_state = nil; + if (self.racc_read_next == null) self.racc_read_next = nil; + if (self.racc_t == null) self.racc_t = nil; + if (self.yydebug == null) self.yydebug = nil; + if (self.racc_val == null) self.racc_val = nil; + + while ($truthy(true)) { + + if ($truthy((i = action_pointer['$[]'](self.racc_state['$[]'](-1))))) { + + if ($truthy(self.racc_read_next)) { + if ($neqeq(self.racc_t, 0)) { + + $e = self.$next_token(), $d = $to_ary($e), (tok = ($d[0] == null ? nil : $d[0])), (self.racc_val = ($d[1] == null ? nil : $d[1])), $e; + if ($truthy(tok)) { + self.racc_t = ($truthy(($ret_or_1 = token_table['$[]'](tok))) ? ($ret_or_1) : (1)) + } else { + self.racc_t = 0 + }; + if ($truthy(self.yydebug)) { + self.$racc_read_token(self.racc_t, tok, self.racc_val) + }; + self.racc_read_next = false; + } + }; + i = $rb_plus(i, self.racc_t); + if (!(($truthy($rb_ge(i, 0)) && ($truthy((act = action_table['$[]'](i))))) && ($eqeq(action_check['$[]'](i), self.racc_state['$[]'](-1))))) { + act = action_default['$[]'](self.racc_state['$[]'](-1)) + }; + } else { + act = action_default['$[]'](self.racc_state['$[]'](-1)) + }; + while ($truthy((act = self.$_racc_evalact(act, arg)))) { + + }; + }}, {$$arity: 0, $$s: self}); + }, 2); + + $def(self, '$yyparse', function $$yyparse(recv, mid) { + var self = this; + + return self.$__send__($$('Racc_YY_Parse_Method'), recv, mid, self.$_racc_setup(), true) + }, 2); + + $def(self, '$_racc_yyparse_rb', function $$_racc_yyparse_rb(recv, mid, arg, c_debug) { + var $a, $b, self = this, action_table = nil, action_check = nil, action_default = nil, action_pointer = nil, _ = nil, token_table = nil, act = nil, i = nil; + + + $b = arg, $a = $to_ary($b), (action_table = ($a[0] == null ? nil : $a[0])), (action_check = ($a[1] == null ? nil : $a[1])), (action_default = ($a[2] == null ? nil : $a[2])), (action_pointer = ($a[3] == null ? nil : $a[3])), (_ = ($a[4] == null ? nil : $a[4])), (_ = ($a[5] == null ? nil : $a[5])), (_ = ($a[6] == null ? nil : $a[6])), (_ = ($a[7] == null ? nil : $a[7])), (_ = ($a[8] == null ? nil : $a[8])), (_ = ($a[9] == null ? nil : $a[9])), (token_table = ($a[10] == null ? nil : $a[10])), (_ = ($a[11] == null ? nil : $a[11])), (_ = ($a[12] == null ? nil : $a[12])), (_ = ($a[13] == null ? nil : $a[13])), $b; + self.$_racc_init_sysvars(); + act = nil; + i = nil; + return $send(self, 'catch', ["racc_end_parse"], function $$2(){var $c, $d, self = $$2.$$s == null ? this : $$2.$$s; + if (self.racc_state == null) self.racc_state = nil; + + + while (!($truthy((i = action_pointer['$[]'](self.racc_state['$[]'](-1)))))) { + while ($truthy((act = self.$_racc_evalact(action_default['$[]'](self.racc_state['$[]'](-1)), arg)))) { + + } + }; + return $send(recv, '__send__', [mid], function $$3(tok, val){var $e, $f, self = $$3.$$s == null ? this : $$3.$$s, $ret_or_1 = nil, $ret_or_2 = nil; + if (self.racc_t == null) self.racc_t = nil; + if (self.racc_state == null) self.racc_state = nil; + if (self.racc_read_next == null) self.racc_read_next = nil; + + + + if (tok == null) tok = nil;; + + if (val == null) val = nil;; + if ($truthy(tok)) { + self.racc_t = ($truthy(($ret_or_1 = token_table['$[]'](tok))) ? ($ret_or_1) : (1)) + } else { + self.racc_t = 0 + }; + self.racc_val = val; + self.racc_read_next = false; + i = $rb_plus(i, self.racc_t); + if (!(($truthy($rb_ge(i, 0)) && ($truthy((act = action_table['$[]'](i))))) && ($eqeq(action_check['$[]'](i), self.racc_state['$[]'](-1))))) { + act = action_default['$[]'](self.racc_state['$[]'](-1)) + }; + while ($truthy((act = self.$_racc_evalact(act, arg)))) { + + }; + while ($truthy(($truthy(($ret_or_1 = ($truthy(($ret_or_2 = (i = action_pointer['$[]'](self.racc_state['$[]'](-1)))['$!']())) ? ($ret_or_2) : (self.racc_read_next['$!']())))) ? ($ret_or_1) : (self.racc_t['$=='](0))))) { + + if (!(((($truthy(i) && ($truthy((i = $rb_plus(i, self.racc_t))))) && ($truthy($rb_ge(i, 0)))) && ($truthy((act = action_table['$[]'](i))))) && ($eqeq(action_check['$[]'](i), self.racc_state['$[]'](-1))))) { + act = action_default['$[]'](self.racc_state['$[]'](-1)) + }; + while ($truthy((act = self.$_racc_evalact(act, arg)))) { + + }; + };}, {$$arity: 2, $$s: self});}, {$$arity: 0, $$s: self}); + }, 4); + + $def(self, '$_racc_evalact', function $$_racc_evalact(act, arg) { + var $a, $b, self = this, action_table = nil, action_check = nil, _ = nil, action_pointer = nil, shift_n = nil, reduce_n = nil, code = nil, $ret_or_1 = nil, i = nil; + + + $b = arg, $a = $to_ary($b), (action_table = ($a[0] == null ? nil : $a[0])), (action_check = ($a[1] == null ? nil : $a[1])), (_ = ($a[2] == null ? nil : $a[2])), (action_pointer = ($a[3] == null ? nil : $a[3])), (_ = ($a[4] == null ? nil : $a[4])), (_ = ($a[5] == null ? nil : $a[5])), (_ = ($a[6] == null ? nil : $a[6])), (_ = ($a[7] == null ? nil : $a[7])), (_ = ($a[8] == null ? nil : $a[8])), (_ = ($a[9] == null ? nil : $a[9])), (_ = ($a[10] == null ? nil : $a[10])), (shift_n = ($a[11] == null ? nil : $a[11])), (reduce_n = ($a[12] == null ? nil : $a[12])), (_ = ($a[13] == null ? nil : $a[13])), (_ = ($a[14] == null ? nil : $a[14])), $b; + if (($truthy($rb_gt(act, 0)) && ($truthy($rb_lt(act, shift_n))))) { + + if ($truthy($rb_gt(self.racc_error_status, 0))) { + if (!$eqeq(self.racc_t, 1)) { + self.racc_error_status = $rb_minus(self.racc_error_status, 1) + } + }; + self.racc_vstack.$push(self.racc_val); + self.racc_state.$push(act); + self.racc_read_next = true; + if ($truthy(self.yydebug)) { + + self.racc_tstack.$push(self.racc_t); + self.$racc_shift(self.racc_t, self.racc_tstack, self.racc_vstack); + }; + } else if (($truthy($rb_lt(act, 0)) && ($truthy($rb_gt(act, reduce_n['$-@']()))))) { + + code = $send(self, 'catch', ["racc_jump"], function $$4(){var self = $$4.$$s == null ? this : $$4.$$s; + if (self.racc_state == null) self.racc_state = nil; + + + self.racc_state.$push(self.$_racc_do_reduce(arg, act)); + return false;}, {$$arity: 0, $$s: self}); + if ($truthy(code)) { + if ($eqeqeq(1, ($ret_or_1 = code))) { + + self.racc_user_yyerror = true; + return reduce_n['$-@'](); + } else if ($eqeqeq(2, $ret_or_1)) { + return shift_n + } else { + self.$raise("[Racc Bug] unknown jump code") + } + }; + } else if ($eqeq(act, shift_n)) { + + if ($truthy(self.yydebug)) { + self.$racc_accept() + }; + self.$throw("racc_end_parse", self.racc_vstack['$[]'](0)); + } else if ($eqeq(act, reduce_n['$-@']())) { + + if ($eqeqeq(0, ($ret_or_1 = self.racc_error_status))) { + if (!$truthy(arg['$[]'](21))) { + self.$on_error(self.racc_t, self.racc_val, self.racc_vstack) + } + } else if ($eqeqeq(3, $ret_or_1)) { + + if ($eqeq(self.racc_t, 0)) { + self.$throw("racc_end_parse", nil) + }; + self.racc_read_next = true; + } else { + nil + }; + self.racc_user_yyerror = false; + self.racc_error_status = 3; + while ($truthy(true)) { + + if ($truthy((i = action_pointer['$[]'](self.racc_state['$[]'](-1))))) { + + i = $rb_plus(i, 1); + if ((($truthy($rb_ge(i, 0)) && ($truthy((act = action_table['$[]'](i))))) && ($eqeq(action_check['$[]'](i), self.racc_state['$[]'](-1))))) { + break; + }; + }; + if ($truthy($rb_le(self.racc_state.$size(), 1))) { + self.$throw("racc_end_parse", nil) + }; + self.racc_state.$pop(); + self.racc_vstack.$pop(); + if ($truthy(self.yydebug)) { + + self.racc_tstack.$pop(); + self.$racc_e_pop(self.racc_state, self.racc_tstack, self.racc_vstack); + }; + }; + return act; + } else { + self.$raise("[Racc Bug] unknown action " + (act.$inspect())) + }; + if ($truthy(self.yydebug)) { + self.$racc_next_state(self.racc_state['$[]'](-1), self.racc_state) + }; + return nil; + }, 2); + + $def(self, '$_racc_do_reduce', function $$_racc_do_reduce(arg, act) { + var $a, $b, self = this, _ = nil, goto_table = nil, goto_check = nil, goto_default = nil, goto_pointer = nil, nt_base = nil, reduce_table = nil, use_result = nil, state = nil, vstack = nil, tstack = nil, i = nil, len = nil, reduce_to = nil, method_id = nil, void_array = nil, tmp_t = nil, tmp_v = nil, $writer = nil, k1 = nil, curstate = nil; + + + $b = arg, $a = $to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), (_ = ($a[2] == null ? nil : $a[2])), (_ = ($a[3] == null ? nil : $a[3])), (goto_table = ($a[4] == null ? nil : $a[4])), (goto_check = ($a[5] == null ? nil : $a[5])), (goto_default = ($a[6] == null ? nil : $a[6])), (goto_pointer = ($a[7] == null ? nil : $a[7])), (nt_base = ($a[8] == null ? nil : $a[8])), (reduce_table = ($a[9] == null ? nil : $a[9])), (_ = ($a[10] == null ? nil : $a[10])), (_ = ($a[11] == null ? nil : $a[11])), (_ = ($a[12] == null ? nil : $a[12])), (use_result = ($a[13] == null ? nil : $a[13])), $b; + state = self.racc_state; + vstack = self.racc_vstack; + tstack = self.racc_tstack; + i = $rb_times(act, -3); + len = reduce_table['$[]'](i); + reduce_to = reduce_table['$[]']($rb_plus(i, 1)); + method_id = reduce_table['$[]']($rb_plus(i, 2)); + void_array = []; + if ($truthy(self.yydebug)) { + tmp_t = tstack['$[]'](len['$-@'](), len) + }; + tmp_v = vstack['$[]'](len['$-@'](), len); + if ($truthy(self.yydebug)) { + + $writer = [len['$-@'](), len, void_array]; + $send(tstack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + + $writer = [len['$-@'](), len, void_array]; + $send(vstack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [len['$-@'](), len, void_array]; + $send(state, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy(use_result)) { + vstack.$push(self.$__send__(method_id, tmp_v, vstack, tmp_v['$[]'](0))) + } else { + vstack.$push(self.$__send__(method_id, tmp_v, vstack)) + }; + tstack.$push(reduce_to); + if ($truthy(self.yydebug)) { + self.$racc_reduce(tmp_t, reduce_to, tstack, vstack) + }; + k1 = $rb_minus(reduce_to, nt_base); + if ($truthy((i = goto_pointer['$[]'](k1)))) { + + i = $rb_plus(i, state['$[]'](-1)); + if ((($truthy($rb_ge(i, 0)) && ($truthy((curstate = goto_table['$[]'](i))))) && ($eqeq(goto_check['$[]'](i), k1)))) { + return curstate + }; + }; + return goto_default['$[]'](k1); + }, 2); + + $def(self, '$on_error', function $$on_error(t, val, vstack) { + var self = this, $ret_or_1 = nil; + + return self.$raise($$('ParseError'), self.$sprintf("\nparse error on value %s (%s)", val.$inspect(), ($truthy(($ret_or_1 = self.$token_to_str(t))) ? ($ret_or_1) : ("?")))) + }, 3); + + $def(self, '$yyerror', function $$yyerror() { + var self = this; + + return self.$throw("racc_jump", 1) + }, 0); + + $def(self, '$yyaccept', function $$yyaccept() { + var self = this; + + return self.$throw("racc_jump", 2) + }, 0); + + $def(self, '$yyerrok', function $$yyerrok() { + var self = this; + + return (self.racc_error_status = 0) + }, 0); + + $def(self, '$racc_read_token', function $$racc_read_token(t, tok, val) { + var self = this; + + + self.racc_debug_out.$print("read "); + self.racc_debug_out.$print(tok.$inspect(), "(", self.$racc_token2str(t), ") "); + self.racc_debug_out.$puts(val.$inspect()); + return self.racc_debug_out.$puts(); + }, 3); + + $def(self, '$racc_shift', function $$racc_shift(tok, tstack, vstack) { + var self = this; + + + self.racc_debug_out.$puts("shift " + (self.$racc_token2str(tok))); + self.$racc_print_stacks(tstack, vstack); + return self.racc_debug_out.$puts(); + }, 3); + + $def(self, '$racc_reduce', function $$racc_reduce(toks, sim, tstack, vstack) { + var self = this, out = nil; + + + out = self.racc_debug_out; + out.$print("reduce "); + if ($truthy(toks['$empty?']())) { + out.$print(" ") + } else { + $send(toks, 'each', [], function $$5(t){var self = $$5.$$s == null ? this : $$5.$$s; + + + + if (t == null) t = nil;; + return out.$print(" ", self.$racc_token2str(t));}, {$$arity: 1, $$s: self}) + }; + out.$puts(" --> " + (self.$racc_token2str(sim))); + self.$racc_print_stacks(tstack, vstack); + return self.racc_debug_out.$puts(); + }, 4); + + $def(self, '$racc_accept', function $$racc_accept() { + var self = this; + + + self.racc_debug_out.$puts("accept"); + return self.racc_debug_out.$puts(); + }, 0); + + $def(self, '$racc_e_pop', function $$racc_e_pop(state, tstack, vstack) { + var self = this; + + + self.racc_debug_out.$puts("error recovering mode: pop token"); + self.$racc_print_states(state); + self.$racc_print_stacks(tstack, vstack); + return self.racc_debug_out.$puts(); + }, 3); + + $def(self, '$racc_next_state', function $$racc_next_state(curstate, state) { + var self = this; + + + self.racc_debug_out.$puts("goto " + (curstate)); + self.$racc_print_states(state); + return self.racc_debug_out.$puts(); + }, 2); + + $def(self, '$racc_print_stacks', function $$racc_print_stacks(t, v) { + var self = this, out = nil; + + + out = self.racc_debug_out; + out.$print(" ["); + $send(t, 'each_index', [], function $$6(i){var self = $$6.$$s == null ? this : $$6.$$s; + + + + if (i == null) i = nil;; + return out.$print(" (", self.$racc_token2str(t['$[]'](i)), " ", v['$[]'](i).$inspect(), ")");}, {$$arity: 1, $$s: self}); + return out.$puts(" ]"); + }, 2); + + $def(self, '$racc_print_states', function $$racc_print_states(s) { + var self = this, out = nil; + + + out = self.racc_debug_out; + out.$print(" ["); + $send(s, 'each', [], function $$7(st){ + + + if (st == null) st = nil;; + return out.$print(" ", st);}, 1); + return out.$puts(" ]"); + }, 1); + + $def(self, '$racc_token2str', function $$racc_token2str(tok) { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = $$$(self.$class(), 'Racc_token_to_s_table')['$[]'](tok)))) { + return $ret_or_1 + } else { + return self.$raise("[Racc Bug] can't convert token " + (tok) + " to string") + } + }, 1); + return $def(self, '$token_to_str', function $$token_to_str(t) { + var self = this; + + return $$$(self.$class(), 'Racc_token_to_s_table')['$[]'](t) + }, 1); + })($nesting[0], null, $nesting); + })($nesting[0], $nesting); +}; + +Opal.modules["parser/version"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set; + + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return $const_set($nesting[0], 'VERSION', "3.1.0.0") + })($nesting[0], $nesting) +}; + +Opal.modules["racc/parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $a, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $const_set = Opal.const_set, $defs = Opal.defs, $gvars = Opal.gvars, $rb_lt = Opal.rb_lt, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $to_ary = Opal.to_ary, $neqeq = Opal.neqeq, $rb_plus = Opal.rb_plus, $eqeq = Opal.eqeq, $rb_ge = Opal.rb_ge, $rb_gt = Opal.rb_gt, $eqeqeq = Opal.eqeqeq, $rb_le = Opal.rb_le, $rb_times = Opal.rb_times; + + Opal.add_stubs('[],class,<,size,[]=,-,__send__,_racc_setup,raise,_racc_init_sysvars,catch,!=,next_token,racc_read_token,+,==,>=,_racc_evalact,!,>,push,racc_shift,-@,_racc_do_reduce,===,racc_accept,throw,on_error,<=,pop,racc_e_pop,inspect,racc_next_state,*,racc_reduce,sprintf,token_to_str,print,racc_token2str,puts,racc_print_stacks,empty?,each,racc_print_states,each_index'); + + (function($base, $parent_nesting) { + var self = $module($base, 'Racc'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return ($klass($nesting[0], $$('StandardError'), 'ParseError'), nil) + })($nesting[0], $nesting); + if (!$truthy((($a = $$$('::', 'ParseError', 'skip_raise')) ? 'constant' : nil))) { + $const_set($nesting[0], 'ParseError', $$$($$('Racc'), 'ParseError')) + }; + return (function($base, $parent_nesting) { + var self = $module($base, 'Racc'); + + var $a, $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + if (!$truthy((($a = $$('Racc_No_Extensions', 'skip_raise')) ? 'constant' : nil))) { + $const_set($nesting[0], 'Racc_No_Extensions', false) + }; + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.yydebug = $proto.racc_debug_out = $proto.racc_error_status = $proto.racc_t = $proto.racc_vstack = $proto.racc_val = $proto.racc_state = $proto.racc_tstack = nil; + + $const_set($nesting[0], 'Racc_Runtime_Version', "1.4.6"); + $const_set($nesting[0], 'Racc_Runtime_Revision', ["originalRevision:", "1.8"]['$[]'](1)); + $const_set($nesting[0], 'Racc_Runtime_Core_Version_R', "1.4.6"); + $const_set($nesting[0], 'Racc_Runtime_Core_Revision_R', ["originalRevision:", "1.8"]['$[]'](1)); + $const_set($nesting[0], 'Racc_Main_Parsing_Routine', "_racc_do_parse_rb"); + $const_set($nesting[0], 'Racc_YY_Parse_Method', "_racc_yyparse_rb"); + $const_set($nesting[0], 'Racc_Runtime_Core_Version', $$('Racc_Runtime_Core_Version_R')); + $const_set($nesting[0], 'Racc_Runtime_Core_Revision', $$('Racc_Runtime_Core_Revision_R')); + $const_set($nesting[0], 'Racc_Runtime_Type', "ruby"); + $defs($$('Parser'), '$racc_runtime_type', function $$racc_runtime_type() { + + return $$('Racc_Runtime_Type') + }, 0); + + $def(self, '$_racc_setup', function $$_racc_setup() { + var $a, $b, self = this, $ret_or_1 = nil, arg = nil, $writer = nil; + if ($gvars.stderr == null) $gvars.stderr = nil; + + + if (!$truthy($$$(self.$class(), 'Racc_debug_parser'))) { + self.yydebug = false + }; + if (!$truthy((($a = self['yydebug'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { + self.yydebug = false + }; + if ($truthy(self.yydebug)) { + + if (!$truthy((($b = self['racc_debug_out'], $b != null && $b !== nil) ? 'instance-variable' : nil))) { + self.racc_debug_out = $gvars.stderr + }; + self.racc_debug_out = ($truthy(($ret_or_1 = self.racc_debug_out)) ? ($ret_or_1) : ($gvars.stderr)); + }; + arg = $$$(self.$class(), 'Racc_arg'); + if ($truthy($rb_lt(arg.$size(), 14))) { + + $writer = [13, true]; + $send(arg, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return arg; + }, 0); + + $def(self, '$_racc_init_sysvars', function $$_racc_init_sysvars() { + var self = this; + + + self.racc_state = [0]; + self.racc_tstack = []; + self.racc_vstack = []; + self.racc_t = nil; + self.racc_val = nil; + self.racc_read_next = true; + self.racc_user_yyerror = false; + return (self.racc_error_status = 0); + }, 0); + + $def(self, '$do_parse', function $$do_parse() { + var self = this; + + return self.$__send__($$('Racc_Main_Parsing_Routine'), self.$_racc_setup(), false) + }, 0); + + $def(self, '$next_token', function $$next_token() { + var self = this; + + return self.$raise($$('NotImplementedError'), "" + (self.$class()) + "#next_token is not defined") + }, 0); + + $def(self, '$_racc_do_parse_rb', function $$_racc_do_parse_rb(arg, in_debug) { + var $a, $b, self = this, action_table = nil, action_check = nil, action_default = nil, action_pointer = nil, _ = nil, token_table = nil, tok = nil, act = nil, i = nil; + + + $b = arg, $a = $to_ary($b), (action_table = ($a[0] == null ? nil : $a[0])), (action_check = ($a[1] == null ? nil : $a[1])), (action_default = ($a[2] == null ? nil : $a[2])), (action_pointer = ($a[3] == null ? nil : $a[3])), (_ = ($a[4] == null ? nil : $a[4])), (_ = ($a[5] == null ? nil : $a[5])), (_ = ($a[6] == null ? nil : $a[6])), (_ = ($a[7] == null ? nil : $a[7])), (_ = ($a[8] == null ? nil : $a[8])), (_ = ($a[9] == null ? nil : $a[9])), (token_table = ($a[10] == null ? nil : $a[10])), (_ = ($a[11] == null ? nil : $a[11])), (_ = ($a[12] == null ? nil : $a[12])), (_ = ($a[13] == null ? nil : $a[13])), $b; + self.$_racc_init_sysvars(); + tok = (act = (i = nil)); + return $send(self, 'catch', ["racc_end_parse"], function $$1(){var $c, $d, $e, self = $$1.$$s == null ? this : $$1.$$s, $ret_or_1 = nil; + if (self.racc_state == null) self.racc_state = nil; + if (self.racc_read_next == null) self.racc_read_next = nil; + if (self.racc_t == null) self.racc_t = nil; + if (self.yydebug == null) self.yydebug = nil; + if (self.racc_val == null) self.racc_val = nil; + + while ($truthy(true)) { + + if ($truthy((i = action_pointer['$[]'](self.racc_state['$[]'](-1))))) { + + if ($truthy(self.racc_read_next)) { + if ($neqeq(self.racc_t, 0)) { + + $e = self.$next_token(), $d = $to_ary($e), (tok = ($d[0] == null ? nil : $d[0])), (self.racc_val = ($d[1] == null ? nil : $d[1])), $e; + if ($truthy(tok)) { + self.racc_t = ($truthy(($ret_or_1 = token_table['$[]'](tok))) ? ($ret_or_1) : (1)) + } else { + self.racc_t = 0 + }; + if ($truthy(self.yydebug)) { + self.$racc_read_token(self.racc_t, tok, self.racc_val) + }; + self.racc_read_next = false; + } + }; + i = $rb_plus(i, self.racc_t); + if (!(($truthy($rb_ge(i, 0)) && ($truthy((act = action_table['$[]'](i))))) && ($eqeq(action_check['$[]'](i), self.racc_state['$[]'](-1))))) { + act = action_default['$[]'](self.racc_state['$[]'](-1)) + }; + } else { + act = action_default['$[]'](self.racc_state['$[]'](-1)) + }; + while ($truthy((act = self.$_racc_evalact(act, arg)))) { + + }; + }}, {$$arity: 0, $$s: self}); + }, 2); + + $def(self, '$yyparse', function $$yyparse(recv, mid) { + var self = this; + + return self.$__send__($$('Racc_YY_Parse_Method'), recv, mid, self.$_racc_setup(), true) + }, 2); + + $def(self, '$_racc_yyparse_rb', function $$_racc_yyparse_rb(recv, mid, arg, c_debug) { + var $a, $b, self = this, action_table = nil, action_check = nil, action_default = nil, action_pointer = nil, _ = nil, token_table = nil, act = nil, i = nil; + + + $b = arg, $a = $to_ary($b), (action_table = ($a[0] == null ? nil : $a[0])), (action_check = ($a[1] == null ? nil : $a[1])), (action_default = ($a[2] == null ? nil : $a[2])), (action_pointer = ($a[3] == null ? nil : $a[3])), (_ = ($a[4] == null ? nil : $a[4])), (_ = ($a[5] == null ? nil : $a[5])), (_ = ($a[6] == null ? nil : $a[6])), (_ = ($a[7] == null ? nil : $a[7])), (_ = ($a[8] == null ? nil : $a[8])), (_ = ($a[9] == null ? nil : $a[9])), (token_table = ($a[10] == null ? nil : $a[10])), (_ = ($a[11] == null ? nil : $a[11])), (_ = ($a[12] == null ? nil : $a[12])), (_ = ($a[13] == null ? nil : $a[13])), $b; + self.$_racc_init_sysvars(); + act = nil; + i = nil; + return $send(self, 'catch', ["racc_end_parse"], function $$2(){var $c, $d, self = $$2.$$s == null ? this : $$2.$$s; + if (self.racc_state == null) self.racc_state = nil; + + + while (!($truthy((i = action_pointer['$[]'](self.racc_state['$[]'](-1)))))) { + while ($truthy((act = self.$_racc_evalact(action_default['$[]'](self.racc_state['$[]'](-1)), arg)))) { + + } + }; + return $send(recv, '__send__', [mid], function $$3(tok, val){var $e, $f, self = $$3.$$s == null ? this : $$3.$$s, $ret_or_1 = nil, $ret_or_2 = nil; + if (self.racc_t == null) self.racc_t = nil; + if (self.racc_state == null) self.racc_state = nil; + if (self.racc_read_next == null) self.racc_read_next = nil; + + + + if (tok == null) tok = nil;; + + if (val == null) val = nil;; + if ($truthy(tok)) { + self.racc_t = ($truthy(($ret_or_1 = token_table['$[]'](tok))) ? ($ret_or_1) : (1)) + } else { + self.racc_t = 0 + }; + self.racc_val = val; + self.racc_read_next = false; + i = $rb_plus(i, self.racc_t); + if (!(($truthy($rb_ge(i, 0)) && ($truthy((act = action_table['$[]'](i))))) && ($eqeq(action_check['$[]'](i), self.racc_state['$[]'](-1))))) { + act = action_default['$[]'](self.racc_state['$[]'](-1)) + }; + while ($truthy((act = self.$_racc_evalact(act, arg)))) { + + }; + while ($truthy(($truthy(($ret_or_1 = ($truthy(($ret_or_2 = (i = action_pointer['$[]'](self.racc_state['$[]'](-1)))['$!']())) ? ($ret_or_2) : (self.racc_read_next['$!']())))) ? ($ret_or_1) : (self.racc_t['$=='](0))))) { + + if (!(((($truthy(i) && ($truthy((i = $rb_plus(i, self.racc_t))))) && ($truthy($rb_ge(i, 0)))) && ($truthy((act = action_table['$[]'](i))))) && ($eqeq(action_check['$[]'](i), self.racc_state['$[]'](-1))))) { + act = action_default['$[]'](self.racc_state['$[]'](-1)) + }; + while ($truthy((act = self.$_racc_evalact(act, arg)))) { + + }; + };}, {$$arity: 2, $$s: self});}, {$$arity: 0, $$s: self}); + }, 4); + + $def(self, '$_racc_evalact', function $$_racc_evalact(act, arg) { + var $a, $b, self = this, action_table = nil, action_check = nil, _ = nil, action_pointer = nil, shift_n = nil, reduce_n = nil, code = nil, $ret_or_1 = nil, i = nil; + + + $b = arg, $a = $to_ary($b), (action_table = ($a[0] == null ? nil : $a[0])), (action_check = ($a[1] == null ? nil : $a[1])), (_ = ($a[2] == null ? nil : $a[2])), (action_pointer = ($a[3] == null ? nil : $a[3])), (_ = ($a[4] == null ? nil : $a[4])), (_ = ($a[5] == null ? nil : $a[5])), (_ = ($a[6] == null ? nil : $a[6])), (_ = ($a[7] == null ? nil : $a[7])), (_ = ($a[8] == null ? nil : $a[8])), (_ = ($a[9] == null ? nil : $a[9])), (_ = ($a[10] == null ? nil : $a[10])), (shift_n = ($a[11] == null ? nil : $a[11])), (reduce_n = ($a[12] == null ? nil : $a[12])), (_ = ($a[13] == null ? nil : $a[13])), (_ = ($a[14] == null ? nil : $a[14])), $b; + if (($truthy($rb_gt(act, 0)) && ($truthy($rb_lt(act, shift_n))))) { + + if ($truthy($rb_gt(self.racc_error_status, 0))) { + if (!$eqeq(self.racc_t, 1)) { + self.racc_error_status = $rb_minus(self.racc_error_status, 1) + } + }; + self.racc_vstack.$push(self.racc_val); + self.racc_state.$push(act); + self.racc_read_next = true; + if ($truthy(self.yydebug)) { + + self.racc_tstack.$push(self.racc_t); + self.$racc_shift(self.racc_t, self.racc_tstack, self.racc_vstack); + }; + } else if (($truthy($rb_lt(act, 0)) && ($truthy($rb_gt(act, reduce_n['$-@']()))))) { + + code = $send(self, 'catch', ["racc_jump"], function $$4(){var self = $$4.$$s == null ? this : $$4.$$s; + if (self.racc_state == null) self.racc_state = nil; + + + self.racc_state.$push(self.$_racc_do_reduce(arg, act)); + return false;}, {$$arity: 0, $$s: self}); + if ($truthy(code)) { + if ($eqeqeq(1, ($ret_or_1 = code))) { + + self.racc_user_yyerror = true; + return reduce_n['$-@'](); + } else if ($eqeqeq(2, $ret_or_1)) { + return shift_n + } else { + self.$raise("[Racc Bug] unknown jump code") + } + }; + } else if ($eqeq(act, shift_n)) { + + if ($truthy(self.yydebug)) { + self.$racc_accept() + }; + self.$throw("racc_end_parse", self.racc_vstack['$[]'](0)); + } else if ($eqeq(act, reduce_n['$-@']())) { + + if ($eqeqeq(0, ($ret_or_1 = self.racc_error_status))) { + if (!$truthy(arg['$[]'](21))) { + self.$on_error(self.racc_t, self.racc_val, self.racc_vstack) + } + } else if ($eqeqeq(3, $ret_or_1)) { + + if ($eqeq(self.racc_t, 0)) { + self.$throw("racc_end_parse", nil) + }; + self.racc_read_next = true; + } else { + nil + }; + self.racc_user_yyerror = false; + self.racc_error_status = 3; + while ($truthy(true)) { + + if ($truthy((i = action_pointer['$[]'](self.racc_state['$[]'](-1))))) { + + i = $rb_plus(i, 1); + if ((($truthy($rb_ge(i, 0)) && ($truthy((act = action_table['$[]'](i))))) && ($eqeq(action_check['$[]'](i), self.racc_state['$[]'](-1))))) { + break; + }; + }; + if ($truthy($rb_le(self.racc_state.$size(), 1))) { + self.$throw("racc_end_parse", nil) + }; + self.racc_state.$pop(); + self.racc_vstack.$pop(); + if ($truthy(self.yydebug)) { + + self.racc_tstack.$pop(); + self.$racc_e_pop(self.racc_state, self.racc_tstack, self.racc_vstack); + }; + }; + return act; + } else { + self.$raise("[Racc Bug] unknown action " + (act.$inspect())) + }; + if ($truthy(self.yydebug)) { + self.$racc_next_state(self.racc_state['$[]'](-1), self.racc_state) + }; + return nil; + }, 2); + + $def(self, '$_racc_do_reduce', function $$_racc_do_reduce(arg, act) { + var $a, $b, self = this, _ = nil, goto_table = nil, goto_check = nil, goto_default = nil, goto_pointer = nil, nt_base = nil, reduce_table = nil, use_result = nil, state = nil, vstack = nil, tstack = nil, i = nil, len = nil, reduce_to = nil, method_id = nil, void_array = nil, tmp_t = nil, tmp_v = nil, $writer = nil, k1 = nil, curstate = nil; + + + $b = arg, $a = $to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), (_ = ($a[2] == null ? nil : $a[2])), (_ = ($a[3] == null ? nil : $a[3])), (goto_table = ($a[4] == null ? nil : $a[4])), (goto_check = ($a[5] == null ? nil : $a[5])), (goto_default = ($a[6] == null ? nil : $a[6])), (goto_pointer = ($a[7] == null ? nil : $a[7])), (nt_base = ($a[8] == null ? nil : $a[8])), (reduce_table = ($a[9] == null ? nil : $a[9])), (_ = ($a[10] == null ? nil : $a[10])), (_ = ($a[11] == null ? nil : $a[11])), (_ = ($a[12] == null ? nil : $a[12])), (use_result = ($a[13] == null ? nil : $a[13])), $b; + state = self.racc_state; + vstack = self.racc_vstack; + tstack = self.racc_tstack; + i = $rb_times(act, -3); + len = reduce_table['$[]'](i); + reduce_to = reduce_table['$[]']($rb_plus(i, 1)); + method_id = reduce_table['$[]']($rb_plus(i, 2)); + void_array = []; + if ($truthy(self.yydebug)) { + tmp_t = tstack['$[]'](len['$-@'](), len) + }; + tmp_v = vstack['$[]'](len['$-@'](), len); + if ($truthy(self.yydebug)) { + + $writer = [len['$-@'](), len, void_array]; + $send(tstack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + + $writer = [len['$-@'](), len, void_array]; + $send(vstack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [len['$-@'](), len, void_array]; + $send(state, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy(use_result)) { + vstack.$push(self.$__send__(method_id, tmp_v, vstack, tmp_v['$[]'](0))) + } else { + vstack.$push(self.$__send__(method_id, tmp_v, vstack)) + }; + tstack.$push(reduce_to); + if ($truthy(self.yydebug)) { + self.$racc_reduce(tmp_t, reduce_to, tstack, vstack) + }; + k1 = $rb_minus(reduce_to, nt_base); + if ($truthy((i = goto_pointer['$[]'](k1)))) { + + i = $rb_plus(i, state['$[]'](-1)); + if ((($truthy($rb_ge(i, 0)) && ($truthy((curstate = goto_table['$[]'](i))))) && ($eqeq(goto_check['$[]'](i), k1)))) { + return curstate + }; + }; + return goto_default['$[]'](k1); + }, 2); + + $def(self, '$on_error', function $$on_error(t, val, vstack) { + var self = this, $ret_or_1 = nil; + + return self.$raise($$('ParseError'), self.$sprintf("\nparse error on value %s (%s)", val.$inspect(), ($truthy(($ret_or_1 = self.$token_to_str(t))) ? ($ret_or_1) : ("?")))) + }, 3); + + $def(self, '$yyerror', function $$yyerror() { + var self = this; + + return self.$throw("racc_jump", 1) + }, 0); + + $def(self, '$yyaccept', function $$yyaccept() { + var self = this; + + return self.$throw("racc_jump", 2) + }, 0); + + $def(self, '$yyerrok', function $$yyerrok() { + var self = this; + + return (self.racc_error_status = 0) + }, 0); + + $def(self, '$racc_read_token', function $$racc_read_token(t, tok, val) { + var self = this; + + + self.racc_debug_out.$print("read "); + self.racc_debug_out.$print(tok.$inspect(), "(", self.$racc_token2str(t), ") "); + self.racc_debug_out.$puts(val.$inspect()); + return self.racc_debug_out.$puts(); + }, 3); + + $def(self, '$racc_shift', function $$racc_shift(tok, tstack, vstack) { + var self = this; + + + self.racc_debug_out.$puts("shift " + (self.$racc_token2str(tok))); + self.$racc_print_stacks(tstack, vstack); + return self.racc_debug_out.$puts(); + }, 3); + + $def(self, '$racc_reduce', function $$racc_reduce(toks, sim, tstack, vstack) { + var self = this, out = nil; + + + out = self.racc_debug_out; + out.$print("reduce "); + if ($truthy(toks['$empty?']())) { + out.$print(" ") + } else { + $send(toks, 'each', [], function $$5(t){var self = $$5.$$s == null ? this : $$5.$$s; + + + + if (t == null) t = nil;; + return out.$print(" ", self.$racc_token2str(t));}, {$$arity: 1, $$s: self}) + }; + out.$puts(" --> " + (self.$racc_token2str(sim))); + self.$racc_print_stacks(tstack, vstack); + return self.racc_debug_out.$puts(); + }, 4); + + $def(self, '$racc_accept', function $$racc_accept() { + var self = this; + + + self.racc_debug_out.$puts("accept"); + return self.racc_debug_out.$puts(); + }, 0); + + $def(self, '$racc_e_pop', function $$racc_e_pop(state, tstack, vstack) { + var self = this; + + + self.racc_debug_out.$puts("error recovering mode: pop token"); + self.$racc_print_states(state); + self.$racc_print_stacks(tstack, vstack); + return self.racc_debug_out.$puts(); + }, 3); + + $def(self, '$racc_next_state', function $$racc_next_state(curstate, state) { + var self = this; + + + self.racc_debug_out.$puts("goto " + (curstate)); + self.$racc_print_states(state); + return self.racc_debug_out.$puts(); + }, 2); + + $def(self, '$racc_print_stacks', function $$racc_print_stacks(t, v) { + var self = this, out = nil; + + + out = self.racc_debug_out; + out.$print(" ["); + $send(t, 'each_index', [], function $$6(i){var self = $$6.$$s == null ? this : $$6.$$s; + + + + if (i == null) i = nil;; + return out.$print(" (", self.$racc_token2str(t['$[]'](i)), " ", v['$[]'](i).$inspect(), ")");}, {$$arity: 1, $$s: self}); + return out.$puts(" ]"); + }, 2); + + $def(self, '$racc_print_states', function $$racc_print_states(s) { + var self = this, out = nil; + + + out = self.racc_debug_out; + out.$print(" ["); + $send(s, 'each', [], function $$7(st){ + + + if (st == null) st = nil;; + return out.$print(" ", st);}, 1); + return out.$puts(" ]"); + }, 1); + + $def(self, '$racc_token2str', function $$racc_token2str(tok) { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = $$$(self.$class(), 'Racc_token_to_s_table')['$[]'](tok)))) { + return $ret_or_1 + } else { + return self.$raise("[Racc Bug] can't convert token " + (tok) + " to string") + } + }, 1); + return $def(self, '$token_to_str', function $$token_to_str(t) { + var self = this; + + return $$$(self.$class(), 'Racc_token_to_s_table')['$[]'](t) + }, 1); + })($nesting[0], null, $nesting); + })($nesting[0], $nesting); +}; + +Opal.modules["parser/messages"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set, $hash2 = Opal.hash2, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $defs = Opal.defs; + + Opal.add_stubs('freeze,[],empty?,===,format'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + + $const_set($nesting[0], 'MESSAGES', $hash2(["unicode_point_too_large", "invalid_escape", "incomplete_escape", "invalid_hex_escape", "invalid_unicode_escape", "unterminated_unicode", "escape_eof", "string_eof", "regexp_options", "cvar_name", "ivar_name", "trailing_in_number", "empty_numeric", "invalid_octal", "no_dot_digit_literal", "bare_backslash", "unexpected", "embedded_document", "heredoc_id_has_newline", "heredoc_id_ends_with_nl", "unterminated_heredoc_id", "invalid_escape_use", "ambiguous_literal", "ambiguous_regexp", "ambiguous_prefix", "triple_dot_at_eol", "nth_ref_alias", "begin_in_method", "backref_assignment", "invalid_assignment", "module_name_const", "unexpected_token", "argument_const", "argument_ivar", "argument_gvar", "argument_cvar", "duplicate_argument", "empty_symbol", "odd_hash", "singleton_literal", "dynamic_const", "const_reassignment", "module_in_def", "class_in_def", "unexpected_percent_str", "block_and_blockarg", "masgn_as_condition", "block_given_to_yield", "invalid_regexp", "invalid_return", "csend_in_lhs_of_masgn", "cant_assign_to_numparam", "reserved_for_numparam", "ordinary_param_defined", "numparam_used_in_outer_scope", "circular_argument_reference", "pm_interp_in_var_name", "lvar_name", "undefined_lvar", "duplicate_variable_name", "duplicate_pattern_key", "endless_setter", "invalid_id_to_get", "forward_arg_after_restarg", "no_anonymous_blockarg", "useless_else", "duplicate_hash_key", "invalid_encoding", "invalid_action", "clobbered", "different_replacements", "swallowed_insertions", "swallowed_insertions_conflict", "crossing_deletions", "crossing_deletions_conflict", "crossing_insertions", "crossing_insertions_conflict"], {"unicode_point_too_large": "invalid Unicode codepoint (too large)", "invalid_escape": "invalid escape character syntax", "incomplete_escape": "incomplete character syntax", "invalid_hex_escape": "invalid hex escape", "invalid_unicode_escape": "invalid Unicode escape", "unterminated_unicode": "unterminated Unicode escape", "escape_eof": "escape sequence meets end of file", "string_eof": "unterminated string meets end of file", "regexp_options": "unknown regexp options: %{options}", "cvar_name": "`%{name}' is not allowed as a class variable name", "ivar_name": "`%{name}' is not allowed as an instance variable name", "trailing_in_number": "trailing `%{character}' in number", "empty_numeric": "numeric literal without digits", "invalid_octal": "invalid octal digit", "no_dot_digit_literal": "no . floating literal anymore; put 0 before dot", "bare_backslash": "bare backslash only allowed before newline", "unexpected": "unexpected `%{character}'", "embedded_document": "embedded document meets end of file (and they embark on a romantic journey)", "heredoc_id_has_newline": "here document identifier across newlines, never match", "heredoc_id_ends_with_nl": "here document identifier ends with a newline", "unterminated_heredoc_id": "unterminated heredoc id", "invalid_escape_use": "invalid character syntax; use ?%{escape}", "ambiguous_literal": "ambiguous first argument; put parentheses or a space even after the operator", "ambiguous_regexp": "ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after `/' operator", "ambiguous_prefix": "`%{prefix}' interpreted as argument prefix", "triple_dot_at_eol": "... at EOL, should be parenthesized", "nth_ref_alias": "cannot define an alias for a back-reference variable", "begin_in_method": "BEGIN in method", "backref_assignment": "cannot assign to a back-reference variable", "invalid_assignment": "cannot assign to a keyword", "module_name_const": "class or module name must be a constant literal", "unexpected_token": "unexpected token %{token}", "argument_const": "formal argument cannot be a constant", "argument_ivar": "formal argument cannot be an instance variable", "argument_gvar": "formal argument cannot be a global variable", "argument_cvar": "formal argument cannot be a class variable", "duplicate_argument": "duplicate argument name", "empty_symbol": "empty symbol literal", "odd_hash": "odd number of entries for a hash", "singleton_literal": "cannot define a singleton method for a literal", "dynamic_const": "dynamic constant assignment", "const_reassignment": "constant re-assignment", "module_in_def": "module definition in method body", "class_in_def": "class definition in method body", "unexpected_percent_str": "%{type}: unknown type of percent-literal", "block_and_blockarg": "both block argument and literal block are passed", "masgn_as_condition": "multiple assignment in conditional context", "block_given_to_yield": "block given to yield", "invalid_regexp": "%{message}", "invalid_return": "Invalid return in class/module body", "csend_in_lhs_of_masgn": "&. inside multiple assignment destination", "cant_assign_to_numparam": "cannot assign to numbered parameter %{name}", "reserved_for_numparam": "%{name} is reserved for numbered parameter", "ordinary_param_defined": "ordinary parameter is defined", "numparam_used_in_outer_scope": "numbered parameter is already used in an outer scope", "circular_argument_reference": "circular argument reference %{var_name}", "pm_interp_in_var_name": "symbol literal with interpolation is not allowed", "lvar_name": "`%{name}' is not allowed as a local variable name", "undefined_lvar": "no such local variable: `%{name}'", "duplicate_variable_name": "duplicate variable name %{name}", "duplicate_pattern_key": "duplicate hash pattern key %{name}", "endless_setter": "setter method cannot be defined in an endless method definition", "invalid_id_to_get": "identifier %{identifier} is not valid to get", "forward_arg_after_restarg": "... after rest argument", "no_anonymous_blockarg": "no anonymous block parameter", "useless_else": "else without rescue is useless", "duplicate_hash_key": "key is duplicated and overwritten", "invalid_encoding": "literal contains escape sequences incompatible with UTF-8", "invalid_action": "cannot %{action}", "clobbered": "clobbered by: %{action}", "different_replacements": "different replacements: %{replacement} vs %{other_replacement}", "swallowed_insertions": "this replacement:", "swallowed_insertions_conflict": "swallows some inner rewriting actions:", "crossing_deletions": "the deletion of:", "crossing_deletions_conflict": "is crossing:", "crossing_insertions": "the rewriting action on:", "crossing_insertions_conflict": "is crossing that on:"}).$freeze()); + return (function($base, $parent_nesting) { + var self = $module($base, 'Messages'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $defs(self, '$compile', function $$compile(reason, arguments$) { + var self = this, template = nil; + + + template = $$('MESSAGES')['$[]'](reason); + if (($eqeqeq($$('Hash'), arguments$) && ($truthy(arguments$['$empty?']())))) { + return template + }; + return self.$format(template, arguments$); + }, 2) + })($nesting[0], $nesting); + })($nesting[0], $nesting) +}; + +Opal.modules["parser/deprecation"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $truthy = Opal.truthy, $def = Opal.def; + + Opal.add_stubs('attr_writer,warn'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base) { + var self = $module($base, 'Deprecation'); + + + + self.$attr_writer("warned_of_deprecation"); + return $def(self, '$warn_of_deprecation', function $$warn_of_deprecation() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + if (self.warned_of_deprecation == null) self.warned_of_deprecation = nil; + + return (self.warned_of_deprecation = ($truthy(($ret_or_1 = self.warned_of_deprecation)) ? ($ret_or_1) : ($truthy(($ret_or_2 = self.$warn($$$(self, 'DEPRECATION_WARNING')))) ? ($ret_or_2) : (true)))) + }, 0); + })($nesting[0]) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/ast/processor"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $alias = Opal.alias, $to_a = Opal.to_a, $not = Opal.not, $truthy = Opal.truthy, $slice = Opal.slice; + + Opal.add_stubs('updated,process_all,on_var,!,nil?,process,on_vasgn,on_argument,is_a?,[],children,process_regular_node,warn'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'AST'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Processor'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$process_regular_node', function $$process_regular_node(node) { + var self = this; + + return node.$updated(nil, self.$process_all(node)) + }, 1); + $alias(self, "on_dstr", "process_regular_node"); + $alias(self, "on_dsym", "process_regular_node"); + $alias(self, "on_regexp", "process_regular_node"); + $alias(self, "on_xstr", "process_regular_node"); + $alias(self, "on_splat", "process_regular_node"); + $alias(self, "on_kwsplat", "process_regular_node"); + $alias(self, "on_array", "process_regular_node"); + $alias(self, "on_pair", "process_regular_node"); + $alias(self, "on_hash", "process_regular_node"); + $alias(self, "on_kwargs", "process_regular_node"); + $alias(self, "on_irange", "process_regular_node"); + $alias(self, "on_erange", "process_regular_node"); + + $def(self, '$on_var', function $$on_var(node) { + + return node + }, 1); + + $def(self, '$process_variable_node', function $$process_variable_node(node) { + var self = this; + + return self.$on_var(node) + }, 1); + $alias(self, "on_lvar", "process_variable_node"); + $alias(self, "on_ivar", "process_variable_node"); + $alias(self, "on_gvar", "process_variable_node"); + $alias(self, "on_cvar", "process_variable_node"); + $alias(self, "on_back_ref", "process_variable_node"); + $alias(self, "on_nth_ref", "process_variable_node"); + + $def(self, '$on_vasgn', function $$on_vasgn(node) { + var $a, self = this, name = nil, value_node = nil; + + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (value_node = ($a[1] == null ? nil : $a[1])), $a; + if ($not(value_node['$nil?']())) { + return node.$updated(nil, [name, self.$process(value_node)]) + } else { + return node + }; + }, 1); + + $def(self, '$process_var_asgn_node', function $$process_var_asgn_node(node) { + var self = this; + + return self.$on_vasgn(node) + }, 1); + $alias(self, "on_lvasgn", "process_var_asgn_node"); + $alias(self, "on_ivasgn", "process_var_asgn_node"); + $alias(self, "on_gvasgn", "process_var_asgn_node"); + $alias(self, "on_cvasgn", "process_var_asgn_node"); + $alias(self, "on_and_asgn", "process_regular_node"); + $alias(self, "on_or_asgn", "process_regular_node"); + + $def(self, '$on_op_asgn', function $$on_op_asgn(node) { + var $a, self = this, var_node = nil, method_name = nil, value_node = nil; + + + $a = [].concat($to_a(node)), (var_node = ($a[0] == null ? nil : $a[0])), (method_name = ($a[1] == null ? nil : $a[1])), (value_node = ($a[2] == null ? nil : $a[2])), $a; + return node.$updated(nil, [self.$process(var_node), method_name, self.$process(value_node)]); + }, 1); + $alias(self, "on_mlhs", "process_regular_node"); + $alias(self, "on_masgn", "process_regular_node"); + + $def(self, '$on_const', function $$on_const(node) { + var $a, self = this, scope_node = nil, name = nil; + + + $a = [].concat($to_a(node)), (scope_node = ($a[0] == null ? nil : $a[0])), (name = ($a[1] == null ? nil : $a[1])), $a; + return node.$updated(nil, [self.$process(scope_node), name]); + }, 1); + + $def(self, '$on_casgn', function $$on_casgn(node) { + var $a, self = this, scope_node = nil, name = nil, value_node = nil; + + + $a = [].concat($to_a(node)), (scope_node = ($a[0] == null ? nil : $a[0])), (name = ($a[1] == null ? nil : $a[1])), (value_node = ($a[2] == null ? nil : $a[2])), $a; + if ($not(value_node['$nil?']())) { + return node.$updated(nil, [self.$process(scope_node), name, self.$process(value_node)]) + } else { + return node.$updated(nil, [self.$process(scope_node), name]) + }; + }, 1); + $alias(self, "on_args", "process_regular_node"); + + $def(self, '$on_argument', function $$on_argument(node) { + var $a, self = this, arg_name = nil, value_node = nil; + + + $a = [].concat($to_a(node)), (arg_name = ($a[0] == null ? nil : $a[0])), (value_node = ($a[1] == null ? nil : $a[1])), $a; + if ($not(value_node['$nil?']())) { + return node.$updated(nil, [arg_name, self.$process(value_node)]) + } else { + return node + }; + }, 1); + + $def(self, '$process_argument_node', function $$process_argument_node(node) { + var self = this; + + return self.$on_argument(node) + }, 1); + $alias(self, "on_arg", "process_argument_node"); + $alias(self, "on_optarg", "process_argument_node"); + $alias(self, "on_restarg", "process_argument_node"); + $alias(self, "on_blockarg", "process_argument_node"); + $alias(self, "on_shadowarg", "process_argument_node"); + $alias(self, "on_kwarg", "process_argument_node"); + $alias(self, "on_kwoptarg", "process_argument_node"); + $alias(self, "on_kwrestarg", "process_argument_node"); + $alias(self, "on_forward_arg", "process_argument_node"); + + $def(self, '$on_procarg0', function $$on_procarg0(node) { + var self = this; + + if ($truthy(node.$children()['$[]'](0)['$is_a?']($$('Symbol')))) { + return self.$on_argument(node) + } else { + return self.$process_regular_node(node) + } + }, 1); + $alias(self, "on_arg_expr", "process_regular_node"); + $alias(self, "on_restarg_expr", "process_regular_node"); + $alias(self, "on_blockarg_expr", "process_regular_node"); + $alias(self, "on_block_pass", "process_regular_node"); + $alias(self, "on_module", "process_regular_node"); + $alias(self, "on_class", "process_regular_node"); + $alias(self, "on_sclass", "process_regular_node"); + + $def(self, '$on_def', function $$on_def(node) { + var $a, self = this, name = nil, args_node = nil, body_node = nil; + + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (args_node = ($a[1] == null ? nil : $a[1])), (body_node = ($a[2] == null ? nil : $a[2])), $a; + return node.$updated(nil, [name, self.$process(args_node), self.$process(body_node)]); + }, 1); + + $def(self, '$on_defs', function $$on_defs(node) { + var $a, self = this, definee_node = nil, name = nil, args_node = nil, body_node = nil; + + + $a = [].concat($to_a(node)), (definee_node = ($a[0] == null ? nil : $a[0])), (name = ($a[1] == null ? nil : $a[1])), (args_node = ($a[2] == null ? nil : $a[2])), (body_node = ($a[3] == null ? nil : $a[3])), $a; + return node.$updated(nil, [self.$process(definee_node), name, self.$process(args_node), self.$process(body_node)]); + }, 1); + $alias(self, "on_undef", "process_regular_node"); + $alias(self, "on_alias", "process_regular_node"); + + $def(self, '$on_send', function $$on_send(node) { + var $a, self = this, receiver_node = nil, method_name = nil, arg_nodes = nil; + + + $a = [].concat($to_a(node)), (receiver_node = ($a[0] == null ? nil : $a[0])), (method_name = ($a[1] == null ? nil : $a[1])), (arg_nodes = $slice.call($a, 2)), $a; + if ($truthy(receiver_node)) { + receiver_node = self.$process(receiver_node) + }; + return node.$updated(nil, [receiver_node, method_name].concat($to_a(self.$process_all(arg_nodes)))); + }, 1); + $alias(self, "on_csend", "on_send"); + $alias(self, "on_index", "process_regular_node"); + $alias(self, "on_indexasgn", "process_regular_node"); + $alias(self, "on_block", "process_regular_node"); + $alias(self, "on_lambda", "process_regular_node"); + + $def(self, '$on_numblock', function $$on_numblock(node) { + var $a, self = this, method_call = nil, max_numparam = nil, body = nil; + + + $a = [].concat($to_a(node)), (method_call = ($a[0] == null ? nil : $a[0])), (max_numparam = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), $a; + return node.$updated(nil, [self.$process(method_call), max_numparam, self.$process(body)]); + }, 1); + $alias(self, "on_while", "process_regular_node"); + $alias(self, "on_while_post", "process_regular_node"); + $alias(self, "on_until", "process_regular_node"); + $alias(self, "on_until_post", "process_regular_node"); + $alias(self, "on_for", "process_regular_node"); + $alias(self, "on_return", "process_regular_node"); + $alias(self, "on_break", "process_regular_node"); + $alias(self, "on_next", "process_regular_node"); + $alias(self, "on_redo", "process_regular_node"); + $alias(self, "on_retry", "process_regular_node"); + $alias(self, "on_super", "process_regular_node"); + $alias(self, "on_yield", "process_regular_node"); + $alias(self, "on_defined?", "process_regular_node"); + $alias(self, "on_not", "process_regular_node"); + $alias(self, "on_and", "process_regular_node"); + $alias(self, "on_or", "process_regular_node"); + $alias(self, "on_if", "process_regular_node"); + $alias(self, "on_when", "process_regular_node"); + $alias(self, "on_case", "process_regular_node"); + $alias(self, "on_iflipflop", "process_regular_node"); + $alias(self, "on_eflipflop", "process_regular_node"); + $alias(self, "on_match_current_line", "process_regular_node"); + $alias(self, "on_match_with_lvasgn", "process_regular_node"); + $alias(self, "on_resbody", "process_regular_node"); + $alias(self, "on_rescue", "process_regular_node"); + $alias(self, "on_ensure", "process_regular_node"); + $alias(self, "on_begin", "process_regular_node"); + $alias(self, "on_kwbegin", "process_regular_node"); + $alias(self, "on_preexe", "process_regular_node"); + $alias(self, "on_postexe", "process_regular_node"); + $alias(self, "on_case_match", "process_regular_node"); + $alias(self, "on_in_match", "process_regular_node"); + $alias(self, "on_match_pattern", "process_regular_node"); + $alias(self, "on_match_pattern_p", "process_regular_node"); + $alias(self, "on_in_pattern", "process_regular_node"); + $alias(self, "on_if_guard", "process_regular_node"); + $alias(self, "on_unless_guard", "process_regular_node"); + $alias(self, "on_match_var", "process_variable_node"); + $alias(self, "on_match_rest", "process_regular_node"); + $alias(self, "on_pin", "process_regular_node"); + $alias(self, "on_match_alt", "process_regular_node"); + $alias(self, "on_match_as", "process_regular_node"); + $alias(self, "on_array_pattern", "process_regular_node"); + $alias(self, "on_array_pattern_with_tail", "process_regular_node"); + $alias(self, "on_hash_pattern", "process_regular_node"); + $alias(self, "on_const_pattern", "process_regular_node"); + $alias(self, "on_find_pattern", "process_regular_node"); + + $def(self, '$process_variable_node', function $$process_variable_node(node) { + var self = this; + + + self.$warn("Parser::AST::Processor#process_variable_node is deprecated as a" + " public API and will be removed. Please use " + "Parser::AST::Processor#on_var instead."); + return self.$on_var(node); + }, 1); + + $def(self, '$process_var_asgn_node', function $$process_var_asgn_node(node) { + var self = this; + + + self.$warn("Parser::AST::Processor#process_var_asgn_node is deprecated as a" + " public API and will be removed. Please use " + "Parser::AST::Processor#on_vasgn instead."); + return self.$on_vasgn(node); + }, 1); + + $def(self, '$process_argument_node', function $$process_argument_node(node) { + var self = this; + + + self.$warn("Parser::AST::Processor#process_argument_node is deprecated as a" + " public API and will be removed. Please use " + "Parser::AST::Processor#on_argument instead."); + return self.$on_argument(node); + }, 1); + return $def(self, '$on_empty_else', function $$on_empty_else(node) { + + return node + }, 1); + })($nesting[0], $$$($$$('AST'), 'Processor'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/meta"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set; + + Opal.add_stubs('freeze,to_set'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Meta'); + + var $nesting = [self].concat($parent_nesting); + + return $const_set($nesting[0], 'NODE_TYPES', ["true", "false", "nil", "int", "float", "str", "dstr", "sym", "dsym", "xstr", "regopt", "regexp", "array", "splat", "pair", "kwsplat", "hash", "irange", "erange", "self", "lvar", "ivar", "cvar", "gvar", "const", "defined?", "lvasgn", "ivasgn", "cvasgn", "gvasgn", "casgn", "mlhs", "masgn", "op_asgn", "and_asgn", "ensure", "rescue", "arg_expr", "or_asgn", "back_ref", "nth_ref", "match_with_lvasgn", "match_current_line", "module", "class", "sclass", "def", "defs", "undef", "alias", "args", "cbase", "arg", "optarg", "restarg", "blockarg", "block_pass", "kwarg", "kwoptarg", "kwrestarg", "kwnilarg", "send", "csend", "super", "zsuper", "yield", "block", "and", "not", "or", "if", "when", "case", "while", "until", "while_post", "until_post", "for", "break", "next", "redo", "return", "resbody", "kwbegin", "begin", "retry", "preexe", "postexe", "iflipflop", "eflipflop", "shadowarg", "complex", "rational", "__FILE__", "__LINE__", "__ENCODING__", "ident", "lambda", "indexasgn", "index", "procarg0", "restarg_expr", "blockarg_expr", "objc_kwarg", "objc_restarg", "objc_varargs", "numargs", "numblock", "forward_args", "forwarded_args", "forward_arg", "case_match", "in_match", "in_pattern", "match_var", "pin", "match_alt", "match_as", "match_rest", "array_pattern", "match_with_trailing_comma", "array_pattern_with_tail", "hash_pattern", "const_pattern", "if_guard", "unless_guard", "match_nil_pattern", "empty_else", "find_pattern", "kwargs", "match_pattern_p", "match_pattern"].$to_set().$freeze()) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/buffer"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $regexp = Opal.regexp, $enc = Opal.enc, $truthy = Opal.truthy, $gvars = Opal.gvars, $eqeq = Opal.eqeq, $neqeq = Opal.neqeq, $defs = Opal.defs, $hash2 = Opal.hash2, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $not = Opal.not, $rb_plus = Opal.rb_plus, $rb_ge = Opal.rb_ge, $rb_lt = Opal.rb_lt, $send2 = Opal.send2, $find_super = Opal.find_super; + + Opal.add_stubs('attr_reader,empty?,=~,start_with?,freeze,==,[],!=,nil?,match,find,encoding,recognize_encoding,force_encoding,encode,to_s,source=,-,open,read,raise,frozen?,dup,reencode_string,class,valid_encoding?,name,raw_source=,gsub,!,ascii_only?,line_index_for_position,line_begins,+,to_a,lines,end_with?,<<,each,chomp!,fetch,source_lines,>=,size,<,new,source,source_range,private,index,bsearch,[]=,method_defined?,bsearch_index'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Buffer'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.name = $proto.source = $proto.slice_source = $proto.first_line = $proto.lines = $proto.source_range = $proto.line_begins = $proto.line_index_for_position = $proto.line_range = nil; + + self.$attr_reader("name", "first_line"); + $const_set($nesting[0], 'ENCODING_RE', $regexp([$enc("[\\s#](en)?coding\\s*[:=]\\s*", "ASCII-8BIT"), $enc("(", "ASCII-8BIT"), $enc("", "ASCII-8BIT"), $enc("(utf8-mac)", "ASCII-8BIT"), $enc("|", "ASCII-8BIT"), $enc("", "ASCII-8BIT"), $enc("([A-Za-z0-9_-]+?)(-unix|-dos|-mac)", "ASCII-8BIT"), $enc("|", "ASCII-8BIT"), $enc("([A-Za-z0-9_-]+)", "ASCII-8BIT"), $enc(")", "ASCII-8BIT"), $enc("", "ASCII-8BIT")])); + $defs(self, '$recognize_encoding', function $$recognize_encoding(string) { + var $a, $b, first_line = nil, second_line = nil, encoding_line = nil, result = nil, $ret_or_1 = nil, $ret_or_2 = nil; + + + if ($truthy(string['$empty?']())) { + return nil + }; + string['$=~'](/^(.*)\n?(.*\n)?/); + $a = [(($b = $gvars['~']) === nil ? nil : $b['$[]'](1)), (($b = $gvars['~']) === nil ? nil : $b['$[]'](2))], (first_line = $a[0]), (second_line = $a[1]), $a; + if ($truthy(first_line['$start_with?']($enc("\xEF\xBB\xBF", "ASCII-8BIT").$freeze()))) { + return $$$($$('Encoding'), 'UTF_8') + } else if ($eqeq(first_line['$[]'](0, 2), $enc("#!", "ASCII-8BIT").$freeze())) { + encoding_line = second_line + } else { + encoding_line = first_line + }; + if (($truthy(encoding_line['$nil?']()) || ($neqeq(encoding_line['$[]'](0), $enc("#", "ASCII-8BIT"))))) { + return nil + }; + if ($truthy((result = $$('ENCODING_RE').$match(encoding_line)))) { + return $$('Encoding').$find(($truthy(($ret_or_1 = ($truthy(($ret_or_2 = result['$[]'](3))) ? ($ret_or_2) : (result['$[]'](4))))) ? ($ret_or_1) : (result['$[]'](6)))) + } else { + return nil + }; + }, 1); + $defs(self, '$reencode_string', function $$reencode_string(input) { + var self = this, original_encoding = nil, detected_encoding = nil; + + + original_encoding = input.$encoding(); + detected_encoding = self.$recognize_encoding(input.$force_encoding($$$($$('Encoding'), 'BINARY'))); + if ($truthy(detected_encoding['$nil?']())) { + return input.$force_encoding(original_encoding) + } else if ($eqeq(detected_encoding, $$$($$('Encoding'), 'BINARY'))) { + return input + } else { + return input.$force_encoding(detected_encoding).$encode($$$($$('Encoding'), 'UTF_8')) + }; + }, 1); + + $def(self, '$initialize', function $$initialize(name, $a, $b) { + var $post_args, $kwargs, first_line, source, self = this, $writer = nil; + + + + $post_args = Opal.slice.call(arguments, 1); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if ($post_args.length > 0) first_line = $post_args.shift(); + if (first_line == null) first_line = 1;; + + source = $kwargs.$$smap["source"]; + if (source == null) source = nil; + self.name = name.$to_s(); + self.source = nil; + self.first_line = first_line; + self.lines = nil; + self.line_begins = nil; + self.slice_source = nil; + self.line_index_for_position = $hash2([], {}); + if ($truthy(source)) { + + $writer = [source]; + $send(self, 'source=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else { + return nil + }; + }, -2); + + $def(self, '$read', function $$read() { + var self = this; + + + $send($$('File'), 'open', [self.name, $enc("rb", "ASCII-8BIT")], function $$1(io){var self = $$1.$$s == null ? this : $$1.$$s, $writer = nil; + + + + if (io == null) io = nil;; + $writer = [io.$read()]; + $send(self, 'source=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}); + return self; + }, 0); + + $def(self, '$source', function $$source() { + var self = this; + + + if ($truthy(self.source['$nil?']())) { + self.$raise($$('RuntimeError'), $enc("Cannot extract source from uninitialized Source::Buffer", "ASCII-8BIT")) + }; + return self.source; + }, 0); + + $def(self, '$source=', function $Buffer_source$eq$2(input) { + var self = this, $writer = nil; + + + if ($truthy(input['$frozen?']())) { + input = input.$dup() + }; + input = self.$class().$reencode_string(input); + if (!$truthy(input['$valid_encoding?']())) { + self.$raise($$('EncodingError'), $enc("invalid byte sequence in ", "ASCII-8BIT") + (input.$encoding().$name())) + }; + + $writer = [input]; + $send(self, 'raw_source=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + }, 1); + + $def(self, '$raw_source=', function $Buffer_raw_source$eq$3(input) { + var self = this; + + + if ($truthy(self.source)) { + self.$raise($$('ArgumentError'), $enc("Source::Buffer is immutable", "ASCII-8BIT")) + }; + self.source = input.$gsub($enc("\r\n", "ASCII-8BIT").$freeze(), $enc("\n", "ASCII-8BIT").$freeze()).$freeze(); + if ((($not(self.source['$ascii_only?']()) && ($neqeq(self.source.$encoding(), $$$($$('Encoding'), 'UTF_32LE')))) && ($neqeq(self.source.$encoding(), $$$($$('Encoding'), 'BINARY'))))) { + return (self.slice_source = self.source.$encode($$$($$('Encoding'), 'UTF_32LE'))) + } else { + return nil + }; + }, 1); + + $def(self, '$slice', function $$slice(range) { + var self = this; + + if ($truthy(self.slice_source['$nil?']())) { + return self.source['$[]'](range) + } else { + return self.slice_source['$[]'](range).$encode(self.source.$encoding()) + } + }, 1); + + $def(self, '$decompose_position', function $$decompose_position(position) { + var self = this, line_index = nil, line_begin = nil; + + + line_index = self.$line_index_for_position(position); + line_begin = self.$line_begins()['$[]'](line_index); + return [$rb_plus(self.first_line, line_index), $rb_minus(position, line_begin)]; + }, 1); + + $def(self, '$line_for_position', function $$line_for_position(position) { + var self = this; + + return $rb_plus(self.$line_index_for_position(position), self.first_line) + }, 1); + + $def(self, '$column_for_position', function $$column_for_position(position) { + var self = this, line_index = nil; + + + line_index = self.$line_index_for_position(position); + return $rb_minus(position, self.$line_begins()['$[]'](line_index)); + }, 1); + + $def(self, '$source_lines', function $$source_lines() { + var self = this, $ret_or_1 = nil, lines = nil; + + return (self.lines = ($truthy(($ret_or_1 = self.lines)) ? ($ret_or_1) : (((lines = self.source.$lines().$to_a()), ($truthy(self.source['$end_with?']($enc("\n", "ASCII-8BIT").$freeze())) ? (lines['$<<']($enc("", "ASCII-8BIT").$dup())) : nil), $send(lines, 'each', [], function $$4(line){ + + + if (line == null) line = nil;; + line['$chomp!']($enc("\n", "ASCII-8BIT").$freeze()); + return line.$freeze();}, 1), lines.$freeze())))) + }, 0); + + $def(self, '$source_line', function $$source_line(lineno) { + var self = this; + + return self.$source_lines().$fetch($rb_minus(lineno, self.first_line)).$dup() + }, 1); + + $def(self, '$line_range', function $$line_range(lineno) { + var self = this, index = nil; + + + index = $rb_minus(lineno, self.first_line); + if (($truthy($rb_lt(index, 0)) || ($truthy($rb_ge($rb_plus(index, 1), self.$line_begins().$size()))))) { + return self.$raise($$('IndexError'), $enc("Parser::Source::Buffer: range for line ", "ASCII-8BIT") + ("" + (lineno) + $enc(" requested, valid line numbers are ", "ASCII-8BIT") + (self.first_line) + $enc("..", "ASCII-8BIT")) + ("" + ($rb_minus($rb_plus(self.first_line, self.$line_begins().$size()), 2)))) + } else { + return $$('Range').$new(self, self.$line_begins()['$[]'](index), $rb_minus(self.$line_begins()['$[]']($rb_plus(index, 1)), 1)) + }; + }, 1); + + $def(self, '$source_range', function $$source_range() { + var self = this, $ret_or_1 = nil; + + return (self.source_range = ($truthy(($ret_or_1 = self.source_range)) ? ($ret_or_1) : ($$('Range').$new(self, 0, self.$source().$size())))) + }, 0); + + $def(self, '$last_line', function $$last_line() { + var self = this; + + return $rb_minus($rb_plus(self.$line_begins().$size(), self.first_line), 2) + }, 0); + + $def(self, '$freeze', function $$freeze() { + var $yield = $$freeze.$$p || nil, self = this; + + delete $$freeze.$$p; + + self.$source_lines(); + self.$line_begins(); + self.$source_range(); + return $send2(self, $find_super(self, 'freeze', $$freeze, false, true), 'freeze', [], $yield); + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return $enc("#<", "ASCII-8BIT") + (self.$class()) + $enc(" ", "ASCII-8BIT") + (self.$name()) + $enc(">", "ASCII-8BIT") + }, 0); + self.$private(); + + $def(self, '$line_begins', function $$line_begins() { + var $a, self = this, $ret_or_1 = nil, begins = nil, index = nil; + + return (self.line_begins = ($truthy(($ret_or_1 = self.line_begins)) ? ($ret_or_1) : ((function() { + (begins = [0]); + (index = 0); + (function() {while ($truthy((index = self.source.$index($enc("\n", "ASCII-8BIT").$freeze(), index)))) { + + index = $rb_plus(index, 1); + begins['$<<'](index); + }; return nil; })(); + begins['$<<']($rb_plus(self.source.$size(), 1)); + return begins;})()))) + }, 0); + + $def(self, '$line_index_for_position', function $$line_index_for_position(position) { + var self = this, $ret_or_1 = nil, index = nil, $writer = nil; + + if ($truthy(($ret_or_1 = self.line_index_for_position['$[]'](position)))) { + return $ret_or_1 + } else { + + index = $rb_minus(self.$bsearch(self.$line_begins(), position), 1); + if (!$truthy(self.line_index_for_position['$frozen?']())) { + + $writer = [position, index]; + $send(self.line_index_for_position, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return index; + } + }, 1); + if ($truthy($$('Array')['$method_defined?']("bsearch_index"))) { + return $def(self, '$bsearch', function $$bsearch(line_begins, position) { + var $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = $send(line_begins, 'bsearch_index', [], function $$5(line_begin){ + + + if (line_begin == null) line_begin = nil;; + return $rb_lt(position, line_begin);}, 1)))) { + return $ret_or_1 + } else { + return $rb_minus(line_begins.$size(), 1) + } + }, 2) + } else { + return $def(self, '$bsearch', function $$bsearch(line_begins, position) { + var self = this, $ret_or_1 = nil; + + + self.line_range = ($truthy(($ret_or_1 = self.line_range)) ? ($ret_or_1) : (Opal.Range.$new(0,line_begins.$size(), true))); + if ($truthy(($ret_or_1 = $send(self.line_range, 'bsearch', [], function $$6(i){ + + + if (i == null) i = nil;; + return $rb_lt(position, line_begins['$[]'](i));}, 1)))) { + return $ret_or_1 + } else { + return $rb_minus(line_begins.$size(), 1) + }; + }, 2) + }; + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/range"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $rb_lt = Opal.rb_lt, $def = Opal.def, $hash2 = Opal.hash2, $rb_minus = Opal.rb_minus, $alias = Opal.alias, $neqeq = Opal.neqeq, $to_ary = Opal.to_ary, $rb_plus = Opal.rb_plus, $rb_ge = Opal.rb_ge, $rb_times = Opal.rb_times, $eqeq = Opal.eqeq; + + Opal.add_stubs('include,attr_reader,<,raise,nil?,freeze,with,-,line_for_position,alias_method,column_for_position,!=,line,last_line,inspect,column,last_column,source_line,slice,begin_pos,end_pos,include?,source,to_a,decompose_position,join,name,+,new,min,max,disjoint?,empty?,>=,!,<=>,contains?,overlaps?,==,*,source_buffer,is_a?,nonzero?,hash'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Range'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.begin_pos = $proto.end_pos = $proto.source_buffer = nil; + + self.$include($$('Comparable')); + self.$attr_reader("source_buffer"); + self.$attr_reader("begin_pos", "end_pos"); + + $def(self, '$initialize', function $$initialize(source_buffer, begin_pos, end_pos) { + var $a, self = this; + + + if ($truthy($rb_lt(end_pos, begin_pos))) { + self.$raise($$('ArgumentError'), "Parser::Source::Range: end_pos must not be less than begin_pos") + }; + if ($truthy(source_buffer['$nil?']())) { + self.$raise($$('ArgumentError'), "Parser::Source::Range: source_buffer must not be nil") + }; + self.source_buffer = source_buffer; + $a = [begin_pos, end_pos], (self.begin_pos = $a[0]), (self.end_pos = $a[1]), $a; + return self.$freeze(); + }, 3); + + $def(self, '$begin', function $$begin() { + var self = this; + + return self.$with($hash2(["end_pos"], {"end_pos": self.begin_pos})) + }, 0); + + $def(self, '$end', function $$end() { + var self = this; + + return self.$with($hash2(["begin_pos"], {"begin_pos": self.end_pos})) + }, 0); + + $def(self, '$size', function $$size() { + var self = this; + + return $rb_minus(self.end_pos, self.begin_pos) + }, 0); + $alias(self, "length", "size"); + + $def(self, '$line', function $$line() { + var self = this; + + return self.source_buffer.$line_for_position(self.begin_pos) + }, 0); + self.$alias_method("first_line", "line"); + + $def(self, '$column', function $$column() { + var self = this; + + return self.source_buffer.$column_for_position(self.begin_pos) + }, 0); + + $def(self, '$last_line', function $$last_line() { + var self = this; + + return self.source_buffer.$line_for_position(self.end_pos) + }, 0); + + $def(self, '$last_column', function $$last_column() { + var self = this; + + return self.source_buffer.$column_for_position(self.end_pos) + }, 0); + + $def(self, '$column_range', function $$column_range() { + var self = this; + + + if ($neqeq(self.$line(), self.$last_line())) { + self.$raise($$('RangeError'), "" + (self.$inspect()) + " spans more than one line") + }; + return Opal.Range.$new(self.$column(),self.$last_column(), true); + }, 0); + + $def(self, '$source_line', function $$source_line() { + var self = this; + + return self.source_buffer.$source_line(self.$line()) + }, 0); + + $def(self, '$source', function $$source() { + var self = this; + + return self.source_buffer.$slice(Opal.Range.$new(self.$begin_pos(),self.$end_pos(), true)) + }, 0); + + $def(self, '$is?', function $Range_is$ques$1($a) { + var $post_args, what, self = this; + + + + $post_args = Opal.slice.call(arguments); + + what = $post_args;; + return what['$include?'](self.$source()); + }, -1); + + $def(self, '$to_a', function $$to_a() { + var self = this; + + return Opal.Range.$new(self.begin_pos,self.end_pos, true).$to_a() + }, 0); + + $def(self, '$to_range', function $$to_range() { + var self = this; + + return Opal.Range.$new(self.$begin_pos(),self.$end_pos(), true) + }, 0); + + $def(self, '$to_s', function $$to_s() { + var $a, $b, self = this, line = nil, column = nil; + + + $b = self.source_buffer.$decompose_position(self.begin_pos), $a = $to_ary($b), (line = ($a[0] == null ? nil : $a[0])), (column = ($a[1] == null ? nil : $a[1])), $b; + return [self.source_buffer.$name(), line, $rb_plus(column, 1)].$join(":"); + }, 0); + + $def(self, '$with', function $Range_with$2($kwargs) { + var begin_pos, end_pos, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + begin_pos = $kwargs.$$smap["begin_pos"]; + if (begin_pos == null) begin_pos = self.begin_pos; + + end_pos = $kwargs.$$smap["end_pos"]; + if (end_pos == null) end_pos = self.end_pos; + return $$('Range').$new(self.source_buffer, begin_pos, end_pos); + }, -1); + + $def(self, '$adjust', function $$adjust($kwargs) { + var begin_pos, end_pos, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + begin_pos = $kwargs.$$smap["begin_pos"]; + if (begin_pos == null) begin_pos = 0; + + end_pos = $kwargs.$$smap["end_pos"]; + if (end_pos == null) end_pos = 0; + return $$('Range').$new(self.source_buffer, $rb_plus(self.begin_pos, begin_pos), $rb_plus(self.end_pos, end_pos)); + }, -1); + + $def(self, '$resize', function $$resize(new_size) { + var self = this; + + return self.$with($hash2(["end_pos"], {"end_pos": $rb_plus(self.begin_pos, new_size)})) + }, 1); + + $def(self, '$join', function $$join(other) { + var self = this; + + return $$('Range').$new(self.source_buffer, [self.begin_pos, other.$begin_pos()].$min(), [self.end_pos, other.$end_pos()].$max()) + }, 1); + + $def(self, '$intersect', function $$intersect(other) { + var self = this; + + if ($truthy(self['$disjoint?'](other))) { + return nil + } else { + return $$('Range').$new(self.source_buffer, [self.begin_pos, other.$begin_pos()].$max(), [self.end_pos, other.$end_pos()].$min()) + } + }, 1); + + $def(self, '$disjoint?', function $Range_disjoint$ques$3(other) { + var self = this, $ret_or_1 = nil; + + if (($truthy(self['$empty?']()) && ($truthy(other['$empty?']())))) { + return self.begin_pos['$!='](other.$begin_pos()) + } else if ($truthy(($ret_or_1 = $rb_ge(self.begin_pos, other.$end_pos())))) { + return $ret_or_1 + } else { + return $rb_ge(other.$begin_pos(), self.end_pos) + } + }, 1); + + $def(self, '$overlaps?', function $Range_overlaps$ques$4(other) { + var self = this; + + return self['$disjoint?'](other)['$!']() + }, 1); + + $def(self, '$contains?', function $Range_contains$ques$5(other) { + var self = this; + + return $rb_ge($rb_plus(other.$begin_pos()['$<=>'](self.begin_pos), self.end_pos['$<=>'](other.$end_pos())), ($truthy(other['$empty?']()) ? (2) : (1))) + }, 1); + + $def(self, '$contained?', function $Range_contained$ques$6(other) { + var self = this; + + return other['$contains?'](self) + }, 1); + + $def(self, '$crossing?', function $Range_crossing$ques$7(other) { + var self = this; + + + if (!$truthy(self['$overlaps?'](other))) { + return false + }; + return $rb_times(self.begin_pos['$<=>'](other.$begin_pos()), self.end_pos['$<=>'](other.$end_pos()))['$=='](1); + }, 1); + + $def(self, '$empty?', function $Range_empty$ques$8() { + var self = this; + + return self.begin_pos['$=='](self.end_pos) + }, 0); + + $def(self, '$<=>', function $Range_$lt_eq_gt$9(other) { + var self = this, $ret_or_1 = nil; + + + if (!($truthy(other['$is_a?']($$$($$$($$$('Parser'), 'Source'), 'Range'))) && ($eqeq(self.source_buffer, other.$source_buffer())))) { + return nil + }; + if ($truthy(($ret_or_1 = self.begin_pos['$<=>'](other.$begin_pos())['$nonzero?']()))) { + return $ret_or_1 + } else { + + return self.end_pos['$<=>'](other.$end_pos()); + }; + }, 1); + self.$alias_method("eql?", "=="); + + $def(self, '$hash', function $$hash() { + var self = this; + + return [self.source_buffer, self.begin_pos, self.end_pos].$hash() + }, 0); + return $def(self, '$inspect', function $$inspect() { + var self = this; + + return "#" + }, 0); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/comment"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $defs = Opal.defs, $def = Opal.def, $truthy = Opal.truthy; + + Opal.add_stubs('attr_reader,alias_method,new,associate,associate_locations,associate_by_identity,freeze,source,start_with?,text,==,type,is_a?,location,to_s,expression,inspect'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Comment'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.location = nil; + + self.$attr_reader("text"); + self.$attr_reader("location"); + self.$alias_method("loc", "location"); + $defs(self, '$associate', function $$associate(ast, comments) { + var associator = nil; + + + associator = $$('Associator').$new(ast, comments); + return associator.$associate(); + }, 2); + $defs(self, '$associate_locations', function $$associate_locations(ast, comments) { + var associator = nil; + + + associator = $$('Associator').$new(ast, comments); + return associator.$associate_locations(); + }, 2); + $defs(self, '$associate_by_identity', function $$associate_by_identity(ast, comments) { + var associator = nil; + + + associator = $$('Associator').$new(ast, comments); + return associator.$associate_by_identity(); + }, 2); + + $def(self, '$initialize', function $$initialize(range) { + var self = this; + + + self.location = $$$($$$($$('Parser'), 'Source'), 'Map').$new(range); + self.text = range.$source().$freeze(); + return self.$freeze(); + }, 1); + + $def(self, '$type', function $$type() { + var self = this; + + if ($truthy(self.$text()['$start_with?']("#".$freeze()))) { + return "inline" + } else if ($truthy(self.$text()['$start_with?']("=begin".$freeze()))) { + return "document" + } else { + return nil + } + }, 0); + + $def(self, '$inline?', function $Comment_inline$ques$1() { + var self = this; + + return self.$type()['$==']("inline") + }, 0); + + $def(self, '$document?', function $Comment_document$ques$2() { + var self = this; + + return self.$type()['$==']("document") + }, 0); + + $def(self, '$==', function $Comment_$eq_eq$3(other) { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = other['$is_a?']($$$($$('Source'), 'Comment'))))) { + return self.location['$=='](other.$location()) + } else { + return $ret_or_1 + } + }, 1); + return $def(self, '$inspect', function $$inspect() { + var self = this; + + return "#" + }, 0); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/comment/associator"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $const_set = Opal.const_set, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq, $rb_le = Opal.rb_le, $rb_plus = Opal.rb_plus, $not = Opal.not; + + Opal.add_stubs('attr_accessor,do_associate,private,freeze,[],include?,type,sort_by,compact,children,begin_pos,expression,loc,select,is_a?,new,[]=,-,==,compare_by_identity,advance_comment,advance_through_directives,visit,process_leading_comments,location,<=,line,last_line,each,children_in_source_order,process_trailing_comments,current_comment_before?,associate_and_advance_comment,current_comment_before_end?,current_comment_decorates?,+,!,end_pos,<<,start_with?,text,=~'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Associator'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.map_using = $proto.mapping = $proto.skip_directives = $proto.ast = $proto.current_comment = $proto.comment_num = $proto.comments = nil; + + self.$attr_accessor("skip_directives"); + + $def(self, '$initialize', function $$initialize(ast, comments) { + var self = this; + + + self.ast = ast; + self.comments = comments; + return (self.skip_directives = true); + }, 2); + + $def(self, '$associate', function $$associate() { + var self = this; + + + self.map_using = "eql"; + return self.$do_associate(); + }, 0); + + $def(self, '$associate_locations', function $$associate_locations() { + var self = this; + + + self.map_using = "location"; + return self.$do_associate(); + }, 0); + + $def(self, '$associate_by_identity', function $$associate_by_identity() { + var self = this; + + + self.map_using = "identity"; + return self.$do_associate(); + }, 0); + self.$private(); + $const_set($nesting[0], 'POSTFIX_TYPES', $$('Set')['$[]']("if", "while", "while_post", "until", "until_post", "masgn").$freeze()); + + $def(self, '$children_in_source_order', function $$children_in_source_order(node) { + + if ($truthy($$('POSTFIX_TYPES')['$include?'](node.$type()))) { + return $send(node.$children().$compact(), 'sort_by', [], function $$1(child){ + + + if (child == null) child = nil;; + return child.$loc().$expression().$begin_pos();}, 1) + } else { + return $send(node.$children(), 'select', [], function $$2(child){var $ret_or_1 = nil, $ret_or_2 = nil; + + + + if (child == null) child = nil;; + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = child['$is_a?']($$$($$('AST'), 'Node')))) ? (child.$loc()) : ($ret_or_2))))) { + return child.$loc().$expression() + } else { + return $ret_or_1 + };}, 1) + } + }, 1); + + $def(self, '$do_associate', function $$do_associate() { + var self = this; + + + self.mapping = $send($$('Hash'), 'new', [], function $$3(h, k){var $writer = nil; + + + + if (h == null) h = nil;; + + if (k == null) k = nil;; + $writer = [k, []]; + $send(h, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 2); + if ($eqeq(self.map_using, "identity")) { + self.mapping.$compare_by_identity() + }; + self.comment_num = -1; + self.$advance_comment(); + if ($truthy(self.skip_directives)) { + self.$advance_through_directives() + }; + if ($truthy(self.ast)) { + self.$visit(self.ast) + }; + return self.mapping; + }, 0); + + $def(self, '$visit', function $$visit(node) { + var self = this, node_loc = nil; + + + self.$process_leading_comments(node); + if (!$truthy(self.current_comment)) { + return nil + }; + node_loc = node.$location(); + if (($truthy($rb_le(self.current_comment.$location().$line(), node_loc.$last_line())) || ($truthy(node_loc['$is_a?']($$$($$('Map'), 'Heredoc')))))) { + + $send(self.$children_in_source_order(node), 'each', [], function $$4(child){var self = $$4.$$s == null ? this : $$4.$$s; + + + + if (child == null) child = nil;; + return self.$visit(child);}, {$$arity: 1, $$s: self}); + return self.$process_trailing_comments(node); + } else { + return nil + }; + }, 1); + + $def(self, '$process_leading_comments', function $$process_leading_comments(node) { + var $a, self = this; + + + if ($eqeq(node.$type(), "begin")) { + return nil + }; + while ($truthy(self['$current_comment_before?'](node))) { + self.$associate_and_advance_comment(node) + }; + }, 1); + + $def(self, '$process_trailing_comments', function $$process_trailing_comments(node) { + var $a, self = this; + + + while ($truthy(self['$current_comment_before_end?'](node))) { + self.$associate_and_advance_comment(node) + }; + while ($truthy(self['$current_comment_decorates?'](node))) { + self.$associate_and_advance_comment(node) + }; + }, 1); + + $def(self, '$advance_comment', function $$advance_comment() { + var self = this; + + + self.comment_num = $rb_plus(self.comment_num, 1); + return (self.current_comment = self.comments['$[]'](self.comment_num)); + }, 0); + + $def(self, '$current_comment_before?', function $Associator_current_comment_before$ques$5(node) { + var self = this, comment_loc = nil, node_loc = nil; + + + if ($not(self.current_comment)) { + return false + }; + comment_loc = self.current_comment.$location().$expression(); + node_loc = node.$location().$expression(); + return $rb_le(comment_loc.$end_pos(), node_loc.$begin_pos()); + }, 1); + + $def(self, '$current_comment_before_end?', function $Associator_current_comment_before_end$ques$6(node) { + var self = this, comment_loc = nil, node_loc = nil; + + + if ($not(self.current_comment)) { + return false + }; + comment_loc = self.current_comment.$location().$expression(); + node_loc = node.$location().$expression(); + return $rb_le(comment_loc.$end_pos(), node_loc.$end_pos()); + }, 1); + + $def(self, '$current_comment_decorates?', function $Associator_current_comment_decorates$ques$7(node) { + var self = this; + + + if ($not(self.current_comment)) { + return false + }; + return self.current_comment.$location().$line()['$=='](node.$location().$last_line()); + }, 1); + + $def(self, '$associate_and_advance_comment', function $$associate_and_advance_comment(node) { + var self = this, key = nil; + + + key = ($eqeq(self.map_using, "location") ? (node.$location()) : (node)); + self.mapping['$[]'](key)['$<<'](self.current_comment); + return self.$advance_comment(); + }, 1); + $const_set($nesting[0], 'MAGIC_COMMENT_RE', /^#\s*(-\*-|)\s*(frozen_string_literal|warn_indent|warn_past_scope):.*\1$/); + return $def(self, '$advance_through_directives', function $$advance_through_directives() { + var self = this; + + + if (($truthy(self.current_comment) && ($truthy(self.current_comment.$text()['$start_with?']("#!".$freeze()))))) { + self.$advance_comment() + }; + if (($truthy(self.current_comment) && ($truthy(self.current_comment.$text()['$=~']($$('MAGIC_COMMENT_RE')))))) { + self.$advance_comment() + }; + if (($truthy(self.current_comment) && ($truthy(self.current_comment.$text()['$=~']($$$($$('Buffer'), 'ENCODING_RE')))))) { + return self.$advance_comment() + } else { + return nil + }; + }, 0); + })($$('Comment'), null, $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $gvars = Opal.gvars, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $rb_plus = Opal.rb_plus, $truthy = Opal.truthy, $not = Opal.not, $neqeq = Opal.neqeq, $rb_le = Opal.rb_le, $rb_ge = Opal.rb_ge, $rb_lt = Opal.rb_lt, $hash2 = Opal.hash2, $const_set = Opal.const_set; + + Opal.add_stubs('attr_reader,warn_of_deprecation,class,new,lambda,puts,render,consumer=,-,append,freeze,begin,end,+,in_transaction?,raise,dup,source,each,sort,begin_pos,range,length,replacement,[]=,private,empty?,clobbered_insertion?,!,allow_multiple_insertions?,raise_clobber_error,record_insertion,adjacent_updates?,find,overlaps?,replace_compatible_with_insertion?,merge_actions!,<<,active_queue,adjacent_insertions?,merge_actions,delete,can_merge?,record_replace,|,active_insertions,active_insertions=,active_clobber,clobbered_position_mask,active_clobber=,size,!=,&,<=,end_pos,adjacent_insertion_mask,select,adjacent?,adjacent_position_mask,>=,==,[],all?,intersect,nil?,max,sort_by,push,join,first,max_by,merge_replacements,replace_actions,disjoint?,<,process,extend'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Rewriter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.diagnostics = $proto.insert_before_multi_order = $proto.insert_after_multi_order = $proto.source_buffer = $proto.queue = $proto.clobber = $proto.insertions = $proto.pending_queue = $proto.pending_clobber = $proto.pending_insertions = nil; + + self.$attr_reader("source_buffer"); + self.$attr_reader("diagnostics"); + + $def(self, '$initialize', function $$initialize(source_buffer) { + var self = this, $writer = nil; + + + self.$class().$warn_of_deprecation(); + self.diagnostics = $$$($$('Diagnostic'), 'Engine').$new(); + + $writer = [$send(self, 'lambda', [], function $$1(diag){ if ($gvars.stderr == null) $gvars.stderr = nil; + + + + if (diag == null) diag = nil;; + return $gvars.stderr.$puts(diag.$render());}, 1)]; + $send(self.diagnostics, 'consumer=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.source_buffer = source_buffer; + self.queue = []; + self.clobber = 0; + self.insertions = 0; + self.insert_before_multi_order = 0; + self.insert_after_multi_order = 0; + self.pending_queue = nil; + self.pending_clobber = nil; + return (self.pending_insertions = nil); + }, 1); + + $def(self, '$remove', function $$remove(range) { + var self = this; + + return self.$append($$$($$('Rewriter'), 'Action').$new(range, "".$freeze())) + }, 1); + + $def(self, '$insert_before', function $$insert_before(range, content) { + var self = this; + + return self.$append($$$($$('Rewriter'), 'Action').$new(range.$begin(), content)) + }, 2); + + $def(self, '$wrap', function $$wrap(range, before, after) { + var self = this; + + + self.$append($$$($$('Rewriter'), 'Action').$new(range.$begin(), before)); + return self.$append($$$($$('Rewriter'), 'Action').$new(range.$end(), after)); + }, 3); + + $def(self, '$insert_before_multi', function $$insert_before_multi(range, content) { + var self = this; + + + self.insert_before_multi_order = $rb_minus(self.insert_before_multi_order, 1); + return self.$append($$$($$('Rewriter'), 'Action').$new(range.$begin(), content, true, self.insert_before_multi_order)); + }, 2); + + $def(self, '$insert_after', function $$insert_after(range, content) { + var self = this; + + return self.$append($$$($$('Rewriter'), 'Action').$new(range.$end(), content)) + }, 2); + + $def(self, '$insert_after_multi', function $$insert_after_multi(range, content) { + var self = this; + + + self.insert_after_multi_order = $rb_plus(self.insert_after_multi_order, 1); + return self.$append($$$($$('Rewriter'), 'Action').$new(range.$end(), content, true, self.insert_after_multi_order)); + }, 2); + + $def(self, '$replace', function $$replace(range, content) { + var self = this; + + return self.$append($$$($$('Rewriter'), 'Action').$new(range, content)) + }, 2); + + $def(self, '$process', function $$process() { + var self = this, adjustment = nil, source = nil; + + + if ($truthy(self['$in_transaction?']())) { + self.$raise("Do not call " + (self.$class()) + "#" + ("process") + " inside a transaction") + }; + adjustment = 0; + source = self.source_buffer.$source().$dup(); + $send(self.queue.$sort(), 'each', [], function $$2(action){var begin_pos = nil, end_pos = nil, $writer = nil; + + + + if (action == null) action = nil;; + begin_pos = $rb_plus(action.$range().$begin_pos(), adjustment); + end_pos = $rb_plus(begin_pos, action.$range().$length()); + + $writer = [Opal.Range.$new(begin_pos,end_pos, true), action.$replacement()]; + $send(source, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return (adjustment = $rb_plus(adjustment, $rb_minus(action.$replacement().$length(), action.$range().$length())));}, 1); + return source; + }, 0); + + $def(self, '$transaction', function $$transaction() { + var $yield = $$transaction.$$p || nil, self = this; + + delete $$transaction.$$p; + return (function() { try { + + if (!($yield !== nil)) { + self.$raise("" + (self.$class()) + "#" + ("transaction") + " requires block") + }; + if ($truthy(self['$in_transaction?']())) { + self.$raise("Nested transaction is not supported") + }; + self.pending_queue = self.queue.$dup(); + self.pending_clobber = self.clobber; + self.pending_insertions = self.insertions; + Opal.yieldX($yield, []); + self.queue = self.pending_queue; + self.clobber = self.pending_clobber; + self.insertions = self.pending_insertions; + return self; + } finally { + ((self.pending_queue = nil), (self.pending_clobber = nil), (self.pending_insertions = nil)) + }; })() + }, 0); + self.$private(); + + $def(self, '$append', function $$append(action) { + var self = this, range = nil, conflicting = nil, adjacent = nil, insertions = nil; + + + range = action.$range(); + if ($truthy(range['$empty?']())) { + + if ($truthy(action.$replacement()['$empty?']())) { + return self + }; + if (($not(action['$allow_multiple_insertions?']()) && ($truthy((conflicting = self['$clobbered_insertion?'](range)))))) { + self.$raise_clobber_error(action, [conflicting]) + }; + self.$record_insertion(range); + if ($truthy((adjacent = self['$adjacent_updates?'](range)))) { + + conflicting = $send(adjacent, 'find', [], function $$3(a){var self = $$3.$$s == null ? this : $$3.$$s, $ret_or_1 = nil; + + + + if (a == null) a = nil;; + if ($truthy(($ret_or_1 = a.$range()['$overlaps?'](range)))) { + return self['$replace_compatible_with_insertion?'](a, action)['$!']() + } else { + return $ret_or_1 + };}, {$$arity: 1, $$s: self}); + if ($truthy(conflicting)) { + self.$raise_clobber_error(action, [conflicting]) + }; + self['$merge_actions!'](action, adjacent); + } else { + self.$active_queue()['$<<'](action) + }; + } else { + + if ($truthy((insertions = self['$adjacent_insertions?'](range)))) { + $send(insertions, 'each', [], function $$4(insertion){var self = $$4.$$s == null ? this : $$4.$$s; + + + + if (insertion == null) insertion = nil;; + if (($truthy(range['$overlaps?'](insertion.$range())) && ($not(self['$replace_compatible_with_insertion?'](action, insertion))))) { + return self.$raise_clobber_error(action, [insertion]) + } else { + + action = self.$merge_actions(action, [insertion]); + return self.$active_queue().$delete(insertion); + };}, {$$arity: 1, $$s: self}) + }; + if ($truthy((adjacent = self['$adjacent_updates?'](range)))) { + if ($truthy(self['$can_merge?'](action, adjacent))) { + + self.$record_replace(range); + self['$merge_actions!'](action, adjacent); + } else { + self.$raise_clobber_error(action, adjacent) + } + } else { + + self.$record_replace(range); + self.$active_queue()['$<<'](action); + }; + }; + return self; + }, 1); + + $def(self, '$record_insertion', function $$record_insertion(range) { + var self = this, $writer = nil; + + + $writer = [self.$active_insertions()['$|']((1)['$<<'](range.$begin_pos()))]; + $send(self, 'active_insertions=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }, 1); + + $def(self, '$record_replace', function $$record_replace(range) { + var self = this, $writer = nil; + + + $writer = [self.$active_clobber()['$|'](self.$clobbered_position_mask(range))]; + $send(self, 'active_clobber=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }, 1); + + $def(self, '$clobbered_position_mask', function $$clobbered_position_mask(range) { + + return $rb_minus((1)['$<<'](range.$size()), 1)['$<<'](range.$begin_pos()) + }, 1); + + $def(self, '$adjacent_position_mask', function $$adjacent_position_mask(range) { + + return $rb_minus((1)['$<<']($rb_plus(range.$size(), 2)), 1)['$<<']($rb_minus(range.$begin_pos(), 1)) + }, 1); + + $def(self, '$adjacent_insertion_mask', function $$adjacent_insertion_mask(range) { + + return $rb_minus((1)['$<<']($rb_plus(range.$size(), 1)), 1)['$<<'](range.$begin_pos()) + }, 1); + + $def(self, '$clobbered_insertion?', function $Rewriter_clobbered_insertion$ques$5(insertion) { + var self = this, insertion_pos = nil; + + + insertion_pos = insertion.$begin_pos(); + if ($neqeq(self.$active_insertions()['$&']((1)['$<<'](insertion_pos)), 0)) { + return $send(self.$active_queue(), 'find', [], function $$6(a){var $ret_or_1 = nil; + + + + if (a == null) a = nil;; + if ($truthy(($ret_or_1 = $rb_le(a.$range().$begin_pos(), insertion_pos)))) { + return $rb_le(insertion_pos, a.$range().$end_pos()) + } else { + return $ret_or_1 + };}, 1) + } else { + return nil + }; + }, 1); + + $def(self, '$adjacent_insertions?', function $Rewriter_adjacent_insertions$ques$7(range) { + var self = this, result = nil; + + if ($neqeq(self.$active_insertions()['$&'](self.$adjacent_insertion_mask(range)), 0)) { + + result = $send(self.$active_queue(), 'select', [], function $$8(a){var self = $$8.$$s == null ? this : $$8.$$s, $ret_or_1 = nil; + + + + if (a == null) a = nil;; + if ($truthy(($ret_or_1 = a.$range()['$empty?']()))) { + return self['$adjacent?'](range, a.$range()) + } else { + return $ret_or_1 + };}, {$$arity: 1, $$s: self}); + if ($truthy(result['$empty?']())) { + return nil + } else { + return result + }; + } else { + return nil + } + }, 1); + + $def(self, '$adjacent_updates?', function $Rewriter_adjacent_updates$ques$9(range) { + var self = this; + + if ($neqeq(self.$active_clobber()['$&'](self.$adjacent_position_mask(range)), 0)) { + return $send(self.$active_queue(), 'select', [], function $$10(a){var self = $$10.$$s == null ? this : $$10.$$s; + + + + if (a == null) a = nil;; + return self['$adjacent?'](range, a.$range());}, {$$arity: 1, $$s: self}) + } else { + return nil + } + }, 1); + + $def(self, '$replace_compatible_with_insertion?', function $Rewriter_replace_compatible_with_insertion$ques$11(replace, insertion) { + var $ret_or_1 = nil, $ret_or_2 = nil, offset = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = $rb_ge($rb_minus(replace.$replacement().$length(), replace.$range().$size()), insertion.$range().$size()))) ? ((offset = $rb_minus(insertion.$range().$begin_pos(), replace.$range().$begin_pos()))) : ($ret_or_2))))) { + return replace.$replacement()['$[]'](offset, insertion.$replacement().$length())['$=='](insertion.$replacement()) + } else { + return $ret_or_1 + } + }, 2); + + $def(self, '$can_merge?', function $Rewriter_can_merge$ques$12(action, existing) { + var range = nil; + + + range = action.$range(); + return $send(existing, 'all?', [], function $$13(other){var overlap = nil, repl1_offset = nil, repl2_offset = nil, repl1_length = nil, repl2_length = nil, replacement1 = nil, $ret_or_1 = nil, replacement2 = nil; + + + + if (other == null) other = nil;; + overlap = range.$intersect(other.$range()); + if ($truthy(overlap['$nil?']())) { + return true; + }; + repl1_offset = $rb_minus(overlap.$begin_pos(), range.$begin_pos()); + repl2_offset = $rb_minus(overlap.$begin_pos(), other.$range().$begin_pos()); + repl1_length = [$rb_minus(other.$range().$length(), repl2_offset), $rb_minus(other.$replacement().$length(), repl2_offset)].$max(); + repl2_length = [$rb_minus(range.$length(), repl1_offset), $rb_minus(action.$replacement().$length(), repl1_offset)].$max(); + replacement1 = ($truthy(($ret_or_1 = action.$replacement()['$[]'](repl1_offset, repl1_length))) ? ($ret_or_1) : ("".$freeze())); + replacement2 = ($truthy(($ret_or_1 = other.$replacement()['$[]'](repl2_offset, repl2_length))) ? ($ret_or_1) : ("".$freeze())); + return replacement1['$=='](replacement2);}, 1); + }, 2); + + $def(self, '$merge_actions', function $$merge_actions(action, existing) { + var self = this, actions = nil, range = nil; + + + actions = $send(existing.$push(action), 'sort_by', [], function $$14(a){ + + + if (a == null) a = nil;; + return [a.$range().$begin_pos(), a.$range().$end_pos()];}, 1); + range = actions.$first().$range().$join($send(actions, 'max_by', [], function $$15(a){ + + + if (a == null) a = nil;; + return a.$range().$end_pos();}, 1).$range()); + return $$$($$('Rewriter'), 'Action').$new(range, self.$merge_replacements(actions)); + }, 2); + + $def(self, '$merge_actions!', function $Rewriter_merge_actions$excl$16(action, existing) { + var self = this, new_action = nil; + + + new_action = self.$merge_actions(action, existing); + self.$active_queue().$delete(action); + return self.$replace_actions(existing, new_action); + }, 2); + + $def(self, '$merge_replacements', function $$merge_replacements(actions) { + var result = nil, prev_act = nil; + + + result = "".$dup(); + prev_act = nil; + $send(actions, 'each', [], function $$17(act){var prev_end = nil, offset = nil; + + + + if (act == null) act = nil;; + if (($not(prev_act) || ($truthy(act.$range()['$disjoint?'](prev_act.$range()))))) { + result['$<<'](act.$replacement()) + } else { + + prev_end = [$rb_plus(prev_act.$range().$begin_pos(), prev_act.$replacement().$length()), prev_act.$range().$end_pos()].$max(); + offset = $rb_minus(prev_end, act.$range().$begin_pos()); + if ($truthy($rb_lt(offset, act.$replacement().$size()))) { + result['$<<'](act.$replacement()['$[]'](Opal.Range.$new(offset, -1, false))) + }; + }; + return (prev_act = act);}, 1); + return result; + }, 1); + + $def(self, '$replace_actions', function $$replace_actions(old, updated) { + var self = this; + + + $send(old, 'each', [], function $$18(act){var self = $$18.$$s == null ? this : $$18.$$s; + + + + if (act == null) act = nil;; + return self.$active_queue().$delete(act);}, {$$arity: 1, $$s: self}); + return self.$active_queue()['$<<'](updated); + }, 2); + + $def(self, '$raise_clobber_error', function $$raise_clobber_error(action, existing) { + var self = this, diagnostic = nil; + + + diagnostic = $$('Diagnostic').$new("error", "invalid_action", $hash2(["action"], {"action": action}), action.$range()); + self.diagnostics.$process(diagnostic); + diagnostic = $$('Diagnostic').$new("note", "clobbered", $hash2(["action"], {"action": existing['$[]'](0)}), existing['$[]'](0).$range()); + self.diagnostics.$process(diagnostic); + return self.$raise($$('ClobberingError'), "Parser::Source::Rewriter detected clobbering"); + }, 2); + + $def(self, '$in_transaction?', function $Rewriter_in_transaction$ques$19() { + var self = this; + + return self.pending_queue['$nil?']()['$!']() + }, 0); + + $def(self, '$active_queue', function $$active_queue() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.pending_queue))) { + return $ret_or_1 + } else { + return self.queue + } + }, 0); + + $def(self, '$active_clobber', function $$active_clobber() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.pending_clobber))) { + return $ret_or_1 + } else { + return self.clobber + } + }, 0); + + $def(self, '$active_insertions', function $$active_insertions() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.pending_insertions))) { + return $ret_or_1 + } else { + return self.insertions + } + }, 0); + + $def(self, '$active_clobber=', function $Rewriter_active_clobber$eq$20(value) { + var self = this; + + if ($truthy(self.pending_clobber)) { + return (self.pending_clobber = value) + } else { + return (self.clobber = value) + } + }, 1); + + $def(self, '$active_insertions=', function $Rewriter_active_insertions$eq$21(value) { + var self = this; + + if ($truthy(self.pending_insertions)) { + return (self.pending_insertions = value) + } else { + return (self.insertions = value) + } + }, 1); + + $def(self, '$adjacent?', function $Rewriter_adjacent$ques$22(range1, range2) { + var $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = $rb_le(range1.$begin_pos(), range2.$end_pos())))) { + return $rb_le(range2.$begin_pos(), range1.$end_pos()) + } else { + return $ret_or_1 + } + }, 2); + $const_set($nesting[0], 'DEPRECATION_WARNING', ["Parser::Source::Rewriter is deprecated.", "Please update your code to use Parser::Source::TreeRewriter instead"].$join("\n").$freeze()); + return self.$extend($$('Deprecation')); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/rewriter/action"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $eqeq = Opal.eqeq; + + Opal.add_stubs('include,attr_reader,alias_method,freeze,<=>,begin_pos,range,zero?,order,empty?,==,length,inspect'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Action'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.replacement = $proto.range = nil; + + self.$include($$('Comparable')); + self.$attr_reader("range", "replacement", "allow_multiple_insertions", "order"); + self.$alias_method("allow_multiple_insertions?", "allow_multiple_insertions"); + + $def(self, '$initialize', function $$initialize(range, replacement, allow_multiple_insertions, order) { + var self = this; + + + + if (replacement == null) replacement = "";; + + if (allow_multiple_insertions == null) allow_multiple_insertions = false;; + + if (order == null) order = 0;; + self.range = range; + self.replacement = replacement; + self.allow_multiple_insertions = allow_multiple_insertions; + self.order = order; + return self.$freeze(); + }, -2); + + $def(self, '$<=>', function $Action_$lt_eq_gt$1(other) { + var self = this, result = nil; + + + result = self.$range().$begin_pos()['$<=>'](other.$range().$begin_pos()); + if (!$truthy(result['$zero?']())) { + return result + }; + return self.$order()['$<=>'](other.$order()); + }, 1); + return $def(self, '$to_s', function $$to_s() { + var self = this; + + if (($eqeq(self.range.$length(), 0) && ($truthy(self.replacement['$empty?']())))) { + return "do nothing" + } else if ($eqeq(self.range.$length(), 0)) { + return "insert " + (self.replacement.$inspect()) + } else if ($truthy(self.replacement['$empty?']())) { + return "remove " + (self.range.$length()) + " character(s)" + } else { + return "replace " + (self.range.$length()) + " character(s) with " + (self.replacement.$inspect()) + } + }, 0); + })($$('Rewriter'), null, $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/tree_rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $lambda = Opal.lambda, $gvars = Opal.gvars, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $const_set = Opal.const_set, $eqeqeq = Opal.eqeqeq, $range = Opal.range, $to_ary = Opal.to_ary, $hash = Opal.hash, $rb_gt = Opal.rb_gt, $rb_lt = Opal.rb_lt, $slice = Opal.slice; + + Opal.add_stubs('attr_reader,new,puts,render,consumer=,-,freeze,check_policy_validity,method,adjust,source_range,empty?,==,source_buffer,raise,combine,action_root,merge!,dup,contract,+,begin_pos,range,end_pos,check_range_validity,moved,to_s,replace,wrap,source,each,ordered_replacements,<<,[],length,join,nested_actions,class,name,action_summary,warn_of_deprecation,insert_before,insert_after,extend,protected,private,as_replacements,===,size,first,map,to_range,inspect,values,>,<,trigger_policy,process'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'TreeRewriter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.diagnostics = $proto.source_buffer = $proto.enforcer = $proto.action_root = $proto.in_transaction = $proto.policy = nil; + + self.$attr_reader("source_buffer"); + self.$attr_reader("diagnostics"); + + $def(self, '$initialize', function $$initialize(source_buffer, $kwargs) { + var crossing_deletions, different_replacements, swallowed_insertions, self = this, $writer = nil, all_encompassing_range = nil; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + crossing_deletions = $kwargs.$$smap["crossing_deletions"]; + if (crossing_deletions == null) crossing_deletions = "accept"; + + different_replacements = $kwargs.$$smap["different_replacements"]; + if (different_replacements == null) different_replacements = "accept"; + + swallowed_insertions = $kwargs.$$smap["swallowed_insertions"]; + if (swallowed_insertions == null) swallowed_insertions = "accept"; + self.diagnostics = $$$($$('Diagnostic'), 'Engine').$new(); + + $writer = [$lambda(function $$1(diag){ if ($gvars.stderr == null) $gvars.stderr = nil; + + + + if (diag == null) diag = nil;; + return $gvars.stderr.$puts(diag.$render());}, 1)]; + $send(self.diagnostics, 'consumer=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.source_buffer = source_buffer; + self.in_transaction = false; + self.policy = $hash2(["crossing_deletions", "different_replacements", "swallowed_insertions"], {"crossing_deletions": crossing_deletions, "different_replacements": different_replacements, "swallowed_insertions": swallowed_insertions}).$freeze(); + self.$check_policy_validity(); + self.enforcer = self.$method("enforce_policy"); + all_encompassing_range = self.source_buffer.$source_range().$adjust($hash2(["begin_pos", "end_pos"], {"begin_pos": -1, "end_pos": 1})); + return (self.action_root = $$$($$('TreeRewriter'), 'Action').$new(all_encompassing_range, self.enforcer)); + }, -2); + + $def(self, '$empty?', function $TreeRewriter_empty$ques$2() { + var self = this; + + return self.action_root['$empty?']() + }, 0); + + $def(self, '$merge!', function $TreeRewriter_merge$excl$3(with$) { + var self = this; + + + if (!$eqeq(self.$source_buffer(), with$.$source_buffer())) { + self.$raise("TreeRewriter are not for the same source_buffer") + }; + self.action_root = self.action_root.$combine(with$.$action_root()); + return self; + }, 1); + + $def(self, '$merge', function $$merge(with$) { + var self = this; + + return self.$dup()['$merge!'](with$) + }, 1); + + $def(self, '$import!', function $TreeRewriter_import$excl$4(foreign_rewriter, $kwargs) { + var offset, self = this, contracted = nil, merge_effective_range = nil, merge_with = nil; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + offset = $kwargs.$$smap["offset"]; + if (offset == null) offset = 0; + if ($truthy(foreign_rewriter['$empty?']())) { + return self + }; + contracted = foreign_rewriter.$action_root().$contract(); + merge_effective_range = $$$($$$($$$('Parser'), 'Source'), 'Range').$new(self.source_buffer, $rb_plus(contracted.$range().$begin_pos(), offset), $rb_plus(contracted.$range().$end_pos(), offset)); + self.$check_range_validity(merge_effective_range); + merge_with = contracted.$moved(self.source_buffer, offset); + self.action_root = self.action_root.$combine(merge_with); + return self; + }, -2); + + $def(self, '$replace', function $$replace(range, content) { + var self = this; + + return self.$combine(range, $hash2(["replacement"], {"replacement": content})) + }, 2); + + $def(self, '$wrap', function $$wrap(range, insert_before, insert_after) { + var self = this; + + return self.$combine(range, $hash2(["insert_before", "insert_after"], {"insert_before": insert_before.$to_s(), "insert_after": insert_after.$to_s()})) + }, 3); + + $def(self, '$remove', function $$remove(range) { + var self = this; + + return self.$replace(range, "".$freeze()) + }, 1); + + $def(self, '$insert_before', function $$insert_before(range, content) { + var self = this; + + return self.$wrap(range, content, nil) + }, 2); + + $def(self, '$insert_after', function $$insert_after(range, content) { + var self = this; + + return self.$wrap(range, nil, content) + }, 2); + + $def(self, '$process', function $$process() { + var self = this, source = nil, chunks = nil, last_end = nil; + + + source = self.source_buffer.$source(); + chunks = []; + last_end = 0; + $send(self.action_root.$ordered_replacements(), 'each', [], function $$5(range, replacement){ + + + if (range == null) range = nil;; + + if (replacement == null) replacement = nil;; + chunks['$<<'](source['$[]'](Opal.Range.$new(last_end,range.$begin_pos(), true)))['$<<'](replacement); + return (last_end = range.$end_pos());}, 2); + chunks['$<<'](source['$[]'](Opal.Range.$new(last_end,source.$length(), true))); + return chunks.$join(); + }, 0); + + $def(self, '$as_replacements', function $$as_replacements() { + var self = this; + + return self.action_root.$ordered_replacements() + }, 0); + + $def(self, '$as_nested_actions', function $$as_nested_actions() { + var self = this; + + return self.action_root.$nested_actions() + }, 0); + + $def(self, '$transaction', function $$transaction() { + var $yield = $$transaction.$$p || nil, self = this, previous = nil, restore_root = nil; + + delete $$transaction.$$p; + return (function() { try { + + if (!($yield !== nil)) { + self.$raise("" + (self.$class()) + "#" + ("transaction") + " requires block") + }; + previous = self.in_transaction; + self.in_transaction = true; + restore_root = self.action_root; + Opal.yieldX($yield, []); + restore_root = nil; + return self; + } finally { + (($truthy(restore_root) ? ((self.action_root = restore_root)) : nil), (self.in_transaction = previous)) + }; })() + }, 0); + + $def(self, '$in_transaction?', function $TreeRewriter_in_transaction$ques$6() { + var self = this; + + return self.in_transaction + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return "#<" + (self.$class()) + " " + (self.$source_buffer().$name()) + ": " + (self.$action_summary()) + ">" + }, 0); + + $def(self, '$insert_before_multi', function $$insert_before_multi(range, text) { + var self = this; + + + self.$class().$warn_of_deprecation(); + return self.$insert_before(range, text); + }, 2); + + $def(self, '$insert_after_multi', function $$insert_after_multi(range, text) { + var self = this; + + + self.$class().$warn_of_deprecation(); + return self.$insert_after(range, text); + }, 2); + $const_set($nesting[0], 'DEPRECATION_WARNING', ["TreeRewriter#insert_before_multi and insert_before_multi exist only for legacy compatibility.", "Please update your code to use `wrap`, `insert_before` or `insert_after` instead."].$join("\n").$freeze()); + self.$extend($$('Deprecation')); + self.$protected(); + self.$attr_reader("action_root"); + self.$private(); + + $def(self, '$action_summary', function $$action_summary() { + var self = this, replacements = nil, $ret_or_1 = nil, suffix = nil, parts = nil; + + + replacements = self.$as_replacements(); + if ($eqeqeq(0, ($ret_or_1 = replacements.$size()))) { + return "empty" + } else if (!$eqeqeq($range(1, 3, false), $ret_or_1)) { + + replacements = replacements.$first(3); + suffix = "…"; + }; + parts = $send(replacements, 'map', [], function $$7($mlhs_tmp1){var $a, $b, range = nil, str = nil; + + + + if ($mlhs_tmp1 == null) $mlhs_tmp1 = nil;; + $b = $mlhs_tmp1, $a = $to_ary($b), (range = ($a[0] == null ? nil : $a[0])), (str = ($a[1] == null ? nil : $a[1])), $b; + if ($truthy(str['$empty?']())) { + return "-" + (range.$to_range()) + } else if ($eqeq(range.$size(), 0)) { + return "+" + (str.$inspect()) + "@" + (range.$begin_pos()) + } else { + return "^" + (str.$inspect()) + "@" + (range.$to_range()) + };}, {$$arity: 1, $$has_top_level_mlhs_arg: true}); + if ($truthy(suffix)) { + parts['$<<'](suffix) + }; + return parts.$join(", "); + }, 0); + $const_set($nesting[0], 'ACTIONS', ["accept", "warn", "raise"].$freeze()); + + $def(self, '$check_policy_validity', function $$check_policy_validity() { + var self = this, invalid = nil; + + + invalid = $rb_minus(self.policy.$values(), $$('ACTIONS')); + if ($truthy(invalid['$empty?']())) { + return nil + } else { + return self.$raise($$('ArgumentError'), "Invalid policy: " + (invalid.$join(", "))) + }; + }, 0); + + $def(self, '$combine', function $$combine(range, attributes) { + var self = this, action = nil; + + + range = self.$check_range_validity(range); + action = $$$($$('TreeRewriter'), 'Action').$new(range, self.enforcer, Opal.to_hash(attributes)); + self.action_root = self.action_root.$combine(action); + return self; + }, 2); + + $def(self, '$check_range_validity', function $$check_range_validity(range) { + var self = this; + + + if (($truthy($rb_lt(range.$begin_pos(), 0)) || ($truthy($rb_gt(range.$end_pos(), self.source_buffer.$source().$size()))))) { + self.$raise($$('IndexError'), "The range " + (range.$to_range()) + " is outside the bounds of the source") + }; + return range; + }, 1); + + $def(self, '$enforce_policy', function $$enforce_policy(event) { + var $yield = $$enforce_policy.$$p || nil, self = this, values = nil; + + delete $$enforce_policy.$$p; + + if ($eqeq(self.policy['$[]'](event), "accept")) { + return nil + }; + if (!$truthy((values = Opal.yieldX($yield, [])))) { + return nil + }; + return self.$trigger_policy(event, Opal.to_hash(values)); + }, 1); + $const_set($nesting[0], 'POLICY_TO_LEVEL', $hash2(["warn", "raise"], {"warn": "warning", "raise": "error"}).$freeze()); + return $def(self, '$trigger_policy', function $$trigger_policy(event, $kwargs) { + var range, conflict, arguments$, $a, $b, self = this, action = nil, $ret_or_1 = nil, diag = nil, highlights = nil; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + range = $kwargs.$$smap["range"]; + if (range == null) range = self.$raise(); + + conflict = $kwargs.$$smap["conflict"]; + if (conflict == null) conflict = nil; + + arguments$ = Opal.kwrestargs($kwargs, {'range': true,'conflict': true});; + action = ($truthy(($ret_or_1 = self.policy['$[]'](event))) ? ($ret_or_1) : ("raise")); + diag = $$$($$('Parser'), 'Diagnostic').$new($$('POLICY_TO_LEVEL')['$[]'](action), event, arguments$, range); + self.diagnostics.$process(diag); + if ($truthy(conflict)) { + + $b = conflict, $a = $to_ary($b), (range = ($a[0] == null ? nil : $a[0])), (highlights = $slice.call($a, 1)), $b; + diag = $$$($$('Parser'), 'Diagnostic').$new($$('POLICY_TO_LEVEL')['$[]'](action), "" + (event) + "_conflict", arguments$, range, highlights); + self.diagnostics.$process(diag); + }; + if ($eqeq(action, "raise")) { + return self.$raise($$$($$('Parser'), 'ClobberingError'), "Parser::Source::TreeRewriter detected clobbering") + } else { + return nil + }; + }, -2); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/tree_rewriter/action"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $not = Opal.not, $rb_plus = Opal.rb_plus, $eqeq = Opal.eqeq, $to_a = Opal.to_a, $rb_gt = Opal.rb_gt, $rb_minus = Opal.rb_minus, $rb_ge = Opal.rb_ge, $eqeqeq = Opal.eqeqeq, $rb_le = Opal.rb_le, $rb_lt = Opal.rb_lt, $neqeq = Opal.neqeq; + + Opal.add_stubs('attr_reader,freeze,empty?,do_combine,==,<<,begin,concat,flat_map,to_proc,end,!,insert_before,insert_after,replacement,raise,insertion?,with,begin_pos,range,first,children,end_pos,last,new,+,map,moved,protected,swallow,class,merge,place_in_hierarchy,analyse_hierarchy,[],fuse_deletions,combine_children,inject,size,bsearch,bsearch_child_index,>,-,>=,===,<=>,<=,check_fusible,<,shift,pop,compact!,each,call,call_enforcer_for_merge,!=,select'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Action'); + + var $proto = self.$$prototype; + + $proto.insert_before = $proto.insert_after = $proto.children = $proto.replacement = $proto.range = $proto.enforcer = nil; + + self.$attr_reader("range", "replacement", "insert_before", "insert_after"); + + $def(self, '$initialize', function $$initialize(range, enforcer, $kwargs) { + var insert_before, replacement, insert_after, children, $a, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + insert_before = $kwargs.$$smap["insert_before"]; + if (insert_before == null) insert_before = ""; + + replacement = $kwargs.$$smap["replacement"]; + if (replacement == null) replacement = nil; + + insert_after = $kwargs.$$smap["insert_after"]; + if (insert_after == null) insert_after = ""; + + children = $kwargs.$$smap["children"]; + if (children == null) children = []; + $a = [range, enforcer, children.$freeze(), insert_before.$freeze(), replacement, insert_after.$freeze()], (self.range = $a[0]), (self.enforcer = $a[1]), (self.children = $a[2]), (self.insert_before = $a[3]), (self.replacement = $a[4]), (self.insert_after = $a[5]), $a; + return self.$freeze(); + }, -3); + + $def(self, '$combine', function $$combine(action) { + var self = this; + + + if ($truthy(action['$empty?']())) { + return self + }; + return self.$do_combine(action); + }, 1); + + $def(self, '$empty?', function $Action_empty$ques$1() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = ($truthy(($ret_or_3 = self.insert_before['$empty?']())) ? (self.insert_after['$empty?']()) : ($ret_or_3)))) ? (self.children['$empty?']()) : ($ret_or_2))))) { + + if ($truthy(($ret_or_2 = self.replacement['$=='](nil)))) { + return $ret_or_2 + } else { + + if ($truthy(($ret_or_3 = self.replacement['$empty?']()))) { + return self.range['$empty?']() + } else { + return $ret_or_3 + }; + }; + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$ordered_replacements', function $$ordered_replacements() { + var self = this, reps = nil; + + + reps = []; + if (!$truthy(self.insert_before['$empty?']())) { + reps['$<<']([self.range.$begin(), self.insert_before]) + }; + if ($truthy(self.replacement)) { + reps['$<<']([self.range, self.replacement]) + }; + reps.$concat($send(self.children, 'flat_map', [], "ordered_replacements".$to_proc())); + if (!$truthy(self.insert_after['$empty?']())) { + reps['$<<']([self.range.$end(), self.insert_after]) + }; + return reps; + }, 0); + + $def(self, '$nested_actions', function $$nested_actions() { + var self = this, actions = nil; + + + actions = []; + if (($not(self.insert_before['$empty?']()) || ($not(self.insert_after['$empty?']())))) { + actions['$<<'](["wrap", self.range, self.insert_before, self.insert_after]) + }; + if ($truthy(self.replacement)) { + actions['$<<'](["replace", self.range, self.replacement]) + }; + return actions.$concat($send(self.children, 'flat_map', [], "nested_actions".$to_proc())); + }, 0); + + $def(self, '$insertion?', function $Action_insertion$ques$2() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.$insert_before()['$empty?']()['$!']())) ? ($ret_or_2) : (self.$insert_after()['$empty?']()['$!']()))))) { + return $ret_or_1 + } else { + + if ($truthy(($ret_or_2 = self.$replacement()))) { + return self.$replacement()['$empty?']()['$!']() + } else { + return $ret_or_2 + }; + } + }, 0); + + $def(self, '$contract', function $$contract() { + var self = this, range = nil; + + + if ($truthy(self['$empty?']())) { + self.$raise("Empty actions can not be contracted") + }; + if ($truthy(self['$insertion?']())) { + return self + }; + range = self.range.$with($hash2(["begin_pos", "end_pos"], {"begin_pos": self.$children().$first().$range().$begin_pos(), "end_pos": self.$children().$last().$range().$end_pos()})); + return self.$with($hash2(["range"], {"range": range})); + }, 0); + + $def(self, '$moved', function $$moved(source_buffer, offset) { + var self = this, moved_range = nil; + + + moved_range = $$$($$$($$$('Parser'), 'Source'), 'Range').$new(source_buffer, $rb_plus(self.range.$begin_pos(), offset), $rb_plus(self.range.$end_pos(), offset)); + return self.$with($hash2(["range", "children"], {"range": moved_range, "children": $send(self.$children(), 'map', [], function $$3(child){ + + + if (child == null) child = nil;; + return child.$moved(source_buffer, offset);}, 1)})); + }, 2); + self.$protected(); + self.$attr_reader("children"); + + $def(self, '$with', function $Action_with$4($kwargs) { + var range, enforcer, children, insert_before, replacement, insert_after, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + range = $kwargs.$$smap["range"]; + if (range == null) range = self.range; + + enforcer = $kwargs.$$smap["enforcer"]; + if (enforcer == null) enforcer = self.enforcer; + + children = $kwargs.$$smap["children"]; + if (children == null) children = self.children; + + insert_before = $kwargs.$$smap["insert_before"]; + if (insert_before == null) insert_before = self.insert_before; + + replacement = $kwargs.$$smap["replacement"]; + if (replacement == null) replacement = self.replacement; + + insert_after = $kwargs.$$smap["insert_after"]; + if (insert_after == null) insert_after = self.insert_after; + if ($truthy(replacement)) { + children = self.$swallow(children) + }; + return self.$class().$new(range, enforcer, $hash2(["children", "insert_before", "replacement", "insert_after"], {"children": children, "insert_before": insert_before, "replacement": replacement, "insert_after": insert_after})); + }, -1); + + $def(self, '$do_combine', function $$do_combine(action) { + var self = this; + + if ($eqeq(action.$range(), self.range)) { + return self.$merge(action) + } else { + return self.$place_in_hierarchy(action) + } + }, 1); + + $def(self, '$place_in_hierarchy', function $$place_in_hierarchy(action) { + var self = this, family = nil, extra_sibbling = nil; + + + family = self.$analyse_hierarchy(action); + if ($truthy(family['$[]']("fusible"))) { + return self.$fuse_deletions(action, family['$[]']("fusible"), [].concat($to_a(family['$[]']("sibbling_left"))).concat($to_a(family['$[]']("child"))).concat($to_a(family['$[]']("sibbling_right")))) + } else { + + extra_sibbling = ($truthy(family['$[]']("parent")) ? (family['$[]']("parent").$do_combine(action)) : ($truthy(family['$[]']("child")) ? (action.$with($hash2(["children", "enforcer"], {"children": family['$[]']("child"), "enforcer": self.enforcer})).$combine_children(action.$children())) : (action))); + return self.$with($hash2(["children"], {"children": [].concat($to_a(family['$[]']("sibbling_left"))).concat([extra_sibbling]).concat($to_a(family['$[]']("sibbling_right")))})); + }; + }, 1); + + $def(self, '$combine_children', function $$combine_children(more_children) { + var self = this; + + return $send(more_children, 'inject', [self], function $$5(parent, new_child){ + + + if (parent == null) parent = nil;; + + if (new_child == null) new_child = nil;; + return parent.$place_in_hierarchy(new_child);}, 2) + }, 1); + + $def(self, '$fuse_deletions', function $$fuse_deletions(action, fusible, other_sibblings) { + var self = this, without_fusible = nil, fused_range = nil, fused_deletion = nil; + + + without_fusible = self.$with($hash2(["children"], {"children": other_sibblings})); + fused_range = $send([action].concat($to_a(fusible)), 'map', [], "range".$to_proc()).$inject("join"); + fused_deletion = action.$with($hash2(["range"], {"range": fused_range})); + return without_fusible.$do_combine(fused_deletion); + }, 3); + + $def(self, '$bsearch_child_index', function $$bsearch_child_index(from) { + var $yield = $$bsearch_child_index.$$p || nil, self = this, size = nil, $ret_or_1 = nil; + + delete $$bsearch_child_index.$$p; + + + if (from == null) from = 0;; + size = self.children.$size(); + if ($truthy(($ret_or_1 = $send(Opal.Range.$new(from,size, true), 'bsearch', [], function $$6(i){var self = $$6.$$s == null ? this : $$6.$$s; + if (self.children == null) self.children = nil; + + + + if (i == null) i = nil;; + return Opal.yield1($yield, self.children['$[]'](i));;}, {$$arity: 1, $$s: self})))) { + return $ret_or_1 + } else { + return size + }; + }, -1); + + $def(self, '$analyse_hierarchy', function $$analyse_hierarchy(action) { + var self = this, r = nil, left_index = nil, start = nil, right_index = nil, center = nil, $ret_or_1 = nil, parent = nil, overlap_left = nil, overlap_right = nil, contained = nil, fusible = nil; + + + r = action.$range(); + left_index = $send(self, 'bsearch_child_index', [], function $$7(child){ + + + if (child == null) child = nil;; + return $rb_gt(child.$range().$end_pos(), r.$begin_pos());}, 1); + start = ($eqeq(left_index, 0) ? (0) : ($rb_minus(left_index, 1))); + right_index = $send(self, 'bsearch_child_index', [start], function $$8(child){ + + + if (child == null) child = nil;; + return $rb_ge(child.$range().$begin_pos(), r.$end_pos());}, 1); + center = $rb_minus(right_index, left_index); + if (!$eqeqeq(0, ($ret_or_1 = center))) { + if ($eqeqeq(-1, $ret_or_1)) { + + left_index = $rb_minus(left_index, 1); + right_index = $rb_plus(right_index, 1); + parent = self.children['$[]'](left_index); + } else { + + overlap_left = self.children['$[]'](left_index).$range().$begin_pos()['$<=>'](r.$begin_pos()); + overlap_right = self.children['$[]']($rb_minus(right_index, 1)).$range().$end_pos()['$<=>'](r.$end_pos()); + if ((($eqeq(center, 1) && ($truthy($rb_le(overlap_left, 0)))) && ($truthy($rb_ge(overlap_right, 0))))) { + parent = self.children['$[]'](left_index) + } else { + + contained = self.children['$[]'](Opal.Range.$new(left_index,right_index, true)); + fusible = self.$check_fusible(action, ($truthy($rb_lt(overlap_left, 0)) ? (contained.$shift()) : nil), ($truthy($rb_gt(overlap_right, 0)) ? (contained.$pop()) : nil)); + }; + } + }; + return $hash2(["parent", "sibbling_left", "sibbling_right", "fusible", "child"], {"parent": parent, "sibbling_left": self.children['$[]'](Opal.Range.$new(0,left_index, true)), "sibbling_right": self.children['$[]'](Opal.Range.$new(right_index,self.children.$size(), true)), "fusible": fusible, "child": contained}); + }, 1); + + $def(self, '$check_fusible', function $$check_fusible(action, $a) { + var $post_args, fusible, self = this; + + + + $post_args = Opal.slice.call(arguments, 1); + + fusible = $post_args;; + fusible['$compact!'](); + if ($truthy(fusible['$empty?']())) { + return nil + }; + $send(fusible, 'each', [], function $$9(child){var self = $$9.$$s == null ? this : $$9.$$s, kind = nil; + if (self.enforcer == null) self.enforcer = nil; + + + + if (child == null) child = nil;; + kind = (($truthy(action['$insertion?']()) || ($truthy(child['$insertion?']()))) ? ("crossing_insertions") : ("crossing_deletions")); + return $send(self.enforcer, 'call', [kind], function $$10(){ + return $hash2(["range", "conflict"], {"range": action.$range(), "conflict": child.$range()})}, 0);}, {$$arity: 1, $$s: self}); + return fusible; + }, -2); + + $def(self, '$merge', function $$merge(action) { + var self = this, $ret_or_1 = nil; + + + self.$call_enforcer_for_merge(action); + return self.$with($hash2(["insert_before", "replacement", "insert_after"], {"insert_before": "" + (action.$insert_before()) + (self.$insert_before()), "replacement": ($truthy(($ret_or_1 = action.$replacement())) ? ($ret_or_1) : (self.replacement)), "insert_after": "" + (self.$insert_after()) + (action.$insert_after())})).$combine_children(action.$children()); + }, 1); + + $def(self, '$call_enforcer_for_merge', function $$call_enforcer_for_merge(action) { + var self = this; + + return $send(self.enforcer, 'call', ["different_replacements"], function $$11(){var self = $$11.$$s == null ? this : $$11.$$s; + if (self.replacement == null) self.replacement = nil; + if (self.range == null) self.range = nil; + + if ((($truthy(self.replacement) && ($truthy(action.$replacement()))) && ($neqeq(self.replacement, action.$replacement())))) { + return $hash2(["range", "replacement", "other_replacement"], {"range": self.range, "replacement": action.$replacement(), "other_replacement": self.replacement}) + } else { + return nil + }}, {$$arity: 0, $$s: self}) + }, 1); + return $def(self, '$swallow', function $$swallow(children) { + var self = this; + + + $send(self.enforcer, 'call', ["swallowed_insertions"], function $$12(){var self = $$12.$$s == null ? this : $$12.$$s, insertions = nil; + if (self.range == null) self.range = nil; + + + insertions = $send(children, 'select', [], "insertion?".$to_proc()); + if ($truthy(insertions['$empty?']())) { + return nil + } else { + return $hash2(["range", "conflict"], {"range": self.range, "conflict": $send(insertions, 'map', [], "range".$to_proc())}) + };}, {$$arity: 0, $$s: self}); + return []; + }, 1); + })($$('TreeRewriter'), null) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2, $eqeq = Opal.eqeq, $range = Opal.range, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus; + + Opal.add_stubs('attr_reader,freeze,line,alias_method,column,last_line,last_column,with,update_expression,==,class,reduce,map,instance_variables,instance_variable_get,send,inject,to_sym,[],[]=,-,protected,tap,dup,to_proc'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Map'); + + var $proto = self.$$prototype; + + $proto.node = $proto.expression = nil; + + self.$attr_reader("node"); + self.$attr_reader("expression"); + + $def(self, '$initialize', function $$initialize(expression) { + var self = this; + + return (self.expression = expression) + }, 1); + + $def(self, '$initialize_copy', function $$initialize_copy(other) { + var $yield = $$initialize_copy.$$p || nil, self = this; + + delete $$initialize_copy.$$p; + + $send2(self, $find_super(self, 'initialize_copy', $$initialize_copy, false, true), 'initialize_copy', [other], $yield); + return (self.node = nil); + }, 1); + + $def(self, '$node=', function $Map_node$eq$1(node) { + var self = this; + + + self.node = node; + self.$freeze(); + return self.node; + }, 1); + + $def(self, '$line', function $$line() { + var self = this; + + return self.expression.$line() + }, 0); + self.$alias_method("first_line", "line"); + + $def(self, '$column', function $$column() { + var self = this; + + return self.expression.$column() + }, 0); + + $def(self, '$last_line', function $$last_line() { + var self = this; + + return self.expression.$last_line() + }, 0); + + $def(self, '$last_column', function $$last_column() { + var self = this; + + return self.expression.$last_column() + }, 0); + + $def(self, '$with_expression', function $$with_expression(expression_l) { + var self = this; + + return $send(self, 'with', [], function $$2(map){ + + + if (map == null) map = nil;; + return map.$update_expression(expression_l);}, 1) + }, 1); + + $def(self, '$==', function $Map_$eq_eq$3(other) { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = other.$class()['$=='](self.$class())))) { + return $send(self.$instance_variables(), 'map', [], function $$4(ivar){var self = $$4.$$s == null ? this : $$4.$$s; + + + + if (ivar == null) ivar = nil;; + return self.$instance_variable_get(ivar)['$=='](other.$send("instance_variable_get", ivar));}, {$$arity: 1, $$s: self}).$reduce("&") + } else { + return $ret_or_1 + } + }, 1); + + $def(self, '$to_hash', function $$to_hash() { + var self = this; + + return $send(self.$instance_variables(), 'inject', [$hash2([], {})], function $$5(hash, ivar){var self = $$5.$$s == null ? this : $$5.$$s, $writer = nil; + + + + if (hash == null) hash = nil;; + + if (ivar == null) ivar = nil;; + if ($eqeq(ivar.$to_sym(), "@node")) { + return hash; + }; + + $writer = [ivar['$[]']($range(1, -1, false)).$to_sym(), self.$instance_variable_get(ivar)]; + $send(hash, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return hash;}, {$$arity: 2, $$s: self}) + }, 0); + self.$protected(); + + $def(self, '$with', function $Map_with$6() { + var block = $Map_with$6.$$p || nil, self = this; + + delete $Map_with$6.$$p; + + ; + return $send(self.$dup(), 'tap', [], block.$to_proc()); + }, 0); + return $def(self, '$update_expression', function $$update_expression(expression_l) { + var self = this; + + return (self.expression = expression_l) + }, 1); + })($nesting[0], null) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/operator"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Operator'); + + + + self.$attr_reader("operator"); + return $def(self, '$initialize', function $$initialize(operator, expression) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.operator = operator; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression], null); + }, 2); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/collection"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Collection'); + + + + self.$attr_reader("begin"); + self.$attr_reader("end"); + return $def(self, '$initialize', function $$initialize(begin_l, end_l, expression_l) { + var $a, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + $a = [begin_l, end_l], (self.begin = $a[0]), (self.end = $a[1]), $a; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression_l], null); + }, 3); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/constant"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $send = Opal.send; + + Opal.add_stubs('attr_reader,with,update_operator,protected'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Constant'); + + + + self.$attr_reader("double_colon"); + self.$attr_reader("name"); + self.$attr_reader("operator"); + + $def(self, '$initialize', function $$initialize(double_colon, name, expression) { + var $a, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + $a = [double_colon, name], (self.double_colon = $a[0]), (self.name = $a[1]), $a; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression], null); + }, 3); + + $def(self, '$with_operator', function $$with_operator(operator_l) { + var self = this; + + return $send(self, 'with', [], function $$1(map){ + + + if (map == null) map = nil;; + return map.$update_operator(operator_l);}, 1) + }, 1); + self.$protected(); + return $def(self, '$update_operator', function $$update_operator(operator_l) { + var self = this; + + return (self.operator = operator_l) + }, 1); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/variable"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $send = Opal.send; + + Opal.add_stubs('attr_reader,with,update_operator,protected'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Variable'); + + + + self.$attr_reader("name"); + self.$attr_reader("operator"); + + $def(self, '$initialize', function $$initialize(name_l, expression_l) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + if (expression_l == null) expression_l = name_l;; + self.name = name_l; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression_l], null); + }, -2); + + $def(self, '$with_operator', function $$with_operator(operator_l) { + var self = this; + + return $send(self, 'with', [], function $$1(map){ + + + if (map == null) map = nil;; + return map.$update_operator(operator_l);}, 1) + }, 1); + self.$protected(); + return $def(self, '$update_operator', function $$update_operator(operator_l) { + var self = this; + + return (self.operator = operator_l) + }, 1); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/keyword"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Keyword'); + + + + self.$attr_reader("keyword"); + self.$attr_reader("begin"); + self.$attr_reader("end"); + return $def(self, '$initialize', function $$initialize(keyword_l, begin_l, end_l, expression_l) { + var $a, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.keyword = keyword_l; + $a = [begin_l, end_l], (self.begin = $a[0]), (self.end = $a[1]), $a; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression_l], null); + }, 4); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/definition"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader,join'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Definition'); + + var $proto = self.$$prototype; + + $proto.keyword = $proto.end = nil; + + self.$attr_reader("keyword"); + self.$attr_reader("operator"); + self.$attr_reader("name"); + self.$attr_reader("end"); + return $def(self, '$initialize', function $$initialize(keyword_l, operator_l, name_l, end_l) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.keyword = keyword_l; + self.operator = operator_l; + self.name = name_l; + self.end = end_l; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [self.keyword.$join(self.end)], null); + }, 4); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/method_definition"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $truthy = Opal.truthy, $def = Opal.def; + + Opal.add_stubs('attr_reader,join'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'MethodDefinition'); + + var $proto = self.$$prototype; + + $proto.keyword = nil; + + self.$attr_reader("keyword"); + self.$attr_reader("operator"); + self.$attr_reader("name"); + self.$attr_reader("end"); + self.$attr_reader("assignment"); + return $def(self, '$initialize', function $$initialize(keyword_l, operator_l, name_l, end_l, assignment_l, body_l) { + var $yield = $$initialize.$$p || nil, self = this, $ret_or_1 = nil; + + delete $$initialize.$$p; + + self.keyword = keyword_l; + self.operator = operator_l; + self.name = name_l; + self.end = end_l; + self.assignment = assignment_l; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [self.keyword.$join(($truthy(($ret_or_1 = end_l)) ? ($ret_or_1) : (body_l)))], null); + }, 6); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/send"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $send = Opal.send; + + Opal.add_stubs('attr_reader,with,update_operator,protected'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Send'); + + + + self.$attr_reader("dot"); + self.$attr_reader("selector"); + self.$attr_reader("operator"); + self.$attr_reader("begin"); + self.$attr_reader("end"); + + $def(self, '$initialize', function $$initialize(dot_l, selector_l, begin_l, end_l, expression_l) { + var $a, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.dot = dot_l; + self.selector = selector_l; + $a = [begin_l, end_l], (self.begin = $a[0]), (self.end = $a[1]), $a; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression_l], null); + }, 5); + + $def(self, '$with_operator', function $$with_operator(operator_l) { + var self = this; + + return $send(self, 'with', [], function $$1(map){ + + + if (map == null) map = nil;; + return map.$update_operator(operator_l);}, 1) + }, 1); + self.$protected(); + return $def(self, '$update_operator', function $$update_operator(operator_l) { + var self = this; + + return (self.operator = operator_l) + }, 1); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/index"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $send = Opal.send; + + Opal.add_stubs('attr_reader,with,update_operator,protected'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Index'); + + + + self.$attr_reader("begin"); + self.$attr_reader("end"); + self.$attr_reader("operator"); + + $def(self, '$initialize', function $$initialize(begin_l, end_l, expression_l) { + var $a, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + $a = [begin_l, end_l], (self.begin = $a[0]), (self.end = $a[1]), $a; + self.operator = nil; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression_l], null); + }, 3); + + $def(self, '$with_operator', function $$with_operator(operator_l) { + var self = this; + + return $send(self, 'with', [], function $$1(map){ + + + if (map == null) map = nil;; + return map.$update_operator(operator_l);}, 1) + }, 1); + self.$protected(); + return $def(self, '$update_operator', function $$update_operator(operator_l) { + var self = this; + + return (self.operator = operator_l) + }, 1); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/condition"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Condition'); + + + + self.$attr_reader("keyword"); + self.$attr_reader("begin"); + self.$attr_reader("else"); + self.$attr_reader("end"); + return $def(self, '$initialize', function $$initialize(keyword_l, begin_l, else_l, end_l, expression_l) { + var $a, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.keyword = keyword_l; + $a = [begin_l, else_l, end_l], (self.begin = $a[0]), (self["else"] = $a[1]), (self.end = $a[2]), $a; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression_l], null); + }, 5); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/ternary"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Ternary'); + + + + self.$attr_reader("question"); + self.$attr_reader("colon"); + return $def(self, '$initialize', function $$initialize(question_l, colon_l, expression_l) { + var $a, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + $a = [question_l, colon_l], (self.question = $a[0]), (self.colon = $a[1]), $a; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression_l], null); + }, 3); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/for"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'For'); + + + + self.$attr_reader("keyword", "in"); + self.$attr_reader("begin", "end"); + return $def(self, '$initialize', function $$initialize(keyword_l, in_l, begin_l, end_l, expression_l) { + var $a, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + $a = [keyword_l, in_l], (self.keyword = $a[0]), (self["in"] = $a[1]), $a; + $a = [begin_l, end_l], (self.begin = $a[0]), (self.end = $a[1]), $a; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression_l], null); + }, 5); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/rescue_body"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'RescueBody'); + + + + self.$attr_reader("keyword"); + self.$attr_reader("assoc"); + self.$attr_reader("begin"); + return $def(self, '$initialize', function $$initialize(keyword_l, assoc_l, begin_l, expression_l) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.keyword = keyword_l; + self.assoc = assoc_l; + self.begin = begin_l; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression_l], null); + }, 4); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/heredoc"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Heredoc'); + + + + self.$attr_reader("heredoc_body"); + self.$attr_reader("heredoc_end"); + return $def(self, '$initialize', function $$initialize(begin_l, body_l, end_l) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.heredoc_body = body_l; + self.heredoc_end = end_l; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [begin_l], null); + }, 3); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/objc_kwarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ObjcKwarg'); + + + + self.$attr_reader("keyword"); + self.$attr_reader("operator"); + self.$attr_reader("argument"); + return $def(self, '$initialize', function $$initialize(keyword_l, operator_l, argument_l, expression_l) { + var $a, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + $a = [keyword_l, operator_l, argument_l], (self.keyword = $a[0]), (self.operator = $a[1]), (self.argument = $a[2]), $a; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression_l], null); + }, 4); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/syntax_error"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader,message'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'SyntaxError'); + + + + self.$attr_reader("diagnostic"); + return $def(self, '$initialize', function $$initialize(diagnostic) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.diagnostic = diagnostic; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [diagnostic.$message()], null); + }, 1); + })($nesting[0], $$('StandardError')) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/clobbering_error"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass; + + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return ($klass($nesting[0], $$('RuntimeError'), 'ClobberingError'), nil) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/diagnostic"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $truthy = Opal.truthy, $hash2 = Opal.hash2, $def = Opal.def, $eqeq = Opal.eqeq, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $to_ary = Opal.to_ary, $rb_gt = Opal.rb_gt, $rb_times = Opal.rb_times, $send = Opal.send, $to_a = Opal.to_a, $rb_ge = Opal.rb_ge, $not = Opal.not, $neqeq = Opal.neqeq; + + Opal.add_stubs('freeze,attr_reader,include?,raise,join,inspect,dup,compile,is?,==,line,last_line,+,message,render_line,first_line_only,last_line_only,-,source_buffer,decompose_position,end_pos,>,private,source_line,*,length,each,line_range,intersect,column_range,size,[]=,>=,!,map,name,!=,resize,=~,source,adjust'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Diagnostic'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.reason = $proto["arguments"] = $proto.location = $proto.level = $proto.highlights = nil; + + $const_set($nesting[0], 'LEVELS', ["note", "warning", "error", "fatal"].$freeze()); + self.$attr_reader("level", "reason", "arguments"); + self.$attr_reader("location", "highlights"); + + $def(self, '$initialize', function $$initialize(level, reason, arguments$, location, highlights) { + var self = this, $ret_or_1 = nil; + + + + if (highlights == null) highlights = [];; + if (!$truthy($$('LEVELS')['$include?'](level))) { + self.$raise($$('ArgumentError'), "" + ("Diagnostic#level must be one of " + ($$('LEVELS').$join(", ")) + "; ") + ("" + (level.$inspect()) + " provided.")) + }; + if (!$truthy(location)) { + self.$raise("Expected a location") + }; + self.level = level; + self.reason = reason; + self["arguments"] = ($truthy(($ret_or_1 = arguments$)) ? ($ret_or_1) : ($hash2([], {}))).$dup().$freeze(); + self.location = location; + self.highlights = highlights.$dup().$freeze(); + return self.$freeze(); + }, -5); + + $def(self, '$message', function $$message() { + var self = this; + + return $$('Messages').$compile(self.reason, self["arguments"]) + }, 0); + + $def(self, '$render', function $$render() { + var $a, $b, self = this, first_line = nil, last_line = nil, num_lines = nil, buffer = nil, last_lineno = nil, last_column = nil; + + if (($eqeq(self.location.$line(), self.location.$last_line()) || ($truthy(self.location['$is?']("\n"))))) { + return $rb_plus(["" + (self.location) + ": " + (self.level) + ": " + (self.$message())], self.$render_line(self.location)) + } else { + + first_line = self.$first_line_only(self.location); + last_line = self.$last_line_only(self.location); + num_lines = $rb_plus($rb_minus(self.location.$last_line(), self.location.$line()), 1); + buffer = self.location.$source_buffer(); + $b = buffer.$decompose_position(self.location.$end_pos()), $a = $to_ary($b), (last_lineno = ($a[0] == null ? nil : $a[0])), (last_column = ($a[1] == null ? nil : $a[1])), $b; + return $rb_plus($rb_plus(["" + (self.location) + "-" + (last_lineno) + ":" + (last_column) + ": " + (self.level) + ": " + (self.$message())], self.$render_line(first_line, $rb_gt(num_lines, 2), false)), self.$render_line(last_line, false, true)); + } + }, 0); + self.$private(); + + $def(self, '$render_line', function $$render_line(range, ellipsis, range_end) { + var self = this, source_line = nil, highlight_line = nil, $writer = nil; + + + + if (ellipsis == null) ellipsis = false;; + + if (range_end == null) range_end = false;; + source_line = range.$source_line(); + highlight_line = $rb_times(" ", source_line.$length()); + $send(self.highlights, 'each', [], function $$1(highlight){var line_range = nil, $writer = nil; + + + + if (highlight == null) highlight = nil;; + line_range = range.$source_buffer().$line_range(range.$line()); + if ($truthy((highlight = highlight.$intersect(line_range)))) { + + $writer = [highlight.$column_range(), $rb_times("~", highlight.$size())]; + $send(highlight_line, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else { + return nil + };}, 1); + if ($truthy(range['$is?']("\n"))) { + highlight_line = $rb_plus(highlight_line, "^") + } else if (($not(range_end) && ($truthy($rb_ge(range.$size(), 1))))) { + + $writer = [range.$column_range(), $rb_plus("^", $rb_times("~", $rb_minus(range.$size(), 1)))]; + $send(highlight_line, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + } else { + + $writer = [range.$column_range(), $rb_times("~", range.$size())]; + $send(highlight_line, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + if ($truthy(ellipsis)) { + highlight_line = $rb_plus(highlight_line, "...") + }; + return $send([source_line, highlight_line], 'map', [], function $$2(line){ + + + if (line == null) line = nil;; + return "" + (range.$source_buffer().$name()) + ":" + (range.$line()) + ": " + (line);}, 1); + }, -2); + + $def(self, '$first_line_only', function $$first_line_only(range) { + + if ($neqeq(range.$line(), range.$last_line())) { + return range.$resize(range.$source()['$=~'](/\n/)) + } else { + return range + } + }, 1); + return $def(self, '$last_line_only', function $$last_line_only(range) { + + if ($neqeq(range.$line(), range.$last_line())) { + return range.$adjust($hash2(["begin_pos"], {"begin_pos": range.$source()['$=~'](/[^\n]*$/)})) + } else { + return range + } + }, 1); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/diagnostic/engine"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy; + + Opal.add_stubs('attr_accessor,ignore?,call,raise?,raise,protected,==,level'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Engine'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.consumer = $proto.ignore_warnings = $proto.all_errors_are_fatal = nil; + + self.$attr_accessor("consumer"); + self.$attr_accessor("all_errors_are_fatal"); + self.$attr_accessor("ignore_warnings"); + + $def(self, '$initialize', function $$initialize(consumer) { + var self = this; + + + + if (consumer == null) consumer = nil;; + self.consumer = consumer; + self.all_errors_are_fatal = false; + return (self.ignore_warnings = false); + }, -1); + + $def(self, '$process', function $$process(diagnostic) { + var self = this; + + + if (!$truthy(self['$ignore?'](diagnostic))) { + if ($truthy(self.consumer)) { + self.consumer.$call(diagnostic) + } + }; + if ($truthy(self['$raise?'](diagnostic))) { + self.$raise($$$($$('Parser'), 'SyntaxError'), diagnostic) + }; + return self; + }, 1); + self.$protected(); + + $def(self, '$ignore?', function $Engine_ignore$ques$1(diagnostic) { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.ignore_warnings))) { + return diagnostic.$level()['$==']("warning") + } else { + return $ret_or_1 + } + }, 1); + return $def(self, '$raise?', function $Engine_raise$ques$2(diagnostic) { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.all_errors_are_fatal)) ? (diagnostic.$level()['$==']("error")) : ($ret_or_2))))) { + return $ret_or_1 + } else { + return diagnostic.$level()['$==']("fatal") + } + }, 1); + })($$('Diagnostic'), null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/static_environment"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def; + + Opal.add_stubs('reset,[],push,dup,pop,add,to_sym,include?,declare,declared?,empty?'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'StaticEnvironment'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.stack = $proto.variables = nil; + + $const_set($nesting[0], 'FORWARD_ARGS', "FORWARD_ARGS"); + $const_set($nesting[0], 'ANONYMOUS_BLOCKARG', "ANONYMOUS_BLOCKARG"); + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return self.$reset() + }, 0); + + $def(self, '$reset', function $$reset() { + var self = this; + + + self.variables = $$('Set')['$[]'](); + return (self.stack = []); + }, 0); + + $def(self, '$extend_static', function $$extend_static() { + var self = this; + + + self.stack.$push(self.variables); + self.variables = $$('Set')['$[]'](); + return self; + }, 0); + + $def(self, '$extend_dynamic', function $$extend_dynamic() { + var self = this; + + + self.stack.$push(self.variables); + self.variables = self.variables.$dup(); + return self; + }, 0); + + $def(self, '$unextend', function $$unextend() { + var self = this; + + + self.variables = self.stack.$pop(); + return self; + }, 0); + + $def(self, '$declare', function $$declare(name) { + var self = this; + + + self.variables.$add(name.$to_sym()); + return self; + }, 1); + + $def(self, '$declared?', function $StaticEnvironment_declared$ques$1(name) { + var self = this; + + return self.variables['$include?'](name.$to_sym()) + }, 1); + + $def(self, '$declare_forward_args', function $$declare_forward_args() { + var self = this; + + return self.$declare($$('FORWARD_ARGS')) + }, 0); + + $def(self, '$declared_forward_args?', function $StaticEnvironment_declared_forward_args$ques$2() { + var self = this; + + return self['$declared?']($$('FORWARD_ARGS')) + }, 0); + + $def(self, '$declare_anonymous_blockarg', function $$declare_anonymous_blockarg() { + var self = this; + + return self.$declare($$('ANONYMOUS_BLOCKARG')) + }, 0); + + $def(self, '$declared_anonymous_blockarg?', function $StaticEnvironment_declared_anonymous_blockarg$ques$3() { + var self = this; + + return self['$declared?']($$('ANONYMOUS_BLOCKARG')) + }, 0); + return $def(self, '$empty?', function $StaticEnvironment_empty$ques$4() { + var self = this; + + return self.stack['$empty?']() + }, 0); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $const_set = Opal.const_set, $hash = Opal.hash, $def = Opal.def, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $hash2 = Opal.hash2, $rb_plus = Opal.rb_plus, $to_ary = Opal.to_ary, $rb_le = Opal.rb_le, $eqeqeq = Opal.eqeqeq, $rb_gt = Opal.rb_gt, $neqeq = Opal.neqeq, $not = Opal.not, $rb_ge = Opal.rb_ge, $range = Opal.range, $rb_lt = Opal.rb_lt, $gvars = Opal.gvars; + + Opal.add_stubs('attr_accessor,private,_lex_trans_keys=,-,_lex_key_spans=,_lex_index_offsets=,_lex_indicies=,_lex_trans_targs=,_lex_trans_actions=,_lex_to_state_actions=,_lex_from_state_actions=,_lex_eof_trans=,lex_start=,lex_error=,lex_en_interp_words=,lex_en_interp_string=,lex_en_plain_words=,lex_en_plain_string=,lex_en_interp_backslash_delimited=,lex_en_plain_backslash_delimited=,lex_en_interp_backslash_delimited_words=,lex_en_plain_backslash_delimited_words=,lex_en_regexp_modifiers=,lex_en_expr_variable=,lex_en_expr_fname=,lex_en_expr_endfn=,lex_en_expr_dot=,lex_en_expr_arg=,lex_en_expr_cmdarg=,lex_en_expr_endarg=,lex_en_expr_mid=,lex_en_expr_beg=,lex_en_expr_labelarg=,lex_en_expr_value=,lex_en_expr_end=,lex_en_leading_dot=,lex_en_line_comment=,lex_en_line_begin=,freeze,ord,union,chars,attr_reader,reset,lex_en_line_begin,class,new,source,==,encoding,unpack,[],lex_en_expr_dot,lex_en_expr_fname,lex_en_expr_value,lex_en_expr_beg,lex_en_expr_mid,lex_en_expr_arg,lex_en_expr_cmdarg,lex_en_expr_end,lex_en_expr_endarg,lex_en_expr_endfn,lex_en_expr_labelarg,lex_en_interp_string,lex_en_interp_words,lex_en_plain_string,fetch,invert,push,count,pop,any?,shift,send,+,size,<=,===,<<,>,!=,emit_comment,tok,literal,flush_string,extend_content,emit,heredoc?,saved_herebody_s=,start_interp_brace,[]=,diagnostic,range,str_s,gsub,version?,nest_and_try_closing,heredoc_e,pop_literal,infer_indent_level,!,eof_codepoint?,words?,extend_space,extend_string,active?,>=,slice,start_with?,chr,munge_escape?,match,regexp?,squiggly_heredoc?,supports_line_continuation_via_slash?,include?,scan,join,=~,to_i,stack_pop,emit_table,push_literal,in_argdef,arg_or_cmdarg,<,emit_do,declared?,nil?,last,getbyte,inspect,end_with?,empty?,index,call,Float,to_f,length,lambda,Rational,Complex,each,encode_escape,%,in_kwarg,end_interp_brace_and_try_closing,lexpop,saved_herebody_s,next_state_for_literal,rstrip,&,|,lex_error,protected,force_encoding,process,backslash_delimited?,interpolate?,lex_en_interp_backslash_delimited_words,lex_en_plain_backslash_delimited_words,lex_en_plain_words,lex_en_interp_backslash_delimited,lex_en_plain_backslash_delimited,dedent_level,type,lex_en_regexp_modifiers,upcase'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Lexer'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $writer = nil, $proto = self.$$prototype; + + $proto.source_buffer = $proto.source_pts = $proto.cs = $proto.cmdarg_stack = $proto.cmdarg = $proto.cond_stack = $proto.cond = $proto.dedent_level = $proto.token_queue = $proto.p = $proto.command_start = $proto.herebody_s = $proto.sharp_s = $proto.ts = $proto.te = $proto.top = $proto.stack = $proto.version = $proto.escape_s = $proto.escape = $proto.act = $proto.context = $proto.static_env = $proto.newline_s = $proto.lambda_stack = $proto.paren_nest = $proto.num_digits_s = $proto.num_suffix_s = $proto.num_base = $proto.num_xfrm = $proto.eq_begin_s = $proto.cs_before_block_comment = $proto.tokens = $proto.comments = $proto.diagnostics = $proto.literal_stack = nil; + + (function(self, $parent_nesting) { + + + self.$attr_accessor("_lex_trans_keys"); + return self.$private("_lex_trans_keys", "_lex_trans_keys="); + })(Opal.get_singleton_class(self), $nesting); + + $writer = [[0, 0, 101, 101, 103, 103, 105, 105, 110, 110, 69, 69, 78, 78, 68, 68, 95, 95, 95, 95, 0, 26, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 120, 0, 120, 0, 92, 0, 120, 0, 120, 0, 45, 0, 120, 0, 120, 67, 99, 45, 45, 0, 92, 0, 120, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 120, 0, 120, 0, 92, 0, 120, 0, 120, 0, 45, 0, 120, 0, 120, 67, 99, 45, 45, 0, 92, 0, 120, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 58, 58, 58, 46, 46, 0, 127, 58, 58, 60, 60, 62, 62, 10, 10, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 115, 115, 99, 99, 117, 117, 101, 101, 108, 116, 101, 101, 115, 115, 115, 115, 105, 105, 108, 108, 105, 105, 108, 108, 58, 58, 0, 127, 10, 10, 0, 127, 9, 92, 10, 10, 9, 92, 58, 58, 98, 98, 101, 101, 103, 103, 105, 105, 110, 110, 0, 127, 61, 61, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 10, 10, 0, 127, 0, 127, 61, 126, 93, 93, 0, 127, 0, 127, 10, 10, 34, 34, 10, 10, 39, 39, 0, 127, 10, 96, 96, 96, 0, 45, 0, 120, 0, 120, 0, 92, 0, 120, 0, 120, 0, 45, 0, 120, 0, 120, 67, 99, 45, 45, 0, 92, 0, 120, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 58, 58, 58, 0, 127, 43, 57, 48, 57, 48, 57, 48, 57, 48, 57, 115, 115, 99, 99, 117, 117, 101, 101, 99, 99, 117, 117, 101, 101, 0, 127, 58, 58, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 60, 60, 10, 10, 9, 92, 9, 92, 10, 10, 10, 10, 10, 10, 10, 10, 46, 46, 0, 95, 9, 32, 0, 0, 10, 10, 10, 10, 98, 98, 9, 32, 10, 10, 95, 95, 0, 92, 9, 32, 36, 123, 0, 127, 48, 57, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 48, 102, 48, 102, 0, 0, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 92, 36, 123, 0, 127, 48, 57, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 48, 102, 48, 102, 0, 0, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 92, 9, 32, 0, 26, 0, 92, 0, 26, 0, 35, 36, 123, 0, 127, 48, 57, 0, 127, 0, 26, 0, 35, 9, 32, 36, 123, 0, 127, 48, 57, 0, 127, 0, 32, 9, 32, 65, 122, 65, 122, 36, 64, 0, 127, 48, 57, 0, 127, 0, 127, 0, 127, 0, 127, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 115, 115, 38, 38, 42, 42, 64, 64, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 93, 93, 10, 10, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 124, 124, 0, 127, 0, 127, 9, 32, 10, 10, 10, 10, 46, 46, 10, 10, 0, 0, 0, 127, 0, 127, 61, 61, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 93, 93, 10, 10, 124, 124, 0, 126, 0, 127, 0, 61, 9, 61, 9, 61, 0, 0, 9, 61, 9, 62, 46, 46, 46, 46, 58, 58, 9, 32, 0, 0, 0, 127, 0, 0, 9, 124, 0, 0, 10, 10, 10, 10, 0, 0, 9, 61, 58, 58, 60, 60, 62, 62, 9, 32, 10, 10, 0, 127, 102, 102, 101, 101, 110, 110, 104, 104, 0, 127, 0, 127, 0, 127, 0, 0, 0, 127, 10, 10, 0, 123, 9, 32, 10, 10, 10, 10, 10, 10, 0, 0, 111, 111, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 61, 0, 0, 61, 126, 61, 61, 0, 0, 0, 0, 0, 0, 9, 32, 61, 61, 9, 32, 61, 126, 10, 10, 10, 10, 0, 127, 38, 61, 0, 0, 42, 61, 61, 61, 9, 92, 9, 92, 9, 92, 46, 46, 46, 46, 10, 10, 0, 26, 0, 127, 0, 127, 61, 61, 0, 0, 61, 126, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 61, 126, 0, 127, 48, 57, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 61, 61, 62, 0, 127, 48, 57, 0, 127, 124, 124, 64, 64, 60, 61, 0, 0, 10, 34, 10, 39, 96, 96, 62, 62, 61, 126, 61, 62, 0, 122, 0, 0, 0, 127, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 48, 102, 48, 102, 0, 0, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 61, 126, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 92, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 61, 61, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 61, 61, 38, 61, 0, 0, 0, 0, 42, 61, 61, 62, 46, 57, 46, 46, 10, 10, 48, 101, 48, 95, 46, 120, 48, 114, 43, 57, 48, 105, 102, 102, 0, 0, 101, 105, 0, 0, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 105, 114, 102, 102, 0, 0, 101, 105, 115, 115, 0, 0, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 46, 114, 48, 114, 46, 114, 48, 114, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 9, 92, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 0, 9, 92, 9, 92, 9, 92, 46, 46, 46, 46, 10, 10, 46, 46, 10, 10, 10, 61, 10, 10, 10, 101, 10, 110, 10, 100, 10, 10, 0]]; + $send(self, '_lex_trans_keys=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + + self.$attr_accessor("_lex_key_spans"); + return self.$private("_lex_key_spans", "_lex_key_spans="); + })(Opal.get_singleton_class(self), $nesting); + + $writer = [[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 128, 128, 128, 128, 46, 121, 121, 93, 121, 121, 46, 121, 121, 33, 1, 93, 121, 103, 128, 128, 128, 128, 46, 121, 121, 93, 121, 121, 46, 121, 121, 33, 1, 93, 121, 103, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 1, 1, 128, 1, 1, 1, 1, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 128, 1, 128, 84, 1, 84, 1, 1, 1, 1, 1, 1, 128, 1, 84, 84, 84, 84, 84, 1, 128, 128, 66, 1, 128, 128, 1, 1, 1, 1, 128, 87, 1, 46, 121, 121, 93, 121, 121, 46, 121, 121, 33, 1, 93, 121, 103, 128, 128, 128, 128, 128, 128, 1, 1, 128, 15, 10, 10, 10, 10, 1, 1, 1, 1, 1, 1, 1, 128, 1, 84, 84, 84, 84, 84, 84, 1, 1, 84, 84, 1, 1, 1, 1, 1, 96, 24, 0, 1, 1, 1, 24, 1, 1, 93, 24, 88, 128, 10, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 55, 55, 0, 55, 55, 0, 46, 93, 93, 0, 0, 93, 55, 55, 0, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 93, 88, 128, 10, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 55, 55, 0, 55, 55, 0, 46, 93, 93, 0, 0, 93, 55, 55, 0, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 93, 24, 27, 93, 27, 36, 88, 128, 10, 128, 27, 36, 24, 88, 128, 10, 128, 33, 24, 58, 58, 29, 128, 10, 128, 128, 128, 128, 24, 0, 66, 1, 1, 128, 128, 10, 1, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 128, 128, 128, 128, 128, 128, 1, 1, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 128, 128, 24, 1, 1, 1, 1, 0, 128, 128, 1, 0, 24, 0, 66, 1, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 1, 1, 1, 127, 128, 62, 53, 53, 0, 53, 54, 1, 1, 1, 24, 0, 128, 0, 116, 0, 1, 1, 0, 53, 1, 1, 1, 24, 1, 128, 1, 1, 1, 1, 128, 128, 128, 0, 128, 1, 124, 24, 1, 1, 1, 0, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 4, 0, 66, 1, 0, 0, 0, 24, 1, 24, 66, 1, 1, 128, 24, 0, 20, 1, 84, 84, 84, 1, 1, 1, 27, 128, 128, 1, 0, 66, 2, 0, 0, 0, 0, 66, 128, 10, 1, 1, 1, 2, 1, 1, 2, 128, 10, 128, 1, 1, 2, 0, 25, 30, 1, 1, 66, 2, 123, 0, 128, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 55, 55, 0, 55, 55, 0, 46, 93, 93, 0, 0, 93, 55, 55, 0, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 128, 128, 128, 0, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 66, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 93, 24, 0, 1, 1, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 1, 0, 24, 0, 66, 1, 1, 128, 128, 10, 1, 24, 0, 0, 20, 2, 12, 1, 1, 54, 48, 75, 67, 15, 58, 1, 0, 5, 0, 0, 67, 67, 67, 67, 10, 1, 0, 5, 1, 0, 0, 67, 67, 67, 67, 67, 67, 67, 67, 69, 67, 69, 67, 1, 2, 1, 66, 1, 2, 128, 128, 0, 128, 128, 128, 128, 128, 128, 0, 1, 0, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 84, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 0, 84, 84, 84, 1, 1, 1, 1, 1, 52, 1, 92, 101, 91, 1]]; + $send(self, '_lex_key_spans=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + + self.$attr_accessor("_lex_index_offsets"); + return self.$private("_lex_index_offsets", "_lex_index_offsets="); + })(Opal.get_singleton_class(self), $nesting); + + $writer = [[0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 46, 175, 304, 433, 562, 609, 731, 853, 947, 1069, 1191, 1238, 1360, 1482, 1516, 1518, 1612, 1734, 1838, 1967, 2096, 2225, 2354, 2401, 2523, 2645, 2739, 2861, 2983, 3030, 3152, 3274, 3308, 3310, 3404, 3526, 3630, 3759, 3888, 4017, 4146, 4275, 4404, 4533, 4662, 4791, 4920, 5049, 5178, 5307, 5436, 5565, 5567, 5569, 5571, 5700, 5702, 5704, 5706, 5708, 5837, 5966, 6095, 6224, 6353, 6482, 6611, 6740, 6869, 6998, 7127, 7256, 7385, 7514, 7643, 7772, 7901, 8030, 8032, 8034, 8036, 8038, 8048, 8050, 8052, 8054, 8056, 8058, 8060, 8062, 8064, 8193, 8195, 8324, 8409, 8411, 8496, 8498, 8500, 8502, 8504, 8506, 8508, 8637, 8639, 8724, 8809, 8894, 8979, 9064, 9066, 9195, 9324, 9391, 9393, 9522, 9651, 9653, 9655, 9657, 9659, 9788, 9876, 9878, 9925, 10047, 10169, 10263, 10385, 10507, 10554, 10676, 10798, 10832, 10834, 10928, 11050, 11154, 11283, 11412, 11541, 11670, 11799, 11928, 11930, 11932, 12061, 12077, 12088, 12099, 12110, 12121, 12123, 12125, 12127, 12129, 12131, 12133, 12135, 12264, 12266, 12351, 12436, 12521, 12606, 12691, 12776, 12778, 12780, 12865, 12950, 12952, 12954, 12956, 12958, 12960, 13057, 13082, 13083, 13085, 13087, 13089, 13114, 13116, 13118, 13212, 13237, 13326, 13455, 13466, 13595, 13717, 13718, 13719, 13728, 13737, 13738, 13739, 13833, 13834, 13835, 13836, 13930, 13932, 13933, 13934, 13935, 14029, 14085, 14141, 14142, 14198, 14254, 14255, 14302, 14396, 14490, 14491, 14492, 14586, 14642, 14698, 14699, 14746, 14748, 14842, 14919, 14975, 15031, 15087, 15088, 15215, 15342, 15343, 15470, 15471, 15598, 15725, 15852, 15979, 15980, 16107, 16234, 16361, 16488, 16615, 16742, 16743, 16744, 16800, 16801, 16895, 16984, 17113, 17124, 17253, 17375, 17376, 17377, 17386, 17395, 17396, 17397, 17491, 17492, 17493, 17494, 17588, 17590, 17591, 17592, 17593, 17687, 17743, 17799, 17800, 17856, 17912, 17913, 17960, 18054, 18148, 18149, 18150, 18244, 18300, 18356, 18357, 18404, 18406, 18500, 18577, 18633, 18689, 18745, 18746, 18873, 19000, 19001, 19128, 19129, 19256, 19383, 19510, 19637, 19638, 19765, 19892, 20019, 20146, 20273, 20400, 20401, 20402, 20458, 20459, 20553, 20578, 20606, 20700, 20728, 20765, 20854, 20983, 20994, 21123, 21151, 21188, 21213, 21302, 21431, 21442, 21571, 21605, 21630, 21689, 21748, 21778, 21907, 21918, 22047, 22176, 22305, 22434, 22459, 22460, 22527, 22529, 22531, 22660, 22789, 22800, 22802, 22804, 22806, 22808, 22810, 22813, 22815, 22882, 22884, 22887, 23016, 23145, 23274, 23403, 23532, 23661, 23790, 23792, 23794, 23923, 24052, 24181, 24310, 24439, 24568, 24697, 24826, 24955, 25084, 25213, 25342, 25471, 25600, 25729, 25858, 25987, 26116, 26245, 26374, 26503, 26632, 26761, 26890, 27019, 27148, 27277, 27406, 27535, 27664, 27793, 27922, 28051, 28180, 28309, 28438, 28567, 28696, 28825, 28954, 29083, 29212, 29341, 29470, 29599, 29728, 29857, 29986, 30115, 30244, 30373, 30502, 30631, 30760, 30889, 31018, 31147, 31276, 31405, 31534, 31663, 31792, 31921, 32050, 32179, 32308, 32437, 32566, 32695, 32824, 32953, 33082, 33211, 33340, 33469, 33598, 33727, 33856, 33985, 34114, 34243, 34372, 34501, 34503, 34632, 34761, 34786, 34788, 34790, 34792, 34794, 34795, 34924, 35053, 35055, 35056, 35081, 35082, 35149, 35151, 35153, 35155, 35157, 35159, 35162, 35164, 35231, 35233, 35236, 35365, 35367, 35369, 35371, 35499, 35628, 35691, 35745, 35799, 35800, 35854, 35909, 35911, 35913, 35915, 35940, 35941, 36070, 36071, 36188, 36189, 36191, 36193, 36194, 36248, 36250, 36252, 36254, 36279, 36281, 36410, 36412, 36414, 36416, 36418, 36547, 36676, 36805, 36806, 36935, 36937, 37062, 37087, 37089, 37091, 37093, 37094, 37096, 37097, 37226, 37355, 37380, 37381, 37383, 37385, 37387, 37388, 37517, 37646, 37775, 37904, 38033, 38162, 38291, 38420, 38549, 38678, 38807, 38936, 39065, 39194, 39323, 39452, 39581, 39710, 39715, 39716, 39783, 39785, 39786, 39787, 39788, 39813, 39815, 39840, 39907, 39909, 39911, 40040, 40065, 40066, 40087, 40089, 40174, 40259, 40344, 40346, 40348, 40350, 40378, 40507, 40636, 40638, 40639, 40706, 40709, 40710, 40711, 40712, 40713, 40780, 40909, 40920, 40922, 40924, 40926, 40929, 40931, 40933, 40936, 41065, 41076, 41205, 41207, 41209, 41212, 41213, 41239, 41270, 41272, 41274, 41341, 41344, 41468, 41469, 41598, 41727, 41849, 41850, 41851, 41860, 41869, 41870, 41871, 41965, 41966, 41967, 41968, 42062, 42064, 42065, 42066, 42067, 42161, 42217, 42273, 42274, 42330, 42386, 42387, 42434, 42528, 42622, 42623, 42624, 42718, 42774, 42830, 42831, 42878, 42880, 42974, 43051, 43107, 43163, 43219, 43220, 43347, 43474, 43475, 43602, 43603, 43730, 43857, 43984, 44111, 44112, 44239, 44366, 44493, 44620, 44747, 44874, 45001, 45128, 45255, 45382, 45509, 45636, 45763, 45890, 46017, 46144, 46271, 46398, 46525, 46526, 46527, 46583, 46584, 46713, 46842, 46971, 46972, 46974, 46975, 47104, 47233, 47362, 47491, 47620, 47749, 47878, 48007, 48136, 48265, 48394, 48523, 48652, 48781, 48910, 49039, 49168, 49297, 49426, 49555, 49684, 49813, 49942, 50071, 50200, 50329, 50458, 50587, 50716, 50845, 50974, 51103, 51232, 51361, 51490, 51619, 51748, 51877, 52006, 52135, 52264, 52393, 52522, 52651, 52780, 52909, 53038, 53167, 53296, 53425, 53554, 53683, 53812, 53941, 54070, 54199, 54328, 54457, 54586, 54715, 54844, 54911, 55040, 55169, 55298, 55427, 55556, 55685, 55814, 55943, 56072, 56201, 56330, 56459, 56588, 56717, 56846, 56975, 57104, 57233, 57362, 57491, 57620, 57749, 57878, 58007, 58136, 58137, 58202, 58296, 58321, 58322, 58324, 58326, 58328, 58329, 58458, 58587, 58612, 58613, 58615, 58617, 58619, 58620, 58749, 58878, 58880, 58881, 58906, 58907, 58974, 58976, 58978, 59107, 59236, 59247, 59249, 59274, 59275, 59276, 59297, 59300, 59313, 59315, 59317, 59372, 59421, 59497, 59565, 59581, 59640, 59642, 59643, 59649, 59650, 59651, 59719, 59787, 59855, 59923, 59934, 59936, 59937, 59943, 59945, 59946, 59947, 60015, 60083, 60151, 60219, 60287, 60355, 60423, 60491, 60561, 60629, 60699, 60767, 60769, 60772, 60774, 60841, 60843, 60846, 60975, 61104, 61105, 61234, 61363, 61492, 61621, 61750, 61879, 61880, 61882, 61883, 61884, 62013, 62142, 62271, 62400, 62529, 62658, 62787, 62916, 63045, 63174, 63303, 63432, 63561, 63690, 63819, 63948, 64077, 64206, 64335, 64464, 64593, 64722, 64851, 64980, 65109, 65238, 65367, 65496, 65625, 65754, 65883, 66012, 66141, 66270, 66399, 66528, 66657, 66742, 66871, 67000, 67129, 67258, 67387, 67516, 67645, 67774, 67903, 68032, 68161, 68290, 68419, 68548, 68677, 68806, 68935, 69064, 69193, 69322, 69451, 69580, 69709, 69838, 69967, 70096, 70225, 70354, 70483, 70612, 70741, 70870, 70999, 71128, 71257, 71386, 71515, 71644, 71773, 71902, 72031, 72160, 72289, 72418, 72547, 72676, 72805, 72934, 73063, 73192, 73321, 73450, 73579, 73708, 73837, 73966, 74095, 74224, 74353, 74482, 74611, 74740, 74869, 74998, 75127, 75128, 75193, 75194, 75279, 75364, 75449, 75451, 75453, 75455, 75457, 75459, 75512, 75514, 75607, 75709, 75801]]; + $send(self, '_lex_index_offsets=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + + self.$attr_accessor("_lex_indicies"); + return self.$private("_lex_indicies", "_lex_indicies="); + })(Opal.get_singleton_class(self), $nesting); + + $writer = [[1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 12, 14, 12, 14, 14, 12, 12, 14, 14, 14, 15, 14, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 14, 12, 12, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 14, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 14, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 12, 12, 12, 12, 12, 12, 18, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 19, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 20, 19, 22, 22, 22, 19, 22, 22, 22, 22, 22, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 24, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 25, 22, 19, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 25, 22, 19, 27, 27, 27, 19, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 19, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 29, 27, 19, 30, 30, 30, 19, 30, 30, 30, 30, 30, 31, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 19, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 32, 30, 19, 30, 30, 30, 19, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 19, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 32, 30, 19, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 33, 20, 19, 34, 34, 34, 19, 34, 34, 34, 34, 34, 35, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 19, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 36, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 37, 34, 34, 34, 34, 34, 34, 38, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 39, 34, 19, 34, 34, 34, 19, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 19, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 39, 34, 40, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 41, 19, 41, 19, 19, 42, 42, 42, 19, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 19, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 44, 42, 19, 22, 22, 22, 19, 22, 22, 22, 22, 22, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 25, 22, 19, 45, 45, 45, 19, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 19, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 45, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 49, 49, 47, 49, 47, 49, 49, 47, 47, 49, 49, 49, 50, 49, 49, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 49, 49, 49, 49, 49, 49, 49, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 49, 47, 47, 48, 49, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 49, 47, 48, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 47, 47, 47, 47, 47, 47, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 47, 47, 47, 47, 49, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 47, 47, 47, 47, 47, 49, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 47, 47, 47, 47, 47, 47, 53, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 48, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 47, 48, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 47, 47, 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 48, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 47, 48, 54, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 55, 54, 57, 57, 57, 54, 57, 57, 57, 57, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 59, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 60, 57, 54, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 61, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 60, 57, 54, 62, 62, 62, 54, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 54, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 54, 65, 65, 65, 54, 65, 65, 65, 65, 65, 66, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 54, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 67, 65, 54, 65, 65, 65, 54, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 54, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 67, 65, 54, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 68, 55, 54, 69, 69, 69, 54, 69, 69, 69, 69, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 54, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 71, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 72, 69, 69, 69, 69, 69, 69, 73, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 74, 69, 54, 69, 69, 69, 54, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 54, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 74, 69, 75, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 76, 54, 76, 54, 54, 77, 77, 77, 54, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 54, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 79, 77, 54, 57, 57, 57, 54, 57, 57, 57, 57, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 61, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 60, 57, 54, 80, 80, 80, 54, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 54, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 80, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 84, 84, 82, 84, 82, 84, 84, 82, 82, 84, 84, 84, 85, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 84, 84, 84, 84, 84, 84, 84, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 84, 82, 82, 83, 84, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 84, 82, 83, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 82, 82, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 84, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 82, 84, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 82, 82, 82, 82, 82, 82, 88, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 83, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 82, 83, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 83, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 82, 83, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 91, 89, 91, 89, 91, 91, 89, 89, 91, 91, 91, 92, 91, 91, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 91, 91, 91, 91, 91, 91, 91, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 91, 89, 89, 90, 91, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 91, 89, 90, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 89, 89, 89, 89, 89, 89, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 89, 89, 89, 89, 91, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 89, 89, 89, 89, 89, 91, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 89, 89, 89, 89, 89, 89, 95, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 90, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 89, 90, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 89, 89, 89, 89, 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 90, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 89, 90, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 97, 97, 98, 97, 98, 97, 97, 98, 98, 97, 97, 97, 99, 97, 97, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 97, 97, 97, 97, 97, 97, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 98, 97, 98, 98, 96, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 98, 98, 98, 97, 98, 96, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 98, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 97, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 102, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 98, 98, 98, 98, 98, 98, 98, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 98, 98, 98, 98, 103, 98, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 98, 98, 98, 98, 98, 103, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104, 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104, 104, 105, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104, 104, 104, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 110, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 111, 108, 108, 108, 108, 110, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 108, 108, 108, 108, 109, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 108, 108, 108, 108, 108, 109, 111, 108, 108, 112, 113, 108, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 116, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 114, 114, 114, 114, 116, 114, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 114, 114, 114, 114, 115, 114, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 114, 114, 114, 114, 114, 115, 117, 114, 119, 118, 120, 118, 121, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 123, 118, 123, 123, 123, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 123, 118, 118, 118, 118, 124, 125, 118, 126, 118, 127, 128, 129, 130, 131, 124, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 132, 118, 133, 129, 134, 135, 118, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 136, 137, 129, 138, 122, 118, 122, 122, 122, 122, 122, 122, 122, 122, 139, 122, 122, 122, 122, 122, 122, 122, 122, 140, 122, 122, 141, 122, 142, 122, 122, 122, 143, 144, 118, 138, 118, 122, 118, 118, 118, 118, 118, 118, 118, 118, 118, 145, 118, 145, 145, 145, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 145, 118, 118, 118, 118, 146, 147, 118, 148, 118, 149, 150, 151, 152, 153, 146, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 154, 118, 155, 151, 156, 157, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 158, 159, 151, 120, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 160, 115, 115, 115, 115, 115, 115, 115, 115, 161, 115, 115, 162, 115, 163, 115, 115, 115, 164, 165, 118, 120, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 166, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 167, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 168, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 169, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 170, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 166, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 171, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 172, 115, 115, 115, 115, 115, 115, 115, 173, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 174, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 175, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 166, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 176, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 166, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 177, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 178, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 170, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 180, 179, 181, 179, 182, 179, 151, 179, 183, 179, 179, 179, 179, 179, 179, 179, 184, 179, 185, 179, 186, 179, 151, 179, 187, 179, 151, 179, 188, 179, 182, 179, 190, 189, 191, 191, 191, 191, 191, 191, 191, 191, 191, 193, 191, 193, 193, 193, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 193, 191, 191, 191, 191, 191, 191, 191, 194, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 191, 195, 191, 191, 192, 191, 192, 192, 192, 196, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 191, 191, 191, 191, 191, 192, 197, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 199, 191, 199, 199, 199, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 199, 191, 191, 191, 191, 191, 191, 191, 200, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 191, 201, 191, 191, 198, 191, 198, 198, 198, 202, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 191, 191, 191, 191, 191, 198, 204, 203, 204, 204, 204, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 204, 203, 203, 203, 203, 203, 203, 203, 205, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 206, 203, 207, 203, 208, 203, 208, 208, 208, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 208, 203, 203, 203, 203, 203, 203, 203, 209, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 210, 203, 211, 212, 214, 213, 215, 213, 216, 213, 217, 213, 218, 213, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 220, 220, 220, 220, 220, 220, 220, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 220, 220, 220, 220, 220, 220, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 220, 220, 220, 220, 220, 219, 221, 211, 222, 223, 222, 222, 222, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 222, 211, 211, 224, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 226, 211, 227, 228, 227, 227, 227, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 227, 211, 211, 229, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 231, 211, 233, 234, 233, 233, 233, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 233, 232, 232, 235, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 237, 232, 239, 240, 239, 239, 239, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 238, 238, 241, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 243, 238, 239, 244, 239, 239, 239, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 238, 238, 241, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 243, 238, 223, 211, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 247, 247, 245, 247, 245, 247, 247, 245, 245, 247, 247, 247, 248, 247, 247, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 247, 247, 247, 247, 247, 247, 247, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 245, 247, 245, 245, 246, 247, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 245, 245, 245, 247, 245, 246, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 245, 245, 245, 245, 245, 245, 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 245, 245, 245, 245, 247, 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 245, 245, 245, 245, 245, 247, 250, 247, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 247, 245, 250, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 252, 245, 245, 245, 245, 253, 245, 245, 245, 245, 245, 254, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 221, 245, 245, 245, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 245, 245, 245, 245, 251, 255, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 245, 245, 245, 254, 245, 251, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 258, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 257, 257, 257, 257, 257, 257, 257, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 257, 257, 257, 257, 256, 257, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 257, 257, 257, 257, 257, 256, 260, 259, 263, 262, 258, 257, 263, 264, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 252, 245, 245, 245, 245, 253, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 245, 245, 245, 245, 251, 255, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 245, 245, 245, 245, 245, 251, 266, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 263, 265, 263, 266, 267, 268, 268, 268, 267, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 267, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 269, 268, 267, 270, 270, 270, 267, 270, 270, 270, 270, 270, 271, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 267, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 272, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 273, 270, 267, 270, 270, 270, 267, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 267, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 274, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 273, 270, 267, 275, 275, 275, 267, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 267, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 277, 275, 267, 278, 278, 278, 267, 278, 278, 278, 278, 278, 279, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 267, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 280, 278, 267, 278, 278, 278, 267, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 267, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 280, 278, 267, 268, 268, 268, 267, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 267, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 281, 268, 267, 282, 282, 282, 267, 282, 282, 282, 282, 282, 283, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 267, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 284, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 285, 282, 282, 282, 282, 282, 282, 286, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 287, 282, 267, 282, 282, 282, 267, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 267, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 287, 282, 288, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 289, 267, 289, 267, 267, 290, 290, 290, 267, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 267, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 292, 290, 267, 270, 270, 270, 267, 270, 270, 270, 270, 270, 271, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 267, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 274, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 273, 270, 267, 293, 293, 293, 267, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 267, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 293, 293, 293, 293, 293, 293, 293, 294, 294, 294, 294, 294, 294, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 294, 294, 294, 294, 294, 294, 293, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 296, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 211, 211, 298, 211, 296, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 211, 211, 211, 211, 295, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 211, 211, 211, 211, 211, 295, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 296, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 245, 245, 298, 245, 296, 245, 295, 295, 295, 295, 295, 295, 299, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 295, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 245, 295, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 296, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 245, 245, 298, 245, 296, 245, 295, 295, 295, 295, 295, 295, 295, 295, 300, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 295, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 245, 295, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 296, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 245, 245, 298, 245, 296, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 301, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 295, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 245, 295, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 296, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 245, 245, 298, 245, 296, 245, 295, 295, 295, 301, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 295, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 245, 295, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 304, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 305, 302, 302, 302, 302, 304, 302, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 302, 302, 302, 302, 303, 302, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 302, 302, 302, 302, 302, 303, 305, 302, 302, 306, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 307, 307, 307, 307, 307, 307, 307, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 307, 307, 307, 307, 308, 307, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 307, 307, 307, 307, 307, 308, 310, 309, 310, 309, 309, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 309, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 309, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 309, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 313, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 313, 317, 316, 318, 316, 319, 316, 320, 316, 322, 321, 323, 321, 324, 321, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 307, 307, 307, 307, 307, 307, 307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 307, 307, 307, 307, 325, 307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 307, 307, 307, 307, 307, 325, 326, 313, 327, 328, 327, 327, 327, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 327, 313, 313, 329, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 330, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 331, 313, 332, 333, 332, 332, 332, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 332, 313, 313, 334, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 335, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 336, 313, 338, 339, 338, 338, 338, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 338, 337, 337, 340, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 341, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 342, 337, 344, 345, 344, 344, 344, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 343, 343, 346, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 347, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 348, 343, 344, 345, 344, 344, 344, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 343, 343, 346, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 349, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 348, 343, 344, 350, 344, 344, 344, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 343, 343, 346, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 347, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 348, 343, 351, 313, 328, 313, 353, 354, 353, 353, 353, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 353, 352, 352, 355, 352, 352, 356, 352, 352, 352, 352, 352, 352, 352, 357, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 358, 352, 360, 354, 360, 360, 360, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 360, 359, 359, 355, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 358, 359, 363, 362, 365, 364, 366, 361, 367, 361, 368, 352, 370, 369, 369, 369, 370, 369, 369, 369, 369, 371, 372, 371, 371, 371, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 370, 369, 369, 369, 369, 369, 371, 369, 369, 373, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 374, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 375, 369, 369, 376, 369, 371, 377, 371, 371, 371, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 371, 377, 378, 379, 380, 381, 382, 384, 383, 386, 387, 386, 386, 386, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 386, 385, 372, 383, 388, 383, 390, 389, 389, 389, 390, 389, 389, 389, 389, 391, 392, 391, 391, 391, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 390, 389, 389, 389, 389, 389, 391, 389, 389, 393, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 394, 389, 391, 395, 391, 391, 391, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 391, 395, 397, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 398, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 399, 396, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 400, 400, 400, 400, 400, 400, 400, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 400, 400, 400, 400, 13, 400, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 400, 400, 400, 400, 400, 13, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 400, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 401, 401, 401, 401, 401, 401, 401, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 401, 401, 401, 401, 17, 401, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 401, 401, 401, 401, 401, 17, 404, 403, 403, 403, 404, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 404, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 405, 405, 405, 405, 405, 405, 405, 405, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 406, 403, 403, 403, 403, 403, 403, 403, 403, 403, 407, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 408, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 409, 403, 403, 410, 403, 411, 412, 414, 414, 414, 414, 414, 414, 414, 414, 413, 415, 415, 415, 415, 415, 415, 415, 415, 413, 413, 416, 416, 42, 42, 42, 416, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 416, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 417, 42, 418, 419, 420, 420, 42, 42, 42, 420, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 420, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 421, 42, 41, 420, 422, 423, 424, 424, 27, 27, 27, 424, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 424, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 425, 27, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 424, 424, 424, 424, 424, 424, 424, 426, 426, 426, 426, 426, 426, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 426, 426, 426, 426, 426, 426, 424, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 427, 427, 427, 427, 427, 427, 427, 428, 428, 428, 428, 428, 428, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 428, 428, 428, 428, 428, 428, 427, 427, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 420, 420, 420, 420, 420, 420, 420, 429, 429, 429, 429, 429, 429, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 429, 429, 429, 429, 429, 429, 420, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 430, 430, 430, 430, 430, 430, 430, 431, 431, 431, 431, 431, 431, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 431, 431, 431, 431, 431, 431, 430, 430, 420, 20, 20, 20, 420, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 420, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 432, 20, 416, 27, 27, 27, 416, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 416, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 29, 27, 416, 433, 433, 433, 416, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 416, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 434, 433, 435, 436, 436, 433, 433, 433, 436, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 436, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 437, 433, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 436, 436, 436, 436, 436, 436, 436, 438, 438, 438, 438, 438, 438, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 438, 438, 438, 438, 438, 438, 436, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 439, 439, 439, 439, 439, 439, 439, 440, 440, 440, 440, 440, 440, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 440, 440, 440, 440, 440, 440, 439, 439, 436, 20, 20, 20, 436, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 436, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 432, 20, 441, 436, 436, 27, 27, 27, 436, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 436, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 29, 27, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 442, 442, 442, 442, 442, 442, 442, 443, 443, 443, 443, 443, 443, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 443, 443, 443, 443, 443, 443, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 444, 442, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 442, 442, 442, 442, 442, 442, 442, 445, 445, 445, 445, 445, 445, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 445, 445, 445, 445, 445, 445, 442, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 442, 442, 442, 442, 442, 442, 442, 446, 446, 446, 446, 446, 446, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 446, 446, 446, 446, 446, 446, 442, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 442, 442, 442, 442, 442, 442, 442, 447, 447, 447, 447, 447, 447, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 447, 447, 447, 447, 447, 447, 442, 448, 451, 450, 450, 450, 451, 450, 450, 450, 450, 452, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 451, 450, 450, 450, 450, 450, 452, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 450, 450, 450, 450, 450, 450, 450, 453, 453, 453, 453, 453, 453, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 453, 453, 453, 453, 453, 453, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 454, 450, 451, 450, 450, 450, 451, 450, 450, 450, 450, 449, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 451, 450, 450, 450, 450, 450, 449, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 450, 450, 450, 450, 450, 450, 450, 455, 455, 455, 455, 455, 455, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 455, 455, 455, 455, 455, 455, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 456, 450, 449, 451, 455, 455, 455, 451, 455, 455, 455, 455, 449, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 451, 455, 455, 455, 455, 455, 449, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 449, 455, 457, 451, 458, 458, 458, 451, 458, 458, 458, 458, 452, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 452, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 449, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 458, 458, 458, 458, 458, 458, 458, 455, 455, 455, 455, 455, 455, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 455, 455, 455, 455, 455, 455, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 458, 458, 458, 458, 458, 458, 458, 460, 460, 460, 460, 460, 460, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 460, 460, 460, 460, 460, 460, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 462, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 458, 458, 458, 458, 458, 458, 458, 463, 463, 463, 463, 463, 463, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 463, 463, 463, 463, 463, 463, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 458, 458, 458, 458, 458, 458, 458, 464, 464, 464, 464, 464, 464, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 464, 464, 464, 464, 464, 464, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 458, 458, 458, 458, 458, 458, 458, 465, 465, 465, 465, 465, 465, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 465, 465, 465, 465, 465, 465, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 458, 458, 458, 458, 458, 458, 458, 466, 466, 466, 466, 466, 466, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 466, 466, 466, 466, 466, 466, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 449, 458, 468, 469, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 470, 470, 470, 470, 470, 470, 470, 471, 471, 471, 471, 471, 471, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 471, 471, 471, 471, 471, 471, 470, 470, 473, 472, 472, 472, 473, 472, 472, 472, 472, 472, 474, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 473, 472, 472, 472, 472, 472, 472, 472, 472, 475, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 476, 472, 478, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 479, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 480, 477, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 481, 481, 481, 481, 481, 481, 481, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 481, 481, 481, 481, 48, 481, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 481, 481, 481, 481, 481, 48, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 481, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 482, 482, 482, 482, 482, 482, 482, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 482, 482, 482, 482, 52, 482, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 482, 482, 482, 482, 482, 52, 485, 484, 484, 484, 485, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 485, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 486, 486, 486, 486, 486, 486, 486, 486, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 487, 484, 484, 484, 484, 484, 484, 484, 484, 484, 488, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 489, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 490, 484, 484, 491, 484, 492, 493, 495, 495, 495, 495, 495, 495, 495, 495, 494, 496, 496, 496, 496, 496, 496, 496, 496, 494, 494, 497, 497, 77, 77, 77, 497, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 497, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 498, 77, 499, 500, 501, 501, 77, 77, 77, 501, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 501, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 502, 77, 76, 501, 503, 504, 505, 505, 62, 62, 62, 505, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 505, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 506, 62, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 505, 505, 505, 505, 505, 505, 505, 507, 507, 507, 507, 507, 507, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 507, 507, 507, 507, 507, 507, 505, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 508, 508, 508, 508, 508, 508, 508, 509, 509, 509, 509, 509, 509, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 509, 509, 509, 509, 509, 509, 508, 508, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 501, 501, 501, 501, 501, 501, 501, 510, 510, 510, 510, 510, 510, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 510, 510, 510, 510, 510, 510, 501, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 511, 511, 511, 511, 511, 511, 511, 512, 512, 512, 512, 512, 512, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 512, 512, 512, 512, 512, 512, 511, 511, 501, 55, 55, 55, 501, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 501, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 513, 55, 497, 62, 62, 62, 497, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 497, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 497, 514, 514, 514, 497, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 497, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 515, 514, 516, 517, 517, 514, 514, 514, 517, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 517, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 518, 514, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 517, 517, 517, 517, 517, 517, 517, 519, 519, 519, 519, 519, 519, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 519, 519, 519, 519, 519, 519, 517, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 520, 520, 520, 520, 520, 520, 520, 521, 521, 521, 521, 521, 521, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 521, 521, 521, 521, 521, 521, 520, 520, 517, 55, 55, 55, 517, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 517, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 513, 55, 522, 517, 517, 62, 62, 62, 517, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 517, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 523, 523, 523, 523, 523, 523, 523, 524, 524, 524, 524, 524, 524, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 524, 524, 524, 524, 524, 524, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 525, 523, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 523, 523, 523, 523, 523, 523, 523, 526, 526, 526, 526, 526, 526, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 526, 526, 526, 526, 526, 526, 523, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 523, 523, 523, 523, 523, 523, 523, 527, 527, 527, 527, 527, 527, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 527, 527, 527, 527, 527, 527, 523, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 523, 523, 523, 523, 523, 523, 523, 528, 528, 528, 528, 528, 528, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 528, 528, 528, 528, 528, 528, 523, 529, 532, 531, 531, 531, 532, 531, 531, 531, 531, 533, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 532, 531, 531, 531, 531, 531, 533, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 531, 531, 531, 531, 531, 531, 531, 534, 534, 534, 534, 534, 534, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 534, 534, 534, 534, 534, 534, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 535, 531, 532, 531, 531, 531, 532, 531, 531, 531, 531, 530, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 532, 531, 531, 531, 531, 531, 530, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 531, 531, 531, 531, 531, 531, 531, 536, 536, 536, 536, 536, 536, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 536, 536, 536, 536, 536, 536, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 537, 531, 530, 532, 536, 536, 536, 532, 536, 536, 536, 536, 530, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 532, 536, 536, 536, 536, 536, 530, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 530, 536, 538, 532, 539, 539, 539, 532, 539, 539, 539, 539, 533, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 533, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 530, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 530, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 530, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 539, 539, 539, 539, 539, 539, 539, 536, 536, 536, 536, 536, 536, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 536, 536, 536, 536, 536, 536, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 539, 539, 539, 539, 539, 539, 539, 541, 541, 541, 541, 541, 541, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 541, 541, 541, 541, 541, 541, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 543, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 539, 539, 539, 539, 539, 539, 539, 544, 544, 544, 544, 544, 544, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 544, 544, 544, 544, 544, 544, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 539, 539, 539, 539, 539, 539, 539, 545, 545, 545, 545, 545, 545, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 545, 545, 545, 545, 545, 545, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 539, 539, 539, 539, 539, 539, 539, 546, 546, 546, 546, 546, 546, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 546, 546, 546, 546, 546, 546, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 539, 539, 539, 539, 539, 539, 539, 547, 547, 547, 547, 547, 547, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 547, 547, 547, 547, 547, 547, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 530, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 530, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 530, 539, 549, 550, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 551, 551, 551, 551, 551, 551, 551, 552, 552, 552, 552, 552, 552, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 552, 552, 552, 552, 552, 552, 551, 551, 554, 553, 553, 553, 554, 553, 553, 553, 553, 555, 556, 555, 555, 555, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 554, 553, 553, 553, 553, 553, 555, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 557, 553, 555, 558, 555, 555, 555, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 555, 558, 559, 560, 560, 560, 559, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 559, 560, 562, 561, 561, 561, 562, 561, 561, 561, 561, 561, 563, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 562, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 564, 561, 565, 566, 566, 566, 565, 566, 566, 566, 566, 566, 567, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 565, 566, 569, 568, 568, 568, 569, 568, 568, 568, 568, 568, 570, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 569, 568, 568, 568, 568, 568, 568, 568, 568, 571, 568, 573, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 574, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 575, 572, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 576, 576, 576, 576, 576, 576, 576, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 576, 576, 576, 576, 83, 576, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 576, 576, 576, 576, 576, 83, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 576, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 577, 577, 577, 577, 577, 577, 577, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 577, 577, 577, 577, 87, 577, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 577, 577, 577, 577, 577, 87, 579, 578, 578, 578, 579, 578, 578, 578, 578, 578, 580, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 579, 578, 582, 581, 581, 581, 582, 581, 581, 581, 581, 583, 584, 583, 583, 583, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 582, 581, 581, 581, 581, 581, 583, 581, 581, 585, 581, 583, 586, 583, 583, 583, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 583, 586, 588, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 589, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 590, 587, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 591, 591, 591, 591, 591, 591, 591, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 591, 591, 591, 591, 90, 591, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 591, 591, 591, 591, 591, 90, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 591, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 592, 592, 592, 592, 592, 592, 592, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 592, 592, 592, 592, 94, 592, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 592, 592, 592, 592, 592, 94, 594, 593, 593, 593, 594, 593, 593, 593, 593, 595, 596, 595, 595, 595, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 594, 593, 593, 593, 593, 593, 595, 593, 595, 597, 595, 595, 595, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 595, 597, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 598, 598, 598, 598, 598, 598, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 598, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 600, 600, 600, 600, 600, 600, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 600, 601, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 602, 98, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 603, 603, 603, 603, 603, 603, 603, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 603, 603, 603, 603, 96, 603, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 603, 603, 603, 603, 603, 96, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 603, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 604, 604, 604, 604, 604, 604, 604, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 604, 604, 604, 604, 101, 604, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 604, 604, 604, 604, 604, 101, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 605, 605, 605, 605, 605, 605, 605, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 605, 605, 605, 605, 103, 605, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 605, 605, 605, 605, 605, 103, 607, 608, 608, 608, 607, 608, 608, 608, 608, 609, 610, 609, 609, 609, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 607, 608, 608, 608, 608, 608, 609, 611, 608, 612, 613, 614, 615, 608, 608, 608, 616, 617, 608, 617, 608, 618, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 619, 608, 620, 621, 622, 608, 608, 623, 624, 623, 623, 625, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 626, 627, 608, 618, 628, 618, 629, 630, 631, 632, 633, 634, 606, 606, 635, 606, 606, 606, 636, 637, 638, 606, 606, 639, 640, 641, 642, 606, 643, 606, 644, 606, 608, 645, 608, 617, 608, 606, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 647, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 646, 646, 646, 647, 646, 647, 646, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 646, 646, 646, 646, 606, 646, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 646, 646, 646, 646, 646, 606, 609, 648, 609, 609, 609, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 609, 648, 649, 618, 650, 650, 618, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 618, 650, 651, 652, 653, 654, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 105, 105, 655, 105, 655, 105, 105, 655, 655, 105, 105, 105, 657, 105, 105, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 105, 105, 105, 105, 105, 105, 105, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 655, 105, 655, 655, 656, 105, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 655, 655, 655, 105, 655, 656, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 659, 659, 659, 659, 659, 659, 659, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 659, 659, 659, 659, 656, 659, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 659, 659, 659, 659, 659, 656, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 659, 660, 650, 618, 650, 618, 650, 618, 650, 662, 661, 618, 663, 650, 618, 650, 664, 618, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 618, 655, 618, 650, 618, 618, 650, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 647, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 646, 646, 646, 647, 646, 647, 646, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 646, 646, 646, 646, 623, 646, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 646, 646, 646, 646, 646, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 623, 666, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 623, 623, 623, 667, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 623, 623, 623, 623, 623, 668, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 669, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 670, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 669, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 664, 655, 610, 655, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 672, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 673, 674, 606, 606, 606, 606, 606, 675, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 676, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 677, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 678, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 679, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 680, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 681, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 682, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 683, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 684, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 685, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 686, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 682, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 687, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 686, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 688, 606, 689, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 690, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 691, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 692, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 693, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 694, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 695, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 696, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 697, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 698, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 699, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 700, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 701, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 691, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 702, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 703, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 647, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 704, 704, 704, 647, 704, 647, 704, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 704, 704, 704, 704, 606, 704, 606, 606, 606, 606, 606, 606, 606, 606, 705, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 704, 704, 704, 704, 704, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 706, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 707, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 708, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 709, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 710, 606, 711, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 712, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 684, 606, 606, 606, 713, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 714, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 715, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 700, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 716, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 638, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 698, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 717, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 718, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 719, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 700, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 720, 606, 606, 606, 721, 606, 606, 606, 606, 606, 722, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 722, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 723, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 724, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 725, 726, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 727, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 700, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 728, 606, 606, 729, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 695, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 730, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 731, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 713, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 732, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 638, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 733, 606, 606, 606, 606, 606, 606, 606, 606, 606, 727, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 695, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 734, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 735, 606, 606, 606, 606, 606, 606, 606, 736, 606, 606, 606, 606, 606, 606, 606, 737, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 713, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 701, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 721, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 738, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 695, 606, 606, 606, 719, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 739, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 740, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 689, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 618, 650, 742, 743, 743, 743, 742, 743, 743, 743, 743, 744, 743, 744, 744, 744, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 742, 743, 743, 743, 743, 743, 744, 743, 743, 745, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 746, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 743, 747, 743, 743, 741, 743, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 743, 743, 743, 743, 743, 741, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 110, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 111, 748, 748, 748, 748, 110, 748, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 748, 748, 748, 748, 109, 748, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 748, 748, 748, 748, 748, 109, 744, 749, 744, 744, 744, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 744, 749, 750, 751, 752, 753, 754, 748, 755, 748, 756, 758, 759, 759, 759, 758, 759, 759, 759, 759, 760, 761, 760, 760, 760, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 758, 759, 759, 759, 759, 759, 760, 762, 759, 763, 759, 764, 765, 759, 759, 759, 766, 767, 759, 767, 759, 764, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 768, 769, 770, 759, 759, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 772, 773, 759, 764, 757, 764, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 759, 774, 759, 767, 759, 757, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 776, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 775, 775, 775, 775, 775, 776, 775, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 775, 775, 775, 775, 757, 775, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 775, 775, 775, 775, 775, 757, 778, 777, 779, 760, 780, 760, 760, 760, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 760, 780, 781, 764, 782, 782, 764, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 764, 782, 783, 784, 785, 786, 764, 782, 764, 782, 764, 782, 764, 787, 782, 764, 782, 789, 764, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 764, 788, 764, 782, 764, 764, 782, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 776, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 790, 790, 790, 790, 790, 776, 790, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 790, 790, 790, 790, 771, 790, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 790, 790, 790, 790, 790, 771, 789, 788, 761, 788, 764, 782, 792, 791, 791, 791, 792, 791, 791, 791, 791, 793, 794, 793, 793, 793, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 792, 791, 791, 791, 791, 791, 793, 791, 791, 795, 791, 120, 796, 791, 797, 791, 798, 120, 151, 799, 153, 120, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 800, 791, 801, 151, 802, 803, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 151, 804, 151, 120, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 805, 791, 791, 791, 791, 791, 791, 791, 791, 806, 791, 791, 807, 791, 808, 791, 791, 791, 164, 165, 791, 120, 791, 809, 809, 809, 809, 809, 809, 809, 809, 809, 793, 809, 793, 793, 793, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 793, 809, 809, 809, 809, 146, 147, 809, 148, 809, 149, 150, 151, 152, 153, 146, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 154, 809, 155, 151, 156, 157, 809, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 158, 159, 151, 120, 115, 809, 115, 115, 115, 115, 115, 115, 115, 115, 160, 115, 115, 115, 115, 115, 115, 115, 115, 161, 115, 115, 162, 115, 163, 115, 115, 115, 164, 165, 809, 120, 809, 115, 810, 811, 811, 811, 810, 811, 811, 811, 811, 151, 812, 151, 151, 151, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 810, 811, 811, 811, 811, 811, 151, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 151, 811, 151, 812, 151, 151, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 114, 114, 114, 114, 114, 120, 114, 114, 114, 114, 114, 114, 114, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 114, 151, 812, 151, 151, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 114, 813, 151, 812, 151, 151, 151, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 151, 814, 814, 814, 814, 814, 814, 814, 814, 814, 815, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 151, 814, 151, 812, 151, 151, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 151, 114, 816, 810, 151, 810, 818, 817, 820, 821, 820, 820, 820, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 820, 819, 822, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 116, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 810, 810, 810, 810, 116, 810, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 810, 810, 810, 810, 115, 810, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 810, 810, 810, 810, 810, 115, 823, 151, 812, 151, 151, 151, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 151, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 151, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 120, 810, 824, 825, 826, 827, 828, 829, 151, 812, 151, 151, 151, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 151, 810, 810, 810, 810, 810, 810, 810, 810, 810, 120, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 151, 810, 151, 817, 120, 830, 120, 830, 831, 832, 831, 831, 831, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 831, 819, 833, 830, 834, 834, 834, 834, 834, 834, 834, 834, 834, 123, 834, 123, 123, 123, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 123, 834, 834, 834, 834, 124, 125, 834, 126, 834, 127, 128, 129, 130, 131, 124, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 132, 834, 133, 129, 134, 135, 834, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 136, 137, 129, 138, 122, 834, 122, 122, 122, 122, 122, 122, 122, 122, 139, 122, 122, 122, 122, 122, 122, 122, 122, 140, 122, 122, 141, 122, 142, 122, 122, 122, 143, 144, 834, 138, 834, 122, 151, 830, 835, 830, 836, 830, 837, 830, 838, 190, 190, 190, 838, 190, 190, 190, 190, 839, 190, 839, 839, 839, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 838, 190, 190, 190, 190, 190, 839, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 190, 840, 190, 190, 192, 190, 192, 192, 192, 196, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 190, 190, 190, 190, 190, 192, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 841, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 190, 189, 189, 189, 189, 841, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 189, 189, 189, 189, 192, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 189, 189, 189, 189, 189, 192, 842, 842, 842, 842, 842, 842, 842, 842, 842, 193, 842, 193, 193, 193, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 193, 842, 842, 842, 842, 842, 842, 842, 194, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 842, 195, 842, 842, 192, 842, 192, 192, 192, 196, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 842, 842, 842, 842, 842, 192, 843, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 841, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 190, 842, 842, 842, 842, 841, 842, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 842, 842, 842, 842, 192, 842, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 844, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 842, 842, 842, 842, 842, 192, 197, 842, 846, 845, 845, 845, 846, 845, 845, 845, 845, 847, 845, 847, 847, 847, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 846, 845, 845, 845, 845, 845, 847, 845, 845, 848, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 849, 845, 845, 845, 845, 845, 845, 845, 850, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 851, 845, 847, 852, 847, 847, 847, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 847, 852, 853, 854, 855, 856, 858, 857, 859, 860, 857, 861, 863, 864, 864, 864, 863, 864, 864, 864, 864, 865, 866, 865, 865, 865, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 863, 864, 864, 864, 864, 864, 865, 864, 864, 867, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 864, 868, 864, 864, 862, 864, 862, 862, 862, 862, 862, 862, 862, 862, 869, 862, 862, 862, 862, 862, 862, 862, 862, 870, 862, 862, 871, 862, 872, 862, 862, 862, 864, 864, 864, 864, 864, 862, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 873, 873, 873, 873, 873, 873, 873, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 873, 873, 873, 873, 862, 873, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 873, 873, 873, 873, 873, 862, 865, 874, 865, 865, 865, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 865, 874, 875, 876, 877, 878, 879, 881, 880, 882, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 884, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 885, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 886, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 887, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 888, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 884, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 889, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 890, 862, 862, 862, 862, 862, 862, 862, 891, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 892, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 893, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 884, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 894, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 884, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 895, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 896, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 888, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 898, 221, 221, 221, 898, 221, 221, 221, 221, 899, 900, 899, 899, 899, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 898, 221, 221, 221, 221, 221, 899, 901, 221, 902, 221, 903, 904, 221, 905, 221, 906, 907, 221, 908, 909, 910, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 911, 221, 912, 913, 914, 915, 221, 916, 917, 916, 916, 918, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 919, 920, 221, 921, 922, 221, 923, 924, 925, 926, 927, 928, 897, 897, 929, 897, 897, 897, 930, 931, 932, 897, 897, 933, 934, 935, 936, 897, 937, 897, 938, 897, 939, 940, 221, 921, 221, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 945, 944, 944, 946, 944, 947, 949, 950, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 951, 948, 953, 952, 954, 955, 956, 899, 957, 899, 899, 899, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 899, 957, 959, 958, 961, 962, 961, 961, 961, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 961, 960, 221, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 221, 963, 964, 965, 966, 967, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 969, 969, 969, 969, 969, 969, 969, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 969, 969, 969, 969, 969, 969, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 969, 969, 969, 969, 969, 968, 972, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 221, 971, 973, 975, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 221, 974, 221, 211, 222, 223, 222, 222, 222, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 222, 971, 971, 224, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 971, 971, 971, 221, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 226, 971, 239, 240, 239, 239, 239, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 238, 238, 241, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 243, 238, 222, 223, 222, 222, 222, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 222, 971, 971, 224, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 971, 971, 971, 221, 221, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 226, 971, 977, 963, 979, 978, 981, 980, 963, 982, 982, 982, 963, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 963, 982, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 984, 985, 963, 986, 247, 987, 985, 963, 963, 988, 989, 963, 989, 963, 247, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 990, 963, 991, 992, 993, 963, 994, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 995, 963, 963, 247, 983, 247, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 963, 996, 963, 997, 963, 983, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 999, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 998, 998, 998, 1000, 998, 999, 998, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 998, 998, 998, 998, 983, 998, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 998, 998, 998, 998, 998, 983, 1002, 1001, 1003, 1005, 1006, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1007, 1004, 1009, 1010, 1008, 1011, 1012, 1013, 1014, 247, 998, 998, 1015, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 247, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 998, 998, 998, 998, 998, 998, 998, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 998, 998, 998, 998, 246, 998, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 998, 998, 998, 998, 998, 246, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 998, 1016, 998, 247, 998, 247, 998, 247, 1017, 998, 247, 998, 247, 998, 247, 247, 998, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1018, 1018, 1018, 1018, 1018, 1018, 1021, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1018, 1018, 1018, 1018, 1019, 1018, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1018, 1018, 1018, 1018, 1018, 1019, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1022, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1024, 1024, 1024, 1024, 1025, 1024, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1024, 1024, 1024, 1024, 1024, 1025, 1016, 998, 1015, 998, 1027, 1028, 963, 1029, 262, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 263, 252, 264, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 263, 253, 263, 266, 221, 963, 921, 221, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 221, 963, 221, 972, 963, 1033, 1032, 1032, 1032, 1033, 1032, 1032, 1032, 1032, 1034, 1035, 1034, 1034, 1034, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1033, 1032, 1032, 1032, 1032, 1032, 1034, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1032, 1037, 1032, 1032, 1036, 1032, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1032, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1038, 1038, 1038, 1038, 1039, 1038, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1038, 1038, 1038, 1038, 1038, 1039, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1040, 1040, 1040, 1040, 1041, 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1040, 1040, 1040, 1040, 1040, 1041, 1044, 1043, 1043, 1043, 1044, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1044, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1046, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1047, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1048, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1049, 1043, 1043, 1050, 1043, 1051, 1052, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1053, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1053, 1053, 1056, 1056, 290, 290, 290, 1056, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 1056, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 1057, 290, 1058, 1059, 1060, 1060, 290, 290, 290, 1060, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 1060, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 1061, 290, 289, 1060, 1062, 1063, 1064, 1064, 275, 275, 275, 1064, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 1064, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 1065, 275, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1066, 1066, 1066, 1066, 1066, 1066, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1066, 1066, 1066, 1066, 1066, 1066, 1064, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1068, 1068, 1068, 1068, 1068, 1068, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1068, 1068, 1068, 1068, 1068, 1068, 1067, 1067, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1069, 1069, 1069, 1069, 1069, 1069, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1069, 1069, 1069, 1069, 1069, 1069, 1060, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071, 1071, 1071, 1071, 1071, 1071, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071, 1071, 1071, 1071, 1071, 1071, 1070, 1070, 1060, 268, 268, 268, 1060, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1060, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1072, 268, 1056, 275, 275, 275, 1056, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 1056, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 277, 275, 1056, 1073, 1073, 1073, 1056, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1056, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1074, 1073, 1075, 1076, 1076, 1073, 1073, 1073, 1076, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1076, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1077, 1073, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1078, 1078, 1078, 1078, 1078, 1078, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1078, 1078, 1078, 1078, 1078, 1078, 1076, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1080, 1080, 1080, 1080, 1080, 1080, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1080, 1080, 1080, 1080, 1080, 1080, 1079, 1079, 1076, 268, 268, 268, 1076, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1076, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1072, 268, 1081, 1076, 1076, 275, 275, 275, 1076, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 1076, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 277, 275, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1083, 1083, 1083, 1083, 1083, 1083, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1083, 1083, 1083, 1083, 1083, 1083, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1084, 1082, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1085, 1085, 1085, 1085, 1085, 1085, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1085, 1085, 1085, 1085, 1085, 1085, 1082, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1086, 1086, 1086, 1086, 1086, 1086, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1086, 1086, 1086, 1086, 1086, 1086, 1082, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1087, 1087, 1087, 1087, 1087, 1087, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1087, 1087, 1087, 1087, 1087, 1087, 1082, 1088, 1091, 1090, 1090, 1090, 1091, 1090, 1090, 1090, 1090, 1092, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1091, 1090, 1090, 1090, 1090, 1090, 1092, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1093, 1093, 1093, 1093, 1093, 1093, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1093, 1093, 1093, 1093, 1093, 1093, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1094, 1090, 1091, 1090, 1090, 1090, 1091, 1090, 1090, 1090, 1090, 1089, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1091, 1090, 1090, 1090, 1090, 1090, 1089, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1095, 1095, 1095, 1095, 1095, 1095, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1095, 1095, 1095, 1095, 1095, 1095, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1096, 1090, 1089, 1091, 1095, 1095, 1095, 1091, 1095, 1095, 1095, 1095, 1089, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1091, 1095, 1095, 1095, 1095, 1095, 1089, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1089, 1095, 1097, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1092, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1092, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1089, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1095, 1095, 1095, 1095, 1095, 1095, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1095, 1095, 1095, 1095, 1095, 1095, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1101, 1101, 1101, 1101, 1101, 1101, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1101, 1101, 1101, 1101, 1101, 1101, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1103, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1104, 1104, 1104, 1104, 1104, 1104, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1104, 1104, 1104, 1104, 1104, 1104, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1105, 1105, 1105, 1105, 1105, 1105, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1105, 1105, 1105, 1105, 1105, 1105, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1106, 1106, 1106, 1106, 1106, 1106, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1106, 1106, 1106, 1106, 1106, 1106, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1107, 1107, 1107, 1107, 1107, 1107, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1107, 1107, 1107, 1107, 1107, 1107, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1089, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1110, 1110, 1110, 1110, 1110, 1110, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1110, 1110, 1110, 1110, 1110, 1110, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1111, 1111, 1111, 1111, 1111, 1111, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1111, 1111, 1111, 1111, 1111, 1111, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1112, 1112, 1112, 1112, 1112, 1112, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1112, 1112, 1112, 1112, 1112, 1112, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1113, 1113, 1113, 1113, 1113, 1113, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1113, 1113, 1113, 1113, 1113, 1113, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1114, 1114, 1114, 1114, 1114, 1114, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1114, 1114, 1114, 1114, 1114, 1114, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1115, 1115, 1115, 1115, 1115, 1115, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1115, 1115, 1115, 1115, 1115, 1115, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1116, 1116, 1116, 1116, 1116, 1116, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1116, 1116, 1116, 1116, 1116, 1116, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1117, 1117, 1117, 1117, 1117, 1117, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1117, 1117, 1117, 1117, 1117, 1117, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1118, 1118, 1118, 1118, 1118, 1118, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1118, 1118, 1118, 1118, 1118, 1118, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1119, 1119, 1119, 1119, 1119, 1119, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1119, 1119, 1119, 1119, 1119, 1119, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1120, 1120, 1120, 1120, 1120, 1120, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1120, 1120, 1120, 1120, 1120, 1120, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1121, 1122, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1124, 1124, 1124, 1124, 1124, 1124, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1124, 1124, 1124, 1124, 1124, 1124, 1123, 1123, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 296, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 211, 211, 298, 211, 296, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 211, 211, 211, 211, 295, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 211, 211, 211, 211, 211, 295, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 296, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 963, 963, 298, 963, 296, 963, 295, 295, 295, 295, 1125, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 963, 963, 963, 963, 295, 963, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 963, 963, 963, 963, 963, 295, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 296, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 963, 963, 298, 963, 296, 963, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 1126, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 963, 963, 963, 963, 295, 963, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 963, 963, 963, 963, 963, 295, 1127, 1128, 963, 958, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 1129, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 1130, 1131, 897, 897, 897, 897, 897, 1132, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1133, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 1134, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1135, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 1136, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1137, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1138, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 1139, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 1140, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 1141, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 296, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 211, 211, 298, 211, 296, 211, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 211, 211, 211, 211, 897, 211, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 211, 211, 211, 211, 211, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1142, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1143, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 1139, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1144, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1143, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1145, 897, 1146, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1147, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 1148, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1149, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1150, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 1151, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1152, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1153, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 1154, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 1155, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1156, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1157, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 1158, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1148, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1159, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1160, 897, 1161, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1162, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1141, 897, 897, 897, 1159, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1163, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1164, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1157, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 1165, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 932, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1155, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 1166, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1167, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 1168, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1169, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1157, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1170, 897, 897, 897, 1171, 897, 897, 897, 897, 897, 1172, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1172, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1173, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 1174, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1175, 1176, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 1177, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1178, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1179, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1182, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1183, 1180, 1180, 1184, 1180, 1182, 1180, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1180, 1180, 1180, 1180, 1181, 1180, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1180, 1180, 1180, 1180, 1180, 1181, 949, 1185, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 951, 948, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1186, 897, 897, 1187, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1152, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1188, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1189, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1159, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1190, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 932, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 1191, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1192, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1152, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1157, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1193, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 1194, 897, 897, 897, 897, 897, 897, 897, 1195, 897, 897, 897, 897, 897, 897, 897, 1196, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1159, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1197, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1198, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1166, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1199, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1166, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 1200, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1152, 897, 897, 897, 1201, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1202, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1166, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1203, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1204, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1146, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 1205, 221, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 1206, 963, 1208, 1207, 1207, 1207, 1208, 1207, 1207, 1207, 1207, 1209, 1210, 1209, 1209, 1209, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1208, 1207, 1207, 1207, 1207, 1207, 1209, 1207, 1207, 1211, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1212, 1207, 1209, 1213, 1209, 1209, 1209, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1209, 1213, 1214, 1215, 1216, 1217, 1218, 1220, 1219, 1221, 1223, 1224, 1224, 1224, 1223, 1224, 1224, 1224, 1224, 1225, 1226, 1225, 1225, 1225, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1223, 1224, 1224, 1224, 1224, 1224, 1225, 1224, 1227, 1228, 1224, 1224, 1224, 1227, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1224, 1229, 1224, 1224, 1222, 1224, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1224, 1224, 1224, 1224, 1224, 1222, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 304, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 305, 1230, 1230, 1230, 1230, 304, 1230, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 1230, 1230, 1230, 1230, 303, 1230, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 1230, 1230, 1230, 1230, 1230, 303, 1225, 1231, 1225, 1225, 1225, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1225, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1230, 1238, 1240, 1241, 1241, 1241, 1240, 1241, 1241, 1241, 1241, 1242, 1243, 1242, 1242, 1242, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1240, 1241, 1241, 1241, 1241, 1241, 1242, 1244, 1245, 1246, 1247, 1248, 1249, 1245, 1250, 1251, 1252, 1248, 1253, 1254, 1255, 1248, 1256, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1265, 1265, 1267, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1268, 1269, 1270, 1248, 1271, 1245, 1272, 1273, 1274, 1275, 1276, 1277, 1239, 1239, 1278, 1239, 1239, 1239, 1279, 1280, 1281, 1239, 1239, 1282, 1283, 1284, 1285, 1239, 1286, 1239, 1287, 1239, 1288, 1289, 1290, 1291, 1241, 1239, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1292, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 313, 313, 313, 313, 313, 1292, 313, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 313, 313, 313, 313, 1239, 313, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 313, 313, 313, 313, 313, 1239, 1294, 1293, 1295, 1242, 1296, 1242, 1242, 1242, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1242, 1296, 1297, 1299, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1299, 1298, 1300, 1301, 1302, 1303, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 308, 308, 1304, 308, 1304, 308, 308, 1304, 1304, 308, 308, 308, 1305, 308, 308, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 308, 308, 308, 308, 308, 308, 308, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1304, 308, 1304, 1304, 325, 308, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1304, 1304, 1304, 308, 1304, 325, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1307, 1307, 1307, 1307, 325, 1307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1307, 1307, 1307, 1307, 1307, 325, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1307, 1308, 313, 1248, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1310, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1308, 1309, 1311, 1312, 1248, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1308, 1313, 1308, 1314, 1309, 1316, 1315, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 1315, 1318, 1317, 1319, 1317, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1321, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1322, 1320, 1320, 1320, 1320, 1320, 1321, 1320, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 310, 1320, 1324, 1323, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1326, 1323, 1327, 1328, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1329, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1330, 1323, 1323, 1323, 1323, 1323, 1323, 1331, 1323, 1323, 1326, 1323, 1327, 1328, 1323, 1323, 1323, 1332, 1323, 1323, 1323, 1323, 1323, 1329, 1323, 1323, 1333, 1323, 1323, 1323, 1323, 1323, 1330, 1323, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1335, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1336, 1334, 1334, 1334, 1334, 1334, 1335, 1334, 1334, 1334, 1337, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1338, 1334, 1339, 313, 1339, 313, 313, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 313, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1339, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1341, 1340, 1343, 1342, 1344, 1346, 1345, 1345, 1345, 1347, 1345, 1348, 1349, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1331, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1332, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1333, 1323, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1351, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1332, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1333, 1323, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1354, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1357, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1359, 1358, 1360, 1362, 1361, 1361, 1361, 1363, 1361, 1365, 1364, 1366, 1367, 1369, 1369, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1370, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1371, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1372, 1368, 1373, 1373, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1374, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1373, 1373, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1357, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1377, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1378, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1379, 1375, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1382, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1383, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1384, 1380, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1386, 1386, 1386, 1386, 1386, 1386, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1387, 1385, 1386, 1386, 1386, 1386, 1386, 1386, 1385, 1385, 1388, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1389, 1385, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1391, 1352, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1357, 1352, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1393, 1392, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1395, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1396, 1392, 1392, 1392, 1392, 1392, 1395, 1392, 1392, 1392, 1397, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1398, 1392, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1400, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1397, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1398, 1392, 1401, 1352, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1403, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1404, 1352, 1352, 1352, 1352, 1352, 1403, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1357, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1310, 1317, 1248, 1405, 1309, 1299, 1309, 1406, 1407, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1299, 1317, 1299, 1309, 1299, 1248, 1309, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1304, 1304, 1304, 1304, 1304, 1304, 1408, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1304, 1304, 1304, 1304, 325, 1304, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1304, 1304, 1304, 1304, 1304, 325, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1292, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 313, 313, 313, 313, 1292, 313, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 313, 313, 313, 313, 1265, 313, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 313, 313, 313, 313, 313, 1265, 1410, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1265, 1412, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1413, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1414, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1415, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1416, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1415, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1417, 1419, 1418, 1420, 1421, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1423, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1424, 1425, 1239, 1239, 1239, 1239, 1239, 1426, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1427, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1428, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1429, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1430, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1431, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1432, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1433, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1434, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1435, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1436, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1437, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1438, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1439, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1440, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1441, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1437, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1442, 1239, 1443, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1444, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1445, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1446, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1448, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1449, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1450, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1451, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1452, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1453, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1454, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1455, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1456, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1457, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1458, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1459, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1460, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 327, 328, 327, 327, 327, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 327, 1292, 1461, 329, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1461, 1461, 330, 1461, 1461, 1292, 1461, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1461, 331, 1461, 1461, 1239, 1461, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1461, 1461, 1461, 1461, 1461, 1239, 344, 345, 344, 344, 344, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 343, 343, 346, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 349, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 348, 343, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1463, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1464, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1465, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1292, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1466, 1466, 1466, 1466, 1466, 1292, 1466, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1466, 1466, 1466, 1466, 1239, 1466, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1467, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1466, 1466, 1466, 1466, 1466, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1468, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1469, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1470, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1471, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1472, 1239, 1473, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1474, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1475, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1440, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1476, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1477, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1457, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1478, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1281, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1479, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1480, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1440, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1481, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1482, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1483, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1484, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1457, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1485, 1239, 1239, 1239, 1486, 1239, 1239, 1239, 1239, 1239, 1487, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1488, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1454, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1440, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1489, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1490, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1491, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1492, 1493, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1440, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1494, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1495, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1481, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1496, 1239, 1239, 1497, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1440, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1498, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1454, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1499, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1500, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1501, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1440, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1502, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1503, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1489, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1504, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1505, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1451, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1480, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1506, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1507, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1508, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1509, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1510, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1446, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1511, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1512, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1481, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1513, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1481, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1514, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1451, 1239, 1239, 1239, 1515, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1516, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1481, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1517, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1518, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1519, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1489, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1520, 1308, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1248, 1298, 1521, 1523, 1522, 1523, 1523, 1523, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1523, 1522, 1522, 1524, 1522, 1522, 1525, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 357, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1526, 1522, 353, 354, 353, 353, 353, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 353, 1527, 1527, 355, 1527, 1527, 356, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 357, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 358, 1527, 360, 1528, 360, 360, 360, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 360, 1528, 1528, 355, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 358, 1528, 1530, 1529, 1532, 1531, 363, 362, 368, 1527, 366, 1527, 1534, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1535, 1533, 1534, 1533, 1534, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1537, 1533, 1534, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1538, 1533, 1534, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1539, 1533, 1541, 1539, 0]]; + $send(self, '_lex_indicies=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + + self.$attr_accessor("_lex_trans_targs"); + return self.$private("_lex_trans_targs", "_lex_trans_targs="); + })(Opal.get_singleton_class(self), $nesting); + + $writer = [[186, 2, 3, 4, 192, 6, 7, 8, 9, 10, 186, 186, 195, 198, 195, 12, 199, 200, 14, 195, 207, 208, 211, 212, 224, 221, 213, 214, 215, 19, 216, 217, 218, 226, 228, 229, 233, 234, 235, 230, 25, 18, 209, 210, 27, 258, 259, 261, 263, 261, 30, 264, 265, 32, 261, 272, 273, 276, 277, 289, 286, 278, 279, 280, 37, 281, 282, 283, 291, 293, 294, 298, 299, 300, 295, 43, 36, 274, 275, 45, 323, 324, 331, 333, 331, 48, 334, 335, 50, 337, 340, 337, 52, 341, 342, 54, 348, 347, 0, 56, 349, 350, 58, 351, 352, 352, 352, 352, 465, 61, 62, 63, 465, 465, 494, 65, 66, 494, 494, 498, 498, 70, 65, 71, 496, 497, 499, 500, 498, 494, 501, 502, 504, 67, 68, 505, 506, 69, 498, 72, 73, 78, 85, 508, 509, 71, 496, 497, 499, 500, 498, 494, 501, 502, 504, 67, 68, 505, 506, 69, 72, 73, 78, 85, 508, 509, 507, 74, 75, 76, 77, 79, 80, 83, 81, 82, 84, 86, 87, 494, 89, 90, 91, 93, 96, 94, 95, 97, 99, 525, 525, 525, 526, 101, 528, 102, 529, 103, 526, 101, 528, 102, 529, 563, 104, 563, 105, 106, 104, 563, 105, 563, 563, 563, 109, 110, 111, 112, 574, 563, 563, 563, 115, 116, 117, 563, 120, 115, 116, 117, 563, 120, 118, 118, 116, 117, 584, 119, 118, 118, 116, 117, 584, 119, 116, 563, 601, 563, 122, 602, 608, 126, 617, 618, 131, 132, 126, 127, 616, 127, 616, 563, 128, 129, 130, 619, 133, 563, 633, 634, 637, 638, 650, 647, 639, 640, 641, 138, 642, 643, 644, 652, 654, 655, 659, 660, 661, 656, 144, 137, 635, 636, 146, 697, 698, 148, 565, 107, 567, 150, 151, 700, 802, 153, 154, 155, 802, 810, 810, 810, 158, 832, 831, 810, 834, 836, 810, 163, 164, 165, 840, 810, 167, 168, 851, 820, 873, 171, 172, 173, 177, 178, 171, 172, 173, 177, 178, 174, 174, 172, 173, 175, 176, 174, 174, 172, 173, 175, 176, 921, 172, 810, 990, 179, 992, 181, 185, 993, 183, 990, 180, 990, 182, 992, 182, 992, 184, 992, 990, 186, 186, 187, 188, 189, 191, 193, 194, 186, 186, 186, 190, 186, 190, 186, 1, 186, 186, 186, 5, 195, 195, 196, 195, 197, 201, 195, 195, 11, 13, 195, 195, 195, 195, 202, 203, 204, 15, 21, 26, 236, 28, 195, 195, 195, 205, 206, 195, 16, 195, 195, 195, 17, 195, 195, 195, 20, 219, 195, 220, 222, 195, 223, 225, 227, 22, 195, 195, 23, 231, 195, 232, 24, 195, 237, 241, 238, 239, 240, 195, 195, 242, 243, 246, 248, 257, 244, 245, 195, 247, 249, 251, 250, 195, 252, 253, 254, 255, 256, 195, 195, 195, 260, 261, 261, 261, 262, 266, 261, 29, 31, 261, 261, 261, 261, 267, 268, 269, 33, 39, 44, 301, 46, 261, 261, 261, 270, 271, 261, 34, 261, 261, 261, 35, 261, 261, 261, 38, 284, 261, 285, 287, 261, 288, 290, 292, 40, 261, 261, 41, 296, 261, 297, 42, 261, 302, 306, 303, 304, 305, 261, 261, 307, 308, 311, 313, 322, 309, 310, 261, 312, 314, 316, 315, 261, 317, 318, 319, 320, 321, 261, 261, 261, 325, 326, 326, 327, 326, 328, 326, 326, 326, 329, 329, 329, 330, 329, 329, 329, 331, 331, 331, 332, 331, 47, 49, 331, 331, 331, 336, 336, 336, 337, 337, 338, 337, 339, 337, 337, 51, 53, 337, 337, 337, 343, 343, 344, 343, 343, 345, 346, 345, 55, 57, 347, 347, 347, 353, 352, 352, 354, 355, 356, 357, 359, 362, 363, 364, 365, 352, 366, 367, 369, 371, 372, 373, 377, 379, 380, 381, 397, 402, 409, 414, 421, 428, 431, 432, 436, 430, 440, 448, 452, 454, 459, 461, 464, 352, 352, 352, 352, 352, 352, 358, 352, 358, 352, 360, 59, 361, 352, 60, 352, 352, 368, 370, 352, 374, 375, 376, 372, 378, 352, 382, 383, 392, 395, 384, 385, 386, 387, 388, 389, 390, 391, 353, 393, 394, 396, 398, 401, 399, 400, 403, 406, 404, 405, 407, 408, 410, 412, 411, 413, 415, 416, 352, 417, 418, 419, 420, 352, 422, 425, 423, 424, 426, 427, 429, 433, 434, 435, 437, 439, 438, 441, 442, 443, 445, 444, 446, 447, 449, 450, 451, 453, 455, 456, 457, 458, 460, 462, 463, 466, 465, 465, 467, 468, 470, 471, 465, 465, 465, 469, 465, 469, 64, 472, 465, 474, 473, 473, 477, 478, 479, 480, 473, 482, 483, 484, 485, 487, 489, 490, 491, 492, 493, 473, 475, 473, 476, 473, 473, 473, 473, 473, 481, 473, 481, 486, 473, 488, 473, 494, 494, 495, 510, 511, 497, 513, 514, 501, 515, 516, 517, 518, 519, 521, 522, 523, 524, 494, 494, 494, 494, 494, 494, 498, 503, 494, 494, 494, 494, 494, 494, 494, 494, 494, 512, 494, 512, 494, 494, 494, 494, 520, 494, 88, 92, 98, 525, 527, 530, 100, 525, 525, 526, 531, 531, 532, 533, 535, 537, 538, 531, 531, 534, 531, 534, 531, 536, 531, 531, 531, 540, 539, 539, 541, 542, 543, 545, 547, 548, 553, 560, 539, 539, 539, 539, 544, 539, 544, 539, 546, 539, 539, 540, 549, 550, 551, 552, 554, 555, 558, 556, 557, 559, 561, 562, 564, 563, 572, 573, 575, 576, 578, 579, 580, 581, 583, 585, 586, 589, 590, 615, 621, 622, 623, 700, 701, 702, 703, 704, 582, 706, 723, 728, 735, 740, 742, 748, 751, 752, 756, 750, 760, 771, 775, 778, 786, 790, 793, 794, 563, 104, 105, 563, 107, 566, 563, 563, 568, 570, 571, 563, 569, 563, 563, 563, 563, 563, 108, 563, 563, 563, 563, 563, 577, 563, 577, 563, 563, 113, 563, 114, 563, 563, 582, 563, 587, 563, 588, 563, 563, 563, 591, 600, 563, 121, 603, 604, 605, 563, 606, 123, 609, 610, 124, 613, 614, 563, 592, 594, 563, 593, 563, 563, 595, 598, 599, 563, 596, 597, 563, 563, 563, 563, 563, 563, 607, 563, 601, 611, 612, 563, 611, 563, 601, 611, 125, 620, 563, 563, 563, 624, 563, 563, 563, 625, 627, 563, 626, 563, 626, 563, 628, 629, 630, 134, 140, 145, 662, 147, 563, 563, 563, 631, 632, 563, 135, 563, 563, 563, 136, 563, 563, 563, 139, 645, 563, 646, 648, 563, 649, 651, 653, 141, 563, 563, 142, 657, 563, 658, 143, 563, 663, 667, 664, 665, 666, 563, 563, 668, 669, 672, 683, 696, 670, 671, 563, 673, 674, 675, 677, 676, 563, 678, 679, 680, 681, 682, 684, 691, 685, 686, 687, 688, 689, 690, 692, 693, 694, 695, 563, 563, 563, 699, 149, 152, 563, 705, 707, 708, 718, 721, 709, 710, 711, 712, 713, 714, 715, 716, 717, 719, 720, 722, 724, 727, 725, 726, 729, 732, 730, 731, 733, 734, 736, 738, 737, 739, 741, 743, 745, 744, 746, 747, 749, 717, 753, 754, 755, 757, 759, 758, 761, 762, 763, 768, 764, 765, 766, 563, 564, 565, 107, 767, 570, 769, 770, 772, 773, 774, 776, 777, 779, 780, 781, 784, 782, 783, 785, 787, 788, 789, 791, 792, 563, 582, 795, 795, 796, 797, 798, 800, 795, 795, 795, 799, 795, 799, 795, 801, 795, 803, 802, 802, 804, 805, 802, 806, 808, 802, 802, 802, 802, 807, 802, 807, 809, 802, 811, 810, 810, 814, 815, 816, 810, 817, 819, 822, 823, 824, 825, 826, 810, 827, 828, 833, 861, 865, 810, 866, 868, 870, 810, 871, 872, 874, 878, 880, 881, 883, 884, 902, 907, 914, 922, 929, 936, 941, 942, 946, 940, 951, 961, 967, 970, 979, 983, 987, 988, 989, 822, 812, 810, 813, 810, 810, 810, 810, 810, 810, 818, 810, 818, 810, 156, 821, 810, 810, 810, 810, 810, 810, 810, 810, 810, 829, 810, 830, 810, 810, 157, 159, 810, 160, 842, 853, 856, 835, 857, 858, 843, 847, 849, 810, 835, 160, 837, 839, 161, 810, 837, 810, 838, 810, 810, 162, 841, 810, 810, 844, 846, 810, 844, 845, 847, 849, 846, 810, 848, 810, 810, 850, 852, 810, 166, 810, 810, 810, 854, 846, 847, 849, 854, 855, 810, 844, 846, 847, 849, 810, 844, 846, 847, 849, 810, 859, 846, 847, 849, 859, 860, 810, 160, 861, 835, 862, 847, 849, 863, 846, 160, 863, 835, 864, 867, 869, 810, 169, 170, 810, 810, 875, 876, 877, 872, 879, 810, 810, 882, 810, 810, 810, 885, 886, 895, 900, 887, 888, 889, 890, 891, 892, 893, 894, 811, 896, 897, 898, 899, 811, 901, 903, 906, 904, 905, 811, 811, 908, 911, 909, 910, 912, 913, 811, 915, 917, 916, 918, 919, 920, 810, 810, 923, 811, 924, 810, 925, 926, 927, 928, 812, 930, 933, 931, 932, 934, 935, 937, 938, 939, 811, 943, 944, 945, 947, 949, 950, 948, 811, 952, 953, 954, 957, 955, 956, 958, 959, 960, 962, 964, 963, 965, 966, 968, 969, 971, 972, 974, 977, 973, 975, 976, 978, 980, 981, 982, 984, 985, 986, 810, 810, 990, 991, 995, 996, 997, 990, 990, 990, 994, 990, 990, 999, 998, 1000, 998, 1001, 1002, 1003, 998, 998]]; + $send(self, '_lex_trans_targs=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + + self.$attr_accessor("_lex_trans_actions"); + return self.$private("_lex_trans_actions", "_lex_trans_actions="); + })(Opal.get_singleton_class(self), $nesting); + + $writer = [[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 0, 0, 0, 0, 6, 0, 7, 0, 8, 0, 0, 7, 0, 0, 0, 0, 8, 0, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 10, 0, 0, 0, 0, 11, 0, 7, 0, 8, 0, 0, 7, 0, 0, 0, 0, 8, 0, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 13, 0, 0, 0, 0, 14, 0, 15, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 17, 18, 19, 20, 21, 0, 0, 0, 22, 23, 24, 0, 0, 25, 26, 27, 28, 29, 30, 30, 31, 32, 30, 33, 32, 34, 32, 30, 30, 31, 30, 35, 30, 30, 36, 30, 30, 30, 30, 30, 30, 0, 37, 38, 0, 39, 38, 40, 38, 0, 0, 37, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 46, 0, 0, 0, 46, 29, 47, 30, 30, 30, 47, 48, 0, 49, 0, 29, 30, 50, 30, 51, 52, 53, 0, 0, 0, 0, 0, 54, 55, 56, 0, 29, 0, 57, 0, 30, 58, 30, 59, 30, 60, 61, 62, 61, 63, 61, 0, 64, 65, 64, 66, 64, 67, 68, 0, 69, 0, 0, 0, 0, 70, 70, 0, 0, 71, 71, 72, 0, 29, 73, 0, 0, 0, 70, 0, 74, 0, 7, 0, 8, 0, 0, 7, 0, 0, 0, 0, 8, 0, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 75, 76, 0, 0, 0, 77, 78, 79, 80, 0, 7, 7, 81, 82, 82, 83, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 30, 58, 30, 30, 30, 60, 61, 62, 61, 61, 61, 0, 64, 65, 64, 64, 64, 85, 67, 86, 87, 0, 88, 0, 89, 89, 0, 90, 0, 91, 60, 92, 0, 93, 29, 94, 95, 98, 99, 0, 29, 0, 7, 0, 7, 100, 101, 102, 60, 103, 0, 104, 0, 105, 106, 107, 0, 108, 109, 0, 110, 7, 7, 111, 112, 0, 0, 113, 114, 115, 116, 117, 117, 117, 117, 117, 117, 117, 117, 118, 119, 120, 0, 0, 121, 0, 122, 123, 124, 0, 125, 126, 127, 0, 0, 128, 0, 0, 129, 0, 7, 0, 0, 130, 131, 0, 0, 132, 0, 29, 133, 0, 0, 0, 0, 0, 134, 135, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 138, 139, 140, 0, 141, 142, 143, 7, 7, 144, 0, 0, 145, 146, 147, 148, 117, 117, 117, 117, 117, 117, 117, 117, 149, 150, 151, 0, 0, 152, 0, 153, 154, 155, 0, 156, 157, 158, 0, 0, 159, 0, 0, 160, 0, 7, 0, 0, 161, 162, 0, 0, 163, 0, 29, 164, 0, 0, 0, 0, 0, 165, 166, 0, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 169, 170, 171, 0, 172, 173, 0, 174, 0, 175, 176, 177, 178, 179, 180, 0, 181, 182, 183, 184, 185, 186, 7, 187, 0, 0, 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, 7, 197, 198, 0, 0, 199, 200, 201, 202, 203, 0, 204, 205, 206, 0, 207, 0, 0, 208, 209, 210, 211, 212, 213, 0, 29, 0, 0, 7, 7, 0, 0, 0, 214, 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 217, 218, 219, 220, 221, 60, 222, 0, 223, 0, 0, 0, 224, 0, 225, 226, 0, 0, 227, 0, 0, 0, 228, 0, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 232, 233, 0, 0, 7, 0, 234, 235, 236, 60, 237, 0, 0, 29, 238, 0, 239, 240, 0, 29, 0, 0, 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 242, 0, 243, 0, 244, 245, 246, 247, 248, 60, 249, 0, 0, 250, 0, 251, 252, 253, 254, 29, 0, 28, 0, 0, 28, 0, 0, 0, 0, 0, 0, 7, 7, 7, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 269, 270, 60, 271, 0, 272, 273, 274, 275, 276, 277, 0, 0, 0, 278, 7, 7, 0, 279, 280, 281, 282, 283, 0, 0, 0, 0, 0, 284, 285, 60, 286, 0, 287, 29, 288, 289, 290, 291, 292, 293, 0, 29, 0, 0, 0, 0, 0, 0, 294, 295, 296, 297, 60, 298, 0, 299, 29, 300, 301, 302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 303, 304, 0, 8, 0, 0, 7, 305, 0, 0, 305, 305, 0, 0, 7, 306, 0, 306, 0, 306, 306, 306, 0, 0, 306, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 0, 0, 307, 308, 308, 309, 310, 0, 311, 312, 0, 75, 0, 313, 0, 314, 315, 316, 317, 318, 30, 319, 320, 321, 322, 323, 60, 324, 0, 325, 326, 0, 327, 0, 328, 329, 305, 330, 0, 331, 0, 332, 333, 334, 0, 0, 335, 0, 0, 0, 0, 336, 0, 0, 0, 0, 0, 0, 0, 337, 0, 0, 338, 0, 339, 340, 0, 0, 0, 341, 0, 0, 342, 343, 344, 345, 346, 347, 0, 348, 349, 349, 0, 350, 0, 351, 352, 352, 0, 0, 353, 354, 355, 0, 356, 357, 358, 0, 7, 359, 360, 361, 0, 362, 117, 117, 117, 117, 117, 117, 117, 117, 363, 364, 365, 0, 0, 366, 0, 367, 368, 369, 0, 370, 371, 372, 0, 0, 373, 0, 0, 374, 0, 7, 0, 0, 375, 376, 0, 0, 377, 0, 29, 378, 0, 0, 0, 0, 0, 379, 380, 0, 0, 0, 0, 0, 0, 0, 381, 0, 0, 0, 0, 0, 382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 383, 384, 385, 0, 0, 0, 386, 29, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 75, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 387, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 388, 389, 390, 391, 392, 392, 388, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 393, 394, 395, 396, 0, 29, 0, 0, 397, 398, 399, 60, 400, 0, 401, 29, 402, 7, 403, 404, 0, 29, 405, 0, 0, 406, 407, 408, 409, 60, 410, 0, 29, 411, 412, 413, 414, 0, 29, 0, 415, 0, 7, 416, 0, 0, 0, 0, 417, 0, 0, 418, 418, 0, 419, 0, 0, 0, 420, 7, 421, 421, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 422, 423, 424, 0, 425, 426, 427, 428, 429, 430, 60, 431, 0, 432, 0, 0, 433, 434, 435, 436, 437, 438, 439, 440, 441, 0, 442, 0, 443, 444, 0, 0, 445, 446, 447, 0, 0, 448, 0, 0, 447, 449, 449, 450, 451, 0, 452, 453, 0, 454, 455, 456, 0, 457, 458, 0, 0, 459, 460, 447, 447, 461, 0, 0, 462, 462, 0, 463, 0, 464, 465, 7, 0, 466, 0, 467, 468, 469, 470, 470, 471, 471, 0, 0, 472, 473, 473, 474, 474, 475, 476, 476, 477, 477, 478, 479, 479, 480, 480, 0, 0, 481, 482, 483, 484, 485, 486, 486, 483, 485, 487, 418, 488, 0, 0, 0, 489, 0, 0, 490, 491, 421, 421, 421, 492, 421, 493, 494, 29, 495, 496, 497, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 498, 0, 0, 0, 0, 492, 0, 0, 0, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 501, 0, 0, 0, 0, 0, 500, 502, 503, 0, 504, 0, 505, 0, 0, 0, 0, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 507, 0, 0, 0, 0, 0, 0, 0, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 508, 509, 510, 511, 511, 89, 511, 512, 513, 514, 0, 515, 516, 0, 517, 0, 518, 0, 0, 0, 519, 520]]; + $send(self, '_lex_trans_actions=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + + self.$attr_accessor("_lex_to_state_actions"); + return self.$private("_lex_to_state_actions", "_lex_to_state_actions="); + })(Opal.get_singleton_class(self), $nesting); + + $writer = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 96, 0, 96, 0, 0, 0, 0, 96, 96, 0, 0, 0, 0, 0, 96, 0, 96, 0, 96, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0]]; + $send(self, '_lex_to_state_actions=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + + self.$attr_accessor("_lex_from_state_actions"); + return self.$private("_lex_from_state_actions", "_lex_from_state_actions="); + })(Opal.get_singleton_class(self), $nesting); + + $writer = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 97, 0, 97, 0, 0, 0, 0, 97, 97, 0, 0, 0, 0, 0, 97, 0, 97, 0, 97, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0]]; + $send(self, '_lex_from_state_actions=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + + self.$attr_accessor("_lex_eof_trans"); + return self.$private("_lex_eof_trans", "_lex_eof_trans="); + })(Opal.get_singleton_class(self), $nesting); + + $writer = [[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 48, 48, 48, 48, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 83, 83, 83, 83, 90, 90, 90, 90, 0, 0, 0, 0, 105, 107, 109, 109, 109, 109, 115, 115, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 190, 192, 192, 192, 204, 204, 204, 212, 214, 214, 214, 214, 214, 220, 212, 212, 212, 212, 212, 212, 212, 246, 246, 246, 246, 246, 246, 212, 262, 212, 262, 246, 246, 212, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 212, 246, 246, 246, 246, 303, 303, 303, 308, 310, 310, 310, 314, 314, 317, 317, 317, 317, 322, 322, 322, 308, 314, 314, 314, 314, 314, 314, 314, 314, 314, 353, 360, 362, 362, 362, 362, 353, 0, 378, 379, 380, 382, 384, 386, 384, 384, 0, 396, 397, 401, 401, 402, 403, 412, 413, 414, 414, 414, 417, 417, 419, 420, 421, 421, 421, 423, 424, 425, 425, 425, 428, 428, 421, 431, 431, 421, 417, 417, 436, 437, 437, 437, 440, 440, 437, 437, 437, 443, 443, 443, 443, 449, 450, 450, 450, 450, 458, 450, 450, 450, 450, 463, 450, 450, 450, 450, 450, 450, 469, 470, 471, 471, 0, 478, 482, 482, 483, 484, 493, 494, 495, 495, 495, 498, 498, 500, 501, 502, 502, 502, 504, 505, 506, 506, 506, 509, 509, 502, 512, 512, 502, 498, 498, 517, 518, 518, 518, 521, 521, 518, 518, 518, 524, 524, 524, 524, 530, 531, 531, 531, 531, 539, 531, 531, 531, 531, 544, 531, 531, 531, 531, 531, 531, 550, 551, 552, 552, 0, 559, 560, 0, 566, 0, 573, 577, 577, 578, 0, 0, 587, 588, 592, 592, 593, 0, 598, 0, 601, 0, 604, 604, 605, 606, 0, 647, 649, 650, 651, 652, 654, 656, 660, 660, 651, 651, 651, 651, 662, 651, 651, 656, 651, 651, 647, 666, 666, 666, 666, 666, 666, 656, 656, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 705, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 651, 0, 749, 750, 751, 753, 749, 749, 757, 0, 776, 778, 780, 781, 782, 783, 784, 786, 783, 783, 783, 783, 783, 789, 783, 783, 791, 789, 789, 783, 0, 810, 811, 115, 115, 814, 815, 115, 811, 811, 818, 820, 823, 811, 824, 811, 825, 826, 828, 830, 811, 818, 831, 831, 820, 831, 835, 831, 831, 831, 831, 0, 190, 843, 844, 843, 843, 0, 853, 854, 856, 858, 860, 858, 862, 0, 874, 875, 876, 877, 879, 881, 883, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 0, 942, 945, 948, 949, 953, 955, 956, 957, 958, 959, 961, 964, 965, 967, 969, 972, 974, 975, 212, 972, 977, 972, 964, 979, 981, 964, 964, 999, 1002, 1004, 1005, 1009, 1012, 1013, 1014, 1015, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 1019, 1023, 1025, 999, 999, 964, 1030, 1031, 1031, 1031, 964, 964, 964, 1032, 1039, 1039, 1041, 1043, 1052, 1053, 1054, 1054, 1054, 1057, 1057, 1059, 1060, 1061, 1061, 1061, 1063, 1064, 1065, 1065, 1065, 1068, 1068, 1061, 1071, 1071, 1061, 1057, 1057, 1076, 1077, 1077, 1077, 1080, 1080, 1077, 1077, 1077, 1083, 1083, 1083, 1083, 1089, 1090, 1090, 1090, 1090, 1098, 1090, 1090, 1090, 1090, 1104, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1122, 1123, 1124, 1124, 212, 964, 964, 1128, 964, 959, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 212, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 1181, 949, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 1206, 964, 0, 1214, 1215, 1216, 1218, 1220, 1222, 0, 1231, 1232, 1233, 1234, 1236, 1231, 1239, 0, 314, 1294, 1296, 1297, 1298, 1299, 1301, 1303, 1305, 1308, 1308, 314, 1310, 1312, 1313, 1314, 1310, 1316, 1318, 1318, 1321, 1321, 1324, 1335, 314, 1341, 1343, 1345, 1346, 1349, 1350, 1324, 1324, 1353, 1353, 1353, 1359, 1361, 1362, 1365, 1367, 1368, 1369, 1353, 1353, 1376, 1381, 1386, 1353, 1353, 1393, 1393, 1353, 1353, 1318, 1310, 1310, 1318, 1310, 1310, 1305, 314, 1411, 1412, 1412, 1412, 1412, 1412, 1412, 1418, 1305, 1421, 1422, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1462, 1463, 1423, 1423, 1467, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1521, 1299, 1522, 0, 1528, 1529, 1530, 1532, 1528, 1528, 1528, 0, 1537, 1537, 1537, 1537, 1541]]; + $send(self, '_lex_eof_trans=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_start") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [186]; + $send(self, 'lex_start=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_error") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [0]; + $send(self, 'lex_error=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_interp_words") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [195]; + $send(self, 'lex_en_interp_words=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_interp_string") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [261]; + $send(self, 'lex_en_interp_string=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_plain_words") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [326]; + $send(self, 'lex_en_plain_words=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_plain_string") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [329]; + $send(self, 'lex_en_plain_string=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_interp_backslash_delimited") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [331]; + $send(self, 'lex_en_interp_backslash_delimited=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_plain_backslash_delimited") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [336]; + $send(self, 'lex_en_plain_backslash_delimited=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_interp_backslash_delimited_words") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [337]; + $send(self, 'lex_en_interp_backslash_delimited_words=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_plain_backslash_delimited_words") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [343]; + $send(self, 'lex_en_plain_backslash_delimited_words=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_regexp_modifiers") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [345]; + $send(self, 'lex_en_regexp_modifiers=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_variable") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [347]; + $send(self, 'lex_en_expr_variable=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_fname") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [352]; + $send(self, 'lex_en_expr_fname=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_endfn") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [465]; + $send(self, 'lex_en_expr_endfn=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_dot") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [473]; + $send(self, 'lex_en_expr_dot=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_arg") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [494]; + $send(self, 'lex_en_expr_arg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_cmdarg") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [525]; + $send(self, 'lex_en_expr_cmdarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_endarg") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [531]; + $send(self, 'lex_en_expr_endarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_mid") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [539]; + $send(self, 'lex_en_expr_mid=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_beg") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [563]; + $send(self, 'lex_en_expr_beg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_labelarg") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [795]; + $send(self, 'lex_en_expr_labelarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_value") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [802]; + $send(self, 'lex_en_expr_value=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_end") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [810]; + $send(self, 'lex_en_expr_end=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_leading_dot") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [990]; + $send(self, 'lex_en_leading_dot=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_line_comment") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [998]; + $send(self, 'lex_en_line_comment=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_line_begin") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [186]; + $send(self, 'lex_en_line_begin=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + $const_set($nesting[0], 'ESCAPES', $hash("a".$ord(), "\u0007", "b".$ord(), "\b", "e".$ord(), "\u001b", "f".$ord(), "\f", "n".$ord(), "\n", "r".$ord(), "\r", "s".$ord(), " ", "t".$ord(), "\t", "v".$ord(), "\v", "\\".$ord(), "\\").$freeze()); + $const_set($nesting[0], 'REGEXP_META_CHARACTERS', $send($$('Regexp'), 'union', $to_a("\\$()*+.<>?[]^{|}".$chars())).$freeze()); + self.$attr_reader("source_buffer"); + self.$attr_accessor("diagnostics"); + self.$attr_accessor("static_env"); + self.$attr_accessor("force_utf32"); + self.$attr_accessor("cond", "cmdarg", "context", "command_start"); + self.$attr_accessor("tokens", "comments"); + self.$attr_reader("paren_nest", "cmdarg_stack", "cond_stack", "lambda_stack"); + + $def(self, '$initialize', function $$initialize(version) { + var self = this; + + + self.version = version; + self.static_env = nil; + self.context = nil; + self.tokens = nil; + self.comments = nil; + return self.$reset(); + }, 1); + + $def(self, '$reset', function $$reset(reset_state) { + var self = this; + + + + if (reset_state == null) reset_state = true;; + if ($truthy(reset_state)) { + + self.cs = self.$class().$lex_en_line_begin(); + self.cond = $$('StackState').$new("cond"); + self.cmdarg = $$('StackState').$new("cmdarg"); + self.cond_stack = []; + self.cmdarg_stack = []; + }; + self.force_utf32 = false; + self.source_pts = nil; + self.p = 0; + self.ts = nil; + self.te = nil; + self.act = 0; + self.stack = []; + self.top = 0; + self.token_queue = []; + self.literal_stack = []; + self.eq_begin_s = nil; + self.sharp_s = nil; + self.newline_s = nil; + self.num_base = nil; + self.num_digits_s = nil; + self.num_suffix_s = nil; + self.num_xfrm = nil; + self.escape_s = nil; + self.escape = nil; + self.herebody_s = nil; + self.paren_nest = 0; + self.lambda_stack = []; + self.dedent_level = nil; + self.command_start = true; + return (self.cs_before_block_comment = self.$class().$lex_en_line_begin()); + }, -1); + + $def(self, '$source_buffer=', function $Lexer_source_buffer$eq$1(source_buffer) { + var self = this, source = nil; + + + self.source_buffer = source_buffer; + if ($truthy(self.source_buffer)) { + + source = self.source_buffer.$source(); + if ($eqeq(source.$encoding(), $$$($$('Encoding'), 'UTF_8'))) { + self.source_pts = source.$unpack("U*") + } else { + self.source_pts = source.$unpack("C*") + }; + if ($eqeq(self.source_pts['$[]'](0), 65279)) { + return (self.p = 1) + } else { + return nil + }; + } else { + return (self.source_pts = nil) + }; + }, 1); + + $def(self, '$encoding', function $$encoding() { + var self = this; + + return self.source_buffer.$source().$encoding() + }, 0); + $const_set($nesting[0], 'LEX_STATES', $hash2(["line_begin", "expr_dot", "expr_fname", "expr_value", "expr_beg", "expr_mid", "expr_arg", "expr_cmdarg", "expr_end", "expr_endarg", "expr_endfn", "expr_labelarg", "interp_string", "interp_words", "plain_string", "plain_words"], {"line_begin": self.$lex_en_line_begin(), "expr_dot": self.$lex_en_expr_dot(), "expr_fname": self.$lex_en_expr_fname(), "expr_value": self.$lex_en_expr_value(), "expr_beg": self.$lex_en_expr_beg(), "expr_mid": self.$lex_en_expr_mid(), "expr_arg": self.$lex_en_expr_arg(), "expr_cmdarg": self.$lex_en_expr_cmdarg(), "expr_end": self.$lex_en_expr_end(), "expr_endarg": self.$lex_en_expr_endarg(), "expr_endfn": self.$lex_en_expr_endfn(), "expr_labelarg": self.$lex_en_expr_labelarg(), "interp_string": self.$lex_en_interp_string(), "interp_words": self.$lex_en_interp_words(), "plain_string": self.$lex_en_plain_string(), "plain_words": self.$lex_en_plain_string()})); + + $def(self, '$state', function $$state() { + var self = this; + + return $$('LEX_STATES').$invert().$fetch(self.cs, self.cs) + }, 0); + + $def(self, '$state=', function $Lexer_state$eq$2(state) { + var self = this; + + return (self.cs = $$('LEX_STATES').$fetch(state)) + }, 1); + + $def(self, '$push_cmdarg', function $$push_cmdarg() { + var self = this; + + + self.cmdarg_stack.$push(self.cmdarg); + return (self.cmdarg = $$('StackState').$new("cmdarg." + (self.cmdarg_stack.$count()))); + }, 0); + + $def(self, '$pop_cmdarg', function $$pop_cmdarg() { + var self = this; + + return (self.cmdarg = self.cmdarg_stack.$pop()) + }, 0); + + $def(self, '$push_cond', function $$push_cond() { + var self = this; + + + self.cond_stack.$push(self.cond); + return (self.cond = $$('StackState').$new("cond." + (self.cond_stack.$count()))); + }, 0); + + $def(self, '$pop_cond', function $$pop_cond() { + var self = this; + + return (self.cond = self.cond_stack.$pop()) + }, 0); + + $def(self, '$dedent_level', function $$dedent_level() { + var $a, self = this, dedent_level = nil; + + + $a = [self.dedent_level, nil], (dedent_level = $a[0]), (self.dedent_level = $a[1]), $a; + return dedent_level; + }, 0); + + $def(self, '$advance', function $$advance() { + var $a, $b, self = this, klass = nil, _lex_trans_keys = nil, _lex_key_spans = nil, _lex_index_offsets = nil, _lex_indicies = nil, _lex_trans_targs = nil, _lex_trans_actions = nil, _lex_to_state_actions = nil, _lex_from_state_actions = nil, _lex_eof_trans = nil, pe = nil, p = nil, eof = nil, cmd_state = nil, testEof = nil, _slen = nil, _trans = nil, _keys = nil, _inds = nil, _acts = nil, _nacts = nil, _goto_level = nil, _resume = nil, _eof_trans = nil, _again = nil, _test_eof = nil, _out = nil, $ret_or_1 = nil, _wide = nil, tm = nil, heredoc_e = nil, diag_msg = nil, ident_tok = nil, ident_ts = nil, ident_te = nil, current_literal = nil, $writer = nil, line = nil, string = nil, lookahead = nil, token = nil, message = nil, escaped_char = nil, $ret_or_2 = nil, unknown_options = nil, type = nil, delimiter = nil, escape = nil, ident = nil, followed_by_nl = nil, nl_emitted = nil, dots_te = nil, value = nil, digits = nil, invalid_idx = nil, invalid_s = nil, codepoints = nil, codepoint_s = nil, spaces_p = nil, codepoint = nil, new_herebody_s = nil, indent = nil, dedent_body = nil; + + + if ($truthy(self.token_queue['$any?']())) { + return self.token_queue.$shift() + }; + klass = self.$class(); + _lex_trans_keys = klass.$send("_lex_trans_keys"); + _lex_key_spans = klass.$send("_lex_key_spans"); + _lex_index_offsets = klass.$send("_lex_index_offsets"); + _lex_indicies = klass.$send("_lex_indicies"); + _lex_trans_targs = klass.$send("_lex_trans_targs"); + _lex_trans_actions = klass.$send("_lex_trans_actions"); + _lex_to_state_actions = klass.$send("_lex_to_state_actions"); + _lex_from_state_actions = klass.$send("_lex_from_state_actions"); + _lex_eof_trans = klass.$send("_lex_eof_trans"); + pe = $rb_plus(self.source_pts.$size(), 2); + $a = [self.p, pe], (p = $a[0]), (eof = $a[1]), $a; + cmd_state = self.command_start; + self.command_start = false; + + testEof = false; + $b = nil, $a = $to_ary($b), (_slen = ($a[0] == null ? nil : $a[0])), (_trans = ($a[1] == null ? nil : $a[1])), (_keys = ($a[2] == null ? nil : $a[2])), (_inds = ($a[3] == null ? nil : $a[3])), (_acts = ($a[4] == null ? nil : $a[4])), (_nacts = ($a[5] == null ? nil : $a[5])), $b; + _goto_level = 0; + _resume = 10; + _eof_trans = 15; + _again = 20; + _test_eof = 30; + _out = 40; + while ($truthy(true)) { + + if ($truthy($rb_le(_goto_level, 0))) { + + if ($eqeq(p, pe)) { + + _goto_level = _test_eof; + continue;; + }; + if ($eqeq(self.cs, 0)) { + + _goto_level = _out; + continue;; + }; + }; + if ($truthy($rb_le(_goto_level, _resume))) { + + if ($eqeqeq(97, ($ret_or_1 = _lex_from_state_actions['$[]'](self.cs)))) { + + self.ts = p; + } else { + nil + }; + _keys = self.cs['$<<'](1); + _inds = _lex_index_offsets['$[]'](self.cs); + _slen = _lex_key_spans['$[]'](self.cs); + _wide = ($truthy(($ret_or_1 = self.source_pts['$[]'](p))) ? ($ret_or_1) : (0)); + _trans = ((($truthy($rb_gt(_slen, 0)) && ($truthy($rb_le(_lex_trans_keys['$[]'](_keys), _wide)))) && ($truthy($rb_le(_wide, _lex_trans_keys['$[]']($rb_plus(_keys, 1)))))) ? (_lex_indicies['$[]']($rb_minus($rb_plus(_inds, _wide), _lex_trans_keys['$[]'](_keys)))) : (_lex_indicies['$[]']($rb_plus(_inds, _slen)))); + }; + if ($truthy($rb_le(_goto_level, _eof_trans))) { + + self.cs = _lex_trans_targs['$[]'](_trans); + if ($neqeq(_lex_trans_actions['$[]'](_trans), 0)) { + if ($eqeqeq(29, ($ret_or_1 = _lex_trans_actions['$[]'](_trans)))) { + + self.newline_s = p; + } else if ($eqeqeq(117, $ret_or_1)) { + + self.escape_s = p; + self.escape = nil; + } else if ($eqeqeq(30, $ret_or_1)) { + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + }; + } else if ($eqeqeq(60, $ret_or_1)) { + + self.sharp_s = $rb_minus(p, 1); + } else if ($eqeqeq(64, $ret_or_1)) { + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p))); + } else if ($eqeqeq(310, $ret_or_1)) { + + tm = p; + } else if ($eqeqeq(37, $ret_or_1)) { + + tm = p; + } else if ($eqeqeq(39, $ret_or_1)) { + + tm = p; + } else if ($eqeqeq(41, $ret_or_1)) { + + tm = p; + } else if ($eqeqeq(71, $ret_or_1)) { + + heredoc_e = p; + } else if ($eqeqeq(349, $ret_or_1)) { + + tm = $rb_minus(p, 1); + diag_msg = "ivar_name"; + } else if ($eqeqeq(352, $ret_or_1)) { + + tm = $rb_minus(p, 2); + diag_msg = "cvar_name"; + } else if ($eqeqeq(360, $ret_or_1)) { + + self.escape = nil; + } else if ($eqeqeq(392, $ret_or_1)) { + + tm = p; + } else if ($eqeqeq(308, $ret_or_1)) { + + ident_tok = self.$tok(); + ident_ts = self.ts; + ident_te = self.te; + } else if ($eqeqeq(479, $ret_or_1)) { + + self.num_base = 16; + self.num_digits_s = p; + } else if ($eqeqeq(473, $ret_or_1)) { + + self.num_base = 10; + self.num_digits_s = p; + } else if ($eqeqeq(476, $ret_or_1)) { + + self.num_base = 8; + self.num_digits_s = p; + } else if ($eqeqeq(470, $ret_or_1)) { + + self.num_base = 2; + self.num_digits_s = p; + } else if ($eqeqeq(485, $ret_or_1)) { + + self.num_base = 10; + self.num_digits_s = self.ts; + } else if ($eqeqeq(447, $ret_or_1)) { + + self.num_base = 8; + self.num_digits_s = self.ts; + } else if ($eqeqeq(462, $ret_or_1)) { + + self.num_suffix_s = p; + } else if ($eqeqeq(455, $ret_or_1)) { + + self.num_suffix_s = p; + } else if ($eqeqeq(452, $ret_or_1)) { + + self.num_suffix_s = p; + } else if ($eqeqeq(89, $ret_or_1)) { + + tm = p; + } else if ($eqeqeq(7, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + } else if ($eqeqeq(113, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DBEG", "\#{".$freeze()); + if ($truthy(current_literal['$heredoc?']())) { + + + $writer = [self.herebody_s]; + $send(current_literal, 'saved_herebody_s=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.herebody_s = nil; + }; + current_literal.$start_interp_brace(); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(5, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DVAR", nil, self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(109, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };; + } else if ($eqeqeq(108, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(115, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$literal().$extend_string(self.$tok(), self.ts, self.te) + } else { + + message = ($truthy(self.$tok()['$start_with?']("\#@@")) ? ("cvar_name") : ("ivar_name")); + self.$diagnostic("error", message, $hash2(["name"], {"name": self.$tok($rb_plus(self.ts, 1), self.te)}), self.$range($rb_plus(self.ts, 1), self.te)); + };; + } else if ($eqeqeq(114, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DVAR", nil, self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(111, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$literal().$extend_space(self.ts, self.te);; + } else if ($eqeqeq(112, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(6, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };; + } else if ($eqeqeq(4, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(145, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DBEG", "\#{".$freeze()); + if ($truthy(current_literal['$heredoc?']())) { + + + $writer = [self.herebody_s]; + $send(current_literal, 'saved_herebody_s=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.herebody_s = nil; + }; + current_literal.$start_interp_brace(); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(10, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DVAR", nil, self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(142, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };; + } else if ($eqeqeq(141, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(147, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$literal().$extend_string(self.$tok(), self.ts, self.te) + } else { + + message = ($truthy(self.$tok()['$start_with?']("\#@@")) ? ("cvar_name") : ("ivar_name")); + self.$diagnostic("error", message, $hash2(["name"], {"name": self.$tok($rb_plus(self.ts, 1), self.te)}), self.$range($rb_plus(self.ts, 1), self.te)); + };; + } else if ($eqeqeq(146, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DVAR", nil, self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(144, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(11, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };; + } else if ($eqeqeq(9, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(173, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };; + } else if ($eqeqeq(172, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(175, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$literal().$extend_space(self.ts, self.te);; + } else if ($eqeqeq(176, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(179, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };; + } else if ($eqeqeq(178, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(181, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(188, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DBEG", "\#{".$freeze()); + if ($truthy(current_literal['$heredoc?']())) { + + + $writer = [self.herebody_s]; + $send(current_literal, 'saved_herebody_s=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.herebody_s = nil; + }; + current_literal.$start_interp_brace(); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(13, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DVAR", nil, self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(185, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };; + } else if ($eqeqeq(184, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(190, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$literal().$extend_string(self.$tok(), self.ts, self.te) + } else { + + message = ($truthy(self.$tok()['$start_with?']("\#@@")) ? ("cvar_name") : ("ivar_name")); + self.$diagnostic("error", message, $hash2(["name"], {"name": self.$tok($rb_plus(self.ts, 1), self.te)}), self.$range($rb_plus(self.ts, 1), self.te)); + };; + } else if ($eqeqeq(189, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DVAR", nil, self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(187, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(12, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(192, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };; + } else if ($eqeqeq(191, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(199, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DBEG", "\#{".$freeze()); + if ($truthy(current_literal['$heredoc?']())) { + + + $writer = [self.herebody_s]; + $send(current_literal, 'saved_herebody_s=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.herebody_s = nil; + }; + current_literal.$start_interp_brace(); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(15, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DVAR", nil, self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(195, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };; + } else if ($eqeqeq(194, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(201, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$literal().$extend_string(self.$tok(), self.ts, self.te) + } else { + + message = ($truthy(self.$tok()['$start_with?']("\#@@")) ? ("cvar_name") : ("ivar_name")); + self.$diagnostic("error", message, $hash2(["name"], {"name": self.$tok($rb_plus(self.ts, 1), self.te)}), self.$range($rb_plus(self.ts, 1), self.te)); + };; + } else if ($eqeqeq(200, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DVAR", nil, self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(197, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$literal().$extend_space(self.ts, self.te);; + } else if ($eqeqeq(198, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(14, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(203, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };; + } else if ($eqeqeq(202, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(205, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$literal().$extend_space(self.ts, self.te);; + } else if ($eqeqeq(206, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tREGEXP_OPT", self.$tok(self.ts, $rb_minus(self.te, 1)), self.ts, $rb_minus(self.te, 1)); + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(207, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + unknown_options = self.$tok().$scan(/[^imxouesn]/); + if ($truthy(unknown_options['$any?']())) { + self.$diagnostic("error", "regexp_options", $hash2(["options"], {"options": unknown_options.$join()})) + }; + self.$emit("tREGEXP_OPT"); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(16, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + if ($truthy(self.$tok()['$=~'](/^\$([1-9][0-9]*)$/))) { + self.$emit("tNTH_REF", self.$tok($rb_plus(self.ts, 1)).$to_i()) + } else if ($truthy(self.$tok()['$=~'](/^\$([&`'+])$/))) { + self.$emit("tBACK_REF") + } else { + self.$emit("tGVAR") + }; + self.cs = self.$stack_pop(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(208, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy(self.$tok()['$=~'](/^\$([1-9][0-9]*)$/))) { + self.$emit("tNTH_REF", self.$tok($rb_plus(self.ts, 1)).$to_i()) + } else if ($truthy(self.$tok()['$=~'](/^\$([&`'+])$/))) { + self.$emit("tBACK_REF") + } else { + self.$emit("tGVAR") + }; + self.cs = self.$stack_pop(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(210, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy(self.$tok()['$=~'](/^@@[0-9]/))) { + self.$diagnostic("error", "cvar_name", $hash2(["name"], {"name": self.$tok()})) + }; + self.$emit("tCVAR"); + self.cs = self.$stack_pop(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(209, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy(self.$tok()['$=~'](/^@[0-9]/))) { + self.$diagnostic("error", "ivar_name", $hash2(["name"], {"name": self.$tok()})) + }; + self.$emit("tIVAR"); + self.cs = self.$stack_pop(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(231, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit_table($$('KEYWORDS_BEGIN')); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(217, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tIDENTIFIER"); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(18, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + self.cs = 810; + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(214, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(226, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(20, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + if ($truthy(self['$version?'](23))) { + + $b = [self.$tok()['$[]']($range(0, -2, false)), self.$tok()['$[]'](-1).$chr()], (type = $b[0]), (delimiter = $b[1]), $b; + + self.cs = self.$push_literal(type, delimiter, self.ts); + _goto_level = _again; + continue;;; + } else { + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;; + };; + } else if ($eqeqeq(213, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(212, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(230, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('KEYWORDS_BEGIN')); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(227, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tCONSTANT"); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(229, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tIDENTIFIER"); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(224, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + self.cs = 810; + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(220, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(225, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(218, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(223, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(19, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + self.$emit_table($$('PUNCTUATION')); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(17, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(216, $ret_or_1)) { + + if ($eqeqeq(43, ($ret_or_2 = self.act))) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS_BEGIN')); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(44, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tCONSTANT"); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(45, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tIDENTIFIER"); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + nil + }; + } else if ($eqeqeq(22, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tLABEL", self.$tok(self.ts, $rb_minus(self.te, 2)), self.ts, $rb_minus(self.te, 1)); + p = $rb_minus(p, 1); + self.cs = 795; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(23, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + if (($truthy($rb_ge(self.version, 31)) && ($truthy(self.context.$in_argdef())))) { + + self.$emit("tBDOT3", "...".$freeze()); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + p = $rb_minus(p, 3); + + self.cs = 810; + _goto_level = _again; + continue;;; + };; + } else if ($eqeqeq(233, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(232, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(235, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(234, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(21, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(241, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 494; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(240, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(239, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(251, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tCONSTANT"); + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(242, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tIDENTIFIER"); + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(247, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 494; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(245, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(250, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(274, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(257, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + if ($eqeq(self.$tok(tm, $rb_plus(tm, 1)), "/".$freeze())) { + if ($truthy($rb_lt(self.version, 30))) { + self.$diagnostic("warning", "ambiguous_literal", nil, self.$range(tm, $rb_plus(tm, 1))) + } else { + self.$diagnostic("warning", "ambiguous_regexp", nil, self.$range(tm, $rb_plus(tm, 1))) + } + }; + p = $rb_minus(tm, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(263, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(25, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(265, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(tm, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(40, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(252, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(253, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(264, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(260, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$diagnostic("warning", "ambiguous_prefix", $hash2(["prefix"], {"prefix": self.$tok(tm, self.te)}), self.$range(tm, self.te)); + p = $rb_minus(tm, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(262, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(256, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(255, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(273, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(26, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + } else if ($eqeqeq(42, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(24, $ret_or_1)) { + + if ($eqeqeq(72, ($ret_or_2 = self.act))) { + + + p = $rb_minus(self.te, 1);; + if ($eqeq(self.$tok(tm, $rb_plus(tm, 1)), "/".$freeze())) { + if ($truthy($rb_lt(self.version, 30))) { + self.$diagnostic("warning", "ambiguous_literal", nil, self.$range(tm, $rb_plus(tm, 1))) + } else { + self.$diagnostic("warning", "ambiguous_regexp", nil, self.$range(tm, $rb_plus(tm, 1))) + } + }; + p = $rb_minus(tm, 1); + + self.cs = 563; + _goto_level = _again; + continue;;; + } else if ($eqeqeq(73, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$diagnostic("warning", "ambiguous_prefix", $hash2(["prefix"], {"prefix": self.$tok(tm, self.te)}), self.$range(tm, self.te)); + p = $rb_minus(tm, 1); + + self.cs = 563; + _goto_level = _again; + continue;;; + } else if ($eqeqeq(78, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;; + } else { + + + p = $rb_minus(self.te, 1);; + }; + } else if ($eqeqeq(44, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 494; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(278, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(279, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 494; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(45, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + p = $rb_minus(self.ts, 1); + + self.cs = 494; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(43, $ret_or_1)) { + + if ($eqeqeq(85, ($ret_or_2 = self.act))) { + + + p = $rb_minus(self.te, 1);; + if ($truthy(self.cond['$active?']())) { + self.$emit("kDO_COND", "do".$freeze(), $rb_minus(self.te, 2), self.te) + } else { + self.$emit("kDO", "do".$freeze(), $rb_minus(self.te, 2), self.te) + }; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(86, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + p = $rb_minus(self.ts, 1); + + self.cs = 494; + _goto_level = _again; + continue;;; + } else { + nil + }; + } else if ($eqeqeq(289, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit_do(true); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(282, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(283, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(284, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(287, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(293, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(292, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(301, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(295, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(299, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(294, $ret_or_1)) { + + if ($eqeqeq(93, ($ret_or_2 = self.act))) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(94, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + p = $rb_minus(self.ts, 1); + + self.cs = 563; + _goto_level = _again; + continue;;; + } else { + nil + }; + } else if ($eqeqeq(57, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = $rb_minus(p, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(334, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + type = (delimiter = self.$tok()['$[]'](0).$chr()); + p = $rb_minus(p, 1); + + self.cs = self.$push_literal(type, delimiter, self.ts); + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(326, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + $b = [self.source_buffer.$slice(self.ts).$chr(), self.$tok()['$[]'](-1).$chr()], (type = $b[0]), (delimiter = $b[1]), $b; + + self.cs = self.$push_literal(type, delimiter, self.ts); + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(55, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + $b = [self.$tok()['$[]']($range(0, -2, false)), self.$tok()['$[]'](-1).$chr()], (type = $b[0]), (delimiter = $b[1]), $b; + + self.cs = self.$push_literal(type, delimiter, self.ts); + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(347, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + p = $rb_minus(p, 1); + self.$emit("tSYMBEG", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + + self.cs = 352; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(335, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + $b = [self.$tok(), self.$tok()['$[]'](-1).$chr()], (type = $b[0]), (delimiter = $b[1]), $b; + + self.cs = self.$push_literal(type, delimiter, self.ts); + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(346, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), $rb_plus(self.ts, 2))); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(69, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1)), self.ts); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(357, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + escape = $hash2([" ", "\r", "\n", "\t", "\v", "\f"], {" ": "\\s", "\r": "\\r", "\n": "\\n", "\t": "\\t", "\v": "\\v", "\f": "\\f"})['$[]'](self.source_buffer.$slice($rb_plus(self.ts, 1))); + self.$diagnostic("warning", "invalid_escape_use", $hash2(["escape"], {"escape": escape}), self.$range()); + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(356, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$diagnostic("fatal", "incomplete_escape", nil, self.$range(self.ts, $rb_plus(self.ts, 1)));; + } else if ($eqeqeq(336, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit_table($$('PUNCTUATION_BEGIN')); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(52, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + if ($truthy(self['$version?'](18))) { + + ident = self.$tok(self.ts, $rb_minus(self.te, 2)); + self.$emit(($truthy(self.source_buffer.$slice(self.ts)['$=~'](/[A-Z]/)) ? ("tCONSTANT") : ("tIDENTIFIER")), ident, self.ts, $rb_minus(self.te, 2)); + p = $rb_minus(p, 1); + if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](ident))))) { + self.cs = 810 + } else { + self.cs = self.$arg_or_cmdarg(cmd_state) + }; + } else { + + self.$emit("tLABEL", self.$tok(self.ts, $rb_minus(self.te, 2)), self.ts, $rb_minus(self.te, 1)); + self.cs = 795; + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(49, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tIDENTIFIER", ident_tok, ident_ts, ident_te); + p = $rb_minus(ident_te, 1); + if ((($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](ident_tok)))) && ($truthy($rb_lt(self.version, 25))))) { + self.cs = 465 + } else { + self.cs = 525 + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(320, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + self.cs_before_block_comment = self.cs; + + self.cs = 186; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(56, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(304, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(330, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = $rb_minus(p, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(329, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tSTAR", "*".$freeze()); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(325, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$diagnostic("fatal", "string_eof", nil, self.$range(self.ts, $rb_plus(self.ts, 1)));; + } else if ($eqeqeq(354, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$diagnostic("error", "unterminated_heredoc_id", nil, self.$range(self.ts, $rb_plus(self.ts, 1)));; + } else if ($eqeqeq(337, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1)), self.ts); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(350, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$diagnostic("error", diag_msg, $hash2(["name"], {"name": self.$tok(tm, self.te)}), self.$range(tm, self.te)) + } else { + + self.$emit("tCOLON", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(355, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$diagnostic("fatal", "incomplete_escape", nil, self.$range(self.ts, $rb_plus(self.ts, 1)));; + } else if ($eqeqeq(361, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(327, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION_BEGIN')); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(331, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$emit("tBDOT2") + } else { + self.$emit("tDOT2") + }; + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(332, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + followed_by_nl = $rb_minus(self.te, 1)['$=='](self.newline_s); + nl_emitted = false; + dots_te = ($truthy(followed_by_nl) ? ($rb_minus(self.te, 1)) : (self.te)); + if ($truthy($rb_ge(self.version, 30))) { + if (($truthy(self.lambda_stack['$any?']()) && ($eqeq($rb_plus(self.lambda_stack.$last(), 1), self.paren_nest)))) { + self.$emit("tDOT3", "...".$freeze(), self.ts, dots_te) + } else { + + self.$emit("tBDOT3", "...".$freeze(), self.ts, dots_te); + if ((($truthy($rb_ge(self.version, 31)) && ($truthy(followed_by_nl))) && ($truthy(self.context.$in_argdef())))) { + + self.$emit("tNL", $rb_minus(self.te, 1), self.te); + nl_emitted = true; + }; + } + } else if ($truthy($rb_ge(self.version, 27))) { + self.$emit("tBDOT3", "...".$freeze(), self.ts, dots_te) + } else { + self.$emit("tDOT3", "...".$freeze(), self.ts, dots_te) + }; + if (($truthy(followed_by_nl) && ($not(nl_emitted)))) { + p = $rb_minus(p, 1) + }; + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(307, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tIDENTIFIER"); + if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { + + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + };; + } else if ($eqeqeq(317, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(319, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + self.cs_before_block_comment = self.cs; + + self.cs = 186; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(322, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(54, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + self.$diagnostic("fatal", "string_eof", nil, self.$range(self.ts, $rb_plus(self.ts, 1)));; + } else if ($eqeqeq(73, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + self.$diagnostic("error", "unterminated_heredoc_id", nil, self.$range(self.ts, $rb_plus(self.ts, 1)));; + } else if ($eqeqeq(74, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(48, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + self.$emit("tIDENTIFIER"); + if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { + + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + };; + } else if ($eqeqeq(53, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + } else if ($eqeqeq(68, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(51, $ret_or_1)) { + + if ($eqeqeq(99, ($ret_or_2 = self.act))) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = $rb_minus(p, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(106, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$diagnostic("error", "unterminated_heredoc_id", nil, self.$range(self.ts, $rb_plus(self.ts, 1))); + } else if ($eqeqeq(117, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + if ($truthy($rb_ge(self.version, 27))) { + + self.$emit("tPIPE", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = $rb_minus(p, 1); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + p = $rb_minus(p, 2); + + self.cs = 810; + _goto_level = _again; + continue;;; + }; + } else if ($eqeqeq(121, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('PUNCTUATION_BEGIN')); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(122, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("kRESCUE", "rescue".$freeze(), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 539; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(123, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS_BEGIN')); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(127, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;; + } else if ($eqeqeq(128, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tIDENTIFIER"); + if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { + + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(132, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;; + } else { + nil + }; + } else if ($eqeqeq(395, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(396, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(397, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(401, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(77, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(405, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + + self.cs = self.$push_literal(self.$tok(), self.$tok(), self.ts); + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(404, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(403, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(407, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(406, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(76, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(440, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tLAMBDA", "->".$freeze(), self.ts, $rb_plus(self.ts, 2)); + self.lambda_stack.$push(self.paren_nest); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(86, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("kCLASS", "class".$freeze(), self.ts, $rb_plus(self.ts, 5)); + self.$emit("tLSHFT", "<<".$freeze(), $rb_minus(self.te, 2), self.te); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(415, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + $b = [self.$tok(), self.$tok()['$[]'](-1).$chr()], (type = $b[0]), (delimiter = $b[1]), $b; + + self.cs = self.$push_literal(type, delimiter, self.ts, nil, false, false, true); + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(79, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(436, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 473; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(489, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(429, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(434, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tOP_ASGN", self.$tok(self.ts, $rb_minus(self.te, 1))); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(420, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tEH", "?".$freeze()); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(417, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(419, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tSEMI", ";".$freeze()); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(494, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$diagnostic("error", "bare_backslash", nil, self.$range(self.ts, $rb_plus(self.ts, 1))); + p = $rb_minus(p, 1);; + } else if ($eqeqeq(414, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$diagnostic("fatal", "unexpected", $hash2(["character"], {"character": self.$tok().$inspect()['$[]']($range(1, -2, false))}));; + } else if ($eqeqeq(413, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(505, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('KEYWORDS')); + self.cs = 352; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(503, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("kCLASS", "class".$freeze(), self.ts, $rb_plus(self.ts, 5)); + self.$emit("tLSHFT", "<<".$freeze(), $rb_minus(self.te, 2), self.te); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(502, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('KEYWORDS')); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(444, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$diagnostic("error", "no_dot_digit_literal");; + } else if ($eqeqeq(491, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tCONSTANT"); + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(433, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(441, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 473; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(497, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tIDENTIFIER"); + if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { + + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + };; + } else if ($eqeqeq(439, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(435, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(428, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(442, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(426, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(432, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$diagnostic("fatal", "unexpected", $hash2(["character"], {"character": self.$tok().$inspect()['$[]']($range(1, -2, false))}));; + } else if ($eqeqeq(84, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(80, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + self.$diagnostic("error", "no_dot_digit_literal");; + } else if ($eqeqeq(83, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(78, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + self.$diagnostic("fatal", "unexpected", $hash2(["character"], {"character": self.$tok().$inspect()['$[]']($range(1, -2, false))}));; + } else if ($eqeqeq(81, $ret_or_1)) { + + if ($eqeqeq(145, ($ret_or_2 = self.act))) { + + + p = $rb_minus(self.te, 1);; + if ($eqeq(self.lambda_stack.$last(), self.paren_nest)) { + + self.lambda_stack.$pop(); + if ($eqeq(self.$tok(), "{".$freeze())) { + self.$emit("tLAMBEG", "{".$freeze()) + } else { + self.$emit("kDO_LAMBDA", "do".$freeze()) + }; + } else if ($eqeq(self.$tok(), "{".$freeze())) { + self.$emit("tLCURLY", "{".$freeze()) + } else { + self.$emit_do() + }; + if ($eqeq(self.$tok(), "{".$freeze())) { + self.paren_nest = $rb_plus(self.paren_nest, 1) + }; + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(146, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + self.cs = 352; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(147, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("kCLASS", "class".$freeze(), self.ts, $rb_plus(self.ts, 5)); + self.$emit("tLSHFT", "<<".$freeze(), $rb_minus(self.te, 2), self.te); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(148, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(149, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(150, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + self.cs = 539; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(151, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + if (($truthy(self['$version?'](18)) && ($eqeq(self.$tok(), "not".$freeze())))) { + + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = 494; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(152, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + if ($truthy(self['$version?'](18))) { + + self.$emit("tIDENTIFIER"); + if (!($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { + self.cs = self.$arg_or_cmdarg(cmd_state) + }; + } else { + self.$emit("k__ENCODING__", "__ENCODING__".$freeze()) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(153, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(154, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(156, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + if ($truthy(self['$version?'](18, 19, 20))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": self.$tok($rb_minus(self.te, 1), self.te)}), self.$range($rb_minus(self.te, 1), self.te)) + } else { + + self.$emit("tINTEGER", self.$tok(self.ts, $rb_minus(self.te, 1)).$to_i(), self.ts, $rb_minus(self.te, 1)); + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(157, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + if ($truthy(self['$version?'](18, 19, 20))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": self.$tok($rb_minus(self.te, 1), self.te)}), self.$range($rb_minus(self.te, 1), self.te)) + } else { + + self.$emit("tFLOAT", self.$tok(self.ts, $rb_minus(self.te, 1)).$to_f(), self.ts, $rb_minus(self.te, 1)); + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(158, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(160, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tCONSTANT"); + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(164, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tIDENTIFIER"); + if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { + + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(165, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + if ($eqeq(tm, self.te)) { + self.$emit("tFID") + } else { + + self.$emit("tIDENTIFIER", self.$tok(self.ts, tm), self.ts, tm); + p = $rb_minus(tm, 1); + }; + self.cs = 494; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(167, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('PUNCTUATION')); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(168, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('PUNCTUATION')); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + nil + }; + } else if ($eqeqeq(516, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); + if ($truthy($rb_lt(self.version, 27))) { + + p = $rb_minus(p, 1); + self.cs = 186; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.$emit("tBDOT3"); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + };; + } else if ($eqeqeq(95, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(tm, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(510, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); + p = $rb_minus(p, 1); + self.cs = 186; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(513, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_lt(self.version, 27))) { + + self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); + p = $rb_minus(p, 1); + self.cs = 186; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + };; + } else if ($eqeqeq(515, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); + if ($truthy($rb_lt(self.version, 27))) { + + p = $rb_minus(p, 1); + self.cs = 186; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.$emit("tBDOT2"); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + };; + } else if ($eqeqeq(514, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(tm, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(512, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); + p = $rb_minus(p, 1); + self.cs = 186; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(90, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + if ($truthy($rb_lt(self.version, 27))) { + + self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); + p = $rb_minus(p, 1); + self.cs = 186; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + };; + } else if ($eqeqeq(87, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); + p = $rb_minus(p, 1); + self.cs = 186; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(91, $ret_or_1)) { + + if ($eqeqeq(181, ($ret_or_2 = self.act))) { + + + p = $rb_minus(self.te, 1);; + if ($truthy($rb_lt(self.version, 27))) { + + self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); + p = $rb_minus(p, 1); + self.cs = 186; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(185, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); + p = $rb_minus(p, 1); + self.cs = 186; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + nil + }; + } else if ($eqeqeq(519, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_comment(self.eq_begin_s, self.te); + + self.cs = self.cs_before_block_comment; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(518, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$diagnostic("fatal", "embedded_document", nil, self.$range(self.eq_begin_s, $rb_plus(self.eq_begin_s, "=begin".$length())));; + } else if ($eqeqeq(106, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.eq_begin_s = self.ts; + + self.cs = 998; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(2, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(pe, 3);; + } else if ($eqeqeq(98, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + cmd_state = true; + p = $rb_minus(p, 1); + + self.cs = 802; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(99, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(100, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(105, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.eq_begin_s = self.ts; + + self.cs = 998; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(104, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + cmd_state = true; + p = $rb_minus(p, 1); + + self.cs = 802; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(1, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + cmd_state = true; + p = $rb_minus(p, 1); + + self.cs = 802; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(67, $ret_or_1)) { + + + self.newline_s = p;; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + } else if ($eqeqeq(110, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };;; + } else if ($eqeqeq(143, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };;; + } else if ($eqeqeq(174, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };;; + } else if ($eqeqeq(180, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };;; + } else if ($eqeqeq(186, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };;; + } else if ($eqeqeq(193, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };;; + } else if ($eqeqeq(196, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };;; + } else if ($eqeqeq(204, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };;; + } else if ($eqeqeq(275, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(266, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + p = $rb_minus(tm, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(258, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(358, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + escape = $hash2([" ", "\r", "\n", "\t", "\v", "\f"], {" ": "\\s", "\r": "\\r", "\n": "\\n", "\t": "\\t", "\v": "\\v", "\f": "\\f"})['$[]'](self.source_buffer.$slice($rb_plus(self.ts, 1))); + self.$diagnostic("warning", "invalid_escape_use", $hash2(["escape"], {"escape": escape}), self.$range()); + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(333, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + followed_by_nl = $rb_minus(self.te, 1)['$=='](self.newline_s); + nl_emitted = false; + dots_te = ($truthy(followed_by_nl) ? ($rb_minus(self.te, 1)) : (self.te)); + if ($truthy($rb_ge(self.version, 30))) { + if (($truthy(self.lambda_stack['$any?']()) && ($eqeq($rb_plus(self.lambda_stack.$last(), 1), self.paren_nest)))) { + self.$emit("tDOT3", "...".$freeze(), self.ts, dots_te) + } else { + + self.$emit("tBDOT3", "...".$freeze(), self.ts, dots_te); + if ((($truthy($rb_ge(self.version, 31)) && ($truthy(followed_by_nl))) && ($truthy(self.context.$in_argdef())))) { + + self.$emit("tNL", $rb_minus(self.te, 1), self.te); + nl_emitted = true; + }; + } + } else if ($truthy($rb_ge(self.version, 27))) { + self.$emit("tBDOT3", "...".$freeze(), self.ts, dots_te) + } else { + self.$emit("tDOT3", "...".$freeze(), self.ts, dots_te) + }; + if (($truthy(followed_by_nl) && ($not(nl_emitted)))) { + p = $rb_minus(p, 1) + }; + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(321, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + self.cs_before_block_comment = self.cs; + + self.cs = 186; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(443, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + if ($eqeq(self.paren_nest, 0)) { + self.$diagnostic("warning", "triple_dot_at_eol", nil, self.$range(self.ts, $rb_minus(self.te, 1))) + }; + self.$emit("tDOT3", "...".$freeze(), self.ts, $rb_minus(self.te, 1)); + p = $rb_minus(p, 1); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(520, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + self.$emit_comment(self.eq_begin_s, self.te); + + self.cs = self.cs_before_block_comment; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(517, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1);; + } else if ($eqeqeq(107, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + self.eq_begin_s = self.ts; + + self.cs = 998; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(3, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + p = $rb_minus(pe, 3);;; + } else if ($eqeqeq(465, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$3(chars){var self = $$3.$$s == null ? this : $$3.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tRATIONAL", self.$Rational(chars));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(463, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$4(chars){var self = $$4.$$s == null ? this : $$4.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tIMAGINARY", self.$Complex(0, chars));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(468, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$5(chars){var self = $$5.$$s == null ? this : $$5.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tIMAGINARY", self.$Complex(0, self.$Rational(chars)));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(466, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$6(chars){var self = $$6.$$s == null ? this : $$6.$$s; + if (self.ts == null) self.ts = nil; + if (self.te == null) self.te = nil; + + + + if (chars == null) chars = nil;; + self.$emit("tINTEGER", chars, self.ts, $rb_minus(self.te, 2)); + return (p = $rb_minus(p, 2));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(464, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$7(chars){var self = $$7.$$s == null ? this : $$7.$$s; + if (self.ts == null) self.ts = nil; + if (self.te == null) self.te = nil; + + + + if (chars == null) chars = nil;; + self.$emit("tINTEGER", chars, self.ts, $rb_minus(self.te, 2)); + return (p = $rb_minus(p, 2));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(467, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$8(chars){var self = $$8.$$s == null ? this : $$8.$$s; + if (self.ts == null) self.ts = nil; + if (self.te == null) self.te = nil; + + + + if (chars == null) chars = nil;; + self.$emit("tINTEGER", chars, self.ts, $rb_minus(self.te, 6)); + return (p = $rb_minus(p, 6));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(456, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$9(chars){var self = $$9.$$s == null ? this : $$9.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tIMAGINARY", self.$Complex(0, self.$Float(chars)));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(457, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$10(chars){var self = $$10.$$s == null ? this : $$10.$$s; + if (self.ts == null) self.ts = nil; + if (self.te == null) self.te = nil; + + + + if (chars == null) chars = nil;; + self.$emit("tFLOAT", self.$Float(chars), self.ts, $rb_minus(self.te, 2)); + return (p = $rb_minus(p, 2));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(458, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$11(chars){var self = $$11.$$s == null ? this : $$11.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tRATIONAL", self.$Rational(chars));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(460, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$12(chars){var self = $$12.$$s == null ? this : $$12.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tIMAGINARY", self.$Complex(0, self.$Rational(chars)));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(459, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$13(chars){var self = $$13.$$s == null ? this : $$13.$$s; + if (self.ts == null) self.ts = nil; + if (self.te == null) self.te = nil; + + + + if (chars == null) chars = nil;; + self.$emit("tFLOAT", self.$Float(chars), self.ts, $rb_minus(self.te, 6)); + return (p = $rb_minus(p, 6));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(137, $ret_or_1)) { + + + self.escape = ""; + codepoints = self.$tok($rb_plus(self.escape_s, 2), $rb_minus(p, 1)); + codepoint_s = $rb_plus(self.escape_s, 2); + if ($truthy($rb_lt(self.version, 24))) { + + if (($truthy(codepoints['$start_with?'](" ")) || ($truthy(codepoints['$start_with?']("\t"))))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_plus(self.escape_s, 2), $rb_plus(self.escape_s, 3))) + }; + if ($truthy((spaces_p = codepoints.$index(/[ \t]{2}/)))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_plus($rb_plus(codepoint_s, spaces_p), 1), $rb_plus($rb_plus(codepoint_s, spaces_p), 2))) + }; + if (($truthy(codepoints['$end_with?'](" ")) || ($truthy(codepoints['$end_with?']("\t"))))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(p, 1), p)) + }; + }; + (function(){var $brk = Opal.new_brk(); try {return $send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/), 'each', [], function $$14($mlhs_tmp1){var $c, $d, self = $$14.$$s == null ? this : $$14.$$s, codepoint_str = nil, spaces = nil, codepoint = nil; + if (self.escape == null) self.escape = nil; + + + + if ($mlhs_tmp1 == null) $mlhs_tmp1 = nil;; + $d = $mlhs_tmp1, $c = $to_ary($d), (codepoint_str = ($c[0] == null ? nil : $c[0])), (spaces = ($c[1] == null ? nil : $c[1])), $d; + if ($truthy(spaces)) { + return (codepoint_s = $rb_plus(codepoint_s, spaces.$length())) + } else { + + codepoint = codepoint_str.$to_i(16); + if ($truthy($rb_ge(codepoint, 1114112))) { + + self.$diagnostic("error", "unicode_point_too_large", nil, self.$range(codepoint_s, $rb_plus(codepoint_s, codepoint_str.$length()))); + + Opal.brk(nil, $brk); + }; + self.escape = $rb_plus(self.escape, codepoint.$chr($$$($$('Encoding'), 'UTF_8'))); + return (codepoint_s = $rb_plus(codepoint_s, codepoint_str.$length())); + };}, {$$arity: 1, $$s: self, $$brk: $brk, $$has_top_level_mlhs_arg: true}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})();; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(168, $ret_or_1)) { + + + self.escape = ""; + codepoints = self.$tok($rb_plus(self.escape_s, 2), $rb_minus(p, 1)); + codepoint_s = $rb_plus(self.escape_s, 2); + if ($truthy($rb_lt(self.version, 24))) { + + if (($truthy(codepoints['$start_with?'](" ")) || ($truthy(codepoints['$start_with?']("\t"))))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_plus(self.escape_s, 2), $rb_plus(self.escape_s, 3))) + }; + if ($truthy((spaces_p = codepoints.$index(/[ \t]{2}/)))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_plus($rb_plus(codepoint_s, spaces_p), 1), $rb_plus($rb_plus(codepoint_s, spaces_p), 2))) + }; + if (($truthy(codepoints['$end_with?'](" ")) || ($truthy(codepoints['$end_with?']("\t"))))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(p, 1), p)) + }; + }; + (function(){var $brk = Opal.new_brk(); try {return $send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/), 'each', [], function $$15($mlhs_tmp1){var $c, $d, self = $$15.$$s == null ? this : $$15.$$s, codepoint_str = nil, spaces = nil, codepoint = nil; + if (self.escape == null) self.escape = nil; + + + + if ($mlhs_tmp1 == null) $mlhs_tmp1 = nil;; + $d = $mlhs_tmp1, $c = $to_ary($d), (codepoint_str = ($c[0] == null ? nil : $c[0])), (spaces = ($c[1] == null ? nil : $c[1])), $d; + if ($truthy(spaces)) { + return (codepoint_s = $rb_plus(codepoint_s, spaces.$length())) + } else { + + codepoint = codepoint_str.$to_i(16); + if ($truthy($rb_ge(codepoint, 1114112))) { + + self.$diagnostic("error", "unicode_point_too_large", nil, self.$range(codepoint_s, $rb_plus(codepoint_s, codepoint_str.$length()))); + + Opal.brk(nil, $brk); + }; + self.escape = $rb_plus(self.escape, codepoint.$chr($$$($$('Encoding'), 'UTF_8'))); + return (codepoint_s = $rb_plus(codepoint_s, codepoint_str.$length())); + };}, {$$arity: 1, $$s: self, $$brk: $brk, $$has_top_level_mlhs_arg: true}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})();; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(382, $ret_or_1)) { + + + self.escape = ""; + codepoints = self.$tok($rb_plus(self.escape_s, 2), $rb_minus(p, 1)); + codepoint_s = $rb_plus(self.escape_s, 2); + if ($truthy($rb_lt(self.version, 24))) { + + if (($truthy(codepoints['$start_with?'](" ")) || ($truthy(codepoints['$start_with?']("\t"))))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_plus(self.escape_s, 2), $rb_plus(self.escape_s, 3))) + }; + if ($truthy((spaces_p = codepoints.$index(/[ \t]{2}/)))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_plus($rb_plus(codepoint_s, spaces_p), 1), $rb_plus($rb_plus(codepoint_s, spaces_p), 2))) + }; + if (($truthy(codepoints['$end_with?'](" ")) || ($truthy(codepoints['$end_with?']("\t"))))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(p, 1), p)) + }; + }; + (function(){var $brk = Opal.new_brk(); try {return $send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/), 'each', [], function $$16($mlhs_tmp1){var $c, $d, self = $$16.$$s == null ? this : $$16.$$s, codepoint_str = nil, spaces = nil, codepoint = nil; + if (self.escape == null) self.escape = nil; + + + + if ($mlhs_tmp1 == null) $mlhs_tmp1 = nil;; + $d = $mlhs_tmp1, $c = $to_ary($d), (codepoint_str = ($c[0] == null ? nil : $c[0])), (spaces = ($c[1] == null ? nil : $c[1])), $d; + if ($truthy(spaces)) { + return (codepoint_s = $rb_plus(codepoint_s, spaces.$length())) + } else { + + codepoint = codepoint_str.$to_i(16); + if ($truthy($rb_ge(codepoint, 1114112))) { + + self.$diagnostic("error", "unicode_point_too_large", nil, self.$range(codepoint_s, $rb_plus(codepoint_s, codepoint_str.$length()))); + + Opal.brk(nil, $brk); + }; + self.escape = $rb_plus(self.escape, codepoint.$chr($$$($$('Encoding'), 'UTF_8'))); + return (codepoint_s = $rb_plus(codepoint_s, codepoint_str.$length())); + };}, {$$arity: 1, $$s: self, $$brk: $brk, $$has_top_level_mlhs_arg: true}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})();; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(118, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(149, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(363, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(121, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_escape");; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(152, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_escape");; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(366, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_escape");; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(123, $ret_or_1)) { + + + self.escape = "\u007F";; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(154, $ret_or_1)) { + + + self.escape = "\u007F";; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(368, $ret_or_1)) { + + + self.escape = "\u007F";; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(120, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok(self.escape_s, p).$to_i(8)['$%'](256));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(151, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok(self.escape_s, p).$to_i(8)['$%'](256));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(365, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok(self.escape_s, p).$to_i(8)['$%'](256));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(140, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(171, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(385, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(139, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_hex_escape", nil, self.$range($rb_minus(self.escape_s, 1), $rb_plus(p, 2)));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(170, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_hex_escape", nil, self.$range($rb_minus(self.escape_s, 1), $rb_plus(p, 2)));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(384, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_hex_escape", nil, self.$range($rb_minus(self.escape_s, 1), $rb_plus(p, 2)));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(134, $ret_or_1)) { + + + self.escape = self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16).$chr($$$($$('Encoding'), 'UTF_8'));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(165, $ret_or_1)) { + + + self.escape = self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16).$chr($$$($$('Encoding'), 'UTF_8'));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(379, $ret_or_1)) { + + + self.escape = self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16).$chr($$$($$('Encoding'), 'UTF_8'));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(133, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(164, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(378, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(138, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(169, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(383, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(135, $ret_or_1)) { + + + self.$diagnostic("fatal", "unterminated_unicode", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(166, $ret_or_1)) { + + + self.$diagnostic("fatal", "unterminated_unicode", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(380, $ret_or_1)) { + + + self.$diagnostic("fatal", "unterminated_unicode", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(119, $ret_or_1)) { + + + self.$diagnostic("fatal", "escape_eof", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(150, $ret_or_1)) { + + + self.$diagnostic("fatal", "escape_eof", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(364, $ret_or_1)) { + + + self.$diagnostic("fatal", "escape_eof", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(177, $ret_or_1)) { + + + self.escape_s = p; + self.escape = nil;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(182, $ret_or_1)) { + + + self.escape_s = p; + self.escape = nil;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(58, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.newline_s = p;; + } else if ($eqeqeq(31, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + tm = p;; + } else if ($eqeqeq(33, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + tm = p;; + } else if ($eqeqeq(35, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + tm = p;; + } else if ($eqeqeq(219, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(238, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(246, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(34, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(277, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(269, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(288, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(300, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(296, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(59, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = $rb_plus(p, 1); + + self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = $rb_minus(p, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(50, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = $rb_plus(p, 1); + + self.$emit("tIDENTIFIER", ident_tok, ident_ts, ident_te); + p = $rb_minus(ident_te, 1); + if ((($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](ident_tok)))) && ($truthy($rb_lt(self.version, 25))))) { + self.cs = 465 + } else { + self.cs = 525 + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(318, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(402, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(398, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy(self.context.$in_kwarg())) { + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;; + } else { + + self.cs = 186; + _goto_level = _again; + continue;; + };;; + } else if ($eqeqeq(411, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(408, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1); + + + self.cs = 186; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(495, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(427, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1); + + + self.cs = 990; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(101, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(268, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + current_literal = self.$literal(); + if ($truthy(current_literal)) { + current_literal.$start_interp_brace() + };; + + self.te = p; + p = $rb_minus(p, 1); + + if ($eqeq(self.lambda_stack.$last(), self.paren_nest)) { + + self.lambda_stack.$pop(); + self.$emit("tLAMBEG", "{".$freeze(), $rb_minus(self.te, 1), self.te); + } else { + self.$emit("tLCURLY", "{".$freeze(), $rb_minus(self.te, 1), self.te) + }; + self.command_start = true; + self.paren_nest = $rb_plus(self.paren_nest, 1); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(290, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + current_literal = self.$literal(); + if ($truthy(current_literal)) { + current_literal.$start_interp_brace() + };; + + self.te = p; + p = $rb_minus(p, 1); + + if ($eqeq(self.lambda_stack.$last(), self.paren_nest)) { + + self.lambda_stack.$pop(); + self.$emit("tLAMBEG", "{".$freeze()); + } else { + self.$emit("tLBRACE_ARG", "{".$freeze()) + }; + self.paren_nest = $rb_plus(self.paren_nest, 1); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(393, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + current_literal = self.$literal(); + if ($truthy(current_literal)) { + current_literal.$start_interp_brace() + };; + + self.te = p; + p = $rb_minus(p, 1); + + if ($eqeq(self.lambda_stack.$last(), self.paren_nest)) { + + self.lambda_stack.$pop(); + self.command_start = true; + self.$emit("tLAMBEG", "{".$freeze()); + } else { + self.$emit("tLBRACE", "{".$freeze()) + }; + self.paren_nest = $rb_plus(self.paren_nest, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(508, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + current_literal = self.$literal(); + if ($truthy(current_literal)) { + current_literal.$start_interp_brace() + };; + + self.te = p; + p = $rb_minus(p, 1); + + if ($eqeq(self.lambda_stack.$last(), self.paren_nest)) { + + self.lambda_stack.$pop(); + if ($eqeq(self.$tok(), "{".$freeze())) { + self.$emit("tLAMBEG", "{".$freeze()) + } else { + self.$emit("kDO_LAMBDA", "do".$freeze()) + }; + } else if ($eqeq(self.$tok(), "{".$freeze())) { + self.$emit("tLCURLY", "{".$freeze()) + } else { + self.$emit_do() + }; + if ($eqeq(self.$tok(), "{".$freeze())) { + self.paren_nest = $rb_plus(self.paren_nest, 1) + }; + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(509, $ret_or_1)) { + + + current_literal = self.$literal(); + if ($truthy(current_literal)) { + if ($truthy(current_literal.$end_interp_brace_and_try_closing())) { + + if ($truthy(self['$version?'](18, 19))) { + + self.$emit("tRCURLY", "}".$freeze(), $rb_minus(p, 1), p); + self.cond.$lexpop(); + self.cmdarg.$lexpop(); + } else { + self.$emit("tSTRING_DEND", "}".$freeze(), $rb_minus(p, 1), p) + }; + if ($truthy(current_literal.$saved_herebody_s())) { + self.herebody_s = current_literal.$saved_herebody_s() + }; + p = $rb_minus(p, 1); + self.cs = self.$next_state_for_literal(current_literal); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } + }; + self.paren_nest = $rb_minus(self.paren_nest, 1);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + if ($truthy($rb_lt(self.version, 24))) { + + self.cond.$lexpop(); + self.cmdarg.$lexpop(); + } else { + + self.cond.$pop(); + self.cmdarg.$pop(); + }; + if (($eqeq(self.$tok(), "}".$freeze()) || ($eqeq(self.$tok(), "]".$freeze())))) { + if ($truthy($rb_ge(self.version, 25))) { + self.cs = 810 + } else { + self.cs = 531 + } + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(61, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + } else if ($eqeqeq(65, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.newline_s = p;; + } else if ($eqeqeq(222, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(237, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(249, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(271, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1); + + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(286, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(298, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(324, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(400, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(410, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(431, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(103, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(243, $ret_or_1)) { + + + tm = p;; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tFID", self.$tok(self.ts, tm), self.ts, tm); + self.cs = self.$arg_or_cmdarg(cmd_state); + p = $rb_minus(tm, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(338, $ret_or_1)) { + + + tm = p;; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(309, $ret_or_1)) { + + + tm = p;; + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(424, $ret_or_1)) { + + + tm = p;; + + if ($eqeqeq(145, ($ret_or_2 = self.act))) { + + + p = $rb_minus(self.te, 1);; + if ($eqeq(self.lambda_stack.$last(), self.paren_nest)) { + + self.lambda_stack.$pop(); + if ($eqeq(self.$tok(), "{".$freeze())) { + self.$emit("tLAMBEG", "{".$freeze()) + } else { + self.$emit("kDO_LAMBDA", "do".$freeze()) + }; + } else if ($eqeq(self.$tok(), "{".$freeze())) { + self.$emit("tLCURLY", "{".$freeze()) + } else { + self.$emit_do() + }; + if ($eqeq(self.$tok(), "{".$freeze())) { + self.paren_nest = $rb_plus(self.paren_nest, 1) + }; + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(146, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + self.cs = 352; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(147, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("kCLASS", "class".$freeze(), self.ts, $rb_plus(self.ts, 5)); + self.$emit("tLSHFT", "<<".$freeze(), $rb_minus(self.te, 2), self.te); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(148, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(149, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(150, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + self.cs = 539; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(151, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + if (($truthy(self['$version?'](18)) && ($eqeq(self.$tok(), "not".$freeze())))) { + + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = 494; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(152, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + if ($truthy(self['$version?'](18))) { + + self.$emit("tIDENTIFIER"); + if (!($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { + self.cs = self.$arg_or_cmdarg(cmd_state) + }; + } else { + self.$emit("k__ENCODING__", "__ENCODING__".$freeze()) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(153, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(154, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(156, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + if ($truthy(self['$version?'](18, 19, 20))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": self.$tok($rb_minus(self.te, 1), self.te)}), self.$range($rb_minus(self.te, 1), self.te)) + } else { + + self.$emit("tINTEGER", self.$tok(self.ts, $rb_minus(self.te, 1)).$to_i(), self.ts, $rb_minus(self.te, 1)); + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(157, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + if ($truthy(self['$version?'](18, 19, 20))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": self.$tok($rb_minus(self.te, 1), self.te)}), self.$range($rb_minus(self.te, 1), self.te)) + } else { + + self.$emit("tFLOAT", self.$tok(self.ts, $rb_minus(self.te, 1)).$to_f(), self.ts, $rb_minus(self.te, 1)); + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(158, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(160, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tCONSTANT"); + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(164, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tIDENTIFIER"); + if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { + + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(165, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + if ($eqeq(tm, self.te)) { + self.$emit("tFID") + } else { + + self.$emit("tIDENTIFIER", self.$tok(self.ts, tm), self.ts, tm); + p = $rb_minus(tm, 1); + }; + self.cs = 494; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(167, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('PUNCTUATION')); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(168, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('PUNCTUATION')); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + nil + };; + } else if ($eqeqeq(244, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tFID", self.$tok(self.ts, tm), self.ts, tm); + self.cs = self.$arg_or_cmdarg(cmd_state); + p = $rb_minus(tm, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(339, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(311, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(425, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + if ($eqeq(tm, self.te)) { + self.$emit("tFID") + } else { + + self.$emit("tIDENTIFIER", self.$tok(self.ts, tm), self.ts, tm); + p = $rb_minus(tm, 1); + }; + self.cs = 494; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(340, $ret_or_1)) { + + + tm = p;; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(312, $ret_or_1)) { + + + tm = p;; + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(341, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(313, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(345, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(316, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(344, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(315, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + if ($eqeqeq(99, ($ret_or_2 = self.act))) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = $rb_minus(p, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(106, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$diagnostic("error", "unterminated_heredoc_id", nil, self.$range(self.ts, $rb_plus(self.ts, 1))); + } else if ($eqeqeq(117, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + if ($truthy($rb_ge(self.version, 27))) { + + self.$emit("tPIPE", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = $rb_minus(p, 1); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + p = $rb_minus(p, 2); + + self.cs = 810; + _goto_level = _again; + continue;;; + }; + } else if ($eqeqeq(121, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('PUNCTUATION_BEGIN')); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(122, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("kRESCUE", "rescue".$freeze(), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 539; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(123, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS_BEGIN')); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(127, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;; + } else if ($eqeqeq(128, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tIDENTIFIER"); + if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { + + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(132, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;; + } else { + nil + };; + } else if ($eqeqeq(342, $ret_or_1)) { + + + tm = $rb_minus(p, 3);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(314, $ret_or_1)) { + + + tm = $rb_minus(p, 3);; + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(343, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(490, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tCONSTANT", self.$tok(self.ts, tm), self.ts, tm); + p = $rb_minus(tm, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(267, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + self.paren_nest = $rb_plus(self.paren_nest, 1);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tLBRACK", "[".$freeze(), $rb_minus(self.te, 1), self.te); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(386, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + self.paren_nest = $rb_plus(self.paren_nest, 1);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tLBRACK", "[".$freeze()); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(493, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + self.paren_nest = $rb_plus(self.paren_nest, 1);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tLBRACK2", "[".$freeze()); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(496, $ret_or_1)) { + + + self.paren_nest = $rb_minus(self.paren_nest, 1);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + if ($truthy($rb_lt(self.version, 24))) { + + self.cond.$lexpop(); + self.cmdarg.$lexpop(); + } else { + + self.cond.$pop(); + self.cmdarg.$pop(); + }; + if (($eqeq(self.$tok(), "}".$freeze()) || ($eqeq(self.$tok(), "]".$freeze())))) { + if ($truthy($rb_ge(self.version, 25))) { + self.cs = 810 + } else { + self.cs = 531 + } + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(259, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + self.paren_nest = $rb_plus(self.paren_nest, 1); + if ($truthy(self['$version?'](18))) { + self.command_start = true + };; + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy(self['$version?'](18))) { + + self.$emit("tLPAREN2", "(".$freeze(), $rb_minus(self.te, 1), self.te); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.$emit("tLPAREN_ARG", "(".$freeze(), $rb_minus(self.te, 1), self.te); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + };;; + } else if ($eqeqeq(272, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + self.paren_nest = $rb_plus(self.paren_nest, 1); + if ($truthy(self['$version?'](18))) { + self.command_start = true + };; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tLPAREN2", "(".$freeze()); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(280, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + self.paren_nest = $rb_plus(self.paren_nest, 1); + if ($truthy(self['$version?'](18))) { + self.command_start = true + };; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tLPAREN_ARG", "(".$freeze(), $rb_minus(self.te, 1), self.te); + if ($truthy(self['$version?'](18))) { + + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + };;; + } else if ($eqeqeq(328, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + self.paren_nest = $rb_plus(self.paren_nest, 1); + if ($truthy(self['$version?'](18))) { + self.command_start = true + };; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tLPAREN", "(".$freeze()); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(437, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + self.paren_nest = $rb_plus(self.paren_nest, 1); + if ($truthy(self['$version?'](18))) { + self.command_start = true + };; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(438, $ret_or_1)) { + + + self.paren_nest = $rb_minus(self.paren_nest, 1);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + if ($truthy($rb_lt(self.version, 24))) { + + self.cond.$lexpop(); + self.cmdarg.$lexpop(); + } else { + + self.cond.$pop(); + self.cmdarg.$pop(); + }; + if (($eqeq(self.$tok(), "}".$freeze()) || ($eqeq(self.$tok(), "]".$freeze())))) { + if ($truthy($rb_ge(self.version, 25))) { + self.cs = 810 + } else { + self.cs = 531 + } + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(72, $ret_or_1)) { + + + heredoc_e = p;; + + self.newline_s = p;; + } else if ($eqeqeq(353, $ret_or_1)) { + + + new_herebody_s = p;; + + self.te = p; + p = $rb_minus(p, 1); + + self.$tok(self.ts, heredoc_e)['$=~'](/^<<(-?)(~?)(["'`]?)(.*)\3$/m); + indent = ($truthy(($ret_or_2 = (($b = $gvars['~']) === nil ? nil : $b['$[]'](1))['$empty?']()['$!']())) ? ($ret_or_2) : ((($b = $gvars['~']) === nil ? nil : $b['$[]'](2))['$empty?']()['$!']())); + dedent_body = (($b = $gvars['~']) === nil ? nil : $b['$[]'](2))['$empty?']()['$!'](); + type = ($truthy((($b = $gvars['~']) === nil ? nil : $b['$[]'](3))['$empty?']()) ? ("<<\"".$freeze()) : ($rb_plus("<<".$freeze(), (($b = $gvars['~']) === nil ? nil : $b['$[]'](3))))); + delimiter = (($b = $gvars['~']) === nil ? nil : $b['$[]'](4)); + if ($truthy($rb_ge(self.version, 27))) { + if (($truthy($rb_gt(delimiter.$count("\n"), 0)) || ($truthy($rb_gt(delimiter.$count("\r"), 0))))) { + self.$diagnostic("error", "unterminated_heredoc_id", nil, self.$range(self.ts, $rb_plus(self.ts, 1))) + } + } else if ($truthy($rb_ge(self.version, 24))) { + if ($truthy($rb_gt(delimiter.$count("\n"), 0))) { + if ($truthy(delimiter['$end_with?']("\n"))) { + + self.$diagnostic("warning", "heredoc_id_ends_with_nl", nil, self.$range(self.ts, $rb_plus(self.ts, 1))); + delimiter = delimiter.$rstrip(); + } else { + self.$diagnostic("fatal", "heredoc_id_has_newline", nil, self.$range(self.ts, $rb_plus(self.ts, 1))) + } + } + }; + if (($truthy(dedent_body) && ($truthy(self['$version?'](18, 19, 20, 21, 22))))) { + + self.$emit("tLSHFT", "<<".$freeze(), self.ts, $rb_plus(self.ts, 2)); + p = $rb_plus(self.ts, 1); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = self.$push_literal(type, delimiter, self.ts, heredoc_e, indent, dedent_body); + self.herebody_s = ($truthy(($ret_or_2 = self.herebody_s)) ? ($ret_or_2) : (new_herebody_s)); + p = $rb_minus(self.herebody_s, 1); + };;; + } else if ($eqeqeq(348, $ret_or_1)) { + + + tm = $rb_minus(p, 1); + diag_msg = "ivar_name";; + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$diagnostic("error", diag_msg, $hash2(["name"], {"name": self.$tok(tm, self.te)}), self.$range(tm, self.te)) + } else { + + self.$emit("tCOLON", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(351, $ret_or_1)) { + + + tm = $rb_minus(p, 2); + diag_msg = "cvar_name";; + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$diagnostic("error", diag_msg, $hash2(["name"], {"name": self.$tok(tm, self.te)}), self.$range(tm, self.te)) + } else { + + self.$emit("tCOLON", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(359, $ret_or_1)) { + + + self.escape = nil;; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(389, $ret_or_1)) { + + + tm = p;; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("kRESCUE", "rescue".$freeze(), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 539; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(480, $ret_or_1)) { + + + self.num_base = 16; + self.num_digits_s = p;; + + self.num_suffix_s = p;; + } else if ($eqeqeq(474, $ret_or_1)) { + + + self.num_base = 10; + self.num_digits_s = p;; + + self.num_suffix_s = p;; + } else if ($eqeqeq(477, $ret_or_1)) { + + + self.num_base = 8; + self.num_digits_s = p;; + + self.num_suffix_s = p;; + } else if ($eqeqeq(471, $ret_or_1)) { + + + self.num_base = 2; + self.num_digits_s = p;; + + self.num_suffix_s = p;; + } else if ($eqeqeq(486, $ret_or_1)) { + + + self.num_base = 10; + self.num_digits_s = self.ts;; + + self.num_suffix_s = p;; + } else if ($eqeqeq(449, $ret_or_1)) { + + + self.num_base = 8; + self.num_digits_s = self.ts;; + + self.num_suffix_s = p;; + } else if ($eqeqeq(487, $ret_or_1)) { + + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$17(chars){var self = $$17.$$s == null ? this : $$17.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + } else if ($eqeqeq(8, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.newline_s = p;; + } else if ($eqeqeq(453, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.num_suffix_s = p;; + } else if ($eqeqeq(228, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 43;; + } else if ($eqeqeq(215, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 44;; + } else if ($eqeqeq(211, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 45;; + } else if ($eqeqeq(27, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 72;; + } else if ($eqeqeq(261, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 73;; + } else if ($eqeqeq(28, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 78;; + } else if ($eqeqeq(254, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 79;; + } else if ($eqeqeq(281, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 85;; + } else if ($eqeqeq(46, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 86;; + } else if ($eqeqeq(302, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 93;; + } else if ($eqeqeq(291, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 94;; + } else if ($eqeqeq(70, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 106;; + } else if ($eqeqeq(394, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 117;; + } else if ($eqeqeq(305, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 121;; + } else if ($eqeqeq(388, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 122;; + } else if ($eqeqeq(387, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 123;; + } else if ($eqeqeq(75, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 127;; + } else if ($eqeqeq(303, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 128;; + } else if ($eqeqeq(306, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 132;; + } else if ($eqeqeq(504, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 145;; + } else if ($eqeqeq(499, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 146;; + } else if ($eqeqeq(507, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 148;; + } else if ($eqeqeq(500, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 149;; + } else if ($eqeqeq(501, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 150;; + } else if ($eqeqeq(506, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 151;; + } else if ($eqeqeq(498, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 152;; + } else if ($eqeqeq(492, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 153;; + } else if ($eqeqeq(418, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 154;; + } else if ($eqeqeq(451, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 157;; + } else if ($eqeqeq(82, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 158;; + } else if ($eqeqeq(421, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 160;; + } else if ($eqeqeq(412, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 164;; + } else if ($eqeqeq(423, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 165;; + } else if ($eqeqeq(416, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 167;; + } else if ($eqeqeq(422, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 168;; + } else if ($eqeqeq(88, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 181;; + } else if ($eqeqeq(511, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 185;; + } else if ($eqeqeq(183, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };;; + + self.escape_s = p; + self.escape = nil;; + } else if ($eqeqeq(124, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(155, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(369, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(131, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(162, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(376, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(122, $ret_or_1)) { + + + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if (($truthy($rb_ge(self.version, 27)) && (($truthy($range(0, 8, false)['$include?'](self.escape.$ord())) || ($truthy($range(14, 31, false)['$include?'](self.escape.$ord()))))))) { + self.$diagnostic("fatal", "invalid_escape") + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(153, $ret_or_1)) { + + + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if (($truthy($rb_ge(self.version, 27)) && (($truthy($range(0, 8, false)['$include?'](self.escape.$ord())) || ($truthy($range(14, 31, false)['$include?'](self.escape.$ord()))))))) { + self.$diagnostic("fatal", "invalid_escape") + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(367, $ret_or_1)) { + + + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if (($truthy($rb_ge(self.version, 27)) && (($truthy($range(0, 8, false)['$include?'](self.escape.$ord())) || ($truthy($range(14, 31, false)['$include?'](self.escape.$ord()))))))) { + self.$diagnostic("fatal", "invalid_escape") + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(130, $ret_or_1)) { + + + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if (($truthy($rb_ge(self.version, 27)) && (($truthy($range(0, 8, false)['$include?'](self.escape.$ord())) || ($truthy($range(14, 31, false)['$include?'](self.escape.$ord()))))))) { + self.$diagnostic("fatal", "invalid_escape") + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(161, $ret_or_1)) { + + + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if (($truthy($rb_ge(self.version, 27)) && (($truthy($range(0, 8, false)['$include?'](self.escape.$ord())) || ($truthy($range(14, 31, false)['$include?'](self.escape.$ord()))))))) { + self.$diagnostic("fatal", "invalid_escape") + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(375, $ret_or_1)) { + + + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if (($truthy($rb_ge(self.version, 27)) && (($truthy($range(0, 8, false)['$include?'](self.escape.$ord())) || ($truthy($range(14, 31, false)['$include?'](self.escape.$ord()))))))) { + self.$diagnostic("fatal", "invalid_escape") + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(126, $ret_or_1)) { + + + self.escape = "\u007F";; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(157, $ret_or_1)) { + + + self.escape = "\u007F";; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(371, $ret_or_1)) { + + + self.escape = "\u007F";; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(129, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_minus(p, 2), p).$to_i(16));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(160, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_minus(p, 2), p).$to_i(16));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(374, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_minus(p, 2), p).$to_i(16));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(136, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.$diagnostic("fatal", "unterminated_unicode", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(167, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.$diagnostic("fatal", "unterminated_unicode", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(381, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.$diagnostic("fatal", "unterminated_unicode", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(116, $ret_or_1)) { + + + self.escape_s = p; + self.escape = nil;; + + self.$diagnostic("fatal", "escape_eof", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(148, $ret_or_1)) { + + + self.escape_s = p; + self.escape = nil;; + + self.$diagnostic("fatal", "escape_eof", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(362, $ret_or_1)) { + + + self.escape_s = p; + self.escape = nil;; + + self.$diagnostic("fatal", "escape_eof", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(62, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.newline_s = p;; + } else if ($eqeqeq(221, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(236, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(248, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(270, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1); + + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(285, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(297, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(323, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(399, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(409, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(430, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(102, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(482, $ret_or_1)) { + + + self.num_base = 10; + self.num_digits_s = self.ts;; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$18(chars){var self = $$18.$$s == null ? this : $$18.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + } else if ($eqeqeq(446, $ret_or_1)) { + + + self.num_base = 8; + self.num_digits_s = self.ts;; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$19(chars){var self = $$19.$$s == null ? this : $$19.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + } else if ($eqeqeq(461, $ret_or_1)) { + + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$20(chars){var self = $$20.$$s == null ? this : $$20.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(454, $ret_or_1)) { + + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$21(chars){var self = $$21.$$s == null ? this : $$21.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tFLOAT", self.$Float(chars));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(450, $ret_or_1)) { + + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$22(chars){var self = $$22.$$s == null ? this : $$22.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tFLOAT", self.$Float(chars));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(276, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.newline_s = p;; + + self.act = 79;; + } else if ($eqeqeq(36, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.act = 78;; + } else if ($eqeqeq(47, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.act = 86;; + } else if ($eqeqeq(94, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.act = 181;; + } else if ($eqeqeq(66, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.act = 99;; + } else if ($eqeqeq(85, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.act = 147;; + } else if ($eqeqeq(93, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.act = 181;; + } else if ($eqeqeq(38, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + tm = p;; + + self.act = 73;; + } else if ($eqeqeq(391, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + tm = p;; + + self.act = 127;; + } else if ($eqeqeq(390, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + tm = p;; + + self.act = 128;; + } else if ($eqeqeq(483, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.num_base = 10; + self.num_digits_s = self.ts;; + + self.act = 154;; + } else if ($eqeqeq(127, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(158, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(372, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(125, $ret_or_1)) { + + + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if (($truthy($rb_ge(self.version, 27)) && (($truthy($range(0, 8, false)['$include?'](self.escape.$ord())) || ($truthy($range(14, 31, false)['$include?'](self.escape.$ord()))))))) { + self.$diagnostic("fatal", "invalid_escape") + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(156, $ret_or_1)) { + + + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if (($truthy($rb_ge(self.version, 27)) && (($truthy($range(0, 8, false)['$include?'](self.escape.$ord())) || ($truthy($range(14, 31, false)['$include?'](self.escape.$ord()))))))) { + self.$diagnostic("fatal", "invalid_escape") + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(370, $ret_or_1)) { + + + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if (($truthy($rb_ge(self.version, 27)) && (($truthy($range(0, 8, false)['$include?'](self.escape.$ord())) || ($truthy($range(14, 31, false)['$include?'](self.escape.$ord()))))))) { + self.$diagnostic("fatal", "invalid_escape") + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(132, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_minus(p, 2), p).$to_i(16));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(163, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_minus(p, 2), p).$to_i(16));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(377, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_minus(p, 2), p).$to_i(16));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(128, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_minus(p, 2), p).$to_i(16));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(159, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_minus(p, 2), p).$to_i(16));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(373, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_minus(p, 2), p).$to_i(16));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(478, $ret_or_1)) { + + + self.num_base = 16; + self.num_digits_s = p;; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$23(chars){var self = $$23.$$s == null ? this : $$23.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(472, $ret_or_1)) { + + + self.num_base = 10; + self.num_digits_s = p;; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$24(chars){var self = $$24.$$s == null ? this : $$24.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(475, $ret_or_1)) { + + + self.num_base = 8; + self.num_digits_s = p;; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$25(chars){var self = $$25.$$s == null ? this : $$25.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(469, $ret_or_1)) { + + + self.num_base = 2; + self.num_digits_s = p;; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$26(chars){var self = $$26.$$s == null ? this : $$26.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(481, $ret_or_1)) { + + + self.num_base = 10; + self.num_digits_s = self.ts;; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$27(chars){var self = $$27.$$s == null ? this : $$27.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(445, $ret_or_1)) { + + + self.num_base = 8; + self.num_digits_s = self.ts;; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$28(chars){var self = $$28.$$s == null ? this : $$28.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(32, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + tm = p;; + + self.act = 73;; + } else if ($eqeqeq(63, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.act = 99;; + } else if ($eqeqeq(92, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.act = 181;; + } else if ($eqeqeq(488, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$29(chars){var self = $$29.$$s == null ? this : $$29.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + + self.act = 156;; + } else if ($eqeqeq(484, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.num_base = 10; + self.num_digits_s = self.ts;; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$30(chars){var self = $$30.$$s == null ? this : $$30.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + + self.act = 156;; + } else if ($eqeqeq(448, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.num_base = 8; + self.num_digits_s = self.ts;; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$31(chars){var self = $$31.$$s == null ? this : $$31.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + + self.act = 156;; + } else { + nil + } + }; + }; + if ($truthy($rb_le(_goto_level, _again))) { + + if ($eqeqeq(96, ($ret_or_1 = _lex_to_state_actions['$[]'](self.cs)))) { + + self.ts = nil; + } else { + nil + }; + if ($eqeq(self.cs, 0)) { + + _goto_level = _out; + continue;; + }; + p = $rb_plus(p, 1); + if ($neqeq(p, pe)) { + + _goto_level = _resume; + continue;; + }; + }; + if ($truthy($rb_le(_goto_level, _test_eof))) { + if ($eqeq(p, eof)) { + if ($truthy($rb_gt(_lex_eof_trans['$[]'](self.cs), 0))) { + + _trans = $rb_minus(_lex_eof_trans['$[]'](self.cs), 1); + _goto_level = _eof_trans; + continue;; + } + } + }; + if ($truthy($rb_le(_goto_level, _out))) { + break; + }; + };; + if ($truthy(false)) { + testEof + }; + self.p = p; + if ($truthy(self.token_queue['$any?']())) { + return self.token_queue.$shift() + } else if ($eqeq(self.cs, klass.$lex_error())) { + return [false, ["$error".$freeze(), self.$range($rb_minus(p, 1), p)]] + } else { + + eof = self.source_pts.$size(); + return [false, ["$eof".$freeze(), self.$range(eof, eof)]]; + }; + }, 0); + self.$protected(); + + $def(self, '$eof_codepoint?', function $Lexer_eof_codepoint$ques$32(point) { + + return [4, 26, 0]['$include?'](point) + }, 1); + + $def(self, '$version?', function $Lexer_version$ques$33($a) { + var $post_args, versions, self = this; + + + + $post_args = Opal.slice.call(arguments); + + versions = $post_args;; + return versions['$include?'](self.version); + }, -1); + + $def(self, '$stack_pop', function $$stack_pop() { + var self = this; + + + self.top = $rb_minus(self.top, 1); + return self.stack['$[]'](self.top); + }, 0); + + $def(self, '$encode_escape', function $$encode_escape(ord) { + var self = this; + + return ord.$chr().$force_encoding(self.source_buffer.$source().$encoding()) + }, 1); + + $def(self, '$tok', function $$tok(s, e) { + var self = this; + + + + if (s == null) s = self.ts;; + + if (e == null) e = self.te;; + return self.source_buffer.$slice(Opal.Range.$new(s,e, true)); + }, -1); + + $def(self, '$range', function $$range(s, e) { + var self = this; + + + + if (s == null) s = self.ts;; + + if (e == null) e = self.te;; + return $$$($$$($$('Parser'), 'Source'), 'Range').$new(self.source_buffer, s, e); + }, -1); + + $def(self, '$emit', function $$emit(type, value, s, e) { + var self = this, token = nil; + + + + if (value == null) value = self.$tok();; + + if (s == null) s = self.ts;; + + if (e == null) e = self.te;; + token = [type, [value, self.$range(s, e)]]; + self.token_queue.$push(token); + if ($truthy(self.tokens)) { + self.tokens.$push(token) + }; + return token; + }, -2); + + $def(self, '$emit_table', function $$emit_table(table, s, e) { + var self = this, value = nil; + + + + if (s == null) s = self.ts;; + + if (e == null) e = self.te;; + value = self.$tok(s, e); + return self.$emit(table['$[]'](value), value, s, e); + }, -2); + + $def(self, '$emit_do', function $$emit_do(do_block) { + var self = this; + + + + if (do_block == null) do_block = false;; + if ($truthy(self.cond['$active?']())) { + return self.$emit("kDO_COND", "do".$freeze()) + } else if (($truthy(self.cmdarg['$active?']()) || ($truthy(do_block)))) { + return self.$emit("kDO_BLOCK", "do".$freeze()) + } else { + return self.$emit("kDO", "do".$freeze()) + }; + }, -1); + + $def(self, '$arg_or_cmdarg', function $$arg_or_cmdarg(cmd_state) { + var self = this; + + if ($truthy(cmd_state)) { + return self.$class().$lex_en_expr_cmdarg() + } else { + return self.$class().$lex_en_expr_arg() + } + }, 1); + + $def(self, '$emit_comment', function $$emit_comment(s, e) { + var self = this; + + + + if (s == null) s = self.ts;; + + if (e == null) e = self.te;; + if ($truthy(self.comments)) { + self.comments.$push($$$($$$($$('Parser'), 'Source'), 'Comment').$new(self.$range(s, e))) + }; + if ($truthy(self.tokens)) { + self.tokens.$push(["tCOMMENT", [self.$tok(s, e), self.$range(s, e)]]) + }; + return nil; + }, -1); + + $def(self, '$diagnostic', function $$diagnostic(type, reason, arguments$, location, highlights) { + var self = this; + + + + if (arguments$ == null) arguments$ = nil;; + + if (location == null) location = self.$range();; + + if (highlights == null) highlights = [];; + return self.diagnostics.$process($$$($$('Parser'), 'Diagnostic').$new(type, reason, arguments$, location, highlights)); + }, -3); + + $def(self, '$push_literal', function $$push_literal($a) { + var $post_args, args, self = this, new_literal = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + new_literal = $send($$('Literal'), 'new', [self].concat($to_a(args))); + self.literal_stack.$push(new_literal); + return self.$next_state_for_literal(new_literal); + }, -1); + + $def(self, '$next_state_for_literal', function $$next_state_for_literal(literal) { + var self = this; + + if (($truthy(literal['$words?']()) && ($truthy(literal['$backslash_delimited?']())))) { + if ($truthy(literal['$interpolate?']())) { + return self.$class().$lex_en_interp_backslash_delimited_words() + } else { + return self.$class().$lex_en_plain_backslash_delimited_words() + } + } else if (($truthy(literal['$words?']()) && ($not(literal['$backslash_delimited?']())))) { + if ($truthy(literal['$interpolate?']())) { + return self.$class().$lex_en_interp_words() + } else { + return self.$class().$lex_en_plain_words() + } + } else if (($not(literal['$words?']()) && ($truthy(literal['$backslash_delimited?']())))) { + if ($truthy(literal['$interpolate?']())) { + return self.$class().$lex_en_interp_backslash_delimited() + } else { + return self.$class().$lex_en_plain_backslash_delimited() + } + } else if ($truthy(literal['$interpolate?']())) { + return self.$class().$lex_en_interp_string() + } else { + return self.$class().$lex_en_plain_string() + } + }, 1); + + $def(self, '$literal', function $$literal() { + var self = this; + + return self.literal_stack.$last() + }, 0); + + $def(self, '$pop_literal', function $$pop_literal() { + var self = this, old_literal = nil; + + + old_literal = self.literal_stack.$pop(); + self.dedent_level = old_literal.$dedent_level(); + if ($eqeq(old_literal.$type(), "tREGEXP_BEG")) { + return self.$class().$lex_en_regexp_modifiers() + } else { + return self.$class().$lex_en_expr_end() + }; + }, 0); + $const_set($nesting[0], 'PUNCTUATION', $hash2(["=", "&", "|", "!", "^", "+", "-", "*", "/", "%", "~", ",", ";", ".", "..", "...", "[", "]", "(", ")", "?", ":", "&&", "||", "-@", "+@", "~@", "**", "->", "=~", "!~", "==", "!=", ">", ">>", ">=", "<", "<<", "<=", "=>", "::", "===", "<=>", "[]", "[]=", "{", "}", "`", "!@", "&."], {"=": "tEQL", "&": "tAMPER2", "|": "tPIPE", "!": "tBANG", "^": "tCARET", "+": "tPLUS", "-": "tMINUS", "*": "tSTAR2", "/": "tDIVIDE", "%": "tPERCENT", "~": "tTILDE", ",": "tCOMMA", ";": "tSEMI", ".": "tDOT", "..": "tDOT2", "...": "tDOT3", "[": "tLBRACK2", "]": "tRBRACK", "(": "tLPAREN2", ")": "tRPAREN", "?": "tEH", ":": "tCOLON", "&&": "tANDOP", "||": "tOROP", "-@": "tUMINUS", "+@": "tUPLUS", "~@": "tTILDE", "**": "tPOW", "->": "tLAMBDA", "=~": "tMATCH", "!~": "tNMATCH", "==": "tEQ", "!=": "tNEQ", ">": "tGT", ">>": "tRSHFT", ">=": "tGEQ", "<": "tLT", "<<": "tLSHFT", "<=": "tLEQ", "=>": "tASSOC", "::": "tCOLON2", "===": "tEQQ", "<=>": "tCMP", "[]": "tAREF", "[]=": "tASET", "{": "tLCURLY", "}": "tRCURLY", "`": "tBACK_REF2", "!@": "tBANG", "&.": "tANDDOT"})); + $const_set($nesting[0], 'PUNCTUATION_BEGIN', $hash2(["&", "*", "**", "+", "-", "::", "(", "{", "["], {"&": "tAMPER", "*": "tSTAR", "**": "tDSTAR", "+": "tUPLUS", "-": "tUMINUS", "::": "tCOLON3", "(": "tLPAREN", "{": "tLBRACE", "[": "tLBRACK"})); + $const_set($nesting[0], 'KEYWORDS', $hash2(["if", "unless", "while", "until", "rescue", "defined?", "BEGIN", "END"], {"if": "kIF_MOD", "unless": "kUNLESS_MOD", "while": "kWHILE_MOD", "until": "kUNTIL_MOD", "rescue": "kRESCUE_MOD", "defined?": "kDEFINED", "BEGIN": "klBEGIN", "END": "klEND"})); + $const_set($nesting[0], 'KEYWORDS_BEGIN', $hash2(["if", "unless", "while", "until", "rescue", "defined?", "BEGIN", "END"], {"if": "kIF", "unless": "kUNLESS", "while": "kWHILE", "until": "kUNTIL", "rescue": "kRESCUE", "defined?": "kDEFINED", "BEGIN": "klBEGIN", "END": "klEND"})); + return $send(["class", "module", "def", "undef", "begin", "end", "then", "elsif", "else", "ensure", "case", "when", "for", "break", "next", "redo", "retry", "in", "do", "return", "yield", "super", "self", "nil", "true", "false", "and", "or", "not", "alias", "__FILE__", "__LINE__", "__ENCODING__"], 'each', [], function $Lexer$34(keyword){ + + + if (keyword == null) keyword = nil;; + $writer = [keyword, (($writer = [keyword, "k" + (keyword.$upcase())]), $send($$('KEYWORDS'), '[]=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)])]; + $send($$('KEYWORDS_BEGIN'), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 1); + })($$('Parser'), null, $nesting) +}; + +Opal.modules["parser/lexer/literal"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $hash2 = Opal.hash2, $enc = Opal.enc, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $to_ary = Opal.to_ary, $def = Opal.def, $eqeq = Opal.eqeq, $rb_minus = Opal.rb_minus, $neqeq = Opal.neqeq, $not = Opal.not, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $rb_gt = Opal.rb_gt; + + Opal.add_stubs('attr_reader,attr_accessor,coerce_encoding,include?,send,+,[],fetch,==,!,heredoc?,start_with?,freeze,clear_buffer,emit_start_tok,type,=~,words?,delimiter?,-,extend_space,!=,flush_string,emit,each_char,===,%,>,nil?,<<,empty?,extend_content,protected,lstrip,b,dup,force_encoding,encoding,source,source_buffer,length'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Literal'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.lexer = $proto.start_tok = $proto.str_type = $proto.monolithic = $proto.interpolate = $proto.heredoc_e = $proto.dedent_body = $proto.end_delim = $proto.start_delim = $proto.nesting = $proto.label_allowed = $proto.buffer = $proto.str_s = $proto.interp_braces = $proto.buffer_s = $proto.buffer_e = $proto.space_emitted = $proto.indent = nil; + + $const_set($nesting[0], 'DELIMITERS', $hash2(["(", "[", "{", "<"], {"(": $enc(")", "ASCII-8BIT"), "[": $enc("]", "ASCII-8BIT"), "{": $enc("}", "ASCII-8BIT"), "<": $enc(">", "ASCII-8BIT")})); + $const_set($nesting[0], 'TYPES', $hash2(["'", "<<'", "%q", "\"", "<<\"", "%", "%Q", "%w", "%W", "%i", "%I", ":'", "%s", ":\"", "/", "%r", "%x", "`", "<<`"], {"'": ["tSTRING_BEG", false], "<<'": ["tSTRING_BEG", false], "%q": ["tSTRING_BEG", false], "\"": ["tSTRING_BEG", true], "<<\"": ["tSTRING_BEG", true], "%": ["tSTRING_BEG", true], "%Q": ["tSTRING_BEG", true], "%w": ["tQWORDS_BEG", false], "%W": ["tWORDS_BEG", true], "%i": ["tQSYMBOLS_BEG", false], "%I": ["tSYMBOLS_BEG", true], ":'": ["tSYMBEG", false], "%s": ["tSYMBEG", false], ":\"": ["tSYMBEG", true], "/": ["tREGEXP_BEG", true], "%r": ["tREGEXP_BEG", true], "%x": ["tXSTRING_BEG", true], "`": ["tXSTRING_BEG", true], "<<`": ["tXSTRING_BEG", true]})); + self.$attr_reader("heredoc_e", "str_s", "dedent_level"); + self.$attr_accessor("saved_herebody_s"); + + $def(self, '$initialize', function $$initialize(lexer, str_type, delimiter, str_s, heredoc_e, indent, dedent_body, label_allowed) { + var $a, $b, self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + + + if (heredoc_e == null) heredoc_e = nil;; + + if (indent == null) indent = false;; + + if (dedent_body == null) dedent_body = false;; + + if (label_allowed == null) label_allowed = false;; + self.lexer = lexer; + self.nesting = 1; + str_type = self.$coerce_encoding(str_type); + delimiter = self.$coerce_encoding(delimiter); + if (!$truthy($$('TYPES')['$include?'](str_type))) { + lexer.$send("diagnostic", "error", "unexpected_percent_str", $hash2(["type"], {"type": str_type}), self.lexer.$send("range", str_s, $rb_plus(str_s, 2))) + }; + self.str_type = str_type; + self.str_s = str_s; + $b = $$('TYPES')['$[]'](str_type), $a = $to_ary($b), (self.start_tok = ($a[0] == null ? nil : $a[0])), (self.interpolate = ($a[1] == null ? nil : $a[1])), $b; + self.start_delim = ($truthy($$('DELIMITERS')['$include?'](delimiter)) ? (delimiter) : (nil)); + self.end_delim = $$('DELIMITERS').$fetch(delimiter, delimiter); + self.heredoc_e = heredoc_e; + self.indent = indent; + self.label_allowed = label_allowed; + self.dedent_body = dedent_body; + self.dedent_level = nil; + self.interp_braces = 0; + self.space_emitted = true; + self.monolithic = ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.start_tok['$==']("tSTRING_BEG"))) ? ([$enc("'", "ASCII-8BIT"), $enc("\"", "ASCII-8BIT")]['$include?'](str_type)) : ($ret_or_2)))) ? (self['$heredoc?']()['$!']()) : ($ret_or_1)); + if ($truthy(self.str_type['$start_with?']($enc("%", "ASCII-8BIT").$freeze()))) { + self.str_type = $rb_plus(self.str_type, delimiter) + }; + self.$clear_buffer(); + if ($truthy(self.monolithic)) { + return nil + } else { + return self.$emit_start_tok() + }; + }, -5); + + $def(self, '$interpolate?', function $Literal_interpolate$ques$1() { + var self = this; + + return self.interpolate + }, 0); + + $def(self, '$words?', function $Literal_words$ques$2() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = ($truthy(($ret_or_3 = self.$type()['$==']("tWORDS_BEG"))) ? ($ret_or_3) : (self.$type()['$==']("tQWORDS_BEG"))))) ? ($ret_or_2) : (self.$type()['$==']("tSYMBOLS_BEG")))))) { + return $ret_or_1 + } else { + return self.$type()['$==']("tQSYMBOLS_BEG") + } + }, 0); + + $def(self, '$regexp?', function $Literal_regexp$ques$3() { + var self = this; + + return self.$type()['$==']("tREGEXP_BEG") + }, 0); + + $def(self, '$heredoc?', function $Literal_heredoc$ques$4() { + var self = this; + + return self.heredoc_e['$!']()['$!']() + }, 0); + + $def(self, '$plain_heredoc?', function $Literal_plain_heredoc$ques$5() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$heredoc?']()))) { + return self.dedent_body['$!']() + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$squiggly_heredoc?', function $Literal_squiggly_heredoc$ques$6() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$heredoc?']()))) { + return self.dedent_body + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$backslash_delimited?', function $Literal_backslash_delimited$ques$7() { + var self = this; + + return self.end_delim['$==']($enc("\\", "ASCII-8BIT").$freeze()) + }, 0); + + $def(self, '$type', function $$type() { + var self = this; + + return self.start_tok + }, 0); + + $def(self, '$munge_escape?', function $Literal_munge_escape$ques$8(character) { + var self = this; + + + character = self.$coerce_encoding(character); + if (($truthy(self['$words?']()) && ($truthy(character['$=~'](/[ \t\v\r\f\n]/))))) { + return true + } else { + return [$enc("\\", "ASCII-8BIT").$freeze(), self.start_delim, self.end_delim]['$include?'](character) + }; + }, 1); + + $def(self, '$nest_and_try_closing', function $$nest_and_try_closing(delimiter, ts, te, lookahead) { + var self = this; + + + + if (lookahead == null) lookahead = nil;; + delimiter = self.$coerce_encoding(delimiter); + if (($truthy(self.start_delim) && ($eqeq(self.start_delim, delimiter)))) { + self.nesting = $rb_plus(self.nesting, 1) + } else if ($truthy(self['$delimiter?'](delimiter))) { + self.nesting = $rb_minus(self.nesting, 1) + }; + if ($eqeq(self.nesting, 0)) { + + if ($truthy(self['$words?']())) { + self.$extend_space(ts, ts) + }; + if ((((($truthy(lookahead) && ($truthy(self.label_allowed))) && ($eqeq(lookahead['$[]'](0), $enc(":", "ASCII-8BIT")))) && ($neqeq(lookahead['$[]'](1), $enc(":", "ASCII-8BIT")))) && ($eqeq(self.start_tok, "tSTRING_BEG")))) { + + self.$flush_string(); + return self.$emit("tLABEL_END", self.end_delim, ts, $rb_plus(te, 1)); + } else if ($truthy(self.monolithic)) { + return self.$emit("tSTRING", self.buffer, self.str_s, te) + } else { + + if (!$truthy(self['$heredoc?']())) { + self.$flush_string() + }; + return self.$emit("tSTRING_END", self.end_delim, ts, te); + }; + } else { + return nil + }; + }, -4); + + $def(self, '$infer_indent_level', function $$infer_indent_level(line) { + var self = this, indent_level = nil; + + + if ($not(self.dedent_body)) { + return nil + }; + indent_level = 0; + return (function(){var $brk = Opal.new_brk(); try {return $send(line, 'each_char', [], function $$9(char$){var self = $$9.$$s == null ? this : $$9.$$s, $ret_or_1 = nil; + if (self.dedent_level == null) self.dedent_level = nil; + + + + if (char$ == null) char$ = nil;; + if ($eqeqeq(" ", ($ret_or_1 = char$))) { + return (indent_level = $rb_plus(indent_level, 1)) + } else if ($eqeqeq("\t", $ret_or_1)) { + return (indent_level = $rb_plus(indent_level, $rb_minus(8, indent_level['$%'](8)))) + } else { + + if (($truthy(self.dedent_level['$nil?']()) || ($truthy($rb_gt(self.dedent_level, indent_level))))) { + self.dedent_level = indent_level + }; + + Opal.brk(nil, $brk); + };}, {$$arity: 1, $$s: self, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + }, 1); + + $def(self, '$start_interp_brace', function $$start_interp_brace() { + var self = this; + + return (self.interp_braces = $rb_plus(self.interp_braces, 1)) + }, 0); + + $def(self, '$end_interp_brace_and_try_closing', function $$end_interp_brace_and_try_closing() { + var self = this; + + + self.interp_braces = $rb_minus(self.interp_braces, 1); + + return self.interp_braces['$=='](0);; + }, 0); + + $def(self, '$extend_string', function $$extend_string(string, ts, te) { + var self = this, $ret_or_1 = nil; + + + self.buffer_s = ($truthy(($ret_or_1 = self.buffer_s)) ? ($ret_or_1) : (ts)); + self.buffer_e = te; + return self.buffer['$<<'](string); + }, 3); + + $def(self, '$flush_string', function $$flush_string() { + var self = this; + + + if ($truthy(self.monolithic)) { + + self.$emit_start_tok(); + self.monolithic = false; + }; + if ($truthy(self.buffer['$empty?']())) { + return nil + } else { + + self.$emit("tSTRING_CONTENT", self.buffer, self.buffer_s, self.buffer_e); + self.$clear_buffer(); + return self.$extend_content(); + }; + }, 0); + + $def(self, '$extend_content', function $$extend_content() { + var self = this; + + return (self.space_emitted = false) + }, 0); + + $def(self, '$extend_space', function $$extend_space(ts, te) { + var self = this; + + + self.$flush_string(); + if ($truthy(self.space_emitted)) { + return nil + } else { + + self.$emit("tSPACE", nil, ts, te); + return (self.space_emitted = true); + }; + }, 2); + + $def(self, '$supports_line_continuation_via_slash?', function $Literal_supports_line_continuation_via_slash$ques$10() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$words?']()['$!']()))) { + return self.interpolate + } else { + return $ret_or_1 + } + }, 0); + self.$protected(); + + $def(self, '$delimiter?', function $Literal_delimiter$ques$11(delimiter) { + var self = this; + + if ($truthy(self.indent)) { + return self.end_delim['$=='](delimiter.$lstrip()) + } else { + return self.end_delim['$=='](delimiter) + } + }, 1); + + $def(self, '$coerce_encoding', function $$coerce_encoding(string) { + + return string.$b() + }, 1); + + $def(self, '$clear_buffer', function $$clear_buffer() { + var self = this; + + + self.buffer = $enc("", "ASCII-8BIT").$dup(); + self.buffer.$force_encoding(self.lexer.$source_buffer().$source().$encoding()); + self.buffer_s = nil; + return (self.buffer_e = nil); + }, 0); + + $def(self, '$emit_start_tok', function $$emit_start_tok() { + var self = this, str_e = nil, $ret_or_1 = nil; + + + str_e = ($truthy(($ret_or_1 = self.heredoc_e)) ? ($ret_or_1) : ($rb_plus(self.str_s, self.str_type.$length()))); + return self.$emit(self.start_tok, self.str_type, self.str_s, str_e); + }, 0); + return $def(self, '$emit', function $$emit(token, type, s, e) { + var self = this; + + return self.lexer.$send("emit", token, type, s, e) + }, 4); + })($$('Lexer'), null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/lexer/stack_state"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $alias = Opal.alias; + + Opal.add_stubs('freeze,clear,|,<<,&,>>,==,[],to_s'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'StackState'); + + var $proto = self.$$prototype; + + $proto.stack = $proto.name = nil; + + + $def(self, '$initialize', function $$initialize(name) { + var self = this; + + + self.name = name.$freeze(); + return self.$clear(); + }, 1); + + $def(self, '$clear', function $$clear() { + var self = this; + + return (self.stack = 0) + }, 0); + + $def(self, '$push', function $$push(bit) { + var self = this, bit_value = nil; + + + bit_value = ($truthy(bit) ? (1) : (0)); + self.stack = self.stack['$<<'](1)['$|'](bit_value); + return bit; + }, 1); + + $def(self, '$pop', function $$pop() { + var self = this, bit_value = nil; + + + bit_value = self.stack['$&'](1); + self.stack = self.stack['$>>'](1); + return bit_value['$=='](1); + }, 0); + + $def(self, '$lexpop', function $$lexpop() { + var self = this; + + + self.stack = self.stack['$>>'](1)['$|'](self.stack['$&'](1)); + return self.stack['$[]'](0)['$=='](1); + }, 0); + + $def(self, '$active?', function $StackState_active$ques$1() { + var self = this; + + return self.stack['$[]'](0)['$=='](1) + }, 0); + + $def(self, '$empty?', function $StackState_empty$ques$2() { + var self = this; + + return self.stack['$=='](0) + }, 0); + + $def(self, '$to_s', function $$to_s() { + var self = this; + + return "[" + (self.stack.$to_s(2)) + " <= " + (self.name) + "]" + }, 0); + return $alias(self, "inspect", "to_s"); + })($$('Lexer'), null) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/lexer/dedenter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $eqeq = Opal.eqeq, $send = Opal.send, $truthy = Opal.truthy, $to_ary = Opal.to_ary, $slice = Opal.slice, $rb_le = Opal.rb_le, $eqeqeq = Opal.eqeqeq, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $rb_gt = Opal.rb_gt, $rb_times = Opal.rb_times, $rb_divide = Opal.rb_divide; + + Opal.add_stubs('encoding,split,force_encoding,==,length,map!,each,each_char,<=,===,+,-,>,*,/,slice!,replace,join,end_with?'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Dedenter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.at_line_begin = nil; + + $const_set($nesting[0], 'TAB_WIDTH', 8); + + $def(self, '$initialize', function $$initialize(dedent_level) { + var self = this; + + + self.dedent_level = dedent_level; + self.at_line_begin = true; + return (self.indent_level = 0); + }, 1); + + $def(self, '$dedent', function $$dedent(string) { + var $a, $b, self = this, original_encoding = nil, lines = nil, lines_to_dedent = nil, _first = nil; + + + original_encoding = string.$encoding(); + lines = string.$force_encoding($$$($$('Encoding'), 'BINARY')).$split("\\\n"); + if ($eqeq(lines.$length(), 1)) { + lines = [string.$force_encoding(original_encoding)] + } else { + $send(lines, 'map!', [], function $$1(s){ + + + if (s == null) s = nil;; + return s.$force_encoding(original_encoding);}, 1) + }; + if ($truthy(self.at_line_begin)) { + lines_to_dedent = lines + } else { + $b = lines, $a = $to_ary($b), (_first = ($a[0] == null ? nil : $a[0])), (lines_to_dedent = $slice.call($a, 1)), $b + }; + (function(){var $brk = Opal.new_brk(); try {return $send(lines_to_dedent, 'each', [], function $$2(line){var self = $$2.$$s == null ? this : $$2.$$s, left_to_remove = nil, remove = nil; + if (self.dedent_level == null) self.dedent_level = nil; + + + + if (line == null) line = nil;; + left_to_remove = self.dedent_level; + remove = 0; + (function(){var $brk = Opal.new_brk(); try {return $send(line, 'each_char', [], function $$3(char$){var self = $$3.$$s == null ? this : $$3.$$s, $ret_or_1 = nil; + if (self.dedent_level == null) self.dedent_level = nil; + + + + if (char$ == null) char$ = nil;; + if ($truthy($rb_le(left_to_remove, 0))) { + + Opal.brk(nil, $brk) + }; + if ($eqeqeq(" ", ($ret_or_1 = char$))) { + + remove = $rb_plus(remove, 1); + return (left_to_remove = $rb_minus(left_to_remove, 1)); + } else if ($eqeqeq("\t", $ret_or_1)) { + + if ($truthy($rb_gt($rb_times($$('TAB_WIDTH'), $rb_plus($rb_divide(remove, $$('TAB_WIDTH')), 1)), self.dedent_level))) { + + Opal.brk(nil, $brk) + }; + remove = $rb_plus(remove, 1); + return (left_to_remove = $rb_minus(left_to_remove, $$('TAB_WIDTH'))); + } else { + + Opal.brk(nil, $brk) + };}, {$$arity: 1, $$s: self, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + return line['$slice!'](0, remove);}, {$$arity: 1, $$s: self, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + string.$replace(lines.$join()); + return (self.at_line_begin = string['$end_with?']("\n")); + }, 1); + return $def(self, '$interrupt', function $$interrupt() { + var self = this; + + return (self.at_line_begin = false) + }, 0); + })($$('Lexer'), null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/builders/default"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $to_a = Opal.to_a, $eqeqeq = Opal.eqeqeq, $hash2 = Opal.hash2, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $not = Opal.not, $send = Opal.send, $neqeq = Opal.neqeq, $to_ary = Opal.to_ary, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $rb_ge = Opal.rb_ge, $range = Opal.range, $slice = Opal.slice, $rb_gt = Opal.rb_gt, $rb_le = Opal.rb_le, $rb_lt = Opal.rb_lt; + + Opal.add_stubs('attr_accessor,n0,token_map,numeric,n,value,new,loc,private,===,+@,-@,updated,join,expression,string_value,delimited_string_map,unquoted_map,collapse_string_parts?,nil?,first,children,string_map,prefix_string_map,to_sym,collection_map,empty?,==,version,diagnostic,!,type,dedent,map,interrupt,compact,uniq,sort,each_char,to_proc,static_regexp,message,<<,regexp_map,unary_op_map,binary_op_map,!=,%,size,last,each_slice,pair_keyword_map,pair_quoted_map,symbol_compose,adjust,=~,pair_keyword,accessible,upto,-,length,+,[],>=,range_map,variable_map,name,source_buffer,dup,line,emit_encoding,class,any?,end_with?,to_s,try_declare_numparam,declared?,static_env,var_send_map,top,current_arg_stack,parser,constant_map,in_def,context,check_assignment_to_numparam,check_reserved_for_numparam,declare,with_expression,with_operator,join_exprs,module_definition_map,definition_map,endless_definition_map,validate_definee,keyword_map,check_duplicate_args,validate_no_forward_arg_after_restarg,emit_forward_arg,forward_arg,arg_prefix_map,kwarg_map,emit_procarg0,emit_arg_inside_procarg0,location,resize,end,call_type_for_dot,emit_kwargs,rewrite_hash_args_to_kwargs,send_map,emit_lambda,expr_map,keyword,include?,block_map,array,emit_index,index_map,send_index_map,send_binary_op_map,static_regexp_node,each,names,send_unary_op_map,check_condition,condition_map,keyword_mod_map,ternary_map,for_map,>,count,rescue_body_map,eh_keyword_map,push,none?,one?,begin,guard_map,check_lvar_name,check_duplicate_pattern_variable,match_hash_var_from_str,match_var,check_duplicate_pattern_key,static_string,pair_quoted,match_hash_var,<=,check_duplicate_arg,is_a?,[]=,arg_name_collides?,<,in_dynamic_block?,has_numparams?,max_numparam_stack,start_with?,pattern_variables,pattern_hash_keys,with,begin_pos,end_pos,encode,valid_encoding?,process,diagnostics,send,kwargs?'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Default'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.parser = $proto.emit_file_line_as_literals = nil; + + (function(self, $parent_nesting) { + + return self.$attr_accessor("emit_lambda") + })(Opal.get_singleton_class(self), $nesting); + self.emit_lambda = false; + (function(self, $parent_nesting) { + + return self.$attr_accessor("emit_procarg0") + })(Opal.get_singleton_class(self), $nesting); + self.emit_procarg0 = false; + (function(self, $parent_nesting) { + + return self.$attr_accessor("emit_encoding") + })(Opal.get_singleton_class(self), $nesting); + self.emit_encoding = false; + (function(self, $parent_nesting) { + + return self.$attr_accessor("emit_index") + })(Opal.get_singleton_class(self), $nesting); + self.emit_index = false; + (function(self, $parent_nesting) { + + return self.$attr_accessor("emit_arg_inside_procarg0") + })(Opal.get_singleton_class(self), $nesting); + self.emit_arg_inside_procarg0 = false; + (function(self, $parent_nesting) { + + return self.$attr_accessor("emit_forward_arg") + })(Opal.get_singleton_class(self), $nesting); + self.emit_forward_arg = false; + (function(self, $parent_nesting) { + + return self.$attr_accessor("emit_kwargs") + })(Opal.get_singleton_class(self), $nesting); + self.emit_kwargs = false; + (function(self, $parent_nesting) { + + return self.$attr_accessor("emit_match_pattern") + })(Opal.get_singleton_class(self), $nesting); + self.emit_match_pattern = false; + (function(self, $parent_nesting) { + + return $def(self, '$modernize', function $$modernize() { + var self = this; + + + self.emit_lambda = true; + self.emit_procarg0 = true; + self.emit_encoding = true; + self.emit_index = true; + self.emit_arg_inside_procarg0 = true; + self.emit_forward_arg = true; + self.emit_kwargs = true; + return (self.emit_match_pattern = true); + }, 0) + })(Opal.get_singleton_class(self), $nesting); + self.$attr_accessor("parser"); + self.$attr_accessor("emit_file_line_as_literals"); + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return (self.emit_file_line_as_literals = true) + }, 0); + + $def(self, '$nil', function $$nil(nil_t) { + var self = this; + + return self.$n0("nil", self.$token_map(nil_t)) + }, 1); + + $def(self, '$true', function $Default_true$1(true_t) { + var self = this; + + return self.$n0("true", self.$token_map(true_t)) + }, 1); + + $def(self, '$false', function $Default_false$2(false_t) { + var self = this; + + return self.$n0("false", self.$token_map(false_t)) + }, 1); + + $def(self, '$integer', function $$integer(integer_t) { + var self = this; + + return self.$numeric("int", integer_t) + }, 1); + + $def(self, '$float', function $Default_float$3(float_t) { + var self = this; + + return self.$numeric("float", float_t) + }, 1); + + $def(self, '$rational', function $$rational(rational_t) { + var self = this; + + return self.$numeric("rational", rational_t) + }, 1); + + $def(self, '$complex', function $$complex(complex_t) { + var self = this; + + return self.$numeric("complex", complex_t) + }, 1); + + $def(self, '$numeric', function $$numeric(kind, token) { + var self = this; + + return self.$n(kind, [self.$value(token)], $$$($$$($$('Source'), 'Map'), 'Operator').$new(nil, self.$loc(token))) + }, 2); + self.$private("numeric"); + + $def(self, '$unary_num', function $$unary_num(unary_t, numeric) { + var $a, self = this, value = nil, operator_loc = nil, $ret_or_1 = nil; + + + $a = [].concat($to_a(numeric)), (value = ($a[0] == null ? nil : $a[0])), $a; + operator_loc = self.$loc(unary_t); + if ($eqeqeq("+", ($ret_or_1 = self.$value(unary_t)))) { + value = value['$+@']() + } else if ($eqeqeq("-", $ret_or_1)) { + value = value['$-@']() + } else { + nil + }; + return numeric.$updated(nil, [value], $hash2(["location"], {"location": $$$($$$($$('Source'), 'Map'), 'Operator').$new(operator_loc, operator_loc.$join(numeric.$loc().$expression()))})); + }, 2); + + $def(self, '$__LINE__', function $$__LINE__(__LINE__t) { + var self = this; + + return self.$n0("__LINE__", self.$token_map(__LINE__t)) + }, 1); + + $def(self, '$string', function $$string(string_t) { + var self = this; + + return self.$n("str", [self.$string_value(string_t)], self.$delimited_string_map(string_t)) + }, 1); + + $def(self, '$string_internal', function $$string_internal(string_t) { + var self = this; + + return self.$n("str", [self.$string_value(string_t)], self.$unquoted_map(string_t)) + }, 1); + + $def(self, '$string_compose', function $$string_compose(begin_t, parts, end_t) { + var self = this; + + if ($truthy(self['$collapse_string_parts?'](parts))) { + if (($truthy(begin_t['$nil?']()) && ($truthy(end_t['$nil?']())))) { + return parts.$first() + } else { + return self.$n("str", parts.$first().$children(), self.$string_map(begin_t, parts, end_t)) + } + } else { + return self.$n("dstr", [].concat($to_a(parts)), self.$string_map(begin_t, parts, end_t)) + } + }, 3); + + $def(self, '$character', function $$character(char_t) { + var self = this; + + return self.$n("str", [self.$string_value(char_t)], self.$prefix_string_map(char_t)) + }, 1); + + $def(self, '$__FILE__', function $$__FILE__(__FILE__t) { + var self = this; + + return self.$n0("__FILE__", self.$token_map(__FILE__t)) + }, 1); + + $def(self, '$symbol', function $$symbol(symbol_t) { + var self = this; + + return self.$n("sym", [self.$string_value(symbol_t).$to_sym()], self.$prefix_string_map(symbol_t)) + }, 1); + + $def(self, '$symbol_internal', function $$symbol_internal(symbol_t) { + var self = this; + + return self.$n("sym", [self.$string_value(symbol_t).$to_sym()], self.$unquoted_map(symbol_t)) + }, 1); + + $def(self, '$symbol_compose', function $$symbol_compose(begin_t, parts, end_t) { + var self = this, str = nil; + + if ($truthy(self['$collapse_string_parts?'](parts))) { + + str = parts.$first(); + return self.$n("sym", [str.$children().$first().$to_sym()], self.$collection_map(begin_t, str.$loc().$expression(), end_t)); + } else if (($eqeq(self.parser.$version(), 18) && ($truthy(parts['$empty?']())))) { + return self.$diagnostic("error", "empty_symbol", nil, self.$loc(begin_t).$join(self.$loc(end_t))) + } else { + return self.$n("dsym", [].concat($to_a(parts)), self.$collection_map(begin_t, parts, end_t)) + } + }, 3); + + $def(self, '$xstring_compose', function $$xstring_compose(begin_t, parts, end_t) { + var self = this; + + return self.$n("xstr", [].concat($to_a(parts)), self.$string_map(begin_t, parts, end_t)) + }, 3); + + $def(self, '$dedent_string', function $$dedent_string(node, dedent_level) { + var dedenter = nil, $ret_or_1 = nil, str = nil, children = nil; + + + if ($not(dedent_level['$nil?']())) { + + dedenter = $$$($$('Lexer'), 'Dedenter').$new(dedent_level); + if ($eqeqeq("str", ($ret_or_1 = node.$type()))) { + + str = node.$children().$first(); + dedenter.$dedent(str); + } else if (($eqeqeq("dstr", $ret_or_1) || ($eqeqeq("xstr", $ret_or_1)))) { + + children = $send(node.$children(), 'map', [], function $$4(str_node){ + + + if (str_node == null) str_node = nil;; + if ($eqeq(str_node.$type(), "str")) { + + str = str_node.$children().$first(); + dedenter.$dedent(str); + if ($truthy(str['$empty?']())) { + return nil; + }; + } else { + dedenter.$interrupt() + }; + return str_node;}, 1); + node = node.$updated(nil, children.$compact()); + } else { + nil + }; + }; + return node; + }, 2); + + $def(self, '$regexp_options', function $$regexp_options(regopt_t) { + var self = this, options = nil; + + + options = $send(self.$value(regopt_t).$each_char().$sort().$uniq(), 'map', [], "to_sym".$to_proc()); + return self.$n("regopt", options, self.$token_map(regopt_t)); + }, 1); + + $def(self, '$regexp_compose', function $$regexp_compose(begin_t, parts, end_t, options) { + var self = this, e = nil; + + + + try { + self.$static_regexp(parts, options) + } catch ($err) { + if (Opal.rescue($err, [$$('RegexpError')])) {(e = $err) + try { + self.$diagnostic("error", "invalid_regexp", $hash2(["message"], {"message": e.$message()}), self.$loc(begin_t).$join(self.$loc(end_t))) + } finally { Opal.pop_exception(); } + } else { throw $err; } + };; + return self.$n("regexp", parts['$<<'](options), self.$regexp_map(begin_t, end_t, options)); + }, 4); + + $def(self, '$array', function $$array(begin_t, elements, end_t) { + var self = this; + + return self.$n("array", elements, self.$collection_map(begin_t, elements, end_t)) + }, 3); + + $def(self, '$splat', function $$splat(star_t, arg) { + var self = this; + + + + if (arg == null) arg = nil;; + if ($truthy(arg['$nil?']())) { + return self.$n0("splat", self.$unary_op_map(star_t)) + } else { + return self.$n("splat", [arg], self.$unary_op_map(star_t, arg)) + }; + }, -2); + + $def(self, '$word', function $$word(parts) { + var self = this; + + if ($truthy(self['$collapse_string_parts?'](parts))) { + return parts.$first() + } else { + return self.$n("dstr", [].concat($to_a(parts)), self.$collection_map(nil, parts, nil)) + } + }, 1); + + $def(self, '$words_compose', function $$words_compose(begin_t, parts, end_t) { + var self = this; + + return self.$n("array", [].concat($to_a(parts)), self.$collection_map(begin_t, parts, end_t)) + }, 3); + + $def(self, '$symbols_compose', function $$symbols_compose(begin_t, parts, end_t) { + var self = this; + + + parts = $send(parts, 'map', [], function $$5(part){var $a, $ret_or_1 = nil, value = nil; + + + + if (part == null) part = nil;; + if ($eqeqeq("str", ($ret_or_1 = part.$type()))) { + + $a = [].concat($to_a(part)), (value = ($a[0] == null ? nil : $a[0])), $a; + return part.$updated("sym", [value.$to_sym()]); + } else if ($eqeqeq("dstr", $ret_or_1)) { + return part.$updated("dsym") + } else { + return part + };}, 1); + return self.$n("array", [].concat($to_a(parts)), self.$collection_map(begin_t, parts, end_t)); + }, 3); + + $def(self, '$pair', function $$pair(key, assoc_t, value) { + var self = this; + + return self.$n("pair", [key, value], self.$binary_op_map(key, assoc_t, value)) + }, 3); + + $def(self, '$pair_list_18', function $$pair_list_18(list) { + var self = this; + + if ($neqeq(list.$size()['$%'](2), 0)) { + return self.$diagnostic("error", "odd_hash", nil, list.$last().$loc().$expression()) + } else { + return $send(list.$each_slice(2), 'map', [], function $$6(key, value){var self = $$6.$$s == null ? this : $$6.$$s; + + + + if (key == null) key = nil;; + + if (value == null) value = nil;; + return self.$n("pair", [key, value], self.$binary_op_map(key, nil, value));}, {$$arity: 2, $$s: self}) + } + }, 1); + + $def(self, '$pair_keyword', function $$pair_keyword(key_t, value) { + var $a, $b, self = this, key_map = nil, pair_map = nil, key = nil; + + + $b = self.$pair_keyword_map(key_t, value), $a = $to_ary($b), (key_map = ($a[0] == null ? nil : $a[0])), (pair_map = ($a[1] == null ? nil : $a[1])), $b; + key = self.$n("sym", [self.$value(key_t).$to_sym()], key_map); + return self.$n("pair", [key, value], pair_map); + }, 2); + + $def(self, '$pair_quoted', function $$pair_quoted(begin_t, parts, end_t, value) { + var $a, $b, self = this, pair_map = nil, key = nil; + + + $b = self.$pair_quoted_map(begin_t, end_t, value), $a = $to_ary($b), (end_t = ($a[0] == null ? nil : $a[0])), (pair_map = ($a[1] == null ? nil : $a[1])), $b; + key = self.$symbol_compose(begin_t, parts, end_t); + return self.$n("pair", [key, value], pair_map); + }, 4); + + $def(self, '$pair_label', function $$pair_label(key_t) { + var self = this, key_l = nil, value_l = nil, label = nil, value = nil; + + + key_l = self.$loc(key_t); + value_l = key_l.$adjust($hash2(["end_pos"], {"end_pos": -1})); + label = self.$value(key_t); + value = ($truthy(label['$=~'](/^[[:lower:]]/)) ? (self.$n("ident", [label.$to_sym()], $$$($$$($$('Source'), 'Map'), 'Variable').$new(value_l))) : (self.$n("const", [nil, label.$to_sym()], $$$($$$($$('Source'), 'Map'), 'Constant').$new(nil, value_l, value_l)))); + return self.$pair_keyword(key_t, self.$accessible(value)); + }, 1); + + $def(self, '$kwsplat', function $$kwsplat(dstar_t, arg) { + var self = this; + + return self.$n("kwsplat", [arg], self.$unary_op_map(dstar_t, arg)) + }, 2); + + $def(self, '$associate', function $$associate(begin_t, pairs, end_t) { + var self = this; + + + $send((0), 'upto', [$rb_minus(pairs.$length(), 1)], function $$7(i){var self = $$7.$$s == null ? this : $$7.$$s; + + + + if (i == null) i = nil;; + return $send($rb_plus(i, 1), 'upto', [$rb_minus(pairs.$length(), 1)], function $$8(j){var $a, self = $$8.$$s == null ? this : $$8.$$s, key1 = nil, key2 = nil, do_warn = nil, $ret_or_1 = nil; + if (self.parser == null) self.parser = nil; + + + + if (j == null) j = nil;; + $a = [].concat($to_a(pairs['$[]'](i))), (key1 = ($a[0] == null ? nil : $a[0])), $a; + $a = [].concat($to_a(pairs['$[]'](j))), (key2 = ($a[0] == null ? nil : $a[0])), $a; + do_warn = false; + if (($eqeqeq("sym", ($ret_or_1 = key1.$type())) || (($eqeqeq("str", $ret_or_1) || (($eqeqeq("int", $ret_or_1) || ($eqeqeq("float", $ret_or_1)))))))) { + if ($eqeq(key1, key2)) { + do_warn = true + } + } else if (($eqeqeq("rational", $ret_or_1) || (($eqeqeq("complex", $ret_or_1) || ($eqeqeq("regexp", $ret_or_1)))))) { + if (($truthy($rb_ge(self.parser.$version(), 31)) && ($eqeq(key1, key2)))) { + do_warn = true + } + } else { + nil + }; + if ($truthy(do_warn)) { + return self.$diagnostic("warning", "duplicate_hash_key", nil, key2.$loc().$expression()) + } else { + return nil + };}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + return self.$n("hash", [].concat($to_a(pairs)), self.$collection_map(begin_t, pairs, end_t)); + }, 3); + + $def(self, '$range_inclusive', function $$range_inclusive(lhs, dot2_t, rhs) { + var self = this; + + return self.$n("irange", [lhs, rhs], self.$range_map(lhs, dot2_t, rhs)) + }, 3); + + $def(self, '$range_exclusive', function $$range_exclusive(lhs, dot3_t, rhs) { + var self = this; + + return self.$n("erange", [lhs, rhs], self.$range_map(lhs, dot3_t, rhs)) + }, 3); + + $def(self, '$self', function $$self(token) { + var self = this; + + return self.$n0("self", self.$token_map(token)) + }, 1); + + $def(self, '$ident', function $$ident(token) { + var self = this; + + return self.$n("ident", [self.$value(token).$to_sym()], self.$variable_map(token)) + }, 1); + + $def(self, '$ivar', function $$ivar(token) { + var self = this; + + return self.$n("ivar", [self.$value(token).$to_sym()], self.$variable_map(token)) + }, 1); + + $def(self, '$gvar', function $$gvar(token) { + var self = this; + + return self.$n("gvar", [self.$value(token).$to_sym()], self.$variable_map(token)) + }, 1); + + $def(self, '$cvar', function $$cvar(token) { + var self = this; + + return self.$n("cvar", [self.$value(token).$to_sym()], self.$variable_map(token)) + }, 1); + + $def(self, '$back_ref', function $$back_ref(token) { + var self = this; + + return self.$n("back_ref", [self.$value(token).$to_sym()], self.$token_map(token)) + }, 1); + + $def(self, '$nth_ref', function $$nth_ref(token) { + var self = this; + + return self.$n("nth_ref", [self.$value(token)], self.$token_map(token)) + }, 1); + + $def(self, '$accessible', function $$accessible(node) { + var $a, self = this, $ret_or_1 = nil, name = nil; + + if ($eqeqeq("__FILE__", ($ret_or_1 = node.$type()))) { + if ($truthy(self.emit_file_line_as_literals)) { + return self.$n("str", [node.$loc().$expression().$source_buffer().$name()], node.$loc().$dup()) + } else { + return node + } + } else if ($eqeqeq("__LINE__", $ret_or_1)) { + if ($truthy(self.emit_file_line_as_literals)) { + return self.$n("int", [node.$loc().$expression().$line()], node.$loc().$dup()) + } else { + return node + } + } else if ($eqeqeq("__ENCODING__", $ret_or_1)) { + if ($not(self.$class().$emit_encoding())) { + return self.$n("const", [self.$n("const", [nil, "Encoding"], nil), "UTF_8"], node.$loc().$dup()) + } else { + return node + } + } else if ($eqeqeq("ident", $ret_or_1)) { + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), $a; + if ($truthy($send(["?", "!"], 'any?', [], function $$9(c){ + + + if (c == null) c = nil;; + return name.$to_s()['$end_with?'](c);}, 1))) { + self.$diagnostic("error", "invalid_id_to_get", $hash2(["identifier"], {"identifier": name.$to_s()}), node.$loc().$expression()) + }; + if (($truthy($rb_ge(self.parser.$version(), 27)) && ($truthy(self.parser.$try_declare_numparam(node))))) { + return node.$updated("lvar") + }; + if (!$truthy(self.parser.$static_env()['$declared?'](name))) { + return self.$n("send", [nil, name], self.$var_send_map(node)) + }; + if ($eqeq(name.$to_s(), self.$parser().$current_arg_stack().$top())) { + self.$diagnostic("error", "circular_argument_reference", $hash2(["var_name"], {"var_name": name.$to_s()}), node.$loc().$expression()) + }; + return node.$updated("lvar"); + } else { + return node + } + }, 1); + + $def(self, '$const', function $Default_const$10(name_t) { + var self = this; + + return self.$n("const", [nil, self.$value(name_t).$to_sym()], self.$constant_map(nil, nil, name_t)) + }, 1); + + $def(self, '$const_global', function $$const_global(t_colon3, name_t) { + var self = this, cbase = nil; + + + cbase = self.$n0("cbase", self.$token_map(t_colon3)); + return self.$n("const", [cbase, self.$value(name_t).$to_sym()], self.$constant_map(cbase, t_colon3, name_t)); + }, 2); + + $def(self, '$const_fetch', function $$const_fetch(scope, t_colon2, name_t) { + var self = this; + + return self.$n("const", [scope, self.$value(name_t).$to_sym()], self.$constant_map(scope, t_colon2, name_t)) + }, 3); + + $def(self, '$__ENCODING__', function $$__ENCODING__(__ENCODING__t) { + var self = this; + + return self.$n0("__ENCODING__", self.$token_map(__ENCODING__t)) + }, 1); + + $def(self, '$assignable', function $$assignable(node) { + var $a, self = this, $ret_or_1 = nil, name = nil, var_name = nil, name_loc = nil; + + if ($eqeqeq("cvar", ($ret_or_1 = node.$type()))) { + return node.$updated("cvasgn") + } else if ($eqeqeq("ivar", $ret_or_1)) { + return node.$updated("ivasgn") + } else if ($eqeqeq("gvar", $ret_or_1)) { + return node.$updated("gvasgn") + } else if ($eqeqeq("const", $ret_or_1)) { + + if ($truthy(self.parser.$context().$in_def())) { + self.$diagnostic("error", "dynamic_const", nil, node.$loc().$expression()) + }; + return node.$updated("casgn"); + } else if ($eqeqeq("ident", $ret_or_1)) { + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), $a; + var_name = node.$children()['$[]'](0).$to_s(); + name_loc = node.$loc().$expression(); + self.$check_assignment_to_numparam(var_name, name_loc); + self.$check_reserved_for_numparam(var_name, name_loc); + self.parser.$static_env().$declare(name); + return node.$updated("lvasgn"); + } else if ($eqeqeq("match_var", $ret_or_1)) { + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), $a; + var_name = node.$children()['$[]'](0).$to_s(); + name_loc = node.$loc().$expression(); + self.$check_assignment_to_numparam(var_name, name_loc); + self.$check_reserved_for_numparam(var_name, name_loc); + return node; + } else if (($eqeqeq("nil", $ret_or_1) || (($eqeqeq("self", $ret_or_1) || (($eqeqeq("true", $ret_or_1) || (($eqeqeq("false", $ret_or_1) || (($eqeqeq("__FILE__", $ret_or_1) || (($eqeqeq("__LINE__", $ret_or_1) || ($eqeqeq("__ENCODING__", $ret_or_1)))))))))))))) { + return self.$diagnostic("error", "invalid_assignment", nil, node.$loc().$expression()) + } else if (($eqeqeq("back_ref", $ret_or_1) || ($eqeqeq("nth_ref", $ret_or_1)))) { + return self.$diagnostic("error", "backref_assignment", nil, node.$loc().$expression()) + } else { + return nil + } + }, 1); + + $def(self, '$const_op_assignable', function $$const_op_assignable(node) { + + return node.$updated("casgn") + }, 1); + + $def(self, '$assign', function $$assign(lhs, eql_t, rhs) { + var self = this; + + return lhs['$<<'](rhs).$updated(nil, nil, $hash2(["location"], {"location": lhs.$loc().$with_operator(self.$loc(eql_t)).$with_expression(self.$join_exprs(lhs, rhs))})) + }, 3); + + $def(self, '$op_assign', function $$op_assign(lhs, op_t, rhs) { + var self = this, $ret_or_1 = nil, operator = nil, source_map = nil, $ret_or_2 = nil; + + if (($eqeqeq("gvasgn", ($ret_or_1 = lhs.$type())) || (($eqeqeq("ivasgn", $ret_or_1) || (($eqeqeq("lvasgn", $ret_or_1) || (($eqeqeq("cvasgn", $ret_or_1) || (($eqeqeq("casgn", $ret_or_1) || (($eqeqeq("send", $ret_or_1) || (($eqeqeq("csend", $ret_or_1) || ($eqeqeq("index", $ret_or_1)))))))))))))))) { + + operator = self.$value(op_t)['$[]']($range(0, -1, false)).$to_sym(); + source_map = lhs.$loc().$with_operator(self.$loc(op_t)).$with_expression(self.$join_exprs(lhs, rhs)); + if ($eqeq(lhs.$type(), "index")) { + lhs = lhs.$updated("indexasgn") + }; + if ($eqeqeq("&&", ($ret_or_2 = operator))) { + return self.$n("and_asgn", [lhs, rhs], source_map) + } else if ($eqeqeq("||", $ret_or_2)) { + return self.$n("or_asgn", [lhs, rhs], source_map) + } else { + return self.$n("op_asgn", [lhs, operator, rhs], source_map) + }; + } else if (($eqeqeq("back_ref", $ret_or_1) || ($eqeqeq("nth_ref", $ret_or_1)))) { + return self.$diagnostic("error", "backref_assignment", nil, lhs.$loc().$expression()) + } else { + return nil + } + }, 3); + + $def(self, '$multi_lhs', function $$multi_lhs(begin_t, items, end_t) { + var self = this; + + return self.$n("mlhs", [].concat($to_a(items)), self.$collection_map(begin_t, items, end_t)) + }, 3); + + $def(self, '$multi_assign', function $$multi_assign(lhs, eql_t, rhs) { + var self = this; + + return self.$n("masgn", [lhs, rhs], self.$binary_op_map(lhs, eql_t, rhs)) + }, 3); + + $def(self, '$def_class', function $$def_class(class_t, name, lt_t, superclass, body, end_t) { + var self = this; + + return self.$n("class", [name, superclass, body], self.$module_definition_map(class_t, name, lt_t, end_t)) + }, 6); + + $def(self, '$def_sclass', function $$def_sclass(class_t, lshft_t, expr, body, end_t) { + var self = this; + + return self.$n("sclass", [expr, body], self.$module_definition_map(class_t, nil, lshft_t, end_t)) + }, 5); + + $def(self, '$def_module', function $$def_module(module_t, name, body, end_t) { + var self = this; + + return self.$n("module", [name, body], self.$module_definition_map(module_t, name, nil, end_t)) + }, 4); + + $def(self, '$def_method', function $$def_method(def_t, name_t, args, body, end_t) { + var self = this; + + + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("def", [self.$value(name_t).$to_sym(), args, body], self.$definition_map(def_t, nil, name_t, end_t)); + }, 5); + + $def(self, '$def_endless_method', function $$def_endless_method(def_t, name_t, args, assignment_t, body) { + var self = this; + + + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("def", [self.$value(name_t).$to_sym(), args, body], self.$endless_definition_map(def_t, nil, name_t, assignment_t, body)); + }, 5); + + $def(self, '$def_singleton', function $$def_singleton(def_t, definee, dot_t, name_t, args, body, end_t) { + var self = this; + + + self.$validate_definee(definee); + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("defs", [definee, self.$value(name_t).$to_sym(), args, body], self.$definition_map(def_t, dot_t, name_t, end_t)); + }, 7); + + $def(self, '$def_endless_singleton', function $$def_endless_singleton(def_t, definee, dot_t, name_t, args, assignment_t, body) { + var self = this; + + + self.$validate_definee(definee); + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("defs", [definee, self.$value(name_t).$to_sym(), args, body], self.$endless_definition_map(def_t, dot_t, name_t, assignment_t, body)); + }, 7); + + $def(self, '$undef_method', function $$undef_method(undef_t, names) { + var self = this; + + return self.$n("undef", [].concat($to_a(names)), self.$keyword_map(undef_t, nil, names, nil)) + }, 2); + + $def(self, '$alias', function $$alias(alias_t, to, from) { + var self = this; + + return self.$n("alias", [to, from], self.$keyword_map(alias_t, nil, [to, from], nil)) + }, 3); + + $def(self, '$args', function $$args(begin_t, args, end_t, check_args) { + var self = this, map = nil; + + + + if (check_args == null) check_args = true;; + if ($truthy(check_args)) { + args = self.$check_duplicate_args(args) + }; + self.$validate_no_forward_arg_after_restarg(args); + map = self.$collection_map(begin_t, args, end_t); + if ((($not(self.$class().$emit_forward_arg()) && ($eqeq(args.$length(), 1))) && ($eqeq(args['$[]'](0).$type(), "forward_arg")))) { + return self.$n("forward_args", [], map) + } else { + return self.$n("args", args, map) + }; + }, -4); + + $def(self, '$numargs', function $$numargs(max_numparam) { + var self = this; + + return self.$n("numargs", [max_numparam], nil) + }, 1); + + $def(self, '$forward_only_args', function $$forward_only_args(begin_t, dots_t, end_t) { + var self = this, arg = nil; + + if ($truthy(self.$class().$emit_forward_arg())) { + + arg = self.$forward_arg(dots_t); + return self.$n("args", [arg], self.$collection_map(begin_t, [arg], end_t)); + } else { + return self.$n("forward_args", [], self.$collection_map(begin_t, self.$token_map(dots_t), end_t)) + } + }, 3); + + $def(self, '$forward_arg', function $$forward_arg(dots_t) { + var self = this; + + return self.$n("forward_arg", [], self.$token_map(dots_t)) + }, 1); + + $def(self, '$arg', function $$arg(name_t) { + var self = this; + + + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("arg", [self.$value(name_t).$to_sym()], self.$variable_map(name_t)); + }, 1); + + $def(self, '$optarg', function $$optarg(name_t, eql_t, value) { + var self = this; + + + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("optarg", [self.$value(name_t).$to_sym(), value], self.$variable_map(name_t).$with_operator(self.$loc(eql_t)).$with_expression(self.$loc(name_t).$join(value.$loc().$expression()))); + }, 3); + + $def(self, '$restarg', function $$restarg(star_t, name_t) { + var self = this; + + + + if (name_t == null) name_t = nil;; + if ($truthy(name_t)) { + + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("restarg", [self.$value(name_t).$to_sym()], self.$arg_prefix_map(star_t, name_t)); + } else { + return self.$n0("restarg", self.$arg_prefix_map(star_t)) + }; + }, -2); + + $def(self, '$kwarg', function $$kwarg(name_t) { + var self = this; + + + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("kwarg", [self.$value(name_t).$to_sym()], self.$kwarg_map(name_t)); + }, 1); + + $def(self, '$kwoptarg', function $$kwoptarg(name_t, value) { + var self = this; + + + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("kwoptarg", [self.$value(name_t).$to_sym(), value], self.$kwarg_map(name_t, value)); + }, 2); + + $def(self, '$kwrestarg', function $$kwrestarg(dstar_t, name_t) { + var self = this; + + + + if (name_t == null) name_t = nil;; + if ($truthy(name_t)) { + + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("kwrestarg", [self.$value(name_t).$to_sym()], self.$arg_prefix_map(dstar_t, name_t)); + } else { + return self.$n0("kwrestarg", self.$arg_prefix_map(dstar_t)) + }; + }, -2); + + $def(self, '$kwnilarg', function $$kwnilarg(dstar_t, nil_t) { + var self = this; + + return self.$n0("kwnilarg", self.$arg_prefix_map(dstar_t, nil_t)) + }, 2); + + $def(self, '$shadowarg', function $$shadowarg(name_t) { + var self = this; + + + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("shadowarg", [self.$value(name_t).$to_sym()], self.$variable_map(name_t)); + }, 1); + + $def(self, '$blockarg', function $$blockarg(amper_t, name_t) { + var self = this, arg_name = nil; + + + if ($not(name_t['$nil?']())) { + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)) + }; + arg_name = ($truthy(name_t) ? (self.$value(name_t).$to_sym()) : (nil)); + return self.$n("blockarg", [arg_name], self.$arg_prefix_map(amper_t, name_t)); + }, 2); + + $def(self, '$procarg0', function $$procarg0(arg) { + var self = this; + + if ($truthy(self.$class().$emit_procarg0())) { + if (($eqeq(arg.$type(), "arg") && ($truthy(self.$class().$emit_arg_inside_procarg0())))) { + return self.$n("procarg0", [arg], $$$($$$($$('Source'), 'Map'), 'Collection').$new(nil, nil, arg.$location().$expression())) + } else { + return arg.$updated("procarg0") + } + } else { + return arg + } + }, 1); + + $def(self, '$arg_expr', function $$arg_expr(expr) { + var self = this; + + if ($eqeq(expr.$type(), "lvasgn")) { + return expr.$updated("arg") + } else { + return self.$n("arg_expr", [expr], expr.$loc().$dup()) + } + }, 1); + + $def(self, '$restarg_expr', function $$restarg_expr(star_t, expr) { + var self = this; + + + + if (expr == null) expr = nil;; + if ($truthy(expr['$nil?']())) { + return self.$n0("restarg", self.$token_map(star_t)) + } else if ($eqeq(expr.$type(), "lvasgn")) { + return expr.$updated("restarg") + } else { + return self.$n("restarg_expr", [expr], expr.$loc().$dup()) + }; + }, -2); + + $def(self, '$blockarg_expr', function $$blockarg_expr(amper_t, expr) { + var self = this; + + if ($eqeq(expr.$type(), "lvasgn")) { + return expr.$updated("blockarg") + } else { + return self.$n("blockarg_expr", [expr], expr.$loc().$dup()) + } + }, 2); + + $def(self, '$objc_kwarg', function $$objc_kwarg(kwname_t, assoc_t, name_t) { + var self = this, kwname_l = nil, operator_l = nil; + + + kwname_l = self.$loc(kwname_t); + if ($truthy(assoc_t['$nil?']())) { + + kwname_l = kwname_l.$resize($rb_minus(kwname_l.$size(), 1)); + operator_l = kwname_l.$end().$resize(1); + } else { + operator_l = self.$loc(assoc_t) + }; + return self.$n("objc_kwarg", [self.$value(kwname_t).$to_sym(), self.$value(name_t).$to_sym()], $$$($$$($$('Source'), 'Map'), 'ObjcKwarg').$new(kwname_l, operator_l, self.$loc(name_t), kwname_l.$join(self.$loc(name_t)))); + }, 3); + + $def(self, '$objc_restarg', function $$objc_restarg(star_t, name) { + var self = this; + + + + if (name == null) name = nil;; + if ($truthy(name['$nil?']())) { + return self.$n0("restarg", self.$arg_prefix_map(star_t)) + } else if ($eqeq(name.$type(), "arg")) { + return name.$updated("restarg", nil, $hash2(["location"], {"location": name.$loc().$with_operator(self.$loc(star_t))})) + } else { + return self.$n("objc_restarg", [name], self.$unary_op_map(star_t, name)) + }; + }, -2); + + $def(self, '$call_type_for_dot', function $$call_type_for_dot(dot_t) { + var self = this; + + if (($not(dot_t['$nil?']()) && ($eqeq(self.$value(dot_t), "anddot")))) { + return "csend" + } else { + return "send" + } + }, 1); + + $def(self, '$forwarded_args', function $$forwarded_args(dots_t) { + var self = this; + + return self.$n("forwarded_args", [], self.$token_map(dots_t)) + }, 1); + + $def(self, '$call_method', function $$call_method(receiver, dot_t, selector_t, lparen_t, args, rparen_t) { + var self = this, type = nil; + + + + if (lparen_t == null) lparen_t = nil;; + + if (args == null) args = [];; + + if (rparen_t == null) rparen_t = nil;; + type = self.$call_type_for_dot(dot_t); + if ($truthy(self.$class().$emit_kwargs())) { + self.$rewrite_hash_args_to_kwargs(args) + }; + if ($truthy(selector_t['$nil?']())) { + return self.$n(type, [receiver, "call"].concat($to_a(args)), self.$send_map(receiver, dot_t, nil, lparen_t, args, rparen_t)) + } else { + return self.$n(type, [receiver, self.$value(selector_t).$to_sym()].concat($to_a(args)), self.$send_map(receiver, dot_t, selector_t, lparen_t, args, rparen_t)) + }; + }, -4); + + $def(self, '$call_lambda', function $$call_lambda(lambda_t) { + var self = this; + + if ($truthy(self.$class().$emit_lambda())) { + return self.$n0("lambda", self.$expr_map(self.$loc(lambda_t))) + } else { + return self.$n("send", [nil, "lambda"], self.$send_map(nil, nil, lambda_t)) + } + }, 1); + + $def(self, '$block', function $$block(method_call, begin_t, args, body, end_t) { + var $a, self = this, _receiver = nil, _selector = nil, call_args = nil, last_arg = nil, block_type = nil, actual_send = nil, block = nil; + + + $a = [].concat($to_a(method_call)), (_receiver = ($a[0] == null ? nil : $a[0])), (_selector = ($a[1] == null ? nil : $a[1])), (call_args = $slice.call($a, 2)), $a; + if ($eqeq(method_call.$type(), "yield")) { + self.$diagnostic("error", "block_given_to_yield", nil, method_call.$loc().$keyword(), [self.$loc(begin_t)]) + }; + last_arg = call_args.$last(); + if (($truthy(last_arg) && (($eqeq(last_arg.$type(), "block_pass") || ($eqeq(last_arg.$type(), "forwarded_args")))))) { + self.$diagnostic("error", "block_and_blockarg", nil, last_arg.$loc().$expression(), [self.$loc(begin_t)]) + }; + if ($eqeq(args.$type(), "numargs")) { + + block_type = "numblock"; + args = args.$children()['$[]'](0); + } else { + block_type = "block" + }; + if ($truthy(["send", "csend", "index", "super", "zsuper", "lambda"]['$include?'](method_call.$type()))) { + return self.$n(block_type, [method_call, args, body], self.$block_map(method_call.$loc().$expression(), begin_t, end_t)) + } else { + + $a = [].concat($to_a(method_call)), (actual_send = ($a[0] == null ? nil : $a[0])), $a; + block = self.$n(block_type, [actual_send, args, body], self.$block_map(actual_send.$loc().$expression(), begin_t, end_t)); + return self.$n(method_call.$type(), [block], method_call.$loc().$with_expression(self.$join_exprs(method_call, block))); + }; + }, 5); + + $def(self, '$block_pass', function $$block_pass(amper_t, arg) { + var self = this; + + return self.$n("block_pass", [arg], self.$unary_op_map(amper_t, arg)) + }, 2); + + $def(self, '$objc_varargs', function $$objc_varargs(pair, rest_of_varargs) { + var $a, self = this, value = nil, first_vararg = nil, vararg_array = nil; + + + $a = [].concat($to_a(pair)), (value = ($a[0] == null ? nil : $a[0])), (first_vararg = ($a[1] == null ? nil : $a[1])), $a; + vararg_array = self.$array(nil, [first_vararg].concat($to_a(rest_of_varargs)), nil).$updated("objc_varargs"); + return pair.$updated(nil, [value, vararg_array], $hash2(["location"], {"location": pair.$loc().$with_expression(pair.$loc().$expression().$join(vararg_array.$loc().$expression()))})); + }, 2); + + $def(self, '$attr_asgn', function $$attr_asgn(receiver, dot_t, selector_t) { + var self = this, method_name = nil, type = nil; + + + method_name = $rb_plus(self.$value(selector_t), "=").$to_sym(); + type = self.$call_type_for_dot(dot_t); + return self.$n(type, [receiver, method_name], self.$send_map(receiver, dot_t, selector_t)); + }, 3); + + $def(self, '$index', function $$index(receiver, lbrack_t, indexes, rbrack_t) { + var self = this; + + + if ($truthy(self.$class().$emit_kwargs())) { + self.$rewrite_hash_args_to_kwargs(indexes) + }; + if ($truthy(self.$class().$emit_index())) { + return self.$n("index", [receiver].concat($to_a(indexes)), self.$index_map(receiver, lbrack_t, rbrack_t)) + } else { + return self.$n("send", [receiver, "[]"].concat($to_a(indexes)), self.$send_index_map(receiver, lbrack_t, rbrack_t)) + }; + }, 4); + + $def(self, '$index_asgn', function $$index_asgn(receiver, lbrack_t, indexes, rbrack_t) { + var self = this; + + if ($truthy(self.$class().$emit_index())) { + return self.$n("indexasgn", [receiver].concat($to_a(indexes)), self.$index_map(receiver, lbrack_t, rbrack_t)) + } else { + return self.$n("send", [receiver, "[]="].concat($to_a(indexes)), self.$send_index_map(receiver, lbrack_t, rbrack_t)) + } + }, 4); + + $def(self, '$binary_op', function $$binary_op(receiver, operator_t, arg) { + var self = this, source_map = nil, operator = nil, method_call = nil; + + + source_map = self.$send_binary_op_map(receiver, operator_t, arg); + if ($eqeq(self.parser.$version(), 18)) { + + operator = self.$value(operator_t); + if ($eqeq(operator, "!=")) { + method_call = self.$n("send", [receiver, "==", arg], source_map) + } else if ($eqeq(operator, "!~")) { + method_call = self.$n("send", [receiver, "=~", arg], source_map) + }; + if ($truthy(["!=", "!~"]['$include?'](operator))) { + return self.$n("not", [method_call], self.$expr_map(source_map.$expression())) + }; + }; + return self.$n("send", [receiver, self.$value(operator_t).$to_sym(), arg], source_map); + }, 3); + + $def(self, '$match_op', function $$match_op(receiver, match_t, arg) { + var self = this, source_map = nil, regexp = nil; + + + source_map = self.$send_binary_op_map(receiver, match_t, arg); + if ($truthy((regexp = self.$static_regexp_node(receiver)))) { + + $send(regexp.$names(), 'each', [], function $$11(name){var self = $$11.$$s == null ? this : $$11.$$s; + if (self.parser == null) self.parser = nil; + + + + if (name == null) name = nil;; + return self.parser.$static_env().$declare(name);}, {$$arity: 1, $$s: self}); + return self.$n("match_with_lvasgn", [receiver, arg], source_map); + } else { + return self.$n("send", [receiver, "=~", arg], source_map) + }; + }, 3); + + $def(self, '$unary_op', function $$unary_op(op_t, receiver) { + var self = this, $ret_or_1 = nil, method = nil; + + + if (($eqeqeq("+", ($ret_or_1 = self.$value(op_t))) || ($eqeqeq("-", $ret_or_1)))) { + method = $rb_plus(self.$value(op_t), "@") + } else { + method = self.$value(op_t) + }; + return self.$n("send", [receiver, method.$to_sym()], self.$send_unary_op_map(op_t, receiver)); + }, 2); + + $def(self, '$not_op', function $$not_op(not_t, begin_t, receiver, end_t) { + var self = this, nil_node = nil; + + + + if (begin_t == null) begin_t = nil;; + + if (receiver == null) receiver = nil;; + + if (end_t == null) end_t = nil;; + if ($eqeq(self.parser.$version(), 18)) { + return self.$n("not", [self.$check_condition(receiver)], self.$unary_op_map(not_t, receiver)) + } else if ($truthy(receiver['$nil?']())) { + + nil_node = self.$n0("begin", self.$collection_map(begin_t, nil, end_t)); + return self.$n("send", [nil_node, "!"], self.$send_unary_op_map(not_t, nil_node)); + } else { + return self.$n("send", [self.$check_condition(receiver), "!"], self.$send_map(nil, nil, not_t, begin_t, [receiver], end_t)) + }; + }, -2); + + $def(self, '$logical_op', function $$logical_op(type, lhs, op_t, rhs) { + var self = this; + + return self.$n(type, [lhs, rhs], self.$binary_op_map(lhs, op_t, rhs)) + }, 4); + + $def(self, '$condition', function $$condition(cond_t, cond, then_t, if_true, else_t, if_false, end_t) { + var self = this; + + return self.$n("if", [self.$check_condition(cond), if_true, if_false], self.$condition_map(cond_t, cond, then_t, if_true, else_t, if_false, end_t)) + }, 7); + + $def(self, '$condition_mod', function $$condition_mod(if_true, if_false, cond_t, cond) { + var self = this, $ret_or_1 = nil; + + return self.$n("if", [self.$check_condition(cond), if_true, if_false], self.$keyword_mod_map(($truthy(($ret_or_1 = if_true)) ? ($ret_or_1) : (if_false)), cond_t, cond)) + }, 4); + + $def(self, '$ternary', function $$ternary(cond, question_t, if_true, colon_t, if_false) { + var self = this; + + return self.$n("if", [self.$check_condition(cond), if_true, if_false], self.$ternary_map(cond, question_t, if_true, colon_t, if_false)) + }, 5); + + $def(self, '$when', function $$when(when_t, patterns, then_t, body) { + var self = this, children = nil; + + + children = patterns['$<<'](body); + return self.$n("when", children, self.$keyword_map(when_t, then_t, children, nil)); + }, 4); + + $def(self, '$case', function $Default_case$12(case_t, expr, when_bodies, else_t, else_body, end_t) { + var self = this; + + return self.$n("case", [expr].concat($to_a(when_bodies['$<<'](else_body))), self.$condition_map(case_t, expr, nil, nil, else_t, else_body, end_t)) + }, 6); + + $def(self, '$loop', function $$loop(type, keyword_t, cond, do_t, body, end_t) { + var self = this; + + return self.$n(type, [self.$check_condition(cond), body], self.$keyword_map(keyword_t, do_t, nil, end_t)) + }, 6); + + $def(self, '$loop_mod', function $$loop_mod(type, body, keyword_t, cond) { + var self = this; + + + if ($eqeq(body.$type(), "kwbegin")) { + type = "" + (type) + "_post" + }; + return self.$n(type, [self.$check_condition(cond), body], self.$keyword_mod_map(body, keyword_t, cond)); + }, 4); + + $def(self, '$for', function $Default_for$13(for_t, iterator, in_t, iteratee, do_t, body, end_t) { + var self = this; + + return self.$n("for", [iterator, iteratee, body], self.$for_map(for_t, in_t, do_t, end_t)) + }, 7); + + $def(self, '$keyword_cmd', function $$keyword_cmd(type, keyword_t, lparen_t, args, rparen_t) { + var self = this, last_arg = nil; + + + + if (lparen_t == null) lparen_t = nil;; + + if (args == null) args = [];; + + if (rparen_t == null) rparen_t = nil;; + if (($eqeq(type, "yield") && ($truthy($rb_gt(args.$count(), 0))))) { + + last_arg = args.$last(); + if ($eqeq(last_arg.$type(), "block_pass")) { + self.$diagnostic("error", "block_given_to_yield", nil, self.$loc(keyword_t), [last_arg.$loc().$expression()]) + }; + }; + if (($truthy(["yield", "super"]['$include?'](type)) && ($truthy(self.$class().$emit_kwargs())))) { + self.$rewrite_hash_args_to_kwargs(args) + }; + return self.$n(type, args, self.$keyword_map(keyword_t, lparen_t, args, rparen_t)); + }, -3); + + $def(self, '$preexe', function $$preexe(preexe_t, lbrace_t, compstmt, rbrace_t) { + var self = this; + + return self.$n("preexe", [compstmt], self.$keyword_map(preexe_t, lbrace_t, [], rbrace_t)) + }, 4); + + $def(self, '$postexe', function $$postexe(postexe_t, lbrace_t, compstmt, rbrace_t) { + var self = this; + + return self.$n("postexe", [compstmt], self.$keyword_map(postexe_t, lbrace_t, [], rbrace_t)) + }, 4); + + $def(self, '$rescue_body', function $$rescue_body(rescue_t, exc_list, assoc_t, exc_var, then_t, compound_stmt) { + var self = this; + + return self.$n("resbody", [exc_list, exc_var, compound_stmt], self.$rescue_body_map(rescue_t, exc_list, assoc_t, exc_var, then_t, compound_stmt)) + }, 6); + + $def(self, '$begin_body', function $$begin_body(compound_stmt, rescue_bodies, else_t, else_, ensure_t, ensure_) { + var self = this, statements = nil; + + + + if (rescue_bodies == null) rescue_bodies = [];; + + if (else_t == null) else_t = nil;; + + if (else_ == null) else_ = nil;; + + if (ensure_t == null) ensure_t = nil;; + + if (ensure_ == null) ensure_ = nil;; + if ($truthy(rescue_bodies['$any?']())) { + if ($truthy(else_t)) { + compound_stmt = self.$n("rescue", [compound_stmt].concat($to_a($rb_plus(rescue_bodies, [else_]))), self.$eh_keyword_map(compound_stmt, nil, rescue_bodies, else_t, else_)) + } else { + compound_stmt = self.$n("rescue", [compound_stmt].concat($to_a($rb_plus(rescue_bodies, [nil]))), self.$eh_keyword_map(compound_stmt, nil, rescue_bodies, nil, nil)) + } + } else if ($truthy(else_t)) { + + statements = []; + if ($not(compound_stmt['$nil?']())) { + if ($eqeq(compound_stmt.$type(), "begin")) { + statements = $rb_plus(statements, compound_stmt.$children()) + } else { + statements.$push(compound_stmt) + } + }; + statements.$push(self.$n("begin", [else_], self.$collection_map(else_t, [else_], nil))); + compound_stmt = self.$n("begin", statements, self.$collection_map(nil, statements, nil)); + }; + if ($truthy(ensure_t)) { + compound_stmt = self.$n("ensure", [compound_stmt, ensure_], self.$eh_keyword_map(compound_stmt, ensure_t, [ensure_], nil, nil)) + }; + return compound_stmt; + }, -2); + + $def(self, '$compstmt', function $$compstmt(statements) { + var self = this; + + if ($truthy(statements['$none?']())) { + return nil + } else if ($truthy(statements['$one?']())) { + return statements.$first() + } else { + return self.$n("begin", statements, self.$collection_map(nil, statements, nil)) + } + }, 1); + + $def(self, '$begin', function $$begin(begin_t, body, end_t) { + var self = this; + + if ($truthy(body['$nil?']())) { + return self.$n0("begin", self.$collection_map(begin_t, nil, end_t)) + } else if (($eqeq(body.$type(), "mlhs") || ((($eqeq(body.$type(), "begin") && ($truthy(body.$loc().$begin()['$nil?']()))) && ($truthy(body.$loc().$end()['$nil?']())))))) { + return self.$n(body.$type(), body.$children(), self.$collection_map(begin_t, body.$children(), end_t)) + } else { + return self.$n("begin", [body], self.$collection_map(begin_t, [body], end_t)) + } + }, 3); + + $def(self, '$begin_keyword', function $$begin_keyword(begin_t, body, end_t) { + var self = this; + + if ($truthy(body['$nil?']())) { + return self.$n0("kwbegin", self.$collection_map(begin_t, nil, end_t)) + } else if ((($eqeq(body.$type(), "begin") && ($truthy(body.$loc().$begin()['$nil?']()))) && ($truthy(body.$loc().$end()['$nil?']())))) { + return self.$n("kwbegin", body.$children(), self.$collection_map(begin_t, body.$children(), end_t)) + } else { + return self.$n("kwbegin", [body], self.$collection_map(begin_t, [body], end_t)) + } + }, 3); + + $def(self, '$case_match', function $$case_match(case_t, expr, in_bodies, else_t, else_body, end_t) { + var self = this; + + + if (($truthy(else_t) && ($not(else_body)))) { + else_body = self.$n("empty_else", nil, self.$token_map(else_t)) + }; + return self.$n("case_match", [expr].concat($to_a(in_bodies['$<<'](else_body))), self.$condition_map(case_t, expr, nil, nil, else_t, else_body, end_t)); + }, 6); + + $def(self, '$in_match', function $$in_match(lhs, in_t, rhs) { + var self = this; + + return self.$n("in_match", [lhs, rhs], self.$binary_op_map(lhs, in_t, rhs)) + }, 3); + + $def(self, '$match_pattern', function $$match_pattern(lhs, match_t, rhs) { + var self = this; + + return self.$n("match_pattern", [lhs, rhs], self.$binary_op_map(lhs, match_t, rhs)) + }, 3); + + $def(self, '$match_pattern_p', function $$match_pattern_p(lhs, match_t, rhs) { + var self = this; + + return self.$n("match_pattern_p", [lhs, rhs], self.$binary_op_map(lhs, match_t, rhs)) + }, 3); + + $def(self, '$in_pattern', function $$in_pattern(in_t, pattern, guard, then_t, body) { + var self = this, children = nil; + + + children = [pattern, guard, body]; + return self.$n("in_pattern", children, self.$keyword_map(in_t, then_t, children.$compact(), nil)); + }, 5); + + $def(self, '$if_guard', function $$if_guard(if_t, if_body) { + var self = this; + + return self.$n("if_guard", [if_body], self.$guard_map(if_t, if_body)) + }, 2); + + $def(self, '$unless_guard', function $$unless_guard(unless_t, unless_body) { + var self = this; + + return self.$n("unless_guard", [unless_body], self.$guard_map(unless_t, unless_body)) + }, 2); + + $def(self, '$match_var', function $$match_var(name_t) { + var self = this, name = nil, name_l = nil; + + + name = self.$value(name_t).$to_sym(); + name_l = self.$loc(name_t); + self.$check_lvar_name(name, name_l); + self.$check_duplicate_pattern_variable(name, name_l); + self.parser.$static_env().$declare(name); + return self.$n("match_var", [name], self.$variable_map(name_t)); + }, 1); + + $def(self, '$match_hash_var', function $$match_hash_var(name_t) { + var self = this, name = nil, expr_l = nil, name_l = nil; + + + name = self.$value(name_t).$to_sym(); + expr_l = self.$loc(name_t); + name_l = expr_l.$adjust($hash2(["end_pos"], {"end_pos": -1})); + self.$check_lvar_name(name, name_l); + self.$check_duplicate_pattern_variable(name, name_l); + self.parser.$static_env().$declare(name); + return self.$n("match_var", [name], $$$($$$($$('Source'), 'Map'), 'Variable').$new(name_l, expr_l)); + }, 1); + + $def(self, '$match_hash_var_from_str', function $$match_hash_var_from_str(begin_t, strings, end_t) { + var $a, self = this, string = nil, $ret_or_1 = nil, name = nil, name_l = nil, begin_l = nil, end_l = nil, expr_l = nil; + + + if ($truthy($rb_gt(strings.$length(), 1))) { + self.$diagnostic("error", "pm_interp_in_var_name", nil, self.$loc(begin_t).$join(self.$loc(end_t))) + }; + string = strings['$[]'](0); + if ($eqeqeq("str", ($ret_or_1 = string.$type()))) { + + $a = [].concat($to_a(string)), (name = ($a[0] == null ? nil : $a[0])), $a; + name_l = string.$loc().$expression(); + self.$check_lvar_name(name, name_l); + self.$check_duplicate_pattern_variable(name, name_l); + self.parser.$static_env().$declare(name); + if ($truthy((begin_l = string.$loc().$begin()))) { + name_l = name_l.$adjust($hash2(["begin_pos"], {"begin_pos": begin_l.$length()})) + }; + if ($truthy((end_l = string.$loc().$end()))) { + name_l = name_l.$adjust($hash2(["end_pos"], {"end_pos": end_l.$length()['$-@']()})) + }; + expr_l = self.$loc(begin_t).$join(string.$loc().$expression()).$join(self.$loc(end_t)); + return self.$n("match_var", [name.$to_sym()], $$$($$$($$('Source'), 'Map'), 'Variable').$new(name_l, expr_l)); + } else if ($eqeqeq("begin", $ret_or_1)) { + return self.$match_hash_var_from_str(begin_t, string.$children(), end_t) + } else { + return self.$diagnostic("error", "pm_interp_in_var_name", nil, self.$loc(begin_t).$join(self.$loc(end_t))) + }; + }, 3); + + $def(self, '$match_rest', function $$match_rest(star_t, name_t) { + var self = this, name = nil; + + + + if (name_t == null) name_t = nil;; + if ($truthy(name_t['$nil?']())) { + return self.$n0("match_rest", self.$unary_op_map(star_t)) + } else { + + name = self.$match_var(name_t); + return self.$n("match_rest", [name], self.$unary_op_map(star_t, name)); + }; + }, -2); + + $def(self, '$hash_pattern', function $$hash_pattern(lbrace_t, kwargs, rbrace_t) { + var self = this, args = nil; + + + args = self.$check_duplicate_args(kwargs); + return self.$n("hash_pattern", args, self.$collection_map(lbrace_t, args, rbrace_t)); + }, 3); + + $def(self, '$array_pattern', function $$array_pattern(lbrack_t, elements, rbrack_t) { + var self = this, trailing_comma = nil, node_elements = nil, node_type = nil; + + + if ($truthy(elements['$nil?']())) { + return self.$n("array_pattern", nil, self.$collection_map(lbrack_t, [], rbrack_t)) + }; + trailing_comma = false; + node_elements = $send(elements, 'map', [], function $$14(element){ + + + if (element == null) element = nil;; + if ($eqeq(element.$type(), "match_with_trailing_comma")) { + + trailing_comma = true; + return element.$children().$first(); + } else { + + trailing_comma = false; + return element; + };}, 1); + node_type = ($truthy(trailing_comma) ? ("array_pattern_with_tail") : ("array_pattern")); + return self.$n(node_type, node_elements, self.$collection_map(lbrack_t, elements, rbrack_t)); + }, 3); + + $def(self, '$find_pattern', function $$find_pattern(lbrack_t, elements, rbrack_t) { + var self = this; + + return self.$n("find_pattern", elements, self.$collection_map(lbrack_t, elements, rbrack_t)) + }, 3); + + $def(self, '$match_with_trailing_comma', function $$match_with_trailing_comma(match, comma_t) { + var self = this; + + return self.$n("match_with_trailing_comma", [match], self.$expr_map(match.$loc().$expression().$join(self.$loc(comma_t)))) + }, 2); + + $def(self, '$const_pattern', function $$const_pattern(const$, ldelim_t, pattern, rdelim_t) { + var self = this; + + return self.$n("const_pattern", [const$, pattern], $$$($$$($$('Source'), 'Map'), 'Collection').$new(self.$loc(ldelim_t), self.$loc(rdelim_t), const$.$loc().$expression().$join(self.$loc(rdelim_t)))) + }, 4); + + $def(self, '$pin', function $$pin(pin_t, var$) { + var self = this; + + return self.$n("pin", [var$], self.$send_unary_op_map(pin_t, var$)) + }, 2); + + $def(self, '$match_alt', function $$match_alt(left, pipe_t, right) { + var self = this, source_map = nil; + + + source_map = self.$binary_op_map(left, pipe_t, right); + return self.$n("match_alt", [left, right], source_map); + }, 3); + + $def(self, '$match_as', function $$match_as(value, assoc_t, as) { + var self = this, source_map = nil; + + + source_map = self.$binary_op_map(value, assoc_t, as); + return self.$n("match_as", [value, as], source_map); + }, 3); + + $def(self, '$match_nil_pattern', function $$match_nil_pattern(dstar_t, nil_t) { + var self = this; + + return self.$n0("match_nil_pattern", self.$arg_prefix_map(dstar_t, nil_t)) + }, 2); + + $def(self, '$match_pair', function $$match_pair(label_type, label, value) { + var $a, $b, self = this, begin_t = nil, parts = nil, end_t = nil, label_loc = nil, var_name = nil; + + if ($eqeq(label_type, "label")) { + + self.$check_duplicate_pattern_key(label['$[]'](0), label['$[]'](1)); + return self.$pair_keyword(label, value); + } else { + + $b = label, $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (parts = ($a[1] == null ? nil : $a[1])), (end_t = ($a[2] == null ? nil : $a[2])), $b; + label_loc = self.$loc(begin_t).$join(self.$loc(end_t)); + if ($truthy((var_name = self.$static_string(parts)))) { + self.$check_duplicate_pattern_key(var_name, label_loc) + } else { + self.$diagnostic("error", "pm_interp_in_var_name", nil, label_loc) + }; + return self.$pair_quoted(begin_t, parts, end_t, value); + } + }, 3); + + $def(self, '$match_label', function $$match_label(label_type, label) { + var $a, $b, self = this, begin_t = nil, strings = nil, end_t = nil; + + if ($eqeq(label_type, "label")) { + return self.$match_hash_var(label) + } else { + + $b = label, $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (strings = ($a[1] == null ? nil : $a[1])), (end_t = ($a[2] == null ? nil : $a[2])), $b; + return self.$match_hash_var_from_str(begin_t, strings, end_t); + } + }, 2); + self.$private(); + + $def(self, '$check_condition', function $$check_condition(cond) { + var $a, self = this, $ret_or_1 = nil, lhs = nil, rhs = nil, type = nil, $ret_or_2 = nil; + + if ($eqeqeq("masgn", ($ret_or_1 = cond.$type()))) { + if ($truthy($rb_le(self.parser.$version(), 23))) { + return self.$diagnostic("error", "masgn_as_condition", nil, cond.$loc().$expression()) + } else { + return cond + } + } else if ($eqeqeq("begin", $ret_or_1)) { + if ($eqeq(cond.$children().$count(), 1)) { + return cond.$updated(nil, [self.$check_condition(cond.$children().$last())]) + } else { + return cond + } + } else if (($eqeqeq("and", $ret_or_1) || (($eqeqeq("or", $ret_or_1) || (($eqeqeq("irange", $ret_or_1) || ($eqeqeq("erange", $ret_or_1)))))))) { + + $a = [].concat($to_a(cond)), (lhs = ($a[0] == null ? nil : $a[0])), (rhs = ($a[1] == null ? nil : $a[1])), $a; + type = ($eqeqeq("irange", ($ret_or_2 = cond.$type())) ? ("iflipflop") : ($eqeqeq("erange", $ret_or_2) ? ("eflipflop") : (nil))); + if (($truthy(["and", "or"]['$include?'](cond.$type())) && ($eqeq(self.parser.$version(), 18)))) { + return cond + } else { + return cond.$updated(type, [self.$check_condition(lhs), self.$check_condition(rhs)]) + }; + } else if ($eqeqeq("regexp", $ret_or_1)) { + return self.$n("match_current_line", [cond], self.$expr_map(cond.$loc().$expression())) + } else { + return cond + } + }, 1); + + $def(self, '$check_duplicate_args', function $$check_duplicate_args(args, map) { + var self = this; + + + + if (map == null) map = $hash2([], {});; + return $send(args, 'each', [], function $$15(this_arg){var self = $$15.$$s == null ? this : $$15.$$s, $ret_or_1 = nil; + + + + if (this_arg == null) this_arg = nil;; + if (($eqeqeq("arg", ($ret_or_1 = this_arg.$type())) || (($eqeqeq("optarg", $ret_or_1) || (($eqeqeq("restarg", $ret_or_1) || (($eqeqeq("blockarg", $ret_or_1) || (($eqeqeq("kwarg", $ret_or_1) || (($eqeqeq("kwoptarg", $ret_or_1) || (($eqeqeq("kwrestarg", $ret_or_1) || ($eqeqeq("shadowarg", $ret_or_1)))))))))))))))) { + return self.$check_duplicate_arg(this_arg, map) + } else if ($eqeqeq("procarg0", $ret_or_1)) { + if ($truthy(this_arg.$children()['$[]'](0)['$is_a?']($$('Symbol')))) { + return self.$check_duplicate_arg(this_arg, map) + } else { + return self.$check_duplicate_args(this_arg.$children(), map) + } + } else if ($eqeqeq("mlhs", $ret_or_1)) { + return self.$check_duplicate_args(this_arg.$children(), map) + } else { + return nil + };}, {$$arity: 1, $$s: self}); + }, -2); + + $def(self, '$check_duplicate_arg', function $$check_duplicate_arg(this_arg, map) { + var $a, self = this, this_name = nil, that_arg = nil, that_name = nil, $writer = nil; + + + + if (map == null) map = $hash2([], {});; + $a = [].concat($to_a(this_arg)), (this_name = ($a[0] == null ? nil : $a[0])), $a; + that_arg = map['$[]'](this_name); + $a = [].concat($to_a(that_arg)), (that_name = ($a[0] == null ? nil : $a[0])), $a; + if ($truthy(that_arg['$nil?']())) { + + $writer = [this_name, this_arg]; + $send(map, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else if ($truthy(self['$arg_name_collides?'](this_name, that_name))) { + return self.$diagnostic("error", "duplicate_argument", nil, this_arg.$loc().$name(), [that_arg.$loc().$name()]) + } else { + return nil + }; + }, -2); + + $def(self, '$validate_no_forward_arg_after_restarg', function $$validate_no_forward_arg_after_restarg(args) { + var self = this, restarg = nil, forward_arg = nil; + + + restarg = nil; + forward_arg = nil; + $send(args, 'each', [], function $$16(arg){var $ret_or_1 = nil; + + + + if (arg == null) arg = nil;; + if ($eqeqeq("restarg", ($ret_or_1 = arg.$type()))) { + return (restarg = arg) + } else if ($eqeqeq("forward_arg", $ret_or_1)) { + return (forward_arg = arg) + } else { + return nil + };}, 1); + if (($not(forward_arg['$nil?']()) && ($not(restarg['$nil?']())))) { + return self.$diagnostic("error", "forward_arg_after_restarg", nil, forward_arg.$loc().$expression(), [restarg.$loc().$expression()]) + } else { + return nil + }; + }, 1); + + $def(self, '$check_assignment_to_numparam', function $$check_assignment_to_numparam(name, loc) { + var self = this, assigning_to_numparam = nil, $ret_or_1 = nil, $ret_or_2 = nil; + + + if ($truthy($rb_lt(self.parser.$version(), 27))) { + return nil + }; + assigning_to_numparam = ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.parser.$context()['$in_dynamic_block?']())) ? (name['$=~'](/^_([1-9])$/)) : ($ret_or_2)))) ? (self.parser.$max_numparam_stack()['$has_numparams?']()) : ($ret_or_1)); + if ($truthy(assigning_to_numparam)) { + return self.$diagnostic("error", "cant_assign_to_numparam", $hash2(["name"], {"name": name}), loc) + } else { + return nil + }; + }, 2); + + $def(self, '$check_reserved_for_numparam', function $$check_reserved_for_numparam(name, loc) { + var self = this; + + + if ($truthy($rb_lt(self.parser.$version(), 30))) { + return nil + }; + if ($truthy(name['$=~'](/^_([1-9])$/))) { + return self.$diagnostic("error", "reserved_for_numparam", $hash2(["name"], {"name": name}), loc) + } else { + return nil + }; + }, 2); + + $def(self, '$arg_name_collides?', function $Default_arg_name_collides$ques$17(this_name, that_name) { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + if ($eqeqeq(18, ($ret_or_1 = self.parser.$version()))) { + return this_name['$=='](that_name) + } else if ($eqeqeq(19, $ret_or_1)) { + if ($truthy(($ret_or_2 = this_name['$!=']("_")))) { + return this_name['$=='](that_name) + } else { + return $ret_or_2 + } + } else if ($truthy(($ret_or_2 = ($truthy(($ret_or_3 = this_name)) ? (this_name['$[]'](0)['$!=']("_")) : ($ret_or_3))))) { + return this_name['$=='](that_name) + } else { + return $ret_or_2 + } + }, 2); + + $def(self, '$check_lvar_name', function $$check_lvar_name(name, loc) { + var self = this; + + if ($truthy(name['$=~'](/^[[[:lower:]]_][[[:alnum:]]_]*$/))) { + return nil + } else { + return self.$diagnostic("error", "lvar_name", $hash2(["name"], {"name": name}), loc) + } + }, 2); + + $def(self, '$check_duplicate_pattern_variable', function $$check_duplicate_pattern_variable(name, loc) { + var self = this; + + + if ($truthy(name.$to_s()['$start_with?']("_"))) { + return nil + }; + if ($truthy(self.parser.$pattern_variables()['$declared?'](name))) { + self.$diagnostic("error", "duplicate_variable_name", $hash2(["name"], {"name": name.$to_s()}), loc) + }; + return self.parser.$pattern_variables().$declare(name); + }, 2); + + $def(self, '$check_duplicate_pattern_key', function $$check_duplicate_pattern_key(name, loc) { + var self = this; + + + if ($truthy(self.parser.$pattern_hash_keys()['$declared?'](name))) { + self.$diagnostic("error", "duplicate_pattern_key", $hash2(["name"], {"name": name.$to_s()}), loc) + }; + return self.parser.$pattern_hash_keys().$declare(name); + }, 2); + + $def(self, '$n', function $$n(type, children, source_map) { + + return $$$($$('AST'), 'Node').$new(type, children, $hash2(["location"], {"location": source_map})) + }, 3); + + $def(self, '$n0', function $$n0(type, source_map) { + var self = this; + + return self.$n(type, [], source_map) + }, 2); + + $def(self, '$join_exprs', function $$join_exprs(left_expr, right_expr) { + + return left_expr.$loc().$expression().$join(right_expr.$loc().$expression()) + }, 2); + + $def(self, '$token_map', function $$token_map(token) { + var self = this; + + return $$$($$('Source'), 'Map').$new(self.$loc(token)) + }, 1); + + $def(self, '$delimited_string_map', function $$delimited_string_map(string_t) { + var self = this, str_range = nil, begin_l = nil, end_l = nil; + + + str_range = self.$loc(string_t); + begin_l = str_range.$with($hash2(["end_pos"], {"end_pos": $rb_plus(str_range.$begin_pos(), 1)})); + end_l = str_range.$with($hash2(["begin_pos"], {"begin_pos": $rb_minus(str_range.$end_pos(), 1)})); + return $$$($$$($$('Source'), 'Map'), 'Collection').$new(begin_l, end_l, self.$loc(string_t)); + }, 1); + + $def(self, '$prefix_string_map', function $$prefix_string_map(symbol) { + var self = this, str_range = nil, begin_l = nil; + + + str_range = self.$loc(symbol); + begin_l = str_range.$with($hash2(["end_pos"], {"end_pos": $rb_plus(str_range.$begin_pos(), 1)})); + return $$$($$$($$('Source'), 'Map'), 'Collection').$new(begin_l, nil, self.$loc(symbol)); + }, 1); + + $def(self, '$unquoted_map', function $$unquoted_map(token) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'Collection').$new(nil, nil, self.$loc(token)) + }, 1); + + $def(self, '$pair_keyword_map', function $$pair_keyword_map(key_t, value_e) { + var self = this, key_range = nil, key_l = nil, colon_l = nil; + + + key_range = self.$loc(key_t); + key_l = key_range.$adjust($hash2(["end_pos"], {"end_pos": -1})); + colon_l = key_range.$with($hash2(["begin_pos"], {"begin_pos": $rb_minus(key_range.$end_pos(), 1)})); + return [$$$($$$($$('Source'), 'Map'), 'Collection').$new(nil, nil, key_l), $$$($$$($$('Source'), 'Map'), 'Operator').$new(colon_l, key_range.$join(value_e.$loc().$expression()))]; + }, 2); + + $def(self, '$pair_quoted_map', function $$pair_quoted_map(begin_t, end_t, value_e) { + var self = this, end_l = nil, quote_l = nil, colon_l = nil; + + + end_l = self.$loc(end_t); + quote_l = end_l.$with($hash2(["begin_pos", "end_pos"], {"begin_pos": $rb_minus(end_l.$end_pos(), 2), "end_pos": $rb_minus(end_l.$end_pos(), 1)})); + colon_l = end_l.$with($hash2(["begin_pos"], {"begin_pos": $rb_minus(end_l.$end_pos(), 1)})); + return [[self.$value(end_t), quote_l], $$$($$$($$('Source'), 'Map'), 'Operator').$new(colon_l, self.$loc(begin_t).$join(value_e.$loc().$expression()))]; + }, 3); + + $def(self, '$expr_map', function $$expr_map(loc) { + + return $$$($$('Source'), 'Map').$new(loc) + }, 1); + + $def(self, '$collection_map', function $$collection_map(begin_t, parts, end_t) { + var self = this, expr_l = nil; + + + if (($truthy(begin_t['$nil?']()) || ($truthy(end_t['$nil?']())))) { + if ($truthy(parts['$any?']())) { + expr_l = self.$join_exprs(parts.$first(), parts.$last()) + } else if ($not(begin_t['$nil?']())) { + expr_l = self.$loc(begin_t) + } else if ($not(end_t['$nil?']())) { + expr_l = self.$loc(end_t) + } + } else { + expr_l = self.$loc(begin_t).$join(self.$loc(end_t)) + }; + return $$$($$$($$('Source'), 'Map'), 'Collection').$new(self.$loc(begin_t), self.$loc(end_t), expr_l); + }, 3); + + $def(self, '$string_map', function $$string_map(begin_t, parts, end_t) { + var self = this, expr_l = nil; + + if (($truthy(begin_t) && ($truthy(self.$value(begin_t)['$start_with?']("<<"))))) { + + if ($truthy(parts['$any?']())) { + expr_l = self.$join_exprs(parts.$first(), parts.$last()) + } else { + expr_l = self.$loc(end_t).$begin() + }; + return $$$($$$($$('Source'), 'Map'), 'Heredoc').$new(self.$loc(begin_t), expr_l, self.$loc(end_t)); + } else { + return self.$collection_map(begin_t, parts, end_t) + } + }, 3); + + $def(self, '$regexp_map', function $$regexp_map(begin_t, end_t, options_e) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'Collection').$new(self.$loc(begin_t), self.$loc(end_t), self.$loc(begin_t).$join(options_e.$loc().$expression())) + }, 3); + + $def(self, '$constant_map', function $$constant_map(scope, colon2_t, name_t) { + var self = this, expr_l = nil; + + + if ($truthy(scope['$nil?']())) { + expr_l = self.$loc(name_t) + } else { + expr_l = scope.$loc().$expression().$join(self.$loc(name_t)) + }; + return $$$($$$($$('Source'), 'Map'), 'Constant').$new(self.$loc(colon2_t), self.$loc(name_t), expr_l); + }, 3); + + $def(self, '$variable_map', function $$variable_map(name_t) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'Variable').$new(self.$loc(name_t)) + }, 1); + + $def(self, '$binary_op_map', function $$binary_op_map(left_e, op_t, right_e) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'Operator').$new(self.$loc(op_t), self.$join_exprs(left_e, right_e)) + }, 3); + + $def(self, '$unary_op_map', function $$unary_op_map(op_t, arg_e) { + var self = this, expr_l = nil; + + + + if (arg_e == null) arg_e = nil;; + if ($truthy(arg_e['$nil?']())) { + expr_l = self.$loc(op_t) + } else { + expr_l = self.$loc(op_t).$join(arg_e.$loc().$expression()) + }; + return $$$($$$($$('Source'), 'Map'), 'Operator').$new(self.$loc(op_t), expr_l); + }, -2); + + $def(self, '$range_map', function $$range_map(start_e, op_t, end_e) { + var self = this, expr_l = nil; + + + if (($truthy(start_e) && ($truthy(end_e)))) { + expr_l = self.$join_exprs(start_e, end_e) + } else if ($truthy(start_e)) { + expr_l = start_e.$loc().$expression().$join(self.$loc(op_t)) + } else if ($truthy(end_e)) { + expr_l = self.$loc(op_t).$join(end_e.$loc().$expression()) + }; + return $$$($$$($$('Source'), 'Map'), 'Operator').$new(self.$loc(op_t), expr_l); + }, 3); + + $def(self, '$arg_prefix_map', function $$arg_prefix_map(op_t, name_t) { + var self = this, expr_l = nil; + + + + if (name_t == null) name_t = nil;; + if ($truthy(name_t['$nil?']())) { + expr_l = self.$loc(op_t) + } else { + expr_l = self.$loc(op_t).$join(self.$loc(name_t)) + }; + return $$$($$$($$('Source'), 'Map'), 'Variable').$new(self.$loc(name_t), expr_l); + }, -2); + + $def(self, '$kwarg_map', function $$kwarg_map(name_t, value_e) { + var self = this, label_range = nil, name_range = nil, expr_l = nil; + + + + if (value_e == null) value_e = nil;; + label_range = self.$loc(name_t); + name_range = label_range.$adjust($hash2(["end_pos"], {"end_pos": -1})); + if ($truthy(value_e)) { + expr_l = self.$loc(name_t).$join(value_e.$loc().$expression()) + } else { + expr_l = self.$loc(name_t) + }; + return $$$($$$($$('Source'), 'Map'), 'Variable').$new(name_range, expr_l); + }, -2); + + $def(self, '$module_definition_map', function $$module_definition_map(keyword_t, name_e, operator_t, end_t) { + var self = this, name_l = nil; + + + if ($truthy(name_e)) { + name_l = name_e.$loc().$expression() + }; + return $$$($$$($$('Source'), 'Map'), 'Definition').$new(self.$loc(keyword_t), self.$loc(operator_t), name_l, self.$loc(end_t)); + }, 4); + + $def(self, '$definition_map', function $$definition_map(keyword_t, operator_t, name_t, end_t) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'MethodDefinition').$new(self.$loc(keyword_t), self.$loc(operator_t), self.$loc(name_t), self.$loc(end_t), nil, nil) + }, 4); + + $def(self, '$endless_definition_map', function $$endless_definition_map(keyword_t, operator_t, name_t, assignment_t, body_e) { + var self = this, body_l = nil; + + + body_l = body_e.$loc().$expression(); + return $$$($$$($$('Source'), 'Map'), 'MethodDefinition').$new(self.$loc(keyword_t), self.$loc(operator_t), self.$loc(name_t), nil, self.$loc(assignment_t), body_l); + }, 5); + + $def(self, '$send_map', function $$send_map(receiver_e, dot_t, selector_t, begin_t, args, end_t) { + var self = this, begin_l = nil, end_l = nil; + + + + if (begin_t == null) begin_t = nil;; + + if (args == null) args = [];; + + if (end_t == null) end_t = nil;; + if ($truthy(receiver_e)) { + begin_l = receiver_e.$loc().$expression() + } else if ($truthy(selector_t)) { + begin_l = self.$loc(selector_t) + }; + if ($truthy(end_t)) { + end_l = self.$loc(end_t) + } else if ($truthy(args['$any?']())) { + end_l = args.$last().$loc().$expression() + } else if ($truthy(selector_t)) { + end_l = self.$loc(selector_t) + }; + return $$$($$$($$('Source'), 'Map'), 'Send').$new(self.$loc(dot_t), self.$loc(selector_t), self.$loc(begin_t), self.$loc(end_t), begin_l.$join(end_l)); + }, -4); + + $def(self, '$var_send_map', function $$var_send_map(variable_e) { + + return $$$($$$($$('Source'), 'Map'), 'Send').$new(nil, variable_e.$loc().$expression(), nil, nil, variable_e.$loc().$expression()) + }, 1); + + $def(self, '$send_binary_op_map', function $$send_binary_op_map(lhs_e, selector_t, rhs_e) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'Send').$new(nil, self.$loc(selector_t), nil, nil, self.$join_exprs(lhs_e, rhs_e)) + }, 3); + + $def(self, '$send_unary_op_map', function $$send_unary_op_map(selector_t, arg_e) { + var self = this, expr_l = nil; + + + if ($truthy(arg_e['$nil?']())) { + expr_l = self.$loc(selector_t) + } else { + expr_l = self.$loc(selector_t).$join(arg_e.$loc().$expression()) + }; + return $$$($$$($$('Source'), 'Map'), 'Send').$new(nil, self.$loc(selector_t), nil, nil, expr_l); + }, 2); + + $def(self, '$index_map', function $$index_map(receiver_e, lbrack_t, rbrack_t) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'Index').$new(self.$loc(lbrack_t), self.$loc(rbrack_t), receiver_e.$loc().$expression().$join(self.$loc(rbrack_t))) + }, 3); + + $def(self, '$send_index_map', function $$send_index_map(receiver_e, lbrack_t, rbrack_t) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'Send').$new(nil, self.$loc(lbrack_t).$join(self.$loc(rbrack_t)), nil, nil, receiver_e.$loc().$expression().$join(self.$loc(rbrack_t))) + }, 3); + + $def(self, '$block_map', function $$block_map(receiver_l, begin_t, end_t) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'Collection').$new(self.$loc(begin_t), self.$loc(end_t), receiver_l.$join(self.$loc(end_t))) + }, 3); + + $def(self, '$keyword_map', function $$keyword_map(keyword_t, begin_t, args, end_t) { + var self = this, $ret_or_1 = nil, end_l = nil; + + + args = ($truthy(($ret_or_1 = args)) ? ($ret_or_1) : ([])); + if ($truthy(end_t)) { + end_l = self.$loc(end_t) + } else if (($truthy(args['$any?']()) && ($not(args.$last()['$nil?']())))) { + end_l = args.$last().$loc().$expression() + } else if (($truthy(args['$any?']()) && ($truthy($rb_gt(args.$count(), 1))))) { + end_l = args['$[]'](-2).$loc().$expression() + } else { + end_l = self.$loc(keyword_t) + }; + return $$$($$$($$('Source'), 'Map'), 'Keyword').$new(self.$loc(keyword_t), self.$loc(begin_t), self.$loc(end_t), self.$loc(keyword_t).$join(end_l)); + }, 4); + + $def(self, '$keyword_mod_map', function $$keyword_mod_map(pre_e, keyword_t, post_e) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'Keyword').$new(self.$loc(keyword_t), nil, nil, self.$join_exprs(pre_e, post_e)) + }, 3); + + $def(self, '$condition_map', function $$condition_map(keyword_t, cond_e, begin_t, body_e, else_t, else_e, end_t) { + var self = this, end_l = nil; + + + if ($truthy(end_t)) { + end_l = self.$loc(end_t) + } else if (($truthy(else_e) && ($truthy(else_e.$loc().$expression())))) { + end_l = else_e.$loc().$expression() + } else if ($truthy(self.$loc(else_t))) { + end_l = self.$loc(else_t) + } else if (($truthy(body_e) && ($truthy(body_e.$loc().$expression())))) { + end_l = body_e.$loc().$expression() + } else if ($truthy(self.$loc(begin_t))) { + end_l = self.$loc(begin_t) + } else { + end_l = cond_e.$loc().$expression() + }; + return $$$($$$($$('Source'), 'Map'), 'Condition').$new(self.$loc(keyword_t), self.$loc(begin_t), self.$loc(else_t), self.$loc(end_t), self.$loc(keyword_t).$join(end_l)); + }, 7); + + $def(self, '$ternary_map', function $$ternary_map(begin_e, question_t, mid_e, colon_t, end_e) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'Ternary').$new(self.$loc(question_t), self.$loc(colon_t), self.$join_exprs(begin_e, end_e)) + }, 5); + + $def(self, '$for_map', function $$for_map(keyword_t, in_t, begin_t, end_t) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'For').$new(self.$loc(keyword_t), self.$loc(in_t), self.$loc(begin_t), self.$loc(end_t), self.$loc(keyword_t).$join(self.$loc(end_t))) + }, 4); + + $def(self, '$rescue_body_map', function $$rescue_body_map(keyword_t, exc_list_e, assoc_t, exc_var_e, then_t, compstmt_e) { + var self = this, end_l = nil; + + + if ($truthy(compstmt_e)) { + end_l = compstmt_e.$loc().$expression() + }; + if (($truthy(end_l['$nil?']()) && ($truthy(then_t)))) { + end_l = self.$loc(then_t) + }; + if (($truthy(end_l['$nil?']()) && ($truthy(exc_var_e)))) { + end_l = exc_var_e.$loc().$expression() + }; + if (($truthy(end_l['$nil?']()) && ($truthy(exc_list_e)))) { + end_l = exc_list_e.$loc().$expression() + }; + if ($truthy(end_l['$nil?']())) { + end_l = self.$loc(keyword_t) + }; + return $$$($$$($$('Source'), 'Map'), 'RescueBody').$new(self.$loc(keyword_t), self.$loc(assoc_t), self.$loc(then_t), self.$loc(keyword_t).$join(end_l)); + }, 6); + + $def(self, '$eh_keyword_map', function $$eh_keyword_map(compstmt_e, keyword_t, body_es, else_t, else_e) { + var self = this, begin_l = nil, end_l = nil; + + + if ($truthy(compstmt_e['$nil?']())) { + if ($truthy(keyword_t['$nil?']())) { + begin_l = body_es.$first().$loc().$expression() + } else { + begin_l = self.$loc(keyword_t) + } + } else { + begin_l = compstmt_e.$loc().$expression() + }; + if ($truthy(else_t)) { + if ($truthy(else_e['$nil?']())) { + end_l = self.$loc(else_t) + } else { + end_l = else_e.$loc().$expression() + } + } else if ($not(body_es.$last()['$nil?']())) { + end_l = body_es.$last().$loc().$expression() + } else { + end_l = self.$loc(keyword_t) + }; + return $$$($$$($$('Source'), 'Map'), 'Condition').$new(self.$loc(keyword_t), nil, self.$loc(else_t), nil, begin_l.$join(end_l)); + }, 5); + + $def(self, '$guard_map', function $$guard_map(keyword_t, guard_body_e) { + var self = this, keyword_l = nil, guard_body_l = nil; + + + keyword_l = self.$loc(keyword_t); + guard_body_l = guard_body_e.$loc().$expression(); + return $$$($$$($$('Source'), 'Map'), 'Keyword').$new(keyword_l, nil, nil, keyword_l.$join(guard_body_l)); + }, 2); + + $def(self, '$static_string', function $$static_string(nodes) {try { + + var self = this; + + return $send(nodes, 'map', [], function $$18(node){var self = $$18.$$s == null ? this : $$18.$$s, $ret_or_1 = nil, string = nil; + + + + if (node == null) node = nil;; + if ($eqeqeq("str", ($ret_or_1 = node.$type()))) { + return node.$children()['$[]'](0) + } else if ($eqeqeq("begin", $ret_or_1)) { + if ($truthy((string = self.$static_string(node.$children())))) { + return string + } else { + Opal.ret(nil) + } + } else { + Opal.ret(nil) + };}, {$$arity: 1, $$s: self}).$join() + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 1); + + $def(self, '$static_regexp', function $$static_regexp(parts, options) { + var self = this, source = nil; + + + source = self.$static_string(parts); + if ($truthy(source['$nil?']())) { + return nil + }; + source = ($truthy(options.$children()['$include?']("u")) ? (source.$encode($$$($$('Encoding'), 'UTF_8'))) : ($truthy(options.$children()['$include?']("e")) ? (source.$encode($$$($$('Encoding'), 'EUC_JP'))) : ($truthy(options.$children()['$include?']("s")) ? (source.$encode($$$($$('Encoding'), 'WINDOWS_31J'))) : ($truthy(options.$children()['$include?']("n")) ? (source.$encode($$$($$('Encoding'), 'BINARY'))) : (source))))); + return $$('Regexp').$new(source, ($truthy(options.$children()['$include?']("x")) ? ($$$($$('Regexp'), 'EXTENDED')) : nil)); + }, 2); + + $def(self, '$static_regexp_node', function $$static_regexp_node(node) { + var $a, self = this, parts = nil, options = nil; + + if ($eqeq(node.$type(), "regexp")) { + + $a = [node.$children()['$[]']($range(0, -2, false)), node.$children()['$[]'](-1)], (parts = $a[0]), (options = $a[1]), $a; + return self.$static_regexp(parts, options); + } else { + return nil + } + }, 1); + + $def(self, '$collapse_string_parts?', function $Default_collapse_string_parts$ques$19(parts) { + var $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = parts['$one?']()))) { + return ["str", "dstr"]['$include?'](parts.$first().$type()) + } else { + return $ret_or_1 + } + }, 1); + + $def(self, '$value', function $$value(token) { + + return token['$[]'](0) + }, 1); + + $def(self, '$string_value', function $$string_value(token) { + var self = this; + + + if (!$truthy(token['$[]'](0)['$valid_encoding?']())) { + self.$diagnostic("error", "invalid_encoding", nil, token['$[]'](1)) + }; + return token['$[]'](0); + }, 1); + + $def(self, '$loc', function $$loc(token) { + + if (($truthy(token) && ($truthy(token['$[]'](0))))) { + return token['$[]'](1) + } else { + return nil + } + }, 1); + + $def(self, '$diagnostic', function $$diagnostic(type, reason, arguments$, location, highlights) { + var self = this; + + + + if (highlights == null) highlights = [];; + self.parser.$diagnostics().$process($$('Diagnostic').$new(type, reason, arguments$, location, highlights)); + if ($eqeq(type, "error")) { + return self.parser.$send("yyerror") + } else { + return nil + }; + }, -5); + + $def(self, '$validate_definee', function $$validate_definee(definee) { + var self = this, $ret_or_1 = nil; + + if (($eqeqeq("int", ($ret_or_1 = definee.$type())) || (($eqeqeq("str", $ret_or_1) || (($eqeqeq("dstr", $ret_or_1) || (($eqeqeq("sym", $ret_or_1) || (($eqeqeq("dsym", $ret_or_1) || (($eqeqeq("regexp", $ret_or_1) || (($eqeqeq("array", $ret_or_1) || ($eqeqeq("hash", $ret_or_1)))))))))))))))) { + + self.$diagnostic("error", "singleton_literal", nil, definee.$loc().$expression()); + return false; + } else { + return true + } + }, 1); + + $def(self, '$rewrite_hash_args_to_kwargs', function $$rewrite_hash_args_to_kwargs(args) { + var self = this, $writer = nil; + + if (($truthy(args['$any?']()) && ($truthy(self['$kwargs?'](args.$last()))))) { + + $writer = [$rb_minus(args.$length(), 1), args['$[]']($rb_minus(args.$length(), 1)).$updated("kwargs")]; + $send(args, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else if ((($truthy($rb_gt(args.$length(), 1)) && ($eqeq(args.$last().$type(), "block_pass"))) && ($truthy(self['$kwargs?'](args['$[]']($rb_minus(args.$length(), 2))))))) { + + $writer = [$rb_minus(args.$length(), 2), args['$[]']($rb_minus(args.$length(), 2)).$updated("kwargs")]; + $send(args, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else { + return nil + } + }, 1); + return $def(self, '$kwargs?', function $Default_kwargs$ques$20(node) { + var $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = node.$type()['$==']("hash"))) ? (node.$loc().$begin()['$nil?']()) : ($ret_or_2))))) { + return node.$loc().$end()['$nil?']() + } else { + return $ret_or_1 + } + }, 1); + })($$('Builders'), null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/context"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $truthy = Opal.truthy; + + Opal.add_stubs('reset,attr_accessor,in_block,in_lambda'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Context'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $const_set($nesting[0], 'FLAGS', ["in_defined", "in_kwarg", "in_argdef", "in_def", "in_class", "in_block", "in_lambda"]); + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return self.$reset() + }, 0); + + $def(self, '$reset', function $$reset() { + var self = this; + + + self.in_defined = false; + self.in_kwarg = false; + self.in_argdef = false; + self.in_def = false; + self.in_class = false; + self.in_block = false; + return (self.in_lambda = false); + }, 0); + $send(self, 'attr_accessor', $to_a($$('FLAGS'))); + return $def(self, '$in_dynamic_block?', function $Context_in_dynamic_block$ques$1() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$in_block()))) { + return $ret_or_1 + } else { + return self.$in_lambda() + } + }, 0); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/max_numparam_stack"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $hash2 = Opal.hash2, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus; + + Opal.add_stubs('attr_reader,==,size,set,top,>,max,[],last,push,pop,private,[]=,-'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'MaxNumparamStack'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.stack = nil; + + self.$attr_reader("stack"); + $const_set($nesting[0], 'ORDINARY_PARAMS', -1); + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return (self.stack = []) + }, 0); + + $def(self, '$empty?', function $MaxNumparamStack_empty$ques$1() { + var self = this; + + return self.stack.$size()['$=='](0) + }, 0); + + $def(self, '$has_ordinary_params!', function $MaxNumparamStack_has_ordinary_params$excl$2() { + var self = this; + + return self.$set($$('ORDINARY_PARAMS')) + }, 0); + + $def(self, '$has_ordinary_params?', function $MaxNumparamStack_has_ordinary_params$ques$3() { + var self = this; + + return self.$top()['$==']($$('ORDINARY_PARAMS')) + }, 0); + + $def(self, '$has_numparams?', function $MaxNumparamStack_has_numparams$ques$4() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$top()))) { + return $rb_gt(self.$top(), 0) + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$register', function $$register(numparam) { + var self = this; + + return self.$set([self.$top(), numparam].$max()) + }, 1); + + $def(self, '$top', function $$top() { + var self = this; + + return self.stack.$last()['$[]']("value") + }, 0); + + $def(self, '$push', function $$push($kwargs) { + var static$, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if (!Opal.hasOwnProperty.call($kwargs.$$smap, 'static')) { + throw Opal.ArgumentError.$new('missing keyword: static'); + } + static$ = $kwargs.$$smap["static"];; + return self.stack.$push($hash2(["value", "static"], {"value": 0, "static": static$})); + }, 1); + + $def(self, '$pop', function $$pop() { + var self = this; + + return self.stack.$pop()['$[]']("value") + }, 0); + self.$private(); + return $def(self, '$set', function $$set(value) { + var self = this, $writer = nil; + + + $writer = ["value", value]; + $send(self.stack.$last(), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }, 1); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/current_arg_stack"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $rb_minus = Opal.rb_minus, $send = Opal.send, $to_a = Opal.to_a; + + Opal.add_stubs('attr_reader,freeze,==,size,<<,-,length,[]=,pop,clear,last'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'CurrentArgStack'); + + var $proto = self.$$prototype; + + $proto.stack = nil; + + self.$attr_reader("stack"); + + $def(self, '$initialize', function $$initialize() { + var self = this; + + + self.stack = []; + return self.$freeze(); + }, 0); + + $def(self, '$empty?', function $CurrentArgStack_empty$ques$1() { + var self = this; + + return self.stack.$size()['$=='](0) + }, 0); + + $def(self, '$push', function $$push(value) { + var self = this; + + return self.stack['$<<'](value) + }, 1); + + $def(self, '$set', function $$set(value) { + var self = this, $writer = nil; + + + $writer = [$rb_minus(self.stack.$length(), 1), value]; + $send(self.stack, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }, 1); + + $def(self, '$pop', function $$pop() { + var self = this; + + return self.stack.$pop() + }, 0); + + $def(self, '$reset', function $$reset() { + var self = this; + + return self.stack.$clear() + }, 0); + return $def(self, '$top', function $$top() { + var self = this; + + return self.stack.$last() + }, 0); + })($nesting[0], null) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/variables_stack"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('push,empty?,<<,new,pop,clear,last,to_sym,include?'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'VariablesStack'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.stack = nil; + + + $def(self, '$initialize', function $$initialize() { + var self = this; + + + self.stack = []; + return self.$push(); + }, 0); + + $def(self, '$empty?', function $VariablesStack_empty$ques$1() { + var self = this; + + return self.stack['$empty?']() + }, 0); + + $def(self, '$push', function $$push() { + var self = this; + + return self.stack['$<<']($$('Set').$new()) + }, 0); + + $def(self, '$pop', function $$pop() { + var self = this; + + return self.stack.$pop() + }, 0); + + $def(self, '$reset', function $$reset() { + var self = this; + + return self.stack.$clear() + }, 0); + + $def(self, '$declare', function $$declare(name) { + var self = this; + + return self.stack.$last()['$<<'](name.$to_sym()) + }, 1); + return $def(self, '$declared?', function $VariablesStack_declared$ques$2(name) { + var self = this; + + return self.stack.$last()['$include?'](name.$to_sym()) + }, 1); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $defs = Opal.defs, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $gvars = Opal.gvars, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $def = Opal.def, $not = Opal.not, $eqeqeq = Opal.eqeqeq, $to_ary = Opal.to_ary, $hash2 = Opal.hash2; + + Opal.add_stubs('default_parser,setup_source_buffer,default_encoding,parse,parse_with_comments,read,new,all_errors_are_fatal=,diagnostics,-,ignore_warnings=,lambda,puts,render,consumer=,force_encoding,dup,==,name,raw_source=,source=,private_class_method,attr_reader,version,diagnostics=,static_env=,context=,parser=,[],class,reset,source_buffer=,do_parse,comments=,comments,tokens=,!,raise,tokens,private,advance,===,diagnostic,map,process,yyerror,token_to_str'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Base'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.diagnostics = $proto.lexer = $proto.static_env = $proto.context = $proto.builder = $proto.current_arg_stack = $proto.pattern_variables = $proto.pattern_hash_keys = nil; + + $defs(self, '$parse', function $$parse(string, file, line) { + var self = this, parser = nil, source_buffer = nil; + + + + if (file == null) file = "(string)";; + + if (line == null) line = 1;; + parser = self.$default_parser(); + source_buffer = self.$setup_source_buffer(file, line, string, parser.$default_encoding()); + return parser.$parse(source_buffer); + }, -2); + $defs(self, '$parse_with_comments', function $$parse_with_comments(string, file, line) { + var self = this, parser = nil, source_buffer = nil; + + + + if (file == null) file = "(string)";; + + if (line == null) line = 1;; + parser = self.$default_parser(); + source_buffer = self.$setup_source_buffer(file, line, string, parser.$default_encoding()); + return parser.$parse_with_comments(source_buffer); + }, -2); + $defs(self, '$parse_file', function $$parse_file(filename) { + var self = this; + + return self.$parse($$('File').$read(filename), filename) + }, 1); + $defs(self, '$parse_file_with_comments', function $$parse_file_with_comments(filename) { + var self = this; + + return self.$parse_with_comments($$('File').$read(filename), filename) + }, 1); + $defs(self, '$default_parser', function $$default_parser() { + var self = this, parser = nil, $writer = nil; + + + parser = self.$new(); + + $writer = [true]; + $send(parser.$diagnostics(), 'all_errors_are_fatal=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [true]; + $send(parser.$diagnostics(), 'ignore_warnings=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [$send(self, 'lambda', [], function $$1(diagnostic){ if ($gvars.stderr == null) $gvars.stderr = nil; + + + + if (diagnostic == null) diagnostic = nil;; + return $gvars.stderr.$puts(diagnostic.$render());}, 1)]; + $send(parser.$diagnostics(), 'consumer=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return parser; + }, 0); + $defs(self, '$setup_source_buffer', function $$setup_source_buffer(file, line, string, encoding) { + var self = this, source_buffer = nil, $writer = nil; + + + string = string.$dup().$force_encoding(encoding); + source_buffer = $$$($$('Source'), 'Buffer').$new(file, line); + if ($eqeq(self.$name(), "Parser::Ruby18")) { + + $writer = [string]; + $send(source_buffer, 'raw_source=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + } else { + + $writer = [string]; + $send(source_buffer, 'source=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return source_buffer; + }, 4); + self.$private_class_method("setup_source_buffer"); + self.$attr_reader("lexer"); + self.$attr_reader("diagnostics"); + self.$attr_reader("builder"); + self.$attr_reader("static_env"); + self.$attr_reader("source_buffer"); + self.$attr_reader("context"); + self.$attr_reader("max_numparam_stack"); + self.$attr_reader("current_arg_stack"); + self.$attr_reader("pattern_variables"); + self.$attr_reader("pattern_hash_keys"); + + $def(self, '$initialize', function $$initialize(builder) { + var self = this, $writer = nil; + + + + if (builder == null) builder = $$$($$$($$('Parser'), 'Builders'), 'Default').$new();; + self.diagnostics = $$$($$('Diagnostic'), 'Engine').$new(); + self.static_env = $$('StaticEnvironment').$new(); + self.context = $$('Context').$new(); + self.max_numparam_stack = $$('MaxNumparamStack').$new(); + self.current_arg_stack = $$('CurrentArgStack').$new(); + self.pattern_variables = $$('VariablesStack').$new(); + self.pattern_hash_keys = $$('VariablesStack').$new(); + self.lexer = $$('Lexer').$new(self.$version()); + + $writer = [self.diagnostics]; + $send(self.lexer, 'diagnostics=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [self.static_env]; + $send(self.lexer, 'static_env=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [self.context]; + $send(self.lexer, 'context=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.builder = builder; + + $writer = [self]; + $send(self.builder, 'parser=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.last_token = nil; + if (($truthy($$$(self.$class(), 'Racc_debug_parser')) && ($truthy($$('ENV')['$[]']("RACC_DEBUG"))))) { + self.yydebug = true + }; + return self.$reset(); + }, -1); + + $def(self, '$reset', function $$reset() { + var self = this; + + + self.source_buffer = nil; + self.lexer.$reset(); + self.static_env.$reset(); + self.context.$reset(); + self.current_arg_stack.$reset(); + self.pattern_variables.$reset(); + self.pattern_hash_keys.$reset(); + return self; + }, 0); + + $def(self, '$parse', function $$parse(source_buffer) { + var self = this, $writer = nil, $ret_or_1 = nil; + + return (function() { try { + + + $writer = [source_buffer]; + $send(self.lexer, 'source_buffer=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.source_buffer = source_buffer; + if ($truthy(($ret_or_1 = self.$do_parse()))) { + return $ret_or_1 + } else { + return nil + }; + } finally { + ((self.source_buffer = nil), (($writer = [nil]), $send(self.lexer, 'source_buffer=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)])) + }; })() + }, 1); + + $def(self, '$parse_with_comments', function $$parse_with_comments(source_buffer) { + var self = this, $writer = nil; + + return (function() { try { + + + $writer = [[]]; + $send(self.lexer, 'comments=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return [self.$parse(source_buffer), self.lexer.$comments()]; + } finally { + (($writer = [nil]), $send(self.lexer, 'comments=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)]) + }; })() + }, 1); + + $def(self, '$tokenize', function $$tokenize(source_buffer, recover) { + var self = this, $writer = nil, ast = nil; + + + + if (recover == null) recover = false;; + return (function() { try { + + + $writer = [[]]; + $send(self.lexer, 'tokens=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [[]]; + $send(self.lexer, 'comments=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + try { + ast = self.$parse(source_buffer) + } catch ($err) { + if (Opal.rescue($err, [$$$($$('Parser'), 'SyntaxError')])) { + try { + if ($not(recover)) { + self.$raise() + } + } finally { Opal.pop_exception(); } + } else { throw $err; } + };; + return [ast, self.lexer.$comments(), self.lexer.$tokens()]; + } finally { + ((($writer = [nil]), $send(self.lexer, 'tokens=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)]), (($writer = [nil]), $send(self.lexer, 'comments=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)])) + }; })(); + }, -2); + self.$private(); + + $def(self, '$next_token', function $$next_token() { + var self = this, token = nil; + + + token = self.lexer.$advance(); + self.last_token = token; + return token; + }, 0); + + $def(self, '$check_kwarg_name', function $$check_kwarg_name(name_t) { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq(/^[a-z_]/, ($ret_or_1 = name_t['$[]'](0)))) { + return nil + } else if ($eqeqeq(/^[A-Z]/, $ret_or_1)) { + return self.$diagnostic("error", "argument_const", nil, name_t) + } else { + return nil + } + }, 1); + + $def(self, '$diagnostic', function $$diagnostic(level, reason, arguments$, location_t, highlights_ts) { + var $a, $b, self = this, _ = nil, location = nil, highlights = nil; + + + + if (highlights_ts == null) highlights_ts = [];; + $b = location_t, $a = $to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (location = ($a[1] == null ? nil : $a[1])), $b; + highlights = $send(highlights_ts, 'map', [], function $$2(token){var $c, $d, range = nil; + + + + if (token == null) token = nil;; + $d = token, $c = $to_ary($d), (_ = ($c[0] == null ? nil : $c[0])), (range = ($c[1] == null ? nil : $c[1])), $d; + return range;}, 1); + self.diagnostics.$process($$('Diagnostic').$new(level, reason, arguments$, location, highlights)); + if ($eqeq(level, "error")) { + return self.$yyerror() + } else { + return nil + }; + }, -5); + return $def(self, '$on_error', function $$on_error(error_token_id, error_value, value_stack) { + var $a, $b, self = this, token_name = nil, _ = nil, location = nil; + + + token_name = self.$token_to_str(error_token_id); + $b = error_value, $a = $to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (location = ($a[1] == null ? nil : $a[1])), $b; + return self.diagnostics.$process($$('Diagnostic').$new("error", "unexpected_token", $hash2(["token"], {"token": token_name}), location)); + }, 3); + })($nesting[0], $$$($$('Racc'), 'Parser'), $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $const_set = Opal.const_set, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $send2 = Opal.send2, $find_super = Opal.find_super; + + Opal.add_stubs('new,process,include?,type,remove,wrap,insert_before,insert_after,replace,freeze,join,extend,warn_of_deprecation,class,warned_of_deprecation=,-'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Rewriter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.source_rewriter = nil; + + + $def(self, '$rewrite', function $$rewrite(source_buffer, ast) { + var self = this; + + + self.source_rewriter = $$$($$('Source'), 'Rewriter').$new(source_buffer); + self.$process(ast); + return self.source_rewriter.$process(); + }, 2); + + $def(self, '$assignment?', function $Rewriter_assignment$ques$1(node) { + + return ["lvasgn", "ivasgn", "gvasgn", "cvasgn", "casgn"]['$include?'](node.$type()) + }, 1); + + $def(self, '$remove', function $$remove(range) { + var self = this; + + return self.source_rewriter.$remove(range) + }, 1); + + $def(self, '$wrap', function $$wrap(range, before, after) { + var self = this; + + return self.source_rewriter.$wrap(range, before, after) + }, 3); + + $def(self, '$insert_before', function $$insert_before(range, content) { + var self = this; + + return self.source_rewriter.$insert_before(range, content) + }, 2); + + $def(self, '$insert_after', function $$insert_after(range, content) { + var self = this; + + return self.source_rewriter.$insert_after(range, content) + }, 2); + + $def(self, '$replace', function $$replace(range, content) { + var self = this; + + return self.source_rewriter.$replace(range, content) + }, 2); + $const_set($nesting[0], 'DEPRECATION_WARNING', ["Parser::Rewriter is deprecated.", "Please update your code to use Parser::TreeRewriter instead"].$join("\n").$freeze()); + self.$extend($$('Deprecation')); + return $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $yield = $$initialize.$$p || nil, self = this, $writer = nil; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + self.$class().$warn_of_deprecation(); + + $writer = [true]; + $send($$$($$('Source'), 'Rewriter'), 'warned_of_deprecation=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + }, -1); + })($nesting[0], $$$($$$($$('Parser'), 'AST'), 'Processor'), $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/tree_rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $hash = Opal.hash, $def = Opal.def; + + Opal.add_stubs('new,process,include?,type,remove,wrap,insert_before,insert_after,replace'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'TreeRewriter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.source_rewriter = nil; + + + $def(self, '$rewrite', function $$rewrite(source_buffer, ast, $kwargs) { + var policy, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + policy = Opal.kwrestargs($kwargs, {});; + self.source_rewriter = $$$($$$($$('Parser'), 'Source'), 'TreeRewriter').$new(source_buffer, Opal.to_hash(policy)); + self.$process(ast); + return self.source_rewriter.$process(); + }, -3); + + $def(self, '$assignment?', function $TreeRewriter_assignment$ques$1(node) { + + return ["lvasgn", "ivasgn", "gvasgn", "cvasgn", "casgn"]['$include?'](node.$type()) + }, 1); + + $def(self, '$remove', function $$remove(range) { + var self = this; + + return self.source_rewriter.$remove(range) + }, 1); + + $def(self, '$wrap', function $$wrap(range, before, after) { + var self = this; + + return self.source_rewriter.$wrap(range, before, after) + }, 3); + + $def(self, '$insert_before', function $$insert_before(range, content) { + var self = this; + + return self.source_rewriter.$insert_before(range, content) + }, 2); + + $def(self, '$insert_after', function $$insert_after(range, content) { + var self = this; + + return self.source_rewriter.$insert_after(range, content) + }, 2); + return $def(self, '$replace', function $$replace(range, content) { + var self = this; + + return self.source_rewriter.$replace(range, content) + }, 2); + })($nesting[0], $$$($$$($$('Parser'), 'AST'), 'Processor'), $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $module = Opal.module; + + Opal.add_stubs('=~,require,raise'); + + if ($truthy($$('RUBY_VERSION')['$=~'](/^1\.[89]\./))) { + + self.$require("parser/version"); + self.$raise($$('LoadError'), "parser v" + ($$$($$('Parser'), 'VERSION')) + " cannot run on Ruby " + ($$('RUBY_VERSION')) + ".\n" + "Please upgrade to Ruby 2.0.0 or higher, or use an older version of the parser gem.\n"); + }; + self.$require("set"); + self.$require("racc/parser"); + self.$require("ast"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + + self.$require("parser/version"); + self.$require("parser/messages"); + self.$require("parser/deprecation"); + (function($base) { + var self = $module($base, 'AST'); + + + + self.$require("parser/ast/node"); + self.$require("parser/ast/processor"); + return self.$require("parser/meta"); + })($nesting[0]); + (function($base) { + var self = $module($base, 'Source'); + + + + self.$require("parser/source/buffer"); + self.$require("parser/source/range"); + self.$require("parser/source/comment"); + self.$require("parser/source/comment/associator"); + self.$require("parser/source/rewriter"); + self.$require("parser/source/rewriter/action"); + self.$require("parser/source/tree_rewriter"); + self.$require("parser/source/tree_rewriter/action"); + self.$require("parser/source/map"); + self.$require("parser/source/map/operator"); + self.$require("parser/source/map/collection"); + self.$require("parser/source/map/constant"); + self.$require("parser/source/map/variable"); + self.$require("parser/source/map/keyword"); + self.$require("parser/source/map/definition"); + self.$require("parser/source/map/method_definition"); + self.$require("parser/source/map/send"); + self.$require("parser/source/map/index"); + self.$require("parser/source/map/condition"); + self.$require("parser/source/map/ternary"); + self.$require("parser/source/map/for"); + self.$require("parser/source/map/rescue_body"); + self.$require("parser/source/map/heredoc"); + return self.$require("parser/source/map/objc_kwarg"); + })($nesting[0]); + self.$require("parser/syntax_error"); + self.$require("parser/clobbering_error"); + self.$require("parser/diagnostic"); + self.$require("parser/diagnostic/engine"); + self.$require("parser/static_environment"); + self.$require("parser/lexer"); + self.$require("parser/lexer/literal"); + self.$require("parser/lexer/stack_state"); + self.$require("parser/lexer/dedenter"); + (function($base) { + var self = $module($base, 'Builders'); + + + return self.$require("parser/builders/default") + })($nesting[0]); + self.$require("parser/context"); + self.$require("parser/max_numparam_stack"); + self.$require("parser/current_arg_stack"); + self.$require("parser/variables_stack"); + self.$require("parser/base"); + self.$require("parser/rewriter"); + return self.$require("parser/tree_rewriter"); + })($nesting[0], $nesting); +}; + +Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $not = Opal.not, $hash2 = Opal.hash2, $send = Opal.send, $rb_gt = Opal.rb_gt, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $hash = Opal.hash, $const_set = Opal.const_set, $to_ary = Opal.to_ary, $eqeq = Opal.eqeq, $slice = Opal.slice; + + Opal.add_stubs('require,end_with?,[],!,include?,diagnostic,extend_static,push,cmdarg,cond,unextend,pop,children,in_dynamic_block?,declared?,static_env,=~,expression,loc,has_ordinary_params?,max_numparam_stack,dup,stack,reverse_each,>,declare,register,to_i,new,each,split,empty?,[]=,-,+,compstmt,<<,preexe,nil?,begin_body,state=,alias,gvar,back_ref,undef_method,condition_mod,loop_mod,rescue_body,postexe,multi_assign,assign,array,op_assign,index,call_method,const_op_assignable,const_fetch,endless_method_name,def_endless_method,local_pop,in_def,in_def=,def_endless_singleton,logical_op,not_op,command_start=,in_kwarg,in_kwarg=,match_pattern,match_pattern_p,local_push,in_argdef=,in_block=,in_block,block,keyword_cmd,multi_lhs,begin,splat,concat,assignable,index_asgn,==,attr_asgn,const_global,const,symbol_internal,range_inclusive,range_exclusive,binary_op,unary_op,match_op,in_defined=,ternary,associate,declared_forward_args?,forwarded_args,block_pass,declared_anonymous_blockarg?,begin_keyword,condition,loop,case,case_match,for,in_class=,def_class,in_class,def_sclass,def_module,def_method,def_singleton,context,in_lambda,arg,restarg,size,procarg0,args,has_ordinary_params!,set,shadowarg,extend_dynamic,in_lambda=,call_lambda,has_numparams?,numargs,top,any?,when,in_pattern,if_guard,unless_guard,match_with_trailing_comma,array_pattern,find_pattern,hash_pattern,match_as,match_alt,const_pattern,match_rest,match_pair,match_label,match_nil_pattern,accessible,match_var,ident,pin,string_compose,dedent_string,dedent_level,string,character,xstring_compose,regexp_options,regexp_compose,words_compose,word,symbols_compose,string_internal,ivar,cvar,symbol,symbol_compose,respond_to?,negate,unary_num,integer,float,rational,complex,nil,self,true,false,__FILE__,__LINE__,__ENCODING__,nth_ref,declare_forward_args,forward_arg,check_kwarg_name,kwoptarg,kwarg,kwnilarg,kwrestarg,optarg,blockarg,declare_anonymous_blockarg,pair,pair_keyword,pair_label,pair_quoted,kwsplat,yyerrok'); + + self.$require("racc/parser.rb"); + self.$require("parser"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Ruby31'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), clist = nil, racc_action_table = nil, arr = nil, idx = nil, racc_action_check = nil, racc_action_pointer = nil, racc_action_default = nil, racc_goto_table = nil, racc_goto_check = nil, racc_goto_pointer = nil, racc_goto_default = nil, racc_reduce_table = nil, racc_reduce_n = nil, racc_shift_n = nil, racc_token_table = nil, racc_nt_base = nil, racc_use_result_var = nil, $proto = self.$$prototype; + + $proto.static_env = $proto.lexer = $proto.max_numparam_stack = $proto.context = $proto.current_arg_stack = $proto.builder = $proto.pattern_variables = $proto.last_token = $proto.pattern_hash_keys = nil; + + + $def(self, '$version', function $$version() { + + return 31 + }, 0); + + $def(self, '$default_encoding', function $$default_encoding() { + + return $$$($$('Encoding'), 'UTF_8') + }, 0); + + $def(self, '$endless_method_name', function $$endless_method_name(name_t) { + var self = this; + + if (($not(["===", "==", "!=", "<=", ">="]['$include?'](name_t['$[]'](0))) && ($truthy(name_t['$[]'](0)['$end_with?']("="))))) { + return self.$diagnostic("error", "endless_setter", nil, name_t) + } else { + return nil + } + }, 1); + + $def(self, '$local_push', function $$local_push() { + var self = this; + + + self.static_env.$extend_static(); + self.lexer.$cmdarg().$push(false); + self.lexer.$cond().$push(false); + return self.max_numparam_stack.$push($hash2(["static"], {"static": true})); + }, 0); + + $def(self, '$local_pop', function $$local_pop() { + var self = this; + + + self.static_env.$unextend(); + self.lexer.$cmdarg().$pop(); + self.lexer.$cond().$pop(); + return self.max_numparam_stack.$pop(); + }, 0); + + $def(self, '$try_declare_numparam', function $$try_declare_numparam(node) { + var self = this, name = nil, location = nil, raw_max_numparam_stack = nil; + + + name = node.$children()['$[]'](0); + if ((($truthy(name['$=~'](/^_[1-9]$/)) && ($not(self.$static_env()['$declared?'](name)))) && ($truthy(self.context['$in_dynamic_block?']())))) { + + location = node.$loc().$expression(); + if ($truthy(self.$max_numparam_stack()['$has_ordinary_params?']())) { + self.$diagnostic("error", "ordinary_param_defined", nil, [nil, location]) + }; + raw_max_numparam_stack = self.$max_numparam_stack().$stack().$dup(); + raw_max_numparam_stack.$pop(); + (function(){var $brk = Opal.new_brk(); try {return $send(raw_max_numparam_stack, 'reverse_each', [], function $$1(outer_scope){var self = $$1.$$s == null ? this : $$1.$$s, outer_scope_has_numparams = nil; + + + + if (outer_scope == null) outer_scope = nil;; + if ($truthy(outer_scope['$[]']("static"))) { + + Opal.brk(nil, $brk) + } else { + + outer_scope_has_numparams = $rb_gt(outer_scope['$[]']("value"), 0); + if ($truthy(outer_scope_has_numparams)) { + return self.$diagnostic("error", "numparam_used_in_outer_scope", nil, [nil, location]) + } else { + return nil + }; + };}, {$$arity: 1, $$s: self, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + self.$static_env().$declare(name); + self.$max_numparam_stack().$register(name['$[]'](1).$to_i()); + return true; + } else { + return false + }; + }, 1); + clist = ["-320,600,620,-119,1214,-121,-118,-320,-320,-320,221,222,1124,-320,-320", "-624,-320,239,620,-123,620,925,-624,-110,-320,-732,237,428,-124,311", "122,-122,430,429,717,311,-320,-320,620,-320,-320,-320,-320,-320,-116", "-117,-124,620,620,-116,1001,828,718,627,892,925,627,126,240,-732,-123", "833,125,-117,240,240,-320,-320,-320,-320,-320,-320,-320,-320,-320,-320", "-320,-320,-320,-320,-624,-123,-320,-320,-320,-124,687,-320,-119,-110", "-320,-121,-120,-320,1125,240,-720,135,-320,306,-320,-511,-320,-320,240", "-320,-320,-320,-320,-320,-320,-320,-110,-320,-112,-109,310,-320,-320", "-320,126,-120,310,-320,-320,125,-320,-320,-114,-110,-320,-320,-110,-113", "-320,-320,126,-115,126,990,-113,125,-320,125,-110,-122,-320,-320,-122", "-320,-320,-320,-320,-320,-118,126,126,-719,-107,1000,125,125,-116,-117", "-124,126,126,-116,-117,-124,125,125,-108,221,222,218,-320,-320,-320", "-320,-320,-320,-320,-320,-320,-320,-320,-320,-320,-320,221,222,-320", "-320,-320,311,687,-320,-719,-123,-320,-111,661,-320,-123,648,-119,925", "-320,-121,-320,-119,-320,-320,-121,-320,-320,-320,-320,-320,233,-320", "-723,-320,-628,-720,-629,221,222,-723,-723,-723,104,105,-723,-723,-723", "-320,-723,-120,-320,-320,-102,-320,-120,-320,-723,-723,-723,-723,-723", "663,-320,924,-88,-122,219,-112,-723,-723,522,-723,-723,-723,-723,-723", "-122,240,660,650,649,-122,-118,-111,-109,220,-744,-118,311,648,233,223", "310,-116,240,-117,1063,300,-723,-723,-723,-723,-723,-723,-723,-723,-723", "-723,-723,-723,-723,-723,233,682,-723,-723,-723,648,921,-723,106,107", "-723,104,105,-723,-723,662,-723,-124,-723,126,-723,-112,-723,-723,125", "-723,-723,-723,-723,-723,361,-723,-723,-723,-744,683,-719,-111,-109", "648,306,650,649,646,648,362,648,-723,-110,648,-723,-723,-723,-723,240", "-723,-744,-723,800,-320,-119,-112,-723,310,-112,-120,-320,-320,-320", "650,649,-320,-320,-320,892,-320,-112,-111,-109,859,-111,-109,-112,-320", "833,-320,-320,-320,875,106,107,919,-111,-109,-121,-320,-320,431,-320", "-320,-320,-320,-320,650,649,646,949,471,650,649,650,649,655,650,649", "653,920,1035,861,633,1063,233,-732,634,948,-320,-320,-320,-320,-320", "-320,-320,-320,-320,-320,-320,-320,-320,-320,240,-629,-320,-320,-320", "648,922,-320,-118,-635,-320,-119,-625,-320,-320,648,-320,-617,-320,-625", "-320,510,-320,-320,-617,-320,-320,-320,-320,-320,683,-320,682,-320,507", "506,-121,-118,-744,491,648,488,487,486,496,489,521,-320,-108,-623,-320", "-320,-320,-320,499,-320,-623,-320,126,-723,-117,612,-320,125,614,-122", "-723,-723,-723,650,649,651,-723,-723,633,-723,494,-625,960,650,649,664", "-617,-723,-723,504,503,507,506,-121,633,-119,500,523,960,-723,-723,524", "-723,-723,-723,-723,-723,239,650,649,659,491,-321,488,487,486,496,489", "-623,-321,600,491,240,488,487,486,499,489,-321,-723,-723,-723,-723,-723", "-723,-723,-723,-723,-723,-723,-723,-723,-723,558,-628,-723,-723,-723", "494,688,-723,570,126,-723,648,572,-723,125,710,507,506,-723,574,-723", "500,-723,-723,-114,-723,-723,-723,-723,-723,-614,-723,-723,-723,-321", "126,-123,-614,-614,-614,125,135,-614,-614,-614,-614,-614,-723,-107,-87", "-723,-723,-614,-723,-614,-723,-614,-614,-614,931,-116,485,-723,240,927", "-120,-614,-614,928,-614,-614,-614,-614,-614,585,650,649,646,586,-311", "227,-620,-621,227,950,951,-311,304,-620,-621,304,612,593,237,611,-311", "-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614", "-614,227,-614,-614,-614,227,-614,-614,592,315,-614,240,1188,-614,-614", "233,-614,590,-614,126,-614,638,-614,-614,125,-614,-614,-614,-614,-614", "-115,-614,-617,-614,-311,228,-620,-621,228,-617,-617,-617,-124,233,-617", "-617,-617,-614,-617,306,-614,-614,-614,-614,597,-614,-617,-614,-617", "-617,-617,612,-614,603,614,-614,228,264,-617,-617,228,-617,-617,-617", "-617,-617,606,227,240,227,615,-356,-619,-622,675,616,636,574,-356,-619", "-622,612,627,673,614,638,420,-356,-617,-617,-617,-617,-617,-617,-617", "-617,-617,-617,-617,-617,-617,-617,631,754,-617,-617,-617,227,-617,-617", "1149,1150,-617,499,630,-617,-617,632,-617,875,-617,640,-617,628,-617", "-617,665,-617,-617,-617,-617,-617,228,-617,228,-617,-356,-619,-622,668", "227,669,954,240,958,957,1197,1188,959,-617,-293,500,-617,-617,-617,-617", "638,-617,671,-617,672,-723,676,1056,-617,240,-109,-617,-723,-723,-723", "496,228,680,-723,-723,-320,-723,-118,956,264,499,681,-320,306,-723,-723", "694,-720,985,892,695,-320,114,113,115,116,-723,-723,240,-723,-723,-723", "-723,-723,228,221,222,697,118,117,119,261,700,507,506,263,262,701,500", "703,264,104,105,221,222,358,-723,-723,-723,-723,-723,-723,-723,-723", "-723,-723,-723,-723,-723,-723,-320,705,-723,-723,-723,-385,688,-723", "227,719,-723,720,261,-723,227,1164,263,262,-723,724,-723,226,-723,-723", "1162,-723,-723,-723,-723,-723,224,-723,-723,-723,726,102,90,93,94,732", "95,97,96,98,754,985,892,-723,91,101,-723,-723,90,-111,499,-723,85,733", "92,106,107,264,-723,264,91,-120,333,81,82,83,11,65,264,228,92,71,72", "264,240,228,75,-723,73,74,76,35,36,79,80,788,240,240,500,240,84,33,32", "114,113,115,116,-102,803,23,1056,240,606,281,282,10,53,335,12,118,117", "119,108,64,110,109,111,814,112,120,121,-320,104,105,49,50,48,-321,-320", "-723,819,-626,240,-720,-321,821,-723,-320,-626,280,279,-719,824,-321", "829,-723,45,-626,830,38,834,858,66,67,227,862,68,863,40,-294,876,602", "52,491,-723,488,487,486,558,489,520,24,558,888,892,910,102,90,93,94", "913,95,97,96,98,914,-320,240,917,91,101,240,-321,926,-723,943,-626,85", "944,92,106,107,945,962,46,47,333,81,82,83,11,65,964,300,970,71,72,972", "974,228,75,-716,73,74,76,35,36,79,80,572,574,496,814,240,84,33,32,114", "113,115,116,499,1159,23,488,487,486,306,489,10,53,335,12,118,117,119", "108,64,110,109,111,306,112,120,121,227,104,105,49,50,48,-627,519,-614", "507,506,814,264,-627,500,-614,520,892,987,988,-716,240,-627,240,-614", "45,998,240,38,-295,240,66,67,1009,1013,68,1159,40,488,487,486,52,489", "-716,-293,491,1017,488,487,486,24,489,700,718,1020,102,90,93,94,1022", "95,97,96,98,1024,228,1026,1026,91,101,240,-627,774,-614,240,240,85,1054", "92,106,107,1057,710,46,47,333,81,82,83,11,65,714,853,854,71,72,855,120", "121,75,-717,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32,114,113", "115,116,925,491,23,488,487,486,972,489,10,53,335,12,118,117,119,108", "64,110,109,111,1069,112,120,121,240,104,105,49,50,48,814,491,-617,488", "487,486,1086,489,710,-617,1088,1093,1094,1099,-717,1100,1101,714,-617", "45,-296,1114,38,1115,1116,66,67,240,240,68,240,40,240,240,240,52,925", "-717,710,491,1123,488,487,486,24,489,240,714,1129,102,90,93,94,1130", "95,97,96,98,1132,700,1135,1138,91,101,1140,1142,240,-617,-385,1154,85", "1165,92,106,107,1166,710,46,47,333,81,82,83,11,65,1026,1026,1026,71", "72,1173,1186,1189,75,1194,73,74,76,35,36,79,80,256,1195,694,1115,1205", "84,33,32,114,113,115,116,1205,700,23,129,130,131,132,133,10,53,335,12", "118,117,119,108,64,110,109,111,1208,112,120,121,1210,104,105,49,50,48", "264,268,269,270,271,281,282,276,277,272,273,1212,257,258,1214,1214,274", "275,240,45,1026,255,38,1205,-720,66,67,-719,1231,68,1214,40,261,1214", "267,52,263,262,1214,259,260,280,279,265,24,266,3,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32", "114,113,115,116,,,23,,,,,677,10,53,335,12,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277", "272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263", "262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,278,,-265,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72", ",,,75,,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32,114,113,115", "116,,,23,,,,,889,10,53,335,12,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257", "258,,,274,275,,45,,,337,,,66,67,,,68,,40,261,,267,52,263,262,,259,260", "280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,", "85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35", "36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,677,10,53,335,12,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269", "270,271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,337,,,66,67", ",,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82", "83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,918,10,53,335,12,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273", ",257,258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259", "260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278", ",,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74", "76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12", "118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268", "269,270,271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66", "67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81", "82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257", "258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260", "280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,", "85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35", "36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117", "119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270", "271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68", ",40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,7,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258,,", "274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279", "265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,240,278,,,,,85,,92", "106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79", "80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271", "281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40", "261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,", "104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258", ",,274,275,,45,,,337,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280", "279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,", "92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36", "79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271", "281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40", "261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,", "104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258", ",,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280", "279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,", "92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36", "79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271", "281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40", "261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,", "104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745,-745", ",,274,275,,45,,,38,,,66,67,,264,68,,40,261,,267,52,263,262,,259,260", "280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,261,,91,101,263,262", ",259,260,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,", "73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,264,491,23,488,487", "486,,489,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,264,,261,,,,263,262,710,259,260,,,,,,274,275,,45,,,38,", ",66,67,,,68,,40,261,,267,52,263,262,,259,260,,,265,24,266,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82", "83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745", "-745,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260", "280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85", ",92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36", "79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271", "281,282,276,277,272,273,,-745,-745,,,274,275,,45,,,38,,,66,67,,,68,", "40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,", "95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,", "104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,45,,,38,,,66,67,,,68,,40", "261,,267,52,263,262,,259,260,,,265,24,266,,,,102,90,93,94,,95,97,96", "98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71", "72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,", ",,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,264,268,269,270,271,281,282,276,,272,273,,,,,,274,275,,45,", ",38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266", ",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47", "7,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,264,268,269,270,271,281,282,,,272,273", ",,,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260", "280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85", ",92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36", "79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,-745,-745,-745", "-745,281,282,,,-745,-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40,261", ",267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95,97,96", "98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71", "72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,", ",,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274,275,,45", ",,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266", ",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47", "333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745", "-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259", "260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,", ",85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76", "35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,-745,-745", "-745,-745,281,282,,,-745,-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40", "261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65", ",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,", ",23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274,275", ",45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24", "266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106", "107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113", "115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121", ",104,105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274", "275,,245,,,253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,280,279,265", "250,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745", "-745,,,274,275,,245,,,253,,,66,67,,,68,,,261,,267,52,263,262,,259,260", "280,279,265,250,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84", "349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,245,", ",253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,,,,250,,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47", ",75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,", ",,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,264,,,,,,,,,,,,,,,,274,275,,245,,,253,,,66,67,,,68,,,261,,,52,263", "262,,259,260,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84", "349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,245,", ",253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,,,,250,,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,", ",,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,", ",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79", "80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108", "64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98", ",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,", "53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,", ",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,", "254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,436,,,,52,,,,,,", ",,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,", ",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79", "80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,", ",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35", "36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,,,,85,,92,106,107,-441,,46,47,,,,-441,-441,-441", ",,-441,-441,-441,,-441,,,,,,,,-441,-441,-441,-441,,,,,,,,,-441,-441", ",-441,-441,-441,-441,-441,,,,,,,,,,,,,,,,,,,,,,,-441,-441,-441,-441", "-441,-441,-441,-441,-441,-441,-441,-441,-441,-441,,,-441,-441,-441,", ",-441,,306,-441,,,-441,-441,,-441,,-441,,-441,,-441,-441,,-441,-441", "-441,-441,-441,,-441,-441,-441,,,,,,,,,,,,,,-441,,,-441,-441,,-441,", "-441,81,82,83,,65,,-441,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33", "32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,", "112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,", ",68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,", "81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,", ",84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66", "67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117", "119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,", ",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73", "74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,", ",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,", ",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-327,,46,47,,,,-327", "-327,-327,,,-327,-327,-327,,-327,,,,,,,,-327,,-327,-327,,,,,,,,,-327", "-327,,-327,-327,-327,-327,-327,,,,,,,,,,,,,,,,,,,,,,,-327,-327,-327", "-327,-327,-327,-327,-327,-327,-327,-327,-327,-327,-327,,,-327,-327,-327", ",,-327,,315,-327,,,-327,-327,,-327,,-327,,-327,,-327,-327,,-327,-327", "-327,-327,-327,,-327,,-327,,,,,,,,,,,,,,-327,,,-327,-327,,-327,,-327", "81,82,83,,65,,-327,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327", "112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,", ",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,", "91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355", "79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108", "64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,", "245,,,253,,,66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,", "53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,", ",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82", "83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,", ",52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33", "32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327", "112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,", ",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,", "91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36", "79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108", "64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98", ",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,797,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73", "74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,", ",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,", ",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,867,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82", "83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,", ",52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327", "112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,", ",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,", "91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355", "79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108", "64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98", ",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35", "36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,", ",,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,", ",,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,", ",,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,", ",,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96", "98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76", "354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117", "119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,", ",,,,,245,,,253,,,66,67,,,68,,324,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,", "118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,", ",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47", ",75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,", ",,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49", "50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,328,,,,,,250", ",,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121", ",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,797,,,", "52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33", "32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,240,,,81", "82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,", "84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66", "67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,", ",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,", "118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,", ",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47", ",75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,", "53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,", ",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49", "50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328", ",,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106", "107,,,46,47,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,", ",84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38", ",,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,", "91,101,,,,,,420,85,,92,106,107,,,46,47,81,82,83,,65,,,,71,72,,,,75,", "73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53", ",,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,", ",,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,", ",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116", ",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121", ",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,322,", "52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84", "349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,", ",66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96", "98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76", "354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117", "119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,", ",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73", "74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,", ",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,", ",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,", ",102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-275,,46", "47,,,,-275,-275,-275,,,-275,-275,-275,491,-275,488,487,486,496,489,", ",-275,-275,-275,,,,499,,,,,,-275,-275,,-275,-275,-275,-275,-275,,491", ",488,487,486,496,489,494,,,,,,,,499,504,503,507,506,,,,500,,491,,488", "487,486,496,489,-275,,,,,494,,-275,499,,,,306,-275,504,503,507,506,", ",,500,,,,,,,,,494,485,,,,-275,-275,,,,,507,506,,,,500,,,,-275,,,-275", ",81,82,83,-275,65,,485,,71,72,-275,,,75,,73,74,76,354,355,79,80,,,,", ",84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79", "80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95", "97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73", "74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,", "53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,", ",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,", ",,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,", "102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,", "102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,", "102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116", ",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121", ",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52", ",,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33", "32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84", "349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66", "67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,", ",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,", ",,,,245,,,253,,,66,67,,,68,,324,,,,52,,,328,,,,,,250,,,,,102,325,93", "94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,", ",,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121", ",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52", ",,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65", "92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,", ",,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66", "67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,", ",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,", ",,,,245,,,253,,,66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "560,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,", ",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,", ",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49", "50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328", ",,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65", "92,106,107,71,72,46,560,,75,,73,74,76,354,355,79,80,,,,,,84,349,357", "114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84", "349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66", "67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,", ",,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96", "98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76", "35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,", ",,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325", "93,94,,95,97,96,98,,,,,91,101,240,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,", "254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,", ",,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,", ",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79", "80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108", "64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98", ",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,", "53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,", ",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,", "254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,", ",,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,", ",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11,65,,,,71,72,,,,75,,73,74", "76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,,12,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,", "118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,", ",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47", ",75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53", ",,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,", ",,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,", ",,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48", ",,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,", ",,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,", "102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,", "102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116", ",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47", "81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114", "113,115,116,,,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40", ",,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,420,85", ",92,106,107,,,46,47,81,82,83,,65,,,,71,72,,,,75,,73,74,76,35,36,79,80", ",,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96", "98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76", "35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-725,,46,47,,,,-725,-725", "-725,,,-725,-725,-725,,-725,,,,,,,,-725,-725,-725,-725,-725,,,,,,,,-725", "-725,,-725,-725,-725,-725,-725,,,,,,,,,,,,,,,,,,,,,,,-725,-725,-725", "-725,-725,-725,-725,-725,-725,-725,-725,-725,-725,-725,,,-725,-725,-725", ",,-725,,,-725,,,-725,-725,,-725,,-725,,-725,,-725,-725,,-725,-725,-725", "-725,-725,,-725,-725,-725,,,,,,,,,,,,,,-725,,,-725,-725,-725,-725,,-725", "-724,-725,,,,,-725,-724,-724,-724,,,-724,-724,-724,,-724,,,,,,,,-724", "-724,-724,-724,-724,,,,114,113,115,116,-724,-724,,-724,-724,-724,-724", "-724,,,,,118,117,119,,,,,,,,,,,104,105,,,358,-724,-724,-724,-724,-724", "-724,-724,-724,-724,-724,-724,-724,-724,-724,,,-724,-724,-724,,,-724", ",,-724,,,-724,-724,,-724,,-724,,-724,,-724,-724,,-724,-724,-724,-724", "-724,,-724,-724,-724,,102,90,93,94,,95,97,96,98,,,,-724,91,101,-724", "-724,-724,-724,,-724,85,-724,92,106,107,-275,-724,81,82,83,11,65,-275", "-275,-275,71,72,-275,-275,-275,75,-275,73,74,76,35,36,79,80,-275,-275", "-275,-275,,84,33,32,114,113,115,116,-275,-275,23,-275,-275,-275,-275", "-275,10,53,9,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275", "-275,-275,,,-275,-275,-275,45,,-275,38,306,-275,66,67,-275,-275,68,-275", "40,-275,,-275,52,-275,-275,,-275,-275,-275,-275,-275,24,-275,-275,-275", ",102,90,93,94,,95,97,96,98,,,,-275,91,101,-275,-275,,-275,,-275,85,", "92,106,107,,-275,46,47,81,82,83,,65,,,,71,72,,,,75,,73,74,76,35,36,79", "80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,", ",,91,101,126,,,,,125,85,,92,106,107,-312,,46,47,,,,-312,-312,-312,,", "-312,-312,-312,,-312,,,,,,,,-312,,-312,-312,-312,,,,,,,,-312,-312,,-312", "-312,-312,-312,-312,,,,,,,,,,,,,,,,,,,,,,,-312,-312,-312,-312,-312,-312", "-312,-312,-312,-312,-312,-312,-312,-312,,,-312,-312,-312,,,-312,,,-312", ",,-312,-312,,-312,,-312,,-312,,-312,-312,,-312,-312,-312,-312,-312,", "-312,,-312,,,,,,,,,,,,,,-312,,,-312,-312,-312,-312,,-312,,-312,,81,82", "83,-312,65,,,,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33", "32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,", "112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,", ",68,,436,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,", ",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117", "119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,", ",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73", "74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,", ",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,", ",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,", ",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116", ",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104", "105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52", ",,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",436,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81", "82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84", "33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,", ",,,,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1107,,,253", ",,66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,", ",,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1146,,,253,,", "66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,", ",,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,", ",84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,253,,,66", "67,,,68,,,491,,488,487,486,496,489,,,,,,,,,499,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,588,,494,85,,92,106,107,81,82,83,,65,507,506,,71", "72,500,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116", ",,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", ",,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", ",,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254", ",,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,,,358", ",,,,,,,,,,,,,,,,,,,346,,,253,,,66,67,,,68,,,491,,488,487,486,496,489", ",,,,,,,,499,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,360,,494,85,,92", "106,107,81,82,83,,65,507,506,,71,72,500,,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342", ",,66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,", ",,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66", "67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81", "82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1146,,,253,,,66,67,,", "68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,400,64,110,109,401", ",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,407,,,402,,,253,,,66,67", ",,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68", ",,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357", "114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,,", ",,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85", "65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,341,,", ",,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65", "92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113", "115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121", ",104,105,,,358,,,,,,,,,,,,,,,,,,,,395,,,38,,,66,67,,,68,,40,,,,,,,,", ",,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106", "107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,350,,,118,117,119,400,64,110,109,401,,112,120,121,,104", "105,,,358,,,,,,,,,,,,,,,,,,,,402,,,253,,,66,67,,,68,,,,,,,,,,,,,,,,", ",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,185,196", "186,209,182,202,192,191,212,213,207,190,189,184,210,214,215,194,183", "197,201,203,195,188,,,,204,211,206,205,198,208,193,181,200,199,,,,,", "180,187,178,179,175,176,177,138,140,137,,139,,,,,,,,169,170,,166,148", "149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,,,,,,,,,163,162", ",147,168,165,164,173,160,161,155,153,145,167,146,,,174,102,,,,,,,,,", ",,,,101,185,196,186,209,182,202,192,191,212,213,207,190,189,184,210", "214,215,194,183,197,201,203,195,188,,,,204,211,206,205,198,208,193,181", "200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139,,,,,,,,169,170", ",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,,,,,", ",,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,,,174,102", ",,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213,207,190,189", "184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206,205,198,208", "193,181,200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139,,,,,", ",,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159", ",,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146", ",,174,102,,,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213,207", "190,189,184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206,205", "198,208,193,181,200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139", ",,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158", "159,,,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167", "146,,,174,102,,,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213", "207,190,189,184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206", "294,293,295,292,181,200,199,,,,,,180,187,178,179,289,290,291,287,140", "110,109,288,,112,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152", ",,,171,172,158,159,,,,,,299,,,,,,,,163,162,,147,168,165,164,173,160", "161,155,153,145,167,146,,,174,114,113,115,116,,,,,,491,,488,487,486", "496,489,118,117,119,774,,,,777,499,,,,,104,105,,,358,,,,,,,,,,,,,494", ",,,,,,776,,,747,507,506,,745,,500,746,,,,,,,,,,,,,,,,775,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,114,113,115,116,485,,85,,92,106,107,,,762", "763,,118,117,119,774,,,491,777,488,487,486,496,489,104,105,,,358,,,", "499,,,,,,,,,,,,,,,,776,,,747,,,494,745,,,746,,,,,504,503,507,506,,,", "500,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,", ",85,,92,106,107,,,762,763,,118,117,119,774,,,491,777,488,487,486,496", "489,104,105,,,358,,,,499,,,,,,,,,,,,,,,,776,,,747,,,494,745,,,746,,749", ",,504,503,507,506,,,,500,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,,777", "754,,,,,104,105,,,358,499,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,", "749,,,,,,,500,,,,,,,775,,,,102,755,93,94,,95,97,96,98,,,,,91,101,114", "113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,491,777,488", "487,486,496,489,104,105,,,358,,,,499,,,,,,,,,,,,,,,,776,,,747,,,494", "745,,,746,,,,,504,503,507,506,,,,500,,,,775,,,,102,90,93,94,,95,97,96", "98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119", "774,,,491,777,488,487,486,496,489,104,105,,,358,,,,499,,,,,,,,,,,,,", ",,776,,,747,,,494,745,,,746,,749,,,,,507,506,,,,500,,,,775,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762", "763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776", ",,747,,,,745,,,746,,749,,,,,,,491,,488,487,486,496,489,775,,,,102,90", "93,94,499,95,97,96,98,,,,,91,101,240,114,113,115,116,,85,,92,106,107", "494,,762,763,,,118,117,119,774,,507,506,777,,,500,,,104,105,,,358,,", ",,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,485,,,,,,,,,,,,,775,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,", "762,763,,118,117,119,774,,,,777,754,,,,,104,105,,,358,499,,,,,,,,,,", ",,,,,,,,776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775,,,,102,755,93", "94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763", ",118,117,119,774,,,,777,754,,,,,104,105,,,358,499,,,,,,,,,,,,,,,,,,", "776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775,,,,102,755,93,94,,95", "97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,762,763,185,196,186,209,182", "202,192,191,212,213,207,190,189,184,210,214,215,194,183,197,201,203", "195,188,,,,204,211,206,205,198,208,193,181,200,199,,,,,,180,187,178", "179,175,176,177,138,140,,,139,,,,,,,,169,170,,166,148,149,150,157,154", "156,,,151,152,,,,171,172,158,159,,,,,,,,,,,,,,163,162,,147,168,165,164", "173,160,161,155,153,145,167,146,,,174,114,113,115,116,,,491,,488,487", "486,496,489,,,,118,117,119,774,,499,,777,754,,,,,104,105,,,358,499,", ",,,,,,,494,,,,,,,,,,776,507,506,747,,,500,745,,,746,,749,,,,,,,500,", ",,,,,775,,,,102,755,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,", "85,,92,106,107,,,762,763,,118,117,119,774,,,,777,754,,,,,104,105,,,358", "499,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775", ",,,102,755,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106", "107,,,762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,", ",,,,,,,,776,,,747,,,,745,,,746,,,,,,,,,,,,,,,,775,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763,,118", "117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776,,,747,", ",,745,,,746,,,,,,,,,,,,,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101", "114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,,777,", ",,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,,,,,,", ",,,,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,", ",85,,92,106,107,,,762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358", ",,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,,,,,,,,,,,,,,775,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,", "762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,114,113,115", "116,,,,,,,,,776,,,747,118,117,119,745,,,746,,1053,,,,,104,105,,,358", ",,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107", ",,762,763,491,,488,487,486,496,489,,,,,102,90,93,94,499,95,97,96,98", ",,,,91,101,114,113,115,116,,,85,,92,106,107,494,,,,,118,117,119,,504", "503,507,506,,,,500,,104,105,,,358,,,,,,,,,,,,491,,488,487,486,496,489", ",,,,,,,,499,,,,,,491,485,488,487,486,496,489,,,,,,,,,499,494,102,90", "93,94,,95,97,96,98,,507,506,,91,101,500,,,,,494,85,,92,106,107,,,,504", "503,507,506,,,491,500,488,487,486,496,489,,491,,488,487,486,496,489", "499,,,,,485,,,499,,491,,488,487,486,496,489,,,,,,494,644,,499,485,,", ",494,504,503,507,506,,,,500,504,503,507,506,,,,500,494,,,,,,,,,504,503", "507,506,,,491,500,488,487,486,496,489,,,,,,,,,499,485,,,,,,,,485,,,", ",,,,,,,,,494,,,,485,,,,,,,507,506,872,469,,500,871,,,,,,,,169,170,,166", "148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,485", ",,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,842,469,174", ",843,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172", "158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153", "145,167,146,837,462,174,,838,,,,,,,,169,170,,166,148,149,150,157,154", "156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165", "164,173,160,161,155,153,145,167,146,465,469,174,,464,,,,,,,,169,170", ",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,", ",,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,729,469", "174,,730,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171", "172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155", "153,145,167,146,556,462,174,,557,,,,,,,,169,170,,166,148,149,150,157", "154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168", "165,164,173,160,161,155,153,145,167,146,458,462,174,,459,,,,,,,,169", "170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306", ",,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,556", "462,174,,557,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,", ",,171,172,158,159,,,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161", "155,153,145,167,146,729,469,174,,730,,,,,,,,169,170,,166,148,149,150", "157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147", "168,165,164,173,160,161,155,153,145,167,146,727,462,174,,728,,,,,,,", "169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,", ",,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146", "807,462,174,,808,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152", ",,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160", "161,155,153,145,167,146,810,469,174,,811,,,,,,,,169,170,,166,148,149", "150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162", ",147,168,165,164,173,160,161,155,153,145,167,146,1200,462,174,,1201", ",,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158", "159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145", "167,146,869,462,174,,870,,,,,,,,169,170,,166,148,149,150,157,154,156", ",,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164", "173,160,161,155,153,145,167,146,1202,469,174,,1203,,,,,,,,169,170,,166", "148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,", ",163,162,,147,168,165,164,173,160,161,155,153,145,167,146,839,469,174", ",840,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172", "158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153", "145,167,146,1218,469,174,,1217,,,,,,,,169,170,,166,148,149,150,157,154", "156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165", "164,173,160,161,155,153,145,167,146,727,462,174,,728,,,,,,,,169,170", ",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,", ",,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,,,174"]; + racc_action_table = (arr = $$$('Array').$new(28717, nil)); + idx = 0; + $send(clist, 'each', [], function $Ruby31$2(str){ + + + if (str == null) str = nil;; + return $send(str.$split(",", -1), 'each', [], function $$3(i){var $writer = nil; + + + + if (i == null) i = nil;; + if (!$truthy(i['$empty?']())) { + + $writer = [idx, i.$to_i()]; + $send(arr, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return (idx = $rb_plus(idx, 1));}, 1);}, 1); + clist = ["464,521,1016,837,1236,838,992,464,464,464,515,515,1053,464,464,289,464", "23,835,631,1087,1058,289,807,464,927,443,137,396,785,3,840,137,137,501", "31,464,464,1089,464,464,464,464,464,1104,1105,1108,384,385,392,850,622", "501,625,1092,932,1092,331,23,928,521,625,331,393,1058,927,464,464,464", "464,464,464,464,464,464,464,464,464,464,464,289,1165,464,464,464,443", "464,464,1200,807,464,1201,839,464,1053,928,840,9,464,31,464,932,464", "464,515,464,464,464,464,464,871,464,837,464,838,992,785,871,871,871", "1016,1202,31,871,871,1016,871,464,631,807,464,464,807,464,871,464,835", "396,1087,835,840,835,464,1087,807,464,871,871,1203,871,871,871,871,871", "1222,622,1089,839,392,850,622,1089,1104,1105,1108,384,385,1104,1105", "1108,384,385,393,981,981,12,871,871,871,871,871,871,871,871,871,871", "871,871,871,871,553,553,871,871,871,69,871,871,1202,1165,871,839,416", "871,1165,1127,1200,735,871,1201,871,1200,871,871,1201,871,871,871,871", "871,251,871,729,871,243,1203,244,641,641,729,729,729,358,358,729,729", "729,871,729,1202,871,871,802,871,1202,871,729,729,729,729,729,417,871", "735,802,871,14,808,729,729,246,729,729,729,729,729,1203,981,416,1127", "1127,1203,1222,810,979,15,251,1222,351,576,252,17,69,243,553,244,1127", "27,729,729,729,729,729,729,729,729,729,729,729,729,729,729,20,458,729", "729,729,656,729,729,358,358,729,48,48,729,729,417,729,246,729,641,729", "808,729,729,641,729,729,729,729,729,42,729,729,729,252,459,810,810,979", "947,351,576,576,576,658,45,414,729,458,413,729,729,729,729,53,729,20", "729,576,730,458,808,729,351,808,729,730,730,730,656,656,730,730,730", "1220,730,808,810,979,656,810,979,459,730,1220,730,730,730,1006,48,48", "727,810,979,459,730,730,216,730,730,730,730,730,947,947,947,756,229", "658,658,414,414,414,413,413,413,728,923,658,402,947,19,746,402,756,730", "730,730,730,730,730,730,730,730,730,730,730,730,730,746,44,730,730,730", "412,730,730,1006,231,730,727,291,730,730,418,730,288,730,291,730,235", "730,730,288,730,730,730,730,730,870,730,869,730,700,700,728,923,19,972", "415,972,972,972,972,972,245,730,44,290,730,730,730,730,972,730,290,730", "996,872,44,822,730,996,822,730,872,872,872,412,412,412,872,872,776,872", "972,291,776,418,418,418,288,872,872,972,972,972,972,870,931,869,972", "247,931,872,872,248,872,872,872,872,872,254,415,415,415,1022,634,1022", "1022,1022,1022,1022,290,634,362,914,972,914,914,914,1022,914,634,872", "872,872,872,872,872,872,872,872,872,872,872,872,872,305,43,872,872,872", "1022,872,872,319,389,872,411,320,872,389,914,1022,1022,872,323,872,1022", "872,872,362,872,872,872,872,872,108,872,872,872,634,5,362,108,108,108", "5,335,108,108,108,287,108,872,43,336,872,872,287,872,108,872,108,108", "108,744,43,1022,872,338,744,872,108,108,744,108,108,108,108,108,339", "411,411,411,340,347,286,294,295,29,759,759,347,286,294,295,29,376,346", "21,376,347,108,108,108,108,108,108,108,108,108,108,108,108,108,108,287", "345,108,108,108,1187,108,108,345,349,108,350,1187,108,108,352,108,345", "108,509,108,1187,108,108,509,108,108,108,108,108,21,108,111,108,347", "286,294,295,29,111,111,111,21,353,111,111,111,108,111,357,108,108,108", "108,359,108,111,108,111,111,111,377,108,366,377,108,345,368,111,111", "1187,111,111,111,111,111,371,442,374,404,378,54,293,292,442,379,404", "381,54,293,292,380,390,442,380,404,391,54,111,111,111,111,111,111,111", "111,111,111,111,111,111,111,395,939,111,111,111,394,111,111,1090,1090", "111,939,394,111,111,397,111,678,111,406,111,394,111,111,426,111,111", "111,111,111,442,111,404,111,54,293,292,432,1145,434,775,1157,775,775", "1157,1145,775,111,435,939,111,111,111,111,1145,111,437,111,440,465,444", "939,111,454,678,111,465,465,465,1132,394,456,465,465,811,465,678,775", "531,1132,457,811,466,465,465,472,811,823,823,473,811,762,762,762,762", "465,465,476,465,465,465,465,465,1145,383,383,477,762,762,762,531,478", "1132,1132,531,531,481,1132,482,532,762,762,16,16,762,465,465,465,465", "465,465,465,465,465,465,465,465,465,465,811,483,465,465,465,493,465", "465,1106,505,465,508,532,465,18,1106,532,532,465,511,465,18,465,465", "1106,465,465,465,465,465,18,465,465,465,517,762,762,762,762,525,762", "762,762,762,945,1190,1190,465,762,762,465,465,88,465,945,465,762,526", "762,762,762,533,465,534,88,465,387,387,387,387,387,387,535,1106,88,387", "387,536,561,18,387,842,387,387,387,387,387,387,387,562,563,567,945,583", "387,387,387,387,387,387,387,584,587,387,945,589,594,51,51,387,387,387", "387,387,387,387,387,387,387,387,387,598,387,387,387,843,387,387,387", "387,387,593,843,842,607,343,608,843,593,609,842,843,343,51,51,842,619", "593,623,842,387,343,624,387,626,653,387,387,363,661,387,663,387,670", "679,363,387,714,842,714,714,714,684,714,363,387,689,691,693,707,387", "387,387,387,712,387,387,387,387,713,843,715,722,387,387,731,593,740", "842,748,343,387,749,387,387,387,750,779,387,387,841,841,841,841,841", "841,782,784,790,841,841,791,792,363,841,400,841,841,841,841,841,841", "841,794,796,697,804,806,841,841,841,841,841,841,841,697,1099,841,1099", "1099,1099,809,1099,841,841,841,841,841,841,841,841,841,841,841,841,812", "841,841,841,242,841,841,841,841,841,344,242,400,697,697,813,816,344", "697,400,242,825,831,832,400,836,344,845,400,841,849,851,841,866,868", "841,841,877,890,841,1197,841,1197,1197,1197,841,1197,400,893,913,894", "913,913,913,841,913,897,899,902,841,841,841,841,903,841,841,841,841", "905,242,906,908,841,841,912,344,925,400,933,934,841,938,841,841,841", "941,913,841,841,236,236,236,236,236,236,913,649,649,236,236,649,649", "649,236,401,236,236,236,236,236,236,236,8,8,8,8,8,236,236,236,236,236", "236,236,946,494,236,494,494,494,965,494,236,236,236,236,236,236,236", "236,236,236,236,236,968,236,236,236,969,236,236,236,236,236,978,710", "401,710,710,710,983,710,494,401,986,993,995,1002,401,1003,1004,494,401", "236,1005,1031,236,1032,1037,236,236,1042,1043,236,1044,236,1045,1046", "1047,236,1051,401,710,1114,1052,1114,1114,1114,236,1114,1055,710,1059", "236,236,236,236,1066,236,236,236,236,1071,1072,1074,1075,236,236,1076", "1078,1079,401,1080,1096,236,1107,236,236,236,1110,1114,236,236,1103", "1103,1103,1103,1103,1103,1111,1112,1113,1103,1103,1124,1143,1146,1103", "1155,1103,1103,1103,1103,1103,1103,1103,25,1156,1161,1171,1172,1103", "1103,1103,1103,1103,1103,1103,1174,1177,1103,581,581,581,581,581,1103", "1103,1103,1103,1103,1103,1103,1103,1103,1103,1103,1103,1180,1103,1103", "1103,1181,1103,1103,1103,1103,1103,25,25,25,25,25,25,25,25,25,25,25", "1182,25,25,1183,1185,25,25,1199,1103,1204,25,1103,1206,1217,1103,1103", "1218,1224,1103,1225,1103,25,1226,25,1103,25,25,1227,25,25,25,25,25,1103", "25,1,,,1103,1103,1103,1103,,1103,1103,1103,1103,,,,,1103,1103,,25,,", ",,1103,,1103,1103,1103,,,1103,1103,997,997,997,997,997,997,,,,997,997", ",,,997,,997,997,997,997,997,997,997,373,373,373,373,373,997,997,997", "997,997,997,997,,,997,,,,,447,997,997,997,997,997,997,997,997,997,997", "997,997,,997,997,997,,997,997,997,997,997,447,447,447,447,447,447,447", "447,447,447,447,,447,447,,,447,447,,997,,,997,,,997,997,,,997,,997,447", ",447,997,447,447,,447,447,447,447,447,997,447,,,,997,997,997,997,,997", "997,997,997,,,,,997,997,,447,,447,,,997,,997,997,997,,,997,997,337,337", "337,337,337,337,,,,337,337,,,,337,,337,337,337,337,337,337,337,334,334", "334,334,334,337,337,337,337,337,337,337,,,337,,,,,692,337,337,337,337", "337,337,337,337,337,337,337,337,,337,337,337,,337,337,337,337,337,692", "692,692,692,692,692,692,692,692,692,692,,692,692,,,692,692,,337,,,337", ",,337,337,,,337,,337,692,,692,337,692,692,,692,692,692,692,692,337,692", ",,,337,337,337,337,,337,337,337,337,,,,,337,337,,692,,,,,337,,337,337", "337,,,337,337,38,38,38,38,38,38,,,,38,38,,,,38,,38,38,38,38,38,38,38", ",,,,,38,38,38,38,38,38,38,,,38,,,,,453,38,38,38,38,38,38,38,38,38,38", "38,38,,38,38,38,,38,38,38,38,38,453,453,453,453,453,453,453,453,453", "453,453,,453,453,,,453,453,,38,,,38,,,38,38,,,38,,38,453,,453,38,453", "453,,453,453,453,453,453,38,453,,,,38,38,38,38,,38,38,38,38,,,,,38,38", ",453,,,,,38,,38,38,38,,,38,38,642,642,642,642,642,642,,,,642,642,,,", "642,,642,642,642,642,642,642,642,,,,,,642,642,642,642,642,642,642,,", "642,,,,,723,642,642,642,642,642,642,642,642,642,642,642,642,,642,642", "642,,642,642,642,642,642,723,723,723,723,723,723,723,723,723,723,723", ",723,723,,,723,723,,642,,,642,,,642,642,,,642,,642,723,,723,642,723", "723,,723,723,723,723,723,642,723,,,,642,642,642,642,,642,642,642,642", ",,,,642,642,,723,,,,,642,,642,642,642,,,642,642,1068,1068,1068,1068", "1068,1068,,,,1068,1068,,,,1068,,1068,1068,1068,1068,1068,1068,1068,", ",,,,1068,1068,1068,1068,1068,1068,1068,,,1068,,,,,,1068,1068,1068,1068", "1068,1068,1068,1068,1068,1068,1068,1068,,1068,1068,1068,,1068,1068,1068", "1068,1068,817,817,817,817,817,817,817,817,817,817,817,,817,817,,,817", "817,,1068,,,1068,,,1068,1068,,,1068,,1068,817,,817,1068,817,817,,817", "817,817,817,817,1068,817,,,,1068,1068,1068,1068,,1068,1068,1068,1068", ",,,,1068,1068,,817,,,,,1068,,1068,1068,1068,,,1068,1068,372,372,372", "372,372,372,,,,372,372,,,,372,,372,372,372,372,372,372,372,,,,,,372", "372,372,372,372,372,372,,,372,,,,,,372,372,372,372,372,372,372,372,372", "372,372,372,,372,372,372,,372,372,372,372,372,874,874,874,874,874,874", "874,874,874,874,874,,874,874,,,874,874,,372,,,372,,,372,372,,,372,,372", "874,,874,372,874,874,,874,874,874,874,874,372,874,,,,372,372,372,372", ",372,372,372,372,,,,,372,372,,874,,,,,372,,372,372,372,,,372,372,973", "973,973,973,973,973,,,,973,973,,,,973,,973,973,973,973,973,973,973,", ",,,,973,973,973,973,973,973,973,,,973,,,,,,973,973,973,973,973,973,973", "973,973,973,973,973,,973,973,973,,973,973,973,973,973,317,317,317,317", "317,317,317,317,317,317,317,,317,317,,,317,317,,973,,,973,,,973,973", ",,973,,973,317,,317,973,317,317,,317,317,317,317,317,973,317,,,,973", "973,973,973,,973,973,973,973,,,,,973,973,,317,,,,,973,,973,973,973,", ",973,973,2,2,2,2,2,2,,,,2,2,,,,2,,2,2,2,2,2,2,2,,,,,,2,2,2,2,2,2,2,", ",2,,,,,,2,2,2,2,2,2,2,2,2,2,2,2,,2,2,2,,2,2,2,2,2,550,550,550,550,550", "550,550,550,550,550,550,,550,550,,,550,550,,2,,,2,,,2,2,,,2,,2,550,", "550,2,550,550,,550,550,550,550,550,2,550,,,,2,2,2,2,,2,2,2,2,,,,,2,2", "550,550,,,,,2,,2,2,2,,,2,2,230,230,230,230,230,230,,,,230,230,,,,230", ",230,230,230,230,230,230,230,,,,,,230,230,230,230,230,230,230,,,230", ",,,,,230,230,230,230,230,230,230,230,230,230,230,230,,230,230,230,,230", "230,230,230,230,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067", ",1067,1067,,,1067,1067,,230,,,230,,,230,230,,,230,,230,1067,,1067,230", "1067,1067,,1067,1067,1067,1067,1067,230,1067,,,,230,230,230,230,,230", "230,230,230,,,,,230,230,,1067,,,,,230,,230,230,230,,,230,230,342,342", "342,342,342,342,,,,342,342,,,,342,,342,342,342,342,342,342,342,,,,,", "342,342,342,342,342,342,342,,,342,,,,,,342,342,342,342,342,342,342,342", "342,342,342,342,,342,342,342,,342,342,342,342,342,1034,1034,1034,1034", "1034,1034,1034,1034,1034,1034,1034,,1034,1034,,,1034,1034,,342,,,342", ",,342,342,,,342,,342,1034,,1034,342,1034,1034,,1034,1034,1034,1034,1034", "342,1034,,,,342,342,342,342,,342,342,342,342,,,,,342,342,,1034,,,,,342", ",342,342,342,,,342,342,253,253,253,253,253,253,,,,253,253,,,,253,,253", "253,253,253,253,253,253,,,,,,253,253,253,253,253,253,253,,,253,,,,,", "253,253,253,253,253,253,253,253,253,253,253,253,,253,253,253,,253,253", "253,253,253,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,", "1033,1033,,,1033,1033,,253,,,253,,,253,253,,,253,,253,1033,,1033,253", "1033,1033,,1033,1033,1033,1033,1033,253,1033,,,,253,253,253,253,,253", "253,253,253,,,,,253,253,,1033,,,,,253,,253,253,253,,,253,253,1013,1013", "1013,1013,1013,1013,,,,1013,1013,,,,1013,,1013,1013,1013,1013,1013,1013", "1013,,,,,,1013,1013,1013,1013,1013,1013,1013,,,1013,,,,,,1013,1013,1013", "1013,1013,1013,1013,1013,1013,1013,1013,1013,,1013,1013,1013,,1013,1013", "1013,1013,1013,1011,1011,1011,1011,1011,1011,1011,1011,1011,1011,1011", ",1011,1011,,,1011,1011,,1013,,,1013,,,1013,1013,,,1013,,1013,1011,,1011", "1013,1011,1011,,1011,1011,1011,1011,1011,1013,1011,,,,1013,1013,1013", "1013,,1013,1013,1013,1013,,,,,1013,1013,,1011,,,,,1013,,1013,1013,1013", ",,1013,1013,1098,1098,1098,1098,1098,1098,,,,1098,1098,,,,1098,,1098", "1098,1098,1098,1098,1098,1098,,,,,,1098,1098,1098,1098,1098,1098,1098", ",,1098,,,,,,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098", ",1098,1098,1098,,1098,1098,1098,1098,1098,1010,1010,1010,1010,1010,1010", "1010,1010,1010,1010,1010,,1010,1010,,,1010,1010,,1098,,,1098,,,1098", "1098,,,1098,,1098,1010,,1010,1098,1010,1010,,1010,1010,1010,1010,1010", "1098,1010,,,,1098,1098,1098,1098,,1098,1098,1098,1098,,,,,1098,1098", ",1010,,,,,1098,,1098,1098,1098,,,1098,1098,1097,1097,1097,1097,1097", "1097,,,,1097,1097,,,,1097,,1097,1097,1097,1097,1097,1097,1097,,,,,,1097", "1097,1097,1097,1097,1097,1097,,,1097,,,,,,1097,1097,1097,1097,1097,1097", "1097,1097,1097,1097,1097,1097,,1097,1097,1097,,1097,1097,1097,1097,1097", "529,529,529,529,529,529,529,529,529,529,529,,529,529,,,529,529,,1097", ",,1097,,,1097,1097,,546,1097,,1097,529,,529,1097,529,529,,529,529,529", "529,529,1097,529,,,,1097,1097,1097,1097,,1097,1097,1097,1097,,,546,", "1097,1097,546,546,,546,546,,1097,,1097,1097,1097,,,1097,1097,1147,1147", "1147,1147,1147,1147,,,,1147,1147,,,,1147,,1147,1147,1147,1147,1147,1147", "1147,,,,,,1147,1147,1147,1147,1147,1147,1147,547,1115,1147,1115,1115", "1115,,1115,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147", ",1147,1147,1147,,1147,1147,1147,1147,1147,604,,547,,,,547,547,1115,547", "547,,,,,,604,604,,1147,,,1147,,,1147,1147,,,1147,,1147,604,,604,1147", "604,604,,604,604,,,604,1147,604,,,,1147,1147,1147,1147,,1147,1147,1147", "1147,,,,,1147,1147,,,,,,,1147,,1147,1147,1147,,,1147,1147,621,621,621", "621,621,621,,,,621,621,,,,621,,621,621,621,621,621,621,621,,,,,,621", "621,621,621,621,621,621,,,621,,,,,,621,621,621,621,621,621,621,621,621", "621,621,621,,621,621,621,,621,621,621,621,621,364,364,364,364,364,364", "364,364,364,364,364,,364,364,,,364,364,,621,,,621,,,621,621,,,621,,621", "364,,364,621,364,364,,364,364,364,364,364,621,364,,,,621,621,621,621", ",621,621,621,621,,,,,621,621,,,,,,,621,,621,621,621,,,621,621,892,892", "892,892,892,892,,,,892,892,,,,892,,892,892,892,892,892,892,892,,,,,", "892,892,892,892,892,892,892,,,892,,,,,,892,892,892,892,892,892,892,892", "892,892,892,892,,892,892,892,,892,892,892,892,892,365,365,365,365,365", "365,365,365,365,365,365,,365,365,,,365,365,,892,,,892,,,892,892,,,892", ",892,365,,365,892,365,365,,365,365,365,365,365,892,365,,,,892,892,892", "892,,892,892,892,892,,,,,892,892,,,,,,,892,,892,892,892,,,892,892,618", "618,618,618,618,618,,,,618,618,,,,618,,618,618,618,618,618,618,618,", ",,,,618,618,618,618,618,618,618,,,618,,,,,,618,618,618,618,618,618,618", "618,618,618,618,618,,618,618,618,,618,618,618,618,618,551,,,,,,,,,,", ",,,,,551,551,,618,,,618,,,618,618,,,618,,618,551,,551,618,551,551,,551", "551,,,551,618,551,,,,618,618,618,618,,618,618,618,618,,,,,618,618,,", ",,,,618,,618,618,618,,,618,618,1191,1191,1191,1191,1191,1191,,,,1191", "1191,,,,1191,,1191,1191,1191,1191,1191,1191,1191,,,,,,1191,1191,1191", "1191,1191,1191,1191,,,1191,,,,,,1191,1191,1191,1191,1191,1191,1191,1191", "1191,1191,1191,1191,,1191,1191,1191,,1191,1191,1191,1191,1191,549,549", "549,549,549,549,549,549,,549,549,,,,,,549,549,,1191,,,1191,,,1191,1191", ",,1191,,1191,549,,549,1191,549,549,,549,549,549,549,549,1191,549,,,", "1191,1191,1191,1191,,1191,1191,1191,1191,,,,,1191,1191,,,,,,,1191,,1191", "1191,1191,,,1191,1191,135,135,135,135,135,135,,,,135,135,,,,135,,135", "135,135,135,135,135,135,,,,,,135,135,135,135,135,135,135,,,135,,,,,", "135,135,135,135,135,135,135,135,135,135,135,135,,135,135,135,,135,135", "135,135,135,548,548,548,548,548,548,548,,,548,548,,,,,,548,548,,135", ",,135,,,135,135,,,135,,135,548,,548,135,548,548,,548,548,548,548,548", "135,548,,,,135,135,135,135,,135,135,135,135,,,,,135,135,,,,,,,135,,135", "135,135,,,135,135,218,218,218,218,218,218,,,,218,218,,,,218,,218,218", "218,218,218,218,218,,,,,,218,218,218,218,218,218,218,,,218,,,,,,218", "218,218,218,218,218,218,218,218,218,218,218,,218,218,218,,218,218,218", "218,218,545,545,545,545,545,545,545,,,545,545,,,,,,545,545,,218,,,218", ",,218,218,,,218,,218,545,,545,218,545,545,,545,545,545,545,545,218,545", ",,,218,218,218,218,,218,218,218,218,,,,,218,218,,,,,,,218,,218,218,218", ",,218,218,846,846,846,846,846,846,,,,846,846,,,,846,,846,846,846,846", "846,846,846,,,,,,846,846,846,846,846,846,846,,,846,,,,,,846,846,846", "846,846,846,846,846,846,846,846,846,,846,846,846,,846,846,846,846,846", "544,544,544,544,544,544,544,,,544,544,,,,,,544,544,,846,,,846,,,846", "846,,,846,,846,544,,544,846,544,544,,544,544,544,544,544,846,544,,,", "846,846,846,846,,846,846,846,846,,,,,846,846,,,,,,,846,,846,846,846", ",,846,846,857,857,857,857,857,857,,,,857,857,,,,857,,857,857,857,857", "857,857,857,,,,,,857,857,857,857,857,857,857,,,857,,,,,,857,857,857", "857,857,857,857,857,857,857,857,857,,857,857,857,,857,857,857,857,857", "543,543,543,543,543,543,543,,,543,543,,,,,,543,543,,857,,,857,,,857", "857,,,857,,857,543,,543,857,543,543,,543,543,543,543,543,857,543,,,", "857,857,857,857,,857,857,857,857,,,,,857,857,,,,,,,857,,857,857,857", ",,857,857,388,388,388,388,388,388,,,,388,388,,,,388,,388,388,388,388", "388,388,388,,,,,,388,388,388,388,388,388,388,,,388,,,,,,388,388,388", "388,388,388,388,388,388,388,388,388,,388,388,388,,388,388,388,388,388", "542,542,542,542,542,542,542,,,542,542,,,,,,542,542,,388,,,388,,,388", "388,,,388,,388,542,,542,388,542,542,,542,542,542,542,542,388,542,,,", "388,388,388,388,,388,388,388,388,,,,,388,388,,,,,,,388,,388,388,388", ",,388,388,991,991,991,991,991,991,,,,991,991,,,,991,,991,991,991,991", "991,991,991,,,,,,991,991,991,991,991,991,991,,,991,,,,,,991,991,991", "991,991,991,991,991,991,991,991,991,,991,991,991,,991,991,991,991,991", "541,541,541,541,541,541,541,,,541,541,,,,,,541,541,,991,,,991,,,991", "991,,,991,,991,541,,541,991,541,541,,541,541,541,541,541,991,541,,,", "991,991,991,991,,991,991,991,991,,,,,991,991,,,,920,920,920,991,920", "991,991,991,920,920,991,991,,920,,920,920,920,920,920,920,920,,,,,,920", "920,920,920,920,920,920,,,920,,,,,,,920,,,920,920,920,920,920,920,920", "920,,920,920,920,,920,920,920,920,920,540,540,540,540,540,540,540,,", "540,540,,,,,,540,540,,920,,,920,,,920,920,,,920,,,540,,540,920,540,540", ",540,540,540,540,540,920,540,,,,920,920,920,920,,920,920,920,920,,,", ",920,920,,,,921,921,921,920,921,920,920,920,921,921,920,920,,921,,921", "921,921,921,921,921,921,,,,,,921,921,921,921,921,921,921,,,921,,,,,", ",921,,,921,921,921,921,921,921,921,921,,921,921,921,,921,921,921,921", "921,530,530,530,530,530,530,530,530,530,530,530,,530,530,,,530,530,", "921,,,921,,,921,921,,,921,,,530,,530,921,530,530,,530,530,530,530,530", "921,530,,,,921,921,921,921,,921,921,921,921,,,,,921,921,,,,922,922,922", "921,922,921,921,921,922,922,921,921,,922,,922,922,922,922,922,922,922", ",,,,,922,922,922,922,922,922,922,,,922,,,,,,,922,,,922,922,922,922,922", "922,922,922,,922,922,922,,922,922,922,922,922,538,,,,,,,,,,,,,,,,538", "538,,922,,,922,,,922,922,,,922,,,538,,538,922,538,538,,538,538,,,,922", ",,,,922,922,922,922,,922,922,922,922,,,,,922,922,,,,733,733,733,922", "733,922,922,922,733,733,922,922,,733,,733,733,733,733,733,733,733,,", ",,,733,733,733,733,733,733,733,,,733,,,,,,,733,,,733,733,733,733,733", "733,733,733,,733,733,733,,733,733,733,733,733,539,,,,,,,,,,,,,,,,539", "539,,733,,,733,,,733,733,,,733,,,539,,,733,539,539,,539,539,,,,733,", ",,,733,733,733,733,,733,733,733,733,,,,,733,733,,,,732,732,732,733,732", "733,733,733,732,732,733,733,,732,,732,732,732,732,732,732,732,,,,,,732", "732,732,732,732,732,732,,,732,,,,,,,732,,,732,732,732,732,732,732,732", "732,,732,732,732,,732,732,732,732,732,537,,,,,,,,,,,,,,,,537,537,,732", ",,732,,,732,732,,,732,,,537,,537,732,537,537,,537,537,,,,732,,,,,732", "732,732,732,,732,732,732,732,,,,,732,732,,,,,,,732,,732,732,732,,,732", "732,333,333,333,333,333,,,,333,333,,,,333,,333,333,333,333,333,333,333", ",,,,,333,333,333,333,333,333,333,,,333,,,,,,333,333,,333,333,333,333", "333,333,333,333,333,,333,333,333,,333,333,333,333,333,,,,,,,,,,,,,,", ",,,,,333,,,333,,,333,333,,,333,,333,,,,333,,,,,,,,,333,,,,,333,333,333", "333,,333,333,333,333,,,,,333,333,,,,265,265,265,333,265,333,333,333", "265,265,333,333,,265,,265,265,265,265,265,265,265,,,,,,265,265,265,265", "265,265,265,,,265,,,,,,,265,,,265,265,265,265,265,265,265,265,,265,265", "265,,265,265,265,265,265,,,,,,,,,,,,,,,,,,,,265,,,265,,,265,265,,,265", ",,,,,265,,,,,,,,,265,,,,,265,265,265,265,,265,265,265,265,,,,,265,265", ",,,264,264,264,265,264,265,265,265,264,264,265,265,,264,,264,264,264", "264,264,264,264,,,,,,264,264,264,264,264,264,264,,,264,,,,,,,264,,,264", "264,264,264,264,264,264,264,,264,264,264,,264,264,264,264,264,,,,,,", ",,,,,,,,,,,,,264,,,264,,,264,264,,,264,,,,,,264,,,,,,,,,264,,,,,264", "264,264,264,,264,264,264,264,,,,,264,264,,,,263,263,263,264,263,264", "264,264,263,263,264,264,,263,,263,263,263,263,263,263,263,,,,,,263,263", "263,263,263,263,263,,,263,,,,,,,263,,,263,263,263,263,263,263,263,263", ",263,263,263,,263,263,263,263,263,,,,,,,,,,,,,,,,,,,,263,,,263,,,263", "263,,,263,,,,,,263,,,,,,,,,263,,,,,263,263,263,263,,263,263,263,263", ",,,,263,263,,,,262,262,262,263,262,263,263,263,262,262,263,263,,262", ",262,262,262,262,262,262,262,,,,,,262,262,262,262,262,262,262,,,262", ",,,,,,262,,,262,262,262,262,262,262,262,262,,262,262,262,,262,262,262", "262,262,,,,,,,,,,,,,,,,,,,,262,,,262,,,262,262,,,262,,,,,,262,,,,,,", ",,262,,,,,262,262,262,262,,262,262,262,262,,,,,262,262,,,,261,261,261", "262,261,262,262,262,261,261,262,262,,261,,261,261,261,261,261,261,261", ",,,,,261,261,261,261,261,261,261,,,261,,,,,,,261,,,261,261,261,261,261", "261,261,261,,261,261,261,,261,261,261,261,261,,,,,,,,,,,,,,,,,,,,261", ",,261,,,261,261,,,261,,,,,,261,,,,,,,,,261,,,,,261,261,261,261,,261", "261,261,261,,,,,261,261,,,,708,708,708,261,708,261,261,261,708,708,261", "261,,708,,708,708,708,708,708,708,708,,,,,,708,708,708,708,708,708,708", ",,708,,,,,,,708,,,708,708,708,708,708,708,708,708,,708,708,708,,708", "708,708,708,708,,,,,,,,,,,,,,,,,,,,708,,,708,,,708,708,,,708,,,,,,708", ",,,,,,,,708,,,,,708,708,708,708,,708,708,708,708,,,,,708,708,,,,260", "260,260,708,260,708,708,708,260,260,708,708,,260,,260,260,260,260,260", "260,260,,,,,,260,260,260,260,260,260,260,,,260,,,,,,,260,,,260,260,260", "260,260,260,260,260,,260,260,260,,260,260,260,260,260,,,,,,,,,,,,,,", ",,,,,260,,,260,,,260,260,,,260,,,,,,260,,,,,,,,,260,,,,,260,260,260", "260,,260,260,260,260,,,,,260,260,,,,694,694,694,260,694,260,260,260", "694,694,260,260,,694,,694,694,694,694,694,694,694,,,,,,694,694,694,694", "694,694,694,,,694,,,,,,,694,,,694,694,694,694,694,694,694,694,,694,694", "694,,694,694,694,694,694,,,,,,,,,,,,,,,,,,,,694,,,694,,,694,694,,,694", ",694,,,,694,,,,,,,,,694,,,,,694,694,694,694,,694,694,694,694,,,,,694", "694,,,,259,259,259,694,259,694,694,694,259,259,694,694,,259,,259,259", "259,259,259,259,259,,,,,,259,259,259,259,259,259,259,,,259,,,,,,,259", ",,259,259,259,259,259,259,259,259,,259,259,259,,259,259,259,259,259", ",,,,,,,,,,,,,,,,,,,259,,,259,,,259,259,,,259,,,,,,259,,,,,,,,,259,,", ",,259,259,259,259,,259,259,259,259,,,,,259,259,,,,258,258,258,259,258", "259,259,259,258,258,259,259,,258,,258,258,258,258,258,258,258,,,,,,258", "258,258,258,258,258,258,,,258,,,,,,,258,,,258,258,258,258,258,258,258", "258,,258,258,258,,258,258,258,258,258,,,,,,,,,,,,,,,,,,,,258,,,258,", ",258,258,,,258,,,,,,258,,,,,,,,,258,,,,,258,258,258,258,,258,258,258", "258,,,,,258,258,,,,257,257,257,258,257,258,258,258,257,257,258,258,", "257,,257,257,257,257,257,257,257,,,,,,257,257,257,257,257,257,257,,", "257,,,,,,,257,,,257,257,257,257,257,257,257,257,,257,257,257,,257,257", "257,257,257,,,,,,,,,,,,,,,,,,,,257,,,257,,,257,257,,,257,,,,,,257,,", ",,,,,,257,,,,,257,257,257,257,,257,257,257,257,,,,,257,257,,,,688,688", "688,257,688,257,257,257,688,688,257,257,,688,,688,688,688,688,688,688", "688,,,,,,688,688,688,688,688,688,688,,,688,,,,,,,688,,,688,688,688,688", "688,688,688,688,,688,688,688,,688,688,688,688,688,,,,,,,,,,,,,,,,,,", ",688,,,688,,,688,688,,,688,,,,,,688,,,,,,,,,688,,,,,688,688,688,688", ",688,688,688,688,,,,,688,688,,,,687,687,687,688,687,688,688,688,687", "687,688,688,,687,,687,687,687,687,687,687,687,,,,,,687,687,687,687,687", "687,687,,,687,,,,,,,687,,,687,687,687,687,687,687,687,687,,687,687,687", ",687,687,687,687,687,,,,,,,,,,,,,,,,,,,,687,,,687,,,687,687,,,687,,", ",,,687,,,,,,,,,687,,,,,687,687,687,687,,687,687,687,687,,,,,687,687", ",,,,,,687,,687,687,687,32,,687,687,,,,32,32,32,,,32,32,32,,32,,,,,,", ",32,32,32,32,,,,,,,,,32,32,,32,32,32,32,32,,,,,,,,,,,,,,,,,,,,,,,32", "32,32,32,32,32,32,32,32,32,32,32,32,32,,,32,32,32,,,32,,32,32,,,32,32", ",32,,32,,32,,32,32,,32,32,32,32,32,,32,32,32,,,,,,,,,,,,,,32,,,32,32", ",32,,32,683,683,683,,683,,32,,683,683,,,,683,,683,683,683,683,683,683", "683,,,,,,683,683,683,683,683,683,683,,,683,,,,,,,683,,,683,683,683,683", "683,683,683,683,,683,683,683,,683,683,683,683,683,,,,,,,,,,,,,,,,,,", ",683,,,683,,,683,683,,,683,,,,,,683,,,,,,,,,683,,,,,683,683,683,683", ",683,683,683,683,,,,,683,683,,,,682,682,682,683,682,683,683,683,682", "682,683,683,,682,,682,682,682,682,682,682,682,,,,,,682,682,682,682,682", "682,682,,,682,,,,,,,682,,,682,682,682,682,682,682,682,682,,682,682,682", ",682,682,682,682,682,,,,,,,,,,,,,,,,,,,,682,,,682,,,682,682,,,682,,", ",,,682,,,,,,,,,682,,,,,682,682,682,682,,682,682,682,682,,,,,682,682", ",,,681,681,681,682,681,682,682,682,681,681,682,682,,681,,681,681,681", "681,681,681,681,,,,,,681,681,681,681,681,681,681,,,681,,,,,,,681,,,681", "681,681,681,681,681,681,681,681,681,681,681,,681,681,681,681,681,,,", ",,,,,,,,,,,,,,,,681,,,681,,,681,681,,,681,,,,681,,681,,,681,,,,,,681", ",,,,681,681,681,681,,681,681,681,681,,,,,681,681,,,,956,956,956,681", "956,681,681,681,956,956,681,681,,956,,956,956,956,956,956,956,956,,", ",,,956,956,956,956,956,956,956,,,956,,,,,,,956,,,956,956,956,956,956", "956,956,956,,956,956,956,,956,956,956,956,956,,,,,,,,,,,,,,,,,,,,956", ",,956,,,956,956,,,956,,,,,,956,,,,,,,,,956,,,,,956,956,956,956,,956", "956,956,956,,,,,956,956,,,,962,962,962,956,962,956,956,956,962,962,956", "956,,962,,962,962,962,962,962,962,962,,,,,,962,962,962,962,962,962,962", ",,962,,,,,,,962,,,962,962,962,962,962,962,962,962,,962,962,962,,962", "962,962,962,962,,,,,,,,,,,,,,,,,,,,962,,,962,,,962,962,,,962,,,,,,962", ",,,,,,,,962,,,,,962,962,962,962,,962,962,962,962,,,,,962,962,,,,,,,962", ",962,962,962,33,,962,962,,,,33,33,33,,,33,33,33,,33,,,,,,,,33,,33,33", ",,,,,,,,33,33,,33,33,33,33,33,,,,,,,,,,,,,,,,,,,,,,,33,33,33,33,33,33", "33,33,33,33,33,33,33,33,,,33,33,33,,,33,,33,33,,,33,33,,33,,33,,33,", "33,33,,33,33,33,33,33,,33,,33,,,,,,,,,,,,,,33,,,33,33,,33,,33,34,34", "34,,34,,33,,34,34,,,,34,,34,34,34,34,34,34,34,,,,,,34,34,34,34,34,34", "34,,,34,,,,,,,34,,,34,34,34,34,34,34,34,34,34,34,34,34,,34,34,34,34", "34,,,,,,,,,,,,,,,,,,,,34,,,34,,,34,34,,,34,,34,,34,,34,,,34,,,,,,34", ",,,,34,34,34,34,,34,34,34,34,,,,,34,34,,,,680,680,680,34,680,34,34,34", "680,680,34,34,,680,,680,680,680,680,680,680,680,,,,,,680,680,680,680", "680,680,680,,,680,,,,,,,680,,,680,680,680,680,680,680,680,680,680,680", "680,680,,680,680,680,680,680,,,,,,,,,,,,,,,,,,,,680,,,680,,,680,680", ",,680,,680,,680,,680,,,680,,,,,,680,,,,,680,680,680,680,,680,680,680", "680,,,,,680,680,,,,677,677,677,680,677,680,680,680,677,677,680,680,", "677,,677,677,677,677,677,677,677,,,,,,677,677,677,677,677,677,677,,", "677,,,,,,,677,,,677,677,677,677,677,677,677,677,,677,677,677,,677,677", "677,677,677,,,,,,,,,,,,,,,,,,,,677,,,677,,,677,677,,,677,,,,,,677,,", ",,,,,,677,,,,,677,677,677,677,,677,677,677,677,,,,,677,677,,,,,,,677", ",677,677,677,,,677,677,676,676,676,676,676,,,,676,676,,,,676,,676,676", "676,676,676,676,676,,,,,,676,676,676,676,676,676,676,,,676,,,,,,676", "676,,676,676,676,676,676,676,676,676,676,,676,676,676,,676,676,676,676", "676,,,,,,,,,,,,,,,,,,,,676,,,676,,,676,676,,,676,,676,,,,676,,,,,,,", ",676,,,,,676,676,676,676,,676,676,676,676,,,,,676,676,,,,985,985,985", "676,985,676,676,676,985,985,676,676,,985,,985,985,985,985,985,985,985", ",,,,,985,985,985,985,985,985,985,,,985,,,,,,,985,,,985,985,985,985,985", "985,985,985,,985,985,985,,985,985,985,985,985,,,,,,,,,,,,,,,,,,,,985", ",,985,,,985,985,,,985,,,,,,985,,,,,,,,,985,,,,,985,985,985,985,,985", "985,985,985,,,,,985,985,,,,673,673,673,985,673,985,985,985,673,673,985", "985,,673,,673,673,673,673,673,673,673,,,,,,673,673,673,673,673,673,673", ",,673,,,,,,,673,,,673,673,673,673,673,673,673,673,673,673,673,673,,673", "673,673,673,673,,,,,,,,,,,,,,,,,,,,673,,,673,,,673,673,,,673,,673,,673", ",673,,,673,,,,,,673,,,,,673,673,673,673,,673,673,673,673,,,,,673,673", ",,,672,672,672,673,672,673,673,673,672,672,673,673,,672,,672,672,672", "672,672,672,672,,,,,,672,672,672,672,672,672,672,,,672,,,,,,,672,,,672", "672,672,672,672,672,672,672,,672,672,672,,672,672,672,672,672,,,,,,", ",,,,,,,,,,,,,672,,,672,,,672,672,,,672,,,,,,672,,,,,,,,,672,,,,,672", "672,672,672,,672,672,672,672,,,,,672,672,,,,990,990,990,672,990,672", "672,672,990,990,672,672,,990,,990,990,990,990,990,990,990,,,,,,990,990", "990,990,990,990,990,,,990,,,,,,,990,,,990,990,990,990,990,990,990,990", ",990,990,990,,990,990,990,990,990,,,,,,,,,,,,,,,,,,,,990,,,990,,,990", "990,,,990,,990,,,,990,,,,,,,,,990,,,,,990,990,990,990,,990,990,990,990", ",,,,990,990,,,,671,671,671,990,671,990,990,990,671,671,990,990,,671", ",671,671,671,671,671,671,671,,,,,,671,671,671,671,671,671,671,,,671", ",,,,,,671,,,671,671,671,671,671,671,671,671,,671,671,671,,671,671,671", "671,671,,,,,,,,,,,,,,,,,,,,671,,,671,,,671,671,,,671,,671,,,,671,,,", ",,,,,671,,,,,671,671,671,671,,671,671,671,671,,,,,671,671,,,,,,,671", ",671,671,671,,,671,671,669,669,669,669,669,,,,669,669,,,,669,,669,669", "669,669,669,669,669,,,,,,669,669,669,669,669,669,669,,,669,,,,,,669", "669,,669,669,669,669,669,669,669,669,669,,669,669,669,,669,669,669,669", "669,,,,,,,,,,,,,,,,,,,,669,,,669,,,669,669,,,669,,669,,,,669,,,,,,,", ",669,,,,,669,669,669,669,,669,669,669,669,,,,,669,669,,,,35,35,35,669", "35,669,669,669,35,35,669,669,,35,,35,35,35,35,35,35,35,,,,,,35,35,35", "35,35,35,35,,,35,,,,,,,35,,,35,35,35,35,35,35,35,35,35,35,35,35,,35", "35,35,35,35,,,,,,,,,,,,,,,,,,,,35,,,35,,,35,35,,,35,,35,,35,,35,,,35", ",,,,,35,,,,,35,35,35,35,,35,35,35,35,,,,,35,35,,,,250,250,250,35,250", "35,35,35,250,250,35,35,,250,,250,250,250,250,250,250,250,,,,,,250,250", "250,250,250,250,250,,,250,,,,,,,250,,,250,250,250,250,250,250,250,250", ",250,250,250,,250,250,250,250,250,,,,,,,,,,,,,,,,,,,,250,,,250,,,250", "250,,,250,,,,,,250,,,,,,,,,250,,,,,250,250,250,250,,250,250,250,250", ",,,,250,250,,,,36,36,36,250,36,250,250,250,36,36,250,250,,36,,36,36", "36,36,36,36,36,,,,,,36,36,36,36,36,36,36,,,36,,,,,,,36,,,36,36,36,36", "36,36,36,36,36,36,36,36,,36,36,36,36,36,,,,,,,,,,,,,,,,,,,,36,,,36,", ",36,36,,,36,,36,,36,,36,,,36,,,,,,36,,,,,36,36,36,36,,36,36,36,36,,", ",,36,36,,,,638,638,638,36,638,36,36,36,638,638,36,36,,638,,638,638,638", "638,638,638,638,,,,,,638,638,638,638,638,638,638,,,638,,,,,,,638,,,638", "638,638,638,638,638,638,638,638,638,638,638,,638,638,638,638,638,,,", ",,,,,,,,,,,,,,,,638,,,638,,,638,638,,,638,,638,,638,,638,,,638,,,,,", "638,,,,,638,638,638,638,,638,638,638,638,,,,,638,638,,,,1009,1009,1009", "638,1009,638,638,638,1009,1009,638,638,,1009,,1009,1009,1009,1009,1009", "1009,1009,,,,,,1009,1009,1009,1009,1009,1009,1009,,,1009,,,,,,,1009", ",,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,,1009", "1009,1009,1009,1009,,,,,,,,,,,,,,,,,,,,1009,,,1009,,,1009,1009,,,1009", ",,,1009,,1009,,,1009,,,,,,1009,,,,,1009,1009,1009,1009,,1009,1009,1009", "1009,,,,,1009,1009,,,,628,628,628,1009,628,1009,1009,1009,628,628,1009", "1009,,628,,628,628,628,628,628,628,628,,,,,,628,628,628,628,628,628", "628,,,628,,,,,,,628,,,628,628,628,628,628,628,628,628,628,628,628,628", ",628,628,628,628,628,,,,,,,,,,,,,,,,,,,,628,,,628,,,628,628,,,628,,628", ",628,,628,,,628,,,,,,628,,,,,628,628,628,628,,628,628,628,628,,,,,628", "628,,,,627,627,627,628,627,628,628,628,627,627,628,628,,627,,627,627", "627,627,627,627,627,,,,,,627,627,627,627,627,627,627,,,627,,,,,,,627", ",,627,627,627,627,627,627,627,627,,627,627,627,,627,627,627,627,627", ",,,,,,,,,,,,,,,,,,,627,,,627,,,627,627,,,627,,627,,,,627,,,,,,,,,627", ",,,,627,627,627,627,,627,627,627,627,,,,,627,627,,,,818,818,818,627", "818,627,627,627,818,818,627,627,,818,,818,818,818,818,818,818,818,,", ",,,818,818,818,818,818,818,818,,,818,,,,,,,818,,,818,818,818,818,818", "818,818,818,,818,818,818,,818,818,818,818,818,,,,,,,,,,,,,,,,,,,,818", ",,818,,,818,818,,,818,,,,,,818,,,,,,,,,818,,,,,818,818,818,818,,818", "818,818,818,,,,,818,818,,,,614,614,614,818,614,818,818,818,614,614,818", "818,,614,,614,614,614,614,614,614,614,,,,,,614,614,614,614,614,614,614", ",,614,,,,,,,614,,,614,614,614,614,614,614,614,614,614,614,614,614,,614", "614,614,614,614,,,,,,,,,,,,,,,,,,,,614,,,614,,,614,614,,,614,,,,,,614", ",,614,,,,,,614,,,,,614,614,614,614,,614,614,614,614,,,,,614,614,,,,611", "611,611,614,611,614,614,614,611,611,614,614,,611,,611,611,611,611,611", "611,611,,,,,,611,611,611,611,611,611,611,,,611,,,,,,,611,,,611,611,611", "611,611,611,611,611,611,611,611,611,,611,611,611,611,611,,,,,,,,,,,", ",,,,,,,,611,,,611,,,611,611,,,611,,611,,,,611,,,611,,,,,,611,,,,,611", "611,611,611,,611,611,611,611,,,,,611,611,,,,239,239,239,611,239,611", "611,611,239,239,611,611,,239,,239,239,239,239,239,239,239,,,,,,239,239", "239,239,239,239,239,,,239,,,,,,,239,,,239,239,239,239,239,239,239,239", ",239,239,239,,239,239,239,239,239,,,,,,,,,,,,,,,,,,,,239,,,239,,,239", "239,,,239,,,,,,239,,,,,,,,,239,,,,,239,239,239,239,,239,239,239,239", ",,,,239,239,239,,,605,605,605,239,605,239,239,239,605,605,239,239,,605", ",605,605,605,605,605,605,605,,,,,,605,605,605,605,605,605,605,,,605", ",,,,,,605,,,605,605,605,605,605,605,605,605,,605,605,605,,605,605,605", "605,605,,,,,,,,,,,,,,,,,,,,605,,,605,,,605,605,,,605,,,,,,605,,,,,,", ",,605,,,,,605,605,605,605,,605,605,605,605,,,,,605,605,,,,1035,1035", "1035,605,1035,605,605,605,1035,1035,605,605,,1035,,1035,1035,1035,1035", "1035,1035,1035,,,,,,1035,1035,1035,1035,1035,1035,1035,,,1035,,,,,,", "1035,,,1035,1035,1035,1035,1035,1035,1035,1035,,1035,1035,1035,,1035", "1035,1035,1035,1035,,,,,,,,,,,,,,,,,,,,1035,,,1035,,,1035,1035,,,1035", ",,,,,1035,,,,,,,,,1035,,,,,1035,1035,1035,1035,,1035,1035,1035,1035", ",,,,1035,1035,,,,603,603,603,1035,603,1035,1035,1035,603,603,1035,1035", ",603,,603,603,603,603,603,603,603,,,,,,603,603,603,603,603,603,603,", ",603,,,,,,,603,,,603,603,603,603,603,603,603,603,,603,603,603,,603,603", "603,603,603,,,,,,,,,,,,,,,,,,,,603,,,603,,,603,603,,,603,,,,,,603,,", ",,,,,,603,,,,,603,603,603,603,,603,603,603,603,,,,,603,603,,,,600,600", "600,603,600,603,603,603,600,600,603,603,,600,,600,600,600,600,600,600", "600,,,,,,600,600,600,600,600,600,600,,,600,,,,,,,600,,,600,600,600,600", "600,600,600,600,,600,600,600,,600,600,600,600,600,,,,,,,,,,,,,,,,,,", ",600,,,600,,,600,600,,,600,,,,,,600,,,,,,,,,600,,,,,600,600,600,600", ",600,600,600,600,,,,,600,600,,,,238,238,238,600,238,600,600,600,238", "238,600,600,,238,,238,238,238,238,238,238,238,,,,,,238,238,238,238,238", "238,238,,,238,,,,,,,238,,,238,238,238,238,238,238,238,238,,238,238,238", ",238,238,238,238,238,,,,,,,,,,,,,,,,,,,,238,,,238,,,238,238,,,238,,", ",,,238,,,,,,,,,238,,,,,238,238,238,238,,238,238,238,238,,,,,238,238", ",,,237,237,237,238,237,238,238,238,237,237,238,238,,237,,237,237,237", "237,237,237,237,,,,,,237,237,237,237,237,237,237,,,237,,,,,,,237,,,237", "237,237,237,237,237,237,237,,237,237,237,,237,237,237,237,237,,,,,,", ",,,,,,,,,,,,,237,,,237,,,237,237,,,237,,,,,,237,,,,,,,,,237,,,,,237", "237,237,237,,237,237,237,237,,,,,237,237,,,,590,590,590,237,590,237", "237,237,590,590,237,237,,590,,590,590,590,590,590,590,590,,,,,,590,590", "590,590,590,590,590,,,590,,,,,,,590,,,590,590,590,590,590,590,590,590", "590,590,590,590,,590,590,590,590,590,,,,,,,,,,,,,,,,,,,,590,,,590,,", "590,590,,,590,,590,,590,,590,,,590,,,,,,590,,,,,590,590,590,590,,590", "590,590,590,,,,,590,590,,,,,,,590,,590,590,590,,,590,590,580,580,580", "580,580,,,,580,580,,,,580,,580,580,580,580,580,580,580,,,,,,580,580", "580,580,580,580,580,,,580,,,,,,580,580,580,580,580,580,580,580,580,580", "580,580,,580,580,580,,580,580,580,580,580,,,,,,,,,,,,,,,,,,,,580,,,580", ",,580,580,,,580,,580,,,,580,,,,,,,,,580,,,,,580,580,580,580,,580,580", "580,580,,,,,580,580,,,,,,580,580,,580,580,580,,,580,580,574,574,574", ",574,,,,574,574,,,,574,,574,574,574,574,574,574,574,,,,,,574,574,574", "574,574,574,574,,,574,,,,,,,574,,,574,574,574,574,574,574,574,574,,574", "574,574,,574,574,574,574,574,,,,,,,,,,,,,,,,,,,,574,,,574,,,574,574", ",,574,,,,,,574,,,,,,,,,574,,,,,574,574,574,574,,574,574,574,574,,,,", "574,574,,,,369,369,369,574,369,574,574,574,369,369,574,574,,369,,369", "369,369,369,369,369,369,,,,,,369,369,369,369,369,369,369,,,369,,,,,", ",369,,,369,369,369,369,369,369,369,369,,369,369,369,,369,369,369,369", "369,,,,,,,,,,,,,,,,,,,,369,,,369,,,369,369,,,369,,,,,,369,,,,,,,,,369", ",,,,369,369,369,369,,369,369,369,369,,,,,369,369,,,,46,46,46,369,46", "369,369,369,46,46,369,369,,46,,46,46,46,46,46,46,46,,,,,,46,46,46,46", "46,46,46,,,46,,,,,,,46,,,46,46,46,46,46,46,46,46,,46,46,46,,46,46,46", "46,46,,,,,,,,,,,,,,,,,,,,46,,,46,,,46,46,,,46,,,,,,46,,,,,,,,,46,,,", ",46,46,46,46,,46,46,46,46,,,,,46,46,,,,572,572,572,46,572,46,46,46,572", "572,46,46,,572,,572,572,572,572,572,572,572,,,,,,572,572,572,572,572", "572,572,,,572,,,,,,,572,,,572,572,572,572,572,572,572,572,572,572,572", "572,,572,572,572,572,572,,,,,,,,,,,,,,,,,,,,572,,,572,,,572,572,,,572", ",,,572,,572,,,572,,,,,,572,,,,,572,572,572,572,,572,572,572,572,,,,", "572,572,,,,570,570,570,572,570,572,572,572,570,570,572,572,,570,,570", "570,570,570,570,570,570,,,,,,570,570,570,570,570,570,570,,,570,,,,,", ",570,,,570,570,570,570,570,570,570,570,570,570,570,570,,570,570,570", "570,570,,,,,,,,,,,,,,,,,,,,570,,,570,,,570,570,,,570,,570,,570,,570", ",,570,,,,,,570,,,,,570,570,570,570,,570,570,570,570,,,,,570,570,,,,47", "47,47,570,47,570,570,570,47,47,570,570,,47,,47,47,47,47,47,47,47,,,", ",,47,47,47,47,47,47,47,,,47,,,,,,,47,,,47,47,47,47,47,47,47,47,,47,47", "47,,47,47,47,47,47,,,,,,,,,,,,,,,,,,,,47,,,47,,,47,47,,,47,,,,,,47,", ",,,,,,,47,,,,,47,47,47,47,,47,47,47,47,,,,,47,47,,,,560,560,560,47,560", "47,47,47,560,560,47,47,,560,,560,560,560,560,560,560,560,,,,,,560,560", "560,560,560,560,560,,,560,,,,,,,560,,,560,560,560,560,560,560,560,560", ",560,560,560,,560,560,560,560,560,,,,,,,,,,,,,,,,,,,,560,,,560,,,560", "560,,,560,,,,,,560,,,,,,,,,560,,,,,560,560,560,560,,560,560,560,560", ",,,,560,560,,,,49,49,49,560,49,560,560,560,49,49,560,560,,49,,49,49", "49,49,49,49,49,,,,,,49,49,49,49,49,49,49,,,49,,,,,,,49,,,49,49,49,49", "49,49,49,49,,49,49,49,,49,49,49,49,49,,,,,,,,,,,,,,,,,,,,49,,,49,,,49", "49,,,49,,,,,,49,,,,,,,,,49,,,,,49,49,49,49,,49,49,49,49,,,,,49,49,,", ",,,,49,,49,49,49,555,,49,49,,,,555,555,555,,,555,555,555,703,555,703", "703,703,703,703,,,555,555,555,,,,703,,,,,,555,555,,555,555,555,555,555", ",701,,701,701,701,701,701,703,,,,,,,,701,703,703,703,703,,,,703,,1140", ",1140,1140,1140,1140,1140,555,,,,,701,,555,1140,,,,555,555,701,701,701", "701,,,,701,,,,,,,,,1140,703,,,,555,555,,,,,1140,1140,,,,1140,,,,555", ",,555,,283,283,283,555,283,,701,,283,283,555,,,283,,283,283,283,283", "283,283,283,,,,,,283,283,283,283,283,283,283,,,283,,,,,,,283,,,283,283", "283,283,283,283,283,283,,283,283,283,,283,283,283,283,283,,,,,,,,,,", ",,,,,,,,,283,,,283,,,283,283,,,283,,,,,,283,,,,,,,,,283,,,,,283,283", "283,283,,283,283,283,283,,,,,283,283,,,,224,224,224,283,224,283,283", "283,224,224,283,283,,224,,224,224,224,224,224,224,224,,,,,,224,224,224", "224,224,224,224,,,224,,,,,,,224,,,224,224,224,224,224,224,224,224,224", "224,224,224,,224,224,224,224,224,,,,,,,,,,,,,,,,,,,,224,,,224,,,224", "224,,,224,,224,,224,,224,,,224,,,,,,224,,,,,224,224,224,224,,224,224", "224,224,,,,,224,224,,,,223,223,223,224,223,224,224,224,223,223,224,224", ",223,,223,223,223,223,223,223,223,,,,,,223,223,223,223,223,223,223,", ",223,,,,,,,223,,,223,223,223,223,223,223,223,223,,223,223,223,,223,223", "223,223,223,,,,,,,,,,,,,,,,,,,,223,,,223,,,223,223,,,223,,,,,,223,,", ",,,,,,223,,,,,223,223,223,223,,223,223,223,223,,,,,223,223,,,,50,50", "50,223,50,223,223,223,50,50,223,223,,50,,50,50,50,50,50,50,50,,,,,,50", "50,50,50,50,50,50,,,50,,,,,,,50,,,50,50,50,50,50,50,50,50,,50,50,50", ",50,50,50,50,50,,,,,,,,,,,,,,,,,,,,50,,,50,,,50,50,,,50,,,,,,50,,,,", ",,,,50,,,,,50,50,50,50,,50,50,50,50,,,,,50,50,,,,222,222,222,50,222", "50,50,50,222,222,50,50,,222,,222,222,222,222,222,222,222,,,,,,222,222", "222,222,222,222,222,,,222,,,,,,,222,,,222,222,222,222,222,222,222,222", ",222,222,222,,222,222,222,222,222,,,,,,,,,,,,,,,,,,,,222,,,222,,,222", "222,,,222,,,,,,222,,,,,,,,,222,,,,,222,222,222,222,,222,222,222,222", ",,,,222,222,,,,72,72,72,222,72,222,222,222,72,72,222,222,,72,,72,72", "72,72,72,72,72,,,,,,72,72,72,72,72,72,72,,,72,,,,,,,72,,,72,72,72,72", "72,72,72,72,,72,72,72,,72,72,72,72,72,,,,,,,,,,,,,,,,,,,,72,,,72,,,72", "72,,,72,,,,,,72,,,,,,,,,72,,,,,72,72,72,72,,72,72,72,72,,,,,72,72,,", ",71,71,71,72,71,72,72,72,71,71,72,72,,71,,71,71,71,71,71,71,71,,,,,", "71,71,71,71,71,71,71,,,71,,,,,,,71,,,71,71,71,71,71,71,71,71,,71,71", "71,,71,71,71,71,71,,,,,,,,,,,,,,,,,,,,71,,,71,,,71,71,,,71,,,,,,71,", ",,,,,,,71,,,,,71,71,71,71,,71,71,71,71,,,,,71,71,,,,436,436,436,71,436", "71,71,71,436,436,71,71,,436,,436,436,436,436,436,436,436,,,,,,436,436", "436,436,436,436,436,,,436,,,,,,,436,,,436,436,436,436,436,436,436,436", ",436,436,436,,436,436,436,436,436,,,,,,,,,,,,,,,,,,,,436,,,436,,,436", "436,,,436,,,,,,436,,,,,,,,,436,,,,,436,436,436,436,,436,436,436,436", ",,,,436,436,,,,68,68,68,436,68,436,436,436,68,68,436,436,,68,,68,68", "68,68,68,68,68,,,,,,68,68,68,68,68,68,68,,,68,,,,,,,68,,,68,68,68,68", "68,68,68,68,68,68,68,68,,68,68,68,68,68,,,,,,,,,,,,,,,,,,,,68,,,68,", ",68,68,,,68,,,,,,68,,,68,,,,,,68,,,,,68,68,68,68,,68,68,68,68,,,,,68", "68,,,,407,407,407,68,407,68,68,68,407,407,68,68,,407,,407,407,407,407", "407,407,407,,,,,,407,407,407,407,407,407,407,,,407,,,,,,,407,,,407,407", "407,407,407,407,407,407,,407,407,407,,407,407,407,407,407,,,,,,,,,,", ",,,,,,,,,407,,,407,,,407,407,,,407,,,,,,407,,,,,,,,,407,,,,,407,407", "407,407,,407,407,407,407,,,,,407,407,,,,847,847,847,407,847,407,407", "407,847,847,407,407,,847,,847,847,847,847,847,847,847,,,,,,847,847,847", "847,847,847,847,,,847,,,,,,,847,,,847,847,847,847,847,847,847,847,,847", "847,847,,847,847,847,847,847,,,,,,,,,,,,,,,,,,,,847,,,847,,,847,847", ",,847,,,,,,847,,,,,,,,,847,,,,,847,847,847,847,,847,847,847,847,,,,", "847,847,,,,276,276,276,847,276,847,847,847,276,276,847,847,,276,,276", "276,276,276,276,276,276,,,,,,276,276,276,276,276,276,276,,,276,,,,,", ",276,,,276,276,276,276,276,276,276,276,,276,276,276,,276,276,276,276", "276,,,,,,,,,,,,,,,,,,,,276,,,276,,,276,276,,,276,,,,,,276,,,,,,,,,276", ",,,,276,276,276,276,,276,276,276,276,,,,,276,276,,,,275,275,275,276", "275,276,276,276,275,275,276,276,,275,,275,275,275,275,275,275,275,,", ",,,275,275,275,275,275,275,275,,,275,,,,,,,275,,,275,275,275,275,275", "275,275,275,,275,275,275,,275,275,275,275,275,,,,,,,,,,,,,,,,,,,,275", ",,275,,,275,275,,,275,,,,,,275,,,,,,,,,275,,,,,275,275,275,275,,275", "275,275,275,,,,,275,275,,,,67,67,67,275,67,275,275,275,67,67,275,275", ",67,,67,67,67,67,67,67,67,,,,,,67,67,67,67,67,67,67,,,67,,,,,,,67,,", "67,67,67,67,67,67,67,67,67,67,67,67,,67,67,67,67,67,,,,,,,,,,,,,,,,", ",,,67,,,67,,,67,67,,,67,,67,,,,67,,,67,,,,,,67,,,,,67,67,67,67,,67,67", "67,67,,,,,67,67,,,,,,,67,,67,67,67,,,67,67,66,66,66,66,66,,,,66,66,", ",,66,,66,66,66,66,66,66,66,,,,,,66,66,66,66,66,66,66,,,66,,,,,,66,66", ",66,66,66,66,66,66,66,66,66,,66,66,66,,66,66,66,66,66,,,,,,,,,,,,,,", ",,,,,66,,,66,,,66,66,,,66,,66,,,,66,,,,,,,,,66,,,,,66,66,66,66,,66,66", "66,66,,,,,66,66,,,,299,299,299,66,299,66,66,66,299,299,66,66,,299,,299", "299,299,299,299,299,299,,,,,,299,299,299,299,299,299,299,,,299,,,,,", ",299,,,299,299,299,299,299,299,299,299,,299,299,299,,299,299,299,299", "299,,,,,,,,,,,,,,,,,,,,299,,,299,,,299,299,,,299,,,,,,299,,,,,,,,,299", ",,,,299,299,299,299,,299,299,299,299,,,,,299,299,,,,274,274,274,299", "274,299,299,299,274,274,299,299,,274,,274,274,274,274,274,274,274,,", ",,,274,274,274,274,274,274,274,,,274,,,,,,,274,,,274,274,274,274,274", "274,274,274,,274,274,274,,274,274,274,274,274,,,,,,,,,,,,,,,,,,,,274", ",,274,,,274,274,,,274,,,,,,274,,,,,,,,,274,,,,,274,274,274,274,,274", "274,274,274,,,,,274,274,,,,867,867,867,274,867,274,274,274,867,867,274", "274,,867,,867,867,867,867,867,867,867,,,,,,867,867,867,867,867,867,867", ",,867,,,,,,,867,,,867,867,867,867,867,867,867,867,,867,867,867,,867", "867,867,867,867,,,,,,,,,,,,,,,,,,,,867,,,867,,,867,867,,,867,,,,,,867", ",,,,,,,,867,,,,,867,867,867,867,,867,867,867,867,,,,,867,867,,,,24,24", "24,867,24,867,867,867,24,24,867,867,,24,,24,24,24,24,24,24,24,,,,,,24", "24,24,24,24,24,24,,,24,,,,,,,24,,,24,24,24,24,24,24,24,24,,24,24,24", ",24,24,24,24,24,,,,,,,,,,,,,,,,,,,,24,,,24,,,24,24,,,24,,,,,,24,,,,", ",,,,24,,,,,24,24,24,24,,24,24,24,24,,,,,24,24,,,,273,273,273,24,273", "24,24,24,273,273,24,24,,273,,273,273,273,273,273,273,273,,,,,,273,273", "273,273,273,273,273,,,273,,,,,,,273,,,273,273,273,273,273,273,273,273", ",273,273,273,,273,273,273,273,273,,,,,,,,,,,,,,,,,,,,273,,,273,,,273", "273,,,273,,,,,,273,,,,,,,,,273,,,,,273,273,273,273,,273,273,273,273", ",,,,273,273,,,,788,788,788,273,788,273,273,273,788,788,273,273,,788", ",788,788,788,788,788,788,788,,,,,,788,788,788,788,788,788,788,,,788", ",,,,,,788,,,788,788,788,788,788,788,788,788,788,788,788,788,,788,788", "788,788,788,,,,,,,,,,,,,,,,,,,,788,,,788,,,788,788,,,788,,788,,788,", "788,,,788,,,,,,788,,,,,788,788,788,788,,788,788,788,788,,,,,788,788", ",,,272,272,272,788,272,788,788,788,272,272,788,788,,272,,272,272,272", "272,272,272,272,,,,,,272,272,272,272,272,272,272,,,272,,,,,,,272,,,272", "272,272,272,272,272,272,272,,272,272,272,,272,272,272,272,272,,,,,,", ",,,,,,,,,,,,,272,,,272,,,272,272,,,272,,,,,,272,,,,,,,,,272,,,,,272", "272,272,272,,272,272,272,272,,,,,272,272,,,,875,875,875,272,875,272", "272,272,875,875,272,272,,875,,875,875,875,875,875,875,875,,,,,,875,875", "875,875,875,875,875,,,875,,,,,,,875,,,875,875,875,875,875,875,875,875", ",875,875,875,,875,875,875,875,875,,,,,,,,,,,,,,,,,,,,875,,,875,,,875", "875,,,875,,,,,,875,,,,,,,,,875,,,,,875,875,875,875,,875,875,875,875", ",,,,875,875,,,,306,306,306,875,306,875,875,875,306,306,875,875,,306", ",306,306,306,306,306,306,306,,,,,,306,306,306,306,306,306,306,,,306", ",,,,,,306,,,306,306,306,306,306,306,306,306,306,306,306,306,,306,306", "306,306,306,,,,,,,,,,,,,,,,,,,,306,,,306,,,306,306,,,306,,306,,306,", "306,,,306,,,,,,306,,,,,306,306,306,306,,306,306,306,306,,,,,306,306", ",,,888,888,888,306,888,306,306,306,888,888,306,306,,888,,888,888,888", "888,888,888,888,,,,,,888,888,888,888,888,888,888,,,888,,,,,,,888,,,888", "888,888,888,888,888,888,888,,888,888,888,,888,888,888,888,888,,,,,,", ",,,,,,,,,,,,,888,,,888,,,888,888,,,888,,,,,,888,,,,,,,,,888,,,,,888", "888,888,888,,888,888,888,888,,,,,888,888,,,,889,889,889,888,889,888", "888,888,889,889,888,888,,889,,889,889,889,889,889,889,889,,,,,,889,889", "889,889,889,889,889,,,889,,,,,,,889,,,889,889,889,889,889,889,889,889", ",889,889,889,,889,889,889,889,889,,,,,,,,,,,,,,,,,,,,889,,,889,,,889", "889,,,889,,,,,,889,,,,,,,,,889,,,,,889,889,889,889,,889,889,889,889", ",,,,889,889,,,,307,307,307,889,307,889,889,889,307,307,889,889,,307", ",307,307,307,307,307,307,307,,,,,,307,307,307,307,307,307,307,,,307", ",,,,,,307,,,307,307,307,307,307,307,307,307,307,307,307,307,,307,307", "307,307,307,,,,,,,,,,,,,,,,,,,,307,,,307,,,307,307,,,307,,307,,307,", "307,,,307,,,,,,307,,,,,307,307,307,307,,307,307,307,307,,,,,307,307", ",,,315,315,315,307,315,307,307,307,315,315,307,307,,315,,315,315,315", "315,315,315,315,,,,,,315,315,315,315,315,315,315,,,315,,,,,,,315,,,315", "315,315,315,315,315,315,315,315,315,315,315,,315,315,315,315,315,,,", ",,,,,,,,,,,,,,,,315,,,315,,,315,315,,,315,,315,,315,,315,,,315,,,,,", "315,,,,,315,315,315,315,,315,315,315,315,,,,,315,315,315,,,271,271,271", "315,271,315,315,315,271,271,315,315,,271,,271,271,271,271,271,271,271", ",,,,,271,271,271,271,271,271,271,,,271,,,,,,,271,,,271,271,271,271,271", "271,271,271,,271,271,271,,271,271,271,271,271,,,,,,,,,,,,,,,,,,,,271", ",,271,,,271,271,,,271,,,,,,271,,,,,,,,,271,,,,,271,271,271,271,,271", "271,271,271,,,,,271,271,,,,270,270,270,271,270,271,271,271,270,270,271", "271,,270,,270,270,270,270,270,270,270,,,,,,270,270,270,270,270,270,270", ",,270,,,,,,,270,,,270,270,270,270,270,270,270,270,,270,270,270,,270", "270,270,270,270,,,,,,,,,,,,,,,,,,,,270,,,270,,,270,270,,,270,,,,,,270", ",,,,,,,,270,,,,,270,270,270,270,,270,270,270,270,,,,,270,270,,,,269", "269,269,270,269,270,270,270,269,269,270,270,,269,,269,269,269,269,269", "269,269,,,,,,269,269,269,269,269,269,269,,,269,,,,,,,269,,,269,269,269", "269,269,269,269,269,,269,269,269,,269,269,269,269,269,,,,,,,,,,,,,,", ",,,,,269,,,269,,,269,269,,,269,,,,,,269,,,,,,,,,269,,,,,269,269,269", "269,,269,269,269,269,,,,,269,269,,,,322,322,322,269,322,269,269,269", "322,322,269,269,,322,,322,322,322,322,322,322,322,,,,,,322,322,322,322", "322,322,322,,,322,,,,,,,322,,,322,322,322,322,322,322,322,322,,322,322", "322,,322,322,322,322,322,,,,,,,,,,,,,,,,,,,,322,,,322,,,322,322,,,322", ",,,,,322,,,,,,,,,322,,,,,322,322,322,322,,322,322,322,322,,,,,322,322", ",,,324,324,324,322,324,322,322,322,324,324,322,322,,324,,324,324,324", "324,324,324,324,,,,,,324,324,324,324,324,324,324,,,324,,,,,,,324,,,324", "324,324,324,324,324,324,324,,324,324,324,,324,324,324,324,324,,,,,,", ",,,,,,,,,,,,,324,,,324,,,324,324,,,324,,,,,,324,,,,,,,,,324,,,,,324", "324,324,324,,324,324,324,324,,,,,324,324,,,,327,327,327,324,327,324", "324,324,327,327,324,324,,327,,327,327,327,327,327,327,327,,,,,,327,327", "327,327,327,327,327,,,327,,,,,,,327,,,327,327,327,327,327,327,327,327", ",327,327,327,,327,327,327,327,327,,,,,,,,,,,,,,,,,,,,327,,,327,,,327", "327,,,327,,,,,,327,,,,,,,,,327,,,,,327,327,327,327,,327,327,327,327", ",,,,327,327,,,,328,328,328,327,328,327,327,327,328,328,327,327,,328", ",328,328,328,328,328,328,328,,,,,,328,328,328,328,328,328,328,,,328", ",,,,,,328,,,328,328,328,328,328,328,328,328,,328,328,328,,328,328,328", "328,328,,,,,,,,,,,,,,,,,,,,328,,,328,,,328,328,,,328,,,,,,328,,,,,,", ",,328,,,,,328,328,328,328,,328,328,328,328,,,,,328,328,,,,268,268,268", "328,268,328,328,328,268,268,328,328,,268,,268,268,268,268,268,268,268", ",,,,,268,268,268,268,268,268,268,,,268,,,,,,,268,,,268,268,268,268,268", "268,268,268,,268,268,268,,268,268,268,268,268,,,,,,,,,,,,,,,,,,,,268", ",,268,,,268,268,,,268,,,,,,268,,,,,,,,,268,,,,,268,268,268,268,,268", "268,268,268,,,,,268,268,,,,267,267,267,268,267,268,268,268,267,267,268", "268,,267,,267,267,267,267,267,267,267,,,,,,267,267,267,267,267,267,267", ",,267,,,,,,,267,,,267,267,267,267,267,267,267,267,,267,267,267,,267", "267,267,267,267,,,,,,,,,,,,,,,,,,,,267,,,267,,,267,267,,,267,,,,,,267", ",,,,,,,,267,,,,,267,267,267,267,,267,267,267,267,,,,,267,267,,,,266", "266,266,267,266,267,267,267,266,266,267,267,,266,,266,266,266,266,266", "266,266,,,,,,266,266,266,266,266,266,266,,,266,,,,,,,266,,,266,266,266", "266,266,266,266,266,,266,266,266,,266,266,266,266,266,,,,,,,,,,,,,,", ",,,,,266,,,266,,,266,266,,,266,,,,,,266,,,,,,,,,266,,,,,266,266,266", "266,,266,266,266,266,,,,,266,266,,,,917,917,917,266,917,266,266,266", "917,917,266,266,,917,,917,917,917,917,917,917,917,,,,,,917,917,917,917", "917,917,917,,,917,,,,,,,917,,,917,917,917,917,917,917,917,917,,917,917", "917,,917,917,917,917,917,,,,,,,,,,,,,,,,,,,,917,,,917,,,917,917,,,917", ",,,,,917,,,,,,,,,917,,,,,917,917,917,917,,917,917,917,917,,,,,917,917", ",,,918,918,918,917,918,917,917,917,918,918,917,917,,918,,918,918,918", "918,918,918,918,,,,,,918,918,918,918,918,918,918,,,918,,,,,,,918,,,918", "918,918,918,918,918,918,918,,918,918,918,,918,918,918,918,918,,,,,,", ",,,,,,,,,,,,,918,,,918,,,918,918,,,918,,,,,,918,,,,,,,,,918,,,,,918", "918,918,918,,918,918,918,918,,,,,918,918,,,,919,919,919,918,919,918", "918,918,919,919,918,918,,919,,919,919,919,919,919,919,919,,,,,,919,919", "919,919,919,919,919,,,919,,,,,,,919,,,919,919,919,919,919,919,919,919", ",919,919,919,,919,919,919,919,919,,,,,,,,,,,,,,,,,,,,919,,,919,,,919", "919,,,919,,,,,,919,,,,,,,,,919,,,,,919,919,919,919,,919,919,919,919", ",,,,919,919,,,,497,497,497,919,497,919,919,919,497,497,919,919,,497", ",497,497,497,497,497,497,497,,,,,,497,497,497,497,497,497,497,,,497", ",,,,,,497,,,497,497,497,497,497,497,497,497,,497,497,497,,497,497,497", "497,497,,,,,,,,,,,,,,,,,,,,497,,,497,,,497,497,,,497,,,,,,497,,,,,,", ",,497,,,,,497,497,497,497,,497,497,497,497,,,,,497,497,,,,,,,497,,497", "497,497,,,497,497,133,133,133,133,133,,,,133,133,,,,133,,133,133,133", "133,133,133,133,,,,,,133,133,133,133,133,133,133,,,133,,,,,,133,133", ",133,133,133,133,133,133,133,133,133,,133,133,133,,133,133,133,133,133", ",,,,,,,,,,,,,,,,,,,133,,,133,,,133,133,,,133,,133,,,,133,,,,,,,,,133", ",,,,133,133,133,133,,133,133,133,133,,,,,133,133,,,,132,132,132,133", "132,133,133,133,132,132,133,133,,132,,132,132,132,132,132,132,132,,", ",,,132,132,132,132,132,132,132,,,132,,,,,,,132,,,132,132,132,132,132", "132,132,132,,132,132,132,,132,132,132,132,132,,,,,,,,,,,,,,,,,,,,132", ",,132,,,132,132,,,132,,,,,,132,,,,,,,,,132,,,,,132,132,132,132,,132", "132,132,132,,,,,132,132,,,,131,131,131,132,131,132,132,132,131,131,132", "132,,131,,131,131,131,131,131,131,131,,,,,,131,131,131,131,131,131,131", ",,131,,,,,,,131,,,131,131,131,131,131,131,131,131,,131,131,131,,131", "131,131,131,131,,,,,,,,,,,,,,,,,,,,131,,,131,,,131,131,,,131,,,,,,131", ",,,,,,,,131,,,,,131,131,131,131,,131,131,131,131,,,,,131,131,,,,130", "130,130,131,130,131,131,131,130,130,131,131,,130,,130,130,130,130,130", "130,130,,,,,,130,130,130,130,130,130,130,,,130,,,,,,,130,,,130,130,130", "130,130,130,130,130,,130,130,130,,130,130,130,130,130,,,,,,,,,,,,,,", ",,,,,130,,,130,,,130,130,,,130,,,,,,130,,,,,,,,,130,,,,,130,130,130", "130,,130,130,130,130,,,,,130,130,,,,1149,1149,1149,130,1149,130,130", "130,1149,1149,130,130,,1149,,1149,1149,1149,1149,1149,1149,1149,,,,", ",1149,1149,1149,1149,1149,1149,1149,,,1149,,,,,,,1149,,,1149,1149,1149", "1149,1149,1149,1149,1149,,1149,1149,1149,,1149,1149,1149,1149,1149,", ",,,,,,,,,,,,,,,,,,1149,,,1149,,,1149,1149,,,1149,,,,,,1149,,,,,,,,,1149", ",,,,1149,1149,1149,1149,,1149,1149,1149,1149,,,,,1149,1149,,,,1150,1150", "1150,1149,1150,1149,1149,1149,1150,1150,1149,1149,,1150,,1150,1150,1150", "1150,1150,1150,1150,,,,,,1150,1150,1150,1150,1150,1150,1150,,,1150,", ",,,,,1150,,,1150,1150,1150,1150,1150,1150,1150,1150,,1150,1150,1150", ",1150,1150,1150,1150,1150,,,,,,,,,,,,,,,,,,,,1150,,,1150,,,1150,1150", ",,1150,,,,,,1150,,,,,,,,,1150,,,,,1150,1150,1150,1150,,1150,1150,1150", "1150,,,,,1150,1150,,,,52,52,52,1150,52,1150,1150,1150,52,52,1150,1150", ",52,,52,52,52,52,52,52,52,,,,,,52,52,52,52,52,52,52,,,52,,,,,,,52,,", "52,52,52,52,52,52,52,52,,52,52,52,,52,52,52,52,52,,,,,,,,,,,,,,,,,,", ",52,,,52,,,52,52,,,52,,,,,,52,,,,,,,,,52,,,,,52,52,52,52,,52,52,52,52", ",,,,52,52,,,,129,129,129,52,129,52,52,52,129,129,52,52,,129,,129,129", "129,129,129,129,129,,,,,,129,129,129,129,129,129,129,,,129,,,,,,,129", ",,129,129,129,129,129,129,129,129,,129,129,129,,129,129,129,129,129", ",,,,,,,,,,,,,,,,,,,129,,,129,,,129,129,,,129,,,,,,129,,,,,,,,,129,,", ",,129,129,129,129,,129,129,129,129,,,,,129,129,,,,,,,129,,129,129,129", ",,129,129,124,124,124,124,124,,,,124,124,,,,124,,124,124,124,124,124", "124,124,,,,,,124,124,124,124,124,124,124,,,124,,,,,,124,124,124,124", "124,124,124,124,124,124,124,124,,124,124,124,,124,124,124,124,124,,", ",,,,,,,,,,,,,,,,,124,,,124,,,124,124,,,124,,124,,,,124,,,,,,,,,124,", ",,,124,124,124,124,,124,124,124,124,,,,,124,124,,,,,,124,124,,124,124", "124,,,124,124,1162,1162,1162,,1162,,,,1162,1162,,,,1162,,1162,1162,1162", "1162,1162,1162,1162,,,,,,1162,1162,1162,1162,1162,1162,1162,,,1162,", ",,,,,1162,,,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162", ",1162,1162,1162,1162,1162,,,,,,,,,,,,,,,,,,,,1162,,,1162,,,1162,1162", ",,1162,,1162,,1162,,1162,,,1162,,,,,,1162,,,,,1162,1162,1162,1162,,1162", "1162,1162,1162,,,,,1162,1162,,,,471,471,471,1162,471,1162,1162,1162", "471,471,1162,1162,,471,,471,471,471,471,471,471,471,,,,,,471,471,471", "471,471,471,471,,,471,,,,,,,471,,,471,471,471,471,471,471,471,471,,471", "471,471,,471,471,471,471,471,,,,,,,,,,,,,,,,,,,,471,,,471,,,471,471", ",,471,,,,,,471,,,,,,,,,471,,,,,471,471,471,471,,471,471,471,471,,,,", "471,471,,,,277,277,277,471,277,471,471,471,277,277,471,471,,277,,277", "277,277,277,277,277,277,,,,,,277,277,277,277,277,277,277,,,277,,,,,", ",277,,,277,277,277,277,277,277,277,277,,277,277,277,,277,277,277,277", "277,,,,,,,,,,,,,,,,,,,,277,,,277,,,277,277,,,277,,,,,,277,,,,,,,,,277", ",,,,277,277,277,277,,277,277,277,277,,,,,277,277,,,,,,,277,,277,277", "277,470,,277,277,,,,470,470,470,,,470,470,470,,470,,,,,,,,470,470,470", "470,470,,,,,,,,470,470,,470,470,470,470,470,,,,,,,,,,,,,,,,,,,,,,,470", "470,470,470,470,470,470,470,470,470,470,470,470,470,,,470,470,470,,", "470,,,470,,,470,470,,470,,470,,470,,470,470,,470,470,470,470,470,,470", "470,470,,,,,,,,,,,,,,470,,,470,470,470,470,,470,469,470,,,,,470,469", "469,469,,,469,469,469,,469,,,,,,,,469,469,469,469,469,,,,951,951,951", "951,469,469,,469,469,469,469,469,,,,,951,951,951,,,,,,,,,,,951,951,", ",951,469,469,469,469,469,469,469,469,469,469,469,469,469,469,,,469,469", "469,,,469,,,469,,,469,469,,469,,469,,469,,469,469,,469,469,469,469,469", ",469,469,469,,951,951,951,951,,951,951,951,951,,,,469,951,951,469,469", "469,469,,469,951,469,951,951,951,460,469,7,7,7,7,7,460,460,460,7,7,460", "460,460,7,460,7,7,7,7,7,7,7,460,460,460,460,,7,7,7,7,7,7,7,460,460,7", "460,460,460,460,460,7,7,7,7,7,7,7,7,7,7,7,7,,7,7,7,,7,7,7,7,7,460,460", "460,460,460,460,460,460,460,460,460,460,460,460,,,460,460,460,7,,460", "7,460,460,7,7,460,460,7,460,7,460,,460,7,460,460,,460,460,460,460,460", "7,460,460,460,,7,7,7,7,,7,7,7,7,,,,460,7,7,460,460,,460,,460,7,,7,7", "7,,460,7,7,75,75,75,,75,,,,75,75,,,,75,,75,75,75,75,75,75,75,,,,,,75", "75,75,75,75,75,75,,,75,,,,,,,75,,,75,75,75,75,75,75,75,75,,75,75,75", ",75,75,75,75,75,,,,,,,,,,,,,,,,,,,,75,,,75,,,75,75,,,75,,,,,,75,,,,", ",,,,75,,,,,75,75,75,75,,75,75,75,75,,,,,75,75,75,,,,,75,75,,75,75,75", "64,,75,75,,,,64,64,64,,,64,64,64,,64,,,,,,,,64,,64,64,64,,,,,,,,64,64", ",64,64,64,64,64,,,,,,,,,,,,,,,,,,,,,,,64,64,64,64,64,64,64,64,64,64", "64,64,64,64,,,64,64,64,,,64,,,64,,,64,64,,64,,64,,64,,64,64,,64,64,64", "64,64,,64,,64,,,,,,,,,,,,,,64,,,64,64,64,64,,64,,64,,278,278,278,64", "278,,,,278,278,,,,278,,278,278,278,278,278,278,278,,,,,,278,278,278", "278,278,278,278,,,278,,,,,,,278,,,278,278,278,278,278,278,278,278,,278", "278,278,,278,278,278,278,278,,,,,,,,,,,,,,,,,,,,278,,,278,,,278,278", ",,278,,,,,,278,,,,,,,,,278,,,,,278,278,278,278,,278,278,278,278,,,,", "278,278,,,,221,221,221,278,221,278,278,278,221,221,278,278,,221,,221", "221,221,221,221,221,221,,,,,,221,221,221,221,221,221,221,,,221,,,,,", ",221,,,221,221,221,221,221,221,221,221,,221,221,221,,221,221,221,221", "221,,,,,,,,,,,,,,,,,,,,221,,,221,,,221,221,,,221,,,,,,221,,,,,,,,,221", ",,,,221,221,221,221,,221,221,221,221,,,,,221,221,,,,220,220,220,221", "220,221,221,221,220,220,221,221,,220,,220,220,220,220,220,220,220,,", ",,,220,220,220,220,220,220,220,,,220,,,,,,,220,,,220,220,220,220,220", "220,220,220,,220,220,220,,220,220,220,220,220,,,,,,,,,,,,,,,,,,,,220", ",,220,,,220,220,,,220,,220,,,,220,,,,,,,,,220,,,,,220,220,220,220,,220", "220,220,220,,,,,220,220,,,,800,800,800,220,800,220,220,220,800,800,220", "220,,800,,800,800,800,800,800,800,800,,,,,,800,800,800,800,800,800,800", ",,800,,,,,,,800,,,800,800,800,800,800,800,800,800,,800,800,800,,800", "800,800,800,800,,,,,,,,,,,,,,,,,,,,800,,,800,,,800,800,,,800,,,,,,800", ",,,,,,,,800,,,,,800,800,800,800,,800,800,800,800,,,,,800,800,,,,797", "797,797,800,797,800,800,800,797,797,800,800,,797,,797,797,797,797,797", "797,797,,,,,,797,797,797,797,797,797,797,,,797,,,,,,,797,,,797,797,797", "797,797,797,797,797,,797,797,797,,797,797,797,797,797,,,,,,,,,,,,,,", ",,,,,797,,,797,,,797,797,,,797,,,,,,797,,,,,,,,,797,,,,,797,797,797", "797,,797,797,797,797,,,,,797,797,,,,386,386,386,797,386,797,797,797", "386,386,797,797,,386,,386,386,386,386,386,386,386,,,,,,386,386,386,386", "386,386,386,,,386,,,,,,,386,,,386,386,386,386,386,386,386,386,,386,386", "386,,386,386,386,386,386,,,,,,,,,,,,,,,,,,,,386,,,386,,,386,386,,,386", ",,,,,386,,,,,,,,,386,,,,,386,386,386,386,,386,386,386,386,,,,,386,386", ",,,524,524,524,386,524,386,386,386,524,524,386,386,,524,,524,524,524", "524,524,524,524,,,,,,524,524,524,524,524,524,524,,,524,,,,,,,524,,,524", "524,524,524,524,524,524,524,,524,524,524,,524,524,524,524,524,,,,,,", ",,,,,,,,,,,,,524,,,524,,,524,524,,,524,,,,,,524,,,,,,,,,524,,,,,524", "524,524,524,,524,524,524,524,,,,,524,524,,,,523,523,523,524,523,524", "524,524,523,523,524,524,,523,,523,523,523,523,523,523,523,,,,,,523,523", "523,523,523,523,523,,,523,,,,,,,523,,,523,523,523,523,523,523,523,523", ",523,523,523,,523,523,523,523,523,,,,,,,,,,,,,,,,,,,,523,,,523,,,523", "523,,,523,,,,,,523,,,,,,,,,523,,,,,523,523,523,523,,523,523,523,523", ",,,,523,523,,,,522,522,522,523,522,523,523,523,522,522,523,523,,522", ",522,522,522,522,522,522,522,,,,,,522,522,522,522,522,522,522,,,522", ",,,,,,522,,,522,522,522,522,522,522,522,522,,522,522,522,,522,522,522", "522,522,,,,,,,,,,,,,,,,,,,,522,,,522,,,522,522,,,522,,,,,,522,,,,,,", ",,522,,,,,522,522,522,522,,522,522,522,522,,,,,522,522,,,,520,520,520", "522,520,522,522,522,520,520,522,522,,520,,520,520,520,520,520,520,520", ",,,,,520,520,520,520,520,520,520,,,520,,,,,,,520,,,520,520,520,520,520", "520,520,520,520,520,520,520,,520,520,520,520,520,,,,,,,,,,,,,,,,,,,", "520,,,520,,,520,520,,,520,,520,,520,,520,,,520,,,,,,520,,,,,520,520", "520,520,,520,520,520,520,,,,,520,520,,,,219,219,219,520,219,520,520", "520,219,219,520,520,,219,,219,219,219,219,219,219,219,,,,,,219,219,219", "219,219,219,219,,,219,,,,,,,219,,,219,219,219,219,219,219,219,219,,219", "219,219,,219,219,219,219,219,,,,,,,,,,,,,,,,,,,,219,,,219,,,219,219", ",,219,,219,,,,219,,,,,,,,,219,,,,,219,219,219,219,,219,219,219,219,", ",,,219,219,,,,510,510,510,219,510,219,219,219,510,510,219,219,,510,", "510,510,510,510,510,510,510,,,,,,510,510,510,510,510,510,510,,,510,", ",,,,,510,,,510,510,510,510,510,510,510,510,,510,510,510,,510,510,510", "510,510,,,,,,,,,,,,,,,,,,,,510,,,510,,,510,510,,,510,,,,,,510,,,,,,", ",,510,,,,,510,510,510,510,,510,510,510,510,,,,,510,510,,,,1017,1017", "1017,510,1017,510,510,510,1017,1017,510,510,,1017,,1017,1017,1017,1017", "1017,1017,1017,,,,,,1017,1017,1017,1017,1017,1017,1017,,,1017,,,,,,", "1017,,,1017,1017,1017,1017,1017,1017,1017,1017,,1017,1017,1017,,1017", "1017,,,1017,,,,,,,,,,,,,,,,,,,,1017,,,1017,,,1017,1017,,,1017,,,,,,", ",,,,,,,,,,,,,1017,1017,1017,1017,,1017,1017,1017,1017,,,,,1017,1017", ",,,1081,1081,1081,1017,1081,1017,1017,1017,1081,1081,,,,1081,,1081,1081", "1081,1081,1081,1081,1081,,,,,,1081,1081,1081,1081,1081,1081,1081,,,1081", ",,,,,,1081,,,1081,1081,1081,1081,1081,1081,1081,1081,,1081,1081,1081", ",1081,1081,,,1081,,,,,,,,,,,,,,,,,,,,1081,,,1081,,,1081,1081,,,1081", ",,,,,,,,,,,,,,,,,,,1081,1081,1081,1081,,1081,1081,1081,1081,,,,,1081", "1081,,,,341,341,341,1081,341,1081,1081,1081,341,341,,,,341,,341,341", "341,341,341,341,341,,,,,,341,341,341,341,341,341,341,,,341,,,,,,,341", ",,341,341,341,341,341,341,341,341,,341,341,341,,341,341,,,341,,,,,,", ",,,,,,,,,,,,,341,,,341,,,341,341,,,341,,,1214,,1214,1214,1214,1214,1214", ",,,,,,,,1214,,341,341,341,341,,341,341,341,341,,,,,341,341,,,,341,,1214", "341,,341,341,341,588,588,588,,588,1214,1214,,588,588,1214,,,588,,588", "588,588,588,588,588,588,,,,,,588,588,588,588,588,588,588,,,588,,,,,", ",588,,,588,588,588,588,588,588,588,588,,588,588,588,,588,588,,,588,", ",,,,,,,,,,,,,,,,,,588,,,588,,,588,588,,,588,,,,,,,,,,,,,,,,,,,,588,588", "588,588,,588,588,588,588,,,,,588,588,,,,40,40,40,588,40,588,588,588", "40,40,,,,40,,40,40,40,40,40,40,40,,,,,,40,40,40,40,40,40,40,,,40,,,", ",,,40,,,40,40,40,40,40,40,40,40,,40,40,40,,40,40,,,40,,,,,,,,,,,,,,", ",,,,,40,,,40,,,40,40,,,40,,,1210,,1210,1210,1210,1210,1210,,,,,,,,,1210", ",40,40,40,40,,40,40,40,40,,,,,40,40,,,,40,,1210,40,,40,40,40,803,803", "803,,803,1210,1210,,803,803,1210,,,803,,803,803,803,803,803,803,803", ",,,,,803,803,803,803,803,803,803,,,803,,,,,,,803,,,803,803,803,803,803", "803,803,803,,803,803,803,,803,803,,,803,,,,,,,,,,,,,,,,,,,,803,,,803", ",,803,803,,,803,,,,,,,,,,,,,,,,,,,,803,803,803,803,,803,803,803,803", ",,,,803,803,,,,360,360,360,803,360,803,803,803,360,360,,,,360,,360,360", "360,360,360,360,360,,,,,,360,360,360,360,360,360,360,,,360,,,,,,,360", ",,360,360,360,360,360,360,360,360,,360,360,360,,360,360,,,360,,,,,,", ",,,,,,,,,,,,,360,,,360,,,360,360,,,360,,,,,,,,,,,,,,,,,,,,360,360,360", "360,,360,360,360,360,,,,,360,360,,,,1144,1144,1144,360,1144,360,360", "360,1144,1144,,,,1144,,1144,1144,1144,1144,1144,1144,1144,,,,,,1144", "1144,1144,1144,1144,1144,1144,,,1144,,,,,,,1144,,,1144,1144,1144,1144", "1144,1144,1144,1144,,1144,1144,1144,,1144,1144,,,1144,,,,,,,,,,,,,,", ",,,,,1144,,,1144,,,1144,1144,,,1144,,,,,,,,,,,,,,,,,,,,1144,1144,1144", "1144,,1144,1144,1144,1144,,,,,1144,1144,,,,77,77,77,1144,77,1144,1144", "1144,77,77,,,,77,,77,77,77,77,77,77,77,,,,,,77,77,77,77,77,77,77,,,77", ",,,,,,77,,,77,77,77,77,77,77,77,77,,77,77,77,,77,77,,,77,,,,,,,,,,,", ",,,,,77,,,77,,,77,,,77,77,,,77,,,,,,,,,,,,,,,,,,,,77,77,77,77,,77,77", "77,77,,,,,77,77,,,,814,814,814,77,814,77,77,77,814,814,,,,814,,814,814", "814,814,814,814,814,,,,,,814,814,814,814,814,814,814,,,814,,,,,,,814", ",,814,814,814,814,814,814,814,814,,814,814,814,,814,814,,,814,,,,,,", ",,,,,,,,,,,,,814,,,814,,,814,814,,,814,,,,,,,,,,,,,,,,,,,,814,814,814", "814,,814,814,814,814,,,,,814,814,,,,597,597,597,814,597,814,814,814", "597,597,,,,597,,597,597,597,597,597,597,597,,,,,,597,597,597,597,597", "597,597,,,597,,,,,,,597,,,597,597,597,597,597,597,597,597,,597,597,597", ",597,597,,,597,,,,,,,,,,,,,,,,,,,,597,,,597,,,597,597,,,597,,,,,,,,", ",,,,,,,,,,,597,597,597,597,,597,597,597,597,,,,,597,597,,,,39,39,39", "597,39,597,597,597,39,39,,,,39,,39,39,39,39,39,39,39,,,,,,39,39,39,39", "39,39,39,,,39,,,,,,,39,,,39,39,39,39,39,39,39,39,,39,39,39,,39,39,,", "39,,,,,,,,,,,,,,,,,,,,39,,,39,,,39,39,,,39,,39,,,,,,,,,,,,,,,,,,39,39", "39,39,,39,39,39,39,,,,,39,39,,,,76,76,76,39,76,39,39,39,76,76,,,,76", ",76,76,76,76,76,76,76,,,,,,76,76,76,76,76,76,76,,,76,,,,,,,76,,,76,76", "76,76,76,76,76,76,,76,76,76,,76,76,,,76,,,,,,,,,,,,,,,,,,,,76,,,76,", ",76,76,,,76,,76,,,,,,,,,,,,,,,,,,76,76,76,76,,76,76,76,76,,,,,76,76", ",,,78,78,78,76,78,76,76,76,78,78,,,,78,,78,78,78,78,78,78,78,,,,,,78", "78,78,78,78,78,78,,,78,,,,,,,78,,,78,78,78,78,78,78,78,78,,78,78,78", ",78,78,,,78,,,,,,,,,,,,,,,,,,,,78,,,78,,,78,78,,,78,,,,,,,,,,,,,,,,", ",,,78,78,78,78,,78,78,78,78,,,,,78,78,,,,,,,78,,78,78,78,10,10,10,10", "10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,,,,10,10", "10,10,10,10,10,10,10,10,,,,,,10,10,10,10,10,10,10,10,10,10,,10,,,,,", ",,10,10,,10,10,10,10,10,10,10,,,10,10,,,,10,10,10,10,,,,,,,,,,,,,,10", "10,,10,10,10,10,10,10,10,10,10,10,10,10,,,10,10,,,,,,,,,,,,,,10,427", "427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427", "427,427,427,427,427,427,,,,427,427,427,427,427,427,427,427,427,427,", ",,,,427,427,427,427,427,427,427,427,427,,,427,,,,,,,,427,427,,427,427", "427,427,427,427,427,,,427,427,,,,427,427,427,427,,,,,,,,,,,,,,427,427", ",427,427,427,427,427,427,427,427,427,427,427,427,,,427,427,,,,,,,,,", ",,,,427,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667", "667,667,667,667,667,667,667,667,667,,,,667,667,667,667,667,667,667,667", "667,667,,,,,,667,667,667,667,667,667,667,667,667,,,667,,,,,,,,667,667", ",667,667,667,667,667,667,667,,,667,667,,,,667,667,667,667,,,,,,,,,,", ",,,667,667,,667,667,667,667,667,667,667,667,667,667,667,667,,,667,667", ",,,,,,,,,,,,,667,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11", "11,11,11,11,11,11,11,,,,11,11,11,11,11,11,11,11,11,11,,,,,,11,11,11", "11,11,11,11,11,11,,,11,,,,,,,,11,11,,11,11,11,11,11,11,11,,,11,11,,", ",11,11,11,11,,,,,,,,,,,,,,11,11,,11,11,11,11,11,11,11,11,11,11,11,11", ",,11,11,,,,,,,,,,,,,,11,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26", "26,26,26,26,26,26,26,26,26,,,,26,26,26,26,26,26,26,26,26,26,,,,,,26", "26,26,26,26,26,26,26,26,26,26,26,,26,,,,,,26,26,,26,26,26,26,26,26,26", ",,26,26,,,,26,26,26,26,,,,,,26,,,,,,,,26,26,,26,26,26,26,26,26,26,26", "26,26,26,26,,,26,753,753,753,753,,,,,,1026,,1026,1026,1026,1026,1026", "753,753,753,753,,,,753,1026,,,,,753,753,,,753,,,,,,,,,,,,,1026,,,,,", ",753,,,753,1026,1026,,753,,1026,753,,,,,,,,,,,,,,,,753,,,,753,753,753", "753,,753,753,753,753,,,,,753,753,1205,1205,1205,1205,1026,,753,,753", "753,753,,,753,753,,1205,1205,1205,1205,,,1208,1205,1208,1208,1208,1208", "1208,1205,1205,,,1205,,,,1208,,,,,,,,,,,,,,,,1205,,,1205,,,1208,1205", ",,1205,,,,,1208,1208,1208,1208,,,,1208,,,,1205,,,,1205,1205,1205,1205", ",1205,1205,1205,1205,,,,,1205,1205,1129,1129,1129,1129,,,1205,,1205", "1205,1205,,,1205,1205,,1129,1129,1129,1129,,,1138,1129,1138,1138,1138", "1138,1138,1129,1129,,,1129,,,,1138,,,,,,,,,,,,,,,,1129,,,1129,,,1138", "1129,,,1129,,1129,,,1138,1138,1138,1138,,,,1138,,,,1129,,,,1129,1129", "1129,1129,,1129,1129,1129,1129,,,,,1129,1129,989,989,989,989,,,1129", ",1129,1129,1129,,,1129,1129,,989,989,989,989,,,,989,989,,,,,989,989", ",,989,989,,,,,,,,,,,,,,,,,,,989,,,989,,,,989,,,989,,989,,,,,,,989,,", ",,,,989,,,,989,989,989,989,,989,989,989,989,,,,,989,989,942,942,942", "942,,,989,,989,989,989,,,989,989,,942,942,942,942,,,1135,942,1135,1135", "1135,1135,1135,942,942,,,942,,,,1135,,,,,,,,,,,,,,,,942,,,942,,,1135", "942,,,942,,,,,1135,1135,1135,1135,,,,1135,,,,942,,,,942,942,942,942", ",942,942,942,942,,,,,942,942,924,924,924,924,,,942,,942,942,942,,,942", "942,,924,924,924,924,,,1231,924,1231,1231,1231,1231,1231,924,924,,,924", ",,,1231,,,,,,,,,,,,,,,,924,,,924,,,1231,924,,,924,,924,,,,,1231,1231", ",,,1231,,,,924,,,,924,924,924,924,,924,924,924,924,,,,,924,924,745,745", "745,745,,,924,,924,924,924,,,924,924,,745,745,745,745,,,,745,,,,,,745", "745,,,745,,,,,,,,,,,,,,,,,,,,745,,,745,,,,745,,,745,,745,,,,,,,1166", ",1166,1166,1166,1166,1166,745,,,,745,745,745,745,1166,745,745,745,745", ",,,,745,745,745,943,943,943,943,,745,,745,745,745,1166,,745,745,,,943", "943,943,943,,1166,1166,943,,,1166,,,943,943,,,943,,,,,,,,,,,,,,,,,,", ",943,,,943,,,,943,,,943,,,1166,,,,,,,,,,,,,943,,,,943,943,943,943,,943", "943,943,943,,,,,943,943,930,930,930,930,,,943,,943,943,943,,,943,943", ",930,930,930,930,,,,930,930,,,,,930,930,,,930,930,,,,,,,,,,,,,,,,,,", "930,,,930,,,,930,,,930,,930,,,,,,,930,,,,,,,930,,,,930,930,930,930,", "930,930,930,930,,,,,930,930,929,929,929,929,,,930,,930,930,930,,,930", "930,,929,929,929,929,,,,929,929,,,,,929,929,,,929,929,,,,,,,,,,,,,,", ",,,,929,,,929,,,,929,,,929,,929,,,,,,,929,,,,,,,929,,,,929,929,929,929", ",929,929,929,929,,,,,929,929,,,,,,,929,,929,929,929,,,929,929,780,780", "780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780", "780,780,780,780,780,,,,780,780,780,780,780,780,780,780,780,780,,,,,", "780,780,780,780,780,780,780,780,780,,,780,,,,,,,,780,780,,780,780,780", "780,780,780,780,,,780,780,,,,780,780,780,780,,,,,,,,,,,,,,780,780,,780", "780,780,780,780,780,780,780,780,780,780,780,,,780,528,528,528,528,,", "1212,,1212,1212,1212,1212,1212,,,,528,528,528,528,,1212,,528,528,,,", ",528,528,,,528,528,,,,,,,,,1212,,,,,,,,,,528,1212,1212,528,,,1212,528", ",,528,,528,,,,,,,528,,,,,,,528,,,,528,528,528,528,,528,528,528,528,", ",,,528,528,527,527,527,527,,,528,,528,528,528,,,528,528,,527,527,527", "527,,,,527,527,,,,,527,527,,,527,527,,,,,,,,,,,,,,,,,,,527,,,527,,,", "527,,,527,,527,,,,,,,527,,,,,,,527,,,,527,527,527,527,,527,527,527,527", ",,,,527,527,1173,1173,1173,1173,,,527,,527,527,527,,,527,527,,1173,1173", "1173,1173,,,,1173,,,,,,1173,1173,,,1173,,,,,,,,,,,,,,,,,,,,1173,,,1173", ",,,1173,,,1173,,,,,,,,,,,,,,,,1173,,,,1173,1173,1173,1173,,1173,1173", "1173,1173,,,,,1173,1173,1116,1116,1116,1116,,,1173,,1173,1173,1173,", ",1173,1173,,1116,1116,1116,1116,,,,1116,,,,,,1116,1116,,,1116,,,,,,", ",,,,,,,,,,,,,1116,,,1116,,,,1116,,,1116,,,,,,,,,,,,,,,,1116,,,,1116", "1116,1116,1116,,1116,1116,1116,1116,,,,,1116,1116,926,926,926,926,,", "1116,,1116,1116,1116,,,1116,1116,,926,926,926,926,,,,926,,,,,,926,926", ",,926,,,,,,,,,,,,,,,,,,,,926,,,926,,,,926,,,926,,,,,,,,,,,,,,,,926,", ",,926,926,926,926,,926,926,926,926,,,,,926,926,1125,1125,1125,1125,", ",926,,926,926,926,,,926,926,,1125,1125,1125,1125,,,,1125,,,,,,1125,1125", ",,1125,,,,,,,,,,,,,,,,,,,,1125,,,1125,,,,1125,,,1125,,,,,,,,,,,,,,,", "1125,,,,1125,1125,1125,1125,,1125,1125,1125,1125,,,,,1125,1125,936,936", "936,936,,,1125,,1125,1125,1125,,,1125,1125,,936,936,936,936,,,,936,", ",,,,936,936,,,936,,,,,,,,763,763,763,763,,,,,,,,,936,,,936,763,763,763", "936,,,936,,936,,,,,763,763,,,763,,,,,936,,,,936,936,936,936,,936,936", "936,936,,,,,936,936,,,,,,,936,,936,936,936,,,936,936,233,,233,233,233", "233,233,,,,,763,763,763,763,233,763,763,763,763,,,,,763,763,950,950", "950,950,,,763,,763,763,763,233,,,,,950,950,950,,233,233,233,233,,,,233", ",950,950,,,950,,,,,,,,,,,,705,,705,705,705,705,705,,,,,,,,,705,,,,,", "234,233,234,234,234,234,234,,,,,,,,,234,705,950,950,950,950,,950,950", "950,950,,705,705,,950,950,705,,,,,234,950,,950,950,950,,,,234,234,234", "234,,,409,234,409,409,409,409,409,,1020,,1020,1020,1020,1020,1020,409", ",,,,705,,,1020,,644,,644,644,644,644,644,,,,,,409,409,,644,234,,,,1020", "409,409,409,409,,,,409,1020,1020,1020,1020,,,,1020,644,,,,,,,,,644,644", "644,644,,,1024,644,1024,1024,1024,1024,1024,,,,,,,,,1024,409,,,,,,,", "1020,,,,,,,,,,,,,1024,,,,644,,,,,,,1024,1024,675,675,,1024,675,,,,,", ",,675,675,,675,675,675,675,675,675,675,,,675,675,,,,675,675,675,675", ",,,,,675,,,,,1024,,,675,675,,675,675,675,675,675,675,675,675,675,675", "675,675,636,636,675,,636,,,,,,,,636,636,,636,636,636,636,636,636,636", ",,636,636,,,,636,636,636,636,,,,,,636,,,,,,,,636,636,,636,636,636,636", "636,636,636,636,636,636,636,636,629,629,636,,629,,,,,,,,629,629,,629", "629,629,629,629,629,629,,,629,629,,,,629,629,629,629,,,,,,629,,,,,,", ",629,629,,629,629,629,629,629,629,629,629,629,629,629,629,226,226,629", ",226,,,,,,,,226,226,,226,226,226,226,226,226,226,,,226,226,,,,226,226", "226,226,,,,,,226,,,,,,,,226,226,,226,226,226,226,226,226,226,226,226", "226,226,226,602,602,226,,602,,,,,,,,602,602,,602,602,602,602,602,602", "602,,,602,602,,,,602,602,602,602,,,,,,602,,,,,,,,602,602,,602,602,602", "602,602,602,602,602,602,602,602,602,637,637,602,,637,,,,,,,,637,637", ",637,637,637,637,637,637,637,,,637,637,,,,637,637,637,637,,,,,,637,", ",,,,,,637,637,,637,637,637,637,637,637,637,637,637,637,637,637,225,225", "637,,225,,,,,,,,225,225,,225,225,225,225,225,225,225,,,225,225,,,,225", "225,225,225,,,,,,225,,,,,,,,225,225,,225,225,225,225,225,225,225,225", "225,225,225,225,302,302,225,,302,,,,,,,,302,302,,302,302,302,302,302", "302,302,,,302,302,,,,302,302,302,302,,,,,,,,,,,,,,302,302,,302,302,302", "302,302,302,302,302,302,302,302,302,519,519,302,,519,,,,,,,,519,519", ",519,519,519,519,519,519,519,,,519,519,,,,519,519,519,519,,,,,,519,", ",,,,,,519,519,,519,519,519,519,519,519,519,519,519,519,519,519,518,518", "519,,518,,,,,,,,518,518,,518,518,518,518,518,518,518,,,518,518,,,,518", "518,518,518,,,,,,518,,,,,,,,518,518,,518,518,518,518,518,518,518,518", "518,518,518,518,591,591,518,,591,,,,,,,,591,591,,591,591,591,591,591", "591,591,,,591,591,,,,591,591,591,591,,,,,,591,,,,,,,,591,591,,591,591", "591,591,591,591,591,591,591,591,591,591,592,592,591,,592,,,,,,,,592", "592,,592,592,592,592,592,592,592,,,592,592,,,,592,592,592,592,,,,,,592", ",,,,,,,592,592,,592,592,592,592,592,592,592,592,592,592,592,592,1163", "1163,592,,1163,,,,,,,,1163,1163,,1163,1163,1163,1163,1163,1163,1163", ",,1163,1163,,,,1163,1163,1163,1163,,,,,,1163,,,,,,,,1163,1163,,1163", "1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,674,674,1163", ",674,,,,,,,,674,674,,674,674,674,674,674,674,674,,,674,674,,,,674,674", "674,674,,,,,,674,,,,,,,,674,674,,674,674,674,674,674,674,674,674,674", "674,674,674,1164,1164,674,,1164,,,,,,,,1164,1164,,1164,1164,1164,1164", "1164,1164,1164,,,1164,1164,,,,1164,1164,1164,1164,,,,,,1164,,,,,,,,1164", "1164,,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,630", "630,1164,,630,,,,,,,,630,630,,630,630,630,630,630,630,630,,,630,630", ",,,630,630,630,630,,,,,,630,,,,,,,,630,630,,630,630,630,630,630,630", "630,630,630,630,630,630,1188,1188,630,,1188,,,,,,,,1188,1188,,1188,1188", "1188,1188,1188,1188,1188,,,1188,1188,,,,1188,1188,1188,1188,,,,,,1188", ",,,,,,,1188,1188,,1188,1188,1188,1188,1188,1188,1188,1188,1188,1188", "1188,1188,601,601,1188,,601,,,,,,,,601,601,,601,601,601,601,601,601", "601,,,601,601,,,,601,601,601,601,,,,,,601,,,,,,,,601,601,,601,601,601", "601,601,601,601,601,601,601,601,601,,,601"]; + racc_action_check = (arr = $$$('Array').$new(28717, nil)); + idx = 0; + $send(clist, 'each', [], function $Ruby31$4(str){ + + + if (str == null) str = nil;; + return $send(str.$split(",", -1), 'each', [], function $$5(i){var $writer = nil; + + + + if (i == null) i = nil;; + if (!$truthy(i['$empty?']())) { + + $writer = [idx, i.$to_i()]; + $send(arr, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return (idx = $rb_plus(idx, 1));}, 1);}, 1); + racc_action_pointer = [nil, 1550, 2590, 30, nil, 485, nil, 21057, 1279, -15, 24908, 25292, 63, nil, 111, 130, 888, 195, 878, 334, 213, 587, nil, -72, 16018, 1438, 25420, 260, nil, 586, nil, 10, 7680, 8479, 8613, 9947, 10209, nil, 1870, 24507, 23582, nil, 199, 495, 356, 292, 12722, 13115, 252, 13377, 14041, 977, 19960, 226, 694, nil, nil, nil, nil, nil, nil, nil, nil, nil, 21341, nil, 15494, 15351, 14696, 170, nil, 14434, 14303, nil, nil, 21200, 24638, 24114, 24769, nil, nil, nil, nil, nil, nil, nil, nil, nil, 877, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 610, nil, nil, 722, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 20234, nil, nil, nil, nil, 20091, 19567, 19436, 19305, 19174, nil, 4318, nil, -26, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 266, nil, 4462, 22788, 21740, 21609, 14172, 13910, 13779, 27931, 27748, nil, nil, 264, 2734, 305, nil, 27294, 27386, 317, 1294, 12043, 11912, 11257, nil, nil, 1133, 138, 140, 432, 174, 389, 452, nil, 10078, 131, 191, 3022, 455, nil, nil, 7277, 7146, 7015, 6753, 6491, 6360, 6229, 6098, 5967, 18507, 18376, 18245, 17590, 17459, 17328, 16411, 16149, 15756, 15220, 15089, 20639, 21478, nil, nil, nil, nil, 13648, nil, nil, 583, 548, 381, -62, 413, 376, 696, 695, 584, 585, nil, nil, nil, 15625, nil, nil, 27992, nil, nil, 484, 16673, 17066, nil, nil, nil, nil, nil, nil, nil, 17197, nil, 2446, nil, 455, 459, nil, 17721, 512, 17852, nil, nil, 17983, 18114, nil, nil, -73, nil, 5836, 1711, 509, 484, 1726, 513, 564, 525, 23312, 2878, 999, 1139, 614, 617, 582, nil, 610, 571, 253, 616, 644, nil, nil, nil, 650, 171, 611, 23852, nil, 471, 1022, 3742, 3886, 687, nil, 691, 12591, nil, 677, 2302, 1567, 638, nil, 541, 621, 676, 662, 651, 690, nil, 870, 35, 36, 22133, 1006, 4894, 459, 766, 651, 25, 39, 730, 747, 4, 793, nil, nil, 1141, 1285, 370, nil, 692, nil, 714, 14827, nil, 27438, nil, 531, 386, 291, 288, 421, 142, 191, 396, nil, nil, nil, nil, nil, nil, nil, 713, 25036, nil, nil, nil, nil, 726, nil, 798, 717, 14565, 725, nil, nil, 715, nil, 690, -60, 819, nil, nil, 1582, nil, nil, nil, nil, nil, 1870, 735, nil, 740, 749, 217, 251, 21057, nil, nil, nil, 0, 861, 795, nil, nil, 20916, 20780, 20508, 880, 882, nil, nil, 769, 775, 780, nil, nil, 785, 787, 809, nil, nil, nil, nil, nil, nil, nil, nil, nil, 801, 1280, nil, nil, 19031, nil, nil, nil, 1, nil, nil, nil, 899, nil, nil, 901, 579, 22919, 951, nil, nil, nil, -26, nil, 885, 28114, 28053, 22657, -85, 22526, 22395, 22264, 835, 853, 26710, 26612, 3454, 5300, 814, 855, 936, 938, 947, 952, 5693, 5431, 5562, 5169, 5038, 4894, 4750, 4606, 4462, 3482, 3568, 4318, 4174, 2590, 4030, nil, 154, nil, 13518, nil, nil, nil, nil, 13246, 889, 897, 901, nil, nil, nil, 902, nil, nil, 12984, nil, 12853, nil, 12460, nil, 219, nil, nil, nil, 12317, 1438, nil, 904, 909, nil, nil, 910, 23451, 916, 12174, 28175, 28236, 995, 958, nil, nil, 24376, 929, nil, 11781, 28602, 27809, 11650, 3598, 11388, nil, 1066, 947, 990, nil, 11126, nil, nil, 10995, nil, nil, nil, 4030, 1075, nil, 3742, 25, 1080, 1084, 37, 1086, 10733, 10602, 27687, 28480, -5, nil, nil, 472, nil, 27626, 27870, 10340, nil, nil, 191, 2014, nil, 27463, nil, nil, nil, nil, 1249, nil, nil, nil, 977, nil, nil, 247, nil, 286, nil, nil, 966, nil, 968, nil, nil, nil, 25164, nil, 9816, 971, 9673, 9411, 9280, 28358, 27565, 9018, 8875, 733, 1011, 8744, 8076, 7945, 7814, 1017, nil, nil, 7539, 7408, 1021, nil, 1075, 1726, 1105, 6884, nil, nil, 1120, nil, nil, 376, 13512, nil, 13482, nil, 27365, nil, 975, 6622, nil, 1310, nil, 992, 997, 1057, 1002, nil, nil, nil, nil, nil, nil, 1090, 2014, nil, nil, nil, 307, 332, 222, 361, 1006, 5693, 5562, nil, 120, nil, nil, nil, nil, 1029, nil, nil, nil, 555, 26091, 311, nil, 1007, 1092, 1014, nil, nil, 25503, nil, nil, 375, nil, nil, 586, nil, nil, 861, 27241, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 791, 464, nil, nil, 1016, 26529, nil, 1148, nil, 1131, 4, nil, nil, 16280, nil, 1046, 1053, 1154, nil, 1041, nil, 1088, 22002, nil, nil, 21871, nil, 109, 23721, 1044, nil, 1048, -1, 233, 1103, 249, 799, 1117, 1088, 24245, nil, 1156, 2158, 10864, nil, nil, nil, 372, 876, nil, 1213, nil, nil, nil, nil, nil, 1219, 1220, nil, nil, 6, 1101, -21, -19, 68, 7, 1150, 997, 989, nil, 1103, 4606, 14958, nil, 1227, 22, 1107, nil, nil, nil, nil, nil, 4750, nil, nil, nil, nil, nil, nil, nil, nil, 1106, 15887, 1110, 387, 385, 110, 500, nil, 2302, 16542, nil, 1110, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 16804, 16935, 1236, nil, 3886, 1121, 1169, nil, nil, 1129, nil, 1212, nil, nil, 1131, 1136, nil, 1141, 1143, nil, 1144, nil, nil, nil, 1150, 1204, 507, nil, nil, 18638, 18769, 18900, 5169, 5300, 5431, 333, 25993, 1231, 27004, -65, -35, 26386, 26288, 480, -32, 1154, 1155, nil, 27200, nil, 1154, 747, nil, 1178, 25895, 26190, nil, 929, 1243, 281, nil, nil, 27339, 20916, nil, nil, nil, nil, 8207, nil, nil, nil, nil, nil, 8338, nil, nil, 1227, nil, nil, 1237, 1224, nil, nil, 429, 2446, nil, nil, nil, nil, 1227, 250, nil, 137, nil, 1357, nil, 9149, 1361, nil, nil, 25797, 9542, 5038, -18, 1362, nil, 1363, 369, 1582, nil, nil, nil, nil, 1238, 1285, 1249, 1247, 304, nil, nil, 10471, 3310, 3166, nil, 3166, nil, nil, -10, 23050, nil, nil, 27446, nil, 497, nil, 27515, nil, 25493, nil, nil, nil, nil, 1248, 1250, 3022, 2878, 11519, nil, 1251, nil, nil, nil, nil, 1257, 1258, 1260, 1262, 1263, 1264, nil, nil, nil, 1309, 1267, -39, nil, 1276, nil, nil, -66, 1275, nil, nil, nil, nil, nil, nil, 1323, 2734, 2158, nil, nil, 1285, 1286, nil, 1287, 1288, 1291, nil, 1316, 1296, 1283, 23181, nil, nil, nil, nil, nil, 8, nil, 26, 771, nil, 40, nil, nil, nil, 1420, 3454, 3310, 1136, nil, nil, nil, 1438, 32, 33, 872, 1376, 34, nil, 1302, 1312, 1313, 1314, 1348, 3584, 26906, nil, nil, nil, nil, nil, nil, nil, 1317, 27102, nil, 145, nil, 25699, nil, nil, 815, nil, nil, 25898, nil, nil, 25702, nil, 13537, nil, nil, 1342, 23983, 763, 1397, 3598, nil, 19698, 19829, nil, nil, nil, nil, 1341, 1454, 713, nil, nil, nil, 1457, 20377, 28297, 28419, 69, 26144, nil, nil, nil, nil, 1332, 1333, 26808, 1341, nil, nil, 1342, nil, nil, 1361, 1365, 1382, 1385, nil, 1386, nil, 618, 28541, nil, 973, 4174, nil, nil, nil, nil, nil, 1195, nil, 1392, 76, 79, 109, 136, 1391, 25601, 1394, nil, 25604, nil, 23629, nil, 26599, nil, 23359, nil, nil, 1439, 1442, nil, 362, nil, 142, nil, 1399, 1401, 1404, 1409, nil, nil, nil, 25996, nil, nil, nil, nil, -129, nil]; + racc_action_default = [-1, -745, -4, -745, -2, -730, -5, -745, -8, -745, -745, -745, -745, -31, -745, -745, -36, -745, -745, -639, -639, -311, -52, -732, -745, -61, -745, -69, -70, -71, -75, -287, -287, -287, -324, -352, -353, -87, -13, -91, -99, -101, -745, -626, -627, -745, -745, -745, -745, -745, -745, -239, -745, -732, -258, -302, -303, -304, -305, -306, -307, -308, -309, -310, -718, -313, -317, -744, -707, -333, -335, -745, -745, -63, -63, -730, -745, -745, -745, -354, -355, -357, -358, -359, -360, -419, -563, -564, -565, -566, -587, -569, -570, -589, -591, -574, -579, -583, -585, -601, -602, -603, -587, -605, -607, -608, -609, -610, -716, -615, -616, -717, -618, -619, -620, -621, -622, -623, -624, -625, -630, -631, 1238, -3, -731, -740, -741, -742, -7, -745, -745, -745, -745, -745, -9, -4, -19, -745, -130, -131, -132, -133, -134, -135, -136, -140, -141, -142, -143, -144, -145, -146, -147, -148, -149, -150, -151, -152, -153, -154, -155, -156, -157, -158, -159, -160, -161, -162, -163, -164, -165, -166, -167, -168, -169, -170, -171, -172, -173, -174, -175, -176, -177, -178, -179, -180, -181, -182, -183, -184, -185, -186, -187, -188, -189, -190, -191, -192, -193, -194, -195, -196, -197, -198, -199, -200, -201, -202, -203, -204, -205, -206, -207, -208, -209, -210, -24, -137, -13, -745, -745, -745, -745, -745, -277, -745, -745, -728, -729, -745, -13, -638, -636, -662, -662, -745, -13, -745, -745, -732, -733, -56, -745, -626, -627, -745, -311, -745, -745, -245, -745, -639, -639, -13, -745, -57, -59, -222, -223, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -259, -260, -261, -262, -745, -65, -66, -745, -130, -131, -170, -171, -172, -188, -193, -200, -203, -626, -627, -705, -745, -428, -430, -745, -726, -727, -76, -277, -745, -332, -434, -443, -445, -82, -440, -83, -732, -84, -265, -282, -292, -292, -286, -290, -293, -745, -587, -709, -713, -745, -85, -86, -730, -14, -745, -17, -745, -89, -13, -732, -745, -92, -95, -13, -107, -108, -745, -745, -115, -324, -327, -732, -745, -639, -639, -352, -353, -356, -441, -745, -97, -745, -103, -321, -745, -224, -225, -606, -233, -234, -745, -246, -251, -13, -315, -732, -266, -737, -737, -745, -745, -737, -745, -334, -62, -745, -745, -745, -13, -13, -730, -745, -731, -626, -627, -745, -745, -311, -745, -370, -371, -125, -126, -745, -128, -745, -311, -634, -745, -348, -662, -567, -745, -745, -745, -745, -745, -745, -745, -745, -6, -743, -25, -26, -27, -28, -29, -745, -745, -21, -22, -23, -138, -745, -32, -35, -298, -745, -745, -297, -33, -745, -37, -745, -311, -49, -51, -211, -270, -293, -53, -54, -38, -212, -270, -732, -278, -292, -292, -719, -720, -287, -438, -721, -722, -720, -719, -287, -437, -439, -721, -722, -745, -555, -745, -383, -384, -732, -704, -704, -644, -645, -647, -647, -647, -661, -663, -664, -665, -666, -667, -668, -669, -670, -671, -745, -673, -675, -677, -682, -684, -685, -688, -693, -695, -696, -698, -699, -700, -702, -745, -745, -745, -48, -219, -55, -732, -331, -745, -745, -745, -277, -321, -745, -745, -745, -745, -745, -745, -745, -220, -221, -226, -227, -228, -229, -230, -231, -235, -236, -237, -238, -240, -241, -242, -243, -244, -247, -248, -249, -250, -732, -263, -67, -732, -449, -287, -719, -720, -73, -77, -663, -732, -292, -732, -288, -447, -449, -732, -326, -283, -745, -284, -745, -289, -745, -294, -745, -712, -715, -12, -731, -16, -18, -732, -88, -319, -104, -93, -745, -732, -277, -745, -745, -114, -745, -638, -606, -745, -100, -105, -745, -745, -745, -745, -264, -745, -328, -745, -732, -745, -267, -739, -738, -269, -739, -322, -323, -708, -13, -361, -362, -13, -745, -745, -745, -745, -745, -745, -277, -745, -745, -321, -63, -125, -126, -127, -745, -745, -277, -344, -632, -745, -13, -420, -662, -423, -568, -588, -593, -745, -595, -571, -590, -745, -592, -573, -745, -576, -745, -578, -581, -745, -582, -745, -604, -10, -20, -745, -30, -745, -301, -745, -745, -277, -745, -745, -745, -745, -442, -745, -279, -281, -745, -745, -78, -276, -435, -745, -745, -80, -436, -44, -254, -744, -744, -350, -637, -745, -642, -643, -745, -745, -654, -745, -657, -745, -659, -745, -745, -372, -745, -374, -376, -379, -382, -732, -676, -686, -687, -697, -701, -640, -46, -256, -351, -330, -734, -719, -720, -719, -720, -732, -745, -745, -58, -463, -466, -467, -468, -469, -471, -473, -476, -477, -534, -732, -489, -492, -504, -508, -513, -515, -516, -519, -520, -587, -523, -525, -526, -527, -532, -533, -745, -745, -537, -538, -539, -540, -541, -542, -543, -544, -545, -546, -547, -745, -745, -553, -60, -745, -745, -706, -745, -450, -72, -431, -447, -272, -279, -274, -745, -409, -745, -325, -292, -291, -295, -745, -710, -711, -745, -15, -90, -745, -96, -102, -732, -719, -720, -275, -723, -113, -745, -98, -745, -218, -232, -252, -745, -314, -316, -318, -737, -744, -363, -744, -64, -364, -365, -338, -339, -745, -745, -455, -341, -745, -732, -719, -720, -723, -320, -13, -125, -126, -129, -732, -13, -745, -346, -745, -745, -732, -594, -597, -598, -599, -600, -13, -572, -575, -577, -580, -584, -586, -139, -34, -299, -745, -732, -719, -720, -720, -719, -50, -271, -745, -735, -292, -40, -214, -41, -215, -79, -42, -217, -43, -216, -81, -745, -745, -744, -368, -13, -556, -744, -557, -558, -704, -683, -688, -703, -646, -647, -647, -674, -647, -647, -694, -647, -671, -386, -689, -732, -745, -745, -381, -672, -745, -745, -745, -745, -745, -745, -442, -464, -745, -745, -474, -475, -745, -745, -745, -494, -732, -732, -488, -495, -501, -745, -745, -491, -745, -745, -745, -507, -514, -518, -745, -522, -524, -530, -531, -535, -536, -548, -549, -745, -611, -612, -613, -126, -551, -745, -68, -429, -409, -433, -432, -745, -732, -444, -410, -732, -13, -446, -285, -296, -714, -94, -442, -106, -732, -268, -745, -366, -745, -745, -340, -342, -745, -745, -13, -442, -745, -442, -745, -745, -13, -349, -421, -424, -426, -413, -745, -745, -300, -442, -39, -213, -280, -45, -255, -11, -13, -562, -369, -745, -745, -560, -641, -745, -650, -745, -652, -745, -655, -745, -658, -660, -373, -375, -377, -380, -47, -257, -745, -465, -504, -470, -472, -481, -485, -732, -732, -732, -732, -732, -732, -552, -486, -487, -511, -496, -499, -502, -732, -587, -736, -732, -505, -509, -512, -517, -521, -528, -529, -745, -253, -13, -74, -273, -704, -704, -390, -392, -392, -392, -408, -745, -732, -671, -679, -680, -691, -448, -329, -336, -745, -337, -745, -460, -295, -744, -343, -345, -633, -745, -13, -13, -745, -422, -596, -561, -13, -626, -627, -745, -745, -311, -559, -647, -647, -647, -647, -745, -745, -745, -478, -479, -480, -482, -483, -484, -503, -497, -745, -490, -745, -493, -745, -550, -451, -745, -388, -389, -393, -399, -401, -745, -404, -745, -406, -411, -745, -745, -678, -745, -13, -456, -745, -745, -452, -453, -454, -347, -745, -745, -732, -415, -417, -418, -555, -277, -745, -745, -321, -745, -648, -651, -653, -656, -378, -505, -745, -500, -506, -510, -704, -681, -391, -392, -392, -392, -392, -692, -392, -412, -690, -745, -321, -744, -13, -461, -462, -425, -427, -414, -745, -554, -732, -719, -720, -723, -320, -647, -745, -498, -387, -745, -396, -745, -398, -745, -402, -745, -405, -407, -320, -723, -367, -744, -416, -442, -649, -392, -392, -392, -392, -457, -458, -459, -745, -394, -397, -400, -403, -392, -395]; + clist = ["44,411,301,309,313,44,141,141,318,318,318,340,285,418,454,493,493,284", "382,384,385,473,141,389,297,19,626,511,709,832,19,693,460,466,356,356", "44,344,344,635,127,698,699,571,225,618,621,339,563,702,704,706,144,144", "890,303,708,598,897,241,983,19,352,352,44,134,387,388,366,136,217,356", "356,356,393,297,297,421,422,423,424,798,232,232,305,312,314,907,8,19", "795,445,795,8,445,302,561,678,940,352,352,352,359,734,778,737,737,790", "445,555,127,124,438,439,1003,451,383,383,236,559,383,715,44,798,610", "613,1160,1059,617,512,375,44,904,44,1158,484,484,756,756,123,229,235", "336,1037,4,476,509,19,320,320,320,1030,373,973,1032,1184,19,1075,19", "1016,782,128,2,607,656,658,17,1012,338,1044,1047,17,792,801,383,383", "383,383,216,1055,571,377,380,933,595,595,986,399,516,434,798,493,934", "406,408,427,527,461,318,528,795,795,17,826,952,953,286,780,786,390,8", "667,652,654,657,657,44,369,605,425,378,8,470,785,1160,1184,298,432,44", "379,17,397,1221,639,44,1078,576,372,608,374,818,19,846,19,709,997,19", "642,915,1031,1077,44,1136,19,433,444,1079,1157,444,19,19,831,339,903", "568,905,449,450,518,319,319,319,444,844,643,999,19,426,419,409,318,318", "850,514,515,804,1097,584,17,318,1098,554,565,566,813,965,1151,17,1089", "17,1172,1228,376,989,1191,1038,1039,899,795,1174,731,484,303,929,232", "232,316,329,330,930,1180,645,939,309,942,460,466,1068,968,313,1061,44", "599,1062,622,44,356,912,955,344,44,894,1143,1,553,410,339,412,1175,413", "236,339,552,1030,1171,356,19,1206,344,414,19,415,1036,416,352,19,127", "1042,1045,417,44,591,525,526,923,852,1043,1046,596,857,806,847,17,352", "17,44,44,17,935,601,902,582,1064,1065,17,19,623,624,809,898,17,17,1178", "587,907,,,1126,809,,19,19,,961,,,,17,836,581,629,320,,141,127,696,493", "1219,845,320,,383,685,849,,,809,580,690,,,336,,,809,691,336,709,709", "979,,236,641,1152,437,437,860,904,860,,,1019,,868,725,579,,583,674,144", "1021,1023,589,1025,1027,,1028,,,992,,460,466,493,722,493,666,,994,,461", ",,1177,318,,991,17,882,,978,17,781,887,,,17,238,,,787,1006,789,684,452", "470,793,975,798,689,,,,625,,772,772,685,513,795,969,,802,,1076,,17,371", "805,756,756,562,319,445,721,,484,,,756,319,17,17,445,445,756,851,820", "445,445,599,735,735,461,318,1090,904,737,1048,599,982,1041,,461,878", "880,1049,1050,44,883,885,1229,1110,356,1052,,344,895,470,564,,1060,356", ",,344,,567,470,756,975,461,318,19,,,,,784,461,,352,318,,,,44,,,44,352", ",,,1230,841,470,823,,,825,,470,,,1133,1134,995,,,44,19,,1144,19,904", "461,318,709,709,,,,,,,,827,,,,,,141,916,19,947,44,,,900,470,,900,44", ",848,1103,1167,1168,1169,1170,,,794,,,,1120,1121,1122,,19,,,19,,1181", ",19,1182,,,,,19,19,444,,144,19,19,,,,,,444,444,,1198,,444,444,,822,864", ",1153,,,,,,967,,,,,,,1207,899,772,17,,445,,1147,,1148,772,,,1080,865", ",896,,966,772,772,873,,1060,,963,1007,,,1224,284,1223,1060,,599,141", "1176,,932,,685,17,,690,17,980,946,1096,,,,,,877,996,,,356,,,344,493", ",,,17,,,356,,,344,513,,452,,,,,,1060,,,,,352,,,,,1072,,17,594,,17,352", ",44,17,,1222,,44,,17,17,,,993,17,17,1176,,44,,,609,1131,,1029,835,981", "19,,1004,,,19,,,,,,,1040,,,,19,,,,,,,,,1156,44,815,383,,,,,,19,,,1015", "877,,1066,,,,,,444,,,,,19,,1080,1070,,1080,,772,,772,,,772,772,437,1085", ",,1087,772,,,,679,,772,772,,,,1073,,,772,772,,,1199,1014,,,,1018,932", ",,,,932,932,,,1127,,,809,44,,879,881,,1058,,884,886,,,1084,,,,,772,", "44,1080,1117,1118,1119,1072,44,19,1072,,1072,1092,383,,,,17,,1128,,", "17,44,356,,19,1105,,,,31,19,17,1102,735,31,,,,,,383,1095,,,779,,19,", ",17,352,31,,,,,,,,,,31,31,31,,31,17,,,,,,,,,,44,1072,,1072,,1072,,1072", ",,356,,,297,,,,31,,,,,31,31,1072,19,31,,,44,44,1192,1193,,,44,,,352", "900,1155,,1073,,,1073,1161,1073,772,,906,,908,,19,19,,772,,,19,772,", ",,,1163,,,461,318,17,,356,,31,297,765,765,44,31,31,31,31,31,,31,,,17", "1190,,,,470,17,,,,,1008,352,,,19,772,,,,,,17,,,,1073,,1073,470,1073", ",1073,,44,,,,,383,383,,,,,1220,,1081,772,1073,,,,,,879,881,886,884,19", "679,,,,,,,,,,,,,,679,941,,17,,,31,31,31,31,31,31,31,,,,,,31,,,,,,31", "31,31,31,,,,,17,17,381,18,,,17,,18,31,,,,,,,,,,,,,,,,242,,,,679,,,,", ",242,242,242,,18,345,345,,,,,,,,,17,,,,,31,,,,679,,,31,31,,1008,,18", "679,,,31,242,242,1002,,242,394,404,404,,,1137,1139,1141,,,,,31,,679", ",31,17,,,,31,,765,1081,,,1081,,,1081,765,1081,,,,,,764,764,765,765,", ",,,,1074,18,,,31,,242,242,242,242,18,,18,,,,,,31,31,31,,,,,,,679,,435", "448,,679,679,,,,,,31,,,,,,,,,1111,,1112,,1113,1081,,1081,,1081,,1081", ",,,,1209,1211,1213,1215,,1216,,1002,,,,,1081,,,,,,,,,,,,,,,,,,,18,242", "442,242,242,442,242,,31,,,,18,1232,1233,1234,1235,,18,442,242,242,,", ",1237,,,,,,,,,,18,,573,,575,,,577,578,,,,31,,679,679,679,,,,,,31,,941", "765,,765,,,765,765,,,,,1183,765,1185,,,,,765,765,,242,,1002,,,765,765", "242,242,,,,,,,,242,,1204,,,,,,,,,,,,,,,764,18,,31,,18,,,764,345,18,765", ",31,,,,764,764,,,,,,,,,1225,345,1226,,1227,,20,,,,670,20,,18,31,,,31", ",,1196,,,1236,31,,,242,18,18,,,,,31,,,,31,,,,20,353,353,,,,242,,,,,", ",,,,,,,,679,,,31,,,31,31,20,716,31,,,,,,31,31,353,353,353,31,31,,,,", ",,,,,,,,,,,,,,,,,,,,,,765,242,,,,,,,,765,,,,765,,,,20,,,,,,,,,20,,20", ",,,,796,,381,,799,,,242,764,,764,,,764,764,,,242,,,764,,,,765,,764,764", ",,,,,,764,764,,,,,,796,,,381,,,,,,,,,,,,765,448,,,,,,,,,,,,,31,,,764", ",,,18,20,,20,,,20,,345,,242,,,20,,,31,345,,20,20,31,31,,866,,,,,,,,31", "796,381,,20,,18,,,18,,,,,,893,242,,31,,,,,,,,242,,,911,18,,,,,31,,,", ",,,,,,,,,,,,,,,,,,18,,,442,242,,,18,,,,,,442,442,,,,442,442,,,,,,,,20", ",,,20,,,764,353,20,,,,,,31,764,,,,764,,,,,796,,353,,,,,31,,976,,,977", ",20,,,,,31,,,,,,31,,,,20,20,31,,,,,,,,764,,,,,,,,31,,,,,,,,,,,,,,,,", ",,,,,,,764,,,,,,,,1005,,,345,,,,,15,,,,,15,345,,,,242,,,,,31,,,,,,,", ",,,,,,,,,,18,,,15,,18,242,,,,,31,31,,,,18,31,,,21,,,,,21,,,,,,15,,,442", ",,,,,,398,773,773,,,,,,,,18,,,,,21,347,347,,,31,,31,31,,,,,,,,,,,,31", ",,,,,1091,,21,,,,,15,,,,,396,405,405,,15,,15,381,20,,,31,,,,,353,,,", ",242,,,,353,,,,,,,,,,,,,18,,,,,,,,20,,21,20,242,,,771,771,,18,21,,21", ",,18,,,,,,,,20,,,,,,,,18,,,,1106,,,,,,,15,,440,,,440,,,20,,,20,15,,", "20,,,15,440,,20,20,,,,20,20,,,,,,,,15,,,,,,,,,18,,,,,,,,,21,,443,,1145", "443,,,,,,,21,,,,,,21,443,18,18,,,773,,18,,,,,,773,,,21,,,,,,773,773", ",770,770,,,,,,,,,,,,,,,,,15,,,,15,1187,,,18,15,242,242,,,,,,,,,,,,242", ",,,353,,,,,,,,,,,353,15,,,,,,,,,,,,,18,21,15,15,,21,,,,347,21,,,20,", "771,,,20,,,,,771,,,,,347,20,,,771,771,,,,,,,21,,,,,,,20,43,,,,,43,,21", "21,,,,,,,,20,,,,,,,,296,,,,,,,,,,,,43,343,343,,,773,,773,,,773,773,", ",,,,773,,,,,,773,773,,,,43,,,773,773,,,,,,392,296,296,,,,,,,,,,,,,,", ",,,769,769,,20,,,770,,,,,,773,,770,,,,,,,20,,770,770,,,20,43,,,,,,,", ",43,,43,,,,20,,768,768,353,,,,,771,15,771,,,771,771,,,,,,771,,,,,,771", "771,,,,,,,771,771,,,,,,,,,,,,15,,,15,,,,20,,,,,,,,21,,,,,353,,,347,15", ",771,,,,,43,347,,,,20,20,,,,,20,43,767,767,,,773,43,,15,,21,440,,21", "773,15,,,773,,,440,440,43,,,440,440,,,,,,,21,,,,,,353,856,,20,,,,,,", ",770,,770,,,770,770,,,,21,773,770,443,,,,21,770,770,,,,443,443,,770", "770,443,443,,,,769,,,20,,,,,769,,773,,,,,,,769,769,43,,,,43,,,771,343", "43,,,,770,,,771,,,,771,,,,,,768,343,,,,,,,768,,,,,43,,,,768,768,,,,", ",,,,,43,43,,,,,,,,,771,,,,,,,,,,,,,15,,,,,15,,,,,,,,,,347,15,,,771,", ",,,,,347,,,,,,,,440,,,,,767,,,,,,,,767,,,,15,,21,,,767,767,21,,,,,770", ",,,,,21,,,770,,,,770,,,,,,,769,,769,,443,769,769,,,,,,769,,,,,,769,769", ",21,,,,,769,769,,,,,,,,,,770,,766,766,,,,,768,,768,,15,768,768,,,,,", "768,,,,,,768,768,769,,15,,770,,768,768,15,,,,,,,,,,,,,,43,,15,,,,1109", ",343,,,,,,,21,,343,,,,,,768,,,,,,,,,,21,,,,,43,21,,43,,,,,,,767,,767", ",,767,767,21,,15,,1108,767,,43,,,,767,767,34,,,,,34,767,767,,,,,,,,", ",,15,15,,43,34,,15,,,,43,,,,34,34,34,,34,769,,,,,21,,,767,769,,,,769", ",,,,405,,,,,,,,,34,,,,15,34,34,21,21,34,,,,21,,,,,768,,,,,,,,,768,,", "769,768,,,,,,,766,,,,,,,,766,,15,,,,,,405,766,766,21,34,,,,769,34,34", "34,34,34,,34,,,,,,768,,,,,,,,,,,,,,,,343,,,,,,,,,,21,343,,,,,768,767", ",,,,,,,,767,,,,767,,,,,,,,43,,,,,43,,,,,,,,,,,43,,,,,,,34,34,34,34,34", "34,34,,,,,,34,767,,,,,34,34,34,34,,,,,,,43,,,,,,,34,,,,,,,,,,767,,,", ",,,,,,,,,,,,,,,,766,,766,,,766,766,,,,,,766,,,,34,,766,766,,,,34,34", ",766,766,,,,,34,,,,,,,,,,,,43,,,,,,34,,,,34,,,,,34,,,43,,,766,,,43,", ",,,,,,,,,,,,,,43,,,,1104,34,,,,,,,,,,,,,,34,34,34,,,,,,,,,,,,,,,,,,", "34,,,,,,,,,,,,,,,43,,,,,,,,,,,,,296,,,,,,,,,,,,,,,,43,43,,,,,43,,,,", ",,,,,,249,,,34,,,,766,,,317,317,317,,,,766,,,,766,,364,365,,367,368", ",370,,296,,,43,,,,,,,,,34,317,317,,,,,,,,34,,,,,,,,,,,,766,,,,,,,,,", ",,,43,,,,,,,,,,,,,,,,,,,766,,,,,,,,,,,,,,,,34,,,,,,,,,,34,,,,,,,,,,", ",,,,,,,,,,,,,,,,,34,,,34,,,,,,,34,,,,,,,,,,34,,,,34,,,,,,,,,,,,,,,,", ",,,,317,447,,,453,317,34,,,34,34,,,34,,,,,453,34,34,,,,34,34,,,,,,249", ",,,,,,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544", "545,546,547,548,549,550,,,,,551,,,,,,,,,,,,,,,,,,,,,,,317,317,,,,,,", ",317,,,,,,,317,,317,,,317,317,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,604,,,,,34,,,,,,,,,,,,,,,,,,,,,,,34,,,,,34,34,,,,,,,,,,34,,,,,,,,", ",,,,,,,,,34,,,,,317,,,,,,,,,,,,34,,,,,,,,,,,,,,,,,,,,,,,692,,,,,,,,", ",,,,,,,,,,,,,,,,,317,,,,,,,,,,,,,723,,34,,,,,,,,317,,453,453,453,,,", ",34,,,,,,,,,,,,34,,,,,,34,,,,,,34,,,,,,,365,,,,,,,,,34,317,,317,,317", ",,,,,,,,,,,,,,,317,,,,,,,,,,453,,,816,,817,,,,,,317,,,317,,,,,,,,,,34", ",,317,317,,,,,,,,,,317,,,,,,,,,,,,,,,34,34,,,,,34,,,,,,,,,,,,317,453", "317,,,,874,,,317,317,453,453,,,,453,453,,,,,,317,,,,,,,,,34,,34,34,", "317,,,,,,,,,,34,,,,,,,,,,,,,,692,723,,,,,,,,,,,,,,34,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,317,,,,,,,,,317,,,317,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,317,,,,,,,,453,,,,,,,,", ",,,,1010,1011,,,,,,,,,,,,,,,,,,,,,,,,,,,,1033,1034,453,453,453,453,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1067,,,,,,,,,,,,,,,,,,,,,,,,,", ",,317,,,,,,,,,,,,,,,,,,,317,,,,,,,,,,,,,,,,,,,,,,,,,,453,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,317"]; + racc_goto_table = (arr = $$$('Array').$new(4752, nil)); + idx = 0; + $send(clist, 'each', [], function $Ruby31$6(str){ + + + if (str == null) str = nil;; + return $send(str.$split(",", -1), 'each', [], function $$7(i){var $writer = nil; + + + + if (i == null) i = nil;; + if (!$truthy(i['$empty?']())) { + + $writer = [idx, i.$to_i()]; + $send(arr, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return (idx = $rb_plus(idx, 1));}, 1);}, 1); + clist = ["72,198,158,91,91,72,75,75,36,36,36,68,46,198,31,230,230,48,107,19,19", "10,75,19,72,34,112,10,128,113,34,12,55,55,82,82,72,72,72,73,117,139", "139,94,33,110,110,11,92,228,228,228,77,77,13,33,135,70,133,22,111,34", "34,34,72,9,44,44,80,17,17,82,82,82,72,72,72,19,19,19,19,239,87,87,56", "56,56,235,8,34,95,20,95,8,20,51,31,32,187,34,34,34,69,41,41,177,177", "58,20,55,117,7,24,24,149,28,26,26,119,57,26,129,72,239,89,89,152,192", "89,28,87,72,231,72,151,225,225,200,200,5,35,35,64,193,2,157,157,34,90", "90,90,127,8,147,130,236,34,145,34,207,161,6,3,10,214,214,29,14,65,178", "178,29,161,16,26,26,26,26,18,178,94,90,90,175,224,224,13,21,66,25,239", "230,176,74,74,27,42,91,36,43,95,95,29,45,202,202,50,52,60,5,8,78,215", "215,215,215,72,83,84,8,86,8,75,93,152,236,105,11,72,106,29,114,151,116", "72,149,198,120,121,122,123,34,124,34,128,125,34,126,128,131,136,72,142", "34,22,22,143,150,22,34,34,112,11,146,66,146,26,26,33,88,88,88,22,73", "153,154,34,2,6,155,36,36,156,26,26,70,159,66,29,36,160,162,164,165,70", "168,169,29,170,29,192,171,88,172,173,180,182,200,95,192,31,225,33,183", "87,87,63,63,63,184,145,157,188,91,189,55,55,147,58,91,195,72,68,196", "19,72,82,129,205,72,72,206,149,1,26,210,11,211,193,212,119,11,51,127", "130,82,34,192,72,213,34,216,175,217,34,34,117,175,175,218,72,33,35,35", "32,219,176,176,80,220,31,223,29,34,29,72,72,29,32,33,229,9,202,202,29", "34,11,11,55,233,29,29,234,69,235,,,187,55,,34,34,,73,,,,29,31,8,33,90", ",75,117,66,230,111,31,90,,26,91,10,,,55,7,91,,,64,,,55,36,64,128,128", "32,,119,26,13,88,88,215,231,215,,,139,,31,66,5,,65,33,77,228,228,65", "228,228,,228,,,32,,55,55,230,36,230,17,,32,,91,,,133,36,,110,29,57,", "70,29,66,57,,,29,40,,,66,32,66,56,79,75,66,94,239,56,,,,5,,72,72,91", "79,95,92,,66,,146,,29,40,66,200,200,88,88,20,117,,225,,,200,88,29,29", "20,20,200,157,66,20,20,68,174,174,91,36,41,231,177,73,68,89,32,,91,28", "28,32,32,72,28,28,13,146,82,191,,72,24,75,63,,191,82,,,72,,63,75,200", "94,91,36,34,,,,,56,91,,34,36,,,,72,,,72,34,,,,113,44,75,11,,,11,,75", ",,139,139,10,,,72,34,,135,34,231,91,36,128,128,,,,,,,,117,,,,,,75,66", "34,198,72,,,140,75,,140,72,,117,110,228,228,228,228,,,90,,,,32,32,32", ",34,,,34,,146,,34,146,,,,,34,34,22,,77,34,34,,,,,,22,22,,12,,22,22,", "90,17,,112,,,,,,107,,,,,,,139,200,72,29,,20,,110,,110,72,,,230,8,,87", ",158,72,72,8,,191,,46,28,,,146,48,228,191,,68,75,191,,174,,91,29,,91", "29,68,174,10,,,,,,90,19,,,82,,,72,230,,,,29,,,82,,,72,79,,79,,,,,,191", ",,,,34,,,,,132,,29,40,,29,34,,72,29,,32,,72,,29,29,,,11,29,29,191,,72", ",,40,10,,66,88,26,34,,11,,,34,,,,,,,66,,,,34,,,,,,,,,10,72,79,26,,,", ",,34,,,11,90,,19,,,,,,22,,,,,34,,230,66,,230,,72,,72,,,72,72,88,66,", ",19,72,,,,40,,72,72,,,,140,,,72,72,,,31,87,,,,87,174,,,,,174,174,,,198", ",,55,72,,79,79,,174,,79,79,,,11,,,,,72,,72,230,66,66,66,132,72,34,132", ",132,11,26,,,,29,,66,,,29,72,82,,34,72,,,,59,34,29,11,174,59,,,,,,26", "117,,,40,,34,,,29,34,59,,,,,,,,,,59,59,59,,59,29,,,,,,,,,,72,132,,132", ",132,,132,,,82,,,72,,,,59,,,,,59,59,132,34,59,,,72,72,19,19,,,72,,,34", "140,11,,140,,,140,11,140,72,,144,,144,,34,34,,72,,,34,72,,,,,33,,,91", "36,29,,82,,59,72,98,98,72,59,59,59,59,59,,59,,,29,11,,,,75,29,,,,,79", "34,,,34,72,,,,,,29,,,,140,,140,75,140,,140,,72,,,,,26,26,,,,,11,,232", "72,140,,,,,,79,79,79,79,34,40,,,,,,,,,,,,,,40,40,,29,,,59,59,59,59,59", "59,59,,,,,,59,,,,,,59,59,59,59,,,,,29,29,85,30,,,29,,30,59,,,,,,,,,", ",,,,,,30,,,,40,,,,,,30,30,30,,30,30,30,,,,,,,,,29,,,,,59,,,,40,,,59", "59,,79,,30,40,,,59,30,30,40,,30,30,30,30,,,141,141,141,,,,,59,,40,,59", "29,,,,59,,98,232,,,232,,,232,98,232,,,,,,97,97,98,98,,,,,,144,30,,,59", ",30,30,30,30,30,,30,,,,,,59,59,59,,,,,,,40,,85,85,,40,40,,,,,,59,,,", ",,,,,144,,144,,144,232,,232,,232,,232,,,,,141,141,141,141,,141,,40,", ",,,232,,,,,,,,,,,,,,,,,,,30,30,30,30,30,30,30,,59,,,,30,141,141,141", "141,,30,30,30,30,,,,141,,,,,,,,,,30,,85,,85,,,85,85,,,,59,,40,40,40", ",,,,,59,,40,98,,98,,,98,98,,,,,144,98,144,,,,,98,98,,30,,40,,,98,98", "30,30,,,,,,,,30,,144,,,,,,,,,,,,,,,97,30,,59,,30,,,97,30,30,98,,59,", ",,97,97,,,,,,,,,144,30,144,,144,,38,,,,85,38,,30,59,,,59,,,40,,,144", "59,,,30,30,30,,,,,59,,,,59,,,,38,38,38,,,,30,,,,,,,,,,,,,,40,,,59,,", "59,59,38,85,59,,,,,,59,59,38,38,38,59,59,,,,,,,,,,,,,,,,,,,,,,,,,,,98", "30,,,,,,,,98,,,,98,,,,38,,,,,,,,,38,,38,,,,,85,,85,,85,,,30,97,,97,", ",97,97,,,30,,,97,,,,98,,97,97,,,,,,,97,97,,,,,,85,,,85,,,,,,,,,,,,98", "85,,,,,,,,,,,,,59,,,97,,,,30,38,,38,,,38,,30,,30,,,38,,,59,30,,38,38", "59,59,,85,,,,,,,,59,85,85,,38,,30,,,30,,,,,,85,30,,59,,,,,,,,30,,,85", "30,,,,,59,,,,,,,,,,,,,,,,,,,,,,30,,,30,30,,,30,,,,,,30,30,,,,30,30,", ",,,,,,38,,,,38,,,97,38,38,,,,,,59,97,,,,97,,,,,85,,38,,,,,59,,85,,,85", ",38,,,,,59,,,,,,59,,,,38,38,59,,,,,,,,97,,,,,,,,59,,,,,,,,,,,,,,,,,", ",,,,,,97,,,,,,,,85,,,30,,,,,23,,,,,23,30,,,,30,,,,,59,,,,,,,,,,,,,,", ",,,30,,,23,,30,30,,,,,59,59,,,,30,59,,,39,,,,,39,,,,,,23,,,30,,,,,,", "23,109,109,,,,,,,,30,,,,,39,39,39,,,59,,59,59,,,,,,,,,,,,59,,,,,,85", ",39,,,,,23,,,,,39,39,39,,23,,23,85,38,,,59,,,,,38,,,,,30,,,,38,,,,,", ",,,,,,,30,,,,,,,,38,,39,38,30,,,104,104,,30,39,,39,,,30,,,,,,,,38,,", ",,,,,30,,,,30,,,,,,,23,,23,,,23,,,38,,,38,23,,,38,,,23,23,,38,38,,,", "38,38,,,,,,,,23,,,,,,,,,30,,,,,,,,,39,,39,,30,39,,,,,,,39,,,,,,39,39", "30,30,,,109,,30,,,,,,109,,,39,,,,,,109,109,,103,103,,,,,,,,,,,,,,,,", "23,,,,23,30,,,30,23,30,30,,,,,,,,,,,,30,,,,38,,,,,,,,,,,38,23,,,,,,", ",,,,,,30,39,23,23,,39,,,,39,39,,,38,,104,,,38,,,,,104,,,,,39,38,,,104", "104,,,,,,,39,,,,,,,38,71,,,,,71,,39,39,,,,,,,,38,,,,,,,,71,,,,,,,,,", ",,71,71,71,,,109,,109,,,109,109,,,,,,109,,,,,,109,109,,,,71,,,109,109", ",,,,,71,71,71,,,,,,,,,,,,,,,,,,102,102,,38,,,103,,,,,,109,,103,,,,,", ",38,,103,103,,,38,71,,,,,,,,,71,,71,,,,38,,101,101,38,,,,,104,23,104", ",,104,104,,,,,,104,,,,,,104,104,,,,,,,104,104,,,,,,,,,,,,23,,,23,,,", "38,,,,,,,,39,,,,,38,,,39,23,,104,,,,,71,39,,,,38,38,,,,,38,71,100,100", ",,109,71,,23,,39,23,,39,109,23,,,109,,,23,23,71,,,23,23,,,,,,,39,,,", ",,38,39,,38,,,,,,,,103,,103,,,103,103,,,,39,109,103,39,,,,39,103,103", ",,,39,39,,103,103,39,39,,,,102,,,38,,,,,102,,109,,,,,,,102,102,71,,", ",71,,,104,71,71,,,,103,,,104,,,,104,,,,,,101,71,,,,,,,101,,,,,71,,,", "101,101,,,,,,,,,,71,71,,,,,,,,,104,,,,,,,,,,,,,23,,,,,23,,,,,,,,,,39", "23,,,104,,,,,,,39,,,,,,,,23,,,,,100,,,,,,,,100,,,,23,,39,,,100,100,39", ",,,,103,,,,,,39,,,103,,,,103,,,,,,,102,,102,,39,102,102,,,,,,102,,,", ",,102,102,,39,,,,,102,102,,,,,,,,,,103,,99,99,,,,,101,,101,,23,101,101", ",,,,,101,,,,,,101,101,102,,23,,103,,101,101,23,,,,,,,,,,,,,,71,,23,", ",,23,,71,,,,,,,39,,71,,,,,,101,,,,,,,,,,39,,,,,71,39,,71,,,,,,,100,", "100,,,100,100,39,,23,,39,100,,71,,,,100,100,62,,,,,62,100,100,,,,,,", ",,,,23,23,,71,62,,23,,,,71,,,,62,62,62,,62,102,,,,,39,,,100,102,,,,102", ",,,,39,,,,,,,,,62,,,,23,62,62,39,39,62,,,,39,,,,,101,,,,,,,,,101,,,102", "101,,,,,,,99,,,,,,,,99,,23,,,,,,39,99,99,39,62,,,,102,62,62,62,62,62", ",62,,,,,,101,,,,,,,,,,,,,,,,71,,,,,,,,,,39,71,,,,,101,100,,,,,,,,,100", ",,,100,,,,,,,,71,,,,,71,,,,,,,,,,,71,,,,,,,62,62,62,62,62,62,62,,,,", ",62,100,,,,,62,62,62,62,,,,,,,71,,,,,,,62,,,,,,,,,,100,,,,,,,,,,,,,", ",,,,,,99,,99,,,99,99,,,,,,99,,,,62,,99,99,,,,62,62,,99,99,,,,,62,,,", ",,,,,,,,71,,,,,,62,,,,62,,,,,62,,,71,,,99,,,71,,,,,,,,,,,,,,,,71,,,", "71,62,,,,,,,,,,,,,,62,62,62,,,,,,,,,,,,,,,,,,,62,,,,,,,,,,,,,,,71,,", ",,,,,,,,,,71,,,,,,,,,,,,,,,,71,71,,,,,71,,,,,,,,,,,37,,,62,,,,99,,,37", "37,37,,,,99,,,,99,,37,37,,37,37,,37,,71,,,71,,,,,,,,,62,37,37,,,,,,", ",62,,,,,,,,,,,,99,,,,,,,,,,,,,71,,,,,,,,,,,,,,,,,,,99,,,,,,,,,,,,,,", ",62,,,,,,,,,,62,,,,,,,,,,,,,,,,,,,,,,,,,,,,62,,,62,,,,,,,62,,,,,,,,", ",62,,,,62,,,,,,,,,,,,,,,,,,,,,37,37,,,37,37,62,,,62,62,,,62,,,,,37,62", "62,,,,62,62,,,,,,37,,,,,,,37,37,37,37,37,37,37,37,37,37,37,37,37,37", "37,37,37,37,37,37,37,37,,,,,37,,,,,,,,,,,,,,,,,,,,,,,37,37,,,,,,,,37", ",,,,,,37,,37,,,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,", "62,,,,,,,,,,,,,,,,,,,,,,,62,,,,,62,62,,,,,,,,,,62,,,,,,,,,,,,,,,,,,62", ",,,,37,,,,,,,,,,,,62,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,", ",,,37,,,,,,,,,,,,,37,,62,,,,,,,,37,,37,37,37,,,,,62,,,,,,,,,,,,62,,", ",,,62,,,,,,62,,,,,,,37,,,,,,,,,62,37,,37,,37,,,,,,,,,,,,,,,,37,,,,,", ",,,,37,,,37,,37,,,,,,37,,,37,,,,,,,,,,62,,,37,37,,,,,,,,,,37,,,,,,,", ",,,,,,,62,62,,,,,62,,,,,,,,,,,,37,37,37,,,,37,,,37,37,37,37,,,,37,37", ",,,,,37,,,,,,,,,62,,62,62,,37,,,,,,,,,,62,,,,,,,,,,,,,,37,37,,,,,,,", ",,,,,,62,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,37,,,37", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37", ",,,,,,,37,,,,,,,,,,,,,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,37,37,37,37", "37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,", ",,,,37,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37"]; + racc_goto_check = (arr = $$$('Array').$new(4752, nil)); + idx = 0; + $send(clist, 'each', [], function $Ruby31$8(str){ + + + if (str == null) str = nil;; + return $send(str.$split(",", -1), 'each', [], function $$9(i){var $writer = nil; + + + + if (i == null) i = nil;; + if (!$truthy(i['$empty?']())) { + + $writer = [idx, i.$to_i()]; + $send(arr, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return (idx = $rb_plus(idx, 1));}, 1);}, 1); + racc_goto_pointer = [nil, 343, 142, 162, nil, 134, 154, 106, 86, 56, -209, 9, -441, -639, -723, nil, -407, 59, 167, -52, -129, 111, 35, 2068, -107, -30, 45, 59, -108, 164, 1262, -210, -357, 26, 23, 121, -26, 3589, 1625, 2121, 484, -424, -59, -57, -7, -419, -14, nil, -9, nil, 180, 66, -345, nil, nil, -193, 53, -186, -458, 1017, -350, nil, 3145, 282, 104, 130, -51, nil, -28, 62, -303, 2499, -2, -363, 116, -4, nil, 42, -220, 291, 20, nil, -5, 166, -153, 1195, 153, 63, 235, -252, 114, -28, -258, -332, -277, -480, nil, 849, 616, 2504, 2203, 2113, 2068, 1856, 1723, 200, 161, -51, nil, 1618, -339, -763, -364, -596, 155, nil, -173, 35, nil, 98, 172, -135, 173, -366, -397, -603, -161, -762, -466, -373, -760, -664, -141, -639, nil, -437, -722, nil, nil, -436, -27, 269, -822, -716, 413, -815, -438, -638, nil, -737, -842, -965, -973, -135, -575, 194, -361, -88, -25, -714, -711, -394, -9, nil, -18, -18, nil, nil, -488, -796, -691, -919, -530, -844, 34, -562, -553, -422, -760, nil, -620, nil, -620, -431, -425, nil, nil, -648, -424, -423, nil, -352, -816, -781, nil, -615, -612, nil, -89, nil, -390, nil, -558, nil, nil, -437, -353, -735, nil, nil, 257, 254, 255, 264, -250, -200, 265, 266, 271, -274, -271, nil, nil, -259, -168, -98, nil, nil, -432, -311, -218, -569, 230, -298, -730, -616, -983, nil, nil, -491]; + racc_goto_default = [nil, nil, nil, nil, 5, nil, 6, 391, 334, nil, nil, 472, nil, 984, nil, 331, 332, nil, nil, nil, 13, 14, 22, 247, nil, nil, 16, nil, 441, 248, 363, nil, nil, 637, 251, nil, 27, 25, 252, 246, 517, nil, nil, nil, nil, nil, nil, 386, 143, 26, nil, nil, nil, 28, 29, 812, nil, nil, nil, 351, nil, 30, 348, 455, 37, nil, nil, 39, 42, 41, nil, 243, 244, 403, nil, 463, 142, 87, nil, 446, 103, 51, 54, 283, nil, 323, nil, 891, 456, nil, 457, 468, 480, 686, 569, 321, 307, 55, 56, 57, 58, 59, 60, 61, 62, 63, nil, 308, 69, 70, nil, nil, nil, nil, nil, 77, nil, 619, 78, 230, nil, nil, nil, nil, nil, nil, nil, 711, 492, nil, 712, 713, 478, 474, 475, nil, 1179, 707, 1071, nil, 479, nil, nil, nil, 481, nil, 483, nil, 971, nil, nil, nil, 490, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 467, nil, nil, 791, 783, nil, nil, nil, nil, nil, nil, 1051, nil, 736, 937, 738, 739, 743, 740, 741, nil, nil, 742, 744, nil, nil, nil, 936, 938, nil, 748, 750, 751, 752, 753, nil, 757, 501, 758, 759, 760, 761, nil, nil, nil, 86, 88, 89, nil, nil, nil, nil, 647, nil, nil, nil, nil, nil, 99, 100, nil, 231, 901, 234, 477, nil, 482, 909, 495, 497, 498, 1082, 502, 1083, 505, 508, 326]; + racc_reduce_table = [0, 0, "racc_error", 0, 150, "_reduce_1", 2, 148, "_reduce_2", 2, 149, "_reduce_3", 0, 151, "_reduce_4", 1, 151, "_reduce_5", 3, 151, "_reduce_6", 2, 151, "_reduce_7", 1, 153, "_reduce_none", 2, 153, "_reduce_9", 3, 156, "_reduce_10", 4, 157, "_reduce_11", 2, 158, "_reduce_12", 0, 162, "_reduce_13", 1, 162, "_reduce_14", 3, 162, "_reduce_15", 2, 162, "_reduce_16", 1, 163, "_reduce_none", 2, 163, "_reduce_18", 0, 174, "_reduce_19", 4, 155, "_reduce_20", 3, 155, "_reduce_21", 3, 155, "_reduce_22", 3, 155, "_reduce_23", 2, 155, "_reduce_24", 3, 155, "_reduce_25", 3, 155, "_reduce_26", 3, 155, "_reduce_27", 3, 155, "_reduce_28", 3, 155, "_reduce_29", 4, 155, "_reduce_30", 1, 155, "_reduce_none", 3, 155, "_reduce_32", 3, 155, "_reduce_33", 5, 155, "_reduce_34", 3, 155, "_reduce_35", 1, 155, "_reduce_none", 3, 167, "_reduce_37", 3, 167, "_reduce_38", 6, 167, "_reduce_39", 5, 167, "_reduce_40", 5, 167, "_reduce_41", 5, 167, "_reduce_42", 5, 167, "_reduce_43", 4, 167, "_reduce_44", 6, 167, "_reduce_45", 4, 167, "_reduce_46", 6, 167, "_reduce_47", 3, 167, "_reduce_48", 1, 175, "_reduce_none", 3, 175, "_reduce_50", 1, 175, "_reduce_none", 1, 173, "_reduce_none", 3, 173, "_reduce_53", 3, 173, "_reduce_54", 3, 173, "_reduce_55", 2, 173, "_reduce_56", 0, 189, "_reduce_57", 4, 173, "_reduce_58", 0, 190, "_reduce_59", 4, 173, "_reduce_60", 1, 173, "_reduce_none", 1, 166, "_reduce_none", 0, 194, "_reduce_63", 3, 191, "_reduce_64", 1, 193, "_reduce_65", 2, 181, "_reduce_66", 0, 199, "_reduce_67", 5, 185, "_reduce_68", 1, 169, "_reduce_none", 1, 169, "_reduce_none", 1, 200, "_reduce_none", 4, 200, "_reduce_72", 0, 207, "_reduce_73", 4, 204, "_reduce_74", 1, 206, "_reduce_none", 2, 183, "_reduce_76", 3, 183, "_reduce_77", 4, 183, "_reduce_78", 5, 183, "_reduce_79", 4, 183, "_reduce_80", 5, 183, "_reduce_81", 2, 183, "_reduce_82", 2, 183, "_reduce_83", 2, 183, "_reduce_84", 2, 183, "_reduce_85", 2, 183, "_reduce_86", 1, 168, "_reduce_87", 3, 168, "_reduce_88", 1, 212, "_reduce_89", 3, 212, "_reduce_90", 1, 211, "_reduce_none", 2, 211, "_reduce_92", 3, 211, "_reduce_93", 5, 211, "_reduce_94", 2, 211, "_reduce_95", 4, 211, "_reduce_96", 2, 211, "_reduce_97", 4, 211, "_reduce_98", 1, 211, "_reduce_99", 3, 211, "_reduce_100", 1, 215, "_reduce_none", 3, 215, "_reduce_102", 2, 214, "_reduce_103", 3, 214, "_reduce_104", 1, 217, "_reduce_105", 3, 217, "_reduce_106", 1, 216, "_reduce_107", 1, 216, "_reduce_108", 4, 216, "_reduce_109", 3, 216, "_reduce_110", 3, 216, "_reduce_111", 3, 216, "_reduce_112", 3, 216, "_reduce_113", 2, 216, "_reduce_114", 1, 216, "_reduce_115", 1, 170, "_reduce_116", 1, 170, "_reduce_117", 4, 170, "_reduce_118", 3, 170, "_reduce_119", 3, 170, "_reduce_120", 3, 170, "_reduce_121", 3, 170, "_reduce_122", 2, 170, "_reduce_123", 1, 170, "_reduce_124", 1, 220, "_reduce_125", 1, 220, "_reduce_none", 2, 221, "_reduce_127", 1, 221, "_reduce_128", 3, 221, "_reduce_129", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 164, "_reduce_135", 1, 164, "_reduce_none", 1, 165, "_reduce_137", 0, 225, "_reduce_138", 4, 165, "_reduce_139", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 3, 184, "_reduce_211", 3, 184, "_reduce_212", 6, 184, "_reduce_213", 5, 184, "_reduce_214", 5, 184, "_reduce_215", 5, 184, "_reduce_216", 5, 184, "_reduce_217", 4, 184, "_reduce_218", 3, 184, "_reduce_219", 3, 184, "_reduce_220", 3, 184, "_reduce_221", 2, 184, "_reduce_222", 2, 184, "_reduce_223", 2, 184, "_reduce_224", 2, 184, "_reduce_225", 3, 184, "_reduce_226", 3, 184, "_reduce_227", 3, 184, "_reduce_228", 3, 184, "_reduce_229", 3, 184, "_reduce_230", 3, 184, "_reduce_231", 4, 184, "_reduce_232", 2, 184, "_reduce_233", 2, 184, "_reduce_234", 3, 184, "_reduce_235", 3, 184, "_reduce_236", 3, 184, "_reduce_237", 3, 184, "_reduce_238", 1, 184, "_reduce_none", 3, 184, "_reduce_240", 3, 184, "_reduce_241", 3, 184, "_reduce_242", 3, 184, "_reduce_243", 3, 184, "_reduce_244", 2, 184, "_reduce_245", 2, 184, "_reduce_246", 3, 184, "_reduce_247", 3, 184, "_reduce_248", 3, 184, "_reduce_249", 3, 184, "_reduce_250", 0, 231, "_reduce_251", 4, 184, "_reduce_252", 6, 184, "_reduce_253", 4, 184, "_reduce_254", 6, 184, "_reduce_255", 4, 184, "_reduce_256", 6, 184, "_reduce_257", 1, 184, "_reduce_none", 1, 230, "_reduce_none", 1, 230, "_reduce_none", 1, 230, "_reduce_none", 1, 230, "_reduce_none", 3, 228, "_reduce_263", 3, 228, "_reduce_264", 1, 232, "_reduce_none", 1, 233, "_reduce_none", 2, 233, "_reduce_none", 4, 233, "_reduce_268", 2, 233, "_reduce_269", 1, 226, "_reduce_none", 3, 226, "_reduce_271", 3, 238, "_reduce_272", 5, 238, "_reduce_273", 3, 238, "_reduce_274", 0, 240, "_reduce_275", 1, 240, "_reduce_none", 0, 178, "_reduce_277", 1, 178, "_reduce_none", 2, 178, "_reduce_none", 4, 178, "_reduce_280", 2, 178, "_reduce_281", 1, 210, "_reduce_282", 2, 210, "_reduce_283", 2, 210, "_reduce_284", 4, 210, "_reduce_285", 1, 210, "_reduce_286", 0, 243, "_reduce_287", 2, 203, "_reduce_288", 2, 242, "_reduce_289", 1, 242, "_reduce_290", 2, 241, "_reduce_291", 0, 241, "_reduce_292", 1, 235, "_reduce_293", 2, 235, "_reduce_294", 3, 235, "_reduce_295", 4, 235, "_reduce_296", 1, 172, "_reduce_297", 1, 172, "_reduce_none", 3, 171, "_reduce_299", 4, 171, "_reduce_300", 2, 171, "_reduce_301", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_312", 0, 267, "_reduce_313", 4, 229, "_reduce_314", 0, 268, "_reduce_315", 4, 229, "_reduce_316", 0, 269, "_reduce_317", 4, 229, "_reduce_318", 3, 229, "_reduce_319", 3, 229, "_reduce_320", 2, 229, "_reduce_321", 3, 229, "_reduce_322", 3, 229, "_reduce_323", 1, 229, "_reduce_324", 4, 229, "_reduce_325", 3, 229, "_reduce_326", 1, 229, "_reduce_327", 0, 270, "_reduce_328", 6, 229, "_reduce_329", 4, 229, "_reduce_330", 3, 229, "_reduce_331", 2, 229, "_reduce_332", 1, 229, "_reduce_none", 2, 229, "_reduce_334", 1, 229, "_reduce_none", 6, 229, "_reduce_336", 6, 229, "_reduce_337", 4, 229, "_reduce_338", 4, 229, "_reduce_339", 5, 229, "_reduce_340", 4, 229, "_reduce_341", 5, 229, "_reduce_342", 6, 229, "_reduce_343", 0, 271, "_reduce_344", 6, 229, "_reduce_345", 0, 272, "_reduce_346", 7, 229, "_reduce_347", 0, 273, "_reduce_348", 5, 229, "_reduce_349", 4, 229, "_reduce_350", 4, 229, "_reduce_351", 1, 229, "_reduce_352", 1, 229, "_reduce_353", 1, 229, "_reduce_354", 1, 229, "_reduce_355", 1, 177, "_reduce_none", 1, 262, "_reduce_357", 1, 265, "_reduce_358", 1, 196, "_reduce_359", 1, 209, "_reduce_360", 1, 257, "_reduce_none", 1, 257, "_reduce_none", 2, 257, "_reduce_363", 1, 192, "_reduce_none", 1, 192, "_reduce_none", 1, 258, "_reduce_none", 5, 258, "_reduce_367", 1, 160, "_reduce_none", 2, 160, "_reduce_369", 1, 261, "_reduce_none", 1, 261, "_reduce_none", 1, 274, "_reduce_372", 3, 274, "_reduce_373", 1, 277, "_reduce_374", 3, 277, "_reduce_375", 1, 276, "_reduce_none", 3, 276, "_reduce_377", 5, 276, "_reduce_378", 1, 276, "_reduce_379", 3, 276, "_reduce_380", 2, 278, "_reduce_381", 1, 278, "_reduce_382", 1, 279, "_reduce_none", 1, 279, "_reduce_none", 0, 284, "_reduce_385", 2, 282, "_reduce_386", 4, 283, "_reduce_387", 2, 283, "_reduce_388", 2, 283, "_reduce_389", 1, 283, "_reduce_390", 2, 288, "_reduce_391", 0, 288, "_reduce_392", 1, 289, "_reduce_none", 6, 290, "_reduce_394", 8, 290, "_reduce_395", 4, 290, "_reduce_396", 6, 290, "_reduce_397", 4, 290, "_reduce_398", 2, 290, "_reduce_none", 6, 290, "_reduce_400", 2, 290, "_reduce_401", 4, 290, "_reduce_402", 6, 290, "_reduce_403", 2, 290, "_reduce_404", 4, 290, "_reduce_405", 2, 290, "_reduce_406", 4, 290, "_reduce_407", 1, 290, "_reduce_none", 0, 294, "_reduce_409", 1, 294, "_reduce_410", 3, 295, "_reduce_411", 4, 295, "_reduce_412", 1, 296, "_reduce_413", 4, 296, "_reduce_414", 1, 297, "_reduce_415", 3, 297, "_reduce_416", 1, 298, "_reduce_417", 1, 298, "_reduce_none", 0, 302, "_reduce_419", 0, 303, "_reduce_420", 5, 256, "_reduce_421", 4, 300, "_reduce_422", 1, 300, "_reduce_423", 0, 306, "_reduce_424", 4, 301, "_reduce_425", 0, 307, "_reduce_426", 4, 301, "_reduce_427", 0, 309, "_reduce_428", 4, 305, "_reduce_429", 2, 201, "_reduce_430", 4, 201, "_reduce_431", 5, 201, "_reduce_432", 5, 201, "_reduce_433", 2, 255, "_reduce_434", 4, 255, "_reduce_435", 4, 255, "_reduce_436", 3, 255, "_reduce_437", 3, 255, "_reduce_438", 3, 255, "_reduce_439", 2, 255, "_reduce_440", 1, 255, "_reduce_441", 4, 255, "_reduce_442", 0, 311, "_reduce_443", 4, 254, "_reduce_444", 0, 312, "_reduce_445", 4, 254, "_reduce_446", 0, 313, "_reduce_447", 3, 205, "_reduce_448", 0, 314, "_reduce_449", 0, 315, "_reduce_450", 4, 308, "_reduce_451", 5, 259, "_reduce_452", 1, 316, "_reduce_453", 1, 316, "_reduce_none", 0, 319, "_reduce_455", 0, 320, "_reduce_456", 7, 260, "_reduce_457", 1, 318, "_reduce_458", 1, 318, "_reduce_none", 1, 317, "_reduce_460", 3, 317, "_reduce_461", 3, 317, "_reduce_462", 1, 188, "_reduce_none", 2, 188, "_reduce_464", 3, 188, "_reduce_465", 1, 188, "_reduce_466", 1, 188, "_reduce_467", 1, 188, "_reduce_468", 1, 321, "_reduce_none", 3, 326, "_reduce_470", 1, 326, "_reduce_none", 3, 328, "_reduce_472", 1, 328, "_reduce_none", 1, 330, "_reduce_474", 1, 331, "_reduce_475", 1, 329, "_reduce_none", 1, 329, "_reduce_none", 4, 329, "_reduce_478", 4, 329, "_reduce_479", 4, 329, "_reduce_480", 3, 329, "_reduce_481", 4, 329, "_reduce_482", 4, 329, "_reduce_483", 4, 329, "_reduce_484", 3, 329, "_reduce_485", 3, 329, "_reduce_486", 3, 329, "_reduce_487", 2, 329, "_reduce_488", 0, 335, "_reduce_489", 4, 329, "_reduce_490", 2, 329, "_reduce_491", 0, 336, "_reduce_492", 4, 329, "_reduce_493", 1, 322, "_reduce_494", 1, 322, "_reduce_495", 2, 322, "_reduce_496", 3, 322, "_reduce_497", 5, 322, "_reduce_498", 2, 322, "_reduce_499", 4, 322, "_reduce_500", 1, 322, "_reduce_none", 2, 337, "_reduce_502", 3, 337, "_reduce_503", 1, 324, "_reduce_504", 3, 324, "_reduce_505", 5, 323, "_reduce_506", 2, 340, "_reduce_507", 1, 340, "_reduce_508", 1, 339, "_reduce_509", 3, 339, "_reduce_510", 1, 338, "_reduce_none", 3, 325, "_reduce_512", 1, 325, "_reduce_513", 2, 325, "_reduce_514", 1, 325, "_reduce_515", 1, 341, "_reduce_516", 3, 341, "_reduce_517", 2, 343, "_reduce_518", 1, 343, "_reduce_519", 1, 344, "_reduce_520", 3, 344, "_reduce_521", 2, 346, "_reduce_522", 1, 346, "_reduce_523", 2, 348, "_reduce_524", 1, 342, "_reduce_none", 1, 342, "_reduce_none", 1, 332, "_reduce_none", 3, 332, "_reduce_528", 3, 332, "_reduce_529", 2, 332, "_reduce_530", 2, 332, "_reduce_531", 1, 332, "_reduce_none", 1, 332, "_reduce_none", 1, 332, "_reduce_none", 2, 332, "_reduce_535", 2, 332, "_reduce_536", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_545", 1, 349, "_reduce_none", 1, 327, "_reduce_547", 2, 350, "_reduce_548", 2, 350, "_reduce_549", 4, 351, "_reduce_550", 2, 333, "_reduce_551", 3, 333, "_reduce_552", 1, 333, "_reduce_553", 6, 159, "_reduce_554", 0, 159, "_reduce_555", 1, 353, "_reduce_556", 1, 353, "_reduce_none", 1, 353, "_reduce_none", 2, 354, "_reduce_559", 1, 354, "_reduce_none", 2, 161, "_reduce_561", 1, 161, "_reduce_none", 1, 244, "_reduce_none", 1, 244, "_reduce_none", 1, 245, "_reduce_565", 1, 356, "_reduce_566", 2, 356, "_reduce_567", 3, 357, "_reduce_568", 1, 357, "_reduce_569", 1, 357, "_reduce_570", 3, 246, "_reduce_571", 4, 247, "_reduce_572", 3, 248, "_reduce_573", 0, 360, "_reduce_574", 3, 360, "_reduce_575", 1, 361, "_reduce_576", 2, 361, "_reduce_577", 3, 250, "_reduce_578", 0, 363, "_reduce_579", 3, 363, "_reduce_580", 3, 249, "_reduce_581", 3, 251, "_reduce_582", 0, 364, "_reduce_583", 3, 364, "_reduce_584", 0, 365, "_reduce_585", 3, 365, "_reduce_586", 0, 345, "_reduce_587", 2, 345, "_reduce_588", 0, 358, "_reduce_589", 2, 358, "_reduce_590", 0, 359, "_reduce_591", 2, 359, "_reduce_592", 1, 362, "_reduce_593", 2, 362, "_reduce_594", 0, 367, "_reduce_595", 4, 362, "_reduce_596", 1, 366, "_reduce_597", 1, 366, "_reduce_598", 1, 366, "_reduce_599", 1, 366, "_reduce_none", 1, 224, "_reduce_none", 1, 224, "_reduce_none", 1, 368, "_reduce_603", 3, 369, "_reduce_604", 1, 355, "_reduce_605", 2, 355, "_reduce_606", 1, 227, "_reduce_607", 1, 227, "_reduce_608", 1, 227, "_reduce_609", 1, 227, "_reduce_610", 1, 352, "_reduce_611", 1, 352, "_reduce_612", 1, 352, "_reduce_613", 1, 218, "_reduce_614", 1, 218, "_reduce_615", 1, 218, "_reduce_616", 1, 218, "_reduce_617", 1, 218, "_reduce_618", 1, 219, "_reduce_619", 1, 219, "_reduce_620", 1, 219, "_reduce_621", 1, 219, "_reduce_622", 1, 219, "_reduce_623", 1, 219, "_reduce_624", 1, 219, "_reduce_625", 1, 252, "_reduce_626", 1, 252, "_reduce_627", 1, 176, "_reduce_628", 1, 176, "_reduce_629", 1, 186, "_reduce_630", 1, 186, "_reduce_631", 0, 370, "_reduce_632", 4, 263, "_reduce_633", 0, 263, "_reduce_634", 1, 182, "_reduce_none", 1, 182, "_reduce_636", 3, 371, "_reduce_637", 1, 266, "_reduce_none", 0, 373, "_reduce_639", 3, 266, "_reduce_640", 4, 372, "_reduce_641", 2, 372, "_reduce_642", 2, 372, "_reduce_643", 1, 372, "_reduce_644", 1, 372, "_reduce_645", 2, 375, "_reduce_646", 0, 375, "_reduce_647", 6, 304, "_reduce_648", 8, 304, "_reduce_649", 4, 304, "_reduce_650", 6, 304, "_reduce_651", 4, 304, "_reduce_652", 6, 304, "_reduce_653", 2, 304, "_reduce_654", 4, 304, "_reduce_655", 6, 304, "_reduce_656", 2, 304, "_reduce_657", 4, 304, "_reduce_658", 2, 304, "_reduce_659", 4, 304, "_reduce_660", 1, 304, "_reduce_661", 0, 304, "_reduce_662", 1, 239, "_reduce_663", 1, 299, "_reduce_664", 1, 299, "_reduce_665", 1, 299, "_reduce_666", 1, 299, "_reduce_667", 1, 275, "_reduce_none", 1, 275, "_reduce_669", 1, 377, "_reduce_670", 1, 378, "_reduce_671", 3, 378, "_reduce_672", 1, 291, "_reduce_673", 3, 291, "_reduce_674", 1, 379, "_reduce_675", 2, 380, "_reduce_676", 1, 380, "_reduce_677", 2, 381, "_reduce_678", 1, 381, "_reduce_679", 1, 285, "_reduce_680", 3, 285, "_reduce_681", 1, 374, "_reduce_682", 3, 374, "_reduce_683", 1, 347, "_reduce_none", 1, 347, "_reduce_none", 2, 281, "_reduce_686", 2, 280, "_reduce_687", 1, 280, "_reduce_688", 3, 382, "_reduce_689", 3, 383, "_reduce_690", 1, 292, "_reduce_691", 3, 292, "_reduce_692", 1, 376, "_reduce_693", 3, 376, "_reduce_694", 1, 384, "_reduce_none", 1, 384, "_reduce_none", 2, 293, "_reduce_697", 1, 293, "_reduce_698", 1, 385, "_reduce_none", 1, 385, "_reduce_none", 2, 287, "_reduce_701", 1, 287, "_reduce_702", 2, 286, "_reduce_703", 0, 286, "_reduce_704", 1, 197, "_reduce_none", 3, 197, "_reduce_706", 0, 253, "_reduce_707", 2, 253, "_reduce_none", 1, 237, "_reduce_709", 3, 237, "_reduce_710", 3, 386, "_reduce_711", 2, 386, "_reduce_712", 1, 386, "_reduce_713", 4, 386, "_reduce_714", 2, 386, "_reduce_715", 1, 208, "_reduce_none", 1, 208, "_reduce_none", 1, 208, "_reduce_none", 1, 202, "_reduce_none", 1, 202, "_reduce_none", 1, 202, "_reduce_none", 1, 202, "_reduce_none", 1, 310, "_reduce_none", 1, 310, "_reduce_none", 1, 310, "_reduce_none", 1, 198, "_reduce_none", 1, 198, "_reduce_none", 1, 180, "_reduce_728", 1, 180, "_reduce_729", 0, 152, "_reduce_none", 1, 152, "_reduce_none", 0, 187, "_reduce_none", 1, 187, "_reduce_none", 2, 213, "_reduce_734", 2, 179, "_reduce_735", 2, 334, "_reduce_736", 0, 236, "_reduce_none", 1, 236, "_reduce_none", 1, 236, "_reduce_none", 1, 264, "_reduce_740", 1, 264, "_reduce_none", 1, 154, "_reduce_none", 2, 154, "_reduce_none", 0, 234, "_reduce_744"]; + racc_reduce_n = 745; + racc_shift_n = 1238; + racc_token_table = $hash(false, 0, "error", 1, "kCLASS", 2, "kMODULE", 3, "kDEF", 4, "kUNDEF", 5, "kBEGIN", 6, "kRESCUE", 7, "kENSURE", 8, "kEND", 9, "kIF", 10, "kUNLESS", 11, "kTHEN", 12, "kELSIF", 13, "kELSE", 14, "kCASE", 15, "kWHEN", 16, "kWHILE", 17, "kUNTIL", 18, "kFOR", 19, "kBREAK", 20, "kNEXT", 21, "kREDO", 22, "kRETRY", 23, "kIN", 24, "kDO", 25, "kDO_COND", 26, "kDO_BLOCK", 27, "kDO_LAMBDA", 28, "kRETURN", 29, "kYIELD", 30, "kSUPER", 31, "kSELF", 32, "kNIL", 33, "kTRUE", 34, "kFALSE", 35, "kAND", 36, "kOR", 37, "kNOT", 38, "kIF_MOD", 39, "kUNLESS_MOD", 40, "kWHILE_MOD", 41, "kUNTIL_MOD", 42, "kRESCUE_MOD", 43, "kALIAS", 44, "kDEFINED", 45, "klBEGIN", 46, "klEND", 47, "k__LINE__", 48, "k__FILE__", 49, "k__ENCODING__", 50, "tIDENTIFIER", 51, "tFID", 52, "tGVAR", 53, "tIVAR", 54, "tCONSTANT", 55, "tLABEL", 56, "tCVAR", 57, "tNTH_REF", 58, "tBACK_REF", 59, "tSTRING_CONTENT", 60, "tINTEGER", 61, "tFLOAT", 62, "tUPLUS", 63, "tUMINUS", 64, "tUNARY_NUM", 65, "tPOW", 66, "tCMP", 67, "tEQ", 68, "tEQQ", 69, "tNEQ", 70, "tGEQ", 71, "tLEQ", 72, "tANDOP", 73, "tOROP", 74, "tMATCH", 75, "tNMATCH", 76, "tDOT", 77, "tDOT2", 78, "tDOT3", 79, "tAREF", 80, "tASET", 81, "tLSHFT", 82, "tRSHFT", 83, "tCOLON2", 84, "tCOLON3", 85, "tOP_ASGN", 86, "tASSOC", 87, "tLPAREN", 88, "tLPAREN2", 89, "tRPAREN", 90, "tLPAREN_ARG", 91, "tLBRACK", 92, "tLBRACK2", 93, "tRBRACK", 94, "tLBRACE", 95, "tLBRACE_ARG", 96, "tSTAR", 97, "tSTAR2", 98, "tAMPER", 99, "tAMPER2", 100, "tTILDE", 101, "tPERCENT", 102, "tDIVIDE", 103, "tDSTAR", 104, "tPLUS", 105, "tMINUS", 106, "tLT", 107, "tGT", 108, "tPIPE", 109, "tBANG", 110, "tCARET", 111, "tLCURLY", 112, "tRCURLY", 113, "tBACK_REF2", 114, "tSYMBEG", 115, "tSTRING_BEG", 116, "tXSTRING_BEG", 117, "tREGEXP_BEG", 118, "tREGEXP_OPT", 119, "tWORDS_BEG", 120, "tQWORDS_BEG", 121, "tSYMBOLS_BEG", 122, "tQSYMBOLS_BEG", 123, "tSTRING_DBEG", 124, "tSTRING_DVAR", 125, "tSTRING_END", 126, "tSTRING_DEND", 127, "tSTRING", 128, "tSYMBOL", 129, "tNL", 130, "tEH", 131, "tCOLON", 132, "tCOMMA", 133, "tSPACE", 134, "tSEMI", 135, "tLAMBDA", 136, "tLAMBEG", 137, "tCHARACTER", 138, "tRATIONAL", 139, "tIMAGINARY", 140, "tLABEL_END", 141, "tANDDOT", 142, "tBDOT2", 143, "tBDOT3", 144, "tEQL", 145, "tLOWEST", 146); + racc_nt_base = 147; + racc_use_result_var = true; + $const_set($nesting[0], 'Racc_arg', [racc_action_table, racc_action_check, racc_action_default, racc_action_pointer, racc_goto_table, racc_goto_check, racc_goto_default, racc_goto_pointer, racc_nt_base, racc_reduce_table, racc_token_table, racc_shift_n, racc_reduce_n, racc_use_result_var]); + $const_set($nesting[0], 'Racc_token_to_s_table', ["$end", "error", "kCLASS", "kMODULE", "kDEF", "kUNDEF", "kBEGIN", "kRESCUE", "kENSURE", "kEND", "kIF", "kUNLESS", "kTHEN", "kELSIF", "kELSE", "kCASE", "kWHEN", "kWHILE", "kUNTIL", "kFOR", "kBREAK", "kNEXT", "kREDO", "kRETRY", "kIN", "kDO", "kDO_COND", "kDO_BLOCK", "kDO_LAMBDA", "kRETURN", "kYIELD", "kSUPER", "kSELF", "kNIL", "kTRUE", "kFALSE", "kAND", "kOR", "kNOT", "kIF_MOD", "kUNLESS_MOD", "kWHILE_MOD", "kUNTIL_MOD", "kRESCUE_MOD", "kALIAS", "kDEFINED", "klBEGIN", "klEND", "k__LINE__", "k__FILE__", "k__ENCODING__", "tIDENTIFIER", "tFID", "tGVAR", "tIVAR", "tCONSTANT", "tLABEL", "tCVAR", "tNTH_REF", "tBACK_REF", "tSTRING_CONTENT", "tINTEGER", "tFLOAT", "tUPLUS", "tUMINUS", "tUNARY_NUM", "tPOW", "tCMP", "tEQ", "tEQQ", "tNEQ", "tGEQ", "tLEQ", "tANDOP", "tOROP", "tMATCH", "tNMATCH", "tDOT", "tDOT2", "tDOT3", "tAREF", "tASET", "tLSHFT", "tRSHFT", "tCOLON2", "tCOLON3", "tOP_ASGN", "tASSOC", "tLPAREN", "tLPAREN2", "tRPAREN", "tLPAREN_ARG", "tLBRACK", "tLBRACK2", "tRBRACK", "tLBRACE", "tLBRACE_ARG", "tSTAR", "tSTAR2", "tAMPER", "tAMPER2", "tTILDE", "tPERCENT", "tDIVIDE", "tDSTAR", "tPLUS", "tMINUS", "tLT", "tGT", "tPIPE", "tBANG", "tCARET", "tLCURLY", "tRCURLY", "tBACK_REF2", "tSYMBEG", "tSTRING_BEG", "tXSTRING_BEG", "tREGEXP_BEG", "tREGEXP_OPT", "tWORDS_BEG", "tQWORDS_BEG", "tSYMBOLS_BEG", "tQSYMBOLS_BEG", "tSTRING_DBEG", "tSTRING_DVAR", "tSTRING_END", "tSTRING_DEND", "tSTRING", "tSYMBOL", "tNL", "tEH", "tCOLON", "tCOMMA", "tSPACE", "tSEMI", "tLAMBDA", "tLAMBEG", "tCHARACTER", "tRATIONAL", "tIMAGINARY", "tLABEL_END", "tANDDOT", "tBDOT2", "tBDOT3", "tEQL", "tLOWEST", "$start", "program", "top_compstmt", "@1", "top_stmts", "opt_terms", "top_stmt", "terms", "stmt", "begin_block", "bodystmt", "compstmt", "opt_rescue", "opt_else", "opt_ensure", "stmts", "stmt_or_begin", "fitem", "undef_list", "expr_value", "command_asgn", "mlhs", "command_call", "lhs", "mrhs", "mrhs_arg", "expr", "@2", "command_rhs", "var_lhs", "primary_value", "opt_call_args", "rbracket", "call_op", "defn_head", "f_opt_paren_args", "command", "arg", "defs_head", "backref", "opt_nl", "p_top_expr_body", "@3", "@4", "expr_value_do", "do", "def_name", "@5", "fname", "k_def", "singleton", "dot_or_colon", "@6", "block_command", "block_call", "operation2", "command_args", "cmd_brace_block", "brace_body", "fcall", "@7", "operation", "k_return", "call_args", "mlhs_basic", "mlhs_inner", "rparen", "mlhs_head", "mlhs_item", "mlhs_node", "mlhs_post", "user_variable", "keyword_variable", "cname", "cpath", "op", "reswords", "symbol", "@8", "arg_rhs", "simple_numeric", "rel_expr", "primary", "relop", "@9", "arg_value", "aref_args", "none", "args", "trailer", "assocs", "paren_args", "args_forward", "opt_paren_args", "opt_block_arg", "block_arg", "@10", "literal", "strings", "xstring", "regexp", "words", "qwords", "symbols", "qsymbols", "var_ref", "assoc_list", "brace_block", "method_call", "lambda", "then", "if_tail", "case_body", "p_case_body", "for_var", "k_class", "superclass", "term", "k_module", "f_arglist", "@11", "@12", "@13", "@14", "@15", "@16", "@17", "f_marg", "f_norm_arg", "f_margs", "f_marg_list", "f_rest_marg", "f_any_kwrest", "f_kwrest", "f_no_kwarg", "f_eq", "block_args_tail", "@18", "f_block_kwarg", "opt_f_block_arg", "f_block_arg", "opt_block_args_tail", "excessed_comma", "block_param", "f_arg", "f_block_optarg", "f_rest_arg", "opt_block_param", "block_param_def", "opt_bv_decl", "bv_decls", "bvar", "f_bad_arg", "f_larglist", "lambda_body", "@19", "@20", "f_args", "do_block", "@21", "@22", "do_body", "@23", "operation3", "@24", "@25", "@26", "@27", "@28", "cases", "p_top_expr", "p_cases", "@29", "@30", "p_expr", "p_args", "p_find", "p_args_tail", "p_kwargs", "p_as", "p_variable", "p_alt", "p_expr_basic", "p_lparen", "p_lbracket", "p_value", "p_const", "rbrace", "@31", "@32", "p_args_head", "p_arg", "p_args_post", "p_rest", "p_kwarg", "p_any_kwrest", "p_kw", "p_kw_label", "string_contents", "p_kwrest", "kwrest_mark", "p_kwnorest", "p_primitive", "p_var_ref", "p_expr_ref", "nonlocal_var", "exc_list", "exc_var", "numeric", "string", "string1", "xstring_contents", "regexp_contents", "word_list", "word", "string_content", "symbol_list", "qword_list", "qsym_list", "string_dvar", "@33", "ssym", "dsym", "@34", "f_paren_args", "args_tail", "@35", "f_kwarg", "opt_args_tail", "f_optarg", "f_arg_asgn", "f_arg_item", "f_label", "f_kw", "f_block_kw", "f_opt", "f_block_opt", "restarg_mark", "blkarg_mark", "assoc"]); + $const_set($nesting[0], 'Racc_debug_parser', false); + + $def(self, '$_reduce_1', function $$_reduce_1(val, _values, result) { + var self = this; + + + self.current_arg_stack.$push(nil); + self.max_numparam_stack.$push($hash2(["static"], {"static": true})); + return result; + }, 3); + + $def(self, '$_reduce_2', function $$_reduce_2(val, _values, result) { + var self = this; + + + result = val['$[]'](1); + self.current_arg_stack.$pop(); + self.max_numparam_stack.$pop(); + return result; + }, 3); + + $def(self, '$_reduce_3', function $$_reduce_3(val, _values, result) { + var self = this; + + + result = self.builder.$compstmt(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_4', function $$_reduce_4(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_5', function $$_reduce_5(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_6', function $$_reduce_6(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_7', function $$_reduce_7(val, _values, result) { + + + result = [val['$[]'](1)]; + return result; + }, 3); + + $def(self, '$_reduce_9', function $$_reduce_9(val, _values, result) { + var self = this; + + + result = $send(self.builder, 'preexe', [val['$[]'](0)].concat($to_a(val['$[]'](1)))); + return result; + }, 3); + + $def(self, '$_reduce_10', function $$_reduce_10(val, _values, result) { + + + result = val; + return result; + }, 3); + + $def(self, '$_reduce_11', function $$_reduce_11(val, _values, result) { + var $a, $b, self = this, rescue_bodies = nil, else_t = nil, else_ = nil, ensure_t = nil, ensure_ = nil; + + + rescue_bodies = val['$[]'](1); + $b = val['$[]'](2), $a = $to_ary($b), (else_t = ($a[0] == null ? nil : $a[0])), (else_ = ($a[1] == null ? nil : $a[1])), $b; + $b = val['$[]'](3), $a = $to_ary($b), (ensure_t = ($a[0] == null ? nil : $a[0])), (ensure_ = ($a[1] == null ? nil : $a[1])), $b; + if (($truthy(rescue_bodies['$empty?']()) && ($not(else_t['$nil?']())))) { + self.$diagnostic("error", "useless_else", nil, else_t) + }; + result = self.builder.$begin_body(val['$[]'](0), rescue_bodies, else_t, else_, ensure_t, ensure_); + return result; + }, 3); + + $def(self, '$_reduce_12', function $$_reduce_12(val, _values, result) { + var self = this; + + + result = self.builder.$compstmt(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_13', function $$_reduce_13(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_14', function $$_reduce_14(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_15', function $$_reduce_15(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_16', function $$_reduce_16(val, _values, result) { + + + result = [val['$[]'](1)]; + return result; + }, 3); + + $def(self, '$_reduce_18', function $$_reduce_18(val, _values, result) { + var self = this; + + + self.$diagnostic("error", "begin_in_method", nil, val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_19', function $$_reduce_19(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_fname"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_20', function $$_reduce_20(val, _values, result) { + var self = this; + + + result = self.builder.$alias(val['$[]'](0), val['$[]'](1), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_21', function $$_reduce_21(val, _values, result) { + var self = this; + + + result = self.builder.$alias(val['$[]'](0), self.builder.$gvar(val['$[]'](1)), self.builder.$gvar(val['$[]'](2))); + return result; + }, 3); + + $def(self, '$_reduce_22', function $$_reduce_22(val, _values, result) { + var self = this; + + + result = self.builder.$alias(val['$[]'](0), self.builder.$gvar(val['$[]'](1)), self.builder.$back_ref(val['$[]'](2))); + return result; + }, 3); + + $def(self, '$_reduce_23', function $$_reduce_23(val, _values, result) { + var self = this; + + + self.$diagnostic("error", "nth_ref_alias", nil, val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_24', function $$_reduce_24(val, _values, result) { + var self = this; + + + result = self.builder.$undef_method(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_25', function $$_reduce_25(val, _values, result) { + var self = this; + + + result = self.builder.$condition_mod(val['$[]'](0), nil, val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_26', function $$_reduce_26(val, _values, result) { + var self = this; + + + result = self.builder.$condition_mod(nil, val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_27', function $$_reduce_27(val, _values, result) { + var self = this; + + + result = self.builder.$loop_mod("while", val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_28', function $$_reduce_28(val, _values, result) { + var self = this; + + + result = self.builder.$loop_mod("until", val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_29', function $$_reduce_29(val, _values, result) { + var self = this, rescue_body = nil; + + + rescue_body = self.builder.$rescue_body(val['$[]'](1), nil, nil, nil, nil, val['$[]'](2)); + result = self.builder.$begin_body(val['$[]'](0), [rescue_body]); + return result; + }, 3); + + $def(self, '$_reduce_30', function $$_reduce_30(val, _values, result) { + var self = this; + + + result = self.builder.$postexe(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_32', function $$_reduce_32(val, _values, result) { + var self = this; + + + result = self.builder.$multi_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_33', function $$_reduce_33(val, _values, result) { + var self = this; + + + result = self.builder.$assign(val['$[]'](0), val['$[]'](1), self.builder.$array(nil, val['$[]'](2), nil)); + return result; + }, 3); + + $def(self, '$_reduce_34', function $$_reduce_34(val, _values, result) { + var self = this, rescue_body = nil, begin_body = nil; + + + rescue_body = self.builder.$rescue_body(val['$[]'](3), nil, nil, nil, nil, val['$[]'](4)); + begin_body = self.builder.$begin_body(val['$[]'](2), [rescue_body]); + result = self.builder.$multi_assign(val['$[]'](0), val['$[]'](1), begin_body); + return result; + }, 3); + + $def(self, '$_reduce_35', function $$_reduce_35(val, _values, result) { + var self = this; + + + result = self.builder.$multi_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_37', function $$_reduce_37(val, _values, result) { + var self = this; + + + result = self.builder.$assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_38', function $$_reduce_38(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_39', function $$_reduce_39(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(self.builder.$index(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)), val['$[]'](4), val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_40', function $$_reduce_40(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)), val['$[]'](3), val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_41', function $$_reduce_41(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)), val['$[]'](3), val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_42', function $$_reduce_42(val, _values, result) { + var self = this, const$ = nil; + + + const$ = self.builder.$const_op_assignable(self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2))); + result = self.builder.$op_assign(const$, val['$[]'](3), val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_43', function $$_reduce_43(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)), val['$[]'](3), val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_44', function $$_reduce_44(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, name_t = nil, ctx = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), ($c = $to_ary(($a[1] == null ? nil : $a[1])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + self.$endless_method_name(name_t); + result = self.builder.$def_endless_method(def_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); + self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_45', function $$_reduce_45(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, name_t = nil, ctx = nil, rescue_body = nil, method_body = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), ($c = $to_ary(($a[1] == null ? nil : $a[1])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + self.$endless_method_name(name_t); + rescue_body = self.builder.$rescue_body(val['$[]'](4), nil, nil, nil, nil, val['$[]'](5)); + method_body = self.builder.$begin_body(val['$[]'](3), [rescue_body]); + result = self.builder.$def_endless_method(def_t, name_t, val['$[]'](1), val['$[]'](2), method_body); + self.$local_pop(); + self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_46', function $$_reduce_46(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, recv = nil, dot_t = nil, name_t = nil, ctx = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), (recv = ($a[1] == null ? nil : $a[1])), (dot_t = ($a[2] == null ? nil : $a[2])), ($c = $to_ary(($a[3] == null ? nil : $a[3])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + self.$endless_method_name(name_t); + result = self.builder.$def_endless_singleton(def_t, recv, dot_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); + self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_47', function $$_reduce_47(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, recv = nil, dot_t = nil, name_t = nil, ctx = nil, rescue_body = nil, method_body = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), (recv = ($a[1] == null ? nil : $a[1])), (dot_t = ($a[2] == null ? nil : $a[2])), ($c = $to_ary(($a[3] == null ? nil : $a[3])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + self.$endless_method_name(name_t); + rescue_body = self.builder.$rescue_body(val['$[]'](4), nil, nil, nil, nil, val['$[]'](5)); + method_body = self.builder.$begin_body(val['$[]'](3), [rescue_body]); + result = self.builder.$def_endless_singleton(def_t, recv, dot_t, name_t, val['$[]'](1), val['$[]'](2), method_body); + self.$local_pop(); + self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_48', function $$_reduce_48(val, _values, result) { + var self = this; + + + self.builder.$op_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_50', function $$_reduce_50(val, _values, result) { + var self = this, rescue_body = nil; + + + rescue_body = self.builder.$rescue_body(val['$[]'](1), nil, nil, nil, nil, val['$[]'](2)); + result = self.builder.$begin_body(val['$[]'](0), [rescue_body]); + return result; + }, 3); + + $def(self, '$_reduce_53', function $$_reduce_53(val, _values, result) { + var self = this; + + + result = self.builder.$logical_op("and", val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_54', function $$_reduce_54(val, _values, result) { + var self = this; + + + result = self.builder.$logical_op("or", val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_55', function $$_reduce_55(val, _values, result) { + var self = this; + + + result = self.builder.$not_op(val['$[]'](0), nil, val['$[]'](2), nil); + return result; + }, 3); + + $def(self, '$_reduce_56', function $$_reduce_56(val, _values, result) { + var self = this; + + + result = self.builder.$not_op(val['$[]'](0), nil, val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_57', function $$_reduce_57(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_beg"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(self.lexer, 'command_start=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.pattern_variables.$push(); + result = self.context.$in_kwarg(); + + $writer = [true]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_58', function $$_reduce_58(val, _values, result) { + var self = this, $writer = nil; + + + self.pattern_variables.$pop(); + + $writer = [val['$[]'](2)]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$match_pattern(val['$[]'](0), val['$[]'](1), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_59', function $$_reduce_59(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_beg"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(self.lexer, 'command_start=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.pattern_variables.$push(); + result = self.context.$in_kwarg(); + + $writer = [true]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_60', function $$_reduce_60(val, _values, result) { + var self = this, $writer = nil; + + + self.pattern_variables.$pop(); + + $writer = [val['$[]'](2)]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$match_pattern_p(val['$[]'](0), val['$[]'](1), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_63', function $$_reduce_63(val, _values, result) { + var self = this; + + + self.lexer.$cond().$push(true); + return result; + }, 3); + + $def(self, '$_reduce_64', function $$_reduce_64(val, _values, result) { + var self = this; + + + self.lexer.$cond().$pop(); + result = [val['$[]'](1), val['$[]'](2)]; + return result; + }, 3); + + $def(self, '$_reduce_65', function $$_reduce_65(val, _values, result) { + var self = this, $writer = nil; + + + self.$local_push(); + self.current_arg_stack.$push(nil); + result = [val['$[]'](0), self.context.$dup()]; + + $writer = [true]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_66', function $$_reduce_66(val, _values, result) { + + + result = [val['$[]'](0), val['$[]'](1)]; + return result; + }, 3); + + $def(self, '$_reduce_67', function $$_reduce_67(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_fname"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_68', function $$_reduce_68(val, _values, result) { + + + result = [val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](4)]; + return result; + }, 3); + + $def(self, '$_reduce_72', function $$_reduce_72(val, _values, result) { + var self = this; + + + result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), nil, val['$[]'](3), nil); + return result; + }, 3); + + $def(self, '$_reduce_73', function $$_reduce_73(val, _values, result) { + var self = this, $writer = nil; + + + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_74', function $$_reduce_74(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [val['$[]'](1).$in_block()]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](3)]); + return result; + }, 3); + + $def(self, '$_reduce_76', function $$_reduce_76(val, _values, result) { + var self = this; + + + result = self.builder.$call_method(nil, nil, val['$[]'](0), nil, val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_77', function $$_reduce_77(val, _values, result) { + var $a, $b, self = this, method_call = nil, begin_t = nil, args = nil, body = nil, end_t = nil; + + + method_call = self.builder.$call_method(nil, nil, val['$[]'](0), nil, val['$[]'](1), nil); + $b = val['$[]'](2), $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; + result = self.builder.$block(method_call, begin_t, args, body, end_t); + return result; + }, 3); + + $def(self, '$_reduce_78', function $$_reduce_78(val, _values, result) { + var self = this; + + + result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), nil, val['$[]'](3), nil); + return result; + }, 3); + + $def(self, '$_reduce_79', function $$_reduce_79(val, _values, result) { + var $a, $b, self = this, method_call = nil, begin_t = nil, args = nil, body = nil, end_t = nil; + + + method_call = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), nil, val['$[]'](3), nil); + $b = val['$[]'](4), $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; + result = self.builder.$block(method_call, begin_t, args, body, end_t); + return result; + }, 3); + + $def(self, '$_reduce_80', function $$_reduce_80(val, _values, result) { + var self = this; + + + result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), nil, val['$[]'](3), nil); + return result; + }, 3); + + $def(self, '$_reduce_81', function $$_reduce_81(val, _values, result) { + var $a, $b, self = this, method_call = nil, begin_t = nil, args = nil, body = nil, end_t = nil; + + + method_call = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), nil, val['$[]'](3), nil); + $b = val['$[]'](4), $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; + result = self.builder.$block(method_call, begin_t, args, body, end_t); + return result; + }, 3); + + $def(self, '$_reduce_82', function $$_reduce_82(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("super", val['$[]'](0), nil, val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_83', function $$_reduce_83(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("yield", val['$[]'](0), nil, val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_84', function $$_reduce_84(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("return", val['$[]'](0), nil, val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_85', function $$_reduce_85(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("break", val['$[]'](0), nil, val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_86', function $$_reduce_86(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("next", val['$[]'](0), nil, val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_87', function $$_reduce_87(val, _values, result) { + var self = this; + + + result = self.builder.$multi_lhs(nil, val['$[]'](0), nil); + return result; + }, 3); + + $def(self, '$_reduce_88', function $$_reduce_88(val, _values, result) { + var self = this; + + + result = self.builder.$begin(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_89', function $$_reduce_89(val, _values, result) { + var self = this; + + + result = self.builder.$multi_lhs(nil, val['$[]'](0), nil); + return result; + }, 3); + + $def(self, '$_reduce_90', function $$_reduce_90(val, _values, result) { + var self = this; + + + result = self.builder.$multi_lhs(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_92', function $$_reduce_92(val, _values, result) { + + + result = val['$[]'](0).$push(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_93', function $$_reduce_93(val, _values, result) { + var self = this; + + + result = val['$[]'](0).$push(self.builder.$splat(val['$[]'](1), val['$[]'](2))); + return result; + }, 3); + + $def(self, '$_reduce_94', function $$_reduce_94(val, _values, result) { + var self = this; + + + result = val['$[]'](0).$push(self.builder.$splat(val['$[]'](1), val['$[]'](2))).$concat(val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_95', function $$_reduce_95(val, _values, result) { + var self = this; + + + result = val['$[]'](0).$push(self.builder.$splat(val['$[]'](1))); + return result; + }, 3); + + $def(self, '$_reduce_96', function $$_reduce_96(val, _values, result) { + var self = this; + + + result = val['$[]'](0).$push(self.builder.$splat(val['$[]'](1))).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_97', function $$_reduce_97(val, _values, result) { + var self = this; + + + result = [self.builder.$splat(val['$[]'](0), val['$[]'](1))]; + return result; + }, 3); + + $def(self, '$_reduce_98', function $$_reduce_98(val, _values, result) { + var self = this; + + + result = [self.builder.$splat(val['$[]'](0), val['$[]'](1))].concat($to_a(val['$[]'](3))); + return result; + }, 3); + + $def(self, '$_reduce_99', function $$_reduce_99(val, _values, result) { + var self = this; + + + result = [self.builder.$splat(val['$[]'](0))]; + return result; + }, 3); + + $def(self, '$_reduce_100', function $$_reduce_100(val, _values, result) { + var self = this; + + + result = [self.builder.$splat(val['$[]'](0))].concat($to_a(val['$[]'](2))); + return result; + }, 3); + + $def(self, '$_reduce_102', function $$_reduce_102(val, _values, result) { + var self = this; + + + result = self.builder.$begin(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_103', function $$_reduce_103(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_104', function $$_reduce_104(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_105', function $$_reduce_105(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_106', function $$_reduce_106(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_107', function $$_reduce_107(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_108', function $$_reduce_108(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_109', function $$_reduce_109(val, _values, result) { + var self = this; + + + result = self.builder.$index_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_110', function $$_reduce_110(val, _values, result) { + var self = this; + + + if ($eqeq(val['$[]'](1)['$[]'](0), "anddot")) { + self.$diagnostic("error", "csend_in_lhs_of_masgn", nil, val['$[]'](1)) + }; + result = self.builder.$attr_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_111', function $$_reduce_111(val, _values, result) { + var self = this; + + + result = self.builder.$attr_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_112', function $$_reduce_112(val, _values, result) { + var self = this; + + + if ($eqeq(val['$[]'](1)['$[]'](0), "anddot")) { + self.$diagnostic("error", "csend_in_lhs_of_masgn", nil, val['$[]'](1)) + }; + result = self.builder.$attr_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_113', function $$_reduce_113(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2))); + return result; + }, 3); + + $def(self, '$_reduce_114', function $$_reduce_114(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(self.builder.$const_global(val['$[]'](0), val['$[]'](1))); + return result; + }, 3); + + $def(self, '$_reduce_115', function $$_reduce_115(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_116', function $$_reduce_116(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_117', function $$_reduce_117(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_118', function $$_reduce_118(val, _values, result) { + var self = this; + + + result = self.builder.$index_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_119', function $$_reduce_119(val, _values, result) { + var self = this; + + + result = self.builder.$attr_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_120', function $$_reduce_120(val, _values, result) { + var self = this; + + + result = self.builder.$attr_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_121', function $$_reduce_121(val, _values, result) { + var self = this; + + + result = self.builder.$attr_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_122', function $$_reduce_122(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2))); + return result; + }, 3); + + $def(self, '$_reduce_123', function $$_reduce_123(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(self.builder.$const_global(val['$[]'](0), val['$[]'](1))); + return result; + }, 3); + + $def(self, '$_reduce_124', function $$_reduce_124(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_125', function $$_reduce_125(val, _values, result) { + var self = this; + + + self.$diagnostic("error", "module_name_const", nil, val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_127', function $$_reduce_127(val, _values, result) { + var self = this; + + + result = self.builder.$const_global(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_128', function $$_reduce_128(val, _values, result) { + var self = this; + + + result = self.builder.$const(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_129', function $$_reduce_129(val, _values, result) { + var self = this; + + + result = self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_135', function $$_reduce_135(val, _values, result) { + var self = this; + + + result = self.builder.$symbol_internal(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_137', function $$_reduce_137(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_138', function $$_reduce_138(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_fname"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_139', function $$_reduce_139(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_211', function $$_reduce_211(val, _values, result) { + var self = this; + + + result = self.builder.$assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_212', function $$_reduce_212(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_213', function $$_reduce_213(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(self.builder.$index(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)), val['$[]'](4), val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_214', function $$_reduce_214(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)), val['$[]'](3), val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_215', function $$_reduce_215(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)), val['$[]'](3), val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_216', function $$_reduce_216(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)), val['$[]'](3), val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_217', function $$_reduce_217(val, _values, result) { + var self = this, const$ = nil; + + + const$ = self.builder.$const_op_assignable(self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2))); + result = self.builder.$op_assign(const$, val['$[]'](3), val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_218', function $$_reduce_218(val, _values, result) { + var self = this, const$ = nil; + + + const$ = self.builder.$const_op_assignable(self.builder.$const_global(val['$[]'](0), val['$[]'](1))); + result = self.builder.$op_assign(const$, val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_219', function $$_reduce_219(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_220', function $$_reduce_220(val, _values, result) { + var self = this; + + + result = self.builder.$range_inclusive(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_221', function $$_reduce_221(val, _values, result) { + var self = this; + + + result = self.builder.$range_exclusive(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_222', function $$_reduce_222(val, _values, result) { + var self = this; + + + result = self.builder.$range_inclusive(val['$[]'](0), val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_223', function $$_reduce_223(val, _values, result) { + var self = this; + + + result = self.builder.$range_exclusive(val['$[]'](0), val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_224', function $$_reduce_224(val, _values, result) { + var self = this; + + + result = self.builder.$range_inclusive(nil, val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_225', function $$_reduce_225(val, _values, result) { + var self = this; + + + result = self.builder.$range_exclusive(nil, val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_226', function $$_reduce_226(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_227', function $$_reduce_227(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_228', function $$_reduce_228(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_229', function $$_reduce_229(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_230', function $$_reduce_230(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_231', function $$_reduce_231(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_232', function $$_reduce_232(val, _values, result) { + var self = this; + + + result = self.builder.$unary_op(val['$[]'](0), self.builder.$binary_op(val['$[]'](1), val['$[]'](2), val['$[]'](3))); + return result; + }, 3); + + $def(self, '$_reduce_233', function $$_reduce_233(val, _values, result) { + var self = this; + + + result = self.builder.$unary_op(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_234', function $$_reduce_234(val, _values, result) { + var self = this; + + + result = self.builder.$unary_op(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_235', function $$_reduce_235(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_236', function $$_reduce_236(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_237', function $$_reduce_237(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_238', function $$_reduce_238(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_240', function $$_reduce_240(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_241', function $$_reduce_241(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_242', function $$_reduce_242(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_243', function $$_reduce_243(val, _values, result) { + var self = this; + + + result = self.builder.$match_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_244', function $$_reduce_244(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_245', function $$_reduce_245(val, _values, result) { + var self = this; + + + result = self.builder.$not_op(val['$[]'](0), nil, val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_246', function $$_reduce_246(val, _values, result) { + var self = this; + + + result = self.builder.$unary_op(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_247', function $$_reduce_247(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_248', function $$_reduce_248(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_249', function $$_reduce_249(val, _values, result) { + var self = this; + + + result = self.builder.$logical_op("and", val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_250', function $$_reduce_250(val, _values, result) { + var self = this; + + + result = self.builder.$logical_op("or", val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_251', function $$_reduce_251(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [true]; + $send(self.context, 'in_defined=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_252', function $$_reduce_252(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [false]; + $send(self.context, 'in_defined=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$keyword_cmd("defined?", val['$[]'](0), nil, [val['$[]'](3)], nil); + return result; + }, 3); + + $def(self, '$_reduce_253', function $$_reduce_253(val, _values, result) { + var self = this; + + + result = self.builder.$ternary(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](4), val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_254', function $$_reduce_254(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, name_t = nil, ctx = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), ($c = $to_ary(($a[1] == null ? nil : $a[1])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + self.$endless_method_name(name_t); + result = self.builder.$def_endless_method(def_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); + self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_255', function $$_reduce_255(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, name_t = nil, ctx = nil, rescue_body = nil, method_body = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), ($c = $to_ary(($a[1] == null ? nil : $a[1])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + self.$endless_method_name(name_t); + rescue_body = self.builder.$rescue_body(val['$[]'](4), nil, nil, nil, nil, val['$[]'](5)); + method_body = self.builder.$begin_body(val['$[]'](3), [rescue_body]); + result = self.builder.$def_endless_method(def_t, name_t, val['$[]'](1), val['$[]'](2), method_body); + self.$local_pop(); + self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_256', function $$_reduce_256(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, recv = nil, dot_t = nil, name_t = nil, ctx = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), (recv = ($a[1] == null ? nil : $a[1])), (dot_t = ($a[2] == null ? nil : $a[2])), ($c = $to_ary(($a[3] == null ? nil : $a[3])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + self.$endless_method_name(name_t); + result = self.builder.$def_endless_singleton(def_t, recv, dot_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); + self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_257', function $$_reduce_257(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, recv = nil, dot_t = nil, name_t = nil, ctx = nil, rescue_body = nil, method_body = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), (recv = ($a[1] == null ? nil : $a[1])), (dot_t = ($a[2] == null ? nil : $a[2])), ($c = $to_ary(($a[3] == null ? nil : $a[3])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + self.$endless_method_name(name_t); + rescue_body = self.builder.$rescue_body(val['$[]'](4), nil, nil, nil, nil, val['$[]'](5)); + method_body = self.builder.$begin_body(val['$[]'](3), [rescue_body]); + result = self.builder.$def_endless_singleton(def_t, recv, dot_t, name_t, val['$[]'](1), val['$[]'](2), method_body); + self.$local_pop(); + self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_263', function $$_reduce_263(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_264', function $$_reduce_264(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_268', function $$_reduce_268(val, _values, result) { + var self = this; + + + result = val['$[]'](0)['$<<'](self.builder.$associate(nil, val['$[]'](2), nil)); + return result; + }, 3); + + $def(self, '$_reduce_269', function $$_reduce_269(val, _values, result) { + var self = this; + + + result = [self.builder.$associate(nil, val['$[]'](0), nil)]; + return result; + }, 3); + + $def(self, '$_reduce_271', function $$_reduce_271(val, _values, result) { + var self = this, rescue_body = nil; + + + rescue_body = self.builder.$rescue_body(val['$[]'](1), nil, nil, nil, nil, val['$[]'](2)); + result = self.builder.$begin_body(val['$[]'](0), [rescue_body]); + return result; + }, 3); + + $def(self, '$_reduce_272', function $$_reduce_272(val, _values, result) { + + + result = val; + return result; + }, 3); + + $def(self, '$_reduce_273', function $$_reduce_273(val, _values, result) { + var self = this; + + + if (!$truthy(self.static_env['$declared_forward_args?']())) { + self.$diagnostic("error", "unexpected_token", $hash2(["token"], {"token": "tBDOT3"}), val['$[]'](3)) + }; + result = [val['$[]'](0), [].concat($to_a(val['$[]'](1))).concat([self.builder.$forwarded_args(val['$[]'](3))]), val['$[]'](4)]; + return result; + }, 3); + + $def(self, '$_reduce_274', function $$_reduce_274(val, _values, result) { + var self = this; + + + if (!$truthy(self.static_env['$declared_forward_args?']())) { + self.$diagnostic("error", "unexpected_token", $hash2(["token"], {"token": "tBDOT3"}), val['$[]'](1)) + }; + result = [val['$[]'](0), [self.builder.$forwarded_args(val['$[]'](1))], val['$[]'](2)]; + return result; + }, 3); + + $def(self, '$_reduce_275', function $$_reduce_275(val, _values, result) { + + + result = [nil, [], nil]; + return result; + }, 3); + + $def(self, '$_reduce_277', function $$_reduce_277(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_280', function $$_reduce_280(val, _values, result) { + var self = this; + + + result = val['$[]'](0)['$<<'](self.builder.$associate(nil, val['$[]'](2), nil)); + return result; + }, 3); + + $def(self, '$_reduce_281', function $$_reduce_281(val, _values, result) { + var self = this; + + + result = [self.builder.$associate(nil, val['$[]'](0), nil)]; + return result; + }, 3); + + $def(self, '$_reduce_282', function $$_reduce_282(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_283', function $$_reduce_283(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_284', function $$_reduce_284(val, _values, result) { + var self = this; + + + result = [self.builder.$associate(nil, val['$[]'](0), nil)]; + result.$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_285', function $$_reduce_285(val, _values, result) { + var self = this, assocs = nil; + + + assocs = self.builder.$associate(nil, val['$[]'](2), nil); + result = val['$[]'](0)['$<<'](assocs); + result.$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_286', function $$_reduce_286(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_287', function $$_reduce_287(val, _values, result) { + var self = this, last_token = nil, lookahead = nil, $ret_or_1 = nil, top = nil; + + + last_token = self.last_token['$[]'](0); + lookahead = ($truthy(($ret_or_1 = last_token['$==']("tLBRACK"))) ? ($ret_or_1) : (last_token['$==']("tLPAREN_ARG"))); + if ($truthy(lookahead)) { + + top = self.lexer.$cmdarg().$pop(); + self.lexer.$cmdarg().$push(true); + self.lexer.$cmdarg().$push(top); + } else { + self.lexer.$cmdarg().$push(true) + }; + return result; + }, 3); + + $def(self, '$_reduce_288', function $$_reduce_288(val, _values, result) { + var self = this, last_token = nil, lookahead = nil, top = nil; + + + last_token = self.last_token['$[]'](0); + lookahead = last_token['$==']("tLBRACE_ARG"); + if ($truthy(lookahead)) { + + top = self.lexer.$cmdarg().$pop(); + self.lexer.$cmdarg().$pop(); + self.lexer.$cmdarg().$push(top); + } else { + self.lexer.$cmdarg().$pop() + }; + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_289', function $$_reduce_289(val, _values, result) { + var self = this; + + + result = self.builder.$block_pass(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_290', function $$_reduce_290(val, _values, result) { + var self = this; + + + if ($not(self.static_env['$declared_anonymous_blockarg?']())) { + self.$diagnostic("error", "no_anonymous_blockarg", nil, val['$[]'](0)) + }; + result = self.builder.$block_pass(val['$[]'](0), nil); + return result; + }, 3); + + $def(self, '$_reduce_291', function $$_reduce_291(val, _values, result) { + + + result = [val['$[]'](1)]; + return result; + }, 3); + + $def(self, '$_reduce_292', function $$_reduce_292(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_293', function $$_reduce_293(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_294', function $$_reduce_294(val, _values, result) { + var self = this; + + + result = [self.builder.$splat(val['$[]'](0), val['$[]'](1))]; + return result; + }, 3); + + $def(self, '$_reduce_295', function $$_reduce_295(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_296', function $$_reduce_296(val, _values, result) { + var self = this; + + + result = val['$[]'](0)['$<<'](self.builder.$splat(val['$[]'](2), val['$[]'](3))); + return result; + }, 3); + + $def(self, '$_reduce_297', function $$_reduce_297(val, _values, result) { + var self = this; + + + result = self.builder.$array(nil, val['$[]'](0), nil); + return result; + }, 3); + + $def(self, '$_reduce_299', function $$_reduce_299(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_300', function $$_reduce_300(val, _values, result) { + var self = this; + + + result = val['$[]'](0)['$<<'](self.builder.$splat(val['$[]'](2), val['$[]'](3))); + return result; + }, 3); + + $def(self, '$_reduce_301', function $$_reduce_301(val, _values, result) { + var self = this; + + + result = [self.builder.$splat(val['$[]'](0), val['$[]'](1))]; + return result; + }, 3); + + $def(self, '$_reduce_312', function $$_reduce_312(val, _values, result) { + var self = this; + + + result = self.builder.$call_method(nil, nil, val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_313', function $$_reduce_313(val, _values, result) { + var self = this; + + + self.lexer.$cmdarg().$push(false); + return result; + }, 3); + + $def(self, '$_reduce_314', function $$_reduce_314(val, _values, result) { + var self = this; + + + self.lexer.$cmdarg().$pop(); + result = self.builder.$begin_keyword(val['$[]'](0), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_315', function $$_reduce_315(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_endarg"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_316', function $$_reduce_316(val, _values, result) { + var self = this; + + + result = self.builder.$begin(val['$[]'](0), val['$[]'](1), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_317', function $$_reduce_317(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_endarg"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_318', function $$_reduce_318(val, _values, result) { + var self = this; + + + result = self.builder.$begin(val['$[]'](0), nil, val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_319', function $$_reduce_319(val, _values, result) { + var self = this; + + + result = self.builder.$begin(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_320', function $$_reduce_320(val, _values, result) { + var self = this; + + + result = self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_321', function $$_reduce_321(val, _values, result) { + var self = this; + + + result = self.builder.$const_global(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_322', function $$_reduce_322(val, _values, result) { + var self = this; + + + result = self.builder.$array(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_323', function $$_reduce_323(val, _values, result) { + var self = this; + + + result = self.builder.$associate(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_324', function $$_reduce_324(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("return", val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_325', function $$_reduce_325(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("yield", val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_326', function $$_reduce_326(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("yield", val['$[]'](0), val['$[]'](1), [], val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_327', function $$_reduce_327(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("yield", val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_328', function $$_reduce_328(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [true]; + $send(self.context, 'in_defined=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_329', function $$_reduce_329(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [false]; + $send(self.context, 'in_defined=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$keyword_cmd("defined?", val['$[]'](0), val['$[]'](2), [val['$[]'](4)], val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_330', function $$_reduce_330(val, _values, result) { + var self = this; + + + result = self.builder.$not_op(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_331', function $$_reduce_331(val, _values, result) { + var self = this; + + + result = self.builder.$not_op(val['$[]'](0), val['$[]'](1), nil, val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_332', function $$_reduce_332(val, _values, result) { + var $a, $b, self = this, method_call = nil, begin_t = nil, args = nil, body = nil, end_t = nil; + + + method_call = self.builder.$call_method(nil, nil, val['$[]'](0)); + $b = val['$[]'](1), $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; + result = self.builder.$block(method_call, begin_t, args, body, end_t); + return result; + }, 3); + + $def(self, '$_reduce_334', function $$_reduce_334(val, _values, result) { + var $a, $b, self = this, begin_t = nil, args = nil, body = nil, end_t = nil; + + + $b = val['$[]'](1), $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; + result = self.builder.$block(val['$[]'](0), begin_t, args, body, end_t); + return result; + }, 3); + + $def(self, '$_reduce_336', function $$_reduce_336(val, _values, result) { + var $a, $b, self = this, else_t = nil, else_ = nil; + + + $b = val['$[]'](4), $a = $to_ary($b), (else_t = ($a[0] == null ? nil : $a[0])), (else_ = ($a[1] == null ? nil : $a[1])), $b; + result = self.builder.$condition(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3), else_t, else_, val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_337', function $$_reduce_337(val, _values, result) { + var $a, $b, self = this, else_t = nil, else_ = nil; + + + $b = val['$[]'](4), $a = $to_ary($b), (else_t = ($a[0] == null ? nil : $a[0])), (else_ = ($a[1] == null ? nil : $a[1])), $b; + result = self.builder.$condition(val['$[]'](0), val['$[]'](1), val['$[]'](2), else_, else_t, val['$[]'](3), val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_338', function $$_reduce_338(val, _values, result) { + var self = this; + + + result = $send(self.builder, 'loop', ["while", val['$[]'](0)].concat($to_a(val['$[]'](1))).concat([val['$[]'](2), val['$[]'](3)])); + return result; + }, 3); + + $def(self, '$_reduce_339', function $$_reduce_339(val, _values, result) { + var self = this; + + + result = $send(self.builder, 'loop', ["until", val['$[]'](0)].concat($to_a(val['$[]'](1))).concat([val['$[]'](2), val['$[]'](3)])); + return result; + }, 3); + + $def(self, '$_reduce_340', function $$_reduce_340(val, _values, result) { + var $a, $b, $c, self = this, when_bodies = nil, else_t = nil, else_body = nil; + + + $a = [].concat($to_a(val['$[]'](3))), $b = $a.length - 1, $b = ($b < 0) ? 0 : $b, (when_bodies = $slice.call($a, 0, $b)), ($c = $to_ary(($a[$b] == null ? nil : $a[$b])), (else_t = ($c[0] == null ? nil : $c[0])), (else_body = ($c[1] == null ? nil : $c[1]))), $a; + result = self.builder.$case(val['$[]'](0), val['$[]'](1), when_bodies, else_t, else_body, val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_341', function $$_reduce_341(val, _values, result) { + var $a, $b, $c, self = this, when_bodies = nil, else_t = nil, else_body = nil; + + + $a = [].concat($to_a(val['$[]'](2))), $b = $a.length - 1, $b = ($b < 0) ? 0 : $b, (when_bodies = $slice.call($a, 0, $b)), ($c = $to_ary(($a[$b] == null ? nil : $a[$b])), (else_t = ($c[0] == null ? nil : $c[0])), (else_body = ($c[1] == null ? nil : $c[1]))), $a; + result = self.builder.$case(val['$[]'](0), nil, when_bodies, else_t, else_body, val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_342', function $$_reduce_342(val, _values, result) { + var $a, $b, $c, self = this, in_bodies = nil, else_t = nil, else_body = nil; + + + $a = [].concat($to_a(val['$[]'](3))), $b = $a.length - 1, $b = ($b < 0) ? 0 : $b, (in_bodies = $slice.call($a, 0, $b)), ($c = $to_ary(($a[$b] == null ? nil : $a[$b])), (else_t = ($c[0] == null ? nil : $c[0])), (else_body = ($c[1] == null ? nil : $c[1]))), $a; + result = self.builder.$case_match(val['$[]'](0), val['$[]'](1), in_bodies, else_t, else_body, val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_343', function $$_reduce_343(val, _values, result) { + var self = this; + + + result = $send(self.builder, 'for', [val['$[]'](0), val['$[]'](1), val['$[]'](2)].concat($to_a(val['$[]'](3))).concat([val['$[]'](4), val['$[]'](5)])); + return result; + }, 3); + + $def(self, '$_reduce_344', function $$_reduce_344(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [true]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.$local_push(); + return result; + }, 3); + + $def(self, '$_reduce_345', function $$_reduce_345(val, _values, result) { + var $a, $b, self = this, k_class = nil, ctx = nil, lt_t = nil, superclass = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (k_class = ($a[0] == null ? nil : $a[0])), (ctx = ($a[1] == null ? nil : $a[1])), $b; + if ($truthy(self.context.$in_def())) { + self.$diagnostic("error", "class_in_def", nil, k_class) + }; + $b = val['$[]'](2), $a = $to_ary($b), (lt_t = ($a[0] == null ? nil : $a[0])), (superclass = ($a[1] == null ? nil : $a[1])), $b; + result = self.builder.$def_class(k_class, val['$[]'](1), lt_t, superclass, val['$[]'](4), val['$[]'](5)); + self.$local_pop(); + + $writer = [ctx.$in_class()]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_346', function $$_reduce_346(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [false]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.$local_push(); + return result; + }, 3); + + $def(self, '$_reduce_347', function $$_reduce_347(val, _values, result) { + var $a, $b, self = this, k_class = nil, ctx = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (k_class = ($a[0] == null ? nil : $a[0])), (ctx = ($a[1] == null ? nil : $a[1])), $b; + result = self.builder.$def_sclass(k_class, val['$[]'](1), val['$[]'](2), val['$[]'](5), val['$[]'](6)); + self.$local_pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [ctx.$in_class()]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_348', function $$_reduce_348(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [true]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.$local_push(); + return result; + }, 3); + + $def(self, '$_reduce_349', function $$_reduce_349(val, _values, result) { + var $a, $b, self = this, k_mod = nil, ctx = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (k_mod = ($a[0] == null ? nil : $a[0])), (ctx = ($a[1] == null ? nil : $a[1])), $b; + if ($truthy(self.context.$in_def())) { + self.$diagnostic("error", "module_in_def", nil, k_mod) + }; + result = self.builder.$def_module(k_mod, val['$[]'](1), val['$[]'](3), val['$[]'](4)); + self.$local_pop(); + + $writer = [ctx.$in_class()]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_350', function $$_reduce_350(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, name_t = nil, ctx = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), ($c = $to_ary(($a[1] == null ? nil : $a[1])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + result = self.builder.$def_method(def_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); + self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_351', function $$_reduce_351(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, recv = nil, dot_t = nil, name_t = nil, ctx = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), (recv = ($a[1] == null ? nil : $a[1])), (dot_t = ($a[2] == null ? nil : $a[2])), ($c = $to_ary(($a[3] == null ? nil : $a[3])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + result = self.builder.$def_singleton(def_t, recv, dot_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); + self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_352', function $$_reduce_352(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("break", val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_353', function $$_reduce_353(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("next", val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_354', function $$_reduce_354(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("redo", val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_355', function $$_reduce_355(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("retry", val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_357', function $$_reduce_357(val, _values, result) { + var self = this; + + + result = [val['$[]'](0), self.context.$dup()]; + return result; + }, 3); + + $def(self, '$_reduce_358', function $$_reduce_358(val, _values, result) { + var self = this; + + + result = [val['$[]'](0), self.context.$dup()]; + return result; + }, 3); + + $def(self, '$_reduce_359', function $$_reduce_359(val, _values, result) { + var self = this, $writer = nil; + + + result = val['$[]'](0); + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_360', function $$_reduce_360(val, _values, result) { + var self = this, $ret_or_1 = nil; + + + if ((($truthy(self.context.$in_class()) && ($not(self.context.$in_def()))) && ($not(($truthy(($ret_or_1 = self.$context().$in_block())) ? ($ret_or_1) : (self.$context().$in_lambda())))))) { + self.$diagnostic("error", "invalid_return", nil, val['$[]'](0)) + }; + return result; + }, 3); + + $def(self, '$_reduce_363', function $$_reduce_363(val, _values, result) { + + + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_367', function $$_reduce_367(val, _values, result) { + var $a, $b, self = this, else_t = nil, else_ = nil; + + + $b = val['$[]'](4), $a = $to_ary($b), (else_t = ($a[0] == null ? nil : $a[0])), (else_ = ($a[1] == null ? nil : $a[1])), $b; + result = [val['$[]'](0), self.builder.$condition(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3), else_t, else_, nil)]; + return result; + }, 3); + + $def(self, '$_reduce_369', function $$_reduce_369(val, _values, result) { + + + result = val; + return result; + }, 3); + + $def(self, '$_reduce_372', function $$_reduce_372(val, _values, result) { + var self = this; + + + result = self.builder.$arg(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_373', function $$_reduce_373(val, _values, result) { + var self = this; + + + result = self.builder.$multi_lhs(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_374', function $$_reduce_374(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_375', function $$_reduce_375(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_377', function $$_reduce_377(val, _values, result) { + + + result = val['$[]'](0).$push(val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_378', function $$_reduce_378(val, _values, result) { + + + result = val['$[]'](0).$push(val['$[]'](2)).$concat(val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_379', function $$_reduce_379(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_380', function $$_reduce_380(val, _values, result) { + + + result = [val['$[]'](0)].concat($to_a(val['$[]'](2))); + return result; + }, 3); + + $def(self, '$_reduce_381', function $$_reduce_381(val, _values, result) { + var self = this; + + + result = self.builder.$restarg(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_382', function $$_reduce_382(val, _values, result) { + var self = this; + + + result = self.builder.$restarg(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_385', function $$_reduce_385(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_386', function $$_reduce_386(val, _values, result) { + + + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_387', function $$_reduce_387(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_388', function $$_reduce_388(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_389', function $$_reduce_389(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_390', function $$_reduce_390(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_391', function $$_reduce_391(val, _values, result) { + + + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_392', function $$_reduce_392(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_394', function $$_reduce_394(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_395', function $$_reduce_395(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](6)).$concat(val['$[]'](7)); + return result; + }, 3); + + $def(self, '$_reduce_396', function $$_reduce_396(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_397', function $$_reduce_397(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_398', function $$_reduce_398(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_400', function $$_reduce_400(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_401', function $$_reduce_401(val, _values, result) { + var self = this; + + + if (($truthy(val['$[]'](1)['$empty?']()) && ($eqeq(val['$[]'](0).$size(), 1)))) { + result = [self.builder.$procarg0(val['$[]'](0)['$[]'](0))] + } else { + result = val['$[]'](0).$concat(val['$[]'](1)) + }; + return result; + }, 3); + + $def(self, '$_reduce_402', function $$_reduce_402(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_403', function $$_reduce_403(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_404', function $$_reduce_404(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_405', function $$_reduce_405(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_406', function $$_reduce_406(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_407', function $$_reduce_407(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_409', function $$_reduce_409(val, _values, result) { + var self = this; + + + result = self.builder.$args(nil, [], nil); + return result; + }, 3); + + $def(self, '$_reduce_410', function $$_reduce_410(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_value"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_411', function $$_reduce_411(val, _values, result) { + var self = this, $writer = nil; + + + self.max_numparam_stack['$has_ordinary_params!'](); + self.current_arg_stack.$set(nil); + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$args(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_412', function $$_reduce_412(val, _values, result) { + var self = this, $writer = nil; + + + self.max_numparam_stack['$has_ordinary_params!'](); + self.current_arg_stack.$set(nil); + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$args(val['$[]'](0), val['$[]'](1).$concat(val['$[]'](2)), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_413', function $$_reduce_413(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_414', function $$_reduce_414(val, _values, result) { + + + result = val['$[]'](2); + return result; + }, 3); + + $def(self, '$_reduce_415', function $$_reduce_415(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_416', function $$_reduce_416(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_417', function $$_reduce_417(val, _values, result) { + var self = this; + + + self.static_env.$declare(val['$[]'](0)['$[]'](0)); + result = self.builder.$shadowarg(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_419', function $$_reduce_419(val, _values, result) { + var self = this, $writer = nil; + + + self.static_env.$extend_dynamic(); + self.max_numparam_stack.$push($hash2(["static"], {"static": false})); + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_420', function $$_reduce_420(val, _values, result) { + var self = this; + + + self.lexer.$cmdarg().$push(false); + return result; + }, 3); + + $def(self, '$_reduce_421', function $$_reduce_421(val, _values, result) { + var $a, $b, self = this, lambda_call = nil, args = nil, begin_t = nil, body = nil, end_t = nil, $writer = nil; + + + lambda_call = self.builder.$call_lambda(val['$[]'](0)); + args = ($truthy(self.max_numparam_stack['$has_numparams?']()) ? (self.builder.$numargs(self.max_numparam_stack.$top())) : (val['$[]'](2))); + $b = val['$[]'](4), $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (body = ($a[1] == null ? nil : $a[1])), (end_t = ($a[2] == null ? nil : $a[2])), $b; + self.max_numparam_stack.$pop(); + self.static_env.$unextend(); + self.lexer.$cmdarg().$pop(); + + $writer = [val['$[]'](1).$in_lambda()]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$block(lambda_call, begin_t, args, body, end_t); + return result; + }, 3); + + $def(self, '$_reduce_422', function $$_reduce_422(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.max_numparam_stack['$has_ordinary_params!'](); + result = self.builder.$args(val['$[]'](0), val['$[]'](1).$concat(val['$[]'](2)), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_423', function $$_reduce_423(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy(val['$[]'](0)['$any?']())) { + self.max_numparam_stack['$has_ordinary_params!']() + }; + result = self.builder.$args(nil, val['$[]'](0), nil); + return result; + }, 3); + + $def(self, '$_reduce_424', function $$_reduce_424(val, _values, result) { + var self = this, $writer = nil; + + + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_425', function $$_reduce_425(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [val['$[]'](1).$in_lambda()]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = [val['$[]'](0), val['$[]'](2), val['$[]'](3)]; + return result; + }, 3); + + $def(self, '$_reduce_426', function $$_reduce_426(val, _values, result) { + var self = this, $writer = nil; + + + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_427', function $$_reduce_427(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [val['$[]'](1).$in_lambda()]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = [val['$[]'](0), val['$[]'](2), val['$[]'](3)]; + return result; + }, 3); + + $def(self, '$_reduce_428', function $$_reduce_428(val, _values, result) { + var self = this, $writer = nil; + + + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_429', function $$_reduce_429(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [val['$[]'](1).$in_block()]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](3)]); + return result; + }, 3); + + $def(self, '$_reduce_430', function $$_reduce_430(val, _values, result) { + var $a, $b, self = this, begin_t = nil, block_args = nil, body = nil, end_t = nil; + + + $b = val['$[]'](1), $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (block_args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; + result = self.builder.$block(val['$[]'](0), begin_t, block_args, body, end_t); + return result; + }, 3); + + $def(self, '$_reduce_431', function $$_reduce_431(val, _values, result) { + var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; + + + $b = val['$[]'](3), $a = $to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; + result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), lparen_t, args, rparen_t); + return result; + }, 3); + + $def(self, '$_reduce_432', function $$_reduce_432(val, _values, result) { + var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil, method_call = nil, begin_t = nil, body = nil, end_t = nil; + + + $b = val['$[]'](3), $a = $to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; + method_call = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), lparen_t, args, rparen_t); + $b = val['$[]'](4), $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; + result = self.builder.$block(method_call, begin_t, args, body, end_t); + return result; + }, 3); + + $def(self, '$_reduce_433', function $$_reduce_433(val, _values, result) { + var $a, $b, self = this, method_call = nil, begin_t = nil, args = nil, body = nil, end_t = nil; + + + method_call = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), nil, val['$[]'](3), nil); + $b = val['$[]'](4), $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; + result = self.builder.$block(method_call, begin_t, args, body, end_t); + return result; + }, 3); + + $def(self, '$_reduce_434', function $$_reduce_434(val, _values, result) { + var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; + + + $b = val['$[]'](1), $a = $to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; + result = self.builder.$call_method(nil, nil, val['$[]'](0), lparen_t, args, rparen_t); + return result; + }, 3); + + $def(self, '$_reduce_435', function $$_reduce_435(val, _values, result) { + var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; + + + $b = val['$[]'](3), $a = $to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; + result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), lparen_t, args, rparen_t); + return result; + }, 3); + + $def(self, '$_reduce_436', function $$_reduce_436(val, _values, result) { + var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; + + + $b = val['$[]'](3), $a = $to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; + result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), lparen_t, args, rparen_t); + return result; + }, 3); + + $def(self, '$_reduce_437', function $$_reduce_437(val, _values, result) { + var self = this; + + + result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_438', function $$_reduce_438(val, _values, result) { + var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; + + + $b = val['$[]'](2), $a = $to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; + result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), nil, lparen_t, args, rparen_t); + return result; + }, 3); + + $def(self, '$_reduce_439', function $$_reduce_439(val, _values, result) { + var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; + + + $b = val['$[]'](2), $a = $to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; + result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), nil, lparen_t, args, rparen_t); + return result; + }, 3); + + $def(self, '$_reduce_440', function $$_reduce_440(val, _values, result) { + var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; + + + $b = val['$[]'](1), $a = $to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; + result = self.builder.$keyword_cmd("super", val['$[]'](0), lparen_t, args, rparen_t); + return result; + }, 3); + + $def(self, '$_reduce_441', function $$_reduce_441(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("zsuper", val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_442', function $$_reduce_442(val, _values, result) { + var self = this; + + + result = self.builder.$index(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_443', function $$_reduce_443(val, _values, result) { + var self = this, $writer = nil; + + + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_444', function $$_reduce_444(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [val['$[]'](1).$in_block()]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](3)]); + return result; + }, 3); + + $def(self, '$_reduce_445', function $$_reduce_445(val, _values, result) { + var self = this, $writer = nil; + + + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_446', function $$_reduce_446(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [val['$[]'](1).$in_block()]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](3)]); + return result; + }, 3); + + $def(self, '$_reduce_447', function $$_reduce_447(val, _values, result) { + var self = this; + + + self.static_env.$extend_dynamic(); + self.max_numparam_stack.$push($hash2(["static"], {"static": false})); + return result; + }, 3); + + $def(self, '$_reduce_448', function $$_reduce_448(val, _values, result) { + var self = this, args = nil; + + + args = ($truthy(self.max_numparam_stack['$has_numparams?']()) ? (self.builder.$numargs(self.max_numparam_stack.$top())) : (val['$[]'](1))); + result = [args, val['$[]'](2)]; + self.max_numparam_stack.$pop(); + self.static_env.$unextend(); + return result; + }, 3); + + $def(self, '$_reduce_449', function $$_reduce_449(val, _values, result) { + var self = this; + + + self.static_env.$extend_dynamic(); + self.max_numparam_stack.$push($hash2(["static"], {"static": false})); + return result; + }, 3); + + $def(self, '$_reduce_450', function $$_reduce_450(val, _values, result) { + var self = this; + + + self.lexer.$cmdarg().$push(false); + return result; + }, 3); + + $def(self, '$_reduce_451', function $$_reduce_451(val, _values, result) { + var self = this, args = nil; + + + args = ($truthy(self.max_numparam_stack['$has_numparams?']()) ? (self.builder.$numargs(self.max_numparam_stack.$top())) : (val['$[]'](2))); + result = [args, val['$[]'](3)]; + self.max_numparam_stack.$pop(); + self.static_env.$unextend(); + self.lexer.$cmdarg().$pop(); + return result; + }, 3); + + $def(self, '$_reduce_452', function $$_reduce_452(val, _values, result) { + var self = this; + + + result = [self.builder.$when(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3))].concat($to_a(val['$[]'](4))); + return result; + }, 3); + + $def(self, '$_reduce_453', function $$_reduce_453(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_455', function $$_reduce_455(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_beg"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(self.lexer, 'command_start=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.pattern_variables.$push(); + self.pattern_hash_keys.$push(); + result = self.context.$in_kwarg(); + + $writer = [true]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_456', function $$_reduce_456(val, _values, result) { + var self = this, $writer = nil; + + + self.pattern_variables.$pop(); + self.pattern_hash_keys.$pop(); + + $writer = [val['$[]'](1)]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_457', function $$_reduce_457(val, _values, result) { + var self = this; + + + result = [$send(self.builder, 'in_pattern', [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](3), val['$[]'](5)]))].concat($to_a(val['$[]'](6))); + return result; + }, 3); + + $def(self, '$_reduce_458', function $$_reduce_458(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_460', function $$_reduce_460(val, _values, result) { + + + result = [val['$[]'](0), nil]; + return result; + }, 3); + + $def(self, '$_reduce_461', function $$_reduce_461(val, _values, result) { + var self = this; + + + result = [val['$[]'](0), self.builder.$if_guard(val['$[]'](1), val['$[]'](2))]; + return result; + }, 3); + + $def(self, '$_reduce_462', function $$_reduce_462(val, _values, result) { + var self = this; + + + result = [val['$[]'](0), self.builder.$unless_guard(val['$[]'](1), val['$[]'](2))]; + return result; + }, 3); + + $def(self, '$_reduce_464', function $$_reduce_464(val, _values, result) { + var self = this, item = nil; + + + item = self.builder.$match_with_trailing_comma(val['$[]'](0), val['$[]'](1)); + result = self.builder.$array_pattern(nil, [item], nil); + return result; + }, 3); + + $def(self, '$_reduce_465', function $$_reduce_465(val, _values, result) { + var self = this; + + + result = self.builder.$array_pattern(nil, [val['$[]'](0)].$concat(val['$[]'](2)), nil); + return result; + }, 3); + + $def(self, '$_reduce_466', function $$_reduce_466(val, _values, result) { + var self = this; + + + result = self.builder.$find_pattern(nil, val['$[]'](0), nil); + return result; + }, 3); + + $def(self, '$_reduce_467', function $$_reduce_467(val, _values, result) { + var self = this; + + + result = self.builder.$array_pattern(nil, val['$[]'](0), nil); + return result; + }, 3); + + $def(self, '$_reduce_468', function $$_reduce_468(val, _values, result) { + var self = this; + + + result = self.builder.$hash_pattern(nil, val['$[]'](0), nil); + return result; + }, 3); + + $def(self, '$_reduce_470', function $$_reduce_470(val, _values, result) { + var self = this; + + + result = self.builder.$match_as(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_472', function $$_reduce_472(val, _values, result) { + var self = this; + + + result = self.builder.$match_alt(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_474', function $$_reduce_474(val, _values, result) { + var self = this; + + + result = val['$[]'](0); + self.pattern_hash_keys.$push(); + return result; + }, 3); + + $def(self, '$_reduce_475', function $$_reduce_475(val, _values, result) { + var self = this; + + + result = val['$[]'](0); + self.pattern_hash_keys.$push(); + return result; + }, 3); + + $def(self, '$_reduce_478', function $$_reduce_478(val, _values, result) { + var self = this, pattern = nil; + + + self.pattern_hash_keys.$pop(); + pattern = self.builder.$array_pattern(nil, val['$[]'](2), nil); + result = self.builder.$const_pattern(val['$[]'](0), val['$[]'](1), pattern, val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_479', function $$_reduce_479(val, _values, result) { + var self = this, pattern = nil; + + + self.pattern_hash_keys.$pop(); + pattern = self.builder.$find_pattern(nil, val['$[]'](2), nil); + result = self.builder.$const_pattern(val['$[]'](0), val['$[]'](1), pattern, val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_480', function $$_reduce_480(val, _values, result) { + var self = this, pattern = nil; + + + self.pattern_hash_keys.$pop(); + pattern = self.builder.$hash_pattern(nil, val['$[]'](2), nil); + result = self.builder.$const_pattern(val['$[]'](0), val['$[]'](1), pattern, val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_481', function $$_reduce_481(val, _values, result) { + var self = this, pattern = nil; + + + pattern = self.builder.$array_pattern(val['$[]'](1), nil, val['$[]'](2)); + result = self.builder.$const_pattern(val['$[]'](0), val['$[]'](1), pattern, val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_482', function $$_reduce_482(val, _values, result) { + var self = this, pattern = nil; + + + self.pattern_hash_keys.$pop(); + pattern = self.builder.$array_pattern(nil, val['$[]'](2), nil); + result = self.builder.$const_pattern(val['$[]'](0), val['$[]'](1), pattern, val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_483', function $$_reduce_483(val, _values, result) { + var self = this, pattern = nil; + + + self.pattern_hash_keys.$pop(); + pattern = self.builder.$find_pattern(nil, val['$[]'](2), nil); + result = self.builder.$const_pattern(val['$[]'](0), val['$[]'](1), pattern, val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_484', function $$_reduce_484(val, _values, result) { + var self = this, pattern = nil; + + + self.pattern_hash_keys.$pop(); + pattern = self.builder.$hash_pattern(nil, val['$[]'](2), nil); + result = self.builder.$const_pattern(val['$[]'](0), val['$[]'](1), pattern, val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_485', function $$_reduce_485(val, _values, result) { + var self = this, pattern = nil; + + + pattern = self.builder.$array_pattern(val['$[]'](1), nil, val['$[]'](2)); + result = self.builder.$const_pattern(val['$[]'](0), val['$[]'](1), pattern, val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_486', function $$_reduce_486(val, _values, result) { + var self = this; + + + result = self.builder.$array_pattern(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_487', function $$_reduce_487(val, _values, result) { + var self = this; + + + result = self.builder.$find_pattern(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_488', function $$_reduce_488(val, _values, result) { + var self = this; + + + result = self.builder.$array_pattern(val['$[]'](0), [], val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_489', function $$_reduce_489(val, _values, result) { + var self = this, $writer = nil; + + + self.pattern_hash_keys.$push(); + result = self.context.$in_kwarg(); + + $writer = [false]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_490', function $$_reduce_490(val, _values, result) { + var self = this, $writer = nil; + + + self.pattern_hash_keys.$pop(); + + $writer = [val['$[]'](1)]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$hash_pattern(val['$[]'](0), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_491', function $$_reduce_491(val, _values, result) { + var self = this; + + + result = self.builder.$hash_pattern(val['$[]'](0), [], val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_492', function $$_reduce_492(val, _values, result) { + var self = this; + + + self.pattern_hash_keys.$push(); + return result; + }, 3); + + $def(self, '$_reduce_493', function $$_reduce_493(val, _values, result) { + var self = this; + + + self.pattern_hash_keys.$pop(); + result = self.builder.$begin(val['$[]'](0), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_494', function $$_reduce_494(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_495', function $$_reduce_495(val, _values, result) { + + + result = val['$[]'](0); + return result; + }, 3); + + $def(self, '$_reduce_496', function $$_reduce_496(val, _values, result) { + + + result = [].concat($to_a(val['$[]'](0))).concat([val['$[]'](1)]); + return result; + }, 3); + + $def(self, '$_reduce_497', function $$_reduce_497(val, _values, result) { + var self = this, match_rest = nil; + + + match_rest = self.builder.$match_rest(val['$[]'](1), val['$[]'](2)); + result = [].concat($to_a(val['$[]'](0))).concat([match_rest]); + return result; + }, 3); + + $def(self, '$_reduce_498', function $$_reduce_498(val, _values, result) { + var self = this, match_rest = nil; + + + match_rest = self.builder.$match_rest(val['$[]'](1), val['$[]'](2)); + result = [].concat($to_a(val['$[]'](0))).concat([match_rest]).concat($to_a(val['$[]'](4))); + return result; + }, 3); + + $def(self, '$_reduce_499', function $$_reduce_499(val, _values, result) { + var self = this; + + + result = [].concat($to_a(val['$[]'](0))).concat([self.builder.$match_rest(val['$[]'](1))]); + return result; + }, 3); + + $def(self, '$_reduce_500', function $$_reduce_500(val, _values, result) { + var self = this; + + + result = [].concat($to_a(val['$[]'](0))).concat([self.builder.$match_rest(val['$[]'](1))]).concat($to_a(val['$[]'](3))); + return result; + }, 3); + + $def(self, '$_reduce_502', function $$_reduce_502(val, _values, result) { + var self = this, item = nil; + + + item = self.builder.$match_with_trailing_comma(val['$[]'](0), val['$[]'](1)); + result = [item]; + return result; + }, 3); + + $def(self, '$_reduce_503', function $$_reduce_503(val, _values, result) { + var self = this, last_item = nil; + + + last_item = self.builder.$match_with_trailing_comma(val['$[]'](1), val['$[]'](2)); + result = [].concat($to_a(val['$[]'](0))).concat([last_item]); + return result; + }, 3); + + $def(self, '$_reduce_504', function $$_reduce_504(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_505', function $$_reduce_505(val, _values, result) { + + + result = [val['$[]'](0)].concat($to_a(val['$[]'](2))); + return result; + }, 3); + + $def(self, '$_reduce_506', function $$_reduce_506(val, _values, result) { + + + result = [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](4)]); + return result; + }, 3); + + $def(self, '$_reduce_507', function $$_reduce_507(val, _values, result) { + var self = this; + + + result = self.builder.$match_rest(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_508', function $$_reduce_508(val, _values, result) { + var self = this; + + + result = self.builder.$match_rest(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_509', function $$_reduce_509(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_510', function $$_reduce_510(val, _values, result) { + + + result = [].concat($to_a(val['$[]'](0))).concat([val['$[]'](2)]); + return result; + }, 3); + + $def(self, '$_reduce_512', function $$_reduce_512(val, _values, result) { + + + result = [].concat($to_a(val['$[]'](0))).concat($to_a(val['$[]'](2))); + return result; + }, 3); + + $def(self, '$_reduce_513', function $$_reduce_513(val, _values, result) { + + + result = val['$[]'](0); + return result; + }, 3); + + $def(self, '$_reduce_514', function $$_reduce_514(val, _values, result) { + + + result = val['$[]'](0); + return result; + }, 3); + + $def(self, '$_reduce_515', function $$_reduce_515(val, _values, result) { + + + result = val['$[]'](0); + return result; + }, 3); + + $def(self, '$_reduce_516', function $$_reduce_516(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_517', function $$_reduce_517(val, _values, result) { + + + result = [].concat($to_a(val['$[]'](0))).concat([val['$[]'](2)]); + return result; + }, 3); + + $def(self, '$_reduce_518', function $$_reduce_518(val, _values, result) { + var self = this; + + + result = $send(self.builder, 'match_pair', $to_a(val['$[]'](0)).concat([val['$[]'](1)])); + return result; + }, 3); + + $def(self, '$_reduce_519', function $$_reduce_519(val, _values, result) { + var self = this; + + + result = $send(self.builder, 'match_label', $to_a(val['$[]'](0))); + return result; + }, 3); + + $def(self, '$_reduce_520', function $$_reduce_520(val, _values, result) { + + + result = ["label", val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_521', function $$_reduce_521(val, _values, result) { + + + result = ["quoted", [val['$[]'](0), val['$[]'](1), val['$[]'](2)]]; + return result; + }, 3); + + $def(self, '$_reduce_522', function $$_reduce_522(val, _values, result) { + var self = this; + + + result = [self.builder.$match_rest(val['$[]'](0), val['$[]'](1))]; + return result; + }, 3); + + $def(self, '$_reduce_523', function $$_reduce_523(val, _values, result) { + var self = this; + + + result = [self.builder.$match_rest(val['$[]'](0), nil)]; + return result; + }, 3); + + $def(self, '$_reduce_524', function $$_reduce_524(val, _values, result) { + var self = this; + + + result = [self.builder.$match_nil_pattern(val['$[]'](0), val['$[]'](1))]; + return result; + }, 3); + + $def(self, '$_reduce_528', function $$_reduce_528(val, _values, result) { + var self = this; + + + result = self.builder.$range_inclusive(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_529', function $$_reduce_529(val, _values, result) { + var self = this; + + + result = self.builder.$range_exclusive(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_530', function $$_reduce_530(val, _values, result) { + var self = this; + + + result = self.builder.$range_inclusive(val['$[]'](0), val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_531', function $$_reduce_531(val, _values, result) { + var self = this; + + + result = self.builder.$range_exclusive(val['$[]'](0), val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_535', function $$_reduce_535(val, _values, result) { + var self = this; + + + result = self.builder.$range_inclusive(nil, val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_536', function $$_reduce_536(val, _values, result) { + var self = this; + + + result = self.builder.$range_exclusive(nil, val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_545', function $$_reduce_545(val, _values, result) { + var self = this; + + + result = self.builder.$accessible(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_547', function $$_reduce_547(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(self.builder.$match_var(val['$[]'](0))); + return result; + }, 3); + + $def(self, '$_reduce_548', function $$_reduce_548(val, _values, result) { + var self = this, name = nil, lvar = nil; + + + name = val['$[]'](1)['$[]'](0); + if (!$truthy(self.$static_env()['$declared?'](name))) { + self.$diagnostic("error", "undefined_lvar", $hash2(["name"], {"name": name}), val['$[]'](1)) + }; + lvar = self.builder.$accessible(self.builder.$ident(val['$[]'](1))); + result = self.builder.$pin(val['$[]'](0), lvar); + return result; + }, 3); + + $def(self, '$_reduce_549', function $$_reduce_549(val, _values, result) { + var self = this, non_lvar = nil; + + + non_lvar = self.builder.$accessible(val['$[]'](1)); + result = self.builder.$pin(val['$[]'](0), non_lvar); + return result; + }, 3); + + $def(self, '$_reduce_550', function $$_reduce_550(val, _values, result) { + var self = this, expr = nil; + + + expr = self.builder.$begin(val['$[]'](1), val['$[]'](2), val['$[]'](3)); + result = self.builder.$pin(val['$[]'](0), expr); + return result; + }, 3); + + $def(self, '$_reduce_551', function $$_reduce_551(val, _values, result) { + var self = this; + + + result = self.builder.$const_global(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_552', function $$_reduce_552(val, _values, result) { + var self = this; + + + result = self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_553', function $$_reduce_553(val, _values, result) { + var self = this; + + + result = self.builder.$const(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_554', function $$_reduce_554(val, _values, result) { + var $a, $b, self = this, assoc_t = nil, exc_var = nil, exc_list = nil; + + + $b = val['$[]'](2), $a = $to_ary($b), (assoc_t = ($a[0] == null ? nil : $a[0])), (exc_var = ($a[1] == null ? nil : $a[1])), $b; + if ($truthy(val['$[]'](1))) { + exc_list = self.builder.$array(nil, val['$[]'](1), nil) + }; + result = [self.builder.$rescue_body(val['$[]'](0), exc_list, assoc_t, exc_var, val['$[]'](3), val['$[]'](4))].concat($to_a(val['$[]'](5))); + return result; + }, 3); + + $def(self, '$_reduce_555', function $$_reduce_555(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_556', function $$_reduce_556(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_559', function $$_reduce_559(val, _values, result) { + + + result = [val['$[]'](0), val['$[]'](1)]; + return result; + }, 3); + + $def(self, '$_reduce_561', function $$_reduce_561(val, _values, result) { + + + result = [val['$[]'](0), val['$[]'](1)]; + return result; + }, 3); + + $def(self, '$_reduce_565', function $$_reduce_565(val, _values, result) { + var self = this; + + + result = self.builder.$string_compose(nil, val['$[]'](0), nil); + return result; + }, 3); + + $def(self, '$_reduce_566', function $$_reduce_566(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_567', function $$_reduce_567(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_568', function $$_reduce_568(val, _values, result) { + var self = this, string = nil; + + + string = self.builder.$string_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + result = self.builder.$dedent_string(string, self.lexer.$dedent_level()); + return result; + }, 3); + + $def(self, '$_reduce_569', function $$_reduce_569(val, _values, result) { + var self = this, string = nil; + + + string = self.builder.$string(val['$[]'](0)); + result = self.builder.$dedent_string(string, self.lexer.$dedent_level()); + return result; + }, 3); + + $def(self, '$_reduce_570', function $$_reduce_570(val, _values, result) { + var self = this; + + + result = self.builder.$character(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_571', function $$_reduce_571(val, _values, result) { + var self = this, string = nil; + + + string = self.builder.$xstring_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + result = self.builder.$dedent_string(string, self.lexer.$dedent_level()); + return result; + }, 3); + + $def(self, '$_reduce_572', function $$_reduce_572(val, _values, result) { + var self = this, opts = nil; + + + opts = self.builder.$regexp_options(val['$[]'](3)); + result = self.builder.$regexp_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2), opts); + return result; + }, 3); + + $def(self, '$_reduce_573', function $$_reduce_573(val, _values, result) { + var self = this; + + + result = self.builder.$words_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_574', function $$_reduce_574(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_575', function $$_reduce_575(val, _values, result) { + var self = this; + + + result = val['$[]'](0)['$<<'](self.builder.$word(val['$[]'](1))); + return result; + }, 3); + + $def(self, '$_reduce_576', function $$_reduce_576(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_577', function $$_reduce_577(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_578', function $$_reduce_578(val, _values, result) { + var self = this; + + + result = self.builder.$symbols_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_579', function $$_reduce_579(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_580', function $$_reduce_580(val, _values, result) { + var self = this; + + + result = val['$[]'](0)['$<<'](self.builder.$word(val['$[]'](1))); + return result; + }, 3); + + $def(self, '$_reduce_581', function $$_reduce_581(val, _values, result) { + var self = this; + + + result = self.builder.$words_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_582', function $$_reduce_582(val, _values, result) { + var self = this; + + + result = self.builder.$symbols_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_583', function $$_reduce_583(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_584', function $$_reduce_584(val, _values, result) { + var self = this; + + + result = val['$[]'](0)['$<<'](self.builder.$string_internal(val['$[]'](1))); + return result; + }, 3); + + $def(self, '$_reduce_585', function $$_reduce_585(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_586', function $$_reduce_586(val, _values, result) { + var self = this; + + + result = val['$[]'](0)['$<<'](self.builder.$symbol_internal(val['$[]'](1))); + return result; + }, 3); + + $def(self, '$_reduce_587', function $$_reduce_587(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_588', function $$_reduce_588(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_589', function $$_reduce_589(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_590', function $$_reduce_590(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_591', function $$_reduce_591(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_592', function $$_reduce_592(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_593', function $$_reduce_593(val, _values, result) { + var self = this; + + + result = self.builder.$string_internal(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_594', function $$_reduce_594(val, _values, result) { + + + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_595', function $$_reduce_595(val, _values, result) { + var self = this; + + + self.lexer.$cmdarg().$push(false); + self.lexer.$cond().$push(false); + return result; + }, 3); + + $def(self, '$_reduce_596', function $$_reduce_596(val, _values, result) { + var self = this; + + + self.lexer.$cmdarg().$pop(); + self.lexer.$cond().$pop(); + result = self.builder.$begin(val['$[]'](0), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_597', function $$_reduce_597(val, _values, result) { + var self = this; + + + result = self.builder.$gvar(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_598', function $$_reduce_598(val, _values, result) { + var self = this; + + + result = self.builder.$ivar(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_599', function $$_reduce_599(val, _values, result) { + var self = this; + + + result = self.builder.$cvar(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_603', function $$_reduce_603(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_end"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$symbol(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_604', function $$_reduce_604(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_end"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$symbol_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_605', function $$_reduce_605(val, _values, result) { + + + result = val['$[]'](0); + return result; + }, 3); + + $def(self, '$_reduce_606', function $$_reduce_606(val, _values, result) { + var self = this; + + + if ($truthy(self.builder['$respond_to?']("negate"))) { + result = self.builder.$negate(val['$[]'](0), val['$[]'](1)) + } else { + result = self.builder.$unary_num(val['$[]'](0), val['$[]'](1)) + }; + return result; + }, 3); + + $def(self, '$_reduce_607', function $$_reduce_607(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_end"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$integer(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_608', function $$_reduce_608(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_end"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$float(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_609', function $$_reduce_609(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_end"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$rational(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_610', function $$_reduce_610(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_end"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$complex(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_611', function $$_reduce_611(val, _values, result) { + var self = this; + + + result = self.builder.$ivar(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_612', function $$_reduce_612(val, _values, result) { + var self = this; + + + result = self.builder.$gvar(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_613', function $$_reduce_613(val, _values, result) { + var self = this; + + + result = self.builder.$cvar(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_614', function $$_reduce_614(val, _values, result) { + var self = this; + + + result = self.builder.$ident(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_615', function $$_reduce_615(val, _values, result) { + var self = this; + + + result = self.builder.$ivar(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_616', function $$_reduce_616(val, _values, result) { + var self = this; + + + result = self.builder.$gvar(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_617', function $$_reduce_617(val, _values, result) { + var self = this; + + + result = self.builder.$const(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_618', function $$_reduce_618(val, _values, result) { + var self = this; + + + result = self.builder.$cvar(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_619', function $$_reduce_619(val, _values, result) { + var self = this; + + + result = self.builder.$nil(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_620', function $$_reduce_620(val, _values, result) { + var self = this; + + + result = self.builder.$self(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_621', function $$_reduce_621(val, _values, result) { + var self = this; + + + result = self.builder.$true(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_622', function $$_reduce_622(val, _values, result) { + var self = this; + + + result = self.builder.$false(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_623', function $$_reduce_623(val, _values, result) { + var self = this; + + + result = self.builder.$__FILE__(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_624', function $$_reduce_624(val, _values, result) { + var self = this; + + + result = self.builder.$__LINE__(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_625', function $$_reduce_625(val, _values, result) { + var self = this; + + + result = self.builder.$__ENCODING__(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_626', function $$_reduce_626(val, _values, result) { + var self = this; + + + result = self.builder.$accessible(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_627', function $$_reduce_627(val, _values, result) { + var self = this; + + + result = self.builder.$accessible(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_628', function $$_reduce_628(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_629', function $$_reduce_629(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_630', function $$_reduce_630(val, _values, result) { + var self = this; + + + result = self.builder.$nth_ref(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_631', function $$_reduce_631(val, _values, result) { + var self = this; + + + result = self.builder.$back_ref(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_632', function $$_reduce_632(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_value"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_633', function $$_reduce_633(val, _values, result) { + + + result = [val['$[]'](0), val['$[]'](2)]; + return result; + }, 3); + + $def(self, '$_reduce_634', function $$_reduce_634(val, _values, result) { + + + result = nil; + return result; + }, 3); + + $def(self, '$_reduce_636', function $$_reduce_636(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$args(nil, [], nil); + return result; + }, 3); + + $def(self, '$_reduce_637', function $$_reduce_637(val, _values, result) { + var self = this, $writer = nil; + + + result = self.builder.$args(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + + $writer = ["expr_value"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_639', function $$_reduce_639(val, _values, result) { + var self = this, $writer = nil; + + + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_640', function $$_reduce_640(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [val['$[]'](0).$in_kwarg()]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$args(nil, val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_641', function $$_reduce_641(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_642', function $$_reduce_642(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_643', function $$_reduce_643(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_644', function $$_reduce_644(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_645', function $$_reduce_645(val, _values, result) { + var self = this; + + + self.static_env.$declare_forward_args(); + result = [self.builder.$forward_arg(val['$[]'](0))]; + return result; + }, 3); + + $def(self, '$_reduce_646', function $$_reduce_646(val, _values, result) { + + + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_647', function $$_reduce_647(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_648', function $$_reduce_648(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_649', function $$_reduce_649(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](6)).$concat(val['$[]'](7)); + return result; + }, 3); + + $def(self, '$_reduce_650', function $$_reduce_650(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_651', function $$_reduce_651(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_652', function $$_reduce_652(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_653', function $$_reduce_653(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_654', function $$_reduce_654(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_655', function $$_reduce_655(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_656', function $$_reduce_656(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_657', function $$_reduce_657(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_658', function $$_reduce_658(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_659', function $$_reduce_659(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_660', function $$_reduce_660(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_661', function $$_reduce_661(val, _values, result) { + + + result = val['$[]'](0); + return result; + }, 3); + + $def(self, '$_reduce_662', function $$_reduce_662(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_663', function $$_reduce_663(val, _values, result) { + + + result = val['$[]'](0); + return result; + }, 3); + + $def(self, '$_reduce_664', function $$_reduce_664(val, _values, result) { + var self = this; + + + self.$diagnostic("error", "argument_const", nil, val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_665', function $$_reduce_665(val, _values, result) { + var self = this; + + + self.$diagnostic("error", "argument_ivar", nil, val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_666', function $$_reduce_666(val, _values, result) { + var self = this; + + + self.$diagnostic("error", "argument_gvar", nil, val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_667', function $$_reduce_667(val, _values, result) { + var self = this; + + + self.$diagnostic("error", "argument_cvar", nil, val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_669', function $$_reduce_669(val, _values, result) { + var self = this; + + + self.static_env.$declare(val['$[]'](0)['$[]'](0)); + self.max_numparam_stack['$has_ordinary_params!'](); + result = val['$[]'](0); + return result; + }, 3); + + $def(self, '$_reduce_670', function $$_reduce_670(val, _values, result) { + var self = this; + + + self.current_arg_stack.$set(val['$[]'](0)['$[]'](0)); + result = val['$[]'](0); + return result; + }, 3); + + $def(self, '$_reduce_671', function $$_reduce_671(val, _values, result) { + var self = this; + + + self.current_arg_stack.$set(0); + result = self.builder.$arg(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_672', function $$_reduce_672(val, _values, result) { + var self = this; + + + result = self.builder.$multi_lhs(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_673', function $$_reduce_673(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_674', function $$_reduce_674(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_675', function $$_reduce_675(val, _values, result) { + var self = this, $writer = nil; + + + self.$check_kwarg_name(val['$[]'](0)); + self.static_env.$declare(val['$[]'](0)['$[]'](0)); + self.max_numparam_stack['$has_ordinary_params!'](); + self.current_arg_stack.$set(val['$[]'](0)['$[]'](0)); + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = val['$[]'](0); + return result; + }, 3); + + $def(self, '$_reduce_676', function $$_reduce_676(val, _values, result) { + var self = this, $writer = nil; + + + self.current_arg_stack.$set(nil); + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$kwoptarg(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_677', function $$_reduce_677(val, _values, result) { + var self = this, $writer = nil; + + + self.current_arg_stack.$set(nil); + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$kwarg(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_678', function $$_reduce_678(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$kwoptarg(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_679', function $$_reduce_679(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$kwarg(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_680', function $$_reduce_680(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_681', function $$_reduce_681(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_682', function $$_reduce_682(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_683', function $$_reduce_683(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_686', function $$_reduce_686(val, _values, result) { + var self = this; + + + result = [self.builder.$kwnilarg(val['$[]'](0), val['$[]'](1))]; + return result; + }, 3); + + $def(self, '$_reduce_687', function $$_reduce_687(val, _values, result) { + var self = this; + + + self.static_env.$declare(val['$[]'](1)['$[]'](0)); + result = [self.builder.$kwrestarg(val['$[]'](0), val['$[]'](1))]; + return result; + }, 3); + + $def(self, '$_reduce_688', function $$_reduce_688(val, _values, result) { + var self = this; + + + result = [self.builder.$kwrestarg(val['$[]'](0))]; + return result; + }, 3); + + $def(self, '$_reduce_689', function $$_reduce_689(val, _values, result) { + var self = this, $writer = nil; + + + self.current_arg_stack.$set(0); + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$optarg(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_690', function $$_reduce_690(val, _values, result) { + var self = this, $writer = nil; + + + self.current_arg_stack.$set(0); + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$optarg(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_691', function $$_reduce_691(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_692', function $$_reduce_692(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_693', function $$_reduce_693(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_694', function $$_reduce_694(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_697', function $$_reduce_697(val, _values, result) { + var self = this; + + + self.static_env.$declare(val['$[]'](1)['$[]'](0)); + result = [self.builder.$restarg(val['$[]'](0), val['$[]'](1))]; + return result; + }, 3); + + $def(self, '$_reduce_698', function $$_reduce_698(val, _values, result) { + var self = this; + + + result = [self.builder.$restarg(val['$[]'](0))]; + return result; + }, 3); + + $def(self, '$_reduce_701', function $$_reduce_701(val, _values, result) { + var self = this; + + + self.static_env.$declare(val['$[]'](1)['$[]'](0)); + result = self.builder.$blockarg(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_702', function $$_reduce_702(val, _values, result) { + var self = this; + + + self.static_env.$declare_anonymous_blockarg(); + result = self.builder.$blockarg(val['$[]'](0), nil); + return result; + }, 3); + + $def(self, '$_reduce_703', function $$_reduce_703(val, _values, result) { + + + result = [val['$[]'](1)]; + return result; + }, 3); + + $def(self, '$_reduce_704', function $$_reduce_704(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_706', function $$_reduce_706(val, _values, result) { + + + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_707', function $$_reduce_707(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_709', function $$_reduce_709(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_710', function $$_reduce_710(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_711', function $$_reduce_711(val, _values, result) { + var self = this; + + + result = self.builder.$pair(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_712', function $$_reduce_712(val, _values, result) { + var self = this; + + + result = self.builder.$pair_keyword(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_713', function $$_reduce_713(val, _values, result) { + var self = this; + + + result = self.builder.$pair_label(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_714', function $$_reduce_714(val, _values, result) { + var self = this; + + + result = self.builder.$pair_quoted(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_715', function $$_reduce_715(val, _values, result) { + var self = this; + + + result = self.builder.$kwsplat(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_728', function $$_reduce_728(val, _values, result) { + + + result = ["dot", val['$[]'](0)['$[]'](1)]; + return result; + }, 3); + + $def(self, '$_reduce_729', function $$_reduce_729(val, _values, result) { + + + result = ["anddot", val['$[]'](0)['$[]'](1)]; + return result; + }, 3); + + $def(self, '$_reduce_734', function $$_reduce_734(val, _values, result) { + + + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_735', function $$_reduce_735(val, _values, result) { + + + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_736', function $$_reduce_736(val, _values, result) { + + + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_740', function $$_reduce_740(val, _values, result) { + var self = this; + + + self.$yyerrok(); + return result; + }, 3); + + $def(self, '$_reduce_744', function $$_reduce_744(val, _values, result) { + + + result = nil; + return result; + }, 3); + return $def(self, '$_reduce_none', function $$_reduce_none(val, _values, result) { + + return val['$[]'](0) + }, 3); + })($nesting[0], $$$($$('Parser'), 'Base'), $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/ast/builder"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $Opal = Opal.Opal, $hash2 = Opal.hash2, $def = Opal.def; + + Opal.add_stubs('require,emit_lambda=,-,new'); + + self.$require("opal/ast/node"); + self.$require("parser/ruby31"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'AST'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Builder'); + + var $writer = nil; + + + + $writer = [true]; + $send(self, 'emit_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return $def(self, '$n', function $$n(type, children, location) { + + return $$$($$$($Opal, 'AST'), 'Node').$new(type, children, $hash2(["location"], {"location": location})) + }, 3); + })($nesting[0], $$$($$$($$$('Parser'), 'Builders'), 'Default')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $const_set = Opal.const_set, $truthy = Opal.truthy, $Opal = Opal.Opal, $hash2 = Opal.hash2, $defs = Opal.defs, $alias = Opal.alias, $rb_plus = Opal.rb_plus, $eqeqeq = Opal.eqeqeq, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $send2 = Opal.send2, $find_super = Opal.find_super; + + Opal.add_stubs('require,new,current_node,loc,+,stmts_of,begin_with_stmts,nil?,include?,type,children,===,length,[],s,attr_accessor,current_node=,-,location=,raise'); + + self.$require("parser"); + self.$require("opal/ast/node"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Base'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'DummyLocation'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$node=', function $DummyLocation_node$eq$1($a) { + var $post_args, $rest_arg; + + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return nil; + }, -1); + + $def(self, '$expression', function $$expression() { + var self = this; + + return self + }, 0); + + $def(self, '$begin_pos', function $$begin_pos() { + + return 0 + }, 0); + + $def(self, '$end_pos', function $$end_pos() { + + return 0 + }, 0); + + $def(self, '$source', function $$source() { + + return "" + }, 0); + + $def(self, '$line', function $$line() { + + return 0 + }, 0); + + $def(self, '$column', function $$column() { + + return 0 + }, 0); + return $def(self, '$last_line', function $$last_line() { + + return $$$($$('Float'), 'INFINITY') + }, 0); + })($nesting[0], null, $nesting); + $const_set($nesting[0], 'DUMMY_LOCATION', $$('DummyLocation').$new()); + + $def(self, '$s', function $$s(type, $a) { + var $post_args, children, self = this, loc = nil; + + + + $post_args = Opal.slice.call(arguments, 1); + + children = $post_args;; + loc = ($truthy(self.$current_node()) ? (self.$current_node().$loc()) : ($$('DUMMY_LOCATION'))); + return $$$($$$($Opal, 'AST'), 'Node').$new(type, children, $hash2(["location"], {"location": loc})); + }, -2); + $defs(self, '$s', function $$s(type, $a) { + var $post_args, children; + + + + $post_args = Opal.slice.call(arguments, 1); + + children = $post_args;; + return $$$($$$($Opal, 'AST'), 'Node').$new(type, children, $hash2(["location"], {"location": $$('DUMMY_LOCATION')})); + }, -2); + $alias(self, "on_iter", "process_regular_node"); + $alias(self, "on_top", "process_regular_node"); + $alias(self, "on_zsuper", "process_regular_node"); + $alias(self, "on_jscall", "on_send"); + $alias(self, "on_jsattr", "process_regular_node"); + $alias(self, "on_jsattrasgn", "process_regular_node"); + $alias(self, "on_kwsplat", "process_regular_node"); + + $def(self, '$prepend_to_body', function $$prepend_to_body(body, node) { + var self = this, stmts = nil; + + + stmts = $rb_plus(self.$stmts_of(node), self.$stmts_of(body)); + return self.$begin_with_stmts(stmts); + }, 2); + + $def(self, '$append_to_body', function $$append_to_body(body, node) { + var self = this, stmts = nil; + + + stmts = $rb_plus(self.$stmts_of(body), self.$stmts_of(node)); + return self.$begin_with_stmts(stmts); + }, 2); + + $def(self, '$stmts_of', function $$stmts_of(node) { + + if ($truthy(node['$nil?']())) { + return [] + } else if ($truthy(["begin", "kwbegin"]['$include?'](node.$type()))) { + return node.$children() + } else { + return [node] + } + }, 1); + + $def(self, '$begin_with_stmts', function $$begin_with_stmts(stmts) { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq(0, ($ret_or_1 = stmts.$length()))) { + return nil + } else if ($eqeqeq(1, $ret_or_1)) { + return stmts['$[]'](0) + } else { + return $send(self, 's', ["begin"].concat($to_a(stmts))) + } + }, 1); + self.$attr_accessor("current_node"); + + $def(self, '$process', function $$process(node) { + var $yield = $$process.$$p || nil, self = this, $writer = nil; + + delete $$process.$$p; + return (function() { try { + + + $writer = [node]; + $send(self, 'current_node=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return $send2(self, $find_super(self, 'process', $$process, false, true), 'process', [node], $yield); + } finally { + (($writer = [nil]), $send(self, 'current_node=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)]) + }; })() + }, 1); + return $def(self, '$error', function $$error(msg) { + var self = this, error = nil, $writer = nil; + + + error = $$$($Opal, 'RewritingError').$new(msg); + if ($truthy(self.$current_node())) { + + $writer = [self.$current_node().$loc()]; + $send(error, 'location=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return self.$raise(error); + }, 1); + })($nesting[0], $$$($$$($$$('Parser'), 'AST'), 'Processor'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/opal_engine_check"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_a = Opal.to_a, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $const_set = Opal.const_set; + + Opal.add_stubs('require,children,skip_check_present?,process,s,skip_check_present_not?,=='); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'OpalEngineCheck'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$on_if', function $$on_if(node) { + var $a, $yield = $$on_if.$$p || nil, self = this, test = nil, true_body = nil, false_body = nil, $ret_or_1 = nil; + + delete $$on_if.$$p; + + $a = [].concat($to_a(node.$children())), (test = ($a[0] == null ? nil : $a[0])), (true_body = ($a[1] == null ? nil : $a[1])), (false_body = ($a[2] == null ? nil : $a[2])), $a; + if ($truthy(self['$skip_check_present?'](test))) { + return self.$process(($truthy(($ret_or_1 = true_body)) ? ($ret_or_1) : (self.$s("nil")))) + } else if ($truthy(self['$skip_check_present_not?'](test))) { + return self.$process(($truthy(($ret_or_1 = false_body)) ? ($ret_or_1) : (self.$s("nil")))) + } else { + return $send2(self, $find_super(self, 'on_if', $$on_if, false, true), 'on_if', [node], $yield) + }; + }, 1); + + $def(self, '$skip_check_present?', function $OpalEngineCheck_skip_check_present$ques$1(test) { + var $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = test['$==']($$('RUBY_ENGINE_CHECK'))))) { + return $ret_or_1 + } else { + return test['$==']($$('RUBY_PLATFORM_CHECK')) + } + }, 1); + + $def(self, '$skip_check_present_not?', function $OpalEngineCheck_skip_check_present_not$ques$2(test) { + var $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = test['$==']($$('RUBY_ENGINE_CHECK_NOT'))))) { + return $ret_or_1 + } else { + return test['$==']($$('RUBY_PLATFORM_CHECK_NOT')) + } + }, 1); + $const_set($nesting[0], 'RUBY_ENGINE_CHECK', self.$s("send", self.$s("const", nil, "RUBY_ENGINE"), "==", self.$s("str", "opal"))); + $const_set($nesting[0], 'RUBY_ENGINE_CHECK_NOT', self.$s("send", self.$s("const", nil, "RUBY_ENGINE"), "!=", self.$s("str", "opal"))); + $const_set($nesting[0], 'RUBY_PLATFORM_CHECK', self.$s("send", self.$s("const", nil, "RUBY_PLATFORM"), "==", self.$s("str", "opal"))); + return $const_set($nesting[0], 'RUBY_PLATFORM_CHECK_NOT', self.$s("send", self.$s("const", nil, "RUBY_PLATFORM"), "!=", self.$s("str", "opal"))); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/for_rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $defs = Opal.defs, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $to_a = Opal.to_a, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super; + + Opal.add_stubs('require,+,find,map,s,next_tmp,class,===,type,updated,<<,prepend_to_body,process,attr_reader,new,to_a,result'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ForRewriter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs(self, '$reset_tmp_counter!', function $ForRewriter_reset_tmp_counter$excl$1() { + var self = this; + + return (self.counter = 0) + }, 0); + $defs(self, '$next_tmp', function $$next_tmp() { + var self = this, $ret_or_1 = nil; + if (self.counter == null) self.counter = nil; + + + self.counter = ($truthy(($ret_or_1 = self.counter)) ? ($ret_or_1) : (0)); + self.counter = $rb_plus(self.counter, 1); + return "$for_tmp" + (self.counter); + }, 0); + + $def(self, '$on_for', function $$on_for(node) { + var $a, self = this, loop_variable = nil, iterating_value = nil, loop_body = nil, iterating_lvars = nil, lvars_declared_in_body = nil, outer_assigns = nil, tmp_loop_variable = nil, get_tmp_loop_variable = nil, loop_variable_assignment = nil, $ret_or_1 = nil; + + + $a = [].concat($to_a(node)), (loop_variable = ($a[0] == null ? nil : $a[0])), (iterating_value = ($a[1] == null ? nil : $a[1])), (loop_body = ($a[2] == null ? nil : $a[2])), $a; + iterating_lvars = $$('LocalVariableAssigns').$find(loop_variable); + lvars_declared_in_body = $$('LocalVariableAssigns').$find(loop_body); + outer_assigns = $send($rb_plus(iterating_lvars, lvars_declared_in_body), 'map', [], function $$2(lvar_name){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (lvar_name == null) lvar_name = nil;; + return self.$s("lvdeclare", lvar_name);}, {$$arity: 1, $$s: self}); + tmp_loop_variable = self.$class().$next_tmp(); + get_tmp_loop_variable = self.$s("js_tmp", tmp_loop_variable); + loop_variable_assignment = ($eqeqeq("mlhs", ($ret_or_1 = loop_variable.$type())) ? (loop_variable.$updated("masgn", [loop_variable, get_tmp_loop_variable])) : (loop_variable['$<<'](get_tmp_loop_variable))); + loop_body = self.$prepend_to_body(loop_body, loop_variable_assignment); + node = node.$updated("send", [iterating_value, "each", node.$updated("iter", [self.$s("args", self.$s("arg", tmp_loop_variable)), self.$process(loop_body)])]); + return node.$updated("begin", [].concat($to_a(outer_assigns)).concat([node])); + }, 1); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'LocalVariableAssigns'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$attr_reader("result"); + $defs(self, '$find', function $$find(node) { + var self = this, processor = nil; + + + processor = self.$new(); + processor.$process(node); + return processor.$result().$to_a(); + }, 1); + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return (self.result = $$('Set').$new()) + }, 0); + return $def(self, '$on_lvasgn', function $$on_lvasgn(node) { + var $a, $yield = $$on_lvasgn.$$p || nil, self = this, name = nil, _ = nil; + + delete $$on_lvasgn.$$p; + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; + self.$result()['$<<'](name); + return $send2(self, $find_super(self, 'on_lvasgn', $$on_lvasgn, false, true), 'on_lvasgn', [node], $yield); + }, 1); + })($nesting[0], $$('Base'), $nesting); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/explicit_writer_return"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $const_set = Opal.const_set, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $slice = Opal.slice, $eqeq = Opal.eqeq, $regexp = Opal.regexp, $send = Opal.send; + + Opal.add_stubs('require,s,==,to_s,=~,process_all,updated'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ExplicitWriterReturn'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.in_masgn = nil; + + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return (self.in_masgn = false) + }, 0); + $const_set($nesting[0], 'TMP_NAME', "$writer"); + $const_set($nesting[0], 'GET_ARGS_NODE', self.$s("lvar", $$('TMP_NAME'))); + $const_set($nesting[0], 'RETURN_ARGS_NODE', self.$s("jsattr", $$('GET_ARGS_NODE'), self.$s("send", self.$s("jsattr", $$('GET_ARGS_NODE'), self.$s("str", "length")), "-", self.$s("int", 1)))); + + $def(self, '$on_send', function $$on_send(node) { + var $a, $yield = $$on_send.$$p || nil, self = this, recv = nil, method_name = nil, args = nil, set_args_node = nil; + + delete $$on_send.$$p; + + if ($truthy(self.in_masgn)) { + return $send2(self, $find_super(self, 'on_send', $$on_send, false, true), 'on_send', [node], $yield) + }; + $a = [].concat($to_a(node)), (recv = ($a[0] == null ? nil : $a[0])), (method_name = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $a; + if (($truthy(method_name.$to_s()['$=~']($regexp([$$('REGEXP_START'), "\\w+=", $$('REGEXP_END')]))) || ($eqeq(method_name.$to_s(), "[]=")))) { + + set_args_node = self.$s("lvasgn", $$('TMP_NAME'), $send(self, 's', ["array"].concat($to_a(self.$process_all(args))))); + return self.$s("begin", set_args_node, node.$updated(nil, [recv, method_name, self.$s("splat", $$('GET_ARGS_NODE'))]), $$('RETURN_ARGS_NODE')); + } else { + return $send2(self, $find_super(self, 'on_send', $$on_send, false, true), 'on_send', [node], $yield) + }; + }, 1); + return $def(self, '$on_masgn', function $$on_masgn(node) { + var $yield = $$on_masgn.$$p || nil, self = this, result = nil; + + delete $$on_masgn.$$p; + + self.in_masgn = true; + result = $send2(self, $find_super(self, 'on_masgn', $$on_masgn, false, true), 'on_masgn', [node], $yield); + self.in_masgn = false; + return result; + }, 1); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/js_reserved_words"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $regexp = Opal.regexp, $truthy = Opal.truthy, $defs = Opal.defs, $def = Opal.def, $range = Opal.range, $to_a = Opal.to_a, $send2 = Opal.send2, $find_super = Opal.find_super, $hash2 = Opal.hash2, $alias = Opal.alias; + + Opal.add_stubs('require,freeze,=~,!,valid_name?,class,to_sym,valid_ivar_name?,[],to_s,updated,fix_var_name,fix_ivar_name'); + + self.$require("opal/rewriters/base"); + self.$require("opal/regexp_anchors"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'JsReservedWords'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $const_set($nesting[0], 'ES51_RESERVED_WORD', $regexp([$$('REGEXP_START'), "(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)", $$('REGEXP_END')]).$freeze()); + $const_set($nesting[0], 'ES3_RESERVED_WORD_EXCLUSIVE', $regexp([$$('REGEXP_START'), "(?:int|byte|char|goto|long|final|float|short|double|native|throws|boolean|abstract|volatile|transient|synchronized)", $$('REGEXP_END')]).$freeze()); + $const_set($nesting[0], 'PROTO_SPECIAL_PROPS', $regexp([$$('REGEXP_START'), "(?:constructor|displayName|__proto__|__parent__|__noSuchMethod__|__count__)", $$('REGEXP_END')]).$freeze()); + $const_set($nesting[0], 'PROTO_SPECIAL_METHODS', $regexp([$$('REGEXP_START'), "(?:hasOwnProperty|valueOf)", $$('REGEXP_END')]).$freeze()); + $const_set($nesting[0], 'IMMUTABLE_PROPS', $regexp([$$('REGEXP_START'), "(?:NaN|Infinity|undefined)", $$('REGEXP_END')]).$freeze()); + $const_set($nesting[0], 'BASIC_IDENTIFIER_RULES', $regexp([$$('REGEXP_START'), "[$_a-z][$_a-z\\d]*", $$('REGEXP_END')], 'i').$freeze()); + $const_set($nesting[0], 'RESERVED_FUNCTION_NAMES', $regexp([$$('REGEXP_START'), "(?:Array)", $$('REGEXP_END')]).$freeze()); + $defs(self, '$valid_name?', function $JsReservedWords_valid_name$ques$1(name) { + var $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + if ($truthy(($ret_or_1 = $$('BASIC_IDENTIFIER_RULES')['$=~'](name)))) { + return ($truthy(($ret_or_2 = ($truthy(($ret_or_3 = $$('ES51_RESERVED_WORD')['$=~'](name))) ? ($ret_or_3) : ($$('ES3_RESERVED_WORD_EXCLUSIVE')['$=~'](name))))) ? ($ret_or_2) : ($$('IMMUTABLE_PROPS')['$=~'](name)))['$!']() + } else { + return $ret_or_1 + } + }, 1); + $defs(self, '$valid_ivar_name?', function $JsReservedWords_valid_ivar_name$ques$2(name) { + var $ret_or_1 = nil; + + return ($truthy(($ret_or_1 = $$('PROTO_SPECIAL_PROPS')['$=~'](name))) ? ($ret_or_1) : ($$('PROTO_SPECIAL_METHODS')['$=~'](name)))['$!']() + }, 1); + + $def(self, '$fix_var_name', function $$fix_var_name(name) { + var self = this; + + if ($truthy(self.$class()['$valid_name?'](name))) { + return name + } else { + return (("" + (name)) + "$").$to_sym() + } + }, 1); + + $def(self, '$fix_ivar_name', function $$fix_ivar_name(name) { + var self = this; + + if ($truthy(self.$class()['$valid_ivar_name?'](name.$to_s()['$[]']($range(1, -1, false))))) { + return name + } else { + return (("" + (name)) + "$").$to_sym() + } + }, 1); + + $def(self, '$on_lvar', function $$on_lvar(node) { + var $a, $yield = $$on_lvar.$$p || nil, self = this, name = nil, _ = nil; + + delete $$on_lvar.$$p; + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; + node = node.$updated(nil, [self.$fix_var_name(name)]); + return $send2(self, $find_super(self, 'on_lvar', $$on_lvar, false, true), 'on_lvar', [node], null); + }, 1); + + $def(self, '$on_lvasgn', function $$on_lvasgn(node) { + var $a, $yield = $$on_lvasgn.$$p || nil, self = this, name = nil, value = nil; + + delete $$on_lvasgn.$$p; + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (value = ($a[1] == null ? nil : $a[1])), $a; + node = ($truthy(value) ? (node.$updated(nil, [self.$fix_var_name(name), value])) : (node.$updated(nil, [self.$fix_var_name(name)]))); + return $send2(self, $find_super(self, 'on_lvasgn', $$on_lvasgn, false, true), 'on_lvasgn', [node], null); + }, 1); + + $def(self, '$on_ivar', function $$on_ivar(node) { + var $a, $yield = $$on_ivar.$$p || nil, self = this, name = nil, _ = nil; + + delete $$on_ivar.$$p; + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; + node = node.$updated(nil, [self.$fix_ivar_name(name)]); + return $send2(self, $find_super(self, 'on_ivar', $$on_ivar, false, true), 'on_ivar', [node], null); + }, 1); + + $def(self, '$on_ivasgn', function $$on_ivasgn(node) { + var $a, $yield = $$on_ivasgn.$$p || nil, self = this, name = nil, value = nil; + + delete $$on_ivasgn.$$p; + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (value = ($a[1] == null ? nil : $a[1])), $a; + node = ($truthy(value) ? (node.$updated(nil, [self.$fix_ivar_name(name), value])) : (node.$updated(nil, [self.$fix_ivar_name(name)]))); + return $send2(self, $find_super(self, 'on_ivasgn', $$on_ivasgn, false, true), 'on_ivasgn', [node], null); + }, 1); + + $def(self, '$on_restarg', function $$on_restarg(node) { + var $a, self = this, name = nil, _ = nil; + + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; + if ($truthy(name)) { + node = node.$updated(nil, [self.$fix_var_name(name)], $hash2(["meta"], {"meta": $hash2(["arg_name"], {"arg_name": name})})) + }; + return node; + }, 1); + $alias(self, "on_kwrestarg", "on_restarg"); + return $def(self, '$on_argument', function $$on_argument(node) { + var $a, $yield = $$on_argument.$$p || nil, self = this, name = nil, value = nil, fixed_name = nil, new_children = nil; + + delete $$on_argument.$$p; + + node = $send2(self, $find_super(self, 'on_argument', $$on_argument, false, true), 'on_argument', [node], null); + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (value = ($a[1] == null ? nil : $a[1])), $a; + fixed_name = self.$fix_var_name(name); + new_children = ($truthy(value) ? ([fixed_name, value]) : ([fixed_name])); + return node.$updated(nil, new_children, $hash2(["meta"], {"meta": $hash2(["arg_name"], {"arg_name": name})})); + }, 1); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/block_to_iter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_a = Opal.to_a, $rb_plus = Opal.rb_plus, $def = Opal.def; + + Opal.add_stubs('require,s,process,updated,+,children'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'BlockToIter'); + + + return $def(self, '$on_block', function $$on_block(node) { + var $a, self = this, recvr = nil, args = nil, body = nil, iter_node = nil; + + + $a = [].concat($to_a(node)), (recvr = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), $a; + iter_node = self.$s("iter", args, body); + return self.$process(recvr.$updated(nil, $rb_plus(recvr.$children(), [iter_node]))); + }, 1) + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/dot_js_syntax"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_a = Opal.to_a, $slice = Opal.slice, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $neqeq = Opal.neqeq, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $send = Opal.send; + + Opal.add_stubs('require,==,type,===,!=,size,error,first,to_js_attr_call,to_js_attr_assign_call,to_native_js_call,s'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'DotJsSyntax'); + + + + + $def(self, '$on_send', function $$on_send(node) { + var $a, $yield = $$on_send.$$p || nil, self = this, recv = nil, meth = nil, args = nil, recv_of_recv = nil, meth_of_recv = nil, _ = nil, $ret_or_1 = nil, property = nil, value = nil; + + delete $$on_send.$$p; + + $a = [].concat($to_a(node)), (recv = ($a[0] == null ? nil : $a[0])), (meth = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $a; + if (($truthy(recv) && ($eqeq(recv.$type(), "send")))) { + + $a = [].concat($to_a(recv)), (recv_of_recv = ($a[0] == null ? nil : $a[0])), (meth_of_recv = ($a[1] == null ? nil : $a[1])), (_ = ($a[2] == null ? nil : $a[2])), $a; + if ($eqeq(meth_of_recv, "JS")) { + + if ($eqeqeq("[]", ($ret_or_1 = meth))) { + + if ($neqeq(args.$size(), 1)) { + self.$error(".JS[:property] syntax supports only one argument") + }; + property = args.$first(); + node = self.$to_js_attr_call(recv_of_recv, property); + } else if ($eqeqeq("[]=", $ret_or_1)) { + + if ($neqeq(args.$size(), 2)) { + self.$error(".JS[:property]= syntax supports only two arguments") + }; + $a = [].concat($to_a(args)), (property = ($a[0] == null ? nil : $a[0])), (value = ($a[1] == null ? nil : $a[1])), $a; + node = self.$to_js_attr_assign_call(recv_of_recv, property, value); + } else { + node = self.$to_native_js_call(recv_of_recv, meth, args) + }; + return $send2(self, $find_super(self, 'on_send', $$on_send, false, true), 'on_send', [node], null); + } else { + return $send2(self, $find_super(self, 'on_send', $$on_send, false, true), 'on_send', [node], $yield) + }; + } else { + return $send2(self, $find_super(self, 'on_send', $$on_send, false, true), 'on_send', [node], $yield) + }; + }, 1); + + $def(self, '$to_native_js_call', function $$to_native_js_call(recv, meth, args) { + var self = this; + + return $send(self, 's', ["jscall", recv, meth].concat($to_a(args))) + }, 3); + + $def(self, '$to_js_attr_call', function $$to_js_attr_call(recv, property) { + var self = this; + + return self.$s("jsattr", recv, property) + }, 2); + return $def(self, '$to_js_attr_assign_call', function $$to_js_attr_assign_call(recv, property, value) { + var self = this; + + return self.$s("jsattrasgn", recv, property, value) + }, 3); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/pattern_matching"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $to_a = Opal.to_a, $rb_plus = Opal.rb_plus, $slice = Opal.slice, $truthy = Opal.truthy, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $not = Opal.not, $neqeq = Opal.neqeq, $eqeq = Opal.eqeq, $alias = Opal.alias, $Opal = Opal.Opal; + + Opal.add_stubs('require,s,convert_full_pattern,raise_no_matching_pattern_error,+,process,single_case_match,private,shift,===,type,!,empty?,!=,==,class,new,run!,variables,pattern,map,<<,array,on_literal,first,children,to_proc,method,each,to_ast,on_array_pattern,compact,[]'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'PatternMatching'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.depth = nil; + + + $def(self, '$initialize', function $$initialize() { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.depth = 0; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [], $yield); + }, 0); + + $def(self, '$on_match_pattern', function $$on_match_pattern(node) { + var $a, self = this, from = nil, pat = nil; + + + $a = [].concat($to_a(node)), (from = ($a[0] == null ? nil : $a[0])), (pat = ($a[1] == null ? nil : $a[1])), $a; + return self.$s("begin", self.$s("lvasgn", "$pmvar", from), self.$s("if", self.$convert_full_pattern(from, pat), nil, self.$raise_no_matching_pattern_error("$pmvar"))); + }, 1); + + $def(self, '$on_match_pattern_p', function $$on_match_pattern_p(node) { + var $a, self = this, from = nil, pat = nil; + + + $a = [].concat($to_a(node)), (from = ($a[0] == null ? nil : $a[0])), (pat = ($a[1] == null ? nil : $a[1])), $a; + return self.$s("if", self.$convert_full_pattern(from, pat), self.$s("true"), self.$s("false")); + }, 1); + + $def(self, '$on_case_match', function $$on_case_match(node) { + var $a, $b, self = this, cmvar = nil, from = nil, cases = nil, els = nil; + + + self.depth = $rb_plus(self.depth, 1); + cmvar = "$cmvar" + (self.depth); + $a = [].concat($to_a(node)), (from = ($a[0] == null ? nil : $a[0])), $b = $a.length - 1, $b = ($b < 1) ? 1 : $b, (cases = $slice.call($a, 1, $b)), (els = ($a[$b] == null ? nil : $a[$b])), $a; + if ($truthy(els)) { + self.$process(els) + } else { + els = self.$raise_no_matching_pattern_error(cmvar) + }; + return self.$s("begin", self.$s("lvasgn", cmvar, from), $send(self, 'single_case_match', [cmvar].concat($to_a(cases)).concat([els]))); + }, 1); + self.$private(); + + $def(self, '$raise_no_matching_pattern_error', function $$raise_no_matching_pattern_error(from) { + var self = this; + + return self.$s("send", nil, "raise", self.$s("const", self.$s("cbase"), "NoMatchingPatternError"), self.$s("lvar", from)) + }, 1); + + $def(self, '$single_case_match', function $$single_case_match(from, $a, $b) { + var $post_args, cases, els, $c, self = this, cas = nil, pat = nil, if_guard = nil, body = nil, guard = nil, $ret_or_1 = nil; + + + + $post_args = Opal.slice.call(arguments, 1); + + cases = $post_args.splice(0, $post_args.length - 1);; + + els = $post_args.shift(); + if (els == null) els = nil;; + cas = cases.$shift(); + $c = [].concat($to_a(cas)), (pat = ($c[0] == null ? nil : $c[0])), (if_guard = ($c[1] == null ? nil : $c[1])), (body = ($c[2] == null ? nil : $c[2])), $c; + pat = self.$convert_full_pattern(from, pat); + if ($truthy(if_guard)) { + + $c = [].concat($to_a(if_guard)), (guard = ($c[0] == null ? nil : $c[0])), $c; + if ($eqeqeq("if_guard", ($ret_or_1 = if_guard.$type()))) { + pat = self.$s("and", pat, guard) + } else if ($eqeqeq("unless_guard", $ret_or_1)) { + pat = self.$s("and", pat, self.$s("send", guard, "!")) + } else { + nil + }; + }; + return self.$s("if", pat, self.$process(body), ($not(cases['$empty?']()) ? ($send(self, 'single_case_match', [from].concat($to_a(cases)).concat([els]))) : ($neqeq(els, self.$s("empty_else")) ? (els) : nil))); + }, -3); + + $def(self, '$convert_full_pattern', function $$convert_full_pattern(from, pat) { + var self = this, converter = nil; + + + if ($eqeq(from.$class(), $$('Symbol'))) { + from = self.$s("lvar", from) + }; + converter = $$('PatternConverter').$new(pat); + converter['$run!'](); + return self.$s("masgn", $send(self, 's', ["mlhs"].concat($to_a(converter.$variables()))), self.$s("send", self.$s("const", self.$s("cbase"), "PatternMatching"), "call", from, converter.$pattern())); + }, 2); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'PatternConverter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.pat = $proto.outpat = $proto.variables = nil; + + + $def(self, '$initialize', function $$initialize(pat) { + var self = this; + + + self.pat = pat; + return (self.variables = []); + }, 1); + + $def(self, '$run!', function $PatternConverter_run$excl$1() { + var self = this; + + return (self.outpat = self.$process(self.pat)) + }, 0); + + $def(self, '$pattern', function $$pattern() { + var self = this; + + return self.outpat + }, 0); + + $def(self, '$variables', function $$variables() { + var self = this; + + return $send(self.variables, 'map', [], function $$2(i){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (i == null) i = nil;; + return self.$s("lvasgn", i);}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$on_match_var', function $$on_match_var(node) { + var $a, self = this, var$ = nil; + + + $a = [].concat($to_a(node)), (var$ = ($a[0] == null ? nil : $a[0])), $a; + self.variables['$<<'](var$); + return self.$s("sym", "var"); + }, 1); + + $def(self, '$on_match_as', function $$on_match_as(node) { + var $a, self = this, pat = nil, save = nil; + + + $a = [].concat($to_a(node)), (pat = ($a[0] == null ? nil : $a[0])), (save = ($a[1] == null ? nil : $a[1])), $a; + self.$process(save); + return self.$array(self.$s("sym", "save"), self.$process(pat)); + }, 1); + + $def(self, '$on_literal', function $$on_literal(node) { + var self = this; + + return self.$array(self.$s("sym", "lit"), node) + }, 1); + $alias(self, "on_int", "on_literal"); + $alias(self, "on_float", "on_literal"); + $alias(self, "on_complex", "on_literal"); + $alias(self, "on_rational", "on_literal"); + $alias(self, "on_array", "on_literal"); + $alias(self, "on_str", "on_literal"); + $alias(self, "on_dstr", "on_literal"); + $alias(self, "on_xstr", "on_literal"); + $alias(self, "on_sym", "on_literal"); + $alias(self, "on_irange", "on_literal"); + $alias(self, "on_erange", "on_literal"); + $alias(self, "on_const", "on_literal"); + $alias(self, "on_regexp", "on_literal"); + $alias(self, "on_lambda", "on_literal"); + $alias(self, "on_begin", "on_literal"); + + $def(self, '$on_pin', function $$on_pin(node) { + var self = this; + + return self.$on_literal(node.$children().$first()) + }, 1); + + $def(self, '$on_match_rest', function $$on_match_rest(node) { + var self = this; + + if ($truthy(node.$children()['$empty?']())) { + return self.$array(self.$s("sym", "rest")) + } else { + return self.$array(self.$s("sym", "rest"), self.$process(node.$children().$first())) + } + }, 1); + + $def(self, '$on_match_alt', function $$on_match_alt(node) { + var self = this; + + return $send(self, 'array', [self.$s("sym", "any")].concat($to_a($send(node.$children(), 'map', [], self.$method("process").$to_proc())))) + }, 1); + + $def(self, '$on_const_pattern', function $$on_const_pattern(node) { + var self = this; + + return $send(self, 'array', [self.$s("sym", "all")].concat($to_a($send(node.$children(), 'map', [], self.$method("process").$to_proc())))) + }, 1); + + $def(self, '$on_array_pattern', function $$on_array_pattern(node, tail) { + var self = this, children = nil, fixed_size = nil, array_size = nil; + + + + if (tail == null) tail = false;; + children = [].concat($to_a(node)); + if ($truthy(tail)) { + children['$<<'](self.$s("match_rest")) + }; + fixed_size = true; + array_size = 0; + children = $send(children, 'each', [], function $$3(i){var $ret_or_1 = nil; + + + + if (i == null) i = nil;; + if ($eqeqeq("match_rest", ($ret_or_1 = i.$type()))) { + return (fixed_size = false) + } else { + return (array_size = $rb_plus(array_size, 1)) + };}, 1); + return self.$array(self.$s("sym", "array"), self.$to_ast(fixed_size), self.$to_ast(array_size), self.$to_ast($send(children, 'map', [], self.$method("process").$to_proc()))); + }, -2); + + $def(self, '$on_array_pattern_with_tail', function $$on_array_pattern_with_tail(node) { + var self = this; + + return self.$on_array_pattern(node, true) + }, 1); + + $def(self, '$on_hash_pattern', function $$on_hash_pattern(node) { + var self = this, children = nil, any_size = nil; + + + children = [].concat($to_a(node)); + any_size = ($truthy(children['$empty?']()) ? (self.$to_ast(false)) : (self.$to_ast(true))); + children = $send(children, 'map', [], function $$4(i){var self = $$4.$$s == null ? this : $$4.$$s, $ret_or_1 = nil; + + + + if (i == null) i = nil;; + if ($eqeqeq("pair", ($ret_or_1 = i.$type()))) { + return self.$array(i.$children()['$[]'](0), self.$process(i.$children()['$[]'](1))) + } else if ($eqeqeq("match_var", $ret_or_1)) { + return self.$array(self.$s("sym", i.$children()['$[]'](0)), self.$process(i)) + } else if ($eqeqeq("match_nil_pattern", $ret_or_1)) { + + any_size = self.$to_ast(false); + return nil; + } else if ($eqeqeq("match_rest", $ret_or_1)) { + + if ($truthy(i.$children().$first())) { + any_size = self.$process(i.$children().$first()) + } else { + any_size = self.$to_ast(true) + }; + return nil; + } else { + return nil + };}, {$$arity: 1, $$s: self}).$compact(); + return self.$array(self.$s("sym", "hash"), any_size, $send(self, 'array', $to_a(children))); + }, 1); + + $def(self, '$on_find_pattern', function $$on_find_pattern(node) { + var self = this, children = nil; + + + children = [].concat($to_a(node)); + children = $send(children, 'map', [], self.$method("process").$to_proc()); + return self.$array(self.$s("sym", "find"), $send(self, 'array', $to_a(children))); + }, 1); + self.$private(); + + $def(self, '$array', function $$array($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return self.$to_ast(args); + }, -1); + return $def(self, '$to_ast', function $$to_ast(val) { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq($$('Array'), ($ret_or_1 = val))) { + return $send(self, 's', ["array"].concat($to_a(val))) + } else if ($eqeqeq($$('Integer'), $ret_or_1)) { + return self.$s("int", val) + } else if ($eqeqeq(true, $ret_or_1)) { + return self.$s("true") + } else if ($eqeqeq(false, $ret_or_1)) { + return self.$s("false") + } else if ($eqeqeq(nil, $ret_or_1)) { + return self.$s("nil") + } else { + return nil + } + }, 1); + })($nesting[0], $$$($$$($Opal, 'Rewriters'), 'Base'), $nesting); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/logical_operator_assignment"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $class_variable_set = Opal.class_variable_set, $defs = Opal.defs, $truthy = Opal.truthy, $class_variable_get = Opal.class_variable_get, $rb_plus = Opal.rb_plus, $const_set = Opal.const_set, $lambda = Opal.lambda, $eqeq = Opal.eqeq, $to_a = Opal.to_a, $slice = Opal.slice, $hash2 = Opal.hash2, $send = Opal.send, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super; + + Opal.add_stubs('require,+,updated,s,==,include?,[],type,new_temp,freeze,call,fetch,error,process'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'LogicalOperatorAssignment'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs(self, '$reset_tmp_counter!', function $LogicalOperatorAssignment_reset_tmp_counter$excl$1() { + + return $class_variable_set($nesting[0], '@@counter', 0) + }, 0); + $defs(self, '$new_temp', function $$new_temp() { + var $a, $ret_or_1 = nil; + + + $class_variable_set($nesting[0], '@@counter', ($truthy((($a = $nesting[0].$$cvars['@@counter'], $a != null) ? 'class variable' : nil)) ? (($truthy(($ret_or_1 = $class_variable_get($nesting[0], '@@counter', false))) ? ($ret_or_1) : (0))) : (0))); + $class_variable_set($nesting[0], '@@counter', $rb_plus($class_variable_get($nesting[0], '@@counter', false), 1)); + return "$logical_op_recvr_tmp_" + ($class_variable_get($nesting[0], '@@counter', false)); + }, 0); + $const_set($nesting[0], 'GET_SET', $lambda(function $LogicalOperatorAssignment$2(get_type, set_type){var self = $LogicalOperatorAssignment$2.$$s == null ? this : $LogicalOperatorAssignment$2.$$s; + + + + if (get_type == null) get_type = nil;; + + if (set_type == null) set_type = nil;; + return $lambda(function $$3(lhs, rhs, root_type){var self = $$3.$$s == null ? this : $$3.$$s, get_node = nil, condition_node = nil, defined_node = nil; + + + + if (lhs == null) lhs = nil;; + + if (rhs == null) rhs = nil;; + + if (root_type == null) root_type = nil;; + get_node = lhs.$updated(get_type); + condition_node = self.$s(root_type, get_node, rhs); + if (($truthy(["const", "cvar"]['$include?'](get_type)) && ($eqeq(root_type, "or")))) { + + defined_node = self.$s("defined?", get_node); + condition_node = self.$s("if", defined_node, self.$s("begin", condition_node), rhs); + }; + return lhs.$updated(set_type, [].concat($to_a(lhs)).concat([condition_node]));}, {$$arity: 3, $$s: self});}, {$$arity: 2, $$s: self})); + $const_set($nesting[0], 'LocalVariableHandler', $$('GET_SET')['$[]']("lvar", "lvasgn")); + $const_set($nesting[0], 'InstanceVariableHandler', $$('GET_SET')['$[]']("ivar", "ivasgn")); + $const_set($nesting[0], 'ConstantHandler', $$('GET_SET')['$[]']("const", "casgn")); + $const_set($nesting[0], 'GlobalVariableHandler', $$('GET_SET')['$[]']("gvar", "gvasgn")); + $const_set($nesting[0], 'ClassVariableHandler', $$('GET_SET')['$[]']("cvar", "cvasgn")); + (function($base, $super) { + var self = $klass($base, $super, 'SendHandler'); + + + return $defs(self, '$call', function $$call(lhs, rhs, root_type) { + var $a, self = this, recvr = nil, reader_method = nil, args = nil, recvr_tmp = nil, cache_recvr = nil, writer_method = nil, call_reader = nil, call_writer = nil, get_or_set = nil; + + + $a = [].concat($to_a(lhs)), (recvr = ($a[0] == null ? nil : $a[0])), (reader_method = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $a; + if (($truthy(recvr) && ($eqeq(recvr.$type(), "send")))) { + + recvr_tmp = self.$new_temp(); + cache_recvr = self.$s("lvasgn", recvr_tmp, recvr); + recvr = self.$s("js_tmp", recvr_tmp); + }; + writer_method = "" + (reader_method) + "="; + call_reader = lhs.$updated("send", [recvr, reader_method].concat($to_a(args))); + call_writer = lhs.$updated("send", [recvr, writer_method].concat($to_a(args)).concat([rhs])); + get_or_set = self.$s(root_type, call_reader, call_writer); + if ($truthy(cache_recvr)) { + return self.$s("begin", cache_recvr, get_or_set) + } else { + return get_or_set + }; + }, 3) + })($nesting[0], self); + (function($base, $super) { + var self = $klass($base, $super, 'ConditionalSendHandler'); + + + return $defs(self, '$call', function $$call(lhs, rhs, root_type) { + var $a, self = this, recvr = nil, meth = nil, args = nil, recvr_tmp = nil, cache_recvr = nil, recvr_is_nil = nil, plain_send = nil, plain_or_asgn = nil; + + + root_type = "" + (root_type) + "_asgn"; + $a = [].concat($to_a(lhs)), (recvr = ($a[0] == null ? nil : $a[0])), (meth = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $a; + recvr_tmp = self.$new_temp(); + cache_recvr = self.$s("lvasgn", recvr_tmp, recvr); + recvr = self.$s("js_tmp", recvr_tmp); + recvr_is_nil = self.$s("send", recvr, "nil?"); + plain_send = lhs.$updated("send", [recvr, meth].concat($to_a(args))); + plain_or_asgn = self.$s(root_type, plain_send, rhs); + return self.$s("begin", cache_recvr, self.$s("if", recvr_is_nil, self.$s("nil"), plain_or_asgn)); + }, 3) + })($nesting[0], self); + $const_set($nesting[0], 'HANDLERS', $hash2(["lvasgn", "ivasgn", "casgn", "gvasgn", "cvasgn", "send", "csend"], {"lvasgn": $$('LocalVariableHandler'), "ivasgn": $$('InstanceVariableHandler'), "casgn": $$('ConstantHandler'), "gvasgn": $$('GlobalVariableHandler'), "cvasgn": $$('ClassVariableHandler'), "send": $$('SendHandler'), "csend": $$('ConditionalSendHandler')}).$freeze()); + + $def(self, '$on_or_asgn', function $$on_or_asgn(node) { + var $a, self = this, lhs = nil, rhs = nil, result = nil; + + + $a = [].concat($to_a(node)), (lhs = ($a[0] == null ? nil : $a[0])), (rhs = ($a[1] == null ? nil : $a[1])), $a; + result = $send($$('HANDLERS'), 'fetch', [lhs.$type()], function $$4(){var self = $$4.$$s == null ? this : $$4.$$s; + + return self.$error("cannot handle LHS type: " + (lhs.$type()))}, {$$arity: 0, $$s: self}).$call(lhs, rhs, "or"); + return self.$process(result); + }, 1); + + $def(self, '$on_and_asgn', function $$on_and_asgn(node) { + var $a, self = this, lhs = nil, rhs = nil, result = nil; + + + $a = [].concat($to_a(node)), (lhs = ($a[0] == null ? nil : $a[0])), (rhs = ($a[1] == null ? nil : $a[1])), $a; + result = $send($$('HANDLERS'), 'fetch', [lhs.$type()], function $$5(){var self = $$5.$$s == null ? this : $$5.$$s; + + return self.$error("cannot handle LHS type: " + (lhs.$type()))}, {$$arity: 0, $$s: self}).$call(lhs, rhs, "and"); + return self.$process(result); + }, 1); + $const_set($nesting[0], 'ASSIGNMENT_STRING_NODE', self.$s("str", "assignment")); + return $def(self, '$on_defined?', function $LogicalOperatorAssignment_on_defined$ques$6(node) { + var $a, $yield = $LogicalOperatorAssignment_on_defined$ques$6.$$p || nil, self = this, inner = nil, _ = nil; + + delete $LogicalOperatorAssignment_on_defined$ques$6.$$p; + + $a = [].concat($to_a(node)), (inner = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; + if ($truthy(["or_asgn", "and_asgn"]['$include?'](inner.$type()))) { + return $$('ASSIGNMENT_STRING_NODE') + } else { + return $send2(self, $find_super(self, 'on_defined?', $LogicalOperatorAssignment_on_defined$ques$6, false, true), 'on_defined?', [node], null) + }; + }, 1); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/binary_operator_assignment"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $class_variable_set = Opal.class_variable_set, $defs = Opal.defs, $truthy = Opal.truthy, $class_variable_get = Opal.class_variable_get, $rb_plus = Opal.rb_plus, $const_set = Opal.const_set, $lambda = Opal.lambda, $to_a = Opal.to_a, $slice = Opal.slice, $eqeq = Opal.eqeq, $hash2 = Opal.hash2, $send = Opal.send, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super; + + Opal.add_stubs('require,+,updated,[],==,type,new_temp,s,freeze,call,fetch,error,process'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'BinaryOperatorAssignment'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs(self, '$reset_tmp_counter!', function $BinaryOperatorAssignment_reset_tmp_counter$excl$1() { + + return $class_variable_set($nesting[0], '@@counter', 0) + }, 0); + $defs(self, '$new_temp', function $$new_temp() { + var $a, $ret_or_1 = nil; + + + $class_variable_set($nesting[0], '@@counter', ($truthy((($a = $nesting[0].$$cvars['@@counter'], $a != null) ? 'class variable' : nil)) ? (($truthy(($ret_or_1 = $class_variable_get($nesting[0], '@@counter', false))) ? ($ret_or_1) : (0))) : (0))); + $class_variable_set($nesting[0], '@@counter', $rb_plus($class_variable_get($nesting[0], '@@counter', false), 1)); + return "$binary_op_recvr_tmp_" + ($class_variable_get($nesting[0], '@@counter', false)); + }, 0); + $const_set($nesting[0], 'GET_SET', $lambda(function $BinaryOperatorAssignment$2(get_type, set_type){ + + + if (get_type == null) get_type = nil;; + + if (set_type == null) set_type = nil;; + return $lambda(function $$3(node, lhs, operation, rhs){var get_node = nil, set_node = nil; + + + + if (node == null) node = nil;; + + if (lhs == null) lhs = nil;; + + if (operation == null) operation = nil;; + + if (rhs == null) rhs = nil;; + get_node = lhs.$updated(get_type); + set_node = node.$updated("send", [get_node, operation, rhs]); + return lhs.$updated(set_type, [].concat($to_a(lhs)).concat([set_node]));}, 4);}, 2)); + $const_set($nesting[0], 'LocalVariableHandler', $$('GET_SET')['$[]']("lvar", "lvasgn")); + $const_set($nesting[0], 'InstanceVariableHandler', $$('GET_SET')['$[]']("ivar", "ivasgn")); + $const_set($nesting[0], 'ConstantHandler', $$('GET_SET')['$[]']("const", "casgn")); + $const_set($nesting[0], 'GlobalVariableHandler', $$('GET_SET')['$[]']("gvar", "gvasgn")); + $const_set($nesting[0], 'ClassVariableHandler', $$('GET_SET')['$[]']("cvar", "cvasgn")); + (function($base, $super) { + var self = $klass($base, $super, 'SendHandler'); + + + return $defs(self, '$call', function $$call(node, lhs, operation, rhs) { + var $a, self = this, recvr = nil, reader_method = nil, args = nil, recvr_tmp = nil, cache_recvr = nil, writer_method = nil, call_reader = nil, call_op = nil, call_writer = nil; + + + $a = [].concat($to_a(lhs)), (recvr = ($a[0] == null ? nil : $a[0])), (reader_method = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $a; + if (($truthy(recvr) && ($eqeq(recvr.$type(), "send")))) { + + recvr_tmp = self.$new_temp(); + cache_recvr = self.$s("lvasgn", recvr_tmp, recvr); + recvr = self.$s("js_tmp", recvr_tmp); + }; + writer_method = "" + (reader_method) + "="; + call_reader = lhs.$updated("send", [recvr, reader_method].concat($to_a(args))); + call_op = node.$updated("send", [call_reader, operation, rhs]); + call_writer = lhs.$updated("send", [recvr, writer_method].concat($to_a(args)).concat([call_op])); + if ($truthy(cache_recvr)) { + return node.$updated("begin", [cache_recvr, call_writer]) + } else { + return call_writer + }; + }, 4) + })($nesting[0], self); + (function($base, $super) { + var self = $klass($base, $super, 'ConditionalSendHandler'); + + + return $defs(self, '$call', function $$call(node, lhs, operation, rhs) { + var $a, self = this, recvr = nil, meth = nil, args = nil, recvr_tmp = nil, cache_recvr = nil, recvr_is_nil = nil, plain_send = nil, plain_op_asgn = nil; + + + $a = [].concat($to_a(lhs)), (recvr = ($a[0] == null ? nil : $a[0])), (meth = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $a; + recvr_tmp = self.$new_temp(); + cache_recvr = self.$s("lvasgn", recvr_tmp, recvr); + recvr = self.$s("js_tmp", recvr_tmp); + recvr_is_nil = self.$s("send", recvr, "nil?"); + plain_send = lhs.$updated("send", [recvr, meth].concat($to_a(args))); + plain_op_asgn = node.$updated("op_asgn", [plain_send, operation, rhs]); + return self.$s("begin", cache_recvr, self.$s("if", recvr_is_nil, self.$s("nil"), plain_op_asgn)); + }, 4) + })($nesting[0], self); + $const_set($nesting[0], 'HANDLERS', $hash2(["lvasgn", "ivasgn", "casgn", "gvasgn", "cvasgn", "send", "csend"], {"lvasgn": $$('LocalVariableHandler'), "ivasgn": $$('InstanceVariableHandler'), "casgn": $$('ConstantHandler'), "gvasgn": $$('GlobalVariableHandler'), "cvasgn": $$('ClassVariableHandler'), "send": $$('SendHandler'), "csend": $$('ConditionalSendHandler')}).$freeze()); + + $def(self, '$on_op_asgn', function $$on_op_asgn(node) { + var $a, self = this, lhs = nil, op = nil, rhs = nil, result = nil; + + + $a = [].concat($to_a(node)), (lhs = ($a[0] == null ? nil : $a[0])), (op = ($a[1] == null ? nil : $a[1])), (rhs = ($a[2] == null ? nil : $a[2])), $a; + result = $send($$('HANDLERS'), 'fetch', [lhs.$type()], function $$4(){var self = $$4.$$s == null ? this : $$4.$$s; + + return self.$error("cannot handle LHS type: " + (lhs.$type()))}, {$$arity: 0, $$s: self}).$call(node, lhs, op, rhs); + return self.$process(result); + }, 1); + $const_set($nesting[0], 'ASSIGNMENT_STRING_NODE', self.$s("str", "assignment")); + return $def(self, '$on_defined?', function $BinaryOperatorAssignment_on_defined$ques$5(node) { + var $a, $yield = $BinaryOperatorAssignment_on_defined$ques$5.$$p || nil, self = this, inner = nil, _ = nil; + + delete $BinaryOperatorAssignment_on_defined$ques$5.$$p; + + $a = [].concat($to_a(node)), (inner = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; + if ($eqeq(inner.$type(), "op_asgn")) { + return $$('ASSIGNMENT_STRING_NODE') + } else { + return $send2(self, $find_super(self, 'on_defined?', $BinaryOperatorAssignment_on_defined$ques$5, false, true), 'on_defined?', [node], null) + }; + }, 1); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/hashes/key_duplicates_rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $Opal = Opal.Opal; + + Opal.add_stubs('require,new,include?,type,<<,==,process_regular_node,updated,inspect,warn'); + + self.$require("opal/rewriters/base"); + self.$require("set"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Hashes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'KeyDuplicatesRewriter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.keys = nil; + + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return (self.keys = $$('UniqKeysSet').$new()) + }, 0); + + $def(self, '$on_hash', function $$on_hash(node) { + var $a, $yield = $$on_hash.$$p || nil, self = this, previous_keys = nil; + + delete $$on_hash.$$p; + return (function() { try { + + $a = [self.keys, $$('UniqKeysSet').$new()], (previous_keys = $a[0]), (self.keys = $a[1]), $a; + return $send2(self, $find_super(self, 'on_hash', $$on_hash, false, true), 'on_hash', [node], null); + } finally { + (self.keys = previous_keys) + }; })() + }, 1); + + $def(self, '$on_pair', function $$on_pair(node) { + var $a, $yield = $$on_pair.$$p || nil, self = this, key = nil, _value = nil; + + delete $$on_pair.$$p; + + $a = [].concat($to_a(node)), (key = ($a[0] == null ? nil : $a[0])), (_value = ($a[1] == null ? nil : $a[1])), $a; + if ($truthy(["str", "sym"]['$include?'](key.$type()))) { + self.keys['$<<'](key) + }; + return $send2(self, $find_super(self, 'on_pair', $$on_pair, false, true), 'on_pair', [node], null); + }, 1); + + $def(self, '$on_kwsplat', function $$on_kwsplat(node) { + var $a, self = this, hash = nil, _ = nil; + + + $a = [].concat($to_a(node)), (hash = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; + if ($eqeq(hash.$type(), "hash")) { + hash = self.$process_regular_node(hash) + }; + return node.$updated(nil, [hash]); + }, 1); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'UniqKeysSet'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.set = nil; + + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return (self.set = $$('Set').$new()) + }, 0); + return $def(self, '$<<', function $UniqKeysSet_$lt$lt$1(element) { + var $a, self = this, key = nil, _ = nil; + + if ($truthy(self.set['$include?'](element))) { + + $a = [].concat($to_a(element)), (key = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; + key = ($eqeq(element.$type(), "str") ? (key.$inspect()) : (":" + (key))); + return $$('Kernel').$warn("warning: key " + (key) + " is duplicated and overwritten"); + } else { + return self.set['$<<'](element) + } + }, 1); + })($nesting[0], null, $nesting); + })($nesting[0], $$$($$$($Opal, 'Rewriters'), 'Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/dump_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $hash2 = Opal.hash2, $def = Opal.def; + + Opal.add_stubs('require,updated'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'DumpArgs'); + + + + + $def(self, '$on_def', function $$on_def(node) { + var $a, $yield = $$on_def.$$p || nil, self = this, _mid = nil, args = nil, _body = nil; + + delete $$on_def.$$p; + + node = $send2(self, $find_super(self, 'on_def', $$on_def, false, true), 'on_def', [node], null); + $a = [].concat($to_a(node)), (_mid = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (_body = ($a[2] == null ? nil : $a[2])), $a; + return node.$updated(nil, nil, $hash2(["meta"], {"meta": $hash2(["original_args"], {"original_args": args})})); + }, 1); + + $def(self, '$on_defs', function $$on_defs(node) { + var $a, $yield = $$on_defs.$$p || nil, self = this, _recv = nil, _mid = nil, args = nil, _body = nil; + + delete $$on_defs.$$p; + + node = $send2(self, $find_super(self, 'on_defs', $$on_defs, false, true), 'on_defs', [node], null); + $a = [].concat($to_a(node)), (_recv = ($a[0] == null ? nil : $a[0])), (_mid = ($a[1] == null ? nil : $a[1])), (args = ($a[2] == null ? nil : $a[2])), (_body = ($a[3] == null ? nil : $a[3])), $a; + return node.$updated(nil, nil, $hash2(["meta"], {"meta": $hash2(["original_args"], {"original_args": args})})); + }, 1); + return $def(self, '$on_iter', function $$on_iter(node) { + var $a, $yield = $$on_iter.$$p || nil, self = this, args = nil, _body = nil; + + delete $$on_iter.$$p; + + node = $send2(self, $find_super(self, 'on_iter', $$on_iter, false, true), 'on_iter', [node], null); + $a = [].concat($to_a(node)), (args = ($a[0] == null ? nil : $a[0])), (_body = ($a[1] == null ? nil : $a[1])), $a; + return node.$updated(nil, nil, $hash2(["meta"], {"meta": $hash2(["original_args"], {"original_args": args})})); + }, 1); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/mlhs_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $truthy = Opal.truthy, $def = Opal.def, $rb_plus = Opal.rb_plus, $send = Opal.send, $eqeq = Opal.eqeq, $hash2 = Opal.hash2; + + Opal.add_stubs('require,new,updated,rewritten,initialization,s,prepend_to_body,attr_reader,split!,+,each,children,==,type,new_mlhs_tmp,process,<<,length,[],empty?'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'MlhsArgs'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$on_def', function $$on_def(node) { + var $a, $yield = $$on_def.$$p || nil, self = this, mid = nil, args = nil, body = nil, arguments$ = nil, $ret_or_1 = nil; + + delete $$on_def.$$p; + + node = $send2(self, $find_super(self, 'on_def', $$on_def, false, true), 'on_def', [node], null); + $a = [].concat($to_a(node)), (mid = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), $a; + arguments$ = $$('Arguments').$new(args); + args = args.$updated(nil, arguments$.$rewritten()); + if ($truthy(arguments$.$initialization())) { + + body = ($truthy(($ret_or_1 = body)) ? ($ret_or_1) : (self.$s("nil"))); + body = self.$prepend_to_body(body, arguments$.$initialization()); + }; + return node.$updated(nil, [mid, args, body]); + }, 1); + + $def(self, '$on_defs', function $$on_defs(node) { + var $a, $yield = $$on_defs.$$p || nil, self = this, recv = nil, mid = nil, args = nil, body = nil, arguments$ = nil, $ret_or_1 = nil; + + delete $$on_defs.$$p; + + node = $send2(self, $find_super(self, 'on_defs', $$on_defs, false, true), 'on_defs', [node], null); + $a = [].concat($to_a(node)), (recv = ($a[0] == null ? nil : $a[0])), (mid = ($a[1] == null ? nil : $a[1])), (args = ($a[2] == null ? nil : $a[2])), (body = ($a[3] == null ? nil : $a[3])), $a; + arguments$ = $$('Arguments').$new(args); + args = args.$updated(nil, arguments$.$rewritten()); + if ($truthy(arguments$.$initialization())) { + + body = ($truthy(($ret_or_1 = body)) ? ($ret_or_1) : (self.$s("nil"))); + body = self.$prepend_to_body(body, arguments$.$initialization()); + }; + return node.$updated(nil, [recv, mid, args, body]); + }, 1); + + $def(self, '$on_iter', function $$on_iter(node) { + var $a, $yield = $$on_iter.$$p || nil, self = this, args = nil, body = nil, arguments$ = nil, $ret_or_1 = nil; + + delete $$on_iter.$$p; + + node = $send2(self, $find_super(self, 'on_iter', $$on_iter, false, true), 'on_iter', [node], null); + $a = [].concat($to_a(node)), (args = ($a[0] == null ? nil : $a[0])), (body = ($a[1] == null ? nil : $a[1])), $a; + arguments$ = $$('Arguments').$new(args); + args = args.$updated(nil, arguments$.$rewritten()); + if ($truthy(arguments$.$initialization())) { + + body = ($truthy(($ret_or_1 = body)) ? ($ret_or_1) : (self.$s("nil"))); + body = self.$prepend_to_body(body, arguments$.$initialization()); + }; + return node.$updated(nil, [args, body]); + }, 1); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Arguments'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.counter = $proto.args = $proto.initialization = nil; + + self.$attr_reader("rewritten", "initialization"); + + $def(self, '$initialize', function $$initialize(args) { + var self = this; + + + self.args = args; + self.rewritten = []; + self.initialization = []; + self.rewriter = $$('MlhsRewriter').$new(); + return self['$split!'](); + }, 1); + + $def(self, '$reset_tmp_counter!', function $Arguments_reset_tmp_counter$excl$1() { + var self = this; + + return (self.counter = 0) + }, 0); + + $def(self, '$new_mlhs_tmp', function $$new_mlhs_tmp() { + var self = this, $ret_or_1 = nil; + + + self.counter = ($truthy(($ret_or_1 = self.counter)) ? ($ret_or_1) : (0)); + self.counter = $rb_plus(self.counter, 1); + return "$mlhs_tmp" + (self.counter); + }, 0); + return $def(self, '$split!', function $Arguments_split$excl$2() { + var self = this; + + + $send(self.args.$children(), 'each', [], function $$3(arg){var self = $$3.$$s == null ? this : $$3.$$s, var_name = nil, rhs = nil, mlhs = nil; + if (self.rewriter == null) self.rewriter = nil; + if (self.initialization == null) self.initialization = nil; + if (self.rewritten == null) self.rewritten = nil; + + + + if (arg == null) arg = nil;; + if ($eqeq(arg.$type(), "mlhs")) { + + var_name = self.$new_mlhs_tmp(); + rhs = self.$s("lvar", var_name); + mlhs = self.rewriter.$process(arg); + self.initialization['$<<'](self.$s("masgn", mlhs, rhs)); + return self.rewritten['$<<'](self.$s("arg", var_name).$updated(nil, nil, $hash2(["meta"], {"meta": $hash2(["arg_name"], {"arg_name": var_name})}))); + } else { + return self.rewritten['$<<'](arg) + };}, {$$arity: 1, $$s: self}); + if ($eqeq(self.initialization.$length(), 1)) { + return (self.initialization = self.initialization['$[]'](0)) + } else if ($truthy(self.initialization['$empty?']())) { + return (self.initialization = nil) + } else { + return (self.initialization = $send(self, 's', ["begin"].concat($to_a(self.initialization)))) + }; + }, 0); + })($nesting[0], $$('Base'), $nesting); + return (function($base, $super) { + var self = $klass($base, $super, 'MlhsRewriter'); + + + + + $def(self, '$on_arg', function $$on_arg(node) { + + return node.$updated("lvasgn") + }, 1); + return $def(self, '$on_restarg', function $$on_restarg(node) { + var self = this, name = nil; + + + name = node.$children()['$[]'](0); + if ($truthy(name)) { + return self.$s("splat", node.$updated("lvasgn")) + } else { + return self.$s("splat") + }; + }, 1); + })($nesting[0], $$('Base')); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/arguments"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $def = Opal.def; + + Opal.add_stubs('attr_reader,each,===,type,<<,any?,raise,!,nil?,has_any_kwargs?,can_inline_kwargs?,empty?'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Arguments'); + + var $proto = self.$$prototype; + + $proto.restarg = $proto.postargs = $proto.kwargs = $proto.kwoptargs = $proto.kwrestarg = $proto.optargs = nil; + + self.$attr_reader("args", "optargs", "restarg", "postargs", "kwargs", "kwoptargs", "kwrestarg", "kwnilarg", "shadowargs", "blockarg"); + + $def(self, '$initialize', function $$initialize(args) { + var self = this; + + + self.args = []; + self.optargs = []; + self.restarg = nil; + self.postargs = []; + self.kwargs = []; + self.kwoptargs = []; + self.kwrestarg = nil; + self.kwnilarg = false; + self.shadowargs = []; + self.blockarg = nil; + return $send(args, 'each', [], function $$1(arg){var self = $$1.$$s == null ? this : $$1.$$s, $ret_or_1 = nil; + if (self.optargs == null) self.optargs = nil; + if (self.restarg == null) self.restarg = nil; + if (self.postargs == null) self.postargs = nil; + if (self.args == null) self.args = nil; + if (self.kwargs == null) self.kwargs = nil; + if (self.kwoptargs == null) self.kwoptargs = nil; + if (self.shadowargs == null) self.shadowargs = nil; + + + + if (arg == null) arg = nil;; + if (($eqeqeq("arg", ($ret_or_1 = arg.$type())) || ($eqeqeq("mlhs", $ret_or_1)))) { + return (($truthy(self.restarg) || ($truthy(self.optargs['$any?']()))) ? (self.postargs) : (self.args))['$<<'](arg) + } else if ($eqeqeq("optarg", $ret_or_1)) { + return self.optargs['$<<'](arg) + } else if ($eqeqeq("restarg", $ret_or_1)) { + return (self.restarg = arg) + } else if ($eqeqeq("kwarg", $ret_or_1)) { + return self.kwargs['$<<'](arg) + } else if ($eqeqeq("kwoptarg", $ret_or_1)) { + return self.kwoptargs['$<<'](arg) + } else if ($eqeqeq("kwnilarg", $ret_or_1)) { + return (self.kwnilarg = true) + } else if ($eqeqeq("kwrestarg", $ret_or_1)) { + return (self.kwrestarg = arg) + } else if ($eqeqeq("shadowarg", $ret_or_1)) { + return self.shadowargs['$<<'](arg) + } else if ($eqeqeq("blockarg", $ret_or_1)) { + return (self.blockarg = arg) + } else { + return self.$raise("Unsupported arg type " + (arg.$type())) + };}, {$$arity: 1, $$s: self}); + }, 1); + + $def(self, '$has_post_args?', function $Arguments_has_post_args$ques$2() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.restarg['$nil?']()['$!']())) ? ($ret_or_2) : (self.postargs['$any?']()))))) { + return $ret_or_1 + } else { + + if ($truthy(($ret_or_2 = self['$has_any_kwargs?']()))) { + return self['$can_inline_kwargs?']()['$!']() + } else { + return $ret_or_2 + }; + } + }, 0); + + $def(self, '$has_any_kwargs?', function $Arguments_has_any_kwargs$ques$3() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.kwargs['$any?']())) ? ($ret_or_2) : (self.kwoptargs['$any?']()))))) { + return $ret_or_1 + } else { + return self.kwrestarg['$nil?']()['$!']() + } + }, 0); + return $def(self, '$can_inline_kwargs?', function $Arguments_can_inline_kwargs$ques$4() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.optargs['$empty?']())) ? (self.restarg['$nil?']()) : ($ret_or_2))))) { + return self.postargs['$empty?']() + } else { + return $ret_or_1 + } + }, 0); + })($nesting[0], null) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["opal/rewriters/inline_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $truthy = Opal.truthy, $hash2 = Opal.hash2, $def = Opal.def, $const_set = Opal.const_set, $send = Opal.send, $eqeq = Opal.eqeq, $Opal = Opal.Opal; + + Opal.add_stubs('require,s,new,updated,inline,prepend_to_body,initialization,attr_reader,freeze,children,each,send,any?,blockarg,<<,shadowargs,args,==,[],has_post_args?,length,has_any_kwargs?,can_inline_kwargs?,kwargs,kwoptargs,kwrestarg,postargs,optargs,args_to_keep,restarg'); + + self.$require("opal/rewriters/base"); + self.$require("opal/rewriters/arguments"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'InlineArgs'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$on_def', function $$on_def(node) { + var $a, $yield = $$on_def.$$p || nil, self = this, mid = nil, args = nil, body = nil, $ret_or_1 = nil, initializer = nil, inline_args = nil; + + delete $$on_def.$$p; + + node = $send2(self, $find_super(self, 'on_def', $$on_def, false, true), 'on_def', [node], null); + $a = [].concat($to_a(node)), (mid = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), $a; + body = ($truthy(($ret_or_1 = body)) ? ($ret_or_1) : (self.$s("nil"))); + initializer = $$('Initializer').$new(args, $hash2(["type"], {"type": "def"})); + inline_args = args.$updated(nil, initializer.$inline()); + body = self.$prepend_to_body(body, initializer.$initialization()); + return node.$updated(nil, [mid, inline_args, body]); + }, 1); + + $def(self, '$on_defs', function $$on_defs(node) { + var $a, $yield = $$on_defs.$$p || nil, self = this, recv = nil, mid = nil, args = nil, body = nil, $ret_or_1 = nil, initializer = nil, inline_args = nil; + + delete $$on_defs.$$p; + + node = $send2(self, $find_super(self, 'on_defs', $$on_defs, false, true), 'on_defs', [node], null); + $a = [].concat($to_a(node)), (recv = ($a[0] == null ? nil : $a[0])), (mid = ($a[1] == null ? nil : $a[1])), (args = ($a[2] == null ? nil : $a[2])), (body = ($a[3] == null ? nil : $a[3])), $a; + body = ($truthy(($ret_or_1 = body)) ? ($ret_or_1) : (self.$s("nil"))); + initializer = $$('Initializer').$new(args, $hash2(["type"], {"type": "defs"})); + inline_args = args.$updated(nil, initializer.$inline()); + body = self.$prepend_to_body(body, initializer.$initialization()); + return node.$updated(nil, [recv, mid, inline_args, body]); + }, 1); + + $def(self, '$on_iter', function $$on_iter(node) { + var $a, $yield = $$on_iter.$$p || nil, self = this, args = nil, body = nil, $ret_or_1 = nil, initializer = nil, inline_args = nil; + + delete $$on_iter.$$p; + + node = $send2(self, $find_super(self, 'on_iter', $$on_iter, false, true), 'on_iter', [node], null); + $a = [].concat($to_a(node)), (args = ($a[0] == null ? nil : $a[0])), (body = ($a[1] == null ? nil : $a[1])), $a; + body = ($truthy(($ret_or_1 = body)) ? ($ret_or_1) : (self.$s("nil"))); + initializer = $$('Initializer').$new(args, $hash2(["type"], {"type": "iter"})); + inline_args = args.$updated(nil, initializer.$inline()); + body = self.$prepend_to_body(body, initializer.$initialization()); + return node.$updated(nil, [inline_args, body]); + }, 1); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Initializer'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.initialization = $proto.args = $proto.inline = nil; + + self.$attr_reader("inline", "initialization"); + $const_set($nesting[0], 'STEPS', ["extract_blockarg", "initialize_shadowargs", "extract_args", "prepare_post_args", "prepare_kwargs", "extract_optargs", "extract_restarg", "extract_post_args", "extract_kwargs", "extract_kwoptargs", "extract_kwrestarg"].$freeze()); + + $def(self, '$initialize', function $$initialize(args, $kwargs) { + var type, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if (!Opal.hasOwnProperty.call($kwargs.$$smap, 'type')) { + throw Opal.ArgumentError.$new('missing keyword: type'); + } + type = $kwargs.$$smap["type"];; + self.args = $$('Arguments').$new(args.$children()); + self.inline = []; + self.initialization = []; + self.type = type; + self.underscore_found = false; + $send($$('STEPS'), 'each', [], function $$1(step){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (step == null) step = nil;; + return self.$send(step);}, {$$arity: 1, $$s: self}); + if ($truthy(self.initialization['$any?']())) { + return (self.initialization = $send(self, 's', ["begin"].concat($to_a(self.initialization)))) + } else { + return (self.initialization = nil) + }; + }, 2); + + $def(self, '$extract_blockarg', function $$extract_blockarg() { + var self = this, arg = nil; + + if ($truthy((arg = self.args.$blockarg()))) { + return self.initialization['$<<'](arg.$updated("extract_blockarg")) + } else { + return nil + } + }, 0); + + $def(self, '$initialize_shadowargs', function $$initialize_shadowargs() { + var self = this; + + return $send(self.args.$shadowargs(), 'each', [], function $$2(arg){var self = $$2.$$s == null ? this : $$2.$$s; + if (self.initialization == null) self.initialization = nil; + + + + if (arg == null) arg = nil;; + return self.initialization['$<<'](arg.$updated("initialize_shadowarg"));}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$extract_args', function $$extract_args() { + var self = this; + + return $send(self.args.$args(), 'each', [], function $$3(arg){var self = $$3.$$s == null ? this : $$3.$$s; + if (self.type == null) self.type = nil; + if (self.initialization == null) self.initialization = nil; + if (self.underscore_found == null) self.underscore_found = nil; + if (self.inline == null) self.inline = nil; + + + + if (arg == null) arg = nil;; + if ($eqeq(self.type, "iter")) { + + self.initialization['$<<'](arg.$updated("initialize_iter_arg")); + if ($eqeq(arg.$children()['$[]'](0), "_")) { + + if ($truthy(self.underscore_found)) { + arg = self.$s("fake_arg") + }; + self.underscore_found = true; + }; + }; + return self.inline['$<<'](arg);}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$prepare_post_args', function $$prepare_post_args() { + var self = this; + + if ($truthy(self.args['$has_post_args?']())) { + return self.initialization['$<<'](self.$s("prepare_post_args", self.args.$args().$length())) + } else { + return nil + } + }, 0); + + $def(self, '$prepare_kwargs', function $$prepare_kwargs() { + var self = this; + + + if (!$truthy(self.args['$has_any_kwargs?']())) { + return nil + }; + if ($truthy(self.args['$can_inline_kwargs?']())) { + self.inline['$<<'](self.$s("arg", "$kwargs")) + } else { + + self.initialization['$<<'](self.$s("extract_kwargs")); + self.inline['$<<'](self.$s("fake_arg")); + }; + return self.initialization['$<<'](self.$s("ensure_kwargs_are_kwargs")); + }, 0); + + $def(self, '$extract_kwargs', function $$extract_kwargs() { + var self = this; + + return $send(self.args.$kwargs(), 'each', [], function $$4(arg){var self = $$4.$$s == null ? this : $$4.$$s; + if (self.initialization == null) self.initialization = nil; + + + + if (arg == null) arg = nil;; + return self.initialization['$<<'](arg.$updated("extract_kwarg"));}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$extract_kwoptargs', function $$extract_kwoptargs() { + var self = this; + + return $send(self.args.$kwoptargs(), 'each', [], function $$5(arg){var self = $$5.$$s == null ? this : $$5.$$s; + if (self.initialization == null) self.initialization = nil; + + + + if (arg == null) arg = nil;; + return self.initialization['$<<'](arg.$updated("extract_kwoptarg"));}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$extract_kwrestarg', function $$extract_kwrestarg() { + var self = this, arg = nil; + + if ($truthy((arg = self.args.$kwrestarg()))) { + return self.initialization['$<<'](arg.$updated("extract_kwrestarg")) + } else { + return nil + } + }, 0); + + $def(self, '$extract_post_args', function $$extract_post_args() { + var self = this; + + return $send(self.args.$postargs(), 'each', [], function $$6(arg){var self = $$6.$$s == null ? this : $$6.$$s; + if (self.initialization == null) self.initialization = nil; + if (self.inline == null) self.inline = nil; + + + + if (arg == null) arg = nil;; + self.initialization['$<<'](arg.$updated("extract_post_arg")); + return self.inline['$<<'](self.$s("fake_arg"));}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$extract_optargs', function $$extract_optargs() { + var self = this, has_post_args = nil; + + + has_post_args = self.args['$has_post_args?'](); + return $send(self.args.$optargs(), 'each', [], function $$7(arg){var $a, self = $$7.$$s == null ? this : $$7.$$s, arg_name = nil, default_value = nil; + if (self.initialization == null) self.initialization = nil; + if (self.inline == null) self.inline = nil; + + + + if (arg == null) arg = nil;; + if ($truthy(has_post_args)) { + + $a = [].concat($to_a(arg)), (arg_name = ($a[0] == null ? nil : $a[0])), (default_value = ($a[1] == null ? nil : $a[1])), $a; + self.initialization['$<<'](arg.$updated("extract_post_optarg", [arg_name, default_value, self.$args_to_keep()])); + return self.inline['$<<'](self.$s("fake_arg")); + } else { + + self.inline['$<<'](arg.$updated("arg")); + return self.initialization['$<<'](arg.$updated("extract_optarg")); + };}, {$$arity: 1, $$s: self}); + }, 0); + + $def(self, '$extract_restarg', function $$extract_restarg() { + var self = this, arg = nil, arg_name = nil; + + if ($truthy((arg = self.args.$restarg()))) { + + arg_name = arg.$children()['$[]'](0); + self.initialization['$<<'](arg.$updated("extract_restarg", [arg_name, self.$args_to_keep()])); + return self.inline['$<<'](self.$s("fake_arg")); + } else { + return nil + } + }, 0); + return $def(self, '$args_to_keep', function $$args_to_keep() { + var self = this; + + return self.args.$postargs().$length() + }, 0); + })($nesting[0], $$$($$$($Opal, 'Rewriters'), 'Base'), $nesting); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/numblocks"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_ary = Opal.to_ary, $send = Opal.send, $to_a = Opal.to_a, $def = Opal.def; + + Opal.add_stubs('require,children,s,gen_args,map'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Numblocks'); + + + + + $def(self, '$on_numblock', function $$on_numblock(node) { + var $a, $b, self = this, left = nil, arg_count = nil, right = nil; + + + $b = node.$children(), $a = $to_ary($b), (left = ($a[0] == null ? nil : $a[0])), (arg_count = ($a[1] == null ? nil : $a[1])), (right = ($a[2] == null ? nil : $a[2])), $b; + return self.$s("block", left, $send(self, 's', ["args"].concat($to_a(self.$gen_args(arg_count)))), right); + }, 1); + return $def(self, '$gen_args', function $$gen_args(arg_count) { + var self = this; + + return $send(Opal.Range.$new(1, arg_count, false), 'map', [], function $$1(i){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (i == null) i = nil;; + return self.$s("arg", "_" + (i));}, {$$arity: 1, $$s: self}) + }, 1); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/returnable_logic"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $def = Opal.def, $rb_minus = Opal.rb_minus, $to_a = Opal.to_a, $send = Opal.send, $send2 = Opal.send2, $find_super = Opal.find_super, $slice = Opal.slice, $eqeq = Opal.eqeq; + + Opal.add_stubs('require,+,-,children,[]=,meta,s,next_tmp,build_if_from_when,free_tmp,[],process,updated,==,count,first,delete,private,build_rule_from_parts,empty?,type'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ReturnableLogic'); + + var $proto = self.$$prototype; + + $proto.counter = nil; + + + $def(self, '$next_tmp', function $$next_tmp() { + var self = this, $ret_or_1 = nil; + + + self.counter = ($truthy(($ret_or_1 = self.counter)) ? ($ret_or_1) : (0)); + self.counter = $rb_plus(self.counter, 1); + return "$ret_or_" + (self.counter); + }, 0); + + $def(self, '$free_tmp', function $$free_tmp() { + var self = this; + + return (self.counter = $rb_minus(self.counter, 1)) + }, 0); + + $def(self, '$reset_tmp_counter!', function $ReturnableLogic_reset_tmp_counter$excl$1() { + var self = this; + + return (self.counter = nil) + }, 0); + + $def(self, '$on_if', function $$on_if(node) { + var $a, $yield = $$on_if.$$p || nil, self = this, test = nil, $writer = nil; + + delete $$on_if.$$p; + + $a = [].concat($to_a(node.$children())), (test = ($a[0] == null ? nil : $a[0])), $a; + if ($truthy(test)) { + + $writer = ["if_test", true]; + $send(test.$meta(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return $send2(self, $find_super(self, 'on_if', $$on_if, false, true), 'on_if', [node], $yield); + }, 1); + + $def(self, '$on_case', function $$on_case(node) { + var $a, $b, self = this, lhs = nil, whens = nil, els = nil, $ret_or_1 = nil, lhs_tmp = nil, out = nil; + + + $a = [].concat($to_a(node.$children())), (lhs = ($a[0] == null ? nil : $a[0])), $b = $a.length - 1, $b = ($b < 1) ? 1 : $b, (whens = $slice.call($a, 1, $b)), (els = ($a[$b] == null ? nil : $a[$b])), $a; + els = ($truthy(($ret_or_1 = els)) ? ($ret_or_1) : (self.$s("nil"))); + if ($truthy(lhs)) { + lhs_tmp = self.$next_tmp() + }; + out = self.$build_if_from_when(node, lhs, lhs_tmp, whens, els); + if ($truthy(lhs)) { + self.$free_tmp() + }; + return out; + }, 1); + + $def(self, '$on_or', function $$on_or(node) { + var $a, self = this, lhs = nil, rhs = nil, $writer = nil, out = nil, lhs_tmp = nil; + + + $a = [].concat($to_a(node.$children())), (lhs = ($a[0] == null ? nil : $a[0])), (rhs = ($a[1] == null ? nil : $a[1])), $a; + if ($truthy(node.$meta()['$[]']("if_test"))) { + + + $writer = ["if_test", (($writer = ["if_test", true]), $send(rhs.$meta(), '[]=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)])]; + $send(lhs.$meta(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + out = self.$process(node.$updated("if", [lhs, self.$s("true"), rhs])); + } else { + + lhs_tmp = self.$next_tmp(); + out = self.$process(node.$updated("if", [self.$s("lvasgn", lhs_tmp, lhs), self.$s("js_tmp", lhs_tmp), rhs])); + self.$free_tmp(); + }; + return out; + }, 1); + + $def(self, '$on_and', function $$on_and(node) { + var $a, self = this, lhs = nil, rhs = nil, $writer = nil, out = nil, lhs_tmp = nil; + + + $a = [].concat($to_a(node.$children())), (lhs = ($a[0] == null ? nil : $a[0])), (rhs = ($a[1] == null ? nil : $a[1])), $a; + if ($truthy(node.$meta()['$[]']("if_test"))) { + + + $writer = ["if_test", (($writer = ["if_test", true]), $send(rhs.$meta(), '[]=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)])]; + $send(lhs.$meta(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + out = self.$process(node.$updated("if", [lhs, rhs, self.$s("false")])); + } else { + + lhs_tmp = self.$next_tmp(); + out = self.$process(node.$updated("if", [self.$s("lvasgn", lhs_tmp, lhs), rhs, self.$s("js_tmp", lhs_tmp)])); + self.$free_tmp(); + }; + return out; + }, 1); + + $def(self, '$on_begin', function $$on_begin(node) { + var $yield = $$on_begin.$$p || nil, self = this, $writer = nil; + + delete $$on_begin.$$p; + + if (($truthy(node.$meta()['$[]']("if_test")) && ($eqeq(node.$children().$count(), 1)))) { + + $writer = ["if_test", true]; + $send(node.$children().$first().$meta(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + node.$meta().$delete("if_test"); + return $send2(self, $find_super(self, 'on_begin', $$on_begin, false, true), 'on_begin', [node], $yield); + }, 1); + self.$private(); + + $def(self, '$build_if_from_when', function $$build_if_from_when(node, lhs, lhs_tmp, whens, els) { + var $a, $b, self = this, first_when = nil, next_whens = nil, parts = nil, expr = nil, rule = nil; + + + $a = [].concat($to_a(whens)), (first_when = ($a[0] == null ? nil : $a[0])), (next_whens = $slice.call($a, 1)), $a; + $a = [].concat($to_a(first_when.$children())), $b = $a.length - 1, $b = ($b < 0) ? 0 : $b, (parts = $slice.call($a, 0, $b)), (expr = ($a[$b] == null ? nil : $a[$b])), $a; + rule = self.$build_rule_from_parts(node, lhs, lhs_tmp, parts); + return first_when.$updated("if", [rule, self.$process(expr), ($truthy(next_whens['$empty?']()) ? (self.$process(els)) : (self.$build_if_from_when(nil, nil, lhs_tmp, next_whens, els)))]); + }, 5); + return $def(self, '$build_rule_from_parts', function $$build_rule_from_parts(node, lhs, lhs_tmp, parts) { + var $a, self = this, first_part = nil, next_parts = nil, subrule = nil, splat_on = nil, iter_val = nil, block = nil; + + + lhs = (($truthy(node) && ($truthy(lhs_tmp))) ? (node.$updated("lvasgn", [lhs_tmp, self.$process(lhs)])) : (self.$s("js_tmp", lhs_tmp))); + $a = [].concat($to_a(parts)), (first_part = ($a[0] == null ? nil : $a[0])), (next_parts = $slice.call($a, 1)), $a; + subrule = ($eqeq(first_part.$type(), "splat") ? (((splat_on = first_part.$children().$first()), (iter_val = self.$next_tmp()), (block = self.$s("send", self.$process(splat_on), "any?", self.$s("iter", self.$s("args", self.$s("arg", iter_val)), self.$build_rule_from_parts(nil, nil, lhs_tmp, [self.$s("lvar", iter_val)])))), (($truthy(node) && ($truthy(lhs_tmp))) ? (self.$s("begin", lhs, block)) : (block)))) : ($truthy(lhs_tmp) ? (self.$s("send", self.$process(first_part), "===", lhs)) : (self.$process(first_part)))); + if ($truthy(next_parts['$empty?']())) { + return subrule + } else { + return self.$s("if", subrule, self.$s("true"), self.$build_rule_from_parts(nil, nil, lhs_tmp, next_parts)) + }; + }, 4); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/forward_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $range = Opal.range, $to_a = Opal.to_a, $send2 = Opal.send2, $find_super = Opal.find_super, $neqeq = Opal.neqeq; + + Opal.add_stubs('require,process,s,==,type,last,children,[],updated,!=,class'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ForwardArgs'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$on_forward_args', function $$on_forward_args(_node) { + var self = this; + + return self.$process(self.$s("args", self.$s("forward_arg", "$"))) + }, 1); + + $def(self, '$on_args', function $$on_args(node) { + var $yield = $$on_args.$$p || nil, self = this, prev_children = nil; + + delete $$on_args.$$p; + if (($truthy(node.$children().$last()) && ($eqeq(node.$children().$last().$type(), "forward_arg")))) { + + prev_children = node.$children()['$[]']($range(0, -2, false)); + return node.$updated(nil, [].concat($to_a(prev_children)).concat([self.$s("restarg", "$fwd_rest"), self.$s("blockarg", "$fwd_block")])); + } else { + return $send2(self, $find_super(self, 'on_args', $$on_args, false, true), 'on_args', [node], $yield) + } + }, 1); + return $def(self, '$on_send', function $$on_send(node) { + var $yield = $$on_send.$$p || nil, self = this, prev_children = nil; + + delete $$on_send.$$p; + if ((($truthy(node.$children().$last()) && ($neqeq(node.$children().$last().$class(), $$('Symbol')))) && ($eqeq(node.$children().$last().$type(), "forwarded_args")))) { + + prev_children = node.$children()['$[]']($range(0, -2, false)); + return node.$updated(nil, [].concat($to_a(prev_children)).concat([self.$s("splat", self.$s("lvar", "$fwd_rest")), self.$s("block_pass", self.$s("lvar", "$fwd_block"))])); + } else { + return $send2(self, $find_super(self, 'on_send', $$on_send, false, true), 'on_send', [node], $yield) + } + }, 1); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $send = Opal.send; + + Opal.add_stubs('require,<<,list,delete,use,disabled?,class,each,new,process'); + + self.$require("opal/rewriters/opal_engine_check"); + self.$require("opal/rewriters/for_rewriter"); + self.$require("opal/rewriters/explicit_writer_return"); + self.$require("opal/rewriters/js_reserved_words"); + self.$require("opal/rewriters/block_to_iter"); + self.$require("opal/rewriters/dot_js_syntax"); + self.$require("opal/rewriters/pattern_matching"); + self.$require("opal/rewriters/logical_operator_assignment"); + self.$require("opal/rewriters/binary_operator_assignment"); + self.$require("opal/rewriters/hashes/key_duplicates_rewriter"); + self.$require("opal/rewriters/dump_args"); + self.$require("opal/rewriters/mlhs_args"); + self.$require("opal/rewriters/inline_args"); + self.$require("opal/rewriters/numblocks"); + self.$require("opal/rewriters/returnable_logic"); + self.$require("opal/rewriters/forward_args"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Rewriter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.sexp = nil; + + (function(self, $parent_nesting) { + + + + $def(self, '$list', function $$list() { + var self = this, $ret_or_1 = nil; + if (self.list == null) self.list = nil; + + return (self.list = ($truthy(($ret_or_1 = self.list)) ? ($ret_or_1) : ([]))) + }, 0); + + $def(self, '$use', function $$use(rewriter) { + var self = this; + + return self.$list()['$<<'](rewriter) + }, 1); + + $def(self, '$delete', function $delete$1(rewriter) { + var self = this; + + return self.$list().$delete(rewriter) + }, 1); + + $def(self, '$disable', function $$disable() { + var $yield = $$disable.$$p || nil, self = this; + + delete $$disable.$$p; + return (function() { try { + + self.disabled = true; + return Opal.yieldX($yield, []);; + } finally { + (self.disabled = false) + }; })() + }, 0); + return $def(self, '$disabled?', function $disabled$ques$2() { + var $a, self = this; + if (self.disabled == null) self.disabled = nil; + + if ($truthy((($a = self['disabled'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { + return self.disabled + } else { + return nil + } + }, 0); + })(Opal.get_singleton_class(self), $nesting); + self.$use($$$($$('Rewriters'), 'OpalEngineCheck')); + self.$use($$$($$('Rewriters'), 'ForRewriter')); + self.$use($$$($$('Rewriters'), 'Numblocks')); + self.$use($$$($$('Rewriters'), 'ForwardArgs')); + self.$use($$$($$('Rewriters'), 'BlockToIter')); + self.$use($$$($$('Rewriters'), 'DotJsSyntax')); + self.$use($$$($$('Rewriters'), 'PatternMatching')); + self.$use($$$($$('Rewriters'), 'JsReservedWords')); + self.$use($$$($$('Rewriters'), 'LogicalOperatorAssignment')); + self.$use($$$($$('Rewriters'), 'BinaryOperatorAssignment')); + self.$use($$$($$('Rewriters'), 'ExplicitWriterReturn')); + self.$use($$$($$$($$('Rewriters'), 'Hashes'), 'KeyDuplicatesRewriter')); + self.$use($$$($$('Rewriters'), 'ReturnableLogic')); + self.$use($$$($$('Rewriters'), 'DumpArgs')); + self.$use($$$($$('Rewriters'), 'MlhsArgs')); + self.$use($$$($$('Rewriters'), 'InlineArgs')); + + $def(self, '$initialize', function $$initialize(sexp) { + var self = this; + + return (self.sexp = sexp) + }, 1); + return $def(self, '$process', function $$process() { + var self = this; + + + if ($truthy(self.$class()['$disabled?']())) { + return self.sexp + }; + $send(self.$class().$list(), 'each', [], function $$3(rewriter_class){var self = $$3.$$s == null ? this : $$3.$$s, rewriter = nil; + if (self.sexp == null) self.sexp = nil; + + + + if (rewriter_class == null) rewriter_class = nil;; + rewriter = rewriter_class.$new(); + return (self.sexp = rewriter.$process(self.sexp));}, {$$arity: 1, $$s: self}); + return self.sexp; + }, 0); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/parser/source_buffer"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $defs = Opal.defs; + + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'SourceBuffer'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $defs(self, '$recognize_encoding', function $$recognize_encoding(string) { + var $yield = $$recognize_encoding.$$p || nil, self = this, $ret_or_1 = nil; + + delete $$recognize_encoding.$$p; + if ($truthy(($ret_or_1 = $send2(self, $find_super(self, 'recognize_encoding', $$recognize_encoding, false, true), 'recognize_encoding', [string], $yield)))) { + return $ret_or_1 + } else { + return $$$($$('Encoding'), 'UTF_8') + } + }, 1) + })($nesting[0], $$$($$$($$$('Parser'), 'Source'), 'Buffer'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["opal/parser/default_config"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $send2 = Opal.send2, $find_super = Opal.find_super, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $lambda = Opal.lambda, $defs = Opal.defs; + + Opal.add_stubs('attr_accessor,all_errors_are_fatal=,diagnostics,-,ignore_warnings=,diagnostics_consumer,consumer=,extend,diagnostics_consumer=,new,rewrite,process,default_parser,default_parser_class'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + + (function($base, $parent_nesting) { + var self = $module($base, 'DefaultConfig'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base) { + var self = $module($base, 'ClassMethods'); + + + + self.$attr_accessor("diagnostics_consumer"); + return $def(self, '$default_parser', function $$default_parser() { + var $yield = $$default_parser.$$p || nil, self = this, parser = nil, $writer = nil; + + delete $$default_parser.$$p; + + parser = $send2(self, $find_super(self, 'default_parser', $$default_parser, false, true), 'default_parser', [], $yield); + + $writer = [true]; + $send(parser.$diagnostics(), 'all_errors_are_fatal=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(parser.$diagnostics(), 'ignore_warnings=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [self.$diagnostics_consumer()]; + $send(parser.$diagnostics(), 'consumer=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return parser; + }, 0); + })($nesting[0]); + $defs(self, '$included', function $$included(klass) { + var $writer = nil; + + + klass.$extend($$('ClassMethods')); + + $writer = [$lambda(function $$1(diagnostic){ + + + if (diagnostic == null) diagnostic = nil;; + return nil;}, 1)]; + $send(klass, 'diagnostics_consumer=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + }, 1); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [$$$($$$($$('Opal'), 'AST'), 'Builder').$new()], null); + }, -1); + + $def(self, '$parse', function $$parse(source_buffer) { + var $yield = $$parse.$$p || nil, self = this, parsed = nil, rewriten = nil; + + delete $$parse.$$p; + + parsed = $send2(self, $find_super(self, 'parse', $$parse, false, true), 'parse', [source_buffer], $yield); + rewriten = self.$rewrite(parsed); + return rewriten; + }, 1); + return $def(self, '$rewrite', function $$rewrite(node) { + + return $$$($$('Opal'), 'Rewriter').$new(node).$process() + }, 1); + })($nesting[0], $nesting); + return (function(self, $parent_nesting) { + + + self.$attr_accessor("default_parser_class"); + return $def(self, '$default_parser', function $$default_parser() { + var self = this; + + return self.$default_parser_class().$default_parser() + }, 0); + })(Opal.get_singleton_class(self), $nesting); + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["opal/parser/with_ruby_lexer"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus; + + Opal.add_stubs('include,default_parser_class=,-'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'WithRubyLexer'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $writer = nil; + + + self.$include($$$($$$($$('Opal'), 'Parser'), 'DefaultConfig')); + + $writer = [self]; + $send($$$($$('Opal'), 'Parser'), 'default_parser_class=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + })($$$($$('Opal'), 'Parser'), $$$($$('Parser'), 'Ruby31'), $nesting) +}; + +Opal.modules["opal/parser/patch"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $rb_plus = Opal.rb_plus, $send = Opal.send, $hash2 = Opal.hash2, $eqeqeq = Opal.eqeqeq, $eqeq = Opal.eqeq, $not = Opal.not, $rb_le = Opal.rb_le, $rb_minus = Opal.rb_minus, $rb_gt = Opal.rb_gt, $rb_times = Opal.rb_times, $rb_divide = Opal.rb_divide, $to_a = Opal.to_a, $module = Opal.module; + + Opal.add_stubs('source,unpack,+,to_a,lines,end_with?,<<,map,chomp,=~,diagnostic,nil?,new,===,type,updated,dedent,first,children,==,empty?,interrupt,compact,encoding,split,force_encoding,length,map!,each_with_index,!,each_char,<=,-,>,*,/,[],[]=,join,respond_to?,send,value'); + + + (function($base, $super) { + var self = $klass($base, $super, 'Lexer'); + + var $proto = self.$$prototype; + + $proto.source_buffer = nil; + return $def(self, '$source_buffer=', function $Lexer_source_buffer$eq$1(source_buffer) { + var self = this, source = nil; + + + self.source_buffer = source_buffer; + if ($truthy(self.source_buffer)) { + + source = self.source_buffer.$source(); + return (self.source_pts = source.$unpack("U*")); + } else { + return (self.source_pts = nil) + }; + }, 1) + })($$('Parser'), null); + (function($base, $super) { + var self = $klass($base, $super, 'Literal'); + + var $proto = self.$$prototype; + + $proto.buffer_s = $proto.buffer = nil; + + + Opal.udef(self, '$' + "extend_string");; + return $def(self, '$extend_string', function $$extend_string(string, ts, te) { + var self = this, $ret_or_1 = nil; + + + self.buffer_s = ($truthy(($ret_or_1 = self.buffer_s)) ? ($ret_or_1) : (ts)); + self.buffer_e = te; + return (self.buffer = $rb_plus(self.buffer, string)); + }, 3); + })($$$($$('Parser'), 'Lexer'), null); + (function($base, $super) { + var self = $klass($base, $super, 'Buffer'); + + var $proto = self.$$prototype; + + $proto.lines = $proto.source = nil; + return $def(self, '$source_lines', function $$source_lines() { + var self = this, $ret_or_1 = nil, lines = nil; + + return (self.lines = ($truthy(($ret_or_1 = self.lines)) ? ($ret_or_1) : (((lines = self.source.$lines().$to_a()), ($truthy(self.source['$end_with?']("\n")) ? (lines['$<<']("")) : nil), $send(lines, 'map', [], function $$2(line){ + + + if (line == null) line = nil;; + return line.$chomp("\n");}, 1))))) + }, 0) + })($$$($$('Parser'), 'Source'), null); + (function($base, $super) { + var self = $klass($base, $super, 'Default'); + + + + + $def(self, '$check_lvar_name', function $$check_lvar_name(name, loc) { + var self = this; + + if ($truthy(name['$=~'](new RegExp('^[\\p{Ll}|_][\\p{L}\\p{Nl}\\p{Nd}_]*$', 'u')))) { + return nil + } else { + return self.$diagnostic("error", "lvar_name", $hash2(["name"], {"name": name}), loc) + } + }, 2); + return $def(self, '$dedent_string', function $$dedent_string(node, dedent_level) { + var dedenter = nil, $ret_or_1 = nil, children = nil; + + + if (!$truthy(dedent_level['$nil?']())) { + + dedenter = $$$($$$($$$('Parser'), 'Lexer'), 'Dedenter').$new(dedent_level); + if ($eqeqeq("str", ($ret_or_1 = node.$type()))) { + node = node.$updated(nil, [dedenter.$dedent(node.$children().$first())]) + } else if (($eqeqeq("dstr", $ret_or_1) || ($eqeqeq("xstr", $ret_or_1)))) { + + children = $send(node.$children(), 'map', [], function $$3(str_node){ + + + if (str_node == null) str_node = nil;; + if ($eqeq(str_node.$type(), "str")) { + + str_node = str_node.$updated(nil, [dedenter.$dedent(str_node.$children().$first())]); + if ($truthy(str_node.$children().$first()['$empty?']())) { + return nil; + }; + } else { + dedenter.$interrupt() + }; + return str_node;}, 1); + node = node.$updated(nil, children.$compact()); + } else { + nil + }; + }; + return node; + }, 2); + })($$$($$('Parser'), 'Builders'), null); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Dedenter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$dedent', function $$dedent(string) { + var self = this, original_encoding = nil, lines = nil; + + + original_encoding = string.$encoding(); + lines = string.$force_encoding($$$($$('Encoding'), 'BINARY')).$split("\\\n"); + if ($eqeq(lines.$length(), 1)) { + lines = [string.$force_encoding(original_encoding)] + } else { + $send(lines, 'map!', [], function $$4(s){ + + + if (s == null) s = nil;; + return s.$force_encoding(original_encoding);}, 1) + }; + (function(){var $brk = Opal.new_brk(); try {return $send(lines, 'each_with_index', [], function $$5(line, index){var self = $$5.$$s == null ? this : $$5.$$s, left_to_remove = nil, remove = nil, $writer = nil; + if (self.at_line_begin == null) self.at_line_begin = nil; + if (self.dedent_level == null) self.dedent_level = nil; + + + + if (line == null) line = nil;; + + if (index == null) index = nil;; + if (($eqeq(index, 0) && ($not(self.at_line_begin)))) { + return nil; + }; + left_to_remove = self.dedent_level; + remove = 0; + (function(){var $brk = Opal.new_brk(); try {return $send(line, 'each_char', [], function $$6(char$){var self = $$6.$$s == null ? this : $$6.$$s, $ret_or_1 = nil; + if (self.dedent_level == null) self.dedent_level = nil; + + + + if (char$ == null) char$ = nil;; + if ($truthy($rb_le(left_to_remove, 0))) { + + Opal.brk(nil, $brk) + }; + if ($eqeqeq(" ", ($ret_or_1 = char$))) { + + remove = $rb_plus(remove, 1); + return (left_to_remove = $rb_minus(left_to_remove, 1)); + } else if ($eqeqeq("\t", $ret_or_1)) { + + if ($truthy($rb_gt($rb_times($$('TAB_WIDTH'), $rb_plus($rb_divide(remove, $$('TAB_WIDTH')), 1)), self.dedent_level))) { + + Opal.brk(nil, $brk) + }; + remove = $rb_plus(remove, 1); + return (left_to_remove = $rb_minus(left_to_remove, $$('TAB_WIDTH'))); + } else { + + Opal.brk(nil, $brk) + };}, {$$arity: 1, $$s: self, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + + $writer = [index, line['$[]'](Opal.Range.$new(remove, -1, false))]; + $send(lines, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 2, $$s: self, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + string = lines.$join(); + self.at_line_begin = string['$end_with?']("\n"); + return string; + }, 1) + })($$$($$('Parser'), 'Lexer'), null, $nesting);; + (function($base) { + var self = $module($base, 'Mixin'); + + + + + Opal.udef(self, '$' + "process");; + return $def(self, '$process', function $$process(node) { + var self = this, $ret_or_1 = nil, type = nil, on_handler = nil, $writer = nil, handler = nil; + if (self._on_handler_cache == null) self._on_handler_cache = nil; + + + if ($truthy(node['$nil?']())) { + return nil + }; + self._on_handler_cache = ($truthy(($ret_or_1 = self._on_handler_cache)) ? ($ret_or_1) : ($hash2([], {}))); + type = node.$type(); + on_handler = ($truthy(($ret_or_1 = self._on_handler_cache['$[]'](type))) ? ($ret_or_1) : ((($writer = [type, ((handler = "on_" + (type)), ($truthy(self['$respond_to?'](handler)) ? (nil) : ((handler = "handler_missing"))), handler)]), $send(self._on_handler_cache, '[]=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)]))); + if ($truthy(($ret_or_1 = self.$send(on_handler, node)))) { + return $ret_or_1 + } else { + return node + }; + }, 1); + })($$$($$('AST'), 'Processor')); + return (function($base, $super) { + var self = $klass($base, $super, 'Default'); + + + + + Opal.udef(self, '$' + "string_value");; + return $def(self, '$string_value', function $$string_value(token) { + var self = this; + + return self.$value(token) + }, 1); + })($$$($$('Parser'), 'Builders'), null); +}; + +Opal.modules["opal/parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, nil = Opal.nil; + + Opal.add_stubs('require'); + + self.$require("opal/ast/builder"); + self.$require("opal/rewriter"); + self.$require("opal/parser/source_buffer"); + self.$require("opal/parser/default_config"); + self.$require("opal/parser/with_ruby_lexer"); + return self.$require("opal/parser/patch"); +}; + +Opal.modules["opal/fragment"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $rb_plus = Opal.rb_plus, $rb_gt = Opal.rb_gt, $to_a = Opal.to_a, $not = Opal.not, $send = Opal.send; + + Opal.add_stubs('attr_reader,to_s,inspect,===,type,[],meta,source_map_name_for,sexp,==,class,+,parent,>,!,first,children,loc,respond_to?,dot,selector,operator,begin,line,location,column'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Fragment'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.code = $proto.scope = $proto.sexp = nil; + + self.$attr_reader("code"); + + $def(self, '$initialize', function $$initialize(code, scope, sexp) { + var self = this; + + + + if (sexp == null) sexp = nil;; + self.code = code.$to_s(); + self.sexp = sexp; + return (self.scope = scope); + }, -3); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return "f(" + (self.code.$inspect()) + ")" + }, 0); + + $def(self, '$source_map_name_for', function $$source_map_name_for(sexp) { + var $a, self = this, $ret_or_1 = nil, $ret_or_2 = nil, scope = nil, iters = nil, level = nil, const$ = nil, name = nil; + + if ($eqeqeq("top", ($ret_or_1 = sexp.$type()))) { + if ($eqeqeq("require", ($ret_or_2 = sexp.$meta()['$[]']("kind")))) { + return "" + } else if ($eqeqeq("eval", $ret_or_2)) { + return "(eval)" + } else if ($eqeqeq("main", $ret_or_2)) { + return "
    " + } else { + return nil + } + } else if (($eqeqeq("begin", $ret_or_1) || (($eqeqeq("newline", $ret_or_1) || ($eqeqeq("js_return", $ret_or_1)))))) { + if ($truthy(self.scope)) { + return self.$source_map_name_for(self.scope.$sexp()) + } else { + return nil + } + } else if ($eqeqeq("iter", $ret_or_1)) { + + scope = self.scope; + iters = 1; + while ($truthy(scope)) { + if ($eqeq(scope.$class(), $$$($$('Nodes'), 'IterNode'))) { + + iters = $rb_plus(iters, 1); + scope = scope.$parent(); + } else { + break; + } + }; + if ($truthy($rb_gt(iters, 1))) { + level = " (" + (iters) + " levels)" + }; + return "block" + (level) + " in " + (self.$source_map_name_for(scope.$sexp())); + } else if ($eqeqeq("self", $ret_or_1)) { + return "self" + } else if ($eqeqeq("module", $ret_or_1)) { + + $a = [].concat($to_a(sexp)), (const$ = ($a[0] == null ? nil : $a[0])), $a; + return ""; + } else if ($eqeqeq("class", $ret_or_1)) { + + $a = [].concat($to_a(sexp)), (const$ = ($a[0] == null ? nil : $a[0])), $a; + return ""; + } else if ($eqeqeq("const", $ret_or_1)) { + + $a = [].concat($to_a(sexp)), (scope = ($a[0] == null ? nil : $a[0])), (name = ($a[1] == null ? nil : $a[1])), $a; + if (($not(scope) || ($eqeq(scope.$type(), "cbase")))) { + return name.$to_s() + } else { + return "" + (self.$source_map_name_for(scope)) + "::" + (name) + }; + } else if ($eqeqeq("int", $ret_or_1)) { + return sexp.$children().$first() + } else if ($eqeqeq("def", $ret_or_1)) { + return sexp.$children().$first() + } else if ($eqeqeq("defs", $ret_or_1)) { + return sexp.$children()['$[]'](1) + } else if ($eqeqeq("send", $ret_or_1)) { + return sexp.$children()['$[]'](1) + } else if (($eqeqeq("lvar", $ret_or_1) || (($eqeqeq("lvasgn", $ret_or_1) || (($eqeqeq("lvdeclare", $ret_or_1) || (($eqeqeq("ivar", $ret_or_1) || (($eqeqeq("ivasgn", $ret_or_1) || (($eqeqeq("gvar", $ret_or_1) || (($eqeqeq("cvar", $ret_or_1) || (($eqeqeq("cvasgn", $ret_or_1) || (($eqeqeq("gvars", $ret_or_1) || (($eqeqeq("gvasgn", $ret_or_1) || ($eqeqeq("arg", $ret_or_1)))))))))))))))))))))) { + return sexp.$children().$first() + } else if (($eqeqeq("str", $ret_or_1) || ($eqeqeq("xstr", $ret_or_1)))) { + return self.$source_map_name_for(self.scope.$sexp()) + } else { + return nil + } + }, 1); + + $def(self, '$source_map_name', function $$source_map_name() { + var self = this; + + + if (!$truthy(self.sexp)) { + return nil + }; + return self.$source_map_name_for(self.sexp); + }, 0); + + $def(self, '$location', function $$location() { + var self = this, loc = nil, $ret_or_1 = nil; + + if ($not(self.sexp)) { + return nil + } else if ($eqeq(self.sexp.$type(), "send")) { + + loc = self.sexp.$loc(); + if ($truthy(loc['$respond_to?']("dot"))) { + if ($truthy(($ret_or_1 = loc.$dot()))) { + return $ret_or_1 + } else { + return loc.$selector() + } + } else if ($truthy(loc['$respond_to?']("operator"))) { + return loc.$operator() + } else { + return self.sexp + }; + } else if ($eqeq(self.sexp.$type(), "iter")) { + if ($truthy(loc['$respond_to?']("begin"))) { + return self.sexp.$loc().$begin() + } else { + return self.sexp + } + } else { + return self.sexp + } + }, 0); + + $def(self, '$line', function $$line() { + var $a, self = this; + + return ($a = self.$location(), ($a === nil || $a == null) ? nil : $send($a, 'line', [])) + }, 0); + + $def(self, '$column', function $$column() { + var $a, self = this; + + return ($a = self.$location(), ($a === nil || $a == null) ? nil : $send($a, 'column', [])) + }, 0); + return $def(self, '$skip_source_map?', function $Fragment_skip_source_map$ques$1() { + var self = this; + + return self.sexp['$=='](false) + }, 0); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["opal/nodes/helpers"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $truthy = Opal.truthy, $def = Opal.def, $rb_plus = Opal.rb_plus, $send = Opal.send, $hash2 = Opal.hash2, $to_a = Opal.to_a, $eqeqeq = Opal.eqeqeq, $slice = Opal.slice, $eqeq = Opal.eqeq, $rb_minus = Opal.rb_minus; + + Opal.add_stubs('require,valid_name?,inspect,=~,to_s,+,indent,compiler,to_proc,parser_indent,push,fragment,current_indent,js_truthy_optimize,helper,expr,===,type,[],handlers,include?,truthy_optimize?,==,count,<<,method_calls,first,children,s,[]=,meta,-,new_temp,scope,wrap'); + + self.$require("opal/regexp_anchors"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Helpers'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$property', function $$property(name) { + var self = this; + + if ($truthy(self['$valid_name?'](name))) { + return "." + (name) + } else { + return "[" + (name.$inspect()) + "]" + } + }, 1); + + $def(self, '$valid_name?', function $Helpers_valid_name$ques$1(name) { + + return $$$($$$($$('Opal'), 'Rewriters'), 'JsReservedWords')['$valid_name?'](name) + }, 1); + + $def(self, '$mid_to_jsid', function $$mid_to_jsid(mid) { + + if ($truthy(/\=|\+|\-|\*|\/|\!|\?|<|\>|\&|\||\^|\%|\~|\[|`/['$=~'](mid.$to_s()))) { + return "['$" + (mid) + "']" + } else { + return $rb_plus(".$", mid) + } + }, 1); + + $def(self, '$indent', function $$indent() { + var block = $$indent.$$p || nil, self = this; + + delete $$indent.$$p; + + ; + return $send(self.$compiler(), 'indent', [], block.$to_proc()); + }, 0); + + $def(self, '$current_indent', function $$current_indent() { + var self = this; + + return self.$compiler().$parser_indent() + }, 0); + + $def(self, '$line', function $$line($a) { + var $post_args, strs, self = this; + + + + $post_args = Opal.slice.call(arguments); + + strs = $post_args;; + self.$push(self.$fragment("\n" + (self.$current_indent()), $hash2(["loc"], {"loc": false}))); + return $send(self, 'push', $to_a(strs)); + }, -1); + + $def(self, '$empty_line', function $$empty_line() { + var self = this; + + return self.$push(self.$fragment("\n", $hash2(["loc"], {"loc": false}))) + }, 0); + + $def(self, '$js_truthy', function $$js_truthy(sexp) { + var self = this, optimize = nil; + + + if ($truthy((optimize = self.$js_truthy_optimize(sexp)))) { + return optimize + }; + self.$helper("truthy"); + return [self.$fragment("$truthy("), self.$expr(sexp), self.$fragment(")")]; + }, 1); + + $def(self, '$js_truthy_optimize', function $$js_truthy_optimize(sexp) { + var $a, self = this, $ret_or_1 = nil, receiver = nil, mid = nil, args = nil, receiver_handler_class = nil, $ret_or_2 = nil, allow_optimization_on_type = nil, $ret_or_3 = nil, _test = nil, true_body = nil, false_body = nil, $writer = nil; + + if ($eqeqeq("send", ($ret_or_1 = sexp.$type()))) { + + $a = [].concat($to_a(sexp)), (receiver = ($a[0] == null ? nil : $a[0])), (mid = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $a; + receiver_handler_class = ($truthy(($ret_or_2 = receiver)) ? (self.$compiler().$handlers()['$[]'](receiver.$type())) : ($ret_or_2)); + allow_optimization_on_type = ($truthy(($ret_or_2 = ($truthy(($ret_or_3 = $$$($$('Compiler'), 'COMPARE')['$include?'](mid.$to_s()))) ? (receiver_handler_class) : ($ret_or_3)))) ? (receiver_handler_class['$truthy_optimize?']()) : ($ret_or_2)); + if (($truthy(allow_optimization_on_type) || ($eqeq(mid, "block_given?")))) { + return self.$expr(sexp) + } else if ($eqeq(args.$count(), 1)) { + if ($eqeqeq("==", ($ret_or_2 = mid))) { + + self.$helper("eqeq"); + self.$compiler().$method_calls()['$<<'](mid); + return [self.$fragment("$eqeq("), self.$expr(receiver), self.$fragment(", "), self.$expr(args.$first()), self.$fragment(")")]; + } else if ($eqeqeq("===", $ret_or_2)) { + + self.$helper("eqeqeq"); + self.$compiler().$method_calls()['$<<'](mid); + return [self.$fragment("$eqeqeq("), self.$expr(receiver), self.$fragment(", "), self.$expr(args.$first()), self.$fragment(")")]; + } else if ($eqeqeq("!=", $ret_or_2)) { + + self.$helper("neqeq"); + self.$compiler().$method_calls()['$<<'](mid); + return [self.$fragment("$neqeq("), self.$expr(receiver), self.$fragment(", "), self.$expr(args.$first()), self.$fragment(")")]; + } else { + return nil + } + } else if ($eqeq(args.$count(), 0)) { + if ($eqeqeq("!", ($ret_or_2 = mid))) { + + self.$helper("not"); + self.$compiler().$method_calls()['$<<'](mid); + return [self.$fragment("$not("), self.$expr(receiver), self.$fragment(")")]; + } else { + return nil + } + } else { + return nil + }; + } else if ($eqeqeq("begin", $ret_or_1)) { + if ($eqeq(sexp.$children().$count(), 1)) { + return self.$js_truthy_optimize(sexp.$children().$first()) + } else { + return nil + } + } else if ($eqeqeq("if", $ret_or_1)) { + + $a = [].concat($to_a(sexp)), (_test = ($a[0] == null ? nil : $a[0])), (true_body = ($a[1] == null ? nil : $a[1])), (false_body = ($a[2] == null ? nil : $a[2])), $a; + if ($eqeq(true_body, self.$s("true"))) { + + + $writer = ["do_js_truthy_on_false_body", true]; + $send(sexp.$meta(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self.$expr(sexp); + } else if ($eqeq(false_body, self.$s("false"))) { + + + $writer = ["do_js_truthy_on_true_body", true]; + $send(sexp.$meta(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self.$expr(sexp); + } else { + return nil + }; + } else { + return nil + } + }, 1); + return $def(self, '$conditional_send', function $$conditional_send(recvr) { + var $yield = $$conditional_send.$$p || nil, self = this, receiver_temp = nil; + + delete $$conditional_send.$$p; + + receiver_temp = self.$scope().$new_temp(); + self.$push("" + (receiver_temp) + " = ", recvr); + self.$push(", (" + (receiver_temp) + " === nil || " + (receiver_temp) + " == null) ? nil : "); + Opal.yield1($yield, receiver_temp); + return self.$wrap("(", ")"); + }, 1); + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $defs = Opal.defs, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $Opal = Opal.Opal, $rb_plus = Opal.rb_plus; + + Opal.add_stubs('require,include,each,[]=,handlers,-,each_with_index,define_method,[],children,attr_reader,type,top_scope,top_scope=,compile,raise,is_a?,fragment,<<,reverse_each,unshift,push,new,scope,error,loc,==,process,expr,add_scope_local,to_sym,add_scope_ivar,add_scope_gvar,add_scope_temp,helper,with_temp,to_proc,in_while?,instance_variable_get,has_rescue_else?,in_ensure,in_ensure?,in_resbody,in_resbody?,in_rescue,!,class_scope?,sclass?,+,parent,nesting,class_variable_owner_nesting_level,comments,compiler,name,source_buffer,expression,start_with?,end_with?,line'); + + self.$require("opal/nodes/helpers"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Base'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.compiler = $proto.sexp = $proto.fragments = $proto.level = nil; + + self.$include($$('Helpers')); + $defs(self, '$handlers', function $$handlers() { + var self = this, $ret_or_1 = nil; + if (self.handlers == null) self.handlers = nil; + + return (self.handlers = ($truthy(($ret_or_1 = self.handlers)) ? ($ret_or_1) : ($hash2([], {})))) + }, 0); + $defs(self, '$handle', function $$handle($a) { + var $post_args, types, self = this; + + + + $post_args = Opal.slice.call(arguments); + + types = $post_args;; + return $send(types, 'each', [], function $$1(type){var self = $$1.$$s == null ? this : $$1.$$s, $writer = nil; + + + + if (type == null) type = nil;; + $writer = [type, self]; + $send($$('Base').$handlers(), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}); + }, -1); + $defs(self, '$children', function $$children($a) { + var $post_args, names, self = this; + + + + $post_args = Opal.slice.call(arguments); + + names = $post_args;; + return $send(names, 'each_with_index', [], function $$2(name, idx){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (name == null) name = nil;; + + if (idx == null) idx = nil;; + return $send(self, 'define_method', [name], function $$3(){var self = $$3.$$s == null ? this : $$3.$$s; + if (self.sexp == null) self.sexp = nil; + + return self.sexp.$children()['$[]'](idx)}, {$$arity: 0, $$s: self});}, {$$arity: 2, $$s: self}); + }, -1); + $defs(self, '$truthy_optimize?', function $Base_truthy_optimize$ques$4() { + + return false + }, 0); + self.$attr_reader("compiler", "type", "sexp"); + + $def(self, '$initialize', function $$initialize(sexp, level, compiler) { + var self = this, $ret_or_1 = nil, $writer = nil; + + + self.sexp = sexp; + self.type = sexp.$type(); + self.level = level; + self.compiler = compiler; + if ($truthy(($ret_or_1 = self.compiler.$top_scope()))) { + return $ret_or_1 + } else { + + $writer = [self]; + $send(self.compiler, 'top_scope=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }; + }, 3); + + $def(self, '$children', function $$children() { + var self = this; + + return self.sexp.$children() + }, 0); + + $def(self, '$compile_to_fragments', function $$compile_to_fragments() { + var $a, self = this; + + + if ($truthy((($a = self['fragments'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { + return self.fragments + }; + self.fragments = []; + self.$compile(); + return self.fragments; + }, 0); + + $def(self, '$compile', function $$compile() { + var self = this; + + return self.$raise("Not Implemented") + }, 0); + + $def(self, '$push', function $$push($a) { + var $post_args, strs, self = this; + + + + $post_args = Opal.slice.call(arguments); + + strs = $post_args;; + return $send(strs, 'each', [], function $$5(str){var self = $$5.$$s == null ? this : $$5.$$s; + if (self.fragments == null) self.fragments = nil; + + + + if (str == null) str = nil;; + if ($truthy(str['$is_a?']($$('String')))) { + str = self.$fragment(str) + }; + return self.fragments['$<<'](str);}, {$$arity: 1, $$s: self}); + }, -1); + + $def(self, '$unshift', function $$unshift($a) { + var $post_args, strs, self = this; + + + + $post_args = Opal.slice.call(arguments); + + strs = $post_args;; + return $send(strs, 'reverse_each', [], function $$6(str){var self = $$6.$$s == null ? this : $$6.$$s; + if (self.fragments == null) self.fragments = nil; + + + + if (str == null) str = nil;; + if ($truthy(str['$is_a?']($$('String')))) { + str = self.$fragment(str) + }; + return self.fragments.$unshift(str);}, {$$arity: 1, $$s: self}); + }, -1); + + $def(self, '$wrap', function $$wrap(pre, post) { + var self = this; + + + self.$unshift(pre); + return self.$push(post); + }, 2); + + $def(self, '$fragment', function $$fragment(str, $kwargs) { + var loc, self = this, $ret_or_1 = nil; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + loc = $kwargs.$$smap["loc"]; + if (loc == null) loc = true; + return $$$($$('Opal'), 'Fragment').$new(str, self.$scope(), ($truthy(($ret_or_1 = loc)) ? (self.sexp) : ($ret_or_1))); + }, -2); + + $def(self, '$error', function $$error(msg) { + var self = this; + + return self.compiler.$error(msg) + }, 1); + + $def(self, '$scope', function $$scope() { + var self = this; + + return self.compiler.$scope() + }, 0); + + $def(self, '$top_scope', function $$top_scope() { + var self = this; + + return self.compiler.$top_scope() + }, 0); + + $def(self, '$s', function $$s(type, $a) { + var $post_args, children, self = this; + + + + $post_args = Opal.slice.call(arguments, 1); + + children = $post_args;; + return $$$($$$($Opal, 'AST'), 'Node').$new(type, children, $hash2(["location"], {"location": self.sexp.$loc()})); + }, -2); + + $def(self, '$expr?', function $Base_expr$ques$7() { + var self = this; + + return self.level['$==']("expr") + }, 0); + + $def(self, '$recv?', function $Base_recv$ques$8() { + var self = this; + + return self.level['$==']("recv") + }, 0); + + $def(self, '$stmt?', function $Base_stmt$ques$9() { + var self = this; + + return self.level['$==']("stmt") + }, 0); + + $def(self, '$process', function $$process(sexp, level) { + var self = this; + + + + if (level == null) level = "expr";; + return self.compiler.$process(sexp, level); + }, -2); + + $def(self, '$expr', function $$expr(sexp) { + var self = this; + + return self.compiler.$process(sexp, "expr") + }, 1); + + $def(self, '$recv', function $$recv(sexp) { + var self = this; + + return self.compiler.$process(sexp, "recv") + }, 1); + + $def(self, '$stmt', function $$stmt(sexp) { + var self = this; + + return self.compiler.$process(sexp, "stmt") + }, 1); + + $def(self, '$expr_or_nil', function $$expr_or_nil(sexp) { + var self = this; + + if ($truthy(sexp)) { + return self.$expr(sexp) + } else { + return "nil" + } + }, 1); + + $def(self, '$add_local', function $$add_local(name) { + var self = this; + + return self.$scope().$add_scope_local(name.$to_sym()) + }, 1); + + $def(self, '$add_ivar', function $$add_ivar(name) { + var self = this; + + return self.$scope().$add_scope_ivar(name) + }, 1); + + $def(self, '$add_gvar', function $$add_gvar(name) { + var self = this; + + return self.$scope().$add_scope_gvar(name) + }, 1); + + $def(self, '$add_temp', function $$add_temp(temp) { + var self = this; + + return self.$scope().$add_scope_temp(temp) + }, 1); + + $def(self, '$helper', function $$helper(name) { + var self = this; + + return self.compiler.$helper(name) + }, 1); + + $def(self, '$with_temp', function $$with_temp() { + var block = $$with_temp.$$p || nil, self = this; + + delete $$with_temp.$$p; + + ; + return $send(self.compiler, 'with_temp', [], block.$to_proc()); + }, 0); + + $def(self, '$in_while?', function $Base_in_while$ques$10() { + var self = this; + + return self.compiler['$in_while?']() + }, 0); + + $def(self, '$while_loop', function $$while_loop() { + var self = this; + + return self.compiler.$instance_variable_get("@while_loop") + }, 0); + + $def(self, '$has_rescue_else?', function $Base_has_rescue_else$ques$11() { + var self = this; + + return self.$scope()['$has_rescue_else?']() + }, 0); + + $def(self, '$in_ensure', function $$in_ensure() { + var block = $$in_ensure.$$p || nil, self = this; + + delete $$in_ensure.$$p; + + ; + return $send(self.$scope(), 'in_ensure', [], block.$to_proc()); + }, 0); + + $def(self, '$in_ensure?', function $Base_in_ensure$ques$12() { + var self = this; + + return self.$scope()['$in_ensure?']() + }, 0); + + $def(self, '$in_resbody', function $$in_resbody() { + var block = $$in_resbody.$$p || nil, self = this; + + delete $$in_resbody.$$p; + + ; + return $send(self.$scope(), 'in_resbody', [], block.$to_proc()); + }, 0); + + $def(self, '$in_resbody?', function $Base_in_resbody$ques$13() { + var self = this; + + return self.$scope()['$in_resbody?']() + }, 0); + + $def(self, '$in_rescue', function $$in_rescue(node) { + var block = $$in_rescue.$$p || nil, self = this; + + delete $$in_rescue.$$p; + + ; + return $send(self.$scope(), 'in_rescue', [node], block.$to_proc()); + }, 1); + + $def(self, '$class_variable_owner_nesting_level', function $$class_variable_owner_nesting_level() { + var $a, self = this, cvar_scope = nil, nesting_level = nil, $ret_or_1 = nil; + + + cvar_scope = self.$scope(); + nesting_level = 0; + while ($truthy(($truthy(($ret_or_1 = cvar_scope)) ? (cvar_scope['$class_scope?']()['$!']()) : ($ret_or_1)))) { + + if ($truthy(cvar_scope['$sclass?']())) { + nesting_level = $rb_plus(nesting_level, 1) + }; + cvar_scope = cvar_scope.$parent(); + }; + return nesting_level; + }, 0); + + $def(self, '$class_variable_owner', function $$class_variable_owner() { + var self = this; + + if ($truthy(self.$scope())) { + return "" + (self.$scope().$nesting()) + "[" + (self.$class_variable_owner_nesting_level()) + "]" + } else { + return "Opal.Object" + } + }, 0); + + $def(self, '$comments', function $$comments() { + var self = this; + + return self.$compiler().$comments()['$[]'](self.sexp.$loc()) + }, 0); + return $def(self, '$source_location', function $$source_location() { + var self = this, file = nil, line = nil; + + + file = self.sexp.$loc().$expression().$source_buffer().$name(); + if ($truthy(file['$start_with?']("corelib/"))) { + file = "" + }; + if ($truthy(file['$end_with?'](".js"))) { + file = "" + }; + line = self.sexp.$loc().$line(); + return "['" + (file) + "', " + (line) + "]"; + }, 0); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/literal"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $eqeq = Opal.eqeq, $def = Opal.def, $defs = Opal.defs, $truthy = Opal.truthy, $const_set = Opal.const_set, $hash2 = Opal.hash2, $regexp = Opal.regexp, $send = Opal.send, $rb_plus = Opal.rb_plus, $lambda = Opal.lambda, $rb_le = Opal.rb_le, $rb_minus = Opal.rb_minus, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $eqeqeq = Opal.eqeqeq, $slice = Opal.slice, $Opal = Opal.Opal, $rb_gt = Opal.rb_gt; + + Opal.add_stubs('require,handle,==,type,push,self,scope,to_s,children,value,recv?,wrap,freeze,join,keys,gsub,even?,length,last_match,+,chop,[],inspect,to_i,to_utf16,translate_escape_chars,valid_encoding?,helper,upcase,<=,call,-,>>,&,attr_accessor,extract_flags_and_value,select!,flags,=~,warning,compiler,compile_static_regexp,compile_dynamic_regexp,each_with_index,zero?,expr,any?,===,new,map,to_proc,flags=,empty?,s,single_line?,value=,include?,is_a?,updated,delete,source,expression,loc,private,>,!=,!,regexp,first,each,compile_inline?,compile_inline,compile_range_initialize,start,finish,raise,expr_or_nil,numerator,denominator,real,imag'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'ValueNode'); + + + + self.$handle("true", "false", "self", "nil"); + + $def(self, '$compile', function $$compile() { + var self = this; + + if ($eqeq(self.$type(), "self")) { + return self.$push(self.$scope().$self()) + } else { + return self.$push(self.$type().$to_s()) + } + }, 0); + return $defs(self, '$truthy_optimize?', function $ValueNode_truthy_optimize$ques$1() { + + return true + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'NumericNode'); + + + + self.$handle("int", "float"); + self.$children("value"); + + $def(self, '$compile', function $$compile() { + var self = this; + + + self.$push(self.$value().$to_s()); + if ($truthy(self['$recv?']())) { + return self.$wrap("(", ")") + } else { + return nil + }; + }, 0); + return $defs(self, '$truthy_optimize?', function $NumericNode_truthy_optimize$ques$2() { + + return true + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'StringNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$handle("str"); + self.$children("value"); + $const_set($nesting[0], 'ESCAPE_CHARS', $hash2(["a", "e"], {"a": "\\u0007", "e": "\\u001b"}).$freeze()); + $const_set($nesting[0], 'ESCAPE_REGEX', $regexp(["(\\\\+)([", $$('ESCAPE_CHARS').$keys().$join(""), "])"]).$freeze()); + + $def(self, '$translate_escape_chars', function $$translate_escape_chars(inspect_string) { + + return $send(inspect_string, 'gsub', [$$('ESCAPE_REGEX')], function $$3(original){ + + + if (original == null) original = nil;; + if ($truthy($$('Regexp').$last_match(1).$length()['$even?']())) { + return original + } else { + return $rb_plus($$('Regexp').$last_match(1).$chop(), $$('ESCAPE_CHARS')['$[]']($$('Regexp').$last_match(2))) + };}, 1) + }, 1); + + $def(self, '$compile', function $$compile() { + var self = this, string_value = nil, sanitized_value = nil; + + + string_value = self.$value(); + sanitized_value = $send(string_value.$inspect(), 'gsub', [/\\u\{([0-9a-f]+)\}/], function $$4(){var self = $$4.$$s == null ? this : $$4.$$s, code_point = nil; + + + code_point = $$('Regexp').$last_match(1).$to_i(16); + return self.$to_utf16(code_point);}, {$$arity: 0, $$s: self}); + self.$push(self.$translate_escape_chars(sanitized_value)); + nil; + if ($truthy(self.$value()['$valid_encoding?']())) { + return nil + } else { + + self.$helper("binary"); + return self.$wrap("$binary(", ")"); + }; + }, 0); + return $def(self, '$to_utf16', function $$to_utf16(code_point) { + var ten_bits = nil, u = nil, lead_surrogate = nil, tail_surrogate = nil; + + + ten_bits = 1023; + u = $lambda(function $$5(code_unit){ + + + if (code_unit == null) code_unit = nil;; + return $rb_plus("\\u", code_unit.$to_s(16).$upcase());}, 1); + if ($truthy($rb_le(code_point, 65535))) { + return u.$call(code_point) + }; + code_point = $rb_minus(code_point, 65536); + lead_surrogate = $rb_plus(55296, code_point['$>>'](10)); + tail_surrogate = $rb_plus(56320, code_point['$&'](ten_bits)); + return $rb_plus(u.$call(lead_surrogate), u.$call(tail_surrogate)); + }, 1); + })($nesting[0], $$('Base'), $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'SymbolNode'); + + + + self.$handle("sym"); + self.$children("value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$push(self.$value().$to_s().$inspect()) + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'RegexpNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.sexp = nil; + + self.$handle("regexp"); + self.$attr_accessor("value", "flags"); + $const_set($nesting[0], 'SUPPORTED_FLAGS', /[gimuy]/.$freeze()); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + return self.$extract_flags_and_value(); + }, -1); + + $def(self, '$compile', function $$compile() { + var self = this; + + + $send(self.$flags(), 'select!', [], function $$6(flag){var self = $$6.$$s == null ? this : $$6.$$s; + + + + if (flag == null) flag = nil;; + if ($truthy($$('SUPPORTED_FLAGS')['$=~'](flag))) { + return true + } else { + + self.$compiler().$warning("Skipping the '" + (flag) + "' Regexp flag as it's not widely supported by JavaScript vendors."); + return false; + };}, {$$arity: 1, $$s: self}); + if ($eqeq(self.$value().$type(), "str")) { + return self.$compile_static_regexp() + } else { + return self.$compile_dynamic_regexp() + }; + }, 0); + + $def(self, '$compile_dynamic_regexp', function $$compile_dynamic_regexp() { + var self = this; + + + self.$helper("regexp"); + self.$push("$regexp(["); + $send(self.$value().$children(), 'each_with_index', [], function $$7(v, index){var self = $$7.$$s == null ? this : $$7.$$s; + + + + if (v == null) v = nil;; + + if (index == null) index = nil;; + if (!$truthy(index['$zero?']())) { + self.$push(", ") + }; + return self.$push(self.$expr(v));}, {$$arity: 2, $$s: self}); + self.$push("]"); + if ($truthy(self.$flags()['$any?']())) { + self.$push(", '" + (self.$flags().$join()) + "'") + }; + return self.$push(")"); + }, 0); + + $def(self, '$compile_static_regexp', function $$compile_static_regexp() { + var self = this, value = nil, $ret_or_1 = nil; + + + value = self.$value().$children()['$[]'](0); + if ($eqeqeq("", ($ret_or_1 = value))) { + return self.$push("/(?:)/") + } else { + return self.$push("" + ($$('Regexp').$new(value).$inspect()) + (self.$flags().$join())) + }; + }, 0); + + $def(self, '$extract_flags_and_value', function $$extract_flags_and_value() { + var $a, $b, self = this, values = nil, flags_sexp = nil, $writer = nil, parts = nil; + + + $a = [].concat($to_a(self.$children())), $b = $a.length - 1, $b = ($b < 0) ? 0 : $b, (values = $slice.call($a, 0, $b)), (flags_sexp = ($a[$b] == null ? nil : $a[$b])), $a; + + $writer = [$send(flags_sexp.$children(), 'map', [], "to_s".$to_proc())]; + $send(self, 'flags=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [($truthy(values['$empty?']()) ? (self.$s("str", "")) : ($truthy(self['$single_line?'](values)) ? (values['$[]'](0)) : ($send(self, 's', ["dstr"].concat($to_a(values))))))]; + $send(self, 'value=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy(self.$flags()['$include?']("x"))) { + + parts = $send(self.$value().$children(), 'map', [], function $$8(part){var self = $$8.$$s == null ? this : $$8.$$s, trimmed_value = nil; + + + + if (part == null) part = nil;; + if (($truthy(part['$is_a?']($$$($$$($Opal, 'AST'), 'Node'))) && ($eqeq(part.$type(), "str")))) { + + trimmed_value = part.$children()['$[]'](0).$gsub(/^\s*\#.*/, "").$gsub(/\s/, ""); + return self.$s("str", trimmed_value); + } else { + return part + };}, {$$arity: 1, $$s: self}); + + $writer = [self.$value().$updated(nil, parts)]; + $send(self, 'value=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.$flags().$delete("x"); + }; + if ($eqeq(self.$value().$type(), "str")) { + + $writer = [self.$s("str", self.$value().$children()['$[]'](0).$gsub("\\A", "^").$gsub("\\z", "$"))]; + $send(self, 'value=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else { + return nil + }; + }, 0); + + $def(self, '$raw_value', function $$raw_value() { + var self = this, $writer = nil; + + + $writer = [self.sexp.$loc().$expression().$source()]; + $send(self, 'value=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }, 0); + self.$private(); + return $def(self, '$single_line?', function $RegexpNode_single_line$ques$9(values) { + var value = nil, $ret_or_1 = nil; + + + if ($truthy($rb_gt(values.$length(), 1))) { + return false + }; + value = values['$[]'](0); + if ($truthy(($ret_or_1 = value.$type()['$!=']("str")))) { + return $ret_or_1 + } else { + return value.$children()['$[]'](0)['$include?']("\n")['$!']() + }; + }, 1); + })($nesting[0], $$('Base'), $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'MatchCurrentLineNode'); + + + + self.$handle("match_current_line"); + self.$children("regexp"); + return $def(self, '$compile', function $$compile() { + var self = this, gvar_sexp = nil, send_node = nil; + + + gvar_sexp = self.$s("gvar", "$_"); + send_node = self.$s("send", gvar_sexp, "=~", self.$regexp()); + return self.$push(self.$expr(send_node)); + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'DynamicStringNode'); + + + + self.$handle("dstr"); + return $def(self, '$compile', function $$compile() { + var self = this, skip_empty = nil; + + + if (($truthy($rb_gt(self.$children().$length(), 1)) && ($eqeq(self.$children().$first().$type(), "str")))) { + skip_empty = true + } else { + self.$push("\"\"") + }; + return $send(self.$children(), 'each', [], function $$10(part){var self = $$10.$$s == null ? this : $$10.$$s; + + + + if (part == null) part = nil;; + if ($truthy(skip_empty)) { + skip_empty = false + } else { + self.$push(" + ") + }; + if ($eqeq(part.$type(), "str")) { + self.$push(self.$expr(part)) + } else { + self.$push("(", self.$expr(part), ")") + }; + if ($truthy(self['$recv?']())) { + return self.$wrap("(", ")") + } else { + return nil + };}, {$$arity: 1, $$s: self}); + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'DynamicSymbolNode'); + + + return self.$handle("dsym") + })($nesting[0], $$('DynamicStringNode')); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'RangeNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$children("start", "finish"); + $const_set($nesting[0], 'SIMPLE_CHILDREN_TYPES', ["int", "float", "str", "sym"].$freeze()); + + $def(self, '$compile', function $$compile() { + var self = this; + + if ($truthy(self['$compile_inline?']())) { + + self.$helper("range"); + return self.$compile_inline(); + } else { + return self.$compile_range_initialize() + } + }, 0); + + $def(self, '$compile_inline?', function $RangeNode_compile_inline$ques$11() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.$start()['$!']())) ? ($ret_or_2) : (($truthy(($ret_or_3 = self.$start().$type())) ? ($$('SIMPLE_CHILDREN_TYPES')['$include?'](self.$start().$type())) : ($ret_or_3))))))) { + + if ($truthy(($ret_or_2 = self.$finish()['$!']()))) { + return $ret_or_2 + } else { + + if ($truthy(($ret_or_3 = self.$finish().$type()))) { + return $$('SIMPLE_CHILDREN_TYPES')['$include?'](self.$finish().$type()) + } else { + return $ret_or_3 + }; + }; + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$compile_inline', function $$compile_inline() { + var self = this; + + return self.$raise($$('NotImplementedError')) + }, 0); + return $def(self, '$compile_range_initialize', function $$compile_range_initialize() { + var self = this; + + return self.$raise($$('NotImplementedError')) + }, 0); + })($nesting[0], $$('Base'), $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'InclusiveRangeNode'); + + + + self.$handle("irange"); + + $def(self, '$compile_inline', function $$compile_inline() { + var self = this; + + return self.$push("$range(", self.$expr_or_nil(self.$start()), ", ", self.$expr_or_nil(self.$finish()), ", false)") + }, 0); + return $def(self, '$compile_range_initialize', function $$compile_range_initialize() { + var self = this; + + return self.$push("Opal.Range.$new(", self.$expr_or_nil(self.$start()), ", ", self.$expr_or_nil(self.$finish()), ", false)") + }, 0); + })($nesting[0], $$('RangeNode')); + (function($base, $super) { + var self = $klass($base, $super, 'ExclusiveRangeNode'); + + + + self.$handle("erange"); + + $def(self, '$compile_inline', function $$compile_inline() { + var self = this; + + return self.$push("$range(", self.$expr_or_nil(self.$start()), ", ", self.$expr_or_nil(self.$finish()), ", true)") + }, 0); + return $def(self, '$compile_range_initialize', function $$compile_range_initialize() { + var self = this; + + return self.$push("Opal.Range.$new(", self.$expr_or_nil(self.$start()), ",", self.$expr_or_nil(self.$finish()), ", true)") + }, 0); + })($nesting[0], $$('RangeNode')); + (function($base, $super) { + var self = $klass($base, $super, 'RationalNode'); + + + + self.$handle("rational"); + self.$children("value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$push("Opal.Rational.$new(" + (self.$value().$numerator()) + ", " + (self.$value().$denominator()) + ")") + }, 0); + })($nesting[0], $$('Base')); + return (function($base, $super) { + var self = $klass($base, $super, 'ComplexNode'); + + + + self.$handle("complex"); + self.$children("value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$push("Opal.Complex.$new(" + (self.$value().$real()) + ", " + (self.$value().$imag()) + ")") + }, 0); + })($nesting[0], $$('Base')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/variables"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $send = Opal.send, $range = Opal.range, $eqeqeq = Opal.eqeqeq, $send2 = Opal.send2, $find_super = Opal.find_super; + + Opal.add_stubs('require,handle,children,irb?,compiler,top?,scope,using_irb?,push,to_s,var_name,with_temp,property,wrap,add_local,expr,value,expr?,recv?,[],name,add_ivar,self,helper,add_gvar,===,handle_global_match,handle_post_match,handle_pre_match,raise,index,stmt?,class_variable_owner,inspect'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'LocalVariableNode'); + + + + self.$handle("lvar"); + self.$children("var_name"); + + $def(self, '$using_irb?', function $LocalVariableNode_using_irb$ques$1() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$compiler()['$irb?']()))) { + return self.$scope()['$top?']() + } else { + return $ret_or_1 + } + }, 0); + return $def(self, '$compile', function $$compile() { + var self = this; + + + if (!$truthy(self['$using_irb?']())) { + return self.$push(self.$var_name().$to_s()) + }; + return $send(self, 'with_temp', [], function $$2(tmp){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (tmp == null) tmp = nil;; + self.$push(self.$property(self.$var_name().$to_s())); + return self.$wrap("((" + (tmp) + " = Opal.irb_vars", ") == null ? nil : " + (tmp) + ")");}, {$$arity: 1, $$s: self}); + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'LocalAssignNode'); + + + + self.$handle("lvasgn"); + self.$children("var_name", "value"); + + $def(self, '$using_irb?', function $LocalAssignNode_using_irb$ques$3() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$compiler()['$irb?']()))) { + return self.$scope()['$top?']() + } else { + return $ret_or_1 + } + }, 0); + return $def(self, '$compile', function $$compile() { + var self = this; + + + if ($truthy(self['$using_irb?']())) { + self.$push("Opal.irb_vars" + (self.$property(self.$var_name().$to_s())) + " = ") + } else { + + self.$add_local(self.$var_name().$to_s()); + self.$push("" + (self.$var_name()) + " = "); + }; + self.$push(self.$expr(self.$value())); + if ((($truthy(self['$recv?']()) || ($truthy(self['$expr?']()))) && ($truthy(self.$value())))) { + return self.$wrap("(", ")") + } else { + return nil + }; + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'LocalDeclareNode'); + + + + self.$handle("lvdeclare"); + self.$children("var_name"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$add_local(self.$var_name().$to_s()); + return nil; + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'InstanceVariableNode'); + + + + self.$handle("ivar"); + self.$children("name"); + + $def(self, '$var_name', function $$var_name() { + var self = this; + + return self.$name().$to_s()['$[]']($range(1, -1, false)) + }, 0); + return $def(self, '$compile', function $$compile() { + var self = this, name = nil; + + + name = self.$property(self.$var_name()); + self.$add_ivar(name); + return self.$push("" + (self.$scope().$self()) + (name)); + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'InstanceAssignNode'); + + + + self.$handle("ivasgn"); + self.$children("name", "value"); + + $def(self, '$var_name', function $$var_name() { + var self = this; + + return self.$name().$to_s()['$[]']($range(1, -1, false)) + }, 0); + return $def(self, '$compile', function $$compile() { + var self = this, name = nil; + + + name = self.$property(self.$var_name()); + self.$push("" + (self.$scope().$self()) + (name) + " = "); + self.$push(self.$expr(self.$value())); + if ((($truthy(self['$recv?']()) || ($truthy(self['$expr?']()))) && ($truthy(self.$value())))) { + return self.$wrap("(", ")") + } else { + return nil + }; + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'GlobalVariableNode'); + + + + self.$handle("gvar"); + self.$children("name"); + + $def(self, '$var_name', function $$var_name() { + var self = this; + + return self.$name().$to_s()['$[]']($range(1, -1, false)) + }, 0); + return $def(self, '$compile', function $$compile() { + var self = this, name = nil; + + + self.$helper("gvars"); + name = self.$property(self.$var_name()); + self.$add_gvar(name); + return self.$push("$gvars" + (name)); + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'BackRefNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$handle("back_ref"); + + $def(self, '$compile', function $$compile() { + var $yield = $$compile.$$p || nil, self = this, $ret_or_1 = nil; + + delete $$compile.$$p; + + self.$helper("gvars"); + if ($eqeqeq("&", ($ret_or_1 = self.$var_name()))) { + return self.$handle_global_match() + } else if ($eqeqeq("'", $ret_or_1)) { + return self.$handle_post_match() + } else if ($eqeqeq("`", $ret_or_1)) { + return self.$handle_pre_match() + } else if ($eqeqeq("+", $ret_or_1)) { + return $send2(self, $find_super(self, 'compile', $$compile, false, true), 'compile', [], $yield) + } else { + return self.$raise($$('NotImplementedError')) + }; + }, 0); + + $def(self, '$handle_global_match', function $$handle_global_match() { + var self = this; + + return $send(self, 'with_temp', [], function $$4(tmp){var self = $$4.$$s == null ? this : $$4.$$s; + + + + if (tmp == null) tmp = nil;; + return self.$push("((" + (tmp) + " = $gvars['~']) === nil ? nil : " + (tmp) + "['$[]'](0))");}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$handle_pre_match', function $$handle_pre_match() { + var self = this; + + return $send(self, 'with_temp', [], function $$5(tmp){var self = $$5.$$s == null ? this : $$5.$$s; + + + + if (tmp == null) tmp = nil;; + return self.$push("((" + (tmp) + " = $gvars['~']) === nil ? nil : " + (tmp) + ".$pre_match())");}, {$$arity: 1, $$s: self}) + }, 0); + return $def(self, '$handle_post_match', function $$handle_post_match() { + var self = this; + + return $send(self, 'with_temp', [], function $$6(tmp){var self = $$6.$$s == null ? this : $$6.$$s; + + + + if (tmp == null) tmp = nil;; + return self.$push("((" + (tmp) + " = $gvars['~']) === nil ? nil : " + (tmp) + ".$post_match())");}, {$$arity: 1, $$s: self}) + }, 0); + })($nesting[0], $$('GlobalVariableNode'), $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'GlobalAssignNode'); + + + + self.$handle("gvasgn"); + self.$children("name", "value"); + + $def(self, '$var_name', function $$var_name() { + var self = this; + + return self.$name().$to_s()['$[]']($range(1, -1, false)) + }, 0); + return $def(self, '$compile', function $$compile() { + var self = this, name = nil; + + + self.$helper("gvars"); + name = self.$property(self.$var_name()); + self.$push("$gvars" + (name) + " = "); + self.$push(self.$expr(self.$value())); + if ((($truthy(self['$recv?']()) || ($truthy(self['$expr?']()))) && ($truthy(self.$value())))) { + return self.$wrap("(", ")") + } else { + return nil + }; + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'NthrefNode'); + + + + self.$handle("nth_ref"); + self.$children("index"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$helper("gvars"); + return $send(self, 'with_temp', [], function $$7(tmp){var self = $$7.$$s == null ? this : $$7.$$s; + + + + if (tmp == null) tmp = nil;; + return self.$push("((" + (tmp) + " = $gvars['~']) === nil ? nil : " + (tmp) + "['$[]'](" + (self.$index()) + "))");}, {$$arity: 1, $$s: self}); + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'ClassVariableNode'); + + + + self.$handle("cvar"); + self.$children("name"); + return $def(self, '$compile', function $$compile() { + var self = this, tolerant = nil; + + + self.$helper("class_variable_get"); + tolerant = false; + if ($truthy(self['$stmt?']())) { + tolerant = true + }; + return self.$push("$class_variable_get(" + (self.$class_variable_owner()) + ", '" + (self.$name()) + "', " + (tolerant.$inspect()) + ")"); + }, 0); + })($nesting[0], $$('Base')); + return (function($base, $super) { + var self = $klass($base, $super, 'ClassVarAssignNode'); + + + + self.$handle("cvasgn"); + self.$children("name", "value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$helper("class_variable_set"); + return self.$push("$class_variable_set(" + (self.$class_variable_owner()) + ", '" + (self.$name()) + "', ", self.$expr(self.$value()), ")"); + }, 0); + })($nesting[0], $$('Base')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/constants"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $def = Opal.def, $const_set = Opal.const_set; + + Opal.add_stubs('require,handle,children,magical_data_const?,push,optimized_access?,helper,name,==,const_scope,s,absolute_const,top_scope,recv,eval?,compiler,relative_access,scope,nil?,eof_content,freeze,include?,base,expr,value,nesting'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ConstNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$handle("const"); + self.$children("const_scope", "name"); + + $def(self, '$compile', function $$compile() { + var self = this; + + if ($truthy(self['$magical_data_const?']())) { + return self.$push("$__END__") + } else if ($truthy(self['$optimized_access?']())) { + + self.$helper("" + (self.$name())); + return self.$push("$" + (self.$name())); + } else if ($eqeq(self.$const_scope(), self.$s("cbase"))) { + return self.$push("" + (self.$top_scope().$absolute_const()) + "('" + (self.$name()) + "')") + } else if ($truthy(self.$const_scope())) { + return self.$push("" + (self.$top_scope().$absolute_const()) + "(", self.$recv(self.$const_scope()), ", '" + (self.$name()) + "')") + } else if ($truthy(self.$compiler()['$eval?']())) { + return self.$push("" + (self.$scope().$relative_access()) + "('" + (self.$name()) + "')") + } else { + return self.$push("" + (self.$scope().$relative_access()) + "('" + (self.$name()) + "')") + } + }, 0); + + $def(self, '$magical_data_const?', function $ConstNode_magical_data_const$ques$1() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.$const_scope()['$nil?']())) ? (self.$name()['$==']("DATA")) : ($ret_or_2))))) { + return self.$compiler().$eof_content() + } else { + return $ret_or_1 + } + }, 0); + $const_set($nesting[0], 'OPTIMIZED_ACCESS_CONSTS', ["BasicObject", "Object", "Module", "Class", "Opal", "Kernel", "NilClass"].$freeze()); + return $def(self, '$optimized_access?', function $ConstNode_optimized_access$ques$2() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$const_scope()['$=='](self.$s("cbase"))))) { + return $$('OPTIMIZED_ACCESS_CONSTS')['$include?'](self.$name()) + } else { + return $ret_or_1 + } + }, 0); + })($nesting[0], $$('Base'), $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'CbaseNode'); + + + + self.$handle("cbase"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$push("'::'") + }, 0); + })($nesting[0], $$('Base')); + return (function($base, $super) { + var self = $klass($base, $super, 'ConstAssignNode'); + + + + self.$handle("casgn"); + self.$children("base", "name", "value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$helper("const_set"); + if ($truthy(self.$base())) { + return self.$push("$const_set(", self.$expr(self.$base()), ", '" + (self.$name()) + "', ", self.$expr(self.$value()), ")") + } else { + return self.$push("$const_set(" + (self.$scope().$nesting()) + "[0], '" + (self.$name()) + "', ", self.$expr(self.$value()), ")") + }; + }, 0); + })($nesting[0], $$('Base')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/break_finder"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $alias = Opal.alias; + + Opal.add_stubs('require'); + + self.$require("opal/rewriter"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'BreakFinder'); + + var $proto = self.$$prototype; + + $proto.found_break = nil; + + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return (self.found_break = false) + }, 0); + + $def(self, '$found_break?', function $BreakFinder_found_break$ques$1() { + var self = this; + + return self.found_break + }, 0); + + $def(self, '$on_break', function $$on_break(node) { + var self = this; + + + self.found_break = true; + return node; + }, 1); + + $def(self, '$stop_lookup', function $$stop_lookup(node) { + + return nil + }, 1); + $alias(self, "on_for", "stop_lookup"); + $alias(self, "on_while", "stop_lookup"); + $alias(self, "on_while_post", "stop_lookup"); + $alias(self, "on_until", "stop_lookup"); + $alias(self, "on_until_post", "stop_lookup"); + return $alias(self, "on_block", "stop_lookup"); + })($nesting[0], $$$($$$($$('Opal'), 'Rewriters'), 'Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/call"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $hash2 = Opal.hash2, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $defs = Opal.defs, $send2 = Opal.send2, $find_super = Opal.find_super, $slice = Opal.slice, $truthy = Opal.truthy, $def = Opal.def, $eqeq = Opal.eqeq, $rb_plus = Opal.rb_plus, $not = Opal.not, $neqeq = Opal.neqeq, $eqeqeq = Opal.eqeqeq, $to_ary = Opal.to_ary, $Opal = Opal.Opal, $range = Opal.range; + + Opal.add_stubs('require,handle,attr_reader,freeze,[]=,-,define_method,to_proc,include?,type,s,handle_special,record_method?,<<,method_calls,compiler,to_sym,meth,using_eval?,compile_eval_var,using_irb?,compile_irb_var,default_compile,private,iter,new,process,found_break?,splat?,!,empty?,collect_refinements_temps,scope,auto_await?,push,await_encountered=,invoke_using_refinement?,compile_using_refined_send,invoke_using_send?,compile_using_send,compile_simple_call_chain,compile_break_catcher,helper,compile_receiver,compile_method_name,compile_arguments,compile_block_pass,compile_refinements,recv,receiver_sexp,expr,arglist,children,map,iter_has_break?,unshift,line,method_jsid,any?,==,recvr,mid_to_jsid,to_s,with_temp,intern,irb?,top?,variable_like?,eval?,scope_variables,nil?,updated,async_await,!=,match?,method,arity,[],each,add_special,call,inline_operators?,fragment,resolve,requires,file,dirname,cleanpath,join,Pathname,self,inspect,length,warning,autoloads,required_trees,force_encoding,encoding,+,handle_block_given_call,def?,mid,module_name,count,accepts_using?,using_refinement,first,refinements_temp,arity_check?,defines_lambda,push_nesting?,nesting,new_temp,scope_locals,source_location,size,last,dynamic_require_severity,handle_part,===,is_a?,expand_path,split,error,each_with_object,pop'); + + self.$require("set"); + self.$require("pathname"); + self.$require("opal/nodes/base"); + self.$require("opal/rewriters/break_finder"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'CallNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.sexp = $proto.compiler = nil; + + self.$handle("send"); + self.$attr_reader("recvr", "meth", "arglist", "iter"); + $const_set($nesting[0], 'SPECIALS', $hash2([], {})); + $const_set($nesting[0], 'OPERATORS', $hash2(["+", "-", "*", "/", "<", "<=", ">", ">="], {"+": "plus", "-": "minus", "*": "times", "/": "divide", "<": "lt", "<=": "le", ">": "gt", ">=": "ge"}).$freeze()); + $defs(self, '$add_special', function $$add_special(name, options) { + var handler = $$add_special.$$p || nil, self = this, $writer = nil; + + delete $$add_special.$$p; + + ; + + if (options == null) options = $hash2([], {});; + + $writer = [name, options]; + $send($$('SPECIALS'), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return $send(self, 'define_method', ["handle_" + (name)], handler.$to_proc()); + }, -2); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $b, $c, $yield = $$initialize.$$p || nil, self = this, args = nil, rest = nil, last_arg = nil; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + $b = [].concat($to_a(self.sexp)), (self.recvr = ($b[0] == null ? nil : $b[0])), (self.meth = ($b[1] == null ? nil : $b[1])), (args = $slice.call($b, 2)), $b; + $b = [].concat($to_a(args)), $c = $b.length - 1, $c = ($c < 0) ? 0 : $c, (rest = $slice.call($b, 0, $c)), (last_arg = ($b[$c] == null ? nil : $b[$c])), $b; + if (($truthy(last_arg) && ($truthy(["iter", "block_pass"]['$include?'](last_arg.$type()))))) { + + self.iter = last_arg; + args = rest; + } else { + self.iter = nil + }; + return (self.arglist = $send(self, 's', ["arglist"].concat($to_a(args)))); + }, -1); + + $def(self, '$compile', function $$compile() {try { + + var self = this; + + return $send(self, 'handle_special', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s; + + + if ($truthy(self['$record_method?']())) { + self.$compiler().$method_calls()['$<<'](self.$meth().$to_sym()) + }; + if ($truthy(self['$using_eval?']())) { + Opal.ret(self.$compile_eval_var()) + }; + if ($truthy(self['$using_irb?']())) { + Opal.ret(self.$compile_irb_var()) + }; + return self.$default_compile();}, {$$arity: 0, $$s: self}) + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 0); + self.$private(); + + $def(self, '$iter_has_break?', function $CallNode_iter_has_break$ques$2() { + var self = this, finder = nil; + + + if (!$truthy(self.$iter())) { + return false + }; + finder = $$$($$$($$('Opal'), 'Rewriters'), 'BreakFinder').$new(); + finder.$process(self.$iter()); + return finder['$found_break?'](); + }, 0); + + $def(self, '$invoke_using_send?', function $CallNode_invoke_using_send$ques$3() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$iter()))) { + return $ret_or_1 + } else { + return self['$splat?']() + } + }, 0); + + $def(self, '$invoke_using_refinement?', function $CallNode_invoke_using_refinement$ques$4() { + var self = this; + + return self.$scope().$scope().$collect_refinements_temps()['$empty?']()['$!']() + }, 0); + + $def(self, '$default_compile', function $$default_compile() { + var self = this, $writer = nil; + + + if ($truthy(self['$auto_await?']())) { + + self.$push("await "); + + $writer = [true]; + $send(self.$scope(), 'await_encountered=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + }; + if ($truthy(self['$invoke_using_refinement?']())) { + self.$compile_using_refined_send() + } else if ($truthy(self['$invoke_using_send?']())) { + self.$compile_using_send() + } else { + self.$compile_simple_call_chain() + }; + return self.$compile_break_catcher(); + }, 0); + + $def(self, '$compile_using_send', function $$compile_using_send() { + var self = this; + + + self.$helper("send"); + self.$push("$send("); + self.$compile_receiver(); + self.$compile_method_name(); + self.$compile_arguments(); + self.$compile_block_pass(); + return self.$push(")"); + }, 0); + + $def(self, '$compile_using_refined_send', function $$compile_using_refined_send() { + var self = this; + + + self.$helper("refined_send"); + self.$push("$refined_send("); + self.$compile_refinements(); + self.$compile_receiver(); + self.$compile_method_name(); + self.$compile_arguments(); + self.$compile_block_pass(); + return self.$push(")"); + }, 0); + + $def(self, '$compile_receiver', function $$compile_receiver() { + var self = this; + + return self.$push(self.$recv(self.$receiver_sexp())) + }, 0); + + $def(self, '$compile_method_name', function $$compile_method_name() { + var self = this; + + return self.$push(", '" + (self.$meth()) + "'") + }, 0); + + $def(self, '$compile_arguments', function $$compile_arguments() { + var self = this; + + + self.$push(", "); + if ($truthy(self['$splat?']())) { + return self.$push(self.$expr(self.$arglist())) + } else if ($truthy(self.$arglist().$children()['$empty?']())) { + return self.$push("[]") + } else { + return self.$push("[", self.$expr(self.$arglist()), "]") + }; + }, 0); + + $def(self, '$compile_block_pass', function $$compile_block_pass() { + var self = this; + + if ($truthy(self.$iter())) { + return self.$push(", ", self.$expr(self.$iter())) + } else { + return nil + } + }, 0); + + $def(self, '$compile_refinements', function $$compile_refinements() { + var self = this, refinements = nil; + + + refinements = $send(self.$scope().$collect_refinements_temps(), 'map', [], function $$5(i){var self = $$5.$$s == null ? this : $$5.$$s; + + + + if (i == null) i = nil;; + return self.$s("js_tmp", i);}, {$$arity: 1, $$s: self}); + return self.$push(self.$expr($send(self, 's', ["array"].concat($to_a(refinements)))), ", "); + }, 0); + + $def(self, '$compile_break_catcher', function $$compile_break_catcher() { + var self = this; + + if ($truthy(self['$iter_has_break?']())) { + + self.$unshift("return "); + self.$unshift("(function(){var $brk = Opal.new_brk(); try {"); + return self.$line("} catch (err) { if (err === $brk) { return err.$v } else { throw err } }})()"); + } else { + return nil + } + }, 0); + + $def(self, '$compile_simple_call_chain', function $$compile_simple_call_chain() { + var self = this; + + return self.$push(self.$recv(self.$receiver_sexp()), self.$method_jsid(), "(", self.$expr(self.$arglist()), ")") + }, 0); + + $def(self, '$splat?', function $CallNode_splat$ques$6() { + var self = this; + + return $send(self.$arglist().$children(), 'any?', [], function $$7(a){ + + + if (a == null) a = nil;; + return a.$type()['$==']("splat");}, 1) + }, 0); + + $def(self, '$receiver_sexp', function $$receiver_sexp() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$recvr()))) { + return $ret_or_1 + } else { + return self.$s("self") + } + }, 0); + + $def(self, '$method_jsid', function $$method_jsid() { + var self = this; + + return self.$mid_to_jsid(self.$meth().$to_s()) + }, 0); + + $def(self, '$record_method?', function $CallNode_record_method$ques$8() { + + return true + }, 0); + + $def(self, '$compile_irb_var', function $$compile_irb_var() { + var self = this; + + return $send(self, 'with_temp', [], function $$9(tmp){var self = $$9.$$s == null ? this : $$9.$$s, lvar = nil, call = nil; + + + + if (tmp == null) tmp = nil;; + lvar = self.$meth(); + call = self.$s("send", self.$s("self"), self.$meth().$intern(), self.$s("arglist")); + return self.$push("((" + (tmp) + " = Opal.irb_vars." + (lvar) + ") == null ? ", self.$expr(call), " : " + (tmp) + ")");}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$compile_eval_var', function $$compile_eval_var() { + var self = this; + + return self.$push(self.$meth().$to_s()) + }, 0); + + $def(self, '$using_irb?', function $CallNode_using_irb$ques$10() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.compiler['$irb?']())) ? (self.$scope()['$top?']()) : ($ret_or_2))))) { + return self['$variable_like?']() + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$using_eval?', function $CallNode_using_eval$ques$11() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.compiler['$eval?']())) ? (self.$scope()['$top?']()) : ($ret_or_2))))) { + return self.compiler.$scope_variables()['$include?'](self.$meth()) + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$variable_like?', function $CallNode_variable_like$ques$12() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.$arglist()['$=='](self.$s("arglist")))) ? (self.$recvr()['$nil?']()) : ($ret_or_2))))) { + return self.$iter()['$nil?']() + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$sexp_with_arglist', function $$sexp_with_arglist() { + var self = this; + + return self.sexp.$updated(nil, [self.$recvr(), self.$meth(), self.$arglist()]) + }, 0); + + $def(self, '$auto_await?', function $CallNode_auto_await$ques$13() { + var self = this, awaited_set = nil, $ret_or_1 = nil, $ret_or_2 = nil; + + + awaited_set = self.$compiler().$async_await(); + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = awaited_set)) ? (awaited_set['$!='](true)) : ($ret_or_2))))) { + return awaited_set['$match?'](self.$meth().$to_s()) + } else { + return $ret_or_1 + }; + }, 0); + + $def(self, '$handle_special', function $$handle_special() { + var compile_default = $$handle_special.$$p || nil, self = this, method = nil; + + delete $$handle_special.$$p; + + ; + if ($truthy($$('SPECIALS')['$include?'](self.$meth()))) { + + method = self.$method("handle_" + (self.$meth())); + if ($eqeq(method.$arity(), 1)) { + return method['$[]'](compile_default) + } else { + return method['$[]']() + }; + } else { + return Opal.yieldX(compile_default, []); + }; + }, 0); + $send($$('OPERATORS'), 'each', [], function $CallNode$14(operator, name){var self = $CallNode$14.$$s == null ? this : $CallNode$14.$$s; + + + + if (operator == null) operator = nil;; + + if (name == null) name = nil;; + return $send(self, 'add_special', [operator.$to_sym()], function $$15(compile_default){var $a, self = $$15.$$s == null ? this : $$15.$$s, lhs = nil, rhs = nil; + + + + if (compile_default == null) compile_default = nil;; + if ($truthy(self['$invoke_using_refinement?']())) { + return compile_default.$call() + } else if ($truthy(self.$compiler()['$inline_operators?']())) { + + if ($truthy(self['$record_method?']())) { + self.$compiler().$method_calls()['$<<'](operator.$to_sym()) + }; + self.$helper("rb_" + (name)); + $a = [self.$expr(self.$recvr()), self.$expr(self.$arglist())], (lhs = $a[0]), (rhs = $a[1]), $a; + self.$push(self.$fragment("$rb_" + (name) + "(")); + self.$push(lhs); + self.$push(self.$fragment(", ")); + self.$push(rhs); + return self.$push(self.$fragment(")")); + } else { + return compile_default.$call() + };}, {$$arity: 1, $$s: self});}, {$$arity: 2, $$s: self}); + $send(self, 'add_special', ["require"], function $CallNode$16(compile_default){var self = $CallNode$16.$$s == null ? this : $CallNode$16.$$s, str = nil; + + + + if (compile_default == null) compile_default = nil;; + str = $$('DependencyResolver').$new(self.$compiler(), self.$arglist().$children()['$[]'](0)).$resolve(); + if (!$truthy(str['$nil?']())) { + self.$compiler().$requires()['$<<'](str) + }; + return compile_default.$call();}, {$$arity: 1, $$s: self}); + $send(self, 'add_special', ["require_relative"], function $CallNode$17(){var self = $CallNode$17.$$s == null ? this : $CallNode$17.$$s, arg = nil, file = nil, dir = nil; + + + arg = self.$arglist().$children()['$[]'](0); + file = self.$compiler().$file(); + if ($eqeq(arg.$type(), "str")) { + + dir = $$('File').$dirname(file); + self.$compiler().$requires()['$<<'](self.$Pathname(dir).$join(arg.$children()['$[]'](0)).$cleanpath().$to_s()); + }; + self.$push(self.$fragment("" + (self.$scope().$self()) + ".$require(" + (file.$inspect()) + "+ '/../' + ")); + self.$push(self.$process(self.$arglist())); + return self.$push(self.$fragment(")"));}, {$$arity: 0, $$s: self}); + $send(self, 'add_special', ["autoload"], function $CallNode$18(compile_default){var self = $CallNode$18.$$s == null ? this : $CallNode$18.$$s, args = nil, str = nil; + + + + if (compile_default == null) compile_default = nil;; + args = self.$arglist().$children(); + if (($eqeq(args.$length(), 2) && ($eqeq(args['$[]'](0).$type(), "sym")))) { + + str = $$('DependencyResolver').$new(self.$compiler(), args['$[]'](1), "ignore").$resolve(); + if ($truthy(str['$nil?']())) { + self.$compiler().$warning("File for autoload of constant '" + (args['$[]'](0).$children()['$[]'](0)) + "' could not be bundled!") + } else { + + self.$compiler().$requires()['$<<'](str); + self.$compiler().$autoloads()['$<<'](str); + }; + }; + return compile_default.$call();}, {$$arity: 1, $$s: self}); + $send(self, 'add_special', ["require_tree"], function $CallNode$19(compile_default){var $a, self = $CallNode$19.$$s == null ? this : $CallNode$19.$$s, first_arg = nil, rest = nil, relative_path = nil, dir = nil, full_path = nil; + + + + if (compile_default == null) compile_default = nil;; + $a = [].concat($to_a(self.$arglist().$children())), (first_arg = ($a[0] == null ? nil : $a[0])), (rest = $slice.call($a, 1)), $a; + if ($eqeq(first_arg.$type(), "str")) { + + relative_path = first_arg.$children()['$[]'](0); + self.$compiler().$required_trees()['$<<'](relative_path); + dir = $$('File').$dirname(self.$compiler().$file()); + full_path = self.$Pathname(dir).$join(relative_path).$cleanpath().$to_s(); + full_path.$force_encoding(relative_path.$encoding()); + first_arg = first_arg.$updated(nil, [full_path]); + }; + self.arglist = self.$arglist().$updated(nil, $rb_plus([first_arg], rest)); + return compile_default.$call();}, {$$arity: 1, $$s: self}); + $send(self, 'add_special', ["block_given?"], function $CallNode$20(){var self = $CallNode$20.$$s == null ? this : $CallNode$20.$$s; + if (self.sexp == null) self.sexp = nil; + + return self.$push(self.$compiler().$handle_block_given_call(self.sexp))}, {$$arity: 0, $$s: self}); + $send(self, 'add_special', ["__callee__"], function $CallNode$21(){var self = $CallNode$21.$$s == null ? this : $CallNode$21.$$s; + + if ($truthy(self.$scope()['$def?']())) { + return self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect())) + } else { + return self.$push(self.$fragment("nil")) + }}, {$$arity: 0, $$s: self}); + $send(self, 'add_special', ["__method__"], function $CallNode$22(){var self = $CallNode$22.$$s == null ? this : $CallNode$22.$$s; + + if ($truthy(self.$scope()['$def?']())) { + return self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect())) + } else { + return self.$push(self.$fragment("nil")) + }}, {$$arity: 0, $$s: self}); + $send(self, 'add_special', ["__dir__"], function $CallNode$23(){var self = $CallNode$23.$$s == null ? this : $CallNode$23.$$s; + + return self.$push($$('File').$dirname($$$($$('Opal'), 'Compiler').$module_name(self.$compiler().$file())).$inspect())}, {$$arity: 0, $$s: self}); + $send(self, 'add_special', ["using"], function $CallNode$24(compile_default){var self = $CallNode$24.$$s == null ? this : $CallNode$24.$$s; + + + + if (compile_default == null) compile_default = nil;; + if (($truthy(self.$scope()['$accepts_using?']()) && ($eqeq(self.$arglist().$children().$count(), 1)))) { + return self.$using_refinement(self.$arglist().$children().$first()) + } else { + return compile_default.$call() + };}, {$$arity: 1, $$s: self}); + + $def(self, '$using_refinement', function $$using_refinement(arg) { + var $a, self = this, prev = nil, curr = nil; + + + $a = [].concat($to_a(self.$scope().$refinements_temp())), (prev = ($a[0] == null ? nil : $a[0])), (curr = ($a[1] == null ? nil : $a[1])), $a; + if ($truthy(prev)) { + return self.$push("(" + (curr) + " = " + (prev) + ".slice(), " + (curr) + ".push(", self.$expr(arg), "), " + (self.$scope().$self()) + ")") + } else { + return self.$push("(" + (curr) + " = [", self.$expr(arg), "], " + (self.$scope().$self()) + ")") + }; + }, 1); + $send(self, 'add_special', ["debugger"], function $CallNode$25(){var self = $CallNode$25.$$s == null ? this : $CallNode$25.$$s; + + return self.$push(self.$fragment("debugger"))}, {$$arity: 0, $$s: self}); + $send(self, 'add_special', ["__OPAL_COMPILER_CONFIG__"], function $CallNode$26(){var self = $CallNode$26.$$s == null ? this : $CallNode$26.$$s; + + return self.$push(self.$fragment("Opal.hash({ arity_check: " + (self.$compiler()['$arity_check?']()) + " })"))}, {$$arity: 0, $$s: self}); + $send(self, 'add_special', ["lambda"], function $CallNode$27(compile_default){var self = $CallNode$27.$$s == null ? this : $CallNode$27.$$s; + + + + if (compile_default == null) compile_default = nil;; + return $send(self.$scope(), 'defines_lambda', [], function $$28(){ + return compile_default.$call()}, 0);}, {$$arity: 1, $$s: self}); + $send(self, 'add_special', ["nesting"], function $CallNode$29(compile_default){var self = $CallNode$29.$$s == null ? this : $CallNode$29.$$s, push_nesting = nil; + + + + if (compile_default == null) compile_default = nil;; + push_nesting = self['$push_nesting?'](); + if ($truthy(push_nesting)) { + self.$push("(Opal.Module.$$nesting = " + (self.$scope().$nesting()) + ", ") + }; + compile_default.$call(); + if ($truthy(push_nesting)) { + return self.$push(")") + } else { + return nil + };}, {$$arity: 1, $$s: self}); + $send(self, 'add_special', ["constants"], function $CallNode$30(compile_default){var self = $CallNode$30.$$s == null ? this : $CallNode$30.$$s, push_nesting = nil; + + + + if (compile_default == null) compile_default = nil;; + push_nesting = self['$push_nesting?'](); + if ($truthy(push_nesting)) { + self.$push("(Opal.Module.$$nesting = " + (self.$scope().$nesting()) + ", ") + }; + compile_default.$call(); + if ($truthy(push_nesting)) { + return self.$push(")") + } else { + return nil + };}, {$$arity: 1, $$s: self}); + $send(self, 'add_special', ["eval"], function $CallNode$31(compile_default){var self = $CallNode$31.$$s == null ? this : $CallNode$31.$$s, temp = nil, scope_variables = nil; + + + + if (compile_default == null) compile_default = nil;; + if (($neqeq(self.$arglist().$children().$length(), 1) || ($not([self.$s("self"), nil]['$include?'](self.$recvr()))))) { + return compile_default.$call(); + }; + self.$scope().$nesting(); + temp = self.$scope().$new_temp(); + scope_variables = $send(self.$scope().$scope_locals(), 'map', [], "to_s".$to_proc()).$inspect(); + self.$push("(" + (temp) + " = ", self.$expr(self.$arglist())); + self.$push(", typeof Opal.compile === 'function' ? eval(Opal.compile(" + (temp)); + self.$push(", {scope_variables: ", scope_variables); + self.$push(", arity_check: " + (self.$compiler()['$arity_check?']()) + ", file: '(eval)', eval: true})) : "); + return self.$push("" + (self.$scope().$self()) + ".$eval(" + (temp) + "))");}, {$$arity: 1, $$s: self}); + $send(self, 'add_special', ["local_variables"], function $CallNode$32(compile_default){var self = $CallNode$32.$$s == null ? this : $CallNode$32.$$s, scope_variables = nil; + + + + if (compile_default == null) compile_default = nil;; + if (!$truthy([self.$s("self"), nil]['$include?'](self.$recvr()))) { + return compile_default.$call(); + }; + scope_variables = $send(self.$scope().$scope_locals(), 'map', [], "to_s".$to_proc()).$inspect(); + return self.$push(scope_variables);}, {$$arity: 1, $$s: self}); + $send(self, 'add_special', ["binding"], function $CallNode$33(compile_default){var self = $CallNode$33.$$s == null ? this : $CallNode$33.$$s; + + + + if (compile_default == null) compile_default = nil;; + if (!$truthy(self.$recvr()['$nil?']())) { + return compile_default.$call(); + }; + self.$scope().$nesting(); + self.$push("Opal.Binding.$new("); + self.$push(" function($code, $value) {"); + self.$push(" if (typeof $value === 'undefined') {"); + self.$push(" return eval($code);"); + self.$push(" }"); + self.$push(" else {"); + self.$push(" return eval($code + ' = $value');"); + self.$push(" }"); + self.$push(" },"); + self.$push(" ", $send(self.$scope().$scope_locals(), 'map', [], "to_s".$to_proc()).$inspect(), ","); + self.$push(" ", self.$scope().$self(), ","); + self.$push(" ", self.$source_location()); + return self.$push(")");}, {$$arity: 1, $$s: self}); + $send(self, 'add_special', ["__await__"], function $CallNode$34(compile_default){var self = $CallNode$34.$$s == null ? this : $CallNode$34.$$s, $writer = nil; + + + + if (compile_default == null) compile_default = nil;; + if ($truthy(self.$compiler().$async_await())) { + + self.$push(self.$fragment("(await (")); + self.$push(self.$process(self.$recvr())); + self.$push(self.$fragment("))")); + + $writer = [true]; + $send(self.$scope(), 'await_encountered=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + } else { + return compile_default.$call() + };}, {$$arity: 1, $$s: self}); + + $def(self, '$push_nesting?', function $CallNode_push_nesting$ques$35() { + var self = this, recv = nil, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + + recv = self.$children().$first(); + if ($truthy(($ret_or_1 = self.$children().$size()['$=='](2)))) { + + if ($truthy(($ret_or_2 = recv['$nil?']()))) { + return $ret_or_2 + } else { + + if ($truthy(($ret_or_3 = recv.$type()['$==']("const")))) { + return recv.$children().$last()['$==']("Module") + } else { + return $ret_or_3 + }; + }; + } else { + return $ret_or_1 + }; + }, 0); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'DependencyResolver'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.compiler = $proto.sexp = $proto.missing_dynamic_require = nil; + + + $def(self, '$initialize', function $$initialize(compiler, sexp, missing_dynamic_require) { + var self = this, $ret_or_1 = nil; + + + + if (missing_dynamic_require == null) missing_dynamic_require = nil;; + self.compiler = compiler; + self.sexp = sexp; + return (self.missing_dynamic_require = ($truthy(($ret_or_1 = missing_dynamic_require)) ? ($ret_or_1) : (self.compiler.$dynamic_require_severity()))); + }, -3); + + $def(self, '$resolve', function $$resolve() { + var self = this; + + return self.$handle_part(self.sexp) + }, 0); + + $def(self, '$handle_part', function $$handle_part(sexp, missing_dynamic_require) { + var $a, $b, self = this, $ret_or_1 = nil, recv = nil, meth = nil, args = nil, parts = nil; + + + + if (missing_dynamic_require == null) missing_dynamic_require = self.missing_dynamic_require;; + if ($truthy(sexp)) { + if ($eqeqeq("str", ($ret_or_1 = sexp.$type()))) { + return sexp.$children()['$[]'](0) + } else if ($eqeqeq("dstr", $ret_or_1)) { + return $send(sexp.$children(), 'map', [], function $$36(i){var self = $$36.$$s == null ? this : $$36.$$s; + + + + if (i == null) i = nil;; + return self.$handle_part(i);}, {$$arity: 1, $$s: self}).$join() + } else if ($eqeqeq("begin", $ret_or_1)) { + if ($eqeq(sexp.$children().$length(), 1)) { + return self.$handle_part(sexp.$children()['$[]'](0)) + } + } else if ($eqeqeq("send", $ret_or_1)) { + + $b = sexp.$children(), $a = $to_ary($b), (recv = ($a[0] == null ? nil : $a[0])), (meth = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $b; + parts = $send(args, 'map', [], function $$37(s){var self = $$37.$$s == null ? this : $$37.$$s; + + + + if (s == null) s = nil;; + return self.$handle_part(s, "ignore");}, {$$arity: 1, $$s: self}); + if ($truthy(parts['$include?'](nil))) { + return nil + }; + if ((($truthy(recv['$is_a?']($$$($$$($Opal, 'AST'), 'Node'))) && ($eqeq(recv.$type(), "const"))) && ($eqeq(recv.$children().$last(), "File")))) { + if ($eqeq(meth, "expand_path")) { + return $send(self, 'expand_path', $to_a(parts)) + } else if ($eqeq(meth, "join")) { + return self.$expand_path(parts.$join("/")) + } else if ($eqeq(meth, "dirname")) { + return self.$expand_path(parts['$[]'](0).$split("/")['$[]']($range(0, -1, true)).$join("/")) + } + } else if ($eqeq(meth, "__dir__")) { + return $$('File').$dirname($$$($$('Opal'), 'Compiler').$module_name(self.compiler.$file())) + }; + } else { + nil + } + }; + if ($eqeqeq("error", ($ret_or_1 = missing_dynamic_require))) { + return self.compiler.$error("Cannot handle dynamic require", self.sexp.$line()) + } else if ($eqeqeq("warning", $ret_or_1)) { + return self.compiler.$warning("Cannot handle dynamic require", self.sexp.$line()) + } else { + return nil + }; + }, -2); + return $def(self, '$expand_path', function $$expand_path(path, base) { + + + + if (base == null) base = "";; + return $send(((("" + (base)) + "/") + (path)).$split("/"), 'each_with_object', [[]], function $$38(part, p){ + + + if (part == null) part = nil;; + + if (p == null) p = nil;; + if ($eqeq(part, "")) { + return nil + } else if ($eqeq(part, "..")) { + return p.$pop() + } else { + return p['$<<'](part) + };}, 2).$join("/"); + }, -2); + })($nesting[0], null, $nesting); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/csend"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $def = Opal.def; + + Opal.add_stubs('require,handle,helper,conditional_send,recv,receiver_sexp,push,compile_method_name,compile_arguments,compile_block_pass'); + + self.$require("opal/nodes/call"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'CSendNode'); + + + + self.$handle("csend"); + return $def(self, '$default_compile', function $$default_compile() { + var self = this; + + + self.$helper("send"); + return $send(self, 'conditional_send', [self.$recv(self.$receiver_sexp())], function $$1(receiver_temp){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (receiver_temp == null) receiver_temp = nil;; + self.$push("$send(", receiver_temp); + self.$compile_method_name(); + self.$compile_arguments(); + self.$compile_block_pass(); + return self.$push(")");}, {$$arity: 1, $$s: self}); + }, 0); + })($nesting[0], $$('CallNode')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/call_special"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $send = Opal.send; + + Opal.add_stubs('require,handle,children,push,recv,recvr,expr,property,value,<<,default_compile,meth,receiver_sexp,method_jsid,compile_arguments,iter,s,lhs,rhs,==,type,first,map,flatten,scan,to_proc,empty?,stmt?,process'); + + self.$require("opal/nodes/base"); + self.$require("opal/nodes/call"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'JsAttrNode'); + + + + self.$handle("jsattr"); + self.$children("recvr", "property"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$push(self.$recv(self.$recvr()), "[", self.$expr(self.$property()), "]") + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'JsAttrAsgnNode'); + + + + self.$handle("jsattrasgn"); + self.$children("recvr", "property", "value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$push(self.$recv(self.$recvr()), "[", self.$expr(self.$property()), "] = ", self.$expr(self.$value())) + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'JsCallNode'); + + var $proto = self.$$prototype; + + $proto.iter = $proto.arglist = nil; + + self.$handle("jscall"); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + if ($truthy(self.iter)) { + self.arglist = self.arglist['$<<'](self.iter) + }; + return (self.iter = nil); + }, -1); + + $def(self, '$compile', function $$compile() { + var self = this; + + return self.$default_compile() + }, 0); + + $def(self, '$method_jsid', function $$method_jsid() { + var self = this; + + return "." + (self.$meth()) + }, 0); + return $def(self, '$compile_using_send', function $$compile_using_send() { + var self = this; + + + self.$push(self.$recv(self.$receiver_sexp()), self.$method_jsid(), ".apply(null"); + self.$compile_arguments(); + if ($truthy(self.$iter())) { + self.$push(".concat(", self.$expr(self.$iter()), ")") + }; + return self.$push(")"); + }, 0); + })($nesting[0], $$('CallNode')); + return (function($base, $super) { + var self = $klass($base, $super, 'Match3Node'); + + var $proto = self.$$prototype; + + $proto.level = nil; + + self.$handle("match_with_lvasgn"); + self.$children("lhs", "rhs"); + return $def(self, '$compile', function $$compile() { + var self = this, sexp = nil, re = nil, names = nil, names_def = nil; + + + sexp = self.$s("send", self.$lhs(), "=~", self.$rhs()); + if (($eqeq(self.$lhs().$type(), "regexp") && ($eqeq(self.$lhs().$children().$first().$type(), "str")))) { + + re = self.$lhs().$children().$first().$children().$first(); + names = $send(re.$scan(/\(\?<([^>]*)>/).$flatten(), 'map', [], "to_sym".$to_proc()); + if (!$truthy(names['$empty?']())) { + + names_def = self.$s("lvasgn", "$m3names", self.$s("if", self.$s("gvar", "$~"), self.$s("send", self.$s("gvar", "$~"), "named_captures"), self.$s("hash"))); + names = $send(names, 'map', [], function $$1(name){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (name == null) name = nil;; + return self.$s("lvasgn", name, self.$s("send", self.$s("lvar", "$m3names"), "[]", self.$s("sym", name)));}, {$$arity: 1, $$s: self}); + if ($truthy(self['$stmt?']())) { + sexp = $send(self, 's', ["begin", sexp, names_def].concat($to_a(names))) + } else { + sexp = $send(self, 's', ["begin", self.$s("lvasgn", "$m3tmp", sexp), names_def].concat($to_a(names)).concat([self.$s("lvar", "$m3tmp")])) + }; + }; + }; + return self.$push(self.$process(sexp, self.level)); + }, 0); + })($nesting[0], $$('Base')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/scope"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $def = Opal.def, $send = Opal.send, $rb_minus = Opal.rb_minus, $truthy = Opal.truthy, $not = Opal.not, $rb_plus = Opal.rb_plus, $eqeq = Opal.eqeq, $hash2 = Opal.hash2; + + Opal.add_stubs('require,attr_accessor,attr_reader,indent,scope,compiler,scope=,-,==,iter?,!,class?,dup,push,map,ivars,gvars,empty?,<<,parser_indent,join,+,fragment,def_in_class?,add_proto_ivar,include?,has_local?,|,scope_locals,reject,start_with?,to_s,has_temp?,pop,next_temp,loop,succ,uses_block!,identify!,valid_name?,mid,compact,parent,name,scope_name,unique_temp,lambda?,def?,type,nil?,rescue_else_sexp,last,class,collect_refinements_temps,add_scope_local,new_refinements_temp,identity,block_name=,add_temp,block_name,line'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ScopeNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.type = $proto.is_lambda = $proto.lambda_definition = $proto.defs = $proto.parent = $proto.temps = $proto.locals = $proto.proto_ivars = $proto.compiler = $proto.ivars = $proto.gvars = $proto.args = $proto.queue = $proto.while_stack = $proto.identity = $proto.uses_block = $proto.rescues = $proto.in_resbody = $proto.in_ensure = $proto.next_retry_id = $proto.refinements_temp = $proto.block_prepared = nil; + + self.$attr_accessor("parent"); + self.$attr_accessor("name"); + self.$attr_accessor("block_name"); + self.$attr_reader("scope_name"); + self.$attr_reader("locals"); + self.$attr_reader("ivars"); + self.$attr_reader("gvars"); + self.$attr_accessor("mid"); + self.$attr_accessor("defs"); + self.$attr_reader("methods"); + self.$attr_accessor("catch_return", "has_break", "has_retry"); + self.$attr_accessor("rescue_else_sexp"); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + self.locals = []; + self.temps = []; + self.args = []; + self.ivars = []; + self.gvars = []; + self.parent = nil; + self.queue = []; + self.unique = "a"; + self.while_stack = []; + self.identity = nil; + self.defs = nil; + self.methods = []; + self.uses_block = false; + self.in_ensure = false; + return (self.proto_ivars = []); + }, -1); + + $def(self, '$in_scope', function $$in_scope() { + var $yield = $$in_scope.$$p || nil, self = this; + + delete $$in_scope.$$p; + return $send(self, 'indent', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s, $writer = nil; + if (self.parent == null) self.parent = nil; + + + self.parent = self.$compiler().$scope(); + + $writer = [self]; + $send(self.$compiler(), 'scope=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + Opal.yield1($yield, self); + + $writer = [self.parent]; + $send(self.$compiler(), 'scope=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 0, $$s: self}) + }, 0); + + $def(self, '$class_scope?', function $ScopeNode_class_scope$ques$2() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.type['$==']("class")))) { + return $ret_or_1 + } else { + return self.type['$==']("module") + } + }, 0); + + $def(self, '$class?', function $ScopeNode_class$ques$3() { + var self = this; + + return self.type['$==']("class") + }, 0); + + $def(self, '$module?', function $ScopeNode_module$ques$4() { + var self = this; + + return self.type['$==']("module") + }, 0); + + $def(self, '$sclass?', function $ScopeNode_sclass$ques$5() { + var self = this; + + return self.type['$==']("sclass") + }, 0); + + $def(self, '$top?', function $ScopeNode_top$ques$6() { + var self = this; + + return self.type['$==']("top") + }, 0); + + $def(self, '$iter?', function $ScopeNode_iter$ques$7() { + var self = this; + + return self.type['$==']("iter") + }, 0); + + $def(self, '$def?', function $ScopeNode_def$ques$8() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.type['$==']("def")))) { + return $ret_or_1 + } else { + return self.type['$==']("defs") + } + }, 0); + + $def(self, '$lambda?', function $ScopeNode_lambda$ques$9() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$iter?']()))) { + return self.is_lambda + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$is_lambda!', function $ScopeNode_is_lambda$excl$10() { + var self = this; + + return (self.is_lambda = true) + }, 0); + + $def(self, '$defines_lambda', function $$defines_lambda() { + var $yield = $$defines_lambda.$$p || nil, self = this; + + delete $$defines_lambda.$$p; + + self.lambda_definition = true; + Opal.yieldX($yield, []); + return (self.lambda_definition = false); + }, 0); + + $def(self, '$lambda_definition?', function $ScopeNode_lambda_definition$ques$11() { + var self = this; + + return self.lambda_definition + }, 0); + + $def(self, '$def_in_class?', function $ScopeNode_def_in_class$ques$12() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = ($truthy(($ret_or_3 = self.defs['$!']())) ? (self.type['$==']("def")) : ($ret_or_3)))) ? (self.parent) : ($ret_or_2))))) { + return self.parent['$class?']() + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$to_vars', function $$to_vars() { + var self = this, vars = nil, iv = nil, gv = nil, indent = nil, str = nil, pvars = nil; + + + vars = self.temps.$dup(); + $send(vars, 'push', $to_a($send(self.locals, 'map', [], function $$13(l){ + + + if (l == null) l = nil;; + return "" + (l) + " = nil";}, 1))); + iv = $send(self.$ivars(), 'map', [], function $$14(ivar){ + + + if (ivar == null) ivar = nil;; + return "if (self" + (ivar) + " == null) self" + (ivar) + " = nil;\n";}, 1); + gv = $send(self.$gvars(), 'map', [], function $$15(gvar){ + + + if (gvar == null) gvar = nil;; + return "if ($gvars" + (gvar) + " == null) $gvars" + (gvar) + " = nil;\n";}, 1); + if (($truthy(self['$class?']()) && ($not(self.proto_ivars['$empty?']())))) { + vars['$<<']("$proto = self.$$prototype") + }; + indent = self.compiler.$parser_indent(); + str = ($truthy(vars['$empty?']()) ? ("") : ("var " + (vars.$join(", ")) + ";\n")); + if (!$truthy(self.$ivars()['$empty?']())) { + str = $rb_plus(str, "" + (indent) + (iv.$join(indent))) + }; + if (!$truthy(self.$gvars()['$empty?']())) { + str = $rb_plus(str, "" + (indent) + (gv.$join(indent))) + }; + if (($truthy(self['$class?']()) && ($not(self.proto_ivars['$empty?']())))) { + + pvars = $send(self.proto_ivars, 'map', [], function $$16(i){ + + + if (i == null) i = nil;; + return "$proto" + (i);}, 1).$join(" = "); + str = "" + (str) + "\n" + (indent) + (pvars) + " = nil;"; + }; + return self.$fragment(str); + }, 0); + + $def(self, '$add_scope_ivar', function $$add_scope_ivar(ivar) { + var self = this; + + if ($truthy(self['$def_in_class?']())) { + return self.parent.$add_proto_ivar(ivar) + } else if ($truthy(self.ivars['$include?'](ivar))) { + return nil + } else { + return self.ivars['$<<'](ivar) + } + }, 1); + + $def(self, '$add_scope_gvar', function $$add_scope_gvar(gvar) { + var self = this; + + if ($truthy(self.gvars['$include?'](gvar))) { + return nil + } else { + return self.gvars['$<<'](gvar) + } + }, 1); + + $def(self, '$add_proto_ivar', function $$add_proto_ivar(ivar) { + var self = this; + + if ($truthy(self.proto_ivars['$include?'](ivar))) { + return nil + } else { + return self.proto_ivars['$<<'](ivar) + } + }, 1); + + $def(self, '$add_arg', function $$add_arg(arg) { + var self = this; + + + if (!$truthy(self.args['$include?'](arg))) { + self.args['$<<'](arg) + }; + return arg; + }, 1); + + $def(self, '$add_scope_local', function $$add_scope_local(local) { + var self = this; + + + if ($truthy(self['$has_local?'](local))) { + return nil + }; + return self.locals['$<<'](local); + }, 1); + + $def(self, '$has_local?', function $ScopeNode_has_local$ques$17(local) { + var self = this; + + + if ((($truthy(self.locals['$include?'](local)) || ($truthy(self.args['$include?'](local)))) || ($truthy(self.temps['$include?'](local))))) { + return true + }; + if (($truthy(self.parent) && ($eqeq(self.type, "iter")))) { + return self.parent['$has_local?'](local) + }; + return false; + }, 1); + + $def(self, '$scope_locals', function $$scope_locals() { + var self = this, locals = nil; + + + locals = self.locals['$|'](self.args)['$|']((($truthy(self.parent) && ($eqeq(self.type, "iter"))) ? (self.parent.$scope_locals()) : ([]))); + return $send(locals, 'reject', [], function $$18(i){ + + + if (i == null) i = nil;; + return i.$to_s()['$start_with?']("$");}, 1); + }, 0); + + $def(self, '$add_scope_temp', function $$add_scope_temp(tmp) { + var self = this; + + + if ($truthy(self['$has_temp?'](tmp))) { + return nil + }; + return self.temps.$push(tmp); + }, 1); + + $def(self, '$has_temp?', function $ScopeNode_has_temp$ques$19(tmp) { + var self = this; + + return self.temps['$include?'](tmp) + }, 1); + + $def(self, '$new_temp', function $$new_temp() { + var self = this, tmp = nil; + + + if (!$truthy(self.queue['$empty?']())) { + return self.queue.$pop() + }; + tmp = self.$next_temp(); + self.temps['$<<'](tmp); + return tmp; + }, 0); + + $def(self, '$next_temp', function $$next_temp() { + var self = this, tmp = nil; + + + tmp = nil; + (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], function $$20(){var self = $$20.$$s == null ? this : $$20.$$s; + if (self.unique == null) self.unique = nil; + + + tmp = "$" + (self.unique); + self.unique = self.unique.$succ(); + if ($truthy(self['$has_local?'](tmp))) { + return nil + } else { + + Opal.brk(nil, $brk) + };}, {$$arity: 0, $$s: self, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + return tmp; + }, 0); + + $def(self, '$queue_temp', function $$queue_temp(name) { + var self = this; + + return self.queue['$<<'](name) + }, 1); + + $def(self, '$push_while', function $$push_while() { + var self = this, info = nil; + + + info = $hash2([], {}); + self.while_stack.$push(info); + return info; + }, 0); + + $def(self, '$pop_while', function $$pop_while() { + var self = this; + + return self.while_stack.$pop() + }, 0); + + $def(self, '$in_while?', function $ScopeNode_in_while$ques$21() { + var self = this; + + return self.while_stack['$empty?']()['$!']() + }, 0); + + $def(self, '$uses_block!', function $ScopeNode_uses_block$excl$22() { + var self = this; + + if (($eqeq(self.type, "iter") && ($truthy(self.parent)))) { + return self.parent['$uses_block!']() + } else { + + self.uses_block = true; + return self['$identify!'](); + } + }, 0); + + $def(self, '$identify!', function $ScopeNode_identify$excl$23(name) { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + + + if (name == null) name = nil;; + if ($truthy(self.identity)) { + return self.identity + }; + if ($truthy(self['$valid_name?'](self.$mid()))) { + self.identity = "$$" + (self.$mid()) + } else { + + name = ($truthy(($ret_or_1 = name)) ? ($ret_or_1) : ([($truthy(($ret_or_2 = self.$parent())) ? (($truthy(($ret_or_3 = self.$parent().$name())) ? ($ret_or_3) : (self.$parent().$scope_name()))) : ($ret_or_2)), self.$mid()].$compact().$join("_"))); + self.identity = self.compiler.$unique_temp(name); + }; + return self.identity; + }, -1); + self.$attr_reader("identity"); + + $def(self, '$find_parent_def', function $$find_parent_def() { + var $a, self = this, scope = nil; + + + scope = self; + while ($truthy((scope = scope.$parent()))) { + if (($truthy(scope['$def?']()) || ($truthy(scope['$lambda?']())))) { + return scope + } + }; + return nil; + }, 0); + + $def(self, '$super_chain', function $$super_chain() { + var $a, self = this, chain = nil, scope = nil, defn = nil, mid = nil; + + + $a = [[], self, "null", "null"], (chain = $a[0]), (scope = $a[1]), (defn = $a[2]), (mid = $a[3]), $a; + while ($truthy(scope)) { + if ($eqeq(scope.$type(), "iter")) { + + chain['$<<'](scope['$identify!']()); + if ($truthy(scope.$parent())) { + scope = scope.$parent() + }; + } else if ($truthy(["def", "defs"]['$include?'](scope.$type()))) { + + defn = scope['$identify!'](); + mid = "'" + (scope.$mid()) + "'"; + break;; + } else { + break; + } + }; + return [chain, defn, mid]; + }, 0); + + $def(self, '$uses_block?', function $ScopeNode_uses_block$ques$24() { + var self = this; + + return self.uses_block + }, 0); + + $def(self, '$has_rescue_else?', function $ScopeNode_has_rescue_else$ques$25() { + var self = this; + + return self.$rescue_else_sexp()['$nil?']()['$!']() + }, 0); + + $def(self, '$in_rescue', function $$in_rescue(node) { + var $yield = $$in_rescue.$$p || nil, self = this, $ret_or_1 = nil, result = nil; + + delete $$in_rescue.$$p; + + self.rescues = ($truthy(($ret_or_1 = self.rescues)) ? ($ret_or_1) : ([])); + self.rescues.$push(node); + result = Opal.yieldX($yield, []); + self.rescues.$pop(); + return result; + }, 1); + + $def(self, '$current_rescue', function $$current_rescue() { + var self = this; + + return self.rescues.$last() + }, 0); + + $def(self, '$in_resbody', function $$in_resbody() { + var $yield = $$in_resbody.$$p || nil, self = this, result = nil; + + delete $$in_resbody.$$p; + + if (!($yield !== nil)) { + return nil + }; + self.in_resbody = true; + result = Opal.yieldX($yield, []); + self.in_resbody = false; + return result; + }, 0); + + $def(self, '$in_resbody?', function $ScopeNode_in_resbody$ques$26() { + var self = this; + + return self.in_resbody + }, 0); + + $def(self, '$in_ensure', function $$in_ensure() { + var $yield = $$in_ensure.$$p || nil, self = this, result = nil; + + delete $$in_ensure.$$p; + + if (!($yield !== nil)) { + return nil + }; + self.in_ensure = true; + result = Opal.yieldX($yield, []); + self.in_ensure = false; + return result; + }, 0); + + $def(self, '$in_ensure?', function $ScopeNode_in_ensure$ques$27() { + var self = this; + + return self.in_ensure + }, 0); + + $def(self, '$gen_retry_id', function $$gen_retry_id() { + var self = this, $ret_or_1 = nil; + + + self.next_retry_id = ($truthy(($ret_or_1 = self.next_retry_id)) ? ($ret_or_1) : ("retry_0")); + return (self.next_retry_id = self.next_retry_id.$succ()); + }, 0); + + $def(self, '$accepts_using?', function $ScopeNode_accepts_using$ques$28() { + var self = this; + + return [$$('TopNode'), $$('ModuleNode'), $$('ClassNode'), $$('IterNode')]['$include?'](self.$class()) + }, 0); + + $def(self, '$collect_refinements_temps', function $$collect_refinements_temps(temps) { + var self = this; + + + + if (temps == null) temps = [];; + if ($truthy(self.refinements_temp)) { + temps['$<<'](self.refinements_temp) + }; + if ($truthy(self.$parent())) { + return self.$parent().$collect_refinements_temps(temps) + }; + return temps; + }, -1); + + $def(self, '$new_refinements_temp', function $$new_refinements_temp() { + var self = this, var$ = nil; + + + var$ = self.$compiler().$unique_temp("$refn"); + self.$add_scope_local(var$); + return var$; + }, 0); + + $def(self, '$refinements_temp', function $$refinements_temp() { + var $a, self = this, prev = nil, curr = nil; + + + $a = [self.refinements_temp, self.$new_refinements_temp()], (prev = $a[0]), (curr = $a[1]), $a; + self.refinements_temp = curr; + return [prev, curr]; + }, 0); + + $def(self, '$self', function $$self() { + var self = this; + + + self.define_self = true; + return "self"; + }, 0); + + $def(self, '$nesting', function $$nesting() { + var self = this; + + + self.define_nesting = true; + return "$nesting"; + }, 0); + + $def(self, '$relative_access', function $$relative_access() { + var self = this; + + + self.define_relative_access = (self.define_nesting = true); + return "$$"; + }, 0); + + $def(self, '$prepare_block', function $$prepare_block(block_name) { + var self = this, scope_name = nil, $writer = nil; + + + + if (block_name == null) block_name = nil;; + scope_name = self.$scope().$identity(); + if ($truthy(block_name)) { + + $writer = [block_name]; + $send(self, 'block_name=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + self.$add_temp("" + (self.$block_name()) + " = " + (scope_name) + ".$$p || nil"); + if ($truthy(self.block_prepared)) { + return nil + } else { + + self.$line("delete " + (scope_name) + ".$$p;"); + return (self.block_prepared = true); + }; + }, -1); + return self.$attr_accessor("await_encountered"); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/module"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_ary = Opal.to_ary, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $def = Opal.def; + + Opal.add_stubs('require,handle,children,name_and_base,helper,nil?,body,stmt?,unshift,line,in_scope,name=,scope,-,compile_body,await_encountered,await_encountered=,parent,+,nesting,private,cid,expr,stmt,returns,compiler,empty_line,add_temp,to_vars'); + + self.$require("opal/nodes/scope"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ModuleNode'); + + var $proto = self.$$prototype; + + $proto.define_nesting = $proto.define_relative_access = nil; + + self.$handle("module"); + self.$children("cid", "body"); + + $def(self, '$compile', function $$compile() { + var $a, $b, self = this, name = nil, base = nil, await_begin = nil, await_end = nil, async = nil, $writer = nil; + + + $b = self.$name_and_base(), $a = $to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (base = ($a[1] == null ? nil : $a[1])), $b; + self.$helper("module"); + if ($truthy(self.$body()['$nil?']())) { + if ($truthy(self['$stmt?']())) { + return self.$unshift("$module(", base, ", '" + (name) + "')") + } else { + return self.$unshift("($module(", base, ", '" + (name) + "'), nil)") + } + } else { + + self.$line(" var self = $module($base, '" + (name) + "');"); + $send(self, 'in_scope', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s, $writer = nil; + + + + $writer = [name]; + $send(self.$scope(), 'name=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self.$compile_body();}, {$$arity: 0, $$s: self}); + if ($truthy(self.$await_encountered())) { + + await_begin = "(await "; + await_end = ")"; + async = "async "; + + $writer = [true]; + $send(self.$parent(), 'await_encountered=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + } else { + $a = ["", "", ""], (await_begin = $a[0]), (await_end = $a[1]), (async = $a[2]), $a + }; + self.$unshift("" + (await_begin) + "(" + (async) + "function($base" + (($truthy(self.define_nesting) ? (", $parent_nesting") : nil)) + ") {"); + return self.$line("})(", base, "" + (($truthy(self.define_nesting) ? ($rb_plus(", ", self.$scope().$nesting())) : nil)) + ")" + (await_end)); + }; + }, 0); + self.$private(); + + $def(self, '$name_and_base', function $$name_and_base() { + var $a, $b, self = this, base = nil, name = nil; + + + $b = self.$cid().$children(), $a = $to_ary($b), (base = ($a[0] == null ? nil : $a[0])), (name = ($a[1] == null ? nil : $a[1])), $b; + if ($truthy(base['$nil?']())) { + return [name, "" + (self.$scope().$nesting()) + "[0]"] + } else { + return [name, self.$expr(base)] + }; + }, 0); + return $def(self, '$compile_body', function $$compile_body() { + var self = this, body_code = nil; + + + body_code = self.$stmt(self.$compiler().$returns(self.$body())); + self.$empty_line(); + if ($truthy(self.define_nesting)) { + self.$add_temp("$nesting = [self].concat($parent_nesting)") + }; + if ($truthy(self.define_relative_access)) { + self.$add_temp("$$ = Opal.$r($nesting)") + }; + self.$line(self.$scope().$to_vars()); + return self.$line(body_code); + }, 0); + })($nesting[0], $$('ScopeNode')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/class"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_ary = Opal.to_ary, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $def = Opal.def; + + Opal.add_stubs('require,handle,children,name_and_base,helper,nil?,body,stmt?,unshift,super_code,line,in_scope,name=,scope,-,compile_body,await_encountered,await_encountered=,parent,+,nesting,sup,expr'); + + self.$require("opal/nodes/module"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ClassNode'); + + var $proto = self.$$prototype; + + $proto.define_nesting = nil; + + self.$handle("class"); + self.$children("cid", "sup", "body"); + + $def(self, '$compile', function $$compile() { + var $a, $b, self = this, name = nil, base = nil, await_begin = nil, await_end = nil, async = nil, $writer = nil; + + + $b = self.$name_and_base(), $a = $to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (base = ($a[1] == null ? nil : $a[1])), $b; + self.$helper("klass"); + if ($truthy(self.$body()['$nil?']())) { + if ($truthy(self['$stmt?']())) { + return self.$unshift("$klass(", base, ", ", self.$super_code(), ", '" + (name) + "')") + } else { + return self.$unshift("($klass(", base, ", ", self.$super_code(), ", '" + (name) + "'), nil)") + } + } else { + + self.$line(" var self = $klass($base, $super, '" + (name) + "');"); + $send(self, 'in_scope', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s, $writer = nil; + + + + $writer = [name]; + $send(self.$scope(), 'name=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self.$compile_body();}, {$$arity: 0, $$s: self}); + if ($truthy(self.$await_encountered())) { + + await_begin = "(await "; + await_end = ")"; + async = "async "; + + $writer = [true]; + $send(self.$parent(), 'await_encountered=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + } else { + $a = ["", "", ""], (await_begin = $a[0]), (await_end = $a[1]), (async = $a[2]), $a + }; + self.$unshift("" + (await_begin) + "(" + (async) + "function($base, $super" + (($truthy(self.define_nesting) ? (", $parent_nesting") : nil)) + ") {"); + return self.$line("})(", base, ", ", self.$super_code(), "" + (($truthy(self.define_nesting) ? ($rb_plus(", ", self.$scope().$nesting())) : nil)) + ")" + (await_end)); + }; + }, 0); + return $def(self, '$super_code', function $$super_code() { + var self = this; + + if ($truthy(self.$sup())) { + return self.$expr(self.$sup()) + } else { + return "null" + } + }, 0); + })($nesting[0], $$('ModuleNode')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/singleton_class"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $def = Opal.def; + + Opal.add_stubs('require,handle,children,push,in_scope,stmt,returns,compiler,body,add_temp,line,to_vars,scope,recv,object,nesting'); + + self.$require("opal/nodes/scope"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'SingletonClassNode'); + + + + self.$handle("sclass"); + self.$children("object", "body"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$push("(function(self, $parent_nesting) {"); + $send(self, 'in_scope', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s, body_stmt = nil; + if (self.define_nesting == null) self.define_nesting = nil; + if (self.define_relative_access == null) self.define_relative_access = nil; + + + body_stmt = self.$stmt(self.$compiler().$returns(self.$body())); + if ($truthy(self.define_nesting)) { + self.$add_temp("$nesting = [self].concat($parent_nesting)") + }; + if ($truthy(self.define_relative_access)) { + self.$add_temp("$$ = Opal.$r($nesting)") + }; + self.$line(self.$scope().$to_vars()); + return self.$line(body_stmt);}, {$$arity: 0, $$s: self}); + return self.$line("})(Opal.get_singleton_class(", self.$recv(self.$object()), "), " + (self.$scope().$nesting()) + ")"); + }, 0); + })($nesting[0], $$('ScopeNode')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/arg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,handle,children,add_arg,scope,name,push,to_s'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ArgNode'); + + + + self.$handle("arg"); + self.$children("name"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$scope().$add_arg(self.$name()); + return self.$push(self.$name().$to_s()); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/arity_check"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $def = Opal.def, $send = Opal.send, $rb_minus = Opal.rb_minus, $truthy = Opal.truthy, $not = Opal.not, $rb_lt = Opal.rb_lt, $rb_plus = Opal.rb_plus, $rb_gt = Opal.rb_gt; + + Opal.add_stubs('require,handle,children,new,args_node,args,optargs,restarg,postargs,kwargs,kwoptargs,kwrestarg,kwnilarg,arity,arity=,scope,-,arity_check?,compiler,empty?,arity_checks,helper,inspect,to_s,mid,line,push,join,compact,size,all_args,!,-@,<,+,>,<<,has_only_optional_kwargs?,any?,negative_arity,positive_arity,select,include?,type,has_required_kwargs?,all?,==,def?,class_scope?,top?,parent,class?,name,module?,identity'); + + self.$require("opal/nodes/base"); + self.$require("opal/rewriters/arguments"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ArityCheckNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.kwargs = $proto.kwoptargs = $proto.kwrestarg = $proto.all_args = $proto.args = $proto.optargs = $proto.restarg = $proto.postargs = $proto.arity_checks = nil; + + self.$handle("arity_check"); + self.$children("args_node"); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $yield = $$initialize.$$p || nil, self = this, arguments$ = nil; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + arguments$ = $$$($$('Rewriters'), 'Arguments').$new(self.$args_node().$children()); + self.args = arguments$.$args(); + self.optargs = arguments$.$optargs(); + self.restarg = arguments$.$restarg(); + self.postargs = arguments$.$postargs(); + self.kwargs = arguments$.$kwargs(); + self.kwoptargs = arguments$.$kwoptargs(); + self.kwrestarg = arguments$.$kwrestarg(); + return (self.kwnilarg = arguments$.$kwnilarg()); + }, -1); + + $def(self, '$compile', function $$compile() { + var self = this, $writer = nil, meth = nil; + + + + $writer = [self.$arity()]; + $send(self.$scope(), 'arity=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if (!$truthy(self.$compiler()['$arity_check?']())) { + return nil + }; + if ($truthy(self.$arity_checks()['$empty?']())) { + return nil + } else { + + self.$helper("ac"); + meth = self.$scope().$mid().$to_s().$inspect(); + self.$line("var $arity = arguments.length;"); + return self.$push(" if (" + (self.$arity_checks().$join(" || ")) + ") { $ac($arity, " + (self.$arity()) + ", this, " + (meth) + "); }"); + }; + }, 0); + + $def(self, '$kwargs', function $$kwargs() { + var self = this; + + return [].concat($to_a(self.kwargs)).concat($to_a(self.kwoptargs)).concat([self.kwrestarg]).$compact() + }, 0); + + $def(self, '$all_args', function $$all_args() { + var self = this, $ret_or_1 = nil; + + return (self.all_args = ($truthy(($ret_or_1 = self.all_args)) ? ($ret_or_1) : ([].concat($to_a(self.args)).concat($to_a(self.optargs)).concat([self.restarg]).concat($to_a(self.postargs)).concat($to_a(self.$kwargs())).$compact()))) + }, 0); + + $def(self, '$arity_checks', function $$arity_checks() { + var $a, self = this, arity = nil, min_arity = nil, max_arity = nil; + + + if ($truthy((($a = self['arity_checks'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { + return self.arity_checks + }; + arity = self.$all_args().$size(); + arity = $rb_minus(arity, self.optargs.$size()); + if ($truthy(self.restarg)) { + arity = $rb_minus(arity, 1) + }; + arity = $rb_minus(arity, self.$kwargs().$size()); + if ((($not(self.optargs['$empty?']()) || ($not(self.$kwargs()['$empty?']()))) || ($truthy(self.restarg)))) { + arity = $rb_minus(arity['$-@'](), 1) + }; + self.arity_checks = []; + if ($truthy($rb_lt(arity, 0))) { + + min_arity = $rb_plus(arity, 1)['$-@'](); + max_arity = self.$all_args().$size(); + if ($truthy($rb_gt(min_arity, 0))) { + self.arity_checks['$<<']("$arity < " + (min_arity)) + }; + if (!$truthy(self.restarg)) { + self.arity_checks['$<<']("$arity > " + (max_arity)) + }; + } else { + self.arity_checks['$<<']("$arity !== " + (arity)) + }; + return self.arity_checks; + }, 0); + + $def(self, '$arity', function $$arity() { + var self = this; + + if ((($truthy(self.restarg) || ($truthy(self.optargs['$any?']()))) || ($truthy(self['$has_only_optional_kwargs?']())))) { + return self.$negative_arity() + } else { + return self.$positive_arity() + } + }, 0); + + $def(self, '$negative_arity', function $$negative_arity() { + var self = this, required_plain_args = nil, result = nil; + + + required_plain_args = $send(self.$all_args(), 'select', [], function $$1(arg){ + + + if (arg == null) arg = nil;; + return ["arg", "mlhs"]['$include?'](arg.$type());}, 1); + result = required_plain_args.$size(); + if ($truthy(self['$has_required_kwargs?']())) { + result = $rb_plus(result, 1) + }; + result = $rb_minus(result['$-@'](), 1); + return result; + }, 0); + + $def(self, '$positive_arity', function $$positive_arity() { + var self = this, result = nil; + + + result = self.$all_args().$size(); + result = $rb_minus(result, self.$kwargs().$size()); + if ($truthy(self.$kwargs()['$any?']())) { + result = $rb_plus(result, 1) + }; + return result; + }, 0); + + $def(self, '$has_only_optional_kwargs?', function $ArityCheckNode_has_only_optional_kwargs$ques$2() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$kwargs()['$any?']()))) { + return $send(self.$kwargs(), 'all?', [], function $$3(arg){ + + + if (arg == null) arg = nil;; + return ["kwoptarg", "kwrestarg"]['$include?'](arg.$type());}, 1) + } else { + return $ret_or_1 + } + }, 0); + return $def(self, '$has_required_kwargs?', function $ArityCheckNode_has_required_kwargs$ques$4() { + var self = this; + + return $send(self.$kwargs(), 'any?', [], function $$5(arg){ + + + if (arg == null) arg = nil;; + return arg.$type()['$==']("kwarg");}, 1) + }, 0); + })($nesting[0], $$('Base'), $nesting); + return (function($base, $super) { + var self = $klass($base, $super, 'IterArityCheckNode'); + + + + self.$handle("iter_arity_check"); + return $def(self, '$compile', function $$compile() { + var $a, self = this, $writer = nil, parent_scope = nil, $ret_or_1 = nil, $ret_or_2 = nil, context = nil, identity = nil; + + + + $writer = [self.$arity()]; + $send(self.$scope(), 'arity=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if (!$truthy(self.$compiler()['$arity_check?']())) { + return nil + }; + if ($truthy(self.$arity_checks()['$empty?']())) { + return nil + } else { + + parent_scope = self.$scope(); + while (!($truthy(($truthy(($ret_or_1 = ($truthy(($ret_or_2 = parent_scope['$def?']())) ? ($ret_or_2) : (parent_scope['$class_scope?']())))) ? ($ret_or_1) : (parent_scope['$top?']()))))) { + parent_scope = parent_scope.$parent() + }; + context = ($truthy(parent_scope['$top?']()) ? ("'
    '") : ($truthy(parent_scope['$def?']()) ? ("'" + (parent_scope.$mid()) + "'") : ($truthy(parent_scope['$class?']()) ? ("''") : ($truthy(parent_scope['$module?']()) ? ("''") : nil)))); + identity = self.$scope().$identity(); + self.$line("if (" + (identity) + ".$$is_lambda || " + (identity) + ".$$define_meth) {"); + self.$line(" var $arity = arguments.length;"); + self.$line(" if (" + (self.$arity_checks().$join(" || ")) + ") { Opal.block_ac($arity, " + (self.$arity()) + ", " + (context) + "); }"); + return self.$line("}"); + }; + }, 0); + })($nesting[0], $$('ArityCheckNode')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/ensure_kwargs_are_kwargs"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,handle,helper,line'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'EnsureKwargsAreKwargs'); + + + + self.$handle("ensure_kwargs_are_kwargs"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$helper("hash2"); + self.$line("if ($kwargs == null) {"); + self.$line(" $kwargs = $hash2([], {});"); + self.$line("} else if (!$kwargs.$$is_hash) {"); + self.$line(" throw Opal.ArgumentError.$new('expected kwargs');"); + return self.$line("}"); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/extract_block_arg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,handle,children,uses_block!,scope,add_arg,name,prepare_block'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ExtractBlockarg'); + + + + self.$handle("extract_blockarg"); + self.$children("name"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$scope()['$uses_block!'](); + self.$scope().$add_arg(self.$name()); + return self.$scope().$prepare_block(self.$name()); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/extract_kwarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,handle,children,[],meta,<<,used_kwargs,scope,add_temp,lvar_name,line,inspect,to_s'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ExtractKwarg'); + + var $proto = self.$$prototype; + + $proto.sexp = nil; + + self.$handle("extract_kwarg"); + self.$children("lvar_name"); + return $def(self, '$compile', function $$compile() { + var self = this, key_name = nil; + + + key_name = self.sexp.$meta()['$[]']("arg_name"); + self.$scope().$used_kwargs()['$<<'](key_name); + self.$add_temp(self.$lvar_name()); + self.$line("if (!Opal.hasOwnProperty.call($kwargs.$$smap, '" + (key_name) + "')) {"); + self.$line(" throw Opal.ArgumentError.$new('missing keyword: " + (key_name) + "');"); + self.$line("}"); + return self.$line("" + (self.$lvar_name()) + " = $kwargs.$$smap[" + (key_name.$to_s().$inspect()) + "];"); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/extract_kwargs"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,handle,add_temp,line'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ExtractKwargs'); + + + + self.$handle("extract_kwargs"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$add_temp("$kwargs"); + return self.$line("$kwargs = Opal.extract_kwargs($post_args)"); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/extract_kwoptarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $eqeq = Opal.eqeq, $def = Opal.def; + + Opal.add_stubs('require,handle,children,[],meta,<<,used_kwargs,scope,add_temp,lvar_name,line,inspect,to_s,==,default_value,expr'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ExtractKwoptarg'); + + var $proto = self.$$prototype; + + $proto.sexp = nil; + + self.$handle("extract_kwoptarg"); + self.$children("lvar_name", "default_value"); + return $def(self, '$compile', function $$compile() { + var self = this, key_name = nil; + + + key_name = self.sexp.$meta()['$[]']("arg_name"); + self.$scope().$used_kwargs()['$<<'](key_name); + self.$add_temp(self.$lvar_name()); + self.$line("" + (self.$lvar_name()) + " = $kwargs.$$smap[" + (key_name.$to_s().$inspect()) + "];"); + if ($eqeq(self.$default_value().$children()['$[]'](1), "undefined")) { + return nil + }; + return self.$line("if (" + (self.$lvar_name()) + " == null) " + (self.$lvar_name()) + " = ", self.$expr(self.$default_value())); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/extract_kwrestarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $send = Opal.send; + + Opal.add_stubs('require,handle,children,name,add_temp,line,used_kwargs,map,scope,join'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ExtractKwrestarg'); + + + + self.$handle("extract_kwrestarg"); + self.$children("name"); + + $def(self, '$compile', function $$compile() { + var self = this, name = nil, $ret_or_1 = nil; + + + name = ($truthy(($ret_or_1 = self.$name())) ? ($ret_or_1) : ("$kw_rest_arg")); + self.$add_temp(name); + return self.$line("" + (name) + " = Opal.kwrestargs($kwargs, " + (self.$used_kwargs()) + ");"); + }, 0); + return $def(self, '$used_kwargs', function $$used_kwargs() { + var self = this, args = nil; + + + args = $send(self.$scope().$used_kwargs(), 'map', [], function $$1(arg_name){ + + + if (arg_name == null) arg_name = nil;; + return "'" + (arg_name) + "': true";}, 1); + return "{" + (args.$join(",")) + "}"; + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/extract_optarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $eqeq = Opal.eqeq, $def = Opal.def; + + Opal.add_stubs('require,handle,children,==,[],default_value,line,name,expr'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ExtractOptargNode'); + + + + self.$handle("extract_optarg"); + self.$children("name", "default_value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + if ($eqeq(self.$default_value().$children()['$[]'](1), "undefined")) { + return nil + }; + return self.$line("if (" + (self.$name()) + " == null) " + (self.$name()) + " = ", self.$expr(self.$default_value()), ";"); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/extract_post_arg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,handle,children,add_temp,name,line'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ExtractPostArg'); + + + + self.$handle("extract_post_arg"); + self.$children("name"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$add_temp(self.$name()); + self.$line("" + (self.$name()) + " = $post_args.shift();"); + return self.$line("if (" + (self.$name()) + " == null) " + (self.$name()) + " = nil;"); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/extract_post_optarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $eqeq = Opal.eqeq, $def = Opal.def; + + Opal.add_stubs('require,handle,children,add_temp,name,line,args_to_keep,==,[],default_value,expr'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ExtractPostOptarg'); + + + + self.$handle("extract_post_optarg"); + self.$children("name", "default_value", "args_to_keep"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$add_temp(self.$name()); + self.$line("if ($post_args.length > " + (self.$args_to_keep()) + ") " + (self.$name()) + " = $post_args.shift();"); + if ($eqeq(self.$default_value().$children()['$[]'](1), "undefined")) { + return nil + }; + return self.$line("if (" + (self.$name()) + " == null) " + (self.$name()) + " = ", self.$expr(self.$default_value()), ";"); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/extract_restarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $def = Opal.def; + + Opal.add_stubs('require,handle,children,name,add_temp,==,args_to_keep,line'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ExtractRestarg'); + + + + self.$handle("extract_restarg"); + self.$children("name", "args_to_keep"); + return $def(self, '$compile', function $$compile() { + var self = this, name = nil, $ret_or_1 = nil; + + + name = ($truthy(($ret_or_1 = self.$name())) ? ($ret_or_1) : ("$rest_arg")); + self.$add_temp(name); + if ($eqeq(self.$args_to_keep(), 0)) { + return self.$line("" + (name) + " = $post_args;") + } else { + return self.$line("" + (name) + " = $post_args.splice(0, $post_args.length - " + (self.$args_to_keep()) + ");") + }; + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/fake_arg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,handle,next_temp,scope,add_arg,push'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'FakeArgNode'); + + + + self.$handle("fake_arg"); + return $def(self, '$compile', function $$compile() { + var self = this, name = nil; + + + name = self.$scope().$next_temp(); + self.$scope().$add_arg(name); + return self.$push(name); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/initialize_iterarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,handle,children,line,name'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'InitializeIterarg'); + + + + self.$handle("initialize_iter_arg"); + self.$children("name"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$line("if (" + (self.$name()) + " == null) " + (self.$name()) + " = nil;") + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/initialize_shadowarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,handle,children,<<,locals,scope,name,add_arg,line'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'InitializeShadowarg'); + + + + self.$handle("initialize_shadowarg"); + self.$children("name"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$scope().$locals()['$<<'](self.$name()); + self.$scope().$add_arg(self.$name()); + return self.$line("" + (self.$name()) + " = nil;"); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/parameters"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $truthy = Opal.truthy, $eqeq = Opal.eqeq; + + Opal.add_stubs('children,map,public_send,type,join,compact,=='); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Parameters'); + + var $proto = self.$$prototype; + + $proto.args = nil; + + + $def(self, '$initialize', function $$initialize(args) { + var self = this; + + return (self.args = args.$children()) + }, 1); + + $def(self, '$to_code', function $$to_code() { + var self = this, stringified_parameters = nil; + + + stringified_parameters = $send(self.args, 'map', [], function $$1(arg){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (arg == null) arg = nil;; + return $send(self, 'public_send', ["on_" + (arg.$type())].concat($to_a(arg)));}, {$$arity: 1, $$s: self}); + return "[" + (stringified_parameters.$compact().$join(", ")) + "]"; + }, 0); + + $def(self, '$on_arg', function $$on_arg(arg_name) { + + return "['req', '" + (arg_name) + "']" + }, 1); + + $def(self, '$on_mlhs', function $$on_mlhs($a) { + var $post_args, $rest_arg; + + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return "['req']"; + }, -1); + + $def(self, '$on_optarg', function $$on_optarg(arg_name, _default_value) { + + return "['opt', '" + (arg_name) + "']" + }, 2); + + $def(self, '$on_restarg', function $$on_restarg(arg_name) { + + + + if (arg_name == null) arg_name = nil;; + if ($truthy(arg_name)) { + + if ($eqeq(arg_name, "fwd_rest_arg")) { + arg_name = "*" + }; + return "['rest', '" + (arg_name) + "']"; + } else { + return "['rest']" + }; + }, -1); + + $def(self, '$on_kwarg', function $$on_kwarg(arg_name) { + + return "['keyreq', '" + (arg_name) + "']" + }, 1); + + $def(self, '$on_kwoptarg', function $$on_kwoptarg(arg_name, _default_value) { + + return "['key', '" + (arg_name) + "']" + }, 2); + + $def(self, '$on_kwrestarg', function $$on_kwrestarg(arg_name) { + + + + if (arg_name == null) arg_name = nil;; + if ($truthy(arg_name)) { + return "['keyrest', '" + (arg_name) + "']" + } else { + return "['keyrest']" + }; + }, -1); + + $def(self, '$on_blockarg', function $$on_blockarg(arg_name) { + + + if ($eqeq(arg_name, "fwd_block_arg")) { + arg_name = "&" + }; + return "['block', '" + (arg_name) + "']"; + }, 1); + + $def(self, '$on_kwnilarg', function $$on_kwnilarg() { + + return "['nokey']" + }, 0); + return $def(self, '$on_shadowarg', function $$on_shadowarg(_arg_name) { + + return nil + }, 1); + })($nesting[0], null) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["opal/nodes/args/prepare_post_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $eqeq = Opal.eqeq, $def = Opal.def; + + Opal.add_stubs('require,handle,children,add_temp,==,offset,line'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'PreparePostArgs'); + + + + self.$handle("prepare_post_args"); + self.$children("offset"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$add_temp("$post_args"); + if ($eqeq(self.$offset(), 0)) { + return self.$line("$post_args = Opal.slice.call(arguments)") + } else { + return self.$line("$post_args = Opal.slice.call(arguments, " + (self.$offset()) + ")") + }; + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $send = Opal.send, $truthy = Opal.truthy, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $rb_gt = Opal.rb_gt, $neqeq = Opal.neqeq, $def = Opal.def; + + Opal.add_stubs('require,handle,each_with_index,children,multiple_underscore?,[],[]=,-,+,>,s,type,!=,push,process,==,count,start_with?,to_s,first'); + + self.$require("opal/nodes/base"); + self.$require("opal/nodes/args/arg"); + self.$require("opal/nodes/args/arity_check"); + self.$require("opal/nodes/args/ensure_kwargs_are_kwargs"); + self.$require("opal/nodes/args/extract_block_arg"); + self.$require("opal/nodes/args/extract_kwarg"); + self.$require("opal/nodes/args/extract_kwargs"); + self.$require("opal/nodes/args/extract_kwoptarg"); + self.$require("opal/nodes/args/extract_kwrestarg"); + self.$require("opal/nodes/args/extract_optarg"); + self.$require("opal/nodes/args/extract_post_arg"); + self.$require("opal/nodes/args/extract_post_optarg"); + self.$require("opal/nodes/args/extract_restarg"); + self.$require("opal/nodes/args/fake_arg"); + self.$require("opal/nodes/args/initialize_iterarg"); + self.$require("opal/nodes/args/initialize_shadowarg"); + self.$require("opal/nodes/args/parameters"); + self.$require("opal/nodes/args/prepare_post_args"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ArgsNode'); + + + + self.$handle("args"); + + $def(self, '$compile', function $$compile() { + var self = this, same_arg_counter = nil; + + + same_arg_counter = $hash2([], {}); + return $send(self.$children(), 'each_with_index', [], function $$1(arg, idx){var self = $$1.$$s == null ? this : $$1.$$s, $ret_or_1 = nil, $writer = nil; + + + + if (arg == null) arg = nil;; + + if (idx == null) idx = nil;; + if ($truthy(self['$multiple_underscore?'](arg))) { + + if ($truthy(($ret_or_1 = same_arg_counter['$[]'](arg)))) { + $ret_or_1 + } else { + + $writer = [arg, 0]; + $send(same_arg_counter, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + + $writer = [arg, $rb_plus(same_arg_counter['$[]'](arg), 1)]; + $send(same_arg_counter, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy($rb_gt(same_arg_counter['$[]'](arg), 1))) { + arg = self.$s(arg.$type(), "" + (arg.$children()['$[]'](0)) + "_$" + (same_arg_counter['$[]'](arg))) + }; + }; + if ($neqeq(idx, 0)) { + self.$push(", ") + }; + return self.$push(self.$process(arg));}, {$$arity: 2, $$s: self}); + }, 0); + return $def(self, '$multiple_underscore?', function $ArgsNode_multiple_underscore$ques$2(arg) { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = ($truthy(($ret_or_3 = arg.$type()['$==']("arg"))) ? (arg.$children().$count()['$=='](1)) : ($ret_or_3)))) ? (arg.$children().$first().$to_s()['$start_with?']("_")) : ($ret_or_2))))) { + return $rb_gt(self.$children().$count(arg), 1) + } else { + return $ret_or_1 + } + }, 1); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/node_with_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $def = Opal.def, $truthy = Opal.truthy; + + Opal.add_stubs('require,attr_reader,attr_accessor,[],meta,s,original_args,push,process,arity_check_node,uses_block?,scope,prepare_block,to_code,new'); + + self.$require("opal/nodes/scope"); + self.$require("opal/nodes/args/parameters"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'NodeWithArgs'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.sexp = nil; + + self.$attr_reader("used_kwargs"); + self.$attr_accessor("arity"); + self.$attr_reader("original_args"); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + self.original_args = self.sexp.$meta()['$[]']("original_args"); + self.used_kwargs = []; + return (self.arity = 0); + }, -1); + + $def(self, '$arity_check_node', function $$arity_check_node() { + var self = this; + + return self.$s("arity_check", self.$original_args()) + }, 0); + + $def(self, '$compile_arity_check', function $$compile_arity_check() { + var self = this; + + return self.$push(self.$process(self.$arity_check_node())) + }, 0); + + $def(self, '$compile_block_arg', function $$compile_block_arg() { + var self = this; + + if ($truthy(self.$scope()['$uses_block?']())) { + return self.$scope().$prepare_block() + } else { + return nil + } + }, 0); + return $def(self, '$parameters_code', function $$parameters_code() { + var self = this; + + return $$$($$('Args'), 'Parameters').$new(self.$original_args()).$to_code() + }, 0); + })($nesting[0], $$('ScopeNode'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/iter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $eqeq = Opal.eqeq, $rb_gt = Opal.rb_gt, $def = Opal.def; + + Opal.add_stubs('require,handle,children,lambda_definition?,scope,is_lambda!,in_scope,identify!,process,inline_args,compile_arity_check,stmt,returned_body,add_temp,to_vars,line,catch_return,unshift,push,await_encountered,<<,arity,self,contains_break?,arity_check?,compiler,parameters_code,has_top_level_mlhs_arg?,has_trailing_comma_in_args?,==,length,>,join,nesting,relative_access,block_arg,prepare_block,each,args,first,updated,body,returns,s,any?,original_args,type,expression,loc,source,match,new,found_break?'); + + self.$require("opal/nodes/node_with_args"); + self.$require("opal/rewriters/break_finder"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'IterNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.define_self = $proto.define_nesting = $proto.define_relative_access = $proto.sexp = nil; + + self.$handle("iter"); + self.$children("inline_args", "body"); + + $def(self, '$compile', function $$compile() { + var self = this, inline_params = nil, to_vars = nil, identity = nil, body_code = nil, blockopts = nil; + + + if ($truthy(self.$scope()['$lambda_definition?']())) { + self['$is_lambda!']() + }; + inline_params = nil; + to_vars = (identity = (body_code = nil)); + $send(self, 'in_scope', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s; + if (self.define_self == null) self.define_self = nil; + + + identity = self.$scope()['$identify!'](); + inline_params = self.$process(self.$inline_args()); + self.$compile_arity_check(); + body_code = self.$stmt(self.$returned_body()); + if ($truthy(self.define_self)) { + self.$add_temp("self = " + (identity) + ".$$s == null ? this : " + (identity) + ".$$s") + }; + to_vars = self.$scope().$to_vars(); + self.$line(body_code); + if ($truthy(self.$scope().$catch_return())) { + + self.$unshift("try {\n"); + self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }"); + return self.$push(" throw $returner; }"); + } else { + return nil + };}, {$$arity: 0, $$s: self}); + self.$unshift(to_vars); + if ($truthy(self.$await_encountered())) { + self.$unshift("async function " + (identity) + "(", inline_params, "){") + } else { + self.$unshift("function " + (identity) + "(", inline_params, "){") + }; + self.$push("}"); + blockopts = []; + blockopts['$<<']("$$arity: " + (self.$arity())); + if ($truthy(self.define_self)) { + blockopts['$<<']("$$s: " + (self.$scope().$self())) + }; + if ($truthy(self['$contains_break?']())) { + blockopts['$<<']("$$brk: $brk") + }; + if ($truthy(self.$compiler()['$arity_check?']())) { + blockopts['$<<']("$$parameters: " + (self.$parameters_code())) + }; + if ($truthy(self['$has_top_level_mlhs_arg?']())) { + blockopts['$<<']("$$has_top_level_mlhs_arg: true") + }; + if ($truthy(self['$has_trailing_comma_in_args?']())) { + blockopts['$<<']("$$has_trailing_comma_in_args: true") + }; + if ($eqeq(blockopts.$length(), 1)) { + self.$push(", " + (self.$arity())) + } else if ($truthy($rb_gt(blockopts.$length(), 1))) { + self.$push(", {", blockopts.$join(", "), "}") + }; + if ($truthy(self.define_nesting)) { + self.$scope().$nesting() + }; + if ($truthy(self.define_relative_access)) { + return self.$scope().$relative_access() + } else { + return nil + }; + }, 0); + + $def(self, '$compile_block_arg', function $$compile_block_arg() { + var self = this; + + if ($truthy(self.$block_arg())) { + return self.$scope().$prepare_block() + } else { + return nil + } + }, 0); + + $def(self, '$extract_underscore_args', function $$extract_underscore_args() { + var self = this, valid_args = nil, caught_blank_argument = nil; + + + valid_args = []; + caught_blank_argument = false; + $send(self.$args().$children(), 'each', [], function $$2(arg){var arg_name = nil; + + + + if (arg == null) arg = nil;; + arg_name = arg.$children().$first(); + if ($eqeq(arg_name, "_")) { + if ($truthy(caught_blank_argument)) { + return nil + } else { + + caught_blank_argument = true; + return valid_args['$<<'](arg); + } + } else { + return valid_args['$<<'](arg) + };}, 1); + return (self.sexp = self.sexp.$updated(nil, [self.$args().$updated(nil, valid_args), self.$body()])); + }, 0); + + $def(self, '$returned_body', function $$returned_body() { + var self = this, $ret_or_1 = nil; + + return self.$compiler().$returns(($truthy(($ret_or_1 = self.$body())) ? ($ret_or_1) : (self.$s("nil")))) + }, 0); + + $def(self, '$has_top_level_mlhs_arg?', function $IterNode_has_top_level_mlhs_arg$ques$3() { + var self = this; + + return $send(self.$original_args().$children(), 'any?', [], function $$4(arg){ + + + if (arg == null) arg = nil;; + return arg.$type()['$==']("mlhs");}, 1) + }, 0); + + $def(self, '$has_trailing_comma_in_args?', function $IterNode_has_trailing_comma_in_args$ques$5() { + var self = this, args_source = nil; + + if (($truthy(self.$original_args().$loc()) && ($truthy(self.$original_args().$loc().$expression())))) { + + args_source = self.$original_args().$loc().$expression().$source(); + return args_source.$match(/,\s*\|/); + } else { + return nil + } + }, 0); + + $def(self, '$arity_check_node', function $$arity_check_node() { + var self = this; + + return self.$s("iter_arity_check", self.$original_args()) + }, 0); + return $def(self, '$contains_break?', function $IterNode_contains_break$ques$6() { + var self = this, finder = nil; + + + finder = $$$($$$($$('Opal'), 'Rewriters'), 'BreakFinder').$new(); + finder.$process(self.sexp); + return finder['$found_break?'](); + }, 0); + })($nesting[0], $$('NodeWithArgs'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/def"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $def = Opal.def, $rb_plus = Opal.rb_plus; + + Opal.add_stubs('require,handle,children,in_scope,mid,mid=,scope,-,==,type,defs=,identify!,identity,block_name=,process,inline_args,stmt,returns,compiler,stmts,compile_block_arg,add_temp,compile_arity_check,unshift,current_indent,to_vars,line,catch_return,push,await_encountered,<<,arity,arity_check?,parameters_code,parse_comments?,comments_code,enable_source_location?,source_location,length,>,join,wrap_with_definition,nesting,relative_access,helper,wrap,self,expr?,+,map,comments,inspect,text'); + + self.$require("opal/nodes/node_with_args"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'DefNode'); + + var $proto = self.$$prototype; + + $proto.define_nesting = $proto.define_relative_access = nil; + + self.$handle("def"); + self.$children("mid", "inline_args", "stmts"); + + $def(self, '$compile', function $$compile() { + var self = this, inline_params = nil, scope_name = nil, blockopts = nil; + + + inline_params = nil; + scope_name = nil; + $send(self, 'in_scope', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s, $writer = nil, stmt_code = nil; + if (self.sexp == null) self.sexp = nil; + if (self.define_self == null) self.define_self = nil; + + + + $writer = [self.$mid()]; + $send(self.$scope(), 'mid=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($eqeq(self.sexp.$type(), "defs")) { + + $writer = [true]; + $send(self.$scope(), 'defs=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + self.$scope()['$identify!'](); + scope_name = self.$scope().$identity(); + + $writer = ["$yield"]; + $send(self.$scope(), 'block_name=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + inline_params = self.$process(self.$inline_args()); + stmt_code = self.$stmt(self.$compiler().$returns(self.$stmts())); + self.$compile_block_arg(); + if ($truthy(self.define_self)) { + self.$add_temp("self = this") + }; + self.$compile_arity_check(); + self.$unshift("\n" + (self.$current_indent()), self.$scope().$to_vars()); + self.$line(stmt_code); + if ($truthy(self.$scope().$catch_return())) { + + self.$unshift("try {\n"); + self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }"); + return self.$push(" throw $returner; }"); + } else { + return nil + };}, {$$arity: 0, $$s: self}); + self.$unshift(") {"); + self.$unshift(inline_params); + self.$unshift("function " + (scope_name) + "("); + if ($truthy(self.$await_encountered())) { + self.$unshift("async ") + }; + self.$line("}"); + blockopts = []; + blockopts['$<<']("$$arity: " + (self.$arity())); + if ($truthy(self.$compiler()['$arity_check?']())) { + blockopts['$<<']("$$parameters: " + (self.$parameters_code())) + }; + if ($truthy(self.$compiler()['$parse_comments?']())) { + blockopts['$<<']("$$comments: " + (self.$comments_code())) + }; + if ($truthy(self.$compiler()['$enable_source_location?']())) { + blockopts['$<<']("$$source_location: " + (self.$source_location())) + }; + if ($eqeq(blockopts.$length(), 1)) { + self.$push(", " + (self.$arity())) + } else if ($truthy($rb_gt(blockopts.$length(), 1))) { + self.$push(", {", blockopts.$join(", "), "}") + }; + self.$wrap_with_definition(); + if ($truthy(self.define_nesting)) { + self.$scope().$nesting() + }; + if ($truthy(self.define_relative_access)) { + return self.$scope().$relative_access() + } else { + return nil + }; + }, 0); + + $def(self, '$wrap_with_definition', function $$wrap_with_definition() { + var self = this; + + + self.$helper("def"); + self.$wrap("$def(" + (self.$scope().$self()) + ", '$" + (self.$mid()) + "', ", ")"); + if ($truthy(self['$expr?']())) { + return nil + } else { + return self.$unshift("\n" + (self.$current_indent())) + }; + }, 0); + return $def(self, '$comments_code', function $$comments_code() { + var self = this; + + return $rb_plus($rb_plus("[", $send(self.$comments(), 'map', [], function $$2(comment){ + + + if (comment == null) comment = nil;; + return comment.$text().$inspect();}, 1).$join(", ")), "]") + }, 0); + })($nesting[0], $$('NodeWithArgs')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/defs"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,handle,children,helper,unshift,expr,recvr,mid,push'); + + self.$require("opal/nodes/def"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'DefsNode'); + + + + self.$handle("defs"); + self.$children("recvr", "mid", "inline_args", "stmts"); + return $def(self, '$wrap_with_definition', function $$wrap_with_definition() { + var self = this; + + + self.$helper("defs"); + self.$unshift("$defs(", self.$expr(self.$recvr()), ", '$" + (self.$mid()) + "', "); + return self.$push(")"); + }, 0); + })($nesting[0], $$('DefNode')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/if"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $def = Opal.def, $not = Opal.not, $send = Opal.send, $eqeqeq = Opal.eqeqeq; + + Opal.add_stubs('require,handle,children,should_compile_as_simple_expression?,==,true_body,s,compile_with_binary_or,false_body,compile_with_binary_and,compile_with_ternary,compile_with_if,truthy,falsy,!,push,js_truthy,test,indent,line,stmt,type,expects_expression?,await_encountered,scope,wrap,returnify,returns,compiler,expr?,recv?,simple?,expr,[],meta,sexp,===,single_line?,strip_empty_children,all?,helper,new_temp,top_scope,excl,from,to'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'IfNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$handle("if"); + self.$children("test", "true_body", "false_body"); + + $def(self, '$compile', function $$compile() { + var self = this; + + if ($truthy(self['$should_compile_as_simple_expression?']())) { + if ($eqeq(self.$true_body(), self.$s("true"))) { + return self.$compile_with_binary_or() + } else if ($eqeq(self.$false_body(), self.$s("false"))) { + return self.$compile_with_binary_and() + } else { + return self.$compile_with_ternary() + } + } else { + return self.$compile_with_if() + } + }, 0); + + $def(self, '$compile_with_if', function $$compile_with_if() { + var $a, self = this, truthy = nil, falsy = nil; + + + truthy = self.$truthy(); + falsy = self.$falsy(); + if (($truthy(falsy) && ($not(truthy)))) { + + self.$push("if (!", self.$js_truthy(self.$test()), ") {"); + $a = [truthy, falsy], (falsy = $a[0]), (truthy = $a[1]), $a; + } else { + self.$push("if (", self.$js_truthy(self.$test()), ") {") + }; + if ($truthy(truthy)) { + $send(self, 'indent', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s; + + return self.$line(self.$stmt(truthy))}, {$$arity: 0, $$s: self}) + }; + if ($truthy(falsy)) { + if ($eqeq(falsy.$type(), "if")) { + self.$line("} else ", self.$stmt(falsy)) + } else { + + self.$line("} else {"); + $send(self, 'indent', [], function $$2(){var self = $$2.$$s == null ? this : $$2.$$s; + + return self.$line(self.$stmt(falsy))}, {$$arity: 0, $$s: self}); + self.$line("}"); + } + } else { + + self.$line("}"); + if ($truthy(self['$expects_expression?']())) { + self.$line("return nil;") + }; + }; + if ($truthy(self['$expects_expression?']())) { + if ($truthy(self.$scope().$await_encountered())) { + return self.$wrap("(await (async function() {", "})())") + } else { + return self.$wrap("(function() {", "})()") + } + } else { + return nil + }; + }, 0); + + $def(self, '$truthy', function $$truthy() { + var self = this; + + return self.$returnify(self.$true_body()) + }, 0); + + $def(self, '$falsy', function $$falsy() { + var self = this; + + return self.$returnify(self.$false_body()) + }, 0); + + $def(self, '$returnify', function $$returnify(body) { + var self = this; + + if (($truthy(self['$expects_expression?']()) && ($truthy(body)))) { + return self.$compiler().$returns(body) + } else { + return body + } + }, 1); + + $def(self, '$expects_expression?', function $IfNode_expects_expression$ques$3() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$expr?']()))) { + return $ret_or_1 + } else { + return self['$recv?']() + } + }, 0); + + $def(self, '$should_compile_as_simple_expression?', function $IfNode_should_compile_as_simple_expression$ques$4() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self['$expects_expression?']())) ? (self['$simple?'](self.$true_body())) : ($ret_or_2))))) { + return self['$simple?'](self.$false_body()) + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$compile_with_ternary', function $$compile_with_ternary() { + var self = this, truthy = nil, falsy = nil, $ret_or_1 = nil; + + + truthy = self.$true_body(); + falsy = self.$false_body(); + self.$push("("); + self.$push(self.$js_truthy(self.$test()), " ? "); + self.$push("(", self.$expr(($truthy(($ret_or_1 = truthy)) ? ($ret_or_1) : (self.$s("nil")))), ") : "); + if (($not(falsy) || ($eqeq(falsy.$type(), "if")))) { + self.$push(self.$expr(($truthy(($ret_or_1 = falsy)) ? ($ret_or_1) : (self.$s("nil"))))) + } else { + self.$push("(", self.$expr(($truthy(($ret_or_1 = falsy)) ? ($ret_or_1) : (self.$s("nil")))), ")") + }; + return self.$push(")"); + }, 0); + + $def(self, '$compile_with_binary_and', function $$compile_with_binary_and() { + var self = this, truthy = nil, $ret_or_1 = nil; + + + if ($truthy(self.$sexp().$meta()['$[]']("do_js_truthy_on_true_body"))) { + truthy = self.$js_truthy(($truthy(($ret_or_1 = self.$true_body())) ? ($ret_or_1) : (self.$s("nil")))) + } else { + truthy = self.$expr(($truthy(($ret_or_1 = self.$true_body())) ? ($ret_or_1) : (self.$s("nil")))) + }; + self.$push("("); + self.$push(self.$js_truthy(self.$test()), " && "); + self.$push("(", truthy, ")"); + return self.$push(")"); + }, 0); + + $def(self, '$compile_with_binary_or', function $$compile_with_binary_or() { + var self = this, falsy = nil, $ret_or_1 = nil; + + + if ($truthy(self.$sexp().$meta()['$[]']("do_js_truthy_on_false_body"))) { + falsy = self.$js_truthy(($truthy(($ret_or_1 = self.$false_body())) ? ($ret_or_1) : (self.$s("nil")))) + } else { + falsy = self.$expr(($truthy(($ret_or_1 = self.$false_body())) ? ($ret_or_1) : (self.$s("nil")))) + }; + self.$push("("); + self.$push(self.$js_truthy(self.$test()), " || "); + self.$push("(", falsy, ")"); + return self.$push(")"); + }, 0); + return $def(self, '$simple?', function $IfNode_simple$ques$5(body) { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($eqeqeq($$$($$('AST'), 'Node'), ($ret_or_1 = body))) { + if (($eqeqeq("return", ($ret_or_2 = body.$type())) || (($eqeqeq("js_return", $ret_or_2) || (($eqeqeq("break", $ret_or_2) || (($eqeqeq("next", $ret_or_2) || (($eqeqeq("redo", $ret_or_2) || ($eqeqeq("retry", $ret_or_2)))))))))))) { + return false + } else if ($eqeqeq("xstr", $ret_or_2)) { + return $$('XStringNode')['$single_line?']($$('XStringNode').$strip_empty_children(body.$children())) + } else { + return $send(body.$children(), 'all?', [], function $$6(i){var self = $$6.$$s == null ? this : $$6.$$s; + + + + if (i == null) i = nil;; + return self['$simple?'](i);}, {$$arity: 1, $$s: self}) + } + } else { + return true + } + }, 1); + })($nesting[0], $$('Base'), $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'IFlipFlop'); + + + + self.$handle("iflipflop"); + self.$children("from", "to"); + + $def(self, '$excl', function $$excl() { + + return "" + }, 0); + return $def(self, '$compile', function $$compile() { + var self = this, fun_name = nil, ff = nil; + + + self.$helper("truthy"); + fun_name = self.$top_scope().$new_temp(); + ff = "" + (fun_name) + ".$$ff"; + self.$push("(typeof " + (fun_name) + " === 'undefined' ? (" + (fun_name) + " = function(from, to){"); + self.$push(" if (typeof " + (ff) + " === 'undefined') " + (ff) + " = false;"); + self.$push(" var retval = " + (ff) + ";"); + self.$push(" if (!" + (ff) + ") {"); + self.$push(" " + (ff) + " = retval = $truthy(from());"); + self.$push(" }"); + self.$push(" " + (self.$excl()) + "if (" + (ff) + ") {"); + self.$push(" if ($truthy(to())) " + (ff) + " = false;"); + self.$push(" }"); + self.$push(" return retval;"); + self.$push("}) : " + (fun_name) + ")("); + self.$push(" function() { ", self.$stmt(self.$compiler().$returns(self.$from())), " },"); + self.$push(" function() { ", self.$stmt(self.$compiler().$returns(self.$to())), " }"); + return self.$push(")"); + }, 0); + })($nesting[0], $$('Base')); + return (function($base, $super) { + var self = $klass($base, $super, 'EFlipFlop'); + + + + self.$handle("eflipflop"); + return $def(self, '$excl', function $$excl() { + + return "else " + }, 0); + })($nesting[0], $$('IFlipFlop')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/logic"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_gt = Opal.rb_gt, $not = Opal.not; + + Opal.add_stubs('require,handle,in_while?,push,iter?,scope,expr_or_nil,value,error,===,size,children,s,first,compile_while,compile_iter,[],while_loop,stmt?,line,break_val,nil?,expr,[]=,-,helper,identity,==,empty_splat?,recv,>,find_parent_def,!,lambda?,def?,expr?,return_in_iter?,return_expr_in_def?,scope_to_catch_return,catch_return=,return_val,to_s'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'NextNode'); + + + + self.$handle("next"); + + $def(self, '$compile', function $$compile() { + var self = this; + + if ($truthy(self['$in_while?']())) { + return self.$push("continue;") + } else if ($truthy(self.$scope()['$iter?']())) { + return self.$push("return ", self.$expr_or_nil(self.$value()), ";") + } else { + return self.$error("Invalid next") + } + }, 0); + return $def(self, '$value', function $$value() { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq(0, ($ret_or_1 = self.$children().$size()))) { + return self.$s("nil") + } else if ($eqeqeq(1, $ret_or_1)) { + return self.$children().$first() + } else { + return $send(self, 's', ["array"].concat($to_a(self.$children()))) + } + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'BreakNode'); + + + + self.$handle("break"); + self.$children("value"); + + $def(self, '$compile', function $$compile() { + var self = this; + + if ($truthy(self['$in_while?']())) { + return self.$compile_while() + } else if ($truthy(self.$scope()['$iter?']())) { + return self.$compile_iter() + } else { + return self.$error("void value expression: cannot use break outside of iter/while") + } + }, 0); + + $def(self, '$compile_while', function $$compile_while() { + var self = this; + + if ($truthy(self.$while_loop()['$[]']("closure"))) { + return self.$push("return ", self.$expr_or_nil(self.$value())) + } else { + return self.$push("break;") + } + }, 0); + + $def(self, '$compile_iter', function $$compile_iter() { + var self = this; + + + if (!$truthy(self['$stmt?']())) { + self.$error("break must be used as a statement") + }; + return self.$line("Opal.brk(", self.$break_val(), ", $brk)"); + }, 0); + return $def(self, '$break_val', function $$break_val() { + var self = this; + + if ($truthy(self.$value()['$nil?']())) { + return self.$expr(self.$s("nil")) + } else { + return self.$expr(self.$value()) + } + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'RedoNode'); + + + + self.$handle("redo"); + + $def(self, '$compile', function $$compile() { + var self = this; + + if ($truthy(self['$in_while?']())) { + return self.$compile_while() + } else if ($truthy(self.$scope()['$iter?']())) { + return self.$compile_iter() + } else { + return self.$push("REDO()") + } + }, 0); + + $def(self, '$compile_while', function $$compile_while() { + var self = this, $writer = nil; + + + + $writer = ["use_redo", true]; + $send(self.$while_loop(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self.$push("" + (self.$while_loop()['$[]']("redo_var")) + " = true; continue;"); + }, 0); + return $def(self, '$compile_iter', function $$compile_iter() { + var self = this; + + + self.$helper("slice"); + return self.$push("return " + (self.$scope().$identity()) + ".apply(null, $slice.call(arguments))"); + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'SplatNode'); + + + + self.$handle("splat"); + self.$children("value"); + + $def(self, '$empty_splat?', function $SplatNode_empty_splat$ques$1() { + var self = this; + + return self.$value()['$=='](self.$s("array")) + }, 0); + return $def(self, '$compile', function $$compile() { + var self = this; + + if ($truthy(self['$empty_splat?']())) { + return self.$push("[]") + } else { + + self.$helper("to_a"); + return self.$push("$to_a(", self.$recv(self.$value()), ")"); + } + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'ReturnNode'); + + + + self.$handle("return"); + self.$children("value"); + + $def(self, '$return_val', function $$return_val() { + var self = this; + + if ($truthy(self.$value()['$nil?']())) { + return self.$expr(self.$s("nil")) + } else if ($truthy($rb_gt(self.$children().$size(), 1))) { + return self.$expr($send(self, 's', ["array"].concat($to_a(self.$children())))) + } else { + return self.$expr(self.$value()) + } + }, 0); + + $def(self, '$return_in_iter?', function $ReturnNode_return_in_iter$ques$2() { + var self = this, parent_def = nil; + + if ((($truthy(self.$scope()['$iter?']()) && ($not(self.$scope()['$lambda?']()))) && ($truthy((parent_def = self.$scope().$find_parent_def()))))) { + return parent_def + } else { + return nil + } + }, 0); + + $def(self, '$return_expr_in_def?', function $ReturnNode_return_expr_in_def$ques$3() { + var self = this; + + if (($truthy(self['$expr?']()) && (($truthy(self.$scope()['$def?']()) || ($truthy(self.$scope()['$lambda?']())))))) { + return self.$scope() + } else { + return nil + } + }, 0); + + $def(self, '$scope_to_catch_return', function $$scope_to_catch_return() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$return_in_iter?']()))) { + return $ret_or_1 + } else { + return self['$return_expr_in_def?']() + } + }, 0); + return $def(self, '$compile', function $$compile() { + var self = this, def_scope = nil, $writer = nil; + + if ($truthy((def_scope = self.$scope_to_catch_return()))) { + + + $writer = [true]; + $send(def_scope, 'catch_return=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self.$push("Opal.ret(", self.$return_val(), ")"); + } else if ($truthy(self['$stmt?']())) { + return self.$push("return ", self.$return_val()) + } else { + return self.$error("void value expression: cannot return as an expression") + } + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'JSReturnNode'); + + + + self.$handle("js_return"); + self.$children("value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$push("return "); + return self.$push(self.$expr(self.$value())); + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'JSTempNode'); + + + + self.$handle("js_tmp"); + self.$children("value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$push(self.$value().$to_s()) + }, 0); + })($nesting[0], $$('Base')); + return (function($base, $super) { + var self = $klass($base, $super, 'BlockPassNode'); + + + + self.$handle("block_pass"); + self.$children("value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$push(self.$expr(self.$s("send", self.$value(), "to_proc", self.$s("arglist")))) + }, 0); + })($nesting[0], $$('Base')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/definitions"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $range = Opal.range, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $eqeq = Opal.eqeq, $to_a = Opal.to_a, $slice = Opal.slice, $rb_plus = Opal.rb_plus, $hash2 = Opal.hash2, $const_set = Opal.const_set; + + Opal.add_stubs('require,handle,children,each,line,self,scope,expr,===,type,new_name,helper,inspect,[],to_s,first,old_name,push,error,empty?,stmt?,compile_children,simple_children?,compile_inline_children,>,size,wrap,==,returned_children,await_encountered,parent,+,returns,compiler,s,process,fragment,freeze,none?,include?,map,each_with_index,reject,to_proc'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'UndefNode'); + + + + self.$handle("undef"); + self.$children("value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return $send(self.$children(), 'each', [], function $$1(child){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (child == null) child = nil;; + return self.$line("Opal.udef(" + (self.$scope().$self()) + ", '$' + ", self.$expr(child), ");");}, {$$arity: 1, $$s: self}) + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'AliasNode'); + + + + self.$handle("alias"); + self.$children("new_name", "old_name"); + return $def(self, '$compile', function $$compile() { + var self = this, $ret_or_1 = nil, new_name_str = nil, old_name_str = nil; + + if ($eqeqeq("gvar", ($ret_or_1 = self.$new_name().$type()))) { + + self.$helper("alias_gvar"); + new_name_str = self.$new_name().$children().$first().$to_s()['$[]']($range(1, -1, false)).$inspect(); + old_name_str = self.$old_name().$children().$first().$to_s()['$[]']($range(1, -1, false)).$inspect(); + return self.$push("$alias_gvar(", new_name_str, ", ", old_name_str, ")"); + } else if (($eqeqeq("dsym", $ret_or_1) || ($eqeqeq("sym", $ret_or_1)))) { + + self.$helper("alias"); + return self.$push("$alias(" + (self.$scope().$self()) + ", ", self.$expr(self.$new_name()), ", ", self.$expr(self.$old_name()), ")"); + } else { + return self.$error("Opal doesn't know yet how to alias with " + (self.$new_name().$type())) + } + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'BeginNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.level = $proto.returned_children = nil; + + self.$handle("begin"); + + $def(self, '$compile', function $$compile() { + var self = this; + + + if ($truthy(self.$children()['$empty?']())) { + return self.$push("nil") + }; + if ($truthy(self['$stmt?']())) { + return self.$compile_children(self.$children(), self.level) + } else if ($truthy(self['$simple_children?']())) { + + self.$compile_inline_children(self.$children(), self.level); + if ($truthy($rb_gt(self.$children().$size(), 1))) { + return self.$wrap("(", ")") + } else { + return nil + }; + } else if ($eqeq(self.$children().$size(), 1)) { + return self.$compile_inline_children(self.$returned_children(), self.level) + } else { + + self.$compile_children(self.$returned_children(), self.level); + if ($truthy(self.$scope().$parent().$await_encountered())) { + return self.$wrap("(await (async function() {", "})())") + } else { + return self.$wrap("(function() {", "})()") + }; + }; + }, 0); + + $def(self, '$returned_children', function $$returned_children() { + var $a, $b, self = this, $ret_or_1 = nil, rest = nil, last_child = nil; + + return (self.returned_children = ($truthy(($ret_or_1 = self.returned_children)) ? ($ret_or_1) : (($a = [].concat($to_a(self.$children())), $b = $a.length - 1, $b = ($b < 0) ? 0 : $b, (rest = $slice.call($a, 0, $b)), (last_child = ($a[$b] == null ? nil : $a[$b])), $a, ($truthy(last_child) ? ($rb_plus(rest, [self.$compiler().$returns(last_child)])) : ([self.$s("nil")])))))) + }, 0); + + $def(self, '$compile_children', function $$compile_children(children, level) { + var self = this; + + return $send(children, 'each', [], function $$2(child){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (child == null) child = nil;; + return self.$line(self.$process(child, level), self.$fragment(";", $hash2(["loc"], {"loc": false})));}, {$$arity: 1, $$s: self}) + }, 2); + $const_set($nesting[0], 'COMPLEX_CHILDREN', ["while", "while_post", "until", "until_post", "js_return"].$freeze()); + + $def(self, '$simple_children?', function $BeginNode_simple_children$ques$3() { + var self = this; + + return $send(self.$children(), 'none?', [], function $$4(child){ + + + if (child == null) child = nil;; + return $$('COMPLEX_CHILDREN')['$include?'](child.$type());}, 1) + }, 0); + return $def(self, '$compile_inline_children', function $$compile_inline_children(children, level) { + var self = this, processed_children = nil; + + + processed_children = $send(children, 'map', [], function $$5(child){var self = $$5.$$s == null ? this : $$5.$$s; + + + + if (child == null) child = nil;; + return self.$process(child, level);}, {$$arity: 1, $$s: self}); + return $send($send(processed_children, 'reject', [], "empty?".$to_proc()), 'each_with_index', [], function $$6(child, idx){var self = $$6.$$s == null ? this : $$6.$$s; + + + + if (child == null) child = nil;; + + if (idx == null) idx = nil;; + if (!$eqeq(idx, 0)) { + self.$push(self.$fragment(", ", $hash2(["loc"], {"loc": false}))) + }; + return self.$push(child);}, {$$arity: 2, $$s: self}); + }, 2); + })($nesting[0], $$('ScopeNode'), $nesting); + return (function($base, $super) { + var self = $klass($base, $super, 'KwBeginNode'); + + + return self.$handle("kwbegin") + })($nesting[0], $$('BeginNode')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/yield"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def; + + Opal.add_stubs('require,find_yielding_scope,uses_block!,block_name,block_name=,-,yields_single_arg?,children,push,expr,first,wrap,s,uses_splat?,scope,def?,parent,!,==,size,any?,type,handle,compile_call'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'BaseYieldNode'); + + + + + $def(self, '$compile_call', function $$compile_call() { + var self = this, yielding_scope = nil, $ret_or_1 = nil, $writer = nil, block_name = nil; + + + yielding_scope = self.$find_yielding_scope(); + yielding_scope['$uses_block!'](); + if ($truthy(($ret_or_1 = yielding_scope.$block_name()))) { + $ret_or_1 + } else { + + $writer = ["$yield"]; + $send(yielding_scope, 'block_name=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + block_name = yielding_scope.$block_name(); + if ($truthy(self['$yields_single_arg?'](self.$children()))) { + + self.$push(self.$expr(self.$children().$first())); + return self.$wrap("Opal.yield1(" + (block_name) + ", ", ")"); + } else { + + self.$push(self.$expr($send(self, 's', ["arglist"].concat($to_a(self.$children()))))); + if ($truthy(self['$uses_splat?'](self.$children()))) { + return self.$wrap("Opal.yieldX(" + (block_name) + ", ", ")") + } else { + return self.$wrap("Opal.yieldX(" + (block_name) + ", [", "])") + }; + }; + }, 0); + + $def(self, '$find_yielding_scope', function $$find_yielding_scope() { + var $a, self = this, working = nil; + + + working = self.$scope(); + while ($truthy(working)) { + + if (($truthy(working.$block_name()) || ($truthy(working['$def?']())))) { + break; + }; + working = working.$parent(); + }; + return working; + }, 0); + + $def(self, '$yields_single_arg?', function $BaseYieldNode_yields_single_arg$ques$1(children) { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$uses_splat?'](children)['$!']()))) { + return children.$size()['$=='](1) + } else { + return $ret_or_1 + } + }, 1); + return $def(self, '$uses_splat?', function $BaseYieldNode_uses_splat$ques$2(children) { + + return $send(children, 'any?', [], function $$3(child){ + + + if (child == null) child = nil;; + return child.$type()['$==']("splat");}, 1) + }, 1); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'YieldNode'); + + + + self.$handle("yield"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$compile_call() + }, 0); + })($nesting[0], $$('BaseYieldNode')); + return (function($base, $super) { + var self = $klass($base, $super, 'ReturnableYieldNode'); + + + + self.$handle("returnable_yield"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$compile_call(); + return self.$wrap("return ", ";"); + }, 0); + })($nesting[0], $$('BaseYieldNode')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/rescue"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $def = Opal.def, $range = Opal.range, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq; + + Opal.add_stubs('require,handle,children,push,in_ensure,line,stmt,body_sexp,indent,has_rescue_else?,unshift,rescue_else_code,process,compiler,ensr_sexp,wrap_in_closure?,await_encountered,scope,wrap,returns,begn,ensr,s,recv?,expr?,rescue_else_sexp,stmt?,detect,[],!=,type,rescue_else_sexp=,-,handle_rescue_else_manually?,in_rescue,body_code,each_with_index,==,retry_id,body,nil?,!,in_ensure?,gen_retry_id,attr_reader,expr,klasses,lvar,updated,in_resbody,rescue_body,klasses_sexp,in_resbody?,error,current_rescue'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'EnsureNode'); + + + + self.$handle("ensure"); + self.$children("begn", "ensr"); + + $def(self, '$compile', function $$compile() { + var self = this; + + + self.$push("try {"); + $send(self, 'in_ensure', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s; + + return self.$line(self.$stmt(self.$body_sexp()))}, {$$arity: 0, $$s: self}); + self.$line("} finally {"); + $send(self, 'indent', [], function $$2(){var self = $$2.$$s == null ? this : $$2.$$s; + if (self.level == null) self.level = nil; + + if ($truthy(self['$has_rescue_else?']())) { + + self.$unshift("var $no_errors = true; "); + self.$line("var $rescue_else_result;"); + self.$line("if ($no_errors) { "); + $send(self, 'indent', [], function $$3(){var self = $$3.$$s == null ? this : $$3.$$s; + + + self.$line("$rescue_else_result = (function() {"); + $send(self, 'indent', [], function $$4(){var self = $$4.$$s == null ? this : $$4.$$s; + + return self.$line(self.$stmt(self.$rescue_else_code()))}, {$$arity: 0, $$s: self}); + return self.$line("})();");}, {$$arity: 0, $$s: self}); + self.$line("}"); + self.$line(self.$compiler().$process(self.$ensr_sexp(), self.level)); + return self.$line("if ($no_errors) { return $rescue_else_result; }"); + } else { + return self.$line(self.$compiler().$process(self.$ensr_sexp(), self.level)) + }}, {$$arity: 0, $$s: self}); + self.$line("}"); + if ($truthy(self['$wrap_in_closure?']())) { + if ($truthy(self.$scope().$await_encountered())) { + return self.$wrap("(await (async function() { ", "; })())") + } else { + return self.$wrap("(function() { ", "; })()") + } + } else { + return nil + }; + }, 0); + + $def(self, '$body_sexp', function $$body_sexp() { + var self = this; + + if ($truthy(self['$wrap_in_closure?']())) { + return self.$compiler().$returns(self.$begn()) + } else { + return self.$begn() + } + }, 0); + + $def(self, '$ensr_sexp', function $$ensr_sexp() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$ensr()))) { + return $ret_or_1 + } else { + return self.$s("nil") + } + }, 0); + + $def(self, '$wrap_in_closure?', function $EnsureNode_wrap_in_closure$ques$5() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self['$recv?']())) ? ($ret_or_2) : (self['$expr?']()))))) { + return $ret_or_1 + } else { + return self['$has_rescue_else?']() + } + }, 0); + return $def(self, '$rescue_else_code', function $$rescue_else_code() { + var self = this, rescue_else_code = nil; + + + rescue_else_code = self.$scope().$rescue_else_sexp(); + if (!$truthy(self['$stmt?']())) { + rescue_else_code = self.$compiler().$returns(rescue_else_code) + }; + return rescue_else_code; + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'RescueNode'); + + var $proto = self.$$prototype; + + $proto.retry_id = nil; + + self.$handle("rescue"); + self.$children("body"); + + $def(self, '$compile', function $$compile() { + var self = this, $writer = nil, _has_rescue_handlers = nil; + + + + $writer = [$send(self.$children()['$[]']($range(1, -1, false)), 'detect', [], function $$6(sexp){var $ret_or_1 = nil; + + + + if (sexp == null) sexp = nil;; + if ($truthy(($ret_or_1 = sexp))) { + return sexp.$type()['$!=']("resbody") + } else { + return $ret_or_1 + };}, 1)]; + $send(self.$scope(), 'rescue_else_sexp=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + _has_rescue_handlers = false; + if ($truthy(self['$handle_rescue_else_manually?']())) { + self.$line("var $no_errors = true;") + }; + $send(self, 'in_rescue', [self], function $$7(){var self = $$7.$$s == null ? this : $$7.$$s; + + + self.$push("try {"); + $send(self, 'indent', [], function $$8(){var self = $$8.$$s == null ? this : $$8.$$s; + + return self.$line(self.$stmt(self.$body_code()))}, {$$arity: 0, $$s: self}); + self.$line("} catch ($err) {"); + $send(self, 'indent', [], function $$9(){var self = $$9.$$s == null ? this : $$9.$$s; + + + if ($truthy(self['$has_rescue_else?']())) { + self.$line("$no_errors = false;") + }; + $send(self.$children()['$[]']($range(1, -1, false)), 'each_with_index', [], function $$10(child, idx){var self = $$10.$$s == null ? this : $$10.$$s; + if (self.level == null) self.level = nil; + + + + if (child == null) child = nil;; + + if (idx == null) idx = nil;; + if (!($truthy(child) && ($eqeq(child.$type(), "resbody")))) { + return nil; + }; + _has_rescue_handlers = true; + if (!$eqeq(idx, 0)) { + self.$push(" else ") + }; + return self.$line(self.$process(child, self.level));}, {$$arity: 2, $$s: self}); + return self.$push(" else { throw $err; }");}, {$$arity: 0, $$s: self}); + self.$line("}"); + if ($truthy(self['$handle_rescue_else_manually?']())) { + + self.$push("finally {"); + $send(self, 'indent', [], function $$11(){var self = $$11.$$s == null ? this : $$11.$$s; + + + self.$line("if ($no_errors) { "); + $send(self, 'indent', [], function $$12(){var self = $$12.$$s == null ? this : $$12.$$s; + + return self.$line(self.$stmt(self.$rescue_else_code()))}, {$$arity: 0, $$s: self}); + return self.$line("}");}, {$$arity: 0, $$s: self}); + self.$push("}"); + }; + if ($truthy(self.$retry_id())) { + return self.$wrap("" + (self.$retry_id()) + ": do { ", " break; } while(1)") + } else { + return nil + };}, {$$arity: 0, $$s: self}); + if (($truthy(self['$expr?']()) || ($truthy(self['$recv?']())))) { + if ($truthy(self.$scope().$await_encountered())) { + return self.$wrap("(await (async function() { ", "})())") + } else { + return self.$wrap("(function() { ", "})()") + } + } else { + return nil + }; + }, 0); + + $def(self, '$body_code', function $$body_code() { + var self = this, body_code = nil; + + + body_code = (($truthy(self.$body()['$nil?']()) || ($eqeq(self.$body().$type(), "resbody"))) ? (self.$s("nil")) : (self.$body())); + if (!$truthy(self['$stmt?']())) { + body_code = self.$compiler().$returns(body_code) + }; + return body_code; + }, 0); + + $def(self, '$rescue_else_code', function $$rescue_else_code() { + var self = this, rescue_else_code = nil; + + + rescue_else_code = self.$scope().$rescue_else_sexp(); + if (!$truthy(self['$stmt?']())) { + rescue_else_code = self.$compiler().$returns(rescue_else_code) + }; + return rescue_else_code; + }, 0); + + $def(self, '$handle_rescue_else_manually?', function $RescueNode_handle_rescue_else_manually$ques$13() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$in_ensure?']()['$!']()))) { + return self['$has_rescue_else?']() + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$gen_retry_id', function $$gen_retry_id() { + var self = this, $ret_or_1 = nil; + + return (self.retry_id = ($truthy(($ret_or_1 = self.retry_id)) ? ($ret_or_1) : (self.$scope().$gen_retry_id()))) + }, 0); + return self.$attr_reader("retry_id"); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'ResBodyNode'); + + + + self.$handle("resbody"); + self.$children("klasses_sexp", "lvar", "body"); + + $def(self, '$compile', function $$compile() { + var self = this; + + + self.$push("if (Opal.rescue($err, ", self.$expr(self.$klasses()), ")) {"); + $send(self, 'indent', [], function $$14(){var self = $$14.$$s == null ? this : $$14.$$s; + + + if ($truthy(self.$lvar())) { + self.$push(self.$expr(self.$lvar().$updated(nil, [].concat($to_a(self.$lvar().$children())).concat([self.$s("js_tmp", "$err")])))) + }; + self.$line("try {"); + $send(self, 'indent', [], function $$15(){var self = $$15.$$s == null ? this : $$15.$$s; + + return $send(self, 'in_resbody', [], function $$16(){var self = $$16.$$s == null ? this : $$16.$$s; + + return self.$line(self.$stmt(self.$rescue_body()))}, {$$arity: 0, $$s: self})}, {$$arity: 0, $$s: self}); + return self.$line("} finally { Opal.pop_exception(); }");}, {$$arity: 0, $$s: self}); + return self.$line("}"); + }, 0); + + $def(self, '$klasses', function $$klasses() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$klasses_sexp()))) { + return $ret_or_1 + } else { + return self.$s("array", self.$s("const", nil, "StandardError")) + } + }, 0); + return $def(self, '$rescue_body', function $$rescue_body() { + var self = this, body_code = nil, $ret_or_1 = nil; + + + body_code = ($truthy(($ret_or_1 = self.$body())) ? ($ret_or_1) : (self.$s("nil"))); + if (!$truthy(self['$stmt?']())) { + body_code = self.$compiler().$returns(body_code) + }; + return body_code; + }, 0); + })($nesting[0], $$('Base')); + return (function($base, $super) { + var self = $klass($base, $super, 'RetryNode'); + + + + self.$handle("retry"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + if (!$truthy(self['$in_resbody?']())) { + self.$error("Invalid retry") + }; + return self.$push("continue " + (self.$scope().$current_rescue().$gen_retry_id())); + }, 0); + })($nesting[0], $$('Base')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/super"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $slice = Opal.slice, $truthy = Opal.truthy, $send = Opal.send, $def = Opal.def, $to_ary = Opal.to_ary, $eqeq = Opal.eqeq, $not = Opal.not, $eqeqeq = Opal.eqeqeq, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $rb_gt = Opal.rb_gt; + + Opal.add_stubs('require,include?,type,s,helper,push,compile_receiver,compile_method_body,compile_method_name,compile_arguments,compile_block_pass,private,def?,scope,find_parent_def,to_s,mid,def_scope,identify!,self,method_id,def_scope_identity,defined_check_param,allow_stubs,super_chain,join,map,implicit_arguments_param,super_method_invocation,iter?,super_block_invocation,raise,handle,wrap,uses_block!,compile_using_send,==,iter,block_name,implicit_arglist,!,<<,new,each,children,original_args,[],===,+,[]=,-,>,meta,empty?'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'BaseSuperNode'); + + var $proto = self.$$prototype; + + $proto.sexp = $proto.def_scope = nil; + + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $b, $c, $yield = $$initialize.$$p || nil, self = this, args = nil, rest = nil, last_child = nil; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + args = [].concat($to_a(self.sexp)); + $b = [].concat($to_a(args)), $c = $b.length - 1, $c = ($c < 0) ? 0 : $c, (rest = $slice.call($b, 0, $c)), (last_child = ($b[$c] == null ? nil : $b[$c])), $b; + if (($truthy(last_child) && ($truthy(["iter", "block_pass"]['$include?'](last_child.$type()))))) { + + self.iter = last_child; + args = rest; + } else { + self.iter = self.$s("js_tmp", "null") + }; + self.arglist = $send(self, 's', ["arglist"].concat($to_a(args))); + return (self.recvr = self.$s("self")); + }, -1); + + $def(self, '$compile_using_send', function $$compile_using_send() { + var self = this; + + + self.$helper("send2"); + self.$push("$send2("); + self.$compile_receiver(); + self.$compile_method_body(); + self.$compile_method_name(); + self.$compile_arguments(); + self.$compile_block_pass(); + return self.$push(")"); + }, 0); + self.$private(); + + $def(self, '$def_scope', function $$def_scope() { + var self = this, $ret_or_1 = nil; + + return (self.def_scope = ($truthy(($ret_or_1 = self.def_scope)) ? ($ret_or_1) : ($truthy(self.$scope()['$def?']()) ? (self.$scope()) : (self.$scope().$find_parent_def())))) + }, 0); + + $def(self, '$defined_check_param', function $$defined_check_param() { + + return "false" + }, 0); + + $def(self, '$implicit_arguments_param', function $$implicit_arguments_param() { + + return "false" + }, 0); + + $def(self, '$method_id', function $$method_id() { + var self = this; + + return self.$def_scope().$mid().$to_s() + }, 0); + + $def(self, '$def_scope_identity', function $$def_scope_identity() { + var self = this; + + return self.$def_scope()['$identify!'](self.$def_scope().$mid()) + }, 0); + + $def(self, '$allow_stubs', function $$allow_stubs() { + + return "true" + }, 0); + + $def(self, '$super_method_invocation', function $$super_method_invocation() { + var self = this; + + + self.$helper("find_super"); + return "$find_super(" + (self.$scope().$self()) + ", '" + (self.$method_id()) + "', " + (self.$def_scope_identity()) + ", " + (self.$defined_check_param()) + ", " + (self.$allow_stubs()) + ")"; + }, 0); + + $def(self, '$super_block_invocation', function $$super_block_invocation() { + var $a, $b, self = this, chain = nil, cur_defn = nil, mid = nil, trys = nil; + + + self.$helper("find_block_super"); + $b = self.$scope().$super_chain(), $a = $to_ary($b), (chain = ($a[0] == null ? nil : $a[0])), (cur_defn = ($a[1] == null ? nil : $a[1])), (mid = ($a[2] == null ? nil : $a[2])), $b; + trys = $send(chain, 'map', [], function $$1(c){ + + + if (c == null) c = nil;; + return "" + (c) + ".$$def";}, 1).$join(" || "); + return "$find_block_super(" + (self.$scope().$self()) + ", " + (mid) + ", (" + (trys) + " || " + (cur_defn) + "), " + (self.$defined_check_param()) + ", " + (self.$implicit_arguments_param()) + ")"; + }, 0); + + $def(self, '$compile_method_body', function $$compile_method_body() { + var self = this; + + + self.$push(", "); + if ($truthy(self.$scope()['$def?']())) { + return self.$push(self.$super_method_invocation()) + } else if ($truthy(self.$scope()['$iter?']())) { + return self.$push(self.$super_block_invocation()) + } else { + return self.$raise("super must be called from method body or block") + }; + }, 0); + return $def(self, '$compile_method_name', function $$compile_method_name() { + var $a, $b, self = this, _chain = nil, _cur_defn = nil, mid = nil; + + if ($truthy(self.$scope()['$def?']())) { + return self.$push(", '" + (self.$method_id()) + "'") + } else if ($truthy(self.$scope()['$iter?']())) { + + $b = self.$scope().$super_chain(), $a = $to_ary($b), (_chain = ($a[0] == null ? nil : $a[0])), (_cur_defn = ($a[1] == null ? nil : $a[1])), (mid = ($a[2] == null ? nil : $a[2])), $b; + return self.$push(", " + (mid)); + } else { + return nil + } + }, 0); + })($nesting[0], $$('CallNode')); + (function($base, $super) { + var self = $klass($base, $super, 'DefinedSuperNode'); + + + + self.$handle("defined_super"); + + $def(self, '$allow_stubs', function $$allow_stubs() { + + return "false" + }, 0); + + $def(self, '$defined_check_param', function $$defined_check_param() { + + return "true" + }, 0); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$compile_receiver(); + self.$compile_method_body(); + return self.$wrap("((", ") != null ? \"super\" : nil)"); + }, 0); + })($nesting[0], $$('BaseSuperNode')); + (function($base, $super) { + var self = $klass($base, $super, 'SuperNode'); + + + + self.$handle("super"); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + if ($truthy(self.$scope()['$def?']())) { + return self.$scope()['$uses_block!']() + } else { + return nil + }; + }, -1); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$compile_using_send() + }, 0); + })($nesting[0], $$('BaseSuperNode')); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ZsuperNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$handle("zsuper"); + + $def(self, '$implicit_arguments_param', function $$implicit_arguments_param() { + + return "true" + }, 0); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $yield = $$initialize.$$p || nil, self = this, $ret_or_1 = nil; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + if ($eqeq(self.$iter().$type(), "iter")) { + return nil + } else { + + self.$scope()['$uses_block!'](); + return (self.iter = self.$s("js_tmp", ($truthy(($ret_or_1 = self.$scope().$block_name())) ? ($ret_or_1) : ("$yield")))); + }; + }, -1); + + $def(self, '$compile', function $$compile() { + var self = this, implicit_args = nil, block_pass = nil; + + + if ($truthy(self.$def_scope())) { + + implicit_args = self.$implicit_arglist(); + if (($truthy(self.$block_name()) && ($not(self.$iter())))) { + + block_pass = self.$s("block_pass", self.$s("lvar", self.$block_name())); + implicit_args['$<<'](block_pass); + }; + self.arglist = $send(self, 's', ["arglist"].concat($to_a(implicit_args))); + }; + return self.$compile_using_send(); + }, 0); + + $def(self, '$implicit_arglist', function $$implicit_arglist() { + var self = this, args = nil, kwargs = nil, same_arg_counter = nil; + + + args = []; + kwargs = []; + same_arg_counter = $$('Hash').$new(0); + $send(self.$def_scope().$original_args().$children(), 'each', [], function $$2(sexp){var self = $$2.$$s == null ? this : $$2.$$s, lvar_name = nil, $ret_or_1 = nil, arg_node = nil, $writer = nil, key_name = nil; + + + + if (sexp == null) sexp = nil;; + lvar_name = sexp.$children()['$[]'](0); + if (($eqeqeq("arg", ($ret_or_1 = sexp.$type())) || ($eqeqeq("optarg", $ret_or_1)))) { + + arg_node = self.$s("lvar", lvar_name); + if ($eqeq(lvar_name['$[]'](0), "_")) { + + + $writer = [lvar_name, $rb_plus(same_arg_counter['$[]'](lvar_name), 1)]; + $send(same_arg_counter, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy($rb_gt(same_arg_counter['$[]'](lvar_name), 1))) { + arg_node = self.$s("js_tmp", "" + (lvar_name) + "_$" + (same_arg_counter['$[]'](lvar_name))) + }; + }; + return args['$<<'](arg_node); + } else if ($eqeqeq("restarg", $ret_or_1)) { + + arg_node = ($truthy(lvar_name) ? (self.$s("lvar", lvar_name)) : (self.$s("js_tmp", "$rest_arg"))); + return args['$<<'](self.$s("splat", arg_node)); + } else if (($eqeqeq("kwarg", $ret_or_1) || ($eqeqeq("kwoptarg", $ret_or_1)))) { + + key_name = sexp.$meta()['$[]']("arg_name"); + return kwargs['$<<'](self.$s("pair", self.$s("sym", key_name), self.$s("lvar", lvar_name))); + } else if ($eqeqeq("kwrestarg", $ret_or_1)) { + + arg_node = ($truthy(lvar_name) ? (self.$s("lvar", lvar_name)) : (self.$s("js_tmp", "$kw_rest_arg"))); + return kwargs['$<<'](self.$s("kwsplat", arg_node)); + } else { + return nil + };}, {$$arity: 1, $$s: self}); + if (!$truthy(kwargs['$empty?']())) { + args['$<<']($send(self, 's', ["hash"].concat($to_a(kwargs)))) + }; + return args; + }, 0); + return $def(self, '$block_name', function $$block_name() { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq($$$($$$($$('Opal'), 'Nodes'), 'IterNode'), ($ret_or_1 = self.$def_scope()))) { + return self.$def_scope().$block_name() + } else if ($eqeqeq($$$($$$($$('Opal'), 'Nodes'), 'DefNode'), $ret_or_1)) { + return self.$def_scope().$block_name() + } else { + return self.$raise("Don't know what to do with super in the scope " + (self.$def_scope())) + } + }, 0); + })($nesting[0], $$('SuperNode'), $nesting); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/version"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set; + + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return $const_set($nesting[0], 'VERSION', "1.4.1") + })($nesting[0], $nesting) +}; + +Opal.modules["opal/nodes/top"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $def = Opal.def; + + Opal.add_stubs('require,handle,children,top_scope=,compiler,-,push,version_comment,in_scope,==,body,s,line,use_strict?,stmt,stmts,is_a?,eval?,add_temp,add_used_helpers,to_vars,scope,compile_method_stubs,compile_irb_vars,compile_end_construct,opening,closing,await_encountered,requirable?,unshift,inspect,module_name,file,esm?,returns,irb?,each,to_a,helpers,method_missing?,method_calls,join,map,to_proc,empty?,eof_content'); + + self.$require("pathname"); + self.$require("opal/version"); + self.$require("opal/nodes/scope"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'TopNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$handle("top"); + self.$children("body"); + + $def(self, '$compile', function $$compile() { + var self = this, $writer = nil; + + + + $writer = [self]; + $send(self.$compiler(), 'top_scope=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.$push(self.$version_comment()); + $send(self, 'in_scope', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s, body_code = nil; + if (self.define_nesting == null) self.define_nesting = nil; + if (self.define_self == null) self.define_self = nil; + if (self.define_relative_access == null) self.define_relative_access = nil; + if (self.define_absolute_const == null) self.define_absolute_const = nil; + + if ($eqeq(self.$body(), self.$s("nil"))) { + return self.$line("return Opal.nil;") + } else { + + if ($truthy(self.$compiler()['$use_strict?']())) { + self.$line("\"use strict\";") + }; + body_code = self.$stmt(self.$stmts()); + if (!$truthy(body_code['$is_a?']($$('Array')))) { + body_code = [body_code] + }; + if ($truthy(self.$compiler()['$eval?']())) { + if ($truthy(self.define_nesting)) { + self.$add_temp("$nesting = self.$$is_a_module ? [self] : [self.$$class]") + } + } else { + + if ($truthy(self.define_self)) { + self.$add_temp("self = Opal.top") + }; + if ($truthy(self.define_nesting)) { + self.$add_temp("$nesting = []") + }; + }; + if ($truthy(self.define_relative_access)) { + self.$add_temp("$$ = Opal.$r($nesting)") + }; + self.$add_temp("nil = Opal.nil"); + if ($truthy(self.define_absolute_const)) { + self.$add_temp("$$$ = Opal.$$$") + }; + self.$add_used_helpers(); + self.$line(self.$scope().$to_vars()); + self.$compile_method_stubs(); + self.$compile_irb_vars(); + self.$compile_end_construct(); + return self.$line(body_code); + }}, {$$arity: 0, $$s: self}); + self.$opening(); + return self.$closing(); + }, 0); + + $def(self, '$opening', function $$opening() { + var self = this, async_prefix = nil; + + + if ($truthy(self.$await_encountered())) { + async_prefix = "async " + }; + if ($truthy(self.$compiler()['$requirable?']())) { + return self.$unshift("Opal.modules[" + ($$$($$('Opal'), 'Compiler').$module_name(self.$compiler().$file()).$inspect()) + "] = " + (async_prefix) + "function(Opal) {") + } else if ($truthy(self.$compiler()['$eval?']())) { + return self.$unshift("(" + (async_prefix) + "function(Opal, self) {") + } else if ($truthy(self.$compiler()['$esm?']())) { + return self.$unshift("export default Opal.queue(" + (async_prefix) + "function(Opal) {") + } else { + return self.$unshift("Opal.queue(" + (async_prefix) + "function(Opal) {") + }; + }, 0); + + $def(self, '$closing', function $$closing() { + var self = this; + + if ($truthy(self.$compiler()['$requirable?']())) { + return self.$line("};\n") + } else if ($truthy(self.$compiler()['$eval?']())) { + return self.$line("})(Opal, self);") + } else { + return self.$line("});\n") + } + }, 0); + + $def(self, '$stmts', function $$stmts() { + var self = this; + + return self.$compiler().$returns(self.$body()) + }, 0); + + $def(self, '$absolute_const', function $$absolute_const() { + var self = this; + + + self.define_absolute_const = true; + return "$$$"; + }, 0); + + $def(self, '$compile_irb_vars', function $$compile_irb_vars() { + var self = this; + + if ($truthy(self.$compiler()['$irb?']())) { + return self.$line("if (!Opal.irb_vars) { Opal.irb_vars = {}; }") + } else { + return nil + } + }, 0); + + $def(self, '$add_used_helpers', function $$add_used_helpers() { + var self = this; + + return $send(self.$compiler().$helpers().$to_a(), 'each', [], function $$2(h){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (h == null) h = nil;; + return self.$add_temp("$" + (h) + " = Opal." + (h));}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$compile_method_stubs', function $$compile_method_stubs() { + var self = this, calls = nil, stubs = nil; + + if ($truthy(self.$compiler()['$method_missing?']())) { + + calls = self.$compiler().$method_calls(); + stubs = $send(calls.$to_a(), 'map', [], "to_s".$to_proc()).$join(","); + if ($truthy(stubs['$empty?']())) { + return nil + } else { + return self.$line("Opal.add_stubs('" + (stubs) + "');") + }; + } else { + return nil + } + }, 0); + + $def(self, '$compile_end_construct', function $$compile_end_construct() { + var self = this, content = nil; + + if ($truthy((content = self.$compiler().$eof_content()))) { + + self.$line("var $__END__ = Opal.Object.$new();"); + return self.$line("$__END__.$read = function() { return " + (content.$inspect()) + "; };"); + } else { + return nil + } + }, 0); + return $def(self, '$version_comment', function $$version_comment() { + + return "/* Generated by Opal " + ($$$($$('Opal'), 'VERSION')) + " */" + }, 0); + })($nesting[0], $$('ScopeNode'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/while"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def; + + Opal.add_stubs('require,handle,children,js_truthy,test,with_temp,in_while,compiler,wrap_in_closure?,[]=,while_loop,-,indent,stmt,body,uses_redo?,compile_with_redo,compile_without_redo,await_encountered,scope,wrap,private,push,compile_while,while_open,while_close,line,[],expr?,recv?'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'WhileNode'); + + + + self.$handle("while"); + self.$children("test", "body"); + + $def(self, '$compile', function $$compile() { + var self = this, test_code = nil; + + + test_code = self.$js_truthy(self.$test()); + $send(self, 'with_temp', [], function $$1(redo_var){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (redo_var == null) redo_var = nil;; + return $send(self.$compiler(), 'in_while', [], function $$2(){var self = $$2.$$s == null ? this : $$2.$$s, $writer = nil, body_code = nil; + + + if ($truthy(self['$wrap_in_closure?']())) { + + $writer = ["closure", true]; + $send(self.$while_loop(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + + $writer = ["redo_var", redo_var]; + $send(self.$while_loop(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + body_code = $send(self, 'indent', [], function $$3(){var self = $$3.$$s == null ? this : $$3.$$s; + + return self.$stmt(self.$body())}, {$$arity: 0, $$s: self}); + if ($truthy(self['$uses_redo?']())) { + return self.$compile_with_redo(test_code, body_code, redo_var) + } else { + return self.$compile_without_redo(test_code, body_code) + };}, {$$arity: 0, $$s: self});}, {$$arity: 1, $$s: self}); + if ($truthy(self['$wrap_in_closure?']())) { + if ($truthy(self.$scope().$await_encountered())) { + return self.$wrap("(await (async function() {", "; return nil; })())") + } else { + return self.$wrap("(function() {", "; return nil; })()") + } + } else { + return nil + }; + }, 0); + self.$private(); + + $def(self, '$compile_with_redo', function $$compile_with_redo(test_code, body_code, redo_var) { + var self = this; + + + self.$push("" + (redo_var) + " = false; "); + return self.$compile_while([redo_var, " || ", test_code], ["" + (redo_var) + " = false;", body_code]); + }, 3); + + $def(self, '$compile_without_redo', function $$compile_without_redo(test_code, body_code) { + var self = this; + + return self.$compile_while([test_code], [body_code]) + }, 2); + + $def(self, '$compile_while', function $$compile_while(test_code, body_code) { + var self = this; + + + $send(self, 'push', [self.$while_open()].concat($to_a(test_code)).concat([self.$while_close()])); + $send(self, 'indent', [], function $$4(){var self = $$4.$$s == null ? this : $$4.$$s; + + return $send(self, 'line', $to_a(body_code))}, {$$arity: 0, $$s: self}); + return self.$line("}"); + }, 2); + + $def(self, '$while_open', function $$while_open() { + + return "while (" + }, 0); + + $def(self, '$while_close', function $$while_close() { + + return ") {" + }, 0); + + $def(self, '$uses_redo?', function $WhileNode_uses_redo$ques$5() { + var self = this; + + return self.$while_loop()['$[]']("use_redo") + }, 0); + return $def(self, '$wrap_in_closure?', function $WhileNode_wrap_in_closure$ques$6() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$expr?']()))) { + return $ret_or_1 + } else { + return self['$recv?']() + } + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'UntilNode'); + + + + self.$handle("until"); + self.$private(); + + $def(self, '$while_open', function $$while_open() { + + return "while (!(" + }, 0); + return $def(self, '$while_close', function $$while_close() { + + return ")) {" + }, 0); + })($nesting[0], $$('WhileNode')); + (function($base, $super) { + var self = $klass($base, $super, 'WhilePostNode'); + + + + self.$handle("while_post"); + self.$private(); + + $def(self, '$compile_while', function $$compile_while(test_code, body_code) { + var self = this; + + + self.$push("do {"); + $send(self, 'indent', [], function $$7(){var self = $$7.$$s == null ? this : $$7.$$s; + + return $send(self, 'line', $to_a(body_code))}, {$$arity: 0, $$s: self}); + return $send(self, 'line', ["} ", self.$while_open()].concat($to_a(test_code)).concat([self.$while_close()])); + }, 2); + return $def(self, '$while_close', function $$while_close() { + + return ");" + }, 0); + })($nesting[0], $$('WhileNode')); + return (function($base, $super) { + var self = $klass($base, $super, 'UntilPostNode'); + + + + self.$handle("until_post"); + self.$private(); + + $def(self, '$while_open', function $$while_open() { + + return "while(!(" + }, 0); + return $def(self, '$while_close', function $$while_close() { + + return "));" + }, 0); + })($nesting[0], $$('WhilePostNode')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/hash"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $def = Opal.def, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $to_ary = Opal.to_ary, $hash2 = Opal.hash2, $rb_minus = Opal.rb_minus; + + Opal.add_stubs('require,handle,attr_accessor,each,children,===,type,<<,[],all?,keys,include?,has_kwsplat,compile_merge,simple_keys?,compile_hash2,compile_hash,helper,==,empty?,expr,s,each_with_index,push,wrap,times,size,inspect,to_s,values,[]=,-,join,value'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'HashNode'); + + + + self.$handle("hash"); + self.$attr_accessor("has_kwsplat", "keys", "values"); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + self.has_kwsplat = false; + self.keys = []; + self.values = []; + return $send(self.$children(), 'each', [], function $$1(child){var self = $$1.$$s == null ? this : $$1.$$s, $ret_or_1 = nil; + if (self.keys == null) self.keys = nil; + if (self.values == null) self.values = nil; + + + + if (child == null) child = nil;; + if ($eqeqeq("kwsplat", ($ret_or_1 = child.$type()))) { + return (self.has_kwsplat = true) + } else if ($eqeqeq("pair", $ret_or_1)) { + + self.keys['$<<'](child.$children()['$[]'](0)); + return self.values['$<<'](child.$children()['$[]'](1)); + } else { + return nil + };}, {$$arity: 1, $$s: self}); + }, -1); + + $def(self, '$simple_keys?', function $HashNode_simple_keys$ques$2() { + var self = this; + + return $send(self.$keys(), 'all?', [], function $$3(key){ + + + if (key == null) key = nil;; + return ["sym", "str"]['$include?'](key.$type());}, 1) + }, 0); + + $def(self, '$compile', function $$compile() { + var self = this; + + if ($truthy(self.$has_kwsplat())) { + return self.$compile_merge() + } else if ($truthy(self['$simple_keys?']())) { + return self.$compile_hash2() + } else { + return self.$compile_hash() + } + }, 0); + + $def(self, '$compile_merge', function $$compile_merge() { + var $a, self = this, result = nil, seq = nil; + + + self.$helper("hash"); + $a = [[], []], (result = $a[0]), (seq = $a[1]), $a; + $send(self.$children(), 'each', [], function $$4(child){var self = $$4.$$s == null ? this : $$4.$$s; + + + + if (child == null) child = nil;; + if ($eqeq(child.$type(), "kwsplat")) { + + if (!$truthy(seq['$empty?']())) { + result['$<<'](self.$expr($send(self, 's', ["hash"].concat($to_a(seq))))) + }; + result['$<<'](self.$expr(child)); + return (seq = []); + } else { + return seq['$<<'](child) + };}, {$$arity: 1, $$s: self}); + if (!$truthy(seq['$empty?']())) { + result['$<<'](self.$expr($send(self, 's', ["hash"].concat($to_a(seq))))) + }; + return $send(result, 'each_with_index', [], function $$5(fragment, idx){var self = $$5.$$s == null ? this : $$5.$$s; + + + + if (fragment == null) fragment = nil;; + + if (idx == null) idx = nil;; + if ($eqeq(idx, 0)) { + return self.$push(fragment) + } else { + return self.$push(".$merge(", fragment, ")") + };}, {$$arity: 2, $$s: self}); + }, 0); + + $def(self, '$compile_hash', function $$compile_hash() { + var self = this; + + + self.$helper("hash"); + $send(self.$children(), 'each_with_index', [], function $$6(pair, idx){var $a, $b, self = $$6.$$s == null ? this : $$6.$$s, key = nil, value = nil; + + + + if (pair == null) pair = nil;; + + if (idx == null) idx = nil;; + $b = pair.$children(), $a = $to_ary($b), (key = ($a[0] == null ? nil : $a[0])), (value = ($a[1] == null ? nil : $a[1])), $b; + if (!$eqeq(idx, 0)) { + self.$push(", ") + }; + return self.$push(self.$expr(key), ", ", self.$expr(value));}, {$$arity: 2, $$s: self}); + return self.$wrap("$hash(", ")"); + }, 0); + return $def(self, '$compile_hash2', function $$compile_hash2() { + var $a, self = this, hash_obj = nil, hash_keys = nil; + + + $a = [$hash2([], {}), []], (hash_obj = $a[0]), (hash_keys = $a[1]), $a; + self.$helper("hash2"); + $send(self.$keys().$size(), 'times', [], function $$7(idx){var self = $$7.$$s == null ? this : $$7.$$s, key = nil, $writer = nil; + + + + if (idx == null) idx = nil;; + key = self.$keys()['$[]'](idx).$children()['$[]'](0).$to_s().$inspect(); + if (!$truthy(hash_obj['$include?'](key))) { + hash_keys['$<<'](key) + }; + + $writer = [key, self.$expr(self.$values()['$[]'](idx))]; + $send(hash_obj, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + $send(hash_keys, 'each_with_index', [], function $$8(key, idx){var self = $$8.$$s == null ? this : $$8.$$s; + + + + if (key == null) key = nil;; + + if (idx == null) idx = nil;; + if (!$eqeq(idx, 0)) { + self.$push(", ") + }; + self.$push("" + (key) + ": "); + return self.$push(hash_obj['$[]'](key));}, {$$arity: 2, $$s: self}); + return self.$wrap("$hash2([" + (hash_keys.$join(", ")) + "], {", "})"); + }, 0); + })($nesting[0], $$('Base')); + return (function($base, $super) { + var self = $klass($base, $super, 'KwSplatNode'); + + + + self.$handle("kwsplat"); + self.$children("value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$push("Opal.to_hash(", self.$expr(self.$value()), ")") + }, 0); + })($nesting[0], $$('Base')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/array"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $def = Opal.def; + + Opal.add_stubs('require,handle,empty?,children,push,each,==,type,expr,<<,fragment'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ArrayNode'); + + + + self.$handle("array"); + return $def(self, '$compile', function $$compile() { + var $a, self = this, code = nil, work = nil, join = nil; + + + if ($truthy(self.$children()['$empty?']())) { + return self.$push("[]") + }; + $a = [[], []], (code = $a[0]), (work = $a[1]), $a; + $send(self.$children(), 'each', [], function $$1(child){var self = $$1.$$s == null ? this : $$1.$$s, splat = nil, part = nil; + + + + if (child == null) child = nil;; + splat = child.$type()['$==']("splat"); + part = self.$expr(child); + if ($truthy(splat)) { + + if ($truthy(work['$empty?']())) { + if ($truthy(code['$empty?']())) { + code['$<<'](self.$fragment("[].concat("))['$<<'](part)['$<<'](self.$fragment(")")) + } else { + code['$<<'](self.$fragment(".concat("))['$<<'](part)['$<<'](self.$fragment(")")) + } + } else { + + if ($truthy(code['$empty?']())) { + code['$<<'](self.$fragment("["))['$<<'](work)['$<<'](self.$fragment("]")) + } else { + code['$<<'](self.$fragment(".concat(["))['$<<'](work)['$<<'](self.$fragment("])")) + }; + code['$<<'](self.$fragment(".concat("))['$<<'](part)['$<<'](self.$fragment(")")); + }; + return (work = []); + } else { + + if (!$truthy(work['$empty?']())) { + work['$<<'](self.$fragment(", ")) + }; + return work['$<<'](part); + };}, {$$arity: 1, $$s: self}); + if (!$truthy(work['$empty?']())) { + + join = [self.$fragment("["), work, self.$fragment("]")]; + if ($truthy(code['$empty?']())) { + code = join + } else { + code.$push([self.$fragment(".concat("), join, self.$fragment(")")]) + }; + }; + return self.$push(code); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/defined"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $eqeqeq = Opal.eqeqeq, $eqeq = Opal.eqeq, $def = Opal.def, $truthy = Opal.truthy, $to_a = Opal.to_a, $slice = Opal.slice, $send = Opal.send, $range = Opal.range; + + Opal.add_stubs('require,handle,children,===,type,value,push,inspect,to_s,==,[],size,compile_defined_send,wrap,compile_defined_ivar,compile_defined_super,compile_defined_yield,compile_defined_xstr,compile_defined_const,compile_defined_cvar,compile_defined_gvar,compile_defined_back_ref,compile_defined_nth_ref,compile_defined_array,respond_to?,__send__,new_temp,scope,expr,wrap_with_try_catch,mid_to_jsid,compile_defined,compile_send_recv_doesnt_raise,self,each,s,uses_block!,block_name,find_parent_def,nil?,relative_access,absolute_const,top_scope,class_variable_owner,helper,include?,each_with_index'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'DefinedNode'); + + + + self.$handle("defined?"); + self.$children("value"); + + $def(self, '$compile', function $$compile() { + var self = this, $ret_or_1 = nil; + + if (($eqeqeq("self", ($ret_or_1 = self.$value().$type())) || (($eqeqeq("nil", $ret_or_1) || (($eqeqeq("false", $ret_or_1) || ($eqeqeq("true", $ret_or_1)))))))) { + return self.$push(self.$value().$type().$to_s().$inspect()) + } else if (($eqeqeq("lvasgn", $ret_or_1) || (($eqeqeq("ivasgn", $ret_or_1) || (($eqeqeq("gvasgn", $ret_or_1) || (($eqeqeq("cvasgn", $ret_or_1) || (($eqeqeq("casgn", $ret_or_1) || (($eqeqeq("op_asgn", $ret_or_1) || (($eqeqeq("or_asgn", $ret_or_1) || ($eqeqeq("and_asgn", $ret_or_1)))))))))))))))) { + return self.$push("'assignment'") + } else if ($eqeqeq("lvar", $ret_or_1)) { + return self.$push("'local-variable'") + } else if ($eqeqeq("begin", $ret_or_1)) { + if (($eqeq(self.$value().$children().$size(), 1) && ($eqeq(self.$value().$children()['$[]'](0).$type(), "masgn")))) { + return self.$push("'assignment'") + } else { + return self.$push("'expression'") + } + } else if ($eqeqeq("send", $ret_or_1)) { + + self.$compile_defined_send(self.$value()); + return self.$wrap("(", " ? 'method' : nil)"); + } else if ($eqeqeq("ivar", $ret_or_1)) { + + self.$compile_defined_ivar(self.$value()); + return self.$wrap("(", " ? 'instance-variable' : nil)"); + } else if (($eqeqeq("zsuper", $ret_or_1) || ($eqeqeq("super", $ret_or_1)))) { + return self.$compile_defined_super() + } else if ($eqeqeq("yield", $ret_or_1)) { + + self.$compile_defined_yield(); + return self.$wrap("(", " ? 'yield' : nil)"); + } else if ($eqeqeq("xstr", $ret_or_1)) { + return self.$compile_defined_xstr(self.$value()) + } else if ($eqeqeq("const", $ret_or_1)) { + + self.$compile_defined_const(self.$value()); + return self.$wrap("(", " ? 'constant' : nil)"); + } else if ($eqeqeq("cvar", $ret_or_1)) { + + self.$compile_defined_cvar(self.$value()); + return self.$wrap("(", " ? 'class variable' : nil)"); + } else if ($eqeqeq("gvar", $ret_or_1)) { + + self.$compile_defined_gvar(self.$value()); + return self.$wrap("(", " ? 'global-variable' : nil)"); + } else if ($eqeqeq("back_ref", $ret_or_1)) { + + self.$compile_defined_back_ref(); + return self.$wrap("(", " ? 'global-variable' : nil)"); + } else if ($eqeqeq("nth_ref", $ret_or_1)) { + + self.$compile_defined_nth_ref(); + return self.$wrap("(", " ? 'global-variable' : nil)"); + } else if ($eqeqeq("array", $ret_or_1)) { + + self.$compile_defined_array(self.$value()); + return self.$wrap("(", " ? 'expression' : nil)"); + } else { + return self.$push("'expression'") + } + }, 0); + + $def(self, '$compile_defined', function $$compile_defined(node) { + var self = this, type = nil, node_tmp = nil; + + + type = node.$type(); + if ($truthy(self['$respond_to?']("compile_defined_" + (type)))) { + return self.$__send__("compile_defined_" + (type), node) + } else { + + node_tmp = self.$scope().$new_temp(); + self.$push("(" + (node_tmp) + " = ", self.$expr(node), ")"); + return node_tmp; + }; + }, 1); + + $def(self, '$wrap_with_try_catch', function $$wrap_with_try_catch(code) { + var self = this, returning_tmp = nil; + + + returning_tmp = self.$scope().$new_temp(); + self.$push("(" + (returning_tmp) + " = (function() { try {"); + self.$push(" return " + (code) + ";"); + self.$push("} catch ($err) {"); + self.$push(" if (Opal.rescue($err, [Opal.Exception])) {"); + self.$push(" try {"); + self.$push(" return false;"); + self.$push(" } finally { Opal.pop_exception() }"); + self.$push(" } else { throw $err; }"); + self.$push("}})())"); + return returning_tmp; + }, 1); + + $def(self, '$compile_send_recv_doesnt_raise', function $$compile_send_recv_doesnt_raise(recv_code) { + var self = this; + + return self.$wrap_with_try_catch(recv_code) + }, 1); + + $def(self, '$compile_defined_send', function $$compile_defined_send(node) { + var $a, self = this, recv = nil, method_name = nil, args = nil, mid = nil, recv_code = nil, recv_tmp = nil, recv_value_tmp = nil, meth_tmp = nil; + + + $a = [].concat($to_a(node)), (recv = ($a[0] == null ? nil : $a[0])), (method_name = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $a; + mid = self.$mid_to_jsid(method_name.$to_s()); + if ($truthy(recv)) { + + recv_code = self.$compile_defined(recv); + self.$push(" && "); + if ($eqeq(recv.$type(), "send")) { + + recv_code = self.$compile_send_recv_doesnt_raise(recv_code); + self.$push(" && "); + }; + recv_tmp = self.$scope().$new_temp(); + self.$push("(" + (recv_tmp) + " = ", recv_code, ", " + (recv_tmp) + ") && "); + } else { + recv_tmp = self.$scope().$self() + }; + recv_value_tmp = self.$scope().$new_temp(); + self.$push("(" + (recv_value_tmp) + " = " + (recv_tmp) + ") && "); + meth_tmp = self.$scope().$new_temp(); + self.$push("(((" + (meth_tmp) + " = " + (recv_value_tmp) + (mid) + ") && !" + (meth_tmp) + ".$$stub)"); + self.$push(" || " + (recv_value_tmp) + "['$respond_to_missing?']('" + (method_name) + "'))"); + $send(args, 'each', [], function $$1(arg){var self = $$1.$$s == null ? this : $$1.$$s, $ret_or_1 = nil; + + + + if (arg == null) arg = nil;; + if ($eqeqeq("block_pass", ($ret_or_1 = arg.$type()))) { + return nil + } else { + + self.$push(" && "); + return self.$compile_defined(arg); + };}, {$$arity: 1, $$s: self}); + self.$wrap("(", ")"); + return "" + (meth_tmp) + "()"; + }, 1); + + $def(self, '$compile_defined_ivar', function $$compile_defined_ivar(node) { + var self = this, name = nil, tmp = nil; + + + name = node.$children()['$[]'](0).$to_s()['$[]']($range(1, -1, false)); + tmp = self.$scope().$new_temp(); + self.$push("(" + (tmp) + " = " + (self.$scope().$self()) + "['" + (name) + "'], " + (tmp) + " != null && " + (tmp) + " !== nil)"); + return tmp; + }, 1); + + $def(self, '$compile_defined_super', function $$compile_defined_super() { + var self = this; + + return self.$push(self.$expr(self.$s("defined_super"))) + }, 0); + + $def(self, '$compile_defined_yield', function $$compile_defined_yield() { + var self = this, block_name = nil, $ret_or_1 = nil; + + + self.$scope()['$uses_block!'](); + block_name = ($truthy(($ret_or_1 = self.$scope().$block_name())) ? ($ret_or_1) : (self.$scope().$find_parent_def().$block_name())); + self.$push("(" + (block_name) + " != null && " + (block_name) + " !== nil)"); + return block_name; + }, 0); + + $def(self, '$compile_defined_xstr', function $$compile_defined_xstr(node) { + var self = this; + + return self.$push("(typeof(", self.$expr(node), ") !== \"undefined\")") + }, 1); + + $def(self, '$compile_defined_const', function $$compile_defined_const(node) { + var $a, self = this, const_scope = nil, const_name = nil, const_tmp = nil, const_scope_tmp = nil; + + + $a = [].concat($to_a(node)), (const_scope = ($a[0] == null ? nil : $a[0])), (const_name = ($a[1] == null ? nil : $a[1])), $a; + const_tmp = self.$scope().$new_temp(); + if ($truthy(const_scope['$nil?']())) { + self.$push("(" + (const_tmp) + " = " + (self.$scope().$relative_access()) + "('" + (const_name) + "', 'skip_raise'))") + } else if ($eqeq(const_scope, self.$s("cbase"))) { + self.$push("(" + (const_tmp) + " = " + (self.$top_scope().$absolute_const()) + "('::', '" + (const_name) + "', 'skip_raise'))") + } else { + + const_scope_tmp = self.$compile_defined(const_scope); + self.$push(" && (" + (const_tmp) + " = " + (self.$top_scope().$absolute_const()) + "(" + (const_scope_tmp) + ", '" + (const_name) + "', 'skip_raise'))"); + }; + return const_tmp; + }, 1); + + $def(self, '$compile_defined_cvar', function $$compile_defined_cvar(node) { + var $a, self = this, cvar_name = nil, _ = nil, cvar_tmp = nil; + + + $a = [].concat($to_a(node)), (cvar_name = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; + cvar_tmp = self.$scope().$new_temp(); + self.$push("(" + (cvar_tmp) + " = " + (self.$class_variable_owner()) + ".$$cvars['" + (cvar_name) + "'], " + (cvar_tmp) + " != null)"); + return cvar_tmp; + }, 1); + + $def(self, '$compile_defined_gvar', function $$compile_defined_gvar(node) { + var self = this, name = nil, gvar_temp = nil; + + + self.$helper("gvars"); + name = node.$children()['$[]'](0).$to_s()['$[]']($range(1, -1, false)); + gvar_temp = self.$scope().$new_temp(); + if ($truthy(["~", "!"]['$include?'](name))) { + self.$push("(" + (gvar_temp) + " = ", self.$expr(node), " || true)") + } else { + self.$push("(" + (gvar_temp) + " = $gvars[" + (name.$inspect()) + "], " + (gvar_temp) + " != null)") + }; + return gvar_temp; + }, 1); + + $def(self, '$compile_defined_back_ref', function $$compile_defined_back_ref() { + var self = this, back_ref_temp = nil; + + + self.$helper("gvars"); + back_ref_temp = self.$scope().$new_temp(); + self.$push("(" + (back_ref_temp) + " = $gvars['~'], " + (back_ref_temp) + " != null && " + (back_ref_temp) + " !== nil)"); + return back_ref_temp; + }, 0); + + $def(self, '$compile_defined_nth_ref', function $$compile_defined_nth_ref() { + var self = this, nth_ref_tmp = nil; + + + self.$helper("gvars"); + nth_ref_tmp = self.$scope().$new_temp(); + self.$push("(" + (nth_ref_tmp) + " = $gvars['~'], " + (nth_ref_tmp) + " != null && " + (nth_ref_tmp) + " != nil)"); + return nth_ref_tmp; + }, 0); + return $def(self, '$compile_defined_array', function $$compile_defined_array(node) { + var self = this; + + return $send(node.$children(), 'each_with_index', [], function $$2(child, idx){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (child == null) child = nil;; + + if (idx == null) idx = nil;; + if (!$eqeq(idx, 0)) { + self.$push(" && ") + }; + return self.$compile_defined(child);}, {$$arity: 2, $$s: self}) + }, 1); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/masgn"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $send = Opal.send, $def = Opal.def, $rb_ge = Opal.rb_ge, $not = Opal.not, $rb_plus = Opal.rb_plus; + + Opal.add_stubs('require,freeze,handle,children,new_temp,scope,==,type,rhs,push,expr,any?,size,compile_masgn,lhs,helper,queue_temp,take_while,!=,drop,each_with_index,compile_assignment,empty?,shift,[],<<,dup,s,>=,!,updated,include?,+,last,raise'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'MassAssignNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $const_set($nesting[0], 'SIMPLE_ASSIGNMENT', ["lvasgn", "ivasgn", "lvar", "gvasgn", "cdecl", "casgn"].$freeze()); + self.$handle("masgn"); + self.$children("lhs", "rhs"); + + $def(self, '$compile', function $$compile() { + var self = this, array = nil, rhs_len = nil, retval = nil; + + + array = self.$scope().$new_temp(); + if ($eqeq(self.$rhs().$type(), "array")) { + + self.$push("" + (array) + " = ", self.$expr(self.$rhs())); + rhs_len = ($truthy($send(self.$rhs().$children(), 'any?', [], function $$1(c){ + + + if (c == null) c = nil;; + return c.$type()['$==']("splat");}, 1)) ? (nil) : (self.$rhs().$children().$size())); + self.$compile_masgn(self.$lhs().$children(), array, rhs_len); + self.$push(", " + (array)); + } else { + + self.$helper("to_ary"); + retval = self.$scope().$new_temp(); + self.$push("" + (retval) + " = ", self.$expr(self.$rhs())); + self.$push(", " + (array) + " = $to_ary(" + (retval) + ")"); + self.$compile_masgn(self.$lhs().$children(), array); + self.$push(", " + (retval)); + self.$scope().$queue_temp(retval); + }; + return self.$scope().$queue_temp(array); + }, 0); + + $def(self, '$compile_masgn', function $$compile_masgn(lhs_items, array, len) { + var self = this, pre_splat = nil, post_splat = nil, splat = nil, part = nil, tmp = nil; + + + + if (len == null) len = nil;; + pre_splat = $send(lhs_items, 'take_while', [], function $$2(child){ + + + if (child == null) child = nil;; + return child.$type()['$!=']("splat");}, 1); + post_splat = lhs_items.$drop(pre_splat.$size()); + $send(pre_splat, 'each_with_index', [], function $$3(child, idx){var self = $$3.$$s == null ? this : $$3.$$s; + + + + if (child == null) child = nil;; + + if (idx == null) idx = nil;; + return self.$compile_assignment(child, array, idx, len);}, {$$arity: 2, $$s: self}); + if ($truthy(post_splat['$empty?']())) { + return nil + } else { + + splat = post_splat.$shift(); + if ($truthy(post_splat['$empty?']())) { + if ($truthy((part = splat.$children()['$[]'](0)))) { + + self.$helper("slice"); + part = part.$dup()['$<<'](self.$s("js_tmp", "$slice.call(" + (array) + ", " + (pre_splat.$size()) + ")")); + self.$push(", "); + return self.$push(self.$expr(part)); + } else { + return nil + } + } else { + + tmp = self.$scope().$new_temp(); + self.$push(", " + (tmp) + " = " + (array) + ".length - " + (post_splat.$size())); + self.$push(", " + (tmp) + " = (" + (tmp) + " < " + (pre_splat.$size()) + ") ? " + (pre_splat.$size()) + " : " + (tmp)); + if ($truthy((part = splat.$children()['$[]'](0)))) { + + self.$helper("slice"); + part = part.$dup()['$<<'](self.$s("js_tmp", "$slice.call(" + (array) + ", " + (pre_splat.$size()) + ", " + (tmp) + ")")); + self.$push(", "); + self.$push(self.$expr(part)); + }; + $send(post_splat, 'each_with_index', [], function $$4(child, idx){var self = $$4.$$s == null ? this : $$4.$$s; + + + + if (child == null) child = nil;; + + if (idx == null) idx = nil;; + if ($eqeq(idx, 0)) { + return self.$compile_assignment(child, array, tmp) + } else { + return self.$compile_assignment(child, array, "" + (tmp) + " + " + (idx)) + };}, {$$arity: 2, $$s: self}); + return self.$scope().$queue_temp(tmp); + }; + }; + }, -3); + return $def(self, '$compile_assignment', function $$compile_assignment(child, array, idx, len) { + var self = this, assign = nil, part = nil, tmp = nil; + + + + if (len == null) len = nil;; + assign = (($not(len) || ($truthy($rb_ge(idx, len)))) ? (self.$s("js_tmp", "(" + (array) + "[" + (idx) + "] == null ? nil : " + (array) + "[" + (idx) + "])")) : (self.$s("js_tmp", "" + (array) + "[" + (idx) + "]"))); + part = child.$updated(); + if ($truthy($$('SIMPLE_ASSIGNMENT')['$include?'](child.$type()))) { + part = part.$updated(nil, $rb_plus(part.$children(), [assign])) + } else if ($eqeq(child.$type(), "send")) { + part = part.$updated(nil, $rb_plus(part.$children(), [assign])) + } else if ($eqeq(child.$type(), "attrasgn")) { + part.$last()['$<<'](assign) + } else if ($eqeq(child.$type(), "mlhs")) { + + self.$helper("to_ary"); + tmp = self.$scope().$new_temp(); + self.$push(", (" + (tmp) + " = $to_ary(" + (assign.$children()['$[]'](0)) + ")"); + self.$compile_masgn(child.$children(), tmp); + self.$push(")"); + self.$scope().$queue_temp(tmp); + return nil; + } else { + self.$raise("Bad child node in masgn LHS: " + (child) + ". LHS: " + (self.$lhs())) + }; + self.$push(", "); + return self.$push(self.$expr(part)); + }, -4); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/arglist"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $to_a = Opal.to_a, $def = Opal.def; + + Opal.add_stubs('require,handle,each,children,==,type,expr,empty?,<<,fragment,push'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ArglistNode'); + + + + self.$handle("arglist"); + return $def(self, '$compile', function $$compile() { + var $a, self = this, code = nil, work = nil, join = nil; + + + $a = [[], []], (code = $a[0]), (work = $a[1]), $a; + $send(self.$children(), 'each', [], function $$1(current){var self = $$1.$$s == null ? this : $$1.$$s, splat = nil, arg = nil; + + + + if (current == null) current = nil;; + splat = current.$type()['$==']("splat"); + arg = self.$expr(current); + if ($truthy(splat)) { + + if ($truthy(work['$empty?']())) { + if ($truthy(code['$empty?']())) { + code['$<<'](arg) + } else { + code['$<<'](self.$fragment(".concat("))['$<<'](arg)['$<<'](self.$fragment(")")) + } + } else { + + if ($truthy(code['$empty?']())) { + code['$<<'](self.$fragment("["))['$<<'](work)['$<<'](self.$fragment("]")) + } else { + code['$<<'](self.$fragment(".concat(["))['$<<'](work)['$<<'](self.$fragment("])")) + }; + code['$<<'](self.$fragment(".concat("))['$<<'](arg)['$<<'](self.$fragment(")")); + }; + return (work = []); + } else { + + if (!$truthy(work['$empty?']())) { + work['$<<'](self.$fragment(", ")) + }; + return work['$<<'](arg); + };}, {$$arity: 1, $$s: self}); + if (!$truthy(work['$empty?']())) { + + join = work; + if ($truthy(code['$empty?']())) { + code = join + } else { + code['$<<'](self.$fragment(".concat(["))['$<<'](join)['$<<'](self.$fragment("])")) + }; + }; + return $send(self, 'push', $to_a(code)); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/x_string"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $def = Opal.def, $defs = Opal.defs, $lambda = Opal.lambda, $eqeqeq = Opal.eqeqeq, $eqeq = Opal.eqeq, $not = Opal.not, $range = Opal.range; + + Opal.add_stubs('handle,unpack_return,children,strip_empty_children,single_line?,compile_single_line,each,compile_child,recv?,wrap,push,==,size,none?,type,end_with?,source,expression,loc,dup,nil?,empty?,rstrip,any?,[],first,shift,last,pop,private,===,include?,self,scope,new,expr,raise,s,strip,=~,!,extract_last_value,expr?,warning,compiler,line'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'XStringNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.should_add_semicolon = $proto.returning = nil; + + self.$handle("xstr"); + + $def(self, '$compile', function $$compile() { + var self = this, unpacked_children = nil, stripped_children = nil; + + + self.should_add_semicolon = false; + unpacked_children = self.$unpack_return(self.$children()); + stripped_children = $$('XStringNode').$strip_empty_children(unpacked_children); + if ($truthy($$('XStringNode')['$single_line?'](stripped_children))) { + self.$compile_single_line(stripped_children) + } else { + $send(unpacked_children, 'each', [], function $$1(c){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (c == null) c = nil;; + return self.$compile_child(c);}, {$$arity: 1, $$s: self}) + }; + if ($truthy(self['$recv?']())) { + self.$wrap("(", ")") + }; + if ($truthy(self.should_add_semicolon)) { + return self.$push(";") + } else { + return nil + }; + }, 0); + $defs(self, '$single_line?', function $XStringNode_single_line$ques$2(children) { + var $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = children.$size()['$=='](1)))) { + return $ret_or_1 + } else { + return $send(children, 'none?', [], function $$3(c){var $ret_or_2 = nil; + + + + if (c == null) c = nil;; + if ($truthy(($ret_or_2 = c.$type()['$==']("str")))) { + return c.$loc().$expression().$source()['$end_with?']("\n") + } else { + return $ret_or_2 + };}, 1) + } + }, 1); + $defs(self, '$strip_empty_children', function $$strip_empty_children(children) { + var $a, empty_line = nil, $ret_or_1 = nil; + + + children = children.$dup(); + empty_line = $lambda(function $$4(child){var $ret_or_1 = nil, $ret_or_2 = nil; + + + + if (child == null) child = nil;; + if ($truthy(($ret_or_1 = child['$nil?']()))) { + return $ret_or_1 + } else { + + if ($truthy(($ret_or_2 = child.$type()['$==']("str")))) { + return child.$loc().$expression().$source().$rstrip()['$empty?']() + } else { + return $ret_or_2 + }; + };}, 1); + while ($truthy(($truthy(($ret_or_1 = children['$any?']())) ? (empty_line['$[]'](children.$first())) : ($ret_or_1)))) { + children.$shift() + }; + while ($truthy(($truthy(($ret_or_1 = children['$any?']())) ? (empty_line['$[]'](children.$last())) : ($ret_or_1)))) { + children.$pop() + }; + return children; + }, 1); + self.$private(); + + $def(self, '$compile_child', function $$compile_child(child) { + var self = this, $ret_or_1 = nil, value = nil; + + if ($eqeqeq("str", ($ret_or_1 = child.$type()))) { + + value = child.$loc().$expression().$source(); + if ($truthy(value['$include?']("self"))) { + self.$scope().$self() + }; + return self.$push($$('Fragment').$new(value, self.$scope(), child)); + } else if (($eqeqeq("begin", $ret_or_1) || (($eqeqeq("gvar", $ret_or_1) || (($eqeqeq("ivar", $ret_or_1) || ($eqeqeq("nil", $ret_or_1)))))))) { + return self.$push(self.$expr(child)) + } else { + return self.$raise("Unsupported xstr part: " + (child.$type())) + } + }, 1); + + $def(self, '$compile_single_line', function $$compile_single_line(children) { + var self = this, has_embeded_return = nil, first_child = nil, single_child = nil, $ret_or_1 = nil, first_value = nil, last_child = nil, last_value = nil; + + + has_embeded_return = false; + first_child = children.$shift(); + single_child = children['$empty?'](); + first_child = ($truthy(($ret_or_1 = first_child)) ? ($ret_or_1) : (self.$s("nil"))); + if ($eqeq(first_child.$type(), "str")) { + + first_value = first_child.$loc().$expression().$source().$strip(); + has_embeded_return = first_value['$=~'](/^return\b/); + }; + if (($truthy(self.returning) && ($not(has_embeded_return)))) { + self.$push("return ") + }; + last_child = ($truthy(($ret_or_1 = children.$pop())) ? ($ret_or_1) : (first_child)); + if ($eqeq(last_child.$type(), "str")) { + last_value = self.$extract_last_value(last_child) + }; + if (!$truthy(single_child)) { + + self.should_add_semicolon = false; + self.$compile_child(first_child); + $send(children, 'each', [], function $$5(c){var self = $$5.$$s == null ? this : $$5.$$s; + + + + if (c == null) c = nil;; + return self.$compile_child(c);}, {$$arity: 1, $$s: self}); + }; + if ($eqeq(last_child.$type(), "str")) { + return self.$push($$('Fragment').$new(last_value, self.$scope(), last_child)) + } else { + return self.$compile_child(last_child) + }; + }, 1); + + $def(self, '$extract_last_value', function $$extract_last_value(last_child) { + var self = this, last_value = nil; + + + last_value = last_child.$loc().$expression().$source().$rstrip(); + if ($truthy(last_value['$include?']("self"))) { + self.$scope().$self() + }; + if ((($truthy(self.returning) || ($truthy(self['$expr?']()))) && ($truthy(last_value['$end_with?'](";"))))) { + + self.$compiler().$warning("Removed semicolon ending x-string expression, interpreted as unintentional", last_child.$line()); + last_value = last_value['$[]']($range(0, -2, false)); + }; + if ($truthy(self.returning)) { + self.should_add_semicolon = true + }; + return last_value; + }, 1); + return $def(self, '$unpack_return', function $$unpack_return(children) { + var self = this, first_child = nil; + + + first_child = children.$first(); + self.returning = false; + if ($eqeq(first_child.$type(), "js_return")) { + + self.returning = true; + children = first_child.$children(); + }; + return children; + }, 1); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["opal/nodes/lambda"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $def = Opal.def; + + Opal.add_stubs('require,handle,children,helper,defines_lambda,scope,push,expr,iter'); + + self.$require("opal/nodes/call"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'LambdaNode'); + + + + self.$handle("lambda"); + self.$children("iter"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$helper("lambda"); + return $send(self.$scope(), 'defines_lambda', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s; + + return self.$push("$lambda(", self.$expr(self.$iter()), ")")}, {$$arity: 0, $$s: self}); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, nil = Opal.nil; + + Opal.add_stubs('require'); + + self.$require("opal/nodes/base"); + self.$require("opal/nodes/literal"); + self.$require("opal/nodes/variables"); + self.$require("opal/nodes/constants"); + self.$require("opal/nodes/call"); + self.$require("opal/nodes/csend"); + self.$require("opal/nodes/call_special"); + self.$require("opal/nodes/module"); + self.$require("opal/nodes/class"); + self.$require("opal/nodes/singleton_class"); + self.$require("opal/nodes/args"); + self.$require("opal/nodes/args/arity_check"); + self.$require("opal/nodes/iter"); + self.$require("opal/nodes/def"); + self.$require("opal/nodes/defs"); + self.$require("opal/nodes/if"); + self.$require("opal/nodes/logic"); + self.$require("opal/nodes/definitions"); + self.$require("opal/nodes/yield"); + self.$require("opal/nodes/rescue"); + self.$require("opal/nodes/super"); + self.$require("opal/nodes/top"); + self.$require("opal/nodes/while"); + self.$require("opal/nodes/hash"); + self.$require("opal/nodes/array"); + self.$require("opal/nodes/defined"); + self.$require("opal/nodes/masgn"); + self.$require("opal/nodes/arglist"); + self.$require("opal/nodes/x_string"); + return self.$require("opal/nodes/lambda"); +}; + +Opal.modules["opal/eof_content"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $eqeq = Opal.eqeq, $range = Opal.range, $to_ary = Opal.to_ary; + + Opal.add_stubs('empty?,[],last_token_position,drop_while,lines,==,join,private,last,end_pos'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'EofContent'); + + var $nesting = [self].concat($parent_nesting), $proto = self.$$prototype; + + $proto.tokens = $proto.source = nil; + + $const_set($nesting[0], 'DATA_SEPARATOR', "__END__\n"); + + $def(self, '$initialize', function $$initialize(tokens, source) { + var self = this; + + + self.tokens = tokens; + return (self.source = source); + }, 2); + + $def(self, '$eof', function $$eof() { + var self = this, eof_content = nil, $ret_or_1 = nil; + + + if ($truthy(self.tokens['$empty?']())) { + return nil + }; + eof_content = self.source['$[]'](Opal.Range.$new(self.$last_token_position(), -1, false)); + if (!$truthy(eof_content)) { + return nil + }; + eof_content = $send(eof_content.$lines(), 'drop_while', [], function $$1(line){ + + + if (line == null) line = nil;; + return line['$==']("\n");}, 1); + if ($eqeq(eof_content['$[]'](0), "__END__\n")) { + + eof_content = ($truthy(($ret_or_1 = eof_content['$[]']($range(1, -1, false)))) ? ($ret_or_1) : ([])); + return eof_content.$join(); + } else if ($eqeq(eof_content, ["__END__"])) { + return "" + } else { + return nil + }; + }, 0); + self.$private(); + return $def(self, '$last_token_position', function $$last_token_position() { + var $a, $b, self = this, _ = nil, last_token_info = nil, last_token_range = nil; + + + $b = self.tokens.$last(), $a = $to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (last_token_info = ($a[1] == null ? nil : $a[1])), $b; + $b = last_token_info, $a = $to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (last_token_range = ($a[1] == null ? nil : $a[1])), $b; + return last_token_range.$end_pos(); + }, 0); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["opal/errors"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $defs = Opal.defs, $rb_plus = Opal.rb_plus, $alias = Opal.alias; + + Opal.add_stubs('attr_reader,attr_accessor,new,respond_to?,location,location=,-,diagnostic,diagnostic=,to_a,backtrace,unshift,to_s,set_backtrace,path,lineno,+,label,line,lineno=,source_line,label=,expression'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $klass($nesting[0], $$('StandardError'), 'Error'); + (function($base, $super) { + var self = $klass($base, $super, 'GemNotFound'); + + + + self.$attr_reader("gem_name"); + return $def(self, '$initialize', function $$initialize(gem_name) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.gem_name = gem_name; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', ["can't find gem " + (gem_name)], null); + }, 1); + })($nesting[0], $$('Error')); + (function($base, $super) { + var self = $klass($base, $super, 'CompilationError'); + + + return self.$attr_accessor("location") + })($nesting[0], $$('Error')); + $klass($nesting[0], $$('CompilationError'), 'ParsingError'); + $klass($nesting[0], $$('ParsingError'), 'RewritingError'); + (function($base, $super) { + var self = $klass($base, $super, 'SyntaxError'); + + + return self.$attr_accessor("location") + })($nesting[0], $$$('SyntaxError')); + $defs(self, '$opal_location_from_error', function $$opal_location_from_error(error) { + var opal_location = nil, $writer = nil; + + + opal_location = $$('OpalBacktraceLocation').$new(); + if ($truthy(error['$respond_to?']("location"))) { + + $writer = [error.$location()]; + $send(opal_location, 'location=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + if ($truthy(error['$respond_to?']("diagnostic"))) { + + $writer = [error.$diagnostic()]; + $send(opal_location, 'diagnostic=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return opal_location; + }, 1); + $defs(self, '$add_opal_location_to_error', function $$add_opal_location_to_error(opal_location, error) { + var backtrace = nil; + + + backtrace = error.$backtrace().$to_a(); + backtrace.$unshift(opal_location.$to_s()); + error.$set_backtrace(backtrace); + return error; + }, 2); + return (function($base, $super) { + var self = $klass($base, $super, 'OpalBacktraceLocation'); + + + + self.$attr_accessor("path", "lineno", "label"); + + $def(self, '$initialize', function $$initialize(path, lineno, label) { + var $a, self = this; + + + + if (path == null) path = nil;; + + if (lineno == null) lineno = nil;; + + if (label == null) label = nil;; + return $a = [path, lineno, label], (self.path = $a[0]), (self.lineno = $a[1]), (self.label = $a[2]), $a; + }, -1); + + $def(self, '$to_s', function $$to_s() { + var self = this, string = nil; + + + string = self.$path(); + if ($truthy(self.$lineno())) { + string = $rb_plus(string, ":" + (self.$lineno())) + }; + string = $rb_plus(string, ":in "); + if ($truthy(self.$label())) { + string = $rb_plus(string, "`" + (self.$label()) + "'") + } else { + string = $rb_plus(string, "unknown") + }; + return string; + }, 0); + $alias(self, "line", "lineno"); + + $def(self, '$diagnostic=', function $OpalBacktraceLocation_diagnostic$eq$1(diagnostic) { + var self = this, $writer = nil; + + + if (!$truthy(diagnostic)) { + return nil + }; + + $writer = [diagnostic.$location()]; + $send(self, 'location=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + }, 1); + return $def(self, '$location=', function $OpalBacktraceLocation_location$eq$2(location) { + var self = this, $writer = nil; + + + if (!$truthy(location)) { + return nil + }; + + $writer = [location.$line()]; + $send(self, 'lineno=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy(location['$respond_to?']("source_line"))) { + + $writer = [location.$source_line()]; + $send(self, 'label=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else if ($truthy(location['$respond_to?']("expression"))) { + + $writer = [location.$expression().$source_line()]; + $send(self, 'label=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else { + return nil + }; + }, 1); + })($nesting[0], null); + })($nesting[0], $nesting) +}; + +Opal.modules["opal/magic_comments"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send, $rb_ge = Opal.rb_ge, $eqeqeq = Opal.eqeqeq, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $defs = Opal.defs; + + Opal.add_stubs('freeze,line,loc,take,each,>=,any?,scan,text,to_sym,===,[]=,-'); + return (function($base, $parent_nesting) { + var self = $module($base, 'MagicComments'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $const_set($nesting[0], 'MAGIC_COMMENT_RE', /^# *(\w+) *: *(\S+.*?) *$/.$freeze()); + $const_set($nesting[0], 'EMACS_MAGIC_COMMENT_RE', /^# *-\*- *(\w+) *: *(\S+.*?) *-\*- *$/.$freeze()); + return $defs(self, '$parse', function $$parse(sexp, comments) { + var flags = nil, first_line = nil; + + + flags = $hash2([], {}); + if ($truthy(sexp)) { + + first_line = sexp.$loc().$line(); + comments = comments.$take(first_line); + }; + $send(comments, 'each', [], function $$1(comment){var parts = nil; + + + + if (comment == null) comment = nil;; + if (($truthy(first_line) && ($truthy($rb_ge(comment.$loc().$line(), first_line))))) { + return nil; + }; + if (($truthy((parts = comment.$text().$scan($$('MAGIC_COMMENT_RE')))['$any?']()) || ($truthy((parts = comment.$text().$scan($$('EMACS_MAGIC_COMMENT_RE')))['$any?']())))) { + return $send(parts, 'each', [], function $$2(key, value){var $writer = nil, $ret_or_1 = nil; + + + + if (key == null) key = nil;; + + if (value == null) value = nil;; + $writer = [key.$to_sym(), ($eqeqeq("true", ($ret_or_1 = value)) || (($eqeqeq("false", $ret_or_1) ? (false) : (value))))]; + $send(flags, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 2) + } else { + return nil + };}, 1); + return flags; + }, 2); + })($$('Opal'), $nesting) +}; + +Opal.modules["opal/compiler"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $hash2 = Opal.hash2, $defs = Opal.defs, $klass = Opal.klass, $const_set = Opal.const_set, $send = Opal.send, $truthy = Opal.truthy, $not = Opal.not, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $Opal = Opal.Opal, $to_ary = Opal.to_ary, $alias = Opal.alias, $eqeqeq = Opal.eqeqeq, $regexp = Opal.regexp, $rb_plus = Opal.rb_plus, $slice = Opal.slice, $eqeq = Opal.eqeq; + + Opal.add_stubs('require,compile,new,freeze,join,dirname,first,split,basename,to_s,cleanpath,Pathname,fetch,define_method,option_value,key?,[],!,include?,raise,inspect,[]=,-,compiler_option,attr_reader,attr_accessor,parse,re_raise_with_location,flatten,process,end_with?,code,last,<<,fragment,s,map,to_proc,file,source=,default_parser,tokenize,requirable?,eval?,tap,meta,associate_locations,eof,magic_comments,to_sym,strip,async_await_before_typecasting,===,async_await_set_to_regexp,to_a,gsub,escape,location=,opal_location_from_error,path=,label,lines,to_i,line,label=,message,set_backtrace,backtrace,add_opal_location_to_error,warn,empty?,+,start_with?,helpers,new_temp,queue_temp,push_while,pop_while,in_while?,nil?,scope,handlers,type,compile_to_fragments,error,returns,updated,children,==,uses_block!,block_name,find_parent_def,cache,source_map'); + + self.$require("set"); + self.$require("opal/parser"); + self.$require("opal/fragment"); + self.$require("opal/nodes"); + self.$require("opal/eof_content"); + self.$require("opal/errors"); + self.$require("opal/magic_comments"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs(self, '$compile', function $$compile(source, options) { + + + + if (options == null) options = $hash2([], {});; + return $$('Compiler').$new(source, options).$compile(); + }, -2); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Compiler'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.option_values = $proto.options = $proto.magic_comments = $proto.fragments = $proto.source = $proto.buffer = $proto.source_map = $proto.result = $proto.helpers = $proto.method_calls = $proto.async_await = $proto.indent = $proto.unique = $proto.scope = $proto.case_stmt = $proto.handlers = $proto.requires = $proto.required_trees = $proto.autoloads = nil; + + $const_set($nesting[0], 'INDENT', " "); + $const_set($nesting[0], 'COMPARE', ["<", ">", "<=", ">="].$freeze()); + $defs(self, '$module_name', function $$module_name(path) { + var self = this; + + + path = $$('File').$join($$('File').$dirname(path), $$('File').$basename(path).$split(".").$first()); + return self.$Pathname(path).$cleanpath().$to_s(); + }, 1); + $defs(self, '$compiler_option', function $$compiler_option(name, config) { + var self = this, method_name = nil; + + + + if (config == null) config = $hash2([], {});; + method_name = config.$fetch("as", name); + return $send(self, 'define_method', [method_name], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s; + + return self.$option_value(name, config)}, {$$arity: 0, $$s: self}); + }, -2); + + $def(self, '$option_value', function $$option_value(name, config) { + var self = this, default_value = nil, valid_values = nil, magic_comment = nil, value = nil, $writer = nil; + + + if ($truthy(self.option_values['$key?'](name))) { + return self.option_values['$[]'](name) + }; + default_value = config['$[]']("default"); + valid_values = config['$[]']("valid_values"); + magic_comment = config['$[]']("magic_comment"); + value = self.options.$fetch(name, default_value); + if (($truthy(magic_comment) && ($truthy(self.magic_comments['$key?'](name))))) { + value = self.magic_comments.$fetch(name) + }; + if (($truthy(valid_values) && ($not(valid_values['$include?'](value))))) { + self.$raise($$('ArgumentError'), "" + ("invalid value " + (value.$inspect()) + " for option " + (name.$inspect()) + " ") + ("(valid values: " + (valid_values.$inspect()) + ")")) + }; + + $writer = [name, value]; + $send(self.option_values, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + }, 2); + self.$compiler_option("file", $hash2(["default"], {"default": "(file)"})); + self.$compiler_option("method_missing", $hash2(["default", "as"], {"default": true, "as": "method_missing?"})); + self.$compiler_option("arity_check", $hash2(["default", "as"], {"default": false, "as": "arity_check?"})); + self.$compiler_option("freezing", $hash2(["default", "as"], {"default": true, "as": "freezing?"})); + self.$compiler_option("irb", $hash2(["default", "as"], {"default": false, "as": "irb?"})); + self.$compiler_option("dynamic_require_severity", $hash2(["default", "valid_values"], {"default": "ignore", "valid_values": ["error", "warning", "ignore"]})); + self.$compiler_option("requirable", $hash2(["default", "as"], {"default": false, "as": "requirable?"})); + self.$compiler_option("esm", $hash2(["default", "as"], {"default": false, "as": "esm?"})); + self.$compiler_option("inline_operators", $hash2(["default", "as"], {"default": true, "as": "inline_operators?"})); + self.$compiler_option("eval", $hash2(["default", "as"], {"default": false, "as": "eval?"})); + self.$compiler_option("enable_source_location", $hash2(["default", "as"], {"default": false, "as": "enable_source_location?"})); + self.$compiler_option("use_strict", $hash2(["default", "as", "magic_comment"], {"default": false, "as": "use_strict?", "magic_comment": true})); + self.$compiler_option("parse_comments", $hash2(["default", "as"], {"default": false, "as": "parse_comments?"})); + self.$compiler_option("scope_variables", $hash2(["default"], {"default": []})); + self.$compiler_option("await", $hash2(["default", "as", "magic_comment"], {"default": false, "as": "async_await", "magic_comment": true})); + self.$attr_reader("result"); + self.$attr_reader("fragments"); + self.$attr_accessor("scope"); + self.$attr_accessor("top_scope"); + self.$attr_reader("case_stmt"); + self.$attr_reader("eof_content"); + self.$attr_reader("comments"); + self.$attr_reader("magic_comments"); + + $def(self, '$initialize', function $$initialize(source, options) { + var self = this; + + + + if (options == null) options = $hash2([], {});; + self.source = source; + self.indent = ""; + self.unique = 0; + self.options = options; + self.comments = $$('Hash').$new([]); + self.case_stmt = nil; + self.option_values = $hash2([], {}); + return (self.magic_comments = $hash2([], {})); + }, -2); + + $def(self, '$compile', function $$compile() { + var self = this; + + + self.$parse(); + self.fragments = $send(self, 're_raise_with_location', [], function $$2(){var self = $$2.$$s == null ? this : $$2.$$s; + if (self.sexp == null) self.sexp = nil; + + return self.$process(self.sexp).$flatten()}, {$$arity: 0, $$s: self}); + if (!$truthy(self.fragments.$last().$code()['$end_with?']("\n"))) { + self.fragments['$<<'](self.$fragment("\n", nil, self.$s("newline"))) + }; + return (self.result = $send(self.fragments, 'map', [], "code".$to_proc()).$join("")); + }, 0); + + $def(self, '$parse', function $$parse() { + var $a, $b, self = this, $writer = nil, sexp = nil, comments = nil, tokens = nil, kind = nil, $ret_or_1 = nil; + + + self.buffer = $$$($$$($Opal, 'Parser'), 'SourceBuffer').$new(self.$file(), 1); + + $writer = [self.source]; + $send(self.buffer, 'source=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.parser = $$$($$('Opal'), 'Parser').$default_parser(); + $b = $send(self, 're_raise_with_location', [], function $$3(){var self = $$3.$$s == null ? this : $$3.$$s; + if (self.parser == null) self.parser = nil; + if (self.buffer == null) self.buffer = nil; + + return self.parser.$tokenize(self.buffer)}, {$$arity: 0, $$s: self}), $a = $to_ary($b), (sexp = ($a[0] == null ? nil : $a[0])), (comments = ($a[1] == null ? nil : $a[1])), (tokens = ($a[2] == null ? nil : $a[2])), $b; + kind = ($truthy(self['$requirable?']()) ? ("require") : ($truthy(self['$eval?']()) ? ("eval") : ("main"))); + self.sexp = $send(self.$s("top", ($truthy(($ret_or_1 = sexp)) ? ($ret_or_1) : (self.$s("nil")))), 'tap', [], function $$4(i){ + + + if (i == null) i = nil;; + $writer = ["kind", kind]; + $send(i.$meta(), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 1); + self.comments = $$$($$$($$$('Parser'), 'Source'), 'Comment').$associate_locations(sexp, comments); + self.magic_comments = $$('MagicComments').$parse(sexp, comments); + return (self.eof_content = $$('EofContent').$new(tokens, self.source).$eof()); + }, 0); + + $def(self, '$source_map', function $$source_map() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.source_map))) { + return $ret_or_1 + } else { + return $$$($$$($Opal, 'SourceMap'), 'File').$new(self.fragments, self.$file(), self.source, self.result) + } + }, 0); + + $def(self, '$helpers', function $$helpers() { + var self = this, $ret_or_1 = nil; + + return (self.helpers = ($truthy(($ret_or_1 = self.helpers)) ? ($ret_or_1) : ($$('Set').$new($send(self.$magic_comments()['$[]']("helpers").$to_s().$split(","), 'map', [], function $$5(h){ + + + if (h == null) h = nil;; + return h.$strip().$to_sym();}, 1))))) + }, 0); + + $def(self, '$method_calls', function $$method_calls() { + var self = this, $ret_or_1 = nil; + + return (self.method_calls = ($truthy(($ret_or_1 = self.method_calls)) ? ($ret_or_1) : ($$('Set').$new()))) + }, 0); + $alias(self, "async_await_before_typecasting", "async_await"); + + $def(self, '$async_await', function $$async_await() { + var $a, self = this, original = nil, $ret_or_1 = nil; + + if ($truthy((($a = self['async_await'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { + return self.async_await + } else { + + original = self.$async_await_before_typecasting(); + return (self.async_await = ($eqeqeq($$('String'), ($ret_or_1 = original)) ? (self.$async_await_set_to_regexp($send(original.$split(","), 'map', [], function $$6(h){ + + + if (h == null) h = nil;; + return h.$strip().$to_sym();}, 1))) : (($eqeqeq($$('Array'), $ret_or_1) || ($eqeqeq($$('Set'), $ret_or_1))) ? (self.$async_await_set_to_regexp($send(original.$to_a(), 'map', [], "to_sym".$to_proc()))) : (($eqeqeq($$('Regexp'), $ret_or_1) || (($eqeqeq(true, $ret_or_1) || ($eqeqeq(false, $ret_or_1))))) ? (original) : (self.$raise("A value of await compiler option can be either " + "a Set, an Array, a String or a Boolean.")))))); + } + }, 0); + + $def(self, '$async_await_set_to_regexp', function $$async_await_set_to_regexp(set) { + + + set = $send(set, 'map', [], function $$7(name){ + + + if (name == null) name = nil;; + return $$('Regexp').$escape(name.$to_s()).$gsub("\\*", ".*?");}, 1); + set = set.$join("|"); + return $regexp(["^(", set, ")$"]); + }, 1); + + $def(self, '$error', function $$error(msg, line) { + var self = this, error = nil, $writer = nil; + + + + if (line == null) line = nil;; + error = $$$($Opal, 'SyntaxError').$new(msg); + + $writer = [$$$($$('Opal'), 'OpalBacktraceLocation').$new(self.$file(), line)]; + $send(error, 'location=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self.$raise(error); + }, -2); + + $def(self, '$re_raise_with_location', function $$re_raise_with_location() { + var $yield = $$re_raise_with_location.$$p || nil, self = this, error = nil, opal_location = nil, $writer = nil, $ret_or_1 = nil, new_error = nil; + + delete $$re_raise_with_location.$$p; + try { + return Opal.yieldX($yield, []); + } catch ($err) { + if (Opal.rescue($err, [$$('StandardError'), $$$($Opal, 'SyntaxError')])) {(error = $err) + try { + + opal_location = $Opal.$opal_location_from_error(error); + + $writer = [self.$file()]; + $send(opal_location, 'path=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy(($ret_or_1 = opal_location.$label()))) { + $ret_or_1 + } else { + + $writer = [self.source.$lines()['$[]']($rb_minus(opal_location.$line().$to_i(), 1)).$strip()]; + $send(opal_location, 'label=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + new_error = $$$($Opal, 'SyntaxError').$new(error.$message()); + new_error.$set_backtrace(error.$backtrace()); + $Opal.$add_opal_location_to_error(opal_location, new_error); + return self.$raise(new_error); + } finally { Opal.pop_exception(); } + } else { throw $err; } + } + }, 0); + + $def(self, '$warning', function $$warning(msg, line) { + var self = this; + + + + if (line == null) line = nil;; + return self.$warn("warning: " + (msg) + " -- " + (self.$file()) + ":" + (line)); + }, -2); + + $def(self, '$parser_indent', function $$parser_indent() { + var self = this; + + return self.indent + }, 0); + + $def(self, '$s', function $$s(type, $a) { + var $post_args, children; + + + + $post_args = Opal.slice.call(arguments, 1); + + children = $post_args;; + return $$$($$$($Opal, 'AST'), 'Node').$new(type, children); + }, -2); + + $def(self, '$fragment', function $$fragment(str, scope, sexp) { + + + + if (sexp == null) sexp = nil;; + return $$('Fragment').$new(str, scope, sexp); + }, -3); + + $def(self, '$unique_temp', function $$unique_temp(name) { + var self = this, unique = nil; + + + name = name.$to_s(); + if (($truthy(name) && ($not(name['$empty?']())))) { + name = name.$to_s().$gsub("<=>", "$lt_eq_gt").$gsub("===", "$eq_eq_eq").$gsub("==", "$eq_eq").$gsub("=~", "$eq_tilde").$gsub("!~", "$excl_tilde").$gsub("!=", "$not_eq").$gsub("<=", "$lt_eq").$gsub(">=", "$gt_eq").$gsub("=", "$eq").$gsub("?", "$ques").$gsub("!", "$excl").$gsub("/", "$slash").$gsub("%", "$percent").$gsub("+", "$plus").$gsub("-", "$minus").$gsub("<", "$lt").$gsub(">", "$gt").$gsub(/[^\w\$]/, "$") + }; + unique = (self.unique = $rb_plus(self.unique, 1)); + return "" + (($truthy(name['$start_with?']("$")) ? (nil) : ("$"))) + (name) + "$" + (unique); + }, 1); + + $def(self, '$helper', function $$helper(name) { + var self = this; + + return self.$helpers()['$<<'](name) + }, 1); + + $def(self, '$indent', function $$indent() { + var $yield = $$indent.$$p || nil, self = this, indent = nil, res = nil; + + delete $$indent.$$p; + + indent = self.indent; + self.indent = $rb_plus(self.indent, $$('INDENT')); + self.space = "\n" + (self.indent); + res = Opal.yieldX($yield, []); + self.indent = indent; + self.space = "\n" + (self.indent); + return res; + }, 0); + + $def(self, '$with_temp', function $$with_temp() { + var $yield = $$with_temp.$$p || nil, self = this, tmp = nil, res = nil; + + delete $$with_temp.$$p; + + tmp = self.scope.$new_temp(); + res = Opal.yield1($yield, tmp); + self.scope.$queue_temp(tmp); + return res; + }, 0); + + $def(self, '$in_while', function $$in_while() { + var $yield = $$in_while.$$p || nil, self = this, result = nil; + + delete $$in_while.$$p; + + if (!($yield !== nil)) { + return nil + }; + self.while_loop = self.scope.$push_while(); + result = Opal.yieldX($yield, []); + self.scope.$pop_while(); + return result; + }, 0); + + $def(self, '$in_case', function $$in_case() { + var $yield = $$in_case.$$p || nil, self = this, old = nil; + + delete $$in_case.$$p; + + if (!($yield !== nil)) { + return nil + }; + old = self.case_stmt; + self.case_stmt = $hash2([], {}); + Opal.yieldX($yield, []); + return (self.case_stmt = old); + }, 0); + + $def(self, '$in_while?', function $Compiler_in_while$ques$8() { + var self = this; + + return self.scope['$in_while?']() + }, 0); + + $def(self, '$process', function $$process(sexp, level) { + var self = this, handler = nil; + + + + if (level == null) level = "expr";; + if ($truthy(sexp['$nil?']())) { + return self.$fragment("", self.$scope()) + }; + if ($truthy((handler = self.$handlers()['$[]'](sexp.$type())))) { + return handler.$new(sexp, level, self).$compile_to_fragments() + } else { + return self.$error("Unsupported sexp: " + (sexp.$type())) + }; + }, -2); + + $def(self, '$handlers', function $$handlers() { + var self = this, $ret_or_1 = nil; + + return (self.handlers = ($truthy(($ret_or_1 = self.handlers)) ? ($ret_or_1) : ($$$($$$($$('Opal'), 'Nodes'), 'Base').$handlers()))) + }, 0); + + $def(self, '$requires', function $$requires() { + var self = this, $ret_or_1 = nil; + + return (self.requires = ($truthy(($ret_or_1 = self.requires)) ? ($ret_or_1) : ([]))) + }, 0); + + $def(self, '$required_trees', function $$required_trees() { + var self = this, $ret_or_1 = nil; + + return (self.required_trees = ($truthy(($ret_or_1 = self.required_trees)) ? ($ret_or_1) : ([]))) + }, 0); + + $def(self, '$autoloads', function $$autoloads() { + var self = this, $ret_or_1 = nil; + + return (self.autoloads = ($truthy(($ret_or_1 = self.autoloads)) ? ($ret_or_1) : ([]))) + }, 0); + + $def(self, '$returns', function $$returns(sexp) { + var $a, $b, self = this, $ret_or_1 = nil, when_sexp = nil, then_sexp = nil, body_sexp = nil, resbodies = nil, else_sexp = nil, klass = nil, lvar = nil, body = nil, rescue_sexp = nil, ensure_body = nil, rest = nil, last = nil, cond = nil, true_body = nil, false_body = nil; + + + if (!$truthy(sexp)) { + return self.$returns(self.$s("nil")) + }; + if ($eqeqeq("undef", ($ret_or_1 = sexp.$type()))) { + return self.$returns(sexp.$updated("begin", [sexp, self.$s("nil")])) + } else if (($eqeqeq("break", $ret_or_1) || (($eqeqeq("next", $ret_or_1) || (($eqeqeq("redo", $ret_or_1) || ($eqeqeq("retry", $ret_or_1)))))))) { + return sexp + } else if ($eqeqeq("yield", $ret_or_1)) { + return sexp.$updated("returnable_yield", nil) + } else if ($eqeqeq("when", $ret_or_1)) { + + $a = [].concat($to_a(sexp)), $b = $a.length - 1, $b = ($b < 0) ? 0 : $b, (when_sexp = $slice.call($a, 0, $b)), (then_sexp = ($a[$b] == null ? nil : $a[$b])), $a; + return sexp.$updated(nil, [].concat($to_a(when_sexp)).concat([self.$returns(then_sexp)])); + } else if ($eqeqeq("rescue", $ret_or_1)) { + + $a = [].concat($to_a(sexp)), (body_sexp = ($a[0] == null ? nil : $a[0])), $b = $a.length - 1, $b = ($b < 1) ? 1 : $b, (resbodies = $slice.call($a, 1, $b)), (else_sexp = ($a[$b] == null ? nil : $a[$b])), $a; + resbodies = $send(resbodies, 'map', [], function $$9(resbody){var self = $$9.$$s == null ? this : $$9.$$s; + + + + if (resbody == null) resbody = nil;; + return self.$returns(resbody);}, {$$arity: 1, $$s: self}); + if ($truthy(else_sexp)) { + else_sexp = self.$returns(else_sexp) + }; + return sexp.$updated(nil, [self.$returns(body_sexp)].concat($to_a(resbodies)).concat([else_sexp])); + } else if ($eqeqeq("resbody", $ret_or_1)) { + + $a = [].concat($to_a(sexp)), (klass = ($a[0] == null ? nil : $a[0])), (lvar = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), $a; + return sexp.$updated(nil, [klass, lvar, self.$returns(body)]); + } else if ($eqeqeq("ensure", $ret_or_1)) { + + $a = [].concat($to_a(sexp)), (rescue_sexp = ($a[0] == null ? nil : $a[0])), (ensure_body = ($a[1] == null ? nil : $a[1])), $a; + sexp = sexp.$updated(nil, [self.$returns(rescue_sexp), ensure_body]); + return sexp.$updated("js_return", [sexp]); + } else if (($eqeqeq("begin", $ret_or_1) || ($eqeqeq("kwbegin", $ret_or_1)))) { + + $a = [].concat($to_a(sexp)), $b = $a.length - 1, $b = ($b < 0) ? 0 : $b, (rest = $slice.call($a, 0, $b)), (last = ($a[$b] == null ? nil : $a[$b])), $a; + return sexp.$updated(nil, [].concat($to_a(rest)).concat([self.$returns(last)])); + } else if (($eqeqeq("while", $ret_or_1) || (($eqeqeq("until", $ret_or_1) || (($eqeqeq("while_post", $ret_or_1) || ($eqeqeq("until_post", $ret_or_1)))))))) { + return sexp + } else if (($eqeqeq("return", $ret_or_1) || (($eqeqeq("js_return", $ret_or_1) || ($eqeqeq("returnable_yield", $ret_or_1)))))) { + return sexp + } else if ($eqeqeq("xstr", $ret_or_1)) { + return sexp.$updated(nil, [$send(self, 's', ["js_return"].concat($to_a(sexp.$children())))]) + } else if ($eqeqeq("if", $ret_or_1)) { + + $a = [].concat($to_a(sexp)), (cond = ($a[0] == null ? nil : $a[0])), (true_body = ($a[1] == null ? nil : $a[1])), (false_body = ($a[2] == null ? nil : $a[2])), $a; + return sexp.$updated(nil, [cond, self.$returns(true_body), self.$returns(false_body)]); + } else if (($eqeq(sexp.$type(), "send") && ($eqeq(sexp.$children()['$[]'](1), "debugger")))) { + return sexp.$updated("begin", [sexp, self.$s("js_return", self.$s("nil"))]) + } else { + return sexp.$updated("js_return", [sexp]) + }; + }, 1); + + $def(self, '$handle_block_given_call', function $$handle_block_given_call(sexp) { + var self = this, scope = nil; + + + self.scope['$uses_block!'](); + if ($truthy(self.scope.$block_name())) { + return self.$fragment("(" + (self.scope.$block_name()) + " !== nil)", self.$scope(), sexp) + } else if (($truthy((scope = self.scope.$find_parent_def())) && ($truthy(scope.$block_name())))) { + return self.$fragment("(" + (scope.$block_name()) + " !== nil)", scope, sexp) + } else { + return self.$fragment("false", scope, sexp) + }; + }, 1); + + $def(self, '$marshal_dump', function $$marshal_dump() { + var self = this, $ret_or_1 = nil; + + return [self.options, self.option_values, (self.source_map = ($truthy(($ret_or_1 = self.source_map)) ? ($ret_or_1) : (self.$source_map().$cache()))), self.magic_comments, self.result, self.required_trees, self.requires, self.autoloads] + }, 0); + return $def(self, '$marshal_load', function $$marshal_load(src) { + var $a, $b, self = this; + + return $b = src, $a = $to_ary($b), (self.options = ($a[0] == null ? nil : $a[0])), (self.option_values = ($a[1] == null ? nil : $a[1])), (self.source_map = ($a[2] == null ? nil : $a[2])), (self.magic_comments = ($a[3] == null ? nil : $a[3])), (self.result = ($a[4] == null ? nil : $a[4])), (self.required_trees = ($a[5] == null ? nil : $a[5])), (self.requires = ($a[6] == null ? nil : $a[6])), (self.autoloads = ($a[7] == null ? nil : $a[7])), $b + }, 1); + })($nesting[0], null, $nesting); + })($nesting[0], $nesting); +}; + +Opal.modules["opal/erb"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $defs = Opal.defs, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $send = Opal.send, $regexp = Opal.regexp; + + Opal.add_stubs('require,compile,new,freeze,fix_quotes,find_contents,find_code,wrap_compiled,require_erb,prepared_source,gsub,+,last_match,=~,sub'); + + self.$require("opal/compiler"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'ERB'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs(self, '$compile', function $$compile(source, file_name) { + + + + if (file_name == null) file_name = "(erb)";; + return $$('Compiler').$new(source, file_name).$compile(); + }, -2); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Compiler'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.prepared_source = $proto.source = $proto.file_name = nil; + + $const_set($nesting[0], 'BLOCK_EXPR', /\s+(do|\{)(\s*\|[^|]*\|)?\s*\Z/.$freeze()); + + $def(self, '$initialize', function $$initialize(source, file_name) { + var $a, self = this; + + + + if (file_name == null) file_name = "(erb)";; + return $a = [source, file_name, source], (self.source = $a[0]), (self.file_name = $a[1]), (self.result = $a[2]), $a; + }, -2); + + $def(self, '$prepared_source', function $$prepared_source() { + var self = this, $ret_or_1 = nil, source = nil; + + return (self.prepared_source = ($truthy(($ret_or_1 = self.prepared_source)) ? ($ret_or_1) : (((source = self.source), (source = self.$fix_quotes(source)), (source = self.$find_contents(source)), (source = self.$find_code(source)), (source = self.$wrap_compiled(source)), (source = self.$require_erb(source)), source)))) + }, 0); + + $def(self, '$compile', function $$compile() { + var self = this; + + return $$('Opal').$compile(self.$prepared_source()) + }, 0); + + $def(self, '$fix_quotes', function $$fix_quotes(result) { + + return result.$gsub("\"", "\\\"") + }, 1); + + $def(self, '$require_erb', function $$require_erb(result) { + + return $rb_plus("require \"erb\";", result) + }, 1); + + $def(self, '$find_contents', function $$find_contents(result) { + + return $send(result, 'gsub', [/<%=([\s\S]+?)%>/], function $$1(){var inner = nil; + + + inner = $$('Regexp').$last_match(1).$gsub(/\\'/, "'").$gsub(/\\"/, "\""); + if ($truthy(inner['$=~']($$('BLOCK_EXPR')))) { + return "\")\noutput_buffer.append= " + (inner) + "\noutput_buffer.append(\"" + } else { + return "\")\noutput_buffer.append=(" + (inner) + ")\noutput_buffer.append(\"" + };}, 0) + }, 1); + + $def(self, '$find_code', function $$find_code(result) { + + return $send(result, 'gsub', [/<%([\s\S]+?)%>/], function $$2(){var inner = nil; + + + inner = $$('Regexp').$last_match(1).$gsub(/\\"/, "\""); + return "\")\n" + (inner) + "\noutput_buffer.append(\"";}, 0) + }, 1); + return $def(self, '$wrap_compiled', function $$wrap_compiled(result) { + var self = this, path = nil; + + + path = self.file_name.$sub($regexp(["\\.opalerb", $$('REGEXP_END')]), ""); + return "Template.new('" + (path) + "') do |output_buffer|\noutput_buffer.append(\"" + (result) + "\")\noutput_buffer.join\nend\n"; + }, 1); + })($nesting[0], null, $nesting); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/builder_processors"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $send = Opal.send, $def = Opal.def, $eqeq = Opal.eqeq, $Opal = Opal.Opal, $const_set = Opal.const_set, $send2 = Opal.send2, $find_super = Opal.find_super, $defs = Opal.defs, $to_a = Opal.to_a; + + Opal.add_stubs('require,end_with?,+,dup,delete,cache,attr_reader,to_s,source,join,==,size,new,register_processor,is_a?,match,match_regexp,raise,inspect,handles,map,with_index,each_line,index,filename,mark_as_required,result,compiled,source_map,fetch,cache_key,compiler_for,compile,class,merge,requires,required_trees,autoloads,extname,prepare,private,prepared_source,module_name'); + + self.$require("opal/compiler"); + self.$require("opal/erb"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'BuilderProcessors'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Processor'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.options = nil; + + + $def(self, '$initialize', function $$initialize(source, filename, options) { + var $a, self = this; + + + + if (options == null) options = $hash2([], {});; + if (!$truthy(source['$end_with?']("\n"))) { + source = $rb_plus(source, "\n") + }; + $a = [source, filename, options.$dup()], (self.source = $a[0]), (self.filename = $a[1]), (self.options = $a[2]), $a; + self.cache = $send(self.options, 'delete', ["cache"], function $$1(){ + return $$('Opal').$cache()}, 0); + self.requires = []; + self.required_trees = []; + return (self.autoloads = []); + }, -3); + self.$attr_reader("source", "filename", "options", "requires", "required_trees", "autoloads"); + + $def(self, '$to_s', function $$to_s() { + var self = this; + + return self.$source().$to_s() + }, 0); + (function(self, $parent_nesting) { + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$attr_reader("extensions"); + + $def(self, '$handles', function $$handles($a) { + var $post_args, extensions, self = this, matches = nil; + + + + $post_args = Opal.slice.call(arguments); + + extensions = $post_args;; + self.extensions = extensions; + matches = extensions.$join("|"); + if (!$eqeq(extensions.$size(), 1)) { + matches = "(" + (matches) + ")" + }; + self.match_regexp = $$('Regexp').$new("\\." + (matches) + ($$('REGEXP_END'))); + $$$($Opal, 'Builder').$register_processor(self, extensions); + return nil; + }, -1); + + $def(self, '$match?', function $match$ques$2(other) { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = other['$is_a?']($$('String'))))) { + return other.$match(self.$match_regexp()) + } else { + return $ret_or_1 + } + }, 1); + return $def(self, '$match_regexp', function $$match_regexp() { + var self = this, $ret_or_1 = nil; + if (self.match_regexp == null) self.match_regexp = nil; + + if ($truthy(($ret_or_1 = self.match_regexp))) { + return $ret_or_1 + } else { + return self.$raise($$('NotImplementedError')) + } + }, 0); + })(Opal.get_singleton_class(self), $nesting); + return $def(self, '$mark_as_required', function $$mark_as_required(filename) { + + return "Opal.loaded([" + (filename.$to_s().$inspect()) + "]);" + }, 1); + })($nesting[0], null, $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'JsProcessor'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.source_map = $proto.source = $proto.filename = nil; + + self.$handles("js"); + $const_set($nesting[0], 'ManualFragment', $$('Struct').$new("line", "column", "code", "source_map_name")); + + $def(self, '$source_map', function $$source_map() { + var self = this, $ret_or_1 = nil, manual_fragments = nil; + + return (self.source_map = ($truthy(($ret_or_1 = self.source_map)) ? ($ret_or_1) : (((manual_fragments = $send(self.$source().$each_line().$with_index(), 'map', [], function $$3(line_source, index){var column = nil, line = nil; + + + + if (line_source == null) line_source = nil;; + + if (index == null) index = nil;; + column = line_source.$index(/\S/); + line = $rb_plus(index, 1); + return $$('ManualFragment').$new(line, column, line_source, nil);}, 2)), $$$($$$($Opal, 'SourceMap'), 'File').$new(manual_fragments, self.$filename(), self.$source()))))) + }, 0); + return $def(self, '$source', function $$source() { + var self = this; + + return $rb_plus(self.source.$to_s(), self.$mark_as_required(self.filename)) + }, 0); + })($nesting[0], $$('Processor'), $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'RubyProcessor'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.compiled = $proto.cache = $proto.filename = $proto.source = $proto.options = nil; + + self.$handles("rb", "opal"); + + $def(self, '$source', function $$source() { + var self = this; + + return self.$compiled().$result() + }, 0); + + $def(self, '$source_map', function $$source_map() { + var self = this; + + return self.$compiled().$source_map() + }, 0); + + $def(self, '$compiled', function $$compiled() { + var self = this, $ret_or_1 = nil; + + return (self.compiled = ($truthy(($ret_or_1 = self.compiled)) ? ($ret_or_1) : ($send($$$($$('Opal'), 'Cache'), 'fetch', [self.cache, self.$cache_key()], function $$4(){var self = $$4.$$s == null ? this : $$4.$$s, compiler = nil; + if (self.source == null) self.source = nil; + if (self.filename == null) self.filename = nil; + + + compiler = self.$compiler_for(self.source, $hash2(["file"], {"file": self.filename})); + compiler.$compile(); + return compiler;}, {$$arity: 0, $$s: self})))) + }, 0); + + $def(self, '$cache_key', function $$cache_key() { + var self = this; + + return [self.$class(), self.filename, self.source, self.options] + }, 0); + + $def(self, '$compiler_for', function $$compiler_for(source, options) { + var self = this; + + + + if (options == null) options = $hash2([], {});; + return $$$($Opal, 'Compiler').$new(source, self.options.$merge(options)); + }, -2); + + $def(self, '$requires', function $$requires() { + var self = this; + + return self.$compiled().$requires() + }, 0); + + $def(self, '$required_trees', function $$required_trees() { + var self = this; + + return self.$compiled().$required_trees() + }, 0); + + $def(self, '$autoloads', function $$autoloads() { + var self = this; + + return self.$compiled().$autoloads() + }, 0); + return $defs(self, '$match?', function $RubyProcessor_match$ques$5(other) { + var $yield = $RubyProcessor_match$ques$5.$$p || nil, self = this, $ret_or_1 = nil; + + delete $RubyProcessor_match$ques$5.$$p; + if ($truthy(($ret_or_1 = $send2(self, $find_super(self, 'match?', $RubyProcessor_match$ques$5, false, true), 'match?', [other], $yield)))) { + return $ret_or_1 + } else { + return $$('File').$extname(other.$to_s())['$==']("") + } + }, 1); + })($nesting[0], $$('Processor'), $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'OpalERBProcessor'); + + var $proto = self.$$prototype; + + $proto.source = $proto.filename = nil; + + self.$handles("opalerb"); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, args, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a(args), $yield); + return (self.source = self.$prepare(self.source, self.filename)); + }, -1); + + $def(self, '$requires', function $$requires() { + var $yield = $$requires.$$p || nil, self = this; + + delete $$requires.$$p; + return $rb_plus(["erb"], $send2(self, $find_super(self, 'requires', $$requires, false, true), 'requires', [], $yield)) + }, 0); + self.$private(); + return $def(self, '$prepare', function $$prepare(source, path) { + + return $$$($$$($Opal, 'ERB'), 'Compiler').$new(source, path).$prepared_source() + }, 2); + })($nesting[0], $$('RubyProcessor')); + return (function($base, $super) { + var self = $klass($base, $super, 'ERBProcessor'); + + var $proto = self.$$prototype; + + $proto.source = $proto.filename = nil; + + self.$handles("erb"); + return $def(self, '$source', function $$source() { + var self = this, result = nil, module_name = nil; + + + result = $$$('ERB').$new(self.source.$to_s()).$result(); + module_name = $$$($Opal, 'Compiler').$module_name(self.filename); + return "Opal.modules[" + (module_name.$inspect()) + "] = function() {" + (result) + "};"; + }, 0); + })($nesting[0], $$('Processor')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["base64"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $defs = Opal.defs, $hash2 = Opal.hash2, $truthy = Opal.truthy; + + Opal.add_stubs('raise,delete'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Base64'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + var encode, decode; + + // encoder + // [https://gist.github.com/999166] by [https://github.com/nignag] + encode = function (input) { + var str = String(input); + /* eslint-disable */ + for ( + // initialize result and counter + var block, charCode, idx = 0, map = chars, output = ''; + // if the next str index does not exist: + // change the mapping table to "=" + // check if d has no fractional digits + str.charAt(idx | 0) || (map = '=', idx % 1); + // "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8 + output += map.charAt(63 & block >> 8 - idx % 1 * 8) + ) { + charCode = str.charCodeAt(idx += 3/4); + if (charCode > 0xFF) { + self.$raise($$('ArgumentError'), "invalid character (failed: The string to be encoded contains characters outside of the Latin1 range.)"); + } + block = block << 8 | charCode; + } + return output; + /* eslint-enable */ + }; + + // decoder + // [https://gist.github.com/1020396] by [https://github.com/atk] + decode = function (input) { + var str = String(input).replace(/=+$/, ''); + if (str.length % 4 == 1) { + self.$raise($$('ArgumentError'), "invalid base64 (failed: The string to be decoded is not correctly encoded.)"); + } + /* eslint-disable */ + for ( + // initialize result and counters + var bc = 0, bs, buffer, idx = 0, output = ''; + // get next character + buffer = str.charAt(idx++); + // character found in table? initialize bit storage and add its ascii value; + ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, + // and if not first of each 4 characters, + // convert the first 8 bits to one ascii character + bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0 + ) { + // try to find character in table (0-63, not found => -1) + buffer = chars.indexOf(buffer); + } + return output; + /* eslint-enable */ + }; + ; + $defs(self, '$decode64', function $$decode64(string) { + + return decode(string.replace(/\r?\n/g, '')); + }, 1); + $defs(self, '$encode64', function $$encode64(string) { + + return encode(string).replace(/(.{60})/g, "$1\n").replace(/([^\n])$/g, "$1\n"); + }, 1); + $defs(self, '$strict_decode64', function $$strict_decode64(string) { + + return decode(string); + }, 1); + $defs(self, '$strict_encode64', function $$strict_encode64(string) { + + return encode(string); + }, 1); + $defs(self, '$urlsafe_decode64', function $$urlsafe_decode64(string) { + + return decode(string.replace(/\-/g, '+').replace(/_/g, '/')); + }, 1); + return $defs(self, '$urlsafe_encode64', function $$urlsafe_encode64(string, $kwargs) { + var padding, str = nil; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + padding = $kwargs.$$smap["padding"]; + if (padding == null) padding = true; + str = encode(string).replace(/\+/g, '-').replace(/\//g, '_'); + if (!$truthy(padding)) { + str = str.$delete("=") + }; + return str; + }, -2); + })($nesting[0], $nesting) +}; + +Opal.modules["corelib/pack_unpack/format_string_parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $Kernel = Opal.Kernel; + + Opal.add_stubs('raise'); + return (function($base) { + var self = $module($base, 'PackUnpack'); + + + + var directives = [ + // Integer + 'C', + 'S', + 'L', + 'Q', + 'J', + + 'c', + 's', + 'l', + 'q', + 'j', + + 'n', + 'N', + 'v', + 'V', + + 'U', + 'w', + + // Float + 'D', + 'd', + 'F', + 'f', + 'E', + 'e', + 'G', + 'g', + + // String + 'A', + 'a', + 'Z', + 'B', + 'b', + 'H', + 'h', + 'u', + 'M', + 'm', + + 'P', + 'p', + + // Misc + '@', + 'X', + 'x' + ]; + + var modifiers = [ + '!', // ignored + '_', // ignored + '>', // big endian + '<' // little endian + ]; + + self.eachDirectiveAndCount = function(format, callback) { + var currentDirective, + currentCount, + currentModifiers, + countSpecified; + + function reset() { + currentDirective = null; + currentCount = 0; + currentModifiers = []; + countSpecified = false; + } + + reset(); + + function yieldAndReset() { + if (currentDirective == null) { + reset(); + return; + } + + var directiveSupportsModifiers = /[sSiIlLqQjJ]/.test(currentDirective); + + if (!directiveSupportsModifiers && currentModifiers.length > 0) { + $Kernel.$raise($$$('ArgumentError'), "'" + (currentModifiers[0]) + "' allowed only after types sSiIlLqQjJ") + } + + if (currentModifiers.indexOf('<') !== -1 && currentModifiers.indexOf('>') !== -1) { + $Kernel.$raise($$$('RangeError'), "Can't use both '<' and '>'") + } + + if (!countSpecified) { + currentCount = 1; + } + + if (currentModifiers.indexOf('>') !== -1) { + currentDirective = currentDirective + '>'; + } + + callback(currentDirective, currentCount); + + reset(); + } + + for (var i = 0; i < format.length; i++) { + var currentChar = format[i]; + + if (directives.indexOf(currentChar) !== -1) { + // Directive char always resets current state + yieldAndReset(); + currentDirective = currentChar; + } else if (currentDirective) { + if (/\d/.test(currentChar)) { + // Count can be represented as a sequence of digits + currentCount = currentCount * 10 + parseInt(currentChar, 10); + countSpecified = true; + } else if (currentChar === '*' && countSpecified === false) { + // Count can be represented by a star character + currentCount = Infinity; + countSpecified = true; + } else if (modifiers.indexOf(currentChar) !== -1 && countSpecified === false) { + // Directives can be specified only after directive and before count + currentModifiers.push(currentChar); + } else { + yieldAndReset(); + } + } + } + + yieldAndReset(); + } + + })('::') +}; + +Opal.modules["corelib/string/unpack"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $Kernel = Opal.Kernel, $hash2 = Opal.hash2, $truthy = Opal.truthy, $rb_lt = Opal.rb_lt, $Opal = Opal.Opal, $rb_gt = Opal.rb_gt, $def = Opal.def; + + Opal.add_stubs('require,flatten,decode64,raise,<,delete,gsub,coerce_to!,>,length,inspect,[],unpack'); + + self.$require("base64"); + self.$require("corelib/pack_unpack/format_string_parser"); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'String'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), expected = nil, given = nil; + + + + // Format Parser + var eachDirectiveAndCount = Opal.PackUnpack.eachDirectiveAndCount; + + function flattenArray(callback) { + return function(data) { + var array = callback(data); + return (array).$flatten(); + } + } + + function mapChunksToWords(callback) { + return function(data) { + var chunks = callback(data); + + return chunks.map(function(chunk) { + return chunk.reverse().reduce(function(result, singleByte) { + return result * 256 + singleByte; + }, 0); + }); + } + } + + function chunkBy(chunkSize, callback) { + return function(data) { + var array = callback(data), + chunks = [], + chunksCount = (array.length / chunkSize); + + for (var i = 0; i < chunksCount; i++) { + var chunk = array.splice(0, chunkSize); + if (chunk.length === chunkSize) { + chunks.push(chunk); + } + } + + return chunks; + } + } + + function toNByteSigned(bytesCount, callback) { + return function(data) { + var unsignedBits = callback(data), + bitsCount = bytesCount * 8, + limit = Math.pow(2, bitsCount); + + return unsignedBits.map(function(n) { + if (n >= limit / 2) { + n -= limit; + } + + return n; + }); + } + } + + function bytesToAsciiChars(callback) { + return function(data) { + var bytes = callback(data); + + return bytes.map(function(singleByte) { + return String.fromCharCode(singleByte); + }); + } + } + + function joinChars(callback) { + return function(data) { + var chars = callback(data); + return chars.join(''); + } + } + + function wrapIntoArray(callback) { + return function(data) { + var object = callback(data); + return [object]; + } + } + + function filterTrailingChars(chars) { + var charCodesToFilter = chars.map(function(s) { return s.charCodeAt(0); }); + + return function(callback) { + return function(data) { + var charCodes = callback(data); + + while (charCodesToFilter.indexOf(charCodes[charCodes.length - 1]) !== -1) { + charCodes = charCodes.slice(0, charCodes.length - 1); + } + + return charCodes; + } + } + } + + var filterTrailingZerosAndSpaces = filterTrailingChars(["\u0000", " "]); + + function invertChunks(callback) { + return function(data) { + var chunks = callback(data); + + return chunks.map(function(chunk) { + return chunk.reverse(); + }); + } + } + + function uudecode(callback) { + return function(data) { + var bytes = callback(data); + + var stop = false; + var i = 0, length = 0; + + var result = []; + + do { + if (i < bytes.length) { + var n = bytes[i] - 32 & 0x3F; + + ++i; + + if (bytes[i] === 10) { + continue; + } + + if (n > 45) { + return ''; + } + + length += n; + + while (n > 0) { + var c1 = bytes[i]; + var c2 = bytes[i + 1]; + var c3 = bytes[i + 2]; + var c4 = bytes[i + 3]; + + var b1 = (c1 - 32 & 0x3F) << 2 | (c2 - 32 & 0x3F) >> 4; + var b2 = (c2 - 32 & 0x3F) << 4 | (c3 - 32 & 0x3F) >> 2; + var b3 = (c3 - 32 & 0x3F) << 6 | c4 - 32 & 0x3F; + + result.push(b1 & 0xFF); + result.push(b2 & 0xFF); + result.push(b3 & 0xFF); + + i += 4; + n -= 3; + } + + ++i; + } else { + break; + } + } while (true); + + return result.slice(0, length); + } + } + + function toBits(callback) { + return function(data) { + var bytes = callback(data); + + var bits = bytes.map(function(singleByte) { + return singleByte.toString(2); + }); + + return bits; + } + } + + function decodeBERCompressedIntegers(callback) { + return function(data) { + var bytes = callback(data), result = [], buffer = ''; + + for (var i = 0; i < bytes.length; i++) { + var singleByte = bytes[i], + bits = singleByte.toString(2); + + bits = Array(8 - bits.length + 1).join('0').concat(bits); + + var firstBit = bits[0]; + bits = bits.slice(1, bits.length); + + buffer = buffer.concat(bits); + + if (firstBit === '0') { + var decoded = parseInt(buffer, 2); + result.push(decoded); + buffer = '' + } + } + + return result; + } + } + + function base64Decode(callback) { + return function(data) { + return $$('Base64').$decode64(callback(data)); + } + } + + // quoted-printable decode + function qpdecode(callback) { + return function(data) { + var string = callback(data); + + return string + .replace(/[\t\x20]$/gm, '') + .replace(/=(?:\r\n?|\n|$)/g, '') + .replace(/=([a-fA-F0-9]{2})/g, function($0, $1) { + var codePoint = parseInt($1, 16); + return String.fromCharCode(codePoint); + }); + } + } + + function identityFunction(value) { return value; } + + var handlers = { + // Integer + 'C': identityFunction, + 'S': mapChunksToWords(chunkBy(2, identityFunction)), + 'L': mapChunksToWords(chunkBy(4, identityFunction)), + 'Q': mapChunksToWords(chunkBy(8, identityFunction)), + 'J': null, + + 'S>': mapChunksToWords(invertChunks(chunkBy(2, identityFunction))), + 'L>': mapChunksToWords(invertChunks(chunkBy(4, identityFunction))), + 'Q>': mapChunksToWords(invertChunks(chunkBy(8, identityFunction))), + + 'c': toNByteSigned(1, identityFunction), + 's': toNByteSigned(2, mapChunksToWords(chunkBy(2, identityFunction))), + 'l': toNByteSigned(4, mapChunksToWords(chunkBy(4, identityFunction))), + 'q': toNByteSigned(8, mapChunksToWords(chunkBy(8, identityFunction))), + 'j': null, + + 's>': toNByteSigned(2, mapChunksToWords(invertChunks(chunkBy(2, identityFunction)))), + 'l>': toNByteSigned(4, mapChunksToWords(invertChunks(chunkBy(4, identityFunction)))), + 'q>': toNByteSigned(8, mapChunksToWords(invertChunks(chunkBy(8, identityFunction)))), + + 'n': null, // aliased later + 'N': null, // aliased later + 'v': null, // aliased later + 'V': null, // aliased later + + 'U': identityFunction, + 'w': decodeBERCompressedIntegers(identityFunction), + + // Float + 'D': null, + 'd': null, + 'F': null, + 'f': null, + 'E': null, + 'e': null, + 'G': null, + 'g': null, + + // String + 'A': wrapIntoArray(joinChars(bytesToAsciiChars(filterTrailingZerosAndSpaces(identityFunction)))), + 'a': wrapIntoArray(joinChars(bytesToAsciiChars(identityFunction))), + 'Z': joinChars(bytesToAsciiChars(identityFunction)), + 'B': joinChars(identityFunction), + 'b': joinChars(identityFunction), + 'H': joinChars(identityFunction), + 'h': joinChars(identityFunction), + 'u': joinChars(bytesToAsciiChars(uudecode(identityFunction))), + 'M': qpdecode(joinChars(bytesToAsciiChars(identityFunction))), + 'm': base64Decode(joinChars(bytesToAsciiChars(identityFunction))), + + 'P': null, + 'p': null + }; + + function readBytes(n) { + return function(bytes) { + var chunk = bytes.slice(0, n); + bytes = bytes.slice(n, bytes.length); + return { chunk: chunk, rest: bytes }; + } + } + + function readUnicodeCharChunk(bytes) { + var currentByteIndex = 0; + var bytesLength = bytes.length; + function readByte() { + var result = bytes[currentByteIndex++]; + bytesLength = bytes.length - currentByteIndex; + return result; + } + + var c = readByte(), extraLength; + + if (c >> 7 == 0) { + // 0xxx xxxx + return { chunk: [c], rest: bytes.slice(currentByteIndex) }; + } + + if (c >> 6 == 0x02) { + $Kernel.$raise($$$('ArgumentError'), "malformed UTF-8 character") + } + + if (c >> 5 == 0x06) { + // 110x xxxx (two bytes) + extraLength = 1; + } else if (c >> 4 == 0x0e) { + // 1110 xxxx (three bytes) + extraLength = 2; + } else if (c >> 3 == 0x1e) { + // 1111 0xxx (four bytes) + extraLength = 3; + } else if (c >> 2 == 0x3e) { + // 1111 10xx (five bytes) + extraLength = 4; + } else if (c >> 1 == 0x7e) { + // 1111 110x (six bytes) + extraLength = 5; + } else { + $Kernel.$raise("malformed UTF-8 character") + } + + if (extraLength > bytesLength) { + ((expected = extraLength + 1), (given = bytesLength + 1), $Kernel.$raise($$$('ArgumentError'), "malformed UTF-8 character (expected " + (expected) + " bytes, given " + (given) + " bytes)")) + } + + // Remove the UTF-8 prefix from the char + var mask = (1 << (8 - extraLength - 1)) - 1, + result = c & mask; + + for (var i = 0; i < extraLength; i++) { + c = readByte(); + + if (c >> 6 != 0x02) { + $Kernel.$raise("Invalid multibyte sequence") + } + + result = (result << 6) | (c & 0x3f); + } + + if (result <= 0xffff) { + return { chunk: [result], rest: bytes.slice(currentByteIndex) }; + } else { + result -= 0x10000; + var high = ((result >> 10) & 0x3ff) + 0xd800, + low = (result & 0x3ff) + 0xdc00; + return { chunk: [high, low], rest: bytes.slice(currentByteIndex) }; + } + } + + function readUuencodingChunk(buffer) { + var length = buffer.indexOf(32); // 32 = space + + if (length === -1) { + return { chunk: buffer, rest: [] }; + } else { + return { chunk: buffer.slice(0, length), rest: buffer.slice(length, buffer.length) }; + } + } + + function readNBitsLSBFirst(buffer, count) { + var result = ''; + + while (count > 0 && buffer.length > 0) { + var singleByte = buffer[0], + bitsToTake = Math.min(count, 8), + bytesToTake = Math.ceil(bitsToTake / 8); + + buffer = buffer.slice(1, buffer.length); + + if (singleByte != null) { + var bits = singleByte.toString(2); + bits = Array(8 - bits.length + 1).join('0').concat(bits).split('').reverse().join(''); + + for (var j = 0; j < bitsToTake; j++) { + result += bits[j] || '0'; + count--; + } + } + } + + return { chunk: [result], rest: buffer }; + } + + function readNBitsMSBFirst(buffer, count) { + var result = ''; + + while (count > 0 && buffer.length > 0) { + var singleByte = buffer[0], + bitsToTake = Math.min(count, 8), + bytesToTake = Math.ceil(bitsToTake / 8); + + buffer = buffer.slice(1, buffer.length); + + if (singleByte != null) { + var bits = singleByte.toString(2); + bits = Array(8 - bits.length + 1).join('0').concat(bits); + + for (var j = 0; j < bitsToTake; j++) { + result += bits[j] || '0'; + count--; + } + } + } + + return { chunk: [result], rest: buffer }; + } + + function readWhileFirstBitIsOne(buffer) { + var result = []; + + for (var i = 0; i < buffer.length; i++) { + var singleByte = buffer[i]; + + result.push(singleByte); + + if ((singleByte & 128) === 0) { + break; + } + } + + return { chunk: result, rest: buffer.slice(result.length, buffer.length) }; + } + + function readTillNullCharacter(buffer, count) { + var result = []; + + for (var i = 0; i < count && i < buffer.length; i++) { + var singleByte = buffer[i]; + + if (singleByte === 0) { + break; + } else { + result.push(singleByte); + } + } + + if (count === Infinity) { + count = result.length; + } + + if (buffer[count] === 0) { + count++; + } + + buffer = buffer.slice(count, buffer.length); + + return { chunk: result, rest: buffer }; + } + + function readHexCharsHighNibbleFirst(buffer, count) { + var result = []; + + while (count > 0 && buffer.length > 0) { + var singleByte = buffer[0], + hex = singleByte.toString(16); + + buffer = buffer.slice(1, buffer.length); + hex = Array(2 - hex.length + 1).join('0').concat(hex); + + if (count === 1) { + result.push(hex[0]); + count--; + } else { + result.push(hex[0], hex[1]); + count -= 2; + } + } + + return { chunk: result, rest: buffer }; + } + + function readHexCharsLowNibbleFirst(buffer, count) { + var result = []; + + while (count > 0 && buffer.length > 0) { + var singleByte = buffer[0], + hex = singleByte.toString(16); + + buffer = buffer.slice(1, buffer.length); + hex = Array(2 - hex.length + 1).join('0').concat(hex); + + if (count === 1) { + result.push(hex[1]); + count--; + } else { + result.push(hex[1], hex[0]); + count -= 2; + } + } + + return { chunk: result, rest: buffer }; + } + + function readNTimesAndMerge(callback) { + return function(buffer, count) { + var chunk = [], chunkData; + + if (count === Infinity) { + while (buffer.length > 0) { + chunkData = callback(buffer); + buffer = chunkData.rest; + chunk = chunk.concat(chunkData.chunk); + } + } else { + for (var i = 0; i < count; i++) { + chunkData = callback(buffer); + buffer = chunkData.rest; + chunk = chunk.concat(chunkData.chunk); + } + } + + return { chunk: chunk, rest: buffer }; + } + } + + function readAll(buffer, count) { + return { chunk: buffer, rest: [] }; + } + + var readChunk = { + // Integer + 'C': readNTimesAndMerge(readBytes(1)), + 'S': readNTimesAndMerge(readBytes(2)), + 'L': readNTimesAndMerge(readBytes(4)), + 'Q': readNTimesAndMerge(readBytes(8)), + 'J': null, + + 'S>': readNTimesAndMerge(readBytes(2)), + 'L>': readNTimesAndMerge(readBytes(4)), + 'Q>': readNTimesAndMerge(readBytes(8)), + + 'c': readNTimesAndMerge(readBytes(1)), + 's': readNTimesAndMerge(readBytes(2)), + 'l': readNTimesAndMerge(readBytes(4)), + 'q': readNTimesAndMerge(readBytes(8)), + 'j': null, + + 's>': readNTimesAndMerge(readBytes(2)), + 'l>': readNTimesAndMerge(readBytes(4)), + 'q>': readNTimesAndMerge(readBytes(8)), + + 'n': null, // aliased later + 'N': null, // aliased later + 'v': null, // aliased later + 'V': null, // aliased later + + 'U': readNTimesAndMerge(readUnicodeCharChunk), + 'w': readNTimesAndMerge(readWhileFirstBitIsOne), + + // Float + 'D': null, + 'd': null, + 'F': null, + 'f': null, + 'E': null, + 'e': null, + 'G': null, + 'g': null, + + // String + 'A': readNTimesAndMerge(readBytes(1)), + 'a': readNTimesAndMerge(readBytes(1)), + 'Z': readTillNullCharacter, + 'B': readNBitsMSBFirst, + 'b': readNBitsLSBFirst, + 'H': readHexCharsHighNibbleFirst, + 'h': readHexCharsLowNibbleFirst, + 'u': readNTimesAndMerge(readUuencodingChunk), + 'M': readAll, + 'm': readAll, + + 'P': null, + 'p': null + } + + var autocompletion = { + // Integer + 'C': true, + 'S': true, + 'L': true, + 'Q': true, + 'J': null, + + 'S>': true, + 'L>': true, + 'Q>': true, + + 'c': true, + 's': true, + 'l': true, + 'q': true, + 'j': null, + + 's>': true, + 'l>': true, + 'q>': true, + + 'n': null, // aliased later + 'N': null, // aliased later + 'v': null, // aliased later + 'V': null, // aliased later + + 'U': false, + 'w': false, + + // Float + 'D': null, + 'd': null, + 'F': null, + 'f': null, + 'E': null, + 'e': null, + 'G': null, + 'g': null, + + // String + 'A': false, + 'a': false, + 'Z': false, + 'B': false, + 'b': false, + 'H': false, + 'h': false, + 'u': false, + 'M': false, + 'm': false, + + 'P': null, + 'p': null + } + + var optimized = { + 'C*': handlers['C'], + 'c*': handlers['c'], + 'A*': handlers['A'], + 'a*': handlers['a'], + 'M*': wrapIntoArray(handlers['M']), + 'm*': wrapIntoArray(handlers['m']), + 'S*': handlers['S'], + 's*': handlers['s'], + 'L*': handlers['L'], + 'l*': handlers['l'], + 'Q*': handlers['Q'], + 'q*': handlers['q'], + 'S>*': handlers['S>'], + 's>*': handlers['s>'], + 'L>*': handlers['L>'], + 'l>*': handlers['l>'], + 'Q>*': handlers['Q>'], + 'q>*': handlers['q>'] + } + + function alias(existingDirective, newDirective) { + readChunk[newDirective] = readChunk[existingDirective]; + handlers[newDirective] = handlers[existingDirective]; + autocompletion[newDirective] = autocompletion[existingDirective]; + } + + alias('S>', 'n'); + alias('L>', 'N'); + + alias('S', 'v'); + alias('L', 'V'); + ; + + $def(self, '$unpack', function $$unpack(format, $kwargs) { + var offset, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + offset = $kwargs.$$smap["offset"]; + if (offset == null) offset = 0; + if ($truthy($rb_lt(offset, 0))) { + $Kernel.$raise($$$('ArgumentError'), "offset can't be negative") + }; + format = $Opal['$coerce_to!'](format, $$$('String'), "to_str").$gsub(/\s/, "").$delete("\u0000"); + + var output = []; + + // A very optimized handler for U*. + if (format == "U*" && + self.internal_encoding.name === "UTF-8" && + typeof self.codePointAt === "function") { + + var cp, j = 0; + + output = new Array(self.length); + for (var i = offset; i < self.length; i++) { + cp = output[j++] = self.codePointAt(i); + if (cp > 0xffff) i++; + } + return output.slice(0, j); + } + + var buffer = self.$bytes(); + + ($truthy($rb_gt(offset, (buffer).$length())) ? ($Kernel.$raise($$$('ArgumentError'), "offset outside of string")) : nil) + + buffer = buffer.slice(offset); + + + // optimization + var optimizedHandler = optimized[format]; + if (optimizedHandler) { + return optimizedHandler(buffer); + } + + function autocomplete(array, size) { + while (array.length < size) { + array.push(nil); + } + + return array; + } + + function processChunk(directive, count) { + var chunk, + chunkReader = readChunk[directive]; + + if (chunkReader == null) { + $Kernel.$raise("Unsupported unpack directive " + ((directive).$inspect()) + " (no chunk reader defined)") + } + + var chunkData = chunkReader(buffer, count); + chunk = chunkData.chunk; + buffer = chunkData.rest; + + var handler = handlers[directive]; + + if (handler == null) { + $Kernel.$raise("Unsupported unpack directive " + ((directive).$inspect()) + " (no handler defined)") + } + + return handler(chunk); + } + + eachDirectiveAndCount(format, function(directive, count) { + var part = processChunk(directive, count); + + if (count !== Infinity) { + var shouldAutocomplete = autocompletion[directive]; + + if (shouldAutocomplete == null) { + $Kernel.$raise("Unsupported unpack directive " + ((directive).$inspect()) + " (no autocompletion rule defined)") + } + + if (shouldAutocomplete) { + autocomplete(part, count); + } + } + + output = output.concat(part); + }); + + return output; + ; + }, -2); + return $def(self, '$unpack1', function $$unpack1(format, $kwargs) { + var offset, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + offset = $kwargs.$$smap["offset"]; + if (offset == null) offset = 0; + format = $Opal['$coerce_to!'](format, $$$('String'), "to_str").$gsub(/\s/, "").$delete("\u0000"); + return self.$unpack(format['$[]'](0), $hash2(["offset"], {"offset": offset}))['$[]'](0); + }, -2); + })('::', null, $nesting); +}; + +Opal.modules["opal-builder"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, nil = Opal.nil; + + Opal.add_stubs('require'); + + self.$require("opal/builder"); + self.$require("opal/builder_processors"); + return self.$require("corelib/string/unpack"); +}; diff --git a/opal/1.4.1/opal-builder.min.js b/opal/1.4.1/opal-builder.min.js new file mode 100644 index 00000000..941dbd11 --- /dev/null +++ b/opal/1.4.1/opal-builder.min.js @@ -0,0 +1 @@ +Opal.modules["opal/regexp_anchors"]=function(Opal){var $nesting=[],$$$=(Opal.nil,Opal.$$$),$module=Opal.module,$const_set=Opal.const_set;return Opal.add_stubs("new"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set(self,"REGEXP_START","^"),$const_set(self,"REGEXP_END","$"),$const_set(self,"FORBIDDEN_STARTING_IDENTIFIER_CHARS","\\u0001-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"FORBIDDEN_ENDING_IDENTIFIER_CHARS","\\u0001-\\u0020\\u0022-\\u002F\\u003A-\\u003E\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"INLINE_IDENTIFIER_REGEXP",$$("Regexp").$new("[^"+$$$(self,"FORBIDDEN_STARTING_IDENTIFIER_CHARS")+"]*[^"+$$$(self,"FORBIDDEN_ENDING_IDENTIFIER_CHARS")+"]")),$const_set(self,"FORBIDDEN_CONST_NAME_CHARS","\\u0001-\\u0020\\u0021-\\u002F\\u003B-\\u003F\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"CONST_NAME_REGEXP",$$("Regexp").$new($$$(self,"REGEXP_START")+"(::)?[A-Z][^"+$$$(self,"FORBIDDEN_CONST_NAME_CHARS")+"]*"+$$$(self,"REGEXP_END")))}($nesting[0],$nesting)},Opal.modules["corelib/comparable"]=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$truthy=Opal.truthy,$module=Opal.module,$rb_gt=Opal.rb_gt,$rb_lt=Opal.rb_lt,$eqeqeq=Opal.eqeqeq,$Kernel=Opal.Kernel,$def=Opal.def;return Opal.add_stubs(">,<,===,raise,class,<=>,equal?"),function($base){var self=$module("::","Comparable"),$ret_or_1=nil;function normalize(what){return Opal.is_a(what,Opal.Integer)?what:$rb_gt(what,0)?1:$rb_lt(what,0)?-1:0}function cmp_or_fail(lhs,rhs){var cmp=lhs["$<=>"](rhs);return $truthy(cmp)||function(lhs,rhs){var class_name;class_name=$eqeqeq(nil,$ret_or_1=rhs)||$eqeqeq(!0,$ret_or_1)||$eqeqeq(!1,$ret_or_1)||$eqeqeq($$$("Integer"),$ret_or_1)||$eqeqeq($$$("Float"),$ret_or_1)?rhs.$inspect():rhs.$$class,$Kernel.$raise($$$("ArgumentError"),"comparison of "+lhs.$class()+" with "+class_name+" failed")}(lhs,rhs),normalize(cmp)}return $def(self,"$==",(function(other){var cmp;return!!$truthy(this["$equal?"](other))||this["$<=>"]!=Opal.Kernel["$<=>"]&&(this.$$comparable?(delete this.$$comparable,!1):!!$truthy(cmp=this["$<=>"](other))&&0==normalize(cmp))}),1),$def(self,"$>",(function(other){return cmp_or_fail(this,other)>0}),1),$def(self,"$>=",(function(other){return cmp_or_fail(this,other)>=0}),1),$def(self,"$<",(function(other){return cmp_or_fail(this,other)<0}),1),$def(self,"$<=",(function(other){return cmp_or_fail(this,other)<=0}),1),$def(self,"$between?",(function(min,max){return!$rb_lt(this,min)&&!$rb_gt(this,max)}),2),$def(self,"$clamp",(function(min,max){var c,excl;if(null==max&&(max=nil),max===nil&&(Opal.is_a(min,Opal.Range)||$Kernel.$raise($$$("TypeError"),"wrong argument type "+min.$class()+" (expected Range)"),excl=min.excl,max=min.end,min=min.begin,max!==nil&&excl&&$Kernel.$raise($$$("ArgumentError"),"cannot clamp with an exclusive range")),min!==nil&&max!==nil&&cmp_or_fail(min,max)>0&&$Kernel.$raise($$$("ArgumentError"),"min argument must be smaller than max argument"),min!==nil){if(0==(c=cmp_or_fail(this,min)))return this;if(c<0)return min}return max!==nil&&(c=cmp_or_fail(this,max))>0?max:this}),-2)}()},Opal.modules.pathname=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def,$defs=Opal.defs,$to_ary=Opal.to_ary,$send=Opal.send,$to_a=Opal.to_a,$neqeq=Opal.neqeq,$rb_plus=Opal.rb_plus,$not=Opal.not,$alias=Opal.alias,$module=Opal.module;return Opal.add_stubs("require,include,quote,===,to_s,path,respond_to?,to_path,is_a?,nil?,raise,class,==,new,pwd,attr_reader,!,relative?,chop_basename,basename,=~,source,[],rindex,sub,absolute?,expand_path,plus,unshift,length,!=,empty?,first,shift,+,join,dirname,pop,reverse_each,directory?,extname,<=>,nonzero?,proc,casecmp,cleanpath,inspect,include?,fill,map,entries"),self.$require("corelib/comparable"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Pathname"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.path=nil,self.$include($$("Comparable")),$const_set($nesting[0],"SEPARATOR_PAT",$regexp([$$("Regexp").$quote($$$($$("File"),"SEPARATOR"))])),$def(self,"$initialize",(function(path){return $eqeqeq($$("Pathname"),path)?this.path=path.$path().$to_s():$truthy(path["$respond_to?"]("to_path"))?this.path=path.$to_path():$truthy(path["$is_a?"]($$("String")))?this.path=path:$truthy(path["$nil?"]())?this.$raise($$("TypeError"),"no implicit conversion of nil into String"):this.$raise($$("TypeError"),"no implicit conversion of "+path.$class()+" into String"),$eqeq(this.path,"\0")?this.$raise($$("ArgumentError")):nil}),1),$defs(self,"$pwd",(function(){return this.$new($$("Dir").$pwd())}),0),self.$attr_reader("path"),$def(self,"$==",(function(other){return other.$path()["$=="](this.path)}),1),$def(self,"$absolute?",(function(){return this["$relative?"]()["$!"]()}),0),$def(self,"$relative?",(function(){var $b,path=nil,r=nil;for(path=this.path;$truthy(r=this.$chop_basename(path));)path=null==($b=$to_ary(r))[0]?nil:$b[0];return path["$=="]("")}),0),$def(self,"$chop_basename",(function(path){var base;return base=$$("File").$basename(path),$truthy($$("Regexp").$new("^"+$$$($$("Pathname"),"SEPARATOR_PAT").$source()+"?$")["$=~"](base))?nil:[path["$[]"](0,path.$rindex(base)),base]}),1),$def(self,"$root?",(function(){return this.path["$=="]("/")}),0),$def(self,"$parent",(function(){var new_path=nil;return new_path=this.path.$sub(/\/([^\/]+\/?$)/,""),$eqeq(new_path,"")&&(new_path=$truthy(this["$absolute?"]())?"/":"."),$$("Pathname").$new(new_path)}),0),$def(self,"$sub",(function($a){var args,self=this;return args=Opal.slice.call(arguments),$$("Pathname").$new($send(self.path,"sub",$to_a(args)))}),-1),$def(self,"$cleanpath",(function(){return Opal.normalize(this.path)}),0),$def(self,"$to_path",(function(){return this.path}),0),$def(self,"$hash",(function(){return this.path}),0),$def(self,"$expand_path",(function(){return $$("Pathname").$new($$("File").$expand_path(this.path))}),0),$def(self,"$+",(function(other){return $eqeqeq($$("Pathname"),other)||(other=$$("Pathname").$new(other)),$$("Pathname").$new(this.$plus(this.path,other.$to_s()))}),1),$def(self,"$plus",(function(path1,path2){var $b,prefix2=nil,index_list2=nil,basename_list2=nil,r2=nil,basename2=nil,prefix1=nil,$ret_or_1=nil,r1=nil,basename1=nil,suffix2=nil;for(prefix2=path2,index_list2=[],basename_list2=[];$truthy(r2=this.$chop_basename(prefix2));)prefix2=null==($b=$to_ary(r2))[0]?nil:$b[0],basename2=null==$b[1]?nil:$b[1],index_list2.$unshift(prefix2.$length()),basename_list2.$unshift(basename2);if($neqeq(prefix2,""))return path2;for(prefix1=path1;$truthy(!0);){for(;$truthy($truthy($ret_or_1=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="]("."):$ret_or_1);)index_list2.$shift(),basename_list2.$shift();if(!$truthy(r1=this.$chop_basename(prefix1)))break;if(prefix1=null==($b=$to_ary(r1))[0]?nil:$b[0],basename1=null==$b[1]?nil:$b[1],!$eqeq(basename1,".")){if($eqeq(basename1,"..")||$truthy(basename_list2["$empty?"]())||$neqeq(basename_list2.$first(),"..")){prefix1=$rb_plus(prefix1,basename1);break}index_list2.$shift(),basename_list2.$shift()}}if(r1=this.$chop_basename(prefix1),$not(r1)&&$truthy($regexp([$$("SEPARATOR_PAT")])["$=~"]($$("File").$basename(prefix1))))for(;$truthy($truthy($ret_or_1=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="](".."):$ret_or_1);)index_list2.$shift(),basename_list2.$shift();return $not(basename_list2["$empty?"]())?(suffix2=path2["$[]"](Opal.Range.$new(index_list2.$first(),-1,!1)),$truthy(r1)?$$("File").$join(prefix1,suffix2):$rb_plus(prefix1,suffix2)):$truthy(r1)?prefix1:$$("File").$dirname(prefix1)}),2),$def(self,"$join",(function($a){try{var $post_args,args,self=this,result=nil;return $post_args=Opal.slice.call(arguments),$truthy((args=$post_args)["$empty?"]())?self:(result=args.$pop(),$eqeqeq($$("Pathname"),result)||(result=$$("Pathname").$new(result)),$truthy(result["$absolute?"]())?result:($send(args,"reverse_each",[],(function(arg){if(null==arg&&(arg=nil),$eqeqeq($$("Pathname"),arg)||(arg=$$("Pathname").$new(arg)),result=$rb_plus(arg,result),!$truthy(result["$absolute?"]()))return nil;Opal.ret(result)}),1),$rb_plus(self,result)))}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$split",(function(){return[this.$dirname(),this.$basename()]}),0),$def(self,"$dirname",(function(){return $$("Pathname").$new($$("File").$dirname(this.path))}),0),$def(self,"$basename",(function(){return $$("Pathname").$new($$("File").$basename(this.path))}),0),$def(self,"$directory?",(function(){return $$("File")["$directory?"](this.path)}),0),$def(self,"$extname",(function(){return $$("File").$extname(this.path)}),0),$def(self,"$<=>",(function(other){return this.$path()["$<=>"](other.$path())}),1),$const_set($nesting[0],"SAME_PATHS",$truthy($$$($$("File"),"FNM_SYSCASE")["$nonzero?"]())?$send(self,"proc",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a.$casecmp(b)["$=="](0)}),2):$send(self,"proc",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a["$=="](b)}),2)),$def(self,"$relative_path_from",(function(base_directory){var $b,dest_directory,dest_prefix=nil,dest_names=nil,r=nil,basename=nil,base_prefix=nil,base_names=nil,$ret_or_1=nil,$ret_or_2=nil,relpath_names=nil;for(dest_directory=this.$cleanpath().$to_s(),base_directory=base_directory.$cleanpath().$to_s(),dest_prefix=dest_directory,dest_names=[];$truthy(r=this.$chop_basename(dest_prefix));)dest_prefix=null==($b=$to_ary(r))[0]?nil:$b[0],basename=null==$b[1]?nil:$b[1],$neqeq(basename,".")&&dest_names.$unshift(basename);for(base_prefix=base_directory,base_names=[];$truthy(r=this.$chop_basename(base_prefix));)base_prefix=null==($b=$to_ary(r))[0]?nil:$b[0],basename=null==$b[1]?nil:$b[1],$neqeq(basename,".")&&base_names.$unshift(basename);for($truthy($$("SAME_PATHS")["$[]"](dest_prefix,base_prefix))||this.$raise($$("ArgumentError"),"different prefix: "+dest_prefix.$inspect()+" and "+base_directory.$inspect());$truthy($truthy($ret_or_1=$truthy($ret_or_2=dest_names["$empty?"]()["$!"]())?base_names["$empty?"]()["$!"]():$ret_or_2)?$$("SAME_PATHS")["$[]"](dest_names.$first(),base_names.$first()):$ret_or_1);)dest_names.$shift(),base_names.$shift();return $truthy(base_names["$include?"](".."))&&this.$raise($$("ArgumentError"),"base_directory has ..: "+base_directory.$inspect()),base_names.$fill(".."),relpath_names=$rb_plus(base_names,dest_names),$truthy(relpath_names["$empty?"]())?$$("Pathname").$new("."):$$("Pathname").$new($send($$("File"),"join",$to_a(relpath_names)))}),1),$def(self,"$entries",(function(){return $send($$("Dir").$entries(this.path),"map",[],(function $$11(f){return null==f&&(f=nil),(null==$$11.$$s?this:$$11.$$s).$class().$new(f)}),{$$arity:1,$$s:this})}),0),$alias(self,"===","=="),$alias(self,"eql?","=="),$alias(self,"to_s","to_path"),$alias(self,"to_str","to_path")}($nesting[0],0,$nesting),function($base,$parent_nesting){var self=$module($base,"Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$Pathname",(function(path){return $$("Pathname").$new(path)}),1)}($nesting[0],$nesting)},Opal.modules["opal/hike"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$hash2=Opal.hash2,$def=Opal.def,$truthy=Opal.truthy,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$to_ary=Opal.to_ary,$regexp=Opal.regexp,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,attr_reader,freeze,dup,map,new,to_s,sub,=~,find_in_base_path,find_in_paths,[],directory?,sort,reject,entries,[]=,-,key?,exist?,stat,protected,is_a?,last,pop,split,each,match,join,to_proc,paths_contain?,pattern_for,select,sort_matches,file?,any?,paths,==,length,build_pattern_for,extensions,escape,sort_by,scan,inject,index,+,expand_path,concat,normalize_path,normalize_extension,find,root,private,start_with?,relative?"),self.$require("pathname"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Hike")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Index"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.root=$proto.entries=$proto.stats=$proto.pathnames=$proto.patterns=nil,self.$attr_reader("paths"),self.$attr_reader("extensions"),$def(self,"$initialize",(function(root,paths,extensions){return this.root=root,this.paths=paths.$dup().$freeze(),this.extensions=extensions.$dup().$freeze(),this.pathnames=$send(paths,"map",[],(function(path){return null==path&&(path=nil),$$("Pathname").$new(path)}),1),this.stats=$hash2([],{}),this.entries=$hash2([],{}),this.patterns=$hash2([],{})}),3),$def(self,"$root",(function(){return this.root.$to_s()}),0),$def(self,"$index",(function(){return this}),0),$def(self,"$find",(function(logical_path){try{var base_path;return base_path=$$("Pathname").$new(this.root),logical_path=$$("Pathname").$new(logical_path.$sub(/^\//,"")),$truthy(logical_path.$to_s()["$=~"](/^\.\.?\//))?$send(this,"find_in_base_path",[logical_path,base_path],(function(path){null==path&&(path=nil),Opal.ret(path)}),1):$send(this,"find_in_paths",[logical_path],(function(path){null==path&&(path=nil),Opal.ret(path)}),1),nil}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),1),$def(self,"$entries",(function(path){var $ret_or_1,$writer=nil,pathname=nil;return $truthy($ret_or_1=this.entries["$[]"](path.$to_s()))?$ret_or_1:($writer=[path.$to_s(),(pathname=$$("Pathname").$new(path),$truthy(pathname["$directory?"]())?$send(pathname.$entries(),"reject",[],(function(entry){return null==entry&&(entry=nil),entry.$to_s()["$=~"](/^\.|~$|^\#.*\#$/)}),1).$sort():[])],$send(this.entries,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),1),$def(self,"$stat",(function(path){var key,$writer=nil;return key=path.$to_s(),$truthy(this.stats["$key?"](key))?this.stats["$[]"](key):$truthy($$("File")["$exist?"](path))?($writer=[key,$$("File").$stat(path)],$send(this.stats,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):($writer=[key,nil],$send(this.stats,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),1),self.$protected(),$def(self,"$extract_options!",(function(arguments$){return $truthy(arguments$.$last()["$is_a?"]($$("Hash")))?arguments$.$pop().$dup():$hash2([],{})}),1),$def(self,"$find_in_paths",(function $$find_in_paths(logical_path){var $a,$b,dirname,basename,block=$$find_in_paths.$$p||nil;return delete $$find_in_paths.$$p,$b=logical_path.$split(),$a=$to_ary($b),dirname=null==$a[0]?nil:$a[0],basename=null==$a[1]?nil:$a[1],$send(this.pathnames,"each",[],(function $$6(base_path){return null==base_path&&(base_path=nil),$send(null==$$6.$$s?this:$$6.$$s,"match",[base_path.$join(dirname),basename],block.$to_proc())}),{$$arity:1,$$s:this})}),1),$def(self,"$find_in_base_path",(function $$find_in_base_path(logical_path,base_path){var $a,$b,dirname,basename,block=$$find_in_base_path.$$p||nil;return delete $$find_in_base_path.$$p,$b=base_path.$join(logical_path).$split(),dirname=null==($a=$to_ary($b))[0]?nil:$a[0],basename=null==$a[1]?nil:$a[1],$truthy(this["$paths_contain?"](dirname))?$send(this,"match",[dirname,basename],block.$to_proc()):nil}),2),$def(self,"$match",(function $$match(dirname,basename){var pattern,$yield=$$match.$$p||nil,matches=nil;return delete $$match.$$p,matches=this.$entries(dirname),pattern=this.$pattern_for(basename),matches=$send(matches,"select",[],(function(m){return null==m&&(m=nil),m.$to_s()["$=~"](pattern)}),1),$send(this.$sort_matches(matches,basename),"each",[],(function $$8(path){var self=null==$$8.$$s?this:$$8.$$s,pathname=nil,stat=nil;return null==path&&(path=nil),pathname=dirname.$join(path),stat=self.$stat(pathname),$truthy(stat)&&$truthy(stat["$file?"]())?Opal.yield1($yield,pathname.$to_s()):nil}),{$$arity:1,$$s:this})}),2),$def(self,"$paths_contain?",(function(dirname){return $send(this.$paths(),"any?",[],(function(path){return null==path&&(path=nil),dirname.$to_s()["$[]"](0,path.$length())["$=="](path)}),1)}),1),$def(self,"$pattern_for",(function(basename){var $ret_or_1,$writer=nil;return $truthy($ret_or_1=this.patterns["$[]"](basename))?$ret_or_1:($writer=[basename,this.$build_pattern_for(basename)],$send(this.patterns,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),1),$def(self,"$build_pattern_for",(function(basename){var extension_pattern;return extension_pattern=$send(this.$extensions(),"map",[],(function(e){return null==e&&(e=nil),$$("Regexp").$escape(e)}),1).$join("|"),$regexp(["^",basename,"(?:",extension_pattern,")*$"])}),1),$def(self,"$sort_matches",(function(matches,basename){return $send(matches,"sort_by",[],(function $$12(match){var extnames,self=null==$$12.$$s?this:$$12.$$s;return null==match&&(match=nil),extnames=match.$sub(basename.$to_s(),"").$to_s().$scan(/\.[^.]+/),$send(extnames,"inject",[0],(function $$13(sum,ext){var index;return null==sum&&(sum=nil),null==ext&&(ext=nil),index=(null==$$13.$$s?this:$$13.$$s).$extensions().$index(ext),$truthy(index)?$rb_plus($rb_plus(sum,index),1):sum}),{$$arity:2,$$s:self})}),{$$arity:1,$$s:this})}),2)}($nesting[0],0,$nesting),function($base,$super,$parent_nesting){var self=$klass($base,null,"Trail"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.root=$proto.paths=$proto.extensions=nil,self.$attr_reader("paths"),self.$attr_reader("extensions"),$def(self,"$initialize",(function(root){return null==root&&(root="."),this.root=$$("Pathname").$new(root).$expand_path(),this.paths=[],this.extensions=[]}),-1),$def(self,"$root",(function(){return this.root.$to_s()}),0),$def(self,"$append_paths",(function($a){var paths,self=this;return paths=Opal.slice.call(arguments),self.paths.$concat($send(paths,"map",[],(function $$14(p){return null==p&&(p=nil),(null==$$14.$$s?this:$$14.$$s).$normalize_path(p)}),{$$arity:1,$$s:self}))}),-1),$def(self,"$append_extensions",(function($a){var extensions,self=this;return extensions=Opal.slice.call(arguments),self.extensions.$concat($send(extensions,"map",[],(function $$15(e){return null==e&&(e=nil),(null==$$15.$$s?this:$$15.$$s).$normalize_extension(e)}),{$$arity:1,$$s:self}))}),-1),$def(self,"$find",(function $$find($a){var args,block=$$find.$$p||nil,self=this;return delete $$find.$$p,args=Opal.slice.call(arguments),$send(self.$index(),"find",$to_a(args),block.$to_proc())}),-1),$def(self,"$index",(function(){return $$("Index").$new(this.$root(),this.$paths(),this.$extensions())}),0),$def(self,"$entries",(function(path){var pathname=nil;return pathname=$$("Pathname").$new(path),$truthy(pathname["$directory?"]())?$send(pathname.$entries(),"reject",[],(function(entry){return null==entry&&(entry=nil),entry.$to_s()["$=~"](/^\.|~$|^\#.*\#$/)}),1).$sort():[]}),1),$def(self,"$stat",(function(path){return $truthy($$("File")["$exist?"](path))?$$("File").$stat(path.$to_s()):nil}),1),self.$private(),$def(self,"$normalize_extension",(function(ext){return $truthy(ext["$start_with?"]("."))?ext:"."+ext}),1),$def(self,"$normalize_path",(function(path){return path=$$("Pathname").$new(path),$truthy(path["$relative?"]())&&(path=this.root.$join(path)),path.$expand_path().$to_s()}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/path_reader"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$send=Opal.send,$to_a=Opal.to_a,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("require,freeze,quote,paths,new,append_paths,append_extensions,expand,nil?,exist?,open,to_proc,=~,absolute?,find_path,file_finder,extensions,private,Pathname,find,attr_reader"),self.$require("opal/regexp_anchors"),self.$require("opal/hike"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"PathReader"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.file_finder=nil,$const_set($nesting[0],"RELATIVE_PATH_REGEXP",$regexp([$$$($$("Opal"),"REGEXP_START"),"\\.?\\.",$$("Regexp").$quote($$$($$("File"),"SEPARATOR"))]).$freeze()),$const_set($nesting[0],"DEFAULT_EXTENSIONS",[".js",".js.rb",".rb",".opalerb"].$freeze()),$def(self,"$initialize",(function(paths,extensions){return null==paths&&(paths=$$("Opal").$paths()),null==extensions&&(extensions=$$("DEFAULT_EXTENSIONS")),this.file_finder=$$$($$("Hike"),"Trail").$new(),$send(this.file_finder,"append_paths",$to_a(paths)),$send(this.file_finder,"append_extensions",$to_a(extensions))}),-1),$def(self,"$read",(function(path){var full_path=nil;return full_path=this.$expand(path),$truthy(full_path["$nil?"]())?nil:$truthy($$("File")["$exist?"](full_path))?$send($$("File"),"open",[full_path,"rb:UTF-8"],"read".$to_proc()):nil}),1),$def(self,"$expand",(function(path){return $truthy($$("Pathname").$new(path)["$absolute?"]())||$truthy(path["$=~"]($$("RELATIVE_PATH_REGEXP")))?path:this.$find_path(path)}),1),$def(self,"$paths",(function(){return this.$file_finder().$paths()}),0),$def(self,"$extensions",(function(){return this.$file_finder().$extensions()}),0),$def(self,"$append_paths",(function($a){var paths,self=this;return paths=Opal.slice.call(arguments),$send(self.$file_finder(),"append_paths",$to_a(paths))}),-1),self.$private(),$def(self,"$find_path",(function(path){var pathname=nil;return pathname=this.$Pathname(path),$truthy(pathname["$absolute?"]())&&$truthy(pathname["$exist?"]())?path:this.$file_finder().$find(path)}),1),self.$attr_reader("file_finder")}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/paths"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$defs=Opal.defs,$send=Opal.send,$to_a=Opal.to_a,$def=Opal.def,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus;return Opal.add_stubs("expand_path,append_paths,concat,require_paths_for_gem,private,find_by_name,raise,each,runtime_dependencies,+,name,gem_dir,map,require_paths,<<,join,extend,freeze,core_dir,std_dir,reset_paths!"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$gem_dir",(function(){return $$("File").$expand_path("../..","opal/paths.rb")}),0),$defs(self,"$core_dir",(function(){return $$("File").$expand_path("../../../opal","opal/paths.rb")}),0),$defs(self,"$std_dir",(function(){return $$("File").$expand_path("../../../stdlib","opal/paths.rb")}),0),$defs(self,"$append_path",(function(path){return this.$append_paths(path)}),1),$defs(self,"$append_paths",(function($a){var paths,self=this;return null==self.paths&&(self.paths=nil),paths=Opal.slice.call(arguments),self.paths.$concat(paths),nil}),-1),function($base,$parent_nesting){var self=$module($base,"UseGem"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$use_gem",(function(gem_name,include_dependencies){return null==include_dependencies&&(include_dependencies=!0),$send(this,"append_paths",$to_a(this.$require_paths_for_gem(gem_name,include_dependencies)))}),-2),self.$private(),$def(self,"$require_paths_for_gem",(function(gem_name,include_dependencies){var gem_dir,paths=nil,spec=nil;return paths=[],spec=$$$($$("Gem"),"Specification").$find_by_name(gem_name),$truthy(spec)||this.$raise($$("GemNotFound"),gem_name),$truthy(include_dependencies)&&$send(spec.$runtime_dependencies(),"each",[],(function $$1(dependency){return null==dependency&&(dependency=nil),paths=$rb_plus(paths,(null==$$1.$$s?this:$$1.$$s).$require_paths_for_gem(dependency.$name(),include_dependencies))}),{$$arity:1,$$s:this}),gem_dir=spec.$gem_dir(),$send(spec.$require_paths(),"map",[],(function(path){return null==path&&(path=nil),paths["$<<"]($$("File").$join(gem_dir,path))}),1),paths}),2)}($nesting[0],$nesting),self.$extend($$("UseGem")),$defs(self,"$paths",(function(){return null==this.paths&&(this.paths=nil),this.paths.$freeze()}),0),$defs(self,"$reset_paths!",(function(){return this.paths=[this.$core_dir(),this.$std_dir(),this.$gem_dir()],nil}),0),self["$reset_paths!"]()}($nesting[0],$nesting)},Opal.modules.set=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$defs=Opal.defs,$hash2=Opal.hash2,$truthy=Opal.truthy,$eqeqeq=Opal.eqeqeq,$Kernel=Opal.Kernel,$send=Opal.send,$def=Opal.def,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_lt=Opal.rb_lt,$rb_le=Opal.rb_le,$alias=Opal.alias,$module=Opal.module;return Opal.add_stubs("include,new,nil?,===,raise,each,add,merge,class,respond_to?,subtract,dup,join,to_a,equal?,instance_of?,==,instance_variable_get,size,is_a?,all?,include?,[]=,-,enum_for,[],<<,replace,delete,select,reject,delete_if,to_proc,keep_if,each_key,empty?,eql?,instance_eval,clear,<,<=,any?,!,intersect?,keys"),function($base,$super){var self=$klass("::",null,"Set");function is_set(set){$truthy(set["$is_a?"]($$$("Set")))||$Kernel.$raise($$$("ArgumentError"),"value must be a set")}self.$$prototype.hash=nil,self.$include($$$("Enumerable")),$defs(self,"$[]",(function($a){var ary,self=this;return ary=Opal.slice.call(arguments),self.$new(ary)}),-1),$def(self,"$initialize",(function $$initialize(enum$){var block=$$initialize.$$p||nil;return delete $$initialize.$$p,null==enum$&&(enum$=nil),this.hash=$hash2([],{}),$truthy(enum$["$nil?"]())?nil:($eqeqeq($$$("Enumerable"),enum$)||$Kernel.$raise($$$("ArgumentError"),"value must be enumerable"),$truthy(block)?$send(enum$,"each",[],(function $$2(item){return null==item&&(item=nil),(null==$$2.$$s?this:$$2.$$s).$add(Opal.yield1(block,item))}),{$$arity:1,$$s:this}):this.$merge(enum$))}),-1),$def(self,"$dup",(function(){return this.$class().$new().$merge(this)}),0),$def(self,"$-",(function(enum$){return $truthy(enum$["$respond_to?"]("each"))||$Kernel.$raise($$$("ArgumentError"),"value must be enumerable"),this.$dup().$subtract(enum$)}),1),$def(self,"$inspect",(function(){return"#"}),0),$def(self,"$==",(function(other){return!!$truthy(this["$equal?"](other))||($truthy(other["$instance_of?"](this.$class()))?this.hash["$=="](other.$instance_variable_get("@hash")):!(!$truthy(other["$is_a?"]($$$("Set")))||!$eqeq(this.$size(),other.$size()))&&$send(other,"all?",[],(function $$5(o){var self=null==$$5.$$s?this:$$5.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash["$include?"](o)}),{$$arity:1,$$s:this}))}),1),$def(self,"$add",(function(o){var $writer;return $writer=[o,!0],$send(this.hash,"[]=",$to_a($writer)),$rb_minus($writer.length,1),this}),1),$def(self,"$classify",(function $$classify(){var block=$$classify.$$p||nil,result=nil;return delete $$classify.$$p,block===nil?this.$enum_for("classify"):(result=$send($$$("Hash"),"new",[],(function $$6(h,k){var $writer;return null==h&&(h=nil),null==k&&(k=nil),$writer=[k,(null==$$6.$$s?this:$$6.$$s).$class().$new()],$send(h,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:2,$$s:this}),$send(this,"each",[],(function(item){return null==item&&(item=nil),result["$[]"](Opal.yield1(block,item)).$add(item)}),1),result)}),0),$def(self,"$collect!",(function $Set_collect$excl$8(){var block=$Set_collect$excl$8.$$p||nil,result=nil;return delete $Set_collect$excl$8.$$p,block===nil?this.$enum_for("collect!"):(result=this.$class().$new(),$send(this,"each",[],(function(item){return null==item&&(item=nil),result["$<<"](Opal.yield1(block,item))}),1),this.$replace(result))}),0),$def(self,"$delete",(function(o){return this.hash.$delete(o),this}),1),$def(self,"$delete?",(function(o){return $truthy(this["$include?"](o))?(this.$delete(o),this):nil}),1),$def(self,"$delete_if",(function $$delete_if(){var $yield=$$delete_if.$$p||nil;return delete $$delete_if.$$p,$yield===nil?this.$enum_for("delete_if"):($send($send(this,"select",[],(function(o){return null==o&&(o=nil),Opal.yield1($yield,o)}),1),"each",[],(function $$13(o){var self=null==$$13.$$s?this:$$13.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash.$delete(o)}),{$$arity:1,$$s:this}),this)}),0),$def(self,"$keep_if",(function $$keep_if(){var $yield=$$keep_if.$$p||nil;return delete $$keep_if.$$p,$yield===nil?this.$enum_for("keep_if"):($send($send(this,"reject",[],(function(o){return null==o&&(o=nil),Opal.yield1($yield,o)}),1),"each",[],(function $$15(o){var self=null==$$15.$$s?this:$$15.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash.$delete(o)}),{$$arity:1,$$s:this}),this)}),0),$def(self,"$reject!",(function $Set_reject$excl$16(){var before,block=$Set_reject$excl$16.$$p||nil;return delete $Set_reject$excl$16.$$p,block===nil?this.$enum_for("reject!"):(before=this.$size(),$send(this,"delete_if",[],block.$to_proc()),$eqeq(this.$size(),before)?nil:this)}),0),$def(self,"$select!",(function $Set_select$excl$17(){var before,block=$Set_select$excl$17.$$p||nil;return delete $Set_select$excl$17.$$p,block===nil?this.$enum_for("select!"):(before=this.$size(),$send(this,"keep_if",[],block.$to_proc()),$eqeq(this.$size(),before)?nil:this)}),0),$def(self,"$add?",(function(o){return $truthy(this["$include?"](o))?nil:this.$add(o)}),1),$def(self,"$each",(function $$each(){var block=$$each.$$p||nil;return delete $$each.$$p,block===nil?this.$enum_for("each"):($send(this.hash,"each_key",[],block.$to_proc()),this)}),0),$def(self,"$empty?",(function(){return this.hash["$empty?"]()}),0),$def(self,"$eql?",(function(other){return this.hash["$eql?"]($send(other,"instance_eval",[],(function $$21(){var self=null==$$21.$$s?this:$$21.$$s;return null==self.hash&&(self.hash=nil),self.hash}),{$$arity:0,$$s:this}))}),1),$def(self,"$clear",(function(){return this.hash.$clear(),this}),0),$def(self,"$include?",(function(o){return this.hash["$include?"](o)}),1),$def(self,"$merge",(function(enum$){return $send(enum$,"each",[],(function $$23(item){return null==item&&(item=nil),(null==$$23.$$s?this:$$23.$$s).$add(item)}),{$$arity:1,$$s:this}),this}),1),$def(self,"$replace",(function(enum$){return this.$clear(),this.$merge(enum$),this}),1),$def(self,"$size",(function(){return this.hash.$size()}),0),$def(self,"$subtract",(function(enum$){return $send(enum$,"each",[],(function $$24(item){return null==item&&(item=nil),(null==$$24.$$s?this:$$24.$$s).$delete(item)}),{$$arity:1,$$s:this}),this}),1),$def(self,"$|",(function(enum$){return $truthy(enum$["$respond_to?"]("each"))||$Kernel.$raise($$$("ArgumentError"),"value must be enumerable"),this.$dup().$merge(enum$)}),1),$def(self,"$superset?",(function(set){return is_set(set),!$truthy($rb_lt(this.$size(),set.$size()))&&$send(set,"all?",[],(function $$27(o){return null==o&&(o=nil),(null==$$27.$$s?this:$$27.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$proper_superset?",(function(set){return is_set(set),!$truthy($rb_le(this.$size(),set.$size()))&&$send(set,"all?",[],(function $$29(o){return null==o&&(o=nil),(null==$$29.$$s?this:$$29.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$subset?",(function(set){return is_set(set),!$truthy($rb_lt(set.$size(),this.$size()))&&$send(this,"all?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1)}),1),$def(self,"$proper_subset?",(function(set){return is_set(set),!$truthy($rb_le(set.$size(),this.$size()))&&$send(this,"all?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1)}),1),$def(self,"$intersect?",(function(set){return is_set(set),$truthy($rb_lt(this.$size(),set.$size()))?$send(this,"any?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1):$send(set,"any?",[],(function $$36(o){return null==o&&(o=nil),(null==$$36.$$s?this:$$36.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$disjoint?",(function(set){return this["$intersect?"](set)["$!"]()}),1),$def(self,"$to_a",(function(){return this.hash.$keys()}),0),$alias(self,"+","|"),$alias(self,"<","proper_subset?"),$alias(self,"<<","add"),$alias(self,"<=","subset?"),$alias(self,">","proper_superset?"),$alias(self,">=","superset?"),$alias(self,"difference","-"),$alias(self,"filter!","select!"),$alias(self,"length","size"),$alias(self,"map!","collect!"),$alias(self,"member?","include?"),$alias(self,"union","|")}(),function($base,$parent_nesting){var self=$module("::","Enumerable"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$to_set",(function $$to_set($a,$b){var $post_args,klass,block=$$to_set.$$p||nil,self=this;return delete $$to_set.$$p,($post_args=Opal.slice.call(arguments)).length>0&&(klass=$post_args.shift()),null==klass&&(klass=$$("Set")),$send(klass,"new",[self].concat($to_a($post_args)),block.$to_proc())}),-1)}(0,[])},Opal.modules["opal/config"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$truthy=Opal.truthy,$hash2=Opal.hash2,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeqeq=Opal.eqeqeq,$lambda=Opal.lambda;return Opal.add_stubs("require,extend,private,fetch,[]=,config_options,-,define_singleton_method,config,any?,===,raise,inspect,public,each,call,default_config,config_option,new"),self.$require("set"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Config"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$extend(self),self.$private(),$def(self,"$config_options",(function(){var $ret_or_1;return null==this.config_options&&(this.config_options=nil),this.config_options=$truthy($ret_or_1=this.config_options)?$ret_or_1:$hash2([],{})}),0),$def(self,"$config_option",(function(name,default_value,options){var compiler,valid_values=nil,$writer=nil;return null==options&&(options=$hash2([],{})),compiler=options.$fetch("compiler_option",nil),valid_values=options.$fetch("valid_values",[!0,!1]),$writer=[name,$hash2(["default","compiler"],{default:default_value,compiler:compiler})],$send(this.$config_options(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$send(this,"define_singleton_method",[name],(function $$1(){return(null==$$1.$$s?this:$$1.$$s).$config().$fetch(name,default_value)}),{$$arity:0,$$s:this}),$send(this,"define_singleton_method",[name+"="],(function $$2(value){var self=null==$$2.$$s?this:$$2.$$s;return null==value&&(value=nil),$truthy($send(valid_values,"any?",[],(function(valid_value){return null==valid_value&&(valid_value=nil),valid_value["$==="](value)}),1))||self.$raise($$("ArgumentError"),"Not a valid value for option "+self+"."+name+", provided "+value.$inspect()+". Must be "+valid_values.$inspect()+" === "+value.$inspect()),$writer=[name,value],$send(self.$config(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this})}),-3),self.$public(),$def(self,"$default_config",(function(){var default_config;return default_config=$hash2([],{}),$send(this.$config_options(),"each",[],(function(name,options){var $writer,default_value=nil;return null==name&&(name=nil),null==options&&(options=nil),default_value=options.$fetch("default"),default_value=$eqeqeq($$("Proc"),default_value)?default_value.$call():default_value,$send(default_config,"[]=",$to_a($writer=[name,default_value])),$writer[$rb_minus($writer.length,1)]}),2),default_config}),0),$def(self,"$compiler_options",(function(){var compiler_options;return compiler_options=$hash2([],{}),$send(this.$config_options(),"each",[],(function $$5(name,options){var $writer,self=null==$$5.$$s?this:$$5.$$s;return null==name&&(name=nil),null==options&&(options=nil),$writer=[options.$fetch("compiler"),self.$config().$fetch(name)],$send(compiler_options,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:2,$$s:this}),compiler_options}),0),$def(self,"$config",(function(){var $ret_or_1;return null==this.config&&(this.config=nil),this.config=$truthy($ret_or_1=this.config)?$ret_or_1:this.$default_config()}),0),$def(self,"$reset!",(function(){return this.config=nil}),0),self.$config_option("method_missing_enabled",!0,$hash2(["compiler_option"],{compiler_option:"method_missing"})),self.$config_option("const_missing_enabled",!0,$hash2(["compiler_option"],{compiler_option:"const_missing"})),self.$config_option("arity_check_enabled",!1,$hash2(["compiler_option"],{compiler_option:"arity_check"})),self.$config_option("freezing_stubs_enabled",!0,$hash2(["compiler_option"],{compiler_option:"freezing"})),self.$config_option("esm",!1,$hash2(["compiler_option"],{compiler_option:"esm"})),self.$config_option("dynamic_require_severity","warning",$hash2(["compiler_option","valid_values"],{compiler_option:"dynamic_require_severity",valid_values:["error","warning","ignore"]})),self.$config_option("missing_require_severity","error",$hash2(["valid_values"],{valid_values:["error","warning","ignore"]})),self.$config_option("irb_enabled",!1,$hash2(["compiler_option"],{compiler_option:"irb"})),self.$config_option("inline_operators_enabled",!0,$hash2(["compiler_option"],{compiler_option:"inline_operators"})),self.$config_option("source_map_enabled",!0),self.$config_option("stubbed_files",$lambda((function(){return $$("Set").$new()}),0),$hash2(["valid_values"],{valid_values:[$$("Set")]}))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/cache"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$truthy=Opal.truthy,$not=Opal.not,$eqeq=Opal.eqeq,$defs=Opal.defs,$klass=Opal.klass,$def=Opal.def,$send=Opal.send,$rb_plus=Opal.rb_plus,$gvars=Opal.gvars,$range=Opal.range;return Opal.add_stubs("require,attr_writer,singleton_class,!,find_dir,[],==,new,module_function,respond_to?,fetch,to_proc,+,digest,join,runtime_key,get,set,expand_path,gem_dir,grep,map,sort,size,to_f,mtime,to_s,to_i,hexdigest"),self.$require("opal/paths"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$singleton_class().$attr_writer("cache"),$defs(self,"$cache",(function(){var $ret_or_1;return null==this.cache&&(this.cache=nil),this.cache=$truthy($ret_or_1=this.cache)?$ret_or_1:$eqeq($$("RUBY_ENGINE"),"opal")||$truthy($$("ENV")["$[]"]("OPAL_CACHE_DISABLE"))||$not($$$($$("Cache"),"FileCache").$find_dir())?$$$($$("Cache"),"NullCache").$new():$$$($$("Cache"),"FileCache").$new()}),0),function($base,$parent_nesting){var self=$module($base,"Cache"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,null,"NullCache");$def(self,"$fetch",(function $$fetch($a){var $yield=$$fetch.$$p||nil;return delete $$fetch.$$p,Opal.slice.call(arguments),Opal.yieldX($yield,[])}),-1)}($nesting[0]),self.$module_function(),$def(self,"$fetch",(function $$fetch(cache,key){var data,$ret_or_1,block=$$fetch.$$p||nil,compiler=nil;return delete $$fetch.$$p,$truthy(cache["$respond_to?"]("fetch"))?$send(cache,"fetch",[key],block.$to_proc()):(key=$rb_plus($rb_plus(this.$digest(key.$join("/")),"-"),this.$runtime_key()),data=cache.$get(key),$truthy($ret_or_1=data)?$ret_or_1:(compiler=Opal.yieldX(block,[]),cache.$set(key,compiler),compiler))}),2),$def(self,"$runtime_key",(function(){var $ret_or_1,opal_path=nil,files=nil;return null==this.runtime_key&&(this.runtime_key=nil),null==$gvars.LOADED_FEATURES&&($gvars.LOADED_FEATURES=nil),this.runtime_key=$truthy($ret_or_1=this.runtime_key)?$ret_or_1:(opal_path=$$("File").$expand_path("..",$$("Opal").$gem_dir()),files=$$("Dir")["$[]"](opal_path+"/{Gemfile*,*.gemspec,lib/**/*}"),files=$rb_plus(files,$gvars.LOADED_FEATURES.$grep(/lib\/(parser|ast)/)),this.$digest([$send(files.$sort(),"map",[],(function(f){return null==f&&(f=nil),f+":"+$$("File").$size(f)+":"+$$("File").$mtime(f).$to_f()}),1),$$("RUBY_VERSION"),$$("RUBY_PATCHLEVEL")].$join("/")))}),0),$def(self,"$digest",(function(string){return $$$($$$("Digest"),"SHA256").$hexdigest(string)["$[]"]($range(-32,-1,!1)).$to_i(16).$to_s(36)}),1)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/builder"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$defs=Opal.defs,$send=Opal.send,$hash2=Opal.hash2,$Opal=Opal.Opal,$def=Opal.def,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$send2=Opal.send2,$find_super=Opal.find_super,$not=Opal.not,$lambda=Opal.lambda,$eqeqeq=Opal.eqeqeq;return Opal.add_stubs("require,include?,processors,<<,each,extensions,each_pair,public_send,new,paths,flatten,map,compiler_options,missing_require_severity,cache,build,to_proc,build_str,source_for,read,nil?,expand_path,expand_ext,processor_for,+,preload,requires,tree_requires,process_require,autoloads,processed,raise,inspect,message,backtrace,dup,stubs,path_reader,prerequired,to_sym,join,append_paths,include,attr_reader,attr_accessor,private,empty?,to_s,pwd,dirname,Pathname,flat_map,required_trees,find,start_with?,glob,relative_path_from,match?,!,merge,[],===,warn,already_processed,stub?,process_requires,expand,basename"),self.$require("opal/path_reader"),self.$require("opal/paths"),self.$require("opal/config"),self.$require("opal/cache"),self.$require("set"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Builder"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.stubs=$proto.preload=$proto.processors=$proto.path_reader=$proto.prerequired=$proto.compiler_options=$proto.missing_require_severity=$proto.cache=$proto.already_processed=nil,$defs(self,"$processors",(function(){var $ret_or_1;return null==this.processors&&(this.processors=nil),this.processors=$truthy($ret_or_1=this.processors)?$ret_or_1:[]}),0),$defs(self,"$extensions",(function(){var $ret_or_1;return null==this.extensions&&(this.extensions=nil),this.extensions=$truthy($ret_or_1=this.extensions)?$ret_or_1:[]}),0),$defs(self,"$register_processor",(function(processor,processor_extensions){return $truthy(this.$processors()["$include?"](processor))?nil:(this.$processors()["$<<"](processor),$send(processor_extensions,"each",[],(function $$1(ext){return null==ext&&(ext=nil),(null==$$1.$$s?this:$$1.$$s).$extensions()["$<<"](ext)}),{$$arity:1,$$s:this}))}),2),$klass($nesting[0],$$("LoadError"),"MissingRequire"),$klass($nesting[0],$$("LoadError"),"ProcessorNotFound"),$def(self,"$initialize",(function(options){var $ret_or_1=nil;return null==options&&(options=nil),$send($truthy($ret_or_1=options)?$ret_or_1:$hash2([],{}),"each_pair",[],(function $$2(k,v){return null==k&&(k=nil),null==v&&(v=nil),(null==$$2.$$s?this:$$2.$$s).$public_send(k+"=",v)}),{$$arity:2,$$s:this}),this.stubs=$truthy($ret_or_1=this.stubs)?$ret_or_1:[],this.preload=$truthy($ret_or_1=this.preload)?$ret_or_1:[],this.processors=$truthy($ret_or_1=this.processors)?$ret_or_1:$$$($Opal,"Builder").$processors(),this.path_reader=$truthy($ret_or_1=this.path_reader)?$ret_or_1:$$("PathReader").$new($$("Opal").$paths(),$send(this.$extensions(),"map",[],(function(e){return null==e&&(e=nil),["."+e,".js."+e]}),1).$flatten()),this.prerequired=$truthy($ret_or_1=this.prerequired)?$ret_or_1:[],this.compiler_options=$truthy($ret_or_1=this.compiler_options)?$ret_or_1:$$$($$("Opal"),"Config").$compiler_options(),this.missing_require_severity=$truthy($ret_or_1=this.missing_require_severity)?$ret_or_1:$$$($$("Opal"),"Config").$missing_require_severity(),this.cache=$truthy($ret_or_1=this.cache)?$ret_or_1:$$("Opal").$cache(),this.processed=[]}),-1),$defs(self,"$build",(function $$build($a){var args,block=$$build.$$p||nil,self=this;return delete $$build.$$p,args=Opal.slice.call(arguments),$send(self.$new(),"build",$to_a(args),block.$to_proc())}),-1),$def(self,"$build",(function(path,options){return null==options&&(options=$hash2([],{})),this.$build_str(this.$source_for(path),path,options)}),-2),$def(self,"$source_for",(function(path){return this.$read(path,!1)}),1),$def(self,"$build_str",(function(source,rel_path,options){var abs_path=nil,asset=nil,requires=nil,error=nil;null==options&&(options=$hash2([],{}));try{return $truthy(source["$nil?"]())?nil:(abs_path=this.$expand_path(rel_path),rel_path=this.$expand_ext(rel_path),asset=this.$processor_for(source,rel_path,abs_path,!1,options),requires=$rb_plus($rb_plus(this.$preload(),asset.$requires()),this.$tree_requires(asset,abs_path)),$send(requires,"map",[],(function $$4(r){return null==r&&(r=nil),(null==$$4.$$s?this:$$4.$$s).$process_require(r,asset.$autoloads(),options)}),{$$arity:1,$$s:this}),this.$processed()["$<<"](asset),this)}catch($err){if(!Opal.rescue($err,[$$("MissingRequire")]))throw $err;error=$err;try{return this.$raise(error,"A file required by "+rel_path.$inspect()+" wasn't found.\n"+error.$message(),error.$backtrace())}finally{Opal.pop_exception()}}}),-3),$def(self,"$build_require",(function(path,options){return null==options&&(options=$hash2([],{})),this.$process_require(path,[],options)}),-2),$def(self,"$initialize_copy",(function $$initialize_copy(other){var $yield=$$initialize_copy.$$p||nil;return delete $$initialize_copy.$$p,$send2(this,$find_super(this,"initialize_copy",$$initialize_copy,!1,!0),"initialize_copy",[other],$yield),this.stubs=other.$stubs().$dup(),this.preload=other.$preload().$dup(),this.processors=other.$processors().$dup(),this.path_reader=other.$path_reader().$dup(),this.prerequired=other.$prerequired().$dup(),this.compiler_options=other.$compiler_options().$dup(),this.missing_require_severity=other.$missing_require_severity().$to_sym(),this.processed=other.$processed().$dup()}),1),$def(self,"$to_s",(function(){return $send(this.$processed(),"map",[],"to_s".$to_proc()).$join("\n")}),0),$def(self,"$source_map",(function(){return $$$($$$($Opal,"SourceMap"),"Index").$new($send(this.$processed(),"map",[],"source_map".$to_proc()),$hash2(["join"],{join:"\n"}))}),0),$def(self,"$append_paths",(function($a){var paths,self=this;return paths=Opal.slice.call(arguments),$send(self.$path_reader(),"append_paths",$to_a(paths))}),-1),self.$include($$("UseGem")),self.$attr_reader("processed"),self.$attr_accessor("processors","path_reader","stubs","prerequired","preload","compiler_options","missing_require_severity","cache"),self.$private(),$def(self,"$tree_requires",(function(asset,asset_path){var abs_base_paths,dirname=nil;return dirname=$truthy(asset_path.$to_s()["$empty?"]())?$$("Pathname").$pwd():this.$Pathname(asset_path).$expand_path().$dirname(),abs_base_paths=$send(this.$path_reader().$paths(),"map",[],(function(p){return null==p&&(p=nil),$$("File").$expand_path(p)}),1),$send(asset.$required_trees(),"flat_map",[],(function $$6(tree){var self=null==$$6.$$s?this:$$6.$$s,abs_tree_path=nil,abs_base_path=nil,entries_glob=nil;return null==tree&&(tree=nil),abs_tree_path=dirname.$join(tree).$expand_path().$to_s(),abs_base_path=$send(abs_base_paths,"find",[],(function(p){return null==p&&(p=nil),abs_tree_path["$start_with?"](p)}),1),$truthy(abs_base_path)?(abs_base_path=self.$Pathname(abs_base_path),entries_glob=self.$Pathname(abs_tree_path).$join("**","*{.js,}.{"+self.$extensions().$join(",")+"}"),$send($$("Pathname").$glob(entries_glob),"map",[],(function(file){return null==file&&(file=nil),file.$relative_path_from(abs_base_path).$to_s()}),1)):[]}),{$$arity:1,$$s:this})}),2),$def(self,"$processor_for",(function(source,rel_path,abs_path,autoload,options){var processor=nil;return processor=$send(this.$processors(),"find",[],(function(p){return null==p&&(p=nil),p["$match?"](abs_path)}),1),$not(processor)&&$not(autoload)&&this.$raise($$("ProcessorNotFound"),"can't find processor for rel_path: "+rel_path.$inspect()+", abs_path: "+abs_path.$inspect()+", source: "+source.$inspect()+", processors: "+this.$processors().$inspect()),options=options.$merge($hash2(["cache"],{cache:this.$cache()})),processor.$new(source,rel_path,this.compiler_options.$merge(options))}),5),$def(self,"$read",(function(path,autoload){var $ret_or_1,print_list=nil,message=nil,$ret_or_2=nil;return $truthy($ret_or_1=this.$path_reader().$read(path))?$ret_or_1:(print_list=$lambda((function(list){return null==list&&(list=nil),"- "+list.$join("\n- ")+"\n"}),1),message=$rb_plus($rb_plus($rb_plus($rb_plus($rb_plus("can't find file: "+path.$inspect()+" in:\n",print_list["$[]"](this.$path_reader().$paths())),"\nWith the following extensions:\n"),print_list["$[]"](this.$path_reader().$extensions())),"\nAnd the following processors:\n"),print_list["$[]"](this.$processors())),$truthy(autoload)||($eqeqeq("error",$ret_or_2=this.$missing_require_severity())?this.$raise($$("MissingRequire"),message):$eqeqeq("warning",$ret_or_2)?this.$warn(message):$eqeqeq("ignore",$ret_or_2)),nil)}),2),$def(self,"$process_require",(function(rel_path,autoloads,options){var autoload,abs_path,source=nil,asset=nil;return $truthy(this.$prerequired()["$include?"](rel_path))||$truthy(this.$already_processed()["$include?"](rel_path))?nil:(this.$already_processed()["$<<"](rel_path),autoload=autoloads["$include?"](rel_path),source=$truthy(this["$stub?"](rel_path))?"":this.$read(rel_path,autoload),$truthy(source["$nil?"]())?nil:(abs_path=this.$expand_path(rel_path),rel_path=this.$expand_ext(rel_path),asset=this.$processor_for(source,rel_path,abs_path,autoload,options.$merge($hash2(["requirable"],{requirable:!0}))),this.$process_requires(rel_path,$rb_plus(asset.$requires(),this.$tree_requires(asset,abs_path)),asset.$autoloads(),options),this.$processed()["$<<"](asset)))}),3),$def(self,"$expand_ext",(function(path){var abs_path;return abs_path=this.$path_reader().$expand(path),$truthy(abs_path)?$$("File").$join($$("File").$dirname(path),$$("File").$basename(abs_path)):path}),1),$def(self,"$expand_path",(function(path){var $ret_or_1;return $truthy(this["$stub?"](path))?nil:($truthy($ret_or_1=this.$path_reader().$expand(path))?$ret_or_1:$$("File").$expand_path(path)).$to_s()}),1),$def(self,"$process_requires",(function(rel_path,requires,autoloads,options){var error=nil;try{return $send(requires,"map",[],(function $$11(r){return null==r&&(r=nil),(null==$$11.$$s?this:$$11.$$s).$process_require(r,autoloads,options)}),{$$arity:1,$$s:this})}catch($err){if(!Opal.rescue($err,[$$("MissingRequire")]))throw $err;error=$err;try{return this.$raise(error,"A file required by "+rel_path.$inspect()+" wasn't found.\n"+error.$message(),error.$backtrace())}finally{Opal.pop_exception()}}}),4),$def(self,"$already_processed",(function(){var $ret_or_1;return this.already_processed=$truthy($ret_or_1=this.already_processed)?$ret_or_1:$$("Set").$new()}),0),$def(self,"$stub?",(function(path){return this.$stubs()["$include?"](path)}),1),$def(self,"$extensions",(function(){return $$$($Opal,"Builder").$extensions()}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/node"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$alias=Opal.alias,$hash2=Opal.hash2,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$rb_times=Opal.rb_times,$to_a=Opal.to_a;return Opal.add_stubs("attr_reader,to_sym,freeze,to_a,assign_properties,hash,class,eql?,type,children,each,instance_variable_set,protected,private,nil?,==,original_dup,send,equal?,respond_to?,to_ast,updated,+,*,fancy_type,is_a?,to_sexp,inspect,map,to_sexp_array,gsub,to_s"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Node"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.type=$proto.children=nil,self.$attr_reader("type"),self.$attr_reader("children"),$alias(self,"to_a","children"),self.$attr_reader("hash"),$def(self,"$initialize",(function(type,children,properties){var $a;return null==children&&(children=[]),null==properties&&(properties=$hash2([],{})),$a=[type.$to_sym(),children.$to_a().$freeze()],this.type=$a[0],this.children=$a[1],this.$assign_properties(properties),this.hash=[this.type,this.children,this.$class()].$hash(),this.$freeze()}),-2),$def(self,"$eql?",(function(other){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.$class()["$eql?"](other.$class()))?this.type["$eql?"](other.$type()):$ret_or_2)?this.children["$eql?"](other.$children()):$ret_or_1}),1),$def(self,"$assign_properties",(function(properties){return $send(properties,"each",[],(function $$2(name,value){return null==name&&(name=nil),null==value&&(value=nil),(null==$$2.$$s?this:$$2.$$s).$instance_variable_set("@"+name,value)}),{$$arity:2,$$s:this}),nil}),1),self.$protected("assign_properties"),$alias(self,"original_dup","dup"),self.$private("original_dup"),$def(self,"$dup",(function(){return this}),0),$alias(self,"clone","dup"),$def(self,"$updated",(function(type,children,properties){var new_type,new_children,new_properties,$ret_or_1=nil,copy=nil;return null==type&&(type=nil),null==children&&(children=nil),null==properties&&(properties=nil),new_type=$truthy($ret_or_1=type)?$ret_or_1:this.type,new_children=$truthy($ret_or_1=children)?$ret_or_1:this.children,new_properties=$truthy($ret_or_1=properties)?$ret_or_1:$hash2([],{}),$eqeq(this.type,new_type)&&$eqeq(this.children,new_children)&&$truthy(properties["$nil?"]())?this:((copy=this.$original_dup()).$send("initialize",new_type,new_children,new_properties),copy)}),-1),$def(self,"$==",(function(other){var $ret_or_1=nil;return!!$truthy(this["$equal?"](other))||!!$truthy(other["$respond_to?"]("to_ast"))&&(other=other.$to_ast(),$truthy($ret_or_1=other.$type()["$=="](this.$type()))?other.$children()["$=="](this.$children()):$ret_or_1)}),1),$def(self,"$concat",(function(array){return this.$updated(nil,$rb_plus(this.children,array.$to_a()))}),1),$alias(self,"+","concat"),$def(self,"$append",(function(element){return this.$updated(nil,$rb_plus(this.children,[element]))}),1),$alias(self,"<<","append"),$def(self,"$to_sexp",(function(indent){var indented,sexp=nil;return null==indent&&(indent=0),indented=$rb_times(" ",indent),sexp=indented+"("+this.$fancy_type(),$send(this.$children(),"each",[],(function(child){return null==child&&(child=nil),sexp=$truthy(child["$is_a?"]($$("Node")))?$rb_plus(sexp,"\n"+child.$to_sexp($rb_plus(indent,1))):$rb_plus(sexp," "+child.$inspect())}),1),sexp=$rb_plus(sexp,")")}),-1),$alias(self,"to_s","to_sexp"),$def(self,"$inspect",(function(indent){var indented,sexp=nil;return null==indent&&(indent=0),indented=$rb_times(" ",indent),sexp=indented+"s(:"+this.type,$send(this.$children(),"each",[],(function(child){return null==child&&(child=nil),sexp=$truthy(child["$is_a?"]($$("Node")))?$rb_plus(sexp,",\n"+child.$inspect($rb_plus(indent,1))):$rb_plus(sexp,", "+child.$inspect())}),1),sexp=$rb_plus(sexp,")")}),-1),$def(self,"$to_ast",(function(){return this}),0),$def(self,"$to_sexp_array",(function(){var children_sexp_arrs;return children_sexp_arrs=$send(this.$children(),"map",[],(function(child){return null==child&&(child=nil),$truthy(child["$is_a?"]($$("Node")))?child.$to_sexp_array():child}),1),[this.$type()].concat($to_a(children_sexp_arrs))}),0),$def(self,"$deconstruct",(function(){return[this.$type()].concat($to_a(this.$children()))}),0),self.$protected(),$def(self,"$fancy_type",(function(){return this.type.$to_s().$gsub("_","-")}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/processor/mixin"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("nil?,to_ast,type,respond_to?,send,handler_missing,map,to_a,process"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){return function($base){var self=$module($base,"Mixin");return $def(self,"$process",(function(node){var on_handler,new_node=nil;return $truthy(node["$nil?"]())?nil:(on_handler="on_"+(node=node.$to_ast()).$type(),new_node=$truthy(this["$respond_to?"](on_handler))?this.$send(on_handler,node):this.$handler_missing(node),$truthy(new_node)&&(node=new_node),node)}),1),$def(self,"$process_all",(function(nodes){return $send(nodes.$to_a(),"map",[],(function $$1(node){return null==node&&(node=nil),(null==$$1.$$s?this:$$1.$$s).$process(node)}),{$$arity:1,$$s:this})}),1),$def(self,"$handler_missing",(function(node){return nil}),1)}([$klass($base,null,"Processor")].concat($parent_nesting)[0])}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/processor"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass;return Opal.add_stubs("require,include"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Processor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$require("ast/processor/mixin"),self.$include($$("Mixin"))}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/sexp"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$def=Opal.def;return Opal.add_stubs("new"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Sexp"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$s",(function(type,$a){var children;return children=Opal.slice.call(arguments,1),$$("Node").$new(type,children)}),-2)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules.ast=function(Opal){Opal.nil;var self,$module=Opal.module;return Opal.add_stubs("require"),(self=$module([][0],"AST")).$require("ast/node"),self.$require("ast/processor"),self.$require("ast/sexp")},Opal.modules["parser/ast/node"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$alias=Opal.alias,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def;return Opal.add_stubs("attr_reader,[],frozen?,dup,node=,-"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,$super,"Node");return self.$attr_reader("location"),$alias(self,"loc","location"),$def(self,"$assign_properties",(function(properties){var location=nil,$writer=nil;return $truthy(location=properties["$[]"]("location"))?($truthy(location["$frozen?"]())&&(location=location.$dup()),$send(location,"node=",$to_a($writer=[this])),$writer[$rb_minus($writer.length,1)],this.location=location):nil}),1)}([$module($base,"AST")].concat($parent_nesting)[0],$$$($$$("AST"),"Node"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/ast/node"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("require,attr_reader,[],frozen?,dup,merge!,loc,line,column"),self.$require("ast"),self.$require("parser/ast/node"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,$super,"Node");return self.$$prototype.meta=nil,self.$attr_reader("meta"),$def(self,"$assign_properties",(function $$assign_properties(properties){var $yield=$$assign_properties.$$p||nil,meta=nil,$ret_or_1=nil;return delete $$assign_properties.$$p,$truthy(meta=properties["$[]"]("meta"))?($truthy(meta["$frozen?"]())&&(meta=meta.$dup()),this.meta["$merge!"](meta)):this.meta=$truthy($ret_or_1=this.meta)?$ret_or_1:$hash2([],{}),$send2(this,$find_super(this,"assign_properties",$$assign_properties,!1,!0),"assign_properties",[properties],$yield)}),1),$def(self,"$line",(function(){return $truthy(this.$loc())?this.$loc().$line():nil}),0),$def(self,"$column",(function(){return $truthy(this.$loc())?this.$loc().$column():nil}),0)}([$module($base,"AST")].concat($parent_nesting)[0],$$$($$$($$$("Parser"),"AST"),"Node"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["racc/parser"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$const_set=Opal.const_set,$defs=Opal.defs,$gvars=Opal.gvars,$rb_lt=Opal.rb_lt,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$to_ary=Opal.to_ary,$neqeq=Opal.neqeq,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$rb_ge=Opal.rb_ge,$rb_gt=Opal.rb_gt,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_times=Opal.rb_times;return Opal.add_stubs("[],class,<,size,[]=,-,__send__,_racc_setup,raise,_racc_init_sysvars,catch,!=,next_token,racc_read_token,+,==,>=,_racc_evalact,!,>,push,racc_shift,-@,_racc_do_reduce,===,racc_accept,throw,on_error,<=,pop,racc_e_pop,inspect,racc_next_state,*,racc_reduce,sprintf,token_to_str,print,racc_token2str,puts,racc_print_stacks,empty?,each,racc_print_states,each_index"),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);$klass($nesting[0],$$("StandardError"),"ParseError")}($nesting[0],$nesting),$truthy($$$("::","ParseError","skip_raise")?"constant":nil)||$const_set($nesting[0],"ParseError",$$$($$("Racc"),"ParseError")),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);return $truthy($$("Racc_No_Extensions","skip_raise")?"constant":nil)||$const_set($nesting[0],"Racc_No_Extensions",!1),function($base,$super,$parent_nesting){var self=$klass($base,null,"Parser"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.yydebug=$proto.racc_debug_out=$proto.racc_error_status=$proto.racc_t=$proto.racc_vstack=$proto.racc_val=$proto.racc_state=$proto.racc_tstack=nil,$const_set($nesting[0],"Racc_Runtime_Version","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Revision",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Runtime_Core_Version_R","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Core_Revision_R",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Main_Parsing_Routine","_racc_do_parse_rb"),$const_set($nesting[0],"Racc_YY_Parse_Method","_racc_yyparse_rb"),$const_set($nesting[0],"Racc_Runtime_Core_Version",$$("Racc_Runtime_Core_Version_R")),$const_set($nesting[0],"Racc_Runtime_Core_Revision",$$("Racc_Runtime_Core_Revision_R")),$const_set($nesting[0],"Racc_Runtime_Type","ruby"),$defs($$("Parser"),"$racc_runtime_type",(function(){return $$("Racc_Runtime_Type")}),0),$def(self,"$_racc_setup",(function(){var $a,$b,$ret_or_1=nil,arg=nil,$writer=nil;return null==$gvars.stderr&&($gvars.stderr=nil),$truthy($$$(this.$class(),"Racc_debug_parser"))||(this.yydebug=!1),$truthy(null!=($a=this.yydebug)&&$a!==nil?"instance-variable":nil)||(this.yydebug=!1),$truthy(this.yydebug)&&($truthy(null!=($b=this.racc_debug_out)&&$b!==nil?"instance-variable":nil)||(this.racc_debug_out=$gvars.stderr),this.racc_debug_out=$truthy($ret_or_1=this.racc_debug_out)?$ret_or_1:$gvars.stderr),arg=$$$(this.$class(),"Racc_arg"),$truthy($rb_lt(arg.$size(),14))&&($send(arg,"[]=",$to_a($writer=[13,!0])),$writer[$rb_minus($writer.length,1)]),arg}),0),$def(self,"$_racc_init_sysvars",(function(){return this.racc_state=[0],this.racc_tstack=[],this.racc_vstack=[],this.racc_t=nil,this.racc_val=nil,this.racc_read_next=!0,this.racc_user_yyerror=!1,this.racc_error_status=0}),0),$def(self,"$do_parse",(function(){return this.$__send__($$("Racc_Main_Parsing_Routine"),this.$_racc_setup(),!1)}),0),$def(self,"$next_token",(function(){return this.$raise($$("NotImplementedError"),this.$class()+"#next_token is not defined")}),0),$def(self,"$_racc_do_parse_rb",(function(arg,in_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,tok=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),tok=act=i=nil,$send(this,"catch",["racc_end_parse"],(function $$1(){var $d,$e,self=null==$$1.$$s?this:$$1.$$s,$ret_or_1=nil;for(null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==self.racc_t&&(self.racc_t=nil),null==self.yydebug&&(self.yydebug=nil),null==self.racc_val&&(self.racc_val=nil);$truthy(!0);)for($truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))?($truthy(self.racc_read_next)&&$neqeq(self.racc_t,0)&&($e=self.$next_token(),$d=$to_ary($e),tok=null==$d[0]?nil:$d[0],self.racc_val=null==$d[1]?nil:$d[1],$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,$truthy(self.yydebug)&&self.$racc_read_token(self.racc_t,tok,self.racc_val),self.racc_read_next=!1),i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)))):act=action_default["$[]"](self.racc_state["$[]"](-1));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:0,$$s:this})}),2),$def(self,"$yyparse",(function(recv,mid){return this.$__send__($$("Racc_YY_Parse_Method"),recv,mid,this.$_racc_setup(),!0)}),2),$def(self,"$_racc_yyparse_rb",(function(recv,mid,arg,c_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),act=nil,i=nil,$send(this,"catch",["racc_end_parse"],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;for(null==self.racc_state&&(self.racc_state=nil);!$truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)));)for(;$truthy(act=self.$_racc_evalact(action_default["$[]"](self.racc_state["$[]"](-1)),arg)););return $send(recv,"__send__",[mid],(function $$3(tok,val){var self=null==$$3.$$s?this:$$3.$$s,$ret_or_1=nil,$ret_or_2=nil;for(null==self.racc_t&&(self.racc_t=nil),null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==tok&&(tok=nil),null==val&&(val=nil),$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,self.racc_val=val,self.racc_read_next=!1,i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););for(;$truthy($truthy($ret_or_1=$truthy($ret_or_2=(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))["$!"]())?$ret_or_2:self.racc_read_next["$!"]())?$ret_or_1:self.racc_t["$=="](0));)for($truthy(i)&&$truthy(i=$rb_plus(i,self.racc_t))&&$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:2,$$s:self})}),{$$arity:0,$$s:this})}),4),$def(self,"$_racc_evalact",(function(act,arg){var $a,shift_n,action_table=nil,action_check=nil,action_pointer=nil,reduce_n=nil,code=nil,$ret_or_1=nil,i=nil;if(action_table=null==($a=$to_ary(arg))[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],shift_n=null==$a[11]?nil:$a[11],reduce_n=null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],null==$a[14]?nil:$a[14],$truthy($rb_gt(act,0))&&$truthy($rb_lt(act,shift_n)))$truthy($rb_gt(this.racc_error_status,0))&&($eqeq(this.racc_t,1)||(this.racc_error_status=$rb_minus(this.racc_error_status,1))),this.racc_vstack.$push(this.racc_val),this.racc_state.$push(act),this.racc_read_next=!0,$truthy(this.yydebug)&&(this.racc_tstack.$push(this.racc_t),this.$racc_shift(this.racc_t,this.racc_tstack,this.racc_vstack));else if($truthy($rb_lt(act,0))&&$truthy($rb_gt(act,reduce_n["$-@"]()))){if(code=$send(this,"catch",["racc_jump"],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s;return null==self.racc_state&&(self.racc_state=nil),self.racc_state.$push(self.$_racc_do_reduce(arg,act)),!1}),{$$arity:0,$$s:this}),$truthy(code)){if($eqeqeq(1,$ret_or_1=code))return this.racc_user_yyerror=!0,reduce_n["$-@"]();if($eqeqeq(2,$ret_or_1))return shift_n;this.$raise("[Racc Bug] unknown jump code")}}else if($eqeq(act,shift_n))$truthy(this.yydebug)&&this.$racc_accept(),this.$throw("racc_end_parse",this.racc_vstack["$[]"](0));else{if($eqeq(act,reduce_n["$-@"]())){for($eqeqeq(0,$ret_or_1=this.racc_error_status)?$truthy(arg["$[]"](21))||this.$on_error(this.racc_t,this.racc_val,this.racc_vstack):$eqeqeq(3,$ret_or_1)&&($eqeq(this.racc_t,0)&&this.$throw("racc_end_parse",nil),this.racc_read_next=!0),this.racc_user_yyerror=!1,this.racc_error_status=3;$truthy(!0)&&!($truthy(i=action_pointer["$[]"](this.racc_state["$[]"](-1)))&&(i=$rb_plus(i,1),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),this.racc_state["$[]"](-1))));)$truthy($rb_le(this.racc_state.$size(),1))&&this.$throw("racc_end_parse",nil),this.racc_state.$pop(),this.racc_vstack.$pop(),$truthy(this.yydebug)&&(this.racc_tstack.$pop(),this.$racc_e_pop(this.racc_state,this.racc_tstack,this.racc_vstack));return act}this.$raise("[Racc Bug] unknown action "+act.$inspect())}return $truthy(this.yydebug)&&this.$racc_next_state(this.racc_state["$[]"](-1),this.racc_state),nil}),2),$def(self,"$_racc_do_reduce",(function(arg,act){var $a,nt_base,use_result,reduce_to,method_id,void_array,k1,goto_table=nil,goto_check=nil,goto_default=nil,goto_pointer=nil,reduce_table=nil,state=nil,vstack=nil,tstack=nil,i=nil,len=nil,tmp_t=nil,tmp_v=nil,$writer=nil,curstate=nil;return null==($a=$to_ary(arg))[0]?nil:$a[0],null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],null==$a[3]?nil:$a[3],goto_table=null==$a[4]?nil:$a[4],goto_check=null==$a[5]?nil:$a[5],goto_default=null==$a[6]?nil:$a[6],goto_pointer=null==$a[7]?nil:$a[7],nt_base=null==$a[8]?nil:$a[8],reduce_table=null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],use_result=null==$a[13]?nil:$a[13],state=this.racc_state,vstack=this.racc_vstack,tstack=this.racc_tstack,i=$rb_times(act,-3),len=reduce_table["$[]"](i),reduce_to=reduce_table["$[]"]($rb_plus(i,1)),method_id=reduce_table["$[]"]($rb_plus(i,2)),void_array=[],$truthy(this.yydebug)&&(tmp_t=tstack["$[]"](len["$-@"](),len)),tmp_v=vstack["$[]"](len["$-@"](),len),$truthy(this.yydebug)&&($writer=[len["$-@"](),len,void_array],$send(tstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=[len["$-@"](),len,void_array],$send(vstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[len["$-@"](),len,void_array],$send(state,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(use_result)?vstack.$push(this.$__send__(method_id,tmp_v,vstack,tmp_v["$[]"](0))):vstack.$push(this.$__send__(method_id,tmp_v,vstack)),tstack.$push(reduce_to),$truthy(this.yydebug)&&this.$racc_reduce(tmp_t,reduce_to,tstack,vstack),k1=$rb_minus(reduce_to,nt_base),$truthy(i=goto_pointer["$[]"](k1))&&(i=$rb_plus(i,state["$[]"](-1)),$truthy($rb_ge(i,0))&&$truthy(curstate=goto_table["$[]"](i))&&$eqeq(goto_check["$[]"](i),k1))?curstate:goto_default["$[]"](k1)}),2),$def(self,"$on_error",(function(t,val,vstack){var $ret_or_1;return this.$raise($$("ParseError"),this.$sprintf("\nparse error on value %s (%s)",val.$inspect(),$truthy($ret_or_1=this.$token_to_str(t))?$ret_or_1:"?"))}),3),$def(self,"$yyerror",(function(){return this.$throw("racc_jump",1)}),0),$def(self,"$yyaccept",(function(){return this.$throw("racc_jump",2)}),0),$def(self,"$yyerrok",(function(){return this.racc_error_status=0}),0),$def(self,"$racc_read_token",(function(t,tok,val){return this.racc_debug_out.$print("read "),this.racc_debug_out.$print(tok.$inspect(),"(",this.$racc_token2str(t),") "),this.racc_debug_out.$puts(val.$inspect()),this.racc_debug_out.$puts()}),3),$def(self,"$racc_shift",(function(tok,tstack,vstack){return this.racc_debug_out.$puts("shift "+this.$racc_token2str(tok)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_reduce",(function(toks,sim,tstack,vstack){var out=nil;return(out=this.racc_debug_out).$print("reduce "),$truthy(toks["$empty?"]())?out.$print(" "):$send(toks,"each",[],(function $$5(t){var self=null==$$5.$$s?this:$$5.$$s;return null==t&&(t=nil),out.$print(" ",self.$racc_token2str(t))}),{$$arity:1,$$s:this}),out.$puts(" --\x3e "+this.$racc_token2str(sim)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),4),$def(self,"$racc_accept",(function(){return this.racc_debug_out.$puts("accept"),this.racc_debug_out.$puts()}),0),$def(self,"$racc_e_pop",(function(state,tstack,vstack){return this.racc_debug_out.$puts("error recovering mode: pop token"),this.$racc_print_states(state),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_next_state",(function(curstate,state){return this.racc_debug_out.$puts("goto "+curstate),this.$racc_print_states(state),this.racc_debug_out.$puts()}),2),$def(self,"$racc_print_stacks",(function(t,v){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(t,"each_index",[],(function $$6(i){var self=null==$$6.$$s?this:$$6.$$s;return null==i&&(i=nil),out.$print(" (",self.$racc_token2str(t["$[]"](i))," ",v["$[]"](i).$inspect(),")")}),{$$arity:1,$$s:this}),out.$puts(" ]")}),2),$def(self,"$racc_print_states",(function(s){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(s,"each",[],(function(st){return null==st&&(st=nil),out.$print(" ",st)}),1),out.$puts(" ]")}),1),$def(self,"$racc_token2str",(function(tok){var $ret_or_1;return $truthy($ret_or_1=$$$(this.$class(),"Racc_token_to_s_table")["$[]"](tok))?$ret_or_1:this.$raise("[Racc Bug] can't convert token "+tok+" to string")}),1),$def(self,"$token_to_str",(function(t){return $$$(this.$class(),"Racc_token_to_s_table")["$[]"](t)}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/version"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set;return function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return $const_set($nesting[0],"VERSION","3.1.0.0")}($nesting[0],$nesting)},Opal.modules["racc/parser"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$const_set=Opal.const_set,$defs=Opal.defs,$gvars=Opal.gvars,$rb_lt=Opal.rb_lt,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$to_ary=Opal.to_ary,$neqeq=Opal.neqeq,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$rb_ge=Opal.rb_ge,$rb_gt=Opal.rb_gt,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_times=Opal.rb_times;return Opal.add_stubs("[],class,<,size,[]=,-,__send__,_racc_setup,raise,_racc_init_sysvars,catch,!=,next_token,racc_read_token,+,==,>=,_racc_evalact,!,>,push,racc_shift,-@,_racc_do_reduce,===,racc_accept,throw,on_error,<=,pop,racc_e_pop,inspect,racc_next_state,*,racc_reduce,sprintf,token_to_str,print,racc_token2str,puts,racc_print_stacks,empty?,each,racc_print_states,each_index"),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);$klass($nesting[0],$$("StandardError"),"ParseError")}($nesting[0],$nesting),$truthy($$$("::","ParseError","skip_raise")?"constant":nil)||$const_set($nesting[0],"ParseError",$$$($$("Racc"),"ParseError")),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);return $truthy($$("Racc_No_Extensions","skip_raise")?"constant":nil)||$const_set($nesting[0],"Racc_No_Extensions",!1),function($base,$super,$parent_nesting){var self=$klass($base,null,"Parser"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.yydebug=$proto.racc_debug_out=$proto.racc_error_status=$proto.racc_t=$proto.racc_vstack=$proto.racc_val=$proto.racc_state=$proto.racc_tstack=nil,$const_set($nesting[0],"Racc_Runtime_Version","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Revision",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Runtime_Core_Version_R","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Core_Revision_R",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Main_Parsing_Routine","_racc_do_parse_rb"),$const_set($nesting[0],"Racc_YY_Parse_Method","_racc_yyparse_rb"),$const_set($nesting[0],"Racc_Runtime_Core_Version",$$("Racc_Runtime_Core_Version_R")),$const_set($nesting[0],"Racc_Runtime_Core_Revision",$$("Racc_Runtime_Core_Revision_R")),$const_set($nesting[0],"Racc_Runtime_Type","ruby"),$defs($$("Parser"),"$racc_runtime_type",(function(){return $$("Racc_Runtime_Type")}),0),$def(self,"$_racc_setup",(function(){var $a,$b,$ret_or_1=nil,arg=nil,$writer=nil;return null==$gvars.stderr&&($gvars.stderr=nil),$truthy($$$(this.$class(),"Racc_debug_parser"))||(this.yydebug=!1),$truthy(null!=($a=this.yydebug)&&$a!==nil?"instance-variable":nil)||(this.yydebug=!1),$truthy(this.yydebug)&&($truthy(null!=($b=this.racc_debug_out)&&$b!==nil?"instance-variable":nil)||(this.racc_debug_out=$gvars.stderr),this.racc_debug_out=$truthy($ret_or_1=this.racc_debug_out)?$ret_or_1:$gvars.stderr),arg=$$$(this.$class(),"Racc_arg"),$truthy($rb_lt(arg.$size(),14))&&($send(arg,"[]=",$to_a($writer=[13,!0])),$writer[$rb_minus($writer.length,1)]),arg}),0),$def(self,"$_racc_init_sysvars",(function(){return this.racc_state=[0],this.racc_tstack=[],this.racc_vstack=[],this.racc_t=nil,this.racc_val=nil,this.racc_read_next=!0,this.racc_user_yyerror=!1,this.racc_error_status=0}),0),$def(self,"$do_parse",(function(){return this.$__send__($$("Racc_Main_Parsing_Routine"),this.$_racc_setup(),!1)}),0),$def(self,"$next_token",(function(){return this.$raise($$("NotImplementedError"),this.$class()+"#next_token is not defined")}),0),$def(self,"$_racc_do_parse_rb",(function(arg,in_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,tok=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),tok=act=i=nil,$send(this,"catch",["racc_end_parse"],(function $$1(){var $d,$e,self=null==$$1.$$s?this:$$1.$$s,$ret_or_1=nil;for(null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==self.racc_t&&(self.racc_t=nil),null==self.yydebug&&(self.yydebug=nil),null==self.racc_val&&(self.racc_val=nil);$truthy(!0);)for($truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))?($truthy(self.racc_read_next)&&$neqeq(self.racc_t,0)&&($e=self.$next_token(),$d=$to_ary($e),tok=null==$d[0]?nil:$d[0],self.racc_val=null==$d[1]?nil:$d[1],$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,$truthy(self.yydebug)&&self.$racc_read_token(self.racc_t,tok,self.racc_val),self.racc_read_next=!1),i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)))):act=action_default["$[]"](self.racc_state["$[]"](-1));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:0,$$s:this})}),2),$def(self,"$yyparse",(function(recv,mid){return this.$__send__($$("Racc_YY_Parse_Method"),recv,mid,this.$_racc_setup(),!0)}),2),$def(self,"$_racc_yyparse_rb",(function(recv,mid,arg,c_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),act=nil,i=nil,$send(this,"catch",["racc_end_parse"],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;for(null==self.racc_state&&(self.racc_state=nil);!$truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)));)for(;$truthy(act=self.$_racc_evalact(action_default["$[]"](self.racc_state["$[]"](-1)),arg)););return $send(recv,"__send__",[mid],(function $$3(tok,val){var self=null==$$3.$$s?this:$$3.$$s,$ret_or_1=nil,$ret_or_2=nil;for(null==self.racc_t&&(self.racc_t=nil),null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==tok&&(tok=nil),null==val&&(val=nil),$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,self.racc_val=val,self.racc_read_next=!1,i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););for(;$truthy($truthy($ret_or_1=$truthy($ret_or_2=(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))["$!"]())?$ret_or_2:self.racc_read_next["$!"]())?$ret_or_1:self.racc_t["$=="](0));)for($truthy(i)&&$truthy(i=$rb_plus(i,self.racc_t))&&$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:2,$$s:self})}),{$$arity:0,$$s:this})}),4),$def(self,"$_racc_evalact",(function(act,arg){var $a,shift_n,action_table=nil,action_check=nil,action_pointer=nil,reduce_n=nil,code=nil,$ret_or_1=nil,i=nil;if(action_table=null==($a=$to_ary(arg))[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],shift_n=null==$a[11]?nil:$a[11],reduce_n=null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],null==$a[14]?nil:$a[14],$truthy($rb_gt(act,0))&&$truthy($rb_lt(act,shift_n)))$truthy($rb_gt(this.racc_error_status,0))&&($eqeq(this.racc_t,1)||(this.racc_error_status=$rb_minus(this.racc_error_status,1))),this.racc_vstack.$push(this.racc_val),this.racc_state.$push(act),this.racc_read_next=!0,$truthy(this.yydebug)&&(this.racc_tstack.$push(this.racc_t),this.$racc_shift(this.racc_t,this.racc_tstack,this.racc_vstack));else if($truthy($rb_lt(act,0))&&$truthy($rb_gt(act,reduce_n["$-@"]()))){if(code=$send(this,"catch",["racc_jump"],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s;return null==self.racc_state&&(self.racc_state=nil),self.racc_state.$push(self.$_racc_do_reduce(arg,act)),!1}),{$$arity:0,$$s:this}),$truthy(code)){if($eqeqeq(1,$ret_or_1=code))return this.racc_user_yyerror=!0,reduce_n["$-@"]();if($eqeqeq(2,$ret_or_1))return shift_n;this.$raise("[Racc Bug] unknown jump code")}}else if($eqeq(act,shift_n))$truthy(this.yydebug)&&this.$racc_accept(),this.$throw("racc_end_parse",this.racc_vstack["$[]"](0));else{if($eqeq(act,reduce_n["$-@"]())){for($eqeqeq(0,$ret_or_1=this.racc_error_status)?$truthy(arg["$[]"](21))||this.$on_error(this.racc_t,this.racc_val,this.racc_vstack):$eqeqeq(3,$ret_or_1)&&($eqeq(this.racc_t,0)&&this.$throw("racc_end_parse",nil),this.racc_read_next=!0),this.racc_user_yyerror=!1,this.racc_error_status=3;$truthy(!0)&&!($truthy(i=action_pointer["$[]"](this.racc_state["$[]"](-1)))&&(i=$rb_plus(i,1),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),this.racc_state["$[]"](-1))));)$truthy($rb_le(this.racc_state.$size(),1))&&this.$throw("racc_end_parse",nil),this.racc_state.$pop(),this.racc_vstack.$pop(),$truthy(this.yydebug)&&(this.racc_tstack.$pop(),this.$racc_e_pop(this.racc_state,this.racc_tstack,this.racc_vstack));return act}this.$raise("[Racc Bug] unknown action "+act.$inspect())}return $truthy(this.yydebug)&&this.$racc_next_state(this.racc_state["$[]"](-1),this.racc_state),nil}),2),$def(self,"$_racc_do_reduce",(function(arg,act){var $a,nt_base,use_result,reduce_to,method_id,void_array,k1,goto_table=nil,goto_check=nil,goto_default=nil,goto_pointer=nil,reduce_table=nil,state=nil,vstack=nil,tstack=nil,i=nil,len=nil,tmp_t=nil,tmp_v=nil,$writer=nil,curstate=nil;return null==($a=$to_ary(arg))[0]?nil:$a[0],null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],null==$a[3]?nil:$a[3],goto_table=null==$a[4]?nil:$a[4],goto_check=null==$a[5]?nil:$a[5],goto_default=null==$a[6]?nil:$a[6],goto_pointer=null==$a[7]?nil:$a[7],nt_base=null==$a[8]?nil:$a[8],reduce_table=null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],use_result=null==$a[13]?nil:$a[13],state=this.racc_state,vstack=this.racc_vstack,tstack=this.racc_tstack,i=$rb_times(act,-3),len=reduce_table["$[]"](i),reduce_to=reduce_table["$[]"]($rb_plus(i,1)),method_id=reduce_table["$[]"]($rb_plus(i,2)),void_array=[],$truthy(this.yydebug)&&(tmp_t=tstack["$[]"](len["$-@"](),len)),tmp_v=vstack["$[]"](len["$-@"](),len),$truthy(this.yydebug)&&($writer=[len["$-@"](),len,void_array],$send(tstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=[len["$-@"](),len,void_array],$send(vstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[len["$-@"](),len,void_array],$send(state,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(use_result)?vstack.$push(this.$__send__(method_id,tmp_v,vstack,tmp_v["$[]"](0))):vstack.$push(this.$__send__(method_id,tmp_v,vstack)),tstack.$push(reduce_to),$truthy(this.yydebug)&&this.$racc_reduce(tmp_t,reduce_to,tstack,vstack),k1=$rb_minus(reduce_to,nt_base),$truthy(i=goto_pointer["$[]"](k1))&&(i=$rb_plus(i,state["$[]"](-1)),$truthy($rb_ge(i,0))&&$truthy(curstate=goto_table["$[]"](i))&&$eqeq(goto_check["$[]"](i),k1))?curstate:goto_default["$[]"](k1)}),2),$def(self,"$on_error",(function(t,val,vstack){var $ret_or_1;return this.$raise($$("ParseError"),this.$sprintf("\nparse error on value %s (%s)",val.$inspect(),$truthy($ret_or_1=this.$token_to_str(t))?$ret_or_1:"?"))}),3),$def(self,"$yyerror",(function(){return this.$throw("racc_jump",1)}),0),$def(self,"$yyaccept",(function(){return this.$throw("racc_jump",2)}),0),$def(self,"$yyerrok",(function(){return this.racc_error_status=0}),0),$def(self,"$racc_read_token",(function(t,tok,val){return this.racc_debug_out.$print("read "),this.racc_debug_out.$print(tok.$inspect(),"(",this.$racc_token2str(t),") "),this.racc_debug_out.$puts(val.$inspect()),this.racc_debug_out.$puts()}),3),$def(self,"$racc_shift",(function(tok,tstack,vstack){return this.racc_debug_out.$puts("shift "+this.$racc_token2str(tok)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_reduce",(function(toks,sim,tstack,vstack){var out=nil;return(out=this.racc_debug_out).$print("reduce "),$truthy(toks["$empty?"]())?out.$print(" "):$send(toks,"each",[],(function $$5(t){var self=null==$$5.$$s?this:$$5.$$s;return null==t&&(t=nil),out.$print(" ",self.$racc_token2str(t))}),{$$arity:1,$$s:this}),out.$puts(" --\x3e "+this.$racc_token2str(sim)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),4),$def(self,"$racc_accept",(function(){return this.racc_debug_out.$puts("accept"),this.racc_debug_out.$puts()}),0),$def(self,"$racc_e_pop",(function(state,tstack,vstack){return this.racc_debug_out.$puts("error recovering mode: pop token"),this.$racc_print_states(state),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_next_state",(function(curstate,state){return this.racc_debug_out.$puts("goto "+curstate),this.$racc_print_states(state),this.racc_debug_out.$puts()}),2),$def(self,"$racc_print_stacks",(function(t,v){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(t,"each_index",[],(function $$6(i){var self=null==$$6.$$s?this:$$6.$$s;return null==i&&(i=nil),out.$print(" (",self.$racc_token2str(t["$[]"](i))," ",v["$[]"](i).$inspect(),")")}),{$$arity:1,$$s:this}),out.$puts(" ]")}),2),$def(self,"$racc_print_states",(function(s){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(s,"each",[],(function(st){return null==st&&(st=nil),out.$print(" ",st)}),1),out.$puts(" ]")}),1),$def(self,"$racc_token2str",(function(tok){var $ret_or_1;return $truthy($ret_or_1=$$$(this.$class(),"Racc_token_to_s_table")["$[]"](tok))?$ret_or_1:this.$raise("[Racc Bug] can't convert token "+tok+" to string")}),1),$def(self,"$token_to_str",(function(t){return $$$(this.$class(),"Racc_token_to_s_table")["$[]"](t)}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/messages"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set,$hash2=Opal.hash2,$truthy=Opal.truthy,$eqeqeq=Opal.eqeqeq,$defs=Opal.defs;return Opal.add_stubs("freeze,[],empty?,===,format"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return $const_set($nesting[0],"MESSAGES",$hash2(["unicode_point_too_large","invalid_escape","incomplete_escape","invalid_hex_escape","invalid_unicode_escape","unterminated_unicode","escape_eof","string_eof","regexp_options","cvar_name","ivar_name","trailing_in_number","empty_numeric","invalid_octal","no_dot_digit_literal","bare_backslash","unexpected","embedded_document","heredoc_id_has_newline","heredoc_id_ends_with_nl","unterminated_heredoc_id","invalid_escape_use","ambiguous_literal","ambiguous_regexp","ambiguous_prefix","triple_dot_at_eol","nth_ref_alias","begin_in_method","backref_assignment","invalid_assignment","module_name_const","unexpected_token","argument_const","argument_ivar","argument_gvar","argument_cvar","duplicate_argument","empty_symbol","odd_hash","singleton_literal","dynamic_const","const_reassignment","module_in_def","class_in_def","unexpected_percent_str","block_and_blockarg","masgn_as_condition","block_given_to_yield","invalid_regexp","invalid_return","csend_in_lhs_of_masgn","cant_assign_to_numparam","reserved_for_numparam","ordinary_param_defined","numparam_used_in_outer_scope","circular_argument_reference","pm_interp_in_var_name","lvar_name","undefined_lvar","duplicate_variable_name","duplicate_pattern_key","endless_setter","invalid_id_to_get","forward_arg_after_restarg","no_anonymous_blockarg","useless_else","duplicate_hash_key","invalid_encoding","invalid_action","clobbered","different_replacements","swallowed_insertions","swallowed_insertions_conflict","crossing_deletions","crossing_deletions_conflict","crossing_insertions","crossing_insertions_conflict"],{unicode_point_too_large:"invalid Unicode codepoint (too large)",invalid_escape:"invalid escape character syntax",incomplete_escape:"incomplete character syntax",invalid_hex_escape:"invalid hex escape",invalid_unicode_escape:"invalid Unicode escape",unterminated_unicode:"unterminated Unicode escape",escape_eof:"escape sequence meets end of file",string_eof:"unterminated string meets end of file",regexp_options:"unknown regexp options: %{options}",cvar_name:"`%{name}' is not allowed as a class variable name",ivar_name:"`%{name}' is not allowed as an instance variable name",trailing_in_number:"trailing `%{character}' in number",empty_numeric:"numeric literal without digits",invalid_octal:"invalid octal digit",no_dot_digit_literal:"no . floating literal anymore; put 0 before dot",bare_backslash:"bare backslash only allowed before newline",unexpected:"unexpected `%{character}'",embedded_document:"embedded document meets end of file (and they embark on a romantic journey)",heredoc_id_has_newline:"here document identifier across newlines, never match",heredoc_id_ends_with_nl:"here document identifier ends with a newline",unterminated_heredoc_id:"unterminated heredoc id",invalid_escape_use:"invalid character syntax; use ?%{escape}",ambiguous_literal:"ambiguous first argument; put parentheses or a space even after the operator",ambiguous_regexp:"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after `/' operator",ambiguous_prefix:"`%{prefix}' interpreted as argument prefix",triple_dot_at_eol:"... at EOL, should be parenthesized",nth_ref_alias:"cannot define an alias for a back-reference variable",begin_in_method:"BEGIN in method",backref_assignment:"cannot assign to a back-reference variable",invalid_assignment:"cannot assign to a keyword",module_name_const:"class or module name must be a constant literal",unexpected_token:"unexpected token %{token}",argument_const:"formal argument cannot be a constant",argument_ivar:"formal argument cannot be an instance variable",argument_gvar:"formal argument cannot be a global variable",argument_cvar:"formal argument cannot be a class variable",duplicate_argument:"duplicate argument name",empty_symbol:"empty symbol literal",odd_hash:"odd number of entries for a hash",singleton_literal:"cannot define a singleton method for a literal",dynamic_const:"dynamic constant assignment",const_reassignment:"constant re-assignment",module_in_def:"module definition in method body",class_in_def:"class definition in method body",unexpected_percent_str:"%{type}: unknown type of percent-literal",block_and_blockarg:"both block argument and literal block are passed",masgn_as_condition:"multiple assignment in conditional context",block_given_to_yield:"block given to yield",invalid_regexp:"%{message}",invalid_return:"Invalid return in class/module body",csend_in_lhs_of_masgn:"&. inside multiple assignment destination",cant_assign_to_numparam:"cannot assign to numbered parameter %{name}",reserved_for_numparam:"%{name} is reserved for numbered parameter",ordinary_param_defined:"ordinary parameter is defined",numparam_used_in_outer_scope:"numbered parameter is already used in an outer scope",circular_argument_reference:"circular argument reference %{var_name}",pm_interp_in_var_name:"symbol literal with interpolation is not allowed",lvar_name:"`%{name}' is not allowed as a local variable name",undefined_lvar:"no such local variable: `%{name}'",duplicate_variable_name:"duplicate variable name %{name}",duplicate_pattern_key:"duplicate hash pattern key %{name}",endless_setter:"setter method cannot be defined in an endless method definition",invalid_id_to_get:"identifier %{identifier} is not valid to get",forward_arg_after_restarg:"... after rest argument",no_anonymous_blockarg:"no anonymous block parameter",useless_else:"else without rescue is useless",duplicate_hash_key:"key is duplicated and overwritten",invalid_encoding:"literal contains escape sequences incompatible with UTF-8",invalid_action:"cannot %{action}",clobbered:"clobbered by: %{action}",different_replacements:"different replacements: %{replacement} vs %{other_replacement}",swallowed_insertions:"this replacement:",swallowed_insertions_conflict:"swallows some inner rewriting actions:",crossing_deletions:"the deletion of:",crossing_deletions_conflict:"is crossing:",crossing_insertions:"the rewriting action on:",crossing_insertions_conflict:"is crossing that on:"}).$freeze()),function($base,$parent_nesting){var self=$module($base,"Messages"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$compile",(function(reason,arguments$){var template;return template=$$("MESSAGES")["$[]"](reason),$eqeqeq($$("Hash"),arguments$)&&$truthy(arguments$["$empty?"]())?template:this.$format(template,arguments$)}),2)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/deprecation"]=function(Opal){var $base,$parent_nesting,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("attr_writer,warn"),$base=$nesting[0],$parent_nesting=$nesting,function($base){var self=$module($base,"Deprecation");return self.$attr_writer("warned_of_deprecation"),$def(self,"$warn_of_deprecation",(function(){var $ret_or_1,$ret_or_2=nil;return null==this.warned_of_deprecation&&(this.warned_of_deprecation=nil),this.warned_of_deprecation=$truthy($ret_or_1=this.warned_of_deprecation)?$ret_or_1:!$truthy($ret_or_2=this.$warn($$$(this,"DEPRECATION_WARNING")))||$ret_or_2}),0)}([$module($base,"Parser")].concat($parent_nesting)[0])},Opal.modules["parser/ast/processor"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$alias=Opal.alias,$to_a=Opal.to_a,$not=Opal.not,$truthy=Opal.truthy,$slice=Opal.slice;return Opal.add_stubs("updated,process_all,on_var,!,nil?,process,on_vasgn,on_argument,is_a?,[],children,process_regular_node,warn"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Processor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$process_regular_node",(function(node){return node.$updated(nil,this.$process_all(node))}),1),$alias(self,"on_dstr","process_regular_node"),$alias(self,"on_dsym","process_regular_node"),$alias(self,"on_regexp","process_regular_node"),$alias(self,"on_xstr","process_regular_node"),$alias(self,"on_splat","process_regular_node"),$alias(self,"on_kwsplat","process_regular_node"),$alias(self,"on_array","process_regular_node"),$alias(self,"on_pair","process_regular_node"),$alias(self,"on_hash","process_regular_node"),$alias(self,"on_kwargs","process_regular_node"),$alias(self,"on_irange","process_regular_node"),$alias(self,"on_erange","process_regular_node"),$def(self,"$on_var",(function(node){return node}),1),$def(self,"$process_variable_node",(function(node){return this.$on_var(node)}),1),$alias(self,"on_lvar","process_variable_node"),$alias(self,"on_ivar","process_variable_node"),$alias(self,"on_gvar","process_variable_node"),$alias(self,"on_cvar","process_variable_node"),$alias(self,"on_back_ref","process_variable_node"),$alias(self,"on_nth_ref","process_variable_node"),$def(self,"$on_vasgn",(function(node){var $a,name,value_node=nil;return name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value_node=null==$a[1]?nil:$a[1],$not(value_node["$nil?"]())?node.$updated(nil,[name,this.$process(value_node)]):node}),1),$def(self,"$process_var_asgn_node",(function(node){return this.$on_vasgn(node)}),1),$alias(self,"on_lvasgn","process_var_asgn_node"),$alias(self,"on_ivasgn","process_var_asgn_node"),$alias(self,"on_gvasgn","process_var_asgn_node"),$alias(self,"on_cvasgn","process_var_asgn_node"),$alias(self,"on_and_asgn","process_regular_node"),$alias(self,"on_or_asgn","process_regular_node"),$def(self,"$on_op_asgn",(function(node){var $a,var_node,method_name,value_node;return var_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],value_node=null==$a[2]?nil:$a[2],node.$updated(nil,[this.$process(var_node),method_name,this.$process(value_node)])}),1),$alias(self,"on_mlhs","process_regular_node"),$alias(self,"on_masgn","process_regular_node"),$def(self,"$on_const",(function(node){var $a,scope_node,name;return scope_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],node.$updated(nil,[this.$process(scope_node),name])}),1),$def(self,"$on_casgn",(function(node){var $a,scope_node,name,value_node=nil;return scope_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],value_node=null==$a[2]?nil:$a[2],$not(value_node["$nil?"]())?node.$updated(nil,[this.$process(scope_node),name,this.$process(value_node)]):node.$updated(nil,[this.$process(scope_node),name])}),1),$alias(self,"on_args","process_regular_node"),$def(self,"$on_argument",(function(node){var $a,arg_name,value_node=nil;return arg_name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value_node=null==$a[1]?nil:$a[1],$not(value_node["$nil?"]())?node.$updated(nil,[arg_name,this.$process(value_node)]):node}),1),$def(self,"$process_argument_node",(function(node){return this.$on_argument(node)}),1),$alias(self,"on_arg","process_argument_node"),$alias(self,"on_optarg","process_argument_node"),$alias(self,"on_restarg","process_argument_node"),$alias(self,"on_blockarg","process_argument_node"),$alias(self,"on_shadowarg","process_argument_node"),$alias(self,"on_kwarg","process_argument_node"),$alias(self,"on_kwoptarg","process_argument_node"),$alias(self,"on_kwrestarg","process_argument_node"),$alias(self,"on_forward_arg","process_argument_node"),$def(self,"$on_procarg0",(function(node){return $truthy(node.$children()["$[]"](0)["$is_a?"]($$("Symbol")))?this.$on_argument(node):this.$process_regular_node(node)}),1),$alias(self,"on_arg_expr","process_regular_node"),$alias(self,"on_restarg_expr","process_regular_node"),$alias(self,"on_blockarg_expr","process_regular_node"),$alias(self,"on_block_pass","process_regular_node"),$alias(self,"on_module","process_regular_node"),$alias(self,"on_class","process_regular_node"),$alias(self,"on_sclass","process_regular_node"),$def(self,"$on_def",(function(node){var $a,name,args_node,body_node;return name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args_node=null==$a[1]?nil:$a[1],body_node=null==$a[2]?nil:$a[2],node.$updated(nil,[name,this.$process(args_node),this.$process(body_node)])}),1),$def(self,"$on_defs",(function(node){var $a,definee_node,name,args_node,body_node;return definee_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],args_node=null==$a[2]?nil:$a[2],body_node=null==$a[3]?nil:$a[3],node.$updated(nil,[this.$process(definee_node),name,this.$process(args_node),this.$process(body_node)])}),1),$alias(self,"on_undef","process_regular_node"),$alias(self,"on_alias","process_regular_node"),$def(self,"$on_send",(function(node){var $a,arg_nodes,receiver_node=nil,method_name=nil;return receiver_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],arg_nodes=$slice.call($a,2),$truthy(receiver_node)&&(receiver_node=this.$process(receiver_node)),node.$updated(nil,[receiver_node,method_name].concat($to_a(this.$process_all(arg_nodes))))}),1),$alias(self,"on_csend","on_send"),$alias(self,"on_index","process_regular_node"),$alias(self,"on_indexasgn","process_regular_node"),$alias(self,"on_block","process_regular_node"),$alias(self,"on_lambda","process_regular_node"),$def(self,"$on_numblock",(function(node){var $a,method_call,max_numparam,body;return method_call=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],max_numparam=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],node.$updated(nil,[this.$process(method_call),max_numparam,this.$process(body)])}),1),$alias(self,"on_while","process_regular_node"),$alias(self,"on_while_post","process_regular_node"),$alias(self,"on_until","process_regular_node"),$alias(self,"on_until_post","process_regular_node"),$alias(self,"on_for","process_regular_node"),$alias(self,"on_return","process_regular_node"),$alias(self,"on_break","process_regular_node"),$alias(self,"on_next","process_regular_node"),$alias(self,"on_redo","process_regular_node"),$alias(self,"on_retry","process_regular_node"),$alias(self,"on_super","process_regular_node"),$alias(self,"on_yield","process_regular_node"),$alias(self,"on_defined?","process_regular_node"),$alias(self,"on_not","process_regular_node"),$alias(self,"on_and","process_regular_node"),$alias(self,"on_or","process_regular_node"),$alias(self,"on_if","process_regular_node"),$alias(self,"on_when","process_regular_node"),$alias(self,"on_case","process_regular_node"),$alias(self,"on_iflipflop","process_regular_node"),$alias(self,"on_eflipflop","process_regular_node"),$alias(self,"on_match_current_line","process_regular_node"),$alias(self,"on_match_with_lvasgn","process_regular_node"),$alias(self,"on_resbody","process_regular_node"),$alias(self,"on_rescue","process_regular_node"),$alias(self,"on_ensure","process_regular_node"),$alias(self,"on_begin","process_regular_node"),$alias(self,"on_kwbegin","process_regular_node"),$alias(self,"on_preexe","process_regular_node"),$alias(self,"on_postexe","process_regular_node"),$alias(self,"on_case_match","process_regular_node"),$alias(self,"on_in_match","process_regular_node"),$alias(self,"on_match_pattern","process_regular_node"),$alias(self,"on_match_pattern_p","process_regular_node"),$alias(self,"on_in_pattern","process_regular_node"),$alias(self,"on_if_guard","process_regular_node"),$alias(self,"on_unless_guard","process_regular_node"),$alias(self,"on_match_var","process_variable_node"),$alias(self,"on_match_rest","process_regular_node"),$alias(self,"on_pin","process_regular_node"),$alias(self,"on_match_alt","process_regular_node"),$alias(self,"on_match_as","process_regular_node"),$alias(self,"on_array_pattern","process_regular_node"),$alias(self,"on_array_pattern_with_tail","process_regular_node"),$alias(self,"on_hash_pattern","process_regular_node"),$alias(self,"on_const_pattern","process_regular_node"),$alias(self,"on_find_pattern","process_regular_node"),$def(self,"$process_variable_node",(function(node){return this.$warn("Parser::AST::Processor#process_variable_node is deprecated as a public API and will be removed. Please use Parser::AST::Processor#on_var instead."),this.$on_var(node)}),1),$def(self,"$process_var_asgn_node",(function(node){return this.$warn("Parser::AST::Processor#process_var_asgn_node is deprecated as a public API and will be removed. Please use Parser::AST::Processor#on_vasgn instead."),this.$on_vasgn(node)}),1),$def(self,"$process_argument_node",(function(node){return this.$warn("Parser::AST::Processor#process_argument_node is deprecated as a public API and will be removed. Please use Parser::AST::Processor#on_argument instead."),this.$on_argument(node)}),1),$def(self,"$on_empty_else",(function(node){return node}),1)}($nesting[0],$$$($$$("AST"),"Processor"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/meta"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set;return Opal.add_stubs("freeze,to_set"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Meta")].concat($parent_nesting);return $const_set($nesting[0],"NODE_TYPES",["true","false","nil","int","float","str","dstr","sym","dsym","xstr","regopt","regexp","array","splat","pair","kwsplat","hash","irange","erange","self","lvar","ivar","cvar","gvar","const","defined?","lvasgn","ivasgn","cvasgn","gvasgn","casgn","mlhs","masgn","op_asgn","and_asgn","ensure","rescue","arg_expr","or_asgn","back_ref","nth_ref","match_with_lvasgn","match_current_line","module","class","sclass","def","defs","undef","alias","args","cbase","arg","optarg","restarg","blockarg","block_pass","kwarg","kwoptarg","kwrestarg","kwnilarg","send","csend","super","zsuper","yield","block","and","not","or","if","when","case","while","until","while_post","until_post","for","break","next","redo","return","resbody","kwbegin","begin","retry","preexe","postexe","iflipflop","eflipflop","shadowarg","complex","rational","__FILE__","__LINE__","__ENCODING__","ident","lambda","indexasgn","index","procarg0","restarg_expr","blockarg_expr","objc_kwarg","objc_restarg","objc_varargs","numargs","numblock","forward_args","forwarded_args","forward_arg","case_match","in_match","in_pattern","match_var","pin","match_alt","match_as","match_rest","array_pattern","match_with_trailing_comma","array_pattern_with_tail","hash_pattern","const_pattern","if_guard","unless_guard","match_nil_pattern","empty_else","find_pattern","kwargs","match_pattern_p","match_pattern"].$to_set().$freeze())}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/buffer"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$enc=Opal.enc,$truthy=Opal.truthy,$gvars=Opal.gvars,$eqeq=Opal.eqeq,$neqeq=Opal.neqeq,$defs=Opal.defs,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$not=Opal.not,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$rb_lt=Opal.rb_lt,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("attr_reader,empty?,=~,start_with?,freeze,==,[],!=,nil?,match,find,encoding,recognize_encoding,force_encoding,encode,to_s,source=,-,open,read,raise,frozen?,dup,reencode_string,class,valid_encoding?,name,raw_source=,gsub,!,ascii_only?,line_index_for_position,line_begins,+,to_a,lines,end_with?,<<,each,chomp!,fetch,source_lines,>=,size,<,new,source,source_range,private,index,bsearch,[]=,method_defined?,bsearch_index"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Buffer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.name=$proto.source=$proto.slice_source=$proto.first_line=$proto.lines=$proto.source_range=$proto.line_begins=$proto.line_index_for_position=$proto.line_range=nil,self.$attr_reader("name","first_line"),$const_set($nesting[0],"ENCODING_RE",$regexp([$enc("[\\s#](en)?coding\\s*[:=]\\s*","ASCII-8BIT"),$enc("(","ASCII-8BIT"),$enc("","ASCII-8BIT"),$enc("(utf8-mac)","ASCII-8BIT"),$enc("|","ASCII-8BIT"),$enc("","ASCII-8BIT"),$enc("([A-Za-z0-9_-]+?)(-unix|-dos|-mac)","ASCII-8BIT"),$enc("|","ASCII-8BIT"),$enc("([A-Za-z0-9_-]+)","ASCII-8BIT"),$enc(")","ASCII-8BIT"),$enc("","ASCII-8BIT")])),$defs(self,"$recognize_encoding",(function(string){var $a,$b,second_line,first_line=nil,encoding_line=nil,result=nil,$ret_or_1=nil,$ret_or_2=nil;return $truthy(string["$empty?"]())?nil:(string["$=~"](/^(.*)\n?(.*\n)?/),second_line=($a=[($b=$gvars["~"])===nil?nil:$b["$[]"](1),($b=$gvars["~"])===nil?nil:$b["$[]"](2)])[1],$truthy((first_line=$a[0])["$start_with?"]($enc("","ASCII-8BIT").$freeze()))?$$$($$("Encoding"),"UTF_8"):(encoding_line=$eqeq(first_line["$[]"](0,2),$enc("#!","ASCII-8BIT").$freeze())?second_line:first_line,$truthy(encoding_line["$nil?"]())||$neqeq(encoding_line["$[]"](0),$enc("#","ASCII-8BIT"))?nil:$truthy(result=$$("ENCODING_RE").$match(encoding_line))?$$("Encoding").$find($truthy($ret_or_1=$truthy($ret_or_2=result["$[]"](3))?$ret_or_2:result["$[]"](4))?$ret_or_1:result["$[]"](6)):nil))}),1),$defs(self,"$reencode_string",(function(input){var original_encoding,detected_encoding=nil;return original_encoding=input.$encoding(),detected_encoding=this.$recognize_encoding(input.$force_encoding($$$($$("Encoding"),"BINARY"))),$truthy(detected_encoding["$nil?"]())?input.$force_encoding(original_encoding):$eqeq(detected_encoding,$$$($$("Encoding"),"BINARY"))?input:input.$force_encoding(detected_encoding).$encode($$$($$("Encoding"),"UTF_8"))}),1),$def(self,"$initialize",(function(name,$a,$b){var $post_args,$kwargs,first_line,source,self=this,$writer=nil;if($post_args=Opal.slice.call(arguments,1),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return $post_args.length>0&&(first_line=$post_args.shift()),null==first_line&&(first_line=1),null==(source=$kwargs.$$smap.source)&&(source=nil),self.name=name.$to_s(),self.source=nil,self.first_line=first_line,self.lines=nil,self.line_begins=nil,self.slice_source=nil,self.line_index_for_position=$hash2([],{}),$truthy(source)?($send(self,"source=",$to_a($writer=[source])),$writer[$rb_minus($writer.length,1)]):nil}),-2),$def(self,"$read",(function(){return $send($$("File"),"open",[this.name,$enc("rb","ASCII-8BIT")],(function $$1(io){var $writer,self=null==$$1.$$s?this:$$1.$$s;return null==io&&(io=nil),$writer=[io.$read()],$send(self,"source=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),this}),0),$def(self,"$source",(function(){return $truthy(this.source["$nil?"]())&&this.$raise($$("RuntimeError"),$enc("Cannot extract source from uninitialized Source::Buffer","ASCII-8BIT")),this.source}),0),$def(self,"$source=",(function(input){var $writer;return $truthy(input["$frozen?"]())&&(input=input.$dup()),input=this.$class().$reencode_string(input),$truthy(input["$valid_encoding?"]())||this.$raise($$("EncodingError"),$enc("invalid byte sequence in ","ASCII-8BIT")+input.$encoding().$name()),$send(this,"raw_source=",$to_a($writer=[input])),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$raw_source=",(function(input){return $truthy(this.source)&&this.$raise($$("ArgumentError"),$enc("Source::Buffer is immutable","ASCII-8BIT")),this.source=input.$gsub($enc("\r\n","ASCII-8BIT").$freeze(),$enc("\n","ASCII-8BIT").$freeze()).$freeze(),$not(this.source["$ascii_only?"]())&&$neqeq(this.source.$encoding(),$$$($$("Encoding"),"UTF_32LE"))&&$neqeq(this.source.$encoding(),$$$($$("Encoding"),"BINARY"))?this.slice_source=this.source.$encode($$$($$("Encoding"),"UTF_32LE")):nil}),1),$def(self,"$slice",(function(range){return $truthy(this.slice_source["$nil?"]())?this.source["$[]"](range):this.slice_source["$[]"](range).$encode(this.source.$encoding())}),1),$def(self,"$decompose_position",(function(position){var line_index,line_begin;return line_index=this.$line_index_for_position(position),line_begin=this.$line_begins()["$[]"](line_index),[$rb_plus(this.first_line,line_index),$rb_minus(position,line_begin)]}),1),$def(self,"$line_for_position",(function(position){return $rb_plus(this.$line_index_for_position(position),this.first_line)}),1),$def(self,"$column_for_position",(function(position){var line_index;return line_index=this.$line_index_for_position(position),$rb_minus(position,this.$line_begins()["$[]"](line_index))}),1),$def(self,"$source_lines",(function(){var $ret_or_1,lines=nil;return this.lines=$truthy($ret_or_1=this.lines)?$ret_or_1:(lines=this.source.$lines().$to_a(),$truthy(this.source["$end_with?"]($enc("\n","ASCII-8BIT").$freeze()))&&lines["$<<"]($enc("","ASCII-8BIT").$dup()),$send(lines,"each",[],(function(line){return null==line&&(line=nil),line["$chomp!"]($enc("\n","ASCII-8BIT").$freeze()),line.$freeze()}),1),lines.$freeze())}),0),$def(self,"$source_line",(function(lineno){return this.$source_lines().$fetch($rb_minus(lineno,this.first_line)).$dup()}),1),$def(self,"$line_range",(function(lineno){var index;return index=$rb_minus(lineno,this.first_line),$truthy($rb_lt(index,0))||$truthy($rb_ge($rb_plus(index,1),this.$line_begins().$size()))?this.$raise($$("IndexError"),$enc("Parser::Source::Buffer: range for line ","ASCII-8BIT")+""+lineno+$enc(" requested, valid line numbers are ","ASCII-8BIT")+this.first_line+$enc("..","ASCII-8BIT")+$rb_minus($rb_plus(this.first_line,this.$line_begins().$size()),2)):$$("Range").$new(this,this.$line_begins()["$[]"](index),$rb_minus(this.$line_begins()["$[]"]($rb_plus(index,1)),1))}),1),$def(self,"$source_range",(function(){var $ret_or_1;return this.source_range=$truthy($ret_or_1=this.source_range)?$ret_or_1:$$("Range").$new(this,0,this.$source().$size())}),0),$def(self,"$last_line",(function(){return $rb_minus($rb_plus(this.$line_begins().$size(),this.first_line),2)}),0),$def(self,"$freeze",(function $$freeze(){var $yield=$$freeze.$$p||nil;return delete $$freeze.$$p,this.$source_lines(),this.$line_begins(),this.$source_range(),$send2(this,$find_super(this,"freeze",$$freeze,!1,!0),"freeze",[],$yield)}),0),$def(self,"$inspect",(function(){return $enc("#<","ASCII-8BIT")+this.$class()+$enc(" ","ASCII-8BIT")+this.$name()+$enc(">","ASCII-8BIT")}),0),self.$private(),$def(self,"$line_begins",(function(){var $ret_or_1,self=this,begins=nil,index=nil;return self.line_begins=$truthy($ret_or_1=self.line_begins)?$ret_or_1:(begins=[0],index=0,function(){for(;$truthy(index=self.source.$index($enc("\n","ASCII-8BIT").$freeze(),index));)index=$rb_plus(index,1),begins["$<<"](index)}(),begins["$<<"]($rb_plus(self.source.$size(),1)),begins)}),0),$def(self,"$line_index_for_position",(function(position){var $ret_or_1,index=nil,$writer=nil;return $truthy($ret_or_1=this.line_index_for_position["$[]"](position))?$ret_or_1:(index=$rb_minus(this.$bsearch(this.$line_begins(),position),1),$truthy(this.line_index_for_position["$frozen?"]())||($writer=[position,index],$send(this.line_index_for_position,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),index)}),1),$truthy($$("Array")["$method_defined?"]("bsearch_index"))?$def(self,"$bsearch",(function(line_begins,position){var $ret_or_1;return $truthy($ret_or_1=$send(line_begins,"bsearch_index",[],(function(line_begin){return null==line_begin&&(line_begin=nil),$rb_lt(position,line_begin)}),1))?$ret_or_1:$rb_minus(line_begins.$size(),1)}),2):$def(self,"$bsearch",(function(line_begins,position){var $ret_or_1=nil;return this.line_range=$truthy($ret_or_1=this.line_range)?$ret_or_1:Opal.Range.$new(0,line_begins.$size(),!0),$truthy($ret_or_1=$send(this.line_range,"bsearch",[],(function(i){return null==i&&(i=nil),$rb_lt(position,line_begins["$[]"](i))}),1))?$ret_or_1:$rb_minus(line_begins.$size(),1)}),2)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/range"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$rb_lt=Opal.rb_lt,$def=Opal.def,$hash2=Opal.hash2,$rb_minus=Opal.rb_minus,$alias=Opal.alias,$neqeq=Opal.neqeq,$to_ary=Opal.to_ary,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$rb_times=Opal.rb_times,$eqeq=Opal.eqeq;return Opal.add_stubs("include,attr_reader,<,raise,nil?,freeze,with,-,line_for_position,alias_method,column_for_position,!=,line,last_line,inspect,column,last_column,source_line,slice,begin_pos,end_pos,include?,source,to_a,decompose_position,join,name,+,new,min,max,disjoint?,empty?,>=,!,<=>,contains?,overlaps?,==,*,source_buffer,is_a?,nonzero?,hash"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Range"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.begin_pos=$proto.end_pos=$proto.source_buffer=nil,self.$include($$("Comparable")),self.$attr_reader("source_buffer"),self.$attr_reader("begin_pos","end_pos"),$def(self,"$initialize",(function(source_buffer,begin_pos,end_pos){var $a;return $truthy($rb_lt(end_pos,begin_pos))&&this.$raise($$("ArgumentError"),"Parser::Source::Range: end_pos must not be less than begin_pos"),$truthy(source_buffer["$nil?"]())&&this.$raise($$("ArgumentError"),"Parser::Source::Range: source_buffer must not be nil"),this.source_buffer=source_buffer,$a=[begin_pos,end_pos],this.begin_pos=$a[0],this.end_pos=$a[1],this.$freeze()}),3),$def(self,"$begin",(function(){return this.$with($hash2(["end_pos"],{end_pos:this.begin_pos}))}),0),$def(self,"$end",(function(){return this.$with($hash2(["begin_pos"],{begin_pos:this.end_pos}))}),0),$def(self,"$size",(function(){return $rb_minus(this.end_pos,this.begin_pos)}),0),$alias(self,"length","size"),$def(self,"$line",(function(){return this.source_buffer.$line_for_position(this.begin_pos)}),0),self.$alias_method("first_line","line"),$def(self,"$column",(function(){return this.source_buffer.$column_for_position(this.begin_pos)}),0),$def(self,"$last_line",(function(){return this.source_buffer.$line_for_position(this.end_pos)}),0),$def(self,"$last_column",(function(){return this.source_buffer.$column_for_position(this.end_pos)}),0),$def(self,"$column_range",(function(){return $neqeq(this.$line(),this.$last_line())&&this.$raise($$("RangeError"),this.$inspect()+" spans more than one line"),Opal.Range.$new(this.$column(),this.$last_column(),!0)}),0),$def(self,"$source_line",(function(){return this.source_buffer.$source_line(this.$line())}),0),$def(self,"$source",(function(){return this.source_buffer.$slice(Opal.Range.$new(this.$begin_pos(),this.$end_pos(),!0))}),0),$def(self,"$is?",(function($a){var self=this;return Opal.slice.call(arguments)["$include?"](self.$source())}),-1),$def(self,"$to_a",(function(){return Opal.Range.$new(this.begin_pos,this.end_pos,!0).$to_a()}),0),$def(self,"$to_range",(function(){return Opal.Range.$new(this.$begin_pos(),this.$end_pos(),!0)}),0),$def(self,"$to_s",(function(){var $a,$b,column,line=nil;return $b=this.source_buffer.$decompose_position(this.begin_pos),line=null==($a=$to_ary($b))[0]?nil:$a[0],column=null==$a[1]?nil:$a[1],[this.source_buffer.$name(),line,$rb_plus(column,1)].$join(":")}),0),$def(self,"$with",(function($kwargs){var begin_pos,end_pos;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(begin_pos=$kwargs.$$smap.begin_pos)&&(begin_pos=this.begin_pos),null==(end_pos=$kwargs.$$smap.end_pos)&&(end_pos=this.end_pos),$$("Range").$new(this.source_buffer,begin_pos,end_pos)}),-1),$def(self,"$adjust",(function($kwargs){var begin_pos,end_pos;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(begin_pos=$kwargs.$$smap.begin_pos)&&(begin_pos=0),null==(end_pos=$kwargs.$$smap.end_pos)&&(end_pos=0),$$("Range").$new(this.source_buffer,$rb_plus(this.begin_pos,begin_pos),$rb_plus(this.end_pos,end_pos))}),-1),$def(self,"$resize",(function(new_size){return this.$with($hash2(["end_pos"],{end_pos:$rb_plus(this.begin_pos,new_size)}))}),1),$def(self,"$join",(function(other){return $$("Range").$new(this.source_buffer,[this.begin_pos,other.$begin_pos()].$min(),[this.end_pos,other.$end_pos()].$max())}),1),$def(self,"$intersect",(function(other){return $truthy(this["$disjoint?"](other))?nil:$$("Range").$new(this.source_buffer,[this.begin_pos,other.$begin_pos()].$max(),[this.end_pos,other.$end_pos()].$min())}),1),$def(self,"$disjoint?",(function(other){var $ret_or_1=nil;return $truthy(this["$empty?"]())&&$truthy(other["$empty?"]())?this.begin_pos["$!="](other.$begin_pos()):$truthy($ret_or_1=$rb_ge(this.begin_pos,other.$end_pos()))?$ret_or_1:$rb_ge(other.$begin_pos(),this.end_pos)}),1),$def(self,"$overlaps?",(function(other){return this["$disjoint?"](other)["$!"]()}),1),$def(self,"$contains?",(function(other){return $rb_ge($rb_plus(other.$begin_pos()["$<=>"](this.begin_pos),this.end_pos["$<=>"](other.$end_pos())),$truthy(other["$empty?"]())?2:1)}),1),$def(self,"$contained?",(function(other){return other["$contains?"](this)}),1),$def(self,"$crossing?",(function(other){return!!$truthy(this["$overlaps?"](other))&&$rb_times(this.begin_pos["$<=>"](other.$begin_pos()),this.end_pos["$<=>"](other.$end_pos()))["$=="](1)}),1),$def(self,"$empty?",(function(){return this.begin_pos["$=="](this.end_pos)}),0),$def(self,"$<=>",(function(other){var $ret_or_1;return $truthy(other["$is_a?"]($$$($$$($$$("Parser"),"Source"),"Range")))&&$eqeq(this.source_buffer,other.$source_buffer())?$truthy($ret_or_1=this.begin_pos["$<=>"](other.$begin_pos())["$nonzero?"]())?$ret_or_1:this.end_pos["$<=>"](other.$end_pos()):nil}),1),self.$alias_method("eql?","=="),$def(self,"$hash",(function(){return[this.source_buffer,this.begin_pos,this.end_pos].$hash()}),0),$def(self,"$inspect",(function(){return"#"}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/comment"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$defs=Opal.defs,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("attr_reader,alias_method,new,associate,associate_locations,associate_by_identity,freeze,source,start_with?,text,==,type,is_a?,location,to_s,expression,inspect"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Comment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.location=nil,self.$attr_reader("text"),self.$attr_reader("location"),self.$alias_method("loc","location"),$defs(self,"$associate",(function(ast,comments){return $$("Associator").$new(ast,comments).$associate()}),2),$defs(self,"$associate_locations",(function(ast,comments){return $$("Associator").$new(ast,comments).$associate_locations()}),2),$defs(self,"$associate_by_identity",(function(ast,comments){return $$("Associator").$new(ast,comments).$associate_by_identity()}),2),$def(self,"$initialize",(function(range){return this.location=$$$($$$($$("Parser"),"Source"),"Map").$new(range),this.text=range.$source().$freeze(),this.$freeze()}),1),$def(self,"$type",(function(){return $truthy(this.$text()["$start_with?"]("#".$freeze()))?"inline":$truthy(this.$text()["$start_with?"]("=begin".$freeze()))?"document":nil}),0),$def(self,"$inline?",(function(){return this.$type()["$=="]("inline")}),0),$def(self,"$document?",(function(){return this.$type()["$=="]("document")}),0),$def(self,"$==",(function(other){var $ret_or_1;return $truthy($ret_or_1=other["$is_a?"]($$$($$("Source"),"Comment")))?this.location["$=="](other.$location()):$ret_or_1}),1),$def(self,"$inspect",(function(){return"#"}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/comment/associator"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$rb_le=Opal.rb_le,$rb_plus=Opal.rb_plus,$not=Opal.not;return Opal.add_stubs("attr_accessor,do_associate,private,freeze,[],include?,type,sort_by,compact,children,begin_pos,expression,loc,select,is_a?,new,[]=,-,==,compare_by_identity,advance_comment,advance_through_directives,visit,process_leading_comments,location,<=,line,last_line,each,children_in_source_order,process_trailing_comments,current_comment_before?,associate_and_advance_comment,current_comment_before_end?,current_comment_decorates?,+,!,end_pos,<<,start_with?,text,=~"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Associator"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.map_using=$proto.mapping=$proto.skip_directives=$proto.ast=$proto.current_comment=$proto.comment_num=$proto.comments=nil,self.$attr_accessor("skip_directives"),$def(self,"$initialize",(function(ast,comments){return this.ast=ast,this.comments=comments,this.skip_directives=!0}),2),$def(self,"$associate",(function(){return this.map_using="eql",this.$do_associate()}),0),$def(self,"$associate_locations",(function(){return this.map_using="location",this.$do_associate()}),0),$def(self,"$associate_by_identity",(function(){return this.map_using="identity",this.$do_associate()}),0),self.$private(),$const_set($nesting[0],"POSTFIX_TYPES",$$("Set")["$[]"]("if","while","while_post","until","until_post","masgn").$freeze()),$def(self,"$children_in_source_order",(function(node){return $truthy($$("POSTFIX_TYPES")["$include?"](node.$type()))?$send(node.$children().$compact(),"sort_by",[],(function(child){return null==child&&(child=nil),child.$loc().$expression().$begin_pos()}),1):$send(node.$children(),"select",[],(function(child){var $ret_or_1,$ret_or_2;return null==child&&(child=nil),$truthy($ret_or_1=$truthy($ret_or_2=child["$is_a?"]($$$($$("AST"),"Node")))?child.$loc():$ret_or_2)?child.$loc().$expression():$ret_or_1}),1)}),1),$def(self,"$do_associate",(function(){return this.mapping=$send($$("Hash"),"new",[],(function(h,k){var $writer;return null==h&&(h=nil),null==k&&(k=nil),$send(h,"[]=",$to_a($writer=[k,[]])),$writer[$rb_minus($writer.length,1)]}),2),$eqeq(this.map_using,"identity")&&this.mapping.$compare_by_identity(),this.comment_num=-1,this.$advance_comment(),$truthy(this.skip_directives)&&this.$advance_through_directives(),$truthy(this.ast)&&this.$visit(this.ast),this.mapping}),0),$def(self,"$visit",(function(node){var node_loc=nil;return this.$process_leading_comments(node),$truthy(this.current_comment)?(node_loc=node.$location(),$truthy($rb_le(this.current_comment.$location().$line(),node_loc.$last_line()))||$truthy(node_loc["$is_a?"]($$$($$("Map"),"Heredoc")))?($send(this.$children_in_source_order(node),"each",[],(function $$4(child){return null==child&&(child=nil),(null==$$4.$$s?this:$$4.$$s).$visit(child)}),{$$arity:1,$$s:this}),this.$process_trailing_comments(node)):nil):nil}),1),$def(self,"$process_leading_comments",(function(node){if($eqeq(node.$type(),"begin"))return nil;for(;$truthy(this["$current_comment_before?"](node));)this.$associate_and_advance_comment(node)}),1),$def(self,"$process_trailing_comments",(function(node){for(;$truthy(this["$current_comment_before_end?"](node));)this.$associate_and_advance_comment(node);for(;$truthy(this["$current_comment_decorates?"](node));)this.$associate_and_advance_comment(node)}),1),$def(self,"$advance_comment",(function(){return this.comment_num=$rb_plus(this.comment_num,1),this.current_comment=this.comments["$[]"](this.comment_num)}),0),$def(self,"$current_comment_before?",(function(node){var comment_loc=nil,node_loc=nil;return!$not(this.current_comment)&&(comment_loc=this.current_comment.$location().$expression(),node_loc=node.$location().$expression(),$rb_le(comment_loc.$end_pos(),node_loc.$begin_pos()))}),1),$def(self,"$current_comment_before_end?",(function(node){var comment_loc=nil,node_loc=nil;return!$not(this.current_comment)&&(comment_loc=this.current_comment.$location().$expression(),node_loc=node.$location().$expression(),$rb_le(comment_loc.$end_pos(),node_loc.$end_pos()))}),1),$def(self,"$current_comment_decorates?",(function(node){return!$not(this.current_comment)&&this.current_comment.$location().$line()["$=="](node.$location().$last_line())}),1),$def(self,"$associate_and_advance_comment",(function(node){var key;return key=$eqeq(this.map_using,"location")?node.$location():node,this.mapping["$[]"](key)["$<<"](this.current_comment),this.$advance_comment()}),1),$const_set($nesting[0],"MAGIC_COMMENT_RE",/^#\s*(-\*-|)\s*(frozen_string_literal|warn_indent|warn_past_scope):.*\1$/),$def(self,"$advance_through_directives",(function(){return $truthy(this.current_comment)&&$truthy(this.current_comment.$text()["$start_with?"]("#!".$freeze()))&&this.$advance_comment(),$truthy(this.current_comment)&&$truthy(this.current_comment.$text()["$=~"]($$("MAGIC_COMMENT_RE")))&&this.$advance_comment(),$truthy(this.current_comment)&&$truthy(this.current_comment.$text()["$=~"]($$$($$("Buffer"),"ENCODING_RE")))?this.$advance_comment():nil}),0)}(Opal.$r($nesting)("Comment"),0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$gvars=Opal.gvars,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$rb_plus=Opal.rb_plus,$truthy=Opal.truthy,$not=Opal.not,$neqeq=Opal.neqeq,$rb_le=Opal.rb_le,$rb_ge=Opal.rb_ge,$rb_lt=Opal.rb_lt,$hash2=Opal.hash2,$const_set=Opal.const_set;return Opal.add_stubs("attr_reader,warn_of_deprecation,class,new,lambda,puts,render,consumer=,-,append,freeze,begin,end,+,in_transaction?,raise,dup,source,each,sort,begin_pos,range,length,replacement,[]=,private,empty?,clobbered_insertion?,!,allow_multiple_insertions?,raise_clobber_error,record_insertion,adjacent_updates?,find,overlaps?,replace_compatible_with_insertion?,merge_actions!,<<,active_queue,adjacent_insertions?,merge_actions,delete,can_merge?,record_replace,|,active_insertions,active_insertions=,active_clobber,clobbered_position_mask,active_clobber=,size,!=,&,<=,end_pos,adjacent_insertion_mask,select,adjacent?,adjacent_position_mask,>=,==,[],all?,intersect,nil?,max,sort_by,push,join,first,max_by,merge_replacements,replace_actions,disjoint?,<,process,extend"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Rewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.diagnostics=$proto.insert_before_multi_order=$proto.insert_after_multi_order=$proto.source_buffer=$proto.queue=$proto.clobber=$proto.insertions=$proto.pending_queue=$proto.pending_clobber=$proto.pending_insertions=nil,self.$attr_reader("source_buffer"),self.$attr_reader("diagnostics"),$def(self,"$initialize",(function(source_buffer){var $writer;return this.$class().$warn_of_deprecation(),this.diagnostics=$$$($$("Diagnostic"),"Engine").$new(),$writer=[$send(this,"lambda",[],(function(diag){return null==$gvars.stderr&&($gvars.stderr=nil),null==diag&&(diag=nil),$gvars.stderr.$puts(diag.$render())}),1)],$send(this.diagnostics,"consumer=",$to_a($writer)),$rb_minus($writer.length,1),this.source_buffer=source_buffer,this.queue=[],this.clobber=0,this.insertions=0,this.insert_before_multi_order=0,this.insert_after_multi_order=0,this.pending_queue=nil,this.pending_clobber=nil,this.pending_insertions=nil}),1),$def(self,"$remove",(function(range){return this.$append($$$($$("Rewriter"),"Action").$new(range,"".$freeze()))}),1),$def(self,"$insert_before",(function(range,content){return this.$append($$$($$("Rewriter"),"Action").$new(range.$begin(),content))}),2),$def(self,"$wrap",(function(range,before,after){return this.$append($$$($$("Rewriter"),"Action").$new(range.$begin(),before)),this.$append($$$($$("Rewriter"),"Action").$new(range.$end(),after))}),3),$def(self,"$insert_before_multi",(function(range,content){return this.insert_before_multi_order=$rb_minus(this.insert_before_multi_order,1),this.$append($$$($$("Rewriter"),"Action").$new(range.$begin(),content,!0,this.insert_before_multi_order))}),2),$def(self,"$insert_after",(function(range,content){return this.$append($$$($$("Rewriter"),"Action").$new(range.$end(),content))}),2),$def(self,"$insert_after_multi",(function(range,content){return this.insert_after_multi_order=$rb_plus(this.insert_after_multi_order,1),this.$append($$$($$("Rewriter"),"Action").$new(range.$end(),content,!0,this.insert_after_multi_order))}),2),$def(self,"$replace",(function(range,content){return this.$append($$$($$("Rewriter"),"Action").$new(range,content))}),2),$def(self,"$process",(function(){var source,adjustment=nil;return $truthy(this["$in_transaction?"]())&&this.$raise("Do not call "+this.$class()+"#process inside a transaction"),adjustment=0,source=this.source_buffer.$source().$dup(),$send(this.queue.$sort(),"each",[],(function(action){var begin_pos,end_pos,$writer;return null==action&&(action=nil),begin_pos=$rb_plus(action.$range().$begin_pos(),adjustment),end_pos=$rb_plus(begin_pos,action.$range().$length()),$writer=[Opal.Range.$new(begin_pos,end_pos,!0),action.$replacement()],$send(source,"[]=",$to_a($writer)),$rb_minus($writer.length,1),adjustment=$rb_plus(adjustment,$rb_minus(action.$replacement().$length(),action.$range().$length()))}),1),source}),0),$def(self,"$transaction",(function $$transaction(){var $yield=$$transaction.$$p||nil,self=this;return delete $$transaction.$$p,function(){try{return $yield===nil&&self.$raise(self.$class()+"#transaction requires block"),$truthy(self["$in_transaction?"]())&&self.$raise("Nested transaction is not supported"),self.pending_queue=self.queue.$dup(),self.pending_clobber=self.clobber,self.pending_insertions=self.insertions,Opal.yieldX($yield,[]),self.queue=self.pending_queue,self.clobber=self.pending_clobber,self.insertions=self.pending_insertions,self}finally{self.pending_queue=nil,self.pending_clobber=nil,self.pending_insertions=nil}}()}),0),self.$private(),$def(self,"$append",(function(action){var range=nil,conflicting=nil,adjacent=nil,insertions=nil;if(range=action.$range(),$truthy(range["$empty?"]())){if($truthy(action.$replacement()["$empty?"]()))return this;$not(action["$allow_multiple_insertions?"]())&&$truthy(conflicting=this["$clobbered_insertion?"](range))&&this.$raise_clobber_error(action,[conflicting]),this.$record_insertion(range),$truthy(adjacent=this["$adjacent_updates?"](range))?(conflicting=$send(adjacent,"find",[],(function $$3(a){var $ret_or_1,self=null==$$3.$$s?this:$$3.$$s;return null==a&&(a=nil),$truthy($ret_or_1=a.$range()["$overlaps?"](range))?self["$replace_compatible_with_insertion?"](a,action)["$!"]():$ret_or_1}),{$$arity:1,$$s:this}),$truthy(conflicting)&&this.$raise_clobber_error(action,[conflicting]),this["$merge_actions!"](action,adjacent)):this.$active_queue()["$<<"](action)}else $truthy(insertions=this["$adjacent_insertions?"](range))&&$send(insertions,"each",[],(function $$4(insertion){var self=null==$$4.$$s?this:$$4.$$s;return null==insertion&&(insertion=nil),$truthy(range["$overlaps?"](insertion.$range()))&&$not(self["$replace_compatible_with_insertion?"](action,insertion))?self.$raise_clobber_error(action,[insertion]):(action=self.$merge_actions(action,[insertion]),self.$active_queue().$delete(insertion))}),{$$arity:1,$$s:this}),$truthy(adjacent=this["$adjacent_updates?"](range))?$truthy(this["$can_merge?"](action,adjacent))?(this.$record_replace(range),this["$merge_actions!"](action,adjacent)):this.$raise_clobber_error(action,adjacent):(this.$record_replace(range),this.$active_queue()["$<<"](action));return this}),1),$def(self,"$record_insertion",(function(range){var $writer;return $writer=[this.$active_insertions()["$|"](1["$<<"](range.$begin_pos()))],$send(this,"active_insertions=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$record_replace",(function(range){var $writer;return $writer=[this.$active_clobber()["$|"](this.$clobbered_position_mask(range))],$send(this,"active_clobber=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$clobbered_position_mask",(function(range){return $rb_minus(1["$<<"](range.$size()),1)["$<<"](range.$begin_pos())}),1),$def(self,"$adjacent_position_mask",(function(range){return $rb_minus(1["$<<"]($rb_plus(range.$size(),2)),1)["$<<"]($rb_minus(range.$begin_pos(),1))}),1),$def(self,"$adjacent_insertion_mask",(function(range){return $rb_minus(1["$<<"]($rb_plus(range.$size(),1)),1)["$<<"](range.$begin_pos())}),1),$def(self,"$clobbered_insertion?",(function(insertion){var insertion_pos;return insertion_pos=insertion.$begin_pos(),$neqeq(this.$active_insertions()["$&"](1["$<<"](insertion_pos)),0)?$send(this.$active_queue(),"find",[],(function(a){var $ret_or_1;return null==a&&(a=nil),$truthy($ret_or_1=$rb_le(a.$range().$begin_pos(),insertion_pos))?$rb_le(insertion_pos,a.$range().$end_pos()):$ret_or_1}),1):nil}),1),$def(self,"$adjacent_insertions?",(function(range){var result=nil;return $neqeq(this.$active_insertions()["$&"](this.$adjacent_insertion_mask(range)),0)?(result=$send(this.$active_queue(),"select",[],(function $$8(a){var $ret_or_1,self=null==$$8.$$s?this:$$8.$$s;return null==a&&(a=nil),$truthy($ret_or_1=a.$range()["$empty?"]())?self["$adjacent?"](range,a.$range()):$ret_or_1}),{$$arity:1,$$s:this}),$truthy(result["$empty?"]())?nil:result):nil}),1),$def(self,"$adjacent_updates?",(function(range){return $neqeq(this.$active_clobber()["$&"](this.$adjacent_position_mask(range)),0)?$send(this.$active_queue(),"select",[],(function $$10(a){return null==a&&(a=nil),(null==$$10.$$s?this:$$10.$$s)["$adjacent?"](range,a.$range())}),{$$arity:1,$$s:this}):nil}),1),$def(self,"$replace_compatible_with_insertion?",(function(replace,insertion){var $ret_or_1,$ret_or_2,offset=nil;return $truthy($ret_or_1=$truthy($ret_or_2=$rb_ge($rb_minus(replace.$replacement().$length(),replace.$range().$size()),insertion.$range().$size()))?offset=$rb_minus(insertion.$range().$begin_pos(),replace.$range().$begin_pos()):$ret_or_2)?replace.$replacement()["$[]"](offset,insertion.$replacement().$length())["$=="](insertion.$replacement()):$ret_or_1}),2),$def(self,"$can_merge?",(function(action,existing){var range=nil;return range=action.$range(),$send(existing,"all?",[],(function(other){var repl1_offset,repl2_offset,repl1_length,repl2_length,replacement2,overlap=nil,replacement1=nil,$ret_or_1=nil;return null==other&&(other=nil),overlap=range.$intersect(other.$range()),!!$truthy(overlap["$nil?"]())||(repl1_offset=$rb_minus(overlap.$begin_pos(),range.$begin_pos()),repl2_offset=$rb_minus(overlap.$begin_pos(),other.$range().$begin_pos()),repl1_length=[$rb_minus(other.$range().$length(),repl2_offset),$rb_minus(other.$replacement().$length(),repl2_offset)].$max(),repl2_length=[$rb_minus(range.$length(),repl1_offset),$rb_minus(action.$replacement().$length(),repl1_offset)].$max(),replacement1=$truthy($ret_or_1=action.$replacement()["$[]"](repl1_offset,repl1_length))?$ret_or_1:"".$freeze(),replacement2=$truthy($ret_or_1=other.$replacement()["$[]"](repl2_offset,repl2_length))?$ret_or_1:"".$freeze(),replacement1["$=="](replacement2))}),1)}),2),$def(self,"$merge_actions",(function(action,existing){var range,actions=nil;return range=(actions=$send(existing.$push(action),"sort_by",[],(function(a){return null==a&&(a=nil),[a.$range().$begin_pos(),a.$range().$end_pos()]}),1)).$first().$range().$join($send(actions,"max_by",[],(function(a){return null==a&&(a=nil),a.$range().$end_pos()}),1).$range()),$$$($$("Rewriter"),"Action").$new(range,this.$merge_replacements(actions))}),2),$def(self,"$merge_actions!",(function(action,existing){var new_action;return new_action=this.$merge_actions(action,existing),this.$active_queue().$delete(action),this.$replace_actions(existing,new_action)}),2),$def(self,"$merge_replacements",(function(actions){var result=nil,prev_act=nil;return result="".$dup(),prev_act=nil,$send(actions,"each",[],(function(act){var prev_end=nil,offset=nil;return null==act&&(act=nil),$not(prev_act)||$truthy(act.$range()["$disjoint?"](prev_act.$range()))?result["$<<"](act.$replacement()):(prev_end=[$rb_plus(prev_act.$range().$begin_pos(),prev_act.$replacement().$length()),prev_act.$range().$end_pos()].$max(),offset=$rb_minus(prev_end,act.$range().$begin_pos()),$truthy($rb_lt(offset,act.$replacement().$size()))&&result["$<<"](act.$replacement()["$[]"](Opal.Range.$new(offset,-1,!1)))),prev_act=act}),1),result}),1),$def(self,"$replace_actions",(function(old,updated){return $send(old,"each",[],(function $$18(act){return null==act&&(act=nil),(null==$$18.$$s?this:$$18.$$s).$active_queue().$delete(act)}),{$$arity:1,$$s:this}),this.$active_queue()["$<<"](updated)}),2),$def(self,"$raise_clobber_error",(function(action,existing){var diagnostic=nil;return diagnostic=$$("Diagnostic").$new("error","invalid_action",$hash2(["action"],{action:action}),action.$range()),this.diagnostics.$process(diagnostic),diagnostic=$$("Diagnostic").$new("note","clobbered",$hash2(["action"],{action:existing["$[]"](0)}),existing["$[]"](0).$range()),this.diagnostics.$process(diagnostic),this.$raise($$("ClobberingError"),"Parser::Source::Rewriter detected clobbering")}),2),$def(self,"$in_transaction?",(function(){return this.pending_queue["$nil?"]()["$!"]()}),0),$def(self,"$active_queue",(function(){var $ret_or_1;return $truthy($ret_or_1=this.pending_queue)?$ret_or_1:this.queue}),0),$def(self,"$active_clobber",(function(){var $ret_or_1;return $truthy($ret_or_1=this.pending_clobber)?$ret_or_1:this.clobber}),0),$def(self,"$active_insertions",(function(){var $ret_or_1;return $truthy($ret_or_1=this.pending_insertions)?$ret_or_1:this.insertions}),0),$def(self,"$active_clobber=",(function(value){return $truthy(this.pending_clobber)?this.pending_clobber=value:this.clobber=value}),1),$def(self,"$active_insertions=",(function(value){return $truthy(this.pending_insertions)?this.pending_insertions=value:this.insertions=value}),1),$def(self,"$adjacent?",(function(range1,range2){var $ret_or_1;return $truthy($ret_or_1=$rb_le(range1.$begin_pos(),range2.$end_pos()))?$rb_le(range2.$begin_pos(),range1.$end_pos()):$ret_or_1}),2),$const_set($nesting[0],"DEPRECATION_WARNING",["Parser::Source::Rewriter is deprecated.","Please update your code to use Parser::Source::TreeRewriter instead"].$join("\n").$freeze()),self.$extend($$("Deprecation"))}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/rewriter/action"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$eqeq=Opal.eqeq;return Opal.add_stubs("include,attr_reader,alias_method,freeze,<=>,begin_pos,range,zero?,order,empty?,==,length,inspect"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Action"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.replacement=$proto.range=nil,self.$include($$("Comparable")),self.$attr_reader("range","replacement","allow_multiple_insertions","order"),self.$alias_method("allow_multiple_insertions?","allow_multiple_insertions"),$def(self,"$initialize",(function(range,replacement,allow_multiple_insertions,order){return null==replacement&&(replacement=""),null==allow_multiple_insertions&&(allow_multiple_insertions=!1),null==order&&(order=0),this.range=range,this.replacement=replacement,this.allow_multiple_insertions=allow_multiple_insertions,this.order=order,this.$freeze()}),-2),$def(self,"$<=>",(function(other){var result=nil;return result=this.$range().$begin_pos()["$<=>"](other.$range().$begin_pos()),$truthy(result["$zero?"]())?this.$order()["$<=>"](other.$order()):result}),1),$def(self,"$to_s",(function(){return $eqeq(this.range.$length(),0)&&$truthy(this.replacement["$empty?"]())?"do nothing":$eqeq(this.range.$length(),0)?"insert "+this.replacement.$inspect():$truthy(this.replacement["$empty?"]())?"remove "+this.range.$length()+" character(s)":"replace "+this.range.$length()+" character(s) with "+this.replacement.$inspect()}),0)}(Opal.$r($nesting)("Rewriter"),0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/tree_rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$lambda=Opal.lambda,$gvars=Opal.gvars,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$const_set=Opal.const_set,$eqeqeq=Opal.eqeqeq,$range=Opal.range,$to_ary=Opal.to_ary,$rb_gt=(Opal.hash,Opal.rb_gt),$rb_lt=Opal.rb_lt,$slice=Opal.slice;return Opal.add_stubs("attr_reader,new,puts,render,consumer=,-,freeze,check_policy_validity,method,adjust,source_range,empty?,==,source_buffer,raise,combine,action_root,merge!,dup,contract,+,begin_pos,range,end_pos,check_range_validity,moved,to_s,replace,wrap,source,each,ordered_replacements,<<,[],length,join,nested_actions,class,name,action_summary,warn_of_deprecation,insert_before,insert_after,extend,protected,private,as_replacements,===,size,first,map,to_range,inspect,values,>,<,trigger_policy,process"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"TreeRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.diagnostics=$proto.source_buffer=$proto.enforcer=$proto.action_root=$proto.in_transaction=$proto.policy=nil,self.$attr_reader("source_buffer"),self.$attr_reader("diagnostics"),$def(self,"$initialize",(function(source_buffer,$kwargs){var crossing_deletions,different_replacements,swallowed_insertions,$writer,all_encompassing_range;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(crossing_deletions=$kwargs.$$smap.crossing_deletions)&&(crossing_deletions="accept"),null==(different_replacements=$kwargs.$$smap.different_replacements)&&(different_replacements="accept"),null==(swallowed_insertions=$kwargs.$$smap.swallowed_insertions)&&(swallowed_insertions="accept"),this.diagnostics=$$$($$("Diagnostic"),"Engine").$new(),$writer=[$lambda((function(diag){return null==$gvars.stderr&&($gvars.stderr=nil),null==diag&&(diag=nil),$gvars.stderr.$puts(diag.$render())}),1)],$send(this.diagnostics,"consumer=",$to_a($writer)),$rb_minus($writer.length,1),this.source_buffer=source_buffer,this.in_transaction=!1,this.policy=$hash2(["crossing_deletions","different_replacements","swallowed_insertions"],{crossing_deletions:crossing_deletions,different_replacements:different_replacements,swallowed_insertions:swallowed_insertions}).$freeze(),this.$check_policy_validity(),this.enforcer=this.$method("enforce_policy"),all_encompassing_range=this.source_buffer.$source_range().$adjust($hash2(["begin_pos","end_pos"],{begin_pos:-1,end_pos:1})),this.action_root=$$$($$("TreeRewriter"),"Action").$new(all_encompassing_range,this.enforcer)}),-2),$def(self,"$empty?",(function(){return this.action_root["$empty?"]()}),0),$def(self,"$merge!",(function(with$){return $eqeq(this.$source_buffer(),with$.$source_buffer())||this.$raise("TreeRewriter are not for the same source_buffer"),this.action_root=this.action_root.$combine(with$.$action_root()),this}),1),$def(self,"$merge",(function(with$){return this.$dup()["$merge!"](with$)}),1),$def(self,"$import!",(function(foreign_rewriter,$kwargs){var offset,merge_effective_range,merge_with,contracted=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(offset=$kwargs.$$smap.offset)&&(offset=0),$truthy(foreign_rewriter["$empty?"]())||(contracted=foreign_rewriter.$action_root().$contract(),merge_effective_range=$$$($$$($$$("Parser"),"Source"),"Range").$new(this.source_buffer,$rb_plus(contracted.$range().$begin_pos(),offset),$rb_plus(contracted.$range().$end_pos(),offset)),this.$check_range_validity(merge_effective_range),merge_with=contracted.$moved(this.source_buffer,offset),this.action_root=this.action_root.$combine(merge_with)),this}),-2),$def(self,"$replace",(function(range,content){return this.$combine(range,$hash2(["replacement"],{replacement:content}))}),2),$def(self,"$wrap",(function(range,insert_before,insert_after){return this.$combine(range,$hash2(["insert_before","insert_after"],{insert_before:insert_before.$to_s(),insert_after:insert_after.$to_s()}))}),3),$def(self,"$remove",(function(range){return this.$replace(range,"".$freeze())}),1),$def(self,"$insert_before",(function(range,content){return this.$wrap(range,content,nil)}),2),$def(self,"$insert_after",(function(range,content){return this.$wrap(range,nil,content)}),2),$def(self,"$process",(function(){var source=nil,chunks=nil,last_end=nil;return source=this.source_buffer.$source(),chunks=[],last_end=0,$send(this.action_root.$ordered_replacements(),"each",[],(function(range,replacement){return null==range&&(range=nil),null==replacement&&(replacement=nil),chunks["$<<"](source["$[]"](Opal.Range.$new(last_end,range.$begin_pos(),!0)))["$<<"](replacement),last_end=range.$end_pos()}),2),chunks["$<<"](source["$[]"](Opal.Range.$new(last_end,source.$length(),!0))),chunks.$join()}),0),$def(self,"$as_replacements",(function(){return this.action_root.$ordered_replacements()}),0),$def(self,"$as_nested_actions",(function(){return this.action_root.$nested_actions()}),0),$def(self,"$transaction",(function $$transaction(){var $yield=$$transaction.$$p||nil,self=this,previous=nil,restore_root=nil;return delete $$transaction.$$p,function(){try{return $yield===nil&&self.$raise(self.$class()+"#transaction requires block"),previous=self.in_transaction,self.in_transaction=!0,restore_root=self.action_root,Opal.yieldX($yield,[]),restore_root=nil,self}finally{$truthy(restore_root)&&(self.action_root=restore_root),self.in_transaction=previous}}()}),0),$def(self,"$in_transaction?",(function(){return this.in_transaction}),0),$def(self,"$inspect",(function(){return"#<"+this.$class()+" "+this.$source_buffer().$name()+": "+this.$action_summary()+">"}),0),$def(self,"$insert_before_multi",(function(range,text){return this.$class().$warn_of_deprecation(),this.$insert_before(range,text)}),2),$def(self,"$insert_after_multi",(function(range,text){return this.$class().$warn_of_deprecation(),this.$insert_after(range,text)}),2),$const_set($nesting[0],"DEPRECATION_WARNING",["TreeRewriter#insert_before_multi and insert_before_multi exist only for legacy compatibility.","Please update your code to use `wrap`, `insert_before` or `insert_after` instead."].$join("\n").$freeze()),self.$extend($$("Deprecation")),self.$protected(),self.$attr_reader("action_root"),self.$private(),$def(self,"$action_summary",(function(){var $ret_or_1,replacements=nil,suffix=nil,parts=nil;return replacements=this.$as_replacements(),$eqeqeq(0,$ret_or_1=replacements.$size())?"empty":($eqeqeq($range(1,3,!1),$ret_or_1)||(replacements=replacements.$first(3),suffix="…"),parts=$send(replacements,"map",[],(function($mlhs_tmp1){var $a,range=nil,str=nil;return null==$mlhs_tmp1&&($mlhs_tmp1=nil),range=null==($a=$to_ary($mlhs_tmp1))[0]?nil:$a[0],str=null==$a[1]?nil:$a[1],$truthy(str["$empty?"]())?"-"+range.$to_range():$eqeq(range.$size(),0)?"+"+str.$inspect()+"@"+range.$begin_pos():"^"+str.$inspect()+"@"+range.$to_range()}),{$$arity:1,$$has_top_level_mlhs_arg:!0}),$truthy(suffix)&&parts["$<<"](suffix),parts.$join(", "))}),0),$const_set($nesting[0],"ACTIONS",["accept","warn","raise"].$freeze()),$def(self,"$check_policy_validity",(function(){var invalid=nil;return invalid=$rb_minus(this.policy.$values(),$$("ACTIONS")),$truthy(invalid["$empty?"]())?nil:this.$raise($$("ArgumentError"),"Invalid policy: "+invalid.$join(", "))}),0),$def(self,"$combine",(function(range,attributes){var action;return range=this.$check_range_validity(range),action=$$$($$("TreeRewriter"),"Action").$new(range,this.enforcer,Opal.to_hash(attributes)),this.action_root=this.action_root.$combine(action),this}),2),$def(self,"$check_range_validity",(function(range){return($truthy($rb_lt(range.$begin_pos(),0))||$truthy($rb_gt(range.$end_pos(),this.source_buffer.$source().$size())))&&this.$raise($$("IndexError"),"The range "+range.$to_range()+" is outside the bounds of the source"),range}),1),$def(self,"$enforce_policy",(function $$enforce_policy(event){var values,$yield=$$enforce_policy.$$p||nil;return delete $$enforce_policy.$$p,$eqeq(this.policy["$[]"](event),"accept")?nil:$truthy(values=Opal.yieldX($yield,[]))?this.$trigger_policy(event,Opal.to_hash(values)):nil}),1),$const_set($nesting[0],"POLICY_TO_LEVEL",$hash2(["warn","raise"],{warn:"warning",raise:"error"}).$freeze()),$def(self,"$trigger_policy",(function(event,$kwargs){var range,conflict,arguments$,$a,action,$ret_or_1,diag=nil,highlights=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(range=$kwargs.$$smap.range)&&(range=this.$raise()),null==(conflict=$kwargs.$$smap.conflict)&&(conflict=nil),arguments$=Opal.kwrestargs($kwargs,{range:!0,conflict:!0}),action=$truthy($ret_or_1=this.policy["$[]"](event))?$ret_or_1:"raise",diag=$$$($$("Parser"),"Diagnostic").$new($$("POLICY_TO_LEVEL")["$[]"](action),event,arguments$,range),this.diagnostics.$process(diag),$truthy(conflict)&&(range=null==($a=$to_ary(conflict))[0]?nil:$a[0],highlights=$slice.call($a,1),diag=$$$($$("Parser"),"Diagnostic").$new($$("POLICY_TO_LEVEL")["$[]"](action),event+"_conflict",arguments$,range,highlights),this.diagnostics.$process(diag)),$eqeq(action,"raise")?this.$raise($$$($$("Parser"),"ClobberingError"),"Parser::Source::TreeRewriter detected clobbering"):nil}),-2)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/tree_rewriter/action"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$not=Opal.not,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$rb_gt=Opal.rb_gt,$rb_minus=Opal.rb_minus,$rb_ge=Opal.rb_ge,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_lt=Opal.rb_lt,$neqeq=Opal.neqeq;return Opal.add_stubs("attr_reader,freeze,empty?,do_combine,==,<<,begin,concat,flat_map,to_proc,end,!,insert_before,insert_after,replacement,raise,insertion?,with,begin_pos,range,first,children,end_pos,last,new,+,map,moved,protected,swallow,class,merge,place_in_hierarchy,analyse_hierarchy,[],fuse_deletions,combine_children,inject,size,bsearch,bsearch_child_index,>,-,>=,===,<=>,<=,check_fusible,<,shift,pop,compact!,each,call,call_enforcer_for_merge,!=,select"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super){var self=$klass($base,null,"Action"),$proto=self.$$prototype;return $proto.insert_before=$proto.insert_after=$proto.children=$proto.replacement=$proto.range=$proto.enforcer=nil,self.$attr_reader("range","replacement","insert_before","insert_after"),$def(self,"$initialize",(function(range,enforcer,$kwargs){var insert_before,replacement,insert_after,children,$a;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(insert_before=$kwargs.$$smap.insert_before)&&(insert_before=""),null==(replacement=$kwargs.$$smap.replacement)&&(replacement=nil),null==(insert_after=$kwargs.$$smap.insert_after)&&(insert_after=""),null==(children=$kwargs.$$smap.children)&&(children=[]),$a=[range,enforcer,children.$freeze(),insert_before.$freeze(),replacement,insert_after.$freeze()],this.range=$a[0],this.enforcer=$a[1],this.children=$a[2],this.insert_before=$a[3],this.replacement=$a[4],this.insert_after=$a[5],this.$freeze()}),-3),$def(self,"$combine",(function(action){return $truthy(action["$empty?"]())?this:this.$do_combine(action)}),1),$def(self,"$empty?",(function(){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.insert_before["$empty?"]())?this.insert_after["$empty?"]():$ret_or_3)?this.children["$empty?"]():$ret_or_2)?$truthy($ret_or_2=this.replacement["$=="](nil))?$ret_or_2:$truthy($ret_or_3=this.replacement["$empty?"]())?this.range["$empty?"]():$ret_or_3:$ret_or_1}),0),$def(self,"$ordered_replacements",(function(){var reps=nil;return reps=[],$truthy(this.insert_before["$empty?"]())||reps["$<<"]([this.range.$begin(),this.insert_before]),$truthy(this.replacement)&&reps["$<<"]([this.range,this.replacement]),reps.$concat($send(this.children,"flat_map",[],"ordered_replacements".$to_proc())),$truthy(this.insert_after["$empty?"]())||reps["$<<"]([this.range.$end(),this.insert_after]),reps}),0),$def(self,"$nested_actions",(function(){var actions=nil;return actions=[],($not(this.insert_before["$empty?"]())||$not(this.insert_after["$empty?"]()))&&actions["$<<"](["wrap",this.range,this.insert_before,this.insert_after]),$truthy(this.replacement)&&actions["$<<"](["replace",this.range,this.replacement]),actions.$concat($send(this.children,"flat_map",[],"nested_actions".$to_proc()))}),0),$def(self,"$insertion?",(function(){var $ret_or_1,$ret_or_2=nil;return $truthy($ret_or_1=$truthy($ret_or_2=this.$insert_before()["$empty?"]()["$!"]())?$ret_or_2:this.$insert_after()["$empty?"]()["$!"]())?$ret_or_1:$truthy($ret_or_2=this.$replacement())?this.$replacement()["$empty?"]()["$!"]():$ret_or_2}),0),$def(self,"$contract",(function(){var range;return $truthy(this["$empty?"]())&&this.$raise("Empty actions can not be contracted"),$truthy(this["$insertion?"]())?this:(range=this.range.$with($hash2(["begin_pos","end_pos"],{begin_pos:this.$children().$first().$range().$begin_pos(),end_pos:this.$children().$last().$range().$end_pos()})),this.$with($hash2(["range"],{range:range})))}),0),$def(self,"$moved",(function(source_buffer,offset){var moved_range;return moved_range=$$$($$$($$$("Parser"),"Source"),"Range").$new(source_buffer,$rb_plus(this.range.$begin_pos(),offset),$rb_plus(this.range.$end_pos(),offset)),this.$with($hash2(["range","children"],{range:moved_range,children:$send(this.$children(),"map",[],(function(child){return null==child&&(child=nil),child.$moved(source_buffer,offset)}),1)}))}),2),self.$protected(),self.$attr_reader("children"),$def(self,"$with",(function($kwargs){var range,enforcer,children,insert_before,replacement,insert_after;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(range=$kwargs.$$smap.range)&&(range=this.range),null==(enforcer=$kwargs.$$smap.enforcer)&&(enforcer=this.enforcer),null==(children=$kwargs.$$smap.children)&&(children=this.children),null==(insert_before=$kwargs.$$smap.insert_before)&&(insert_before=this.insert_before),null==(replacement=$kwargs.$$smap.replacement)&&(replacement=this.replacement),null==(insert_after=$kwargs.$$smap.insert_after)&&(insert_after=this.insert_after),$truthy(replacement)&&(children=this.$swallow(children)),this.$class().$new(range,enforcer,$hash2(["children","insert_before","replacement","insert_after"],{children:children,insert_before:insert_before,replacement:replacement,insert_after:insert_after}))}),-1),$def(self,"$do_combine",(function(action){return $eqeq(action.$range(),this.range)?this.$merge(action):this.$place_in_hierarchy(action)}),1),$def(self,"$place_in_hierarchy",(function(action){var family=nil,extra_sibbling=nil;return family=this.$analyse_hierarchy(action),$truthy(family["$[]"]("fusible"))?this.$fuse_deletions(action,family["$[]"]("fusible"),[].concat($to_a(family["$[]"]("sibbling_left"))).concat($to_a(family["$[]"]("child"))).concat($to_a(family["$[]"]("sibbling_right")))):(extra_sibbling=$truthy(family["$[]"]("parent"))?family["$[]"]("parent").$do_combine(action):$truthy(family["$[]"]("child"))?action.$with($hash2(["children","enforcer"],{children:family["$[]"]("child"),enforcer:this.enforcer})).$combine_children(action.$children()):action,this.$with($hash2(["children"],{children:[].concat($to_a(family["$[]"]("sibbling_left"))).concat([extra_sibbling]).concat($to_a(family["$[]"]("sibbling_right")))})))}),1),$def(self,"$combine_children",(function(more_children){return $send(more_children,"inject",[this],(function(parent,new_child){return null==parent&&(parent=nil),null==new_child&&(new_child=nil),parent.$place_in_hierarchy(new_child)}),2)}),1),$def(self,"$fuse_deletions",(function(action,fusible,other_sibblings){var fused_range,fused_deletion,without_fusible=nil;return without_fusible=this.$with($hash2(["children"],{children:other_sibblings})),fused_range=$send([action].concat($to_a(fusible)),"map",[],"range".$to_proc()).$inject("join"),fused_deletion=action.$with($hash2(["range"],{range:fused_range})),without_fusible.$do_combine(fused_deletion)}),3),$def(self,"$bsearch_child_index",(function $$bsearch_child_index(from){var size,$ret_or_1,$yield=$$bsearch_child_index.$$p||nil;return delete $$bsearch_child_index.$$p,null==from&&(from=0),size=this.children.$size(),$truthy($ret_or_1=$send(Opal.Range.$new(from,size,!0),"bsearch",[],(function $$6(i){var self=null==$$6.$$s?this:$$6.$$s;return null==self.children&&(self.children=nil),null==i&&(i=nil),Opal.yield1($yield,self.children["$[]"](i))}),{$$arity:1,$$s:this}))?$ret_or_1:size}),-1),$def(self,"$analyse_hierarchy",(function(action){var start,center,$ret_or_1,r=nil,left_index=nil,right_index=nil,parent=nil,overlap_left=nil,overlap_right=nil,contained=nil,fusible=nil;return r=action.$range(),left_index=$send(this,"bsearch_child_index",[],(function(child){return null==child&&(child=nil),$rb_gt(child.$range().$end_pos(),r.$begin_pos())}),1),start=$eqeq(left_index,0)?0:$rb_minus(left_index,1),right_index=$send(this,"bsearch_child_index",[start],(function(child){return null==child&&(child=nil),$rb_ge(child.$range().$begin_pos(),r.$end_pos())}),1),center=$rb_minus(right_index,left_index),$eqeqeq(0,$ret_or_1=center)||($eqeqeq(-1,$ret_or_1)?(left_index=$rb_minus(left_index,1),right_index=$rb_plus(right_index,1),parent=this.children["$[]"](left_index)):(overlap_left=this.children["$[]"](left_index).$range().$begin_pos()["$<=>"](r.$begin_pos()),overlap_right=this.children["$[]"]($rb_minus(right_index,1)).$range().$end_pos()["$<=>"](r.$end_pos()),$eqeq(center,1)&&$truthy($rb_le(overlap_left,0))&&$truthy($rb_ge(overlap_right,0))?parent=this.children["$[]"](left_index):(contained=this.children["$[]"](Opal.Range.$new(left_index,right_index,!0)),fusible=this.$check_fusible(action,$truthy($rb_lt(overlap_left,0))?contained.$shift():nil,$truthy($rb_gt(overlap_right,0))?contained.$pop():nil)))),$hash2(["parent","sibbling_left","sibbling_right","fusible","child"],{parent:parent,sibbling_left:this.children["$[]"](Opal.Range.$new(0,left_index,!0)),sibbling_right:this.children["$[]"](Opal.Range.$new(right_index,this.children.$size(),!0)),fusible:fusible,child:contained})}),1),$def(self,"$check_fusible",(function(action,$a){var fusible,self=this;return(fusible=Opal.slice.call(arguments,1))["$compact!"](),$truthy(fusible["$empty?"]())?nil:($send(fusible,"each",[],(function $$9(child){var kind,self=null==$$9.$$s?this:$$9.$$s;return null==self.enforcer&&(self.enforcer=nil),null==child&&(child=nil),kind=$truthy(action["$insertion?"]())||$truthy(child["$insertion?"]())?"crossing_insertions":"crossing_deletions",$send(self.enforcer,"call",[kind],(function(){return $hash2(["range","conflict"],{range:action.$range(),conflict:child.$range()})}),0)}),{$$arity:1,$$s:self}),fusible)}),-2),$def(self,"$merge",(function(action){var $ret_or_1;return this.$call_enforcer_for_merge(action),this.$with($hash2(["insert_before","replacement","insert_after"],{insert_before:""+action.$insert_before()+this.$insert_before(),replacement:$truthy($ret_or_1=action.$replacement())?$ret_or_1:this.replacement,insert_after:""+this.$insert_after()+action.$insert_after()})).$combine_children(action.$children())}),1),$def(self,"$call_enforcer_for_merge",(function(action){return $send(this.enforcer,"call",["different_replacements"],(function $$11(){var self=null==$$11.$$s?this:$$11.$$s;return null==self.replacement&&(self.replacement=nil),null==self.range&&(self.range=nil),$truthy(self.replacement)&&$truthy(action.$replacement())&&$neqeq(self.replacement,action.$replacement())?$hash2(["range","replacement","other_replacement"],{range:self.range,replacement:action.$replacement(),other_replacement:self.replacement}):nil}),{$$arity:0,$$s:this})}),1),$def(self,"$swallow",(function(children){return $send(this.enforcer,"call",["swallowed_insertions"],(function $$12(){var self=null==$$12.$$s?this:$$12.$$s,insertions=nil;return null==self.range&&(self.range=nil),insertions=$send(children,"select",[],"insertion?".$to_proc()),$truthy(insertions["$empty?"]())?nil:$hash2(["range","conflict"],{range:self.range,conflict:$send(insertions,"map",[],"range".$to_proc())})}),{$$arity:0,$$s:this}),[]}),1)}(Opal.$r($nesting)("TreeRewriter"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super,$send=Opal.send,$truthy=Opal.truthy,$hash2=Opal.hash2,$eqeq=Opal.eqeq,$range=Opal.range,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus;return Opal.add_stubs("attr_reader,freeze,line,alias_method,column,last_line,last_column,with,update_expression,==,class,reduce,map,instance_variables,instance_variable_get,send,inject,to_sym,[],[]=,-,protected,tap,dup,to_proc"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,null,"Map"),$proto=self.$$prototype;return $proto.node=$proto.expression=nil,self.$attr_reader("node"),self.$attr_reader("expression"),$def(self,"$initialize",(function(expression){return this.expression=expression}),1),$def(self,"$initialize_copy",(function $$initialize_copy(other){var $yield=$$initialize_copy.$$p||nil;return delete $$initialize_copy.$$p,$send2(this,$find_super(this,"initialize_copy",$$initialize_copy,!1,!0),"initialize_copy",[other],$yield),this.node=nil}),1),$def(self,"$node=",(function(node){return this.node=node,this.$freeze(),this.node}),1),$def(self,"$line",(function(){return this.expression.$line()}),0),self.$alias_method("first_line","line"),$def(self,"$column",(function(){return this.expression.$column()}),0),$def(self,"$last_line",(function(){return this.expression.$last_line()}),0),$def(self,"$last_column",(function(){return this.expression.$last_column()}),0),$def(self,"$with_expression",(function(expression_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_expression(expression_l)}),1)}),1),$def(self,"$==",(function(other){var $ret_or_1;return $truthy($ret_or_1=other.$class()["$=="](this.$class()))?$send(this.$instance_variables(),"map",[],(function $$4(ivar){return null==ivar&&(ivar=nil),(null==$$4.$$s?this:$$4.$$s).$instance_variable_get(ivar)["$=="](other.$send("instance_variable_get",ivar))}),{$$arity:1,$$s:this}).$reduce("&"):$ret_or_1}),1),$def(self,"$to_hash",(function(){return $send(this.$instance_variables(),"inject",[$hash2([],{})],(function $$5(hash,ivar){var $writer,self=null==$$5.$$s?this:$$5.$$s;return null==hash&&(hash=nil),null==ivar&&(ivar=nil),$eqeq(ivar.$to_sym(),"@node")||($writer=[ivar["$[]"]($range(1,-1,!1)).$to_sym(),self.$instance_variable_get(ivar)],$send(hash,"[]=",$to_a($writer)),$rb_minus($writer.length,1)),hash}),{$$arity:2,$$s:this})}),0),self.$protected(),$def(self,"$with",(function $Map_with$6(){var block=$Map_with$6.$$p||nil;return delete $Map_with$6.$$p,$send(this.$dup(),"tap",[],block.$to_proc())}),0),$def(self,"$update_expression",(function(expression_l){return this.expression=expression_l}),1)}([$module($base,"Source")].concat($parent_nesting)[0])}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/operator"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Operator");return self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(operator,expression){return delete $$initialize.$$p,this.operator=operator,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression],null)}),2)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/collection"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Collection");return self.$attr_reader("begin"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),3)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/constant"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Constant");return self.$attr_reader("double_colon"),self.$attr_reader("name"),self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(double_colon,name,expression){var $a;return delete $$initialize.$$p,$a=[double_colon,name],this.double_colon=$a[0],this.name=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression],null)}),3),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/variable"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Variable");return self.$attr_reader("name"),self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(name_l,expression_l){return delete $$initialize.$$p,null==expression_l&&(expression_l=name_l),this.name=name_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),-2),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/keyword"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Keyword");return self.$attr_reader("keyword"),self.$attr_reader("begin"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(keyword_l,begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,this.keyword=keyword_l,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/definition"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader,join"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Definition"),$proto=self.$$prototype;return $proto.keyword=$proto.end=nil,self.$attr_reader("keyword"),self.$attr_reader("operator"),self.$attr_reader("name"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(keyword_l,operator_l,name_l,end_l){return delete $$initialize.$$p,this.keyword=keyword_l,this.operator=operator_l,this.name=name_l,this.end=end_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[this.keyword.$join(this.end)],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/method_definition"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("attr_reader,join"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"MethodDefinition");return self.$$prototype.keyword=nil,self.$attr_reader("keyword"),self.$attr_reader("operator"),self.$attr_reader("name"),self.$attr_reader("end"),self.$attr_reader("assignment"),$def(self,"$initialize",(function $$initialize(keyword_l,operator_l,name_l,end_l,assignment_l,body_l){var $ret_or_1;return delete $$initialize.$$p,this.keyword=keyword_l,this.operator=operator_l,this.name=name_l,this.end=end_l,this.assignment=assignment_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[this.keyword.$join($truthy($ret_or_1=end_l)?$ret_or_1:body_l)],null)}),6)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/send"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Send");return self.$attr_reader("dot"),self.$attr_reader("selector"),self.$attr_reader("operator"),self.$attr_reader("begin"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(dot_l,selector_l,begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,this.dot=dot_l,this.selector=selector_l,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),5),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/index"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Index");return self.$attr_reader("begin"),self.$attr_reader("end"),self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],this.operator=nil,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),3),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/condition"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Condition");return self.$attr_reader("keyword"),self.$attr_reader("begin"),self.$attr_reader("else"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(keyword_l,begin_l,else_l,end_l,expression_l){var $a;return delete $$initialize.$$p,this.keyword=keyword_l,$a=[begin_l,else_l,end_l],this.begin=$a[0],this.else=$a[1],this.end=$a[2],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),5)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/ternary"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Ternary");return self.$attr_reader("question"),self.$attr_reader("colon"),$def(self,"$initialize",(function $$initialize(question_l,colon_l,expression_l){var $a;return delete $$initialize.$$p,$a=[question_l,colon_l],this.question=$a[0],this.colon=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),3)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/for"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"For");return self.$attr_reader("keyword","in"),self.$attr_reader("begin","end"),$def(self,"$initialize",(function $$initialize(keyword_l,in_l,begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,$a=[keyword_l,in_l],this.keyword=$a[0],this.in=$a[1],$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),5)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/rescue_body"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"RescueBody");return self.$attr_reader("keyword"),self.$attr_reader("assoc"),self.$attr_reader("begin"),$def(self,"$initialize",(function $$initialize(keyword_l,assoc_l,begin_l,expression_l){return delete $$initialize.$$p,this.keyword=keyword_l,this.assoc=assoc_l,this.begin=begin_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/heredoc"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Heredoc");return self.$attr_reader("heredoc_body"),self.$attr_reader("heredoc_end"),$def(self,"$initialize",(function $$initialize(begin_l,body_l,end_l){return delete $$initialize.$$p,this.heredoc_body=body_l,this.heredoc_end=end_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[begin_l],null)}),3)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/objc_kwarg"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ObjcKwarg");return self.$attr_reader("keyword"),self.$attr_reader("operator"),self.$attr_reader("argument"),$def(self,"$initialize",(function $$initialize(keyword_l,operator_l,argument_l,expression_l){var $a;return delete $$initialize.$$p,$a=[keyword_l,operator_l,argument_l],this.keyword=$a[0],this.operator=$a[1],this.argument=$a[2],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/syntax_error"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader,message"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"SyntaxError");return self.$attr_reader("diagnostic"),$def(self,"$initialize",(function $$initialize(diagnostic){return delete $$initialize.$$p,this.diagnostic=diagnostic,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[diagnostic.$message()],null)}),1)}($nesting[0],$$("StandardError"))}($nesting[0],$nesting)},Opal.modules["parser/clobbering_error"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass;return function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return $klass($nesting[0],$$("RuntimeError"),"ClobberingError"),nil}($nesting[0],$nesting)},Opal.modules["parser/diagnostic"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$truthy=Opal.truthy,$hash2=Opal.hash2,$def=Opal.def,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$to_ary=Opal.to_ary,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$send=Opal.send,$to_a=Opal.to_a,$rb_ge=Opal.rb_ge,$not=Opal.not,$neqeq=Opal.neqeq;return Opal.add_stubs("freeze,attr_reader,include?,raise,join,inspect,dup,compile,is?,==,line,last_line,+,message,render_line,first_line_only,last_line_only,-,source_buffer,decompose_position,end_pos,>,private,source_line,*,length,each,line_range,intersect,column_range,size,[]=,>=,!,map,name,!=,resize,=~,source,adjust"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Diagnostic"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.reason=$proto.arguments=$proto.location=$proto.level=$proto.highlights=nil,$const_set($nesting[0],"LEVELS",["note","warning","error","fatal"].$freeze()),self.$attr_reader("level","reason","arguments"),self.$attr_reader("location","highlights"),$def(self,"$initialize",(function(level,reason,arguments$,location,highlights){var $ret_or_1;return null==highlights&&(highlights=[]),$truthy($$("LEVELS")["$include?"](level))||this.$raise($$("ArgumentError"),"Diagnostic#level must be one of "+$$("LEVELS").$join(", ")+"; "+level.$inspect()+" provided."),$truthy(location)||this.$raise("Expected a location"),this.level=level,this.reason=reason,this.arguments=($truthy($ret_or_1=arguments$)?$ret_or_1:$hash2([],{})).$dup().$freeze(),this.location=location,this.highlights=highlights.$dup().$freeze(),this.$freeze()}),-5),$def(self,"$message",(function(){return $$("Messages").$compile(this.reason,this.arguments)}),0),$def(self,"$render",(function(){var $a,$b,first_line=nil,last_line=nil,num_lines=nil,last_lineno=nil,last_column=nil;return $eqeq(this.location.$line(),this.location.$last_line())||$truthy(this.location["$is?"]("\n"))?$rb_plus([this.location+": "+this.level+": "+this.$message()],this.$render_line(this.location)):(first_line=this.$first_line_only(this.location),last_line=this.$last_line_only(this.location),num_lines=$rb_plus($rb_minus(this.location.$last_line(),this.location.$line()),1),$b=this.location.$source_buffer().$decompose_position(this.location.$end_pos()),last_lineno=null==($a=$to_ary($b))[0]?nil:$a[0],last_column=null==$a[1]?nil:$a[1],$rb_plus($rb_plus([this.location+"-"+last_lineno+":"+last_column+": "+this.level+": "+this.$message()],this.$render_line(first_line,$rb_gt(num_lines,2),!1)),this.$render_line(last_line,!1,!0)))}),0),self.$private(),$def(self,"$render_line",(function(range,ellipsis,range_end){var source_line=nil,highlight_line=nil,$writer=nil;return null==ellipsis&&(ellipsis=!1),null==range_end&&(range_end=!1),source_line=range.$source_line(),highlight_line=$rb_times(" ",source_line.$length()),$send(this.highlights,"each",[],(function(highlight){var line_range,$writer=nil;return null==highlight&&(highlight=nil),line_range=range.$source_buffer().$line_range(range.$line()),$truthy(highlight=highlight.$intersect(line_range))?($writer=[highlight.$column_range(),$rb_times("~",highlight.$size())],$send(highlight_line,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),1),$truthy(range["$is?"]("\n"))?highlight_line=$rb_plus(highlight_line,"^"):$not(range_end)&&$truthy($rb_ge(range.$size(),1))?($writer=[range.$column_range(),$rb_plus("^",$rb_times("~",$rb_minus(range.$size(),1)))],$send(highlight_line,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):($writer=[range.$column_range(),$rb_times("~",range.$size())],$send(highlight_line,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy(ellipsis)&&(highlight_line=$rb_plus(highlight_line,"...")),$send([source_line,highlight_line],"map",[],(function(line){return null==line&&(line=nil),range.$source_buffer().$name()+":"+range.$line()+": "+line}),1)}),-2),$def(self,"$first_line_only",(function(range){return $neqeq(range.$line(),range.$last_line())?range.$resize(range.$source()["$=~"](/\n/)):range}),1),$def(self,"$last_line_only",(function(range){return $neqeq(range.$line(),range.$last_line())?range.$adjust($hash2(["begin_pos"],{begin_pos:range.$source()["$=~"](/[^\n]*$/)})):range}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/diagnostic/engine"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("attr_accessor,ignore?,call,raise?,raise,protected,==,level"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Engine"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.consumer=$proto.ignore_warnings=$proto.all_errors_are_fatal=nil,self.$attr_accessor("consumer"),self.$attr_accessor("all_errors_are_fatal"),self.$attr_accessor("ignore_warnings"),$def(self,"$initialize",(function(consumer){return null==consumer&&(consumer=nil),this.consumer=consumer,this.all_errors_are_fatal=!1,this.ignore_warnings=!1}),-1),$def(self,"$process",(function(diagnostic){return $truthy(this["$ignore?"](diagnostic))||$truthy(this.consumer)&&this.consumer.$call(diagnostic),$truthy(this["$raise?"](diagnostic))&&this.$raise($$$($$("Parser"),"SyntaxError"),diagnostic),this}),1),self.$protected(),$def(self,"$ignore?",(function(diagnostic){var $ret_or_1;return $truthy($ret_or_1=this.ignore_warnings)?diagnostic.$level()["$=="]("warning"):$ret_or_1}),1),$def(self,"$raise?",(function(diagnostic){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.all_errors_are_fatal)?diagnostic.$level()["$=="]("error"):$ret_or_2)?$ret_or_1:diagnostic.$level()["$=="]("fatal")}),1)}(Opal.$r($nesting)("Diagnostic"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/static_environment"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def;return Opal.add_stubs("reset,[],push,dup,pop,add,to_sym,include?,declare,declared?,empty?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"StaticEnvironment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.stack=$proto.variables=nil,$const_set($nesting[0],"FORWARD_ARGS","FORWARD_ARGS"),$const_set($nesting[0],"ANONYMOUS_BLOCKARG","ANONYMOUS_BLOCKARG"),$def(self,"$initialize",(function(){return this.$reset()}),0),$def(self,"$reset",(function(){return this.variables=$$("Set")["$[]"](),this.stack=[]}),0),$def(self,"$extend_static",(function(){return this.stack.$push(this.variables),this.variables=$$("Set")["$[]"](),this}),0),$def(self,"$extend_dynamic",(function(){return this.stack.$push(this.variables),this.variables=this.variables.$dup(),this}),0),$def(self,"$unextend",(function(){return this.variables=this.stack.$pop(),this}),0),$def(self,"$declare",(function(name){return this.variables.$add(name.$to_sym()),this}),1),$def(self,"$declared?",(function(name){return this.variables["$include?"](name.$to_sym())}),1),$def(self,"$declare_forward_args",(function(){return this.$declare($$("FORWARD_ARGS"))}),0),$def(self,"$declared_forward_args?",(function(){return this["$declared?"]($$("FORWARD_ARGS"))}),0),$def(self,"$declare_anonymous_blockarg",(function(){return this.$declare($$("ANONYMOUS_BLOCKARG"))}),0),$def(self,"$declared_anonymous_blockarg?",(function(){return this["$declared?"]($$("ANONYMOUS_BLOCKARG"))}),0),$def(self,"$empty?",(function(){return this.stack["$empty?"]()}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/lexer"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$const_set=Opal.const_set,$hash=Opal.hash,$def=Opal.def,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$hash2=Opal.hash2,$rb_plus=Opal.rb_plus,$to_ary=Opal.to_ary,$rb_le=Opal.rb_le,$eqeqeq=Opal.eqeqeq,$rb_gt=Opal.rb_gt,$neqeq=Opal.neqeq,$not=Opal.not,$rb_ge=Opal.rb_ge,$range=Opal.range,$rb_lt=Opal.rb_lt,$gvars=Opal.gvars;return Opal.add_stubs("attr_accessor,private,_lex_trans_keys=,-,_lex_key_spans=,_lex_index_offsets=,_lex_indicies=,_lex_trans_targs=,_lex_trans_actions=,_lex_to_state_actions=,_lex_from_state_actions=,_lex_eof_trans=,lex_start=,lex_error=,lex_en_interp_words=,lex_en_interp_string=,lex_en_plain_words=,lex_en_plain_string=,lex_en_interp_backslash_delimited=,lex_en_plain_backslash_delimited=,lex_en_interp_backslash_delimited_words=,lex_en_plain_backslash_delimited_words=,lex_en_regexp_modifiers=,lex_en_expr_variable=,lex_en_expr_fname=,lex_en_expr_endfn=,lex_en_expr_dot=,lex_en_expr_arg=,lex_en_expr_cmdarg=,lex_en_expr_endarg=,lex_en_expr_mid=,lex_en_expr_beg=,lex_en_expr_labelarg=,lex_en_expr_value=,lex_en_expr_end=,lex_en_leading_dot=,lex_en_line_comment=,lex_en_line_begin=,freeze,ord,union,chars,attr_reader,reset,lex_en_line_begin,class,new,source,==,encoding,unpack,[],lex_en_expr_dot,lex_en_expr_fname,lex_en_expr_value,lex_en_expr_beg,lex_en_expr_mid,lex_en_expr_arg,lex_en_expr_cmdarg,lex_en_expr_end,lex_en_expr_endarg,lex_en_expr_endfn,lex_en_expr_labelarg,lex_en_interp_string,lex_en_interp_words,lex_en_plain_string,fetch,invert,push,count,pop,any?,shift,send,+,size,<=,===,<<,>,!=,emit_comment,tok,literal,flush_string,extend_content,emit,heredoc?,saved_herebody_s=,start_interp_brace,[]=,diagnostic,range,str_s,gsub,version?,nest_and_try_closing,heredoc_e,pop_literal,infer_indent_level,!,eof_codepoint?,words?,extend_space,extend_string,active?,>=,slice,start_with?,chr,munge_escape?,match,regexp?,squiggly_heredoc?,supports_line_continuation_via_slash?,include?,scan,join,=~,to_i,stack_pop,emit_table,push_literal,in_argdef,arg_or_cmdarg,<,emit_do,declared?,nil?,last,getbyte,inspect,end_with?,empty?,index,call,Float,to_f,length,lambda,Rational,Complex,each,encode_escape,%,in_kwarg,end_interp_brace_and_try_closing,lexpop,saved_herebody_s,next_state_for_literal,rstrip,&,|,lex_error,protected,force_encoding,process,backslash_delimited?,interpolate?,lex_en_interp_backslash_delimited_words,lex_en_plain_backslash_delimited_words,lex_en_plain_words,lex_en_interp_backslash_delimited,lex_en_plain_backslash_delimited,dedent_level,type,lex_en_regexp_modifiers,upcase"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Lexer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$writer=nil,$proto=self.$$prototype;return $proto.source_buffer=$proto.source_pts=$proto.cs=$proto.cmdarg_stack=$proto.cmdarg=$proto.cond_stack=$proto.cond=$proto.dedent_level=$proto.token_queue=$proto.p=$proto.command_start=$proto.herebody_s=$proto.sharp_s=$proto.ts=$proto.te=$proto.top=$proto.stack=$proto.version=$proto.escape_s=$proto.escape=$proto.act=$proto.context=$proto.static_env=$proto.newline_s=$proto.lambda_stack=$proto.paren_nest=$proto.num_digits_s=$proto.num_suffix_s=$proto.num_base=$proto.num_xfrm=$proto.eq_begin_s=$proto.cs_before_block_comment=$proto.tokens=$proto.comments=$proto.diagnostics=$proto.literal_stack=nil,function(self,$parent_nesting){self.$attr_accessor("_lex_trans_keys"),self.$private("_lex_trans_keys","_lex_trans_keys=")}(Opal.get_singleton_class(self)),$send(self,"_lex_trans_keys=",$to_a($writer=[[0,0,101,101,103,103,105,105,110,110,69,69,78,78,68,68,95,95,95,95,0,26,0,127,0,127,0,127,0,127,0,45,0,120,0,120,0,92,0,120,0,120,0,45,0,120,0,120,67,99,45,45,0,92,0,120,0,102,0,127,0,127,0,127,0,127,0,45,0,120,0,120,0,92,0,120,0,120,0,45,0,120,0,120,67,99,45,45,0,92,0,120,0,102,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,58,58,58,58,46,46,0,127,58,58,60,60,62,62,10,10,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,115,115,99,99,117,117,101,101,108,116,101,101,115,115,115,115,105,105,108,108,105,105,108,108,58,58,0,127,10,10,0,127,9,92,10,10,9,92,58,58,98,98,101,101,103,103,105,105,110,110,0,127,61,61,9,92,9,92,9,92,9,92,9,92,10,10,0,127,0,127,61,126,93,93,0,127,0,127,10,10,34,34,10,10,39,39,0,127,10,96,96,96,0,45,0,120,0,120,0,92,0,120,0,120,0,45,0,120,0,120,67,99,45,45,0,92,0,120,0,102,0,127,0,127,0,127,0,127,0,127,0,127,58,58,58,58,0,127,43,57,48,57,48,57,48,57,48,57,115,115,99,99,117,117,101,101,99,99,117,117,101,101,0,127,58,58,9,92,9,92,9,92,9,92,9,92,9,92,60,60,10,10,9,92,9,92,10,10,10,10,10,10,10,10,46,46,0,95,9,32,0,0,10,10,10,10,98,98,9,32,10,10,95,95,0,92,9,32,36,123,0,127,48,57,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,48,102,48,102,0,0,48,102,48,102,0,0,0,45,0,92,0,92,0,0,0,0,0,92,48,102,48,102,0,0,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,92,36,123,0,127,48,57,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,48,102,48,102,0,0,48,102,48,102,0,0,0,45,0,92,0,92,0,0,0,0,0,92,48,102,48,102,0,0,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,92,9,32,0,26,0,92,0,26,0,35,36,123,0,127,48,57,0,127,0,26,0,35,9,32,36,123,0,127,48,57,0,127,0,32,9,32,65,122,65,122,36,64,0,127,48,57,0,127,0,127,0,127,0,127,9,32,0,0,61,126,10,10,10,10,0,127,0,127,48,57,115,115,38,38,42,42,64,64,58,58,60,61,62,62,61,126,61,61,61,62,0,127,0,127,0,127,0,127,0,127,0,127,0,127,93,93,10,10,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,124,124,0,127,0,127,9,32,10,10,10,10,46,46,10,10,0,0,0,127,0,127,61,61,0,0,9,32,0,0,61,126,10,10,10,10,38,38,42,42,64,64,60,61,62,62,61,126,61,61,61,62,0,127,93,93,10,10,124,124,0,126,0,127,0,61,9,61,9,61,0,0,9,61,9,62,46,46,46,46,58,58,9,32,0,0,0,127,0,0,9,124,0,0,10,10,10,10,0,0,9,61,58,58,60,60,62,62,9,32,10,10,0,127,102,102,101,101,110,110,104,104,0,127,0,127,0,127,0,0,0,127,10,10,0,123,9,32,10,10,10,10,10,10,0,0,111,111,0,0,0,127,0,127,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,58,61,0,0,61,126,61,61,0,0,0,0,0,0,9,32,61,61,9,32,61,126,10,10,10,10,0,127,38,61,0,0,42,61,61,61,9,92,9,92,9,92,46,46,46,46,10,10,0,26,0,127,0,127,61,61,0,0,61,126,61,62,0,0,0,0,0,0,0,0,61,126,0,127,48,57,38,38,42,42,64,64,60,61,62,62,61,61,61,62,0,127,48,57,0,127,124,124,64,64,60,61,0,0,10,34,10,39,96,96,62,62,61,126,61,62,0,122,0,0,0,127,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,48,102,48,102,0,0,48,102,48,102,0,0,0,45,0,92,0,92,0,0,0,0,0,92,48,102,48,102,0,0,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,127,0,127,0,127,0,0,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,61,126,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,0,61,124,0,92,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,61,61,0,0,9,32,0,0,61,126,10,10,10,10,0,127,0,127,48,57,61,61,38,61,0,0,0,0,42,61,61,62,46,57,46,46,10,10,48,101,48,95,46,120,48,114,43,57,48,105,102,102,0,0,101,105,0,0,0,0,48,114,48,114,48,114,48,114,105,114,102,102,0,0,101,105,115,115,0,0,0,0,48,114,48,114,48,114,48,114,48,114,48,114,48,114,48,114,46,114,48,114,46,114,48,114,58,58,60,61,62,62,61,126,61,61,61,62,0,127,0,127,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,0,10,10,0,0,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,9,92,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,0,61,124,0,0,9,92,9,92,9,92,46,46,46,46,10,10,46,46,10,10,10,61,10,10,10,101,10,110,10,100,10,10,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_key_spans"),self.$private("_lex_key_spans","_lex_key_spans=")}(Opal.get_singleton_class(self)),$send(self,"_lex_key_spans=",$to_a($writer=[[0,1,1,1,1,1,1,1,1,1,27,128,128,128,128,46,121,121,93,121,121,46,121,121,33,1,93,121,103,128,128,128,128,46,121,121,93,121,121,46,121,121,33,1,93,121,103,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,1,1,128,1,1,1,1,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,1,1,1,9,1,1,1,1,1,1,1,1,128,1,128,84,1,84,1,1,1,1,1,1,128,1,84,84,84,84,84,1,128,128,66,1,128,128,1,1,1,1,128,87,1,46,121,121,93,121,121,46,121,121,33,1,93,121,103,128,128,128,128,128,128,1,1,128,15,10,10,10,10,1,1,1,1,1,1,1,128,1,84,84,84,84,84,84,1,1,84,84,1,1,1,1,1,96,24,0,1,1,1,24,1,1,93,24,88,128,10,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,55,55,0,55,55,0,46,93,93,0,0,93,55,55,0,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,0,0,55,0,93,88,128,10,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,55,55,0,55,55,0,46,93,93,0,0,93,55,55,0,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,0,0,55,0,93,24,27,93,27,36,88,128,10,128,27,36,24,88,128,10,128,33,24,58,58,29,128,10,128,128,128,128,24,0,66,1,1,128,128,10,1,1,1,1,1,2,1,66,1,2,128,128,128,128,128,128,128,1,1,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,128,128,24,1,1,1,1,0,128,128,1,0,24,0,66,1,1,1,1,1,2,1,66,1,2,128,1,1,1,127,128,62,53,53,0,53,54,1,1,1,24,0,128,0,116,0,1,1,0,53,1,1,1,24,1,128,1,1,1,1,128,128,128,0,128,1,124,24,1,1,1,0,1,0,128,128,24,0,1,1,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,4,0,66,1,0,0,0,24,1,24,66,1,1,128,24,0,20,1,84,84,84,1,1,1,27,128,128,1,0,66,2,0,0,0,0,66,128,10,1,1,1,2,1,1,2,128,10,128,1,1,2,0,25,30,1,1,66,2,123,0,128,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,55,55,0,55,55,0,46,93,93,0,0,93,55,55,0,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,0,0,55,0,128,128,128,0,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,66,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,64,93,24,0,1,1,1,0,128,128,24,0,1,1,1,0,128,128,1,0,24,0,66,1,1,128,128,10,1,24,0,0,20,2,12,1,1,54,48,75,67,15,58,1,0,5,0,0,67,67,67,67,10,1,0,5,1,0,0,67,67,67,67,67,67,67,67,69,67,69,67,1,2,1,66,1,2,128,128,0,128,128,128,128,128,128,0,1,0,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,84,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,64,0,84,84,84,1,1,1,1,1,52,1,92,101,91,1]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_index_offsets"),self.$private("_lex_index_offsets","_lex_index_offsets=")}(Opal.get_singleton_class(self)),$send(self,"_lex_index_offsets=",$to_a($writer=[[0,0,2,4,6,8,10,12,14,16,18,46,175,304,433,562,609,731,853,947,1069,1191,1238,1360,1482,1516,1518,1612,1734,1838,1967,2096,2225,2354,2401,2523,2645,2739,2861,2983,3030,3152,3274,3308,3310,3404,3526,3630,3759,3888,4017,4146,4275,4404,4533,4662,4791,4920,5049,5178,5307,5436,5565,5567,5569,5571,5700,5702,5704,5706,5708,5837,5966,6095,6224,6353,6482,6611,6740,6869,6998,7127,7256,7385,7514,7643,7772,7901,8030,8032,8034,8036,8038,8048,8050,8052,8054,8056,8058,8060,8062,8064,8193,8195,8324,8409,8411,8496,8498,8500,8502,8504,8506,8508,8637,8639,8724,8809,8894,8979,9064,9066,9195,9324,9391,9393,9522,9651,9653,9655,9657,9659,9788,9876,9878,9925,10047,10169,10263,10385,10507,10554,10676,10798,10832,10834,10928,11050,11154,11283,11412,11541,11670,11799,11928,11930,11932,12061,12077,12088,12099,12110,12121,12123,12125,12127,12129,12131,12133,12135,12264,12266,12351,12436,12521,12606,12691,12776,12778,12780,12865,12950,12952,12954,12956,12958,12960,13057,13082,13083,13085,13087,13089,13114,13116,13118,13212,13237,13326,13455,13466,13595,13717,13718,13719,13728,13737,13738,13739,13833,13834,13835,13836,13930,13932,13933,13934,13935,14029,14085,14141,14142,14198,14254,14255,14302,14396,14490,14491,14492,14586,14642,14698,14699,14746,14748,14842,14919,14975,15031,15087,15088,15215,15342,15343,15470,15471,15598,15725,15852,15979,15980,16107,16234,16361,16488,16615,16742,16743,16744,16800,16801,16895,16984,17113,17124,17253,17375,17376,17377,17386,17395,17396,17397,17491,17492,17493,17494,17588,17590,17591,17592,17593,17687,17743,17799,17800,17856,17912,17913,17960,18054,18148,18149,18150,18244,18300,18356,18357,18404,18406,18500,18577,18633,18689,18745,18746,18873,19e3,19001,19128,19129,19256,19383,19510,19637,19638,19765,19892,20019,20146,20273,20400,20401,20402,20458,20459,20553,20578,20606,20700,20728,20765,20854,20983,20994,21123,21151,21188,21213,21302,21431,21442,21571,21605,21630,21689,21748,21778,21907,21918,22047,22176,22305,22434,22459,22460,22527,22529,22531,22660,22789,22800,22802,22804,22806,22808,22810,22813,22815,22882,22884,22887,23016,23145,23274,23403,23532,23661,23790,23792,23794,23923,24052,24181,24310,24439,24568,24697,24826,24955,25084,25213,25342,25471,25600,25729,25858,25987,26116,26245,26374,26503,26632,26761,26890,27019,27148,27277,27406,27535,27664,27793,27922,28051,28180,28309,28438,28567,28696,28825,28954,29083,29212,29341,29470,29599,29728,29857,29986,30115,30244,30373,30502,30631,30760,30889,31018,31147,31276,31405,31534,31663,31792,31921,32050,32179,32308,32437,32566,32695,32824,32953,33082,33211,33340,33469,33598,33727,33856,33985,34114,34243,34372,34501,34503,34632,34761,34786,34788,34790,34792,34794,34795,34924,35053,35055,35056,35081,35082,35149,35151,35153,35155,35157,35159,35162,35164,35231,35233,35236,35365,35367,35369,35371,35499,35628,35691,35745,35799,35800,35854,35909,35911,35913,35915,35940,35941,36070,36071,36188,36189,36191,36193,36194,36248,36250,36252,36254,36279,36281,36410,36412,36414,36416,36418,36547,36676,36805,36806,36935,36937,37062,37087,37089,37091,37093,37094,37096,37097,37226,37355,37380,37381,37383,37385,37387,37388,37517,37646,37775,37904,38033,38162,38291,38420,38549,38678,38807,38936,39065,39194,39323,39452,39581,39710,39715,39716,39783,39785,39786,39787,39788,39813,39815,39840,39907,39909,39911,40040,40065,40066,40087,40089,40174,40259,40344,40346,40348,40350,40378,40507,40636,40638,40639,40706,40709,40710,40711,40712,40713,40780,40909,40920,40922,40924,40926,40929,40931,40933,40936,41065,41076,41205,41207,41209,41212,41213,41239,41270,41272,41274,41341,41344,41468,41469,41598,41727,41849,41850,41851,41860,41869,41870,41871,41965,41966,41967,41968,42062,42064,42065,42066,42067,42161,42217,42273,42274,42330,42386,42387,42434,42528,42622,42623,42624,42718,42774,42830,42831,42878,42880,42974,43051,43107,43163,43219,43220,43347,43474,43475,43602,43603,43730,43857,43984,44111,44112,44239,44366,44493,44620,44747,44874,45001,45128,45255,45382,45509,45636,45763,45890,46017,46144,46271,46398,46525,46526,46527,46583,46584,46713,46842,46971,46972,46974,46975,47104,47233,47362,47491,47620,47749,47878,48007,48136,48265,48394,48523,48652,48781,48910,49039,49168,49297,49426,49555,49684,49813,49942,50071,50200,50329,50458,50587,50716,50845,50974,51103,51232,51361,51490,51619,51748,51877,52006,52135,52264,52393,52522,52651,52780,52909,53038,53167,53296,53425,53554,53683,53812,53941,54070,54199,54328,54457,54586,54715,54844,54911,55040,55169,55298,55427,55556,55685,55814,55943,56072,56201,56330,56459,56588,56717,56846,56975,57104,57233,57362,57491,57620,57749,57878,58007,58136,58137,58202,58296,58321,58322,58324,58326,58328,58329,58458,58587,58612,58613,58615,58617,58619,58620,58749,58878,58880,58881,58906,58907,58974,58976,58978,59107,59236,59247,59249,59274,59275,59276,59297,59300,59313,59315,59317,59372,59421,59497,59565,59581,59640,59642,59643,59649,59650,59651,59719,59787,59855,59923,59934,59936,59937,59943,59945,59946,59947,60015,60083,60151,60219,60287,60355,60423,60491,60561,60629,60699,60767,60769,60772,60774,60841,60843,60846,60975,61104,61105,61234,61363,61492,61621,61750,61879,61880,61882,61883,61884,62013,62142,62271,62400,62529,62658,62787,62916,63045,63174,63303,63432,63561,63690,63819,63948,64077,64206,64335,64464,64593,64722,64851,64980,65109,65238,65367,65496,65625,65754,65883,66012,66141,66270,66399,66528,66657,66742,66871,67e3,67129,67258,67387,67516,67645,67774,67903,68032,68161,68290,68419,68548,68677,68806,68935,69064,69193,69322,69451,69580,69709,69838,69967,70096,70225,70354,70483,70612,70741,70870,70999,71128,71257,71386,71515,71644,71773,71902,72031,72160,72289,72418,72547,72676,72805,72934,73063,73192,73321,73450,73579,73708,73837,73966,74095,74224,74353,74482,74611,74740,74869,74998,75127,75128,75193,75194,75279,75364,75449,75451,75453,75455,75457,75459,75512,75514,75607,75709,75801]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_indicies"),self.$private("_lex_indicies","_lex_indicies=")}(Opal.get_singleton_class(self)),$send(self,"_lex_indicies=",$to_a($writer=[[1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,0,0,10,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,12,14,12,14,14,12,12,14,14,14,15,14,14,16,16,16,16,16,16,16,16,16,16,14,14,14,14,14,14,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,14,12,12,13,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,14,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,14,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,17,17,17,17,17,17,17,17,17,12,12,12,12,12,12,18,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,17,17,17,17,17,17,17,17,17,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,13,19,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,20,19,22,22,22,19,22,22,22,22,22,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,24,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,25,22,19,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,26,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,25,22,19,27,27,27,19,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,19,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,29,27,19,30,30,30,19,30,30,30,30,30,31,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,19,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,19,30,30,30,19,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,19,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,19,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,33,20,19,34,34,34,19,34,34,34,34,34,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,19,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,36,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,37,34,34,34,34,34,34,38,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,39,34,19,34,34,34,19,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,19,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,39,34,40,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,41,19,41,19,19,42,42,42,19,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,19,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,44,42,19,22,22,22,19,22,22,22,22,22,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,26,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,25,22,19,45,45,45,19,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,19,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,46,46,46,46,46,46,46,46,46,46,45,45,45,45,45,45,45,46,46,46,46,46,46,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,46,46,46,46,46,46,45,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,49,49,47,49,47,49,49,47,47,49,49,49,50,49,49,51,51,51,51,51,51,51,51,51,51,49,49,49,49,49,49,49,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,49,47,47,48,49,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,49,47,48,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,49,49,49,49,49,49,49,49,49,49,47,47,47,47,47,47,47,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,47,47,47,47,49,47,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,47,47,47,47,47,49,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,52,52,52,52,52,52,52,52,52,52,47,47,47,47,47,47,53,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,48,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,47,48,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,52,52,52,52,52,52,52,52,52,52,47,47,47,47,47,47,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,48,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,47,48,54,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,56,55,54,57,57,57,54,57,57,57,57,57,58,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,59,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,60,57,54,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,61,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,60,57,54,62,62,62,54,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,54,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,54,65,65,65,54,65,65,65,65,65,66,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,54,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,67,65,54,65,65,65,54,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,54,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,67,65,54,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,68,55,54,69,69,69,54,69,69,69,69,69,70,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,54,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,71,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,72,69,69,69,69,69,69,73,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,74,69,54,69,69,69,54,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,54,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,74,69,75,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,76,54,76,54,54,77,77,77,54,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,54,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,79,77,54,57,57,57,54,57,57,57,57,57,58,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,61,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,60,57,54,80,80,80,54,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,54,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,80,80,80,80,80,80,80,81,81,81,81,81,81,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,80,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,84,84,82,84,82,84,84,82,82,84,84,84,85,84,84,86,86,86,86,86,86,86,86,86,86,84,84,84,84,84,84,84,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,84,82,82,83,84,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,84,82,83,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,84,84,84,84,84,84,84,84,84,84,82,82,82,82,82,82,82,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,82,82,82,82,84,82,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,82,82,82,82,82,84,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,87,87,87,87,87,87,87,87,87,87,82,82,82,82,82,82,88,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,83,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,82,83,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,87,87,87,87,87,87,87,87,87,87,82,82,82,82,82,82,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,83,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,82,83,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,91,91,89,91,89,91,91,89,89,91,91,91,92,91,91,93,93,93,93,93,93,93,93,93,93,91,91,91,91,91,91,91,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,91,89,89,90,91,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,91,89,90,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,91,91,91,91,91,91,91,91,91,91,89,89,89,89,89,89,89,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,89,89,89,89,91,89,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,89,89,89,89,89,91,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,94,94,94,94,94,94,94,94,94,94,89,89,89,89,89,89,95,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,90,89,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,89,90,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,94,94,94,94,94,94,94,94,94,94,89,89,89,89,89,89,89,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,90,89,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,89,90,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,97,97,98,97,98,97,97,98,98,97,97,97,99,97,97,100,100,100,100,100,100,100,100,100,100,97,97,97,97,97,97,97,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,98,97,98,98,96,97,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,98,98,98,97,98,96,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,97,97,97,97,97,97,97,97,97,97,98,98,98,98,98,98,98,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,98,98,98,98,97,98,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,98,98,98,98,98,97,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,101,101,101,101,101,101,101,101,101,101,98,98,98,98,98,98,102,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,98,98,98,98,101,98,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,98,98,98,98,98,101,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,103,103,103,103,103,103,103,103,103,103,98,98,98,98,98,98,98,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,98,98,98,98,103,98,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,98,98,98,98,98,103,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,105,105,105,105,105,105,105,105,105,105,104,104,104,104,104,104,104,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,104,104,104,104,105,104,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,104,104,104,104,104,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,106,106,106,106,106,106,106,106,106,106,107,107,107,107,107,107,107,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,107,107,107,107,107,107,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,107,107,107,107,107,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,110,108,108,108,108,108,108,108,108,108,108,108,108,108,108,109,109,109,109,109,109,109,109,109,109,111,108,108,108,108,110,108,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,108,108,108,108,109,108,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,108,108,108,108,108,109,111,108,108,112,113,108,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,116,114,114,114,114,114,114,114,114,114,114,114,114,114,114,115,115,115,115,115,115,115,115,115,115,117,114,114,114,114,116,114,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,114,114,114,114,115,114,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,114,114,114,114,114,115,117,114,119,118,120,118,121,118,118,118,118,118,118,118,118,118,118,123,118,123,123,123,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,123,118,118,118,118,124,125,118,126,118,127,128,129,130,131,124,118,118,118,118,118,118,118,118,118,118,132,118,133,129,134,135,118,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,136,137,129,138,122,118,122,122,122,122,122,122,122,122,139,122,122,122,122,122,122,122,122,140,122,122,141,122,142,122,122,122,143,144,118,138,118,122,118,118,118,118,118,118,118,118,118,145,118,145,145,145,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,145,118,118,118,118,146,147,118,148,118,149,150,151,152,153,146,118,118,118,118,118,118,118,118,118,118,154,118,155,151,156,157,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,158,159,151,120,115,118,115,115,115,115,115,115,115,115,160,115,115,115,115,115,115,115,115,161,115,115,162,115,163,115,115,115,164,165,118,120,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,166,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,167,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,168,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,169,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,170,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,166,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,115,115,171,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,172,115,115,115,115,115,115,115,173,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,174,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,175,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,166,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,176,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,166,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,177,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,178,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,170,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,180,179,181,179,182,179,151,179,183,179,179,179,179,179,179,179,184,179,185,179,186,179,151,179,187,179,151,179,188,179,182,179,190,189,191,191,191,191,191,191,191,191,191,193,191,193,193,193,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,193,191,191,191,191,191,191,191,194,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,191,195,191,191,192,191,192,192,192,196,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,191,191,191,191,191,192,197,191,191,191,191,191,191,191,191,191,191,199,191,199,199,199,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,199,191,191,191,191,191,191,191,200,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,191,201,191,191,198,191,198,198,198,202,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,191,191,191,191,191,198,204,203,204,204,204,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,204,203,203,203,203,203,203,203,205,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,206,203,207,203,208,203,208,208,208,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,208,203,203,203,203,203,203,203,209,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,210,203,211,212,214,213,215,213,216,213,217,213,218,213,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,219,219,219,219,219,219,219,219,219,219,220,220,220,220,220,220,220,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,220,220,220,220,220,220,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,220,220,220,220,220,219,221,211,222,223,222,222,222,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,222,211,211,224,211,211,211,211,211,211,211,211,211,211,211,211,225,225,225,225,225,225,225,225,225,225,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,226,211,227,228,227,227,227,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,227,211,211,229,211,211,211,211,211,211,211,211,211,211,211,211,230,230,230,230,230,230,230,230,230,230,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,231,211,233,234,233,233,233,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,233,232,232,235,232,232,232,232,232,232,232,232,232,232,232,232,236,236,236,236,236,236,236,236,236,236,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,237,232,239,240,239,239,239,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,239,238,238,241,238,238,238,238,238,238,238,238,238,238,238,238,242,242,242,242,242,242,242,242,242,242,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,243,238,239,244,239,239,239,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,239,238,238,241,238,238,238,238,238,238,238,238,238,238,238,238,242,242,242,242,242,242,242,242,242,242,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,243,238,223,211,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,247,247,245,247,245,247,247,245,245,247,247,247,248,247,247,249,249,249,249,249,249,249,249,249,249,247,247,247,247,247,247,247,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,245,247,245,245,246,247,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,245,245,245,247,245,246,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,247,247,247,247,247,247,247,247,247,247,245,245,245,245,245,245,245,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,245,245,245,245,247,245,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,245,245,245,245,245,247,250,247,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,247,245,250,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,252,245,245,245,245,253,245,245,245,245,245,254,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,221,245,245,245,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,245,245,245,245,251,255,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,245,245,245,254,245,251,257,257,257,257,257,257,257,257,257,257,258,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,256,256,256,256,256,256,256,256,256,256,257,257,257,257,257,257,257,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,257,257,257,257,256,257,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,257,257,257,257,257,256,260,259,263,262,258,257,263,264,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,252,245,245,245,245,253,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,245,245,245,245,251,255,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,245,245,245,245,245,251,266,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,263,265,263,266,267,268,268,268,267,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,267,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,269,268,267,270,270,270,267,270,270,270,270,270,271,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,267,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,272,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,273,270,267,270,270,270,267,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,267,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,274,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,273,270,267,275,275,275,267,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,267,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,276,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,277,275,267,278,278,278,267,278,278,278,278,278,279,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,267,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,280,278,267,278,278,278,267,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,267,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,280,278,267,268,268,268,267,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,267,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,281,268,267,282,282,282,267,282,282,282,282,282,283,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,267,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,284,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,285,282,282,282,282,282,282,286,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,287,282,267,282,282,282,267,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,267,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,287,282,288,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,289,267,289,267,267,290,290,290,267,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,267,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,291,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,292,290,267,270,270,270,267,270,270,270,270,270,271,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,267,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,274,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,273,270,267,293,293,293,267,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,267,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,294,294,294,294,294,294,294,294,294,294,293,293,293,293,293,293,293,294,294,294,294,294,294,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,294,294,294,294,294,294,293,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,296,211,211,211,211,211,211,211,211,211,211,211,211,211,211,295,295,295,295,295,295,295,295,295,295,297,211,211,298,211,296,211,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,211,211,211,211,295,211,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,211,211,211,211,211,295,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,296,245,245,245,245,245,245,245,245,245,245,245,245,245,245,295,295,295,295,295,295,295,295,295,295,297,245,245,298,245,296,245,295,295,295,295,295,295,299,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,295,245,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,245,295,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,296,245,245,245,245,245,245,245,245,245,245,245,245,245,245,295,295,295,295,295,295,295,295,295,295,297,245,245,298,245,296,245,295,295,295,295,295,295,295,295,300,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,295,245,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,245,295,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,296,245,245,245,245,245,245,245,245,245,245,245,245,245,245,295,295,295,295,295,295,295,295,295,295,297,245,245,298,245,296,245,295,295,295,295,295,295,295,295,295,295,295,295,295,301,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,295,245,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,245,295,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,296,245,245,245,245,245,245,245,245,245,245,245,245,245,245,295,295,295,295,295,295,295,295,295,295,297,245,245,298,245,296,245,295,295,295,301,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,295,245,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,245,295,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,304,302,302,302,302,302,302,302,302,302,302,302,302,302,302,303,303,303,303,303,303,303,303,303,303,305,302,302,302,302,304,302,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,302,302,302,302,303,302,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,302,302,302,302,302,303,305,302,302,306,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,308,308,308,308,308,308,308,308,308,308,307,307,307,307,307,307,307,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,307,307,307,307,308,307,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,307,307,307,307,307,308,310,309,310,309,309,311,311,311,311,311,311,311,311,311,311,309,311,311,311,311,311,311,311,311,311,311,309,312,312,312,312,312,312,312,312,312,312,309,314,314,314,314,314,314,314,314,314,314,313,315,315,315,315,315,315,315,315,315,315,313,317,316,318,316,319,316,320,316,322,321,323,321,324,321,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,325,325,325,325,325,325,325,325,325,325,307,307,307,307,307,307,307,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,307,307,307,307,325,307,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,307,307,307,307,307,325,326,313,327,328,327,327,327,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,327,313,313,329,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,330,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,331,313,332,333,332,332,332,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,332,313,313,334,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,335,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,336,313,338,339,338,338,338,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,338,337,337,340,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,341,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,342,337,344,345,344,344,344,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,343,343,346,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,347,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,348,343,344,345,344,344,344,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,343,343,346,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,349,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,348,343,344,350,344,344,344,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,343,343,346,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,347,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,348,343,351,313,328,313,353,354,353,353,353,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,353,352,352,355,352,352,356,352,352,352,352,352,352,352,357,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,358,352,360,354,360,360,360,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,360,359,359,355,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,358,359,363,362,365,364,366,361,367,361,368,352,370,369,369,369,370,369,369,369,369,371,372,371,371,371,369,369,369,369,369,369,369,369,369,369,369,369,370,369,369,369,369,369,371,369,369,373,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,374,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,375,369,369,376,369,371,377,371,371,371,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,371,377,378,379,380,381,382,384,383,386,387,386,386,386,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,386,385,372,383,388,383,390,389,389,389,390,389,389,389,389,391,392,391,391,391,389,389,389,389,389,389,389,389,389,389,389,389,390,389,389,389,389,389,391,389,389,393,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,394,389,391,395,391,391,391,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,391,395,397,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,398,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,399,396,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,13,13,13,13,13,13,13,13,13,13,400,400,400,400,400,400,400,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,400,400,400,400,13,400,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,400,400,400,400,400,13,16,16,16,16,16,16,16,16,16,16,400,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,13,13,13,13,13,13,13,13,13,13,401,401,401,401,401,401,401,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,401,401,401,401,17,401,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,401,401,401,401,401,17,404,403,403,403,404,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,404,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,405,405,405,405,405,405,405,405,403,403,403,403,403,403,403,403,403,403,403,406,403,403,403,403,403,403,403,403,403,407,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,408,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,409,403,403,410,403,411,412,414,414,414,414,414,414,414,414,413,415,415,415,415,415,415,415,415,413,413,416,416,42,42,42,416,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,416,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,417,42,418,419,420,420,42,42,42,420,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,420,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,421,42,41,420,422,423,424,424,27,27,27,424,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,424,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,425,27,426,426,426,426,426,426,426,426,426,426,424,424,424,424,424,424,424,426,426,426,426,426,426,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,426,426,426,426,426,426,424,428,428,428,428,428,428,428,428,428,428,427,427,427,427,427,427,427,428,428,428,428,428,428,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,428,428,428,428,428,428,427,427,429,429,429,429,429,429,429,429,429,429,420,420,420,420,420,420,420,429,429,429,429,429,429,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,429,429,429,429,429,429,420,431,431,431,431,431,431,431,431,431,431,430,430,430,430,430,430,430,431,431,431,431,431,431,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,431,431,431,431,431,431,430,430,420,20,20,20,420,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,420,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,432,20,416,27,27,27,416,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,416,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,29,27,416,433,433,433,416,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,416,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,434,433,435,436,436,433,433,433,436,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,436,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,437,433,438,438,438,438,438,438,438,438,438,438,436,436,436,436,436,436,436,438,438,438,438,438,438,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,438,438,438,438,438,438,436,440,440,440,440,440,440,440,440,440,440,439,439,439,439,439,439,439,440,440,440,440,440,440,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,440,440,440,440,440,440,439,439,436,20,20,20,436,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,436,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,432,20,441,436,436,27,27,27,436,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,436,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,29,27,443,443,443,443,443,443,443,443,443,443,442,442,442,442,442,442,442,443,443,443,443,443,443,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,443,443,443,443,443,443,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,444,442,445,445,445,445,445,445,445,445,445,445,442,442,442,442,442,442,442,445,445,445,445,445,445,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,445,445,445,445,445,445,442,446,446,446,446,446,446,446,446,446,446,442,442,442,442,442,442,442,446,446,446,446,446,446,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,446,446,446,446,446,446,442,447,447,447,447,447,447,447,447,447,447,442,442,442,442,442,442,442,447,447,447,447,447,447,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,447,447,447,447,447,447,442,448,451,450,450,450,451,450,450,450,450,452,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,451,450,450,450,450,450,452,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,453,453,453,453,453,453,453,453,453,453,450,450,450,450,450,450,450,453,453,453,453,453,453,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,453,453,453,453,453,453,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,454,450,451,450,450,450,451,450,450,450,450,449,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,451,450,450,450,450,450,449,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,455,455,455,455,455,455,455,455,455,455,450,450,450,450,450,450,450,455,455,455,455,455,455,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,455,455,455,455,455,455,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,456,450,449,451,455,455,455,451,455,455,455,455,449,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,451,455,455,455,455,455,449,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,449,455,457,451,458,458,458,451,458,458,458,458,452,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,452,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,453,453,453,453,453,453,453,453,453,453,458,458,458,458,458,458,458,453,453,453,453,453,453,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,453,453,453,453,453,453,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,449,458,451,458,458,458,451,458,458,458,458,449,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,449,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,455,455,455,455,455,455,455,455,455,455,458,458,458,458,458,458,458,455,455,455,455,455,455,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,455,455,455,455,455,455,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,460,460,460,460,460,460,460,460,460,460,458,458,458,458,458,458,458,460,460,460,460,460,460,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,460,460,460,460,460,460,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,453,453,453,453,453,453,453,453,453,453,458,458,458,458,458,458,458,453,453,453,453,453,453,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,453,453,453,453,453,453,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,462,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,463,463,463,463,463,463,463,463,463,463,458,458,458,458,458,458,458,463,463,463,463,463,463,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,463,463,463,463,463,463,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,464,464,464,464,464,464,464,464,464,464,458,458,458,458,458,458,458,464,464,464,464,464,464,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,464,464,464,464,464,464,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,465,465,465,465,465,465,465,465,465,465,458,458,458,458,458,458,458,465,465,465,465,465,465,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,465,465,465,465,465,465,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,466,466,466,466,466,466,466,466,466,466,458,458,458,458,458,458,458,466,466,466,466,466,466,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,466,466,466,466,466,466,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,467,467,467,467,467,467,467,467,467,467,458,458,458,458,458,458,458,467,467,467,467,467,467,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,467,467,467,467,467,467,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,449,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,449,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,467,467,467,467,467,467,467,467,467,467,458,458,458,458,458,458,458,467,467,467,467,467,467,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,467,467,467,467,467,467,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,449,458,468,469,471,471,471,471,471,471,471,471,471,471,470,470,470,470,470,470,470,471,471,471,471,471,471,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,471,471,471,471,471,471,470,470,473,472,472,472,473,472,472,472,472,472,474,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,473,472,472,472,472,472,472,472,472,475,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,476,472,478,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,479,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,480,477,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,48,48,48,48,48,48,48,48,48,48,481,481,481,481,481,481,481,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,481,481,481,481,48,481,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,481,481,481,481,481,48,51,51,51,51,51,51,51,51,51,51,481,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,48,48,48,48,48,48,48,48,48,48,482,482,482,482,482,482,482,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,482,482,482,482,52,482,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,482,482,482,482,482,52,485,484,484,484,485,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,485,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,486,486,486,486,486,486,486,486,484,484,484,484,484,484,484,484,484,484,484,487,484,484,484,484,484,484,484,484,484,488,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,489,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,490,484,484,491,484,492,493,495,495,495,495,495,495,495,495,494,496,496,496,496,496,496,496,496,494,494,497,497,77,77,77,497,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,497,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,498,77,499,500,501,501,77,77,77,501,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,501,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,502,77,76,501,503,504,505,505,62,62,62,505,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,505,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,506,62,507,507,507,507,507,507,507,507,507,507,505,505,505,505,505,505,505,507,507,507,507,507,507,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,507,507,507,507,507,507,505,509,509,509,509,509,509,509,509,509,509,508,508,508,508,508,508,508,509,509,509,509,509,509,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,509,509,509,509,509,509,508,508,510,510,510,510,510,510,510,510,510,510,501,501,501,501,501,501,501,510,510,510,510,510,510,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,510,510,510,510,510,510,501,512,512,512,512,512,512,512,512,512,512,511,511,511,511,511,511,511,512,512,512,512,512,512,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,512,512,512,512,512,512,511,511,501,55,55,55,501,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,501,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,513,55,497,62,62,62,497,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,497,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,497,514,514,514,497,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,497,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,515,514,516,517,517,514,514,514,517,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,517,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,518,514,519,519,519,519,519,519,519,519,519,519,517,517,517,517,517,517,517,519,519,519,519,519,519,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,519,519,519,519,519,519,517,521,521,521,521,521,521,521,521,521,521,520,520,520,520,520,520,520,521,521,521,521,521,521,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,521,521,521,521,521,521,520,520,517,55,55,55,517,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,517,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,513,55,522,517,517,62,62,62,517,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,517,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,524,524,524,524,524,524,524,524,524,524,523,523,523,523,523,523,523,524,524,524,524,524,524,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,524,524,524,524,524,524,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,525,523,526,526,526,526,526,526,526,526,526,526,523,523,523,523,523,523,523,526,526,526,526,526,526,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,526,526,526,526,526,526,523,527,527,527,527,527,527,527,527,527,527,523,523,523,523,523,523,523,527,527,527,527,527,527,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,527,527,527,527,527,527,523,528,528,528,528,528,528,528,528,528,528,523,523,523,523,523,523,523,528,528,528,528,528,528,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,528,528,528,528,528,528,523,529,532,531,531,531,532,531,531,531,531,533,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,532,531,531,531,531,531,533,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,534,534,534,534,534,534,534,534,534,534,531,531,531,531,531,531,531,534,534,534,534,534,534,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,534,534,534,534,534,534,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,535,531,532,531,531,531,532,531,531,531,531,530,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,532,531,531,531,531,531,530,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,536,536,536,536,536,536,536,536,536,536,531,531,531,531,531,531,531,536,536,536,536,536,536,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,536,536,536,536,536,536,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,537,531,530,532,536,536,536,532,536,536,536,536,530,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,532,536,536,536,536,536,530,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,530,536,538,532,539,539,539,532,539,539,539,539,533,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,533,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,534,534,534,534,534,534,534,534,534,534,539,539,539,539,539,539,539,534,534,534,534,534,534,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,534,534,534,534,534,534,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,530,539,532,539,539,539,532,539,539,539,539,530,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,530,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,536,536,536,536,536,536,536,536,536,536,539,539,539,539,539,539,539,536,536,536,536,536,536,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,536,536,536,536,536,536,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,541,541,541,541,541,541,541,541,541,541,539,539,539,539,539,539,539,541,541,541,541,541,541,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,541,541,541,541,541,541,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,534,534,534,534,534,534,534,534,534,534,539,539,539,539,539,539,539,534,534,534,534,534,534,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,534,534,534,534,534,534,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,543,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,544,544,544,544,544,544,544,544,544,544,539,539,539,539,539,539,539,544,544,544,544,544,544,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,544,544,544,544,544,544,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,545,545,545,545,545,545,545,545,545,545,539,539,539,539,539,539,539,545,545,545,545,545,545,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,545,545,545,545,545,545,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,546,546,546,546,546,546,546,546,546,546,539,539,539,539,539,539,539,546,546,546,546,546,546,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,546,546,546,546,546,546,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,547,547,547,547,547,547,547,547,547,547,539,539,539,539,539,539,539,547,547,547,547,547,547,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,547,547,547,547,547,547,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,548,548,548,548,548,548,548,548,548,548,539,539,539,539,539,539,539,548,548,548,548,548,548,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,548,548,548,548,548,548,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,530,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,530,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,548,548,548,548,548,548,548,548,548,548,539,539,539,539,539,539,539,548,548,548,548,548,548,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,548,548,548,548,548,548,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,530,539,549,550,552,552,552,552,552,552,552,552,552,552,551,551,551,551,551,551,551,552,552,552,552,552,552,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,552,552,552,552,552,552,551,551,554,553,553,553,554,553,553,553,553,555,556,555,555,555,553,553,553,553,553,553,553,553,553,553,553,553,554,553,553,553,553,553,555,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,557,553,555,558,555,555,555,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,555,558,559,560,560,560,559,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,559,560,562,561,561,561,562,561,561,561,561,561,563,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,562,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,564,561,565,566,566,566,565,566,566,566,566,566,567,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,565,566,569,568,568,568,569,568,568,568,568,568,570,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,569,568,568,568,568,568,568,568,568,571,568,573,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,574,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,575,572,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,83,83,83,83,83,83,83,83,83,83,576,576,576,576,576,576,576,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,576,576,576,576,83,576,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,576,576,576,576,576,83,86,86,86,86,86,86,86,86,86,86,576,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,83,83,83,83,83,83,83,83,83,83,577,577,577,577,577,577,577,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,577,577,577,577,87,577,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,577,577,577,577,577,87,579,578,578,578,579,578,578,578,578,578,580,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,579,578,582,581,581,581,582,581,581,581,581,583,584,583,583,583,581,581,581,581,581,581,581,581,581,581,581,581,582,581,581,581,581,581,583,581,581,585,581,583,586,583,583,583,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,583,586,588,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,589,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,590,587,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,90,90,90,90,90,90,90,90,90,90,591,591,591,591,591,591,591,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,591,591,591,591,90,591,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,591,591,591,591,591,90,93,93,93,93,93,93,93,93,93,93,591,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,90,90,90,90,90,90,90,90,90,90,592,592,592,592,592,592,592,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,592,592,592,592,94,592,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,592,592,592,592,592,94,594,593,593,593,594,593,593,593,593,595,596,595,595,595,593,593,593,593,593,593,593,593,593,593,593,593,594,593,593,593,593,593,595,593,595,597,595,595,595,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,595,597,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,598,598,598,598,598,598,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,598,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,600,600,600,600,600,600,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,600,601,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,602,98,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,96,96,96,96,96,96,96,96,96,96,603,603,603,603,603,603,603,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,603,603,603,603,96,603,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,603,603,603,603,603,96,100,100,100,100,100,100,100,100,100,100,603,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,101,101,101,101,101,101,101,101,101,101,604,604,604,604,604,604,604,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,604,604,604,604,101,604,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,604,604,604,604,604,101,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,103,103,103,103,103,103,103,103,103,103,605,605,605,605,605,605,605,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,605,605,605,605,103,605,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,605,605,605,605,605,103,607,608,608,608,607,608,608,608,608,609,610,609,609,609,608,608,608,608,608,608,608,608,608,608,608,608,607,608,608,608,608,608,609,611,608,612,613,614,615,608,608,608,616,617,608,617,608,618,608,608,608,608,608,608,608,608,608,608,619,608,620,621,622,608,608,623,624,623,623,625,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,626,627,608,618,628,618,629,630,631,632,633,634,606,606,635,606,606,606,636,637,638,606,606,639,640,641,642,606,643,606,644,606,608,645,608,617,608,606,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,647,646,646,646,646,646,646,646,646,646,646,646,646,646,646,606,606,606,606,606,606,606,606,606,606,646,646,646,647,646,647,646,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,646,646,646,646,606,646,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,646,646,646,646,646,606,609,648,609,609,609,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,609,648,649,618,650,650,618,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,618,650,651,652,653,654,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,105,105,655,105,655,105,105,655,655,105,105,105,657,105,105,658,658,658,658,658,658,658,658,658,658,105,105,105,105,105,105,105,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,655,105,655,655,656,105,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,655,655,655,105,655,656,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,656,656,656,656,656,656,656,656,656,656,659,659,659,659,659,659,659,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,659,659,659,659,656,659,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,659,659,659,659,659,656,658,658,658,658,658,658,658,658,658,658,659,660,650,618,650,618,650,618,650,662,661,618,663,650,618,650,664,618,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,618,655,618,650,618,618,650,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,647,646,646,646,646,646,646,646,646,646,646,646,646,646,646,623,623,623,623,623,623,623,623,623,623,646,646,646,647,646,647,646,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,646,646,646,646,623,646,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,646,646,646,646,646,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,623,666,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,623,623,623,667,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,623,623,623,623,623,668,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,623,623,623,623,623,623,623,623,623,623,669,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,623,623,623,623,623,623,623,623,623,623,670,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,669,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,664,655,610,655,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,672,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,673,674,606,606,606,606,606,675,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,676,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,677,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,678,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,679,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,680,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,681,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,682,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,683,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,684,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,685,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,686,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,682,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,687,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,686,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,688,606,689,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,690,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,691,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,692,606,606,606,606,606,606,606,606,606,606,606,606,693,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,694,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,695,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,696,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,697,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,698,606,606,606,606,606,606,606,606,606,606,699,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,700,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,701,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,691,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,702,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,703,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,647,704,704,704,704,704,704,704,704,704,704,704,704,704,704,606,606,606,606,606,606,606,606,606,606,704,704,704,647,704,647,704,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,704,704,704,704,606,704,606,606,606,606,606,606,606,606,705,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,704,704,704,704,704,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,706,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,707,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,708,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,709,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,710,606,711,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,712,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,684,606,606,606,713,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,714,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,715,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,700,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,716,606,606,606,606,606,606,606,606,606,606,606,606,606,638,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,698,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,684,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,717,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,718,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,719,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,700,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,720,606,606,606,721,606,606,606,606,606,722,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,722,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,723,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,724,606,606,606,606,606,606,606,606,606,606,606,606,606,606,725,726,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,727,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,700,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,728,606,606,729,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,695,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,730,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,731,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,713,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,732,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,638,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,733,606,606,606,606,606,606,606,606,606,727,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,695,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,734,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,735,606,606,606,606,606,606,606,736,606,606,606,606,606,606,606,737,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,713,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,701,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,721,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,738,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,695,606,606,606,719,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,739,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,740,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,689,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,618,650,742,743,743,743,742,743,743,743,743,744,743,744,744,744,743,743,743,743,743,743,743,743,743,743,743,743,742,743,743,743,743,743,744,743,743,745,743,743,743,743,743,743,743,743,743,743,746,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,743,747,743,743,741,743,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,743,743,743,743,743,741,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,110,748,748,748,748,748,748,748,748,748,748,748,748,748,748,109,109,109,109,109,109,109,109,109,109,111,748,748,748,748,110,748,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,748,748,748,748,109,748,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,748,748,748,748,748,109,744,749,744,744,744,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,744,749,750,751,752,753,754,748,755,748,756,758,759,759,759,758,759,759,759,759,760,761,760,760,760,759,759,759,759,759,759,759,759,759,759,759,759,758,759,759,759,759,759,760,762,759,763,759,764,765,759,759,759,766,767,759,767,759,764,759,759,759,759,759,759,759,759,759,759,759,759,768,769,770,759,759,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,772,773,759,764,757,764,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,759,774,759,767,759,757,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,776,775,775,775,775,775,775,775,775,775,775,775,775,775,775,757,757,757,757,757,757,757,757,757,757,775,775,775,775,775,776,775,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,775,775,775,775,757,775,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,775,775,775,775,775,757,778,777,779,760,780,760,760,760,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,760,780,781,764,782,782,764,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,764,782,783,784,785,786,764,782,764,782,764,782,764,787,782,764,782,789,764,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,764,788,764,782,764,764,782,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,776,790,790,790,790,790,790,790,790,790,790,790,790,790,790,771,771,771,771,771,771,771,771,771,771,790,790,790,790,790,776,790,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,790,790,790,790,771,790,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,790,790,790,790,790,771,789,788,761,788,764,782,792,791,791,791,792,791,791,791,791,793,794,793,793,793,791,791,791,791,791,791,791,791,791,791,791,791,792,791,791,791,791,791,793,791,791,795,791,120,796,791,797,791,798,120,151,799,153,120,791,791,791,791,791,791,791,791,791,791,800,791,801,151,802,803,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,151,804,151,120,791,791,791,791,791,791,791,791,791,791,805,791,791,791,791,791,791,791,791,806,791,791,807,791,808,791,791,791,164,165,791,120,791,809,809,809,809,809,809,809,809,809,793,809,793,793,793,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,793,809,809,809,809,146,147,809,148,809,149,150,151,152,153,146,809,809,809,809,809,809,809,809,809,809,154,809,155,151,156,157,809,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,158,159,151,120,115,809,115,115,115,115,115,115,115,115,160,115,115,115,115,115,115,115,115,161,115,115,162,115,163,115,115,115,164,165,809,120,809,115,810,811,811,811,810,811,811,811,811,151,812,151,151,151,811,811,811,811,811,811,811,811,811,811,811,811,810,811,811,811,811,811,151,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,151,811,151,812,151,151,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,114,114,114,114,114,120,114,114,114,114,114,114,114,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,114,151,812,151,151,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,114,813,151,812,151,151,151,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,151,814,814,814,814,814,814,814,814,814,815,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,151,814,151,812,151,151,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,151,114,816,810,151,810,818,817,820,821,820,820,820,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,820,819,822,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,116,810,810,810,810,810,810,810,810,810,810,810,810,810,810,115,115,115,115,115,115,115,115,115,115,117,810,810,810,810,116,810,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,810,810,810,810,115,810,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,810,810,810,810,810,115,823,151,812,151,151,151,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,151,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,151,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,120,810,824,825,826,827,828,829,151,812,151,151,151,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,151,810,810,810,810,810,810,810,810,810,120,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,151,810,151,817,120,830,120,830,831,832,831,831,831,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,831,819,833,830,834,834,834,834,834,834,834,834,834,123,834,123,123,123,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,123,834,834,834,834,124,125,834,126,834,127,128,129,130,131,124,834,834,834,834,834,834,834,834,834,834,132,834,133,129,134,135,834,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,136,137,129,138,122,834,122,122,122,122,122,122,122,122,139,122,122,122,122,122,122,122,122,140,122,122,141,122,142,122,122,122,143,144,834,138,834,122,151,830,835,830,836,830,837,830,838,190,190,190,838,190,190,190,190,839,190,839,839,839,190,190,190,190,190,190,190,190,190,190,190,190,838,190,190,190,190,190,839,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,190,840,190,190,192,190,192,192,192,196,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,190,190,190,190,190,192,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,841,189,189,189,189,189,189,189,189,189,189,189,189,189,189,192,192,192,192,192,192,192,192,192,192,190,189,189,189,189,841,189,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,189,189,189,189,192,189,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,189,189,189,189,189,192,842,842,842,842,842,842,842,842,842,193,842,193,193,193,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,193,842,842,842,842,842,842,842,194,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,842,195,842,842,192,842,192,192,192,196,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,842,842,842,842,842,192,843,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,841,842,842,842,842,842,842,842,842,842,842,842,842,842,842,192,192,192,192,192,192,192,192,192,192,190,842,842,842,842,841,842,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,842,842,842,842,192,842,192,192,192,192,192,192,192,192,192,192,192,192,192,192,844,192,192,192,192,192,192,192,192,192,192,192,842,842,842,842,842,192,197,842,846,845,845,845,846,845,845,845,845,847,845,847,847,847,845,845,845,845,845,845,845,845,845,845,845,845,846,845,845,845,845,845,847,845,845,848,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,849,845,845,845,845,845,845,845,850,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,851,845,847,852,847,847,847,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,847,852,853,854,855,856,858,857,859,860,857,861,863,864,864,864,863,864,864,864,864,865,866,865,865,865,864,864,864,864,864,864,864,864,864,864,864,864,863,864,864,864,864,864,865,864,864,867,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,864,868,864,864,862,864,862,862,862,862,862,862,862,862,869,862,862,862,862,862,862,862,862,870,862,862,871,862,872,862,862,862,864,864,864,864,864,862,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,862,862,862,862,862,862,862,862,862,862,873,873,873,873,873,873,873,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,873,873,873,873,862,873,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,873,873,873,873,873,862,865,874,865,865,865,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,865,874,875,876,877,878,879,881,880,882,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,884,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,885,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,886,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,887,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,888,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,884,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,862,862,889,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,890,862,862,862,862,862,862,862,891,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,892,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,893,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,884,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,894,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,884,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,895,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,896,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,888,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,898,221,221,221,898,221,221,221,221,899,900,899,899,899,221,221,221,221,221,221,221,221,221,221,221,221,898,221,221,221,221,221,899,901,221,902,221,903,904,221,905,221,906,907,221,908,909,910,221,221,221,221,221,221,221,221,221,221,911,221,912,913,914,915,221,916,917,916,916,918,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,919,920,221,921,922,221,923,924,925,926,927,928,897,897,929,897,897,897,930,931,932,897,897,933,934,935,936,897,937,897,938,897,939,940,221,921,221,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,945,944,944,946,944,947,949,950,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,951,948,953,952,954,955,956,899,957,899,899,899,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,899,957,959,958,961,962,961,961,961,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,961,960,221,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,221,963,964,965,966,967,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,968,968,968,968,968,968,968,968,968,968,969,969,969,969,969,969,969,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,969,969,969,969,969,969,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,969,969,969,969,969,968,972,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,221,971,973,975,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,221,974,221,211,222,223,222,222,222,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,222,971,971,224,971,971,971,971,971,971,971,971,971,971,971,971,225,225,225,225,225,225,225,225,225,225,971,971,971,221,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,226,971,239,240,239,239,239,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,239,238,238,241,238,238,238,238,238,238,238,238,238,238,238,238,242,242,242,242,242,242,242,242,242,242,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,243,238,222,223,222,222,222,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,222,971,971,224,971,971,971,971,971,971,971,971,971,971,971,971,225,225,225,225,225,225,225,225,225,225,971,971,971,221,221,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,226,971,977,963,979,978,981,980,963,982,982,982,963,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,963,982,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,984,985,963,986,247,987,985,963,963,988,989,963,989,963,247,963,963,963,963,963,963,963,963,963,963,990,963,991,992,993,963,994,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,995,963,963,247,983,247,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,963,996,963,997,963,983,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,999,998,998,998,998,998,998,998,998,998,998,998,998,998,998,983,983,983,983,983,983,983,983,983,983,998,998,998,1e3,998,999,998,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,998,998,998,998,983,998,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,998,998,998,998,998,983,1002,1001,1003,1005,1006,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1007,1004,1009,1010,1008,1011,1012,1013,1014,247,998,998,1015,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,247,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,246,246,246,246,246,246,246,246,246,246,998,998,998,998,998,998,998,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,998,998,998,998,246,998,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,998,998,998,998,998,246,249,249,249,249,249,249,249,249,249,249,998,1016,998,247,998,247,998,247,1017,998,247,998,247,998,247,247,998,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1018,1018,1018,1018,1018,1018,1021,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1018,1018,1018,1018,1019,1018,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1018,1018,1018,1018,1018,1019,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1022,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1024,1024,1024,1024,1024,1024,1024,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1024,1024,1024,1024,1025,1024,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1024,1024,1024,1024,1024,1025,1016,998,1015,998,1027,1028,963,1029,262,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,263,252,264,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,263,253,263,266,221,963,921,221,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,221,963,221,972,963,1033,1032,1032,1032,1033,1032,1032,1032,1032,1034,1035,1034,1034,1034,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1033,1032,1032,1032,1032,1032,1034,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1032,1037,1032,1032,1036,1032,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1032,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1038,1038,1038,1038,1039,1038,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1038,1038,1038,1038,1038,1039,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1040,1040,1040,1040,1040,1040,1040,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1040,1040,1040,1040,1041,1040,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1040,1040,1040,1040,1040,1041,1044,1043,1043,1043,1044,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1044,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1045,1045,1045,1045,1045,1045,1045,1045,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1046,1043,1043,1043,1043,1043,1043,1043,1043,1043,1047,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1048,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1049,1043,1043,1050,1043,1051,1052,1054,1054,1054,1054,1054,1054,1054,1054,1053,1055,1055,1055,1055,1055,1055,1055,1055,1053,1053,1056,1056,290,290,290,1056,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,1056,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,291,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,1057,290,1058,1059,1060,1060,290,290,290,1060,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,1060,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,291,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,1061,290,289,1060,1062,1063,1064,1064,275,275,275,1064,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,1064,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,276,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,1065,275,1066,1066,1066,1066,1066,1066,1066,1066,1066,1066,1064,1064,1064,1064,1064,1064,1064,1066,1066,1066,1066,1066,1066,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1066,1066,1066,1066,1066,1066,1064,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1067,1067,1067,1067,1067,1067,1067,1068,1068,1068,1068,1068,1068,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1068,1068,1068,1068,1068,1068,1067,1067,1069,1069,1069,1069,1069,1069,1069,1069,1069,1069,1060,1060,1060,1060,1060,1060,1060,1069,1069,1069,1069,1069,1069,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1069,1069,1069,1069,1069,1069,1060,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1070,1070,1070,1070,1070,1070,1070,1071,1071,1071,1071,1071,1071,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1071,1071,1071,1071,1071,1071,1070,1070,1060,268,268,268,1060,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1060,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1072,268,1056,275,275,275,1056,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,1056,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,276,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,277,275,1056,1073,1073,1073,1056,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1056,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1074,1073,1075,1076,1076,1073,1073,1073,1076,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1076,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1077,1073,1078,1078,1078,1078,1078,1078,1078,1078,1078,1078,1076,1076,1076,1076,1076,1076,1076,1078,1078,1078,1078,1078,1078,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1078,1078,1078,1078,1078,1078,1076,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1079,1079,1079,1079,1079,1079,1079,1080,1080,1080,1080,1080,1080,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1080,1080,1080,1080,1080,1080,1079,1079,1076,268,268,268,1076,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1076,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1072,268,1081,1076,1076,275,275,275,1076,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,1076,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,276,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,277,275,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1082,1082,1082,1082,1082,1082,1082,1083,1083,1083,1083,1083,1083,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1083,1083,1083,1083,1083,1083,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1084,1082,1085,1085,1085,1085,1085,1085,1085,1085,1085,1085,1082,1082,1082,1082,1082,1082,1082,1085,1085,1085,1085,1085,1085,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1085,1085,1085,1085,1085,1085,1082,1086,1086,1086,1086,1086,1086,1086,1086,1086,1086,1082,1082,1082,1082,1082,1082,1082,1086,1086,1086,1086,1086,1086,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1086,1086,1086,1086,1086,1086,1082,1087,1087,1087,1087,1087,1087,1087,1087,1087,1087,1082,1082,1082,1082,1082,1082,1082,1087,1087,1087,1087,1087,1087,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1087,1087,1087,1087,1087,1087,1082,1088,1091,1090,1090,1090,1091,1090,1090,1090,1090,1092,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1091,1090,1090,1090,1090,1090,1092,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1093,1093,1093,1093,1093,1093,1093,1093,1093,1093,1090,1090,1090,1090,1090,1090,1090,1093,1093,1093,1093,1093,1093,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1093,1093,1093,1093,1093,1093,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1094,1090,1091,1090,1090,1090,1091,1090,1090,1090,1090,1089,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1091,1090,1090,1090,1090,1090,1089,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1090,1090,1090,1090,1090,1090,1090,1095,1095,1095,1095,1095,1095,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1095,1095,1095,1095,1095,1095,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1096,1090,1089,1091,1095,1095,1095,1091,1095,1095,1095,1095,1089,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1091,1095,1095,1095,1095,1095,1089,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1089,1095,1097,1091,1098,1098,1098,1091,1098,1098,1098,1098,1092,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1092,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1089,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1089,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1098,1098,1098,1098,1098,1098,1098,1095,1095,1095,1095,1095,1095,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1095,1095,1095,1095,1095,1095,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1098,1098,1098,1098,1098,1098,1098,1101,1101,1101,1101,1101,1101,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1101,1101,1101,1101,1101,1101,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1103,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1098,1098,1098,1098,1098,1098,1098,1104,1104,1104,1104,1104,1104,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1104,1104,1104,1104,1104,1104,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1105,1105,1105,1105,1105,1105,1105,1105,1105,1105,1098,1098,1098,1098,1098,1098,1098,1105,1105,1105,1105,1105,1105,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1105,1105,1105,1105,1105,1105,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1106,1106,1106,1106,1106,1106,1106,1106,1106,1106,1098,1098,1098,1098,1098,1098,1098,1106,1106,1106,1106,1106,1106,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1106,1106,1106,1106,1106,1106,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1098,1098,1098,1098,1098,1098,1098,1107,1107,1107,1107,1107,1107,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1107,1107,1107,1107,1107,1107,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1089,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1089,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1110,1110,1110,1110,1110,1110,1110,1110,1110,1110,1098,1098,1098,1098,1098,1098,1098,1110,1110,1110,1110,1110,1110,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1110,1110,1110,1110,1110,1110,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1111,1111,1111,1111,1111,1111,1111,1111,1111,1111,1098,1098,1098,1098,1098,1098,1098,1111,1111,1111,1111,1111,1111,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1111,1111,1111,1111,1111,1111,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1112,1112,1112,1112,1112,1112,1112,1112,1112,1112,1098,1098,1098,1098,1098,1098,1098,1112,1112,1112,1112,1112,1112,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1112,1112,1112,1112,1112,1112,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1098,1098,1098,1098,1098,1098,1098,1113,1113,1113,1113,1113,1113,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1113,1113,1113,1113,1113,1113,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1114,1114,1114,1114,1114,1114,1114,1114,1114,1114,1098,1098,1098,1098,1098,1098,1098,1114,1114,1114,1114,1114,1114,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1114,1114,1114,1114,1114,1114,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1115,1115,1115,1115,1115,1115,1115,1115,1115,1115,1098,1098,1098,1098,1098,1098,1098,1115,1115,1115,1115,1115,1115,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1115,1115,1115,1115,1115,1115,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1098,1098,1098,1098,1098,1098,1098,1116,1116,1116,1116,1116,1116,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1116,1116,1116,1116,1116,1116,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1098,1098,1098,1098,1098,1098,1098,1117,1117,1117,1117,1117,1117,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1117,1117,1117,1117,1117,1117,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1098,1098,1098,1098,1098,1098,1098,1118,1118,1118,1118,1118,1118,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1118,1118,1118,1118,1118,1118,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1119,1119,1119,1119,1119,1119,1119,1119,1119,1119,1098,1098,1098,1098,1098,1098,1098,1119,1119,1119,1119,1119,1119,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1119,1119,1119,1119,1119,1119,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1120,1120,1120,1120,1120,1120,1120,1120,1120,1120,1098,1098,1098,1098,1098,1098,1098,1120,1120,1120,1120,1120,1120,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1120,1120,1120,1120,1120,1120,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1121,1122,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1123,1123,1123,1123,1123,1123,1123,1124,1124,1124,1124,1124,1124,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1124,1124,1124,1124,1124,1124,1123,1123,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,296,211,211,211,211,211,211,211,211,211,211,211,211,211,211,295,295,295,295,295,295,295,295,295,295,297,211,211,298,211,296,211,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,211,211,211,211,295,211,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,211,211,211,211,211,295,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,296,963,963,963,963,963,963,963,963,963,963,963,963,963,963,295,295,295,295,295,295,295,295,295,295,297,963,963,298,963,296,963,295,295,295,295,1125,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,963,963,963,963,295,963,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,963,963,963,963,963,295,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,296,963,963,963,963,963,963,963,963,963,963,963,963,963,963,295,295,295,295,295,295,295,295,295,295,297,963,963,298,963,296,963,295,295,295,295,295,295,295,295,295,295,295,295,295,1126,295,295,295,295,295,295,295,295,295,295,295,295,963,963,963,963,295,963,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,963,963,963,963,963,295,1127,1128,963,958,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,1129,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,1130,1131,897,897,897,897,897,1132,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,1133,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,1134,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1135,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,1136,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,1137,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,1138,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,1139,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,1140,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,1141,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,296,211,211,211,211,211,211,211,211,211,211,211,211,211,211,897,897,897,897,897,897,897,897,897,897,297,211,211,298,211,296,211,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,211,211,211,211,897,211,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,211,211,211,211,211,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,1142,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,1143,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,1139,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,1144,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,1143,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1145,897,1146,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,1147,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,1148,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1149,897,897,897,897,897,897,897,897,897,897,897,897,1150,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,1151,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,1152,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1153,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,1154,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,1155,897,897,897,897,897,897,897,897,897,897,1156,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1157,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,1158,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1148,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1159,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1160,897,1161,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1162,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1141,897,897,897,1159,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1163,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1164,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1157,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,1165,897,897,897,897,897,897,897,897,897,897,897,897,897,932,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1155,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,1166,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1167,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,1168,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1169,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1157,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1170,897,897,897,1171,897,897,897,897,897,1172,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1172,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1173,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,1174,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1175,1176,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,1177,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1178,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1179,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1182,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1183,1180,1180,1184,1180,1182,1180,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1180,1180,1180,1180,1181,1180,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1180,1180,1180,1180,1180,1181,949,1185,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,951,948,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1186,897,897,1187,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1152,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1188,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1189,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1159,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1190,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,932,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,1191,897,897,897,897,897,897,897,897,897,1192,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1152,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1157,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,1193,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,1194,897,897,897,897,897,897,897,1195,897,897,897,897,897,897,897,1196,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1159,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1197,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1198,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1166,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,1199,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1166,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,1200,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1152,897,897,897,1201,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1202,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1166,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,1203,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1204,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1146,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,1205,221,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,1206,963,1208,1207,1207,1207,1208,1207,1207,1207,1207,1209,1210,1209,1209,1209,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1208,1207,1207,1207,1207,1207,1209,1207,1207,1211,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1212,1207,1209,1213,1209,1209,1209,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1209,1213,1214,1215,1216,1217,1218,1220,1219,1221,1223,1224,1224,1224,1223,1224,1224,1224,1224,1225,1226,1225,1225,1225,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1223,1224,1224,1224,1224,1224,1225,1224,1227,1228,1224,1224,1224,1227,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1224,1229,1224,1224,1222,1224,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1224,1224,1224,1224,1224,1222,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,304,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,303,303,303,303,303,303,303,303,303,303,305,1230,1230,1230,1230,304,1230,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,1230,1230,1230,1230,303,1230,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,1230,1230,1230,1230,1230,303,1225,1231,1225,1225,1225,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1225,1231,1232,1233,1234,1235,1236,1237,1230,1238,1240,1241,1241,1241,1240,1241,1241,1241,1241,1242,1243,1242,1242,1242,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1240,1241,1241,1241,1241,1241,1242,1244,1245,1246,1247,1248,1249,1245,1250,1251,1252,1248,1253,1254,1255,1248,1256,1257,1257,1257,1257,1257,1257,1257,1257,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1265,1265,1267,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1268,1269,1270,1248,1271,1245,1272,1273,1274,1275,1276,1277,1239,1239,1278,1239,1239,1239,1279,1280,1281,1239,1239,1282,1283,1284,1285,1239,1286,1239,1287,1239,1288,1289,1290,1291,1241,1239,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,1292,313,313,313,313,313,313,313,313,313,313,313,313,313,313,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,313,313,313,313,313,1292,313,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,313,313,313,313,1239,313,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,313,313,313,313,313,1239,1294,1293,1295,1242,1296,1242,1242,1242,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1242,1296,1297,1299,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1299,1298,1300,1301,1302,1303,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,308,308,1304,308,1304,308,308,1304,1304,308,308,308,1305,308,308,1306,1306,1306,1306,1306,1306,1306,1306,1306,1306,308,308,308,308,308,308,308,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1304,308,1304,1304,325,308,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1304,1304,1304,308,1304,325,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,325,325,325,325,325,325,325,325,325,325,1307,1307,1307,1307,1307,1307,1307,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1307,1307,1307,1307,325,1307,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1307,1307,1307,1307,1307,325,1306,1306,1306,1306,1306,1306,1306,1306,1306,1306,1307,1308,313,1248,1309,1309,1309,1309,1309,1309,1309,1310,1309,1309,1309,1309,1309,1309,1309,1309,1309,1309,1309,1309,1309,1309,1308,1309,1311,1312,1248,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1308,1313,1308,1314,1309,1316,1315,312,312,312,312,312,312,312,312,312,312,1315,1318,1317,1319,1317,312,312,312,312,312,312,312,312,312,312,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1321,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1322,1320,1320,1320,1320,1320,1321,1320,311,311,311,311,311,311,311,311,311,311,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,310,1320,1324,1323,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1323,1323,1323,1323,1323,1323,1323,1323,1326,1323,1327,1328,1323,1323,1323,1323,1323,1323,1323,1323,1323,1329,1323,1323,1323,1323,1323,1323,1323,1323,1330,1323,1323,1323,1323,1323,1323,1331,1323,1323,1326,1323,1327,1328,1323,1323,1323,1332,1323,1323,1323,1323,1323,1329,1323,1323,1333,1323,1323,1323,1323,1323,1330,1323,314,314,314,314,314,314,314,314,314,314,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1335,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1336,1334,1334,1334,1334,1334,1335,1334,1334,1334,1337,1334,1334,1334,1334,1334,1334,1334,1334,1338,1334,1339,313,1339,313,313,315,315,315,315,315,315,315,315,315,315,313,315,315,315,315,315,315,315,315,315,315,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1339,1340,1340,1340,1340,1340,1340,1340,1340,1340,1341,1340,1343,1342,1344,1346,1345,1345,1345,1347,1345,1348,1349,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1331,1323,1323,1323,1323,1323,1323,1323,1323,1323,1332,1323,1323,1323,1323,1323,1323,1323,1323,1333,1323,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1351,1323,1323,1323,1323,1323,1323,1323,1323,1323,1332,1323,1323,1323,1323,1323,1323,1323,1323,1333,1323,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1354,1352,1352,1352,1352,1352,1352,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1357,1352,1352,1352,1352,1352,1352,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1359,1358,1360,1362,1361,1361,1361,1363,1361,1365,1364,1366,1367,1369,1369,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1370,1368,1368,1368,1368,1368,1368,1368,1368,1368,1371,1368,1368,1368,1368,1368,1368,1368,1368,1372,1368,1373,1373,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1374,1352,1352,1352,1352,1352,1352,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1373,1373,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1357,1352,1352,1352,1352,1352,1352,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1377,1375,1375,1375,1375,1375,1375,1375,1375,1375,1378,1375,1375,1375,1375,1375,1375,1375,1375,1379,1375,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1382,1380,1380,1380,1380,1380,1380,1380,1380,1380,1383,1380,1380,1380,1380,1380,1380,1380,1380,1384,1380,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1385,1385,1385,1385,1385,1385,1385,1386,1386,1386,1386,1386,1386,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1387,1385,1386,1386,1386,1386,1386,1386,1385,1385,1388,1385,1385,1385,1385,1385,1385,1385,1385,1389,1385,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1352,1352,1352,1352,1352,1352,1352,1390,1390,1390,1390,1390,1390,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1391,1352,1390,1390,1390,1390,1390,1390,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1352,1352,1352,1352,1352,1352,1352,1390,1390,1390,1390,1390,1390,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1357,1352,1390,1390,1390,1390,1390,1390,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1393,1392,1394,1394,1394,1394,1394,1394,1394,1394,1394,1394,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1395,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1396,1392,1392,1392,1392,1392,1395,1392,1392,1392,1397,1392,1392,1392,1392,1392,1392,1392,1392,1398,1392,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1400,1392,1392,1392,1392,1392,1392,1392,1392,1392,1397,1392,1392,1392,1392,1392,1392,1392,1392,1398,1392,1401,1352,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1403,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1404,1352,1352,1352,1352,1352,1403,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1357,1352,1352,1352,1352,1352,1352,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1310,1317,1248,1405,1309,1299,1309,1406,1407,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1299,1317,1299,1309,1299,1248,1309,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,325,325,325,325,325,325,325,325,325,325,1304,1304,1304,1304,1304,1304,1408,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1304,1304,1304,1304,325,1304,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1304,1304,1304,1304,1304,325,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,1292,313,313,313,313,313,313,313,313,313,313,313,313,313,313,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,313,313,313,313,1292,313,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,313,313,313,313,1265,313,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,313,313,313,313,313,1265,1410,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1265,1412,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1265,1265,1265,1413,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1265,1265,1265,1265,1265,1414,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1415,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1416,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1415,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1417,1419,1418,1420,1421,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1423,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1424,1425,1239,1239,1239,1239,1239,1426,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1427,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1428,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1429,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1430,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1431,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1432,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1433,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1434,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1435,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1436,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1437,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1438,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1439,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1440,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1441,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1437,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1442,1239,1443,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1444,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1445,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1446,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1448,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1449,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1450,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1451,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1452,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1453,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1454,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1455,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1456,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1457,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1458,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1459,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1460,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1461,1461,1461,1461,1461,1461,1461,1461,1461,327,328,327,327,327,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,327,1292,1461,329,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1461,1461,330,1461,1461,1292,1461,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1461,331,1461,1461,1239,1461,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1461,1461,1461,1461,1461,1239,344,345,344,344,344,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,343,343,346,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,349,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,348,343,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1463,1239,1239,1239,1239,1239,1239,1239,1239,1239,1464,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1465,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1292,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1466,1466,1466,1466,1466,1292,1466,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1466,1466,1466,1466,1239,1466,1239,1239,1239,1239,1239,1239,1239,1239,1467,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1466,1466,1466,1466,1466,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1468,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1469,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1470,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1471,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1472,1239,1473,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1474,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1447,1239,1239,1239,1475,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1440,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1476,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1477,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1457,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1478,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1281,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1479,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1480,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1440,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1481,1239,1239,1239,1239,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1482,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1483,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1484,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1457,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1485,1239,1239,1239,1486,1239,1239,1239,1239,1239,1487,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1488,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1454,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1440,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1489,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1490,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1491,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1492,1493,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1440,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1494,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1495,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1481,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1496,1239,1239,1497,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1440,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1498,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1454,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1499,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1500,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1501,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1440,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1502,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1503,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1489,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1504,1239,1239,1239,1239,1239,1239,1239,1239,1239,1505,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1451,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1480,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1506,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1507,1239,1239,1239,1239,1239,1239,1239,1508,1239,1239,1239,1239,1239,1239,1239,1509,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1510,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1446,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1511,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1512,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1481,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1513,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1481,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1514,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1451,1239,1239,1239,1515,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1516,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1481,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1517,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1518,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1519,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1489,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1520,1308,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1248,1298,1521,1523,1522,1523,1523,1523,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1523,1522,1522,1524,1522,1522,1525,1522,1522,1522,1522,1522,1522,1522,357,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1526,1522,353,354,353,353,353,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,353,1527,1527,355,1527,1527,356,1527,1527,1527,1527,1527,1527,1527,357,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,358,1527,360,1528,360,360,360,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,360,1528,1528,355,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,358,1528,1530,1529,1532,1531,363,362,368,1527,366,1527,1534,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1535,1533,1534,1533,1534,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1537,1533,1534,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1538,1533,1534,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1539,1533,1541,1539,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_trans_targs"),self.$private("_lex_trans_targs","_lex_trans_targs=")}(Opal.get_singleton_class(self)),$send(self,"_lex_trans_targs=",$to_a($writer=[[186,2,3,4,192,6,7,8,9,10,186,186,195,198,195,12,199,200,14,195,207,208,211,212,224,221,213,214,215,19,216,217,218,226,228,229,233,234,235,230,25,18,209,210,27,258,259,261,263,261,30,264,265,32,261,272,273,276,277,289,286,278,279,280,37,281,282,283,291,293,294,298,299,300,295,43,36,274,275,45,323,324,331,333,331,48,334,335,50,337,340,337,52,341,342,54,348,347,0,56,349,350,58,351,352,352,352,352,465,61,62,63,465,465,494,65,66,494,494,498,498,70,65,71,496,497,499,500,498,494,501,502,504,67,68,505,506,69,498,72,73,78,85,508,509,71,496,497,499,500,498,494,501,502,504,67,68,505,506,69,72,73,78,85,508,509,507,74,75,76,77,79,80,83,81,82,84,86,87,494,89,90,91,93,96,94,95,97,99,525,525,525,526,101,528,102,529,103,526,101,528,102,529,563,104,563,105,106,104,563,105,563,563,563,109,110,111,112,574,563,563,563,115,116,117,563,120,115,116,117,563,120,118,118,116,117,584,119,118,118,116,117,584,119,116,563,601,563,122,602,608,126,617,618,131,132,126,127,616,127,616,563,128,129,130,619,133,563,633,634,637,638,650,647,639,640,641,138,642,643,644,652,654,655,659,660,661,656,144,137,635,636,146,697,698,148,565,107,567,150,151,700,802,153,154,155,802,810,810,810,158,832,831,810,834,836,810,163,164,165,840,810,167,168,851,820,873,171,172,173,177,178,171,172,173,177,178,174,174,172,173,175,176,174,174,172,173,175,176,921,172,810,990,179,992,181,185,993,183,990,180,990,182,992,182,992,184,992,990,186,186,187,188,189,191,193,194,186,186,186,190,186,190,186,1,186,186,186,5,195,195,196,195,197,201,195,195,11,13,195,195,195,195,202,203,204,15,21,26,236,28,195,195,195,205,206,195,16,195,195,195,17,195,195,195,20,219,195,220,222,195,223,225,227,22,195,195,23,231,195,232,24,195,237,241,238,239,240,195,195,242,243,246,248,257,244,245,195,247,249,251,250,195,252,253,254,255,256,195,195,195,260,261,261,261,262,266,261,29,31,261,261,261,261,267,268,269,33,39,44,301,46,261,261,261,270,271,261,34,261,261,261,35,261,261,261,38,284,261,285,287,261,288,290,292,40,261,261,41,296,261,297,42,261,302,306,303,304,305,261,261,307,308,311,313,322,309,310,261,312,314,316,315,261,317,318,319,320,321,261,261,261,325,326,326,327,326,328,326,326,326,329,329,329,330,329,329,329,331,331,331,332,331,47,49,331,331,331,336,336,336,337,337,338,337,339,337,337,51,53,337,337,337,343,343,344,343,343,345,346,345,55,57,347,347,347,353,352,352,354,355,356,357,359,362,363,364,365,352,366,367,369,371,372,373,377,379,380,381,397,402,409,414,421,428,431,432,436,430,440,448,452,454,459,461,464,352,352,352,352,352,352,358,352,358,352,360,59,361,352,60,352,352,368,370,352,374,375,376,372,378,352,382,383,392,395,384,385,386,387,388,389,390,391,353,393,394,396,398,401,399,400,403,406,404,405,407,408,410,412,411,413,415,416,352,417,418,419,420,352,422,425,423,424,426,427,429,433,434,435,437,439,438,441,442,443,445,444,446,447,449,450,451,453,455,456,457,458,460,462,463,466,465,465,467,468,470,471,465,465,465,469,465,469,64,472,465,474,473,473,477,478,479,480,473,482,483,484,485,487,489,490,491,492,493,473,475,473,476,473,473,473,473,473,481,473,481,486,473,488,473,494,494,495,510,511,497,513,514,501,515,516,517,518,519,521,522,523,524,494,494,494,494,494,494,498,503,494,494,494,494,494,494,494,494,494,512,494,512,494,494,494,494,520,494,88,92,98,525,527,530,100,525,525,526,531,531,532,533,535,537,538,531,531,534,531,534,531,536,531,531,531,540,539,539,541,542,543,545,547,548,553,560,539,539,539,539,544,539,544,539,546,539,539,540,549,550,551,552,554,555,558,556,557,559,561,562,564,563,572,573,575,576,578,579,580,581,583,585,586,589,590,615,621,622,623,700,701,702,703,704,582,706,723,728,735,740,742,748,751,752,756,750,760,771,775,778,786,790,793,794,563,104,105,563,107,566,563,563,568,570,571,563,569,563,563,563,563,563,108,563,563,563,563,563,577,563,577,563,563,113,563,114,563,563,582,563,587,563,588,563,563,563,591,600,563,121,603,604,605,563,606,123,609,610,124,613,614,563,592,594,563,593,563,563,595,598,599,563,596,597,563,563,563,563,563,563,607,563,601,611,612,563,611,563,601,611,125,620,563,563,563,624,563,563,563,625,627,563,626,563,626,563,628,629,630,134,140,145,662,147,563,563,563,631,632,563,135,563,563,563,136,563,563,563,139,645,563,646,648,563,649,651,653,141,563,563,142,657,563,658,143,563,663,667,664,665,666,563,563,668,669,672,683,696,670,671,563,673,674,675,677,676,563,678,679,680,681,682,684,691,685,686,687,688,689,690,692,693,694,695,563,563,563,699,149,152,563,705,707,708,718,721,709,710,711,712,713,714,715,716,717,719,720,722,724,727,725,726,729,732,730,731,733,734,736,738,737,739,741,743,745,744,746,747,749,717,753,754,755,757,759,758,761,762,763,768,764,765,766,563,564,565,107,767,570,769,770,772,773,774,776,777,779,780,781,784,782,783,785,787,788,789,791,792,563,582,795,795,796,797,798,800,795,795,795,799,795,799,795,801,795,803,802,802,804,805,802,806,808,802,802,802,802,807,802,807,809,802,811,810,810,814,815,816,810,817,819,822,823,824,825,826,810,827,828,833,861,865,810,866,868,870,810,871,872,874,878,880,881,883,884,902,907,914,922,929,936,941,942,946,940,951,961,967,970,979,983,987,988,989,822,812,810,813,810,810,810,810,810,810,818,810,818,810,156,821,810,810,810,810,810,810,810,810,810,829,810,830,810,810,157,159,810,160,842,853,856,835,857,858,843,847,849,810,835,160,837,839,161,810,837,810,838,810,810,162,841,810,810,844,846,810,844,845,847,849,846,810,848,810,810,850,852,810,166,810,810,810,854,846,847,849,854,855,810,844,846,847,849,810,844,846,847,849,810,859,846,847,849,859,860,810,160,861,835,862,847,849,863,846,160,863,835,864,867,869,810,169,170,810,810,875,876,877,872,879,810,810,882,810,810,810,885,886,895,900,887,888,889,890,891,892,893,894,811,896,897,898,899,811,901,903,906,904,905,811,811,908,911,909,910,912,913,811,915,917,916,918,919,920,810,810,923,811,924,810,925,926,927,928,812,930,933,931,932,934,935,937,938,939,811,943,944,945,947,949,950,948,811,952,953,954,957,955,956,958,959,960,962,964,963,965,966,968,969,971,972,974,977,973,975,976,978,980,981,982,984,985,986,810,810,990,991,995,996,997,990,990,990,994,990,990,999,998,1e3,998,1001,1002,1003,998,998]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_trans_actions"),self.$private("_lex_trans_actions","_lex_trans_actions=")}(Opal.get_singleton_class(self)),$send(self,"_lex_trans_actions=",$to_a($writer=[[1,0,0,0,0,0,0,0,0,0,2,3,4,0,5,0,0,0,0,6,0,7,0,8,0,0,7,0,0,0,0,8,0,7,0,8,0,7,7,0,0,0,0,0,0,0,0,9,0,10,0,0,0,0,11,0,7,0,8,0,0,7,0,0,0,0,8,0,7,0,8,0,7,7,0,0,0,0,0,0,0,0,12,0,13,0,0,0,0,14,0,15,0,0,0,0,0,16,0,0,0,0,0,0,17,18,19,20,21,0,0,0,22,23,24,0,0,25,26,27,28,29,30,30,31,32,30,33,32,34,32,30,30,31,30,35,30,30,36,30,30,30,30,30,30,0,37,38,0,39,38,40,38,0,0,37,0,41,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,43,44,45,46,0,0,0,46,29,47,30,30,30,47,48,0,49,0,29,30,50,30,51,52,53,0,0,0,0,0,54,55,56,0,29,0,57,0,30,58,30,59,30,60,61,62,61,63,61,0,64,65,64,66,64,67,68,0,69,0,0,0,0,70,70,0,0,71,71,72,0,29,73,0,0,0,70,0,74,0,7,0,8,0,0,7,0,0,0,0,8,0,7,0,8,0,7,7,0,0,0,0,0,0,0,0,0,75,0,0,0,0,75,76,0,0,0,77,78,79,80,0,7,7,81,82,82,83,0,0,0,0,84,0,0,0,0,0,0,29,0,0,0,30,58,30,30,30,60,61,62,61,61,61,0,64,65,64,64,64,85,67,86,87,0,88,0,89,89,0,90,0,91,60,92,0,93,29,94,95,98,99,0,29,0,7,0,7,100,101,102,60,103,0,104,0,105,106,107,0,108,109,0,110,7,7,111,112,0,0,113,114,115,116,117,117,117,117,117,117,117,117,118,119,120,0,0,121,0,122,123,124,0,125,126,127,0,0,128,0,0,129,0,7,0,0,130,131,0,0,132,0,29,133,0,0,0,0,0,134,135,0,0,0,0,0,0,0,136,0,0,0,0,137,0,0,0,0,0,138,139,140,0,141,142,143,7,7,144,0,0,145,146,147,148,117,117,117,117,117,117,117,117,149,150,151,0,0,152,0,153,154,155,0,156,157,158,0,0,159,0,0,160,0,7,0,0,161,162,0,0,163,0,29,164,0,0,0,0,0,165,166,0,0,0,0,0,0,0,167,0,0,0,0,168,0,0,0,0,0,169,170,171,0,172,173,0,174,0,175,176,177,178,179,180,0,181,182,183,184,185,186,7,187,0,0,188,189,190,191,192,193,194,195,0,196,7,197,198,0,0,199,200,201,202,203,0,204,205,206,0,207,0,0,208,209,210,211,212,213,0,29,0,0,7,7,0,0,0,214,0,0,0,0,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,217,218,219,220,221,60,222,0,223,0,0,0,224,0,225,226,0,0,227,0,0,0,228,0,229,0,0,0,0,0,0,0,0,0,0,0,0,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,0,0,0,0,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,232,233,0,0,7,0,234,235,236,60,237,0,0,29,238,0,239,240,0,29,0,0,241,0,0,0,0,0,0,0,0,0,0,242,0,243,0,244,245,246,247,248,60,249,0,0,250,0,251,252,253,254,29,0,28,0,0,28,0,0,0,0,0,0,7,7,7,255,256,257,258,259,260,261,0,262,263,264,265,266,267,268,269,270,60,271,0,272,273,274,275,276,277,0,0,0,278,7,7,0,279,280,281,282,283,0,0,0,0,0,284,285,60,286,0,287,29,288,289,290,291,292,293,0,29,0,0,0,0,0,0,294,295,296,297,60,298,0,299,29,300,301,302,0,0,0,0,0,0,0,0,0,0,0,0,303,304,0,8,0,0,7,305,0,0,305,305,0,0,7,306,0,306,0,306,306,306,0,0,306,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,0,0,307,308,308,309,310,0,311,312,0,75,0,313,0,314,315,316,317,318,30,319,320,321,322,323,60,324,0,325,326,0,327,0,328,329,305,330,0,331,0,332,333,334,0,0,335,0,0,0,0,336,0,0,0,0,0,0,0,337,0,0,338,0,339,340,0,0,0,341,0,0,342,343,344,345,346,347,0,348,349,349,0,350,0,351,352,352,0,0,353,354,355,0,356,357,358,0,7,359,360,361,0,362,117,117,117,117,117,117,117,117,363,364,365,0,0,366,0,367,368,369,0,370,371,372,0,0,373,0,0,374,0,7,0,0,375,376,0,0,377,0,29,378,0,0,0,0,0,379,380,0,0,0,0,0,0,0,381,0,0,0,0,0,382,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,383,384,385,0,0,0,386,29,303,303,303,303,303,303,303,303,303,303,303,303,75,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,387,303,303,303,303,303,303,303,303,303,303,303,303,388,389,390,391,392,392,388,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,393,394,395,396,0,29,0,0,397,398,399,60,400,0,401,29,402,7,403,404,0,29,405,0,0,406,407,408,409,60,410,0,29,411,412,413,414,0,29,0,415,0,7,416,0,0,0,0,417,0,0,418,418,0,419,0,0,0,420,7,421,421,421,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,422,423,424,0,425,426,427,428,429,430,60,431,0,432,0,0,433,434,435,436,437,438,439,440,441,0,442,0,443,444,0,0,445,446,447,0,0,448,0,0,447,449,449,450,451,0,452,453,0,454,455,456,0,457,458,0,0,459,460,447,447,461,0,0,462,462,0,463,0,464,465,7,0,466,0,467,468,469,470,470,471,471,0,0,472,473,473,474,474,475,476,476,477,477,478,479,479,480,480,0,0,481,482,483,484,485,486,486,483,485,487,418,488,0,0,0,489,0,0,490,491,421,421,421,492,421,493,494,29,495,496,497,0,0,0,0,0,0,0,0,0,0,0,0,498,0,0,0,0,492,0,0,0,0,0,499,500,0,0,0,0,0,0,501,0,0,0,0,0,500,502,503,0,504,0,505,0,0,0,0,506,0,0,0,0,0,0,0,0,0,507,0,0,0,0,0,0,0,506,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,508,509,510,511,511,89,511,512,513,514,0,515,516,0,517,0,518,0,0,0,519,520]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_to_state_actions"),self.$private("_lex_to_state_actions","_lex_to_state_actions=")}(Opal.get_singleton_class(self)),$send(self,"_lex_to_state_actions=",$to_a($writer=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,96,0,96,0,0,0,0,96,96,0,0,0,0,0,96,0,96,0,96,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_from_state_actions"),self.$private("_lex_from_state_actions","_lex_from_state_actions=")}(Opal.get_singleton_class(self)),$send(self,"_lex_from_state_actions=",$to_a($writer=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,97,0,97,0,0,0,0,97,97,0,0,0,0,0,97,0,97,0,97,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_eof_trans"),self.$private("_lex_eof_trans","_lex_eof_trans=")}(Opal.get_singleton_class(self)),$send(self,"_lex_eof_trans=",$to_a($writer=[[0,1,1,1,1,1,1,1,1,1,1,13,13,13,13,20,20,20,20,20,20,20,20,20,20,20,20,20,20,48,48,48,48,55,55,55,55,55,55,55,55,55,55,55,55,55,55,83,83,83,83,90,90,90,90,0,0,0,0,105,107,109,109,109,109,115,115,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,180,180,180,180,180,180,180,180,180,180,180,180,190,192,192,192,204,204,204,212,214,214,214,214,214,220,212,212,212,212,212,212,212,246,246,246,246,246,246,212,262,212,262,246,246,212,268,268,268,268,268,268,268,268,268,268,268,268,268,268,212,246,246,246,246,303,303,303,308,310,310,310,314,314,317,317,317,317,322,322,322,308,314,314,314,314,314,314,314,314,314,353,360,362,362,362,362,353,0,378,379,380,382,384,386,384,384,0,396,397,401,401,402,403,412,413,414,414,414,417,417,419,420,421,421,421,423,424,425,425,425,428,428,421,431,431,421,417,417,436,437,437,437,440,440,437,437,437,443,443,443,443,449,450,450,450,450,458,450,450,450,450,463,450,450,450,450,450,450,469,470,471,471,0,478,482,482,483,484,493,494,495,495,495,498,498,500,501,502,502,502,504,505,506,506,506,509,509,502,512,512,502,498,498,517,518,518,518,521,521,518,518,518,524,524,524,524,530,531,531,531,531,539,531,531,531,531,544,531,531,531,531,531,531,550,551,552,552,0,559,560,0,566,0,573,577,577,578,0,0,587,588,592,592,593,0,598,0,601,0,604,604,605,606,0,647,649,650,651,652,654,656,660,660,651,651,651,651,662,651,651,656,651,651,647,666,666,666,666,666,666,656,656,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,705,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,651,0,749,750,751,753,749,749,757,0,776,778,780,781,782,783,784,786,783,783,783,783,783,789,783,783,791,789,789,783,0,810,811,115,115,814,815,115,811,811,818,820,823,811,824,811,825,826,828,830,811,818,831,831,820,831,835,831,831,831,831,0,190,843,844,843,843,0,853,854,856,858,860,858,862,0,874,875,876,877,879,881,883,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,0,942,945,948,949,953,955,956,957,958,959,961,964,965,967,969,972,974,975,212,972,977,972,964,979,981,964,964,999,1002,1004,1005,1009,1012,1013,1014,1015,999,999,999,999,999,999,999,999,999,999,1019,1023,1025,999,999,964,1030,1031,1031,1031,964,964,964,1032,1039,1039,1041,1043,1052,1053,1054,1054,1054,1057,1057,1059,1060,1061,1061,1061,1063,1064,1065,1065,1065,1068,1068,1061,1071,1071,1061,1057,1057,1076,1077,1077,1077,1080,1080,1077,1077,1077,1083,1083,1083,1083,1089,1090,1090,1090,1090,1098,1090,1090,1090,1090,1104,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1122,1123,1124,1124,212,964,964,1128,964,959,942,942,942,942,942,942,942,942,942,942,942,212,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,1181,949,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,1206,964,0,1214,1215,1216,1218,1220,1222,0,1231,1232,1233,1234,1236,1231,1239,0,314,1294,1296,1297,1298,1299,1301,1303,1305,1308,1308,314,1310,1312,1313,1314,1310,1316,1318,1318,1321,1321,1324,1335,314,1341,1343,1345,1346,1349,1350,1324,1324,1353,1353,1353,1359,1361,1362,1365,1367,1368,1369,1353,1353,1376,1381,1386,1353,1353,1393,1393,1353,1353,1318,1310,1310,1318,1310,1310,1305,314,1411,1412,1412,1412,1412,1412,1412,1418,1305,1421,1422,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1462,1463,1423,1423,1467,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1521,1299,1522,0,1528,1529,1530,1532,1528,1528,1528,0,1537,1537,1537,1537,1541]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_start")}(Opal.get_singleton_class(self)),$send(self,"lex_start=",$to_a($writer=[186])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_error")}(Opal.get_singleton_class(self)),$send(self,"lex_error=",$to_a($writer=[0])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_words=",$to_a($writer=[195])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_string")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_string=",$to_a($writer=[261])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_words=",$to_a($writer=[326])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_string")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_string=",$to_a($writer=[329])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_backslash_delimited")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_backslash_delimited=",$to_a($writer=[331])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_backslash_delimited")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_backslash_delimited=",$to_a($writer=[336])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_backslash_delimited_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_backslash_delimited_words=",$to_a($writer=[337])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_backslash_delimited_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_backslash_delimited_words=",$to_a($writer=[343])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_regexp_modifiers")}(Opal.get_singleton_class(self)),$send(self,"lex_en_regexp_modifiers=",$to_a($writer=[345])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_variable")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_variable=",$to_a($writer=[347])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_fname")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_fname=",$to_a($writer=[352])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_endfn")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_endfn=",$to_a($writer=[465])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_dot")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_dot=",$to_a($writer=[473])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_arg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_arg=",$to_a($writer=[494])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_cmdarg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_cmdarg=",$to_a($writer=[525])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_endarg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_endarg=",$to_a($writer=[531])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_mid")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_mid=",$to_a($writer=[539])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_beg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_beg=",$to_a($writer=[563])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_labelarg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_labelarg=",$to_a($writer=[795])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_value")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_value=",$to_a($writer=[802])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_end")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_end=",$to_a($writer=[810])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_leading_dot")}(Opal.get_singleton_class(self)),$send(self,"lex_en_leading_dot=",$to_a($writer=[990])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_line_comment")}(Opal.get_singleton_class(self)),$send(self,"lex_en_line_comment=",$to_a($writer=[998])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_line_begin")}(Opal.get_singleton_class(self)),$send(self,"lex_en_line_begin=",$to_a($writer=[186])),$writer[$rb_minus($writer.length,1)],$const_set($nesting[0],"ESCAPES",$hash("a".$ord(),"","b".$ord(),"\b","e".$ord(),"","f".$ord(),"\f","n".$ord(),"\n","r".$ord(),"\r","s".$ord()," ","t".$ord(),"\t","v".$ord(),"\v","\\".$ord(),"\\").$freeze()),$const_set($nesting[0],"REGEXP_META_CHARACTERS",$send($$("Regexp"),"union",$to_a("\\$()*+.<>?[]^{|}".$chars())).$freeze()),self.$attr_reader("source_buffer"),self.$attr_accessor("diagnostics"),self.$attr_accessor("static_env"),self.$attr_accessor("force_utf32"),self.$attr_accessor("cond","cmdarg","context","command_start"),self.$attr_accessor("tokens","comments"),self.$attr_reader("paren_nest","cmdarg_stack","cond_stack","lambda_stack"),$def(self,"$initialize",(function(version){return this.version=version,this.static_env=nil,this.context=nil,this.tokens=nil,this.comments=nil,this.$reset()}),1),$def(self,"$reset",(function(reset_state){return null==reset_state&&(reset_state=!0),$truthy(reset_state)&&(this.cs=this.$class().$lex_en_line_begin(),this.cond=$$("StackState").$new("cond"),this.cmdarg=$$("StackState").$new("cmdarg"),this.cond_stack=[],this.cmdarg_stack=[]),this.force_utf32=!1,this.source_pts=nil,this.p=0,this.ts=nil,this.te=nil,this.act=0,this.stack=[],this.top=0,this.token_queue=[],this.literal_stack=[],this.eq_begin_s=nil,this.sharp_s=nil,this.newline_s=nil,this.num_base=nil,this.num_digits_s=nil,this.num_suffix_s=nil,this.num_xfrm=nil,this.escape_s=nil,this.escape=nil,this.herebody_s=nil,this.paren_nest=0,this.lambda_stack=[],this.dedent_level=nil,this.command_start=!0,this.cs_before_block_comment=this.$class().$lex_en_line_begin()}),-1),$def(self,"$source_buffer=",(function(source_buffer){var source=nil;return this.source_buffer=source_buffer,$truthy(this.source_buffer)?(source=this.source_buffer.$source(),$eqeq(source.$encoding(),$$$($$("Encoding"),"UTF_8"))?this.source_pts=source.$unpack("U*"):this.source_pts=source.$unpack("C*"),$eqeq(this.source_pts["$[]"](0),65279)?this.p=1:nil):this.source_pts=nil}),1),$def(self,"$encoding",(function(){return this.source_buffer.$source().$encoding()}),0),$const_set($nesting[0],"LEX_STATES",$hash2(["line_begin","expr_dot","expr_fname","expr_value","expr_beg","expr_mid","expr_arg","expr_cmdarg","expr_end","expr_endarg","expr_endfn","expr_labelarg","interp_string","interp_words","plain_string","plain_words"],{line_begin:self.$lex_en_line_begin(),expr_dot:self.$lex_en_expr_dot(),expr_fname:self.$lex_en_expr_fname(),expr_value:self.$lex_en_expr_value(),expr_beg:self.$lex_en_expr_beg(),expr_mid:self.$lex_en_expr_mid(),expr_arg:self.$lex_en_expr_arg(),expr_cmdarg:self.$lex_en_expr_cmdarg(),expr_end:self.$lex_en_expr_end(),expr_endarg:self.$lex_en_expr_endarg(),expr_endfn:self.$lex_en_expr_endfn(),expr_labelarg:self.$lex_en_expr_labelarg(),interp_string:self.$lex_en_interp_string(),interp_words:self.$lex_en_interp_words(),plain_string:self.$lex_en_plain_string(),plain_words:self.$lex_en_plain_string()})),$def(self,"$state",(function(){return $$("LEX_STATES").$invert().$fetch(this.cs,this.cs)}),0),$def(self,"$state=",(function(state){return this.cs=$$("LEX_STATES").$fetch(state)}),1),$def(self,"$push_cmdarg",(function(){return this.cmdarg_stack.$push(this.cmdarg),this.cmdarg=$$("StackState").$new("cmdarg."+this.cmdarg_stack.$count())}),0),$def(self,"$pop_cmdarg",(function(){return this.cmdarg=this.cmdarg_stack.$pop()}),0),$def(self,"$push_cond",(function(){return this.cond_stack.$push(this.cond),this.cond=$$("StackState").$new("cond."+this.cond_stack.$count())}),0),$def(self,"$pop_cond",(function(){return this.cond=this.cond_stack.$pop()}),0),$def(self,"$dedent_level",(function(){var $a,dedent_level;return dedent_level=($a=[this.dedent_level,nil])[0],this.dedent_level=$a[1],dedent_level}),0),$def(self,"$advance",(function(){var $a,$b,pe,self=this,klass=nil,_lex_trans_keys=nil,_lex_key_spans=nil,_lex_index_offsets=nil,_lex_indicies=nil,_lex_trans_targs=nil,_lex_trans_actions=nil,_lex_to_state_actions=nil,_lex_from_state_actions=nil,_lex_eof_trans=nil,p=nil,eof=nil,cmd_state=nil,_slen=nil,_trans=nil,_keys=nil,_inds=nil,_goto_level=nil,$ret_or_1=nil,_wide=nil,tm=nil,heredoc_e=nil,diag_msg=nil,ident_tok=nil,ident_ts=nil,ident_te=nil,current_literal=nil,$writer=nil,line=nil,string=nil,lookahead=nil,token=nil,message=nil,escaped_char=nil,$ret_or_2=nil,unknown_options=nil,type=nil,delimiter=nil,escape=nil,ident=nil,followed_by_nl=nil,nl_emitted=nil,dots_te=nil,value=nil,digits=nil,invalid_idx=nil,invalid_s=nil,codepoints=nil,codepoint_s=nil,spaces_p=nil,codepoint=nil,new_herebody_s=nil,indent=nil,dedent_body=nil;if($truthy(self.token_queue["$any?"]()))return self.token_queue.$shift();for(_lex_trans_keys=(klass=self.$class()).$send("_lex_trans_keys"),_lex_key_spans=klass.$send("_lex_key_spans"),_lex_index_offsets=klass.$send("_lex_index_offsets"),_lex_indicies=klass.$send("_lex_indicies"),_lex_trans_targs=klass.$send("_lex_trans_targs"),_lex_trans_actions=klass.$send("_lex_trans_actions"),_lex_to_state_actions=klass.$send("_lex_to_state_actions"),_lex_from_state_actions=klass.$send("_lex_from_state_actions"),_lex_eof_trans=klass.$send("_lex_eof_trans"),pe=$rb_plus(self.source_pts.$size(),2),$a=[self.p,pe],p=$a[0],eof=$a[1],cmd_state=self.command_start,self.command_start=!1,!1,_slen=null==($a=$to_ary($b=nil))[0]?nil:$a[0],_trans=null==$a[1]?nil:$a[1],_keys=null==$a[2]?nil:$a[2],_inds=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],_goto_level=0,10,15,20,30,40;$truthy(!0);){if($truthy($rb_le(_goto_level,0))){if($eqeq(p,pe)){_goto_level=30;continue}if($eqeq(self.cs,0)){_goto_level=40;continue}}if($truthy($rb_le(_goto_level,10))&&($eqeqeq(97,$ret_or_1=_lex_from_state_actions["$[]"](self.cs))&&(self.ts=p),_keys=self.cs["$<<"](1),_inds=_lex_index_offsets["$[]"](self.cs),_slen=_lex_key_spans["$[]"](self.cs),_wide=$truthy($ret_or_1=self.source_pts["$[]"](p))?$ret_or_1:0,_trans=$truthy($rb_gt(_slen,0))&&$truthy($rb_le(_lex_trans_keys["$[]"](_keys),_wide))&&$truthy($rb_le(_wide,_lex_trans_keys["$[]"]($rb_plus(_keys,1))))?_lex_indicies["$[]"]($rb_minus($rb_plus(_inds,_wide),_lex_trans_keys["$[]"](_keys))):_lex_indicies["$[]"]($rb_plus(_inds,_slen))),$truthy($rb_le(_goto_level,15))&&(self.cs=_lex_trans_targs["$[]"](_trans),$neqeq(_lex_trans_actions["$[]"](_trans),0)))if($eqeqeq(29,$ret_or_1=_lex_trans_actions["$[]"](_trans)))self.newline_s=p;else if($eqeqeq(117,$ret_or_1))self.escape_s=p,self.escape=nil;else if($eqeqeq(30,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil);else if($eqeqeq(60,$ret_or_1))self.sharp_s=$rb_minus(p,1);else if($eqeqeq(64,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p);else if($eqeqeq(310,$ret_or_1))tm=p;else if($eqeqeq(37,$ret_or_1))tm=p;else if($eqeqeq(39,$ret_or_1))tm=p;else if($eqeqeq(41,$ret_or_1))tm=p;else if($eqeqeq(71,$ret_or_1))heredoc_e=p;else if($eqeqeq(349,$ret_or_1))tm=$rb_minus(p,1),diag_msg="ivar_name";else if($eqeqeq(352,$ret_or_1))tm=$rb_minus(p,2),diag_msg="cvar_name";else if($eqeqeq(360,$ret_or_1))self.escape=nil;else if($eqeqeq(392,$ret_or_1))tm=p;else if($eqeqeq(308,$ret_or_1))ident_tok=self.$tok(),ident_ts=self.ts,ident_te=self.te;else if($eqeqeq(479,$ret_or_1))self.num_base=16,self.num_digits_s=p;else if($eqeqeq(473,$ret_or_1))self.num_base=10,self.num_digits_s=p;else if($eqeqeq(476,$ret_or_1))self.num_base=8,self.num_digits_s=p;else if($eqeqeq(470,$ret_or_1))self.num_base=2,self.num_digits_s=p;else if($eqeqeq(485,$ret_or_1))self.num_base=10,self.num_digits_s=self.ts;else if($eqeqeq(447,$ret_or_1))self.num_base=8,self.num_digits_s=self.ts;else if($eqeqeq(462,$ret_or_1))self.num_suffix_s=p;else if($eqeqeq(455,$ret_or_1))self.num_suffix_s=p;else if($eqeqeq(452,$ret_or_1))self.num_suffix_s=p;else if($eqeqeq(89,$ret_or_1))tm=p;else if($eqeqeq(7,$ret_or_1))self.te=$rb_plus(p,1);else{if($eqeqeq(113,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(5,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(109,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(108,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(115,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(114,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(111,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else if($eqeqeq(112,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(6,$ret_or_1))p=$rb_minus(self.te,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(4,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else{if($eqeqeq(145,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(10,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(142,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(141,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(147,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(146,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(144,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(11,$ret_or_1))p=$rb_minus(self.te,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(9,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(173,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(172,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(175,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else if($eqeqeq(176,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(179,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(178,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(181,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else{if($eqeqeq(188,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(13,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(185,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(184,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(190,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(189,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(187,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(12,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(192,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(191,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else{if($eqeqeq(199,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(15,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(195,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(194,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(201,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(200,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(197,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else if($eqeqeq(198,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(14,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(203,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(202,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(205,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else{if($eqeqeq(206,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tREGEXP_OPT",self.$tok(self.ts,$rb_minus(self.te,1)),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(207,$ret_or_1)){self.te=p,p=$rb_minus(p,1),unknown_options=self.$tok().$scan(/[^imxouesn]/),$truthy(unknown_options["$any?"]())&&self.$diagnostic("error","regexp_options",$hash2(["options"],{options:unknown_options.$join()})),self.$emit("tREGEXP_OPT"),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(16,$ret_or_1)){self.te=$rb_plus(p,1),$truthy(self.$tok()["$=~"](/^\$([1-9][0-9]*)$/))?self.$emit("tNTH_REF",self.$tok($rb_plus(self.ts,1)).$to_i()):$truthy(self.$tok()["$=~"](/^\$([&`'+])$/))?self.$emit("tBACK_REF"):self.$emit("tGVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(208,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy(self.$tok()["$=~"](/^\$([1-9][0-9]*)$/))?self.$emit("tNTH_REF",self.$tok($rb_plus(self.ts,1)).$to_i()):$truthy(self.$tok()["$=~"](/^\$([&`'+])$/))?self.$emit("tBACK_REF"):self.$emit("tGVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(210,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy(self.$tok()["$=~"](/^@@[0-9]/))&&self.$diagnostic("error","cvar_name",$hash2(["name"],{name:self.$tok()})),self.$emit("tCVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(209,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy(self.$tok()["$=~"](/^@[0-9]/))&&self.$diagnostic("error","ivar_name",$hash2(["name"],{name:self.$tok()})),self.$emit("tIVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(231,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(217,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tIDENTIFIER"),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(18,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(214,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(226,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(20,$ret_or_1)){if(self.te=$rb_plus(p,1),$truthy(self["$version?"](23))){type=($b=[self.$tok()["$[]"]($range(0,-2,!1)),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(213,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(212,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(230,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(227,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT"),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(229,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(224,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(220,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(225,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(218,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(223,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(19,$ret_or_1)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(17,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(216,$ret_or_1)){if($eqeqeq(43,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(44,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tCONSTANT"),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(45,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(22,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tLABEL",self.$tok(self.ts,$rb_minus(self.te,2)),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),self.cs=795,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(23,$ret_or_1)){if(self.te=$rb_plus(p,1),$truthy($rb_ge(self.version,31))&&$truthy(self.context.$in_argdef())){self.$emit("tBDOT3","...".$freeze()),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}p=$rb_minus(p,3),self.cs=810,_goto_level=20;continue}if($eqeqeq(233,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(232,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(235,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(234,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(21,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(241,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(240,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(239,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(251,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(242,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(247,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(245,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(250,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(274,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(257,$ret_or_1)){self.te=$rb_plus(p,1),$eqeq(self.$tok(tm,$rb_plus(tm,1)),"/".$freeze())&&($truthy($rb_lt(self.version,30))?self.$diagnostic("warning","ambiguous_literal",nil,self.$range(tm,$rb_plus(tm,1))):self.$diagnostic("warning","ambiguous_regexp",nil,self.$range(tm,$rb_plus(tm,1)))),p=$rb_minus(tm,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(263,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(25,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(265,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(tm,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(40,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(252,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(253,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(264,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(260,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$diagnostic("warning","ambiguous_prefix",$hash2(["prefix"],{prefix:self.$tok(tm,self.te)}),self.$range(tm,self.te)),p=$rb_minus(tm,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(262,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(256,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(255,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(273,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(26,$ret_or_1))p=$rb_minus(self.te,1);else{if($eqeqeq(42,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(24,$ret_or_1)){if($eqeqeq(72,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$eqeq(self.$tok(tm,$rb_plus(tm,1)),"/".$freeze())&&($truthy($rb_lt(self.version,30))?self.$diagnostic("warning","ambiguous_literal",nil,self.$range(tm,$rb_plus(tm,1))):self.$diagnostic("warning","ambiguous_regexp",nil,self.$range(tm,$rb_plus(tm,1)))),p=$rb_minus(tm,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(73,$ret_or_2)){p=$rb_minus(self.te,1),self.$diagnostic("warning","ambiguous_prefix",$hash2(["prefix"],{prefix:self.$tok(tm,self.te)}),self.$range(tm,self.te)),p=$rb_minus(tm,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(78,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}p=$rb_minus(self.te,1)}else{if($eqeqeq(44,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=494,_goto_level=20;continue}if($eqeqeq(278,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(279,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=494,_goto_level=20;continue}if($eqeqeq(45,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=494,_goto_level=20;continue}if($eqeqeq(43,$ret_or_1)){if($eqeqeq(85,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$truthy(self.cond["$active?"]())?self.$emit("kDO_COND","do".$freeze(),$rb_minus(self.te,2),self.te):self.$emit("kDO","do".$freeze(),$rb_minus(self.te,2),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(86,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=494,_goto_level=20;continue}}else{if($eqeqeq(289,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_do(!0),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(282,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(283,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(284,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(287,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(293,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(292,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(301,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(295,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(299,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(294,$ret_or_1)){if($eqeqeq(93,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(94,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=563,_goto_level=20;continue}}else{if($eqeqeq(57,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(334,$ret_or_1)){self.te=$rb_plus(p,1),type=delimiter=self.$tok()["$[]"](0).$chr(),p=$rb_minus(p,1),self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(326,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.source_buffer.$slice(self.ts).$chr(),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(55,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.$tok()["$[]"]($range(0,-2,!1)),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(347,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_minus(p,1),self.$emit("tSYMBEG",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),self.cs=352,_goto_level=20;continue}if($eqeqeq(335,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.$tok(),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(346,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),$rb_plus(self.ts,2))),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(69,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1)),self.ts),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(357,$ret_or_1)){self.te=$rb_plus(p,1),escape=$hash2([" ","\r","\n","\t","\v","\f"],{" ":"\\s","\r":"\\r","\n":"\\n","\t":"\\t","\v":"\\v","\f":"\\f"})["$[]"](self.source_buffer.$slice($rb_plus(self.ts,1))),self.$diagnostic("warning","invalid_escape_use",$hash2(["escape"],{escape:escape}),self.$range()),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(356,$ret_or_1))self.te=$rb_plus(p,1),self.$diagnostic("fatal","incomplete_escape",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(336,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(52,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),$truthy(self["$version?"](18))?(ident=self.$tok(self.ts,$rb_minus(self.te,2)),self.$emit($truthy(self.source_buffer.$slice(self.ts)["$=~"](/[A-Z]/))?"tCONSTANT":"tIDENTIFIER",ident,self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,1),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](ident))?self.cs=810:self.cs=self.$arg_or_cmdarg(cmd_state)):(self.$emit("tLABEL",self.$tok(self.ts,$rb_minus(self.te,2)),self.ts,$rb_minus(self.te,1)),self.cs=795),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(49,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tIDENTIFIER",ident_tok,ident_ts,ident_te),p=$rb_minus(ident_te,1),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](ident_tok))&&$truthy($rb_lt(self.version,25))?self.cs=465:self.cs=525,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(320,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs_before_block_comment=self.cs,self.cs=186,_goto_level=20;continue}if($eqeqeq(56,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(304,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(330,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(329,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tSTAR","*".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(325,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","string_eof",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else if($eqeqeq(354,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(337,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1)),self.ts),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(350,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te)):(self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=self.ts),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(355,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","incomplete_escape",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(361,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(327,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(331,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$emit("tBDOT2"):self.$emit("tDOT2"),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(332,$ret_or_1)){self.te=p,p=$rb_minus(p,1),followed_by_nl=$rb_minus(self.te,1)["$=="](self.newline_s),nl_emitted=!1,dots_te=$truthy(followed_by_nl)?$rb_minus(self.te,1):self.te,$truthy($rb_ge(self.version,30))?$truthy(self.lambda_stack["$any?"]())&&$eqeq($rb_plus(self.lambda_stack.$last(),1),self.paren_nest)?self.$emit("tDOT3","...".$freeze(),self.ts,dots_te):(self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te),$truthy($rb_ge(self.version,31))&&$truthy(followed_by_nl)&&$truthy(self.context.$in_argdef())&&(self.$emit("tNL",$rb_minus(self.te,1),self.te),nl_emitted=!0)):$truthy($rb_ge(self.version,27))?self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te):self.$emit("tDOT3","...".$freeze(),self.ts,dots_te),$truthy(followed_by_nl)&&$not(nl_emitted)&&(p=$rb_minus(p,1)),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(307,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(317,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(319,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs_before_block_comment=self.cs,self.cs=186,_goto_level=20;continue}if($eqeqeq(322,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(54,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("fatal","string_eof",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else if($eqeqeq(73,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(74,$ret_or_1)){p=$rb_minus(self.te,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(48,$ret_or_1)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(53,$ret_or_1))p=$rb_minus(self.te,1);else{if($eqeqeq(68,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(51,$ret_or_1)){if($eqeqeq(99,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(106,$ret_or_2))p=$rb_minus(self.te,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(117,$ret_or_2)){if(p=$rb_minus(self.te,1),$truthy($rb_ge(self.version,27))){self.$emit("tPIPE",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}p=$rb_minus(p,2),self.cs=810,_goto_level=20;continue}if($eqeqeq(121,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(122,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm),p=$rb_minus(tm,1),self.cs=539,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(123,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(127,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(128,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(132,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}}}else{if($eqeqeq(395,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(396,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(397,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(401,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(77,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(405,$ret_or_1)){self.te=$rb_plus(p,1),self.cs=self.$push_literal(self.$tok(),self.$tok(),self.ts),_goto_level=20;continue}if($eqeqeq(404,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(403,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(407,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(406,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(76,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(440,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tLAMBDA","->".$freeze(),self.ts,$rb_plus(self.ts,2)),self.lambda_stack.$push(self.paren_nest),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(86,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(415,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.$tok(),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts,nil,!1,!1,!0),_goto_level=20;continue}if($eqeqeq(79,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(436,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=473,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(489,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(429,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(434,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tOP_ASGN",self.$tok(self.ts,$rb_minus(self.te,1))),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(420,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tEH","?".$freeze()),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(417,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(419,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tSEMI",";".$freeze()),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(494,$ret_or_1))self.te=$rb_plus(p,1),self.$diagnostic("error","bare_backslash",nil,self.$range(self.ts,$rb_plus(self.ts,1))),p=$rb_minus(p,1);else if($eqeqeq(414,$ret_or_1))self.te=$rb_plus(p,1),self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,!1))}));else{if($eqeqeq(413,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(505,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("KEYWORDS")),self.cs=352,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(503,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(502,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("KEYWORDS")),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(444,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("error","no_dot_digit_literal");else{if($eqeqeq(491,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(433,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(441,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=473,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(497,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(439,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(435,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(428,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(442,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(426,$ret_or_1))self.te=p,p=$rb_minus(p,1);else if($eqeqeq(432,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,!1))}));else{if($eqeqeq(84,$ret_or_1)){p=$rb_minus(self.te,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(80,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("error","no_dot_digit_literal");else{if($eqeqeq(83,$ret_or_1)){p=$rb_minus(self.te,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(78,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,!1))}));else if($eqeqeq(81,$ret_or_1)){if($eqeqeq(145,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLAMBEG","{".$freeze()):self.$emit("kDO_LAMBDA","do".$freeze())):$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLCURLY","{".$freeze()):self.$emit_do(),$eqeq(self.$tok(),"{".$freeze())&&(self.paren_nest=$rb_plus(self.paren_nest,1)),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(146,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=352,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(147,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(148,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(149,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(150,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=539,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(151,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),$truthy(self["$version?"](18))&&$eqeq(self.$tok(),"not".$freeze())){self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(152,$ret_or_2)){p=$rb_minus(self.te,1),$truthy(self["$version?"](18))?(self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))||(self.cs=self.$arg_or_cmdarg(cmd_state))):self.$emit("k__ENCODING__","__ENCODING__".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(153,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(154,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(156,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",self.$tok(self.ts,$rb_minus(self.te,1)).$to_i(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else if($eqeqeq(157,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$tok(self.ts,$rb_minus(self.te,1)).$to_f(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{if($eqeqeq(158,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(160,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(164,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(165,$ret_or_2)){p=$rb_minus(self.te,1),$eqeq(tm,self.te)?self.$emit("tFID"):(self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1)),self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(167,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(168,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}}}else{if($eqeqeq(516,$ret_or_1)){if(self.te=$rb_plus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),$truthy($rb_lt(self.version,27))){p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}self.$emit("tBDOT3"),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(95,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(tm,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(510,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(513,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),$truthy($rb_lt(self.version,27))){self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(515,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),$truthy($rb_lt(self.version,27))){p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}self.$emit("tBDOT2"),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(514,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(tm,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(512,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(90,$ret_or_1)){if(p=$rb_minus(self.te,1),$truthy($rb_lt(self.version,27))){self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(87,$ret_or_1)){p=$rb_minus(self.te,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(91,$ret_or_1)){if($eqeqeq(181,$ret_or_2=self.act)){if(p=$rb_minus(self.te,1),$truthy($rb_lt(self.version,27))){self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}}else if($eqeqeq(185,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(519,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_comment(self.eq_begin_s,self.te),self.cs=self.cs_before_block_comment,_goto_level=20;continue}if($eqeqeq(518,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","embedded_document",nil,self.$range(self.eq_begin_s,$rb_plus(self.eq_begin_s,"=begin".$length())));else{if($eqeqeq(106,$ret_or_1)){self.te=$rb_plus(p,1),self.eq_begin_s=self.ts,self.cs=998,_goto_level=20;continue}if($eqeqeq(2,$ret_or_1))self.te=$rb_plus(p,1),p=$rb_minus(pe,3);else{if($eqeqeq(98,$ret_or_1)){self.te=$rb_plus(p,1),cmd_state=!0,p=$rb_minus(p,1),self.cs=802,_goto_level=20;continue}if($eqeqeq(99,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(100,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(105,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.eq_begin_s=self.ts,self.cs=998,_goto_level=20;continue}if($eqeqeq(104,$ret_or_1)){self.te=p,p=$rb_minus(p,1),cmd_state=!0,p=$rb_minus(p,1),self.cs=802,_goto_level=20;continue}if($eqeqeq(1,$ret_or_1)){p=$rb_minus(self.te,1),cmd_state=!0,p=$rb_minus(p,1),self.cs=802,_goto_level=20;continue}if($eqeqeq(67,$ret_or_1))self.newline_s=p,self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p);else if($eqeqeq(110,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(143,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(174,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(180,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(186,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(193,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(196,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(204,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else{if($eqeqeq(275,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(266,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(tm,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(258,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(358,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),escape=$hash2([" ","\r","\n","\t","\v","\f"],{" ":"\\s","\r":"\\r","\n":"\\n","\t":"\\t","\v":"\\v","\f":"\\f"})["$[]"](self.source_buffer.$slice($rb_plus(self.ts,1))),self.$diagnostic("warning","invalid_escape_use",$hash2(["escape"],{escape:escape}),self.$range()),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(333,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),followed_by_nl=$rb_minus(self.te,1)["$=="](self.newline_s),nl_emitted=!1,dots_te=$truthy(followed_by_nl)?$rb_minus(self.te,1):self.te,$truthy($rb_ge(self.version,30))?$truthy(self.lambda_stack["$any?"]())&&$eqeq($rb_plus(self.lambda_stack.$last(),1),self.paren_nest)?self.$emit("tDOT3","...".$freeze(),self.ts,dots_te):(self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te),$truthy($rb_ge(self.version,31))&&$truthy(followed_by_nl)&&$truthy(self.context.$in_argdef())&&(self.$emit("tNL",$rb_minus(self.te,1),self.te),nl_emitted=!0)):$truthy($rb_ge(self.version,27))?self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te):self.$emit("tDOT3","...".$freeze(),self.ts,dots_te),$truthy(followed_by_nl)&&$not(nl_emitted)&&(p=$rb_minus(p,1)),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(321,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs_before_block_comment=self.cs,self.cs=186,_goto_level=20;continue}if($eqeqeq(443,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),$eqeq(self.paren_nest,0)&&self.$diagnostic("warning","triple_dot_at_eol",nil,self.$range(self.ts,$rb_minus(self.te,1))),self.$emit("tDOT3","...".$freeze(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(520,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),self.$emit_comment(self.eq_begin_s,self.te),self.cs=self.cs_before_block_comment,_goto_level=20;continue}if($eqeqeq(517,$ret_or_1))self.newline_s=p,self.te=$rb_plus(p,1);else{if($eqeqeq(107,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),self.eq_begin_s=self.ts,self.cs=998,_goto_level=20;continue}if($eqeqeq(3,$ret_or_1))self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(pe,3);else{if($eqeqeq(465,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$3(chars){var self=null==$$3.$$s?this:$$3.$$s;return null==chars&&(chars=nil),self.$emit("tRATIONAL",self.$Rational(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(463,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$4(chars){var self=null==$$4.$$s?this:$$4.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(468,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$5(chars){var self=null==$$5.$$s?this:$$5.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,self.$Rational(chars)))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(466,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$6(chars){var self=null==$$6.$$s?this:$$6.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,2)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(464,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$7(chars){var self=null==$$7.$$s?this:$$7.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,2)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(467,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$8(chars){var self=null==$$8.$$s?this:$$8.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,6)),p=$rb_minus(p,6)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(456,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$9(chars){var self=null==$$9.$$s?this:$$9.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,self.$Float(chars)))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(457,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$10(chars){var self=null==$$10.$$s?this:$$10.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars),self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,2)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(458,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$11(chars){var self=null==$$11.$$s?this:$$11.$$s;return null==chars&&(chars=nil),self.$emit("tRATIONAL",self.$Rational(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(460,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$12(chars){var self=null==$$12.$$s?this:$$12.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,self.$Rational(chars)))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(459,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$13(chars){var self=null==$$13.$$s?this:$$13.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars),self.ts,$rb_minus(self.te,6)),p=$rb_minus(p,6)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(137,$ret_or_1))self.escape="",codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1)),codepoint_s=$rb_plus(self.escape_s,2),$truthy($rb_lt(self.version,24))&&(($truthy(codepoints["$start_with?"](" "))||$truthy(codepoints["$start_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3))),$truthy(spaces_p=codepoints.$index(/[ \t]{2}/))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2))),($truthy(codepoints["$end_with?"](" "))||$truthy(codepoints["$end_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))),function(){var $brk=Opal.new_brk();try{$send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],(function $$14($mlhs_tmp1){var $c,self=null==$$14.$$s?this:$$14.$$s,codepoint_str=nil,spaces=nil,codepoint=nil;return null==self.escape&&(self.escape=nil),null==$mlhs_tmp1&&($mlhs_tmp1=nil),codepoint_str=null==($c=$to_ary($mlhs_tmp1))[0]?nil:$c[0],spaces=null==$c[1]?nil:$c[1],$truthy(spaces)?codepoint_s=$rb_plus(codepoint_s,spaces.$length()):(codepoint=codepoint_str.$to_i(16),$truthy($rb_ge(codepoint,1114112))&&(self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length()))),Opal.brk(nil,$brk)),self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$("Encoding"),"UTF_8"))),codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length()))}),{$$arity:1,$$s:self,$$brk:$brk,$$has_top_level_mlhs_arg:!0})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(168,$ret_or_1))self.escape="",codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1)),codepoint_s=$rb_plus(self.escape_s,2),$truthy($rb_lt(self.version,24))&&(($truthy(codepoints["$start_with?"](" "))||$truthy(codepoints["$start_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3))),$truthy(spaces_p=codepoints.$index(/[ \t]{2}/))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2))),($truthy(codepoints["$end_with?"](" "))||$truthy(codepoints["$end_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))),function(){var $brk=Opal.new_brk();try{$send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],(function $$15($mlhs_tmp1){var $c,self=null==$$15.$$s?this:$$15.$$s,codepoint_str=nil,spaces=nil,codepoint=nil;return null==self.escape&&(self.escape=nil),null==$mlhs_tmp1&&($mlhs_tmp1=nil),codepoint_str=null==($c=$to_ary($mlhs_tmp1))[0]?nil:$c[0],spaces=null==$c[1]?nil:$c[1],$truthy(spaces)?codepoint_s=$rb_plus(codepoint_s,spaces.$length()):(codepoint=codepoint_str.$to_i(16),$truthy($rb_ge(codepoint,1114112))&&(self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length()))),Opal.brk(nil,$brk)),self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$("Encoding"),"UTF_8"))),codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length()))}),{$$arity:1,$$s:self,$$brk:$brk,$$has_top_level_mlhs_arg:!0})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(382,$ret_or_1)){self.escape="",codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1)),codepoint_s=$rb_plus(self.escape_s,2),$truthy($rb_lt(self.version,24))&&(($truthy(codepoints["$start_with?"](" "))||$truthy(codepoints["$start_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3))),$truthy(spaces_p=codepoints.$index(/[ \t]{2}/))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2))),($truthy(codepoints["$end_with?"](" "))||$truthy(codepoints["$end_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))),function(){var $brk=Opal.new_brk();try{$send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],(function $$16($mlhs_tmp1){var $c,self=null==$$16.$$s?this:$$16.$$s,codepoint_str=nil,spaces=nil,codepoint=nil;return null==self.escape&&(self.escape=nil),null==$mlhs_tmp1&&($mlhs_tmp1=nil),codepoint_str=null==($c=$to_ary($mlhs_tmp1))[0]?nil:$c[0],spaces=null==$c[1]?nil:$c[1],$truthy(spaces)?codepoint_s=$rb_plus(codepoint_s,spaces.$length()):(codepoint=codepoint_str.$to_i(16),$truthy($rb_ge(codepoint,1114112))&&(self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length()))),Opal.brk(nil,$brk)),self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$("Encoding"),"UTF_8"))),codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length()))}),{$$arity:1,$$s:self,$$brk:$brk,$$has_top_level_mlhs_arg:!0})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(118,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(149,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(363,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(121,$ret_or_1))self.$diagnostic("fatal","invalid_escape"),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(152,$ret_or_1))self.$diagnostic("fatal","invalid_escape"),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(366,$ret_or_1)){self.$diagnostic("fatal","invalid_escape"),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(123,$ret_or_1))self.escape="",self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(154,$ret_or_1))self.escape="",self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(368,$ret_or_1)){self.escape="",self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(120,$ret_or_1))self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(151,$ret_or_1))self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(365,$ret_or_1)){self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(140,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(171,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(385,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(139,$ret_or_1))self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(170,$ret_or_1))self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(384,$ret_or_1)){self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2))),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(134,$ret_or_1))self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$("Encoding"),"UTF_8")),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(165,$ret_or_1))self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$("Encoding"),"UTF_8")),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(379,$ret_or_1)){self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$("Encoding"),"UTF_8")),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(133,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(164,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(378,$ret_or_1)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(138,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(169,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(383,$ret_or_1)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(135,$ret_or_1))self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(166,$ret_or_1))self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(380,$ret_or_1)){self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(119,$ret_or_1))self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(150,$ret_or_1))self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(364,$ret_or_1)){self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(177,$ret_or_1))self.escape_s=p,self.escape=nil,self.te=$rb_plus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(182,$ret_or_1))self.escape_s=p,self.escape=nil,self.te=$rb_plus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(58,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.newline_s=p;else if($eqeqeq(31,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p;else if($eqeqeq(33,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p;else if($eqeqeq(35,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p;else if($eqeqeq(219,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(238,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(246,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(34,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(277,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(269,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(288,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(300,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(296,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(59,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=$rb_plus(p,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(50,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=$rb_plus(p,1),self.$emit("tIDENTIFIER",ident_tok,ident_ts,ident_te),p=$rb_minus(ident_te,1),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](ident_tok))&&$truthy($rb_lt(self.version,25))?self.cs=465:self.cs=525,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(318,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(402,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(398,$ret_or_1)){if($truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),$truthy(self.context.$in_kwarg())){p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}self.cs=186,_goto_level=20;continue}if($eqeqeq(411,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(408,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),self.cs=186,_goto_level=20;continue}if($eqeqeq(495,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(427,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),self.cs=990,_goto_level=20;continue}if($eqeqeq(101,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(268,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),self.$emit("tLAMBEG","{".$freeze(),$rb_minus(self.te,1),self.te)):self.$emit("tLCURLY","{".$freeze(),$rb_minus(self.te,1),self.te),self.command_start=!0,self.paren_nest=$rb_plus(self.paren_nest,1),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(290,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),self.$emit("tLAMBEG","{".$freeze())):self.$emit("tLBRACE_ARG","{".$freeze()),self.paren_nest=$rb_plus(self.paren_nest,1),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(393,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),self.command_start=!0,self.$emit("tLAMBEG","{".$freeze())):self.$emit("tLBRACE","{".$freeze()),self.paren_nest=$rb_plus(self.paren_nest,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(508,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLAMBEG","{".$freeze()):self.$emit("kDO_LAMBDA","do".$freeze())):$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLCURLY","{".$freeze()):self.$emit_do(),$eqeq(self.$tok(),"{".$freeze())&&(self.paren_nest=$rb_plus(self.paren_nest,1)),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(509,$ret_or_1)){if(current_literal=self.$literal(),$truthy(current_literal)&&$truthy(current_literal.$end_interp_brace_and_try_closing())){$truthy(self["$version?"](18,19))?(self.$emit("tRCURLY","}".$freeze(),$rb_minus(p,1),p),self.cond.$lexpop(),self.cmdarg.$lexpop()):self.$emit("tSTRING_DEND","}".$freeze(),$rb_minus(p,1),p),$truthy(current_literal.$saved_herebody_s())&&(self.herebody_s=current_literal.$saved_herebody_s()),p=$rb_minus(p,1),self.cs=self.$next_state_for_literal(current_literal),p=$rb_plus(p,1),_goto_level=40;continue}self.paren_nest=$rb_minus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),$truthy($rb_lt(self.version,24))?(self.cond.$lexpop(),self.cmdarg.$lexpop()):(self.cond.$pop(),self.cmdarg.$pop()),($eqeq(self.$tok(),"}".$freeze())||$eqeq(self.$tok(),"]".$freeze()))&&($truthy($rb_ge(self.version,25))?self.cs=810:self.cs=531),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(61,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p);else if($eqeqeq(65,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.newline_s=p;else if($eqeqeq(222,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(237,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(249,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(271,$ret_or_1)){self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(286,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(298,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(324,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(400,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(410,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(431,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(103,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(243,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("tFID",self.$tok(self.ts,tm),self.ts,tm),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_minus(tm,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(338,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(309,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(424,$ret_or_1)){if(tm=p,$eqeqeq(145,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLAMBEG","{".$freeze()):self.$emit("kDO_LAMBDA","do".$freeze())):$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLCURLY","{".$freeze()):self.$emit_do(),$eqeq(self.$tok(),"{".$freeze())&&(self.paren_nest=$rb_plus(self.paren_nest,1)),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(146,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=352,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(147,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(148,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(149,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(150,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=539,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(151,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),$truthy(self["$version?"](18))&&$eqeq(self.$tok(),"not".$freeze())){self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(152,$ret_or_2)){p=$rb_minus(self.te,1),$truthy(self["$version?"](18))?(self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))||(self.cs=self.$arg_or_cmdarg(cmd_state))):self.$emit("k__ENCODING__","__ENCODING__".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(153,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(154,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(156,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",self.$tok(self.ts,$rb_minus(self.te,1)).$to_i(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else if($eqeqeq(157,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$tok(self.ts,$rb_minus(self.te,1)).$to_f(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{if($eqeqeq(158,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(160,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(164,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(165,$ret_or_2)){p=$rb_minus(self.te,1),$eqeq(tm,self.te)?self.$emit("tFID"):(self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1)),self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(167,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(168,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}}}else{if($eqeqeq(244,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tFID",self.$tok(self.ts,tm),self.ts,tm),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_minus(tm,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(339,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(311,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(425,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),$eqeq(tm,self.te)?self.$emit("tFID"):(self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1)),self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(340,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(312,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(341,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(313,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(345,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(316,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(344,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(315,$ret_or_1)){if(tm=$rb_minus(p,2),$eqeqeq(99,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(106,$ret_or_2))p=$rb_minus(self.te,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(117,$ret_or_2)){if(p=$rb_minus(self.te,1),$truthy($rb_ge(self.version,27))){self.$emit("tPIPE",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}p=$rb_minus(p,2),self.cs=810,_goto_level=20;continue}if($eqeqeq(121,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(122,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm),p=$rb_minus(tm,1),self.cs=539,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(123,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(127,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(128,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(132,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}}}else{if($eqeqeq(342,$ret_or_1)){tm=$rb_minus(p,3),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(314,$ret_or_1)){tm=$rb_minus(p,3),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(343,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(490,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(267,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit("tLBRACK","[".$freeze(),$rb_minus(self.te,1),self.te),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(386,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit("tLBRACK","[".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(493,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit("tLBRACK2","[".$freeze()),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(496,$ret_or_1)){self.paren_nest=$rb_minus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),$truthy($rb_lt(self.version,24))?(self.cond.$lexpop(),self.cmdarg.$lexpop()):(self.cond.$pop(),self.cmdarg.$pop()),($eqeq(self.$tok(),"}".$freeze())||$eqeq(self.$tok(),"]".$freeze()))&&($truthy($rb_ge(self.version,25))?self.cs=810:self.cs=531),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(259,$ret_or_1)){if(self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),$truthy(self["$version?"](18))){self.$emit("tLPAREN2","(".$freeze(),$rb_minus(self.te,1),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}self.$emit("tLPAREN_ARG","(".$freeze(),$rb_minus(self.te,1),self.te),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(272,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit("tLPAREN2","(".$freeze()),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(280,$ret_or_1)){if(self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit("tLPAREN_ARG","(".$freeze(),$rb_minus(self.te,1),self.te),$truthy(self["$version?"](18))){self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(328,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit("tLPAREN","(".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(437,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(438,$ret_or_1)){self.paren_nest=$rb_minus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),$truthy($rb_lt(self.version,24))?(self.cond.$lexpop(),self.cmdarg.$lexpop()):(self.cond.$pop(),self.cmdarg.$pop()),($eqeq(self.$tok(),"}".$freeze())||$eqeq(self.$tok(),"]".$freeze()))&&($truthy($rb_ge(self.version,25))?self.cs=810:self.cs=531),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(72,$ret_or_1))heredoc_e=p,self.newline_s=p;else if($eqeqeq(353,$ret_or_1)){if(new_herebody_s=p,self.te=p,p=$rb_minus(p,1),self.$tok(self.ts,heredoc_e)["$=~"](/^<<(-?)(~?)(["'`]?)(.*)\3$/m),indent=$truthy($ret_or_2=(($b=$gvars["~"])===nil?nil:$b["$[]"](1))["$empty?"]()["$!"]())?$ret_or_2:(($b=$gvars["~"])===nil?nil:$b["$[]"](2))["$empty?"]()["$!"](),dedent_body=(($b=$gvars["~"])===nil?nil:$b["$[]"](2))["$empty?"]()["$!"](),type=$truthy((($b=$gvars["~"])===nil?nil:$b["$[]"](3))["$empty?"]())?'<<"'.$freeze():$rb_plus("<<".$freeze(),($b=$gvars["~"])===nil?nil:$b["$[]"](3)),delimiter=($b=$gvars["~"])===nil?nil:$b["$[]"](4),$truthy($rb_ge(self.version,27))?($truthy($rb_gt(delimiter.$count("\n"),0))||$truthy($rb_gt(delimiter.$count("\r"),0)))&&self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1))):$truthy($rb_ge(self.version,24))&&$truthy($rb_gt(delimiter.$count("\n"),0))&&($truthy(delimiter["$end_with?"]("\n"))?(self.$diagnostic("warning","heredoc_id_ends_with_nl",nil,self.$range(self.ts,$rb_plus(self.ts,1))),delimiter=delimiter.$rstrip()):self.$diagnostic("fatal","heredoc_id_has_newline",nil,self.$range(self.ts,$rb_plus(self.ts,1)))),$truthy(dedent_body)&&$truthy(self["$version?"](18,19,20,21,22))){self.$emit("tLSHFT","<<".$freeze(),self.ts,$rb_plus(self.ts,2)),p=$rb_plus(self.ts,1),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$push_literal(type,delimiter,self.ts,heredoc_e,indent,dedent_body),self.herebody_s=$truthy($ret_or_2=self.herebody_s)?$ret_or_2:new_herebody_s,p=$rb_minus(self.herebody_s,1)}else{if($eqeqeq(348,$ret_or_1)){tm=$rb_minus(p,1),diag_msg="ivar_name",self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te)):(self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=self.ts),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(351,$ret_or_1)){tm=$rb_minus(p,2),diag_msg="cvar_name",self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te)):(self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=self.ts),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(359,$ret_or_1)){self.escape=nil,self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(389,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm),p=$rb_minus(tm,1),self.cs=539,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(480,$ret_or_1))self.num_base=16,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(474,$ret_or_1))self.num_base=10,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(477,$ret_or_1))self.num_base=8,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(471,$ret_or_1))self.num_base=2,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(486,$ret_or_1))self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p;else if($eqeqeq(449,$ret_or_1))self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p;else if($eqeqeq(487,$ret_or_1))self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$17(chars){return null==chars&&(chars=nil),(null==$$17.$$s?this:$$17.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self});else if($eqeqeq(8,$ret_or_1))self.te=$rb_plus(p,1),self.newline_s=p;else if($eqeqeq(453,$ret_or_1))self.te=$rb_plus(p,1),self.num_suffix_s=p;else if($eqeqeq(228,$ret_or_1))self.te=$rb_plus(p,1),self.act=43;else if($eqeqeq(215,$ret_or_1))self.te=$rb_plus(p,1),self.act=44;else if($eqeqeq(211,$ret_or_1))self.te=$rb_plus(p,1),self.act=45;else if($eqeqeq(27,$ret_or_1))self.te=$rb_plus(p,1),self.act=72;else if($eqeqeq(261,$ret_or_1))self.te=$rb_plus(p,1),self.act=73;else if($eqeqeq(28,$ret_or_1))self.te=$rb_plus(p,1),self.act=78;else if($eqeqeq(254,$ret_or_1))self.te=$rb_plus(p,1),self.act=79;else if($eqeqeq(281,$ret_or_1))self.te=$rb_plus(p,1),self.act=85;else if($eqeqeq(46,$ret_or_1))self.te=$rb_plus(p,1),self.act=86;else if($eqeqeq(302,$ret_or_1))self.te=$rb_plus(p,1),self.act=93;else if($eqeqeq(291,$ret_or_1))self.te=$rb_plus(p,1),self.act=94;else if($eqeqeq(70,$ret_or_1))self.te=$rb_plus(p,1),self.act=106;else if($eqeqeq(394,$ret_or_1))self.te=$rb_plus(p,1),self.act=117;else if($eqeqeq(305,$ret_or_1))self.te=$rb_plus(p,1),self.act=121;else if($eqeqeq(388,$ret_or_1))self.te=$rb_plus(p,1),self.act=122;else if($eqeqeq(387,$ret_or_1))self.te=$rb_plus(p,1),self.act=123;else if($eqeqeq(75,$ret_or_1))self.te=$rb_plus(p,1),self.act=127;else if($eqeqeq(303,$ret_or_1))self.te=$rb_plus(p,1),self.act=128;else if($eqeqeq(306,$ret_or_1))self.te=$rb_plus(p,1),self.act=132;else if($eqeqeq(504,$ret_or_1))self.te=$rb_plus(p,1),self.act=145;else if($eqeqeq(499,$ret_or_1))self.te=$rb_plus(p,1),self.act=146;else if($eqeqeq(507,$ret_or_1))self.te=$rb_plus(p,1),self.act=148;else if($eqeqeq(500,$ret_or_1))self.te=$rb_plus(p,1),self.act=149;else if($eqeqeq(501,$ret_or_1))self.te=$rb_plus(p,1),self.act=150;else if($eqeqeq(506,$ret_or_1))self.te=$rb_plus(p,1),self.act=151;else if($eqeqeq(498,$ret_or_1))self.te=$rb_plus(p,1),self.act=152;else if($eqeqeq(492,$ret_or_1))self.te=$rb_plus(p,1),self.act=153;else if($eqeqeq(418,$ret_or_1))self.te=$rb_plus(p,1),self.act=154;else if($eqeqeq(451,$ret_or_1))self.te=$rb_plus(p,1),self.act=157;else if($eqeqeq(82,$ret_or_1))self.te=$rb_plus(p,1),self.act=158;else if($eqeqeq(421,$ret_or_1))self.te=$rb_plus(p,1),self.act=160;else if($eqeqeq(412,$ret_or_1))self.te=$rb_plus(p,1),self.act=164;else if($eqeqeq(423,$ret_or_1))self.te=$rb_plus(p,1),self.act=165;else if($eqeqeq(416,$ret_or_1))self.te=$rb_plus(p,1),self.act=167;else if($eqeqeq(422,$ret_or_1))self.te=$rb_plus(p,1),self.act=168;else if($eqeqeq(88,$ret_or_1))self.te=$rb_plus(p,1),self.act=181;else if($eqeqeq(511,$ret_or_1))self.te=$rb_plus(p,1),self.act=185;else if($eqeqeq(183,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string()),self.escape_s=p,self.escape=nil}else if($eqeqeq(124,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(155,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(369,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(131,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(162,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(376,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(122,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(153,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(367,$ret_or_1)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(130,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(161,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(375,$ret_or_1)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(126,$ret_or_1))self.escape="",self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(157,$ret_or_1))self.escape="",self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(371,$ret_or_1)){self.escape="",self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(129,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(160,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(374,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(136,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(167,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(381,$ret_or_1)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(116,$ret_or_1))self.escape_s=p,self.escape=nil,self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(148,$ret_or_1))self.escape_s=p,self.escape=nil,self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(362,$ret_or_1)){self.escape_s=p,self.escape=nil,self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(62,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.newline_s=p;else if($eqeqeq(221,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(236,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(248,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(270,$ret_or_1)){self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(285,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(297,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(323,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(399,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(409,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(430,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(102,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(482,$ret_or_1))self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$18(chars){return null==chars&&(chars=nil),(null==$$18.$$s?this:$$18.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self});else if($eqeqeq(446,$ret_or_1))self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$19(chars){return null==chars&&(chars=nil),(null==$$19.$$s?this:$$19.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self});else{if($eqeqeq(461,$ret_or_1)){self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$20(chars){return null==chars&&(chars=nil),(null==$$20.$$s?this:$$20.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(454,$ret_or_1)){self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$21(chars){var self=null==$$21.$$s?this:$$21.$$s;return null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(450,$ret_or_1)){self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$22(chars){var self=null==$$22.$$s?this:$$22.$$s;return null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(276,$ret_or_1))self.te=$rb_plus(p,1),self.newline_s=p,self.act=79;else if($eqeqeq(36,$ret_or_1))self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.act=78;else if($eqeqeq(47,$ret_or_1))self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.act=86;else if($eqeqeq(94,$ret_or_1))self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.act=181;else if($eqeqeq(66,$ret_or_1))self.te=$rb_plus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=99;else if($eqeqeq(85,$ret_or_1))self.te=$rb_plus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=147;else if($eqeqeq(93,$ret_or_1))self.te=$rb_plus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=181;else if($eqeqeq(38,$ret_or_1))self.te=$rb_plus(p,1),tm=p,self.act=73;else if($eqeqeq(391,$ret_or_1))self.te=$rb_plus(p,1),tm=p,self.act=127;else if($eqeqeq(390,$ret_or_1))self.te=$rb_plus(p,1),tm=p,self.act=128;else if($eqeqeq(483,$ret_or_1))self.te=$rb_plus(p,1),self.num_base=10,self.num_digits_s=self.ts,self.act=154;else if($eqeqeq(127,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(158,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(372,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(125,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(156,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(370,$ret_or_1)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(132,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(163,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(377,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(128,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(159,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(373,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(478,$ret_or_1)){self.num_base=16,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$23(chars){return null==chars&&(chars=nil),(null==$$23.$$s?this:$$23.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(472,$ret_or_1)){self.num_base=10,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$24(chars){return null==chars&&(chars=nil),(null==$$24.$$s?this:$$24.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(475,$ret_or_1)){self.num_base=8,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$25(chars){return null==chars&&(chars=nil),(null==$$25.$$s?this:$$25.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(469,$ret_or_1)){self.num_base=2,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$26(chars){return null==chars&&(chars=nil),(null==$$26.$$s?this:$$26.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(481,$ret_or_1)){self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$27(chars){return null==chars&&(chars=nil),(null==$$27.$$s?this:$$27.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(445,$ret_or_1)){self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$28(chars){return null==chars&&(chars=nil),(null==$$28.$$s?this:$$28.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}$eqeqeq(32,$ret_or_1)?(self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p,self.act=73):$eqeqeq(63,$ret_or_1)?(self.te=$rb_plus(p,1),self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=99):$eqeqeq(92,$ret_or_1)?(self.te=$rb_plus(p,1),self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=181):$eqeqeq(488,$ret_or_1)?(self.te=$rb_plus(p,1),self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$29(chars){return null==chars&&(chars=nil),(null==$$29.$$s?this:$$29.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.act=156):$eqeqeq(484,$ret_or_1)?(self.te=$rb_plus(p,1),self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$30(chars){return null==chars&&(chars=nil),(null==$$30.$$s?this:$$30.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.act=156):$eqeqeq(448,$ret_or_1)&&(self.te=$rb_plus(p,1),self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$31(chars){return null==chars&&(chars=nil),(null==$$31.$$s?this:$$31.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.act=156)}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}if($truthy($rb_le(_goto_level,20))){if($eqeqeq(96,$ret_or_1=_lex_to_state_actions["$[]"](self.cs))&&(self.ts=nil),$eqeq(self.cs,0)){_goto_level=40;continue}if(p=$rb_plus(p,1),$neqeq(p,pe)){_goto_level=10;continue}}if($truthy($rb_le(_goto_level,30))&&$eqeq(p,eof)&&$truthy($rb_gt(_lex_eof_trans["$[]"](self.cs),0)))_trans=$rb_minus(_lex_eof_trans["$[]"](self.cs),1),_goto_level=15;else if($truthy($rb_le(_goto_level,40)))break}return $truthy(!1),self.p=p,$truthy(self.token_queue["$any?"]())?self.token_queue.$shift():$eqeq(self.cs,klass.$lex_error())?[!1,["$error".$freeze(),self.$range($rb_minus(p,1),p)]]:(eof=self.source_pts.$size(),[!1,["$eof".$freeze(),self.$range(eof,eof)]])}),0),self.$protected(),$def(self,"$eof_codepoint?",(function(point){return[4,26,0]["$include?"](point)}),1),$def(self,"$version?",(function($a){var self=this;return Opal.slice.call(arguments)["$include?"](self.version)}),-1),$def(self,"$stack_pop",(function(){return this.top=$rb_minus(this.top,1),this.stack["$[]"](this.top)}),0),$def(self,"$encode_escape",(function(ord){return ord.$chr().$force_encoding(this.source_buffer.$source().$encoding())}),1),$def(self,"$tok",(function(s,e){return null==s&&(s=this.ts),null==e&&(e=this.te),this.source_buffer.$slice(Opal.Range.$new(s,e,!0))}),-1),$def(self,"$range",(function(s,e){return null==s&&(s=this.ts),null==e&&(e=this.te),$$$($$$($$("Parser"),"Source"),"Range").$new(this.source_buffer,s,e)}),-1),$def(self,"$emit",(function(type,value,s,e){var token;return null==value&&(value=this.$tok()),null==s&&(s=this.ts),null==e&&(e=this.te),token=[type,[value,this.$range(s,e)]],this.token_queue.$push(token),$truthy(this.tokens)&&this.tokens.$push(token),token}),-2),$def(self,"$emit_table",(function(table,s,e){var value;return null==s&&(s=this.ts),null==e&&(e=this.te),value=this.$tok(s,e),this.$emit(table["$[]"](value),value,s,e)}),-2),$def(self,"$emit_do",(function(do_block){return null==do_block&&(do_block=!1),$truthy(this.cond["$active?"]())?this.$emit("kDO_COND","do".$freeze()):$truthy(this.cmdarg["$active?"]())||$truthy(do_block)?this.$emit("kDO_BLOCK","do".$freeze()):this.$emit("kDO","do".$freeze())}),-1),$def(self,"$arg_or_cmdarg",(function(cmd_state){return $truthy(cmd_state)?this.$class().$lex_en_expr_cmdarg():this.$class().$lex_en_expr_arg()}),1),$def(self,"$emit_comment",(function(s,e){return null==s&&(s=this.ts),null==e&&(e=this.te),$truthy(this.comments)&&this.comments.$push($$$($$$($$("Parser"),"Source"),"Comment").$new(this.$range(s,e))),$truthy(this.tokens)&&this.tokens.$push(["tCOMMENT",[this.$tok(s,e),this.$range(s,e)]]),nil}),-1),$def(self,"$diagnostic",(function(type,reason,arguments$,location,highlights){return null==arguments$&&(arguments$=nil),null==location&&(location=this.$range()),null==highlights&&(highlights=[]),this.diagnostics.$process($$$($$("Parser"),"Diagnostic").$new(type,reason,arguments$,location,highlights))}),-3),$def(self,"$push_literal",(function($a){var args,self=this,new_literal=nil;return args=Opal.slice.call(arguments),new_literal=$send($$("Literal"),"new",[self].concat($to_a(args))),self.literal_stack.$push(new_literal),self.$next_state_for_literal(new_literal)}),-1),$def(self,"$next_state_for_literal",(function(literal){return $truthy(literal["$words?"]())&&$truthy(literal["$backslash_delimited?"]())?$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_backslash_delimited_words():this.$class().$lex_en_plain_backslash_delimited_words():$truthy(literal["$words?"]())&&$not(literal["$backslash_delimited?"]())?$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_words():this.$class().$lex_en_plain_words():$not(literal["$words?"]())&&$truthy(literal["$backslash_delimited?"]())?$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_backslash_delimited():this.$class().$lex_en_plain_backslash_delimited():$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_string():this.$class().$lex_en_plain_string()}),1),$def(self,"$literal",(function(){return this.literal_stack.$last()}),0),$def(self,"$pop_literal",(function(){var old_literal=nil;return old_literal=this.literal_stack.$pop(),this.dedent_level=old_literal.$dedent_level(),$eqeq(old_literal.$type(),"tREGEXP_BEG")?this.$class().$lex_en_regexp_modifiers():this.$class().$lex_en_expr_end()}),0),$const_set($nesting[0],"PUNCTUATION",$hash2(["=","&","|","!","^","+","-","*","/","%","~",",",";",".","..","...","[","]","(",")","?",":","&&","||","-@","+@","~@","**","->","=~","!~","==","!=",">",">>",">=","<","<<","<=","=>","::","===","<=>","[]","[]=","{","}","`","!@","&."],{"=":"tEQL","&":"tAMPER2","|":"tPIPE","!":"tBANG","^":"tCARET","+":"tPLUS","-":"tMINUS","*":"tSTAR2","/":"tDIVIDE","%":"tPERCENT","~":"tTILDE",",":"tCOMMA",";":"tSEMI",".":"tDOT","..":"tDOT2","...":"tDOT3","[":"tLBRACK2","]":"tRBRACK","(":"tLPAREN2",")":"tRPAREN","?":"tEH",":":"tCOLON","&&":"tANDOP","||":"tOROP","-@":"tUMINUS","+@":"tUPLUS","~@":"tTILDE","**":"tPOW","->":"tLAMBDA","=~":"tMATCH","!~":"tNMATCH","==":"tEQ","!=":"tNEQ",">":"tGT",">>":"tRSHFT",">=":"tGEQ","<":"tLT","<<":"tLSHFT","<=":"tLEQ","=>":"tASSOC","::":"tCOLON2","===":"tEQQ","<=>":"tCMP","[]":"tAREF","[]=":"tASET","{":"tLCURLY","}":"tRCURLY","`":"tBACK_REF2","!@":"tBANG","&.":"tANDDOT"})),$const_set($nesting[0],"PUNCTUATION_BEGIN",$hash2(["&","*","**","+","-","::","(","{","["],{"&":"tAMPER","*":"tSTAR","**":"tDSTAR","+":"tUPLUS","-":"tUMINUS","::":"tCOLON3","(":"tLPAREN","{":"tLBRACE","[":"tLBRACK"})),$const_set($nesting[0],"KEYWORDS",$hash2(["if","unless","while","until","rescue","defined?","BEGIN","END"],{if:"kIF_MOD",unless:"kUNLESS_MOD",while:"kWHILE_MOD",until:"kUNTIL_MOD",rescue:"kRESCUE_MOD","defined?":"kDEFINED",BEGIN:"klBEGIN",END:"klEND"})),$const_set($nesting[0],"KEYWORDS_BEGIN",$hash2(["if","unless","while","until","rescue","defined?","BEGIN","END"],{if:"kIF",unless:"kUNLESS",while:"kWHILE",until:"kUNTIL",rescue:"kRESCUE","defined?":"kDEFINED",BEGIN:"klBEGIN",END:"klEND"})),$send(["class","module","def","undef","begin","end","then","elsif","else","ensure","case","when","for","break","next","redo","retry","in","do","return","yield","super","self","nil","true","false","and","or","not","alias","__FILE__","__LINE__","__ENCODING__"],"each",[],(function(keyword){return null==keyword&&(keyword=nil),$writer=[keyword,($writer=[keyword,"k"+keyword.$upcase()],$send($$("KEYWORDS"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])],$send($$("KEYWORDS_BEGIN"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1)}($$("Parser"),0,$nesting)},Opal.modules["parser/lexer/literal"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$hash2=Opal.hash2,$enc=Opal.enc,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$to_ary=Opal.to_ary,$def=Opal.def,$eqeq=Opal.eqeq,$rb_minus=Opal.rb_minus,$neqeq=Opal.neqeq,$not=Opal.not,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$rb_gt=Opal.rb_gt;return Opal.add_stubs("attr_reader,attr_accessor,coerce_encoding,include?,send,+,[],fetch,==,!,heredoc?,start_with?,freeze,clear_buffer,emit_start_tok,type,=~,words?,delimiter?,-,extend_space,!=,flush_string,emit,each_char,===,%,>,nil?,<<,empty?,extend_content,protected,lstrip,b,dup,force_encoding,encoding,source,source_buffer,length"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Literal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.lexer=$proto.start_tok=$proto.str_type=$proto.monolithic=$proto.interpolate=$proto.heredoc_e=$proto.dedent_body=$proto.end_delim=$proto.start_delim=$proto.nesting=$proto.label_allowed=$proto.buffer=$proto.str_s=$proto.interp_braces=$proto.buffer_s=$proto.buffer_e=$proto.space_emitted=$proto.indent=nil,$const_set($nesting[0],"DELIMITERS",$hash2(["(","[","{","<"],{"(":$enc(")","ASCII-8BIT"),"[":$enc("]","ASCII-8BIT"),"{":$enc("}","ASCII-8BIT"),"<":$enc(">","ASCII-8BIT")})),$const_set($nesting[0],"TYPES",$hash2(["'","<<'","%q",'"','<<"',"%","%Q","%w","%W","%i","%I",":'","%s",':"',"/","%r","%x","`","<<`"],{"'":["tSTRING_BEG",!1],"<<'":["tSTRING_BEG",!1],"%q":["tSTRING_BEG",!1],'"':["tSTRING_BEG",!0],'<<"':["tSTRING_BEG",!0],"%":["tSTRING_BEG",!0],"%Q":["tSTRING_BEG",!0],"%w":["tQWORDS_BEG",!1],"%W":["tWORDS_BEG",!0],"%i":["tQSYMBOLS_BEG",!1],"%I":["tSYMBOLS_BEG",!0],":'":["tSYMBEG",!1],"%s":["tSYMBEG",!1],':"':["tSYMBEG",!0],"/":["tREGEXP_BEG",!0],"%r":["tREGEXP_BEG",!0],"%x":["tXSTRING_BEG",!0],"`":["tXSTRING_BEG",!0],"<<`":["tXSTRING_BEG",!0]})),self.$attr_reader("heredoc_e","str_s","dedent_level"),self.$attr_accessor("saved_herebody_s"),$def(self,"$initialize",(function(lexer,str_type,delimiter,str_s,heredoc_e,indent,dedent_body,label_allowed){var $a,$b,$ret_or_1,$ret_or_2;return null==heredoc_e&&(heredoc_e=nil),null==indent&&(indent=!1),null==dedent_body&&(dedent_body=!1),null==label_allowed&&(label_allowed=!1),this.lexer=lexer,this.nesting=1,str_type=this.$coerce_encoding(str_type),delimiter=this.$coerce_encoding(delimiter),$truthy($$("TYPES")["$include?"](str_type))||lexer.$send("diagnostic","error","unexpected_percent_str",$hash2(["type"],{type:str_type}),this.lexer.$send("range",str_s,$rb_plus(str_s,2))),this.str_type=str_type,this.str_s=str_s,$b=$$("TYPES")["$[]"](str_type),$a=$to_ary($b),this.start_tok=null==$a[0]?nil:$a[0],this.interpolate=null==$a[1]?nil:$a[1],this.start_delim=$truthy($$("DELIMITERS")["$include?"](delimiter))?delimiter:nil,this.end_delim=$$("DELIMITERS").$fetch(delimiter,delimiter),this.heredoc_e=heredoc_e,this.indent=indent,this.label_allowed=label_allowed,this.dedent_body=dedent_body,this.dedent_level=nil,this.interp_braces=0,this.space_emitted=!0,this.monolithic=$truthy($ret_or_1=$truthy($ret_or_2=this.start_tok["$=="]("tSTRING_BEG"))?[$enc("'","ASCII-8BIT"),$enc('"',"ASCII-8BIT")]["$include?"](str_type):$ret_or_2)?this["$heredoc?"]()["$!"]():$ret_or_1,$truthy(this.str_type["$start_with?"]($enc("%","ASCII-8BIT").$freeze()))&&(this.str_type=$rb_plus(this.str_type,delimiter)),this.$clear_buffer(),$truthy(this.monolithic)?nil:this.$emit_start_tok()}),-5),$def(self,"$interpolate?",(function(){return this.interpolate}),0),$def(self,"$words?",(function(){var $ret_or_1,$ret_or_2,$ret_or_3;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.$type()["$=="]("tWORDS_BEG"))?$ret_or_3:this.$type()["$=="]("tQWORDS_BEG"))?$ret_or_2:this.$type()["$=="]("tSYMBOLS_BEG"))?$ret_or_1:this.$type()["$=="]("tQSYMBOLS_BEG")}),0),$def(self,"$regexp?",(function(){return this.$type()["$=="]("tREGEXP_BEG")}),0),$def(self,"$heredoc?",(function(){return this.heredoc_e["$!"]()["$!"]()}),0),$def(self,"$plain_heredoc?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$heredoc?"]())?this.dedent_body["$!"]():$ret_or_1}),0),$def(self,"$squiggly_heredoc?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$heredoc?"]())?this.dedent_body:$ret_or_1}),0),$def(self,"$backslash_delimited?",(function(){return this.end_delim["$=="]($enc("\\","ASCII-8BIT").$freeze())}),0),$def(self,"$type",(function(){return this.start_tok}),0),$def(self,"$munge_escape?",(function(character){return character=this.$coerce_encoding(character),!(!$truthy(this["$words?"]())||!$truthy(character["$=~"](/[ \t\v\r\f\n]/)))||[$enc("\\","ASCII-8BIT").$freeze(),this.start_delim,this.end_delim]["$include?"](character)}),1),$def(self,"$nest_and_try_closing",(function(delimiter,ts,te,lookahead){return null==lookahead&&(lookahead=nil),delimiter=this.$coerce_encoding(delimiter),$truthy(this.start_delim)&&$eqeq(this.start_delim,delimiter)?this.nesting=$rb_plus(this.nesting,1):$truthy(this["$delimiter?"](delimiter))&&(this.nesting=$rb_minus(this.nesting,1)),$eqeq(this.nesting,0)?($truthy(this["$words?"]())&&this.$extend_space(ts,ts),$truthy(lookahead)&&$truthy(this.label_allowed)&&$eqeq(lookahead["$[]"](0),$enc(":","ASCII-8BIT"))&&$neqeq(lookahead["$[]"](1),$enc(":","ASCII-8BIT"))&&$eqeq(this.start_tok,"tSTRING_BEG")?(this.$flush_string(),this.$emit("tLABEL_END",this.end_delim,ts,$rb_plus(te,1))):$truthy(this.monolithic)?this.$emit("tSTRING",this.buffer,this.str_s,te):($truthy(this["$heredoc?"]())||this.$flush_string(),this.$emit("tSTRING_END",this.end_delim,ts,te))):nil}),-4),$def(self,"$infer_indent_level",(function(line){var self=this,indent_level=nil;return $not(self.dedent_body)?nil:(indent_level=0,function(){var $brk=Opal.new_brk();try{return $send(line,"each_char",[],(function $$9(char$){var $ret_or_1,self=null==$$9.$$s?this:$$9.$$s;return null==self.dedent_level&&(self.dedent_level=nil),null==char$&&(char$=nil),$eqeqeq(" ",$ret_or_1=char$)?indent_level=$rb_plus(indent_level,1):$eqeqeq("\t",$ret_or_1)?indent_level=$rb_plus(indent_level,$rb_minus(8,indent_level["$%"](8))):(($truthy(self.dedent_level["$nil?"]())||$truthy($rb_gt(self.dedent_level,indent_level)))&&(self.dedent_level=indent_level),void Opal.brk(nil,$brk))}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}())}),1),$def(self,"$start_interp_brace",(function(){return this.interp_braces=$rb_plus(this.interp_braces,1)}),0),$def(self,"$end_interp_brace_and_try_closing",(function(){return this.interp_braces=$rb_minus(this.interp_braces,1),this.interp_braces["$=="](0)}),0),$def(self,"$extend_string",(function(string,ts,te){var $ret_or_1;return this.buffer_s=$truthy($ret_or_1=this.buffer_s)?$ret_or_1:ts,this.buffer_e=te,this.buffer["$<<"](string)}),3),$def(self,"$flush_string",(function(){return $truthy(this.monolithic)&&(this.$emit_start_tok(),this.monolithic=!1),$truthy(this.buffer["$empty?"]())?nil:(this.$emit("tSTRING_CONTENT",this.buffer,this.buffer_s,this.buffer_e),this.$clear_buffer(),this.$extend_content())}),0),$def(self,"$extend_content",(function(){return this.space_emitted=!1}),0),$def(self,"$extend_space",(function(ts,te){return this.$flush_string(),$truthy(this.space_emitted)?nil:(this.$emit("tSPACE",nil,ts,te),this.space_emitted=!0)}),2),$def(self,"$supports_line_continuation_via_slash?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$words?"]()["$!"]())?this.interpolate:$ret_or_1}),0),self.$protected(),$def(self,"$delimiter?",(function(delimiter){return $truthy(this.indent)?this.end_delim["$=="](delimiter.$lstrip()):this.end_delim["$=="](delimiter)}),1),$def(self,"$coerce_encoding",(function(string){return string.$b()}),1),$def(self,"$clear_buffer",(function(){return this.buffer=$enc("","ASCII-8BIT").$dup(),this.buffer.$force_encoding(this.lexer.$source_buffer().$source().$encoding()),this.buffer_s=nil,this.buffer_e=nil}),0),$def(self,"$emit_start_tok",(function(){var str_e,$ret_or_1;return str_e=$truthy($ret_or_1=this.heredoc_e)?$ret_or_1:$rb_plus(this.str_s,this.str_type.$length()),this.$emit(this.start_tok,this.str_type,this.str_s,str_e)}),0),$def(self,"$emit",(function(token,type,s,e){return this.lexer.$send("emit",token,type,s,e)}),4)}(Opal.$r($nesting)("Lexer"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/lexer/stack_state"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$alias=Opal.alias;return Opal.add_stubs("freeze,clear,|,<<,&,>>,==,[],to_s"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super){var self=$klass($base,null,"StackState"),$proto=self.$$prototype;return $proto.stack=$proto.name=nil,$def(self,"$initialize",(function(name){return this.name=name.$freeze(),this.$clear()}),1),$def(self,"$clear",(function(){return this.stack=0}),0),$def(self,"$push",(function(bit){var bit_value;return bit_value=$truthy(bit)?1:0,this.stack=this.stack["$<<"](1)["$|"](bit_value),bit}),1),$def(self,"$pop",(function(){var bit_value=nil;return bit_value=this.stack["$&"](1),this.stack=this.stack["$>>"](1),bit_value["$=="](1)}),0),$def(self,"$lexpop",(function(){return this.stack=this.stack["$>>"](1)["$|"](this.stack["$&"](1)),this.stack["$[]"](0)["$=="](1)}),0),$def(self,"$active?",(function(){return this.stack["$[]"](0)["$=="](1)}),0),$def(self,"$empty?",(function(){return this.stack["$=="](0)}),0),$def(self,"$to_s",(function(){return"["+this.stack.$to_s(2)+" <= "+this.name+"]"}),0),$alias(self,"inspect","to_s")}(Opal.$r($nesting)("Lexer"))}($nesting[0],$nesting)},Opal.modules["parser/lexer/dedenter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$eqeq=Opal.eqeq,$send=Opal.send,$truthy=Opal.truthy,$to_ary=Opal.to_ary,$slice=Opal.slice,$rb_le=Opal.rb_le,$eqeqeq=Opal.eqeqeq,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$rb_divide=Opal.rb_divide;return Opal.add_stubs("encoding,split,force_encoding,==,length,map!,each,each_char,<=,===,+,-,>,*,/,slice!,replace,join,end_with?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Dedenter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.at_line_begin=nil,$const_set($nesting[0],"TAB_WIDTH",8),$def(self,"$initialize",(function(dedent_level){return this.dedent_level=dedent_level,this.at_line_begin=!0,this.indent_level=0}),1),$def(self,"$dedent",(function(string){var $a,original_encoding,self=this,lines=nil,lines_to_dedent=nil;return original_encoding=string.$encoding(),lines=string.$force_encoding($$$($$("Encoding"),"BINARY")).$split("\\\n"),$eqeq(lines.$length(),1)?lines=[string.$force_encoding(original_encoding)]:$send(lines,"map!",[],(function(s){return null==s&&(s=nil),s.$force_encoding(original_encoding)}),1),$truthy(self.at_line_begin)?lines_to_dedent=lines:(null==($a=$to_ary(lines))[0]?nil:$a[0],lines_to_dedent=$slice.call($a,1)),function(){var $brk=Opal.new_brk();try{$send(lines_to_dedent,"each",[],(function $$2(line){var self=null==$$2.$$s?this:$$2.$$s,left_to_remove=nil,remove=nil;return null==self.dedent_level&&(self.dedent_level=nil),null==line&&(line=nil),left_to_remove=self.dedent_level,remove=0,function(){var $brk=Opal.new_brk();try{$send(line,"each_char",[],(function $$3(char$){var $ret_or_1,self=null==$$3.$$s?this:$$3.$$s;return null==self.dedent_level&&(self.dedent_level=nil),null==char$&&(char$=nil),$truthy($rb_le(left_to_remove,0))&&Opal.brk(nil,$brk),$eqeqeq(" ",$ret_or_1=char$)?(remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,1)):$eqeqeq("\t",$ret_or_1)?($truthy($rb_gt($rb_times($$("TAB_WIDTH"),$rb_plus($rb_divide(remove,$$("TAB_WIDTH")),1)),self.dedent_level))&&Opal.brk(nil,$brk),remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,$$("TAB_WIDTH"))):void Opal.brk(nil,$brk)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),line["$slice!"](0,remove)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),string.$replace(lines.$join()),self.at_line_begin=string["$end_with?"]("\n")}),1),$def(self,"$interrupt",(function(){return this.at_line_begin=!1}),0)}(Opal.$r($nesting)("Lexer"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/builders/default"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$hash2=Opal.hash2,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$not=Opal.not,$send=Opal.send,$neqeq=Opal.neqeq,$to_ary=Opal.to_ary,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$range=Opal.range,$slice=Opal.slice,$rb_gt=Opal.rb_gt,$rb_le=Opal.rb_le,$rb_lt=Opal.rb_lt;return Opal.add_stubs("attr_accessor,n0,token_map,numeric,n,value,new,loc,private,===,+@,-@,updated,join,expression,string_value,delimited_string_map,unquoted_map,collapse_string_parts?,nil?,first,children,string_map,prefix_string_map,to_sym,collection_map,empty?,==,version,diagnostic,!,type,dedent,map,interrupt,compact,uniq,sort,each_char,to_proc,static_regexp,message,<<,regexp_map,unary_op_map,binary_op_map,!=,%,size,last,each_slice,pair_keyword_map,pair_quoted_map,symbol_compose,adjust,=~,pair_keyword,accessible,upto,-,length,+,[],>=,range_map,variable_map,name,source_buffer,dup,line,emit_encoding,class,any?,end_with?,to_s,try_declare_numparam,declared?,static_env,var_send_map,top,current_arg_stack,parser,constant_map,in_def,context,check_assignment_to_numparam,check_reserved_for_numparam,declare,with_expression,with_operator,join_exprs,module_definition_map,definition_map,endless_definition_map,validate_definee,keyword_map,check_duplicate_args,validate_no_forward_arg_after_restarg,emit_forward_arg,forward_arg,arg_prefix_map,kwarg_map,emit_procarg0,emit_arg_inside_procarg0,location,resize,end,call_type_for_dot,emit_kwargs,rewrite_hash_args_to_kwargs,send_map,emit_lambda,expr_map,keyword,include?,block_map,array,emit_index,index_map,send_index_map,send_binary_op_map,static_regexp_node,each,names,send_unary_op_map,check_condition,condition_map,keyword_mod_map,ternary_map,for_map,>,count,rescue_body_map,eh_keyword_map,push,none?,one?,begin,guard_map,check_lvar_name,check_duplicate_pattern_variable,match_hash_var_from_str,match_var,check_duplicate_pattern_key,static_string,pair_quoted,match_hash_var,<=,check_duplicate_arg,is_a?,[]=,arg_name_collides?,<,in_dynamic_block?,has_numparams?,max_numparam_stack,start_with?,pattern_variables,pattern_hash_keys,with,begin_pos,end_pos,encode,valid_encoding?,process,diagnostics,send,kwargs?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Default"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.parser=$proto.emit_file_line_as_literals=nil,function(self,$parent_nesting){self.$attr_accessor("emit_lambda")}(Opal.get_singleton_class(self)),self.emit_lambda=!1,function(self,$parent_nesting){self.$attr_accessor("emit_procarg0")}(Opal.get_singleton_class(self)),self.emit_procarg0=!1,function(self,$parent_nesting){self.$attr_accessor("emit_encoding")}(Opal.get_singleton_class(self)),self.emit_encoding=!1,function(self,$parent_nesting){self.$attr_accessor("emit_index")}(Opal.get_singleton_class(self)),self.emit_index=!1,function(self,$parent_nesting){self.$attr_accessor("emit_arg_inside_procarg0")}(Opal.get_singleton_class(self)),self.emit_arg_inside_procarg0=!1,function(self,$parent_nesting){self.$attr_accessor("emit_forward_arg")}(Opal.get_singleton_class(self)),self.emit_forward_arg=!1,function(self,$parent_nesting){self.$attr_accessor("emit_kwargs")}(Opal.get_singleton_class(self)),self.emit_kwargs=!1,function(self,$parent_nesting){self.$attr_accessor("emit_match_pattern")}(Opal.get_singleton_class(self)),self.emit_match_pattern=!1,function(self,$parent_nesting){$def(self,"$modernize",(function(){return this.emit_lambda=!0,this.emit_procarg0=!0,this.emit_encoding=!0,this.emit_index=!0,this.emit_arg_inside_procarg0=!0,this.emit_forward_arg=!0,this.emit_kwargs=!0,this.emit_match_pattern=!0}),0)}(Opal.get_singleton_class(self)),self.$attr_accessor("parser"),self.$attr_accessor("emit_file_line_as_literals"),$def(self,"$initialize",(function(){return this.emit_file_line_as_literals=!0}),0),$def(self,"$nil",(function(nil_t){return this.$n0("nil",this.$token_map(nil_t))}),1),$def(self,"$true",(function(true_t){return this.$n0("true",this.$token_map(true_t))}),1),$def(self,"$false",(function(false_t){return this.$n0("false",this.$token_map(false_t))}),1),$def(self,"$integer",(function(integer_t){return this.$numeric("int",integer_t)}),1),$def(self,"$float",(function(float_t){return this.$numeric("float",float_t)}),1),$def(self,"$rational",(function(rational_t){return this.$numeric("rational",rational_t)}),1),$def(self,"$complex",(function(complex_t){return this.$numeric("complex",complex_t)}),1),$def(self,"$numeric",(function(kind,token){return this.$n(kind,[this.$value(token)],$$$($$$($$("Source"),"Map"),"Operator").$new(nil,this.$loc(token)))}),2),self.$private("numeric"),$def(self,"$unary_num",(function(unary_t,numeric){var $a,$ret_or_1,value=nil,operator_loc=nil;return value=null==($a=[].concat($to_a(numeric)))[0]?nil:$a[0],operator_loc=this.$loc(unary_t),$eqeqeq("+",$ret_or_1=this.$value(unary_t))?value=value["$+@"]():$eqeqeq("-",$ret_or_1)&&(value=value["$-@"]()),numeric.$updated(nil,[value],$hash2(["location"],{location:$$$($$$($$("Source"),"Map"),"Operator").$new(operator_loc,operator_loc.$join(numeric.$loc().$expression()))}))}),2),$def(self,"$__LINE__",(function(__LINE__t){return this.$n0("__LINE__",this.$token_map(__LINE__t))}),1),$def(self,"$string",(function(string_t){return this.$n("str",[this.$string_value(string_t)],this.$delimited_string_map(string_t))}),1),$def(self,"$string_internal",(function(string_t){return this.$n("str",[this.$string_value(string_t)],this.$unquoted_map(string_t))}),1),$def(self,"$string_compose",(function(begin_t,parts,end_t){return $truthy(this["$collapse_string_parts?"](parts))?$truthy(begin_t["$nil?"]())&&$truthy(end_t["$nil?"]())?parts.$first():this.$n("str",parts.$first().$children(),this.$string_map(begin_t,parts,end_t)):this.$n("dstr",[].concat($to_a(parts)),this.$string_map(begin_t,parts,end_t))}),3),$def(self,"$character",(function(char_t){return this.$n("str",[this.$string_value(char_t)],this.$prefix_string_map(char_t))}),1),$def(self,"$__FILE__",(function(__FILE__t){return this.$n0("__FILE__",this.$token_map(__FILE__t))}),1),$def(self,"$symbol",(function(symbol_t){return this.$n("sym",[this.$string_value(symbol_t).$to_sym()],this.$prefix_string_map(symbol_t))}),1),$def(self,"$symbol_internal",(function(symbol_t){return this.$n("sym",[this.$string_value(symbol_t).$to_sym()],this.$unquoted_map(symbol_t))}),1),$def(self,"$symbol_compose",(function(begin_t,parts,end_t){var str=nil;return $truthy(this["$collapse_string_parts?"](parts))?(str=parts.$first(),this.$n("sym",[str.$children().$first().$to_sym()],this.$collection_map(begin_t,str.$loc().$expression(),end_t))):$eqeq(this.parser.$version(),18)&&$truthy(parts["$empty?"]())?this.$diagnostic("error","empty_symbol",nil,this.$loc(begin_t).$join(this.$loc(end_t))):this.$n("dsym",[].concat($to_a(parts)),this.$collection_map(begin_t,parts,end_t))}),3),$def(self,"$xstring_compose",(function(begin_t,parts,end_t){return this.$n("xstr",[].concat($to_a(parts)),this.$string_map(begin_t,parts,end_t))}),3),$def(self,"$dedent_string",(function(node,dedent_level){var dedenter=nil,$ret_or_1=nil,str=nil,children=nil;return $not(dedent_level["$nil?"]())&&(dedenter=$$$($$("Lexer"),"Dedenter").$new(dedent_level),$eqeqeq("str",$ret_or_1=node.$type())?(str=node.$children().$first(),dedenter.$dedent(str)):($eqeqeq("dstr",$ret_or_1)||$eqeqeq("xstr",$ret_or_1))&&(children=$send(node.$children(),"map",[],(function(str_node){if(null==str_node&&(str_node=nil),$eqeq(str_node.$type(),"str")){if(str=str_node.$children().$first(),dedenter.$dedent(str),$truthy(str["$empty?"]()))return nil}else dedenter.$interrupt();return str_node}),1),node=node.$updated(nil,children.$compact()))),node}),2),$def(self,"$regexp_options",(function(regopt_t){var options;return options=$send(this.$value(regopt_t).$each_char().$sort().$uniq(),"map",[],"to_sym".$to_proc()),this.$n("regopt",options,this.$token_map(regopt_t))}),1),$def(self,"$regexp_compose",(function(begin_t,parts,end_t,options){var e=nil;try{this.$static_regexp(parts,options)}catch($err){if(!Opal.rescue($err,[$$("RegexpError")]))throw $err;e=$err;try{this.$diagnostic("error","invalid_regexp",$hash2(["message"],{message:e.$message()}),this.$loc(begin_t).$join(this.$loc(end_t)))}finally{Opal.pop_exception()}}return this.$n("regexp",parts["$<<"](options),this.$regexp_map(begin_t,end_t,options))}),4),$def(self,"$array",(function(begin_t,elements,end_t){return this.$n("array",elements,this.$collection_map(begin_t,elements,end_t))}),3),$def(self,"$splat",(function(star_t,arg){return null==arg&&(arg=nil),$truthy(arg["$nil?"]())?this.$n0("splat",this.$unary_op_map(star_t)):this.$n("splat",[arg],this.$unary_op_map(star_t,arg))}),-2),$def(self,"$word",(function(parts){return $truthy(this["$collapse_string_parts?"](parts))?parts.$first():this.$n("dstr",[].concat($to_a(parts)),this.$collection_map(nil,parts,nil))}),1),$def(self,"$words_compose",(function(begin_t,parts,end_t){return this.$n("array",[].concat($to_a(parts)),this.$collection_map(begin_t,parts,end_t))}),3),$def(self,"$symbols_compose",(function(begin_t,parts,end_t){return parts=$send(parts,"map",[],(function(part){var $a,$ret_or_1,value=nil;return null==part&&(part=nil),$eqeqeq("str",$ret_or_1=part.$type())?(value=null==($a=[].concat($to_a(part)))[0]?nil:$a[0],part.$updated("sym",[value.$to_sym()])):$eqeqeq("dstr",$ret_or_1)?part.$updated("dsym"):part}),1),this.$n("array",[].concat($to_a(parts)),this.$collection_map(begin_t,parts,end_t))}),3),$def(self,"$pair",(function(key,assoc_t,value){return this.$n("pair",[key,value],this.$binary_op_map(key,assoc_t,value))}),3),$def(self,"$pair_list_18",(function(list){return $neqeq(list.$size()["$%"](2),0)?this.$diagnostic("error","odd_hash",nil,list.$last().$loc().$expression()):$send(list.$each_slice(2),"map",[],(function $$6(key,value){var self=null==$$6.$$s?this:$$6.$$s;return null==key&&(key=nil),null==value&&(value=nil),self.$n("pair",[key,value],self.$binary_op_map(key,nil,value))}),{$$arity:2,$$s:this})}),1),$def(self,"$pair_keyword",(function(key_t,value){var $a,$b,key_map,pair_map,key;return $b=this.$pair_keyword_map(key_t,value),key_map=null==($a=$to_ary($b))[0]?nil:$a[0],pair_map=null==$a[1]?nil:$a[1],key=this.$n("sym",[this.$value(key_t).$to_sym()],key_map),this.$n("pair",[key,value],pair_map)}),2),$def(self,"$pair_quoted",(function(begin_t,parts,end_t,value){var $a,$b,pair_map,key;return $b=this.$pair_quoted_map(begin_t,end_t,value),end_t=null==($a=$to_ary($b))[0]?nil:$a[0],pair_map=null==$a[1]?nil:$a[1],key=this.$symbol_compose(begin_t,parts,end_t),this.$n("pair",[key,value],pair_map)}),4),$def(self,"$pair_label",(function(key_t){var value_l,value,label=nil;return value_l=this.$loc(key_t).$adjust($hash2(["end_pos"],{end_pos:-1})),label=this.$value(key_t),value=$truthy(label["$=~"](/^[[:lower:]]/))?this.$n("ident",[label.$to_sym()],$$$($$$($$("Source"),"Map"),"Variable").$new(value_l)):this.$n("const",[nil,label.$to_sym()],$$$($$$($$("Source"),"Map"),"Constant").$new(nil,value_l,value_l)),this.$pair_keyword(key_t,this.$accessible(value))}),1),$def(self,"$kwsplat",(function(dstar_t,arg){return this.$n("kwsplat",[arg],this.$unary_op_map(dstar_t,arg))}),2),$def(self,"$associate",(function(begin_t,pairs,end_t){return $send(0,"upto",[$rb_minus(pairs.$length(),1)],(function $$7(i){var self=null==$$7.$$s?this:$$7.$$s;return null==i&&(i=nil),$send($rb_plus(i,1),"upto",[$rb_minus(pairs.$length(),1)],(function $$8(j){var $a,$ret_or_1,self=null==$$8.$$s?this:$$8.$$s,key1=nil,key2=nil,do_warn=nil;return null==self.parser&&(self.parser=nil),null==j&&(j=nil),key1=null==($a=[].concat($to_a(pairs["$[]"](i))))[0]?nil:$a[0],key2=null==($a=[].concat($to_a(pairs["$[]"](j))))[0]?nil:$a[0],do_warn=!1,$eqeqeq("sym",$ret_or_1=key1.$type())||$eqeqeq("str",$ret_or_1)||$eqeqeq("int",$ret_or_1)||$eqeqeq("float",$ret_or_1)?$eqeq(key1,key2)&&(do_warn=!0):($eqeqeq("rational",$ret_or_1)||$eqeqeq("complex",$ret_or_1)||$eqeqeq("regexp",$ret_or_1))&&$truthy($rb_ge(self.parser.$version(),31))&&$eqeq(key1,key2)&&(do_warn=!0),$truthy(do_warn)?self.$diagnostic("warning","duplicate_hash_key",nil,key2.$loc().$expression()):nil}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:this}),this.$n("hash",[].concat($to_a(pairs)),this.$collection_map(begin_t,pairs,end_t))}),3),$def(self,"$range_inclusive",(function(lhs,dot2_t,rhs){return this.$n("irange",[lhs,rhs],this.$range_map(lhs,dot2_t,rhs))}),3),$def(self,"$range_exclusive",(function(lhs,dot3_t,rhs){return this.$n("erange",[lhs,rhs],this.$range_map(lhs,dot3_t,rhs))}),3),$def(self,"$self",(function(token){return this.$n0("self",this.$token_map(token))}),1),$def(self,"$ident",(function(token){return this.$n("ident",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$ivar",(function(token){return this.$n("ivar",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$gvar",(function(token){return this.$n("gvar",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$cvar",(function(token){return this.$n("cvar",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$back_ref",(function(token){return this.$n("back_ref",[this.$value(token).$to_sym()],this.$token_map(token))}),1),$def(self,"$nth_ref",(function(token){return this.$n("nth_ref",[this.$value(token)],this.$token_map(token))}),1),$def(self,"$accessible",(function(node){var $a,$ret_or_1,name=nil;return $eqeqeq("__FILE__",$ret_or_1=node.$type())?$truthy(this.emit_file_line_as_literals)?this.$n("str",[node.$loc().$expression().$source_buffer().$name()],node.$loc().$dup()):node:$eqeqeq("__LINE__",$ret_or_1)?$truthy(this.emit_file_line_as_literals)?this.$n("int",[node.$loc().$expression().$line()],node.$loc().$dup()):node:$eqeqeq("__ENCODING__",$ret_or_1)?$not(this.$class().$emit_encoding())?this.$n("const",[this.$n("const",[nil,"Encoding"],nil),"UTF_8"],node.$loc().$dup()):node:$eqeqeq("ident",$ret_or_1)?($a=[].concat($to_a(node)),name=null==$a[0]?nil:$a[0],$truthy($send(["?","!"],"any?",[],(function(c){return null==c&&(c=nil),name.$to_s()["$end_with?"](c)}),1))&&this.$diagnostic("error","invalid_id_to_get",$hash2(["identifier"],{identifier:name.$to_s()}),node.$loc().$expression()),$truthy($rb_ge(this.parser.$version(),27))&&$truthy(this.parser.$try_declare_numparam(node))?node.$updated("lvar"):$truthy(this.parser.$static_env()["$declared?"](name))?($eqeq(name.$to_s(),this.$parser().$current_arg_stack().$top())&&this.$diagnostic("error","circular_argument_reference",$hash2(["var_name"],{var_name:name.$to_s()}),node.$loc().$expression()),node.$updated("lvar")):this.$n("send",[nil,name],this.$var_send_map(node))):node}),1),$def(self,"$const",(function(name_t){return this.$n("const",[nil,this.$value(name_t).$to_sym()],this.$constant_map(nil,nil,name_t))}),1),$def(self,"$const_global",(function(t_colon3,name_t){var cbase;return cbase=this.$n0("cbase",this.$token_map(t_colon3)),this.$n("const",[cbase,this.$value(name_t).$to_sym()],this.$constant_map(cbase,t_colon3,name_t))}),2),$def(self,"$const_fetch",(function(scope,t_colon2,name_t){return this.$n("const",[scope,this.$value(name_t).$to_sym()],this.$constant_map(scope,t_colon2,name_t))}),3),$def(self,"$__ENCODING__",(function(__ENCODING__t){return this.$n0("__ENCODING__",this.$token_map(__ENCODING__t))}),1),$def(self,"$assignable",(function(node){var $a,$ret_or_1,name=nil,var_name=nil,name_loc=nil;return $eqeqeq("cvar",$ret_or_1=node.$type())?node.$updated("cvasgn"):$eqeqeq("ivar",$ret_or_1)?node.$updated("ivasgn"):$eqeqeq("gvar",$ret_or_1)?node.$updated("gvasgn"):$eqeqeq("const",$ret_or_1)?($truthy(this.parser.$context().$in_def())&&this.$diagnostic("error","dynamic_const",nil,node.$loc().$expression()),node.$updated("casgn")):$eqeqeq("ident",$ret_or_1)?(name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],var_name=node.$children()["$[]"](0).$to_s(),name_loc=node.$loc().$expression(),this.$check_assignment_to_numparam(var_name,name_loc),this.$check_reserved_for_numparam(var_name,name_loc),this.parser.$static_env().$declare(name),node.$updated("lvasgn")):$eqeqeq("match_var",$ret_or_1)?(name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],var_name=node.$children()["$[]"](0).$to_s(),name_loc=node.$loc().$expression(),this.$check_assignment_to_numparam(var_name,name_loc),this.$check_reserved_for_numparam(var_name,name_loc),node):$eqeqeq("nil",$ret_or_1)||$eqeqeq("self",$ret_or_1)||$eqeqeq("true",$ret_or_1)||$eqeqeq("false",$ret_or_1)||$eqeqeq("__FILE__",$ret_or_1)||$eqeqeq("__LINE__",$ret_or_1)||$eqeqeq("__ENCODING__",$ret_or_1)?this.$diagnostic("error","invalid_assignment",nil,node.$loc().$expression()):$eqeqeq("back_ref",$ret_or_1)||$eqeqeq("nth_ref",$ret_or_1)?this.$diagnostic("error","backref_assignment",nil,node.$loc().$expression()):nil}),1),$def(self,"$const_op_assignable",(function(node){return node.$updated("casgn")}),1),$def(self,"$assign",(function(lhs,eql_t,rhs){return lhs["$<<"](rhs).$updated(nil,nil,$hash2(["location"],{location:lhs.$loc().$with_operator(this.$loc(eql_t)).$with_expression(this.$join_exprs(lhs,rhs))}))}),3),$def(self,"$op_assign",(function(lhs,op_t,rhs){var $ret_or_1,operator=nil,source_map=nil,$ret_or_2=nil;return $eqeqeq("gvasgn",$ret_or_1=lhs.$type())||$eqeqeq("ivasgn",$ret_or_1)||$eqeqeq("lvasgn",$ret_or_1)||$eqeqeq("cvasgn",$ret_or_1)||$eqeqeq("casgn",$ret_or_1)||$eqeqeq("send",$ret_or_1)||$eqeqeq("csend",$ret_or_1)||$eqeqeq("index",$ret_or_1)?(operator=this.$value(op_t)["$[]"]($range(0,-1,!1)).$to_sym(),source_map=lhs.$loc().$with_operator(this.$loc(op_t)).$with_expression(this.$join_exprs(lhs,rhs)),$eqeq(lhs.$type(),"index")&&(lhs=lhs.$updated("indexasgn")),$eqeqeq("&&",$ret_or_2=operator)?this.$n("and_asgn",[lhs,rhs],source_map):$eqeqeq("||",$ret_or_2)?this.$n("or_asgn",[lhs,rhs],source_map):this.$n("op_asgn",[lhs,operator,rhs],source_map)):$eqeqeq("back_ref",$ret_or_1)||$eqeqeq("nth_ref",$ret_or_1)?this.$diagnostic("error","backref_assignment",nil,lhs.$loc().$expression()):nil}),3),$def(self,"$multi_lhs",(function(begin_t,items,end_t){return this.$n("mlhs",[].concat($to_a(items)),this.$collection_map(begin_t,items,end_t))}),3),$def(self,"$multi_assign",(function(lhs,eql_t,rhs){return this.$n("masgn",[lhs,rhs],this.$binary_op_map(lhs,eql_t,rhs))}),3),$def(self,"$def_class",(function(class_t,name,lt_t,superclass,body,end_t){return this.$n("class",[name,superclass,body],this.$module_definition_map(class_t,name,lt_t,end_t))}),6),$def(self,"$def_sclass",(function(class_t,lshft_t,expr,body,end_t){return this.$n("sclass",[expr,body],this.$module_definition_map(class_t,nil,lshft_t,end_t))}),5),$def(self,"$def_module",(function(module_t,name,body,end_t){return this.$n("module",[name,body],this.$module_definition_map(module_t,name,nil,end_t))}),4),$def(self,"$def_method",(function(def_t,name_t,args,body,end_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("def",[this.$value(name_t).$to_sym(),args,body],this.$definition_map(def_t,nil,name_t,end_t))}),5),$def(self,"$def_endless_method",(function(def_t,name_t,args,assignment_t,body){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("def",[this.$value(name_t).$to_sym(),args,body],this.$endless_definition_map(def_t,nil,name_t,assignment_t,body))}),5),$def(self,"$def_singleton",(function(def_t,definee,dot_t,name_t,args,body,end_t){return this.$validate_definee(definee),this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("defs",[definee,this.$value(name_t).$to_sym(),args,body],this.$definition_map(def_t,dot_t,name_t,end_t))}),7),$def(self,"$def_endless_singleton",(function(def_t,definee,dot_t,name_t,args,assignment_t,body){return this.$validate_definee(definee),this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("defs",[definee,this.$value(name_t).$to_sym(),args,body],this.$endless_definition_map(def_t,dot_t,name_t,assignment_t,body))}),7),$def(self,"$undef_method",(function(undef_t,names){return this.$n("undef",[].concat($to_a(names)),this.$keyword_map(undef_t,nil,names,nil))}),2),$def(self,"$alias",(function(alias_t,to,from){return this.$n("alias",[to,from],this.$keyword_map(alias_t,nil,[to,from],nil))}),3),$def(self,"$args",(function(begin_t,args,end_t,check_args){var map;return null==check_args&&(check_args=!0),$truthy(check_args)&&(args=this.$check_duplicate_args(args)),this.$validate_no_forward_arg_after_restarg(args),map=this.$collection_map(begin_t,args,end_t),$not(this.$class().$emit_forward_arg())&&$eqeq(args.$length(),1)&&$eqeq(args["$[]"](0).$type(),"forward_arg")?this.$n("forward_args",[],map):this.$n("args",args,map)}),-4),$def(self,"$numargs",(function(max_numparam){return this.$n("numargs",[max_numparam],nil)}),1),$def(self,"$forward_only_args",(function(begin_t,dots_t,end_t){var arg=nil;return $truthy(this.$class().$emit_forward_arg())?(arg=this.$forward_arg(dots_t),this.$n("args",[arg],this.$collection_map(begin_t,[arg],end_t))):this.$n("forward_args",[],this.$collection_map(begin_t,this.$token_map(dots_t),end_t))}),3),$def(self,"$forward_arg",(function(dots_t){return this.$n("forward_arg",[],this.$token_map(dots_t))}),1),$def(self,"$arg",(function(name_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("arg",[this.$value(name_t).$to_sym()],this.$variable_map(name_t))}),1),$def(self,"$optarg",(function(name_t,eql_t,value){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("optarg",[this.$value(name_t).$to_sym(),value],this.$variable_map(name_t).$with_operator(this.$loc(eql_t)).$with_expression(this.$loc(name_t).$join(value.$loc().$expression())))}),3),$def(self,"$restarg",(function(star_t,name_t){return null==name_t&&(name_t=nil),$truthy(name_t)?(this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("restarg",[this.$value(name_t).$to_sym()],this.$arg_prefix_map(star_t,name_t))):this.$n0("restarg",this.$arg_prefix_map(star_t))}),-2),$def(self,"$kwarg",(function(name_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("kwarg",[this.$value(name_t).$to_sym()],this.$kwarg_map(name_t))}),1),$def(self,"$kwoptarg",(function(name_t,value){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("kwoptarg",[this.$value(name_t).$to_sym(),value],this.$kwarg_map(name_t,value))}),2),$def(self,"$kwrestarg",(function(dstar_t,name_t){return null==name_t&&(name_t=nil),$truthy(name_t)?(this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("kwrestarg",[this.$value(name_t).$to_sym()],this.$arg_prefix_map(dstar_t,name_t))):this.$n0("kwrestarg",this.$arg_prefix_map(dstar_t))}),-2),$def(self,"$kwnilarg",(function(dstar_t,nil_t){return this.$n0("kwnilarg",this.$arg_prefix_map(dstar_t,nil_t))}),2),$def(self,"$shadowarg",(function(name_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("shadowarg",[this.$value(name_t).$to_sym()],this.$variable_map(name_t))}),1),$def(self,"$blockarg",(function(amper_t,name_t){var arg_name;return $not(name_t["$nil?"]())&&this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),arg_name=$truthy(name_t)?this.$value(name_t).$to_sym():nil,this.$n("blockarg",[arg_name],this.$arg_prefix_map(amper_t,name_t))}),2),$def(self,"$procarg0",(function(arg){return $truthy(this.$class().$emit_procarg0())?$eqeq(arg.$type(),"arg")&&$truthy(this.$class().$emit_arg_inside_procarg0())?this.$n("procarg0",[arg],$$$($$$($$("Source"),"Map"),"Collection").$new(nil,nil,arg.$location().$expression())):arg.$updated("procarg0"):arg}),1),$def(self,"$arg_expr",(function(expr){return $eqeq(expr.$type(),"lvasgn")?expr.$updated("arg"):this.$n("arg_expr",[expr],expr.$loc().$dup())}),1),$def(self,"$restarg_expr",(function(star_t,expr){return null==expr&&(expr=nil),$truthy(expr["$nil?"]())?this.$n0("restarg",this.$token_map(star_t)):$eqeq(expr.$type(),"lvasgn")?expr.$updated("restarg"):this.$n("restarg_expr",[expr],expr.$loc().$dup())}),-2),$def(self,"$blockarg_expr",(function(amper_t,expr){return $eqeq(expr.$type(),"lvasgn")?expr.$updated("blockarg"):this.$n("blockarg_expr",[expr],expr.$loc().$dup())}),2),$def(self,"$objc_kwarg",(function(kwname_t,assoc_t,name_t){var kwname_l=nil,operator_l=nil;return kwname_l=this.$loc(kwname_t),operator_l=$truthy(assoc_t["$nil?"]())?(kwname_l=kwname_l.$resize($rb_minus(kwname_l.$size(),1))).$end().$resize(1):this.$loc(assoc_t),this.$n("objc_kwarg",[this.$value(kwname_t).$to_sym(),this.$value(name_t).$to_sym()],$$$($$$($$("Source"),"Map"),"ObjcKwarg").$new(kwname_l,operator_l,this.$loc(name_t),kwname_l.$join(this.$loc(name_t))))}),3),$def(self,"$objc_restarg",(function(star_t,name){return null==name&&(name=nil),$truthy(name["$nil?"]())?this.$n0("restarg",this.$arg_prefix_map(star_t)):$eqeq(name.$type(),"arg")?name.$updated("restarg",nil,$hash2(["location"],{location:name.$loc().$with_operator(this.$loc(star_t))})):this.$n("objc_restarg",[name],this.$unary_op_map(star_t,name))}),-2),$def(self,"$call_type_for_dot",(function(dot_t){return $not(dot_t["$nil?"]())&&$eqeq(this.$value(dot_t),"anddot")?"csend":"send"}),1),$def(self,"$forwarded_args",(function(dots_t){return this.$n("forwarded_args",[],this.$token_map(dots_t))}),1),$def(self,"$call_method",(function(receiver,dot_t,selector_t,lparen_t,args,rparen_t){var type;return null==lparen_t&&(lparen_t=nil),null==args&&(args=[]),null==rparen_t&&(rparen_t=nil),type=this.$call_type_for_dot(dot_t),$truthy(this.$class().$emit_kwargs())&&this.$rewrite_hash_args_to_kwargs(args),$truthy(selector_t["$nil?"]())?this.$n(type,[receiver,"call"].concat($to_a(args)),this.$send_map(receiver,dot_t,nil,lparen_t,args,rparen_t)):this.$n(type,[receiver,this.$value(selector_t).$to_sym()].concat($to_a(args)),this.$send_map(receiver,dot_t,selector_t,lparen_t,args,rparen_t))}),-4),$def(self,"$call_lambda",(function(lambda_t){return $truthy(this.$class().$emit_lambda())?this.$n0("lambda",this.$expr_map(this.$loc(lambda_t))):this.$n("send",[nil,"lambda"],this.$send_map(nil,nil,lambda_t))}),1),$def(self,"$block",(function(method_call,begin_t,args,body,end_t){var $a,call_args=nil,last_arg=nil,block_type=nil,actual_send=nil,block=nil;return null==($a=[].concat($to_a(method_call)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],call_args=$slice.call($a,2),$eqeq(method_call.$type(),"yield")&&this.$diagnostic("error","block_given_to_yield",nil,method_call.$loc().$keyword(),[this.$loc(begin_t)]),last_arg=call_args.$last(),$truthy(last_arg)&&($eqeq(last_arg.$type(),"block_pass")||$eqeq(last_arg.$type(),"forwarded_args"))&&this.$diagnostic("error","block_and_blockarg",nil,last_arg.$loc().$expression(),[this.$loc(begin_t)]),$eqeq(args.$type(),"numargs")?(block_type="numblock",args=args.$children()["$[]"](0)):block_type="block",$truthy(["send","csend","index","super","zsuper","lambda"]["$include?"](method_call.$type()))?this.$n(block_type,[method_call,args,body],this.$block_map(method_call.$loc().$expression(),begin_t,end_t)):(actual_send=null==($a=[].concat($to_a(method_call)))[0]?nil:$a[0],block=this.$n(block_type,[actual_send,args,body],this.$block_map(actual_send.$loc().$expression(),begin_t,end_t)),this.$n(method_call.$type(),[block],method_call.$loc().$with_expression(this.$join_exprs(method_call,block))))}),5),$def(self,"$block_pass",(function(amper_t,arg){return this.$n("block_pass",[arg],this.$unary_op_map(amper_t,arg))}),2),$def(self,"$objc_varargs",(function(pair,rest_of_varargs){var $a,value,first_vararg=nil,vararg_array=nil;return value=null==($a=[].concat($to_a(pair)))[0]?nil:$a[0],first_vararg=null==$a[1]?nil:$a[1],vararg_array=this.$array(nil,[first_vararg].concat($to_a(rest_of_varargs)),nil).$updated("objc_varargs"),pair.$updated(nil,[value,vararg_array],$hash2(["location"],{location:pair.$loc().$with_expression(pair.$loc().$expression().$join(vararg_array.$loc().$expression()))}))}),2),$def(self,"$attr_asgn",(function(receiver,dot_t,selector_t){var method_name,type;return method_name=$rb_plus(this.$value(selector_t),"=").$to_sym(),type=this.$call_type_for_dot(dot_t),this.$n(type,[receiver,method_name],this.$send_map(receiver,dot_t,selector_t))}),3),$def(self,"$index",(function(receiver,lbrack_t,indexes,rbrack_t){return $truthy(this.$class().$emit_kwargs())&&this.$rewrite_hash_args_to_kwargs(indexes),$truthy(this.$class().$emit_index())?this.$n("index",[receiver].concat($to_a(indexes)),this.$index_map(receiver,lbrack_t,rbrack_t)):this.$n("send",[receiver,"[]"].concat($to_a(indexes)),this.$send_index_map(receiver,lbrack_t,rbrack_t))}),4),$def(self,"$index_asgn",(function(receiver,lbrack_t,indexes,rbrack_t){return $truthy(this.$class().$emit_index())?this.$n("indexasgn",[receiver].concat($to_a(indexes)),this.$index_map(receiver,lbrack_t,rbrack_t)):this.$n("send",[receiver,"[]="].concat($to_a(indexes)),this.$send_index_map(receiver,lbrack_t,rbrack_t))}),4),$def(self,"$binary_op",(function(receiver,operator_t,arg){var source_map=nil,operator=nil,method_call=nil;return source_map=this.$send_binary_op_map(receiver,operator_t,arg),$eqeq(this.parser.$version(),18)&&(operator=this.$value(operator_t),$eqeq(operator,"!=")?method_call=this.$n("send",[receiver,"==",arg],source_map):$eqeq(operator,"!~")&&(method_call=this.$n("send",[receiver,"=~",arg],source_map)),$truthy(["!=","!~"]["$include?"](operator)))?this.$n("not",[method_call],this.$expr_map(source_map.$expression())):this.$n("send",[receiver,this.$value(operator_t).$to_sym(),arg],source_map)}),3),$def(self,"$match_op",(function(receiver,match_t,arg){var source_map,regexp=nil;return source_map=this.$send_binary_op_map(receiver,match_t,arg),$truthy(regexp=this.$static_regexp_node(receiver))?($send(regexp.$names(),"each",[],(function $$11(name){var self=null==$$11.$$s?this:$$11.$$s;return null==self.parser&&(self.parser=nil),null==name&&(name=nil),self.parser.$static_env().$declare(name)}),{$$arity:1,$$s:this}),this.$n("match_with_lvasgn",[receiver,arg],source_map)):this.$n("send",[receiver,"=~",arg],source_map)}),3),$def(self,"$unary_op",(function(op_t,receiver){var $ret_or_1,method=nil;return method=$eqeqeq("+",$ret_or_1=this.$value(op_t))||$eqeqeq("-",$ret_or_1)?$rb_plus(this.$value(op_t),"@"):this.$value(op_t),this.$n("send",[receiver,method.$to_sym()],this.$send_unary_op_map(op_t,receiver))}),2),$def(self,"$not_op",(function(not_t,begin_t,receiver,end_t){var nil_node=nil;return null==begin_t&&(begin_t=nil),null==receiver&&(receiver=nil),null==end_t&&(end_t=nil),$eqeq(this.parser.$version(),18)?this.$n("not",[this.$check_condition(receiver)],this.$unary_op_map(not_t,receiver)):$truthy(receiver["$nil?"]())?(nil_node=this.$n0("begin",this.$collection_map(begin_t,nil,end_t)),this.$n("send",[nil_node,"!"],this.$send_unary_op_map(not_t,nil_node))):this.$n("send",[this.$check_condition(receiver),"!"],this.$send_map(nil,nil,not_t,begin_t,[receiver],end_t))}),-2),$def(self,"$logical_op",(function(type,lhs,op_t,rhs){return this.$n(type,[lhs,rhs],this.$binary_op_map(lhs,op_t,rhs))}),4),$def(self,"$condition",(function(cond_t,cond,then_t,if_true,else_t,if_false,end_t){return this.$n("if",[this.$check_condition(cond),if_true,if_false],this.$condition_map(cond_t,cond,then_t,if_true,else_t,if_false,end_t))}),7),$def(self,"$condition_mod",(function(if_true,if_false,cond_t,cond){var $ret_or_1;return this.$n("if",[this.$check_condition(cond),if_true,if_false],this.$keyword_mod_map($truthy($ret_or_1=if_true)?$ret_or_1:if_false,cond_t,cond))}),4),$def(self,"$ternary",(function(cond,question_t,if_true,colon_t,if_false){return this.$n("if",[this.$check_condition(cond),if_true,if_false],this.$ternary_map(cond,question_t,if_true,colon_t,if_false))}),5),$def(self,"$when",(function(when_t,patterns,then_t,body){var children;return children=patterns["$<<"](body),this.$n("when",children,this.$keyword_map(when_t,then_t,children,nil))}),4),$def(self,"$case",(function(case_t,expr,when_bodies,else_t,else_body,end_t){return this.$n("case",[expr].concat($to_a(when_bodies["$<<"](else_body))),this.$condition_map(case_t,expr,nil,nil,else_t,else_body,end_t))}),6),$def(self,"$loop",(function(type,keyword_t,cond,do_t,body,end_t){return this.$n(type,[this.$check_condition(cond),body],this.$keyword_map(keyword_t,do_t,nil,end_t))}),6),$def(self,"$loop_mod",(function(type,body,keyword_t,cond){return $eqeq(body.$type(),"kwbegin")&&(type+="_post"),this.$n(type,[this.$check_condition(cond),body],this.$keyword_mod_map(body,keyword_t,cond))}),4),$def(self,"$for",(function(for_t,iterator,in_t,iteratee,do_t,body,end_t){return this.$n("for",[iterator,iteratee,body],this.$for_map(for_t,in_t,do_t,end_t))}),7),$def(self,"$keyword_cmd",(function(type,keyword_t,lparen_t,args,rparen_t){var last_arg=nil;return null==lparen_t&&(lparen_t=nil),null==args&&(args=[]),null==rparen_t&&(rparen_t=nil),$eqeq(type,"yield")&&$truthy($rb_gt(args.$count(),0))&&(last_arg=args.$last(),$eqeq(last_arg.$type(),"block_pass")&&this.$diagnostic("error","block_given_to_yield",nil,this.$loc(keyword_t),[last_arg.$loc().$expression()])),$truthy(["yield","super"]["$include?"](type))&&$truthy(this.$class().$emit_kwargs())&&this.$rewrite_hash_args_to_kwargs(args),this.$n(type,args,this.$keyword_map(keyword_t,lparen_t,args,rparen_t))}),-3),$def(self,"$preexe",(function(preexe_t,lbrace_t,compstmt,rbrace_t){return this.$n("preexe",[compstmt],this.$keyword_map(preexe_t,lbrace_t,[],rbrace_t))}),4),$def(self,"$postexe",(function(postexe_t,lbrace_t,compstmt,rbrace_t){return this.$n("postexe",[compstmt],this.$keyword_map(postexe_t,lbrace_t,[],rbrace_t))}),4),$def(self,"$rescue_body",(function(rescue_t,exc_list,assoc_t,exc_var,then_t,compound_stmt){return this.$n("resbody",[exc_list,exc_var,compound_stmt],this.$rescue_body_map(rescue_t,exc_list,assoc_t,exc_var,then_t,compound_stmt))}),6),$def(self,"$begin_body",(function(compound_stmt,rescue_bodies,else_t,else_,ensure_t,ensure_){var statements=nil;return null==rescue_bodies&&(rescue_bodies=[]),null==else_t&&(else_t=nil),null==else_&&(else_=nil),null==ensure_t&&(ensure_t=nil),null==ensure_&&(ensure_=nil),$truthy(rescue_bodies["$any?"]())?compound_stmt=$truthy(else_t)?this.$n("rescue",[compound_stmt].concat($to_a($rb_plus(rescue_bodies,[else_]))),this.$eh_keyword_map(compound_stmt,nil,rescue_bodies,else_t,else_)):this.$n("rescue",[compound_stmt].concat($to_a($rb_plus(rescue_bodies,[nil]))),this.$eh_keyword_map(compound_stmt,nil,rescue_bodies,nil,nil)):$truthy(else_t)&&(statements=[],$not(compound_stmt["$nil?"]())&&($eqeq(compound_stmt.$type(),"begin")?statements=$rb_plus(statements,compound_stmt.$children()):statements.$push(compound_stmt)),statements.$push(this.$n("begin",[else_],this.$collection_map(else_t,[else_],nil))),compound_stmt=this.$n("begin",statements,this.$collection_map(nil,statements,nil))),$truthy(ensure_t)&&(compound_stmt=this.$n("ensure",[compound_stmt,ensure_],this.$eh_keyword_map(compound_stmt,ensure_t,[ensure_],nil,nil))),compound_stmt}),-2),$def(self,"$compstmt",(function(statements){return $truthy(statements["$none?"]())?nil:$truthy(statements["$one?"]())?statements.$first():this.$n("begin",statements,this.$collection_map(nil,statements,nil))}),1),$def(self,"$begin",(function(begin_t,body,end_t){return $truthy(body["$nil?"]())?this.$n0("begin",this.$collection_map(begin_t,nil,end_t)):$eqeq(body.$type(),"mlhs")||$eqeq(body.$type(),"begin")&&$truthy(body.$loc().$begin()["$nil?"]())&&$truthy(body.$loc().$end()["$nil?"]())?this.$n(body.$type(),body.$children(),this.$collection_map(begin_t,body.$children(),end_t)):this.$n("begin",[body],this.$collection_map(begin_t,[body],end_t))}),3),$def(self,"$begin_keyword",(function(begin_t,body,end_t){return $truthy(body["$nil?"]())?this.$n0("kwbegin",this.$collection_map(begin_t,nil,end_t)):$eqeq(body.$type(),"begin")&&$truthy(body.$loc().$begin()["$nil?"]())&&$truthy(body.$loc().$end()["$nil?"]())?this.$n("kwbegin",body.$children(),this.$collection_map(begin_t,body.$children(),end_t)):this.$n("kwbegin",[body],this.$collection_map(begin_t,[body],end_t))}),3),$def(self,"$case_match",(function(case_t,expr,in_bodies,else_t,else_body,end_t){return $truthy(else_t)&&$not(else_body)&&(else_body=this.$n("empty_else",nil,this.$token_map(else_t))),this.$n("case_match",[expr].concat($to_a(in_bodies["$<<"](else_body))),this.$condition_map(case_t,expr,nil,nil,else_t,else_body,end_t))}),6),$def(self,"$in_match",(function(lhs,in_t,rhs){return this.$n("in_match",[lhs,rhs],this.$binary_op_map(lhs,in_t,rhs))}),3),$def(self,"$match_pattern",(function(lhs,match_t,rhs){return this.$n("match_pattern",[lhs,rhs],this.$binary_op_map(lhs,match_t,rhs))}),3),$def(self,"$match_pattern_p",(function(lhs,match_t,rhs){return this.$n("match_pattern_p",[lhs,rhs],this.$binary_op_map(lhs,match_t,rhs))}),3),$def(self,"$in_pattern",(function(in_t,pattern,guard,then_t,body){var children=nil;return children=[pattern,guard,body],this.$n("in_pattern",children,this.$keyword_map(in_t,then_t,children.$compact(),nil))}),5),$def(self,"$if_guard",(function(if_t,if_body){return this.$n("if_guard",[if_body],this.$guard_map(if_t,if_body))}),2),$def(self,"$unless_guard",(function(unless_t,unless_body){return this.$n("unless_guard",[unless_body],this.$guard_map(unless_t,unless_body))}),2),$def(self,"$match_var",(function(name_t){var name,name_l;return name=this.$value(name_t).$to_sym(),name_l=this.$loc(name_t),this.$check_lvar_name(name,name_l),this.$check_duplicate_pattern_variable(name,name_l),this.parser.$static_env().$declare(name),this.$n("match_var",[name],this.$variable_map(name_t))}),1),$def(self,"$match_hash_var",(function(name_t){var name,name_l,expr_l=nil;return name=this.$value(name_t).$to_sym(),name_l=(expr_l=this.$loc(name_t)).$adjust($hash2(["end_pos"],{end_pos:-1})),this.$check_lvar_name(name,name_l),this.$check_duplicate_pattern_variable(name,name_l),this.parser.$static_env().$declare(name),this.$n("match_var",[name],$$$($$$($$("Source"),"Map"),"Variable").$new(name_l,expr_l))}),1),$def(self,"$match_hash_var_from_str",(function(begin_t,strings,end_t){var $a,$ret_or_1,string=nil,name=nil,name_l=nil,begin_l=nil,end_l=nil,expr_l=nil;return $truthy($rb_gt(strings.$length(),1))&&this.$diagnostic("error","pm_interp_in_var_name",nil,this.$loc(begin_t).$join(this.$loc(end_t))),string=strings["$[]"](0),$eqeqeq("str",$ret_or_1=string.$type())?(name=null==($a=[].concat($to_a(string)))[0]?nil:$a[0],name_l=string.$loc().$expression(),this.$check_lvar_name(name,name_l),this.$check_duplicate_pattern_variable(name,name_l),this.parser.$static_env().$declare(name),$truthy(begin_l=string.$loc().$begin())&&(name_l=name_l.$adjust($hash2(["begin_pos"],{begin_pos:begin_l.$length()}))),$truthy(end_l=string.$loc().$end())&&(name_l=name_l.$adjust($hash2(["end_pos"],{end_pos:end_l.$length()["$-@"]()}))),expr_l=this.$loc(begin_t).$join(string.$loc().$expression()).$join(this.$loc(end_t)),this.$n("match_var",[name.$to_sym()],$$$($$$($$("Source"),"Map"),"Variable").$new(name_l,expr_l))):$eqeqeq("begin",$ret_or_1)?this.$match_hash_var_from_str(begin_t,string.$children(),end_t):this.$diagnostic("error","pm_interp_in_var_name",nil,this.$loc(begin_t).$join(this.$loc(end_t)))}),3),$def(self,"$match_rest",(function(star_t,name_t){var name=nil;return null==name_t&&(name_t=nil),$truthy(name_t["$nil?"]())?this.$n0("match_rest",this.$unary_op_map(star_t)):(name=this.$match_var(name_t),this.$n("match_rest",[name],this.$unary_op_map(star_t,name)))}),-2),$def(self,"$hash_pattern",(function(lbrace_t,kwargs,rbrace_t){var args;return args=this.$check_duplicate_args(kwargs),this.$n("hash_pattern",args,this.$collection_map(lbrace_t,args,rbrace_t))}),3),$def(self,"$array_pattern",(function(lbrack_t,elements,rbrack_t){var node_elements,node_type,trailing_comma=nil;return $truthy(elements["$nil?"]())?this.$n("array_pattern",nil,this.$collection_map(lbrack_t,[],rbrack_t)):(trailing_comma=!1,node_elements=$send(elements,"map",[],(function(element){return null==element&&(element=nil),$eqeq(element.$type(),"match_with_trailing_comma")?(trailing_comma=!0,element.$children().$first()):(trailing_comma=!1,element)}),1),node_type=$truthy(trailing_comma)?"array_pattern_with_tail":"array_pattern",this.$n(node_type,node_elements,this.$collection_map(lbrack_t,elements,rbrack_t)))}),3),$def(self,"$find_pattern",(function(lbrack_t,elements,rbrack_t){return this.$n("find_pattern",elements,this.$collection_map(lbrack_t,elements,rbrack_t))}),3),$def(self,"$match_with_trailing_comma",(function(match,comma_t){return this.$n("match_with_trailing_comma",[match],this.$expr_map(match.$loc().$expression().$join(this.$loc(comma_t))))}),2),$def(self,"$const_pattern",(function(const$,ldelim_t,pattern,rdelim_t){return this.$n("const_pattern",[const$,pattern],$$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(ldelim_t),this.$loc(rdelim_t),const$.$loc().$expression().$join(this.$loc(rdelim_t))))}),4),$def(self,"$pin",(function(pin_t,var$){return this.$n("pin",[var$],this.$send_unary_op_map(pin_t,var$))}),2),$def(self,"$match_alt",(function(left,pipe_t,right){var source_map;return source_map=this.$binary_op_map(left,pipe_t,right),this.$n("match_alt",[left,right],source_map)}),3),$def(self,"$match_as",(function(value,assoc_t,as){var source_map;return source_map=this.$binary_op_map(value,assoc_t,as),this.$n("match_as",[value,as],source_map)}),3),$def(self,"$match_nil_pattern",(function(dstar_t,nil_t){return this.$n0("match_nil_pattern",this.$arg_prefix_map(dstar_t,nil_t))}),2),$def(self,"$match_pair",(function(label_type,label,value){var $a,begin_t=nil,parts=nil,end_t=nil,label_loc=nil,var_name=nil;return $eqeq(label_type,"label")?(this.$check_duplicate_pattern_key(label["$[]"](0),label["$[]"](1)),this.$pair_keyword(label,value)):(begin_t=null==($a=$to_ary(label))[0]?nil:$a[0],parts=null==$a[1]?nil:$a[1],end_t=null==$a[2]?nil:$a[2],label_loc=this.$loc(begin_t).$join(this.$loc(end_t)),$truthy(var_name=this.$static_string(parts))?this.$check_duplicate_pattern_key(var_name,label_loc):this.$diagnostic("error","pm_interp_in_var_name",nil,label_loc),this.$pair_quoted(begin_t,parts,end_t,value))}),3),$def(self,"$match_label",(function(label_type,label){var $a,begin_t=nil,strings=nil,end_t=nil;return $eqeq(label_type,"label")?this.$match_hash_var(label):(begin_t=null==($a=$to_ary(label))[0]?nil:$a[0],strings=null==$a[1]?nil:$a[1],end_t=null==$a[2]?nil:$a[2],this.$match_hash_var_from_str(begin_t,strings,end_t))}),2),self.$private(),$def(self,"$check_condition",(function(cond){var $a,$ret_or_1,lhs=nil,rhs=nil,type=nil,$ret_or_2=nil;return $eqeqeq("masgn",$ret_or_1=cond.$type())?$truthy($rb_le(this.parser.$version(),23))?this.$diagnostic("error","masgn_as_condition",nil,cond.$loc().$expression()):cond:$eqeqeq("begin",$ret_or_1)?$eqeq(cond.$children().$count(),1)?cond.$updated(nil,[this.$check_condition(cond.$children().$last())]):cond:$eqeqeq("and",$ret_or_1)||$eqeqeq("or",$ret_or_1)||$eqeqeq("irange",$ret_or_1)||$eqeqeq("erange",$ret_or_1)?(lhs=null==($a=[].concat($to_a(cond)))[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],type=$eqeqeq("irange",$ret_or_2=cond.$type())?"iflipflop":$eqeqeq("erange",$ret_or_2)?"eflipflop":nil,$truthy(["and","or"]["$include?"](cond.$type()))&&$eqeq(this.parser.$version(),18)?cond:cond.$updated(type,[this.$check_condition(lhs),this.$check_condition(rhs)])):$eqeqeq("regexp",$ret_or_1)?this.$n("match_current_line",[cond],this.$expr_map(cond.$loc().$expression())):cond}),1),$def(self,"$check_duplicate_args",(function(args,map){return null==map&&(map=$hash2([],{})),$send(args,"each",[],(function $$15(this_arg){var $ret_or_1,self=null==$$15.$$s?this:$$15.$$s;return null==this_arg&&(this_arg=nil),$eqeqeq("arg",$ret_or_1=this_arg.$type())||$eqeqeq("optarg",$ret_or_1)||$eqeqeq("restarg",$ret_or_1)||$eqeqeq("blockarg",$ret_or_1)||$eqeqeq("kwarg",$ret_or_1)||$eqeqeq("kwoptarg",$ret_or_1)||$eqeqeq("kwrestarg",$ret_or_1)||$eqeqeq("shadowarg",$ret_or_1)?self.$check_duplicate_arg(this_arg,map):$eqeqeq("procarg0",$ret_or_1)?$truthy(this_arg.$children()["$[]"](0)["$is_a?"]($$("Symbol")))?self.$check_duplicate_arg(this_arg,map):self.$check_duplicate_args(this_arg.$children(),map):$eqeqeq("mlhs",$ret_or_1)?self.$check_duplicate_args(this_arg.$children(),map):nil}),{$$arity:1,$$s:this})}),-2),$def(self,"$check_duplicate_arg",(function(this_arg,map){var $a,this_name,that_name,that_arg=nil,$writer=nil;return null==map&&(map=$hash2([],{})),this_name=null==($a=[].concat($to_a(this_arg)))[0]?nil:$a[0],that_arg=map["$[]"](this_name),that_name=null==($a=[].concat($to_a(that_arg)))[0]?nil:$a[0],$truthy(that_arg["$nil?"]())?($send(map,"[]=",$to_a($writer=[this_name,this_arg])),$writer[$rb_minus($writer.length,1)]):$truthy(this["$arg_name_collides?"](this_name,that_name))?this.$diagnostic("error","duplicate_argument",nil,this_arg.$loc().$name(),[that_arg.$loc().$name()]):nil}),-2),$def(self,"$validate_no_forward_arg_after_restarg",(function(args){var restarg=nil,forward_arg=nil;return restarg=nil,forward_arg=nil,$send(args,"each",[],(function(arg){var $ret_or_1;return null==arg&&(arg=nil),$eqeqeq("restarg",$ret_or_1=arg.$type())?restarg=arg:$eqeqeq("forward_arg",$ret_or_1)?forward_arg=arg:nil}),1),$not(forward_arg["$nil?"]())&&$not(restarg["$nil?"]())?this.$diagnostic("error","forward_arg_after_restarg",nil,forward_arg.$loc().$expression(),[restarg.$loc().$expression()]):nil}),1),$def(self,"$check_assignment_to_numparam",(function(name,loc){var assigning_to_numparam,$ret_or_1,$ret_or_2;return $truthy($rb_lt(this.parser.$version(),27))?nil:(assigning_to_numparam=$truthy($ret_or_1=$truthy($ret_or_2=this.parser.$context()["$in_dynamic_block?"]())?name["$=~"](/^_([1-9])$/):$ret_or_2)?this.parser.$max_numparam_stack()["$has_numparams?"]():$ret_or_1,$truthy(assigning_to_numparam)?this.$diagnostic("error","cant_assign_to_numparam",$hash2(["name"],{name:name}),loc):nil)}),2),$def(self,"$check_reserved_for_numparam",(function(name,loc){return $truthy($rb_lt(this.parser.$version(),30))?nil:$truthy(name["$=~"](/^_([1-9])$/))?this.$diagnostic("error","reserved_for_numparam",$hash2(["name"],{name:name}),loc):nil}),2),$def(self,"$arg_name_collides?",(function(this_name,that_name){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $eqeqeq(18,$ret_or_1=this.parser.$version())?this_name["$=="](that_name):$eqeqeq(19,$ret_or_1)?$truthy($ret_or_2=this_name["$!="]("_"))?this_name["$=="](that_name):$ret_or_2:$truthy($ret_or_2=$truthy($ret_or_3=this_name)?this_name["$[]"](0)["$!="]("_"):$ret_or_3)?this_name["$=="](that_name):$ret_or_2}),2),$def(self,"$check_lvar_name",(function(name,loc){return $truthy(name["$=~"](/^[[[:lower:]]_][[[:alnum:]]_]*$/))?nil:this.$diagnostic("error","lvar_name",$hash2(["name"],{name:name}),loc)}),2),$def(self,"$check_duplicate_pattern_variable",(function(name,loc){return $truthy(name.$to_s()["$start_with?"]("_"))?nil:($truthy(this.parser.$pattern_variables()["$declared?"](name))&&this.$diagnostic("error","duplicate_variable_name",$hash2(["name"],{name:name.$to_s()}),loc),this.parser.$pattern_variables().$declare(name))}),2),$def(self,"$check_duplicate_pattern_key",(function(name,loc){return $truthy(this.parser.$pattern_hash_keys()["$declared?"](name))&&this.$diagnostic("error","duplicate_pattern_key",$hash2(["name"],{name:name.$to_s()}),loc),this.parser.$pattern_hash_keys().$declare(name)}),2),$def(self,"$n",(function(type,children,source_map){return $$$($$("AST"),"Node").$new(type,children,$hash2(["location"],{location:source_map}))}),3),$def(self,"$n0",(function(type,source_map){return this.$n(type,[],source_map)}),2),$def(self,"$join_exprs",(function(left_expr,right_expr){return left_expr.$loc().$expression().$join(right_expr.$loc().$expression())}),2),$def(self,"$token_map",(function(token){return $$$($$("Source"),"Map").$new(this.$loc(token))}),1),$def(self,"$delimited_string_map",(function(string_t){var begin_l,end_l,str_range=nil;return begin_l=(str_range=this.$loc(string_t)).$with($hash2(["end_pos"],{end_pos:$rb_plus(str_range.$begin_pos(),1)})),end_l=str_range.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(str_range.$end_pos(),1)})),$$$($$$($$("Source"),"Map"),"Collection").$new(begin_l,end_l,this.$loc(string_t))}),1),$def(self,"$prefix_string_map",(function(symbol){var begin_l,str_range=nil;return begin_l=(str_range=this.$loc(symbol)).$with($hash2(["end_pos"],{end_pos:$rb_plus(str_range.$begin_pos(),1)})),$$$($$$($$("Source"),"Map"),"Collection").$new(begin_l,nil,this.$loc(symbol))}),1),$def(self,"$unquoted_map",(function(token){return $$$($$$($$("Source"),"Map"),"Collection").$new(nil,nil,this.$loc(token))}),1),$def(self,"$pair_keyword_map",(function(key_t,value_e){var key_l,colon_l,key_range=nil;return key_l=(key_range=this.$loc(key_t)).$adjust($hash2(["end_pos"],{end_pos:-1})),colon_l=key_range.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(key_range.$end_pos(),1)})),[$$$($$$($$("Source"),"Map"),"Collection").$new(nil,nil,key_l),$$$($$$($$("Source"),"Map"),"Operator").$new(colon_l,key_range.$join(value_e.$loc().$expression()))]}),2),$def(self,"$pair_quoted_map",(function(begin_t,end_t,value_e){var quote_l,colon_l,end_l=nil;return quote_l=(end_l=this.$loc(end_t)).$with($hash2(["begin_pos","end_pos"],{begin_pos:$rb_minus(end_l.$end_pos(),2),end_pos:$rb_minus(end_l.$end_pos(),1)})),colon_l=end_l.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(end_l.$end_pos(),1)})),[[this.$value(end_t),quote_l],$$$($$$($$("Source"),"Map"),"Operator").$new(colon_l,this.$loc(begin_t).$join(value_e.$loc().$expression()))]}),3),$def(self,"$expr_map",(function(loc){return $$$($$("Source"),"Map").$new(loc)}),1),$def(self,"$collection_map",(function(begin_t,parts,end_t){var expr_l=nil;return $truthy(begin_t["$nil?"]())||$truthy(end_t["$nil?"]())?$truthy(parts["$any?"]())?expr_l=this.$join_exprs(parts.$first(),parts.$last()):$not(begin_t["$nil?"]())?expr_l=this.$loc(begin_t):$not(end_t["$nil?"]())&&(expr_l=this.$loc(end_t)):expr_l=this.$loc(begin_t).$join(this.$loc(end_t)),$$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(begin_t),this.$loc(end_t),expr_l)}),3),$def(self,"$string_map",(function(begin_t,parts,end_t){var expr_l=nil;return $truthy(begin_t)&&$truthy(this.$value(begin_t)["$start_with?"]("<<"))?(expr_l=$truthy(parts["$any?"]())?this.$join_exprs(parts.$first(),parts.$last()):this.$loc(end_t).$begin(),$$$($$$($$("Source"),"Map"),"Heredoc").$new(this.$loc(begin_t),expr_l,this.$loc(end_t))):this.$collection_map(begin_t,parts,end_t)}),3),$def(self,"$regexp_map",(function(begin_t,end_t,options_e){return $$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(begin_t),this.$loc(end_t),this.$loc(begin_t).$join(options_e.$loc().$expression()))}),3),$def(self,"$constant_map",(function(scope,colon2_t,name_t){var expr_l=nil;return expr_l=$truthy(scope["$nil?"]())?this.$loc(name_t):scope.$loc().$expression().$join(this.$loc(name_t)),$$$($$$($$("Source"),"Map"),"Constant").$new(this.$loc(colon2_t),this.$loc(name_t),expr_l)}),3),$def(self,"$variable_map",(function(name_t){return $$$($$$($$("Source"),"Map"),"Variable").$new(this.$loc(name_t))}),1),$def(self,"$binary_op_map",(function(left_e,op_t,right_e){return $$$($$$($$("Source"),"Map"),"Operator").$new(this.$loc(op_t),this.$join_exprs(left_e,right_e))}),3),$def(self,"$unary_op_map",(function(op_t,arg_e){var expr_l=nil;return null==arg_e&&(arg_e=nil),expr_l=$truthy(arg_e["$nil?"]())?this.$loc(op_t):this.$loc(op_t).$join(arg_e.$loc().$expression()),$$$($$$($$("Source"),"Map"),"Operator").$new(this.$loc(op_t),expr_l)}),-2),$def(self,"$range_map",(function(start_e,op_t,end_e){var expr_l=nil;return $truthy(start_e)&&$truthy(end_e)?expr_l=this.$join_exprs(start_e,end_e):$truthy(start_e)?expr_l=start_e.$loc().$expression().$join(this.$loc(op_t)):$truthy(end_e)&&(expr_l=this.$loc(op_t).$join(end_e.$loc().$expression())),$$$($$$($$("Source"),"Map"),"Operator").$new(this.$loc(op_t),expr_l)}),3),$def(self,"$arg_prefix_map",(function(op_t,name_t){var expr_l=nil;return null==name_t&&(name_t=nil),expr_l=$truthy(name_t["$nil?"]())?this.$loc(op_t):this.$loc(op_t).$join(this.$loc(name_t)),$$$($$$($$("Source"),"Map"),"Variable").$new(this.$loc(name_t),expr_l)}),-2),$def(self,"$kwarg_map",(function(name_t,value_e){var name_range,expr_l=nil;return null==value_e&&(value_e=nil),name_range=this.$loc(name_t).$adjust($hash2(["end_pos"],{end_pos:-1})),expr_l=$truthy(value_e)?this.$loc(name_t).$join(value_e.$loc().$expression()):this.$loc(name_t),$$$($$$($$("Source"),"Map"),"Variable").$new(name_range,expr_l)}),-2),$def(self,"$module_definition_map",(function(keyword_t,name_e,operator_t,end_t){var name_l=nil;return $truthy(name_e)&&(name_l=name_e.$loc().$expression()),$$$($$$($$("Source"),"Map"),"Definition").$new(this.$loc(keyword_t),this.$loc(operator_t),name_l,this.$loc(end_t))}),4),$def(self,"$definition_map",(function(keyword_t,operator_t,name_t,end_t){return $$$($$$($$("Source"),"Map"),"MethodDefinition").$new(this.$loc(keyword_t),this.$loc(operator_t),this.$loc(name_t),this.$loc(end_t),nil,nil)}),4),$def(self,"$endless_definition_map",(function(keyword_t,operator_t,name_t,assignment_t,body_e){var body_l;return body_l=body_e.$loc().$expression(),$$$($$$($$("Source"),"Map"),"MethodDefinition").$new(this.$loc(keyword_t),this.$loc(operator_t),this.$loc(name_t),nil,this.$loc(assignment_t),body_l)}),5),$def(self,"$send_map",(function(receiver_e,dot_t,selector_t,begin_t,args,end_t){var begin_l=nil,end_l=nil;return null==begin_t&&(begin_t=nil),null==args&&(args=[]),null==end_t&&(end_t=nil),$truthy(receiver_e)?begin_l=receiver_e.$loc().$expression():$truthy(selector_t)&&(begin_l=this.$loc(selector_t)),$truthy(end_t)?end_l=this.$loc(end_t):$truthy(args["$any?"]())?end_l=args.$last().$loc().$expression():$truthy(selector_t)&&(end_l=this.$loc(selector_t)),$$$($$$($$("Source"),"Map"),"Send").$new(this.$loc(dot_t),this.$loc(selector_t),this.$loc(begin_t),this.$loc(end_t),begin_l.$join(end_l))}),-4),$def(self,"$var_send_map",(function(variable_e){return $$$($$$($$("Source"),"Map"),"Send").$new(nil,variable_e.$loc().$expression(),nil,nil,variable_e.$loc().$expression())}),1),$def(self,"$send_binary_op_map",(function(lhs_e,selector_t,rhs_e){return $$$($$$($$("Source"),"Map"),"Send").$new(nil,this.$loc(selector_t),nil,nil,this.$join_exprs(lhs_e,rhs_e))}),3),$def(self,"$send_unary_op_map",(function(selector_t,arg_e){var expr_l=nil;return expr_l=$truthy(arg_e["$nil?"]())?this.$loc(selector_t):this.$loc(selector_t).$join(arg_e.$loc().$expression()),$$$($$$($$("Source"),"Map"),"Send").$new(nil,this.$loc(selector_t),nil,nil,expr_l)}),2),$def(self,"$index_map",(function(receiver_e,lbrack_t,rbrack_t){return $$$($$$($$("Source"),"Map"),"Index").$new(this.$loc(lbrack_t),this.$loc(rbrack_t),receiver_e.$loc().$expression().$join(this.$loc(rbrack_t)))}),3),$def(self,"$send_index_map",(function(receiver_e,lbrack_t,rbrack_t){return $$$($$$($$("Source"),"Map"),"Send").$new(nil,this.$loc(lbrack_t).$join(this.$loc(rbrack_t)),nil,nil,receiver_e.$loc().$expression().$join(this.$loc(rbrack_t)))}),3),$def(self,"$block_map",(function(receiver_l,begin_t,end_t){return $$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(begin_t),this.$loc(end_t),receiver_l.$join(this.$loc(end_t)))}),3),$def(self,"$keyword_map",(function(keyword_t,begin_t,args,end_t){var $ret_or_1,end_l=nil;return args=$truthy($ret_or_1=args)?$ret_or_1:[],end_l=$truthy(end_t)?this.$loc(end_t):$truthy(args["$any?"]())&&$not(args.$last()["$nil?"]())?args.$last().$loc().$expression():$truthy(args["$any?"]())&&$truthy($rb_gt(args.$count(),1))?args["$[]"](-2).$loc().$expression():this.$loc(keyword_t),$$$($$$($$("Source"),"Map"),"Keyword").$new(this.$loc(keyword_t),this.$loc(begin_t),this.$loc(end_t),this.$loc(keyword_t).$join(end_l))}),4),$def(self,"$keyword_mod_map",(function(pre_e,keyword_t,post_e){return $$$($$$($$("Source"),"Map"),"Keyword").$new(this.$loc(keyword_t),nil,nil,this.$join_exprs(pre_e,post_e))}),3),$def(self,"$condition_map",(function(keyword_t,cond_e,begin_t,body_e,else_t,else_e,end_t){var end_l=nil;return end_l=$truthy(end_t)?this.$loc(end_t):$truthy(else_e)&&$truthy(else_e.$loc().$expression())?else_e.$loc().$expression():$truthy(this.$loc(else_t))?this.$loc(else_t):$truthy(body_e)&&$truthy(body_e.$loc().$expression())?body_e.$loc().$expression():$truthy(this.$loc(begin_t))?this.$loc(begin_t):cond_e.$loc().$expression(),$$$($$$($$("Source"),"Map"),"Condition").$new(this.$loc(keyword_t),this.$loc(begin_t),this.$loc(else_t),this.$loc(end_t),this.$loc(keyword_t).$join(end_l))}),7),$def(self,"$ternary_map",(function(begin_e,question_t,mid_e,colon_t,end_e){return $$$($$$($$("Source"),"Map"),"Ternary").$new(this.$loc(question_t),this.$loc(colon_t),this.$join_exprs(begin_e,end_e))}),5),$def(self,"$for_map",(function(keyword_t,in_t,begin_t,end_t){return $$$($$$($$("Source"),"Map"),"For").$new(this.$loc(keyword_t),this.$loc(in_t),this.$loc(begin_t),this.$loc(end_t),this.$loc(keyword_t).$join(this.$loc(end_t)))}),4),$def(self,"$rescue_body_map",(function(keyword_t,exc_list_e,assoc_t,exc_var_e,then_t,compstmt_e){var end_l=nil;return $truthy(compstmt_e)&&(end_l=compstmt_e.$loc().$expression()),$truthy(end_l["$nil?"]())&&$truthy(then_t)&&(end_l=this.$loc(then_t)),$truthy(end_l["$nil?"]())&&$truthy(exc_var_e)&&(end_l=exc_var_e.$loc().$expression()),$truthy(end_l["$nil?"]())&&$truthy(exc_list_e)&&(end_l=exc_list_e.$loc().$expression()),$truthy(end_l["$nil?"]())&&(end_l=this.$loc(keyword_t)),$$$($$$($$("Source"),"Map"),"RescueBody").$new(this.$loc(keyword_t),this.$loc(assoc_t),this.$loc(then_t),this.$loc(keyword_t).$join(end_l))}),6),$def(self,"$eh_keyword_map",(function(compstmt_e,keyword_t,body_es,else_t,else_e){var begin_l=nil,end_l=nil;return begin_l=$truthy(compstmt_e["$nil?"]())?$truthy(keyword_t["$nil?"]())?body_es.$first().$loc().$expression():this.$loc(keyword_t):compstmt_e.$loc().$expression(),end_l=$truthy(else_t)?$truthy(else_e["$nil?"]())?this.$loc(else_t):else_e.$loc().$expression():$not(body_es.$last()["$nil?"]())?body_es.$last().$loc().$expression():this.$loc(keyword_t),$$$($$$($$("Source"),"Map"),"Condition").$new(this.$loc(keyword_t),nil,this.$loc(else_t),nil,begin_l.$join(end_l))}),5),$def(self,"$guard_map",(function(keyword_t,guard_body_e){var guard_body_l,keyword_l=nil;return keyword_l=this.$loc(keyword_t),guard_body_l=guard_body_e.$loc().$expression(),$$$($$$($$("Source"),"Map"),"Keyword").$new(keyword_l,nil,nil,keyword_l.$join(guard_body_l))}),2),$def(self,"$static_string",(function(nodes){try{return $send(nodes,"map",[],(function $$18(node){var $ret_or_1,self=null==$$18.$$s?this:$$18.$$s,string=nil;if(null==node&&(node=nil),$eqeqeq("str",$ret_or_1=node.$type()))return node.$children()["$[]"](0);if($eqeqeq("begin",$ret_or_1)){if($truthy(string=self.$static_string(node.$children())))return string;Opal.ret(nil)}else Opal.ret(nil)}),{$$arity:1,$$s:this}).$join()}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),1),$def(self,"$static_regexp",(function(parts,options){var source=nil;return source=this.$static_string(parts),$truthy(source["$nil?"]())?nil:(source=$truthy(options.$children()["$include?"]("u"))?source.$encode($$$($$("Encoding"),"UTF_8")):$truthy(options.$children()["$include?"]("e"))?source.$encode($$$($$("Encoding"),"EUC_JP")):$truthy(options.$children()["$include?"]("s"))?source.$encode($$$($$("Encoding"),"WINDOWS_31J")):$truthy(options.$children()["$include?"]("n"))?source.$encode($$$($$("Encoding"),"BINARY")):source,$$("Regexp").$new(source,$truthy(options.$children()["$include?"]("x"))?$$$($$("Regexp"),"EXTENDED"):nil))}),2),$def(self,"$static_regexp_node",(function(node){var $a,parts=nil,options=nil;return $eqeq(node.$type(),"regexp")?(parts=($a=[node.$children()["$[]"]($range(0,-2,!1)),node.$children()["$[]"](-1)])[0],options=$a[1],this.$static_regexp(parts,options)):nil}),1),$def(self,"$collapse_string_parts?",(function(parts){var $ret_or_1;return $truthy($ret_or_1=parts["$one?"]())?["str","dstr"]["$include?"](parts.$first().$type()):$ret_or_1}),1),$def(self,"$value",(function(token){return token["$[]"](0)}),1),$def(self,"$string_value",(function(token){return $truthy(token["$[]"](0)["$valid_encoding?"]())||this.$diagnostic("error","invalid_encoding",nil,token["$[]"](1)),token["$[]"](0)}),1),$def(self,"$loc",(function(token){return $truthy(token)&&$truthy(token["$[]"](0))?token["$[]"](1):nil}),1),$def(self,"$diagnostic",(function(type,reason,arguments$,location,highlights){return null==highlights&&(highlights=[]),this.parser.$diagnostics().$process($$("Diagnostic").$new(type,reason,arguments$,location,highlights)),$eqeq(type,"error")?this.parser.$send("yyerror"):nil}),-5),$def(self,"$validate_definee",(function(definee){var $ret_or_1;return!($eqeqeq("int",$ret_or_1=definee.$type())||$eqeqeq("str",$ret_or_1)||$eqeqeq("dstr",$ret_or_1)||$eqeqeq("sym",$ret_or_1)||$eqeqeq("dsym",$ret_or_1)||$eqeqeq("regexp",$ret_or_1)||$eqeqeq("array",$ret_or_1)||$eqeqeq("hash",$ret_or_1))||(this.$diagnostic("error","singleton_literal",nil,definee.$loc().$expression()),!1)}),1),$def(self,"$rewrite_hash_args_to_kwargs",(function(args){var $writer=nil;return $truthy(args["$any?"]())&&$truthy(this["$kwargs?"](args.$last()))?($writer=[$rb_minus(args.$length(),1),args["$[]"]($rb_minus(args.$length(),1)).$updated("kwargs")],$send(args,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):$truthy($rb_gt(args.$length(),1))&&$eqeq(args.$last().$type(),"block_pass")&&$truthy(this["$kwargs?"](args["$[]"]($rb_minus(args.$length(),2))))?($writer=[$rb_minus(args.$length(),2),args["$[]"]($rb_minus(args.$length(),2)).$updated("kwargs")],$send(args,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),1),$def(self,"$kwargs?",(function(node){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=node.$type()["$=="]("hash"))?node.$loc().$begin()["$nil?"]():$ret_or_2)?node.$loc().$end()["$nil?"]():$ret_or_1}),1)}(Opal.$r($nesting)("Builders"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/context"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a,$truthy=Opal.truthy;return Opal.add_stubs("reset,attr_accessor,in_block,in_lambda"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Context"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"FLAGS",["in_defined","in_kwarg","in_argdef","in_def","in_class","in_block","in_lambda"]),$def(self,"$initialize",(function(){return this.$reset()}),0),$def(self,"$reset",(function(){return this.in_defined=!1,this.in_kwarg=!1,this.in_argdef=!1,this.in_def=!1,this.in_class=!1,this.in_block=!1,this.in_lambda=!1}),0),$send(self,"attr_accessor",$to_a($$("FLAGS"))),$def(self,"$in_dynamic_block?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$in_block())?$ret_or_1:this.$in_lambda()}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/max_numparam_stack"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus;return Opal.add_stubs("attr_reader,==,size,set,top,>,max,[],last,push,pop,private,[]=,-"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"MaxNumparamStack"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.stack=nil,self.$attr_reader("stack"),$const_set($nesting[0],"ORDINARY_PARAMS",-1),$def(self,"$initialize",(function(){return this.stack=[]}),0),$def(self,"$empty?",(function(){return this.stack.$size()["$=="](0)}),0),$def(self,"$has_ordinary_params!",(function(){return this.$set($$("ORDINARY_PARAMS"))}),0),$def(self,"$has_ordinary_params?",(function(){return this.$top()["$=="]($$("ORDINARY_PARAMS"))}),0),$def(self,"$has_numparams?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$top())?$rb_gt(this.$top(),0):$ret_or_1}),0),$def(self,"$register",(function(numparam){return this.$set([this.$top(),numparam].$max())}),1),$def(self,"$top",(function(){return this.stack.$last()["$[]"]("value")}),0),$def(self,"$push",(function($kwargs){var static$;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");if(!Opal.hasOwnProperty.call($kwargs.$$smap,"static"))throw Opal.ArgumentError.$new("missing keyword: static");return static$=$kwargs.$$smap.static,this.stack.$push($hash2(["value","static"],{value:0,static:static$}))}),1),$def(self,"$pop",(function(){return this.stack.$pop()["$[]"]("value")}),0),self.$private(),$def(self,"$set",(function(value){var $writer;return $writer=["value",value],$send(this.stack.$last(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/current_arg_stack"]=function(Opal){var $base,$parent_nesting,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$rb_minus=Opal.rb_minus,$send=Opal.send,$to_a=Opal.to_a;return Opal.add_stubs("attr_reader,freeze,==,size,<<,-,length,[]=,pop,clear,last"),$base=$nesting[0],$parent_nesting=$nesting,function($base,$super){var self=$klass($base,null,"CurrentArgStack");return self.$$prototype.stack=nil,self.$attr_reader("stack"),$def(self,"$initialize",(function(){return this.stack=[],this.$freeze()}),0),$def(self,"$empty?",(function(){return this.stack.$size()["$=="](0)}),0),$def(self,"$push",(function(value){return this.stack["$<<"](value)}),1),$def(self,"$set",(function(value){var $writer;return $writer=[$rb_minus(this.stack.$length(),1),value],$send(this.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$pop",(function(){return this.stack.$pop()}),0),$def(self,"$reset",(function(){return this.stack.$clear()}),0),$def(self,"$top",(function(){return this.stack.$last()}),0)}([$module($base,"Parser")].concat($parent_nesting)[0])},Opal.modules["parser/variables_stack"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("push,empty?,<<,new,pop,clear,last,to_sym,include?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"VariablesStack"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.stack=nil,$def(self,"$initialize",(function(){return this.stack=[],this.$push()}),0),$def(self,"$empty?",(function(){return this.stack["$empty?"]()}),0),$def(self,"$push",(function(){return this.stack["$<<"]($$("Set").$new())}),0),$def(self,"$pop",(function(){return this.stack.$pop()}),0),$def(self,"$reset",(function(){return this.stack.$clear()}),0),$def(self,"$declare",(function(name){return this.stack.$last()["$<<"](name.$to_sym())}),1),$def(self,"$declared?",(function(name){return this.stack.$last()["$include?"](name.$to_sym())}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/base"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$defs=Opal.defs,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$gvars=Opal.gvars,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$def=Opal.def,$not=Opal.not,$eqeqeq=Opal.eqeqeq,$to_ary=Opal.to_ary,$hash2=Opal.hash2;return Opal.add_stubs("default_parser,setup_source_buffer,default_encoding,parse,parse_with_comments,read,new,all_errors_are_fatal=,diagnostics,-,ignore_warnings=,lambda,puts,render,consumer=,force_encoding,dup,==,name,raw_source=,source=,private_class_method,attr_reader,version,diagnostics=,static_env=,context=,parser=,[],class,reset,source_buffer=,do_parse,comments=,comments,tokens=,!,raise,tokens,private,advance,===,diagnostic,map,process,yyerror,token_to_str"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Base"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.diagnostics=$proto.lexer=$proto.static_env=$proto.context=$proto.builder=$proto.current_arg_stack=$proto.pattern_variables=$proto.pattern_hash_keys=nil,$defs(self,"$parse",(function(string,file,line){var source_buffer,parser=nil;return null==file&&(file="(string)"),null==line&&(line=1),parser=this.$default_parser(),source_buffer=this.$setup_source_buffer(file,line,string,parser.$default_encoding()),parser.$parse(source_buffer)}),-2),$defs(self,"$parse_with_comments",(function(string,file,line){var source_buffer,parser=nil;return null==file&&(file="(string)"),null==line&&(line=1),parser=this.$default_parser(),source_buffer=this.$setup_source_buffer(file,line,string,parser.$default_encoding()),parser.$parse_with_comments(source_buffer)}),-2),$defs(self,"$parse_file",(function(filename){return this.$parse($$("File").$read(filename),filename)}),1),$defs(self,"$parse_file_with_comments",(function(filename){return this.$parse_with_comments($$("File").$read(filename),filename)}),1),$defs(self,"$default_parser",(function(){var parser=nil,$writer=nil;return parser=this.$new(),$writer=[!0],$send(parser.$diagnostics(),"all_errors_are_fatal=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!0],$send(parser.$diagnostics(),"ignore_warnings=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[$send(this,"lambda",[],(function(diagnostic){return null==$gvars.stderr&&($gvars.stderr=nil),null==diagnostic&&(diagnostic=nil),$gvars.stderr.$puts(diagnostic.$render())}),1)],$send(parser.$diagnostics(),"consumer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],parser}),0),$defs(self,"$setup_source_buffer",(function(file,line,string,encoding){var source_buffer,$writer=nil;return string=string.$dup().$force_encoding(encoding),source_buffer=$$$($$("Source"),"Buffer").$new(file,line),$eqeq(this.$name(),"Parser::Ruby18")?($send(source_buffer,"raw_source=",$to_a($writer=[string])),$writer[$rb_minus($writer.length,1)]):($send(source_buffer,"source=",$to_a($writer=[string])),$writer[$rb_minus($writer.length,1)]),source_buffer}),4),self.$private_class_method("setup_source_buffer"),self.$attr_reader("lexer"),self.$attr_reader("diagnostics"),self.$attr_reader("builder"),self.$attr_reader("static_env"),self.$attr_reader("source_buffer"),self.$attr_reader("context"),self.$attr_reader("max_numparam_stack"),self.$attr_reader("current_arg_stack"),self.$attr_reader("pattern_variables"),self.$attr_reader("pattern_hash_keys"),$def(self,"$initialize",(function(builder){var $writer=nil;return null==builder&&(builder=$$$($$$($$("Parser"),"Builders"),"Default").$new()),this.diagnostics=$$$($$("Diagnostic"),"Engine").$new(),this.static_env=$$("StaticEnvironment").$new(),this.context=$$("Context").$new(),this.max_numparam_stack=$$("MaxNumparamStack").$new(),this.current_arg_stack=$$("CurrentArgStack").$new(),this.pattern_variables=$$("VariablesStack").$new(),this.pattern_hash_keys=$$("VariablesStack").$new(),this.lexer=$$("Lexer").$new(this.$version()),$writer=[this.diagnostics],$send(this.lexer,"diagnostics=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[this.static_env],$send(this.lexer,"static_env=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[this.context],$send(this.lexer,"context=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.builder=builder,$writer=[this],$send(this.builder,"parser=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.last_token=nil,$truthy($$$(this.$class(),"Racc_debug_parser"))&&$truthy($$("ENV")["$[]"]("RACC_DEBUG"))&&(this.yydebug=!0),this.$reset()}),-1),$def(self,"$reset",(function(){return this.source_buffer=nil,this.lexer.$reset(),this.static_env.$reset(),this.context.$reset(),this.current_arg_stack.$reset(),this.pattern_variables.$reset(),this.pattern_hash_keys.$reset(),this}),0),$def(self,"$parse",(function(source_buffer){var self=this,$writer=nil,$ret_or_1=nil;return function(){try{return $writer=[source_buffer],$send(self.lexer,"source_buffer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.source_buffer=source_buffer,$truthy($ret_or_1=self.$do_parse())?$ret_or_1:nil}finally{self.source_buffer=nil,$writer=[nil],$send(self.lexer,"source_buffer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}}()}),1),$def(self,"$parse_with_comments",(function(source_buffer){var self=this,$writer=nil;return function(){try{return $writer=[[]],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],[self.$parse(source_buffer),self.lexer.$comments()]}finally{$writer=[nil],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}}()}),1),$def(self,"$tokenize",(function(source_buffer,recover){var self=this,$writer=nil,ast=nil;return null==recover&&(recover=!1),function(){try{$writer=[[]],$send(self.lexer,"tokens=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[[]],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)];try{ast=self.$parse(source_buffer)}catch($err){if(!Opal.rescue($err,[$$$($$("Parser"),"SyntaxError")]))throw $err;try{$not(recover)&&self.$raise()}finally{Opal.pop_exception()}}return[ast,self.lexer.$comments(),self.lexer.$tokens()]}finally{$writer=[nil],$send(self.lexer,"tokens=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[nil],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}}()}),-2),self.$private(),$def(self,"$next_token",(function(){var token;return token=this.lexer.$advance(),this.last_token=token,token}),0),$def(self,"$check_kwarg_name",(function(name_t){var $ret_or_1;return $eqeqeq(/^[a-z_]/,$ret_or_1=name_t["$[]"](0))?nil:$eqeqeq(/^[A-Z]/,$ret_or_1)?this.$diagnostic("error","argument_const",nil,name_t):nil}),1),$def(self,"$diagnostic",(function(level,reason,arguments$,location_t,highlights_ts){var $a,location,highlights;return null==highlights_ts&&(highlights_ts=[]),$a=$to_ary(location_t),null==$a[0]?nil:$a[0],location=null==$a[1]?nil:$a[1],highlights=$send(highlights_ts,"map",[],(function(token){var $c;return null==token&&(token=nil),$c=$to_ary(token),null==$c[0]?nil:$c[0],null==$c[1]?nil:$c[1]}),1),this.diagnostics.$process($$("Diagnostic").$new(level,reason,arguments$,location,highlights)),$eqeq(level,"error")?this.$yyerror():nil}),-5),$def(self,"$on_error",(function(error_token_id,error_value,value_stack){var $a,token_name,location;return token_name=this.$token_to_str(error_token_id),null==($a=$to_ary(error_value))[0]?nil:$a[0],location=null==$a[1]?nil:$a[1],this.diagnostics.$process($$("Diagnostic").$new("error","unexpected_token",$hash2(["token"],{token:token_name}),location))}),3)}($nesting[0],$$$($$("Racc"),"Parser"),$nesting)}($nesting[0],$nesting)},Opal.modules["parser/rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("new,process,include?,type,remove,wrap,insert_before,insert_after,replace,freeze,join,extend,warn_of_deprecation,class,warned_of_deprecation=,-"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Rewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.source_rewriter=nil,$def(self,"$rewrite",(function(source_buffer,ast){return this.source_rewriter=$$$($$("Source"),"Rewriter").$new(source_buffer),this.$process(ast),this.source_rewriter.$process()}),2),$def(self,"$assignment?",(function(node){return["lvasgn","ivasgn","gvasgn","cvasgn","casgn"]["$include?"](node.$type())}),1),$def(self,"$remove",(function(range){return this.source_rewriter.$remove(range)}),1),$def(self,"$wrap",(function(range,before,after){return this.source_rewriter.$wrap(range,before,after)}),3),$def(self,"$insert_before",(function(range,content){return this.source_rewriter.$insert_before(range,content)}),2),$def(self,"$insert_after",(function(range,content){return this.source_rewriter.$insert_after(range,content)}),2),$def(self,"$replace",(function(range,content){return this.source_rewriter.$replace(range,content)}),2),$const_set($nesting[0],"DEPRECATION_WARNING",["Parser::Rewriter is deprecated.","Please update your code to use Parser::TreeRewriter instead"].$join("\n").$freeze()),self.$extend($$("Deprecation")),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this,$writer=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),self.$class().$warn_of_deprecation(),$writer=[!0],$send($$$($$("Source"),"Rewriter"),"warned_of_deprecation=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield)}),-1)}($nesting[0],$$$($$$($$("Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)},Opal.modules["parser/tree_rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$def=(Opal.hash,Opal.def);return Opal.add_stubs("new,process,include?,type,remove,wrap,insert_before,insert_after,replace"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"TreeRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.source_rewriter=nil,$def(self,"$rewrite",(function(source_buffer,ast,$kwargs){var policy;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return policy=Opal.kwrestargs($kwargs,{}),this.source_rewriter=$$$($$$($$("Parser"),"Source"),"TreeRewriter").$new(source_buffer,Opal.to_hash(policy)),this.$process(ast),this.source_rewriter.$process()}),-3),$def(self,"$assignment?",(function(node){return["lvasgn","ivasgn","gvasgn","cvasgn","casgn"]["$include?"](node.$type())}),1),$def(self,"$remove",(function(range){return this.source_rewriter.$remove(range)}),1),$def(self,"$wrap",(function(range,before,after){return this.source_rewriter.$wrap(range,before,after)}),3),$def(self,"$insert_before",(function(range,content){return this.source_rewriter.$insert_before(range,content)}),2),$def(self,"$insert_after",(function(range,content){return this.source_rewriter.$insert_after(range,content)}),2),$def(self,"$replace",(function(range,content){return this.source_rewriter.$replace(range,content)}),2)}($nesting[0],$$$($$$($$("Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)},Opal.modules.parser=function(Opal){var self=Opal.top,$nesting=[],$$=Opal.$r($nesting),$$$=(Opal.nil,Opal.$$$),$truthy=Opal.truthy,$module=Opal.module;return Opal.add_stubs("=~,require,raise"),$truthy($$("RUBY_VERSION")["$=~"](/^1\.[89]\./))&&(self.$require("parser/version"),self.$raise($$("LoadError"),"parser v"+$$$($$("Parser"),"VERSION")+" cannot run on Ruby "+$$("RUBY_VERSION")+".\nPlease upgrade to Ruby 2.0.0 or higher, or use an older version of the parser gem.\n")),self.$require("set"),self.$require("racc/parser"),self.$require("ast"),function($base,$parent_nesting){var self=$module($base,"Parser"),$nesting=[self].concat($parent_nesting);return self.$require("parser/version"),self.$require("parser/messages"),self.$require("parser/deprecation"),function($base){var self=$module($base,"AST");self.$require("parser/ast/node"),self.$require("parser/ast/processor"),self.$require("parser/meta")}($nesting[0]),function($base){var self=$module($base,"Source");self.$require("parser/source/buffer"),self.$require("parser/source/range"),self.$require("parser/source/comment"),self.$require("parser/source/comment/associator"),self.$require("parser/source/rewriter"),self.$require("parser/source/rewriter/action"),self.$require("parser/source/tree_rewriter"),self.$require("parser/source/tree_rewriter/action"),self.$require("parser/source/map"),self.$require("parser/source/map/operator"),self.$require("parser/source/map/collection"),self.$require("parser/source/map/constant"),self.$require("parser/source/map/variable"),self.$require("parser/source/map/keyword"),self.$require("parser/source/map/definition"),self.$require("parser/source/map/method_definition"),self.$require("parser/source/map/send"),self.$require("parser/source/map/index"),self.$require("parser/source/map/condition"),self.$require("parser/source/map/ternary"),self.$require("parser/source/map/for"),self.$require("parser/source/map/rescue_body"),self.$require("parser/source/map/heredoc"),self.$require("parser/source/map/objc_kwarg")}($nesting[0]),self.$require("parser/syntax_error"),self.$require("parser/clobbering_error"),self.$require("parser/diagnostic"),self.$require("parser/diagnostic/engine"),self.$require("parser/static_environment"),self.$require("parser/lexer"),self.$require("parser/lexer/literal"),self.$require("parser/lexer/stack_state"),self.$require("parser/lexer/dedenter"),function($base){$module($base,"Builders").$require("parser/builders/default")}($nesting[0]),self.$require("parser/context"),self.$require("parser/max_numparam_stack"),self.$require("parser/current_arg_stack"),self.$require("parser/variables_stack"),self.$require("parser/base"),self.$require("parser/rewriter"),self.$require("parser/tree_rewriter")}($nesting[0],$nesting)},Opal.modules["parser/ruby31"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$not=Opal.not,$hash2=Opal.hash2,$send=Opal.send,$rb_gt=Opal.rb_gt,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$hash=Opal.hash,$const_set=Opal.const_set,$to_ary=Opal.to_ary,$eqeq=Opal.eqeq,$slice=Opal.slice;return Opal.add_stubs("require,end_with?,[],!,include?,diagnostic,extend_static,push,cmdarg,cond,unextend,pop,children,in_dynamic_block?,declared?,static_env,=~,expression,loc,has_ordinary_params?,max_numparam_stack,dup,stack,reverse_each,>,declare,register,to_i,new,each,split,empty?,[]=,-,+,compstmt,<<,preexe,nil?,begin_body,state=,alias,gvar,back_ref,undef_method,condition_mod,loop_mod,rescue_body,postexe,multi_assign,assign,array,op_assign,index,call_method,const_op_assignable,const_fetch,endless_method_name,def_endless_method,local_pop,in_def,in_def=,def_endless_singleton,logical_op,not_op,command_start=,in_kwarg,in_kwarg=,match_pattern,match_pattern_p,local_push,in_argdef=,in_block=,in_block,block,keyword_cmd,multi_lhs,begin,splat,concat,assignable,index_asgn,==,attr_asgn,const_global,const,symbol_internal,range_inclusive,range_exclusive,binary_op,unary_op,match_op,in_defined=,ternary,associate,declared_forward_args?,forwarded_args,block_pass,declared_anonymous_blockarg?,begin_keyword,condition,loop,case,case_match,for,in_class=,def_class,in_class,def_sclass,def_module,def_method,def_singleton,context,in_lambda,arg,restarg,size,procarg0,args,has_ordinary_params!,set,shadowarg,extend_dynamic,in_lambda=,call_lambda,has_numparams?,numargs,top,any?,when,in_pattern,if_guard,unless_guard,match_with_trailing_comma,array_pattern,find_pattern,hash_pattern,match_as,match_alt,const_pattern,match_rest,match_pair,match_label,match_nil_pattern,accessible,match_var,ident,pin,string_compose,dedent_string,dedent_level,string,character,xstring_compose,regexp_options,regexp_compose,words_compose,word,symbols_compose,string_internal,ivar,cvar,symbol,symbol_compose,respond_to?,negate,unary_num,integer,float,rational,complex,nil,self,true,false,__FILE__,__LINE__,__ENCODING__,nth_ref,declare_forward_args,forward_arg,check_kwarg_name,kwoptarg,kwarg,kwnilarg,kwrestarg,optarg,blockarg,declare_anonymous_blockarg,pair,pair_keyword,pair_label,pair_quoted,kwsplat,yyerrok"),self.$require("racc/parser.rb"),self.$require("parser"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var racc_action_table,racc_action_check,racc_action_pointer,racc_action_default,racc_goto_table,racc_goto_check,racc_goto_pointer,racc_goto_default,racc_reduce_table,racc_token_table,self=$klass($base,$super,"Ruby31"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),clist=nil,arr=nil,idx=nil,$proto=self.$$prototype;return $proto.static_env=$proto.lexer=$proto.max_numparam_stack=$proto.context=$proto.current_arg_stack=$proto.builder=$proto.pattern_variables=$proto.last_token=$proto.pattern_hash_keys=nil,$def(self,"$version",(function(){return 31}),0),$def(self,"$default_encoding",(function(){return $$$($$("Encoding"),"UTF_8")}),0),$def(self,"$endless_method_name",(function(name_t){return $not(["===","==","!=","<=",">="]["$include?"](name_t["$[]"](0)))&&$truthy(name_t["$[]"](0)["$end_with?"]("="))?this.$diagnostic("error","endless_setter",nil,name_t):nil}),1),$def(self,"$local_push",(function(){return this.static_env.$extend_static(),this.lexer.$cmdarg().$push(!1),this.lexer.$cond().$push(!1),this.max_numparam_stack.$push($hash2(["static"],{static:!0}))}),0),$def(self,"$local_pop",(function(){return this.static_env.$unextend(),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.max_numparam_stack.$pop()}),0),$def(self,"$try_declare_numparam",(function(node){var self=this,name=nil,location=nil,raw_max_numparam_stack=nil;return name=node.$children()["$[]"](0),!!($truthy(name["$=~"](/^_[1-9]$/))&&$not(self.$static_env()["$declared?"](name))&&$truthy(self.context["$in_dynamic_block?"]()))&&(location=node.$loc().$expression(),$truthy(self.$max_numparam_stack()["$has_ordinary_params?"]())&&self.$diagnostic("error","ordinary_param_defined",nil,[nil,location]),(raw_max_numparam_stack=self.$max_numparam_stack().$stack().$dup()).$pop(),function(){var $brk=Opal.new_brk();try{$send(raw_max_numparam_stack,"reverse_each",[],(function $$1(outer_scope){var self=null==$$1.$$s?this:$$1.$$s,outer_scope_has_numparams=nil;if(null==outer_scope&&(outer_scope=nil),!$truthy(outer_scope["$[]"]("static")))return outer_scope_has_numparams=$rb_gt(outer_scope["$[]"]("value"),0),$truthy(outer_scope_has_numparams)?self.$diagnostic("error","numparam_used_in_outer_scope",nil,[nil,location]):nil;Opal.brk(nil,$brk)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.$static_env().$declare(name),self.$max_numparam_stack().$register(name["$[]"](1).$to_i()),!0)}),1),clist=["-320,600,620,-119,1214,-121,-118,-320,-320,-320,221,222,1124,-320,-320","-624,-320,239,620,-123,620,925,-624,-110,-320,-732,237,428,-124,311","122,-122,430,429,717,311,-320,-320,620,-320,-320,-320,-320,-320,-116","-117,-124,620,620,-116,1001,828,718,627,892,925,627,126,240,-732,-123","833,125,-117,240,240,-320,-320,-320,-320,-320,-320,-320,-320,-320,-320","-320,-320,-320,-320,-624,-123,-320,-320,-320,-124,687,-320,-119,-110","-320,-121,-120,-320,1125,240,-720,135,-320,306,-320,-511,-320,-320,240","-320,-320,-320,-320,-320,-320,-320,-110,-320,-112,-109,310,-320,-320","-320,126,-120,310,-320,-320,125,-320,-320,-114,-110,-320,-320,-110,-113","-320,-320,126,-115,126,990,-113,125,-320,125,-110,-122,-320,-320,-122","-320,-320,-320,-320,-320,-118,126,126,-719,-107,1000,125,125,-116,-117","-124,126,126,-116,-117,-124,125,125,-108,221,222,218,-320,-320,-320","-320,-320,-320,-320,-320,-320,-320,-320,-320,-320,-320,221,222,-320","-320,-320,311,687,-320,-719,-123,-320,-111,661,-320,-123,648,-119,925","-320,-121,-320,-119,-320,-320,-121,-320,-320,-320,-320,-320,233,-320","-723,-320,-628,-720,-629,221,222,-723,-723,-723,104,105,-723,-723,-723","-320,-723,-120,-320,-320,-102,-320,-120,-320,-723,-723,-723,-723,-723","663,-320,924,-88,-122,219,-112,-723,-723,522,-723,-723,-723,-723,-723","-122,240,660,650,649,-122,-118,-111,-109,220,-744,-118,311,648,233,223","310,-116,240,-117,1063,300,-723,-723,-723,-723,-723,-723,-723,-723,-723","-723,-723,-723,-723,-723,233,682,-723,-723,-723,648,921,-723,106,107","-723,104,105,-723,-723,662,-723,-124,-723,126,-723,-112,-723,-723,125","-723,-723,-723,-723,-723,361,-723,-723,-723,-744,683,-719,-111,-109","648,306,650,649,646,648,362,648,-723,-110,648,-723,-723,-723,-723,240","-723,-744,-723,800,-320,-119,-112,-723,310,-112,-120,-320,-320,-320","650,649,-320,-320,-320,892,-320,-112,-111,-109,859,-111,-109,-112,-320","833,-320,-320,-320,875,106,107,919,-111,-109,-121,-320,-320,431,-320","-320,-320,-320,-320,650,649,646,949,471,650,649,650,649,655,650,649","653,920,1035,861,633,1063,233,-732,634,948,-320,-320,-320,-320,-320","-320,-320,-320,-320,-320,-320,-320,-320,-320,240,-629,-320,-320,-320","648,922,-320,-118,-635,-320,-119,-625,-320,-320,648,-320,-617,-320,-625","-320,510,-320,-320,-617,-320,-320,-320,-320,-320,683,-320,682,-320,507","506,-121,-118,-744,491,648,488,487,486,496,489,521,-320,-108,-623,-320","-320,-320,-320,499,-320,-623,-320,126,-723,-117,612,-320,125,614,-122","-723,-723,-723,650,649,651,-723,-723,633,-723,494,-625,960,650,649,664","-617,-723,-723,504,503,507,506,-121,633,-119,500,523,960,-723,-723,524","-723,-723,-723,-723,-723,239,650,649,659,491,-321,488,487,486,496,489","-623,-321,600,491,240,488,487,486,499,489,-321,-723,-723,-723,-723,-723","-723,-723,-723,-723,-723,-723,-723,-723,-723,558,-628,-723,-723,-723","494,688,-723,570,126,-723,648,572,-723,125,710,507,506,-723,574,-723","500,-723,-723,-114,-723,-723,-723,-723,-723,-614,-723,-723,-723,-321","126,-123,-614,-614,-614,125,135,-614,-614,-614,-614,-614,-723,-107,-87","-723,-723,-614,-723,-614,-723,-614,-614,-614,931,-116,485,-723,240,927","-120,-614,-614,928,-614,-614,-614,-614,-614,585,650,649,646,586,-311","227,-620,-621,227,950,951,-311,304,-620,-621,304,612,593,237,611,-311","-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614","-614,227,-614,-614,-614,227,-614,-614,592,315,-614,240,1188,-614,-614","233,-614,590,-614,126,-614,638,-614,-614,125,-614,-614,-614,-614,-614","-115,-614,-617,-614,-311,228,-620,-621,228,-617,-617,-617,-124,233,-617","-617,-617,-614,-617,306,-614,-614,-614,-614,597,-614,-617,-614,-617","-617,-617,612,-614,603,614,-614,228,264,-617,-617,228,-617,-617,-617","-617,-617,606,227,240,227,615,-356,-619,-622,675,616,636,574,-356,-619","-622,612,627,673,614,638,420,-356,-617,-617,-617,-617,-617,-617,-617","-617,-617,-617,-617,-617,-617,-617,631,754,-617,-617,-617,227,-617,-617","1149,1150,-617,499,630,-617,-617,632,-617,875,-617,640,-617,628,-617","-617,665,-617,-617,-617,-617,-617,228,-617,228,-617,-356,-619,-622,668","227,669,954,240,958,957,1197,1188,959,-617,-293,500,-617,-617,-617,-617","638,-617,671,-617,672,-723,676,1056,-617,240,-109,-617,-723,-723,-723","496,228,680,-723,-723,-320,-723,-118,956,264,499,681,-320,306,-723,-723","694,-720,985,892,695,-320,114,113,115,116,-723,-723,240,-723,-723,-723","-723,-723,228,221,222,697,118,117,119,261,700,507,506,263,262,701,500","703,264,104,105,221,222,358,-723,-723,-723,-723,-723,-723,-723,-723","-723,-723,-723,-723,-723,-723,-320,705,-723,-723,-723,-385,688,-723","227,719,-723,720,261,-723,227,1164,263,262,-723,724,-723,226,-723,-723","1162,-723,-723,-723,-723,-723,224,-723,-723,-723,726,102,90,93,94,732","95,97,96,98,754,985,892,-723,91,101,-723,-723,90,-111,499,-723,85,733","92,106,107,264,-723,264,91,-120,333,81,82,83,11,65,264,228,92,71,72","264,240,228,75,-723,73,74,76,35,36,79,80,788,240,240,500,240,84,33,32","114,113,115,116,-102,803,23,1056,240,606,281,282,10,53,335,12,118,117","119,108,64,110,109,111,814,112,120,121,-320,104,105,49,50,48,-321,-320","-723,819,-626,240,-720,-321,821,-723,-320,-626,280,279,-719,824,-321","829,-723,45,-626,830,38,834,858,66,67,227,862,68,863,40,-294,876,602","52,491,-723,488,487,486,558,489,520,24,558,888,892,910,102,90,93,94","913,95,97,96,98,914,-320,240,917,91,101,240,-321,926,-723,943,-626,85","944,92,106,107,945,962,46,47,333,81,82,83,11,65,964,300,970,71,72,972","974,228,75,-716,73,74,76,35,36,79,80,572,574,496,814,240,84,33,32,114","113,115,116,499,1159,23,488,487,486,306,489,10,53,335,12,118,117,119","108,64,110,109,111,306,112,120,121,227,104,105,49,50,48,-627,519,-614","507,506,814,264,-627,500,-614,520,892,987,988,-716,240,-627,240,-614","45,998,240,38,-295,240,66,67,1009,1013,68,1159,40,488,487,486,52,489","-716,-293,491,1017,488,487,486,24,489,700,718,1020,102,90,93,94,1022","95,97,96,98,1024,228,1026,1026,91,101,240,-627,774,-614,240,240,85,1054","92,106,107,1057,710,46,47,333,81,82,83,11,65,714,853,854,71,72,855,120","121,75,-717,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32,114,113","115,116,925,491,23,488,487,486,972,489,10,53,335,12,118,117,119,108","64,110,109,111,1069,112,120,121,240,104,105,49,50,48,814,491,-617,488","487,486,1086,489,710,-617,1088,1093,1094,1099,-717,1100,1101,714,-617","45,-296,1114,38,1115,1116,66,67,240,240,68,240,40,240,240,240,52,925","-717,710,491,1123,488,487,486,24,489,240,714,1129,102,90,93,94,1130","95,97,96,98,1132,700,1135,1138,91,101,1140,1142,240,-617,-385,1154,85","1165,92,106,107,1166,710,46,47,333,81,82,83,11,65,1026,1026,1026,71","72,1173,1186,1189,75,1194,73,74,76,35,36,79,80,256,1195,694,1115,1205","84,33,32,114,113,115,116,1205,700,23,129,130,131,132,133,10,53,335,12","118,117,119,108,64,110,109,111,1208,112,120,121,1210,104,105,49,50,48","264,268,269,270,271,281,282,276,277,272,273,1212,257,258,1214,1214,274","275,240,45,1026,255,38,1205,-720,66,67,-719,1231,68,1214,40,261,1214","267,52,263,262,1214,259,260,280,279,265,24,266,3,,,102,90,93,94,,95","97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32","114,113,115,116,,,23,,,,,677,10,53,335,12,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277","272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263","262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,278,,-265,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72",",,,75,,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32,114,113,115","116,,,23,,,,,889,10,53,335,12,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257","258,,,274,275,,45,,,337,,,66,67,,,68,,40,261,,267,52,263,262,,259,260","280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,","85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35","36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,677,10,53,335,12,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269","270,271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,337,,,66,67",",,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82","83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,918,10,53,335,12,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273",",257,258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259","260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278",",,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74","76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12","118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268","269,270,271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66","67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81","82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257","258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260","280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,","85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35","36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117","119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270","271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68",",40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,7,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258,,","274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279","265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,240,278,,,,,85,,92","106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79","80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271","281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40","261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,","104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258",",,274,275,,45,,,337,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280","279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,","92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36","79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271","281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40","261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,","104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258",",,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280","279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,","92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36","79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271","281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40","261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,","104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745,-745",",,274,275,,45,,,38,,,66,67,,264,68,,40,261,,267,52,263,262,,259,260","280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,261,,91,101,263,262",",259,260,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,","73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,264,491,23,488,487","486,,489,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,264,,261,,,,263,262,710,259,260,,,,,,274,275,,45,,,38,",",66,67,,,68,,40,261,,267,52,263,262,,259,260,,,265,24,266,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82","83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745","-745,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260","280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85",",92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36","79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271","281,282,276,277,272,273,,-745,-745,,,274,275,,45,,,38,,,66,67,,,68,","40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,","95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,","104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,45,,,38,,,66,67,,,68,,40","261,,267,52,263,262,,259,260,,,265,24,266,,,,102,90,93,94,,95,97,96","98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71","72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,",",,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,264,268,269,270,271,281,282,276,,272,273,,,,,,274,275,,45,",",38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266",",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47","7,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,264,268,269,270,271,281,282,,,272,273",",,,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260","280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85",",92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36","79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,-745,-745,-745","-745,281,282,,,-745,-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40,261",",267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95,97,96","98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71","72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,",",,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274,275,,45",",,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266",",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47","333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745","-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259","260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,",",85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76","35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,-745,-745","-745,-745,281,282,,,-745,-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40","261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65",",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,",",23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274,275",",45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24","266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106","107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113","115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121",",104,105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274","275,,245,,,253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,280,279,265","250,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745","-745,,,274,275,,245,,,253,,,66,67,,,68,,,261,,267,52,263,262,,259,260","280,279,265,250,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84","349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,245,",",253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,,,,250,,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47",",75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,",",,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,264,,,,,,,,,,,,,,,,274,275,,245,,,253,,,66,67,,,68,,,261,,,52,263","262,,259,260,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84","349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,245,",",253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,,,,250,,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,",",,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,",",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79","80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108","64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98",",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,","53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,",",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,","254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,436,,,,52,,,,,,",",,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,",",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79","80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,",",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35","36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,,,,85,,92,106,107,-441,,46,47,,,,-441,-441,-441",",,-441,-441,-441,,-441,,,,,,,,-441,-441,-441,-441,,,,,,,,,-441,-441",",-441,-441,-441,-441,-441,,,,,,,,,,,,,,,,,,,,,,,-441,-441,-441,-441","-441,-441,-441,-441,-441,-441,-441,-441,-441,-441,,,-441,-441,-441,",",-441,,306,-441,,,-441,-441,,-441,,-441,,-441,,-441,-441,,-441,-441","-441,-441,-441,,-441,-441,-441,,,,,,,,,,,,,,-441,,,-441,-441,,-441,","-441,81,82,83,,65,,-441,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33","32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,","112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,",",68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,","81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,",",84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66","67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117","119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,",",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73","74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,",",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,",",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-327,,46,47,,,,-327","-327,-327,,,-327,-327,-327,,-327,,,,,,,,-327,,-327,-327,,,,,,,,,-327","-327,,-327,-327,-327,-327,-327,,,,,,,,,,,,,,,,,,,,,,,-327,-327,-327","-327,-327,-327,-327,-327,-327,-327,-327,-327,-327,-327,,,-327,-327,-327",",,-327,,315,-327,,,-327,-327,,-327,,-327,,-327,,-327,-327,,-327,-327","-327,-327,-327,,-327,,-327,,,,,,,,,,,,,,-327,,,-327,-327,,-327,,-327","81,82,83,,65,,-327,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327","112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,",",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,","91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355","79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108","64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,","245,,,253,,,66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,","53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,",",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82","83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,",",52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33","32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327","112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,",",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,","91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36","79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108","64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98",",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,797,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73","74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,",",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,",",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,867,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82","83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,",",52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327","112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,",",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,","91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355","79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108","64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98",",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35","36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,",",,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,",",,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,",",,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,",",,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96","98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76","354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117","119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,",",,,,,245,,,253,,,66,67,,,68,,324,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,","118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,",",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47",",75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,",",,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49","50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,328,,,,,,250",",,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121",",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,797,,,","52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33","32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,240,,,81","82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,","84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66","67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,",",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,","118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,",",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47",",75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,","53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,",",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49","50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328",",,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106","107,,,46,47,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,",",84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38",",,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,","91,101,,,,,,420,85,,92,106,107,,,46,47,81,82,83,,65,,,,71,72,,,,75,","73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53",",,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,",",,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,",",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116",",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121",",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,322,","52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84","349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,",",66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96","98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76","354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117","119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,",",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73","74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,",",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,",",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,",",102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-275,,46","47,,,,-275,-275,-275,,,-275,-275,-275,491,-275,488,487,486,496,489,",",-275,-275,-275,,,,499,,,,,,-275,-275,,-275,-275,-275,-275,-275,,491",",488,487,486,496,489,494,,,,,,,,499,504,503,507,506,,,,500,,491,,488","487,486,496,489,-275,,,,,494,,-275,499,,,,306,-275,504,503,507,506,",",,500,,,,,,,,,494,485,,,,-275,-275,,,,,507,506,,,,500,,,,-275,,,-275",",81,82,83,-275,65,,485,,71,72,-275,,,75,,73,74,76,354,355,79,80,,,,",",84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79","80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95","97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73","74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,","53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,",",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,",",,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,","102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,","102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,","102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116",",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121",",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52",",,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33","32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84","349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66","67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,",",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,",",,,,245,,,253,,,66,67,,,68,,324,,,,52,,,328,,,,,,250,,,,,102,325,93","94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,",",,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121",",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52",",,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65","92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,",",,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66","67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,",",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,",",,,,245,,,253,,,66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","560,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,",",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,",",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49","50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328",",,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65","92,106,107,71,72,46,560,,75,,73,74,76,354,355,79,80,,,,,,84,349,357","114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84","349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66","67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,",",,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96","98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76","35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,",",,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325","93,94,,95,97,96,98,,,,,91,101,240,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,","254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,",",,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,",",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79","80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108","64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98",",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,","53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,",",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,","254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,",",,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,",",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11,65,,,,71,72,,,,75,,73,74","76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,,12,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,","118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,",",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47",",75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53",",,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,",",,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,",",,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48",",,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,",",,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,","102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,","102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116",",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47","81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114","113,115,116,,,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40",",,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,420,85",",92,106,107,,,46,47,81,82,83,,65,,,,71,72,,,,75,,73,74,76,35,36,79,80",",,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96","98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76","35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-725,,46,47,,,,-725,-725","-725,,,-725,-725,-725,,-725,,,,,,,,-725,-725,-725,-725,-725,,,,,,,,-725","-725,,-725,-725,-725,-725,-725,,,,,,,,,,,,,,,,,,,,,,,-725,-725,-725","-725,-725,-725,-725,-725,-725,-725,-725,-725,-725,-725,,,-725,-725,-725",",,-725,,,-725,,,-725,-725,,-725,,-725,,-725,,-725,-725,,-725,-725,-725","-725,-725,,-725,-725,-725,,,,,,,,,,,,,,-725,,,-725,-725,-725,-725,,-725","-724,-725,,,,,-725,-724,-724,-724,,,-724,-724,-724,,-724,,,,,,,,-724","-724,-724,-724,-724,,,,114,113,115,116,-724,-724,,-724,-724,-724,-724","-724,,,,,118,117,119,,,,,,,,,,,104,105,,,358,-724,-724,-724,-724,-724","-724,-724,-724,-724,-724,-724,-724,-724,-724,,,-724,-724,-724,,,-724",",,-724,,,-724,-724,,-724,,-724,,-724,,-724,-724,,-724,-724,-724,-724","-724,,-724,-724,-724,,102,90,93,94,,95,97,96,98,,,,-724,91,101,-724","-724,-724,-724,,-724,85,-724,92,106,107,-275,-724,81,82,83,11,65,-275","-275,-275,71,72,-275,-275,-275,75,-275,73,74,76,35,36,79,80,-275,-275","-275,-275,,84,33,32,114,113,115,116,-275,-275,23,-275,-275,-275,-275","-275,10,53,9,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275","-275,-275,,,-275,-275,-275,45,,-275,38,306,-275,66,67,-275,-275,68,-275","40,-275,,-275,52,-275,-275,,-275,-275,-275,-275,-275,24,-275,-275,-275",",102,90,93,94,,95,97,96,98,,,,-275,91,101,-275,-275,,-275,,-275,85,","92,106,107,,-275,46,47,81,82,83,,65,,,,71,72,,,,75,,73,74,76,35,36,79","80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,",",,91,101,126,,,,,125,85,,92,106,107,-312,,46,47,,,,-312,-312,-312,,","-312,-312,-312,,-312,,,,,,,,-312,,-312,-312,-312,,,,,,,,-312,-312,,-312","-312,-312,-312,-312,,,,,,,,,,,,,,,,,,,,,,,-312,-312,-312,-312,-312,-312","-312,-312,-312,-312,-312,-312,-312,-312,,,-312,-312,-312,,,-312,,,-312",",,-312,-312,,-312,,-312,,-312,,-312,-312,,-312,-312,-312,-312,-312,","-312,,-312,,,,,,,,,,,,,,-312,,,-312,-312,-312,-312,,-312,,-312,,81,82","83,-312,65,,,,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33","32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,","112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,",",68,,436,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,",",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117","119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,",",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73","74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,",",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,",",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,",",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116",",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104","105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52",",,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",436,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81","82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84","33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,",",,,,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1107,,,253",",,66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,",",,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1146,,,253,,","66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,",",,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,",",84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,253,,,66","67,,,68,,,491,,488,487,486,496,489,,,,,,,,,499,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,588,,494,85,,92,106,107,81,82,83,,65,507,506,,71","72,500,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116",",,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105",",,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72",",,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254",",,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,,,358",",,,,,,,,,,,,,,,,,,,346,,,253,,,66,67,,,68,,,491,,488,487,486,496,489",",,,,,,,,499,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,360,,494,85,,92","106,107,81,82,83,,65,507,506,,71,72,500,,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342",",,66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,",",,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66","67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81","82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1146,,,253,,,66,67,,","68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,400,64,110,109,401",",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,407,,,402,,,253,,,66,67",",,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68",",,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357","114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,,",",,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85","65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,341,,",",,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65","92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113","115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121",",104,105,,,358,,,,,,,,,,,,,,,,,,,,395,,,38,,,66,67,,,68,,40,,,,,,,,",",,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106","107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,350,,,118,117,119,400,64,110,109,401,,112,120,121,,104","105,,,358,,,,,,,,,,,,,,,,,,,,402,,,253,,,66,67,,,68,,,,,,,,,,,,,,,,",",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,185,196","186,209,182,202,192,191,212,213,207,190,189,184,210,214,215,194,183","197,201,203,195,188,,,,204,211,206,205,198,208,193,181,200,199,,,,,","180,187,178,179,175,176,177,138,140,137,,139,,,,,,,,169,170,,166,148","149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,,,,,,,,,163,162",",147,168,165,164,173,160,161,155,153,145,167,146,,,174,102,,,,,,,,,",",,,,101,185,196,186,209,182,202,192,191,212,213,207,190,189,184,210","214,215,194,183,197,201,203,195,188,,,,204,211,206,205,198,208,193,181","200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139,,,,,,,,169,170",",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,,,,,",",,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,,,174,102",",,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213,207,190,189","184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206,205,198,208","193,181,200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139,,,,,",",,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159",",,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146",",,174,102,,,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213,207","190,189,184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206,205","198,208,193,181,200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139",",,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158","159,,,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167","146,,,174,102,,,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213","207,190,189,184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206","294,293,295,292,181,200,199,,,,,,180,187,178,179,289,290,291,287,140","110,109,288,,112,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152",",,,171,172,158,159,,,,,,299,,,,,,,,163,162,,147,168,165,164,173,160","161,155,153,145,167,146,,,174,114,113,115,116,,,,,,491,,488,487,486","496,489,118,117,119,774,,,,777,499,,,,,104,105,,,358,,,,,,,,,,,,,494",",,,,,,776,,,747,507,506,,745,,500,746,,,,,,,,,,,,,,,,775,,,,102,90,93","94,,95,97,96,98,,,,,91,101,114,113,115,116,485,,85,,92,106,107,,,762","763,,118,117,119,774,,,491,777,488,487,486,496,489,104,105,,,358,,,","499,,,,,,,,,,,,,,,,776,,,747,,,494,745,,,746,,,,,504,503,507,506,,,","500,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,",",85,,92,106,107,,,762,763,,118,117,119,774,,,491,777,488,487,486,496","489,104,105,,,358,,,,499,,,,,,,,,,,,,,,,776,,,747,,,494,745,,,746,,749",",,504,503,507,506,,,,500,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91","101,114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,,777","754,,,,,104,105,,,358,499,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,","749,,,,,,,500,,,,,,,775,,,,102,755,93,94,,95,97,96,98,,,,,91,101,114","113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,491,777,488","487,486,496,489,104,105,,,358,,,,499,,,,,,,,,,,,,,,,776,,,747,,,494","745,,,746,,,,,504,503,507,506,,,,500,,,,775,,,,102,90,93,94,,95,97,96","98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119","774,,,491,777,488,487,486,496,489,104,105,,,358,,,,499,,,,,,,,,,,,,",",,776,,,747,,,494,745,,,746,,749,,,,,507,506,,,,500,,,,775,,,,102,90","93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762","763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776",",,747,,,,745,,,746,,749,,,,,,,491,,488,487,486,496,489,775,,,,102,90","93,94,499,95,97,96,98,,,,,91,101,240,114,113,115,116,,85,,92,106,107","494,,762,763,,,118,117,119,774,,507,506,777,,,500,,,104,105,,,358,,",",,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,485,,,,,,,,,,,,,775,,,,102","90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,","762,763,,118,117,119,774,,,,777,754,,,,,104,105,,,358,499,,,,,,,,,,",",,,,,,,,776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775,,,,102,755,93","94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763",",118,117,119,774,,,,777,754,,,,,104,105,,,358,499,,,,,,,,,,,,,,,,,,","776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775,,,,102,755,93,94,,95","97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,762,763,185,196,186,209,182","202,192,191,212,213,207,190,189,184,210,214,215,194,183,197,201,203","195,188,,,,204,211,206,205,198,208,193,181,200,199,,,,,,180,187,178","179,175,176,177,138,140,,,139,,,,,,,,169,170,,166,148,149,150,157,154","156,,,151,152,,,,171,172,158,159,,,,,,,,,,,,,,163,162,,147,168,165,164","173,160,161,155,153,145,167,146,,,174,114,113,115,116,,,491,,488,487","486,496,489,,,,118,117,119,774,,499,,777,754,,,,,104,105,,,358,499,",",,,,,,,494,,,,,,,,,,776,507,506,747,,,500,745,,,746,,749,,,,,,,500,",",,,,,775,,,,102,755,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,","85,,92,106,107,,,762,763,,118,117,119,774,,,,777,754,,,,,104,105,,,358","499,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775",",,,102,755,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106","107,,,762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,",",,,,,,,,776,,,747,,,,745,,,746,,,,,,,,,,,,,,,,775,,,,102,90,93,94,,95","97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763,,118","117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776,,,747,",",,745,,,746,,,,,,,,,,,,,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101","114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,,777,",",,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,,,,,,",",,,,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,",",85,,92,106,107,,,762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358",",,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,,,,,,,,,,,,,,775,,,,102","90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,","762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,114,113,115","116,,,,,,,,,776,,,747,118,117,119,745,,,746,,1053,,,,,104,105,,,358",",,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107",",,762,763,491,,488,487,486,496,489,,,,,102,90,93,94,499,95,97,96,98",",,,,91,101,114,113,115,116,,,85,,92,106,107,494,,,,,118,117,119,,504","503,507,506,,,,500,,104,105,,,358,,,,,,,,,,,,491,,488,487,486,496,489",",,,,,,,,499,,,,,,491,485,488,487,486,496,489,,,,,,,,,499,494,102,90","93,94,,95,97,96,98,,507,506,,91,101,500,,,,,494,85,,92,106,107,,,,504","503,507,506,,,491,500,488,487,486,496,489,,491,,488,487,486,496,489","499,,,,,485,,,499,,491,,488,487,486,496,489,,,,,,494,644,,499,485,,",",494,504,503,507,506,,,,500,504,503,507,506,,,,500,494,,,,,,,,,504,503","507,506,,,491,500,488,487,486,496,489,,,,,,,,,499,485,,,,,,,,485,,,",",,,,,,,,,494,,,,485,,,,,,,507,506,872,469,,500,871,,,,,,,,169,170,,166","148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,485",",,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,842,469,174",",843,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172","158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153","145,167,146,837,462,174,,838,,,,,,,,169,170,,166,148,149,150,157,154","156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165","164,173,160,161,155,153,145,167,146,465,469,174,,464,,,,,,,,169,170",",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,",",,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,729,469","174,,730,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171","172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155","153,145,167,146,556,462,174,,557,,,,,,,,169,170,,166,148,149,150,157","154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168","165,164,173,160,161,155,153,145,167,146,458,462,174,,459,,,,,,,,169","170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306",",,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,556","462,174,,557,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,",",,171,172,158,159,,,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161","155,153,145,167,146,729,469,174,,730,,,,,,,,169,170,,166,148,149,150","157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147","168,165,164,173,160,161,155,153,145,167,146,727,462,174,,728,,,,,,,","169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,",",,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146","807,462,174,,808,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152",",,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160","161,155,153,145,167,146,810,469,174,,811,,,,,,,,169,170,,166,148,149","150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162",",147,168,165,164,173,160,161,155,153,145,167,146,1200,462,174,,1201",",,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158","159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145","167,146,869,462,174,,870,,,,,,,,169,170,,166,148,149,150,157,154,156",",,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164","173,160,161,155,153,145,167,146,1202,469,174,,1203,,,,,,,,169,170,,166","148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,",",163,162,,147,168,165,164,173,160,161,155,153,145,167,146,839,469,174",",840,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172","158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153","145,167,146,1218,469,174,,1217,,,,,,,,169,170,,166,148,149,150,157,154","156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165","164,173,160,161,155,153,145,167,146,727,462,174,,728,,,,,,,,169,170",",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,",",,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,,,174"],racc_action_table=arr=$$$("Array").$new(28717,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),clist=["464,521,1016,837,1236,838,992,464,464,464,515,515,1053,464,464,289,464","23,835,631,1087,1058,289,807,464,927,443,137,396,785,3,840,137,137,501","31,464,464,1089,464,464,464,464,464,1104,1105,1108,384,385,392,850,622","501,625,1092,932,1092,331,23,928,521,625,331,393,1058,927,464,464,464","464,464,464,464,464,464,464,464,464,464,464,289,1165,464,464,464,443","464,464,1200,807,464,1201,839,464,1053,928,840,9,464,31,464,932,464","464,515,464,464,464,464,464,871,464,837,464,838,992,785,871,871,871","1016,1202,31,871,871,1016,871,464,631,807,464,464,807,464,871,464,835","396,1087,835,840,835,464,1087,807,464,871,871,1203,871,871,871,871,871","1222,622,1089,839,392,850,622,1089,1104,1105,1108,384,385,1104,1105","1108,384,385,393,981,981,12,871,871,871,871,871,871,871,871,871,871","871,871,871,871,553,553,871,871,871,69,871,871,1202,1165,871,839,416","871,1165,1127,1200,735,871,1201,871,1200,871,871,1201,871,871,871,871","871,251,871,729,871,243,1203,244,641,641,729,729,729,358,358,729,729","729,871,729,1202,871,871,802,871,1202,871,729,729,729,729,729,417,871","735,802,871,14,808,729,729,246,729,729,729,729,729,1203,981,416,1127","1127,1203,1222,810,979,15,251,1222,351,576,252,17,69,243,553,244,1127","27,729,729,729,729,729,729,729,729,729,729,729,729,729,729,20,458,729","729,729,656,729,729,358,358,729,48,48,729,729,417,729,246,729,641,729","808,729,729,641,729,729,729,729,729,42,729,729,729,252,459,810,810,979","947,351,576,576,576,658,45,414,729,458,413,729,729,729,729,53,729,20","729,576,730,458,808,729,351,808,729,730,730,730,656,656,730,730,730","1220,730,808,810,979,656,810,979,459,730,1220,730,730,730,1006,48,48","727,810,979,459,730,730,216,730,730,730,730,730,947,947,947,756,229","658,658,414,414,414,413,413,413,728,923,658,402,947,19,746,402,756,730","730,730,730,730,730,730,730,730,730,730,730,730,730,746,44,730,730,730","412,730,730,1006,231,730,727,291,730,730,418,730,288,730,291,730,235","730,730,288,730,730,730,730,730,870,730,869,730,700,700,728,923,19,972","415,972,972,972,972,972,245,730,44,290,730,730,730,730,972,730,290,730","996,872,44,822,730,996,822,730,872,872,872,412,412,412,872,872,776,872","972,291,776,418,418,418,288,872,872,972,972,972,972,870,931,869,972","247,931,872,872,248,872,872,872,872,872,254,415,415,415,1022,634,1022","1022,1022,1022,1022,290,634,362,914,972,914,914,914,1022,914,634,872","872,872,872,872,872,872,872,872,872,872,872,872,872,305,43,872,872,872","1022,872,872,319,389,872,411,320,872,389,914,1022,1022,872,323,872,1022","872,872,362,872,872,872,872,872,108,872,872,872,634,5,362,108,108,108","5,335,108,108,108,287,108,872,43,336,872,872,287,872,108,872,108,108","108,744,43,1022,872,338,744,872,108,108,744,108,108,108,108,108,339","411,411,411,340,347,286,294,295,29,759,759,347,286,294,295,29,376,346","21,376,347,108,108,108,108,108,108,108,108,108,108,108,108,108,108,287","345,108,108,108,1187,108,108,345,349,108,350,1187,108,108,352,108,345","108,509,108,1187,108,108,509,108,108,108,108,108,21,108,111,108,347","286,294,295,29,111,111,111,21,353,111,111,111,108,111,357,108,108,108","108,359,108,111,108,111,111,111,377,108,366,377,108,345,368,111,111","1187,111,111,111,111,111,371,442,374,404,378,54,293,292,442,379,404","381,54,293,292,380,390,442,380,404,391,54,111,111,111,111,111,111,111","111,111,111,111,111,111,111,395,939,111,111,111,394,111,111,1090,1090","111,939,394,111,111,397,111,678,111,406,111,394,111,111,426,111,111","111,111,111,442,111,404,111,54,293,292,432,1145,434,775,1157,775,775","1157,1145,775,111,435,939,111,111,111,111,1145,111,437,111,440,465,444","939,111,454,678,111,465,465,465,1132,394,456,465,465,811,465,678,775","531,1132,457,811,466,465,465,472,811,823,823,473,811,762,762,762,762","465,465,476,465,465,465,465,465,1145,383,383,477,762,762,762,531,478","1132,1132,531,531,481,1132,482,532,762,762,16,16,762,465,465,465,465","465,465,465,465,465,465,465,465,465,465,811,483,465,465,465,493,465","465,1106,505,465,508,532,465,18,1106,532,532,465,511,465,18,465,465","1106,465,465,465,465,465,18,465,465,465,517,762,762,762,762,525,762","762,762,762,945,1190,1190,465,762,762,465,465,88,465,945,465,762,526","762,762,762,533,465,534,88,465,387,387,387,387,387,387,535,1106,88,387","387,536,561,18,387,842,387,387,387,387,387,387,387,562,563,567,945,583","387,387,387,387,387,387,387,584,587,387,945,589,594,51,51,387,387,387","387,387,387,387,387,387,387,387,387,598,387,387,387,843,387,387,387","387,387,593,843,842,607,343,608,843,593,609,842,843,343,51,51,842,619","593,623,842,387,343,624,387,626,653,387,387,363,661,387,663,387,670","679,363,387,714,842,714,714,714,684,714,363,387,689,691,693,707,387","387,387,387,712,387,387,387,387,713,843,715,722,387,387,731,593,740","842,748,343,387,749,387,387,387,750,779,387,387,841,841,841,841,841","841,782,784,790,841,841,791,792,363,841,400,841,841,841,841,841,841","841,794,796,697,804,806,841,841,841,841,841,841,841,697,1099,841,1099","1099,1099,809,1099,841,841,841,841,841,841,841,841,841,841,841,841,812","841,841,841,242,841,841,841,841,841,344,242,400,697,697,813,816,344","697,400,242,825,831,832,400,836,344,845,400,841,849,851,841,866,868","841,841,877,890,841,1197,841,1197,1197,1197,841,1197,400,893,913,894","913,913,913,841,913,897,899,902,841,841,841,841,903,841,841,841,841","905,242,906,908,841,841,912,344,925,400,933,934,841,938,841,841,841","941,913,841,841,236,236,236,236,236,236,913,649,649,236,236,649,649","649,236,401,236,236,236,236,236,236,236,8,8,8,8,8,236,236,236,236,236","236,236,946,494,236,494,494,494,965,494,236,236,236,236,236,236,236","236,236,236,236,236,968,236,236,236,969,236,236,236,236,236,978,710","401,710,710,710,983,710,494,401,986,993,995,1002,401,1003,1004,494,401","236,1005,1031,236,1032,1037,236,236,1042,1043,236,1044,236,1045,1046","1047,236,1051,401,710,1114,1052,1114,1114,1114,236,1114,1055,710,1059","236,236,236,236,1066,236,236,236,236,1071,1072,1074,1075,236,236,1076","1078,1079,401,1080,1096,236,1107,236,236,236,1110,1114,236,236,1103","1103,1103,1103,1103,1103,1111,1112,1113,1103,1103,1124,1143,1146,1103","1155,1103,1103,1103,1103,1103,1103,1103,25,1156,1161,1171,1172,1103","1103,1103,1103,1103,1103,1103,1174,1177,1103,581,581,581,581,581,1103","1103,1103,1103,1103,1103,1103,1103,1103,1103,1103,1103,1180,1103,1103","1103,1181,1103,1103,1103,1103,1103,25,25,25,25,25,25,25,25,25,25,25","1182,25,25,1183,1185,25,25,1199,1103,1204,25,1103,1206,1217,1103,1103","1218,1224,1103,1225,1103,25,1226,25,1103,25,25,1227,25,25,25,25,25,1103","25,1,,,1103,1103,1103,1103,,1103,1103,1103,1103,,,,,1103,1103,,25,,",",,1103,,1103,1103,1103,,,1103,1103,997,997,997,997,997,997,,,,997,997",",,,997,,997,997,997,997,997,997,997,373,373,373,373,373,997,997,997","997,997,997,997,,,997,,,,,447,997,997,997,997,997,997,997,997,997,997","997,997,,997,997,997,,997,997,997,997,997,447,447,447,447,447,447,447","447,447,447,447,,447,447,,,447,447,,997,,,997,,,997,997,,,997,,997,447",",447,997,447,447,,447,447,447,447,447,997,447,,,,997,997,997,997,,997","997,997,997,,,,,997,997,,447,,447,,,997,,997,997,997,,,997,997,337,337","337,337,337,337,,,,337,337,,,,337,,337,337,337,337,337,337,337,334,334","334,334,334,337,337,337,337,337,337,337,,,337,,,,,692,337,337,337,337","337,337,337,337,337,337,337,337,,337,337,337,,337,337,337,337,337,692","692,692,692,692,692,692,692,692,692,692,,692,692,,,692,692,,337,,,337",",,337,337,,,337,,337,692,,692,337,692,692,,692,692,692,692,692,337,692",",,,337,337,337,337,,337,337,337,337,,,,,337,337,,692,,,,,337,,337,337","337,,,337,337,38,38,38,38,38,38,,,,38,38,,,,38,,38,38,38,38,38,38,38",",,,,,38,38,38,38,38,38,38,,,38,,,,,453,38,38,38,38,38,38,38,38,38,38","38,38,,38,38,38,,38,38,38,38,38,453,453,453,453,453,453,453,453,453","453,453,,453,453,,,453,453,,38,,,38,,,38,38,,,38,,38,453,,453,38,453","453,,453,453,453,453,453,38,453,,,,38,38,38,38,,38,38,38,38,,,,,38,38",",453,,,,,38,,38,38,38,,,38,38,642,642,642,642,642,642,,,,642,642,,,","642,,642,642,642,642,642,642,642,,,,,,642,642,642,642,642,642,642,,","642,,,,,723,642,642,642,642,642,642,642,642,642,642,642,642,,642,642","642,,642,642,642,642,642,723,723,723,723,723,723,723,723,723,723,723",",723,723,,,723,723,,642,,,642,,,642,642,,,642,,642,723,,723,642,723","723,,723,723,723,723,723,642,723,,,,642,642,642,642,,642,642,642,642",",,,,642,642,,723,,,,,642,,642,642,642,,,642,642,1068,1068,1068,1068","1068,1068,,,,1068,1068,,,,1068,,1068,1068,1068,1068,1068,1068,1068,",",,,,1068,1068,1068,1068,1068,1068,1068,,,1068,,,,,,1068,1068,1068,1068","1068,1068,1068,1068,1068,1068,1068,1068,,1068,1068,1068,,1068,1068,1068","1068,1068,817,817,817,817,817,817,817,817,817,817,817,,817,817,,,817","817,,1068,,,1068,,,1068,1068,,,1068,,1068,817,,817,1068,817,817,,817","817,817,817,817,1068,817,,,,1068,1068,1068,1068,,1068,1068,1068,1068",",,,,1068,1068,,817,,,,,1068,,1068,1068,1068,,,1068,1068,372,372,372","372,372,372,,,,372,372,,,,372,,372,372,372,372,372,372,372,,,,,,372","372,372,372,372,372,372,,,372,,,,,,372,372,372,372,372,372,372,372,372","372,372,372,,372,372,372,,372,372,372,372,372,874,874,874,874,874,874","874,874,874,874,874,,874,874,,,874,874,,372,,,372,,,372,372,,,372,,372","874,,874,372,874,874,,874,874,874,874,874,372,874,,,,372,372,372,372",",372,372,372,372,,,,,372,372,,874,,,,,372,,372,372,372,,,372,372,973","973,973,973,973,973,,,,973,973,,,,973,,973,973,973,973,973,973,973,",",,,,973,973,973,973,973,973,973,,,973,,,,,,973,973,973,973,973,973,973","973,973,973,973,973,,973,973,973,,973,973,973,973,973,317,317,317,317","317,317,317,317,317,317,317,,317,317,,,317,317,,973,,,973,,,973,973",",,973,,973,317,,317,973,317,317,,317,317,317,317,317,973,317,,,,973","973,973,973,,973,973,973,973,,,,,973,973,,317,,,,,973,,973,973,973,",",973,973,2,2,2,2,2,2,,,,2,2,,,,2,,2,2,2,2,2,2,2,,,,,,2,2,2,2,2,2,2,",",2,,,,,,2,2,2,2,2,2,2,2,2,2,2,2,,2,2,2,,2,2,2,2,2,550,550,550,550,550","550,550,550,550,550,550,,550,550,,,550,550,,2,,,2,,,2,2,,,2,,2,550,","550,2,550,550,,550,550,550,550,550,2,550,,,,2,2,2,2,,2,2,2,2,,,,,2,2","550,550,,,,,2,,2,2,2,,,2,2,230,230,230,230,230,230,,,,230,230,,,,230",",230,230,230,230,230,230,230,,,,,,230,230,230,230,230,230,230,,,230",",,,,,230,230,230,230,230,230,230,230,230,230,230,230,,230,230,230,,230","230,230,230,230,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067",",1067,1067,,,1067,1067,,230,,,230,,,230,230,,,230,,230,1067,,1067,230","1067,1067,,1067,1067,1067,1067,1067,230,1067,,,,230,230,230,230,,230","230,230,230,,,,,230,230,,1067,,,,,230,,230,230,230,,,230,230,342,342","342,342,342,342,,,,342,342,,,,342,,342,342,342,342,342,342,342,,,,,","342,342,342,342,342,342,342,,,342,,,,,,342,342,342,342,342,342,342,342","342,342,342,342,,342,342,342,,342,342,342,342,342,1034,1034,1034,1034","1034,1034,1034,1034,1034,1034,1034,,1034,1034,,,1034,1034,,342,,,342",",,342,342,,,342,,342,1034,,1034,342,1034,1034,,1034,1034,1034,1034,1034","342,1034,,,,342,342,342,342,,342,342,342,342,,,,,342,342,,1034,,,,,342",",342,342,342,,,342,342,253,253,253,253,253,253,,,,253,253,,,,253,,253","253,253,253,253,253,253,,,,,,253,253,253,253,253,253,253,,,253,,,,,","253,253,253,253,253,253,253,253,253,253,253,253,,253,253,253,,253,253","253,253,253,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,","1033,1033,,,1033,1033,,253,,,253,,,253,253,,,253,,253,1033,,1033,253","1033,1033,,1033,1033,1033,1033,1033,253,1033,,,,253,253,253,253,,253","253,253,253,,,,,253,253,,1033,,,,,253,,253,253,253,,,253,253,1013,1013","1013,1013,1013,1013,,,,1013,1013,,,,1013,,1013,1013,1013,1013,1013,1013","1013,,,,,,1013,1013,1013,1013,1013,1013,1013,,,1013,,,,,,1013,1013,1013","1013,1013,1013,1013,1013,1013,1013,1013,1013,,1013,1013,1013,,1013,1013","1013,1013,1013,1011,1011,1011,1011,1011,1011,1011,1011,1011,1011,1011",",1011,1011,,,1011,1011,,1013,,,1013,,,1013,1013,,,1013,,1013,1011,,1011","1013,1011,1011,,1011,1011,1011,1011,1011,1013,1011,,,,1013,1013,1013","1013,,1013,1013,1013,1013,,,,,1013,1013,,1011,,,,,1013,,1013,1013,1013",",,1013,1013,1098,1098,1098,1098,1098,1098,,,,1098,1098,,,,1098,,1098","1098,1098,1098,1098,1098,1098,,,,,,1098,1098,1098,1098,1098,1098,1098",",,1098,,,,,,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098",",1098,1098,1098,,1098,1098,1098,1098,1098,1010,1010,1010,1010,1010,1010","1010,1010,1010,1010,1010,,1010,1010,,,1010,1010,,1098,,,1098,,,1098","1098,,,1098,,1098,1010,,1010,1098,1010,1010,,1010,1010,1010,1010,1010","1098,1010,,,,1098,1098,1098,1098,,1098,1098,1098,1098,,,,,1098,1098",",1010,,,,,1098,,1098,1098,1098,,,1098,1098,1097,1097,1097,1097,1097","1097,,,,1097,1097,,,,1097,,1097,1097,1097,1097,1097,1097,1097,,,,,,1097","1097,1097,1097,1097,1097,1097,,,1097,,,,,,1097,1097,1097,1097,1097,1097","1097,1097,1097,1097,1097,1097,,1097,1097,1097,,1097,1097,1097,1097,1097","529,529,529,529,529,529,529,529,529,529,529,,529,529,,,529,529,,1097",",,1097,,,1097,1097,,546,1097,,1097,529,,529,1097,529,529,,529,529,529","529,529,1097,529,,,,1097,1097,1097,1097,,1097,1097,1097,1097,,,546,","1097,1097,546,546,,546,546,,1097,,1097,1097,1097,,,1097,1097,1147,1147","1147,1147,1147,1147,,,,1147,1147,,,,1147,,1147,1147,1147,1147,1147,1147","1147,,,,,,1147,1147,1147,1147,1147,1147,1147,547,1115,1147,1115,1115","1115,,1115,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147",",1147,1147,1147,,1147,1147,1147,1147,1147,604,,547,,,,547,547,1115,547","547,,,,,,604,604,,1147,,,1147,,,1147,1147,,,1147,,1147,604,,604,1147","604,604,,604,604,,,604,1147,604,,,,1147,1147,1147,1147,,1147,1147,1147","1147,,,,,1147,1147,,,,,,,1147,,1147,1147,1147,,,1147,1147,621,621,621","621,621,621,,,,621,621,,,,621,,621,621,621,621,621,621,621,,,,,,621","621,621,621,621,621,621,,,621,,,,,,621,621,621,621,621,621,621,621,621","621,621,621,,621,621,621,,621,621,621,621,621,364,364,364,364,364,364","364,364,364,364,364,,364,364,,,364,364,,621,,,621,,,621,621,,,621,,621","364,,364,621,364,364,,364,364,364,364,364,621,364,,,,621,621,621,621",",621,621,621,621,,,,,621,621,,,,,,,621,,621,621,621,,,621,621,892,892","892,892,892,892,,,,892,892,,,,892,,892,892,892,892,892,892,892,,,,,","892,892,892,892,892,892,892,,,892,,,,,,892,892,892,892,892,892,892,892","892,892,892,892,,892,892,892,,892,892,892,892,892,365,365,365,365,365","365,365,365,365,365,365,,365,365,,,365,365,,892,,,892,,,892,892,,,892",",892,365,,365,892,365,365,,365,365,365,365,365,892,365,,,,892,892,892","892,,892,892,892,892,,,,,892,892,,,,,,,892,,892,892,892,,,892,892,618","618,618,618,618,618,,,,618,618,,,,618,,618,618,618,618,618,618,618,",",,,,618,618,618,618,618,618,618,,,618,,,,,,618,618,618,618,618,618,618","618,618,618,618,618,,618,618,618,,618,618,618,618,618,551,,,,,,,,,,",",,,,,551,551,,618,,,618,,,618,618,,,618,,618,551,,551,618,551,551,,551","551,,,551,618,551,,,,618,618,618,618,,618,618,618,618,,,,,618,618,,",",,,,618,,618,618,618,,,618,618,1191,1191,1191,1191,1191,1191,,,,1191","1191,,,,1191,,1191,1191,1191,1191,1191,1191,1191,,,,,,1191,1191,1191","1191,1191,1191,1191,,,1191,,,,,,1191,1191,1191,1191,1191,1191,1191,1191","1191,1191,1191,1191,,1191,1191,1191,,1191,1191,1191,1191,1191,549,549","549,549,549,549,549,549,,549,549,,,,,,549,549,,1191,,,1191,,,1191,1191",",,1191,,1191,549,,549,1191,549,549,,549,549,549,549,549,1191,549,,,","1191,1191,1191,1191,,1191,1191,1191,1191,,,,,1191,1191,,,,,,,1191,,1191","1191,1191,,,1191,1191,135,135,135,135,135,135,,,,135,135,,,,135,,135","135,135,135,135,135,135,,,,,,135,135,135,135,135,135,135,,,135,,,,,","135,135,135,135,135,135,135,135,135,135,135,135,,135,135,135,,135,135","135,135,135,548,548,548,548,548,548,548,,,548,548,,,,,,548,548,,135",",,135,,,135,135,,,135,,135,548,,548,135,548,548,,548,548,548,548,548","135,548,,,,135,135,135,135,,135,135,135,135,,,,,135,135,,,,,,,135,,135","135,135,,,135,135,218,218,218,218,218,218,,,,218,218,,,,218,,218,218","218,218,218,218,218,,,,,,218,218,218,218,218,218,218,,,218,,,,,,218","218,218,218,218,218,218,218,218,218,218,218,,218,218,218,,218,218,218","218,218,545,545,545,545,545,545,545,,,545,545,,,,,,545,545,,218,,,218",",,218,218,,,218,,218,545,,545,218,545,545,,545,545,545,545,545,218,545",",,,218,218,218,218,,218,218,218,218,,,,,218,218,,,,,,,218,,218,218,218",",,218,218,846,846,846,846,846,846,,,,846,846,,,,846,,846,846,846,846","846,846,846,,,,,,846,846,846,846,846,846,846,,,846,,,,,,846,846,846","846,846,846,846,846,846,846,846,846,,846,846,846,,846,846,846,846,846","544,544,544,544,544,544,544,,,544,544,,,,,,544,544,,846,,,846,,,846","846,,,846,,846,544,,544,846,544,544,,544,544,544,544,544,846,544,,,","846,846,846,846,,846,846,846,846,,,,,846,846,,,,,,,846,,846,846,846",",,846,846,857,857,857,857,857,857,,,,857,857,,,,857,,857,857,857,857","857,857,857,,,,,,857,857,857,857,857,857,857,,,857,,,,,,857,857,857","857,857,857,857,857,857,857,857,857,,857,857,857,,857,857,857,857,857","543,543,543,543,543,543,543,,,543,543,,,,,,543,543,,857,,,857,,,857","857,,,857,,857,543,,543,857,543,543,,543,543,543,543,543,857,543,,,","857,857,857,857,,857,857,857,857,,,,,857,857,,,,,,,857,,857,857,857",",,857,857,388,388,388,388,388,388,,,,388,388,,,,388,,388,388,388,388","388,388,388,,,,,,388,388,388,388,388,388,388,,,388,,,,,,388,388,388","388,388,388,388,388,388,388,388,388,,388,388,388,,388,388,388,388,388","542,542,542,542,542,542,542,,,542,542,,,,,,542,542,,388,,,388,,,388","388,,,388,,388,542,,542,388,542,542,,542,542,542,542,542,388,542,,,","388,388,388,388,,388,388,388,388,,,,,388,388,,,,,,,388,,388,388,388",",,388,388,991,991,991,991,991,991,,,,991,991,,,,991,,991,991,991,991","991,991,991,,,,,,991,991,991,991,991,991,991,,,991,,,,,,991,991,991","991,991,991,991,991,991,991,991,991,,991,991,991,,991,991,991,991,991","541,541,541,541,541,541,541,,,541,541,,,,,,541,541,,991,,,991,,,991","991,,,991,,991,541,,541,991,541,541,,541,541,541,541,541,991,541,,,","991,991,991,991,,991,991,991,991,,,,,991,991,,,,920,920,920,991,920","991,991,991,920,920,991,991,,920,,920,920,920,920,920,920,920,,,,,,920","920,920,920,920,920,920,,,920,,,,,,,920,,,920,920,920,920,920,920,920","920,,920,920,920,,920,920,920,920,920,540,540,540,540,540,540,540,,","540,540,,,,,,540,540,,920,,,920,,,920,920,,,920,,,540,,540,920,540,540",",540,540,540,540,540,920,540,,,,920,920,920,920,,920,920,920,920,,,",",920,920,,,,921,921,921,920,921,920,920,920,921,921,920,920,,921,,921","921,921,921,921,921,921,,,,,,921,921,921,921,921,921,921,,,921,,,,,",",921,,,921,921,921,921,921,921,921,921,,921,921,921,,921,921,921,921","921,530,530,530,530,530,530,530,530,530,530,530,,530,530,,,530,530,","921,,,921,,,921,921,,,921,,,530,,530,921,530,530,,530,530,530,530,530","921,530,,,,921,921,921,921,,921,921,921,921,,,,,921,921,,,,922,922,922","921,922,921,921,921,922,922,921,921,,922,,922,922,922,922,922,922,922",",,,,,922,922,922,922,922,922,922,,,922,,,,,,,922,,,922,922,922,922,922","922,922,922,,922,922,922,,922,922,922,922,922,538,,,,,,,,,,,,,,,,538","538,,922,,,922,,,922,922,,,922,,,538,,538,922,538,538,,538,538,,,,922",",,,,922,922,922,922,,922,922,922,922,,,,,922,922,,,,733,733,733,922","733,922,922,922,733,733,922,922,,733,,733,733,733,733,733,733,733,,",",,,733,733,733,733,733,733,733,,,733,,,,,,,733,,,733,733,733,733,733","733,733,733,,733,733,733,,733,733,733,733,733,539,,,,,,,,,,,,,,,,539","539,,733,,,733,,,733,733,,,733,,,539,,,733,539,539,,539,539,,,,733,",",,,733,733,733,733,,733,733,733,733,,,,,733,733,,,,732,732,732,733,732","733,733,733,732,732,733,733,,732,,732,732,732,732,732,732,732,,,,,,732","732,732,732,732,732,732,,,732,,,,,,,732,,,732,732,732,732,732,732,732","732,,732,732,732,,732,732,732,732,732,537,,,,,,,,,,,,,,,,537,537,,732",",,732,,,732,732,,,732,,,537,,537,732,537,537,,537,537,,,,732,,,,,732","732,732,732,,732,732,732,732,,,,,732,732,,,,,,,732,,732,732,732,,,732","732,333,333,333,333,333,,,,333,333,,,,333,,333,333,333,333,333,333,333",",,,,,333,333,333,333,333,333,333,,,333,,,,,,333,333,,333,333,333,333","333,333,333,333,333,,333,333,333,,333,333,333,333,333,,,,,,,,,,,,,,",",,,,,333,,,333,,,333,333,,,333,,333,,,,333,,,,,,,,,333,,,,,333,333,333","333,,333,333,333,333,,,,,333,333,,,,265,265,265,333,265,333,333,333","265,265,333,333,,265,,265,265,265,265,265,265,265,,,,,,265,265,265,265","265,265,265,,,265,,,,,,,265,,,265,265,265,265,265,265,265,265,,265,265","265,,265,265,265,265,265,,,,,,,,,,,,,,,,,,,,265,,,265,,,265,265,,,265",",,,,,265,,,,,,,,,265,,,,,265,265,265,265,,265,265,265,265,,,,,265,265",",,,264,264,264,265,264,265,265,265,264,264,265,265,,264,,264,264,264","264,264,264,264,,,,,,264,264,264,264,264,264,264,,,264,,,,,,,264,,,264","264,264,264,264,264,264,264,,264,264,264,,264,264,264,264,264,,,,,,",",,,,,,,,,,,,,264,,,264,,,264,264,,,264,,,,,,264,,,,,,,,,264,,,,,264","264,264,264,,264,264,264,264,,,,,264,264,,,,263,263,263,264,263,264","264,264,263,263,264,264,,263,,263,263,263,263,263,263,263,,,,,,263,263","263,263,263,263,263,,,263,,,,,,,263,,,263,263,263,263,263,263,263,263",",263,263,263,,263,263,263,263,263,,,,,,,,,,,,,,,,,,,,263,,,263,,,263","263,,,263,,,,,,263,,,,,,,,,263,,,,,263,263,263,263,,263,263,263,263",",,,,263,263,,,,262,262,262,263,262,263,263,263,262,262,263,263,,262",",262,262,262,262,262,262,262,,,,,,262,262,262,262,262,262,262,,,262",",,,,,,262,,,262,262,262,262,262,262,262,262,,262,262,262,,262,262,262","262,262,,,,,,,,,,,,,,,,,,,,262,,,262,,,262,262,,,262,,,,,,262,,,,,,",",,262,,,,,262,262,262,262,,262,262,262,262,,,,,262,262,,,,261,261,261","262,261,262,262,262,261,261,262,262,,261,,261,261,261,261,261,261,261",",,,,,261,261,261,261,261,261,261,,,261,,,,,,,261,,,261,261,261,261,261","261,261,261,,261,261,261,,261,261,261,261,261,,,,,,,,,,,,,,,,,,,,261",",,261,,,261,261,,,261,,,,,,261,,,,,,,,,261,,,,,261,261,261,261,,261","261,261,261,,,,,261,261,,,,708,708,708,261,708,261,261,261,708,708,261","261,,708,,708,708,708,708,708,708,708,,,,,,708,708,708,708,708,708,708",",,708,,,,,,,708,,,708,708,708,708,708,708,708,708,,708,708,708,,708","708,708,708,708,,,,,,,,,,,,,,,,,,,,708,,,708,,,708,708,,,708,,,,,,708",",,,,,,,,708,,,,,708,708,708,708,,708,708,708,708,,,,,708,708,,,,260","260,260,708,260,708,708,708,260,260,708,708,,260,,260,260,260,260,260","260,260,,,,,,260,260,260,260,260,260,260,,,260,,,,,,,260,,,260,260,260","260,260,260,260,260,,260,260,260,,260,260,260,260,260,,,,,,,,,,,,,,",",,,,,260,,,260,,,260,260,,,260,,,,,,260,,,,,,,,,260,,,,,260,260,260","260,,260,260,260,260,,,,,260,260,,,,694,694,694,260,694,260,260,260","694,694,260,260,,694,,694,694,694,694,694,694,694,,,,,,694,694,694,694","694,694,694,,,694,,,,,,,694,,,694,694,694,694,694,694,694,694,,694,694","694,,694,694,694,694,694,,,,,,,,,,,,,,,,,,,,694,,,694,,,694,694,,,694",",694,,,,694,,,,,,,,,694,,,,,694,694,694,694,,694,694,694,694,,,,,694","694,,,,259,259,259,694,259,694,694,694,259,259,694,694,,259,,259,259","259,259,259,259,259,,,,,,259,259,259,259,259,259,259,,,259,,,,,,,259",",,259,259,259,259,259,259,259,259,,259,259,259,,259,259,259,259,259",",,,,,,,,,,,,,,,,,,,259,,,259,,,259,259,,,259,,,,,,259,,,,,,,,,259,,",",,259,259,259,259,,259,259,259,259,,,,,259,259,,,,258,258,258,259,258","259,259,259,258,258,259,259,,258,,258,258,258,258,258,258,258,,,,,,258","258,258,258,258,258,258,,,258,,,,,,,258,,,258,258,258,258,258,258,258","258,,258,258,258,,258,258,258,258,258,,,,,,,,,,,,,,,,,,,,258,,,258,",",258,258,,,258,,,,,,258,,,,,,,,,258,,,,,258,258,258,258,,258,258,258","258,,,,,258,258,,,,257,257,257,258,257,258,258,258,257,257,258,258,","257,,257,257,257,257,257,257,257,,,,,,257,257,257,257,257,257,257,,","257,,,,,,,257,,,257,257,257,257,257,257,257,257,,257,257,257,,257,257","257,257,257,,,,,,,,,,,,,,,,,,,,257,,,257,,,257,257,,,257,,,,,,257,,",",,,,,,257,,,,,257,257,257,257,,257,257,257,257,,,,,257,257,,,,688,688","688,257,688,257,257,257,688,688,257,257,,688,,688,688,688,688,688,688","688,,,,,,688,688,688,688,688,688,688,,,688,,,,,,,688,,,688,688,688,688","688,688,688,688,,688,688,688,,688,688,688,688,688,,,,,,,,,,,,,,,,,,",",688,,,688,,,688,688,,,688,,,,,,688,,,,,,,,,688,,,,,688,688,688,688",",688,688,688,688,,,,,688,688,,,,687,687,687,688,687,688,688,688,687","687,688,688,,687,,687,687,687,687,687,687,687,,,,,,687,687,687,687,687","687,687,,,687,,,,,,,687,,,687,687,687,687,687,687,687,687,,687,687,687",",687,687,687,687,687,,,,,,,,,,,,,,,,,,,,687,,,687,,,687,687,,,687,,",",,,687,,,,,,,,,687,,,,,687,687,687,687,,687,687,687,687,,,,,687,687",",,,,,,687,,687,687,687,32,,687,687,,,,32,32,32,,,32,32,32,,32,,,,,,",",32,32,32,32,,,,,,,,,32,32,,32,32,32,32,32,,,,,,,,,,,,,,,,,,,,,,,32","32,32,32,32,32,32,32,32,32,32,32,32,32,,,32,32,32,,,32,,32,32,,,32,32",",32,,32,,32,,32,32,,32,32,32,32,32,,32,32,32,,,,,,,,,,,,,,32,,,32,32",",32,,32,683,683,683,,683,,32,,683,683,,,,683,,683,683,683,683,683,683","683,,,,,,683,683,683,683,683,683,683,,,683,,,,,,,683,,,683,683,683,683","683,683,683,683,,683,683,683,,683,683,683,683,683,,,,,,,,,,,,,,,,,,",",683,,,683,,,683,683,,,683,,,,,,683,,,,,,,,,683,,,,,683,683,683,683",",683,683,683,683,,,,,683,683,,,,682,682,682,683,682,683,683,683,682","682,683,683,,682,,682,682,682,682,682,682,682,,,,,,682,682,682,682,682","682,682,,,682,,,,,,,682,,,682,682,682,682,682,682,682,682,,682,682,682",",682,682,682,682,682,,,,,,,,,,,,,,,,,,,,682,,,682,,,682,682,,,682,,",",,,682,,,,,,,,,682,,,,,682,682,682,682,,682,682,682,682,,,,,682,682",",,,681,681,681,682,681,682,682,682,681,681,682,682,,681,,681,681,681","681,681,681,681,,,,,,681,681,681,681,681,681,681,,,681,,,,,,,681,,,681","681,681,681,681,681,681,681,681,681,681,681,,681,681,681,681,681,,,",",,,,,,,,,,,,,,,,681,,,681,,,681,681,,,681,,,,681,,681,,,681,,,,,,681",",,,,681,681,681,681,,681,681,681,681,,,,,681,681,,,,956,956,956,681","956,681,681,681,956,956,681,681,,956,,956,956,956,956,956,956,956,,",",,,956,956,956,956,956,956,956,,,956,,,,,,,956,,,956,956,956,956,956","956,956,956,,956,956,956,,956,956,956,956,956,,,,,,,,,,,,,,,,,,,,956",",,956,,,956,956,,,956,,,,,,956,,,,,,,,,956,,,,,956,956,956,956,,956","956,956,956,,,,,956,956,,,,962,962,962,956,962,956,956,956,962,962,956","956,,962,,962,962,962,962,962,962,962,,,,,,962,962,962,962,962,962,962",",,962,,,,,,,962,,,962,962,962,962,962,962,962,962,,962,962,962,,962","962,962,962,962,,,,,,,,,,,,,,,,,,,,962,,,962,,,962,962,,,962,,,,,,962",",,,,,,,,962,,,,,962,962,962,962,,962,962,962,962,,,,,962,962,,,,,,,962",",962,962,962,33,,962,962,,,,33,33,33,,,33,33,33,,33,,,,,,,,33,,33,33",",,,,,,,,33,33,,33,33,33,33,33,,,,,,,,,,,,,,,,,,,,,,,33,33,33,33,33,33","33,33,33,33,33,33,33,33,,,33,33,33,,,33,,33,33,,,33,33,,33,,33,,33,","33,33,,33,33,33,33,33,,33,,33,,,,,,,,,,,,,,33,,,33,33,,33,,33,34,34","34,,34,,33,,34,34,,,,34,,34,34,34,34,34,34,34,,,,,,34,34,34,34,34,34","34,,,34,,,,,,,34,,,34,34,34,34,34,34,34,34,34,34,34,34,,34,34,34,34","34,,,,,,,,,,,,,,,,,,,,34,,,34,,,34,34,,,34,,34,,34,,34,,,34,,,,,,34",",,,,34,34,34,34,,34,34,34,34,,,,,34,34,,,,680,680,680,34,680,34,34,34","680,680,34,34,,680,,680,680,680,680,680,680,680,,,,,,680,680,680,680","680,680,680,,,680,,,,,,,680,,,680,680,680,680,680,680,680,680,680,680","680,680,,680,680,680,680,680,,,,,,,,,,,,,,,,,,,,680,,,680,,,680,680",",,680,,680,,680,,680,,,680,,,,,,680,,,,,680,680,680,680,,680,680,680","680,,,,,680,680,,,,677,677,677,680,677,680,680,680,677,677,680,680,","677,,677,677,677,677,677,677,677,,,,,,677,677,677,677,677,677,677,,","677,,,,,,,677,,,677,677,677,677,677,677,677,677,,677,677,677,,677,677","677,677,677,,,,,,,,,,,,,,,,,,,,677,,,677,,,677,677,,,677,,,,,,677,,",",,,,,,677,,,,,677,677,677,677,,677,677,677,677,,,,,677,677,,,,,,,677",",677,677,677,,,677,677,676,676,676,676,676,,,,676,676,,,,676,,676,676","676,676,676,676,676,,,,,,676,676,676,676,676,676,676,,,676,,,,,,676","676,,676,676,676,676,676,676,676,676,676,,676,676,676,,676,676,676,676","676,,,,,,,,,,,,,,,,,,,,676,,,676,,,676,676,,,676,,676,,,,676,,,,,,,",",676,,,,,676,676,676,676,,676,676,676,676,,,,,676,676,,,,985,985,985","676,985,676,676,676,985,985,676,676,,985,,985,985,985,985,985,985,985",",,,,,985,985,985,985,985,985,985,,,985,,,,,,,985,,,985,985,985,985,985","985,985,985,,985,985,985,,985,985,985,985,985,,,,,,,,,,,,,,,,,,,,985",",,985,,,985,985,,,985,,,,,,985,,,,,,,,,985,,,,,985,985,985,985,,985","985,985,985,,,,,985,985,,,,673,673,673,985,673,985,985,985,673,673,985","985,,673,,673,673,673,673,673,673,673,,,,,,673,673,673,673,673,673,673",",,673,,,,,,,673,,,673,673,673,673,673,673,673,673,673,673,673,673,,673","673,673,673,673,,,,,,,,,,,,,,,,,,,,673,,,673,,,673,673,,,673,,673,,673",",673,,,673,,,,,,673,,,,,673,673,673,673,,673,673,673,673,,,,,673,673",",,,672,672,672,673,672,673,673,673,672,672,673,673,,672,,672,672,672","672,672,672,672,,,,,,672,672,672,672,672,672,672,,,672,,,,,,,672,,,672","672,672,672,672,672,672,672,,672,672,672,,672,672,672,672,672,,,,,,",",,,,,,,,,,,,,672,,,672,,,672,672,,,672,,,,,,672,,,,,,,,,672,,,,,672","672,672,672,,672,672,672,672,,,,,672,672,,,,990,990,990,672,990,672","672,672,990,990,672,672,,990,,990,990,990,990,990,990,990,,,,,,990,990","990,990,990,990,990,,,990,,,,,,,990,,,990,990,990,990,990,990,990,990",",990,990,990,,990,990,990,990,990,,,,,,,,,,,,,,,,,,,,990,,,990,,,990","990,,,990,,990,,,,990,,,,,,,,,990,,,,,990,990,990,990,,990,990,990,990",",,,,990,990,,,,671,671,671,990,671,990,990,990,671,671,990,990,,671",",671,671,671,671,671,671,671,,,,,,671,671,671,671,671,671,671,,,671",",,,,,,671,,,671,671,671,671,671,671,671,671,,671,671,671,,671,671,671","671,671,,,,,,,,,,,,,,,,,,,,671,,,671,,,671,671,,,671,,671,,,,671,,,",",,,,,671,,,,,671,671,671,671,,671,671,671,671,,,,,671,671,,,,,,,671",",671,671,671,,,671,671,669,669,669,669,669,,,,669,669,,,,669,,669,669","669,669,669,669,669,,,,,,669,669,669,669,669,669,669,,,669,,,,,,669","669,,669,669,669,669,669,669,669,669,669,,669,669,669,,669,669,669,669","669,,,,,,,,,,,,,,,,,,,,669,,,669,,,669,669,,,669,,669,,,,669,,,,,,,",",669,,,,,669,669,669,669,,669,669,669,669,,,,,669,669,,,,35,35,35,669","35,669,669,669,35,35,669,669,,35,,35,35,35,35,35,35,35,,,,,,35,35,35","35,35,35,35,,,35,,,,,,,35,,,35,35,35,35,35,35,35,35,35,35,35,35,,35","35,35,35,35,,,,,,,,,,,,,,,,,,,,35,,,35,,,35,35,,,35,,35,,35,,35,,,35",",,,,,35,,,,,35,35,35,35,,35,35,35,35,,,,,35,35,,,,250,250,250,35,250","35,35,35,250,250,35,35,,250,,250,250,250,250,250,250,250,,,,,,250,250","250,250,250,250,250,,,250,,,,,,,250,,,250,250,250,250,250,250,250,250",",250,250,250,,250,250,250,250,250,,,,,,,,,,,,,,,,,,,,250,,,250,,,250","250,,,250,,,,,,250,,,,,,,,,250,,,,,250,250,250,250,,250,250,250,250",",,,,250,250,,,,36,36,36,250,36,250,250,250,36,36,250,250,,36,,36,36","36,36,36,36,36,,,,,,36,36,36,36,36,36,36,,,36,,,,,,,36,,,36,36,36,36","36,36,36,36,36,36,36,36,,36,36,36,36,36,,,,,,,,,,,,,,,,,,,,36,,,36,",",36,36,,,36,,36,,36,,36,,,36,,,,,,36,,,,,36,36,36,36,,36,36,36,36,,",",,36,36,,,,638,638,638,36,638,36,36,36,638,638,36,36,,638,,638,638,638","638,638,638,638,,,,,,638,638,638,638,638,638,638,,,638,,,,,,,638,,,638","638,638,638,638,638,638,638,638,638,638,638,,638,638,638,638,638,,,",",,,,,,,,,,,,,,,,638,,,638,,,638,638,,,638,,638,,638,,638,,,638,,,,,","638,,,,,638,638,638,638,,638,638,638,638,,,,,638,638,,,,1009,1009,1009","638,1009,638,638,638,1009,1009,638,638,,1009,,1009,1009,1009,1009,1009","1009,1009,,,,,,1009,1009,1009,1009,1009,1009,1009,,,1009,,,,,,,1009",",,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,,1009","1009,1009,1009,1009,,,,,,,,,,,,,,,,,,,,1009,,,1009,,,1009,1009,,,1009",",,,1009,,1009,,,1009,,,,,,1009,,,,,1009,1009,1009,1009,,1009,1009,1009","1009,,,,,1009,1009,,,,628,628,628,1009,628,1009,1009,1009,628,628,1009","1009,,628,,628,628,628,628,628,628,628,,,,,,628,628,628,628,628,628","628,,,628,,,,,,,628,,,628,628,628,628,628,628,628,628,628,628,628,628",",628,628,628,628,628,,,,,,,,,,,,,,,,,,,,628,,,628,,,628,628,,,628,,628",",628,,628,,,628,,,,,,628,,,,,628,628,628,628,,628,628,628,628,,,,,628","628,,,,627,627,627,628,627,628,628,628,627,627,628,628,,627,,627,627","627,627,627,627,627,,,,,,627,627,627,627,627,627,627,,,627,,,,,,,627",",,627,627,627,627,627,627,627,627,,627,627,627,,627,627,627,627,627",",,,,,,,,,,,,,,,,,,,627,,,627,,,627,627,,,627,,627,,,,627,,,,,,,,,627",",,,,627,627,627,627,,627,627,627,627,,,,,627,627,,,,818,818,818,627","818,627,627,627,818,818,627,627,,818,,818,818,818,818,818,818,818,,",",,,818,818,818,818,818,818,818,,,818,,,,,,,818,,,818,818,818,818,818","818,818,818,,818,818,818,,818,818,818,818,818,,,,,,,,,,,,,,,,,,,,818",",,818,,,818,818,,,818,,,,,,818,,,,,,,,,818,,,,,818,818,818,818,,818","818,818,818,,,,,818,818,,,,614,614,614,818,614,818,818,818,614,614,818","818,,614,,614,614,614,614,614,614,614,,,,,,614,614,614,614,614,614,614",",,614,,,,,,,614,,,614,614,614,614,614,614,614,614,614,614,614,614,,614","614,614,614,614,,,,,,,,,,,,,,,,,,,,614,,,614,,,614,614,,,614,,,,,,614",",,614,,,,,,614,,,,,614,614,614,614,,614,614,614,614,,,,,614,614,,,,611","611,611,614,611,614,614,614,611,611,614,614,,611,,611,611,611,611,611","611,611,,,,,,611,611,611,611,611,611,611,,,611,,,,,,,611,,,611,611,611","611,611,611,611,611,611,611,611,611,,611,611,611,611,611,,,,,,,,,,,",",,,,,,,,611,,,611,,,611,611,,,611,,611,,,,611,,,611,,,,,,611,,,,,611","611,611,611,,611,611,611,611,,,,,611,611,,,,239,239,239,611,239,611","611,611,239,239,611,611,,239,,239,239,239,239,239,239,239,,,,,,239,239","239,239,239,239,239,,,239,,,,,,,239,,,239,239,239,239,239,239,239,239",",239,239,239,,239,239,239,239,239,,,,,,,,,,,,,,,,,,,,239,,,239,,,239","239,,,239,,,,,,239,,,,,,,,,239,,,,,239,239,239,239,,239,239,239,239",",,,,239,239,239,,,605,605,605,239,605,239,239,239,605,605,239,239,,605",",605,605,605,605,605,605,605,,,,,,605,605,605,605,605,605,605,,,605",",,,,,,605,,,605,605,605,605,605,605,605,605,,605,605,605,,605,605,605","605,605,,,,,,,,,,,,,,,,,,,,605,,,605,,,605,605,,,605,,,,,,605,,,,,,",",,605,,,,,605,605,605,605,,605,605,605,605,,,,,605,605,,,,1035,1035","1035,605,1035,605,605,605,1035,1035,605,605,,1035,,1035,1035,1035,1035","1035,1035,1035,,,,,,1035,1035,1035,1035,1035,1035,1035,,,1035,,,,,,","1035,,,1035,1035,1035,1035,1035,1035,1035,1035,,1035,1035,1035,,1035","1035,1035,1035,1035,,,,,,,,,,,,,,,,,,,,1035,,,1035,,,1035,1035,,,1035",",,,,,1035,,,,,,,,,1035,,,,,1035,1035,1035,1035,,1035,1035,1035,1035",",,,,1035,1035,,,,603,603,603,1035,603,1035,1035,1035,603,603,1035,1035",",603,,603,603,603,603,603,603,603,,,,,,603,603,603,603,603,603,603,",",603,,,,,,,603,,,603,603,603,603,603,603,603,603,,603,603,603,,603,603","603,603,603,,,,,,,,,,,,,,,,,,,,603,,,603,,,603,603,,,603,,,,,,603,,",",,,,,,603,,,,,603,603,603,603,,603,603,603,603,,,,,603,603,,,,600,600","600,603,600,603,603,603,600,600,603,603,,600,,600,600,600,600,600,600","600,,,,,,600,600,600,600,600,600,600,,,600,,,,,,,600,,,600,600,600,600","600,600,600,600,,600,600,600,,600,600,600,600,600,,,,,,,,,,,,,,,,,,",",600,,,600,,,600,600,,,600,,,,,,600,,,,,,,,,600,,,,,600,600,600,600",",600,600,600,600,,,,,600,600,,,,238,238,238,600,238,600,600,600,238","238,600,600,,238,,238,238,238,238,238,238,238,,,,,,238,238,238,238,238","238,238,,,238,,,,,,,238,,,238,238,238,238,238,238,238,238,,238,238,238",",238,238,238,238,238,,,,,,,,,,,,,,,,,,,,238,,,238,,,238,238,,,238,,",",,,238,,,,,,,,,238,,,,,238,238,238,238,,238,238,238,238,,,,,238,238",",,,237,237,237,238,237,238,238,238,237,237,238,238,,237,,237,237,237","237,237,237,237,,,,,,237,237,237,237,237,237,237,,,237,,,,,,,237,,,237","237,237,237,237,237,237,237,,237,237,237,,237,237,237,237,237,,,,,,",",,,,,,,,,,,,,237,,,237,,,237,237,,,237,,,,,,237,,,,,,,,,237,,,,,237","237,237,237,,237,237,237,237,,,,,237,237,,,,590,590,590,237,590,237","237,237,590,590,237,237,,590,,590,590,590,590,590,590,590,,,,,,590,590","590,590,590,590,590,,,590,,,,,,,590,,,590,590,590,590,590,590,590,590","590,590,590,590,,590,590,590,590,590,,,,,,,,,,,,,,,,,,,,590,,,590,,","590,590,,,590,,590,,590,,590,,,590,,,,,,590,,,,,590,590,590,590,,590","590,590,590,,,,,590,590,,,,,,,590,,590,590,590,,,590,590,580,580,580","580,580,,,,580,580,,,,580,,580,580,580,580,580,580,580,,,,,,580,580","580,580,580,580,580,,,580,,,,,,580,580,580,580,580,580,580,580,580,580","580,580,,580,580,580,,580,580,580,580,580,,,,,,,,,,,,,,,,,,,,580,,,580",",,580,580,,,580,,580,,,,580,,,,,,,,,580,,,,,580,580,580,580,,580,580","580,580,,,,,580,580,,,,,,580,580,,580,580,580,,,580,580,574,574,574",",574,,,,574,574,,,,574,,574,574,574,574,574,574,574,,,,,,574,574,574","574,574,574,574,,,574,,,,,,,574,,,574,574,574,574,574,574,574,574,,574","574,574,,574,574,574,574,574,,,,,,,,,,,,,,,,,,,,574,,,574,,,574,574",",,574,,,,,,574,,,,,,,,,574,,,,,574,574,574,574,,574,574,574,574,,,,","574,574,,,,369,369,369,574,369,574,574,574,369,369,574,574,,369,,369","369,369,369,369,369,369,,,,,,369,369,369,369,369,369,369,,,369,,,,,",",369,,,369,369,369,369,369,369,369,369,,369,369,369,,369,369,369,369","369,,,,,,,,,,,,,,,,,,,,369,,,369,,,369,369,,,369,,,,,,369,,,,,,,,,369",",,,,369,369,369,369,,369,369,369,369,,,,,369,369,,,,46,46,46,369,46","369,369,369,46,46,369,369,,46,,46,46,46,46,46,46,46,,,,,,46,46,46,46","46,46,46,,,46,,,,,,,46,,,46,46,46,46,46,46,46,46,,46,46,46,,46,46,46","46,46,,,,,,,,,,,,,,,,,,,,46,,,46,,,46,46,,,46,,,,,,46,,,,,,,,,46,,,",",46,46,46,46,,46,46,46,46,,,,,46,46,,,,572,572,572,46,572,46,46,46,572","572,46,46,,572,,572,572,572,572,572,572,572,,,,,,572,572,572,572,572","572,572,,,572,,,,,,,572,,,572,572,572,572,572,572,572,572,572,572,572","572,,572,572,572,572,572,,,,,,,,,,,,,,,,,,,,572,,,572,,,572,572,,,572",",,,572,,572,,,572,,,,,,572,,,,,572,572,572,572,,572,572,572,572,,,,","572,572,,,,570,570,570,572,570,572,572,572,570,570,572,572,,570,,570","570,570,570,570,570,570,,,,,,570,570,570,570,570,570,570,,,570,,,,,",",570,,,570,570,570,570,570,570,570,570,570,570,570,570,,570,570,570","570,570,,,,,,,,,,,,,,,,,,,,570,,,570,,,570,570,,,570,,570,,570,,570",",,570,,,,,,570,,,,,570,570,570,570,,570,570,570,570,,,,,570,570,,,,47","47,47,570,47,570,570,570,47,47,570,570,,47,,47,47,47,47,47,47,47,,,",",,47,47,47,47,47,47,47,,,47,,,,,,,47,,,47,47,47,47,47,47,47,47,,47,47","47,,47,47,47,47,47,,,,,,,,,,,,,,,,,,,,47,,,47,,,47,47,,,47,,,,,,47,",",,,,,,,47,,,,,47,47,47,47,,47,47,47,47,,,,,47,47,,,,560,560,560,47,560","47,47,47,560,560,47,47,,560,,560,560,560,560,560,560,560,,,,,,560,560","560,560,560,560,560,,,560,,,,,,,560,,,560,560,560,560,560,560,560,560",",560,560,560,,560,560,560,560,560,,,,,,,,,,,,,,,,,,,,560,,,560,,,560","560,,,560,,,,,,560,,,,,,,,,560,,,,,560,560,560,560,,560,560,560,560",",,,,560,560,,,,49,49,49,560,49,560,560,560,49,49,560,560,,49,,49,49","49,49,49,49,49,,,,,,49,49,49,49,49,49,49,,,49,,,,,,,49,,,49,49,49,49","49,49,49,49,,49,49,49,,49,49,49,49,49,,,,,,,,,,,,,,,,,,,,49,,,49,,,49","49,,,49,,,,,,49,,,,,,,,,49,,,,,49,49,49,49,,49,49,49,49,,,,,49,49,,",",,,,49,,49,49,49,555,,49,49,,,,555,555,555,,,555,555,555,703,555,703","703,703,703,703,,,555,555,555,,,,703,,,,,,555,555,,555,555,555,555,555",",701,,701,701,701,701,701,703,,,,,,,,701,703,703,703,703,,,,703,,1140",",1140,1140,1140,1140,1140,555,,,,,701,,555,1140,,,,555,555,701,701,701","701,,,,701,,,,,,,,,1140,703,,,,555,555,,,,,1140,1140,,,,1140,,,,555",",,555,,283,283,283,555,283,,701,,283,283,555,,,283,,283,283,283,283","283,283,283,,,,,,283,283,283,283,283,283,283,,,283,,,,,,,283,,,283,283","283,283,283,283,283,283,,283,283,283,,283,283,283,283,283,,,,,,,,,,",",,,,,,,,,283,,,283,,,283,283,,,283,,,,,,283,,,,,,,,,283,,,,,283,283","283,283,,283,283,283,283,,,,,283,283,,,,224,224,224,283,224,283,283","283,224,224,283,283,,224,,224,224,224,224,224,224,224,,,,,,224,224,224","224,224,224,224,,,224,,,,,,,224,,,224,224,224,224,224,224,224,224,224","224,224,224,,224,224,224,224,224,,,,,,,,,,,,,,,,,,,,224,,,224,,,224","224,,,224,,224,,224,,224,,,224,,,,,,224,,,,,224,224,224,224,,224,224","224,224,,,,,224,224,,,,223,223,223,224,223,224,224,224,223,223,224,224",",223,,223,223,223,223,223,223,223,,,,,,223,223,223,223,223,223,223,",",223,,,,,,,223,,,223,223,223,223,223,223,223,223,,223,223,223,,223,223","223,223,223,,,,,,,,,,,,,,,,,,,,223,,,223,,,223,223,,,223,,,,,,223,,",",,,,,,223,,,,,223,223,223,223,,223,223,223,223,,,,,223,223,,,,50,50","50,223,50,223,223,223,50,50,223,223,,50,,50,50,50,50,50,50,50,,,,,,50","50,50,50,50,50,50,,,50,,,,,,,50,,,50,50,50,50,50,50,50,50,,50,50,50",",50,50,50,50,50,,,,,,,,,,,,,,,,,,,,50,,,50,,,50,50,,,50,,,,,,50,,,,",",,,,50,,,,,50,50,50,50,,50,50,50,50,,,,,50,50,,,,222,222,222,50,222","50,50,50,222,222,50,50,,222,,222,222,222,222,222,222,222,,,,,,222,222","222,222,222,222,222,,,222,,,,,,,222,,,222,222,222,222,222,222,222,222",",222,222,222,,222,222,222,222,222,,,,,,,,,,,,,,,,,,,,222,,,222,,,222","222,,,222,,,,,,222,,,,,,,,,222,,,,,222,222,222,222,,222,222,222,222",",,,,222,222,,,,72,72,72,222,72,222,222,222,72,72,222,222,,72,,72,72","72,72,72,72,72,,,,,,72,72,72,72,72,72,72,,,72,,,,,,,72,,,72,72,72,72","72,72,72,72,,72,72,72,,72,72,72,72,72,,,,,,,,,,,,,,,,,,,,72,,,72,,,72","72,,,72,,,,,,72,,,,,,,,,72,,,,,72,72,72,72,,72,72,72,72,,,,,72,72,,",",71,71,71,72,71,72,72,72,71,71,72,72,,71,,71,71,71,71,71,71,71,,,,,","71,71,71,71,71,71,71,,,71,,,,,,,71,,,71,71,71,71,71,71,71,71,,71,71","71,,71,71,71,71,71,,,,,,,,,,,,,,,,,,,,71,,,71,,,71,71,,,71,,,,,,71,",",,,,,,,71,,,,,71,71,71,71,,71,71,71,71,,,,,71,71,,,,436,436,436,71,436","71,71,71,436,436,71,71,,436,,436,436,436,436,436,436,436,,,,,,436,436","436,436,436,436,436,,,436,,,,,,,436,,,436,436,436,436,436,436,436,436",",436,436,436,,436,436,436,436,436,,,,,,,,,,,,,,,,,,,,436,,,436,,,436","436,,,436,,,,,,436,,,,,,,,,436,,,,,436,436,436,436,,436,436,436,436",",,,,436,436,,,,68,68,68,436,68,436,436,436,68,68,436,436,,68,,68,68","68,68,68,68,68,,,,,,68,68,68,68,68,68,68,,,68,,,,,,,68,,,68,68,68,68","68,68,68,68,68,68,68,68,,68,68,68,68,68,,,,,,,,,,,,,,,,,,,,68,,,68,",",68,68,,,68,,,,,,68,,,68,,,,,,68,,,,,68,68,68,68,,68,68,68,68,,,,,68","68,,,,407,407,407,68,407,68,68,68,407,407,68,68,,407,,407,407,407,407","407,407,407,,,,,,407,407,407,407,407,407,407,,,407,,,,,,,407,,,407,407","407,407,407,407,407,407,,407,407,407,,407,407,407,407,407,,,,,,,,,,",",,,,,,,,,407,,,407,,,407,407,,,407,,,,,,407,,,,,,,,,407,,,,,407,407","407,407,,407,407,407,407,,,,,407,407,,,,847,847,847,407,847,407,407","407,847,847,407,407,,847,,847,847,847,847,847,847,847,,,,,,847,847,847","847,847,847,847,,,847,,,,,,,847,,,847,847,847,847,847,847,847,847,,847","847,847,,847,847,847,847,847,,,,,,,,,,,,,,,,,,,,847,,,847,,,847,847",",,847,,,,,,847,,,,,,,,,847,,,,,847,847,847,847,,847,847,847,847,,,,","847,847,,,,276,276,276,847,276,847,847,847,276,276,847,847,,276,,276","276,276,276,276,276,276,,,,,,276,276,276,276,276,276,276,,,276,,,,,",",276,,,276,276,276,276,276,276,276,276,,276,276,276,,276,276,276,276","276,,,,,,,,,,,,,,,,,,,,276,,,276,,,276,276,,,276,,,,,,276,,,,,,,,,276",",,,,276,276,276,276,,276,276,276,276,,,,,276,276,,,,275,275,275,276","275,276,276,276,275,275,276,276,,275,,275,275,275,275,275,275,275,,",",,,275,275,275,275,275,275,275,,,275,,,,,,,275,,,275,275,275,275,275","275,275,275,,275,275,275,,275,275,275,275,275,,,,,,,,,,,,,,,,,,,,275",",,275,,,275,275,,,275,,,,,,275,,,,,,,,,275,,,,,275,275,275,275,,275","275,275,275,,,,,275,275,,,,67,67,67,275,67,275,275,275,67,67,275,275",",67,,67,67,67,67,67,67,67,,,,,,67,67,67,67,67,67,67,,,67,,,,,,,67,,","67,67,67,67,67,67,67,67,67,67,67,67,,67,67,67,67,67,,,,,,,,,,,,,,,,",",,,67,,,67,,,67,67,,,67,,67,,,,67,,,67,,,,,,67,,,,,67,67,67,67,,67,67","67,67,,,,,67,67,,,,,,,67,,67,67,67,,,67,67,66,66,66,66,66,,,,66,66,",",,66,,66,66,66,66,66,66,66,,,,,,66,66,66,66,66,66,66,,,66,,,,,,66,66",",66,66,66,66,66,66,66,66,66,,66,66,66,,66,66,66,66,66,,,,,,,,,,,,,,",",,,,,66,,,66,,,66,66,,,66,,66,,,,66,,,,,,,,,66,,,,,66,66,66,66,,66,66","66,66,,,,,66,66,,,,299,299,299,66,299,66,66,66,299,299,66,66,,299,,299","299,299,299,299,299,299,,,,,,299,299,299,299,299,299,299,,,299,,,,,",",299,,,299,299,299,299,299,299,299,299,,299,299,299,,299,299,299,299","299,,,,,,,,,,,,,,,,,,,,299,,,299,,,299,299,,,299,,,,,,299,,,,,,,,,299",",,,,299,299,299,299,,299,299,299,299,,,,,299,299,,,,274,274,274,299","274,299,299,299,274,274,299,299,,274,,274,274,274,274,274,274,274,,",",,,274,274,274,274,274,274,274,,,274,,,,,,,274,,,274,274,274,274,274","274,274,274,,274,274,274,,274,274,274,274,274,,,,,,,,,,,,,,,,,,,,274",",,274,,,274,274,,,274,,,,,,274,,,,,,,,,274,,,,,274,274,274,274,,274","274,274,274,,,,,274,274,,,,867,867,867,274,867,274,274,274,867,867,274","274,,867,,867,867,867,867,867,867,867,,,,,,867,867,867,867,867,867,867",",,867,,,,,,,867,,,867,867,867,867,867,867,867,867,,867,867,867,,867","867,867,867,867,,,,,,,,,,,,,,,,,,,,867,,,867,,,867,867,,,867,,,,,,867",",,,,,,,,867,,,,,867,867,867,867,,867,867,867,867,,,,,867,867,,,,24,24","24,867,24,867,867,867,24,24,867,867,,24,,24,24,24,24,24,24,24,,,,,,24","24,24,24,24,24,24,,,24,,,,,,,24,,,24,24,24,24,24,24,24,24,,24,24,24",",24,24,24,24,24,,,,,,,,,,,,,,,,,,,,24,,,24,,,24,24,,,24,,,,,,24,,,,",",,,,24,,,,,24,24,24,24,,24,24,24,24,,,,,24,24,,,,273,273,273,24,273","24,24,24,273,273,24,24,,273,,273,273,273,273,273,273,273,,,,,,273,273","273,273,273,273,273,,,273,,,,,,,273,,,273,273,273,273,273,273,273,273",",273,273,273,,273,273,273,273,273,,,,,,,,,,,,,,,,,,,,273,,,273,,,273","273,,,273,,,,,,273,,,,,,,,,273,,,,,273,273,273,273,,273,273,273,273",",,,,273,273,,,,788,788,788,273,788,273,273,273,788,788,273,273,,788",",788,788,788,788,788,788,788,,,,,,788,788,788,788,788,788,788,,,788",",,,,,,788,,,788,788,788,788,788,788,788,788,788,788,788,788,,788,788","788,788,788,,,,,,,,,,,,,,,,,,,,788,,,788,,,788,788,,,788,,788,,788,","788,,,788,,,,,,788,,,,,788,788,788,788,,788,788,788,788,,,,,788,788",",,,272,272,272,788,272,788,788,788,272,272,788,788,,272,,272,272,272","272,272,272,272,,,,,,272,272,272,272,272,272,272,,,272,,,,,,,272,,,272","272,272,272,272,272,272,272,,272,272,272,,272,272,272,272,272,,,,,,",",,,,,,,,,,,,,272,,,272,,,272,272,,,272,,,,,,272,,,,,,,,,272,,,,,272","272,272,272,,272,272,272,272,,,,,272,272,,,,875,875,875,272,875,272","272,272,875,875,272,272,,875,,875,875,875,875,875,875,875,,,,,,875,875","875,875,875,875,875,,,875,,,,,,,875,,,875,875,875,875,875,875,875,875",",875,875,875,,875,875,875,875,875,,,,,,,,,,,,,,,,,,,,875,,,875,,,875","875,,,875,,,,,,875,,,,,,,,,875,,,,,875,875,875,875,,875,875,875,875",",,,,875,875,,,,306,306,306,875,306,875,875,875,306,306,875,875,,306",",306,306,306,306,306,306,306,,,,,,306,306,306,306,306,306,306,,,306",",,,,,,306,,,306,306,306,306,306,306,306,306,306,306,306,306,,306,306","306,306,306,,,,,,,,,,,,,,,,,,,,306,,,306,,,306,306,,,306,,306,,306,","306,,,306,,,,,,306,,,,,306,306,306,306,,306,306,306,306,,,,,306,306",",,,888,888,888,306,888,306,306,306,888,888,306,306,,888,,888,888,888","888,888,888,888,,,,,,888,888,888,888,888,888,888,,,888,,,,,,,888,,,888","888,888,888,888,888,888,888,,888,888,888,,888,888,888,888,888,,,,,,",",,,,,,,,,,,,,888,,,888,,,888,888,,,888,,,,,,888,,,,,,,,,888,,,,,888","888,888,888,,888,888,888,888,,,,,888,888,,,,889,889,889,888,889,888","888,888,889,889,888,888,,889,,889,889,889,889,889,889,889,,,,,,889,889","889,889,889,889,889,,,889,,,,,,,889,,,889,889,889,889,889,889,889,889",",889,889,889,,889,889,889,889,889,,,,,,,,,,,,,,,,,,,,889,,,889,,,889","889,,,889,,,,,,889,,,,,,,,,889,,,,,889,889,889,889,,889,889,889,889",",,,,889,889,,,,307,307,307,889,307,889,889,889,307,307,889,889,,307",",307,307,307,307,307,307,307,,,,,,307,307,307,307,307,307,307,,,307",",,,,,,307,,,307,307,307,307,307,307,307,307,307,307,307,307,,307,307","307,307,307,,,,,,,,,,,,,,,,,,,,307,,,307,,,307,307,,,307,,307,,307,","307,,,307,,,,,,307,,,,,307,307,307,307,,307,307,307,307,,,,,307,307",",,,315,315,315,307,315,307,307,307,315,315,307,307,,315,,315,315,315","315,315,315,315,,,,,,315,315,315,315,315,315,315,,,315,,,,,,,315,,,315","315,315,315,315,315,315,315,315,315,315,315,,315,315,315,315,315,,,",",,,,,,,,,,,,,,,,315,,,315,,,315,315,,,315,,315,,315,,315,,,315,,,,,","315,,,,,315,315,315,315,,315,315,315,315,,,,,315,315,315,,,271,271,271","315,271,315,315,315,271,271,315,315,,271,,271,271,271,271,271,271,271",",,,,,271,271,271,271,271,271,271,,,271,,,,,,,271,,,271,271,271,271,271","271,271,271,,271,271,271,,271,271,271,271,271,,,,,,,,,,,,,,,,,,,,271",",,271,,,271,271,,,271,,,,,,271,,,,,,,,,271,,,,,271,271,271,271,,271","271,271,271,,,,,271,271,,,,270,270,270,271,270,271,271,271,270,270,271","271,,270,,270,270,270,270,270,270,270,,,,,,270,270,270,270,270,270,270",",,270,,,,,,,270,,,270,270,270,270,270,270,270,270,,270,270,270,,270","270,270,270,270,,,,,,,,,,,,,,,,,,,,270,,,270,,,270,270,,,270,,,,,,270",",,,,,,,,270,,,,,270,270,270,270,,270,270,270,270,,,,,270,270,,,,269","269,269,270,269,270,270,270,269,269,270,270,,269,,269,269,269,269,269","269,269,,,,,,269,269,269,269,269,269,269,,,269,,,,,,,269,,,269,269,269","269,269,269,269,269,,269,269,269,,269,269,269,269,269,,,,,,,,,,,,,,",",,,,,269,,,269,,,269,269,,,269,,,,,,269,,,,,,,,,269,,,,,269,269,269","269,,269,269,269,269,,,,,269,269,,,,322,322,322,269,322,269,269,269","322,322,269,269,,322,,322,322,322,322,322,322,322,,,,,,322,322,322,322","322,322,322,,,322,,,,,,,322,,,322,322,322,322,322,322,322,322,,322,322","322,,322,322,322,322,322,,,,,,,,,,,,,,,,,,,,322,,,322,,,322,322,,,322",",,,,,322,,,,,,,,,322,,,,,322,322,322,322,,322,322,322,322,,,,,322,322",",,,324,324,324,322,324,322,322,322,324,324,322,322,,324,,324,324,324","324,324,324,324,,,,,,324,324,324,324,324,324,324,,,324,,,,,,,324,,,324","324,324,324,324,324,324,324,,324,324,324,,324,324,324,324,324,,,,,,",",,,,,,,,,,,,,324,,,324,,,324,324,,,324,,,,,,324,,,,,,,,,324,,,,,324","324,324,324,,324,324,324,324,,,,,324,324,,,,327,327,327,324,327,324","324,324,327,327,324,324,,327,,327,327,327,327,327,327,327,,,,,,327,327","327,327,327,327,327,,,327,,,,,,,327,,,327,327,327,327,327,327,327,327",",327,327,327,,327,327,327,327,327,,,,,,,,,,,,,,,,,,,,327,,,327,,,327","327,,,327,,,,,,327,,,,,,,,,327,,,,,327,327,327,327,,327,327,327,327",",,,,327,327,,,,328,328,328,327,328,327,327,327,328,328,327,327,,328",",328,328,328,328,328,328,328,,,,,,328,328,328,328,328,328,328,,,328",",,,,,,328,,,328,328,328,328,328,328,328,328,,328,328,328,,328,328,328","328,328,,,,,,,,,,,,,,,,,,,,328,,,328,,,328,328,,,328,,,,,,328,,,,,,",",,328,,,,,328,328,328,328,,328,328,328,328,,,,,328,328,,,,268,268,268","328,268,328,328,328,268,268,328,328,,268,,268,268,268,268,268,268,268",",,,,,268,268,268,268,268,268,268,,,268,,,,,,,268,,,268,268,268,268,268","268,268,268,,268,268,268,,268,268,268,268,268,,,,,,,,,,,,,,,,,,,,268",",,268,,,268,268,,,268,,,,,,268,,,,,,,,,268,,,,,268,268,268,268,,268","268,268,268,,,,,268,268,,,,267,267,267,268,267,268,268,268,267,267,268","268,,267,,267,267,267,267,267,267,267,,,,,,267,267,267,267,267,267,267",",,267,,,,,,,267,,,267,267,267,267,267,267,267,267,,267,267,267,,267","267,267,267,267,,,,,,,,,,,,,,,,,,,,267,,,267,,,267,267,,,267,,,,,,267",",,,,,,,,267,,,,,267,267,267,267,,267,267,267,267,,,,,267,267,,,,266","266,266,267,266,267,267,267,266,266,267,267,,266,,266,266,266,266,266","266,266,,,,,,266,266,266,266,266,266,266,,,266,,,,,,,266,,,266,266,266","266,266,266,266,266,,266,266,266,,266,266,266,266,266,,,,,,,,,,,,,,",",,,,,266,,,266,,,266,266,,,266,,,,,,266,,,,,,,,,266,,,,,266,266,266","266,,266,266,266,266,,,,,266,266,,,,917,917,917,266,917,266,266,266","917,917,266,266,,917,,917,917,917,917,917,917,917,,,,,,917,917,917,917","917,917,917,,,917,,,,,,,917,,,917,917,917,917,917,917,917,917,,917,917","917,,917,917,917,917,917,,,,,,,,,,,,,,,,,,,,917,,,917,,,917,917,,,917",",,,,,917,,,,,,,,,917,,,,,917,917,917,917,,917,917,917,917,,,,,917,917",",,,918,918,918,917,918,917,917,917,918,918,917,917,,918,,918,918,918","918,918,918,918,,,,,,918,918,918,918,918,918,918,,,918,,,,,,,918,,,918","918,918,918,918,918,918,918,,918,918,918,,918,918,918,918,918,,,,,,",",,,,,,,,,,,,,918,,,918,,,918,918,,,918,,,,,,918,,,,,,,,,918,,,,,918","918,918,918,,918,918,918,918,,,,,918,918,,,,919,919,919,918,919,918","918,918,919,919,918,918,,919,,919,919,919,919,919,919,919,,,,,,919,919","919,919,919,919,919,,,919,,,,,,,919,,,919,919,919,919,919,919,919,919",",919,919,919,,919,919,919,919,919,,,,,,,,,,,,,,,,,,,,919,,,919,,,919","919,,,919,,,,,,919,,,,,,,,,919,,,,,919,919,919,919,,919,919,919,919",",,,,919,919,,,,497,497,497,919,497,919,919,919,497,497,919,919,,497",",497,497,497,497,497,497,497,,,,,,497,497,497,497,497,497,497,,,497",",,,,,,497,,,497,497,497,497,497,497,497,497,,497,497,497,,497,497,497","497,497,,,,,,,,,,,,,,,,,,,,497,,,497,,,497,497,,,497,,,,,,497,,,,,,",",,497,,,,,497,497,497,497,,497,497,497,497,,,,,497,497,,,,,,,497,,497","497,497,,,497,497,133,133,133,133,133,,,,133,133,,,,133,,133,133,133","133,133,133,133,,,,,,133,133,133,133,133,133,133,,,133,,,,,,133,133",",133,133,133,133,133,133,133,133,133,,133,133,133,,133,133,133,133,133",",,,,,,,,,,,,,,,,,,,133,,,133,,,133,133,,,133,,133,,,,133,,,,,,,,,133",",,,,133,133,133,133,,133,133,133,133,,,,,133,133,,,,132,132,132,133","132,133,133,133,132,132,133,133,,132,,132,132,132,132,132,132,132,,",",,,132,132,132,132,132,132,132,,,132,,,,,,,132,,,132,132,132,132,132","132,132,132,,132,132,132,,132,132,132,132,132,,,,,,,,,,,,,,,,,,,,132",",,132,,,132,132,,,132,,,,,,132,,,,,,,,,132,,,,,132,132,132,132,,132","132,132,132,,,,,132,132,,,,131,131,131,132,131,132,132,132,131,131,132","132,,131,,131,131,131,131,131,131,131,,,,,,131,131,131,131,131,131,131",",,131,,,,,,,131,,,131,131,131,131,131,131,131,131,,131,131,131,,131","131,131,131,131,,,,,,,,,,,,,,,,,,,,131,,,131,,,131,131,,,131,,,,,,131",",,,,,,,,131,,,,,131,131,131,131,,131,131,131,131,,,,,131,131,,,,130","130,130,131,130,131,131,131,130,130,131,131,,130,,130,130,130,130,130","130,130,,,,,,130,130,130,130,130,130,130,,,130,,,,,,,130,,,130,130,130","130,130,130,130,130,,130,130,130,,130,130,130,130,130,,,,,,,,,,,,,,",",,,,,130,,,130,,,130,130,,,130,,,,,,130,,,,,,,,,130,,,,,130,130,130","130,,130,130,130,130,,,,,130,130,,,,1149,1149,1149,130,1149,130,130","130,1149,1149,130,130,,1149,,1149,1149,1149,1149,1149,1149,1149,,,,",",1149,1149,1149,1149,1149,1149,1149,,,1149,,,,,,,1149,,,1149,1149,1149","1149,1149,1149,1149,1149,,1149,1149,1149,,1149,1149,1149,1149,1149,",",,,,,,,,,,,,,,,,,,1149,,,1149,,,1149,1149,,,1149,,,,,,1149,,,,,,,,,1149",",,,,1149,1149,1149,1149,,1149,1149,1149,1149,,,,,1149,1149,,,,1150,1150","1150,1149,1150,1149,1149,1149,1150,1150,1149,1149,,1150,,1150,1150,1150","1150,1150,1150,1150,,,,,,1150,1150,1150,1150,1150,1150,1150,,,1150,",",,,,,1150,,,1150,1150,1150,1150,1150,1150,1150,1150,,1150,1150,1150",",1150,1150,1150,1150,1150,,,,,,,,,,,,,,,,,,,,1150,,,1150,,,1150,1150",",,1150,,,,,,1150,,,,,,,,,1150,,,,,1150,1150,1150,1150,,1150,1150,1150","1150,,,,,1150,1150,,,,52,52,52,1150,52,1150,1150,1150,52,52,1150,1150",",52,,52,52,52,52,52,52,52,,,,,,52,52,52,52,52,52,52,,,52,,,,,,,52,,","52,52,52,52,52,52,52,52,,52,52,52,,52,52,52,52,52,,,,,,,,,,,,,,,,,,",",52,,,52,,,52,52,,,52,,,,,,52,,,,,,,,,52,,,,,52,52,52,52,,52,52,52,52",",,,,52,52,,,,129,129,129,52,129,52,52,52,129,129,52,52,,129,,129,129","129,129,129,129,129,,,,,,129,129,129,129,129,129,129,,,129,,,,,,,129",",,129,129,129,129,129,129,129,129,,129,129,129,,129,129,129,129,129",",,,,,,,,,,,,,,,,,,,129,,,129,,,129,129,,,129,,,,,,129,,,,,,,,,129,,",",,129,129,129,129,,129,129,129,129,,,,,129,129,,,,,,,129,,129,129,129",",,129,129,124,124,124,124,124,,,,124,124,,,,124,,124,124,124,124,124","124,124,,,,,,124,124,124,124,124,124,124,,,124,,,,,,124,124,124,124","124,124,124,124,124,124,124,124,,124,124,124,,124,124,124,124,124,,",",,,,,,,,,,,,,,,,,124,,,124,,,124,124,,,124,,124,,,,124,,,,,,,,,124,",",,,124,124,124,124,,124,124,124,124,,,,,124,124,,,,,,124,124,,124,124","124,,,124,124,1162,1162,1162,,1162,,,,1162,1162,,,,1162,,1162,1162,1162","1162,1162,1162,1162,,,,,,1162,1162,1162,1162,1162,1162,1162,,,1162,",",,,,,1162,,,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162",",1162,1162,1162,1162,1162,,,,,,,,,,,,,,,,,,,,1162,,,1162,,,1162,1162",",,1162,,1162,,1162,,1162,,,1162,,,,,,1162,,,,,1162,1162,1162,1162,,1162","1162,1162,1162,,,,,1162,1162,,,,471,471,471,1162,471,1162,1162,1162","471,471,1162,1162,,471,,471,471,471,471,471,471,471,,,,,,471,471,471","471,471,471,471,,,471,,,,,,,471,,,471,471,471,471,471,471,471,471,,471","471,471,,471,471,471,471,471,,,,,,,,,,,,,,,,,,,,471,,,471,,,471,471",",,471,,,,,,471,,,,,,,,,471,,,,,471,471,471,471,,471,471,471,471,,,,","471,471,,,,277,277,277,471,277,471,471,471,277,277,471,471,,277,,277","277,277,277,277,277,277,,,,,,277,277,277,277,277,277,277,,,277,,,,,",",277,,,277,277,277,277,277,277,277,277,,277,277,277,,277,277,277,277","277,,,,,,,,,,,,,,,,,,,,277,,,277,,,277,277,,,277,,,,,,277,,,,,,,,,277",",,,,277,277,277,277,,277,277,277,277,,,,,277,277,,,,,,,277,,277,277","277,470,,277,277,,,,470,470,470,,,470,470,470,,470,,,,,,,,470,470,470","470,470,,,,,,,,470,470,,470,470,470,470,470,,,,,,,,,,,,,,,,,,,,,,,470","470,470,470,470,470,470,470,470,470,470,470,470,470,,,470,470,470,,","470,,,470,,,470,470,,470,,470,,470,,470,470,,470,470,470,470,470,,470","470,470,,,,,,,,,,,,,,470,,,470,470,470,470,,470,469,470,,,,,470,469","469,469,,,469,469,469,,469,,,,,,,,469,469,469,469,469,,,,951,951,951","951,469,469,,469,469,469,469,469,,,,,951,951,951,,,,,,,,,,,951,951,",",951,469,469,469,469,469,469,469,469,469,469,469,469,469,469,,,469,469","469,,,469,,,469,,,469,469,,469,,469,,469,,469,469,,469,469,469,469,469",",469,469,469,,951,951,951,951,,951,951,951,951,,,,469,951,951,469,469","469,469,,469,951,469,951,951,951,460,469,7,7,7,7,7,460,460,460,7,7,460","460,460,7,460,7,7,7,7,7,7,7,460,460,460,460,,7,7,7,7,7,7,7,460,460,7","460,460,460,460,460,7,7,7,7,7,7,7,7,7,7,7,7,,7,7,7,,7,7,7,7,7,460,460","460,460,460,460,460,460,460,460,460,460,460,460,,,460,460,460,7,,460","7,460,460,7,7,460,460,7,460,7,460,,460,7,460,460,,460,460,460,460,460","7,460,460,460,,7,7,7,7,,7,7,7,7,,,,460,7,7,460,460,,460,,460,7,,7,7","7,,460,7,7,75,75,75,,75,,,,75,75,,,,75,,75,75,75,75,75,75,75,,,,,,75","75,75,75,75,75,75,,,75,,,,,,,75,,,75,75,75,75,75,75,75,75,,75,75,75",",75,75,75,75,75,,,,,,,,,,,,,,,,,,,,75,,,75,,,75,75,,,75,,,,,,75,,,,",",,,,75,,,,,75,75,75,75,,75,75,75,75,,,,,75,75,75,,,,,75,75,,75,75,75","64,,75,75,,,,64,64,64,,,64,64,64,,64,,,,,,,,64,,64,64,64,,,,,,,,64,64",",64,64,64,64,64,,,,,,,,,,,,,,,,,,,,,,,64,64,64,64,64,64,64,64,64,64","64,64,64,64,,,64,64,64,,,64,,,64,,,64,64,,64,,64,,64,,64,64,,64,64,64","64,64,,64,,64,,,,,,,,,,,,,,64,,,64,64,64,64,,64,,64,,278,278,278,64","278,,,,278,278,,,,278,,278,278,278,278,278,278,278,,,,,,278,278,278","278,278,278,278,,,278,,,,,,,278,,,278,278,278,278,278,278,278,278,,278","278,278,,278,278,278,278,278,,,,,,,,,,,,,,,,,,,,278,,,278,,,278,278",",,278,,,,,,278,,,,,,,,,278,,,,,278,278,278,278,,278,278,278,278,,,,","278,278,,,,221,221,221,278,221,278,278,278,221,221,278,278,,221,,221","221,221,221,221,221,221,,,,,,221,221,221,221,221,221,221,,,221,,,,,",",221,,,221,221,221,221,221,221,221,221,,221,221,221,,221,221,221,221","221,,,,,,,,,,,,,,,,,,,,221,,,221,,,221,221,,,221,,,,,,221,,,,,,,,,221",",,,,221,221,221,221,,221,221,221,221,,,,,221,221,,,,220,220,220,221","220,221,221,221,220,220,221,221,,220,,220,220,220,220,220,220,220,,",",,,220,220,220,220,220,220,220,,,220,,,,,,,220,,,220,220,220,220,220","220,220,220,,220,220,220,,220,220,220,220,220,,,,,,,,,,,,,,,,,,,,220",",,220,,,220,220,,,220,,220,,,,220,,,,,,,,,220,,,,,220,220,220,220,,220","220,220,220,,,,,220,220,,,,800,800,800,220,800,220,220,220,800,800,220","220,,800,,800,800,800,800,800,800,800,,,,,,800,800,800,800,800,800,800",",,800,,,,,,,800,,,800,800,800,800,800,800,800,800,,800,800,800,,800","800,800,800,800,,,,,,,,,,,,,,,,,,,,800,,,800,,,800,800,,,800,,,,,,800",",,,,,,,,800,,,,,800,800,800,800,,800,800,800,800,,,,,800,800,,,,797","797,797,800,797,800,800,800,797,797,800,800,,797,,797,797,797,797,797","797,797,,,,,,797,797,797,797,797,797,797,,,797,,,,,,,797,,,797,797,797","797,797,797,797,797,,797,797,797,,797,797,797,797,797,,,,,,,,,,,,,,",",,,,,797,,,797,,,797,797,,,797,,,,,,797,,,,,,,,,797,,,,,797,797,797","797,,797,797,797,797,,,,,797,797,,,,386,386,386,797,386,797,797,797","386,386,797,797,,386,,386,386,386,386,386,386,386,,,,,,386,386,386,386","386,386,386,,,386,,,,,,,386,,,386,386,386,386,386,386,386,386,,386,386","386,,386,386,386,386,386,,,,,,,,,,,,,,,,,,,,386,,,386,,,386,386,,,386",",,,,,386,,,,,,,,,386,,,,,386,386,386,386,,386,386,386,386,,,,,386,386",",,,524,524,524,386,524,386,386,386,524,524,386,386,,524,,524,524,524","524,524,524,524,,,,,,524,524,524,524,524,524,524,,,524,,,,,,,524,,,524","524,524,524,524,524,524,524,,524,524,524,,524,524,524,524,524,,,,,,",",,,,,,,,,,,,,524,,,524,,,524,524,,,524,,,,,,524,,,,,,,,,524,,,,,524","524,524,524,,524,524,524,524,,,,,524,524,,,,523,523,523,524,523,524","524,524,523,523,524,524,,523,,523,523,523,523,523,523,523,,,,,,523,523","523,523,523,523,523,,,523,,,,,,,523,,,523,523,523,523,523,523,523,523",",523,523,523,,523,523,523,523,523,,,,,,,,,,,,,,,,,,,,523,,,523,,,523","523,,,523,,,,,,523,,,,,,,,,523,,,,,523,523,523,523,,523,523,523,523",",,,,523,523,,,,522,522,522,523,522,523,523,523,522,522,523,523,,522",",522,522,522,522,522,522,522,,,,,,522,522,522,522,522,522,522,,,522",",,,,,,522,,,522,522,522,522,522,522,522,522,,522,522,522,,522,522,522","522,522,,,,,,,,,,,,,,,,,,,,522,,,522,,,522,522,,,522,,,,,,522,,,,,,",",,522,,,,,522,522,522,522,,522,522,522,522,,,,,522,522,,,,520,520,520","522,520,522,522,522,520,520,522,522,,520,,520,520,520,520,520,520,520",",,,,,520,520,520,520,520,520,520,,,520,,,,,,,520,,,520,520,520,520,520","520,520,520,520,520,520,520,,520,520,520,520,520,,,,,,,,,,,,,,,,,,,","520,,,520,,,520,520,,,520,,520,,520,,520,,,520,,,,,,520,,,,,520,520","520,520,,520,520,520,520,,,,,520,520,,,,219,219,219,520,219,520,520","520,219,219,520,520,,219,,219,219,219,219,219,219,219,,,,,,219,219,219","219,219,219,219,,,219,,,,,,,219,,,219,219,219,219,219,219,219,219,,219","219,219,,219,219,219,219,219,,,,,,,,,,,,,,,,,,,,219,,,219,,,219,219",",,219,,219,,,,219,,,,,,,,,219,,,,,219,219,219,219,,219,219,219,219,",",,,219,219,,,,510,510,510,219,510,219,219,219,510,510,219,219,,510,","510,510,510,510,510,510,510,,,,,,510,510,510,510,510,510,510,,,510,",",,,,,510,,,510,510,510,510,510,510,510,510,,510,510,510,,510,510,510","510,510,,,,,,,,,,,,,,,,,,,,510,,,510,,,510,510,,,510,,,,,,510,,,,,,",",,510,,,,,510,510,510,510,,510,510,510,510,,,,,510,510,,,,1017,1017","1017,510,1017,510,510,510,1017,1017,510,510,,1017,,1017,1017,1017,1017","1017,1017,1017,,,,,,1017,1017,1017,1017,1017,1017,1017,,,1017,,,,,,","1017,,,1017,1017,1017,1017,1017,1017,1017,1017,,1017,1017,1017,,1017","1017,,,1017,,,,,,,,,,,,,,,,,,,,1017,,,1017,,,1017,1017,,,1017,,,,,,",",,,,,,,,,,,,,1017,1017,1017,1017,,1017,1017,1017,1017,,,,,1017,1017",",,,1081,1081,1081,1017,1081,1017,1017,1017,1081,1081,,,,1081,,1081,1081","1081,1081,1081,1081,1081,,,,,,1081,1081,1081,1081,1081,1081,1081,,,1081",",,,,,,1081,,,1081,1081,1081,1081,1081,1081,1081,1081,,1081,1081,1081",",1081,1081,,,1081,,,,,,,,,,,,,,,,,,,,1081,,,1081,,,1081,1081,,,1081",",,,,,,,,,,,,,,,,,,,1081,1081,1081,1081,,1081,1081,1081,1081,,,,,1081","1081,,,,341,341,341,1081,341,1081,1081,1081,341,341,,,,341,,341,341","341,341,341,341,341,,,,,,341,341,341,341,341,341,341,,,341,,,,,,,341",",,341,341,341,341,341,341,341,341,,341,341,341,,341,341,,,341,,,,,,",",,,,,,,,,,,,,341,,,341,,,341,341,,,341,,,1214,,1214,1214,1214,1214,1214",",,,,,,,,1214,,341,341,341,341,,341,341,341,341,,,,,341,341,,,,341,,1214","341,,341,341,341,588,588,588,,588,1214,1214,,588,588,1214,,,588,,588","588,588,588,588,588,588,,,,,,588,588,588,588,588,588,588,,,588,,,,,",",588,,,588,588,588,588,588,588,588,588,,588,588,588,,588,588,,,588,",",,,,,,,,,,,,,,,,,,588,,,588,,,588,588,,,588,,,,,,,,,,,,,,,,,,,,588,588","588,588,,588,588,588,588,,,,,588,588,,,,40,40,40,588,40,588,588,588","40,40,,,,40,,40,40,40,40,40,40,40,,,,,,40,40,40,40,40,40,40,,,40,,,",",,,40,,,40,40,40,40,40,40,40,40,,40,40,40,,40,40,,,40,,,,,,,,,,,,,,",",,,,,40,,,40,,,40,40,,,40,,,1210,,1210,1210,1210,1210,1210,,,,,,,,,1210",",40,40,40,40,,40,40,40,40,,,,,40,40,,,,40,,1210,40,,40,40,40,803,803","803,,803,1210,1210,,803,803,1210,,,803,,803,803,803,803,803,803,803",",,,,,803,803,803,803,803,803,803,,,803,,,,,,,803,,,803,803,803,803,803","803,803,803,,803,803,803,,803,803,,,803,,,,,,,,,,,,,,,,,,,,803,,,803",",,803,803,,,803,,,,,,,,,,,,,,,,,,,,803,803,803,803,,803,803,803,803",",,,,803,803,,,,360,360,360,803,360,803,803,803,360,360,,,,360,,360,360","360,360,360,360,360,,,,,,360,360,360,360,360,360,360,,,360,,,,,,,360",",,360,360,360,360,360,360,360,360,,360,360,360,,360,360,,,360,,,,,,",",,,,,,,,,,,,,360,,,360,,,360,360,,,360,,,,,,,,,,,,,,,,,,,,360,360,360","360,,360,360,360,360,,,,,360,360,,,,1144,1144,1144,360,1144,360,360","360,1144,1144,,,,1144,,1144,1144,1144,1144,1144,1144,1144,,,,,,1144","1144,1144,1144,1144,1144,1144,,,1144,,,,,,,1144,,,1144,1144,1144,1144","1144,1144,1144,1144,,1144,1144,1144,,1144,1144,,,1144,,,,,,,,,,,,,,",",,,,,1144,,,1144,,,1144,1144,,,1144,,,,,,,,,,,,,,,,,,,,1144,1144,1144","1144,,1144,1144,1144,1144,,,,,1144,1144,,,,77,77,77,1144,77,1144,1144","1144,77,77,,,,77,,77,77,77,77,77,77,77,,,,,,77,77,77,77,77,77,77,,,77",",,,,,,77,,,77,77,77,77,77,77,77,77,,77,77,77,,77,77,,,77,,,,,,,,,,,",",,,,,77,,,77,,,77,,,77,77,,,77,,,,,,,,,,,,,,,,,,,,77,77,77,77,,77,77","77,77,,,,,77,77,,,,814,814,814,77,814,77,77,77,814,814,,,,814,,814,814","814,814,814,814,814,,,,,,814,814,814,814,814,814,814,,,814,,,,,,,814",",,814,814,814,814,814,814,814,814,,814,814,814,,814,814,,,814,,,,,,",",,,,,,,,,,,,,814,,,814,,,814,814,,,814,,,,,,,,,,,,,,,,,,,,814,814,814","814,,814,814,814,814,,,,,814,814,,,,597,597,597,814,597,814,814,814","597,597,,,,597,,597,597,597,597,597,597,597,,,,,,597,597,597,597,597","597,597,,,597,,,,,,,597,,,597,597,597,597,597,597,597,597,,597,597,597",",597,597,,,597,,,,,,,,,,,,,,,,,,,,597,,,597,,,597,597,,,597,,,,,,,,",",,,,,,,,,,,597,597,597,597,,597,597,597,597,,,,,597,597,,,,39,39,39","597,39,597,597,597,39,39,,,,39,,39,39,39,39,39,39,39,,,,,,39,39,39,39","39,39,39,,,39,,,,,,,39,,,39,39,39,39,39,39,39,39,,39,39,39,,39,39,,","39,,,,,,,,,,,,,,,,,,,,39,,,39,,,39,39,,,39,,39,,,,,,,,,,,,,,,,,,39,39","39,39,,39,39,39,39,,,,,39,39,,,,76,76,76,39,76,39,39,39,76,76,,,,76",",76,76,76,76,76,76,76,,,,,,76,76,76,76,76,76,76,,,76,,,,,,,76,,,76,76","76,76,76,76,76,76,,76,76,76,,76,76,,,76,,,,,,,,,,,,,,,,,,,,76,,,76,",",76,76,,,76,,76,,,,,,,,,,,,,,,,,,76,76,76,76,,76,76,76,76,,,,,76,76",",,,78,78,78,76,78,76,76,76,78,78,,,,78,,78,78,78,78,78,78,78,,,,,,78","78,78,78,78,78,78,,,78,,,,,,,78,,,78,78,78,78,78,78,78,78,,78,78,78",",78,78,,,78,,,,,,,,,,,,,,,,,,,,78,,,78,,,78,78,,,78,,,,,,,,,,,,,,,,",",,,78,78,78,78,,78,78,78,78,,,,,78,78,,,,,,,78,,78,78,78,10,10,10,10","10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,,,,10,10","10,10,10,10,10,10,10,10,,,,,,10,10,10,10,10,10,10,10,10,10,,10,,,,,",",,10,10,,10,10,10,10,10,10,10,,,10,10,,,,10,10,10,10,,,,,,,,,,,,,,10","10,,10,10,10,10,10,10,10,10,10,10,10,10,,,10,10,,,,,,,,,,,,,,10,427","427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427","427,427,427,427,427,427,,,,427,427,427,427,427,427,427,427,427,427,",",,,,427,427,427,427,427,427,427,427,427,,,427,,,,,,,,427,427,,427,427","427,427,427,427,427,,,427,427,,,,427,427,427,427,,,,,,,,,,,,,,427,427",",427,427,427,427,427,427,427,427,427,427,427,427,,,427,427,,,,,,,,,",",,,,427,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667","667,667,667,667,667,667,667,667,667,,,,667,667,667,667,667,667,667,667","667,667,,,,,,667,667,667,667,667,667,667,667,667,,,667,,,,,,,,667,667",",667,667,667,667,667,667,667,,,667,667,,,,667,667,667,667,,,,,,,,,,",",,,667,667,,667,667,667,667,667,667,667,667,667,667,667,667,,,667,667",",,,,,,,,,,,,,667,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11","11,11,11,11,11,11,11,,,,11,11,11,11,11,11,11,11,11,11,,,,,,11,11,11","11,11,11,11,11,11,,,11,,,,,,,,11,11,,11,11,11,11,11,11,11,,,11,11,,",",11,11,11,11,,,,,,,,,,,,,,11,11,,11,11,11,11,11,11,11,11,11,11,11,11",",,11,11,,,,,,,,,,,,,,11,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26","26,26,26,26,26,26,26,26,26,,,,26,26,26,26,26,26,26,26,26,26,,,,,,26","26,26,26,26,26,26,26,26,26,26,26,,26,,,,,,26,26,,26,26,26,26,26,26,26",",,26,26,,,,26,26,26,26,,,,,,26,,,,,,,,26,26,,26,26,26,26,26,26,26,26","26,26,26,26,,,26,753,753,753,753,,,,,,1026,,1026,1026,1026,1026,1026","753,753,753,753,,,,753,1026,,,,,753,753,,,753,,,,,,,,,,,,,1026,,,,,",",753,,,753,1026,1026,,753,,1026,753,,,,,,,,,,,,,,,,753,,,,753,753,753","753,,753,753,753,753,,,,,753,753,1205,1205,1205,1205,1026,,753,,753","753,753,,,753,753,,1205,1205,1205,1205,,,1208,1205,1208,1208,1208,1208","1208,1205,1205,,,1205,,,,1208,,,,,,,,,,,,,,,,1205,,,1205,,,1208,1205",",,1205,,,,,1208,1208,1208,1208,,,,1208,,,,1205,,,,1205,1205,1205,1205",",1205,1205,1205,1205,,,,,1205,1205,1129,1129,1129,1129,,,1205,,1205","1205,1205,,,1205,1205,,1129,1129,1129,1129,,,1138,1129,1138,1138,1138","1138,1138,1129,1129,,,1129,,,,1138,,,,,,,,,,,,,,,,1129,,,1129,,,1138","1129,,,1129,,1129,,,1138,1138,1138,1138,,,,1138,,,,1129,,,,1129,1129","1129,1129,,1129,1129,1129,1129,,,,,1129,1129,989,989,989,989,,,1129",",1129,1129,1129,,,1129,1129,,989,989,989,989,,,,989,989,,,,,989,989",",,989,989,,,,,,,,,,,,,,,,,,,989,,,989,,,,989,,,989,,989,,,,,,,989,,",",,,,989,,,,989,989,989,989,,989,989,989,989,,,,,989,989,942,942,942","942,,,989,,989,989,989,,,989,989,,942,942,942,942,,,1135,942,1135,1135","1135,1135,1135,942,942,,,942,,,,1135,,,,,,,,,,,,,,,,942,,,942,,,1135","942,,,942,,,,,1135,1135,1135,1135,,,,1135,,,,942,,,,942,942,942,942",",942,942,942,942,,,,,942,942,924,924,924,924,,,942,,942,942,942,,,942","942,,924,924,924,924,,,1231,924,1231,1231,1231,1231,1231,924,924,,,924",",,,1231,,,,,,,,,,,,,,,,924,,,924,,,1231,924,,,924,,924,,,,,1231,1231",",,,1231,,,,924,,,,924,924,924,924,,924,924,924,924,,,,,924,924,745,745","745,745,,,924,,924,924,924,,,924,924,,745,745,745,745,,,,745,,,,,,745","745,,,745,,,,,,,,,,,,,,,,,,,,745,,,745,,,,745,,,745,,745,,,,,,,1166",",1166,1166,1166,1166,1166,745,,,,745,745,745,745,1166,745,745,745,745",",,,,745,745,745,943,943,943,943,,745,,745,745,745,1166,,745,745,,,943","943,943,943,,1166,1166,943,,,1166,,,943,943,,,943,,,,,,,,,,,,,,,,,,",",943,,,943,,,,943,,,943,,,1166,,,,,,,,,,,,,943,,,,943,943,943,943,,943","943,943,943,,,,,943,943,930,930,930,930,,,943,,943,943,943,,,943,943",",930,930,930,930,,,,930,930,,,,,930,930,,,930,930,,,,,,,,,,,,,,,,,,","930,,,930,,,,930,,,930,,930,,,,,,,930,,,,,,,930,,,,930,930,930,930,","930,930,930,930,,,,,930,930,929,929,929,929,,,930,,930,930,930,,,930","930,,929,929,929,929,,,,929,929,,,,,929,929,,,929,929,,,,,,,,,,,,,,",",,,,929,,,929,,,,929,,,929,,929,,,,,,,929,,,,,,,929,,,,929,929,929,929",",929,929,929,929,,,,,929,929,,,,,,,929,,929,929,929,,,929,929,780,780","780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780","780,780,780,780,780,,,,780,780,780,780,780,780,780,780,780,780,,,,,","780,780,780,780,780,780,780,780,780,,,780,,,,,,,,780,780,,780,780,780","780,780,780,780,,,780,780,,,,780,780,780,780,,,,,,,,,,,,,,780,780,,780","780,780,780,780,780,780,780,780,780,780,780,,,780,528,528,528,528,,","1212,,1212,1212,1212,1212,1212,,,,528,528,528,528,,1212,,528,528,,,",",528,528,,,528,528,,,,,,,,,1212,,,,,,,,,,528,1212,1212,528,,,1212,528",",,528,,528,,,,,,,528,,,,,,,528,,,,528,528,528,528,,528,528,528,528,",",,,528,528,527,527,527,527,,,528,,528,528,528,,,528,528,,527,527,527","527,,,,527,527,,,,,527,527,,,527,527,,,,,,,,,,,,,,,,,,,527,,,527,,,","527,,,527,,527,,,,,,,527,,,,,,,527,,,,527,527,527,527,,527,527,527,527",",,,,527,527,1173,1173,1173,1173,,,527,,527,527,527,,,527,527,,1173,1173","1173,1173,,,,1173,,,,,,1173,1173,,,1173,,,,,,,,,,,,,,,,,,,,1173,,,1173",",,,1173,,,1173,,,,,,,,,,,,,,,,1173,,,,1173,1173,1173,1173,,1173,1173","1173,1173,,,,,1173,1173,1116,1116,1116,1116,,,1173,,1173,1173,1173,",",1173,1173,,1116,1116,1116,1116,,,,1116,,,,,,1116,1116,,,1116,,,,,,",",,,,,,,,,,,,,1116,,,1116,,,,1116,,,1116,,,,,,,,,,,,,,,,1116,,,,1116","1116,1116,1116,,1116,1116,1116,1116,,,,,1116,1116,926,926,926,926,,","1116,,1116,1116,1116,,,1116,1116,,926,926,926,926,,,,926,,,,,,926,926",",,926,,,,,,,,,,,,,,,,,,,,926,,,926,,,,926,,,926,,,,,,,,,,,,,,,,926,",",,926,926,926,926,,926,926,926,926,,,,,926,926,1125,1125,1125,1125,",",926,,926,926,926,,,926,926,,1125,1125,1125,1125,,,,1125,,,,,,1125,1125",",,1125,,,,,,,,,,,,,,,,,,,,1125,,,1125,,,,1125,,,1125,,,,,,,,,,,,,,,","1125,,,,1125,1125,1125,1125,,1125,1125,1125,1125,,,,,1125,1125,936,936","936,936,,,1125,,1125,1125,1125,,,1125,1125,,936,936,936,936,,,,936,",",,,,936,936,,,936,,,,,,,,763,763,763,763,,,,,,,,,936,,,936,763,763,763","936,,,936,,936,,,,,763,763,,,763,,,,,936,,,,936,936,936,936,,936,936","936,936,,,,,936,936,,,,,,,936,,936,936,936,,,936,936,233,,233,233,233","233,233,,,,,763,763,763,763,233,763,763,763,763,,,,,763,763,950,950","950,950,,,763,,763,763,763,233,,,,,950,950,950,,233,233,233,233,,,,233",",950,950,,,950,,,,,,,,,,,,705,,705,705,705,705,705,,,,,,,,,705,,,,,","234,233,234,234,234,234,234,,,,,,,,,234,705,950,950,950,950,,950,950","950,950,,705,705,,950,950,705,,,,,234,950,,950,950,950,,,,234,234,234","234,,,409,234,409,409,409,409,409,,1020,,1020,1020,1020,1020,1020,409",",,,,705,,,1020,,644,,644,644,644,644,644,,,,,,409,409,,644,234,,,,1020","409,409,409,409,,,,409,1020,1020,1020,1020,,,,1020,644,,,,,,,,,644,644","644,644,,,1024,644,1024,1024,1024,1024,1024,,,,,,,,,1024,409,,,,,,,","1020,,,,,,,,,,,,,1024,,,,644,,,,,,,1024,1024,675,675,,1024,675,,,,,",",,675,675,,675,675,675,675,675,675,675,,,675,675,,,,675,675,675,675",",,,,,675,,,,,1024,,,675,675,,675,675,675,675,675,675,675,675,675,675","675,675,636,636,675,,636,,,,,,,,636,636,,636,636,636,636,636,636,636",",,636,636,,,,636,636,636,636,,,,,,636,,,,,,,,636,636,,636,636,636,636","636,636,636,636,636,636,636,636,629,629,636,,629,,,,,,,,629,629,,629","629,629,629,629,629,629,,,629,629,,,,629,629,629,629,,,,,,629,,,,,,",",629,629,,629,629,629,629,629,629,629,629,629,629,629,629,226,226,629",",226,,,,,,,,226,226,,226,226,226,226,226,226,226,,,226,226,,,,226,226","226,226,,,,,,226,,,,,,,,226,226,,226,226,226,226,226,226,226,226,226","226,226,226,602,602,226,,602,,,,,,,,602,602,,602,602,602,602,602,602","602,,,602,602,,,,602,602,602,602,,,,,,602,,,,,,,,602,602,,602,602,602","602,602,602,602,602,602,602,602,602,637,637,602,,637,,,,,,,,637,637",",637,637,637,637,637,637,637,,,637,637,,,,637,637,637,637,,,,,,637,",",,,,,,637,637,,637,637,637,637,637,637,637,637,637,637,637,637,225,225","637,,225,,,,,,,,225,225,,225,225,225,225,225,225,225,,,225,225,,,,225","225,225,225,,,,,,225,,,,,,,,225,225,,225,225,225,225,225,225,225,225","225,225,225,225,302,302,225,,302,,,,,,,,302,302,,302,302,302,302,302","302,302,,,302,302,,,,302,302,302,302,,,,,,,,,,,,,,302,302,,302,302,302","302,302,302,302,302,302,302,302,302,519,519,302,,519,,,,,,,,519,519",",519,519,519,519,519,519,519,,,519,519,,,,519,519,519,519,,,,,,519,",",,,,,,519,519,,519,519,519,519,519,519,519,519,519,519,519,519,518,518","519,,518,,,,,,,,518,518,,518,518,518,518,518,518,518,,,518,518,,,,518","518,518,518,,,,,,518,,,,,,,,518,518,,518,518,518,518,518,518,518,518","518,518,518,518,591,591,518,,591,,,,,,,,591,591,,591,591,591,591,591","591,591,,,591,591,,,,591,591,591,591,,,,,,591,,,,,,,,591,591,,591,591","591,591,591,591,591,591,591,591,591,591,592,592,591,,592,,,,,,,,592","592,,592,592,592,592,592,592,592,,,592,592,,,,592,592,592,592,,,,,,592",",,,,,,,592,592,,592,592,592,592,592,592,592,592,592,592,592,592,1163","1163,592,,1163,,,,,,,,1163,1163,,1163,1163,1163,1163,1163,1163,1163",",,1163,1163,,,,1163,1163,1163,1163,,,,,,1163,,,,,,,,1163,1163,,1163","1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,674,674,1163",",674,,,,,,,,674,674,,674,674,674,674,674,674,674,,,674,674,,,,674,674","674,674,,,,,,674,,,,,,,,674,674,,674,674,674,674,674,674,674,674,674","674,674,674,1164,1164,674,,1164,,,,,,,,1164,1164,,1164,1164,1164,1164","1164,1164,1164,,,1164,1164,,,,1164,1164,1164,1164,,,,,,1164,,,,,,,,1164","1164,,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,630","630,1164,,630,,,,,,,,630,630,,630,630,630,630,630,630,630,,,630,630",",,,630,630,630,630,,,,,,630,,,,,,,,630,630,,630,630,630,630,630,630","630,630,630,630,630,630,1188,1188,630,,1188,,,,,,,,1188,1188,,1188,1188","1188,1188,1188,1188,1188,,,1188,1188,,,,1188,1188,1188,1188,,,,,,1188",",,,,,,,1188,1188,,1188,1188,1188,1188,1188,1188,1188,1188,1188,1188","1188,1188,601,601,1188,,601,,,,,,,,601,601,,601,601,601,601,601,601","601,,,601,601,,,,601,601,601,601,,,,,,601,,,,,,,,601,601,,601,601,601","601,601,601,601,601,601,601,601,601,,,601"],racc_action_check=arr=$$$("Array").$new(28717,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),racc_action_pointer=[nil,1550,2590,30,nil,485,nil,21057,1279,-15,24908,25292,63,nil,111,130,888,195,878,334,213,587,nil,-72,16018,1438,25420,260,nil,586,nil,10,7680,8479,8613,9947,10209,nil,1870,24507,23582,nil,199,495,356,292,12722,13115,252,13377,14041,977,19960,226,694,nil,nil,nil,nil,nil,nil,nil,nil,nil,21341,nil,15494,15351,14696,170,nil,14434,14303,nil,nil,21200,24638,24114,24769,nil,nil,nil,nil,nil,nil,nil,nil,nil,877,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,610,nil,nil,722,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,20234,nil,nil,nil,nil,20091,19567,19436,19305,19174,nil,4318,nil,-26,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,266,nil,4462,22788,21740,21609,14172,13910,13779,27931,27748,nil,nil,264,2734,305,nil,27294,27386,317,1294,12043,11912,11257,nil,nil,1133,138,140,432,174,389,452,nil,10078,131,191,3022,455,nil,nil,7277,7146,7015,6753,6491,6360,6229,6098,5967,18507,18376,18245,17590,17459,17328,16411,16149,15756,15220,15089,20639,21478,nil,nil,nil,nil,13648,nil,nil,583,548,381,-62,413,376,696,695,584,585,nil,nil,nil,15625,nil,nil,27992,nil,nil,484,16673,17066,nil,nil,nil,nil,nil,nil,nil,17197,nil,2446,nil,455,459,nil,17721,512,17852,nil,nil,17983,18114,nil,nil,-73,nil,5836,1711,509,484,1726,513,564,525,23312,2878,999,1139,614,617,582,nil,610,571,253,616,644,nil,nil,nil,650,171,611,23852,nil,471,1022,3742,3886,687,nil,691,12591,nil,677,2302,1567,638,nil,541,621,676,662,651,690,nil,870,35,36,22133,1006,4894,459,766,651,25,39,730,747,4,793,nil,nil,1141,1285,370,nil,692,nil,714,14827,nil,27438,nil,531,386,291,288,421,142,191,396,nil,nil,nil,nil,nil,nil,nil,713,25036,nil,nil,nil,nil,726,nil,798,717,14565,725,nil,nil,715,nil,690,-60,819,nil,nil,1582,nil,nil,nil,nil,nil,1870,735,nil,740,749,217,251,21057,nil,nil,nil,0,861,795,nil,nil,20916,20780,20508,880,882,nil,nil,769,775,780,nil,nil,785,787,809,nil,nil,nil,nil,nil,nil,nil,nil,nil,801,1280,nil,nil,19031,nil,nil,nil,1,nil,nil,nil,899,nil,nil,901,579,22919,951,nil,nil,nil,-26,nil,885,28114,28053,22657,-85,22526,22395,22264,835,853,26710,26612,3454,5300,814,855,936,938,947,952,5693,5431,5562,5169,5038,4894,4750,4606,4462,3482,3568,4318,4174,2590,4030,nil,154,nil,13518,nil,nil,nil,nil,13246,889,897,901,nil,nil,nil,902,nil,nil,12984,nil,12853,nil,12460,nil,219,nil,nil,nil,12317,1438,nil,904,909,nil,nil,910,23451,916,12174,28175,28236,995,958,nil,nil,24376,929,nil,11781,28602,27809,11650,3598,11388,nil,1066,947,990,nil,11126,nil,nil,10995,nil,nil,nil,4030,1075,nil,3742,25,1080,1084,37,1086,10733,10602,27687,28480,-5,nil,nil,472,nil,27626,27870,10340,nil,nil,191,2014,nil,27463,nil,nil,nil,nil,1249,nil,nil,nil,977,nil,nil,247,nil,286,nil,nil,966,nil,968,nil,nil,nil,25164,nil,9816,971,9673,9411,9280,28358,27565,9018,8875,733,1011,8744,8076,7945,7814,1017,nil,nil,7539,7408,1021,nil,1075,1726,1105,6884,nil,nil,1120,nil,nil,376,13512,nil,13482,nil,27365,nil,975,6622,nil,1310,nil,992,997,1057,1002,nil,nil,nil,nil,nil,nil,1090,2014,nil,nil,nil,307,332,222,361,1006,5693,5562,nil,120,nil,nil,nil,nil,1029,nil,nil,nil,555,26091,311,nil,1007,1092,1014,nil,nil,25503,nil,nil,375,nil,nil,586,nil,nil,861,27241,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,791,464,nil,nil,1016,26529,nil,1148,nil,1131,4,nil,nil,16280,nil,1046,1053,1154,nil,1041,nil,1088,22002,nil,nil,21871,nil,109,23721,1044,nil,1048,-1,233,1103,249,799,1117,1088,24245,nil,1156,2158,10864,nil,nil,nil,372,876,nil,1213,nil,nil,nil,nil,nil,1219,1220,nil,nil,6,1101,-21,-19,68,7,1150,997,989,nil,1103,4606,14958,nil,1227,22,1107,nil,nil,nil,nil,nil,4750,nil,nil,nil,nil,nil,nil,nil,nil,1106,15887,1110,387,385,110,500,nil,2302,16542,nil,1110,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,16804,16935,1236,nil,3886,1121,1169,nil,nil,1129,nil,1212,nil,nil,1131,1136,nil,1141,1143,nil,1144,nil,nil,nil,1150,1204,507,nil,nil,18638,18769,18900,5169,5300,5431,333,25993,1231,27004,-65,-35,26386,26288,480,-32,1154,1155,nil,27200,nil,1154,747,nil,1178,25895,26190,nil,929,1243,281,nil,nil,27339,20916,nil,nil,nil,nil,8207,nil,nil,nil,nil,nil,8338,nil,nil,1227,nil,nil,1237,1224,nil,nil,429,2446,nil,nil,nil,nil,1227,250,nil,137,nil,1357,nil,9149,1361,nil,nil,25797,9542,5038,-18,1362,nil,1363,369,1582,nil,nil,nil,nil,1238,1285,1249,1247,304,nil,nil,10471,3310,3166,nil,3166,nil,nil,-10,23050,nil,nil,27446,nil,497,nil,27515,nil,25493,nil,nil,nil,nil,1248,1250,3022,2878,11519,nil,1251,nil,nil,nil,nil,1257,1258,1260,1262,1263,1264,nil,nil,nil,1309,1267,-39,nil,1276,nil,nil,-66,1275,nil,nil,nil,nil,nil,nil,1323,2734,2158,nil,nil,1285,1286,nil,1287,1288,1291,nil,1316,1296,1283,23181,nil,nil,nil,nil,nil,8,nil,26,771,nil,40,nil,nil,nil,1420,3454,3310,1136,nil,nil,nil,1438,32,33,872,1376,34,nil,1302,1312,1313,1314,1348,3584,26906,nil,nil,nil,nil,nil,nil,nil,1317,27102,nil,145,nil,25699,nil,nil,815,nil,nil,25898,nil,nil,25702,nil,13537,nil,nil,1342,23983,763,1397,3598,nil,19698,19829,nil,nil,nil,nil,1341,1454,713,nil,nil,nil,1457,20377,28297,28419,69,26144,nil,nil,nil,nil,1332,1333,26808,1341,nil,nil,1342,nil,nil,1361,1365,1382,1385,nil,1386,nil,618,28541,nil,973,4174,nil,nil,nil,nil,nil,1195,nil,1392,76,79,109,136,1391,25601,1394,nil,25604,nil,23629,nil,26599,nil,23359,nil,nil,1439,1442,nil,362,nil,142,nil,1399,1401,1404,1409,nil,nil,nil,25996,nil,nil,nil,nil,-129,nil],racc_action_default=[-1,-745,-4,-745,-2,-730,-5,-745,-8,-745,-745,-745,-745,-31,-745,-745,-36,-745,-745,-639,-639,-311,-52,-732,-745,-61,-745,-69,-70,-71,-75,-287,-287,-287,-324,-352,-353,-87,-13,-91,-99,-101,-745,-626,-627,-745,-745,-745,-745,-745,-745,-239,-745,-732,-258,-302,-303,-304,-305,-306,-307,-308,-309,-310,-718,-313,-317,-744,-707,-333,-335,-745,-745,-63,-63,-730,-745,-745,-745,-354,-355,-357,-358,-359,-360,-419,-563,-564,-565,-566,-587,-569,-570,-589,-591,-574,-579,-583,-585,-601,-602,-603,-587,-605,-607,-608,-609,-610,-716,-615,-616,-717,-618,-619,-620,-621,-622,-623,-624,-625,-630,-631,1238,-3,-731,-740,-741,-742,-7,-745,-745,-745,-745,-745,-9,-4,-19,-745,-130,-131,-132,-133,-134,-135,-136,-140,-141,-142,-143,-144,-145,-146,-147,-148,-149,-150,-151,-152,-153,-154,-155,-156,-157,-158,-159,-160,-161,-162,-163,-164,-165,-166,-167,-168,-169,-170,-171,-172,-173,-174,-175,-176,-177,-178,-179,-180,-181,-182,-183,-184,-185,-186,-187,-188,-189,-190,-191,-192,-193,-194,-195,-196,-197,-198,-199,-200,-201,-202,-203,-204,-205,-206,-207,-208,-209,-210,-24,-137,-13,-745,-745,-745,-745,-745,-277,-745,-745,-728,-729,-745,-13,-638,-636,-662,-662,-745,-13,-745,-745,-732,-733,-56,-745,-626,-627,-745,-311,-745,-745,-245,-745,-639,-639,-13,-745,-57,-59,-222,-223,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-259,-260,-261,-262,-745,-65,-66,-745,-130,-131,-170,-171,-172,-188,-193,-200,-203,-626,-627,-705,-745,-428,-430,-745,-726,-727,-76,-277,-745,-332,-434,-443,-445,-82,-440,-83,-732,-84,-265,-282,-292,-292,-286,-290,-293,-745,-587,-709,-713,-745,-85,-86,-730,-14,-745,-17,-745,-89,-13,-732,-745,-92,-95,-13,-107,-108,-745,-745,-115,-324,-327,-732,-745,-639,-639,-352,-353,-356,-441,-745,-97,-745,-103,-321,-745,-224,-225,-606,-233,-234,-745,-246,-251,-13,-315,-732,-266,-737,-737,-745,-745,-737,-745,-334,-62,-745,-745,-745,-13,-13,-730,-745,-731,-626,-627,-745,-745,-311,-745,-370,-371,-125,-126,-745,-128,-745,-311,-634,-745,-348,-662,-567,-745,-745,-745,-745,-745,-745,-745,-745,-6,-743,-25,-26,-27,-28,-29,-745,-745,-21,-22,-23,-138,-745,-32,-35,-298,-745,-745,-297,-33,-745,-37,-745,-311,-49,-51,-211,-270,-293,-53,-54,-38,-212,-270,-732,-278,-292,-292,-719,-720,-287,-438,-721,-722,-720,-719,-287,-437,-439,-721,-722,-745,-555,-745,-383,-384,-732,-704,-704,-644,-645,-647,-647,-647,-661,-663,-664,-665,-666,-667,-668,-669,-670,-671,-745,-673,-675,-677,-682,-684,-685,-688,-693,-695,-696,-698,-699,-700,-702,-745,-745,-745,-48,-219,-55,-732,-331,-745,-745,-745,-277,-321,-745,-745,-745,-745,-745,-745,-745,-220,-221,-226,-227,-228,-229,-230,-231,-235,-236,-237,-238,-240,-241,-242,-243,-244,-247,-248,-249,-250,-732,-263,-67,-732,-449,-287,-719,-720,-73,-77,-663,-732,-292,-732,-288,-447,-449,-732,-326,-283,-745,-284,-745,-289,-745,-294,-745,-712,-715,-12,-731,-16,-18,-732,-88,-319,-104,-93,-745,-732,-277,-745,-745,-114,-745,-638,-606,-745,-100,-105,-745,-745,-745,-745,-264,-745,-328,-745,-732,-745,-267,-739,-738,-269,-739,-322,-323,-708,-13,-361,-362,-13,-745,-745,-745,-745,-745,-745,-277,-745,-745,-321,-63,-125,-126,-127,-745,-745,-277,-344,-632,-745,-13,-420,-662,-423,-568,-588,-593,-745,-595,-571,-590,-745,-592,-573,-745,-576,-745,-578,-581,-745,-582,-745,-604,-10,-20,-745,-30,-745,-301,-745,-745,-277,-745,-745,-745,-745,-442,-745,-279,-281,-745,-745,-78,-276,-435,-745,-745,-80,-436,-44,-254,-744,-744,-350,-637,-745,-642,-643,-745,-745,-654,-745,-657,-745,-659,-745,-745,-372,-745,-374,-376,-379,-382,-732,-676,-686,-687,-697,-701,-640,-46,-256,-351,-330,-734,-719,-720,-719,-720,-732,-745,-745,-58,-463,-466,-467,-468,-469,-471,-473,-476,-477,-534,-732,-489,-492,-504,-508,-513,-515,-516,-519,-520,-587,-523,-525,-526,-527,-532,-533,-745,-745,-537,-538,-539,-540,-541,-542,-543,-544,-545,-546,-547,-745,-745,-553,-60,-745,-745,-706,-745,-450,-72,-431,-447,-272,-279,-274,-745,-409,-745,-325,-292,-291,-295,-745,-710,-711,-745,-15,-90,-745,-96,-102,-732,-719,-720,-275,-723,-113,-745,-98,-745,-218,-232,-252,-745,-314,-316,-318,-737,-744,-363,-744,-64,-364,-365,-338,-339,-745,-745,-455,-341,-745,-732,-719,-720,-723,-320,-13,-125,-126,-129,-732,-13,-745,-346,-745,-745,-732,-594,-597,-598,-599,-600,-13,-572,-575,-577,-580,-584,-586,-139,-34,-299,-745,-732,-719,-720,-720,-719,-50,-271,-745,-735,-292,-40,-214,-41,-215,-79,-42,-217,-43,-216,-81,-745,-745,-744,-368,-13,-556,-744,-557,-558,-704,-683,-688,-703,-646,-647,-647,-674,-647,-647,-694,-647,-671,-386,-689,-732,-745,-745,-381,-672,-745,-745,-745,-745,-745,-745,-442,-464,-745,-745,-474,-475,-745,-745,-745,-494,-732,-732,-488,-495,-501,-745,-745,-491,-745,-745,-745,-507,-514,-518,-745,-522,-524,-530,-531,-535,-536,-548,-549,-745,-611,-612,-613,-126,-551,-745,-68,-429,-409,-433,-432,-745,-732,-444,-410,-732,-13,-446,-285,-296,-714,-94,-442,-106,-732,-268,-745,-366,-745,-745,-340,-342,-745,-745,-13,-442,-745,-442,-745,-745,-13,-349,-421,-424,-426,-413,-745,-745,-300,-442,-39,-213,-280,-45,-255,-11,-13,-562,-369,-745,-745,-560,-641,-745,-650,-745,-652,-745,-655,-745,-658,-660,-373,-375,-377,-380,-47,-257,-745,-465,-504,-470,-472,-481,-485,-732,-732,-732,-732,-732,-732,-552,-486,-487,-511,-496,-499,-502,-732,-587,-736,-732,-505,-509,-512,-517,-521,-528,-529,-745,-253,-13,-74,-273,-704,-704,-390,-392,-392,-392,-408,-745,-732,-671,-679,-680,-691,-448,-329,-336,-745,-337,-745,-460,-295,-744,-343,-345,-633,-745,-13,-13,-745,-422,-596,-561,-13,-626,-627,-745,-745,-311,-559,-647,-647,-647,-647,-745,-745,-745,-478,-479,-480,-482,-483,-484,-503,-497,-745,-490,-745,-493,-745,-550,-451,-745,-388,-389,-393,-399,-401,-745,-404,-745,-406,-411,-745,-745,-678,-745,-13,-456,-745,-745,-452,-453,-454,-347,-745,-745,-732,-415,-417,-418,-555,-277,-745,-745,-321,-745,-648,-651,-653,-656,-378,-505,-745,-500,-506,-510,-704,-681,-391,-392,-392,-392,-392,-692,-392,-412,-690,-745,-321,-744,-13,-461,-462,-425,-427,-414,-745,-554,-732,-719,-720,-723,-320,-647,-745,-498,-387,-745,-396,-745,-398,-745,-402,-745,-405,-407,-320,-723,-367,-744,-416,-442,-649,-392,-392,-392,-392,-457,-458,-459,-745,-394,-397,-400,-403,-392,-395],clist=["44,411,301,309,313,44,141,141,318,318,318,340,285,418,454,493,493,284","382,384,385,473,141,389,297,19,626,511,709,832,19,693,460,466,356,356","44,344,344,635,127,698,699,571,225,618,621,339,563,702,704,706,144,144","890,303,708,598,897,241,983,19,352,352,44,134,387,388,366,136,217,356","356,356,393,297,297,421,422,423,424,798,232,232,305,312,314,907,8,19","795,445,795,8,445,302,561,678,940,352,352,352,359,734,778,737,737,790","445,555,127,124,438,439,1003,451,383,383,236,559,383,715,44,798,610","613,1160,1059,617,512,375,44,904,44,1158,484,484,756,756,123,229,235","336,1037,4,476,509,19,320,320,320,1030,373,973,1032,1184,19,1075,19","1016,782,128,2,607,656,658,17,1012,338,1044,1047,17,792,801,383,383","383,383,216,1055,571,377,380,933,595,595,986,399,516,434,798,493,934","406,408,427,527,461,318,528,795,795,17,826,952,953,286,780,786,390,8","667,652,654,657,657,44,369,605,425,378,8,470,785,1160,1184,298,432,44","379,17,397,1221,639,44,1078,576,372,608,374,818,19,846,19,709,997,19","642,915,1031,1077,44,1136,19,433,444,1079,1157,444,19,19,831,339,903","568,905,449,450,518,319,319,319,444,844,643,999,19,426,419,409,318,318","850,514,515,804,1097,584,17,318,1098,554,565,566,813,965,1151,17,1089","17,1172,1228,376,989,1191,1038,1039,899,795,1174,731,484,303,929,232","232,316,329,330,930,1180,645,939,309,942,460,466,1068,968,313,1061,44","599,1062,622,44,356,912,955,344,44,894,1143,1,553,410,339,412,1175,413","236,339,552,1030,1171,356,19,1206,344,414,19,415,1036,416,352,19,127","1042,1045,417,44,591,525,526,923,852,1043,1046,596,857,806,847,17,352","17,44,44,17,935,601,902,582,1064,1065,17,19,623,624,809,898,17,17,1178","587,907,,,1126,809,,19,19,,961,,,,17,836,581,629,320,,141,127,696,493","1219,845,320,,383,685,849,,,809,580,690,,,336,,,809,691,336,709,709","979,,236,641,1152,437,437,860,904,860,,,1019,,868,725,579,,583,674,144","1021,1023,589,1025,1027,,1028,,,992,,460,466,493,722,493,666,,994,,461",",,1177,318,,991,17,882,,978,17,781,887,,,17,238,,,787,1006,789,684,452","470,793,975,798,689,,,,625,,772,772,685,513,795,969,,802,,1076,,17,371","805,756,756,562,319,445,721,,484,,,756,319,17,17,445,445,756,851,820","445,445,599,735,735,461,318,1090,904,737,1048,599,982,1041,,461,878","880,1049,1050,44,883,885,1229,1110,356,1052,,344,895,470,564,,1060,356",",,344,,567,470,756,975,461,318,19,,,,,784,461,,352,318,,,,44,,,44,352",",,,1230,841,470,823,,,825,,470,,,1133,1134,995,,,44,19,,1144,19,904","461,318,709,709,,,,,,,,827,,,,,,141,916,19,947,44,,,900,470,,900,44",",848,1103,1167,1168,1169,1170,,,794,,,,1120,1121,1122,,19,,,19,,1181",",19,1182,,,,,19,19,444,,144,19,19,,,,,,444,444,,1198,,444,444,,822,864",",1153,,,,,,967,,,,,,,1207,899,772,17,,445,,1147,,1148,772,,,1080,865",",896,,966,772,772,873,,1060,,963,1007,,,1224,284,1223,1060,,599,141","1176,,932,,685,17,,690,17,980,946,1096,,,,,,877,996,,,356,,,344,493",",,,17,,,356,,,344,513,,452,,,,,,1060,,,,,352,,,,,1072,,17,594,,17,352",",44,17,,1222,,44,,17,17,,,993,17,17,1176,,44,,,609,1131,,1029,835,981","19,,1004,,,19,,,,,,,1040,,,,19,,,,,,,,,1156,44,815,383,,,,,,19,,,1015","877,,1066,,,,,,444,,,,,19,,1080,1070,,1080,,772,,772,,,772,772,437,1085",",,1087,772,,,,679,,772,772,,,,1073,,,772,772,,,1199,1014,,,,1018,932",",,,,932,932,,,1127,,,809,44,,879,881,,1058,,884,886,,,1084,,,,,772,","44,1080,1117,1118,1119,1072,44,19,1072,,1072,1092,383,,,,17,,1128,,","17,44,356,,19,1105,,,,31,19,17,1102,735,31,,,,,,383,1095,,,779,,19,",",17,352,31,,,,,,,,,,31,31,31,,31,17,,,,,,,,,,44,1072,,1072,,1072,,1072",",,356,,,297,,,,31,,,,,31,31,1072,19,31,,,44,44,1192,1193,,,44,,,352","900,1155,,1073,,,1073,1161,1073,772,,906,,908,,19,19,,772,,,19,772,",",,,1163,,,461,318,17,,356,,31,297,765,765,44,31,31,31,31,31,,31,,,17","1190,,,,470,17,,,,,1008,352,,,19,772,,,,,,17,,,,1073,,1073,470,1073",",1073,,44,,,,,383,383,,,,,1220,,1081,772,1073,,,,,,879,881,886,884,19","679,,,,,,,,,,,,,,679,941,,17,,,31,31,31,31,31,31,31,,,,,,31,,,,,,31","31,31,31,,,,,17,17,381,18,,,17,,18,31,,,,,,,,,,,,,,,,242,,,,679,,,,",",242,242,242,,18,345,345,,,,,,,,,17,,,,,31,,,,679,,,31,31,,1008,,18","679,,,31,242,242,1002,,242,394,404,404,,,1137,1139,1141,,,,,31,,679",",31,17,,,,31,,765,1081,,,1081,,,1081,765,1081,,,,,,764,764,765,765,",",,,,1074,18,,,31,,242,242,242,242,18,,18,,,,,,31,31,31,,,,,,,679,,435","448,,679,679,,,,,,31,,,,,,,,,1111,,1112,,1113,1081,,1081,,1081,,1081",",,,,1209,1211,1213,1215,,1216,,1002,,,,,1081,,,,,,,,,,,,,,,,,,,18,242","442,242,242,442,242,,31,,,,18,1232,1233,1234,1235,,18,442,242,242,,",",1237,,,,,,,,,,18,,573,,575,,,577,578,,,,31,,679,679,679,,,,,,31,,941","765,,765,,,765,765,,,,,1183,765,1185,,,,,765,765,,242,,1002,,,765,765","242,242,,,,,,,,242,,1204,,,,,,,,,,,,,,,764,18,,31,,18,,,764,345,18,765",",31,,,,764,764,,,,,,,,,1225,345,1226,,1227,,20,,,,670,20,,18,31,,,31",",,1196,,,1236,31,,,242,18,18,,,,,31,,,,31,,,,20,353,353,,,,242,,,,,",",,,,,,,,679,,,31,,,31,31,20,716,31,,,,,,31,31,353,353,353,31,31,,,,",",,,,,,,,,,,,,,,,,,,,,,765,242,,,,,,,,765,,,,765,,,,20,,,,,,,,,20,,20",",,,,796,,381,,799,,,242,764,,764,,,764,764,,,242,,,764,,,,765,,764,764",",,,,,,764,764,,,,,,796,,,381,,,,,,,,,,,,765,448,,,,,,,,,,,,,31,,,764",",,,18,20,,20,,,20,,345,,242,,,20,,,31,345,,20,20,31,31,,866,,,,,,,,31","796,381,,20,,18,,,18,,,,,,893,242,,31,,,,,,,,242,,,911,18,,,,,31,,,",",,,,,,,,,,,,,,,,,,18,,,442,242,,,18,,,,,,442,442,,,,442,442,,,,,,,,20",",,,20,,,764,353,20,,,,,,31,764,,,,764,,,,,796,,353,,,,,31,,976,,,977",",20,,,,,31,,,,,,31,,,,20,20,31,,,,,,,,764,,,,,,,,31,,,,,,,,,,,,,,,,",",,,,,,,764,,,,,,,,1005,,,345,,,,,15,,,,,15,345,,,,242,,,,,31,,,,,,,",",,,,,,,,,,18,,,15,,18,242,,,,,31,31,,,,18,31,,,21,,,,,21,,,,,,15,,,442",",,,,,,398,773,773,,,,,,,,18,,,,,21,347,347,,,31,,31,31,,,,,,,,,,,,31",",,,,,1091,,21,,,,,15,,,,,396,405,405,,15,,15,381,20,,,31,,,,,353,,,",",242,,,,353,,,,,,,,,,,,,18,,,,,,,,20,,21,20,242,,,771,771,,18,21,,21",",,18,,,,,,,,20,,,,,,,,18,,,,1106,,,,,,,15,,440,,,440,,,20,,,20,15,,","20,,,15,440,,20,20,,,,20,20,,,,,,,,15,,,,,,,,,18,,,,,,,,,21,,443,,1145","443,,,,,,,21,,,,,,21,443,18,18,,,773,,18,,,,,,773,,,21,,,,,,773,773",",770,770,,,,,,,,,,,,,,,,,15,,,,15,1187,,,18,15,242,242,,,,,,,,,,,,242",",,,353,,,,,,,,,,,353,15,,,,,,,,,,,,,18,21,15,15,,21,,,,347,21,,,20,","771,,,20,,,,,771,,,,,347,20,,,771,771,,,,,,,21,,,,,,,20,43,,,,,43,,21","21,,,,,,,,20,,,,,,,,296,,,,,,,,,,,,43,343,343,,,773,,773,,,773,773,",",,,,773,,,,,,773,773,,,,43,,,773,773,,,,,,392,296,296,,,,,,,,,,,,,,",",,,769,769,,20,,,770,,,,,,773,,770,,,,,,,20,,770,770,,,20,43,,,,,,,",",43,,43,,,,20,,768,768,353,,,,,771,15,771,,,771,771,,,,,,771,,,,,,771","771,,,,,,,771,771,,,,,,,,,,,,15,,,15,,,,20,,,,,,,,21,,,,,353,,,347,15",",771,,,,,43,347,,,,20,20,,,,,20,43,767,767,,,773,43,,15,,21,440,,21","773,15,,,773,,,440,440,43,,,440,440,,,,,,,21,,,,,,353,856,,20,,,,,,",",770,,770,,,770,770,,,,21,773,770,443,,,,21,770,770,,,,443,443,,770","770,443,443,,,,769,,,20,,,,,769,,773,,,,,,,769,769,43,,,,43,,,771,343","43,,,,770,,,771,,,,771,,,,,,768,343,,,,,,,768,,,,,43,,,,768,768,,,,",",,,,,43,43,,,,,,,,,771,,,,,,,,,,,,,15,,,,,15,,,,,,,,,,347,15,,,771,",",,,,,347,,,,,,,,440,,,,,767,,,,,,,,767,,,,15,,21,,,767,767,21,,,,,770",",,,,,21,,,770,,,,770,,,,,,,769,,769,,443,769,769,,,,,,769,,,,,,769,769",",21,,,,,769,769,,,,,,,,,,770,,766,766,,,,,768,,768,,15,768,768,,,,,","768,,,,,,768,768,769,,15,,770,,768,768,15,,,,,,,,,,,,,,43,,15,,,,1109",",343,,,,,,,21,,343,,,,,,768,,,,,,,,,,21,,,,,43,21,,43,,,,,,,767,,767",",,767,767,21,,15,,1108,767,,43,,,,767,767,34,,,,,34,767,767,,,,,,,,",",,15,15,,43,34,,15,,,,43,,,,34,34,34,,34,769,,,,,21,,,767,769,,,,769",",,,,405,,,,,,,,,34,,,,15,34,34,21,21,34,,,,21,,,,,768,,,,,,,,,768,,","769,768,,,,,,,766,,,,,,,,766,,15,,,,,,405,766,766,21,34,,,,769,34,34","34,34,34,,34,,,,,,768,,,,,,,,,,,,,,,,343,,,,,,,,,,21,343,,,,,768,767",",,,,,,,,767,,,,767,,,,,,,,43,,,,,43,,,,,,,,,,,43,,,,,,,34,34,34,34,34","34,34,,,,,,34,767,,,,,34,34,34,34,,,,,,,43,,,,,,,34,,,,,,,,,,767,,,",",,,,,,,,,,,,,,,,766,,766,,,766,766,,,,,,766,,,,34,,766,766,,,,34,34",",766,766,,,,,34,,,,,,,,,,,,43,,,,,,34,,,,34,,,,,34,,,43,,,766,,,43,",",,,,,,,,,,,,,,43,,,,1104,34,,,,,,,,,,,,,,34,34,34,,,,,,,,,,,,,,,,,,","34,,,,,,,,,,,,,,,43,,,,,,,,,,,,,296,,,,,,,,,,,,,,,,43,43,,,,,43,,,,",",,,,,,249,,,34,,,,766,,,317,317,317,,,,766,,,,766,,364,365,,367,368",",370,,296,,,43,,,,,,,,,34,317,317,,,,,,,,34,,,,,,,,,,,,766,,,,,,,,,",",,,43,,,,,,,,,,,,,,,,,,,766,,,,,,,,,,,,,,,,34,,,,,,,,,,34,,,,,,,,,,",",,,,,,,,,,,,,,,,,34,,,34,,,,,,,34,,,,,,,,,,34,,,,34,,,,,,,,,,,,,,,,",",,,,317,447,,,453,317,34,,,34,34,,,34,,,,,453,34,34,,,,34,34,,,,,,249",",,,,,,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544","545,546,547,548,549,550,,,,,551,,,,,,,,,,,,,,,,,,,,,,,317,317,,,,,,",",317,,,,,,,317,,317,,,317,317,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,604,,,,,34,,,,,,,,,,,,,,,,,,,,,,,34,,,,,34,34,,,,,,,,,,34,,,,,,,,",",,,,,,,,,34,,,,,317,,,,,,,,,,,,34,,,,,,,,,,,,,,,,,,,,,,,692,,,,,,,,",",,,,,,,,,,,,,,,,,317,,,,,,,,,,,,,723,,34,,,,,,,,317,,453,453,453,,,",",34,,,,,,,,,,,,34,,,,,,34,,,,,,34,,,,,,,365,,,,,,,,,34,317,,317,,317",",,,,,,,,,,,,,,,317,,,,,,,,,,453,,,816,,817,,,,,,317,,,317,,,,,,,,,,34",",,317,317,,,,,,,,,,317,,,,,,,,,,,,,,,34,34,,,,,34,,,,,,,,,,,,317,453","317,,,,874,,,317,317,453,453,,,,453,453,,,,,,317,,,,,,,,,34,,34,34,","317,,,,,,,,,,34,,,,,,,,,,,,,,692,723,,,,,,,,,,,,,,34,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,317,,,,,,,,,317,,,317,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,317,,,,,,,,453,,,,,,,,",",,,,1010,1011,,,,,,,,,,,,,,,,,,,,,,,,,,,,1033,1034,453,453,453,453,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1067,,,,,,,,,,,,,,,,,,,,,,,,,",",,317,,,,,,,,,,,,,,,,,,,317,,,,,,,,,,,,,,,,,,,,,,,,,,453,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,317"],racc_goto_table=arr=$$$("Array").$new(4752,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),clist=["72,198,158,91,91,72,75,75,36,36,36,68,46,198,31,230,230,48,107,19,19","10,75,19,72,34,112,10,128,113,34,12,55,55,82,82,72,72,72,73,117,139","139,94,33,110,110,11,92,228,228,228,77,77,13,33,135,70,133,22,111,34","34,34,72,9,44,44,80,17,17,82,82,82,72,72,72,19,19,19,19,239,87,87,56","56,56,235,8,34,95,20,95,8,20,51,31,32,187,34,34,34,69,41,41,177,177","58,20,55,117,7,24,24,149,28,26,26,119,57,26,129,72,239,89,89,152,192","89,28,87,72,231,72,151,225,225,200,200,5,35,35,64,193,2,157,157,34,90","90,90,127,8,147,130,236,34,145,34,207,161,6,3,10,214,214,29,14,65,178","178,29,161,16,26,26,26,26,18,178,94,90,90,175,224,224,13,21,66,25,239","230,176,74,74,27,42,91,36,43,95,95,29,45,202,202,50,52,60,5,8,78,215","215,215,215,72,83,84,8,86,8,75,93,152,236,105,11,72,106,29,114,151,116","72,149,198,120,121,122,123,34,124,34,128,125,34,126,128,131,136,72,142","34,22,22,143,150,22,34,34,112,11,146,66,146,26,26,33,88,88,88,22,73","153,154,34,2,6,155,36,36,156,26,26,70,159,66,29,36,160,162,164,165,70","168,169,29,170,29,192,171,88,172,173,180,182,200,95,192,31,225,33,183","87,87,63,63,63,184,145,157,188,91,189,55,55,147,58,91,195,72,68,196","19,72,82,129,205,72,72,206,149,1,26,210,11,211,193,212,119,11,51,127","130,82,34,192,72,213,34,216,175,217,34,34,117,175,175,218,72,33,35,35","32,219,176,176,80,220,31,223,29,34,29,72,72,29,32,33,229,9,202,202,29","34,11,11,55,233,29,29,234,69,235,,,187,55,,34,34,,73,,,,29,31,8,33,90",",75,117,66,230,111,31,90,,26,91,10,,,55,7,91,,,64,,,55,36,64,128,128","32,,119,26,13,88,88,215,231,215,,,139,,31,66,5,,65,33,77,228,228,65","228,228,,228,,,32,,55,55,230,36,230,17,,32,,91,,,133,36,,110,29,57,","70,29,66,57,,,29,40,,,66,32,66,56,79,75,66,94,239,56,,,,5,,72,72,91","79,95,92,,66,,146,,29,40,66,200,200,88,88,20,117,,225,,,200,88,29,29","20,20,200,157,66,20,20,68,174,174,91,36,41,231,177,73,68,89,32,,91,28","28,32,32,72,28,28,13,146,82,191,,72,24,75,63,,191,82,,,72,,63,75,200","94,91,36,34,,,,,56,91,,34,36,,,,72,,,72,34,,,,113,44,75,11,,,11,,75",",,139,139,10,,,72,34,,135,34,231,91,36,128,128,,,,,,,,117,,,,,,75,66","34,198,72,,,140,75,,140,72,,117,110,228,228,228,228,,,90,,,,32,32,32",",34,,,34,,146,,34,146,,,,,34,34,22,,77,34,34,,,,,,22,22,,12,,22,22,","90,17,,112,,,,,,107,,,,,,,139,200,72,29,,20,,110,,110,72,,,230,8,,87",",158,72,72,8,,191,,46,28,,,146,48,228,191,,68,75,191,,174,,91,29,,91","29,68,174,10,,,,,,90,19,,,82,,,72,230,,,,29,,,82,,,72,79,,79,,,,,,191",",,,,34,,,,,132,,29,40,,29,34,,72,29,,32,,72,,29,29,,,11,29,29,191,,72",",,40,10,,66,88,26,34,,11,,,34,,,,,,,66,,,,34,,,,,,,,,10,72,79,26,,,",",,34,,,11,90,,19,,,,,,22,,,,,34,,230,66,,230,,72,,72,,,72,72,88,66,",",19,72,,,,40,,72,72,,,,140,,,72,72,,,31,87,,,,87,174,,,,,174,174,,,198",",,55,72,,79,79,,174,,79,79,,,11,,,,,72,,72,230,66,66,66,132,72,34,132",",132,11,26,,,,29,,66,,,29,72,82,,34,72,,,,59,34,29,11,174,59,,,,,,26","117,,,40,,34,,,29,34,59,,,,,,,,,,59,59,59,,59,29,,,,,,,,,,72,132,,132",",132,,132,,,82,,,72,,,,59,,,,,59,59,132,34,59,,,72,72,19,19,,,72,,,34","140,11,,140,,,140,11,140,72,,144,,144,,34,34,,72,,,34,72,,,,,33,,,91","36,29,,82,,59,72,98,98,72,59,59,59,59,59,,59,,,29,11,,,,75,29,,,,,79","34,,,34,72,,,,,,29,,,,140,,140,75,140,,140,,72,,,,,26,26,,,,,11,,232","72,140,,,,,,79,79,79,79,34,40,,,,,,,,,,,,,,40,40,,29,,,59,59,59,59,59","59,59,,,,,,59,,,,,,59,59,59,59,,,,,29,29,85,30,,,29,,30,59,,,,,,,,,",",,,,,,30,,,,40,,,,,,30,30,30,,30,30,30,,,,,,,,,29,,,,,59,,,,40,,,59","59,,79,,30,40,,,59,30,30,40,,30,30,30,30,,,141,141,141,,,,,59,,40,,59","29,,,,59,,98,232,,,232,,,232,98,232,,,,,,97,97,98,98,,,,,,144,30,,,59",",30,30,30,30,30,,30,,,,,,59,59,59,,,,,,,40,,85,85,,40,40,,,,,,59,,,",",,,,,144,,144,,144,232,,232,,232,,232,,,,,141,141,141,141,,141,,40,",",,,232,,,,,,,,,,,,,,,,,,,30,30,30,30,30,30,30,,59,,,,30,141,141,141","141,,30,30,30,30,,,,141,,,,,,,,,,30,,85,,85,,,85,85,,,,59,,40,40,40",",,,,,59,,40,98,,98,,,98,98,,,,,144,98,144,,,,,98,98,,30,,40,,,98,98","30,30,,,,,,,,30,,144,,,,,,,,,,,,,,,97,30,,59,,30,,,97,30,30,98,,59,",",,97,97,,,,,,,,,144,30,144,,144,,38,,,,85,38,,30,59,,,59,,,40,,,144","59,,,30,30,30,,,,,59,,,,59,,,,38,38,38,,,,30,,,,,,,,,,,,,,40,,,59,,","59,59,38,85,59,,,,,,59,59,38,38,38,59,59,,,,,,,,,,,,,,,,,,,,,,,,,,,98","30,,,,,,,,98,,,,98,,,,38,,,,,,,,,38,,38,,,,,85,,85,,85,,,30,97,,97,",",97,97,,,30,,,97,,,,98,,97,97,,,,,,,97,97,,,,,,85,,,85,,,,,,,,,,,,98","85,,,,,,,,,,,,,59,,,97,,,,30,38,,38,,,38,,30,,30,,,38,,,59,30,,38,38","59,59,,85,,,,,,,,59,85,85,,38,,30,,,30,,,,,,85,30,,59,,,,,,,,30,,,85","30,,,,,59,,,,,,,,,,,,,,,,,,,,,,30,,,30,30,,,30,,,,,,30,30,,,,30,30,",",,,,,,38,,,,38,,,97,38,38,,,,,,59,97,,,,97,,,,,85,,38,,,,,59,,85,,,85",",38,,,,,59,,,,,,59,,,,38,38,59,,,,,,,,97,,,,,,,,59,,,,,,,,,,,,,,,,,",",,,,,,97,,,,,,,,85,,,30,,,,,23,,,,,23,30,,,,30,,,,,59,,,,,,,,,,,,,,",",,,30,,,23,,30,30,,,,,59,59,,,,30,59,,,39,,,,,39,,,,,,23,,,30,,,,,,","23,109,109,,,,,,,,30,,,,,39,39,39,,,59,,59,59,,,,,,,,,,,,59,,,,,,85",",39,,,,,23,,,,,39,39,39,,23,,23,85,38,,,59,,,,,38,,,,,30,,,,38,,,,,",",,,,,,,30,,,,,,,,38,,39,38,30,,,104,104,,30,39,,39,,,30,,,,,,,,38,,",",,,,,30,,,,30,,,,,,,23,,23,,,23,,,38,,,38,23,,,38,,,23,23,,38,38,,,","38,38,,,,,,,,23,,,,,,,,,30,,,,,,,,,39,,39,,30,39,,,,,,,39,,,,,,39,39","30,30,,,109,,30,,,,,,109,,,39,,,,,,109,109,,103,103,,,,,,,,,,,,,,,,","23,,,,23,30,,,30,23,30,30,,,,,,,,,,,,30,,,,38,,,,,,,,,,,38,23,,,,,,",",,,,,,30,39,23,23,,39,,,,39,39,,,38,,104,,,38,,,,,104,,,,,39,38,,,104","104,,,,,,,39,,,,,,,38,71,,,,,71,,39,39,,,,,,,,38,,,,,,,,71,,,,,,,,,",",,71,71,71,,,109,,109,,,109,109,,,,,,109,,,,,,109,109,,,,71,,,109,109",",,,,,71,71,71,,,,,,,,,,,,,,,,,,102,102,,38,,,103,,,,,,109,,103,,,,,",",38,,103,103,,,38,71,,,,,,,,,71,,71,,,,38,,101,101,38,,,,,104,23,104",",,104,104,,,,,,104,,,,,,104,104,,,,,,,104,104,,,,,,,,,,,,23,,,23,,,","38,,,,,,,,39,,,,,38,,,39,23,,104,,,,,71,39,,,,38,38,,,,,38,71,100,100",",,109,71,,23,,39,23,,39,109,23,,,109,,,23,23,71,,,23,23,,,,,,,39,,,",",,38,39,,38,,,,,,,,103,,103,,,103,103,,,,39,109,103,39,,,,39,103,103",",,,39,39,,103,103,39,39,,,,102,,,38,,,,,102,,109,,,,,,,102,102,71,,",",71,,,104,71,71,,,,103,,,104,,,,104,,,,,,101,71,,,,,,,101,,,,,71,,,","101,101,,,,,,,,,,71,71,,,,,,,,,104,,,,,,,,,,,,,23,,,,,23,,,,,,,,,,39","23,,,104,,,,,,,39,,,,,,,,23,,,,,100,,,,,,,,100,,,,23,,39,,,100,100,39",",,,,103,,,,,,39,,,103,,,,103,,,,,,,102,,102,,39,102,102,,,,,,102,,,",",,102,102,,39,,,,,102,102,,,,,,,,,,103,,99,99,,,,,101,,101,,23,101,101",",,,,,101,,,,,,101,101,102,,23,,103,,101,101,23,,,,,,,,,,,,,,71,,23,",",,23,,71,,,,,,,39,,71,,,,,,101,,,,,,,,,,39,,,,,71,39,,71,,,,,,,100,","100,,,100,100,39,,23,,39,100,,71,,,,100,100,62,,,,,62,100,100,,,,,,",",,,,23,23,,71,62,,23,,,,71,,,,62,62,62,,62,102,,,,,39,,,100,102,,,,102",",,,,39,,,,,,,,,62,,,,23,62,62,39,39,62,,,,39,,,,,101,,,,,,,,,101,,,102","101,,,,,,,99,,,,,,,,99,,23,,,,,,39,99,99,39,62,,,,102,62,62,62,62,62",",62,,,,,,101,,,,,,,,,,,,,,,,71,,,,,,,,,,39,71,,,,,101,100,,,,,,,,,100",",,,100,,,,,,,,71,,,,,71,,,,,,,,,,,71,,,,,,,62,62,62,62,62,62,62,,,,",",62,100,,,,,62,62,62,62,,,,,,,71,,,,,,,62,,,,,,,,,,100,,,,,,,,,,,,,",",,,,,,99,,99,,,99,99,,,,,,99,,,,62,,99,99,,,,62,62,,99,99,,,,,62,,,",",,,,,,,,71,,,,,,62,,,,62,,,,,62,,,71,,,99,,,71,,,,,,,,,,,,,,,,71,,,","71,62,,,,,,,,,,,,,,62,62,62,,,,,,,,,,,,,,,,,,,62,,,,,,,,,,,,,,,71,,",",,,,,,,,,,71,,,,,,,,,,,,,,,,71,71,,,,,71,,,,,,,,,,,37,,,62,,,,99,,,37","37,37,,,,99,,,,99,,37,37,,37,37,,37,,71,,,71,,,,,,,,,62,37,37,,,,,,",",62,,,,,,,,,,,,99,,,,,,,,,,,,,71,,,,,,,,,,,,,,,,,,,99,,,,,,,,,,,,,,",",62,,,,,,,,,,62,,,,,,,,,,,,,,,,,,,,,,,,,,,,62,,,62,,,,,,,62,,,,,,,,",",62,,,,62,,,,,,,,,,,,,,,,,,,,,37,37,,,37,37,62,,,62,62,,,62,,,,,37,62","62,,,,62,62,,,,,,37,,,,,,,37,37,37,37,37,37,37,37,37,37,37,37,37,37","37,37,37,37,37,37,37,37,,,,,37,,,,,,,,,,,,,,,,,,,,,,,37,37,,,,,,,,37",",,,,,,37,,37,,,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,","62,,,,,,,,,,,,,,,,,,,,,,,62,,,,,62,62,,,,,,,,,,62,,,,,,,,,,,,,,,,,,62",",,,,37,,,,,,,,,,,,62,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,",",,,37,,,,,,,,,,,,,37,,62,,,,,,,,37,,37,37,37,,,,,62,,,,,,,,,,,,62,,",",,,62,,,,,,62,,,,,,,37,,,,,,,,,62,37,,37,,37,,,,,,,,,,,,,,,,37,,,,,",",,,,37,,,37,,37,,,,,,37,,,37,,,,,,,,,,62,,,37,37,,,,,,,,,,37,,,,,,,",",,,,,,,62,62,,,,,62,,,,,,,,,,,,37,37,37,,,,37,,,37,37,37,37,,,,37,37",",,,,,37,,,,,,,,,62,,62,62,,37,,,,,,,,,,62,,,,,,,,,,,,,,37,37,,,,,,,",",,,,,,62,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,37,,,37",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37",",,,,,,,37,,,,,,,,,,,,,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,37,37,37,37","37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,",",,,,37,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37"],racc_goto_check=arr=$$$("Array").$new(4752,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),racc_goto_pointer=[nil,343,142,162,nil,134,154,106,86,56,-209,9,-441,-639,-723,nil,-407,59,167,-52,-129,111,35,2068,-107,-30,45,59,-108,164,1262,-210,-357,26,23,121,-26,3589,1625,2121,484,-424,-59,-57,-7,-419,-14,nil,-9,nil,180,66,-345,nil,nil,-193,53,-186,-458,1017,-350,nil,3145,282,104,130,-51,nil,-28,62,-303,2499,-2,-363,116,-4,nil,42,-220,291,20,nil,-5,166,-153,1195,153,63,235,-252,114,-28,-258,-332,-277,-480,nil,849,616,2504,2203,2113,2068,1856,1723,200,161,-51,nil,1618,-339,-763,-364,-596,155,nil,-173,35,nil,98,172,-135,173,-366,-397,-603,-161,-762,-466,-373,-760,-664,-141,-639,nil,-437,-722,nil,nil,-436,-27,269,-822,-716,413,-815,-438,-638,nil,-737,-842,-965,-973,-135,-575,194,-361,-88,-25,-714,-711,-394,-9,nil,-18,-18,nil,nil,-488,-796,-691,-919,-530,-844,34,-562,-553,-422,-760,nil,-620,nil,-620,-431,-425,nil,nil,-648,-424,-423,nil,-352,-816,-781,nil,-615,-612,nil,-89,nil,-390,nil,-558,nil,nil,-437,-353,-735,nil,nil,257,254,255,264,-250,-200,265,266,271,-274,-271,nil,nil,-259,-168,-98,nil,nil,-432,-311,-218,-569,230,-298,-730,-616,-983,nil,nil,-491],racc_goto_default=[nil,nil,nil,nil,5,nil,6,391,334,nil,nil,472,nil,984,nil,331,332,nil,nil,nil,13,14,22,247,nil,nil,16,nil,441,248,363,nil,nil,637,251,nil,27,25,252,246,517,nil,nil,nil,nil,nil,nil,386,143,26,nil,nil,nil,28,29,812,nil,nil,nil,351,nil,30,348,455,37,nil,nil,39,42,41,nil,243,244,403,nil,463,142,87,nil,446,103,51,54,283,nil,323,nil,891,456,nil,457,468,480,686,569,321,307,55,56,57,58,59,60,61,62,63,nil,308,69,70,nil,nil,nil,nil,nil,77,nil,619,78,230,nil,nil,nil,nil,nil,nil,nil,711,492,nil,712,713,478,474,475,nil,1179,707,1071,nil,479,nil,nil,nil,481,nil,483,nil,971,nil,nil,nil,490,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,467,nil,nil,791,783,nil,nil,nil,nil,nil,nil,1051,nil,736,937,738,739,743,740,741,nil,nil,742,744,nil,nil,nil,936,938,nil,748,750,751,752,753,nil,757,501,758,759,760,761,nil,nil,nil,86,88,89,nil,nil,nil,nil,647,nil,nil,nil,nil,nil,99,100,nil,231,901,234,477,nil,482,909,495,497,498,1082,502,1083,505,508,326],racc_reduce_table=[0,0,"racc_error",0,150,"_reduce_1",2,148,"_reduce_2",2,149,"_reduce_3",0,151,"_reduce_4",1,151,"_reduce_5",3,151,"_reduce_6",2,151,"_reduce_7",1,153,"_reduce_none",2,153,"_reduce_9",3,156,"_reduce_10",4,157,"_reduce_11",2,158,"_reduce_12",0,162,"_reduce_13",1,162,"_reduce_14",3,162,"_reduce_15",2,162,"_reduce_16",1,163,"_reduce_none",2,163,"_reduce_18",0,174,"_reduce_19",4,155,"_reduce_20",3,155,"_reduce_21",3,155,"_reduce_22",3,155,"_reduce_23",2,155,"_reduce_24",3,155,"_reduce_25",3,155,"_reduce_26",3,155,"_reduce_27",3,155,"_reduce_28",3,155,"_reduce_29",4,155,"_reduce_30",1,155,"_reduce_none",3,155,"_reduce_32",3,155,"_reduce_33",5,155,"_reduce_34",3,155,"_reduce_35",1,155,"_reduce_none",3,167,"_reduce_37",3,167,"_reduce_38",6,167,"_reduce_39",5,167,"_reduce_40",5,167,"_reduce_41",5,167,"_reduce_42",5,167,"_reduce_43",4,167,"_reduce_44",6,167,"_reduce_45",4,167,"_reduce_46",6,167,"_reduce_47",3,167,"_reduce_48",1,175,"_reduce_none",3,175,"_reduce_50",1,175,"_reduce_none",1,173,"_reduce_none",3,173,"_reduce_53",3,173,"_reduce_54",3,173,"_reduce_55",2,173,"_reduce_56",0,189,"_reduce_57",4,173,"_reduce_58",0,190,"_reduce_59",4,173,"_reduce_60",1,173,"_reduce_none",1,166,"_reduce_none",0,194,"_reduce_63",3,191,"_reduce_64",1,193,"_reduce_65",2,181,"_reduce_66",0,199,"_reduce_67",5,185,"_reduce_68",1,169,"_reduce_none",1,169,"_reduce_none",1,200,"_reduce_none",4,200,"_reduce_72",0,207,"_reduce_73",4,204,"_reduce_74",1,206,"_reduce_none",2,183,"_reduce_76",3,183,"_reduce_77",4,183,"_reduce_78",5,183,"_reduce_79",4,183,"_reduce_80",5,183,"_reduce_81",2,183,"_reduce_82",2,183,"_reduce_83",2,183,"_reduce_84",2,183,"_reduce_85",2,183,"_reduce_86",1,168,"_reduce_87",3,168,"_reduce_88",1,212,"_reduce_89",3,212,"_reduce_90",1,211,"_reduce_none",2,211,"_reduce_92",3,211,"_reduce_93",5,211,"_reduce_94",2,211,"_reduce_95",4,211,"_reduce_96",2,211,"_reduce_97",4,211,"_reduce_98",1,211,"_reduce_99",3,211,"_reduce_100",1,215,"_reduce_none",3,215,"_reduce_102",2,214,"_reduce_103",3,214,"_reduce_104",1,217,"_reduce_105",3,217,"_reduce_106",1,216,"_reduce_107",1,216,"_reduce_108",4,216,"_reduce_109",3,216,"_reduce_110",3,216,"_reduce_111",3,216,"_reduce_112",3,216,"_reduce_113",2,216,"_reduce_114",1,216,"_reduce_115",1,170,"_reduce_116",1,170,"_reduce_117",4,170,"_reduce_118",3,170,"_reduce_119",3,170,"_reduce_120",3,170,"_reduce_121",3,170,"_reduce_122",2,170,"_reduce_123",1,170,"_reduce_124",1,220,"_reduce_125",1,220,"_reduce_none",2,221,"_reduce_127",1,221,"_reduce_128",3,221,"_reduce_129",1,195,"_reduce_none",1,195,"_reduce_none",1,195,"_reduce_none",1,195,"_reduce_none",1,195,"_reduce_none",1,164,"_reduce_135",1,164,"_reduce_none",1,165,"_reduce_137",0,225,"_reduce_138",4,165,"_reduce_139",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",3,184,"_reduce_211",3,184,"_reduce_212",6,184,"_reduce_213",5,184,"_reduce_214",5,184,"_reduce_215",5,184,"_reduce_216",5,184,"_reduce_217",4,184,"_reduce_218",3,184,"_reduce_219",3,184,"_reduce_220",3,184,"_reduce_221",2,184,"_reduce_222",2,184,"_reduce_223",2,184,"_reduce_224",2,184,"_reduce_225",3,184,"_reduce_226",3,184,"_reduce_227",3,184,"_reduce_228",3,184,"_reduce_229",3,184,"_reduce_230",3,184,"_reduce_231",4,184,"_reduce_232",2,184,"_reduce_233",2,184,"_reduce_234",3,184,"_reduce_235",3,184,"_reduce_236",3,184,"_reduce_237",3,184,"_reduce_238",1,184,"_reduce_none",3,184,"_reduce_240",3,184,"_reduce_241",3,184,"_reduce_242",3,184,"_reduce_243",3,184,"_reduce_244",2,184,"_reduce_245",2,184,"_reduce_246",3,184,"_reduce_247",3,184,"_reduce_248",3,184,"_reduce_249",3,184,"_reduce_250",0,231,"_reduce_251",4,184,"_reduce_252",6,184,"_reduce_253",4,184,"_reduce_254",6,184,"_reduce_255",4,184,"_reduce_256",6,184,"_reduce_257",1,184,"_reduce_none",1,230,"_reduce_none",1,230,"_reduce_none",1,230,"_reduce_none",1,230,"_reduce_none",3,228,"_reduce_263",3,228,"_reduce_264",1,232,"_reduce_none",1,233,"_reduce_none",2,233,"_reduce_none",4,233,"_reduce_268",2,233,"_reduce_269",1,226,"_reduce_none",3,226,"_reduce_271",3,238,"_reduce_272",5,238,"_reduce_273",3,238,"_reduce_274",0,240,"_reduce_275",1,240,"_reduce_none",0,178,"_reduce_277",1,178,"_reduce_none",2,178,"_reduce_none",4,178,"_reduce_280",2,178,"_reduce_281",1,210,"_reduce_282",2,210,"_reduce_283",2,210,"_reduce_284",4,210,"_reduce_285",1,210,"_reduce_286",0,243,"_reduce_287",2,203,"_reduce_288",2,242,"_reduce_289",1,242,"_reduce_290",2,241,"_reduce_291",0,241,"_reduce_292",1,235,"_reduce_293",2,235,"_reduce_294",3,235,"_reduce_295",4,235,"_reduce_296",1,172,"_reduce_297",1,172,"_reduce_none",3,171,"_reduce_299",4,171,"_reduce_300",2,171,"_reduce_301",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_312",0,267,"_reduce_313",4,229,"_reduce_314",0,268,"_reduce_315",4,229,"_reduce_316",0,269,"_reduce_317",4,229,"_reduce_318",3,229,"_reduce_319",3,229,"_reduce_320",2,229,"_reduce_321",3,229,"_reduce_322",3,229,"_reduce_323",1,229,"_reduce_324",4,229,"_reduce_325",3,229,"_reduce_326",1,229,"_reduce_327",0,270,"_reduce_328",6,229,"_reduce_329",4,229,"_reduce_330",3,229,"_reduce_331",2,229,"_reduce_332",1,229,"_reduce_none",2,229,"_reduce_334",1,229,"_reduce_none",6,229,"_reduce_336",6,229,"_reduce_337",4,229,"_reduce_338",4,229,"_reduce_339",5,229,"_reduce_340",4,229,"_reduce_341",5,229,"_reduce_342",6,229,"_reduce_343",0,271,"_reduce_344",6,229,"_reduce_345",0,272,"_reduce_346",7,229,"_reduce_347",0,273,"_reduce_348",5,229,"_reduce_349",4,229,"_reduce_350",4,229,"_reduce_351",1,229,"_reduce_352",1,229,"_reduce_353",1,229,"_reduce_354",1,229,"_reduce_355",1,177,"_reduce_none",1,262,"_reduce_357",1,265,"_reduce_358",1,196,"_reduce_359",1,209,"_reduce_360",1,257,"_reduce_none",1,257,"_reduce_none",2,257,"_reduce_363",1,192,"_reduce_none",1,192,"_reduce_none",1,258,"_reduce_none",5,258,"_reduce_367",1,160,"_reduce_none",2,160,"_reduce_369",1,261,"_reduce_none",1,261,"_reduce_none",1,274,"_reduce_372",3,274,"_reduce_373",1,277,"_reduce_374",3,277,"_reduce_375",1,276,"_reduce_none",3,276,"_reduce_377",5,276,"_reduce_378",1,276,"_reduce_379",3,276,"_reduce_380",2,278,"_reduce_381",1,278,"_reduce_382",1,279,"_reduce_none",1,279,"_reduce_none",0,284,"_reduce_385",2,282,"_reduce_386",4,283,"_reduce_387",2,283,"_reduce_388",2,283,"_reduce_389",1,283,"_reduce_390",2,288,"_reduce_391",0,288,"_reduce_392",1,289,"_reduce_none",6,290,"_reduce_394",8,290,"_reduce_395",4,290,"_reduce_396",6,290,"_reduce_397",4,290,"_reduce_398",2,290,"_reduce_none",6,290,"_reduce_400",2,290,"_reduce_401",4,290,"_reduce_402",6,290,"_reduce_403",2,290,"_reduce_404",4,290,"_reduce_405",2,290,"_reduce_406",4,290,"_reduce_407",1,290,"_reduce_none",0,294,"_reduce_409",1,294,"_reduce_410",3,295,"_reduce_411",4,295,"_reduce_412",1,296,"_reduce_413",4,296,"_reduce_414",1,297,"_reduce_415",3,297,"_reduce_416",1,298,"_reduce_417",1,298,"_reduce_none",0,302,"_reduce_419",0,303,"_reduce_420",5,256,"_reduce_421",4,300,"_reduce_422",1,300,"_reduce_423",0,306,"_reduce_424",4,301,"_reduce_425",0,307,"_reduce_426",4,301,"_reduce_427",0,309,"_reduce_428",4,305,"_reduce_429",2,201,"_reduce_430",4,201,"_reduce_431",5,201,"_reduce_432",5,201,"_reduce_433",2,255,"_reduce_434",4,255,"_reduce_435",4,255,"_reduce_436",3,255,"_reduce_437",3,255,"_reduce_438",3,255,"_reduce_439",2,255,"_reduce_440",1,255,"_reduce_441",4,255,"_reduce_442",0,311,"_reduce_443",4,254,"_reduce_444",0,312,"_reduce_445",4,254,"_reduce_446",0,313,"_reduce_447",3,205,"_reduce_448",0,314,"_reduce_449",0,315,"_reduce_450",4,308,"_reduce_451",5,259,"_reduce_452",1,316,"_reduce_453",1,316,"_reduce_none",0,319,"_reduce_455",0,320,"_reduce_456",7,260,"_reduce_457",1,318,"_reduce_458",1,318,"_reduce_none",1,317,"_reduce_460",3,317,"_reduce_461",3,317,"_reduce_462",1,188,"_reduce_none",2,188,"_reduce_464",3,188,"_reduce_465",1,188,"_reduce_466",1,188,"_reduce_467",1,188,"_reduce_468",1,321,"_reduce_none",3,326,"_reduce_470",1,326,"_reduce_none",3,328,"_reduce_472",1,328,"_reduce_none",1,330,"_reduce_474",1,331,"_reduce_475",1,329,"_reduce_none",1,329,"_reduce_none",4,329,"_reduce_478",4,329,"_reduce_479",4,329,"_reduce_480",3,329,"_reduce_481",4,329,"_reduce_482",4,329,"_reduce_483",4,329,"_reduce_484",3,329,"_reduce_485",3,329,"_reduce_486",3,329,"_reduce_487",2,329,"_reduce_488",0,335,"_reduce_489",4,329,"_reduce_490",2,329,"_reduce_491",0,336,"_reduce_492",4,329,"_reduce_493",1,322,"_reduce_494",1,322,"_reduce_495",2,322,"_reduce_496",3,322,"_reduce_497",5,322,"_reduce_498",2,322,"_reduce_499",4,322,"_reduce_500",1,322,"_reduce_none",2,337,"_reduce_502",3,337,"_reduce_503",1,324,"_reduce_504",3,324,"_reduce_505",5,323,"_reduce_506",2,340,"_reduce_507",1,340,"_reduce_508",1,339,"_reduce_509",3,339,"_reduce_510",1,338,"_reduce_none",3,325,"_reduce_512",1,325,"_reduce_513",2,325,"_reduce_514",1,325,"_reduce_515",1,341,"_reduce_516",3,341,"_reduce_517",2,343,"_reduce_518",1,343,"_reduce_519",1,344,"_reduce_520",3,344,"_reduce_521",2,346,"_reduce_522",1,346,"_reduce_523",2,348,"_reduce_524",1,342,"_reduce_none",1,342,"_reduce_none",1,332,"_reduce_none",3,332,"_reduce_528",3,332,"_reduce_529",2,332,"_reduce_530",2,332,"_reduce_531",1,332,"_reduce_none",1,332,"_reduce_none",1,332,"_reduce_none",2,332,"_reduce_535",2,332,"_reduce_536",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_545",1,349,"_reduce_none",1,327,"_reduce_547",2,350,"_reduce_548",2,350,"_reduce_549",4,351,"_reduce_550",2,333,"_reduce_551",3,333,"_reduce_552",1,333,"_reduce_553",6,159,"_reduce_554",0,159,"_reduce_555",1,353,"_reduce_556",1,353,"_reduce_none",1,353,"_reduce_none",2,354,"_reduce_559",1,354,"_reduce_none",2,161,"_reduce_561",1,161,"_reduce_none",1,244,"_reduce_none",1,244,"_reduce_none",1,245,"_reduce_565",1,356,"_reduce_566",2,356,"_reduce_567",3,357,"_reduce_568",1,357,"_reduce_569",1,357,"_reduce_570",3,246,"_reduce_571",4,247,"_reduce_572",3,248,"_reduce_573",0,360,"_reduce_574",3,360,"_reduce_575",1,361,"_reduce_576",2,361,"_reduce_577",3,250,"_reduce_578",0,363,"_reduce_579",3,363,"_reduce_580",3,249,"_reduce_581",3,251,"_reduce_582",0,364,"_reduce_583",3,364,"_reduce_584",0,365,"_reduce_585",3,365,"_reduce_586",0,345,"_reduce_587",2,345,"_reduce_588",0,358,"_reduce_589",2,358,"_reduce_590",0,359,"_reduce_591",2,359,"_reduce_592",1,362,"_reduce_593",2,362,"_reduce_594",0,367,"_reduce_595",4,362,"_reduce_596",1,366,"_reduce_597",1,366,"_reduce_598",1,366,"_reduce_599",1,366,"_reduce_none",1,224,"_reduce_none",1,224,"_reduce_none",1,368,"_reduce_603",3,369,"_reduce_604",1,355,"_reduce_605",2,355,"_reduce_606",1,227,"_reduce_607",1,227,"_reduce_608",1,227,"_reduce_609",1,227,"_reduce_610",1,352,"_reduce_611",1,352,"_reduce_612",1,352,"_reduce_613",1,218,"_reduce_614",1,218,"_reduce_615",1,218,"_reduce_616",1,218,"_reduce_617",1,218,"_reduce_618",1,219,"_reduce_619",1,219,"_reduce_620",1,219,"_reduce_621",1,219,"_reduce_622",1,219,"_reduce_623",1,219,"_reduce_624",1,219,"_reduce_625",1,252,"_reduce_626",1,252,"_reduce_627",1,176,"_reduce_628",1,176,"_reduce_629",1,186,"_reduce_630",1,186,"_reduce_631",0,370,"_reduce_632",4,263,"_reduce_633",0,263,"_reduce_634",1,182,"_reduce_none",1,182,"_reduce_636",3,371,"_reduce_637",1,266,"_reduce_none",0,373,"_reduce_639",3,266,"_reduce_640",4,372,"_reduce_641",2,372,"_reduce_642",2,372,"_reduce_643",1,372,"_reduce_644",1,372,"_reduce_645",2,375,"_reduce_646",0,375,"_reduce_647",6,304,"_reduce_648",8,304,"_reduce_649",4,304,"_reduce_650",6,304,"_reduce_651",4,304,"_reduce_652",6,304,"_reduce_653",2,304,"_reduce_654",4,304,"_reduce_655",6,304,"_reduce_656",2,304,"_reduce_657",4,304,"_reduce_658",2,304,"_reduce_659",4,304,"_reduce_660",1,304,"_reduce_661",0,304,"_reduce_662",1,239,"_reduce_663",1,299,"_reduce_664",1,299,"_reduce_665",1,299,"_reduce_666",1,299,"_reduce_667",1,275,"_reduce_none",1,275,"_reduce_669",1,377,"_reduce_670",1,378,"_reduce_671",3,378,"_reduce_672",1,291,"_reduce_673",3,291,"_reduce_674",1,379,"_reduce_675",2,380,"_reduce_676",1,380,"_reduce_677",2,381,"_reduce_678",1,381,"_reduce_679",1,285,"_reduce_680",3,285,"_reduce_681",1,374,"_reduce_682",3,374,"_reduce_683",1,347,"_reduce_none",1,347,"_reduce_none",2,281,"_reduce_686",2,280,"_reduce_687",1,280,"_reduce_688",3,382,"_reduce_689",3,383,"_reduce_690",1,292,"_reduce_691",3,292,"_reduce_692",1,376,"_reduce_693",3,376,"_reduce_694",1,384,"_reduce_none",1,384,"_reduce_none",2,293,"_reduce_697",1,293,"_reduce_698",1,385,"_reduce_none",1,385,"_reduce_none",2,287,"_reduce_701",1,287,"_reduce_702",2,286,"_reduce_703",0,286,"_reduce_704",1,197,"_reduce_none",3,197,"_reduce_706",0,253,"_reduce_707",2,253,"_reduce_none",1,237,"_reduce_709",3,237,"_reduce_710",3,386,"_reduce_711",2,386,"_reduce_712",1,386,"_reduce_713",4,386,"_reduce_714",2,386,"_reduce_715",1,208,"_reduce_none",1,208,"_reduce_none",1,208,"_reduce_none",1,202,"_reduce_none",1,202,"_reduce_none",1,202,"_reduce_none",1,202,"_reduce_none",1,310,"_reduce_none",1,310,"_reduce_none",1,310,"_reduce_none",1,198,"_reduce_none",1,198,"_reduce_none",1,180,"_reduce_728",1,180,"_reduce_729",0,152,"_reduce_none",1,152,"_reduce_none",0,187,"_reduce_none",1,187,"_reduce_none",2,213,"_reduce_734",2,179,"_reduce_735",2,334,"_reduce_736",0,236,"_reduce_none",1,236,"_reduce_none",1,236,"_reduce_none",1,264,"_reduce_740",1,264,"_reduce_none",1,154,"_reduce_none",2,154,"_reduce_none",0,234,"_reduce_744"],745,1238,racc_token_table=$hash(!1,0,"error",1,"kCLASS",2,"kMODULE",3,"kDEF",4,"kUNDEF",5,"kBEGIN",6,"kRESCUE",7,"kENSURE",8,"kEND",9,"kIF",10,"kUNLESS",11,"kTHEN",12,"kELSIF",13,"kELSE",14,"kCASE",15,"kWHEN",16,"kWHILE",17,"kUNTIL",18,"kFOR",19,"kBREAK",20,"kNEXT",21,"kREDO",22,"kRETRY",23,"kIN",24,"kDO",25,"kDO_COND",26,"kDO_BLOCK",27,"kDO_LAMBDA",28,"kRETURN",29,"kYIELD",30,"kSUPER",31,"kSELF",32,"kNIL",33,"kTRUE",34,"kFALSE",35,"kAND",36,"kOR",37,"kNOT",38,"kIF_MOD",39,"kUNLESS_MOD",40,"kWHILE_MOD",41,"kUNTIL_MOD",42,"kRESCUE_MOD",43,"kALIAS",44,"kDEFINED",45,"klBEGIN",46,"klEND",47,"k__LINE__",48,"k__FILE__",49,"k__ENCODING__",50,"tIDENTIFIER",51,"tFID",52,"tGVAR",53,"tIVAR",54,"tCONSTANT",55,"tLABEL",56,"tCVAR",57,"tNTH_REF",58,"tBACK_REF",59,"tSTRING_CONTENT",60,"tINTEGER",61,"tFLOAT",62,"tUPLUS",63,"tUMINUS",64,"tUNARY_NUM",65,"tPOW",66,"tCMP",67,"tEQ",68,"tEQQ",69,"tNEQ",70,"tGEQ",71,"tLEQ",72,"tANDOP",73,"tOROP",74,"tMATCH",75,"tNMATCH",76,"tDOT",77,"tDOT2",78,"tDOT3",79,"tAREF",80,"tASET",81,"tLSHFT",82,"tRSHFT",83,"tCOLON2",84,"tCOLON3",85,"tOP_ASGN",86,"tASSOC",87,"tLPAREN",88,"tLPAREN2",89,"tRPAREN",90,"tLPAREN_ARG",91,"tLBRACK",92,"tLBRACK2",93,"tRBRACK",94,"tLBRACE",95,"tLBRACE_ARG",96,"tSTAR",97,"tSTAR2",98,"tAMPER",99,"tAMPER2",100,"tTILDE",101,"tPERCENT",102,"tDIVIDE",103,"tDSTAR",104,"tPLUS",105,"tMINUS",106,"tLT",107,"tGT",108,"tPIPE",109,"tBANG",110,"tCARET",111,"tLCURLY",112,"tRCURLY",113,"tBACK_REF2",114,"tSYMBEG",115,"tSTRING_BEG",116,"tXSTRING_BEG",117,"tREGEXP_BEG",118,"tREGEXP_OPT",119,"tWORDS_BEG",120,"tQWORDS_BEG",121,"tSYMBOLS_BEG",122,"tQSYMBOLS_BEG",123,"tSTRING_DBEG",124,"tSTRING_DVAR",125,"tSTRING_END",126,"tSTRING_DEND",127,"tSTRING",128,"tSYMBOL",129,"tNL",130,"tEH",131,"tCOLON",132,"tCOMMA",133,"tSPACE",134,"tSEMI",135,"tLAMBDA",136,"tLAMBEG",137,"tCHARACTER",138,"tRATIONAL",139,"tIMAGINARY",140,"tLABEL_END",141,"tANDDOT",142,"tBDOT2",143,"tBDOT3",144,"tEQL",145,"tLOWEST",146),147,!0,$const_set($nesting[0],"Racc_arg",[racc_action_table,racc_action_check,racc_action_default,racc_action_pointer,racc_goto_table,racc_goto_check,racc_goto_default,racc_goto_pointer,147,racc_reduce_table,racc_token_table,1238,745,true]),$const_set($nesting[0],"Racc_token_to_s_table",["$end","error","kCLASS","kMODULE","kDEF","kUNDEF","kBEGIN","kRESCUE","kENSURE","kEND","kIF","kUNLESS","kTHEN","kELSIF","kELSE","kCASE","kWHEN","kWHILE","kUNTIL","kFOR","kBREAK","kNEXT","kREDO","kRETRY","kIN","kDO","kDO_COND","kDO_BLOCK","kDO_LAMBDA","kRETURN","kYIELD","kSUPER","kSELF","kNIL","kTRUE","kFALSE","kAND","kOR","kNOT","kIF_MOD","kUNLESS_MOD","kWHILE_MOD","kUNTIL_MOD","kRESCUE_MOD","kALIAS","kDEFINED","klBEGIN","klEND","k__LINE__","k__FILE__","k__ENCODING__","tIDENTIFIER","tFID","tGVAR","tIVAR","tCONSTANT","tLABEL","tCVAR","tNTH_REF","tBACK_REF","tSTRING_CONTENT","tINTEGER","tFLOAT","tUPLUS","tUMINUS","tUNARY_NUM","tPOW","tCMP","tEQ","tEQQ","tNEQ","tGEQ","tLEQ","tANDOP","tOROP","tMATCH","tNMATCH","tDOT","tDOT2","tDOT3","tAREF","tASET","tLSHFT","tRSHFT","tCOLON2","tCOLON3","tOP_ASGN","tASSOC","tLPAREN","tLPAREN2","tRPAREN","tLPAREN_ARG","tLBRACK","tLBRACK2","tRBRACK","tLBRACE","tLBRACE_ARG","tSTAR","tSTAR2","tAMPER","tAMPER2","tTILDE","tPERCENT","tDIVIDE","tDSTAR","tPLUS","tMINUS","tLT","tGT","tPIPE","tBANG","tCARET","tLCURLY","tRCURLY","tBACK_REF2","tSYMBEG","tSTRING_BEG","tXSTRING_BEG","tREGEXP_BEG","tREGEXP_OPT","tWORDS_BEG","tQWORDS_BEG","tSYMBOLS_BEG","tQSYMBOLS_BEG","tSTRING_DBEG","tSTRING_DVAR","tSTRING_END","tSTRING_DEND","tSTRING","tSYMBOL","tNL","tEH","tCOLON","tCOMMA","tSPACE","tSEMI","tLAMBDA","tLAMBEG","tCHARACTER","tRATIONAL","tIMAGINARY","tLABEL_END","tANDDOT","tBDOT2","tBDOT3","tEQL","tLOWEST","$start","program","top_compstmt","@1","top_stmts","opt_terms","top_stmt","terms","stmt","begin_block","bodystmt","compstmt","opt_rescue","opt_else","opt_ensure","stmts","stmt_or_begin","fitem","undef_list","expr_value","command_asgn","mlhs","command_call","lhs","mrhs","mrhs_arg","expr","@2","command_rhs","var_lhs","primary_value","opt_call_args","rbracket","call_op","defn_head","f_opt_paren_args","command","arg","defs_head","backref","opt_nl","p_top_expr_body","@3","@4","expr_value_do","do","def_name","@5","fname","k_def","singleton","dot_or_colon","@6","block_command","block_call","operation2","command_args","cmd_brace_block","brace_body","fcall","@7","operation","k_return","call_args","mlhs_basic","mlhs_inner","rparen","mlhs_head","mlhs_item","mlhs_node","mlhs_post","user_variable","keyword_variable","cname","cpath","op","reswords","symbol","@8","arg_rhs","simple_numeric","rel_expr","primary","relop","@9","arg_value","aref_args","none","args","trailer","assocs","paren_args","args_forward","opt_paren_args","opt_block_arg","block_arg","@10","literal","strings","xstring","regexp","words","qwords","symbols","qsymbols","var_ref","assoc_list","brace_block","method_call","lambda","then","if_tail","case_body","p_case_body","for_var","k_class","superclass","term","k_module","f_arglist","@11","@12","@13","@14","@15","@16","@17","f_marg","f_norm_arg","f_margs","f_marg_list","f_rest_marg","f_any_kwrest","f_kwrest","f_no_kwarg","f_eq","block_args_tail","@18","f_block_kwarg","opt_f_block_arg","f_block_arg","opt_block_args_tail","excessed_comma","block_param","f_arg","f_block_optarg","f_rest_arg","opt_block_param","block_param_def","opt_bv_decl","bv_decls","bvar","f_bad_arg","f_larglist","lambda_body","@19","@20","f_args","do_block","@21","@22","do_body","@23","operation3","@24","@25","@26","@27","@28","cases","p_top_expr","p_cases","@29","@30","p_expr","p_args","p_find","p_args_tail","p_kwargs","p_as","p_variable","p_alt","p_expr_basic","p_lparen","p_lbracket","p_value","p_const","rbrace","@31","@32","p_args_head","p_arg","p_args_post","p_rest","p_kwarg","p_any_kwrest","p_kw","p_kw_label","string_contents","p_kwrest","kwrest_mark","p_kwnorest","p_primitive","p_var_ref","p_expr_ref","nonlocal_var","exc_list","exc_var","numeric","string","string1","xstring_contents","regexp_contents","word_list","word","string_content","symbol_list","qword_list","qsym_list","string_dvar","@33","ssym","dsym","@34","f_paren_args","args_tail","@35","f_kwarg","opt_args_tail","f_optarg","f_arg_asgn","f_arg_item","f_label","f_kw","f_block_kw","f_opt","f_block_opt","restarg_mark","blkarg_mark","assoc"]),$const_set($nesting[0],"Racc_debug_parser",!1),$def(self,"$_reduce_1",(function(val,_values,result){return this.current_arg_stack.$push(nil),this.max_numparam_stack.$push($hash2(["static"],{static:!0})),result}),3),$def(self,"$_reduce_2",(function(val,_values,result){return result=val["$[]"](1),this.current_arg_stack.$pop(),this.max_numparam_stack.$pop(),result}),3),$def(self,"$_reduce_3",(function(val,_values,result){return this.builder.$compstmt(val["$[]"](0))}),3),$def(self,"$_reduce_4",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_5",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_6",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_7",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_9",(function(val,_values,result){return $send(this.builder,"preexe",[val["$[]"](0)].concat($to_a(val["$[]"](1))))}),3),$def(self,"$_reduce_10",(function(val,_values,result){return val}),3),$def(self,"$_reduce_11",(function(val,_values,result){var $a,$b,else_,ensure_t,ensure_,rescue_bodies=nil,else_t=nil;return rescue_bodies=val["$[]"](1),$b=val["$[]"](2),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],$b=val["$[]"](3),ensure_t=null==($a=$to_ary($b))[0]?nil:$a[0],ensure_=null==$a[1]?nil:$a[1],$truthy(rescue_bodies["$empty?"]())&&$not(else_t["$nil?"]())&&this.$diagnostic("error","useless_else",nil,else_t),this.builder.$begin_body(val["$[]"](0),rescue_bodies,else_t,else_,ensure_t,ensure_)}),3),$def(self,"$_reduce_12",(function(val,_values,result){return this.builder.$compstmt(val["$[]"](0))}),3),$def(self,"$_reduce_13",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_14",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_15",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_16",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_18",(function(val,_values,result){return this.$diagnostic("error","begin_in_method",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_19",(function(val,_values,result){var $writer;return $writer=["expr_fname"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_20",(function(val,_values,result){return this.builder.$alias(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_21",(function(val,_values,result){return this.builder.$alias(val["$[]"](0),this.builder.$gvar(val["$[]"](1)),this.builder.$gvar(val["$[]"](2)))}),3),$def(self,"$_reduce_22",(function(val,_values,result){return this.builder.$alias(val["$[]"](0),this.builder.$gvar(val["$[]"](1)),this.builder.$back_ref(val["$[]"](2)))}),3),$def(self,"$_reduce_23",(function(val,_values,result){return this.$diagnostic("error","nth_ref_alias",nil,val["$[]"](2)),result}),3),$def(self,"$_reduce_24",(function(val,_values,result){return this.builder.$undef_method(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_25",(function(val,_values,result){return this.builder.$condition_mod(val["$[]"](0),nil,val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_26",(function(val,_values,result){return this.builder.$condition_mod(nil,val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_27",(function(val,_values,result){return this.builder.$loop_mod("while",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_28",(function(val,_values,result){return this.builder.$loop_mod("until",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_29",(function(val,_values,result){var rescue_body;return rescue_body=this.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2)),this.builder.$begin_body(val["$[]"](0),[rescue_body])}),3),$def(self,"$_reduce_30",(function(val,_values,result){return this.builder.$postexe(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_32",(function(val,_values,result){return this.builder.$multi_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_33",(function(val,_values,result){return this.builder.$assign(val["$[]"](0),val["$[]"](1),this.builder.$array(nil,val["$[]"](2),nil))}),3),$def(self,"$_reduce_34",(function(val,_values,result){var rescue_body,begin_body;return rescue_body=this.builder.$rescue_body(val["$[]"](3),nil,nil,nil,nil,val["$[]"](4)),begin_body=this.builder.$begin_body(val["$[]"](2),[rescue_body]),this.builder.$multi_assign(val["$[]"](0),val["$[]"](1),begin_body)}),3),$def(self,"$_reduce_35",(function(val,_values,result){return this.builder.$multi_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_37",(function(val,_values,result){return this.builder.$assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_38",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_39",(function(val,_values,result){return this.builder.$op_assign(this.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3)),val["$[]"](4),val["$[]"](5))}),3),$def(self,"$_reduce_40",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_41",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_42",(function(val,_values,result){var const$;return const$=this.builder.$const_op_assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))),this.builder.$op_assign(const$,val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_43",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_44",(function(val,_values,result){var $a,$b,$c,def_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==($c=$to_ary(null==$a[1]?nil:$a[1]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),result=this.builder.$def_endless_method(def_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_45",(function(val,_values,result){var $a,$b,$c,def_t,name_t,rescue_body,method_body,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==($c=$to_ary(null==$a[1]?nil:$a[1]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=this.builder.$def_endless_method(def_t,name_t,val["$[]"](1),val["$[]"](2),method_body),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_46",(function(val,_values,result){var $a,$b,$c,def_t,recv,dot_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],recv=null==$a[1]?nil:$a[1],dot_t=null==$a[2]?nil:$a[2],name_t=null==($c=$to_ary(null==$a[3]?nil:$a[3]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),result=this.builder.$def_endless_singleton(def_t,recv,dot_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_47",(function(val,_values,result){var $a,$b,$c,def_t,recv,dot_t,name_t,rescue_body,method_body,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],recv=null==$a[1]?nil:$a[1],dot_t=null==$a[2]?nil:$a[2],name_t=null==($c=$to_ary(null==$a[3]?nil:$a[3]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=this.builder.$def_endless_singleton(def_t,recv,dot_t,name_t,val["$[]"](1),val["$[]"](2),method_body),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_48",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2)),result}),3),$def(self,"$_reduce_50",(function(val,_values,result){var rescue_body;return rescue_body=this.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2)),this.builder.$begin_body(val["$[]"](0),[rescue_body])}),3),$def(self,"$_reduce_53",(function(val,_values,result){return this.builder.$logical_op("and",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_54",(function(val,_values,result){return this.builder.$logical_op("or",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_55",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),nil,val["$[]"](2),nil)}),3),$def(self,"$_reduce_56",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_57",(function(val,_values,result){var $writer=nil;return $writer=["expr_beg"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.lexer,"command_start=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.pattern_variables.$push(),result=this.context.$in_kwarg(),$writer=[!0],$send(this.context,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_58",(function(val,_values,result){var $writer;return this.pattern_variables.$pop(),$writer=[val["$[]"](2)],$send(this.context,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$match_pattern(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_59",(function(val,_values,result){var $writer=nil;return $writer=["expr_beg"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.lexer,"command_start=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.pattern_variables.$push(),result=this.context.$in_kwarg(),$writer=[!0],$send(this.context,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_60",(function(val,_values,result){var $writer;return this.pattern_variables.$pop(),$writer=[val["$[]"](2)],$send(this.context,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$match_pattern_p(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_63",(function(val,_values,result){return this.lexer.$cond().$push(!0),result}),3),$def(self,"$_reduce_64",(function(val,_values,result){return this.lexer.$cond().$pop(),[val["$[]"](1),val["$[]"](2)]}),3),$def(self,"$_reduce_65",(function(val,_values,result){var $writer;return this.$local_push(),this.current_arg_stack.$push(nil),result=[val["$[]"](0),this.context.$dup()],$writer=[!0],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_66",(function(val,_values,result){return[val["$[]"](0),val["$[]"](1)]}),3),$def(self,"$_reduce_67",(function(val,_values,result){var $writer=nil;return $writer=["expr_fname"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_68",(function(val,_values,result){return[val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](4)]}),3),$def(self,"$_reduce_72",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil)}),3),$def(self,"$_reduce_73",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_74",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_block()],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)])}),3),$def(self,"$_reduce_76",(function(val,_values,result){return this.builder.$call_method(nil,nil,val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_77",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(nil,nil,val["$[]"](0),nil,val["$[]"](1),nil),$b=val["$[]"](2),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_78",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil)}),3),$def(self,"$_reduce_79",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_80",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil)}),3),$def(self,"$_reduce_81",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_82",(function(val,_values,result){return this.builder.$keyword_cmd("super",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_83",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_84",(function(val,_values,result){return this.builder.$keyword_cmd("return",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_85",(function(val,_values,result){return this.builder.$keyword_cmd("break",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_86",(function(val,_values,result){return this.builder.$keyword_cmd("next",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_87",(function(val,_values,result){return this.builder.$multi_lhs(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_88",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_89",(function(val,_values,result){return this.builder.$multi_lhs(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_90",(function(val,_values,result){return this.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_92",(function(val,_values,result){return val["$[]"](0).$push(val["$[]"](1))}),3),$def(self,"$_reduce_93",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1),val["$[]"](2)))}),3),$def(self,"$_reduce_94",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1),val["$[]"](2))).$concat(val["$[]"](4))}),3),$def(self,"$_reduce_95",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1)))}),3),$def(self,"$_reduce_96",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1))).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_97",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_98",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))].concat($to_a(val["$[]"](3)))}),3),$def(self,"$_reduce_99",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0))]}),3),$def(self,"$_reduce_100",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0))].concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_102",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_103",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_104",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_105",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_106",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_107",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_108",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_109",(function(val,_values,result){return this.builder.$index_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_110",(function(val,_values,result){return $eqeq(val["$[]"](1)["$[]"](0),"anddot")&&this.$diagnostic("error","csend_in_lhs_of_masgn",nil,val["$[]"](1)),this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_111",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_112",(function(val,_values,result){return $eqeq(val["$[]"](1)["$[]"](0),"anddot")&&this.$diagnostic("error","csend_in_lhs_of_masgn",nil,val["$[]"](1)),this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_113",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2)))}),3),$def(self,"$_reduce_114",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_global(val["$[]"](0),val["$[]"](1)))}),3),$def(self,"$_reduce_115",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_116",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_117",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_118",(function(val,_values,result){return this.builder.$index_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_119",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_120",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_121",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_122",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2)))}),3),$def(self,"$_reduce_123",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_global(val["$[]"](0),val["$[]"](1)))}),3),$def(self,"$_reduce_124",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_125",(function(val,_values,result){return this.$diagnostic("error","module_name_const",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_127",(function(val,_values,result){return this.builder.$const_global(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_128",(function(val,_values,result){return this.builder.$const(val["$[]"](0))}),3),$def(self,"$_reduce_129",(function(val,_values,result){return this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_135",(function(val,_values,result){return this.builder.$symbol_internal(val["$[]"](0))}),3),$def(self,"$_reduce_137",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_138",(function(val,_values,result){var $writer;return $writer=["expr_fname"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_139",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](3))}),3),$def(self,"$_reduce_211",(function(val,_values,result){return this.builder.$assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_212",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_213",(function(val,_values,result){return this.builder.$op_assign(this.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3)),val["$[]"](4),val["$[]"](5))}),3),$def(self,"$_reduce_214",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_215",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_216",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_217",(function(val,_values,result){var const$;return const$=this.builder.$const_op_assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))),this.builder.$op_assign(const$,val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_218",(function(val,_values,result){var const$;return const$=this.builder.$const_op_assignable(this.builder.$const_global(val["$[]"](0),val["$[]"](1))),this.builder.$op_assign(const$,val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_219",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_220",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_221",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_222",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_223",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_224",(function(val,_values,result){return this.builder.$range_inclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_225",(function(val,_values,result){return this.builder.$range_exclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_226",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_227",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_228",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_229",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_230",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_231",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_232",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),this.builder.$binary_op(val["$[]"](1),val["$[]"](2),val["$[]"](3)))}),3),$def(self,"$_reduce_233",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_234",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_235",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_236",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_237",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_238",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_240",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_241",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_242",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_243",(function(val,_values,result){return this.builder.$match_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_244",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_245",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_246",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_247",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_248",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_249",(function(val,_values,result){return this.builder.$logical_op("and",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_250",(function(val,_values,result){return this.builder.$logical_op("or",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_251",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_defined=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_252",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_defined=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$keyword_cmd("defined?",val["$[]"](0),nil,[val["$[]"](3)],nil)}),3),$def(self,"$_reduce_253",(function(val,_values,result){return this.builder.$ternary(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](4),val["$[]"](5))}),3),$def(self,"$_reduce_254",(function(val,_values,result){var $a,$b,$c,def_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==($c=$to_ary(null==$a[1]?nil:$a[1]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),result=this.builder.$def_endless_method(def_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_255",(function(val,_values,result){var $a,$b,$c,def_t,name_t,rescue_body,method_body,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==($c=$to_ary(null==$a[1]?nil:$a[1]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=this.builder.$def_endless_method(def_t,name_t,val["$[]"](1),val["$[]"](2),method_body),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_256",(function(val,_values,result){var $a,$b,$c,def_t,recv,dot_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],recv=null==$a[1]?nil:$a[1],dot_t=null==$a[2]?nil:$a[2],name_t=null==($c=$to_ary(null==$a[3]?nil:$a[3]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),result=this.builder.$def_endless_singleton(def_t,recv,dot_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_257",(function(val,_values,result){var $a,$b,$c,def_t,recv,dot_t,name_t,rescue_body,method_body,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],recv=null==$a[1]?nil:$a[1],dot_t=null==$a[2]?nil:$a[2],name_t=null==($c=$to_ary(null==$a[3]?nil:$a[3]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=this.builder.$def_endless_singleton(def_t,recv,dot_t,name_t,val["$[]"](1),val["$[]"](2),method_body),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_263",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_264",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_268",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$associate(nil,val["$[]"](2),nil))}),3),$def(self,"$_reduce_269",(function(val,_values,result){return[this.builder.$associate(nil,val["$[]"](0),nil)]}),3),$def(self,"$_reduce_271",(function(val,_values,result){var rescue_body;return rescue_body=this.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2)),this.builder.$begin_body(val["$[]"](0),[rescue_body])}),3),$def(self,"$_reduce_272",(function(val,_values,result){return val}),3),$def(self,"$_reduce_273",(function(val,_values,result){return $truthy(this.static_env["$declared_forward_args?"]())||this.$diagnostic("error","unexpected_token",$hash2(["token"],{token:"tBDOT3"}),val["$[]"](3)),[val["$[]"](0),[].concat($to_a(val["$[]"](1))).concat([this.builder.$forwarded_args(val["$[]"](3))]),val["$[]"](4)]}),3),$def(self,"$_reduce_274",(function(val,_values,result){return $truthy(this.static_env["$declared_forward_args?"]())||this.$diagnostic("error","unexpected_token",$hash2(["token"],{token:"tBDOT3"}),val["$[]"](1)),[val["$[]"](0),[this.builder.$forwarded_args(val["$[]"](1))],val["$[]"](2)]}),3),$def(self,"$_reduce_275",(function(val,_values,result){return[nil,[],nil]}),3),$def(self,"$_reduce_277",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_280",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$associate(nil,val["$[]"](2),nil))}),3),$def(self,"$_reduce_281",(function(val,_values,result){return[this.builder.$associate(nil,val["$[]"](0),nil)]}),3),$def(self,"$_reduce_282",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_283",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_284",(function(val,_values,result){return(result=[this.builder.$associate(nil,val["$[]"](0),nil)]).$concat(val["$[]"](1)),result}),3),$def(self,"$_reduce_285",(function(val,_values,result){var assocs;return assocs=this.builder.$associate(nil,val["$[]"](2),nil),(result=val["$[]"](0)["$<<"](assocs)).$concat(val["$[]"](3)),result}),3),$def(self,"$_reduce_286",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_287",(function(val,_values,result){var lookahead,$ret_or_1,last_token=nil,top=nil;return last_token=this.last_token["$[]"](0),lookahead=$truthy($ret_or_1=last_token["$=="]("tLBRACK"))?$ret_or_1:last_token["$=="]("tLPAREN_ARG"),$truthy(lookahead)?(top=this.lexer.$cmdarg().$pop(),this.lexer.$cmdarg().$push(!0),this.lexer.$cmdarg().$push(top)):this.lexer.$cmdarg().$push(!0),result}),3),$def(self,"$_reduce_288",(function(val,_values,result){var lookahead,top=nil;return lookahead=this.last_token["$[]"](0)["$=="]("tLBRACE_ARG"),$truthy(lookahead)?(top=this.lexer.$cmdarg().$pop(),this.lexer.$cmdarg().$pop(),this.lexer.$cmdarg().$push(top)):this.lexer.$cmdarg().$pop(),val["$[]"](1)}),3),$def(self,"$_reduce_289",(function(val,_values,result){return this.builder.$block_pass(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_290",(function(val,_values,result){return $not(this.static_env["$declared_anonymous_blockarg?"]())&&this.$diagnostic("error","no_anonymous_blockarg",nil,val["$[]"](0)),this.builder.$block_pass(val["$[]"](0),nil)}),3),$def(self,"$_reduce_291",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_292",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_293",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_294",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_295",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_296",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$splat(val["$[]"](2),val["$[]"](3)))}),3),$def(self,"$_reduce_297",(function(val,_values,result){return this.builder.$array(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_299",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_300",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$splat(val["$[]"](2),val["$[]"](3)))}),3),$def(self,"$_reduce_301",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_312",(function(val,_values,result){return this.builder.$call_method(nil,nil,val["$[]"](0))}),3),$def(self,"$_reduce_313",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),result}),3),$def(self,"$_reduce_314",(function(val,_values,result){return this.lexer.$cmdarg().$pop(),this.builder.$begin_keyword(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_315",(function(val,_values,result){var $writer;return $writer=["expr_endarg"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_316",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_317",(function(val,_values,result){var $writer;return $writer=["expr_endarg"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_318",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),nil,val["$[]"](3))}),3),$def(self,"$_reduce_319",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_320",(function(val,_values,result){return this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_321",(function(val,_values,result){return this.builder.$const_global(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_322",(function(val,_values,result){return this.builder.$array(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_323",(function(val,_values,result){return this.builder.$associate(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_324",(function(val,_values,result){return this.builder.$keyword_cmd("return",val["$[]"](0))}),3),$def(self,"$_reduce_325",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_326",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0),val["$[]"](1),[],val["$[]"](2))}),3),$def(self,"$_reduce_327",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0))}),3),$def(self,"$_reduce_328",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_defined=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_329",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_defined=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$keyword_cmd("defined?",val["$[]"](0),val["$[]"](2),[val["$[]"](4)],val["$[]"](5))}),3),$def(self,"$_reduce_330",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_331",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),val["$[]"](1),nil,val["$[]"](2))}),3),$def(self,"$_reduce_332",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(nil,nil,val["$[]"](0)),$b=val["$[]"](1),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_334",(function(val,_values,result){var $a,$b,begin_t,args,body,end_t;return $b=val["$[]"](1),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(val["$[]"](0),begin_t,args,body,end_t)}),3),$def(self,"$_reduce_336",(function(val,_values,result){var $a,$b,else_t,else_;return $b=val["$[]"](4),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],this.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3),else_t,else_,val["$[]"](5))}),3),$def(self,"$_reduce_337",(function(val,_values,result){var $a,$b,else_t,else_;return $b=val["$[]"](4),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],this.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),else_,else_t,val["$[]"](3),val["$[]"](5))}),3),$def(self,"$_reduce_338",(function(val,_values,result){return $send(this.builder,"loop",["while",val["$[]"](0)].concat($to_a(val["$[]"](1))).concat([val["$[]"](2),val["$[]"](3)]))}),3),$def(self,"$_reduce_339",(function(val,_values,result){return $send(this.builder,"loop",["until",val["$[]"](0)].concat($to_a(val["$[]"](1))).concat([val["$[]"](2),val["$[]"](3)]))}),3),$def(self,"$_reduce_340",(function(val,_values,result){var $a,$b,$c,when_bodies,else_t,else_body;return $b=($b=($a=[].concat($to_a(val["$[]"](3)))).length-1)<0?0:$b,when_bodies=$slice.call($a,0,$b),else_t=null==($c=$to_ary(null==$a[$b]?nil:$a[$b]))[0]?nil:$c[0],else_body=null==$c[1]?nil:$c[1],this.builder.$case(val["$[]"](0),val["$[]"](1),when_bodies,else_t,else_body,val["$[]"](4))}),3),$def(self,"$_reduce_341",(function(val,_values,result){var $a,$b,$c,when_bodies,else_t,else_body;return $b=($b=($a=[].concat($to_a(val["$[]"](2)))).length-1)<0?0:$b,when_bodies=$slice.call($a,0,$b),else_t=null==($c=$to_ary(null==$a[$b]?nil:$a[$b]))[0]?nil:$c[0],else_body=null==$c[1]?nil:$c[1],this.builder.$case(val["$[]"](0),nil,when_bodies,else_t,else_body,val["$[]"](3))}),3),$def(self,"$_reduce_342",(function(val,_values,result){var $a,$b,$c,in_bodies,else_t,else_body;return $b=($b=($a=[].concat($to_a(val["$[]"](3)))).length-1)<0?0:$b,in_bodies=$slice.call($a,0,$b),else_t=null==($c=$to_ary(null==$a[$b]?nil:$a[$b]))[0]?nil:$c[0],else_body=null==$c[1]?nil:$c[1],this.builder.$case_match(val["$[]"](0),val["$[]"](1),in_bodies,else_t,else_body,val["$[]"](4))}),3),$def(self,"$_reduce_343",(function(val,_values,result){return $send(this.builder,"for",[val["$[]"](0),val["$[]"](1),val["$[]"](2)].concat($to_a(val["$[]"](3))).concat([val["$[]"](4),val["$[]"](5)]))}),3),$def(self,"$_reduce_344",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_class=",$to_a($writer)),$rb_minus($writer.length,1),this.$local_push(),result}),3),$def(self,"$_reduce_345",(function(val,_values,result){var $a,$b,k_class,lt_t,superclass,$writer,ctx=nil;return $b=val["$[]"](0),k_class=null==($a=$to_ary($b))[0]?nil:$a[0],ctx=null==$a[1]?nil:$a[1],$truthy(this.context.$in_def())&&this.$diagnostic("error","class_in_def",nil,k_class),$b=val["$[]"](2),lt_t=null==($a=$to_ary($b))[0]?nil:$a[0],superclass=null==$a[1]?nil:$a[1],result=this.builder.$def_class(k_class,val["$[]"](1),lt_t,superclass,val["$[]"](4),val["$[]"](5)),this.$local_pop(),$writer=[ctx.$in_class()],$send(this.context,"in_class=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_346",(function(val,_values,result){var $writer=nil;return $writer=[!1],$send(this.context,"in_def=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.context,"in_class=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$local_push(),result}),3),$def(self,"$_reduce_347",(function(val,_values,result){var $a,$b,k_class,ctx=nil,$writer=nil;return $b=val["$[]"](0),k_class=null==($a=$to_ary($b))[0]?nil:$a[0],ctx=null==$a[1]?nil:$a[1],result=this.builder.$def_sclass(k_class,val["$[]"](1),val["$[]"](2),val["$[]"](5),val["$[]"](6)),this.$local_pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[ctx.$in_class()],$send(this.context,"in_class=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_348",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_class=",$to_a($writer)),$rb_minus($writer.length,1),this.$local_push(),result}),3),$def(self,"$_reduce_349",(function(val,_values,result){var $a,$b,k_mod,$writer,ctx=nil;return $b=val["$[]"](0),k_mod=null==($a=$to_ary($b))[0]?nil:$a[0],ctx=null==$a[1]?nil:$a[1],$truthy(this.context.$in_def())&&this.$diagnostic("error","module_in_def",nil,k_mod),result=this.builder.$def_module(k_mod,val["$[]"](1),val["$[]"](3),val["$[]"](4)),this.$local_pop(),$writer=[ctx.$in_class()],$send(this.context,"in_class=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_350",(function(val,_values,result){var $a,$b,$c,def_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==($c=$to_ary(null==$a[1]?nil:$a[1]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],result=this.builder.$def_method(def_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_351",(function(val,_values,result){var $a,$b,$c,def_t,recv,dot_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],recv=null==$a[1]?nil:$a[1],dot_t=null==$a[2]?nil:$a[2],name_t=null==($c=$to_ary(null==$a[3]?nil:$a[3]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],result=this.builder.$def_singleton(def_t,recv,dot_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_352",(function(val,_values,result){return this.builder.$keyword_cmd("break",val["$[]"](0))}),3),$def(self,"$_reduce_353",(function(val,_values,result){return this.builder.$keyword_cmd("next",val["$[]"](0))}),3),$def(self,"$_reduce_354",(function(val,_values,result){return this.builder.$keyword_cmd("redo",val["$[]"](0))}),3),$def(self,"$_reduce_355",(function(val,_values,result){return this.builder.$keyword_cmd("retry",val["$[]"](0))}),3),$def(self,"$_reduce_357",(function(val,_values,result){return[val["$[]"](0),this.context.$dup()]}),3),$def(self,"$_reduce_358",(function(val,_values,result){return[val["$[]"](0),this.context.$dup()]}),3),$def(self,"$_reduce_359",(function(val,_values,result){var $writer;return result=val["$[]"](0),$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_360",(function(val,_values,result){var $ret_or_1=nil;return $truthy(this.context.$in_class())&&$not(this.context.$in_def())&&$not($truthy($ret_or_1=this.$context().$in_block())?$ret_or_1:this.$context().$in_lambda())&&this.$diagnostic("error","invalid_return",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_363",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_367",(function(val,_values,result){var $a,$b,else_t,else_;return $b=val["$[]"](4),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],[val["$[]"](0),this.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3),else_t,else_,nil)]}),3),$def(self,"$_reduce_369",(function(val,_values,result){return val}),3),$def(self,"$_reduce_372",(function(val,_values,result){return this.builder.$arg(val["$[]"](0))}),3),$def(self,"$_reduce_373",(function(val,_values,result){return this.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_374",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_375",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_377",(function(val,_values,result){return val["$[]"](0).$push(val["$[]"](2))}),3),$def(self,"$_reduce_378",(function(val,_values,result){return val["$[]"](0).$push(val["$[]"](2)).$concat(val["$[]"](4))}),3),$def(self,"$_reduce_379",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_380",(function(val,_values,result){return[val["$[]"](0)].concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_381",(function(val,_values,result){return this.builder.$restarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_382",(function(val,_values,result){return this.builder.$restarg(val["$[]"](0))}),3),$def(self,"$_reduce_385",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_386",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_387",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_388",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_389",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_390",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_391",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_392",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_394",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_395",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](6)).$concat(val["$[]"](7))}),3),$def(self,"$_reduce_396",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_397",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_398",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_400",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_401",(function(val,_values,result){return $truthy(val["$[]"](1)["$empty?"]())&&$eqeq(val["$[]"](0).$size(),1)?[this.builder.$procarg0(val["$[]"](0)["$[]"](0))]:val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_402",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_403",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_404",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_405",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_406",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_407",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_409",(function(val,_values,result){return this.builder.$args(nil,[],nil)}),3),$def(self,"$_reduce_410",(function(val,_values,result){var $writer;return $writer=["expr_value"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_411",(function(val,_values,result){var $writer;return this.max_numparam_stack["$has_ordinary_params!"](),this.current_arg_stack.$set(nil),$writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$args(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_412",(function(val,_values,result){var $writer;return this.max_numparam_stack["$has_ordinary_params!"](),this.current_arg_stack.$set(nil),$writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$args(val["$[]"](0),val["$[]"](1).$concat(val["$[]"](2)),val["$[]"](3))}),3),$def(self,"$_reduce_413",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_414",(function(val,_values,result){return val["$[]"](2)}),3),$def(self,"$_reduce_415",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_416",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_417",(function(val,_values,result){return this.static_env.$declare(val["$[]"](0)["$[]"](0)),this.builder.$shadowarg(val["$[]"](0))}),3),$def(self,"$_reduce_419",(function(val,_values,result){var $writer;return this.static_env.$extend_dynamic(),this.max_numparam_stack.$push($hash2(["static"],{static:!1})),result=this.context.$dup(),$writer=[!0],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_420",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),result}),3),$def(self,"$_reduce_421",(function(val,_values,result){var $a,$b,lambda_call,args,begin_t,body,end_t,$writer;return lambda_call=this.builder.$call_lambda(val["$[]"](0)),args=$truthy(this.max_numparam_stack["$has_numparams?"]())?this.builder.$numargs(this.max_numparam_stack.$top()):val["$[]"](2),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],body=null==$a[1]?nil:$a[1],end_t=null==$a[2]?nil:$a[2],this.max_numparam_stack.$pop(),this.static_env.$unextend(),this.lexer.$cmdarg().$pop(),$writer=[val["$[]"](1).$in_lambda()],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$block(lambda_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_422",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.max_numparam_stack["$has_ordinary_params!"](),this.builder.$args(val["$[]"](0),val["$[]"](1).$concat(val["$[]"](2)),val["$[]"](3))}),3),$def(self,"$_reduce_423",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),$truthy(val["$[]"](0)["$any?"]())&&this.max_numparam_stack["$has_ordinary_params!"](),this.builder.$args(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_424",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_425",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_lambda()],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0),val["$[]"](2),val["$[]"](3)]}),3),$def(self,"$_reduce_426",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_427",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_lambda()],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0),val["$[]"](2),val["$[]"](3)]}),3),$def(self,"$_reduce_428",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_429",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_block()],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)])}),3),$def(self,"$_reduce_430",(function(val,_values,result){var $a,$b,begin_t,block_args,body,end_t;return $b=val["$[]"](1),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],block_args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(val["$[]"](0),begin_t,block_args,body,end_t)}),3),$def(self,"$_reduce_431",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_432",(function(val,_values,result){var $a,$b,lparen_t,rparen_t,method_call,begin_t,body,end_t,args=nil;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_433",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_434",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](1),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(nil,nil,val["$[]"](0),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_435",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_436",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_437",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_438",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](2),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),nil,lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_439",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](2),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),nil,lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_440",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](1),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$keyword_cmd("super",val["$[]"](0),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_441",(function(val,_values,result){return this.builder.$keyword_cmd("zsuper",val["$[]"](0))}),3),$def(self,"$_reduce_442",(function(val,_values,result){return this.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_443",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_444",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_block()],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)])}),3),$def(self,"$_reduce_445",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_446",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_block()],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)])}),3),$def(self,"$_reduce_447",(function(val,_values,result){return this.static_env.$extend_dynamic(),this.max_numparam_stack.$push($hash2(["static"],{static:!1})),result}),3),$def(self,"$_reduce_448",(function(val,_values,result){return result=[$truthy(this.max_numparam_stack["$has_numparams?"]())?this.builder.$numargs(this.max_numparam_stack.$top()):val["$[]"](1),val["$[]"](2)],this.max_numparam_stack.$pop(),this.static_env.$unextend(),result}),3),$def(self,"$_reduce_449",(function(val,_values,result){return this.static_env.$extend_dynamic(),this.max_numparam_stack.$push($hash2(["static"],{static:!1})),result}),3),$def(self,"$_reduce_450",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),result}),3),$def(self,"$_reduce_451",(function(val,_values,result){return result=[$truthy(this.max_numparam_stack["$has_numparams?"]())?this.builder.$numargs(this.max_numparam_stack.$top()):val["$[]"](2),val["$[]"](3)],this.max_numparam_stack.$pop(),this.static_env.$unextend(),this.lexer.$cmdarg().$pop(),result}),3),$def(self,"$_reduce_452",(function(val,_values,result){return[this.builder.$when(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))].concat($to_a(val["$[]"](4)))}),3),$def(self,"$_reduce_453",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_455",(function(val,_values,result){var $writer=nil;return $writer=["expr_beg"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.lexer,"command_start=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.pattern_variables.$push(),this.pattern_hash_keys.$push(),result=this.context.$in_kwarg(),$writer=[!0],$send(this.context,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_456",(function(val,_values,result){var $writer;return this.pattern_variables.$pop(),this.pattern_hash_keys.$pop(),$writer=[val["$[]"](1)],$send(this.context,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_457",(function(val,_values,result){return[$send(this.builder,"in_pattern",[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3),val["$[]"](5)]))].concat($to_a(val["$[]"](6)))}),3),$def(self,"$_reduce_458",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_460",(function(val,_values,result){return[val["$[]"](0),nil]}),3),$def(self,"$_reduce_461",(function(val,_values,result){return[val["$[]"](0),this.builder.$if_guard(val["$[]"](1),val["$[]"](2))]}),3),$def(self,"$_reduce_462",(function(val,_values,result){return[val["$[]"](0),this.builder.$unless_guard(val["$[]"](1),val["$[]"](2))]}),3),$def(self,"$_reduce_464",(function(val,_values,result){var item;return item=this.builder.$match_with_trailing_comma(val["$[]"](0),val["$[]"](1)),this.builder.$array_pattern(nil,[item],nil)}),3),$def(self,"$_reduce_465",(function(val,_values,result){return this.builder.$array_pattern(nil,[val["$[]"](0)].$concat(val["$[]"](2)),nil)}),3),$def(self,"$_reduce_466",(function(val,_values,result){return this.builder.$find_pattern(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_467",(function(val,_values,result){return this.builder.$array_pattern(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_468",(function(val,_values,result){return this.builder.$hash_pattern(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_470",(function(val,_values,result){return this.builder.$match_as(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_472",(function(val,_values,result){return this.builder.$match_alt(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_474",(function(val,_values,result){return result=val["$[]"](0),this.pattern_hash_keys.$push(),result}),3),$def(self,"$_reduce_475",(function(val,_values,result){return result=val["$[]"](0),this.pattern_hash_keys.$push(),result}),3),$def(self,"$_reduce_478",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$array_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_479",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$find_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_480",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$hash_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_481",(function(val,_values,result){var pattern;return pattern=this.builder.$array_pattern(val["$[]"](1),nil,val["$[]"](2)),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](2))}),3),$def(self,"$_reduce_482",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$array_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_483",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$find_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_484",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$hash_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_485",(function(val,_values,result){var pattern;return pattern=this.builder.$array_pattern(val["$[]"](1),nil,val["$[]"](2)),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](2))}),3),$def(self,"$_reduce_486",(function(val,_values,result){return this.builder.$array_pattern(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_487",(function(val,_values,result){return this.builder.$find_pattern(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_488",(function(val,_values,result){return this.builder.$array_pattern(val["$[]"](0),[],val["$[]"](1))}),3),$def(self,"$_reduce_489",(function(val,_values,result){var $writer;return this.pattern_hash_keys.$push(),result=this.context.$in_kwarg(),$writer=[!1],$send(this.context,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_490",(function(val,_values,result){var $writer;return this.pattern_hash_keys.$pop(),$writer=[val["$[]"](1)],$send(this.context,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$hash_pattern(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_491",(function(val,_values,result){return this.builder.$hash_pattern(val["$[]"](0),[],val["$[]"](1))}),3),$def(self,"$_reduce_492",(function(val,_values,result){return this.pattern_hash_keys.$push(),result}),3),$def(self,"$_reduce_493",(function(val,_values,result){return this.pattern_hash_keys.$pop(),this.builder.$begin(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_494",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_495",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_496",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([val["$[]"](1)])}),3),$def(self,"$_reduce_497",(function(val,_values,result){var match_rest;return match_rest=this.builder.$match_rest(val["$[]"](1),val["$[]"](2)),[].concat($to_a(val["$[]"](0))).concat([match_rest])}),3),$def(self,"$_reduce_498",(function(val,_values,result){var match_rest;return match_rest=this.builder.$match_rest(val["$[]"](1),val["$[]"](2)),[].concat($to_a(val["$[]"](0))).concat([match_rest]).concat($to_a(val["$[]"](4)))}),3),$def(self,"$_reduce_499",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([this.builder.$match_rest(val["$[]"](1))])}),3),$def(self,"$_reduce_500",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([this.builder.$match_rest(val["$[]"](1))]).concat($to_a(val["$[]"](3)))}),3),$def(self,"$_reduce_502",(function(val,_values,result){return[this.builder.$match_with_trailing_comma(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_503",(function(val,_values,result){var last_item;return last_item=this.builder.$match_with_trailing_comma(val["$[]"](1),val["$[]"](2)),[].concat($to_a(val["$[]"](0))).concat([last_item])}),3),$def(self,"$_reduce_504",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_505",(function(val,_values,result){return[val["$[]"](0)].concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_506",(function(val,_values,result){return[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](4)])}),3),$def(self,"$_reduce_507",(function(val,_values,result){return this.builder.$match_rest(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_508",(function(val,_values,result){return this.builder.$match_rest(val["$[]"](0))}),3),$def(self,"$_reduce_509",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_510",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([val["$[]"](2)])}),3),$def(self,"$_reduce_512",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_513",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_514",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_515",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_516",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_517",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([val["$[]"](2)])}),3),$def(self,"$_reduce_518",(function(val,_values,result){return $send(this.builder,"match_pair",$to_a(val["$[]"](0)).concat([val["$[]"](1)]))}),3),$def(self,"$_reduce_519",(function(val,_values,result){return $send(this.builder,"match_label",$to_a(val["$[]"](0)))}),3),$def(self,"$_reduce_520",(function(val,_values,result){return["label",val["$[]"](0)]}),3),$def(self,"$_reduce_521",(function(val,_values,result){return["quoted",[val["$[]"](0),val["$[]"](1),val["$[]"](2)]]}),3),$def(self,"$_reduce_522",(function(val,_values,result){return[this.builder.$match_rest(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_523",(function(val,_values,result){return[this.builder.$match_rest(val["$[]"](0),nil)]}),3),$def(self,"$_reduce_524",(function(val,_values,result){return[this.builder.$match_nil_pattern(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_528",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_529",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_530",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_531",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_535",(function(val,_values,result){return this.builder.$range_inclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_536",(function(val,_values,result){return this.builder.$range_exclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_545",(function(val,_values,result){return this.builder.$accessible(val["$[]"](0))}),3),$def(self,"$_reduce_547",(function(val,_values,result){return this.builder.$assignable(this.builder.$match_var(val["$[]"](0)))}),3),$def(self,"$_reduce_548",(function(val,_values,result){var name,lvar;return name=val["$[]"](1)["$[]"](0),$truthy(this.$static_env()["$declared?"](name))||this.$diagnostic("error","undefined_lvar",$hash2(["name"],{name:name}),val["$[]"](1)),lvar=this.builder.$accessible(this.builder.$ident(val["$[]"](1))),this.builder.$pin(val["$[]"](0),lvar)}),3),$def(self,"$_reduce_549",(function(val,_values,result){var non_lvar;return non_lvar=this.builder.$accessible(val["$[]"](1)),this.builder.$pin(val["$[]"](0),non_lvar)}),3),$def(self,"$_reduce_550",(function(val,_values,result){var expr;return expr=this.builder.$begin(val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.builder.$pin(val["$[]"](0),expr)}),3),$def(self,"$_reduce_551",(function(val,_values,result){return this.builder.$const_global(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_552",(function(val,_values,result){return this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_553",(function(val,_values,result){return this.builder.$const(val["$[]"](0))}),3),$def(self,"$_reduce_554",(function(val,_values,result){var $a,$b,assoc_t,exc_var,exc_list=nil;return $b=val["$[]"](2),assoc_t=null==($a=$to_ary($b))[0]?nil:$a[0],exc_var=null==$a[1]?nil:$a[1],$truthy(val["$[]"](1))&&(exc_list=this.builder.$array(nil,val["$[]"](1),nil)),[this.builder.$rescue_body(val["$[]"](0),exc_list,assoc_t,exc_var,val["$[]"](3),val["$[]"](4))].concat($to_a(val["$[]"](5)))}),3),$def(self,"$_reduce_555",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_556",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_559",(function(val,_values,result){return[val["$[]"](0),val["$[]"](1)]}),3),$def(self,"$_reduce_561",(function(val,_values,result){return[val["$[]"](0),val["$[]"](1)]}),3),$def(self,"$_reduce_565",(function(val,_values,result){return this.builder.$string_compose(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_566",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_567",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_568",(function(val,_values,result){var string;return string=this.builder.$string_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2)),this.builder.$dedent_string(string,this.lexer.$dedent_level())}),3),$def(self,"$_reduce_569",(function(val,_values,result){var string;return string=this.builder.$string(val["$[]"](0)),this.builder.$dedent_string(string,this.lexer.$dedent_level())}),3),$def(self,"$_reduce_570",(function(val,_values,result){return this.builder.$character(val["$[]"](0))}),3),$def(self,"$_reduce_571",(function(val,_values,result){var string;return string=this.builder.$xstring_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2)),this.builder.$dedent_string(string,this.lexer.$dedent_level())}),3),$def(self,"$_reduce_572",(function(val,_values,result){var opts;return opts=this.builder.$regexp_options(val["$[]"](3)),this.builder.$regexp_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2),opts)}),3),$def(self,"$_reduce_573",(function(val,_values,result){return this.builder.$words_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_574",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_575",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$word(val["$[]"](1)))}),3),$def(self,"$_reduce_576",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_577",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_578",(function(val,_values,result){return this.builder.$symbols_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_579",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_580",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$word(val["$[]"](1)))}),3),$def(self,"$_reduce_581",(function(val,_values,result){return this.builder.$words_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_582",(function(val,_values,result){return this.builder.$symbols_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_583",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_584",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$string_internal(val["$[]"](1)))}),3),$def(self,"$_reduce_585",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_586",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$symbol_internal(val["$[]"](1)))}),3),$def(self,"$_reduce_587",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_588",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_589",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_590",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_591",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_592",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_593",(function(val,_values,result){return this.builder.$string_internal(val["$[]"](0))}),3),$def(self,"$_reduce_594",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_595",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),this.lexer.$cond().$push(!1),result}),3),$def(self,"$_reduce_596",(function(val,_values,result){return this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.builder.$begin(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_597",(function(val,_values,result){return this.builder.$gvar(val["$[]"](0))}),3),$def(self,"$_reduce_598",(function(val,_values,result){return this.builder.$ivar(val["$[]"](0))}),3),$def(self,"$_reduce_599",(function(val,_values,result){return this.builder.$cvar(val["$[]"](0))}),3),$def(self,"$_reduce_603",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$symbol(val["$[]"](0))}),3),$def(self,"$_reduce_604",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$symbol_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_605",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_606",(function(val,_values,result){return $truthy(this.builder["$respond_to?"]("negate"))?this.builder.$negate(val["$[]"](0),val["$[]"](1)):this.builder.$unary_num(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_607",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$integer(val["$[]"](0))}),3),$def(self,"$_reduce_608",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$float(val["$[]"](0))}),3),$def(self,"$_reduce_609",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$rational(val["$[]"](0))}),3),$def(self,"$_reduce_610",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$complex(val["$[]"](0))}),3),$def(self,"$_reduce_611",(function(val,_values,result){return this.builder.$ivar(val["$[]"](0))}),3),$def(self,"$_reduce_612",(function(val,_values,result){return this.builder.$gvar(val["$[]"](0))}),3),$def(self,"$_reduce_613",(function(val,_values,result){return this.builder.$cvar(val["$[]"](0))}),3),$def(self,"$_reduce_614",(function(val,_values,result){return this.builder.$ident(val["$[]"](0))}),3),$def(self,"$_reduce_615",(function(val,_values,result){return this.builder.$ivar(val["$[]"](0))}),3),$def(self,"$_reduce_616",(function(val,_values,result){return this.builder.$gvar(val["$[]"](0))}),3),$def(self,"$_reduce_617",(function(val,_values,result){return this.builder.$const(val["$[]"](0))}),3),$def(self,"$_reduce_618",(function(val,_values,result){return this.builder.$cvar(val["$[]"](0))}),3),$def(self,"$_reduce_619",(function(val,_values,result){return this.builder.$nil(val["$[]"](0))}),3),$def(self,"$_reduce_620",(function(val,_values,result){return this.builder.$self(val["$[]"](0))}),3),$def(self,"$_reduce_621",(function(val,_values,result){return this.builder.$true(val["$[]"](0))}),3),$def(self,"$_reduce_622",(function(val,_values,result){return this.builder.$false(val["$[]"](0))}),3),$def(self,"$_reduce_623",(function(val,_values,result){return this.builder.$__FILE__(val["$[]"](0))}),3),$def(self,"$_reduce_624",(function(val,_values,result){return this.builder.$__LINE__(val["$[]"](0))}),3),$def(self,"$_reduce_625",(function(val,_values,result){return this.builder.$__ENCODING__(val["$[]"](0))}),3),$def(self,"$_reduce_626",(function(val,_values,result){return this.builder.$accessible(val["$[]"](0))}),3),$def(self,"$_reduce_627",(function(val,_values,result){return this.builder.$accessible(val["$[]"](0))}),3),$def(self,"$_reduce_628",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_629",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_630",(function(val,_values,result){return this.builder.$nth_ref(val["$[]"](0))}),3),$def(self,"$_reduce_631",(function(val,_values,result){return this.builder.$back_ref(val["$[]"](0))}),3),$def(self,"$_reduce_632",(function(val,_values,result){var $writer;return $writer=["expr_value"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_633",(function(val,_values,result){return[val["$[]"](0),val["$[]"](2)]}),3),$def(self,"$_reduce_634",(function(val,_values,result){return nil}),3),$def(self,"$_reduce_636",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$args(nil,[],nil)}),3),$def(self,"$_reduce_637",(function(val,_values,result){var $writer=nil;return result=this.builder.$args(val["$[]"](0),val["$[]"](1),val["$[]"](2)),$writer=["expr_value"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_639",(function(val,_values,result){var $writer=nil;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_640",(function(val,_values,result){var $writer=nil;return $writer=[val["$[]"](0).$in_kwarg()],$send(this.context,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.builder.$args(nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_641",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_642",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_643",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_644",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_645",(function(val,_values,result){return this.static_env.$declare_forward_args(),[this.builder.$forward_arg(val["$[]"](0))]}),3),$def(self,"$_reduce_646",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_647",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_648",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_649",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](6)).$concat(val["$[]"](7))}),3),$def(self,"$_reduce_650",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_651",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_652",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_653",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_654",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_655",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_656",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_657",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_658",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_659",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_660",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_661",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_662",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_663",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_664",(function(val,_values,result){return this.$diagnostic("error","argument_const",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_665",(function(val,_values,result){return this.$diagnostic("error","argument_ivar",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_666",(function(val,_values,result){return this.$diagnostic("error","argument_gvar",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_667",(function(val,_values,result){return this.$diagnostic("error","argument_cvar",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_669",(function(val,_values,result){return this.static_env.$declare(val["$[]"](0)["$[]"](0)),this.max_numparam_stack["$has_ordinary_params!"](),val["$[]"](0)}),3),$def(self,"$_reduce_670",(function(val,_values,result){return this.current_arg_stack.$set(val["$[]"](0)["$[]"](0)),val["$[]"](0)}),3),$def(self,"$_reduce_671",(function(val,_values,result){return this.current_arg_stack.$set(0),this.builder.$arg(val["$[]"](0))}),3),$def(self,"$_reduce_672",(function(val,_values,result){return this.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_673",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_674",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_675",(function(val,_values,result){var $writer;return this.$check_kwarg_name(val["$[]"](0)),this.static_env.$declare(val["$[]"](0)["$[]"](0)),this.max_numparam_stack["$has_ordinary_params!"](),this.current_arg_stack.$set(val["$[]"](0)["$[]"](0)),$writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),val["$[]"](0)}),3),$def(self,"$_reduce_676",(function(val,_values,result){var $writer;return this.current_arg_stack.$set(nil),$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$kwoptarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_677",(function(val,_values,result){var $writer;return this.current_arg_stack.$set(nil),$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$kwarg(val["$[]"](0))}),3),$def(self,"$_reduce_678",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$kwoptarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_679",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$kwarg(val["$[]"](0))}),3),$def(self,"$_reduce_680",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_681",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_682",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_683",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_686",(function(val,_values,result){return[this.builder.$kwnilarg(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_687",(function(val,_values,result){return this.static_env.$declare(val["$[]"](1)["$[]"](0)),[this.builder.$kwrestarg(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_688",(function(val,_values,result){return[this.builder.$kwrestarg(val["$[]"](0))]}),3),$def(self,"$_reduce_689",(function(val,_values,result){var $writer;return this.current_arg_stack.$set(0),$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$optarg(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_690",(function(val,_values,result){var $writer;return this.current_arg_stack.$set(0),$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$optarg(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_691",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_692",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_693",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_694",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_697",(function(val,_values,result){return this.static_env.$declare(val["$[]"](1)["$[]"](0)),[this.builder.$restarg(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_698",(function(val,_values,result){return[this.builder.$restarg(val["$[]"](0))]}),3),$def(self,"$_reduce_701",(function(val,_values,result){return this.static_env.$declare(val["$[]"](1)["$[]"](0)),this.builder.$blockarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_702",(function(val,_values,result){return this.static_env.$declare_anonymous_blockarg(),this.builder.$blockarg(val["$[]"](0),nil)}),3),$def(self,"$_reduce_703",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_704",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_706",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_707",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_709",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_710",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_711",(function(val,_values,result){return this.builder.$pair(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_712",(function(val,_values,result){return this.builder.$pair_keyword(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_713",(function(val,_values,result){return this.builder.$pair_label(val["$[]"](0))}),3),$def(self,"$_reduce_714",(function(val,_values,result){return this.builder.$pair_quoted(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_715",(function(val,_values,result){return this.builder.$kwsplat(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_728",(function(val,_values,result){return["dot",val["$[]"](0)["$[]"](1)]}),3),$def(self,"$_reduce_729",(function(val,_values,result){return["anddot",val["$[]"](0)["$[]"](1)]}),3),$def(self,"$_reduce_734",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_735",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_736",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_740",(function(val,_values,result){return this.$yyerrok(),result}),3),$def(self,"$_reduce_744",(function(val,_values,result){return nil}),3),$def(self,"$_reduce_none",(function(val,_values,result){return val["$[]"](0)}),3)}($nesting[0],$$$($$("Parser"),"Base"),$nesting)}($nesting[0],$nesting)},Opal.modules["opal/ast/builder"]=function(Opal){var self=Opal.top,$nesting=[],$$$=(Opal.nil,Opal.$$$),$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$Opal=Opal.Opal,$hash2=Opal.hash2,$def=Opal.def;return Opal.add_stubs("require,emit_lambda=,-,new"),self.$require("opal/ast/node"),self.$require("parser/ruby31"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var $writer,self=$klass($base,$super,"Builder");return $send(self,"emit_lambda=",$to_a($writer=[!0])),$rb_minus($writer.length,1),$def(self,"$n",(function(type,children,location){return $$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:location}))}),3)}([$module($base,"AST")].concat($parent_nesting)[0],$$$($$$($$$("Parser"),"Builders"),"Default"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/base"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$truthy=Opal.truthy,$Opal=Opal.Opal,$hash2=Opal.hash2,$defs=Opal.defs,$alias=Opal.alias,$rb_plus=Opal.rb_plus,$eqeqeq=Opal.eqeqeq,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,new,current_node,loc,+,stmts_of,begin_with_stmts,nil?,include?,type,children,===,length,[],s,attr_accessor,current_node=,-,location=,raise"),self.$require("parser"),self.$require("opal/ast/node"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Base"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"DummyLocation"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$node=",(function($a){return Opal.slice.call(arguments),nil}),-1),$def(self,"$expression",(function(){return this}),0),$def(self,"$begin_pos",(function(){return 0}),0),$def(self,"$end_pos",(function(){return 0}),0),$def(self,"$source",(function(){return""}),0),$def(self,"$line",(function(){return 0}),0),$def(self,"$column",(function(){return 0}),0),$def(self,"$last_line",(function(){return $$$($$("Float"),"INFINITY")}),0)}($nesting[0],0,$nesting),$const_set($nesting[0],"DUMMY_LOCATION",$$("DummyLocation").$new()),$def(self,"$s",(function(type,$a){var children,self=this,loc=nil;return children=Opal.slice.call(arguments,1),loc=$truthy(self.$current_node())?self.$current_node().$loc():$$("DUMMY_LOCATION"),$$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:loc}))}),-2),$defs(self,"$s",(function(type,$a){var children;return children=Opal.slice.call(arguments,1),$$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:$$("DUMMY_LOCATION")}))}),-2),$alias(self,"on_iter","process_regular_node"),$alias(self,"on_top","process_regular_node"),$alias(self,"on_zsuper","process_regular_node"),$alias(self,"on_jscall","on_send"),$alias(self,"on_jsattr","process_regular_node"),$alias(self,"on_jsattrasgn","process_regular_node"),$alias(self,"on_kwsplat","process_regular_node"),$def(self,"$prepend_to_body",(function(body,node){var stmts;return stmts=$rb_plus(this.$stmts_of(node),this.$stmts_of(body)),this.$begin_with_stmts(stmts)}),2),$def(self,"$append_to_body",(function(body,node){var stmts;return stmts=$rb_plus(this.$stmts_of(body),this.$stmts_of(node)),this.$begin_with_stmts(stmts)}),2),$def(self,"$stmts_of",(function(node){return $truthy(node["$nil?"]())?[]:$truthy(["begin","kwbegin"]["$include?"](node.$type()))?node.$children():[node]}),1),$def(self,"$begin_with_stmts",(function(stmts){var $ret_or_1;return $eqeqeq(0,$ret_or_1=stmts.$length())?nil:$eqeqeq(1,$ret_or_1)?stmts["$[]"](0):$send(this,"s",["begin"].concat($to_a(stmts)))}),1),self.$attr_accessor("current_node"),$def(self,"$process",(function $$process(node){var $yield=$$process.$$p||nil,self=this,$writer=nil;return delete $$process.$$p,function(){try{return $send(self,"current_node=",$to_a($writer=[node])),$writer[$rb_minus($writer.length,1)],$send2(self,$find_super(self,"process",$$process,!1,!0),"process",[node],$yield)}finally{$send(self,"current_node=",$to_a($writer=[nil])),$writer[$rb_minus($writer.length,1)]}}()}),1),$def(self,"$error",(function(msg){var error,$writer=nil;return error=$$$($Opal,"RewritingError").$new(msg),$truthy(this.$current_node())&&($writer=[this.$current_node().$loc()],$send(error,"location=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),this.$raise(error)}),1)}($nesting[0],$$$($$$($$$("Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/opal_engine_check"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_a=Opal.to_a,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$const_set=Opal.const_set;return Opal.add_stubs("require,children,skip_check_present?,process,s,skip_check_present_not?,=="),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"OpalEngineCheck"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_if",(function $$on_if(node){var $a,test,true_body,false_body,$yield=$$on_if.$$p||nil,$ret_or_1=nil;return delete $$on_if.$$p,test=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],true_body=null==$a[1]?nil:$a[1],false_body=null==$a[2]?nil:$a[2],$truthy(this["$skip_check_present?"](test))?this.$process($truthy($ret_or_1=true_body)?$ret_or_1:this.$s("nil")):$truthy(this["$skip_check_present_not?"](test))?this.$process($truthy($ret_or_1=false_body)?$ret_or_1:this.$s("nil")):$send2(this,$find_super(this,"on_if",$$on_if,!1,!0),"on_if",[node],$yield)}),1),$def(self,"$skip_check_present?",(function(test){var $ret_or_1;return $truthy($ret_or_1=test["$=="]($$("RUBY_ENGINE_CHECK")))?$ret_or_1:test["$=="]($$("RUBY_PLATFORM_CHECK"))}),1),$def(self,"$skip_check_present_not?",(function(test){var $ret_or_1;return $truthy($ret_or_1=test["$=="]($$("RUBY_ENGINE_CHECK_NOT")))?$ret_or_1:test["$=="]($$("RUBY_PLATFORM_CHECK_NOT"))}),1),$const_set($nesting[0],"RUBY_ENGINE_CHECK",self.$s("send",self.$s("const",nil,"RUBY_ENGINE"),"==",self.$s("str","opal"))),$const_set($nesting[0],"RUBY_ENGINE_CHECK_NOT",self.$s("send",self.$s("const",nil,"RUBY_ENGINE"),"!=",self.$s("str","opal"))),$const_set($nesting[0],"RUBY_PLATFORM_CHECK",self.$s("send",self.$s("const",nil,"RUBY_PLATFORM"),"==",self.$s("str","opal"))),$const_set($nesting[0],"RUBY_PLATFORM_CHECK_NOT",self.$s("send",self.$s("const",nil,"RUBY_PLATFORM"),"!=",self.$s("str","opal")))}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/for_rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$defs=Opal.defs,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$to_a=Opal.to_a,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,+,find,map,s,next_tmp,class,===,type,updated,<<,prepend_to_body,process,attr_reader,new,to_a,result"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ForRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$reset_tmp_counter!",(function(){return this.counter=0}),0),$defs(self,"$next_tmp",(function(){var $ret_or_1;return null==this.counter&&(this.counter=nil),this.counter=$truthy($ret_or_1=this.counter)?$ret_or_1:0,this.counter=$rb_plus(this.counter,1),"$for_tmp"+this.counter}),0),$def(self,"$on_for",(function(node){var $a,iterating_value,iterating_lvars,lvars_declared_in_body,outer_assigns,tmp_loop_variable,get_tmp_loop_variable,loop_variable_assignment,loop_variable=nil,loop_body=nil;return loop_variable=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],iterating_value=null==$a[1]?nil:$a[1],loop_body=null==$a[2]?nil:$a[2],iterating_lvars=$$("LocalVariableAssigns").$find(loop_variable),lvars_declared_in_body=$$("LocalVariableAssigns").$find(loop_body),outer_assigns=$send($rb_plus(iterating_lvars,lvars_declared_in_body),"map",[],(function $$2(lvar_name){return null==lvar_name&&(lvar_name=nil),(null==$$2.$$s?this:$$2.$$s).$s("lvdeclare",lvar_name)}),{$$arity:1,$$s:this}),tmp_loop_variable=this.$class().$next_tmp(),get_tmp_loop_variable=this.$s("js_tmp",tmp_loop_variable),loop_variable_assignment=$eqeqeq("mlhs",loop_variable.$type())?loop_variable.$updated("masgn",[loop_variable,get_tmp_loop_variable]):loop_variable["$<<"](get_tmp_loop_variable),loop_body=this.$prepend_to_body(loop_body,loop_variable_assignment),(node=node.$updated("send",[iterating_value,"each",node.$updated("iter",[this.$s("args",this.$s("arg",tmp_loop_variable)),this.$process(loop_body)])])).$updated("begin",[].concat($to_a(outer_assigns)).concat([node]))}),1),function($base,$super,$parent_nesting){var self=$klass($base,$super,"LocalVariableAssigns"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$attr_reader("result"),$defs(self,"$find",(function(node){var processor=nil;return(processor=this.$new()).$process(node),processor.$result().$to_a()}),1),$def(self,"$initialize",(function(){return this.result=$$("Set").$new()}),0),$def(self,"$on_lvasgn",(function $$on_lvasgn(node){var $a,name,$yield=$$on_lvasgn.$$p||nil;return delete $$on_lvasgn.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],this.$result()["$<<"](name),$send2(this,$find_super(this,"on_lvasgn",$$on_lvasgn,!1,!0),"on_lvasgn",[node],$yield)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/explicit_writer_return"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$slice=Opal.slice,$eqeq=Opal.eqeq,$regexp=Opal.regexp,$send=Opal.send;return Opal.add_stubs("require,s,==,to_s,=~,process_all,updated"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ExplicitWriterReturn"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.in_masgn=nil,$def(self,"$initialize",(function(){return this.in_masgn=!1}),0),$const_set($nesting[0],"TMP_NAME","$writer"),$const_set($nesting[0],"GET_ARGS_NODE",self.$s("lvar",$$("TMP_NAME"))),$const_set($nesting[0],"RETURN_ARGS_NODE",self.$s("jsattr",$$("GET_ARGS_NODE"),self.$s("send",self.$s("jsattr",$$("GET_ARGS_NODE"),self.$s("str","length")),"-",self.$s("int",1)))),$def(self,"$on_send",(function $$on_send(node){var $a,recv,args,$yield=$$on_send.$$p||nil,method_name=nil,set_args_node=nil;return delete $$on_send.$$p,$truthy(this.in_masgn)?$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield):(recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(method_name.$to_s()["$=~"]($regexp([$$("REGEXP_START"),"\\w+=",$$("REGEXP_END")])))||$eqeq(method_name.$to_s(),"[]=")?(set_args_node=this.$s("lvasgn",$$("TMP_NAME"),$send(this,"s",["array"].concat($to_a(this.$process_all(args))))),this.$s("begin",set_args_node,node.$updated(nil,[recv,method_name,this.$s("splat",$$("GET_ARGS_NODE"))]),$$("RETURN_ARGS_NODE"))):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield))}),1),$def(self,"$on_masgn",(function $$on_masgn(node){var result,$yield=$$on_masgn.$$p||nil;return delete $$on_masgn.$$p,this.in_masgn=!0,result=$send2(this,$find_super(this,"on_masgn",$$on_masgn,!1,!0),"on_masgn",[node],$yield),this.in_masgn=!1,result}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/js_reserved_words"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$truthy=Opal.truthy,$defs=Opal.defs,$def=Opal.def,$range=Opal.range,$to_a=Opal.to_a,$send2=Opal.send2,$find_super=Opal.find_super,$hash2=Opal.hash2,$alias=Opal.alias;return Opal.add_stubs("require,freeze,=~,!,valid_name?,class,to_sym,valid_ivar_name?,[],to_s,updated,fix_var_name,fix_ivar_name"),self.$require("opal/rewriters/base"),self.$require("opal/regexp_anchors"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"JsReservedWords"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"ES51_RESERVED_WORD",$regexp([$$("REGEXP_START"),"(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"ES3_RESERVED_WORD_EXCLUSIVE",$regexp([$$("REGEXP_START"),"(?:int|byte|char|goto|long|final|float|short|double|native|throws|boolean|abstract|volatile|transient|synchronized)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"PROTO_SPECIAL_PROPS",$regexp([$$("REGEXP_START"),"(?:constructor|displayName|__proto__|__parent__|__noSuchMethod__|__count__)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"PROTO_SPECIAL_METHODS",$regexp([$$("REGEXP_START"),"(?:hasOwnProperty|valueOf)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"IMMUTABLE_PROPS",$regexp([$$("REGEXP_START"),"(?:NaN|Infinity|undefined)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"BASIC_IDENTIFIER_RULES",$regexp([$$("REGEXP_START"),"[$_a-z][$_a-z\\d]*",$$("REGEXP_END")],"i").$freeze()),$const_set($nesting[0],"RESERVED_FUNCTION_NAMES",$regexp([$$("REGEXP_START"),"(?:Array)",$$("REGEXP_END")]).$freeze()),$defs(self,"$valid_name?",(function(name){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $truthy($ret_or_1=$$("BASIC_IDENTIFIER_RULES")["$=~"](name))?($truthy($ret_or_2=$truthy($ret_or_3=$$("ES51_RESERVED_WORD")["$=~"](name))?$ret_or_3:$$("ES3_RESERVED_WORD_EXCLUSIVE")["$=~"](name))?$ret_or_2:$$("IMMUTABLE_PROPS")["$=~"](name))["$!"]():$ret_or_1}),1),$defs(self,"$valid_ivar_name?",(function(name){var $ret_or_1;return($truthy($ret_or_1=$$("PROTO_SPECIAL_PROPS")["$=~"](name))?$ret_or_1:$$("PROTO_SPECIAL_METHODS")["$=~"](name))["$!"]()}),1),$def(self,"$fix_var_name",(function(name){return $truthy(this.$class()["$valid_name?"](name))?name:(name+"$").$to_sym()}),1),$def(self,"$fix_ivar_name",(function(name){return $truthy(this.$class()["$valid_ivar_name?"](name.$to_s()["$[]"]($range(1,-1,!1))))?name:(name+"$").$to_sym()}),1),$def(self,"$on_lvar",(function $$on_lvar(node){var $a,name;return delete $$on_lvar.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],node=node.$updated(nil,[this.$fix_var_name(name)]),$send2(this,$find_super(this,"on_lvar",$$on_lvar,!1,!0),"on_lvar",[node],null)}),1),$def(self,"$on_lvasgn",(function $$on_lvasgn(node){var $a,name,value;return delete $$on_lvasgn.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],node=$truthy(value)?node.$updated(nil,[this.$fix_var_name(name),value]):node.$updated(nil,[this.$fix_var_name(name)]),$send2(this,$find_super(this,"on_lvasgn",$$on_lvasgn,!1,!0),"on_lvasgn",[node],null)}),1),$def(self,"$on_ivar",(function $$on_ivar(node){var $a,name;return delete $$on_ivar.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],node=node.$updated(nil,[this.$fix_ivar_name(name)]),$send2(this,$find_super(this,"on_ivar",$$on_ivar,!1,!0),"on_ivar",[node],null)}),1),$def(self,"$on_ivasgn",(function $$on_ivasgn(node){var $a,name,value;return delete $$on_ivasgn.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],node=$truthy(value)?node.$updated(nil,[this.$fix_ivar_name(name),value]):node.$updated(nil,[this.$fix_ivar_name(name)]),$send2(this,$find_super(this,"on_ivasgn",$$on_ivasgn,!1,!0),"on_ivasgn",[node],null)}),1),$def(self,"$on_restarg",(function(node){var $a,name;return name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$truthy(name)&&(node=node.$updated(nil,[this.$fix_var_name(name)],$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:name})}))),node}),1),$alias(self,"on_kwrestarg","on_restarg"),$def(self,"$on_argument",(function $$on_argument(node){var $a,name,value,fixed_name,new_children;return delete $$on_argument.$$p,node=$send2(this,$find_super(this,"on_argument",$$on_argument,!1,!0),"on_argument",[node],null),name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],fixed_name=this.$fix_var_name(name),new_children=$truthy(value)?[fixed_name,value]:[fixed_name],node.$updated(nil,new_children,$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:name})}))}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/block_to_iter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$def=Opal.def;return Opal.add_stubs("require,s,process,updated,+,children"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BlockToIter");return $def(self,"$on_block",(function(node){var $a,args,body,iter_node,recvr=nil;return recvr=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],iter_node=this.$s("iter",args,body),this.$process(recvr.$updated(nil,$rb_plus(recvr.$children(),[iter_node])))}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/dot_js_syntax"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_a=Opal.to_a,$slice=Opal.slice,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$eqeqeq=Opal.eqeqeq,$neqeq=Opal.neqeq,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("require,==,type,===,!=,size,error,first,to_js_attr_call,to_js_attr_assign_call,to_native_js_call,s"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DotJsSyntax");return $def(self,"$on_send",(function $$on_send(node){var $a,meth,$yield=$$on_send.$$p||nil,recv=nil,args=nil,recv_of_recv=nil,meth_of_recv=nil,$ret_or_1=nil,property=nil,value=nil;return delete $$on_send.$$p,recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(recv)&&$eqeq(recv.$type(),"send")?(recv_of_recv=null==($a=[].concat($to_a(recv)))[0]?nil:$a[0],meth_of_recv=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],$eqeq(meth_of_recv,"JS")?($eqeqeq("[]",$ret_or_1=meth)?($neqeq(args.$size(),1)&&this.$error(".JS[:property] syntax supports only one argument"),property=args.$first(),node=this.$to_js_attr_call(recv_of_recv,property)):$eqeqeq("[]=",$ret_or_1)?($neqeq(args.$size(),2)&&this.$error(".JS[:property]= syntax supports only two arguments"),property=null==($a=[].concat($to_a(args)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],node=this.$to_js_attr_assign_call(recv_of_recv,property,value)):node=this.$to_native_js_call(recv_of_recv,meth,args),$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],null)):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield)):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield)}),1),$def(self,"$to_native_js_call",(function(recv,meth,args){return $send(this,"s",["jscall",recv,meth].concat($to_a(args)))}),3),$def(self,"$to_js_attr_call",(function(recv,property){return this.$s("jsattr",recv,property)}),2),$def(self,"$to_js_attr_assign_call",(function(recv,property,value){return this.$s("jsattrasgn",recv,property,value)}),3)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/pattern_matching"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$slice=Opal.slice,$truthy=Opal.truthy,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$not=Opal.not,$neqeq=Opal.neqeq,$eqeq=Opal.eqeq,$alias=Opal.alias,$Opal=Opal.Opal;return Opal.add_stubs("require,s,convert_full_pattern,raise_no_matching_pattern_error,+,process,single_case_match,private,shift,===,type,!,empty?,!=,==,class,new,run!,variables,pattern,map,<<,array,on_literal,first,children,to_proc,method,each,to_ast,on_array_pattern,compact,[]"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"PatternMatching"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.depth=nil,$def(self,"$initialize",(function $$initialize(){var $yield=$$initialize.$$p||nil;return delete $$initialize.$$p,this.depth=0,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[],$yield)}),0),$def(self,"$on_match_pattern",(function(node){var $a,from,pat;return from=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],pat=null==$a[1]?nil:$a[1],this.$s("begin",this.$s("lvasgn","$pmvar",from),this.$s("if",this.$convert_full_pattern(from,pat),nil,this.$raise_no_matching_pattern_error("$pmvar")))}),1),$def(self,"$on_match_pattern_p",(function(node){var $a,from,pat;return from=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],pat=null==$a[1]?nil:$a[1],this.$s("if",this.$convert_full_pattern(from,pat),this.$s("true"),this.$s("false"))}),1),$def(self,"$on_case_match",(function(node){var $a,$b,from,cases,cmvar=nil,els=nil;return this.depth=$rb_plus(this.depth,1),cmvar="$cmvar"+this.depth,from=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],$b=($b=$a.length-1)<1?1:$b,cases=$slice.call($a,1,$b),els=null==$a[$b]?nil:$a[$b],$truthy(els)?this.$process(els):els=this.$raise_no_matching_pattern_error(cmvar),this.$s("begin",this.$s("lvasgn",cmvar,from),$send(this,"single_case_match",[cmvar].concat($to_a(cases)).concat([els])))}),1),self.$private(),$def(self,"$raise_no_matching_pattern_error",(function(from){return this.$s("send",nil,"raise",this.$s("const",this.$s("cbase"),"NoMatchingPatternError"),this.$s("lvar",from))}),1),$def(self,"$single_case_match",(function(from,$a,$b){var $post_args,cases,els,$c,self=this,cas=nil,pat=nil,if_guard=nil,body=nil,guard=nil,$ret_or_1=nil;return cases=($post_args=Opal.slice.call(arguments,1)).splice(0,$post_args.length-1),null==(els=$post_args.shift())&&(els=nil),cas=cases.$shift(),pat=null==($c=[].concat($to_a(cas)))[0]?nil:$c[0],if_guard=null==$c[1]?nil:$c[1],body=null==$c[2]?nil:$c[2],pat=self.$convert_full_pattern(from,pat),$truthy(if_guard)&&(guard=null==($c=[].concat($to_a(if_guard)))[0]?nil:$c[0],$eqeqeq("if_guard",$ret_or_1=if_guard.$type())?pat=self.$s("and",pat,guard):$eqeqeq("unless_guard",$ret_or_1)&&(pat=self.$s("and",pat,self.$s("send",guard,"!")))),self.$s("if",pat,self.$process(body),$not(cases["$empty?"]())?$send(self,"single_case_match",[from].concat($to_a(cases)).concat([els])):$neqeq(els,self.$s("empty_else"))?els:nil)}),-3),$def(self,"$convert_full_pattern",(function(from,pat){var converter=nil;return $eqeq(from.$class(),$$("Symbol"))&&(from=this.$s("lvar",from)),(converter=$$("PatternConverter").$new(pat))["$run!"](),this.$s("masgn",$send(this,"s",["mlhs"].concat($to_a(converter.$variables()))),this.$s("send",this.$s("const",this.$s("cbase"),"PatternMatching"),"call",from,converter.$pattern()))}),2),function($base,$super,$parent_nesting){var self=$klass($base,$super,"PatternConverter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.pat=$proto.outpat=$proto.variables=nil,$def(self,"$initialize",(function(pat){return this.pat=pat,this.variables=[]}),1),$def(self,"$run!",(function(){return this.outpat=this.$process(this.pat)}),0),$def(self,"$pattern",(function(){return this.outpat}),0),$def(self,"$variables",(function(){return $send(this.variables,"map",[],(function $$2(i){return null==i&&(i=nil),(null==$$2.$$s?this:$$2.$$s).$s("lvasgn",i)}),{$$arity:1,$$s:this})}),0),$def(self,"$on_match_var",(function(node){var $a,var$;return var$=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],this.variables["$<<"](var$),this.$s("sym","var")}),1),$def(self,"$on_match_as",(function(node){var $a,pat,save;return pat=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],save=null==$a[1]?nil:$a[1],this.$process(save),this.$array(this.$s("sym","save"),this.$process(pat))}),1),$def(self,"$on_literal",(function(node){return this.$array(this.$s("sym","lit"),node)}),1),$alias(self,"on_int","on_literal"),$alias(self,"on_float","on_literal"),$alias(self,"on_complex","on_literal"),$alias(self,"on_rational","on_literal"),$alias(self,"on_array","on_literal"),$alias(self,"on_str","on_literal"),$alias(self,"on_dstr","on_literal"),$alias(self,"on_xstr","on_literal"),$alias(self,"on_sym","on_literal"),$alias(self,"on_irange","on_literal"),$alias(self,"on_erange","on_literal"),$alias(self,"on_const","on_literal"),$alias(self,"on_regexp","on_literal"),$alias(self,"on_lambda","on_literal"),$alias(self,"on_begin","on_literal"),$def(self,"$on_pin",(function(node){return this.$on_literal(node.$children().$first())}),1),$def(self,"$on_match_rest",(function(node){return $truthy(node.$children()["$empty?"]())?this.$array(this.$s("sym","rest")):this.$array(this.$s("sym","rest"),this.$process(node.$children().$first()))}),1),$def(self,"$on_match_alt",(function(node){return $send(this,"array",[this.$s("sym","any")].concat($to_a($send(node.$children(),"map",[],this.$method("process").$to_proc()))))}),1),$def(self,"$on_const_pattern",(function(node){return $send(this,"array",[this.$s("sym","all")].concat($to_a($send(node.$children(),"map",[],this.$method("process").$to_proc()))))}),1),$def(self,"$on_array_pattern",(function(node,tail){var children=nil,fixed_size=nil,array_size=nil;return null==tail&&(tail=!1),children=[].concat($to_a(node)),$truthy(tail)&&children["$<<"](this.$s("match_rest")),fixed_size=!0,array_size=0,children=$send(children,"each",[],(function(i){return null==i&&(i=nil),$eqeqeq("match_rest",i.$type())?fixed_size=!1:array_size=$rb_plus(array_size,1)}),1),this.$array(this.$s("sym","array"),this.$to_ast(fixed_size),this.$to_ast(array_size),this.$to_ast($send(children,"map",[],this.$method("process").$to_proc())))}),-2),$def(self,"$on_array_pattern_with_tail",(function(node){return this.$on_array_pattern(node,!0)}),1),$def(self,"$on_hash_pattern",(function(node){var children=nil,any_size=nil;return children=[].concat($to_a(node)),any_size=$truthy(children["$empty?"]())?this.$to_ast(!1):this.$to_ast(!0),children=$send(children,"map",[],(function $$4(i){var $ret_or_1,self=null==$$4.$$s?this:$$4.$$s;return null==i&&(i=nil),$eqeqeq("pair",$ret_or_1=i.$type())?self.$array(i.$children()["$[]"](0),self.$process(i.$children()["$[]"](1))):$eqeqeq("match_var",$ret_or_1)?self.$array(self.$s("sym",i.$children()["$[]"](0)),self.$process(i)):$eqeqeq("match_nil_pattern",$ret_or_1)?(any_size=self.$to_ast(!1),nil):$eqeqeq("match_rest",$ret_or_1)?(any_size=$truthy(i.$children().$first())?self.$process(i.$children().$first()):self.$to_ast(!0),nil):nil}),{$$arity:1,$$s:this}).$compact(),this.$array(this.$s("sym","hash"),any_size,$send(this,"array",$to_a(children)))}),1),$def(self,"$on_find_pattern",(function(node){var children=nil;return children=[].concat($to_a(node)),children=$send(children,"map",[],this.$method("process").$to_proc()),this.$array(this.$s("sym","find"),$send(this,"array",$to_a(children)))}),1),self.$private(),$def(self,"$array",(function($a){var args,self=this;return args=Opal.slice.call(arguments),self.$to_ast(args)}),-1),$def(self,"$to_ast",(function(val){var $ret_or_1;return $eqeqeq($$("Array"),$ret_or_1=val)?$send(this,"s",["array"].concat($to_a(val))):$eqeqeq($$("Integer"),$ret_or_1)?this.$s("int",val):$eqeqeq(!0,$ret_or_1)?this.$s("true"):$eqeqeq(!1,$ret_or_1)?this.$s("false"):$eqeqeq(nil,$ret_or_1)?this.$s("nil"):nil}),1)}($nesting[0],$$$($$$($Opal,"Rewriters"),"Base"),$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/logical_operator_assignment"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$class_variable_set=Opal.class_variable_set,$defs=Opal.defs,$truthy=Opal.truthy,$class_variable_get=Opal.class_variable_get,$rb_plus=Opal.rb_plus,$const_set=Opal.const_set,$lambda=Opal.lambda,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$slice=Opal.slice,$hash2=Opal.hash2,$send=Opal.send,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,+,updated,s,==,include?,[],type,new_temp,freeze,call,fetch,error,process"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"LogicalOperatorAssignment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$reset_tmp_counter!",(function(){return $class_variable_set($nesting[0],"@@counter",0)}),0),$defs(self,"$new_temp",(function(){var $ret_or_1=nil;return $class_variable_set($nesting[0],"@@counter",$truthy(null!=$nesting[0].$$cvars["@@counter"]?"class variable":nil)&&$truthy($ret_or_1=$class_variable_get($nesting[0],"@@counter",!1))?$ret_or_1:0),$class_variable_set($nesting[0],"@@counter",$rb_plus($class_variable_get($nesting[0],"@@counter",!1),1)),"$logical_op_recvr_tmp_"+$class_variable_get($nesting[0],"@@counter",!1)}),0),$const_set($nesting[0],"GET_SET",$lambda((function $LogicalOperatorAssignment$2(get_type,set_type){return null==get_type&&(get_type=nil),null==set_type&&(set_type=nil),$lambda((function $$3(lhs,rhs,root_type){var get_node,self=null==$$3.$$s?this:$$3.$$s,condition_node=nil,defined_node=nil;return null==lhs&&(lhs=nil),null==rhs&&(rhs=nil),null==root_type&&(root_type=nil),get_node=lhs.$updated(get_type),condition_node=self.$s(root_type,get_node,rhs),$truthy(["const","cvar"]["$include?"](get_type))&&$eqeq(root_type,"or")&&(defined_node=self.$s("defined?",get_node),condition_node=self.$s("if",defined_node,self.$s("begin",condition_node),rhs)),lhs.$updated(set_type,[].concat($to_a(lhs)).concat([condition_node]))}),{$$arity:3,$$s:null==$LogicalOperatorAssignment$2.$$s?this:$LogicalOperatorAssignment$2.$$s})}),{$$arity:2,$$s:self})),$const_set($nesting[0],"LocalVariableHandler",$$("GET_SET")["$[]"]("lvar","lvasgn")),$const_set($nesting[0],"InstanceVariableHandler",$$("GET_SET")["$[]"]("ivar","ivasgn")),$const_set($nesting[0],"ConstantHandler",$$("GET_SET")["$[]"]("const","casgn")),$const_set($nesting[0],"GlobalVariableHandler",$$("GET_SET")["$[]"]("gvar","gvasgn")),$const_set($nesting[0],"ClassVariableHandler",$$("GET_SET")["$[]"]("cvar","cvasgn")),function($base,$super){var self=$klass($base,$super,"SendHandler");$defs(self,"$call",(function(lhs,rhs,root_type){var $a,args,call_reader,call_writer,get_or_set,recvr=nil,reader_method=nil,recvr_tmp=nil,cache_recvr=nil,writer_method=nil;return recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],reader_method=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(recvr)&&$eqeq(recvr.$type(),"send")&&(recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp)),writer_method=reader_method+"=",call_reader=lhs.$updated("send",[recvr,reader_method].concat($to_a(args))),call_writer=lhs.$updated("send",[recvr,writer_method].concat($to_a(args)).concat([rhs])),get_or_set=this.$s(root_type,call_reader,call_writer),$truthy(cache_recvr)?this.$s("begin",cache_recvr,get_or_set):get_or_set}),3)}($nesting[0],self),function($base,$super){var self=$klass($base,$super,"ConditionalSendHandler");$defs(self,"$call",(function(lhs,rhs,root_type){var $a,args,recvr_tmp,cache_recvr,recvr_is_nil,plain_send,plain_or_asgn,recvr=nil,meth=nil;return root_type+="_asgn",recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp),recvr_is_nil=this.$s("send",recvr,"nil?"),plain_send=lhs.$updated("send",[recvr,meth].concat($to_a(args))),plain_or_asgn=this.$s(root_type,plain_send,rhs),this.$s("begin",cache_recvr,this.$s("if",recvr_is_nil,this.$s("nil"),plain_or_asgn))}),3)}($nesting[0],self),$const_set($nesting[0],"HANDLERS",$hash2(["lvasgn","ivasgn","casgn","gvasgn","cvasgn","send","csend"],{lvasgn:$$("LocalVariableHandler"),ivasgn:$$("InstanceVariableHandler"),casgn:$$("ConstantHandler"),gvasgn:$$("GlobalVariableHandler"),cvasgn:$$("ClassVariableHandler"),send:$$("SendHandler"),csend:$$("ConditionalSendHandler")}).$freeze()),$def(self,"$on_or_asgn",(function(node){var $a,rhs,result,lhs=nil;return $a=[].concat($to_a(node)),lhs=null==$a[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],result=$send($$("HANDLERS"),"fetch",[lhs.$type()],(function $$4(){return(null==$$4.$$s?this:$$4.$$s).$error("cannot handle LHS type: "+lhs.$type())}),{$$arity:0,$$s:this}).$call(lhs,rhs,"or"),this.$process(result)}),1),$def(self,"$on_and_asgn",(function(node){var $a,rhs,result,lhs=nil;return $a=[].concat($to_a(node)),lhs=null==$a[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],result=$send($$("HANDLERS"),"fetch",[lhs.$type()],(function $$5(){return(null==$$5.$$s?this:$$5.$$s).$error("cannot handle LHS type: "+lhs.$type())}),{$$arity:0,$$s:this}).$call(lhs,rhs,"and"),this.$process(result)}),1),$const_set($nesting[0],"ASSIGNMENT_STRING_NODE",self.$s("str","assignment")),$def(self,"$on_defined?",(function $LogicalOperatorAssignment_on_defined$ques$6(node){var $a,inner=nil;return delete $LogicalOperatorAssignment_on_defined$ques$6.$$p,inner=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$truthy(["or_asgn","and_asgn"]["$include?"](inner.$type()))?$$("ASSIGNMENT_STRING_NODE"):$send2(this,$find_super(this,"on_defined?",$LogicalOperatorAssignment_on_defined$ques$6,!1,!0),"on_defined?",[node],null)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/binary_operator_assignment"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$class_variable_set=Opal.class_variable_set,$defs=Opal.defs,$truthy=Opal.truthy,$class_variable_get=Opal.class_variable_get,$rb_plus=Opal.rb_plus,$const_set=Opal.const_set,$lambda=Opal.lambda,$to_a=Opal.to_a,$slice=Opal.slice,$eqeq=Opal.eqeq,$hash2=Opal.hash2,$send=Opal.send,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,+,updated,[],==,type,new_temp,s,freeze,call,fetch,error,process"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"BinaryOperatorAssignment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$reset_tmp_counter!",(function(){return $class_variable_set($nesting[0],"@@counter",0)}),0),$defs(self,"$new_temp",(function(){var $ret_or_1=nil;return $class_variable_set($nesting[0],"@@counter",$truthy(null!=$nesting[0].$$cvars["@@counter"]?"class variable":nil)&&$truthy($ret_or_1=$class_variable_get($nesting[0],"@@counter",!1))?$ret_or_1:0),$class_variable_set($nesting[0],"@@counter",$rb_plus($class_variable_get($nesting[0],"@@counter",!1),1)),"$binary_op_recvr_tmp_"+$class_variable_get($nesting[0],"@@counter",!1)}),0),$const_set($nesting[0],"GET_SET",$lambda((function(get_type,set_type){return null==get_type&&(get_type=nil),null==set_type&&(set_type=nil),$lambda((function(node,lhs,operation,rhs){var get_node,set_node;return null==node&&(node=nil),null==lhs&&(lhs=nil),null==operation&&(operation=nil),null==rhs&&(rhs=nil),get_node=lhs.$updated(get_type),set_node=node.$updated("send",[get_node,operation,rhs]),lhs.$updated(set_type,[].concat($to_a(lhs)).concat([set_node]))}),4)}),2)),$const_set($nesting[0],"LocalVariableHandler",$$("GET_SET")["$[]"]("lvar","lvasgn")),$const_set($nesting[0],"InstanceVariableHandler",$$("GET_SET")["$[]"]("ivar","ivasgn")),$const_set($nesting[0],"ConstantHandler",$$("GET_SET")["$[]"]("const","casgn")),$const_set($nesting[0],"GlobalVariableHandler",$$("GET_SET")["$[]"]("gvar","gvasgn")),$const_set($nesting[0],"ClassVariableHandler",$$("GET_SET")["$[]"]("cvar","cvasgn")),function($base,$super){var self=$klass($base,$super,"SendHandler");$defs(self,"$call",(function(node,lhs,operation,rhs){var $a,args,call_reader,call_op,call_writer,recvr=nil,reader_method=nil,recvr_tmp=nil,cache_recvr=nil,writer_method=nil;return recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],reader_method=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(recvr)&&$eqeq(recvr.$type(),"send")&&(recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp)),writer_method=reader_method+"=",call_reader=lhs.$updated("send",[recvr,reader_method].concat($to_a(args))),call_op=node.$updated("send",[call_reader,operation,rhs]),call_writer=lhs.$updated("send",[recvr,writer_method].concat($to_a(args)).concat([call_op])),$truthy(cache_recvr)?node.$updated("begin",[cache_recvr,call_writer]):call_writer}),4)}($nesting[0],self),function($base,$super){var self=$klass($base,$super,"ConditionalSendHandler");$defs(self,"$call",(function(node,lhs,operation,rhs){var $a,args,recvr_tmp,cache_recvr,recvr_is_nil,plain_send,plain_op_asgn,recvr=nil,meth=nil;return recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp),recvr_is_nil=this.$s("send",recvr,"nil?"),plain_send=lhs.$updated("send",[recvr,meth].concat($to_a(args))),plain_op_asgn=node.$updated("op_asgn",[plain_send,operation,rhs]),this.$s("begin",cache_recvr,this.$s("if",recvr_is_nil,this.$s("nil"),plain_op_asgn))}),4)}($nesting[0],self),$const_set($nesting[0],"HANDLERS",$hash2(["lvasgn","ivasgn","casgn","gvasgn","cvasgn","send","csend"],{lvasgn:$$("LocalVariableHandler"),ivasgn:$$("InstanceVariableHandler"),casgn:$$("ConstantHandler"),gvasgn:$$("GlobalVariableHandler"),cvasgn:$$("ClassVariableHandler"),send:$$("SendHandler"),csend:$$("ConditionalSendHandler")}).$freeze()),$def(self,"$on_op_asgn",(function(node){var $a,op,rhs,result,lhs=nil;return $a=[].concat($to_a(node)),lhs=null==$a[0]?nil:$a[0],op=null==$a[1]?nil:$a[1],rhs=null==$a[2]?nil:$a[2],result=$send($$("HANDLERS"),"fetch",[lhs.$type()],(function $$4(){return(null==$$4.$$s?this:$$4.$$s).$error("cannot handle LHS type: "+lhs.$type())}),{$$arity:0,$$s:this}).$call(node,lhs,op,rhs),this.$process(result)}),1),$const_set($nesting[0],"ASSIGNMENT_STRING_NODE",self.$s("str","assignment")),$def(self,"$on_defined?",(function $BinaryOperatorAssignment_on_defined$ques$5(node){var $a,inner=nil;return delete $BinaryOperatorAssignment_on_defined$ques$5.$$p,inner=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$eqeq(inner.$type(),"op_asgn")?$$("ASSIGNMENT_STRING_NODE"):$send2(this,$find_super(this,"on_defined?",$BinaryOperatorAssignment_on_defined$ques$5,!1,!0),"on_defined?",[node],null)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/hashes/key_duplicates_rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$Opal=Opal.Opal;return Opal.add_stubs("require,new,include?,type,<<,==,process_regular_node,updated,inspect,warn"),self.$require("opal/rewriters/base"),self.$require("set"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Hashes")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"KeyDuplicatesRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.keys=nil,$def(self,"$initialize",(function(){return this.keys=$$("UniqKeysSet").$new()}),0),$def(self,"$on_hash",(function $$on_hash(node){var $a,self=this,previous_keys=nil;return delete $$on_hash.$$p,function(){try{return $a=[self.keys,$$("UniqKeysSet").$new()],previous_keys=$a[0],self.keys=$a[1],$send2(self,$find_super(self,"on_hash",$$on_hash,!1,!0),"on_hash",[node],null)}finally{self.keys=previous_keys}}()}),1),$def(self,"$on_pair",(function $$on_pair(node){var $a,key=nil;return delete $$on_pair.$$p,key=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$truthy(["str","sym"]["$include?"](key.$type()))&&this.keys["$<<"](key),$send2(this,$find_super(this,"on_pair",$$on_pair,!1,!0),"on_pair",[node],null)}),1),$def(self,"$on_kwsplat",(function(node){var $a,hash=nil;return hash=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$eqeq(hash.$type(),"hash")&&(hash=this.$process_regular_node(hash)),node.$updated(nil,[hash])}),1),function($base,$super,$parent_nesting){var self=$klass($base,null,"UniqKeysSet"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.set=nil,$def(self,"$initialize",(function(){return this.set=$$("Set").$new()}),0),$def(self,"$<<",(function(element){var $a,key=nil;return $truthy(this.set["$include?"](element))?(key=null==($a=[].concat($to_a(element)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],key=$eqeq(element.$type(),"str")?key.$inspect():":"+key,$$("Kernel").$warn("warning: key "+key+" is duplicated and overwritten")):this.set["$<<"](element)}),1)}($nesting[0],0,$nesting)}($nesting[0],$$$($$$($Opal,"Rewriters"),"Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/dump_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$hash2=Opal.hash2,$def=Opal.def;return Opal.add_stubs("require,updated"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DumpArgs");return $def(self,"$on_def",(function $$on_def(node){var $a,args;return delete $$on_def.$$p,node=$send2(this,$find_super(this,"on_def",$$on_def,!1,!0),"on_def",[node],null),null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))}),1),$def(self,"$on_defs",(function $$on_defs(node){var $a,args;return delete $$on_defs.$$p,node=$send2(this,$find_super(this,"on_defs",$$on_defs,!1,!0),"on_defs",[node],null),null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],args=null==$a[2]?nil:$a[2],null==$a[3]?nil:$a[3],node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))}),1),$def(self,"$on_iter",(function $$on_iter(node){var $a,args;return delete $$on_iter.$$p,node=$send2(this,$find_super(this,"on_iter",$$on_iter,!1,!0),"on_iter",[node],null),args=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/mlhs_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$def=Opal.def,$rb_plus=Opal.rb_plus,$send=Opal.send,$eqeq=Opal.eqeq,$hash2=Opal.hash2;return Opal.add_stubs("require,new,updated,rewritten,initialization,s,prepend_to_body,attr_reader,split!,+,each,children,==,type,new_mlhs_tmp,process,<<,length,[],empty?"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"MlhsArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_def",(function $$on_def(node){var $a,mid,args=nil,body=nil,arguments$=nil,$ret_or_1=nil;return delete $$on_def.$$p,node=$send2(this,$find_super(this,"on_def",$$on_def,!1,!0),"on_def",[node],null),mid=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],arguments$=$$("Arguments").$new(args),args=args.$updated(nil,arguments$.$rewritten()),$truthy(arguments$.$initialization())&&(body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),body=this.$prepend_to_body(body,arguments$.$initialization())),node.$updated(nil,[mid,args,body])}),1),$def(self,"$on_defs",(function $$on_defs(node){var $a,recv,mid,args=nil,body=nil,arguments$=nil,$ret_or_1=nil;return delete $$on_defs.$$p,node=$send2(this,$find_super(this,"on_defs",$$on_defs,!1,!0),"on_defs",[node],null),recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],mid=null==$a[1]?nil:$a[1],args=null==$a[2]?nil:$a[2],body=null==$a[3]?nil:$a[3],arguments$=$$("Arguments").$new(args),args=args.$updated(nil,arguments$.$rewritten()),$truthy(arguments$.$initialization())&&(body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),body=this.$prepend_to_body(body,arguments$.$initialization())),node.$updated(nil,[recv,mid,args,body])}),1),$def(self,"$on_iter",(function $$on_iter(node){var $a,args=nil,body=nil,arguments$=nil,$ret_or_1=nil;return delete $$on_iter.$$p,node=$send2(this,$find_super(this,"on_iter",$$on_iter,!1,!0),"on_iter",[node],null),args=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],body=null==$a[1]?nil:$a[1],arguments$=$$("Arguments").$new(args),args=args.$updated(nil,arguments$.$rewritten()),$truthy(arguments$.$initialization())&&(body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),body=this.$prepend_to_body(body,arguments$.$initialization())),node.$updated(nil,[args,body])}),1),function($base,$super,$parent_nesting){var self=$klass($base,$super,"Arguments"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.counter=$proto.args=$proto.initialization=nil,self.$attr_reader("rewritten","initialization"),$def(self,"$initialize",(function(args){return this.args=args,this.rewritten=[],this.initialization=[],this.rewriter=$$("MlhsRewriter").$new(),this["$split!"]()}),1),$def(self,"$reset_tmp_counter!",(function(){return this.counter=0}),0),$def(self,"$new_mlhs_tmp",(function(){var $ret_or_1;return this.counter=$truthy($ret_or_1=this.counter)?$ret_or_1:0,this.counter=$rb_plus(this.counter,1),"$mlhs_tmp"+this.counter}),0),$def(self,"$split!",(function(){return $send(this.args.$children(),"each",[],(function $$3(arg){var self=null==$$3.$$s?this:$$3.$$s,var_name=nil,rhs=nil,mlhs=nil;return null==self.rewriter&&(self.rewriter=nil),null==self.initialization&&(self.initialization=nil),null==self.rewritten&&(self.rewritten=nil),null==arg&&(arg=nil),$eqeq(arg.$type(),"mlhs")?(var_name=self.$new_mlhs_tmp(),rhs=self.$s("lvar",var_name),mlhs=self.rewriter.$process(arg),self.initialization["$<<"](self.$s("masgn",mlhs,rhs)),self.rewritten["$<<"](self.$s("arg",var_name).$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:var_name})})))):self.rewritten["$<<"](arg)}),{$$arity:1,$$s:this}),$eqeq(this.initialization.$length(),1)?this.initialization=this.initialization["$[]"](0):$truthy(this.initialization["$empty?"]())?this.initialization=nil:this.initialization=$send(this,"s",["begin"].concat($to_a(this.initialization)))}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"MlhsRewriter");return $def(self,"$on_arg",(function(node){return node.$updated("lvasgn")}),1),$def(self,"$on_restarg",(function(node){var name;return name=node.$children()["$[]"](0),$truthy(name)?this.$s("splat",node.$updated("lvasgn")):this.$s("splat")}),1)}($nesting[0],$$("Base"))}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/arguments"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("attr_reader,each,===,type,<<,any?,raise,!,nil?,has_any_kwargs?,can_inline_kwargs?,empty?"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,null,"Arguments"),$proto=self.$$prototype;return $proto.restarg=$proto.postargs=$proto.kwargs=$proto.kwoptargs=$proto.kwrestarg=$proto.optargs=nil,self.$attr_reader("args","optargs","restarg","postargs","kwargs","kwoptargs","kwrestarg","kwnilarg","shadowargs","blockarg"),$def(self,"$initialize",(function(args){return this.args=[],this.optargs=[],this.restarg=nil,this.postargs=[],this.kwargs=[],this.kwoptargs=[],this.kwrestarg=nil,this.kwnilarg=!1,this.shadowargs=[],this.blockarg=nil,$send(args,"each",[],(function $$1(arg){var $ret_or_1,self=null==$$1.$$s?this:$$1.$$s;return null==self.optargs&&(self.optargs=nil),null==self.restarg&&(self.restarg=nil),null==self.postargs&&(self.postargs=nil),null==self.args&&(self.args=nil),null==self.kwargs&&(self.kwargs=nil),null==self.kwoptargs&&(self.kwoptargs=nil),null==self.shadowargs&&(self.shadowargs=nil),null==arg&&(arg=nil),$eqeqeq("arg",$ret_or_1=arg.$type())||$eqeqeq("mlhs",$ret_or_1)?($truthy(self.restarg)||$truthy(self.optargs["$any?"]())?self.postargs:self.args)["$<<"](arg):$eqeqeq("optarg",$ret_or_1)?self.optargs["$<<"](arg):$eqeqeq("restarg",$ret_or_1)?self.restarg=arg:$eqeqeq("kwarg",$ret_or_1)?self.kwargs["$<<"](arg):$eqeqeq("kwoptarg",$ret_or_1)?self.kwoptargs["$<<"](arg):$eqeqeq("kwnilarg",$ret_or_1)?self.kwnilarg=!0:$eqeqeq("kwrestarg",$ret_or_1)?self.kwrestarg=arg:$eqeqeq("shadowarg",$ret_or_1)?self.shadowargs["$<<"](arg):$eqeqeq("blockarg",$ret_or_1)?self.blockarg=arg:self.$raise("Unsupported arg type "+arg.$type())}),{$$arity:1,$$s:this})}),1),$def(self,"$has_post_args?",(function(){var $ret_or_1,$ret_or_2=nil;return $truthy($ret_or_1=$truthy($ret_or_2=this.restarg["$nil?"]()["$!"]())?$ret_or_2:this.postargs["$any?"]())?$ret_or_1:$truthy($ret_or_2=this["$has_any_kwargs?"]())?this["$can_inline_kwargs?"]()["$!"]():$ret_or_2}),0),$def(self,"$has_any_kwargs?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.kwargs["$any?"]())?$ret_or_2:this.kwoptargs["$any?"]())?$ret_or_1:this.kwrestarg["$nil?"]()["$!"]()}),0),$def(self,"$can_inline_kwargs?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.optargs["$empty?"]())?this.restarg["$nil?"]():$ret_or_2)?this.postargs["$empty?"]():$ret_or_1}),0)}([$module($base,"Rewriters")].concat($parent_nesting)[0])}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/inline_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$hash2=Opal.hash2,$def=Opal.def,$const_set=Opal.const_set,$send=Opal.send,$eqeq=Opal.eqeq,$Opal=Opal.Opal;return Opal.add_stubs("require,s,new,updated,inline,prepend_to_body,initialization,attr_reader,freeze,children,each,send,any?,blockarg,<<,shadowargs,args,==,[],has_post_args?,length,has_any_kwargs?,can_inline_kwargs?,kwargs,kwoptargs,kwrestarg,postargs,optargs,args_to_keep,restarg"),self.$require("opal/rewriters/base"),self.$require("opal/rewriters/arguments"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"InlineArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_def",(function $$on_def(node){var $a,mid,$ret_or_1,inline_args,args=nil,body=nil,initializer=nil;return delete $$on_def.$$p,node=$send2(this,$find_super(this,"on_def",$$on_def,!1,!0),"on_def",[node],null),mid=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),initializer=$$("Initializer").$new(args,$hash2(["type"],{type:"def"})),inline_args=args.$updated(nil,initializer.$inline()),body=this.$prepend_to_body(body,initializer.$initialization()),node.$updated(nil,[mid,inline_args,body])}),1),$def(self,"$on_defs",(function $$on_defs(node){var $a,recv,mid,$ret_or_1,inline_args,args=nil,body=nil,initializer=nil;return delete $$on_defs.$$p,node=$send2(this,$find_super(this,"on_defs",$$on_defs,!1,!0),"on_defs",[node],null),recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],mid=null==$a[1]?nil:$a[1],args=null==$a[2]?nil:$a[2],body=null==$a[3]?nil:$a[3],body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),initializer=$$("Initializer").$new(args,$hash2(["type"],{type:"defs"})),inline_args=args.$updated(nil,initializer.$inline()),body=this.$prepend_to_body(body,initializer.$initialization()),node.$updated(nil,[recv,mid,inline_args,body])}),1),$def(self,"$on_iter",(function $$on_iter(node){var $a,$ret_or_1,inline_args,args=nil,body=nil,initializer=nil;return delete $$on_iter.$$p,node=$send2(this,$find_super(this,"on_iter",$$on_iter,!1,!0),"on_iter",[node],null),args=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],body=null==$a[1]?nil:$a[1],body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),initializer=$$("Initializer").$new(args,$hash2(["type"],{type:"iter"})),inline_args=args.$updated(nil,initializer.$inline()),body=this.$prepend_to_body(body,initializer.$initialization()),node.$updated(nil,[inline_args,body])}),1),function($base,$super,$parent_nesting){var self=$klass($base,$super,"Initializer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.initialization=$proto.args=$proto.inline=nil,self.$attr_reader("inline","initialization"),$const_set($nesting[0],"STEPS",["extract_blockarg","initialize_shadowargs","extract_args","prepare_post_args","prepare_kwargs","extract_optargs","extract_restarg","extract_post_args","extract_kwargs","extract_kwoptargs","extract_kwrestarg"].$freeze()),$def(self,"$initialize",(function(args,$kwargs){var type;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");if(!Opal.hasOwnProperty.call($kwargs.$$smap,"type"))throw Opal.ArgumentError.$new("missing keyword: type");return type=$kwargs.$$smap.type,this.args=$$("Arguments").$new(args.$children()),this.inline=[],this.initialization=[],this.type=type,this.underscore_found=!1,$send($$("STEPS"),"each",[],(function $$1(step){return null==step&&(step=nil),(null==$$1.$$s?this:$$1.$$s).$send(step)}),{$$arity:1,$$s:this}),$truthy(this.initialization["$any?"]())?this.initialization=$send(this,"s",["begin"].concat($to_a(this.initialization))):this.initialization=nil}),2),$def(self,"$extract_blockarg",(function(){var arg=nil;return $truthy(arg=this.args.$blockarg())?this.initialization["$<<"](arg.$updated("extract_blockarg")):nil}),0),$def(self,"$initialize_shadowargs",(function(){return $send(this.args.$shadowargs(),"each",[],(function $$2(arg){var self=null==$$2.$$s?this:$$2.$$s;return null==self.initialization&&(self.initialization=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("initialize_shadowarg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_args",(function(){return $send(this.args.$args(),"each",[],(function $$3(arg){var self=null==$$3.$$s?this:$$3.$$s;return null==self.type&&(self.type=nil),null==self.initialization&&(self.initialization=nil),null==self.underscore_found&&(self.underscore_found=nil),null==self.inline&&(self.inline=nil),null==arg&&(arg=nil),$eqeq(self.type,"iter")&&(self.initialization["$<<"](arg.$updated("initialize_iter_arg")),$eqeq(arg.$children()["$[]"](0),"_")&&($truthy(self.underscore_found)&&(arg=self.$s("fake_arg")),self.underscore_found=!0)),self.inline["$<<"](arg)}),{$$arity:1,$$s:this})}),0),$def(self,"$prepare_post_args",(function(){return $truthy(this.args["$has_post_args?"]())?this.initialization["$<<"](this.$s("prepare_post_args",this.args.$args().$length())):nil}),0),$def(self,"$prepare_kwargs",(function(){return $truthy(this.args["$has_any_kwargs?"]())?($truthy(this.args["$can_inline_kwargs?"]())?this.inline["$<<"](this.$s("arg","$kwargs")):(this.initialization["$<<"](this.$s("extract_kwargs")),this.inline["$<<"](this.$s("fake_arg"))),this.initialization["$<<"](this.$s("ensure_kwargs_are_kwargs"))):nil}),0),$def(self,"$extract_kwargs",(function(){return $send(this.args.$kwargs(),"each",[],(function $$4(arg){var self=null==$$4.$$s?this:$$4.$$s;return null==self.initialization&&(self.initialization=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("extract_kwarg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_kwoptargs",(function(){return $send(this.args.$kwoptargs(),"each",[],(function $$5(arg){var self=null==$$5.$$s?this:$$5.$$s;return null==self.initialization&&(self.initialization=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("extract_kwoptarg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_kwrestarg",(function(){var arg=nil;return $truthy(arg=this.args.$kwrestarg())?this.initialization["$<<"](arg.$updated("extract_kwrestarg")):nil}),0),$def(self,"$extract_post_args",(function(){return $send(this.args.$postargs(),"each",[],(function $$6(arg){var self=null==$$6.$$s?this:$$6.$$s;return null==self.initialization&&(self.initialization=nil),null==self.inline&&(self.inline=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("extract_post_arg")),self.inline["$<<"](self.$s("fake_arg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_optargs",(function(){var has_post_args;return has_post_args=this.args["$has_post_args?"](),$send(this.args.$optargs(),"each",[],(function $$7(arg){var $a,self=null==$$7.$$s?this:$$7.$$s,arg_name=nil,default_value=nil;return null==self.initialization&&(self.initialization=nil),null==self.inline&&(self.inline=nil),null==arg&&(arg=nil),$truthy(has_post_args)?(arg_name=null==($a=[].concat($to_a(arg)))[0]?nil:$a[0],default_value=null==$a[1]?nil:$a[1],self.initialization["$<<"](arg.$updated("extract_post_optarg",[arg_name,default_value,self.$args_to_keep()])),self.inline["$<<"](self.$s("fake_arg"))):(self.inline["$<<"](arg.$updated("arg")),self.initialization["$<<"](arg.$updated("extract_optarg")))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_restarg",(function(){var arg=nil,arg_name=nil;return $truthy(arg=this.args.$restarg())?(arg_name=arg.$children()["$[]"](0),this.initialization["$<<"](arg.$updated("extract_restarg",[arg_name,this.$args_to_keep()])),this.inline["$<<"](this.$s("fake_arg"))):nil}),0),$def(self,"$args_to_keep",(function(){return this.args.$postargs().$length()}),0)}($nesting[0],$$$($$$($Opal,"Rewriters"),"Base"),$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/numblocks"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_ary=Opal.to_ary,$send=Opal.send,$to_a=Opal.to_a,$def=Opal.def;return Opal.add_stubs("require,children,s,gen_args,map"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Numblocks");return $def(self,"$on_numblock",(function(node){var $a,$b,left,arg_count,right;return $b=node.$children(),left=null==($a=$to_ary($b))[0]?nil:$a[0],arg_count=null==$a[1]?nil:$a[1],right=null==$a[2]?nil:$a[2],this.$s("block",left,$send(this,"s",["args"].concat($to_a(this.$gen_args(arg_count)))),right)}),1),$def(self,"$gen_args",(function(arg_count){return $send(Opal.Range.$new(1,arg_count,!1),"map",[],(function $$1(i){return null==i&&(i=nil),(null==$$1.$$s?this:$$1.$$s).$s("arg","_"+i)}),{$$arity:1,$$s:this})}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/returnable_logic"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$def=Opal.def,$rb_minus=Opal.rb_minus,$to_a=Opal.to_a,$send=Opal.send,$send2=Opal.send2,$find_super=Opal.find_super,$slice=Opal.slice,$eqeq=Opal.eqeq;return Opal.add_stubs("require,+,-,children,[]=,meta,s,next_tmp,build_if_from_when,free_tmp,[],process,updated,==,count,first,delete,private,build_rule_from_parts,empty?,type"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ReturnableLogic");return self.$$prototype.counter=nil,$def(self,"$next_tmp",(function(){var $ret_or_1;return this.counter=$truthy($ret_or_1=this.counter)?$ret_or_1:0,this.counter=$rb_plus(this.counter,1),"$ret_or_"+this.counter}),0),$def(self,"$free_tmp",(function(){return this.counter=$rb_minus(this.counter,1)}),0),$def(self,"$reset_tmp_counter!",(function(){return this.counter=nil}),0),$def(self,"$on_if",(function $$on_if(node){var $a,$yield=$$on_if.$$p||nil,test=nil,$writer=nil;return delete $$on_if.$$p,test=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],$truthy(test)&&($writer=["if_test",!0],$send(test.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$send2(this,$find_super(this,"on_if",$$on_if,!1,!0),"on_if",[node],$yield)}),1),$def(self,"$on_case",(function(node){var $a,$b,lhs,whens,$ret_or_1,out,els=nil,lhs_tmp=nil;return lhs=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],$b=($b=$a.length-1)<1?1:$b,whens=$slice.call($a,1,$b),els=null==$a[$b]?nil:$a[$b],els=$truthy($ret_or_1=els)?$ret_or_1:this.$s("nil"),$truthy(lhs)&&(lhs_tmp=this.$next_tmp()),out=this.$build_if_from_when(node,lhs,lhs_tmp,whens,els),$truthy(lhs)&&this.$free_tmp(),out}),1),$def(self,"$on_or",(function(node){var $a,lhs=nil,rhs=nil,$writer=nil,out=nil,lhs_tmp=nil;return lhs=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],$truthy(node.$meta()["$[]"]("if_test"))?($writer=["if_test",($writer=["if_test",!0],$send(rhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])],$send(lhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],out=this.$process(node.$updated("if",[lhs,this.$s("true"),rhs]))):(lhs_tmp=this.$next_tmp(),out=this.$process(node.$updated("if",[this.$s("lvasgn",lhs_tmp,lhs),this.$s("js_tmp",lhs_tmp),rhs])),this.$free_tmp()),out}),1),$def(self,"$on_and",(function(node){var $a,lhs=nil,rhs=nil,$writer=nil,out=nil,lhs_tmp=nil;return lhs=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],$truthy(node.$meta()["$[]"]("if_test"))?($writer=["if_test",($writer=["if_test",!0],$send(rhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])],$send(lhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],out=this.$process(node.$updated("if",[lhs,rhs,this.$s("false")]))):(lhs_tmp=this.$next_tmp(),out=this.$process(node.$updated("if",[this.$s("lvasgn",lhs_tmp,lhs),rhs,this.$s("js_tmp",lhs_tmp)])),this.$free_tmp()),out}),1),$def(self,"$on_begin",(function $$on_begin(node){var $yield=$$on_begin.$$p||nil,$writer=nil;return delete $$on_begin.$$p,$truthy(node.$meta()["$[]"]("if_test"))&&$eqeq(node.$children().$count(),1)&&($writer=["if_test",!0],$send(node.$children().$first().$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),node.$meta().$delete("if_test"),$send2(this,$find_super(this,"on_begin",$$on_begin,!1,!0),"on_begin",[node],$yield)}),1),self.$private(),$def(self,"$build_if_from_when",(function(node,lhs,lhs_tmp,whens,els){var $a,$b,parts,expr,rule,first_when=nil,next_whens=nil;return first_when=null==($a=[].concat($to_a(whens)))[0]?nil:$a[0],next_whens=$slice.call($a,1),$b=($b=($a=[].concat($to_a(first_when.$children()))).length-1)<0?0:$b,parts=$slice.call($a,0,$b),expr=null==$a[$b]?nil:$a[$b],rule=this.$build_rule_from_parts(node,lhs,lhs_tmp,parts),first_when.$updated("if",[rule,this.$process(expr),$truthy(next_whens["$empty?"]())?this.$process(els):this.$build_if_from_when(nil,nil,lhs_tmp,next_whens,els)])}),5),$def(self,"$build_rule_from_parts",(function(node,lhs,lhs_tmp,parts){var $a,subrule,first_part=nil,next_parts=nil,splat_on=nil,iter_val=nil,block=nil;return lhs=$truthy(node)&&$truthy(lhs_tmp)?node.$updated("lvasgn",[lhs_tmp,this.$process(lhs)]):this.$s("js_tmp",lhs_tmp),first_part=null==($a=[].concat($to_a(parts)))[0]?nil:$a[0],next_parts=$slice.call($a,1),subrule=$eqeq(first_part.$type(),"splat")?(splat_on=first_part.$children().$first(),iter_val=this.$next_tmp(),block=this.$s("send",this.$process(splat_on),"any?",this.$s("iter",this.$s("args",this.$s("arg",iter_val)),this.$build_rule_from_parts(nil,nil,lhs_tmp,[this.$s("lvar",iter_val)]))),$truthy(node)&&$truthy(lhs_tmp)?this.$s("begin",lhs,block):block):$truthy(lhs_tmp)?this.$s("send",this.$process(first_part),"===",lhs):this.$process(first_part),$truthy(next_parts["$empty?"]())?subrule:this.$s("if",subrule,this.$s("true"),this.$build_rule_from_parts(nil,nil,lhs_tmp,next_parts))}),4)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/forward_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$range=Opal.range,$to_a=Opal.to_a,$send2=Opal.send2,$find_super=Opal.find_super,$neqeq=Opal.neqeq;return Opal.add_stubs("require,process,s,==,type,last,children,[],updated,!=,class"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ForwardArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_forward_args",(function(_node){return this.$process(this.$s("args",this.$s("forward_arg","$")))}),1),$def(self,"$on_args",(function $$on_args(node){var $yield=$$on_args.$$p||nil,prev_children=nil;return delete $$on_args.$$p,$truthy(node.$children().$last())&&$eqeq(node.$children().$last().$type(),"forward_arg")?(prev_children=node.$children()["$[]"]($range(0,-2,!1)),node.$updated(nil,[].concat($to_a(prev_children)).concat([this.$s("restarg","$fwd_rest"),this.$s("blockarg","$fwd_block")]))):$send2(this,$find_super(this,"on_args",$$on_args,!1,!0),"on_args",[node],$yield)}),1),$def(self,"$on_send",(function $$on_send(node){var $yield=$$on_send.$$p||nil,prev_children=nil;return delete $$on_send.$$p,$truthy(node.$children().$last())&&$neqeq(node.$children().$last().$class(),$$("Symbol"))&&$eqeq(node.$children().$last().$type(),"forwarded_args")?(prev_children=node.$children()["$[]"]($range(0,-2,!1)),node.$updated(nil,[].concat($to_a(prev_children)).concat([this.$s("splat",this.$s("lvar","$fwd_rest")),this.$s("block_pass",this.$s("lvar","$fwd_block"))]))):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("require,<<,list,delete,use,disabled?,class,each,new,process"),self.$require("opal/rewriters/opal_engine_check"),self.$require("opal/rewriters/for_rewriter"),self.$require("opal/rewriters/explicit_writer_return"),self.$require("opal/rewriters/js_reserved_words"),self.$require("opal/rewriters/block_to_iter"),self.$require("opal/rewriters/dot_js_syntax"),self.$require("opal/rewriters/pattern_matching"),self.$require("opal/rewriters/logical_operator_assignment"),self.$require("opal/rewriters/binary_operator_assignment"),self.$require("opal/rewriters/hashes/key_duplicates_rewriter"),self.$require("opal/rewriters/dump_args"),self.$require("opal/rewriters/mlhs_args"),self.$require("opal/rewriters/inline_args"),self.$require("opal/rewriters/numblocks"),self.$require("opal/rewriters/returnable_logic"),self.$require("opal/rewriters/forward_args"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Rewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.sexp=nil,function(self,$parent_nesting){$def(self,"$list",(function(){var $ret_or_1;return null==this.list&&(this.list=nil),this.list=$truthy($ret_or_1=this.list)?$ret_or_1:[]}),0),$def(self,"$use",(function(rewriter){return this.$list()["$<<"](rewriter)}),1),$def(self,"$delete",(function(rewriter){return this.$list().$delete(rewriter)}),1),$def(self,"$disable",(function $$disable(){var $yield=$$disable.$$p||nil,self=this;return delete $$disable.$$p,function(){try{return self.disabled=!0,Opal.yieldX($yield,[])}finally{self.disabled=!1}}()}),0),$def(self,"$disabled?",(function(){var $a;return null==this.disabled&&(this.disabled=nil),$truthy(null!=($a=this.disabled)&&$a!==nil?"instance-variable":nil)?this.disabled:nil}),0)}(Opal.get_singleton_class(self)),self.$use($$$($$("Rewriters"),"OpalEngineCheck")),self.$use($$$($$("Rewriters"),"ForRewriter")),self.$use($$$($$("Rewriters"),"Numblocks")),self.$use($$$($$("Rewriters"),"ForwardArgs")),self.$use($$$($$("Rewriters"),"BlockToIter")),self.$use($$$($$("Rewriters"),"DotJsSyntax")),self.$use($$$($$("Rewriters"),"PatternMatching")),self.$use($$$($$("Rewriters"),"JsReservedWords")),self.$use($$$($$("Rewriters"),"LogicalOperatorAssignment")),self.$use($$$($$("Rewriters"),"BinaryOperatorAssignment")),self.$use($$$($$("Rewriters"),"ExplicitWriterReturn")),self.$use($$$($$$($$("Rewriters"),"Hashes"),"KeyDuplicatesRewriter")),self.$use($$$($$("Rewriters"),"ReturnableLogic")),self.$use($$$($$("Rewriters"),"DumpArgs")),self.$use($$$($$("Rewriters"),"MlhsArgs")),self.$use($$$($$("Rewriters"),"InlineArgs")),$def(self,"$initialize",(function(sexp){return this.sexp=sexp}),1),$def(self,"$process",(function(){return $truthy(this.$class()["$disabled?"]())||$send(this.$class().$list(),"each",[],(function $$3(rewriter_class){var self=null==$$3.$$s?this:$$3.$$s,rewriter=nil;return null==self.sexp&&(self.sexp=nil),null==rewriter_class&&(rewriter_class=nil),rewriter=rewriter_class.$new(),self.sexp=rewriter.$process(self.sexp)}),{$$arity:1,$$s:this}),this.sexp}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/parser/source_buffer"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$defs=Opal.defs;return function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"SourceBuffer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$recognize_encoding",(function $$recognize_encoding(string){var $ret_or_1,$yield=$$recognize_encoding.$$p||nil;return delete $$recognize_encoding.$$p,$truthy($ret_or_1=$send2(this,$find_super(this,"recognize_encoding",$$recognize_encoding,!1,!0),"recognize_encoding",[string],$yield))?$ret_or_1:$$$($$("Encoding"),"UTF_8")}),1)}($nesting[0],$$$($$$($$$("Parser"),"Source"),"Buffer"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/parser/default_config"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$send2=Opal.send2,$find_super=Opal.find_super,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$lambda=Opal.lambda,$defs=Opal.defs;return Opal.add_stubs("attr_accessor,all_errors_are_fatal=,diagnostics,-,ignore_warnings=,diagnostics_consumer,consumer=,extend,diagnostics_consumer=,new,rewrite,process,default_parser,default_parser_class"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Parser"),$nesting=[self].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"DefaultConfig"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);(function($base){var self=$module($base,"ClassMethods");self.$attr_accessor("diagnostics_consumer"),$def(self,"$default_parser",(function $$default_parser(){var $yield=$$default_parser.$$p||nil,parser=nil,$writer=nil;return delete $$default_parser.$$p,parser=$send2(this,$find_super(this,"default_parser",$$default_parser,!1,!0),"default_parser",[],$yield),$writer=[!0],$send(parser.$diagnostics(),"all_errors_are_fatal=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(parser.$diagnostics(),"ignore_warnings=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[this.$diagnostics_consumer()],$send(parser.$diagnostics(),"consumer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],parser}),0)})($nesting[0]),$defs(self,"$included",(function(klass){var $writer;return klass.$extend($$("ClassMethods")),$writer=[$lambda((function(diagnostic){return null==diagnostic&&(diagnostic=nil),nil}),1)],$send(klass,"diagnostics_consumer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$initialize",(function $$initialize($a){var self=this;return delete $$initialize.$$p,Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",[$$$($$$($$("Opal"),"AST"),"Builder").$new()],null)}),-1),$def(self,"$parse",(function $$parse(source_buffer){var parsed,$yield=$$parse.$$p||nil;return delete $$parse.$$p,parsed=$send2(this,$find_super(this,"parse",$$parse,!1,!0),"parse",[source_buffer],$yield),this.$rewrite(parsed)}),1),$def(self,"$rewrite",(function(node){return $$$($$("Opal"),"Rewriter").$new(node).$process()}),1)}($nesting[0],$nesting),function(self,$parent_nesting){return self.$attr_accessor("default_parser_class"),$def(self,"$default_parser",(function(){return this.$default_parser_class().$default_parser()}),0)}(Opal.get_singleton_class(self))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/parser/with_ruby_lexer"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),$$$=(Opal.nil,Opal.$$$),$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus;return Opal.add_stubs("include,default_parser_class=,-"),function($base,$super,$parent_nesting){var $writer,self=$klass($base,$super,"WithRubyLexer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$include($$$($$$($$("Opal"),"Parser"),"DefaultConfig")),$writer=[self],$send($$$($$("Opal"),"Parser"),"default_parser_class=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}($$$($$("Opal"),"Parser"),$$$($$("Parser"),"Ruby31"),$nesting)},Opal.modules["opal/parser/patch"]=function(Opal){var $base,self,$nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$rb_plus=Opal.rb_plus,$send=Opal.send,$hash2=Opal.hash2,$eqeqeq=Opal.eqeqeq,$eqeq=Opal.eqeq,$not=Opal.not,$rb_le=Opal.rb_le,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$rb_divide=Opal.rb_divide,$to_a=Opal.to_a,$module=Opal.module;return Opal.add_stubs("source,unpack,+,to_a,lines,end_with?,<<,map,chomp,=~,diagnostic,nil?,new,===,type,updated,dedent,first,children,==,empty?,interrupt,compact,encoding,split,force_encoding,length,map!,each_with_index,!,each_char,<=,-,>,*,/,[],[]=,join,respond_to?,send,value"),$base=$$("Parser"),(self=$klass($base,null,"Lexer")).$$prototype.source_buffer=nil,$def(self,"$source_buffer=",(function(source_buffer){var source=nil;return this.source_buffer=source_buffer,$truthy(this.source_buffer)?(source=this.source_buffer.$source(),this.source_pts=source.$unpack("U*")):this.source_pts=nil}),1),function($base,$super){var self=$klass($base,null,"Literal"),$proto=self.$$prototype;$proto.buffer_s=$proto.buffer=nil,Opal.udef(self,"$extend_string"),$def(self,"$extend_string",(function(string,ts,te){var $ret_or_1;return this.buffer_s=$truthy($ret_or_1=this.buffer_s)?$ret_or_1:ts,this.buffer_e=te,this.buffer=$rb_plus(this.buffer,string)}),3)}($$$($$("Parser"),"Lexer")),function($base,$super){var self=$klass($base,null,"Buffer"),$proto=self.$$prototype;$proto.lines=$proto.source=nil,$def(self,"$source_lines",(function(){var $ret_or_1,lines=nil;return this.lines=$truthy($ret_or_1=this.lines)?$ret_or_1:(lines=this.source.$lines().$to_a(),$truthy(this.source["$end_with?"]("\n"))&&lines["$<<"](""),$send(lines,"map",[],(function(line){return null==line&&(line=nil),line.$chomp("\n")}),1))}),0)}($$$($$("Parser"),"Source")),function($base,$super){var self=$klass($base,null,"Default");$def(self,"$check_lvar_name",(function(name,loc){return $truthy(name["$=~"](new RegExp("^[\\p{Ll}|_][\\p{L}\\p{Nl}\\p{Nd}_]*$","u")))?nil:this.$diagnostic("error","lvar_name",$hash2(["name"],{name:name}),loc)}),2),$def(self,"$dedent_string",(function(node,dedent_level){var dedenter=nil,$ret_or_1=nil,children=nil;return $truthy(dedent_level["$nil?"]())||(dedenter=$$$($$$($$$("Parser"),"Lexer"),"Dedenter").$new(dedent_level),$eqeqeq("str",$ret_or_1=node.$type())?node=node.$updated(nil,[dedenter.$dedent(node.$children().$first())]):($eqeqeq("dstr",$ret_or_1)||$eqeqeq("xstr",$ret_or_1))&&(children=$send(node.$children(),"map",[],(function(str_node){if(null==str_node&&(str_node=nil),$eqeq(str_node.$type(),"str")){if(str_node=str_node.$updated(nil,[dedenter.$dedent(str_node.$children().$first())]),$truthy(str_node.$children().$first()["$empty?"]()))return nil}else dedenter.$interrupt();return str_node}),1),node=node.$updated(nil,children.$compact()))),node}),2)}($$$($$("Parser"),"Builders")),function($base,$super,$parent_nesting){var self=$klass($base,null,"Dedenter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$dedent",(function(string){var original_encoding,self=this,lines=nil;return original_encoding=string.$encoding(),lines=string.$force_encoding($$$($$("Encoding"),"BINARY")).$split("\\\n"),$eqeq(lines.$length(),1)?lines=[string.$force_encoding(original_encoding)]:$send(lines,"map!",[],(function(s){return null==s&&(s=nil),s.$force_encoding(original_encoding)}),1),function(){var $brk=Opal.new_brk();try{$send(lines,"each_with_index",[],(function $$5(line,index){var $writer,self=null==$$5.$$s?this:$$5.$$s,left_to_remove=nil,remove=nil;return null==self.at_line_begin&&(self.at_line_begin=nil),null==self.dedent_level&&(self.dedent_level=nil),null==line&&(line=nil),null==index&&(index=nil),$eqeq(index,0)&&$not(self.at_line_begin)?nil:(left_to_remove=self.dedent_level,remove=0,function(){var $brk=Opal.new_brk();try{$send(line,"each_char",[],(function $$6(char$){var $ret_or_1,self=null==$$6.$$s?this:$$6.$$s;return null==self.dedent_level&&(self.dedent_level=nil),null==char$&&(char$=nil),$truthy($rb_le(left_to_remove,0))&&Opal.brk(nil,$brk),$eqeqeq(" ",$ret_or_1=char$)?(remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,1)):$eqeqeq("\t",$ret_or_1)?($truthy($rb_gt($rb_times($$("TAB_WIDTH"),$rb_plus($rb_divide(remove,$$("TAB_WIDTH")),1)),self.dedent_level))&&Opal.brk(nil,$brk),remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,$$("TAB_WIDTH"))):void Opal.brk(nil,$brk)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),$writer=[index,line["$[]"](Opal.Range.$new(remove,-1,!1))],$send(lines,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),{$$arity:2,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),string=lines.$join(),self.at_line_begin=string["$end_with?"]("\n"),string}),1)}($$$($$("Parser"),"Lexer"),0,$nesting),function($base){var self=$module($base,"Mixin");Opal.udef(self,"$process"),$def(self,"$process",(function(node){var type,on_handler,$ret_or_1=nil,$writer=nil,handler=nil;return null==this._on_handler_cache&&(this._on_handler_cache=nil),$truthy(node["$nil?"]())?nil:(this._on_handler_cache=$truthy($ret_or_1=this._on_handler_cache)?$ret_or_1:$hash2([],{}),type=node.$type(),on_handler=$truthy($ret_or_1=this._on_handler_cache["$[]"](type))?$ret_or_1:($writer=[type,(handler="on_"+type,$truthy(this["$respond_to?"](handler))||(handler="handler_missing"),handler)],$send(this._on_handler_cache,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy($ret_or_1=this.$send(on_handler,node))?$ret_or_1:node)}),1)}($$$($$("AST"),"Processor")),function($base,$super){var self=$klass($base,null,"Default");return Opal.udef(self,"$string_value"),$def(self,"$string_value",(function(token){return this.$value(token)}),1)}($$$($$("Parser"),"Builders"))},Opal.modules["opal/parser"]=function(Opal){var self=Opal.top;Opal.nil;return Opal.add_stubs("require"),self.$require("opal/ast/builder"),self.$require("opal/rewriter"),self.$require("opal/parser/source_buffer"),self.$require("opal/parser/default_config"),self.$require("opal/parser/with_ruby_lexer"),self.$require("opal/parser/patch")},Opal.modules["opal/fragment"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt,$to_a=Opal.to_a,$not=Opal.not,$send=Opal.send;return Opal.add_stubs("attr_reader,to_s,inspect,===,type,[],meta,source_map_name_for,sexp,==,class,+,parent,>,!,first,children,loc,respond_to?,dot,selector,operator,begin,line,location,column"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Fragment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.code=$proto.scope=$proto.sexp=nil,self.$attr_reader("code"),$def(self,"$initialize",(function(code,scope,sexp){return null==sexp&&(sexp=nil),this.code=code.$to_s(),this.sexp=sexp,this.scope=scope}),-3),$def(self,"$inspect",(function(){return"f("+this.code.$inspect()+")"}),0),$def(self,"$source_map_name_for",(function(sexp){var $a,$ret_or_1,$ret_or_2=nil,scope=nil,iters=nil,level=nil,const$=nil,name=nil;if($eqeqeq("top",$ret_or_1=sexp.$type()))return $eqeqeq("require",$ret_or_2=sexp.$meta()["$[]"]("kind"))?"":$eqeqeq("eval",$ret_or_2)?"(eval)":$eqeqeq("main",$ret_or_2)?"
    ":nil;if($eqeqeq("begin",$ret_or_1)||$eqeqeq("newline",$ret_or_1)||$eqeqeq("js_return",$ret_or_1))return $truthy(this.scope)?this.$source_map_name_for(this.scope.$sexp()):nil;if($eqeqeq("iter",$ret_or_1)){for(scope=this.scope,iters=1;$truthy(scope)&&$eqeq(scope.$class(),$$$($$("Nodes"),"IterNode"));)iters=$rb_plus(iters,1),scope=scope.$parent();return $truthy($rb_gt(iters,1))&&(level=" ("+iters+" levels)"),"block"+level+" in "+this.$source_map_name_for(scope.$sexp())}return $eqeqeq("self",$ret_or_1)?"self":$eqeqeq("module",$ret_or_1)?(const$=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],""):$eqeqeq("class",$ret_or_1)?(const$=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],""):$eqeqeq("const",$ret_or_1)?(scope=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],$not(scope)||$eqeq(scope.$type(),"cbase")?name.$to_s():this.$source_map_name_for(scope)+"::"+name):$eqeqeq("int",$ret_or_1)||$eqeqeq("def",$ret_or_1)?sexp.$children().$first():$eqeqeq("defs",$ret_or_1)||$eqeqeq("send",$ret_or_1)?sexp.$children()["$[]"](1):$eqeqeq("lvar",$ret_or_1)||$eqeqeq("lvasgn",$ret_or_1)||$eqeqeq("lvdeclare",$ret_or_1)||$eqeqeq("ivar",$ret_or_1)||$eqeqeq("ivasgn",$ret_or_1)||$eqeqeq("gvar",$ret_or_1)||$eqeqeq("cvar",$ret_or_1)||$eqeqeq("cvasgn",$ret_or_1)||$eqeqeq("gvars",$ret_or_1)||$eqeqeq("gvasgn",$ret_or_1)||$eqeqeq("arg",$ret_or_1)?sexp.$children().$first():$eqeqeq("str",$ret_or_1)||$eqeqeq("xstr",$ret_or_1)?this.$source_map_name_for(this.scope.$sexp()):nil}),1),$def(self,"$source_map_name",(function(){return $truthy(this.sexp)?this.$source_map_name_for(this.sexp):nil}),0),$def(self,"$location",(function(){var loc=nil,$ret_or_1=nil;return $not(this.sexp)?nil:$eqeq(this.sexp.$type(),"send")?(loc=this.sexp.$loc(),$truthy(loc["$respond_to?"]("dot"))?$truthy($ret_or_1=loc.$dot())?$ret_or_1:loc.$selector():$truthy(loc["$respond_to?"]("operator"))?loc.$operator():this.sexp):$eqeq(this.sexp.$type(),"iter")&&$truthy(loc["$respond_to?"]("begin"))?this.sexp.$loc().$begin():this.sexp}),0),$def(self,"$line",(function(){var $a;return($a=this.$location())===nil||null==$a?nil:$send($a,"line",[])}),0),$def(self,"$column",(function(){var $a;return($a=this.$location())===nil||null==$a?nil:$send($a,"column",[])}),0),$def(self,"$skip_source_map?",(function(){return this.sexp["$=="](!1)}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/helpers"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$truthy=Opal.truthy,$def=Opal.def,$rb_plus=Opal.rb_plus,$send=Opal.send,$hash2=Opal.hash2,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$slice=Opal.slice,$eqeq=Opal.eqeq,$rb_minus=Opal.rb_minus;return Opal.add_stubs("require,valid_name?,inspect,=~,to_s,+,indent,compiler,to_proc,parser_indent,push,fragment,current_indent,js_truthy_optimize,helper,expr,===,type,[],handlers,include?,truthy_optimize?,==,count,<<,method_calls,first,children,s,[]=,meta,-,new_temp,scope,wrap"),self.$require("opal/regexp_anchors"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Helpers"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$property",(function(name){return $truthy(this["$valid_name?"](name))?"."+name:"["+name.$inspect()+"]"}),1),$def(self,"$valid_name?",(function(name){return $$$($$$($$("Opal"),"Rewriters"),"JsReservedWords")["$valid_name?"](name)}),1),$def(self,"$mid_to_jsid",(function(mid){return $truthy(/\=|\+|\-|\*|\/|\!|\?|<|\>|\&|\||\^|\%|\~|\[|`/["$=~"](mid.$to_s()))?"['$"+mid+"']":$rb_plus(".$",mid)}),1),$def(self,"$indent",(function $$indent(){var block=$$indent.$$p||nil;return delete $$indent.$$p,$send(this.$compiler(),"indent",[],block.$to_proc())}),0),$def(self,"$current_indent",(function(){return this.$compiler().$parser_indent()}),0),$def(self,"$line",(function($a){var strs,self=this;return strs=Opal.slice.call(arguments),self.$push(self.$fragment("\n"+self.$current_indent(),$hash2(["loc"],{loc:!1}))),$send(self,"push",$to_a(strs))}),-1),$def(self,"$empty_line",(function(){return this.$push(this.$fragment("\n",$hash2(["loc"],{loc:!1})))}),0),$def(self,"$js_truthy",(function(sexp){var optimize;return $truthy(optimize=this.$js_truthy_optimize(sexp))?optimize:(this.$helper("truthy"),[this.$fragment("$truthy("),this.$expr(sexp),this.$fragment(")")])}),1),$def(self,"$js_truthy_optimize",(function(sexp){var $a,$ret_or_1,receiver=nil,mid=nil,args=nil,receiver_handler_class=nil,$ret_or_2=nil,allow_optimization_on_type=nil,$ret_or_3=nil,true_body=nil,false_body=nil,$writer=nil;return $eqeqeq("send",$ret_or_1=sexp.$type())?(receiver=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],mid=null==$a[1]?nil:$a[1],args=$slice.call($a,2),receiver_handler_class=$truthy($ret_or_2=receiver)?this.$compiler().$handlers()["$[]"](receiver.$type()):$ret_or_2,allow_optimization_on_type=$truthy($ret_or_2=$truthy($ret_or_3=$$$($$("Compiler"),"COMPARE")["$include?"](mid.$to_s()))?receiver_handler_class:$ret_or_3)?receiver_handler_class["$truthy_optimize?"]():$ret_or_2,$truthy(allow_optimization_on_type)||$eqeq(mid,"block_given?")?this.$expr(sexp):$eqeq(args.$count(),1)?$eqeqeq("==",$ret_or_2=mid)?(this.$helper("eqeq"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$eqeq("),this.$expr(receiver),this.$fragment(", "),this.$expr(args.$first()),this.$fragment(")")]):$eqeqeq("===",$ret_or_2)?(this.$helper("eqeqeq"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$eqeqeq("),this.$expr(receiver),this.$fragment(", "),this.$expr(args.$first()),this.$fragment(")")]):$eqeqeq("!=",$ret_or_2)?(this.$helper("neqeq"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$neqeq("),this.$expr(receiver),this.$fragment(", "),this.$expr(args.$first()),this.$fragment(")")]):nil:$eqeq(args.$count(),0)&&$eqeqeq("!",$ret_or_2=mid)?(this.$helper("not"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$not("),this.$expr(receiver),this.$fragment(")")]):nil):$eqeqeq("begin",$ret_or_1)?$eqeq(sexp.$children().$count(),1)?this.$js_truthy_optimize(sexp.$children().$first()):nil:$eqeqeq("if",$ret_or_1)?(null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],true_body=null==$a[1]?nil:$a[1],false_body=null==$a[2]?nil:$a[2],$eqeq(true_body,this.$s("true"))?($writer=["do_js_truthy_on_false_body",!0],$send(sexp.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$expr(sexp)):$eqeq(false_body,this.$s("false"))?($writer=["do_js_truthy_on_true_body",!0],$send(sexp.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$expr(sexp)):nil):nil}),1),$def(self,"$conditional_send",(function $$conditional_send(recvr){var receiver_temp,$yield=$$conditional_send.$$p||nil;return delete $$conditional_send.$$p,receiver_temp=this.$scope().$new_temp(),this.$push(receiver_temp+" = ",recvr),this.$push(", ("+receiver_temp+" === nil || "+receiver_temp+" == null) ? nil : "),Opal.yield1($yield,receiver_temp),this.$wrap("(",")")}),1)}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/base"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$defs=Opal.defs,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$Opal=Opal.Opal,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,include,each,[]=,handlers,-,each_with_index,define_method,[],children,attr_reader,type,top_scope,top_scope=,compile,raise,is_a?,fragment,<<,reverse_each,unshift,push,new,scope,error,loc,==,process,expr,add_scope_local,to_sym,add_scope_ivar,add_scope_gvar,add_scope_temp,helper,with_temp,to_proc,in_while?,instance_variable_get,has_rescue_else?,in_ensure,in_ensure?,in_resbody,in_resbody?,in_rescue,!,class_scope?,sclass?,+,parent,nesting,class_variable_owner_nesting_level,comments,compiler,name,source_buffer,expression,start_with?,end_with?,line"),self.$require("opal/nodes/helpers"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Base"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.compiler=$proto.sexp=$proto.fragments=$proto.level=nil,self.$include($$("Helpers")),$defs(self,"$handlers",(function(){var $ret_or_1;return null==this.handlers&&(this.handlers=nil),this.handlers=$truthy($ret_or_1=this.handlers)?$ret_or_1:$hash2([],{})}),0),$defs(self,"$handle",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each",[],(function $$1(type){var $writer;return null==type&&(type=nil),$writer=[type,null==$$1.$$s?this:$$1.$$s],$send($$("Base").$handlers(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})}),-1),$defs(self,"$children",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each_with_index",[],(function $$2(name,idx){var self=null==$$2.$$s?this:$$2.$$s;return null==name&&(name=nil),null==idx&&(idx=nil),$send(self,"define_method",[name],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return null==self.sexp&&(self.sexp=nil),self.sexp.$children()["$[]"](idx)}),{$$arity:0,$$s:self})}),{$$arity:2,$$s:self})}),-1),$defs(self,"$truthy_optimize?",(function(){return!1}),0),self.$attr_reader("compiler","type","sexp"),$def(self,"$initialize",(function(sexp,level,compiler){var $ret_or_1,$writer=nil;return this.sexp=sexp,this.type=sexp.$type(),this.level=level,this.compiler=compiler,$truthy($ret_or_1=this.compiler.$top_scope())?$ret_or_1:($writer=[this],$send(this.compiler,"top_scope=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),3),$def(self,"$children",(function(){return this.sexp.$children()}),0),$def(self,"$compile_to_fragments",(function(){var $a;return $truthy(null!=($a=this.fragments)&&$a!==nil?"instance-variable":nil)||(this.fragments=[],this.$compile()),this.fragments}),0),$def(self,"$compile",(function(){return this.$raise("Not Implemented")}),0),$def(self,"$push",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each",[],(function $$5(str){var self=null==$$5.$$s?this:$$5.$$s;return null==self.fragments&&(self.fragments=nil),null==str&&(str=nil),$truthy(str["$is_a?"]($$("String")))&&(str=self.$fragment(str)),self.fragments["$<<"](str)}),{$$arity:1,$$s:self})}),-1),$def(self,"$unshift",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"reverse_each",[],(function $$6(str){var self=null==$$6.$$s?this:$$6.$$s;return null==self.fragments&&(self.fragments=nil),null==str&&(str=nil),$truthy(str["$is_a?"]($$("String")))&&(str=self.$fragment(str)),self.fragments.$unshift(str)}),{$$arity:1,$$s:self})}),-1),$def(self,"$wrap",(function(pre,post){return this.$unshift(pre),this.$push(post)}),2),$def(self,"$fragment",(function(str,$kwargs){var loc,$ret_or_1;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(loc=$kwargs.$$smap.loc)&&(loc=!0),$$$($$("Opal"),"Fragment").$new(str,this.$scope(),$truthy($ret_or_1=loc)?this.sexp:$ret_or_1)}),-2),$def(self,"$error",(function(msg){return this.compiler.$error(msg)}),1),$def(self,"$scope",(function(){return this.compiler.$scope()}),0),$def(self,"$top_scope",(function(){return this.compiler.$top_scope()}),0),$def(self,"$s",(function(type,$a){var children,self=this;return children=Opal.slice.call(arguments,1),$$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:self.sexp.$loc()}))}),-2),$def(self,"$expr?",(function(){return this.level["$=="]("expr")}),0),$def(self,"$recv?",(function(){return this.level["$=="]("recv")}),0),$def(self,"$stmt?",(function(){return this.level["$=="]("stmt")}),0),$def(self,"$process",(function(sexp,level){return null==level&&(level="expr"),this.compiler.$process(sexp,level)}),-2),$def(self,"$expr",(function(sexp){return this.compiler.$process(sexp,"expr")}),1),$def(self,"$recv",(function(sexp){return this.compiler.$process(sexp,"recv")}),1),$def(self,"$stmt",(function(sexp){return this.compiler.$process(sexp,"stmt")}),1),$def(self,"$expr_or_nil",(function(sexp){return $truthy(sexp)?this.$expr(sexp):"nil"}),1),$def(self,"$add_local",(function(name){return this.$scope().$add_scope_local(name.$to_sym())}),1),$def(self,"$add_ivar",(function(name){return this.$scope().$add_scope_ivar(name)}),1),$def(self,"$add_gvar",(function(name){return this.$scope().$add_scope_gvar(name)}),1),$def(self,"$add_temp",(function(temp){return this.$scope().$add_scope_temp(temp)}),1),$def(self,"$helper",(function(name){return this.compiler.$helper(name)}),1),$def(self,"$with_temp",(function $$with_temp(){var block=$$with_temp.$$p||nil;return delete $$with_temp.$$p,$send(this.compiler,"with_temp",[],block.$to_proc())}),0),$def(self,"$in_while?",(function(){return this.compiler["$in_while?"]()}),0),$def(self,"$while_loop",(function(){return this.compiler.$instance_variable_get("@while_loop")}),0),$def(self,"$has_rescue_else?",(function(){return this.$scope()["$has_rescue_else?"]()}),0),$def(self,"$in_ensure",(function $$in_ensure(){var block=$$in_ensure.$$p||nil;return delete $$in_ensure.$$p,$send(this.$scope(),"in_ensure",[],block.$to_proc())}),0),$def(self,"$in_ensure?",(function(){return this.$scope()["$in_ensure?"]()}),0),$def(self,"$in_resbody",(function $$in_resbody(){var block=$$in_resbody.$$p||nil;return delete $$in_resbody.$$p,$send(this.$scope(),"in_resbody",[],block.$to_proc())}),0),$def(self,"$in_resbody?",(function(){return this.$scope()["$in_resbody?"]()}),0),$def(self,"$in_rescue",(function $$in_rescue(node){var block=$$in_rescue.$$p||nil;return delete $$in_rescue.$$p,$send(this.$scope(),"in_rescue",[node],block.$to_proc())}),1),$def(self,"$class_variable_owner_nesting_level",(function(){var cvar_scope=nil,nesting_level=nil,$ret_or_1=nil;for(cvar_scope=this.$scope(),nesting_level=0;$truthy($truthy($ret_or_1=cvar_scope)?cvar_scope["$class_scope?"]()["$!"]():$ret_or_1);)$truthy(cvar_scope["$sclass?"]())&&(nesting_level=$rb_plus(nesting_level,1)),cvar_scope=cvar_scope.$parent();return nesting_level}),0),$def(self,"$class_variable_owner",(function(){return $truthy(this.$scope())?this.$scope().$nesting()+"["+this.$class_variable_owner_nesting_level()+"]":"Opal.Object"}),0),$def(self,"$comments",(function(){return this.$compiler().$comments()["$[]"](this.sexp.$loc())}),0),$def(self,"$source_location",(function(){var file=nil;return file=this.sexp.$loc().$expression().$source_buffer().$name(),$truthy(file["$start_with?"]("corelib/"))&&(file=""),$truthy(file["$end_with?"](".js"))&&(file=""),"['"+file+"', "+this.sexp.$loc().$line()+"]"}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/literal"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def,$defs=Opal.defs,$truthy=Opal.truthy,$const_set=Opal.const_set,$hash2=Opal.hash2,$regexp=Opal.regexp,$send=Opal.send,$rb_plus=Opal.rb_plus,$lambda=Opal.lambda,$rb_le=Opal.rb_le,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$slice=Opal.slice,$Opal=Opal.Opal,$rb_gt=Opal.rb_gt;return Opal.add_stubs("require,handle,==,type,push,self,scope,to_s,children,value,recv?,wrap,freeze,join,keys,gsub,even?,length,last_match,+,chop,[],inspect,to_i,to_utf16,translate_escape_chars,valid_encoding?,helper,upcase,<=,call,-,>>,&,attr_accessor,extract_flags_and_value,select!,flags,=~,warning,compiler,compile_static_regexp,compile_dynamic_regexp,each_with_index,zero?,expr,any?,===,new,map,to_proc,flags=,empty?,s,single_line?,value=,include?,is_a?,updated,delete,source,expression,loc,private,>,!=,!,regexp,first,each,compile_inline?,compile_inline,compile_range_initialize,start,finish,raise,expr_or_nil,numerator,denominator,real,imag"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ValueNode");self.$handle("true","false","self","nil"),$def(self,"$compile",(function(){return $eqeq(this.$type(),"self")?this.$push(this.$scope().$self()):this.$push(this.$type().$to_s())}),0),$defs(self,"$truthy_optimize?",(function(){return!0}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"NumericNode");self.$handle("int","float"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$value().$to_s()),$truthy(this["$recv?"]())?this.$wrap("(",")"):nil}),0),$defs(self,"$truthy_optimize?",(function(){return!0}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"StringNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("str"),self.$children("value"),$const_set($nesting[0],"ESCAPE_CHARS",$hash2(["a","e"],{a:"\\u0007",e:"\\u001b"}).$freeze()),$const_set($nesting[0],"ESCAPE_REGEX",$regexp(["(\\\\+)([",$$("ESCAPE_CHARS").$keys().$join(""),"])"]).$freeze()),$def(self,"$translate_escape_chars",(function(inspect_string){return $send(inspect_string,"gsub",[$$("ESCAPE_REGEX")],(function(original){return null==original&&(original=nil),$truthy($$("Regexp").$last_match(1).$length()["$even?"]())?original:$rb_plus($$("Regexp").$last_match(1).$chop(),$$("ESCAPE_CHARS")["$[]"]($$("Regexp").$last_match(2)))}),1)}),1),$def(self,"$compile",(function(){var sanitized_value,string_value=nil;return string_value=this.$value(),sanitized_value=$send(string_value.$inspect(),"gsub",[/\\u\{([0-9a-f]+)\}/],(function $$4(){var code_point,self=null==$$4.$$s?this:$$4.$$s;return code_point=$$("Regexp").$last_match(1).$to_i(16),self.$to_utf16(code_point)}),{$$arity:0,$$s:this}),this.$push(this.$translate_escape_chars(sanitized_value)),$truthy(this.$value()["$valid_encoding?"]())?nil:(this.$helper("binary"),this.$wrap("$binary(",")"))}),0),$def(self,"$to_utf16",(function(code_point){var lead_surrogate,tail_surrogate,u=nil;return 1023,u=$lambda((function(code_unit){return null==code_unit&&(code_unit=nil),$rb_plus("\\u",code_unit.$to_s(16).$upcase())}),1),$truthy($rb_le(code_point,65535))?u.$call(code_point):(code_point=$rb_minus(code_point,65536),lead_surrogate=$rb_plus(55296,code_point["$>>"](10)),tail_surrogate=$rb_plus(56320,code_point["$&"](1023)),$rb_plus(u.$call(lead_surrogate),u.$call(tail_surrogate)))}),1)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"SymbolNode");self.$handle("sym"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$value().$to_s().$inspect())}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"RegexpNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.sexp=nil,self.$handle("regexp"),self.$attr_accessor("value","flags"),$const_set($nesting[0],"SUPPORTED_FLAGS",/[gimuy]/.$freeze()),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.$extract_flags_and_value()}),-1),$def(self,"$compile",(function(){return $send(this.$flags(),"select!",[],(function $$6(flag){var self=null==$$6.$$s?this:$$6.$$s;return null==flag&&(flag=nil),!!$truthy($$("SUPPORTED_FLAGS")["$=~"](flag))||(self.$compiler().$warning("Skipping the '"+flag+"' Regexp flag as it's not widely supported by JavaScript vendors."),!1)}),{$$arity:1,$$s:this}),$eqeq(this.$value().$type(),"str")?this.$compile_static_regexp():this.$compile_dynamic_regexp()}),0),$def(self,"$compile_dynamic_regexp",(function(){return this.$helper("regexp"),this.$push("$regexp(["),$send(this.$value().$children(),"each_with_index",[],(function $$7(v,index){var self=null==$$7.$$s?this:$$7.$$s;return null==v&&(v=nil),null==index&&(index=nil),$truthy(index["$zero?"]())||self.$push(", "),self.$push(self.$expr(v))}),{$$arity:2,$$s:this}),this.$push("]"),$truthy(this.$flags()["$any?"]())&&this.$push(", '"+this.$flags().$join()+"'"),this.$push(")")}),0),$def(self,"$compile_static_regexp",(function(){var value;return value=this.$value().$children()["$[]"](0),$eqeqeq("",value)?this.$push("/(?:)/"):this.$push(""+$$("Regexp").$new(value).$inspect()+this.$flags().$join())}),0),$def(self,"$extract_flags_and_value",(function(){var $a,$b,values=nil,flags_sexp=nil,$writer=nil,parts=nil;return $b=($b=($a=[].concat($to_a(this.$children()))).length-1)<0?0:$b,values=$slice.call($a,0,$b),flags_sexp=null==$a[$b]?nil:$a[$b],$writer=[$send(flags_sexp.$children(),"map",[],"to_s".$to_proc())],$send(this,"flags=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[$truthy(values["$empty?"]())?this.$s("str",""):$truthy(this["$single_line?"](values))?values["$[]"](0):$send(this,"s",["dstr"].concat($to_a(values)))],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(this.$flags()["$include?"]("x"))&&(parts=$send(this.$value().$children(),"map",[],(function $$8(part){var self=null==$$8.$$s?this:$$8.$$s,trimmed_value=nil;return null==part&&(part=nil),$truthy(part["$is_a?"]($$$($$$($Opal,"AST"),"Node")))&&$eqeq(part.$type(),"str")?(trimmed_value=part.$children()["$[]"](0).$gsub(/^\s*\#.*/,"").$gsub(/\s/,""),self.$s("str",trimmed_value)):part}),{$$arity:1,$$s:this}),$writer=[this.$value().$updated(nil,parts)],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$flags().$delete("x")),$eqeq(this.$value().$type(),"str")?($writer=[this.$s("str",this.$value().$children()["$[]"](0).$gsub("\\A","^").$gsub("\\z","$"))],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),0),$def(self,"$raw_value",(function(){var $writer;return $writer=[this.sexp.$loc().$expression().$source()],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),0),self.$private(),$def(self,"$single_line?",(function(values){var $ret_or_1,value=nil;return!$truthy($rb_gt(values.$length(),1))&&(value=values["$[]"](0),$truthy($ret_or_1=value.$type()["$!="]("str"))?$ret_or_1:value.$children()["$[]"](0)["$include?"]("\n")["$!"]())}),1)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"MatchCurrentLineNode");self.$handle("match_current_line"),self.$children("regexp"),$def(self,"$compile",(function(){var gvar_sexp,send_node;return gvar_sexp=this.$s("gvar","$_"),send_node=this.$s("send",gvar_sexp,"=~",this.$regexp()),this.$push(this.$expr(send_node))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"DynamicStringNode");self.$handle("dstr"),$def(self,"$compile",(function(){var skip_empty=nil;return $truthy($rb_gt(this.$children().$length(),1))&&$eqeq(this.$children().$first().$type(),"str")?skip_empty=!0:this.$push('""'),$send(this.$children(),"each",[],(function $$10(part){var self=null==$$10.$$s?this:$$10.$$s;return null==part&&(part=nil),$truthy(skip_empty)?skip_empty=!1:self.$push(" + "),$eqeq(part.$type(),"str")?self.$push(self.$expr(part)):self.$push("(",self.$expr(part),")"),$truthy(self["$recv?"]())?self.$wrap("(",")"):nil}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("Base")),function($base,$super){$klass($base,$super,"DynamicSymbolNode").$handle("dsym")}($nesting[0],$$("DynamicStringNode")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"RangeNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$children("start","finish"),$const_set($nesting[0],"SIMPLE_CHILDREN_TYPES",["int","float","str","sym"].$freeze()),$def(self,"$compile",(function(){return $truthy(this["$compile_inline?"]())?(this.$helper("range"),this.$compile_inline()):this.$compile_range_initialize()}),0),$def(self,"$compile_inline?",(function(){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $truthy($ret_or_1=$truthy($ret_or_2=this.$start()["$!"]())?$ret_or_2:$truthy($ret_or_3=this.$start().$type())?$$("SIMPLE_CHILDREN_TYPES")["$include?"](this.$start().$type()):$ret_or_3)?$truthy($ret_or_2=this.$finish()["$!"]())?$ret_or_2:$truthy($ret_or_3=this.$finish().$type())?$$("SIMPLE_CHILDREN_TYPES")["$include?"](this.$finish().$type()):$ret_or_3:$ret_or_1}),0),$def(self,"$compile_inline",(function(){return this.$raise($$("NotImplementedError"))}),0),$def(self,"$compile_range_initialize",(function(){return this.$raise($$("NotImplementedError"))}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"InclusiveRangeNode");self.$handle("irange"),$def(self,"$compile_inline",(function(){return this.$push("$range(",this.$expr_or_nil(this.$start()),", ",this.$expr_or_nil(this.$finish()),", false)")}),0),$def(self,"$compile_range_initialize",(function(){return this.$push("Opal.Range.$new(",this.$expr_or_nil(this.$start()),", ",this.$expr_or_nil(this.$finish()),", false)")}),0)}($nesting[0],$$("RangeNode")),function($base,$super){var self=$klass($base,$super,"ExclusiveRangeNode");self.$handle("erange"),$def(self,"$compile_inline",(function(){return this.$push("$range(",this.$expr_or_nil(this.$start()),", ",this.$expr_or_nil(this.$finish()),", true)")}),0),$def(self,"$compile_range_initialize",(function(){return this.$push("Opal.Range.$new(",this.$expr_or_nil(this.$start()),",",this.$expr_or_nil(this.$finish()),", true)")}),0)}($nesting[0],$$("RangeNode")),function($base,$super){var self=$klass($base,$super,"RationalNode");self.$handle("rational"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("Opal.Rational.$new("+this.$value().$numerator()+", "+this.$value().$denominator()+")")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ComplexNode");return self.$handle("complex"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("Opal.Complex.$new("+this.$value().$real()+", "+this.$value().$imag()+")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/variables"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send,$range=Opal.range,$eqeqeq=Opal.eqeqeq,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,handle,children,irb?,compiler,top?,scope,using_irb?,push,to_s,var_name,with_temp,property,wrap,add_local,expr,value,expr?,recv?,[],name,add_ivar,self,helper,add_gvar,===,handle_global_match,handle_post_match,handle_pre_match,raise,index,stmt?,class_variable_owner,inspect"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"LocalVariableNode");self.$handle("lvar"),self.$children("var_name"),$def(self,"$using_irb?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$compiler()["$irb?"]())?this.$scope()["$top?"]():$ret_or_1}),0),$def(self,"$compile",(function(){return $truthy(this["$using_irb?"]())?$send(this,"with_temp",[],(function $$2(tmp){var self=null==$$2.$$s?this:$$2.$$s;return null==tmp&&(tmp=nil),self.$push(self.$property(self.$var_name().$to_s())),self.$wrap("(("+tmp+" = Opal.irb_vars",") == null ? nil : "+tmp+")")}),{$$arity:1,$$s:this}):this.$push(this.$var_name().$to_s())}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"LocalAssignNode");self.$handle("lvasgn"),self.$children("var_name","value"),$def(self,"$using_irb?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$compiler()["$irb?"]())?this.$scope()["$top?"]():$ret_or_1}),0),$def(self,"$compile",(function(){return $truthy(this["$using_irb?"]())?this.$push("Opal.irb_vars"+this.$property(this.$var_name().$to_s())+" = "):(this.$add_local(this.$var_name().$to_s()),this.$push(this.$var_name()+" = ")),this.$push(this.$expr(this.$value())),($truthy(this["$recv?"]())||$truthy(this["$expr?"]()))&&$truthy(this.$value())?this.$wrap("(",")"):nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"LocalDeclareNode");self.$handle("lvdeclare"),self.$children("var_name"),$def(self,"$compile",(function(){return this.$add_local(this.$var_name().$to_s()),nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"InstanceVariableNode");self.$handle("ivar"),self.$children("name"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return name=this.$property(this.$var_name()),this.$add_ivar(name),this.$push(""+this.$scope().$self()+name)}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"InstanceAssignNode");self.$handle("ivasgn"),self.$children("name","value"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return name=this.$property(this.$var_name()),this.$push(""+this.$scope().$self()+name+" = "),this.$push(this.$expr(this.$value())),($truthy(this["$recv?"]())||$truthy(this["$expr?"]()))&&$truthy(this.$value())?this.$wrap("(",")"):nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"GlobalVariableNode");self.$handle("gvar"),self.$children("name"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return this.$helper("gvars"),name=this.$property(this.$var_name()),this.$add_gvar(name),this.$push("$gvars"+name)}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"BackRefNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("back_ref"),$def(self,"$compile",(function $$compile(){var $ret_or_1,$yield=$$compile.$$p||nil;return delete $$compile.$$p,this.$helper("gvars"),$eqeqeq("&",$ret_or_1=this.$var_name())?this.$handle_global_match():$eqeqeq("'",$ret_or_1)?this.$handle_post_match():$eqeqeq("`",$ret_or_1)?this.$handle_pre_match():$eqeqeq("+",$ret_or_1)?$send2(this,$find_super(this,"compile",$$compile,!1,!0),"compile",[],$yield):this.$raise($$("NotImplementedError"))}),0),$def(self,"$handle_global_match",(function(){return $send(this,"with_temp",[],(function $$4(tmp){return null==tmp&&(tmp=nil),(null==$$4.$$s?this:$$4.$$s).$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+"['$[]'](0))")}),{$$arity:1,$$s:this})}),0),$def(self,"$handle_pre_match",(function(){return $send(this,"with_temp",[],(function $$5(tmp){return null==tmp&&(tmp=nil),(null==$$5.$$s?this:$$5.$$s).$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+".$pre_match())")}),{$$arity:1,$$s:this})}),0),$def(self,"$handle_post_match",(function(){return $send(this,"with_temp",[],(function $$6(tmp){return null==tmp&&(tmp=nil),(null==$$6.$$s?this:$$6.$$s).$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+".$post_match())")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("GlobalVariableNode"),$nesting),function($base,$super){var self=$klass($base,$super,"GlobalAssignNode");self.$handle("gvasgn"),self.$children("name","value"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return this.$helper("gvars"),name=this.$property(this.$var_name()),this.$push("$gvars"+name+" = "),this.$push(this.$expr(this.$value())),($truthy(this["$recv?"]())||$truthy(this["$expr?"]()))&&$truthy(this.$value())?this.$wrap("(",")"):nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"NthrefNode");self.$handle("nth_ref"),self.$children("index"),$def(self,"$compile",(function(){return this.$helper("gvars"),$send(this,"with_temp",[],(function $$7(tmp){var self=null==$$7.$$s?this:$$7.$$s;return null==tmp&&(tmp=nil),self.$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+"['$[]']("+self.$index()+"))")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ClassVariableNode");self.$handle("cvar"),self.$children("name"),$def(self,"$compile",(function(){var tolerant=nil;return this.$helper("class_variable_get"),tolerant=!1,$truthy(this["$stmt?"]())&&(tolerant=!0),this.$push("$class_variable_get("+this.$class_variable_owner()+", '"+this.$name()+"', "+tolerant.$inspect()+")")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ClassVarAssignNode");return self.$handle("cvasgn"),self.$children("name","value"),$def(self,"$compile",(function(){return this.$helper("class_variable_set"),this.$push("$class_variable_set("+this.$class_variable_owner()+", '"+this.$name()+"', ",this.$expr(this.$value()),")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/constants"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def,$const_set=Opal.const_set;return Opal.add_stubs("require,handle,children,magical_data_const?,push,optimized_access?,helper,name,==,const_scope,s,absolute_const,top_scope,recv,eval?,compiler,relative_access,scope,nil?,eof_content,freeze,include?,base,expr,value,nesting"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ConstNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("const"),self.$children("const_scope","name"),$def(self,"$compile",(function(){return $truthy(this["$magical_data_const?"]())?this.$push("$__END__"):$truthy(this["$optimized_access?"]())?(this.$helper(""+this.$name()),this.$push("$"+this.$name())):$eqeq(this.$const_scope(),this.$s("cbase"))?this.$push(this.$top_scope().$absolute_const()+"('"+this.$name()+"')"):$truthy(this.$const_scope())?this.$push(this.$top_scope().$absolute_const()+"(",this.$recv(this.$const_scope()),", '"+this.$name()+"')"):($truthy(this.$compiler()["$eval?"]()),this.$push(this.$scope().$relative_access()+"('"+this.$name()+"')"))}),0),$def(self,"$magical_data_const?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.$const_scope()["$nil?"]())?this.$name()["$=="]("DATA"):$ret_or_2)?this.$compiler().$eof_content():$ret_or_1}),0),$const_set($nesting[0],"OPTIMIZED_ACCESS_CONSTS",["BasicObject","Object","Module","Class","Opal","Kernel","NilClass"].$freeze()),$def(self,"$optimized_access?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$const_scope()["$=="](this.$s("cbase")))?$$("OPTIMIZED_ACCESS_CONSTS")["$include?"](this.$name()):$ret_or_1}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"CbaseNode");self.$handle("cbase"),$def(self,"$compile",(function(){return this.$push("'::'")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ConstAssignNode");return self.$handle("casgn"),self.$children("base","name","value"),$def(self,"$compile",(function(){return this.$helper("const_set"),$truthy(this.$base())?this.$push("$const_set(",this.$expr(this.$base()),", '"+this.$name()+"', ",this.$expr(this.$value()),")"):this.$push("$const_set("+this.$scope().$nesting()+"[0], '"+this.$name()+"', ",this.$expr(this.$value()),")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/break_finder"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$alias=Opal.alias;return Opal.add_stubs("require"),self.$require("opal/rewriter"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BreakFinder");return self.$$prototype.found_break=nil,$def(self,"$initialize",(function(){return this.found_break=!1}),0),$def(self,"$found_break?",(function(){return this.found_break}),0),$def(self,"$on_break",(function(node){return this.found_break=!0,node}),1),$def(self,"$stop_lookup",(function(node){return nil}),1),$alias(self,"on_for","stop_lookup"),$alias(self,"on_while","stop_lookup"),$alias(self,"on_while_post","stop_lookup"),$alias(self,"on_until","stop_lookup"),$alias(self,"on_until_post","stop_lookup"),$alias(self,"on_block","stop_lookup")}($nesting[0],$$$($$$($$("Opal"),"Rewriters"),"Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/call"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$defs=Opal.defs,$send2=Opal.send2,$find_super=Opal.find_super,$slice=Opal.slice,$truthy=Opal.truthy,$def=Opal.def,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$not=Opal.not,$neqeq=Opal.neqeq,$eqeqeq=Opal.eqeqeq,$to_ary=Opal.to_ary,$Opal=Opal.Opal,$range=Opal.range;return Opal.add_stubs("require,handle,attr_reader,freeze,[]=,-,define_method,to_proc,include?,type,s,handle_special,record_method?,<<,method_calls,compiler,to_sym,meth,using_eval?,compile_eval_var,using_irb?,compile_irb_var,default_compile,private,iter,new,process,found_break?,splat?,!,empty?,collect_refinements_temps,scope,auto_await?,push,await_encountered=,invoke_using_refinement?,compile_using_refined_send,invoke_using_send?,compile_using_send,compile_simple_call_chain,compile_break_catcher,helper,compile_receiver,compile_method_name,compile_arguments,compile_block_pass,compile_refinements,recv,receiver_sexp,expr,arglist,children,map,iter_has_break?,unshift,line,method_jsid,any?,==,recvr,mid_to_jsid,to_s,with_temp,intern,irb?,top?,variable_like?,eval?,scope_variables,nil?,updated,async_await,!=,match?,method,arity,[],each,add_special,call,inline_operators?,fragment,resolve,requires,file,dirname,cleanpath,join,Pathname,self,inspect,length,warning,autoloads,required_trees,force_encoding,encoding,+,handle_block_given_call,def?,mid,module_name,count,accepts_using?,using_refinement,first,refinements_temp,arity_check?,defines_lambda,push_nesting?,nesting,new_temp,scope_locals,source_location,size,last,dynamic_require_severity,handle_part,===,is_a?,expand_path,split,error,each_with_object,pop"),self.$require("set"),self.$require("pathname"),self.$require("opal/nodes/base"),self.$require("opal/rewriters/break_finder"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"CallNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.sexp=$proto.compiler=nil,self.$handle("send"),self.$attr_reader("recvr","meth","arglist","iter"),$const_set($nesting[0],"SPECIALS",$hash2([],{})),$const_set($nesting[0],"OPERATORS",$hash2(["+","-","*","/","<","<=",">",">="],{"+":"plus","-":"minus","*":"times","/":"divide","<":"lt","<=":"le",">":"gt",">=":"ge"}).$freeze()),$defs(self,"$add_special",(function $$add_special(name,options){var $writer,handler=$$add_special.$$p||nil;return delete $$add_special.$$p,null==options&&(options=$hash2([],{})),$writer=[name,options],$send($$("SPECIALS"),"[]=",$to_a($writer)),$rb_minus($writer.length,1),$send(this,"define_method",["handle_"+name],handler.$to_proc())}),-2),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$b,$c,$yield=$$initialize.$$p||nil,self=this,args=nil,rest=nil,last_arg=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$b=[].concat($to_a(self.sexp)),self.recvr=null==$b[0]?nil:$b[0],self.meth=null==$b[1]?nil:$b[1],args=$slice.call($b,2),$c=($c=($b=[].concat($to_a(args))).length-1)<0?0:$c,rest=$slice.call($b,0,$c),last_arg=null==$b[$c]?nil:$b[$c],$truthy(last_arg)&&$truthy(["iter","block_pass"]["$include?"](last_arg.$type()))?(self.iter=last_arg,args=rest):self.iter=nil,self.arglist=$send(self,"s",["arglist"].concat($to_a(args)))}),-1),$def(self,"$compile",(function(){try{return $send(this,"handle_special",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return $truthy(self["$record_method?"]())&&self.$compiler().$method_calls()["$<<"](self.$meth().$to_sym()),$truthy(self["$using_eval?"]())&&Opal.ret(self.$compile_eval_var()),$truthy(self["$using_irb?"]())&&Opal.ret(self.$compile_irb_var()),self.$default_compile()}),{$$arity:0,$$s:this})}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),0),self.$private(),$def(self,"$iter_has_break?",(function(){var finder=nil;return!!$truthy(this.$iter())&&((finder=$$$($$$($$("Opal"),"Rewriters"),"BreakFinder").$new()).$process(this.$iter()),finder["$found_break?"]())}),0),$def(self,"$invoke_using_send?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$iter())?$ret_or_1:this["$splat?"]()}),0),$def(self,"$invoke_using_refinement?",(function(){return this.$scope().$scope().$collect_refinements_temps()["$empty?"]()["$!"]()}),0),$def(self,"$default_compile",(function(){var $writer=nil;return $truthy(this["$auto_await?"]())&&(this.$push("await "),$writer=[!0],$send(this.$scope(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy(this["$invoke_using_refinement?"]())?this.$compile_using_refined_send():$truthy(this["$invoke_using_send?"]())?this.$compile_using_send():this.$compile_simple_call_chain(),this.$compile_break_catcher()}),0),$def(self,"$compile_using_send",(function(){return this.$helper("send"),this.$push("$send("),this.$compile_receiver(),this.$compile_method_name(),this.$compile_arguments(),this.$compile_block_pass(),this.$push(")")}),0),$def(self,"$compile_using_refined_send",(function(){return this.$helper("refined_send"),this.$push("$refined_send("),this.$compile_refinements(),this.$compile_receiver(),this.$compile_method_name(),this.$compile_arguments(),this.$compile_block_pass(),this.$push(")")}),0),$def(self,"$compile_receiver",(function(){return this.$push(this.$recv(this.$receiver_sexp()))}),0),$def(self,"$compile_method_name",(function(){return this.$push(", '"+this.$meth()+"'")}),0),$def(self,"$compile_arguments",(function(){return this.$push(", "),$truthy(this["$splat?"]())?this.$push(this.$expr(this.$arglist())):$truthy(this.$arglist().$children()["$empty?"]())?this.$push("[]"):this.$push("[",this.$expr(this.$arglist()),"]")}),0),$def(self,"$compile_block_pass",(function(){return $truthy(this.$iter())?this.$push(", ",this.$expr(this.$iter())):nil}),0),$def(self,"$compile_refinements",(function(){var refinements;return refinements=$send(this.$scope().$collect_refinements_temps(),"map",[],(function $$5(i){return null==i&&(i=nil),(null==$$5.$$s?this:$$5.$$s).$s("js_tmp",i)}),{$$arity:1,$$s:this}),this.$push(this.$expr($send(this,"s",["array"].concat($to_a(refinements)))),", ")}),0),$def(self,"$compile_break_catcher",(function(){return $truthy(this["$iter_has_break?"]())?(this.$unshift("return "),this.$unshift("(function(){var $brk = Opal.new_brk(); try {"),this.$line("} catch (err) { if (err === $brk) { return err.$v } else { throw err } }})()")):nil}),0),$def(self,"$compile_simple_call_chain",(function(){return this.$push(this.$recv(this.$receiver_sexp()),this.$method_jsid(),"(",this.$expr(this.$arglist()),")")}),0),$def(self,"$splat?",(function(){return $send(this.$arglist().$children(),"any?",[],(function(a){return null==a&&(a=nil),a.$type()["$=="]("splat")}),1)}),0),$def(self,"$receiver_sexp",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$recvr())?$ret_or_1:this.$s("self")}),0),$def(self,"$method_jsid",(function(){return this.$mid_to_jsid(this.$meth().$to_s())}),0),$def(self,"$record_method?",(function(){return!0}),0),$def(self,"$compile_irb_var",(function(){return $send(this,"with_temp",[],(function $$9(tmp){var lvar,call,self=null==$$9.$$s?this:$$9.$$s;return null==tmp&&(tmp=nil),lvar=self.$meth(),call=self.$s("send",self.$s("self"),self.$meth().$intern(),self.$s("arglist")),self.$push("(("+tmp+" = Opal.irb_vars."+lvar+") == null ? ",self.$expr(call)," : "+tmp+")")}),{$$arity:1,$$s:this})}),0),$def(self,"$compile_eval_var",(function(){return this.$push(this.$meth().$to_s())}),0),$def(self,"$using_irb?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.compiler["$irb?"]())?this.$scope()["$top?"]():$ret_or_2)?this["$variable_like?"]():$ret_or_1}),0),$def(self,"$using_eval?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.compiler["$eval?"]())?this.$scope()["$top?"]():$ret_or_2)?this.compiler.$scope_variables()["$include?"](this.$meth()):$ret_or_1}),0),$def(self,"$variable_like?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.$arglist()["$=="](this.$s("arglist")))?this.$recvr()["$nil?"]():$ret_or_2)?this.$iter()["$nil?"]():$ret_or_1}),0),$def(self,"$sexp_with_arglist",(function(){return this.sexp.$updated(nil,[this.$recvr(),this.$meth(),this.$arglist()])}),0),$def(self,"$auto_await?",(function(){var $ret_or_1,$ret_or_2,awaited_set=nil;return awaited_set=this.$compiler().$async_await(),$truthy($ret_or_1=$truthy($ret_or_2=awaited_set)?awaited_set["$!="](!0):$ret_or_2)?awaited_set["$match?"](this.$meth().$to_s()):$ret_or_1}),0),$def(self,"$handle_special",(function $$handle_special(){var compile_default=$$handle_special.$$p||nil,method=nil;return delete $$handle_special.$$p,$truthy($$("SPECIALS")["$include?"](this.$meth()))?(method=this.$method("handle_"+this.$meth()),$eqeq(method.$arity(),1)?method["$[]"](compile_default):method["$[]"]()):Opal.yieldX(compile_default,[])}),0),$send($$("OPERATORS"),"each",[],(function $CallNode$14(operator,name){var self=null==$CallNode$14.$$s?this:$CallNode$14.$$s;return null==operator&&(operator=nil),null==name&&(name=nil),$send(self,"add_special",[operator.$to_sym()],(function $$15(compile_default){var $a,self=null==$$15.$$s?this:$$15.$$s,lhs=nil,rhs=nil;return null==compile_default&&(compile_default=nil),$truthy(self["$invoke_using_refinement?"]())?compile_default.$call():$truthy(self.$compiler()["$inline_operators?"]())?($truthy(self["$record_method?"]())&&self.$compiler().$method_calls()["$<<"](operator.$to_sym()),self.$helper("rb_"+name),lhs=($a=[self.$expr(self.$recvr()),self.$expr(self.$arglist())])[0],rhs=$a[1],self.$push(self.$fragment("$rb_"+name+"(")),self.$push(lhs),self.$push(self.$fragment(", ")),self.$push(rhs),self.$push(self.$fragment(")"))):compile_default.$call()}),{$$arity:1,$$s:self})}),{$$arity:2,$$s:self}),$send(self,"add_special",["require"],(function $CallNode$16(compile_default){var self=null==$CallNode$16.$$s?this:$CallNode$16.$$s,str=nil;return null==compile_default&&(compile_default=nil),str=$$("DependencyResolver").$new(self.$compiler(),self.$arglist().$children()["$[]"](0)).$resolve(),$truthy(str["$nil?"]())||self.$compiler().$requires()["$<<"](str),compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["require_relative"],(function $CallNode$17(){var self=null==$CallNode$17.$$s?this:$CallNode$17.$$s,arg=nil,file=nil,dir=nil;return arg=self.$arglist().$children()["$[]"](0),file=self.$compiler().$file(),$eqeq(arg.$type(),"str")&&(dir=$$("File").$dirname(file),self.$compiler().$requires()["$<<"](self.$Pathname(dir).$join(arg.$children()["$[]"](0)).$cleanpath().$to_s())),self.$push(self.$fragment(self.$scope().$self()+".$require("+file.$inspect()+"+ '/../' + ")),self.$push(self.$process(self.$arglist())),self.$push(self.$fragment(")"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["autoload"],(function $CallNode$18(compile_default){var self=null==$CallNode$18.$$s?this:$CallNode$18.$$s,args=nil,str=nil;return null==compile_default&&(compile_default=nil),args=self.$arglist().$children(),$eqeq(args.$length(),2)&&$eqeq(args["$[]"](0).$type(),"sym")&&(str=$$("DependencyResolver").$new(self.$compiler(),args["$[]"](1),"ignore").$resolve(),$truthy(str["$nil?"]())?self.$compiler().$warning("File for autoload of constant '"+args["$[]"](0).$children()["$[]"](0)+"' could not be bundled!"):(self.$compiler().$requires()["$<<"](str),self.$compiler().$autoloads()["$<<"](str))),compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["require_tree"],(function $CallNode$19(compile_default){var $a,rest,self=null==$CallNode$19.$$s?this:$CallNode$19.$$s,first_arg=nil,relative_path=nil,dir=nil,full_path=nil;return null==compile_default&&(compile_default=nil),first_arg=null==($a=[].concat($to_a(self.$arglist().$children())))[0]?nil:$a[0],rest=$slice.call($a,1),$eqeq(first_arg.$type(),"str")&&(relative_path=first_arg.$children()["$[]"](0),self.$compiler().$required_trees()["$<<"](relative_path),dir=$$("File").$dirname(self.$compiler().$file()),(full_path=self.$Pathname(dir).$join(relative_path).$cleanpath().$to_s()).$force_encoding(relative_path.$encoding()),first_arg=first_arg.$updated(nil,[full_path])),self.arglist=self.$arglist().$updated(nil,$rb_plus([first_arg],rest)),compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["block_given?"],(function $CallNode$20(){var self=null==$CallNode$20.$$s?this:$CallNode$20.$$s;return null==self.sexp&&(self.sexp=nil),self.$push(self.$compiler().$handle_block_given_call(self.sexp))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__callee__"],(function $CallNode$21(){var self=null==$CallNode$21.$$s?this:$CallNode$21.$$s;return $truthy(self.$scope()["$def?"]())?self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect())):self.$push(self.$fragment("nil"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__method__"],(function $CallNode$22(){var self=null==$CallNode$22.$$s?this:$CallNode$22.$$s;return $truthy(self.$scope()["$def?"]())?self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect())):self.$push(self.$fragment("nil"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__dir__"],(function $CallNode$23(){var self=null==$CallNode$23.$$s?this:$CallNode$23.$$s;return self.$push($$("File").$dirname($$$($$("Opal"),"Compiler").$module_name(self.$compiler().$file())).$inspect())}),{$$arity:0,$$s:self}),$send(self,"add_special",["using"],(function $CallNode$24(compile_default){var self=null==$CallNode$24.$$s?this:$CallNode$24.$$s;return null==compile_default&&(compile_default=nil),$truthy(self.$scope()["$accepts_using?"]())&&$eqeq(self.$arglist().$children().$count(),1)?self.$using_refinement(self.$arglist().$children().$first()):compile_default.$call()}),{$$arity:1,$$s:self}),$def(self,"$using_refinement",(function(arg){var $a,prev,curr;return prev=null==($a=[].concat($to_a(this.$scope().$refinements_temp())))[0]?nil:$a[0],curr=null==$a[1]?nil:$a[1],$truthy(prev)?this.$push("("+curr+" = "+prev+".slice(), "+curr+".push(",this.$expr(arg),"), "+this.$scope().$self()+")"):this.$push("("+curr+" = [",this.$expr(arg),"], "+this.$scope().$self()+")")}),1),$send(self,"add_special",["debugger"],(function $CallNode$25(){var self=null==$CallNode$25.$$s?this:$CallNode$25.$$s;return self.$push(self.$fragment("debugger"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__OPAL_COMPILER_CONFIG__"],(function $CallNode$26(){var self=null==$CallNode$26.$$s?this:$CallNode$26.$$s;return self.$push(self.$fragment("Opal.hash({ arity_check: "+self.$compiler()["$arity_check?"]()+" })"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["lambda"],(function $CallNode$27(compile_default){return null==compile_default&&(compile_default=nil),$send((null==$CallNode$27.$$s?this:$CallNode$27.$$s).$scope(),"defines_lambda",[],(function(){return compile_default.$call()}),0)}),{$$arity:1,$$s:self}),$send(self,"add_special",["nesting"],(function $CallNode$29(compile_default){var push_nesting,self=null==$CallNode$29.$$s?this:$CallNode$29.$$s;return null==compile_default&&(compile_default=nil),push_nesting=self["$push_nesting?"](),$truthy(push_nesting)&&self.$push("(Opal.Module.$$nesting = "+self.$scope().$nesting()+", "),compile_default.$call(),$truthy(push_nesting)?self.$push(")"):nil}),{$$arity:1,$$s:self}),$send(self,"add_special",["constants"],(function $CallNode$30(compile_default){var push_nesting,self=null==$CallNode$30.$$s?this:$CallNode$30.$$s;return null==compile_default&&(compile_default=nil),push_nesting=self["$push_nesting?"](),$truthy(push_nesting)&&self.$push("(Opal.Module.$$nesting = "+self.$scope().$nesting()+", "),compile_default.$call(),$truthy(push_nesting)?self.$push(")"):nil}),{$$arity:1,$$s:self}),$send(self,"add_special",["eval"],(function $CallNode$31(compile_default){var temp,scope_variables,self=null==$CallNode$31.$$s?this:$CallNode$31.$$s;return null==compile_default&&(compile_default=nil),$neqeq(self.$arglist().$children().$length(),1)||$not([self.$s("self"),nil]["$include?"](self.$recvr()))?compile_default.$call():(self.$scope().$nesting(),temp=self.$scope().$new_temp(),scope_variables=$send(self.$scope().$scope_locals(),"map",[],"to_s".$to_proc()).$inspect(),self.$push("("+temp+" = ",self.$expr(self.$arglist())),self.$push(", typeof Opal.compile === 'function' ? eval(Opal.compile("+temp),self.$push(", {scope_variables: ",scope_variables),self.$push(", arity_check: "+self.$compiler()["$arity_check?"]()+", file: '(eval)', eval: true})) : "),self.$push(self.$scope().$self()+".$eval("+temp+"))"))}),{$$arity:1,$$s:self}),$send(self,"add_special",["local_variables"],(function $CallNode$32(compile_default){var scope_variables,self=null==$CallNode$32.$$s?this:$CallNode$32.$$s;return null==compile_default&&(compile_default=nil),$truthy([self.$s("self"),nil]["$include?"](self.$recvr()))?(scope_variables=$send(self.$scope().$scope_locals(),"map",[],"to_s".$to_proc()).$inspect(),self.$push(scope_variables)):compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["binding"],(function $CallNode$33(compile_default){var self=null==$CallNode$33.$$s?this:$CallNode$33.$$s;return null==compile_default&&(compile_default=nil),$truthy(self.$recvr()["$nil?"]())?(self.$scope().$nesting(),self.$push("Opal.Binding.$new("),self.$push(" function($code, $value) {"),self.$push(" if (typeof $value === 'undefined') {"),self.$push(" return eval($code);"),self.$push(" }"),self.$push(" else {"),self.$push(" return eval($code + ' = $value');"),self.$push(" }"),self.$push(" },"),self.$push(" ",$send(self.$scope().$scope_locals(),"map",[],"to_s".$to_proc()).$inspect(),","),self.$push(" ",self.$scope().$self(),","),self.$push(" ",self.$source_location()),self.$push(")")):compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["__await__"],(function $CallNode$34(compile_default){var self=null==$CallNode$34.$$s?this:$CallNode$34.$$s,$writer=nil;return null==compile_default&&(compile_default=nil),$truthy(self.$compiler().$async_await())?(self.$push(self.$fragment("(await (")),self.$push(self.$process(self.$recvr())),self.$push(self.$fragment("))")),$writer=[!0],$send(self.$scope(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):compile_default.$call()}),{$$arity:1,$$s:self}),$def(self,"$push_nesting?",(function(){var $ret_or_1,recv=nil,$ret_or_2=nil,$ret_or_3=nil;return recv=this.$children().$first(),$truthy($ret_or_1=this.$children().$size()["$=="](2))?$truthy($ret_or_2=recv["$nil?"]())?$ret_or_2:$truthy($ret_or_3=recv.$type()["$=="]("const"))?recv.$children().$last()["$=="]("Module"):$ret_or_3:$ret_or_1}),0),function($base,$super,$parent_nesting){var self=$klass($base,null,"DependencyResolver"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.compiler=$proto.sexp=$proto.missing_dynamic_require=nil,$def(self,"$initialize",(function(compiler,sexp,missing_dynamic_require){var $ret_or_1;return null==missing_dynamic_require&&(missing_dynamic_require=nil),this.compiler=compiler,this.sexp=sexp,this.missing_dynamic_require=$truthy($ret_or_1=missing_dynamic_require)?$ret_or_1:this.compiler.$dynamic_require_severity()}),-3),$def(self,"$resolve",(function(){return this.$handle_part(this.sexp)}),0),$def(self,"$handle_part",(function(sexp,missing_dynamic_require){var $a,$b,$ret_or_1=nil,recv=nil,meth=nil,args=nil,parts=nil;if(null==missing_dynamic_require&&(missing_dynamic_require=this.missing_dynamic_require),$truthy(sexp)){if($eqeqeq("str",$ret_or_1=sexp.$type()))return sexp.$children()["$[]"](0);if($eqeqeq("dstr",$ret_or_1))return $send(sexp.$children(),"map",[],(function $$36(i){return null==i&&(i=nil),(null==$$36.$$s?this:$$36.$$s).$handle_part(i)}),{$$arity:1,$$s:this}).$join();if($eqeqeq("begin",$ret_or_1)){if($eqeq(sexp.$children().$length(),1))return this.$handle_part(sexp.$children()["$[]"](0))}else if($eqeqeq("send",$ret_or_1)){if($b=sexp.$children(),recv=null==($a=$to_ary($b))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),parts=$send(args,"map",[],(function $$37(s){return null==s&&(s=nil),(null==$$37.$$s?this:$$37.$$s).$handle_part(s,"ignore")}),{$$arity:1,$$s:this}),$truthy(parts["$include?"](nil)))return nil;if($truthy(recv["$is_a?"]($$$($$$($Opal,"AST"),"Node")))&&$eqeq(recv.$type(),"const")&&$eqeq(recv.$children().$last(),"File")){if($eqeq(meth,"expand_path"))return $send(this,"expand_path",$to_a(parts));if($eqeq(meth,"join"))return this.$expand_path(parts.$join("/"));if($eqeq(meth,"dirname"))return this.$expand_path(parts["$[]"](0).$split("/")["$[]"]($range(0,-1,!0)).$join("/"))}else if($eqeq(meth,"__dir__"))return $$("File").$dirname($$$($$("Opal"),"Compiler").$module_name(this.compiler.$file()))}}return $eqeqeq("error",$ret_or_1=missing_dynamic_require)?this.compiler.$error("Cannot handle dynamic require",this.sexp.$line()):$eqeqeq("warning",$ret_or_1)?this.compiler.$warning("Cannot handle dynamic require",this.sexp.$line()):nil}),-2),$def(self,"$expand_path",(function(path,base){return null==base&&(base=""),$send((base+"/"+path).$split("/"),"each_with_object",[[]],(function(part,p){return null==part&&(part=nil),null==p&&(p=nil),$eqeq(part,"")?nil:$eqeq(part,"..")?p.$pop():p["$<<"](part)}),2).$join("/")}),-2)}($nesting[0],0,$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/csend"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$def=Opal.def;return Opal.add_stubs("require,handle,helper,conditional_send,recv,receiver_sexp,push,compile_method_name,compile_arguments,compile_block_pass"),self.$require("opal/nodes/call"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"CSendNode");return self.$handle("csend"),$def(self,"$default_compile",(function(){return this.$helper("send"),$send(this,"conditional_send",[this.$recv(this.$receiver_sexp())],(function $$1(receiver_temp){var self=null==$$1.$$s?this:$$1.$$s;return null==receiver_temp&&(receiver_temp=nil),self.$push("$send(",receiver_temp),self.$compile_method_name(),self.$compile_arguments(),self.$compile_block_pass(),self.$push(")")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("CallNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/call_special"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$send=Opal.send;return Opal.add_stubs("require,handle,children,push,recv,recvr,expr,property,value,<<,default_compile,meth,receiver_sexp,method_jsid,compile_arguments,iter,s,lhs,rhs,==,type,first,map,flatten,scan,to_proc,empty?,stmt?,process"),self.$require("opal/nodes/base"),self.$require("opal/nodes/call"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"JsAttrNode");self.$handle("jsattr"),self.$children("recvr","property"),$def(self,"$compile",(function(){return this.$push(this.$recv(this.$recvr()),"[",this.$expr(this.$property()),"]")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JsAttrAsgnNode");self.$handle("jsattrasgn"),self.$children("recvr","property","value"),$def(self,"$compile",(function(){return this.$push(this.$recv(this.$recvr()),"[",this.$expr(this.$property()),"] = ",this.$expr(this.$value()))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JsCallNode"),$proto=self.$$prototype;$proto.iter=$proto.arglist=nil,self.$handle("jscall"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$truthy(self.iter)&&(self.arglist=self.arglist["$<<"](self.iter)),self.iter=nil}),-1),$def(self,"$compile",(function(){return this.$default_compile()}),0),$def(self,"$method_jsid",(function(){return"."+this.$meth()}),0),$def(self,"$compile_using_send",(function(){return this.$push(this.$recv(this.$receiver_sexp()),this.$method_jsid(),".apply(null"),this.$compile_arguments(),$truthy(this.$iter())&&this.$push(".concat(",this.$expr(this.$iter()),")"),this.$push(")")}),0)}($nesting[0],$$("CallNode")),function($base,$super){var self=$klass($base,$super,"Match3Node");return self.$$prototype.level=nil,self.$handle("match_with_lvasgn"),self.$children("lhs","rhs"),$def(self,"$compile",(function(){var sexp=nil,re=nil,names=nil,names_def=nil;return sexp=this.$s("send",this.$lhs(),"=~",this.$rhs()),$eqeq(this.$lhs().$type(),"regexp")&&$eqeq(this.$lhs().$children().$first().$type(),"str")&&(re=this.$lhs().$children().$first().$children().$first(),names=$send(re.$scan(/\(\?<([^>]*)>/).$flatten(),"map",[],"to_sym".$to_proc()),$truthy(names["$empty?"]())||(names_def=this.$s("lvasgn","$m3names",this.$s("if",this.$s("gvar","$~"),this.$s("send",this.$s("gvar","$~"),"named_captures"),this.$s("hash"))),names=$send(names,"map",[],(function $$1(name){var self=null==$$1.$$s?this:$$1.$$s;return null==name&&(name=nil),self.$s("lvasgn",name,self.$s("send",self.$s("lvar","$m3names"),"[]",self.$s("sym",name)))}),{$$arity:1,$$s:this}),sexp=$truthy(this["$stmt?"]())?$send(this,"s",["begin",sexp,names_def].concat($to_a(names))):$send(this,"s",["begin",this.$s("lvasgn","$m3tmp",sexp),names_def].concat($to_a(names)).concat([this.$s("lvar","$m3tmp")])))),this.$push(this.$process(sexp,this.level))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/scope"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$def=Opal.def,$send=Opal.send,$rb_minus=Opal.rb_minus,$truthy=Opal.truthy,$not=Opal.not,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$hash2=Opal.hash2;return Opal.add_stubs("require,attr_accessor,attr_reader,indent,scope,compiler,scope=,-,==,iter?,!,class?,dup,push,map,ivars,gvars,empty?,<<,parser_indent,join,+,fragment,def_in_class?,add_proto_ivar,include?,has_local?,|,scope_locals,reject,start_with?,to_s,has_temp?,pop,next_temp,loop,succ,uses_block!,identify!,valid_name?,mid,compact,parent,name,scope_name,unique_temp,lambda?,def?,type,nil?,rescue_else_sexp,last,class,collect_refinements_temps,add_scope_local,new_refinements_temp,identity,block_name=,add_temp,block_name,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ScopeNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.type=$proto.is_lambda=$proto.lambda_definition=$proto.defs=$proto.parent=$proto.temps=$proto.locals=$proto.proto_ivars=$proto.compiler=$proto.ivars=$proto.gvars=$proto.args=$proto.queue=$proto.while_stack=$proto.identity=$proto.uses_block=$proto.rescues=$proto.in_resbody=$proto.in_ensure=$proto.next_retry_id=$proto.refinements_temp=$proto.block_prepared=nil,self.$attr_accessor("parent"),self.$attr_accessor("name"),self.$attr_accessor("block_name"),self.$attr_reader("scope_name"),self.$attr_reader("locals"),self.$attr_reader("ivars"),self.$attr_reader("gvars"),self.$attr_accessor("mid"),self.$attr_accessor("defs"),self.$attr_reader("methods"),self.$attr_accessor("catch_return","has_break","has_retry"),self.$attr_accessor("rescue_else_sexp"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.locals=[],self.temps=[],self.args=[],self.ivars=[],self.gvars=[],self.parent=nil,self.queue=[],self.unique="a",self.while_stack=[],self.identity=nil,self.defs=nil,self.methods=[],self.uses_block=!1,self.in_ensure=!1,self.proto_ivars=[]}),-1),$def(self,"$in_scope",(function $$in_scope(){var $yield=$$in_scope.$$p||nil;return delete $$in_scope.$$p,$send(this,"indent",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s,$writer=nil;return null==self.parent&&(self.parent=nil),self.parent=self.$compiler().$scope(),$writer=[self],$send(self.$compiler(),"scope=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],Opal.yield1($yield,self),$writer=[self.parent],$send(self.$compiler(),"scope=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:0,$$s:this})}),0),$def(self,"$class_scope?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.type["$=="]("class"))?$ret_or_1:this.type["$=="]("module")}),0),$def(self,"$class?",(function(){return this.type["$=="]("class")}),0),$def(self,"$module?",(function(){return this.type["$=="]("module")}),0),$def(self,"$sclass?",(function(){return this.type["$=="]("sclass")}),0),$def(self,"$top?",(function(){return this.type["$=="]("top")}),0),$def(self,"$iter?",(function(){return this.type["$=="]("iter")}),0),$def(self,"$def?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.type["$=="]("def"))?$ret_or_1:this.type["$=="]("defs")}),0),$def(self,"$lambda?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$iter?"]())?this.is_lambda:$ret_or_1}),0),$def(self,"$is_lambda!",(function(){return this.is_lambda=!0}),0),$def(self,"$defines_lambda",(function $$defines_lambda(){var $yield=$$defines_lambda.$$p||nil;return delete $$defines_lambda.$$p,this.lambda_definition=!0,Opal.yieldX($yield,[]),this.lambda_definition=!1}),0),$def(self,"$lambda_definition?",(function(){return this.lambda_definition}),0),$def(self,"$def_in_class?",(function(){var $ret_or_1,$ret_or_2,$ret_or_3;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.defs["$!"]())?this.type["$=="]("def"):$ret_or_3)?this.parent:$ret_or_2)?this.parent["$class?"]():$ret_or_1}),0),$def(self,"$to_vars",(function(){var indent,vars=nil,iv=nil,gv=nil,str=nil;return vars=this.temps.$dup(),$send(vars,"push",$to_a($send(this.locals,"map",[],(function(l){return null==l&&(l=nil),l+" = nil"}),1))),iv=$send(this.$ivars(),"map",[],(function(ivar){return null==ivar&&(ivar=nil),"if (self"+ivar+" == null) self"+ivar+" = nil;\n"}),1),gv=$send(this.$gvars(),"map",[],(function(gvar){return null==gvar&&(gvar=nil),"if ($gvars"+gvar+" == null) $gvars"+gvar+" = nil;\n"}),1),$truthy(this["$class?"]())&&$not(this.proto_ivars["$empty?"]())&&vars["$<<"]("$proto = self.$$prototype"),indent=this.compiler.$parser_indent(),str=$truthy(vars["$empty?"]())?"":"var "+vars.$join(", ")+";\n",$truthy(this.$ivars()["$empty?"]())||(str=$rb_plus(str,""+indent+iv.$join(indent))),$truthy(this.$gvars()["$empty?"]())||(str=$rb_plus(str,""+indent+gv.$join(indent))),$truthy(this["$class?"]())&&$not(this.proto_ivars["$empty?"]())&&(str=str+"\n"+indent+$send(this.proto_ivars,"map",[],(function(i){return null==i&&(i=nil),"$proto"+i}),1).$join(" = ")+" = nil;"),this.$fragment(str)}),0),$def(self,"$add_scope_ivar",(function(ivar){return $truthy(this["$def_in_class?"]())?this.parent.$add_proto_ivar(ivar):$truthy(this.ivars["$include?"](ivar))?nil:this.ivars["$<<"](ivar)}),1),$def(self,"$add_scope_gvar",(function(gvar){return $truthy(this.gvars["$include?"](gvar))?nil:this.gvars["$<<"](gvar)}),1),$def(self,"$add_proto_ivar",(function(ivar){return $truthy(this.proto_ivars["$include?"](ivar))?nil:this.proto_ivars["$<<"](ivar)}),1),$def(self,"$add_arg",(function(arg){return $truthy(this.args["$include?"](arg))||this.args["$<<"](arg),arg}),1),$def(self,"$add_scope_local",(function(local){return $truthy(this["$has_local?"](local))?nil:this.locals["$<<"](local)}),1),$def(self,"$has_local?",(function(local){return!!($truthy(this.locals["$include?"](local))||$truthy(this.args["$include?"](local))||$truthy(this.temps["$include?"](local)))||!(!$truthy(this.parent)||!$eqeq(this.type,"iter"))&&this.parent["$has_local?"](local)}),1),$def(self,"$scope_locals",(function(){var locals;return locals=this.locals["$|"](this.args)["$|"]($truthy(this.parent)&&$eqeq(this.type,"iter")?this.parent.$scope_locals():[]),$send(locals,"reject",[],(function(i){return null==i&&(i=nil),i.$to_s()["$start_with?"]("$")}),1)}),0),$def(self,"$add_scope_temp",(function(tmp){return $truthy(this["$has_temp?"](tmp))?nil:this.temps.$push(tmp)}),1),$def(self,"$has_temp?",(function(tmp){return this.temps["$include?"](tmp)}),1),$def(self,"$new_temp",(function(){var tmp;return $truthy(this.queue["$empty?"]())?(tmp=this.$next_temp(),this.temps["$<<"](tmp),tmp):this.queue.$pop()}),0),$def(self,"$next_temp",(function(){var self=this,tmp=nil;return tmp=nil,function(){var $brk=Opal.new_brk();try{$send(self,"loop",[],(function $$20(){var self=null==$$20.$$s?this:$$20.$$s;if(null==self.unique&&(self.unique=nil),tmp="$"+self.unique,self.unique=self.unique.$succ(),$truthy(self["$has_local?"](tmp)))return nil;Opal.brk(nil,$brk)}),{$$arity:0,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),tmp}),0),$def(self,"$queue_temp",(function(name){return this.queue["$<<"](name)}),1),$def(self,"$push_while",(function(){var info;return info=$hash2([],{}),this.while_stack.$push(info),info}),0),$def(self,"$pop_while",(function(){return this.while_stack.$pop()}),0),$def(self,"$in_while?",(function(){return this.while_stack["$empty?"]()["$!"]()}),0),$def(self,"$uses_block!",(function(){return $eqeq(this.type,"iter")&&$truthy(this.parent)?this.parent["$uses_block!"]():(this.uses_block=!0,this["$identify!"]())}),0),$def(self,"$identify!",(function(name){var $ret_or_1=nil,$ret_or_2=nil,$ret_or_3=nil;return null==name&&(name=nil),$truthy(this.identity)||($truthy(this["$valid_name?"](this.$mid()))?this.identity="$$"+this.$mid():(name=$truthy($ret_or_1=name)?$ret_or_1:[$truthy($ret_or_2=this.$parent())?$truthy($ret_or_3=this.$parent().$name())?$ret_or_3:this.$parent().$scope_name():$ret_or_2,this.$mid()].$compact().$join("_"),this.identity=this.compiler.$unique_temp(name))),this.identity}),-1),self.$attr_reader("identity"),$def(self,"$find_parent_def",(function(){var scope=nil;for(scope=this;$truthy(scope=scope.$parent());)if($truthy(scope["$def?"]())||$truthy(scope["$lambda?"]()))return scope;return nil}),0),$def(self,"$super_chain",(function(){var $a,chain=nil,scope=nil,defn=nil,mid=nil;for(chain=($a=[[],this,"null","null"])[0],scope=$a[1],defn=$a[2],mid=$a[3];$truthy(scope);){if(!$eqeq(scope.$type(),"iter")){if($truthy(["def","defs"]["$include?"](scope.$type()))){defn=scope["$identify!"](),mid="'"+scope.$mid()+"'";break}break}chain["$<<"](scope["$identify!"]()),$truthy(scope.$parent())&&(scope=scope.$parent())}return[chain,defn,mid]}),0),$def(self,"$uses_block?",(function(){return this.uses_block}),0),$def(self,"$has_rescue_else?",(function(){return this.$rescue_else_sexp()["$nil?"]()["$!"]()}),0),$def(self,"$in_rescue",(function $$in_rescue(node){var $ret_or_1,result,$yield=$$in_rescue.$$p||nil;return delete $$in_rescue.$$p,this.rescues=$truthy($ret_or_1=this.rescues)?$ret_or_1:[],this.rescues.$push(node),result=Opal.yieldX($yield,[]),this.rescues.$pop(),result}),1),$def(self,"$current_rescue",(function(){return this.rescues.$last()}),0),$def(self,"$in_resbody",(function $$in_resbody(){var result,$yield=$$in_resbody.$$p||nil;return delete $$in_resbody.$$p,$yield===nil?nil:(this.in_resbody=!0,result=Opal.yieldX($yield,[]),this.in_resbody=!1,result)}),0),$def(self,"$in_resbody?",(function(){return this.in_resbody}),0),$def(self,"$in_ensure",(function $$in_ensure(){var result,$yield=$$in_ensure.$$p||nil;return delete $$in_ensure.$$p,$yield===nil?nil:(this.in_ensure=!0,result=Opal.yieldX($yield,[]),this.in_ensure=!1,result)}),0),$def(self,"$in_ensure?",(function(){return this.in_ensure}),0),$def(self,"$gen_retry_id",(function(){var $ret_or_1;return this.next_retry_id=$truthy($ret_or_1=this.next_retry_id)?$ret_or_1:"retry_0",this.next_retry_id=this.next_retry_id.$succ()}),0),$def(self,"$accepts_using?",(function(){return[$$("TopNode"),$$("ModuleNode"),$$("ClassNode"),$$("IterNode")]["$include?"](this.$class())}),0),$def(self,"$collect_refinements_temps",(function(temps){return null==temps&&(temps=[]),$truthy(this.refinements_temp)&&temps["$<<"](this.refinements_temp),$truthy(this.$parent())?this.$parent().$collect_refinements_temps(temps):temps}),-1),$def(self,"$new_refinements_temp",(function(){var var$;return var$=this.$compiler().$unique_temp("$refn"),this.$add_scope_local(var$),var$}),0),$def(self,"$refinements_temp",(function(){var $a,prev,curr;return prev=($a=[this.refinements_temp,this.$new_refinements_temp()])[0],curr=$a[1],this.refinements_temp=curr,[prev,curr]}),0),$def(self,"$self",(function(){return this.define_self=!0,"self"}),0),$def(self,"$nesting",(function(){return this.define_nesting=!0,"$nesting"}),0),$def(self,"$relative_access",(function(){return this.define_relative_access=this.define_nesting=!0,"$$"}),0),$def(self,"$prepare_block",(function(block_name){var scope_name,$writer=nil;return null==block_name&&(block_name=nil),scope_name=this.$scope().$identity(),$truthy(block_name)&&($send(this,"block_name=",$to_a($writer=[block_name])),$writer[$rb_minus($writer.length,1)]),this.$add_temp(this.$block_name()+" = "+scope_name+".$$p || nil"),$truthy(this.block_prepared)?nil:(this.$line("delete "+scope_name+".$$p;"),this.block_prepared=!0)}),-1),self.$attr_accessor("await_encountered")}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/module"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_ary=Opal.to_ary,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$def=Opal.def;return Opal.add_stubs("require,handle,children,name_and_base,helper,nil?,body,stmt?,unshift,line,in_scope,name=,scope,-,compile_body,await_encountered,await_encountered=,parent,+,nesting,private,cid,expr,stmt,returns,compiler,empty_line,add_temp,to_vars"),self.$require("opal/nodes/scope"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ModuleNode"),$proto=self.$$prototype;return $proto.define_nesting=$proto.define_relative_access=nil,self.$handle("module"),self.$children("cid","body"),$def(self,"$compile",(function(){var $a,$b,name,base,await_begin=nil,await_end=nil,async=nil,$writer=nil;return $b=this.$name_and_base(),$a=$to_ary($b),name=null==$a[0]?nil:$a[0],base=null==$a[1]?nil:$a[1],this.$helper("module"),$truthy(this.$body()["$nil?"]())?$truthy(this["$stmt?"]())?this.$unshift("$module(",base,", '"+name+"')"):this.$unshift("($module(",base,", '"+name+"'), nil)"):(this.$line(" var self = $module($base, '"+name+"');"),$send(this,"in_scope",[],(function $$1(){var $writer,self=null==$$1.$$s?this:$$1.$$s;return $writer=[name],$send(self.$scope(),"name=",$to_a($writer)),$rb_minus($writer.length,1),self.$compile_body()}),{$$arity:0,$$s:this}),$truthy(this.$await_encountered())?(await_begin="(await ",await_end=")",async="async ",$writer=[!0],$send(this.$parent(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):(await_begin=($a=["","",""])[0],await_end=$a[1],async=$a[2]),this.$unshift(await_begin+"("+async+"function($base"+($truthy(this.define_nesting)?", $parent_nesting":nil)+") {"),this.$line("})(",base,($truthy(this.define_nesting)?$rb_plus(", ",this.$scope().$nesting()):nil)+")"+await_end))}),0),self.$private(),$def(self,"$name_and_base",(function(){var $a,$b,name,base=nil;return $b=this.$cid().$children(),base=null==($a=$to_ary($b))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],$truthy(base["$nil?"]())?[name,this.$scope().$nesting()+"[0]"]:[name,this.$expr(base)]}),0),$def(self,"$compile_body",(function(){var body_code;return body_code=this.$stmt(this.$compiler().$returns(this.$body())),this.$empty_line(),$truthy(this.define_nesting)&&this.$add_temp("$nesting = [self].concat($parent_nesting)"),$truthy(this.define_relative_access)&&this.$add_temp("$$ = Opal.$r($nesting)"),this.$line(this.$scope().$to_vars()),this.$line(body_code)}),0)}($nesting[0],$$("ScopeNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/class"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_ary=Opal.to_ary,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$def=Opal.def;return Opal.add_stubs("require,handle,children,name_and_base,helper,nil?,body,stmt?,unshift,super_code,line,in_scope,name=,scope,-,compile_body,await_encountered,await_encountered=,parent,+,nesting,sup,expr"),self.$require("opal/nodes/module"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ClassNode");return self.$$prototype.define_nesting=nil,self.$handle("class"),self.$children("cid","sup","body"),$def(self,"$compile",(function(){var $a,$b,name,base,await_begin=nil,await_end=nil,async=nil,$writer=nil;return $b=this.$name_and_base(),$a=$to_ary($b),name=null==$a[0]?nil:$a[0],base=null==$a[1]?nil:$a[1],this.$helper("klass"),$truthy(this.$body()["$nil?"]())?$truthy(this["$stmt?"]())?this.$unshift("$klass(",base,", ",this.$super_code(),", '"+name+"')"):this.$unshift("($klass(",base,", ",this.$super_code(),", '"+name+"'), nil)"):(this.$line(" var self = $klass($base, $super, '"+name+"');"),$send(this,"in_scope",[],(function $$1(){var $writer,self=null==$$1.$$s?this:$$1.$$s;return $writer=[name],$send(self.$scope(),"name=",$to_a($writer)),$rb_minus($writer.length,1),self.$compile_body()}),{$$arity:0,$$s:this}),$truthy(this.$await_encountered())?(await_begin="(await ",await_end=")",async="async ",$writer=[!0],$send(this.$parent(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):(await_begin=($a=["","",""])[0],await_end=$a[1],async=$a[2]),this.$unshift(await_begin+"("+async+"function($base, $super"+($truthy(this.define_nesting)?", $parent_nesting":nil)+") {"),this.$line("})(",base,", ",this.$super_code(),($truthy(this.define_nesting)?$rb_plus(", ",this.$scope().$nesting()):nil)+")"+await_end))}),0),$def(self,"$super_code",(function(){return $truthy(this.$sup())?this.$expr(this.$sup()):"null"}),0)}($nesting[0],$$("ModuleNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/singleton_class"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("require,handle,children,push,in_scope,stmt,returns,compiler,body,add_temp,line,to_vars,scope,recv,object,nesting"),self.$require("opal/nodes/scope"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"SingletonClassNode");return self.$handle("sclass"),self.$children("object","body"),$def(self,"$compile",(function(){return this.$push("(function(self, $parent_nesting) {"),$send(this,"in_scope",[],(function $$1(){var body_stmt,self=null==$$1.$$s?this:$$1.$$s;return null==self.define_nesting&&(self.define_nesting=nil),null==self.define_relative_access&&(self.define_relative_access=nil),body_stmt=self.$stmt(self.$compiler().$returns(self.$body())),$truthy(self.define_nesting)&&self.$add_temp("$nesting = [self].concat($parent_nesting)"),$truthy(self.define_relative_access)&&self.$add_temp("$$ = Opal.$r($nesting)"),self.$line(self.$scope().$to_vars()),self.$line(body_stmt)}),{$$arity:0,$$s:this}),this.$line("})(Opal.get_singleton_class(",this.$recv(this.$object()),"), "+this.$scope().$nesting()+")")}),0)}($nesting[0],$$("ScopeNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_arg,scope,name,push,to_s"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArgNode");return self.$handle("arg"),self.$children("name"),$def(self,"$compile",(function(){return this.$scope().$add_arg(this.$name()),this.$push(this.$name().$to_s())}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/arity_check"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$def=Opal.def,$send=Opal.send,$rb_minus=Opal.rb_minus,$truthy=Opal.truthy,$not=Opal.not,$rb_lt=Opal.rb_lt,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt;return Opal.add_stubs("require,handle,children,new,args_node,args,optargs,restarg,postargs,kwargs,kwoptargs,kwrestarg,kwnilarg,arity,arity=,scope,-,arity_check?,compiler,empty?,arity_checks,helper,inspect,to_s,mid,line,push,join,compact,size,all_args,!,-@,<,+,>,<<,has_only_optional_kwargs?,any?,negative_arity,positive_arity,select,include?,type,has_required_kwargs?,all?,==,def?,class_scope?,top?,parent,class?,name,module?,identity"),self.$require("opal/nodes/base"),self.$require("opal/rewriters/arguments"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ArityCheckNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.kwargs=$proto.kwoptargs=$proto.kwrestarg=$proto.all_args=$proto.args=$proto.optargs=$proto.restarg=$proto.postargs=$proto.arity_checks=nil,self.$handle("arity_check"),self.$children("args_node"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this,arguments$=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),arguments$=$$$($$("Rewriters"),"Arguments").$new(self.$args_node().$children()),self.args=arguments$.$args(),self.optargs=arguments$.$optargs(),self.restarg=arguments$.$restarg(),self.postargs=arguments$.$postargs(),self.kwargs=arguments$.$kwargs(),self.kwoptargs=arguments$.$kwoptargs(),self.kwrestarg=arguments$.$kwrestarg(),self.kwnilarg=arguments$.$kwnilarg()}),-1),$def(self,"$compile",(function(){var $writer,meth=nil;return $writer=[this.$arity()],$send(this.$scope(),"arity=",$to_a($writer)),$rb_minus($writer.length,1),$truthy(this.$compiler()["$arity_check?"]())?$truthy(this.$arity_checks()["$empty?"]())?nil:(this.$helper("ac"),meth=this.$scope().$mid().$to_s().$inspect(),this.$line("var $arity = arguments.length;"),this.$push(" if ("+this.$arity_checks().$join(" || ")+") { $ac($arity, "+this.$arity()+", this, "+meth+"); }")):nil}),0),$def(self,"$kwargs",(function(){return[].concat($to_a(this.kwargs)).concat($to_a(this.kwoptargs)).concat([this.kwrestarg]).$compact()}),0),$def(self,"$all_args",(function(){var $ret_or_1;return this.all_args=$truthy($ret_or_1=this.all_args)?$ret_or_1:[].concat($to_a(this.args)).concat($to_a(this.optargs)).concat([this.restarg]).concat($to_a(this.postargs)).concat($to_a(this.$kwargs())).$compact()}),0),$def(self,"$arity_checks",(function(){var $a,arity=nil,min_arity=nil,max_arity=nil;return $truthy(null!=($a=this.arity_checks)&&$a!==nil?"instance-variable":nil)||(arity=this.$all_args().$size(),arity=$rb_minus(arity,this.optargs.$size()),$truthy(this.restarg)&&(arity=$rb_minus(arity,1)),arity=$rb_minus(arity,this.$kwargs().$size()),($not(this.optargs["$empty?"]())||$not(this.$kwargs()["$empty?"]())||$truthy(this.restarg))&&(arity=$rb_minus(arity["$-@"](),1)),this.arity_checks=[],$truthy($rb_lt(arity,0))?(min_arity=$rb_plus(arity,1)["$-@"](),max_arity=this.$all_args().$size(),$truthy($rb_gt(min_arity,0))&&this.arity_checks["$<<"]("$arity < "+min_arity),$truthy(this.restarg)||this.arity_checks["$<<"]("$arity > "+max_arity)):this.arity_checks["$<<"]("$arity !== "+arity)),this.arity_checks}),0),$def(self,"$arity",(function(){return $truthy(this.restarg)||$truthy(this.optargs["$any?"]())||$truthy(this["$has_only_optional_kwargs?"]())?this.$negative_arity():this.$positive_arity()}),0),$def(self,"$negative_arity",(function(){var result=nil;return result=$send(this.$all_args(),"select",[],(function(arg){return null==arg&&(arg=nil),["arg","mlhs"]["$include?"](arg.$type())}),1).$size(),$truthy(this["$has_required_kwargs?"]())&&(result=$rb_plus(result,1)),result=$rb_minus(result["$-@"](),1)}),0),$def(self,"$positive_arity",(function(){var result=nil;return result=this.$all_args().$size(),result=$rb_minus(result,this.$kwargs().$size()),$truthy(this.$kwargs()["$any?"]())&&(result=$rb_plus(result,1)),result}),0),$def(self,"$has_only_optional_kwargs?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$kwargs()["$any?"]())?$send(this.$kwargs(),"all?",[],(function(arg){return null==arg&&(arg=nil),["kwoptarg","kwrestarg"]["$include?"](arg.$type())}),1):$ret_or_1}),0),$def(self,"$has_required_kwargs?",(function(){return $send(this.$kwargs(),"any?",[],(function(arg){return null==arg&&(arg=nil),arg.$type()["$=="]("kwarg")}),1)}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"IterArityCheckNode");return self.$handle("iter_arity_check"),$def(self,"$compile",(function(){var $writer,parent_scope=nil,$ret_or_1=nil,$ret_or_2=nil,context=nil,identity=nil;if($writer=[this.$arity()],$send(this.$scope(),"arity=",$to_a($writer)),$rb_minus($writer.length,1),!$truthy(this.$compiler()["$arity_check?"]()))return nil;if($truthy(this.$arity_checks()["$empty?"]()))return nil;for(parent_scope=this.$scope();!$truthy($truthy($ret_or_1=$truthy($ret_or_2=parent_scope["$def?"]())?$ret_or_2:parent_scope["$class_scope?"]())?$ret_or_1:parent_scope["$top?"]());)parent_scope=parent_scope.$parent();return context=$truthy(parent_scope["$top?"]())?"'
    '":$truthy(parent_scope["$def?"]())?"'"+parent_scope.$mid()+"'":$truthy(parent_scope["$class?"]())?"''":$truthy(parent_scope["$module?"]())?"''":nil,identity=this.$scope().$identity(),this.$line("if ("+identity+".$$is_lambda || "+identity+".$$define_meth) {"),this.$line(" var $arity = arguments.length;"),this.$line(" if ("+this.$arity_checks().$join(" || ")+") { Opal.block_ac($arity, "+this.$arity()+", "+context+"); }"),this.$line("}")}),0)}($nesting[0],$$("ArityCheckNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/ensure_kwargs_are_kwargs"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,helper,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"EnsureKwargsAreKwargs");return self.$handle("ensure_kwargs_are_kwargs"),$def(self,"$compile",(function(){return this.$helper("hash2"),this.$line("if ($kwargs == null) {"),this.$line(" $kwargs = $hash2([], {});"),this.$line("} else if (!$kwargs.$$is_hash) {"),this.$line(" throw Opal.ArgumentError.$new('expected kwargs');"),this.$line("}")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_block_arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,uses_block!,scope,add_arg,name,prepare_block"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractBlockarg");return self.$handle("extract_blockarg"),self.$children("name"),$def(self,"$compile",(function(){return this.$scope()["$uses_block!"](),this.$scope().$add_arg(this.$name()),this.$scope().$prepare_block(this.$name())}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,[],meta,<<,used_kwargs,scope,add_temp,lvar_name,line,inspect,to_s"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwarg");return self.$$prototype.sexp=nil,self.$handle("extract_kwarg"),self.$children("lvar_name"),$def(self,"$compile",(function(){var key_name=nil;return key_name=this.sexp.$meta()["$[]"]("arg_name"),this.$scope().$used_kwargs()["$<<"](key_name),this.$add_temp(this.$lvar_name()),this.$line("if (!Opal.hasOwnProperty.call($kwargs.$$smap, '"+key_name+"')) {"),this.$line(" throw Opal.ArgumentError.$new('missing keyword: "+key_name+"');"),this.$line("}"),this.$line(this.$lvar_name()+" = $kwargs.$$smap["+key_name.$to_s().$inspect()+"];")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwargs"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,add_temp,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwargs");return self.$handle("extract_kwargs"),$def(self,"$compile",(function(){return this.$add_temp("$kwargs"),this.$line("$kwargs = Opal.extract_kwargs($post_args)")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwoptarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,[],meta,<<,used_kwargs,scope,add_temp,lvar_name,line,inspect,to_s,==,default_value,expr"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwoptarg");return self.$$prototype.sexp=nil,self.$handle("extract_kwoptarg"),self.$children("lvar_name","default_value"),$def(self,"$compile",(function(){var key_name=nil;return key_name=this.sexp.$meta()["$[]"]("arg_name"),this.$scope().$used_kwargs()["$<<"](key_name),this.$add_temp(this.$lvar_name()),this.$line(this.$lvar_name()+" = $kwargs.$$smap["+key_name.$to_s().$inspect()+"];"),$eqeq(this.$default_value().$children()["$[]"](1),"undefined")?nil:this.$line("if ("+this.$lvar_name()+" == null) "+this.$lvar_name()+" = ",this.$expr(this.$default_value()))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwrestarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("require,handle,children,name,add_temp,line,used_kwargs,map,scope,join"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwrestarg");return self.$handle("extract_kwrestarg"),self.$children("name"),$def(self,"$compile",(function(){var name,$ret_or_1;return name=$truthy($ret_or_1=this.$name())?$ret_or_1:"$kw_rest_arg",this.$add_temp(name),this.$line(name+" = Opal.kwrestargs($kwargs, "+this.$used_kwargs()+");")}),0),$def(self,"$used_kwargs",(function(){return"{"+$send(this.$scope().$used_kwargs(),"map",[],(function(arg_name){return null==arg_name&&(arg_name=nil),"'"+arg_name+"': true"}),1).$join(",")+"}"}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_optarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,==,[],default_value,line,name,expr"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractOptargNode");return self.$handle("extract_optarg"),self.$children("name","default_value"),$def(self,"$compile",(function(){return $eqeq(this.$default_value().$children()["$[]"](1),"undefined")?nil:this.$line("if ("+this.$name()+" == null) "+this.$name()+" = ",this.$expr(this.$default_value()),";")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_post_arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_temp,name,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractPostArg");return self.$handle("extract_post_arg"),self.$children("name"),$def(self,"$compile",(function(){return this.$add_temp(this.$name()),this.$line(this.$name()+" = $post_args.shift();"),this.$line("if ("+this.$name()+" == null) "+this.$name()+" = nil;")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_post_optarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_temp,name,line,args_to_keep,==,[],default_value,expr"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractPostOptarg");return self.$handle("extract_post_optarg"),self.$children("name","default_value","args_to_keep"),$def(self,"$compile",(function(){return this.$add_temp(this.$name()),this.$line("if ($post_args.length > "+this.$args_to_keep()+") "+this.$name()+" = $post_args.shift();"),$eqeq(this.$default_value().$children()["$[]"](1),"undefined")?nil:this.$line("if ("+this.$name()+" == null) "+this.$name()+" = ",this.$expr(this.$default_value()),";")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_restarg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,name,add_temp,==,args_to_keep,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractRestarg");return self.$handle("extract_restarg"),self.$children("name","args_to_keep"),$def(self,"$compile",(function(){var name,$ret_or_1;return name=$truthy($ret_or_1=this.$name())?$ret_or_1:"$rest_arg",this.$add_temp(name),$eqeq(this.$args_to_keep(),0)?this.$line(name+" = $post_args;"):this.$line(name+" = $post_args.splice(0, $post_args.length - "+this.$args_to_keep()+");")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/fake_arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,next_temp,scope,add_arg,push"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"FakeArgNode");return self.$handle("fake_arg"),$def(self,"$compile",(function(){var name;return name=this.$scope().$next_temp(),this.$scope().$add_arg(name),this.$push(name)}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/initialize_iterarg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,line,name"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"InitializeIterarg");return self.$handle("initialize_iter_arg"),self.$children("name"),$def(self,"$compile",(function(){return this.$line("if ("+this.$name()+" == null) "+this.$name()+" = nil;")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/initialize_shadowarg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,<<,locals,scope,name,add_arg,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"InitializeShadowarg");return self.$handle("initialize_shadowarg"),self.$children("name"),$def(self,"$compile",(function(){return this.$scope().$locals()["$<<"](this.$name()),this.$scope().$add_arg(this.$name()),this.$line(this.$name()+" = nil;")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/parameters"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a,$truthy=Opal.truthy,$eqeq=Opal.eqeq;return Opal.add_stubs("children,map,public_send,type,join,compact,=="),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,null,"Parameters");return self.$$prototype.args=nil,$def(self,"$initialize",(function(args){return this.args=args.$children()}),1),$def(self,"$to_code",(function(){return"["+$send(this.args,"map",[],(function $$1(arg){return null==arg&&(arg=nil),$send(null==$$1.$$s?this:$$1.$$s,"public_send",["on_"+arg.$type()].concat($to_a(arg)))}),{$$arity:1,$$s:this}).$compact().$join(", ")+"]"}),0),$def(self,"$on_arg",(function(arg_name){return"['req', '"+arg_name+"']"}),1),$def(self,"$on_mlhs",(function($a){return Opal.slice.call(arguments),"['req']"}),-1),$def(self,"$on_optarg",(function(arg_name,_default_value){return"['opt', '"+arg_name+"']"}),2),$def(self,"$on_restarg",(function(arg_name){return null==arg_name&&(arg_name=nil),$truthy(arg_name)?($eqeq(arg_name,"fwd_rest_arg")&&(arg_name="*"),"['rest', '"+arg_name+"']"):"['rest']"}),-1),$def(self,"$on_kwarg",(function(arg_name){return"['keyreq', '"+arg_name+"']"}),1),$def(self,"$on_kwoptarg",(function(arg_name,_default_value){return"['key', '"+arg_name+"']"}),2),$def(self,"$on_kwrestarg",(function(arg_name){return null==arg_name&&(arg_name=nil),$truthy(arg_name)?"['keyrest', '"+arg_name+"']":"['keyrest']"}),-1),$def(self,"$on_blockarg",(function(arg_name){return $eqeq(arg_name,"fwd_block_arg")&&(arg_name="&"),"['block', '"+arg_name+"']"}),1),$def(self,"$on_kwnilarg",(function(){return"['nokey']"}),0),$def(self,"$on_shadowarg",(function(_arg_name){return nil}),1)}([$module($base,"Args")].concat($parent_nesting)[0])}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/prepare_post_args"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_temp,==,offset,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"PreparePostArgs");return self.$handle("prepare_post_args"),self.$children("offset"),$def(self,"$compile",(function(){return this.$add_temp("$post_args"),$eqeq(this.$offset(),0)?this.$line("$post_args = Opal.slice.call(arguments)"):this.$line("$post_args = Opal.slice.call(arguments, "+this.$offset()+")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$send=Opal.send,$truthy=Opal.truthy,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt,$neqeq=Opal.neqeq,$def=Opal.def;return Opal.add_stubs("require,handle,each_with_index,children,multiple_underscore?,[],[]=,-,+,>,s,type,!=,push,process,==,count,start_with?,to_s,first"),self.$require("opal/nodes/base"),self.$require("opal/nodes/args/arg"),self.$require("opal/nodes/args/arity_check"),self.$require("opal/nodes/args/ensure_kwargs_are_kwargs"),self.$require("opal/nodes/args/extract_block_arg"),self.$require("opal/nodes/args/extract_kwarg"),self.$require("opal/nodes/args/extract_kwargs"),self.$require("opal/nodes/args/extract_kwoptarg"),self.$require("opal/nodes/args/extract_kwrestarg"),self.$require("opal/nodes/args/extract_optarg"),self.$require("opal/nodes/args/extract_post_arg"),self.$require("opal/nodes/args/extract_post_optarg"),self.$require("opal/nodes/args/extract_restarg"),self.$require("opal/nodes/args/fake_arg"),self.$require("opal/nodes/args/initialize_iterarg"),self.$require("opal/nodes/args/initialize_shadowarg"),self.$require("opal/nodes/args/parameters"),self.$require("opal/nodes/args/prepare_post_args"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArgsNode");return self.$handle("args"),$def(self,"$compile",(function(){var same_arg_counter=nil;return same_arg_counter=$hash2([],{}),$send(this.$children(),"each_with_index",[],(function $$1(arg,idx){var self=null==$$1.$$s?this:$$1.$$s,$writer=nil;return null==arg&&(arg=nil),null==idx&&(idx=nil),$truthy(self["$multiple_underscore?"](arg))&&($truthy(same_arg_counter["$[]"](arg))||($send(same_arg_counter,"[]=",$to_a($writer=[arg,0])),$writer[$rb_minus($writer.length,1)]),$writer=[arg,$rb_plus(same_arg_counter["$[]"](arg),1)],$send(same_arg_counter,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy($rb_gt(same_arg_counter["$[]"](arg),1))&&(arg=self.$s(arg.$type(),arg.$children()["$[]"](0)+"_$"+same_arg_counter["$[]"](arg)))),$neqeq(idx,0)&&self.$push(", "),self.$push(self.$process(arg))}),{$$arity:2,$$s:this})}),0),$def(self,"$multiple_underscore?",(function(arg){var $ret_or_1,$ret_or_2,$ret_or_3;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=arg.$type()["$=="]("arg"))?arg.$children().$count()["$=="](1):$ret_or_3)?arg.$children().$first().$to_s()["$start_with?"]("_"):$ret_or_2)?$rb_gt(this.$children().$count(arg),1):$ret_or_1}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/node_with_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("require,attr_reader,attr_accessor,[],meta,s,original_args,push,process,arity_check_node,uses_block?,scope,prepare_block,to_code,new"),self.$require("opal/nodes/scope"),self.$require("opal/nodes/args/parameters"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"NodeWithArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.sexp=nil,self.$attr_reader("used_kwargs"),self.$attr_accessor("arity"),self.$attr_reader("original_args"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.original_args=self.sexp.$meta()["$[]"]("original_args"),self.used_kwargs=[],self.arity=0}),-1),$def(self,"$arity_check_node",(function(){return this.$s("arity_check",this.$original_args())}),0),$def(self,"$compile_arity_check",(function(){return this.$push(this.$process(this.$arity_check_node()))}),0),$def(self,"$compile_block_arg",(function(){return $truthy(this.$scope()["$uses_block?"]())?this.$scope().$prepare_block():nil}),0),$def(self,"$parameters_code",(function(){return $$$($$("Args"),"Parameters").$new(this.$original_args()).$to_code()}),0)}($nesting[0],$$("ScopeNode"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/iter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$eqeq=Opal.eqeq,$rb_gt=Opal.rb_gt,$def=Opal.def;return Opal.add_stubs("require,handle,children,lambda_definition?,scope,is_lambda!,in_scope,identify!,process,inline_args,compile_arity_check,stmt,returned_body,add_temp,to_vars,line,catch_return,unshift,push,await_encountered,<<,arity,self,contains_break?,arity_check?,compiler,parameters_code,has_top_level_mlhs_arg?,has_trailing_comma_in_args?,==,length,>,join,nesting,relative_access,block_arg,prepare_block,each,args,first,updated,body,returns,s,any?,original_args,type,expression,loc,source,match,new,found_break?"),self.$require("opal/nodes/node_with_args"),self.$require("opal/rewriters/break_finder"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"IterNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.define_self=$proto.define_nesting=$proto.define_relative_access=$proto.sexp=nil,self.$handle("iter"),self.$children("inline_args","body"),$def(self,"$compile",(function(){var inline_params=nil,to_vars=nil,identity=nil,body_code=nil,blockopts=nil;return $truthy(this.$scope()["$lambda_definition?"]())&&this["$is_lambda!"](),inline_params=nil,to_vars=identity=body_code=nil,$send(this,"in_scope",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return null==self.define_self&&(self.define_self=nil),identity=self.$scope()["$identify!"](),inline_params=self.$process(self.$inline_args()),self.$compile_arity_check(),body_code=self.$stmt(self.$returned_body()),$truthy(self.define_self)&&self.$add_temp("self = "+identity+".$$s == null ? this : "+identity+".$$s"),to_vars=self.$scope().$to_vars(),self.$line(body_code),$truthy(self.$scope().$catch_return())?(self.$unshift("try {\n"),self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }"),self.$push(" throw $returner; }")):nil}),{$$arity:0,$$s:this}),this.$unshift(to_vars),$truthy(this.$await_encountered())?this.$unshift("async function "+identity+"(",inline_params,"){"):this.$unshift("function "+identity+"(",inline_params,"){"),this.$push("}"),(blockopts=[])["$<<"]("$$arity: "+this.$arity()),$truthy(this.define_self)&&blockopts["$<<"]("$$s: "+this.$scope().$self()),$truthy(this["$contains_break?"]())&&blockopts["$<<"]("$$brk: $brk"),$truthy(this.$compiler()["$arity_check?"]())&&blockopts["$<<"]("$$parameters: "+this.$parameters_code()),$truthy(this["$has_top_level_mlhs_arg?"]())&&blockopts["$<<"]("$$has_top_level_mlhs_arg: true"),$truthy(this["$has_trailing_comma_in_args?"]())&&blockopts["$<<"]("$$has_trailing_comma_in_args: true"),$eqeq(blockopts.$length(),1)?this.$push(", "+this.$arity()):$truthy($rb_gt(blockopts.$length(),1))&&this.$push(", {",blockopts.$join(", "),"}"),$truthy(this.define_nesting)&&this.$scope().$nesting(),$truthy(this.define_relative_access)?this.$scope().$relative_access():nil}),0),$def(self,"$compile_block_arg",(function(){return $truthy(this.$block_arg())?this.$scope().$prepare_block():nil}),0),$def(self,"$extract_underscore_args",(function(){var valid_args=nil,caught_blank_argument=nil;return valid_args=[],caught_blank_argument=!1,$send(this.$args().$children(),"each",[],(function(arg){var arg_name;return null==arg&&(arg=nil),arg_name=arg.$children().$first(),$eqeq(arg_name,"_")?$truthy(caught_blank_argument)?nil:(caught_blank_argument=!0,valid_args["$<<"](arg)):valid_args["$<<"](arg)}),1),this.sexp=this.sexp.$updated(nil,[this.$args().$updated(nil,valid_args),this.$body()])}),0),$def(self,"$returned_body",(function(){var $ret_or_1;return this.$compiler().$returns($truthy($ret_or_1=this.$body())?$ret_or_1:this.$s("nil"))}),0),$def(self,"$has_top_level_mlhs_arg?",(function(){return $send(this.$original_args().$children(),"any?",[],(function(arg){return null==arg&&(arg=nil),arg.$type()["$=="]("mlhs")}),1)}),0),$def(self,"$has_trailing_comma_in_args?",(function(){return $truthy(this.$original_args().$loc())&&$truthy(this.$original_args().$loc().$expression())?this.$original_args().$loc().$expression().$source().$match(/,\s*\|/):nil}),0),$def(self,"$arity_check_node",(function(){return this.$s("iter_arity_check",this.$original_args())}),0),$def(self,"$contains_break?",(function(){var finder=nil;return(finder=$$$($$$($$("Opal"),"Rewriters"),"BreakFinder").$new()).$process(this.sexp),finder["$found_break?"]()}),0)}($nesting[0],$$("NodeWithArgs"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/def"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$def=Opal.def,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,handle,children,in_scope,mid,mid=,scope,-,==,type,defs=,identify!,identity,block_name=,process,inline_args,stmt,returns,compiler,stmts,compile_block_arg,add_temp,compile_arity_check,unshift,current_indent,to_vars,line,catch_return,push,await_encountered,<<,arity,arity_check?,parameters_code,parse_comments?,comments_code,enable_source_location?,source_location,length,>,join,wrap_with_definition,nesting,relative_access,helper,wrap,self,expr?,+,map,comments,inspect,text"),self.$require("opal/nodes/node_with_args"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DefNode"),$proto=self.$$prototype;return $proto.define_nesting=$proto.define_relative_access=nil,self.$handle("def"),self.$children("mid","inline_args","stmts"),$def(self,"$compile",(function(){var inline_params=nil,scope_name=nil,blockopts=nil;return inline_params=nil,scope_name=nil,$send(this,"in_scope",[],(function $$1(){var stmt_code,self=null==$$1.$$s?this:$$1.$$s,$writer=nil;return null==self.sexp&&(self.sexp=nil),null==self.define_self&&(self.define_self=nil),$writer=[self.$mid()],$send(self.$scope(),"mid=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$eqeq(self.sexp.$type(),"defs")&&($writer=[!0],$send(self.$scope(),"defs=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),self.$scope()["$identify!"](),scope_name=self.$scope().$identity(),$writer=["$yield"],$send(self.$scope(),"block_name=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],inline_params=self.$process(self.$inline_args()),stmt_code=self.$stmt(self.$compiler().$returns(self.$stmts())),self.$compile_block_arg(),$truthy(self.define_self)&&self.$add_temp("self = this"),self.$compile_arity_check(),self.$unshift("\n"+self.$current_indent(),self.$scope().$to_vars()),self.$line(stmt_code),$truthy(self.$scope().$catch_return())?(self.$unshift("try {\n"),self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }"),self.$push(" throw $returner; }")):nil}),{$$arity:0,$$s:this}),this.$unshift(") {"),this.$unshift(inline_params),this.$unshift("function "+scope_name+"("),$truthy(this.$await_encountered())&&this.$unshift("async "),this.$line("}"),(blockopts=[])["$<<"]("$$arity: "+this.$arity()),$truthy(this.$compiler()["$arity_check?"]())&&blockopts["$<<"]("$$parameters: "+this.$parameters_code()),$truthy(this.$compiler()["$parse_comments?"]())&&blockopts["$<<"]("$$comments: "+this.$comments_code()),$truthy(this.$compiler()["$enable_source_location?"]())&&blockopts["$<<"]("$$source_location: "+this.$source_location()),$eqeq(blockopts.$length(),1)?this.$push(", "+this.$arity()):$truthy($rb_gt(blockopts.$length(),1))&&this.$push(", {",blockopts.$join(", "),"}"),this.$wrap_with_definition(),$truthy(this.define_nesting)&&this.$scope().$nesting(),$truthy(this.define_relative_access)?this.$scope().$relative_access():nil}),0),$def(self,"$wrap_with_definition",(function(){return this.$helper("def"),this.$wrap("$def("+this.$scope().$self()+", '$"+this.$mid()+"', ",")"),$truthy(this["$expr?"]())?nil:this.$unshift("\n"+this.$current_indent())}),0),$def(self,"$comments_code",(function(){return $rb_plus($rb_plus("[",$send(this.$comments(),"map",[],(function(comment){return null==comment&&(comment=nil),comment.$text().$inspect()}),1).$join(", ")),"]")}),0)}($nesting[0],$$("NodeWithArgs"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/defs"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,helper,unshift,expr,recvr,mid,push"),self.$require("opal/nodes/def"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DefsNode");return self.$handle("defs"),self.$children("recvr","mid","inline_args","stmts"),$def(self,"$wrap_with_definition",(function(){return this.$helper("defs"),this.$unshift("$defs(",this.$expr(this.$recvr()),", '$"+this.$mid()+"', "),this.$push(")")}),0)}($nesting[0],$$("DefNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/if"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def,$not=Opal.not,$send=Opal.send,$eqeqeq=Opal.eqeqeq;return Opal.add_stubs("require,handle,children,should_compile_as_simple_expression?,==,true_body,s,compile_with_binary_or,false_body,compile_with_binary_and,compile_with_ternary,compile_with_if,truthy,falsy,!,push,js_truthy,test,indent,line,stmt,type,expects_expression?,await_encountered,scope,wrap,returnify,returns,compiler,expr?,recv?,simple?,expr,[],meta,sexp,===,single_line?,strip_empty_children,all?,helper,new_temp,top_scope,excl,from,to"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"IfNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("if"),self.$children("test","true_body","false_body"),$def(self,"$compile",(function(){return $truthy(this["$should_compile_as_simple_expression?"]())?$eqeq(this.$true_body(),this.$s("true"))?this.$compile_with_binary_or():$eqeq(this.$false_body(),this.$s("false"))?this.$compile_with_binary_and():this.$compile_with_ternary():this.$compile_with_if()}),0),$def(self,"$compile_with_if",(function(){var $a,truthy=nil,falsy=nil;return truthy=this.$truthy(),falsy=this.$falsy(),$truthy(falsy)&&$not(truthy)?(this.$push("if (!",this.$js_truthy(this.$test()),") {"),falsy=($a=[truthy,falsy])[0],truthy=$a[1]):this.$push("if (",this.$js_truthy(this.$test()),") {"),$truthy(truthy)&&$send(this,"indent",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return self.$line(self.$stmt(truthy))}),{$$arity:0,$$s:this}),$truthy(falsy)?$eqeq(falsy.$type(),"if")?this.$line("} else ",this.$stmt(falsy)):(this.$line("} else {"),$send(this,"indent",[],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;return self.$line(self.$stmt(falsy))}),{$$arity:0,$$s:this}),this.$line("}")):(this.$line("}"),$truthy(this["$expects_expression?"]())&&this.$line("return nil;")),$truthy(this["$expects_expression?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() {","})())"):this.$wrap("(function() {","})()"):nil}),0),$def(self,"$truthy",(function(){return this.$returnify(this.$true_body())}),0),$def(self,"$falsy",(function(){return this.$returnify(this.$false_body())}),0),$def(self,"$returnify",(function(body){return $truthy(this["$expects_expression?"]())&&$truthy(body)?this.$compiler().$returns(body):body}),1),$def(self,"$expects_expression?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$expr?"]())?$ret_or_1:this["$recv?"]()}),0),$def(self,"$should_compile_as_simple_expression?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this["$expects_expression?"]())?this["$simple?"](this.$true_body()):$ret_or_2)?this["$simple?"](this.$false_body()):$ret_or_1}),0),$def(self,"$compile_with_ternary",(function(){var truthy,falsy=nil,$ret_or_1=nil;return truthy=this.$true_body(),falsy=this.$false_body(),this.$push("("),this.$push(this.$js_truthy(this.$test())," ? "),this.$push("(",this.$expr($truthy($ret_or_1=truthy)?$ret_or_1:this.$s("nil")),") : "),$not(falsy)||$eqeq(falsy.$type(),"if")?this.$push(this.$expr($truthy($ret_or_1=falsy)?$ret_or_1:this.$s("nil"))):this.$push("(",this.$expr($truthy($ret_or_1=falsy)?$ret_or_1:this.$s("nil")),")"),this.$push(")")}),0),$def(self,"$compile_with_binary_and",(function(){var truthy=nil,$ret_or_1=nil;return truthy=$truthy(this.$sexp().$meta()["$[]"]("do_js_truthy_on_true_body"))?this.$js_truthy($truthy($ret_or_1=this.$true_body())?$ret_or_1:this.$s("nil")):this.$expr($truthy($ret_or_1=this.$true_body())?$ret_or_1:this.$s("nil")),this.$push("("),this.$push(this.$js_truthy(this.$test())," && "),this.$push("(",truthy,")"),this.$push(")")}),0),$def(self,"$compile_with_binary_or",(function(){var falsy=nil,$ret_or_1=nil;return falsy=$truthy(this.$sexp().$meta()["$[]"]("do_js_truthy_on_false_body"))?this.$js_truthy($truthy($ret_or_1=this.$false_body())?$ret_or_1:this.$s("nil")):this.$expr($truthy($ret_or_1=this.$false_body())?$ret_or_1:this.$s("nil")),this.$push("("),this.$push(this.$js_truthy(this.$test())," || "),this.$push("(",falsy,")"),this.$push(")")}),0),$def(self,"$simple?",(function(body){var $ret_or_2=nil;return!$eqeqeq($$$($$("AST"),"Node"),body)||!($eqeqeq("return",$ret_or_2=body.$type())||$eqeqeq("js_return",$ret_or_2)||$eqeqeq("break",$ret_or_2)||$eqeqeq("next",$ret_or_2)||$eqeqeq("redo",$ret_or_2)||$eqeqeq("retry",$ret_or_2))&&($eqeqeq("xstr",$ret_or_2)?$$("XStringNode")["$single_line?"]($$("XStringNode").$strip_empty_children(body.$children())):$send(body.$children(),"all?",[],(function $$6(i){return null==i&&(i=nil),(null==$$6.$$s?this:$$6.$$s)["$simple?"](i)}),{$$arity:1,$$s:this}))}),1)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"IFlipFlop");self.$handle("iflipflop"),self.$children("from","to"),$def(self,"$excl",(function(){return""}),0),$def(self,"$compile",(function(){var fun_name,ff;return this.$helper("truthy"),ff=(fun_name=this.$top_scope().$new_temp())+".$$ff",this.$push("(typeof "+fun_name+" === 'undefined' ? ("+fun_name+" = function(from, to){"),this.$push(" if (typeof "+ff+" === 'undefined') "+ff+" = false;"),this.$push(" var retval = "+ff+";"),this.$push(" if (!"+ff+") {"),this.$push(" "+ff+" = retval = $truthy(from());"),this.$push(" }"),this.$push(" "+this.$excl()+"if ("+ff+") {"),this.$push(" if ($truthy(to())) "+ff+" = false;"),this.$push(" }"),this.$push(" return retval;"),this.$push("}) : "+fun_name+")("),this.$push(" function() { ",this.$stmt(this.$compiler().$returns(this.$from()))," },"),this.$push(" function() { ",this.$stmt(this.$compiler().$returns(this.$to()))," }"),this.$push(")")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"EFlipFlop");return self.$handle("eflipflop"),$def(self,"$excl",(function(){return"else "}),0)}($nesting[0],$$("IFlipFlop"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/logic"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt,$not=Opal.not;return Opal.add_stubs("require,handle,in_while?,push,iter?,scope,expr_or_nil,value,error,===,size,children,s,first,compile_while,compile_iter,[],while_loop,stmt?,line,break_val,nil?,expr,[]=,-,helper,identity,==,empty_splat?,recv,>,find_parent_def,!,lambda?,def?,expr?,return_in_iter?,return_expr_in_def?,scope_to_catch_return,catch_return=,return_val,to_s"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"NextNode");self.$handle("next"),$def(self,"$compile",(function(){return $truthy(this["$in_while?"]())?this.$push("continue;"):$truthy(this.$scope()["$iter?"]())?this.$push("return ",this.$expr_or_nil(this.$value()),";"):this.$error("Invalid next")}),0),$def(self,"$value",(function(){var $ret_or_1;return $eqeqeq(0,$ret_or_1=this.$children().$size())?this.$s("nil"):$eqeqeq(1,$ret_or_1)?this.$children().$first():$send(this,"s",["array"].concat($to_a(this.$children())))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"BreakNode");self.$handle("break"),self.$children("value"),$def(self,"$compile",(function(){return $truthy(this["$in_while?"]())?this.$compile_while():$truthy(this.$scope()["$iter?"]())?this.$compile_iter():this.$error("void value expression: cannot use break outside of iter/while")}),0),$def(self,"$compile_while",(function(){return $truthy(this.$while_loop()["$[]"]("closure"))?this.$push("return ",this.$expr_or_nil(this.$value())):this.$push("break;")}),0),$def(self,"$compile_iter",(function(){return $truthy(this["$stmt?"]())||this.$error("break must be used as a statement"),this.$line("Opal.brk(",this.$break_val(),", $brk)")}),0),$def(self,"$break_val",(function(){return $truthy(this.$value()["$nil?"]())?this.$expr(this.$s("nil")):this.$expr(this.$value())}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"RedoNode");self.$handle("redo"),$def(self,"$compile",(function(){return $truthy(this["$in_while?"]())?this.$compile_while():$truthy(this.$scope()["$iter?"]())?this.$compile_iter():this.$push("REDO()")}),0),$def(self,"$compile_while",(function(){var $writer;return $writer=["use_redo",!0],$send(this.$while_loop(),"[]=",$to_a($writer)),$rb_minus($writer.length,1),this.$push(this.$while_loop()["$[]"]("redo_var")+" = true; continue;")}),0),$def(self,"$compile_iter",(function(){return this.$helper("slice"),this.$push("return "+this.$scope().$identity()+".apply(null, $slice.call(arguments))")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"SplatNode");self.$handle("splat"),self.$children("value"),$def(self,"$empty_splat?",(function(){return this.$value()["$=="](this.$s("array"))}),0),$def(self,"$compile",(function(){return $truthy(this["$empty_splat?"]())?this.$push("[]"):(this.$helper("to_a"),this.$push("$to_a(",this.$recv(this.$value()),")"))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ReturnNode");self.$handle("return"),self.$children("value"),$def(self,"$return_val",(function(){return $truthy(this.$value()["$nil?"]())?this.$expr(this.$s("nil")):$truthy($rb_gt(this.$children().$size(),1))?this.$expr($send(this,"s",["array"].concat($to_a(this.$children())))):this.$expr(this.$value())}),0),$def(self,"$return_in_iter?",(function(){var parent_def=nil;return $truthy(this.$scope()["$iter?"]())&&$not(this.$scope()["$lambda?"]())&&$truthy(parent_def=this.$scope().$find_parent_def())?parent_def:nil}),0),$def(self,"$return_expr_in_def?",(function(){return $truthy(this["$expr?"]())&&($truthy(this.$scope()["$def?"]())||$truthy(this.$scope()["$lambda?"]()))?this.$scope():nil}),0),$def(self,"$scope_to_catch_return",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$return_in_iter?"]())?$ret_or_1:this["$return_expr_in_def?"]()}),0),$def(self,"$compile",(function(){var def_scope,$writer=nil;return $truthy(def_scope=this.$scope_to_catch_return())?($send(def_scope,"catch_return=",$to_a($writer=[!0])),$writer[$rb_minus($writer.length,1)],this.$push("Opal.ret(",this.$return_val(),")")):$truthy(this["$stmt?"]())?this.$push("return ",this.$return_val()):this.$error("void value expression: cannot return as an expression")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JSReturnNode");self.$handle("js_return"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("return "),this.$push(this.$expr(this.$value()))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JSTempNode");self.$handle("js_tmp"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$value().$to_s())}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"BlockPassNode");return self.$handle("block_pass"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$expr(this.$s("send",this.$value(),"to_proc",this.$s("arglist"))))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/definitions"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$range=Opal.range,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$slice=Opal.slice,$rb_plus=Opal.rb_plus,$hash2=Opal.hash2,$const_set=Opal.const_set;return Opal.add_stubs("require,handle,children,each,line,self,scope,expr,===,type,new_name,helper,inspect,[],to_s,first,old_name,push,error,empty?,stmt?,compile_children,simple_children?,compile_inline_children,>,size,wrap,==,returned_children,await_encountered,parent,+,returns,compiler,s,process,fragment,freeze,none?,include?,map,each_with_index,reject,to_proc"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"UndefNode");self.$handle("undef"),self.$children("value"),$def(self,"$compile",(function(){return $send(this.$children(),"each",[],(function $$1(child){var self=null==$$1.$$s?this:$$1.$$s;return null==child&&(child=nil),self.$line("Opal.udef("+self.$scope().$self()+", '$' + ",self.$expr(child),");")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"AliasNode");self.$handle("alias"),self.$children("new_name","old_name"),$def(self,"$compile",(function(){var $ret_or_1,new_name_str=nil,old_name_str=nil;return $eqeqeq("gvar",$ret_or_1=this.$new_name().$type())?(this.$helper("alias_gvar"),new_name_str=this.$new_name().$children().$first().$to_s()["$[]"]($range(1,-1,!1)).$inspect(),old_name_str=this.$old_name().$children().$first().$to_s()["$[]"]($range(1,-1,!1)).$inspect(),this.$push("$alias_gvar(",new_name_str,", ",old_name_str,")")):$eqeqeq("dsym",$ret_or_1)||$eqeqeq("sym",$ret_or_1)?(this.$helper("alias"),this.$push("$alias("+this.$scope().$self()+", ",this.$expr(this.$new_name()),", ",this.$expr(this.$old_name()),")")):this.$error("Opal doesn't know yet how to alias with "+this.$new_name().$type())}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"BeginNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.level=$proto.returned_children=nil,self.$handle("begin"),$def(self,"$compile",(function(){return $truthy(this.$children()["$empty?"]())?this.$push("nil"):$truthy(this["$stmt?"]())?this.$compile_children(this.$children(),this.level):$truthy(this["$simple_children?"]())?(this.$compile_inline_children(this.$children(),this.level),$truthy($rb_gt(this.$children().$size(),1))?this.$wrap("(",")"):nil):$eqeq(this.$children().$size(),1)?this.$compile_inline_children(this.$returned_children(),this.level):(this.$compile_children(this.$returned_children(),this.level),$truthy(this.$scope().$parent().$await_encountered())?this.$wrap("(await (async function() {","})())"):this.$wrap("(function() {","})()"))}),0),$def(self,"$returned_children",(function(){var $a,$b,$ret_or_1,rest=nil,last_child=nil;return this.returned_children=$truthy($ret_or_1=this.returned_children)?$ret_or_1:($b=($b=($a=[].concat($to_a(this.$children()))).length-1)<0?0:$b,rest=$slice.call($a,0,$b),last_child=null==$a[$b]?nil:$a[$b],$truthy(last_child)?$rb_plus(rest,[this.$compiler().$returns(last_child)]):[this.$s("nil")])}),0),$def(self,"$compile_children",(function(children,level){return $send(children,"each",[],(function $$2(child){var self=null==$$2.$$s?this:$$2.$$s;return null==child&&(child=nil),self.$line(self.$process(child,level),self.$fragment(";",$hash2(["loc"],{loc:!1})))}),{$$arity:1,$$s:this})}),2),$const_set($nesting[0],"COMPLEX_CHILDREN",["while","while_post","until","until_post","js_return"].$freeze()),$def(self,"$simple_children?",(function(){return $send(this.$children(),"none?",[],(function(child){return null==child&&(child=nil),$$("COMPLEX_CHILDREN")["$include?"](child.$type())}),1)}),0),$def(self,"$compile_inline_children",(function(children,level){var processed_children;return processed_children=$send(children,"map",[],(function $$5(child){return null==child&&(child=nil),(null==$$5.$$s?this:$$5.$$s).$process(child,level)}),{$$arity:1,$$s:this}),$send($send(processed_children,"reject",[],"empty?".$to_proc()),"each_with_index",[],(function $$6(child,idx){var self=null==$$6.$$s?this:$$6.$$s;return null==child&&(child=nil),null==idx&&(idx=nil),$eqeq(idx,0)||self.$push(self.$fragment(", ",$hash2(["loc"],{loc:!1}))),self.$push(child)}),{$$arity:2,$$s:this})}),2)}($nesting[0],$$("ScopeNode"),$nesting),function($base,$super){return $klass($base,$super,"KwBeginNode").$handle("kwbegin")}($nesting[0],$$("BeginNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/yield"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def;return Opal.add_stubs("require,find_yielding_scope,uses_block!,block_name,block_name=,-,yields_single_arg?,children,push,expr,first,wrap,s,uses_splat?,scope,def?,parent,!,==,size,any?,type,handle,compile_call"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BaseYieldNode");$def(self,"$compile_call",(function(){var block_name,yielding_scope=nil,$writer=nil;return(yielding_scope=this.$find_yielding_scope())["$uses_block!"](),$truthy(yielding_scope.$block_name())||($send(yielding_scope,"block_name=",$to_a($writer=["$yield"])),$writer[$rb_minus($writer.length,1)]),block_name=yielding_scope.$block_name(),$truthy(this["$yields_single_arg?"](this.$children()))?(this.$push(this.$expr(this.$children().$first())),this.$wrap("Opal.yield1("+block_name+", ",")")):(this.$push(this.$expr($send(this,"s",["arglist"].concat($to_a(this.$children()))))),$truthy(this["$uses_splat?"](this.$children()))?this.$wrap("Opal.yieldX("+block_name+", ",")"):this.$wrap("Opal.yieldX("+block_name+", [","])"))}),0),$def(self,"$find_yielding_scope",(function(){var working=nil;for(working=this.$scope();$truthy(working)&&!$truthy(working.$block_name())&&!$truthy(working["$def?"]());)working=working.$parent();return working}),0),$def(self,"$yields_single_arg?",(function(children){var $ret_or_1;return $truthy($ret_or_1=this["$uses_splat?"](children)["$!"]())?children.$size()["$=="](1):$ret_or_1}),1),$def(self,"$uses_splat?",(function(children){return $send(children,"any?",[],(function(child){return null==child&&(child=nil),child.$type()["$=="]("splat")}),1)}),1)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"YieldNode");self.$handle("yield"),$def(self,"$compile",(function(){return this.$compile_call()}),0)}($nesting[0],$$("BaseYieldNode")),function($base,$super){var self=$klass($base,$super,"ReturnableYieldNode");return self.$handle("returnable_yield"),$def(self,"$compile",(function(){return this.$compile_call(),this.$wrap("return ",";")}),0)}($nesting[0],$$("BaseYieldNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/rescue"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$def=Opal.def,$range=Opal.range,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq;return Opal.add_stubs("require,handle,children,push,in_ensure,line,stmt,body_sexp,indent,has_rescue_else?,unshift,rescue_else_code,process,compiler,ensr_sexp,wrap_in_closure?,await_encountered,scope,wrap,returns,begn,ensr,s,recv?,expr?,rescue_else_sexp,stmt?,detect,[],!=,type,rescue_else_sexp=,-,handle_rescue_else_manually?,in_rescue,body_code,each_with_index,==,retry_id,body,nil?,!,in_ensure?,gen_retry_id,attr_reader,expr,klasses,lvar,updated,in_resbody,rescue_body,klasses_sexp,in_resbody?,error,current_rescue"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"EnsureNode");self.$handle("ensure"),self.$children("begn","ensr"),$def(self,"$compile",(function(){return this.$push("try {"),$send(this,"in_ensure",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return self.$line(self.$stmt(self.$body_sexp()))}),{$$arity:0,$$s:this}),this.$line("} finally {"),$send(this,"indent",[],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;return null==self.level&&(self.level=nil),$truthy(self["$has_rescue_else?"]())?(self.$unshift("var $no_errors = true; "),self.$line("var $rescue_else_result;"),self.$line("if ($no_errors) { "),$send(self,"indent",[],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return self.$line("$rescue_else_result = (function() {"),$send(self,"indent",[],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s;return self.$line(self.$stmt(self.$rescue_else_code()))}),{$$arity:0,$$s:self}),self.$line("})();")}),{$$arity:0,$$s:self}),self.$line("}"),self.$line(self.$compiler().$process(self.$ensr_sexp(),self.level)),self.$line("if ($no_errors) { return $rescue_else_result; }")):self.$line(self.$compiler().$process(self.$ensr_sexp(),self.level))}),{$$arity:0,$$s:this}),this.$line("}"),$truthy(this["$wrap_in_closure?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() { ","; })())"):this.$wrap("(function() { ","; })()"):nil}),0),$def(self,"$body_sexp",(function(){return $truthy(this["$wrap_in_closure?"]())?this.$compiler().$returns(this.$begn()):this.$begn()}),0),$def(self,"$ensr_sexp",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$ensr())?$ret_or_1:this.$s("nil")}),0),$def(self,"$wrap_in_closure?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this["$recv?"]())?$ret_or_2:this["$expr?"]())?$ret_or_1:this["$has_rescue_else?"]()}),0),$def(self,"$rescue_else_code",(function(){var rescue_else_code=nil;return rescue_else_code=this.$scope().$rescue_else_sexp(),$truthy(this["$stmt?"]())||(rescue_else_code=this.$compiler().$returns(rescue_else_code)),rescue_else_code}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"RescueNode");self.$$prototype.retry_id=nil,self.$handle("rescue"),self.$children("body"),$def(self,"$compile",(function(){var $writer;return $writer=[$send(this.$children()["$[]"]($range(1,-1,!1)),"detect",[],(function(sexp){var $ret_or_1;return null==sexp&&(sexp=nil),$truthy($ret_or_1=sexp)?sexp.$type()["$!="]("resbody"):$ret_or_1}),1)],$send(this.$scope(),"rescue_else_sexp=",$to_a($writer)),$rb_minus($writer.length,1),!1,$truthy(this["$handle_rescue_else_manually?"]())&&this.$line("var $no_errors = true;"),$send(this,"in_rescue",[this],(function $$7(){var self=null==$$7.$$s?this:$$7.$$s;return self.$push("try {"),$send(self,"indent",[],(function $$8(){var self=null==$$8.$$s?this:$$8.$$s;return self.$line(self.$stmt(self.$body_code()))}),{$$arity:0,$$s:self}),self.$line("} catch ($err) {"),$send(self,"indent",[],(function $$9(){var self=null==$$9.$$s?this:$$9.$$s;return $truthy(self["$has_rescue_else?"]())&&self.$line("$no_errors = false;"),$send(self.$children()["$[]"]($range(1,-1,!1)),"each_with_index",[],(function $$10(child,idx){var self=null==$$10.$$s?this:$$10.$$s;return null==self.level&&(self.level=nil),null==child&&(child=nil),null==idx&&(idx=nil),$truthy(child)&&$eqeq(child.$type(),"resbody")?(!0,$eqeq(idx,0)||self.$push(" else "),self.$line(self.$process(child,self.level))):nil}),{$$arity:2,$$s:self}),self.$push(" else { throw $err; }")}),{$$arity:0,$$s:self}),self.$line("}"),$truthy(self["$handle_rescue_else_manually?"]())&&(self.$push("finally {"),$send(self,"indent",[],(function $$11(){var self=null==$$11.$$s?this:$$11.$$s;return self.$line("if ($no_errors) { "),$send(self,"indent",[],(function $$12(){var self=null==$$12.$$s?this:$$12.$$s;return self.$line(self.$stmt(self.$rescue_else_code()))}),{$$arity:0,$$s:self}),self.$line("}")}),{$$arity:0,$$s:self}),self.$push("}")),$truthy(self.$retry_id())?self.$wrap(self.$retry_id()+": do { "," break; } while(1)"):nil}),{$$arity:0,$$s:this}),$truthy(this["$expr?"]())||$truthy(this["$recv?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() { ","})())"):this.$wrap("(function() { ","})()"):nil}),0),$def(self,"$body_code",(function(){var body_code=nil;return body_code=$truthy(this.$body()["$nil?"]())||$eqeq(this.$body().$type(),"resbody")?this.$s("nil"):this.$body(),$truthy(this["$stmt?"]())||(body_code=this.$compiler().$returns(body_code)),body_code}),0),$def(self,"$rescue_else_code",(function(){var rescue_else_code=nil;return rescue_else_code=this.$scope().$rescue_else_sexp(),$truthy(this["$stmt?"]())||(rescue_else_code=this.$compiler().$returns(rescue_else_code)),rescue_else_code}),0),$def(self,"$handle_rescue_else_manually?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$in_ensure?"]()["$!"]())?this["$has_rescue_else?"]():$ret_or_1}),0),$def(self,"$gen_retry_id",(function(){var $ret_or_1;return this.retry_id=$truthy($ret_or_1=this.retry_id)?$ret_or_1:this.$scope().$gen_retry_id()}),0),self.$attr_reader("retry_id")}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ResBodyNode");self.$handle("resbody"),self.$children("klasses_sexp","lvar","body"),$def(self,"$compile",(function(){return this.$push("if (Opal.rescue($err, ",this.$expr(this.$klasses()),")) {"),$send(this,"indent",[],(function $$14(){var self=null==$$14.$$s?this:$$14.$$s;return $truthy(self.$lvar())&&self.$push(self.$expr(self.$lvar().$updated(nil,[].concat($to_a(self.$lvar().$children())).concat([self.$s("js_tmp","$err")])))),self.$line("try {"),$send(self,"indent",[],(function $$15(){var self=null==$$15.$$s?this:$$15.$$s;return $send(self,"in_resbody",[],(function $$16(){var self=null==$$16.$$s?this:$$16.$$s;return self.$line(self.$stmt(self.$rescue_body()))}),{$$arity:0,$$s:self})}),{$$arity:0,$$s:self}),self.$line("} finally { Opal.pop_exception(); }")}),{$$arity:0,$$s:this}),this.$line("}")}),0),$def(self,"$klasses",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$klasses_sexp())?$ret_or_1:this.$s("array",this.$s("const",nil,"StandardError"))}),0),$def(self,"$rescue_body",(function(){var $ret_or_1,body_code=nil;return body_code=$truthy($ret_or_1=this.$body())?$ret_or_1:this.$s("nil"),$truthy(this["$stmt?"]())||(body_code=this.$compiler().$returns(body_code)),body_code}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"RetryNode");return self.$handle("retry"),$def(self,"$compile",(function(){return $truthy(this["$in_resbody?"]())||this.$error("Invalid retry"),this.$push("continue "+this.$scope().$current_rescue().$gen_retry_id())}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/super"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$slice=Opal.slice,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def,$to_ary=Opal.to_ary,$eqeq=Opal.eqeq,$not=Opal.not,$eqeqeq=Opal.eqeqeq,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt;return Opal.add_stubs("require,include?,type,s,helper,push,compile_receiver,compile_method_body,compile_method_name,compile_arguments,compile_block_pass,private,def?,scope,find_parent_def,to_s,mid,def_scope,identify!,self,method_id,def_scope_identity,defined_check_param,allow_stubs,super_chain,join,map,implicit_arguments_param,super_method_invocation,iter?,super_block_invocation,raise,handle,wrap,uses_block!,compile_using_send,==,iter,block_name,implicit_arglist,!,<<,new,each,children,original_args,[],===,+,[]=,-,>,meta,empty?"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BaseSuperNode"),$proto=self.$$prototype;$proto.sexp=$proto.def_scope=nil,$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$b,$c,$yield=$$initialize.$$p||nil,self=this,args=nil,rest=nil,last_child=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),args=[].concat($to_a(self.sexp)),$c=($c=($b=[].concat($to_a(args))).length-1)<0?0:$c,rest=$slice.call($b,0,$c),last_child=null==$b[$c]?nil:$b[$c],$truthy(last_child)&&$truthy(["iter","block_pass"]["$include?"](last_child.$type()))?(self.iter=last_child,args=rest):self.iter=self.$s("js_tmp","null"),self.arglist=$send(self,"s",["arglist"].concat($to_a(args))),self.recvr=self.$s("self")}),-1),$def(self,"$compile_using_send",(function(){return this.$helper("send2"),this.$push("$send2("),this.$compile_receiver(),this.$compile_method_body(),this.$compile_method_name(),this.$compile_arguments(),this.$compile_block_pass(),this.$push(")")}),0),self.$private(),$def(self,"$def_scope",(function(){var $ret_or_1;return this.def_scope=$truthy($ret_or_1=this.def_scope)?$ret_or_1:$truthy(this.$scope()["$def?"]())?this.$scope():this.$scope().$find_parent_def()}),0),$def(self,"$defined_check_param",(function(){return"false"}),0),$def(self,"$implicit_arguments_param",(function(){return"false"}),0),$def(self,"$method_id",(function(){return this.$def_scope().$mid().$to_s()}),0),$def(self,"$def_scope_identity",(function(){return this.$def_scope()["$identify!"](this.$def_scope().$mid())}),0),$def(self,"$allow_stubs",(function(){return"true"}),0),$def(self,"$super_method_invocation",(function(){return this.$helper("find_super"),"$find_super("+this.$scope().$self()+", '"+this.$method_id()+"', "+this.$def_scope_identity()+", "+this.$defined_check_param()+", "+this.$allow_stubs()+")"}),0),$def(self,"$super_block_invocation",(function(){var $a,$b,chain,cur_defn,mid,trys;return this.$helper("find_block_super"),$b=this.$scope().$super_chain(),chain=null==($a=$to_ary($b))[0]?nil:$a[0],cur_defn=null==$a[1]?nil:$a[1],mid=null==$a[2]?nil:$a[2],trys=$send(chain,"map",[],(function(c){return null==c&&(c=nil),c+".$$def"}),1).$join(" || "),"$find_block_super("+this.$scope().$self()+", "+mid+", ("+trys+" || "+cur_defn+"), "+this.$defined_check_param()+", "+this.$implicit_arguments_param()+")"}),0),$def(self,"$compile_method_body",(function(){return this.$push(", "),$truthy(this.$scope()["$def?"]())?this.$push(this.$super_method_invocation()):$truthy(this.$scope()["$iter?"]())?this.$push(this.$super_block_invocation()):this.$raise("super must be called from method body or block")}),0),$def(self,"$compile_method_name",(function(){var $a,$b,mid=nil;return $truthy(this.$scope()["$def?"]())?this.$push(", '"+this.$method_id()+"'"):$truthy(this.$scope()["$iter?"]())?($b=this.$scope().$super_chain(),null==($a=$to_ary($b))[0]?nil:$a[0],null==$a[1]?nil:$a[1],mid=null==$a[2]?nil:$a[2],this.$push(", "+mid)):nil}),0)}($nesting[0],$$("CallNode")),function($base,$super){var self=$klass($base,$super,"DefinedSuperNode");self.$handle("defined_super"),$def(self,"$allow_stubs",(function(){return"false"}),0),$def(self,"$defined_check_param",(function(){return"true"}),0),$def(self,"$compile",(function(){return this.$compile_receiver(),this.$compile_method_body(),this.$wrap("((",') != null ? "super" : nil)')}),0)}($nesting[0],$$("BaseSuperNode")),function($base,$super){var self=$klass($base,$super,"SuperNode");self.$handle("super"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$truthy(self.$scope()["$def?"]())?self.$scope()["$uses_block!"]():nil}),-1),$def(self,"$compile",(function(){return this.$compile_using_send()}),0)}($nesting[0],$$("BaseSuperNode")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"ZsuperNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$handle("zsuper"),$def(self,"$implicit_arguments_param",(function(){return"true"}),0),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this,$ret_or_1=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$eqeq(self.$iter().$type(),"iter")?nil:(self.$scope()["$uses_block!"](),self.iter=self.$s("js_tmp",$truthy($ret_or_1=self.$scope().$block_name())?$ret_or_1:"$yield"))}),-1),$def(self,"$compile",(function(){var implicit_args=nil,block_pass=nil;return $truthy(this.$def_scope())&&(implicit_args=this.$implicit_arglist(),$truthy(this.$block_name())&&$not(this.$iter())&&(block_pass=this.$s("block_pass",this.$s("lvar",this.$block_name())),implicit_args["$<<"](block_pass)),this.arglist=$send(this,"s",["arglist"].concat($to_a(implicit_args)))),this.$compile_using_send()}),0),$def(self,"$implicit_arglist",(function(){var args=nil,kwargs=nil,same_arg_counter=nil;return args=[],kwargs=[],same_arg_counter=$$("Hash").$new(0),$send(this.$def_scope().$original_args().$children(),"each",[],(function $$2(sexp){var $ret_or_1,self=null==$$2.$$s?this:$$2.$$s,lvar_name=nil,arg_node=nil,$writer=nil,key_name=nil;return null==sexp&&(sexp=nil),lvar_name=sexp.$children()["$[]"](0),$eqeqeq("arg",$ret_or_1=sexp.$type())||$eqeqeq("optarg",$ret_or_1)?(arg_node=self.$s("lvar",lvar_name),$eqeq(lvar_name["$[]"](0),"_")&&($writer=[lvar_name,$rb_plus(same_arg_counter["$[]"](lvar_name),1)],$send(same_arg_counter,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy($rb_gt(same_arg_counter["$[]"](lvar_name),1))&&(arg_node=self.$s("js_tmp",lvar_name+"_$"+same_arg_counter["$[]"](lvar_name)))),args["$<<"](arg_node)):$eqeqeq("restarg",$ret_or_1)?(arg_node=$truthy(lvar_name)?self.$s("lvar",lvar_name):self.$s("js_tmp","$rest_arg"),args["$<<"](self.$s("splat",arg_node))):$eqeqeq("kwarg",$ret_or_1)||$eqeqeq("kwoptarg",$ret_or_1)?(key_name=sexp.$meta()["$[]"]("arg_name"),kwargs["$<<"](self.$s("pair",self.$s("sym",key_name),self.$s("lvar",lvar_name)))):$eqeqeq("kwrestarg",$ret_or_1)?(arg_node=$truthy(lvar_name)?self.$s("lvar",lvar_name):self.$s("js_tmp","$kw_rest_arg"),kwargs["$<<"](self.$s("kwsplat",arg_node))):nil}),{$$arity:1,$$s:this}),$truthy(kwargs["$empty?"]())||args["$<<"]($send(this,"s",["hash"].concat($to_a(kwargs)))),args}),0),$def(self,"$block_name",(function(){var $ret_or_1;return $eqeqeq($$$($$$($$("Opal"),"Nodes"),"IterNode"),$ret_or_1=this.$def_scope())||$eqeqeq($$$($$$($$("Opal"),"Nodes"),"DefNode"),$ret_or_1)?this.$def_scope().$block_name():this.$raise("Don't know what to do with super in the scope "+this.$def_scope())}),0)}($nesting[0],$$("SuperNode"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/version"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set;return function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return $const_set($nesting[0],"VERSION","1.4.1")}($nesting[0],$nesting)},Opal.modules["opal/nodes/top"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("require,handle,children,top_scope=,compiler,-,push,version_comment,in_scope,==,body,s,line,use_strict?,stmt,stmts,is_a?,eval?,add_temp,add_used_helpers,to_vars,scope,compile_method_stubs,compile_irb_vars,compile_end_construct,opening,closing,await_encountered,requirable?,unshift,inspect,module_name,file,esm?,returns,irb?,each,to_a,helpers,method_missing?,method_calls,join,map,to_proc,empty?,eof_content"),self.$require("pathname"),self.$require("opal/version"),self.$require("opal/nodes/scope"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"TopNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$handle("top"),self.$children("body"),$def(self,"$compile",(function(){var $writer;return $writer=[this],$send(this.$compiler(),"top_scope=",$to_a($writer)),$rb_minus($writer.length,1),this.$push(this.$version_comment()),$send(this,"in_scope",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s,body_code=nil;return null==self.define_nesting&&(self.define_nesting=nil),null==self.define_self&&(self.define_self=nil),null==self.define_relative_access&&(self.define_relative_access=nil),null==self.define_absolute_const&&(self.define_absolute_const=nil),$eqeq(self.$body(),self.$s("nil"))?self.$line("return Opal.nil;"):($truthy(self.$compiler()["$use_strict?"]())&&self.$line('"use strict";'),body_code=self.$stmt(self.$stmts()),$truthy(body_code["$is_a?"]($$("Array")))||(body_code=[body_code]),$truthy(self.$compiler()["$eval?"]())?$truthy(self.define_nesting)&&self.$add_temp("$nesting = self.$$is_a_module ? [self] : [self.$$class]"):($truthy(self.define_self)&&self.$add_temp("self = Opal.top"),$truthy(self.define_nesting)&&self.$add_temp("$nesting = []")),$truthy(self.define_relative_access)&&self.$add_temp("$$ = Opal.$r($nesting)"),self.$add_temp("nil = Opal.nil"),$truthy(self.define_absolute_const)&&self.$add_temp("$$$ = Opal.$$$"),self.$add_used_helpers(),self.$line(self.$scope().$to_vars()),self.$compile_method_stubs(),self.$compile_irb_vars(),self.$compile_end_construct(),self.$line(body_code))}),{$$arity:0,$$s:this}),this.$opening(),this.$closing()}),0),$def(self,"$opening",(function(){var async_prefix=nil;return $truthy(this.$await_encountered())&&(async_prefix="async "),$truthy(this.$compiler()["$requirable?"]())?this.$unshift("Opal.modules["+$$$($$("Opal"),"Compiler").$module_name(this.$compiler().$file()).$inspect()+"] = "+async_prefix+"function(Opal) {"):$truthy(this.$compiler()["$eval?"]())?this.$unshift("("+async_prefix+"function(Opal, self) {"):$truthy(this.$compiler()["$esm?"]())?this.$unshift("export default Opal.queue("+async_prefix+"function(Opal) {"):this.$unshift("Opal.queue("+async_prefix+"function(Opal) {")}),0),$def(self,"$closing",(function(){return $truthy(this.$compiler()["$requirable?"]())?this.$line("};\n"):$truthy(this.$compiler()["$eval?"]())?this.$line("})(Opal, self);"):this.$line("});\n")}),0),$def(self,"$stmts",(function(){return this.$compiler().$returns(this.$body())}),0),$def(self,"$absolute_const",(function(){return this.define_absolute_const=!0,"$$$"}),0),$def(self,"$compile_irb_vars",(function(){return $truthy(this.$compiler()["$irb?"]())?this.$line("if (!Opal.irb_vars) { Opal.irb_vars = {}; }"):nil}),0),$def(self,"$add_used_helpers",(function(){return $send(this.$compiler().$helpers().$to_a(),"each",[],(function $$2(h){return null==h&&(h=nil),(null==$$2.$$s?this:$$2.$$s).$add_temp("$"+h+" = Opal."+h)}),{$$arity:1,$$s:this})}),0),$def(self,"$compile_method_stubs",(function(){var calls=nil,stubs=nil;return $truthy(this.$compiler()["$method_missing?"]())?(calls=this.$compiler().$method_calls(),stubs=$send(calls.$to_a(),"map",[],"to_s".$to_proc()).$join(","),$truthy(stubs["$empty?"]())?nil:this.$line("Opal.add_stubs('"+stubs+"');")):nil}),0),$def(self,"$compile_end_construct",(function(){var content=nil;return $truthy(content=this.$compiler().$eof_content())?(this.$line("var $__END__ = Opal.Object.$new();"),this.$line("$__END__.$read = function() { return "+content.$inspect()+"; };")):nil}),0),$def(self,"$version_comment",(function(){return"/* Generated by Opal "+$$$($$("Opal"),"VERSION")+" */"}),0)}($nesting[0],$$("ScopeNode"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/while"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def;return Opal.add_stubs("require,handle,children,js_truthy,test,with_temp,in_while,compiler,wrap_in_closure?,[]=,while_loop,-,indent,stmt,body,uses_redo?,compile_with_redo,compile_without_redo,await_encountered,scope,wrap,private,push,compile_while,while_open,while_close,line,[],expr?,recv?"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"WhileNode");self.$handle("while"),self.$children("test","body"),$def(self,"$compile",(function(){var test_code;return test_code=this.$js_truthy(this.$test()),$send(this,"with_temp",[],(function $$1(redo_var){var self=null==$$1.$$s?this:$$1.$$s;return null==redo_var&&(redo_var=nil),$send(self.$compiler(),"in_while",[],(function $$2(){var body_code,self=null==$$2.$$s?this:$$2.$$s,$writer=nil;return $truthy(self["$wrap_in_closure?"]())&&($writer=["closure",!0],$send(self.$while_loop(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=["redo_var",redo_var],$send(self.$while_loop(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],body_code=$send(self,"indent",[],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return self.$stmt(self.$body())}),{$$arity:0,$$s:self}),$truthy(self["$uses_redo?"]())?self.$compile_with_redo(test_code,body_code,redo_var):self.$compile_without_redo(test_code,body_code)}),{$$arity:0,$$s:self})}),{$$arity:1,$$s:this}),$truthy(this["$wrap_in_closure?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() {","; return nil; })())"):this.$wrap("(function() {","; return nil; })()"):nil}),0),self.$private(),$def(self,"$compile_with_redo",(function(test_code,body_code,redo_var){return this.$push(redo_var+" = false; "),this.$compile_while([redo_var," || ",test_code],[redo_var+" = false;",body_code])}),3),$def(self,"$compile_without_redo",(function(test_code,body_code){return this.$compile_while([test_code],[body_code])}),2),$def(self,"$compile_while",(function(test_code,body_code){return $send(this,"push",[this.$while_open()].concat($to_a(test_code)).concat([this.$while_close()])),$send(this,"indent",[],(function $$4(){return $send(null==$$4.$$s?this:$$4.$$s,"line",$to_a(body_code))}),{$$arity:0,$$s:this}),this.$line("}")}),2),$def(self,"$while_open",(function(){return"while ("}),0),$def(self,"$while_close",(function(){return") {"}),0),$def(self,"$uses_redo?",(function(){return this.$while_loop()["$[]"]("use_redo")}),0),$def(self,"$wrap_in_closure?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$expr?"]())?$ret_or_1:this["$recv?"]()}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"UntilNode");self.$handle("until"),self.$private(),$def(self,"$while_open",(function(){return"while (!("}),0),$def(self,"$while_close",(function(){return")) {"}),0)}($nesting[0],$$("WhileNode")),function($base,$super){var self=$klass($base,$super,"WhilePostNode");self.$handle("while_post"),self.$private(),$def(self,"$compile_while",(function(test_code,body_code){return this.$push("do {"),$send(this,"indent",[],(function $$7(){return $send(null==$$7.$$s?this:$$7.$$s,"line",$to_a(body_code))}),{$$arity:0,$$s:this}),$send(this,"line",["} ",this.$while_open()].concat($to_a(test_code)).concat([this.$while_close()]))}),2),$def(self,"$while_close",(function(){return");"}),0)}($nesting[0],$$("WhileNode")),function($base,$super){var self=$klass($base,$super,"UntilPostNode");return self.$handle("until_post"),self.$private(),$def(self,"$while_open",(function(){return"while(!("}),0),$def(self,"$while_close",(function(){return"));"}),0)}($nesting[0],$$("WhilePostNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/hash"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$def=Opal.def,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$to_ary=Opal.to_ary,$hash2=Opal.hash2,$rb_minus=Opal.rb_minus;return Opal.add_stubs("require,handle,attr_accessor,each,children,===,type,<<,[],all?,keys,include?,has_kwsplat,compile_merge,simple_keys?,compile_hash2,compile_hash,helper,==,empty?,expr,s,each_with_index,push,wrap,times,size,inspect,to_s,values,[]=,-,join,value"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"HashNode");self.$handle("hash"),self.$attr_accessor("has_kwsplat","keys","values"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.has_kwsplat=!1,self.keys=[],self.values=[],$send(self.$children(),"each",[],(function $$1(child){var $ret_or_1,self=null==$$1.$$s?this:$$1.$$s;return null==self.keys&&(self.keys=nil),null==self.values&&(self.values=nil),null==child&&(child=nil),$eqeqeq("kwsplat",$ret_or_1=child.$type())?self.has_kwsplat=!0:$eqeqeq("pair",$ret_or_1)?(self.keys["$<<"](child.$children()["$[]"](0)),self.values["$<<"](child.$children()["$[]"](1))):nil}),{$$arity:1,$$s:self})}),-1),$def(self,"$simple_keys?",(function(){return $send(this.$keys(),"all?",[],(function(key){return null==key&&(key=nil),["sym","str"]["$include?"](key.$type())}),1)}),0),$def(self,"$compile",(function(){return $truthy(this.$has_kwsplat())?this.$compile_merge():$truthy(this["$simple_keys?"]())?this.$compile_hash2():this.$compile_hash()}),0),$def(self,"$compile_merge",(function(){var $a,result=nil,seq=nil;return this.$helper("hash"),result=($a=[[],[]])[0],seq=$a[1],$send(this.$children(),"each",[],(function $$4(child){var self=null==$$4.$$s?this:$$4.$$s;return null==child&&(child=nil),$eqeq(child.$type(),"kwsplat")?($truthy(seq["$empty?"]())||result["$<<"](self.$expr($send(self,"s",["hash"].concat($to_a(seq))))),result["$<<"](self.$expr(child)),seq=[]):seq["$<<"](child)}),{$$arity:1,$$s:this}),$truthy(seq["$empty?"]())||result["$<<"](this.$expr($send(this,"s",["hash"].concat($to_a(seq))))),$send(result,"each_with_index",[],(function $$5(fragment,idx){var self=null==$$5.$$s?this:$$5.$$s;return null==fragment&&(fragment=nil),null==idx&&(idx=nil),$eqeq(idx,0)?self.$push(fragment):self.$push(".$merge(",fragment,")")}),{$$arity:2,$$s:this})}),0),$def(self,"$compile_hash",(function(){return this.$helper("hash"),$send(this.$children(),"each_with_index",[],(function $$6(pair,idx){var $a,$b,key,value,self=null==$$6.$$s?this:$$6.$$s;return null==pair&&(pair=nil),null==idx&&(idx=nil),$b=pair.$children(),key=null==($a=$to_ary($b))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],$eqeq(idx,0)||self.$push(", "),self.$push(self.$expr(key),", ",self.$expr(value))}),{$$arity:2,$$s:this}),this.$wrap("$hash(",")")}),0),$def(self,"$compile_hash2",(function(){var $a,hash_obj=nil,hash_keys=nil;return $a=[$hash2([],{}),[]],hash_obj=$a[0],hash_keys=$a[1],this.$helper("hash2"),$send(this.$keys().$size(),"times",[],(function $$7(idx){var key,$writer,self=null==$$7.$$s?this:$$7.$$s;return null==idx&&(idx=nil),key=self.$keys()["$[]"](idx).$children()["$[]"](0).$to_s().$inspect(),$truthy(hash_obj["$include?"](key))||hash_keys["$<<"](key),$writer=[key,self.$expr(self.$values()["$[]"](idx))],$send(hash_obj,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),$send(hash_keys,"each_with_index",[],(function $$8(key,idx){var self=null==$$8.$$s?this:$$8.$$s;return null==key&&(key=nil),null==idx&&(idx=nil),$eqeq(idx,0)||self.$push(", "),self.$push(key+": "),self.$push(hash_obj["$[]"](key))}),{$$arity:2,$$s:this}),this.$wrap("$hash2(["+hash_keys.$join(", ")+"], {","})")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"KwSplatNode");return self.$handle("kwsplat"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("Opal.to_hash(",this.$expr(this.$value()),")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/array"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def;return Opal.add_stubs("require,handle,empty?,children,push,each,==,type,expr,<<,fragment"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArrayNode");return self.$handle("array"),$def(self,"$compile",(function(){var $a,code=nil,work=nil,join=nil;return $truthy(this.$children()["$empty?"]())?this.$push("[]"):(code=($a=[[],[]])[0],work=$a[1],$send(this.$children(),"each",[],(function $$1(child){var splat,part,self=null==$$1.$$s?this:$$1.$$s;return null==child&&(child=nil),splat=child.$type()["$=="]("splat"),part=self.$expr(child),$truthy(splat)?($truthy(work["$empty?"]())?$truthy(code["$empty?"]())?code["$<<"](self.$fragment("[].concat("))["$<<"](part)["$<<"](self.$fragment(")")):code["$<<"](self.$fragment(".concat("))["$<<"](part)["$<<"](self.$fragment(")")):($truthy(code["$empty?"]())?code["$<<"](self.$fragment("["))["$<<"](work)["$<<"](self.$fragment("]")):code["$<<"](self.$fragment(".concat(["))["$<<"](work)["$<<"](self.$fragment("])")),code["$<<"](self.$fragment(".concat("))["$<<"](part)["$<<"](self.$fragment(")"))),work=[]):($truthy(work["$empty?"]())||work["$<<"](self.$fragment(", ")),work["$<<"](part))}),{$$arity:1,$$s:this}),$truthy(work["$empty?"]())||(join=[this.$fragment("["),work,this.$fragment("]")],$truthy(code["$empty?"]())?code=join:code.$push([this.$fragment(".concat("),join,this.$fragment(")")])),this.$push(code))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/defined"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeqeq=Opal.eqeqeq,$eqeq=Opal.eqeq,$def=Opal.def,$truthy=Opal.truthy,$to_a=Opal.to_a,$slice=Opal.slice,$send=Opal.send,$range=Opal.range;return Opal.add_stubs("require,handle,children,===,type,value,push,inspect,to_s,==,[],size,compile_defined_send,wrap,compile_defined_ivar,compile_defined_super,compile_defined_yield,compile_defined_xstr,compile_defined_const,compile_defined_cvar,compile_defined_gvar,compile_defined_back_ref,compile_defined_nth_ref,compile_defined_array,respond_to?,__send__,new_temp,scope,expr,wrap_with_try_catch,mid_to_jsid,compile_defined,compile_send_recv_doesnt_raise,self,each,s,uses_block!,block_name,find_parent_def,nil?,relative_access,absolute_const,top_scope,class_variable_owner,helper,include?,each_with_index"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DefinedNode");return self.$handle("defined?"),self.$children("value"),$def(self,"$compile",(function(){var $ret_or_1;return $eqeqeq("self",$ret_or_1=this.$value().$type())||$eqeqeq("nil",$ret_or_1)||$eqeqeq("false",$ret_or_1)||$eqeqeq("true",$ret_or_1)?this.$push(this.$value().$type().$to_s().$inspect()):$eqeqeq("lvasgn",$ret_or_1)||$eqeqeq("ivasgn",$ret_or_1)||$eqeqeq("gvasgn",$ret_or_1)||$eqeqeq("cvasgn",$ret_or_1)||$eqeqeq("casgn",$ret_or_1)||$eqeqeq("op_asgn",$ret_or_1)||$eqeqeq("or_asgn",$ret_or_1)||$eqeqeq("and_asgn",$ret_or_1)?this.$push("'assignment'"):$eqeqeq("lvar",$ret_or_1)?this.$push("'local-variable'"):$eqeqeq("begin",$ret_or_1)?$eqeq(this.$value().$children().$size(),1)&&$eqeq(this.$value().$children()["$[]"](0).$type(),"masgn")?this.$push("'assignment'"):this.$push("'expression'"):$eqeqeq("send",$ret_or_1)?(this.$compile_defined_send(this.$value()),this.$wrap("("," ? 'method' : nil)")):$eqeqeq("ivar",$ret_or_1)?(this.$compile_defined_ivar(this.$value()),this.$wrap("("," ? 'instance-variable' : nil)")):$eqeqeq("zsuper",$ret_or_1)||$eqeqeq("super",$ret_or_1)?this.$compile_defined_super():$eqeqeq("yield",$ret_or_1)?(this.$compile_defined_yield(),this.$wrap("("," ? 'yield' : nil)")):$eqeqeq("xstr",$ret_or_1)?this.$compile_defined_xstr(this.$value()):$eqeqeq("const",$ret_or_1)?(this.$compile_defined_const(this.$value()),this.$wrap("("," ? 'constant' : nil)")):$eqeqeq("cvar",$ret_or_1)?(this.$compile_defined_cvar(this.$value()),this.$wrap("("," ? 'class variable' : nil)")):$eqeqeq("gvar",$ret_or_1)?(this.$compile_defined_gvar(this.$value()),this.$wrap("("," ? 'global-variable' : nil)")):$eqeqeq("back_ref",$ret_or_1)?(this.$compile_defined_back_ref(),this.$wrap("("," ? 'global-variable' : nil)")):$eqeqeq("nth_ref",$ret_or_1)?(this.$compile_defined_nth_ref(),this.$wrap("("," ? 'global-variable' : nil)")):$eqeqeq("array",$ret_or_1)?(this.$compile_defined_array(this.$value()),this.$wrap("("," ? 'expression' : nil)")):this.$push("'expression'")}),0),$def(self,"$compile_defined",(function(node){var type,node_tmp=nil;return type=node.$type(),$truthy(this["$respond_to?"]("compile_defined_"+type))?this.$__send__("compile_defined_"+type,node):(node_tmp=this.$scope().$new_temp(),this.$push("("+node_tmp+" = ",this.$expr(node),")"),node_tmp)}),1),$def(self,"$wrap_with_try_catch",(function(code){var returning_tmp;return returning_tmp=this.$scope().$new_temp(),this.$push("("+returning_tmp+" = (function() { try {"),this.$push(" return "+code+";"),this.$push("} catch ($err) {"),this.$push(" if (Opal.rescue($err, [Opal.Exception])) {"),this.$push(" try {"),this.$push(" return false;"),this.$push(" } finally { Opal.pop_exception() }"),this.$push(" } else { throw $err; }"),this.$push("}})())"),returning_tmp}),1),$def(self,"$compile_send_recv_doesnt_raise",(function(recv_code){return this.$wrap_with_try_catch(recv_code)}),1),$def(self,"$compile_defined_send",(function(node){var $a,args,mid,recv_value_tmp,meth_tmp,recv=nil,method_name=nil,recv_code=nil,recv_tmp=nil;return recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],args=$slice.call($a,2),mid=this.$mid_to_jsid(method_name.$to_s()),$truthy(recv)?(recv_code=this.$compile_defined(recv),this.$push(" && "),$eqeq(recv.$type(),"send")&&(recv_code=this.$compile_send_recv_doesnt_raise(recv_code),this.$push(" && ")),recv_tmp=this.$scope().$new_temp(),this.$push("("+recv_tmp+" = ",recv_code,", "+recv_tmp+") && ")):recv_tmp=this.$scope().$self(),recv_value_tmp=this.$scope().$new_temp(),this.$push("("+recv_value_tmp+" = "+recv_tmp+") && "),meth_tmp=this.$scope().$new_temp(),this.$push("((("+meth_tmp+" = "+recv_value_tmp+mid+") && !"+meth_tmp+".$$stub)"),this.$push(" || "+recv_value_tmp+"['$respond_to_missing?']('"+method_name+"'))"),$send(args,"each",[],(function $$1(arg){var self=null==$$1.$$s?this:$$1.$$s;return null==arg&&(arg=nil),$eqeqeq("block_pass",arg.$type())?nil:(self.$push(" && "),self.$compile_defined(arg))}),{$$arity:1,$$s:this}),this.$wrap("(",")"),meth_tmp+"()"}),1),$def(self,"$compile_defined_ivar",(function(node){var name,tmp;return name=node.$children()["$[]"](0).$to_s()["$[]"]($range(1,-1,!1)),tmp=this.$scope().$new_temp(),this.$push("("+tmp+" = "+this.$scope().$self()+"['"+name+"'], "+tmp+" != null && "+tmp+" !== nil)"),tmp}),1),$def(self,"$compile_defined_super",(function(){return this.$push(this.$expr(this.$s("defined_super")))}),0),$def(self,"$compile_defined_yield",(function(){var block_name,$ret_or_1;return this.$scope()["$uses_block!"](),block_name=$truthy($ret_or_1=this.$scope().$block_name())?$ret_or_1:this.$scope().$find_parent_def().$block_name(),this.$push("("+block_name+" != null && "+block_name+" !== nil)"),block_name}),0),$def(self,"$compile_defined_xstr",(function(node){return this.$push("(typeof(",this.$expr(node),') !== "undefined")')}),1),$def(self,"$compile_defined_const",(function(node){var $a,const_name,const_tmp,const_scope=nil,const_scope_tmp=nil;return const_scope=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],const_name=null==$a[1]?nil:$a[1],const_tmp=this.$scope().$new_temp(),$truthy(const_scope["$nil?"]())?this.$push("("+const_tmp+" = "+this.$scope().$relative_access()+"('"+const_name+"', 'skip_raise'))"):$eqeq(const_scope,this.$s("cbase"))?this.$push("("+const_tmp+" = "+this.$top_scope().$absolute_const()+"('::', '"+const_name+"', 'skip_raise'))"):(const_scope_tmp=this.$compile_defined(const_scope),this.$push(" && ("+const_tmp+" = "+this.$top_scope().$absolute_const()+"("+const_scope_tmp+", '"+const_name+"', 'skip_raise'))")),const_tmp}),1),$def(self,"$compile_defined_cvar",(function(node){var $a,cvar_name,cvar_tmp;return cvar_name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],cvar_tmp=this.$scope().$new_temp(),this.$push("("+cvar_tmp+" = "+this.$class_variable_owner()+".$$cvars['"+cvar_name+"'], "+cvar_tmp+" != null)"),cvar_tmp}),1),$def(self,"$compile_defined_gvar",(function(node){var gvar_temp,name=nil;return this.$helper("gvars"),name=node.$children()["$[]"](0).$to_s()["$[]"]($range(1,-1,!1)),gvar_temp=this.$scope().$new_temp(),$truthy(["~","!"]["$include?"](name))?this.$push("("+gvar_temp+" = ",this.$expr(node)," || true)"):this.$push("("+gvar_temp+" = $gvars["+name.$inspect()+"], "+gvar_temp+" != null)"),gvar_temp}),1),$def(self,"$compile_defined_back_ref",(function(){var back_ref_temp;return this.$helper("gvars"),back_ref_temp=this.$scope().$new_temp(),this.$push("("+back_ref_temp+" = $gvars['~'], "+back_ref_temp+" != null && "+back_ref_temp+" !== nil)"),back_ref_temp}),0),$def(self,"$compile_defined_nth_ref",(function(){var nth_ref_tmp;return this.$helper("gvars"),nth_ref_tmp=this.$scope().$new_temp(),this.$push("("+nth_ref_tmp+" = $gvars['~'], "+nth_ref_tmp+" != null && "+nth_ref_tmp+" != nil)"),nth_ref_tmp}),0),$def(self,"$compile_defined_array",(function(node){return $send(node.$children(),"each_with_index",[],(function $$2(child,idx){var self=null==$$2.$$s?this:$$2.$$s;return null==child&&(child=nil),null==idx&&(idx=nil),$eqeq(idx,0)||self.$push(" && "),self.$compile_defined(child)}),{$$arity:2,$$s:this})}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/masgn"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def,$rb_ge=Opal.rb_ge,$not=Opal.not,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,freeze,handle,children,new_temp,scope,==,type,rhs,push,expr,any?,size,compile_masgn,lhs,helper,queue_temp,take_while,!=,drop,each_with_index,compile_assignment,empty?,shift,[],<<,dup,s,>=,!,updated,include?,+,last,raise"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"MassAssignNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"SIMPLE_ASSIGNMENT",["lvasgn","ivasgn","lvar","gvasgn","cdecl","casgn"].$freeze()),self.$handle("masgn"),self.$children("lhs","rhs"),$def(self,"$compile",(function(){var array,rhs_len=nil,retval=nil;return array=this.$scope().$new_temp(),$eqeq(this.$rhs().$type(),"array")?(this.$push(array+" = ",this.$expr(this.$rhs())),rhs_len=$truthy($send(this.$rhs().$children(),"any?",[],(function(c){return null==c&&(c=nil),c.$type()["$=="]("splat")}),1))?nil:this.$rhs().$children().$size(),this.$compile_masgn(this.$lhs().$children(),array,rhs_len),this.$push(", "+array)):(this.$helper("to_ary"),retval=this.$scope().$new_temp(),this.$push(retval+" = ",this.$expr(this.$rhs())),this.$push(", "+array+" = $to_ary("+retval+")"),this.$compile_masgn(this.$lhs().$children(),array),this.$push(", "+retval),this.$scope().$queue_temp(retval)),this.$scope().$queue_temp(array)}),0),$def(self,"$compile_masgn",(function(lhs_items,array,len){var pre_splat=nil,post_splat=nil,splat=nil,part=nil,tmp=nil;return null==len&&(len=nil),pre_splat=$send(lhs_items,"take_while",[],(function(child){return null==child&&(child=nil),child.$type()["$!="]("splat")}),1),post_splat=lhs_items.$drop(pre_splat.$size()),$send(pre_splat,"each_with_index",[],(function $$3(child,idx){return null==child&&(child=nil),null==idx&&(idx=nil),(null==$$3.$$s?this:$$3.$$s).$compile_assignment(child,array,idx,len)}),{$$arity:2,$$s:this}),$truthy(post_splat["$empty?"]())?nil:(splat=post_splat.$shift(),$truthy(post_splat["$empty?"]())?$truthy(part=splat.$children()["$[]"](0))?(this.$helper("slice"),part=part.$dup()["$<<"](this.$s("js_tmp","$slice.call("+array+", "+pre_splat.$size()+")")),this.$push(", "),this.$push(this.$expr(part))):nil:(tmp=this.$scope().$new_temp(),this.$push(", "+tmp+" = "+array+".length - "+post_splat.$size()),this.$push(", "+tmp+" = ("+tmp+" < "+pre_splat.$size()+") ? "+pre_splat.$size()+" : "+tmp),$truthy(part=splat.$children()["$[]"](0))&&(this.$helper("slice"),part=part.$dup()["$<<"](this.$s("js_tmp","$slice.call("+array+", "+pre_splat.$size()+", "+tmp+")")),this.$push(", "),this.$push(this.$expr(part))),$send(post_splat,"each_with_index",[],(function $$4(child,idx){var self=null==$$4.$$s?this:$$4.$$s;return null==child&&(child=nil),null==idx&&(idx=nil),$eqeq(idx,0)?self.$compile_assignment(child,array,tmp):self.$compile_assignment(child,array,tmp+" + "+idx)}),{$$arity:2,$$s:this}),this.$scope().$queue_temp(tmp)))}),-3),$def(self,"$compile_assignment",(function(child,array,idx,len){var assign=nil,part=nil,tmp=nil;if(null==len&&(len=nil),assign=$not(len)||$truthy($rb_ge(idx,len))?this.$s("js_tmp","("+array+"["+idx+"] == null ? nil : "+array+"["+idx+"])"):this.$s("js_tmp",array+"["+idx+"]"),part=child.$updated(),$truthy($$("SIMPLE_ASSIGNMENT")["$include?"](child.$type())))part=part.$updated(nil,$rb_plus(part.$children(),[assign]));else if($eqeq(child.$type(),"send"))part=part.$updated(nil,$rb_plus(part.$children(),[assign]));else if($eqeq(child.$type(),"attrasgn"))part.$last()["$<<"](assign);else{if($eqeq(child.$type(),"mlhs"))return this.$helper("to_ary"),tmp=this.$scope().$new_temp(),this.$push(", ("+tmp+" = $to_ary("+assign.$children()["$[]"](0)+")"),this.$compile_masgn(child.$children(),tmp),this.$push(")"),this.$scope().$queue_temp(tmp),nil;this.$raise("Bad child node in masgn LHS: "+child+". LHS: "+this.$lhs())}return this.$push(", "),this.$push(this.$expr(part))}),-4)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/arglist"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$to_a=Opal.to_a,$def=Opal.def;return Opal.add_stubs("require,handle,each,children,==,type,expr,empty?,<<,fragment,push"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArglistNode");return self.$handle("arglist"),$def(self,"$compile",(function(){var $a,code=nil,work=nil,join=nil;return code=($a=[[],[]])[0],work=$a[1],$send(this.$children(),"each",[],(function $$1(current){var splat,arg,self=null==$$1.$$s?this:$$1.$$s;return null==current&&(current=nil),splat=current.$type()["$=="]("splat"),arg=self.$expr(current),$truthy(splat)?($truthy(work["$empty?"]())?$truthy(code["$empty?"]())?code["$<<"](arg):code["$<<"](self.$fragment(".concat("))["$<<"](arg)["$<<"](self.$fragment(")")):($truthy(code["$empty?"]())?code["$<<"](self.$fragment("["))["$<<"](work)["$<<"](self.$fragment("]")):code["$<<"](self.$fragment(".concat(["))["$<<"](work)["$<<"](self.$fragment("])")),code["$<<"](self.$fragment(".concat("))["$<<"](arg)["$<<"](self.$fragment(")"))),work=[]):($truthy(work["$empty?"]())||work["$<<"](self.$fragment(", ")),work["$<<"](arg))}),{$$arity:1,$$s:this}),$truthy(work["$empty?"]())||(join=work,$truthy(code["$empty?"]())?code=join:code["$<<"](this.$fragment(".concat(["))["$<<"](join)["$<<"](this.$fragment("])"))),$send(this,"push",$to_a(code))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/x_string"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def,$defs=Opal.defs,$lambda=Opal.lambda,$eqeqeq=Opal.eqeqeq,$eqeq=Opal.eqeq,$not=Opal.not,$range=Opal.range;return Opal.add_stubs("handle,unpack_return,children,strip_empty_children,single_line?,compile_single_line,each,compile_child,recv?,wrap,push,==,size,none?,type,end_with?,source,expression,loc,dup,nil?,empty?,rstrip,any?,[],first,shift,last,pop,private,===,include?,self,scope,new,expr,raise,s,strip,=~,!,extract_last_value,expr?,warning,compiler,line"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"XStringNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.should_add_semicolon=$proto.returning=nil,self.$handle("xstr"),$def(self,"$compile",(function(){var unpacked_children,stripped_children;return this.should_add_semicolon=!1,unpacked_children=this.$unpack_return(this.$children()),stripped_children=$$("XStringNode").$strip_empty_children(unpacked_children),$truthy($$("XStringNode")["$single_line?"](stripped_children))?this.$compile_single_line(stripped_children):$send(unpacked_children,"each",[],(function $$1(c){return null==c&&(c=nil),(null==$$1.$$s?this:$$1.$$s).$compile_child(c)}),{$$arity:1,$$s:this}),$truthy(this["$recv?"]())&&this.$wrap("(",")"),$truthy(this.should_add_semicolon)?this.$push(";"):nil}),0),$defs(self,"$single_line?",(function(children){var $ret_or_1;return $truthy($ret_or_1=children.$size()["$=="](1))?$ret_or_1:$send(children,"none?",[],(function(c){var $ret_or_2;return null==c&&(c=nil),$truthy($ret_or_2=c.$type()["$=="]("str"))?c.$loc().$expression().$source()["$end_with?"]("\n"):$ret_or_2}),1)}),1),$defs(self,"$strip_empty_children",(function(children){var empty_line=nil,$ret_or_1=nil;for(children=children.$dup(),empty_line=$lambda((function(child){var $ret_or_1,$ret_or_2=nil;return null==child&&(child=nil),$truthy($ret_or_1=child["$nil?"]())?$ret_or_1:$truthy($ret_or_2=child.$type()["$=="]("str"))?child.$loc().$expression().$source().$rstrip()["$empty?"]():$ret_or_2}),1);$truthy($truthy($ret_or_1=children["$any?"]())?empty_line["$[]"](children.$first()):$ret_or_1);)children.$shift();for(;$truthy($truthy($ret_or_1=children["$any?"]())?empty_line["$[]"](children.$last()):$ret_or_1);)children.$pop();return children}),1),self.$private(),$def(self,"$compile_child",(function(child){var $ret_or_1,value=nil;return $eqeqeq("str",$ret_or_1=child.$type())?(value=child.$loc().$expression().$source(),$truthy(value["$include?"]("self"))&&this.$scope().$self(),this.$push($$("Fragment").$new(value,this.$scope(),child))):$eqeqeq("begin",$ret_or_1)||$eqeqeq("gvar",$ret_or_1)||$eqeqeq("ivar",$ret_or_1)||$eqeqeq("nil",$ret_or_1)?this.$push(this.$expr(child)):this.$raise("Unsupported xstr part: "+child.$type())}),1),$def(self,"$compile_single_line",(function(children){var single_child,has_embeded_return=nil,first_child=nil,$ret_or_1=nil,last_child=nil,last_value=nil;return has_embeded_return=!1,first_child=children.$shift(),single_child=children["$empty?"](),first_child=$truthy($ret_or_1=first_child)?$ret_or_1:this.$s("nil"),$eqeq(first_child.$type(),"str")&&(has_embeded_return=first_child.$loc().$expression().$source().$strip()["$=~"](/^return\b/)),$truthy(this.returning)&&$not(has_embeded_return)&&this.$push("return "),last_child=$truthy($ret_or_1=children.$pop())?$ret_or_1:first_child,$eqeq(last_child.$type(),"str")&&(last_value=this.$extract_last_value(last_child)),$truthy(single_child)||(this.should_add_semicolon=!1,this.$compile_child(first_child),$send(children,"each",[],(function $$5(c){return null==c&&(c=nil),(null==$$5.$$s?this:$$5.$$s).$compile_child(c)}),{$$arity:1,$$s:this})),$eqeq(last_child.$type(),"str")?this.$push($$("Fragment").$new(last_value,this.$scope(),last_child)):this.$compile_child(last_child)}),1),$def(self,"$extract_last_value",(function(last_child){var last_value=nil;return last_value=last_child.$loc().$expression().$source().$rstrip(),$truthy(last_value["$include?"]("self"))&&this.$scope().$self(),($truthy(this.returning)||$truthy(this["$expr?"]()))&&$truthy(last_value["$end_with?"](";"))&&(this.$compiler().$warning("Removed semicolon ending x-string expression, interpreted as unintentional",last_child.$line()),last_value=last_value["$[]"]($range(0,-2,!1))),$truthy(this.returning)&&(this.should_add_semicolon=!0),last_value}),1),$def(self,"$unpack_return",(function(children){var first_child=nil;return first_child=children.$first(),this.returning=!1,$eqeq(first_child.$type(),"js_return")&&(this.returning=!0,children=first_child.$children()),children}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/lambda"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send=Opal.send,$def=Opal.def;return Opal.add_stubs("require,handle,children,helper,defines_lambda,scope,push,expr,iter"),self.$require("opal/nodes/call"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"LambdaNode");return self.$handle("lambda"),self.$children("iter"),$def(self,"$compile",(function(){return this.$helper("lambda"),$send(this.$scope(),"defines_lambda",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return self.$push("$lambda(",self.$expr(self.$iter()),")")}),{$$arity:0,$$s:this})}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes"]=function(Opal){var self=Opal.top;Opal.nil;return Opal.add_stubs("require"),self.$require("opal/nodes/base"),self.$require("opal/nodes/literal"),self.$require("opal/nodes/variables"),self.$require("opal/nodes/constants"),self.$require("opal/nodes/call"),self.$require("opal/nodes/csend"),self.$require("opal/nodes/call_special"),self.$require("opal/nodes/module"),self.$require("opal/nodes/class"),self.$require("opal/nodes/singleton_class"),self.$require("opal/nodes/args"),self.$require("opal/nodes/args/arity_check"),self.$require("opal/nodes/iter"),self.$require("opal/nodes/def"),self.$require("opal/nodes/defs"),self.$require("opal/nodes/if"),self.$require("opal/nodes/logic"),self.$require("opal/nodes/definitions"),self.$require("opal/nodes/yield"),self.$require("opal/nodes/rescue"),self.$require("opal/nodes/super"),self.$require("opal/nodes/top"),self.$require("opal/nodes/while"),self.$require("opal/nodes/hash"),self.$require("opal/nodes/array"),self.$require("opal/nodes/defined"),self.$require("opal/nodes/masgn"),self.$require("opal/nodes/arglist"),self.$require("opal/nodes/x_string"),self.$require("opal/nodes/lambda")},Opal.modules["opal/eof_content"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$eqeq=Opal.eqeq,$range=Opal.range,$to_ary=Opal.to_ary;return Opal.add_stubs("empty?,[],last_token_position,drop_while,lines,==,join,private,last,end_pos"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"EofContent"),$nesting=[self].concat($parent_nesting),$proto=self.$$prototype;return $proto.tokens=$proto.source=nil,$const_set($nesting[0],"DATA_SEPARATOR","__END__\n"),$def(self,"$initialize",(function(tokens,source){return this.tokens=tokens,this.source=source}),2),$def(self,"$eof",(function(){var eof_content=nil,$ret_or_1=nil;return $truthy(this.tokens["$empty?"]())?nil:(eof_content=this.source["$[]"](Opal.Range.$new(this.$last_token_position(),-1,!1)),$truthy(eof_content)?(eof_content=$send(eof_content.$lines(),"drop_while",[],(function(line){return null==line&&(line=nil),line["$=="]("\n")}),1),$eqeq(eof_content["$[]"](0),"__END__\n")?(eof_content=$truthy($ret_or_1=eof_content["$[]"]($range(1,-1,!1)))?$ret_or_1:[]).$join():$eqeq(eof_content,["__END__"])?"":nil):nil)}),0),self.$private(),$def(self,"$last_token_position",(function(){var $a,$b,last_token_info;return $b=this.tokens.$last(),null==($a=$to_ary($b))[0]?nil:$a[0],last_token_info=null==$a[1]?nil:$a[1],null==($a=$to_ary($b=last_token_info))[0]?nil:$a[0],(null==$a[1]?nil:$a[1]).$end_pos()}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/errors"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$defs=Opal.defs,$rb_plus=Opal.rb_plus,$alias=Opal.alias;return Opal.add_stubs("attr_reader,attr_accessor,new,respond_to?,location,location=,-,diagnostic,diagnostic=,to_a,backtrace,unshift,to_s,set_backtrace,path,lineno,+,label,line,lineno=,source_line,label=,expression"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $klass($nesting[0],$$("StandardError"),"Error"),function($base,$super){var self=$klass($base,$super,"GemNotFound");self.$attr_reader("gem_name"),$def(self,"$initialize",(function $$initialize(gem_name){return delete $$initialize.$$p,this.gem_name=gem_name,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",["can't find gem "+gem_name],null)}),1)}($nesting[0],$$("Error")),function($base,$super){$klass($base,$super,"CompilationError").$attr_accessor("location")}($nesting[0],$$("Error")),$klass($nesting[0],$$("CompilationError"),"ParsingError"),$klass($nesting[0],$$("ParsingError"),"RewritingError"),function($base,$super){$klass($base,$super,"SyntaxError").$attr_accessor("location")}($nesting[0],$$$("SyntaxError")),$defs(self,"$opal_location_from_error",(function(error){var opal_location,$writer=nil;return opal_location=$$("OpalBacktraceLocation").$new(),$truthy(error["$respond_to?"]("location"))&&($writer=[error.$location()],$send(opal_location,"location=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy(error["$respond_to?"]("diagnostic"))&&($writer=[error.$diagnostic()],$send(opal_location,"diagnostic=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),opal_location}),1),$defs(self,"$add_opal_location_to_error",(function(opal_location,error){var backtrace=nil;return(backtrace=error.$backtrace().$to_a()).$unshift(opal_location.$to_s()),error.$set_backtrace(backtrace),error}),2),function($base,$super){var self=$klass($base,null,"OpalBacktraceLocation");return self.$attr_accessor("path","lineno","label"),$def(self,"$initialize",(function(path,lineno,label){var $a;return null==path&&(path=nil),null==lineno&&(lineno=nil),null==label&&(label=nil),$a=[path,lineno,label],this.path=$a[0],this.lineno=$a[1],this.label=$a[2],$a}),-1),$def(self,"$to_s",(function(){var string=nil;return string=this.$path(),$truthy(this.$lineno())&&(string=$rb_plus(string,":"+this.$lineno())),string=$rb_plus(string,":in "),string=$truthy(this.$label())?$rb_plus(string,"`"+this.$label()+"'"):$rb_plus(string,"unknown")}),0),$alias(self,"line","lineno"),$def(self,"$diagnostic=",(function(diagnostic){var $writer;return $truthy(diagnostic)?($writer=[diagnostic.$location()],$send(this,"location=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),1),$def(self,"$location=",(function(location){var $writer=nil;return $truthy(location)?($writer=[location.$line()],$send(this,"lineno=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(location["$respond_to?"]("source_line"))?($writer=[location.$source_line()],$send(this,"label=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):$truthy(location["$respond_to?"]("expression"))?($writer=[location.$expression().$source_line()],$send(this,"label=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil):nil}),1)}($nesting[0])}($nesting[0],$nesting)},Opal.modules["opal/magic_comments"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$module=Opal.module,$const_set=Opal.const_set,$hash2=Opal.hash2,$truthy=Opal.truthy,$send=Opal.send,$rb_ge=Opal.rb_ge,$eqeqeq=Opal.eqeqeq,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$defs=Opal.defs;return Opal.add_stubs("freeze,line,loc,take,each,>=,any?,scan,text,to_sym,===,[]=,-"),function($base,$parent_nesting){var self=$module($base,"MagicComments"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"MAGIC_COMMENT_RE",/^# *(\w+) *: *(\S+.*?) *$/.$freeze()),$const_set($nesting[0],"EMACS_MAGIC_COMMENT_RE",/^# *-\*- *(\w+) *: *(\S+.*?) *-\*- *$/.$freeze()),$defs(self,"$parse",(function(sexp,comments){var flags,first_line=nil;return flags=$hash2([],{}),$truthy(sexp)&&(first_line=sexp.$loc().$line(),comments=comments.$take(first_line)),$send(comments,"each",[],(function(comment){var parts=nil;return null==comment&&(comment=nil),$truthy(first_line)&&$truthy($rb_ge(comment.$loc().$line(),first_line))?nil:$truthy((parts=comment.$text().$scan($$("MAGIC_COMMENT_RE")))["$any?"]())||$truthy((parts=comment.$text().$scan($$("EMACS_MAGIC_COMMENT_RE")))["$any?"]())?$send(parts,"each",[],(function(key,value){var $writer,$ret_or_1;return null==key&&(key=nil),null==value&&(value=nil),$writer=[key.$to_sym(),$eqeqeq("true",$ret_or_1=value)||!$eqeqeq("false",$ret_or_1)&&value],$send(flags,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),2):nil}),1),flags}),2)}($$("Opal"),$nesting)},Opal.modules["opal/compiler"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$hash2=Opal.hash2,$defs=Opal.defs,$klass=Opal.klass,$const_set=Opal.const_set,$send=Opal.send,$truthy=Opal.truthy,$not=Opal.not,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$Opal=Opal.Opal,$to_ary=Opal.to_ary,$alias=Opal.alias,$eqeqeq=Opal.eqeqeq,$regexp=Opal.regexp,$rb_plus=Opal.rb_plus,$slice=Opal.slice,$eqeq=Opal.eqeq;return Opal.add_stubs("require,compile,new,freeze,join,dirname,first,split,basename,to_s,cleanpath,Pathname,fetch,define_method,option_value,key?,[],!,include?,raise,inspect,[]=,-,compiler_option,attr_reader,attr_accessor,parse,re_raise_with_location,flatten,process,end_with?,code,last,<<,fragment,s,map,to_proc,file,source=,default_parser,tokenize,requirable?,eval?,tap,meta,associate_locations,eof,magic_comments,to_sym,strip,async_await_before_typecasting,===,async_await_set_to_regexp,to_a,gsub,escape,location=,opal_location_from_error,path=,label,lines,to_i,line,label=,message,set_backtrace,backtrace,add_opal_location_to_error,warn,empty?,+,start_with?,helpers,new_temp,queue_temp,push_while,pop_while,in_while?,nil?,scope,handlers,type,compile_to_fragments,error,returns,updated,children,==,uses_block!,block_name,find_parent_def,cache,source_map"),self.$require("set"),self.$require("opal/parser"),self.$require("opal/fragment"),self.$require("opal/nodes"),self.$require("opal/eof_content"),self.$require("opal/errors"),self.$require("opal/magic_comments"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$compile",(function(source,options){return null==options&&(options=$hash2([],{})),$$("Compiler").$new(source,options).$compile()}),-2),function($base,$super,$parent_nesting){var self=$klass($base,null,"Compiler"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.option_values=$proto.options=$proto.magic_comments=$proto.fragments=$proto.source=$proto.buffer=$proto.source_map=$proto.result=$proto.helpers=$proto.method_calls=$proto.async_await=$proto.indent=$proto.unique=$proto.scope=$proto.case_stmt=$proto.handlers=$proto.requires=$proto.required_trees=$proto.autoloads=nil,$const_set($nesting[0],"INDENT"," "),$const_set($nesting[0],"COMPARE",["<",">","<=",">="].$freeze()),$defs(self,"$module_name",(function(path){return path=$$("File").$join($$("File").$dirname(path),$$("File").$basename(path).$split(".").$first()),this.$Pathname(path).$cleanpath().$to_s()}),1),$defs(self,"$compiler_option",(function(name,config){var method_name;return null==config&&(config=$hash2([],{})),method_name=config.$fetch("as",name),$send(this,"define_method",[method_name],(function $$1(){return(null==$$1.$$s?this:$$1.$$s).$option_value(name,config)}),{$$arity:0,$$s:this})}),-2),$def(self,"$option_value",(function(name,config){var default_value,magic_comment,$writer,valid_values=nil,value=nil;return $truthy(this.option_values["$key?"](name))?this.option_values["$[]"](name):(default_value=config["$[]"]("default"),valid_values=config["$[]"]("valid_values"),magic_comment=config["$[]"]("magic_comment"),value=this.options.$fetch(name,default_value),$truthy(magic_comment)&&$truthy(this.magic_comments["$key?"](name))&&(value=this.magic_comments.$fetch(name)),$truthy(valid_values)&&$not(valid_values["$include?"](value))&&this.$raise($$("ArgumentError"),"invalid value "+value.$inspect()+" for option "+name.$inspect()+" (valid values: "+valid_values.$inspect()+")"),$writer=[name,value],$send(this.option_values,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),2),self.$compiler_option("file",$hash2(["default"],{default:"(file)"})),self.$compiler_option("method_missing",$hash2(["default","as"],{default:!0,as:"method_missing?"})),self.$compiler_option("arity_check",$hash2(["default","as"],{default:!1,as:"arity_check?"})),self.$compiler_option("freezing",$hash2(["default","as"],{default:!0,as:"freezing?"})),self.$compiler_option("irb",$hash2(["default","as"],{default:!1,as:"irb?"})),self.$compiler_option("dynamic_require_severity",$hash2(["default","valid_values"],{default:"ignore",valid_values:["error","warning","ignore"]})),self.$compiler_option("requirable",$hash2(["default","as"],{default:!1,as:"requirable?"})),self.$compiler_option("esm",$hash2(["default","as"],{default:!1,as:"esm?"})),self.$compiler_option("inline_operators",$hash2(["default","as"],{default:!0,as:"inline_operators?"})),self.$compiler_option("eval",$hash2(["default","as"],{default:!1,as:"eval?"})),self.$compiler_option("enable_source_location",$hash2(["default","as"],{default:!1,as:"enable_source_location?"})),self.$compiler_option("use_strict",$hash2(["default","as","magic_comment"],{default:!1,as:"use_strict?",magic_comment:!0})),self.$compiler_option("parse_comments",$hash2(["default","as"],{default:!1,as:"parse_comments?"})),self.$compiler_option("scope_variables",$hash2(["default"],{default:[]})),self.$compiler_option("await",$hash2(["default","as","magic_comment"],{default:!1,as:"async_await",magic_comment:!0})),self.$attr_reader("result"),self.$attr_reader("fragments"),self.$attr_accessor("scope"),self.$attr_accessor("top_scope"),self.$attr_reader("case_stmt"),self.$attr_reader("eof_content"),self.$attr_reader("comments"),self.$attr_reader("magic_comments"),$def(self,"$initialize",(function(source,options){return null==options&&(options=$hash2([],{})),this.source=source,this.indent="",this.unique=0,this.options=options,this.comments=$$("Hash").$new([]),this.case_stmt=nil,this.option_values=$hash2([],{}),this.magic_comments=$hash2([],{})}),-2),$def(self,"$compile",(function(){return this.$parse(),this.fragments=$send(this,"re_raise_with_location",[],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;return null==self.sexp&&(self.sexp=nil),self.$process(self.sexp).$flatten()}),{$$arity:0,$$s:this}),$truthy(this.fragments.$last().$code()["$end_with?"]("\n"))||this.fragments["$<<"](this.$fragment("\n",nil,this.$s("newline"))),this.result=$send(this.fragments,"map",[],"code".$to_proc()).$join("")}),0),$def(self,"$parse",(function(){var $a,$b,sexp,comments,tokens,kind,$ret_or_1,$writer=nil;return this.buffer=$$$($$$($Opal,"Parser"),"SourceBuffer").$new(this.$file(),1),$writer=[this.source],$send(this.buffer,"source=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.parser=$$$($$("Opal"),"Parser").$default_parser(),$b=$send(this,"re_raise_with_location",[],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return null==self.parser&&(self.parser=nil),null==self.buffer&&(self.buffer=nil),self.parser.$tokenize(self.buffer)}),{$$arity:0,$$s:this}),sexp=null==($a=$to_ary($b))[0]?nil:$a[0],comments=null==$a[1]?nil:$a[1],tokens=null==$a[2]?nil:$a[2],kind=$truthy(this["$requirable?"]())?"require":$truthy(this["$eval?"]())?"eval":"main",this.sexp=$send(this.$s("top",$truthy($ret_or_1=sexp)?$ret_or_1:this.$s("nil")),"tap",[],(function(i){return null==i&&(i=nil),$writer=["kind",kind],$send(i.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),this.comments=$$$($$$($$$("Parser"),"Source"),"Comment").$associate_locations(sexp,comments),this.magic_comments=$$("MagicComments").$parse(sexp,comments),this.eof_content=$$("EofContent").$new(tokens,this.source).$eof()}),0),$def(self,"$source_map",(function(){var $ret_or_1;return $truthy($ret_or_1=this.source_map)?$ret_or_1:$$$($$$($Opal,"SourceMap"),"File").$new(this.fragments,this.$file(),this.source,this.result)}),0),$def(self,"$helpers",(function(){var $ret_or_1;return this.helpers=$truthy($ret_or_1=this.helpers)?$ret_or_1:$$("Set").$new($send(this.$magic_comments()["$[]"]("helpers").$to_s().$split(","),"map",[],(function(h){return null==h&&(h=nil),h.$strip().$to_sym()}),1))}),0),$def(self,"$method_calls",(function(){var $ret_or_1;return this.method_calls=$truthy($ret_or_1=this.method_calls)?$ret_or_1:$$("Set").$new()}),0),$alias(self,"async_await_before_typecasting","async_await"),$def(self,"$async_await",(function(){var $a,original=nil,$ret_or_1=nil;return $truthy(null!=($a=this.async_await)&&$a!==nil?"instance-variable":nil)?this.async_await:(original=this.$async_await_before_typecasting(),this.async_await=$eqeqeq($$("String"),$ret_or_1=original)?this.$async_await_set_to_regexp($send(original.$split(","),"map",[],(function(h){return null==h&&(h=nil),h.$strip().$to_sym()}),1)):$eqeqeq($$("Array"),$ret_or_1)||$eqeqeq($$("Set"),$ret_or_1)?this.$async_await_set_to_regexp($send(original.$to_a(),"map",[],"to_sym".$to_proc())):$eqeqeq($$("Regexp"),$ret_or_1)||$eqeqeq(!0,$ret_or_1)||$eqeqeq(!1,$ret_or_1)?original:this.$raise("A value of await compiler option can be either a Set, an Array, a String or a Boolean."))}),0),$def(self,"$async_await_set_to_regexp",(function(set){return set=(set=$send(set,"map",[],(function(name){return null==name&&(name=nil),$$("Regexp").$escape(name.$to_s()).$gsub("\\*",".*?")}),1)).$join("|"),$regexp(["^(",set,")$"])}),1),$def(self,"$error",(function(msg,line){var error,$writer;return null==line&&(line=nil),error=$$$($Opal,"SyntaxError").$new(msg),$writer=[$$$($$("Opal"),"OpalBacktraceLocation").$new(this.$file(),line)],$send(error,"location=",$to_a($writer)),$rb_minus($writer.length,1),this.$raise(error)}),-2),$def(self,"$re_raise_with_location",(function $$re_raise_with_location(){var $yield=$$re_raise_with_location.$$p||nil,error=nil,opal_location=nil,$writer=nil,new_error=nil;delete $$re_raise_with_location.$$p;try{return Opal.yieldX($yield,[])}catch($err){if(!Opal.rescue($err,[$$("StandardError"),$$$($Opal,"SyntaxError")]))throw $err;error=$err;try{return opal_location=$Opal.$opal_location_from_error(error),$writer=[this.$file()],$send(opal_location,"path=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(opal_location.$label())||($writer=[this.source.$lines()["$[]"]($rb_minus(opal_location.$line().$to_i(),1)).$strip()],$send(opal_location,"label=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),(new_error=$$$($Opal,"SyntaxError").$new(error.$message())).$set_backtrace(error.$backtrace()),$Opal.$add_opal_location_to_error(opal_location,new_error),this.$raise(new_error)}finally{Opal.pop_exception()}}}),0),$def(self,"$warning",(function(msg,line){return null==line&&(line=nil),this.$warn("warning: "+msg+" -- "+this.$file()+":"+line)}),-2),$def(self,"$parser_indent",(function(){return this.indent}),0),$def(self,"$s",(function(type,$a){var children;return children=Opal.slice.call(arguments,1),$$$($$$($Opal,"AST"),"Node").$new(type,children)}),-2),$def(self,"$fragment",(function(str,scope,sexp){return null==sexp&&(sexp=nil),$$("Fragment").$new(str,scope,sexp)}),-3),$def(self,"$unique_temp",(function(name){var unique;return name=name.$to_s(),$truthy(name)&&$not(name["$empty?"]())&&(name=name.$to_s().$gsub("<=>","$lt_eq_gt").$gsub("===","$eq_eq_eq").$gsub("==","$eq_eq").$gsub("=~","$eq_tilde").$gsub("!~","$excl_tilde").$gsub("!=","$not_eq").$gsub("<=","$lt_eq").$gsub(">=","$gt_eq").$gsub("=","$eq").$gsub("?","$ques").$gsub("!","$excl").$gsub("/","$slash").$gsub("%","$percent").$gsub("+","$plus").$gsub("-","$minus").$gsub("<","$lt").$gsub(">","$gt").$gsub(/[^\w\$]/,"$")),unique=this.unique=$rb_plus(this.unique,1),""+($truthy(name["$start_with?"]("$"))?nil:"$")+name+"$"+unique}),1),$def(self,"$helper",(function(name){return this.$helpers()["$<<"](name)}),1),$def(self,"$indent",(function $$indent(){var indent,res,$yield=$$indent.$$p||nil;return delete $$indent.$$p,indent=this.indent,this.indent=$rb_plus(this.indent,$$("INDENT")),this.space="\n"+this.indent,res=Opal.yieldX($yield,[]),this.indent=indent,this.space="\n"+this.indent,res}),0),$def(self,"$with_temp",(function $$with_temp(){var tmp,res,$yield=$$with_temp.$$p||nil;return delete $$with_temp.$$p,tmp=this.scope.$new_temp(),res=Opal.yield1($yield,tmp),this.scope.$queue_temp(tmp),res}),0),$def(self,"$in_while",(function $$in_while(){var result,$yield=$$in_while.$$p||nil;return delete $$in_while.$$p,$yield===nil?nil:(this.while_loop=this.scope.$push_while(),result=Opal.yieldX($yield,[]),this.scope.$pop_while(),result)}),0),$def(self,"$in_case",(function $$in_case(){var old,$yield=$$in_case.$$p||nil;return delete $$in_case.$$p,$yield===nil?nil:(old=this.case_stmt,this.case_stmt=$hash2([],{}),Opal.yieldX($yield,[]),this.case_stmt=old)}),0),$def(self,"$in_while?",(function(){return this.scope["$in_while?"]()}),0),$def(self,"$process",(function(sexp,level){var handler=nil;return null==level&&(level="expr"),$truthy(sexp["$nil?"]())?this.$fragment("",this.$scope()):$truthy(handler=this.$handlers()["$[]"](sexp.$type()))?handler.$new(sexp,level,this).$compile_to_fragments():this.$error("Unsupported sexp: "+sexp.$type())}),-2),$def(self,"$handlers",(function(){var $ret_or_1;return this.handlers=$truthy($ret_or_1=this.handlers)?$ret_or_1:$$$($$$($$("Opal"),"Nodes"),"Base").$handlers()}),0),$def(self,"$requires",(function(){var $ret_or_1;return this.requires=$truthy($ret_or_1=this.requires)?$ret_or_1:[]}),0),$def(self,"$required_trees",(function(){var $ret_or_1;return this.required_trees=$truthy($ret_or_1=this.required_trees)?$ret_or_1:[]}),0),$def(self,"$autoloads",(function(){var $ret_or_1;return this.autoloads=$truthy($ret_or_1=this.autoloads)?$ret_or_1:[]}),0),$def(self,"$returns",(function(sexp){var $a,$b,$ret_or_1,when_sexp=nil,then_sexp=nil,body_sexp=nil,resbodies=nil,else_sexp=nil,klass=nil,lvar=nil,body=nil,rescue_sexp=nil,ensure_body=nil,rest=nil,last=nil,cond=nil,true_body=nil,false_body=nil;return $truthy(sexp)?$eqeqeq("undef",$ret_or_1=sexp.$type())?this.$returns(sexp.$updated("begin",[sexp,this.$s("nil")])):$eqeqeq("break",$ret_or_1)||$eqeqeq("next",$ret_or_1)||$eqeqeq("redo",$ret_or_1)||$eqeqeq("retry",$ret_or_1)?sexp:$eqeqeq("yield",$ret_or_1)?sexp.$updated("returnable_yield",nil):$eqeqeq("when",$ret_or_1)?($b=($b=($a=[].concat($to_a(sexp))).length-1)<0?0:$b,when_sexp=$slice.call($a,0,$b),then_sexp=null==$a[$b]?nil:$a[$b],sexp.$updated(nil,[].concat($to_a(when_sexp)).concat([this.$returns(then_sexp)]))):$eqeqeq("rescue",$ret_or_1)?(body_sexp=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],$b=($b=$a.length-1)<1?1:$b,resbodies=$slice.call($a,1,$b),else_sexp=null==$a[$b]?nil:$a[$b],resbodies=$send(resbodies,"map",[],(function $$9(resbody){return null==resbody&&(resbody=nil),(null==$$9.$$s?this:$$9.$$s).$returns(resbody)}),{$$arity:1,$$s:this}),$truthy(else_sexp)&&(else_sexp=this.$returns(else_sexp)),sexp.$updated(nil,[this.$returns(body_sexp)].concat($to_a(resbodies)).concat([else_sexp]))):$eqeqeq("resbody",$ret_or_1)?(klass=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],lvar=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],sexp.$updated(nil,[klass,lvar,this.$returns(body)])):$eqeqeq("ensure",$ret_or_1)?(rescue_sexp=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],ensure_body=null==$a[1]?nil:$a[1],(sexp=sexp.$updated(nil,[this.$returns(rescue_sexp),ensure_body])).$updated("js_return",[sexp])):$eqeqeq("begin",$ret_or_1)||$eqeqeq("kwbegin",$ret_or_1)?($b=($b=($a=[].concat($to_a(sexp))).length-1)<0?0:$b,rest=$slice.call($a,0,$b),last=null==$a[$b]?nil:$a[$b],sexp.$updated(nil,[].concat($to_a(rest)).concat([this.$returns(last)]))):$eqeqeq("while",$ret_or_1)||$eqeqeq("until",$ret_or_1)||$eqeqeq("while_post",$ret_or_1)||$eqeqeq("until_post",$ret_or_1)||$eqeqeq("return",$ret_or_1)||$eqeqeq("js_return",$ret_or_1)||$eqeqeq("returnable_yield",$ret_or_1)?sexp:$eqeqeq("xstr",$ret_or_1)?sexp.$updated(nil,[$send(this,"s",["js_return"].concat($to_a(sexp.$children())))]):$eqeqeq("if",$ret_or_1)?(cond=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],true_body=null==$a[1]?nil:$a[1],false_body=null==$a[2]?nil:$a[2],sexp.$updated(nil,[cond,this.$returns(true_body),this.$returns(false_body)])):$eqeq(sexp.$type(),"send")&&$eqeq(sexp.$children()["$[]"](1),"debugger")?sexp.$updated("begin",[sexp,this.$s("js_return",this.$s("nil"))]):sexp.$updated("js_return",[sexp]):this.$returns(this.$s("nil"))}),1),$def(self,"$handle_block_given_call",(function(sexp){var scope=nil;return this.scope["$uses_block!"](),$truthy(this.scope.$block_name())?this.$fragment("("+this.scope.$block_name()+" !== nil)",this.$scope(),sexp):$truthy(scope=this.scope.$find_parent_def())&&$truthy(scope.$block_name())?this.$fragment("("+scope.$block_name()+" !== nil)",scope,sexp):this.$fragment("false",scope,sexp)}),1),$def(self,"$marshal_dump",(function(){var $ret_or_1;return[this.options,this.option_values,this.source_map=$truthy($ret_or_1=this.source_map)?$ret_or_1:this.$source_map().$cache(),this.magic_comments,this.result,this.required_trees,this.requires,this.autoloads]}),0),$def(self,"$marshal_load",(function(src){var $a,$b;return $a=$to_ary($b=src),this.options=null==$a[0]?nil:$a[0],this.option_values=null==$a[1]?nil:$a[1],this.source_map=null==$a[2]?nil:$a[2],this.magic_comments=null==$a[3]?nil:$a[3],this.result=null==$a[4]?nil:$a[4],this.required_trees=null==$a[5]?nil:$a[5],this.requires=null==$a[6]?nil:$a[6],this.autoloads=null==$a[7]?nil:$a[7],$b}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/erb"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$defs=Opal.defs,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$send=Opal.send,$regexp=Opal.regexp;return Opal.add_stubs("require,compile,new,freeze,fix_quotes,find_contents,find_code,wrap_compiled,require_erb,prepared_source,gsub,+,last_match,=~,sub"),self.$require("opal/compiler"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"ERB"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$compile",(function(source,file_name){return null==file_name&&(file_name="(erb)"),$$("Compiler").$new(source,file_name).$compile()}),-2),function($base,$super,$parent_nesting){var self=$klass($base,null,"Compiler"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.prepared_source=$proto.source=$proto.file_name=nil,$const_set($nesting[0],"BLOCK_EXPR",/\s+(do|\{)(\s*\|[^|]*\|)?\s*\Z/.$freeze()),$def(self,"$initialize",(function(source,file_name){var $a;return null==file_name&&(file_name="(erb)"),$a=[source,file_name,source],this.source=$a[0],this.file_name=$a[1],this.result=$a[2],$a}),-2),$def(self,"$prepared_source",(function(){var $ret_or_1,source=nil;return this.prepared_source=$truthy($ret_or_1=this.prepared_source)?$ret_or_1:(source=this.source,source=this.$fix_quotes(source),source=this.$find_contents(source),source=this.$find_code(source),source=this.$wrap_compiled(source),source=this.$require_erb(source))}),0),$def(self,"$compile",(function(){return $$("Opal").$compile(this.$prepared_source())}),0),$def(self,"$fix_quotes",(function(result){return result.$gsub('"','\\"')}),1),$def(self,"$require_erb",(function(result){return $rb_plus('require "erb";',result)}),1),$def(self,"$find_contents",(function(result){return $send(result,"gsub",[/<%=([\s\S]+?)%>/],(function(){var inner=nil;return inner=$$("Regexp").$last_match(1).$gsub(/\\'/,"'").$gsub(/\\"/,'"'),$truthy(inner["$=~"]($$("BLOCK_EXPR")))?'")\noutput_buffer.append= '+inner+'\noutput_buffer.append("':'")\noutput_buffer.append=('+inner+')\noutput_buffer.append("'}),0)}),1),$def(self,"$find_code",(function(result){return $send(result,"gsub",[/<%([\s\S]+?)%>/],(function(){return'")\n'+$$("Regexp").$last_match(1).$gsub(/\\"/,'"')+'\noutput_buffer.append("'}),0)}),1),$def(self,"$wrap_compiled",(function(result){return"Template.new('"+this.file_name.$sub($regexp(["\\.opalerb",$$("REGEXP_END")]),"")+"') do |output_buffer|\noutput_buffer.append(\""+result+'")\noutput_buffer.join\nend\n'}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/builder_processors"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$send=Opal.send,$def=Opal.def,$eqeq=Opal.eqeq,$Opal=Opal.Opal,$const_set=Opal.const_set,$send2=Opal.send2,$find_super=Opal.find_super,$defs=Opal.defs,$to_a=Opal.to_a;return Opal.add_stubs("require,end_with?,+,dup,delete,cache,attr_reader,to_s,source,join,==,size,new,register_processor,is_a?,match,match_regexp,raise,inspect,handles,map,with_index,each_line,index,filename,mark_as_required,result,compiled,source_map,fetch,cache_key,compiler_for,compile,class,merge,requires,required_trees,autoloads,extname,prepare,private,prepared_source,module_name"),self.$require("opal/compiler"),self.$require("opal/erb"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"BuilderProcessors")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Processor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.options=nil,$def(self,"$initialize",(function(source,filename,options){var $a;return null==options&&(options=$hash2([],{})),$truthy(source["$end_with?"]("\n"))||(source=$rb_plus(source,"\n")),$a=[source,filename,options.$dup()],this.source=$a[0],this.filename=$a[1],this.options=$a[2],this.cache=$send(this.options,"delete",["cache"],(function(){return $$("Opal").$cache()}),0),this.requires=[],this.required_trees=[],this.autoloads=[]}),-3),self.$attr_reader("source","filename","options","requires","required_trees","autoloads"),$def(self,"$to_s",(function(){return this.$source().$to_s()}),0),function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$attr_reader("extensions"),$def(self,"$handles",(function($a){var extensions,self=this,matches=nil;return extensions=Opal.slice.call(arguments),self.extensions=extensions,matches=extensions.$join("|"),$eqeq(extensions.$size(),1)||(matches="("+matches+")"),self.match_regexp=$$("Regexp").$new("\\."+matches+$$("REGEXP_END")),$$$($Opal,"Builder").$register_processor(self,extensions),nil}),-1),$def(self,"$match?",(function(other){var $ret_or_1;return $truthy($ret_or_1=other["$is_a?"]($$("String")))?other.$match(this.$match_regexp()):$ret_or_1}),1),$def(self,"$match_regexp",(function(){var $ret_or_1;return null==this.match_regexp&&(this.match_regexp=nil),$truthy($ret_or_1=this.match_regexp)?$ret_or_1:this.$raise($$("NotImplementedError"))}),0)}(Opal.get_singleton_class(self),$nesting),$def(self,"$mark_as_required",(function(filename){return"Opal.loaded(["+filename.$to_s().$inspect()+"]);"}),1)}($nesting[0],0,$nesting),function($base,$super,$parent_nesting){var self=$klass($base,$super,"JsProcessor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.source_map=$proto.source=$proto.filename=nil,self.$handles("js"),$const_set($nesting[0],"ManualFragment",$$("Struct").$new("line","column","code","source_map_name")),$def(self,"$source_map",(function(){var $ret_or_1,manual_fragments=nil;return this.source_map=$truthy($ret_or_1=this.source_map)?$ret_or_1:(manual_fragments=$send(this.$source().$each_line().$with_index(),"map",[],(function(line_source,index){var column,line;return null==line_source&&(line_source=nil),null==index&&(index=nil),column=line_source.$index(/\S/),line=$rb_plus(index,1),$$("ManualFragment").$new(line,column,line_source,nil)}),2),$$$($$$($Opal,"SourceMap"),"File").$new(manual_fragments,this.$filename(),this.$source()))}),0),$def(self,"$source",(function(){return $rb_plus(this.source.$to_s(),this.$mark_as_required(this.filename))}),0)}($nesting[0],$$("Processor"),$nesting),function($base,$super,$parent_nesting){var self=$klass($base,$super,"RubyProcessor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.compiled=$proto.cache=$proto.filename=$proto.source=$proto.options=nil,self.$handles("rb","opal"),$def(self,"$source",(function(){return this.$compiled().$result()}),0),$def(self,"$source_map",(function(){return this.$compiled().$source_map()}),0),$def(self,"$compiled",(function(){var $ret_or_1;return this.compiled=$truthy($ret_or_1=this.compiled)?$ret_or_1:$send($$$($$("Opal"),"Cache"),"fetch",[this.cache,this.$cache_key()],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s,compiler=nil;return null==self.source&&(self.source=nil),null==self.filename&&(self.filename=nil),(compiler=self.$compiler_for(self.source,$hash2(["file"],{file:self.filename}))).$compile(),compiler}),{$$arity:0,$$s:this})}),0),$def(self,"$cache_key",(function(){return[this.$class(),this.filename,this.source,this.options]}),0),$def(self,"$compiler_for",(function(source,options){return null==options&&(options=$hash2([],{})),$$$($Opal,"Compiler").$new(source,this.options.$merge(options))}),-2),$def(self,"$requires",(function(){return this.$compiled().$requires()}),0),$def(self,"$required_trees",(function(){return this.$compiled().$required_trees()}),0),$def(self,"$autoloads",(function(){return this.$compiled().$autoloads()}),0),$defs(self,"$match?",(function $RubyProcessor_match$ques$5(other){var $ret_or_1,$yield=$RubyProcessor_match$ques$5.$$p||nil;return delete $RubyProcessor_match$ques$5.$$p,$truthy($ret_or_1=$send2(this,$find_super(this,"match?",$RubyProcessor_match$ques$5,!1,!0),"match?",[other],$yield))?$ret_or_1:$$("File").$extname(other.$to_s())["$=="]("")}),1)}($nesting[0],$$("Processor"),$nesting),function($base,$super){var self=$klass($base,$super,"OpalERBProcessor"),$proto=self.$$prototype;$proto.source=$proto.filename=nil,self.$handles("opalerb"),$def(self,"$initialize",(function $$initialize($a){var args,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,args=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a(args),$yield),self.source=self.$prepare(self.source,self.filename)}),-1),$def(self,"$requires",(function $$requires(){var $yield=$$requires.$$p||nil;return delete $$requires.$$p,$rb_plus(["erb"],$send2(this,$find_super(this,"requires",$$requires,!1,!0),"requires",[],$yield))}),0),self.$private(),$def(self,"$prepare",(function(source,path){return $$$($$$($Opal,"ERB"),"Compiler").$new(source,path).$prepared_source()}),2)}($nesting[0],$$("RubyProcessor")),function($base,$super){var self=$klass($base,$super,"ERBProcessor"),$proto=self.$$prototype;return $proto.source=$proto.filename=nil,self.$handles("erb"),$def(self,"$source",(function(){var result;return result=$$$("ERB").$new(this.source.$to_s()).$result(),"Opal.modules["+$$$($Opal,"Compiler").$module_name(this.filename).$inspect()+"] = function() {"+result+"};"}),0)}($nesting[0],$$("Processor"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules.base64=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$defs=Opal.defs,$hash2=Opal.hash2,$truthy=Opal.truthy;return Opal.add_stubs("raise,delete"),function($base,$parent_nesting){var encode,decode,self=$module($base,"Base64"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";return encode=function(input){for(var block,charCode,str=String(input),idx=0,map=chars,output="";str.charAt(0|idx)||(map="=",idx%1);output+=map.charAt(63&block>>8-idx%1*8))(charCode=str.charCodeAt(idx+=3/4))>255&&self.$raise($$("ArgumentError"),"invalid character (failed: The string to be encoded contains characters outside of the Latin1 range.)"),block=block<<8|charCode;return output},decode=function(input){var str=String(input).replace(/=+$/,"");str.length%4==1&&self.$raise($$("ArgumentError"),"invalid base64 (failed: The string to be decoded is not correctly encoded.)");for(var bs,buffer,bc=0,idx=0,output="";buffer=str.charAt(idx++);~buffer&&(bs=bc%4?64*bs+buffer:buffer,bc++%4)?output+=String.fromCharCode(255&bs>>(-2*bc&6)):0)buffer=chars.indexOf(buffer);return output},$defs(self,"$decode64",(function(string){return decode(string.replace(/\r?\n/g,""))}),1),$defs(self,"$encode64",(function(string){return encode(string).replace(/(.{60})/g,"$1\n").replace(/([^\n])$/g,"$1\n")}),1),$defs(self,"$strict_decode64",(function(string){return decode(string)}),1),$defs(self,"$strict_encode64",(function(string){return encode(string)}),1),$defs(self,"$urlsafe_decode64",(function(string){return decode(string.replace(/\-/g,"+").replace(/_/g,"/"))}),1),$defs(self,"$urlsafe_encode64",(function(string,$kwargs){var padding,str=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(padding=$kwargs.$$smap.padding)&&(padding=!0),str=encode(string).replace(/\+/g,"-").replace(/\//g,"_"),$truthy(padding)||(str=str.$delete("=")),str}),-2)}($nesting[0],$nesting)},Opal.modules["corelib/pack_unpack/format_string_parser"]=function(Opal){Opal.nil;var self,directives,modifiers,$$$=Opal.$$$,$module=Opal.module,$Kernel=Opal.Kernel;return Opal.add_stubs("raise"),self=$module("::","PackUnpack"),directives=["C","S","L","Q","J","c","s","l","q","j","n","N","v","V","U","w","D","d","F","f","E","e","G","g","A","a","Z","B","b","H","h","u","M","m","P","p","@","X","x"],modifiers=["!","_",">","<"],void(self.eachDirectiveAndCount=function(format,callback){var currentDirective,currentCount,currentModifiers,countSpecified;function reset(){currentDirective=null,currentCount=0,currentModifiers=[],countSpecified=!1}function yieldAndReset(){null!=currentDirective?(!/[sSiIlLqQjJ]/.test(currentDirective)&¤tModifiers.length>0&&$Kernel.$raise($$$("ArgumentError"),"'"+currentModifiers[0]+"' allowed only after types sSiIlLqQjJ"),-1!==currentModifiers.indexOf("<")&&-1!==currentModifiers.indexOf(">")&&$Kernel.$raise($$$("RangeError"),"Can't use both '<' and '>'"),countSpecified||(currentCount=1),-1!==currentModifiers.indexOf(">")&&(currentDirective+=">"),callback(currentDirective,currentCount),reset()):reset()}reset();for(var i=0;i,length,inspect,[],unpack"),self.$require("base64"),self.$require("corelib/pack_unpack/format_string_parser"),function($base,$super,$parent_nesting){var self=$klass("::",null,"String"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),expected=nil,given=nil,eachDirectiveAndCount=Opal.PackUnpack.eachDirectiveAndCount;function mapChunksToWords(callback){return function(data){return callback(data).map((function(chunk){return chunk.reverse().reduce((function(result,singleByte){return 256*result+singleByte}),0)}))}}function chunkBy(chunkSize,callback){return function(data){for(var array=callback(data),chunks=[],chunksCount=array.length/chunkSize,i=0;i=limit/2&&(n-=limit),n}))}}function bytesToAsciiChars(callback){return function(data){return callback(data).map((function(singleByte){return String.fromCharCode(singleByte)}))}}function joinChars(callback){return function(data){return callback(data).join("")}}function wrapIntoArray(callback){return function(data){return[callback(data)]}}var charCodesToFilter,filterTrailingZerosAndSpaces=(charCodesToFilter=["\0"," "].map((function(s){return s.charCodeAt(0)})),function(callback){return function(data){for(var charCodes=callback(data);-1!==charCodesToFilter.indexOf(charCodes[charCodes.length-1]);)charCodes=charCodes.slice(0,charCodes.length-1);return charCodes}});function invertChunks(callback){return function(data){return callback(data).map((function(chunk){return chunk.reverse()}))}}function identityFunction(value){return value}var callback,handlers={C:identityFunction,S:mapChunksToWords(chunkBy(2,identityFunction)),L:mapChunksToWords(chunkBy(4,identityFunction)),Q:mapChunksToWords(chunkBy(8,identityFunction)),J:null,"S>":mapChunksToWords(invertChunks(chunkBy(2,identityFunction))),"L>":mapChunksToWords(invertChunks(chunkBy(4,identityFunction))),"Q>":mapChunksToWords(invertChunks(chunkBy(8,identityFunction))),c:toNByteSigned(1,identityFunction),s:toNByteSigned(2,mapChunksToWords(chunkBy(2,identityFunction))),l:toNByteSigned(4,mapChunksToWords(chunkBy(4,identityFunction))),q:toNByteSigned(8,mapChunksToWords(chunkBy(8,identityFunction))),j:null,"s>":toNByteSigned(2,mapChunksToWords(invertChunks(chunkBy(2,identityFunction)))),"l>":toNByteSigned(4,mapChunksToWords(invertChunks(chunkBy(4,identityFunction)))),"q>":toNByteSigned(8,mapChunksToWords(invertChunks(chunkBy(8,identityFunction)))),n:null,N:null,v:null,V:null,U:identityFunction,w:(callback=identityFunction,function(data){for(var bytes=callback(data),result=[],buffer="",i=0;i45)return"";for(length+=n;n>0;){var c1=bytes[i],c2=bytes[i+1],c3=bytes[i+2],b1=(c1-32&63)<<2|(c2-32&63)>>4,b2=(c2-32&63)<<4|(c3-32&63)>>2,b3=(c3-32&63)<<6|bytes[i+3]-32&63;result.push(255&b1),result.push(255&b2),result.push(255&b3),i+=4,n-=3}++i}}return result.slice(0,length)}}(identityFunction))),M:function(callback){return function(data){return callback(data).replace(/[\t\x20]$/gm,"").replace(/=(?:\r\n?|\n|$)/g,"").replace(/=([a-fA-F0-9]{2})/g,(function($0,$1){var codePoint=parseInt($1,16);return String.fromCharCode(codePoint)}))}}(joinChars(bytesToAsciiChars(identityFunction))),m:function(callback){return function(data){return $$("Base64").$decode64(callback(data))}}(joinChars(bytesToAsciiChars(identityFunction))),P:null,p:null};function readBytes(n){return function(bytes){return{chunk:bytes.slice(0,n),rest:bytes=bytes.slice(n,bytes.length)}}}function readNTimesAndMerge(callback){return function(buffer,count){var chunkData,chunk=[];if(count===1/0)for(;buffer.length>0;)buffer=(chunkData=callback(buffer)).rest,chunk=chunk.concat(chunkData.chunk);else for(var i=0;i":readNTimesAndMerge(readBytes(2)),"L>":readNTimesAndMerge(readBytes(4)),"Q>":readNTimesAndMerge(readBytes(8)),c:readNTimesAndMerge(readBytes(1)),s:readNTimesAndMerge(readBytes(2)),l:readNTimesAndMerge(readBytes(4)),q:readNTimesAndMerge(readBytes(8)),j:null,"s>":readNTimesAndMerge(readBytes(2)),"l>":readNTimesAndMerge(readBytes(4)),"q>":readNTimesAndMerge(readBytes(8)),n:null,N:null,v:null,V:null,U:readNTimesAndMerge((function(bytes){var currentByteIndex=0,bytesLength=bytes.length;function readByte(){var result=bytes[currentByteIndex++];return bytesLength=bytes.length-currentByteIndex,result}var extraLength,c=readByte();if(c>>7==0)return{chunk:[c],rest:bytes.slice(currentByteIndex)};c>>6==2&&$Kernel.$raise($$$("ArgumentError"),"malformed UTF-8 character"),c>>5==6?extraLength=1:c>>4==14?extraLength=2:c>>3==30?extraLength=3:c>>2==62?extraLength=4:c>>1==126?extraLength=5:$Kernel.$raise("malformed UTF-8 character"),extraLength>bytesLength&&(expected=extraLength+1,given=bytesLength+1,$Kernel.$raise($$$("ArgumentError"),"malformed UTF-8 character (expected "+expected+" bytes, given "+given+" bytes)"));for(var result=c&(1<<8-extraLength-1)-1,i=0;i>6!=2&&$Kernel.$raise("Invalid multibyte sequence"),result=result<<6|63&c;return result<=65535?{chunk:[result],rest:bytes.slice(currentByteIndex)}:{chunk:[55296+((result-=65536)>>10&1023),56320+(1023&result)],rest:bytes.slice(currentByteIndex)}})),w:readNTimesAndMerge((function(buffer){for(var result=[],i=0;i0&&buffer.length>0;){var singleByte=buffer[0],bitsToTake=Math.min(count,8);Math.ceil(bitsToTake/8);if(buffer=buffer.slice(1,buffer.length),null!=singleByte){var bits=singleByte.toString(2);bits=Array(8-bits.length+1).join("0").concat(bits);for(var j=0;j0&&buffer.length>0;){var singleByte=buffer[0],bitsToTake=Math.min(count,8);Math.ceil(bitsToTake/8);if(buffer=buffer.slice(1,buffer.length),null!=singleByte){var bits=singleByte.toString(2);bits=Array(8-bits.length+1).join("0").concat(bits).split("").reverse().join("");for(var j=0;j0&&buffer.length>0;){var hex=buffer[0].toString(16);buffer=buffer.slice(1,buffer.length),hex=Array(2-hex.length+1).join("0").concat(hex),1===count?(result.push(hex[0]),count--):(result.push(hex[0],hex[1]),count-=2)}return{chunk:result,rest:buffer}},h:function(buffer,count){for(var result=[];count>0&&buffer.length>0;){var hex=buffer[0].toString(16);buffer=buffer.slice(1,buffer.length),hex=Array(2-hex.length+1).join("0").concat(hex),1===count?(result.push(hex[1]),count--):(result.push(hex[1],hex[0]),count-=2)}return{chunk:result,rest:buffer}},u:readNTimesAndMerge((function(buffer){var length=buffer.indexOf(32);return-1===length?{chunk:buffer,rest:[]}:{chunk:buffer.slice(0,length),rest:buffer.slice(length,buffer.length)}})),M:readAll,m:readAll,P:null,p:null},autocompletion={C:!0,S:!0,L:!0,Q:!0,J:null,"S>":!0,"L>":!0,"Q>":!0,c:!0,s:!0,l:!0,q:!0,j:null,"s>":!0,"l>":!0,"q>":!0,n:null,N:null,v:null,V:null,U:!1,w:!1,D:null,d:null,F:null,f:null,E:null,e:null,G:null,g:null,A:!1,a:!1,Z:!1,B:!1,b:!1,H:!1,h:!1,u:!1,M:!1,m:!1,P:null,p:null},optimized={"C*":handlers.C,"c*":handlers.c,"A*":handlers.A,"a*":handlers.a,"M*":wrapIntoArray(handlers.M),"m*":wrapIntoArray(handlers.m),"S*":handlers.S,"s*":handlers.s,"L*":handlers.L,"l*":handlers.l,"Q*":handlers.Q,"q*":handlers.q,"S>*":handlers["S>"],"s>*":handlers["s>"],"L>*":handlers["L>"],"l>*":handlers["l>"],"Q>*":handlers["Q>"],"q>*":handlers["q>"]};function alias(existingDirective,newDirective){readChunk[newDirective]=readChunk[existingDirective],handlers[newDirective]=handlers[existingDirective],autocompletion[newDirective]=autocompletion[existingDirective]}return alias("S>","n"),alias("L>","N"),alias("S","v"),alias("L","V"),$def(self,"$unpack",(function(format,$kwargs){var offset;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");null==(offset=$kwargs.$$smap.offset)&&(offset=0),$truthy($rb_lt(offset,0))&&$Kernel.$raise($$$("ArgumentError"),"offset can't be negative"),format=$Opal["$coerce_to!"](format,$$$("String"),"to_str").$gsub(/\s/,"").$delete("\0");var output=[];if("U*"==format&&"UTF-8"===this.internal_encoding.name&&"function"==typeof this.codePointAt){var j=0;output=new Array(this.length);for(var i=offset;i65535&&i++;return output.slice(0,j)}var buffer=this.$bytes();$truthy($rb_gt(offset,buffer.$length()))&&$Kernel.$raise($$$("ArgumentError"),"offset outside of string"),buffer=buffer.slice(offset);var optimizedHandler=optimized[format];if(optimizedHandler)return optimizedHandler(buffer);return eachDirectiveAndCount(format,(function(directive,count){var part=function(directive,count){var chunk,chunkReader=readChunk[directive];null==chunkReader&&$Kernel.$raise("Unsupported unpack directive "+directive.$inspect()+" (no chunk reader defined)");var chunkData=chunkReader(buffer,count);chunk=chunkData.chunk,buffer=chunkData.rest;var handler=handlers[directive];return null==handler&&$Kernel.$raise("Unsupported unpack directive "+directive.$inspect()+" (no handler defined)"),handler(chunk)}(directive,count);if(count!==1/0){var shouldAutocomplete=autocompletion[directive];null==shouldAutocomplete&&$Kernel.$raise("Unsupported unpack directive "+directive.$inspect()+" (no autocompletion rule defined)"),shouldAutocomplete&&function(array,size){for(;array.length> 8 - idx % 1 * 8) + ) { + charCode = str.charCodeAt(idx += 3/4); + if (charCode > 0xFF) { + self.$raise($$('ArgumentError'), "invalid character (failed: The string to be encoded contains characters outside of the Latin1 range.)"); + } + block = block << 8 | charCode; + } + return output; + /* eslint-enable */ + }; + + // decoder + // [https://gist.github.com/1020396] by [https://github.com/atk] + decode = function (input) { + var str = String(input).replace(/=+$/, ''); + if (str.length % 4 == 1) { + self.$raise($$('ArgumentError'), "invalid base64 (failed: The string to be decoded is not correctly encoded.)"); + } + /* eslint-disable */ + for ( + // initialize result and counters + var bc = 0, bs, buffer, idx = 0, output = ''; + // get next character + buffer = str.charAt(idx++); + // character found in table? initialize bit storage and add its ascii value; + ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, + // and if not first of each 4 characters, + // convert the first 8 bits to one ascii character + bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0 + ) { + // try to find character in table (0-63, not found => -1) + buffer = chars.indexOf(buffer); + } + return output; + /* eslint-enable */ + }; + ; + $defs(self, '$decode64', function $$decode64(string) { + + return decode(string.replace(/\r?\n/g, '')); + }, 1); + $defs(self, '$encode64', function $$encode64(string) { + + return encode(string).replace(/(.{60})/g, "$1\n").replace(/([^\n])$/g, "$1\n"); + }, 1); + $defs(self, '$strict_decode64', function $$strict_decode64(string) { + + return decode(string); + }, 1); + $defs(self, '$strict_encode64', function $$strict_encode64(string) { + + return encode(string); + }, 1); + $defs(self, '$urlsafe_decode64', function $$urlsafe_decode64(string) { + + return decode(string.replace(/\-/g, '+').replace(/_/g, '/')); + }, 1); + return $defs(self, '$urlsafe_encode64', function $$urlsafe_encode64(string, $kwargs) { + var padding, str = nil; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + padding = $kwargs.$$smap["padding"]; + if (padding == null) padding = true; + str = encode(string).replace(/\+/g, '-').replace(/\//g, '_'); + if (!$truthy(padding)) { + str = str.$delete("=") + }; + return str; + }, -2); + })($nesting[0], $nesting) +}; + +Opal.modules["corelib/pack_unpack/format_string_parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $Kernel = Opal.Kernel; + + Opal.add_stubs('raise'); + return (function($base) { + var self = $module($base, 'PackUnpack'); + + + + var directives = [ + // Integer + 'C', + 'S', + 'L', + 'Q', + 'J', + + 'c', + 's', + 'l', + 'q', + 'j', + + 'n', + 'N', + 'v', + 'V', + + 'U', + 'w', + + // Float + 'D', + 'd', + 'F', + 'f', + 'E', + 'e', + 'G', + 'g', + + // String + 'A', + 'a', + 'Z', + 'B', + 'b', + 'H', + 'h', + 'u', + 'M', + 'm', + + 'P', + 'p', + + // Misc + '@', + 'X', + 'x' + ]; + + var modifiers = [ + '!', // ignored + '_', // ignored + '>', // big endian + '<' // little endian + ]; + + self.eachDirectiveAndCount = function(format, callback) { + var currentDirective, + currentCount, + currentModifiers, + countSpecified; + + function reset() { + currentDirective = null; + currentCount = 0; + currentModifiers = []; + countSpecified = false; + } + + reset(); + + function yieldAndReset() { + if (currentDirective == null) { + reset(); + return; + } + + var directiveSupportsModifiers = /[sSiIlLqQjJ]/.test(currentDirective); + + if (!directiveSupportsModifiers && currentModifiers.length > 0) { + $Kernel.$raise($$$('ArgumentError'), "'" + (currentModifiers[0]) + "' allowed only after types sSiIlLqQjJ") + } + + if (currentModifiers.indexOf('<') !== -1 && currentModifiers.indexOf('>') !== -1) { + $Kernel.$raise($$$('RangeError'), "Can't use both '<' and '>'") + } + + if (!countSpecified) { + currentCount = 1; + } + + if (currentModifiers.indexOf('>') !== -1) { + currentDirective = currentDirective + '>'; + } + + callback(currentDirective, currentCount); + + reset(); + } + + for (var i = 0; i < format.length; i++) { + var currentChar = format[i]; + + if (directives.indexOf(currentChar) !== -1) { + // Directive char always resets current state + yieldAndReset(); + currentDirective = currentChar; + } else if (currentDirective) { + if (/\d/.test(currentChar)) { + // Count can be represented as a sequence of digits + currentCount = currentCount * 10 + parseInt(currentChar, 10); + countSpecified = true; + } else if (currentChar === '*' && countSpecified === false) { + // Count can be represented by a star character + currentCount = Infinity; + countSpecified = true; + } else if (modifiers.indexOf(currentChar) !== -1 && countSpecified === false) { + // Directives can be specified only after directive and before count + currentModifiers.push(currentChar); + } else { + yieldAndReset(); + } + } + } + + yieldAndReset(); + } + + })('::') +}; + +Opal.modules["corelib/string/unpack"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $Kernel = Opal.Kernel, $hash2 = Opal.hash2, $truthy = Opal.truthy, $rb_lt = Opal.rb_lt, $Opal = Opal.Opal, $rb_gt = Opal.rb_gt, $def = Opal.def; + + Opal.add_stubs('require,flatten,decode64,raise,<,delete,gsub,coerce_to!,>,length,inspect,[],unpack'); + + self.$require("base64"); + self.$require("corelib/pack_unpack/format_string_parser"); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'String'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), expected = nil, given = nil; + + + + // Format Parser + var eachDirectiveAndCount = Opal.PackUnpack.eachDirectiveAndCount; + + function flattenArray(callback) { + return function(data) { + var array = callback(data); + return (array).$flatten(); + } + } + + function mapChunksToWords(callback) { + return function(data) { + var chunks = callback(data); + + return chunks.map(function(chunk) { + return chunk.reverse().reduce(function(result, singleByte) { + return result * 256 + singleByte; + }, 0); + }); + } + } + + function chunkBy(chunkSize, callback) { + return function(data) { + var array = callback(data), + chunks = [], + chunksCount = (array.length / chunkSize); + + for (var i = 0; i < chunksCount; i++) { + var chunk = array.splice(0, chunkSize); + if (chunk.length === chunkSize) { + chunks.push(chunk); + } + } + + return chunks; + } + } + + function toNByteSigned(bytesCount, callback) { + return function(data) { + var unsignedBits = callback(data), + bitsCount = bytesCount * 8, + limit = Math.pow(2, bitsCount); + + return unsignedBits.map(function(n) { + if (n >= limit / 2) { + n -= limit; + } + + return n; + }); + } + } + + function bytesToAsciiChars(callback) { + return function(data) { + var bytes = callback(data); + + return bytes.map(function(singleByte) { + return String.fromCharCode(singleByte); + }); + } + } + + function joinChars(callback) { + return function(data) { + var chars = callback(data); + return chars.join(''); + } + } + + function wrapIntoArray(callback) { + return function(data) { + var object = callback(data); + return [object]; + } + } + + function filterTrailingChars(chars) { + var charCodesToFilter = chars.map(function(s) { return s.charCodeAt(0); }); + + return function(callback) { + return function(data) { + var charCodes = callback(data); + + while (charCodesToFilter.indexOf(charCodes[charCodes.length - 1]) !== -1) { + charCodes = charCodes.slice(0, charCodes.length - 1); + } + + return charCodes; + } + } + } + + var filterTrailingZerosAndSpaces = filterTrailingChars(["\u0000", " "]); + + function invertChunks(callback) { + return function(data) { + var chunks = callback(data); + + return chunks.map(function(chunk) { + return chunk.reverse(); + }); + } + } + + function uudecode(callback) { + return function(data) { + var bytes = callback(data); + + var stop = false; + var i = 0, length = 0; + + var result = []; + + do { + if (i < bytes.length) { + var n = bytes[i] - 32 & 0x3F; + + ++i; + + if (bytes[i] === 10) { + continue; + } + + if (n > 45) { + return ''; + } + + length += n; + + while (n > 0) { + var c1 = bytes[i]; + var c2 = bytes[i + 1]; + var c3 = bytes[i + 2]; + var c4 = bytes[i + 3]; + + var b1 = (c1 - 32 & 0x3F) << 2 | (c2 - 32 & 0x3F) >> 4; + var b2 = (c2 - 32 & 0x3F) << 4 | (c3 - 32 & 0x3F) >> 2; + var b3 = (c3 - 32 & 0x3F) << 6 | c4 - 32 & 0x3F; + + result.push(b1 & 0xFF); + result.push(b2 & 0xFF); + result.push(b3 & 0xFF); + + i += 4; + n -= 3; + } + + ++i; + } else { + break; + } + } while (true); + + return result.slice(0, length); + } + } + + function toBits(callback) { + return function(data) { + var bytes = callback(data); + + var bits = bytes.map(function(singleByte) { + return singleByte.toString(2); + }); + + return bits; + } + } + + function decodeBERCompressedIntegers(callback) { + return function(data) { + var bytes = callback(data), result = [], buffer = ''; + + for (var i = 0; i < bytes.length; i++) { + var singleByte = bytes[i], + bits = singleByte.toString(2); + + bits = Array(8 - bits.length + 1).join('0').concat(bits); + + var firstBit = bits[0]; + bits = bits.slice(1, bits.length); + + buffer = buffer.concat(bits); + + if (firstBit === '0') { + var decoded = parseInt(buffer, 2); + result.push(decoded); + buffer = '' + } + } + + return result; + } + } + + function base64Decode(callback) { + return function(data) { + return $$('Base64').$decode64(callback(data)); + } + } + + // quoted-printable decode + function qpdecode(callback) { + return function(data) { + var string = callback(data); + + return string + .replace(/[\t\x20]$/gm, '') + .replace(/=(?:\r\n?|\n|$)/g, '') + .replace(/=([a-fA-F0-9]{2})/g, function($0, $1) { + var codePoint = parseInt($1, 16); + return String.fromCharCode(codePoint); + }); + } + } + + function identityFunction(value) { return value; } + + var handlers = { + // Integer + 'C': identityFunction, + 'S': mapChunksToWords(chunkBy(2, identityFunction)), + 'L': mapChunksToWords(chunkBy(4, identityFunction)), + 'Q': mapChunksToWords(chunkBy(8, identityFunction)), + 'J': null, + + 'S>': mapChunksToWords(invertChunks(chunkBy(2, identityFunction))), + 'L>': mapChunksToWords(invertChunks(chunkBy(4, identityFunction))), + 'Q>': mapChunksToWords(invertChunks(chunkBy(8, identityFunction))), + + 'c': toNByteSigned(1, identityFunction), + 's': toNByteSigned(2, mapChunksToWords(chunkBy(2, identityFunction))), + 'l': toNByteSigned(4, mapChunksToWords(chunkBy(4, identityFunction))), + 'q': toNByteSigned(8, mapChunksToWords(chunkBy(8, identityFunction))), + 'j': null, + + 's>': toNByteSigned(2, mapChunksToWords(invertChunks(chunkBy(2, identityFunction)))), + 'l>': toNByteSigned(4, mapChunksToWords(invertChunks(chunkBy(4, identityFunction)))), + 'q>': toNByteSigned(8, mapChunksToWords(invertChunks(chunkBy(8, identityFunction)))), + + 'n': null, // aliased later + 'N': null, // aliased later + 'v': null, // aliased later + 'V': null, // aliased later + + 'U': identityFunction, + 'w': decodeBERCompressedIntegers(identityFunction), + + // Float + 'D': null, + 'd': null, + 'F': null, + 'f': null, + 'E': null, + 'e': null, + 'G': null, + 'g': null, + + // String + 'A': wrapIntoArray(joinChars(bytesToAsciiChars(filterTrailingZerosAndSpaces(identityFunction)))), + 'a': wrapIntoArray(joinChars(bytesToAsciiChars(identityFunction))), + 'Z': joinChars(bytesToAsciiChars(identityFunction)), + 'B': joinChars(identityFunction), + 'b': joinChars(identityFunction), + 'H': joinChars(identityFunction), + 'h': joinChars(identityFunction), + 'u': joinChars(bytesToAsciiChars(uudecode(identityFunction))), + 'M': qpdecode(joinChars(bytesToAsciiChars(identityFunction))), + 'm': base64Decode(joinChars(bytesToAsciiChars(identityFunction))), + + 'P': null, + 'p': null + }; + + function readBytes(n) { + return function(bytes) { + var chunk = bytes.slice(0, n); + bytes = bytes.slice(n, bytes.length); + return { chunk: chunk, rest: bytes }; + } + } + + function readUnicodeCharChunk(bytes) { + var currentByteIndex = 0; + var bytesLength = bytes.length; + function readByte() { + var result = bytes[currentByteIndex++]; + bytesLength = bytes.length - currentByteIndex; + return result; + } + + var c = readByte(), extraLength; + + if (c >> 7 == 0) { + // 0xxx xxxx + return { chunk: [c], rest: bytes.slice(currentByteIndex) }; + } + + if (c >> 6 == 0x02) { + $Kernel.$raise($$$('ArgumentError'), "malformed UTF-8 character") + } + + if (c >> 5 == 0x06) { + // 110x xxxx (two bytes) + extraLength = 1; + } else if (c >> 4 == 0x0e) { + // 1110 xxxx (three bytes) + extraLength = 2; + } else if (c >> 3 == 0x1e) { + // 1111 0xxx (four bytes) + extraLength = 3; + } else if (c >> 2 == 0x3e) { + // 1111 10xx (five bytes) + extraLength = 4; + } else if (c >> 1 == 0x7e) { + // 1111 110x (six bytes) + extraLength = 5; + } else { + $Kernel.$raise("malformed UTF-8 character") + } + + if (extraLength > bytesLength) { + ((expected = extraLength + 1), (given = bytesLength + 1), $Kernel.$raise($$$('ArgumentError'), "malformed UTF-8 character (expected " + (expected) + " bytes, given " + (given) + " bytes)")) + } + + // Remove the UTF-8 prefix from the char + var mask = (1 << (8 - extraLength - 1)) - 1, + result = c & mask; + + for (var i = 0; i < extraLength; i++) { + c = readByte(); + + if (c >> 6 != 0x02) { + $Kernel.$raise("Invalid multibyte sequence") + } + + result = (result << 6) | (c & 0x3f); + } + + if (result <= 0xffff) { + return { chunk: [result], rest: bytes.slice(currentByteIndex) }; + } else { + result -= 0x10000; + var high = ((result >> 10) & 0x3ff) + 0xd800, + low = (result & 0x3ff) + 0xdc00; + return { chunk: [high, low], rest: bytes.slice(currentByteIndex) }; + } + } + + function readUuencodingChunk(buffer) { + var length = buffer.indexOf(32); // 32 = space + + if (length === -1) { + return { chunk: buffer, rest: [] }; + } else { + return { chunk: buffer.slice(0, length), rest: buffer.slice(length, buffer.length) }; + } + } + + function readNBitsLSBFirst(buffer, count) { + var result = ''; + + while (count > 0 && buffer.length > 0) { + var singleByte = buffer[0], + bitsToTake = Math.min(count, 8), + bytesToTake = Math.ceil(bitsToTake / 8); + + buffer = buffer.slice(1, buffer.length); + + if (singleByte != null) { + var bits = singleByte.toString(2); + bits = Array(8 - bits.length + 1).join('0').concat(bits).split('').reverse().join(''); + + for (var j = 0; j < bitsToTake; j++) { + result += bits[j] || '0'; + count--; + } + } + } + + return { chunk: [result], rest: buffer }; + } + + function readNBitsMSBFirst(buffer, count) { + var result = ''; + + while (count > 0 && buffer.length > 0) { + var singleByte = buffer[0], + bitsToTake = Math.min(count, 8), + bytesToTake = Math.ceil(bitsToTake / 8); + + buffer = buffer.slice(1, buffer.length); + + if (singleByte != null) { + var bits = singleByte.toString(2); + bits = Array(8 - bits.length + 1).join('0').concat(bits); + + for (var j = 0; j < bitsToTake; j++) { + result += bits[j] || '0'; + count--; + } + } + } + + return { chunk: [result], rest: buffer }; + } + + function readWhileFirstBitIsOne(buffer) { + var result = []; + + for (var i = 0; i < buffer.length; i++) { + var singleByte = buffer[i]; + + result.push(singleByte); + + if ((singleByte & 128) === 0) { + break; + } + } + + return { chunk: result, rest: buffer.slice(result.length, buffer.length) }; + } + + function readTillNullCharacter(buffer, count) { + var result = []; + + for (var i = 0; i < count && i < buffer.length; i++) { + var singleByte = buffer[i]; + + if (singleByte === 0) { + break; + } else { + result.push(singleByte); + } + } + + if (count === Infinity) { + count = result.length; + } + + if (buffer[count] === 0) { + count++; + } + + buffer = buffer.slice(count, buffer.length); + + return { chunk: result, rest: buffer }; + } + + function readHexCharsHighNibbleFirst(buffer, count) { + var result = []; + + while (count > 0 && buffer.length > 0) { + var singleByte = buffer[0], + hex = singleByte.toString(16); + + buffer = buffer.slice(1, buffer.length); + hex = Array(2 - hex.length + 1).join('0').concat(hex); + + if (count === 1) { + result.push(hex[0]); + count--; + } else { + result.push(hex[0], hex[1]); + count -= 2; + } + } + + return { chunk: result, rest: buffer }; + } + + function readHexCharsLowNibbleFirst(buffer, count) { + var result = []; + + while (count > 0 && buffer.length > 0) { + var singleByte = buffer[0], + hex = singleByte.toString(16); + + buffer = buffer.slice(1, buffer.length); + hex = Array(2 - hex.length + 1).join('0').concat(hex); + + if (count === 1) { + result.push(hex[1]); + count--; + } else { + result.push(hex[1], hex[0]); + count -= 2; + } + } + + return { chunk: result, rest: buffer }; + } + + function readNTimesAndMerge(callback) { + return function(buffer, count) { + var chunk = [], chunkData; + + if (count === Infinity) { + while (buffer.length > 0) { + chunkData = callback(buffer); + buffer = chunkData.rest; + chunk = chunk.concat(chunkData.chunk); + } + } else { + for (var i = 0; i < count; i++) { + chunkData = callback(buffer); + buffer = chunkData.rest; + chunk = chunk.concat(chunkData.chunk); + } + } + + return { chunk: chunk, rest: buffer }; + } + } + + function readAll(buffer, count) { + return { chunk: buffer, rest: [] }; + } + + var readChunk = { + // Integer + 'C': readNTimesAndMerge(readBytes(1)), + 'S': readNTimesAndMerge(readBytes(2)), + 'L': readNTimesAndMerge(readBytes(4)), + 'Q': readNTimesAndMerge(readBytes(8)), + 'J': null, + + 'S>': readNTimesAndMerge(readBytes(2)), + 'L>': readNTimesAndMerge(readBytes(4)), + 'Q>': readNTimesAndMerge(readBytes(8)), + + 'c': readNTimesAndMerge(readBytes(1)), + 's': readNTimesAndMerge(readBytes(2)), + 'l': readNTimesAndMerge(readBytes(4)), + 'q': readNTimesAndMerge(readBytes(8)), + 'j': null, + + 's>': readNTimesAndMerge(readBytes(2)), + 'l>': readNTimesAndMerge(readBytes(4)), + 'q>': readNTimesAndMerge(readBytes(8)), + + 'n': null, // aliased later + 'N': null, // aliased later + 'v': null, // aliased later + 'V': null, // aliased later + + 'U': readNTimesAndMerge(readUnicodeCharChunk), + 'w': readNTimesAndMerge(readWhileFirstBitIsOne), + + // Float + 'D': null, + 'd': null, + 'F': null, + 'f': null, + 'E': null, + 'e': null, + 'G': null, + 'g': null, + + // String + 'A': readNTimesAndMerge(readBytes(1)), + 'a': readNTimesAndMerge(readBytes(1)), + 'Z': readTillNullCharacter, + 'B': readNBitsMSBFirst, + 'b': readNBitsLSBFirst, + 'H': readHexCharsHighNibbleFirst, + 'h': readHexCharsLowNibbleFirst, + 'u': readNTimesAndMerge(readUuencodingChunk), + 'M': readAll, + 'm': readAll, + + 'P': null, + 'p': null + } + + var autocompletion = { + // Integer + 'C': true, + 'S': true, + 'L': true, + 'Q': true, + 'J': null, + + 'S>': true, + 'L>': true, + 'Q>': true, + + 'c': true, + 's': true, + 'l': true, + 'q': true, + 'j': null, + + 's>': true, + 'l>': true, + 'q>': true, + + 'n': null, // aliased later + 'N': null, // aliased later + 'v': null, // aliased later + 'V': null, // aliased later + + 'U': false, + 'w': false, + + // Float + 'D': null, + 'd': null, + 'F': null, + 'f': null, + 'E': null, + 'e': null, + 'G': null, + 'g': null, + + // String + 'A': false, + 'a': false, + 'Z': false, + 'B': false, + 'b': false, + 'H': false, + 'h': false, + 'u': false, + 'M': false, + 'm': false, + + 'P': null, + 'p': null + } + + var optimized = { + 'C*': handlers['C'], + 'c*': handlers['c'], + 'A*': handlers['A'], + 'a*': handlers['a'], + 'M*': wrapIntoArray(handlers['M']), + 'm*': wrapIntoArray(handlers['m']), + 'S*': handlers['S'], + 's*': handlers['s'], + 'L*': handlers['L'], + 'l*': handlers['l'], + 'Q*': handlers['Q'], + 'q*': handlers['q'], + 'S>*': handlers['S>'], + 's>*': handlers['s>'], + 'L>*': handlers['L>'], + 'l>*': handlers['l>'], + 'Q>*': handlers['Q>'], + 'q>*': handlers['q>'] + } + + function alias(existingDirective, newDirective) { + readChunk[newDirective] = readChunk[existingDirective]; + handlers[newDirective] = handlers[existingDirective]; + autocompletion[newDirective] = autocompletion[existingDirective]; + } + + alias('S>', 'n'); + alias('L>', 'N'); + + alias('S', 'v'); + alias('L', 'V'); + ; + + $def(self, '$unpack', function $$unpack(format, $kwargs) { + var offset, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + offset = $kwargs.$$smap["offset"]; + if (offset == null) offset = 0; + if ($truthy($rb_lt(offset, 0))) { + $Kernel.$raise($$$('ArgumentError'), "offset can't be negative") + }; + format = $Opal['$coerce_to!'](format, $$$('String'), "to_str").$gsub(/\s/, "").$delete("\u0000"); + + var output = []; + + // A very optimized handler for U*. + if (format == "U*" && + self.internal_encoding.name === "UTF-8" && + typeof self.codePointAt === "function") { + + var cp, j = 0; + + output = new Array(self.length); + for (var i = offset; i < self.length; i++) { + cp = output[j++] = self.codePointAt(i); + if (cp > 0xffff) i++; + } + return output.slice(0, j); + } + + var buffer = self.$bytes(); + + ($truthy($rb_gt(offset, (buffer).$length())) ? ($Kernel.$raise($$$('ArgumentError'), "offset outside of string")) : nil) + + buffer = buffer.slice(offset); + + + // optimization + var optimizedHandler = optimized[format]; + if (optimizedHandler) { + return optimizedHandler(buffer); + } + + function autocomplete(array, size) { + while (array.length < size) { + array.push(nil); + } + + return array; + } + + function processChunk(directive, count) { + var chunk, + chunkReader = readChunk[directive]; + + if (chunkReader == null) { + $Kernel.$raise("Unsupported unpack directive " + ((directive).$inspect()) + " (no chunk reader defined)") + } + + var chunkData = chunkReader(buffer, count); + chunk = chunkData.chunk; + buffer = chunkData.rest; + + var handler = handlers[directive]; + + if (handler == null) { + $Kernel.$raise("Unsupported unpack directive " + ((directive).$inspect()) + " (no handler defined)") + } + + return handler(chunk); + } + + eachDirectiveAndCount(format, function(directive, count) { + var part = processChunk(directive, count); + + if (count !== Infinity) { + var shouldAutocomplete = autocompletion[directive]; + + if (shouldAutocomplete == null) { + $Kernel.$raise("Unsupported unpack directive " + ((directive).$inspect()) + " (no autocompletion rule defined)") + } + + if (shouldAutocomplete) { + autocomplete(part, count); + } + } + + output = output.concat(part); + }); + + return output; + ; + }, -2); + return $def(self, '$unpack1', function $$unpack1(format, $kwargs) { + var offset, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + offset = $kwargs.$$smap["offset"]; + if (offset == null) offset = 0; + format = $Opal['$coerce_to!'](format, $$$('String'), "to_str").$gsub(/\s/, "").$delete("\u0000"); + return self.$unpack(format['$[]'](0), $hash2(["offset"], {"offset": offset}))['$[]'](0); + }, -2); + })('::', null, $nesting); +}; + +Opal.modules["set"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $defs = Opal.defs, $hash2 = Opal.hash2, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $send = Opal.send, $def = Opal.def, $eqeq = Opal.eqeq, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_lt = Opal.rb_lt, $rb_le = Opal.rb_le, $alias = Opal.alias, $module = Opal.module; + + Opal.add_stubs('include,new,nil?,===,raise,each,add,merge,class,respond_to?,subtract,dup,join,to_a,equal?,instance_of?,==,instance_variable_get,size,is_a?,all?,include?,[]=,-,enum_for,[],<<,replace,delete,select,reject,delete_if,to_proc,keep_if,each_key,empty?,eql?,instance_eval,clear,<,<=,any?,!,intersect?,keys'); + + (function($base, $super) { + var self = $klass($base, $super, 'Set'); + + var $ret_or_1 = nil, $proto = self.$$prototype; + + $proto.hash = nil; + + self.$include($$$('Enumerable')); + $defs(self, '$[]', function $Set_$$$1($a) { + var $post_args, ary, self = this; + + + + $post_args = Opal.slice.call(arguments); + + ary = $post_args;; + return self.$new(ary); + }, -1); + + $def(self, '$initialize', function $$initialize(enum$) { + var block = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + ; + + if (enum$ == null) enum$ = nil;; + self.hash = $hash2([], {}); + if ($truthy(enum$['$nil?']())) { + return nil + }; + if (!$eqeqeq($$$('Enumerable'), enum$)) { + $Kernel.$raise($$$('ArgumentError'), "value must be enumerable") + }; + if ($truthy(block)) { + return $send(enum$, 'each', [], function $$2(item){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (item == null) item = nil;; + return self.$add(Opal.yield1(block, item));}, {$$arity: 1, $$s: self}) + } else { + return self.$merge(enum$) + }; + }, -1); + + $def(self, '$dup', function $$dup() { + var self = this, result = nil; + + + result = self.$class().$new(); + return result.$merge(self); + }, 0); + + $def(self, '$-', function $Set_$minus$3(enum$) { + var self = this; + + + if (!$truthy(enum$['$respond_to?']("each"))) { + $Kernel.$raise($$$('ArgumentError'), "value must be enumerable") + }; + return self.$dup().$subtract(enum$); + }, 1); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return "#" + }, 0); + + $def(self, '$==', function $Set_$eq_eq$4(other) { + var self = this; + + if ($truthy(self['$equal?'](other))) { + return true + } else if ($truthy(other['$instance_of?'](self.$class()))) { + return self.hash['$=='](other.$instance_variable_get("@hash")) + } else if (($truthy(other['$is_a?']($$$('Set'))) && ($eqeq(self.$size(), other.$size())))) { + return $send(other, 'all?', [], function $$5(o){var self = $$5.$$s == null ? this : $$5.$$s; + if (self.hash == null) self.hash = nil; + + + + if (o == null) o = nil;; + return self.hash['$include?'](o);}, {$$arity: 1, $$s: self}) + } else { + return false + } + }, 1); + + $def(self, '$add', function $$add(o) { + var self = this, $writer = nil; + + + + $writer = [o, true]; + $send(self.hash, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self; + }, 1); + + $def(self, '$classify', function $$classify() { + var block = $$classify.$$p || nil, self = this, result = nil; + + delete $$classify.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("classify") + }; + result = $send($$$('Hash'), 'new', [], function $$6(h, k){var self = $$6.$$s == null ? this : $$6.$$s, $writer = nil; + + + + if (h == null) h = nil;; + + if (k == null) k = nil;; + $writer = [k, self.$class().$new()]; + $send(h, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 2, $$s: self}); + $send(self, 'each', [], function $$7(item){ + + + if (item == null) item = nil;; + return result['$[]'](Opal.yield1(block, item)).$add(item);}, 1); + return result; + }, 0); + + $def(self, '$collect!', function $Set_collect$excl$8() { + var block = $Set_collect$excl$8.$$p || nil, self = this, result = nil; + + delete $Set_collect$excl$8.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("collect!") + }; + result = self.$class().$new(); + $send(self, 'each', [], function $$9(item){ + + + if (item == null) item = nil;; + return result['$<<'](Opal.yield1(block, item));}, 1); + return self.$replace(result); + }, 0); + + $def(self, '$delete', function $Set_delete$10(o) { + var self = this; + + + self.hash.$delete(o); + return self; + }, 1); + + $def(self, '$delete?', function $Set_delete$ques$11(o) { + var self = this; + + if ($truthy(self['$include?'](o))) { + + self.$delete(o); + return self; + } else { + return nil + } + }, 1); + + $def(self, '$delete_if', function $$delete_if() { + var $yield = $$delete_if.$$p || nil, self = this; + + delete $$delete_if.$$p; + + if (!($yield !== nil)) { + return self.$enum_for("delete_if") + }; + $send($send(self, 'select', [], function $$12(o){ + + + if (o == null) o = nil;; + return Opal.yield1($yield, o);;}, 1), 'each', [], function $$13(o){var self = $$13.$$s == null ? this : $$13.$$s; + if (self.hash == null) self.hash = nil; + + + + if (o == null) o = nil;; + return self.hash.$delete(o);}, {$$arity: 1, $$s: self}); + return self; + }, 0); + + $def(self, '$keep_if', function $$keep_if() { + var $yield = $$keep_if.$$p || nil, self = this; + + delete $$keep_if.$$p; + + if (!($yield !== nil)) { + return self.$enum_for("keep_if") + }; + $send($send(self, 'reject', [], function $$14(o){ + + + if (o == null) o = nil;; + return Opal.yield1($yield, o);;}, 1), 'each', [], function $$15(o){var self = $$15.$$s == null ? this : $$15.$$s; + if (self.hash == null) self.hash = nil; + + + + if (o == null) o = nil;; + return self.hash.$delete(o);}, {$$arity: 1, $$s: self}); + return self; + }, 0); + + $def(self, '$reject!', function $Set_reject$excl$16() { + var block = $Set_reject$excl$16.$$p || nil, self = this, before = nil; + + delete $Set_reject$excl$16.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("reject!") + }; + before = self.$size(); + $send(self, 'delete_if', [], block.$to_proc()); + if ($eqeq(self.$size(), before)) { + return nil + } else { + return self + }; + }, 0); + + $def(self, '$select!', function $Set_select$excl$17() { + var block = $Set_select$excl$17.$$p || nil, self = this, before = nil; + + delete $Set_select$excl$17.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("select!") + }; + before = self.$size(); + $send(self, 'keep_if', [], block.$to_proc()); + if ($eqeq(self.$size(), before)) { + return nil + } else { + return self + }; + }, 0); + + $def(self, '$add?', function $Set_add$ques$18(o) { + var self = this; + + if ($truthy(self['$include?'](o))) { + return nil + } else { + return self.$add(o) + } + }, 1); + + $def(self, '$each', function $$each() { + var block = $$each.$$p || nil, self = this; + + delete $$each.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("each") + }; + $send(self.hash, 'each_key', [], block.$to_proc()); + return self; + }, 0); + + $def(self, '$empty?', function $Set_empty$ques$19() { + var self = this; + + return self.hash['$empty?']() + }, 0); + + $def(self, '$eql?', function $Set_eql$ques$20(other) { + var self = this; + + return self.hash['$eql?']($send(other, 'instance_eval', [], function $$21(){var self = $$21.$$s == null ? this : $$21.$$s; + if (self.hash == null) self.hash = nil; + + return self.hash}, {$$arity: 0, $$s: self})) + }, 1); + + $def(self, '$clear', function $$clear() { + var self = this; + + + self.hash.$clear(); + return self; + }, 0); + + $def(self, '$include?', function $Set_include$ques$22(o) { + var self = this; + + return self.hash['$include?'](o) + }, 1); + + $def(self, '$merge', function $$merge(enum$) { + var self = this; + + + $send(enum$, 'each', [], function $$23(item){var self = $$23.$$s == null ? this : $$23.$$s; + + + + if (item == null) item = nil;; + return self.$add(item);}, {$$arity: 1, $$s: self}); + return self; + }, 1); + + $def(self, '$replace', function $$replace(enum$) { + var self = this; + + + self.$clear(); + self.$merge(enum$); + return self; + }, 1); + + $def(self, '$size', function $$size() { + var self = this; + + return self.hash.$size() + }, 0); + + $def(self, '$subtract', function $$subtract(enum$) { + var self = this; + + + $send(enum$, 'each', [], function $$24(item){var self = $$24.$$s == null ? this : $$24.$$s; + + + + if (item == null) item = nil;; + return self.$delete(item);}, {$$arity: 1, $$s: self}); + return self; + }, 1); + + $def(self, '$|', function $Set_$$25(enum$) { + var self = this; + + + if (!$truthy(enum$['$respond_to?']("each"))) { + $Kernel.$raise($$$('ArgumentError'), "value must be enumerable") + }; + return self.$dup().$merge(enum$); + }, 1); + + function is_set(set) { + ($truthy(($ret_or_1 = (set)['$is_a?']($$$('Set')))) ? ($ret_or_1) : ($Kernel.$raise($$$('ArgumentError'), "value must be a set"))) + } + ; + + $def(self, '$superset?', function $Set_superset$ques$26(set) { + var self = this; + + + is_set(set); + if ($truthy($rb_lt(self.$size(), set.$size()))) { + return false + }; + return $send(set, 'all?', [], function $$27(o){var self = $$27.$$s == null ? this : $$27.$$s; + + + + if (o == null) o = nil;; + return self['$include?'](o);}, {$$arity: 1, $$s: self}); + }, 1); + + $def(self, '$proper_superset?', function $Set_proper_superset$ques$28(set) { + var self = this; + + + is_set(set); + if ($truthy($rb_le(self.$size(), set.$size()))) { + return false + }; + return $send(set, 'all?', [], function $$29(o){var self = $$29.$$s == null ? this : $$29.$$s; + + + + if (o == null) o = nil;; + return self['$include?'](o);}, {$$arity: 1, $$s: self}); + }, 1); + + $def(self, '$subset?', function $Set_subset$ques$30(set) { + var self = this; + + + is_set(set); + if ($truthy($rb_lt(set.$size(), self.$size()))) { + return false + }; + return $send(self, 'all?', [], function $$31(o){ + + + if (o == null) o = nil;; + return set['$include?'](o);}, 1); + }, 1); + + $def(self, '$proper_subset?', function $Set_proper_subset$ques$32(set) { + var self = this; + + + is_set(set); + if ($truthy($rb_le(set.$size(), self.$size()))) { + return false + }; + return $send(self, 'all?', [], function $$33(o){ + + + if (o == null) o = nil;; + return set['$include?'](o);}, 1); + }, 1); + + $def(self, '$intersect?', function $Set_intersect$ques$34(set) { + var self = this; + + + is_set(set); + if ($truthy($rb_lt(self.$size(), set.$size()))) { + return $send(self, 'any?', [], function $$35(o){ + + + if (o == null) o = nil;; + return set['$include?'](o);}, 1) + } else { + return $send(set, 'any?', [], function $$36(o){var self = $$36.$$s == null ? this : $$36.$$s; + + + + if (o == null) o = nil;; + return self['$include?'](o);}, {$$arity: 1, $$s: self}) + }; + }, 1); + + $def(self, '$disjoint?', function $Set_disjoint$ques$37(set) { + var self = this; + + return self['$intersect?'](set)['$!']() + }, 1); + + $def(self, '$to_a', function $$to_a() { + var self = this; + + return self.hash.$keys() + }, 0); + $alias(self, "+", "|"); + $alias(self, "<", "proper_subset?"); + $alias(self, "<<", "add"); + $alias(self, "<=", "subset?"); + $alias(self, ">", "proper_superset?"); + $alias(self, ">=", "superset?"); + $alias(self, "difference", "-"); + $alias(self, "filter!", "select!"); + $alias(self, "length", "size"); + $alias(self, "map!", "collect!"); + $alias(self, "member?", "include?"); + return $alias(self, "union", "|"); + })('::', null); + return (function($base, $parent_nesting) { + var self = $module($base, 'Enumerable'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$to_set', function $$to_set($a, $b) { + var block = $$to_set.$$p || nil, $post_args, klass, args, self = this; + + delete $$to_set.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + if ($post_args.length > 0) klass = $post_args.shift(); + if (klass == null) klass = $$('Set');; + + args = $post_args;; + return $send(klass, 'new', [self].concat($to_a(args)), block.$to_proc()); + }, -1) + })('::', $nesting); +}; + +Opal.modules["ast/node"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $alias = Opal.alias, $hash2 = Opal.hash2, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $eqeq = Opal.eqeq, $rb_plus = Opal.rb_plus, $rb_times = Opal.rb_times, $to_a = Opal.to_a; + + Opal.add_stubs('attr_reader,to_sym,freeze,to_a,assign_properties,hash,class,eql?,type,children,each,instance_variable_set,protected,private,nil?,==,original_dup,send,equal?,respond_to?,to_ast,updated,+,*,fancy_type,is_a?,to_sexp,inspect,map,to_sexp_array,gsub,to_s'); + return (function($base, $parent_nesting) { + var self = $module($base, 'AST'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Node'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.type = $proto.children = nil; + + self.$attr_reader("type"); + self.$attr_reader("children"); + $alias(self, "to_a", "children"); + self.$attr_reader("hash"); + + $def(self, '$initialize', function $$initialize(type, children, properties) { + var $a, self = this; + + + + if (children == null) children = [];; + + if (properties == null) properties = $hash2([], {});; + $a = [type.$to_sym(), children.$to_a().$freeze()], (self.type = $a[0]), (self.children = $a[1]), $a; + self.$assign_properties(properties); + self.hash = [self.type, self.children, self.$class()].$hash(); + return self.$freeze(); + }, -2); + + $def(self, '$eql?', function $Node_eql$ques$1(other) { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.$class()['$eql?'](other.$class()))) ? (self.type['$eql?'](other.$type())) : ($ret_or_2))))) { + return self.children['$eql?'](other.$children()) + } else { + return $ret_or_1 + } + }, 1); + + $def(self, '$assign_properties', function $$assign_properties(properties) { + var self = this; + + + $send(properties, 'each', [], function $$2(name, value){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (name == null) name = nil;; + + if (value == null) value = nil;; + return self.$instance_variable_set("@" + (name), value);}, {$$arity: 2, $$s: self}); + return nil; + }, 1); + self.$protected("assign_properties"); + $alias(self, "original_dup", "dup"); + self.$private("original_dup"); + + $def(self, '$dup', function $$dup() { + var self = this; + + return self + }, 0); + $alias(self, "clone", "dup"); + + $def(self, '$updated', function $$updated(type, children, properties) { + var self = this, new_type = nil, $ret_or_1 = nil, new_children = nil, new_properties = nil, copy = nil; + + + + if (type == null) type = nil;; + + if (children == null) children = nil;; + + if (properties == null) properties = nil;; + new_type = ($truthy(($ret_or_1 = type)) ? ($ret_or_1) : (self.type)); + new_children = ($truthy(($ret_or_1 = children)) ? ($ret_or_1) : (self.children)); + new_properties = ($truthy(($ret_or_1 = properties)) ? ($ret_or_1) : ($hash2([], {}))); + if ((($eqeq(self.type, new_type) && ($eqeq(self.children, new_children))) && ($truthy(properties['$nil?']())))) { + return self + } else { + + copy = self.$original_dup(); + copy.$send("initialize", new_type, new_children, new_properties); + return copy; + }; + }, -1); + + $def(self, '$==', function $Node_$eq_eq$3(other) { + var self = this, $ret_or_1 = nil; + + if ($truthy(self['$equal?'](other))) { + return true + } else if ($truthy(other['$respond_to?']("to_ast"))) { + + other = other.$to_ast(); + if ($truthy(($ret_or_1 = other.$type()['$=='](self.$type())))) { + return other.$children()['$=='](self.$children()) + } else { + return $ret_or_1 + }; + } else { + return false + } + }, 1); + + $def(self, '$concat', function $$concat(array) { + var self = this; + + return self.$updated(nil, $rb_plus(self.children, array.$to_a())) + }, 1); + $alias(self, "+", "concat"); + + $def(self, '$append', function $$append(element) { + var self = this; + + return self.$updated(nil, $rb_plus(self.children, [element])) + }, 1); + $alias(self, "<<", "append"); + + $def(self, '$to_sexp', function $$to_sexp(indent) { + var self = this, indented = nil, sexp = nil; + + + + if (indent == null) indent = 0;; + indented = $rb_times(" ", indent); + sexp = "" + (indented) + "(" + (self.$fancy_type()); + $send(self.$children(), 'each', [], function $$4(child){ + + + if (child == null) child = nil;; + if ($truthy(child['$is_a?']($$('Node')))) { + return (sexp = $rb_plus(sexp, "\n" + (child.$to_sexp($rb_plus(indent, 1))))) + } else { + return (sexp = $rb_plus(sexp, " " + (child.$inspect()))) + };}, 1); + sexp = $rb_plus(sexp, ")"); + return sexp; + }, -1); + $alias(self, "to_s", "to_sexp"); + + $def(self, '$inspect', function $$inspect(indent) { + var self = this, indented = nil, sexp = nil; + + + + if (indent == null) indent = 0;; + indented = $rb_times(" ", indent); + sexp = "" + (indented) + "s(:" + (self.type); + $send(self.$children(), 'each', [], function $$5(child){ + + + if (child == null) child = nil;; + if ($truthy(child['$is_a?']($$('Node')))) { + return (sexp = $rb_plus(sexp, ",\n" + (child.$inspect($rb_plus(indent, 1))))) + } else { + return (sexp = $rb_plus(sexp, ", " + (child.$inspect()))) + };}, 1); + sexp = $rb_plus(sexp, ")"); + return sexp; + }, -1); + + $def(self, '$to_ast', function $$to_ast() { + var self = this; + + return self + }, 0); + + $def(self, '$to_sexp_array', function $$to_sexp_array() { + var self = this, children_sexp_arrs = nil; + + + children_sexp_arrs = $send(self.$children(), 'map', [], function $$6(child){ + + + if (child == null) child = nil;; + if ($truthy(child['$is_a?']($$('Node')))) { + return child.$to_sexp_array() + } else { + return child + };}, 1); + return [self.$type()].concat($to_a(children_sexp_arrs)); + }, 0); + + $def(self, '$deconstruct', function $$deconstruct() { + var self = this; + + return [self.$type()].concat($to_a(self.$children())) + }, 0); + self.$protected(); + return $def(self, '$fancy_type', function $$fancy_type() { + var self = this; + + return self.type.$to_s().$gsub("_", "-") + }, 0); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["ast/processor/mixin"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $send = Opal.send; + + Opal.add_stubs('nil?,to_ast,type,respond_to?,send,handler_missing,map,to_a,process'); + return (function($base, $parent_nesting) { + var self = $module($base, 'AST'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Processor'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base) { + var self = $module($base, 'Mixin'); + + + + + $def(self, '$process', function $$process(node) { + var self = this, on_handler = nil, new_node = nil; + + + if ($truthy(node['$nil?']())) { + return nil + }; + node = node.$to_ast(); + on_handler = "on_" + (node.$type()); + if ($truthy(self['$respond_to?'](on_handler))) { + new_node = self.$send(on_handler, node) + } else { + new_node = self.$handler_missing(node) + }; + if ($truthy(new_node)) { + node = new_node + }; + return node; + }, 1); + + $def(self, '$process_all', function $$process_all(nodes) { + var self = this; + + return $send(nodes.$to_a(), 'map', [], function $$1(node){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (node == null) node = nil;; + return self.$process(node);}, {$$arity: 1, $$s: self}) + }, 1); + return $def(self, '$handler_missing', function $$handler_missing(node) { + + return nil + }, 1); + })($nesting[0]) + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["ast/processor"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass; + + Opal.add_stubs('require,include'); + return (function($base, $parent_nesting) { + var self = $module($base, 'AST'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Processor'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$require("ast/processor/mixin"); + return self.$include($$('Mixin')); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["ast/sexp"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $def = Opal.def; + + Opal.add_stubs('new'); + return (function($base, $parent_nesting) { + var self = $module($base, 'AST'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Sexp'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$s', function $$s(type, $a) { + var $post_args, children; + + + + $post_args = Opal.slice.call(arguments, 1); + + children = $post_args;; + return $$('Node').$new(type, children); + }, -2) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["ast"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module; + + Opal.add_stubs('require'); + return (function($base) { + var self = $module($base, 'AST'); + + + + self.$require("ast/node"); + self.$require("ast/processor"); + return self.$require("ast/sexp"); + })($nesting[0]) +}; + +Opal.modules["parser/ast/node"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $alias = Opal.alias, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def; + + Opal.add_stubs('attr_reader,[],frozen?,dup,node=,-'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'AST'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Node'); + + + + self.$attr_reader("location"); + $alias(self, "loc", "location"); + return $def(self, '$assign_properties', function $$assign_properties(properties) { + var self = this, location = nil, $writer = nil; + + if ($truthy((location = properties['$[]']("location")))) { + + if ($truthy(location['$frozen?']())) { + location = location.$dup() + }; + + $writer = [self]; + $send(location, 'node=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return (self.location = location); + } else { + return nil + } + }, 1); + })($nesting[0], $$$($$$('AST'), 'Node')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["opal/ast/node"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('require,attr_reader,[],frozen?,dup,merge!,loc,line,column'); + + self.$require("ast"); + self.$require("parser/ast/node"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'AST'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Node'); + + var $proto = self.$$prototype; + + $proto.meta = nil; + + self.$attr_reader("meta"); + + $def(self, '$assign_properties', function $$assign_properties(properties) { + var $yield = $$assign_properties.$$p || nil, self = this, meta = nil, $ret_or_1 = nil; + + delete $$assign_properties.$$p; + + if ($truthy((meta = properties['$[]']("meta")))) { + + if ($truthy(meta['$frozen?']())) { + meta = meta.$dup() + }; + self.meta['$merge!'](meta); + } else { + self.meta = ($truthy(($ret_or_1 = self.meta)) ? ($ret_or_1) : ($hash2([], {}))) + }; + return $send2(self, $find_super(self, 'assign_properties', $$assign_properties, false, true), 'assign_properties', [properties], $yield); + }, 1); + + $def(self, '$line', function $$line() { + var self = this; + + if ($truthy(self.$loc())) { + return self.$loc().$line() + } else { + return nil + } + }, 0); + return $def(self, '$column', function $$column() { + var self = this; + + if ($truthy(self.$loc())) { + return self.$loc().$column() + } else { + return nil + } + }, 0); + })($nesting[0], $$$($$$($$$('Parser'), 'AST'), 'Node')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["racc/parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $a, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $const_set = Opal.const_set, $defs = Opal.defs, $gvars = Opal.gvars, $rb_lt = Opal.rb_lt, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $to_ary = Opal.to_ary, $neqeq = Opal.neqeq, $rb_plus = Opal.rb_plus, $eqeq = Opal.eqeq, $rb_ge = Opal.rb_ge, $rb_gt = Opal.rb_gt, $eqeqeq = Opal.eqeqeq, $rb_le = Opal.rb_le, $rb_times = Opal.rb_times; + + Opal.add_stubs('[],class,<,size,[]=,-,__send__,_racc_setup,raise,_racc_init_sysvars,catch,!=,next_token,racc_read_token,+,==,>=,_racc_evalact,!,>,push,racc_shift,-@,_racc_do_reduce,===,racc_accept,throw,on_error,<=,pop,racc_e_pop,inspect,racc_next_state,*,racc_reduce,sprintf,token_to_str,print,racc_token2str,puts,racc_print_stacks,empty?,each,racc_print_states,each_index'); + + (function($base, $parent_nesting) { + var self = $module($base, 'Racc'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return ($klass($nesting[0], $$('StandardError'), 'ParseError'), nil) + })($nesting[0], $nesting); + if (!$truthy((($a = $$$('::', 'ParseError', 'skip_raise')) ? 'constant' : nil))) { + $const_set($nesting[0], 'ParseError', $$$($$('Racc'), 'ParseError')) + }; + return (function($base, $parent_nesting) { + var self = $module($base, 'Racc'); + + var $a, $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + if (!$truthy((($a = $$('Racc_No_Extensions', 'skip_raise')) ? 'constant' : nil))) { + $const_set($nesting[0], 'Racc_No_Extensions', false) + }; + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.yydebug = $proto.racc_debug_out = $proto.racc_error_status = $proto.racc_t = $proto.racc_vstack = $proto.racc_val = $proto.racc_state = $proto.racc_tstack = nil; + + $const_set($nesting[0], 'Racc_Runtime_Version', "1.4.6"); + $const_set($nesting[0], 'Racc_Runtime_Revision', ["originalRevision:", "1.8"]['$[]'](1)); + $const_set($nesting[0], 'Racc_Runtime_Core_Version_R', "1.4.6"); + $const_set($nesting[0], 'Racc_Runtime_Core_Revision_R', ["originalRevision:", "1.8"]['$[]'](1)); + $const_set($nesting[0], 'Racc_Main_Parsing_Routine', "_racc_do_parse_rb"); + $const_set($nesting[0], 'Racc_YY_Parse_Method', "_racc_yyparse_rb"); + $const_set($nesting[0], 'Racc_Runtime_Core_Version', $$('Racc_Runtime_Core_Version_R')); + $const_set($nesting[0], 'Racc_Runtime_Core_Revision', $$('Racc_Runtime_Core_Revision_R')); + $const_set($nesting[0], 'Racc_Runtime_Type', "ruby"); + $defs($$('Parser'), '$racc_runtime_type', function $$racc_runtime_type() { + + return $$('Racc_Runtime_Type') + }, 0); + + $def(self, '$_racc_setup', function $$_racc_setup() { + var $a, $b, self = this, $ret_or_1 = nil, arg = nil, $writer = nil; + if ($gvars.stderr == null) $gvars.stderr = nil; + + + if (!$truthy($$$(self.$class(), 'Racc_debug_parser'))) { + self.yydebug = false + }; + if (!$truthy((($a = self['yydebug'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { + self.yydebug = false + }; + if ($truthy(self.yydebug)) { + + if (!$truthy((($b = self['racc_debug_out'], $b != null && $b !== nil) ? 'instance-variable' : nil))) { + self.racc_debug_out = $gvars.stderr + }; + self.racc_debug_out = ($truthy(($ret_or_1 = self.racc_debug_out)) ? ($ret_or_1) : ($gvars.stderr)); + }; + arg = $$$(self.$class(), 'Racc_arg'); + if ($truthy($rb_lt(arg.$size(), 14))) { + + $writer = [13, true]; + $send(arg, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return arg; + }, 0); + + $def(self, '$_racc_init_sysvars', function $$_racc_init_sysvars() { + var self = this; + + + self.racc_state = [0]; + self.racc_tstack = []; + self.racc_vstack = []; + self.racc_t = nil; + self.racc_val = nil; + self.racc_read_next = true; + self.racc_user_yyerror = false; + return (self.racc_error_status = 0); + }, 0); + + $def(self, '$do_parse', function $$do_parse() { + var self = this; + + return self.$__send__($$('Racc_Main_Parsing_Routine'), self.$_racc_setup(), false) + }, 0); + + $def(self, '$next_token', function $$next_token() { + var self = this; + + return self.$raise($$('NotImplementedError'), "" + (self.$class()) + "#next_token is not defined") + }, 0); + + $def(self, '$_racc_do_parse_rb', function $$_racc_do_parse_rb(arg, in_debug) { + var $a, $b, self = this, action_table = nil, action_check = nil, action_default = nil, action_pointer = nil, _ = nil, token_table = nil, tok = nil, act = nil, i = nil; + + + $b = arg, $a = $to_ary($b), (action_table = ($a[0] == null ? nil : $a[0])), (action_check = ($a[1] == null ? nil : $a[1])), (action_default = ($a[2] == null ? nil : $a[2])), (action_pointer = ($a[3] == null ? nil : $a[3])), (_ = ($a[4] == null ? nil : $a[4])), (_ = ($a[5] == null ? nil : $a[5])), (_ = ($a[6] == null ? nil : $a[6])), (_ = ($a[7] == null ? nil : $a[7])), (_ = ($a[8] == null ? nil : $a[8])), (_ = ($a[9] == null ? nil : $a[9])), (token_table = ($a[10] == null ? nil : $a[10])), (_ = ($a[11] == null ? nil : $a[11])), (_ = ($a[12] == null ? nil : $a[12])), (_ = ($a[13] == null ? nil : $a[13])), $b; + self.$_racc_init_sysvars(); + tok = (act = (i = nil)); + return $send(self, 'catch', ["racc_end_parse"], function $$1(){var $c, $d, $e, self = $$1.$$s == null ? this : $$1.$$s, $ret_or_1 = nil; + if (self.racc_state == null) self.racc_state = nil; + if (self.racc_read_next == null) self.racc_read_next = nil; + if (self.racc_t == null) self.racc_t = nil; + if (self.yydebug == null) self.yydebug = nil; + if (self.racc_val == null) self.racc_val = nil; + + while ($truthy(true)) { + + if ($truthy((i = action_pointer['$[]'](self.racc_state['$[]'](-1))))) { + + if ($truthy(self.racc_read_next)) { + if ($neqeq(self.racc_t, 0)) { + + $e = self.$next_token(), $d = $to_ary($e), (tok = ($d[0] == null ? nil : $d[0])), (self.racc_val = ($d[1] == null ? nil : $d[1])), $e; + if ($truthy(tok)) { + self.racc_t = ($truthy(($ret_or_1 = token_table['$[]'](tok))) ? ($ret_or_1) : (1)) + } else { + self.racc_t = 0 + }; + if ($truthy(self.yydebug)) { + self.$racc_read_token(self.racc_t, tok, self.racc_val) + }; + self.racc_read_next = false; + } + }; + i = $rb_plus(i, self.racc_t); + if (!(($truthy($rb_ge(i, 0)) && ($truthy((act = action_table['$[]'](i))))) && ($eqeq(action_check['$[]'](i), self.racc_state['$[]'](-1))))) { + act = action_default['$[]'](self.racc_state['$[]'](-1)) + }; + } else { + act = action_default['$[]'](self.racc_state['$[]'](-1)) + }; + while ($truthy((act = self.$_racc_evalact(act, arg)))) { + + }; + }}, {$$arity: 0, $$s: self}); + }, 2); + + $def(self, '$yyparse', function $$yyparse(recv, mid) { + var self = this; + + return self.$__send__($$('Racc_YY_Parse_Method'), recv, mid, self.$_racc_setup(), true) + }, 2); + + $def(self, '$_racc_yyparse_rb', function $$_racc_yyparse_rb(recv, mid, arg, c_debug) { + var $a, $b, self = this, action_table = nil, action_check = nil, action_default = nil, action_pointer = nil, _ = nil, token_table = nil, act = nil, i = nil; + + + $b = arg, $a = $to_ary($b), (action_table = ($a[0] == null ? nil : $a[0])), (action_check = ($a[1] == null ? nil : $a[1])), (action_default = ($a[2] == null ? nil : $a[2])), (action_pointer = ($a[3] == null ? nil : $a[3])), (_ = ($a[4] == null ? nil : $a[4])), (_ = ($a[5] == null ? nil : $a[5])), (_ = ($a[6] == null ? nil : $a[6])), (_ = ($a[7] == null ? nil : $a[7])), (_ = ($a[8] == null ? nil : $a[8])), (_ = ($a[9] == null ? nil : $a[9])), (token_table = ($a[10] == null ? nil : $a[10])), (_ = ($a[11] == null ? nil : $a[11])), (_ = ($a[12] == null ? nil : $a[12])), (_ = ($a[13] == null ? nil : $a[13])), $b; + self.$_racc_init_sysvars(); + act = nil; + i = nil; + return $send(self, 'catch', ["racc_end_parse"], function $$2(){var $c, $d, self = $$2.$$s == null ? this : $$2.$$s; + if (self.racc_state == null) self.racc_state = nil; + + + while (!($truthy((i = action_pointer['$[]'](self.racc_state['$[]'](-1)))))) { + while ($truthy((act = self.$_racc_evalact(action_default['$[]'](self.racc_state['$[]'](-1)), arg)))) { + + } + }; + return $send(recv, '__send__', [mid], function $$3(tok, val){var $e, $f, self = $$3.$$s == null ? this : $$3.$$s, $ret_or_1 = nil, $ret_or_2 = nil; + if (self.racc_t == null) self.racc_t = nil; + if (self.racc_state == null) self.racc_state = nil; + if (self.racc_read_next == null) self.racc_read_next = nil; + + + + if (tok == null) tok = nil;; + + if (val == null) val = nil;; + if ($truthy(tok)) { + self.racc_t = ($truthy(($ret_or_1 = token_table['$[]'](tok))) ? ($ret_or_1) : (1)) + } else { + self.racc_t = 0 + }; + self.racc_val = val; + self.racc_read_next = false; + i = $rb_plus(i, self.racc_t); + if (!(($truthy($rb_ge(i, 0)) && ($truthy((act = action_table['$[]'](i))))) && ($eqeq(action_check['$[]'](i), self.racc_state['$[]'](-1))))) { + act = action_default['$[]'](self.racc_state['$[]'](-1)) + }; + while ($truthy((act = self.$_racc_evalact(act, arg)))) { + + }; + while ($truthy(($truthy(($ret_or_1 = ($truthy(($ret_or_2 = (i = action_pointer['$[]'](self.racc_state['$[]'](-1)))['$!']())) ? ($ret_or_2) : (self.racc_read_next['$!']())))) ? ($ret_or_1) : (self.racc_t['$=='](0))))) { + + if (!(((($truthy(i) && ($truthy((i = $rb_plus(i, self.racc_t))))) && ($truthy($rb_ge(i, 0)))) && ($truthy((act = action_table['$[]'](i))))) && ($eqeq(action_check['$[]'](i), self.racc_state['$[]'](-1))))) { + act = action_default['$[]'](self.racc_state['$[]'](-1)) + }; + while ($truthy((act = self.$_racc_evalact(act, arg)))) { + + }; + };}, {$$arity: 2, $$s: self});}, {$$arity: 0, $$s: self}); + }, 4); + + $def(self, '$_racc_evalact', function $$_racc_evalact(act, arg) { + var $a, $b, self = this, action_table = nil, action_check = nil, _ = nil, action_pointer = nil, shift_n = nil, reduce_n = nil, code = nil, $ret_or_1 = nil, i = nil; + + + $b = arg, $a = $to_ary($b), (action_table = ($a[0] == null ? nil : $a[0])), (action_check = ($a[1] == null ? nil : $a[1])), (_ = ($a[2] == null ? nil : $a[2])), (action_pointer = ($a[3] == null ? nil : $a[3])), (_ = ($a[4] == null ? nil : $a[4])), (_ = ($a[5] == null ? nil : $a[5])), (_ = ($a[6] == null ? nil : $a[6])), (_ = ($a[7] == null ? nil : $a[7])), (_ = ($a[8] == null ? nil : $a[8])), (_ = ($a[9] == null ? nil : $a[9])), (_ = ($a[10] == null ? nil : $a[10])), (shift_n = ($a[11] == null ? nil : $a[11])), (reduce_n = ($a[12] == null ? nil : $a[12])), (_ = ($a[13] == null ? nil : $a[13])), (_ = ($a[14] == null ? nil : $a[14])), $b; + if (($truthy($rb_gt(act, 0)) && ($truthy($rb_lt(act, shift_n))))) { + + if ($truthy($rb_gt(self.racc_error_status, 0))) { + if (!$eqeq(self.racc_t, 1)) { + self.racc_error_status = $rb_minus(self.racc_error_status, 1) + } + }; + self.racc_vstack.$push(self.racc_val); + self.racc_state.$push(act); + self.racc_read_next = true; + if ($truthy(self.yydebug)) { + + self.racc_tstack.$push(self.racc_t); + self.$racc_shift(self.racc_t, self.racc_tstack, self.racc_vstack); + }; + } else if (($truthy($rb_lt(act, 0)) && ($truthy($rb_gt(act, reduce_n['$-@']()))))) { + + code = $send(self, 'catch', ["racc_jump"], function $$4(){var self = $$4.$$s == null ? this : $$4.$$s; + if (self.racc_state == null) self.racc_state = nil; + + + self.racc_state.$push(self.$_racc_do_reduce(arg, act)); + return false;}, {$$arity: 0, $$s: self}); + if ($truthy(code)) { + if ($eqeqeq(1, ($ret_or_1 = code))) { + + self.racc_user_yyerror = true; + return reduce_n['$-@'](); + } else if ($eqeqeq(2, $ret_or_1)) { + return shift_n + } else { + self.$raise("[Racc Bug] unknown jump code") + } + }; + } else if ($eqeq(act, shift_n)) { + + if ($truthy(self.yydebug)) { + self.$racc_accept() + }; + self.$throw("racc_end_parse", self.racc_vstack['$[]'](0)); + } else if ($eqeq(act, reduce_n['$-@']())) { + + if ($eqeqeq(0, ($ret_or_1 = self.racc_error_status))) { + if (!$truthy(arg['$[]'](21))) { + self.$on_error(self.racc_t, self.racc_val, self.racc_vstack) + } + } else if ($eqeqeq(3, $ret_or_1)) { + + if ($eqeq(self.racc_t, 0)) { + self.$throw("racc_end_parse", nil) + }; + self.racc_read_next = true; + } else { + nil + }; + self.racc_user_yyerror = false; + self.racc_error_status = 3; + while ($truthy(true)) { + + if ($truthy((i = action_pointer['$[]'](self.racc_state['$[]'](-1))))) { + + i = $rb_plus(i, 1); + if ((($truthy($rb_ge(i, 0)) && ($truthy((act = action_table['$[]'](i))))) && ($eqeq(action_check['$[]'](i), self.racc_state['$[]'](-1))))) { + break; + }; + }; + if ($truthy($rb_le(self.racc_state.$size(), 1))) { + self.$throw("racc_end_parse", nil) + }; + self.racc_state.$pop(); + self.racc_vstack.$pop(); + if ($truthy(self.yydebug)) { + + self.racc_tstack.$pop(); + self.$racc_e_pop(self.racc_state, self.racc_tstack, self.racc_vstack); + }; + }; + return act; + } else { + self.$raise("[Racc Bug] unknown action " + (act.$inspect())) + }; + if ($truthy(self.yydebug)) { + self.$racc_next_state(self.racc_state['$[]'](-1), self.racc_state) + }; + return nil; + }, 2); + + $def(self, '$_racc_do_reduce', function $$_racc_do_reduce(arg, act) { + var $a, $b, self = this, _ = nil, goto_table = nil, goto_check = nil, goto_default = nil, goto_pointer = nil, nt_base = nil, reduce_table = nil, use_result = nil, state = nil, vstack = nil, tstack = nil, i = nil, len = nil, reduce_to = nil, method_id = nil, void_array = nil, tmp_t = nil, tmp_v = nil, $writer = nil, k1 = nil, curstate = nil; + + + $b = arg, $a = $to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), (_ = ($a[2] == null ? nil : $a[2])), (_ = ($a[3] == null ? nil : $a[3])), (goto_table = ($a[4] == null ? nil : $a[4])), (goto_check = ($a[5] == null ? nil : $a[5])), (goto_default = ($a[6] == null ? nil : $a[6])), (goto_pointer = ($a[7] == null ? nil : $a[7])), (nt_base = ($a[8] == null ? nil : $a[8])), (reduce_table = ($a[9] == null ? nil : $a[9])), (_ = ($a[10] == null ? nil : $a[10])), (_ = ($a[11] == null ? nil : $a[11])), (_ = ($a[12] == null ? nil : $a[12])), (use_result = ($a[13] == null ? nil : $a[13])), $b; + state = self.racc_state; + vstack = self.racc_vstack; + tstack = self.racc_tstack; + i = $rb_times(act, -3); + len = reduce_table['$[]'](i); + reduce_to = reduce_table['$[]']($rb_plus(i, 1)); + method_id = reduce_table['$[]']($rb_plus(i, 2)); + void_array = []; + if ($truthy(self.yydebug)) { + tmp_t = tstack['$[]'](len['$-@'](), len) + }; + tmp_v = vstack['$[]'](len['$-@'](), len); + if ($truthy(self.yydebug)) { + + $writer = [len['$-@'](), len, void_array]; + $send(tstack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + + $writer = [len['$-@'](), len, void_array]; + $send(vstack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [len['$-@'](), len, void_array]; + $send(state, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy(use_result)) { + vstack.$push(self.$__send__(method_id, tmp_v, vstack, tmp_v['$[]'](0))) + } else { + vstack.$push(self.$__send__(method_id, tmp_v, vstack)) + }; + tstack.$push(reduce_to); + if ($truthy(self.yydebug)) { + self.$racc_reduce(tmp_t, reduce_to, tstack, vstack) + }; + k1 = $rb_minus(reduce_to, nt_base); + if ($truthy((i = goto_pointer['$[]'](k1)))) { + + i = $rb_plus(i, state['$[]'](-1)); + if ((($truthy($rb_ge(i, 0)) && ($truthy((curstate = goto_table['$[]'](i))))) && ($eqeq(goto_check['$[]'](i), k1)))) { + return curstate + }; + }; + return goto_default['$[]'](k1); + }, 2); + + $def(self, '$on_error', function $$on_error(t, val, vstack) { + var self = this, $ret_or_1 = nil; + + return self.$raise($$('ParseError'), self.$sprintf("\nparse error on value %s (%s)", val.$inspect(), ($truthy(($ret_or_1 = self.$token_to_str(t))) ? ($ret_or_1) : ("?")))) + }, 3); + + $def(self, '$yyerror', function $$yyerror() { + var self = this; + + return self.$throw("racc_jump", 1) + }, 0); + + $def(self, '$yyaccept', function $$yyaccept() { + var self = this; + + return self.$throw("racc_jump", 2) + }, 0); + + $def(self, '$yyerrok', function $$yyerrok() { + var self = this; + + return (self.racc_error_status = 0) + }, 0); + + $def(self, '$racc_read_token', function $$racc_read_token(t, tok, val) { + var self = this; + + + self.racc_debug_out.$print("read "); + self.racc_debug_out.$print(tok.$inspect(), "(", self.$racc_token2str(t), ") "); + self.racc_debug_out.$puts(val.$inspect()); + return self.racc_debug_out.$puts(); + }, 3); + + $def(self, '$racc_shift', function $$racc_shift(tok, tstack, vstack) { + var self = this; + + + self.racc_debug_out.$puts("shift " + (self.$racc_token2str(tok))); + self.$racc_print_stacks(tstack, vstack); + return self.racc_debug_out.$puts(); + }, 3); + + $def(self, '$racc_reduce', function $$racc_reduce(toks, sim, tstack, vstack) { + var self = this, out = nil; + + + out = self.racc_debug_out; + out.$print("reduce "); + if ($truthy(toks['$empty?']())) { + out.$print(" ") + } else { + $send(toks, 'each', [], function $$5(t){var self = $$5.$$s == null ? this : $$5.$$s; + + + + if (t == null) t = nil;; + return out.$print(" ", self.$racc_token2str(t));}, {$$arity: 1, $$s: self}) + }; + out.$puts(" --> " + (self.$racc_token2str(sim))); + self.$racc_print_stacks(tstack, vstack); + return self.racc_debug_out.$puts(); + }, 4); + + $def(self, '$racc_accept', function $$racc_accept() { + var self = this; + + + self.racc_debug_out.$puts("accept"); + return self.racc_debug_out.$puts(); + }, 0); + + $def(self, '$racc_e_pop', function $$racc_e_pop(state, tstack, vstack) { + var self = this; + + + self.racc_debug_out.$puts("error recovering mode: pop token"); + self.$racc_print_states(state); + self.$racc_print_stacks(tstack, vstack); + return self.racc_debug_out.$puts(); + }, 3); + + $def(self, '$racc_next_state', function $$racc_next_state(curstate, state) { + var self = this; + + + self.racc_debug_out.$puts("goto " + (curstate)); + self.$racc_print_states(state); + return self.racc_debug_out.$puts(); + }, 2); + + $def(self, '$racc_print_stacks', function $$racc_print_stacks(t, v) { + var self = this, out = nil; + + + out = self.racc_debug_out; + out.$print(" ["); + $send(t, 'each_index', [], function $$6(i){var self = $$6.$$s == null ? this : $$6.$$s; + + + + if (i == null) i = nil;; + return out.$print(" (", self.$racc_token2str(t['$[]'](i)), " ", v['$[]'](i).$inspect(), ")");}, {$$arity: 1, $$s: self}); + return out.$puts(" ]"); + }, 2); + + $def(self, '$racc_print_states', function $$racc_print_states(s) { + var self = this, out = nil; + + + out = self.racc_debug_out; + out.$print(" ["); + $send(s, 'each', [], function $$7(st){ + + + if (st == null) st = nil;; + return out.$print(" ", st);}, 1); + return out.$puts(" ]"); + }, 1); + + $def(self, '$racc_token2str', function $$racc_token2str(tok) { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = $$$(self.$class(), 'Racc_token_to_s_table')['$[]'](tok)))) { + return $ret_or_1 + } else { + return self.$raise("[Racc Bug] can't convert token " + (tok) + " to string") + } + }, 1); + return $def(self, '$token_to_str', function $$token_to_str(t) { + var self = this; + + return $$$(self.$class(), 'Racc_token_to_s_table')['$[]'](t) + }, 1); + })($nesting[0], null, $nesting); + })($nesting[0], $nesting); +}; + +Opal.modules["parser/version"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set; + + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return $const_set($nesting[0], 'VERSION', "3.1.0.0") + })($nesting[0], $nesting) +}; + +Opal.modules["racc/parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $a, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $const_set = Opal.const_set, $defs = Opal.defs, $gvars = Opal.gvars, $rb_lt = Opal.rb_lt, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $to_ary = Opal.to_ary, $neqeq = Opal.neqeq, $rb_plus = Opal.rb_plus, $eqeq = Opal.eqeq, $rb_ge = Opal.rb_ge, $rb_gt = Opal.rb_gt, $eqeqeq = Opal.eqeqeq, $rb_le = Opal.rb_le, $rb_times = Opal.rb_times; + + Opal.add_stubs('[],class,<,size,[]=,-,__send__,_racc_setup,raise,_racc_init_sysvars,catch,!=,next_token,racc_read_token,+,==,>=,_racc_evalact,!,>,push,racc_shift,-@,_racc_do_reduce,===,racc_accept,throw,on_error,<=,pop,racc_e_pop,inspect,racc_next_state,*,racc_reduce,sprintf,token_to_str,print,racc_token2str,puts,racc_print_stacks,empty?,each,racc_print_states,each_index'); + + (function($base, $parent_nesting) { + var self = $module($base, 'Racc'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return ($klass($nesting[0], $$('StandardError'), 'ParseError'), nil) + })($nesting[0], $nesting); + if (!$truthy((($a = $$$('::', 'ParseError', 'skip_raise')) ? 'constant' : nil))) { + $const_set($nesting[0], 'ParseError', $$$($$('Racc'), 'ParseError')) + }; + return (function($base, $parent_nesting) { + var self = $module($base, 'Racc'); + + var $a, $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + if (!$truthy((($a = $$('Racc_No_Extensions', 'skip_raise')) ? 'constant' : nil))) { + $const_set($nesting[0], 'Racc_No_Extensions', false) + }; + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.yydebug = $proto.racc_debug_out = $proto.racc_error_status = $proto.racc_t = $proto.racc_vstack = $proto.racc_val = $proto.racc_state = $proto.racc_tstack = nil; + + $const_set($nesting[0], 'Racc_Runtime_Version', "1.4.6"); + $const_set($nesting[0], 'Racc_Runtime_Revision', ["originalRevision:", "1.8"]['$[]'](1)); + $const_set($nesting[0], 'Racc_Runtime_Core_Version_R', "1.4.6"); + $const_set($nesting[0], 'Racc_Runtime_Core_Revision_R', ["originalRevision:", "1.8"]['$[]'](1)); + $const_set($nesting[0], 'Racc_Main_Parsing_Routine', "_racc_do_parse_rb"); + $const_set($nesting[0], 'Racc_YY_Parse_Method', "_racc_yyparse_rb"); + $const_set($nesting[0], 'Racc_Runtime_Core_Version', $$('Racc_Runtime_Core_Version_R')); + $const_set($nesting[0], 'Racc_Runtime_Core_Revision', $$('Racc_Runtime_Core_Revision_R')); + $const_set($nesting[0], 'Racc_Runtime_Type', "ruby"); + $defs($$('Parser'), '$racc_runtime_type', function $$racc_runtime_type() { + + return $$('Racc_Runtime_Type') + }, 0); + + $def(self, '$_racc_setup', function $$_racc_setup() { + var $a, $b, self = this, $ret_or_1 = nil, arg = nil, $writer = nil; + if ($gvars.stderr == null) $gvars.stderr = nil; + + + if (!$truthy($$$(self.$class(), 'Racc_debug_parser'))) { + self.yydebug = false + }; + if (!$truthy((($a = self['yydebug'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { + self.yydebug = false + }; + if ($truthy(self.yydebug)) { + + if (!$truthy((($b = self['racc_debug_out'], $b != null && $b !== nil) ? 'instance-variable' : nil))) { + self.racc_debug_out = $gvars.stderr + }; + self.racc_debug_out = ($truthy(($ret_or_1 = self.racc_debug_out)) ? ($ret_or_1) : ($gvars.stderr)); + }; + arg = $$$(self.$class(), 'Racc_arg'); + if ($truthy($rb_lt(arg.$size(), 14))) { + + $writer = [13, true]; + $send(arg, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return arg; + }, 0); + + $def(self, '$_racc_init_sysvars', function $$_racc_init_sysvars() { + var self = this; + + + self.racc_state = [0]; + self.racc_tstack = []; + self.racc_vstack = []; + self.racc_t = nil; + self.racc_val = nil; + self.racc_read_next = true; + self.racc_user_yyerror = false; + return (self.racc_error_status = 0); + }, 0); + + $def(self, '$do_parse', function $$do_parse() { + var self = this; + + return self.$__send__($$('Racc_Main_Parsing_Routine'), self.$_racc_setup(), false) + }, 0); + + $def(self, '$next_token', function $$next_token() { + var self = this; + + return self.$raise($$('NotImplementedError'), "" + (self.$class()) + "#next_token is not defined") + }, 0); + + $def(self, '$_racc_do_parse_rb', function $$_racc_do_parse_rb(arg, in_debug) { + var $a, $b, self = this, action_table = nil, action_check = nil, action_default = nil, action_pointer = nil, _ = nil, token_table = nil, tok = nil, act = nil, i = nil; + + + $b = arg, $a = $to_ary($b), (action_table = ($a[0] == null ? nil : $a[0])), (action_check = ($a[1] == null ? nil : $a[1])), (action_default = ($a[2] == null ? nil : $a[2])), (action_pointer = ($a[3] == null ? nil : $a[3])), (_ = ($a[4] == null ? nil : $a[4])), (_ = ($a[5] == null ? nil : $a[5])), (_ = ($a[6] == null ? nil : $a[6])), (_ = ($a[7] == null ? nil : $a[7])), (_ = ($a[8] == null ? nil : $a[8])), (_ = ($a[9] == null ? nil : $a[9])), (token_table = ($a[10] == null ? nil : $a[10])), (_ = ($a[11] == null ? nil : $a[11])), (_ = ($a[12] == null ? nil : $a[12])), (_ = ($a[13] == null ? nil : $a[13])), $b; + self.$_racc_init_sysvars(); + tok = (act = (i = nil)); + return $send(self, 'catch', ["racc_end_parse"], function $$1(){var $c, $d, $e, self = $$1.$$s == null ? this : $$1.$$s, $ret_or_1 = nil; + if (self.racc_state == null) self.racc_state = nil; + if (self.racc_read_next == null) self.racc_read_next = nil; + if (self.racc_t == null) self.racc_t = nil; + if (self.yydebug == null) self.yydebug = nil; + if (self.racc_val == null) self.racc_val = nil; + + while ($truthy(true)) { + + if ($truthy((i = action_pointer['$[]'](self.racc_state['$[]'](-1))))) { + + if ($truthy(self.racc_read_next)) { + if ($neqeq(self.racc_t, 0)) { + + $e = self.$next_token(), $d = $to_ary($e), (tok = ($d[0] == null ? nil : $d[0])), (self.racc_val = ($d[1] == null ? nil : $d[1])), $e; + if ($truthy(tok)) { + self.racc_t = ($truthy(($ret_or_1 = token_table['$[]'](tok))) ? ($ret_or_1) : (1)) + } else { + self.racc_t = 0 + }; + if ($truthy(self.yydebug)) { + self.$racc_read_token(self.racc_t, tok, self.racc_val) + }; + self.racc_read_next = false; + } + }; + i = $rb_plus(i, self.racc_t); + if (!(($truthy($rb_ge(i, 0)) && ($truthy((act = action_table['$[]'](i))))) && ($eqeq(action_check['$[]'](i), self.racc_state['$[]'](-1))))) { + act = action_default['$[]'](self.racc_state['$[]'](-1)) + }; + } else { + act = action_default['$[]'](self.racc_state['$[]'](-1)) + }; + while ($truthy((act = self.$_racc_evalact(act, arg)))) { + + }; + }}, {$$arity: 0, $$s: self}); + }, 2); + + $def(self, '$yyparse', function $$yyparse(recv, mid) { + var self = this; + + return self.$__send__($$('Racc_YY_Parse_Method'), recv, mid, self.$_racc_setup(), true) + }, 2); + + $def(self, '$_racc_yyparse_rb', function $$_racc_yyparse_rb(recv, mid, arg, c_debug) { + var $a, $b, self = this, action_table = nil, action_check = nil, action_default = nil, action_pointer = nil, _ = nil, token_table = nil, act = nil, i = nil; + + + $b = arg, $a = $to_ary($b), (action_table = ($a[0] == null ? nil : $a[0])), (action_check = ($a[1] == null ? nil : $a[1])), (action_default = ($a[2] == null ? nil : $a[2])), (action_pointer = ($a[3] == null ? nil : $a[3])), (_ = ($a[4] == null ? nil : $a[4])), (_ = ($a[5] == null ? nil : $a[5])), (_ = ($a[6] == null ? nil : $a[6])), (_ = ($a[7] == null ? nil : $a[7])), (_ = ($a[8] == null ? nil : $a[8])), (_ = ($a[9] == null ? nil : $a[9])), (token_table = ($a[10] == null ? nil : $a[10])), (_ = ($a[11] == null ? nil : $a[11])), (_ = ($a[12] == null ? nil : $a[12])), (_ = ($a[13] == null ? nil : $a[13])), $b; + self.$_racc_init_sysvars(); + act = nil; + i = nil; + return $send(self, 'catch', ["racc_end_parse"], function $$2(){var $c, $d, self = $$2.$$s == null ? this : $$2.$$s; + if (self.racc_state == null) self.racc_state = nil; + + + while (!($truthy((i = action_pointer['$[]'](self.racc_state['$[]'](-1)))))) { + while ($truthy((act = self.$_racc_evalact(action_default['$[]'](self.racc_state['$[]'](-1)), arg)))) { + + } + }; + return $send(recv, '__send__', [mid], function $$3(tok, val){var $e, $f, self = $$3.$$s == null ? this : $$3.$$s, $ret_or_1 = nil, $ret_or_2 = nil; + if (self.racc_t == null) self.racc_t = nil; + if (self.racc_state == null) self.racc_state = nil; + if (self.racc_read_next == null) self.racc_read_next = nil; + + + + if (tok == null) tok = nil;; + + if (val == null) val = nil;; + if ($truthy(tok)) { + self.racc_t = ($truthy(($ret_or_1 = token_table['$[]'](tok))) ? ($ret_or_1) : (1)) + } else { + self.racc_t = 0 + }; + self.racc_val = val; + self.racc_read_next = false; + i = $rb_plus(i, self.racc_t); + if (!(($truthy($rb_ge(i, 0)) && ($truthy((act = action_table['$[]'](i))))) && ($eqeq(action_check['$[]'](i), self.racc_state['$[]'](-1))))) { + act = action_default['$[]'](self.racc_state['$[]'](-1)) + }; + while ($truthy((act = self.$_racc_evalact(act, arg)))) { + + }; + while ($truthy(($truthy(($ret_or_1 = ($truthy(($ret_or_2 = (i = action_pointer['$[]'](self.racc_state['$[]'](-1)))['$!']())) ? ($ret_or_2) : (self.racc_read_next['$!']())))) ? ($ret_or_1) : (self.racc_t['$=='](0))))) { + + if (!(((($truthy(i) && ($truthy((i = $rb_plus(i, self.racc_t))))) && ($truthy($rb_ge(i, 0)))) && ($truthy((act = action_table['$[]'](i))))) && ($eqeq(action_check['$[]'](i), self.racc_state['$[]'](-1))))) { + act = action_default['$[]'](self.racc_state['$[]'](-1)) + }; + while ($truthy((act = self.$_racc_evalact(act, arg)))) { + + }; + };}, {$$arity: 2, $$s: self});}, {$$arity: 0, $$s: self}); + }, 4); + + $def(self, '$_racc_evalact', function $$_racc_evalact(act, arg) { + var $a, $b, self = this, action_table = nil, action_check = nil, _ = nil, action_pointer = nil, shift_n = nil, reduce_n = nil, code = nil, $ret_or_1 = nil, i = nil; + + + $b = arg, $a = $to_ary($b), (action_table = ($a[0] == null ? nil : $a[0])), (action_check = ($a[1] == null ? nil : $a[1])), (_ = ($a[2] == null ? nil : $a[2])), (action_pointer = ($a[3] == null ? nil : $a[3])), (_ = ($a[4] == null ? nil : $a[4])), (_ = ($a[5] == null ? nil : $a[5])), (_ = ($a[6] == null ? nil : $a[6])), (_ = ($a[7] == null ? nil : $a[7])), (_ = ($a[8] == null ? nil : $a[8])), (_ = ($a[9] == null ? nil : $a[9])), (_ = ($a[10] == null ? nil : $a[10])), (shift_n = ($a[11] == null ? nil : $a[11])), (reduce_n = ($a[12] == null ? nil : $a[12])), (_ = ($a[13] == null ? nil : $a[13])), (_ = ($a[14] == null ? nil : $a[14])), $b; + if (($truthy($rb_gt(act, 0)) && ($truthy($rb_lt(act, shift_n))))) { + + if ($truthy($rb_gt(self.racc_error_status, 0))) { + if (!$eqeq(self.racc_t, 1)) { + self.racc_error_status = $rb_minus(self.racc_error_status, 1) + } + }; + self.racc_vstack.$push(self.racc_val); + self.racc_state.$push(act); + self.racc_read_next = true; + if ($truthy(self.yydebug)) { + + self.racc_tstack.$push(self.racc_t); + self.$racc_shift(self.racc_t, self.racc_tstack, self.racc_vstack); + }; + } else if (($truthy($rb_lt(act, 0)) && ($truthy($rb_gt(act, reduce_n['$-@']()))))) { + + code = $send(self, 'catch', ["racc_jump"], function $$4(){var self = $$4.$$s == null ? this : $$4.$$s; + if (self.racc_state == null) self.racc_state = nil; + + + self.racc_state.$push(self.$_racc_do_reduce(arg, act)); + return false;}, {$$arity: 0, $$s: self}); + if ($truthy(code)) { + if ($eqeqeq(1, ($ret_or_1 = code))) { + + self.racc_user_yyerror = true; + return reduce_n['$-@'](); + } else if ($eqeqeq(2, $ret_or_1)) { + return shift_n + } else { + self.$raise("[Racc Bug] unknown jump code") + } + }; + } else if ($eqeq(act, shift_n)) { + + if ($truthy(self.yydebug)) { + self.$racc_accept() + }; + self.$throw("racc_end_parse", self.racc_vstack['$[]'](0)); + } else if ($eqeq(act, reduce_n['$-@']())) { + + if ($eqeqeq(0, ($ret_or_1 = self.racc_error_status))) { + if (!$truthy(arg['$[]'](21))) { + self.$on_error(self.racc_t, self.racc_val, self.racc_vstack) + } + } else if ($eqeqeq(3, $ret_or_1)) { + + if ($eqeq(self.racc_t, 0)) { + self.$throw("racc_end_parse", nil) + }; + self.racc_read_next = true; + } else { + nil + }; + self.racc_user_yyerror = false; + self.racc_error_status = 3; + while ($truthy(true)) { + + if ($truthy((i = action_pointer['$[]'](self.racc_state['$[]'](-1))))) { + + i = $rb_plus(i, 1); + if ((($truthy($rb_ge(i, 0)) && ($truthy((act = action_table['$[]'](i))))) && ($eqeq(action_check['$[]'](i), self.racc_state['$[]'](-1))))) { + break; + }; + }; + if ($truthy($rb_le(self.racc_state.$size(), 1))) { + self.$throw("racc_end_parse", nil) + }; + self.racc_state.$pop(); + self.racc_vstack.$pop(); + if ($truthy(self.yydebug)) { + + self.racc_tstack.$pop(); + self.$racc_e_pop(self.racc_state, self.racc_tstack, self.racc_vstack); + }; + }; + return act; + } else { + self.$raise("[Racc Bug] unknown action " + (act.$inspect())) + }; + if ($truthy(self.yydebug)) { + self.$racc_next_state(self.racc_state['$[]'](-1), self.racc_state) + }; + return nil; + }, 2); + + $def(self, '$_racc_do_reduce', function $$_racc_do_reduce(arg, act) { + var $a, $b, self = this, _ = nil, goto_table = nil, goto_check = nil, goto_default = nil, goto_pointer = nil, nt_base = nil, reduce_table = nil, use_result = nil, state = nil, vstack = nil, tstack = nil, i = nil, len = nil, reduce_to = nil, method_id = nil, void_array = nil, tmp_t = nil, tmp_v = nil, $writer = nil, k1 = nil, curstate = nil; + + + $b = arg, $a = $to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), (_ = ($a[2] == null ? nil : $a[2])), (_ = ($a[3] == null ? nil : $a[3])), (goto_table = ($a[4] == null ? nil : $a[4])), (goto_check = ($a[5] == null ? nil : $a[5])), (goto_default = ($a[6] == null ? nil : $a[6])), (goto_pointer = ($a[7] == null ? nil : $a[7])), (nt_base = ($a[8] == null ? nil : $a[8])), (reduce_table = ($a[9] == null ? nil : $a[9])), (_ = ($a[10] == null ? nil : $a[10])), (_ = ($a[11] == null ? nil : $a[11])), (_ = ($a[12] == null ? nil : $a[12])), (use_result = ($a[13] == null ? nil : $a[13])), $b; + state = self.racc_state; + vstack = self.racc_vstack; + tstack = self.racc_tstack; + i = $rb_times(act, -3); + len = reduce_table['$[]'](i); + reduce_to = reduce_table['$[]']($rb_plus(i, 1)); + method_id = reduce_table['$[]']($rb_plus(i, 2)); + void_array = []; + if ($truthy(self.yydebug)) { + tmp_t = tstack['$[]'](len['$-@'](), len) + }; + tmp_v = vstack['$[]'](len['$-@'](), len); + if ($truthy(self.yydebug)) { + + $writer = [len['$-@'](), len, void_array]; + $send(tstack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + + $writer = [len['$-@'](), len, void_array]; + $send(vstack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [len['$-@'](), len, void_array]; + $send(state, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy(use_result)) { + vstack.$push(self.$__send__(method_id, tmp_v, vstack, tmp_v['$[]'](0))) + } else { + vstack.$push(self.$__send__(method_id, tmp_v, vstack)) + }; + tstack.$push(reduce_to); + if ($truthy(self.yydebug)) { + self.$racc_reduce(tmp_t, reduce_to, tstack, vstack) + }; + k1 = $rb_minus(reduce_to, nt_base); + if ($truthy((i = goto_pointer['$[]'](k1)))) { + + i = $rb_plus(i, state['$[]'](-1)); + if ((($truthy($rb_ge(i, 0)) && ($truthy((curstate = goto_table['$[]'](i))))) && ($eqeq(goto_check['$[]'](i), k1)))) { + return curstate + }; + }; + return goto_default['$[]'](k1); + }, 2); + + $def(self, '$on_error', function $$on_error(t, val, vstack) { + var self = this, $ret_or_1 = nil; + + return self.$raise($$('ParseError'), self.$sprintf("\nparse error on value %s (%s)", val.$inspect(), ($truthy(($ret_or_1 = self.$token_to_str(t))) ? ($ret_or_1) : ("?")))) + }, 3); + + $def(self, '$yyerror', function $$yyerror() { + var self = this; + + return self.$throw("racc_jump", 1) + }, 0); + + $def(self, '$yyaccept', function $$yyaccept() { + var self = this; + + return self.$throw("racc_jump", 2) + }, 0); + + $def(self, '$yyerrok', function $$yyerrok() { + var self = this; + + return (self.racc_error_status = 0) + }, 0); + + $def(self, '$racc_read_token', function $$racc_read_token(t, tok, val) { + var self = this; + + + self.racc_debug_out.$print("read "); + self.racc_debug_out.$print(tok.$inspect(), "(", self.$racc_token2str(t), ") "); + self.racc_debug_out.$puts(val.$inspect()); + return self.racc_debug_out.$puts(); + }, 3); + + $def(self, '$racc_shift', function $$racc_shift(tok, tstack, vstack) { + var self = this; + + + self.racc_debug_out.$puts("shift " + (self.$racc_token2str(tok))); + self.$racc_print_stacks(tstack, vstack); + return self.racc_debug_out.$puts(); + }, 3); + + $def(self, '$racc_reduce', function $$racc_reduce(toks, sim, tstack, vstack) { + var self = this, out = nil; + + + out = self.racc_debug_out; + out.$print("reduce "); + if ($truthy(toks['$empty?']())) { + out.$print(" ") + } else { + $send(toks, 'each', [], function $$5(t){var self = $$5.$$s == null ? this : $$5.$$s; + + + + if (t == null) t = nil;; + return out.$print(" ", self.$racc_token2str(t));}, {$$arity: 1, $$s: self}) + }; + out.$puts(" --> " + (self.$racc_token2str(sim))); + self.$racc_print_stacks(tstack, vstack); + return self.racc_debug_out.$puts(); + }, 4); + + $def(self, '$racc_accept', function $$racc_accept() { + var self = this; + + + self.racc_debug_out.$puts("accept"); + return self.racc_debug_out.$puts(); + }, 0); + + $def(self, '$racc_e_pop', function $$racc_e_pop(state, tstack, vstack) { + var self = this; + + + self.racc_debug_out.$puts("error recovering mode: pop token"); + self.$racc_print_states(state); + self.$racc_print_stacks(tstack, vstack); + return self.racc_debug_out.$puts(); + }, 3); + + $def(self, '$racc_next_state', function $$racc_next_state(curstate, state) { + var self = this; + + + self.racc_debug_out.$puts("goto " + (curstate)); + self.$racc_print_states(state); + return self.racc_debug_out.$puts(); + }, 2); + + $def(self, '$racc_print_stacks', function $$racc_print_stacks(t, v) { + var self = this, out = nil; + + + out = self.racc_debug_out; + out.$print(" ["); + $send(t, 'each_index', [], function $$6(i){var self = $$6.$$s == null ? this : $$6.$$s; + + + + if (i == null) i = nil;; + return out.$print(" (", self.$racc_token2str(t['$[]'](i)), " ", v['$[]'](i).$inspect(), ")");}, {$$arity: 1, $$s: self}); + return out.$puts(" ]"); + }, 2); + + $def(self, '$racc_print_states', function $$racc_print_states(s) { + var self = this, out = nil; + + + out = self.racc_debug_out; + out.$print(" ["); + $send(s, 'each', [], function $$7(st){ + + + if (st == null) st = nil;; + return out.$print(" ", st);}, 1); + return out.$puts(" ]"); + }, 1); + + $def(self, '$racc_token2str', function $$racc_token2str(tok) { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = $$$(self.$class(), 'Racc_token_to_s_table')['$[]'](tok)))) { + return $ret_or_1 + } else { + return self.$raise("[Racc Bug] can't convert token " + (tok) + " to string") + } + }, 1); + return $def(self, '$token_to_str', function $$token_to_str(t) { + var self = this; + + return $$$(self.$class(), 'Racc_token_to_s_table')['$[]'](t) + }, 1); + })($nesting[0], null, $nesting); + })($nesting[0], $nesting); +}; + +Opal.modules["parser/messages"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set, $hash2 = Opal.hash2, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $defs = Opal.defs; + + Opal.add_stubs('freeze,[],empty?,===,format'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + + $const_set($nesting[0], 'MESSAGES', $hash2(["unicode_point_too_large", "invalid_escape", "incomplete_escape", "invalid_hex_escape", "invalid_unicode_escape", "unterminated_unicode", "escape_eof", "string_eof", "regexp_options", "cvar_name", "ivar_name", "trailing_in_number", "empty_numeric", "invalid_octal", "no_dot_digit_literal", "bare_backslash", "unexpected", "embedded_document", "heredoc_id_has_newline", "heredoc_id_ends_with_nl", "unterminated_heredoc_id", "invalid_escape_use", "ambiguous_literal", "ambiguous_regexp", "ambiguous_prefix", "triple_dot_at_eol", "nth_ref_alias", "begin_in_method", "backref_assignment", "invalid_assignment", "module_name_const", "unexpected_token", "argument_const", "argument_ivar", "argument_gvar", "argument_cvar", "duplicate_argument", "empty_symbol", "odd_hash", "singleton_literal", "dynamic_const", "const_reassignment", "module_in_def", "class_in_def", "unexpected_percent_str", "block_and_blockarg", "masgn_as_condition", "block_given_to_yield", "invalid_regexp", "invalid_return", "csend_in_lhs_of_masgn", "cant_assign_to_numparam", "reserved_for_numparam", "ordinary_param_defined", "numparam_used_in_outer_scope", "circular_argument_reference", "pm_interp_in_var_name", "lvar_name", "undefined_lvar", "duplicate_variable_name", "duplicate_pattern_key", "endless_setter", "invalid_id_to_get", "forward_arg_after_restarg", "no_anonymous_blockarg", "useless_else", "duplicate_hash_key", "invalid_encoding", "invalid_action", "clobbered", "different_replacements", "swallowed_insertions", "swallowed_insertions_conflict", "crossing_deletions", "crossing_deletions_conflict", "crossing_insertions", "crossing_insertions_conflict"], {"unicode_point_too_large": "invalid Unicode codepoint (too large)", "invalid_escape": "invalid escape character syntax", "incomplete_escape": "incomplete character syntax", "invalid_hex_escape": "invalid hex escape", "invalid_unicode_escape": "invalid Unicode escape", "unterminated_unicode": "unterminated Unicode escape", "escape_eof": "escape sequence meets end of file", "string_eof": "unterminated string meets end of file", "regexp_options": "unknown regexp options: %{options}", "cvar_name": "`%{name}' is not allowed as a class variable name", "ivar_name": "`%{name}' is not allowed as an instance variable name", "trailing_in_number": "trailing `%{character}' in number", "empty_numeric": "numeric literal without digits", "invalid_octal": "invalid octal digit", "no_dot_digit_literal": "no . floating literal anymore; put 0 before dot", "bare_backslash": "bare backslash only allowed before newline", "unexpected": "unexpected `%{character}'", "embedded_document": "embedded document meets end of file (and they embark on a romantic journey)", "heredoc_id_has_newline": "here document identifier across newlines, never match", "heredoc_id_ends_with_nl": "here document identifier ends with a newline", "unterminated_heredoc_id": "unterminated heredoc id", "invalid_escape_use": "invalid character syntax; use ?%{escape}", "ambiguous_literal": "ambiguous first argument; put parentheses or a space even after the operator", "ambiguous_regexp": "ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after `/' operator", "ambiguous_prefix": "`%{prefix}' interpreted as argument prefix", "triple_dot_at_eol": "... at EOL, should be parenthesized", "nth_ref_alias": "cannot define an alias for a back-reference variable", "begin_in_method": "BEGIN in method", "backref_assignment": "cannot assign to a back-reference variable", "invalid_assignment": "cannot assign to a keyword", "module_name_const": "class or module name must be a constant literal", "unexpected_token": "unexpected token %{token}", "argument_const": "formal argument cannot be a constant", "argument_ivar": "formal argument cannot be an instance variable", "argument_gvar": "formal argument cannot be a global variable", "argument_cvar": "formal argument cannot be a class variable", "duplicate_argument": "duplicate argument name", "empty_symbol": "empty symbol literal", "odd_hash": "odd number of entries for a hash", "singleton_literal": "cannot define a singleton method for a literal", "dynamic_const": "dynamic constant assignment", "const_reassignment": "constant re-assignment", "module_in_def": "module definition in method body", "class_in_def": "class definition in method body", "unexpected_percent_str": "%{type}: unknown type of percent-literal", "block_and_blockarg": "both block argument and literal block are passed", "masgn_as_condition": "multiple assignment in conditional context", "block_given_to_yield": "block given to yield", "invalid_regexp": "%{message}", "invalid_return": "Invalid return in class/module body", "csend_in_lhs_of_masgn": "&. inside multiple assignment destination", "cant_assign_to_numparam": "cannot assign to numbered parameter %{name}", "reserved_for_numparam": "%{name} is reserved for numbered parameter", "ordinary_param_defined": "ordinary parameter is defined", "numparam_used_in_outer_scope": "numbered parameter is already used in an outer scope", "circular_argument_reference": "circular argument reference %{var_name}", "pm_interp_in_var_name": "symbol literal with interpolation is not allowed", "lvar_name": "`%{name}' is not allowed as a local variable name", "undefined_lvar": "no such local variable: `%{name}'", "duplicate_variable_name": "duplicate variable name %{name}", "duplicate_pattern_key": "duplicate hash pattern key %{name}", "endless_setter": "setter method cannot be defined in an endless method definition", "invalid_id_to_get": "identifier %{identifier} is not valid to get", "forward_arg_after_restarg": "... after rest argument", "no_anonymous_blockarg": "no anonymous block parameter", "useless_else": "else without rescue is useless", "duplicate_hash_key": "key is duplicated and overwritten", "invalid_encoding": "literal contains escape sequences incompatible with UTF-8", "invalid_action": "cannot %{action}", "clobbered": "clobbered by: %{action}", "different_replacements": "different replacements: %{replacement} vs %{other_replacement}", "swallowed_insertions": "this replacement:", "swallowed_insertions_conflict": "swallows some inner rewriting actions:", "crossing_deletions": "the deletion of:", "crossing_deletions_conflict": "is crossing:", "crossing_insertions": "the rewriting action on:", "crossing_insertions_conflict": "is crossing that on:"}).$freeze()); + return (function($base, $parent_nesting) { + var self = $module($base, 'Messages'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $defs(self, '$compile', function $$compile(reason, arguments$) { + var self = this, template = nil; + + + template = $$('MESSAGES')['$[]'](reason); + if (($eqeqeq($$('Hash'), arguments$) && ($truthy(arguments$['$empty?']())))) { + return template + }; + return self.$format(template, arguments$); + }, 2) + })($nesting[0], $nesting); + })($nesting[0], $nesting) +}; + +Opal.modules["parser/deprecation"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $truthy = Opal.truthy, $def = Opal.def; + + Opal.add_stubs('attr_writer,warn'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base) { + var self = $module($base, 'Deprecation'); + + + + self.$attr_writer("warned_of_deprecation"); + return $def(self, '$warn_of_deprecation', function $$warn_of_deprecation() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + if (self.warned_of_deprecation == null) self.warned_of_deprecation = nil; + + return (self.warned_of_deprecation = ($truthy(($ret_or_1 = self.warned_of_deprecation)) ? ($ret_or_1) : ($truthy(($ret_or_2 = self.$warn($$$(self, 'DEPRECATION_WARNING')))) ? ($ret_or_2) : (true)))) + }, 0); + })($nesting[0]) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/ast/processor"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $alias = Opal.alias, $to_a = Opal.to_a, $not = Opal.not, $truthy = Opal.truthy, $slice = Opal.slice; + + Opal.add_stubs('updated,process_all,on_var,!,nil?,process,on_vasgn,on_argument,is_a?,[],children,process_regular_node,warn'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'AST'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Processor'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$process_regular_node', function $$process_regular_node(node) { + var self = this; + + return node.$updated(nil, self.$process_all(node)) + }, 1); + $alias(self, "on_dstr", "process_regular_node"); + $alias(self, "on_dsym", "process_regular_node"); + $alias(self, "on_regexp", "process_regular_node"); + $alias(self, "on_xstr", "process_regular_node"); + $alias(self, "on_splat", "process_regular_node"); + $alias(self, "on_kwsplat", "process_regular_node"); + $alias(self, "on_array", "process_regular_node"); + $alias(self, "on_pair", "process_regular_node"); + $alias(self, "on_hash", "process_regular_node"); + $alias(self, "on_kwargs", "process_regular_node"); + $alias(self, "on_irange", "process_regular_node"); + $alias(self, "on_erange", "process_regular_node"); + + $def(self, '$on_var', function $$on_var(node) { + + return node + }, 1); + + $def(self, '$process_variable_node', function $$process_variable_node(node) { + var self = this; + + return self.$on_var(node) + }, 1); + $alias(self, "on_lvar", "process_variable_node"); + $alias(self, "on_ivar", "process_variable_node"); + $alias(self, "on_gvar", "process_variable_node"); + $alias(self, "on_cvar", "process_variable_node"); + $alias(self, "on_back_ref", "process_variable_node"); + $alias(self, "on_nth_ref", "process_variable_node"); + + $def(self, '$on_vasgn', function $$on_vasgn(node) { + var $a, self = this, name = nil, value_node = nil; + + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (value_node = ($a[1] == null ? nil : $a[1])), $a; + if ($not(value_node['$nil?']())) { + return node.$updated(nil, [name, self.$process(value_node)]) + } else { + return node + }; + }, 1); + + $def(self, '$process_var_asgn_node', function $$process_var_asgn_node(node) { + var self = this; + + return self.$on_vasgn(node) + }, 1); + $alias(self, "on_lvasgn", "process_var_asgn_node"); + $alias(self, "on_ivasgn", "process_var_asgn_node"); + $alias(self, "on_gvasgn", "process_var_asgn_node"); + $alias(self, "on_cvasgn", "process_var_asgn_node"); + $alias(self, "on_and_asgn", "process_regular_node"); + $alias(self, "on_or_asgn", "process_regular_node"); + + $def(self, '$on_op_asgn', function $$on_op_asgn(node) { + var $a, self = this, var_node = nil, method_name = nil, value_node = nil; + + + $a = [].concat($to_a(node)), (var_node = ($a[0] == null ? nil : $a[0])), (method_name = ($a[1] == null ? nil : $a[1])), (value_node = ($a[2] == null ? nil : $a[2])), $a; + return node.$updated(nil, [self.$process(var_node), method_name, self.$process(value_node)]); + }, 1); + $alias(self, "on_mlhs", "process_regular_node"); + $alias(self, "on_masgn", "process_regular_node"); + + $def(self, '$on_const', function $$on_const(node) { + var $a, self = this, scope_node = nil, name = nil; + + + $a = [].concat($to_a(node)), (scope_node = ($a[0] == null ? nil : $a[0])), (name = ($a[1] == null ? nil : $a[1])), $a; + return node.$updated(nil, [self.$process(scope_node), name]); + }, 1); + + $def(self, '$on_casgn', function $$on_casgn(node) { + var $a, self = this, scope_node = nil, name = nil, value_node = nil; + + + $a = [].concat($to_a(node)), (scope_node = ($a[0] == null ? nil : $a[0])), (name = ($a[1] == null ? nil : $a[1])), (value_node = ($a[2] == null ? nil : $a[2])), $a; + if ($not(value_node['$nil?']())) { + return node.$updated(nil, [self.$process(scope_node), name, self.$process(value_node)]) + } else { + return node.$updated(nil, [self.$process(scope_node), name]) + }; + }, 1); + $alias(self, "on_args", "process_regular_node"); + + $def(self, '$on_argument', function $$on_argument(node) { + var $a, self = this, arg_name = nil, value_node = nil; + + + $a = [].concat($to_a(node)), (arg_name = ($a[0] == null ? nil : $a[0])), (value_node = ($a[1] == null ? nil : $a[1])), $a; + if ($not(value_node['$nil?']())) { + return node.$updated(nil, [arg_name, self.$process(value_node)]) + } else { + return node + }; + }, 1); + + $def(self, '$process_argument_node', function $$process_argument_node(node) { + var self = this; + + return self.$on_argument(node) + }, 1); + $alias(self, "on_arg", "process_argument_node"); + $alias(self, "on_optarg", "process_argument_node"); + $alias(self, "on_restarg", "process_argument_node"); + $alias(self, "on_blockarg", "process_argument_node"); + $alias(self, "on_shadowarg", "process_argument_node"); + $alias(self, "on_kwarg", "process_argument_node"); + $alias(self, "on_kwoptarg", "process_argument_node"); + $alias(self, "on_kwrestarg", "process_argument_node"); + $alias(self, "on_forward_arg", "process_argument_node"); + + $def(self, '$on_procarg0', function $$on_procarg0(node) { + var self = this; + + if ($truthy(node.$children()['$[]'](0)['$is_a?']($$('Symbol')))) { + return self.$on_argument(node) + } else { + return self.$process_regular_node(node) + } + }, 1); + $alias(self, "on_arg_expr", "process_regular_node"); + $alias(self, "on_restarg_expr", "process_regular_node"); + $alias(self, "on_blockarg_expr", "process_regular_node"); + $alias(self, "on_block_pass", "process_regular_node"); + $alias(self, "on_module", "process_regular_node"); + $alias(self, "on_class", "process_regular_node"); + $alias(self, "on_sclass", "process_regular_node"); + + $def(self, '$on_def', function $$on_def(node) { + var $a, self = this, name = nil, args_node = nil, body_node = nil; + + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (args_node = ($a[1] == null ? nil : $a[1])), (body_node = ($a[2] == null ? nil : $a[2])), $a; + return node.$updated(nil, [name, self.$process(args_node), self.$process(body_node)]); + }, 1); + + $def(self, '$on_defs', function $$on_defs(node) { + var $a, self = this, definee_node = nil, name = nil, args_node = nil, body_node = nil; + + + $a = [].concat($to_a(node)), (definee_node = ($a[0] == null ? nil : $a[0])), (name = ($a[1] == null ? nil : $a[1])), (args_node = ($a[2] == null ? nil : $a[2])), (body_node = ($a[3] == null ? nil : $a[3])), $a; + return node.$updated(nil, [self.$process(definee_node), name, self.$process(args_node), self.$process(body_node)]); + }, 1); + $alias(self, "on_undef", "process_regular_node"); + $alias(self, "on_alias", "process_regular_node"); + + $def(self, '$on_send', function $$on_send(node) { + var $a, self = this, receiver_node = nil, method_name = nil, arg_nodes = nil; + + + $a = [].concat($to_a(node)), (receiver_node = ($a[0] == null ? nil : $a[0])), (method_name = ($a[1] == null ? nil : $a[1])), (arg_nodes = $slice.call($a, 2)), $a; + if ($truthy(receiver_node)) { + receiver_node = self.$process(receiver_node) + }; + return node.$updated(nil, [receiver_node, method_name].concat($to_a(self.$process_all(arg_nodes)))); + }, 1); + $alias(self, "on_csend", "on_send"); + $alias(self, "on_index", "process_regular_node"); + $alias(self, "on_indexasgn", "process_regular_node"); + $alias(self, "on_block", "process_regular_node"); + $alias(self, "on_lambda", "process_regular_node"); + + $def(self, '$on_numblock', function $$on_numblock(node) { + var $a, self = this, method_call = nil, max_numparam = nil, body = nil; + + + $a = [].concat($to_a(node)), (method_call = ($a[0] == null ? nil : $a[0])), (max_numparam = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), $a; + return node.$updated(nil, [self.$process(method_call), max_numparam, self.$process(body)]); + }, 1); + $alias(self, "on_while", "process_regular_node"); + $alias(self, "on_while_post", "process_regular_node"); + $alias(self, "on_until", "process_regular_node"); + $alias(self, "on_until_post", "process_regular_node"); + $alias(self, "on_for", "process_regular_node"); + $alias(self, "on_return", "process_regular_node"); + $alias(self, "on_break", "process_regular_node"); + $alias(self, "on_next", "process_regular_node"); + $alias(self, "on_redo", "process_regular_node"); + $alias(self, "on_retry", "process_regular_node"); + $alias(self, "on_super", "process_regular_node"); + $alias(self, "on_yield", "process_regular_node"); + $alias(self, "on_defined?", "process_regular_node"); + $alias(self, "on_not", "process_regular_node"); + $alias(self, "on_and", "process_regular_node"); + $alias(self, "on_or", "process_regular_node"); + $alias(self, "on_if", "process_regular_node"); + $alias(self, "on_when", "process_regular_node"); + $alias(self, "on_case", "process_regular_node"); + $alias(self, "on_iflipflop", "process_regular_node"); + $alias(self, "on_eflipflop", "process_regular_node"); + $alias(self, "on_match_current_line", "process_regular_node"); + $alias(self, "on_match_with_lvasgn", "process_regular_node"); + $alias(self, "on_resbody", "process_regular_node"); + $alias(self, "on_rescue", "process_regular_node"); + $alias(self, "on_ensure", "process_regular_node"); + $alias(self, "on_begin", "process_regular_node"); + $alias(self, "on_kwbegin", "process_regular_node"); + $alias(self, "on_preexe", "process_regular_node"); + $alias(self, "on_postexe", "process_regular_node"); + $alias(self, "on_case_match", "process_regular_node"); + $alias(self, "on_in_match", "process_regular_node"); + $alias(self, "on_match_pattern", "process_regular_node"); + $alias(self, "on_match_pattern_p", "process_regular_node"); + $alias(self, "on_in_pattern", "process_regular_node"); + $alias(self, "on_if_guard", "process_regular_node"); + $alias(self, "on_unless_guard", "process_regular_node"); + $alias(self, "on_match_var", "process_variable_node"); + $alias(self, "on_match_rest", "process_regular_node"); + $alias(self, "on_pin", "process_regular_node"); + $alias(self, "on_match_alt", "process_regular_node"); + $alias(self, "on_match_as", "process_regular_node"); + $alias(self, "on_array_pattern", "process_regular_node"); + $alias(self, "on_array_pattern_with_tail", "process_regular_node"); + $alias(self, "on_hash_pattern", "process_regular_node"); + $alias(self, "on_const_pattern", "process_regular_node"); + $alias(self, "on_find_pattern", "process_regular_node"); + + $def(self, '$process_variable_node', function $$process_variable_node(node) { + var self = this; + + + self.$warn("Parser::AST::Processor#process_variable_node is deprecated as a" + " public API and will be removed. Please use " + "Parser::AST::Processor#on_var instead."); + return self.$on_var(node); + }, 1); + + $def(self, '$process_var_asgn_node', function $$process_var_asgn_node(node) { + var self = this; + + + self.$warn("Parser::AST::Processor#process_var_asgn_node is deprecated as a" + " public API and will be removed. Please use " + "Parser::AST::Processor#on_vasgn instead."); + return self.$on_vasgn(node); + }, 1); + + $def(self, '$process_argument_node', function $$process_argument_node(node) { + var self = this; + + + self.$warn("Parser::AST::Processor#process_argument_node is deprecated as a" + " public API and will be removed. Please use " + "Parser::AST::Processor#on_argument instead."); + return self.$on_argument(node); + }, 1); + return $def(self, '$on_empty_else', function $$on_empty_else(node) { + + return node + }, 1); + })($nesting[0], $$$($$$('AST'), 'Processor'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/meta"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set; + + Opal.add_stubs('freeze,to_set'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Meta'); + + var $nesting = [self].concat($parent_nesting); + + return $const_set($nesting[0], 'NODE_TYPES', ["true", "false", "nil", "int", "float", "str", "dstr", "sym", "dsym", "xstr", "regopt", "regexp", "array", "splat", "pair", "kwsplat", "hash", "irange", "erange", "self", "lvar", "ivar", "cvar", "gvar", "const", "defined?", "lvasgn", "ivasgn", "cvasgn", "gvasgn", "casgn", "mlhs", "masgn", "op_asgn", "and_asgn", "ensure", "rescue", "arg_expr", "or_asgn", "back_ref", "nth_ref", "match_with_lvasgn", "match_current_line", "module", "class", "sclass", "def", "defs", "undef", "alias", "args", "cbase", "arg", "optarg", "restarg", "blockarg", "block_pass", "kwarg", "kwoptarg", "kwrestarg", "kwnilarg", "send", "csend", "super", "zsuper", "yield", "block", "and", "not", "or", "if", "when", "case", "while", "until", "while_post", "until_post", "for", "break", "next", "redo", "return", "resbody", "kwbegin", "begin", "retry", "preexe", "postexe", "iflipflop", "eflipflop", "shadowarg", "complex", "rational", "__FILE__", "__LINE__", "__ENCODING__", "ident", "lambda", "indexasgn", "index", "procarg0", "restarg_expr", "blockarg_expr", "objc_kwarg", "objc_restarg", "objc_varargs", "numargs", "numblock", "forward_args", "forwarded_args", "forward_arg", "case_match", "in_match", "in_pattern", "match_var", "pin", "match_alt", "match_as", "match_rest", "array_pattern", "match_with_trailing_comma", "array_pattern_with_tail", "hash_pattern", "const_pattern", "if_guard", "unless_guard", "match_nil_pattern", "empty_else", "find_pattern", "kwargs", "match_pattern_p", "match_pattern"].$to_set().$freeze()) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/buffer"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $regexp = Opal.regexp, $enc = Opal.enc, $truthy = Opal.truthy, $gvars = Opal.gvars, $eqeq = Opal.eqeq, $neqeq = Opal.neqeq, $defs = Opal.defs, $hash2 = Opal.hash2, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $not = Opal.not, $rb_plus = Opal.rb_plus, $rb_ge = Opal.rb_ge, $rb_lt = Opal.rb_lt, $send2 = Opal.send2, $find_super = Opal.find_super; + + Opal.add_stubs('attr_reader,empty?,=~,start_with?,freeze,==,[],!=,nil?,match,find,encoding,recognize_encoding,force_encoding,encode,to_s,source=,-,open,read,raise,frozen?,dup,reencode_string,class,valid_encoding?,name,raw_source=,gsub,!,ascii_only?,line_index_for_position,line_begins,+,to_a,lines,end_with?,<<,each,chomp!,fetch,source_lines,>=,size,<,new,source,source_range,private,index,bsearch,[]=,method_defined?,bsearch_index'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Buffer'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.name = $proto.source = $proto.slice_source = $proto.first_line = $proto.lines = $proto.source_range = $proto.line_begins = $proto.line_index_for_position = $proto.line_range = nil; + + self.$attr_reader("name", "first_line"); + $const_set($nesting[0], 'ENCODING_RE', $regexp([$enc("[\\s#](en)?coding\\s*[:=]\\s*", "ASCII-8BIT"), $enc("(", "ASCII-8BIT"), $enc("", "ASCII-8BIT"), $enc("(utf8-mac)", "ASCII-8BIT"), $enc("|", "ASCII-8BIT"), $enc("", "ASCII-8BIT"), $enc("([A-Za-z0-9_-]+?)(-unix|-dos|-mac)", "ASCII-8BIT"), $enc("|", "ASCII-8BIT"), $enc("([A-Za-z0-9_-]+)", "ASCII-8BIT"), $enc(")", "ASCII-8BIT"), $enc("", "ASCII-8BIT")])); + $defs(self, '$recognize_encoding', function $$recognize_encoding(string) { + var $a, $b, first_line = nil, second_line = nil, encoding_line = nil, result = nil, $ret_or_1 = nil, $ret_or_2 = nil; + + + if ($truthy(string['$empty?']())) { + return nil + }; + string['$=~'](/^(.*)\n?(.*\n)?/); + $a = [(($b = $gvars['~']) === nil ? nil : $b['$[]'](1)), (($b = $gvars['~']) === nil ? nil : $b['$[]'](2))], (first_line = $a[0]), (second_line = $a[1]), $a; + if ($truthy(first_line['$start_with?']($enc("\xEF\xBB\xBF", "ASCII-8BIT").$freeze()))) { + return $$$($$('Encoding'), 'UTF_8') + } else if ($eqeq(first_line['$[]'](0, 2), $enc("#!", "ASCII-8BIT").$freeze())) { + encoding_line = second_line + } else { + encoding_line = first_line + }; + if (($truthy(encoding_line['$nil?']()) || ($neqeq(encoding_line['$[]'](0), $enc("#", "ASCII-8BIT"))))) { + return nil + }; + if ($truthy((result = $$('ENCODING_RE').$match(encoding_line)))) { + return $$('Encoding').$find(($truthy(($ret_or_1 = ($truthy(($ret_or_2 = result['$[]'](3))) ? ($ret_or_2) : (result['$[]'](4))))) ? ($ret_or_1) : (result['$[]'](6)))) + } else { + return nil + }; + }, 1); + $defs(self, '$reencode_string', function $$reencode_string(input) { + var self = this, original_encoding = nil, detected_encoding = nil; + + + original_encoding = input.$encoding(); + detected_encoding = self.$recognize_encoding(input.$force_encoding($$$($$('Encoding'), 'BINARY'))); + if ($truthy(detected_encoding['$nil?']())) { + return input.$force_encoding(original_encoding) + } else if ($eqeq(detected_encoding, $$$($$('Encoding'), 'BINARY'))) { + return input + } else { + return input.$force_encoding(detected_encoding).$encode($$$($$('Encoding'), 'UTF_8')) + }; + }, 1); + + $def(self, '$initialize', function $$initialize(name, $a, $b) { + var $post_args, $kwargs, first_line, source, self = this, $writer = nil; + + + + $post_args = Opal.slice.call(arguments, 1); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if ($post_args.length > 0) first_line = $post_args.shift(); + if (first_line == null) first_line = 1;; + + source = $kwargs.$$smap["source"]; + if (source == null) source = nil; + self.name = name.$to_s(); + self.source = nil; + self.first_line = first_line; + self.lines = nil; + self.line_begins = nil; + self.slice_source = nil; + self.line_index_for_position = $hash2([], {}); + if ($truthy(source)) { + + $writer = [source]; + $send(self, 'source=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else { + return nil + }; + }, -2); + + $def(self, '$read', function $$read() { + var self = this; + + + $send($$('File'), 'open', [self.name, $enc("rb", "ASCII-8BIT")], function $$1(io){var self = $$1.$$s == null ? this : $$1.$$s, $writer = nil; + + + + if (io == null) io = nil;; + $writer = [io.$read()]; + $send(self, 'source=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}); + return self; + }, 0); + + $def(self, '$source', function $$source() { + var self = this; + + + if ($truthy(self.source['$nil?']())) { + self.$raise($$('RuntimeError'), $enc("Cannot extract source from uninitialized Source::Buffer", "ASCII-8BIT")) + }; + return self.source; + }, 0); + + $def(self, '$source=', function $Buffer_source$eq$2(input) { + var self = this, $writer = nil; + + + if ($truthy(input['$frozen?']())) { + input = input.$dup() + }; + input = self.$class().$reencode_string(input); + if (!$truthy(input['$valid_encoding?']())) { + self.$raise($$('EncodingError'), $enc("invalid byte sequence in ", "ASCII-8BIT") + (input.$encoding().$name())) + }; + + $writer = [input]; + $send(self, 'raw_source=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + }, 1); + + $def(self, '$raw_source=', function $Buffer_raw_source$eq$3(input) { + var self = this; + + + if ($truthy(self.source)) { + self.$raise($$('ArgumentError'), $enc("Source::Buffer is immutable", "ASCII-8BIT")) + }; + self.source = input.$gsub($enc("\r\n", "ASCII-8BIT").$freeze(), $enc("\n", "ASCII-8BIT").$freeze()).$freeze(); + if ((($not(self.source['$ascii_only?']()) && ($neqeq(self.source.$encoding(), $$$($$('Encoding'), 'UTF_32LE')))) && ($neqeq(self.source.$encoding(), $$$($$('Encoding'), 'BINARY'))))) { + return (self.slice_source = self.source.$encode($$$($$('Encoding'), 'UTF_32LE'))) + } else { + return nil + }; + }, 1); + + $def(self, '$slice', function $$slice(range) { + var self = this; + + if ($truthy(self.slice_source['$nil?']())) { + return self.source['$[]'](range) + } else { + return self.slice_source['$[]'](range).$encode(self.source.$encoding()) + } + }, 1); + + $def(self, '$decompose_position', function $$decompose_position(position) { + var self = this, line_index = nil, line_begin = nil; + + + line_index = self.$line_index_for_position(position); + line_begin = self.$line_begins()['$[]'](line_index); + return [$rb_plus(self.first_line, line_index), $rb_minus(position, line_begin)]; + }, 1); + + $def(self, '$line_for_position', function $$line_for_position(position) { + var self = this; + + return $rb_plus(self.$line_index_for_position(position), self.first_line) + }, 1); + + $def(self, '$column_for_position', function $$column_for_position(position) { + var self = this, line_index = nil; + + + line_index = self.$line_index_for_position(position); + return $rb_minus(position, self.$line_begins()['$[]'](line_index)); + }, 1); + + $def(self, '$source_lines', function $$source_lines() { + var self = this, $ret_or_1 = nil, lines = nil; + + return (self.lines = ($truthy(($ret_or_1 = self.lines)) ? ($ret_or_1) : (((lines = self.source.$lines().$to_a()), ($truthy(self.source['$end_with?']($enc("\n", "ASCII-8BIT").$freeze())) ? (lines['$<<']($enc("", "ASCII-8BIT").$dup())) : nil), $send(lines, 'each', [], function $$4(line){ + + + if (line == null) line = nil;; + line['$chomp!']($enc("\n", "ASCII-8BIT").$freeze()); + return line.$freeze();}, 1), lines.$freeze())))) + }, 0); + + $def(self, '$source_line', function $$source_line(lineno) { + var self = this; + + return self.$source_lines().$fetch($rb_minus(lineno, self.first_line)).$dup() + }, 1); + + $def(self, '$line_range', function $$line_range(lineno) { + var self = this, index = nil; + + + index = $rb_minus(lineno, self.first_line); + if (($truthy($rb_lt(index, 0)) || ($truthy($rb_ge($rb_plus(index, 1), self.$line_begins().$size()))))) { + return self.$raise($$('IndexError'), $enc("Parser::Source::Buffer: range for line ", "ASCII-8BIT") + ("" + (lineno) + $enc(" requested, valid line numbers are ", "ASCII-8BIT") + (self.first_line) + $enc("..", "ASCII-8BIT")) + ("" + ($rb_minus($rb_plus(self.first_line, self.$line_begins().$size()), 2)))) + } else { + return $$('Range').$new(self, self.$line_begins()['$[]'](index), $rb_minus(self.$line_begins()['$[]']($rb_plus(index, 1)), 1)) + }; + }, 1); + + $def(self, '$source_range', function $$source_range() { + var self = this, $ret_or_1 = nil; + + return (self.source_range = ($truthy(($ret_or_1 = self.source_range)) ? ($ret_or_1) : ($$('Range').$new(self, 0, self.$source().$size())))) + }, 0); + + $def(self, '$last_line', function $$last_line() { + var self = this; + + return $rb_minus($rb_plus(self.$line_begins().$size(), self.first_line), 2) + }, 0); + + $def(self, '$freeze', function $$freeze() { + var $yield = $$freeze.$$p || nil, self = this; + + delete $$freeze.$$p; + + self.$source_lines(); + self.$line_begins(); + self.$source_range(); + return $send2(self, $find_super(self, 'freeze', $$freeze, false, true), 'freeze', [], $yield); + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return $enc("#<", "ASCII-8BIT") + (self.$class()) + $enc(" ", "ASCII-8BIT") + (self.$name()) + $enc(">", "ASCII-8BIT") + }, 0); + self.$private(); + + $def(self, '$line_begins', function $$line_begins() { + var $a, self = this, $ret_or_1 = nil, begins = nil, index = nil; + + return (self.line_begins = ($truthy(($ret_or_1 = self.line_begins)) ? ($ret_or_1) : ((function() { + (begins = [0]); + (index = 0); + (function() {while ($truthy((index = self.source.$index($enc("\n", "ASCII-8BIT").$freeze(), index)))) { + + index = $rb_plus(index, 1); + begins['$<<'](index); + }; return nil; })(); + begins['$<<']($rb_plus(self.source.$size(), 1)); + return begins;})()))) + }, 0); + + $def(self, '$line_index_for_position', function $$line_index_for_position(position) { + var self = this, $ret_or_1 = nil, index = nil, $writer = nil; + + if ($truthy(($ret_or_1 = self.line_index_for_position['$[]'](position)))) { + return $ret_or_1 + } else { + + index = $rb_minus(self.$bsearch(self.$line_begins(), position), 1); + if (!$truthy(self.line_index_for_position['$frozen?']())) { + + $writer = [position, index]; + $send(self.line_index_for_position, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return index; + } + }, 1); + if ($truthy($$('Array')['$method_defined?']("bsearch_index"))) { + return $def(self, '$bsearch', function $$bsearch(line_begins, position) { + var $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = $send(line_begins, 'bsearch_index', [], function $$5(line_begin){ + + + if (line_begin == null) line_begin = nil;; + return $rb_lt(position, line_begin);}, 1)))) { + return $ret_or_1 + } else { + return $rb_minus(line_begins.$size(), 1) + } + }, 2) + } else { + return $def(self, '$bsearch', function $$bsearch(line_begins, position) { + var self = this, $ret_or_1 = nil; + + + self.line_range = ($truthy(($ret_or_1 = self.line_range)) ? ($ret_or_1) : (Opal.Range.$new(0,line_begins.$size(), true))); + if ($truthy(($ret_or_1 = $send(self.line_range, 'bsearch', [], function $$6(i){ + + + if (i == null) i = nil;; + return $rb_lt(position, line_begins['$[]'](i));}, 1)))) { + return $ret_or_1 + } else { + return $rb_minus(line_begins.$size(), 1) + }; + }, 2) + }; + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/range"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $rb_lt = Opal.rb_lt, $def = Opal.def, $hash2 = Opal.hash2, $rb_minus = Opal.rb_minus, $alias = Opal.alias, $neqeq = Opal.neqeq, $to_ary = Opal.to_ary, $rb_plus = Opal.rb_plus, $rb_ge = Opal.rb_ge, $rb_times = Opal.rb_times, $eqeq = Opal.eqeq; + + Opal.add_stubs('include,attr_reader,<,raise,nil?,freeze,with,-,line_for_position,alias_method,column_for_position,!=,line,last_line,inspect,column,last_column,source_line,slice,begin_pos,end_pos,include?,source,to_a,decompose_position,join,name,+,new,min,max,disjoint?,empty?,>=,!,<=>,contains?,overlaps?,==,*,source_buffer,is_a?,nonzero?,hash'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Range'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.begin_pos = $proto.end_pos = $proto.source_buffer = nil; + + self.$include($$('Comparable')); + self.$attr_reader("source_buffer"); + self.$attr_reader("begin_pos", "end_pos"); + + $def(self, '$initialize', function $$initialize(source_buffer, begin_pos, end_pos) { + var $a, self = this; + + + if ($truthy($rb_lt(end_pos, begin_pos))) { + self.$raise($$('ArgumentError'), "Parser::Source::Range: end_pos must not be less than begin_pos") + }; + if ($truthy(source_buffer['$nil?']())) { + self.$raise($$('ArgumentError'), "Parser::Source::Range: source_buffer must not be nil") + }; + self.source_buffer = source_buffer; + $a = [begin_pos, end_pos], (self.begin_pos = $a[0]), (self.end_pos = $a[1]), $a; + return self.$freeze(); + }, 3); + + $def(self, '$begin', function $$begin() { + var self = this; + + return self.$with($hash2(["end_pos"], {"end_pos": self.begin_pos})) + }, 0); + + $def(self, '$end', function $$end() { + var self = this; + + return self.$with($hash2(["begin_pos"], {"begin_pos": self.end_pos})) + }, 0); + + $def(self, '$size', function $$size() { + var self = this; + + return $rb_minus(self.end_pos, self.begin_pos) + }, 0); + $alias(self, "length", "size"); + + $def(self, '$line', function $$line() { + var self = this; + + return self.source_buffer.$line_for_position(self.begin_pos) + }, 0); + self.$alias_method("first_line", "line"); + + $def(self, '$column', function $$column() { + var self = this; + + return self.source_buffer.$column_for_position(self.begin_pos) + }, 0); + + $def(self, '$last_line', function $$last_line() { + var self = this; + + return self.source_buffer.$line_for_position(self.end_pos) + }, 0); + + $def(self, '$last_column', function $$last_column() { + var self = this; + + return self.source_buffer.$column_for_position(self.end_pos) + }, 0); + + $def(self, '$column_range', function $$column_range() { + var self = this; + + + if ($neqeq(self.$line(), self.$last_line())) { + self.$raise($$('RangeError'), "" + (self.$inspect()) + " spans more than one line") + }; + return Opal.Range.$new(self.$column(),self.$last_column(), true); + }, 0); + + $def(self, '$source_line', function $$source_line() { + var self = this; + + return self.source_buffer.$source_line(self.$line()) + }, 0); + + $def(self, '$source', function $$source() { + var self = this; + + return self.source_buffer.$slice(Opal.Range.$new(self.$begin_pos(),self.$end_pos(), true)) + }, 0); + + $def(self, '$is?', function $Range_is$ques$1($a) { + var $post_args, what, self = this; + + + + $post_args = Opal.slice.call(arguments); + + what = $post_args;; + return what['$include?'](self.$source()); + }, -1); + + $def(self, '$to_a', function $$to_a() { + var self = this; + + return Opal.Range.$new(self.begin_pos,self.end_pos, true).$to_a() + }, 0); + + $def(self, '$to_range', function $$to_range() { + var self = this; + + return Opal.Range.$new(self.$begin_pos(),self.$end_pos(), true) + }, 0); + + $def(self, '$to_s', function $$to_s() { + var $a, $b, self = this, line = nil, column = nil; + + + $b = self.source_buffer.$decompose_position(self.begin_pos), $a = $to_ary($b), (line = ($a[0] == null ? nil : $a[0])), (column = ($a[1] == null ? nil : $a[1])), $b; + return [self.source_buffer.$name(), line, $rb_plus(column, 1)].$join(":"); + }, 0); + + $def(self, '$with', function $Range_with$2($kwargs) { + var begin_pos, end_pos, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + begin_pos = $kwargs.$$smap["begin_pos"]; + if (begin_pos == null) begin_pos = self.begin_pos; + + end_pos = $kwargs.$$smap["end_pos"]; + if (end_pos == null) end_pos = self.end_pos; + return $$('Range').$new(self.source_buffer, begin_pos, end_pos); + }, -1); + + $def(self, '$adjust', function $$adjust($kwargs) { + var begin_pos, end_pos, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + begin_pos = $kwargs.$$smap["begin_pos"]; + if (begin_pos == null) begin_pos = 0; + + end_pos = $kwargs.$$smap["end_pos"]; + if (end_pos == null) end_pos = 0; + return $$('Range').$new(self.source_buffer, $rb_plus(self.begin_pos, begin_pos), $rb_plus(self.end_pos, end_pos)); + }, -1); + + $def(self, '$resize', function $$resize(new_size) { + var self = this; + + return self.$with($hash2(["end_pos"], {"end_pos": $rb_plus(self.begin_pos, new_size)})) + }, 1); + + $def(self, '$join', function $$join(other) { + var self = this; + + return $$('Range').$new(self.source_buffer, [self.begin_pos, other.$begin_pos()].$min(), [self.end_pos, other.$end_pos()].$max()) + }, 1); + + $def(self, '$intersect', function $$intersect(other) { + var self = this; + + if ($truthy(self['$disjoint?'](other))) { + return nil + } else { + return $$('Range').$new(self.source_buffer, [self.begin_pos, other.$begin_pos()].$max(), [self.end_pos, other.$end_pos()].$min()) + } + }, 1); + + $def(self, '$disjoint?', function $Range_disjoint$ques$3(other) { + var self = this, $ret_or_1 = nil; + + if (($truthy(self['$empty?']()) && ($truthy(other['$empty?']())))) { + return self.begin_pos['$!='](other.$begin_pos()) + } else if ($truthy(($ret_or_1 = $rb_ge(self.begin_pos, other.$end_pos())))) { + return $ret_or_1 + } else { + return $rb_ge(other.$begin_pos(), self.end_pos) + } + }, 1); + + $def(self, '$overlaps?', function $Range_overlaps$ques$4(other) { + var self = this; + + return self['$disjoint?'](other)['$!']() + }, 1); + + $def(self, '$contains?', function $Range_contains$ques$5(other) { + var self = this; + + return $rb_ge($rb_plus(other.$begin_pos()['$<=>'](self.begin_pos), self.end_pos['$<=>'](other.$end_pos())), ($truthy(other['$empty?']()) ? (2) : (1))) + }, 1); + + $def(self, '$contained?', function $Range_contained$ques$6(other) { + var self = this; + + return other['$contains?'](self) + }, 1); + + $def(self, '$crossing?', function $Range_crossing$ques$7(other) { + var self = this; + + + if (!$truthy(self['$overlaps?'](other))) { + return false + }; + return $rb_times(self.begin_pos['$<=>'](other.$begin_pos()), self.end_pos['$<=>'](other.$end_pos()))['$=='](1); + }, 1); + + $def(self, '$empty?', function $Range_empty$ques$8() { + var self = this; + + return self.begin_pos['$=='](self.end_pos) + }, 0); + + $def(self, '$<=>', function $Range_$lt_eq_gt$9(other) { + var self = this, $ret_or_1 = nil; + + + if (!($truthy(other['$is_a?']($$$($$$($$$('Parser'), 'Source'), 'Range'))) && ($eqeq(self.source_buffer, other.$source_buffer())))) { + return nil + }; + if ($truthy(($ret_or_1 = self.begin_pos['$<=>'](other.$begin_pos())['$nonzero?']()))) { + return $ret_or_1 + } else { + + return self.end_pos['$<=>'](other.$end_pos()); + }; + }, 1); + self.$alias_method("eql?", "=="); + + $def(self, '$hash', function $$hash() { + var self = this; + + return [self.source_buffer, self.begin_pos, self.end_pos].$hash() + }, 0); + return $def(self, '$inspect', function $$inspect() { + var self = this; + + return "#" + }, 0); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/comment"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $defs = Opal.defs, $def = Opal.def, $truthy = Opal.truthy; + + Opal.add_stubs('attr_reader,alias_method,new,associate,associate_locations,associate_by_identity,freeze,source,start_with?,text,==,type,is_a?,location,to_s,expression,inspect'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Comment'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.location = nil; + + self.$attr_reader("text"); + self.$attr_reader("location"); + self.$alias_method("loc", "location"); + $defs(self, '$associate', function $$associate(ast, comments) { + var associator = nil; + + + associator = $$('Associator').$new(ast, comments); + return associator.$associate(); + }, 2); + $defs(self, '$associate_locations', function $$associate_locations(ast, comments) { + var associator = nil; + + + associator = $$('Associator').$new(ast, comments); + return associator.$associate_locations(); + }, 2); + $defs(self, '$associate_by_identity', function $$associate_by_identity(ast, comments) { + var associator = nil; + + + associator = $$('Associator').$new(ast, comments); + return associator.$associate_by_identity(); + }, 2); + + $def(self, '$initialize', function $$initialize(range) { + var self = this; + + + self.location = $$$($$$($$('Parser'), 'Source'), 'Map').$new(range); + self.text = range.$source().$freeze(); + return self.$freeze(); + }, 1); + + $def(self, '$type', function $$type() { + var self = this; + + if ($truthy(self.$text()['$start_with?']("#".$freeze()))) { + return "inline" + } else if ($truthy(self.$text()['$start_with?']("=begin".$freeze()))) { + return "document" + } else { + return nil + } + }, 0); + + $def(self, '$inline?', function $Comment_inline$ques$1() { + var self = this; + + return self.$type()['$==']("inline") + }, 0); + + $def(self, '$document?', function $Comment_document$ques$2() { + var self = this; + + return self.$type()['$==']("document") + }, 0); + + $def(self, '$==', function $Comment_$eq_eq$3(other) { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = other['$is_a?']($$$($$('Source'), 'Comment'))))) { + return self.location['$=='](other.$location()) + } else { + return $ret_or_1 + } + }, 1); + return $def(self, '$inspect', function $$inspect() { + var self = this; + + return "#" + }, 0); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/comment/associator"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $const_set = Opal.const_set, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq, $rb_le = Opal.rb_le, $rb_plus = Opal.rb_plus, $not = Opal.not; + + Opal.add_stubs('attr_accessor,do_associate,private,freeze,[],include?,type,sort_by,compact,children,begin_pos,expression,loc,select,is_a?,new,[]=,-,==,compare_by_identity,advance_comment,advance_through_directives,visit,process_leading_comments,location,<=,line,last_line,each,children_in_source_order,process_trailing_comments,current_comment_before?,associate_and_advance_comment,current_comment_before_end?,current_comment_decorates?,+,!,end_pos,<<,start_with?,text,=~'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Associator'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.map_using = $proto.mapping = $proto.skip_directives = $proto.ast = $proto.current_comment = $proto.comment_num = $proto.comments = nil; + + self.$attr_accessor("skip_directives"); + + $def(self, '$initialize', function $$initialize(ast, comments) { + var self = this; + + + self.ast = ast; + self.comments = comments; + return (self.skip_directives = true); + }, 2); + + $def(self, '$associate', function $$associate() { + var self = this; + + + self.map_using = "eql"; + return self.$do_associate(); + }, 0); + + $def(self, '$associate_locations', function $$associate_locations() { + var self = this; + + + self.map_using = "location"; + return self.$do_associate(); + }, 0); + + $def(self, '$associate_by_identity', function $$associate_by_identity() { + var self = this; + + + self.map_using = "identity"; + return self.$do_associate(); + }, 0); + self.$private(); + $const_set($nesting[0], 'POSTFIX_TYPES', $$('Set')['$[]']("if", "while", "while_post", "until", "until_post", "masgn").$freeze()); + + $def(self, '$children_in_source_order', function $$children_in_source_order(node) { + + if ($truthy($$('POSTFIX_TYPES')['$include?'](node.$type()))) { + return $send(node.$children().$compact(), 'sort_by', [], function $$1(child){ + + + if (child == null) child = nil;; + return child.$loc().$expression().$begin_pos();}, 1) + } else { + return $send(node.$children(), 'select', [], function $$2(child){var $ret_or_1 = nil, $ret_or_2 = nil; + + + + if (child == null) child = nil;; + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = child['$is_a?']($$$($$('AST'), 'Node')))) ? (child.$loc()) : ($ret_or_2))))) { + return child.$loc().$expression() + } else { + return $ret_or_1 + };}, 1) + } + }, 1); + + $def(self, '$do_associate', function $$do_associate() { + var self = this; + + + self.mapping = $send($$('Hash'), 'new', [], function $$3(h, k){var $writer = nil; + + + + if (h == null) h = nil;; + + if (k == null) k = nil;; + $writer = [k, []]; + $send(h, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 2); + if ($eqeq(self.map_using, "identity")) { + self.mapping.$compare_by_identity() + }; + self.comment_num = -1; + self.$advance_comment(); + if ($truthy(self.skip_directives)) { + self.$advance_through_directives() + }; + if ($truthy(self.ast)) { + self.$visit(self.ast) + }; + return self.mapping; + }, 0); + + $def(self, '$visit', function $$visit(node) { + var self = this, node_loc = nil; + + + self.$process_leading_comments(node); + if (!$truthy(self.current_comment)) { + return nil + }; + node_loc = node.$location(); + if (($truthy($rb_le(self.current_comment.$location().$line(), node_loc.$last_line())) || ($truthy(node_loc['$is_a?']($$$($$('Map'), 'Heredoc')))))) { + + $send(self.$children_in_source_order(node), 'each', [], function $$4(child){var self = $$4.$$s == null ? this : $$4.$$s; + + + + if (child == null) child = nil;; + return self.$visit(child);}, {$$arity: 1, $$s: self}); + return self.$process_trailing_comments(node); + } else { + return nil + }; + }, 1); + + $def(self, '$process_leading_comments', function $$process_leading_comments(node) { + var $a, self = this; + + + if ($eqeq(node.$type(), "begin")) { + return nil + }; + while ($truthy(self['$current_comment_before?'](node))) { + self.$associate_and_advance_comment(node) + }; + }, 1); + + $def(self, '$process_trailing_comments', function $$process_trailing_comments(node) { + var $a, self = this; + + + while ($truthy(self['$current_comment_before_end?'](node))) { + self.$associate_and_advance_comment(node) + }; + while ($truthy(self['$current_comment_decorates?'](node))) { + self.$associate_and_advance_comment(node) + }; + }, 1); + + $def(self, '$advance_comment', function $$advance_comment() { + var self = this; + + + self.comment_num = $rb_plus(self.comment_num, 1); + return (self.current_comment = self.comments['$[]'](self.comment_num)); + }, 0); + + $def(self, '$current_comment_before?', function $Associator_current_comment_before$ques$5(node) { + var self = this, comment_loc = nil, node_loc = nil; + + + if ($not(self.current_comment)) { + return false + }; + comment_loc = self.current_comment.$location().$expression(); + node_loc = node.$location().$expression(); + return $rb_le(comment_loc.$end_pos(), node_loc.$begin_pos()); + }, 1); + + $def(self, '$current_comment_before_end?', function $Associator_current_comment_before_end$ques$6(node) { + var self = this, comment_loc = nil, node_loc = nil; + + + if ($not(self.current_comment)) { + return false + }; + comment_loc = self.current_comment.$location().$expression(); + node_loc = node.$location().$expression(); + return $rb_le(comment_loc.$end_pos(), node_loc.$end_pos()); + }, 1); + + $def(self, '$current_comment_decorates?', function $Associator_current_comment_decorates$ques$7(node) { + var self = this; + + + if ($not(self.current_comment)) { + return false + }; + return self.current_comment.$location().$line()['$=='](node.$location().$last_line()); + }, 1); + + $def(self, '$associate_and_advance_comment', function $$associate_and_advance_comment(node) { + var self = this, key = nil; + + + key = ($eqeq(self.map_using, "location") ? (node.$location()) : (node)); + self.mapping['$[]'](key)['$<<'](self.current_comment); + return self.$advance_comment(); + }, 1); + $const_set($nesting[0], 'MAGIC_COMMENT_RE', /^#\s*(-\*-|)\s*(frozen_string_literal|warn_indent|warn_past_scope):.*\1$/); + return $def(self, '$advance_through_directives', function $$advance_through_directives() { + var self = this; + + + if (($truthy(self.current_comment) && ($truthy(self.current_comment.$text()['$start_with?']("#!".$freeze()))))) { + self.$advance_comment() + }; + if (($truthy(self.current_comment) && ($truthy(self.current_comment.$text()['$=~']($$('MAGIC_COMMENT_RE')))))) { + self.$advance_comment() + }; + if (($truthy(self.current_comment) && ($truthy(self.current_comment.$text()['$=~']($$$($$('Buffer'), 'ENCODING_RE')))))) { + return self.$advance_comment() + } else { + return nil + }; + }, 0); + })($$('Comment'), null, $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $gvars = Opal.gvars, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $rb_plus = Opal.rb_plus, $truthy = Opal.truthy, $not = Opal.not, $neqeq = Opal.neqeq, $rb_le = Opal.rb_le, $rb_ge = Opal.rb_ge, $rb_lt = Opal.rb_lt, $hash2 = Opal.hash2, $const_set = Opal.const_set; + + Opal.add_stubs('attr_reader,warn_of_deprecation,class,new,lambda,puts,render,consumer=,-,append,freeze,begin,end,+,in_transaction?,raise,dup,source,each,sort,begin_pos,range,length,replacement,[]=,private,empty?,clobbered_insertion?,!,allow_multiple_insertions?,raise_clobber_error,record_insertion,adjacent_updates?,find,overlaps?,replace_compatible_with_insertion?,merge_actions!,<<,active_queue,adjacent_insertions?,merge_actions,delete,can_merge?,record_replace,|,active_insertions,active_insertions=,active_clobber,clobbered_position_mask,active_clobber=,size,!=,&,<=,end_pos,adjacent_insertion_mask,select,adjacent?,adjacent_position_mask,>=,==,[],all?,intersect,nil?,max,sort_by,push,join,first,max_by,merge_replacements,replace_actions,disjoint?,<,process,extend'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Rewriter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.diagnostics = $proto.insert_before_multi_order = $proto.insert_after_multi_order = $proto.source_buffer = $proto.queue = $proto.clobber = $proto.insertions = $proto.pending_queue = $proto.pending_clobber = $proto.pending_insertions = nil; + + self.$attr_reader("source_buffer"); + self.$attr_reader("diagnostics"); + + $def(self, '$initialize', function $$initialize(source_buffer) { + var self = this, $writer = nil; + + + self.$class().$warn_of_deprecation(); + self.diagnostics = $$$($$('Diagnostic'), 'Engine').$new(); + + $writer = [$send(self, 'lambda', [], function $$1(diag){ if ($gvars.stderr == null) $gvars.stderr = nil; + + + + if (diag == null) diag = nil;; + return $gvars.stderr.$puts(diag.$render());}, 1)]; + $send(self.diagnostics, 'consumer=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.source_buffer = source_buffer; + self.queue = []; + self.clobber = 0; + self.insertions = 0; + self.insert_before_multi_order = 0; + self.insert_after_multi_order = 0; + self.pending_queue = nil; + self.pending_clobber = nil; + return (self.pending_insertions = nil); + }, 1); + + $def(self, '$remove', function $$remove(range) { + var self = this; + + return self.$append($$$($$('Rewriter'), 'Action').$new(range, "".$freeze())) + }, 1); + + $def(self, '$insert_before', function $$insert_before(range, content) { + var self = this; + + return self.$append($$$($$('Rewriter'), 'Action').$new(range.$begin(), content)) + }, 2); + + $def(self, '$wrap', function $$wrap(range, before, after) { + var self = this; + + + self.$append($$$($$('Rewriter'), 'Action').$new(range.$begin(), before)); + return self.$append($$$($$('Rewriter'), 'Action').$new(range.$end(), after)); + }, 3); + + $def(self, '$insert_before_multi', function $$insert_before_multi(range, content) { + var self = this; + + + self.insert_before_multi_order = $rb_minus(self.insert_before_multi_order, 1); + return self.$append($$$($$('Rewriter'), 'Action').$new(range.$begin(), content, true, self.insert_before_multi_order)); + }, 2); + + $def(self, '$insert_after', function $$insert_after(range, content) { + var self = this; + + return self.$append($$$($$('Rewriter'), 'Action').$new(range.$end(), content)) + }, 2); + + $def(self, '$insert_after_multi', function $$insert_after_multi(range, content) { + var self = this; + + + self.insert_after_multi_order = $rb_plus(self.insert_after_multi_order, 1); + return self.$append($$$($$('Rewriter'), 'Action').$new(range.$end(), content, true, self.insert_after_multi_order)); + }, 2); + + $def(self, '$replace', function $$replace(range, content) { + var self = this; + + return self.$append($$$($$('Rewriter'), 'Action').$new(range, content)) + }, 2); + + $def(self, '$process', function $$process() { + var self = this, adjustment = nil, source = nil; + + + if ($truthy(self['$in_transaction?']())) { + self.$raise("Do not call " + (self.$class()) + "#" + ("process") + " inside a transaction") + }; + adjustment = 0; + source = self.source_buffer.$source().$dup(); + $send(self.queue.$sort(), 'each', [], function $$2(action){var begin_pos = nil, end_pos = nil, $writer = nil; + + + + if (action == null) action = nil;; + begin_pos = $rb_plus(action.$range().$begin_pos(), adjustment); + end_pos = $rb_plus(begin_pos, action.$range().$length()); + + $writer = [Opal.Range.$new(begin_pos,end_pos, true), action.$replacement()]; + $send(source, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return (adjustment = $rb_plus(adjustment, $rb_minus(action.$replacement().$length(), action.$range().$length())));}, 1); + return source; + }, 0); + + $def(self, '$transaction', function $$transaction() { + var $yield = $$transaction.$$p || nil, self = this; + + delete $$transaction.$$p; + return (function() { try { + + if (!($yield !== nil)) { + self.$raise("" + (self.$class()) + "#" + ("transaction") + " requires block") + }; + if ($truthy(self['$in_transaction?']())) { + self.$raise("Nested transaction is not supported") + }; + self.pending_queue = self.queue.$dup(); + self.pending_clobber = self.clobber; + self.pending_insertions = self.insertions; + Opal.yieldX($yield, []); + self.queue = self.pending_queue; + self.clobber = self.pending_clobber; + self.insertions = self.pending_insertions; + return self; + } finally { + ((self.pending_queue = nil), (self.pending_clobber = nil), (self.pending_insertions = nil)) + }; })() + }, 0); + self.$private(); + + $def(self, '$append', function $$append(action) { + var self = this, range = nil, conflicting = nil, adjacent = nil, insertions = nil; + + + range = action.$range(); + if ($truthy(range['$empty?']())) { + + if ($truthy(action.$replacement()['$empty?']())) { + return self + }; + if (($not(action['$allow_multiple_insertions?']()) && ($truthy((conflicting = self['$clobbered_insertion?'](range)))))) { + self.$raise_clobber_error(action, [conflicting]) + }; + self.$record_insertion(range); + if ($truthy((adjacent = self['$adjacent_updates?'](range)))) { + + conflicting = $send(adjacent, 'find', [], function $$3(a){var self = $$3.$$s == null ? this : $$3.$$s, $ret_or_1 = nil; + + + + if (a == null) a = nil;; + if ($truthy(($ret_or_1 = a.$range()['$overlaps?'](range)))) { + return self['$replace_compatible_with_insertion?'](a, action)['$!']() + } else { + return $ret_or_1 + };}, {$$arity: 1, $$s: self}); + if ($truthy(conflicting)) { + self.$raise_clobber_error(action, [conflicting]) + }; + self['$merge_actions!'](action, adjacent); + } else { + self.$active_queue()['$<<'](action) + }; + } else { + + if ($truthy((insertions = self['$adjacent_insertions?'](range)))) { + $send(insertions, 'each', [], function $$4(insertion){var self = $$4.$$s == null ? this : $$4.$$s; + + + + if (insertion == null) insertion = nil;; + if (($truthy(range['$overlaps?'](insertion.$range())) && ($not(self['$replace_compatible_with_insertion?'](action, insertion))))) { + return self.$raise_clobber_error(action, [insertion]) + } else { + + action = self.$merge_actions(action, [insertion]); + return self.$active_queue().$delete(insertion); + };}, {$$arity: 1, $$s: self}) + }; + if ($truthy((adjacent = self['$adjacent_updates?'](range)))) { + if ($truthy(self['$can_merge?'](action, adjacent))) { + + self.$record_replace(range); + self['$merge_actions!'](action, adjacent); + } else { + self.$raise_clobber_error(action, adjacent) + } + } else { + + self.$record_replace(range); + self.$active_queue()['$<<'](action); + }; + }; + return self; + }, 1); + + $def(self, '$record_insertion', function $$record_insertion(range) { + var self = this, $writer = nil; + + + $writer = [self.$active_insertions()['$|']((1)['$<<'](range.$begin_pos()))]; + $send(self, 'active_insertions=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }, 1); + + $def(self, '$record_replace', function $$record_replace(range) { + var self = this, $writer = nil; + + + $writer = [self.$active_clobber()['$|'](self.$clobbered_position_mask(range))]; + $send(self, 'active_clobber=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }, 1); + + $def(self, '$clobbered_position_mask', function $$clobbered_position_mask(range) { + + return $rb_minus((1)['$<<'](range.$size()), 1)['$<<'](range.$begin_pos()) + }, 1); + + $def(self, '$adjacent_position_mask', function $$adjacent_position_mask(range) { + + return $rb_minus((1)['$<<']($rb_plus(range.$size(), 2)), 1)['$<<']($rb_minus(range.$begin_pos(), 1)) + }, 1); + + $def(self, '$adjacent_insertion_mask', function $$adjacent_insertion_mask(range) { + + return $rb_minus((1)['$<<']($rb_plus(range.$size(), 1)), 1)['$<<'](range.$begin_pos()) + }, 1); + + $def(self, '$clobbered_insertion?', function $Rewriter_clobbered_insertion$ques$5(insertion) { + var self = this, insertion_pos = nil; + + + insertion_pos = insertion.$begin_pos(); + if ($neqeq(self.$active_insertions()['$&']((1)['$<<'](insertion_pos)), 0)) { + return $send(self.$active_queue(), 'find', [], function $$6(a){var $ret_or_1 = nil; + + + + if (a == null) a = nil;; + if ($truthy(($ret_or_1 = $rb_le(a.$range().$begin_pos(), insertion_pos)))) { + return $rb_le(insertion_pos, a.$range().$end_pos()) + } else { + return $ret_or_1 + };}, 1) + } else { + return nil + }; + }, 1); + + $def(self, '$adjacent_insertions?', function $Rewriter_adjacent_insertions$ques$7(range) { + var self = this, result = nil; + + if ($neqeq(self.$active_insertions()['$&'](self.$adjacent_insertion_mask(range)), 0)) { + + result = $send(self.$active_queue(), 'select', [], function $$8(a){var self = $$8.$$s == null ? this : $$8.$$s, $ret_or_1 = nil; + + + + if (a == null) a = nil;; + if ($truthy(($ret_or_1 = a.$range()['$empty?']()))) { + return self['$adjacent?'](range, a.$range()) + } else { + return $ret_or_1 + };}, {$$arity: 1, $$s: self}); + if ($truthy(result['$empty?']())) { + return nil + } else { + return result + }; + } else { + return nil + } + }, 1); + + $def(self, '$adjacent_updates?', function $Rewriter_adjacent_updates$ques$9(range) { + var self = this; + + if ($neqeq(self.$active_clobber()['$&'](self.$adjacent_position_mask(range)), 0)) { + return $send(self.$active_queue(), 'select', [], function $$10(a){var self = $$10.$$s == null ? this : $$10.$$s; + + + + if (a == null) a = nil;; + return self['$adjacent?'](range, a.$range());}, {$$arity: 1, $$s: self}) + } else { + return nil + } + }, 1); + + $def(self, '$replace_compatible_with_insertion?', function $Rewriter_replace_compatible_with_insertion$ques$11(replace, insertion) { + var $ret_or_1 = nil, $ret_or_2 = nil, offset = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = $rb_ge($rb_minus(replace.$replacement().$length(), replace.$range().$size()), insertion.$range().$size()))) ? ((offset = $rb_minus(insertion.$range().$begin_pos(), replace.$range().$begin_pos()))) : ($ret_or_2))))) { + return replace.$replacement()['$[]'](offset, insertion.$replacement().$length())['$=='](insertion.$replacement()) + } else { + return $ret_or_1 + } + }, 2); + + $def(self, '$can_merge?', function $Rewriter_can_merge$ques$12(action, existing) { + var range = nil; + + + range = action.$range(); + return $send(existing, 'all?', [], function $$13(other){var overlap = nil, repl1_offset = nil, repl2_offset = nil, repl1_length = nil, repl2_length = nil, replacement1 = nil, $ret_or_1 = nil, replacement2 = nil; + + + + if (other == null) other = nil;; + overlap = range.$intersect(other.$range()); + if ($truthy(overlap['$nil?']())) { + return true; + }; + repl1_offset = $rb_minus(overlap.$begin_pos(), range.$begin_pos()); + repl2_offset = $rb_minus(overlap.$begin_pos(), other.$range().$begin_pos()); + repl1_length = [$rb_minus(other.$range().$length(), repl2_offset), $rb_minus(other.$replacement().$length(), repl2_offset)].$max(); + repl2_length = [$rb_minus(range.$length(), repl1_offset), $rb_minus(action.$replacement().$length(), repl1_offset)].$max(); + replacement1 = ($truthy(($ret_or_1 = action.$replacement()['$[]'](repl1_offset, repl1_length))) ? ($ret_or_1) : ("".$freeze())); + replacement2 = ($truthy(($ret_or_1 = other.$replacement()['$[]'](repl2_offset, repl2_length))) ? ($ret_or_1) : ("".$freeze())); + return replacement1['$=='](replacement2);}, 1); + }, 2); + + $def(self, '$merge_actions', function $$merge_actions(action, existing) { + var self = this, actions = nil, range = nil; + + + actions = $send(existing.$push(action), 'sort_by', [], function $$14(a){ + + + if (a == null) a = nil;; + return [a.$range().$begin_pos(), a.$range().$end_pos()];}, 1); + range = actions.$first().$range().$join($send(actions, 'max_by', [], function $$15(a){ + + + if (a == null) a = nil;; + return a.$range().$end_pos();}, 1).$range()); + return $$$($$('Rewriter'), 'Action').$new(range, self.$merge_replacements(actions)); + }, 2); + + $def(self, '$merge_actions!', function $Rewriter_merge_actions$excl$16(action, existing) { + var self = this, new_action = nil; + + + new_action = self.$merge_actions(action, existing); + self.$active_queue().$delete(action); + return self.$replace_actions(existing, new_action); + }, 2); + + $def(self, '$merge_replacements', function $$merge_replacements(actions) { + var result = nil, prev_act = nil; + + + result = "".$dup(); + prev_act = nil; + $send(actions, 'each', [], function $$17(act){var prev_end = nil, offset = nil; + + + + if (act == null) act = nil;; + if (($not(prev_act) || ($truthy(act.$range()['$disjoint?'](prev_act.$range()))))) { + result['$<<'](act.$replacement()) + } else { + + prev_end = [$rb_plus(prev_act.$range().$begin_pos(), prev_act.$replacement().$length()), prev_act.$range().$end_pos()].$max(); + offset = $rb_minus(prev_end, act.$range().$begin_pos()); + if ($truthy($rb_lt(offset, act.$replacement().$size()))) { + result['$<<'](act.$replacement()['$[]'](Opal.Range.$new(offset, -1, false))) + }; + }; + return (prev_act = act);}, 1); + return result; + }, 1); + + $def(self, '$replace_actions', function $$replace_actions(old, updated) { + var self = this; + + + $send(old, 'each', [], function $$18(act){var self = $$18.$$s == null ? this : $$18.$$s; + + + + if (act == null) act = nil;; + return self.$active_queue().$delete(act);}, {$$arity: 1, $$s: self}); + return self.$active_queue()['$<<'](updated); + }, 2); + + $def(self, '$raise_clobber_error', function $$raise_clobber_error(action, existing) { + var self = this, diagnostic = nil; + + + diagnostic = $$('Diagnostic').$new("error", "invalid_action", $hash2(["action"], {"action": action}), action.$range()); + self.diagnostics.$process(diagnostic); + diagnostic = $$('Diagnostic').$new("note", "clobbered", $hash2(["action"], {"action": existing['$[]'](0)}), existing['$[]'](0).$range()); + self.diagnostics.$process(diagnostic); + return self.$raise($$('ClobberingError'), "Parser::Source::Rewriter detected clobbering"); + }, 2); + + $def(self, '$in_transaction?', function $Rewriter_in_transaction$ques$19() { + var self = this; + + return self.pending_queue['$nil?']()['$!']() + }, 0); + + $def(self, '$active_queue', function $$active_queue() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.pending_queue))) { + return $ret_or_1 + } else { + return self.queue + } + }, 0); + + $def(self, '$active_clobber', function $$active_clobber() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.pending_clobber))) { + return $ret_or_1 + } else { + return self.clobber + } + }, 0); + + $def(self, '$active_insertions', function $$active_insertions() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.pending_insertions))) { + return $ret_or_1 + } else { + return self.insertions + } + }, 0); + + $def(self, '$active_clobber=', function $Rewriter_active_clobber$eq$20(value) { + var self = this; + + if ($truthy(self.pending_clobber)) { + return (self.pending_clobber = value) + } else { + return (self.clobber = value) + } + }, 1); + + $def(self, '$active_insertions=', function $Rewriter_active_insertions$eq$21(value) { + var self = this; + + if ($truthy(self.pending_insertions)) { + return (self.pending_insertions = value) + } else { + return (self.insertions = value) + } + }, 1); + + $def(self, '$adjacent?', function $Rewriter_adjacent$ques$22(range1, range2) { + var $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = $rb_le(range1.$begin_pos(), range2.$end_pos())))) { + return $rb_le(range2.$begin_pos(), range1.$end_pos()) + } else { + return $ret_or_1 + } + }, 2); + $const_set($nesting[0], 'DEPRECATION_WARNING', ["Parser::Source::Rewriter is deprecated.", "Please update your code to use Parser::Source::TreeRewriter instead"].$join("\n").$freeze()); + return self.$extend($$('Deprecation')); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/rewriter/action"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $eqeq = Opal.eqeq; + + Opal.add_stubs('include,attr_reader,alias_method,freeze,<=>,begin_pos,range,zero?,order,empty?,==,length,inspect'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Action'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.replacement = $proto.range = nil; + + self.$include($$('Comparable')); + self.$attr_reader("range", "replacement", "allow_multiple_insertions", "order"); + self.$alias_method("allow_multiple_insertions?", "allow_multiple_insertions"); + + $def(self, '$initialize', function $$initialize(range, replacement, allow_multiple_insertions, order) { + var self = this; + + + + if (replacement == null) replacement = "";; + + if (allow_multiple_insertions == null) allow_multiple_insertions = false;; + + if (order == null) order = 0;; + self.range = range; + self.replacement = replacement; + self.allow_multiple_insertions = allow_multiple_insertions; + self.order = order; + return self.$freeze(); + }, -2); + + $def(self, '$<=>', function $Action_$lt_eq_gt$1(other) { + var self = this, result = nil; + + + result = self.$range().$begin_pos()['$<=>'](other.$range().$begin_pos()); + if (!$truthy(result['$zero?']())) { + return result + }; + return self.$order()['$<=>'](other.$order()); + }, 1); + return $def(self, '$to_s', function $$to_s() { + var self = this; + + if (($eqeq(self.range.$length(), 0) && ($truthy(self.replacement['$empty?']())))) { + return "do nothing" + } else if ($eqeq(self.range.$length(), 0)) { + return "insert " + (self.replacement.$inspect()) + } else if ($truthy(self.replacement['$empty?']())) { + return "remove " + (self.range.$length()) + " character(s)" + } else { + return "replace " + (self.range.$length()) + " character(s) with " + (self.replacement.$inspect()) + } + }, 0); + })($$('Rewriter'), null, $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/tree_rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $lambda = Opal.lambda, $gvars = Opal.gvars, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $const_set = Opal.const_set, $eqeqeq = Opal.eqeqeq, $range = Opal.range, $to_ary = Opal.to_ary, $hash = Opal.hash, $rb_gt = Opal.rb_gt, $rb_lt = Opal.rb_lt, $slice = Opal.slice; + + Opal.add_stubs('attr_reader,new,puts,render,consumer=,-,freeze,check_policy_validity,method,adjust,source_range,empty?,==,source_buffer,raise,combine,action_root,merge!,dup,contract,+,begin_pos,range,end_pos,check_range_validity,moved,to_s,replace,wrap,source,each,ordered_replacements,<<,[],length,join,nested_actions,class,name,action_summary,warn_of_deprecation,insert_before,insert_after,extend,protected,private,as_replacements,===,size,first,map,to_range,inspect,values,>,<,trigger_policy,process'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'TreeRewriter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.diagnostics = $proto.source_buffer = $proto.enforcer = $proto.action_root = $proto.in_transaction = $proto.policy = nil; + + self.$attr_reader("source_buffer"); + self.$attr_reader("diagnostics"); + + $def(self, '$initialize', function $$initialize(source_buffer, $kwargs) { + var crossing_deletions, different_replacements, swallowed_insertions, self = this, $writer = nil, all_encompassing_range = nil; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + crossing_deletions = $kwargs.$$smap["crossing_deletions"]; + if (crossing_deletions == null) crossing_deletions = "accept"; + + different_replacements = $kwargs.$$smap["different_replacements"]; + if (different_replacements == null) different_replacements = "accept"; + + swallowed_insertions = $kwargs.$$smap["swallowed_insertions"]; + if (swallowed_insertions == null) swallowed_insertions = "accept"; + self.diagnostics = $$$($$('Diagnostic'), 'Engine').$new(); + + $writer = [$lambda(function $$1(diag){ if ($gvars.stderr == null) $gvars.stderr = nil; + + + + if (diag == null) diag = nil;; + return $gvars.stderr.$puts(diag.$render());}, 1)]; + $send(self.diagnostics, 'consumer=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.source_buffer = source_buffer; + self.in_transaction = false; + self.policy = $hash2(["crossing_deletions", "different_replacements", "swallowed_insertions"], {"crossing_deletions": crossing_deletions, "different_replacements": different_replacements, "swallowed_insertions": swallowed_insertions}).$freeze(); + self.$check_policy_validity(); + self.enforcer = self.$method("enforce_policy"); + all_encompassing_range = self.source_buffer.$source_range().$adjust($hash2(["begin_pos", "end_pos"], {"begin_pos": -1, "end_pos": 1})); + return (self.action_root = $$$($$('TreeRewriter'), 'Action').$new(all_encompassing_range, self.enforcer)); + }, -2); + + $def(self, '$empty?', function $TreeRewriter_empty$ques$2() { + var self = this; + + return self.action_root['$empty?']() + }, 0); + + $def(self, '$merge!', function $TreeRewriter_merge$excl$3(with$) { + var self = this; + + + if (!$eqeq(self.$source_buffer(), with$.$source_buffer())) { + self.$raise("TreeRewriter are not for the same source_buffer") + }; + self.action_root = self.action_root.$combine(with$.$action_root()); + return self; + }, 1); + + $def(self, '$merge', function $$merge(with$) { + var self = this; + + return self.$dup()['$merge!'](with$) + }, 1); + + $def(self, '$import!', function $TreeRewriter_import$excl$4(foreign_rewriter, $kwargs) { + var offset, self = this, contracted = nil, merge_effective_range = nil, merge_with = nil; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + offset = $kwargs.$$smap["offset"]; + if (offset == null) offset = 0; + if ($truthy(foreign_rewriter['$empty?']())) { + return self + }; + contracted = foreign_rewriter.$action_root().$contract(); + merge_effective_range = $$$($$$($$$('Parser'), 'Source'), 'Range').$new(self.source_buffer, $rb_plus(contracted.$range().$begin_pos(), offset), $rb_plus(contracted.$range().$end_pos(), offset)); + self.$check_range_validity(merge_effective_range); + merge_with = contracted.$moved(self.source_buffer, offset); + self.action_root = self.action_root.$combine(merge_with); + return self; + }, -2); + + $def(self, '$replace', function $$replace(range, content) { + var self = this; + + return self.$combine(range, $hash2(["replacement"], {"replacement": content})) + }, 2); + + $def(self, '$wrap', function $$wrap(range, insert_before, insert_after) { + var self = this; + + return self.$combine(range, $hash2(["insert_before", "insert_after"], {"insert_before": insert_before.$to_s(), "insert_after": insert_after.$to_s()})) + }, 3); + + $def(self, '$remove', function $$remove(range) { + var self = this; + + return self.$replace(range, "".$freeze()) + }, 1); + + $def(self, '$insert_before', function $$insert_before(range, content) { + var self = this; + + return self.$wrap(range, content, nil) + }, 2); + + $def(self, '$insert_after', function $$insert_after(range, content) { + var self = this; + + return self.$wrap(range, nil, content) + }, 2); + + $def(self, '$process', function $$process() { + var self = this, source = nil, chunks = nil, last_end = nil; + + + source = self.source_buffer.$source(); + chunks = []; + last_end = 0; + $send(self.action_root.$ordered_replacements(), 'each', [], function $$5(range, replacement){ + + + if (range == null) range = nil;; + + if (replacement == null) replacement = nil;; + chunks['$<<'](source['$[]'](Opal.Range.$new(last_end,range.$begin_pos(), true)))['$<<'](replacement); + return (last_end = range.$end_pos());}, 2); + chunks['$<<'](source['$[]'](Opal.Range.$new(last_end,source.$length(), true))); + return chunks.$join(); + }, 0); + + $def(self, '$as_replacements', function $$as_replacements() { + var self = this; + + return self.action_root.$ordered_replacements() + }, 0); + + $def(self, '$as_nested_actions', function $$as_nested_actions() { + var self = this; + + return self.action_root.$nested_actions() + }, 0); + + $def(self, '$transaction', function $$transaction() { + var $yield = $$transaction.$$p || nil, self = this, previous = nil, restore_root = nil; + + delete $$transaction.$$p; + return (function() { try { + + if (!($yield !== nil)) { + self.$raise("" + (self.$class()) + "#" + ("transaction") + " requires block") + }; + previous = self.in_transaction; + self.in_transaction = true; + restore_root = self.action_root; + Opal.yieldX($yield, []); + restore_root = nil; + return self; + } finally { + (($truthy(restore_root) ? ((self.action_root = restore_root)) : nil), (self.in_transaction = previous)) + }; })() + }, 0); + + $def(self, '$in_transaction?', function $TreeRewriter_in_transaction$ques$6() { + var self = this; + + return self.in_transaction + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return "#<" + (self.$class()) + " " + (self.$source_buffer().$name()) + ": " + (self.$action_summary()) + ">" + }, 0); + + $def(self, '$insert_before_multi', function $$insert_before_multi(range, text) { + var self = this; + + + self.$class().$warn_of_deprecation(); + return self.$insert_before(range, text); + }, 2); + + $def(self, '$insert_after_multi', function $$insert_after_multi(range, text) { + var self = this; + + + self.$class().$warn_of_deprecation(); + return self.$insert_after(range, text); + }, 2); + $const_set($nesting[0], 'DEPRECATION_WARNING', ["TreeRewriter#insert_before_multi and insert_before_multi exist only for legacy compatibility.", "Please update your code to use `wrap`, `insert_before` or `insert_after` instead."].$join("\n").$freeze()); + self.$extend($$('Deprecation')); + self.$protected(); + self.$attr_reader("action_root"); + self.$private(); + + $def(self, '$action_summary', function $$action_summary() { + var self = this, replacements = nil, $ret_or_1 = nil, suffix = nil, parts = nil; + + + replacements = self.$as_replacements(); + if ($eqeqeq(0, ($ret_or_1 = replacements.$size()))) { + return "empty" + } else if (!$eqeqeq($range(1, 3, false), $ret_or_1)) { + + replacements = replacements.$first(3); + suffix = "…"; + }; + parts = $send(replacements, 'map', [], function $$7($mlhs_tmp1){var $a, $b, range = nil, str = nil; + + + + if ($mlhs_tmp1 == null) $mlhs_tmp1 = nil;; + $b = $mlhs_tmp1, $a = $to_ary($b), (range = ($a[0] == null ? nil : $a[0])), (str = ($a[1] == null ? nil : $a[1])), $b; + if ($truthy(str['$empty?']())) { + return "-" + (range.$to_range()) + } else if ($eqeq(range.$size(), 0)) { + return "+" + (str.$inspect()) + "@" + (range.$begin_pos()) + } else { + return "^" + (str.$inspect()) + "@" + (range.$to_range()) + };}, {$$arity: 1, $$has_top_level_mlhs_arg: true}); + if ($truthy(suffix)) { + parts['$<<'](suffix) + }; + return parts.$join(", "); + }, 0); + $const_set($nesting[0], 'ACTIONS', ["accept", "warn", "raise"].$freeze()); + + $def(self, '$check_policy_validity', function $$check_policy_validity() { + var self = this, invalid = nil; + + + invalid = $rb_minus(self.policy.$values(), $$('ACTIONS')); + if ($truthy(invalid['$empty?']())) { + return nil + } else { + return self.$raise($$('ArgumentError'), "Invalid policy: " + (invalid.$join(", "))) + }; + }, 0); + + $def(self, '$combine', function $$combine(range, attributes) { + var self = this, action = nil; + + + range = self.$check_range_validity(range); + action = $$$($$('TreeRewriter'), 'Action').$new(range, self.enforcer, Opal.to_hash(attributes)); + self.action_root = self.action_root.$combine(action); + return self; + }, 2); + + $def(self, '$check_range_validity', function $$check_range_validity(range) { + var self = this; + + + if (($truthy($rb_lt(range.$begin_pos(), 0)) || ($truthy($rb_gt(range.$end_pos(), self.source_buffer.$source().$size()))))) { + self.$raise($$('IndexError'), "The range " + (range.$to_range()) + " is outside the bounds of the source") + }; + return range; + }, 1); + + $def(self, '$enforce_policy', function $$enforce_policy(event) { + var $yield = $$enforce_policy.$$p || nil, self = this, values = nil; + + delete $$enforce_policy.$$p; + + if ($eqeq(self.policy['$[]'](event), "accept")) { + return nil + }; + if (!$truthy((values = Opal.yieldX($yield, [])))) { + return nil + }; + return self.$trigger_policy(event, Opal.to_hash(values)); + }, 1); + $const_set($nesting[0], 'POLICY_TO_LEVEL', $hash2(["warn", "raise"], {"warn": "warning", "raise": "error"}).$freeze()); + return $def(self, '$trigger_policy', function $$trigger_policy(event, $kwargs) { + var range, conflict, arguments$, $a, $b, self = this, action = nil, $ret_or_1 = nil, diag = nil, highlights = nil; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + range = $kwargs.$$smap["range"]; + if (range == null) range = self.$raise(); + + conflict = $kwargs.$$smap["conflict"]; + if (conflict == null) conflict = nil; + + arguments$ = Opal.kwrestargs($kwargs, {'range': true,'conflict': true});; + action = ($truthy(($ret_or_1 = self.policy['$[]'](event))) ? ($ret_or_1) : ("raise")); + diag = $$$($$('Parser'), 'Diagnostic').$new($$('POLICY_TO_LEVEL')['$[]'](action), event, arguments$, range); + self.diagnostics.$process(diag); + if ($truthy(conflict)) { + + $b = conflict, $a = $to_ary($b), (range = ($a[0] == null ? nil : $a[0])), (highlights = $slice.call($a, 1)), $b; + diag = $$$($$('Parser'), 'Diagnostic').$new($$('POLICY_TO_LEVEL')['$[]'](action), "" + (event) + "_conflict", arguments$, range, highlights); + self.diagnostics.$process(diag); + }; + if ($eqeq(action, "raise")) { + return self.$raise($$$($$('Parser'), 'ClobberingError'), "Parser::Source::TreeRewriter detected clobbering") + } else { + return nil + }; + }, -2); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/tree_rewriter/action"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $not = Opal.not, $rb_plus = Opal.rb_plus, $eqeq = Opal.eqeq, $to_a = Opal.to_a, $rb_gt = Opal.rb_gt, $rb_minus = Opal.rb_minus, $rb_ge = Opal.rb_ge, $eqeqeq = Opal.eqeqeq, $rb_le = Opal.rb_le, $rb_lt = Opal.rb_lt, $neqeq = Opal.neqeq; + + Opal.add_stubs('attr_reader,freeze,empty?,do_combine,==,<<,begin,concat,flat_map,to_proc,end,!,insert_before,insert_after,replacement,raise,insertion?,with,begin_pos,range,first,children,end_pos,last,new,+,map,moved,protected,swallow,class,merge,place_in_hierarchy,analyse_hierarchy,[],fuse_deletions,combine_children,inject,size,bsearch,bsearch_child_index,>,-,>=,===,<=>,<=,check_fusible,<,shift,pop,compact!,each,call,call_enforcer_for_merge,!=,select'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Action'); + + var $proto = self.$$prototype; + + $proto.insert_before = $proto.insert_after = $proto.children = $proto.replacement = $proto.range = $proto.enforcer = nil; + + self.$attr_reader("range", "replacement", "insert_before", "insert_after"); + + $def(self, '$initialize', function $$initialize(range, enforcer, $kwargs) { + var insert_before, replacement, insert_after, children, $a, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + insert_before = $kwargs.$$smap["insert_before"]; + if (insert_before == null) insert_before = ""; + + replacement = $kwargs.$$smap["replacement"]; + if (replacement == null) replacement = nil; + + insert_after = $kwargs.$$smap["insert_after"]; + if (insert_after == null) insert_after = ""; + + children = $kwargs.$$smap["children"]; + if (children == null) children = []; + $a = [range, enforcer, children.$freeze(), insert_before.$freeze(), replacement, insert_after.$freeze()], (self.range = $a[0]), (self.enforcer = $a[1]), (self.children = $a[2]), (self.insert_before = $a[3]), (self.replacement = $a[4]), (self.insert_after = $a[5]), $a; + return self.$freeze(); + }, -3); + + $def(self, '$combine', function $$combine(action) { + var self = this; + + + if ($truthy(action['$empty?']())) { + return self + }; + return self.$do_combine(action); + }, 1); + + $def(self, '$empty?', function $Action_empty$ques$1() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = ($truthy(($ret_or_3 = self.insert_before['$empty?']())) ? (self.insert_after['$empty?']()) : ($ret_or_3)))) ? (self.children['$empty?']()) : ($ret_or_2))))) { + + if ($truthy(($ret_or_2 = self.replacement['$=='](nil)))) { + return $ret_or_2 + } else { + + if ($truthy(($ret_or_3 = self.replacement['$empty?']()))) { + return self.range['$empty?']() + } else { + return $ret_or_3 + }; + }; + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$ordered_replacements', function $$ordered_replacements() { + var self = this, reps = nil; + + + reps = []; + if (!$truthy(self.insert_before['$empty?']())) { + reps['$<<']([self.range.$begin(), self.insert_before]) + }; + if ($truthy(self.replacement)) { + reps['$<<']([self.range, self.replacement]) + }; + reps.$concat($send(self.children, 'flat_map', [], "ordered_replacements".$to_proc())); + if (!$truthy(self.insert_after['$empty?']())) { + reps['$<<']([self.range.$end(), self.insert_after]) + }; + return reps; + }, 0); + + $def(self, '$nested_actions', function $$nested_actions() { + var self = this, actions = nil; + + + actions = []; + if (($not(self.insert_before['$empty?']()) || ($not(self.insert_after['$empty?']())))) { + actions['$<<'](["wrap", self.range, self.insert_before, self.insert_after]) + }; + if ($truthy(self.replacement)) { + actions['$<<'](["replace", self.range, self.replacement]) + }; + return actions.$concat($send(self.children, 'flat_map', [], "nested_actions".$to_proc())); + }, 0); + + $def(self, '$insertion?', function $Action_insertion$ques$2() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.$insert_before()['$empty?']()['$!']())) ? ($ret_or_2) : (self.$insert_after()['$empty?']()['$!']()))))) { + return $ret_or_1 + } else { + + if ($truthy(($ret_or_2 = self.$replacement()))) { + return self.$replacement()['$empty?']()['$!']() + } else { + return $ret_or_2 + }; + } + }, 0); + + $def(self, '$contract', function $$contract() { + var self = this, range = nil; + + + if ($truthy(self['$empty?']())) { + self.$raise("Empty actions can not be contracted") + }; + if ($truthy(self['$insertion?']())) { + return self + }; + range = self.range.$with($hash2(["begin_pos", "end_pos"], {"begin_pos": self.$children().$first().$range().$begin_pos(), "end_pos": self.$children().$last().$range().$end_pos()})); + return self.$with($hash2(["range"], {"range": range})); + }, 0); + + $def(self, '$moved', function $$moved(source_buffer, offset) { + var self = this, moved_range = nil; + + + moved_range = $$$($$$($$$('Parser'), 'Source'), 'Range').$new(source_buffer, $rb_plus(self.range.$begin_pos(), offset), $rb_plus(self.range.$end_pos(), offset)); + return self.$with($hash2(["range", "children"], {"range": moved_range, "children": $send(self.$children(), 'map', [], function $$3(child){ + + + if (child == null) child = nil;; + return child.$moved(source_buffer, offset);}, 1)})); + }, 2); + self.$protected(); + self.$attr_reader("children"); + + $def(self, '$with', function $Action_with$4($kwargs) { + var range, enforcer, children, insert_before, replacement, insert_after, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + range = $kwargs.$$smap["range"]; + if (range == null) range = self.range; + + enforcer = $kwargs.$$smap["enforcer"]; + if (enforcer == null) enforcer = self.enforcer; + + children = $kwargs.$$smap["children"]; + if (children == null) children = self.children; + + insert_before = $kwargs.$$smap["insert_before"]; + if (insert_before == null) insert_before = self.insert_before; + + replacement = $kwargs.$$smap["replacement"]; + if (replacement == null) replacement = self.replacement; + + insert_after = $kwargs.$$smap["insert_after"]; + if (insert_after == null) insert_after = self.insert_after; + if ($truthy(replacement)) { + children = self.$swallow(children) + }; + return self.$class().$new(range, enforcer, $hash2(["children", "insert_before", "replacement", "insert_after"], {"children": children, "insert_before": insert_before, "replacement": replacement, "insert_after": insert_after})); + }, -1); + + $def(self, '$do_combine', function $$do_combine(action) { + var self = this; + + if ($eqeq(action.$range(), self.range)) { + return self.$merge(action) + } else { + return self.$place_in_hierarchy(action) + } + }, 1); + + $def(self, '$place_in_hierarchy', function $$place_in_hierarchy(action) { + var self = this, family = nil, extra_sibbling = nil; + + + family = self.$analyse_hierarchy(action); + if ($truthy(family['$[]']("fusible"))) { + return self.$fuse_deletions(action, family['$[]']("fusible"), [].concat($to_a(family['$[]']("sibbling_left"))).concat($to_a(family['$[]']("child"))).concat($to_a(family['$[]']("sibbling_right")))) + } else { + + extra_sibbling = ($truthy(family['$[]']("parent")) ? (family['$[]']("parent").$do_combine(action)) : ($truthy(family['$[]']("child")) ? (action.$with($hash2(["children", "enforcer"], {"children": family['$[]']("child"), "enforcer": self.enforcer})).$combine_children(action.$children())) : (action))); + return self.$with($hash2(["children"], {"children": [].concat($to_a(family['$[]']("sibbling_left"))).concat([extra_sibbling]).concat($to_a(family['$[]']("sibbling_right")))})); + }; + }, 1); + + $def(self, '$combine_children', function $$combine_children(more_children) { + var self = this; + + return $send(more_children, 'inject', [self], function $$5(parent, new_child){ + + + if (parent == null) parent = nil;; + + if (new_child == null) new_child = nil;; + return parent.$place_in_hierarchy(new_child);}, 2) + }, 1); + + $def(self, '$fuse_deletions', function $$fuse_deletions(action, fusible, other_sibblings) { + var self = this, without_fusible = nil, fused_range = nil, fused_deletion = nil; + + + without_fusible = self.$with($hash2(["children"], {"children": other_sibblings})); + fused_range = $send([action].concat($to_a(fusible)), 'map', [], "range".$to_proc()).$inject("join"); + fused_deletion = action.$with($hash2(["range"], {"range": fused_range})); + return without_fusible.$do_combine(fused_deletion); + }, 3); + + $def(self, '$bsearch_child_index', function $$bsearch_child_index(from) { + var $yield = $$bsearch_child_index.$$p || nil, self = this, size = nil, $ret_or_1 = nil; + + delete $$bsearch_child_index.$$p; + + + if (from == null) from = 0;; + size = self.children.$size(); + if ($truthy(($ret_or_1 = $send(Opal.Range.$new(from,size, true), 'bsearch', [], function $$6(i){var self = $$6.$$s == null ? this : $$6.$$s; + if (self.children == null) self.children = nil; + + + + if (i == null) i = nil;; + return Opal.yield1($yield, self.children['$[]'](i));;}, {$$arity: 1, $$s: self})))) { + return $ret_or_1 + } else { + return size + }; + }, -1); + + $def(self, '$analyse_hierarchy', function $$analyse_hierarchy(action) { + var self = this, r = nil, left_index = nil, start = nil, right_index = nil, center = nil, $ret_or_1 = nil, parent = nil, overlap_left = nil, overlap_right = nil, contained = nil, fusible = nil; + + + r = action.$range(); + left_index = $send(self, 'bsearch_child_index', [], function $$7(child){ + + + if (child == null) child = nil;; + return $rb_gt(child.$range().$end_pos(), r.$begin_pos());}, 1); + start = ($eqeq(left_index, 0) ? (0) : ($rb_minus(left_index, 1))); + right_index = $send(self, 'bsearch_child_index', [start], function $$8(child){ + + + if (child == null) child = nil;; + return $rb_ge(child.$range().$begin_pos(), r.$end_pos());}, 1); + center = $rb_minus(right_index, left_index); + if (!$eqeqeq(0, ($ret_or_1 = center))) { + if ($eqeqeq(-1, $ret_or_1)) { + + left_index = $rb_minus(left_index, 1); + right_index = $rb_plus(right_index, 1); + parent = self.children['$[]'](left_index); + } else { + + overlap_left = self.children['$[]'](left_index).$range().$begin_pos()['$<=>'](r.$begin_pos()); + overlap_right = self.children['$[]']($rb_minus(right_index, 1)).$range().$end_pos()['$<=>'](r.$end_pos()); + if ((($eqeq(center, 1) && ($truthy($rb_le(overlap_left, 0)))) && ($truthy($rb_ge(overlap_right, 0))))) { + parent = self.children['$[]'](left_index) + } else { + + contained = self.children['$[]'](Opal.Range.$new(left_index,right_index, true)); + fusible = self.$check_fusible(action, ($truthy($rb_lt(overlap_left, 0)) ? (contained.$shift()) : nil), ($truthy($rb_gt(overlap_right, 0)) ? (contained.$pop()) : nil)); + }; + } + }; + return $hash2(["parent", "sibbling_left", "sibbling_right", "fusible", "child"], {"parent": parent, "sibbling_left": self.children['$[]'](Opal.Range.$new(0,left_index, true)), "sibbling_right": self.children['$[]'](Opal.Range.$new(right_index,self.children.$size(), true)), "fusible": fusible, "child": contained}); + }, 1); + + $def(self, '$check_fusible', function $$check_fusible(action, $a) { + var $post_args, fusible, self = this; + + + + $post_args = Opal.slice.call(arguments, 1); + + fusible = $post_args;; + fusible['$compact!'](); + if ($truthy(fusible['$empty?']())) { + return nil + }; + $send(fusible, 'each', [], function $$9(child){var self = $$9.$$s == null ? this : $$9.$$s, kind = nil; + if (self.enforcer == null) self.enforcer = nil; + + + + if (child == null) child = nil;; + kind = (($truthy(action['$insertion?']()) || ($truthy(child['$insertion?']()))) ? ("crossing_insertions") : ("crossing_deletions")); + return $send(self.enforcer, 'call', [kind], function $$10(){ + return $hash2(["range", "conflict"], {"range": action.$range(), "conflict": child.$range()})}, 0);}, {$$arity: 1, $$s: self}); + return fusible; + }, -2); + + $def(self, '$merge', function $$merge(action) { + var self = this, $ret_or_1 = nil; + + + self.$call_enforcer_for_merge(action); + return self.$with($hash2(["insert_before", "replacement", "insert_after"], {"insert_before": "" + (action.$insert_before()) + (self.$insert_before()), "replacement": ($truthy(($ret_or_1 = action.$replacement())) ? ($ret_or_1) : (self.replacement)), "insert_after": "" + (self.$insert_after()) + (action.$insert_after())})).$combine_children(action.$children()); + }, 1); + + $def(self, '$call_enforcer_for_merge', function $$call_enforcer_for_merge(action) { + var self = this; + + return $send(self.enforcer, 'call', ["different_replacements"], function $$11(){var self = $$11.$$s == null ? this : $$11.$$s; + if (self.replacement == null) self.replacement = nil; + if (self.range == null) self.range = nil; + + if ((($truthy(self.replacement) && ($truthy(action.$replacement()))) && ($neqeq(self.replacement, action.$replacement())))) { + return $hash2(["range", "replacement", "other_replacement"], {"range": self.range, "replacement": action.$replacement(), "other_replacement": self.replacement}) + } else { + return nil + }}, {$$arity: 0, $$s: self}) + }, 1); + return $def(self, '$swallow', function $$swallow(children) { + var self = this; + + + $send(self.enforcer, 'call', ["swallowed_insertions"], function $$12(){var self = $$12.$$s == null ? this : $$12.$$s, insertions = nil; + if (self.range == null) self.range = nil; + + + insertions = $send(children, 'select', [], "insertion?".$to_proc()); + if ($truthy(insertions['$empty?']())) { + return nil + } else { + return $hash2(["range", "conflict"], {"range": self.range, "conflict": $send(insertions, 'map', [], "range".$to_proc())}) + };}, {$$arity: 0, $$s: self}); + return []; + }, 1); + })($$('TreeRewriter'), null) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2, $eqeq = Opal.eqeq, $range = Opal.range, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus; + + Opal.add_stubs('attr_reader,freeze,line,alias_method,column,last_line,last_column,with,update_expression,==,class,reduce,map,instance_variables,instance_variable_get,send,inject,to_sym,[],[]=,-,protected,tap,dup,to_proc'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Map'); + + var $proto = self.$$prototype; + + $proto.node = $proto.expression = nil; + + self.$attr_reader("node"); + self.$attr_reader("expression"); + + $def(self, '$initialize', function $$initialize(expression) { + var self = this; + + return (self.expression = expression) + }, 1); + + $def(self, '$initialize_copy', function $$initialize_copy(other) { + var $yield = $$initialize_copy.$$p || nil, self = this; + + delete $$initialize_copy.$$p; + + $send2(self, $find_super(self, 'initialize_copy', $$initialize_copy, false, true), 'initialize_copy', [other], $yield); + return (self.node = nil); + }, 1); + + $def(self, '$node=', function $Map_node$eq$1(node) { + var self = this; + + + self.node = node; + self.$freeze(); + return self.node; + }, 1); + + $def(self, '$line', function $$line() { + var self = this; + + return self.expression.$line() + }, 0); + self.$alias_method("first_line", "line"); + + $def(self, '$column', function $$column() { + var self = this; + + return self.expression.$column() + }, 0); + + $def(self, '$last_line', function $$last_line() { + var self = this; + + return self.expression.$last_line() + }, 0); + + $def(self, '$last_column', function $$last_column() { + var self = this; + + return self.expression.$last_column() + }, 0); + + $def(self, '$with_expression', function $$with_expression(expression_l) { + var self = this; + + return $send(self, 'with', [], function $$2(map){ + + + if (map == null) map = nil;; + return map.$update_expression(expression_l);}, 1) + }, 1); + + $def(self, '$==', function $Map_$eq_eq$3(other) { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = other.$class()['$=='](self.$class())))) { + return $send(self.$instance_variables(), 'map', [], function $$4(ivar){var self = $$4.$$s == null ? this : $$4.$$s; + + + + if (ivar == null) ivar = nil;; + return self.$instance_variable_get(ivar)['$=='](other.$send("instance_variable_get", ivar));}, {$$arity: 1, $$s: self}).$reduce("&") + } else { + return $ret_or_1 + } + }, 1); + + $def(self, '$to_hash', function $$to_hash() { + var self = this; + + return $send(self.$instance_variables(), 'inject', [$hash2([], {})], function $$5(hash, ivar){var self = $$5.$$s == null ? this : $$5.$$s, $writer = nil; + + + + if (hash == null) hash = nil;; + + if (ivar == null) ivar = nil;; + if ($eqeq(ivar.$to_sym(), "@node")) { + return hash; + }; + + $writer = [ivar['$[]']($range(1, -1, false)).$to_sym(), self.$instance_variable_get(ivar)]; + $send(hash, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return hash;}, {$$arity: 2, $$s: self}) + }, 0); + self.$protected(); + + $def(self, '$with', function $Map_with$6() { + var block = $Map_with$6.$$p || nil, self = this; + + delete $Map_with$6.$$p; + + ; + return $send(self.$dup(), 'tap', [], block.$to_proc()); + }, 0); + return $def(self, '$update_expression', function $$update_expression(expression_l) { + var self = this; + + return (self.expression = expression_l) + }, 1); + })($nesting[0], null) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/operator"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Operator'); + + + + self.$attr_reader("operator"); + return $def(self, '$initialize', function $$initialize(operator, expression) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.operator = operator; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression], null); + }, 2); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/collection"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Collection'); + + + + self.$attr_reader("begin"); + self.$attr_reader("end"); + return $def(self, '$initialize', function $$initialize(begin_l, end_l, expression_l) { + var $a, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + $a = [begin_l, end_l], (self.begin = $a[0]), (self.end = $a[1]), $a; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression_l], null); + }, 3); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/constant"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $send = Opal.send; + + Opal.add_stubs('attr_reader,with,update_operator,protected'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Constant'); + + + + self.$attr_reader("double_colon"); + self.$attr_reader("name"); + self.$attr_reader("operator"); + + $def(self, '$initialize', function $$initialize(double_colon, name, expression) { + var $a, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + $a = [double_colon, name], (self.double_colon = $a[0]), (self.name = $a[1]), $a; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression], null); + }, 3); + + $def(self, '$with_operator', function $$with_operator(operator_l) { + var self = this; + + return $send(self, 'with', [], function $$1(map){ + + + if (map == null) map = nil;; + return map.$update_operator(operator_l);}, 1) + }, 1); + self.$protected(); + return $def(self, '$update_operator', function $$update_operator(operator_l) { + var self = this; + + return (self.operator = operator_l) + }, 1); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/variable"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $send = Opal.send; + + Opal.add_stubs('attr_reader,with,update_operator,protected'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Variable'); + + + + self.$attr_reader("name"); + self.$attr_reader("operator"); + + $def(self, '$initialize', function $$initialize(name_l, expression_l) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + if (expression_l == null) expression_l = name_l;; + self.name = name_l; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression_l], null); + }, -2); + + $def(self, '$with_operator', function $$with_operator(operator_l) { + var self = this; + + return $send(self, 'with', [], function $$1(map){ + + + if (map == null) map = nil;; + return map.$update_operator(operator_l);}, 1) + }, 1); + self.$protected(); + return $def(self, '$update_operator', function $$update_operator(operator_l) { + var self = this; + + return (self.operator = operator_l) + }, 1); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/keyword"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Keyword'); + + + + self.$attr_reader("keyword"); + self.$attr_reader("begin"); + self.$attr_reader("end"); + return $def(self, '$initialize', function $$initialize(keyword_l, begin_l, end_l, expression_l) { + var $a, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.keyword = keyword_l; + $a = [begin_l, end_l], (self.begin = $a[0]), (self.end = $a[1]), $a; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression_l], null); + }, 4); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/definition"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader,join'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Definition'); + + var $proto = self.$$prototype; + + $proto.keyword = $proto.end = nil; + + self.$attr_reader("keyword"); + self.$attr_reader("operator"); + self.$attr_reader("name"); + self.$attr_reader("end"); + return $def(self, '$initialize', function $$initialize(keyword_l, operator_l, name_l, end_l) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.keyword = keyword_l; + self.operator = operator_l; + self.name = name_l; + self.end = end_l; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [self.keyword.$join(self.end)], null); + }, 4); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/method_definition"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $truthy = Opal.truthy, $def = Opal.def; + + Opal.add_stubs('attr_reader,join'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'MethodDefinition'); + + var $proto = self.$$prototype; + + $proto.keyword = nil; + + self.$attr_reader("keyword"); + self.$attr_reader("operator"); + self.$attr_reader("name"); + self.$attr_reader("end"); + self.$attr_reader("assignment"); + return $def(self, '$initialize', function $$initialize(keyword_l, operator_l, name_l, end_l, assignment_l, body_l) { + var $yield = $$initialize.$$p || nil, self = this, $ret_or_1 = nil; + + delete $$initialize.$$p; + + self.keyword = keyword_l; + self.operator = operator_l; + self.name = name_l; + self.end = end_l; + self.assignment = assignment_l; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [self.keyword.$join(($truthy(($ret_or_1 = end_l)) ? ($ret_or_1) : (body_l)))], null); + }, 6); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/send"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $send = Opal.send; + + Opal.add_stubs('attr_reader,with,update_operator,protected'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Send'); + + + + self.$attr_reader("dot"); + self.$attr_reader("selector"); + self.$attr_reader("operator"); + self.$attr_reader("begin"); + self.$attr_reader("end"); + + $def(self, '$initialize', function $$initialize(dot_l, selector_l, begin_l, end_l, expression_l) { + var $a, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.dot = dot_l; + self.selector = selector_l; + $a = [begin_l, end_l], (self.begin = $a[0]), (self.end = $a[1]), $a; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression_l], null); + }, 5); + + $def(self, '$with_operator', function $$with_operator(operator_l) { + var self = this; + + return $send(self, 'with', [], function $$1(map){ + + + if (map == null) map = nil;; + return map.$update_operator(operator_l);}, 1) + }, 1); + self.$protected(); + return $def(self, '$update_operator', function $$update_operator(operator_l) { + var self = this; + + return (self.operator = operator_l) + }, 1); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/index"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $send = Opal.send; + + Opal.add_stubs('attr_reader,with,update_operator,protected'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Index'); + + + + self.$attr_reader("begin"); + self.$attr_reader("end"); + self.$attr_reader("operator"); + + $def(self, '$initialize', function $$initialize(begin_l, end_l, expression_l) { + var $a, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + $a = [begin_l, end_l], (self.begin = $a[0]), (self.end = $a[1]), $a; + self.operator = nil; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression_l], null); + }, 3); + + $def(self, '$with_operator', function $$with_operator(operator_l) { + var self = this; + + return $send(self, 'with', [], function $$1(map){ + + + if (map == null) map = nil;; + return map.$update_operator(operator_l);}, 1) + }, 1); + self.$protected(); + return $def(self, '$update_operator', function $$update_operator(operator_l) { + var self = this; + + return (self.operator = operator_l) + }, 1); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/condition"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Condition'); + + + + self.$attr_reader("keyword"); + self.$attr_reader("begin"); + self.$attr_reader("else"); + self.$attr_reader("end"); + return $def(self, '$initialize', function $$initialize(keyword_l, begin_l, else_l, end_l, expression_l) { + var $a, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.keyword = keyword_l; + $a = [begin_l, else_l, end_l], (self.begin = $a[0]), (self["else"] = $a[1]), (self.end = $a[2]), $a; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression_l], null); + }, 5); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/ternary"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Ternary'); + + + + self.$attr_reader("question"); + self.$attr_reader("colon"); + return $def(self, '$initialize', function $$initialize(question_l, colon_l, expression_l) { + var $a, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + $a = [question_l, colon_l], (self.question = $a[0]), (self.colon = $a[1]), $a; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression_l], null); + }, 3); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/for"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'For'); + + + + self.$attr_reader("keyword", "in"); + self.$attr_reader("begin", "end"); + return $def(self, '$initialize', function $$initialize(keyword_l, in_l, begin_l, end_l, expression_l) { + var $a, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + $a = [keyword_l, in_l], (self.keyword = $a[0]), (self["in"] = $a[1]), $a; + $a = [begin_l, end_l], (self.begin = $a[0]), (self.end = $a[1]), $a; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression_l], null); + }, 5); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/rescue_body"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'RescueBody'); + + + + self.$attr_reader("keyword"); + self.$attr_reader("assoc"); + self.$attr_reader("begin"); + return $def(self, '$initialize', function $$initialize(keyword_l, assoc_l, begin_l, expression_l) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.keyword = keyword_l; + self.assoc = assoc_l; + self.begin = begin_l; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression_l], null); + }, 4); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/heredoc"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Heredoc'); + + + + self.$attr_reader("heredoc_body"); + self.$attr_reader("heredoc_end"); + return $def(self, '$initialize', function $$initialize(begin_l, body_l, end_l) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.heredoc_body = body_l; + self.heredoc_end = end_l; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [begin_l], null); + }, 3); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/source/map/objc_kwarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Source'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ObjcKwarg'); + + + + self.$attr_reader("keyword"); + self.$attr_reader("operator"); + self.$attr_reader("argument"); + return $def(self, '$initialize', function $$initialize(keyword_l, operator_l, argument_l, expression_l) { + var $a, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + $a = [keyword_l, operator_l, argument_l], (self.keyword = $a[0]), (self.operator = $a[1]), (self.argument = $a[2]), $a; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [expression_l], null); + }, 4); + })($$('Map'), $$('Map')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/syntax_error"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; + + Opal.add_stubs('attr_reader,message'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'SyntaxError'); + + + + self.$attr_reader("diagnostic"); + return $def(self, '$initialize', function $$initialize(diagnostic) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.diagnostic = diagnostic; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [diagnostic.$message()], null); + }, 1); + })($nesting[0], $$('StandardError')) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/clobbering_error"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass; + + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return ($klass($nesting[0], $$('RuntimeError'), 'ClobberingError'), nil) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/diagnostic"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $truthy = Opal.truthy, $hash2 = Opal.hash2, $def = Opal.def, $eqeq = Opal.eqeq, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $to_ary = Opal.to_ary, $rb_gt = Opal.rb_gt, $rb_times = Opal.rb_times, $send = Opal.send, $to_a = Opal.to_a, $rb_ge = Opal.rb_ge, $not = Opal.not, $neqeq = Opal.neqeq; + + Opal.add_stubs('freeze,attr_reader,include?,raise,join,inspect,dup,compile,is?,==,line,last_line,+,message,render_line,first_line_only,last_line_only,-,source_buffer,decompose_position,end_pos,>,private,source_line,*,length,each,line_range,intersect,column_range,size,[]=,>=,!,map,name,!=,resize,=~,source,adjust'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Diagnostic'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.reason = $proto["arguments"] = $proto.location = $proto.level = $proto.highlights = nil; + + $const_set($nesting[0], 'LEVELS', ["note", "warning", "error", "fatal"].$freeze()); + self.$attr_reader("level", "reason", "arguments"); + self.$attr_reader("location", "highlights"); + + $def(self, '$initialize', function $$initialize(level, reason, arguments$, location, highlights) { + var self = this, $ret_or_1 = nil; + + + + if (highlights == null) highlights = [];; + if (!$truthy($$('LEVELS')['$include?'](level))) { + self.$raise($$('ArgumentError'), "" + ("Diagnostic#level must be one of " + ($$('LEVELS').$join(", ")) + "; ") + ("" + (level.$inspect()) + " provided.")) + }; + if (!$truthy(location)) { + self.$raise("Expected a location") + }; + self.level = level; + self.reason = reason; + self["arguments"] = ($truthy(($ret_or_1 = arguments$)) ? ($ret_or_1) : ($hash2([], {}))).$dup().$freeze(); + self.location = location; + self.highlights = highlights.$dup().$freeze(); + return self.$freeze(); + }, -5); + + $def(self, '$message', function $$message() { + var self = this; + + return $$('Messages').$compile(self.reason, self["arguments"]) + }, 0); + + $def(self, '$render', function $$render() { + var $a, $b, self = this, first_line = nil, last_line = nil, num_lines = nil, buffer = nil, last_lineno = nil, last_column = nil; + + if (($eqeq(self.location.$line(), self.location.$last_line()) || ($truthy(self.location['$is?']("\n"))))) { + return $rb_plus(["" + (self.location) + ": " + (self.level) + ": " + (self.$message())], self.$render_line(self.location)) + } else { + + first_line = self.$first_line_only(self.location); + last_line = self.$last_line_only(self.location); + num_lines = $rb_plus($rb_minus(self.location.$last_line(), self.location.$line()), 1); + buffer = self.location.$source_buffer(); + $b = buffer.$decompose_position(self.location.$end_pos()), $a = $to_ary($b), (last_lineno = ($a[0] == null ? nil : $a[0])), (last_column = ($a[1] == null ? nil : $a[1])), $b; + return $rb_plus($rb_plus(["" + (self.location) + "-" + (last_lineno) + ":" + (last_column) + ": " + (self.level) + ": " + (self.$message())], self.$render_line(first_line, $rb_gt(num_lines, 2), false)), self.$render_line(last_line, false, true)); + } + }, 0); + self.$private(); + + $def(self, '$render_line', function $$render_line(range, ellipsis, range_end) { + var self = this, source_line = nil, highlight_line = nil, $writer = nil; + + + + if (ellipsis == null) ellipsis = false;; + + if (range_end == null) range_end = false;; + source_line = range.$source_line(); + highlight_line = $rb_times(" ", source_line.$length()); + $send(self.highlights, 'each', [], function $$1(highlight){var line_range = nil, $writer = nil; + + + + if (highlight == null) highlight = nil;; + line_range = range.$source_buffer().$line_range(range.$line()); + if ($truthy((highlight = highlight.$intersect(line_range)))) { + + $writer = [highlight.$column_range(), $rb_times("~", highlight.$size())]; + $send(highlight_line, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else { + return nil + };}, 1); + if ($truthy(range['$is?']("\n"))) { + highlight_line = $rb_plus(highlight_line, "^") + } else if (($not(range_end) && ($truthy($rb_ge(range.$size(), 1))))) { + + $writer = [range.$column_range(), $rb_plus("^", $rb_times("~", $rb_minus(range.$size(), 1)))]; + $send(highlight_line, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + } else { + + $writer = [range.$column_range(), $rb_times("~", range.$size())]; + $send(highlight_line, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + if ($truthy(ellipsis)) { + highlight_line = $rb_plus(highlight_line, "...") + }; + return $send([source_line, highlight_line], 'map', [], function $$2(line){ + + + if (line == null) line = nil;; + return "" + (range.$source_buffer().$name()) + ":" + (range.$line()) + ": " + (line);}, 1); + }, -2); + + $def(self, '$first_line_only', function $$first_line_only(range) { + + if ($neqeq(range.$line(), range.$last_line())) { + return range.$resize(range.$source()['$=~'](/\n/)) + } else { + return range + } + }, 1); + return $def(self, '$last_line_only', function $$last_line_only(range) { + + if ($neqeq(range.$line(), range.$last_line())) { + return range.$adjust($hash2(["begin_pos"], {"begin_pos": range.$source()['$=~'](/[^\n]*$/)})) + } else { + return range + } + }, 1); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/diagnostic/engine"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy; + + Opal.add_stubs('attr_accessor,ignore?,call,raise?,raise,protected,==,level'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Engine'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.consumer = $proto.ignore_warnings = $proto.all_errors_are_fatal = nil; + + self.$attr_accessor("consumer"); + self.$attr_accessor("all_errors_are_fatal"); + self.$attr_accessor("ignore_warnings"); + + $def(self, '$initialize', function $$initialize(consumer) { + var self = this; + + + + if (consumer == null) consumer = nil;; + self.consumer = consumer; + self.all_errors_are_fatal = false; + return (self.ignore_warnings = false); + }, -1); + + $def(self, '$process', function $$process(diagnostic) { + var self = this; + + + if (!$truthy(self['$ignore?'](diagnostic))) { + if ($truthy(self.consumer)) { + self.consumer.$call(diagnostic) + } + }; + if ($truthy(self['$raise?'](diagnostic))) { + self.$raise($$$($$('Parser'), 'SyntaxError'), diagnostic) + }; + return self; + }, 1); + self.$protected(); + + $def(self, '$ignore?', function $Engine_ignore$ques$1(diagnostic) { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.ignore_warnings))) { + return diagnostic.$level()['$==']("warning") + } else { + return $ret_or_1 + } + }, 1); + return $def(self, '$raise?', function $Engine_raise$ques$2(diagnostic) { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.all_errors_are_fatal)) ? (diagnostic.$level()['$==']("error")) : ($ret_or_2))))) { + return $ret_or_1 + } else { + return diagnostic.$level()['$==']("fatal") + } + }, 1); + })($$('Diagnostic'), null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/static_environment"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def; + + Opal.add_stubs('reset,[],push,dup,pop,add,to_sym,include?,declare,declared?,empty?'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'StaticEnvironment'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.stack = $proto.variables = nil; + + $const_set($nesting[0], 'FORWARD_ARGS', "FORWARD_ARGS"); + $const_set($nesting[0], 'ANONYMOUS_BLOCKARG', "ANONYMOUS_BLOCKARG"); + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return self.$reset() + }, 0); + + $def(self, '$reset', function $$reset() { + var self = this; + + + self.variables = $$('Set')['$[]'](); + return (self.stack = []); + }, 0); + + $def(self, '$extend_static', function $$extend_static() { + var self = this; + + + self.stack.$push(self.variables); + self.variables = $$('Set')['$[]'](); + return self; + }, 0); + + $def(self, '$extend_dynamic', function $$extend_dynamic() { + var self = this; + + + self.stack.$push(self.variables); + self.variables = self.variables.$dup(); + return self; + }, 0); + + $def(self, '$unextend', function $$unextend() { + var self = this; + + + self.variables = self.stack.$pop(); + return self; + }, 0); + + $def(self, '$declare', function $$declare(name) { + var self = this; + + + self.variables.$add(name.$to_sym()); + return self; + }, 1); + + $def(self, '$declared?', function $StaticEnvironment_declared$ques$1(name) { + var self = this; + + return self.variables['$include?'](name.$to_sym()) + }, 1); + + $def(self, '$declare_forward_args', function $$declare_forward_args() { + var self = this; + + return self.$declare($$('FORWARD_ARGS')) + }, 0); + + $def(self, '$declared_forward_args?', function $StaticEnvironment_declared_forward_args$ques$2() { + var self = this; + + return self['$declared?']($$('FORWARD_ARGS')) + }, 0); + + $def(self, '$declare_anonymous_blockarg', function $$declare_anonymous_blockarg() { + var self = this; + + return self.$declare($$('ANONYMOUS_BLOCKARG')) + }, 0); + + $def(self, '$declared_anonymous_blockarg?', function $StaticEnvironment_declared_anonymous_blockarg$ques$3() { + var self = this; + + return self['$declared?']($$('ANONYMOUS_BLOCKARG')) + }, 0); + return $def(self, '$empty?', function $StaticEnvironment_empty$ques$4() { + var self = this; + + return self.stack['$empty?']() + }, 0); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $const_set = Opal.const_set, $hash = Opal.hash, $def = Opal.def, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $hash2 = Opal.hash2, $rb_plus = Opal.rb_plus, $to_ary = Opal.to_ary, $rb_le = Opal.rb_le, $eqeqeq = Opal.eqeqeq, $rb_gt = Opal.rb_gt, $neqeq = Opal.neqeq, $not = Opal.not, $rb_ge = Opal.rb_ge, $range = Opal.range, $rb_lt = Opal.rb_lt, $gvars = Opal.gvars; + + Opal.add_stubs('attr_accessor,private,_lex_trans_keys=,-,_lex_key_spans=,_lex_index_offsets=,_lex_indicies=,_lex_trans_targs=,_lex_trans_actions=,_lex_to_state_actions=,_lex_from_state_actions=,_lex_eof_trans=,lex_start=,lex_error=,lex_en_interp_words=,lex_en_interp_string=,lex_en_plain_words=,lex_en_plain_string=,lex_en_interp_backslash_delimited=,lex_en_plain_backslash_delimited=,lex_en_interp_backslash_delimited_words=,lex_en_plain_backslash_delimited_words=,lex_en_regexp_modifiers=,lex_en_expr_variable=,lex_en_expr_fname=,lex_en_expr_endfn=,lex_en_expr_dot=,lex_en_expr_arg=,lex_en_expr_cmdarg=,lex_en_expr_endarg=,lex_en_expr_mid=,lex_en_expr_beg=,lex_en_expr_labelarg=,lex_en_expr_value=,lex_en_expr_end=,lex_en_leading_dot=,lex_en_line_comment=,lex_en_line_begin=,freeze,ord,union,chars,attr_reader,reset,lex_en_line_begin,class,new,source,==,encoding,unpack,[],lex_en_expr_dot,lex_en_expr_fname,lex_en_expr_value,lex_en_expr_beg,lex_en_expr_mid,lex_en_expr_arg,lex_en_expr_cmdarg,lex_en_expr_end,lex_en_expr_endarg,lex_en_expr_endfn,lex_en_expr_labelarg,lex_en_interp_string,lex_en_interp_words,lex_en_plain_string,fetch,invert,push,count,pop,any?,shift,send,+,size,<=,===,<<,>,!=,emit_comment,tok,literal,flush_string,extend_content,emit,heredoc?,saved_herebody_s=,start_interp_brace,[]=,diagnostic,range,str_s,gsub,version?,nest_and_try_closing,heredoc_e,pop_literal,infer_indent_level,!,eof_codepoint?,words?,extend_space,extend_string,active?,>=,slice,start_with?,chr,munge_escape?,match,regexp?,squiggly_heredoc?,supports_line_continuation_via_slash?,include?,scan,join,=~,to_i,stack_pop,emit_table,push_literal,in_argdef,arg_or_cmdarg,<,emit_do,declared?,nil?,last,getbyte,inspect,end_with?,empty?,index,call,Float,to_f,length,lambda,Rational,Complex,each,encode_escape,%,in_kwarg,end_interp_brace_and_try_closing,lexpop,saved_herebody_s,next_state_for_literal,rstrip,&,|,lex_error,protected,force_encoding,process,backslash_delimited?,interpolate?,lex_en_interp_backslash_delimited_words,lex_en_plain_backslash_delimited_words,lex_en_plain_words,lex_en_interp_backslash_delimited,lex_en_plain_backslash_delimited,dedent_level,type,lex_en_regexp_modifiers,upcase'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Lexer'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $writer = nil, $proto = self.$$prototype; + + $proto.source_buffer = $proto.source_pts = $proto.cs = $proto.cmdarg_stack = $proto.cmdarg = $proto.cond_stack = $proto.cond = $proto.dedent_level = $proto.token_queue = $proto.p = $proto.command_start = $proto.herebody_s = $proto.sharp_s = $proto.ts = $proto.te = $proto.top = $proto.stack = $proto.version = $proto.escape_s = $proto.escape = $proto.act = $proto.context = $proto.static_env = $proto.newline_s = $proto.lambda_stack = $proto.paren_nest = $proto.num_digits_s = $proto.num_suffix_s = $proto.num_base = $proto.num_xfrm = $proto.eq_begin_s = $proto.cs_before_block_comment = $proto.tokens = $proto.comments = $proto.diagnostics = $proto.literal_stack = nil; + + (function(self, $parent_nesting) { + + + self.$attr_accessor("_lex_trans_keys"); + return self.$private("_lex_trans_keys", "_lex_trans_keys="); + })(Opal.get_singleton_class(self), $nesting); + + $writer = [[0, 0, 101, 101, 103, 103, 105, 105, 110, 110, 69, 69, 78, 78, 68, 68, 95, 95, 95, 95, 0, 26, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 120, 0, 120, 0, 92, 0, 120, 0, 120, 0, 45, 0, 120, 0, 120, 67, 99, 45, 45, 0, 92, 0, 120, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 120, 0, 120, 0, 92, 0, 120, 0, 120, 0, 45, 0, 120, 0, 120, 67, 99, 45, 45, 0, 92, 0, 120, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 58, 58, 58, 46, 46, 0, 127, 58, 58, 60, 60, 62, 62, 10, 10, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 115, 115, 99, 99, 117, 117, 101, 101, 108, 116, 101, 101, 115, 115, 115, 115, 105, 105, 108, 108, 105, 105, 108, 108, 58, 58, 0, 127, 10, 10, 0, 127, 9, 92, 10, 10, 9, 92, 58, 58, 98, 98, 101, 101, 103, 103, 105, 105, 110, 110, 0, 127, 61, 61, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 10, 10, 0, 127, 0, 127, 61, 126, 93, 93, 0, 127, 0, 127, 10, 10, 34, 34, 10, 10, 39, 39, 0, 127, 10, 96, 96, 96, 0, 45, 0, 120, 0, 120, 0, 92, 0, 120, 0, 120, 0, 45, 0, 120, 0, 120, 67, 99, 45, 45, 0, 92, 0, 120, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 58, 58, 58, 0, 127, 43, 57, 48, 57, 48, 57, 48, 57, 48, 57, 115, 115, 99, 99, 117, 117, 101, 101, 99, 99, 117, 117, 101, 101, 0, 127, 58, 58, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 60, 60, 10, 10, 9, 92, 9, 92, 10, 10, 10, 10, 10, 10, 10, 10, 46, 46, 0, 95, 9, 32, 0, 0, 10, 10, 10, 10, 98, 98, 9, 32, 10, 10, 95, 95, 0, 92, 9, 32, 36, 123, 0, 127, 48, 57, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 48, 102, 48, 102, 0, 0, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 92, 36, 123, 0, 127, 48, 57, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 48, 102, 48, 102, 0, 0, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 92, 9, 32, 0, 26, 0, 92, 0, 26, 0, 35, 36, 123, 0, 127, 48, 57, 0, 127, 0, 26, 0, 35, 9, 32, 36, 123, 0, 127, 48, 57, 0, 127, 0, 32, 9, 32, 65, 122, 65, 122, 36, 64, 0, 127, 48, 57, 0, 127, 0, 127, 0, 127, 0, 127, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 115, 115, 38, 38, 42, 42, 64, 64, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 93, 93, 10, 10, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 124, 124, 0, 127, 0, 127, 9, 32, 10, 10, 10, 10, 46, 46, 10, 10, 0, 0, 0, 127, 0, 127, 61, 61, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 93, 93, 10, 10, 124, 124, 0, 126, 0, 127, 0, 61, 9, 61, 9, 61, 0, 0, 9, 61, 9, 62, 46, 46, 46, 46, 58, 58, 9, 32, 0, 0, 0, 127, 0, 0, 9, 124, 0, 0, 10, 10, 10, 10, 0, 0, 9, 61, 58, 58, 60, 60, 62, 62, 9, 32, 10, 10, 0, 127, 102, 102, 101, 101, 110, 110, 104, 104, 0, 127, 0, 127, 0, 127, 0, 0, 0, 127, 10, 10, 0, 123, 9, 32, 10, 10, 10, 10, 10, 10, 0, 0, 111, 111, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 61, 0, 0, 61, 126, 61, 61, 0, 0, 0, 0, 0, 0, 9, 32, 61, 61, 9, 32, 61, 126, 10, 10, 10, 10, 0, 127, 38, 61, 0, 0, 42, 61, 61, 61, 9, 92, 9, 92, 9, 92, 46, 46, 46, 46, 10, 10, 0, 26, 0, 127, 0, 127, 61, 61, 0, 0, 61, 126, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 61, 126, 0, 127, 48, 57, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 61, 61, 62, 0, 127, 48, 57, 0, 127, 124, 124, 64, 64, 60, 61, 0, 0, 10, 34, 10, 39, 96, 96, 62, 62, 61, 126, 61, 62, 0, 122, 0, 0, 0, 127, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 48, 102, 48, 102, 0, 0, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 61, 126, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 92, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 61, 61, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 61, 61, 38, 61, 0, 0, 0, 0, 42, 61, 61, 62, 46, 57, 46, 46, 10, 10, 48, 101, 48, 95, 46, 120, 48, 114, 43, 57, 48, 105, 102, 102, 0, 0, 101, 105, 0, 0, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 105, 114, 102, 102, 0, 0, 101, 105, 115, 115, 0, 0, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 46, 114, 48, 114, 46, 114, 48, 114, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 9, 92, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 0, 9, 92, 9, 92, 9, 92, 46, 46, 46, 46, 10, 10, 46, 46, 10, 10, 10, 61, 10, 10, 10, 101, 10, 110, 10, 100, 10, 10, 0]]; + $send(self, '_lex_trans_keys=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + + self.$attr_accessor("_lex_key_spans"); + return self.$private("_lex_key_spans", "_lex_key_spans="); + })(Opal.get_singleton_class(self), $nesting); + + $writer = [[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 128, 128, 128, 128, 46, 121, 121, 93, 121, 121, 46, 121, 121, 33, 1, 93, 121, 103, 128, 128, 128, 128, 46, 121, 121, 93, 121, 121, 46, 121, 121, 33, 1, 93, 121, 103, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 1, 1, 128, 1, 1, 1, 1, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 128, 1, 128, 84, 1, 84, 1, 1, 1, 1, 1, 1, 128, 1, 84, 84, 84, 84, 84, 1, 128, 128, 66, 1, 128, 128, 1, 1, 1, 1, 128, 87, 1, 46, 121, 121, 93, 121, 121, 46, 121, 121, 33, 1, 93, 121, 103, 128, 128, 128, 128, 128, 128, 1, 1, 128, 15, 10, 10, 10, 10, 1, 1, 1, 1, 1, 1, 1, 128, 1, 84, 84, 84, 84, 84, 84, 1, 1, 84, 84, 1, 1, 1, 1, 1, 96, 24, 0, 1, 1, 1, 24, 1, 1, 93, 24, 88, 128, 10, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 55, 55, 0, 55, 55, 0, 46, 93, 93, 0, 0, 93, 55, 55, 0, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 93, 88, 128, 10, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 55, 55, 0, 55, 55, 0, 46, 93, 93, 0, 0, 93, 55, 55, 0, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 93, 24, 27, 93, 27, 36, 88, 128, 10, 128, 27, 36, 24, 88, 128, 10, 128, 33, 24, 58, 58, 29, 128, 10, 128, 128, 128, 128, 24, 0, 66, 1, 1, 128, 128, 10, 1, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 128, 128, 128, 128, 128, 128, 1, 1, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 128, 128, 24, 1, 1, 1, 1, 0, 128, 128, 1, 0, 24, 0, 66, 1, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 1, 1, 1, 127, 128, 62, 53, 53, 0, 53, 54, 1, 1, 1, 24, 0, 128, 0, 116, 0, 1, 1, 0, 53, 1, 1, 1, 24, 1, 128, 1, 1, 1, 1, 128, 128, 128, 0, 128, 1, 124, 24, 1, 1, 1, 0, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 4, 0, 66, 1, 0, 0, 0, 24, 1, 24, 66, 1, 1, 128, 24, 0, 20, 1, 84, 84, 84, 1, 1, 1, 27, 128, 128, 1, 0, 66, 2, 0, 0, 0, 0, 66, 128, 10, 1, 1, 1, 2, 1, 1, 2, 128, 10, 128, 1, 1, 2, 0, 25, 30, 1, 1, 66, 2, 123, 0, 128, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 55, 55, 0, 55, 55, 0, 46, 93, 93, 0, 0, 93, 55, 55, 0, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 128, 128, 128, 0, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 66, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 93, 24, 0, 1, 1, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 1, 0, 24, 0, 66, 1, 1, 128, 128, 10, 1, 24, 0, 0, 20, 2, 12, 1, 1, 54, 48, 75, 67, 15, 58, 1, 0, 5, 0, 0, 67, 67, 67, 67, 10, 1, 0, 5, 1, 0, 0, 67, 67, 67, 67, 67, 67, 67, 67, 69, 67, 69, 67, 1, 2, 1, 66, 1, 2, 128, 128, 0, 128, 128, 128, 128, 128, 128, 0, 1, 0, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 84, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 0, 84, 84, 84, 1, 1, 1, 1, 1, 52, 1, 92, 101, 91, 1]]; + $send(self, '_lex_key_spans=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + + self.$attr_accessor("_lex_index_offsets"); + return self.$private("_lex_index_offsets", "_lex_index_offsets="); + })(Opal.get_singleton_class(self), $nesting); + + $writer = [[0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 46, 175, 304, 433, 562, 609, 731, 853, 947, 1069, 1191, 1238, 1360, 1482, 1516, 1518, 1612, 1734, 1838, 1967, 2096, 2225, 2354, 2401, 2523, 2645, 2739, 2861, 2983, 3030, 3152, 3274, 3308, 3310, 3404, 3526, 3630, 3759, 3888, 4017, 4146, 4275, 4404, 4533, 4662, 4791, 4920, 5049, 5178, 5307, 5436, 5565, 5567, 5569, 5571, 5700, 5702, 5704, 5706, 5708, 5837, 5966, 6095, 6224, 6353, 6482, 6611, 6740, 6869, 6998, 7127, 7256, 7385, 7514, 7643, 7772, 7901, 8030, 8032, 8034, 8036, 8038, 8048, 8050, 8052, 8054, 8056, 8058, 8060, 8062, 8064, 8193, 8195, 8324, 8409, 8411, 8496, 8498, 8500, 8502, 8504, 8506, 8508, 8637, 8639, 8724, 8809, 8894, 8979, 9064, 9066, 9195, 9324, 9391, 9393, 9522, 9651, 9653, 9655, 9657, 9659, 9788, 9876, 9878, 9925, 10047, 10169, 10263, 10385, 10507, 10554, 10676, 10798, 10832, 10834, 10928, 11050, 11154, 11283, 11412, 11541, 11670, 11799, 11928, 11930, 11932, 12061, 12077, 12088, 12099, 12110, 12121, 12123, 12125, 12127, 12129, 12131, 12133, 12135, 12264, 12266, 12351, 12436, 12521, 12606, 12691, 12776, 12778, 12780, 12865, 12950, 12952, 12954, 12956, 12958, 12960, 13057, 13082, 13083, 13085, 13087, 13089, 13114, 13116, 13118, 13212, 13237, 13326, 13455, 13466, 13595, 13717, 13718, 13719, 13728, 13737, 13738, 13739, 13833, 13834, 13835, 13836, 13930, 13932, 13933, 13934, 13935, 14029, 14085, 14141, 14142, 14198, 14254, 14255, 14302, 14396, 14490, 14491, 14492, 14586, 14642, 14698, 14699, 14746, 14748, 14842, 14919, 14975, 15031, 15087, 15088, 15215, 15342, 15343, 15470, 15471, 15598, 15725, 15852, 15979, 15980, 16107, 16234, 16361, 16488, 16615, 16742, 16743, 16744, 16800, 16801, 16895, 16984, 17113, 17124, 17253, 17375, 17376, 17377, 17386, 17395, 17396, 17397, 17491, 17492, 17493, 17494, 17588, 17590, 17591, 17592, 17593, 17687, 17743, 17799, 17800, 17856, 17912, 17913, 17960, 18054, 18148, 18149, 18150, 18244, 18300, 18356, 18357, 18404, 18406, 18500, 18577, 18633, 18689, 18745, 18746, 18873, 19000, 19001, 19128, 19129, 19256, 19383, 19510, 19637, 19638, 19765, 19892, 20019, 20146, 20273, 20400, 20401, 20402, 20458, 20459, 20553, 20578, 20606, 20700, 20728, 20765, 20854, 20983, 20994, 21123, 21151, 21188, 21213, 21302, 21431, 21442, 21571, 21605, 21630, 21689, 21748, 21778, 21907, 21918, 22047, 22176, 22305, 22434, 22459, 22460, 22527, 22529, 22531, 22660, 22789, 22800, 22802, 22804, 22806, 22808, 22810, 22813, 22815, 22882, 22884, 22887, 23016, 23145, 23274, 23403, 23532, 23661, 23790, 23792, 23794, 23923, 24052, 24181, 24310, 24439, 24568, 24697, 24826, 24955, 25084, 25213, 25342, 25471, 25600, 25729, 25858, 25987, 26116, 26245, 26374, 26503, 26632, 26761, 26890, 27019, 27148, 27277, 27406, 27535, 27664, 27793, 27922, 28051, 28180, 28309, 28438, 28567, 28696, 28825, 28954, 29083, 29212, 29341, 29470, 29599, 29728, 29857, 29986, 30115, 30244, 30373, 30502, 30631, 30760, 30889, 31018, 31147, 31276, 31405, 31534, 31663, 31792, 31921, 32050, 32179, 32308, 32437, 32566, 32695, 32824, 32953, 33082, 33211, 33340, 33469, 33598, 33727, 33856, 33985, 34114, 34243, 34372, 34501, 34503, 34632, 34761, 34786, 34788, 34790, 34792, 34794, 34795, 34924, 35053, 35055, 35056, 35081, 35082, 35149, 35151, 35153, 35155, 35157, 35159, 35162, 35164, 35231, 35233, 35236, 35365, 35367, 35369, 35371, 35499, 35628, 35691, 35745, 35799, 35800, 35854, 35909, 35911, 35913, 35915, 35940, 35941, 36070, 36071, 36188, 36189, 36191, 36193, 36194, 36248, 36250, 36252, 36254, 36279, 36281, 36410, 36412, 36414, 36416, 36418, 36547, 36676, 36805, 36806, 36935, 36937, 37062, 37087, 37089, 37091, 37093, 37094, 37096, 37097, 37226, 37355, 37380, 37381, 37383, 37385, 37387, 37388, 37517, 37646, 37775, 37904, 38033, 38162, 38291, 38420, 38549, 38678, 38807, 38936, 39065, 39194, 39323, 39452, 39581, 39710, 39715, 39716, 39783, 39785, 39786, 39787, 39788, 39813, 39815, 39840, 39907, 39909, 39911, 40040, 40065, 40066, 40087, 40089, 40174, 40259, 40344, 40346, 40348, 40350, 40378, 40507, 40636, 40638, 40639, 40706, 40709, 40710, 40711, 40712, 40713, 40780, 40909, 40920, 40922, 40924, 40926, 40929, 40931, 40933, 40936, 41065, 41076, 41205, 41207, 41209, 41212, 41213, 41239, 41270, 41272, 41274, 41341, 41344, 41468, 41469, 41598, 41727, 41849, 41850, 41851, 41860, 41869, 41870, 41871, 41965, 41966, 41967, 41968, 42062, 42064, 42065, 42066, 42067, 42161, 42217, 42273, 42274, 42330, 42386, 42387, 42434, 42528, 42622, 42623, 42624, 42718, 42774, 42830, 42831, 42878, 42880, 42974, 43051, 43107, 43163, 43219, 43220, 43347, 43474, 43475, 43602, 43603, 43730, 43857, 43984, 44111, 44112, 44239, 44366, 44493, 44620, 44747, 44874, 45001, 45128, 45255, 45382, 45509, 45636, 45763, 45890, 46017, 46144, 46271, 46398, 46525, 46526, 46527, 46583, 46584, 46713, 46842, 46971, 46972, 46974, 46975, 47104, 47233, 47362, 47491, 47620, 47749, 47878, 48007, 48136, 48265, 48394, 48523, 48652, 48781, 48910, 49039, 49168, 49297, 49426, 49555, 49684, 49813, 49942, 50071, 50200, 50329, 50458, 50587, 50716, 50845, 50974, 51103, 51232, 51361, 51490, 51619, 51748, 51877, 52006, 52135, 52264, 52393, 52522, 52651, 52780, 52909, 53038, 53167, 53296, 53425, 53554, 53683, 53812, 53941, 54070, 54199, 54328, 54457, 54586, 54715, 54844, 54911, 55040, 55169, 55298, 55427, 55556, 55685, 55814, 55943, 56072, 56201, 56330, 56459, 56588, 56717, 56846, 56975, 57104, 57233, 57362, 57491, 57620, 57749, 57878, 58007, 58136, 58137, 58202, 58296, 58321, 58322, 58324, 58326, 58328, 58329, 58458, 58587, 58612, 58613, 58615, 58617, 58619, 58620, 58749, 58878, 58880, 58881, 58906, 58907, 58974, 58976, 58978, 59107, 59236, 59247, 59249, 59274, 59275, 59276, 59297, 59300, 59313, 59315, 59317, 59372, 59421, 59497, 59565, 59581, 59640, 59642, 59643, 59649, 59650, 59651, 59719, 59787, 59855, 59923, 59934, 59936, 59937, 59943, 59945, 59946, 59947, 60015, 60083, 60151, 60219, 60287, 60355, 60423, 60491, 60561, 60629, 60699, 60767, 60769, 60772, 60774, 60841, 60843, 60846, 60975, 61104, 61105, 61234, 61363, 61492, 61621, 61750, 61879, 61880, 61882, 61883, 61884, 62013, 62142, 62271, 62400, 62529, 62658, 62787, 62916, 63045, 63174, 63303, 63432, 63561, 63690, 63819, 63948, 64077, 64206, 64335, 64464, 64593, 64722, 64851, 64980, 65109, 65238, 65367, 65496, 65625, 65754, 65883, 66012, 66141, 66270, 66399, 66528, 66657, 66742, 66871, 67000, 67129, 67258, 67387, 67516, 67645, 67774, 67903, 68032, 68161, 68290, 68419, 68548, 68677, 68806, 68935, 69064, 69193, 69322, 69451, 69580, 69709, 69838, 69967, 70096, 70225, 70354, 70483, 70612, 70741, 70870, 70999, 71128, 71257, 71386, 71515, 71644, 71773, 71902, 72031, 72160, 72289, 72418, 72547, 72676, 72805, 72934, 73063, 73192, 73321, 73450, 73579, 73708, 73837, 73966, 74095, 74224, 74353, 74482, 74611, 74740, 74869, 74998, 75127, 75128, 75193, 75194, 75279, 75364, 75449, 75451, 75453, 75455, 75457, 75459, 75512, 75514, 75607, 75709, 75801]]; + $send(self, '_lex_index_offsets=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + + self.$attr_accessor("_lex_indicies"); + return self.$private("_lex_indicies", "_lex_indicies="); + })(Opal.get_singleton_class(self), $nesting); + + $writer = [[1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 12, 14, 12, 14, 14, 12, 12, 14, 14, 14, 15, 14, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 14, 12, 12, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 14, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 14, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 12, 12, 12, 12, 12, 12, 18, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 19, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 20, 19, 22, 22, 22, 19, 22, 22, 22, 22, 22, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 24, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 25, 22, 19, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 25, 22, 19, 27, 27, 27, 19, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 19, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 29, 27, 19, 30, 30, 30, 19, 30, 30, 30, 30, 30, 31, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 19, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 32, 30, 19, 30, 30, 30, 19, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 19, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 32, 30, 19, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 33, 20, 19, 34, 34, 34, 19, 34, 34, 34, 34, 34, 35, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 19, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 36, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 37, 34, 34, 34, 34, 34, 34, 38, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 39, 34, 19, 34, 34, 34, 19, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 19, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 39, 34, 40, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 41, 19, 41, 19, 19, 42, 42, 42, 19, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 19, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 44, 42, 19, 22, 22, 22, 19, 22, 22, 22, 22, 22, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 25, 22, 19, 45, 45, 45, 19, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 19, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 45, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 49, 49, 47, 49, 47, 49, 49, 47, 47, 49, 49, 49, 50, 49, 49, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 49, 49, 49, 49, 49, 49, 49, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 49, 47, 47, 48, 49, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 49, 47, 48, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 47, 47, 47, 47, 47, 47, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 47, 47, 47, 47, 49, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 47, 47, 47, 47, 47, 49, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 47, 47, 47, 47, 47, 47, 53, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 48, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 47, 48, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 47, 47, 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 48, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 47, 48, 54, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 55, 54, 57, 57, 57, 54, 57, 57, 57, 57, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 59, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 60, 57, 54, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 61, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 60, 57, 54, 62, 62, 62, 54, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 54, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 54, 65, 65, 65, 54, 65, 65, 65, 65, 65, 66, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 54, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 67, 65, 54, 65, 65, 65, 54, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 54, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 67, 65, 54, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 68, 55, 54, 69, 69, 69, 54, 69, 69, 69, 69, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 54, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 71, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 72, 69, 69, 69, 69, 69, 69, 73, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 74, 69, 54, 69, 69, 69, 54, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 54, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 74, 69, 75, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 76, 54, 76, 54, 54, 77, 77, 77, 54, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 54, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 79, 77, 54, 57, 57, 57, 54, 57, 57, 57, 57, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 61, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 60, 57, 54, 80, 80, 80, 54, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 54, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 80, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 84, 84, 82, 84, 82, 84, 84, 82, 82, 84, 84, 84, 85, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 84, 84, 84, 84, 84, 84, 84, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 84, 82, 82, 83, 84, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 84, 82, 83, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 82, 82, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 84, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 82, 84, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 82, 82, 82, 82, 82, 82, 88, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 83, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 82, 83, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 83, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 82, 83, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 91, 89, 91, 89, 91, 91, 89, 89, 91, 91, 91, 92, 91, 91, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 91, 91, 91, 91, 91, 91, 91, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 91, 89, 89, 90, 91, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 91, 89, 90, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 89, 89, 89, 89, 89, 89, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 89, 89, 89, 89, 91, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 89, 89, 89, 89, 89, 91, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 89, 89, 89, 89, 89, 89, 95, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 90, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 89, 90, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 89, 89, 89, 89, 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 90, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 89, 90, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 97, 97, 98, 97, 98, 97, 97, 98, 98, 97, 97, 97, 99, 97, 97, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 97, 97, 97, 97, 97, 97, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 98, 97, 98, 98, 96, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 98, 98, 98, 97, 98, 96, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 98, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 97, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 102, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 98, 98, 98, 98, 98, 98, 98, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 98, 98, 98, 98, 103, 98, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 98, 98, 98, 98, 98, 103, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104, 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104, 104, 105, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104, 104, 104, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 110, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 111, 108, 108, 108, 108, 110, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 108, 108, 108, 108, 109, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 108, 108, 108, 108, 108, 109, 111, 108, 108, 112, 113, 108, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 116, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 114, 114, 114, 114, 116, 114, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 114, 114, 114, 114, 115, 114, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 114, 114, 114, 114, 114, 115, 117, 114, 119, 118, 120, 118, 121, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 123, 118, 123, 123, 123, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 123, 118, 118, 118, 118, 124, 125, 118, 126, 118, 127, 128, 129, 130, 131, 124, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 132, 118, 133, 129, 134, 135, 118, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 136, 137, 129, 138, 122, 118, 122, 122, 122, 122, 122, 122, 122, 122, 139, 122, 122, 122, 122, 122, 122, 122, 122, 140, 122, 122, 141, 122, 142, 122, 122, 122, 143, 144, 118, 138, 118, 122, 118, 118, 118, 118, 118, 118, 118, 118, 118, 145, 118, 145, 145, 145, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 145, 118, 118, 118, 118, 146, 147, 118, 148, 118, 149, 150, 151, 152, 153, 146, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 154, 118, 155, 151, 156, 157, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 158, 159, 151, 120, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 160, 115, 115, 115, 115, 115, 115, 115, 115, 161, 115, 115, 162, 115, 163, 115, 115, 115, 164, 165, 118, 120, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 166, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 167, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 168, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 169, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 170, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 166, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 171, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 172, 115, 115, 115, 115, 115, 115, 115, 173, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 174, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 175, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 166, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 176, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 166, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 177, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 178, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 170, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 180, 179, 181, 179, 182, 179, 151, 179, 183, 179, 179, 179, 179, 179, 179, 179, 184, 179, 185, 179, 186, 179, 151, 179, 187, 179, 151, 179, 188, 179, 182, 179, 190, 189, 191, 191, 191, 191, 191, 191, 191, 191, 191, 193, 191, 193, 193, 193, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 193, 191, 191, 191, 191, 191, 191, 191, 194, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 191, 195, 191, 191, 192, 191, 192, 192, 192, 196, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 191, 191, 191, 191, 191, 192, 197, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 199, 191, 199, 199, 199, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 199, 191, 191, 191, 191, 191, 191, 191, 200, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 191, 201, 191, 191, 198, 191, 198, 198, 198, 202, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 191, 191, 191, 191, 191, 198, 204, 203, 204, 204, 204, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 204, 203, 203, 203, 203, 203, 203, 203, 205, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 206, 203, 207, 203, 208, 203, 208, 208, 208, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 208, 203, 203, 203, 203, 203, 203, 203, 209, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 210, 203, 211, 212, 214, 213, 215, 213, 216, 213, 217, 213, 218, 213, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 220, 220, 220, 220, 220, 220, 220, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 220, 220, 220, 220, 220, 220, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 220, 220, 220, 220, 220, 219, 221, 211, 222, 223, 222, 222, 222, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 222, 211, 211, 224, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 226, 211, 227, 228, 227, 227, 227, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 227, 211, 211, 229, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 231, 211, 233, 234, 233, 233, 233, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 233, 232, 232, 235, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 237, 232, 239, 240, 239, 239, 239, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 238, 238, 241, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 243, 238, 239, 244, 239, 239, 239, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 238, 238, 241, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 243, 238, 223, 211, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 247, 247, 245, 247, 245, 247, 247, 245, 245, 247, 247, 247, 248, 247, 247, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 247, 247, 247, 247, 247, 247, 247, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 245, 247, 245, 245, 246, 247, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 245, 245, 245, 247, 245, 246, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 245, 245, 245, 245, 245, 245, 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 245, 245, 245, 245, 247, 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 245, 245, 245, 245, 245, 247, 250, 247, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 247, 245, 250, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 252, 245, 245, 245, 245, 253, 245, 245, 245, 245, 245, 254, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 221, 245, 245, 245, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 245, 245, 245, 245, 251, 255, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 245, 245, 245, 254, 245, 251, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 258, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 257, 257, 257, 257, 257, 257, 257, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 257, 257, 257, 257, 256, 257, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 257, 257, 257, 257, 257, 256, 260, 259, 263, 262, 258, 257, 263, 264, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 252, 245, 245, 245, 245, 253, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 245, 245, 245, 245, 251, 255, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 245, 245, 245, 245, 245, 251, 266, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 263, 265, 263, 266, 267, 268, 268, 268, 267, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 267, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 269, 268, 267, 270, 270, 270, 267, 270, 270, 270, 270, 270, 271, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 267, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 272, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 273, 270, 267, 270, 270, 270, 267, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 267, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 274, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 273, 270, 267, 275, 275, 275, 267, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 267, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 277, 275, 267, 278, 278, 278, 267, 278, 278, 278, 278, 278, 279, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 267, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 280, 278, 267, 278, 278, 278, 267, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 267, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 280, 278, 267, 268, 268, 268, 267, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 267, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 281, 268, 267, 282, 282, 282, 267, 282, 282, 282, 282, 282, 283, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 267, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 284, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 285, 282, 282, 282, 282, 282, 282, 286, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 287, 282, 267, 282, 282, 282, 267, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 267, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 287, 282, 288, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 289, 267, 289, 267, 267, 290, 290, 290, 267, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 267, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 292, 290, 267, 270, 270, 270, 267, 270, 270, 270, 270, 270, 271, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 267, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 274, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 273, 270, 267, 293, 293, 293, 267, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 267, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 293, 293, 293, 293, 293, 293, 293, 294, 294, 294, 294, 294, 294, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 294, 294, 294, 294, 294, 294, 293, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 296, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 211, 211, 298, 211, 296, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 211, 211, 211, 211, 295, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 211, 211, 211, 211, 211, 295, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 296, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 245, 245, 298, 245, 296, 245, 295, 295, 295, 295, 295, 295, 299, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 295, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 245, 295, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 296, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 245, 245, 298, 245, 296, 245, 295, 295, 295, 295, 295, 295, 295, 295, 300, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 295, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 245, 295, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 296, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 245, 245, 298, 245, 296, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 301, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 295, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 245, 295, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 296, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 245, 245, 298, 245, 296, 245, 295, 295, 295, 301, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 295, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 245, 295, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 304, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 305, 302, 302, 302, 302, 304, 302, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 302, 302, 302, 302, 303, 302, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 302, 302, 302, 302, 302, 303, 305, 302, 302, 306, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 307, 307, 307, 307, 307, 307, 307, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 307, 307, 307, 307, 308, 307, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 307, 307, 307, 307, 307, 308, 310, 309, 310, 309, 309, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 309, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 309, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 309, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 313, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 313, 317, 316, 318, 316, 319, 316, 320, 316, 322, 321, 323, 321, 324, 321, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 307, 307, 307, 307, 307, 307, 307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 307, 307, 307, 307, 325, 307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 307, 307, 307, 307, 307, 325, 326, 313, 327, 328, 327, 327, 327, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 327, 313, 313, 329, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 330, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 331, 313, 332, 333, 332, 332, 332, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 332, 313, 313, 334, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 335, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 336, 313, 338, 339, 338, 338, 338, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 338, 337, 337, 340, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 341, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 342, 337, 344, 345, 344, 344, 344, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 343, 343, 346, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 347, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 348, 343, 344, 345, 344, 344, 344, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 343, 343, 346, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 349, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 348, 343, 344, 350, 344, 344, 344, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 343, 343, 346, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 347, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 348, 343, 351, 313, 328, 313, 353, 354, 353, 353, 353, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 353, 352, 352, 355, 352, 352, 356, 352, 352, 352, 352, 352, 352, 352, 357, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 358, 352, 360, 354, 360, 360, 360, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 360, 359, 359, 355, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 358, 359, 363, 362, 365, 364, 366, 361, 367, 361, 368, 352, 370, 369, 369, 369, 370, 369, 369, 369, 369, 371, 372, 371, 371, 371, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 370, 369, 369, 369, 369, 369, 371, 369, 369, 373, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 374, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 375, 369, 369, 376, 369, 371, 377, 371, 371, 371, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 371, 377, 378, 379, 380, 381, 382, 384, 383, 386, 387, 386, 386, 386, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 386, 385, 372, 383, 388, 383, 390, 389, 389, 389, 390, 389, 389, 389, 389, 391, 392, 391, 391, 391, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 390, 389, 389, 389, 389, 389, 391, 389, 389, 393, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 394, 389, 391, 395, 391, 391, 391, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 391, 395, 397, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 398, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 399, 396, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 400, 400, 400, 400, 400, 400, 400, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 400, 400, 400, 400, 13, 400, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 400, 400, 400, 400, 400, 13, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 400, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 401, 401, 401, 401, 401, 401, 401, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 401, 401, 401, 401, 17, 401, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 401, 401, 401, 401, 401, 17, 404, 403, 403, 403, 404, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 404, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 405, 405, 405, 405, 405, 405, 405, 405, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 406, 403, 403, 403, 403, 403, 403, 403, 403, 403, 407, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 408, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 409, 403, 403, 410, 403, 411, 412, 414, 414, 414, 414, 414, 414, 414, 414, 413, 415, 415, 415, 415, 415, 415, 415, 415, 413, 413, 416, 416, 42, 42, 42, 416, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 416, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 417, 42, 418, 419, 420, 420, 42, 42, 42, 420, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 420, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 421, 42, 41, 420, 422, 423, 424, 424, 27, 27, 27, 424, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 424, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 425, 27, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 424, 424, 424, 424, 424, 424, 424, 426, 426, 426, 426, 426, 426, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 426, 426, 426, 426, 426, 426, 424, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 427, 427, 427, 427, 427, 427, 427, 428, 428, 428, 428, 428, 428, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 428, 428, 428, 428, 428, 428, 427, 427, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 420, 420, 420, 420, 420, 420, 420, 429, 429, 429, 429, 429, 429, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 429, 429, 429, 429, 429, 429, 420, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 430, 430, 430, 430, 430, 430, 430, 431, 431, 431, 431, 431, 431, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 431, 431, 431, 431, 431, 431, 430, 430, 420, 20, 20, 20, 420, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 420, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 432, 20, 416, 27, 27, 27, 416, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 416, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 29, 27, 416, 433, 433, 433, 416, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 416, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 434, 433, 435, 436, 436, 433, 433, 433, 436, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 436, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 437, 433, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 436, 436, 436, 436, 436, 436, 436, 438, 438, 438, 438, 438, 438, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 438, 438, 438, 438, 438, 438, 436, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 439, 439, 439, 439, 439, 439, 439, 440, 440, 440, 440, 440, 440, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 440, 440, 440, 440, 440, 440, 439, 439, 436, 20, 20, 20, 436, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 436, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 432, 20, 441, 436, 436, 27, 27, 27, 436, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 436, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 29, 27, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 442, 442, 442, 442, 442, 442, 442, 443, 443, 443, 443, 443, 443, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 443, 443, 443, 443, 443, 443, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 444, 442, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 442, 442, 442, 442, 442, 442, 442, 445, 445, 445, 445, 445, 445, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 445, 445, 445, 445, 445, 445, 442, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 442, 442, 442, 442, 442, 442, 442, 446, 446, 446, 446, 446, 446, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 446, 446, 446, 446, 446, 446, 442, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 442, 442, 442, 442, 442, 442, 442, 447, 447, 447, 447, 447, 447, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 447, 447, 447, 447, 447, 447, 442, 448, 451, 450, 450, 450, 451, 450, 450, 450, 450, 452, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 451, 450, 450, 450, 450, 450, 452, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 450, 450, 450, 450, 450, 450, 450, 453, 453, 453, 453, 453, 453, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 453, 453, 453, 453, 453, 453, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 454, 450, 451, 450, 450, 450, 451, 450, 450, 450, 450, 449, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 451, 450, 450, 450, 450, 450, 449, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 450, 450, 450, 450, 450, 450, 450, 455, 455, 455, 455, 455, 455, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 455, 455, 455, 455, 455, 455, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 456, 450, 449, 451, 455, 455, 455, 451, 455, 455, 455, 455, 449, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 451, 455, 455, 455, 455, 455, 449, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 449, 455, 457, 451, 458, 458, 458, 451, 458, 458, 458, 458, 452, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 452, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 449, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 458, 458, 458, 458, 458, 458, 458, 455, 455, 455, 455, 455, 455, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 455, 455, 455, 455, 455, 455, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 458, 458, 458, 458, 458, 458, 458, 460, 460, 460, 460, 460, 460, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 460, 460, 460, 460, 460, 460, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 462, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 458, 458, 458, 458, 458, 458, 458, 463, 463, 463, 463, 463, 463, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 463, 463, 463, 463, 463, 463, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 458, 458, 458, 458, 458, 458, 458, 464, 464, 464, 464, 464, 464, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 464, 464, 464, 464, 464, 464, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 458, 458, 458, 458, 458, 458, 458, 465, 465, 465, 465, 465, 465, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 465, 465, 465, 465, 465, 465, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 458, 458, 458, 458, 458, 458, 458, 466, 466, 466, 466, 466, 466, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 466, 466, 466, 466, 466, 466, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 449, 458, 468, 469, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 470, 470, 470, 470, 470, 470, 470, 471, 471, 471, 471, 471, 471, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 471, 471, 471, 471, 471, 471, 470, 470, 473, 472, 472, 472, 473, 472, 472, 472, 472, 472, 474, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 473, 472, 472, 472, 472, 472, 472, 472, 472, 475, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 476, 472, 478, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 479, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 480, 477, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 481, 481, 481, 481, 481, 481, 481, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 481, 481, 481, 481, 48, 481, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 481, 481, 481, 481, 481, 48, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 481, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 482, 482, 482, 482, 482, 482, 482, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 482, 482, 482, 482, 52, 482, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 482, 482, 482, 482, 482, 52, 485, 484, 484, 484, 485, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 485, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 486, 486, 486, 486, 486, 486, 486, 486, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 487, 484, 484, 484, 484, 484, 484, 484, 484, 484, 488, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 489, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 490, 484, 484, 491, 484, 492, 493, 495, 495, 495, 495, 495, 495, 495, 495, 494, 496, 496, 496, 496, 496, 496, 496, 496, 494, 494, 497, 497, 77, 77, 77, 497, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 497, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 498, 77, 499, 500, 501, 501, 77, 77, 77, 501, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 501, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 502, 77, 76, 501, 503, 504, 505, 505, 62, 62, 62, 505, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 505, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 506, 62, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 505, 505, 505, 505, 505, 505, 505, 507, 507, 507, 507, 507, 507, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 507, 507, 507, 507, 507, 507, 505, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 508, 508, 508, 508, 508, 508, 508, 509, 509, 509, 509, 509, 509, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 509, 509, 509, 509, 509, 509, 508, 508, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 501, 501, 501, 501, 501, 501, 501, 510, 510, 510, 510, 510, 510, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 510, 510, 510, 510, 510, 510, 501, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 511, 511, 511, 511, 511, 511, 511, 512, 512, 512, 512, 512, 512, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 512, 512, 512, 512, 512, 512, 511, 511, 501, 55, 55, 55, 501, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 501, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 513, 55, 497, 62, 62, 62, 497, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 497, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 497, 514, 514, 514, 497, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 497, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 515, 514, 516, 517, 517, 514, 514, 514, 517, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 517, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 518, 514, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 517, 517, 517, 517, 517, 517, 517, 519, 519, 519, 519, 519, 519, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 519, 519, 519, 519, 519, 519, 517, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 520, 520, 520, 520, 520, 520, 520, 521, 521, 521, 521, 521, 521, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 521, 521, 521, 521, 521, 521, 520, 520, 517, 55, 55, 55, 517, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 517, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 513, 55, 522, 517, 517, 62, 62, 62, 517, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 517, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 523, 523, 523, 523, 523, 523, 523, 524, 524, 524, 524, 524, 524, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 524, 524, 524, 524, 524, 524, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 525, 523, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 523, 523, 523, 523, 523, 523, 523, 526, 526, 526, 526, 526, 526, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 526, 526, 526, 526, 526, 526, 523, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 523, 523, 523, 523, 523, 523, 523, 527, 527, 527, 527, 527, 527, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 527, 527, 527, 527, 527, 527, 523, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 523, 523, 523, 523, 523, 523, 523, 528, 528, 528, 528, 528, 528, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 528, 528, 528, 528, 528, 528, 523, 529, 532, 531, 531, 531, 532, 531, 531, 531, 531, 533, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 532, 531, 531, 531, 531, 531, 533, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 531, 531, 531, 531, 531, 531, 531, 534, 534, 534, 534, 534, 534, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 534, 534, 534, 534, 534, 534, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 535, 531, 532, 531, 531, 531, 532, 531, 531, 531, 531, 530, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 532, 531, 531, 531, 531, 531, 530, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 531, 531, 531, 531, 531, 531, 531, 536, 536, 536, 536, 536, 536, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 536, 536, 536, 536, 536, 536, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 537, 531, 530, 532, 536, 536, 536, 532, 536, 536, 536, 536, 530, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 532, 536, 536, 536, 536, 536, 530, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 530, 536, 538, 532, 539, 539, 539, 532, 539, 539, 539, 539, 533, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 533, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 530, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 530, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 530, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 539, 539, 539, 539, 539, 539, 539, 536, 536, 536, 536, 536, 536, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 536, 536, 536, 536, 536, 536, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 539, 539, 539, 539, 539, 539, 539, 541, 541, 541, 541, 541, 541, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 541, 541, 541, 541, 541, 541, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 543, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 539, 539, 539, 539, 539, 539, 539, 544, 544, 544, 544, 544, 544, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 544, 544, 544, 544, 544, 544, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 539, 539, 539, 539, 539, 539, 539, 545, 545, 545, 545, 545, 545, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 545, 545, 545, 545, 545, 545, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 539, 539, 539, 539, 539, 539, 539, 546, 546, 546, 546, 546, 546, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 546, 546, 546, 546, 546, 546, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 539, 539, 539, 539, 539, 539, 539, 547, 547, 547, 547, 547, 547, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 547, 547, 547, 547, 547, 547, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 530, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 530, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 530, 539, 549, 550, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 551, 551, 551, 551, 551, 551, 551, 552, 552, 552, 552, 552, 552, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 552, 552, 552, 552, 552, 552, 551, 551, 554, 553, 553, 553, 554, 553, 553, 553, 553, 555, 556, 555, 555, 555, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 554, 553, 553, 553, 553, 553, 555, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 557, 553, 555, 558, 555, 555, 555, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 555, 558, 559, 560, 560, 560, 559, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 559, 560, 562, 561, 561, 561, 562, 561, 561, 561, 561, 561, 563, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 562, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 564, 561, 565, 566, 566, 566, 565, 566, 566, 566, 566, 566, 567, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 565, 566, 569, 568, 568, 568, 569, 568, 568, 568, 568, 568, 570, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 569, 568, 568, 568, 568, 568, 568, 568, 568, 571, 568, 573, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 574, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 575, 572, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 576, 576, 576, 576, 576, 576, 576, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 576, 576, 576, 576, 83, 576, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 576, 576, 576, 576, 576, 83, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 576, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 577, 577, 577, 577, 577, 577, 577, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 577, 577, 577, 577, 87, 577, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 577, 577, 577, 577, 577, 87, 579, 578, 578, 578, 579, 578, 578, 578, 578, 578, 580, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 579, 578, 582, 581, 581, 581, 582, 581, 581, 581, 581, 583, 584, 583, 583, 583, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 582, 581, 581, 581, 581, 581, 583, 581, 581, 585, 581, 583, 586, 583, 583, 583, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 583, 586, 588, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 589, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 590, 587, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 591, 591, 591, 591, 591, 591, 591, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 591, 591, 591, 591, 90, 591, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 591, 591, 591, 591, 591, 90, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 591, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 592, 592, 592, 592, 592, 592, 592, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 592, 592, 592, 592, 94, 592, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 592, 592, 592, 592, 592, 94, 594, 593, 593, 593, 594, 593, 593, 593, 593, 595, 596, 595, 595, 595, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 594, 593, 593, 593, 593, 593, 595, 593, 595, 597, 595, 595, 595, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 595, 597, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 598, 598, 598, 598, 598, 598, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 598, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 600, 600, 600, 600, 600, 600, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 600, 601, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 602, 98, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 603, 603, 603, 603, 603, 603, 603, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 603, 603, 603, 603, 96, 603, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 603, 603, 603, 603, 603, 96, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 603, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 604, 604, 604, 604, 604, 604, 604, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 604, 604, 604, 604, 101, 604, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 604, 604, 604, 604, 604, 101, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 605, 605, 605, 605, 605, 605, 605, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 605, 605, 605, 605, 103, 605, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 605, 605, 605, 605, 605, 103, 607, 608, 608, 608, 607, 608, 608, 608, 608, 609, 610, 609, 609, 609, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 607, 608, 608, 608, 608, 608, 609, 611, 608, 612, 613, 614, 615, 608, 608, 608, 616, 617, 608, 617, 608, 618, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 619, 608, 620, 621, 622, 608, 608, 623, 624, 623, 623, 625, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 626, 627, 608, 618, 628, 618, 629, 630, 631, 632, 633, 634, 606, 606, 635, 606, 606, 606, 636, 637, 638, 606, 606, 639, 640, 641, 642, 606, 643, 606, 644, 606, 608, 645, 608, 617, 608, 606, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 647, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 646, 646, 646, 647, 646, 647, 646, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 646, 646, 646, 646, 606, 646, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 646, 646, 646, 646, 646, 606, 609, 648, 609, 609, 609, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 609, 648, 649, 618, 650, 650, 618, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 618, 650, 651, 652, 653, 654, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 105, 105, 655, 105, 655, 105, 105, 655, 655, 105, 105, 105, 657, 105, 105, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 105, 105, 105, 105, 105, 105, 105, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 655, 105, 655, 655, 656, 105, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 655, 655, 655, 105, 655, 656, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 659, 659, 659, 659, 659, 659, 659, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 659, 659, 659, 659, 656, 659, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 659, 659, 659, 659, 659, 656, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 659, 660, 650, 618, 650, 618, 650, 618, 650, 662, 661, 618, 663, 650, 618, 650, 664, 618, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 618, 655, 618, 650, 618, 618, 650, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 647, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 646, 646, 646, 647, 646, 647, 646, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 646, 646, 646, 646, 623, 646, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 646, 646, 646, 646, 646, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 623, 666, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 623, 623, 623, 667, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 623, 623, 623, 623, 623, 668, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 669, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 670, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 669, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 664, 655, 610, 655, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 672, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 673, 674, 606, 606, 606, 606, 606, 675, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 676, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 677, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 678, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 679, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 680, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 681, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 682, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 683, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 684, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 685, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 686, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 682, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 687, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 686, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 688, 606, 689, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 690, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 691, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 692, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 693, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 694, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 695, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 696, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 697, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 698, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 699, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 700, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 701, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 691, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 702, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 703, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 647, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 704, 704, 704, 647, 704, 647, 704, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 704, 704, 704, 704, 606, 704, 606, 606, 606, 606, 606, 606, 606, 606, 705, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 704, 704, 704, 704, 704, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 706, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 707, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 708, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 709, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 710, 606, 711, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 712, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 684, 606, 606, 606, 713, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 714, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 715, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 700, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 716, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 638, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 698, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 717, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 718, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 719, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 700, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 720, 606, 606, 606, 721, 606, 606, 606, 606, 606, 722, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 722, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 723, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 724, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 725, 726, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 727, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 700, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 728, 606, 606, 729, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 695, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 730, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 731, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 713, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 732, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 638, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 733, 606, 606, 606, 606, 606, 606, 606, 606, 606, 727, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 695, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 734, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 735, 606, 606, 606, 606, 606, 606, 606, 736, 606, 606, 606, 606, 606, 606, 606, 737, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 713, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 701, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 721, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 738, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 695, 606, 606, 606, 719, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 739, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 740, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 689, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 618, 650, 742, 743, 743, 743, 742, 743, 743, 743, 743, 744, 743, 744, 744, 744, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 742, 743, 743, 743, 743, 743, 744, 743, 743, 745, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 746, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 743, 747, 743, 743, 741, 743, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 743, 743, 743, 743, 743, 741, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 110, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 111, 748, 748, 748, 748, 110, 748, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 748, 748, 748, 748, 109, 748, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 748, 748, 748, 748, 748, 109, 744, 749, 744, 744, 744, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 744, 749, 750, 751, 752, 753, 754, 748, 755, 748, 756, 758, 759, 759, 759, 758, 759, 759, 759, 759, 760, 761, 760, 760, 760, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 758, 759, 759, 759, 759, 759, 760, 762, 759, 763, 759, 764, 765, 759, 759, 759, 766, 767, 759, 767, 759, 764, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 768, 769, 770, 759, 759, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 772, 773, 759, 764, 757, 764, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 759, 774, 759, 767, 759, 757, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 776, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 775, 775, 775, 775, 775, 776, 775, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 775, 775, 775, 775, 757, 775, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 775, 775, 775, 775, 775, 757, 778, 777, 779, 760, 780, 760, 760, 760, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 760, 780, 781, 764, 782, 782, 764, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 764, 782, 783, 784, 785, 786, 764, 782, 764, 782, 764, 782, 764, 787, 782, 764, 782, 789, 764, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 764, 788, 764, 782, 764, 764, 782, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 776, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 790, 790, 790, 790, 790, 776, 790, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 790, 790, 790, 790, 771, 790, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 790, 790, 790, 790, 790, 771, 789, 788, 761, 788, 764, 782, 792, 791, 791, 791, 792, 791, 791, 791, 791, 793, 794, 793, 793, 793, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 792, 791, 791, 791, 791, 791, 793, 791, 791, 795, 791, 120, 796, 791, 797, 791, 798, 120, 151, 799, 153, 120, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 800, 791, 801, 151, 802, 803, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 151, 804, 151, 120, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 805, 791, 791, 791, 791, 791, 791, 791, 791, 806, 791, 791, 807, 791, 808, 791, 791, 791, 164, 165, 791, 120, 791, 809, 809, 809, 809, 809, 809, 809, 809, 809, 793, 809, 793, 793, 793, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 793, 809, 809, 809, 809, 146, 147, 809, 148, 809, 149, 150, 151, 152, 153, 146, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 154, 809, 155, 151, 156, 157, 809, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 158, 159, 151, 120, 115, 809, 115, 115, 115, 115, 115, 115, 115, 115, 160, 115, 115, 115, 115, 115, 115, 115, 115, 161, 115, 115, 162, 115, 163, 115, 115, 115, 164, 165, 809, 120, 809, 115, 810, 811, 811, 811, 810, 811, 811, 811, 811, 151, 812, 151, 151, 151, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 810, 811, 811, 811, 811, 811, 151, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 151, 811, 151, 812, 151, 151, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 114, 114, 114, 114, 114, 120, 114, 114, 114, 114, 114, 114, 114, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 114, 151, 812, 151, 151, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 114, 813, 151, 812, 151, 151, 151, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 151, 814, 814, 814, 814, 814, 814, 814, 814, 814, 815, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 151, 814, 151, 812, 151, 151, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 151, 114, 816, 810, 151, 810, 818, 817, 820, 821, 820, 820, 820, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 820, 819, 822, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 116, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 810, 810, 810, 810, 116, 810, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 810, 810, 810, 810, 115, 810, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 810, 810, 810, 810, 810, 115, 823, 151, 812, 151, 151, 151, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 151, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 151, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 120, 810, 824, 825, 826, 827, 828, 829, 151, 812, 151, 151, 151, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 151, 810, 810, 810, 810, 810, 810, 810, 810, 810, 120, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 151, 810, 151, 817, 120, 830, 120, 830, 831, 832, 831, 831, 831, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 831, 819, 833, 830, 834, 834, 834, 834, 834, 834, 834, 834, 834, 123, 834, 123, 123, 123, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 123, 834, 834, 834, 834, 124, 125, 834, 126, 834, 127, 128, 129, 130, 131, 124, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 132, 834, 133, 129, 134, 135, 834, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 136, 137, 129, 138, 122, 834, 122, 122, 122, 122, 122, 122, 122, 122, 139, 122, 122, 122, 122, 122, 122, 122, 122, 140, 122, 122, 141, 122, 142, 122, 122, 122, 143, 144, 834, 138, 834, 122, 151, 830, 835, 830, 836, 830, 837, 830, 838, 190, 190, 190, 838, 190, 190, 190, 190, 839, 190, 839, 839, 839, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 838, 190, 190, 190, 190, 190, 839, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 190, 840, 190, 190, 192, 190, 192, 192, 192, 196, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 190, 190, 190, 190, 190, 192, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 841, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 190, 189, 189, 189, 189, 841, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 189, 189, 189, 189, 192, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 189, 189, 189, 189, 189, 192, 842, 842, 842, 842, 842, 842, 842, 842, 842, 193, 842, 193, 193, 193, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 193, 842, 842, 842, 842, 842, 842, 842, 194, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 842, 195, 842, 842, 192, 842, 192, 192, 192, 196, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 842, 842, 842, 842, 842, 192, 843, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 841, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 190, 842, 842, 842, 842, 841, 842, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 842, 842, 842, 842, 192, 842, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 844, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 842, 842, 842, 842, 842, 192, 197, 842, 846, 845, 845, 845, 846, 845, 845, 845, 845, 847, 845, 847, 847, 847, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 846, 845, 845, 845, 845, 845, 847, 845, 845, 848, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 849, 845, 845, 845, 845, 845, 845, 845, 850, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 851, 845, 847, 852, 847, 847, 847, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 847, 852, 853, 854, 855, 856, 858, 857, 859, 860, 857, 861, 863, 864, 864, 864, 863, 864, 864, 864, 864, 865, 866, 865, 865, 865, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 863, 864, 864, 864, 864, 864, 865, 864, 864, 867, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 864, 868, 864, 864, 862, 864, 862, 862, 862, 862, 862, 862, 862, 862, 869, 862, 862, 862, 862, 862, 862, 862, 862, 870, 862, 862, 871, 862, 872, 862, 862, 862, 864, 864, 864, 864, 864, 862, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 873, 873, 873, 873, 873, 873, 873, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 873, 873, 873, 873, 862, 873, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 873, 873, 873, 873, 873, 862, 865, 874, 865, 865, 865, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 865, 874, 875, 876, 877, 878, 879, 881, 880, 882, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 884, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 885, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 886, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 887, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 888, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 884, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 889, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 890, 862, 862, 862, 862, 862, 862, 862, 891, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 892, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 893, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 884, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 894, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 884, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 895, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 896, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 888, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 898, 221, 221, 221, 898, 221, 221, 221, 221, 899, 900, 899, 899, 899, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 898, 221, 221, 221, 221, 221, 899, 901, 221, 902, 221, 903, 904, 221, 905, 221, 906, 907, 221, 908, 909, 910, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 911, 221, 912, 913, 914, 915, 221, 916, 917, 916, 916, 918, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 919, 920, 221, 921, 922, 221, 923, 924, 925, 926, 927, 928, 897, 897, 929, 897, 897, 897, 930, 931, 932, 897, 897, 933, 934, 935, 936, 897, 937, 897, 938, 897, 939, 940, 221, 921, 221, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 945, 944, 944, 946, 944, 947, 949, 950, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 951, 948, 953, 952, 954, 955, 956, 899, 957, 899, 899, 899, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 899, 957, 959, 958, 961, 962, 961, 961, 961, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 961, 960, 221, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 221, 963, 964, 965, 966, 967, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 969, 969, 969, 969, 969, 969, 969, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 969, 969, 969, 969, 969, 969, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 969, 969, 969, 969, 969, 968, 972, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 221, 971, 973, 975, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 221, 974, 221, 211, 222, 223, 222, 222, 222, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 222, 971, 971, 224, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 971, 971, 971, 221, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 226, 971, 239, 240, 239, 239, 239, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 238, 238, 241, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 243, 238, 222, 223, 222, 222, 222, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 222, 971, 971, 224, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 971, 971, 971, 221, 221, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 226, 971, 977, 963, 979, 978, 981, 980, 963, 982, 982, 982, 963, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 963, 982, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 984, 985, 963, 986, 247, 987, 985, 963, 963, 988, 989, 963, 989, 963, 247, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 990, 963, 991, 992, 993, 963, 994, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 995, 963, 963, 247, 983, 247, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 963, 996, 963, 997, 963, 983, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 999, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 998, 998, 998, 1000, 998, 999, 998, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 998, 998, 998, 998, 983, 998, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 998, 998, 998, 998, 998, 983, 1002, 1001, 1003, 1005, 1006, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1007, 1004, 1009, 1010, 1008, 1011, 1012, 1013, 1014, 247, 998, 998, 1015, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 247, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 998, 998, 998, 998, 998, 998, 998, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 998, 998, 998, 998, 246, 998, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 998, 998, 998, 998, 998, 246, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 998, 1016, 998, 247, 998, 247, 998, 247, 1017, 998, 247, 998, 247, 998, 247, 247, 998, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1018, 1018, 1018, 1018, 1018, 1018, 1021, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1018, 1018, 1018, 1018, 1019, 1018, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1018, 1018, 1018, 1018, 1018, 1019, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1022, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1024, 1024, 1024, 1024, 1025, 1024, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1024, 1024, 1024, 1024, 1024, 1025, 1016, 998, 1015, 998, 1027, 1028, 963, 1029, 262, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 263, 252, 264, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 263, 253, 263, 266, 221, 963, 921, 221, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 221, 963, 221, 972, 963, 1033, 1032, 1032, 1032, 1033, 1032, 1032, 1032, 1032, 1034, 1035, 1034, 1034, 1034, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1033, 1032, 1032, 1032, 1032, 1032, 1034, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1032, 1037, 1032, 1032, 1036, 1032, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1032, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1038, 1038, 1038, 1038, 1039, 1038, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1038, 1038, 1038, 1038, 1038, 1039, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1040, 1040, 1040, 1040, 1041, 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1040, 1040, 1040, 1040, 1040, 1041, 1044, 1043, 1043, 1043, 1044, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1044, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1046, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1047, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1048, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1049, 1043, 1043, 1050, 1043, 1051, 1052, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1053, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1053, 1053, 1056, 1056, 290, 290, 290, 1056, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 1056, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 1057, 290, 1058, 1059, 1060, 1060, 290, 290, 290, 1060, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 1060, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 1061, 290, 289, 1060, 1062, 1063, 1064, 1064, 275, 275, 275, 1064, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 1064, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 1065, 275, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1066, 1066, 1066, 1066, 1066, 1066, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1066, 1066, 1066, 1066, 1066, 1066, 1064, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1068, 1068, 1068, 1068, 1068, 1068, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1068, 1068, 1068, 1068, 1068, 1068, 1067, 1067, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1069, 1069, 1069, 1069, 1069, 1069, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1069, 1069, 1069, 1069, 1069, 1069, 1060, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071, 1071, 1071, 1071, 1071, 1071, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071, 1071, 1071, 1071, 1071, 1071, 1070, 1070, 1060, 268, 268, 268, 1060, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1060, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1072, 268, 1056, 275, 275, 275, 1056, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 1056, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 277, 275, 1056, 1073, 1073, 1073, 1056, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1056, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1074, 1073, 1075, 1076, 1076, 1073, 1073, 1073, 1076, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1076, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1077, 1073, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1078, 1078, 1078, 1078, 1078, 1078, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1078, 1078, 1078, 1078, 1078, 1078, 1076, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1080, 1080, 1080, 1080, 1080, 1080, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1080, 1080, 1080, 1080, 1080, 1080, 1079, 1079, 1076, 268, 268, 268, 1076, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1076, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1072, 268, 1081, 1076, 1076, 275, 275, 275, 1076, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 1076, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 277, 275, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1083, 1083, 1083, 1083, 1083, 1083, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1083, 1083, 1083, 1083, 1083, 1083, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1084, 1082, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1085, 1085, 1085, 1085, 1085, 1085, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1085, 1085, 1085, 1085, 1085, 1085, 1082, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1086, 1086, 1086, 1086, 1086, 1086, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1086, 1086, 1086, 1086, 1086, 1086, 1082, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1087, 1087, 1087, 1087, 1087, 1087, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1087, 1087, 1087, 1087, 1087, 1087, 1082, 1088, 1091, 1090, 1090, 1090, 1091, 1090, 1090, 1090, 1090, 1092, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1091, 1090, 1090, 1090, 1090, 1090, 1092, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1093, 1093, 1093, 1093, 1093, 1093, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1093, 1093, 1093, 1093, 1093, 1093, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1094, 1090, 1091, 1090, 1090, 1090, 1091, 1090, 1090, 1090, 1090, 1089, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1091, 1090, 1090, 1090, 1090, 1090, 1089, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1095, 1095, 1095, 1095, 1095, 1095, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1095, 1095, 1095, 1095, 1095, 1095, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1096, 1090, 1089, 1091, 1095, 1095, 1095, 1091, 1095, 1095, 1095, 1095, 1089, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1091, 1095, 1095, 1095, 1095, 1095, 1089, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1089, 1095, 1097, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1092, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1092, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1089, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1095, 1095, 1095, 1095, 1095, 1095, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1095, 1095, 1095, 1095, 1095, 1095, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1101, 1101, 1101, 1101, 1101, 1101, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1101, 1101, 1101, 1101, 1101, 1101, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1103, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1104, 1104, 1104, 1104, 1104, 1104, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1104, 1104, 1104, 1104, 1104, 1104, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1105, 1105, 1105, 1105, 1105, 1105, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1105, 1105, 1105, 1105, 1105, 1105, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1106, 1106, 1106, 1106, 1106, 1106, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1106, 1106, 1106, 1106, 1106, 1106, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1107, 1107, 1107, 1107, 1107, 1107, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1107, 1107, 1107, 1107, 1107, 1107, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1089, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1110, 1110, 1110, 1110, 1110, 1110, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1110, 1110, 1110, 1110, 1110, 1110, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1111, 1111, 1111, 1111, 1111, 1111, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1111, 1111, 1111, 1111, 1111, 1111, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1112, 1112, 1112, 1112, 1112, 1112, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1112, 1112, 1112, 1112, 1112, 1112, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1113, 1113, 1113, 1113, 1113, 1113, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1113, 1113, 1113, 1113, 1113, 1113, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1114, 1114, 1114, 1114, 1114, 1114, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1114, 1114, 1114, 1114, 1114, 1114, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1115, 1115, 1115, 1115, 1115, 1115, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1115, 1115, 1115, 1115, 1115, 1115, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1116, 1116, 1116, 1116, 1116, 1116, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1116, 1116, 1116, 1116, 1116, 1116, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1117, 1117, 1117, 1117, 1117, 1117, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1117, 1117, 1117, 1117, 1117, 1117, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1118, 1118, 1118, 1118, 1118, 1118, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1118, 1118, 1118, 1118, 1118, 1118, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1119, 1119, 1119, 1119, 1119, 1119, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1119, 1119, 1119, 1119, 1119, 1119, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1120, 1120, 1120, 1120, 1120, 1120, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1120, 1120, 1120, 1120, 1120, 1120, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1121, 1122, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1124, 1124, 1124, 1124, 1124, 1124, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1124, 1124, 1124, 1124, 1124, 1124, 1123, 1123, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 296, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 211, 211, 298, 211, 296, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 211, 211, 211, 211, 295, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 211, 211, 211, 211, 211, 295, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 296, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 963, 963, 298, 963, 296, 963, 295, 295, 295, 295, 1125, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 963, 963, 963, 963, 295, 963, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 963, 963, 963, 963, 963, 295, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 296, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 963, 963, 298, 963, 296, 963, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 1126, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 963, 963, 963, 963, 295, 963, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 963, 963, 963, 963, 963, 295, 1127, 1128, 963, 958, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 1129, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 1130, 1131, 897, 897, 897, 897, 897, 1132, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1133, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 1134, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1135, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 1136, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1137, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1138, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 1139, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 1140, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 1141, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 296, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 211, 211, 298, 211, 296, 211, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 211, 211, 211, 211, 897, 211, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 211, 211, 211, 211, 211, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1142, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1143, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 1139, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1144, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1143, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1145, 897, 1146, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1147, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 1148, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1149, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1150, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 1151, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1152, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1153, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 1154, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 1155, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1156, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1157, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 1158, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1148, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1159, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1160, 897, 1161, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1162, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1141, 897, 897, 897, 1159, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1163, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1164, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1157, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 1165, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 932, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1155, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 1166, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1167, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 1168, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1169, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1157, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1170, 897, 897, 897, 1171, 897, 897, 897, 897, 897, 1172, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1172, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1173, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 1174, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1175, 1176, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 1177, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1178, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1179, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1182, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1183, 1180, 1180, 1184, 1180, 1182, 1180, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1180, 1180, 1180, 1180, 1181, 1180, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1180, 1180, 1180, 1180, 1180, 1181, 949, 1185, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 951, 948, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1186, 897, 897, 1187, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1152, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1188, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1189, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1159, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1190, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 932, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 1191, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1192, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1152, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1157, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1193, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 1194, 897, 897, 897, 897, 897, 897, 897, 1195, 897, 897, 897, 897, 897, 897, 897, 1196, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1159, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1197, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1198, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1166, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1199, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1166, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 1200, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1152, 897, 897, 897, 1201, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1202, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1166, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1203, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1204, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1146, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 1205, 221, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 1206, 963, 1208, 1207, 1207, 1207, 1208, 1207, 1207, 1207, 1207, 1209, 1210, 1209, 1209, 1209, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1208, 1207, 1207, 1207, 1207, 1207, 1209, 1207, 1207, 1211, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1212, 1207, 1209, 1213, 1209, 1209, 1209, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1209, 1213, 1214, 1215, 1216, 1217, 1218, 1220, 1219, 1221, 1223, 1224, 1224, 1224, 1223, 1224, 1224, 1224, 1224, 1225, 1226, 1225, 1225, 1225, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1223, 1224, 1224, 1224, 1224, 1224, 1225, 1224, 1227, 1228, 1224, 1224, 1224, 1227, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1224, 1229, 1224, 1224, 1222, 1224, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1224, 1224, 1224, 1224, 1224, 1222, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 304, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 305, 1230, 1230, 1230, 1230, 304, 1230, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 1230, 1230, 1230, 1230, 303, 1230, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 1230, 1230, 1230, 1230, 1230, 303, 1225, 1231, 1225, 1225, 1225, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1225, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1230, 1238, 1240, 1241, 1241, 1241, 1240, 1241, 1241, 1241, 1241, 1242, 1243, 1242, 1242, 1242, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1240, 1241, 1241, 1241, 1241, 1241, 1242, 1244, 1245, 1246, 1247, 1248, 1249, 1245, 1250, 1251, 1252, 1248, 1253, 1254, 1255, 1248, 1256, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1265, 1265, 1267, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1268, 1269, 1270, 1248, 1271, 1245, 1272, 1273, 1274, 1275, 1276, 1277, 1239, 1239, 1278, 1239, 1239, 1239, 1279, 1280, 1281, 1239, 1239, 1282, 1283, 1284, 1285, 1239, 1286, 1239, 1287, 1239, 1288, 1289, 1290, 1291, 1241, 1239, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1292, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 313, 313, 313, 313, 313, 1292, 313, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 313, 313, 313, 313, 1239, 313, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 313, 313, 313, 313, 313, 1239, 1294, 1293, 1295, 1242, 1296, 1242, 1242, 1242, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1242, 1296, 1297, 1299, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1299, 1298, 1300, 1301, 1302, 1303, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 308, 308, 1304, 308, 1304, 308, 308, 1304, 1304, 308, 308, 308, 1305, 308, 308, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 308, 308, 308, 308, 308, 308, 308, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1304, 308, 1304, 1304, 325, 308, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1304, 1304, 1304, 308, 1304, 325, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1307, 1307, 1307, 1307, 325, 1307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1307, 1307, 1307, 1307, 1307, 325, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1307, 1308, 313, 1248, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1310, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1308, 1309, 1311, 1312, 1248, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1308, 1313, 1308, 1314, 1309, 1316, 1315, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 1315, 1318, 1317, 1319, 1317, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1321, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1322, 1320, 1320, 1320, 1320, 1320, 1321, 1320, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 310, 1320, 1324, 1323, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1326, 1323, 1327, 1328, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1329, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1330, 1323, 1323, 1323, 1323, 1323, 1323, 1331, 1323, 1323, 1326, 1323, 1327, 1328, 1323, 1323, 1323, 1332, 1323, 1323, 1323, 1323, 1323, 1329, 1323, 1323, 1333, 1323, 1323, 1323, 1323, 1323, 1330, 1323, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1335, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1336, 1334, 1334, 1334, 1334, 1334, 1335, 1334, 1334, 1334, 1337, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1338, 1334, 1339, 313, 1339, 313, 313, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 313, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1339, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1341, 1340, 1343, 1342, 1344, 1346, 1345, 1345, 1345, 1347, 1345, 1348, 1349, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1331, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1332, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1333, 1323, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1351, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1332, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1333, 1323, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1354, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1357, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1359, 1358, 1360, 1362, 1361, 1361, 1361, 1363, 1361, 1365, 1364, 1366, 1367, 1369, 1369, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1370, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1371, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1372, 1368, 1373, 1373, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1374, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1373, 1373, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1357, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1377, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1378, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1379, 1375, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1382, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1383, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1384, 1380, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1386, 1386, 1386, 1386, 1386, 1386, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1387, 1385, 1386, 1386, 1386, 1386, 1386, 1386, 1385, 1385, 1388, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1389, 1385, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1391, 1352, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1357, 1352, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1393, 1392, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1395, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1396, 1392, 1392, 1392, 1392, 1392, 1395, 1392, 1392, 1392, 1397, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1398, 1392, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1400, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1397, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1398, 1392, 1401, 1352, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1403, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1404, 1352, 1352, 1352, 1352, 1352, 1403, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1357, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1310, 1317, 1248, 1405, 1309, 1299, 1309, 1406, 1407, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1299, 1317, 1299, 1309, 1299, 1248, 1309, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1304, 1304, 1304, 1304, 1304, 1304, 1408, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1304, 1304, 1304, 1304, 325, 1304, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1304, 1304, 1304, 1304, 1304, 325, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1292, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 313, 313, 313, 313, 1292, 313, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 313, 313, 313, 313, 1265, 313, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 313, 313, 313, 313, 313, 1265, 1410, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1265, 1412, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1413, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1414, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1415, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1416, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1415, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1417, 1419, 1418, 1420, 1421, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1423, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1424, 1425, 1239, 1239, 1239, 1239, 1239, 1426, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1427, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1428, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1429, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1430, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1431, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1432, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1433, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1434, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1435, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1436, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1437, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1438, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1439, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1440, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1441, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1437, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1442, 1239, 1443, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1444, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1445, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1446, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1448, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1449, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1450, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1451, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1452, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1453, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1454, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1455, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1456, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1457, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1458, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1459, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1460, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 327, 328, 327, 327, 327, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 327, 1292, 1461, 329, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1461, 1461, 330, 1461, 1461, 1292, 1461, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1461, 331, 1461, 1461, 1239, 1461, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1461, 1461, 1461, 1461, 1461, 1239, 344, 345, 344, 344, 344, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 343, 343, 346, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 349, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 348, 343, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1463, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1464, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1465, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1292, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1466, 1466, 1466, 1466, 1466, 1292, 1466, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1466, 1466, 1466, 1466, 1239, 1466, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1467, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1466, 1466, 1466, 1466, 1466, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1468, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1469, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1470, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1471, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1472, 1239, 1473, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1474, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1475, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1440, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1476, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1477, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1457, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1478, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1281, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1479, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1480, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1440, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1481, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1482, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1483, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1484, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1457, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1485, 1239, 1239, 1239, 1486, 1239, 1239, 1239, 1239, 1239, 1487, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1488, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1454, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1440, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1489, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1490, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1491, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1492, 1493, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1440, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1494, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1495, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1481, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1496, 1239, 1239, 1497, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1440, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1498, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1454, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1499, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1500, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1501, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1440, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1502, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1503, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1489, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1504, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1505, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1451, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1480, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1506, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1507, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1508, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1509, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1510, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1446, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1511, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1512, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1481, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1513, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1481, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1514, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1451, 1239, 1239, 1239, 1515, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1516, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1481, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1517, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1518, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1519, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1489, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1520, 1308, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1248, 1298, 1521, 1523, 1522, 1523, 1523, 1523, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1523, 1522, 1522, 1524, 1522, 1522, 1525, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 357, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1526, 1522, 353, 354, 353, 353, 353, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 353, 1527, 1527, 355, 1527, 1527, 356, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 357, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 358, 1527, 360, 1528, 360, 360, 360, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 360, 1528, 1528, 355, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 358, 1528, 1530, 1529, 1532, 1531, 363, 362, 368, 1527, 366, 1527, 1534, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1535, 1533, 1534, 1533, 1534, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1537, 1533, 1534, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1538, 1533, 1534, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1539, 1533, 1541, 1539, 0]]; + $send(self, '_lex_indicies=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + + self.$attr_accessor("_lex_trans_targs"); + return self.$private("_lex_trans_targs", "_lex_trans_targs="); + })(Opal.get_singleton_class(self), $nesting); + + $writer = [[186, 2, 3, 4, 192, 6, 7, 8, 9, 10, 186, 186, 195, 198, 195, 12, 199, 200, 14, 195, 207, 208, 211, 212, 224, 221, 213, 214, 215, 19, 216, 217, 218, 226, 228, 229, 233, 234, 235, 230, 25, 18, 209, 210, 27, 258, 259, 261, 263, 261, 30, 264, 265, 32, 261, 272, 273, 276, 277, 289, 286, 278, 279, 280, 37, 281, 282, 283, 291, 293, 294, 298, 299, 300, 295, 43, 36, 274, 275, 45, 323, 324, 331, 333, 331, 48, 334, 335, 50, 337, 340, 337, 52, 341, 342, 54, 348, 347, 0, 56, 349, 350, 58, 351, 352, 352, 352, 352, 465, 61, 62, 63, 465, 465, 494, 65, 66, 494, 494, 498, 498, 70, 65, 71, 496, 497, 499, 500, 498, 494, 501, 502, 504, 67, 68, 505, 506, 69, 498, 72, 73, 78, 85, 508, 509, 71, 496, 497, 499, 500, 498, 494, 501, 502, 504, 67, 68, 505, 506, 69, 72, 73, 78, 85, 508, 509, 507, 74, 75, 76, 77, 79, 80, 83, 81, 82, 84, 86, 87, 494, 89, 90, 91, 93, 96, 94, 95, 97, 99, 525, 525, 525, 526, 101, 528, 102, 529, 103, 526, 101, 528, 102, 529, 563, 104, 563, 105, 106, 104, 563, 105, 563, 563, 563, 109, 110, 111, 112, 574, 563, 563, 563, 115, 116, 117, 563, 120, 115, 116, 117, 563, 120, 118, 118, 116, 117, 584, 119, 118, 118, 116, 117, 584, 119, 116, 563, 601, 563, 122, 602, 608, 126, 617, 618, 131, 132, 126, 127, 616, 127, 616, 563, 128, 129, 130, 619, 133, 563, 633, 634, 637, 638, 650, 647, 639, 640, 641, 138, 642, 643, 644, 652, 654, 655, 659, 660, 661, 656, 144, 137, 635, 636, 146, 697, 698, 148, 565, 107, 567, 150, 151, 700, 802, 153, 154, 155, 802, 810, 810, 810, 158, 832, 831, 810, 834, 836, 810, 163, 164, 165, 840, 810, 167, 168, 851, 820, 873, 171, 172, 173, 177, 178, 171, 172, 173, 177, 178, 174, 174, 172, 173, 175, 176, 174, 174, 172, 173, 175, 176, 921, 172, 810, 990, 179, 992, 181, 185, 993, 183, 990, 180, 990, 182, 992, 182, 992, 184, 992, 990, 186, 186, 187, 188, 189, 191, 193, 194, 186, 186, 186, 190, 186, 190, 186, 1, 186, 186, 186, 5, 195, 195, 196, 195, 197, 201, 195, 195, 11, 13, 195, 195, 195, 195, 202, 203, 204, 15, 21, 26, 236, 28, 195, 195, 195, 205, 206, 195, 16, 195, 195, 195, 17, 195, 195, 195, 20, 219, 195, 220, 222, 195, 223, 225, 227, 22, 195, 195, 23, 231, 195, 232, 24, 195, 237, 241, 238, 239, 240, 195, 195, 242, 243, 246, 248, 257, 244, 245, 195, 247, 249, 251, 250, 195, 252, 253, 254, 255, 256, 195, 195, 195, 260, 261, 261, 261, 262, 266, 261, 29, 31, 261, 261, 261, 261, 267, 268, 269, 33, 39, 44, 301, 46, 261, 261, 261, 270, 271, 261, 34, 261, 261, 261, 35, 261, 261, 261, 38, 284, 261, 285, 287, 261, 288, 290, 292, 40, 261, 261, 41, 296, 261, 297, 42, 261, 302, 306, 303, 304, 305, 261, 261, 307, 308, 311, 313, 322, 309, 310, 261, 312, 314, 316, 315, 261, 317, 318, 319, 320, 321, 261, 261, 261, 325, 326, 326, 327, 326, 328, 326, 326, 326, 329, 329, 329, 330, 329, 329, 329, 331, 331, 331, 332, 331, 47, 49, 331, 331, 331, 336, 336, 336, 337, 337, 338, 337, 339, 337, 337, 51, 53, 337, 337, 337, 343, 343, 344, 343, 343, 345, 346, 345, 55, 57, 347, 347, 347, 353, 352, 352, 354, 355, 356, 357, 359, 362, 363, 364, 365, 352, 366, 367, 369, 371, 372, 373, 377, 379, 380, 381, 397, 402, 409, 414, 421, 428, 431, 432, 436, 430, 440, 448, 452, 454, 459, 461, 464, 352, 352, 352, 352, 352, 352, 358, 352, 358, 352, 360, 59, 361, 352, 60, 352, 352, 368, 370, 352, 374, 375, 376, 372, 378, 352, 382, 383, 392, 395, 384, 385, 386, 387, 388, 389, 390, 391, 353, 393, 394, 396, 398, 401, 399, 400, 403, 406, 404, 405, 407, 408, 410, 412, 411, 413, 415, 416, 352, 417, 418, 419, 420, 352, 422, 425, 423, 424, 426, 427, 429, 433, 434, 435, 437, 439, 438, 441, 442, 443, 445, 444, 446, 447, 449, 450, 451, 453, 455, 456, 457, 458, 460, 462, 463, 466, 465, 465, 467, 468, 470, 471, 465, 465, 465, 469, 465, 469, 64, 472, 465, 474, 473, 473, 477, 478, 479, 480, 473, 482, 483, 484, 485, 487, 489, 490, 491, 492, 493, 473, 475, 473, 476, 473, 473, 473, 473, 473, 481, 473, 481, 486, 473, 488, 473, 494, 494, 495, 510, 511, 497, 513, 514, 501, 515, 516, 517, 518, 519, 521, 522, 523, 524, 494, 494, 494, 494, 494, 494, 498, 503, 494, 494, 494, 494, 494, 494, 494, 494, 494, 512, 494, 512, 494, 494, 494, 494, 520, 494, 88, 92, 98, 525, 527, 530, 100, 525, 525, 526, 531, 531, 532, 533, 535, 537, 538, 531, 531, 534, 531, 534, 531, 536, 531, 531, 531, 540, 539, 539, 541, 542, 543, 545, 547, 548, 553, 560, 539, 539, 539, 539, 544, 539, 544, 539, 546, 539, 539, 540, 549, 550, 551, 552, 554, 555, 558, 556, 557, 559, 561, 562, 564, 563, 572, 573, 575, 576, 578, 579, 580, 581, 583, 585, 586, 589, 590, 615, 621, 622, 623, 700, 701, 702, 703, 704, 582, 706, 723, 728, 735, 740, 742, 748, 751, 752, 756, 750, 760, 771, 775, 778, 786, 790, 793, 794, 563, 104, 105, 563, 107, 566, 563, 563, 568, 570, 571, 563, 569, 563, 563, 563, 563, 563, 108, 563, 563, 563, 563, 563, 577, 563, 577, 563, 563, 113, 563, 114, 563, 563, 582, 563, 587, 563, 588, 563, 563, 563, 591, 600, 563, 121, 603, 604, 605, 563, 606, 123, 609, 610, 124, 613, 614, 563, 592, 594, 563, 593, 563, 563, 595, 598, 599, 563, 596, 597, 563, 563, 563, 563, 563, 563, 607, 563, 601, 611, 612, 563, 611, 563, 601, 611, 125, 620, 563, 563, 563, 624, 563, 563, 563, 625, 627, 563, 626, 563, 626, 563, 628, 629, 630, 134, 140, 145, 662, 147, 563, 563, 563, 631, 632, 563, 135, 563, 563, 563, 136, 563, 563, 563, 139, 645, 563, 646, 648, 563, 649, 651, 653, 141, 563, 563, 142, 657, 563, 658, 143, 563, 663, 667, 664, 665, 666, 563, 563, 668, 669, 672, 683, 696, 670, 671, 563, 673, 674, 675, 677, 676, 563, 678, 679, 680, 681, 682, 684, 691, 685, 686, 687, 688, 689, 690, 692, 693, 694, 695, 563, 563, 563, 699, 149, 152, 563, 705, 707, 708, 718, 721, 709, 710, 711, 712, 713, 714, 715, 716, 717, 719, 720, 722, 724, 727, 725, 726, 729, 732, 730, 731, 733, 734, 736, 738, 737, 739, 741, 743, 745, 744, 746, 747, 749, 717, 753, 754, 755, 757, 759, 758, 761, 762, 763, 768, 764, 765, 766, 563, 564, 565, 107, 767, 570, 769, 770, 772, 773, 774, 776, 777, 779, 780, 781, 784, 782, 783, 785, 787, 788, 789, 791, 792, 563, 582, 795, 795, 796, 797, 798, 800, 795, 795, 795, 799, 795, 799, 795, 801, 795, 803, 802, 802, 804, 805, 802, 806, 808, 802, 802, 802, 802, 807, 802, 807, 809, 802, 811, 810, 810, 814, 815, 816, 810, 817, 819, 822, 823, 824, 825, 826, 810, 827, 828, 833, 861, 865, 810, 866, 868, 870, 810, 871, 872, 874, 878, 880, 881, 883, 884, 902, 907, 914, 922, 929, 936, 941, 942, 946, 940, 951, 961, 967, 970, 979, 983, 987, 988, 989, 822, 812, 810, 813, 810, 810, 810, 810, 810, 810, 818, 810, 818, 810, 156, 821, 810, 810, 810, 810, 810, 810, 810, 810, 810, 829, 810, 830, 810, 810, 157, 159, 810, 160, 842, 853, 856, 835, 857, 858, 843, 847, 849, 810, 835, 160, 837, 839, 161, 810, 837, 810, 838, 810, 810, 162, 841, 810, 810, 844, 846, 810, 844, 845, 847, 849, 846, 810, 848, 810, 810, 850, 852, 810, 166, 810, 810, 810, 854, 846, 847, 849, 854, 855, 810, 844, 846, 847, 849, 810, 844, 846, 847, 849, 810, 859, 846, 847, 849, 859, 860, 810, 160, 861, 835, 862, 847, 849, 863, 846, 160, 863, 835, 864, 867, 869, 810, 169, 170, 810, 810, 875, 876, 877, 872, 879, 810, 810, 882, 810, 810, 810, 885, 886, 895, 900, 887, 888, 889, 890, 891, 892, 893, 894, 811, 896, 897, 898, 899, 811, 901, 903, 906, 904, 905, 811, 811, 908, 911, 909, 910, 912, 913, 811, 915, 917, 916, 918, 919, 920, 810, 810, 923, 811, 924, 810, 925, 926, 927, 928, 812, 930, 933, 931, 932, 934, 935, 937, 938, 939, 811, 943, 944, 945, 947, 949, 950, 948, 811, 952, 953, 954, 957, 955, 956, 958, 959, 960, 962, 964, 963, 965, 966, 968, 969, 971, 972, 974, 977, 973, 975, 976, 978, 980, 981, 982, 984, 985, 986, 810, 810, 990, 991, 995, 996, 997, 990, 990, 990, 994, 990, 990, 999, 998, 1000, 998, 1001, 1002, 1003, 998, 998]]; + $send(self, '_lex_trans_targs=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + + self.$attr_accessor("_lex_trans_actions"); + return self.$private("_lex_trans_actions", "_lex_trans_actions="); + })(Opal.get_singleton_class(self), $nesting); + + $writer = [[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 0, 0, 0, 0, 6, 0, 7, 0, 8, 0, 0, 7, 0, 0, 0, 0, 8, 0, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 10, 0, 0, 0, 0, 11, 0, 7, 0, 8, 0, 0, 7, 0, 0, 0, 0, 8, 0, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 13, 0, 0, 0, 0, 14, 0, 15, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 17, 18, 19, 20, 21, 0, 0, 0, 22, 23, 24, 0, 0, 25, 26, 27, 28, 29, 30, 30, 31, 32, 30, 33, 32, 34, 32, 30, 30, 31, 30, 35, 30, 30, 36, 30, 30, 30, 30, 30, 30, 0, 37, 38, 0, 39, 38, 40, 38, 0, 0, 37, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 46, 0, 0, 0, 46, 29, 47, 30, 30, 30, 47, 48, 0, 49, 0, 29, 30, 50, 30, 51, 52, 53, 0, 0, 0, 0, 0, 54, 55, 56, 0, 29, 0, 57, 0, 30, 58, 30, 59, 30, 60, 61, 62, 61, 63, 61, 0, 64, 65, 64, 66, 64, 67, 68, 0, 69, 0, 0, 0, 0, 70, 70, 0, 0, 71, 71, 72, 0, 29, 73, 0, 0, 0, 70, 0, 74, 0, 7, 0, 8, 0, 0, 7, 0, 0, 0, 0, 8, 0, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 75, 76, 0, 0, 0, 77, 78, 79, 80, 0, 7, 7, 81, 82, 82, 83, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 30, 58, 30, 30, 30, 60, 61, 62, 61, 61, 61, 0, 64, 65, 64, 64, 64, 85, 67, 86, 87, 0, 88, 0, 89, 89, 0, 90, 0, 91, 60, 92, 0, 93, 29, 94, 95, 98, 99, 0, 29, 0, 7, 0, 7, 100, 101, 102, 60, 103, 0, 104, 0, 105, 106, 107, 0, 108, 109, 0, 110, 7, 7, 111, 112, 0, 0, 113, 114, 115, 116, 117, 117, 117, 117, 117, 117, 117, 117, 118, 119, 120, 0, 0, 121, 0, 122, 123, 124, 0, 125, 126, 127, 0, 0, 128, 0, 0, 129, 0, 7, 0, 0, 130, 131, 0, 0, 132, 0, 29, 133, 0, 0, 0, 0, 0, 134, 135, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 138, 139, 140, 0, 141, 142, 143, 7, 7, 144, 0, 0, 145, 146, 147, 148, 117, 117, 117, 117, 117, 117, 117, 117, 149, 150, 151, 0, 0, 152, 0, 153, 154, 155, 0, 156, 157, 158, 0, 0, 159, 0, 0, 160, 0, 7, 0, 0, 161, 162, 0, 0, 163, 0, 29, 164, 0, 0, 0, 0, 0, 165, 166, 0, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 169, 170, 171, 0, 172, 173, 0, 174, 0, 175, 176, 177, 178, 179, 180, 0, 181, 182, 183, 184, 185, 186, 7, 187, 0, 0, 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, 7, 197, 198, 0, 0, 199, 200, 201, 202, 203, 0, 204, 205, 206, 0, 207, 0, 0, 208, 209, 210, 211, 212, 213, 0, 29, 0, 0, 7, 7, 0, 0, 0, 214, 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 217, 218, 219, 220, 221, 60, 222, 0, 223, 0, 0, 0, 224, 0, 225, 226, 0, 0, 227, 0, 0, 0, 228, 0, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 232, 233, 0, 0, 7, 0, 234, 235, 236, 60, 237, 0, 0, 29, 238, 0, 239, 240, 0, 29, 0, 0, 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 242, 0, 243, 0, 244, 245, 246, 247, 248, 60, 249, 0, 0, 250, 0, 251, 252, 253, 254, 29, 0, 28, 0, 0, 28, 0, 0, 0, 0, 0, 0, 7, 7, 7, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 269, 270, 60, 271, 0, 272, 273, 274, 275, 276, 277, 0, 0, 0, 278, 7, 7, 0, 279, 280, 281, 282, 283, 0, 0, 0, 0, 0, 284, 285, 60, 286, 0, 287, 29, 288, 289, 290, 291, 292, 293, 0, 29, 0, 0, 0, 0, 0, 0, 294, 295, 296, 297, 60, 298, 0, 299, 29, 300, 301, 302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 303, 304, 0, 8, 0, 0, 7, 305, 0, 0, 305, 305, 0, 0, 7, 306, 0, 306, 0, 306, 306, 306, 0, 0, 306, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 0, 0, 307, 308, 308, 309, 310, 0, 311, 312, 0, 75, 0, 313, 0, 314, 315, 316, 317, 318, 30, 319, 320, 321, 322, 323, 60, 324, 0, 325, 326, 0, 327, 0, 328, 329, 305, 330, 0, 331, 0, 332, 333, 334, 0, 0, 335, 0, 0, 0, 0, 336, 0, 0, 0, 0, 0, 0, 0, 337, 0, 0, 338, 0, 339, 340, 0, 0, 0, 341, 0, 0, 342, 343, 344, 345, 346, 347, 0, 348, 349, 349, 0, 350, 0, 351, 352, 352, 0, 0, 353, 354, 355, 0, 356, 357, 358, 0, 7, 359, 360, 361, 0, 362, 117, 117, 117, 117, 117, 117, 117, 117, 363, 364, 365, 0, 0, 366, 0, 367, 368, 369, 0, 370, 371, 372, 0, 0, 373, 0, 0, 374, 0, 7, 0, 0, 375, 376, 0, 0, 377, 0, 29, 378, 0, 0, 0, 0, 0, 379, 380, 0, 0, 0, 0, 0, 0, 0, 381, 0, 0, 0, 0, 0, 382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 383, 384, 385, 0, 0, 0, 386, 29, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 75, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 387, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 388, 389, 390, 391, 392, 392, 388, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 393, 394, 395, 396, 0, 29, 0, 0, 397, 398, 399, 60, 400, 0, 401, 29, 402, 7, 403, 404, 0, 29, 405, 0, 0, 406, 407, 408, 409, 60, 410, 0, 29, 411, 412, 413, 414, 0, 29, 0, 415, 0, 7, 416, 0, 0, 0, 0, 417, 0, 0, 418, 418, 0, 419, 0, 0, 0, 420, 7, 421, 421, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 422, 423, 424, 0, 425, 426, 427, 428, 429, 430, 60, 431, 0, 432, 0, 0, 433, 434, 435, 436, 437, 438, 439, 440, 441, 0, 442, 0, 443, 444, 0, 0, 445, 446, 447, 0, 0, 448, 0, 0, 447, 449, 449, 450, 451, 0, 452, 453, 0, 454, 455, 456, 0, 457, 458, 0, 0, 459, 460, 447, 447, 461, 0, 0, 462, 462, 0, 463, 0, 464, 465, 7, 0, 466, 0, 467, 468, 469, 470, 470, 471, 471, 0, 0, 472, 473, 473, 474, 474, 475, 476, 476, 477, 477, 478, 479, 479, 480, 480, 0, 0, 481, 482, 483, 484, 485, 486, 486, 483, 485, 487, 418, 488, 0, 0, 0, 489, 0, 0, 490, 491, 421, 421, 421, 492, 421, 493, 494, 29, 495, 496, 497, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 498, 0, 0, 0, 0, 492, 0, 0, 0, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 501, 0, 0, 0, 0, 0, 500, 502, 503, 0, 504, 0, 505, 0, 0, 0, 0, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 507, 0, 0, 0, 0, 0, 0, 0, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 508, 509, 510, 511, 511, 89, 511, 512, 513, 514, 0, 515, 516, 0, 517, 0, 518, 0, 0, 0, 519, 520]]; + $send(self, '_lex_trans_actions=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + + self.$attr_accessor("_lex_to_state_actions"); + return self.$private("_lex_to_state_actions", "_lex_to_state_actions="); + })(Opal.get_singleton_class(self), $nesting); + + $writer = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 96, 0, 96, 0, 0, 0, 0, 96, 96, 0, 0, 0, 0, 0, 96, 0, 96, 0, 96, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0]]; + $send(self, '_lex_to_state_actions=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + + self.$attr_accessor("_lex_from_state_actions"); + return self.$private("_lex_from_state_actions", "_lex_from_state_actions="); + })(Opal.get_singleton_class(self), $nesting); + + $writer = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 97, 0, 97, 0, 0, 0, 0, 97, 97, 0, 0, 0, 0, 0, 97, 0, 97, 0, 97, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0]]; + $send(self, '_lex_from_state_actions=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + + self.$attr_accessor("_lex_eof_trans"); + return self.$private("_lex_eof_trans", "_lex_eof_trans="); + })(Opal.get_singleton_class(self), $nesting); + + $writer = [[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 48, 48, 48, 48, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 83, 83, 83, 83, 90, 90, 90, 90, 0, 0, 0, 0, 105, 107, 109, 109, 109, 109, 115, 115, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 190, 192, 192, 192, 204, 204, 204, 212, 214, 214, 214, 214, 214, 220, 212, 212, 212, 212, 212, 212, 212, 246, 246, 246, 246, 246, 246, 212, 262, 212, 262, 246, 246, 212, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 212, 246, 246, 246, 246, 303, 303, 303, 308, 310, 310, 310, 314, 314, 317, 317, 317, 317, 322, 322, 322, 308, 314, 314, 314, 314, 314, 314, 314, 314, 314, 353, 360, 362, 362, 362, 362, 353, 0, 378, 379, 380, 382, 384, 386, 384, 384, 0, 396, 397, 401, 401, 402, 403, 412, 413, 414, 414, 414, 417, 417, 419, 420, 421, 421, 421, 423, 424, 425, 425, 425, 428, 428, 421, 431, 431, 421, 417, 417, 436, 437, 437, 437, 440, 440, 437, 437, 437, 443, 443, 443, 443, 449, 450, 450, 450, 450, 458, 450, 450, 450, 450, 463, 450, 450, 450, 450, 450, 450, 469, 470, 471, 471, 0, 478, 482, 482, 483, 484, 493, 494, 495, 495, 495, 498, 498, 500, 501, 502, 502, 502, 504, 505, 506, 506, 506, 509, 509, 502, 512, 512, 502, 498, 498, 517, 518, 518, 518, 521, 521, 518, 518, 518, 524, 524, 524, 524, 530, 531, 531, 531, 531, 539, 531, 531, 531, 531, 544, 531, 531, 531, 531, 531, 531, 550, 551, 552, 552, 0, 559, 560, 0, 566, 0, 573, 577, 577, 578, 0, 0, 587, 588, 592, 592, 593, 0, 598, 0, 601, 0, 604, 604, 605, 606, 0, 647, 649, 650, 651, 652, 654, 656, 660, 660, 651, 651, 651, 651, 662, 651, 651, 656, 651, 651, 647, 666, 666, 666, 666, 666, 666, 656, 656, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 705, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 651, 0, 749, 750, 751, 753, 749, 749, 757, 0, 776, 778, 780, 781, 782, 783, 784, 786, 783, 783, 783, 783, 783, 789, 783, 783, 791, 789, 789, 783, 0, 810, 811, 115, 115, 814, 815, 115, 811, 811, 818, 820, 823, 811, 824, 811, 825, 826, 828, 830, 811, 818, 831, 831, 820, 831, 835, 831, 831, 831, 831, 0, 190, 843, 844, 843, 843, 0, 853, 854, 856, 858, 860, 858, 862, 0, 874, 875, 876, 877, 879, 881, 883, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 0, 942, 945, 948, 949, 953, 955, 956, 957, 958, 959, 961, 964, 965, 967, 969, 972, 974, 975, 212, 972, 977, 972, 964, 979, 981, 964, 964, 999, 1002, 1004, 1005, 1009, 1012, 1013, 1014, 1015, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 1019, 1023, 1025, 999, 999, 964, 1030, 1031, 1031, 1031, 964, 964, 964, 1032, 1039, 1039, 1041, 1043, 1052, 1053, 1054, 1054, 1054, 1057, 1057, 1059, 1060, 1061, 1061, 1061, 1063, 1064, 1065, 1065, 1065, 1068, 1068, 1061, 1071, 1071, 1061, 1057, 1057, 1076, 1077, 1077, 1077, 1080, 1080, 1077, 1077, 1077, 1083, 1083, 1083, 1083, 1089, 1090, 1090, 1090, 1090, 1098, 1090, 1090, 1090, 1090, 1104, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1122, 1123, 1124, 1124, 212, 964, 964, 1128, 964, 959, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 212, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 1181, 949, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 1206, 964, 0, 1214, 1215, 1216, 1218, 1220, 1222, 0, 1231, 1232, 1233, 1234, 1236, 1231, 1239, 0, 314, 1294, 1296, 1297, 1298, 1299, 1301, 1303, 1305, 1308, 1308, 314, 1310, 1312, 1313, 1314, 1310, 1316, 1318, 1318, 1321, 1321, 1324, 1335, 314, 1341, 1343, 1345, 1346, 1349, 1350, 1324, 1324, 1353, 1353, 1353, 1359, 1361, 1362, 1365, 1367, 1368, 1369, 1353, 1353, 1376, 1381, 1386, 1353, 1353, 1393, 1393, 1353, 1353, 1318, 1310, 1310, 1318, 1310, 1310, 1305, 314, 1411, 1412, 1412, 1412, 1412, 1412, 1412, 1418, 1305, 1421, 1422, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1462, 1463, 1423, 1423, 1467, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1521, 1299, 1522, 0, 1528, 1529, 1530, 1532, 1528, 1528, 1528, 0, 1537, 1537, 1537, 1537, 1541]]; + $send(self, '_lex_eof_trans=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_start") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [186]; + $send(self, 'lex_start=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_error") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [0]; + $send(self, 'lex_error=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_interp_words") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [195]; + $send(self, 'lex_en_interp_words=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_interp_string") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [261]; + $send(self, 'lex_en_interp_string=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_plain_words") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [326]; + $send(self, 'lex_en_plain_words=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_plain_string") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [329]; + $send(self, 'lex_en_plain_string=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_interp_backslash_delimited") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [331]; + $send(self, 'lex_en_interp_backslash_delimited=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_plain_backslash_delimited") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [336]; + $send(self, 'lex_en_plain_backslash_delimited=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_interp_backslash_delimited_words") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [337]; + $send(self, 'lex_en_interp_backslash_delimited_words=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_plain_backslash_delimited_words") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [343]; + $send(self, 'lex_en_plain_backslash_delimited_words=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_regexp_modifiers") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [345]; + $send(self, 'lex_en_regexp_modifiers=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_variable") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [347]; + $send(self, 'lex_en_expr_variable=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_fname") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [352]; + $send(self, 'lex_en_expr_fname=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_endfn") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [465]; + $send(self, 'lex_en_expr_endfn=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_dot") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [473]; + $send(self, 'lex_en_expr_dot=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_arg") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [494]; + $send(self, 'lex_en_expr_arg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_cmdarg") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [525]; + $send(self, 'lex_en_expr_cmdarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_endarg") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [531]; + $send(self, 'lex_en_expr_endarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_mid") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [539]; + $send(self, 'lex_en_expr_mid=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_beg") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [563]; + $send(self, 'lex_en_expr_beg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_labelarg") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [795]; + $send(self, 'lex_en_expr_labelarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_value") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [802]; + $send(self, 'lex_en_expr_value=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_expr_end") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [810]; + $send(self, 'lex_en_expr_end=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_leading_dot") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [990]; + $send(self, 'lex_en_leading_dot=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_line_comment") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [998]; + $send(self, 'lex_en_line_comment=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + (function(self, $parent_nesting) { + + return self.$attr_accessor("lex_en_line_begin") + })(Opal.get_singleton_class(self), $nesting); + + $writer = [186]; + $send(self, 'lex_en_line_begin=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + $const_set($nesting[0], 'ESCAPES', $hash("a".$ord(), "\u0007", "b".$ord(), "\b", "e".$ord(), "\u001b", "f".$ord(), "\f", "n".$ord(), "\n", "r".$ord(), "\r", "s".$ord(), " ", "t".$ord(), "\t", "v".$ord(), "\v", "\\".$ord(), "\\").$freeze()); + $const_set($nesting[0], 'REGEXP_META_CHARACTERS', $send($$('Regexp'), 'union', $to_a("\\$()*+.<>?[]^{|}".$chars())).$freeze()); + self.$attr_reader("source_buffer"); + self.$attr_accessor("diagnostics"); + self.$attr_accessor("static_env"); + self.$attr_accessor("force_utf32"); + self.$attr_accessor("cond", "cmdarg", "context", "command_start"); + self.$attr_accessor("tokens", "comments"); + self.$attr_reader("paren_nest", "cmdarg_stack", "cond_stack", "lambda_stack"); + + $def(self, '$initialize', function $$initialize(version) { + var self = this; + + + self.version = version; + self.static_env = nil; + self.context = nil; + self.tokens = nil; + self.comments = nil; + return self.$reset(); + }, 1); + + $def(self, '$reset', function $$reset(reset_state) { + var self = this; + + + + if (reset_state == null) reset_state = true;; + if ($truthy(reset_state)) { + + self.cs = self.$class().$lex_en_line_begin(); + self.cond = $$('StackState').$new("cond"); + self.cmdarg = $$('StackState').$new("cmdarg"); + self.cond_stack = []; + self.cmdarg_stack = []; + }; + self.force_utf32 = false; + self.source_pts = nil; + self.p = 0; + self.ts = nil; + self.te = nil; + self.act = 0; + self.stack = []; + self.top = 0; + self.token_queue = []; + self.literal_stack = []; + self.eq_begin_s = nil; + self.sharp_s = nil; + self.newline_s = nil; + self.num_base = nil; + self.num_digits_s = nil; + self.num_suffix_s = nil; + self.num_xfrm = nil; + self.escape_s = nil; + self.escape = nil; + self.herebody_s = nil; + self.paren_nest = 0; + self.lambda_stack = []; + self.dedent_level = nil; + self.command_start = true; + return (self.cs_before_block_comment = self.$class().$lex_en_line_begin()); + }, -1); + + $def(self, '$source_buffer=', function $Lexer_source_buffer$eq$1(source_buffer) { + var self = this, source = nil; + + + self.source_buffer = source_buffer; + if ($truthy(self.source_buffer)) { + + source = self.source_buffer.$source(); + if ($eqeq(source.$encoding(), $$$($$('Encoding'), 'UTF_8'))) { + self.source_pts = source.$unpack("U*") + } else { + self.source_pts = source.$unpack("C*") + }; + if ($eqeq(self.source_pts['$[]'](0), 65279)) { + return (self.p = 1) + } else { + return nil + }; + } else { + return (self.source_pts = nil) + }; + }, 1); + + $def(self, '$encoding', function $$encoding() { + var self = this; + + return self.source_buffer.$source().$encoding() + }, 0); + $const_set($nesting[0], 'LEX_STATES', $hash2(["line_begin", "expr_dot", "expr_fname", "expr_value", "expr_beg", "expr_mid", "expr_arg", "expr_cmdarg", "expr_end", "expr_endarg", "expr_endfn", "expr_labelarg", "interp_string", "interp_words", "plain_string", "plain_words"], {"line_begin": self.$lex_en_line_begin(), "expr_dot": self.$lex_en_expr_dot(), "expr_fname": self.$lex_en_expr_fname(), "expr_value": self.$lex_en_expr_value(), "expr_beg": self.$lex_en_expr_beg(), "expr_mid": self.$lex_en_expr_mid(), "expr_arg": self.$lex_en_expr_arg(), "expr_cmdarg": self.$lex_en_expr_cmdarg(), "expr_end": self.$lex_en_expr_end(), "expr_endarg": self.$lex_en_expr_endarg(), "expr_endfn": self.$lex_en_expr_endfn(), "expr_labelarg": self.$lex_en_expr_labelarg(), "interp_string": self.$lex_en_interp_string(), "interp_words": self.$lex_en_interp_words(), "plain_string": self.$lex_en_plain_string(), "plain_words": self.$lex_en_plain_string()})); + + $def(self, '$state', function $$state() { + var self = this; + + return $$('LEX_STATES').$invert().$fetch(self.cs, self.cs) + }, 0); + + $def(self, '$state=', function $Lexer_state$eq$2(state) { + var self = this; + + return (self.cs = $$('LEX_STATES').$fetch(state)) + }, 1); + + $def(self, '$push_cmdarg', function $$push_cmdarg() { + var self = this; + + + self.cmdarg_stack.$push(self.cmdarg); + return (self.cmdarg = $$('StackState').$new("cmdarg." + (self.cmdarg_stack.$count()))); + }, 0); + + $def(self, '$pop_cmdarg', function $$pop_cmdarg() { + var self = this; + + return (self.cmdarg = self.cmdarg_stack.$pop()) + }, 0); + + $def(self, '$push_cond', function $$push_cond() { + var self = this; + + + self.cond_stack.$push(self.cond); + return (self.cond = $$('StackState').$new("cond." + (self.cond_stack.$count()))); + }, 0); + + $def(self, '$pop_cond', function $$pop_cond() { + var self = this; + + return (self.cond = self.cond_stack.$pop()) + }, 0); + + $def(self, '$dedent_level', function $$dedent_level() { + var $a, self = this, dedent_level = nil; + + + $a = [self.dedent_level, nil], (dedent_level = $a[0]), (self.dedent_level = $a[1]), $a; + return dedent_level; + }, 0); + + $def(self, '$advance', function $$advance() { + var $a, $b, self = this, klass = nil, _lex_trans_keys = nil, _lex_key_spans = nil, _lex_index_offsets = nil, _lex_indicies = nil, _lex_trans_targs = nil, _lex_trans_actions = nil, _lex_to_state_actions = nil, _lex_from_state_actions = nil, _lex_eof_trans = nil, pe = nil, p = nil, eof = nil, cmd_state = nil, testEof = nil, _slen = nil, _trans = nil, _keys = nil, _inds = nil, _acts = nil, _nacts = nil, _goto_level = nil, _resume = nil, _eof_trans = nil, _again = nil, _test_eof = nil, _out = nil, $ret_or_1 = nil, _wide = nil, tm = nil, heredoc_e = nil, diag_msg = nil, ident_tok = nil, ident_ts = nil, ident_te = nil, current_literal = nil, $writer = nil, line = nil, string = nil, lookahead = nil, token = nil, message = nil, escaped_char = nil, $ret_or_2 = nil, unknown_options = nil, type = nil, delimiter = nil, escape = nil, ident = nil, followed_by_nl = nil, nl_emitted = nil, dots_te = nil, value = nil, digits = nil, invalid_idx = nil, invalid_s = nil, codepoints = nil, codepoint_s = nil, spaces_p = nil, codepoint = nil, new_herebody_s = nil, indent = nil, dedent_body = nil; + + + if ($truthy(self.token_queue['$any?']())) { + return self.token_queue.$shift() + }; + klass = self.$class(); + _lex_trans_keys = klass.$send("_lex_trans_keys"); + _lex_key_spans = klass.$send("_lex_key_spans"); + _lex_index_offsets = klass.$send("_lex_index_offsets"); + _lex_indicies = klass.$send("_lex_indicies"); + _lex_trans_targs = klass.$send("_lex_trans_targs"); + _lex_trans_actions = klass.$send("_lex_trans_actions"); + _lex_to_state_actions = klass.$send("_lex_to_state_actions"); + _lex_from_state_actions = klass.$send("_lex_from_state_actions"); + _lex_eof_trans = klass.$send("_lex_eof_trans"); + pe = $rb_plus(self.source_pts.$size(), 2); + $a = [self.p, pe], (p = $a[0]), (eof = $a[1]), $a; + cmd_state = self.command_start; + self.command_start = false; + + testEof = false; + $b = nil, $a = $to_ary($b), (_slen = ($a[0] == null ? nil : $a[0])), (_trans = ($a[1] == null ? nil : $a[1])), (_keys = ($a[2] == null ? nil : $a[2])), (_inds = ($a[3] == null ? nil : $a[3])), (_acts = ($a[4] == null ? nil : $a[4])), (_nacts = ($a[5] == null ? nil : $a[5])), $b; + _goto_level = 0; + _resume = 10; + _eof_trans = 15; + _again = 20; + _test_eof = 30; + _out = 40; + while ($truthy(true)) { + + if ($truthy($rb_le(_goto_level, 0))) { + + if ($eqeq(p, pe)) { + + _goto_level = _test_eof; + continue;; + }; + if ($eqeq(self.cs, 0)) { + + _goto_level = _out; + continue;; + }; + }; + if ($truthy($rb_le(_goto_level, _resume))) { + + if ($eqeqeq(97, ($ret_or_1 = _lex_from_state_actions['$[]'](self.cs)))) { + + self.ts = p; + } else { + nil + }; + _keys = self.cs['$<<'](1); + _inds = _lex_index_offsets['$[]'](self.cs); + _slen = _lex_key_spans['$[]'](self.cs); + _wide = ($truthy(($ret_or_1 = self.source_pts['$[]'](p))) ? ($ret_or_1) : (0)); + _trans = ((($truthy($rb_gt(_slen, 0)) && ($truthy($rb_le(_lex_trans_keys['$[]'](_keys), _wide)))) && ($truthy($rb_le(_wide, _lex_trans_keys['$[]']($rb_plus(_keys, 1)))))) ? (_lex_indicies['$[]']($rb_minus($rb_plus(_inds, _wide), _lex_trans_keys['$[]'](_keys)))) : (_lex_indicies['$[]']($rb_plus(_inds, _slen)))); + }; + if ($truthy($rb_le(_goto_level, _eof_trans))) { + + self.cs = _lex_trans_targs['$[]'](_trans); + if ($neqeq(_lex_trans_actions['$[]'](_trans), 0)) { + if ($eqeqeq(29, ($ret_or_1 = _lex_trans_actions['$[]'](_trans)))) { + + self.newline_s = p; + } else if ($eqeqeq(117, $ret_or_1)) { + + self.escape_s = p; + self.escape = nil; + } else if ($eqeqeq(30, $ret_or_1)) { + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + }; + } else if ($eqeqeq(60, $ret_or_1)) { + + self.sharp_s = $rb_minus(p, 1); + } else if ($eqeqeq(64, $ret_or_1)) { + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p))); + } else if ($eqeqeq(310, $ret_or_1)) { + + tm = p; + } else if ($eqeqeq(37, $ret_or_1)) { + + tm = p; + } else if ($eqeqeq(39, $ret_or_1)) { + + tm = p; + } else if ($eqeqeq(41, $ret_or_1)) { + + tm = p; + } else if ($eqeqeq(71, $ret_or_1)) { + + heredoc_e = p; + } else if ($eqeqeq(349, $ret_or_1)) { + + tm = $rb_minus(p, 1); + diag_msg = "ivar_name"; + } else if ($eqeqeq(352, $ret_or_1)) { + + tm = $rb_minus(p, 2); + diag_msg = "cvar_name"; + } else if ($eqeqeq(360, $ret_or_1)) { + + self.escape = nil; + } else if ($eqeqeq(392, $ret_or_1)) { + + tm = p; + } else if ($eqeqeq(308, $ret_or_1)) { + + ident_tok = self.$tok(); + ident_ts = self.ts; + ident_te = self.te; + } else if ($eqeqeq(479, $ret_or_1)) { + + self.num_base = 16; + self.num_digits_s = p; + } else if ($eqeqeq(473, $ret_or_1)) { + + self.num_base = 10; + self.num_digits_s = p; + } else if ($eqeqeq(476, $ret_or_1)) { + + self.num_base = 8; + self.num_digits_s = p; + } else if ($eqeqeq(470, $ret_or_1)) { + + self.num_base = 2; + self.num_digits_s = p; + } else if ($eqeqeq(485, $ret_or_1)) { + + self.num_base = 10; + self.num_digits_s = self.ts; + } else if ($eqeqeq(447, $ret_or_1)) { + + self.num_base = 8; + self.num_digits_s = self.ts; + } else if ($eqeqeq(462, $ret_or_1)) { + + self.num_suffix_s = p; + } else if ($eqeqeq(455, $ret_or_1)) { + + self.num_suffix_s = p; + } else if ($eqeqeq(452, $ret_or_1)) { + + self.num_suffix_s = p; + } else if ($eqeqeq(89, $ret_or_1)) { + + tm = p; + } else if ($eqeqeq(7, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + } else if ($eqeqeq(113, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DBEG", "\#{".$freeze()); + if ($truthy(current_literal['$heredoc?']())) { + + + $writer = [self.herebody_s]; + $send(current_literal, 'saved_herebody_s=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.herebody_s = nil; + }; + current_literal.$start_interp_brace(); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(5, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DVAR", nil, self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(109, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };; + } else if ($eqeqeq(108, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(115, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$literal().$extend_string(self.$tok(), self.ts, self.te) + } else { + + message = ($truthy(self.$tok()['$start_with?']("\#@@")) ? ("cvar_name") : ("ivar_name")); + self.$diagnostic("error", message, $hash2(["name"], {"name": self.$tok($rb_plus(self.ts, 1), self.te)}), self.$range($rb_plus(self.ts, 1), self.te)); + };; + } else if ($eqeqeq(114, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DVAR", nil, self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(111, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$literal().$extend_space(self.ts, self.te);; + } else if ($eqeqeq(112, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(6, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };; + } else if ($eqeqeq(4, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(145, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DBEG", "\#{".$freeze()); + if ($truthy(current_literal['$heredoc?']())) { + + + $writer = [self.herebody_s]; + $send(current_literal, 'saved_herebody_s=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.herebody_s = nil; + }; + current_literal.$start_interp_brace(); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(10, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DVAR", nil, self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(142, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };; + } else if ($eqeqeq(141, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(147, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$literal().$extend_string(self.$tok(), self.ts, self.te) + } else { + + message = ($truthy(self.$tok()['$start_with?']("\#@@")) ? ("cvar_name") : ("ivar_name")); + self.$diagnostic("error", message, $hash2(["name"], {"name": self.$tok($rb_plus(self.ts, 1), self.te)}), self.$range($rb_plus(self.ts, 1), self.te)); + };; + } else if ($eqeqeq(146, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DVAR", nil, self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(144, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(11, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };; + } else if ($eqeqeq(9, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(173, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };; + } else if ($eqeqeq(172, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(175, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$literal().$extend_space(self.ts, self.te);; + } else if ($eqeqeq(176, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(179, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };; + } else if ($eqeqeq(178, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(181, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(188, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DBEG", "\#{".$freeze()); + if ($truthy(current_literal['$heredoc?']())) { + + + $writer = [self.herebody_s]; + $send(current_literal, 'saved_herebody_s=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.herebody_s = nil; + }; + current_literal.$start_interp_brace(); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(13, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DVAR", nil, self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(185, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };; + } else if ($eqeqeq(184, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(190, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$literal().$extend_string(self.$tok(), self.ts, self.te) + } else { + + message = ($truthy(self.$tok()['$start_with?']("\#@@")) ? ("cvar_name") : ("ivar_name")); + self.$diagnostic("error", message, $hash2(["name"], {"name": self.$tok($rb_plus(self.ts, 1), self.te)}), self.$range($rb_plus(self.ts, 1), self.te)); + };; + } else if ($eqeqeq(189, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DVAR", nil, self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(187, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(12, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(192, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };; + } else if ($eqeqeq(191, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(199, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DBEG", "\#{".$freeze()); + if ($truthy(current_literal['$heredoc?']())) { + + + $writer = [self.herebody_s]; + $send(current_literal, 'saved_herebody_s=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.herebody_s = nil; + }; + current_literal.$start_interp_brace(); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(15, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DVAR", nil, self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(195, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };; + } else if ($eqeqeq(194, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(201, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$literal().$extend_string(self.$tok(), self.ts, self.te) + } else { + + message = ($truthy(self.$tok()['$start_with?']("\#@@")) ? ("cvar_name") : ("ivar_name")); + self.$diagnostic("error", message, $hash2(["name"], {"name": self.$tok($rb_plus(self.ts, 1), self.te)}), self.$range($rb_plus(self.ts, 1), self.te)); + };; + } else if ($eqeqeq(200, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + current_literal.$flush_string(); + current_literal.$extend_content(); + self.$emit("tSTRING_DVAR", nil, self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(197, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$literal().$extend_space(self.ts, self.te);; + } else if ($eqeqeq(198, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(14, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(203, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };; + } else if ($eqeqeq(202, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + string = self.$tok(); + if (($truthy($rb_ge(self.version, 22)) && ($not(self.cond['$active?']())))) { + lookahead = self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te, 2), true)) + }; + current_literal = self.$literal(); + if (($not(current_literal['$heredoc?']()) && ($truthy((token = current_literal.$nest_and_try_closing(string, self.ts, self.te, lookahead)))))) { + + if ($eqeq(token['$[]'](0), "tLABEL_END")) { + + p = $rb_plus(p, 1); + self.$pop_literal(); + self.cs = 795; + } else { + self.cs = self.$pop_literal() + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + current_literal.$extend_string(string, self.ts, self.te) + };; + } else if ($eqeqeq(205, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$literal().$extend_space(self.ts, self.te);; + } else if ($eqeqeq(206, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tREGEXP_OPT", self.$tok(self.ts, $rb_minus(self.te, 1)), self.ts, $rb_minus(self.te, 1)); + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(207, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + unknown_options = self.$tok().$scan(/[^imxouesn]/); + if ($truthy(unknown_options['$any?']())) { + self.$diagnostic("error", "regexp_options", $hash2(["options"], {"options": unknown_options.$join()})) + }; + self.$emit("tREGEXP_OPT"); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(16, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + if ($truthy(self.$tok()['$=~'](/^\$([1-9][0-9]*)$/))) { + self.$emit("tNTH_REF", self.$tok($rb_plus(self.ts, 1)).$to_i()) + } else if ($truthy(self.$tok()['$=~'](/^\$([&`'+])$/))) { + self.$emit("tBACK_REF") + } else { + self.$emit("tGVAR") + }; + self.cs = self.$stack_pop(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(208, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy(self.$tok()['$=~'](/^\$([1-9][0-9]*)$/))) { + self.$emit("tNTH_REF", self.$tok($rb_plus(self.ts, 1)).$to_i()) + } else if ($truthy(self.$tok()['$=~'](/^\$([&`'+])$/))) { + self.$emit("tBACK_REF") + } else { + self.$emit("tGVAR") + }; + self.cs = self.$stack_pop(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(210, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy(self.$tok()['$=~'](/^@@[0-9]/))) { + self.$diagnostic("error", "cvar_name", $hash2(["name"], {"name": self.$tok()})) + }; + self.$emit("tCVAR"); + self.cs = self.$stack_pop(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(209, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy(self.$tok()['$=~'](/^@[0-9]/))) { + self.$diagnostic("error", "ivar_name", $hash2(["name"], {"name": self.$tok()})) + }; + self.$emit("tIVAR"); + self.cs = self.$stack_pop(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(231, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit_table($$('KEYWORDS_BEGIN')); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(217, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tIDENTIFIER"); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(18, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + self.cs = 810; + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(214, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(226, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(20, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + if ($truthy(self['$version?'](23))) { + + $b = [self.$tok()['$[]']($range(0, -2, false)), self.$tok()['$[]'](-1).$chr()], (type = $b[0]), (delimiter = $b[1]), $b; + + self.cs = self.$push_literal(type, delimiter, self.ts); + _goto_level = _again; + continue;;; + } else { + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;; + };; + } else if ($eqeqeq(213, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(212, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(230, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('KEYWORDS_BEGIN')); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(227, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tCONSTANT"); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(229, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tIDENTIFIER"); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(224, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + self.cs = 810; + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(220, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(225, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(218, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(223, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(19, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + self.$emit_table($$('PUNCTUATION')); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(17, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(216, $ret_or_1)) { + + if ($eqeqeq(43, ($ret_or_2 = self.act))) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS_BEGIN')); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(44, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tCONSTANT"); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(45, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tIDENTIFIER"); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + nil + }; + } else if ($eqeqeq(22, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tLABEL", self.$tok(self.ts, $rb_minus(self.te, 2)), self.ts, $rb_minus(self.te, 1)); + p = $rb_minus(p, 1); + self.cs = 795; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(23, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + if (($truthy($rb_ge(self.version, 31)) && ($truthy(self.context.$in_argdef())))) { + + self.$emit("tBDOT3", "...".$freeze()); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + p = $rb_minus(p, 3); + + self.cs = 810; + _goto_level = _again; + continue;;; + };; + } else if ($eqeqeq(233, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(232, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(235, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(234, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(21, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(241, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 494; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(240, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(239, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(251, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tCONSTANT"); + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(242, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tIDENTIFIER"); + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(247, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 494; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(245, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(250, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(274, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(257, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + if ($eqeq(self.$tok(tm, $rb_plus(tm, 1)), "/".$freeze())) { + if ($truthy($rb_lt(self.version, 30))) { + self.$diagnostic("warning", "ambiguous_literal", nil, self.$range(tm, $rb_plus(tm, 1))) + } else { + self.$diagnostic("warning", "ambiguous_regexp", nil, self.$range(tm, $rb_plus(tm, 1))) + } + }; + p = $rb_minus(tm, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(263, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(25, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(265, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(tm, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(40, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(252, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(253, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(264, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(260, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$diagnostic("warning", "ambiguous_prefix", $hash2(["prefix"], {"prefix": self.$tok(tm, self.te)}), self.$range(tm, self.te)); + p = $rb_minus(tm, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(262, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(256, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(255, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(273, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(26, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + } else if ($eqeqeq(42, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(24, $ret_or_1)) { + + if ($eqeqeq(72, ($ret_or_2 = self.act))) { + + + p = $rb_minus(self.te, 1);; + if ($eqeq(self.$tok(tm, $rb_plus(tm, 1)), "/".$freeze())) { + if ($truthy($rb_lt(self.version, 30))) { + self.$diagnostic("warning", "ambiguous_literal", nil, self.$range(tm, $rb_plus(tm, 1))) + } else { + self.$diagnostic("warning", "ambiguous_regexp", nil, self.$range(tm, $rb_plus(tm, 1))) + } + }; + p = $rb_minus(tm, 1); + + self.cs = 563; + _goto_level = _again; + continue;;; + } else if ($eqeqeq(73, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$diagnostic("warning", "ambiguous_prefix", $hash2(["prefix"], {"prefix": self.$tok(tm, self.te)}), self.$range(tm, self.te)); + p = $rb_minus(tm, 1); + + self.cs = 563; + _goto_level = _again; + continue;;; + } else if ($eqeqeq(78, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;; + } else { + + + p = $rb_minus(self.te, 1);; + }; + } else if ($eqeqeq(44, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 494; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(278, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(279, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 494; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(45, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + p = $rb_minus(self.ts, 1); + + self.cs = 494; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(43, $ret_or_1)) { + + if ($eqeqeq(85, ($ret_or_2 = self.act))) { + + + p = $rb_minus(self.te, 1);; + if ($truthy(self.cond['$active?']())) { + self.$emit("kDO_COND", "do".$freeze(), $rb_minus(self.te, 2), self.te) + } else { + self.$emit("kDO", "do".$freeze(), $rb_minus(self.te, 2), self.te) + }; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(86, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + p = $rb_minus(self.ts, 1); + + self.cs = 494; + _goto_level = _again; + continue;;; + } else { + nil + }; + } else if ($eqeqeq(289, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit_do(true); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(282, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(283, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(284, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(287, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(293, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(292, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(301, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(295, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(299, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(294, $ret_or_1)) { + + if ($eqeqeq(93, ($ret_or_2 = self.act))) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(94, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + p = $rb_minus(self.ts, 1); + + self.cs = 563; + _goto_level = _again; + continue;;; + } else { + nil + }; + } else if ($eqeqeq(57, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = $rb_minus(p, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(334, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + type = (delimiter = self.$tok()['$[]'](0).$chr()); + p = $rb_minus(p, 1); + + self.cs = self.$push_literal(type, delimiter, self.ts); + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(326, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + $b = [self.source_buffer.$slice(self.ts).$chr(), self.$tok()['$[]'](-1).$chr()], (type = $b[0]), (delimiter = $b[1]), $b; + + self.cs = self.$push_literal(type, delimiter, self.ts); + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(55, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + $b = [self.$tok()['$[]']($range(0, -2, false)), self.$tok()['$[]'](-1).$chr()], (type = $b[0]), (delimiter = $b[1]), $b; + + self.cs = self.$push_literal(type, delimiter, self.ts); + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(347, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + p = $rb_minus(p, 1); + self.$emit("tSYMBEG", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + + self.cs = 352; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(335, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + $b = [self.$tok(), self.$tok()['$[]'](-1).$chr()], (type = $b[0]), (delimiter = $b[1]), $b; + + self.cs = self.$push_literal(type, delimiter, self.ts); + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(346, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), $rb_plus(self.ts, 2))); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(69, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1)), self.ts); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(357, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + escape = $hash2([" ", "\r", "\n", "\t", "\v", "\f"], {" ": "\\s", "\r": "\\r", "\n": "\\n", "\t": "\\t", "\v": "\\v", "\f": "\\f"})['$[]'](self.source_buffer.$slice($rb_plus(self.ts, 1))); + self.$diagnostic("warning", "invalid_escape_use", $hash2(["escape"], {"escape": escape}), self.$range()); + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(356, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$diagnostic("fatal", "incomplete_escape", nil, self.$range(self.ts, $rb_plus(self.ts, 1)));; + } else if ($eqeqeq(336, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit_table($$('PUNCTUATION_BEGIN')); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(52, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + if ($truthy(self['$version?'](18))) { + + ident = self.$tok(self.ts, $rb_minus(self.te, 2)); + self.$emit(($truthy(self.source_buffer.$slice(self.ts)['$=~'](/[A-Z]/)) ? ("tCONSTANT") : ("tIDENTIFIER")), ident, self.ts, $rb_minus(self.te, 2)); + p = $rb_minus(p, 1); + if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](ident))))) { + self.cs = 810 + } else { + self.cs = self.$arg_or_cmdarg(cmd_state) + }; + } else { + + self.$emit("tLABEL", self.$tok(self.ts, $rb_minus(self.te, 2)), self.ts, $rb_minus(self.te, 1)); + self.cs = 795; + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(49, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tIDENTIFIER", ident_tok, ident_ts, ident_te); + p = $rb_minus(ident_te, 1); + if ((($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](ident_tok)))) && ($truthy($rb_lt(self.version, 25))))) { + self.cs = 465 + } else { + self.cs = 525 + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(320, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + self.cs_before_block_comment = self.cs; + + self.cs = 186; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(56, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(304, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(330, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = $rb_minus(p, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(329, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tSTAR", "*".$freeze()); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(325, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$diagnostic("fatal", "string_eof", nil, self.$range(self.ts, $rb_plus(self.ts, 1)));; + } else if ($eqeqeq(354, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$diagnostic("error", "unterminated_heredoc_id", nil, self.$range(self.ts, $rb_plus(self.ts, 1)));; + } else if ($eqeqeq(337, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1)), self.ts); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(350, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$diagnostic("error", diag_msg, $hash2(["name"], {"name": self.$tok(tm, self.te)}), self.$range(tm, self.te)) + } else { + + self.$emit("tCOLON", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(355, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$diagnostic("fatal", "incomplete_escape", nil, self.$range(self.ts, $rb_plus(self.ts, 1)));; + } else if ($eqeqeq(361, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(327, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION_BEGIN')); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(331, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$emit("tBDOT2") + } else { + self.$emit("tDOT2") + }; + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(332, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + followed_by_nl = $rb_minus(self.te, 1)['$=='](self.newline_s); + nl_emitted = false; + dots_te = ($truthy(followed_by_nl) ? ($rb_minus(self.te, 1)) : (self.te)); + if ($truthy($rb_ge(self.version, 30))) { + if (($truthy(self.lambda_stack['$any?']()) && ($eqeq($rb_plus(self.lambda_stack.$last(), 1), self.paren_nest)))) { + self.$emit("tDOT3", "...".$freeze(), self.ts, dots_te) + } else { + + self.$emit("tBDOT3", "...".$freeze(), self.ts, dots_te); + if ((($truthy($rb_ge(self.version, 31)) && ($truthy(followed_by_nl))) && ($truthy(self.context.$in_argdef())))) { + + self.$emit("tNL", $rb_minus(self.te, 1), self.te); + nl_emitted = true; + }; + } + } else if ($truthy($rb_ge(self.version, 27))) { + self.$emit("tBDOT3", "...".$freeze(), self.ts, dots_te) + } else { + self.$emit("tDOT3", "...".$freeze(), self.ts, dots_te) + }; + if (($truthy(followed_by_nl) && ($not(nl_emitted)))) { + p = $rb_minus(p, 1) + }; + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(307, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tIDENTIFIER"); + if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { + + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + };; + } else if ($eqeqeq(317, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(319, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + self.cs_before_block_comment = self.cs; + + self.cs = 186; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(322, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(54, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + self.$diagnostic("fatal", "string_eof", nil, self.$range(self.ts, $rb_plus(self.ts, 1)));; + } else if ($eqeqeq(73, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + self.$diagnostic("error", "unterminated_heredoc_id", nil, self.$range(self.ts, $rb_plus(self.ts, 1)));; + } else if ($eqeqeq(74, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(48, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + self.$emit("tIDENTIFIER"); + if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { + + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + };; + } else if ($eqeqeq(53, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + } else if ($eqeqeq(68, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(51, $ret_or_1)) { + + if ($eqeqeq(99, ($ret_or_2 = self.act))) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = $rb_minus(p, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(106, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$diagnostic("error", "unterminated_heredoc_id", nil, self.$range(self.ts, $rb_plus(self.ts, 1))); + } else if ($eqeqeq(117, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + if ($truthy($rb_ge(self.version, 27))) { + + self.$emit("tPIPE", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = $rb_minus(p, 1); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + p = $rb_minus(p, 2); + + self.cs = 810; + _goto_level = _again; + continue;;; + }; + } else if ($eqeqeq(121, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('PUNCTUATION_BEGIN')); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(122, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("kRESCUE", "rescue".$freeze(), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 539; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(123, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS_BEGIN')); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(127, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;; + } else if ($eqeqeq(128, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tIDENTIFIER"); + if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { + + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(132, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;; + } else { + nil + }; + } else if ($eqeqeq(395, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(396, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(397, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(401, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(77, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(405, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + + self.cs = self.$push_literal(self.$tok(), self.$tok(), self.ts); + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(404, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(403, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(407, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(406, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(76, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + p = $rb_minus(p, 1); + + self.cs = 563; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(440, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tLAMBDA", "->".$freeze(), self.ts, $rb_plus(self.ts, 2)); + self.lambda_stack.$push(self.paren_nest); + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(86, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("kCLASS", "class".$freeze(), self.ts, $rb_plus(self.ts, 5)); + self.$emit("tLSHFT", "<<".$freeze(), $rb_minus(self.te, 2), self.te); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(415, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + $b = [self.$tok(), self.$tok()['$[]'](-1).$chr()], (type = $b[0]), (delimiter = $b[1]), $b; + + self.cs = self.$push_literal(type, delimiter, self.ts, nil, false, false, true); + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(79, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(436, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 473; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(489, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(429, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(434, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tOP_ASGN", self.$tok(self.ts, $rb_minus(self.te, 1))); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(420, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tEH", "?".$freeze()); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(417, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(419, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tSEMI", ";".$freeze()); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(494, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$diagnostic("error", "bare_backslash", nil, self.$range(self.ts, $rb_plus(self.ts, 1))); + p = $rb_minus(p, 1);; + } else if ($eqeqeq(414, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$diagnostic("fatal", "unexpected", $hash2(["character"], {"character": self.$tok().$inspect()['$[]']($range(1, -2, false))}));; + } else if ($eqeqeq(413, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(505, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('KEYWORDS')); + self.cs = 352; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(503, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("kCLASS", "class".$freeze(), self.ts, $rb_plus(self.ts, 5)); + self.$emit("tLSHFT", "<<".$freeze(), $rb_minus(self.te, 2), self.te); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(502, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('KEYWORDS')); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(444, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$diagnostic("error", "no_dot_digit_literal");; + } else if ($eqeqeq(491, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tCONSTANT"); + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(433, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + + $writer = [self.top, self.cs]; + $send(self.stack, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.top = $rb_plus(self.top, 1); + self.cs = 347; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(441, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 473; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(497, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tIDENTIFIER"); + if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { + + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + };; + } else if ($eqeqeq(439, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(435, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(428, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(442, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(426, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(432, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$diagnostic("fatal", "unexpected", $hash2(["character"], {"character": self.$tok().$inspect()['$[]']($range(1, -2, false))}));; + } else if ($eqeqeq(84, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(80, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + self.$diagnostic("error", "no_dot_digit_literal");; + } else if ($eqeqeq(83, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(78, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + self.$diagnostic("fatal", "unexpected", $hash2(["character"], {"character": self.$tok().$inspect()['$[]']($range(1, -2, false))}));; + } else if ($eqeqeq(81, $ret_or_1)) { + + if ($eqeqeq(145, ($ret_or_2 = self.act))) { + + + p = $rb_minus(self.te, 1);; + if ($eqeq(self.lambda_stack.$last(), self.paren_nest)) { + + self.lambda_stack.$pop(); + if ($eqeq(self.$tok(), "{".$freeze())) { + self.$emit("tLAMBEG", "{".$freeze()) + } else { + self.$emit("kDO_LAMBDA", "do".$freeze()) + }; + } else if ($eqeq(self.$tok(), "{".$freeze())) { + self.$emit("tLCURLY", "{".$freeze()) + } else { + self.$emit_do() + }; + if ($eqeq(self.$tok(), "{".$freeze())) { + self.paren_nest = $rb_plus(self.paren_nest, 1) + }; + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(146, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + self.cs = 352; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(147, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("kCLASS", "class".$freeze(), self.ts, $rb_plus(self.ts, 5)); + self.$emit("tLSHFT", "<<".$freeze(), $rb_minus(self.te, 2), self.te); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(148, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(149, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(150, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + self.cs = 539; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(151, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + if (($truthy(self['$version?'](18)) && ($eqeq(self.$tok(), "not".$freeze())))) { + + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = 494; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(152, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + if ($truthy(self['$version?'](18))) { + + self.$emit("tIDENTIFIER"); + if (!($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { + self.cs = self.$arg_or_cmdarg(cmd_state) + }; + } else { + self.$emit("k__ENCODING__", "__ENCODING__".$freeze()) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(153, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(154, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(156, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + if ($truthy(self['$version?'](18, 19, 20))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": self.$tok($rb_minus(self.te, 1), self.te)}), self.$range($rb_minus(self.te, 1), self.te)) + } else { + + self.$emit("tINTEGER", self.$tok(self.ts, $rb_minus(self.te, 1)).$to_i(), self.ts, $rb_minus(self.te, 1)); + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(157, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + if ($truthy(self['$version?'](18, 19, 20))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": self.$tok($rb_minus(self.te, 1), self.te)}), self.$range($rb_minus(self.te, 1), self.te)) + } else { + + self.$emit("tFLOAT", self.$tok(self.ts, $rb_minus(self.te, 1)).$to_f(), self.ts, $rb_minus(self.te, 1)); + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(158, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(160, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tCONSTANT"); + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(164, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tIDENTIFIER"); + if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { + + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(165, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + if ($eqeq(tm, self.te)) { + self.$emit("tFID") + } else { + + self.$emit("tIDENTIFIER", self.$tok(self.ts, tm), self.ts, tm); + p = $rb_minus(tm, 1); + }; + self.cs = 494; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(167, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('PUNCTUATION')); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(168, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('PUNCTUATION')); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + nil + }; + } else if ($eqeqeq(516, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); + if ($truthy($rb_lt(self.version, 27))) { + + p = $rb_minus(p, 1); + self.cs = 186; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.$emit("tBDOT3"); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + };; + } else if ($eqeqeq(95, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(tm, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(510, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); + p = $rb_minus(p, 1); + self.cs = 186; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(513, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_lt(self.version, 27))) { + + self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); + p = $rb_minus(p, 1); + self.cs = 186; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + };; + } else if ($eqeqeq(515, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); + if ($truthy($rb_lt(self.version, 27))) { + + p = $rb_minus(p, 1); + self.cs = 186; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.$emit("tBDOT2"); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + };; + } else if ($eqeqeq(514, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(tm, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(512, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); + p = $rb_minus(p, 1); + self.cs = 186; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(90, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + if ($truthy($rb_lt(self.version, 27))) { + + self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); + p = $rb_minus(p, 1); + self.cs = 186; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + };; + } else if ($eqeqeq(87, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); + p = $rb_minus(p, 1); + self.cs = 186; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(91, $ret_or_1)) { + + if ($eqeqeq(181, ($ret_or_2 = self.act))) { + + + p = $rb_minus(self.te, 1);; + if ($truthy($rb_lt(self.version, 27))) { + + self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); + p = $rb_minus(p, 1); + self.cs = 186; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(185, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); + p = $rb_minus(p, 1); + self.cs = 186; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + nil + }; + } else if ($eqeqeq(519, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_comment(self.eq_begin_s, self.te); + + self.cs = self.cs_before_block_comment; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(518, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.$diagnostic("fatal", "embedded_document", nil, self.$range(self.eq_begin_s, $rb_plus(self.eq_begin_s, "=begin".$length())));; + } else if ($eqeqeq(106, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + self.eq_begin_s = self.ts; + + self.cs = 998; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(2, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(pe, 3);; + } else if ($eqeqeq(98, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + cmd_state = true; + p = $rb_minus(p, 1); + + self.cs = 802; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(99, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;; + } else if ($eqeqeq(100, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + } else if ($eqeqeq(105, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + self.eq_begin_s = self.ts; + + self.cs = 998; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(104, $ret_or_1)) { + + self.te = p; + p = $rb_minus(p, 1); + + cmd_state = true; + p = $rb_minus(p, 1); + + self.cs = 802; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(1, $ret_or_1)) { + + + p = $rb_minus(self.te, 1);; + + cmd_state = true; + p = $rb_minus(p, 1); + + self.cs = 802; + _goto_level = _again; + continue;;;; + } else if ($eqeqeq(67, $ret_or_1)) { + + + self.newline_s = p;; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + } else if ($eqeqeq(110, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };;; + } else if ($eqeqeq(143, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };;; + } else if ($eqeqeq(174, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };;; + } else if ($eqeqeq(180, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };;; + } else if ($eqeqeq(186, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };;; + } else if ($eqeqeq(193, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };;; + } else if ($eqeqeq(196, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };;; + } else if ($eqeqeq(204, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };;; + } else if ($eqeqeq(275, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(266, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + p = $rb_minus(tm, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(258, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(358, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + escape = $hash2([" ", "\r", "\n", "\t", "\v", "\f"], {" ": "\\s", "\r": "\\r", "\n": "\\n", "\t": "\\t", "\v": "\\v", "\f": "\\f"})['$[]'](self.source_buffer.$slice($rb_plus(self.ts, 1))); + self.$diagnostic("warning", "invalid_escape_use", $hash2(["escape"], {"escape": escape}), self.$range()); + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(333, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + followed_by_nl = $rb_minus(self.te, 1)['$=='](self.newline_s); + nl_emitted = false; + dots_te = ($truthy(followed_by_nl) ? ($rb_minus(self.te, 1)) : (self.te)); + if ($truthy($rb_ge(self.version, 30))) { + if (($truthy(self.lambda_stack['$any?']()) && ($eqeq($rb_plus(self.lambda_stack.$last(), 1), self.paren_nest)))) { + self.$emit("tDOT3", "...".$freeze(), self.ts, dots_te) + } else { + + self.$emit("tBDOT3", "...".$freeze(), self.ts, dots_te); + if ((($truthy($rb_ge(self.version, 31)) && ($truthy(followed_by_nl))) && ($truthy(self.context.$in_argdef())))) { + + self.$emit("tNL", $rb_minus(self.te, 1), self.te); + nl_emitted = true; + }; + } + } else if ($truthy($rb_ge(self.version, 27))) { + self.$emit("tBDOT3", "...".$freeze(), self.ts, dots_te) + } else { + self.$emit("tDOT3", "...".$freeze(), self.ts, dots_te) + }; + if (($truthy(followed_by_nl) && ($not(nl_emitted)))) { + p = $rb_minus(p, 1) + }; + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(321, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + self.cs_before_block_comment = self.cs; + + self.cs = 186; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(443, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + if ($eqeq(self.paren_nest, 0)) { + self.$diagnostic("warning", "triple_dot_at_eol", nil, self.$range(self.ts, $rb_minus(self.te, 1))) + }; + self.$emit("tDOT3", "...".$freeze(), self.ts, $rb_minus(self.te, 1)); + p = $rb_minus(p, 1); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(520, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + self.$emit_comment(self.eq_begin_s, self.te); + + self.cs = self.cs_before_block_comment; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(517, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1);; + } else if ($eqeqeq(107, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + self.eq_begin_s = self.ts; + + self.cs = 998; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(3, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + p = $rb_minus(pe, 3);;; + } else if ($eqeqeq(465, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$3(chars){var self = $$3.$$s == null ? this : $$3.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tRATIONAL", self.$Rational(chars));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(463, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$4(chars){var self = $$4.$$s == null ? this : $$4.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tIMAGINARY", self.$Complex(0, chars));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(468, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$5(chars){var self = $$5.$$s == null ? this : $$5.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tIMAGINARY", self.$Complex(0, self.$Rational(chars)));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(466, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$6(chars){var self = $$6.$$s == null ? this : $$6.$$s; + if (self.ts == null) self.ts = nil; + if (self.te == null) self.te = nil; + + + + if (chars == null) chars = nil;; + self.$emit("tINTEGER", chars, self.ts, $rb_minus(self.te, 2)); + return (p = $rb_minus(p, 2));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(464, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$7(chars){var self = $$7.$$s == null ? this : $$7.$$s; + if (self.ts == null) self.ts = nil; + if (self.te == null) self.te = nil; + + + + if (chars == null) chars = nil;; + self.$emit("tINTEGER", chars, self.ts, $rb_minus(self.te, 2)); + return (p = $rb_minus(p, 2));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(467, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$8(chars){var self = $$8.$$s == null ? this : $$8.$$s; + if (self.ts == null) self.ts = nil; + if (self.te == null) self.te = nil; + + + + if (chars == null) chars = nil;; + self.$emit("tINTEGER", chars, self.ts, $rb_minus(self.te, 6)); + return (p = $rb_minus(p, 6));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(456, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$9(chars){var self = $$9.$$s == null ? this : $$9.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tIMAGINARY", self.$Complex(0, self.$Float(chars)));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(457, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$10(chars){var self = $$10.$$s == null ? this : $$10.$$s; + if (self.ts == null) self.ts = nil; + if (self.te == null) self.te = nil; + + + + if (chars == null) chars = nil;; + self.$emit("tFLOAT", self.$Float(chars), self.ts, $rb_minus(self.te, 2)); + return (p = $rb_minus(p, 2));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(458, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$11(chars){var self = $$11.$$s == null ? this : $$11.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tRATIONAL", self.$Rational(chars));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(460, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$12(chars){var self = $$12.$$s == null ? this : $$12.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tIMAGINARY", self.$Complex(0, self.$Rational(chars)));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(459, $ret_or_1)) { + + + self.num_xfrm = $send(self, 'lambda', [], function $$13(chars){var self = $$13.$$s == null ? this : $$13.$$s; + if (self.ts == null) self.ts = nil; + if (self.te == null) self.te = nil; + + + + if (chars == null) chars = nil;; + self.$emit("tFLOAT", self.$Float(chars), self.ts, $rb_minus(self.te, 6)); + return (p = $rb_minus(p, 6));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(137, $ret_or_1)) { + + + self.escape = ""; + codepoints = self.$tok($rb_plus(self.escape_s, 2), $rb_minus(p, 1)); + codepoint_s = $rb_plus(self.escape_s, 2); + if ($truthy($rb_lt(self.version, 24))) { + + if (($truthy(codepoints['$start_with?'](" ")) || ($truthy(codepoints['$start_with?']("\t"))))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_plus(self.escape_s, 2), $rb_plus(self.escape_s, 3))) + }; + if ($truthy((spaces_p = codepoints.$index(/[ \t]{2}/)))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_plus($rb_plus(codepoint_s, spaces_p), 1), $rb_plus($rb_plus(codepoint_s, spaces_p), 2))) + }; + if (($truthy(codepoints['$end_with?'](" ")) || ($truthy(codepoints['$end_with?']("\t"))))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(p, 1), p)) + }; + }; + (function(){var $brk = Opal.new_brk(); try {return $send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/), 'each', [], function $$14($mlhs_tmp1){var $c, $d, self = $$14.$$s == null ? this : $$14.$$s, codepoint_str = nil, spaces = nil, codepoint = nil; + if (self.escape == null) self.escape = nil; + + + + if ($mlhs_tmp1 == null) $mlhs_tmp1 = nil;; + $d = $mlhs_tmp1, $c = $to_ary($d), (codepoint_str = ($c[0] == null ? nil : $c[0])), (spaces = ($c[1] == null ? nil : $c[1])), $d; + if ($truthy(spaces)) { + return (codepoint_s = $rb_plus(codepoint_s, spaces.$length())) + } else { + + codepoint = codepoint_str.$to_i(16); + if ($truthy($rb_ge(codepoint, 1114112))) { + + self.$diagnostic("error", "unicode_point_too_large", nil, self.$range(codepoint_s, $rb_plus(codepoint_s, codepoint_str.$length()))); + + Opal.brk(nil, $brk); + }; + self.escape = $rb_plus(self.escape, codepoint.$chr($$$($$('Encoding'), 'UTF_8'))); + return (codepoint_s = $rb_plus(codepoint_s, codepoint_str.$length())); + };}, {$$arity: 1, $$s: self, $$brk: $brk, $$has_top_level_mlhs_arg: true}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})();; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(168, $ret_or_1)) { + + + self.escape = ""; + codepoints = self.$tok($rb_plus(self.escape_s, 2), $rb_minus(p, 1)); + codepoint_s = $rb_plus(self.escape_s, 2); + if ($truthy($rb_lt(self.version, 24))) { + + if (($truthy(codepoints['$start_with?'](" ")) || ($truthy(codepoints['$start_with?']("\t"))))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_plus(self.escape_s, 2), $rb_plus(self.escape_s, 3))) + }; + if ($truthy((spaces_p = codepoints.$index(/[ \t]{2}/)))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_plus($rb_plus(codepoint_s, spaces_p), 1), $rb_plus($rb_plus(codepoint_s, spaces_p), 2))) + }; + if (($truthy(codepoints['$end_with?'](" ")) || ($truthy(codepoints['$end_with?']("\t"))))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(p, 1), p)) + }; + }; + (function(){var $brk = Opal.new_brk(); try {return $send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/), 'each', [], function $$15($mlhs_tmp1){var $c, $d, self = $$15.$$s == null ? this : $$15.$$s, codepoint_str = nil, spaces = nil, codepoint = nil; + if (self.escape == null) self.escape = nil; + + + + if ($mlhs_tmp1 == null) $mlhs_tmp1 = nil;; + $d = $mlhs_tmp1, $c = $to_ary($d), (codepoint_str = ($c[0] == null ? nil : $c[0])), (spaces = ($c[1] == null ? nil : $c[1])), $d; + if ($truthy(spaces)) { + return (codepoint_s = $rb_plus(codepoint_s, spaces.$length())) + } else { + + codepoint = codepoint_str.$to_i(16); + if ($truthy($rb_ge(codepoint, 1114112))) { + + self.$diagnostic("error", "unicode_point_too_large", nil, self.$range(codepoint_s, $rb_plus(codepoint_s, codepoint_str.$length()))); + + Opal.brk(nil, $brk); + }; + self.escape = $rb_plus(self.escape, codepoint.$chr($$$($$('Encoding'), 'UTF_8'))); + return (codepoint_s = $rb_plus(codepoint_s, codepoint_str.$length())); + };}, {$$arity: 1, $$s: self, $$brk: $brk, $$has_top_level_mlhs_arg: true}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})();; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(382, $ret_or_1)) { + + + self.escape = ""; + codepoints = self.$tok($rb_plus(self.escape_s, 2), $rb_minus(p, 1)); + codepoint_s = $rb_plus(self.escape_s, 2); + if ($truthy($rb_lt(self.version, 24))) { + + if (($truthy(codepoints['$start_with?'](" ")) || ($truthy(codepoints['$start_with?']("\t"))))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_plus(self.escape_s, 2), $rb_plus(self.escape_s, 3))) + }; + if ($truthy((spaces_p = codepoints.$index(/[ \t]{2}/)))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_plus($rb_plus(codepoint_s, spaces_p), 1), $rb_plus($rb_plus(codepoint_s, spaces_p), 2))) + }; + if (($truthy(codepoints['$end_with?'](" ")) || ($truthy(codepoints['$end_with?']("\t"))))) { + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(p, 1), p)) + }; + }; + (function(){var $brk = Opal.new_brk(); try {return $send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/), 'each', [], function $$16($mlhs_tmp1){var $c, $d, self = $$16.$$s == null ? this : $$16.$$s, codepoint_str = nil, spaces = nil, codepoint = nil; + if (self.escape == null) self.escape = nil; + + + + if ($mlhs_tmp1 == null) $mlhs_tmp1 = nil;; + $d = $mlhs_tmp1, $c = $to_ary($d), (codepoint_str = ($c[0] == null ? nil : $c[0])), (spaces = ($c[1] == null ? nil : $c[1])), $d; + if ($truthy(spaces)) { + return (codepoint_s = $rb_plus(codepoint_s, spaces.$length())) + } else { + + codepoint = codepoint_str.$to_i(16); + if ($truthy($rb_ge(codepoint, 1114112))) { + + self.$diagnostic("error", "unicode_point_too_large", nil, self.$range(codepoint_s, $rb_plus(codepoint_s, codepoint_str.$length()))); + + Opal.brk(nil, $brk); + }; + self.escape = $rb_plus(self.escape, codepoint.$chr($$$($$('Encoding'), 'UTF_8'))); + return (codepoint_s = $rb_plus(codepoint_s, codepoint_str.$length())); + };}, {$$arity: 1, $$s: self, $$brk: $brk, $$has_top_level_mlhs_arg: true}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})();; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(118, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(149, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(363, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(121, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_escape");; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(152, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_escape");; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(366, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_escape");; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(123, $ret_or_1)) { + + + self.escape = "\u007F";; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(154, $ret_or_1)) { + + + self.escape = "\u007F";; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(368, $ret_or_1)) { + + + self.escape = "\u007F";; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(120, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok(self.escape_s, p).$to_i(8)['$%'](256));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(151, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok(self.escape_s, p).$to_i(8)['$%'](256));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(365, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok(self.escape_s, p).$to_i(8)['$%'](256));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(140, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(171, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(385, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(139, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_hex_escape", nil, self.$range($rb_minus(self.escape_s, 1), $rb_plus(p, 2)));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(170, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_hex_escape", nil, self.$range($rb_minus(self.escape_s, 1), $rb_plus(p, 2)));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(384, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_hex_escape", nil, self.$range($rb_minus(self.escape_s, 1), $rb_plus(p, 2)));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(134, $ret_or_1)) { + + + self.escape = self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16).$chr($$$($$('Encoding'), 'UTF_8'));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(165, $ret_or_1)) { + + + self.escape = self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16).$chr($$$($$('Encoding'), 'UTF_8'));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(379, $ret_or_1)) { + + + self.escape = self.$tok($rb_plus(self.escape_s, 1), p).$to_i(16).$chr($$$($$('Encoding'), 'UTF_8'));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(133, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(164, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(378, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(138, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(169, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(383, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(135, $ret_or_1)) { + + + self.$diagnostic("fatal", "unterminated_unicode", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(166, $ret_or_1)) { + + + self.$diagnostic("fatal", "unterminated_unicode", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(380, $ret_or_1)) { + + + self.$diagnostic("fatal", "unterminated_unicode", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(119, $ret_or_1)) { + + + self.$diagnostic("fatal", "escape_eof", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(150, $ret_or_1)) { + + + self.$diagnostic("fatal", "escape_eof", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(364, $ret_or_1)) { + + + self.$diagnostic("fatal", "escape_eof", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(177, $ret_or_1)) { + + + self.escape_s = p; + self.escape = nil;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(182, $ret_or_1)) { + + + self.escape_s = p; + self.escape = nil;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(58, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.newline_s = p;; + } else if ($eqeqeq(31, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + tm = p;; + } else if ($eqeqeq(33, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + tm = p;; + } else if ($eqeqeq(35, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + tm = p;; + } else if ($eqeqeq(219, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(238, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(246, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(34, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = $rb_plus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(277, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(269, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(288, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(300, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(296, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(59, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = $rb_plus(p, 1); + + self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = $rb_minus(p, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(50, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = $rb_plus(p, 1); + + self.$emit("tIDENTIFIER", ident_tok, ident_ts, ident_te); + p = $rb_minus(ident_te, 1); + if ((($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](ident_tok)))) && ($truthy($rb_lt(self.version, 25))))) { + self.cs = 465 + } else { + self.cs = 525 + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(318, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(402, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(398, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy(self.context.$in_kwarg())) { + + p = $rb_minus(p, 1); + + self.cs = 810; + _goto_level = _again; + continue;;; + } else { + + self.cs = 186; + _goto_level = _again; + continue;; + };;; + } else if ($eqeqeq(411, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(408, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1); + + + self.cs = 186; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(495, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(427, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1); + + + self.cs = 990; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(101, $ret_or_1)) { + + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(268, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + current_literal = self.$literal(); + if ($truthy(current_literal)) { + current_literal.$start_interp_brace() + };; + + self.te = p; + p = $rb_minus(p, 1); + + if ($eqeq(self.lambda_stack.$last(), self.paren_nest)) { + + self.lambda_stack.$pop(); + self.$emit("tLAMBEG", "{".$freeze(), $rb_minus(self.te, 1), self.te); + } else { + self.$emit("tLCURLY", "{".$freeze(), $rb_minus(self.te, 1), self.te) + }; + self.command_start = true; + self.paren_nest = $rb_plus(self.paren_nest, 1); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(290, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + current_literal = self.$literal(); + if ($truthy(current_literal)) { + current_literal.$start_interp_brace() + };; + + self.te = p; + p = $rb_minus(p, 1); + + if ($eqeq(self.lambda_stack.$last(), self.paren_nest)) { + + self.lambda_stack.$pop(); + self.$emit("tLAMBEG", "{".$freeze()); + } else { + self.$emit("tLBRACE_ARG", "{".$freeze()) + }; + self.paren_nest = $rb_plus(self.paren_nest, 1); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(393, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + current_literal = self.$literal(); + if ($truthy(current_literal)) { + current_literal.$start_interp_brace() + };; + + self.te = p; + p = $rb_minus(p, 1); + + if ($eqeq(self.lambda_stack.$last(), self.paren_nest)) { + + self.lambda_stack.$pop(); + self.command_start = true; + self.$emit("tLAMBEG", "{".$freeze()); + } else { + self.$emit("tLBRACE", "{".$freeze()) + }; + self.paren_nest = $rb_plus(self.paren_nest, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(508, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + current_literal = self.$literal(); + if ($truthy(current_literal)) { + current_literal.$start_interp_brace() + };; + + self.te = p; + p = $rb_minus(p, 1); + + if ($eqeq(self.lambda_stack.$last(), self.paren_nest)) { + + self.lambda_stack.$pop(); + if ($eqeq(self.$tok(), "{".$freeze())) { + self.$emit("tLAMBEG", "{".$freeze()) + } else { + self.$emit("kDO_LAMBDA", "do".$freeze()) + }; + } else if ($eqeq(self.$tok(), "{".$freeze())) { + self.$emit("tLCURLY", "{".$freeze()) + } else { + self.$emit_do() + }; + if ($eqeq(self.$tok(), "{".$freeze())) { + self.paren_nest = $rb_plus(self.paren_nest, 1) + }; + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(509, $ret_or_1)) { + + + current_literal = self.$literal(); + if ($truthy(current_literal)) { + if ($truthy(current_literal.$end_interp_brace_and_try_closing())) { + + if ($truthy(self['$version?'](18, 19))) { + + self.$emit("tRCURLY", "}".$freeze(), $rb_minus(p, 1), p); + self.cond.$lexpop(); + self.cmdarg.$lexpop(); + } else { + self.$emit("tSTRING_DEND", "}".$freeze(), $rb_minus(p, 1), p) + }; + if ($truthy(current_literal.$saved_herebody_s())) { + self.herebody_s = current_literal.$saved_herebody_s() + }; + p = $rb_minus(p, 1); + self.cs = self.$next_state_for_literal(current_literal); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } + }; + self.paren_nest = $rb_minus(self.paren_nest, 1);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + if ($truthy($rb_lt(self.version, 24))) { + + self.cond.$lexpop(); + self.cmdarg.$lexpop(); + } else { + + self.cond.$pop(); + self.cmdarg.$pop(); + }; + if (($eqeq(self.$tok(), "}".$freeze()) || ($eqeq(self.$tok(), "]".$freeze())))) { + if ($truthy($rb_ge(self.version, 25))) { + self.cs = 810 + } else { + self.cs = 531 + } + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(61, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + } else if ($eqeqeq(65, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.newline_s = p;; + } else if ($eqeqeq(222, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(237, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(249, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(271, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1); + + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(286, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(298, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(324, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(400, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(410, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(431, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(103, $ret_or_1)) { + + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(243, $ret_or_1)) { + + + tm = p;; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tFID", self.$tok(self.ts, tm), self.ts, tm); + self.cs = self.$arg_or_cmdarg(cmd_state); + p = $rb_minus(tm, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(338, $ret_or_1)) { + + + tm = p;; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(309, $ret_or_1)) { + + + tm = p;; + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(424, $ret_or_1)) { + + + tm = p;; + + if ($eqeqeq(145, ($ret_or_2 = self.act))) { + + + p = $rb_minus(self.te, 1);; + if ($eqeq(self.lambda_stack.$last(), self.paren_nest)) { + + self.lambda_stack.$pop(); + if ($eqeq(self.$tok(), "{".$freeze())) { + self.$emit("tLAMBEG", "{".$freeze()) + } else { + self.$emit("kDO_LAMBDA", "do".$freeze()) + }; + } else if ($eqeq(self.$tok(), "{".$freeze())) { + self.$emit("tLCURLY", "{".$freeze()) + } else { + self.$emit_do() + }; + if ($eqeq(self.$tok(), "{".$freeze())) { + self.paren_nest = $rb_plus(self.paren_nest, 1) + }; + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(146, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + self.cs = 352; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(147, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("kCLASS", "class".$freeze(), self.ts, $rb_plus(self.ts, 5)); + self.$emit("tLSHFT", "<<".$freeze(), $rb_minus(self.te, 2), self.te); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(148, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(149, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(150, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + self.cs = 539; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(151, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + if (($truthy(self['$version?'](18)) && ($eqeq(self.$tok(), "not".$freeze())))) { + + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = 494; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(152, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + if ($truthy(self['$version?'](18))) { + + self.$emit("tIDENTIFIER"); + if (!($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { + self.cs = self.$arg_or_cmdarg(cmd_state) + }; + } else { + self.$emit("k__ENCODING__", "__ENCODING__".$freeze()) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(153, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS')); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(154, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(156, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + if ($truthy(self['$version?'](18, 19, 20))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": self.$tok($rb_minus(self.te, 1), self.te)}), self.$range($rb_minus(self.te, 1), self.te)) + } else { + + self.$emit("tINTEGER", self.$tok(self.ts, $rb_minus(self.te, 1)).$to_i(), self.ts, $rb_minus(self.te, 1)); + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(157, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + if ($truthy(self['$version?'](18, 19, 20))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": self.$tok($rb_minus(self.te, 1), self.te)}), self.$range($rb_minus(self.te, 1), self.te)) + } else { + + self.$emit("tFLOAT", self.$tok(self.ts, $rb_minus(self.te, 1)).$to_f(), self.ts, $rb_minus(self.te, 1)); + p = $rb_minus(p, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(158, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(160, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tCONSTANT"); + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(164, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tIDENTIFIER"); + if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { + + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(165, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + if ($eqeq(tm, self.te)) { + self.$emit("tFID") + } else { + + self.$emit("tIDENTIFIER", self.$tok(self.ts, tm), self.ts, tm); + p = $rb_minus(tm, 1); + }; + self.cs = 494; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(167, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('PUNCTUATION')); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(168, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('PUNCTUATION')); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + nil + };; + } else if ($eqeqeq(244, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tFID", self.$tok(self.ts, tm), self.ts, tm); + self.cs = self.$arg_or_cmdarg(cmd_state); + p = $rb_minus(tm, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(339, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(311, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(425, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + if ($eqeq(tm, self.te)) { + self.$emit("tFID") + } else { + + self.$emit("tIDENTIFIER", self.$tok(self.ts, tm), self.ts, tm); + p = $rb_minus(tm, 1); + }; + self.cs = 494; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(340, $ret_or_1)) { + + + tm = p;; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(312, $ret_or_1)) { + + + tm = p;; + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(341, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(313, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(345, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(316, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(344, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(315, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + if ($eqeqeq(99, ($ret_or_2 = self.act))) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = $rb_minus(p, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(106, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$diagnostic("error", "unterminated_heredoc_id", nil, self.$range(self.ts, $rb_plus(self.ts, 1))); + } else if ($eqeqeq(117, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + if ($truthy($rb_ge(self.version, 27))) { + + self.$emit("tPIPE", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = $rb_minus(p, 1); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + p = $rb_minus(p, 2); + + self.cs = 810; + _goto_level = _again; + continue;;; + }; + } else if ($eqeqeq(121, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('PUNCTUATION_BEGIN')); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(122, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("kRESCUE", "rescue".$freeze(), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 539; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(123, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit_table($$('KEYWORDS_BEGIN')); + self.command_start = true; + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else if ($eqeqeq(127, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;; + } else if ($eqeqeq(128, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + self.$emit("tIDENTIFIER"); + if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { + + self.cs = 465; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = self.$arg_or_cmdarg(cmd_state); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + } else if ($eqeqeq(132, $ret_or_2)) { + + + p = $rb_minus(self.te, 1);; + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;; + } else { + nil + };; + } else if ($eqeqeq(342, $ret_or_1)) { + + + tm = $rb_minus(p, 3);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(314, $ret_or_1)) { + + + tm = $rb_minus(p, 3);; + + self.te = p; + p = $rb_minus(p, 1); + + p = $rb_minus(self.ts, 1); + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(343, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(490, $ret_or_1)) { + + + tm = $rb_minus(p, 2);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tCONSTANT", self.$tok(self.ts, tm), self.ts, tm); + p = $rb_minus(tm, 1); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(267, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + self.paren_nest = $rb_plus(self.paren_nest, 1);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tLBRACK", "[".$freeze(), $rb_minus(self.te, 1), self.te); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(386, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + self.paren_nest = $rb_plus(self.paren_nest, 1);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tLBRACK", "[".$freeze()); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(493, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + self.paren_nest = $rb_plus(self.paren_nest, 1);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tLBRACK2", "[".$freeze()); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(496, $ret_or_1)) { + + + self.paren_nest = $rb_minus(self.paren_nest, 1);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + if ($truthy($rb_lt(self.version, 24))) { + + self.cond.$lexpop(); + self.cmdarg.$lexpop(); + } else { + + self.cond.$pop(); + self.cmdarg.$pop(); + }; + if (($eqeq(self.$tok(), "}".$freeze()) || ($eqeq(self.$tok(), "]".$freeze())))) { + if ($truthy($rb_ge(self.version, 25))) { + self.cs = 810 + } else { + self.cs = 531 + } + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(259, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + self.paren_nest = $rb_plus(self.paren_nest, 1); + if ($truthy(self['$version?'](18))) { + self.command_start = true + };; + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy(self['$version?'](18))) { + + self.$emit("tLPAREN2", "(".$freeze(), $rb_minus(self.te, 1), self.te); + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.$emit("tLPAREN_ARG", "(".$freeze(), $rb_minus(self.te, 1), self.te); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + };;; + } else if ($eqeqeq(272, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + self.paren_nest = $rb_plus(self.paren_nest, 1); + if ($truthy(self['$version?'](18))) { + self.command_start = true + };; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tLPAREN2", "(".$freeze()); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(280, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + self.paren_nest = $rb_plus(self.paren_nest, 1); + if ($truthy(self['$version?'](18))) { + self.command_start = true + };; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tLPAREN_ARG", "(".$freeze(), $rb_minus(self.te, 1), self.te); + if ($truthy(self['$version?'](18))) { + + self.cs = 802; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + };;; + } else if ($eqeqeq(328, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + self.paren_nest = $rb_plus(self.paren_nest, 1); + if ($truthy(self['$version?'](18))) { + self.command_start = true + };; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("tLPAREN", "(".$freeze()); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(437, $ret_or_1)) { + + + self.cond.$push(false); + self.cmdarg.$push(false); + self.paren_nest = $rb_plus(self.paren_nest, 1); + if ($truthy(self['$version?'](18))) { + self.command_start = true + };; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(438, $ret_or_1)) { + + + self.paren_nest = $rb_minus(self.paren_nest, 1);; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit_table($$('PUNCTUATION')); + if ($truthy($rb_lt(self.version, 24))) { + + self.cond.$lexpop(); + self.cmdarg.$lexpop(); + } else { + + self.cond.$pop(); + self.cmdarg.$pop(); + }; + if (($eqeq(self.$tok(), "}".$freeze()) || ($eqeq(self.$tok(), "]".$freeze())))) { + if ($truthy($rb_ge(self.version, 25))) { + self.cs = 810 + } else { + self.cs = 531 + } + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(72, $ret_or_1)) { + + + heredoc_e = p;; + + self.newline_s = p;; + } else if ($eqeqeq(353, $ret_or_1)) { + + + new_herebody_s = p;; + + self.te = p; + p = $rb_minus(p, 1); + + self.$tok(self.ts, heredoc_e)['$=~'](/^<<(-?)(~?)(["'`]?)(.*)\3$/m); + indent = ($truthy(($ret_or_2 = (($b = $gvars['~']) === nil ? nil : $b['$[]'](1))['$empty?']()['$!']())) ? ($ret_or_2) : ((($b = $gvars['~']) === nil ? nil : $b['$[]'](2))['$empty?']()['$!']())); + dedent_body = (($b = $gvars['~']) === nil ? nil : $b['$[]'](2))['$empty?']()['$!'](); + type = ($truthy((($b = $gvars['~']) === nil ? nil : $b['$[]'](3))['$empty?']()) ? ("<<\"".$freeze()) : ($rb_plus("<<".$freeze(), (($b = $gvars['~']) === nil ? nil : $b['$[]'](3))))); + delimiter = (($b = $gvars['~']) === nil ? nil : $b['$[]'](4)); + if ($truthy($rb_ge(self.version, 27))) { + if (($truthy($rb_gt(delimiter.$count("\n"), 0)) || ($truthy($rb_gt(delimiter.$count("\r"), 0))))) { + self.$diagnostic("error", "unterminated_heredoc_id", nil, self.$range(self.ts, $rb_plus(self.ts, 1))) + } + } else if ($truthy($rb_ge(self.version, 24))) { + if ($truthy($rb_gt(delimiter.$count("\n"), 0))) { + if ($truthy(delimiter['$end_with?']("\n"))) { + + self.$diagnostic("warning", "heredoc_id_ends_with_nl", nil, self.$range(self.ts, $rb_plus(self.ts, 1))); + delimiter = delimiter.$rstrip(); + } else { + self.$diagnostic("fatal", "heredoc_id_has_newline", nil, self.$range(self.ts, $rb_plus(self.ts, 1))) + } + } + }; + if (($truthy(dedent_body) && ($truthy(self['$version?'](18, 19, 20, 21, 22))))) { + + self.$emit("tLSHFT", "<<".$freeze(), self.ts, $rb_plus(self.ts, 2)); + p = $rb_plus(self.ts, 1); + self.cs = 563; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + self.cs = self.$push_literal(type, delimiter, self.ts, heredoc_e, indent, dedent_body); + self.herebody_s = ($truthy(($ret_or_2 = self.herebody_s)) ? ($ret_or_2) : (new_herebody_s)); + p = $rb_minus(self.herebody_s, 1); + };;; + } else if ($eqeqeq(348, $ret_or_1)) { + + + tm = $rb_minus(p, 1); + diag_msg = "ivar_name";; + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$diagnostic("error", diag_msg, $hash2(["name"], {"name": self.$tok(tm, self.te)}), self.$range(tm, self.te)) + } else { + + self.$emit("tCOLON", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(351, $ret_or_1)) { + + + tm = $rb_minus(p, 2); + diag_msg = "cvar_name";; + + self.te = p; + p = $rb_minus(p, 1); + + if ($truthy($rb_ge(self.version, 27))) { + self.$diagnostic("error", diag_msg, $hash2(["name"], {"name": self.$tok(tm, self.te)}), self.$range(tm, self.te)) + } else { + + self.$emit("tCOLON", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); + p = self.ts; + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(359, $ret_or_1)) { + + + self.escape = nil;; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(389, $ret_or_1)) { + + + tm = p;; + + self.te = p; + p = $rb_minus(p, 1); + + self.$emit("kRESCUE", "rescue".$freeze(), self.ts, tm); + p = $rb_minus(tm, 1); + self.cs = 539; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(480, $ret_or_1)) { + + + self.num_base = 16; + self.num_digits_s = p;; + + self.num_suffix_s = p;; + } else if ($eqeqeq(474, $ret_or_1)) { + + + self.num_base = 10; + self.num_digits_s = p;; + + self.num_suffix_s = p;; + } else if ($eqeqeq(477, $ret_or_1)) { + + + self.num_base = 8; + self.num_digits_s = p;; + + self.num_suffix_s = p;; + } else if ($eqeqeq(471, $ret_or_1)) { + + + self.num_base = 2; + self.num_digits_s = p;; + + self.num_suffix_s = p;; + } else if ($eqeqeq(486, $ret_or_1)) { + + + self.num_base = 10; + self.num_digits_s = self.ts;; + + self.num_suffix_s = p;; + } else if ($eqeqeq(449, $ret_or_1)) { + + + self.num_base = 8; + self.num_digits_s = self.ts;; + + self.num_suffix_s = p;; + } else if ($eqeqeq(487, $ret_or_1)) { + + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$17(chars){var self = $$17.$$s == null ? this : $$17.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + } else if ($eqeqeq(8, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.newline_s = p;; + } else if ($eqeqeq(453, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.num_suffix_s = p;; + } else if ($eqeqeq(228, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 43;; + } else if ($eqeqeq(215, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 44;; + } else if ($eqeqeq(211, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 45;; + } else if ($eqeqeq(27, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 72;; + } else if ($eqeqeq(261, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 73;; + } else if ($eqeqeq(28, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 78;; + } else if ($eqeqeq(254, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 79;; + } else if ($eqeqeq(281, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 85;; + } else if ($eqeqeq(46, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 86;; + } else if ($eqeqeq(302, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 93;; + } else if ($eqeqeq(291, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 94;; + } else if ($eqeqeq(70, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 106;; + } else if ($eqeqeq(394, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 117;; + } else if ($eqeqeq(305, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 121;; + } else if ($eqeqeq(388, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 122;; + } else if ($eqeqeq(387, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 123;; + } else if ($eqeqeq(75, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 127;; + } else if ($eqeqeq(303, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 128;; + } else if ($eqeqeq(306, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 132;; + } else if ($eqeqeq(504, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 145;; + } else if ($eqeqeq(499, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 146;; + } else if ($eqeqeq(507, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 148;; + } else if ($eqeqeq(500, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 149;; + } else if ($eqeqeq(501, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 150;; + } else if ($eqeqeq(506, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 151;; + } else if ($eqeqeq(498, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 152;; + } else if ($eqeqeq(492, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 153;; + } else if ($eqeqeq(418, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 154;; + } else if ($eqeqeq(451, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 157;; + } else if ($eqeqeq(82, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 158;; + } else if ($eqeqeq(421, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 160;; + } else if ($eqeqeq(412, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 164;; + } else if ($eqeqeq(423, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 165;; + } else if ($eqeqeq(416, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 167;; + } else if ($eqeqeq(422, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 168;; + } else if ($eqeqeq(88, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 181;; + } else if ($eqeqeq(511, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.act = 185;; + } else if ($eqeqeq(183, $ret_or_1)) { + + + self.newline_s = p;; + + self.te = $rb_plus(p, 1); + + current_literal = self.$literal(); + if ($eqeq(self.te, pe)) { + self.$diagnostic("fatal", "string_eof", nil, self.$range(current_literal.$str_s(), $rb_plus(current_literal.$str_s(), 1))) + }; + if ($truthy(current_literal['$heredoc?']())) { + + line = self.$tok(self.herebody_s, self.ts).$gsub(/\r+$/, "".$freeze()); + if ($truthy(self['$version?'](18, 19, 20))) { + line = line.$gsub(/\r.*$/, "".$freeze()) + }; + if ($truthy(current_literal.$nest_and_try_closing(line, self.herebody_s, self.ts))) { + + self.herebody_s = self.te; + p = $rb_minus(current_literal.$heredoc_e(), 1); + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + current_literal.$infer_indent_level(line); + self.herebody_s = self.te; + }; + } else { + + if ($truthy(current_literal.$nest_and_try_closing(self.$tok(), self.ts, self.te))) { + + self.cs = self.$pop_literal(); + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + }; + if ($truthy(self.herebody_s)) { + + p = $rb_minus(self.herebody_s, 1); + self.herebody_s = nil; + }; + }; + if (($truthy(current_literal['$words?']()) && ($not(self['$eof_codepoint?'](self.source_pts['$[]'](p)))))) { + current_literal.$extend_space(self.ts, self.te) + } else { + + current_literal.$extend_string(self.$tok(), self.ts, self.te); + current_literal.$flush_string(); + };;; + + self.escape_s = p; + self.escape = nil;; + } else if ($eqeqeq(124, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(155, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(369, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(131, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(162, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(376, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(122, $ret_or_1)) { + + + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if (($truthy($rb_ge(self.version, 27)) && (($truthy($range(0, 8, false)['$include?'](self.escape.$ord())) || ($truthy($range(14, 31, false)['$include?'](self.escape.$ord()))))))) { + self.$diagnostic("fatal", "invalid_escape") + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(153, $ret_or_1)) { + + + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if (($truthy($rb_ge(self.version, 27)) && (($truthy($range(0, 8, false)['$include?'](self.escape.$ord())) || ($truthy($range(14, 31, false)['$include?'](self.escape.$ord()))))))) { + self.$diagnostic("fatal", "invalid_escape") + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(367, $ret_or_1)) { + + + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if (($truthy($rb_ge(self.version, 27)) && (($truthy($range(0, 8, false)['$include?'](self.escape.$ord())) || ($truthy($range(14, 31, false)['$include?'](self.escape.$ord()))))))) { + self.$diagnostic("fatal", "invalid_escape") + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(130, $ret_or_1)) { + + + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if (($truthy($rb_ge(self.version, 27)) && (($truthy($range(0, 8, false)['$include?'](self.escape.$ord())) || ($truthy($range(14, 31, false)['$include?'](self.escape.$ord()))))))) { + self.$diagnostic("fatal", "invalid_escape") + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(161, $ret_or_1)) { + + + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if (($truthy($rb_ge(self.version, 27)) && (($truthy($range(0, 8, false)['$include?'](self.escape.$ord())) || ($truthy($range(14, 31, false)['$include?'](self.escape.$ord()))))))) { + self.$diagnostic("fatal", "invalid_escape") + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(375, $ret_or_1)) { + + + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if (($truthy($rb_ge(self.version, 27)) && (($truthy($range(0, 8, false)['$include?'](self.escape.$ord())) || ($truthy($range(14, 31, false)['$include?'](self.escape.$ord()))))))) { + self.$diagnostic("fatal", "invalid_escape") + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(126, $ret_or_1)) { + + + self.escape = "\u007F";; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(157, $ret_or_1)) { + + + self.escape = "\u007F";; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(371, $ret_or_1)) { + + + self.escape = "\u007F";; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(129, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_minus(p, 2), p).$to_i(16));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(160, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_minus(p, 2), p).$to_i(16));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(374, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_minus(p, 2), p).$to_i(16));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(136, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.$diagnostic("fatal", "unterminated_unicode", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(167, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.$diagnostic("fatal", "unterminated_unicode", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(381, $ret_or_1)) { + + + self.$diagnostic("fatal", "invalid_unicode_escape", nil, self.$range($rb_minus(self.escape_s, 1), p));; + + self.$diagnostic("fatal", "unterminated_unicode", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(116, $ret_or_1)) { + + + self.escape_s = p; + self.escape = nil;; + + self.$diagnostic("fatal", "escape_eof", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(148, $ret_or_1)) { + + + self.escape_s = p; + self.escape = nil;; + + self.$diagnostic("fatal", "escape_eof", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(362, $ret_or_1)) { + + + self.escape_s = p; + self.escape = nil;; + + self.$diagnostic("fatal", "escape_eof", nil, self.$range($rb_minus(p, 1), p));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(62, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.newline_s = p;; + } else if ($eqeqeq(221, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(236, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(248, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(270, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1); + + + self.cs = 810; + _goto_level = _again; + continue;;;;; + } else if ($eqeqeq(285, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(297, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(323, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(399, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(409, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(430, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(102, $ret_or_1)) { + + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.te = p; + p = $rb_minus(p, 1);; + } else if ($eqeqeq(482, $ret_or_1)) { + + + self.num_base = 10; + self.num_digits_s = self.ts;; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$18(chars){var self = $$18.$$s == null ? this : $$18.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + } else if ($eqeqeq(446, $ret_or_1)) { + + + self.num_base = 8; + self.num_digits_s = self.ts;; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$19(chars){var self = $$19.$$s == null ? this : $$19.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + } else if ($eqeqeq(461, $ret_or_1)) { + + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$20(chars){var self = $$20.$$s == null ? this : $$20.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(454, $ret_or_1)) { + + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$21(chars){var self = $$21.$$s == null ? this : $$21.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tFLOAT", self.$Float(chars));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(450, $ret_or_1)) { + + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$22(chars){var self = $$22.$$s == null ? this : $$22.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tFLOAT", self.$Float(chars));}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.ts, self.num_suffix_s); + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tFLOAT", self.$Float(digits), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(276, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.newline_s = p;; + + self.act = 79;; + } else if ($eqeqeq(36, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.act = 78;; + } else if ($eqeqeq(47, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.act = 86;; + } else if ($eqeqeq(94, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + self.act = 181;; + } else if ($eqeqeq(66, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.act = 99;; + } else if ($eqeqeq(85, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.act = 147;; + } else if ($eqeqeq(93, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.act = 181;; + } else if ($eqeqeq(38, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + tm = p;; + + self.act = 73;; + } else if ($eqeqeq(391, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + tm = p;; + + self.act = 127;; + } else if ($eqeqeq(390, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + tm = p;; + + self.act = 128;; + } else if ($eqeqeq(483, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.num_base = 10; + self.num_digits_s = self.ts;; + + self.act = 154;; + } else if ($eqeqeq(127, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(158, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(372, $ret_or_1)) { + + + codepoint = self.source_pts['$[]']($rb_minus(p, 1)); + if (($truthy($rb_ge(self.version, 30)) && (($eqeq(codepoint, 117) || ($eqeq(codepoint, 85)))))) { + self.$diagnostic("fatal", "invalid_escape") + }; + if ($truthy((self.escape = $$('ESCAPES')['$[]'](codepoint))['$nil?']())) { + self.escape = self.$encode_escape(self.source_buffer.$slice($rb_minus(p, 1))) + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(125, $ret_or_1)) { + + + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if (($truthy($rb_ge(self.version, 27)) && (($truthy($range(0, 8, false)['$include?'](self.escape.$ord())) || ($truthy($range(14, 31, false)['$include?'](self.escape.$ord()))))))) { + self.$diagnostic("fatal", "invalid_escape") + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(156, $ret_or_1)) { + + + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if (($truthy($rb_ge(self.version, 27)) && (($truthy($range(0, 8, false)['$include?'](self.escape.$ord())) || ($truthy($range(14, 31, false)['$include?'](self.escape.$ord()))))))) { + self.$diagnostic("fatal", "invalid_escape") + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(370, $ret_or_1)) { + + + self.escape = self.source_buffer.$slice($rb_minus(p, 1)).$chr(); + if (($truthy($rb_ge(self.version, 27)) && (($truthy($range(0, 8, false)['$include?'](self.escape.$ord())) || ($truthy($range(14, 31, false)['$include?'](self.escape.$ord()))))))) { + self.$diagnostic("fatal", "invalid_escape") + };; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(132, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_minus(p, 2), p).$to_i(16));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(163, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_minus(p, 2), p).$to_i(16));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(377, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_minus(p, 2), p).$to_i(16));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(128, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_minus(p, 2), p).$to_i(16));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(159, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_minus(p, 2), p).$to_i(16));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + current_literal = self.$literal(); + escaped_char = self.source_buffer.$slice(self.escape_s).$chr(); + if ($truthy(current_literal['$munge_escape?'](escaped_char))) { + if (($truthy(current_literal['$regexp?']()) && ($truthy($$('REGEXP_META_CHARACTERS').$match(escaped_char))))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else { + current_literal.$extend_string(escaped_char, self.ts, self.te) + } + } else if (($truthy(current_literal['$squiggly_heredoc?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok(), self.ts, self.te) + } else if (($truthy(current_literal['$supports_line_continuation_via_slash?']()) && ($eqeq(escaped_char, "\n".$freeze())))) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else if ((($truthy(current_literal['$regexp?']()) && ($truthy($rb_ge(self.version, 31)))) && ($truthy(["c", "C", "m", "M"]['$include?'](escaped_char))))) { + current_literal.$extend_string(self.escape, self.ts, self.te) + } else if ($truthy(current_literal['$regexp?']())) { + current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(), "".$freeze()), self.ts, self.te) + } else { + current_literal.$extend_string(($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok())), self.ts, self.te) + };;; + } else if ($eqeqeq(373, $ret_or_1)) { + + + self.escape = self.$encode_escape(self.$tok($rb_minus(p, 2), p).$to_i(16));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$&'](159));; + + self.escape = self.$encode_escape(self.escape['$[]'](0).$ord()['$|'](128));; + + self.te = p; + p = $rb_minus(p, 1); + + value = ($truthy(($ret_or_2 = self.escape)) ? ($ret_or_2) : (self.$tok($rb_plus(self.ts, 1)))); + if ($truthy(self['$version?'](18))) { + self.$emit("tINTEGER", value.$getbyte(0)) + } else { + self.$emit("tCHARACTER", value) + }; + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(478, $ret_or_1)) { + + + self.num_base = 16; + self.num_digits_s = p;; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$23(chars){var self = $$23.$$s == null ? this : $$23.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(472, $ret_or_1)) { + + + self.num_base = 10; + self.num_digits_s = p;; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$24(chars){var self = $$24.$$s == null ? this : $$24.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(475, $ret_or_1)) { + + + self.num_base = 8; + self.num_digits_s = p;; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$25(chars){var self = $$25.$$s == null ? this : $$25.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(469, $ret_or_1)) { + + + self.num_base = 2; + self.num_digits_s = p;; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$26(chars){var self = $$26.$$s == null ? this : $$26.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(481, $ret_or_1)) { + + + self.num_base = 10; + self.num_digits_s = self.ts;; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$27(chars){var self = $$27.$$s == null ? this : $$27.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(445, $ret_or_1)) { + + + self.num_base = 8; + self.num_digits_s = self.ts;; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$28(chars){var self = $$28.$$s == null ? this : $$28.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + + self.te = p; + p = $rb_minus(p, 1); + + digits = self.$tok(self.num_digits_s, self.num_suffix_s); + if ($truthy(digits['$end_with?']("_".$freeze()))) { + self.$diagnostic("error", "trailing_in_number", $hash2(["character"], {"character": "_".$freeze()}), self.$range($rb_minus(self.te, 1), self.te)) + } else if ((($truthy(digits['$empty?']()) && ($eqeq(self.num_base, 8))) && ($truthy(self['$version?'](18))))) { + digits = "0".$freeze() + } else if ($truthy(digits['$empty?']())) { + self.$diagnostic("error", "empty_numeric") + } else if (($eqeq(self.num_base, 8) && ($truthy((invalid_idx = digits.$index(/[89]/)))))) { + + invalid_s = $rb_plus(self.num_digits_s, invalid_idx); + self.$diagnostic("error", "invalid_octal", nil, self.$range(invalid_s, $rb_plus(invalid_s, 1))); + }; + if ($truthy(self['$version?'](18, 19, 20))) { + + self.$emit("tINTEGER", digits.$to_i(self.num_base), self.ts, self.num_suffix_s); + p = $rb_minus(self.num_suffix_s, 1); + } else { + self.num_xfrm.$call(digits.$to_i(self.num_base)) + }; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;;;; + } else if ($eqeqeq(32, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + if ($truthy(self.herebody_s)) { + + p = self.herebody_s; + self.herebody_s = nil; + };; + + tm = p;; + + self.act = 73;; + } else if ($eqeqeq(63, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.act = 99;; + } else if ($eqeqeq(92, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.sharp_s = $rb_minus(p, 1);; + + self.$emit_comment(self.sharp_s, ($eqeq(p, pe) ? ($rb_minus(p, 2)) : (p)));; + + self.act = 181;; + } else if ($eqeqeq(488, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$29(chars){var self = $$29.$$s == null ? this : $$29.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + + self.act = 156;; + } else if ($eqeqeq(484, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.num_base = 10; + self.num_digits_s = self.ts;; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$30(chars){var self = $$30.$$s == null ? this : $$30.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + + self.act = 156;; + } else if ($eqeqeq(448, $ret_or_1)) { + + + self.te = $rb_plus(p, 1);; + + self.num_base = 8; + self.num_digits_s = self.ts;; + + self.num_suffix_s = p;; + + self.num_xfrm = $send(self, 'lambda', [], function $$31(chars){var self = $$31.$$s == null ? this : $$31.$$s; + + + + if (chars == null) chars = nil;; + return self.$emit("tINTEGER", chars);}, {$$arity: 1, $$s: self});; + + self.act = 156;; + } else { + nil + } + }; + }; + if ($truthy($rb_le(_goto_level, _again))) { + + if ($eqeqeq(96, ($ret_or_1 = _lex_to_state_actions['$[]'](self.cs)))) { + + self.ts = nil; + } else { + nil + }; + if ($eqeq(self.cs, 0)) { + + _goto_level = _out; + continue;; + }; + p = $rb_plus(p, 1); + if ($neqeq(p, pe)) { + + _goto_level = _resume; + continue;; + }; + }; + if ($truthy($rb_le(_goto_level, _test_eof))) { + if ($eqeq(p, eof)) { + if ($truthy($rb_gt(_lex_eof_trans['$[]'](self.cs), 0))) { + + _trans = $rb_minus(_lex_eof_trans['$[]'](self.cs), 1); + _goto_level = _eof_trans; + continue;; + } + } + }; + if ($truthy($rb_le(_goto_level, _out))) { + break; + }; + };; + if ($truthy(false)) { + testEof + }; + self.p = p; + if ($truthy(self.token_queue['$any?']())) { + return self.token_queue.$shift() + } else if ($eqeq(self.cs, klass.$lex_error())) { + return [false, ["$error".$freeze(), self.$range($rb_minus(p, 1), p)]] + } else { + + eof = self.source_pts.$size(); + return [false, ["$eof".$freeze(), self.$range(eof, eof)]]; + }; + }, 0); + self.$protected(); + + $def(self, '$eof_codepoint?', function $Lexer_eof_codepoint$ques$32(point) { + + return [4, 26, 0]['$include?'](point) + }, 1); + + $def(self, '$version?', function $Lexer_version$ques$33($a) { + var $post_args, versions, self = this; + + + + $post_args = Opal.slice.call(arguments); + + versions = $post_args;; + return versions['$include?'](self.version); + }, -1); + + $def(self, '$stack_pop', function $$stack_pop() { + var self = this; + + + self.top = $rb_minus(self.top, 1); + return self.stack['$[]'](self.top); + }, 0); + + $def(self, '$encode_escape', function $$encode_escape(ord) { + var self = this; + + return ord.$chr().$force_encoding(self.source_buffer.$source().$encoding()) + }, 1); + + $def(self, '$tok', function $$tok(s, e) { + var self = this; + + + + if (s == null) s = self.ts;; + + if (e == null) e = self.te;; + return self.source_buffer.$slice(Opal.Range.$new(s,e, true)); + }, -1); + + $def(self, '$range', function $$range(s, e) { + var self = this; + + + + if (s == null) s = self.ts;; + + if (e == null) e = self.te;; + return $$$($$$($$('Parser'), 'Source'), 'Range').$new(self.source_buffer, s, e); + }, -1); + + $def(self, '$emit', function $$emit(type, value, s, e) { + var self = this, token = nil; + + + + if (value == null) value = self.$tok();; + + if (s == null) s = self.ts;; + + if (e == null) e = self.te;; + token = [type, [value, self.$range(s, e)]]; + self.token_queue.$push(token); + if ($truthy(self.tokens)) { + self.tokens.$push(token) + }; + return token; + }, -2); + + $def(self, '$emit_table', function $$emit_table(table, s, e) { + var self = this, value = nil; + + + + if (s == null) s = self.ts;; + + if (e == null) e = self.te;; + value = self.$tok(s, e); + return self.$emit(table['$[]'](value), value, s, e); + }, -2); + + $def(self, '$emit_do', function $$emit_do(do_block) { + var self = this; + + + + if (do_block == null) do_block = false;; + if ($truthy(self.cond['$active?']())) { + return self.$emit("kDO_COND", "do".$freeze()) + } else if (($truthy(self.cmdarg['$active?']()) || ($truthy(do_block)))) { + return self.$emit("kDO_BLOCK", "do".$freeze()) + } else { + return self.$emit("kDO", "do".$freeze()) + }; + }, -1); + + $def(self, '$arg_or_cmdarg', function $$arg_or_cmdarg(cmd_state) { + var self = this; + + if ($truthy(cmd_state)) { + return self.$class().$lex_en_expr_cmdarg() + } else { + return self.$class().$lex_en_expr_arg() + } + }, 1); + + $def(self, '$emit_comment', function $$emit_comment(s, e) { + var self = this; + + + + if (s == null) s = self.ts;; + + if (e == null) e = self.te;; + if ($truthy(self.comments)) { + self.comments.$push($$$($$$($$('Parser'), 'Source'), 'Comment').$new(self.$range(s, e))) + }; + if ($truthy(self.tokens)) { + self.tokens.$push(["tCOMMENT", [self.$tok(s, e), self.$range(s, e)]]) + }; + return nil; + }, -1); + + $def(self, '$diagnostic', function $$diagnostic(type, reason, arguments$, location, highlights) { + var self = this; + + + + if (arguments$ == null) arguments$ = nil;; + + if (location == null) location = self.$range();; + + if (highlights == null) highlights = [];; + return self.diagnostics.$process($$$($$('Parser'), 'Diagnostic').$new(type, reason, arguments$, location, highlights)); + }, -3); + + $def(self, '$push_literal', function $$push_literal($a) { + var $post_args, args, self = this, new_literal = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + new_literal = $send($$('Literal'), 'new', [self].concat($to_a(args))); + self.literal_stack.$push(new_literal); + return self.$next_state_for_literal(new_literal); + }, -1); + + $def(self, '$next_state_for_literal', function $$next_state_for_literal(literal) { + var self = this; + + if (($truthy(literal['$words?']()) && ($truthy(literal['$backslash_delimited?']())))) { + if ($truthy(literal['$interpolate?']())) { + return self.$class().$lex_en_interp_backslash_delimited_words() + } else { + return self.$class().$lex_en_plain_backslash_delimited_words() + } + } else if (($truthy(literal['$words?']()) && ($not(literal['$backslash_delimited?']())))) { + if ($truthy(literal['$interpolate?']())) { + return self.$class().$lex_en_interp_words() + } else { + return self.$class().$lex_en_plain_words() + } + } else if (($not(literal['$words?']()) && ($truthy(literal['$backslash_delimited?']())))) { + if ($truthy(literal['$interpolate?']())) { + return self.$class().$lex_en_interp_backslash_delimited() + } else { + return self.$class().$lex_en_plain_backslash_delimited() + } + } else if ($truthy(literal['$interpolate?']())) { + return self.$class().$lex_en_interp_string() + } else { + return self.$class().$lex_en_plain_string() + } + }, 1); + + $def(self, '$literal', function $$literal() { + var self = this; + + return self.literal_stack.$last() + }, 0); + + $def(self, '$pop_literal', function $$pop_literal() { + var self = this, old_literal = nil; + + + old_literal = self.literal_stack.$pop(); + self.dedent_level = old_literal.$dedent_level(); + if ($eqeq(old_literal.$type(), "tREGEXP_BEG")) { + return self.$class().$lex_en_regexp_modifiers() + } else { + return self.$class().$lex_en_expr_end() + }; + }, 0); + $const_set($nesting[0], 'PUNCTUATION', $hash2(["=", "&", "|", "!", "^", "+", "-", "*", "/", "%", "~", ",", ";", ".", "..", "...", "[", "]", "(", ")", "?", ":", "&&", "||", "-@", "+@", "~@", "**", "->", "=~", "!~", "==", "!=", ">", ">>", ">=", "<", "<<", "<=", "=>", "::", "===", "<=>", "[]", "[]=", "{", "}", "`", "!@", "&."], {"=": "tEQL", "&": "tAMPER2", "|": "tPIPE", "!": "tBANG", "^": "tCARET", "+": "tPLUS", "-": "tMINUS", "*": "tSTAR2", "/": "tDIVIDE", "%": "tPERCENT", "~": "tTILDE", ",": "tCOMMA", ";": "tSEMI", ".": "tDOT", "..": "tDOT2", "...": "tDOT3", "[": "tLBRACK2", "]": "tRBRACK", "(": "tLPAREN2", ")": "tRPAREN", "?": "tEH", ":": "tCOLON", "&&": "tANDOP", "||": "tOROP", "-@": "tUMINUS", "+@": "tUPLUS", "~@": "tTILDE", "**": "tPOW", "->": "tLAMBDA", "=~": "tMATCH", "!~": "tNMATCH", "==": "tEQ", "!=": "tNEQ", ">": "tGT", ">>": "tRSHFT", ">=": "tGEQ", "<": "tLT", "<<": "tLSHFT", "<=": "tLEQ", "=>": "tASSOC", "::": "tCOLON2", "===": "tEQQ", "<=>": "tCMP", "[]": "tAREF", "[]=": "tASET", "{": "tLCURLY", "}": "tRCURLY", "`": "tBACK_REF2", "!@": "tBANG", "&.": "tANDDOT"})); + $const_set($nesting[0], 'PUNCTUATION_BEGIN', $hash2(["&", "*", "**", "+", "-", "::", "(", "{", "["], {"&": "tAMPER", "*": "tSTAR", "**": "tDSTAR", "+": "tUPLUS", "-": "tUMINUS", "::": "tCOLON3", "(": "tLPAREN", "{": "tLBRACE", "[": "tLBRACK"})); + $const_set($nesting[0], 'KEYWORDS', $hash2(["if", "unless", "while", "until", "rescue", "defined?", "BEGIN", "END"], {"if": "kIF_MOD", "unless": "kUNLESS_MOD", "while": "kWHILE_MOD", "until": "kUNTIL_MOD", "rescue": "kRESCUE_MOD", "defined?": "kDEFINED", "BEGIN": "klBEGIN", "END": "klEND"})); + $const_set($nesting[0], 'KEYWORDS_BEGIN', $hash2(["if", "unless", "while", "until", "rescue", "defined?", "BEGIN", "END"], {"if": "kIF", "unless": "kUNLESS", "while": "kWHILE", "until": "kUNTIL", "rescue": "kRESCUE", "defined?": "kDEFINED", "BEGIN": "klBEGIN", "END": "klEND"})); + return $send(["class", "module", "def", "undef", "begin", "end", "then", "elsif", "else", "ensure", "case", "when", "for", "break", "next", "redo", "retry", "in", "do", "return", "yield", "super", "self", "nil", "true", "false", "and", "or", "not", "alias", "__FILE__", "__LINE__", "__ENCODING__"], 'each', [], function $Lexer$34(keyword){ + + + if (keyword == null) keyword = nil;; + $writer = [keyword, (($writer = [keyword, "k" + (keyword.$upcase())]), $send($$('KEYWORDS'), '[]=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)])]; + $send($$('KEYWORDS_BEGIN'), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 1); + })($$('Parser'), null, $nesting) +}; + +Opal.modules["parser/lexer/literal"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $hash2 = Opal.hash2, $enc = Opal.enc, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $to_ary = Opal.to_ary, $def = Opal.def, $eqeq = Opal.eqeq, $rb_minus = Opal.rb_minus, $neqeq = Opal.neqeq, $not = Opal.not, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $rb_gt = Opal.rb_gt; + + Opal.add_stubs('attr_reader,attr_accessor,coerce_encoding,include?,send,+,[],fetch,==,!,heredoc?,start_with?,freeze,clear_buffer,emit_start_tok,type,=~,words?,delimiter?,-,extend_space,!=,flush_string,emit,each_char,===,%,>,nil?,<<,empty?,extend_content,protected,lstrip,b,dup,force_encoding,encoding,source,source_buffer,length'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Literal'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.lexer = $proto.start_tok = $proto.str_type = $proto.monolithic = $proto.interpolate = $proto.heredoc_e = $proto.dedent_body = $proto.end_delim = $proto.start_delim = $proto.nesting = $proto.label_allowed = $proto.buffer = $proto.str_s = $proto.interp_braces = $proto.buffer_s = $proto.buffer_e = $proto.space_emitted = $proto.indent = nil; + + $const_set($nesting[0], 'DELIMITERS', $hash2(["(", "[", "{", "<"], {"(": $enc(")", "ASCII-8BIT"), "[": $enc("]", "ASCII-8BIT"), "{": $enc("}", "ASCII-8BIT"), "<": $enc(">", "ASCII-8BIT")})); + $const_set($nesting[0], 'TYPES', $hash2(["'", "<<'", "%q", "\"", "<<\"", "%", "%Q", "%w", "%W", "%i", "%I", ":'", "%s", ":\"", "/", "%r", "%x", "`", "<<`"], {"'": ["tSTRING_BEG", false], "<<'": ["tSTRING_BEG", false], "%q": ["tSTRING_BEG", false], "\"": ["tSTRING_BEG", true], "<<\"": ["tSTRING_BEG", true], "%": ["tSTRING_BEG", true], "%Q": ["tSTRING_BEG", true], "%w": ["tQWORDS_BEG", false], "%W": ["tWORDS_BEG", true], "%i": ["tQSYMBOLS_BEG", false], "%I": ["tSYMBOLS_BEG", true], ":'": ["tSYMBEG", false], "%s": ["tSYMBEG", false], ":\"": ["tSYMBEG", true], "/": ["tREGEXP_BEG", true], "%r": ["tREGEXP_BEG", true], "%x": ["tXSTRING_BEG", true], "`": ["tXSTRING_BEG", true], "<<`": ["tXSTRING_BEG", true]})); + self.$attr_reader("heredoc_e", "str_s", "dedent_level"); + self.$attr_accessor("saved_herebody_s"); + + $def(self, '$initialize', function $$initialize(lexer, str_type, delimiter, str_s, heredoc_e, indent, dedent_body, label_allowed) { + var $a, $b, self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + + + if (heredoc_e == null) heredoc_e = nil;; + + if (indent == null) indent = false;; + + if (dedent_body == null) dedent_body = false;; + + if (label_allowed == null) label_allowed = false;; + self.lexer = lexer; + self.nesting = 1; + str_type = self.$coerce_encoding(str_type); + delimiter = self.$coerce_encoding(delimiter); + if (!$truthy($$('TYPES')['$include?'](str_type))) { + lexer.$send("diagnostic", "error", "unexpected_percent_str", $hash2(["type"], {"type": str_type}), self.lexer.$send("range", str_s, $rb_plus(str_s, 2))) + }; + self.str_type = str_type; + self.str_s = str_s; + $b = $$('TYPES')['$[]'](str_type), $a = $to_ary($b), (self.start_tok = ($a[0] == null ? nil : $a[0])), (self.interpolate = ($a[1] == null ? nil : $a[1])), $b; + self.start_delim = ($truthy($$('DELIMITERS')['$include?'](delimiter)) ? (delimiter) : (nil)); + self.end_delim = $$('DELIMITERS').$fetch(delimiter, delimiter); + self.heredoc_e = heredoc_e; + self.indent = indent; + self.label_allowed = label_allowed; + self.dedent_body = dedent_body; + self.dedent_level = nil; + self.interp_braces = 0; + self.space_emitted = true; + self.monolithic = ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.start_tok['$==']("tSTRING_BEG"))) ? ([$enc("'", "ASCII-8BIT"), $enc("\"", "ASCII-8BIT")]['$include?'](str_type)) : ($ret_or_2)))) ? (self['$heredoc?']()['$!']()) : ($ret_or_1)); + if ($truthy(self.str_type['$start_with?']($enc("%", "ASCII-8BIT").$freeze()))) { + self.str_type = $rb_plus(self.str_type, delimiter) + }; + self.$clear_buffer(); + if ($truthy(self.monolithic)) { + return nil + } else { + return self.$emit_start_tok() + }; + }, -5); + + $def(self, '$interpolate?', function $Literal_interpolate$ques$1() { + var self = this; + + return self.interpolate + }, 0); + + $def(self, '$words?', function $Literal_words$ques$2() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = ($truthy(($ret_or_3 = self.$type()['$==']("tWORDS_BEG"))) ? ($ret_or_3) : (self.$type()['$==']("tQWORDS_BEG"))))) ? ($ret_or_2) : (self.$type()['$==']("tSYMBOLS_BEG")))))) { + return $ret_or_1 + } else { + return self.$type()['$==']("tQSYMBOLS_BEG") + } + }, 0); + + $def(self, '$regexp?', function $Literal_regexp$ques$3() { + var self = this; + + return self.$type()['$==']("tREGEXP_BEG") + }, 0); + + $def(self, '$heredoc?', function $Literal_heredoc$ques$4() { + var self = this; + + return self.heredoc_e['$!']()['$!']() + }, 0); + + $def(self, '$plain_heredoc?', function $Literal_plain_heredoc$ques$5() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$heredoc?']()))) { + return self.dedent_body['$!']() + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$squiggly_heredoc?', function $Literal_squiggly_heredoc$ques$6() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$heredoc?']()))) { + return self.dedent_body + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$backslash_delimited?', function $Literal_backslash_delimited$ques$7() { + var self = this; + + return self.end_delim['$==']($enc("\\", "ASCII-8BIT").$freeze()) + }, 0); + + $def(self, '$type', function $$type() { + var self = this; + + return self.start_tok + }, 0); + + $def(self, '$munge_escape?', function $Literal_munge_escape$ques$8(character) { + var self = this; + + + character = self.$coerce_encoding(character); + if (($truthy(self['$words?']()) && ($truthy(character['$=~'](/[ \t\v\r\f\n]/))))) { + return true + } else { + return [$enc("\\", "ASCII-8BIT").$freeze(), self.start_delim, self.end_delim]['$include?'](character) + }; + }, 1); + + $def(self, '$nest_and_try_closing', function $$nest_and_try_closing(delimiter, ts, te, lookahead) { + var self = this; + + + + if (lookahead == null) lookahead = nil;; + delimiter = self.$coerce_encoding(delimiter); + if (($truthy(self.start_delim) && ($eqeq(self.start_delim, delimiter)))) { + self.nesting = $rb_plus(self.nesting, 1) + } else if ($truthy(self['$delimiter?'](delimiter))) { + self.nesting = $rb_minus(self.nesting, 1) + }; + if ($eqeq(self.nesting, 0)) { + + if ($truthy(self['$words?']())) { + self.$extend_space(ts, ts) + }; + if ((((($truthy(lookahead) && ($truthy(self.label_allowed))) && ($eqeq(lookahead['$[]'](0), $enc(":", "ASCII-8BIT")))) && ($neqeq(lookahead['$[]'](1), $enc(":", "ASCII-8BIT")))) && ($eqeq(self.start_tok, "tSTRING_BEG")))) { + + self.$flush_string(); + return self.$emit("tLABEL_END", self.end_delim, ts, $rb_plus(te, 1)); + } else if ($truthy(self.monolithic)) { + return self.$emit("tSTRING", self.buffer, self.str_s, te) + } else { + + if (!$truthy(self['$heredoc?']())) { + self.$flush_string() + }; + return self.$emit("tSTRING_END", self.end_delim, ts, te); + }; + } else { + return nil + }; + }, -4); + + $def(self, '$infer_indent_level', function $$infer_indent_level(line) { + var self = this, indent_level = nil; + + + if ($not(self.dedent_body)) { + return nil + }; + indent_level = 0; + return (function(){var $brk = Opal.new_brk(); try {return $send(line, 'each_char', [], function $$9(char$){var self = $$9.$$s == null ? this : $$9.$$s, $ret_or_1 = nil; + if (self.dedent_level == null) self.dedent_level = nil; + + + + if (char$ == null) char$ = nil;; + if ($eqeqeq(" ", ($ret_or_1 = char$))) { + return (indent_level = $rb_plus(indent_level, 1)) + } else if ($eqeqeq("\t", $ret_or_1)) { + return (indent_level = $rb_plus(indent_level, $rb_minus(8, indent_level['$%'](8)))) + } else { + + if (($truthy(self.dedent_level['$nil?']()) || ($truthy($rb_gt(self.dedent_level, indent_level))))) { + self.dedent_level = indent_level + }; + + Opal.brk(nil, $brk); + };}, {$$arity: 1, $$s: self, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + }, 1); + + $def(self, '$start_interp_brace', function $$start_interp_brace() { + var self = this; + + return (self.interp_braces = $rb_plus(self.interp_braces, 1)) + }, 0); + + $def(self, '$end_interp_brace_and_try_closing', function $$end_interp_brace_and_try_closing() { + var self = this; + + + self.interp_braces = $rb_minus(self.interp_braces, 1); + + return self.interp_braces['$=='](0);; + }, 0); + + $def(self, '$extend_string', function $$extend_string(string, ts, te) { + var self = this, $ret_or_1 = nil; + + + self.buffer_s = ($truthy(($ret_or_1 = self.buffer_s)) ? ($ret_or_1) : (ts)); + self.buffer_e = te; + return self.buffer['$<<'](string); + }, 3); + + $def(self, '$flush_string', function $$flush_string() { + var self = this; + + + if ($truthy(self.monolithic)) { + + self.$emit_start_tok(); + self.monolithic = false; + }; + if ($truthy(self.buffer['$empty?']())) { + return nil + } else { + + self.$emit("tSTRING_CONTENT", self.buffer, self.buffer_s, self.buffer_e); + self.$clear_buffer(); + return self.$extend_content(); + }; + }, 0); + + $def(self, '$extend_content', function $$extend_content() { + var self = this; + + return (self.space_emitted = false) + }, 0); + + $def(self, '$extend_space', function $$extend_space(ts, te) { + var self = this; + + + self.$flush_string(); + if ($truthy(self.space_emitted)) { + return nil + } else { + + self.$emit("tSPACE", nil, ts, te); + return (self.space_emitted = true); + }; + }, 2); + + $def(self, '$supports_line_continuation_via_slash?', function $Literal_supports_line_continuation_via_slash$ques$10() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$words?']()['$!']()))) { + return self.interpolate + } else { + return $ret_or_1 + } + }, 0); + self.$protected(); + + $def(self, '$delimiter?', function $Literal_delimiter$ques$11(delimiter) { + var self = this; + + if ($truthy(self.indent)) { + return self.end_delim['$=='](delimiter.$lstrip()) + } else { + return self.end_delim['$=='](delimiter) + } + }, 1); + + $def(self, '$coerce_encoding', function $$coerce_encoding(string) { + + return string.$b() + }, 1); + + $def(self, '$clear_buffer', function $$clear_buffer() { + var self = this; + + + self.buffer = $enc("", "ASCII-8BIT").$dup(); + self.buffer.$force_encoding(self.lexer.$source_buffer().$source().$encoding()); + self.buffer_s = nil; + return (self.buffer_e = nil); + }, 0); + + $def(self, '$emit_start_tok', function $$emit_start_tok() { + var self = this, str_e = nil, $ret_or_1 = nil; + + + str_e = ($truthy(($ret_or_1 = self.heredoc_e)) ? ($ret_or_1) : ($rb_plus(self.str_s, self.str_type.$length()))); + return self.$emit(self.start_tok, self.str_type, self.str_s, str_e); + }, 0); + return $def(self, '$emit', function $$emit(token, type, s, e) { + var self = this; + + return self.lexer.$send("emit", token, type, s, e) + }, 4); + })($$('Lexer'), null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/lexer/stack_state"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $alias = Opal.alias; + + Opal.add_stubs('freeze,clear,|,<<,&,>>,==,[],to_s'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'StackState'); + + var $proto = self.$$prototype; + + $proto.stack = $proto.name = nil; + + + $def(self, '$initialize', function $$initialize(name) { + var self = this; + + + self.name = name.$freeze(); + return self.$clear(); + }, 1); + + $def(self, '$clear', function $$clear() { + var self = this; + + return (self.stack = 0) + }, 0); + + $def(self, '$push', function $$push(bit) { + var self = this, bit_value = nil; + + + bit_value = ($truthy(bit) ? (1) : (0)); + self.stack = self.stack['$<<'](1)['$|'](bit_value); + return bit; + }, 1); + + $def(self, '$pop', function $$pop() { + var self = this, bit_value = nil; + + + bit_value = self.stack['$&'](1); + self.stack = self.stack['$>>'](1); + return bit_value['$=='](1); + }, 0); + + $def(self, '$lexpop', function $$lexpop() { + var self = this; + + + self.stack = self.stack['$>>'](1)['$|'](self.stack['$&'](1)); + return self.stack['$[]'](0)['$=='](1); + }, 0); + + $def(self, '$active?', function $StackState_active$ques$1() { + var self = this; + + return self.stack['$[]'](0)['$=='](1) + }, 0); + + $def(self, '$empty?', function $StackState_empty$ques$2() { + var self = this; + + return self.stack['$=='](0) + }, 0); + + $def(self, '$to_s', function $$to_s() { + var self = this; + + return "[" + (self.stack.$to_s(2)) + " <= " + (self.name) + "]" + }, 0); + return $alias(self, "inspect", "to_s"); + })($$('Lexer'), null) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/lexer/dedenter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $eqeq = Opal.eqeq, $send = Opal.send, $truthy = Opal.truthy, $to_ary = Opal.to_ary, $slice = Opal.slice, $rb_le = Opal.rb_le, $eqeqeq = Opal.eqeqeq, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $rb_gt = Opal.rb_gt, $rb_times = Opal.rb_times, $rb_divide = Opal.rb_divide; + + Opal.add_stubs('encoding,split,force_encoding,==,length,map!,each,each_char,<=,===,+,-,>,*,/,slice!,replace,join,end_with?'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Dedenter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.at_line_begin = nil; + + $const_set($nesting[0], 'TAB_WIDTH', 8); + + $def(self, '$initialize', function $$initialize(dedent_level) { + var self = this; + + + self.dedent_level = dedent_level; + self.at_line_begin = true; + return (self.indent_level = 0); + }, 1); + + $def(self, '$dedent', function $$dedent(string) { + var $a, $b, self = this, original_encoding = nil, lines = nil, lines_to_dedent = nil, _first = nil; + + + original_encoding = string.$encoding(); + lines = string.$force_encoding($$$($$('Encoding'), 'BINARY')).$split("\\\n"); + if ($eqeq(lines.$length(), 1)) { + lines = [string.$force_encoding(original_encoding)] + } else { + $send(lines, 'map!', [], function $$1(s){ + + + if (s == null) s = nil;; + return s.$force_encoding(original_encoding);}, 1) + }; + if ($truthy(self.at_line_begin)) { + lines_to_dedent = lines + } else { + $b = lines, $a = $to_ary($b), (_first = ($a[0] == null ? nil : $a[0])), (lines_to_dedent = $slice.call($a, 1)), $b + }; + (function(){var $brk = Opal.new_brk(); try {return $send(lines_to_dedent, 'each', [], function $$2(line){var self = $$2.$$s == null ? this : $$2.$$s, left_to_remove = nil, remove = nil; + if (self.dedent_level == null) self.dedent_level = nil; + + + + if (line == null) line = nil;; + left_to_remove = self.dedent_level; + remove = 0; + (function(){var $brk = Opal.new_brk(); try {return $send(line, 'each_char', [], function $$3(char$){var self = $$3.$$s == null ? this : $$3.$$s, $ret_or_1 = nil; + if (self.dedent_level == null) self.dedent_level = nil; + + + + if (char$ == null) char$ = nil;; + if ($truthy($rb_le(left_to_remove, 0))) { + + Opal.brk(nil, $brk) + }; + if ($eqeqeq(" ", ($ret_or_1 = char$))) { + + remove = $rb_plus(remove, 1); + return (left_to_remove = $rb_minus(left_to_remove, 1)); + } else if ($eqeqeq("\t", $ret_or_1)) { + + if ($truthy($rb_gt($rb_times($$('TAB_WIDTH'), $rb_plus($rb_divide(remove, $$('TAB_WIDTH')), 1)), self.dedent_level))) { + + Opal.brk(nil, $brk) + }; + remove = $rb_plus(remove, 1); + return (left_to_remove = $rb_minus(left_to_remove, $$('TAB_WIDTH'))); + } else { + + Opal.brk(nil, $brk) + };}, {$$arity: 1, $$s: self, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + return line['$slice!'](0, remove);}, {$$arity: 1, $$s: self, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + string.$replace(lines.$join()); + return (self.at_line_begin = string['$end_with?']("\n")); + }, 1); + return $def(self, '$interrupt', function $$interrupt() { + var self = this; + + return (self.at_line_begin = false) + }, 0); + })($$('Lexer'), null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/builders/default"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $to_a = Opal.to_a, $eqeqeq = Opal.eqeqeq, $hash2 = Opal.hash2, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $not = Opal.not, $send = Opal.send, $neqeq = Opal.neqeq, $to_ary = Opal.to_ary, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $rb_ge = Opal.rb_ge, $range = Opal.range, $slice = Opal.slice, $rb_gt = Opal.rb_gt, $rb_le = Opal.rb_le, $rb_lt = Opal.rb_lt; + + Opal.add_stubs('attr_accessor,n0,token_map,numeric,n,value,new,loc,private,===,+@,-@,updated,join,expression,string_value,delimited_string_map,unquoted_map,collapse_string_parts?,nil?,first,children,string_map,prefix_string_map,to_sym,collection_map,empty?,==,version,diagnostic,!,type,dedent,map,interrupt,compact,uniq,sort,each_char,to_proc,static_regexp,message,<<,regexp_map,unary_op_map,binary_op_map,!=,%,size,last,each_slice,pair_keyword_map,pair_quoted_map,symbol_compose,adjust,=~,pair_keyword,accessible,upto,-,length,+,[],>=,range_map,variable_map,name,source_buffer,dup,line,emit_encoding,class,any?,end_with?,to_s,try_declare_numparam,declared?,static_env,var_send_map,top,current_arg_stack,parser,constant_map,in_def,context,check_assignment_to_numparam,check_reserved_for_numparam,declare,with_expression,with_operator,join_exprs,module_definition_map,definition_map,endless_definition_map,validate_definee,keyword_map,check_duplicate_args,validate_no_forward_arg_after_restarg,emit_forward_arg,forward_arg,arg_prefix_map,kwarg_map,emit_procarg0,emit_arg_inside_procarg0,location,resize,end,call_type_for_dot,emit_kwargs,rewrite_hash_args_to_kwargs,send_map,emit_lambda,expr_map,keyword,include?,block_map,array,emit_index,index_map,send_index_map,send_binary_op_map,static_regexp_node,each,names,send_unary_op_map,check_condition,condition_map,keyword_mod_map,ternary_map,for_map,>,count,rescue_body_map,eh_keyword_map,push,none?,one?,begin,guard_map,check_lvar_name,check_duplicate_pattern_variable,match_hash_var_from_str,match_var,check_duplicate_pattern_key,static_string,pair_quoted,match_hash_var,<=,check_duplicate_arg,is_a?,[]=,arg_name_collides?,<,in_dynamic_block?,has_numparams?,max_numparam_stack,start_with?,pattern_variables,pattern_hash_keys,with,begin_pos,end_pos,encode,valid_encoding?,process,diagnostics,send,kwargs?'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Default'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.parser = $proto.emit_file_line_as_literals = nil; + + (function(self, $parent_nesting) { + + return self.$attr_accessor("emit_lambda") + })(Opal.get_singleton_class(self), $nesting); + self.emit_lambda = false; + (function(self, $parent_nesting) { + + return self.$attr_accessor("emit_procarg0") + })(Opal.get_singleton_class(self), $nesting); + self.emit_procarg0 = false; + (function(self, $parent_nesting) { + + return self.$attr_accessor("emit_encoding") + })(Opal.get_singleton_class(self), $nesting); + self.emit_encoding = false; + (function(self, $parent_nesting) { + + return self.$attr_accessor("emit_index") + })(Opal.get_singleton_class(self), $nesting); + self.emit_index = false; + (function(self, $parent_nesting) { + + return self.$attr_accessor("emit_arg_inside_procarg0") + })(Opal.get_singleton_class(self), $nesting); + self.emit_arg_inside_procarg0 = false; + (function(self, $parent_nesting) { + + return self.$attr_accessor("emit_forward_arg") + })(Opal.get_singleton_class(self), $nesting); + self.emit_forward_arg = false; + (function(self, $parent_nesting) { + + return self.$attr_accessor("emit_kwargs") + })(Opal.get_singleton_class(self), $nesting); + self.emit_kwargs = false; + (function(self, $parent_nesting) { + + return self.$attr_accessor("emit_match_pattern") + })(Opal.get_singleton_class(self), $nesting); + self.emit_match_pattern = false; + (function(self, $parent_nesting) { + + return $def(self, '$modernize', function $$modernize() { + var self = this; + + + self.emit_lambda = true; + self.emit_procarg0 = true; + self.emit_encoding = true; + self.emit_index = true; + self.emit_arg_inside_procarg0 = true; + self.emit_forward_arg = true; + self.emit_kwargs = true; + return (self.emit_match_pattern = true); + }, 0) + })(Opal.get_singleton_class(self), $nesting); + self.$attr_accessor("parser"); + self.$attr_accessor("emit_file_line_as_literals"); + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return (self.emit_file_line_as_literals = true) + }, 0); + + $def(self, '$nil', function $$nil(nil_t) { + var self = this; + + return self.$n0("nil", self.$token_map(nil_t)) + }, 1); + + $def(self, '$true', function $Default_true$1(true_t) { + var self = this; + + return self.$n0("true", self.$token_map(true_t)) + }, 1); + + $def(self, '$false', function $Default_false$2(false_t) { + var self = this; + + return self.$n0("false", self.$token_map(false_t)) + }, 1); + + $def(self, '$integer', function $$integer(integer_t) { + var self = this; + + return self.$numeric("int", integer_t) + }, 1); + + $def(self, '$float', function $Default_float$3(float_t) { + var self = this; + + return self.$numeric("float", float_t) + }, 1); + + $def(self, '$rational', function $$rational(rational_t) { + var self = this; + + return self.$numeric("rational", rational_t) + }, 1); + + $def(self, '$complex', function $$complex(complex_t) { + var self = this; + + return self.$numeric("complex", complex_t) + }, 1); + + $def(self, '$numeric', function $$numeric(kind, token) { + var self = this; + + return self.$n(kind, [self.$value(token)], $$$($$$($$('Source'), 'Map'), 'Operator').$new(nil, self.$loc(token))) + }, 2); + self.$private("numeric"); + + $def(self, '$unary_num', function $$unary_num(unary_t, numeric) { + var $a, self = this, value = nil, operator_loc = nil, $ret_or_1 = nil; + + + $a = [].concat($to_a(numeric)), (value = ($a[0] == null ? nil : $a[0])), $a; + operator_loc = self.$loc(unary_t); + if ($eqeqeq("+", ($ret_or_1 = self.$value(unary_t)))) { + value = value['$+@']() + } else if ($eqeqeq("-", $ret_or_1)) { + value = value['$-@']() + } else { + nil + }; + return numeric.$updated(nil, [value], $hash2(["location"], {"location": $$$($$$($$('Source'), 'Map'), 'Operator').$new(operator_loc, operator_loc.$join(numeric.$loc().$expression()))})); + }, 2); + + $def(self, '$__LINE__', function $$__LINE__(__LINE__t) { + var self = this; + + return self.$n0("__LINE__", self.$token_map(__LINE__t)) + }, 1); + + $def(self, '$string', function $$string(string_t) { + var self = this; + + return self.$n("str", [self.$string_value(string_t)], self.$delimited_string_map(string_t)) + }, 1); + + $def(self, '$string_internal', function $$string_internal(string_t) { + var self = this; + + return self.$n("str", [self.$string_value(string_t)], self.$unquoted_map(string_t)) + }, 1); + + $def(self, '$string_compose', function $$string_compose(begin_t, parts, end_t) { + var self = this; + + if ($truthy(self['$collapse_string_parts?'](parts))) { + if (($truthy(begin_t['$nil?']()) && ($truthy(end_t['$nil?']())))) { + return parts.$first() + } else { + return self.$n("str", parts.$first().$children(), self.$string_map(begin_t, parts, end_t)) + } + } else { + return self.$n("dstr", [].concat($to_a(parts)), self.$string_map(begin_t, parts, end_t)) + } + }, 3); + + $def(self, '$character', function $$character(char_t) { + var self = this; + + return self.$n("str", [self.$string_value(char_t)], self.$prefix_string_map(char_t)) + }, 1); + + $def(self, '$__FILE__', function $$__FILE__(__FILE__t) { + var self = this; + + return self.$n0("__FILE__", self.$token_map(__FILE__t)) + }, 1); + + $def(self, '$symbol', function $$symbol(symbol_t) { + var self = this; + + return self.$n("sym", [self.$string_value(symbol_t).$to_sym()], self.$prefix_string_map(symbol_t)) + }, 1); + + $def(self, '$symbol_internal', function $$symbol_internal(symbol_t) { + var self = this; + + return self.$n("sym", [self.$string_value(symbol_t).$to_sym()], self.$unquoted_map(symbol_t)) + }, 1); + + $def(self, '$symbol_compose', function $$symbol_compose(begin_t, parts, end_t) { + var self = this, str = nil; + + if ($truthy(self['$collapse_string_parts?'](parts))) { + + str = parts.$first(); + return self.$n("sym", [str.$children().$first().$to_sym()], self.$collection_map(begin_t, str.$loc().$expression(), end_t)); + } else if (($eqeq(self.parser.$version(), 18) && ($truthy(parts['$empty?']())))) { + return self.$diagnostic("error", "empty_symbol", nil, self.$loc(begin_t).$join(self.$loc(end_t))) + } else { + return self.$n("dsym", [].concat($to_a(parts)), self.$collection_map(begin_t, parts, end_t)) + } + }, 3); + + $def(self, '$xstring_compose', function $$xstring_compose(begin_t, parts, end_t) { + var self = this; + + return self.$n("xstr", [].concat($to_a(parts)), self.$string_map(begin_t, parts, end_t)) + }, 3); + + $def(self, '$dedent_string', function $$dedent_string(node, dedent_level) { + var dedenter = nil, $ret_or_1 = nil, str = nil, children = nil; + + + if ($not(dedent_level['$nil?']())) { + + dedenter = $$$($$('Lexer'), 'Dedenter').$new(dedent_level); + if ($eqeqeq("str", ($ret_or_1 = node.$type()))) { + + str = node.$children().$first(); + dedenter.$dedent(str); + } else if (($eqeqeq("dstr", $ret_or_1) || ($eqeqeq("xstr", $ret_or_1)))) { + + children = $send(node.$children(), 'map', [], function $$4(str_node){ + + + if (str_node == null) str_node = nil;; + if ($eqeq(str_node.$type(), "str")) { + + str = str_node.$children().$first(); + dedenter.$dedent(str); + if ($truthy(str['$empty?']())) { + return nil; + }; + } else { + dedenter.$interrupt() + }; + return str_node;}, 1); + node = node.$updated(nil, children.$compact()); + } else { + nil + }; + }; + return node; + }, 2); + + $def(self, '$regexp_options', function $$regexp_options(regopt_t) { + var self = this, options = nil; + + + options = $send(self.$value(regopt_t).$each_char().$sort().$uniq(), 'map', [], "to_sym".$to_proc()); + return self.$n("regopt", options, self.$token_map(regopt_t)); + }, 1); + + $def(self, '$regexp_compose', function $$regexp_compose(begin_t, parts, end_t, options) { + var self = this, e = nil; + + + + try { + self.$static_regexp(parts, options) + } catch ($err) { + if (Opal.rescue($err, [$$('RegexpError')])) {(e = $err) + try { + self.$diagnostic("error", "invalid_regexp", $hash2(["message"], {"message": e.$message()}), self.$loc(begin_t).$join(self.$loc(end_t))) + } finally { Opal.pop_exception(); } + } else { throw $err; } + };; + return self.$n("regexp", parts['$<<'](options), self.$regexp_map(begin_t, end_t, options)); + }, 4); + + $def(self, '$array', function $$array(begin_t, elements, end_t) { + var self = this; + + return self.$n("array", elements, self.$collection_map(begin_t, elements, end_t)) + }, 3); + + $def(self, '$splat', function $$splat(star_t, arg) { + var self = this; + + + + if (arg == null) arg = nil;; + if ($truthy(arg['$nil?']())) { + return self.$n0("splat", self.$unary_op_map(star_t)) + } else { + return self.$n("splat", [arg], self.$unary_op_map(star_t, arg)) + }; + }, -2); + + $def(self, '$word', function $$word(parts) { + var self = this; + + if ($truthy(self['$collapse_string_parts?'](parts))) { + return parts.$first() + } else { + return self.$n("dstr", [].concat($to_a(parts)), self.$collection_map(nil, parts, nil)) + } + }, 1); + + $def(self, '$words_compose', function $$words_compose(begin_t, parts, end_t) { + var self = this; + + return self.$n("array", [].concat($to_a(parts)), self.$collection_map(begin_t, parts, end_t)) + }, 3); + + $def(self, '$symbols_compose', function $$symbols_compose(begin_t, parts, end_t) { + var self = this; + + + parts = $send(parts, 'map', [], function $$5(part){var $a, $ret_or_1 = nil, value = nil; + + + + if (part == null) part = nil;; + if ($eqeqeq("str", ($ret_or_1 = part.$type()))) { + + $a = [].concat($to_a(part)), (value = ($a[0] == null ? nil : $a[0])), $a; + return part.$updated("sym", [value.$to_sym()]); + } else if ($eqeqeq("dstr", $ret_or_1)) { + return part.$updated("dsym") + } else { + return part + };}, 1); + return self.$n("array", [].concat($to_a(parts)), self.$collection_map(begin_t, parts, end_t)); + }, 3); + + $def(self, '$pair', function $$pair(key, assoc_t, value) { + var self = this; + + return self.$n("pair", [key, value], self.$binary_op_map(key, assoc_t, value)) + }, 3); + + $def(self, '$pair_list_18', function $$pair_list_18(list) { + var self = this; + + if ($neqeq(list.$size()['$%'](2), 0)) { + return self.$diagnostic("error", "odd_hash", nil, list.$last().$loc().$expression()) + } else { + return $send(list.$each_slice(2), 'map', [], function $$6(key, value){var self = $$6.$$s == null ? this : $$6.$$s; + + + + if (key == null) key = nil;; + + if (value == null) value = nil;; + return self.$n("pair", [key, value], self.$binary_op_map(key, nil, value));}, {$$arity: 2, $$s: self}) + } + }, 1); + + $def(self, '$pair_keyword', function $$pair_keyword(key_t, value) { + var $a, $b, self = this, key_map = nil, pair_map = nil, key = nil; + + + $b = self.$pair_keyword_map(key_t, value), $a = $to_ary($b), (key_map = ($a[0] == null ? nil : $a[0])), (pair_map = ($a[1] == null ? nil : $a[1])), $b; + key = self.$n("sym", [self.$value(key_t).$to_sym()], key_map); + return self.$n("pair", [key, value], pair_map); + }, 2); + + $def(self, '$pair_quoted', function $$pair_quoted(begin_t, parts, end_t, value) { + var $a, $b, self = this, pair_map = nil, key = nil; + + + $b = self.$pair_quoted_map(begin_t, end_t, value), $a = $to_ary($b), (end_t = ($a[0] == null ? nil : $a[0])), (pair_map = ($a[1] == null ? nil : $a[1])), $b; + key = self.$symbol_compose(begin_t, parts, end_t); + return self.$n("pair", [key, value], pair_map); + }, 4); + + $def(self, '$pair_label', function $$pair_label(key_t) { + var self = this, key_l = nil, value_l = nil, label = nil, value = nil; + + + key_l = self.$loc(key_t); + value_l = key_l.$adjust($hash2(["end_pos"], {"end_pos": -1})); + label = self.$value(key_t); + value = ($truthy(label['$=~'](/^[[:lower:]]/)) ? (self.$n("ident", [label.$to_sym()], $$$($$$($$('Source'), 'Map'), 'Variable').$new(value_l))) : (self.$n("const", [nil, label.$to_sym()], $$$($$$($$('Source'), 'Map'), 'Constant').$new(nil, value_l, value_l)))); + return self.$pair_keyword(key_t, self.$accessible(value)); + }, 1); + + $def(self, '$kwsplat', function $$kwsplat(dstar_t, arg) { + var self = this; + + return self.$n("kwsplat", [arg], self.$unary_op_map(dstar_t, arg)) + }, 2); + + $def(self, '$associate', function $$associate(begin_t, pairs, end_t) { + var self = this; + + + $send((0), 'upto', [$rb_minus(pairs.$length(), 1)], function $$7(i){var self = $$7.$$s == null ? this : $$7.$$s; + + + + if (i == null) i = nil;; + return $send($rb_plus(i, 1), 'upto', [$rb_minus(pairs.$length(), 1)], function $$8(j){var $a, self = $$8.$$s == null ? this : $$8.$$s, key1 = nil, key2 = nil, do_warn = nil, $ret_or_1 = nil; + if (self.parser == null) self.parser = nil; + + + + if (j == null) j = nil;; + $a = [].concat($to_a(pairs['$[]'](i))), (key1 = ($a[0] == null ? nil : $a[0])), $a; + $a = [].concat($to_a(pairs['$[]'](j))), (key2 = ($a[0] == null ? nil : $a[0])), $a; + do_warn = false; + if (($eqeqeq("sym", ($ret_or_1 = key1.$type())) || (($eqeqeq("str", $ret_or_1) || (($eqeqeq("int", $ret_or_1) || ($eqeqeq("float", $ret_or_1)))))))) { + if ($eqeq(key1, key2)) { + do_warn = true + } + } else if (($eqeqeq("rational", $ret_or_1) || (($eqeqeq("complex", $ret_or_1) || ($eqeqeq("regexp", $ret_or_1)))))) { + if (($truthy($rb_ge(self.parser.$version(), 31)) && ($eqeq(key1, key2)))) { + do_warn = true + } + } else { + nil + }; + if ($truthy(do_warn)) { + return self.$diagnostic("warning", "duplicate_hash_key", nil, key2.$loc().$expression()) + } else { + return nil + };}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self}); + return self.$n("hash", [].concat($to_a(pairs)), self.$collection_map(begin_t, pairs, end_t)); + }, 3); + + $def(self, '$range_inclusive', function $$range_inclusive(lhs, dot2_t, rhs) { + var self = this; + + return self.$n("irange", [lhs, rhs], self.$range_map(lhs, dot2_t, rhs)) + }, 3); + + $def(self, '$range_exclusive', function $$range_exclusive(lhs, dot3_t, rhs) { + var self = this; + + return self.$n("erange", [lhs, rhs], self.$range_map(lhs, dot3_t, rhs)) + }, 3); + + $def(self, '$self', function $$self(token) { + var self = this; + + return self.$n0("self", self.$token_map(token)) + }, 1); + + $def(self, '$ident', function $$ident(token) { + var self = this; + + return self.$n("ident", [self.$value(token).$to_sym()], self.$variable_map(token)) + }, 1); + + $def(self, '$ivar', function $$ivar(token) { + var self = this; + + return self.$n("ivar", [self.$value(token).$to_sym()], self.$variable_map(token)) + }, 1); + + $def(self, '$gvar', function $$gvar(token) { + var self = this; + + return self.$n("gvar", [self.$value(token).$to_sym()], self.$variable_map(token)) + }, 1); + + $def(self, '$cvar', function $$cvar(token) { + var self = this; + + return self.$n("cvar", [self.$value(token).$to_sym()], self.$variable_map(token)) + }, 1); + + $def(self, '$back_ref', function $$back_ref(token) { + var self = this; + + return self.$n("back_ref", [self.$value(token).$to_sym()], self.$token_map(token)) + }, 1); + + $def(self, '$nth_ref', function $$nth_ref(token) { + var self = this; + + return self.$n("nth_ref", [self.$value(token)], self.$token_map(token)) + }, 1); + + $def(self, '$accessible', function $$accessible(node) { + var $a, self = this, $ret_or_1 = nil, name = nil; + + if ($eqeqeq("__FILE__", ($ret_or_1 = node.$type()))) { + if ($truthy(self.emit_file_line_as_literals)) { + return self.$n("str", [node.$loc().$expression().$source_buffer().$name()], node.$loc().$dup()) + } else { + return node + } + } else if ($eqeqeq("__LINE__", $ret_or_1)) { + if ($truthy(self.emit_file_line_as_literals)) { + return self.$n("int", [node.$loc().$expression().$line()], node.$loc().$dup()) + } else { + return node + } + } else if ($eqeqeq("__ENCODING__", $ret_or_1)) { + if ($not(self.$class().$emit_encoding())) { + return self.$n("const", [self.$n("const", [nil, "Encoding"], nil), "UTF_8"], node.$loc().$dup()) + } else { + return node + } + } else if ($eqeqeq("ident", $ret_or_1)) { + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), $a; + if ($truthy($send(["?", "!"], 'any?', [], function $$9(c){ + + + if (c == null) c = nil;; + return name.$to_s()['$end_with?'](c);}, 1))) { + self.$diagnostic("error", "invalid_id_to_get", $hash2(["identifier"], {"identifier": name.$to_s()}), node.$loc().$expression()) + }; + if (($truthy($rb_ge(self.parser.$version(), 27)) && ($truthy(self.parser.$try_declare_numparam(node))))) { + return node.$updated("lvar") + }; + if (!$truthy(self.parser.$static_env()['$declared?'](name))) { + return self.$n("send", [nil, name], self.$var_send_map(node)) + }; + if ($eqeq(name.$to_s(), self.$parser().$current_arg_stack().$top())) { + self.$diagnostic("error", "circular_argument_reference", $hash2(["var_name"], {"var_name": name.$to_s()}), node.$loc().$expression()) + }; + return node.$updated("lvar"); + } else { + return node + } + }, 1); + + $def(self, '$const', function $Default_const$10(name_t) { + var self = this; + + return self.$n("const", [nil, self.$value(name_t).$to_sym()], self.$constant_map(nil, nil, name_t)) + }, 1); + + $def(self, '$const_global', function $$const_global(t_colon3, name_t) { + var self = this, cbase = nil; + + + cbase = self.$n0("cbase", self.$token_map(t_colon3)); + return self.$n("const", [cbase, self.$value(name_t).$to_sym()], self.$constant_map(cbase, t_colon3, name_t)); + }, 2); + + $def(self, '$const_fetch', function $$const_fetch(scope, t_colon2, name_t) { + var self = this; + + return self.$n("const", [scope, self.$value(name_t).$to_sym()], self.$constant_map(scope, t_colon2, name_t)) + }, 3); + + $def(self, '$__ENCODING__', function $$__ENCODING__(__ENCODING__t) { + var self = this; + + return self.$n0("__ENCODING__", self.$token_map(__ENCODING__t)) + }, 1); + + $def(self, '$assignable', function $$assignable(node) { + var $a, self = this, $ret_or_1 = nil, name = nil, var_name = nil, name_loc = nil; + + if ($eqeqeq("cvar", ($ret_or_1 = node.$type()))) { + return node.$updated("cvasgn") + } else if ($eqeqeq("ivar", $ret_or_1)) { + return node.$updated("ivasgn") + } else if ($eqeqeq("gvar", $ret_or_1)) { + return node.$updated("gvasgn") + } else if ($eqeqeq("const", $ret_or_1)) { + + if ($truthy(self.parser.$context().$in_def())) { + self.$diagnostic("error", "dynamic_const", nil, node.$loc().$expression()) + }; + return node.$updated("casgn"); + } else if ($eqeqeq("ident", $ret_or_1)) { + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), $a; + var_name = node.$children()['$[]'](0).$to_s(); + name_loc = node.$loc().$expression(); + self.$check_assignment_to_numparam(var_name, name_loc); + self.$check_reserved_for_numparam(var_name, name_loc); + self.parser.$static_env().$declare(name); + return node.$updated("lvasgn"); + } else if ($eqeqeq("match_var", $ret_or_1)) { + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), $a; + var_name = node.$children()['$[]'](0).$to_s(); + name_loc = node.$loc().$expression(); + self.$check_assignment_to_numparam(var_name, name_loc); + self.$check_reserved_for_numparam(var_name, name_loc); + return node; + } else if (($eqeqeq("nil", $ret_or_1) || (($eqeqeq("self", $ret_or_1) || (($eqeqeq("true", $ret_or_1) || (($eqeqeq("false", $ret_or_1) || (($eqeqeq("__FILE__", $ret_or_1) || (($eqeqeq("__LINE__", $ret_or_1) || ($eqeqeq("__ENCODING__", $ret_or_1)))))))))))))) { + return self.$diagnostic("error", "invalid_assignment", nil, node.$loc().$expression()) + } else if (($eqeqeq("back_ref", $ret_or_1) || ($eqeqeq("nth_ref", $ret_or_1)))) { + return self.$diagnostic("error", "backref_assignment", nil, node.$loc().$expression()) + } else { + return nil + } + }, 1); + + $def(self, '$const_op_assignable', function $$const_op_assignable(node) { + + return node.$updated("casgn") + }, 1); + + $def(self, '$assign', function $$assign(lhs, eql_t, rhs) { + var self = this; + + return lhs['$<<'](rhs).$updated(nil, nil, $hash2(["location"], {"location": lhs.$loc().$with_operator(self.$loc(eql_t)).$with_expression(self.$join_exprs(lhs, rhs))})) + }, 3); + + $def(self, '$op_assign', function $$op_assign(lhs, op_t, rhs) { + var self = this, $ret_or_1 = nil, operator = nil, source_map = nil, $ret_or_2 = nil; + + if (($eqeqeq("gvasgn", ($ret_or_1 = lhs.$type())) || (($eqeqeq("ivasgn", $ret_or_1) || (($eqeqeq("lvasgn", $ret_or_1) || (($eqeqeq("cvasgn", $ret_or_1) || (($eqeqeq("casgn", $ret_or_1) || (($eqeqeq("send", $ret_or_1) || (($eqeqeq("csend", $ret_or_1) || ($eqeqeq("index", $ret_or_1)))))))))))))))) { + + operator = self.$value(op_t)['$[]']($range(0, -1, false)).$to_sym(); + source_map = lhs.$loc().$with_operator(self.$loc(op_t)).$with_expression(self.$join_exprs(lhs, rhs)); + if ($eqeq(lhs.$type(), "index")) { + lhs = lhs.$updated("indexasgn") + }; + if ($eqeqeq("&&", ($ret_or_2 = operator))) { + return self.$n("and_asgn", [lhs, rhs], source_map) + } else if ($eqeqeq("||", $ret_or_2)) { + return self.$n("or_asgn", [lhs, rhs], source_map) + } else { + return self.$n("op_asgn", [lhs, operator, rhs], source_map) + }; + } else if (($eqeqeq("back_ref", $ret_or_1) || ($eqeqeq("nth_ref", $ret_or_1)))) { + return self.$diagnostic("error", "backref_assignment", nil, lhs.$loc().$expression()) + } else { + return nil + } + }, 3); + + $def(self, '$multi_lhs', function $$multi_lhs(begin_t, items, end_t) { + var self = this; + + return self.$n("mlhs", [].concat($to_a(items)), self.$collection_map(begin_t, items, end_t)) + }, 3); + + $def(self, '$multi_assign', function $$multi_assign(lhs, eql_t, rhs) { + var self = this; + + return self.$n("masgn", [lhs, rhs], self.$binary_op_map(lhs, eql_t, rhs)) + }, 3); + + $def(self, '$def_class', function $$def_class(class_t, name, lt_t, superclass, body, end_t) { + var self = this; + + return self.$n("class", [name, superclass, body], self.$module_definition_map(class_t, name, lt_t, end_t)) + }, 6); + + $def(self, '$def_sclass', function $$def_sclass(class_t, lshft_t, expr, body, end_t) { + var self = this; + + return self.$n("sclass", [expr, body], self.$module_definition_map(class_t, nil, lshft_t, end_t)) + }, 5); + + $def(self, '$def_module', function $$def_module(module_t, name, body, end_t) { + var self = this; + + return self.$n("module", [name, body], self.$module_definition_map(module_t, name, nil, end_t)) + }, 4); + + $def(self, '$def_method', function $$def_method(def_t, name_t, args, body, end_t) { + var self = this; + + + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("def", [self.$value(name_t).$to_sym(), args, body], self.$definition_map(def_t, nil, name_t, end_t)); + }, 5); + + $def(self, '$def_endless_method', function $$def_endless_method(def_t, name_t, args, assignment_t, body) { + var self = this; + + + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("def", [self.$value(name_t).$to_sym(), args, body], self.$endless_definition_map(def_t, nil, name_t, assignment_t, body)); + }, 5); + + $def(self, '$def_singleton', function $$def_singleton(def_t, definee, dot_t, name_t, args, body, end_t) { + var self = this; + + + self.$validate_definee(definee); + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("defs", [definee, self.$value(name_t).$to_sym(), args, body], self.$definition_map(def_t, dot_t, name_t, end_t)); + }, 7); + + $def(self, '$def_endless_singleton', function $$def_endless_singleton(def_t, definee, dot_t, name_t, args, assignment_t, body) { + var self = this; + + + self.$validate_definee(definee); + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("defs", [definee, self.$value(name_t).$to_sym(), args, body], self.$endless_definition_map(def_t, dot_t, name_t, assignment_t, body)); + }, 7); + + $def(self, '$undef_method', function $$undef_method(undef_t, names) { + var self = this; + + return self.$n("undef", [].concat($to_a(names)), self.$keyword_map(undef_t, nil, names, nil)) + }, 2); + + $def(self, '$alias', function $$alias(alias_t, to, from) { + var self = this; + + return self.$n("alias", [to, from], self.$keyword_map(alias_t, nil, [to, from], nil)) + }, 3); + + $def(self, '$args', function $$args(begin_t, args, end_t, check_args) { + var self = this, map = nil; + + + + if (check_args == null) check_args = true;; + if ($truthy(check_args)) { + args = self.$check_duplicate_args(args) + }; + self.$validate_no_forward_arg_after_restarg(args); + map = self.$collection_map(begin_t, args, end_t); + if ((($not(self.$class().$emit_forward_arg()) && ($eqeq(args.$length(), 1))) && ($eqeq(args['$[]'](0).$type(), "forward_arg")))) { + return self.$n("forward_args", [], map) + } else { + return self.$n("args", args, map) + }; + }, -4); + + $def(self, '$numargs', function $$numargs(max_numparam) { + var self = this; + + return self.$n("numargs", [max_numparam], nil) + }, 1); + + $def(self, '$forward_only_args', function $$forward_only_args(begin_t, dots_t, end_t) { + var self = this, arg = nil; + + if ($truthy(self.$class().$emit_forward_arg())) { + + arg = self.$forward_arg(dots_t); + return self.$n("args", [arg], self.$collection_map(begin_t, [arg], end_t)); + } else { + return self.$n("forward_args", [], self.$collection_map(begin_t, self.$token_map(dots_t), end_t)) + } + }, 3); + + $def(self, '$forward_arg', function $$forward_arg(dots_t) { + var self = this; + + return self.$n("forward_arg", [], self.$token_map(dots_t)) + }, 1); + + $def(self, '$arg', function $$arg(name_t) { + var self = this; + + + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("arg", [self.$value(name_t).$to_sym()], self.$variable_map(name_t)); + }, 1); + + $def(self, '$optarg', function $$optarg(name_t, eql_t, value) { + var self = this; + + + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("optarg", [self.$value(name_t).$to_sym(), value], self.$variable_map(name_t).$with_operator(self.$loc(eql_t)).$with_expression(self.$loc(name_t).$join(value.$loc().$expression()))); + }, 3); + + $def(self, '$restarg', function $$restarg(star_t, name_t) { + var self = this; + + + + if (name_t == null) name_t = nil;; + if ($truthy(name_t)) { + + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("restarg", [self.$value(name_t).$to_sym()], self.$arg_prefix_map(star_t, name_t)); + } else { + return self.$n0("restarg", self.$arg_prefix_map(star_t)) + }; + }, -2); + + $def(self, '$kwarg', function $$kwarg(name_t) { + var self = this; + + + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("kwarg", [self.$value(name_t).$to_sym()], self.$kwarg_map(name_t)); + }, 1); + + $def(self, '$kwoptarg', function $$kwoptarg(name_t, value) { + var self = this; + + + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("kwoptarg", [self.$value(name_t).$to_sym(), value], self.$kwarg_map(name_t, value)); + }, 2); + + $def(self, '$kwrestarg', function $$kwrestarg(dstar_t, name_t) { + var self = this; + + + + if (name_t == null) name_t = nil;; + if ($truthy(name_t)) { + + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("kwrestarg", [self.$value(name_t).$to_sym()], self.$arg_prefix_map(dstar_t, name_t)); + } else { + return self.$n0("kwrestarg", self.$arg_prefix_map(dstar_t)) + }; + }, -2); + + $def(self, '$kwnilarg', function $$kwnilarg(dstar_t, nil_t) { + var self = this; + + return self.$n0("kwnilarg", self.$arg_prefix_map(dstar_t, nil_t)) + }, 2); + + $def(self, '$shadowarg', function $$shadowarg(name_t) { + var self = this; + + + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)); + return self.$n("shadowarg", [self.$value(name_t).$to_sym()], self.$variable_map(name_t)); + }, 1); + + $def(self, '$blockarg', function $$blockarg(amper_t, name_t) { + var self = this, arg_name = nil; + + + if ($not(name_t['$nil?']())) { + self.$check_reserved_for_numparam(self.$value(name_t), self.$loc(name_t)) + }; + arg_name = ($truthy(name_t) ? (self.$value(name_t).$to_sym()) : (nil)); + return self.$n("blockarg", [arg_name], self.$arg_prefix_map(amper_t, name_t)); + }, 2); + + $def(self, '$procarg0', function $$procarg0(arg) { + var self = this; + + if ($truthy(self.$class().$emit_procarg0())) { + if (($eqeq(arg.$type(), "arg") && ($truthy(self.$class().$emit_arg_inside_procarg0())))) { + return self.$n("procarg0", [arg], $$$($$$($$('Source'), 'Map'), 'Collection').$new(nil, nil, arg.$location().$expression())) + } else { + return arg.$updated("procarg0") + } + } else { + return arg + } + }, 1); + + $def(self, '$arg_expr', function $$arg_expr(expr) { + var self = this; + + if ($eqeq(expr.$type(), "lvasgn")) { + return expr.$updated("arg") + } else { + return self.$n("arg_expr", [expr], expr.$loc().$dup()) + } + }, 1); + + $def(self, '$restarg_expr', function $$restarg_expr(star_t, expr) { + var self = this; + + + + if (expr == null) expr = nil;; + if ($truthy(expr['$nil?']())) { + return self.$n0("restarg", self.$token_map(star_t)) + } else if ($eqeq(expr.$type(), "lvasgn")) { + return expr.$updated("restarg") + } else { + return self.$n("restarg_expr", [expr], expr.$loc().$dup()) + }; + }, -2); + + $def(self, '$blockarg_expr', function $$blockarg_expr(amper_t, expr) { + var self = this; + + if ($eqeq(expr.$type(), "lvasgn")) { + return expr.$updated("blockarg") + } else { + return self.$n("blockarg_expr", [expr], expr.$loc().$dup()) + } + }, 2); + + $def(self, '$objc_kwarg', function $$objc_kwarg(kwname_t, assoc_t, name_t) { + var self = this, kwname_l = nil, operator_l = nil; + + + kwname_l = self.$loc(kwname_t); + if ($truthy(assoc_t['$nil?']())) { + + kwname_l = kwname_l.$resize($rb_minus(kwname_l.$size(), 1)); + operator_l = kwname_l.$end().$resize(1); + } else { + operator_l = self.$loc(assoc_t) + }; + return self.$n("objc_kwarg", [self.$value(kwname_t).$to_sym(), self.$value(name_t).$to_sym()], $$$($$$($$('Source'), 'Map'), 'ObjcKwarg').$new(kwname_l, operator_l, self.$loc(name_t), kwname_l.$join(self.$loc(name_t)))); + }, 3); + + $def(self, '$objc_restarg', function $$objc_restarg(star_t, name) { + var self = this; + + + + if (name == null) name = nil;; + if ($truthy(name['$nil?']())) { + return self.$n0("restarg", self.$arg_prefix_map(star_t)) + } else if ($eqeq(name.$type(), "arg")) { + return name.$updated("restarg", nil, $hash2(["location"], {"location": name.$loc().$with_operator(self.$loc(star_t))})) + } else { + return self.$n("objc_restarg", [name], self.$unary_op_map(star_t, name)) + }; + }, -2); + + $def(self, '$call_type_for_dot', function $$call_type_for_dot(dot_t) { + var self = this; + + if (($not(dot_t['$nil?']()) && ($eqeq(self.$value(dot_t), "anddot")))) { + return "csend" + } else { + return "send" + } + }, 1); + + $def(self, '$forwarded_args', function $$forwarded_args(dots_t) { + var self = this; + + return self.$n("forwarded_args", [], self.$token_map(dots_t)) + }, 1); + + $def(self, '$call_method', function $$call_method(receiver, dot_t, selector_t, lparen_t, args, rparen_t) { + var self = this, type = nil; + + + + if (lparen_t == null) lparen_t = nil;; + + if (args == null) args = [];; + + if (rparen_t == null) rparen_t = nil;; + type = self.$call_type_for_dot(dot_t); + if ($truthy(self.$class().$emit_kwargs())) { + self.$rewrite_hash_args_to_kwargs(args) + }; + if ($truthy(selector_t['$nil?']())) { + return self.$n(type, [receiver, "call"].concat($to_a(args)), self.$send_map(receiver, dot_t, nil, lparen_t, args, rparen_t)) + } else { + return self.$n(type, [receiver, self.$value(selector_t).$to_sym()].concat($to_a(args)), self.$send_map(receiver, dot_t, selector_t, lparen_t, args, rparen_t)) + }; + }, -4); + + $def(self, '$call_lambda', function $$call_lambda(lambda_t) { + var self = this; + + if ($truthy(self.$class().$emit_lambda())) { + return self.$n0("lambda", self.$expr_map(self.$loc(lambda_t))) + } else { + return self.$n("send", [nil, "lambda"], self.$send_map(nil, nil, lambda_t)) + } + }, 1); + + $def(self, '$block', function $$block(method_call, begin_t, args, body, end_t) { + var $a, self = this, _receiver = nil, _selector = nil, call_args = nil, last_arg = nil, block_type = nil, actual_send = nil, block = nil; + + + $a = [].concat($to_a(method_call)), (_receiver = ($a[0] == null ? nil : $a[0])), (_selector = ($a[1] == null ? nil : $a[1])), (call_args = $slice.call($a, 2)), $a; + if ($eqeq(method_call.$type(), "yield")) { + self.$diagnostic("error", "block_given_to_yield", nil, method_call.$loc().$keyword(), [self.$loc(begin_t)]) + }; + last_arg = call_args.$last(); + if (($truthy(last_arg) && (($eqeq(last_arg.$type(), "block_pass") || ($eqeq(last_arg.$type(), "forwarded_args")))))) { + self.$diagnostic("error", "block_and_blockarg", nil, last_arg.$loc().$expression(), [self.$loc(begin_t)]) + }; + if ($eqeq(args.$type(), "numargs")) { + + block_type = "numblock"; + args = args.$children()['$[]'](0); + } else { + block_type = "block" + }; + if ($truthy(["send", "csend", "index", "super", "zsuper", "lambda"]['$include?'](method_call.$type()))) { + return self.$n(block_type, [method_call, args, body], self.$block_map(method_call.$loc().$expression(), begin_t, end_t)) + } else { + + $a = [].concat($to_a(method_call)), (actual_send = ($a[0] == null ? nil : $a[0])), $a; + block = self.$n(block_type, [actual_send, args, body], self.$block_map(actual_send.$loc().$expression(), begin_t, end_t)); + return self.$n(method_call.$type(), [block], method_call.$loc().$with_expression(self.$join_exprs(method_call, block))); + }; + }, 5); + + $def(self, '$block_pass', function $$block_pass(amper_t, arg) { + var self = this; + + return self.$n("block_pass", [arg], self.$unary_op_map(amper_t, arg)) + }, 2); + + $def(self, '$objc_varargs', function $$objc_varargs(pair, rest_of_varargs) { + var $a, self = this, value = nil, first_vararg = nil, vararg_array = nil; + + + $a = [].concat($to_a(pair)), (value = ($a[0] == null ? nil : $a[0])), (first_vararg = ($a[1] == null ? nil : $a[1])), $a; + vararg_array = self.$array(nil, [first_vararg].concat($to_a(rest_of_varargs)), nil).$updated("objc_varargs"); + return pair.$updated(nil, [value, vararg_array], $hash2(["location"], {"location": pair.$loc().$with_expression(pair.$loc().$expression().$join(vararg_array.$loc().$expression()))})); + }, 2); + + $def(self, '$attr_asgn', function $$attr_asgn(receiver, dot_t, selector_t) { + var self = this, method_name = nil, type = nil; + + + method_name = $rb_plus(self.$value(selector_t), "=").$to_sym(); + type = self.$call_type_for_dot(dot_t); + return self.$n(type, [receiver, method_name], self.$send_map(receiver, dot_t, selector_t)); + }, 3); + + $def(self, '$index', function $$index(receiver, lbrack_t, indexes, rbrack_t) { + var self = this; + + + if ($truthy(self.$class().$emit_kwargs())) { + self.$rewrite_hash_args_to_kwargs(indexes) + }; + if ($truthy(self.$class().$emit_index())) { + return self.$n("index", [receiver].concat($to_a(indexes)), self.$index_map(receiver, lbrack_t, rbrack_t)) + } else { + return self.$n("send", [receiver, "[]"].concat($to_a(indexes)), self.$send_index_map(receiver, lbrack_t, rbrack_t)) + }; + }, 4); + + $def(self, '$index_asgn', function $$index_asgn(receiver, lbrack_t, indexes, rbrack_t) { + var self = this; + + if ($truthy(self.$class().$emit_index())) { + return self.$n("indexasgn", [receiver].concat($to_a(indexes)), self.$index_map(receiver, lbrack_t, rbrack_t)) + } else { + return self.$n("send", [receiver, "[]="].concat($to_a(indexes)), self.$send_index_map(receiver, lbrack_t, rbrack_t)) + } + }, 4); + + $def(self, '$binary_op', function $$binary_op(receiver, operator_t, arg) { + var self = this, source_map = nil, operator = nil, method_call = nil; + + + source_map = self.$send_binary_op_map(receiver, operator_t, arg); + if ($eqeq(self.parser.$version(), 18)) { + + operator = self.$value(operator_t); + if ($eqeq(operator, "!=")) { + method_call = self.$n("send", [receiver, "==", arg], source_map) + } else if ($eqeq(operator, "!~")) { + method_call = self.$n("send", [receiver, "=~", arg], source_map) + }; + if ($truthy(["!=", "!~"]['$include?'](operator))) { + return self.$n("not", [method_call], self.$expr_map(source_map.$expression())) + }; + }; + return self.$n("send", [receiver, self.$value(operator_t).$to_sym(), arg], source_map); + }, 3); + + $def(self, '$match_op', function $$match_op(receiver, match_t, arg) { + var self = this, source_map = nil, regexp = nil; + + + source_map = self.$send_binary_op_map(receiver, match_t, arg); + if ($truthy((regexp = self.$static_regexp_node(receiver)))) { + + $send(regexp.$names(), 'each', [], function $$11(name){var self = $$11.$$s == null ? this : $$11.$$s; + if (self.parser == null) self.parser = nil; + + + + if (name == null) name = nil;; + return self.parser.$static_env().$declare(name);}, {$$arity: 1, $$s: self}); + return self.$n("match_with_lvasgn", [receiver, arg], source_map); + } else { + return self.$n("send", [receiver, "=~", arg], source_map) + }; + }, 3); + + $def(self, '$unary_op', function $$unary_op(op_t, receiver) { + var self = this, $ret_or_1 = nil, method = nil; + + + if (($eqeqeq("+", ($ret_or_1 = self.$value(op_t))) || ($eqeqeq("-", $ret_or_1)))) { + method = $rb_plus(self.$value(op_t), "@") + } else { + method = self.$value(op_t) + }; + return self.$n("send", [receiver, method.$to_sym()], self.$send_unary_op_map(op_t, receiver)); + }, 2); + + $def(self, '$not_op', function $$not_op(not_t, begin_t, receiver, end_t) { + var self = this, nil_node = nil; + + + + if (begin_t == null) begin_t = nil;; + + if (receiver == null) receiver = nil;; + + if (end_t == null) end_t = nil;; + if ($eqeq(self.parser.$version(), 18)) { + return self.$n("not", [self.$check_condition(receiver)], self.$unary_op_map(not_t, receiver)) + } else if ($truthy(receiver['$nil?']())) { + + nil_node = self.$n0("begin", self.$collection_map(begin_t, nil, end_t)); + return self.$n("send", [nil_node, "!"], self.$send_unary_op_map(not_t, nil_node)); + } else { + return self.$n("send", [self.$check_condition(receiver), "!"], self.$send_map(nil, nil, not_t, begin_t, [receiver], end_t)) + }; + }, -2); + + $def(self, '$logical_op', function $$logical_op(type, lhs, op_t, rhs) { + var self = this; + + return self.$n(type, [lhs, rhs], self.$binary_op_map(lhs, op_t, rhs)) + }, 4); + + $def(self, '$condition', function $$condition(cond_t, cond, then_t, if_true, else_t, if_false, end_t) { + var self = this; + + return self.$n("if", [self.$check_condition(cond), if_true, if_false], self.$condition_map(cond_t, cond, then_t, if_true, else_t, if_false, end_t)) + }, 7); + + $def(self, '$condition_mod', function $$condition_mod(if_true, if_false, cond_t, cond) { + var self = this, $ret_or_1 = nil; + + return self.$n("if", [self.$check_condition(cond), if_true, if_false], self.$keyword_mod_map(($truthy(($ret_or_1 = if_true)) ? ($ret_or_1) : (if_false)), cond_t, cond)) + }, 4); + + $def(self, '$ternary', function $$ternary(cond, question_t, if_true, colon_t, if_false) { + var self = this; + + return self.$n("if", [self.$check_condition(cond), if_true, if_false], self.$ternary_map(cond, question_t, if_true, colon_t, if_false)) + }, 5); + + $def(self, '$when', function $$when(when_t, patterns, then_t, body) { + var self = this, children = nil; + + + children = patterns['$<<'](body); + return self.$n("when", children, self.$keyword_map(when_t, then_t, children, nil)); + }, 4); + + $def(self, '$case', function $Default_case$12(case_t, expr, when_bodies, else_t, else_body, end_t) { + var self = this; + + return self.$n("case", [expr].concat($to_a(when_bodies['$<<'](else_body))), self.$condition_map(case_t, expr, nil, nil, else_t, else_body, end_t)) + }, 6); + + $def(self, '$loop', function $$loop(type, keyword_t, cond, do_t, body, end_t) { + var self = this; + + return self.$n(type, [self.$check_condition(cond), body], self.$keyword_map(keyword_t, do_t, nil, end_t)) + }, 6); + + $def(self, '$loop_mod', function $$loop_mod(type, body, keyword_t, cond) { + var self = this; + + + if ($eqeq(body.$type(), "kwbegin")) { + type = "" + (type) + "_post" + }; + return self.$n(type, [self.$check_condition(cond), body], self.$keyword_mod_map(body, keyword_t, cond)); + }, 4); + + $def(self, '$for', function $Default_for$13(for_t, iterator, in_t, iteratee, do_t, body, end_t) { + var self = this; + + return self.$n("for", [iterator, iteratee, body], self.$for_map(for_t, in_t, do_t, end_t)) + }, 7); + + $def(self, '$keyword_cmd', function $$keyword_cmd(type, keyword_t, lparen_t, args, rparen_t) { + var self = this, last_arg = nil; + + + + if (lparen_t == null) lparen_t = nil;; + + if (args == null) args = [];; + + if (rparen_t == null) rparen_t = nil;; + if (($eqeq(type, "yield") && ($truthy($rb_gt(args.$count(), 0))))) { + + last_arg = args.$last(); + if ($eqeq(last_arg.$type(), "block_pass")) { + self.$diagnostic("error", "block_given_to_yield", nil, self.$loc(keyword_t), [last_arg.$loc().$expression()]) + }; + }; + if (($truthy(["yield", "super"]['$include?'](type)) && ($truthy(self.$class().$emit_kwargs())))) { + self.$rewrite_hash_args_to_kwargs(args) + }; + return self.$n(type, args, self.$keyword_map(keyword_t, lparen_t, args, rparen_t)); + }, -3); + + $def(self, '$preexe', function $$preexe(preexe_t, lbrace_t, compstmt, rbrace_t) { + var self = this; + + return self.$n("preexe", [compstmt], self.$keyword_map(preexe_t, lbrace_t, [], rbrace_t)) + }, 4); + + $def(self, '$postexe', function $$postexe(postexe_t, lbrace_t, compstmt, rbrace_t) { + var self = this; + + return self.$n("postexe", [compstmt], self.$keyword_map(postexe_t, lbrace_t, [], rbrace_t)) + }, 4); + + $def(self, '$rescue_body', function $$rescue_body(rescue_t, exc_list, assoc_t, exc_var, then_t, compound_stmt) { + var self = this; + + return self.$n("resbody", [exc_list, exc_var, compound_stmt], self.$rescue_body_map(rescue_t, exc_list, assoc_t, exc_var, then_t, compound_stmt)) + }, 6); + + $def(self, '$begin_body', function $$begin_body(compound_stmt, rescue_bodies, else_t, else_, ensure_t, ensure_) { + var self = this, statements = nil; + + + + if (rescue_bodies == null) rescue_bodies = [];; + + if (else_t == null) else_t = nil;; + + if (else_ == null) else_ = nil;; + + if (ensure_t == null) ensure_t = nil;; + + if (ensure_ == null) ensure_ = nil;; + if ($truthy(rescue_bodies['$any?']())) { + if ($truthy(else_t)) { + compound_stmt = self.$n("rescue", [compound_stmt].concat($to_a($rb_plus(rescue_bodies, [else_]))), self.$eh_keyword_map(compound_stmt, nil, rescue_bodies, else_t, else_)) + } else { + compound_stmt = self.$n("rescue", [compound_stmt].concat($to_a($rb_plus(rescue_bodies, [nil]))), self.$eh_keyword_map(compound_stmt, nil, rescue_bodies, nil, nil)) + } + } else if ($truthy(else_t)) { + + statements = []; + if ($not(compound_stmt['$nil?']())) { + if ($eqeq(compound_stmt.$type(), "begin")) { + statements = $rb_plus(statements, compound_stmt.$children()) + } else { + statements.$push(compound_stmt) + } + }; + statements.$push(self.$n("begin", [else_], self.$collection_map(else_t, [else_], nil))); + compound_stmt = self.$n("begin", statements, self.$collection_map(nil, statements, nil)); + }; + if ($truthy(ensure_t)) { + compound_stmt = self.$n("ensure", [compound_stmt, ensure_], self.$eh_keyword_map(compound_stmt, ensure_t, [ensure_], nil, nil)) + }; + return compound_stmt; + }, -2); + + $def(self, '$compstmt', function $$compstmt(statements) { + var self = this; + + if ($truthy(statements['$none?']())) { + return nil + } else if ($truthy(statements['$one?']())) { + return statements.$first() + } else { + return self.$n("begin", statements, self.$collection_map(nil, statements, nil)) + } + }, 1); + + $def(self, '$begin', function $$begin(begin_t, body, end_t) { + var self = this; + + if ($truthy(body['$nil?']())) { + return self.$n0("begin", self.$collection_map(begin_t, nil, end_t)) + } else if (($eqeq(body.$type(), "mlhs") || ((($eqeq(body.$type(), "begin") && ($truthy(body.$loc().$begin()['$nil?']()))) && ($truthy(body.$loc().$end()['$nil?']())))))) { + return self.$n(body.$type(), body.$children(), self.$collection_map(begin_t, body.$children(), end_t)) + } else { + return self.$n("begin", [body], self.$collection_map(begin_t, [body], end_t)) + } + }, 3); + + $def(self, '$begin_keyword', function $$begin_keyword(begin_t, body, end_t) { + var self = this; + + if ($truthy(body['$nil?']())) { + return self.$n0("kwbegin", self.$collection_map(begin_t, nil, end_t)) + } else if ((($eqeq(body.$type(), "begin") && ($truthy(body.$loc().$begin()['$nil?']()))) && ($truthy(body.$loc().$end()['$nil?']())))) { + return self.$n("kwbegin", body.$children(), self.$collection_map(begin_t, body.$children(), end_t)) + } else { + return self.$n("kwbegin", [body], self.$collection_map(begin_t, [body], end_t)) + } + }, 3); + + $def(self, '$case_match', function $$case_match(case_t, expr, in_bodies, else_t, else_body, end_t) { + var self = this; + + + if (($truthy(else_t) && ($not(else_body)))) { + else_body = self.$n("empty_else", nil, self.$token_map(else_t)) + }; + return self.$n("case_match", [expr].concat($to_a(in_bodies['$<<'](else_body))), self.$condition_map(case_t, expr, nil, nil, else_t, else_body, end_t)); + }, 6); + + $def(self, '$in_match', function $$in_match(lhs, in_t, rhs) { + var self = this; + + return self.$n("in_match", [lhs, rhs], self.$binary_op_map(lhs, in_t, rhs)) + }, 3); + + $def(self, '$match_pattern', function $$match_pattern(lhs, match_t, rhs) { + var self = this; + + return self.$n("match_pattern", [lhs, rhs], self.$binary_op_map(lhs, match_t, rhs)) + }, 3); + + $def(self, '$match_pattern_p', function $$match_pattern_p(lhs, match_t, rhs) { + var self = this; + + return self.$n("match_pattern_p", [lhs, rhs], self.$binary_op_map(lhs, match_t, rhs)) + }, 3); + + $def(self, '$in_pattern', function $$in_pattern(in_t, pattern, guard, then_t, body) { + var self = this, children = nil; + + + children = [pattern, guard, body]; + return self.$n("in_pattern", children, self.$keyword_map(in_t, then_t, children.$compact(), nil)); + }, 5); + + $def(self, '$if_guard', function $$if_guard(if_t, if_body) { + var self = this; + + return self.$n("if_guard", [if_body], self.$guard_map(if_t, if_body)) + }, 2); + + $def(self, '$unless_guard', function $$unless_guard(unless_t, unless_body) { + var self = this; + + return self.$n("unless_guard", [unless_body], self.$guard_map(unless_t, unless_body)) + }, 2); + + $def(self, '$match_var', function $$match_var(name_t) { + var self = this, name = nil, name_l = nil; + + + name = self.$value(name_t).$to_sym(); + name_l = self.$loc(name_t); + self.$check_lvar_name(name, name_l); + self.$check_duplicate_pattern_variable(name, name_l); + self.parser.$static_env().$declare(name); + return self.$n("match_var", [name], self.$variable_map(name_t)); + }, 1); + + $def(self, '$match_hash_var', function $$match_hash_var(name_t) { + var self = this, name = nil, expr_l = nil, name_l = nil; + + + name = self.$value(name_t).$to_sym(); + expr_l = self.$loc(name_t); + name_l = expr_l.$adjust($hash2(["end_pos"], {"end_pos": -1})); + self.$check_lvar_name(name, name_l); + self.$check_duplicate_pattern_variable(name, name_l); + self.parser.$static_env().$declare(name); + return self.$n("match_var", [name], $$$($$$($$('Source'), 'Map'), 'Variable').$new(name_l, expr_l)); + }, 1); + + $def(self, '$match_hash_var_from_str', function $$match_hash_var_from_str(begin_t, strings, end_t) { + var $a, self = this, string = nil, $ret_or_1 = nil, name = nil, name_l = nil, begin_l = nil, end_l = nil, expr_l = nil; + + + if ($truthy($rb_gt(strings.$length(), 1))) { + self.$diagnostic("error", "pm_interp_in_var_name", nil, self.$loc(begin_t).$join(self.$loc(end_t))) + }; + string = strings['$[]'](0); + if ($eqeqeq("str", ($ret_or_1 = string.$type()))) { + + $a = [].concat($to_a(string)), (name = ($a[0] == null ? nil : $a[0])), $a; + name_l = string.$loc().$expression(); + self.$check_lvar_name(name, name_l); + self.$check_duplicate_pattern_variable(name, name_l); + self.parser.$static_env().$declare(name); + if ($truthy((begin_l = string.$loc().$begin()))) { + name_l = name_l.$adjust($hash2(["begin_pos"], {"begin_pos": begin_l.$length()})) + }; + if ($truthy((end_l = string.$loc().$end()))) { + name_l = name_l.$adjust($hash2(["end_pos"], {"end_pos": end_l.$length()['$-@']()})) + }; + expr_l = self.$loc(begin_t).$join(string.$loc().$expression()).$join(self.$loc(end_t)); + return self.$n("match_var", [name.$to_sym()], $$$($$$($$('Source'), 'Map'), 'Variable').$new(name_l, expr_l)); + } else if ($eqeqeq("begin", $ret_or_1)) { + return self.$match_hash_var_from_str(begin_t, string.$children(), end_t) + } else { + return self.$diagnostic("error", "pm_interp_in_var_name", nil, self.$loc(begin_t).$join(self.$loc(end_t))) + }; + }, 3); + + $def(self, '$match_rest', function $$match_rest(star_t, name_t) { + var self = this, name = nil; + + + + if (name_t == null) name_t = nil;; + if ($truthy(name_t['$nil?']())) { + return self.$n0("match_rest", self.$unary_op_map(star_t)) + } else { + + name = self.$match_var(name_t); + return self.$n("match_rest", [name], self.$unary_op_map(star_t, name)); + }; + }, -2); + + $def(self, '$hash_pattern', function $$hash_pattern(lbrace_t, kwargs, rbrace_t) { + var self = this, args = nil; + + + args = self.$check_duplicate_args(kwargs); + return self.$n("hash_pattern", args, self.$collection_map(lbrace_t, args, rbrace_t)); + }, 3); + + $def(self, '$array_pattern', function $$array_pattern(lbrack_t, elements, rbrack_t) { + var self = this, trailing_comma = nil, node_elements = nil, node_type = nil; + + + if ($truthy(elements['$nil?']())) { + return self.$n("array_pattern", nil, self.$collection_map(lbrack_t, [], rbrack_t)) + }; + trailing_comma = false; + node_elements = $send(elements, 'map', [], function $$14(element){ + + + if (element == null) element = nil;; + if ($eqeq(element.$type(), "match_with_trailing_comma")) { + + trailing_comma = true; + return element.$children().$first(); + } else { + + trailing_comma = false; + return element; + };}, 1); + node_type = ($truthy(trailing_comma) ? ("array_pattern_with_tail") : ("array_pattern")); + return self.$n(node_type, node_elements, self.$collection_map(lbrack_t, elements, rbrack_t)); + }, 3); + + $def(self, '$find_pattern', function $$find_pattern(lbrack_t, elements, rbrack_t) { + var self = this; + + return self.$n("find_pattern", elements, self.$collection_map(lbrack_t, elements, rbrack_t)) + }, 3); + + $def(self, '$match_with_trailing_comma', function $$match_with_trailing_comma(match, comma_t) { + var self = this; + + return self.$n("match_with_trailing_comma", [match], self.$expr_map(match.$loc().$expression().$join(self.$loc(comma_t)))) + }, 2); + + $def(self, '$const_pattern', function $$const_pattern(const$, ldelim_t, pattern, rdelim_t) { + var self = this; + + return self.$n("const_pattern", [const$, pattern], $$$($$$($$('Source'), 'Map'), 'Collection').$new(self.$loc(ldelim_t), self.$loc(rdelim_t), const$.$loc().$expression().$join(self.$loc(rdelim_t)))) + }, 4); + + $def(self, '$pin', function $$pin(pin_t, var$) { + var self = this; + + return self.$n("pin", [var$], self.$send_unary_op_map(pin_t, var$)) + }, 2); + + $def(self, '$match_alt', function $$match_alt(left, pipe_t, right) { + var self = this, source_map = nil; + + + source_map = self.$binary_op_map(left, pipe_t, right); + return self.$n("match_alt", [left, right], source_map); + }, 3); + + $def(self, '$match_as', function $$match_as(value, assoc_t, as) { + var self = this, source_map = nil; + + + source_map = self.$binary_op_map(value, assoc_t, as); + return self.$n("match_as", [value, as], source_map); + }, 3); + + $def(self, '$match_nil_pattern', function $$match_nil_pattern(dstar_t, nil_t) { + var self = this; + + return self.$n0("match_nil_pattern", self.$arg_prefix_map(dstar_t, nil_t)) + }, 2); + + $def(self, '$match_pair', function $$match_pair(label_type, label, value) { + var $a, $b, self = this, begin_t = nil, parts = nil, end_t = nil, label_loc = nil, var_name = nil; + + if ($eqeq(label_type, "label")) { + + self.$check_duplicate_pattern_key(label['$[]'](0), label['$[]'](1)); + return self.$pair_keyword(label, value); + } else { + + $b = label, $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (parts = ($a[1] == null ? nil : $a[1])), (end_t = ($a[2] == null ? nil : $a[2])), $b; + label_loc = self.$loc(begin_t).$join(self.$loc(end_t)); + if ($truthy((var_name = self.$static_string(parts)))) { + self.$check_duplicate_pattern_key(var_name, label_loc) + } else { + self.$diagnostic("error", "pm_interp_in_var_name", nil, label_loc) + }; + return self.$pair_quoted(begin_t, parts, end_t, value); + } + }, 3); + + $def(self, '$match_label', function $$match_label(label_type, label) { + var $a, $b, self = this, begin_t = nil, strings = nil, end_t = nil; + + if ($eqeq(label_type, "label")) { + return self.$match_hash_var(label) + } else { + + $b = label, $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (strings = ($a[1] == null ? nil : $a[1])), (end_t = ($a[2] == null ? nil : $a[2])), $b; + return self.$match_hash_var_from_str(begin_t, strings, end_t); + } + }, 2); + self.$private(); + + $def(self, '$check_condition', function $$check_condition(cond) { + var $a, self = this, $ret_or_1 = nil, lhs = nil, rhs = nil, type = nil, $ret_or_2 = nil; + + if ($eqeqeq("masgn", ($ret_or_1 = cond.$type()))) { + if ($truthy($rb_le(self.parser.$version(), 23))) { + return self.$diagnostic("error", "masgn_as_condition", nil, cond.$loc().$expression()) + } else { + return cond + } + } else if ($eqeqeq("begin", $ret_or_1)) { + if ($eqeq(cond.$children().$count(), 1)) { + return cond.$updated(nil, [self.$check_condition(cond.$children().$last())]) + } else { + return cond + } + } else if (($eqeqeq("and", $ret_or_1) || (($eqeqeq("or", $ret_or_1) || (($eqeqeq("irange", $ret_or_1) || ($eqeqeq("erange", $ret_or_1)))))))) { + + $a = [].concat($to_a(cond)), (lhs = ($a[0] == null ? nil : $a[0])), (rhs = ($a[1] == null ? nil : $a[1])), $a; + type = ($eqeqeq("irange", ($ret_or_2 = cond.$type())) ? ("iflipflop") : ($eqeqeq("erange", $ret_or_2) ? ("eflipflop") : (nil))); + if (($truthy(["and", "or"]['$include?'](cond.$type())) && ($eqeq(self.parser.$version(), 18)))) { + return cond + } else { + return cond.$updated(type, [self.$check_condition(lhs), self.$check_condition(rhs)]) + }; + } else if ($eqeqeq("regexp", $ret_or_1)) { + return self.$n("match_current_line", [cond], self.$expr_map(cond.$loc().$expression())) + } else { + return cond + } + }, 1); + + $def(self, '$check_duplicate_args', function $$check_duplicate_args(args, map) { + var self = this; + + + + if (map == null) map = $hash2([], {});; + return $send(args, 'each', [], function $$15(this_arg){var self = $$15.$$s == null ? this : $$15.$$s, $ret_or_1 = nil; + + + + if (this_arg == null) this_arg = nil;; + if (($eqeqeq("arg", ($ret_or_1 = this_arg.$type())) || (($eqeqeq("optarg", $ret_or_1) || (($eqeqeq("restarg", $ret_or_1) || (($eqeqeq("blockarg", $ret_or_1) || (($eqeqeq("kwarg", $ret_or_1) || (($eqeqeq("kwoptarg", $ret_or_1) || (($eqeqeq("kwrestarg", $ret_or_1) || ($eqeqeq("shadowarg", $ret_or_1)))))))))))))))) { + return self.$check_duplicate_arg(this_arg, map) + } else if ($eqeqeq("procarg0", $ret_or_1)) { + if ($truthy(this_arg.$children()['$[]'](0)['$is_a?']($$('Symbol')))) { + return self.$check_duplicate_arg(this_arg, map) + } else { + return self.$check_duplicate_args(this_arg.$children(), map) + } + } else if ($eqeqeq("mlhs", $ret_or_1)) { + return self.$check_duplicate_args(this_arg.$children(), map) + } else { + return nil + };}, {$$arity: 1, $$s: self}); + }, -2); + + $def(self, '$check_duplicate_arg', function $$check_duplicate_arg(this_arg, map) { + var $a, self = this, this_name = nil, that_arg = nil, that_name = nil, $writer = nil; + + + + if (map == null) map = $hash2([], {});; + $a = [].concat($to_a(this_arg)), (this_name = ($a[0] == null ? nil : $a[0])), $a; + that_arg = map['$[]'](this_name); + $a = [].concat($to_a(that_arg)), (that_name = ($a[0] == null ? nil : $a[0])), $a; + if ($truthy(that_arg['$nil?']())) { + + $writer = [this_name, this_arg]; + $send(map, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else if ($truthy(self['$arg_name_collides?'](this_name, that_name))) { + return self.$diagnostic("error", "duplicate_argument", nil, this_arg.$loc().$name(), [that_arg.$loc().$name()]) + } else { + return nil + }; + }, -2); + + $def(self, '$validate_no_forward_arg_after_restarg', function $$validate_no_forward_arg_after_restarg(args) { + var self = this, restarg = nil, forward_arg = nil; + + + restarg = nil; + forward_arg = nil; + $send(args, 'each', [], function $$16(arg){var $ret_or_1 = nil; + + + + if (arg == null) arg = nil;; + if ($eqeqeq("restarg", ($ret_or_1 = arg.$type()))) { + return (restarg = arg) + } else if ($eqeqeq("forward_arg", $ret_or_1)) { + return (forward_arg = arg) + } else { + return nil + };}, 1); + if (($not(forward_arg['$nil?']()) && ($not(restarg['$nil?']())))) { + return self.$diagnostic("error", "forward_arg_after_restarg", nil, forward_arg.$loc().$expression(), [restarg.$loc().$expression()]) + } else { + return nil + }; + }, 1); + + $def(self, '$check_assignment_to_numparam', function $$check_assignment_to_numparam(name, loc) { + var self = this, assigning_to_numparam = nil, $ret_or_1 = nil, $ret_or_2 = nil; + + + if ($truthy($rb_lt(self.parser.$version(), 27))) { + return nil + }; + assigning_to_numparam = ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.parser.$context()['$in_dynamic_block?']())) ? (name['$=~'](/^_([1-9])$/)) : ($ret_or_2)))) ? (self.parser.$max_numparam_stack()['$has_numparams?']()) : ($ret_or_1)); + if ($truthy(assigning_to_numparam)) { + return self.$diagnostic("error", "cant_assign_to_numparam", $hash2(["name"], {"name": name}), loc) + } else { + return nil + }; + }, 2); + + $def(self, '$check_reserved_for_numparam', function $$check_reserved_for_numparam(name, loc) { + var self = this; + + + if ($truthy($rb_lt(self.parser.$version(), 30))) { + return nil + }; + if ($truthy(name['$=~'](/^_([1-9])$/))) { + return self.$diagnostic("error", "reserved_for_numparam", $hash2(["name"], {"name": name}), loc) + } else { + return nil + }; + }, 2); + + $def(self, '$arg_name_collides?', function $Default_arg_name_collides$ques$17(this_name, that_name) { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + if ($eqeqeq(18, ($ret_or_1 = self.parser.$version()))) { + return this_name['$=='](that_name) + } else if ($eqeqeq(19, $ret_or_1)) { + if ($truthy(($ret_or_2 = this_name['$!=']("_")))) { + return this_name['$=='](that_name) + } else { + return $ret_or_2 + } + } else if ($truthy(($ret_or_2 = ($truthy(($ret_or_3 = this_name)) ? (this_name['$[]'](0)['$!=']("_")) : ($ret_or_3))))) { + return this_name['$=='](that_name) + } else { + return $ret_or_2 + } + }, 2); + + $def(self, '$check_lvar_name', function $$check_lvar_name(name, loc) { + var self = this; + + if ($truthy(name['$=~'](/^[[[:lower:]]_][[[:alnum:]]_]*$/))) { + return nil + } else { + return self.$diagnostic("error", "lvar_name", $hash2(["name"], {"name": name}), loc) + } + }, 2); + + $def(self, '$check_duplicate_pattern_variable', function $$check_duplicate_pattern_variable(name, loc) { + var self = this; + + + if ($truthy(name.$to_s()['$start_with?']("_"))) { + return nil + }; + if ($truthy(self.parser.$pattern_variables()['$declared?'](name))) { + self.$diagnostic("error", "duplicate_variable_name", $hash2(["name"], {"name": name.$to_s()}), loc) + }; + return self.parser.$pattern_variables().$declare(name); + }, 2); + + $def(self, '$check_duplicate_pattern_key', function $$check_duplicate_pattern_key(name, loc) { + var self = this; + + + if ($truthy(self.parser.$pattern_hash_keys()['$declared?'](name))) { + self.$diagnostic("error", "duplicate_pattern_key", $hash2(["name"], {"name": name.$to_s()}), loc) + }; + return self.parser.$pattern_hash_keys().$declare(name); + }, 2); + + $def(self, '$n', function $$n(type, children, source_map) { + + return $$$($$('AST'), 'Node').$new(type, children, $hash2(["location"], {"location": source_map})) + }, 3); + + $def(self, '$n0', function $$n0(type, source_map) { + var self = this; + + return self.$n(type, [], source_map) + }, 2); + + $def(self, '$join_exprs', function $$join_exprs(left_expr, right_expr) { + + return left_expr.$loc().$expression().$join(right_expr.$loc().$expression()) + }, 2); + + $def(self, '$token_map', function $$token_map(token) { + var self = this; + + return $$$($$('Source'), 'Map').$new(self.$loc(token)) + }, 1); + + $def(self, '$delimited_string_map', function $$delimited_string_map(string_t) { + var self = this, str_range = nil, begin_l = nil, end_l = nil; + + + str_range = self.$loc(string_t); + begin_l = str_range.$with($hash2(["end_pos"], {"end_pos": $rb_plus(str_range.$begin_pos(), 1)})); + end_l = str_range.$with($hash2(["begin_pos"], {"begin_pos": $rb_minus(str_range.$end_pos(), 1)})); + return $$$($$$($$('Source'), 'Map'), 'Collection').$new(begin_l, end_l, self.$loc(string_t)); + }, 1); + + $def(self, '$prefix_string_map', function $$prefix_string_map(symbol) { + var self = this, str_range = nil, begin_l = nil; + + + str_range = self.$loc(symbol); + begin_l = str_range.$with($hash2(["end_pos"], {"end_pos": $rb_plus(str_range.$begin_pos(), 1)})); + return $$$($$$($$('Source'), 'Map'), 'Collection').$new(begin_l, nil, self.$loc(symbol)); + }, 1); + + $def(self, '$unquoted_map', function $$unquoted_map(token) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'Collection').$new(nil, nil, self.$loc(token)) + }, 1); + + $def(self, '$pair_keyword_map', function $$pair_keyword_map(key_t, value_e) { + var self = this, key_range = nil, key_l = nil, colon_l = nil; + + + key_range = self.$loc(key_t); + key_l = key_range.$adjust($hash2(["end_pos"], {"end_pos": -1})); + colon_l = key_range.$with($hash2(["begin_pos"], {"begin_pos": $rb_minus(key_range.$end_pos(), 1)})); + return [$$$($$$($$('Source'), 'Map'), 'Collection').$new(nil, nil, key_l), $$$($$$($$('Source'), 'Map'), 'Operator').$new(colon_l, key_range.$join(value_e.$loc().$expression()))]; + }, 2); + + $def(self, '$pair_quoted_map', function $$pair_quoted_map(begin_t, end_t, value_e) { + var self = this, end_l = nil, quote_l = nil, colon_l = nil; + + + end_l = self.$loc(end_t); + quote_l = end_l.$with($hash2(["begin_pos", "end_pos"], {"begin_pos": $rb_minus(end_l.$end_pos(), 2), "end_pos": $rb_minus(end_l.$end_pos(), 1)})); + colon_l = end_l.$with($hash2(["begin_pos"], {"begin_pos": $rb_minus(end_l.$end_pos(), 1)})); + return [[self.$value(end_t), quote_l], $$$($$$($$('Source'), 'Map'), 'Operator').$new(colon_l, self.$loc(begin_t).$join(value_e.$loc().$expression()))]; + }, 3); + + $def(self, '$expr_map', function $$expr_map(loc) { + + return $$$($$('Source'), 'Map').$new(loc) + }, 1); + + $def(self, '$collection_map', function $$collection_map(begin_t, parts, end_t) { + var self = this, expr_l = nil; + + + if (($truthy(begin_t['$nil?']()) || ($truthy(end_t['$nil?']())))) { + if ($truthy(parts['$any?']())) { + expr_l = self.$join_exprs(parts.$first(), parts.$last()) + } else if ($not(begin_t['$nil?']())) { + expr_l = self.$loc(begin_t) + } else if ($not(end_t['$nil?']())) { + expr_l = self.$loc(end_t) + } + } else { + expr_l = self.$loc(begin_t).$join(self.$loc(end_t)) + }; + return $$$($$$($$('Source'), 'Map'), 'Collection').$new(self.$loc(begin_t), self.$loc(end_t), expr_l); + }, 3); + + $def(self, '$string_map', function $$string_map(begin_t, parts, end_t) { + var self = this, expr_l = nil; + + if (($truthy(begin_t) && ($truthy(self.$value(begin_t)['$start_with?']("<<"))))) { + + if ($truthy(parts['$any?']())) { + expr_l = self.$join_exprs(parts.$first(), parts.$last()) + } else { + expr_l = self.$loc(end_t).$begin() + }; + return $$$($$$($$('Source'), 'Map'), 'Heredoc').$new(self.$loc(begin_t), expr_l, self.$loc(end_t)); + } else { + return self.$collection_map(begin_t, parts, end_t) + } + }, 3); + + $def(self, '$regexp_map', function $$regexp_map(begin_t, end_t, options_e) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'Collection').$new(self.$loc(begin_t), self.$loc(end_t), self.$loc(begin_t).$join(options_e.$loc().$expression())) + }, 3); + + $def(self, '$constant_map', function $$constant_map(scope, colon2_t, name_t) { + var self = this, expr_l = nil; + + + if ($truthy(scope['$nil?']())) { + expr_l = self.$loc(name_t) + } else { + expr_l = scope.$loc().$expression().$join(self.$loc(name_t)) + }; + return $$$($$$($$('Source'), 'Map'), 'Constant').$new(self.$loc(colon2_t), self.$loc(name_t), expr_l); + }, 3); + + $def(self, '$variable_map', function $$variable_map(name_t) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'Variable').$new(self.$loc(name_t)) + }, 1); + + $def(self, '$binary_op_map', function $$binary_op_map(left_e, op_t, right_e) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'Operator').$new(self.$loc(op_t), self.$join_exprs(left_e, right_e)) + }, 3); + + $def(self, '$unary_op_map', function $$unary_op_map(op_t, arg_e) { + var self = this, expr_l = nil; + + + + if (arg_e == null) arg_e = nil;; + if ($truthy(arg_e['$nil?']())) { + expr_l = self.$loc(op_t) + } else { + expr_l = self.$loc(op_t).$join(arg_e.$loc().$expression()) + }; + return $$$($$$($$('Source'), 'Map'), 'Operator').$new(self.$loc(op_t), expr_l); + }, -2); + + $def(self, '$range_map', function $$range_map(start_e, op_t, end_e) { + var self = this, expr_l = nil; + + + if (($truthy(start_e) && ($truthy(end_e)))) { + expr_l = self.$join_exprs(start_e, end_e) + } else if ($truthy(start_e)) { + expr_l = start_e.$loc().$expression().$join(self.$loc(op_t)) + } else if ($truthy(end_e)) { + expr_l = self.$loc(op_t).$join(end_e.$loc().$expression()) + }; + return $$$($$$($$('Source'), 'Map'), 'Operator').$new(self.$loc(op_t), expr_l); + }, 3); + + $def(self, '$arg_prefix_map', function $$arg_prefix_map(op_t, name_t) { + var self = this, expr_l = nil; + + + + if (name_t == null) name_t = nil;; + if ($truthy(name_t['$nil?']())) { + expr_l = self.$loc(op_t) + } else { + expr_l = self.$loc(op_t).$join(self.$loc(name_t)) + }; + return $$$($$$($$('Source'), 'Map'), 'Variable').$new(self.$loc(name_t), expr_l); + }, -2); + + $def(self, '$kwarg_map', function $$kwarg_map(name_t, value_e) { + var self = this, label_range = nil, name_range = nil, expr_l = nil; + + + + if (value_e == null) value_e = nil;; + label_range = self.$loc(name_t); + name_range = label_range.$adjust($hash2(["end_pos"], {"end_pos": -1})); + if ($truthy(value_e)) { + expr_l = self.$loc(name_t).$join(value_e.$loc().$expression()) + } else { + expr_l = self.$loc(name_t) + }; + return $$$($$$($$('Source'), 'Map'), 'Variable').$new(name_range, expr_l); + }, -2); + + $def(self, '$module_definition_map', function $$module_definition_map(keyword_t, name_e, operator_t, end_t) { + var self = this, name_l = nil; + + + if ($truthy(name_e)) { + name_l = name_e.$loc().$expression() + }; + return $$$($$$($$('Source'), 'Map'), 'Definition').$new(self.$loc(keyword_t), self.$loc(operator_t), name_l, self.$loc(end_t)); + }, 4); + + $def(self, '$definition_map', function $$definition_map(keyword_t, operator_t, name_t, end_t) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'MethodDefinition').$new(self.$loc(keyword_t), self.$loc(operator_t), self.$loc(name_t), self.$loc(end_t), nil, nil) + }, 4); + + $def(self, '$endless_definition_map', function $$endless_definition_map(keyword_t, operator_t, name_t, assignment_t, body_e) { + var self = this, body_l = nil; + + + body_l = body_e.$loc().$expression(); + return $$$($$$($$('Source'), 'Map'), 'MethodDefinition').$new(self.$loc(keyword_t), self.$loc(operator_t), self.$loc(name_t), nil, self.$loc(assignment_t), body_l); + }, 5); + + $def(self, '$send_map', function $$send_map(receiver_e, dot_t, selector_t, begin_t, args, end_t) { + var self = this, begin_l = nil, end_l = nil; + + + + if (begin_t == null) begin_t = nil;; + + if (args == null) args = [];; + + if (end_t == null) end_t = nil;; + if ($truthy(receiver_e)) { + begin_l = receiver_e.$loc().$expression() + } else if ($truthy(selector_t)) { + begin_l = self.$loc(selector_t) + }; + if ($truthy(end_t)) { + end_l = self.$loc(end_t) + } else if ($truthy(args['$any?']())) { + end_l = args.$last().$loc().$expression() + } else if ($truthy(selector_t)) { + end_l = self.$loc(selector_t) + }; + return $$$($$$($$('Source'), 'Map'), 'Send').$new(self.$loc(dot_t), self.$loc(selector_t), self.$loc(begin_t), self.$loc(end_t), begin_l.$join(end_l)); + }, -4); + + $def(self, '$var_send_map', function $$var_send_map(variable_e) { + + return $$$($$$($$('Source'), 'Map'), 'Send').$new(nil, variable_e.$loc().$expression(), nil, nil, variable_e.$loc().$expression()) + }, 1); + + $def(self, '$send_binary_op_map', function $$send_binary_op_map(lhs_e, selector_t, rhs_e) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'Send').$new(nil, self.$loc(selector_t), nil, nil, self.$join_exprs(lhs_e, rhs_e)) + }, 3); + + $def(self, '$send_unary_op_map', function $$send_unary_op_map(selector_t, arg_e) { + var self = this, expr_l = nil; + + + if ($truthy(arg_e['$nil?']())) { + expr_l = self.$loc(selector_t) + } else { + expr_l = self.$loc(selector_t).$join(arg_e.$loc().$expression()) + }; + return $$$($$$($$('Source'), 'Map'), 'Send').$new(nil, self.$loc(selector_t), nil, nil, expr_l); + }, 2); + + $def(self, '$index_map', function $$index_map(receiver_e, lbrack_t, rbrack_t) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'Index').$new(self.$loc(lbrack_t), self.$loc(rbrack_t), receiver_e.$loc().$expression().$join(self.$loc(rbrack_t))) + }, 3); + + $def(self, '$send_index_map', function $$send_index_map(receiver_e, lbrack_t, rbrack_t) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'Send').$new(nil, self.$loc(lbrack_t).$join(self.$loc(rbrack_t)), nil, nil, receiver_e.$loc().$expression().$join(self.$loc(rbrack_t))) + }, 3); + + $def(self, '$block_map', function $$block_map(receiver_l, begin_t, end_t) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'Collection').$new(self.$loc(begin_t), self.$loc(end_t), receiver_l.$join(self.$loc(end_t))) + }, 3); + + $def(self, '$keyword_map', function $$keyword_map(keyword_t, begin_t, args, end_t) { + var self = this, $ret_or_1 = nil, end_l = nil; + + + args = ($truthy(($ret_or_1 = args)) ? ($ret_or_1) : ([])); + if ($truthy(end_t)) { + end_l = self.$loc(end_t) + } else if (($truthy(args['$any?']()) && ($not(args.$last()['$nil?']())))) { + end_l = args.$last().$loc().$expression() + } else if (($truthy(args['$any?']()) && ($truthy($rb_gt(args.$count(), 1))))) { + end_l = args['$[]'](-2).$loc().$expression() + } else { + end_l = self.$loc(keyword_t) + }; + return $$$($$$($$('Source'), 'Map'), 'Keyword').$new(self.$loc(keyword_t), self.$loc(begin_t), self.$loc(end_t), self.$loc(keyword_t).$join(end_l)); + }, 4); + + $def(self, '$keyword_mod_map', function $$keyword_mod_map(pre_e, keyword_t, post_e) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'Keyword').$new(self.$loc(keyword_t), nil, nil, self.$join_exprs(pre_e, post_e)) + }, 3); + + $def(self, '$condition_map', function $$condition_map(keyword_t, cond_e, begin_t, body_e, else_t, else_e, end_t) { + var self = this, end_l = nil; + + + if ($truthy(end_t)) { + end_l = self.$loc(end_t) + } else if (($truthy(else_e) && ($truthy(else_e.$loc().$expression())))) { + end_l = else_e.$loc().$expression() + } else if ($truthy(self.$loc(else_t))) { + end_l = self.$loc(else_t) + } else if (($truthy(body_e) && ($truthy(body_e.$loc().$expression())))) { + end_l = body_e.$loc().$expression() + } else if ($truthy(self.$loc(begin_t))) { + end_l = self.$loc(begin_t) + } else { + end_l = cond_e.$loc().$expression() + }; + return $$$($$$($$('Source'), 'Map'), 'Condition').$new(self.$loc(keyword_t), self.$loc(begin_t), self.$loc(else_t), self.$loc(end_t), self.$loc(keyword_t).$join(end_l)); + }, 7); + + $def(self, '$ternary_map', function $$ternary_map(begin_e, question_t, mid_e, colon_t, end_e) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'Ternary').$new(self.$loc(question_t), self.$loc(colon_t), self.$join_exprs(begin_e, end_e)) + }, 5); + + $def(self, '$for_map', function $$for_map(keyword_t, in_t, begin_t, end_t) { + var self = this; + + return $$$($$$($$('Source'), 'Map'), 'For').$new(self.$loc(keyword_t), self.$loc(in_t), self.$loc(begin_t), self.$loc(end_t), self.$loc(keyword_t).$join(self.$loc(end_t))) + }, 4); + + $def(self, '$rescue_body_map', function $$rescue_body_map(keyword_t, exc_list_e, assoc_t, exc_var_e, then_t, compstmt_e) { + var self = this, end_l = nil; + + + if ($truthy(compstmt_e)) { + end_l = compstmt_e.$loc().$expression() + }; + if (($truthy(end_l['$nil?']()) && ($truthy(then_t)))) { + end_l = self.$loc(then_t) + }; + if (($truthy(end_l['$nil?']()) && ($truthy(exc_var_e)))) { + end_l = exc_var_e.$loc().$expression() + }; + if (($truthy(end_l['$nil?']()) && ($truthy(exc_list_e)))) { + end_l = exc_list_e.$loc().$expression() + }; + if ($truthy(end_l['$nil?']())) { + end_l = self.$loc(keyword_t) + }; + return $$$($$$($$('Source'), 'Map'), 'RescueBody').$new(self.$loc(keyword_t), self.$loc(assoc_t), self.$loc(then_t), self.$loc(keyword_t).$join(end_l)); + }, 6); + + $def(self, '$eh_keyword_map', function $$eh_keyword_map(compstmt_e, keyword_t, body_es, else_t, else_e) { + var self = this, begin_l = nil, end_l = nil; + + + if ($truthy(compstmt_e['$nil?']())) { + if ($truthy(keyword_t['$nil?']())) { + begin_l = body_es.$first().$loc().$expression() + } else { + begin_l = self.$loc(keyword_t) + } + } else { + begin_l = compstmt_e.$loc().$expression() + }; + if ($truthy(else_t)) { + if ($truthy(else_e['$nil?']())) { + end_l = self.$loc(else_t) + } else { + end_l = else_e.$loc().$expression() + } + } else if ($not(body_es.$last()['$nil?']())) { + end_l = body_es.$last().$loc().$expression() + } else { + end_l = self.$loc(keyword_t) + }; + return $$$($$$($$('Source'), 'Map'), 'Condition').$new(self.$loc(keyword_t), nil, self.$loc(else_t), nil, begin_l.$join(end_l)); + }, 5); + + $def(self, '$guard_map', function $$guard_map(keyword_t, guard_body_e) { + var self = this, keyword_l = nil, guard_body_l = nil; + + + keyword_l = self.$loc(keyword_t); + guard_body_l = guard_body_e.$loc().$expression(); + return $$$($$$($$('Source'), 'Map'), 'Keyword').$new(keyword_l, nil, nil, keyword_l.$join(guard_body_l)); + }, 2); + + $def(self, '$static_string', function $$static_string(nodes) {try { + + var self = this; + + return $send(nodes, 'map', [], function $$18(node){var self = $$18.$$s == null ? this : $$18.$$s, $ret_or_1 = nil, string = nil; + + + + if (node == null) node = nil;; + if ($eqeqeq("str", ($ret_or_1 = node.$type()))) { + return node.$children()['$[]'](0) + } else if ($eqeqeq("begin", $ret_or_1)) { + if ($truthy((string = self.$static_string(node.$children())))) { + return string + } else { + Opal.ret(nil) + } + } else { + Opal.ret(nil) + };}, {$$arity: 1, $$s: self}).$join() + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 1); + + $def(self, '$static_regexp', function $$static_regexp(parts, options) { + var self = this, source = nil; + + + source = self.$static_string(parts); + if ($truthy(source['$nil?']())) { + return nil + }; + source = ($truthy(options.$children()['$include?']("u")) ? (source.$encode($$$($$('Encoding'), 'UTF_8'))) : ($truthy(options.$children()['$include?']("e")) ? (source.$encode($$$($$('Encoding'), 'EUC_JP'))) : ($truthy(options.$children()['$include?']("s")) ? (source.$encode($$$($$('Encoding'), 'WINDOWS_31J'))) : ($truthy(options.$children()['$include?']("n")) ? (source.$encode($$$($$('Encoding'), 'BINARY'))) : (source))))); + return $$('Regexp').$new(source, ($truthy(options.$children()['$include?']("x")) ? ($$$($$('Regexp'), 'EXTENDED')) : nil)); + }, 2); + + $def(self, '$static_regexp_node', function $$static_regexp_node(node) { + var $a, self = this, parts = nil, options = nil; + + if ($eqeq(node.$type(), "regexp")) { + + $a = [node.$children()['$[]']($range(0, -2, false)), node.$children()['$[]'](-1)], (parts = $a[0]), (options = $a[1]), $a; + return self.$static_regexp(parts, options); + } else { + return nil + } + }, 1); + + $def(self, '$collapse_string_parts?', function $Default_collapse_string_parts$ques$19(parts) { + var $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = parts['$one?']()))) { + return ["str", "dstr"]['$include?'](parts.$first().$type()) + } else { + return $ret_or_1 + } + }, 1); + + $def(self, '$value', function $$value(token) { + + return token['$[]'](0) + }, 1); + + $def(self, '$string_value', function $$string_value(token) { + var self = this; + + + if (!$truthy(token['$[]'](0)['$valid_encoding?']())) { + self.$diagnostic("error", "invalid_encoding", nil, token['$[]'](1)) + }; + return token['$[]'](0); + }, 1); + + $def(self, '$loc', function $$loc(token) { + + if (($truthy(token) && ($truthy(token['$[]'](0))))) { + return token['$[]'](1) + } else { + return nil + } + }, 1); + + $def(self, '$diagnostic', function $$diagnostic(type, reason, arguments$, location, highlights) { + var self = this; + + + + if (highlights == null) highlights = [];; + self.parser.$diagnostics().$process($$('Diagnostic').$new(type, reason, arguments$, location, highlights)); + if ($eqeq(type, "error")) { + return self.parser.$send("yyerror") + } else { + return nil + }; + }, -5); + + $def(self, '$validate_definee', function $$validate_definee(definee) { + var self = this, $ret_or_1 = nil; + + if (($eqeqeq("int", ($ret_or_1 = definee.$type())) || (($eqeqeq("str", $ret_or_1) || (($eqeqeq("dstr", $ret_or_1) || (($eqeqeq("sym", $ret_or_1) || (($eqeqeq("dsym", $ret_or_1) || (($eqeqeq("regexp", $ret_or_1) || (($eqeqeq("array", $ret_or_1) || ($eqeqeq("hash", $ret_or_1)))))))))))))))) { + + self.$diagnostic("error", "singleton_literal", nil, definee.$loc().$expression()); + return false; + } else { + return true + } + }, 1); + + $def(self, '$rewrite_hash_args_to_kwargs', function $$rewrite_hash_args_to_kwargs(args) { + var self = this, $writer = nil; + + if (($truthy(args['$any?']()) && ($truthy(self['$kwargs?'](args.$last()))))) { + + $writer = [$rb_minus(args.$length(), 1), args['$[]']($rb_minus(args.$length(), 1)).$updated("kwargs")]; + $send(args, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else if ((($truthy($rb_gt(args.$length(), 1)) && ($eqeq(args.$last().$type(), "block_pass"))) && ($truthy(self['$kwargs?'](args['$[]']($rb_minus(args.$length(), 2))))))) { + + $writer = [$rb_minus(args.$length(), 2), args['$[]']($rb_minus(args.$length(), 2)).$updated("kwargs")]; + $send(args, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else { + return nil + } + }, 1); + return $def(self, '$kwargs?', function $Default_kwargs$ques$20(node) { + var $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = node.$type()['$==']("hash"))) ? (node.$loc().$begin()['$nil?']()) : ($ret_or_2))))) { + return node.$loc().$end()['$nil?']() + } else { + return $ret_or_1 + } + }, 1); + })($$('Builders'), null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/context"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $truthy = Opal.truthy; + + Opal.add_stubs('reset,attr_accessor,in_block,in_lambda'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Context'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $const_set($nesting[0], 'FLAGS', ["in_defined", "in_kwarg", "in_argdef", "in_def", "in_class", "in_block", "in_lambda"]); + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return self.$reset() + }, 0); + + $def(self, '$reset', function $$reset() { + var self = this; + + + self.in_defined = false; + self.in_kwarg = false; + self.in_argdef = false; + self.in_def = false; + self.in_class = false; + self.in_block = false; + return (self.in_lambda = false); + }, 0); + $send(self, 'attr_accessor', $to_a($$('FLAGS'))); + return $def(self, '$in_dynamic_block?', function $Context_in_dynamic_block$ques$1() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$in_block()))) { + return $ret_or_1 + } else { + return self.$in_lambda() + } + }, 0); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/max_numparam_stack"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $hash2 = Opal.hash2, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus; + + Opal.add_stubs('attr_reader,==,size,set,top,>,max,[],last,push,pop,private,[]=,-'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'MaxNumparamStack'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.stack = nil; + + self.$attr_reader("stack"); + $const_set($nesting[0], 'ORDINARY_PARAMS', -1); + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return (self.stack = []) + }, 0); + + $def(self, '$empty?', function $MaxNumparamStack_empty$ques$1() { + var self = this; + + return self.stack.$size()['$=='](0) + }, 0); + + $def(self, '$has_ordinary_params!', function $MaxNumparamStack_has_ordinary_params$excl$2() { + var self = this; + + return self.$set($$('ORDINARY_PARAMS')) + }, 0); + + $def(self, '$has_ordinary_params?', function $MaxNumparamStack_has_ordinary_params$ques$3() { + var self = this; + + return self.$top()['$==']($$('ORDINARY_PARAMS')) + }, 0); + + $def(self, '$has_numparams?', function $MaxNumparamStack_has_numparams$ques$4() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$top()))) { + return $rb_gt(self.$top(), 0) + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$register', function $$register(numparam) { + var self = this; + + return self.$set([self.$top(), numparam].$max()) + }, 1); + + $def(self, '$top', function $$top() { + var self = this; + + return self.stack.$last()['$[]']("value") + }, 0); + + $def(self, '$push', function $$push($kwargs) { + var static$, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if (!Opal.hasOwnProperty.call($kwargs.$$smap, 'static')) { + throw Opal.ArgumentError.$new('missing keyword: static'); + } + static$ = $kwargs.$$smap["static"];; + return self.stack.$push($hash2(["value", "static"], {"value": 0, "static": static$})); + }, 1); + + $def(self, '$pop', function $$pop() { + var self = this; + + return self.stack.$pop()['$[]']("value") + }, 0); + self.$private(); + return $def(self, '$set', function $$set(value) { + var self = this, $writer = nil; + + + $writer = ["value", value]; + $send(self.stack.$last(), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }, 1); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/current_arg_stack"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $rb_minus = Opal.rb_minus, $send = Opal.send, $to_a = Opal.to_a; + + Opal.add_stubs('attr_reader,freeze,==,size,<<,-,length,[]=,pop,clear,last'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'CurrentArgStack'); + + var $proto = self.$$prototype; + + $proto.stack = nil; + + self.$attr_reader("stack"); + + $def(self, '$initialize', function $$initialize() { + var self = this; + + + self.stack = []; + return self.$freeze(); + }, 0); + + $def(self, '$empty?', function $CurrentArgStack_empty$ques$1() { + var self = this; + + return self.stack.$size()['$=='](0) + }, 0); + + $def(self, '$push', function $$push(value) { + var self = this; + + return self.stack['$<<'](value) + }, 1); + + $def(self, '$set', function $$set(value) { + var self = this, $writer = nil; + + + $writer = [$rb_minus(self.stack.$length(), 1), value]; + $send(self.stack, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }, 1); + + $def(self, '$pop', function $$pop() { + var self = this; + + return self.stack.$pop() + }, 0); + + $def(self, '$reset', function $$reset() { + var self = this; + + return self.stack.$clear() + }, 0); + return $def(self, '$top', function $$top() { + var self = this; + + return self.stack.$last() + }, 0); + })($nesting[0], null) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/variables_stack"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('push,empty?,<<,new,pop,clear,last,to_sym,include?'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'VariablesStack'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.stack = nil; + + + $def(self, '$initialize', function $$initialize() { + var self = this; + + + self.stack = []; + return self.$push(); + }, 0); + + $def(self, '$empty?', function $VariablesStack_empty$ques$1() { + var self = this; + + return self.stack['$empty?']() + }, 0); + + $def(self, '$push', function $$push() { + var self = this; + + return self.stack['$<<']($$('Set').$new()) + }, 0); + + $def(self, '$pop', function $$pop() { + var self = this; + + return self.stack.$pop() + }, 0); + + $def(self, '$reset', function $$reset() { + var self = this; + + return self.stack.$clear() + }, 0); + + $def(self, '$declare', function $$declare(name) { + var self = this; + + return self.stack.$last()['$<<'](name.$to_sym()) + }, 1); + return $def(self, '$declared?', function $VariablesStack_declared$ques$2(name) { + var self = this; + + return self.stack.$last()['$include?'](name.$to_sym()) + }, 1); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $defs = Opal.defs, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $gvars = Opal.gvars, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $def = Opal.def, $not = Opal.not, $eqeqeq = Opal.eqeqeq, $to_ary = Opal.to_ary, $hash2 = Opal.hash2; + + Opal.add_stubs('default_parser,setup_source_buffer,default_encoding,parse,parse_with_comments,read,new,all_errors_are_fatal=,diagnostics,-,ignore_warnings=,lambda,puts,render,consumer=,force_encoding,dup,==,name,raw_source=,source=,private_class_method,attr_reader,version,diagnostics=,static_env=,context=,parser=,[],class,reset,source_buffer=,do_parse,comments=,comments,tokens=,!,raise,tokens,private,advance,===,diagnostic,map,process,yyerror,token_to_str'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Base'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.diagnostics = $proto.lexer = $proto.static_env = $proto.context = $proto.builder = $proto.current_arg_stack = $proto.pattern_variables = $proto.pattern_hash_keys = nil; + + $defs(self, '$parse', function $$parse(string, file, line) { + var self = this, parser = nil, source_buffer = nil; + + + + if (file == null) file = "(string)";; + + if (line == null) line = 1;; + parser = self.$default_parser(); + source_buffer = self.$setup_source_buffer(file, line, string, parser.$default_encoding()); + return parser.$parse(source_buffer); + }, -2); + $defs(self, '$parse_with_comments', function $$parse_with_comments(string, file, line) { + var self = this, parser = nil, source_buffer = nil; + + + + if (file == null) file = "(string)";; + + if (line == null) line = 1;; + parser = self.$default_parser(); + source_buffer = self.$setup_source_buffer(file, line, string, parser.$default_encoding()); + return parser.$parse_with_comments(source_buffer); + }, -2); + $defs(self, '$parse_file', function $$parse_file(filename) { + var self = this; + + return self.$parse($$('File').$read(filename), filename) + }, 1); + $defs(self, '$parse_file_with_comments', function $$parse_file_with_comments(filename) { + var self = this; + + return self.$parse_with_comments($$('File').$read(filename), filename) + }, 1); + $defs(self, '$default_parser', function $$default_parser() { + var self = this, parser = nil, $writer = nil; + + + parser = self.$new(); + + $writer = [true]; + $send(parser.$diagnostics(), 'all_errors_are_fatal=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [true]; + $send(parser.$diagnostics(), 'ignore_warnings=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [$send(self, 'lambda', [], function $$1(diagnostic){ if ($gvars.stderr == null) $gvars.stderr = nil; + + + + if (diagnostic == null) diagnostic = nil;; + return $gvars.stderr.$puts(diagnostic.$render());}, 1)]; + $send(parser.$diagnostics(), 'consumer=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return parser; + }, 0); + $defs(self, '$setup_source_buffer', function $$setup_source_buffer(file, line, string, encoding) { + var self = this, source_buffer = nil, $writer = nil; + + + string = string.$dup().$force_encoding(encoding); + source_buffer = $$$($$('Source'), 'Buffer').$new(file, line); + if ($eqeq(self.$name(), "Parser::Ruby18")) { + + $writer = [string]; + $send(source_buffer, 'raw_source=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + } else { + + $writer = [string]; + $send(source_buffer, 'source=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return source_buffer; + }, 4); + self.$private_class_method("setup_source_buffer"); + self.$attr_reader("lexer"); + self.$attr_reader("diagnostics"); + self.$attr_reader("builder"); + self.$attr_reader("static_env"); + self.$attr_reader("source_buffer"); + self.$attr_reader("context"); + self.$attr_reader("max_numparam_stack"); + self.$attr_reader("current_arg_stack"); + self.$attr_reader("pattern_variables"); + self.$attr_reader("pattern_hash_keys"); + + $def(self, '$initialize', function $$initialize(builder) { + var self = this, $writer = nil; + + + + if (builder == null) builder = $$$($$$($$('Parser'), 'Builders'), 'Default').$new();; + self.diagnostics = $$$($$('Diagnostic'), 'Engine').$new(); + self.static_env = $$('StaticEnvironment').$new(); + self.context = $$('Context').$new(); + self.max_numparam_stack = $$('MaxNumparamStack').$new(); + self.current_arg_stack = $$('CurrentArgStack').$new(); + self.pattern_variables = $$('VariablesStack').$new(); + self.pattern_hash_keys = $$('VariablesStack').$new(); + self.lexer = $$('Lexer').$new(self.$version()); + + $writer = [self.diagnostics]; + $send(self.lexer, 'diagnostics=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [self.static_env]; + $send(self.lexer, 'static_env=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [self.context]; + $send(self.lexer, 'context=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.builder = builder; + + $writer = [self]; + $send(self.builder, 'parser=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.last_token = nil; + if (($truthy($$$(self.$class(), 'Racc_debug_parser')) && ($truthy($$('ENV')['$[]']("RACC_DEBUG"))))) { + self.yydebug = true + }; + return self.$reset(); + }, -1); + + $def(self, '$reset', function $$reset() { + var self = this; + + + self.source_buffer = nil; + self.lexer.$reset(); + self.static_env.$reset(); + self.context.$reset(); + self.current_arg_stack.$reset(); + self.pattern_variables.$reset(); + self.pattern_hash_keys.$reset(); + return self; + }, 0); + + $def(self, '$parse', function $$parse(source_buffer) { + var self = this, $writer = nil, $ret_or_1 = nil; + + return (function() { try { + + + $writer = [source_buffer]; + $send(self.lexer, 'source_buffer=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.source_buffer = source_buffer; + if ($truthy(($ret_or_1 = self.$do_parse()))) { + return $ret_or_1 + } else { + return nil + }; + } finally { + ((self.source_buffer = nil), (($writer = [nil]), $send(self.lexer, 'source_buffer=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)])) + }; })() + }, 1); + + $def(self, '$parse_with_comments', function $$parse_with_comments(source_buffer) { + var self = this, $writer = nil; + + return (function() { try { + + + $writer = [[]]; + $send(self.lexer, 'comments=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return [self.$parse(source_buffer), self.lexer.$comments()]; + } finally { + (($writer = [nil]), $send(self.lexer, 'comments=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)]) + }; })() + }, 1); + + $def(self, '$tokenize', function $$tokenize(source_buffer, recover) { + var self = this, $writer = nil, ast = nil; + + + + if (recover == null) recover = false;; + return (function() { try { + + + $writer = [[]]; + $send(self.lexer, 'tokens=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [[]]; + $send(self.lexer, 'comments=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + try { + ast = self.$parse(source_buffer) + } catch ($err) { + if (Opal.rescue($err, [$$$($$('Parser'), 'SyntaxError')])) { + try { + if ($not(recover)) { + self.$raise() + } + } finally { Opal.pop_exception(); } + } else { throw $err; } + };; + return [ast, self.lexer.$comments(), self.lexer.$tokens()]; + } finally { + ((($writer = [nil]), $send(self.lexer, 'tokens=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)]), (($writer = [nil]), $send(self.lexer, 'comments=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)])) + }; })(); + }, -2); + self.$private(); + + $def(self, '$next_token', function $$next_token() { + var self = this, token = nil; + + + token = self.lexer.$advance(); + self.last_token = token; + return token; + }, 0); + + $def(self, '$check_kwarg_name', function $$check_kwarg_name(name_t) { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq(/^[a-z_]/, ($ret_or_1 = name_t['$[]'](0)))) { + return nil + } else if ($eqeqeq(/^[A-Z]/, $ret_or_1)) { + return self.$diagnostic("error", "argument_const", nil, name_t) + } else { + return nil + } + }, 1); + + $def(self, '$diagnostic', function $$diagnostic(level, reason, arguments$, location_t, highlights_ts) { + var $a, $b, self = this, _ = nil, location = nil, highlights = nil; + + + + if (highlights_ts == null) highlights_ts = [];; + $b = location_t, $a = $to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (location = ($a[1] == null ? nil : $a[1])), $b; + highlights = $send(highlights_ts, 'map', [], function $$2(token){var $c, $d, range = nil; + + + + if (token == null) token = nil;; + $d = token, $c = $to_ary($d), (_ = ($c[0] == null ? nil : $c[0])), (range = ($c[1] == null ? nil : $c[1])), $d; + return range;}, 1); + self.diagnostics.$process($$('Diagnostic').$new(level, reason, arguments$, location, highlights)); + if ($eqeq(level, "error")) { + return self.$yyerror() + } else { + return nil + }; + }, -5); + return $def(self, '$on_error', function $$on_error(error_token_id, error_value, value_stack) { + var $a, $b, self = this, token_name = nil, _ = nil, location = nil; + + + token_name = self.$token_to_str(error_token_id); + $b = error_value, $a = $to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (location = ($a[1] == null ? nil : $a[1])), $b; + return self.diagnostics.$process($$('Diagnostic').$new("error", "unexpected_token", $hash2(["token"], {"token": token_name}), location)); + }, 3); + })($nesting[0], $$$($$('Racc'), 'Parser'), $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $const_set = Opal.const_set, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $send2 = Opal.send2, $find_super = Opal.find_super; + + Opal.add_stubs('new,process,include?,type,remove,wrap,insert_before,insert_after,replace,freeze,join,extend,warn_of_deprecation,class,warned_of_deprecation=,-'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Rewriter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.source_rewriter = nil; + + + $def(self, '$rewrite', function $$rewrite(source_buffer, ast) { + var self = this; + + + self.source_rewriter = $$$($$('Source'), 'Rewriter').$new(source_buffer); + self.$process(ast); + return self.source_rewriter.$process(); + }, 2); + + $def(self, '$assignment?', function $Rewriter_assignment$ques$1(node) { + + return ["lvasgn", "ivasgn", "gvasgn", "cvasgn", "casgn"]['$include?'](node.$type()) + }, 1); + + $def(self, '$remove', function $$remove(range) { + var self = this; + + return self.source_rewriter.$remove(range) + }, 1); + + $def(self, '$wrap', function $$wrap(range, before, after) { + var self = this; + + return self.source_rewriter.$wrap(range, before, after) + }, 3); + + $def(self, '$insert_before', function $$insert_before(range, content) { + var self = this; + + return self.source_rewriter.$insert_before(range, content) + }, 2); + + $def(self, '$insert_after', function $$insert_after(range, content) { + var self = this; + + return self.source_rewriter.$insert_after(range, content) + }, 2); + + $def(self, '$replace', function $$replace(range, content) { + var self = this; + + return self.source_rewriter.$replace(range, content) + }, 2); + $const_set($nesting[0], 'DEPRECATION_WARNING', ["Parser::Rewriter is deprecated.", "Please update your code to use Parser::TreeRewriter instead"].$join("\n").$freeze()); + self.$extend($$('Deprecation')); + return $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $yield = $$initialize.$$p || nil, self = this, $writer = nil; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + self.$class().$warn_of_deprecation(); + + $writer = [true]; + $send($$$($$('Source'), 'Rewriter'), 'warned_of_deprecation=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + }, -1); + })($nesting[0], $$$($$$($$('Parser'), 'AST'), 'Processor'), $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser/tree_rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $hash = Opal.hash, $def = Opal.def; + + Opal.add_stubs('new,process,include?,type,remove,wrap,insert_before,insert_after,replace'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'TreeRewriter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.source_rewriter = nil; + + + $def(self, '$rewrite', function $$rewrite(source_buffer, ast, $kwargs) { + var policy, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + policy = Opal.kwrestargs($kwargs, {});; + self.source_rewriter = $$$($$$($$('Parser'), 'Source'), 'TreeRewriter').$new(source_buffer, Opal.to_hash(policy)); + self.$process(ast); + return self.source_rewriter.$process(); + }, -3); + + $def(self, '$assignment?', function $TreeRewriter_assignment$ques$1(node) { + + return ["lvasgn", "ivasgn", "gvasgn", "cvasgn", "casgn"]['$include?'](node.$type()) + }, 1); + + $def(self, '$remove', function $$remove(range) { + var self = this; + + return self.source_rewriter.$remove(range) + }, 1); + + $def(self, '$wrap', function $$wrap(range, before, after) { + var self = this; + + return self.source_rewriter.$wrap(range, before, after) + }, 3); + + $def(self, '$insert_before', function $$insert_before(range, content) { + var self = this; + + return self.source_rewriter.$insert_before(range, content) + }, 2); + + $def(self, '$insert_after', function $$insert_after(range, content) { + var self = this; + + return self.source_rewriter.$insert_after(range, content) + }, 2); + return $def(self, '$replace', function $$replace(range, content) { + var self = this; + + return self.source_rewriter.$replace(range, content) + }, 2); + })($nesting[0], $$$($$$($$('Parser'), 'AST'), 'Processor'), $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $module = Opal.module; + + Opal.add_stubs('=~,require,raise'); + + if ($truthy($$('RUBY_VERSION')['$=~'](/^1\.[89]\./))) { + + self.$require("parser/version"); + self.$raise($$('LoadError'), "parser v" + ($$$($$('Parser'), 'VERSION')) + " cannot run on Ruby " + ($$('RUBY_VERSION')) + ".\n" + "Please upgrade to Ruby 2.0.0 or higher, or use an older version of the parser gem.\n"); + }; + self.$require("set"); + self.$require("racc/parser"); + self.$require("ast"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + + self.$require("parser/version"); + self.$require("parser/messages"); + self.$require("parser/deprecation"); + (function($base) { + var self = $module($base, 'AST'); + + + + self.$require("parser/ast/node"); + self.$require("parser/ast/processor"); + return self.$require("parser/meta"); + })($nesting[0]); + (function($base) { + var self = $module($base, 'Source'); + + + + self.$require("parser/source/buffer"); + self.$require("parser/source/range"); + self.$require("parser/source/comment"); + self.$require("parser/source/comment/associator"); + self.$require("parser/source/rewriter"); + self.$require("parser/source/rewriter/action"); + self.$require("parser/source/tree_rewriter"); + self.$require("parser/source/tree_rewriter/action"); + self.$require("parser/source/map"); + self.$require("parser/source/map/operator"); + self.$require("parser/source/map/collection"); + self.$require("parser/source/map/constant"); + self.$require("parser/source/map/variable"); + self.$require("parser/source/map/keyword"); + self.$require("parser/source/map/definition"); + self.$require("parser/source/map/method_definition"); + self.$require("parser/source/map/send"); + self.$require("parser/source/map/index"); + self.$require("parser/source/map/condition"); + self.$require("parser/source/map/ternary"); + self.$require("parser/source/map/for"); + self.$require("parser/source/map/rescue_body"); + self.$require("parser/source/map/heredoc"); + return self.$require("parser/source/map/objc_kwarg"); + })($nesting[0]); + self.$require("parser/syntax_error"); + self.$require("parser/clobbering_error"); + self.$require("parser/diagnostic"); + self.$require("parser/diagnostic/engine"); + self.$require("parser/static_environment"); + self.$require("parser/lexer"); + self.$require("parser/lexer/literal"); + self.$require("parser/lexer/stack_state"); + self.$require("parser/lexer/dedenter"); + (function($base) { + var self = $module($base, 'Builders'); + + + return self.$require("parser/builders/default") + })($nesting[0]); + self.$require("parser/context"); + self.$require("parser/max_numparam_stack"); + self.$require("parser/current_arg_stack"); + self.$require("parser/variables_stack"); + self.$require("parser/base"); + self.$require("parser/rewriter"); + return self.$require("parser/tree_rewriter"); + })($nesting[0], $nesting); +}; + +Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $not = Opal.not, $hash2 = Opal.hash2, $send = Opal.send, $rb_gt = Opal.rb_gt, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $hash = Opal.hash, $const_set = Opal.const_set, $to_ary = Opal.to_ary, $eqeq = Opal.eqeq, $slice = Opal.slice; + + Opal.add_stubs('require,end_with?,[],!,include?,diagnostic,extend_static,push,cmdarg,cond,unextend,pop,children,in_dynamic_block?,declared?,static_env,=~,expression,loc,has_ordinary_params?,max_numparam_stack,dup,stack,reverse_each,>,declare,register,to_i,new,each,split,empty?,[]=,-,+,compstmt,<<,preexe,nil?,begin_body,state=,alias,gvar,back_ref,undef_method,condition_mod,loop_mod,rescue_body,postexe,multi_assign,assign,array,op_assign,index,call_method,const_op_assignable,const_fetch,endless_method_name,def_endless_method,local_pop,in_def,in_def=,def_endless_singleton,logical_op,not_op,command_start=,in_kwarg,in_kwarg=,match_pattern,match_pattern_p,local_push,in_argdef=,in_block=,in_block,block,keyword_cmd,multi_lhs,begin,splat,concat,assignable,index_asgn,==,attr_asgn,const_global,const,symbol_internal,range_inclusive,range_exclusive,binary_op,unary_op,match_op,in_defined=,ternary,associate,declared_forward_args?,forwarded_args,block_pass,declared_anonymous_blockarg?,begin_keyword,condition,loop,case,case_match,for,in_class=,def_class,in_class,def_sclass,def_module,def_method,def_singleton,context,in_lambda,arg,restarg,size,procarg0,args,has_ordinary_params!,set,shadowarg,extend_dynamic,in_lambda=,call_lambda,has_numparams?,numargs,top,any?,when,in_pattern,if_guard,unless_guard,match_with_trailing_comma,array_pattern,find_pattern,hash_pattern,match_as,match_alt,const_pattern,match_rest,match_pair,match_label,match_nil_pattern,accessible,match_var,ident,pin,string_compose,dedent_string,dedent_level,string,character,xstring_compose,regexp_options,regexp_compose,words_compose,word,symbols_compose,string_internal,ivar,cvar,symbol,symbol_compose,respond_to?,negate,unary_num,integer,float,rational,complex,nil,self,true,false,__FILE__,__LINE__,__ENCODING__,nth_ref,declare_forward_args,forward_arg,check_kwarg_name,kwoptarg,kwarg,kwnilarg,kwrestarg,optarg,blockarg,declare_anonymous_blockarg,pair,pair_keyword,pair_label,pair_quoted,kwsplat,yyerrok'); + + self.$require("racc/parser.rb"); + self.$require("parser"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Ruby31'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), clist = nil, racc_action_table = nil, arr = nil, idx = nil, racc_action_check = nil, racc_action_pointer = nil, racc_action_default = nil, racc_goto_table = nil, racc_goto_check = nil, racc_goto_pointer = nil, racc_goto_default = nil, racc_reduce_table = nil, racc_reduce_n = nil, racc_shift_n = nil, racc_token_table = nil, racc_nt_base = nil, racc_use_result_var = nil, $proto = self.$$prototype; + + $proto.static_env = $proto.lexer = $proto.max_numparam_stack = $proto.context = $proto.current_arg_stack = $proto.builder = $proto.pattern_variables = $proto.last_token = $proto.pattern_hash_keys = nil; + + + $def(self, '$version', function $$version() { + + return 31 + }, 0); + + $def(self, '$default_encoding', function $$default_encoding() { + + return $$$($$('Encoding'), 'UTF_8') + }, 0); + + $def(self, '$endless_method_name', function $$endless_method_name(name_t) { + var self = this; + + if (($not(["===", "==", "!=", "<=", ">="]['$include?'](name_t['$[]'](0))) && ($truthy(name_t['$[]'](0)['$end_with?']("="))))) { + return self.$diagnostic("error", "endless_setter", nil, name_t) + } else { + return nil + } + }, 1); + + $def(self, '$local_push', function $$local_push() { + var self = this; + + + self.static_env.$extend_static(); + self.lexer.$cmdarg().$push(false); + self.lexer.$cond().$push(false); + return self.max_numparam_stack.$push($hash2(["static"], {"static": true})); + }, 0); + + $def(self, '$local_pop', function $$local_pop() { + var self = this; + + + self.static_env.$unextend(); + self.lexer.$cmdarg().$pop(); + self.lexer.$cond().$pop(); + return self.max_numparam_stack.$pop(); + }, 0); + + $def(self, '$try_declare_numparam', function $$try_declare_numparam(node) { + var self = this, name = nil, location = nil, raw_max_numparam_stack = nil; + + + name = node.$children()['$[]'](0); + if ((($truthy(name['$=~'](/^_[1-9]$/)) && ($not(self.$static_env()['$declared?'](name)))) && ($truthy(self.context['$in_dynamic_block?']())))) { + + location = node.$loc().$expression(); + if ($truthy(self.$max_numparam_stack()['$has_ordinary_params?']())) { + self.$diagnostic("error", "ordinary_param_defined", nil, [nil, location]) + }; + raw_max_numparam_stack = self.$max_numparam_stack().$stack().$dup(); + raw_max_numparam_stack.$pop(); + (function(){var $brk = Opal.new_brk(); try {return $send(raw_max_numparam_stack, 'reverse_each', [], function $$1(outer_scope){var self = $$1.$$s == null ? this : $$1.$$s, outer_scope_has_numparams = nil; + + + + if (outer_scope == null) outer_scope = nil;; + if ($truthy(outer_scope['$[]']("static"))) { + + Opal.brk(nil, $brk) + } else { + + outer_scope_has_numparams = $rb_gt(outer_scope['$[]']("value"), 0); + if ($truthy(outer_scope_has_numparams)) { + return self.$diagnostic("error", "numparam_used_in_outer_scope", nil, [nil, location]) + } else { + return nil + }; + };}, {$$arity: 1, $$s: self, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + self.$static_env().$declare(name); + self.$max_numparam_stack().$register(name['$[]'](1).$to_i()); + return true; + } else { + return false + }; + }, 1); + clist = ["-320,600,620,-119,1214,-121,-118,-320,-320,-320,221,222,1124,-320,-320", "-624,-320,239,620,-123,620,925,-624,-110,-320,-732,237,428,-124,311", "122,-122,430,429,717,311,-320,-320,620,-320,-320,-320,-320,-320,-116", "-117,-124,620,620,-116,1001,828,718,627,892,925,627,126,240,-732,-123", "833,125,-117,240,240,-320,-320,-320,-320,-320,-320,-320,-320,-320,-320", "-320,-320,-320,-320,-624,-123,-320,-320,-320,-124,687,-320,-119,-110", "-320,-121,-120,-320,1125,240,-720,135,-320,306,-320,-511,-320,-320,240", "-320,-320,-320,-320,-320,-320,-320,-110,-320,-112,-109,310,-320,-320", "-320,126,-120,310,-320,-320,125,-320,-320,-114,-110,-320,-320,-110,-113", "-320,-320,126,-115,126,990,-113,125,-320,125,-110,-122,-320,-320,-122", "-320,-320,-320,-320,-320,-118,126,126,-719,-107,1000,125,125,-116,-117", "-124,126,126,-116,-117,-124,125,125,-108,221,222,218,-320,-320,-320", "-320,-320,-320,-320,-320,-320,-320,-320,-320,-320,-320,221,222,-320", "-320,-320,311,687,-320,-719,-123,-320,-111,661,-320,-123,648,-119,925", "-320,-121,-320,-119,-320,-320,-121,-320,-320,-320,-320,-320,233,-320", "-723,-320,-628,-720,-629,221,222,-723,-723,-723,104,105,-723,-723,-723", "-320,-723,-120,-320,-320,-102,-320,-120,-320,-723,-723,-723,-723,-723", "663,-320,924,-88,-122,219,-112,-723,-723,522,-723,-723,-723,-723,-723", "-122,240,660,650,649,-122,-118,-111,-109,220,-744,-118,311,648,233,223", "310,-116,240,-117,1063,300,-723,-723,-723,-723,-723,-723,-723,-723,-723", "-723,-723,-723,-723,-723,233,682,-723,-723,-723,648,921,-723,106,107", "-723,104,105,-723,-723,662,-723,-124,-723,126,-723,-112,-723,-723,125", "-723,-723,-723,-723,-723,361,-723,-723,-723,-744,683,-719,-111,-109", "648,306,650,649,646,648,362,648,-723,-110,648,-723,-723,-723,-723,240", "-723,-744,-723,800,-320,-119,-112,-723,310,-112,-120,-320,-320,-320", "650,649,-320,-320,-320,892,-320,-112,-111,-109,859,-111,-109,-112,-320", "833,-320,-320,-320,875,106,107,919,-111,-109,-121,-320,-320,431,-320", "-320,-320,-320,-320,650,649,646,949,471,650,649,650,649,655,650,649", "653,920,1035,861,633,1063,233,-732,634,948,-320,-320,-320,-320,-320", "-320,-320,-320,-320,-320,-320,-320,-320,-320,240,-629,-320,-320,-320", "648,922,-320,-118,-635,-320,-119,-625,-320,-320,648,-320,-617,-320,-625", "-320,510,-320,-320,-617,-320,-320,-320,-320,-320,683,-320,682,-320,507", "506,-121,-118,-744,491,648,488,487,486,496,489,521,-320,-108,-623,-320", "-320,-320,-320,499,-320,-623,-320,126,-723,-117,612,-320,125,614,-122", "-723,-723,-723,650,649,651,-723,-723,633,-723,494,-625,960,650,649,664", "-617,-723,-723,504,503,507,506,-121,633,-119,500,523,960,-723,-723,524", "-723,-723,-723,-723,-723,239,650,649,659,491,-321,488,487,486,496,489", "-623,-321,600,491,240,488,487,486,499,489,-321,-723,-723,-723,-723,-723", "-723,-723,-723,-723,-723,-723,-723,-723,-723,558,-628,-723,-723,-723", "494,688,-723,570,126,-723,648,572,-723,125,710,507,506,-723,574,-723", "500,-723,-723,-114,-723,-723,-723,-723,-723,-614,-723,-723,-723,-321", "126,-123,-614,-614,-614,125,135,-614,-614,-614,-614,-614,-723,-107,-87", "-723,-723,-614,-723,-614,-723,-614,-614,-614,931,-116,485,-723,240,927", "-120,-614,-614,928,-614,-614,-614,-614,-614,585,650,649,646,586,-311", "227,-620,-621,227,950,951,-311,304,-620,-621,304,612,593,237,611,-311", "-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614", "-614,227,-614,-614,-614,227,-614,-614,592,315,-614,240,1188,-614,-614", "233,-614,590,-614,126,-614,638,-614,-614,125,-614,-614,-614,-614,-614", "-115,-614,-617,-614,-311,228,-620,-621,228,-617,-617,-617,-124,233,-617", "-617,-617,-614,-617,306,-614,-614,-614,-614,597,-614,-617,-614,-617", "-617,-617,612,-614,603,614,-614,228,264,-617,-617,228,-617,-617,-617", "-617,-617,606,227,240,227,615,-356,-619,-622,675,616,636,574,-356,-619", "-622,612,627,673,614,638,420,-356,-617,-617,-617,-617,-617,-617,-617", "-617,-617,-617,-617,-617,-617,-617,631,754,-617,-617,-617,227,-617,-617", "1149,1150,-617,499,630,-617,-617,632,-617,875,-617,640,-617,628,-617", "-617,665,-617,-617,-617,-617,-617,228,-617,228,-617,-356,-619,-622,668", "227,669,954,240,958,957,1197,1188,959,-617,-293,500,-617,-617,-617,-617", "638,-617,671,-617,672,-723,676,1056,-617,240,-109,-617,-723,-723,-723", "496,228,680,-723,-723,-320,-723,-118,956,264,499,681,-320,306,-723,-723", "694,-720,985,892,695,-320,114,113,115,116,-723,-723,240,-723,-723,-723", "-723,-723,228,221,222,697,118,117,119,261,700,507,506,263,262,701,500", "703,264,104,105,221,222,358,-723,-723,-723,-723,-723,-723,-723,-723", "-723,-723,-723,-723,-723,-723,-320,705,-723,-723,-723,-385,688,-723", "227,719,-723,720,261,-723,227,1164,263,262,-723,724,-723,226,-723,-723", "1162,-723,-723,-723,-723,-723,224,-723,-723,-723,726,102,90,93,94,732", "95,97,96,98,754,985,892,-723,91,101,-723,-723,90,-111,499,-723,85,733", "92,106,107,264,-723,264,91,-120,333,81,82,83,11,65,264,228,92,71,72", "264,240,228,75,-723,73,74,76,35,36,79,80,788,240,240,500,240,84,33,32", "114,113,115,116,-102,803,23,1056,240,606,281,282,10,53,335,12,118,117", "119,108,64,110,109,111,814,112,120,121,-320,104,105,49,50,48,-321,-320", "-723,819,-626,240,-720,-321,821,-723,-320,-626,280,279,-719,824,-321", "829,-723,45,-626,830,38,834,858,66,67,227,862,68,863,40,-294,876,602", "52,491,-723,488,487,486,558,489,520,24,558,888,892,910,102,90,93,94", "913,95,97,96,98,914,-320,240,917,91,101,240,-321,926,-723,943,-626,85", "944,92,106,107,945,962,46,47,333,81,82,83,11,65,964,300,970,71,72,972", "974,228,75,-716,73,74,76,35,36,79,80,572,574,496,814,240,84,33,32,114", "113,115,116,499,1159,23,488,487,486,306,489,10,53,335,12,118,117,119", "108,64,110,109,111,306,112,120,121,227,104,105,49,50,48,-627,519,-614", "507,506,814,264,-627,500,-614,520,892,987,988,-716,240,-627,240,-614", "45,998,240,38,-295,240,66,67,1009,1013,68,1159,40,488,487,486,52,489", "-716,-293,491,1017,488,487,486,24,489,700,718,1020,102,90,93,94,1022", "95,97,96,98,1024,228,1026,1026,91,101,240,-627,774,-614,240,240,85,1054", "92,106,107,1057,710,46,47,333,81,82,83,11,65,714,853,854,71,72,855,120", "121,75,-717,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32,114,113", "115,116,925,491,23,488,487,486,972,489,10,53,335,12,118,117,119,108", "64,110,109,111,1069,112,120,121,240,104,105,49,50,48,814,491,-617,488", "487,486,1086,489,710,-617,1088,1093,1094,1099,-717,1100,1101,714,-617", "45,-296,1114,38,1115,1116,66,67,240,240,68,240,40,240,240,240,52,925", "-717,710,491,1123,488,487,486,24,489,240,714,1129,102,90,93,94,1130", "95,97,96,98,1132,700,1135,1138,91,101,1140,1142,240,-617,-385,1154,85", "1165,92,106,107,1166,710,46,47,333,81,82,83,11,65,1026,1026,1026,71", "72,1173,1186,1189,75,1194,73,74,76,35,36,79,80,256,1195,694,1115,1205", "84,33,32,114,113,115,116,1205,700,23,129,130,131,132,133,10,53,335,12", "118,117,119,108,64,110,109,111,1208,112,120,121,1210,104,105,49,50,48", "264,268,269,270,271,281,282,276,277,272,273,1212,257,258,1214,1214,274", "275,240,45,1026,255,38,1205,-720,66,67,-719,1231,68,1214,40,261,1214", "267,52,263,262,1214,259,260,280,279,265,24,266,3,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32", "114,113,115,116,,,23,,,,,677,10,53,335,12,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277", "272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263", "262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,278,,-265,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72", ",,,75,,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32,114,113,115", "116,,,23,,,,,889,10,53,335,12,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257", "258,,,274,275,,45,,,337,,,66,67,,,68,,40,261,,267,52,263,262,,259,260", "280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,", "85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35", "36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,677,10,53,335,12,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269", "270,271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,337,,,66,67", ",,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82", "83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,918,10,53,335,12,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273", ",257,258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259", "260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278", ",,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74", "76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12", "118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268", "269,270,271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66", "67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81", "82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257", "258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260", "280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,", "85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35", "36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117", "119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270", "271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68", ",40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,7,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258,,", "274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279", "265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,240,278,,,,,85,,92", "106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79", "80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271", "281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40", "261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,", "104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258", ",,274,275,,45,,,337,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280", "279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,", "92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36", "79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271", "281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40", "261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,", "104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258", ",,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280", "279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,", "92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36", "79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271", "281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40", "261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,", "104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745,-745", ",,274,275,,45,,,38,,,66,67,,264,68,,40,261,,267,52,263,262,,259,260", "280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,261,,91,101,263,262", ",259,260,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,", "73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,264,491,23,488,487", "486,,489,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,264,,261,,,,263,262,710,259,260,,,,,,274,275,,45,,,38,", ",66,67,,,68,,40,261,,267,52,263,262,,259,260,,,265,24,266,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82", "83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745", "-745,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260", "280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85", ",92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36", "79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271", "281,282,276,277,272,273,,-745,-745,,,274,275,,45,,,38,,,66,67,,,68,", "40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,", "95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,", "104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,45,,,38,,,66,67,,,68,,40", "261,,267,52,263,262,,259,260,,,265,24,266,,,,102,90,93,94,,95,97,96", "98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71", "72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,", ",,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,264,268,269,270,271,281,282,276,,272,273,,,,,,274,275,,45,", ",38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266", ",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47", "7,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,264,268,269,270,271,281,282,,,272,273", ",,,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260", "280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85", ",92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36", "79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,-745,-745,-745", "-745,281,282,,,-745,-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40,261", ",267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95,97,96", "98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71", "72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,", ",,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274,275,,45", ",,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266", ",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47", "333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745", "-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259", "260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,", ",85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76", "35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,-745,-745", "-745,-745,281,282,,,-745,-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40", "261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65", ",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,", ",23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274,275", ",45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24", "266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106", "107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113", "115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121", ",104,105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274", "275,,245,,,253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,280,279,265", "250,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745", "-745,,,274,275,,245,,,253,,,66,67,,,68,,,261,,267,52,263,262,,259,260", "280,279,265,250,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84", "349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,245,", ",253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,,,,250,,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47", ",75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,", ",,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,264,,,,,,,,,,,,,,,,274,275,,245,,,253,,,66,67,,,68,,,261,,,52,263", "262,,259,260,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84", "349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,245,", ",253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,,,,250,,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,", ",,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,", ",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79", "80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108", "64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98", ",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,", "53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,", ",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,", "254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,436,,,,52,,,,,,", ",,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,", ",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79", "80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,", ",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35", "36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,,,,85,,92,106,107,-441,,46,47,,,,-441,-441,-441", ",,-441,-441,-441,,-441,,,,,,,,-441,-441,-441,-441,,,,,,,,,-441,-441", ",-441,-441,-441,-441,-441,,,,,,,,,,,,,,,,,,,,,,,-441,-441,-441,-441", "-441,-441,-441,-441,-441,-441,-441,-441,-441,-441,,,-441,-441,-441,", ",-441,,306,-441,,,-441,-441,,-441,,-441,,-441,,-441,-441,,-441,-441", "-441,-441,-441,,-441,-441,-441,,,,,,,,,,,,,,-441,,,-441,-441,,-441,", "-441,81,82,83,,65,,-441,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33", "32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,", "112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,", ",68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,", "81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,", ",84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66", "67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117", "119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,", ",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73", "74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,", ",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,", ",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-327,,46,47,,,,-327", "-327,-327,,,-327,-327,-327,,-327,,,,,,,,-327,,-327,-327,,,,,,,,,-327", "-327,,-327,-327,-327,-327,-327,,,,,,,,,,,,,,,,,,,,,,,-327,-327,-327", "-327,-327,-327,-327,-327,-327,-327,-327,-327,-327,-327,,,-327,-327,-327", ",,-327,,315,-327,,,-327,-327,,-327,,-327,,-327,,-327,-327,,-327,-327", "-327,-327,-327,,-327,,-327,,,,,,,,,,,,,,-327,,,-327,-327,,-327,,-327", "81,82,83,,65,,-327,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327", "112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,", ",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,", "91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355", "79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108", "64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,", "245,,,253,,,66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,", "53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,", ",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82", "83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,", ",52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33", "32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327", "112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,", ",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,", "91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36", "79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108", "64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98", ",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,797,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73", "74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,", ",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,", ",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,867,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82", "83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,", ",52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327", "112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,", ",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,", "91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355", "79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108", "64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98", ",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35", "36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,", ",,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,", ",,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,", ",,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,", ",,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96", "98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76", "354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117", "119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,", ",,,,,245,,,253,,,66,67,,,68,,324,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,", "118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,", ",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47", ",75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,", ",,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49", "50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,328,,,,,,250", ",,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121", ",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,797,,,", "52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33", "32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,240,,,81", "82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,", "84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66", "67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,", ",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,", "118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,", ",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47", ",75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,", "53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,", ",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49", "50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328", ",,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106", "107,,,46,47,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,", ",84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38", ",,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,", "91,101,,,,,,420,85,,92,106,107,,,46,47,81,82,83,,65,,,,71,72,,,,75,", "73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53", ",,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,", ",,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,", ",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116", ",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121", ",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,322,", "52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84", "349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,", ",66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96", "98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76", "354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117", "119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,", ",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73", "74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,", ",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,", ",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,", ",102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-275,,46", "47,,,,-275,-275,-275,,,-275,-275,-275,491,-275,488,487,486,496,489,", ",-275,-275,-275,,,,499,,,,,,-275,-275,,-275,-275,-275,-275,-275,,491", ",488,487,486,496,489,494,,,,,,,,499,504,503,507,506,,,,500,,491,,488", "487,486,496,489,-275,,,,,494,,-275,499,,,,306,-275,504,503,507,506,", ",,500,,,,,,,,,494,485,,,,-275,-275,,,,,507,506,,,,500,,,,-275,,,-275", ",81,82,83,-275,65,,485,,71,72,-275,,,75,,73,74,76,354,355,79,80,,,,", ",84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79", "80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95", "97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73", "74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,", "53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,", ",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,", ",,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,", "102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,", "102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,", "102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116", ",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121", ",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52", ",,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33", "32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84", "349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66", "67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,", ",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,", ",,,,245,,,253,,,66,67,,,68,,324,,,,52,,,328,,,,,,250,,,,,102,325,93", "94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,", ",,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121", ",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52", ",,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65", "92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,", ",,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66", "67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,", ",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,", ",,,,245,,,253,,,66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "560,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,", ",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,", ",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49", "50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328", ",,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65", "92,106,107,71,72,46,560,,75,,73,74,76,354,355,79,80,,,,,,84,349,357", "114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84", "349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66", "67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,", ",,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96", "98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76", "35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,", ",,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325", "93,94,,95,97,96,98,,,,,91,101,240,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,", "254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,", ",,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,", ",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79", "80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108", "64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98", ",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,", "53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,", ",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,", "254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,", ",,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,", ",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11,65,,,,71,72,,,,75,,73,74", "76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,,12,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,", "118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,", ",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47", ",75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53", ",,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,", ",,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,", ",,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48", ",,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,", ",,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,", "102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,", "102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116", ",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47", "81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114", "113,115,116,,,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40", ",,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,420,85", ",92,106,107,,,46,47,81,82,83,,65,,,,71,72,,,,75,,73,74,76,35,36,79,80", ",,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96", "98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76", "35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-725,,46,47,,,,-725,-725", "-725,,,-725,-725,-725,,-725,,,,,,,,-725,-725,-725,-725,-725,,,,,,,,-725", "-725,,-725,-725,-725,-725,-725,,,,,,,,,,,,,,,,,,,,,,,-725,-725,-725", "-725,-725,-725,-725,-725,-725,-725,-725,-725,-725,-725,,,-725,-725,-725", ",,-725,,,-725,,,-725,-725,,-725,,-725,,-725,,-725,-725,,-725,-725,-725", "-725,-725,,-725,-725,-725,,,,,,,,,,,,,,-725,,,-725,-725,-725,-725,,-725", "-724,-725,,,,,-725,-724,-724,-724,,,-724,-724,-724,,-724,,,,,,,,-724", "-724,-724,-724,-724,,,,114,113,115,116,-724,-724,,-724,-724,-724,-724", "-724,,,,,118,117,119,,,,,,,,,,,104,105,,,358,-724,-724,-724,-724,-724", "-724,-724,-724,-724,-724,-724,-724,-724,-724,,,-724,-724,-724,,,-724", ",,-724,,,-724,-724,,-724,,-724,,-724,,-724,-724,,-724,-724,-724,-724", "-724,,-724,-724,-724,,102,90,93,94,,95,97,96,98,,,,-724,91,101,-724", "-724,-724,-724,,-724,85,-724,92,106,107,-275,-724,81,82,83,11,65,-275", "-275,-275,71,72,-275,-275,-275,75,-275,73,74,76,35,36,79,80,-275,-275", "-275,-275,,84,33,32,114,113,115,116,-275,-275,23,-275,-275,-275,-275", "-275,10,53,9,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275", "-275,-275,,,-275,-275,-275,45,,-275,38,306,-275,66,67,-275,-275,68,-275", "40,-275,,-275,52,-275,-275,,-275,-275,-275,-275,-275,24,-275,-275,-275", ",102,90,93,94,,95,97,96,98,,,,-275,91,101,-275,-275,,-275,,-275,85,", "92,106,107,,-275,46,47,81,82,83,,65,,,,71,72,,,,75,,73,74,76,35,36,79", "80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,", ",,91,101,126,,,,,125,85,,92,106,107,-312,,46,47,,,,-312,-312,-312,,", "-312,-312,-312,,-312,,,,,,,,-312,,-312,-312,-312,,,,,,,,-312,-312,,-312", "-312,-312,-312,-312,,,,,,,,,,,,,,,,,,,,,,,-312,-312,-312,-312,-312,-312", "-312,-312,-312,-312,-312,-312,-312,-312,,,-312,-312,-312,,,-312,,,-312", ",,-312,-312,,-312,,-312,,-312,,-312,-312,,-312,-312,-312,-312,-312,", "-312,,-312,,,,,,,,,,,,,,-312,,,-312,-312,-312,-312,,-312,,-312,,81,82", "83,-312,65,,,,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33", "32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,", "112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,", ",68,,436,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,", ",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117", "119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,", ",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73", "74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,", ",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,", ",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,", ",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116", ",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104", "105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52", ",,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",436,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81", "82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84", "33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,", ",,,,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1107,,,253", ",,66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,", ",,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1146,,,253,,", "66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,", ",,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,", ",84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,253,,,66", "67,,,68,,,491,,488,487,486,496,489,,,,,,,,,499,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,588,,494,85,,92,106,107,81,82,83,,65,507,506,,71", "72,500,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116", ",,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", ",,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", ",,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254", ",,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,,,358", ",,,,,,,,,,,,,,,,,,,346,,,253,,,66,67,,,68,,,491,,488,487,486,496,489", ",,,,,,,,499,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,360,,494,85,,92", "106,107,81,82,83,,65,507,506,,71,72,500,,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342", ",,66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,", ",,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66", "67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81", "82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1146,,,253,,,66,67,,", "68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,400,64,110,109,401", ",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,407,,,402,,,253,,,66,67", ",,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68", ",,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357", "114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,,", ",,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85", "65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,341,,", ",,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65", "92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113", "115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121", ",104,105,,,358,,,,,,,,,,,,,,,,,,,,395,,,38,,,66,67,,,68,,40,,,,,,,,", ",,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106", "107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,350,,,118,117,119,400,64,110,109,401,,112,120,121,,104", "105,,,358,,,,,,,,,,,,,,,,,,,,402,,,253,,,66,67,,,68,,,,,,,,,,,,,,,,", ",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,185,196", "186,209,182,202,192,191,212,213,207,190,189,184,210,214,215,194,183", "197,201,203,195,188,,,,204,211,206,205,198,208,193,181,200,199,,,,,", "180,187,178,179,175,176,177,138,140,137,,139,,,,,,,,169,170,,166,148", "149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,,,,,,,,,163,162", ",147,168,165,164,173,160,161,155,153,145,167,146,,,174,102,,,,,,,,,", ",,,,101,185,196,186,209,182,202,192,191,212,213,207,190,189,184,210", "214,215,194,183,197,201,203,195,188,,,,204,211,206,205,198,208,193,181", "200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139,,,,,,,,169,170", ",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,,,,,", ",,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,,,174,102", ",,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213,207,190,189", "184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206,205,198,208", "193,181,200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139,,,,,", ",,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159", ",,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146", ",,174,102,,,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213,207", "190,189,184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206,205", "198,208,193,181,200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139", ",,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158", "159,,,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167", "146,,,174,102,,,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213", "207,190,189,184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206", "294,293,295,292,181,200,199,,,,,,180,187,178,179,289,290,291,287,140", "110,109,288,,112,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152", ",,,171,172,158,159,,,,,,299,,,,,,,,163,162,,147,168,165,164,173,160", "161,155,153,145,167,146,,,174,114,113,115,116,,,,,,491,,488,487,486", "496,489,118,117,119,774,,,,777,499,,,,,104,105,,,358,,,,,,,,,,,,,494", ",,,,,,776,,,747,507,506,,745,,500,746,,,,,,,,,,,,,,,,775,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,114,113,115,116,485,,85,,92,106,107,,,762", "763,,118,117,119,774,,,491,777,488,487,486,496,489,104,105,,,358,,,", "499,,,,,,,,,,,,,,,,776,,,747,,,494,745,,,746,,,,,504,503,507,506,,,", "500,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,", ",85,,92,106,107,,,762,763,,118,117,119,774,,,491,777,488,487,486,496", "489,104,105,,,358,,,,499,,,,,,,,,,,,,,,,776,,,747,,,494,745,,,746,,749", ",,504,503,507,506,,,,500,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,,777", "754,,,,,104,105,,,358,499,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,", "749,,,,,,,500,,,,,,,775,,,,102,755,93,94,,95,97,96,98,,,,,91,101,114", "113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,491,777,488", "487,486,496,489,104,105,,,358,,,,499,,,,,,,,,,,,,,,,776,,,747,,,494", "745,,,746,,,,,504,503,507,506,,,,500,,,,775,,,,102,90,93,94,,95,97,96", "98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119", "774,,,491,777,488,487,486,496,489,104,105,,,358,,,,499,,,,,,,,,,,,,", ",,776,,,747,,,494,745,,,746,,749,,,,,507,506,,,,500,,,,775,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762", "763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776", ",,747,,,,745,,,746,,749,,,,,,,491,,488,487,486,496,489,775,,,,102,90", "93,94,499,95,97,96,98,,,,,91,101,240,114,113,115,116,,85,,92,106,107", "494,,762,763,,,118,117,119,774,,507,506,777,,,500,,,104,105,,,358,,", ",,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,485,,,,,,,,,,,,,775,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,", "762,763,,118,117,119,774,,,,777,754,,,,,104,105,,,358,499,,,,,,,,,,", ",,,,,,,,776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775,,,,102,755,93", "94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763", ",118,117,119,774,,,,777,754,,,,,104,105,,,358,499,,,,,,,,,,,,,,,,,,", "776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775,,,,102,755,93,94,,95", "97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,762,763,185,196,186,209,182", "202,192,191,212,213,207,190,189,184,210,214,215,194,183,197,201,203", "195,188,,,,204,211,206,205,198,208,193,181,200,199,,,,,,180,187,178", "179,175,176,177,138,140,,,139,,,,,,,,169,170,,166,148,149,150,157,154", "156,,,151,152,,,,171,172,158,159,,,,,,,,,,,,,,163,162,,147,168,165,164", "173,160,161,155,153,145,167,146,,,174,114,113,115,116,,,491,,488,487", "486,496,489,,,,118,117,119,774,,499,,777,754,,,,,104,105,,,358,499,", ",,,,,,,494,,,,,,,,,,776,507,506,747,,,500,745,,,746,,749,,,,,,,500,", ",,,,,775,,,,102,755,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,", "85,,92,106,107,,,762,763,,118,117,119,774,,,,777,754,,,,,104,105,,,358", "499,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775", ",,,102,755,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106", "107,,,762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,", ",,,,,,,,776,,,747,,,,745,,,746,,,,,,,,,,,,,,,,775,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763,,118", "117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776,,,747,", ",,745,,,746,,,,,,,,,,,,,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101", "114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,,777,", ",,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,,,,,,", ",,,,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,", ",85,,92,106,107,,,762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358", ",,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,,,,,,,,,,,,,,775,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,", "762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,114,113,115", "116,,,,,,,,,776,,,747,118,117,119,745,,,746,,1053,,,,,104,105,,,358", ",,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107", ",,762,763,491,,488,487,486,496,489,,,,,102,90,93,94,499,95,97,96,98", ",,,,91,101,114,113,115,116,,,85,,92,106,107,494,,,,,118,117,119,,504", "503,507,506,,,,500,,104,105,,,358,,,,,,,,,,,,491,,488,487,486,496,489", ",,,,,,,,499,,,,,,491,485,488,487,486,496,489,,,,,,,,,499,494,102,90", "93,94,,95,97,96,98,,507,506,,91,101,500,,,,,494,85,,92,106,107,,,,504", "503,507,506,,,491,500,488,487,486,496,489,,491,,488,487,486,496,489", "499,,,,,485,,,499,,491,,488,487,486,496,489,,,,,,494,644,,499,485,,", ",494,504,503,507,506,,,,500,504,503,507,506,,,,500,494,,,,,,,,,504,503", "507,506,,,491,500,488,487,486,496,489,,,,,,,,,499,485,,,,,,,,485,,,", ",,,,,,,,,494,,,,485,,,,,,,507,506,872,469,,500,871,,,,,,,,169,170,,166", "148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,485", ",,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,842,469,174", ",843,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172", "158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153", "145,167,146,837,462,174,,838,,,,,,,,169,170,,166,148,149,150,157,154", "156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165", "164,173,160,161,155,153,145,167,146,465,469,174,,464,,,,,,,,169,170", ",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,", ",,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,729,469", "174,,730,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171", "172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155", "153,145,167,146,556,462,174,,557,,,,,,,,169,170,,166,148,149,150,157", "154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168", "165,164,173,160,161,155,153,145,167,146,458,462,174,,459,,,,,,,,169", "170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306", ",,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,556", "462,174,,557,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,", ",,171,172,158,159,,,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161", "155,153,145,167,146,729,469,174,,730,,,,,,,,169,170,,166,148,149,150", "157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147", "168,165,164,173,160,161,155,153,145,167,146,727,462,174,,728,,,,,,,", "169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,", ",,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146", "807,462,174,,808,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152", ",,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160", "161,155,153,145,167,146,810,469,174,,811,,,,,,,,169,170,,166,148,149", "150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162", ",147,168,165,164,173,160,161,155,153,145,167,146,1200,462,174,,1201", ",,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158", "159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145", "167,146,869,462,174,,870,,,,,,,,169,170,,166,148,149,150,157,154,156", ",,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164", "173,160,161,155,153,145,167,146,1202,469,174,,1203,,,,,,,,169,170,,166", "148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,", ",163,162,,147,168,165,164,173,160,161,155,153,145,167,146,839,469,174", ",840,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172", "158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153", "145,167,146,1218,469,174,,1217,,,,,,,,169,170,,166,148,149,150,157,154", "156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165", "164,173,160,161,155,153,145,167,146,727,462,174,,728,,,,,,,,169,170", ",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,", ",,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,,,174"]; + racc_action_table = (arr = $$$('Array').$new(28717, nil)); + idx = 0; + $send(clist, 'each', [], function $Ruby31$2(str){ + + + if (str == null) str = nil;; + return $send(str.$split(",", -1), 'each', [], function $$3(i){var $writer = nil; + + + + if (i == null) i = nil;; + if (!$truthy(i['$empty?']())) { + + $writer = [idx, i.$to_i()]; + $send(arr, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return (idx = $rb_plus(idx, 1));}, 1);}, 1); + clist = ["464,521,1016,837,1236,838,992,464,464,464,515,515,1053,464,464,289,464", "23,835,631,1087,1058,289,807,464,927,443,137,396,785,3,840,137,137,501", "31,464,464,1089,464,464,464,464,464,1104,1105,1108,384,385,392,850,622", "501,625,1092,932,1092,331,23,928,521,625,331,393,1058,927,464,464,464", "464,464,464,464,464,464,464,464,464,464,464,289,1165,464,464,464,443", "464,464,1200,807,464,1201,839,464,1053,928,840,9,464,31,464,932,464", "464,515,464,464,464,464,464,871,464,837,464,838,992,785,871,871,871", "1016,1202,31,871,871,1016,871,464,631,807,464,464,807,464,871,464,835", "396,1087,835,840,835,464,1087,807,464,871,871,1203,871,871,871,871,871", "1222,622,1089,839,392,850,622,1089,1104,1105,1108,384,385,1104,1105", "1108,384,385,393,981,981,12,871,871,871,871,871,871,871,871,871,871", "871,871,871,871,553,553,871,871,871,69,871,871,1202,1165,871,839,416", "871,1165,1127,1200,735,871,1201,871,1200,871,871,1201,871,871,871,871", "871,251,871,729,871,243,1203,244,641,641,729,729,729,358,358,729,729", "729,871,729,1202,871,871,802,871,1202,871,729,729,729,729,729,417,871", "735,802,871,14,808,729,729,246,729,729,729,729,729,1203,981,416,1127", "1127,1203,1222,810,979,15,251,1222,351,576,252,17,69,243,553,244,1127", "27,729,729,729,729,729,729,729,729,729,729,729,729,729,729,20,458,729", "729,729,656,729,729,358,358,729,48,48,729,729,417,729,246,729,641,729", "808,729,729,641,729,729,729,729,729,42,729,729,729,252,459,810,810,979", "947,351,576,576,576,658,45,414,729,458,413,729,729,729,729,53,729,20", "729,576,730,458,808,729,351,808,729,730,730,730,656,656,730,730,730", "1220,730,808,810,979,656,810,979,459,730,1220,730,730,730,1006,48,48", "727,810,979,459,730,730,216,730,730,730,730,730,947,947,947,756,229", "658,658,414,414,414,413,413,413,728,923,658,402,947,19,746,402,756,730", "730,730,730,730,730,730,730,730,730,730,730,730,730,746,44,730,730,730", "412,730,730,1006,231,730,727,291,730,730,418,730,288,730,291,730,235", "730,730,288,730,730,730,730,730,870,730,869,730,700,700,728,923,19,972", "415,972,972,972,972,972,245,730,44,290,730,730,730,730,972,730,290,730", "996,872,44,822,730,996,822,730,872,872,872,412,412,412,872,872,776,872", "972,291,776,418,418,418,288,872,872,972,972,972,972,870,931,869,972", "247,931,872,872,248,872,872,872,872,872,254,415,415,415,1022,634,1022", "1022,1022,1022,1022,290,634,362,914,972,914,914,914,1022,914,634,872", "872,872,872,872,872,872,872,872,872,872,872,872,872,305,43,872,872,872", "1022,872,872,319,389,872,411,320,872,389,914,1022,1022,872,323,872,1022", "872,872,362,872,872,872,872,872,108,872,872,872,634,5,362,108,108,108", "5,335,108,108,108,287,108,872,43,336,872,872,287,872,108,872,108,108", "108,744,43,1022,872,338,744,872,108,108,744,108,108,108,108,108,339", "411,411,411,340,347,286,294,295,29,759,759,347,286,294,295,29,376,346", "21,376,347,108,108,108,108,108,108,108,108,108,108,108,108,108,108,287", "345,108,108,108,1187,108,108,345,349,108,350,1187,108,108,352,108,345", "108,509,108,1187,108,108,509,108,108,108,108,108,21,108,111,108,347", "286,294,295,29,111,111,111,21,353,111,111,111,108,111,357,108,108,108", "108,359,108,111,108,111,111,111,377,108,366,377,108,345,368,111,111", "1187,111,111,111,111,111,371,442,374,404,378,54,293,292,442,379,404", "381,54,293,292,380,390,442,380,404,391,54,111,111,111,111,111,111,111", "111,111,111,111,111,111,111,395,939,111,111,111,394,111,111,1090,1090", "111,939,394,111,111,397,111,678,111,406,111,394,111,111,426,111,111", "111,111,111,442,111,404,111,54,293,292,432,1145,434,775,1157,775,775", "1157,1145,775,111,435,939,111,111,111,111,1145,111,437,111,440,465,444", "939,111,454,678,111,465,465,465,1132,394,456,465,465,811,465,678,775", "531,1132,457,811,466,465,465,472,811,823,823,473,811,762,762,762,762", "465,465,476,465,465,465,465,465,1145,383,383,477,762,762,762,531,478", "1132,1132,531,531,481,1132,482,532,762,762,16,16,762,465,465,465,465", "465,465,465,465,465,465,465,465,465,465,811,483,465,465,465,493,465", "465,1106,505,465,508,532,465,18,1106,532,532,465,511,465,18,465,465", "1106,465,465,465,465,465,18,465,465,465,517,762,762,762,762,525,762", "762,762,762,945,1190,1190,465,762,762,465,465,88,465,945,465,762,526", "762,762,762,533,465,534,88,465,387,387,387,387,387,387,535,1106,88,387", "387,536,561,18,387,842,387,387,387,387,387,387,387,562,563,567,945,583", "387,387,387,387,387,387,387,584,587,387,945,589,594,51,51,387,387,387", "387,387,387,387,387,387,387,387,387,598,387,387,387,843,387,387,387", "387,387,593,843,842,607,343,608,843,593,609,842,843,343,51,51,842,619", "593,623,842,387,343,624,387,626,653,387,387,363,661,387,663,387,670", "679,363,387,714,842,714,714,714,684,714,363,387,689,691,693,707,387", "387,387,387,712,387,387,387,387,713,843,715,722,387,387,731,593,740", "842,748,343,387,749,387,387,387,750,779,387,387,841,841,841,841,841", "841,782,784,790,841,841,791,792,363,841,400,841,841,841,841,841,841", "841,794,796,697,804,806,841,841,841,841,841,841,841,697,1099,841,1099", "1099,1099,809,1099,841,841,841,841,841,841,841,841,841,841,841,841,812", "841,841,841,242,841,841,841,841,841,344,242,400,697,697,813,816,344", "697,400,242,825,831,832,400,836,344,845,400,841,849,851,841,866,868", "841,841,877,890,841,1197,841,1197,1197,1197,841,1197,400,893,913,894", "913,913,913,841,913,897,899,902,841,841,841,841,903,841,841,841,841", "905,242,906,908,841,841,912,344,925,400,933,934,841,938,841,841,841", "941,913,841,841,236,236,236,236,236,236,913,649,649,236,236,649,649", "649,236,401,236,236,236,236,236,236,236,8,8,8,8,8,236,236,236,236,236", "236,236,946,494,236,494,494,494,965,494,236,236,236,236,236,236,236", "236,236,236,236,236,968,236,236,236,969,236,236,236,236,236,978,710", "401,710,710,710,983,710,494,401,986,993,995,1002,401,1003,1004,494,401", "236,1005,1031,236,1032,1037,236,236,1042,1043,236,1044,236,1045,1046", "1047,236,1051,401,710,1114,1052,1114,1114,1114,236,1114,1055,710,1059", "236,236,236,236,1066,236,236,236,236,1071,1072,1074,1075,236,236,1076", "1078,1079,401,1080,1096,236,1107,236,236,236,1110,1114,236,236,1103", "1103,1103,1103,1103,1103,1111,1112,1113,1103,1103,1124,1143,1146,1103", "1155,1103,1103,1103,1103,1103,1103,1103,25,1156,1161,1171,1172,1103", "1103,1103,1103,1103,1103,1103,1174,1177,1103,581,581,581,581,581,1103", "1103,1103,1103,1103,1103,1103,1103,1103,1103,1103,1103,1180,1103,1103", "1103,1181,1103,1103,1103,1103,1103,25,25,25,25,25,25,25,25,25,25,25", "1182,25,25,1183,1185,25,25,1199,1103,1204,25,1103,1206,1217,1103,1103", "1218,1224,1103,1225,1103,25,1226,25,1103,25,25,1227,25,25,25,25,25,1103", "25,1,,,1103,1103,1103,1103,,1103,1103,1103,1103,,,,,1103,1103,,25,,", ",,1103,,1103,1103,1103,,,1103,1103,997,997,997,997,997,997,,,,997,997", ",,,997,,997,997,997,997,997,997,997,373,373,373,373,373,997,997,997", "997,997,997,997,,,997,,,,,447,997,997,997,997,997,997,997,997,997,997", "997,997,,997,997,997,,997,997,997,997,997,447,447,447,447,447,447,447", "447,447,447,447,,447,447,,,447,447,,997,,,997,,,997,997,,,997,,997,447", ",447,997,447,447,,447,447,447,447,447,997,447,,,,997,997,997,997,,997", "997,997,997,,,,,997,997,,447,,447,,,997,,997,997,997,,,997,997,337,337", "337,337,337,337,,,,337,337,,,,337,,337,337,337,337,337,337,337,334,334", "334,334,334,337,337,337,337,337,337,337,,,337,,,,,692,337,337,337,337", "337,337,337,337,337,337,337,337,,337,337,337,,337,337,337,337,337,692", "692,692,692,692,692,692,692,692,692,692,,692,692,,,692,692,,337,,,337", ",,337,337,,,337,,337,692,,692,337,692,692,,692,692,692,692,692,337,692", ",,,337,337,337,337,,337,337,337,337,,,,,337,337,,692,,,,,337,,337,337", "337,,,337,337,38,38,38,38,38,38,,,,38,38,,,,38,,38,38,38,38,38,38,38", ",,,,,38,38,38,38,38,38,38,,,38,,,,,453,38,38,38,38,38,38,38,38,38,38", "38,38,,38,38,38,,38,38,38,38,38,453,453,453,453,453,453,453,453,453", "453,453,,453,453,,,453,453,,38,,,38,,,38,38,,,38,,38,453,,453,38,453", "453,,453,453,453,453,453,38,453,,,,38,38,38,38,,38,38,38,38,,,,,38,38", ",453,,,,,38,,38,38,38,,,38,38,642,642,642,642,642,642,,,,642,642,,,", "642,,642,642,642,642,642,642,642,,,,,,642,642,642,642,642,642,642,,", "642,,,,,723,642,642,642,642,642,642,642,642,642,642,642,642,,642,642", "642,,642,642,642,642,642,723,723,723,723,723,723,723,723,723,723,723", ",723,723,,,723,723,,642,,,642,,,642,642,,,642,,642,723,,723,642,723", "723,,723,723,723,723,723,642,723,,,,642,642,642,642,,642,642,642,642", ",,,,642,642,,723,,,,,642,,642,642,642,,,642,642,1068,1068,1068,1068", "1068,1068,,,,1068,1068,,,,1068,,1068,1068,1068,1068,1068,1068,1068,", ",,,,1068,1068,1068,1068,1068,1068,1068,,,1068,,,,,,1068,1068,1068,1068", "1068,1068,1068,1068,1068,1068,1068,1068,,1068,1068,1068,,1068,1068,1068", "1068,1068,817,817,817,817,817,817,817,817,817,817,817,,817,817,,,817", "817,,1068,,,1068,,,1068,1068,,,1068,,1068,817,,817,1068,817,817,,817", "817,817,817,817,1068,817,,,,1068,1068,1068,1068,,1068,1068,1068,1068", ",,,,1068,1068,,817,,,,,1068,,1068,1068,1068,,,1068,1068,372,372,372", "372,372,372,,,,372,372,,,,372,,372,372,372,372,372,372,372,,,,,,372", "372,372,372,372,372,372,,,372,,,,,,372,372,372,372,372,372,372,372,372", "372,372,372,,372,372,372,,372,372,372,372,372,874,874,874,874,874,874", "874,874,874,874,874,,874,874,,,874,874,,372,,,372,,,372,372,,,372,,372", "874,,874,372,874,874,,874,874,874,874,874,372,874,,,,372,372,372,372", ",372,372,372,372,,,,,372,372,,874,,,,,372,,372,372,372,,,372,372,973", "973,973,973,973,973,,,,973,973,,,,973,,973,973,973,973,973,973,973,", ",,,,973,973,973,973,973,973,973,,,973,,,,,,973,973,973,973,973,973,973", "973,973,973,973,973,,973,973,973,,973,973,973,973,973,317,317,317,317", "317,317,317,317,317,317,317,,317,317,,,317,317,,973,,,973,,,973,973", ",,973,,973,317,,317,973,317,317,,317,317,317,317,317,973,317,,,,973", "973,973,973,,973,973,973,973,,,,,973,973,,317,,,,,973,,973,973,973,", ",973,973,2,2,2,2,2,2,,,,2,2,,,,2,,2,2,2,2,2,2,2,,,,,,2,2,2,2,2,2,2,", ",2,,,,,,2,2,2,2,2,2,2,2,2,2,2,2,,2,2,2,,2,2,2,2,2,550,550,550,550,550", "550,550,550,550,550,550,,550,550,,,550,550,,2,,,2,,,2,2,,,2,,2,550,", "550,2,550,550,,550,550,550,550,550,2,550,,,,2,2,2,2,,2,2,2,2,,,,,2,2", "550,550,,,,,2,,2,2,2,,,2,2,230,230,230,230,230,230,,,,230,230,,,,230", ",230,230,230,230,230,230,230,,,,,,230,230,230,230,230,230,230,,,230", ",,,,,230,230,230,230,230,230,230,230,230,230,230,230,,230,230,230,,230", "230,230,230,230,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067", ",1067,1067,,,1067,1067,,230,,,230,,,230,230,,,230,,230,1067,,1067,230", "1067,1067,,1067,1067,1067,1067,1067,230,1067,,,,230,230,230,230,,230", "230,230,230,,,,,230,230,,1067,,,,,230,,230,230,230,,,230,230,342,342", "342,342,342,342,,,,342,342,,,,342,,342,342,342,342,342,342,342,,,,,", "342,342,342,342,342,342,342,,,342,,,,,,342,342,342,342,342,342,342,342", "342,342,342,342,,342,342,342,,342,342,342,342,342,1034,1034,1034,1034", "1034,1034,1034,1034,1034,1034,1034,,1034,1034,,,1034,1034,,342,,,342", ",,342,342,,,342,,342,1034,,1034,342,1034,1034,,1034,1034,1034,1034,1034", "342,1034,,,,342,342,342,342,,342,342,342,342,,,,,342,342,,1034,,,,,342", ",342,342,342,,,342,342,253,253,253,253,253,253,,,,253,253,,,,253,,253", "253,253,253,253,253,253,,,,,,253,253,253,253,253,253,253,,,253,,,,,", "253,253,253,253,253,253,253,253,253,253,253,253,,253,253,253,,253,253", "253,253,253,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,", "1033,1033,,,1033,1033,,253,,,253,,,253,253,,,253,,253,1033,,1033,253", "1033,1033,,1033,1033,1033,1033,1033,253,1033,,,,253,253,253,253,,253", "253,253,253,,,,,253,253,,1033,,,,,253,,253,253,253,,,253,253,1013,1013", "1013,1013,1013,1013,,,,1013,1013,,,,1013,,1013,1013,1013,1013,1013,1013", "1013,,,,,,1013,1013,1013,1013,1013,1013,1013,,,1013,,,,,,1013,1013,1013", "1013,1013,1013,1013,1013,1013,1013,1013,1013,,1013,1013,1013,,1013,1013", "1013,1013,1013,1011,1011,1011,1011,1011,1011,1011,1011,1011,1011,1011", ",1011,1011,,,1011,1011,,1013,,,1013,,,1013,1013,,,1013,,1013,1011,,1011", "1013,1011,1011,,1011,1011,1011,1011,1011,1013,1011,,,,1013,1013,1013", "1013,,1013,1013,1013,1013,,,,,1013,1013,,1011,,,,,1013,,1013,1013,1013", ",,1013,1013,1098,1098,1098,1098,1098,1098,,,,1098,1098,,,,1098,,1098", "1098,1098,1098,1098,1098,1098,,,,,,1098,1098,1098,1098,1098,1098,1098", ",,1098,,,,,,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098", ",1098,1098,1098,,1098,1098,1098,1098,1098,1010,1010,1010,1010,1010,1010", "1010,1010,1010,1010,1010,,1010,1010,,,1010,1010,,1098,,,1098,,,1098", "1098,,,1098,,1098,1010,,1010,1098,1010,1010,,1010,1010,1010,1010,1010", "1098,1010,,,,1098,1098,1098,1098,,1098,1098,1098,1098,,,,,1098,1098", ",1010,,,,,1098,,1098,1098,1098,,,1098,1098,1097,1097,1097,1097,1097", "1097,,,,1097,1097,,,,1097,,1097,1097,1097,1097,1097,1097,1097,,,,,,1097", "1097,1097,1097,1097,1097,1097,,,1097,,,,,,1097,1097,1097,1097,1097,1097", "1097,1097,1097,1097,1097,1097,,1097,1097,1097,,1097,1097,1097,1097,1097", "529,529,529,529,529,529,529,529,529,529,529,,529,529,,,529,529,,1097", ",,1097,,,1097,1097,,546,1097,,1097,529,,529,1097,529,529,,529,529,529", "529,529,1097,529,,,,1097,1097,1097,1097,,1097,1097,1097,1097,,,546,", "1097,1097,546,546,,546,546,,1097,,1097,1097,1097,,,1097,1097,1147,1147", "1147,1147,1147,1147,,,,1147,1147,,,,1147,,1147,1147,1147,1147,1147,1147", "1147,,,,,,1147,1147,1147,1147,1147,1147,1147,547,1115,1147,1115,1115", "1115,,1115,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147", ",1147,1147,1147,,1147,1147,1147,1147,1147,604,,547,,,,547,547,1115,547", "547,,,,,,604,604,,1147,,,1147,,,1147,1147,,,1147,,1147,604,,604,1147", "604,604,,604,604,,,604,1147,604,,,,1147,1147,1147,1147,,1147,1147,1147", "1147,,,,,1147,1147,,,,,,,1147,,1147,1147,1147,,,1147,1147,621,621,621", "621,621,621,,,,621,621,,,,621,,621,621,621,621,621,621,621,,,,,,621", "621,621,621,621,621,621,,,621,,,,,,621,621,621,621,621,621,621,621,621", "621,621,621,,621,621,621,,621,621,621,621,621,364,364,364,364,364,364", "364,364,364,364,364,,364,364,,,364,364,,621,,,621,,,621,621,,,621,,621", "364,,364,621,364,364,,364,364,364,364,364,621,364,,,,621,621,621,621", ",621,621,621,621,,,,,621,621,,,,,,,621,,621,621,621,,,621,621,892,892", "892,892,892,892,,,,892,892,,,,892,,892,892,892,892,892,892,892,,,,,", "892,892,892,892,892,892,892,,,892,,,,,,892,892,892,892,892,892,892,892", "892,892,892,892,,892,892,892,,892,892,892,892,892,365,365,365,365,365", "365,365,365,365,365,365,,365,365,,,365,365,,892,,,892,,,892,892,,,892", ",892,365,,365,892,365,365,,365,365,365,365,365,892,365,,,,892,892,892", "892,,892,892,892,892,,,,,892,892,,,,,,,892,,892,892,892,,,892,892,618", "618,618,618,618,618,,,,618,618,,,,618,,618,618,618,618,618,618,618,", ",,,,618,618,618,618,618,618,618,,,618,,,,,,618,618,618,618,618,618,618", "618,618,618,618,618,,618,618,618,,618,618,618,618,618,551,,,,,,,,,,", ",,,,,551,551,,618,,,618,,,618,618,,,618,,618,551,,551,618,551,551,,551", "551,,,551,618,551,,,,618,618,618,618,,618,618,618,618,,,,,618,618,,", ",,,,618,,618,618,618,,,618,618,1191,1191,1191,1191,1191,1191,,,,1191", "1191,,,,1191,,1191,1191,1191,1191,1191,1191,1191,,,,,,1191,1191,1191", "1191,1191,1191,1191,,,1191,,,,,,1191,1191,1191,1191,1191,1191,1191,1191", "1191,1191,1191,1191,,1191,1191,1191,,1191,1191,1191,1191,1191,549,549", "549,549,549,549,549,549,,549,549,,,,,,549,549,,1191,,,1191,,,1191,1191", ",,1191,,1191,549,,549,1191,549,549,,549,549,549,549,549,1191,549,,,", "1191,1191,1191,1191,,1191,1191,1191,1191,,,,,1191,1191,,,,,,,1191,,1191", "1191,1191,,,1191,1191,135,135,135,135,135,135,,,,135,135,,,,135,,135", "135,135,135,135,135,135,,,,,,135,135,135,135,135,135,135,,,135,,,,,", "135,135,135,135,135,135,135,135,135,135,135,135,,135,135,135,,135,135", "135,135,135,548,548,548,548,548,548,548,,,548,548,,,,,,548,548,,135", ",,135,,,135,135,,,135,,135,548,,548,135,548,548,,548,548,548,548,548", "135,548,,,,135,135,135,135,,135,135,135,135,,,,,135,135,,,,,,,135,,135", "135,135,,,135,135,218,218,218,218,218,218,,,,218,218,,,,218,,218,218", "218,218,218,218,218,,,,,,218,218,218,218,218,218,218,,,218,,,,,,218", "218,218,218,218,218,218,218,218,218,218,218,,218,218,218,,218,218,218", "218,218,545,545,545,545,545,545,545,,,545,545,,,,,,545,545,,218,,,218", ",,218,218,,,218,,218,545,,545,218,545,545,,545,545,545,545,545,218,545", ",,,218,218,218,218,,218,218,218,218,,,,,218,218,,,,,,,218,,218,218,218", ",,218,218,846,846,846,846,846,846,,,,846,846,,,,846,,846,846,846,846", "846,846,846,,,,,,846,846,846,846,846,846,846,,,846,,,,,,846,846,846", "846,846,846,846,846,846,846,846,846,,846,846,846,,846,846,846,846,846", "544,544,544,544,544,544,544,,,544,544,,,,,,544,544,,846,,,846,,,846", "846,,,846,,846,544,,544,846,544,544,,544,544,544,544,544,846,544,,,", "846,846,846,846,,846,846,846,846,,,,,846,846,,,,,,,846,,846,846,846", ",,846,846,857,857,857,857,857,857,,,,857,857,,,,857,,857,857,857,857", "857,857,857,,,,,,857,857,857,857,857,857,857,,,857,,,,,,857,857,857", "857,857,857,857,857,857,857,857,857,,857,857,857,,857,857,857,857,857", "543,543,543,543,543,543,543,,,543,543,,,,,,543,543,,857,,,857,,,857", "857,,,857,,857,543,,543,857,543,543,,543,543,543,543,543,857,543,,,", "857,857,857,857,,857,857,857,857,,,,,857,857,,,,,,,857,,857,857,857", ",,857,857,388,388,388,388,388,388,,,,388,388,,,,388,,388,388,388,388", "388,388,388,,,,,,388,388,388,388,388,388,388,,,388,,,,,,388,388,388", "388,388,388,388,388,388,388,388,388,,388,388,388,,388,388,388,388,388", "542,542,542,542,542,542,542,,,542,542,,,,,,542,542,,388,,,388,,,388", "388,,,388,,388,542,,542,388,542,542,,542,542,542,542,542,388,542,,,", "388,388,388,388,,388,388,388,388,,,,,388,388,,,,,,,388,,388,388,388", ",,388,388,991,991,991,991,991,991,,,,991,991,,,,991,,991,991,991,991", "991,991,991,,,,,,991,991,991,991,991,991,991,,,991,,,,,,991,991,991", "991,991,991,991,991,991,991,991,991,,991,991,991,,991,991,991,991,991", "541,541,541,541,541,541,541,,,541,541,,,,,,541,541,,991,,,991,,,991", "991,,,991,,991,541,,541,991,541,541,,541,541,541,541,541,991,541,,,", "991,991,991,991,,991,991,991,991,,,,,991,991,,,,920,920,920,991,920", "991,991,991,920,920,991,991,,920,,920,920,920,920,920,920,920,,,,,,920", "920,920,920,920,920,920,,,920,,,,,,,920,,,920,920,920,920,920,920,920", "920,,920,920,920,,920,920,920,920,920,540,540,540,540,540,540,540,,", "540,540,,,,,,540,540,,920,,,920,,,920,920,,,920,,,540,,540,920,540,540", ",540,540,540,540,540,920,540,,,,920,920,920,920,,920,920,920,920,,,", ",920,920,,,,921,921,921,920,921,920,920,920,921,921,920,920,,921,,921", "921,921,921,921,921,921,,,,,,921,921,921,921,921,921,921,,,921,,,,,", ",921,,,921,921,921,921,921,921,921,921,,921,921,921,,921,921,921,921", "921,530,530,530,530,530,530,530,530,530,530,530,,530,530,,,530,530,", "921,,,921,,,921,921,,,921,,,530,,530,921,530,530,,530,530,530,530,530", "921,530,,,,921,921,921,921,,921,921,921,921,,,,,921,921,,,,922,922,922", "921,922,921,921,921,922,922,921,921,,922,,922,922,922,922,922,922,922", ",,,,,922,922,922,922,922,922,922,,,922,,,,,,,922,,,922,922,922,922,922", "922,922,922,,922,922,922,,922,922,922,922,922,538,,,,,,,,,,,,,,,,538", "538,,922,,,922,,,922,922,,,922,,,538,,538,922,538,538,,538,538,,,,922", ",,,,922,922,922,922,,922,922,922,922,,,,,922,922,,,,733,733,733,922", "733,922,922,922,733,733,922,922,,733,,733,733,733,733,733,733,733,,", ",,,733,733,733,733,733,733,733,,,733,,,,,,,733,,,733,733,733,733,733", "733,733,733,,733,733,733,,733,733,733,733,733,539,,,,,,,,,,,,,,,,539", "539,,733,,,733,,,733,733,,,733,,,539,,,733,539,539,,539,539,,,,733,", ",,,733,733,733,733,,733,733,733,733,,,,,733,733,,,,732,732,732,733,732", "733,733,733,732,732,733,733,,732,,732,732,732,732,732,732,732,,,,,,732", "732,732,732,732,732,732,,,732,,,,,,,732,,,732,732,732,732,732,732,732", "732,,732,732,732,,732,732,732,732,732,537,,,,,,,,,,,,,,,,537,537,,732", ",,732,,,732,732,,,732,,,537,,537,732,537,537,,537,537,,,,732,,,,,732", "732,732,732,,732,732,732,732,,,,,732,732,,,,,,,732,,732,732,732,,,732", "732,333,333,333,333,333,,,,333,333,,,,333,,333,333,333,333,333,333,333", ",,,,,333,333,333,333,333,333,333,,,333,,,,,,333,333,,333,333,333,333", "333,333,333,333,333,,333,333,333,,333,333,333,333,333,,,,,,,,,,,,,,", ",,,,,333,,,333,,,333,333,,,333,,333,,,,333,,,,,,,,,333,,,,,333,333,333", "333,,333,333,333,333,,,,,333,333,,,,265,265,265,333,265,333,333,333", "265,265,333,333,,265,,265,265,265,265,265,265,265,,,,,,265,265,265,265", "265,265,265,,,265,,,,,,,265,,,265,265,265,265,265,265,265,265,,265,265", "265,,265,265,265,265,265,,,,,,,,,,,,,,,,,,,,265,,,265,,,265,265,,,265", ",,,,,265,,,,,,,,,265,,,,,265,265,265,265,,265,265,265,265,,,,,265,265", ",,,264,264,264,265,264,265,265,265,264,264,265,265,,264,,264,264,264", "264,264,264,264,,,,,,264,264,264,264,264,264,264,,,264,,,,,,,264,,,264", "264,264,264,264,264,264,264,,264,264,264,,264,264,264,264,264,,,,,,", ",,,,,,,,,,,,,264,,,264,,,264,264,,,264,,,,,,264,,,,,,,,,264,,,,,264", "264,264,264,,264,264,264,264,,,,,264,264,,,,263,263,263,264,263,264", "264,264,263,263,264,264,,263,,263,263,263,263,263,263,263,,,,,,263,263", "263,263,263,263,263,,,263,,,,,,,263,,,263,263,263,263,263,263,263,263", ",263,263,263,,263,263,263,263,263,,,,,,,,,,,,,,,,,,,,263,,,263,,,263", "263,,,263,,,,,,263,,,,,,,,,263,,,,,263,263,263,263,,263,263,263,263", ",,,,263,263,,,,262,262,262,263,262,263,263,263,262,262,263,263,,262", ",262,262,262,262,262,262,262,,,,,,262,262,262,262,262,262,262,,,262", ",,,,,,262,,,262,262,262,262,262,262,262,262,,262,262,262,,262,262,262", "262,262,,,,,,,,,,,,,,,,,,,,262,,,262,,,262,262,,,262,,,,,,262,,,,,,", ",,262,,,,,262,262,262,262,,262,262,262,262,,,,,262,262,,,,261,261,261", "262,261,262,262,262,261,261,262,262,,261,,261,261,261,261,261,261,261", ",,,,,261,261,261,261,261,261,261,,,261,,,,,,,261,,,261,261,261,261,261", "261,261,261,,261,261,261,,261,261,261,261,261,,,,,,,,,,,,,,,,,,,,261", ",,261,,,261,261,,,261,,,,,,261,,,,,,,,,261,,,,,261,261,261,261,,261", "261,261,261,,,,,261,261,,,,708,708,708,261,708,261,261,261,708,708,261", "261,,708,,708,708,708,708,708,708,708,,,,,,708,708,708,708,708,708,708", ",,708,,,,,,,708,,,708,708,708,708,708,708,708,708,,708,708,708,,708", "708,708,708,708,,,,,,,,,,,,,,,,,,,,708,,,708,,,708,708,,,708,,,,,,708", ",,,,,,,,708,,,,,708,708,708,708,,708,708,708,708,,,,,708,708,,,,260", "260,260,708,260,708,708,708,260,260,708,708,,260,,260,260,260,260,260", "260,260,,,,,,260,260,260,260,260,260,260,,,260,,,,,,,260,,,260,260,260", "260,260,260,260,260,,260,260,260,,260,260,260,260,260,,,,,,,,,,,,,,", ",,,,,260,,,260,,,260,260,,,260,,,,,,260,,,,,,,,,260,,,,,260,260,260", "260,,260,260,260,260,,,,,260,260,,,,694,694,694,260,694,260,260,260", "694,694,260,260,,694,,694,694,694,694,694,694,694,,,,,,694,694,694,694", "694,694,694,,,694,,,,,,,694,,,694,694,694,694,694,694,694,694,,694,694", "694,,694,694,694,694,694,,,,,,,,,,,,,,,,,,,,694,,,694,,,694,694,,,694", ",694,,,,694,,,,,,,,,694,,,,,694,694,694,694,,694,694,694,694,,,,,694", "694,,,,259,259,259,694,259,694,694,694,259,259,694,694,,259,,259,259", "259,259,259,259,259,,,,,,259,259,259,259,259,259,259,,,259,,,,,,,259", ",,259,259,259,259,259,259,259,259,,259,259,259,,259,259,259,259,259", ",,,,,,,,,,,,,,,,,,,259,,,259,,,259,259,,,259,,,,,,259,,,,,,,,,259,,", ",,259,259,259,259,,259,259,259,259,,,,,259,259,,,,258,258,258,259,258", "259,259,259,258,258,259,259,,258,,258,258,258,258,258,258,258,,,,,,258", "258,258,258,258,258,258,,,258,,,,,,,258,,,258,258,258,258,258,258,258", "258,,258,258,258,,258,258,258,258,258,,,,,,,,,,,,,,,,,,,,258,,,258,", ",258,258,,,258,,,,,,258,,,,,,,,,258,,,,,258,258,258,258,,258,258,258", "258,,,,,258,258,,,,257,257,257,258,257,258,258,258,257,257,258,258,", "257,,257,257,257,257,257,257,257,,,,,,257,257,257,257,257,257,257,,", "257,,,,,,,257,,,257,257,257,257,257,257,257,257,,257,257,257,,257,257", "257,257,257,,,,,,,,,,,,,,,,,,,,257,,,257,,,257,257,,,257,,,,,,257,,", ",,,,,,257,,,,,257,257,257,257,,257,257,257,257,,,,,257,257,,,,688,688", "688,257,688,257,257,257,688,688,257,257,,688,,688,688,688,688,688,688", "688,,,,,,688,688,688,688,688,688,688,,,688,,,,,,,688,,,688,688,688,688", "688,688,688,688,,688,688,688,,688,688,688,688,688,,,,,,,,,,,,,,,,,,", ",688,,,688,,,688,688,,,688,,,,,,688,,,,,,,,,688,,,,,688,688,688,688", ",688,688,688,688,,,,,688,688,,,,687,687,687,688,687,688,688,688,687", "687,688,688,,687,,687,687,687,687,687,687,687,,,,,,687,687,687,687,687", "687,687,,,687,,,,,,,687,,,687,687,687,687,687,687,687,687,,687,687,687", ",687,687,687,687,687,,,,,,,,,,,,,,,,,,,,687,,,687,,,687,687,,,687,,", ",,,687,,,,,,,,,687,,,,,687,687,687,687,,687,687,687,687,,,,,687,687", ",,,,,,687,,687,687,687,32,,687,687,,,,32,32,32,,,32,32,32,,32,,,,,,", ",32,32,32,32,,,,,,,,,32,32,,32,32,32,32,32,,,,,,,,,,,,,,,,,,,,,,,32", "32,32,32,32,32,32,32,32,32,32,32,32,32,,,32,32,32,,,32,,32,32,,,32,32", ",32,,32,,32,,32,32,,32,32,32,32,32,,32,32,32,,,,,,,,,,,,,,32,,,32,32", ",32,,32,683,683,683,,683,,32,,683,683,,,,683,,683,683,683,683,683,683", "683,,,,,,683,683,683,683,683,683,683,,,683,,,,,,,683,,,683,683,683,683", "683,683,683,683,,683,683,683,,683,683,683,683,683,,,,,,,,,,,,,,,,,,", ",683,,,683,,,683,683,,,683,,,,,,683,,,,,,,,,683,,,,,683,683,683,683", ",683,683,683,683,,,,,683,683,,,,682,682,682,683,682,683,683,683,682", "682,683,683,,682,,682,682,682,682,682,682,682,,,,,,682,682,682,682,682", "682,682,,,682,,,,,,,682,,,682,682,682,682,682,682,682,682,,682,682,682", ",682,682,682,682,682,,,,,,,,,,,,,,,,,,,,682,,,682,,,682,682,,,682,,", ",,,682,,,,,,,,,682,,,,,682,682,682,682,,682,682,682,682,,,,,682,682", ",,,681,681,681,682,681,682,682,682,681,681,682,682,,681,,681,681,681", "681,681,681,681,,,,,,681,681,681,681,681,681,681,,,681,,,,,,,681,,,681", "681,681,681,681,681,681,681,681,681,681,681,,681,681,681,681,681,,,", ",,,,,,,,,,,,,,,,681,,,681,,,681,681,,,681,,,,681,,681,,,681,,,,,,681", ",,,,681,681,681,681,,681,681,681,681,,,,,681,681,,,,956,956,956,681", "956,681,681,681,956,956,681,681,,956,,956,956,956,956,956,956,956,,", ",,,956,956,956,956,956,956,956,,,956,,,,,,,956,,,956,956,956,956,956", "956,956,956,,956,956,956,,956,956,956,956,956,,,,,,,,,,,,,,,,,,,,956", ",,956,,,956,956,,,956,,,,,,956,,,,,,,,,956,,,,,956,956,956,956,,956", "956,956,956,,,,,956,956,,,,962,962,962,956,962,956,956,956,962,962,956", "956,,962,,962,962,962,962,962,962,962,,,,,,962,962,962,962,962,962,962", ",,962,,,,,,,962,,,962,962,962,962,962,962,962,962,,962,962,962,,962", "962,962,962,962,,,,,,,,,,,,,,,,,,,,962,,,962,,,962,962,,,962,,,,,,962", ",,,,,,,,962,,,,,962,962,962,962,,962,962,962,962,,,,,962,962,,,,,,,962", ",962,962,962,33,,962,962,,,,33,33,33,,,33,33,33,,33,,,,,,,,33,,33,33", ",,,,,,,,33,33,,33,33,33,33,33,,,,,,,,,,,,,,,,,,,,,,,33,33,33,33,33,33", "33,33,33,33,33,33,33,33,,,33,33,33,,,33,,33,33,,,33,33,,33,,33,,33,", "33,33,,33,33,33,33,33,,33,,33,,,,,,,,,,,,,,33,,,33,33,,33,,33,34,34", "34,,34,,33,,34,34,,,,34,,34,34,34,34,34,34,34,,,,,,34,34,34,34,34,34", "34,,,34,,,,,,,34,,,34,34,34,34,34,34,34,34,34,34,34,34,,34,34,34,34", "34,,,,,,,,,,,,,,,,,,,,34,,,34,,,34,34,,,34,,34,,34,,34,,,34,,,,,,34", ",,,,34,34,34,34,,34,34,34,34,,,,,34,34,,,,680,680,680,34,680,34,34,34", "680,680,34,34,,680,,680,680,680,680,680,680,680,,,,,,680,680,680,680", "680,680,680,,,680,,,,,,,680,,,680,680,680,680,680,680,680,680,680,680", "680,680,,680,680,680,680,680,,,,,,,,,,,,,,,,,,,,680,,,680,,,680,680", ",,680,,680,,680,,680,,,680,,,,,,680,,,,,680,680,680,680,,680,680,680", "680,,,,,680,680,,,,677,677,677,680,677,680,680,680,677,677,680,680,", "677,,677,677,677,677,677,677,677,,,,,,677,677,677,677,677,677,677,,", "677,,,,,,,677,,,677,677,677,677,677,677,677,677,,677,677,677,,677,677", "677,677,677,,,,,,,,,,,,,,,,,,,,677,,,677,,,677,677,,,677,,,,,,677,,", ",,,,,,677,,,,,677,677,677,677,,677,677,677,677,,,,,677,677,,,,,,,677", ",677,677,677,,,677,677,676,676,676,676,676,,,,676,676,,,,676,,676,676", "676,676,676,676,676,,,,,,676,676,676,676,676,676,676,,,676,,,,,,676", "676,,676,676,676,676,676,676,676,676,676,,676,676,676,,676,676,676,676", "676,,,,,,,,,,,,,,,,,,,,676,,,676,,,676,676,,,676,,676,,,,676,,,,,,,", ",676,,,,,676,676,676,676,,676,676,676,676,,,,,676,676,,,,985,985,985", "676,985,676,676,676,985,985,676,676,,985,,985,985,985,985,985,985,985", ",,,,,985,985,985,985,985,985,985,,,985,,,,,,,985,,,985,985,985,985,985", "985,985,985,,985,985,985,,985,985,985,985,985,,,,,,,,,,,,,,,,,,,,985", ",,985,,,985,985,,,985,,,,,,985,,,,,,,,,985,,,,,985,985,985,985,,985", "985,985,985,,,,,985,985,,,,673,673,673,985,673,985,985,985,673,673,985", "985,,673,,673,673,673,673,673,673,673,,,,,,673,673,673,673,673,673,673", ",,673,,,,,,,673,,,673,673,673,673,673,673,673,673,673,673,673,673,,673", "673,673,673,673,,,,,,,,,,,,,,,,,,,,673,,,673,,,673,673,,,673,,673,,673", ",673,,,673,,,,,,673,,,,,673,673,673,673,,673,673,673,673,,,,,673,673", ",,,672,672,672,673,672,673,673,673,672,672,673,673,,672,,672,672,672", "672,672,672,672,,,,,,672,672,672,672,672,672,672,,,672,,,,,,,672,,,672", "672,672,672,672,672,672,672,,672,672,672,,672,672,672,672,672,,,,,,", ",,,,,,,,,,,,,672,,,672,,,672,672,,,672,,,,,,672,,,,,,,,,672,,,,,672", "672,672,672,,672,672,672,672,,,,,672,672,,,,990,990,990,672,990,672", "672,672,990,990,672,672,,990,,990,990,990,990,990,990,990,,,,,,990,990", "990,990,990,990,990,,,990,,,,,,,990,,,990,990,990,990,990,990,990,990", ",990,990,990,,990,990,990,990,990,,,,,,,,,,,,,,,,,,,,990,,,990,,,990", "990,,,990,,990,,,,990,,,,,,,,,990,,,,,990,990,990,990,,990,990,990,990", ",,,,990,990,,,,671,671,671,990,671,990,990,990,671,671,990,990,,671", ",671,671,671,671,671,671,671,,,,,,671,671,671,671,671,671,671,,,671", ",,,,,,671,,,671,671,671,671,671,671,671,671,,671,671,671,,671,671,671", "671,671,,,,,,,,,,,,,,,,,,,,671,,,671,,,671,671,,,671,,671,,,,671,,,", ",,,,,671,,,,,671,671,671,671,,671,671,671,671,,,,,671,671,,,,,,,671", ",671,671,671,,,671,671,669,669,669,669,669,,,,669,669,,,,669,,669,669", "669,669,669,669,669,,,,,,669,669,669,669,669,669,669,,,669,,,,,,669", "669,,669,669,669,669,669,669,669,669,669,,669,669,669,,669,669,669,669", "669,,,,,,,,,,,,,,,,,,,,669,,,669,,,669,669,,,669,,669,,,,669,,,,,,,", ",669,,,,,669,669,669,669,,669,669,669,669,,,,,669,669,,,,35,35,35,669", "35,669,669,669,35,35,669,669,,35,,35,35,35,35,35,35,35,,,,,,35,35,35", "35,35,35,35,,,35,,,,,,,35,,,35,35,35,35,35,35,35,35,35,35,35,35,,35", "35,35,35,35,,,,,,,,,,,,,,,,,,,,35,,,35,,,35,35,,,35,,35,,35,,35,,,35", ",,,,,35,,,,,35,35,35,35,,35,35,35,35,,,,,35,35,,,,250,250,250,35,250", "35,35,35,250,250,35,35,,250,,250,250,250,250,250,250,250,,,,,,250,250", "250,250,250,250,250,,,250,,,,,,,250,,,250,250,250,250,250,250,250,250", ",250,250,250,,250,250,250,250,250,,,,,,,,,,,,,,,,,,,,250,,,250,,,250", "250,,,250,,,,,,250,,,,,,,,,250,,,,,250,250,250,250,,250,250,250,250", ",,,,250,250,,,,36,36,36,250,36,250,250,250,36,36,250,250,,36,,36,36", "36,36,36,36,36,,,,,,36,36,36,36,36,36,36,,,36,,,,,,,36,,,36,36,36,36", "36,36,36,36,36,36,36,36,,36,36,36,36,36,,,,,,,,,,,,,,,,,,,,36,,,36,", ",36,36,,,36,,36,,36,,36,,,36,,,,,,36,,,,,36,36,36,36,,36,36,36,36,,", ",,36,36,,,,638,638,638,36,638,36,36,36,638,638,36,36,,638,,638,638,638", "638,638,638,638,,,,,,638,638,638,638,638,638,638,,,638,,,,,,,638,,,638", "638,638,638,638,638,638,638,638,638,638,638,,638,638,638,638,638,,,", ",,,,,,,,,,,,,,,,638,,,638,,,638,638,,,638,,638,,638,,638,,,638,,,,,", "638,,,,,638,638,638,638,,638,638,638,638,,,,,638,638,,,,1009,1009,1009", "638,1009,638,638,638,1009,1009,638,638,,1009,,1009,1009,1009,1009,1009", "1009,1009,,,,,,1009,1009,1009,1009,1009,1009,1009,,,1009,,,,,,,1009", ",,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,,1009", "1009,1009,1009,1009,,,,,,,,,,,,,,,,,,,,1009,,,1009,,,1009,1009,,,1009", ",,,1009,,1009,,,1009,,,,,,1009,,,,,1009,1009,1009,1009,,1009,1009,1009", "1009,,,,,1009,1009,,,,628,628,628,1009,628,1009,1009,1009,628,628,1009", "1009,,628,,628,628,628,628,628,628,628,,,,,,628,628,628,628,628,628", "628,,,628,,,,,,,628,,,628,628,628,628,628,628,628,628,628,628,628,628", ",628,628,628,628,628,,,,,,,,,,,,,,,,,,,,628,,,628,,,628,628,,,628,,628", ",628,,628,,,628,,,,,,628,,,,,628,628,628,628,,628,628,628,628,,,,,628", "628,,,,627,627,627,628,627,628,628,628,627,627,628,628,,627,,627,627", "627,627,627,627,627,,,,,,627,627,627,627,627,627,627,,,627,,,,,,,627", ",,627,627,627,627,627,627,627,627,,627,627,627,,627,627,627,627,627", ",,,,,,,,,,,,,,,,,,,627,,,627,,,627,627,,,627,,627,,,,627,,,,,,,,,627", ",,,,627,627,627,627,,627,627,627,627,,,,,627,627,,,,818,818,818,627", "818,627,627,627,818,818,627,627,,818,,818,818,818,818,818,818,818,,", ",,,818,818,818,818,818,818,818,,,818,,,,,,,818,,,818,818,818,818,818", "818,818,818,,818,818,818,,818,818,818,818,818,,,,,,,,,,,,,,,,,,,,818", ",,818,,,818,818,,,818,,,,,,818,,,,,,,,,818,,,,,818,818,818,818,,818", "818,818,818,,,,,818,818,,,,614,614,614,818,614,818,818,818,614,614,818", "818,,614,,614,614,614,614,614,614,614,,,,,,614,614,614,614,614,614,614", ",,614,,,,,,,614,,,614,614,614,614,614,614,614,614,614,614,614,614,,614", "614,614,614,614,,,,,,,,,,,,,,,,,,,,614,,,614,,,614,614,,,614,,,,,,614", ",,614,,,,,,614,,,,,614,614,614,614,,614,614,614,614,,,,,614,614,,,,611", "611,611,614,611,614,614,614,611,611,614,614,,611,,611,611,611,611,611", "611,611,,,,,,611,611,611,611,611,611,611,,,611,,,,,,,611,,,611,611,611", "611,611,611,611,611,611,611,611,611,,611,611,611,611,611,,,,,,,,,,,", ",,,,,,,,611,,,611,,,611,611,,,611,,611,,,,611,,,611,,,,,,611,,,,,611", "611,611,611,,611,611,611,611,,,,,611,611,,,,239,239,239,611,239,611", "611,611,239,239,611,611,,239,,239,239,239,239,239,239,239,,,,,,239,239", "239,239,239,239,239,,,239,,,,,,,239,,,239,239,239,239,239,239,239,239", ",239,239,239,,239,239,239,239,239,,,,,,,,,,,,,,,,,,,,239,,,239,,,239", "239,,,239,,,,,,239,,,,,,,,,239,,,,,239,239,239,239,,239,239,239,239", ",,,,239,239,239,,,605,605,605,239,605,239,239,239,605,605,239,239,,605", ",605,605,605,605,605,605,605,,,,,,605,605,605,605,605,605,605,,,605", ",,,,,,605,,,605,605,605,605,605,605,605,605,,605,605,605,,605,605,605", "605,605,,,,,,,,,,,,,,,,,,,,605,,,605,,,605,605,,,605,,,,,,605,,,,,,", ",,605,,,,,605,605,605,605,,605,605,605,605,,,,,605,605,,,,1035,1035", "1035,605,1035,605,605,605,1035,1035,605,605,,1035,,1035,1035,1035,1035", "1035,1035,1035,,,,,,1035,1035,1035,1035,1035,1035,1035,,,1035,,,,,,", "1035,,,1035,1035,1035,1035,1035,1035,1035,1035,,1035,1035,1035,,1035", "1035,1035,1035,1035,,,,,,,,,,,,,,,,,,,,1035,,,1035,,,1035,1035,,,1035", ",,,,,1035,,,,,,,,,1035,,,,,1035,1035,1035,1035,,1035,1035,1035,1035", ",,,,1035,1035,,,,603,603,603,1035,603,1035,1035,1035,603,603,1035,1035", ",603,,603,603,603,603,603,603,603,,,,,,603,603,603,603,603,603,603,", ",603,,,,,,,603,,,603,603,603,603,603,603,603,603,,603,603,603,,603,603", "603,603,603,,,,,,,,,,,,,,,,,,,,603,,,603,,,603,603,,,603,,,,,,603,,", ",,,,,,603,,,,,603,603,603,603,,603,603,603,603,,,,,603,603,,,,600,600", "600,603,600,603,603,603,600,600,603,603,,600,,600,600,600,600,600,600", "600,,,,,,600,600,600,600,600,600,600,,,600,,,,,,,600,,,600,600,600,600", "600,600,600,600,,600,600,600,,600,600,600,600,600,,,,,,,,,,,,,,,,,,", ",600,,,600,,,600,600,,,600,,,,,,600,,,,,,,,,600,,,,,600,600,600,600", ",600,600,600,600,,,,,600,600,,,,238,238,238,600,238,600,600,600,238", "238,600,600,,238,,238,238,238,238,238,238,238,,,,,,238,238,238,238,238", "238,238,,,238,,,,,,,238,,,238,238,238,238,238,238,238,238,,238,238,238", ",238,238,238,238,238,,,,,,,,,,,,,,,,,,,,238,,,238,,,238,238,,,238,,", ",,,238,,,,,,,,,238,,,,,238,238,238,238,,238,238,238,238,,,,,238,238", ",,,237,237,237,238,237,238,238,238,237,237,238,238,,237,,237,237,237", "237,237,237,237,,,,,,237,237,237,237,237,237,237,,,237,,,,,,,237,,,237", "237,237,237,237,237,237,237,,237,237,237,,237,237,237,237,237,,,,,,", ",,,,,,,,,,,,,237,,,237,,,237,237,,,237,,,,,,237,,,,,,,,,237,,,,,237", "237,237,237,,237,237,237,237,,,,,237,237,,,,590,590,590,237,590,237", "237,237,590,590,237,237,,590,,590,590,590,590,590,590,590,,,,,,590,590", "590,590,590,590,590,,,590,,,,,,,590,,,590,590,590,590,590,590,590,590", "590,590,590,590,,590,590,590,590,590,,,,,,,,,,,,,,,,,,,,590,,,590,,", "590,590,,,590,,590,,590,,590,,,590,,,,,,590,,,,,590,590,590,590,,590", "590,590,590,,,,,590,590,,,,,,,590,,590,590,590,,,590,590,580,580,580", "580,580,,,,580,580,,,,580,,580,580,580,580,580,580,580,,,,,,580,580", "580,580,580,580,580,,,580,,,,,,580,580,580,580,580,580,580,580,580,580", "580,580,,580,580,580,,580,580,580,580,580,,,,,,,,,,,,,,,,,,,,580,,,580", ",,580,580,,,580,,580,,,,580,,,,,,,,,580,,,,,580,580,580,580,,580,580", "580,580,,,,,580,580,,,,,,580,580,,580,580,580,,,580,580,574,574,574", ",574,,,,574,574,,,,574,,574,574,574,574,574,574,574,,,,,,574,574,574", "574,574,574,574,,,574,,,,,,,574,,,574,574,574,574,574,574,574,574,,574", "574,574,,574,574,574,574,574,,,,,,,,,,,,,,,,,,,,574,,,574,,,574,574", ",,574,,,,,,574,,,,,,,,,574,,,,,574,574,574,574,,574,574,574,574,,,,", "574,574,,,,369,369,369,574,369,574,574,574,369,369,574,574,,369,,369", "369,369,369,369,369,369,,,,,,369,369,369,369,369,369,369,,,369,,,,,", ",369,,,369,369,369,369,369,369,369,369,,369,369,369,,369,369,369,369", "369,,,,,,,,,,,,,,,,,,,,369,,,369,,,369,369,,,369,,,,,,369,,,,,,,,,369", ",,,,369,369,369,369,,369,369,369,369,,,,,369,369,,,,46,46,46,369,46", "369,369,369,46,46,369,369,,46,,46,46,46,46,46,46,46,,,,,,46,46,46,46", "46,46,46,,,46,,,,,,,46,,,46,46,46,46,46,46,46,46,,46,46,46,,46,46,46", "46,46,,,,,,,,,,,,,,,,,,,,46,,,46,,,46,46,,,46,,,,,,46,,,,,,,,,46,,,", ",46,46,46,46,,46,46,46,46,,,,,46,46,,,,572,572,572,46,572,46,46,46,572", "572,46,46,,572,,572,572,572,572,572,572,572,,,,,,572,572,572,572,572", "572,572,,,572,,,,,,,572,,,572,572,572,572,572,572,572,572,572,572,572", "572,,572,572,572,572,572,,,,,,,,,,,,,,,,,,,,572,,,572,,,572,572,,,572", ",,,572,,572,,,572,,,,,,572,,,,,572,572,572,572,,572,572,572,572,,,,", "572,572,,,,570,570,570,572,570,572,572,572,570,570,572,572,,570,,570", "570,570,570,570,570,570,,,,,,570,570,570,570,570,570,570,,,570,,,,,", ",570,,,570,570,570,570,570,570,570,570,570,570,570,570,,570,570,570", "570,570,,,,,,,,,,,,,,,,,,,,570,,,570,,,570,570,,,570,,570,,570,,570", ",,570,,,,,,570,,,,,570,570,570,570,,570,570,570,570,,,,,570,570,,,,47", "47,47,570,47,570,570,570,47,47,570,570,,47,,47,47,47,47,47,47,47,,,", ",,47,47,47,47,47,47,47,,,47,,,,,,,47,,,47,47,47,47,47,47,47,47,,47,47", "47,,47,47,47,47,47,,,,,,,,,,,,,,,,,,,,47,,,47,,,47,47,,,47,,,,,,47,", ",,,,,,,47,,,,,47,47,47,47,,47,47,47,47,,,,,47,47,,,,560,560,560,47,560", "47,47,47,560,560,47,47,,560,,560,560,560,560,560,560,560,,,,,,560,560", "560,560,560,560,560,,,560,,,,,,,560,,,560,560,560,560,560,560,560,560", ",560,560,560,,560,560,560,560,560,,,,,,,,,,,,,,,,,,,,560,,,560,,,560", "560,,,560,,,,,,560,,,,,,,,,560,,,,,560,560,560,560,,560,560,560,560", ",,,,560,560,,,,49,49,49,560,49,560,560,560,49,49,560,560,,49,,49,49", "49,49,49,49,49,,,,,,49,49,49,49,49,49,49,,,49,,,,,,,49,,,49,49,49,49", "49,49,49,49,,49,49,49,,49,49,49,49,49,,,,,,,,,,,,,,,,,,,,49,,,49,,,49", "49,,,49,,,,,,49,,,,,,,,,49,,,,,49,49,49,49,,49,49,49,49,,,,,49,49,,", ",,,,49,,49,49,49,555,,49,49,,,,555,555,555,,,555,555,555,703,555,703", "703,703,703,703,,,555,555,555,,,,703,,,,,,555,555,,555,555,555,555,555", ",701,,701,701,701,701,701,703,,,,,,,,701,703,703,703,703,,,,703,,1140", ",1140,1140,1140,1140,1140,555,,,,,701,,555,1140,,,,555,555,701,701,701", "701,,,,701,,,,,,,,,1140,703,,,,555,555,,,,,1140,1140,,,,1140,,,,555", ",,555,,283,283,283,555,283,,701,,283,283,555,,,283,,283,283,283,283", "283,283,283,,,,,,283,283,283,283,283,283,283,,,283,,,,,,,283,,,283,283", "283,283,283,283,283,283,,283,283,283,,283,283,283,283,283,,,,,,,,,,", ",,,,,,,,,283,,,283,,,283,283,,,283,,,,,,283,,,,,,,,,283,,,,,283,283", "283,283,,283,283,283,283,,,,,283,283,,,,224,224,224,283,224,283,283", "283,224,224,283,283,,224,,224,224,224,224,224,224,224,,,,,,224,224,224", "224,224,224,224,,,224,,,,,,,224,,,224,224,224,224,224,224,224,224,224", "224,224,224,,224,224,224,224,224,,,,,,,,,,,,,,,,,,,,224,,,224,,,224", "224,,,224,,224,,224,,224,,,224,,,,,,224,,,,,224,224,224,224,,224,224", "224,224,,,,,224,224,,,,223,223,223,224,223,224,224,224,223,223,224,224", ",223,,223,223,223,223,223,223,223,,,,,,223,223,223,223,223,223,223,", ",223,,,,,,,223,,,223,223,223,223,223,223,223,223,,223,223,223,,223,223", "223,223,223,,,,,,,,,,,,,,,,,,,,223,,,223,,,223,223,,,223,,,,,,223,,", ",,,,,,223,,,,,223,223,223,223,,223,223,223,223,,,,,223,223,,,,50,50", "50,223,50,223,223,223,50,50,223,223,,50,,50,50,50,50,50,50,50,,,,,,50", "50,50,50,50,50,50,,,50,,,,,,,50,,,50,50,50,50,50,50,50,50,,50,50,50", ",50,50,50,50,50,,,,,,,,,,,,,,,,,,,,50,,,50,,,50,50,,,50,,,,,,50,,,,", ",,,,50,,,,,50,50,50,50,,50,50,50,50,,,,,50,50,,,,222,222,222,50,222", "50,50,50,222,222,50,50,,222,,222,222,222,222,222,222,222,,,,,,222,222", "222,222,222,222,222,,,222,,,,,,,222,,,222,222,222,222,222,222,222,222", ",222,222,222,,222,222,222,222,222,,,,,,,,,,,,,,,,,,,,222,,,222,,,222", "222,,,222,,,,,,222,,,,,,,,,222,,,,,222,222,222,222,,222,222,222,222", ",,,,222,222,,,,72,72,72,222,72,222,222,222,72,72,222,222,,72,,72,72", "72,72,72,72,72,,,,,,72,72,72,72,72,72,72,,,72,,,,,,,72,,,72,72,72,72", "72,72,72,72,,72,72,72,,72,72,72,72,72,,,,,,,,,,,,,,,,,,,,72,,,72,,,72", "72,,,72,,,,,,72,,,,,,,,,72,,,,,72,72,72,72,,72,72,72,72,,,,,72,72,,", ",71,71,71,72,71,72,72,72,71,71,72,72,,71,,71,71,71,71,71,71,71,,,,,", "71,71,71,71,71,71,71,,,71,,,,,,,71,,,71,71,71,71,71,71,71,71,,71,71", "71,,71,71,71,71,71,,,,,,,,,,,,,,,,,,,,71,,,71,,,71,71,,,71,,,,,,71,", ",,,,,,,71,,,,,71,71,71,71,,71,71,71,71,,,,,71,71,,,,436,436,436,71,436", "71,71,71,436,436,71,71,,436,,436,436,436,436,436,436,436,,,,,,436,436", "436,436,436,436,436,,,436,,,,,,,436,,,436,436,436,436,436,436,436,436", ",436,436,436,,436,436,436,436,436,,,,,,,,,,,,,,,,,,,,436,,,436,,,436", "436,,,436,,,,,,436,,,,,,,,,436,,,,,436,436,436,436,,436,436,436,436", ",,,,436,436,,,,68,68,68,436,68,436,436,436,68,68,436,436,,68,,68,68", "68,68,68,68,68,,,,,,68,68,68,68,68,68,68,,,68,,,,,,,68,,,68,68,68,68", "68,68,68,68,68,68,68,68,,68,68,68,68,68,,,,,,,,,,,,,,,,,,,,68,,,68,", ",68,68,,,68,,,,,,68,,,68,,,,,,68,,,,,68,68,68,68,,68,68,68,68,,,,,68", "68,,,,407,407,407,68,407,68,68,68,407,407,68,68,,407,,407,407,407,407", "407,407,407,,,,,,407,407,407,407,407,407,407,,,407,,,,,,,407,,,407,407", "407,407,407,407,407,407,,407,407,407,,407,407,407,407,407,,,,,,,,,,", ",,,,,,,,,407,,,407,,,407,407,,,407,,,,,,407,,,,,,,,,407,,,,,407,407", "407,407,,407,407,407,407,,,,,407,407,,,,847,847,847,407,847,407,407", "407,847,847,407,407,,847,,847,847,847,847,847,847,847,,,,,,847,847,847", "847,847,847,847,,,847,,,,,,,847,,,847,847,847,847,847,847,847,847,,847", "847,847,,847,847,847,847,847,,,,,,,,,,,,,,,,,,,,847,,,847,,,847,847", ",,847,,,,,,847,,,,,,,,,847,,,,,847,847,847,847,,847,847,847,847,,,,", "847,847,,,,276,276,276,847,276,847,847,847,276,276,847,847,,276,,276", "276,276,276,276,276,276,,,,,,276,276,276,276,276,276,276,,,276,,,,,", ",276,,,276,276,276,276,276,276,276,276,,276,276,276,,276,276,276,276", "276,,,,,,,,,,,,,,,,,,,,276,,,276,,,276,276,,,276,,,,,,276,,,,,,,,,276", ",,,,276,276,276,276,,276,276,276,276,,,,,276,276,,,,275,275,275,276", "275,276,276,276,275,275,276,276,,275,,275,275,275,275,275,275,275,,", ",,,275,275,275,275,275,275,275,,,275,,,,,,,275,,,275,275,275,275,275", "275,275,275,,275,275,275,,275,275,275,275,275,,,,,,,,,,,,,,,,,,,,275", ",,275,,,275,275,,,275,,,,,,275,,,,,,,,,275,,,,,275,275,275,275,,275", "275,275,275,,,,,275,275,,,,67,67,67,275,67,275,275,275,67,67,275,275", ",67,,67,67,67,67,67,67,67,,,,,,67,67,67,67,67,67,67,,,67,,,,,,,67,,", "67,67,67,67,67,67,67,67,67,67,67,67,,67,67,67,67,67,,,,,,,,,,,,,,,,", ",,,67,,,67,,,67,67,,,67,,67,,,,67,,,67,,,,,,67,,,,,67,67,67,67,,67,67", "67,67,,,,,67,67,,,,,,,67,,67,67,67,,,67,67,66,66,66,66,66,,,,66,66,", ",,66,,66,66,66,66,66,66,66,,,,,,66,66,66,66,66,66,66,,,66,,,,,,66,66", ",66,66,66,66,66,66,66,66,66,,66,66,66,,66,66,66,66,66,,,,,,,,,,,,,,", ",,,,,66,,,66,,,66,66,,,66,,66,,,,66,,,,,,,,,66,,,,,66,66,66,66,,66,66", "66,66,,,,,66,66,,,,299,299,299,66,299,66,66,66,299,299,66,66,,299,,299", "299,299,299,299,299,299,,,,,,299,299,299,299,299,299,299,,,299,,,,,", ",299,,,299,299,299,299,299,299,299,299,,299,299,299,,299,299,299,299", "299,,,,,,,,,,,,,,,,,,,,299,,,299,,,299,299,,,299,,,,,,299,,,,,,,,,299", ",,,,299,299,299,299,,299,299,299,299,,,,,299,299,,,,274,274,274,299", "274,299,299,299,274,274,299,299,,274,,274,274,274,274,274,274,274,,", ",,,274,274,274,274,274,274,274,,,274,,,,,,,274,,,274,274,274,274,274", "274,274,274,,274,274,274,,274,274,274,274,274,,,,,,,,,,,,,,,,,,,,274", ",,274,,,274,274,,,274,,,,,,274,,,,,,,,,274,,,,,274,274,274,274,,274", "274,274,274,,,,,274,274,,,,867,867,867,274,867,274,274,274,867,867,274", "274,,867,,867,867,867,867,867,867,867,,,,,,867,867,867,867,867,867,867", ",,867,,,,,,,867,,,867,867,867,867,867,867,867,867,,867,867,867,,867", "867,867,867,867,,,,,,,,,,,,,,,,,,,,867,,,867,,,867,867,,,867,,,,,,867", ",,,,,,,,867,,,,,867,867,867,867,,867,867,867,867,,,,,867,867,,,,24,24", "24,867,24,867,867,867,24,24,867,867,,24,,24,24,24,24,24,24,24,,,,,,24", "24,24,24,24,24,24,,,24,,,,,,,24,,,24,24,24,24,24,24,24,24,,24,24,24", ",24,24,24,24,24,,,,,,,,,,,,,,,,,,,,24,,,24,,,24,24,,,24,,,,,,24,,,,", ",,,,24,,,,,24,24,24,24,,24,24,24,24,,,,,24,24,,,,273,273,273,24,273", "24,24,24,273,273,24,24,,273,,273,273,273,273,273,273,273,,,,,,273,273", "273,273,273,273,273,,,273,,,,,,,273,,,273,273,273,273,273,273,273,273", ",273,273,273,,273,273,273,273,273,,,,,,,,,,,,,,,,,,,,273,,,273,,,273", "273,,,273,,,,,,273,,,,,,,,,273,,,,,273,273,273,273,,273,273,273,273", ",,,,273,273,,,,788,788,788,273,788,273,273,273,788,788,273,273,,788", ",788,788,788,788,788,788,788,,,,,,788,788,788,788,788,788,788,,,788", ",,,,,,788,,,788,788,788,788,788,788,788,788,788,788,788,788,,788,788", "788,788,788,,,,,,,,,,,,,,,,,,,,788,,,788,,,788,788,,,788,,788,,788,", "788,,,788,,,,,,788,,,,,788,788,788,788,,788,788,788,788,,,,,788,788", ",,,272,272,272,788,272,788,788,788,272,272,788,788,,272,,272,272,272", "272,272,272,272,,,,,,272,272,272,272,272,272,272,,,272,,,,,,,272,,,272", "272,272,272,272,272,272,272,,272,272,272,,272,272,272,272,272,,,,,,", ",,,,,,,,,,,,,272,,,272,,,272,272,,,272,,,,,,272,,,,,,,,,272,,,,,272", "272,272,272,,272,272,272,272,,,,,272,272,,,,875,875,875,272,875,272", "272,272,875,875,272,272,,875,,875,875,875,875,875,875,875,,,,,,875,875", "875,875,875,875,875,,,875,,,,,,,875,,,875,875,875,875,875,875,875,875", ",875,875,875,,875,875,875,875,875,,,,,,,,,,,,,,,,,,,,875,,,875,,,875", "875,,,875,,,,,,875,,,,,,,,,875,,,,,875,875,875,875,,875,875,875,875", ",,,,875,875,,,,306,306,306,875,306,875,875,875,306,306,875,875,,306", ",306,306,306,306,306,306,306,,,,,,306,306,306,306,306,306,306,,,306", ",,,,,,306,,,306,306,306,306,306,306,306,306,306,306,306,306,,306,306", "306,306,306,,,,,,,,,,,,,,,,,,,,306,,,306,,,306,306,,,306,,306,,306,", "306,,,306,,,,,,306,,,,,306,306,306,306,,306,306,306,306,,,,,306,306", ",,,888,888,888,306,888,306,306,306,888,888,306,306,,888,,888,888,888", "888,888,888,888,,,,,,888,888,888,888,888,888,888,,,888,,,,,,,888,,,888", "888,888,888,888,888,888,888,,888,888,888,,888,888,888,888,888,,,,,,", ",,,,,,,,,,,,,888,,,888,,,888,888,,,888,,,,,,888,,,,,,,,,888,,,,,888", "888,888,888,,888,888,888,888,,,,,888,888,,,,889,889,889,888,889,888", "888,888,889,889,888,888,,889,,889,889,889,889,889,889,889,,,,,,889,889", "889,889,889,889,889,,,889,,,,,,,889,,,889,889,889,889,889,889,889,889", ",889,889,889,,889,889,889,889,889,,,,,,,,,,,,,,,,,,,,889,,,889,,,889", "889,,,889,,,,,,889,,,,,,,,,889,,,,,889,889,889,889,,889,889,889,889", ",,,,889,889,,,,307,307,307,889,307,889,889,889,307,307,889,889,,307", ",307,307,307,307,307,307,307,,,,,,307,307,307,307,307,307,307,,,307", ",,,,,,307,,,307,307,307,307,307,307,307,307,307,307,307,307,,307,307", "307,307,307,,,,,,,,,,,,,,,,,,,,307,,,307,,,307,307,,,307,,307,,307,", "307,,,307,,,,,,307,,,,,307,307,307,307,,307,307,307,307,,,,,307,307", ",,,315,315,315,307,315,307,307,307,315,315,307,307,,315,,315,315,315", "315,315,315,315,,,,,,315,315,315,315,315,315,315,,,315,,,,,,,315,,,315", "315,315,315,315,315,315,315,315,315,315,315,,315,315,315,315,315,,,", ",,,,,,,,,,,,,,,,315,,,315,,,315,315,,,315,,315,,315,,315,,,315,,,,,", "315,,,,,315,315,315,315,,315,315,315,315,,,,,315,315,315,,,271,271,271", "315,271,315,315,315,271,271,315,315,,271,,271,271,271,271,271,271,271", ",,,,,271,271,271,271,271,271,271,,,271,,,,,,,271,,,271,271,271,271,271", "271,271,271,,271,271,271,,271,271,271,271,271,,,,,,,,,,,,,,,,,,,,271", ",,271,,,271,271,,,271,,,,,,271,,,,,,,,,271,,,,,271,271,271,271,,271", "271,271,271,,,,,271,271,,,,270,270,270,271,270,271,271,271,270,270,271", "271,,270,,270,270,270,270,270,270,270,,,,,,270,270,270,270,270,270,270", ",,270,,,,,,,270,,,270,270,270,270,270,270,270,270,,270,270,270,,270", "270,270,270,270,,,,,,,,,,,,,,,,,,,,270,,,270,,,270,270,,,270,,,,,,270", ",,,,,,,,270,,,,,270,270,270,270,,270,270,270,270,,,,,270,270,,,,269", "269,269,270,269,270,270,270,269,269,270,270,,269,,269,269,269,269,269", "269,269,,,,,,269,269,269,269,269,269,269,,,269,,,,,,,269,,,269,269,269", "269,269,269,269,269,,269,269,269,,269,269,269,269,269,,,,,,,,,,,,,,", ",,,,,269,,,269,,,269,269,,,269,,,,,,269,,,,,,,,,269,,,,,269,269,269", "269,,269,269,269,269,,,,,269,269,,,,322,322,322,269,322,269,269,269", "322,322,269,269,,322,,322,322,322,322,322,322,322,,,,,,322,322,322,322", "322,322,322,,,322,,,,,,,322,,,322,322,322,322,322,322,322,322,,322,322", "322,,322,322,322,322,322,,,,,,,,,,,,,,,,,,,,322,,,322,,,322,322,,,322", ",,,,,322,,,,,,,,,322,,,,,322,322,322,322,,322,322,322,322,,,,,322,322", ",,,324,324,324,322,324,322,322,322,324,324,322,322,,324,,324,324,324", "324,324,324,324,,,,,,324,324,324,324,324,324,324,,,324,,,,,,,324,,,324", "324,324,324,324,324,324,324,,324,324,324,,324,324,324,324,324,,,,,,", ",,,,,,,,,,,,,324,,,324,,,324,324,,,324,,,,,,324,,,,,,,,,324,,,,,324", "324,324,324,,324,324,324,324,,,,,324,324,,,,327,327,327,324,327,324", "324,324,327,327,324,324,,327,,327,327,327,327,327,327,327,,,,,,327,327", "327,327,327,327,327,,,327,,,,,,,327,,,327,327,327,327,327,327,327,327", ",327,327,327,,327,327,327,327,327,,,,,,,,,,,,,,,,,,,,327,,,327,,,327", "327,,,327,,,,,,327,,,,,,,,,327,,,,,327,327,327,327,,327,327,327,327", ",,,,327,327,,,,328,328,328,327,328,327,327,327,328,328,327,327,,328", ",328,328,328,328,328,328,328,,,,,,328,328,328,328,328,328,328,,,328", ",,,,,,328,,,328,328,328,328,328,328,328,328,,328,328,328,,328,328,328", "328,328,,,,,,,,,,,,,,,,,,,,328,,,328,,,328,328,,,328,,,,,,328,,,,,,", ",,328,,,,,328,328,328,328,,328,328,328,328,,,,,328,328,,,,268,268,268", "328,268,328,328,328,268,268,328,328,,268,,268,268,268,268,268,268,268", ",,,,,268,268,268,268,268,268,268,,,268,,,,,,,268,,,268,268,268,268,268", "268,268,268,,268,268,268,,268,268,268,268,268,,,,,,,,,,,,,,,,,,,,268", ",,268,,,268,268,,,268,,,,,,268,,,,,,,,,268,,,,,268,268,268,268,,268", "268,268,268,,,,,268,268,,,,267,267,267,268,267,268,268,268,267,267,268", "268,,267,,267,267,267,267,267,267,267,,,,,,267,267,267,267,267,267,267", ",,267,,,,,,,267,,,267,267,267,267,267,267,267,267,,267,267,267,,267", "267,267,267,267,,,,,,,,,,,,,,,,,,,,267,,,267,,,267,267,,,267,,,,,,267", ",,,,,,,,267,,,,,267,267,267,267,,267,267,267,267,,,,,267,267,,,,266", "266,266,267,266,267,267,267,266,266,267,267,,266,,266,266,266,266,266", "266,266,,,,,,266,266,266,266,266,266,266,,,266,,,,,,,266,,,266,266,266", "266,266,266,266,266,,266,266,266,,266,266,266,266,266,,,,,,,,,,,,,,", ",,,,,266,,,266,,,266,266,,,266,,,,,,266,,,,,,,,,266,,,,,266,266,266", "266,,266,266,266,266,,,,,266,266,,,,917,917,917,266,917,266,266,266", "917,917,266,266,,917,,917,917,917,917,917,917,917,,,,,,917,917,917,917", "917,917,917,,,917,,,,,,,917,,,917,917,917,917,917,917,917,917,,917,917", "917,,917,917,917,917,917,,,,,,,,,,,,,,,,,,,,917,,,917,,,917,917,,,917", ",,,,,917,,,,,,,,,917,,,,,917,917,917,917,,917,917,917,917,,,,,917,917", ",,,918,918,918,917,918,917,917,917,918,918,917,917,,918,,918,918,918", "918,918,918,918,,,,,,918,918,918,918,918,918,918,,,918,,,,,,,918,,,918", "918,918,918,918,918,918,918,,918,918,918,,918,918,918,918,918,,,,,,", ",,,,,,,,,,,,,918,,,918,,,918,918,,,918,,,,,,918,,,,,,,,,918,,,,,918", "918,918,918,,918,918,918,918,,,,,918,918,,,,919,919,919,918,919,918", "918,918,919,919,918,918,,919,,919,919,919,919,919,919,919,,,,,,919,919", "919,919,919,919,919,,,919,,,,,,,919,,,919,919,919,919,919,919,919,919", ",919,919,919,,919,919,919,919,919,,,,,,,,,,,,,,,,,,,,919,,,919,,,919", "919,,,919,,,,,,919,,,,,,,,,919,,,,,919,919,919,919,,919,919,919,919", ",,,,919,919,,,,497,497,497,919,497,919,919,919,497,497,919,919,,497", ",497,497,497,497,497,497,497,,,,,,497,497,497,497,497,497,497,,,497", ",,,,,,497,,,497,497,497,497,497,497,497,497,,497,497,497,,497,497,497", "497,497,,,,,,,,,,,,,,,,,,,,497,,,497,,,497,497,,,497,,,,,,497,,,,,,", ",,497,,,,,497,497,497,497,,497,497,497,497,,,,,497,497,,,,,,,497,,497", "497,497,,,497,497,133,133,133,133,133,,,,133,133,,,,133,,133,133,133", "133,133,133,133,,,,,,133,133,133,133,133,133,133,,,133,,,,,,133,133", ",133,133,133,133,133,133,133,133,133,,133,133,133,,133,133,133,133,133", ",,,,,,,,,,,,,,,,,,,133,,,133,,,133,133,,,133,,133,,,,133,,,,,,,,,133", ",,,,133,133,133,133,,133,133,133,133,,,,,133,133,,,,132,132,132,133", "132,133,133,133,132,132,133,133,,132,,132,132,132,132,132,132,132,,", ",,,132,132,132,132,132,132,132,,,132,,,,,,,132,,,132,132,132,132,132", "132,132,132,,132,132,132,,132,132,132,132,132,,,,,,,,,,,,,,,,,,,,132", ",,132,,,132,132,,,132,,,,,,132,,,,,,,,,132,,,,,132,132,132,132,,132", "132,132,132,,,,,132,132,,,,131,131,131,132,131,132,132,132,131,131,132", "132,,131,,131,131,131,131,131,131,131,,,,,,131,131,131,131,131,131,131", ",,131,,,,,,,131,,,131,131,131,131,131,131,131,131,,131,131,131,,131", "131,131,131,131,,,,,,,,,,,,,,,,,,,,131,,,131,,,131,131,,,131,,,,,,131", ",,,,,,,,131,,,,,131,131,131,131,,131,131,131,131,,,,,131,131,,,,130", "130,130,131,130,131,131,131,130,130,131,131,,130,,130,130,130,130,130", "130,130,,,,,,130,130,130,130,130,130,130,,,130,,,,,,,130,,,130,130,130", "130,130,130,130,130,,130,130,130,,130,130,130,130,130,,,,,,,,,,,,,,", ",,,,,130,,,130,,,130,130,,,130,,,,,,130,,,,,,,,,130,,,,,130,130,130", "130,,130,130,130,130,,,,,130,130,,,,1149,1149,1149,130,1149,130,130", "130,1149,1149,130,130,,1149,,1149,1149,1149,1149,1149,1149,1149,,,,", ",1149,1149,1149,1149,1149,1149,1149,,,1149,,,,,,,1149,,,1149,1149,1149", "1149,1149,1149,1149,1149,,1149,1149,1149,,1149,1149,1149,1149,1149,", ",,,,,,,,,,,,,,,,,,1149,,,1149,,,1149,1149,,,1149,,,,,,1149,,,,,,,,,1149", ",,,,1149,1149,1149,1149,,1149,1149,1149,1149,,,,,1149,1149,,,,1150,1150", "1150,1149,1150,1149,1149,1149,1150,1150,1149,1149,,1150,,1150,1150,1150", "1150,1150,1150,1150,,,,,,1150,1150,1150,1150,1150,1150,1150,,,1150,", ",,,,,1150,,,1150,1150,1150,1150,1150,1150,1150,1150,,1150,1150,1150", ",1150,1150,1150,1150,1150,,,,,,,,,,,,,,,,,,,,1150,,,1150,,,1150,1150", ",,1150,,,,,,1150,,,,,,,,,1150,,,,,1150,1150,1150,1150,,1150,1150,1150", "1150,,,,,1150,1150,,,,52,52,52,1150,52,1150,1150,1150,52,52,1150,1150", ",52,,52,52,52,52,52,52,52,,,,,,52,52,52,52,52,52,52,,,52,,,,,,,52,,", "52,52,52,52,52,52,52,52,,52,52,52,,52,52,52,52,52,,,,,,,,,,,,,,,,,,", ",52,,,52,,,52,52,,,52,,,,,,52,,,,,,,,,52,,,,,52,52,52,52,,52,52,52,52", ",,,,52,52,,,,129,129,129,52,129,52,52,52,129,129,52,52,,129,,129,129", "129,129,129,129,129,,,,,,129,129,129,129,129,129,129,,,129,,,,,,,129", ",,129,129,129,129,129,129,129,129,,129,129,129,,129,129,129,129,129", ",,,,,,,,,,,,,,,,,,,129,,,129,,,129,129,,,129,,,,,,129,,,,,,,,,129,,", ",,129,129,129,129,,129,129,129,129,,,,,129,129,,,,,,,129,,129,129,129", ",,129,129,124,124,124,124,124,,,,124,124,,,,124,,124,124,124,124,124", "124,124,,,,,,124,124,124,124,124,124,124,,,124,,,,,,124,124,124,124", "124,124,124,124,124,124,124,124,,124,124,124,,124,124,124,124,124,,", ",,,,,,,,,,,,,,,,,124,,,124,,,124,124,,,124,,124,,,,124,,,,,,,,,124,", ",,,124,124,124,124,,124,124,124,124,,,,,124,124,,,,,,124,124,,124,124", "124,,,124,124,1162,1162,1162,,1162,,,,1162,1162,,,,1162,,1162,1162,1162", "1162,1162,1162,1162,,,,,,1162,1162,1162,1162,1162,1162,1162,,,1162,", ",,,,,1162,,,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162", ",1162,1162,1162,1162,1162,,,,,,,,,,,,,,,,,,,,1162,,,1162,,,1162,1162", ",,1162,,1162,,1162,,1162,,,1162,,,,,,1162,,,,,1162,1162,1162,1162,,1162", "1162,1162,1162,,,,,1162,1162,,,,471,471,471,1162,471,1162,1162,1162", "471,471,1162,1162,,471,,471,471,471,471,471,471,471,,,,,,471,471,471", "471,471,471,471,,,471,,,,,,,471,,,471,471,471,471,471,471,471,471,,471", "471,471,,471,471,471,471,471,,,,,,,,,,,,,,,,,,,,471,,,471,,,471,471", ",,471,,,,,,471,,,,,,,,,471,,,,,471,471,471,471,,471,471,471,471,,,,", "471,471,,,,277,277,277,471,277,471,471,471,277,277,471,471,,277,,277", "277,277,277,277,277,277,,,,,,277,277,277,277,277,277,277,,,277,,,,,", ",277,,,277,277,277,277,277,277,277,277,,277,277,277,,277,277,277,277", "277,,,,,,,,,,,,,,,,,,,,277,,,277,,,277,277,,,277,,,,,,277,,,,,,,,,277", ",,,,277,277,277,277,,277,277,277,277,,,,,277,277,,,,,,,277,,277,277", "277,470,,277,277,,,,470,470,470,,,470,470,470,,470,,,,,,,,470,470,470", "470,470,,,,,,,,470,470,,470,470,470,470,470,,,,,,,,,,,,,,,,,,,,,,,470", "470,470,470,470,470,470,470,470,470,470,470,470,470,,,470,470,470,,", "470,,,470,,,470,470,,470,,470,,470,,470,470,,470,470,470,470,470,,470", "470,470,,,,,,,,,,,,,,470,,,470,470,470,470,,470,469,470,,,,,470,469", "469,469,,,469,469,469,,469,,,,,,,,469,469,469,469,469,,,,951,951,951", "951,469,469,,469,469,469,469,469,,,,,951,951,951,,,,,,,,,,,951,951,", ",951,469,469,469,469,469,469,469,469,469,469,469,469,469,469,,,469,469", "469,,,469,,,469,,,469,469,,469,,469,,469,,469,469,,469,469,469,469,469", ",469,469,469,,951,951,951,951,,951,951,951,951,,,,469,951,951,469,469", "469,469,,469,951,469,951,951,951,460,469,7,7,7,7,7,460,460,460,7,7,460", "460,460,7,460,7,7,7,7,7,7,7,460,460,460,460,,7,7,7,7,7,7,7,460,460,7", "460,460,460,460,460,7,7,7,7,7,7,7,7,7,7,7,7,,7,7,7,,7,7,7,7,7,460,460", "460,460,460,460,460,460,460,460,460,460,460,460,,,460,460,460,7,,460", "7,460,460,7,7,460,460,7,460,7,460,,460,7,460,460,,460,460,460,460,460", "7,460,460,460,,7,7,7,7,,7,7,7,7,,,,460,7,7,460,460,,460,,460,7,,7,7", "7,,460,7,7,75,75,75,,75,,,,75,75,,,,75,,75,75,75,75,75,75,75,,,,,,75", "75,75,75,75,75,75,,,75,,,,,,,75,,,75,75,75,75,75,75,75,75,,75,75,75", ",75,75,75,75,75,,,,,,,,,,,,,,,,,,,,75,,,75,,,75,75,,,75,,,,,,75,,,,", ",,,,75,,,,,75,75,75,75,,75,75,75,75,,,,,75,75,75,,,,,75,75,,75,75,75", "64,,75,75,,,,64,64,64,,,64,64,64,,64,,,,,,,,64,,64,64,64,,,,,,,,64,64", ",64,64,64,64,64,,,,,,,,,,,,,,,,,,,,,,,64,64,64,64,64,64,64,64,64,64", "64,64,64,64,,,64,64,64,,,64,,,64,,,64,64,,64,,64,,64,,64,64,,64,64,64", "64,64,,64,,64,,,,,,,,,,,,,,64,,,64,64,64,64,,64,,64,,278,278,278,64", "278,,,,278,278,,,,278,,278,278,278,278,278,278,278,,,,,,278,278,278", "278,278,278,278,,,278,,,,,,,278,,,278,278,278,278,278,278,278,278,,278", "278,278,,278,278,278,278,278,,,,,,,,,,,,,,,,,,,,278,,,278,,,278,278", ",,278,,,,,,278,,,,,,,,,278,,,,,278,278,278,278,,278,278,278,278,,,,", "278,278,,,,221,221,221,278,221,278,278,278,221,221,278,278,,221,,221", "221,221,221,221,221,221,,,,,,221,221,221,221,221,221,221,,,221,,,,,", ",221,,,221,221,221,221,221,221,221,221,,221,221,221,,221,221,221,221", "221,,,,,,,,,,,,,,,,,,,,221,,,221,,,221,221,,,221,,,,,,221,,,,,,,,,221", ",,,,221,221,221,221,,221,221,221,221,,,,,221,221,,,,220,220,220,221", "220,221,221,221,220,220,221,221,,220,,220,220,220,220,220,220,220,,", ",,,220,220,220,220,220,220,220,,,220,,,,,,,220,,,220,220,220,220,220", "220,220,220,,220,220,220,,220,220,220,220,220,,,,,,,,,,,,,,,,,,,,220", ",,220,,,220,220,,,220,,220,,,,220,,,,,,,,,220,,,,,220,220,220,220,,220", "220,220,220,,,,,220,220,,,,800,800,800,220,800,220,220,220,800,800,220", "220,,800,,800,800,800,800,800,800,800,,,,,,800,800,800,800,800,800,800", ",,800,,,,,,,800,,,800,800,800,800,800,800,800,800,,800,800,800,,800", "800,800,800,800,,,,,,,,,,,,,,,,,,,,800,,,800,,,800,800,,,800,,,,,,800", ",,,,,,,,800,,,,,800,800,800,800,,800,800,800,800,,,,,800,800,,,,797", "797,797,800,797,800,800,800,797,797,800,800,,797,,797,797,797,797,797", "797,797,,,,,,797,797,797,797,797,797,797,,,797,,,,,,,797,,,797,797,797", "797,797,797,797,797,,797,797,797,,797,797,797,797,797,,,,,,,,,,,,,,", ",,,,,797,,,797,,,797,797,,,797,,,,,,797,,,,,,,,,797,,,,,797,797,797", "797,,797,797,797,797,,,,,797,797,,,,386,386,386,797,386,797,797,797", "386,386,797,797,,386,,386,386,386,386,386,386,386,,,,,,386,386,386,386", "386,386,386,,,386,,,,,,,386,,,386,386,386,386,386,386,386,386,,386,386", "386,,386,386,386,386,386,,,,,,,,,,,,,,,,,,,,386,,,386,,,386,386,,,386", ",,,,,386,,,,,,,,,386,,,,,386,386,386,386,,386,386,386,386,,,,,386,386", ",,,524,524,524,386,524,386,386,386,524,524,386,386,,524,,524,524,524", "524,524,524,524,,,,,,524,524,524,524,524,524,524,,,524,,,,,,,524,,,524", "524,524,524,524,524,524,524,,524,524,524,,524,524,524,524,524,,,,,,", ",,,,,,,,,,,,,524,,,524,,,524,524,,,524,,,,,,524,,,,,,,,,524,,,,,524", "524,524,524,,524,524,524,524,,,,,524,524,,,,523,523,523,524,523,524", "524,524,523,523,524,524,,523,,523,523,523,523,523,523,523,,,,,,523,523", "523,523,523,523,523,,,523,,,,,,,523,,,523,523,523,523,523,523,523,523", ",523,523,523,,523,523,523,523,523,,,,,,,,,,,,,,,,,,,,523,,,523,,,523", "523,,,523,,,,,,523,,,,,,,,,523,,,,,523,523,523,523,,523,523,523,523", ",,,,523,523,,,,522,522,522,523,522,523,523,523,522,522,523,523,,522", ",522,522,522,522,522,522,522,,,,,,522,522,522,522,522,522,522,,,522", ",,,,,,522,,,522,522,522,522,522,522,522,522,,522,522,522,,522,522,522", "522,522,,,,,,,,,,,,,,,,,,,,522,,,522,,,522,522,,,522,,,,,,522,,,,,,", ",,522,,,,,522,522,522,522,,522,522,522,522,,,,,522,522,,,,520,520,520", "522,520,522,522,522,520,520,522,522,,520,,520,520,520,520,520,520,520", ",,,,,520,520,520,520,520,520,520,,,520,,,,,,,520,,,520,520,520,520,520", "520,520,520,520,520,520,520,,520,520,520,520,520,,,,,,,,,,,,,,,,,,,", "520,,,520,,,520,520,,,520,,520,,520,,520,,,520,,,,,,520,,,,,520,520", "520,520,,520,520,520,520,,,,,520,520,,,,219,219,219,520,219,520,520", "520,219,219,520,520,,219,,219,219,219,219,219,219,219,,,,,,219,219,219", "219,219,219,219,,,219,,,,,,,219,,,219,219,219,219,219,219,219,219,,219", "219,219,,219,219,219,219,219,,,,,,,,,,,,,,,,,,,,219,,,219,,,219,219", ",,219,,219,,,,219,,,,,,,,,219,,,,,219,219,219,219,,219,219,219,219,", ",,,219,219,,,,510,510,510,219,510,219,219,219,510,510,219,219,,510,", "510,510,510,510,510,510,510,,,,,,510,510,510,510,510,510,510,,,510,", ",,,,,510,,,510,510,510,510,510,510,510,510,,510,510,510,,510,510,510", "510,510,,,,,,,,,,,,,,,,,,,,510,,,510,,,510,510,,,510,,,,,,510,,,,,,", ",,510,,,,,510,510,510,510,,510,510,510,510,,,,,510,510,,,,1017,1017", "1017,510,1017,510,510,510,1017,1017,510,510,,1017,,1017,1017,1017,1017", "1017,1017,1017,,,,,,1017,1017,1017,1017,1017,1017,1017,,,1017,,,,,,", "1017,,,1017,1017,1017,1017,1017,1017,1017,1017,,1017,1017,1017,,1017", "1017,,,1017,,,,,,,,,,,,,,,,,,,,1017,,,1017,,,1017,1017,,,1017,,,,,,", ",,,,,,,,,,,,,1017,1017,1017,1017,,1017,1017,1017,1017,,,,,1017,1017", ",,,1081,1081,1081,1017,1081,1017,1017,1017,1081,1081,,,,1081,,1081,1081", "1081,1081,1081,1081,1081,,,,,,1081,1081,1081,1081,1081,1081,1081,,,1081", ",,,,,,1081,,,1081,1081,1081,1081,1081,1081,1081,1081,,1081,1081,1081", ",1081,1081,,,1081,,,,,,,,,,,,,,,,,,,,1081,,,1081,,,1081,1081,,,1081", ",,,,,,,,,,,,,,,,,,,1081,1081,1081,1081,,1081,1081,1081,1081,,,,,1081", "1081,,,,341,341,341,1081,341,1081,1081,1081,341,341,,,,341,,341,341", "341,341,341,341,341,,,,,,341,341,341,341,341,341,341,,,341,,,,,,,341", ",,341,341,341,341,341,341,341,341,,341,341,341,,341,341,,,341,,,,,,", ",,,,,,,,,,,,,341,,,341,,,341,341,,,341,,,1214,,1214,1214,1214,1214,1214", ",,,,,,,,1214,,341,341,341,341,,341,341,341,341,,,,,341,341,,,,341,,1214", "341,,341,341,341,588,588,588,,588,1214,1214,,588,588,1214,,,588,,588", "588,588,588,588,588,588,,,,,,588,588,588,588,588,588,588,,,588,,,,,", ",588,,,588,588,588,588,588,588,588,588,,588,588,588,,588,588,,,588,", ",,,,,,,,,,,,,,,,,,588,,,588,,,588,588,,,588,,,,,,,,,,,,,,,,,,,,588,588", "588,588,,588,588,588,588,,,,,588,588,,,,40,40,40,588,40,588,588,588", "40,40,,,,40,,40,40,40,40,40,40,40,,,,,,40,40,40,40,40,40,40,,,40,,,", ",,,40,,,40,40,40,40,40,40,40,40,,40,40,40,,40,40,,,40,,,,,,,,,,,,,,", ",,,,,40,,,40,,,40,40,,,40,,,1210,,1210,1210,1210,1210,1210,,,,,,,,,1210", ",40,40,40,40,,40,40,40,40,,,,,40,40,,,,40,,1210,40,,40,40,40,803,803", "803,,803,1210,1210,,803,803,1210,,,803,,803,803,803,803,803,803,803", ",,,,,803,803,803,803,803,803,803,,,803,,,,,,,803,,,803,803,803,803,803", "803,803,803,,803,803,803,,803,803,,,803,,,,,,,,,,,,,,,,,,,,803,,,803", ",,803,803,,,803,,,,,,,,,,,,,,,,,,,,803,803,803,803,,803,803,803,803", ",,,,803,803,,,,360,360,360,803,360,803,803,803,360,360,,,,360,,360,360", "360,360,360,360,360,,,,,,360,360,360,360,360,360,360,,,360,,,,,,,360", ",,360,360,360,360,360,360,360,360,,360,360,360,,360,360,,,360,,,,,,", ",,,,,,,,,,,,,360,,,360,,,360,360,,,360,,,,,,,,,,,,,,,,,,,,360,360,360", "360,,360,360,360,360,,,,,360,360,,,,1144,1144,1144,360,1144,360,360", "360,1144,1144,,,,1144,,1144,1144,1144,1144,1144,1144,1144,,,,,,1144", "1144,1144,1144,1144,1144,1144,,,1144,,,,,,,1144,,,1144,1144,1144,1144", "1144,1144,1144,1144,,1144,1144,1144,,1144,1144,,,1144,,,,,,,,,,,,,,", ",,,,,1144,,,1144,,,1144,1144,,,1144,,,,,,,,,,,,,,,,,,,,1144,1144,1144", "1144,,1144,1144,1144,1144,,,,,1144,1144,,,,77,77,77,1144,77,1144,1144", "1144,77,77,,,,77,,77,77,77,77,77,77,77,,,,,,77,77,77,77,77,77,77,,,77", ",,,,,,77,,,77,77,77,77,77,77,77,77,,77,77,77,,77,77,,,77,,,,,,,,,,,", ",,,,,77,,,77,,,77,,,77,77,,,77,,,,,,,,,,,,,,,,,,,,77,77,77,77,,77,77", "77,77,,,,,77,77,,,,814,814,814,77,814,77,77,77,814,814,,,,814,,814,814", "814,814,814,814,814,,,,,,814,814,814,814,814,814,814,,,814,,,,,,,814", ",,814,814,814,814,814,814,814,814,,814,814,814,,814,814,,,814,,,,,,", ",,,,,,,,,,,,,814,,,814,,,814,814,,,814,,,,,,,,,,,,,,,,,,,,814,814,814", "814,,814,814,814,814,,,,,814,814,,,,597,597,597,814,597,814,814,814", "597,597,,,,597,,597,597,597,597,597,597,597,,,,,,597,597,597,597,597", "597,597,,,597,,,,,,,597,,,597,597,597,597,597,597,597,597,,597,597,597", ",597,597,,,597,,,,,,,,,,,,,,,,,,,,597,,,597,,,597,597,,,597,,,,,,,,", ",,,,,,,,,,,597,597,597,597,,597,597,597,597,,,,,597,597,,,,39,39,39", "597,39,597,597,597,39,39,,,,39,,39,39,39,39,39,39,39,,,,,,39,39,39,39", "39,39,39,,,39,,,,,,,39,,,39,39,39,39,39,39,39,39,,39,39,39,,39,39,,", "39,,,,,,,,,,,,,,,,,,,,39,,,39,,,39,39,,,39,,39,,,,,,,,,,,,,,,,,,39,39", "39,39,,39,39,39,39,,,,,39,39,,,,76,76,76,39,76,39,39,39,76,76,,,,76", ",76,76,76,76,76,76,76,,,,,,76,76,76,76,76,76,76,,,76,,,,,,,76,,,76,76", "76,76,76,76,76,76,,76,76,76,,76,76,,,76,,,,,,,,,,,,,,,,,,,,76,,,76,", ",76,76,,,76,,76,,,,,,,,,,,,,,,,,,76,76,76,76,,76,76,76,76,,,,,76,76", ",,,78,78,78,76,78,76,76,76,78,78,,,,78,,78,78,78,78,78,78,78,,,,,,78", "78,78,78,78,78,78,,,78,,,,,,,78,,,78,78,78,78,78,78,78,78,,78,78,78", ",78,78,,,78,,,,,,,,,,,,,,,,,,,,78,,,78,,,78,78,,,78,,,,,,,,,,,,,,,,", ",,,78,78,78,78,,78,78,78,78,,,,,78,78,,,,,,,78,,78,78,78,10,10,10,10", "10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,,,,10,10", "10,10,10,10,10,10,10,10,,,,,,10,10,10,10,10,10,10,10,10,10,,10,,,,,", ",,10,10,,10,10,10,10,10,10,10,,,10,10,,,,10,10,10,10,,,,,,,,,,,,,,10", "10,,10,10,10,10,10,10,10,10,10,10,10,10,,,10,10,,,,,,,,,,,,,,10,427", "427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427", "427,427,427,427,427,427,,,,427,427,427,427,427,427,427,427,427,427,", ",,,,427,427,427,427,427,427,427,427,427,,,427,,,,,,,,427,427,,427,427", "427,427,427,427,427,,,427,427,,,,427,427,427,427,,,,,,,,,,,,,,427,427", ",427,427,427,427,427,427,427,427,427,427,427,427,,,427,427,,,,,,,,,", ",,,,427,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667", "667,667,667,667,667,667,667,667,667,,,,667,667,667,667,667,667,667,667", "667,667,,,,,,667,667,667,667,667,667,667,667,667,,,667,,,,,,,,667,667", ",667,667,667,667,667,667,667,,,667,667,,,,667,667,667,667,,,,,,,,,,", ",,,667,667,,667,667,667,667,667,667,667,667,667,667,667,667,,,667,667", ",,,,,,,,,,,,,667,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11", "11,11,11,11,11,11,11,,,,11,11,11,11,11,11,11,11,11,11,,,,,,11,11,11", "11,11,11,11,11,11,,,11,,,,,,,,11,11,,11,11,11,11,11,11,11,,,11,11,,", ",11,11,11,11,,,,,,,,,,,,,,11,11,,11,11,11,11,11,11,11,11,11,11,11,11", ",,11,11,,,,,,,,,,,,,,11,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26", "26,26,26,26,26,26,26,26,26,,,,26,26,26,26,26,26,26,26,26,26,,,,,,26", "26,26,26,26,26,26,26,26,26,26,26,,26,,,,,,26,26,,26,26,26,26,26,26,26", ",,26,26,,,,26,26,26,26,,,,,,26,,,,,,,,26,26,,26,26,26,26,26,26,26,26", "26,26,26,26,,,26,753,753,753,753,,,,,,1026,,1026,1026,1026,1026,1026", "753,753,753,753,,,,753,1026,,,,,753,753,,,753,,,,,,,,,,,,,1026,,,,,", ",753,,,753,1026,1026,,753,,1026,753,,,,,,,,,,,,,,,,753,,,,753,753,753", "753,,753,753,753,753,,,,,753,753,1205,1205,1205,1205,1026,,753,,753", "753,753,,,753,753,,1205,1205,1205,1205,,,1208,1205,1208,1208,1208,1208", "1208,1205,1205,,,1205,,,,1208,,,,,,,,,,,,,,,,1205,,,1205,,,1208,1205", ",,1205,,,,,1208,1208,1208,1208,,,,1208,,,,1205,,,,1205,1205,1205,1205", ",1205,1205,1205,1205,,,,,1205,1205,1129,1129,1129,1129,,,1205,,1205", "1205,1205,,,1205,1205,,1129,1129,1129,1129,,,1138,1129,1138,1138,1138", "1138,1138,1129,1129,,,1129,,,,1138,,,,,,,,,,,,,,,,1129,,,1129,,,1138", "1129,,,1129,,1129,,,1138,1138,1138,1138,,,,1138,,,,1129,,,,1129,1129", "1129,1129,,1129,1129,1129,1129,,,,,1129,1129,989,989,989,989,,,1129", ",1129,1129,1129,,,1129,1129,,989,989,989,989,,,,989,989,,,,,989,989", ",,989,989,,,,,,,,,,,,,,,,,,,989,,,989,,,,989,,,989,,989,,,,,,,989,,", ",,,,989,,,,989,989,989,989,,989,989,989,989,,,,,989,989,942,942,942", "942,,,989,,989,989,989,,,989,989,,942,942,942,942,,,1135,942,1135,1135", "1135,1135,1135,942,942,,,942,,,,1135,,,,,,,,,,,,,,,,942,,,942,,,1135", "942,,,942,,,,,1135,1135,1135,1135,,,,1135,,,,942,,,,942,942,942,942", ",942,942,942,942,,,,,942,942,924,924,924,924,,,942,,942,942,942,,,942", "942,,924,924,924,924,,,1231,924,1231,1231,1231,1231,1231,924,924,,,924", ",,,1231,,,,,,,,,,,,,,,,924,,,924,,,1231,924,,,924,,924,,,,,1231,1231", ",,,1231,,,,924,,,,924,924,924,924,,924,924,924,924,,,,,924,924,745,745", "745,745,,,924,,924,924,924,,,924,924,,745,745,745,745,,,,745,,,,,,745", "745,,,745,,,,,,,,,,,,,,,,,,,,745,,,745,,,,745,,,745,,745,,,,,,,1166", ",1166,1166,1166,1166,1166,745,,,,745,745,745,745,1166,745,745,745,745", ",,,,745,745,745,943,943,943,943,,745,,745,745,745,1166,,745,745,,,943", "943,943,943,,1166,1166,943,,,1166,,,943,943,,,943,,,,,,,,,,,,,,,,,,", ",943,,,943,,,,943,,,943,,,1166,,,,,,,,,,,,,943,,,,943,943,943,943,,943", "943,943,943,,,,,943,943,930,930,930,930,,,943,,943,943,943,,,943,943", ",930,930,930,930,,,,930,930,,,,,930,930,,,930,930,,,,,,,,,,,,,,,,,,", "930,,,930,,,,930,,,930,,930,,,,,,,930,,,,,,,930,,,,930,930,930,930,", "930,930,930,930,,,,,930,930,929,929,929,929,,,930,,930,930,930,,,930", "930,,929,929,929,929,,,,929,929,,,,,929,929,,,929,929,,,,,,,,,,,,,,", ",,,,929,,,929,,,,929,,,929,,929,,,,,,,929,,,,,,,929,,,,929,929,929,929", ",929,929,929,929,,,,,929,929,,,,,,,929,,929,929,929,,,929,929,780,780", "780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780", "780,780,780,780,780,,,,780,780,780,780,780,780,780,780,780,780,,,,,", "780,780,780,780,780,780,780,780,780,,,780,,,,,,,,780,780,,780,780,780", "780,780,780,780,,,780,780,,,,780,780,780,780,,,,,,,,,,,,,,780,780,,780", "780,780,780,780,780,780,780,780,780,780,780,,,780,528,528,528,528,,", "1212,,1212,1212,1212,1212,1212,,,,528,528,528,528,,1212,,528,528,,,", ",528,528,,,528,528,,,,,,,,,1212,,,,,,,,,,528,1212,1212,528,,,1212,528", ",,528,,528,,,,,,,528,,,,,,,528,,,,528,528,528,528,,528,528,528,528,", ",,,528,528,527,527,527,527,,,528,,528,528,528,,,528,528,,527,527,527", "527,,,,527,527,,,,,527,527,,,527,527,,,,,,,,,,,,,,,,,,,527,,,527,,,", "527,,,527,,527,,,,,,,527,,,,,,,527,,,,527,527,527,527,,527,527,527,527", ",,,,527,527,1173,1173,1173,1173,,,527,,527,527,527,,,527,527,,1173,1173", "1173,1173,,,,1173,,,,,,1173,1173,,,1173,,,,,,,,,,,,,,,,,,,,1173,,,1173", ",,,1173,,,1173,,,,,,,,,,,,,,,,1173,,,,1173,1173,1173,1173,,1173,1173", "1173,1173,,,,,1173,1173,1116,1116,1116,1116,,,1173,,1173,1173,1173,", ",1173,1173,,1116,1116,1116,1116,,,,1116,,,,,,1116,1116,,,1116,,,,,,", ",,,,,,,,,,,,,1116,,,1116,,,,1116,,,1116,,,,,,,,,,,,,,,,1116,,,,1116", "1116,1116,1116,,1116,1116,1116,1116,,,,,1116,1116,926,926,926,926,,", "1116,,1116,1116,1116,,,1116,1116,,926,926,926,926,,,,926,,,,,,926,926", ",,926,,,,,,,,,,,,,,,,,,,,926,,,926,,,,926,,,926,,,,,,,,,,,,,,,,926,", ",,926,926,926,926,,926,926,926,926,,,,,926,926,1125,1125,1125,1125,", ",926,,926,926,926,,,926,926,,1125,1125,1125,1125,,,,1125,,,,,,1125,1125", ",,1125,,,,,,,,,,,,,,,,,,,,1125,,,1125,,,,1125,,,1125,,,,,,,,,,,,,,,", "1125,,,,1125,1125,1125,1125,,1125,1125,1125,1125,,,,,1125,1125,936,936", "936,936,,,1125,,1125,1125,1125,,,1125,1125,,936,936,936,936,,,,936,", ",,,,936,936,,,936,,,,,,,,763,763,763,763,,,,,,,,,936,,,936,763,763,763", "936,,,936,,936,,,,,763,763,,,763,,,,,936,,,,936,936,936,936,,936,936", "936,936,,,,,936,936,,,,,,,936,,936,936,936,,,936,936,233,,233,233,233", "233,233,,,,,763,763,763,763,233,763,763,763,763,,,,,763,763,950,950", "950,950,,,763,,763,763,763,233,,,,,950,950,950,,233,233,233,233,,,,233", ",950,950,,,950,,,,,,,,,,,,705,,705,705,705,705,705,,,,,,,,,705,,,,,", "234,233,234,234,234,234,234,,,,,,,,,234,705,950,950,950,950,,950,950", "950,950,,705,705,,950,950,705,,,,,234,950,,950,950,950,,,,234,234,234", "234,,,409,234,409,409,409,409,409,,1020,,1020,1020,1020,1020,1020,409", ",,,,705,,,1020,,644,,644,644,644,644,644,,,,,,409,409,,644,234,,,,1020", "409,409,409,409,,,,409,1020,1020,1020,1020,,,,1020,644,,,,,,,,,644,644", "644,644,,,1024,644,1024,1024,1024,1024,1024,,,,,,,,,1024,409,,,,,,,", "1020,,,,,,,,,,,,,1024,,,,644,,,,,,,1024,1024,675,675,,1024,675,,,,,", ",,675,675,,675,675,675,675,675,675,675,,,675,675,,,,675,675,675,675", ",,,,,675,,,,,1024,,,675,675,,675,675,675,675,675,675,675,675,675,675", "675,675,636,636,675,,636,,,,,,,,636,636,,636,636,636,636,636,636,636", ",,636,636,,,,636,636,636,636,,,,,,636,,,,,,,,636,636,,636,636,636,636", "636,636,636,636,636,636,636,636,629,629,636,,629,,,,,,,,629,629,,629", "629,629,629,629,629,629,,,629,629,,,,629,629,629,629,,,,,,629,,,,,,", ",629,629,,629,629,629,629,629,629,629,629,629,629,629,629,226,226,629", ",226,,,,,,,,226,226,,226,226,226,226,226,226,226,,,226,226,,,,226,226", "226,226,,,,,,226,,,,,,,,226,226,,226,226,226,226,226,226,226,226,226", "226,226,226,602,602,226,,602,,,,,,,,602,602,,602,602,602,602,602,602", "602,,,602,602,,,,602,602,602,602,,,,,,602,,,,,,,,602,602,,602,602,602", "602,602,602,602,602,602,602,602,602,637,637,602,,637,,,,,,,,637,637", ",637,637,637,637,637,637,637,,,637,637,,,,637,637,637,637,,,,,,637,", ",,,,,,637,637,,637,637,637,637,637,637,637,637,637,637,637,637,225,225", "637,,225,,,,,,,,225,225,,225,225,225,225,225,225,225,,,225,225,,,,225", "225,225,225,,,,,,225,,,,,,,,225,225,,225,225,225,225,225,225,225,225", "225,225,225,225,302,302,225,,302,,,,,,,,302,302,,302,302,302,302,302", "302,302,,,302,302,,,,302,302,302,302,,,,,,,,,,,,,,302,302,,302,302,302", "302,302,302,302,302,302,302,302,302,519,519,302,,519,,,,,,,,519,519", ",519,519,519,519,519,519,519,,,519,519,,,,519,519,519,519,,,,,,519,", ",,,,,,519,519,,519,519,519,519,519,519,519,519,519,519,519,519,518,518", "519,,518,,,,,,,,518,518,,518,518,518,518,518,518,518,,,518,518,,,,518", "518,518,518,,,,,,518,,,,,,,,518,518,,518,518,518,518,518,518,518,518", "518,518,518,518,591,591,518,,591,,,,,,,,591,591,,591,591,591,591,591", "591,591,,,591,591,,,,591,591,591,591,,,,,,591,,,,,,,,591,591,,591,591", "591,591,591,591,591,591,591,591,591,591,592,592,591,,592,,,,,,,,592", "592,,592,592,592,592,592,592,592,,,592,592,,,,592,592,592,592,,,,,,592", ",,,,,,,592,592,,592,592,592,592,592,592,592,592,592,592,592,592,1163", "1163,592,,1163,,,,,,,,1163,1163,,1163,1163,1163,1163,1163,1163,1163", ",,1163,1163,,,,1163,1163,1163,1163,,,,,,1163,,,,,,,,1163,1163,,1163", "1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,674,674,1163", ",674,,,,,,,,674,674,,674,674,674,674,674,674,674,,,674,674,,,,674,674", "674,674,,,,,,674,,,,,,,,674,674,,674,674,674,674,674,674,674,674,674", "674,674,674,1164,1164,674,,1164,,,,,,,,1164,1164,,1164,1164,1164,1164", "1164,1164,1164,,,1164,1164,,,,1164,1164,1164,1164,,,,,,1164,,,,,,,,1164", "1164,,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,630", "630,1164,,630,,,,,,,,630,630,,630,630,630,630,630,630,630,,,630,630", ",,,630,630,630,630,,,,,,630,,,,,,,,630,630,,630,630,630,630,630,630", "630,630,630,630,630,630,1188,1188,630,,1188,,,,,,,,1188,1188,,1188,1188", "1188,1188,1188,1188,1188,,,1188,1188,,,,1188,1188,1188,1188,,,,,,1188", ",,,,,,,1188,1188,,1188,1188,1188,1188,1188,1188,1188,1188,1188,1188", "1188,1188,601,601,1188,,601,,,,,,,,601,601,,601,601,601,601,601,601", "601,,,601,601,,,,601,601,601,601,,,,,,601,,,,,,,,601,601,,601,601,601", "601,601,601,601,601,601,601,601,601,,,601"]; + racc_action_check = (arr = $$$('Array').$new(28717, nil)); + idx = 0; + $send(clist, 'each', [], function $Ruby31$4(str){ + + + if (str == null) str = nil;; + return $send(str.$split(",", -1), 'each', [], function $$5(i){var $writer = nil; + + + + if (i == null) i = nil;; + if (!$truthy(i['$empty?']())) { + + $writer = [idx, i.$to_i()]; + $send(arr, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return (idx = $rb_plus(idx, 1));}, 1);}, 1); + racc_action_pointer = [nil, 1550, 2590, 30, nil, 485, nil, 21057, 1279, -15, 24908, 25292, 63, nil, 111, 130, 888, 195, 878, 334, 213, 587, nil, -72, 16018, 1438, 25420, 260, nil, 586, nil, 10, 7680, 8479, 8613, 9947, 10209, nil, 1870, 24507, 23582, nil, 199, 495, 356, 292, 12722, 13115, 252, 13377, 14041, 977, 19960, 226, 694, nil, nil, nil, nil, nil, nil, nil, nil, nil, 21341, nil, 15494, 15351, 14696, 170, nil, 14434, 14303, nil, nil, 21200, 24638, 24114, 24769, nil, nil, nil, nil, nil, nil, nil, nil, nil, 877, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 610, nil, nil, 722, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 20234, nil, nil, nil, nil, 20091, 19567, 19436, 19305, 19174, nil, 4318, nil, -26, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 266, nil, 4462, 22788, 21740, 21609, 14172, 13910, 13779, 27931, 27748, nil, nil, 264, 2734, 305, nil, 27294, 27386, 317, 1294, 12043, 11912, 11257, nil, nil, 1133, 138, 140, 432, 174, 389, 452, nil, 10078, 131, 191, 3022, 455, nil, nil, 7277, 7146, 7015, 6753, 6491, 6360, 6229, 6098, 5967, 18507, 18376, 18245, 17590, 17459, 17328, 16411, 16149, 15756, 15220, 15089, 20639, 21478, nil, nil, nil, nil, 13648, nil, nil, 583, 548, 381, -62, 413, 376, 696, 695, 584, 585, nil, nil, nil, 15625, nil, nil, 27992, nil, nil, 484, 16673, 17066, nil, nil, nil, nil, nil, nil, nil, 17197, nil, 2446, nil, 455, 459, nil, 17721, 512, 17852, nil, nil, 17983, 18114, nil, nil, -73, nil, 5836, 1711, 509, 484, 1726, 513, 564, 525, 23312, 2878, 999, 1139, 614, 617, 582, nil, 610, 571, 253, 616, 644, nil, nil, nil, 650, 171, 611, 23852, nil, 471, 1022, 3742, 3886, 687, nil, 691, 12591, nil, 677, 2302, 1567, 638, nil, 541, 621, 676, 662, 651, 690, nil, 870, 35, 36, 22133, 1006, 4894, 459, 766, 651, 25, 39, 730, 747, 4, 793, nil, nil, 1141, 1285, 370, nil, 692, nil, 714, 14827, nil, 27438, nil, 531, 386, 291, 288, 421, 142, 191, 396, nil, nil, nil, nil, nil, nil, nil, 713, 25036, nil, nil, nil, nil, 726, nil, 798, 717, 14565, 725, nil, nil, 715, nil, 690, -60, 819, nil, nil, 1582, nil, nil, nil, nil, nil, 1870, 735, nil, 740, 749, 217, 251, 21057, nil, nil, nil, 0, 861, 795, nil, nil, 20916, 20780, 20508, 880, 882, nil, nil, 769, 775, 780, nil, nil, 785, 787, 809, nil, nil, nil, nil, nil, nil, nil, nil, nil, 801, 1280, nil, nil, 19031, nil, nil, nil, 1, nil, nil, nil, 899, nil, nil, 901, 579, 22919, 951, nil, nil, nil, -26, nil, 885, 28114, 28053, 22657, -85, 22526, 22395, 22264, 835, 853, 26710, 26612, 3454, 5300, 814, 855, 936, 938, 947, 952, 5693, 5431, 5562, 5169, 5038, 4894, 4750, 4606, 4462, 3482, 3568, 4318, 4174, 2590, 4030, nil, 154, nil, 13518, nil, nil, nil, nil, 13246, 889, 897, 901, nil, nil, nil, 902, nil, nil, 12984, nil, 12853, nil, 12460, nil, 219, nil, nil, nil, 12317, 1438, nil, 904, 909, nil, nil, 910, 23451, 916, 12174, 28175, 28236, 995, 958, nil, nil, 24376, 929, nil, 11781, 28602, 27809, 11650, 3598, 11388, nil, 1066, 947, 990, nil, 11126, nil, nil, 10995, nil, nil, nil, 4030, 1075, nil, 3742, 25, 1080, 1084, 37, 1086, 10733, 10602, 27687, 28480, -5, nil, nil, 472, nil, 27626, 27870, 10340, nil, nil, 191, 2014, nil, 27463, nil, nil, nil, nil, 1249, nil, nil, nil, 977, nil, nil, 247, nil, 286, nil, nil, 966, nil, 968, nil, nil, nil, 25164, nil, 9816, 971, 9673, 9411, 9280, 28358, 27565, 9018, 8875, 733, 1011, 8744, 8076, 7945, 7814, 1017, nil, nil, 7539, 7408, 1021, nil, 1075, 1726, 1105, 6884, nil, nil, 1120, nil, nil, 376, 13512, nil, 13482, nil, 27365, nil, 975, 6622, nil, 1310, nil, 992, 997, 1057, 1002, nil, nil, nil, nil, nil, nil, 1090, 2014, nil, nil, nil, 307, 332, 222, 361, 1006, 5693, 5562, nil, 120, nil, nil, nil, nil, 1029, nil, nil, nil, 555, 26091, 311, nil, 1007, 1092, 1014, nil, nil, 25503, nil, nil, 375, nil, nil, 586, nil, nil, 861, 27241, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 791, 464, nil, nil, 1016, 26529, nil, 1148, nil, 1131, 4, nil, nil, 16280, nil, 1046, 1053, 1154, nil, 1041, nil, 1088, 22002, nil, nil, 21871, nil, 109, 23721, 1044, nil, 1048, -1, 233, 1103, 249, 799, 1117, 1088, 24245, nil, 1156, 2158, 10864, nil, nil, nil, 372, 876, nil, 1213, nil, nil, nil, nil, nil, 1219, 1220, nil, nil, 6, 1101, -21, -19, 68, 7, 1150, 997, 989, nil, 1103, 4606, 14958, nil, 1227, 22, 1107, nil, nil, nil, nil, nil, 4750, nil, nil, nil, nil, nil, nil, nil, nil, 1106, 15887, 1110, 387, 385, 110, 500, nil, 2302, 16542, nil, 1110, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 16804, 16935, 1236, nil, 3886, 1121, 1169, nil, nil, 1129, nil, 1212, nil, nil, 1131, 1136, nil, 1141, 1143, nil, 1144, nil, nil, nil, 1150, 1204, 507, nil, nil, 18638, 18769, 18900, 5169, 5300, 5431, 333, 25993, 1231, 27004, -65, -35, 26386, 26288, 480, -32, 1154, 1155, nil, 27200, nil, 1154, 747, nil, 1178, 25895, 26190, nil, 929, 1243, 281, nil, nil, 27339, 20916, nil, nil, nil, nil, 8207, nil, nil, nil, nil, nil, 8338, nil, nil, 1227, nil, nil, 1237, 1224, nil, nil, 429, 2446, nil, nil, nil, nil, 1227, 250, nil, 137, nil, 1357, nil, 9149, 1361, nil, nil, 25797, 9542, 5038, -18, 1362, nil, 1363, 369, 1582, nil, nil, nil, nil, 1238, 1285, 1249, 1247, 304, nil, nil, 10471, 3310, 3166, nil, 3166, nil, nil, -10, 23050, nil, nil, 27446, nil, 497, nil, 27515, nil, 25493, nil, nil, nil, nil, 1248, 1250, 3022, 2878, 11519, nil, 1251, nil, nil, nil, nil, 1257, 1258, 1260, 1262, 1263, 1264, nil, nil, nil, 1309, 1267, -39, nil, 1276, nil, nil, -66, 1275, nil, nil, nil, nil, nil, nil, 1323, 2734, 2158, nil, nil, 1285, 1286, nil, 1287, 1288, 1291, nil, 1316, 1296, 1283, 23181, nil, nil, nil, nil, nil, 8, nil, 26, 771, nil, 40, nil, nil, nil, 1420, 3454, 3310, 1136, nil, nil, nil, 1438, 32, 33, 872, 1376, 34, nil, 1302, 1312, 1313, 1314, 1348, 3584, 26906, nil, nil, nil, nil, nil, nil, nil, 1317, 27102, nil, 145, nil, 25699, nil, nil, 815, nil, nil, 25898, nil, nil, 25702, nil, 13537, nil, nil, 1342, 23983, 763, 1397, 3598, nil, 19698, 19829, nil, nil, nil, nil, 1341, 1454, 713, nil, nil, nil, 1457, 20377, 28297, 28419, 69, 26144, nil, nil, nil, nil, 1332, 1333, 26808, 1341, nil, nil, 1342, nil, nil, 1361, 1365, 1382, 1385, nil, 1386, nil, 618, 28541, nil, 973, 4174, nil, nil, nil, nil, nil, 1195, nil, 1392, 76, 79, 109, 136, 1391, 25601, 1394, nil, 25604, nil, 23629, nil, 26599, nil, 23359, nil, nil, 1439, 1442, nil, 362, nil, 142, nil, 1399, 1401, 1404, 1409, nil, nil, nil, 25996, nil, nil, nil, nil, -129, nil]; + racc_action_default = [-1, -745, -4, -745, -2, -730, -5, -745, -8, -745, -745, -745, -745, -31, -745, -745, -36, -745, -745, -639, -639, -311, -52, -732, -745, -61, -745, -69, -70, -71, -75, -287, -287, -287, -324, -352, -353, -87, -13, -91, -99, -101, -745, -626, -627, -745, -745, -745, -745, -745, -745, -239, -745, -732, -258, -302, -303, -304, -305, -306, -307, -308, -309, -310, -718, -313, -317, -744, -707, -333, -335, -745, -745, -63, -63, -730, -745, -745, -745, -354, -355, -357, -358, -359, -360, -419, -563, -564, -565, -566, -587, -569, -570, -589, -591, -574, -579, -583, -585, -601, -602, -603, -587, -605, -607, -608, -609, -610, -716, -615, -616, -717, -618, -619, -620, -621, -622, -623, -624, -625, -630, -631, 1238, -3, -731, -740, -741, -742, -7, -745, -745, -745, -745, -745, -9, -4, -19, -745, -130, -131, -132, -133, -134, -135, -136, -140, -141, -142, -143, -144, -145, -146, -147, -148, -149, -150, -151, -152, -153, -154, -155, -156, -157, -158, -159, -160, -161, -162, -163, -164, -165, -166, -167, -168, -169, -170, -171, -172, -173, -174, -175, -176, -177, -178, -179, -180, -181, -182, -183, -184, -185, -186, -187, -188, -189, -190, -191, -192, -193, -194, -195, -196, -197, -198, -199, -200, -201, -202, -203, -204, -205, -206, -207, -208, -209, -210, -24, -137, -13, -745, -745, -745, -745, -745, -277, -745, -745, -728, -729, -745, -13, -638, -636, -662, -662, -745, -13, -745, -745, -732, -733, -56, -745, -626, -627, -745, -311, -745, -745, -245, -745, -639, -639, -13, -745, -57, -59, -222, -223, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -259, -260, -261, -262, -745, -65, -66, -745, -130, -131, -170, -171, -172, -188, -193, -200, -203, -626, -627, -705, -745, -428, -430, -745, -726, -727, -76, -277, -745, -332, -434, -443, -445, -82, -440, -83, -732, -84, -265, -282, -292, -292, -286, -290, -293, -745, -587, -709, -713, -745, -85, -86, -730, -14, -745, -17, -745, -89, -13, -732, -745, -92, -95, -13, -107, -108, -745, -745, -115, -324, -327, -732, -745, -639, -639, -352, -353, -356, -441, -745, -97, -745, -103, -321, -745, -224, -225, -606, -233, -234, -745, -246, -251, -13, -315, -732, -266, -737, -737, -745, -745, -737, -745, -334, -62, -745, -745, -745, -13, -13, -730, -745, -731, -626, -627, -745, -745, -311, -745, -370, -371, -125, -126, -745, -128, -745, -311, -634, -745, -348, -662, -567, -745, -745, -745, -745, -745, -745, -745, -745, -6, -743, -25, -26, -27, -28, -29, -745, -745, -21, -22, -23, -138, -745, -32, -35, -298, -745, -745, -297, -33, -745, -37, -745, -311, -49, -51, -211, -270, -293, -53, -54, -38, -212, -270, -732, -278, -292, -292, -719, -720, -287, -438, -721, -722, -720, -719, -287, -437, -439, -721, -722, -745, -555, -745, -383, -384, -732, -704, -704, -644, -645, -647, -647, -647, -661, -663, -664, -665, -666, -667, -668, -669, -670, -671, -745, -673, -675, -677, -682, -684, -685, -688, -693, -695, -696, -698, -699, -700, -702, -745, -745, -745, -48, -219, -55, -732, -331, -745, -745, -745, -277, -321, -745, -745, -745, -745, -745, -745, -745, -220, -221, -226, -227, -228, -229, -230, -231, -235, -236, -237, -238, -240, -241, -242, -243, -244, -247, -248, -249, -250, -732, -263, -67, -732, -449, -287, -719, -720, -73, -77, -663, -732, -292, -732, -288, -447, -449, -732, -326, -283, -745, -284, -745, -289, -745, -294, -745, -712, -715, -12, -731, -16, -18, -732, -88, -319, -104, -93, -745, -732, -277, -745, -745, -114, -745, -638, -606, -745, -100, -105, -745, -745, -745, -745, -264, -745, -328, -745, -732, -745, -267, -739, -738, -269, -739, -322, -323, -708, -13, -361, -362, -13, -745, -745, -745, -745, -745, -745, -277, -745, -745, -321, -63, -125, -126, -127, -745, -745, -277, -344, -632, -745, -13, -420, -662, -423, -568, -588, -593, -745, -595, -571, -590, -745, -592, -573, -745, -576, -745, -578, -581, -745, -582, -745, -604, -10, -20, -745, -30, -745, -301, -745, -745, -277, -745, -745, -745, -745, -442, -745, -279, -281, -745, -745, -78, -276, -435, -745, -745, -80, -436, -44, -254, -744, -744, -350, -637, -745, -642, -643, -745, -745, -654, -745, -657, -745, -659, -745, -745, -372, -745, -374, -376, -379, -382, -732, -676, -686, -687, -697, -701, -640, -46, -256, -351, -330, -734, -719, -720, -719, -720, -732, -745, -745, -58, -463, -466, -467, -468, -469, -471, -473, -476, -477, -534, -732, -489, -492, -504, -508, -513, -515, -516, -519, -520, -587, -523, -525, -526, -527, -532, -533, -745, -745, -537, -538, -539, -540, -541, -542, -543, -544, -545, -546, -547, -745, -745, -553, -60, -745, -745, -706, -745, -450, -72, -431, -447, -272, -279, -274, -745, -409, -745, -325, -292, -291, -295, -745, -710, -711, -745, -15, -90, -745, -96, -102, -732, -719, -720, -275, -723, -113, -745, -98, -745, -218, -232, -252, -745, -314, -316, -318, -737, -744, -363, -744, -64, -364, -365, -338, -339, -745, -745, -455, -341, -745, -732, -719, -720, -723, -320, -13, -125, -126, -129, -732, -13, -745, -346, -745, -745, -732, -594, -597, -598, -599, -600, -13, -572, -575, -577, -580, -584, -586, -139, -34, -299, -745, -732, -719, -720, -720, -719, -50, -271, -745, -735, -292, -40, -214, -41, -215, -79, -42, -217, -43, -216, -81, -745, -745, -744, -368, -13, -556, -744, -557, -558, -704, -683, -688, -703, -646, -647, -647, -674, -647, -647, -694, -647, -671, -386, -689, -732, -745, -745, -381, -672, -745, -745, -745, -745, -745, -745, -442, -464, -745, -745, -474, -475, -745, -745, -745, -494, -732, -732, -488, -495, -501, -745, -745, -491, -745, -745, -745, -507, -514, -518, -745, -522, -524, -530, -531, -535, -536, -548, -549, -745, -611, -612, -613, -126, -551, -745, -68, -429, -409, -433, -432, -745, -732, -444, -410, -732, -13, -446, -285, -296, -714, -94, -442, -106, -732, -268, -745, -366, -745, -745, -340, -342, -745, -745, -13, -442, -745, -442, -745, -745, -13, -349, -421, -424, -426, -413, -745, -745, -300, -442, -39, -213, -280, -45, -255, -11, -13, -562, -369, -745, -745, -560, -641, -745, -650, -745, -652, -745, -655, -745, -658, -660, -373, -375, -377, -380, -47, -257, -745, -465, -504, -470, -472, -481, -485, -732, -732, -732, -732, -732, -732, -552, -486, -487, -511, -496, -499, -502, -732, -587, -736, -732, -505, -509, -512, -517, -521, -528, -529, -745, -253, -13, -74, -273, -704, -704, -390, -392, -392, -392, -408, -745, -732, -671, -679, -680, -691, -448, -329, -336, -745, -337, -745, -460, -295, -744, -343, -345, -633, -745, -13, -13, -745, -422, -596, -561, -13, -626, -627, -745, -745, -311, -559, -647, -647, -647, -647, -745, -745, -745, -478, -479, -480, -482, -483, -484, -503, -497, -745, -490, -745, -493, -745, -550, -451, -745, -388, -389, -393, -399, -401, -745, -404, -745, -406, -411, -745, -745, -678, -745, -13, -456, -745, -745, -452, -453, -454, -347, -745, -745, -732, -415, -417, -418, -555, -277, -745, -745, -321, -745, -648, -651, -653, -656, -378, -505, -745, -500, -506, -510, -704, -681, -391, -392, -392, -392, -392, -692, -392, -412, -690, -745, -321, -744, -13, -461, -462, -425, -427, -414, -745, -554, -732, -719, -720, -723, -320, -647, -745, -498, -387, -745, -396, -745, -398, -745, -402, -745, -405, -407, -320, -723, -367, -744, -416, -442, -649, -392, -392, -392, -392, -457, -458, -459, -745, -394, -397, -400, -403, -392, -395]; + clist = ["44,411,301,309,313,44,141,141,318,318,318,340,285,418,454,493,493,284", "382,384,385,473,141,389,297,19,626,511,709,832,19,693,460,466,356,356", "44,344,344,635,127,698,699,571,225,618,621,339,563,702,704,706,144,144", "890,303,708,598,897,241,983,19,352,352,44,134,387,388,366,136,217,356", "356,356,393,297,297,421,422,423,424,798,232,232,305,312,314,907,8,19", "795,445,795,8,445,302,561,678,940,352,352,352,359,734,778,737,737,790", "445,555,127,124,438,439,1003,451,383,383,236,559,383,715,44,798,610", "613,1160,1059,617,512,375,44,904,44,1158,484,484,756,756,123,229,235", "336,1037,4,476,509,19,320,320,320,1030,373,973,1032,1184,19,1075,19", "1016,782,128,2,607,656,658,17,1012,338,1044,1047,17,792,801,383,383", "383,383,216,1055,571,377,380,933,595,595,986,399,516,434,798,493,934", "406,408,427,527,461,318,528,795,795,17,826,952,953,286,780,786,390,8", "667,652,654,657,657,44,369,605,425,378,8,470,785,1160,1184,298,432,44", "379,17,397,1221,639,44,1078,576,372,608,374,818,19,846,19,709,997,19", "642,915,1031,1077,44,1136,19,433,444,1079,1157,444,19,19,831,339,903", "568,905,449,450,518,319,319,319,444,844,643,999,19,426,419,409,318,318", "850,514,515,804,1097,584,17,318,1098,554,565,566,813,965,1151,17,1089", "17,1172,1228,376,989,1191,1038,1039,899,795,1174,731,484,303,929,232", "232,316,329,330,930,1180,645,939,309,942,460,466,1068,968,313,1061,44", "599,1062,622,44,356,912,955,344,44,894,1143,1,553,410,339,412,1175,413", "236,339,552,1030,1171,356,19,1206,344,414,19,415,1036,416,352,19,127", "1042,1045,417,44,591,525,526,923,852,1043,1046,596,857,806,847,17,352", "17,44,44,17,935,601,902,582,1064,1065,17,19,623,624,809,898,17,17,1178", "587,907,,,1126,809,,19,19,,961,,,,17,836,581,629,320,,141,127,696,493", "1219,845,320,,383,685,849,,,809,580,690,,,336,,,809,691,336,709,709", "979,,236,641,1152,437,437,860,904,860,,,1019,,868,725,579,,583,674,144", "1021,1023,589,1025,1027,,1028,,,992,,460,466,493,722,493,666,,994,,461", ",,1177,318,,991,17,882,,978,17,781,887,,,17,238,,,787,1006,789,684,452", "470,793,975,798,689,,,,625,,772,772,685,513,795,969,,802,,1076,,17,371", "805,756,756,562,319,445,721,,484,,,756,319,17,17,445,445,756,851,820", "445,445,599,735,735,461,318,1090,904,737,1048,599,982,1041,,461,878", "880,1049,1050,44,883,885,1229,1110,356,1052,,344,895,470,564,,1060,356", ",,344,,567,470,756,975,461,318,19,,,,,784,461,,352,318,,,,44,,,44,352", ",,,1230,841,470,823,,,825,,470,,,1133,1134,995,,,44,19,,1144,19,904", "461,318,709,709,,,,,,,,827,,,,,,141,916,19,947,44,,,900,470,,900,44", ",848,1103,1167,1168,1169,1170,,,794,,,,1120,1121,1122,,19,,,19,,1181", ",19,1182,,,,,19,19,444,,144,19,19,,,,,,444,444,,1198,,444,444,,822,864", ",1153,,,,,,967,,,,,,,1207,899,772,17,,445,,1147,,1148,772,,,1080,865", ",896,,966,772,772,873,,1060,,963,1007,,,1224,284,1223,1060,,599,141", "1176,,932,,685,17,,690,17,980,946,1096,,,,,,877,996,,,356,,,344,493", ",,,17,,,356,,,344,513,,452,,,,,,1060,,,,,352,,,,,1072,,17,594,,17,352", ",44,17,,1222,,44,,17,17,,,993,17,17,1176,,44,,,609,1131,,1029,835,981", "19,,1004,,,19,,,,,,,1040,,,,19,,,,,,,,,1156,44,815,383,,,,,,19,,,1015", "877,,1066,,,,,,444,,,,,19,,1080,1070,,1080,,772,,772,,,772,772,437,1085", ",,1087,772,,,,679,,772,772,,,,1073,,,772,772,,,1199,1014,,,,1018,932", ",,,,932,932,,,1127,,,809,44,,879,881,,1058,,884,886,,,1084,,,,,772,", "44,1080,1117,1118,1119,1072,44,19,1072,,1072,1092,383,,,,17,,1128,,", "17,44,356,,19,1105,,,,31,19,17,1102,735,31,,,,,,383,1095,,,779,,19,", ",17,352,31,,,,,,,,,,31,31,31,,31,17,,,,,,,,,,44,1072,,1072,,1072,,1072", ",,356,,,297,,,,31,,,,,31,31,1072,19,31,,,44,44,1192,1193,,,44,,,352", "900,1155,,1073,,,1073,1161,1073,772,,906,,908,,19,19,,772,,,19,772,", ",,,1163,,,461,318,17,,356,,31,297,765,765,44,31,31,31,31,31,,31,,,17", "1190,,,,470,17,,,,,1008,352,,,19,772,,,,,,17,,,,1073,,1073,470,1073", ",1073,,44,,,,,383,383,,,,,1220,,1081,772,1073,,,,,,879,881,886,884,19", "679,,,,,,,,,,,,,,679,941,,17,,,31,31,31,31,31,31,31,,,,,,31,,,,,,31", "31,31,31,,,,,17,17,381,18,,,17,,18,31,,,,,,,,,,,,,,,,242,,,,679,,,,", ",242,242,242,,18,345,345,,,,,,,,,17,,,,,31,,,,679,,,31,31,,1008,,18", "679,,,31,242,242,1002,,242,394,404,404,,,1137,1139,1141,,,,,31,,679", ",31,17,,,,31,,765,1081,,,1081,,,1081,765,1081,,,,,,764,764,765,765,", ",,,,1074,18,,,31,,242,242,242,242,18,,18,,,,,,31,31,31,,,,,,,679,,435", "448,,679,679,,,,,,31,,,,,,,,,1111,,1112,,1113,1081,,1081,,1081,,1081", ",,,,1209,1211,1213,1215,,1216,,1002,,,,,1081,,,,,,,,,,,,,,,,,,,18,242", "442,242,242,442,242,,31,,,,18,1232,1233,1234,1235,,18,442,242,242,,", ",1237,,,,,,,,,,18,,573,,575,,,577,578,,,,31,,679,679,679,,,,,,31,,941", "765,,765,,,765,765,,,,,1183,765,1185,,,,,765,765,,242,,1002,,,765,765", "242,242,,,,,,,,242,,1204,,,,,,,,,,,,,,,764,18,,31,,18,,,764,345,18,765", ",31,,,,764,764,,,,,,,,,1225,345,1226,,1227,,20,,,,670,20,,18,31,,,31", ",,1196,,,1236,31,,,242,18,18,,,,,31,,,,31,,,,20,353,353,,,,242,,,,,", ",,,,,,,,679,,,31,,,31,31,20,716,31,,,,,,31,31,353,353,353,31,31,,,,", ",,,,,,,,,,,,,,,,,,,,,,765,242,,,,,,,,765,,,,765,,,,20,,,,,,,,,20,,20", ",,,,796,,381,,799,,,242,764,,764,,,764,764,,,242,,,764,,,,765,,764,764", ",,,,,,764,764,,,,,,796,,,381,,,,,,,,,,,,765,448,,,,,,,,,,,,,31,,,764", ",,,18,20,,20,,,20,,345,,242,,,20,,,31,345,,20,20,31,31,,866,,,,,,,,31", "796,381,,20,,18,,,18,,,,,,893,242,,31,,,,,,,,242,,,911,18,,,,,31,,,", ",,,,,,,,,,,,,,,,,,18,,,442,242,,,18,,,,,,442,442,,,,442,442,,,,,,,,20", ",,,20,,,764,353,20,,,,,,31,764,,,,764,,,,,796,,353,,,,,31,,976,,,977", ",20,,,,,31,,,,,,31,,,,20,20,31,,,,,,,,764,,,,,,,,31,,,,,,,,,,,,,,,,", ",,,,,,,764,,,,,,,,1005,,,345,,,,,15,,,,,15,345,,,,242,,,,,31,,,,,,,", ",,,,,,,,,,18,,,15,,18,242,,,,,31,31,,,,18,31,,,21,,,,,21,,,,,,15,,,442", ",,,,,,398,773,773,,,,,,,,18,,,,,21,347,347,,,31,,31,31,,,,,,,,,,,,31", ",,,,,1091,,21,,,,,15,,,,,396,405,405,,15,,15,381,20,,,31,,,,,353,,,", ",242,,,,353,,,,,,,,,,,,,18,,,,,,,,20,,21,20,242,,,771,771,,18,21,,21", ",,18,,,,,,,,20,,,,,,,,18,,,,1106,,,,,,,15,,440,,,440,,,20,,,20,15,,", "20,,,15,440,,20,20,,,,20,20,,,,,,,,15,,,,,,,,,18,,,,,,,,,21,,443,,1145", "443,,,,,,,21,,,,,,21,443,18,18,,,773,,18,,,,,,773,,,21,,,,,,773,773", ",770,770,,,,,,,,,,,,,,,,,15,,,,15,1187,,,18,15,242,242,,,,,,,,,,,,242", ",,,353,,,,,,,,,,,353,15,,,,,,,,,,,,,18,21,15,15,,21,,,,347,21,,,20,", "771,,,20,,,,,771,,,,,347,20,,,771,771,,,,,,,21,,,,,,,20,43,,,,,43,,21", "21,,,,,,,,20,,,,,,,,296,,,,,,,,,,,,43,343,343,,,773,,773,,,773,773,", ",,,,773,,,,,,773,773,,,,43,,,773,773,,,,,,392,296,296,,,,,,,,,,,,,,", ",,,769,769,,20,,,770,,,,,,773,,770,,,,,,,20,,770,770,,,20,43,,,,,,,", ",43,,43,,,,20,,768,768,353,,,,,771,15,771,,,771,771,,,,,,771,,,,,,771", "771,,,,,,,771,771,,,,,,,,,,,,15,,,15,,,,20,,,,,,,,21,,,,,353,,,347,15", ",771,,,,,43,347,,,,20,20,,,,,20,43,767,767,,,773,43,,15,,21,440,,21", "773,15,,,773,,,440,440,43,,,440,440,,,,,,,21,,,,,,353,856,,20,,,,,,", ",770,,770,,,770,770,,,,21,773,770,443,,,,21,770,770,,,,443,443,,770", "770,443,443,,,,769,,,20,,,,,769,,773,,,,,,,769,769,43,,,,43,,,771,343", "43,,,,770,,,771,,,,771,,,,,,768,343,,,,,,,768,,,,,43,,,,768,768,,,,", ",,,,,43,43,,,,,,,,,771,,,,,,,,,,,,,15,,,,,15,,,,,,,,,,347,15,,,771,", ",,,,,347,,,,,,,,440,,,,,767,,,,,,,,767,,,,15,,21,,,767,767,21,,,,,770", ",,,,,21,,,770,,,,770,,,,,,,769,,769,,443,769,769,,,,,,769,,,,,,769,769", ",21,,,,,769,769,,,,,,,,,,770,,766,766,,,,,768,,768,,15,768,768,,,,,", "768,,,,,,768,768,769,,15,,770,,768,768,15,,,,,,,,,,,,,,43,,15,,,,1109", ",343,,,,,,,21,,343,,,,,,768,,,,,,,,,,21,,,,,43,21,,43,,,,,,,767,,767", ",,767,767,21,,15,,1108,767,,43,,,,767,767,34,,,,,34,767,767,,,,,,,,", ",,15,15,,43,34,,15,,,,43,,,,34,34,34,,34,769,,,,,21,,,767,769,,,,769", ",,,,405,,,,,,,,,34,,,,15,34,34,21,21,34,,,,21,,,,,768,,,,,,,,,768,,", "769,768,,,,,,,766,,,,,,,,766,,15,,,,,,405,766,766,21,34,,,,769,34,34", "34,34,34,,34,,,,,,768,,,,,,,,,,,,,,,,343,,,,,,,,,,21,343,,,,,768,767", ",,,,,,,,767,,,,767,,,,,,,,43,,,,,43,,,,,,,,,,,43,,,,,,,34,34,34,34,34", "34,34,,,,,,34,767,,,,,34,34,34,34,,,,,,,43,,,,,,,34,,,,,,,,,,767,,,", ",,,,,,,,,,,,,,,,766,,766,,,766,766,,,,,,766,,,,34,,766,766,,,,34,34", ",766,766,,,,,34,,,,,,,,,,,,43,,,,,,34,,,,34,,,,,34,,,43,,,766,,,43,", ",,,,,,,,,,,,,,43,,,,1104,34,,,,,,,,,,,,,,34,34,34,,,,,,,,,,,,,,,,,,", "34,,,,,,,,,,,,,,,43,,,,,,,,,,,,,296,,,,,,,,,,,,,,,,43,43,,,,,43,,,,", ",,,,,,249,,,34,,,,766,,,317,317,317,,,,766,,,,766,,364,365,,367,368", ",370,,296,,,43,,,,,,,,,34,317,317,,,,,,,,34,,,,,,,,,,,,766,,,,,,,,,", ",,,43,,,,,,,,,,,,,,,,,,,766,,,,,,,,,,,,,,,,34,,,,,,,,,,34,,,,,,,,,,", ",,,,,,,,,,,,,,,,,34,,,34,,,,,,,34,,,,,,,,,,34,,,,34,,,,,,,,,,,,,,,,", ",,,,317,447,,,453,317,34,,,34,34,,,34,,,,,453,34,34,,,,34,34,,,,,,249", ",,,,,,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544", "545,546,547,548,549,550,,,,,551,,,,,,,,,,,,,,,,,,,,,,,317,317,,,,,,", ",317,,,,,,,317,,317,,,317,317,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,604,,,,,34,,,,,,,,,,,,,,,,,,,,,,,34,,,,,34,34,,,,,,,,,,34,,,,,,,,", ",,,,,,,,,34,,,,,317,,,,,,,,,,,,34,,,,,,,,,,,,,,,,,,,,,,,692,,,,,,,,", ",,,,,,,,,,,,,,,,,317,,,,,,,,,,,,,723,,34,,,,,,,,317,,453,453,453,,,", ",34,,,,,,,,,,,,34,,,,,,34,,,,,,34,,,,,,,365,,,,,,,,,34,317,,317,,317", ",,,,,,,,,,,,,,,317,,,,,,,,,,453,,,816,,817,,,,,,317,,,317,,,,,,,,,,34", ",,317,317,,,,,,,,,,317,,,,,,,,,,,,,,,34,34,,,,,34,,,,,,,,,,,,317,453", "317,,,,874,,,317,317,453,453,,,,453,453,,,,,,317,,,,,,,,,34,,34,34,", "317,,,,,,,,,,34,,,,,,,,,,,,,,692,723,,,,,,,,,,,,,,34,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,317,,,,,,,,,317,,,317,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,317,,,,,,,,453,,,,,,,,", ",,,,1010,1011,,,,,,,,,,,,,,,,,,,,,,,,,,,,1033,1034,453,453,453,453,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1067,,,,,,,,,,,,,,,,,,,,,,,,,", ",,317,,,,,,,,,,,,,,,,,,,317,,,,,,,,,,,,,,,,,,,,,,,,,,453,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,317"]; + racc_goto_table = (arr = $$$('Array').$new(4752, nil)); + idx = 0; + $send(clist, 'each', [], function $Ruby31$6(str){ + + + if (str == null) str = nil;; + return $send(str.$split(",", -1), 'each', [], function $$7(i){var $writer = nil; + + + + if (i == null) i = nil;; + if (!$truthy(i['$empty?']())) { + + $writer = [idx, i.$to_i()]; + $send(arr, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return (idx = $rb_plus(idx, 1));}, 1);}, 1); + clist = ["72,198,158,91,91,72,75,75,36,36,36,68,46,198,31,230,230,48,107,19,19", "10,75,19,72,34,112,10,128,113,34,12,55,55,82,82,72,72,72,73,117,139", "139,94,33,110,110,11,92,228,228,228,77,77,13,33,135,70,133,22,111,34", "34,34,72,9,44,44,80,17,17,82,82,82,72,72,72,19,19,19,19,239,87,87,56", "56,56,235,8,34,95,20,95,8,20,51,31,32,187,34,34,34,69,41,41,177,177", "58,20,55,117,7,24,24,149,28,26,26,119,57,26,129,72,239,89,89,152,192", "89,28,87,72,231,72,151,225,225,200,200,5,35,35,64,193,2,157,157,34,90", "90,90,127,8,147,130,236,34,145,34,207,161,6,3,10,214,214,29,14,65,178", "178,29,161,16,26,26,26,26,18,178,94,90,90,175,224,224,13,21,66,25,239", "230,176,74,74,27,42,91,36,43,95,95,29,45,202,202,50,52,60,5,8,78,215", "215,215,215,72,83,84,8,86,8,75,93,152,236,105,11,72,106,29,114,151,116", "72,149,198,120,121,122,123,34,124,34,128,125,34,126,128,131,136,72,142", "34,22,22,143,150,22,34,34,112,11,146,66,146,26,26,33,88,88,88,22,73", "153,154,34,2,6,155,36,36,156,26,26,70,159,66,29,36,160,162,164,165,70", "168,169,29,170,29,192,171,88,172,173,180,182,200,95,192,31,225,33,183", "87,87,63,63,63,184,145,157,188,91,189,55,55,147,58,91,195,72,68,196", "19,72,82,129,205,72,72,206,149,1,26,210,11,211,193,212,119,11,51,127", "130,82,34,192,72,213,34,216,175,217,34,34,117,175,175,218,72,33,35,35", "32,219,176,176,80,220,31,223,29,34,29,72,72,29,32,33,229,9,202,202,29", "34,11,11,55,233,29,29,234,69,235,,,187,55,,34,34,,73,,,,29,31,8,33,90", ",75,117,66,230,111,31,90,,26,91,10,,,55,7,91,,,64,,,55,36,64,128,128", "32,,119,26,13,88,88,215,231,215,,,139,,31,66,5,,65,33,77,228,228,65", "228,228,,228,,,32,,55,55,230,36,230,17,,32,,91,,,133,36,,110,29,57,", "70,29,66,57,,,29,40,,,66,32,66,56,79,75,66,94,239,56,,,,5,,72,72,91", "79,95,92,,66,,146,,29,40,66,200,200,88,88,20,117,,225,,,200,88,29,29", "20,20,200,157,66,20,20,68,174,174,91,36,41,231,177,73,68,89,32,,91,28", "28,32,32,72,28,28,13,146,82,191,,72,24,75,63,,191,82,,,72,,63,75,200", "94,91,36,34,,,,,56,91,,34,36,,,,72,,,72,34,,,,113,44,75,11,,,11,,75", ",,139,139,10,,,72,34,,135,34,231,91,36,128,128,,,,,,,,117,,,,,,75,66", "34,198,72,,,140,75,,140,72,,117,110,228,228,228,228,,,90,,,,32,32,32", ",34,,,34,,146,,34,146,,,,,34,34,22,,77,34,34,,,,,,22,22,,12,,22,22,", "90,17,,112,,,,,,107,,,,,,,139,200,72,29,,20,,110,,110,72,,,230,8,,87", ",158,72,72,8,,191,,46,28,,,146,48,228,191,,68,75,191,,174,,91,29,,91", "29,68,174,10,,,,,,90,19,,,82,,,72,230,,,,29,,,82,,,72,79,,79,,,,,,191", ",,,,34,,,,,132,,29,40,,29,34,,72,29,,32,,72,,29,29,,,11,29,29,191,,72", ",,40,10,,66,88,26,34,,11,,,34,,,,,,,66,,,,34,,,,,,,,,10,72,79,26,,,", ",,34,,,11,90,,19,,,,,,22,,,,,34,,230,66,,230,,72,,72,,,72,72,88,66,", ",19,72,,,,40,,72,72,,,,140,,,72,72,,,31,87,,,,87,174,,,,,174,174,,,198", ",,55,72,,79,79,,174,,79,79,,,11,,,,,72,,72,230,66,66,66,132,72,34,132", ",132,11,26,,,,29,,66,,,29,72,82,,34,72,,,,59,34,29,11,174,59,,,,,,26", "117,,,40,,34,,,29,34,59,,,,,,,,,,59,59,59,,59,29,,,,,,,,,,72,132,,132", ",132,,132,,,82,,,72,,,,59,,,,,59,59,132,34,59,,,72,72,19,19,,,72,,,34", "140,11,,140,,,140,11,140,72,,144,,144,,34,34,,72,,,34,72,,,,,33,,,91", "36,29,,82,,59,72,98,98,72,59,59,59,59,59,,59,,,29,11,,,,75,29,,,,,79", "34,,,34,72,,,,,,29,,,,140,,140,75,140,,140,,72,,,,,26,26,,,,,11,,232", "72,140,,,,,,79,79,79,79,34,40,,,,,,,,,,,,,,40,40,,29,,,59,59,59,59,59", "59,59,,,,,,59,,,,,,59,59,59,59,,,,,29,29,85,30,,,29,,30,59,,,,,,,,,", ",,,,,,30,,,,40,,,,,,30,30,30,,30,30,30,,,,,,,,,29,,,,,59,,,,40,,,59", "59,,79,,30,40,,,59,30,30,40,,30,30,30,30,,,141,141,141,,,,,59,,40,,59", "29,,,,59,,98,232,,,232,,,232,98,232,,,,,,97,97,98,98,,,,,,144,30,,,59", ",30,30,30,30,30,,30,,,,,,59,59,59,,,,,,,40,,85,85,,40,40,,,,,,59,,,", ",,,,,144,,144,,144,232,,232,,232,,232,,,,,141,141,141,141,,141,,40,", ",,,232,,,,,,,,,,,,,,,,,,,30,30,30,30,30,30,30,,59,,,,30,141,141,141", "141,,30,30,30,30,,,,141,,,,,,,,,,30,,85,,85,,,85,85,,,,59,,40,40,40", ",,,,,59,,40,98,,98,,,98,98,,,,,144,98,144,,,,,98,98,,30,,40,,,98,98", "30,30,,,,,,,,30,,144,,,,,,,,,,,,,,,97,30,,59,,30,,,97,30,30,98,,59,", ",,97,97,,,,,,,,,144,30,144,,144,,38,,,,85,38,,30,59,,,59,,,40,,,144", "59,,,30,30,30,,,,,59,,,,59,,,,38,38,38,,,,30,,,,,,,,,,,,,,40,,,59,,", "59,59,38,85,59,,,,,,59,59,38,38,38,59,59,,,,,,,,,,,,,,,,,,,,,,,,,,,98", "30,,,,,,,,98,,,,98,,,,38,,,,,,,,,38,,38,,,,,85,,85,,85,,,30,97,,97,", ",97,97,,,30,,,97,,,,98,,97,97,,,,,,,97,97,,,,,,85,,,85,,,,,,,,,,,,98", "85,,,,,,,,,,,,,59,,,97,,,,30,38,,38,,,38,,30,,30,,,38,,,59,30,,38,38", "59,59,,85,,,,,,,,59,85,85,,38,,30,,,30,,,,,,85,30,,59,,,,,,,,30,,,85", "30,,,,,59,,,,,,,,,,,,,,,,,,,,,,30,,,30,30,,,30,,,,,,30,30,,,,30,30,", ",,,,,,38,,,,38,,,97,38,38,,,,,,59,97,,,,97,,,,,85,,38,,,,,59,,85,,,85", ",38,,,,,59,,,,,,59,,,,38,38,59,,,,,,,,97,,,,,,,,59,,,,,,,,,,,,,,,,,", ",,,,,,97,,,,,,,,85,,,30,,,,,23,,,,,23,30,,,,30,,,,,59,,,,,,,,,,,,,,", ",,,30,,,23,,30,30,,,,,59,59,,,,30,59,,,39,,,,,39,,,,,,23,,,30,,,,,,", "23,109,109,,,,,,,,30,,,,,39,39,39,,,59,,59,59,,,,,,,,,,,,59,,,,,,85", ",39,,,,,23,,,,,39,39,39,,23,,23,85,38,,,59,,,,,38,,,,,30,,,,38,,,,,", ",,,,,,,30,,,,,,,,38,,39,38,30,,,104,104,,30,39,,39,,,30,,,,,,,,38,,", ",,,,,30,,,,30,,,,,,,23,,23,,,23,,,38,,,38,23,,,38,,,23,23,,38,38,,,", "38,38,,,,,,,,23,,,,,,,,,30,,,,,,,,,39,,39,,30,39,,,,,,,39,,,,,,39,39", "30,30,,,109,,30,,,,,,109,,,39,,,,,,109,109,,103,103,,,,,,,,,,,,,,,,", "23,,,,23,30,,,30,23,30,30,,,,,,,,,,,,30,,,,38,,,,,,,,,,,38,23,,,,,,", ",,,,,,30,39,23,23,,39,,,,39,39,,,38,,104,,,38,,,,,104,,,,,39,38,,,104", "104,,,,,,,39,,,,,,,38,71,,,,,71,,39,39,,,,,,,,38,,,,,,,,71,,,,,,,,,", ",,71,71,71,,,109,,109,,,109,109,,,,,,109,,,,,,109,109,,,,71,,,109,109", ",,,,,71,71,71,,,,,,,,,,,,,,,,,,102,102,,38,,,103,,,,,,109,,103,,,,,", ",38,,103,103,,,38,71,,,,,,,,,71,,71,,,,38,,101,101,38,,,,,104,23,104", ",,104,104,,,,,,104,,,,,,104,104,,,,,,,104,104,,,,,,,,,,,,23,,,23,,,", "38,,,,,,,,39,,,,,38,,,39,23,,104,,,,,71,39,,,,38,38,,,,,38,71,100,100", ",,109,71,,23,,39,23,,39,109,23,,,109,,,23,23,71,,,23,23,,,,,,,39,,,", ",,38,39,,38,,,,,,,,103,,103,,,103,103,,,,39,109,103,39,,,,39,103,103", ",,,39,39,,103,103,39,39,,,,102,,,38,,,,,102,,109,,,,,,,102,102,71,,", ",71,,,104,71,71,,,,103,,,104,,,,104,,,,,,101,71,,,,,,,101,,,,,71,,,", "101,101,,,,,,,,,,71,71,,,,,,,,,104,,,,,,,,,,,,,23,,,,,23,,,,,,,,,,39", "23,,,104,,,,,,,39,,,,,,,,23,,,,,100,,,,,,,,100,,,,23,,39,,,100,100,39", ",,,,103,,,,,,39,,,103,,,,103,,,,,,,102,,102,,39,102,102,,,,,,102,,,", ",,102,102,,39,,,,,102,102,,,,,,,,,,103,,99,99,,,,,101,,101,,23,101,101", ",,,,,101,,,,,,101,101,102,,23,,103,,101,101,23,,,,,,,,,,,,,,71,,23,", ",,23,,71,,,,,,,39,,71,,,,,,101,,,,,,,,,,39,,,,,71,39,,71,,,,,,,100,", "100,,,100,100,39,,23,,39,100,,71,,,,100,100,62,,,,,62,100,100,,,,,,", ",,,,23,23,,71,62,,23,,,,71,,,,62,62,62,,62,102,,,,,39,,,100,102,,,,102", ",,,,39,,,,,,,,,62,,,,23,62,62,39,39,62,,,,39,,,,,101,,,,,,,,,101,,,102", "101,,,,,,,99,,,,,,,,99,,23,,,,,,39,99,99,39,62,,,,102,62,62,62,62,62", ",62,,,,,,101,,,,,,,,,,,,,,,,71,,,,,,,,,,39,71,,,,,101,100,,,,,,,,,100", ",,,100,,,,,,,,71,,,,,71,,,,,,,,,,,71,,,,,,,62,62,62,62,62,62,62,,,,", ",62,100,,,,,62,62,62,62,,,,,,,71,,,,,,,62,,,,,,,,,,100,,,,,,,,,,,,,", ",,,,,,99,,99,,,99,99,,,,,,99,,,,62,,99,99,,,,62,62,,99,99,,,,,62,,,", ",,,,,,,,71,,,,,,62,,,,62,,,,,62,,,71,,,99,,,71,,,,,,,,,,,,,,,,71,,,", "71,62,,,,,,,,,,,,,,62,62,62,,,,,,,,,,,,,,,,,,,62,,,,,,,,,,,,,,,71,,", ",,,,,,,,,,71,,,,,,,,,,,,,,,,71,71,,,,,71,,,,,,,,,,,37,,,62,,,,99,,,37", "37,37,,,,99,,,,99,,37,37,,37,37,,37,,71,,,71,,,,,,,,,62,37,37,,,,,,", ",62,,,,,,,,,,,,99,,,,,,,,,,,,,71,,,,,,,,,,,,,,,,,,,99,,,,,,,,,,,,,,", ",62,,,,,,,,,,62,,,,,,,,,,,,,,,,,,,,,,,,,,,,62,,,62,,,,,,,62,,,,,,,,", ",62,,,,62,,,,,,,,,,,,,,,,,,,,,37,37,,,37,37,62,,,62,62,,,62,,,,,37,62", "62,,,,62,62,,,,,,37,,,,,,,37,37,37,37,37,37,37,37,37,37,37,37,37,37", "37,37,37,37,37,37,37,37,,,,,37,,,,,,,,,,,,,,,,,,,,,,,37,37,,,,,,,,37", ",,,,,,37,,37,,,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,", "62,,,,,,,,,,,,,,,,,,,,,,,62,,,,,62,62,,,,,,,,,,62,,,,,,,,,,,,,,,,,,62", ",,,,37,,,,,,,,,,,,62,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,", ",,,37,,,,,,,,,,,,,37,,62,,,,,,,,37,,37,37,37,,,,,62,,,,,,,,,,,,62,,", ",,,62,,,,,,62,,,,,,,37,,,,,,,,,62,37,,37,,37,,,,,,,,,,,,,,,,37,,,,,", ",,,,37,,,37,,37,,,,,,37,,,37,,,,,,,,,,62,,,37,37,,,,,,,,,,37,,,,,,,", ",,,,,,,62,62,,,,,62,,,,,,,,,,,,37,37,37,,,,37,,,37,37,37,37,,,,37,37", ",,,,,37,,,,,,,,,62,,62,62,,37,,,,,,,,,,62,,,,,,,,,,,,,,37,37,,,,,,,", ",,,,,,62,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,37,,,37", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37", ",,,,,,,37,,,,,,,,,,,,,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,37,37,37,37", "37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,", ",,,,37,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37"]; + racc_goto_check = (arr = $$$('Array').$new(4752, nil)); + idx = 0; + $send(clist, 'each', [], function $Ruby31$8(str){ + + + if (str == null) str = nil;; + return $send(str.$split(",", -1), 'each', [], function $$9(i){var $writer = nil; + + + + if (i == null) i = nil;; + if (!$truthy(i['$empty?']())) { + + $writer = [idx, i.$to_i()]; + $send(arr, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return (idx = $rb_plus(idx, 1));}, 1);}, 1); + racc_goto_pointer = [nil, 343, 142, 162, nil, 134, 154, 106, 86, 56, -209, 9, -441, -639, -723, nil, -407, 59, 167, -52, -129, 111, 35, 2068, -107, -30, 45, 59, -108, 164, 1262, -210, -357, 26, 23, 121, -26, 3589, 1625, 2121, 484, -424, -59, -57, -7, -419, -14, nil, -9, nil, 180, 66, -345, nil, nil, -193, 53, -186, -458, 1017, -350, nil, 3145, 282, 104, 130, -51, nil, -28, 62, -303, 2499, -2, -363, 116, -4, nil, 42, -220, 291, 20, nil, -5, 166, -153, 1195, 153, 63, 235, -252, 114, -28, -258, -332, -277, -480, nil, 849, 616, 2504, 2203, 2113, 2068, 1856, 1723, 200, 161, -51, nil, 1618, -339, -763, -364, -596, 155, nil, -173, 35, nil, 98, 172, -135, 173, -366, -397, -603, -161, -762, -466, -373, -760, -664, -141, -639, nil, -437, -722, nil, nil, -436, -27, 269, -822, -716, 413, -815, -438, -638, nil, -737, -842, -965, -973, -135, -575, 194, -361, -88, -25, -714, -711, -394, -9, nil, -18, -18, nil, nil, -488, -796, -691, -919, -530, -844, 34, -562, -553, -422, -760, nil, -620, nil, -620, -431, -425, nil, nil, -648, -424, -423, nil, -352, -816, -781, nil, -615, -612, nil, -89, nil, -390, nil, -558, nil, nil, -437, -353, -735, nil, nil, 257, 254, 255, 264, -250, -200, 265, 266, 271, -274, -271, nil, nil, -259, -168, -98, nil, nil, -432, -311, -218, -569, 230, -298, -730, -616, -983, nil, nil, -491]; + racc_goto_default = [nil, nil, nil, nil, 5, nil, 6, 391, 334, nil, nil, 472, nil, 984, nil, 331, 332, nil, nil, nil, 13, 14, 22, 247, nil, nil, 16, nil, 441, 248, 363, nil, nil, 637, 251, nil, 27, 25, 252, 246, 517, nil, nil, nil, nil, nil, nil, 386, 143, 26, nil, nil, nil, 28, 29, 812, nil, nil, nil, 351, nil, 30, 348, 455, 37, nil, nil, 39, 42, 41, nil, 243, 244, 403, nil, 463, 142, 87, nil, 446, 103, 51, 54, 283, nil, 323, nil, 891, 456, nil, 457, 468, 480, 686, 569, 321, 307, 55, 56, 57, 58, 59, 60, 61, 62, 63, nil, 308, 69, 70, nil, nil, nil, nil, nil, 77, nil, 619, 78, 230, nil, nil, nil, nil, nil, nil, nil, 711, 492, nil, 712, 713, 478, 474, 475, nil, 1179, 707, 1071, nil, 479, nil, nil, nil, 481, nil, 483, nil, 971, nil, nil, nil, 490, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 467, nil, nil, 791, 783, nil, nil, nil, nil, nil, nil, 1051, nil, 736, 937, 738, 739, 743, 740, 741, nil, nil, 742, 744, nil, nil, nil, 936, 938, nil, 748, 750, 751, 752, 753, nil, 757, 501, 758, 759, 760, 761, nil, nil, nil, 86, 88, 89, nil, nil, nil, nil, 647, nil, nil, nil, nil, nil, 99, 100, nil, 231, 901, 234, 477, nil, 482, 909, 495, 497, 498, 1082, 502, 1083, 505, 508, 326]; + racc_reduce_table = [0, 0, "racc_error", 0, 150, "_reduce_1", 2, 148, "_reduce_2", 2, 149, "_reduce_3", 0, 151, "_reduce_4", 1, 151, "_reduce_5", 3, 151, "_reduce_6", 2, 151, "_reduce_7", 1, 153, "_reduce_none", 2, 153, "_reduce_9", 3, 156, "_reduce_10", 4, 157, "_reduce_11", 2, 158, "_reduce_12", 0, 162, "_reduce_13", 1, 162, "_reduce_14", 3, 162, "_reduce_15", 2, 162, "_reduce_16", 1, 163, "_reduce_none", 2, 163, "_reduce_18", 0, 174, "_reduce_19", 4, 155, "_reduce_20", 3, 155, "_reduce_21", 3, 155, "_reduce_22", 3, 155, "_reduce_23", 2, 155, "_reduce_24", 3, 155, "_reduce_25", 3, 155, "_reduce_26", 3, 155, "_reduce_27", 3, 155, "_reduce_28", 3, 155, "_reduce_29", 4, 155, "_reduce_30", 1, 155, "_reduce_none", 3, 155, "_reduce_32", 3, 155, "_reduce_33", 5, 155, "_reduce_34", 3, 155, "_reduce_35", 1, 155, "_reduce_none", 3, 167, "_reduce_37", 3, 167, "_reduce_38", 6, 167, "_reduce_39", 5, 167, "_reduce_40", 5, 167, "_reduce_41", 5, 167, "_reduce_42", 5, 167, "_reduce_43", 4, 167, "_reduce_44", 6, 167, "_reduce_45", 4, 167, "_reduce_46", 6, 167, "_reduce_47", 3, 167, "_reduce_48", 1, 175, "_reduce_none", 3, 175, "_reduce_50", 1, 175, "_reduce_none", 1, 173, "_reduce_none", 3, 173, "_reduce_53", 3, 173, "_reduce_54", 3, 173, "_reduce_55", 2, 173, "_reduce_56", 0, 189, "_reduce_57", 4, 173, "_reduce_58", 0, 190, "_reduce_59", 4, 173, "_reduce_60", 1, 173, "_reduce_none", 1, 166, "_reduce_none", 0, 194, "_reduce_63", 3, 191, "_reduce_64", 1, 193, "_reduce_65", 2, 181, "_reduce_66", 0, 199, "_reduce_67", 5, 185, "_reduce_68", 1, 169, "_reduce_none", 1, 169, "_reduce_none", 1, 200, "_reduce_none", 4, 200, "_reduce_72", 0, 207, "_reduce_73", 4, 204, "_reduce_74", 1, 206, "_reduce_none", 2, 183, "_reduce_76", 3, 183, "_reduce_77", 4, 183, "_reduce_78", 5, 183, "_reduce_79", 4, 183, "_reduce_80", 5, 183, "_reduce_81", 2, 183, "_reduce_82", 2, 183, "_reduce_83", 2, 183, "_reduce_84", 2, 183, "_reduce_85", 2, 183, "_reduce_86", 1, 168, "_reduce_87", 3, 168, "_reduce_88", 1, 212, "_reduce_89", 3, 212, "_reduce_90", 1, 211, "_reduce_none", 2, 211, "_reduce_92", 3, 211, "_reduce_93", 5, 211, "_reduce_94", 2, 211, "_reduce_95", 4, 211, "_reduce_96", 2, 211, "_reduce_97", 4, 211, "_reduce_98", 1, 211, "_reduce_99", 3, 211, "_reduce_100", 1, 215, "_reduce_none", 3, 215, "_reduce_102", 2, 214, "_reduce_103", 3, 214, "_reduce_104", 1, 217, "_reduce_105", 3, 217, "_reduce_106", 1, 216, "_reduce_107", 1, 216, "_reduce_108", 4, 216, "_reduce_109", 3, 216, "_reduce_110", 3, 216, "_reduce_111", 3, 216, "_reduce_112", 3, 216, "_reduce_113", 2, 216, "_reduce_114", 1, 216, "_reduce_115", 1, 170, "_reduce_116", 1, 170, "_reduce_117", 4, 170, "_reduce_118", 3, 170, "_reduce_119", 3, 170, "_reduce_120", 3, 170, "_reduce_121", 3, 170, "_reduce_122", 2, 170, "_reduce_123", 1, 170, "_reduce_124", 1, 220, "_reduce_125", 1, 220, "_reduce_none", 2, 221, "_reduce_127", 1, 221, "_reduce_128", 3, 221, "_reduce_129", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 164, "_reduce_135", 1, 164, "_reduce_none", 1, 165, "_reduce_137", 0, 225, "_reduce_138", 4, 165, "_reduce_139", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 3, 184, "_reduce_211", 3, 184, "_reduce_212", 6, 184, "_reduce_213", 5, 184, "_reduce_214", 5, 184, "_reduce_215", 5, 184, "_reduce_216", 5, 184, "_reduce_217", 4, 184, "_reduce_218", 3, 184, "_reduce_219", 3, 184, "_reduce_220", 3, 184, "_reduce_221", 2, 184, "_reduce_222", 2, 184, "_reduce_223", 2, 184, "_reduce_224", 2, 184, "_reduce_225", 3, 184, "_reduce_226", 3, 184, "_reduce_227", 3, 184, "_reduce_228", 3, 184, "_reduce_229", 3, 184, "_reduce_230", 3, 184, "_reduce_231", 4, 184, "_reduce_232", 2, 184, "_reduce_233", 2, 184, "_reduce_234", 3, 184, "_reduce_235", 3, 184, "_reduce_236", 3, 184, "_reduce_237", 3, 184, "_reduce_238", 1, 184, "_reduce_none", 3, 184, "_reduce_240", 3, 184, "_reduce_241", 3, 184, "_reduce_242", 3, 184, "_reduce_243", 3, 184, "_reduce_244", 2, 184, "_reduce_245", 2, 184, "_reduce_246", 3, 184, "_reduce_247", 3, 184, "_reduce_248", 3, 184, "_reduce_249", 3, 184, "_reduce_250", 0, 231, "_reduce_251", 4, 184, "_reduce_252", 6, 184, "_reduce_253", 4, 184, "_reduce_254", 6, 184, "_reduce_255", 4, 184, "_reduce_256", 6, 184, "_reduce_257", 1, 184, "_reduce_none", 1, 230, "_reduce_none", 1, 230, "_reduce_none", 1, 230, "_reduce_none", 1, 230, "_reduce_none", 3, 228, "_reduce_263", 3, 228, "_reduce_264", 1, 232, "_reduce_none", 1, 233, "_reduce_none", 2, 233, "_reduce_none", 4, 233, "_reduce_268", 2, 233, "_reduce_269", 1, 226, "_reduce_none", 3, 226, "_reduce_271", 3, 238, "_reduce_272", 5, 238, "_reduce_273", 3, 238, "_reduce_274", 0, 240, "_reduce_275", 1, 240, "_reduce_none", 0, 178, "_reduce_277", 1, 178, "_reduce_none", 2, 178, "_reduce_none", 4, 178, "_reduce_280", 2, 178, "_reduce_281", 1, 210, "_reduce_282", 2, 210, "_reduce_283", 2, 210, "_reduce_284", 4, 210, "_reduce_285", 1, 210, "_reduce_286", 0, 243, "_reduce_287", 2, 203, "_reduce_288", 2, 242, "_reduce_289", 1, 242, "_reduce_290", 2, 241, "_reduce_291", 0, 241, "_reduce_292", 1, 235, "_reduce_293", 2, 235, "_reduce_294", 3, 235, "_reduce_295", 4, 235, "_reduce_296", 1, 172, "_reduce_297", 1, 172, "_reduce_none", 3, 171, "_reduce_299", 4, 171, "_reduce_300", 2, 171, "_reduce_301", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_312", 0, 267, "_reduce_313", 4, 229, "_reduce_314", 0, 268, "_reduce_315", 4, 229, "_reduce_316", 0, 269, "_reduce_317", 4, 229, "_reduce_318", 3, 229, "_reduce_319", 3, 229, "_reduce_320", 2, 229, "_reduce_321", 3, 229, "_reduce_322", 3, 229, "_reduce_323", 1, 229, "_reduce_324", 4, 229, "_reduce_325", 3, 229, "_reduce_326", 1, 229, "_reduce_327", 0, 270, "_reduce_328", 6, 229, "_reduce_329", 4, 229, "_reduce_330", 3, 229, "_reduce_331", 2, 229, "_reduce_332", 1, 229, "_reduce_none", 2, 229, "_reduce_334", 1, 229, "_reduce_none", 6, 229, "_reduce_336", 6, 229, "_reduce_337", 4, 229, "_reduce_338", 4, 229, "_reduce_339", 5, 229, "_reduce_340", 4, 229, "_reduce_341", 5, 229, "_reduce_342", 6, 229, "_reduce_343", 0, 271, "_reduce_344", 6, 229, "_reduce_345", 0, 272, "_reduce_346", 7, 229, "_reduce_347", 0, 273, "_reduce_348", 5, 229, "_reduce_349", 4, 229, "_reduce_350", 4, 229, "_reduce_351", 1, 229, "_reduce_352", 1, 229, "_reduce_353", 1, 229, "_reduce_354", 1, 229, "_reduce_355", 1, 177, "_reduce_none", 1, 262, "_reduce_357", 1, 265, "_reduce_358", 1, 196, "_reduce_359", 1, 209, "_reduce_360", 1, 257, "_reduce_none", 1, 257, "_reduce_none", 2, 257, "_reduce_363", 1, 192, "_reduce_none", 1, 192, "_reduce_none", 1, 258, "_reduce_none", 5, 258, "_reduce_367", 1, 160, "_reduce_none", 2, 160, "_reduce_369", 1, 261, "_reduce_none", 1, 261, "_reduce_none", 1, 274, "_reduce_372", 3, 274, "_reduce_373", 1, 277, "_reduce_374", 3, 277, "_reduce_375", 1, 276, "_reduce_none", 3, 276, "_reduce_377", 5, 276, "_reduce_378", 1, 276, "_reduce_379", 3, 276, "_reduce_380", 2, 278, "_reduce_381", 1, 278, "_reduce_382", 1, 279, "_reduce_none", 1, 279, "_reduce_none", 0, 284, "_reduce_385", 2, 282, "_reduce_386", 4, 283, "_reduce_387", 2, 283, "_reduce_388", 2, 283, "_reduce_389", 1, 283, "_reduce_390", 2, 288, "_reduce_391", 0, 288, "_reduce_392", 1, 289, "_reduce_none", 6, 290, "_reduce_394", 8, 290, "_reduce_395", 4, 290, "_reduce_396", 6, 290, "_reduce_397", 4, 290, "_reduce_398", 2, 290, "_reduce_none", 6, 290, "_reduce_400", 2, 290, "_reduce_401", 4, 290, "_reduce_402", 6, 290, "_reduce_403", 2, 290, "_reduce_404", 4, 290, "_reduce_405", 2, 290, "_reduce_406", 4, 290, "_reduce_407", 1, 290, "_reduce_none", 0, 294, "_reduce_409", 1, 294, "_reduce_410", 3, 295, "_reduce_411", 4, 295, "_reduce_412", 1, 296, "_reduce_413", 4, 296, "_reduce_414", 1, 297, "_reduce_415", 3, 297, "_reduce_416", 1, 298, "_reduce_417", 1, 298, "_reduce_none", 0, 302, "_reduce_419", 0, 303, "_reduce_420", 5, 256, "_reduce_421", 4, 300, "_reduce_422", 1, 300, "_reduce_423", 0, 306, "_reduce_424", 4, 301, "_reduce_425", 0, 307, "_reduce_426", 4, 301, "_reduce_427", 0, 309, "_reduce_428", 4, 305, "_reduce_429", 2, 201, "_reduce_430", 4, 201, "_reduce_431", 5, 201, "_reduce_432", 5, 201, "_reduce_433", 2, 255, "_reduce_434", 4, 255, "_reduce_435", 4, 255, "_reduce_436", 3, 255, "_reduce_437", 3, 255, "_reduce_438", 3, 255, "_reduce_439", 2, 255, "_reduce_440", 1, 255, "_reduce_441", 4, 255, "_reduce_442", 0, 311, "_reduce_443", 4, 254, "_reduce_444", 0, 312, "_reduce_445", 4, 254, "_reduce_446", 0, 313, "_reduce_447", 3, 205, "_reduce_448", 0, 314, "_reduce_449", 0, 315, "_reduce_450", 4, 308, "_reduce_451", 5, 259, "_reduce_452", 1, 316, "_reduce_453", 1, 316, "_reduce_none", 0, 319, "_reduce_455", 0, 320, "_reduce_456", 7, 260, "_reduce_457", 1, 318, "_reduce_458", 1, 318, "_reduce_none", 1, 317, "_reduce_460", 3, 317, "_reduce_461", 3, 317, "_reduce_462", 1, 188, "_reduce_none", 2, 188, "_reduce_464", 3, 188, "_reduce_465", 1, 188, "_reduce_466", 1, 188, "_reduce_467", 1, 188, "_reduce_468", 1, 321, "_reduce_none", 3, 326, "_reduce_470", 1, 326, "_reduce_none", 3, 328, "_reduce_472", 1, 328, "_reduce_none", 1, 330, "_reduce_474", 1, 331, "_reduce_475", 1, 329, "_reduce_none", 1, 329, "_reduce_none", 4, 329, "_reduce_478", 4, 329, "_reduce_479", 4, 329, "_reduce_480", 3, 329, "_reduce_481", 4, 329, "_reduce_482", 4, 329, "_reduce_483", 4, 329, "_reduce_484", 3, 329, "_reduce_485", 3, 329, "_reduce_486", 3, 329, "_reduce_487", 2, 329, "_reduce_488", 0, 335, "_reduce_489", 4, 329, "_reduce_490", 2, 329, "_reduce_491", 0, 336, "_reduce_492", 4, 329, "_reduce_493", 1, 322, "_reduce_494", 1, 322, "_reduce_495", 2, 322, "_reduce_496", 3, 322, "_reduce_497", 5, 322, "_reduce_498", 2, 322, "_reduce_499", 4, 322, "_reduce_500", 1, 322, "_reduce_none", 2, 337, "_reduce_502", 3, 337, "_reduce_503", 1, 324, "_reduce_504", 3, 324, "_reduce_505", 5, 323, "_reduce_506", 2, 340, "_reduce_507", 1, 340, "_reduce_508", 1, 339, "_reduce_509", 3, 339, "_reduce_510", 1, 338, "_reduce_none", 3, 325, "_reduce_512", 1, 325, "_reduce_513", 2, 325, "_reduce_514", 1, 325, "_reduce_515", 1, 341, "_reduce_516", 3, 341, "_reduce_517", 2, 343, "_reduce_518", 1, 343, "_reduce_519", 1, 344, "_reduce_520", 3, 344, "_reduce_521", 2, 346, "_reduce_522", 1, 346, "_reduce_523", 2, 348, "_reduce_524", 1, 342, "_reduce_none", 1, 342, "_reduce_none", 1, 332, "_reduce_none", 3, 332, "_reduce_528", 3, 332, "_reduce_529", 2, 332, "_reduce_530", 2, 332, "_reduce_531", 1, 332, "_reduce_none", 1, 332, "_reduce_none", 1, 332, "_reduce_none", 2, 332, "_reduce_535", 2, 332, "_reduce_536", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_545", 1, 349, "_reduce_none", 1, 327, "_reduce_547", 2, 350, "_reduce_548", 2, 350, "_reduce_549", 4, 351, "_reduce_550", 2, 333, "_reduce_551", 3, 333, "_reduce_552", 1, 333, "_reduce_553", 6, 159, "_reduce_554", 0, 159, "_reduce_555", 1, 353, "_reduce_556", 1, 353, "_reduce_none", 1, 353, "_reduce_none", 2, 354, "_reduce_559", 1, 354, "_reduce_none", 2, 161, "_reduce_561", 1, 161, "_reduce_none", 1, 244, "_reduce_none", 1, 244, "_reduce_none", 1, 245, "_reduce_565", 1, 356, "_reduce_566", 2, 356, "_reduce_567", 3, 357, "_reduce_568", 1, 357, "_reduce_569", 1, 357, "_reduce_570", 3, 246, "_reduce_571", 4, 247, "_reduce_572", 3, 248, "_reduce_573", 0, 360, "_reduce_574", 3, 360, "_reduce_575", 1, 361, "_reduce_576", 2, 361, "_reduce_577", 3, 250, "_reduce_578", 0, 363, "_reduce_579", 3, 363, "_reduce_580", 3, 249, "_reduce_581", 3, 251, "_reduce_582", 0, 364, "_reduce_583", 3, 364, "_reduce_584", 0, 365, "_reduce_585", 3, 365, "_reduce_586", 0, 345, "_reduce_587", 2, 345, "_reduce_588", 0, 358, "_reduce_589", 2, 358, "_reduce_590", 0, 359, "_reduce_591", 2, 359, "_reduce_592", 1, 362, "_reduce_593", 2, 362, "_reduce_594", 0, 367, "_reduce_595", 4, 362, "_reduce_596", 1, 366, "_reduce_597", 1, 366, "_reduce_598", 1, 366, "_reduce_599", 1, 366, "_reduce_none", 1, 224, "_reduce_none", 1, 224, "_reduce_none", 1, 368, "_reduce_603", 3, 369, "_reduce_604", 1, 355, "_reduce_605", 2, 355, "_reduce_606", 1, 227, "_reduce_607", 1, 227, "_reduce_608", 1, 227, "_reduce_609", 1, 227, "_reduce_610", 1, 352, "_reduce_611", 1, 352, "_reduce_612", 1, 352, "_reduce_613", 1, 218, "_reduce_614", 1, 218, "_reduce_615", 1, 218, "_reduce_616", 1, 218, "_reduce_617", 1, 218, "_reduce_618", 1, 219, "_reduce_619", 1, 219, "_reduce_620", 1, 219, "_reduce_621", 1, 219, "_reduce_622", 1, 219, "_reduce_623", 1, 219, "_reduce_624", 1, 219, "_reduce_625", 1, 252, "_reduce_626", 1, 252, "_reduce_627", 1, 176, "_reduce_628", 1, 176, "_reduce_629", 1, 186, "_reduce_630", 1, 186, "_reduce_631", 0, 370, "_reduce_632", 4, 263, "_reduce_633", 0, 263, "_reduce_634", 1, 182, "_reduce_none", 1, 182, "_reduce_636", 3, 371, "_reduce_637", 1, 266, "_reduce_none", 0, 373, "_reduce_639", 3, 266, "_reduce_640", 4, 372, "_reduce_641", 2, 372, "_reduce_642", 2, 372, "_reduce_643", 1, 372, "_reduce_644", 1, 372, "_reduce_645", 2, 375, "_reduce_646", 0, 375, "_reduce_647", 6, 304, "_reduce_648", 8, 304, "_reduce_649", 4, 304, "_reduce_650", 6, 304, "_reduce_651", 4, 304, "_reduce_652", 6, 304, "_reduce_653", 2, 304, "_reduce_654", 4, 304, "_reduce_655", 6, 304, "_reduce_656", 2, 304, "_reduce_657", 4, 304, "_reduce_658", 2, 304, "_reduce_659", 4, 304, "_reduce_660", 1, 304, "_reduce_661", 0, 304, "_reduce_662", 1, 239, "_reduce_663", 1, 299, "_reduce_664", 1, 299, "_reduce_665", 1, 299, "_reduce_666", 1, 299, "_reduce_667", 1, 275, "_reduce_none", 1, 275, "_reduce_669", 1, 377, "_reduce_670", 1, 378, "_reduce_671", 3, 378, "_reduce_672", 1, 291, "_reduce_673", 3, 291, "_reduce_674", 1, 379, "_reduce_675", 2, 380, "_reduce_676", 1, 380, "_reduce_677", 2, 381, "_reduce_678", 1, 381, "_reduce_679", 1, 285, "_reduce_680", 3, 285, "_reduce_681", 1, 374, "_reduce_682", 3, 374, "_reduce_683", 1, 347, "_reduce_none", 1, 347, "_reduce_none", 2, 281, "_reduce_686", 2, 280, "_reduce_687", 1, 280, "_reduce_688", 3, 382, "_reduce_689", 3, 383, "_reduce_690", 1, 292, "_reduce_691", 3, 292, "_reduce_692", 1, 376, "_reduce_693", 3, 376, "_reduce_694", 1, 384, "_reduce_none", 1, 384, "_reduce_none", 2, 293, "_reduce_697", 1, 293, "_reduce_698", 1, 385, "_reduce_none", 1, 385, "_reduce_none", 2, 287, "_reduce_701", 1, 287, "_reduce_702", 2, 286, "_reduce_703", 0, 286, "_reduce_704", 1, 197, "_reduce_none", 3, 197, "_reduce_706", 0, 253, "_reduce_707", 2, 253, "_reduce_none", 1, 237, "_reduce_709", 3, 237, "_reduce_710", 3, 386, "_reduce_711", 2, 386, "_reduce_712", 1, 386, "_reduce_713", 4, 386, "_reduce_714", 2, 386, "_reduce_715", 1, 208, "_reduce_none", 1, 208, "_reduce_none", 1, 208, "_reduce_none", 1, 202, "_reduce_none", 1, 202, "_reduce_none", 1, 202, "_reduce_none", 1, 202, "_reduce_none", 1, 310, "_reduce_none", 1, 310, "_reduce_none", 1, 310, "_reduce_none", 1, 198, "_reduce_none", 1, 198, "_reduce_none", 1, 180, "_reduce_728", 1, 180, "_reduce_729", 0, 152, "_reduce_none", 1, 152, "_reduce_none", 0, 187, "_reduce_none", 1, 187, "_reduce_none", 2, 213, "_reduce_734", 2, 179, "_reduce_735", 2, 334, "_reduce_736", 0, 236, "_reduce_none", 1, 236, "_reduce_none", 1, 236, "_reduce_none", 1, 264, "_reduce_740", 1, 264, "_reduce_none", 1, 154, "_reduce_none", 2, 154, "_reduce_none", 0, 234, "_reduce_744"]; + racc_reduce_n = 745; + racc_shift_n = 1238; + racc_token_table = $hash(false, 0, "error", 1, "kCLASS", 2, "kMODULE", 3, "kDEF", 4, "kUNDEF", 5, "kBEGIN", 6, "kRESCUE", 7, "kENSURE", 8, "kEND", 9, "kIF", 10, "kUNLESS", 11, "kTHEN", 12, "kELSIF", 13, "kELSE", 14, "kCASE", 15, "kWHEN", 16, "kWHILE", 17, "kUNTIL", 18, "kFOR", 19, "kBREAK", 20, "kNEXT", 21, "kREDO", 22, "kRETRY", 23, "kIN", 24, "kDO", 25, "kDO_COND", 26, "kDO_BLOCK", 27, "kDO_LAMBDA", 28, "kRETURN", 29, "kYIELD", 30, "kSUPER", 31, "kSELF", 32, "kNIL", 33, "kTRUE", 34, "kFALSE", 35, "kAND", 36, "kOR", 37, "kNOT", 38, "kIF_MOD", 39, "kUNLESS_MOD", 40, "kWHILE_MOD", 41, "kUNTIL_MOD", 42, "kRESCUE_MOD", 43, "kALIAS", 44, "kDEFINED", 45, "klBEGIN", 46, "klEND", 47, "k__LINE__", 48, "k__FILE__", 49, "k__ENCODING__", 50, "tIDENTIFIER", 51, "tFID", 52, "tGVAR", 53, "tIVAR", 54, "tCONSTANT", 55, "tLABEL", 56, "tCVAR", 57, "tNTH_REF", 58, "tBACK_REF", 59, "tSTRING_CONTENT", 60, "tINTEGER", 61, "tFLOAT", 62, "tUPLUS", 63, "tUMINUS", 64, "tUNARY_NUM", 65, "tPOW", 66, "tCMP", 67, "tEQ", 68, "tEQQ", 69, "tNEQ", 70, "tGEQ", 71, "tLEQ", 72, "tANDOP", 73, "tOROP", 74, "tMATCH", 75, "tNMATCH", 76, "tDOT", 77, "tDOT2", 78, "tDOT3", 79, "tAREF", 80, "tASET", 81, "tLSHFT", 82, "tRSHFT", 83, "tCOLON2", 84, "tCOLON3", 85, "tOP_ASGN", 86, "tASSOC", 87, "tLPAREN", 88, "tLPAREN2", 89, "tRPAREN", 90, "tLPAREN_ARG", 91, "tLBRACK", 92, "tLBRACK2", 93, "tRBRACK", 94, "tLBRACE", 95, "tLBRACE_ARG", 96, "tSTAR", 97, "tSTAR2", 98, "tAMPER", 99, "tAMPER2", 100, "tTILDE", 101, "tPERCENT", 102, "tDIVIDE", 103, "tDSTAR", 104, "tPLUS", 105, "tMINUS", 106, "tLT", 107, "tGT", 108, "tPIPE", 109, "tBANG", 110, "tCARET", 111, "tLCURLY", 112, "tRCURLY", 113, "tBACK_REF2", 114, "tSYMBEG", 115, "tSTRING_BEG", 116, "tXSTRING_BEG", 117, "tREGEXP_BEG", 118, "tREGEXP_OPT", 119, "tWORDS_BEG", 120, "tQWORDS_BEG", 121, "tSYMBOLS_BEG", 122, "tQSYMBOLS_BEG", 123, "tSTRING_DBEG", 124, "tSTRING_DVAR", 125, "tSTRING_END", 126, "tSTRING_DEND", 127, "tSTRING", 128, "tSYMBOL", 129, "tNL", 130, "tEH", 131, "tCOLON", 132, "tCOMMA", 133, "tSPACE", 134, "tSEMI", 135, "tLAMBDA", 136, "tLAMBEG", 137, "tCHARACTER", 138, "tRATIONAL", 139, "tIMAGINARY", 140, "tLABEL_END", 141, "tANDDOT", 142, "tBDOT2", 143, "tBDOT3", 144, "tEQL", 145, "tLOWEST", 146); + racc_nt_base = 147; + racc_use_result_var = true; + $const_set($nesting[0], 'Racc_arg', [racc_action_table, racc_action_check, racc_action_default, racc_action_pointer, racc_goto_table, racc_goto_check, racc_goto_default, racc_goto_pointer, racc_nt_base, racc_reduce_table, racc_token_table, racc_shift_n, racc_reduce_n, racc_use_result_var]); + $const_set($nesting[0], 'Racc_token_to_s_table', ["$end", "error", "kCLASS", "kMODULE", "kDEF", "kUNDEF", "kBEGIN", "kRESCUE", "kENSURE", "kEND", "kIF", "kUNLESS", "kTHEN", "kELSIF", "kELSE", "kCASE", "kWHEN", "kWHILE", "kUNTIL", "kFOR", "kBREAK", "kNEXT", "kREDO", "kRETRY", "kIN", "kDO", "kDO_COND", "kDO_BLOCK", "kDO_LAMBDA", "kRETURN", "kYIELD", "kSUPER", "kSELF", "kNIL", "kTRUE", "kFALSE", "kAND", "kOR", "kNOT", "kIF_MOD", "kUNLESS_MOD", "kWHILE_MOD", "kUNTIL_MOD", "kRESCUE_MOD", "kALIAS", "kDEFINED", "klBEGIN", "klEND", "k__LINE__", "k__FILE__", "k__ENCODING__", "tIDENTIFIER", "tFID", "tGVAR", "tIVAR", "tCONSTANT", "tLABEL", "tCVAR", "tNTH_REF", "tBACK_REF", "tSTRING_CONTENT", "tINTEGER", "tFLOAT", "tUPLUS", "tUMINUS", "tUNARY_NUM", "tPOW", "tCMP", "tEQ", "tEQQ", "tNEQ", "tGEQ", "tLEQ", "tANDOP", "tOROP", "tMATCH", "tNMATCH", "tDOT", "tDOT2", "tDOT3", "tAREF", "tASET", "tLSHFT", "tRSHFT", "tCOLON2", "tCOLON3", "tOP_ASGN", "tASSOC", "tLPAREN", "tLPAREN2", "tRPAREN", "tLPAREN_ARG", "tLBRACK", "tLBRACK2", "tRBRACK", "tLBRACE", "tLBRACE_ARG", "tSTAR", "tSTAR2", "tAMPER", "tAMPER2", "tTILDE", "tPERCENT", "tDIVIDE", "tDSTAR", "tPLUS", "tMINUS", "tLT", "tGT", "tPIPE", "tBANG", "tCARET", "tLCURLY", "tRCURLY", "tBACK_REF2", "tSYMBEG", "tSTRING_BEG", "tXSTRING_BEG", "tREGEXP_BEG", "tREGEXP_OPT", "tWORDS_BEG", "tQWORDS_BEG", "tSYMBOLS_BEG", "tQSYMBOLS_BEG", "tSTRING_DBEG", "tSTRING_DVAR", "tSTRING_END", "tSTRING_DEND", "tSTRING", "tSYMBOL", "tNL", "tEH", "tCOLON", "tCOMMA", "tSPACE", "tSEMI", "tLAMBDA", "tLAMBEG", "tCHARACTER", "tRATIONAL", "tIMAGINARY", "tLABEL_END", "tANDDOT", "tBDOT2", "tBDOT3", "tEQL", "tLOWEST", "$start", "program", "top_compstmt", "@1", "top_stmts", "opt_terms", "top_stmt", "terms", "stmt", "begin_block", "bodystmt", "compstmt", "opt_rescue", "opt_else", "opt_ensure", "stmts", "stmt_or_begin", "fitem", "undef_list", "expr_value", "command_asgn", "mlhs", "command_call", "lhs", "mrhs", "mrhs_arg", "expr", "@2", "command_rhs", "var_lhs", "primary_value", "opt_call_args", "rbracket", "call_op", "defn_head", "f_opt_paren_args", "command", "arg", "defs_head", "backref", "opt_nl", "p_top_expr_body", "@3", "@4", "expr_value_do", "do", "def_name", "@5", "fname", "k_def", "singleton", "dot_or_colon", "@6", "block_command", "block_call", "operation2", "command_args", "cmd_brace_block", "brace_body", "fcall", "@7", "operation", "k_return", "call_args", "mlhs_basic", "mlhs_inner", "rparen", "mlhs_head", "mlhs_item", "mlhs_node", "mlhs_post", "user_variable", "keyword_variable", "cname", "cpath", "op", "reswords", "symbol", "@8", "arg_rhs", "simple_numeric", "rel_expr", "primary", "relop", "@9", "arg_value", "aref_args", "none", "args", "trailer", "assocs", "paren_args", "args_forward", "opt_paren_args", "opt_block_arg", "block_arg", "@10", "literal", "strings", "xstring", "regexp", "words", "qwords", "symbols", "qsymbols", "var_ref", "assoc_list", "brace_block", "method_call", "lambda", "then", "if_tail", "case_body", "p_case_body", "for_var", "k_class", "superclass", "term", "k_module", "f_arglist", "@11", "@12", "@13", "@14", "@15", "@16", "@17", "f_marg", "f_norm_arg", "f_margs", "f_marg_list", "f_rest_marg", "f_any_kwrest", "f_kwrest", "f_no_kwarg", "f_eq", "block_args_tail", "@18", "f_block_kwarg", "opt_f_block_arg", "f_block_arg", "opt_block_args_tail", "excessed_comma", "block_param", "f_arg", "f_block_optarg", "f_rest_arg", "opt_block_param", "block_param_def", "opt_bv_decl", "bv_decls", "bvar", "f_bad_arg", "f_larglist", "lambda_body", "@19", "@20", "f_args", "do_block", "@21", "@22", "do_body", "@23", "operation3", "@24", "@25", "@26", "@27", "@28", "cases", "p_top_expr", "p_cases", "@29", "@30", "p_expr", "p_args", "p_find", "p_args_tail", "p_kwargs", "p_as", "p_variable", "p_alt", "p_expr_basic", "p_lparen", "p_lbracket", "p_value", "p_const", "rbrace", "@31", "@32", "p_args_head", "p_arg", "p_args_post", "p_rest", "p_kwarg", "p_any_kwrest", "p_kw", "p_kw_label", "string_contents", "p_kwrest", "kwrest_mark", "p_kwnorest", "p_primitive", "p_var_ref", "p_expr_ref", "nonlocal_var", "exc_list", "exc_var", "numeric", "string", "string1", "xstring_contents", "regexp_contents", "word_list", "word", "string_content", "symbol_list", "qword_list", "qsym_list", "string_dvar", "@33", "ssym", "dsym", "@34", "f_paren_args", "args_tail", "@35", "f_kwarg", "opt_args_tail", "f_optarg", "f_arg_asgn", "f_arg_item", "f_label", "f_kw", "f_block_kw", "f_opt", "f_block_opt", "restarg_mark", "blkarg_mark", "assoc"]); + $const_set($nesting[0], 'Racc_debug_parser', false); + + $def(self, '$_reduce_1', function $$_reduce_1(val, _values, result) { + var self = this; + + + self.current_arg_stack.$push(nil); + self.max_numparam_stack.$push($hash2(["static"], {"static": true})); + return result; + }, 3); + + $def(self, '$_reduce_2', function $$_reduce_2(val, _values, result) { + var self = this; + + + result = val['$[]'](1); + self.current_arg_stack.$pop(); + self.max_numparam_stack.$pop(); + return result; + }, 3); + + $def(self, '$_reduce_3', function $$_reduce_3(val, _values, result) { + var self = this; + + + result = self.builder.$compstmt(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_4', function $$_reduce_4(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_5', function $$_reduce_5(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_6', function $$_reduce_6(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_7', function $$_reduce_7(val, _values, result) { + + + result = [val['$[]'](1)]; + return result; + }, 3); + + $def(self, '$_reduce_9', function $$_reduce_9(val, _values, result) { + var self = this; + + + result = $send(self.builder, 'preexe', [val['$[]'](0)].concat($to_a(val['$[]'](1)))); + return result; + }, 3); + + $def(self, '$_reduce_10', function $$_reduce_10(val, _values, result) { + + + result = val; + return result; + }, 3); + + $def(self, '$_reduce_11', function $$_reduce_11(val, _values, result) { + var $a, $b, self = this, rescue_bodies = nil, else_t = nil, else_ = nil, ensure_t = nil, ensure_ = nil; + + + rescue_bodies = val['$[]'](1); + $b = val['$[]'](2), $a = $to_ary($b), (else_t = ($a[0] == null ? nil : $a[0])), (else_ = ($a[1] == null ? nil : $a[1])), $b; + $b = val['$[]'](3), $a = $to_ary($b), (ensure_t = ($a[0] == null ? nil : $a[0])), (ensure_ = ($a[1] == null ? nil : $a[1])), $b; + if (($truthy(rescue_bodies['$empty?']()) && ($not(else_t['$nil?']())))) { + self.$diagnostic("error", "useless_else", nil, else_t) + }; + result = self.builder.$begin_body(val['$[]'](0), rescue_bodies, else_t, else_, ensure_t, ensure_); + return result; + }, 3); + + $def(self, '$_reduce_12', function $$_reduce_12(val, _values, result) { + var self = this; + + + result = self.builder.$compstmt(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_13', function $$_reduce_13(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_14', function $$_reduce_14(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_15', function $$_reduce_15(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_16', function $$_reduce_16(val, _values, result) { + + + result = [val['$[]'](1)]; + return result; + }, 3); + + $def(self, '$_reduce_18', function $$_reduce_18(val, _values, result) { + var self = this; + + + self.$diagnostic("error", "begin_in_method", nil, val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_19', function $$_reduce_19(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_fname"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_20', function $$_reduce_20(val, _values, result) { + var self = this; + + + result = self.builder.$alias(val['$[]'](0), val['$[]'](1), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_21', function $$_reduce_21(val, _values, result) { + var self = this; + + + result = self.builder.$alias(val['$[]'](0), self.builder.$gvar(val['$[]'](1)), self.builder.$gvar(val['$[]'](2))); + return result; + }, 3); + + $def(self, '$_reduce_22', function $$_reduce_22(val, _values, result) { + var self = this; + + + result = self.builder.$alias(val['$[]'](0), self.builder.$gvar(val['$[]'](1)), self.builder.$back_ref(val['$[]'](2))); + return result; + }, 3); + + $def(self, '$_reduce_23', function $$_reduce_23(val, _values, result) { + var self = this; + + + self.$diagnostic("error", "nth_ref_alias", nil, val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_24', function $$_reduce_24(val, _values, result) { + var self = this; + + + result = self.builder.$undef_method(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_25', function $$_reduce_25(val, _values, result) { + var self = this; + + + result = self.builder.$condition_mod(val['$[]'](0), nil, val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_26', function $$_reduce_26(val, _values, result) { + var self = this; + + + result = self.builder.$condition_mod(nil, val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_27', function $$_reduce_27(val, _values, result) { + var self = this; + + + result = self.builder.$loop_mod("while", val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_28', function $$_reduce_28(val, _values, result) { + var self = this; + + + result = self.builder.$loop_mod("until", val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_29', function $$_reduce_29(val, _values, result) { + var self = this, rescue_body = nil; + + + rescue_body = self.builder.$rescue_body(val['$[]'](1), nil, nil, nil, nil, val['$[]'](2)); + result = self.builder.$begin_body(val['$[]'](0), [rescue_body]); + return result; + }, 3); + + $def(self, '$_reduce_30', function $$_reduce_30(val, _values, result) { + var self = this; + + + result = self.builder.$postexe(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_32', function $$_reduce_32(val, _values, result) { + var self = this; + + + result = self.builder.$multi_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_33', function $$_reduce_33(val, _values, result) { + var self = this; + + + result = self.builder.$assign(val['$[]'](0), val['$[]'](1), self.builder.$array(nil, val['$[]'](2), nil)); + return result; + }, 3); + + $def(self, '$_reduce_34', function $$_reduce_34(val, _values, result) { + var self = this, rescue_body = nil, begin_body = nil; + + + rescue_body = self.builder.$rescue_body(val['$[]'](3), nil, nil, nil, nil, val['$[]'](4)); + begin_body = self.builder.$begin_body(val['$[]'](2), [rescue_body]); + result = self.builder.$multi_assign(val['$[]'](0), val['$[]'](1), begin_body); + return result; + }, 3); + + $def(self, '$_reduce_35', function $$_reduce_35(val, _values, result) { + var self = this; + + + result = self.builder.$multi_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_37', function $$_reduce_37(val, _values, result) { + var self = this; + + + result = self.builder.$assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_38', function $$_reduce_38(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_39', function $$_reduce_39(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(self.builder.$index(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)), val['$[]'](4), val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_40', function $$_reduce_40(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)), val['$[]'](3), val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_41', function $$_reduce_41(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)), val['$[]'](3), val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_42', function $$_reduce_42(val, _values, result) { + var self = this, const$ = nil; + + + const$ = self.builder.$const_op_assignable(self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2))); + result = self.builder.$op_assign(const$, val['$[]'](3), val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_43', function $$_reduce_43(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)), val['$[]'](3), val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_44', function $$_reduce_44(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, name_t = nil, ctx = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), ($c = $to_ary(($a[1] == null ? nil : $a[1])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + self.$endless_method_name(name_t); + result = self.builder.$def_endless_method(def_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); + self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_45', function $$_reduce_45(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, name_t = nil, ctx = nil, rescue_body = nil, method_body = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), ($c = $to_ary(($a[1] == null ? nil : $a[1])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + self.$endless_method_name(name_t); + rescue_body = self.builder.$rescue_body(val['$[]'](4), nil, nil, nil, nil, val['$[]'](5)); + method_body = self.builder.$begin_body(val['$[]'](3), [rescue_body]); + result = self.builder.$def_endless_method(def_t, name_t, val['$[]'](1), val['$[]'](2), method_body); + self.$local_pop(); + self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_46', function $$_reduce_46(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, recv = nil, dot_t = nil, name_t = nil, ctx = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), (recv = ($a[1] == null ? nil : $a[1])), (dot_t = ($a[2] == null ? nil : $a[2])), ($c = $to_ary(($a[3] == null ? nil : $a[3])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + self.$endless_method_name(name_t); + result = self.builder.$def_endless_singleton(def_t, recv, dot_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); + self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_47', function $$_reduce_47(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, recv = nil, dot_t = nil, name_t = nil, ctx = nil, rescue_body = nil, method_body = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), (recv = ($a[1] == null ? nil : $a[1])), (dot_t = ($a[2] == null ? nil : $a[2])), ($c = $to_ary(($a[3] == null ? nil : $a[3])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + self.$endless_method_name(name_t); + rescue_body = self.builder.$rescue_body(val['$[]'](4), nil, nil, nil, nil, val['$[]'](5)); + method_body = self.builder.$begin_body(val['$[]'](3), [rescue_body]); + result = self.builder.$def_endless_singleton(def_t, recv, dot_t, name_t, val['$[]'](1), val['$[]'](2), method_body); + self.$local_pop(); + self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_48', function $$_reduce_48(val, _values, result) { + var self = this; + + + self.builder.$op_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_50', function $$_reduce_50(val, _values, result) { + var self = this, rescue_body = nil; + + + rescue_body = self.builder.$rescue_body(val['$[]'](1), nil, nil, nil, nil, val['$[]'](2)); + result = self.builder.$begin_body(val['$[]'](0), [rescue_body]); + return result; + }, 3); + + $def(self, '$_reduce_53', function $$_reduce_53(val, _values, result) { + var self = this; + + + result = self.builder.$logical_op("and", val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_54', function $$_reduce_54(val, _values, result) { + var self = this; + + + result = self.builder.$logical_op("or", val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_55', function $$_reduce_55(val, _values, result) { + var self = this; + + + result = self.builder.$not_op(val['$[]'](0), nil, val['$[]'](2), nil); + return result; + }, 3); + + $def(self, '$_reduce_56', function $$_reduce_56(val, _values, result) { + var self = this; + + + result = self.builder.$not_op(val['$[]'](0), nil, val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_57', function $$_reduce_57(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_beg"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(self.lexer, 'command_start=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.pattern_variables.$push(); + result = self.context.$in_kwarg(); + + $writer = [true]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_58', function $$_reduce_58(val, _values, result) { + var self = this, $writer = nil; + + + self.pattern_variables.$pop(); + + $writer = [val['$[]'](2)]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$match_pattern(val['$[]'](0), val['$[]'](1), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_59', function $$_reduce_59(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_beg"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(self.lexer, 'command_start=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.pattern_variables.$push(); + result = self.context.$in_kwarg(); + + $writer = [true]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_60', function $$_reduce_60(val, _values, result) { + var self = this, $writer = nil; + + + self.pattern_variables.$pop(); + + $writer = [val['$[]'](2)]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$match_pattern_p(val['$[]'](0), val['$[]'](1), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_63', function $$_reduce_63(val, _values, result) { + var self = this; + + + self.lexer.$cond().$push(true); + return result; + }, 3); + + $def(self, '$_reduce_64', function $$_reduce_64(val, _values, result) { + var self = this; + + + self.lexer.$cond().$pop(); + result = [val['$[]'](1), val['$[]'](2)]; + return result; + }, 3); + + $def(self, '$_reduce_65', function $$_reduce_65(val, _values, result) { + var self = this, $writer = nil; + + + self.$local_push(); + self.current_arg_stack.$push(nil); + result = [val['$[]'](0), self.context.$dup()]; + + $writer = [true]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_66', function $$_reduce_66(val, _values, result) { + + + result = [val['$[]'](0), val['$[]'](1)]; + return result; + }, 3); + + $def(self, '$_reduce_67', function $$_reduce_67(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_fname"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_68', function $$_reduce_68(val, _values, result) { + + + result = [val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](4)]; + return result; + }, 3); + + $def(self, '$_reduce_72', function $$_reduce_72(val, _values, result) { + var self = this; + + + result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), nil, val['$[]'](3), nil); + return result; + }, 3); + + $def(self, '$_reduce_73', function $$_reduce_73(val, _values, result) { + var self = this, $writer = nil; + + + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_74', function $$_reduce_74(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [val['$[]'](1).$in_block()]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](3)]); + return result; + }, 3); + + $def(self, '$_reduce_76', function $$_reduce_76(val, _values, result) { + var self = this; + + + result = self.builder.$call_method(nil, nil, val['$[]'](0), nil, val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_77', function $$_reduce_77(val, _values, result) { + var $a, $b, self = this, method_call = nil, begin_t = nil, args = nil, body = nil, end_t = nil; + + + method_call = self.builder.$call_method(nil, nil, val['$[]'](0), nil, val['$[]'](1), nil); + $b = val['$[]'](2), $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; + result = self.builder.$block(method_call, begin_t, args, body, end_t); + return result; + }, 3); + + $def(self, '$_reduce_78', function $$_reduce_78(val, _values, result) { + var self = this; + + + result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), nil, val['$[]'](3), nil); + return result; + }, 3); + + $def(self, '$_reduce_79', function $$_reduce_79(val, _values, result) { + var $a, $b, self = this, method_call = nil, begin_t = nil, args = nil, body = nil, end_t = nil; + + + method_call = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), nil, val['$[]'](3), nil); + $b = val['$[]'](4), $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; + result = self.builder.$block(method_call, begin_t, args, body, end_t); + return result; + }, 3); + + $def(self, '$_reduce_80', function $$_reduce_80(val, _values, result) { + var self = this; + + + result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), nil, val['$[]'](3), nil); + return result; + }, 3); + + $def(self, '$_reduce_81', function $$_reduce_81(val, _values, result) { + var $a, $b, self = this, method_call = nil, begin_t = nil, args = nil, body = nil, end_t = nil; + + + method_call = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), nil, val['$[]'](3), nil); + $b = val['$[]'](4), $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; + result = self.builder.$block(method_call, begin_t, args, body, end_t); + return result; + }, 3); + + $def(self, '$_reduce_82', function $$_reduce_82(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("super", val['$[]'](0), nil, val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_83', function $$_reduce_83(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("yield", val['$[]'](0), nil, val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_84', function $$_reduce_84(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("return", val['$[]'](0), nil, val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_85', function $$_reduce_85(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("break", val['$[]'](0), nil, val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_86', function $$_reduce_86(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("next", val['$[]'](0), nil, val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_87', function $$_reduce_87(val, _values, result) { + var self = this; + + + result = self.builder.$multi_lhs(nil, val['$[]'](0), nil); + return result; + }, 3); + + $def(self, '$_reduce_88', function $$_reduce_88(val, _values, result) { + var self = this; + + + result = self.builder.$begin(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_89', function $$_reduce_89(val, _values, result) { + var self = this; + + + result = self.builder.$multi_lhs(nil, val['$[]'](0), nil); + return result; + }, 3); + + $def(self, '$_reduce_90', function $$_reduce_90(val, _values, result) { + var self = this; + + + result = self.builder.$multi_lhs(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_92', function $$_reduce_92(val, _values, result) { + + + result = val['$[]'](0).$push(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_93', function $$_reduce_93(val, _values, result) { + var self = this; + + + result = val['$[]'](0).$push(self.builder.$splat(val['$[]'](1), val['$[]'](2))); + return result; + }, 3); + + $def(self, '$_reduce_94', function $$_reduce_94(val, _values, result) { + var self = this; + + + result = val['$[]'](0).$push(self.builder.$splat(val['$[]'](1), val['$[]'](2))).$concat(val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_95', function $$_reduce_95(val, _values, result) { + var self = this; + + + result = val['$[]'](0).$push(self.builder.$splat(val['$[]'](1))); + return result; + }, 3); + + $def(self, '$_reduce_96', function $$_reduce_96(val, _values, result) { + var self = this; + + + result = val['$[]'](0).$push(self.builder.$splat(val['$[]'](1))).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_97', function $$_reduce_97(val, _values, result) { + var self = this; + + + result = [self.builder.$splat(val['$[]'](0), val['$[]'](1))]; + return result; + }, 3); + + $def(self, '$_reduce_98', function $$_reduce_98(val, _values, result) { + var self = this; + + + result = [self.builder.$splat(val['$[]'](0), val['$[]'](1))].concat($to_a(val['$[]'](3))); + return result; + }, 3); + + $def(self, '$_reduce_99', function $$_reduce_99(val, _values, result) { + var self = this; + + + result = [self.builder.$splat(val['$[]'](0))]; + return result; + }, 3); + + $def(self, '$_reduce_100', function $$_reduce_100(val, _values, result) { + var self = this; + + + result = [self.builder.$splat(val['$[]'](0))].concat($to_a(val['$[]'](2))); + return result; + }, 3); + + $def(self, '$_reduce_102', function $$_reduce_102(val, _values, result) { + var self = this; + + + result = self.builder.$begin(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_103', function $$_reduce_103(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_104', function $$_reduce_104(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_105', function $$_reduce_105(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_106', function $$_reduce_106(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_107', function $$_reduce_107(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_108', function $$_reduce_108(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_109', function $$_reduce_109(val, _values, result) { + var self = this; + + + result = self.builder.$index_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_110', function $$_reduce_110(val, _values, result) { + var self = this; + + + if ($eqeq(val['$[]'](1)['$[]'](0), "anddot")) { + self.$diagnostic("error", "csend_in_lhs_of_masgn", nil, val['$[]'](1)) + }; + result = self.builder.$attr_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_111', function $$_reduce_111(val, _values, result) { + var self = this; + + + result = self.builder.$attr_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_112', function $$_reduce_112(val, _values, result) { + var self = this; + + + if ($eqeq(val['$[]'](1)['$[]'](0), "anddot")) { + self.$diagnostic("error", "csend_in_lhs_of_masgn", nil, val['$[]'](1)) + }; + result = self.builder.$attr_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_113', function $$_reduce_113(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2))); + return result; + }, 3); + + $def(self, '$_reduce_114', function $$_reduce_114(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(self.builder.$const_global(val['$[]'](0), val['$[]'](1))); + return result; + }, 3); + + $def(self, '$_reduce_115', function $$_reduce_115(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_116', function $$_reduce_116(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_117', function $$_reduce_117(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_118', function $$_reduce_118(val, _values, result) { + var self = this; + + + result = self.builder.$index_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_119', function $$_reduce_119(val, _values, result) { + var self = this; + + + result = self.builder.$attr_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_120', function $$_reduce_120(val, _values, result) { + var self = this; + + + result = self.builder.$attr_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_121', function $$_reduce_121(val, _values, result) { + var self = this; + + + result = self.builder.$attr_asgn(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_122', function $$_reduce_122(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2))); + return result; + }, 3); + + $def(self, '$_reduce_123', function $$_reduce_123(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(self.builder.$const_global(val['$[]'](0), val['$[]'](1))); + return result; + }, 3); + + $def(self, '$_reduce_124', function $$_reduce_124(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_125', function $$_reduce_125(val, _values, result) { + var self = this; + + + self.$diagnostic("error", "module_name_const", nil, val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_127', function $$_reduce_127(val, _values, result) { + var self = this; + + + result = self.builder.$const_global(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_128', function $$_reduce_128(val, _values, result) { + var self = this; + + + result = self.builder.$const(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_129', function $$_reduce_129(val, _values, result) { + var self = this; + + + result = self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_135', function $$_reduce_135(val, _values, result) { + var self = this; + + + result = self.builder.$symbol_internal(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_137', function $$_reduce_137(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_138', function $$_reduce_138(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_fname"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_139', function $$_reduce_139(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_211', function $$_reduce_211(val, _values, result) { + var self = this; + + + result = self.builder.$assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_212', function $$_reduce_212(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_213', function $$_reduce_213(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(self.builder.$index(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)), val['$[]'](4), val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_214', function $$_reduce_214(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)), val['$[]'](3), val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_215', function $$_reduce_215(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)), val['$[]'](3), val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_216', function $$_reduce_216(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)), val['$[]'](3), val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_217', function $$_reduce_217(val, _values, result) { + var self = this, const$ = nil; + + + const$ = self.builder.$const_op_assignable(self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2))); + result = self.builder.$op_assign(const$, val['$[]'](3), val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_218', function $$_reduce_218(val, _values, result) { + var self = this, const$ = nil; + + + const$ = self.builder.$const_op_assignable(self.builder.$const_global(val['$[]'](0), val['$[]'](1))); + result = self.builder.$op_assign(const$, val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_219', function $$_reduce_219(val, _values, result) { + var self = this; + + + result = self.builder.$op_assign(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_220', function $$_reduce_220(val, _values, result) { + var self = this; + + + result = self.builder.$range_inclusive(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_221', function $$_reduce_221(val, _values, result) { + var self = this; + + + result = self.builder.$range_exclusive(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_222', function $$_reduce_222(val, _values, result) { + var self = this; + + + result = self.builder.$range_inclusive(val['$[]'](0), val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_223', function $$_reduce_223(val, _values, result) { + var self = this; + + + result = self.builder.$range_exclusive(val['$[]'](0), val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_224', function $$_reduce_224(val, _values, result) { + var self = this; + + + result = self.builder.$range_inclusive(nil, val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_225', function $$_reduce_225(val, _values, result) { + var self = this; + + + result = self.builder.$range_exclusive(nil, val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_226', function $$_reduce_226(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_227', function $$_reduce_227(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_228', function $$_reduce_228(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_229', function $$_reduce_229(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_230', function $$_reduce_230(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_231', function $$_reduce_231(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_232', function $$_reduce_232(val, _values, result) { + var self = this; + + + result = self.builder.$unary_op(val['$[]'](0), self.builder.$binary_op(val['$[]'](1), val['$[]'](2), val['$[]'](3))); + return result; + }, 3); + + $def(self, '$_reduce_233', function $$_reduce_233(val, _values, result) { + var self = this; + + + result = self.builder.$unary_op(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_234', function $$_reduce_234(val, _values, result) { + var self = this; + + + result = self.builder.$unary_op(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_235', function $$_reduce_235(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_236', function $$_reduce_236(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_237', function $$_reduce_237(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_238', function $$_reduce_238(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_240', function $$_reduce_240(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_241', function $$_reduce_241(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_242', function $$_reduce_242(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_243', function $$_reduce_243(val, _values, result) { + var self = this; + + + result = self.builder.$match_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_244', function $$_reduce_244(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_245', function $$_reduce_245(val, _values, result) { + var self = this; + + + result = self.builder.$not_op(val['$[]'](0), nil, val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_246', function $$_reduce_246(val, _values, result) { + var self = this; + + + result = self.builder.$unary_op(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_247', function $$_reduce_247(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_248', function $$_reduce_248(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_249', function $$_reduce_249(val, _values, result) { + var self = this; + + + result = self.builder.$logical_op("and", val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_250', function $$_reduce_250(val, _values, result) { + var self = this; + + + result = self.builder.$logical_op("or", val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_251', function $$_reduce_251(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [true]; + $send(self.context, 'in_defined=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_252', function $$_reduce_252(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [false]; + $send(self.context, 'in_defined=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$keyword_cmd("defined?", val['$[]'](0), nil, [val['$[]'](3)], nil); + return result; + }, 3); + + $def(self, '$_reduce_253', function $$_reduce_253(val, _values, result) { + var self = this; + + + result = self.builder.$ternary(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](4), val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_254', function $$_reduce_254(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, name_t = nil, ctx = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), ($c = $to_ary(($a[1] == null ? nil : $a[1])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + self.$endless_method_name(name_t); + result = self.builder.$def_endless_method(def_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); + self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_255', function $$_reduce_255(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, name_t = nil, ctx = nil, rescue_body = nil, method_body = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), ($c = $to_ary(($a[1] == null ? nil : $a[1])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + self.$endless_method_name(name_t); + rescue_body = self.builder.$rescue_body(val['$[]'](4), nil, nil, nil, nil, val['$[]'](5)); + method_body = self.builder.$begin_body(val['$[]'](3), [rescue_body]); + result = self.builder.$def_endless_method(def_t, name_t, val['$[]'](1), val['$[]'](2), method_body); + self.$local_pop(); + self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_256', function $$_reduce_256(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, recv = nil, dot_t = nil, name_t = nil, ctx = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), (recv = ($a[1] == null ? nil : $a[1])), (dot_t = ($a[2] == null ? nil : $a[2])), ($c = $to_ary(($a[3] == null ? nil : $a[3])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + self.$endless_method_name(name_t); + result = self.builder.$def_endless_singleton(def_t, recv, dot_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); + self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_257', function $$_reduce_257(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, recv = nil, dot_t = nil, name_t = nil, ctx = nil, rescue_body = nil, method_body = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), (recv = ($a[1] == null ? nil : $a[1])), (dot_t = ($a[2] == null ? nil : $a[2])), ($c = $to_ary(($a[3] == null ? nil : $a[3])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + self.$endless_method_name(name_t); + rescue_body = self.builder.$rescue_body(val['$[]'](4), nil, nil, nil, nil, val['$[]'](5)); + method_body = self.builder.$begin_body(val['$[]'](3), [rescue_body]); + result = self.builder.$def_endless_singleton(def_t, recv, dot_t, name_t, val['$[]'](1), val['$[]'](2), method_body); + self.$local_pop(); + self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_263', function $$_reduce_263(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_264', function $$_reduce_264(val, _values, result) { + var self = this; + + + result = self.builder.$binary_op(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_268', function $$_reduce_268(val, _values, result) { + var self = this; + + + result = val['$[]'](0)['$<<'](self.builder.$associate(nil, val['$[]'](2), nil)); + return result; + }, 3); + + $def(self, '$_reduce_269', function $$_reduce_269(val, _values, result) { + var self = this; + + + result = [self.builder.$associate(nil, val['$[]'](0), nil)]; + return result; + }, 3); + + $def(self, '$_reduce_271', function $$_reduce_271(val, _values, result) { + var self = this, rescue_body = nil; + + + rescue_body = self.builder.$rescue_body(val['$[]'](1), nil, nil, nil, nil, val['$[]'](2)); + result = self.builder.$begin_body(val['$[]'](0), [rescue_body]); + return result; + }, 3); + + $def(self, '$_reduce_272', function $$_reduce_272(val, _values, result) { + + + result = val; + return result; + }, 3); + + $def(self, '$_reduce_273', function $$_reduce_273(val, _values, result) { + var self = this; + + + if (!$truthy(self.static_env['$declared_forward_args?']())) { + self.$diagnostic("error", "unexpected_token", $hash2(["token"], {"token": "tBDOT3"}), val['$[]'](3)) + }; + result = [val['$[]'](0), [].concat($to_a(val['$[]'](1))).concat([self.builder.$forwarded_args(val['$[]'](3))]), val['$[]'](4)]; + return result; + }, 3); + + $def(self, '$_reduce_274', function $$_reduce_274(val, _values, result) { + var self = this; + + + if (!$truthy(self.static_env['$declared_forward_args?']())) { + self.$diagnostic("error", "unexpected_token", $hash2(["token"], {"token": "tBDOT3"}), val['$[]'](1)) + }; + result = [val['$[]'](0), [self.builder.$forwarded_args(val['$[]'](1))], val['$[]'](2)]; + return result; + }, 3); + + $def(self, '$_reduce_275', function $$_reduce_275(val, _values, result) { + + + result = [nil, [], nil]; + return result; + }, 3); + + $def(self, '$_reduce_277', function $$_reduce_277(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_280', function $$_reduce_280(val, _values, result) { + var self = this; + + + result = val['$[]'](0)['$<<'](self.builder.$associate(nil, val['$[]'](2), nil)); + return result; + }, 3); + + $def(self, '$_reduce_281', function $$_reduce_281(val, _values, result) { + var self = this; + + + result = [self.builder.$associate(nil, val['$[]'](0), nil)]; + return result; + }, 3); + + $def(self, '$_reduce_282', function $$_reduce_282(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_283', function $$_reduce_283(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_284', function $$_reduce_284(val, _values, result) { + var self = this; + + + result = [self.builder.$associate(nil, val['$[]'](0), nil)]; + result.$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_285', function $$_reduce_285(val, _values, result) { + var self = this, assocs = nil; + + + assocs = self.builder.$associate(nil, val['$[]'](2), nil); + result = val['$[]'](0)['$<<'](assocs); + result.$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_286', function $$_reduce_286(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_287', function $$_reduce_287(val, _values, result) { + var self = this, last_token = nil, lookahead = nil, $ret_or_1 = nil, top = nil; + + + last_token = self.last_token['$[]'](0); + lookahead = ($truthy(($ret_or_1 = last_token['$==']("tLBRACK"))) ? ($ret_or_1) : (last_token['$==']("tLPAREN_ARG"))); + if ($truthy(lookahead)) { + + top = self.lexer.$cmdarg().$pop(); + self.lexer.$cmdarg().$push(true); + self.lexer.$cmdarg().$push(top); + } else { + self.lexer.$cmdarg().$push(true) + }; + return result; + }, 3); + + $def(self, '$_reduce_288', function $$_reduce_288(val, _values, result) { + var self = this, last_token = nil, lookahead = nil, top = nil; + + + last_token = self.last_token['$[]'](0); + lookahead = last_token['$==']("tLBRACE_ARG"); + if ($truthy(lookahead)) { + + top = self.lexer.$cmdarg().$pop(); + self.lexer.$cmdarg().$pop(); + self.lexer.$cmdarg().$push(top); + } else { + self.lexer.$cmdarg().$pop() + }; + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_289', function $$_reduce_289(val, _values, result) { + var self = this; + + + result = self.builder.$block_pass(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_290', function $$_reduce_290(val, _values, result) { + var self = this; + + + if ($not(self.static_env['$declared_anonymous_blockarg?']())) { + self.$diagnostic("error", "no_anonymous_blockarg", nil, val['$[]'](0)) + }; + result = self.builder.$block_pass(val['$[]'](0), nil); + return result; + }, 3); + + $def(self, '$_reduce_291', function $$_reduce_291(val, _values, result) { + + + result = [val['$[]'](1)]; + return result; + }, 3); + + $def(self, '$_reduce_292', function $$_reduce_292(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_293', function $$_reduce_293(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_294', function $$_reduce_294(val, _values, result) { + var self = this; + + + result = [self.builder.$splat(val['$[]'](0), val['$[]'](1))]; + return result; + }, 3); + + $def(self, '$_reduce_295', function $$_reduce_295(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_296', function $$_reduce_296(val, _values, result) { + var self = this; + + + result = val['$[]'](0)['$<<'](self.builder.$splat(val['$[]'](2), val['$[]'](3))); + return result; + }, 3); + + $def(self, '$_reduce_297', function $$_reduce_297(val, _values, result) { + var self = this; + + + result = self.builder.$array(nil, val['$[]'](0), nil); + return result; + }, 3); + + $def(self, '$_reduce_299', function $$_reduce_299(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_300', function $$_reduce_300(val, _values, result) { + var self = this; + + + result = val['$[]'](0)['$<<'](self.builder.$splat(val['$[]'](2), val['$[]'](3))); + return result; + }, 3); + + $def(self, '$_reduce_301', function $$_reduce_301(val, _values, result) { + var self = this; + + + result = [self.builder.$splat(val['$[]'](0), val['$[]'](1))]; + return result; + }, 3); + + $def(self, '$_reduce_312', function $$_reduce_312(val, _values, result) { + var self = this; + + + result = self.builder.$call_method(nil, nil, val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_313', function $$_reduce_313(val, _values, result) { + var self = this; + + + self.lexer.$cmdarg().$push(false); + return result; + }, 3); + + $def(self, '$_reduce_314', function $$_reduce_314(val, _values, result) { + var self = this; + + + self.lexer.$cmdarg().$pop(); + result = self.builder.$begin_keyword(val['$[]'](0), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_315', function $$_reduce_315(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_endarg"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_316', function $$_reduce_316(val, _values, result) { + var self = this; + + + result = self.builder.$begin(val['$[]'](0), val['$[]'](1), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_317', function $$_reduce_317(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_endarg"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_318', function $$_reduce_318(val, _values, result) { + var self = this; + + + result = self.builder.$begin(val['$[]'](0), nil, val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_319', function $$_reduce_319(val, _values, result) { + var self = this; + + + result = self.builder.$begin(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_320', function $$_reduce_320(val, _values, result) { + var self = this; + + + result = self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_321', function $$_reduce_321(val, _values, result) { + var self = this; + + + result = self.builder.$const_global(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_322', function $$_reduce_322(val, _values, result) { + var self = this; + + + result = self.builder.$array(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_323', function $$_reduce_323(val, _values, result) { + var self = this; + + + result = self.builder.$associate(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_324', function $$_reduce_324(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("return", val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_325', function $$_reduce_325(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("yield", val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_326', function $$_reduce_326(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("yield", val['$[]'](0), val['$[]'](1), [], val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_327', function $$_reduce_327(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("yield", val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_328', function $$_reduce_328(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [true]; + $send(self.context, 'in_defined=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_329', function $$_reduce_329(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [false]; + $send(self.context, 'in_defined=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$keyword_cmd("defined?", val['$[]'](0), val['$[]'](2), [val['$[]'](4)], val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_330', function $$_reduce_330(val, _values, result) { + var self = this; + + + result = self.builder.$not_op(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_331', function $$_reduce_331(val, _values, result) { + var self = this; + + + result = self.builder.$not_op(val['$[]'](0), val['$[]'](1), nil, val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_332', function $$_reduce_332(val, _values, result) { + var $a, $b, self = this, method_call = nil, begin_t = nil, args = nil, body = nil, end_t = nil; + + + method_call = self.builder.$call_method(nil, nil, val['$[]'](0)); + $b = val['$[]'](1), $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; + result = self.builder.$block(method_call, begin_t, args, body, end_t); + return result; + }, 3); + + $def(self, '$_reduce_334', function $$_reduce_334(val, _values, result) { + var $a, $b, self = this, begin_t = nil, args = nil, body = nil, end_t = nil; + + + $b = val['$[]'](1), $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; + result = self.builder.$block(val['$[]'](0), begin_t, args, body, end_t); + return result; + }, 3); + + $def(self, '$_reduce_336', function $$_reduce_336(val, _values, result) { + var $a, $b, self = this, else_t = nil, else_ = nil; + + + $b = val['$[]'](4), $a = $to_ary($b), (else_t = ($a[0] == null ? nil : $a[0])), (else_ = ($a[1] == null ? nil : $a[1])), $b; + result = self.builder.$condition(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3), else_t, else_, val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_337', function $$_reduce_337(val, _values, result) { + var $a, $b, self = this, else_t = nil, else_ = nil; + + + $b = val['$[]'](4), $a = $to_ary($b), (else_t = ($a[0] == null ? nil : $a[0])), (else_ = ($a[1] == null ? nil : $a[1])), $b; + result = self.builder.$condition(val['$[]'](0), val['$[]'](1), val['$[]'](2), else_, else_t, val['$[]'](3), val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_338', function $$_reduce_338(val, _values, result) { + var self = this; + + + result = $send(self.builder, 'loop', ["while", val['$[]'](0)].concat($to_a(val['$[]'](1))).concat([val['$[]'](2), val['$[]'](3)])); + return result; + }, 3); + + $def(self, '$_reduce_339', function $$_reduce_339(val, _values, result) { + var self = this; + + + result = $send(self.builder, 'loop', ["until", val['$[]'](0)].concat($to_a(val['$[]'](1))).concat([val['$[]'](2), val['$[]'](3)])); + return result; + }, 3); + + $def(self, '$_reduce_340', function $$_reduce_340(val, _values, result) { + var $a, $b, $c, self = this, when_bodies = nil, else_t = nil, else_body = nil; + + + $a = [].concat($to_a(val['$[]'](3))), $b = $a.length - 1, $b = ($b < 0) ? 0 : $b, (when_bodies = $slice.call($a, 0, $b)), ($c = $to_ary(($a[$b] == null ? nil : $a[$b])), (else_t = ($c[0] == null ? nil : $c[0])), (else_body = ($c[1] == null ? nil : $c[1]))), $a; + result = self.builder.$case(val['$[]'](0), val['$[]'](1), when_bodies, else_t, else_body, val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_341', function $$_reduce_341(val, _values, result) { + var $a, $b, $c, self = this, when_bodies = nil, else_t = nil, else_body = nil; + + + $a = [].concat($to_a(val['$[]'](2))), $b = $a.length - 1, $b = ($b < 0) ? 0 : $b, (when_bodies = $slice.call($a, 0, $b)), ($c = $to_ary(($a[$b] == null ? nil : $a[$b])), (else_t = ($c[0] == null ? nil : $c[0])), (else_body = ($c[1] == null ? nil : $c[1]))), $a; + result = self.builder.$case(val['$[]'](0), nil, when_bodies, else_t, else_body, val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_342', function $$_reduce_342(val, _values, result) { + var $a, $b, $c, self = this, in_bodies = nil, else_t = nil, else_body = nil; + + + $a = [].concat($to_a(val['$[]'](3))), $b = $a.length - 1, $b = ($b < 0) ? 0 : $b, (in_bodies = $slice.call($a, 0, $b)), ($c = $to_ary(($a[$b] == null ? nil : $a[$b])), (else_t = ($c[0] == null ? nil : $c[0])), (else_body = ($c[1] == null ? nil : $c[1]))), $a; + result = self.builder.$case_match(val['$[]'](0), val['$[]'](1), in_bodies, else_t, else_body, val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_343', function $$_reduce_343(val, _values, result) { + var self = this; + + + result = $send(self.builder, 'for', [val['$[]'](0), val['$[]'](1), val['$[]'](2)].concat($to_a(val['$[]'](3))).concat([val['$[]'](4), val['$[]'](5)])); + return result; + }, 3); + + $def(self, '$_reduce_344', function $$_reduce_344(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [true]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.$local_push(); + return result; + }, 3); + + $def(self, '$_reduce_345', function $$_reduce_345(val, _values, result) { + var $a, $b, self = this, k_class = nil, ctx = nil, lt_t = nil, superclass = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (k_class = ($a[0] == null ? nil : $a[0])), (ctx = ($a[1] == null ? nil : $a[1])), $b; + if ($truthy(self.context.$in_def())) { + self.$diagnostic("error", "class_in_def", nil, k_class) + }; + $b = val['$[]'](2), $a = $to_ary($b), (lt_t = ($a[0] == null ? nil : $a[0])), (superclass = ($a[1] == null ? nil : $a[1])), $b; + result = self.builder.$def_class(k_class, val['$[]'](1), lt_t, superclass, val['$[]'](4), val['$[]'](5)); + self.$local_pop(); + + $writer = [ctx.$in_class()]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_346', function $$_reduce_346(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [false]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.$local_push(); + return result; + }, 3); + + $def(self, '$_reduce_347', function $$_reduce_347(val, _values, result) { + var $a, $b, self = this, k_class = nil, ctx = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (k_class = ($a[0] == null ? nil : $a[0])), (ctx = ($a[1] == null ? nil : $a[1])), $b; + result = self.builder.$def_sclass(k_class, val['$[]'](1), val['$[]'](2), val['$[]'](5), val['$[]'](6)); + self.$local_pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [ctx.$in_class()]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_348', function $$_reduce_348(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [true]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.$local_push(); + return result; + }, 3); + + $def(self, '$_reduce_349', function $$_reduce_349(val, _values, result) { + var $a, $b, self = this, k_mod = nil, ctx = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (k_mod = ($a[0] == null ? nil : $a[0])), (ctx = ($a[1] == null ? nil : $a[1])), $b; + if ($truthy(self.context.$in_def())) { + self.$diagnostic("error", "module_in_def", nil, k_mod) + }; + result = self.builder.$def_module(k_mod, val['$[]'](1), val['$[]'](3), val['$[]'](4)); + self.$local_pop(); + + $writer = [ctx.$in_class()]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_350', function $$_reduce_350(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, name_t = nil, ctx = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), ($c = $to_ary(($a[1] == null ? nil : $a[1])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + result = self.builder.$def_method(def_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); + self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_351', function $$_reduce_351(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, recv = nil, dot_t = nil, name_t = nil, ctx = nil, $writer = nil; + + + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), (recv = ($a[1] == null ? nil : $a[1])), (dot_t = ($a[2] == null ? nil : $a[2])), ($c = $to_ary(($a[3] == null ? nil : $a[3])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + result = self.builder.$def_singleton(def_t, recv, dot_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); + self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_352', function $$_reduce_352(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("break", val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_353', function $$_reduce_353(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("next", val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_354', function $$_reduce_354(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("redo", val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_355', function $$_reduce_355(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("retry", val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_357', function $$_reduce_357(val, _values, result) { + var self = this; + + + result = [val['$[]'](0), self.context.$dup()]; + return result; + }, 3); + + $def(self, '$_reduce_358', function $$_reduce_358(val, _values, result) { + var self = this; + + + result = [val['$[]'](0), self.context.$dup()]; + return result; + }, 3); + + $def(self, '$_reduce_359', function $$_reduce_359(val, _values, result) { + var self = this, $writer = nil; + + + result = val['$[]'](0); + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_360', function $$_reduce_360(val, _values, result) { + var self = this, $ret_or_1 = nil; + + + if ((($truthy(self.context.$in_class()) && ($not(self.context.$in_def()))) && ($not(($truthy(($ret_or_1 = self.$context().$in_block())) ? ($ret_or_1) : (self.$context().$in_lambda())))))) { + self.$diagnostic("error", "invalid_return", nil, val['$[]'](0)) + }; + return result; + }, 3); + + $def(self, '$_reduce_363', function $$_reduce_363(val, _values, result) { + + + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_367', function $$_reduce_367(val, _values, result) { + var $a, $b, self = this, else_t = nil, else_ = nil; + + + $b = val['$[]'](4), $a = $to_ary($b), (else_t = ($a[0] == null ? nil : $a[0])), (else_ = ($a[1] == null ? nil : $a[1])), $b; + result = [val['$[]'](0), self.builder.$condition(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3), else_t, else_, nil)]; + return result; + }, 3); + + $def(self, '$_reduce_369', function $$_reduce_369(val, _values, result) { + + + result = val; + return result; + }, 3); + + $def(self, '$_reduce_372', function $$_reduce_372(val, _values, result) { + var self = this; + + + result = self.builder.$arg(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_373', function $$_reduce_373(val, _values, result) { + var self = this; + + + result = self.builder.$multi_lhs(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_374', function $$_reduce_374(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_375', function $$_reduce_375(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_377', function $$_reduce_377(val, _values, result) { + + + result = val['$[]'](0).$push(val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_378', function $$_reduce_378(val, _values, result) { + + + result = val['$[]'](0).$push(val['$[]'](2)).$concat(val['$[]'](4)); + return result; + }, 3); + + $def(self, '$_reduce_379', function $$_reduce_379(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_380', function $$_reduce_380(val, _values, result) { + + + result = [val['$[]'](0)].concat($to_a(val['$[]'](2))); + return result; + }, 3); + + $def(self, '$_reduce_381', function $$_reduce_381(val, _values, result) { + var self = this; + + + result = self.builder.$restarg(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_382', function $$_reduce_382(val, _values, result) { + var self = this; + + + result = self.builder.$restarg(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_385', function $$_reduce_385(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_386', function $$_reduce_386(val, _values, result) { + + + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_387', function $$_reduce_387(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_388', function $$_reduce_388(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_389', function $$_reduce_389(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_390', function $$_reduce_390(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_391', function $$_reduce_391(val, _values, result) { + + + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_392', function $$_reduce_392(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_394', function $$_reduce_394(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_395', function $$_reduce_395(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](6)).$concat(val['$[]'](7)); + return result; + }, 3); + + $def(self, '$_reduce_396', function $$_reduce_396(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_397', function $$_reduce_397(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_398', function $$_reduce_398(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_400', function $$_reduce_400(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_401', function $$_reduce_401(val, _values, result) { + var self = this; + + + if (($truthy(val['$[]'](1)['$empty?']()) && ($eqeq(val['$[]'](0).$size(), 1)))) { + result = [self.builder.$procarg0(val['$[]'](0)['$[]'](0))] + } else { + result = val['$[]'](0).$concat(val['$[]'](1)) + }; + return result; + }, 3); + + $def(self, '$_reduce_402', function $$_reduce_402(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_403', function $$_reduce_403(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_404', function $$_reduce_404(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_405', function $$_reduce_405(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_406', function $$_reduce_406(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_407', function $$_reduce_407(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_409', function $$_reduce_409(val, _values, result) { + var self = this; + + + result = self.builder.$args(nil, [], nil); + return result; + }, 3); + + $def(self, '$_reduce_410', function $$_reduce_410(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_value"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_411', function $$_reduce_411(val, _values, result) { + var self = this, $writer = nil; + + + self.max_numparam_stack['$has_ordinary_params!'](); + self.current_arg_stack.$set(nil); + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$args(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_412', function $$_reduce_412(val, _values, result) { + var self = this, $writer = nil; + + + self.max_numparam_stack['$has_ordinary_params!'](); + self.current_arg_stack.$set(nil); + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$args(val['$[]'](0), val['$[]'](1).$concat(val['$[]'](2)), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_413', function $$_reduce_413(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_414', function $$_reduce_414(val, _values, result) { + + + result = val['$[]'](2); + return result; + }, 3); + + $def(self, '$_reduce_415', function $$_reduce_415(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_416', function $$_reduce_416(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_417', function $$_reduce_417(val, _values, result) { + var self = this; + + + self.static_env.$declare(val['$[]'](0)['$[]'](0)); + result = self.builder.$shadowarg(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_419', function $$_reduce_419(val, _values, result) { + var self = this, $writer = nil; + + + self.static_env.$extend_dynamic(); + self.max_numparam_stack.$push($hash2(["static"], {"static": false})); + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_420', function $$_reduce_420(val, _values, result) { + var self = this; + + + self.lexer.$cmdarg().$push(false); + return result; + }, 3); + + $def(self, '$_reduce_421', function $$_reduce_421(val, _values, result) { + var $a, $b, self = this, lambda_call = nil, args = nil, begin_t = nil, body = nil, end_t = nil, $writer = nil; + + + lambda_call = self.builder.$call_lambda(val['$[]'](0)); + args = ($truthy(self.max_numparam_stack['$has_numparams?']()) ? (self.builder.$numargs(self.max_numparam_stack.$top())) : (val['$[]'](2))); + $b = val['$[]'](4), $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (body = ($a[1] == null ? nil : $a[1])), (end_t = ($a[2] == null ? nil : $a[2])), $b; + self.max_numparam_stack.$pop(); + self.static_env.$unextend(); + self.lexer.$cmdarg().$pop(); + + $writer = [val['$[]'](1).$in_lambda()]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$block(lambda_call, begin_t, args, body, end_t); + return result; + }, 3); + + $def(self, '$_reduce_422', function $$_reduce_422(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.max_numparam_stack['$has_ordinary_params!'](); + result = self.builder.$args(val['$[]'](0), val['$[]'](1).$concat(val['$[]'](2)), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_423', function $$_reduce_423(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy(val['$[]'](0)['$any?']())) { + self.max_numparam_stack['$has_ordinary_params!']() + }; + result = self.builder.$args(nil, val['$[]'](0), nil); + return result; + }, 3); + + $def(self, '$_reduce_424', function $$_reduce_424(val, _values, result) { + var self = this, $writer = nil; + + + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_425', function $$_reduce_425(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [val['$[]'](1).$in_lambda()]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = [val['$[]'](0), val['$[]'](2), val['$[]'](3)]; + return result; + }, 3); + + $def(self, '$_reduce_426', function $$_reduce_426(val, _values, result) { + var self = this, $writer = nil; + + + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_427', function $$_reduce_427(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [val['$[]'](1).$in_lambda()]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = [val['$[]'](0), val['$[]'](2), val['$[]'](3)]; + return result; + }, 3); + + $def(self, '$_reduce_428', function $$_reduce_428(val, _values, result) { + var self = this, $writer = nil; + + + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_429', function $$_reduce_429(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [val['$[]'](1).$in_block()]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](3)]); + return result; + }, 3); + + $def(self, '$_reduce_430', function $$_reduce_430(val, _values, result) { + var $a, $b, self = this, begin_t = nil, block_args = nil, body = nil, end_t = nil; + + + $b = val['$[]'](1), $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (block_args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; + result = self.builder.$block(val['$[]'](0), begin_t, block_args, body, end_t); + return result; + }, 3); + + $def(self, '$_reduce_431', function $$_reduce_431(val, _values, result) { + var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; + + + $b = val['$[]'](3), $a = $to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; + result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), lparen_t, args, rparen_t); + return result; + }, 3); + + $def(self, '$_reduce_432', function $$_reduce_432(val, _values, result) { + var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil, method_call = nil, begin_t = nil, body = nil, end_t = nil; + + + $b = val['$[]'](3), $a = $to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; + method_call = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), lparen_t, args, rparen_t); + $b = val['$[]'](4), $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; + result = self.builder.$block(method_call, begin_t, args, body, end_t); + return result; + }, 3); + + $def(self, '$_reduce_433', function $$_reduce_433(val, _values, result) { + var $a, $b, self = this, method_call = nil, begin_t = nil, args = nil, body = nil, end_t = nil; + + + method_call = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), nil, val['$[]'](3), nil); + $b = val['$[]'](4), $a = $to_ary($b), (begin_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), (end_t = ($a[3] == null ? nil : $a[3])), $b; + result = self.builder.$block(method_call, begin_t, args, body, end_t); + return result; + }, 3); + + $def(self, '$_reduce_434', function $$_reduce_434(val, _values, result) { + var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; + + + $b = val['$[]'](1), $a = $to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; + result = self.builder.$call_method(nil, nil, val['$[]'](0), lparen_t, args, rparen_t); + return result; + }, 3); + + $def(self, '$_reduce_435', function $$_reduce_435(val, _values, result) { + var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; + + + $b = val['$[]'](3), $a = $to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; + result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), lparen_t, args, rparen_t); + return result; + }, 3); + + $def(self, '$_reduce_436', function $$_reduce_436(val, _values, result) { + var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; + + + $b = val['$[]'](3), $a = $to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; + result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2), lparen_t, args, rparen_t); + return result; + }, 3); + + $def(self, '$_reduce_437', function $$_reduce_437(val, _values, result) { + var self = this; + + + result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_438', function $$_reduce_438(val, _values, result) { + var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; + + + $b = val['$[]'](2), $a = $to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; + result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), nil, lparen_t, args, rparen_t); + return result; + }, 3); + + $def(self, '$_reduce_439', function $$_reduce_439(val, _values, result) { + var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; + + + $b = val['$[]'](2), $a = $to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; + result = self.builder.$call_method(val['$[]'](0), val['$[]'](1), nil, lparen_t, args, rparen_t); + return result; + }, 3); + + $def(self, '$_reduce_440', function $$_reduce_440(val, _values, result) { + var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; + + + $b = val['$[]'](1), $a = $to_ary($b), (lparen_t = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (rparen_t = ($a[2] == null ? nil : $a[2])), $b; + result = self.builder.$keyword_cmd("super", val['$[]'](0), lparen_t, args, rparen_t); + return result; + }, 3); + + $def(self, '$_reduce_441', function $$_reduce_441(val, _values, result) { + var self = this; + + + result = self.builder.$keyword_cmd("zsuper", val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_442', function $$_reduce_442(val, _values, result) { + var self = this; + + + result = self.builder.$index(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_443', function $$_reduce_443(val, _values, result) { + var self = this, $writer = nil; + + + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_444', function $$_reduce_444(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [val['$[]'](1).$in_block()]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](3)]); + return result; + }, 3); + + $def(self, '$_reduce_445', function $$_reduce_445(val, _values, result) { + var self = this, $writer = nil; + + + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_446', function $$_reduce_446(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [val['$[]'](1).$in_block()]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](3)]); + return result; + }, 3); + + $def(self, '$_reduce_447', function $$_reduce_447(val, _values, result) { + var self = this; + + + self.static_env.$extend_dynamic(); + self.max_numparam_stack.$push($hash2(["static"], {"static": false})); + return result; + }, 3); + + $def(self, '$_reduce_448', function $$_reduce_448(val, _values, result) { + var self = this, args = nil; + + + args = ($truthy(self.max_numparam_stack['$has_numparams?']()) ? (self.builder.$numargs(self.max_numparam_stack.$top())) : (val['$[]'](1))); + result = [args, val['$[]'](2)]; + self.max_numparam_stack.$pop(); + self.static_env.$unextend(); + return result; + }, 3); + + $def(self, '$_reduce_449', function $$_reduce_449(val, _values, result) { + var self = this; + + + self.static_env.$extend_dynamic(); + self.max_numparam_stack.$push($hash2(["static"], {"static": false})); + return result; + }, 3); + + $def(self, '$_reduce_450', function $$_reduce_450(val, _values, result) { + var self = this; + + + self.lexer.$cmdarg().$push(false); + return result; + }, 3); + + $def(self, '$_reduce_451', function $$_reduce_451(val, _values, result) { + var self = this, args = nil; + + + args = ($truthy(self.max_numparam_stack['$has_numparams?']()) ? (self.builder.$numargs(self.max_numparam_stack.$top())) : (val['$[]'](2))); + result = [args, val['$[]'](3)]; + self.max_numparam_stack.$pop(); + self.static_env.$unextend(); + self.lexer.$cmdarg().$pop(); + return result; + }, 3); + + $def(self, '$_reduce_452', function $$_reduce_452(val, _values, result) { + var self = this; + + + result = [self.builder.$when(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3))].concat($to_a(val['$[]'](4))); + return result; + }, 3); + + $def(self, '$_reduce_453', function $$_reduce_453(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_455', function $$_reduce_455(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_beg"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(self.lexer, 'command_start=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.pattern_variables.$push(); + self.pattern_hash_keys.$push(); + result = self.context.$in_kwarg(); + + $writer = [true]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_456', function $$_reduce_456(val, _values, result) { + var self = this, $writer = nil; + + + self.pattern_variables.$pop(); + self.pattern_hash_keys.$pop(); + + $writer = [val['$[]'](1)]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_457', function $$_reduce_457(val, _values, result) { + var self = this; + + + result = [$send(self.builder, 'in_pattern', [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](3), val['$[]'](5)]))].concat($to_a(val['$[]'](6))); + return result; + }, 3); + + $def(self, '$_reduce_458', function $$_reduce_458(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_460', function $$_reduce_460(val, _values, result) { + + + result = [val['$[]'](0), nil]; + return result; + }, 3); + + $def(self, '$_reduce_461', function $$_reduce_461(val, _values, result) { + var self = this; + + + result = [val['$[]'](0), self.builder.$if_guard(val['$[]'](1), val['$[]'](2))]; + return result; + }, 3); + + $def(self, '$_reduce_462', function $$_reduce_462(val, _values, result) { + var self = this; + + + result = [val['$[]'](0), self.builder.$unless_guard(val['$[]'](1), val['$[]'](2))]; + return result; + }, 3); + + $def(self, '$_reduce_464', function $$_reduce_464(val, _values, result) { + var self = this, item = nil; + + + item = self.builder.$match_with_trailing_comma(val['$[]'](0), val['$[]'](1)); + result = self.builder.$array_pattern(nil, [item], nil); + return result; + }, 3); + + $def(self, '$_reduce_465', function $$_reduce_465(val, _values, result) { + var self = this; + + + result = self.builder.$array_pattern(nil, [val['$[]'](0)].$concat(val['$[]'](2)), nil); + return result; + }, 3); + + $def(self, '$_reduce_466', function $$_reduce_466(val, _values, result) { + var self = this; + + + result = self.builder.$find_pattern(nil, val['$[]'](0), nil); + return result; + }, 3); + + $def(self, '$_reduce_467', function $$_reduce_467(val, _values, result) { + var self = this; + + + result = self.builder.$array_pattern(nil, val['$[]'](0), nil); + return result; + }, 3); + + $def(self, '$_reduce_468', function $$_reduce_468(val, _values, result) { + var self = this; + + + result = self.builder.$hash_pattern(nil, val['$[]'](0), nil); + return result; + }, 3); + + $def(self, '$_reduce_470', function $$_reduce_470(val, _values, result) { + var self = this; + + + result = self.builder.$match_as(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_472', function $$_reduce_472(val, _values, result) { + var self = this; + + + result = self.builder.$match_alt(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_474', function $$_reduce_474(val, _values, result) { + var self = this; + + + result = val['$[]'](0); + self.pattern_hash_keys.$push(); + return result; + }, 3); + + $def(self, '$_reduce_475', function $$_reduce_475(val, _values, result) { + var self = this; + + + result = val['$[]'](0); + self.pattern_hash_keys.$push(); + return result; + }, 3); + + $def(self, '$_reduce_478', function $$_reduce_478(val, _values, result) { + var self = this, pattern = nil; + + + self.pattern_hash_keys.$pop(); + pattern = self.builder.$array_pattern(nil, val['$[]'](2), nil); + result = self.builder.$const_pattern(val['$[]'](0), val['$[]'](1), pattern, val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_479', function $$_reduce_479(val, _values, result) { + var self = this, pattern = nil; + + + self.pattern_hash_keys.$pop(); + pattern = self.builder.$find_pattern(nil, val['$[]'](2), nil); + result = self.builder.$const_pattern(val['$[]'](0), val['$[]'](1), pattern, val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_480', function $$_reduce_480(val, _values, result) { + var self = this, pattern = nil; + + + self.pattern_hash_keys.$pop(); + pattern = self.builder.$hash_pattern(nil, val['$[]'](2), nil); + result = self.builder.$const_pattern(val['$[]'](0), val['$[]'](1), pattern, val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_481', function $$_reduce_481(val, _values, result) { + var self = this, pattern = nil; + + + pattern = self.builder.$array_pattern(val['$[]'](1), nil, val['$[]'](2)); + result = self.builder.$const_pattern(val['$[]'](0), val['$[]'](1), pattern, val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_482', function $$_reduce_482(val, _values, result) { + var self = this, pattern = nil; + + + self.pattern_hash_keys.$pop(); + pattern = self.builder.$array_pattern(nil, val['$[]'](2), nil); + result = self.builder.$const_pattern(val['$[]'](0), val['$[]'](1), pattern, val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_483', function $$_reduce_483(val, _values, result) { + var self = this, pattern = nil; + + + self.pattern_hash_keys.$pop(); + pattern = self.builder.$find_pattern(nil, val['$[]'](2), nil); + result = self.builder.$const_pattern(val['$[]'](0), val['$[]'](1), pattern, val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_484', function $$_reduce_484(val, _values, result) { + var self = this, pattern = nil; + + + self.pattern_hash_keys.$pop(); + pattern = self.builder.$hash_pattern(nil, val['$[]'](2), nil); + result = self.builder.$const_pattern(val['$[]'](0), val['$[]'](1), pattern, val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_485', function $$_reduce_485(val, _values, result) { + var self = this, pattern = nil; + + + pattern = self.builder.$array_pattern(val['$[]'](1), nil, val['$[]'](2)); + result = self.builder.$const_pattern(val['$[]'](0), val['$[]'](1), pattern, val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_486', function $$_reduce_486(val, _values, result) { + var self = this; + + + result = self.builder.$array_pattern(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_487', function $$_reduce_487(val, _values, result) { + var self = this; + + + result = self.builder.$find_pattern(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_488', function $$_reduce_488(val, _values, result) { + var self = this; + + + result = self.builder.$array_pattern(val['$[]'](0), [], val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_489', function $$_reduce_489(val, _values, result) { + var self = this, $writer = nil; + + + self.pattern_hash_keys.$push(); + result = self.context.$in_kwarg(); + + $writer = [false]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_490', function $$_reduce_490(val, _values, result) { + var self = this, $writer = nil; + + + self.pattern_hash_keys.$pop(); + + $writer = [val['$[]'](1)]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$hash_pattern(val['$[]'](0), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_491', function $$_reduce_491(val, _values, result) { + var self = this; + + + result = self.builder.$hash_pattern(val['$[]'](0), [], val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_492', function $$_reduce_492(val, _values, result) { + var self = this; + + + self.pattern_hash_keys.$push(); + return result; + }, 3); + + $def(self, '$_reduce_493', function $$_reduce_493(val, _values, result) { + var self = this; + + + self.pattern_hash_keys.$pop(); + result = self.builder.$begin(val['$[]'](0), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_494', function $$_reduce_494(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_495', function $$_reduce_495(val, _values, result) { + + + result = val['$[]'](0); + return result; + }, 3); + + $def(self, '$_reduce_496', function $$_reduce_496(val, _values, result) { + + + result = [].concat($to_a(val['$[]'](0))).concat([val['$[]'](1)]); + return result; + }, 3); + + $def(self, '$_reduce_497', function $$_reduce_497(val, _values, result) { + var self = this, match_rest = nil; + + + match_rest = self.builder.$match_rest(val['$[]'](1), val['$[]'](2)); + result = [].concat($to_a(val['$[]'](0))).concat([match_rest]); + return result; + }, 3); + + $def(self, '$_reduce_498', function $$_reduce_498(val, _values, result) { + var self = this, match_rest = nil; + + + match_rest = self.builder.$match_rest(val['$[]'](1), val['$[]'](2)); + result = [].concat($to_a(val['$[]'](0))).concat([match_rest]).concat($to_a(val['$[]'](4))); + return result; + }, 3); + + $def(self, '$_reduce_499', function $$_reduce_499(val, _values, result) { + var self = this; + + + result = [].concat($to_a(val['$[]'](0))).concat([self.builder.$match_rest(val['$[]'](1))]); + return result; + }, 3); + + $def(self, '$_reduce_500', function $$_reduce_500(val, _values, result) { + var self = this; + + + result = [].concat($to_a(val['$[]'](0))).concat([self.builder.$match_rest(val['$[]'](1))]).concat($to_a(val['$[]'](3))); + return result; + }, 3); + + $def(self, '$_reduce_502', function $$_reduce_502(val, _values, result) { + var self = this, item = nil; + + + item = self.builder.$match_with_trailing_comma(val['$[]'](0), val['$[]'](1)); + result = [item]; + return result; + }, 3); + + $def(self, '$_reduce_503', function $$_reduce_503(val, _values, result) { + var self = this, last_item = nil; + + + last_item = self.builder.$match_with_trailing_comma(val['$[]'](1), val['$[]'](2)); + result = [].concat($to_a(val['$[]'](0))).concat([last_item]); + return result; + }, 3); + + $def(self, '$_reduce_504', function $$_reduce_504(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_505', function $$_reduce_505(val, _values, result) { + + + result = [val['$[]'](0)].concat($to_a(val['$[]'](2))); + return result; + }, 3); + + $def(self, '$_reduce_506', function $$_reduce_506(val, _values, result) { + + + result = [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](4)]); + return result; + }, 3); + + $def(self, '$_reduce_507', function $$_reduce_507(val, _values, result) { + var self = this; + + + result = self.builder.$match_rest(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_508', function $$_reduce_508(val, _values, result) { + var self = this; + + + result = self.builder.$match_rest(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_509', function $$_reduce_509(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_510', function $$_reduce_510(val, _values, result) { + + + result = [].concat($to_a(val['$[]'](0))).concat([val['$[]'](2)]); + return result; + }, 3); + + $def(self, '$_reduce_512', function $$_reduce_512(val, _values, result) { + + + result = [].concat($to_a(val['$[]'](0))).concat($to_a(val['$[]'](2))); + return result; + }, 3); + + $def(self, '$_reduce_513', function $$_reduce_513(val, _values, result) { + + + result = val['$[]'](0); + return result; + }, 3); + + $def(self, '$_reduce_514', function $$_reduce_514(val, _values, result) { + + + result = val['$[]'](0); + return result; + }, 3); + + $def(self, '$_reduce_515', function $$_reduce_515(val, _values, result) { + + + result = val['$[]'](0); + return result; + }, 3); + + $def(self, '$_reduce_516', function $$_reduce_516(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_517', function $$_reduce_517(val, _values, result) { + + + result = [].concat($to_a(val['$[]'](0))).concat([val['$[]'](2)]); + return result; + }, 3); + + $def(self, '$_reduce_518', function $$_reduce_518(val, _values, result) { + var self = this; + + + result = $send(self.builder, 'match_pair', $to_a(val['$[]'](0)).concat([val['$[]'](1)])); + return result; + }, 3); + + $def(self, '$_reduce_519', function $$_reduce_519(val, _values, result) { + var self = this; + + + result = $send(self.builder, 'match_label', $to_a(val['$[]'](0))); + return result; + }, 3); + + $def(self, '$_reduce_520', function $$_reduce_520(val, _values, result) { + + + result = ["label", val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_521', function $$_reduce_521(val, _values, result) { + + + result = ["quoted", [val['$[]'](0), val['$[]'](1), val['$[]'](2)]]; + return result; + }, 3); + + $def(self, '$_reduce_522', function $$_reduce_522(val, _values, result) { + var self = this; + + + result = [self.builder.$match_rest(val['$[]'](0), val['$[]'](1))]; + return result; + }, 3); + + $def(self, '$_reduce_523', function $$_reduce_523(val, _values, result) { + var self = this; + + + result = [self.builder.$match_rest(val['$[]'](0), nil)]; + return result; + }, 3); + + $def(self, '$_reduce_524', function $$_reduce_524(val, _values, result) { + var self = this; + + + result = [self.builder.$match_nil_pattern(val['$[]'](0), val['$[]'](1))]; + return result; + }, 3); + + $def(self, '$_reduce_528', function $$_reduce_528(val, _values, result) { + var self = this; + + + result = self.builder.$range_inclusive(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_529', function $$_reduce_529(val, _values, result) { + var self = this; + + + result = self.builder.$range_exclusive(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_530', function $$_reduce_530(val, _values, result) { + var self = this; + + + result = self.builder.$range_inclusive(val['$[]'](0), val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_531', function $$_reduce_531(val, _values, result) { + var self = this; + + + result = self.builder.$range_exclusive(val['$[]'](0), val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_535', function $$_reduce_535(val, _values, result) { + var self = this; + + + result = self.builder.$range_inclusive(nil, val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_536', function $$_reduce_536(val, _values, result) { + var self = this; + + + result = self.builder.$range_exclusive(nil, val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_545', function $$_reduce_545(val, _values, result) { + var self = this; + + + result = self.builder.$accessible(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_547', function $$_reduce_547(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(self.builder.$match_var(val['$[]'](0))); + return result; + }, 3); + + $def(self, '$_reduce_548', function $$_reduce_548(val, _values, result) { + var self = this, name = nil, lvar = nil; + + + name = val['$[]'](1)['$[]'](0); + if (!$truthy(self.$static_env()['$declared?'](name))) { + self.$diagnostic("error", "undefined_lvar", $hash2(["name"], {"name": name}), val['$[]'](1)) + }; + lvar = self.builder.$accessible(self.builder.$ident(val['$[]'](1))); + result = self.builder.$pin(val['$[]'](0), lvar); + return result; + }, 3); + + $def(self, '$_reduce_549', function $$_reduce_549(val, _values, result) { + var self = this, non_lvar = nil; + + + non_lvar = self.builder.$accessible(val['$[]'](1)); + result = self.builder.$pin(val['$[]'](0), non_lvar); + return result; + }, 3); + + $def(self, '$_reduce_550', function $$_reduce_550(val, _values, result) { + var self = this, expr = nil; + + + expr = self.builder.$begin(val['$[]'](1), val['$[]'](2), val['$[]'](3)); + result = self.builder.$pin(val['$[]'](0), expr); + return result; + }, 3); + + $def(self, '$_reduce_551', function $$_reduce_551(val, _values, result) { + var self = this; + + + result = self.builder.$const_global(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_552', function $$_reduce_552(val, _values, result) { + var self = this; + + + result = self.builder.$const_fetch(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_553', function $$_reduce_553(val, _values, result) { + var self = this; + + + result = self.builder.$const(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_554', function $$_reduce_554(val, _values, result) { + var $a, $b, self = this, assoc_t = nil, exc_var = nil, exc_list = nil; + + + $b = val['$[]'](2), $a = $to_ary($b), (assoc_t = ($a[0] == null ? nil : $a[0])), (exc_var = ($a[1] == null ? nil : $a[1])), $b; + if ($truthy(val['$[]'](1))) { + exc_list = self.builder.$array(nil, val['$[]'](1), nil) + }; + result = [self.builder.$rescue_body(val['$[]'](0), exc_list, assoc_t, exc_var, val['$[]'](3), val['$[]'](4))].concat($to_a(val['$[]'](5))); + return result; + }, 3); + + $def(self, '$_reduce_555', function $$_reduce_555(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_556', function $$_reduce_556(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_559', function $$_reduce_559(val, _values, result) { + + + result = [val['$[]'](0), val['$[]'](1)]; + return result; + }, 3); + + $def(self, '$_reduce_561', function $$_reduce_561(val, _values, result) { + + + result = [val['$[]'](0), val['$[]'](1)]; + return result; + }, 3); + + $def(self, '$_reduce_565', function $$_reduce_565(val, _values, result) { + var self = this; + + + result = self.builder.$string_compose(nil, val['$[]'](0), nil); + return result; + }, 3); + + $def(self, '$_reduce_566', function $$_reduce_566(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_567', function $$_reduce_567(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_568', function $$_reduce_568(val, _values, result) { + var self = this, string = nil; + + + string = self.builder.$string_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + result = self.builder.$dedent_string(string, self.lexer.$dedent_level()); + return result; + }, 3); + + $def(self, '$_reduce_569', function $$_reduce_569(val, _values, result) { + var self = this, string = nil; + + + string = self.builder.$string(val['$[]'](0)); + result = self.builder.$dedent_string(string, self.lexer.$dedent_level()); + return result; + }, 3); + + $def(self, '$_reduce_570', function $$_reduce_570(val, _values, result) { + var self = this; + + + result = self.builder.$character(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_571', function $$_reduce_571(val, _values, result) { + var self = this, string = nil; + + + string = self.builder.$xstring_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + result = self.builder.$dedent_string(string, self.lexer.$dedent_level()); + return result; + }, 3); + + $def(self, '$_reduce_572', function $$_reduce_572(val, _values, result) { + var self = this, opts = nil; + + + opts = self.builder.$regexp_options(val['$[]'](3)); + result = self.builder.$regexp_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2), opts); + return result; + }, 3); + + $def(self, '$_reduce_573', function $$_reduce_573(val, _values, result) { + var self = this; + + + result = self.builder.$words_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_574', function $$_reduce_574(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_575', function $$_reduce_575(val, _values, result) { + var self = this; + + + result = val['$[]'](0)['$<<'](self.builder.$word(val['$[]'](1))); + return result; + }, 3); + + $def(self, '$_reduce_576', function $$_reduce_576(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_577', function $$_reduce_577(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_578', function $$_reduce_578(val, _values, result) { + var self = this; + + + result = self.builder.$symbols_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_579', function $$_reduce_579(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_580', function $$_reduce_580(val, _values, result) { + var self = this; + + + result = val['$[]'](0)['$<<'](self.builder.$word(val['$[]'](1))); + return result; + }, 3); + + $def(self, '$_reduce_581', function $$_reduce_581(val, _values, result) { + var self = this; + + + result = self.builder.$words_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_582', function $$_reduce_582(val, _values, result) { + var self = this; + + + result = self.builder.$symbols_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_583', function $$_reduce_583(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_584', function $$_reduce_584(val, _values, result) { + var self = this; + + + result = val['$[]'](0)['$<<'](self.builder.$string_internal(val['$[]'](1))); + return result; + }, 3); + + $def(self, '$_reduce_585', function $$_reduce_585(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_586', function $$_reduce_586(val, _values, result) { + var self = this; + + + result = val['$[]'](0)['$<<'](self.builder.$symbol_internal(val['$[]'](1))); + return result; + }, 3); + + $def(self, '$_reduce_587', function $$_reduce_587(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_588', function $$_reduce_588(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_589', function $$_reduce_589(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_590', function $$_reduce_590(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_591', function $$_reduce_591(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_592', function $$_reduce_592(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_593', function $$_reduce_593(val, _values, result) { + var self = this; + + + result = self.builder.$string_internal(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_594', function $$_reduce_594(val, _values, result) { + + + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_595', function $$_reduce_595(val, _values, result) { + var self = this; + + + self.lexer.$cmdarg().$push(false); + self.lexer.$cond().$push(false); + return result; + }, 3); + + $def(self, '$_reduce_596', function $$_reduce_596(val, _values, result) { + var self = this; + + + self.lexer.$cmdarg().$pop(); + self.lexer.$cond().$pop(); + result = self.builder.$begin(val['$[]'](0), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_597', function $$_reduce_597(val, _values, result) { + var self = this; + + + result = self.builder.$gvar(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_598', function $$_reduce_598(val, _values, result) { + var self = this; + + + result = self.builder.$ivar(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_599', function $$_reduce_599(val, _values, result) { + var self = this; + + + result = self.builder.$cvar(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_603', function $$_reduce_603(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_end"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$symbol(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_604', function $$_reduce_604(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_end"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$symbol_compose(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_605', function $$_reduce_605(val, _values, result) { + + + result = val['$[]'](0); + return result; + }, 3); + + $def(self, '$_reduce_606', function $$_reduce_606(val, _values, result) { + var self = this; + + + if ($truthy(self.builder['$respond_to?']("negate"))) { + result = self.builder.$negate(val['$[]'](0), val['$[]'](1)) + } else { + result = self.builder.$unary_num(val['$[]'](0), val['$[]'](1)) + }; + return result; + }, 3); + + $def(self, '$_reduce_607', function $$_reduce_607(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_end"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$integer(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_608', function $$_reduce_608(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_end"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$float(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_609', function $$_reduce_609(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_end"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$rational(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_610', function $$_reduce_610(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_end"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$complex(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_611', function $$_reduce_611(val, _values, result) { + var self = this; + + + result = self.builder.$ivar(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_612', function $$_reduce_612(val, _values, result) { + var self = this; + + + result = self.builder.$gvar(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_613', function $$_reduce_613(val, _values, result) { + var self = this; + + + result = self.builder.$cvar(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_614', function $$_reduce_614(val, _values, result) { + var self = this; + + + result = self.builder.$ident(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_615', function $$_reduce_615(val, _values, result) { + var self = this; + + + result = self.builder.$ivar(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_616', function $$_reduce_616(val, _values, result) { + var self = this; + + + result = self.builder.$gvar(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_617', function $$_reduce_617(val, _values, result) { + var self = this; + + + result = self.builder.$const(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_618', function $$_reduce_618(val, _values, result) { + var self = this; + + + result = self.builder.$cvar(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_619', function $$_reduce_619(val, _values, result) { + var self = this; + + + result = self.builder.$nil(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_620', function $$_reduce_620(val, _values, result) { + var self = this; + + + result = self.builder.$self(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_621', function $$_reduce_621(val, _values, result) { + var self = this; + + + result = self.builder.$true(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_622', function $$_reduce_622(val, _values, result) { + var self = this; + + + result = self.builder.$false(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_623', function $$_reduce_623(val, _values, result) { + var self = this; + + + result = self.builder.$__FILE__(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_624', function $$_reduce_624(val, _values, result) { + var self = this; + + + result = self.builder.$__LINE__(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_625', function $$_reduce_625(val, _values, result) { + var self = this; + + + result = self.builder.$__ENCODING__(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_626', function $$_reduce_626(val, _values, result) { + var self = this; + + + result = self.builder.$accessible(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_627', function $$_reduce_627(val, _values, result) { + var self = this; + + + result = self.builder.$accessible(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_628', function $$_reduce_628(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_629', function $$_reduce_629(val, _values, result) { + var self = this; + + + result = self.builder.$assignable(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_630', function $$_reduce_630(val, _values, result) { + var self = this; + + + result = self.builder.$nth_ref(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_631', function $$_reduce_631(val, _values, result) { + var self = this; + + + result = self.builder.$back_ref(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_632', function $$_reduce_632(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = ["expr_value"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_633', function $$_reduce_633(val, _values, result) { + + + result = [val['$[]'](0), val['$[]'](2)]; + return result; + }, 3); + + $def(self, '$_reduce_634', function $$_reduce_634(val, _values, result) { + + + result = nil; + return result; + }, 3); + + $def(self, '$_reduce_636', function $$_reduce_636(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$args(nil, [], nil); + return result; + }, 3); + + $def(self, '$_reduce_637', function $$_reduce_637(val, _values, result) { + var self = this, $writer = nil; + + + result = self.builder.$args(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + + $writer = ["expr_value"]; + $send(self.lexer, 'state=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_639', function $$_reduce_639(val, _values, result) { + var self = this, $writer = nil; + + + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_640', function $$_reduce_640(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [val['$[]'](0).$in_kwarg()]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$args(nil, val['$[]'](1), nil); + return result; + }, 3); + + $def(self, '$_reduce_641', function $$_reduce_641(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_642', function $$_reduce_642(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_643', function $$_reduce_643(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_644', function $$_reduce_644(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_645', function $$_reduce_645(val, _values, result) { + var self = this; + + + self.static_env.$declare_forward_args(); + result = [self.builder.$forward_arg(val['$[]'](0))]; + return result; + }, 3); + + $def(self, '$_reduce_646', function $$_reduce_646(val, _values, result) { + + + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_647', function $$_reduce_647(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_648', function $$_reduce_648(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_649', function $$_reduce_649(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](6)).$concat(val['$[]'](7)); + return result; + }, 3); + + $def(self, '$_reduce_650', function $$_reduce_650(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_651', function $$_reduce_651(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_652', function $$_reduce_652(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_653', function $$_reduce_653(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_654', function $$_reduce_654(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_655', function $$_reduce_655(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_656', function $$_reduce_656(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_657', function $$_reduce_657(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_658', function $$_reduce_658(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_659', function $$_reduce_659(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_660', function $$_reduce_660(val, _values, result) { + + + result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_661', function $$_reduce_661(val, _values, result) { + + + result = val['$[]'](0); + return result; + }, 3); + + $def(self, '$_reduce_662', function $$_reduce_662(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_663', function $$_reduce_663(val, _values, result) { + + + result = val['$[]'](0); + return result; + }, 3); + + $def(self, '$_reduce_664', function $$_reduce_664(val, _values, result) { + var self = this; + + + self.$diagnostic("error", "argument_const", nil, val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_665', function $$_reduce_665(val, _values, result) { + var self = this; + + + self.$diagnostic("error", "argument_ivar", nil, val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_666', function $$_reduce_666(val, _values, result) { + var self = this; + + + self.$diagnostic("error", "argument_gvar", nil, val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_667', function $$_reduce_667(val, _values, result) { + var self = this; + + + self.$diagnostic("error", "argument_cvar", nil, val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_669', function $$_reduce_669(val, _values, result) { + var self = this; + + + self.static_env.$declare(val['$[]'](0)['$[]'](0)); + self.max_numparam_stack['$has_ordinary_params!'](); + result = val['$[]'](0); + return result; + }, 3); + + $def(self, '$_reduce_670', function $$_reduce_670(val, _values, result) { + var self = this; + + + self.current_arg_stack.$set(val['$[]'](0)['$[]'](0)); + result = val['$[]'](0); + return result; + }, 3); + + $def(self, '$_reduce_671', function $$_reduce_671(val, _values, result) { + var self = this; + + + self.current_arg_stack.$set(0); + result = self.builder.$arg(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_672', function $$_reduce_672(val, _values, result) { + var self = this; + + + result = self.builder.$multi_lhs(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_673', function $$_reduce_673(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_674', function $$_reduce_674(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_675', function $$_reduce_675(val, _values, result) { + var self = this, $writer = nil; + + + self.$check_kwarg_name(val['$[]'](0)); + self.static_env.$declare(val['$[]'](0)['$[]'](0)); + self.max_numparam_stack['$has_ordinary_params!'](); + self.current_arg_stack.$set(val['$[]'](0)['$[]'](0)); + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = val['$[]'](0); + return result; + }, 3); + + $def(self, '$_reduce_676', function $$_reduce_676(val, _values, result) { + var self = this, $writer = nil; + + + self.current_arg_stack.$set(nil); + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$kwoptarg(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_677', function $$_reduce_677(val, _values, result) { + var self = this, $writer = nil; + + + self.current_arg_stack.$set(nil); + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$kwarg(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_678', function $$_reduce_678(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$kwoptarg(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_679', function $$_reduce_679(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$kwarg(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_680', function $$_reduce_680(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_681', function $$_reduce_681(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_682', function $$_reduce_682(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_683', function $$_reduce_683(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_686', function $$_reduce_686(val, _values, result) { + var self = this; + + + result = [self.builder.$kwnilarg(val['$[]'](0), val['$[]'](1))]; + return result; + }, 3); + + $def(self, '$_reduce_687', function $$_reduce_687(val, _values, result) { + var self = this; + + + self.static_env.$declare(val['$[]'](1)['$[]'](0)); + result = [self.builder.$kwrestarg(val['$[]'](0), val['$[]'](1))]; + return result; + }, 3); + + $def(self, '$_reduce_688', function $$_reduce_688(val, _values, result) { + var self = this; + + + result = [self.builder.$kwrestarg(val['$[]'](0))]; + return result; + }, 3); + + $def(self, '$_reduce_689', function $$_reduce_689(val, _values, result) { + var self = this, $writer = nil; + + + self.current_arg_stack.$set(0); + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$optarg(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_690', function $$_reduce_690(val, _values, result) { + var self = this, $writer = nil; + + + self.current_arg_stack.$set(0); + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$optarg(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_691', function $$_reduce_691(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_692', function $$_reduce_692(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_693', function $$_reduce_693(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_694', function $$_reduce_694(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_697', function $$_reduce_697(val, _values, result) { + var self = this; + + + self.static_env.$declare(val['$[]'](1)['$[]'](0)); + result = [self.builder.$restarg(val['$[]'](0), val['$[]'](1))]; + return result; + }, 3); + + $def(self, '$_reduce_698', function $$_reduce_698(val, _values, result) { + var self = this; + + + result = [self.builder.$restarg(val['$[]'](0))]; + return result; + }, 3); + + $def(self, '$_reduce_701', function $$_reduce_701(val, _values, result) { + var self = this; + + + self.static_env.$declare(val['$[]'](1)['$[]'](0)); + result = self.builder.$blockarg(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_702', function $$_reduce_702(val, _values, result) { + var self = this; + + + self.static_env.$declare_anonymous_blockarg(); + result = self.builder.$blockarg(val['$[]'](0), nil); + return result; + }, 3); + + $def(self, '$_reduce_703', function $$_reduce_703(val, _values, result) { + + + result = [val['$[]'](1)]; + return result; + }, 3); + + $def(self, '$_reduce_704', function $$_reduce_704(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_706', function $$_reduce_706(val, _values, result) { + + + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_707', function $$_reduce_707(val, _values, result) { + + + result = []; + return result; + }, 3); + + $def(self, '$_reduce_709', function $$_reduce_709(val, _values, result) { + + + result = [val['$[]'](0)]; + return result; + }, 3); + + $def(self, '$_reduce_710', function $$_reduce_710(val, _values, result) { + + + result = val['$[]'](0)['$<<'](val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_711', function $$_reduce_711(val, _values, result) { + var self = this; + + + result = self.builder.$pair(val['$[]'](0), val['$[]'](1), val['$[]'](2)); + return result; + }, 3); + + $def(self, '$_reduce_712', function $$_reduce_712(val, _values, result) { + var self = this; + + + result = self.builder.$pair_keyword(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_713', function $$_reduce_713(val, _values, result) { + var self = this; + + + result = self.builder.$pair_label(val['$[]'](0)); + return result; + }, 3); + + $def(self, '$_reduce_714', function $$_reduce_714(val, _values, result) { + var self = this; + + + result = self.builder.$pair_quoted(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](3)); + return result; + }, 3); + + $def(self, '$_reduce_715', function $$_reduce_715(val, _values, result) { + var self = this; + + + result = self.builder.$kwsplat(val['$[]'](0), val['$[]'](1)); + return result; + }, 3); + + $def(self, '$_reduce_728', function $$_reduce_728(val, _values, result) { + + + result = ["dot", val['$[]'](0)['$[]'](1)]; + return result; + }, 3); + + $def(self, '$_reduce_729', function $$_reduce_729(val, _values, result) { + + + result = ["anddot", val['$[]'](0)['$[]'](1)]; + return result; + }, 3); + + $def(self, '$_reduce_734', function $$_reduce_734(val, _values, result) { + + + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_735', function $$_reduce_735(val, _values, result) { + + + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_736', function $$_reduce_736(val, _values, result) { + + + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_740', function $$_reduce_740(val, _values, result) { + var self = this; + + + self.$yyerrok(); + return result; + }, 3); + + $def(self, '$_reduce_744', function $$_reduce_744(val, _values, result) { + + + result = nil; + return result; + }, 3); + return $def(self, '$_reduce_none', function $$_reduce_none(val, _values, result) { + + return val['$[]'](0) + }, 3); + })($nesting[0], $$$($$('Parser'), 'Base'), $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/ast/builder"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $Opal = Opal.Opal, $hash2 = Opal.hash2, $def = Opal.def; + + Opal.add_stubs('require,emit_lambda=,-,new'); + + self.$require("opal/ast/node"); + self.$require("parser/ruby31"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'AST'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Builder'); + + var $writer = nil; + + + + $writer = [true]; + $send(self, 'emit_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return $def(self, '$n', function $$n(type, children, location) { + + return $$$($$$($Opal, 'AST'), 'Node').$new(type, children, $hash2(["location"], {"location": location})) + }, 3); + })($nesting[0], $$$($$$($$$('Parser'), 'Builders'), 'Default')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $const_set = Opal.const_set, $truthy = Opal.truthy, $Opal = Opal.Opal, $hash2 = Opal.hash2, $defs = Opal.defs, $alias = Opal.alias, $rb_plus = Opal.rb_plus, $eqeqeq = Opal.eqeqeq, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $send2 = Opal.send2, $find_super = Opal.find_super; + + Opal.add_stubs('require,new,current_node,loc,+,stmts_of,begin_with_stmts,nil?,include?,type,children,===,length,[],s,attr_accessor,current_node=,-,location=,raise'); + + self.$require("parser"); + self.$require("opal/ast/node"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Base'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'DummyLocation'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$node=', function $DummyLocation_node$eq$1($a) { + var $post_args, $rest_arg; + + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return nil; + }, -1); + + $def(self, '$expression', function $$expression() { + var self = this; + + return self + }, 0); + + $def(self, '$begin_pos', function $$begin_pos() { + + return 0 + }, 0); + + $def(self, '$end_pos', function $$end_pos() { + + return 0 + }, 0); + + $def(self, '$source', function $$source() { + + return "" + }, 0); + + $def(self, '$line', function $$line() { + + return 0 + }, 0); + + $def(self, '$column', function $$column() { + + return 0 + }, 0); + return $def(self, '$last_line', function $$last_line() { + + return $$$($$('Float'), 'INFINITY') + }, 0); + })($nesting[0], null, $nesting); + $const_set($nesting[0], 'DUMMY_LOCATION', $$('DummyLocation').$new()); + + $def(self, '$s', function $$s(type, $a) { + var $post_args, children, self = this, loc = nil; + + + + $post_args = Opal.slice.call(arguments, 1); + + children = $post_args;; + loc = ($truthy(self.$current_node()) ? (self.$current_node().$loc()) : ($$('DUMMY_LOCATION'))); + return $$$($$$($Opal, 'AST'), 'Node').$new(type, children, $hash2(["location"], {"location": loc})); + }, -2); + $defs(self, '$s', function $$s(type, $a) { + var $post_args, children; + + + + $post_args = Opal.slice.call(arguments, 1); + + children = $post_args;; + return $$$($$$($Opal, 'AST'), 'Node').$new(type, children, $hash2(["location"], {"location": $$('DUMMY_LOCATION')})); + }, -2); + $alias(self, "on_iter", "process_regular_node"); + $alias(self, "on_top", "process_regular_node"); + $alias(self, "on_zsuper", "process_regular_node"); + $alias(self, "on_jscall", "on_send"); + $alias(self, "on_jsattr", "process_regular_node"); + $alias(self, "on_jsattrasgn", "process_regular_node"); + $alias(self, "on_kwsplat", "process_regular_node"); + + $def(self, '$prepend_to_body', function $$prepend_to_body(body, node) { + var self = this, stmts = nil; + + + stmts = $rb_plus(self.$stmts_of(node), self.$stmts_of(body)); + return self.$begin_with_stmts(stmts); + }, 2); + + $def(self, '$append_to_body', function $$append_to_body(body, node) { + var self = this, stmts = nil; + + + stmts = $rb_plus(self.$stmts_of(body), self.$stmts_of(node)); + return self.$begin_with_stmts(stmts); + }, 2); + + $def(self, '$stmts_of', function $$stmts_of(node) { + + if ($truthy(node['$nil?']())) { + return [] + } else if ($truthy(["begin", "kwbegin"]['$include?'](node.$type()))) { + return node.$children() + } else { + return [node] + } + }, 1); + + $def(self, '$begin_with_stmts', function $$begin_with_stmts(stmts) { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq(0, ($ret_or_1 = stmts.$length()))) { + return nil + } else if ($eqeqeq(1, $ret_or_1)) { + return stmts['$[]'](0) + } else { + return $send(self, 's', ["begin"].concat($to_a(stmts))) + } + }, 1); + self.$attr_accessor("current_node"); + + $def(self, '$process', function $$process(node) { + var $yield = $$process.$$p || nil, self = this, $writer = nil; + + delete $$process.$$p; + return (function() { try { + + + $writer = [node]; + $send(self, 'current_node=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return $send2(self, $find_super(self, 'process', $$process, false, true), 'process', [node], $yield); + } finally { + (($writer = [nil]), $send(self, 'current_node=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)]) + }; })() + }, 1); + return $def(self, '$error', function $$error(msg) { + var self = this, error = nil, $writer = nil; + + + error = $$$($Opal, 'RewritingError').$new(msg); + if ($truthy(self.$current_node())) { + + $writer = [self.$current_node().$loc()]; + $send(error, 'location=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return self.$raise(error); + }, 1); + })($nesting[0], $$$($$$($$$('Parser'), 'AST'), 'Processor'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/opal_engine_check"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_a = Opal.to_a, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $const_set = Opal.const_set; + + Opal.add_stubs('require,children,skip_check_present?,process,s,skip_check_present_not?,=='); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'OpalEngineCheck'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$on_if', function $$on_if(node) { + var $a, $yield = $$on_if.$$p || nil, self = this, test = nil, true_body = nil, false_body = nil, $ret_or_1 = nil; + + delete $$on_if.$$p; + + $a = [].concat($to_a(node.$children())), (test = ($a[0] == null ? nil : $a[0])), (true_body = ($a[1] == null ? nil : $a[1])), (false_body = ($a[2] == null ? nil : $a[2])), $a; + if ($truthy(self['$skip_check_present?'](test))) { + return self.$process(($truthy(($ret_or_1 = true_body)) ? ($ret_or_1) : (self.$s("nil")))) + } else if ($truthy(self['$skip_check_present_not?'](test))) { + return self.$process(($truthy(($ret_or_1 = false_body)) ? ($ret_or_1) : (self.$s("nil")))) + } else { + return $send2(self, $find_super(self, 'on_if', $$on_if, false, true), 'on_if', [node], $yield) + }; + }, 1); + + $def(self, '$skip_check_present?', function $OpalEngineCheck_skip_check_present$ques$1(test) { + var $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = test['$==']($$('RUBY_ENGINE_CHECK'))))) { + return $ret_or_1 + } else { + return test['$==']($$('RUBY_PLATFORM_CHECK')) + } + }, 1); + + $def(self, '$skip_check_present_not?', function $OpalEngineCheck_skip_check_present_not$ques$2(test) { + var $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = test['$==']($$('RUBY_ENGINE_CHECK_NOT'))))) { + return $ret_or_1 + } else { + return test['$==']($$('RUBY_PLATFORM_CHECK_NOT')) + } + }, 1); + $const_set($nesting[0], 'RUBY_ENGINE_CHECK', self.$s("send", self.$s("const", nil, "RUBY_ENGINE"), "==", self.$s("str", "opal"))); + $const_set($nesting[0], 'RUBY_ENGINE_CHECK_NOT', self.$s("send", self.$s("const", nil, "RUBY_ENGINE"), "!=", self.$s("str", "opal"))); + $const_set($nesting[0], 'RUBY_PLATFORM_CHECK', self.$s("send", self.$s("const", nil, "RUBY_PLATFORM"), "==", self.$s("str", "opal"))); + return $const_set($nesting[0], 'RUBY_PLATFORM_CHECK_NOT', self.$s("send", self.$s("const", nil, "RUBY_PLATFORM"), "!=", self.$s("str", "opal"))); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/for_rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $defs = Opal.defs, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $to_a = Opal.to_a, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super; + + Opal.add_stubs('require,+,find,map,s,next_tmp,class,===,type,updated,<<,prepend_to_body,process,attr_reader,new,to_a,result'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ForRewriter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs(self, '$reset_tmp_counter!', function $ForRewriter_reset_tmp_counter$excl$1() { + var self = this; + + return (self.counter = 0) + }, 0); + $defs(self, '$next_tmp', function $$next_tmp() { + var self = this, $ret_or_1 = nil; + if (self.counter == null) self.counter = nil; + + + self.counter = ($truthy(($ret_or_1 = self.counter)) ? ($ret_or_1) : (0)); + self.counter = $rb_plus(self.counter, 1); + return "$for_tmp" + (self.counter); + }, 0); + + $def(self, '$on_for', function $$on_for(node) { + var $a, self = this, loop_variable = nil, iterating_value = nil, loop_body = nil, iterating_lvars = nil, lvars_declared_in_body = nil, outer_assigns = nil, tmp_loop_variable = nil, get_tmp_loop_variable = nil, loop_variable_assignment = nil, $ret_or_1 = nil; + + + $a = [].concat($to_a(node)), (loop_variable = ($a[0] == null ? nil : $a[0])), (iterating_value = ($a[1] == null ? nil : $a[1])), (loop_body = ($a[2] == null ? nil : $a[2])), $a; + iterating_lvars = $$('LocalVariableAssigns').$find(loop_variable); + lvars_declared_in_body = $$('LocalVariableAssigns').$find(loop_body); + outer_assigns = $send($rb_plus(iterating_lvars, lvars_declared_in_body), 'map', [], function $$2(lvar_name){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (lvar_name == null) lvar_name = nil;; + return self.$s("lvdeclare", lvar_name);}, {$$arity: 1, $$s: self}); + tmp_loop_variable = self.$class().$next_tmp(); + get_tmp_loop_variable = self.$s("js_tmp", tmp_loop_variable); + loop_variable_assignment = ($eqeqeq("mlhs", ($ret_or_1 = loop_variable.$type())) ? (loop_variable.$updated("masgn", [loop_variable, get_tmp_loop_variable])) : (loop_variable['$<<'](get_tmp_loop_variable))); + loop_body = self.$prepend_to_body(loop_body, loop_variable_assignment); + node = node.$updated("send", [iterating_value, "each", node.$updated("iter", [self.$s("args", self.$s("arg", tmp_loop_variable)), self.$process(loop_body)])]); + return node.$updated("begin", [].concat($to_a(outer_assigns)).concat([node])); + }, 1); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'LocalVariableAssigns'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$attr_reader("result"); + $defs(self, '$find', function $$find(node) { + var self = this, processor = nil; + + + processor = self.$new(); + processor.$process(node); + return processor.$result().$to_a(); + }, 1); + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return (self.result = $$('Set').$new()) + }, 0); + return $def(self, '$on_lvasgn', function $$on_lvasgn(node) { + var $a, $yield = $$on_lvasgn.$$p || nil, self = this, name = nil, _ = nil; + + delete $$on_lvasgn.$$p; + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; + self.$result()['$<<'](name); + return $send2(self, $find_super(self, 'on_lvasgn', $$on_lvasgn, false, true), 'on_lvasgn', [node], $yield); + }, 1); + })($nesting[0], $$('Base'), $nesting); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/explicit_writer_return"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $const_set = Opal.const_set, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $slice = Opal.slice, $eqeq = Opal.eqeq, $regexp = Opal.regexp, $send = Opal.send; + + Opal.add_stubs('require,s,==,to_s,=~,process_all,updated'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ExplicitWriterReturn'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.in_masgn = nil; + + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return (self.in_masgn = false) + }, 0); + $const_set($nesting[0], 'TMP_NAME', "$writer"); + $const_set($nesting[0], 'GET_ARGS_NODE', self.$s("lvar", $$('TMP_NAME'))); + $const_set($nesting[0], 'RETURN_ARGS_NODE', self.$s("jsattr", $$('GET_ARGS_NODE'), self.$s("send", self.$s("jsattr", $$('GET_ARGS_NODE'), self.$s("str", "length")), "-", self.$s("int", 1)))); + + $def(self, '$on_send', function $$on_send(node) { + var $a, $yield = $$on_send.$$p || nil, self = this, recv = nil, method_name = nil, args = nil, set_args_node = nil; + + delete $$on_send.$$p; + + if ($truthy(self.in_masgn)) { + return $send2(self, $find_super(self, 'on_send', $$on_send, false, true), 'on_send', [node], $yield) + }; + $a = [].concat($to_a(node)), (recv = ($a[0] == null ? nil : $a[0])), (method_name = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $a; + if (($truthy(method_name.$to_s()['$=~']($regexp([$$('REGEXP_START'), "\\w+=", $$('REGEXP_END')]))) || ($eqeq(method_name.$to_s(), "[]=")))) { + + set_args_node = self.$s("lvasgn", $$('TMP_NAME'), $send(self, 's', ["array"].concat($to_a(self.$process_all(args))))); + return self.$s("begin", set_args_node, node.$updated(nil, [recv, method_name, self.$s("splat", $$('GET_ARGS_NODE'))]), $$('RETURN_ARGS_NODE')); + } else { + return $send2(self, $find_super(self, 'on_send', $$on_send, false, true), 'on_send', [node], $yield) + }; + }, 1); + return $def(self, '$on_masgn', function $$on_masgn(node) { + var $yield = $$on_masgn.$$p || nil, self = this, result = nil; + + delete $$on_masgn.$$p; + + self.in_masgn = true; + result = $send2(self, $find_super(self, 'on_masgn', $$on_masgn, false, true), 'on_masgn', [node], $yield); + self.in_masgn = false; + return result; + }, 1); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/regexp_anchors"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $const_set = Opal.const_set; + + Opal.add_stubs('new'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $const_set(self, 'REGEXP_START', "^"); + $const_set(self, 'REGEXP_END', "$"); + $const_set(self, 'FORBIDDEN_STARTING_IDENTIFIER_CHARS', "\\u0001-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"); + $const_set(self, 'FORBIDDEN_ENDING_IDENTIFIER_CHARS', "\\u0001-\\u0020\\u0022-\\u002F\\u003A-\\u003E\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"); + $const_set(self, 'INLINE_IDENTIFIER_REGEXP', $$('Regexp').$new("[^" + ($$$(self, 'FORBIDDEN_STARTING_IDENTIFIER_CHARS')) + "]*[^" + ($$$(self, 'FORBIDDEN_ENDING_IDENTIFIER_CHARS')) + "]")); + $const_set(self, 'FORBIDDEN_CONST_NAME_CHARS', "\\u0001-\\u0020\\u0021-\\u002F\\u003B-\\u003F\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"); + return $const_set(self, 'CONST_NAME_REGEXP', $$('Regexp').$new("" + ($$$(self, 'REGEXP_START')) + "(::)?[A-Z][^" + ($$$(self, 'FORBIDDEN_CONST_NAME_CHARS')) + "]*" + ($$$(self, 'REGEXP_END')))); + })($nesting[0], $nesting) +}; + +Opal.modules["opal/rewriters/js_reserved_words"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $regexp = Opal.regexp, $truthy = Opal.truthy, $defs = Opal.defs, $def = Opal.def, $range = Opal.range, $to_a = Opal.to_a, $send2 = Opal.send2, $find_super = Opal.find_super, $hash2 = Opal.hash2, $alias = Opal.alias; + + Opal.add_stubs('require,freeze,=~,!,valid_name?,class,to_sym,valid_ivar_name?,[],to_s,updated,fix_var_name,fix_ivar_name'); + + self.$require("opal/rewriters/base"); + self.$require("opal/regexp_anchors"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'JsReservedWords'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $const_set($nesting[0], 'ES51_RESERVED_WORD', $regexp([$$('REGEXP_START'), "(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)", $$('REGEXP_END')]).$freeze()); + $const_set($nesting[0], 'ES3_RESERVED_WORD_EXCLUSIVE', $regexp([$$('REGEXP_START'), "(?:int|byte|char|goto|long|final|float|short|double|native|throws|boolean|abstract|volatile|transient|synchronized)", $$('REGEXP_END')]).$freeze()); + $const_set($nesting[0], 'PROTO_SPECIAL_PROPS', $regexp([$$('REGEXP_START'), "(?:constructor|displayName|__proto__|__parent__|__noSuchMethod__|__count__)", $$('REGEXP_END')]).$freeze()); + $const_set($nesting[0], 'PROTO_SPECIAL_METHODS', $regexp([$$('REGEXP_START'), "(?:hasOwnProperty|valueOf)", $$('REGEXP_END')]).$freeze()); + $const_set($nesting[0], 'IMMUTABLE_PROPS', $regexp([$$('REGEXP_START'), "(?:NaN|Infinity|undefined)", $$('REGEXP_END')]).$freeze()); + $const_set($nesting[0], 'BASIC_IDENTIFIER_RULES', $regexp([$$('REGEXP_START'), "[$_a-z][$_a-z\\d]*", $$('REGEXP_END')], 'i').$freeze()); + $const_set($nesting[0], 'RESERVED_FUNCTION_NAMES', $regexp([$$('REGEXP_START'), "(?:Array)", $$('REGEXP_END')]).$freeze()); + $defs(self, '$valid_name?', function $JsReservedWords_valid_name$ques$1(name) { + var $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + if ($truthy(($ret_or_1 = $$('BASIC_IDENTIFIER_RULES')['$=~'](name)))) { + return ($truthy(($ret_or_2 = ($truthy(($ret_or_3 = $$('ES51_RESERVED_WORD')['$=~'](name))) ? ($ret_or_3) : ($$('ES3_RESERVED_WORD_EXCLUSIVE')['$=~'](name))))) ? ($ret_or_2) : ($$('IMMUTABLE_PROPS')['$=~'](name)))['$!']() + } else { + return $ret_or_1 + } + }, 1); + $defs(self, '$valid_ivar_name?', function $JsReservedWords_valid_ivar_name$ques$2(name) { + var $ret_or_1 = nil; + + return ($truthy(($ret_or_1 = $$('PROTO_SPECIAL_PROPS')['$=~'](name))) ? ($ret_or_1) : ($$('PROTO_SPECIAL_METHODS')['$=~'](name)))['$!']() + }, 1); + + $def(self, '$fix_var_name', function $$fix_var_name(name) { + var self = this; + + if ($truthy(self.$class()['$valid_name?'](name))) { + return name + } else { + return (("" + (name)) + "$").$to_sym() + } + }, 1); + + $def(self, '$fix_ivar_name', function $$fix_ivar_name(name) { + var self = this; + + if ($truthy(self.$class()['$valid_ivar_name?'](name.$to_s()['$[]']($range(1, -1, false))))) { + return name + } else { + return (("" + (name)) + "$").$to_sym() + } + }, 1); + + $def(self, '$on_lvar', function $$on_lvar(node) { + var $a, $yield = $$on_lvar.$$p || nil, self = this, name = nil, _ = nil; + + delete $$on_lvar.$$p; + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; + node = node.$updated(nil, [self.$fix_var_name(name)]); + return $send2(self, $find_super(self, 'on_lvar', $$on_lvar, false, true), 'on_lvar', [node], null); + }, 1); + + $def(self, '$on_lvasgn', function $$on_lvasgn(node) { + var $a, $yield = $$on_lvasgn.$$p || nil, self = this, name = nil, value = nil; + + delete $$on_lvasgn.$$p; + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (value = ($a[1] == null ? nil : $a[1])), $a; + node = ($truthy(value) ? (node.$updated(nil, [self.$fix_var_name(name), value])) : (node.$updated(nil, [self.$fix_var_name(name)]))); + return $send2(self, $find_super(self, 'on_lvasgn', $$on_lvasgn, false, true), 'on_lvasgn', [node], null); + }, 1); + + $def(self, '$on_ivar', function $$on_ivar(node) { + var $a, $yield = $$on_ivar.$$p || nil, self = this, name = nil, _ = nil; + + delete $$on_ivar.$$p; + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; + node = node.$updated(nil, [self.$fix_ivar_name(name)]); + return $send2(self, $find_super(self, 'on_ivar', $$on_ivar, false, true), 'on_ivar', [node], null); + }, 1); + + $def(self, '$on_ivasgn', function $$on_ivasgn(node) { + var $a, $yield = $$on_ivasgn.$$p || nil, self = this, name = nil, value = nil; + + delete $$on_ivasgn.$$p; + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (value = ($a[1] == null ? nil : $a[1])), $a; + node = ($truthy(value) ? (node.$updated(nil, [self.$fix_ivar_name(name), value])) : (node.$updated(nil, [self.$fix_ivar_name(name)]))); + return $send2(self, $find_super(self, 'on_ivasgn', $$on_ivasgn, false, true), 'on_ivasgn', [node], null); + }, 1); + + $def(self, '$on_restarg', function $$on_restarg(node) { + var $a, self = this, name = nil, _ = nil; + + + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; + if ($truthy(name)) { + node = node.$updated(nil, [self.$fix_var_name(name)], $hash2(["meta"], {"meta": $hash2(["arg_name"], {"arg_name": name})})) + }; + return node; + }, 1); + $alias(self, "on_kwrestarg", "on_restarg"); + return $def(self, '$on_argument', function $$on_argument(node) { + var $a, $yield = $$on_argument.$$p || nil, self = this, name = nil, value = nil, fixed_name = nil, new_children = nil; + + delete $$on_argument.$$p; + + node = $send2(self, $find_super(self, 'on_argument', $$on_argument, false, true), 'on_argument', [node], null); + $a = [].concat($to_a(node)), (name = ($a[0] == null ? nil : $a[0])), (value = ($a[1] == null ? nil : $a[1])), $a; + fixed_name = self.$fix_var_name(name); + new_children = ($truthy(value) ? ([fixed_name, value]) : ([fixed_name])); + return node.$updated(nil, new_children, $hash2(["meta"], {"meta": $hash2(["arg_name"], {"arg_name": name})})); + }, 1); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/block_to_iter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_a = Opal.to_a, $rb_plus = Opal.rb_plus, $def = Opal.def; + + Opal.add_stubs('require,s,process,updated,+,children'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'BlockToIter'); + + + return $def(self, '$on_block', function $$on_block(node) { + var $a, self = this, recvr = nil, args = nil, body = nil, iter_node = nil; + + + $a = [].concat($to_a(node)), (recvr = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), $a; + iter_node = self.$s("iter", args, body); + return self.$process(recvr.$updated(nil, $rb_plus(recvr.$children(), [iter_node]))); + }, 1) + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/dot_js_syntax"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_a = Opal.to_a, $slice = Opal.slice, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $neqeq = Opal.neqeq, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $send = Opal.send; + + Opal.add_stubs('require,==,type,===,!=,size,error,first,to_js_attr_call,to_js_attr_assign_call,to_native_js_call,s'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'DotJsSyntax'); + + + + + $def(self, '$on_send', function $$on_send(node) { + var $a, $yield = $$on_send.$$p || nil, self = this, recv = nil, meth = nil, args = nil, recv_of_recv = nil, meth_of_recv = nil, _ = nil, $ret_or_1 = nil, property = nil, value = nil; + + delete $$on_send.$$p; + + $a = [].concat($to_a(node)), (recv = ($a[0] == null ? nil : $a[0])), (meth = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $a; + if (($truthy(recv) && ($eqeq(recv.$type(), "send")))) { + + $a = [].concat($to_a(recv)), (recv_of_recv = ($a[0] == null ? nil : $a[0])), (meth_of_recv = ($a[1] == null ? nil : $a[1])), (_ = ($a[2] == null ? nil : $a[2])), $a; + if ($eqeq(meth_of_recv, "JS")) { + + if ($eqeqeq("[]", ($ret_or_1 = meth))) { + + if ($neqeq(args.$size(), 1)) { + self.$error(".JS[:property] syntax supports only one argument") + }; + property = args.$first(); + node = self.$to_js_attr_call(recv_of_recv, property); + } else if ($eqeqeq("[]=", $ret_or_1)) { + + if ($neqeq(args.$size(), 2)) { + self.$error(".JS[:property]= syntax supports only two arguments") + }; + $a = [].concat($to_a(args)), (property = ($a[0] == null ? nil : $a[0])), (value = ($a[1] == null ? nil : $a[1])), $a; + node = self.$to_js_attr_assign_call(recv_of_recv, property, value); + } else { + node = self.$to_native_js_call(recv_of_recv, meth, args) + }; + return $send2(self, $find_super(self, 'on_send', $$on_send, false, true), 'on_send', [node], null); + } else { + return $send2(self, $find_super(self, 'on_send', $$on_send, false, true), 'on_send', [node], $yield) + }; + } else { + return $send2(self, $find_super(self, 'on_send', $$on_send, false, true), 'on_send', [node], $yield) + }; + }, 1); + + $def(self, '$to_native_js_call', function $$to_native_js_call(recv, meth, args) { + var self = this; + + return $send(self, 's', ["jscall", recv, meth].concat($to_a(args))) + }, 3); + + $def(self, '$to_js_attr_call', function $$to_js_attr_call(recv, property) { + var self = this; + + return self.$s("jsattr", recv, property) + }, 2); + return $def(self, '$to_js_attr_assign_call', function $$to_js_attr_assign_call(recv, property, value) { + var self = this; + + return self.$s("jsattrasgn", recv, property, value) + }, 3); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/pattern_matching"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $to_a = Opal.to_a, $rb_plus = Opal.rb_plus, $slice = Opal.slice, $truthy = Opal.truthy, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $not = Opal.not, $neqeq = Opal.neqeq, $eqeq = Opal.eqeq, $alias = Opal.alias, $Opal = Opal.Opal; + + Opal.add_stubs('require,s,convert_full_pattern,raise_no_matching_pattern_error,+,process,single_case_match,private,shift,===,type,!,empty?,!=,==,class,new,run!,variables,pattern,map,<<,array,on_literal,first,children,to_proc,method,each,to_ast,on_array_pattern,compact,[]'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'PatternMatching'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.depth = nil; + + + $def(self, '$initialize', function $$initialize() { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.depth = 0; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [], $yield); + }, 0); + + $def(self, '$on_match_pattern', function $$on_match_pattern(node) { + var $a, self = this, from = nil, pat = nil; + + + $a = [].concat($to_a(node)), (from = ($a[0] == null ? nil : $a[0])), (pat = ($a[1] == null ? nil : $a[1])), $a; + return self.$s("begin", self.$s("lvasgn", "$pmvar", from), self.$s("if", self.$convert_full_pattern(from, pat), nil, self.$raise_no_matching_pattern_error("$pmvar"))); + }, 1); + + $def(self, '$on_match_pattern_p', function $$on_match_pattern_p(node) { + var $a, self = this, from = nil, pat = nil; + + + $a = [].concat($to_a(node)), (from = ($a[0] == null ? nil : $a[0])), (pat = ($a[1] == null ? nil : $a[1])), $a; + return self.$s("if", self.$convert_full_pattern(from, pat), self.$s("true"), self.$s("false")); + }, 1); + + $def(self, '$on_case_match', function $$on_case_match(node) { + var $a, $b, self = this, cmvar = nil, from = nil, cases = nil, els = nil; + + + self.depth = $rb_plus(self.depth, 1); + cmvar = "$cmvar" + (self.depth); + $a = [].concat($to_a(node)), (from = ($a[0] == null ? nil : $a[0])), $b = $a.length - 1, $b = ($b < 1) ? 1 : $b, (cases = $slice.call($a, 1, $b)), (els = ($a[$b] == null ? nil : $a[$b])), $a; + if ($truthy(els)) { + self.$process(els) + } else { + els = self.$raise_no_matching_pattern_error(cmvar) + }; + return self.$s("begin", self.$s("lvasgn", cmvar, from), $send(self, 'single_case_match', [cmvar].concat($to_a(cases)).concat([els]))); + }, 1); + self.$private(); + + $def(self, '$raise_no_matching_pattern_error', function $$raise_no_matching_pattern_error(from) { + var self = this; + + return self.$s("send", nil, "raise", self.$s("const", self.$s("cbase"), "NoMatchingPatternError"), self.$s("lvar", from)) + }, 1); + + $def(self, '$single_case_match', function $$single_case_match(from, $a, $b) { + var $post_args, cases, els, $c, self = this, cas = nil, pat = nil, if_guard = nil, body = nil, guard = nil, $ret_or_1 = nil; + + + + $post_args = Opal.slice.call(arguments, 1); + + cases = $post_args.splice(0, $post_args.length - 1);; + + els = $post_args.shift(); + if (els == null) els = nil;; + cas = cases.$shift(); + $c = [].concat($to_a(cas)), (pat = ($c[0] == null ? nil : $c[0])), (if_guard = ($c[1] == null ? nil : $c[1])), (body = ($c[2] == null ? nil : $c[2])), $c; + pat = self.$convert_full_pattern(from, pat); + if ($truthy(if_guard)) { + + $c = [].concat($to_a(if_guard)), (guard = ($c[0] == null ? nil : $c[0])), $c; + if ($eqeqeq("if_guard", ($ret_or_1 = if_guard.$type()))) { + pat = self.$s("and", pat, guard) + } else if ($eqeqeq("unless_guard", $ret_or_1)) { + pat = self.$s("and", pat, self.$s("send", guard, "!")) + } else { + nil + }; + }; + return self.$s("if", pat, self.$process(body), ($not(cases['$empty?']()) ? ($send(self, 'single_case_match', [from].concat($to_a(cases)).concat([els]))) : ($neqeq(els, self.$s("empty_else")) ? (els) : nil))); + }, -3); + + $def(self, '$convert_full_pattern', function $$convert_full_pattern(from, pat) { + var self = this, converter = nil; + + + if ($eqeq(from.$class(), $$('Symbol'))) { + from = self.$s("lvar", from) + }; + converter = $$('PatternConverter').$new(pat); + converter['$run!'](); + return self.$s("masgn", $send(self, 's', ["mlhs"].concat($to_a(converter.$variables()))), self.$s("send", self.$s("const", self.$s("cbase"), "PatternMatching"), "call", from, converter.$pattern())); + }, 2); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'PatternConverter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.pat = $proto.outpat = $proto.variables = nil; + + + $def(self, '$initialize', function $$initialize(pat) { + var self = this; + + + self.pat = pat; + return (self.variables = []); + }, 1); + + $def(self, '$run!', function $PatternConverter_run$excl$1() { + var self = this; + + return (self.outpat = self.$process(self.pat)) + }, 0); + + $def(self, '$pattern', function $$pattern() { + var self = this; + + return self.outpat + }, 0); + + $def(self, '$variables', function $$variables() { + var self = this; + + return $send(self.variables, 'map', [], function $$2(i){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (i == null) i = nil;; + return self.$s("lvasgn", i);}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$on_match_var', function $$on_match_var(node) { + var $a, self = this, var$ = nil; + + + $a = [].concat($to_a(node)), (var$ = ($a[0] == null ? nil : $a[0])), $a; + self.variables['$<<'](var$); + return self.$s("sym", "var"); + }, 1); + + $def(self, '$on_match_as', function $$on_match_as(node) { + var $a, self = this, pat = nil, save = nil; + + + $a = [].concat($to_a(node)), (pat = ($a[0] == null ? nil : $a[0])), (save = ($a[1] == null ? nil : $a[1])), $a; + self.$process(save); + return self.$array(self.$s("sym", "save"), self.$process(pat)); + }, 1); + + $def(self, '$on_literal', function $$on_literal(node) { + var self = this; + + return self.$array(self.$s("sym", "lit"), node) + }, 1); + $alias(self, "on_int", "on_literal"); + $alias(self, "on_float", "on_literal"); + $alias(self, "on_complex", "on_literal"); + $alias(self, "on_rational", "on_literal"); + $alias(self, "on_array", "on_literal"); + $alias(self, "on_str", "on_literal"); + $alias(self, "on_dstr", "on_literal"); + $alias(self, "on_xstr", "on_literal"); + $alias(self, "on_sym", "on_literal"); + $alias(self, "on_irange", "on_literal"); + $alias(self, "on_erange", "on_literal"); + $alias(self, "on_const", "on_literal"); + $alias(self, "on_regexp", "on_literal"); + $alias(self, "on_lambda", "on_literal"); + $alias(self, "on_begin", "on_literal"); + + $def(self, '$on_pin', function $$on_pin(node) { + var self = this; + + return self.$on_literal(node.$children().$first()) + }, 1); + + $def(self, '$on_match_rest', function $$on_match_rest(node) { + var self = this; + + if ($truthy(node.$children()['$empty?']())) { + return self.$array(self.$s("sym", "rest")) + } else { + return self.$array(self.$s("sym", "rest"), self.$process(node.$children().$first())) + } + }, 1); + + $def(self, '$on_match_alt', function $$on_match_alt(node) { + var self = this; + + return $send(self, 'array', [self.$s("sym", "any")].concat($to_a($send(node.$children(), 'map', [], self.$method("process").$to_proc())))) + }, 1); + + $def(self, '$on_const_pattern', function $$on_const_pattern(node) { + var self = this; + + return $send(self, 'array', [self.$s("sym", "all")].concat($to_a($send(node.$children(), 'map', [], self.$method("process").$to_proc())))) + }, 1); + + $def(self, '$on_array_pattern', function $$on_array_pattern(node, tail) { + var self = this, children = nil, fixed_size = nil, array_size = nil; + + + + if (tail == null) tail = false;; + children = [].concat($to_a(node)); + if ($truthy(tail)) { + children['$<<'](self.$s("match_rest")) + }; + fixed_size = true; + array_size = 0; + children = $send(children, 'each', [], function $$3(i){var $ret_or_1 = nil; + + + + if (i == null) i = nil;; + if ($eqeqeq("match_rest", ($ret_or_1 = i.$type()))) { + return (fixed_size = false) + } else { + return (array_size = $rb_plus(array_size, 1)) + };}, 1); + return self.$array(self.$s("sym", "array"), self.$to_ast(fixed_size), self.$to_ast(array_size), self.$to_ast($send(children, 'map', [], self.$method("process").$to_proc()))); + }, -2); + + $def(self, '$on_array_pattern_with_tail', function $$on_array_pattern_with_tail(node) { + var self = this; + + return self.$on_array_pattern(node, true) + }, 1); + + $def(self, '$on_hash_pattern', function $$on_hash_pattern(node) { + var self = this, children = nil, any_size = nil; + + + children = [].concat($to_a(node)); + any_size = ($truthy(children['$empty?']()) ? (self.$to_ast(false)) : (self.$to_ast(true))); + children = $send(children, 'map', [], function $$4(i){var self = $$4.$$s == null ? this : $$4.$$s, $ret_or_1 = nil; + + + + if (i == null) i = nil;; + if ($eqeqeq("pair", ($ret_or_1 = i.$type()))) { + return self.$array(i.$children()['$[]'](0), self.$process(i.$children()['$[]'](1))) + } else if ($eqeqeq("match_var", $ret_or_1)) { + return self.$array(self.$s("sym", i.$children()['$[]'](0)), self.$process(i)) + } else if ($eqeqeq("match_nil_pattern", $ret_or_1)) { + + any_size = self.$to_ast(false); + return nil; + } else if ($eqeqeq("match_rest", $ret_or_1)) { + + if ($truthy(i.$children().$first())) { + any_size = self.$process(i.$children().$first()) + } else { + any_size = self.$to_ast(true) + }; + return nil; + } else { + return nil + };}, {$$arity: 1, $$s: self}).$compact(); + return self.$array(self.$s("sym", "hash"), any_size, $send(self, 'array', $to_a(children))); + }, 1); + + $def(self, '$on_find_pattern', function $$on_find_pattern(node) { + var self = this, children = nil; + + + children = [].concat($to_a(node)); + children = $send(children, 'map', [], self.$method("process").$to_proc()); + return self.$array(self.$s("sym", "find"), $send(self, 'array', $to_a(children))); + }, 1); + self.$private(); + + $def(self, '$array', function $$array($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return self.$to_ast(args); + }, -1); + return $def(self, '$to_ast', function $$to_ast(val) { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq($$('Array'), ($ret_or_1 = val))) { + return $send(self, 's', ["array"].concat($to_a(val))) + } else if ($eqeqeq($$('Integer'), $ret_or_1)) { + return self.$s("int", val) + } else if ($eqeqeq(true, $ret_or_1)) { + return self.$s("true") + } else if ($eqeqeq(false, $ret_or_1)) { + return self.$s("false") + } else if ($eqeqeq(nil, $ret_or_1)) { + return self.$s("nil") + } else { + return nil + } + }, 1); + })($nesting[0], $$$($$$($Opal, 'Rewriters'), 'Base'), $nesting); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/logical_operator_assignment"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $class_variable_set = Opal.class_variable_set, $defs = Opal.defs, $truthy = Opal.truthy, $class_variable_get = Opal.class_variable_get, $rb_plus = Opal.rb_plus, $const_set = Opal.const_set, $lambda = Opal.lambda, $eqeq = Opal.eqeq, $to_a = Opal.to_a, $slice = Opal.slice, $hash2 = Opal.hash2, $send = Opal.send, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super; + + Opal.add_stubs('require,+,updated,s,==,include?,[],type,new_temp,freeze,call,fetch,error,process'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'LogicalOperatorAssignment'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs(self, '$reset_tmp_counter!', function $LogicalOperatorAssignment_reset_tmp_counter$excl$1() { + + return $class_variable_set($nesting[0], '@@counter', 0) + }, 0); + $defs(self, '$new_temp', function $$new_temp() { + var $a, $ret_or_1 = nil; + + + $class_variable_set($nesting[0], '@@counter', ($truthy((($a = $nesting[0].$$cvars['@@counter'], $a != null) ? 'class variable' : nil)) ? (($truthy(($ret_or_1 = $class_variable_get($nesting[0], '@@counter', false))) ? ($ret_or_1) : (0))) : (0))); + $class_variable_set($nesting[0], '@@counter', $rb_plus($class_variable_get($nesting[0], '@@counter', false), 1)); + return "$logical_op_recvr_tmp_" + ($class_variable_get($nesting[0], '@@counter', false)); + }, 0); + $const_set($nesting[0], 'GET_SET', $lambda(function $LogicalOperatorAssignment$2(get_type, set_type){var self = $LogicalOperatorAssignment$2.$$s == null ? this : $LogicalOperatorAssignment$2.$$s; + + + + if (get_type == null) get_type = nil;; + + if (set_type == null) set_type = nil;; + return $lambda(function $$3(lhs, rhs, root_type){var self = $$3.$$s == null ? this : $$3.$$s, get_node = nil, condition_node = nil, defined_node = nil; + + + + if (lhs == null) lhs = nil;; + + if (rhs == null) rhs = nil;; + + if (root_type == null) root_type = nil;; + get_node = lhs.$updated(get_type); + condition_node = self.$s(root_type, get_node, rhs); + if (($truthy(["const", "cvar"]['$include?'](get_type)) && ($eqeq(root_type, "or")))) { + + defined_node = self.$s("defined?", get_node); + condition_node = self.$s("if", defined_node, self.$s("begin", condition_node), rhs); + }; + return lhs.$updated(set_type, [].concat($to_a(lhs)).concat([condition_node]));}, {$$arity: 3, $$s: self});}, {$$arity: 2, $$s: self})); + $const_set($nesting[0], 'LocalVariableHandler', $$('GET_SET')['$[]']("lvar", "lvasgn")); + $const_set($nesting[0], 'InstanceVariableHandler', $$('GET_SET')['$[]']("ivar", "ivasgn")); + $const_set($nesting[0], 'ConstantHandler', $$('GET_SET')['$[]']("const", "casgn")); + $const_set($nesting[0], 'GlobalVariableHandler', $$('GET_SET')['$[]']("gvar", "gvasgn")); + $const_set($nesting[0], 'ClassVariableHandler', $$('GET_SET')['$[]']("cvar", "cvasgn")); + (function($base, $super) { + var self = $klass($base, $super, 'SendHandler'); + + + return $defs(self, '$call', function $$call(lhs, rhs, root_type) { + var $a, self = this, recvr = nil, reader_method = nil, args = nil, recvr_tmp = nil, cache_recvr = nil, writer_method = nil, call_reader = nil, call_writer = nil, get_or_set = nil; + + + $a = [].concat($to_a(lhs)), (recvr = ($a[0] == null ? nil : $a[0])), (reader_method = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $a; + if (($truthy(recvr) && ($eqeq(recvr.$type(), "send")))) { + + recvr_tmp = self.$new_temp(); + cache_recvr = self.$s("lvasgn", recvr_tmp, recvr); + recvr = self.$s("js_tmp", recvr_tmp); + }; + writer_method = "" + (reader_method) + "="; + call_reader = lhs.$updated("send", [recvr, reader_method].concat($to_a(args))); + call_writer = lhs.$updated("send", [recvr, writer_method].concat($to_a(args)).concat([rhs])); + get_or_set = self.$s(root_type, call_reader, call_writer); + if ($truthy(cache_recvr)) { + return self.$s("begin", cache_recvr, get_or_set) + } else { + return get_or_set + }; + }, 3) + })($nesting[0], self); + (function($base, $super) { + var self = $klass($base, $super, 'ConditionalSendHandler'); + + + return $defs(self, '$call', function $$call(lhs, rhs, root_type) { + var $a, self = this, recvr = nil, meth = nil, args = nil, recvr_tmp = nil, cache_recvr = nil, recvr_is_nil = nil, plain_send = nil, plain_or_asgn = nil; + + + root_type = "" + (root_type) + "_asgn"; + $a = [].concat($to_a(lhs)), (recvr = ($a[0] == null ? nil : $a[0])), (meth = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $a; + recvr_tmp = self.$new_temp(); + cache_recvr = self.$s("lvasgn", recvr_tmp, recvr); + recvr = self.$s("js_tmp", recvr_tmp); + recvr_is_nil = self.$s("send", recvr, "nil?"); + plain_send = lhs.$updated("send", [recvr, meth].concat($to_a(args))); + plain_or_asgn = self.$s(root_type, plain_send, rhs); + return self.$s("begin", cache_recvr, self.$s("if", recvr_is_nil, self.$s("nil"), plain_or_asgn)); + }, 3) + })($nesting[0], self); + $const_set($nesting[0], 'HANDLERS', $hash2(["lvasgn", "ivasgn", "casgn", "gvasgn", "cvasgn", "send", "csend"], {"lvasgn": $$('LocalVariableHandler'), "ivasgn": $$('InstanceVariableHandler'), "casgn": $$('ConstantHandler'), "gvasgn": $$('GlobalVariableHandler'), "cvasgn": $$('ClassVariableHandler'), "send": $$('SendHandler'), "csend": $$('ConditionalSendHandler')}).$freeze()); + + $def(self, '$on_or_asgn', function $$on_or_asgn(node) { + var $a, self = this, lhs = nil, rhs = nil, result = nil; + + + $a = [].concat($to_a(node)), (lhs = ($a[0] == null ? nil : $a[0])), (rhs = ($a[1] == null ? nil : $a[1])), $a; + result = $send($$('HANDLERS'), 'fetch', [lhs.$type()], function $$4(){var self = $$4.$$s == null ? this : $$4.$$s; + + return self.$error("cannot handle LHS type: " + (lhs.$type()))}, {$$arity: 0, $$s: self}).$call(lhs, rhs, "or"); + return self.$process(result); + }, 1); + + $def(self, '$on_and_asgn', function $$on_and_asgn(node) { + var $a, self = this, lhs = nil, rhs = nil, result = nil; + + + $a = [].concat($to_a(node)), (lhs = ($a[0] == null ? nil : $a[0])), (rhs = ($a[1] == null ? nil : $a[1])), $a; + result = $send($$('HANDLERS'), 'fetch', [lhs.$type()], function $$5(){var self = $$5.$$s == null ? this : $$5.$$s; + + return self.$error("cannot handle LHS type: " + (lhs.$type()))}, {$$arity: 0, $$s: self}).$call(lhs, rhs, "and"); + return self.$process(result); + }, 1); + $const_set($nesting[0], 'ASSIGNMENT_STRING_NODE', self.$s("str", "assignment")); + return $def(self, '$on_defined?', function $LogicalOperatorAssignment_on_defined$ques$6(node) { + var $a, $yield = $LogicalOperatorAssignment_on_defined$ques$6.$$p || nil, self = this, inner = nil, _ = nil; + + delete $LogicalOperatorAssignment_on_defined$ques$6.$$p; + + $a = [].concat($to_a(node)), (inner = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; + if ($truthy(["or_asgn", "and_asgn"]['$include?'](inner.$type()))) { + return $$('ASSIGNMENT_STRING_NODE') + } else { + return $send2(self, $find_super(self, 'on_defined?', $LogicalOperatorAssignment_on_defined$ques$6, false, true), 'on_defined?', [node], null) + }; + }, 1); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/binary_operator_assignment"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $class_variable_set = Opal.class_variable_set, $defs = Opal.defs, $truthy = Opal.truthy, $class_variable_get = Opal.class_variable_get, $rb_plus = Opal.rb_plus, $const_set = Opal.const_set, $lambda = Opal.lambda, $to_a = Opal.to_a, $slice = Opal.slice, $eqeq = Opal.eqeq, $hash2 = Opal.hash2, $send = Opal.send, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super; + + Opal.add_stubs('require,+,updated,[],==,type,new_temp,s,freeze,call,fetch,error,process'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'BinaryOperatorAssignment'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs(self, '$reset_tmp_counter!', function $BinaryOperatorAssignment_reset_tmp_counter$excl$1() { + + return $class_variable_set($nesting[0], '@@counter', 0) + }, 0); + $defs(self, '$new_temp', function $$new_temp() { + var $a, $ret_or_1 = nil; + + + $class_variable_set($nesting[0], '@@counter', ($truthy((($a = $nesting[0].$$cvars['@@counter'], $a != null) ? 'class variable' : nil)) ? (($truthy(($ret_or_1 = $class_variable_get($nesting[0], '@@counter', false))) ? ($ret_or_1) : (0))) : (0))); + $class_variable_set($nesting[0], '@@counter', $rb_plus($class_variable_get($nesting[0], '@@counter', false), 1)); + return "$binary_op_recvr_tmp_" + ($class_variable_get($nesting[0], '@@counter', false)); + }, 0); + $const_set($nesting[0], 'GET_SET', $lambda(function $BinaryOperatorAssignment$2(get_type, set_type){ + + + if (get_type == null) get_type = nil;; + + if (set_type == null) set_type = nil;; + return $lambda(function $$3(node, lhs, operation, rhs){var get_node = nil, set_node = nil; + + + + if (node == null) node = nil;; + + if (lhs == null) lhs = nil;; + + if (operation == null) operation = nil;; + + if (rhs == null) rhs = nil;; + get_node = lhs.$updated(get_type); + set_node = node.$updated("send", [get_node, operation, rhs]); + return lhs.$updated(set_type, [].concat($to_a(lhs)).concat([set_node]));}, 4);}, 2)); + $const_set($nesting[0], 'LocalVariableHandler', $$('GET_SET')['$[]']("lvar", "lvasgn")); + $const_set($nesting[0], 'InstanceVariableHandler', $$('GET_SET')['$[]']("ivar", "ivasgn")); + $const_set($nesting[0], 'ConstantHandler', $$('GET_SET')['$[]']("const", "casgn")); + $const_set($nesting[0], 'GlobalVariableHandler', $$('GET_SET')['$[]']("gvar", "gvasgn")); + $const_set($nesting[0], 'ClassVariableHandler', $$('GET_SET')['$[]']("cvar", "cvasgn")); + (function($base, $super) { + var self = $klass($base, $super, 'SendHandler'); + + + return $defs(self, '$call', function $$call(node, lhs, operation, rhs) { + var $a, self = this, recvr = nil, reader_method = nil, args = nil, recvr_tmp = nil, cache_recvr = nil, writer_method = nil, call_reader = nil, call_op = nil, call_writer = nil; + + + $a = [].concat($to_a(lhs)), (recvr = ($a[0] == null ? nil : $a[0])), (reader_method = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $a; + if (($truthy(recvr) && ($eqeq(recvr.$type(), "send")))) { + + recvr_tmp = self.$new_temp(); + cache_recvr = self.$s("lvasgn", recvr_tmp, recvr); + recvr = self.$s("js_tmp", recvr_tmp); + }; + writer_method = "" + (reader_method) + "="; + call_reader = lhs.$updated("send", [recvr, reader_method].concat($to_a(args))); + call_op = node.$updated("send", [call_reader, operation, rhs]); + call_writer = lhs.$updated("send", [recvr, writer_method].concat($to_a(args)).concat([call_op])); + if ($truthy(cache_recvr)) { + return node.$updated("begin", [cache_recvr, call_writer]) + } else { + return call_writer + }; + }, 4) + })($nesting[0], self); + (function($base, $super) { + var self = $klass($base, $super, 'ConditionalSendHandler'); + + + return $defs(self, '$call', function $$call(node, lhs, operation, rhs) { + var $a, self = this, recvr = nil, meth = nil, args = nil, recvr_tmp = nil, cache_recvr = nil, recvr_is_nil = nil, plain_send = nil, plain_op_asgn = nil; + + + $a = [].concat($to_a(lhs)), (recvr = ($a[0] == null ? nil : $a[0])), (meth = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $a; + recvr_tmp = self.$new_temp(); + cache_recvr = self.$s("lvasgn", recvr_tmp, recvr); + recvr = self.$s("js_tmp", recvr_tmp); + recvr_is_nil = self.$s("send", recvr, "nil?"); + plain_send = lhs.$updated("send", [recvr, meth].concat($to_a(args))); + plain_op_asgn = node.$updated("op_asgn", [plain_send, operation, rhs]); + return self.$s("begin", cache_recvr, self.$s("if", recvr_is_nil, self.$s("nil"), plain_op_asgn)); + }, 4) + })($nesting[0], self); + $const_set($nesting[0], 'HANDLERS', $hash2(["lvasgn", "ivasgn", "casgn", "gvasgn", "cvasgn", "send", "csend"], {"lvasgn": $$('LocalVariableHandler'), "ivasgn": $$('InstanceVariableHandler'), "casgn": $$('ConstantHandler'), "gvasgn": $$('GlobalVariableHandler'), "cvasgn": $$('ClassVariableHandler'), "send": $$('SendHandler'), "csend": $$('ConditionalSendHandler')}).$freeze()); + + $def(self, '$on_op_asgn', function $$on_op_asgn(node) { + var $a, self = this, lhs = nil, op = nil, rhs = nil, result = nil; + + + $a = [].concat($to_a(node)), (lhs = ($a[0] == null ? nil : $a[0])), (op = ($a[1] == null ? nil : $a[1])), (rhs = ($a[2] == null ? nil : $a[2])), $a; + result = $send($$('HANDLERS'), 'fetch', [lhs.$type()], function $$4(){var self = $$4.$$s == null ? this : $$4.$$s; + + return self.$error("cannot handle LHS type: " + (lhs.$type()))}, {$$arity: 0, $$s: self}).$call(node, lhs, op, rhs); + return self.$process(result); + }, 1); + $const_set($nesting[0], 'ASSIGNMENT_STRING_NODE', self.$s("str", "assignment")); + return $def(self, '$on_defined?', function $BinaryOperatorAssignment_on_defined$ques$5(node) { + var $a, $yield = $BinaryOperatorAssignment_on_defined$ques$5.$$p || nil, self = this, inner = nil, _ = nil; + + delete $BinaryOperatorAssignment_on_defined$ques$5.$$p; + + $a = [].concat($to_a(node)), (inner = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; + if ($eqeq(inner.$type(), "op_asgn")) { + return $$('ASSIGNMENT_STRING_NODE') + } else { + return $send2(self, $find_super(self, 'on_defined?', $BinaryOperatorAssignment_on_defined$ques$5, false, true), 'on_defined?', [node], null) + }; + }, 1); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/hashes/key_duplicates_rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $Opal = Opal.Opal; + + Opal.add_stubs('require,new,include?,type,<<,==,process_regular_node,updated,inspect,warn'); + + self.$require("opal/rewriters/base"); + self.$require("set"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Hashes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'KeyDuplicatesRewriter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.keys = nil; + + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return (self.keys = $$('UniqKeysSet').$new()) + }, 0); + + $def(self, '$on_hash', function $$on_hash(node) { + var $a, $yield = $$on_hash.$$p || nil, self = this, previous_keys = nil; + + delete $$on_hash.$$p; + return (function() { try { + + $a = [self.keys, $$('UniqKeysSet').$new()], (previous_keys = $a[0]), (self.keys = $a[1]), $a; + return $send2(self, $find_super(self, 'on_hash', $$on_hash, false, true), 'on_hash', [node], null); + } finally { + (self.keys = previous_keys) + }; })() + }, 1); + + $def(self, '$on_pair', function $$on_pair(node) { + var $a, $yield = $$on_pair.$$p || nil, self = this, key = nil, _value = nil; + + delete $$on_pair.$$p; + + $a = [].concat($to_a(node)), (key = ($a[0] == null ? nil : $a[0])), (_value = ($a[1] == null ? nil : $a[1])), $a; + if ($truthy(["str", "sym"]['$include?'](key.$type()))) { + self.keys['$<<'](key) + }; + return $send2(self, $find_super(self, 'on_pair', $$on_pair, false, true), 'on_pair', [node], null); + }, 1); + + $def(self, '$on_kwsplat', function $$on_kwsplat(node) { + var $a, self = this, hash = nil, _ = nil; + + + $a = [].concat($to_a(node)), (hash = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; + if ($eqeq(hash.$type(), "hash")) { + hash = self.$process_regular_node(hash) + }; + return node.$updated(nil, [hash]); + }, 1); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'UniqKeysSet'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.set = nil; + + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return (self.set = $$('Set').$new()) + }, 0); + return $def(self, '$<<', function $UniqKeysSet_$lt$lt$1(element) { + var $a, self = this, key = nil, _ = nil; + + if ($truthy(self.set['$include?'](element))) { + + $a = [].concat($to_a(element)), (key = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; + key = ($eqeq(element.$type(), "str") ? (key.$inspect()) : (":" + (key))); + return $$('Kernel').$warn("warning: key " + (key) + " is duplicated and overwritten"); + } else { + return self.set['$<<'](element) + } + }, 1); + })($nesting[0], null, $nesting); + })($nesting[0], $$$($$$($Opal, 'Rewriters'), 'Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/dump_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $hash2 = Opal.hash2, $def = Opal.def; + + Opal.add_stubs('require,updated'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'DumpArgs'); + + + + + $def(self, '$on_def', function $$on_def(node) { + var $a, $yield = $$on_def.$$p || nil, self = this, _mid = nil, args = nil, _body = nil; + + delete $$on_def.$$p; + + node = $send2(self, $find_super(self, 'on_def', $$on_def, false, true), 'on_def', [node], null); + $a = [].concat($to_a(node)), (_mid = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (_body = ($a[2] == null ? nil : $a[2])), $a; + return node.$updated(nil, nil, $hash2(["meta"], {"meta": $hash2(["original_args"], {"original_args": args})})); + }, 1); + + $def(self, '$on_defs', function $$on_defs(node) { + var $a, $yield = $$on_defs.$$p || nil, self = this, _recv = nil, _mid = nil, args = nil, _body = nil; + + delete $$on_defs.$$p; + + node = $send2(self, $find_super(self, 'on_defs', $$on_defs, false, true), 'on_defs', [node], null); + $a = [].concat($to_a(node)), (_recv = ($a[0] == null ? nil : $a[0])), (_mid = ($a[1] == null ? nil : $a[1])), (args = ($a[2] == null ? nil : $a[2])), (_body = ($a[3] == null ? nil : $a[3])), $a; + return node.$updated(nil, nil, $hash2(["meta"], {"meta": $hash2(["original_args"], {"original_args": args})})); + }, 1); + return $def(self, '$on_iter', function $$on_iter(node) { + var $a, $yield = $$on_iter.$$p || nil, self = this, args = nil, _body = nil; + + delete $$on_iter.$$p; + + node = $send2(self, $find_super(self, 'on_iter', $$on_iter, false, true), 'on_iter', [node], null); + $a = [].concat($to_a(node)), (args = ($a[0] == null ? nil : $a[0])), (_body = ($a[1] == null ? nil : $a[1])), $a; + return node.$updated(nil, nil, $hash2(["meta"], {"meta": $hash2(["original_args"], {"original_args": args})})); + }, 1); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/mlhs_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $truthy = Opal.truthy, $def = Opal.def, $rb_plus = Opal.rb_plus, $send = Opal.send, $eqeq = Opal.eqeq, $hash2 = Opal.hash2; + + Opal.add_stubs('require,new,updated,rewritten,initialization,s,prepend_to_body,attr_reader,split!,+,each,children,==,type,new_mlhs_tmp,process,<<,length,[],empty?'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'MlhsArgs'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$on_def', function $$on_def(node) { + var $a, $yield = $$on_def.$$p || nil, self = this, mid = nil, args = nil, body = nil, arguments$ = nil, $ret_or_1 = nil; + + delete $$on_def.$$p; + + node = $send2(self, $find_super(self, 'on_def', $$on_def, false, true), 'on_def', [node], null); + $a = [].concat($to_a(node)), (mid = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), $a; + arguments$ = $$('Arguments').$new(args); + args = args.$updated(nil, arguments$.$rewritten()); + if ($truthy(arguments$.$initialization())) { + + body = ($truthy(($ret_or_1 = body)) ? ($ret_or_1) : (self.$s("nil"))); + body = self.$prepend_to_body(body, arguments$.$initialization()); + }; + return node.$updated(nil, [mid, args, body]); + }, 1); + + $def(self, '$on_defs', function $$on_defs(node) { + var $a, $yield = $$on_defs.$$p || nil, self = this, recv = nil, mid = nil, args = nil, body = nil, arguments$ = nil, $ret_or_1 = nil; + + delete $$on_defs.$$p; + + node = $send2(self, $find_super(self, 'on_defs', $$on_defs, false, true), 'on_defs', [node], null); + $a = [].concat($to_a(node)), (recv = ($a[0] == null ? nil : $a[0])), (mid = ($a[1] == null ? nil : $a[1])), (args = ($a[2] == null ? nil : $a[2])), (body = ($a[3] == null ? nil : $a[3])), $a; + arguments$ = $$('Arguments').$new(args); + args = args.$updated(nil, arguments$.$rewritten()); + if ($truthy(arguments$.$initialization())) { + + body = ($truthy(($ret_or_1 = body)) ? ($ret_or_1) : (self.$s("nil"))); + body = self.$prepend_to_body(body, arguments$.$initialization()); + }; + return node.$updated(nil, [recv, mid, args, body]); + }, 1); + + $def(self, '$on_iter', function $$on_iter(node) { + var $a, $yield = $$on_iter.$$p || nil, self = this, args = nil, body = nil, arguments$ = nil, $ret_or_1 = nil; + + delete $$on_iter.$$p; + + node = $send2(self, $find_super(self, 'on_iter', $$on_iter, false, true), 'on_iter', [node], null); + $a = [].concat($to_a(node)), (args = ($a[0] == null ? nil : $a[0])), (body = ($a[1] == null ? nil : $a[1])), $a; + arguments$ = $$('Arguments').$new(args); + args = args.$updated(nil, arguments$.$rewritten()); + if ($truthy(arguments$.$initialization())) { + + body = ($truthy(($ret_or_1 = body)) ? ($ret_or_1) : (self.$s("nil"))); + body = self.$prepend_to_body(body, arguments$.$initialization()); + }; + return node.$updated(nil, [args, body]); + }, 1); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Arguments'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.counter = $proto.args = $proto.initialization = nil; + + self.$attr_reader("rewritten", "initialization"); + + $def(self, '$initialize', function $$initialize(args) { + var self = this; + + + self.args = args; + self.rewritten = []; + self.initialization = []; + self.rewriter = $$('MlhsRewriter').$new(); + return self['$split!'](); + }, 1); + + $def(self, '$reset_tmp_counter!', function $Arguments_reset_tmp_counter$excl$1() { + var self = this; + + return (self.counter = 0) + }, 0); + + $def(self, '$new_mlhs_tmp', function $$new_mlhs_tmp() { + var self = this, $ret_or_1 = nil; + + + self.counter = ($truthy(($ret_or_1 = self.counter)) ? ($ret_or_1) : (0)); + self.counter = $rb_plus(self.counter, 1); + return "$mlhs_tmp" + (self.counter); + }, 0); + return $def(self, '$split!', function $Arguments_split$excl$2() { + var self = this; + + + $send(self.args.$children(), 'each', [], function $$3(arg){var self = $$3.$$s == null ? this : $$3.$$s, var_name = nil, rhs = nil, mlhs = nil; + if (self.rewriter == null) self.rewriter = nil; + if (self.initialization == null) self.initialization = nil; + if (self.rewritten == null) self.rewritten = nil; + + + + if (arg == null) arg = nil;; + if ($eqeq(arg.$type(), "mlhs")) { + + var_name = self.$new_mlhs_tmp(); + rhs = self.$s("lvar", var_name); + mlhs = self.rewriter.$process(arg); + self.initialization['$<<'](self.$s("masgn", mlhs, rhs)); + return self.rewritten['$<<'](self.$s("arg", var_name).$updated(nil, nil, $hash2(["meta"], {"meta": $hash2(["arg_name"], {"arg_name": var_name})}))); + } else { + return self.rewritten['$<<'](arg) + };}, {$$arity: 1, $$s: self}); + if ($eqeq(self.initialization.$length(), 1)) { + return (self.initialization = self.initialization['$[]'](0)) + } else if ($truthy(self.initialization['$empty?']())) { + return (self.initialization = nil) + } else { + return (self.initialization = $send(self, 's', ["begin"].concat($to_a(self.initialization)))) + }; + }, 0); + })($nesting[0], $$('Base'), $nesting); + return (function($base, $super) { + var self = $klass($base, $super, 'MlhsRewriter'); + + + + + $def(self, '$on_arg', function $$on_arg(node) { + + return node.$updated("lvasgn") + }, 1); + return $def(self, '$on_restarg', function $$on_restarg(node) { + var self = this, name = nil; + + + name = node.$children()['$[]'](0); + if ($truthy(name)) { + return self.$s("splat", node.$updated("lvasgn")) + } else { + return self.$s("splat") + }; + }, 1); + })($nesting[0], $$('Base')); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/arguments"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $def = Opal.def; + + Opal.add_stubs('attr_reader,each,===,type,<<,any?,raise,!,nil?,has_any_kwargs?,can_inline_kwargs?,empty?'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Arguments'); + + var $proto = self.$$prototype; + + $proto.restarg = $proto.postargs = $proto.kwargs = $proto.kwoptargs = $proto.kwrestarg = $proto.optargs = nil; + + self.$attr_reader("args", "optargs", "restarg", "postargs", "kwargs", "kwoptargs", "kwrestarg", "kwnilarg", "shadowargs", "blockarg"); + + $def(self, '$initialize', function $$initialize(args) { + var self = this; + + + self.args = []; + self.optargs = []; + self.restarg = nil; + self.postargs = []; + self.kwargs = []; + self.kwoptargs = []; + self.kwrestarg = nil; + self.kwnilarg = false; + self.shadowargs = []; + self.blockarg = nil; + return $send(args, 'each', [], function $$1(arg){var self = $$1.$$s == null ? this : $$1.$$s, $ret_or_1 = nil; + if (self.optargs == null) self.optargs = nil; + if (self.restarg == null) self.restarg = nil; + if (self.postargs == null) self.postargs = nil; + if (self.args == null) self.args = nil; + if (self.kwargs == null) self.kwargs = nil; + if (self.kwoptargs == null) self.kwoptargs = nil; + if (self.shadowargs == null) self.shadowargs = nil; + + + + if (arg == null) arg = nil;; + if (($eqeqeq("arg", ($ret_or_1 = arg.$type())) || ($eqeqeq("mlhs", $ret_or_1)))) { + return (($truthy(self.restarg) || ($truthy(self.optargs['$any?']()))) ? (self.postargs) : (self.args))['$<<'](arg) + } else if ($eqeqeq("optarg", $ret_or_1)) { + return self.optargs['$<<'](arg) + } else if ($eqeqeq("restarg", $ret_or_1)) { + return (self.restarg = arg) + } else if ($eqeqeq("kwarg", $ret_or_1)) { + return self.kwargs['$<<'](arg) + } else if ($eqeqeq("kwoptarg", $ret_or_1)) { + return self.kwoptargs['$<<'](arg) + } else if ($eqeqeq("kwnilarg", $ret_or_1)) { + return (self.kwnilarg = true) + } else if ($eqeqeq("kwrestarg", $ret_or_1)) { + return (self.kwrestarg = arg) + } else if ($eqeqeq("shadowarg", $ret_or_1)) { + return self.shadowargs['$<<'](arg) + } else if ($eqeqeq("blockarg", $ret_or_1)) { + return (self.blockarg = arg) + } else { + return self.$raise("Unsupported arg type " + (arg.$type())) + };}, {$$arity: 1, $$s: self}); + }, 1); + + $def(self, '$has_post_args?', function $Arguments_has_post_args$ques$2() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.restarg['$nil?']()['$!']())) ? ($ret_or_2) : (self.postargs['$any?']()))))) { + return $ret_or_1 + } else { + + if ($truthy(($ret_or_2 = self['$has_any_kwargs?']()))) { + return self['$can_inline_kwargs?']()['$!']() + } else { + return $ret_or_2 + }; + } + }, 0); + + $def(self, '$has_any_kwargs?', function $Arguments_has_any_kwargs$ques$3() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.kwargs['$any?']())) ? ($ret_or_2) : (self.kwoptargs['$any?']()))))) { + return $ret_or_1 + } else { + return self.kwrestarg['$nil?']()['$!']() + } + }, 0); + return $def(self, '$can_inline_kwargs?', function $Arguments_can_inline_kwargs$ques$4() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.optargs['$empty?']())) ? (self.restarg['$nil?']()) : ($ret_or_2))))) { + return self.postargs['$empty?']() + } else { + return $ret_or_1 + } + }, 0); + })($nesting[0], null) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["opal/rewriters/inline_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $truthy = Opal.truthy, $hash2 = Opal.hash2, $def = Opal.def, $const_set = Opal.const_set, $send = Opal.send, $eqeq = Opal.eqeq, $Opal = Opal.Opal; + + Opal.add_stubs('require,s,new,updated,inline,prepend_to_body,initialization,attr_reader,freeze,children,each,send,any?,blockarg,<<,shadowargs,args,==,[],has_post_args?,length,has_any_kwargs?,can_inline_kwargs?,kwargs,kwoptargs,kwrestarg,postargs,optargs,args_to_keep,restarg'); + + self.$require("opal/rewriters/base"); + self.$require("opal/rewriters/arguments"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'InlineArgs'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$on_def', function $$on_def(node) { + var $a, $yield = $$on_def.$$p || nil, self = this, mid = nil, args = nil, body = nil, $ret_or_1 = nil, initializer = nil, inline_args = nil; + + delete $$on_def.$$p; + + node = $send2(self, $find_super(self, 'on_def', $$on_def, false, true), 'on_def', [node], null); + $a = [].concat($to_a(node)), (mid = ($a[0] == null ? nil : $a[0])), (args = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), $a; + body = ($truthy(($ret_or_1 = body)) ? ($ret_or_1) : (self.$s("nil"))); + initializer = $$('Initializer').$new(args, $hash2(["type"], {"type": "def"})); + inline_args = args.$updated(nil, initializer.$inline()); + body = self.$prepend_to_body(body, initializer.$initialization()); + return node.$updated(nil, [mid, inline_args, body]); + }, 1); + + $def(self, '$on_defs', function $$on_defs(node) { + var $a, $yield = $$on_defs.$$p || nil, self = this, recv = nil, mid = nil, args = nil, body = nil, $ret_or_1 = nil, initializer = nil, inline_args = nil; + + delete $$on_defs.$$p; + + node = $send2(self, $find_super(self, 'on_defs', $$on_defs, false, true), 'on_defs', [node], null); + $a = [].concat($to_a(node)), (recv = ($a[0] == null ? nil : $a[0])), (mid = ($a[1] == null ? nil : $a[1])), (args = ($a[2] == null ? nil : $a[2])), (body = ($a[3] == null ? nil : $a[3])), $a; + body = ($truthy(($ret_or_1 = body)) ? ($ret_or_1) : (self.$s("nil"))); + initializer = $$('Initializer').$new(args, $hash2(["type"], {"type": "defs"})); + inline_args = args.$updated(nil, initializer.$inline()); + body = self.$prepend_to_body(body, initializer.$initialization()); + return node.$updated(nil, [recv, mid, inline_args, body]); + }, 1); + + $def(self, '$on_iter', function $$on_iter(node) { + var $a, $yield = $$on_iter.$$p || nil, self = this, args = nil, body = nil, $ret_or_1 = nil, initializer = nil, inline_args = nil; + + delete $$on_iter.$$p; + + node = $send2(self, $find_super(self, 'on_iter', $$on_iter, false, true), 'on_iter', [node], null); + $a = [].concat($to_a(node)), (args = ($a[0] == null ? nil : $a[0])), (body = ($a[1] == null ? nil : $a[1])), $a; + body = ($truthy(($ret_or_1 = body)) ? ($ret_or_1) : (self.$s("nil"))); + initializer = $$('Initializer').$new(args, $hash2(["type"], {"type": "iter"})); + inline_args = args.$updated(nil, initializer.$inline()); + body = self.$prepend_to_body(body, initializer.$initialization()); + return node.$updated(nil, [inline_args, body]); + }, 1); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Initializer'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.initialization = $proto.args = $proto.inline = nil; + + self.$attr_reader("inline", "initialization"); + $const_set($nesting[0], 'STEPS', ["extract_blockarg", "initialize_shadowargs", "extract_args", "prepare_post_args", "prepare_kwargs", "extract_optargs", "extract_restarg", "extract_post_args", "extract_kwargs", "extract_kwoptargs", "extract_kwrestarg"].$freeze()); + + $def(self, '$initialize', function $$initialize(args, $kwargs) { + var type, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if (!Opal.hasOwnProperty.call($kwargs.$$smap, 'type')) { + throw Opal.ArgumentError.$new('missing keyword: type'); + } + type = $kwargs.$$smap["type"];; + self.args = $$('Arguments').$new(args.$children()); + self.inline = []; + self.initialization = []; + self.type = type; + self.underscore_found = false; + $send($$('STEPS'), 'each', [], function $$1(step){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (step == null) step = nil;; + return self.$send(step);}, {$$arity: 1, $$s: self}); + if ($truthy(self.initialization['$any?']())) { + return (self.initialization = $send(self, 's', ["begin"].concat($to_a(self.initialization)))) + } else { + return (self.initialization = nil) + }; + }, 2); + + $def(self, '$extract_blockarg', function $$extract_blockarg() { + var self = this, arg = nil; + + if ($truthy((arg = self.args.$blockarg()))) { + return self.initialization['$<<'](arg.$updated("extract_blockarg")) + } else { + return nil + } + }, 0); + + $def(self, '$initialize_shadowargs', function $$initialize_shadowargs() { + var self = this; + + return $send(self.args.$shadowargs(), 'each', [], function $$2(arg){var self = $$2.$$s == null ? this : $$2.$$s; + if (self.initialization == null) self.initialization = nil; + + + + if (arg == null) arg = nil;; + return self.initialization['$<<'](arg.$updated("initialize_shadowarg"));}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$extract_args', function $$extract_args() { + var self = this; + + return $send(self.args.$args(), 'each', [], function $$3(arg){var self = $$3.$$s == null ? this : $$3.$$s; + if (self.type == null) self.type = nil; + if (self.initialization == null) self.initialization = nil; + if (self.underscore_found == null) self.underscore_found = nil; + if (self.inline == null) self.inline = nil; + + + + if (arg == null) arg = nil;; + if ($eqeq(self.type, "iter")) { + + self.initialization['$<<'](arg.$updated("initialize_iter_arg")); + if ($eqeq(arg.$children()['$[]'](0), "_")) { + + if ($truthy(self.underscore_found)) { + arg = self.$s("fake_arg") + }; + self.underscore_found = true; + }; + }; + return self.inline['$<<'](arg);}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$prepare_post_args', function $$prepare_post_args() { + var self = this; + + if ($truthy(self.args['$has_post_args?']())) { + return self.initialization['$<<'](self.$s("prepare_post_args", self.args.$args().$length())) + } else { + return nil + } + }, 0); + + $def(self, '$prepare_kwargs', function $$prepare_kwargs() { + var self = this; + + + if (!$truthy(self.args['$has_any_kwargs?']())) { + return nil + }; + if ($truthy(self.args['$can_inline_kwargs?']())) { + self.inline['$<<'](self.$s("arg", "$kwargs")) + } else { + + self.initialization['$<<'](self.$s("extract_kwargs")); + self.inline['$<<'](self.$s("fake_arg")); + }; + return self.initialization['$<<'](self.$s("ensure_kwargs_are_kwargs")); + }, 0); + + $def(self, '$extract_kwargs', function $$extract_kwargs() { + var self = this; + + return $send(self.args.$kwargs(), 'each', [], function $$4(arg){var self = $$4.$$s == null ? this : $$4.$$s; + if (self.initialization == null) self.initialization = nil; + + + + if (arg == null) arg = nil;; + return self.initialization['$<<'](arg.$updated("extract_kwarg"));}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$extract_kwoptargs', function $$extract_kwoptargs() { + var self = this; + + return $send(self.args.$kwoptargs(), 'each', [], function $$5(arg){var self = $$5.$$s == null ? this : $$5.$$s; + if (self.initialization == null) self.initialization = nil; + + + + if (arg == null) arg = nil;; + return self.initialization['$<<'](arg.$updated("extract_kwoptarg"));}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$extract_kwrestarg', function $$extract_kwrestarg() { + var self = this, arg = nil; + + if ($truthy((arg = self.args.$kwrestarg()))) { + return self.initialization['$<<'](arg.$updated("extract_kwrestarg")) + } else { + return nil + } + }, 0); + + $def(self, '$extract_post_args', function $$extract_post_args() { + var self = this; + + return $send(self.args.$postargs(), 'each', [], function $$6(arg){var self = $$6.$$s == null ? this : $$6.$$s; + if (self.initialization == null) self.initialization = nil; + if (self.inline == null) self.inline = nil; + + + + if (arg == null) arg = nil;; + self.initialization['$<<'](arg.$updated("extract_post_arg")); + return self.inline['$<<'](self.$s("fake_arg"));}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$extract_optargs', function $$extract_optargs() { + var self = this, has_post_args = nil; + + + has_post_args = self.args['$has_post_args?'](); + return $send(self.args.$optargs(), 'each', [], function $$7(arg){var $a, self = $$7.$$s == null ? this : $$7.$$s, arg_name = nil, default_value = nil; + if (self.initialization == null) self.initialization = nil; + if (self.inline == null) self.inline = nil; + + + + if (arg == null) arg = nil;; + if ($truthy(has_post_args)) { + + $a = [].concat($to_a(arg)), (arg_name = ($a[0] == null ? nil : $a[0])), (default_value = ($a[1] == null ? nil : $a[1])), $a; + self.initialization['$<<'](arg.$updated("extract_post_optarg", [arg_name, default_value, self.$args_to_keep()])); + return self.inline['$<<'](self.$s("fake_arg")); + } else { + + self.inline['$<<'](arg.$updated("arg")); + return self.initialization['$<<'](arg.$updated("extract_optarg")); + };}, {$$arity: 1, $$s: self}); + }, 0); + + $def(self, '$extract_restarg', function $$extract_restarg() { + var self = this, arg = nil, arg_name = nil; + + if ($truthy((arg = self.args.$restarg()))) { + + arg_name = arg.$children()['$[]'](0); + self.initialization['$<<'](arg.$updated("extract_restarg", [arg_name, self.$args_to_keep()])); + return self.inline['$<<'](self.$s("fake_arg")); + } else { + return nil + } + }, 0); + return $def(self, '$args_to_keep', function $$args_to_keep() { + var self = this; + + return self.args.$postargs().$length() + }, 0); + })($nesting[0], $$$($$$($Opal, 'Rewriters'), 'Base'), $nesting); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/numblocks"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_ary = Opal.to_ary, $send = Opal.send, $to_a = Opal.to_a, $def = Opal.def; + + Opal.add_stubs('require,children,s,gen_args,map'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Numblocks'); + + + + + $def(self, '$on_numblock', function $$on_numblock(node) { + var $a, $b, self = this, left = nil, arg_count = nil, right = nil; + + + $b = node.$children(), $a = $to_ary($b), (left = ($a[0] == null ? nil : $a[0])), (arg_count = ($a[1] == null ? nil : $a[1])), (right = ($a[2] == null ? nil : $a[2])), $b; + return self.$s("block", left, $send(self, 's', ["args"].concat($to_a(self.$gen_args(arg_count)))), right); + }, 1); + return $def(self, '$gen_args', function $$gen_args(arg_count) { + var self = this; + + return $send(Opal.Range.$new(1, arg_count, false), 'map', [], function $$1(i){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (i == null) i = nil;; + return self.$s("arg", "_" + (i));}, {$$arity: 1, $$s: self}) + }, 1); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/returnable_logic"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $def = Opal.def, $rb_minus = Opal.rb_minus, $to_a = Opal.to_a, $send = Opal.send, $send2 = Opal.send2, $find_super = Opal.find_super, $slice = Opal.slice, $eqeq = Opal.eqeq; + + Opal.add_stubs('require,+,-,children,[]=,meta,s,next_tmp,build_if_from_when,free_tmp,[],process,updated,==,count,first,delete,private,build_rule_from_parts,empty?,type'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ReturnableLogic'); + + var $proto = self.$$prototype; + + $proto.counter = nil; + + + $def(self, '$next_tmp', function $$next_tmp() { + var self = this, $ret_or_1 = nil; + + + self.counter = ($truthy(($ret_or_1 = self.counter)) ? ($ret_or_1) : (0)); + self.counter = $rb_plus(self.counter, 1); + return "$ret_or_" + (self.counter); + }, 0); + + $def(self, '$free_tmp', function $$free_tmp() { + var self = this; + + return (self.counter = $rb_minus(self.counter, 1)) + }, 0); + + $def(self, '$reset_tmp_counter!', function $ReturnableLogic_reset_tmp_counter$excl$1() { + var self = this; + + return (self.counter = nil) + }, 0); + + $def(self, '$on_if', function $$on_if(node) { + var $a, $yield = $$on_if.$$p || nil, self = this, test = nil, $writer = nil; + + delete $$on_if.$$p; + + $a = [].concat($to_a(node.$children())), (test = ($a[0] == null ? nil : $a[0])), $a; + if ($truthy(test)) { + + $writer = ["if_test", true]; + $send(test.$meta(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return $send2(self, $find_super(self, 'on_if', $$on_if, false, true), 'on_if', [node], $yield); + }, 1); + + $def(self, '$on_case', function $$on_case(node) { + var $a, $b, self = this, lhs = nil, whens = nil, els = nil, $ret_or_1 = nil, lhs_tmp = nil, out = nil; + + + $a = [].concat($to_a(node.$children())), (lhs = ($a[0] == null ? nil : $a[0])), $b = $a.length - 1, $b = ($b < 1) ? 1 : $b, (whens = $slice.call($a, 1, $b)), (els = ($a[$b] == null ? nil : $a[$b])), $a; + els = ($truthy(($ret_or_1 = els)) ? ($ret_or_1) : (self.$s("nil"))); + if ($truthy(lhs)) { + lhs_tmp = self.$next_tmp() + }; + out = self.$build_if_from_when(node, lhs, lhs_tmp, whens, els); + if ($truthy(lhs)) { + self.$free_tmp() + }; + return out; + }, 1); + + $def(self, '$on_or', function $$on_or(node) { + var $a, self = this, lhs = nil, rhs = nil, $writer = nil, out = nil, lhs_tmp = nil; + + + $a = [].concat($to_a(node.$children())), (lhs = ($a[0] == null ? nil : $a[0])), (rhs = ($a[1] == null ? nil : $a[1])), $a; + if ($truthy(node.$meta()['$[]']("if_test"))) { + + + $writer = ["if_test", (($writer = ["if_test", true]), $send(rhs.$meta(), '[]=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)])]; + $send(lhs.$meta(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + out = self.$process(node.$updated("if", [lhs, self.$s("true"), rhs])); + } else { + + lhs_tmp = self.$next_tmp(); + out = self.$process(node.$updated("if", [self.$s("lvasgn", lhs_tmp, lhs), self.$s("js_tmp", lhs_tmp), rhs])); + self.$free_tmp(); + }; + return out; + }, 1); + + $def(self, '$on_and', function $$on_and(node) { + var $a, self = this, lhs = nil, rhs = nil, $writer = nil, out = nil, lhs_tmp = nil; + + + $a = [].concat($to_a(node.$children())), (lhs = ($a[0] == null ? nil : $a[0])), (rhs = ($a[1] == null ? nil : $a[1])), $a; + if ($truthy(node.$meta()['$[]']("if_test"))) { + + + $writer = ["if_test", (($writer = ["if_test", true]), $send(rhs.$meta(), '[]=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)])]; + $send(lhs.$meta(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + out = self.$process(node.$updated("if", [lhs, rhs, self.$s("false")])); + } else { + + lhs_tmp = self.$next_tmp(); + out = self.$process(node.$updated("if", [self.$s("lvasgn", lhs_tmp, lhs), rhs, self.$s("js_tmp", lhs_tmp)])); + self.$free_tmp(); + }; + return out; + }, 1); + + $def(self, '$on_begin', function $$on_begin(node) { + var $yield = $$on_begin.$$p || nil, self = this, $writer = nil; + + delete $$on_begin.$$p; + + if (($truthy(node.$meta()['$[]']("if_test")) && ($eqeq(node.$children().$count(), 1)))) { + + $writer = ["if_test", true]; + $send(node.$children().$first().$meta(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + node.$meta().$delete("if_test"); + return $send2(self, $find_super(self, 'on_begin', $$on_begin, false, true), 'on_begin', [node], $yield); + }, 1); + self.$private(); + + $def(self, '$build_if_from_when', function $$build_if_from_when(node, lhs, lhs_tmp, whens, els) { + var $a, $b, self = this, first_when = nil, next_whens = nil, parts = nil, expr = nil, rule = nil; + + + $a = [].concat($to_a(whens)), (first_when = ($a[0] == null ? nil : $a[0])), (next_whens = $slice.call($a, 1)), $a; + $a = [].concat($to_a(first_when.$children())), $b = $a.length - 1, $b = ($b < 0) ? 0 : $b, (parts = $slice.call($a, 0, $b)), (expr = ($a[$b] == null ? nil : $a[$b])), $a; + rule = self.$build_rule_from_parts(node, lhs, lhs_tmp, parts); + return first_when.$updated("if", [rule, self.$process(expr), ($truthy(next_whens['$empty?']()) ? (self.$process(els)) : (self.$build_if_from_when(nil, nil, lhs_tmp, next_whens, els)))]); + }, 5); + return $def(self, '$build_rule_from_parts', function $$build_rule_from_parts(node, lhs, lhs_tmp, parts) { + var $a, self = this, first_part = nil, next_parts = nil, subrule = nil, splat_on = nil, iter_val = nil, block = nil; + + + lhs = (($truthy(node) && ($truthy(lhs_tmp))) ? (node.$updated("lvasgn", [lhs_tmp, self.$process(lhs)])) : (self.$s("js_tmp", lhs_tmp))); + $a = [].concat($to_a(parts)), (first_part = ($a[0] == null ? nil : $a[0])), (next_parts = $slice.call($a, 1)), $a; + subrule = ($eqeq(first_part.$type(), "splat") ? (((splat_on = first_part.$children().$first()), (iter_val = self.$next_tmp()), (block = self.$s("send", self.$process(splat_on), "any?", self.$s("iter", self.$s("args", self.$s("arg", iter_val)), self.$build_rule_from_parts(nil, nil, lhs_tmp, [self.$s("lvar", iter_val)])))), (($truthy(node) && ($truthy(lhs_tmp))) ? (self.$s("begin", lhs, block)) : (block)))) : ($truthy(lhs_tmp) ? (self.$s("send", self.$process(first_part), "===", lhs)) : (self.$process(first_part)))); + if ($truthy(next_parts['$empty?']())) { + return subrule + } else { + return self.$s("if", subrule, self.$s("true"), self.$build_rule_from_parts(nil, nil, lhs_tmp, next_parts)) + }; + }, 4); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/forward_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $range = Opal.range, $to_a = Opal.to_a, $send2 = Opal.send2, $find_super = Opal.find_super, $neqeq = Opal.neqeq; + + Opal.add_stubs('require,process,s,==,type,last,children,[],updated,!=,class'); + + self.$require("opal/rewriters/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ForwardArgs'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$on_forward_args', function $$on_forward_args(_node) { + var self = this; + + return self.$process(self.$s("args", self.$s("forward_arg", "$"))) + }, 1); + + $def(self, '$on_args', function $$on_args(node) { + var $yield = $$on_args.$$p || nil, self = this, prev_children = nil; + + delete $$on_args.$$p; + if (($truthy(node.$children().$last()) && ($eqeq(node.$children().$last().$type(), "forward_arg")))) { + + prev_children = node.$children()['$[]']($range(0, -2, false)); + return node.$updated(nil, [].concat($to_a(prev_children)).concat([self.$s("restarg", "$fwd_rest"), self.$s("blockarg", "$fwd_block")])); + } else { + return $send2(self, $find_super(self, 'on_args', $$on_args, false, true), 'on_args', [node], $yield) + } + }, 1); + return $def(self, '$on_send', function $$on_send(node) { + var $yield = $$on_send.$$p || nil, self = this, prev_children = nil; + + delete $$on_send.$$p; + if ((($truthy(node.$children().$last()) && ($neqeq(node.$children().$last().$class(), $$('Symbol')))) && ($eqeq(node.$children().$last().$type(), "forwarded_args")))) { + + prev_children = node.$children()['$[]']($range(0, -2, false)); + return node.$updated(nil, [].concat($to_a(prev_children)).concat([self.$s("splat", self.$s("lvar", "$fwd_rest")), self.$s("block_pass", self.$s("lvar", "$fwd_block"))])); + } else { + return $send2(self, $find_super(self, 'on_send', $$on_send, false, true), 'on_send', [node], $yield) + } + }, 1); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $send = Opal.send; + + Opal.add_stubs('require,<<,list,delete,use,disabled?,class,each,new,process'); + + self.$require("opal/rewriters/opal_engine_check"); + self.$require("opal/rewriters/for_rewriter"); + self.$require("opal/rewriters/explicit_writer_return"); + self.$require("opal/rewriters/js_reserved_words"); + self.$require("opal/rewriters/block_to_iter"); + self.$require("opal/rewriters/dot_js_syntax"); + self.$require("opal/rewriters/pattern_matching"); + self.$require("opal/rewriters/logical_operator_assignment"); + self.$require("opal/rewriters/binary_operator_assignment"); + self.$require("opal/rewriters/hashes/key_duplicates_rewriter"); + self.$require("opal/rewriters/dump_args"); + self.$require("opal/rewriters/mlhs_args"); + self.$require("opal/rewriters/inline_args"); + self.$require("opal/rewriters/numblocks"); + self.$require("opal/rewriters/returnable_logic"); + self.$require("opal/rewriters/forward_args"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Rewriter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.sexp = nil; + + (function(self, $parent_nesting) { + + + + $def(self, '$list', function $$list() { + var self = this, $ret_or_1 = nil; + if (self.list == null) self.list = nil; + + return (self.list = ($truthy(($ret_or_1 = self.list)) ? ($ret_or_1) : ([]))) + }, 0); + + $def(self, '$use', function $$use(rewriter) { + var self = this; + + return self.$list()['$<<'](rewriter) + }, 1); + + $def(self, '$delete', function $delete$1(rewriter) { + var self = this; + + return self.$list().$delete(rewriter) + }, 1); + + $def(self, '$disable', function $$disable() { + var $yield = $$disable.$$p || nil, self = this; + + delete $$disable.$$p; + return (function() { try { + + self.disabled = true; + return Opal.yieldX($yield, []);; + } finally { + (self.disabled = false) + }; })() + }, 0); + return $def(self, '$disabled?', function $disabled$ques$2() { + var $a, self = this; + if (self.disabled == null) self.disabled = nil; + + if ($truthy((($a = self['disabled'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { + return self.disabled + } else { + return nil + } + }, 0); + })(Opal.get_singleton_class(self), $nesting); + self.$use($$$($$('Rewriters'), 'OpalEngineCheck')); + self.$use($$$($$('Rewriters'), 'ForRewriter')); + self.$use($$$($$('Rewriters'), 'Numblocks')); + self.$use($$$($$('Rewriters'), 'ForwardArgs')); + self.$use($$$($$('Rewriters'), 'BlockToIter')); + self.$use($$$($$('Rewriters'), 'DotJsSyntax')); + self.$use($$$($$('Rewriters'), 'PatternMatching')); + self.$use($$$($$('Rewriters'), 'JsReservedWords')); + self.$use($$$($$('Rewriters'), 'LogicalOperatorAssignment')); + self.$use($$$($$('Rewriters'), 'BinaryOperatorAssignment')); + self.$use($$$($$('Rewriters'), 'ExplicitWriterReturn')); + self.$use($$$($$$($$('Rewriters'), 'Hashes'), 'KeyDuplicatesRewriter')); + self.$use($$$($$('Rewriters'), 'ReturnableLogic')); + self.$use($$$($$('Rewriters'), 'DumpArgs')); + self.$use($$$($$('Rewriters'), 'MlhsArgs')); + self.$use($$$($$('Rewriters'), 'InlineArgs')); + + $def(self, '$initialize', function $$initialize(sexp) { + var self = this; + + return (self.sexp = sexp) + }, 1); + return $def(self, '$process', function $$process() { + var self = this; + + + if ($truthy(self.$class()['$disabled?']())) { + return self.sexp + }; + $send(self.$class().$list(), 'each', [], function $$3(rewriter_class){var self = $$3.$$s == null ? this : $$3.$$s, rewriter = nil; + if (self.sexp == null) self.sexp = nil; + + + + if (rewriter_class == null) rewriter_class = nil;; + rewriter = rewriter_class.$new(); + return (self.sexp = rewriter.$process(self.sexp));}, {$$arity: 1, $$s: self}); + return self.sexp; + }, 0); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/parser/source_buffer"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $defs = Opal.defs; + + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'SourceBuffer'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $defs(self, '$recognize_encoding', function $$recognize_encoding(string) { + var $yield = $$recognize_encoding.$$p || nil, self = this, $ret_or_1 = nil; + + delete $$recognize_encoding.$$p; + if ($truthy(($ret_or_1 = $send2(self, $find_super(self, 'recognize_encoding', $$recognize_encoding, false, true), 'recognize_encoding', [string], $yield)))) { + return $ret_or_1 + } else { + return $$$($$('Encoding'), 'UTF_8') + } + }, 1) + })($nesting[0], $$$($$$($$$('Parser'), 'Source'), 'Buffer'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["opal/parser/default_config"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $send2 = Opal.send2, $find_super = Opal.find_super, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $lambda = Opal.lambda, $defs = Opal.defs; + + Opal.add_stubs('attr_accessor,all_errors_are_fatal=,diagnostics,-,ignore_warnings=,diagnostics_consumer,consumer=,extend,diagnostics_consumer=,new,rewrite,process,default_parser,default_parser_class'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Parser'); + + var $nesting = [self].concat($parent_nesting); + + + (function($base, $parent_nesting) { + var self = $module($base, 'DefaultConfig'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base) { + var self = $module($base, 'ClassMethods'); + + + + self.$attr_accessor("diagnostics_consumer"); + return $def(self, '$default_parser', function $$default_parser() { + var $yield = $$default_parser.$$p || nil, self = this, parser = nil, $writer = nil; + + delete $$default_parser.$$p; + + parser = $send2(self, $find_super(self, 'default_parser', $$default_parser, false, true), 'default_parser', [], $yield); + + $writer = [true]; + $send(parser.$diagnostics(), 'all_errors_are_fatal=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(parser.$diagnostics(), 'ignore_warnings=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [self.$diagnostics_consumer()]; + $send(parser.$diagnostics(), 'consumer=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return parser; + }, 0); + })($nesting[0]); + $defs(self, '$included', function $$included(klass) { + var $writer = nil; + + + klass.$extend($$('ClassMethods')); + + $writer = [$lambda(function $$1(diagnostic){ + + + if (diagnostic == null) diagnostic = nil;; + return nil;}, 1)]; + $send(klass, 'diagnostics_consumer=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + }, 1); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [$$$($$$($$('Opal'), 'AST'), 'Builder').$new()], null); + }, -1); + + $def(self, '$parse', function $$parse(source_buffer) { + var $yield = $$parse.$$p || nil, self = this, parsed = nil, rewriten = nil; + + delete $$parse.$$p; + + parsed = $send2(self, $find_super(self, 'parse', $$parse, false, true), 'parse', [source_buffer], $yield); + rewriten = self.$rewrite(parsed); + return rewriten; + }, 1); + return $def(self, '$rewrite', function $$rewrite(node) { + + return $$$($$('Opal'), 'Rewriter').$new(node).$process() + }, 1); + })($nesting[0], $nesting); + return (function(self, $parent_nesting) { + + + self.$attr_accessor("default_parser_class"); + return $def(self, '$default_parser', function $$default_parser() { + var self = this; + + return self.$default_parser_class().$default_parser() + }, 0); + })(Opal.get_singleton_class(self), $nesting); + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["opal/parser/with_ruby_lexer"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus; + + Opal.add_stubs('include,default_parser_class=,-'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'WithRubyLexer'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $writer = nil; + + + self.$include($$$($$$($$('Opal'), 'Parser'), 'DefaultConfig')); + + $writer = [self]; + $send($$$($$('Opal'), 'Parser'), 'default_parser_class=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + })($$$($$('Opal'), 'Parser'), $$$($$('Parser'), 'Ruby31'), $nesting) +}; + +Opal.modules["opal/parser/patch"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $rb_plus = Opal.rb_plus, $send = Opal.send, $hash2 = Opal.hash2, $eqeqeq = Opal.eqeqeq, $eqeq = Opal.eqeq, $not = Opal.not, $rb_le = Opal.rb_le, $rb_minus = Opal.rb_minus, $rb_gt = Opal.rb_gt, $rb_times = Opal.rb_times, $rb_divide = Opal.rb_divide, $to_a = Opal.to_a, $module = Opal.module; + + Opal.add_stubs('source,unpack,+,to_a,lines,end_with?,<<,map,chomp,=~,diagnostic,nil?,new,===,type,updated,dedent,first,children,==,empty?,interrupt,compact,encoding,split,force_encoding,length,map!,each_with_index,!,each_char,<=,-,>,*,/,[],[]=,join,respond_to?,send,value'); + + + (function($base, $super) { + var self = $klass($base, $super, 'Lexer'); + + var $proto = self.$$prototype; + + $proto.source_buffer = nil; + return $def(self, '$source_buffer=', function $Lexer_source_buffer$eq$1(source_buffer) { + var self = this, source = nil; + + + self.source_buffer = source_buffer; + if ($truthy(self.source_buffer)) { + + source = self.source_buffer.$source(); + return (self.source_pts = source.$unpack("U*")); + } else { + return (self.source_pts = nil) + }; + }, 1) + })($$('Parser'), null); + (function($base, $super) { + var self = $klass($base, $super, 'Literal'); + + var $proto = self.$$prototype; + + $proto.buffer_s = $proto.buffer = nil; + + + Opal.udef(self, '$' + "extend_string");; + return $def(self, '$extend_string', function $$extend_string(string, ts, te) { + var self = this, $ret_or_1 = nil; + + + self.buffer_s = ($truthy(($ret_or_1 = self.buffer_s)) ? ($ret_or_1) : (ts)); + self.buffer_e = te; + return (self.buffer = $rb_plus(self.buffer, string)); + }, 3); + })($$$($$('Parser'), 'Lexer'), null); + (function($base, $super) { + var self = $klass($base, $super, 'Buffer'); + + var $proto = self.$$prototype; + + $proto.lines = $proto.source = nil; + return $def(self, '$source_lines', function $$source_lines() { + var self = this, $ret_or_1 = nil, lines = nil; + + return (self.lines = ($truthy(($ret_or_1 = self.lines)) ? ($ret_or_1) : (((lines = self.source.$lines().$to_a()), ($truthy(self.source['$end_with?']("\n")) ? (lines['$<<']("")) : nil), $send(lines, 'map', [], function $$2(line){ + + + if (line == null) line = nil;; + return line.$chomp("\n");}, 1))))) + }, 0) + })($$$($$('Parser'), 'Source'), null); + (function($base, $super) { + var self = $klass($base, $super, 'Default'); + + + + + $def(self, '$check_lvar_name', function $$check_lvar_name(name, loc) { + var self = this; + + if ($truthy(name['$=~'](new RegExp('^[\\p{Ll}|_][\\p{L}\\p{Nl}\\p{Nd}_]*$', 'u')))) { + return nil + } else { + return self.$diagnostic("error", "lvar_name", $hash2(["name"], {"name": name}), loc) + } + }, 2); + return $def(self, '$dedent_string', function $$dedent_string(node, dedent_level) { + var dedenter = nil, $ret_or_1 = nil, children = nil; + + + if (!$truthy(dedent_level['$nil?']())) { + + dedenter = $$$($$$($$$('Parser'), 'Lexer'), 'Dedenter').$new(dedent_level); + if ($eqeqeq("str", ($ret_or_1 = node.$type()))) { + node = node.$updated(nil, [dedenter.$dedent(node.$children().$first())]) + } else if (($eqeqeq("dstr", $ret_or_1) || ($eqeqeq("xstr", $ret_or_1)))) { + + children = $send(node.$children(), 'map', [], function $$3(str_node){ + + + if (str_node == null) str_node = nil;; + if ($eqeq(str_node.$type(), "str")) { + + str_node = str_node.$updated(nil, [dedenter.$dedent(str_node.$children().$first())]); + if ($truthy(str_node.$children().$first()['$empty?']())) { + return nil; + }; + } else { + dedenter.$interrupt() + }; + return str_node;}, 1); + node = node.$updated(nil, children.$compact()); + } else { + nil + }; + }; + return node; + }, 2); + })($$$($$('Parser'), 'Builders'), null); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Dedenter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$dedent', function $$dedent(string) { + var self = this, original_encoding = nil, lines = nil; + + + original_encoding = string.$encoding(); + lines = string.$force_encoding($$$($$('Encoding'), 'BINARY')).$split("\\\n"); + if ($eqeq(lines.$length(), 1)) { + lines = [string.$force_encoding(original_encoding)] + } else { + $send(lines, 'map!', [], function $$4(s){ + + + if (s == null) s = nil;; + return s.$force_encoding(original_encoding);}, 1) + }; + (function(){var $brk = Opal.new_brk(); try {return $send(lines, 'each_with_index', [], function $$5(line, index){var self = $$5.$$s == null ? this : $$5.$$s, left_to_remove = nil, remove = nil, $writer = nil; + if (self.at_line_begin == null) self.at_line_begin = nil; + if (self.dedent_level == null) self.dedent_level = nil; + + + + if (line == null) line = nil;; + + if (index == null) index = nil;; + if (($eqeq(index, 0) && ($not(self.at_line_begin)))) { + return nil; + }; + left_to_remove = self.dedent_level; + remove = 0; + (function(){var $brk = Opal.new_brk(); try {return $send(line, 'each_char', [], function $$6(char$){var self = $$6.$$s == null ? this : $$6.$$s, $ret_or_1 = nil; + if (self.dedent_level == null) self.dedent_level = nil; + + + + if (char$ == null) char$ = nil;; + if ($truthy($rb_le(left_to_remove, 0))) { + + Opal.brk(nil, $brk) + }; + if ($eqeqeq(" ", ($ret_or_1 = char$))) { + + remove = $rb_plus(remove, 1); + return (left_to_remove = $rb_minus(left_to_remove, 1)); + } else if ($eqeqeq("\t", $ret_or_1)) { + + if ($truthy($rb_gt($rb_times($$('TAB_WIDTH'), $rb_plus($rb_divide(remove, $$('TAB_WIDTH')), 1)), self.dedent_level))) { + + Opal.brk(nil, $brk) + }; + remove = $rb_plus(remove, 1); + return (left_to_remove = $rb_minus(left_to_remove, $$('TAB_WIDTH'))); + } else { + + Opal.brk(nil, $brk) + };}, {$$arity: 1, $$s: self, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + + $writer = [index, line['$[]'](Opal.Range.$new(remove, -1, false))]; + $send(lines, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 2, $$s: self, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + string = lines.$join(); + self.at_line_begin = string['$end_with?']("\n"); + return string; + }, 1) + })($$$($$('Parser'), 'Lexer'), null, $nesting);; + (function($base) { + var self = $module($base, 'Mixin'); + + + + + Opal.udef(self, '$' + "process");; + return $def(self, '$process', function $$process(node) { + var self = this, $ret_or_1 = nil, type = nil, on_handler = nil, $writer = nil, handler = nil; + if (self._on_handler_cache == null) self._on_handler_cache = nil; + + + if ($truthy(node['$nil?']())) { + return nil + }; + self._on_handler_cache = ($truthy(($ret_or_1 = self._on_handler_cache)) ? ($ret_or_1) : ($hash2([], {}))); + type = node.$type(); + on_handler = ($truthy(($ret_or_1 = self._on_handler_cache['$[]'](type))) ? ($ret_or_1) : ((($writer = [type, ((handler = "on_" + (type)), ($truthy(self['$respond_to?'](handler)) ? (nil) : ((handler = "handler_missing"))), handler)]), $send(self._on_handler_cache, '[]=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)]))); + if ($truthy(($ret_or_1 = self.$send(on_handler, node)))) { + return $ret_or_1 + } else { + return node + }; + }, 1); + })($$$($$('AST'), 'Processor')); + return (function($base, $super) { + var self = $klass($base, $super, 'Default'); + + + + + Opal.udef(self, '$' + "string_value");; + return $def(self, '$string_value', function $$string_value(token) { + var self = this; + + return self.$value(token) + }, 1); + })($$$($$('Parser'), 'Builders'), null); +}; + +Opal.modules["opal/parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, nil = Opal.nil; + + Opal.add_stubs('require'); + + self.$require("opal/ast/builder"); + self.$require("opal/rewriter"); + self.$require("opal/parser/source_buffer"); + self.$require("opal/parser/default_config"); + self.$require("opal/parser/with_ruby_lexer"); + return self.$require("opal/parser/patch"); +}; + +Opal.modules["opal/fragment"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $rb_plus = Opal.rb_plus, $rb_gt = Opal.rb_gt, $to_a = Opal.to_a, $not = Opal.not, $send = Opal.send; + + Opal.add_stubs('attr_reader,to_s,inspect,===,type,[],meta,source_map_name_for,sexp,==,class,+,parent,>,!,first,children,loc,respond_to?,dot,selector,operator,begin,line,location,column'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Fragment'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.code = $proto.scope = $proto.sexp = nil; + + self.$attr_reader("code"); + + $def(self, '$initialize', function $$initialize(code, scope, sexp) { + var self = this; + + + + if (sexp == null) sexp = nil;; + self.code = code.$to_s(); + self.sexp = sexp; + return (self.scope = scope); + }, -3); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return "f(" + (self.code.$inspect()) + ")" + }, 0); + + $def(self, '$source_map_name_for', function $$source_map_name_for(sexp) { + var $a, self = this, $ret_or_1 = nil, $ret_or_2 = nil, scope = nil, iters = nil, level = nil, const$ = nil, name = nil; + + if ($eqeqeq("top", ($ret_or_1 = sexp.$type()))) { + if ($eqeqeq("require", ($ret_or_2 = sexp.$meta()['$[]']("kind")))) { + return "" + } else if ($eqeqeq("eval", $ret_or_2)) { + return "(eval)" + } else if ($eqeqeq("main", $ret_or_2)) { + return "
    " + } else { + return nil + } + } else if (($eqeqeq("begin", $ret_or_1) || (($eqeqeq("newline", $ret_or_1) || ($eqeqeq("js_return", $ret_or_1)))))) { + if ($truthy(self.scope)) { + return self.$source_map_name_for(self.scope.$sexp()) + } else { + return nil + } + } else if ($eqeqeq("iter", $ret_or_1)) { + + scope = self.scope; + iters = 1; + while ($truthy(scope)) { + if ($eqeq(scope.$class(), $$$($$('Nodes'), 'IterNode'))) { + + iters = $rb_plus(iters, 1); + scope = scope.$parent(); + } else { + break; + } + }; + if ($truthy($rb_gt(iters, 1))) { + level = " (" + (iters) + " levels)" + }; + return "block" + (level) + " in " + (self.$source_map_name_for(scope.$sexp())); + } else if ($eqeqeq("self", $ret_or_1)) { + return "self" + } else if ($eqeqeq("module", $ret_or_1)) { + + $a = [].concat($to_a(sexp)), (const$ = ($a[0] == null ? nil : $a[0])), $a; + return ""; + } else if ($eqeqeq("class", $ret_or_1)) { + + $a = [].concat($to_a(sexp)), (const$ = ($a[0] == null ? nil : $a[0])), $a; + return ""; + } else if ($eqeqeq("const", $ret_or_1)) { + + $a = [].concat($to_a(sexp)), (scope = ($a[0] == null ? nil : $a[0])), (name = ($a[1] == null ? nil : $a[1])), $a; + if (($not(scope) || ($eqeq(scope.$type(), "cbase")))) { + return name.$to_s() + } else { + return "" + (self.$source_map_name_for(scope)) + "::" + (name) + }; + } else if ($eqeqeq("int", $ret_or_1)) { + return sexp.$children().$first() + } else if ($eqeqeq("def", $ret_or_1)) { + return sexp.$children().$first() + } else if ($eqeqeq("defs", $ret_or_1)) { + return sexp.$children()['$[]'](1) + } else if ($eqeqeq("send", $ret_or_1)) { + return sexp.$children()['$[]'](1) + } else if (($eqeqeq("lvar", $ret_or_1) || (($eqeqeq("lvasgn", $ret_or_1) || (($eqeqeq("lvdeclare", $ret_or_1) || (($eqeqeq("ivar", $ret_or_1) || (($eqeqeq("ivasgn", $ret_or_1) || (($eqeqeq("gvar", $ret_or_1) || (($eqeqeq("cvar", $ret_or_1) || (($eqeqeq("cvasgn", $ret_or_1) || (($eqeqeq("gvars", $ret_or_1) || (($eqeqeq("gvasgn", $ret_or_1) || ($eqeqeq("arg", $ret_or_1)))))))))))))))))))))) { + return sexp.$children().$first() + } else if (($eqeqeq("str", $ret_or_1) || ($eqeqeq("xstr", $ret_or_1)))) { + return self.$source_map_name_for(self.scope.$sexp()) + } else { + return nil + } + }, 1); + + $def(self, '$source_map_name', function $$source_map_name() { + var self = this; + + + if (!$truthy(self.sexp)) { + return nil + }; + return self.$source_map_name_for(self.sexp); + }, 0); + + $def(self, '$location', function $$location() { + var self = this, loc = nil, $ret_or_1 = nil; + + if ($not(self.sexp)) { + return nil + } else if ($eqeq(self.sexp.$type(), "send")) { + + loc = self.sexp.$loc(); + if ($truthy(loc['$respond_to?']("dot"))) { + if ($truthy(($ret_or_1 = loc.$dot()))) { + return $ret_or_1 + } else { + return loc.$selector() + } + } else if ($truthy(loc['$respond_to?']("operator"))) { + return loc.$operator() + } else { + return self.sexp + }; + } else if ($eqeq(self.sexp.$type(), "iter")) { + if ($truthy(loc['$respond_to?']("begin"))) { + return self.sexp.$loc().$begin() + } else { + return self.sexp + } + } else { + return self.sexp + } + }, 0); + + $def(self, '$line', function $$line() { + var $a, self = this; + + return ($a = self.$location(), ($a === nil || $a == null) ? nil : $send($a, 'line', [])) + }, 0); + + $def(self, '$column', function $$column() { + var $a, self = this; + + return ($a = self.$location(), ($a === nil || $a == null) ? nil : $send($a, 'column', [])) + }, 0); + return $def(self, '$skip_source_map?', function $Fragment_skip_source_map$ques$1() { + var self = this; + + return self.sexp['$=='](false) + }, 0); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["opal/nodes/helpers"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $truthy = Opal.truthy, $def = Opal.def, $rb_plus = Opal.rb_plus, $send = Opal.send, $hash2 = Opal.hash2, $to_a = Opal.to_a, $eqeqeq = Opal.eqeqeq, $slice = Opal.slice, $eqeq = Opal.eqeq, $rb_minus = Opal.rb_minus; + + Opal.add_stubs('require,valid_name?,inspect,=~,to_s,+,indent,compiler,to_proc,parser_indent,push,fragment,current_indent,js_truthy_optimize,helper,expr,===,type,[],handlers,include?,truthy_optimize?,==,count,<<,method_calls,first,children,s,[]=,meta,-,new_temp,scope,wrap'); + + self.$require("opal/regexp_anchors"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Helpers'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$property', function $$property(name) { + var self = this; + + if ($truthy(self['$valid_name?'](name))) { + return "." + (name) + } else { + return "[" + (name.$inspect()) + "]" + } + }, 1); + + $def(self, '$valid_name?', function $Helpers_valid_name$ques$1(name) { + + return $$$($$$($$('Opal'), 'Rewriters'), 'JsReservedWords')['$valid_name?'](name) + }, 1); + + $def(self, '$mid_to_jsid', function $$mid_to_jsid(mid) { + + if ($truthy(/\=|\+|\-|\*|\/|\!|\?|<|\>|\&|\||\^|\%|\~|\[|`/['$=~'](mid.$to_s()))) { + return "['$" + (mid) + "']" + } else { + return $rb_plus(".$", mid) + } + }, 1); + + $def(self, '$indent', function $$indent() { + var block = $$indent.$$p || nil, self = this; + + delete $$indent.$$p; + + ; + return $send(self.$compiler(), 'indent', [], block.$to_proc()); + }, 0); + + $def(self, '$current_indent', function $$current_indent() { + var self = this; + + return self.$compiler().$parser_indent() + }, 0); + + $def(self, '$line', function $$line($a) { + var $post_args, strs, self = this; + + + + $post_args = Opal.slice.call(arguments); + + strs = $post_args;; + self.$push(self.$fragment("\n" + (self.$current_indent()), $hash2(["loc"], {"loc": false}))); + return $send(self, 'push', $to_a(strs)); + }, -1); + + $def(self, '$empty_line', function $$empty_line() { + var self = this; + + return self.$push(self.$fragment("\n", $hash2(["loc"], {"loc": false}))) + }, 0); + + $def(self, '$js_truthy', function $$js_truthy(sexp) { + var self = this, optimize = nil; + + + if ($truthy((optimize = self.$js_truthy_optimize(sexp)))) { + return optimize + }; + self.$helper("truthy"); + return [self.$fragment("$truthy("), self.$expr(sexp), self.$fragment(")")]; + }, 1); + + $def(self, '$js_truthy_optimize', function $$js_truthy_optimize(sexp) { + var $a, self = this, $ret_or_1 = nil, receiver = nil, mid = nil, args = nil, receiver_handler_class = nil, $ret_or_2 = nil, allow_optimization_on_type = nil, $ret_or_3 = nil, _test = nil, true_body = nil, false_body = nil, $writer = nil; + + if ($eqeqeq("send", ($ret_or_1 = sexp.$type()))) { + + $a = [].concat($to_a(sexp)), (receiver = ($a[0] == null ? nil : $a[0])), (mid = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $a; + receiver_handler_class = ($truthy(($ret_or_2 = receiver)) ? (self.$compiler().$handlers()['$[]'](receiver.$type())) : ($ret_or_2)); + allow_optimization_on_type = ($truthy(($ret_or_2 = ($truthy(($ret_or_3 = $$$($$('Compiler'), 'COMPARE')['$include?'](mid.$to_s()))) ? (receiver_handler_class) : ($ret_or_3)))) ? (receiver_handler_class['$truthy_optimize?']()) : ($ret_or_2)); + if (($truthy(allow_optimization_on_type) || ($eqeq(mid, "block_given?")))) { + return self.$expr(sexp) + } else if ($eqeq(args.$count(), 1)) { + if ($eqeqeq("==", ($ret_or_2 = mid))) { + + self.$helper("eqeq"); + self.$compiler().$method_calls()['$<<'](mid); + return [self.$fragment("$eqeq("), self.$expr(receiver), self.$fragment(", "), self.$expr(args.$first()), self.$fragment(")")]; + } else if ($eqeqeq("===", $ret_or_2)) { + + self.$helper("eqeqeq"); + self.$compiler().$method_calls()['$<<'](mid); + return [self.$fragment("$eqeqeq("), self.$expr(receiver), self.$fragment(", "), self.$expr(args.$first()), self.$fragment(")")]; + } else if ($eqeqeq("!=", $ret_or_2)) { + + self.$helper("neqeq"); + self.$compiler().$method_calls()['$<<'](mid); + return [self.$fragment("$neqeq("), self.$expr(receiver), self.$fragment(", "), self.$expr(args.$first()), self.$fragment(")")]; + } else { + return nil + } + } else if ($eqeq(args.$count(), 0)) { + if ($eqeqeq("!", ($ret_or_2 = mid))) { + + self.$helper("not"); + self.$compiler().$method_calls()['$<<'](mid); + return [self.$fragment("$not("), self.$expr(receiver), self.$fragment(")")]; + } else { + return nil + } + } else { + return nil + }; + } else if ($eqeqeq("begin", $ret_or_1)) { + if ($eqeq(sexp.$children().$count(), 1)) { + return self.$js_truthy_optimize(sexp.$children().$first()) + } else { + return nil + } + } else if ($eqeqeq("if", $ret_or_1)) { + + $a = [].concat($to_a(sexp)), (_test = ($a[0] == null ? nil : $a[0])), (true_body = ($a[1] == null ? nil : $a[1])), (false_body = ($a[2] == null ? nil : $a[2])), $a; + if ($eqeq(true_body, self.$s("true"))) { + + + $writer = ["do_js_truthy_on_false_body", true]; + $send(sexp.$meta(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self.$expr(sexp); + } else if ($eqeq(false_body, self.$s("false"))) { + + + $writer = ["do_js_truthy_on_true_body", true]; + $send(sexp.$meta(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self.$expr(sexp); + } else { + return nil + }; + } else { + return nil + } + }, 1); + return $def(self, '$conditional_send', function $$conditional_send(recvr) { + var $yield = $$conditional_send.$$p || nil, self = this, receiver_temp = nil; + + delete $$conditional_send.$$p; + + receiver_temp = self.$scope().$new_temp(); + self.$push("" + (receiver_temp) + " = ", recvr); + self.$push(", (" + (receiver_temp) + " === nil || " + (receiver_temp) + " == null) ? nil : "); + Opal.yield1($yield, receiver_temp); + return self.$wrap("(", ")"); + }, 1); + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $defs = Opal.defs, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $Opal = Opal.Opal, $rb_plus = Opal.rb_plus; + + Opal.add_stubs('require,include,each,[]=,handlers,-,each_with_index,define_method,[],children,attr_reader,type,top_scope,top_scope=,compile,raise,is_a?,fragment,<<,reverse_each,unshift,push,new,scope,error,loc,==,process,expr,add_scope_local,to_sym,add_scope_ivar,add_scope_gvar,add_scope_temp,helper,with_temp,to_proc,in_while?,instance_variable_get,has_rescue_else?,in_ensure,in_ensure?,in_resbody,in_resbody?,in_rescue,!,class_scope?,sclass?,+,parent,nesting,class_variable_owner_nesting_level,comments,compiler,name,source_buffer,expression,start_with?,end_with?,line'); + + self.$require("opal/nodes/helpers"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Base'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.compiler = $proto.sexp = $proto.fragments = $proto.level = nil; + + self.$include($$('Helpers')); + $defs(self, '$handlers', function $$handlers() { + var self = this, $ret_or_1 = nil; + if (self.handlers == null) self.handlers = nil; + + return (self.handlers = ($truthy(($ret_or_1 = self.handlers)) ? ($ret_or_1) : ($hash2([], {})))) + }, 0); + $defs(self, '$handle', function $$handle($a) { + var $post_args, types, self = this; + + + + $post_args = Opal.slice.call(arguments); + + types = $post_args;; + return $send(types, 'each', [], function $$1(type){var self = $$1.$$s == null ? this : $$1.$$s, $writer = nil; + + + + if (type == null) type = nil;; + $writer = [type, self]; + $send($$('Base').$handlers(), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}); + }, -1); + $defs(self, '$children', function $$children($a) { + var $post_args, names, self = this; + + + + $post_args = Opal.slice.call(arguments); + + names = $post_args;; + return $send(names, 'each_with_index', [], function $$2(name, idx){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (name == null) name = nil;; + + if (idx == null) idx = nil;; + return $send(self, 'define_method', [name], function $$3(){var self = $$3.$$s == null ? this : $$3.$$s; + if (self.sexp == null) self.sexp = nil; + + return self.sexp.$children()['$[]'](idx)}, {$$arity: 0, $$s: self});}, {$$arity: 2, $$s: self}); + }, -1); + $defs(self, '$truthy_optimize?', function $Base_truthy_optimize$ques$4() { + + return false + }, 0); + self.$attr_reader("compiler", "type", "sexp"); + + $def(self, '$initialize', function $$initialize(sexp, level, compiler) { + var self = this, $ret_or_1 = nil, $writer = nil; + + + self.sexp = sexp; + self.type = sexp.$type(); + self.level = level; + self.compiler = compiler; + if ($truthy(($ret_or_1 = self.compiler.$top_scope()))) { + return $ret_or_1 + } else { + + $writer = [self]; + $send(self.compiler, 'top_scope=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }; + }, 3); + + $def(self, '$children', function $$children() { + var self = this; + + return self.sexp.$children() + }, 0); + + $def(self, '$compile_to_fragments', function $$compile_to_fragments() { + var $a, self = this; + + + if ($truthy((($a = self['fragments'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { + return self.fragments + }; + self.fragments = []; + self.$compile(); + return self.fragments; + }, 0); + + $def(self, '$compile', function $$compile() { + var self = this; + + return self.$raise("Not Implemented") + }, 0); + + $def(self, '$push', function $$push($a) { + var $post_args, strs, self = this; + + + + $post_args = Opal.slice.call(arguments); + + strs = $post_args;; + return $send(strs, 'each', [], function $$5(str){var self = $$5.$$s == null ? this : $$5.$$s; + if (self.fragments == null) self.fragments = nil; + + + + if (str == null) str = nil;; + if ($truthy(str['$is_a?']($$('String')))) { + str = self.$fragment(str) + }; + return self.fragments['$<<'](str);}, {$$arity: 1, $$s: self}); + }, -1); + + $def(self, '$unshift', function $$unshift($a) { + var $post_args, strs, self = this; + + + + $post_args = Opal.slice.call(arguments); + + strs = $post_args;; + return $send(strs, 'reverse_each', [], function $$6(str){var self = $$6.$$s == null ? this : $$6.$$s; + if (self.fragments == null) self.fragments = nil; + + + + if (str == null) str = nil;; + if ($truthy(str['$is_a?']($$('String')))) { + str = self.$fragment(str) + }; + return self.fragments.$unshift(str);}, {$$arity: 1, $$s: self}); + }, -1); + + $def(self, '$wrap', function $$wrap(pre, post) { + var self = this; + + + self.$unshift(pre); + return self.$push(post); + }, 2); + + $def(self, '$fragment', function $$fragment(str, $kwargs) { + var loc, self = this, $ret_or_1 = nil; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + loc = $kwargs.$$smap["loc"]; + if (loc == null) loc = true; + return $$$($$('Opal'), 'Fragment').$new(str, self.$scope(), ($truthy(($ret_or_1 = loc)) ? (self.sexp) : ($ret_or_1))); + }, -2); + + $def(self, '$error', function $$error(msg) { + var self = this; + + return self.compiler.$error(msg) + }, 1); + + $def(self, '$scope', function $$scope() { + var self = this; + + return self.compiler.$scope() + }, 0); + + $def(self, '$top_scope', function $$top_scope() { + var self = this; + + return self.compiler.$top_scope() + }, 0); + + $def(self, '$s', function $$s(type, $a) { + var $post_args, children, self = this; + + + + $post_args = Opal.slice.call(arguments, 1); + + children = $post_args;; + return $$$($$$($Opal, 'AST'), 'Node').$new(type, children, $hash2(["location"], {"location": self.sexp.$loc()})); + }, -2); + + $def(self, '$expr?', function $Base_expr$ques$7() { + var self = this; + + return self.level['$==']("expr") + }, 0); + + $def(self, '$recv?', function $Base_recv$ques$8() { + var self = this; + + return self.level['$==']("recv") + }, 0); + + $def(self, '$stmt?', function $Base_stmt$ques$9() { + var self = this; + + return self.level['$==']("stmt") + }, 0); + + $def(self, '$process', function $$process(sexp, level) { + var self = this; + + + + if (level == null) level = "expr";; + return self.compiler.$process(sexp, level); + }, -2); + + $def(self, '$expr', function $$expr(sexp) { + var self = this; + + return self.compiler.$process(sexp, "expr") + }, 1); + + $def(self, '$recv', function $$recv(sexp) { + var self = this; + + return self.compiler.$process(sexp, "recv") + }, 1); + + $def(self, '$stmt', function $$stmt(sexp) { + var self = this; + + return self.compiler.$process(sexp, "stmt") + }, 1); + + $def(self, '$expr_or_nil', function $$expr_or_nil(sexp) { + var self = this; + + if ($truthy(sexp)) { + return self.$expr(sexp) + } else { + return "nil" + } + }, 1); + + $def(self, '$add_local', function $$add_local(name) { + var self = this; + + return self.$scope().$add_scope_local(name.$to_sym()) + }, 1); + + $def(self, '$add_ivar', function $$add_ivar(name) { + var self = this; + + return self.$scope().$add_scope_ivar(name) + }, 1); + + $def(self, '$add_gvar', function $$add_gvar(name) { + var self = this; + + return self.$scope().$add_scope_gvar(name) + }, 1); + + $def(self, '$add_temp', function $$add_temp(temp) { + var self = this; + + return self.$scope().$add_scope_temp(temp) + }, 1); + + $def(self, '$helper', function $$helper(name) { + var self = this; + + return self.compiler.$helper(name) + }, 1); + + $def(self, '$with_temp', function $$with_temp() { + var block = $$with_temp.$$p || nil, self = this; + + delete $$with_temp.$$p; + + ; + return $send(self.compiler, 'with_temp', [], block.$to_proc()); + }, 0); + + $def(self, '$in_while?', function $Base_in_while$ques$10() { + var self = this; + + return self.compiler['$in_while?']() + }, 0); + + $def(self, '$while_loop', function $$while_loop() { + var self = this; + + return self.compiler.$instance_variable_get("@while_loop") + }, 0); + + $def(self, '$has_rescue_else?', function $Base_has_rescue_else$ques$11() { + var self = this; + + return self.$scope()['$has_rescue_else?']() + }, 0); + + $def(self, '$in_ensure', function $$in_ensure() { + var block = $$in_ensure.$$p || nil, self = this; + + delete $$in_ensure.$$p; + + ; + return $send(self.$scope(), 'in_ensure', [], block.$to_proc()); + }, 0); + + $def(self, '$in_ensure?', function $Base_in_ensure$ques$12() { + var self = this; + + return self.$scope()['$in_ensure?']() + }, 0); + + $def(self, '$in_resbody', function $$in_resbody() { + var block = $$in_resbody.$$p || nil, self = this; + + delete $$in_resbody.$$p; + + ; + return $send(self.$scope(), 'in_resbody', [], block.$to_proc()); + }, 0); + + $def(self, '$in_resbody?', function $Base_in_resbody$ques$13() { + var self = this; + + return self.$scope()['$in_resbody?']() + }, 0); + + $def(self, '$in_rescue', function $$in_rescue(node) { + var block = $$in_rescue.$$p || nil, self = this; + + delete $$in_rescue.$$p; + + ; + return $send(self.$scope(), 'in_rescue', [node], block.$to_proc()); + }, 1); + + $def(self, '$class_variable_owner_nesting_level', function $$class_variable_owner_nesting_level() { + var $a, self = this, cvar_scope = nil, nesting_level = nil, $ret_or_1 = nil; + + + cvar_scope = self.$scope(); + nesting_level = 0; + while ($truthy(($truthy(($ret_or_1 = cvar_scope)) ? (cvar_scope['$class_scope?']()['$!']()) : ($ret_or_1)))) { + + if ($truthy(cvar_scope['$sclass?']())) { + nesting_level = $rb_plus(nesting_level, 1) + }; + cvar_scope = cvar_scope.$parent(); + }; + return nesting_level; + }, 0); + + $def(self, '$class_variable_owner', function $$class_variable_owner() { + var self = this; + + if ($truthy(self.$scope())) { + return "" + (self.$scope().$nesting()) + "[" + (self.$class_variable_owner_nesting_level()) + "]" + } else { + return "Opal.Object" + } + }, 0); + + $def(self, '$comments', function $$comments() { + var self = this; + + return self.$compiler().$comments()['$[]'](self.sexp.$loc()) + }, 0); + return $def(self, '$source_location', function $$source_location() { + var self = this, file = nil, line = nil; + + + file = self.sexp.$loc().$expression().$source_buffer().$name(); + if ($truthy(file['$start_with?']("corelib/"))) { + file = "" + }; + if ($truthy(file['$end_with?'](".js"))) { + file = "" + }; + line = self.sexp.$loc().$line(); + return "['" + (file) + "', " + (line) + "]"; + }, 0); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/literal"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $eqeq = Opal.eqeq, $def = Opal.def, $defs = Opal.defs, $truthy = Opal.truthy, $const_set = Opal.const_set, $hash2 = Opal.hash2, $regexp = Opal.regexp, $send = Opal.send, $rb_plus = Opal.rb_plus, $lambda = Opal.lambda, $rb_le = Opal.rb_le, $rb_minus = Opal.rb_minus, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $eqeqeq = Opal.eqeqeq, $slice = Opal.slice, $Opal = Opal.Opal, $rb_gt = Opal.rb_gt; + + Opal.add_stubs('require,handle,==,type,push,self,scope,to_s,children,value,recv?,wrap,freeze,join,keys,gsub,even?,length,last_match,+,chop,[],inspect,to_i,to_utf16,translate_escape_chars,valid_encoding?,helper,upcase,<=,call,-,>>,&,attr_accessor,extract_flags_and_value,select!,flags,=~,warning,compiler,compile_static_regexp,compile_dynamic_regexp,each_with_index,zero?,expr,any?,===,new,map,to_proc,flags=,empty?,s,single_line?,value=,include?,is_a?,updated,delete,source,expression,loc,private,>,!=,!,regexp,first,each,compile_inline?,compile_inline,compile_range_initialize,start,finish,raise,expr_or_nil,numerator,denominator,real,imag'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'ValueNode'); + + + + self.$handle("true", "false", "self", "nil"); + + $def(self, '$compile', function $$compile() { + var self = this; + + if ($eqeq(self.$type(), "self")) { + return self.$push(self.$scope().$self()) + } else { + return self.$push(self.$type().$to_s()) + } + }, 0); + return $defs(self, '$truthy_optimize?', function $ValueNode_truthy_optimize$ques$1() { + + return true + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'NumericNode'); + + + + self.$handle("int", "float"); + self.$children("value"); + + $def(self, '$compile', function $$compile() { + var self = this; + + + self.$push(self.$value().$to_s()); + if ($truthy(self['$recv?']())) { + return self.$wrap("(", ")") + } else { + return nil + }; + }, 0); + return $defs(self, '$truthy_optimize?', function $NumericNode_truthy_optimize$ques$2() { + + return true + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'StringNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$handle("str"); + self.$children("value"); + $const_set($nesting[0], 'ESCAPE_CHARS', $hash2(["a", "e"], {"a": "\\u0007", "e": "\\u001b"}).$freeze()); + $const_set($nesting[0], 'ESCAPE_REGEX', $regexp(["(\\\\+)([", $$('ESCAPE_CHARS').$keys().$join(""), "])"]).$freeze()); + + $def(self, '$translate_escape_chars', function $$translate_escape_chars(inspect_string) { + + return $send(inspect_string, 'gsub', [$$('ESCAPE_REGEX')], function $$3(original){ + + + if (original == null) original = nil;; + if ($truthy($$('Regexp').$last_match(1).$length()['$even?']())) { + return original + } else { + return $rb_plus($$('Regexp').$last_match(1).$chop(), $$('ESCAPE_CHARS')['$[]']($$('Regexp').$last_match(2))) + };}, 1) + }, 1); + + $def(self, '$compile', function $$compile() { + var self = this, string_value = nil, sanitized_value = nil; + + + string_value = self.$value(); + sanitized_value = $send(string_value.$inspect(), 'gsub', [/\\u\{([0-9a-f]+)\}/], function $$4(){var self = $$4.$$s == null ? this : $$4.$$s, code_point = nil; + + + code_point = $$('Regexp').$last_match(1).$to_i(16); + return self.$to_utf16(code_point);}, {$$arity: 0, $$s: self}); + self.$push(self.$translate_escape_chars(sanitized_value)); + nil; + if ($truthy(self.$value()['$valid_encoding?']())) { + return nil + } else { + + self.$helper("binary"); + return self.$wrap("$binary(", ")"); + }; + }, 0); + return $def(self, '$to_utf16', function $$to_utf16(code_point) { + var ten_bits = nil, u = nil, lead_surrogate = nil, tail_surrogate = nil; + + + ten_bits = 1023; + u = $lambda(function $$5(code_unit){ + + + if (code_unit == null) code_unit = nil;; + return $rb_plus("\\u", code_unit.$to_s(16).$upcase());}, 1); + if ($truthy($rb_le(code_point, 65535))) { + return u.$call(code_point) + }; + code_point = $rb_minus(code_point, 65536); + lead_surrogate = $rb_plus(55296, code_point['$>>'](10)); + tail_surrogate = $rb_plus(56320, code_point['$&'](ten_bits)); + return $rb_plus(u.$call(lead_surrogate), u.$call(tail_surrogate)); + }, 1); + })($nesting[0], $$('Base'), $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'SymbolNode'); + + + + self.$handle("sym"); + self.$children("value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$push(self.$value().$to_s().$inspect()) + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'RegexpNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.sexp = nil; + + self.$handle("regexp"); + self.$attr_accessor("value", "flags"); + $const_set($nesting[0], 'SUPPORTED_FLAGS', /[gimuy]/.$freeze()); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + return self.$extract_flags_and_value(); + }, -1); + + $def(self, '$compile', function $$compile() { + var self = this; + + + $send(self.$flags(), 'select!', [], function $$6(flag){var self = $$6.$$s == null ? this : $$6.$$s; + + + + if (flag == null) flag = nil;; + if ($truthy($$('SUPPORTED_FLAGS')['$=~'](flag))) { + return true + } else { + + self.$compiler().$warning("Skipping the '" + (flag) + "' Regexp flag as it's not widely supported by JavaScript vendors."); + return false; + };}, {$$arity: 1, $$s: self}); + if ($eqeq(self.$value().$type(), "str")) { + return self.$compile_static_regexp() + } else { + return self.$compile_dynamic_regexp() + }; + }, 0); + + $def(self, '$compile_dynamic_regexp', function $$compile_dynamic_regexp() { + var self = this; + + + self.$helper("regexp"); + self.$push("$regexp(["); + $send(self.$value().$children(), 'each_with_index', [], function $$7(v, index){var self = $$7.$$s == null ? this : $$7.$$s; + + + + if (v == null) v = nil;; + + if (index == null) index = nil;; + if (!$truthy(index['$zero?']())) { + self.$push(", ") + }; + return self.$push(self.$expr(v));}, {$$arity: 2, $$s: self}); + self.$push("]"); + if ($truthy(self.$flags()['$any?']())) { + self.$push(", '" + (self.$flags().$join()) + "'") + }; + return self.$push(")"); + }, 0); + + $def(self, '$compile_static_regexp', function $$compile_static_regexp() { + var self = this, value = nil, $ret_or_1 = nil; + + + value = self.$value().$children()['$[]'](0); + if ($eqeqeq("", ($ret_or_1 = value))) { + return self.$push("/(?:)/") + } else { + return self.$push("" + ($$('Regexp').$new(value).$inspect()) + (self.$flags().$join())) + }; + }, 0); + + $def(self, '$extract_flags_and_value', function $$extract_flags_and_value() { + var $a, $b, self = this, values = nil, flags_sexp = nil, $writer = nil, parts = nil; + + + $a = [].concat($to_a(self.$children())), $b = $a.length - 1, $b = ($b < 0) ? 0 : $b, (values = $slice.call($a, 0, $b)), (flags_sexp = ($a[$b] == null ? nil : $a[$b])), $a; + + $writer = [$send(flags_sexp.$children(), 'map', [], "to_s".$to_proc())]; + $send(self, 'flags=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [($truthy(values['$empty?']()) ? (self.$s("str", "")) : ($truthy(self['$single_line?'](values)) ? (values['$[]'](0)) : ($send(self, 's', ["dstr"].concat($to_a(values))))))]; + $send(self, 'value=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy(self.$flags()['$include?']("x"))) { + + parts = $send(self.$value().$children(), 'map', [], function $$8(part){var self = $$8.$$s == null ? this : $$8.$$s, trimmed_value = nil; + + + + if (part == null) part = nil;; + if (($truthy(part['$is_a?']($$$($$$($Opal, 'AST'), 'Node'))) && ($eqeq(part.$type(), "str")))) { + + trimmed_value = part.$children()['$[]'](0).$gsub(/^\s*\#.*/, "").$gsub(/\s/, ""); + return self.$s("str", trimmed_value); + } else { + return part + };}, {$$arity: 1, $$s: self}); + + $writer = [self.$value().$updated(nil, parts)]; + $send(self, 'value=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.$flags().$delete("x"); + }; + if ($eqeq(self.$value().$type(), "str")) { + + $writer = [self.$s("str", self.$value().$children()['$[]'](0).$gsub("\\A", "^").$gsub("\\z", "$"))]; + $send(self, 'value=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else { + return nil + }; + }, 0); + + $def(self, '$raw_value', function $$raw_value() { + var self = this, $writer = nil; + + + $writer = [self.sexp.$loc().$expression().$source()]; + $send(self, 'value=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }, 0); + self.$private(); + return $def(self, '$single_line?', function $RegexpNode_single_line$ques$9(values) { + var value = nil, $ret_or_1 = nil; + + + if ($truthy($rb_gt(values.$length(), 1))) { + return false + }; + value = values['$[]'](0); + if ($truthy(($ret_or_1 = value.$type()['$!=']("str")))) { + return $ret_or_1 + } else { + return value.$children()['$[]'](0)['$include?']("\n")['$!']() + }; + }, 1); + })($nesting[0], $$('Base'), $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'MatchCurrentLineNode'); + + + + self.$handle("match_current_line"); + self.$children("regexp"); + return $def(self, '$compile', function $$compile() { + var self = this, gvar_sexp = nil, send_node = nil; + + + gvar_sexp = self.$s("gvar", "$_"); + send_node = self.$s("send", gvar_sexp, "=~", self.$regexp()); + return self.$push(self.$expr(send_node)); + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'DynamicStringNode'); + + + + self.$handle("dstr"); + return $def(self, '$compile', function $$compile() { + var self = this, skip_empty = nil; + + + if (($truthy($rb_gt(self.$children().$length(), 1)) && ($eqeq(self.$children().$first().$type(), "str")))) { + skip_empty = true + } else { + self.$push("\"\"") + }; + return $send(self.$children(), 'each', [], function $$10(part){var self = $$10.$$s == null ? this : $$10.$$s; + + + + if (part == null) part = nil;; + if ($truthy(skip_empty)) { + skip_empty = false + } else { + self.$push(" + ") + }; + if ($eqeq(part.$type(), "str")) { + self.$push(self.$expr(part)) + } else { + self.$push("(", self.$expr(part), ")") + }; + if ($truthy(self['$recv?']())) { + return self.$wrap("(", ")") + } else { + return nil + };}, {$$arity: 1, $$s: self}); + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'DynamicSymbolNode'); + + + return self.$handle("dsym") + })($nesting[0], $$('DynamicStringNode')); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'RangeNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$children("start", "finish"); + $const_set($nesting[0], 'SIMPLE_CHILDREN_TYPES', ["int", "float", "str", "sym"].$freeze()); + + $def(self, '$compile', function $$compile() { + var self = this; + + if ($truthy(self['$compile_inline?']())) { + + self.$helper("range"); + return self.$compile_inline(); + } else { + return self.$compile_range_initialize() + } + }, 0); + + $def(self, '$compile_inline?', function $RangeNode_compile_inline$ques$11() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.$start()['$!']())) ? ($ret_or_2) : (($truthy(($ret_or_3 = self.$start().$type())) ? ($$('SIMPLE_CHILDREN_TYPES')['$include?'](self.$start().$type())) : ($ret_or_3))))))) { + + if ($truthy(($ret_or_2 = self.$finish()['$!']()))) { + return $ret_or_2 + } else { + + if ($truthy(($ret_or_3 = self.$finish().$type()))) { + return $$('SIMPLE_CHILDREN_TYPES')['$include?'](self.$finish().$type()) + } else { + return $ret_or_3 + }; + }; + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$compile_inline', function $$compile_inline() { + var self = this; + + return self.$raise($$('NotImplementedError')) + }, 0); + return $def(self, '$compile_range_initialize', function $$compile_range_initialize() { + var self = this; + + return self.$raise($$('NotImplementedError')) + }, 0); + })($nesting[0], $$('Base'), $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'InclusiveRangeNode'); + + + + self.$handle("irange"); + + $def(self, '$compile_inline', function $$compile_inline() { + var self = this; + + return self.$push("$range(", self.$expr_or_nil(self.$start()), ", ", self.$expr_or_nil(self.$finish()), ", false)") + }, 0); + return $def(self, '$compile_range_initialize', function $$compile_range_initialize() { + var self = this; + + return self.$push("Opal.Range.$new(", self.$expr_or_nil(self.$start()), ", ", self.$expr_or_nil(self.$finish()), ", false)") + }, 0); + })($nesting[0], $$('RangeNode')); + (function($base, $super) { + var self = $klass($base, $super, 'ExclusiveRangeNode'); + + + + self.$handle("erange"); + + $def(self, '$compile_inline', function $$compile_inline() { + var self = this; + + return self.$push("$range(", self.$expr_or_nil(self.$start()), ", ", self.$expr_or_nil(self.$finish()), ", true)") + }, 0); + return $def(self, '$compile_range_initialize', function $$compile_range_initialize() { + var self = this; + + return self.$push("Opal.Range.$new(", self.$expr_or_nil(self.$start()), ",", self.$expr_or_nil(self.$finish()), ", true)") + }, 0); + })($nesting[0], $$('RangeNode')); + (function($base, $super) { + var self = $klass($base, $super, 'RationalNode'); + + + + self.$handle("rational"); + self.$children("value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$push("Opal.Rational.$new(" + (self.$value().$numerator()) + ", " + (self.$value().$denominator()) + ")") + }, 0); + })($nesting[0], $$('Base')); + return (function($base, $super) { + var self = $klass($base, $super, 'ComplexNode'); + + + + self.$handle("complex"); + self.$children("value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$push("Opal.Complex.$new(" + (self.$value().$real()) + ", " + (self.$value().$imag()) + ")") + }, 0); + })($nesting[0], $$('Base')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/variables"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $send = Opal.send, $range = Opal.range, $eqeqeq = Opal.eqeqeq, $send2 = Opal.send2, $find_super = Opal.find_super; + + Opal.add_stubs('require,handle,children,irb?,compiler,top?,scope,using_irb?,push,to_s,var_name,with_temp,property,wrap,add_local,expr,value,expr?,recv?,[],name,add_ivar,self,helper,add_gvar,===,handle_global_match,handle_post_match,handle_pre_match,raise,index,stmt?,class_variable_owner,inspect'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'LocalVariableNode'); + + + + self.$handle("lvar"); + self.$children("var_name"); + + $def(self, '$using_irb?', function $LocalVariableNode_using_irb$ques$1() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$compiler()['$irb?']()))) { + return self.$scope()['$top?']() + } else { + return $ret_or_1 + } + }, 0); + return $def(self, '$compile', function $$compile() { + var self = this; + + + if (!$truthy(self['$using_irb?']())) { + return self.$push(self.$var_name().$to_s()) + }; + return $send(self, 'with_temp', [], function $$2(tmp){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (tmp == null) tmp = nil;; + self.$push(self.$property(self.$var_name().$to_s())); + return self.$wrap("((" + (tmp) + " = Opal.irb_vars", ") == null ? nil : " + (tmp) + ")");}, {$$arity: 1, $$s: self}); + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'LocalAssignNode'); + + + + self.$handle("lvasgn"); + self.$children("var_name", "value"); + + $def(self, '$using_irb?', function $LocalAssignNode_using_irb$ques$3() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$compiler()['$irb?']()))) { + return self.$scope()['$top?']() + } else { + return $ret_or_1 + } + }, 0); + return $def(self, '$compile', function $$compile() { + var self = this; + + + if ($truthy(self['$using_irb?']())) { + self.$push("Opal.irb_vars" + (self.$property(self.$var_name().$to_s())) + " = ") + } else { + + self.$add_local(self.$var_name().$to_s()); + self.$push("" + (self.$var_name()) + " = "); + }; + self.$push(self.$expr(self.$value())); + if ((($truthy(self['$recv?']()) || ($truthy(self['$expr?']()))) && ($truthy(self.$value())))) { + return self.$wrap("(", ")") + } else { + return nil + }; + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'LocalDeclareNode'); + + + + self.$handle("lvdeclare"); + self.$children("var_name"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$add_local(self.$var_name().$to_s()); + return nil; + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'InstanceVariableNode'); + + + + self.$handle("ivar"); + self.$children("name"); + + $def(self, '$var_name', function $$var_name() { + var self = this; + + return self.$name().$to_s()['$[]']($range(1, -1, false)) + }, 0); + return $def(self, '$compile', function $$compile() { + var self = this, name = nil; + + + name = self.$property(self.$var_name()); + self.$add_ivar(name); + return self.$push("" + (self.$scope().$self()) + (name)); + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'InstanceAssignNode'); + + + + self.$handle("ivasgn"); + self.$children("name", "value"); + + $def(self, '$var_name', function $$var_name() { + var self = this; + + return self.$name().$to_s()['$[]']($range(1, -1, false)) + }, 0); + return $def(self, '$compile', function $$compile() { + var self = this, name = nil; + + + name = self.$property(self.$var_name()); + self.$push("" + (self.$scope().$self()) + (name) + " = "); + self.$push(self.$expr(self.$value())); + if ((($truthy(self['$recv?']()) || ($truthy(self['$expr?']()))) && ($truthy(self.$value())))) { + return self.$wrap("(", ")") + } else { + return nil + }; + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'GlobalVariableNode'); + + + + self.$handle("gvar"); + self.$children("name"); + + $def(self, '$var_name', function $$var_name() { + var self = this; + + return self.$name().$to_s()['$[]']($range(1, -1, false)) + }, 0); + return $def(self, '$compile', function $$compile() { + var self = this, name = nil; + + + self.$helper("gvars"); + name = self.$property(self.$var_name()); + self.$add_gvar(name); + return self.$push("$gvars" + (name)); + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'BackRefNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$handle("back_ref"); + + $def(self, '$compile', function $$compile() { + var $yield = $$compile.$$p || nil, self = this, $ret_or_1 = nil; + + delete $$compile.$$p; + + self.$helper("gvars"); + if ($eqeqeq("&", ($ret_or_1 = self.$var_name()))) { + return self.$handle_global_match() + } else if ($eqeqeq("'", $ret_or_1)) { + return self.$handle_post_match() + } else if ($eqeqeq("`", $ret_or_1)) { + return self.$handle_pre_match() + } else if ($eqeqeq("+", $ret_or_1)) { + return $send2(self, $find_super(self, 'compile', $$compile, false, true), 'compile', [], $yield) + } else { + return self.$raise($$('NotImplementedError')) + }; + }, 0); + + $def(self, '$handle_global_match', function $$handle_global_match() { + var self = this; + + return $send(self, 'with_temp', [], function $$4(tmp){var self = $$4.$$s == null ? this : $$4.$$s; + + + + if (tmp == null) tmp = nil;; + return self.$push("((" + (tmp) + " = $gvars['~']) === nil ? nil : " + (tmp) + "['$[]'](0))");}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$handle_pre_match', function $$handle_pre_match() { + var self = this; + + return $send(self, 'with_temp', [], function $$5(tmp){var self = $$5.$$s == null ? this : $$5.$$s; + + + + if (tmp == null) tmp = nil;; + return self.$push("((" + (tmp) + " = $gvars['~']) === nil ? nil : " + (tmp) + ".$pre_match())");}, {$$arity: 1, $$s: self}) + }, 0); + return $def(self, '$handle_post_match', function $$handle_post_match() { + var self = this; + + return $send(self, 'with_temp', [], function $$6(tmp){var self = $$6.$$s == null ? this : $$6.$$s; + + + + if (tmp == null) tmp = nil;; + return self.$push("((" + (tmp) + " = $gvars['~']) === nil ? nil : " + (tmp) + ".$post_match())");}, {$$arity: 1, $$s: self}) + }, 0); + })($nesting[0], $$('GlobalVariableNode'), $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'GlobalAssignNode'); + + + + self.$handle("gvasgn"); + self.$children("name", "value"); + + $def(self, '$var_name', function $$var_name() { + var self = this; + + return self.$name().$to_s()['$[]']($range(1, -1, false)) + }, 0); + return $def(self, '$compile', function $$compile() { + var self = this, name = nil; + + + self.$helper("gvars"); + name = self.$property(self.$var_name()); + self.$push("$gvars" + (name) + " = "); + self.$push(self.$expr(self.$value())); + if ((($truthy(self['$recv?']()) || ($truthy(self['$expr?']()))) && ($truthy(self.$value())))) { + return self.$wrap("(", ")") + } else { + return nil + }; + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'NthrefNode'); + + + + self.$handle("nth_ref"); + self.$children("index"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$helper("gvars"); + return $send(self, 'with_temp', [], function $$7(tmp){var self = $$7.$$s == null ? this : $$7.$$s; + + + + if (tmp == null) tmp = nil;; + return self.$push("((" + (tmp) + " = $gvars['~']) === nil ? nil : " + (tmp) + "['$[]'](" + (self.$index()) + "))");}, {$$arity: 1, $$s: self}); + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'ClassVariableNode'); + + + + self.$handle("cvar"); + self.$children("name"); + return $def(self, '$compile', function $$compile() { + var self = this, tolerant = nil; + + + self.$helper("class_variable_get"); + tolerant = false; + if ($truthy(self['$stmt?']())) { + tolerant = true + }; + return self.$push("$class_variable_get(" + (self.$class_variable_owner()) + ", '" + (self.$name()) + "', " + (tolerant.$inspect()) + ")"); + }, 0); + })($nesting[0], $$('Base')); + return (function($base, $super) { + var self = $klass($base, $super, 'ClassVarAssignNode'); + + + + self.$handle("cvasgn"); + self.$children("name", "value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$helper("class_variable_set"); + return self.$push("$class_variable_set(" + (self.$class_variable_owner()) + ", '" + (self.$name()) + "', ", self.$expr(self.$value()), ")"); + }, 0); + })($nesting[0], $$('Base')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/constants"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $def = Opal.def, $const_set = Opal.const_set; + + Opal.add_stubs('require,handle,children,magical_data_const?,push,optimized_access?,helper,name,==,const_scope,s,absolute_const,top_scope,recv,eval?,compiler,relative_access,scope,nil?,eof_content,freeze,include?,base,expr,value,nesting'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ConstNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$handle("const"); + self.$children("const_scope", "name"); + + $def(self, '$compile', function $$compile() { + var self = this; + + if ($truthy(self['$magical_data_const?']())) { + return self.$push("$__END__") + } else if ($truthy(self['$optimized_access?']())) { + + self.$helper("" + (self.$name())); + return self.$push("$" + (self.$name())); + } else if ($eqeq(self.$const_scope(), self.$s("cbase"))) { + return self.$push("" + (self.$top_scope().$absolute_const()) + "('" + (self.$name()) + "')") + } else if ($truthy(self.$const_scope())) { + return self.$push("" + (self.$top_scope().$absolute_const()) + "(", self.$recv(self.$const_scope()), ", '" + (self.$name()) + "')") + } else if ($truthy(self.$compiler()['$eval?']())) { + return self.$push("" + (self.$scope().$relative_access()) + "('" + (self.$name()) + "')") + } else { + return self.$push("" + (self.$scope().$relative_access()) + "('" + (self.$name()) + "')") + } + }, 0); + + $def(self, '$magical_data_const?', function $ConstNode_magical_data_const$ques$1() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.$const_scope()['$nil?']())) ? (self.$name()['$==']("DATA")) : ($ret_or_2))))) { + return self.$compiler().$eof_content() + } else { + return $ret_or_1 + } + }, 0); + $const_set($nesting[0], 'OPTIMIZED_ACCESS_CONSTS', ["BasicObject", "Object", "Module", "Class", "Opal", "Kernel", "NilClass"].$freeze()); + return $def(self, '$optimized_access?', function $ConstNode_optimized_access$ques$2() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$const_scope()['$=='](self.$s("cbase"))))) { + return $$('OPTIMIZED_ACCESS_CONSTS')['$include?'](self.$name()) + } else { + return $ret_or_1 + } + }, 0); + })($nesting[0], $$('Base'), $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'CbaseNode'); + + + + self.$handle("cbase"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$push("'::'") + }, 0); + })($nesting[0], $$('Base')); + return (function($base, $super) { + var self = $klass($base, $super, 'ConstAssignNode'); + + + + self.$handle("casgn"); + self.$children("base", "name", "value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$helper("const_set"); + if ($truthy(self.$base())) { + return self.$push("$const_set(", self.$expr(self.$base()), ", '" + (self.$name()) + "', ", self.$expr(self.$value()), ")") + } else { + return self.$push("$const_set(" + (self.$scope().$nesting()) + "[0], '" + (self.$name()) + "', ", self.$expr(self.$value()), ")") + }; + }, 0); + })($nesting[0], $$('Base')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["corelib/comparable"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $module = Opal.module, $rb_gt = Opal.rb_gt, $rb_lt = Opal.rb_lt, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $def = Opal.def; + + Opal.add_stubs('>,<,===,raise,class,<=>,equal?'); + return (function($base) { + var self = $module($base, 'Comparable'); + + var $ret_or_1 = nil; + + + + function normalize(what) { + if (Opal.is_a(what, Opal.Integer)) { return what; } + + if ($rb_gt(what, 0)) { return 1; } + if ($rb_lt(what, 0)) { return -1; } + return 0; + } + + function fail_comparison(lhs, rhs) { + var class_name; + (($eqeqeq(nil, ($ret_or_1 = rhs)) || (($eqeqeq(true, $ret_or_1) || (($eqeqeq(false, $ret_or_1) || (($eqeqeq($$$('Integer'), $ret_or_1) || ($eqeqeq($$$('Float'), $ret_or_1))))))))) ? (class_name = rhs.$inspect()) : (class_name = rhs.$$class)) + $Kernel.$raise($$$('ArgumentError'), "comparison of " + ((lhs).$class()) + " with " + (class_name) + " failed") + } + + function cmp_or_fail(lhs, rhs) { + var cmp = (lhs)['$<=>'](rhs); + if (!$truthy(cmp)) fail_comparison(lhs, rhs); + return normalize(cmp); + } + ; + + $def(self, '$==', function $Comparable_$eq_eq$1(other) { + var self = this, cmp = nil; + + + if ($truthy(self['$equal?'](other))) { + return true + }; + + if (self["$<=>"] == Opal.Kernel["$<=>"]) { + return false; + } + + // check for infinite recursion + if (self.$$comparable) { + delete self.$$comparable; + return false; + } + ; + if (!$truthy((cmp = self['$<=>'](other)))) { + return false + }; + return normalize(cmp) == 0;; + }, 1); + + $def(self, '$>', function $Comparable_$gt$2(other) { + var self = this; + + return cmp_or_fail(self, other) > 0; + }, 1); + + $def(self, '$>=', function $Comparable_$gt_eq$3(other) { + var self = this; + + return cmp_or_fail(self, other) >= 0; + }, 1); + + $def(self, '$<', function $Comparable_$lt$4(other) { + var self = this; + + return cmp_or_fail(self, other) < 0; + }, 1); + + $def(self, '$<=', function $Comparable_$lt_eq$5(other) { + var self = this; + + return cmp_or_fail(self, other) <= 0; + }, 1); + + $def(self, '$between?', function $Comparable_between$ques$6(min, max) { + var self = this; + + + if ($rb_lt(self, min)) { + return false + }; + if ($rb_gt(self, max)) { + return false + }; + return true; + }, 2); + return $def(self, '$clamp', function $$clamp(min, max) { + var self = this; + + + + if (max == null) max = nil;; + + var c, excl; + + if (max === nil) { + // We are dealing with a new Ruby 2.7 behaviour that we are able to + // provide a single Range argument instead of 2 Comparables. + + if (!Opal.is_a(min, Opal.Range)) { + $Kernel.$raise($$$('TypeError'), "wrong argument type " + (min.$class()) + " (expected Range)") + } + + excl = min.excl; + max = min.end; + min = min.begin; + + if (max !== nil && excl) { + $Kernel.$raise($$$('ArgumentError'), "cannot clamp with an exclusive range") + } + } + + if (min !== nil && max !== nil && cmp_or_fail(min, max) > 0) { + $Kernel.$raise($$$('ArgumentError'), "min argument must be smaller than max argument") + } + + if (min !== nil) { + c = cmp_or_fail(self, min); + + if (c == 0) return self; + if (c < 0) return min; + } + + if (max !== nil) { + c = cmp_or_fail(self, max); + + if (c > 0) return max; + } + + return self; + ; + }, -2); + })('::') +}; + +Opal.modules["pathname"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $const_set = Opal.const_set, $regexp = Opal.regexp, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $def = Opal.def, $defs = Opal.defs, $to_ary = Opal.to_ary, $send = Opal.send, $to_a = Opal.to_a, $neqeq = Opal.neqeq, $rb_plus = Opal.rb_plus, $not = Opal.not, $alias = Opal.alias, $module = Opal.module; + + Opal.add_stubs('require,include,quote,===,to_s,path,respond_to?,to_path,is_a?,nil?,raise,class,==,new,pwd,attr_reader,!,relative?,chop_basename,basename,=~,source,[],rindex,sub,absolute?,expand_path,plus,unshift,length,!=,empty?,first,shift,+,join,dirname,pop,reverse_each,directory?,extname,<=>,nonzero?,proc,casecmp,cleanpath,inspect,include?,fill,map,entries'); + + self.$require("corelib/comparable"); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Pathname'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.path = nil; + + self.$include($$('Comparable')); + $const_set($nesting[0], 'SEPARATOR_PAT', $regexp([$$('Regexp').$quote($$$($$('File'), 'SEPARATOR'))])); + + $def(self, '$initialize', function $$initialize(path) { + var self = this; + + + if ($eqeqeq($$('Pathname'), path)) { + self.path = path.$path().$to_s() + } else if ($truthy(path['$respond_to?']("to_path"))) { + self.path = path.$to_path() + } else if ($truthy(path['$is_a?']($$('String')))) { + self.path = path + } else if ($truthy(path['$nil?']())) { + self.$raise($$('TypeError'), "no implicit conversion of nil into String") + } else { + self.$raise($$('TypeError'), "no implicit conversion of " + (path.$class()) + " into String") + }; + if ($eqeq(self.path, "\u0000")) { + return self.$raise($$('ArgumentError')) + } else { + return nil + }; + }, 1); + $defs(self, '$pwd', function $$pwd() { + var self = this; + + return self.$new($$('Dir').$pwd()) + }, 0); + self.$attr_reader("path"); + + $def(self, '$==', function $Pathname_$eq_eq$1(other) { + var self = this; + + return other.$path()['$=='](self.path) + }, 1); + + $def(self, '$absolute?', function $Pathname_absolute$ques$2() { + var self = this; + + return self['$relative?']()['$!']() + }, 0); + + $def(self, '$relative?', function $Pathname_relative$ques$3() { + var $a, $b, $c, self = this, path = nil, r = nil; + + + path = self.path; + while ($truthy((r = self.$chop_basename(path)))) { + $c = r, $b = $to_ary($c), (path = ($b[0] == null ? nil : $b[0])), $c + }; + return path['$=='](""); + }, 0); + + $def(self, '$chop_basename', function $$chop_basename(path) { + var base = nil; + + + base = $$('File').$basename(path); + if ($truthy($$('Regexp').$new("^" + ($$$($$('Pathname'), 'SEPARATOR_PAT').$source()) + "?$")['$=~'](base))) { + return nil + } else { + return [path['$[]'](0, path.$rindex(base)), base] + }; + }, 1); + + $def(self, '$root?', function $Pathname_root$ques$4() { + var self = this; + + return self.path['$==']("/") + }, 0); + + $def(self, '$parent', function $$parent() { + var self = this, new_path = nil; + + + new_path = self.path.$sub(/\/([^\/]+\/?$)/, ""); + if ($eqeq(new_path, "")) { + new_path = ($truthy(self['$absolute?']()) ? ("/") : (".")) + }; + return $$('Pathname').$new(new_path); + }, 0); + + $def(self, '$sub', function $$sub($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $$('Pathname').$new($send(self.path, 'sub', $to_a(args))); + }, -1); + + $def(self, '$cleanpath', function $$cleanpath() { + var self = this; + + return Opal.normalize(self.path) + }, 0); + + $def(self, '$to_path', function $$to_path() { + var self = this; + + return self.path + }, 0); + + $def(self, '$hash', function $$hash() { + var self = this; + + return self.path + }, 0); + + $def(self, '$expand_path', function $$expand_path() { + var self = this; + + return $$('Pathname').$new($$('File').$expand_path(self.path)) + }, 0); + + $def(self, '$+', function $Pathname_$plus$5(other) { + var self = this; + + + if (!$eqeqeq($$('Pathname'), other)) { + other = $$('Pathname').$new(other) + }; + return $$('Pathname').$new(self.$plus(self.path, other.$to_s())); + }, 1); + + $def(self, '$plus', function $$plus(path1, path2) { + var $a, $b, $c, self = this, prefix2 = nil, index_list2 = nil, basename_list2 = nil, r2 = nil, basename2 = nil, prefix1 = nil, $ret_or_1 = nil, r1 = nil, basename1 = nil, suffix2 = nil; + + + prefix2 = path2; + index_list2 = []; + basename_list2 = []; + while ($truthy((r2 = self.$chop_basename(prefix2)))) { + + $c = r2, $b = $to_ary($c), (prefix2 = ($b[0] == null ? nil : $b[0])), (basename2 = ($b[1] == null ? nil : $b[1])), $c; + index_list2.$unshift(prefix2.$length()); + basename_list2.$unshift(basename2); + }; + if ($neqeq(prefix2, "")) { + return path2 + }; + prefix1 = path1; + while ($truthy(true)) { + + while ($truthy(($truthy(($ret_or_1 = basename_list2['$empty?']()['$!']())) ? (basename_list2.$first()['$=='](".")) : ($ret_or_1)))) { + + index_list2.$shift(); + basename_list2.$shift(); + }; + if (!$truthy((r1 = self.$chop_basename(prefix1)))) { + break; + }; + $c = r1, $b = $to_ary($c), (prefix1 = ($b[0] == null ? nil : $b[0])), (basename1 = ($b[1] == null ? nil : $b[1])), $c; + if ($eqeq(basename1, ".")) { + continue; + }; + if ((($eqeq(basename1, "..") || ($truthy(basename_list2['$empty?']()))) || ($neqeq(basename_list2.$first(), "..")))) { + + prefix1 = $rb_plus(prefix1, basename1); + break;; + }; + index_list2.$shift(); + basename_list2.$shift(); + }; + r1 = self.$chop_basename(prefix1); + if (($not(r1) && ($truthy($regexp([$$('SEPARATOR_PAT')])['$=~']($$('File').$basename(prefix1)))))) { + while ($truthy(($truthy(($ret_or_1 = basename_list2['$empty?']()['$!']())) ? (basename_list2.$first()['$==']("..")) : ($ret_or_1)))) { + + index_list2.$shift(); + basename_list2.$shift(); + } + }; + if ($not(basename_list2['$empty?']())) { + + suffix2 = path2['$[]'](Opal.Range.$new(index_list2.$first(), -1, false)); + if ($truthy(r1)) { + return $$('File').$join(prefix1, suffix2) + } else { + return $rb_plus(prefix1, suffix2) + }; + } else if ($truthy(r1)) { + return prefix1 + } else { + return $$('File').$dirname(prefix1) + }; + }, 2); + + $def(self, '$join', function $$join($a) {try { + + var $post_args, args, self = this, result = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if ($truthy(args['$empty?']())) { + return self + }; + result = args.$pop(); + if (!$eqeqeq($$('Pathname'), result)) { + result = $$('Pathname').$new(result) + }; + if ($truthy(result['$absolute?']())) { + return result + }; + $send(args, 'reverse_each', [], function $$6(arg){ + + + if (arg == null) arg = nil;; + if (!$eqeqeq($$('Pathname'), arg)) { + arg = $$('Pathname').$new(arg) + }; + result = $rb_plus(arg, result); + if ($truthy(result['$absolute?']())) { + Opal.ret(result) + } else { + return nil + };}, 1); + return $rb_plus(self, result); + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, -1); + + $def(self, '$split', function $$split() { + var self = this; + + return [self.$dirname(), self.$basename()] + }, 0); + + $def(self, '$dirname', function $$dirname() { + var self = this; + + return $$('Pathname').$new($$('File').$dirname(self.path)) + }, 0); + + $def(self, '$basename', function $$basename() { + var self = this; + + return $$('Pathname').$new($$('File').$basename(self.path)) + }, 0); + + $def(self, '$directory?', function $Pathname_directory$ques$7() { + var self = this; + + return $$('File')['$directory?'](self.path) + }, 0); + + $def(self, '$extname', function $$extname() { + var self = this; + + return $$('File').$extname(self.path) + }, 0); + + $def(self, '$<=>', function $Pathname_$lt_eq_gt$8(other) { + var self = this; + + return self.$path()['$<=>'](other.$path()) + }, 1); + $const_set($nesting[0], 'SAME_PATHS', ($truthy($$$($$('File'), 'FNM_SYSCASE')['$nonzero?']()) ? ($send(self, 'proc', [], function $Pathname$9(a, b){ + + + if (a == null) a = nil;; + + if (b == null) b = nil;; + return a.$casecmp(b)['$=='](0);}, 2)) : ($send(self, 'proc', [], function $Pathname$10(a, b){ + + + if (a == null) a = nil;; + + if (b == null) b = nil;; + return a['$=='](b);}, 2)))); + + $def(self, '$relative_path_from', function $$relative_path_from(base_directory) { + var $a, $b, $c, self = this, dest_directory = nil, dest_prefix = nil, dest_names = nil, r = nil, basename = nil, base_prefix = nil, base_names = nil, $ret_or_1 = nil, $ret_or_2 = nil, relpath_names = nil; + + + dest_directory = self.$cleanpath().$to_s(); + base_directory = base_directory.$cleanpath().$to_s(); + dest_prefix = dest_directory; + dest_names = []; + while ($truthy((r = self.$chop_basename(dest_prefix)))) { + + $c = r, $b = $to_ary($c), (dest_prefix = ($b[0] == null ? nil : $b[0])), (basename = ($b[1] == null ? nil : $b[1])), $c; + if ($neqeq(basename, ".")) { + dest_names.$unshift(basename) + }; + }; + base_prefix = base_directory; + base_names = []; + while ($truthy((r = self.$chop_basename(base_prefix)))) { + + $c = r, $b = $to_ary($c), (base_prefix = ($b[0] == null ? nil : $b[0])), (basename = ($b[1] == null ? nil : $b[1])), $c; + if ($neqeq(basename, ".")) { + base_names.$unshift(basename) + }; + }; + if (!$truthy($$('SAME_PATHS')['$[]'](dest_prefix, base_prefix))) { + self.$raise($$('ArgumentError'), "different prefix: " + (dest_prefix.$inspect()) + " and " + (base_directory.$inspect())) + }; + while ($truthy(($truthy(($ret_or_1 = ($truthy(($ret_or_2 = dest_names['$empty?']()['$!']())) ? (base_names['$empty?']()['$!']()) : ($ret_or_2)))) ? ($$('SAME_PATHS')['$[]'](dest_names.$first(), base_names.$first())) : ($ret_or_1)))) { + + dest_names.$shift(); + base_names.$shift(); + }; + if ($truthy(base_names['$include?'](".."))) { + self.$raise($$('ArgumentError'), "base_directory has ..: " + (base_directory.$inspect())) + }; + base_names.$fill(".."); + relpath_names = $rb_plus(base_names, dest_names); + if ($truthy(relpath_names['$empty?']())) { + return $$('Pathname').$new(".") + } else { + return $$('Pathname').$new($send($$('File'), 'join', $to_a(relpath_names))) + }; + }, 1); + + $def(self, '$entries', function $$entries() { + var self = this; + + return $send($$('Dir').$entries(self.path), 'map', [], function $$11(f){var self = $$11.$$s == null ? this : $$11.$$s; + + + + if (f == null) f = nil;; + return self.$class().$new(f);}, {$$arity: 1, $$s: self}) + }, 0); + $alias(self, "===", "=="); + $alias(self, "eql?", "=="); + $alias(self, "to_s", "to_path"); + return $alias(self, "to_str", "to_path"); + })($nesting[0], null, $nesting); + return (function($base, $parent_nesting) { + var self = $module($base, 'Kernel'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$Pathname', function $$Pathname(path) { + + return $$('Pathname').$new(path) + }, 1) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/rewriters/break_finder"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $alias = Opal.alias; + + Opal.add_stubs('require'); + + self.$require("opal/rewriter"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Rewriters'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'BreakFinder'); + + var $proto = self.$$prototype; + + $proto.found_break = nil; + + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return (self.found_break = false) + }, 0); + + $def(self, '$found_break?', function $BreakFinder_found_break$ques$1() { + var self = this; + + return self.found_break + }, 0); + + $def(self, '$on_break', function $$on_break(node) { + var self = this; + + + self.found_break = true; + return node; + }, 1); + + $def(self, '$stop_lookup', function $$stop_lookup(node) { + + return nil + }, 1); + $alias(self, "on_for", "stop_lookup"); + $alias(self, "on_while", "stop_lookup"); + $alias(self, "on_while_post", "stop_lookup"); + $alias(self, "on_until", "stop_lookup"); + $alias(self, "on_until_post", "stop_lookup"); + return $alias(self, "on_block", "stop_lookup"); + })($nesting[0], $$$($$$($$('Opal'), 'Rewriters'), 'Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/call"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $hash2 = Opal.hash2, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $defs = Opal.defs, $send2 = Opal.send2, $find_super = Opal.find_super, $slice = Opal.slice, $truthy = Opal.truthy, $def = Opal.def, $eqeq = Opal.eqeq, $rb_plus = Opal.rb_plus, $not = Opal.not, $neqeq = Opal.neqeq, $eqeqeq = Opal.eqeqeq, $to_ary = Opal.to_ary, $Opal = Opal.Opal, $range = Opal.range; + + Opal.add_stubs('require,handle,attr_reader,freeze,[]=,-,define_method,to_proc,include?,type,s,handle_special,record_method?,<<,method_calls,compiler,to_sym,meth,using_eval?,compile_eval_var,using_irb?,compile_irb_var,default_compile,private,iter,new,process,found_break?,splat?,!,empty?,collect_refinements_temps,scope,auto_await?,push,await_encountered=,invoke_using_refinement?,compile_using_refined_send,invoke_using_send?,compile_using_send,compile_simple_call_chain,compile_break_catcher,helper,compile_receiver,compile_method_name,compile_arguments,compile_block_pass,compile_refinements,recv,receiver_sexp,expr,arglist,children,map,iter_has_break?,unshift,line,method_jsid,any?,==,recvr,mid_to_jsid,to_s,with_temp,intern,irb?,top?,variable_like?,eval?,scope_variables,nil?,updated,async_await,!=,match?,method,arity,[],each,add_special,call,inline_operators?,fragment,resolve,requires,file,dirname,cleanpath,join,Pathname,self,inspect,length,warning,autoloads,required_trees,force_encoding,encoding,+,handle_block_given_call,def?,mid,module_name,count,accepts_using?,using_refinement,first,refinements_temp,arity_check?,defines_lambda,push_nesting?,nesting,new_temp,scope_locals,source_location,size,last,dynamic_require_severity,handle_part,===,is_a?,expand_path,split,error,each_with_object,pop'); + + self.$require("set"); + self.$require("pathname"); + self.$require("opal/nodes/base"); + self.$require("opal/rewriters/break_finder"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'CallNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.sexp = $proto.compiler = nil; + + self.$handle("send"); + self.$attr_reader("recvr", "meth", "arglist", "iter"); + $const_set($nesting[0], 'SPECIALS', $hash2([], {})); + $const_set($nesting[0], 'OPERATORS', $hash2(["+", "-", "*", "/", "<", "<=", ">", ">="], {"+": "plus", "-": "minus", "*": "times", "/": "divide", "<": "lt", "<=": "le", ">": "gt", ">=": "ge"}).$freeze()); + $defs(self, '$add_special', function $$add_special(name, options) { + var handler = $$add_special.$$p || nil, self = this, $writer = nil; + + delete $$add_special.$$p; + + ; + + if (options == null) options = $hash2([], {});; + + $writer = [name, options]; + $send($$('SPECIALS'), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return $send(self, 'define_method', ["handle_" + (name)], handler.$to_proc()); + }, -2); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $b, $c, $yield = $$initialize.$$p || nil, self = this, args = nil, rest = nil, last_arg = nil; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + $b = [].concat($to_a(self.sexp)), (self.recvr = ($b[0] == null ? nil : $b[0])), (self.meth = ($b[1] == null ? nil : $b[1])), (args = $slice.call($b, 2)), $b; + $b = [].concat($to_a(args)), $c = $b.length - 1, $c = ($c < 0) ? 0 : $c, (rest = $slice.call($b, 0, $c)), (last_arg = ($b[$c] == null ? nil : $b[$c])), $b; + if (($truthy(last_arg) && ($truthy(["iter", "block_pass"]['$include?'](last_arg.$type()))))) { + + self.iter = last_arg; + args = rest; + } else { + self.iter = nil + }; + return (self.arglist = $send(self, 's', ["arglist"].concat($to_a(args)))); + }, -1); + + $def(self, '$compile', function $$compile() {try { + + var self = this; + + return $send(self, 'handle_special', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s; + + + if ($truthy(self['$record_method?']())) { + self.$compiler().$method_calls()['$<<'](self.$meth().$to_sym()) + }; + if ($truthy(self['$using_eval?']())) { + Opal.ret(self.$compile_eval_var()) + }; + if ($truthy(self['$using_irb?']())) { + Opal.ret(self.$compile_irb_var()) + }; + return self.$default_compile();}, {$$arity: 0, $$s: self}) + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 0); + self.$private(); + + $def(self, '$iter_has_break?', function $CallNode_iter_has_break$ques$2() { + var self = this, finder = nil; + + + if (!$truthy(self.$iter())) { + return false + }; + finder = $$$($$$($$('Opal'), 'Rewriters'), 'BreakFinder').$new(); + finder.$process(self.$iter()); + return finder['$found_break?'](); + }, 0); + + $def(self, '$invoke_using_send?', function $CallNode_invoke_using_send$ques$3() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$iter()))) { + return $ret_or_1 + } else { + return self['$splat?']() + } + }, 0); + + $def(self, '$invoke_using_refinement?', function $CallNode_invoke_using_refinement$ques$4() { + var self = this; + + return self.$scope().$scope().$collect_refinements_temps()['$empty?']()['$!']() + }, 0); + + $def(self, '$default_compile', function $$default_compile() { + var self = this, $writer = nil; + + + if ($truthy(self['$auto_await?']())) { + + self.$push("await "); + + $writer = [true]; + $send(self.$scope(), 'await_encountered=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + }; + if ($truthy(self['$invoke_using_refinement?']())) { + self.$compile_using_refined_send() + } else if ($truthy(self['$invoke_using_send?']())) { + self.$compile_using_send() + } else { + self.$compile_simple_call_chain() + }; + return self.$compile_break_catcher(); + }, 0); + + $def(self, '$compile_using_send', function $$compile_using_send() { + var self = this; + + + self.$helper("send"); + self.$push("$send("); + self.$compile_receiver(); + self.$compile_method_name(); + self.$compile_arguments(); + self.$compile_block_pass(); + return self.$push(")"); + }, 0); + + $def(self, '$compile_using_refined_send', function $$compile_using_refined_send() { + var self = this; + + + self.$helper("refined_send"); + self.$push("$refined_send("); + self.$compile_refinements(); + self.$compile_receiver(); + self.$compile_method_name(); + self.$compile_arguments(); + self.$compile_block_pass(); + return self.$push(")"); + }, 0); + + $def(self, '$compile_receiver', function $$compile_receiver() { + var self = this; + + return self.$push(self.$recv(self.$receiver_sexp())) + }, 0); + + $def(self, '$compile_method_name', function $$compile_method_name() { + var self = this; + + return self.$push(", '" + (self.$meth()) + "'") + }, 0); + + $def(self, '$compile_arguments', function $$compile_arguments() { + var self = this; + + + self.$push(", "); + if ($truthy(self['$splat?']())) { + return self.$push(self.$expr(self.$arglist())) + } else if ($truthy(self.$arglist().$children()['$empty?']())) { + return self.$push("[]") + } else { + return self.$push("[", self.$expr(self.$arglist()), "]") + }; + }, 0); + + $def(self, '$compile_block_pass', function $$compile_block_pass() { + var self = this; + + if ($truthy(self.$iter())) { + return self.$push(", ", self.$expr(self.$iter())) + } else { + return nil + } + }, 0); + + $def(self, '$compile_refinements', function $$compile_refinements() { + var self = this, refinements = nil; + + + refinements = $send(self.$scope().$collect_refinements_temps(), 'map', [], function $$5(i){var self = $$5.$$s == null ? this : $$5.$$s; + + + + if (i == null) i = nil;; + return self.$s("js_tmp", i);}, {$$arity: 1, $$s: self}); + return self.$push(self.$expr($send(self, 's', ["array"].concat($to_a(refinements)))), ", "); + }, 0); + + $def(self, '$compile_break_catcher', function $$compile_break_catcher() { + var self = this; + + if ($truthy(self['$iter_has_break?']())) { + + self.$unshift("return "); + self.$unshift("(function(){var $brk = Opal.new_brk(); try {"); + return self.$line("} catch (err) { if (err === $brk) { return err.$v } else { throw err } }})()"); + } else { + return nil + } + }, 0); + + $def(self, '$compile_simple_call_chain', function $$compile_simple_call_chain() { + var self = this; + + return self.$push(self.$recv(self.$receiver_sexp()), self.$method_jsid(), "(", self.$expr(self.$arglist()), ")") + }, 0); + + $def(self, '$splat?', function $CallNode_splat$ques$6() { + var self = this; + + return $send(self.$arglist().$children(), 'any?', [], function $$7(a){ + + + if (a == null) a = nil;; + return a.$type()['$==']("splat");}, 1) + }, 0); + + $def(self, '$receiver_sexp', function $$receiver_sexp() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$recvr()))) { + return $ret_or_1 + } else { + return self.$s("self") + } + }, 0); + + $def(self, '$method_jsid', function $$method_jsid() { + var self = this; + + return self.$mid_to_jsid(self.$meth().$to_s()) + }, 0); + + $def(self, '$record_method?', function $CallNode_record_method$ques$8() { + + return true + }, 0); + + $def(self, '$compile_irb_var', function $$compile_irb_var() { + var self = this; + + return $send(self, 'with_temp', [], function $$9(tmp){var self = $$9.$$s == null ? this : $$9.$$s, lvar = nil, call = nil; + + + + if (tmp == null) tmp = nil;; + lvar = self.$meth(); + call = self.$s("send", self.$s("self"), self.$meth().$intern(), self.$s("arglist")); + return self.$push("((" + (tmp) + " = Opal.irb_vars." + (lvar) + ") == null ? ", self.$expr(call), " : " + (tmp) + ")");}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$compile_eval_var', function $$compile_eval_var() { + var self = this; + + return self.$push(self.$meth().$to_s()) + }, 0); + + $def(self, '$using_irb?', function $CallNode_using_irb$ques$10() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.compiler['$irb?']())) ? (self.$scope()['$top?']()) : ($ret_or_2))))) { + return self['$variable_like?']() + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$using_eval?', function $CallNode_using_eval$ques$11() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.compiler['$eval?']())) ? (self.$scope()['$top?']()) : ($ret_or_2))))) { + return self.compiler.$scope_variables()['$include?'](self.$meth()) + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$variable_like?', function $CallNode_variable_like$ques$12() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.$arglist()['$=='](self.$s("arglist")))) ? (self.$recvr()['$nil?']()) : ($ret_or_2))))) { + return self.$iter()['$nil?']() + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$sexp_with_arglist', function $$sexp_with_arglist() { + var self = this; + + return self.sexp.$updated(nil, [self.$recvr(), self.$meth(), self.$arglist()]) + }, 0); + + $def(self, '$auto_await?', function $CallNode_auto_await$ques$13() { + var self = this, awaited_set = nil, $ret_or_1 = nil, $ret_or_2 = nil; + + + awaited_set = self.$compiler().$async_await(); + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = awaited_set)) ? (awaited_set['$!='](true)) : ($ret_or_2))))) { + return awaited_set['$match?'](self.$meth().$to_s()) + } else { + return $ret_or_1 + }; + }, 0); + + $def(self, '$handle_special', function $$handle_special() { + var compile_default = $$handle_special.$$p || nil, self = this, method = nil; + + delete $$handle_special.$$p; + + ; + if ($truthy($$('SPECIALS')['$include?'](self.$meth()))) { + + method = self.$method("handle_" + (self.$meth())); + if ($eqeq(method.$arity(), 1)) { + return method['$[]'](compile_default) + } else { + return method['$[]']() + }; + } else { + return Opal.yieldX(compile_default, []); + }; + }, 0); + $send($$('OPERATORS'), 'each', [], function $CallNode$14(operator, name){var self = $CallNode$14.$$s == null ? this : $CallNode$14.$$s; + + + + if (operator == null) operator = nil;; + + if (name == null) name = nil;; + return $send(self, 'add_special', [operator.$to_sym()], function $$15(compile_default){var $a, self = $$15.$$s == null ? this : $$15.$$s, lhs = nil, rhs = nil; + + + + if (compile_default == null) compile_default = nil;; + if ($truthy(self['$invoke_using_refinement?']())) { + return compile_default.$call() + } else if ($truthy(self.$compiler()['$inline_operators?']())) { + + if ($truthy(self['$record_method?']())) { + self.$compiler().$method_calls()['$<<'](operator.$to_sym()) + }; + self.$helper("rb_" + (name)); + $a = [self.$expr(self.$recvr()), self.$expr(self.$arglist())], (lhs = $a[0]), (rhs = $a[1]), $a; + self.$push(self.$fragment("$rb_" + (name) + "(")); + self.$push(lhs); + self.$push(self.$fragment(", ")); + self.$push(rhs); + return self.$push(self.$fragment(")")); + } else { + return compile_default.$call() + };}, {$$arity: 1, $$s: self});}, {$$arity: 2, $$s: self}); + $send(self, 'add_special', ["require"], function $CallNode$16(compile_default){var self = $CallNode$16.$$s == null ? this : $CallNode$16.$$s, str = nil; + + + + if (compile_default == null) compile_default = nil;; + str = $$('DependencyResolver').$new(self.$compiler(), self.$arglist().$children()['$[]'](0)).$resolve(); + if (!$truthy(str['$nil?']())) { + self.$compiler().$requires()['$<<'](str) + }; + return compile_default.$call();}, {$$arity: 1, $$s: self}); + $send(self, 'add_special', ["require_relative"], function $CallNode$17(){var self = $CallNode$17.$$s == null ? this : $CallNode$17.$$s, arg = nil, file = nil, dir = nil; + + + arg = self.$arglist().$children()['$[]'](0); + file = self.$compiler().$file(); + if ($eqeq(arg.$type(), "str")) { + + dir = $$('File').$dirname(file); + self.$compiler().$requires()['$<<'](self.$Pathname(dir).$join(arg.$children()['$[]'](0)).$cleanpath().$to_s()); + }; + self.$push(self.$fragment("" + (self.$scope().$self()) + ".$require(" + (file.$inspect()) + "+ '/../' + ")); + self.$push(self.$process(self.$arglist())); + return self.$push(self.$fragment(")"));}, {$$arity: 0, $$s: self}); + $send(self, 'add_special', ["autoload"], function $CallNode$18(compile_default){var self = $CallNode$18.$$s == null ? this : $CallNode$18.$$s, args = nil, str = nil; + + + + if (compile_default == null) compile_default = nil;; + args = self.$arglist().$children(); + if (($eqeq(args.$length(), 2) && ($eqeq(args['$[]'](0).$type(), "sym")))) { + + str = $$('DependencyResolver').$new(self.$compiler(), args['$[]'](1), "ignore").$resolve(); + if ($truthy(str['$nil?']())) { + self.$compiler().$warning("File for autoload of constant '" + (args['$[]'](0).$children()['$[]'](0)) + "' could not be bundled!") + } else { + + self.$compiler().$requires()['$<<'](str); + self.$compiler().$autoloads()['$<<'](str); + }; + }; + return compile_default.$call();}, {$$arity: 1, $$s: self}); + $send(self, 'add_special', ["require_tree"], function $CallNode$19(compile_default){var $a, self = $CallNode$19.$$s == null ? this : $CallNode$19.$$s, first_arg = nil, rest = nil, relative_path = nil, dir = nil, full_path = nil; + + + + if (compile_default == null) compile_default = nil;; + $a = [].concat($to_a(self.$arglist().$children())), (first_arg = ($a[0] == null ? nil : $a[0])), (rest = $slice.call($a, 1)), $a; + if ($eqeq(first_arg.$type(), "str")) { + + relative_path = first_arg.$children()['$[]'](0); + self.$compiler().$required_trees()['$<<'](relative_path); + dir = $$('File').$dirname(self.$compiler().$file()); + full_path = self.$Pathname(dir).$join(relative_path).$cleanpath().$to_s(); + full_path.$force_encoding(relative_path.$encoding()); + first_arg = first_arg.$updated(nil, [full_path]); + }; + self.arglist = self.$arglist().$updated(nil, $rb_plus([first_arg], rest)); + return compile_default.$call();}, {$$arity: 1, $$s: self}); + $send(self, 'add_special', ["block_given?"], function $CallNode$20(){var self = $CallNode$20.$$s == null ? this : $CallNode$20.$$s; + if (self.sexp == null) self.sexp = nil; + + return self.$push(self.$compiler().$handle_block_given_call(self.sexp))}, {$$arity: 0, $$s: self}); + $send(self, 'add_special', ["__callee__"], function $CallNode$21(){var self = $CallNode$21.$$s == null ? this : $CallNode$21.$$s; + + if ($truthy(self.$scope()['$def?']())) { + return self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect())) + } else { + return self.$push(self.$fragment("nil")) + }}, {$$arity: 0, $$s: self}); + $send(self, 'add_special', ["__method__"], function $CallNode$22(){var self = $CallNode$22.$$s == null ? this : $CallNode$22.$$s; + + if ($truthy(self.$scope()['$def?']())) { + return self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect())) + } else { + return self.$push(self.$fragment("nil")) + }}, {$$arity: 0, $$s: self}); + $send(self, 'add_special', ["__dir__"], function $CallNode$23(){var self = $CallNode$23.$$s == null ? this : $CallNode$23.$$s; + + return self.$push($$('File').$dirname($$$($$('Opal'), 'Compiler').$module_name(self.$compiler().$file())).$inspect())}, {$$arity: 0, $$s: self}); + $send(self, 'add_special', ["using"], function $CallNode$24(compile_default){var self = $CallNode$24.$$s == null ? this : $CallNode$24.$$s; + + + + if (compile_default == null) compile_default = nil;; + if (($truthy(self.$scope()['$accepts_using?']()) && ($eqeq(self.$arglist().$children().$count(), 1)))) { + return self.$using_refinement(self.$arglist().$children().$first()) + } else { + return compile_default.$call() + };}, {$$arity: 1, $$s: self}); + + $def(self, '$using_refinement', function $$using_refinement(arg) { + var $a, self = this, prev = nil, curr = nil; + + + $a = [].concat($to_a(self.$scope().$refinements_temp())), (prev = ($a[0] == null ? nil : $a[0])), (curr = ($a[1] == null ? nil : $a[1])), $a; + if ($truthy(prev)) { + return self.$push("(" + (curr) + " = " + (prev) + ".slice(), " + (curr) + ".push(", self.$expr(arg), "), " + (self.$scope().$self()) + ")") + } else { + return self.$push("(" + (curr) + " = [", self.$expr(arg), "], " + (self.$scope().$self()) + ")") + }; + }, 1); + $send(self, 'add_special', ["debugger"], function $CallNode$25(){var self = $CallNode$25.$$s == null ? this : $CallNode$25.$$s; + + return self.$push(self.$fragment("debugger"))}, {$$arity: 0, $$s: self}); + $send(self, 'add_special', ["__OPAL_COMPILER_CONFIG__"], function $CallNode$26(){var self = $CallNode$26.$$s == null ? this : $CallNode$26.$$s; + + return self.$push(self.$fragment("Opal.hash({ arity_check: " + (self.$compiler()['$arity_check?']()) + " })"))}, {$$arity: 0, $$s: self}); + $send(self, 'add_special', ["lambda"], function $CallNode$27(compile_default){var self = $CallNode$27.$$s == null ? this : $CallNode$27.$$s; + + + + if (compile_default == null) compile_default = nil;; + return $send(self.$scope(), 'defines_lambda', [], function $$28(){ + return compile_default.$call()}, 0);}, {$$arity: 1, $$s: self}); + $send(self, 'add_special', ["nesting"], function $CallNode$29(compile_default){var self = $CallNode$29.$$s == null ? this : $CallNode$29.$$s, push_nesting = nil; + + + + if (compile_default == null) compile_default = nil;; + push_nesting = self['$push_nesting?'](); + if ($truthy(push_nesting)) { + self.$push("(Opal.Module.$$nesting = " + (self.$scope().$nesting()) + ", ") + }; + compile_default.$call(); + if ($truthy(push_nesting)) { + return self.$push(")") + } else { + return nil + };}, {$$arity: 1, $$s: self}); + $send(self, 'add_special', ["constants"], function $CallNode$30(compile_default){var self = $CallNode$30.$$s == null ? this : $CallNode$30.$$s, push_nesting = nil; + + + + if (compile_default == null) compile_default = nil;; + push_nesting = self['$push_nesting?'](); + if ($truthy(push_nesting)) { + self.$push("(Opal.Module.$$nesting = " + (self.$scope().$nesting()) + ", ") + }; + compile_default.$call(); + if ($truthy(push_nesting)) { + return self.$push(")") + } else { + return nil + };}, {$$arity: 1, $$s: self}); + $send(self, 'add_special', ["eval"], function $CallNode$31(compile_default){var self = $CallNode$31.$$s == null ? this : $CallNode$31.$$s, temp = nil, scope_variables = nil; + + + + if (compile_default == null) compile_default = nil;; + if (($neqeq(self.$arglist().$children().$length(), 1) || ($not([self.$s("self"), nil]['$include?'](self.$recvr()))))) { + return compile_default.$call(); + }; + self.$scope().$nesting(); + temp = self.$scope().$new_temp(); + scope_variables = $send(self.$scope().$scope_locals(), 'map', [], "to_s".$to_proc()).$inspect(); + self.$push("(" + (temp) + " = ", self.$expr(self.$arglist())); + self.$push(", typeof Opal.compile === 'function' ? eval(Opal.compile(" + (temp)); + self.$push(", {scope_variables: ", scope_variables); + self.$push(", arity_check: " + (self.$compiler()['$arity_check?']()) + ", file: '(eval)', eval: true})) : "); + return self.$push("" + (self.$scope().$self()) + ".$eval(" + (temp) + "))");}, {$$arity: 1, $$s: self}); + $send(self, 'add_special', ["local_variables"], function $CallNode$32(compile_default){var self = $CallNode$32.$$s == null ? this : $CallNode$32.$$s, scope_variables = nil; + + + + if (compile_default == null) compile_default = nil;; + if (!$truthy([self.$s("self"), nil]['$include?'](self.$recvr()))) { + return compile_default.$call(); + }; + scope_variables = $send(self.$scope().$scope_locals(), 'map', [], "to_s".$to_proc()).$inspect(); + return self.$push(scope_variables);}, {$$arity: 1, $$s: self}); + $send(self, 'add_special', ["binding"], function $CallNode$33(compile_default){var self = $CallNode$33.$$s == null ? this : $CallNode$33.$$s; + + + + if (compile_default == null) compile_default = nil;; + if (!$truthy(self.$recvr()['$nil?']())) { + return compile_default.$call(); + }; + self.$scope().$nesting(); + self.$push("Opal.Binding.$new("); + self.$push(" function($code, $value) {"); + self.$push(" if (typeof $value === 'undefined') {"); + self.$push(" return eval($code);"); + self.$push(" }"); + self.$push(" else {"); + self.$push(" return eval($code + ' = $value');"); + self.$push(" }"); + self.$push(" },"); + self.$push(" ", $send(self.$scope().$scope_locals(), 'map', [], "to_s".$to_proc()).$inspect(), ","); + self.$push(" ", self.$scope().$self(), ","); + self.$push(" ", self.$source_location()); + return self.$push(")");}, {$$arity: 1, $$s: self}); + $send(self, 'add_special', ["__await__"], function $CallNode$34(compile_default){var self = $CallNode$34.$$s == null ? this : $CallNode$34.$$s, $writer = nil; + + + + if (compile_default == null) compile_default = nil;; + if ($truthy(self.$compiler().$async_await())) { + + self.$push(self.$fragment("(await (")); + self.$push(self.$process(self.$recvr())); + self.$push(self.$fragment("))")); + + $writer = [true]; + $send(self.$scope(), 'await_encountered=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + } else { + return compile_default.$call() + };}, {$$arity: 1, $$s: self}); + + $def(self, '$push_nesting?', function $CallNode_push_nesting$ques$35() { + var self = this, recv = nil, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + + recv = self.$children().$first(); + if ($truthy(($ret_or_1 = self.$children().$size()['$=='](2)))) { + + if ($truthy(($ret_or_2 = recv['$nil?']()))) { + return $ret_or_2 + } else { + + if ($truthy(($ret_or_3 = recv.$type()['$==']("const")))) { + return recv.$children().$last()['$==']("Module") + } else { + return $ret_or_3 + }; + }; + } else { + return $ret_or_1 + }; + }, 0); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'DependencyResolver'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.compiler = $proto.sexp = $proto.missing_dynamic_require = nil; + + + $def(self, '$initialize', function $$initialize(compiler, sexp, missing_dynamic_require) { + var self = this, $ret_or_1 = nil; + + + + if (missing_dynamic_require == null) missing_dynamic_require = nil;; + self.compiler = compiler; + self.sexp = sexp; + return (self.missing_dynamic_require = ($truthy(($ret_or_1 = missing_dynamic_require)) ? ($ret_or_1) : (self.compiler.$dynamic_require_severity()))); + }, -3); + + $def(self, '$resolve', function $$resolve() { + var self = this; + + return self.$handle_part(self.sexp) + }, 0); + + $def(self, '$handle_part', function $$handle_part(sexp, missing_dynamic_require) { + var $a, $b, self = this, $ret_or_1 = nil, recv = nil, meth = nil, args = nil, parts = nil; + + + + if (missing_dynamic_require == null) missing_dynamic_require = self.missing_dynamic_require;; + if ($truthy(sexp)) { + if ($eqeqeq("str", ($ret_or_1 = sexp.$type()))) { + return sexp.$children()['$[]'](0) + } else if ($eqeqeq("dstr", $ret_or_1)) { + return $send(sexp.$children(), 'map', [], function $$36(i){var self = $$36.$$s == null ? this : $$36.$$s; + + + + if (i == null) i = nil;; + return self.$handle_part(i);}, {$$arity: 1, $$s: self}).$join() + } else if ($eqeqeq("begin", $ret_or_1)) { + if ($eqeq(sexp.$children().$length(), 1)) { + return self.$handle_part(sexp.$children()['$[]'](0)) + } + } else if ($eqeqeq("send", $ret_or_1)) { + + $b = sexp.$children(), $a = $to_ary($b), (recv = ($a[0] == null ? nil : $a[0])), (meth = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $b; + parts = $send(args, 'map', [], function $$37(s){var self = $$37.$$s == null ? this : $$37.$$s; + + + + if (s == null) s = nil;; + return self.$handle_part(s, "ignore");}, {$$arity: 1, $$s: self}); + if ($truthy(parts['$include?'](nil))) { + return nil + }; + if ((($truthy(recv['$is_a?']($$$($$$($Opal, 'AST'), 'Node'))) && ($eqeq(recv.$type(), "const"))) && ($eqeq(recv.$children().$last(), "File")))) { + if ($eqeq(meth, "expand_path")) { + return $send(self, 'expand_path', $to_a(parts)) + } else if ($eqeq(meth, "join")) { + return self.$expand_path(parts.$join("/")) + } else if ($eqeq(meth, "dirname")) { + return self.$expand_path(parts['$[]'](0).$split("/")['$[]']($range(0, -1, true)).$join("/")) + } + } else if ($eqeq(meth, "__dir__")) { + return $$('File').$dirname($$$($$('Opal'), 'Compiler').$module_name(self.compiler.$file())) + }; + } else { + nil + } + }; + if ($eqeqeq("error", ($ret_or_1 = missing_dynamic_require))) { + return self.compiler.$error("Cannot handle dynamic require", self.sexp.$line()) + } else if ($eqeqeq("warning", $ret_or_1)) { + return self.compiler.$warning("Cannot handle dynamic require", self.sexp.$line()) + } else { + return nil + }; + }, -2); + return $def(self, '$expand_path', function $$expand_path(path, base) { + + + + if (base == null) base = "";; + return $send(((("" + (base)) + "/") + (path)).$split("/"), 'each_with_object', [[]], function $$38(part, p){ + + + if (part == null) part = nil;; + + if (p == null) p = nil;; + if ($eqeq(part, "")) { + return nil + } else if ($eqeq(part, "..")) { + return p.$pop() + } else { + return p['$<<'](part) + };}, 2).$join("/"); + }, -2); + })($nesting[0], null, $nesting); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/csend"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $def = Opal.def; + + Opal.add_stubs('require,handle,helper,conditional_send,recv,receiver_sexp,push,compile_method_name,compile_arguments,compile_block_pass'); + + self.$require("opal/nodes/call"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'CSendNode'); + + + + self.$handle("csend"); + return $def(self, '$default_compile', function $$default_compile() { + var self = this; + + + self.$helper("send"); + return $send(self, 'conditional_send', [self.$recv(self.$receiver_sexp())], function $$1(receiver_temp){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (receiver_temp == null) receiver_temp = nil;; + self.$push("$send(", receiver_temp); + self.$compile_method_name(); + self.$compile_arguments(); + self.$compile_block_pass(); + return self.$push(")");}, {$$arity: 1, $$s: self}); + }, 0); + })($nesting[0], $$('CallNode')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/call_special"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $send = Opal.send; + + Opal.add_stubs('require,handle,children,push,recv,recvr,expr,property,value,<<,default_compile,meth,receiver_sexp,method_jsid,compile_arguments,iter,s,lhs,rhs,==,type,first,map,flatten,scan,to_proc,empty?,stmt?,process'); + + self.$require("opal/nodes/base"); + self.$require("opal/nodes/call"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'JsAttrNode'); + + + + self.$handle("jsattr"); + self.$children("recvr", "property"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$push(self.$recv(self.$recvr()), "[", self.$expr(self.$property()), "]") + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'JsAttrAsgnNode'); + + + + self.$handle("jsattrasgn"); + self.$children("recvr", "property", "value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$push(self.$recv(self.$recvr()), "[", self.$expr(self.$property()), "] = ", self.$expr(self.$value())) + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'JsCallNode'); + + var $proto = self.$$prototype; + + $proto.iter = $proto.arglist = nil; + + self.$handle("jscall"); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + if ($truthy(self.iter)) { + self.arglist = self.arglist['$<<'](self.iter) + }; + return (self.iter = nil); + }, -1); + + $def(self, '$compile', function $$compile() { + var self = this; + + return self.$default_compile() + }, 0); + + $def(self, '$method_jsid', function $$method_jsid() { + var self = this; + + return "." + (self.$meth()) + }, 0); + return $def(self, '$compile_using_send', function $$compile_using_send() { + var self = this; + + + self.$push(self.$recv(self.$receiver_sexp()), self.$method_jsid(), ".apply(null"); + self.$compile_arguments(); + if ($truthy(self.$iter())) { + self.$push(".concat(", self.$expr(self.$iter()), ")") + }; + return self.$push(")"); + }, 0); + })($nesting[0], $$('CallNode')); + return (function($base, $super) { + var self = $klass($base, $super, 'Match3Node'); + + var $proto = self.$$prototype; + + $proto.level = nil; + + self.$handle("match_with_lvasgn"); + self.$children("lhs", "rhs"); + return $def(self, '$compile', function $$compile() { + var self = this, sexp = nil, re = nil, names = nil, names_def = nil; + + + sexp = self.$s("send", self.$lhs(), "=~", self.$rhs()); + if (($eqeq(self.$lhs().$type(), "regexp") && ($eqeq(self.$lhs().$children().$first().$type(), "str")))) { + + re = self.$lhs().$children().$first().$children().$first(); + names = $send(re.$scan(/\(\?<([^>]*)>/).$flatten(), 'map', [], "to_sym".$to_proc()); + if (!$truthy(names['$empty?']())) { + + names_def = self.$s("lvasgn", "$m3names", self.$s("if", self.$s("gvar", "$~"), self.$s("send", self.$s("gvar", "$~"), "named_captures"), self.$s("hash"))); + names = $send(names, 'map', [], function $$1(name){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (name == null) name = nil;; + return self.$s("lvasgn", name, self.$s("send", self.$s("lvar", "$m3names"), "[]", self.$s("sym", name)));}, {$$arity: 1, $$s: self}); + if ($truthy(self['$stmt?']())) { + sexp = $send(self, 's', ["begin", sexp, names_def].concat($to_a(names))) + } else { + sexp = $send(self, 's', ["begin", self.$s("lvasgn", "$m3tmp", sexp), names_def].concat($to_a(names)).concat([self.$s("lvar", "$m3tmp")])) + }; + }; + }; + return self.$push(self.$process(sexp, self.level)); + }, 0); + })($nesting[0], $$('Base')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/scope"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $def = Opal.def, $send = Opal.send, $rb_minus = Opal.rb_minus, $truthy = Opal.truthy, $not = Opal.not, $rb_plus = Opal.rb_plus, $eqeq = Opal.eqeq, $hash2 = Opal.hash2; + + Opal.add_stubs('require,attr_accessor,attr_reader,indent,scope,compiler,scope=,-,==,iter?,!,class?,dup,push,map,ivars,gvars,empty?,<<,parser_indent,join,+,fragment,def_in_class?,add_proto_ivar,include?,has_local?,|,scope_locals,reject,start_with?,to_s,has_temp?,pop,next_temp,loop,succ,uses_block!,identify!,valid_name?,mid,compact,parent,name,scope_name,unique_temp,lambda?,def?,type,nil?,rescue_else_sexp,last,class,collect_refinements_temps,add_scope_local,new_refinements_temp,identity,block_name=,add_temp,block_name,line'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ScopeNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.type = $proto.is_lambda = $proto.lambda_definition = $proto.defs = $proto.parent = $proto.temps = $proto.locals = $proto.proto_ivars = $proto.compiler = $proto.ivars = $proto.gvars = $proto.args = $proto.queue = $proto.while_stack = $proto.identity = $proto.uses_block = $proto.rescues = $proto.in_resbody = $proto.in_ensure = $proto.next_retry_id = $proto.refinements_temp = $proto.block_prepared = nil; + + self.$attr_accessor("parent"); + self.$attr_accessor("name"); + self.$attr_accessor("block_name"); + self.$attr_reader("scope_name"); + self.$attr_reader("locals"); + self.$attr_reader("ivars"); + self.$attr_reader("gvars"); + self.$attr_accessor("mid"); + self.$attr_accessor("defs"); + self.$attr_reader("methods"); + self.$attr_accessor("catch_return", "has_break", "has_retry"); + self.$attr_accessor("rescue_else_sexp"); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + self.locals = []; + self.temps = []; + self.args = []; + self.ivars = []; + self.gvars = []; + self.parent = nil; + self.queue = []; + self.unique = "a"; + self.while_stack = []; + self.identity = nil; + self.defs = nil; + self.methods = []; + self.uses_block = false; + self.in_ensure = false; + return (self.proto_ivars = []); + }, -1); + + $def(self, '$in_scope', function $$in_scope() { + var $yield = $$in_scope.$$p || nil, self = this; + + delete $$in_scope.$$p; + return $send(self, 'indent', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s, $writer = nil; + if (self.parent == null) self.parent = nil; + + + self.parent = self.$compiler().$scope(); + + $writer = [self]; + $send(self.$compiler(), 'scope=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + Opal.yield1($yield, self); + + $writer = [self.parent]; + $send(self.$compiler(), 'scope=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 0, $$s: self}) + }, 0); + + $def(self, '$class_scope?', function $ScopeNode_class_scope$ques$2() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.type['$==']("class")))) { + return $ret_or_1 + } else { + return self.type['$==']("module") + } + }, 0); + + $def(self, '$class?', function $ScopeNode_class$ques$3() { + var self = this; + + return self.type['$==']("class") + }, 0); + + $def(self, '$module?', function $ScopeNode_module$ques$4() { + var self = this; + + return self.type['$==']("module") + }, 0); + + $def(self, '$sclass?', function $ScopeNode_sclass$ques$5() { + var self = this; + + return self.type['$==']("sclass") + }, 0); + + $def(self, '$top?', function $ScopeNode_top$ques$6() { + var self = this; + + return self.type['$==']("top") + }, 0); + + $def(self, '$iter?', function $ScopeNode_iter$ques$7() { + var self = this; + + return self.type['$==']("iter") + }, 0); + + $def(self, '$def?', function $ScopeNode_def$ques$8() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.type['$==']("def")))) { + return $ret_or_1 + } else { + return self.type['$==']("defs") + } + }, 0); + + $def(self, '$lambda?', function $ScopeNode_lambda$ques$9() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$iter?']()))) { + return self.is_lambda + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$is_lambda!', function $ScopeNode_is_lambda$excl$10() { + var self = this; + + return (self.is_lambda = true) + }, 0); + + $def(self, '$defines_lambda', function $$defines_lambda() { + var $yield = $$defines_lambda.$$p || nil, self = this; + + delete $$defines_lambda.$$p; + + self.lambda_definition = true; + Opal.yieldX($yield, []); + return (self.lambda_definition = false); + }, 0); + + $def(self, '$lambda_definition?', function $ScopeNode_lambda_definition$ques$11() { + var self = this; + + return self.lambda_definition + }, 0); + + $def(self, '$def_in_class?', function $ScopeNode_def_in_class$ques$12() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = ($truthy(($ret_or_3 = self.defs['$!']())) ? (self.type['$==']("def")) : ($ret_or_3)))) ? (self.parent) : ($ret_or_2))))) { + return self.parent['$class?']() + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$to_vars', function $$to_vars() { + var self = this, vars = nil, iv = nil, gv = nil, indent = nil, str = nil, pvars = nil; + + + vars = self.temps.$dup(); + $send(vars, 'push', $to_a($send(self.locals, 'map', [], function $$13(l){ + + + if (l == null) l = nil;; + return "" + (l) + " = nil";}, 1))); + iv = $send(self.$ivars(), 'map', [], function $$14(ivar){ + + + if (ivar == null) ivar = nil;; + return "if (self" + (ivar) + " == null) self" + (ivar) + " = nil;\n";}, 1); + gv = $send(self.$gvars(), 'map', [], function $$15(gvar){ + + + if (gvar == null) gvar = nil;; + return "if ($gvars" + (gvar) + " == null) $gvars" + (gvar) + " = nil;\n";}, 1); + if (($truthy(self['$class?']()) && ($not(self.proto_ivars['$empty?']())))) { + vars['$<<']("$proto = self.$$prototype") + }; + indent = self.compiler.$parser_indent(); + str = ($truthy(vars['$empty?']()) ? ("") : ("var " + (vars.$join(", ")) + ";\n")); + if (!$truthy(self.$ivars()['$empty?']())) { + str = $rb_plus(str, "" + (indent) + (iv.$join(indent))) + }; + if (!$truthy(self.$gvars()['$empty?']())) { + str = $rb_plus(str, "" + (indent) + (gv.$join(indent))) + }; + if (($truthy(self['$class?']()) && ($not(self.proto_ivars['$empty?']())))) { + + pvars = $send(self.proto_ivars, 'map', [], function $$16(i){ + + + if (i == null) i = nil;; + return "$proto" + (i);}, 1).$join(" = "); + str = "" + (str) + "\n" + (indent) + (pvars) + " = nil;"; + }; + return self.$fragment(str); + }, 0); + + $def(self, '$add_scope_ivar', function $$add_scope_ivar(ivar) { + var self = this; + + if ($truthy(self['$def_in_class?']())) { + return self.parent.$add_proto_ivar(ivar) + } else if ($truthy(self.ivars['$include?'](ivar))) { + return nil + } else { + return self.ivars['$<<'](ivar) + } + }, 1); + + $def(self, '$add_scope_gvar', function $$add_scope_gvar(gvar) { + var self = this; + + if ($truthy(self.gvars['$include?'](gvar))) { + return nil + } else { + return self.gvars['$<<'](gvar) + } + }, 1); + + $def(self, '$add_proto_ivar', function $$add_proto_ivar(ivar) { + var self = this; + + if ($truthy(self.proto_ivars['$include?'](ivar))) { + return nil + } else { + return self.proto_ivars['$<<'](ivar) + } + }, 1); + + $def(self, '$add_arg', function $$add_arg(arg) { + var self = this; + + + if (!$truthy(self.args['$include?'](arg))) { + self.args['$<<'](arg) + }; + return arg; + }, 1); + + $def(self, '$add_scope_local', function $$add_scope_local(local) { + var self = this; + + + if ($truthy(self['$has_local?'](local))) { + return nil + }; + return self.locals['$<<'](local); + }, 1); + + $def(self, '$has_local?', function $ScopeNode_has_local$ques$17(local) { + var self = this; + + + if ((($truthy(self.locals['$include?'](local)) || ($truthy(self.args['$include?'](local)))) || ($truthy(self.temps['$include?'](local))))) { + return true + }; + if (($truthy(self.parent) && ($eqeq(self.type, "iter")))) { + return self.parent['$has_local?'](local) + }; + return false; + }, 1); + + $def(self, '$scope_locals', function $$scope_locals() { + var self = this, locals = nil; + + + locals = self.locals['$|'](self.args)['$|']((($truthy(self.parent) && ($eqeq(self.type, "iter"))) ? (self.parent.$scope_locals()) : ([]))); + return $send(locals, 'reject', [], function $$18(i){ + + + if (i == null) i = nil;; + return i.$to_s()['$start_with?']("$");}, 1); + }, 0); + + $def(self, '$add_scope_temp', function $$add_scope_temp(tmp) { + var self = this; + + + if ($truthy(self['$has_temp?'](tmp))) { + return nil + }; + return self.temps.$push(tmp); + }, 1); + + $def(self, '$has_temp?', function $ScopeNode_has_temp$ques$19(tmp) { + var self = this; + + return self.temps['$include?'](tmp) + }, 1); + + $def(self, '$new_temp', function $$new_temp() { + var self = this, tmp = nil; + + + if (!$truthy(self.queue['$empty?']())) { + return self.queue.$pop() + }; + tmp = self.$next_temp(); + self.temps['$<<'](tmp); + return tmp; + }, 0); + + $def(self, '$next_temp', function $$next_temp() { + var self = this, tmp = nil; + + + tmp = nil; + (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], function $$20(){var self = $$20.$$s == null ? this : $$20.$$s; + if (self.unique == null) self.unique = nil; + + + tmp = "$" + (self.unique); + self.unique = self.unique.$succ(); + if ($truthy(self['$has_local?'](tmp))) { + return nil + } else { + + Opal.brk(nil, $brk) + };}, {$$arity: 0, $$s: self, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + return tmp; + }, 0); + + $def(self, '$queue_temp', function $$queue_temp(name) { + var self = this; + + return self.queue['$<<'](name) + }, 1); + + $def(self, '$push_while', function $$push_while() { + var self = this, info = nil; + + + info = $hash2([], {}); + self.while_stack.$push(info); + return info; + }, 0); + + $def(self, '$pop_while', function $$pop_while() { + var self = this; + + return self.while_stack.$pop() + }, 0); + + $def(self, '$in_while?', function $ScopeNode_in_while$ques$21() { + var self = this; + + return self.while_stack['$empty?']()['$!']() + }, 0); + + $def(self, '$uses_block!', function $ScopeNode_uses_block$excl$22() { + var self = this; + + if (($eqeq(self.type, "iter") && ($truthy(self.parent)))) { + return self.parent['$uses_block!']() + } else { + + self.uses_block = true; + return self['$identify!'](); + } + }, 0); + + $def(self, '$identify!', function $ScopeNode_identify$excl$23(name) { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + + + if (name == null) name = nil;; + if ($truthy(self.identity)) { + return self.identity + }; + if ($truthy(self['$valid_name?'](self.$mid()))) { + self.identity = "$$" + (self.$mid()) + } else { + + name = ($truthy(($ret_or_1 = name)) ? ($ret_or_1) : ([($truthy(($ret_or_2 = self.$parent())) ? (($truthy(($ret_or_3 = self.$parent().$name())) ? ($ret_or_3) : (self.$parent().$scope_name()))) : ($ret_or_2)), self.$mid()].$compact().$join("_"))); + self.identity = self.compiler.$unique_temp(name); + }; + return self.identity; + }, -1); + self.$attr_reader("identity"); + + $def(self, '$find_parent_def', function $$find_parent_def() { + var $a, self = this, scope = nil; + + + scope = self; + while ($truthy((scope = scope.$parent()))) { + if (($truthy(scope['$def?']()) || ($truthy(scope['$lambda?']())))) { + return scope + } + }; + return nil; + }, 0); + + $def(self, '$super_chain', function $$super_chain() { + var $a, self = this, chain = nil, scope = nil, defn = nil, mid = nil; + + + $a = [[], self, "null", "null"], (chain = $a[0]), (scope = $a[1]), (defn = $a[2]), (mid = $a[3]), $a; + while ($truthy(scope)) { + if ($eqeq(scope.$type(), "iter")) { + + chain['$<<'](scope['$identify!']()); + if ($truthy(scope.$parent())) { + scope = scope.$parent() + }; + } else if ($truthy(["def", "defs"]['$include?'](scope.$type()))) { + + defn = scope['$identify!'](); + mid = "'" + (scope.$mid()) + "'"; + break;; + } else { + break; + } + }; + return [chain, defn, mid]; + }, 0); + + $def(self, '$uses_block?', function $ScopeNode_uses_block$ques$24() { + var self = this; + + return self.uses_block + }, 0); + + $def(self, '$has_rescue_else?', function $ScopeNode_has_rescue_else$ques$25() { + var self = this; + + return self.$rescue_else_sexp()['$nil?']()['$!']() + }, 0); + + $def(self, '$in_rescue', function $$in_rescue(node) { + var $yield = $$in_rescue.$$p || nil, self = this, $ret_or_1 = nil, result = nil; + + delete $$in_rescue.$$p; + + self.rescues = ($truthy(($ret_or_1 = self.rescues)) ? ($ret_or_1) : ([])); + self.rescues.$push(node); + result = Opal.yieldX($yield, []); + self.rescues.$pop(); + return result; + }, 1); + + $def(self, '$current_rescue', function $$current_rescue() { + var self = this; + + return self.rescues.$last() + }, 0); + + $def(self, '$in_resbody', function $$in_resbody() { + var $yield = $$in_resbody.$$p || nil, self = this, result = nil; + + delete $$in_resbody.$$p; + + if (!($yield !== nil)) { + return nil + }; + self.in_resbody = true; + result = Opal.yieldX($yield, []); + self.in_resbody = false; + return result; + }, 0); + + $def(self, '$in_resbody?', function $ScopeNode_in_resbody$ques$26() { + var self = this; + + return self.in_resbody + }, 0); + + $def(self, '$in_ensure', function $$in_ensure() { + var $yield = $$in_ensure.$$p || nil, self = this, result = nil; + + delete $$in_ensure.$$p; + + if (!($yield !== nil)) { + return nil + }; + self.in_ensure = true; + result = Opal.yieldX($yield, []); + self.in_ensure = false; + return result; + }, 0); + + $def(self, '$in_ensure?', function $ScopeNode_in_ensure$ques$27() { + var self = this; + + return self.in_ensure + }, 0); + + $def(self, '$gen_retry_id', function $$gen_retry_id() { + var self = this, $ret_or_1 = nil; + + + self.next_retry_id = ($truthy(($ret_or_1 = self.next_retry_id)) ? ($ret_or_1) : ("retry_0")); + return (self.next_retry_id = self.next_retry_id.$succ()); + }, 0); + + $def(self, '$accepts_using?', function $ScopeNode_accepts_using$ques$28() { + var self = this; + + return [$$('TopNode'), $$('ModuleNode'), $$('ClassNode'), $$('IterNode')]['$include?'](self.$class()) + }, 0); + + $def(self, '$collect_refinements_temps', function $$collect_refinements_temps(temps) { + var self = this; + + + + if (temps == null) temps = [];; + if ($truthy(self.refinements_temp)) { + temps['$<<'](self.refinements_temp) + }; + if ($truthy(self.$parent())) { + return self.$parent().$collect_refinements_temps(temps) + }; + return temps; + }, -1); + + $def(self, '$new_refinements_temp', function $$new_refinements_temp() { + var self = this, var$ = nil; + + + var$ = self.$compiler().$unique_temp("$refn"); + self.$add_scope_local(var$); + return var$; + }, 0); + + $def(self, '$refinements_temp', function $$refinements_temp() { + var $a, self = this, prev = nil, curr = nil; + + + $a = [self.refinements_temp, self.$new_refinements_temp()], (prev = $a[0]), (curr = $a[1]), $a; + self.refinements_temp = curr; + return [prev, curr]; + }, 0); + + $def(self, '$self', function $$self() { + var self = this; + + + self.define_self = true; + return "self"; + }, 0); + + $def(self, '$nesting', function $$nesting() { + var self = this; + + + self.define_nesting = true; + return "$nesting"; + }, 0); + + $def(self, '$relative_access', function $$relative_access() { + var self = this; + + + self.define_relative_access = (self.define_nesting = true); + return "$$"; + }, 0); + + $def(self, '$prepare_block', function $$prepare_block(block_name) { + var self = this, scope_name = nil, $writer = nil; + + + + if (block_name == null) block_name = nil;; + scope_name = self.$scope().$identity(); + if ($truthy(block_name)) { + + $writer = [block_name]; + $send(self, 'block_name=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + self.$add_temp("" + (self.$block_name()) + " = " + (scope_name) + ".$$p || nil"); + if ($truthy(self.block_prepared)) { + return nil + } else { + + self.$line("delete " + (scope_name) + ".$$p;"); + return (self.block_prepared = true); + }; + }, -1); + return self.$attr_accessor("await_encountered"); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/module"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_ary = Opal.to_ary, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $def = Opal.def; + + Opal.add_stubs('require,handle,children,name_and_base,helper,nil?,body,stmt?,unshift,line,in_scope,name=,scope,-,compile_body,await_encountered,await_encountered=,parent,+,nesting,private,cid,expr,stmt,returns,compiler,empty_line,add_temp,to_vars'); + + self.$require("opal/nodes/scope"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ModuleNode'); + + var $proto = self.$$prototype; + + $proto.define_nesting = $proto.define_relative_access = nil; + + self.$handle("module"); + self.$children("cid", "body"); + + $def(self, '$compile', function $$compile() { + var $a, $b, self = this, name = nil, base = nil, await_begin = nil, await_end = nil, async = nil, $writer = nil; + + + $b = self.$name_and_base(), $a = $to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (base = ($a[1] == null ? nil : $a[1])), $b; + self.$helper("module"); + if ($truthy(self.$body()['$nil?']())) { + if ($truthy(self['$stmt?']())) { + return self.$unshift("$module(", base, ", '" + (name) + "')") + } else { + return self.$unshift("($module(", base, ", '" + (name) + "'), nil)") + } + } else { + + self.$line(" var self = $module($base, '" + (name) + "');"); + $send(self, 'in_scope', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s, $writer = nil; + + + + $writer = [name]; + $send(self.$scope(), 'name=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self.$compile_body();}, {$$arity: 0, $$s: self}); + if ($truthy(self.$await_encountered())) { + + await_begin = "(await "; + await_end = ")"; + async = "async "; + + $writer = [true]; + $send(self.$parent(), 'await_encountered=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + } else { + $a = ["", "", ""], (await_begin = $a[0]), (await_end = $a[1]), (async = $a[2]), $a + }; + self.$unshift("" + (await_begin) + "(" + (async) + "function($base" + (($truthy(self.define_nesting) ? (", $parent_nesting") : nil)) + ") {"); + return self.$line("})(", base, "" + (($truthy(self.define_nesting) ? ($rb_plus(", ", self.$scope().$nesting())) : nil)) + ")" + (await_end)); + }; + }, 0); + self.$private(); + + $def(self, '$name_and_base', function $$name_and_base() { + var $a, $b, self = this, base = nil, name = nil; + + + $b = self.$cid().$children(), $a = $to_ary($b), (base = ($a[0] == null ? nil : $a[0])), (name = ($a[1] == null ? nil : $a[1])), $b; + if ($truthy(base['$nil?']())) { + return [name, "" + (self.$scope().$nesting()) + "[0]"] + } else { + return [name, self.$expr(base)] + }; + }, 0); + return $def(self, '$compile_body', function $$compile_body() { + var self = this, body_code = nil; + + + body_code = self.$stmt(self.$compiler().$returns(self.$body())); + self.$empty_line(); + if ($truthy(self.define_nesting)) { + self.$add_temp("$nesting = [self].concat($parent_nesting)") + }; + if ($truthy(self.define_relative_access)) { + self.$add_temp("$$ = Opal.$r($nesting)") + }; + self.$line(self.$scope().$to_vars()); + return self.$line(body_code); + }, 0); + })($nesting[0], $$('ScopeNode')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/class"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_ary = Opal.to_ary, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $def = Opal.def; + + Opal.add_stubs('require,handle,children,name_and_base,helper,nil?,body,stmt?,unshift,super_code,line,in_scope,name=,scope,-,compile_body,await_encountered,await_encountered=,parent,+,nesting,sup,expr'); + + self.$require("opal/nodes/module"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ClassNode'); + + var $proto = self.$$prototype; + + $proto.define_nesting = nil; + + self.$handle("class"); + self.$children("cid", "sup", "body"); + + $def(self, '$compile', function $$compile() { + var $a, $b, self = this, name = nil, base = nil, await_begin = nil, await_end = nil, async = nil, $writer = nil; + + + $b = self.$name_and_base(), $a = $to_ary($b), (name = ($a[0] == null ? nil : $a[0])), (base = ($a[1] == null ? nil : $a[1])), $b; + self.$helper("klass"); + if ($truthy(self.$body()['$nil?']())) { + if ($truthy(self['$stmt?']())) { + return self.$unshift("$klass(", base, ", ", self.$super_code(), ", '" + (name) + "')") + } else { + return self.$unshift("($klass(", base, ", ", self.$super_code(), ", '" + (name) + "'), nil)") + } + } else { + + self.$line(" var self = $klass($base, $super, '" + (name) + "');"); + $send(self, 'in_scope', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s, $writer = nil; + + + + $writer = [name]; + $send(self.$scope(), 'name=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self.$compile_body();}, {$$arity: 0, $$s: self}); + if ($truthy(self.$await_encountered())) { + + await_begin = "(await "; + await_end = ")"; + async = "async "; + + $writer = [true]; + $send(self.$parent(), 'await_encountered=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + } else { + $a = ["", "", ""], (await_begin = $a[0]), (await_end = $a[1]), (async = $a[2]), $a + }; + self.$unshift("" + (await_begin) + "(" + (async) + "function($base, $super" + (($truthy(self.define_nesting) ? (", $parent_nesting") : nil)) + ") {"); + return self.$line("})(", base, ", ", self.$super_code(), "" + (($truthy(self.define_nesting) ? ($rb_plus(", ", self.$scope().$nesting())) : nil)) + ")" + (await_end)); + }; + }, 0); + return $def(self, '$super_code', function $$super_code() { + var self = this; + + if ($truthy(self.$sup())) { + return self.$expr(self.$sup()) + } else { + return "null" + } + }, 0); + })($nesting[0], $$('ModuleNode')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/singleton_class"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $def = Opal.def; + + Opal.add_stubs('require,handle,children,push,in_scope,stmt,returns,compiler,body,add_temp,line,to_vars,scope,recv,object,nesting'); + + self.$require("opal/nodes/scope"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'SingletonClassNode'); + + + + self.$handle("sclass"); + self.$children("object", "body"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$push("(function(self, $parent_nesting) {"); + $send(self, 'in_scope', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s, body_stmt = nil; + if (self.define_nesting == null) self.define_nesting = nil; + if (self.define_relative_access == null) self.define_relative_access = nil; + + + body_stmt = self.$stmt(self.$compiler().$returns(self.$body())); + if ($truthy(self.define_nesting)) { + self.$add_temp("$nesting = [self].concat($parent_nesting)") + }; + if ($truthy(self.define_relative_access)) { + self.$add_temp("$$ = Opal.$r($nesting)") + }; + self.$line(self.$scope().$to_vars()); + return self.$line(body_stmt);}, {$$arity: 0, $$s: self}); + return self.$line("})(Opal.get_singleton_class(", self.$recv(self.$object()), "), " + (self.$scope().$nesting()) + ")"); + }, 0); + })($nesting[0], $$('ScopeNode')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/arg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,handle,children,add_arg,scope,name,push,to_s'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ArgNode'); + + + + self.$handle("arg"); + self.$children("name"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$scope().$add_arg(self.$name()); + return self.$push(self.$name().$to_s()); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/arity_check"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $def = Opal.def, $send = Opal.send, $rb_minus = Opal.rb_minus, $truthy = Opal.truthy, $not = Opal.not, $rb_lt = Opal.rb_lt, $rb_plus = Opal.rb_plus, $rb_gt = Opal.rb_gt; + + Opal.add_stubs('require,handle,children,new,args_node,args,optargs,restarg,postargs,kwargs,kwoptargs,kwrestarg,kwnilarg,arity,arity=,scope,-,arity_check?,compiler,empty?,arity_checks,helper,inspect,to_s,mid,line,push,join,compact,size,all_args,!,-@,<,+,>,<<,has_only_optional_kwargs?,any?,negative_arity,positive_arity,select,include?,type,has_required_kwargs?,all?,==,def?,class_scope?,top?,parent,class?,name,module?,identity'); + + self.$require("opal/nodes/base"); + self.$require("opal/rewriters/arguments"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ArityCheckNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.kwargs = $proto.kwoptargs = $proto.kwrestarg = $proto.all_args = $proto.args = $proto.optargs = $proto.restarg = $proto.postargs = $proto.arity_checks = nil; + + self.$handle("arity_check"); + self.$children("args_node"); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $yield = $$initialize.$$p || nil, self = this, arguments$ = nil; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + arguments$ = $$$($$('Rewriters'), 'Arguments').$new(self.$args_node().$children()); + self.args = arguments$.$args(); + self.optargs = arguments$.$optargs(); + self.restarg = arguments$.$restarg(); + self.postargs = arguments$.$postargs(); + self.kwargs = arguments$.$kwargs(); + self.kwoptargs = arguments$.$kwoptargs(); + self.kwrestarg = arguments$.$kwrestarg(); + return (self.kwnilarg = arguments$.$kwnilarg()); + }, -1); + + $def(self, '$compile', function $$compile() { + var self = this, $writer = nil, meth = nil; + + + + $writer = [self.$arity()]; + $send(self.$scope(), 'arity=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if (!$truthy(self.$compiler()['$arity_check?']())) { + return nil + }; + if ($truthy(self.$arity_checks()['$empty?']())) { + return nil + } else { + + self.$helper("ac"); + meth = self.$scope().$mid().$to_s().$inspect(); + self.$line("var $arity = arguments.length;"); + return self.$push(" if (" + (self.$arity_checks().$join(" || ")) + ") { $ac($arity, " + (self.$arity()) + ", this, " + (meth) + "); }"); + }; + }, 0); + + $def(self, '$kwargs', function $$kwargs() { + var self = this; + + return [].concat($to_a(self.kwargs)).concat($to_a(self.kwoptargs)).concat([self.kwrestarg]).$compact() + }, 0); + + $def(self, '$all_args', function $$all_args() { + var self = this, $ret_or_1 = nil; + + return (self.all_args = ($truthy(($ret_or_1 = self.all_args)) ? ($ret_or_1) : ([].concat($to_a(self.args)).concat($to_a(self.optargs)).concat([self.restarg]).concat($to_a(self.postargs)).concat($to_a(self.$kwargs())).$compact()))) + }, 0); + + $def(self, '$arity_checks', function $$arity_checks() { + var $a, self = this, arity = nil, min_arity = nil, max_arity = nil; + + + if ($truthy((($a = self['arity_checks'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { + return self.arity_checks + }; + arity = self.$all_args().$size(); + arity = $rb_minus(arity, self.optargs.$size()); + if ($truthy(self.restarg)) { + arity = $rb_minus(arity, 1) + }; + arity = $rb_minus(arity, self.$kwargs().$size()); + if ((($not(self.optargs['$empty?']()) || ($not(self.$kwargs()['$empty?']()))) || ($truthy(self.restarg)))) { + arity = $rb_minus(arity['$-@'](), 1) + }; + self.arity_checks = []; + if ($truthy($rb_lt(arity, 0))) { + + min_arity = $rb_plus(arity, 1)['$-@'](); + max_arity = self.$all_args().$size(); + if ($truthy($rb_gt(min_arity, 0))) { + self.arity_checks['$<<']("$arity < " + (min_arity)) + }; + if (!$truthy(self.restarg)) { + self.arity_checks['$<<']("$arity > " + (max_arity)) + }; + } else { + self.arity_checks['$<<']("$arity !== " + (arity)) + }; + return self.arity_checks; + }, 0); + + $def(self, '$arity', function $$arity() { + var self = this; + + if ((($truthy(self.restarg) || ($truthy(self.optargs['$any?']()))) || ($truthy(self['$has_only_optional_kwargs?']())))) { + return self.$negative_arity() + } else { + return self.$positive_arity() + } + }, 0); + + $def(self, '$negative_arity', function $$negative_arity() { + var self = this, required_plain_args = nil, result = nil; + + + required_plain_args = $send(self.$all_args(), 'select', [], function $$1(arg){ + + + if (arg == null) arg = nil;; + return ["arg", "mlhs"]['$include?'](arg.$type());}, 1); + result = required_plain_args.$size(); + if ($truthy(self['$has_required_kwargs?']())) { + result = $rb_plus(result, 1) + }; + result = $rb_minus(result['$-@'](), 1); + return result; + }, 0); + + $def(self, '$positive_arity', function $$positive_arity() { + var self = this, result = nil; + + + result = self.$all_args().$size(); + result = $rb_minus(result, self.$kwargs().$size()); + if ($truthy(self.$kwargs()['$any?']())) { + result = $rb_plus(result, 1) + }; + return result; + }, 0); + + $def(self, '$has_only_optional_kwargs?', function $ArityCheckNode_has_only_optional_kwargs$ques$2() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$kwargs()['$any?']()))) { + return $send(self.$kwargs(), 'all?', [], function $$3(arg){ + + + if (arg == null) arg = nil;; + return ["kwoptarg", "kwrestarg"]['$include?'](arg.$type());}, 1) + } else { + return $ret_or_1 + } + }, 0); + return $def(self, '$has_required_kwargs?', function $ArityCheckNode_has_required_kwargs$ques$4() { + var self = this; + + return $send(self.$kwargs(), 'any?', [], function $$5(arg){ + + + if (arg == null) arg = nil;; + return arg.$type()['$==']("kwarg");}, 1) + }, 0); + })($nesting[0], $$('Base'), $nesting); + return (function($base, $super) { + var self = $klass($base, $super, 'IterArityCheckNode'); + + + + self.$handle("iter_arity_check"); + return $def(self, '$compile', function $$compile() { + var $a, self = this, $writer = nil, parent_scope = nil, $ret_or_1 = nil, $ret_or_2 = nil, context = nil, identity = nil; + + + + $writer = [self.$arity()]; + $send(self.$scope(), 'arity=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if (!$truthy(self.$compiler()['$arity_check?']())) { + return nil + }; + if ($truthy(self.$arity_checks()['$empty?']())) { + return nil + } else { + + parent_scope = self.$scope(); + while (!($truthy(($truthy(($ret_or_1 = ($truthy(($ret_or_2 = parent_scope['$def?']())) ? ($ret_or_2) : (parent_scope['$class_scope?']())))) ? ($ret_or_1) : (parent_scope['$top?']()))))) { + parent_scope = parent_scope.$parent() + }; + context = ($truthy(parent_scope['$top?']()) ? ("'
    '") : ($truthy(parent_scope['$def?']()) ? ("'" + (parent_scope.$mid()) + "'") : ($truthy(parent_scope['$class?']()) ? ("''") : ($truthy(parent_scope['$module?']()) ? ("''") : nil)))); + identity = self.$scope().$identity(); + self.$line("if (" + (identity) + ".$$is_lambda || " + (identity) + ".$$define_meth) {"); + self.$line(" var $arity = arguments.length;"); + self.$line(" if (" + (self.$arity_checks().$join(" || ")) + ") { Opal.block_ac($arity, " + (self.$arity()) + ", " + (context) + "); }"); + return self.$line("}"); + }; + }, 0); + })($nesting[0], $$('ArityCheckNode')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/ensure_kwargs_are_kwargs"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,handle,helper,line'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'EnsureKwargsAreKwargs'); + + + + self.$handle("ensure_kwargs_are_kwargs"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$helper("hash2"); + self.$line("if ($kwargs == null) {"); + self.$line(" $kwargs = $hash2([], {});"); + self.$line("} else if (!$kwargs.$$is_hash) {"); + self.$line(" throw Opal.ArgumentError.$new('expected kwargs');"); + return self.$line("}"); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/extract_block_arg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,handle,children,uses_block!,scope,add_arg,name,prepare_block'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ExtractBlockarg'); + + + + self.$handle("extract_blockarg"); + self.$children("name"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$scope()['$uses_block!'](); + self.$scope().$add_arg(self.$name()); + return self.$scope().$prepare_block(self.$name()); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/extract_kwarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,handle,children,[],meta,<<,used_kwargs,scope,add_temp,lvar_name,line,inspect,to_s'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ExtractKwarg'); + + var $proto = self.$$prototype; + + $proto.sexp = nil; + + self.$handle("extract_kwarg"); + self.$children("lvar_name"); + return $def(self, '$compile', function $$compile() { + var self = this, key_name = nil; + + + key_name = self.sexp.$meta()['$[]']("arg_name"); + self.$scope().$used_kwargs()['$<<'](key_name); + self.$add_temp(self.$lvar_name()); + self.$line("if (!Opal.hasOwnProperty.call($kwargs.$$smap, '" + (key_name) + "')) {"); + self.$line(" throw Opal.ArgumentError.$new('missing keyword: " + (key_name) + "');"); + self.$line("}"); + return self.$line("" + (self.$lvar_name()) + " = $kwargs.$$smap[" + (key_name.$to_s().$inspect()) + "];"); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/extract_kwargs"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,handle,add_temp,line'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ExtractKwargs'); + + + + self.$handle("extract_kwargs"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$add_temp("$kwargs"); + return self.$line("$kwargs = Opal.extract_kwargs($post_args)"); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/extract_kwoptarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $eqeq = Opal.eqeq, $def = Opal.def; + + Opal.add_stubs('require,handle,children,[],meta,<<,used_kwargs,scope,add_temp,lvar_name,line,inspect,to_s,==,default_value,expr'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ExtractKwoptarg'); + + var $proto = self.$$prototype; + + $proto.sexp = nil; + + self.$handle("extract_kwoptarg"); + self.$children("lvar_name", "default_value"); + return $def(self, '$compile', function $$compile() { + var self = this, key_name = nil; + + + key_name = self.sexp.$meta()['$[]']("arg_name"); + self.$scope().$used_kwargs()['$<<'](key_name); + self.$add_temp(self.$lvar_name()); + self.$line("" + (self.$lvar_name()) + " = $kwargs.$$smap[" + (key_name.$to_s().$inspect()) + "];"); + if ($eqeq(self.$default_value().$children()['$[]'](1), "undefined")) { + return nil + }; + return self.$line("if (" + (self.$lvar_name()) + " == null) " + (self.$lvar_name()) + " = ", self.$expr(self.$default_value())); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/extract_kwrestarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $send = Opal.send; + + Opal.add_stubs('require,handle,children,name,add_temp,line,used_kwargs,map,scope,join'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ExtractKwrestarg'); + + + + self.$handle("extract_kwrestarg"); + self.$children("name"); + + $def(self, '$compile', function $$compile() { + var self = this, name = nil, $ret_or_1 = nil; + + + name = ($truthy(($ret_or_1 = self.$name())) ? ($ret_or_1) : ("$kw_rest_arg")); + self.$add_temp(name); + return self.$line("" + (name) + " = Opal.kwrestargs($kwargs, " + (self.$used_kwargs()) + ");"); + }, 0); + return $def(self, '$used_kwargs', function $$used_kwargs() { + var self = this, args = nil; + + + args = $send(self.$scope().$used_kwargs(), 'map', [], function $$1(arg_name){ + + + if (arg_name == null) arg_name = nil;; + return "'" + (arg_name) + "': true";}, 1); + return "{" + (args.$join(",")) + "}"; + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/extract_optarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $eqeq = Opal.eqeq, $def = Opal.def; + + Opal.add_stubs('require,handle,children,==,[],default_value,line,name,expr'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ExtractOptargNode'); + + + + self.$handle("extract_optarg"); + self.$children("name", "default_value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + if ($eqeq(self.$default_value().$children()['$[]'](1), "undefined")) { + return nil + }; + return self.$line("if (" + (self.$name()) + " == null) " + (self.$name()) + " = ", self.$expr(self.$default_value()), ";"); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/extract_post_arg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,handle,children,add_temp,name,line'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ExtractPostArg'); + + + + self.$handle("extract_post_arg"); + self.$children("name"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$add_temp(self.$name()); + self.$line("" + (self.$name()) + " = $post_args.shift();"); + return self.$line("if (" + (self.$name()) + " == null) " + (self.$name()) + " = nil;"); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/extract_post_optarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $eqeq = Opal.eqeq, $def = Opal.def; + + Opal.add_stubs('require,handle,children,add_temp,name,line,args_to_keep,==,[],default_value,expr'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ExtractPostOptarg'); + + + + self.$handle("extract_post_optarg"); + self.$children("name", "default_value", "args_to_keep"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$add_temp(self.$name()); + self.$line("if ($post_args.length > " + (self.$args_to_keep()) + ") " + (self.$name()) + " = $post_args.shift();"); + if ($eqeq(self.$default_value().$children()['$[]'](1), "undefined")) { + return nil + }; + return self.$line("if (" + (self.$name()) + " == null) " + (self.$name()) + " = ", self.$expr(self.$default_value()), ";"); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/extract_restarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $def = Opal.def; + + Opal.add_stubs('require,handle,children,name,add_temp,==,args_to_keep,line'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ExtractRestarg'); + + + + self.$handle("extract_restarg"); + self.$children("name", "args_to_keep"); + return $def(self, '$compile', function $$compile() { + var self = this, name = nil, $ret_or_1 = nil; + + + name = ($truthy(($ret_or_1 = self.$name())) ? ($ret_or_1) : ("$rest_arg")); + self.$add_temp(name); + if ($eqeq(self.$args_to_keep(), 0)) { + return self.$line("" + (name) + " = $post_args;") + } else { + return self.$line("" + (name) + " = $post_args.splice(0, $post_args.length - " + (self.$args_to_keep()) + ");") + }; + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/fake_arg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,handle,next_temp,scope,add_arg,push'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'FakeArgNode'); + + + + self.$handle("fake_arg"); + return $def(self, '$compile', function $$compile() { + var self = this, name = nil; + + + name = self.$scope().$next_temp(); + self.$scope().$add_arg(name); + return self.$push(name); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/initialize_iterarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,handle,children,line,name'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'InitializeIterarg'); + + + + self.$handle("initialize_iter_arg"); + self.$children("name"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$line("if (" + (self.$name()) + " == null) " + (self.$name()) + " = nil;") + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/initialize_shadowarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,handle,children,<<,locals,scope,name,add_arg,line'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'InitializeShadowarg'); + + + + self.$handle("initialize_shadowarg"); + self.$children("name"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$scope().$locals()['$<<'](self.$name()); + self.$scope().$add_arg(self.$name()); + return self.$line("" + (self.$name()) + " = nil;"); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args/parameters"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $truthy = Opal.truthy, $eqeq = Opal.eqeq; + + Opal.add_stubs('children,map,public_send,type,join,compact,=='); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Parameters'); + + var $proto = self.$$prototype; + + $proto.args = nil; + + + $def(self, '$initialize', function $$initialize(args) { + var self = this; + + return (self.args = args.$children()) + }, 1); + + $def(self, '$to_code', function $$to_code() { + var self = this, stringified_parameters = nil; + + + stringified_parameters = $send(self.args, 'map', [], function $$1(arg){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (arg == null) arg = nil;; + return $send(self, 'public_send', ["on_" + (arg.$type())].concat($to_a(arg)));}, {$$arity: 1, $$s: self}); + return "[" + (stringified_parameters.$compact().$join(", ")) + "]"; + }, 0); + + $def(self, '$on_arg', function $$on_arg(arg_name) { + + return "['req', '" + (arg_name) + "']" + }, 1); + + $def(self, '$on_mlhs', function $$on_mlhs($a) { + var $post_args, $rest_arg; + + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return "['req']"; + }, -1); + + $def(self, '$on_optarg', function $$on_optarg(arg_name, _default_value) { + + return "['opt', '" + (arg_name) + "']" + }, 2); + + $def(self, '$on_restarg', function $$on_restarg(arg_name) { + + + + if (arg_name == null) arg_name = nil;; + if ($truthy(arg_name)) { + + if ($eqeq(arg_name, "fwd_rest_arg")) { + arg_name = "*" + }; + return "['rest', '" + (arg_name) + "']"; + } else { + return "['rest']" + }; + }, -1); + + $def(self, '$on_kwarg', function $$on_kwarg(arg_name) { + + return "['keyreq', '" + (arg_name) + "']" + }, 1); + + $def(self, '$on_kwoptarg', function $$on_kwoptarg(arg_name, _default_value) { + + return "['key', '" + (arg_name) + "']" + }, 2); + + $def(self, '$on_kwrestarg', function $$on_kwrestarg(arg_name) { + + + + if (arg_name == null) arg_name = nil;; + if ($truthy(arg_name)) { + return "['keyrest', '" + (arg_name) + "']" + } else { + return "['keyrest']" + }; + }, -1); + + $def(self, '$on_blockarg', function $$on_blockarg(arg_name) { + + + if ($eqeq(arg_name, "fwd_block_arg")) { + arg_name = "&" + }; + return "['block', '" + (arg_name) + "']"; + }, 1); + + $def(self, '$on_kwnilarg', function $$on_kwnilarg() { + + return "['nokey']" + }, 0); + return $def(self, '$on_shadowarg', function $$on_shadowarg(_arg_name) { + + return nil + }, 1); + })($nesting[0], null) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["opal/nodes/args/prepare_post_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $eqeq = Opal.eqeq, $def = Opal.def; + + Opal.add_stubs('require,handle,children,add_temp,==,offset,line'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Args'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'PreparePostArgs'); + + + + self.$handle("prepare_post_args"); + self.$children("offset"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$add_temp("$post_args"); + if ($eqeq(self.$offset(), 0)) { + return self.$line("$post_args = Opal.slice.call(arguments)") + } else { + return self.$line("$post_args = Opal.slice.call(arguments, " + (self.$offset()) + ")") + }; + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/args"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $send = Opal.send, $truthy = Opal.truthy, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $rb_gt = Opal.rb_gt, $neqeq = Opal.neqeq, $def = Opal.def; + + Opal.add_stubs('require,handle,each_with_index,children,multiple_underscore?,[],[]=,-,+,>,s,type,!=,push,process,==,count,start_with?,to_s,first'); + + self.$require("opal/nodes/base"); + self.$require("opal/nodes/args/arg"); + self.$require("opal/nodes/args/arity_check"); + self.$require("opal/nodes/args/ensure_kwargs_are_kwargs"); + self.$require("opal/nodes/args/extract_block_arg"); + self.$require("opal/nodes/args/extract_kwarg"); + self.$require("opal/nodes/args/extract_kwargs"); + self.$require("opal/nodes/args/extract_kwoptarg"); + self.$require("opal/nodes/args/extract_kwrestarg"); + self.$require("opal/nodes/args/extract_optarg"); + self.$require("opal/nodes/args/extract_post_arg"); + self.$require("opal/nodes/args/extract_post_optarg"); + self.$require("opal/nodes/args/extract_restarg"); + self.$require("opal/nodes/args/fake_arg"); + self.$require("opal/nodes/args/initialize_iterarg"); + self.$require("opal/nodes/args/initialize_shadowarg"); + self.$require("opal/nodes/args/parameters"); + self.$require("opal/nodes/args/prepare_post_args"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ArgsNode'); + + + + self.$handle("args"); + + $def(self, '$compile', function $$compile() { + var self = this, same_arg_counter = nil; + + + same_arg_counter = $hash2([], {}); + return $send(self.$children(), 'each_with_index', [], function $$1(arg, idx){var self = $$1.$$s == null ? this : $$1.$$s, $ret_or_1 = nil, $writer = nil; + + + + if (arg == null) arg = nil;; + + if (idx == null) idx = nil;; + if ($truthy(self['$multiple_underscore?'](arg))) { + + if ($truthy(($ret_or_1 = same_arg_counter['$[]'](arg)))) { + $ret_or_1 + } else { + + $writer = [arg, 0]; + $send(same_arg_counter, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + + $writer = [arg, $rb_plus(same_arg_counter['$[]'](arg), 1)]; + $send(same_arg_counter, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy($rb_gt(same_arg_counter['$[]'](arg), 1))) { + arg = self.$s(arg.$type(), "" + (arg.$children()['$[]'](0)) + "_$" + (same_arg_counter['$[]'](arg))) + }; + }; + if ($neqeq(idx, 0)) { + self.$push(", ") + }; + return self.$push(self.$process(arg));}, {$$arity: 2, $$s: self}); + }, 0); + return $def(self, '$multiple_underscore?', function $ArgsNode_multiple_underscore$ques$2(arg) { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = ($truthy(($ret_or_3 = arg.$type()['$==']("arg"))) ? (arg.$children().$count()['$=='](1)) : ($ret_or_3)))) ? (arg.$children().$first().$to_s()['$start_with?']("_")) : ($ret_or_2))))) { + return $rb_gt(self.$children().$count(arg), 1) + } else { + return $ret_or_1 + } + }, 1); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/node_with_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $def = Opal.def, $truthy = Opal.truthy; + + Opal.add_stubs('require,attr_reader,attr_accessor,[],meta,s,original_args,push,process,arity_check_node,uses_block?,scope,prepare_block,to_code,new'); + + self.$require("opal/nodes/scope"); + self.$require("opal/nodes/args/parameters"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'NodeWithArgs'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.sexp = nil; + + self.$attr_reader("used_kwargs"); + self.$attr_accessor("arity"); + self.$attr_reader("original_args"); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + self.original_args = self.sexp.$meta()['$[]']("original_args"); + self.used_kwargs = []; + return (self.arity = 0); + }, -1); + + $def(self, '$arity_check_node', function $$arity_check_node() { + var self = this; + + return self.$s("arity_check", self.$original_args()) + }, 0); + + $def(self, '$compile_arity_check', function $$compile_arity_check() { + var self = this; + + return self.$push(self.$process(self.$arity_check_node())) + }, 0); + + $def(self, '$compile_block_arg', function $$compile_block_arg() { + var self = this; + + if ($truthy(self.$scope()['$uses_block?']())) { + return self.$scope().$prepare_block() + } else { + return nil + } + }, 0); + return $def(self, '$parameters_code', function $$parameters_code() { + var self = this; + + return $$$($$('Args'), 'Parameters').$new(self.$original_args()).$to_code() + }, 0); + })($nesting[0], $$('ScopeNode'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/iter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $eqeq = Opal.eqeq, $rb_gt = Opal.rb_gt, $def = Opal.def; + + Opal.add_stubs('require,handle,children,lambda_definition?,scope,is_lambda!,in_scope,identify!,process,inline_args,compile_arity_check,stmt,returned_body,add_temp,to_vars,line,catch_return,unshift,push,await_encountered,<<,arity,self,contains_break?,arity_check?,compiler,parameters_code,has_top_level_mlhs_arg?,has_trailing_comma_in_args?,==,length,>,join,nesting,relative_access,block_arg,prepare_block,each,args,first,updated,body,returns,s,any?,original_args,type,expression,loc,source,match,new,found_break?'); + + self.$require("opal/nodes/node_with_args"); + self.$require("opal/rewriters/break_finder"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'IterNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.define_self = $proto.define_nesting = $proto.define_relative_access = $proto.sexp = nil; + + self.$handle("iter"); + self.$children("inline_args", "body"); + + $def(self, '$compile', function $$compile() { + var self = this, inline_params = nil, to_vars = nil, identity = nil, body_code = nil, blockopts = nil; + + + if ($truthy(self.$scope()['$lambda_definition?']())) { + self['$is_lambda!']() + }; + inline_params = nil; + to_vars = (identity = (body_code = nil)); + $send(self, 'in_scope', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s; + if (self.define_self == null) self.define_self = nil; + + + identity = self.$scope()['$identify!'](); + inline_params = self.$process(self.$inline_args()); + self.$compile_arity_check(); + body_code = self.$stmt(self.$returned_body()); + if ($truthy(self.define_self)) { + self.$add_temp("self = " + (identity) + ".$$s == null ? this : " + (identity) + ".$$s") + }; + to_vars = self.$scope().$to_vars(); + self.$line(body_code); + if ($truthy(self.$scope().$catch_return())) { + + self.$unshift("try {\n"); + self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }"); + return self.$push(" throw $returner; }"); + } else { + return nil + };}, {$$arity: 0, $$s: self}); + self.$unshift(to_vars); + if ($truthy(self.$await_encountered())) { + self.$unshift("async function " + (identity) + "(", inline_params, "){") + } else { + self.$unshift("function " + (identity) + "(", inline_params, "){") + }; + self.$push("}"); + blockopts = []; + blockopts['$<<']("$$arity: " + (self.$arity())); + if ($truthy(self.define_self)) { + blockopts['$<<']("$$s: " + (self.$scope().$self())) + }; + if ($truthy(self['$contains_break?']())) { + blockopts['$<<']("$$brk: $brk") + }; + if ($truthy(self.$compiler()['$arity_check?']())) { + blockopts['$<<']("$$parameters: " + (self.$parameters_code())) + }; + if ($truthy(self['$has_top_level_mlhs_arg?']())) { + blockopts['$<<']("$$has_top_level_mlhs_arg: true") + }; + if ($truthy(self['$has_trailing_comma_in_args?']())) { + blockopts['$<<']("$$has_trailing_comma_in_args: true") + }; + if ($eqeq(blockopts.$length(), 1)) { + self.$push(", " + (self.$arity())) + } else if ($truthy($rb_gt(blockopts.$length(), 1))) { + self.$push(", {", blockopts.$join(", "), "}") + }; + if ($truthy(self.define_nesting)) { + self.$scope().$nesting() + }; + if ($truthy(self.define_relative_access)) { + return self.$scope().$relative_access() + } else { + return nil + }; + }, 0); + + $def(self, '$compile_block_arg', function $$compile_block_arg() { + var self = this; + + if ($truthy(self.$block_arg())) { + return self.$scope().$prepare_block() + } else { + return nil + } + }, 0); + + $def(self, '$extract_underscore_args', function $$extract_underscore_args() { + var self = this, valid_args = nil, caught_blank_argument = nil; + + + valid_args = []; + caught_blank_argument = false; + $send(self.$args().$children(), 'each', [], function $$2(arg){var arg_name = nil; + + + + if (arg == null) arg = nil;; + arg_name = arg.$children().$first(); + if ($eqeq(arg_name, "_")) { + if ($truthy(caught_blank_argument)) { + return nil + } else { + + caught_blank_argument = true; + return valid_args['$<<'](arg); + } + } else { + return valid_args['$<<'](arg) + };}, 1); + return (self.sexp = self.sexp.$updated(nil, [self.$args().$updated(nil, valid_args), self.$body()])); + }, 0); + + $def(self, '$returned_body', function $$returned_body() { + var self = this, $ret_or_1 = nil; + + return self.$compiler().$returns(($truthy(($ret_or_1 = self.$body())) ? ($ret_or_1) : (self.$s("nil")))) + }, 0); + + $def(self, '$has_top_level_mlhs_arg?', function $IterNode_has_top_level_mlhs_arg$ques$3() { + var self = this; + + return $send(self.$original_args().$children(), 'any?', [], function $$4(arg){ + + + if (arg == null) arg = nil;; + return arg.$type()['$==']("mlhs");}, 1) + }, 0); + + $def(self, '$has_trailing_comma_in_args?', function $IterNode_has_trailing_comma_in_args$ques$5() { + var self = this, args_source = nil; + + if (($truthy(self.$original_args().$loc()) && ($truthy(self.$original_args().$loc().$expression())))) { + + args_source = self.$original_args().$loc().$expression().$source(); + return args_source.$match(/,\s*\|/); + } else { + return nil + } + }, 0); + + $def(self, '$arity_check_node', function $$arity_check_node() { + var self = this; + + return self.$s("iter_arity_check", self.$original_args()) + }, 0); + return $def(self, '$contains_break?', function $IterNode_contains_break$ques$6() { + var self = this, finder = nil; + + + finder = $$$($$$($$('Opal'), 'Rewriters'), 'BreakFinder').$new(); + finder.$process(self.sexp); + return finder['$found_break?'](); + }, 0); + })($nesting[0], $$('NodeWithArgs'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/def"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $def = Opal.def, $rb_plus = Opal.rb_plus; + + Opal.add_stubs('require,handle,children,in_scope,mid,mid=,scope,-,==,type,defs=,identify!,identity,block_name=,process,inline_args,stmt,returns,compiler,stmts,compile_block_arg,add_temp,compile_arity_check,unshift,current_indent,to_vars,line,catch_return,push,await_encountered,<<,arity,arity_check?,parameters_code,parse_comments?,comments_code,enable_source_location?,source_location,length,>,join,wrap_with_definition,nesting,relative_access,helper,wrap,self,expr?,+,map,comments,inspect,text'); + + self.$require("opal/nodes/node_with_args"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'DefNode'); + + var $proto = self.$$prototype; + + $proto.define_nesting = $proto.define_relative_access = nil; + + self.$handle("def"); + self.$children("mid", "inline_args", "stmts"); + + $def(self, '$compile', function $$compile() { + var self = this, inline_params = nil, scope_name = nil, blockopts = nil; + + + inline_params = nil; + scope_name = nil; + $send(self, 'in_scope', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s, $writer = nil, stmt_code = nil; + if (self.sexp == null) self.sexp = nil; + if (self.define_self == null) self.define_self = nil; + + + + $writer = [self.$mid()]; + $send(self.$scope(), 'mid=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($eqeq(self.sexp.$type(), "defs")) { + + $writer = [true]; + $send(self.$scope(), 'defs=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + self.$scope()['$identify!'](); + scope_name = self.$scope().$identity(); + + $writer = ["$yield"]; + $send(self.$scope(), 'block_name=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + inline_params = self.$process(self.$inline_args()); + stmt_code = self.$stmt(self.$compiler().$returns(self.$stmts())); + self.$compile_block_arg(); + if ($truthy(self.define_self)) { + self.$add_temp("self = this") + }; + self.$compile_arity_check(); + self.$unshift("\n" + (self.$current_indent()), self.$scope().$to_vars()); + self.$line(stmt_code); + if ($truthy(self.$scope().$catch_return())) { + + self.$unshift("try {\n"); + self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }"); + return self.$push(" throw $returner; }"); + } else { + return nil + };}, {$$arity: 0, $$s: self}); + self.$unshift(") {"); + self.$unshift(inline_params); + self.$unshift("function " + (scope_name) + "("); + if ($truthy(self.$await_encountered())) { + self.$unshift("async ") + }; + self.$line("}"); + blockopts = []; + blockopts['$<<']("$$arity: " + (self.$arity())); + if ($truthy(self.$compiler()['$arity_check?']())) { + blockopts['$<<']("$$parameters: " + (self.$parameters_code())) + }; + if ($truthy(self.$compiler()['$parse_comments?']())) { + blockopts['$<<']("$$comments: " + (self.$comments_code())) + }; + if ($truthy(self.$compiler()['$enable_source_location?']())) { + blockopts['$<<']("$$source_location: " + (self.$source_location())) + }; + if ($eqeq(blockopts.$length(), 1)) { + self.$push(", " + (self.$arity())) + } else if ($truthy($rb_gt(blockopts.$length(), 1))) { + self.$push(", {", blockopts.$join(", "), "}") + }; + self.$wrap_with_definition(); + if ($truthy(self.define_nesting)) { + self.$scope().$nesting() + }; + if ($truthy(self.define_relative_access)) { + return self.$scope().$relative_access() + } else { + return nil + }; + }, 0); + + $def(self, '$wrap_with_definition', function $$wrap_with_definition() { + var self = this; + + + self.$helper("def"); + self.$wrap("$def(" + (self.$scope().$self()) + ", '$" + (self.$mid()) + "', ", ")"); + if ($truthy(self['$expr?']())) { + return nil + } else { + return self.$unshift("\n" + (self.$current_indent())) + }; + }, 0); + return $def(self, '$comments_code', function $$comments_code() { + var self = this; + + return $rb_plus($rb_plus("[", $send(self.$comments(), 'map', [], function $$2(comment){ + + + if (comment == null) comment = nil;; + return comment.$text().$inspect();}, 1).$join(", ")), "]") + }, 0); + })($nesting[0], $$('NodeWithArgs')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/defs"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; + + Opal.add_stubs('require,handle,children,helper,unshift,expr,recvr,mid,push'); + + self.$require("opal/nodes/def"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'DefsNode'); + + + + self.$handle("defs"); + self.$children("recvr", "mid", "inline_args", "stmts"); + return $def(self, '$wrap_with_definition', function $$wrap_with_definition() { + var self = this; + + + self.$helper("defs"); + self.$unshift("$defs(", self.$expr(self.$recvr()), ", '$" + (self.$mid()) + "', "); + return self.$push(")"); + }, 0); + })($nesting[0], $$('DefNode')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/if"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $def = Opal.def, $not = Opal.not, $send = Opal.send, $eqeqeq = Opal.eqeqeq; + + Opal.add_stubs('require,handle,children,should_compile_as_simple_expression?,==,true_body,s,compile_with_binary_or,false_body,compile_with_binary_and,compile_with_ternary,compile_with_if,truthy,falsy,!,push,js_truthy,test,indent,line,stmt,type,expects_expression?,await_encountered,scope,wrap,returnify,returns,compiler,expr?,recv?,simple?,expr,[],meta,sexp,===,single_line?,strip_empty_children,all?,helper,new_temp,top_scope,excl,from,to'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'IfNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$handle("if"); + self.$children("test", "true_body", "false_body"); + + $def(self, '$compile', function $$compile() { + var self = this; + + if ($truthy(self['$should_compile_as_simple_expression?']())) { + if ($eqeq(self.$true_body(), self.$s("true"))) { + return self.$compile_with_binary_or() + } else if ($eqeq(self.$false_body(), self.$s("false"))) { + return self.$compile_with_binary_and() + } else { + return self.$compile_with_ternary() + } + } else { + return self.$compile_with_if() + } + }, 0); + + $def(self, '$compile_with_if', function $$compile_with_if() { + var $a, self = this, truthy = nil, falsy = nil; + + + truthy = self.$truthy(); + falsy = self.$falsy(); + if (($truthy(falsy) && ($not(truthy)))) { + + self.$push("if (!", self.$js_truthy(self.$test()), ") {"); + $a = [truthy, falsy], (falsy = $a[0]), (truthy = $a[1]), $a; + } else { + self.$push("if (", self.$js_truthy(self.$test()), ") {") + }; + if ($truthy(truthy)) { + $send(self, 'indent', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s; + + return self.$line(self.$stmt(truthy))}, {$$arity: 0, $$s: self}) + }; + if ($truthy(falsy)) { + if ($eqeq(falsy.$type(), "if")) { + self.$line("} else ", self.$stmt(falsy)) + } else { + + self.$line("} else {"); + $send(self, 'indent', [], function $$2(){var self = $$2.$$s == null ? this : $$2.$$s; + + return self.$line(self.$stmt(falsy))}, {$$arity: 0, $$s: self}); + self.$line("}"); + } + } else { + + self.$line("}"); + if ($truthy(self['$expects_expression?']())) { + self.$line("return nil;") + }; + }; + if ($truthy(self['$expects_expression?']())) { + if ($truthy(self.$scope().$await_encountered())) { + return self.$wrap("(await (async function() {", "})())") + } else { + return self.$wrap("(function() {", "})()") + } + } else { + return nil + }; + }, 0); + + $def(self, '$truthy', function $$truthy() { + var self = this; + + return self.$returnify(self.$true_body()) + }, 0); + + $def(self, '$falsy', function $$falsy() { + var self = this; + + return self.$returnify(self.$false_body()) + }, 0); + + $def(self, '$returnify', function $$returnify(body) { + var self = this; + + if (($truthy(self['$expects_expression?']()) && ($truthy(body)))) { + return self.$compiler().$returns(body) + } else { + return body + } + }, 1); + + $def(self, '$expects_expression?', function $IfNode_expects_expression$ques$3() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$expr?']()))) { + return $ret_or_1 + } else { + return self['$recv?']() + } + }, 0); + + $def(self, '$should_compile_as_simple_expression?', function $IfNode_should_compile_as_simple_expression$ques$4() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self['$expects_expression?']())) ? (self['$simple?'](self.$true_body())) : ($ret_or_2))))) { + return self['$simple?'](self.$false_body()) + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$compile_with_ternary', function $$compile_with_ternary() { + var self = this, truthy = nil, falsy = nil, $ret_or_1 = nil; + + + truthy = self.$true_body(); + falsy = self.$false_body(); + self.$push("("); + self.$push(self.$js_truthy(self.$test()), " ? "); + self.$push("(", self.$expr(($truthy(($ret_or_1 = truthy)) ? ($ret_or_1) : (self.$s("nil")))), ") : "); + if (($not(falsy) || ($eqeq(falsy.$type(), "if")))) { + self.$push(self.$expr(($truthy(($ret_or_1 = falsy)) ? ($ret_or_1) : (self.$s("nil"))))) + } else { + self.$push("(", self.$expr(($truthy(($ret_or_1 = falsy)) ? ($ret_or_1) : (self.$s("nil")))), ")") + }; + return self.$push(")"); + }, 0); + + $def(self, '$compile_with_binary_and', function $$compile_with_binary_and() { + var self = this, truthy = nil, $ret_or_1 = nil; + + + if ($truthy(self.$sexp().$meta()['$[]']("do_js_truthy_on_true_body"))) { + truthy = self.$js_truthy(($truthy(($ret_or_1 = self.$true_body())) ? ($ret_or_1) : (self.$s("nil")))) + } else { + truthy = self.$expr(($truthy(($ret_or_1 = self.$true_body())) ? ($ret_or_1) : (self.$s("nil")))) + }; + self.$push("("); + self.$push(self.$js_truthy(self.$test()), " && "); + self.$push("(", truthy, ")"); + return self.$push(")"); + }, 0); + + $def(self, '$compile_with_binary_or', function $$compile_with_binary_or() { + var self = this, falsy = nil, $ret_or_1 = nil; + + + if ($truthy(self.$sexp().$meta()['$[]']("do_js_truthy_on_false_body"))) { + falsy = self.$js_truthy(($truthy(($ret_or_1 = self.$false_body())) ? ($ret_or_1) : (self.$s("nil")))) + } else { + falsy = self.$expr(($truthy(($ret_or_1 = self.$false_body())) ? ($ret_or_1) : (self.$s("nil")))) + }; + self.$push("("); + self.$push(self.$js_truthy(self.$test()), " || "); + self.$push("(", falsy, ")"); + return self.$push(")"); + }, 0); + return $def(self, '$simple?', function $IfNode_simple$ques$5(body) { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($eqeqeq($$$($$('AST'), 'Node'), ($ret_or_1 = body))) { + if (($eqeqeq("return", ($ret_or_2 = body.$type())) || (($eqeqeq("js_return", $ret_or_2) || (($eqeqeq("break", $ret_or_2) || (($eqeqeq("next", $ret_or_2) || (($eqeqeq("redo", $ret_or_2) || ($eqeqeq("retry", $ret_or_2)))))))))))) { + return false + } else if ($eqeqeq("xstr", $ret_or_2)) { + return $$('XStringNode')['$single_line?']($$('XStringNode').$strip_empty_children(body.$children())) + } else { + return $send(body.$children(), 'all?', [], function $$6(i){var self = $$6.$$s == null ? this : $$6.$$s; + + + + if (i == null) i = nil;; + return self['$simple?'](i);}, {$$arity: 1, $$s: self}) + } + } else { + return true + } + }, 1); + })($nesting[0], $$('Base'), $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'IFlipFlop'); + + + + self.$handle("iflipflop"); + self.$children("from", "to"); + + $def(self, '$excl', function $$excl() { + + return "" + }, 0); + return $def(self, '$compile', function $$compile() { + var self = this, fun_name = nil, ff = nil; + + + self.$helper("truthy"); + fun_name = self.$top_scope().$new_temp(); + ff = "" + (fun_name) + ".$$ff"; + self.$push("(typeof " + (fun_name) + " === 'undefined' ? (" + (fun_name) + " = function(from, to){"); + self.$push(" if (typeof " + (ff) + " === 'undefined') " + (ff) + " = false;"); + self.$push(" var retval = " + (ff) + ";"); + self.$push(" if (!" + (ff) + ") {"); + self.$push(" " + (ff) + " = retval = $truthy(from());"); + self.$push(" }"); + self.$push(" " + (self.$excl()) + "if (" + (ff) + ") {"); + self.$push(" if ($truthy(to())) " + (ff) + " = false;"); + self.$push(" }"); + self.$push(" return retval;"); + self.$push("}) : " + (fun_name) + ")("); + self.$push(" function() { ", self.$stmt(self.$compiler().$returns(self.$from())), " },"); + self.$push(" function() { ", self.$stmt(self.$compiler().$returns(self.$to())), " }"); + return self.$push(")"); + }, 0); + })($nesting[0], $$('Base')); + return (function($base, $super) { + var self = $klass($base, $super, 'EFlipFlop'); + + + + self.$handle("eflipflop"); + return $def(self, '$excl', function $$excl() { + + return "else " + }, 0); + })($nesting[0], $$('IFlipFlop')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/logic"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_gt = Opal.rb_gt, $not = Opal.not; + + Opal.add_stubs('require,handle,in_while?,push,iter?,scope,expr_or_nil,value,error,===,size,children,s,first,compile_while,compile_iter,[],while_loop,stmt?,line,break_val,nil?,expr,[]=,-,helper,identity,==,empty_splat?,recv,>,find_parent_def,!,lambda?,def?,expr?,return_in_iter?,return_expr_in_def?,scope_to_catch_return,catch_return=,return_val,to_s'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'NextNode'); + + + + self.$handle("next"); + + $def(self, '$compile', function $$compile() { + var self = this; + + if ($truthy(self['$in_while?']())) { + return self.$push("continue;") + } else if ($truthy(self.$scope()['$iter?']())) { + return self.$push("return ", self.$expr_or_nil(self.$value()), ";") + } else { + return self.$error("Invalid next") + } + }, 0); + return $def(self, '$value', function $$value() { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq(0, ($ret_or_1 = self.$children().$size()))) { + return self.$s("nil") + } else if ($eqeqeq(1, $ret_or_1)) { + return self.$children().$first() + } else { + return $send(self, 's', ["array"].concat($to_a(self.$children()))) + } + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'BreakNode'); + + + + self.$handle("break"); + self.$children("value"); + + $def(self, '$compile', function $$compile() { + var self = this; + + if ($truthy(self['$in_while?']())) { + return self.$compile_while() + } else if ($truthy(self.$scope()['$iter?']())) { + return self.$compile_iter() + } else { + return self.$error("void value expression: cannot use break outside of iter/while") + } + }, 0); + + $def(self, '$compile_while', function $$compile_while() { + var self = this; + + if ($truthy(self.$while_loop()['$[]']("closure"))) { + return self.$push("return ", self.$expr_or_nil(self.$value())) + } else { + return self.$push("break;") + } + }, 0); + + $def(self, '$compile_iter', function $$compile_iter() { + var self = this; + + + if (!$truthy(self['$stmt?']())) { + self.$error("break must be used as a statement") + }; + return self.$line("Opal.brk(", self.$break_val(), ", $brk)"); + }, 0); + return $def(self, '$break_val', function $$break_val() { + var self = this; + + if ($truthy(self.$value()['$nil?']())) { + return self.$expr(self.$s("nil")) + } else { + return self.$expr(self.$value()) + } + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'RedoNode'); + + + + self.$handle("redo"); + + $def(self, '$compile', function $$compile() { + var self = this; + + if ($truthy(self['$in_while?']())) { + return self.$compile_while() + } else if ($truthy(self.$scope()['$iter?']())) { + return self.$compile_iter() + } else { + return self.$push("REDO()") + } + }, 0); + + $def(self, '$compile_while', function $$compile_while() { + var self = this, $writer = nil; + + + + $writer = ["use_redo", true]; + $send(self.$while_loop(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self.$push("" + (self.$while_loop()['$[]']("redo_var")) + " = true; continue;"); + }, 0); + return $def(self, '$compile_iter', function $$compile_iter() { + var self = this; + + + self.$helper("slice"); + return self.$push("return " + (self.$scope().$identity()) + ".apply(null, $slice.call(arguments))"); + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'SplatNode'); + + + + self.$handle("splat"); + self.$children("value"); + + $def(self, '$empty_splat?', function $SplatNode_empty_splat$ques$1() { + var self = this; + + return self.$value()['$=='](self.$s("array")) + }, 0); + return $def(self, '$compile', function $$compile() { + var self = this; + + if ($truthy(self['$empty_splat?']())) { + return self.$push("[]") + } else { + + self.$helper("to_a"); + return self.$push("$to_a(", self.$recv(self.$value()), ")"); + } + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'ReturnNode'); + + + + self.$handle("return"); + self.$children("value"); + + $def(self, '$return_val', function $$return_val() { + var self = this; + + if ($truthy(self.$value()['$nil?']())) { + return self.$expr(self.$s("nil")) + } else if ($truthy($rb_gt(self.$children().$size(), 1))) { + return self.$expr($send(self, 's', ["array"].concat($to_a(self.$children())))) + } else { + return self.$expr(self.$value()) + } + }, 0); + + $def(self, '$return_in_iter?', function $ReturnNode_return_in_iter$ques$2() { + var self = this, parent_def = nil; + + if ((($truthy(self.$scope()['$iter?']()) && ($not(self.$scope()['$lambda?']()))) && ($truthy((parent_def = self.$scope().$find_parent_def()))))) { + return parent_def + } else { + return nil + } + }, 0); + + $def(self, '$return_expr_in_def?', function $ReturnNode_return_expr_in_def$ques$3() { + var self = this; + + if (($truthy(self['$expr?']()) && (($truthy(self.$scope()['$def?']()) || ($truthy(self.$scope()['$lambda?']())))))) { + return self.$scope() + } else { + return nil + } + }, 0); + + $def(self, '$scope_to_catch_return', function $$scope_to_catch_return() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$return_in_iter?']()))) { + return $ret_or_1 + } else { + return self['$return_expr_in_def?']() + } + }, 0); + return $def(self, '$compile', function $$compile() { + var self = this, def_scope = nil, $writer = nil; + + if ($truthy((def_scope = self.$scope_to_catch_return()))) { + + + $writer = [true]; + $send(def_scope, 'catch_return=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self.$push("Opal.ret(", self.$return_val(), ")"); + } else if ($truthy(self['$stmt?']())) { + return self.$push("return ", self.$return_val()) + } else { + return self.$error("void value expression: cannot return as an expression") + } + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'JSReturnNode'); + + + + self.$handle("js_return"); + self.$children("value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$push("return "); + return self.$push(self.$expr(self.$value())); + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'JSTempNode'); + + + + self.$handle("js_tmp"); + self.$children("value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$push(self.$value().$to_s()) + }, 0); + })($nesting[0], $$('Base')); + return (function($base, $super) { + var self = $klass($base, $super, 'BlockPassNode'); + + + + self.$handle("block_pass"); + self.$children("value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$push(self.$expr(self.$s("send", self.$value(), "to_proc", self.$s("arglist")))) + }, 0); + })($nesting[0], $$('Base')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/definitions"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $range = Opal.range, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $eqeq = Opal.eqeq, $to_a = Opal.to_a, $slice = Opal.slice, $rb_plus = Opal.rb_plus, $hash2 = Opal.hash2, $const_set = Opal.const_set; + + Opal.add_stubs('require,handle,children,each,line,self,scope,expr,===,type,new_name,helper,inspect,[],to_s,first,old_name,push,error,empty?,stmt?,compile_children,simple_children?,compile_inline_children,>,size,wrap,==,returned_children,await_encountered,parent,+,returns,compiler,s,process,fragment,freeze,none?,include?,map,each_with_index,reject,to_proc'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'UndefNode'); + + + + self.$handle("undef"); + self.$children("value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return $send(self.$children(), 'each', [], function $$1(child){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (child == null) child = nil;; + return self.$line("Opal.udef(" + (self.$scope().$self()) + ", '$' + ", self.$expr(child), ");");}, {$$arity: 1, $$s: self}) + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'AliasNode'); + + + + self.$handle("alias"); + self.$children("new_name", "old_name"); + return $def(self, '$compile', function $$compile() { + var self = this, $ret_or_1 = nil, new_name_str = nil, old_name_str = nil; + + if ($eqeqeq("gvar", ($ret_or_1 = self.$new_name().$type()))) { + + self.$helper("alias_gvar"); + new_name_str = self.$new_name().$children().$first().$to_s()['$[]']($range(1, -1, false)).$inspect(); + old_name_str = self.$old_name().$children().$first().$to_s()['$[]']($range(1, -1, false)).$inspect(); + return self.$push("$alias_gvar(", new_name_str, ", ", old_name_str, ")"); + } else if (($eqeqeq("dsym", $ret_or_1) || ($eqeqeq("sym", $ret_or_1)))) { + + self.$helper("alias"); + return self.$push("$alias(" + (self.$scope().$self()) + ", ", self.$expr(self.$new_name()), ", ", self.$expr(self.$old_name()), ")"); + } else { + return self.$error("Opal doesn't know yet how to alias with " + (self.$new_name().$type())) + } + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'BeginNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.level = $proto.returned_children = nil; + + self.$handle("begin"); + + $def(self, '$compile', function $$compile() { + var self = this; + + + if ($truthy(self.$children()['$empty?']())) { + return self.$push("nil") + }; + if ($truthy(self['$stmt?']())) { + return self.$compile_children(self.$children(), self.level) + } else if ($truthy(self['$simple_children?']())) { + + self.$compile_inline_children(self.$children(), self.level); + if ($truthy($rb_gt(self.$children().$size(), 1))) { + return self.$wrap("(", ")") + } else { + return nil + }; + } else if ($eqeq(self.$children().$size(), 1)) { + return self.$compile_inline_children(self.$returned_children(), self.level) + } else { + + self.$compile_children(self.$returned_children(), self.level); + if ($truthy(self.$scope().$parent().$await_encountered())) { + return self.$wrap("(await (async function() {", "})())") + } else { + return self.$wrap("(function() {", "})()") + }; + }; + }, 0); + + $def(self, '$returned_children', function $$returned_children() { + var $a, $b, self = this, $ret_or_1 = nil, rest = nil, last_child = nil; + + return (self.returned_children = ($truthy(($ret_or_1 = self.returned_children)) ? ($ret_or_1) : (($a = [].concat($to_a(self.$children())), $b = $a.length - 1, $b = ($b < 0) ? 0 : $b, (rest = $slice.call($a, 0, $b)), (last_child = ($a[$b] == null ? nil : $a[$b])), $a, ($truthy(last_child) ? ($rb_plus(rest, [self.$compiler().$returns(last_child)])) : ([self.$s("nil")])))))) + }, 0); + + $def(self, '$compile_children', function $$compile_children(children, level) { + var self = this; + + return $send(children, 'each', [], function $$2(child){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (child == null) child = nil;; + return self.$line(self.$process(child, level), self.$fragment(";", $hash2(["loc"], {"loc": false})));}, {$$arity: 1, $$s: self}) + }, 2); + $const_set($nesting[0], 'COMPLEX_CHILDREN', ["while", "while_post", "until", "until_post", "js_return"].$freeze()); + + $def(self, '$simple_children?', function $BeginNode_simple_children$ques$3() { + var self = this; + + return $send(self.$children(), 'none?', [], function $$4(child){ + + + if (child == null) child = nil;; + return $$('COMPLEX_CHILDREN')['$include?'](child.$type());}, 1) + }, 0); + return $def(self, '$compile_inline_children', function $$compile_inline_children(children, level) { + var self = this, processed_children = nil; + + + processed_children = $send(children, 'map', [], function $$5(child){var self = $$5.$$s == null ? this : $$5.$$s; + + + + if (child == null) child = nil;; + return self.$process(child, level);}, {$$arity: 1, $$s: self}); + return $send($send(processed_children, 'reject', [], "empty?".$to_proc()), 'each_with_index', [], function $$6(child, idx){var self = $$6.$$s == null ? this : $$6.$$s; + + + + if (child == null) child = nil;; + + if (idx == null) idx = nil;; + if (!$eqeq(idx, 0)) { + self.$push(self.$fragment(", ", $hash2(["loc"], {"loc": false}))) + }; + return self.$push(child);}, {$$arity: 2, $$s: self}); + }, 2); + })($nesting[0], $$('ScopeNode'), $nesting); + return (function($base, $super) { + var self = $klass($base, $super, 'KwBeginNode'); + + + return self.$handle("kwbegin") + })($nesting[0], $$('BeginNode')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/yield"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def; + + Opal.add_stubs('require,find_yielding_scope,uses_block!,block_name,block_name=,-,yields_single_arg?,children,push,expr,first,wrap,s,uses_splat?,scope,def?,parent,!,==,size,any?,type,handle,compile_call'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'BaseYieldNode'); + + + + + $def(self, '$compile_call', function $$compile_call() { + var self = this, yielding_scope = nil, $ret_or_1 = nil, $writer = nil, block_name = nil; + + + yielding_scope = self.$find_yielding_scope(); + yielding_scope['$uses_block!'](); + if ($truthy(($ret_or_1 = yielding_scope.$block_name()))) { + $ret_or_1 + } else { + + $writer = ["$yield"]; + $send(yielding_scope, 'block_name=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + block_name = yielding_scope.$block_name(); + if ($truthy(self['$yields_single_arg?'](self.$children()))) { + + self.$push(self.$expr(self.$children().$first())); + return self.$wrap("Opal.yield1(" + (block_name) + ", ", ")"); + } else { + + self.$push(self.$expr($send(self, 's', ["arglist"].concat($to_a(self.$children()))))); + if ($truthy(self['$uses_splat?'](self.$children()))) { + return self.$wrap("Opal.yieldX(" + (block_name) + ", ", ")") + } else { + return self.$wrap("Opal.yieldX(" + (block_name) + ", [", "])") + }; + }; + }, 0); + + $def(self, '$find_yielding_scope', function $$find_yielding_scope() { + var $a, self = this, working = nil; + + + working = self.$scope(); + while ($truthy(working)) { + + if (($truthy(working.$block_name()) || ($truthy(working['$def?']())))) { + break; + }; + working = working.$parent(); + }; + return working; + }, 0); + + $def(self, '$yields_single_arg?', function $BaseYieldNode_yields_single_arg$ques$1(children) { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$uses_splat?'](children)['$!']()))) { + return children.$size()['$=='](1) + } else { + return $ret_or_1 + } + }, 1); + return $def(self, '$uses_splat?', function $BaseYieldNode_uses_splat$ques$2(children) { + + return $send(children, 'any?', [], function $$3(child){ + + + if (child == null) child = nil;; + return child.$type()['$==']("splat");}, 1) + }, 1); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'YieldNode'); + + + + self.$handle("yield"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$compile_call() + }, 0); + })($nesting[0], $$('BaseYieldNode')); + return (function($base, $super) { + var self = $klass($base, $super, 'ReturnableYieldNode'); + + + + self.$handle("returnable_yield"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$compile_call(); + return self.$wrap("return ", ";"); + }, 0); + })($nesting[0], $$('BaseYieldNode')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/rescue"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $def = Opal.def, $range = Opal.range, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq; + + Opal.add_stubs('require,handle,children,push,in_ensure,line,stmt,body_sexp,indent,has_rescue_else?,unshift,rescue_else_code,process,compiler,ensr_sexp,wrap_in_closure?,await_encountered,scope,wrap,returns,begn,ensr,s,recv?,expr?,rescue_else_sexp,stmt?,detect,[],!=,type,rescue_else_sexp=,-,handle_rescue_else_manually?,in_rescue,body_code,each_with_index,==,retry_id,body,nil?,!,in_ensure?,gen_retry_id,attr_reader,expr,klasses,lvar,updated,in_resbody,rescue_body,klasses_sexp,in_resbody?,error,current_rescue'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'EnsureNode'); + + + + self.$handle("ensure"); + self.$children("begn", "ensr"); + + $def(self, '$compile', function $$compile() { + var self = this; + + + self.$push("try {"); + $send(self, 'in_ensure', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s; + + return self.$line(self.$stmt(self.$body_sexp()))}, {$$arity: 0, $$s: self}); + self.$line("} finally {"); + $send(self, 'indent', [], function $$2(){var self = $$2.$$s == null ? this : $$2.$$s; + if (self.level == null) self.level = nil; + + if ($truthy(self['$has_rescue_else?']())) { + + self.$unshift("var $no_errors = true; "); + self.$line("var $rescue_else_result;"); + self.$line("if ($no_errors) { "); + $send(self, 'indent', [], function $$3(){var self = $$3.$$s == null ? this : $$3.$$s; + + + self.$line("$rescue_else_result = (function() {"); + $send(self, 'indent', [], function $$4(){var self = $$4.$$s == null ? this : $$4.$$s; + + return self.$line(self.$stmt(self.$rescue_else_code()))}, {$$arity: 0, $$s: self}); + return self.$line("})();");}, {$$arity: 0, $$s: self}); + self.$line("}"); + self.$line(self.$compiler().$process(self.$ensr_sexp(), self.level)); + return self.$line("if ($no_errors) { return $rescue_else_result; }"); + } else { + return self.$line(self.$compiler().$process(self.$ensr_sexp(), self.level)) + }}, {$$arity: 0, $$s: self}); + self.$line("}"); + if ($truthy(self['$wrap_in_closure?']())) { + if ($truthy(self.$scope().$await_encountered())) { + return self.$wrap("(await (async function() { ", "; })())") + } else { + return self.$wrap("(function() { ", "; })()") + } + } else { + return nil + }; + }, 0); + + $def(self, '$body_sexp', function $$body_sexp() { + var self = this; + + if ($truthy(self['$wrap_in_closure?']())) { + return self.$compiler().$returns(self.$begn()) + } else { + return self.$begn() + } + }, 0); + + $def(self, '$ensr_sexp', function $$ensr_sexp() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$ensr()))) { + return $ret_or_1 + } else { + return self.$s("nil") + } + }, 0); + + $def(self, '$wrap_in_closure?', function $EnsureNode_wrap_in_closure$ques$5() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self['$recv?']())) ? ($ret_or_2) : (self['$expr?']()))))) { + return $ret_or_1 + } else { + return self['$has_rescue_else?']() + } + }, 0); + return $def(self, '$rescue_else_code', function $$rescue_else_code() { + var self = this, rescue_else_code = nil; + + + rescue_else_code = self.$scope().$rescue_else_sexp(); + if (!$truthy(self['$stmt?']())) { + rescue_else_code = self.$compiler().$returns(rescue_else_code) + }; + return rescue_else_code; + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'RescueNode'); + + var $proto = self.$$prototype; + + $proto.retry_id = nil; + + self.$handle("rescue"); + self.$children("body"); + + $def(self, '$compile', function $$compile() { + var self = this, $writer = nil, _has_rescue_handlers = nil; + + + + $writer = [$send(self.$children()['$[]']($range(1, -1, false)), 'detect', [], function $$6(sexp){var $ret_or_1 = nil; + + + + if (sexp == null) sexp = nil;; + if ($truthy(($ret_or_1 = sexp))) { + return sexp.$type()['$!=']("resbody") + } else { + return $ret_or_1 + };}, 1)]; + $send(self.$scope(), 'rescue_else_sexp=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + _has_rescue_handlers = false; + if ($truthy(self['$handle_rescue_else_manually?']())) { + self.$line("var $no_errors = true;") + }; + $send(self, 'in_rescue', [self], function $$7(){var self = $$7.$$s == null ? this : $$7.$$s; + + + self.$push("try {"); + $send(self, 'indent', [], function $$8(){var self = $$8.$$s == null ? this : $$8.$$s; + + return self.$line(self.$stmt(self.$body_code()))}, {$$arity: 0, $$s: self}); + self.$line("} catch ($err) {"); + $send(self, 'indent', [], function $$9(){var self = $$9.$$s == null ? this : $$9.$$s; + + + if ($truthy(self['$has_rescue_else?']())) { + self.$line("$no_errors = false;") + }; + $send(self.$children()['$[]']($range(1, -1, false)), 'each_with_index', [], function $$10(child, idx){var self = $$10.$$s == null ? this : $$10.$$s; + if (self.level == null) self.level = nil; + + + + if (child == null) child = nil;; + + if (idx == null) idx = nil;; + if (!($truthy(child) && ($eqeq(child.$type(), "resbody")))) { + return nil; + }; + _has_rescue_handlers = true; + if (!$eqeq(idx, 0)) { + self.$push(" else ") + }; + return self.$line(self.$process(child, self.level));}, {$$arity: 2, $$s: self}); + return self.$push(" else { throw $err; }");}, {$$arity: 0, $$s: self}); + self.$line("}"); + if ($truthy(self['$handle_rescue_else_manually?']())) { + + self.$push("finally {"); + $send(self, 'indent', [], function $$11(){var self = $$11.$$s == null ? this : $$11.$$s; + + + self.$line("if ($no_errors) { "); + $send(self, 'indent', [], function $$12(){var self = $$12.$$s == null ? this : $$12.$$s; + + return self.$line(self.$stmt(self.$rescue_else_code()))}, {$$arity: 0, $$s: self}); + return self.$line("}");}, {$$arity: 0, $$s: self}); + self.$push("}"); + }; + if ($truthy(self.$retry_id())) { + return self.$wrap("" + (self.$retry_id()) + ": do { ", " break; } while(1)") + } else { + return nil + };}, {$$arity: 0, $$s: self}); + if (($truthy(self['$expr?']()) || ($truthy(self['$recv?']())))) { + if ($truthy(self.$scope().$await_encountered())) { + return self.$wrap("(await (async function() { ", "})())") + } else { + return self.$wrap("(function() { ", "})()") + } + } else { + return nil + }; + }, 0); + + $def(self, '$body_code', function $$body_code() { + var self = this, body_code = nil; + + + body_code = (($truthy(self.$body()['$nil?']()) || ($eqeq(self.$body().$type(), "resbody"))) ? (self.$s("nil")) : (self.$body())); + if (!$truthy(self['$stmt?']())) { + body_code = self.$compiler().$returns(body_code) + }; + return body_code; + }, 0); + + $def(self, '$rescue_else_code', function $$rescue_else_code() { + var self = this, rescue_else_code = nil; + + + rescue_else_code = self.$scope().$rescue_else_sexp(); + if (!$truthy(self['$stmt?']())) { + rescue_else_code = self.$compiler().$returns(rescue_else_code) + }; + return rescue_else_code; + }, 0); + + $def(self, '$handle_rescue_else_manually?', function $RescueNode_handle_rescue_else_manually$ques$13() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$in_ensure?']()['$!']()))) { + return self['$has_rescue_else?']() + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$gen_retry_id', function $$gen_retry_id() { + var self = this, $ret_or_1 = nil; + + return (self.retry_id = ($truthy(($ret_or_1 = self.retry_id)) ? ($ret_or_1) : (self.$scope().$gen_retry_id()))) + }, 0); + return self.$attr_reader("retry_id"); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'ResBodyNode'); + + + + self.$handle("resbody"); + self.$children("klasses_sexp", "lvar", "body"); + + $def(self, '$compile', function $$compile() { + var self = this; + + + self.$push("if (Opal.rescue($err, ", self.$expr(self.$klasses()), ")) {"); + $send(self, 'indent', [], function $$14(){var self = $$14.$$s == null ? this : $$14.$$s; + + + if ($truthy(self.$lvar())) { + self.$push(self.$expr(self.$lvar().$updated(nil, [].concat($to_a(self.$lvar().$children())).concat([self.$s("js_tmp", "$err")])))) + }; + self.$line("try {"); + $send(self, 'indent', [], function $$15(){var self = $$15.$$s == null ? this : $$15.$$s; + + return $send(self, 'in_resbody', [], function $$16(){var self = $$16.$$s == null ? this : $$16.$$s; + + return self.$line(self.$stmt(self.$rescue_body()))}, {$$arity: 0, $$s: self})}, {$$arity: 0, $$s: self}); + return self.$line("} finally { Opal.pop_exception(); }");}, {$$arity: 0, $$s: self}); + return self.$line("}"); + }, 0); + + $def(self, '$klasses', function $$klasses() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$klasses_sexp()))) { + return $ret_or_1 + } else { + return self.$s("array", self.$s("const", nil, "StandardError")) + } + }, 0); + return $def(self, '$rescue_body', function $$rescue_body() { + var self = this, body_code = nil, $ret_or_1 = nil; + + + body_code = ($truthy(($ret_or_1 = self.$body())) ? ($ret_or_1) : (self.$s("nil"))); + if (!$truthy(self['$stmt?']())) { + body_code = self.$compiler().$returns(body_code) + }; + return body_code; + }, 0); + })($nesting[0], $$('Base')); + return (function($base, $super) { + var self = $klass($base, $super, 'RetryNode'); + + + + self.$handle("retry"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + if (!$truthy(self['$in_resbody?']())) { + self.$error("Invalid retry") + }; + return self.$push("continue " + (self.$scope().$current_rescue().$gen_retry_id())); + }, 0); + })($nesting[0], $$('Base')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/super"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $slice = Opal.slice, $truthy = Opal.truthy, $send = Opal.send, $def = Opal.def, $to_ary = Opal.to_ary, $eqeq = Opal.eqeq, $not = Opal.not, $eqeqeq = Opal.eqeqeq, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $rb_gt = Opal.rb_gt; + + Opal.add_stubs('require,include?,type,s,helper,push,compile_receiver,compile_method_body,compile_method_name,compile_arguments,compile_block_pass,private,def?,scope,find_parent_def,to_s,mid,def_scope,identify!,self,method_id,def_scope_identity,defined_check_param,allow_stubs,super_chain,join,map,implicit_arguments_param,super_method_invocation,iter?,super_block_invocation,raise,handle,wrap,uses_block!,compile_using_send,==,iter,block_name,implicit_arglist,!,<<,new,each,children,original_args,[],===,+,[]=,-,>,meta,empty?'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'BaseSuperNode'); + + var $proto = self.$$prototype; + + $proto.sexp = $proto.def_scope = nil; + + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $b, $c, $yield = $$initialize.$$p || nil, self = this, args = nil, rest = nil, last_child = nil; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + args = [].concat($to_a(self.sexp)); + $b = [].concat($to_a(args)), $c = $b.length - 1, $c = ($c < 0) ? 0 : $c, (rest = $slice.call($b, 0, $c)), (last_child = ($b[$c] == null ? nil : $b[$c])), $b; + if (($truthy(last_child) && ($truthy(["iter", "block_pass"]['$include?'](last_child.$type()))))) { + + self.iter = last_child; + args = rest; + } else { + self.iter = self.$s("js_tmp", "null") + }; + self.arglist = $send(self, 's', ["arglist"].concat($to_a(args))); + return (self.recvr = self.$s("self")); + }, -1); + + $def(self, '$compile_using_send', function $$compile_using_send() { + var self = this; + + + self.$helper("send2"); + self.$push("$send2("); + self.$compile_receiver(); + self.$compile_method_body(); + self.$compile_method_name(); + self.$compile_arguments(); + self.$compile_block_pass(); + return self.$push(")"); + }, 0); + self.$private(); + + $def(self, '$def_scope', function $$def_scope() { + var self = this, $ret_or_1 = nil; + + return (self.def_scope = ($truthy(($ret_or_1 = self.def_scope)) ? ($ret_or_1) : ($truthy(self.$scope()['$def?']()) ? (self.$scope()) : (self.$scope().$find_parent_def())))) + }, 0); + + $def(self, '$defined_check_param', function $$defined_check_param() { + + return "false" + }, 0); + + $def(self, '$implicit_arguments_param', function $$implicit_arguments_param() { + + return "false" + }, 0); + + $def(self, '$method_id', function $$method_id() { + var self = this; + + return self.$def_scope().$mid().$to_s() + }, 0); + + $def(self, '$def_scope_identity', function $$def_scope_identity() { + var self = this; + + return self.$def_scope()['$identify!'](self.$def_scope().$mid()) + }, 0); + + $def(self, '$allow_stubs', function $$allow_stubs() { + + return "true" + }, 0); + + $def(self, '$super_method_invocation', function $$super_method_invocation() { + var self = this; + + + self.$helper("find_super"); + return "$find_super(" + (self.$scope().$self()) + ", '" + (self.$method_id()) + "', " + (self.$def_scope_identity()) + ", " + (self.$defined_check_param()) + ", " + (self.$allow_stubs()) + ")"; + }, 0); + + $def(self, '$super_block_invocation', function $$super_block_invocation() { + var $a, $b, self = this, chain = nil, cur_defn = nil, mid = nil, trys = nil; + + + self.$helper("find_block_super"); + $b = self.$scope().$super_chain(), $a = $to_ary($b), (chain = ($a[0] == null ? nil : $a[0])), (cur_defn = ($a[1] == null ? nil : $a[1])), (mid = ($a[2] == null ? nil : $a[2])), $b; + trys = $send(chain, 'map', [], function $$1(c){ + + + if (c == null) c = nil;; + return "" + (c) + ".$$def";}, 1).$join(" || "); + return "$find_block_super(" + (self.$scope().$self()) + ", " + (mid) + ", (" + (trys) + " || " + (cur_defn) + "), " + (self.$defined_check_param()) + ", " + (self.$implicit_arguments_param()) + ")"; + }, 0); + + $def(self, '$compile_method_body', function $$compile_method_body() { + var self = this; + + + self.$push(", "); + if ($truthy(self.$scope()['$def?']())) { + return self.$push(self.$super_method_invocation()) + } else if ($truthy(self.$scope()['$iter?']())) { + return self.$push(self.$super_block_invocation()) + } else { + return self.$raise("super must be called from method body or block") + }; + }, 0); + return $def(self, '$compile_method_name', function $$compile_method_name() { + var $a, $b, self = this, _chain = nil, _cur_defn = nil, mid = nil; + + if ($truthy(self.$scope()['$def?']())) { + return self.$push(", '" + (self.$method_id()) + "'") + } else if ($truthy(self.$scope()['$iter?']())) { + + $b = self.$scope().$super_chain(), $a = $to_ary($b), (_chain = ($a[0] == null ? nil : $a[0])), (_cur_defn = ($a[1] == null ? nil : $a[1])), (mid = ($a[2] == null ? nil : $a[2])), $b; + return self.$push(", " + (mid)); + } else { + return nil + } + }, 0); + })($nesting[0], $$('CallNode')); + (function($base, $super) { + var self = $klass($base, $super, 'DefinedSuperNode'); + + + + self.$handle("defined_super"); + + $def(self, '$allow_stubs', function $$allow_stubs() { + + return "false" + }, 0); + + $def(self, '$defined_check_param', function $$defined_check_param() { + + return "true" + }, 0); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$compile_receiver(); + self.$compile_method_body(); + return self.$wrap("((", ") != null ? \"super\" : nil)"); + }, 0); + })($nesting[0], $$('BaseSuperNode')); + (function($base, $super) { + var self = $klass($base, $super, 'SuperNode'); + + + + self.$handle("super"); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + if ($truthy(self.$scope()['$def?']())) { + return self.$scope()['$uses_block!']() + } else { + return nil + }; + }, -1); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$compile_using_send() + }, 0); + })($nesting[0], $$('BaseSuperNode')); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ZsuperNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$handle("zsuper"); + + $def(self, '$implicit_arguments_param', function $$implicit_arguments_param() { + + return "true" + }, 0); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $yield = $$initialize.$$p || nil, self = this, $ret_or_1 = nil; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + if ($eqeq(self.$iter().$type(), "iter")) { + return nil + } else { + + self.$scope()['$uses_block!'](); + return (self.iter = self.$s("js_tmp", ($truthy(($ret_or_1 = self.$scope().$block_name())) ? ($ret_or_1) : ("$yield")))); + }; + }, -1); + + $def(self, '$compile', function $$compile() { + var self = this, implicit_args = nil, block_pass = nil; + + + if ($truthy(self.$def_scope())) { + + implicit_args = self.$implicit_arglist(); + if (($truthy(self.$block_name()) && ($not(self.$iter())))) { + + block_pass = self.$s("block_pass", self.$s("lvar", self.$block_name())); + implicit_args['$<<'](block_pass); + }; + self.arglist = $send(self, 's', ["arglist"].concat($to_a(implicit_args))); + }; + return self.$compile_using_send(); + }, 0); + + $def(self, '$implicit_arglist', function $$implicit_arglist() { + var self = this, args = nil, kwargs = nil, same_arg_counter = nil; + + + args = []; + kwargs = []; + same_arg_counter = $$('Hash').$new(0); + $send(self.$def_scope().$original_args().$children(), 'each', [], function $$2(sexp){var self = $$2.$$s == null ? this : $$2.$$s, lvar_name = nil, $ret_or_1 = nil, arg_node = nil, $writer = nil, key_name = nil; + + + + if (sexp == null) sexp = nil;; + lvar_name = sexp.$children()['$[]'](0); + if (($eqeqeq("arg", ($ret_or_1 = sexp.$type())) || ($eqeqeq("optarg", $ret_or_1)))) { + + arg_node = self.$s("lvar", lvar_name); + if ($eqeq(lvar_name['$[]'](0), "_")) { + + + $writer = [lvar_name, $rb_plus(same_arg_counter['$[]'](lvar_name), 1)]; + $send(same_arg_counter, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy($rb_gt(same_arg_counter['$[]'](lvar_name), 1))) { + arg_node = self.$s("js_tmp", "" + (lvar_name) + "_$" + (same_arg_counter['$[]'](lvar_name))) + }; + }; + return args['$<<'](arg_node); + } else if ($eqeqeq("restarg", $ret_or_1)) { + + arg_node = ($truthy(lvar_name) ? (self.$s("lvar", lvar_name)) : (self.$s("js_tmp", "$rest_arg"))); + return args['$<<'](self.$s("splat", arg_node)); + } else if (($eqeqeq("kwarg", $ret_or_1) || ($eqeqeq("kwoptarg", $ret_or_1)))) { + + key_name = sexp.$meta()['$[]']("arg_name"); + return kwargs['$<<'](self.$s("pair", self.$s("sym", key_name), self.$s("lvar", lvar_name))); + } else if ($eqeqeq("kwrestarg", $ret_or_1)) { + + arg_node = ($truthy(lvar_name) ? (self.$s("lvar", lvar_name)) : (self.$s("js_tmp", "$kw_rest_arg"))); + return kwargs['$<<'](self.$s("kwsplat", arg_node)); + } else { + return nil + };}, {$$arity: 1, $$s: self}); + if (!$truthy(kwargs['$empty?']())) { + args['$<<']($send(self, 's', ["hash"].concat($to_a(kwargs)))) + }; + return args; + }, 0); + return $def(self, '$block_name', function $$block_name() { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq($$$($$$($$('Opal'), 'Nodes'), 'IterNode'), ($ret_or_1 = self.$def_scope()))) { + return self.$def_scope().$block_name() + } else if ($eqeqeq($$$($$$($$('Opal'), 'Nodes'), 'DefNode'), $ret_or_1)) { + return self.$def_scope().$block_name() + } else { + return self.$raise("Don't know what to do with super in the scope " + (self.$def_scope())) + } + }, 0); + })($nesting[0], $$('SuperNode'), $nesting); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/version"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set; + + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return $const_set($nesting[0], 'VERSION', "1.4.1") + })($nesting[0], $nesting) +}; + +Opal.modules["opal/nodes/top"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $def = Opal.def; + + Opal.add_stubs('require,handle,children,top_scope=,compiler,-,push,version_comment,in_scope,==,body,s,line,use_strict?,stmt,stmts,is_a?,eval?,add_temp,add_used_helpers,to_vars,scope,compile_method_stubs,compile_irb_vars,compile_end_construct,opening,closing,await_encountered,requirable?,unshift,inspect,module_name,file,esm?,returns,irb?,each,to_a,helpers,method_missing?,method_calls,join,map,to_proc,empty?,eof_content'); + + self.$require("pathname"); + self.$require("opal/version"); + self.$require("opal/nodes/scope"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'TopNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$handle("top"); + self.$children("body"); + + $def(self, '$compile', function $$compile() { + var self = this, $writer = nil; + + + + $writer = [self]; + $send(self.$compiler(), 'top_scope=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.$push(self.$version_comment()); + $send(self, 'in_scope', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s, body_code = nil; + if (self.define_nesting == null) self.define_nesting = nil; + if (self.define_self == null) self.define_self = nil; + if (self.define_relative_access == null) self.define_relative_access = nil; + if (self.define_absolute_const == null) self.define_absolute_const = nil; + + if ($eqeq(self.$body(), self.$s("nil"))) { + return self.$line("return Opal.nil;") + } else { + + if ($truthy(self.$compiler()['$use_strict?']())) { + self.$line("\"use strict\";") + }; + body_code = self.$stmt(self.$stmts()); + if (!$truthy(body_code['$is_a?']($$('Array')))) { + body_code = [body_code] + }; + if ($truthy(self.$compiler()['$eval?']())) { + if ($truthy(self.define_nesting)) { + self.$add_temp("$nesting = self.$$is_a_module ? [self] : [self.$$class]") + } + } else { + + if ($truthy(self.define_self)) { + self.$add_temp("self = Opal.top") + }; + if ($truthy(self.define_nesting)) { + self.$add_temp("$nesting = []") + }; + }; + if ($truthy(self.define_relative_access)) { + self.$add_temp("$$ = Opal.$r($nesting)") + }; + self.$add_temp("nil = Opal.nil"); + if ($truthy(self.define_absolute_const)) { + self.$add_temp("$$$ = Opal.$$$") + }; + self.$add_used_helpers(); + self.$line(self.$scope().$to_vars()); + self.$compile_method_stubs(); + self.$compile_irb_vars(); + self.$compile_end_construct(); + return self.$line(body_code); + }}, {$$arity: 0, $$s: self}); + self.$opening(); + return self.$closing(); + }, 0); + + $def(self, '$opening', function $$opening() { + var self = this, async_prefix = nil; + + + if ($truthy(self.$await_encountered())) { + async_prefix = "async " + }; + if ($truthy(self.$compiler()['$requirable?']())) { + return self.$unshift("Opal.modules[" + ($$$($$('Opal'), 'Compiler').$module_name(self.$compiler().$file()).$inspect()) + "] = " + (async_prefix) + "function(Opal) {") + } else if ($truthy(self.$compiler()['$eval?']())) { + return self.$unshift("(" + (async_prefix) + "function(Opal, self) {") + } else if ($truthy(self.$compiler()['$esm?']())) { + return self.$unshift("export default Opal.queue(" + (async_prefix) + "function(Opal) {") + } else { + return self.$unshift("Opal.queue(" + (async_prefix) + "function(Opal) {") + }; + }, 0); + + $def(self, '$closing', function $$closing() { + var self = this; + + if ($truthy(self.$compiler()['$requirable?']())) { + return self.$line("};\n") + } else if ($truthy(self.$compiler()['$eval?']())) { + return self.$line("})(Opal, self);") + } else { + return self.$line("});\n") + } + }, 0); + + $def(self, '$stmts', function $$stmts() { + var self = this; + + return self.$compiler().$returns(self.$body()) + }, 0); + + $def(self, '$absolute_const', function $$absolute_const() { + var self = this; + + + self.define_absolute_const = true; + return "$$$"; + }, 0); + + $def(self, '$compile_irb_vars', function $$compile_irb_vars() { + var self = this; + + if ($truthy(self.$compiler()['$irb?']())) { + return self.$line("if (!Opal.irb_vars) { Opal.irb_vars = {}; }") + } else { + return nil + } + }, 0); + + $def(self, '$add_used_helpers', function $$add_used_helpers() { + var self = this; + + return $send(self.$compiler().$helpers().$to_a(), 'each', [], function $$2(h){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (h == null) h = nil;; + return self.$add_temp("$" + (h) + " = Opal." + (h));}, {$$arity: 1, $$s: self}) + }, 0); + + $def(self, '$compile_method_stubs', function $$compile_method_stubs() { + var self = this, calls = nil, stubs = nil; + + if ($truthy(self.$compiler()['$method_missing?']())) { + + calls = self.$compiler().$method_calls(); + stubs = $send(calls.$to_a(), 'map', [], "to_s".$to_proc()).$join(","); + if ($truthy(stubs['$empty?']())) { + return nil + } else { + return self.$line("Opal.add_stubs('" + (stubs) + "');") + }; + } else { + return nil + } + }, 0); + + $def(self, '$compile_end_construct', function $$compile_end_construct() { + var self = this, content = nil; + + if ($truthy((content = self.$compiler().$eof_content()))) { + + self.$line("var $__END__ = Opal.Object.$new();"); + return self.$line("$__END__.$read = function() { return " + (content.$inspect()) + "; };"); + } else { + return nil + } + }, 0); + return $def(self, '$version_comment', function $$version_comment() { + + return "/* Generated by Opal " + ($$$($$('Opal'), 'VERSION')) + " */" + }, 0); + })($nesting[0], $$('ScopeNode'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/while"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def; + + Opal.add_stubs('require,handle,children,js_truthy,test,with_temp,in_while,compiler,wrap_in_closure?,[]=,while_loop,-,indent,stmt,body,uses_redo?,compile_with_redo,compile_without_redo,await_encountered,scope,wrap,private,push,compile_while,while_open,while_close,line,[],expr?,recv?'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'WhileNode'); + + + + self.$handle("while"); + self.$children("test", "body"); + + $def(self, '$compile', function $$compile() { + var self = this, test_code = nil; + + + test_code = self.$js_truthy(self.$test()); + $send(self, 'with_temp', [], function $$1(redo_var){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (redo_var == null) redo_var = nil;; + return $send(self.$compiler(), 'in_while', [], function $$2(){var self = $$2.$$s == null ? this : $$2.$$s, $writer = nil, body_code = nil; + + + if ($truthy(self['$wrap_in_closure?']())) { + + $writer = ["closure", true]; + $send(self.$while_loop(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + + $writer = ["redo_var", redo_var]; + $send(self.$while_loop(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + body_code = $send(self, 'indent', [], function $$3(){var self = $$3.$$s == null ? this : $$3.$$s; + + return self.$stmt(self.$body())}, {$$arity: 0, $$s: self}); + if ($truthy(self['$uses_redo?']())) { + return self.$compile_with_redo(test_code, body_code, redo_var) + } else { + return self.$compile_without_redo(test_code, body_code) + };}, {$$arity: 0, $$s: self});}, {$$arity: 1, $$s: self}); + if ($truthy(self['$wrap_in_closure?']())) { + if ($truthy(self.$scope().$await_encountered())) { + return self.$wrap("(await (async function() {", "; return nil; })())") + } else { + return self.$wrap("(function() {", "; return nil; })()") + } + } else { + return nil + }; + }, 0); + self.$private(); + + $def(self, '$compile_with_redo', function $$compile_with_redo(test_code, body_code, redo_var) { + var self = this; + + + self.$push("" + (redo_var) + " = false; "); + return self.$compile_while([redo_var, " || ", test_code], ["" + (redo_var) + " = false;", body_code]); + }, 3); + + $def(self, '$compile_without_redo', function $$compile_without_redo(test_code, body_code) { + var self = this; + + return self.$compile_while([test_code], [body_code]) + }, 2); + + $def(self, '$compile_while', function $$compile_while(test_code, body_code) { + var self = this; + + + $send(self, 'push', [self.$while_open()].concat($to_a(test_code)).concat([self.$while_close()])); + $send(self, 'indent', [], function $$4(){var self = $$4.$$s == null ? this : $$4.$$s; + + return $send(self, 'line', $to_a(body_code))}, {$$arity: 0, $$s: self}); + return self.$line("}"); + }, 2); + + $def(self, '$while_open', function $$while_open() { + + return "while (" + }, 0); + + $def(self, '$while_close', function $$while_close() { + + return ") {" + }, 0); + + $def(self, '$uses_redo?', function $WhileNode_uses_redo$ques$5() { + var self = this; + + return self.$while_loop()['$[]']("use_redo") + }, 0); + return $def(self, '$wrap_in_closure?', function $WhileNode_wrap_in_closure$ques$6() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$expr?']()))) { + return $ret_or_1 + } else { + return self['$recv?']() + } + }, 0); + })($nesting[0], $$('Base')); + (function($base, $super) { + var self = $klass($base, $super, 'UntilNode'); + + + + self.$handle("until"); + self.$private(); + + $def(self, '$while_open', function $$while_open() { + + return "while (!(" + }, 0); + return $def(self, '$while_close', function $$while_close() { + + return ")) {" + }, 0); + })($nesting[0], $$('WhileNode')); + (function($base, $super) { + var self = $klass($base, $super, 'WhilePostNode'); + + + + self.$handle("while_post"); + self.$private(); + + $def(self, '$compile_while', function $$compile_while(test_code, body_code) { + var self = this; + + + self.$push("do {"); + $send(self, 'indent', [], function $$7(){var self = $$7.$$s == null ? this : $$7.$$s; + + return $send(self, 'line', $to_a(body_code))}, {$$arity: 0, $$s: self}); + return $send(self, 'line', ["} ", self.$while_open()].concat($to_a(test_code)).concat([self.$while_close()])); + }, 2); + return $def(self, '$while_close', function $$while_close() { + + return ");" + }, 0); + })($nesting[0], $$('WhileNode')); + return (function($base, $super) { + var self = $klass($base, $super, 'UntilPostNode'); + + + + self.$handle("until_post"); + self.$private(); + + $def(self, '$while_open', function $$while_open() { + + return "while(!(" + }, 0); + return $def(self, '$while_close', function $$while_close() { + + return "));" + }, 0); + })($nesting[0], $$('WhilePostNode')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/hash"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $def = Opal.def, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $to_ary = Opal.to_ary, $hash2 = Opal.hash2, $rb_minus = Opal.rb_minus; + + Opal.add_stubs('require,handle,attr_accessor,each,children,===,type,<<,[],all?,keys,include?,has_kwsplat,compile_merge,simple_keys?,compile_hash2,compile_hash,helper,==,empty?,expr,s,each_with_index,push,wrap,times,size,inspect,to_s,values,[]=,-,join,value'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + (function($base, $super) { + var self = $klass($base, $super, 'HashNode'); + + + + self.$handle("hash"); + self.$attr_accessor("has_kwsplat", "keys", "values"); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a($rest_arg), $yield); + self.has_kwsplat = false; + self.keys = []; + self.values = []; + return $send(self.$children(), 'each', [], function $$1(child){var self = $$1.$$s == null ? this : $$1.$$s, $ret_or_1 = nil; + if (self.keys == null) self.keys = nil; + if (self.values == null) self.values = nil; + + + + if (child == null) child = nil;; + if ($eqeqeq("kwsplat", ($ret_or_1 = child.$type()))) { + return (self.has_kwsplat = true) + } else if ($eqeqeq("pair", $ret_or_1)) { + + self.keys['$<<'](child.$children()['$[]'](0)); + return self.values['$<<'](child.$children()['$[]'](1)); + } else { + return nil + };}, {$$arity: 1, $$s: self}); + }, -1); + + $def(self, '$simple_keys?', function $HashNode_simple_keys$ques$2() { + var self = this; + + return $send(self.$keys(), 'all?', [], function $$3(key){ + + + if (key == null) key = nil;; + return ["sym", "str"]['$include?'](key.$type());}, 1) + }, 0); + + $def(self, '$compile', function $$compile() { + var self = this; + + if ($truthy(self.$has_kwsplat())) { + return self.$compile_merge() + } else if ($truthy(self['$simple_keys?']())) { + return self.$compile_hash2() + } else { + return self.$compile_hash() + } + }, 0); + + $def(self, '$compile_merge', function $$compile_merge() { + var $a, self = this, result = nil, seq = nil; + + + self.$helper("hash"); + $a = [[], []], (result = $a[0]), (seq = $a[1]), $a; + $send(self.$children(), 'each', [], function $$4(child){var self = $$4.$$s == null ? this : $$4.$$s; + + + + if (child == null) child = nil;; + if ($eqeq(child.$type(), "kwsplat")) { + + if (!$truthy(seq['$empty?']())) { + result['$<<'](self.$expr($send(self, 's', ["hash"].concat($to_a(seq))))) + }; + result['$<<'](self.$expr(child)); + return (seq = []); + } else { + return seq['$<<'](child) + };}, {$$arity: 1, $$s: self}); + if (!$truthy(seq['$empty?']())) { + result['$<<'](self.$expr($send(self, 's', ["hash"].concat($to_a(seq))))) + }; + return $send(result, 'each_with_index', [], function $$5(fragment, idx){var self = $$5.$$s == null ? this : $$5.$$s; + + + + if (fragment == null) fragment = nil;; + + if (idx == null) idx = nil;; + if ($eqeq(idx, 0)) { + return self.$push(fragment) + } else { + return self.$push(".$merge(", fragment, ")") + };}, {$$arity: 2, $$s: self}); + }, 0); + + $def(self, '$compile_hash', function $$compile_hash() { + var self = this; + + + self.$helper("hash"); + $send(self.$children(), 'each_with_index', [], function $$6(pair, idx){var $a, $b, self = $$6.$$s == null ? this : $$6.$$s, key = nil, value = nil; + + + + if (pair == null) pair = nil;; + + if (idx == null) idx = nil;; + $b = pair.$children(), $a = $to_ary($b), (key = ($a[0] == null ? nil : $a[0])), (value = ($a[1] == null ? nil : $a[1])), $b; + if (!$eqeq(idx, 0)) { + self.$push(", ") + }; + return self.$push(self.$expr(key), ", ", self.$expr(value));}, {$$arity: 2, $$s: self}); + return self.$wrap("$hash(", ")"); + }, 0); + return $def(self, '$compile_hash2', function $$compile_hash2() { + var $a, self = this, hash_obj = nil, hash_keys = nil; + + + $a = [$hash2([], {}), []], (hash_obj = $a[0]), (hash_keys = $a[1]), $a; + self.$helper("hash2"); + $send(self.$keys().$size(), 'times', [], function $$7(idx){var self = $$7.$$s == null ? this : $$7.$$s, key = nil, $writer = nil; + + + + if (idx == null) idx = nil;; + key = self.$keys()['$[]'](idx).$children()['$[]'](0).$to_s().$inspect(); + if (!$truthy(hash_obj['$include?'](key))) { + hash_keys['$<<'](key) + }; + + $writer = [key, self.$expr(self.$values()['$[]'](idx))]; + $send(hash_obj, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, {$$arity: 1, $$s: self}); + $send(hash_keys, 'each_with_index', [], function $$8(key, idx){var self = $$8.$$s == null ? this : $$8.$$s; + + + + if (key == null) key = nil;; + + if (idx == null) idx = nil;; + if (!$eqeq(idx, 0)) { + self.$push(", ") + }; + self.$push("" + (key) + ": "); + return self.$push(hash_obj['$[]'](key));}, {$$arity: 2, $$s: self}); + return self.$wrap("$hash2([" + (hash_keys.$join(", ")) + "], {", "})"); + }, 0); + })($nesting[0], $$('Base')); + return (function($base, $super) { + var self = $klass($base, $super, 'KwSplatNode'); + + + + self.$handle("kwsplat"); + self.$children("value"); + return $def(self, '$compile', function $$compile() { + var self = this; + + return self.$push("Opal.to_hash(", self.$expr(self.$value()), ")") + }, 0); + })($nesting[0], $$('Base')); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/array"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $def = Opal.def; + + Opal.add_stubs('require,handle,empty?,children,push,each,==,type,expr,<<,fragment'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ArrayNode'); + + + + self.$handle("array"); + return $def(self, '$compile', function $$compile() { + var $a, self = this, code = nil, work = nil, join = nil; + + + if ($truthy(self.$children()['$empty?']())) { + return self.$push("[]") + }; + $a = [[], []], (code = $a[0]), (work = $a[1]), $a; + $send(self.$children(), 'each', [], function $$1(child){var self = $$1.$$s == null ? this : $$1.$$s, splat = nil, part = nil; + + + + if (child == null) child = nil;; + splat = child.$type()['$==']("splat"); + part = self.$expr(child); + if ($truthy(splat)) { + + if ($truthy(work['$empty?']())) { + if ($truthy(code['$empty?']())) { + code['$<<'](self.$fragment("[].concat("))['$<<'](part)['$<<'](self.$fragment(")")) + } else { + code['$<<'](self.$fragment(".concat("))['$<<'](part)['$<<'](self.$fragment(")")) + } + } else { + + if ($truthy(code['$empty?']())) { + code['$<<'](self.$fragment("["))['$<<'](work)['$<<'](self.$fragment("]")) + } else { + code['$<<'](self.$fragment(".concat(["))['$<<'](work)['$<<'](self.$fragment("])")) + }; + code['$<<'](self.$fragment(".concat("))['$<<'](part)['$<<'](self.$fragment(")")); + }; + return (work = []); + } else { + + if (!$truthy(work['$empty?']())) { + work['$<<'](self.$fragment(", ")) + }; + return work['$<<'](part); + };}, {$$arity: 1, $$s: self}); + if (!$truthy(work['$empty?']())) { + + join = [self.$fragment("["), work, self.$fragment("]")]; + if ($truthy(code['$empty?']())) { + code = join + } else { + code.$push([self.$fragment(".concat("), join, self.$fragment(")")]) + }; + }; + return self.$push(code); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/defined"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $eqeqeq = Opal.eqeqeq, $eqeq = Opal.eqeq, $def = Opal.def, $truthy = Opal.truthy, $to_a = Opal.to_a, $slice = Opal.slice, $send = Opal.send, $range = Opal.range; + + Opal.add_stubs('require,handle,children,===,type,value,push,inspect,to_s,==,[],size,compile_defined_send,wrap,compile_defined_ivar,compile_defined_super,compile_defined_yield,compile_defined_xstr,compile_defined_const,compile_defined_cvar,compile_defined_gvar,compile_defined_back_ref,compile_defined_nth_ref,compile_defined_array,respond_to?,__send__,new_temp,scope,expr,wrap_with_try_catch,mid_to_jsid,compile_defined,compile_send_recv_doesnt_raise,self,each,s,uses_block!,block_name,find_parent_def,nil?,relative_access,absolute_const,top_scope,class_variable_owner,helper,include?,each_with_index'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'DefinedNode'); + + + + self.$handle("defined?"); + self.$children("value"); + + $def(self, '$compile', function $$compile() { + var self = this, $ret_or_1 = nil; + + if (($eqeqeq("self", ($ret_or_1 = self.$value().$type())) || (($eqeqeq("nil", $ret_or_1) || (($eqeqeq("false", $ret_or_1) || ($eqeqeq("true", $ret_or_1)))))))) { + return self.$push(self.$value().$type().$to_s().$inspect()) + } else if (($eqeqeq("lvasgn", $ret_or_1) || (($eqeqeq("ivasgn", $ret_or_1) || (($eqeqeq("gvasgn", $ret_or_1) || (($eqeqeq("cvasgn", $ret_or_1) || (($eqeqeq("casgn", $ret_or_1) || (($eqeqeq("op_asgn", $ret_or_1) || (($eqeqeq("or_asgn", $ret_or_1) || ($eqeqeq("and_asgn", $ret_or_1)))))))))))))))) { + return self.$push("'assignment'") + } else if ($eqeqeq("lvar", $ret_or_1)) { + return self.$push("'local-variable'") + } else if ($eqeqeq("begin", $ret_or_1)) { + if (($eqeq(self.$value().$children().$size(), 1) && ($eqeq(self.$value().$children()['$[]'](0).$type(), "masgn")))) { + return self.$push("'assignment'") + } else { + return self.$push("'expression'") + } + } else if ($eqeqeq("send", $ret_or_1)) { + + self.$compile_defined_send(self.$value()); + return self.$wrap("(", " ? 'method' : nil)"); + } else if ($eqeqeq("ivar", $ret_or_1)) { + + self.$compile_defined_ivar(self.$value()); + return self.$wrap("(", " ? 'instance-variable' : nil)"); + } else if (($eqeqeq("zsuper", $ret_or_1) || ($eqeqeq("super", $ret_or_1)))) { + return self.$compile_defined_super() + } else if ($eqeqeq("yield", $ret_or_1)) { + + self.$compile_defined_yield(); + return self.$wrap("(", " ? 'yield' : nil)"); + } else if ($eqeqeq("xstr", $ret_or_1)) { + return self.$compile_defined_xstr(self.$value()) + } else if ($eqeqeq("const", $ret_or_1)) { + + self.$compile_defined_const(self.$value()); + return self.$wrap("(", " ? 'constant' : nil)"); + } else if ($eqeqeq("cvar", $ret_or_1)) { + + self.$compile_defined_cvar(self.$value()); + return self.$wrap("(", " ? 'class variable' : nil)"); + } else if ($eqeqeq("gvar", $ret_or_1)) { + + self.$compile_defined_gvar(self.$value()); + return self.$wrap("(", " ? 'global-variable' : nil)"); + } else if ($eqeqeq("back_ref", $ret_or_1)) { + + self.$compile_defined_back_ref(); + return self.$wrap("(", " ? 'global-variable' : nil)"); + } else if ($eqeqeq("nth_ref", $ret_or_1)) { + + self.$compile_defined_nth_ref(); + return self.$wrap("(", " ? 'global-variable' : nil)"); + } else if ($eqeqeq("array", $ret_or_1)) { + + self.$compile_defined_array(self.$value()); + return self.$wrap("(", " ? 'expression' : nil)"); + } else { + return self.$push("'expression'") + } + }, 0); + + $def(self, '$compile_defined', function $$compile_defined(node) { + var self = this, type = nil, node_tmp = nil; + + + type = node.$type(); + if ($truthy(self['$respond_to?']("compile_defined_" + (type)))) { + return self.$__send__("compile_defined_" + (type), node) + } else { + + node_tmp = self.$scope().$new_temp(); + self.$push("(" + (node_tmp) + " = ", self.$expr(node), ")"); + return node_tmp; + }; + }, 1); + + $def(self, '$wrap_with_try_catch', function $$wrap_with_try_catch(code) { + var self = this, returning_tmp = nil; + + + returning_tmp = self.$scope().$new_temp(); + self.$push("(" + (returning_tmp) + " = (function() { try {"); + self.$push(" return " + (code) + ";"); + self.$push("} catch ($err) {"); + self.$push(" if (Opal.rescue($err, [Opal.Exception])) {"); + self.$push(" try {"); + self.$push(" return false;"); + self.$push(" } finally { Opal.pop_exception() }"); + self.$push(" } else { throw $err; }"); + self.$push("}})())"); + return returning_tmp; + }, 1); + + $def(self, '$compile_send_recv_doesnt_raise', function $$compile_send_recv_doesnt_raise(recv_code) { + var self = this; + + return self.$wrap_with_try_catch(recv_code) + }, 1); + + $def(self, '$compile_defined_send', function $$compile_defined_send(node) { + var $a, self = this, recv = nil, method_name = nil, args = nil, mid = nil, recv_code = nil, recv_tmp = nil, recv_value_tmp = nil, meth_tmp = nil; + + + $a = [].concat($to_a(node)), (recv = ($a[0] == null ? nil : $a[0])), (method_name = ($a[1] == null ? nil : $a[1])), (args = $slice.call($a, 2)), $a; + mid = self.$mid_to_jsid(method_name.$to_s()); + if ($truthy(recv)) { + + recv_code = self.$compile_defined(recv); + self.$push(" && "); + if ($eqeq(recv.$type(), "send")) { + + recv_code = self.$compile_send_recv_doesnt_raise(recv_code); + self.$push(" && "); + }; + recv_tmp = self.$scope().$new_temp(); + self.$push("(" + (recv_tmp) + " = ", recv_code, ", " + (recv_tmp) + ") && "); + } else { + recv_tmp = self.$scope().$self() + }; + recv_value_tmp = self.$scope().$new_temp(); + self.$push("(" + (recv_value_tmp) + " = " + (recv_tmp) + ") && "); + meth_tmp = self.$scope().$new_temp(); + self.$push("(((" + (meth_tmp) + " = " + (recv_value_tmp) + (mid) + ") && !" + (meth_tmp) + ".$$stub)"); + self.$push(" || " + (recv_value_tmp) + "['$respond_to_missing?']('" + (method_name) + "'))"); + $send(args, 'each', [], function $$1(arg){var self = $$1.$$s == null ? this : $$1.$$s, $ret_or_1 = nil; + + + + if (arg == null) arg = nil;; + if ($eqeqeq("block_pass", ($ret_or_1 = arg.$type()))) { + return nil + } else { + + self.$push(" && "); + return self.$compile_defined(arg); + };}, {$$arity: 1, $$s: self}); + self.$wrap("(", ")"); + return "" + (meth_tmp) + "()"; + }, 1); + + $def(self, '$compile_defined_ivar', function $$compile_defined_ivar(node) { + var self = this, name = nil, tmp = nil; + + + name = node.$children()['$[]'](0).$to_s()['$[]']($range(1, -1, false)); + tmp = self.$scope().$new_temp(); + self.$push("(" + (tmp) + " = " + (self.$scope().$self()) + "['" + (name) + "'], " + (tmp) + " != null && " + (tmp) + " !== nil)"); + return tmp; + }, 1); + + $def(self, '$compile_defined_super', function $$compile_defined_super() { + var self = this; + + return self.$push(self.$expr(self.$s("defined_super"))) + }, 0); + + $def(self, '$compile_defined_yield', function $$compile_defined_yield() { + var self = this, block_name = nil, $ret_or_1 = nil; + + + self.$scope()['$uses_block!'](); + block_name = ($truthy(($ret_or_1 = self.$scope().$block_name())) ? ($ret_or_1) : (self.$scope().$find_parent_def().$block_name())); + self.$push("(" + (block_name) + " != null && " + (block_name) + " !== nil)"); + return block_name; + }, 0); + + $def(self, '$compile_defined_xstr', function $$compile_defined_xstr(node) { + var self = this; + + return self.$push("(typeof(", self.$expr(node), ") !== \"undefined\")") + }, 1); + + $def(self, '$compile_defined_const', function $$compile_defined_const(node) { + var $a, self = this, const_scope = nil, const_name = nil, const_tmp = nil, const_scope_tmp = nil; + + + $a = [].concat($to_a(node)), (const_scope = ($a[0] == null ? nil : $a[0])), (const_name = ($a[1] == null ? nil : $a[1])), $a; + const_tmp = self.$scope().$new_temp(); + if ($truthy(const_scope['$nil?']())) { + self.$push("(" + (const_tmp) + " = " + (self.$scope().$relative_access()) + "('" + (const_name) + "', 'skip_raise'))") + } else if ($eqeq(const_scope, self.$s("cbase"))) { + self.$push("(" + (const_tmp) + " = " + (self.$top_scope().$absolute_const()) + "('::', '" + (const_name) + "', 'skip_raise'))") + } else { + + const_scope_tmp = self.$compile_defined(const_scope); + self.$push(" && (" + (const_tmp) + " = " + (self.$top_scope().$absolute_const()) + "(" + (const_scope_tmp) + ", '" + (const_name) + "', 'skip_raise'))"); + }; + return const_tmp; + }, 1); + + $def(self, '$compile_defined_cvar', function $$compile_defined_cvar(node) { + var $a, self = this, cvar_name = nil, _ = nil, cvar_tmp = nil; + + + $a = [].concat($to_a(node)), (cvar_name = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), $a; + cvar_tmp = self.$scope().$new_temp(); + self.$push("(" + (cvar_tmp) + " = " + (self.$class_variable_owner()) + ".$$cvars['" + (cvar_name) + "'], " + (cvar_tmp) + " != null)"); + return cvar_tmp; + }, 1); + + $def(self, '$compile_defined_gvar', function $$compile_defined_gvar(node) { + var self = this, name = nil, gvar_temp = nil; + + + self.$helper("gvars"); + name = node.$children()['$[]'](0).$to_s()['$[]']($range(1, -1, false)); + gvar_temp = self.$scope().$new_temp(); + if ($truthy(["~", "!"]['$include?'](name))) { + self.$push("(" + (gvar_temp) + " = ", self.$expr(node), " || true)") + } else { + self.$push("(" + (gvar_temp) + " = $gvars[" + (name.$inspect()) + "], " + (gvar_temp) + " != null)") + }; + return gvar_temp; + }, 1); + + $def(self, '$compile_defined_back_ref', function $$compile_defined_back_ref() { + var self = this, back_ref_temp = nil; + + + self.$helper("gvars"); + back_ref_temp = self.$scope().$new_temp(); + self.$push("(" + (back_ref_temp) + " = $gvars['~'], " + (back_ref_temp) + " != null && " + (back_ref_temp) + " !== nil)"); + return back_ref_temp; + }, 0); + + $def(self, '$compile_defined_nth_ref', function $$compile_defined_nth_ref() { + var self = this, nth_ref_tmp = nil; + + + self.$helper("gvars"); + nth_ref_tmp = self.$scope().$new_temp(); + self.$push("(" + (nth_ref_tmp) + " = $gvars['~'], " + (nth_ref_tmp) + " != null && " + (nth_ref_tmp) + " != nil)"); + return nth_ref_tmp; + }, 0); + return $def(self, '$compile_defined_array', function $$compile_defined_array(node) { + var self = this; + + return $send(node.$children(), 'each_with_index', [], function $$2(child, idx){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (child == null) child = nil;; + + if (idx == null) idx = nil;; + if (!$eqeq(idx, 0)) { + self.$push(" && ") + }; + return self.$compile_defined(child);}, {$$arity: 2, $$s: self}) + }, 1); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/masgn"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $send = Opal.send, $def = Opal.def, $rb_ge = Opal.rb_ge, $not = Opal.not, $rb_plus = Opal.rb_plus; + + Opal.add_stubs('require,freeze,handle,children,new_temp,scope,==,type,rhs,push,expr,any?,size,compile_masgn,lhs,helper,queue_temp,take_while,!=,drop,each_with_index,compile_assignment,empty?,shift,[],<<,dup,s,>=,!,updated,include?,+,last,raise'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'MassAssignNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $const_set($nesting[0], 'SIMPLE_ASSIGNMENT', ["lvasgn", "ivasgn", "lvar", "gvasgn", "cdecl", "casgn"].$freeze()); + self.$handle("masgn"); + self.$children("lhs", "rhs"); + + $def(self, '$compile', function $$compile() { + var self = this, array = nil, rhs_len = nil, retval = nil; + + + array = self.$scope().$new_temp(); + if ($eqeq(self.$rhs().$type(), "array")) { + + self.$push("" + (array) + " = ", self.$expr(self.$rhs())); + rhs_len = ($truthy($send(self.$rhs().$children(), 'any?', [], function $$1(c){ + + + if (c == null) c = nil;; + return c.$type()['$==']("splat");}, 1)) ? (nil) : (self.$rhs().$children().$size())); + self.$compile_masgn(self.$lhs().$children(), array, rhs_len); + self.$push(", " + (array)); + } else { + + self.$helper("to_ary"); + retval = self.$scope().$new_temp(); + self.$push("" + (retval) + " = ", self.$expr(self.$rhs())); + self.$push(", " + (array) + " = $to_ary(" + (retval) + ")"); + self.$compile_masgn(self.$lhs().$children(), array); + self.$push(", " + (retval)); + self.$scope().$queue_temp(retval); + }; + return self.$scope().$queue_temp(array); + }, 0); + + $def(self, '$compile_masgn', function $$compile_masgn(lhs_items, array, len) { + var self = this, pre_splat = nil, post_splat = nil, splat = nil, part = nil, tmp = nil; + + + + if (len == null) len = nil;; + pre_splat = $send(lhs_items, 'take_while', [], function $$2(child){ + + + if (child == null) child = nil;; + return child.$type()['$!=']("splat");}, 1); + post_splat = lhs_items.$drop(pre_splat.$size()); + $send(pre_splat, 'each_with_index', [], function $$3(child, idx){var self = $$3.$$s == null ? this : $$3.$$s; + + + + if (child == null) child = nil;; + + if (idx == null) idx = nil;; + return self.$compile_assignment(child, array, idx, len);}, {$$arity: 2, $$s: self}); + if ($truthy(post_splat['$empty?']())) { + return nil + } else { + + splat = post_splat.$shift(); + if ($truthy(post_splat['$empty?']())) { + if ($truthy((part = splat.$children()['$[]'](0)))) { + + self.$helper("slice"); + part = part.$dup()['$<<'](self.$s("js_tmp", "$slice.call(" + (array) + ", " + (pre_splat.$size()) + ")")); + self.$push(", "); + return self.$push(self.$expr(part)); + } else { + return nil + } + } else { + + tmp = self.$scope().$new_temp(); + self.$push(", " + (tmp) + " = " + (array) + ".length - " + (post_splat.$size())); + self.$push(", " + (tmp) + " = (" + (tmp) + " < " + (pre_splat.$size()) + ") ? " + (pre_splat.$size()) + " : " + (tmp)); + if ($truthy((part = splat.$children()['$[]'](0)))) { + + self.$helper("slice"); + part = part.$dup()['$<<'](self.$s("js_tmp", "$slice.call(" + (array) + ", " + (pre_splat.$size()) + ", " + (tmp) + ")")); + self.$push(", "); + self.$push(self.$expr(part)); + }; + $send(post_splat, 'each_with_index', [], function $$4(child, idx){var self = $$4.$$s == null ? this : $$4.$$s; + + + + if (child == null) child = nil;; + + if (idx == null) idx = nil;; + if ($eqeq(idx, 0)) { + return self.$compile_assignment(child, array, tmp) + } else { + return self.$compile_assignment(child, array, "" + (tmp) + " + " + (idx)) + };}, {$$arity: 2, $$s: self}); + return self.$scope().$queue_temp(tmp); + }; + }; + }, -3); + return $def(self, '$compile_assignment', function $$compile_assignment(child, array, idx, len) { + var self = this, assign = nil, part = nil, tmp = nil; + + + + if (len == null) len = nil;; + assign = (($not(len) || ($truthy($rb_ge(idx, len)))) ? (self.$s("js_tmp", "(" + (array) + "[" + (idx) + "] == null ? nil : " + (array) + "[" + (idx) + "])")) : (self.$s("js_tmp", "" + (array) + "[" + (idx) + "]"))); + part = child.$updated(); + if ($truthy($$('SIMPLE_ASSIGNMENT')['$include?'](child.$type()))) { + part = part.$updated(nil, $rb_plus(part.$children(), [assign])) + } else if ($eqeq(child.$type(), "send")) { + part = part.$updated(nil, $rb_plus(part.$children(), [assign])) + } else if ($eqeq(child.$type(), "attrasgn")) { + part.$last()['$<<'](assign) + } else if ($eqeq(child.$type(), "mlhs")) { + + self.$helper("to_ary"); + tmp = self.$scope().$new_temp(); + self.$push(", (" + (tmp) + " = $to_ary(" + (assign.$children()['$[]'](0)) + ")"); + self.$compile_masgn(child.$children(), tmp); + self.$push(")"); + self.$scope().$queue_temp(tmp); + return nil; + } else { + self.$raise("Bad child node in masgn LHS: " + (child) + ". LHS: " + (self.$lhs())) + }; + self.$push(", "); + return self.$push(self.$expr(part)); + }, -4); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/arglist"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $to_a = Opal.to_a, $def = Opal.def; + + Opal.add_stubs('require,handle,each,children,==,type,expr,empty?,<<,fragment,push'); + + self.$require("opal/nodes/base"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'ArglistNode'); + + + + self.$handle("arglist"); + return $def(self, '$compile', function $$compile() { + var $a, self = this, code = nil, work = nil, join = nil; + + + $a = [[], []], (code = $a[0]), (work = $a[1]), $a; + $send(self.$children(), 'each', [], function $$1(current){var self = $$1.$$s == null ? this : $$1.$$s, splat = nil, arg = nil; + + + + if (current == null) current = nil;; + splat = current.$type()['$==']("splat"); + arg = self.$expr(current); + if ($truthy(splat)) { + + if ($truthy(work['$empty?']())) { + if ($truthy(code['$empty?']())) { + code['$<<'](arg) + } else { + code['$<<'](self.$fragment(".concat("))['$<<'](arg)['$<<'](self.$fragment(")")) + } + } else { + + if ($truthy(code['$empty?']())) { + code['$<<'](self.$fragment("["))['$<<'](work)['$<<'](self.$fragment("]")) + } else { + code['$<<'](self.$fragment(".concat(["))['$<<'](work)['$<<'](self.$fragment("])")) + }; + code['$<<'](self.$fragment(".concat("))['$<<'](arg)['$<<'](self.$fragment(")")); + }; + return (work = []); + } else { + + if (!$truthy(work['$empty?']())) { + work['$<<'](self.$fragment(", ")) + }; + return work['$<<'](arg); + };}, {$$arity: 1, $$s: self}); + if (!$truthy(work['$empty?']())) { + + join = work; + if ($truthy(code['$empty?']())) { + code = join + } else { + code['$<<'](self.$fragment(".concat(["))['$<<'](join)['$<<'](self.$fragment("])")) + }; + }; + return $send(self, 'push', $to_a(code)); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes/x_string"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $def = Opal.def, $defs = Opal.defs, $lambda = Opal.lambda, $eqeqeq = Opal.eqeqeq, $eqeq = Opal.eqeq, $not = Opal.not, $range = Opal.range; + + Opal.add_stubs('handle,unpack_return,children,strip_empty_children,single_line?,compile_single_line,each,compile_child,recv?,wrap,push,==,size,none?,type,end_with?,source,expression,loc,dup,nil?,empty?,rstrip,any?,[],first,shift,last,pop,private,===,include?,self,scope,new,expr,raise,s,strip,=~,!,extract_last_value,expr?,warning,compiler,line'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'XStringNode'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.should_add_semicolon = $proto.returning = nil; + + self.$handle("xstr"); + + $def(self, '$compile', function $$compile() { + var self = this, unpacked_children = nil, stripped_children = nil; + + + self.should_add_semicolon = false; + unpacked_children = self.$unpack_return(self.$children()); + stripped_children = $$('XStringNode').$strip_empty_children(unpacked_children); + if ($truthy($$('XStringNode')['$single_line?'](stripped_children))) { + self.$compile_single_line(stripped_children) + } else { + $send(unpacked_children, 'each', [], function $$1(c){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (c == null) c = nil;; + return self.$compile_child(c);}, {$$arity: 1, $$s: self}) + }; + if ($truthy(self['$recv?']())) { + self.$wrap("(", ")") + }; + if ($truthy(self.should_add_semicolon)) { + return self.$push(";") + } else { + return nil + }; + }, 0); + $defs(self, '$single_line?', function $XStringNode_single_line$ques$2(children) { + var $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = children.$size()['$=='](1)))) { + return $ret_or_1 + } else { + return $send(children, 'none?', [], function $$3(c){var $ret_or_2 = nil; + + + + if (c == null) c = nil;; + if ($truthy(($ret_or_2 = c.$type()['$==']("str")))) { + return c.$loc().$expression().$source()['$end_with?']("\n") + } else { + return $ret_or_2 + };}, 1) + } + }, 1); + $defs(self, '$strip_empty_children', function $$strip_empty_children(children) { + var $a, empty_line = nil, $ret_or_1 = nil; + + + children = children.$dup(); + empty_line = $lambda(function $$4(child){var $ret_or_1 = nil, $ret_or_2 = nil; + + + + if (child == null) child = nil;; + if ($truthy(($ret_or_1 = child['$nil?']()))) { + return $ret_or_1 + } else { + + if ($truthy(($ret_or_2 = child.$type()['$==']("str")))) { + return child.$loc().$expression().$source().$rstrip()['$empty?']() + } else { + return $ret_or_2 + }; + };}, 1); + while ($truthy(($truthy(($ret_or_1 = children['$any?']())) ? (empty_line['$[]'](children.$first())) : ($ret_or_1)))) { + children.$shift() + }; + while ($truthy(($truthy(($ret_or_1 = children['$any?']())) ? (empty_line['$[]'](children.$last())) : ($ret_or_1)))) { + children.$pop() + }; + return children; + }, 1); + self.$private(); + + $def(self, '$compile_child', function $$compile_child(child) { + var self = this, $ret_or_1 = nil, value = nil; + + if ($eqeqeq("str", ($ret_or_1 = child.$type()))) { + + value = child.$loc().$expression().$source(); + if ($truthy(value['$include?']("self"))) { + self.$scope().$self() + }; + return self.$push($$('Fragment').$new(value, self.$scope(), child)); + } else if (($eqeqeq("begin", $ret_or_1) || (($eqeqeq("gvar", $ret_or_1) || (($eqeqeq("ivar", $ret_or_1) || ($eqeqeq("nil", $ret_or_1)))))))) { + return self.$push(self.$expr(child)) + } else { + return self.$raise("Unsupported xstr part: " + (child.$type())) + } + }, 1); + + $def(self, '$compile_single_line', function $$compile_single_line(children) { + var self = this, has_embeded_return = nil, first_child = nil, single_child = nil, $ret_or_1 = nil, first_value = nil, last_child = nil, last_value = nil; + + + has_embeded_return = false; + first_child = children.$shift(); + single_child = children['$empty?'](); + first_child = ($truthy(($ret_or_1 = first_child)) ? ($ret_or_1) : (self.$s("nil"))); + if ($eqeq(first_child.$type(), "str")) { + + first_value = first_child.$loc().$expression().$source().$strip(); + has_embeded_return = first_value['$=~'](/^return\b/); + }; + if (($truthy(self.returning) && ($not(has_embeded_return)))) { + self.$push("return ") + }; + last_child = ($truthy(($ret_or_1 = children.$pop())) ? ($ret_or_1) : (first_child)); + if ($eqeq(last_child.$type(), "str")) { + last_value = self.$extract_last_value(last_child) + }; + if (!$truthy(single_child)) { + + self.should_add_semicolon = false; + self.$compile_child(first_child); + $send(children, 'each', [], function $$5(c){var self = $$5.$$s == null ? this : $$5.$$s; + + + + if (c == null) c = nil;; + return self.$compile_child(c);}, {$$arity: 1, $$s: self}); + }; + if ($eqeq(last_child.$type(), "str")) { + return self.$push($$('Fragment').$new(last_value, self.$scope(), last_child)) + } else { + return self.$compile_child(last_child) + }; + }, 1); + + $def(self, '$extract_last_value', function $$extract_last_value(last_child) { + var self = this, last_value = nil; + + + last_value = last_child.$loc().$expression().$source().$rstrip(); + if ($truthy(last_value['$include?']("self"))) { + self.$scope().$self() + }; + if ((($truthy(self.returning) || ($truthy(self['$expr?']()))) && ($truthy(last_value['$end_with?'](";"))))) { + + self.$compiler().$warning("Removed semicolon ending x-string expression, interpreted as unintentional", last_child.$line()); + last_value = last_value['$[]']($range(0, -2, false)); + }; + if ($truthy(self.returning)) { + self.should_add_semicolon = true + }; + return last_value; + }, 1); + return $def(self, '$unpack_return', function $$unpack_return(children) { + var self = this, first_child = nil; + + + first_child = children.$first(); + self.returning = false; + if ($eqeq(first_child.$type(), "js_return")) { + + self.returning = true; + children = first_child.$children(); + }; + return children; + }, 1); + })($nesting[0], $$('Base'), $nesting) + })($nesting[0], $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["opal/nodes/lambda"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $def = Opal.def; + + Opal.add_stubs('require,handle,children,helper,defines_lambda,scope,push,expr,iter'); + + self.$require("opal/nodes/call"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'Nodes'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'LambdaNode'); + + + + self.$handle("lambda"); + self.$children("iter"); + return $def(self, '$compile', function $$compile() { + var self = this; + + + self.$helper("lambda"); + return $send(self.$scope(), 'defines_lambda', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s; + + return self.$push("$lambda(", self.$expr(self.$iter()), ")")}, {$$arity: 0, $$s: self}); + }, 0); + })($nesting[0], $$('Base')) + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal/nodes"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, nil = Opal.nil; + + Opal.add_stubs('require'); + + self.$require("opal/nodes/base"); + self.$require("opal/nodes/literal"); + self.$require("opal/nodes/variables"); + self.$require("opal/nodes/constants"); + self.$require("opal/nodes/call"); + self.$require("opal/nodes/csend"); + self.$require("opal/nodes/call_special"); + self.$require("opal/nodes/module"); + self.$require("opal/nodes/class"); + self.$require("opal/nodes/singleton_class"); + self.$require("opal/nodes/args"); + self.$require("opal/nodes/args/arity_check"); + self.$require("opal/nodes/iter"); + self.$require("opal/nodes/def"); + self.$require("opal/nodes/defs"); + self.$require("opal/nodes/if"); + self.$require("opal/nodes/logic"); + self.$require("opal/nodes/definitions"); + self.$require("opal/nodes/yield"); + self.$require("opal/nodes/rescue"); + self.$require("opal/nodes/super"); + self.$require("opal/nodes/top"); + self.$require("opal/nodes/while"); + self.$require("opal/nodes/hash"); + self.$require("opal/nodes/array"); + self.$require("opal/nodes/defined"); + self.$require("opal/nodes/masgn"); + self.$require("opal/nodes/arglist"); + self.$require("opal/nodes/x_string"); + return self.$require("opal/nodes/lambda"); +}; + +Opal.modules["opal/eof_content"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $eqeq = Opal.eqeq, $range = Opal.range, $to_ary = Opal.to_ary; + + Opal.add_stubs('empty?,[],last_token_position,drop_while,lines,==,join,private,last,end_pos'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'EofContent'); + + var $nesting = [self].concat($parent_nesting), $proto = self.$$prototype; + + $proto.tokens = $proto.source = nil; + + $const_set($nesting[0], 'DATA_SEPARATOR', "__END__\n"); + + $def(self, '$initialize', function $$initialize(tokens, source) { + var self = this; + + + self.tokens = tokens; + return (self.source = source); + }, 2); + + $def(self, '$eof', function $$eof() { + var self = this, eof_content = nil, $ret_or_1 = nil; + + + if ($truthy(self.tokens['$empty?']())) { + return nil + }; + eof_content = self.source['$[]'](Opal.Range.$new(self.$last_token_position(), -1, false)); + if (!$truthy(eof_content)) { + return nil + }; + eof_content = $send(eof_content.$lines(), 'drop_while', [], function $$1(line){ + + + if (line == null) line = nil;; + return line['$==']("\n");}, 1); + if ($eqeq(eof_content['$[]'](0), "__END__\n")) { + + eof_content = ($truthy(($ret_or_1 = eof_content['$[]']($range(1, -1, false)))) ? ($ret_or_1) : ([])); + return eof_content.$join(); + } else if ($eqeq(eof_content, ["__END__"])) { + return "" + } else { + return nil + }; + }, 0); + self.$private(); + return $def(self, '$last_token_position', function $$last_token_position() { + var $a, $b, self = this, _ = nil, last_token_info = nil, last_token_range = nil; + + + $b = self.tokens.$last(), $a = $to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (last_token_info = ($a[1] == null ? nil : $a[1])), $b; + $b = last_token_info, $a = $to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (last_token_range = ($a[1] == null ? nil : $a[1])), $b; + return last_token_range.$end_pos(); + }, 0); + })($nesting[0], null, $nesting) + })($nesting[0], $nesting) +}; + +Opal.modules["opal/errors"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $defs = Opal.defs, $rb_plus = Opal.rb_plus, $alias = Opal.alias; + + Opal.add_stubs('attr_reader,attr_accessor,new,respond_to?,location,location=,-,diagnostic,diagnostic=,to_a,backtrace,unshift,to_s,set_backtrace,path,lineno,+,label,line,lineno=,source_line,label=,expression'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $klass($nesting[0], $$('StandardError'), 'Error'); + (function($base, $super) { + var self = $klass($base, $super, 'GemNotFound'); + + + + self.$attr_reader("gem_name"); + return $def(self, '$initialize', function $$initialize(gem_name) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.gem_name = gem_name; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', ["can't find gem " + (gem_name)], null); + }, 1); + })($nesting[0], $$('Error')); + (function($base, $super) { + var self = $klass($base, $super, 'CompilationError'); + + + return self.$attr_accessor("location") + })($nesting[0], $$('Error')); + $klass($nesting[0], $$('CompilationError'), 'ParsingError'); + $klass($nesting[0], $$('ParsingError'), 'RewritingError'); + (function($base, $super) { + var self = $klass($base, $super, 'SyntaxError'); + + + return self.$attr_accessor("location") + })($nesting[0], $$$('SyntaxError')); + $defs(self, '$opal_location_from_error', function $$opal_location_from_error(error) { + var opal_location = nil, $writer = nil; + + + opal_location = $$('OpalBacktraceLocation').$new(); + if ($truthy(error['$respond_to?']("location"))) { + + $writer = [error.$location()]; + $send(opal_location, 'location=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + if ($truthy(error['$respond_to?']("diagnostic"))) { + + $writer = [error.$diagnostic()]; + $send(opal_location, 'diagnostic=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return opal_location; + }, 1); + $defs(self, '$add_opal_location_to_error', function $$add_opal_location_to_error(opal_location, error) { + var backtrace = nil; + + + backtrace = error.$backtrace().$to_a(); + backtrace.$unshift(opal_location.$to_s()); + error.$set_backtrace(backtrace); + return error; + }, 2); + return (function($base, $super) { + var self = $klass($base, $super, 'OpalBacktraceLocation'); + + + + self.$attr_accessor("path", "lineno", "label"); + + $def(self, '$initialize', function $$initialize(path, lineno, label) { + var $a, self = this; + + + + if (path == null) path = nil;; + + if (lineno == null) lineno = nil;; + + if (label == null) label = nil;; + return $a = [path, lineno, label], (self.path = $a[0]), (self.lineno = $a[1]), (self.label = $a[2]), $a; + }, -1); + + $def(self, '$to_s', function $$to_s() { + var self = this, string = nil; + + + string = self.$path(); + if ($truthy(self.$lineno())) { + string = $rb_plus(string, ":" + (self.$lineno())) + }; + string = $rb_plus(string, ":in "); + if ($truthy(self.$label())) { + string = $rb_plus(string, "`" + (self.$label()) + "'") + } else { + string = $rb_plus(string, "unknown") + }; + return string; + }, 0); + $alias(self, "line", "lineno"); + + $def(self, '$diagnostic=', function $OpalBacktraceLocation_diagnostic$eq$1(diagnostic) { + var self = this, $writer = nil; + + + if (!$truthy(diagnostic)) { + return nil + }; + + $writer = [diagnostic.$location()]; + $send(self, 'location=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + }, 1); + return $def(self, '$location=', function $OpalBacktraceLocation_location$eq$2(location) { + var self = this, $writer = nil; + + + if (!$truthy(location)) { + return nil + }; + + $writer = [location.$line()]; + $send(self, 'lineno=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy(location['$respond_to?']("source_line"))) { + + $writer = [location.$source_line()]; + $send(self, 'label=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else if ($truthy(location['$respond_to?']("expression"))) { + + $writer = [location.$expression().$source_line()]; + $send(self, 'label=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + } else { + return nil + }; + }, 1); + })($nesting[0], null); + })($nesting[0], $nesting) +}; + +Opal.modules["opal/magic_comments"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send, $rb_ge = Opal.rb_ge, $eqeqeq = Opal.eqeqeq, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $defs = Opal.defs; + + Opal.add_stubs('freeze,line,loc,take,each,>=,any?,scan,text,to_sym,===,[]=,-'); + return (function($base, $parent_nesting) { + var self = $module($base, 'MagicComments'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $const_set($nesting[0], 'MAGIC_COMMENT_RE', /^# *(\w+) *: *(\S+.*?) *$/.$freeze()); + $const_set($nesting[0], 'EMACS_MAGIC_COMMENT_RE', /^# *-\*- *(\w+) *: *(\S+.*?) *-\*- *$/.$freeze()); + return $defs(self, '$parse', function $$parse(sexp, comments) { + var flags = nil, first_line = nil; + + + flags = $hash2([], {}); + if ($truthy(sexp)) { + + first_line = sexp.$loc().$line(); + comments = comments.$take(first_line); + }; + $send(comments, 'each', [], function $$1(comment){var parts = nil; + + + + if (comment == null) comment = nil;; + if (($truthy(first_line) && ($truthy($rb_ge(comment.$loc().$line(), first_line))))) { + return nil; + }; + if (($truthy((parts = comment.$text().$scan($$('MAGIC_COMMENT_RE')))['$any?']()) || ($truthy((parts = comment.$text().$scan($$('EMACS_MAGIC_COMMENT_RE')))['$any?']())))) { + return $send(parts, 'each', [], function $$2(key, value){var $writer = nil, $ret_or_1 = nil; + + + + if (key == null) key = nil;; + + if (value == null) value = nil;; + $writer = [key.$to_sym(), ($eqeqeq("true", ($ret_or_1 = value)) || (($eqeqeq("false", $ret_or_1) ? (false) : (value))))]; + $send(flags, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 2) + } else { + return nil + };}, 1); + return flags; + }, 2); + })($$('Opal'), $nesting) +}; + +Opal.modules["opal/compiler"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $hash2 = Opal.hash2, $defs = Opal.defs, $klass = Opal.klass, $const_set = Opal.const_set, $send = Opal.send, $truthy = Opal.truthy, $not = Opal.not, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $Opal = Opal.Opal, $to_ary = Opal.to_ary, $alias = Opal.alias, $eqeqeq = Opal.eqeqeq, $regexp = Opal.regexp, $rb_plus = Opal.rb_plus, $slice = Opal.slice, $eqeq = Opal.eqeq; + + Opal.add_stubs('require,compile,new,freeze,join,dirname,first,split,basename,to_s,cleanpath,Pathname,fetch,define_method,option_value,key?,[],!,include?,raise,inspect,[]=,-,compiler_option,attr_reader,attr_accessor,parse,re_raise_with_location,flatten,process,end_with?,code,last,<<,fragment,s,map,to_proc,file,source=,default_parser,tokenize,requirable?,eval?,tap,meta,associate_locations,eof,magic_comments,to_sym,strip,async_await_before_typecasting,===,async_await_set_to_regexp,to_a,gsub,escape,location=,opal_location_from_error,path=,label,lines,to_i,line,label=,message,set_backtrace,backtrace,add_opal_location_to_error,warn,empty?,+,start_with?,helpers,new_temp,queue_temp,push_while,pop_while,in_while?,nil?,scope,handlers,type,compile_to_fragments,error,returns,updated,children,==,uses_block!,block_name,find_parent_def,cache,source_map'); + + self.$require("set"); + self.$require("opal/parser"); + self.$require("opal/fragment"); + self.$require("opal/nodes"); + self.$require("opal/eof_content"); + self.$require("opal/errors"); + self.$require("opal/magic_comments"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs(self, '$compile', function $$compile(source, options) { + + + + if (options == null) options = $hash2([], {});; + return $$('Compiler').$new(source, options).$compile(); + }, -2); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Compiler'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.option_values = $proto.options = $proto.magic_comments = $proto.fragments = $proto.source = $proto.buffer = $proto.source_map = $proto.result = $proto.helpers = $proto.method_calls = $proto.async_await = $proto.indent = $proto.unique = $proto.scope = $proto.case_stmt = $proto.handlers = $proto.requires = $proto.required_trees = $proto.autoloads = nil; + + $const_set($nesting[0], 'INDENT', " "); + $const_set($nesting[0], 'COMPARE', ["<", ">", "<=", ">="].$freeze()); + $defs(self, '$module_name', function $$module_name(path) { + var self = this; + + + path = $$('File').$join($$('File').$dirname(path), $$('File').$basename(path).$split(".").$first()); + return self.$Pathname(path).$cleanpath().$to_s(); + }, 1); + $defs(self, '$compiler_option', function $$compiler_option(name, config) { + var self = this, method_name = nil; + + + + if (config == null) config = $hash2([], {});; + method_name = config.$fetch("as", name); + return $send(self, 'define_method', [method_name], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s; + + return self.$option_value(name, config)}, {$$arity: 0, $$s: self}); + }, -2); + + $def(self, '$option_value', function $$option_value(name, config) { + var self = this, default_value = nil, valid_values = nil, magic_comment = nil, value = nil, $writer = nil; + + + if ($truthy(self.option_values['$key?'](name))) { + return self.option_values['$[]'](name) + }; + default_value = config['$[]']("default"); + valid_values = config['$[]']("valid_values"); + magic_comment = config['$[]']("magic_comment"); + value = self.options.$fetch(name, default_value); + if (($truthy(magic_comment) && ($truthy(self.magic_comments['$key?'](name))))) { + value = self.magic_comments.$fetch(name) + }; + if (($truthy(valid_values) && ($not(valid_values['$include?'](value))))) { + self.$raise($$('ArgumentError'), "" + ("invalid value " + (value.$inspect()) + " for option " + (name.$inspect()) + " ") + ("(valid values: " + (valid_values.$inspect()) + ")")) + }; + + $writer = [name, value]; + $send(self.option_values, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + }, 2); + self.$compiler_option("file", $hash2(["default"], {"default": "(file)"})); + self.$compiler_option("method_missing", $hash2(["default", "as"], {"default": true, "as": "method_missing?"})); + self.$compiler_option("arity_check", $hash2(["default", "as"], {"default": false, "as": "arity_check?"})); + self.$compiler_option("freezing", $hash2(["default", "as"], {"default": true, "as": "freezing?"})); + self.$compiler_option("irb", $hash2(["default", "as"], {"default": false, "as": "irb?"})); + self.$compiler_option("dynamic_require_severity", $hash2(["default", "valid_values"], {"default": "ignore", "valid_values": ["error", "warning", "ignore"]})); + self.$compiler_option("requirable", $hash2(["default", "as"], {"default": false, "as": "requirable?"})); + self.$compiler_option("esm", $hash2(["default", "as"], {"default": false, "as": "esm?"})); + self.$compiler_option("inline_operators", $hash2(["default", "as"], {"default": true, "as": "inline_operators?"})); + self.$compiler_option("eval", $hash2(["default", "as"], {"default": false, "as": "eval?"})); + self.$compiler_option("enable_source_location", $hash2(["default", "as"], {"default": false, "as": "enable_source_location?"})); + self.$compiler_option("use_strict", $hash2(["default", "as", "magic_comment"], {"default": false, "as": "use_strict?", "magic_comment": true})); + self.$compiler_option("parse_comments", $hash2(["default", "as"], {"default": false, "as": "parse_comments?"})); + self.$compiler_option("scope_variables", $hash2(["default"], {"default": []})); + self.$compiler_option("await", $hash2(["default", "as", "magic_comment"], {"default": false, "as": "async_await", "magic_comment": true})); + self.$attr_reader("result"); + self.$attr_reader("fragments"); + self.$attr_accessor("scope"); + self.$attr_accessor("top_scope"); + self.$attr_reader("case_stmt"); + self.$attr_reader("eof_content"); + self.$attr_reader("comments"); + self.$attr_reader("magic_comments"); + + $def(self, '$initialize', function $$initialize(source, options) { + var self = this; + + + + if (options == null) options = $hash2([], {});; + self.source = source; + self.indent = ""; + self.unique = 0; + self.options = options; + self.comments = $$('Hash').$new([]); + self.case_stmt = nil; + self.option_values = $hash2([], {}); + return (self.magic_comments = $hash2([], {})); + }, -2); + + $def(self, '$compile', function $$compile() { + var self = this; + + + self.$parse(); + self.fragments = $send(self, 're_raise_with_location', [], function $$2(){var self = $$2.$$s == null ? this : $$2.$$s; + if (self.sexp == null) self.sexp = nil; + + return self.$process(self.sexp).$flatten()}, {$$arity: 0, $$s: self}); + if (!$truthy(self.fragments.$last().$code()['$end_with?']("\n"))) { + self.fragments['$<<'](self.$fragment("\n", nil, self.$s("newline"))) + }; + return (self.result = $send(self.fragments, 'map', [], "code".$to_proc()).$join("")); + }, 0); + + $def(self, '$parse', function $$parse() { + var $a, $b, self = this, $writer = nil, sexp = nil, comments = nil, tokens = nil, kind = nil, $ret_or_1 = nil; + + + self.buffer = $$$($$$($Opal, 'Parser'), 'SourceBuffer').$new(self.$file(), 1); + + $writer = [self.source]; + $send(self.buffer, 'source=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.parser = $$$($$('Opal'), 'Parser').$default_parser(); + $b = $send(self, 're_raise_with_location', [], function $$3(){var self = $$3.$$s == null ? this : $$3.$$s; + if (self.parser == null) self.parser = nil; + if (self.buffer == null) self.buffer = nil; + + return self.parser.$tokenize(self.buffer)}, {$$arity: 0, $$s: self}), $a = $to_ary($b), (sexp = ($a[0] == null ? nil : $a[0])), (comments = ($a[1] == null ? nil : $a[1])), (tokens = ($a[2] == null ? nil : $a[2])), $b; + kind = ($truthy(self['$requirable?']()) ? ("require") : ($truthy(self['$eval?']()) ? ("eval") : ("main"))); + self.sexp = $send(self.$s("top", ($truthy(($ret_or_1 = sexp)) ? ($ret_or_1) : (self.$s("nil")))), 'tap', [], function $$4(i){ + + + if (i == null) i = nil;; + $writer = ["kind", kind]; + $send(i.$meta(), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 1); + self.comments = $$$($$$($$$('Parser'), 'Source'), 'Comment').$associate_locations(sexp, comments); + self.magic_comments = $$('MagicComments').$parse(sexp, comments); + return (self.eof_content = $$('EofContent').$new(tokens, self.source).$eof()); + }, 0); + + $def(self, '$source_map', function $$source_map() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.source_map))) { + return $ret_or_1 + } else { + return $$$($$$($Opal, 'SourceMap'), 'File').$new(self.fragments, self.$file(), self.source, self.result) + } + }, 0); + + $def(self, '$helpers', function $$helpers() { + var self = this, $ret_or_1 = nil; + + return (self.helpers = ($truthy(($ret_or_1 = self.helpers)) ? ($ret_or_1) : ($$('Set').$new($send(self.$magic_comments()['$[]']("helpers").$to_s().$split(","), 'map', [], function $$5(h){ + + + if (h == null) h = nil;; + return h.$strip().$to_sym();}, 1))))) + }, 0); + + $def(self, '$method_calls', function $$method_calls() { + var self = this, $ret_or_1 = nil; + + return (self.method_calls = ($truthy(($ret_or_1 = self.method_calls)) ? ($ret_or_1) : ($$('Set').$new()))) + }, 0); + $alias(self, "async_await_before_typecasting", "async_await"); + + $def(self, '$async_await', function $$async_await() { + var $a, self = this, original = nil, $ret_or_1 = nil; + + if ($truthy((($a = self['async_await'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { + return self.async_await + } else { + + original = self.$async_await_before_typecasting(); + return (self.async_await = ($eqeqeq($$('String'), ($ret_or_1 = original)) ? (self.$async_await_set_to_regexp($send(original.$split(","), 'map', [], function $$6(h){ + + + if (h == null) h = nil;; + return h.$strip().$to_sym();}, 1))) : (($eqeqeq($$('Array'), $ret_or_1) || ($eqeqeq($$('Set'), $ret_or_1))) ? (self.$async_await_set_to_regexp($send(original.$to_a(), 'map', [], "to_sym".$to_proc()))) : (($eqeqeq($$('Regexp'), $ret_or_1) || (($eqeqeq(true, $ret_or_1) || ($eqeqeq(false, $ret_or_1))))) ? (original) : (self.$raise("A value of await compiler option can be either " + "a Set, an Array, a String or a Boolean.")))))); + } + }, 0); + + $def(self, '$async_await_set_to_regexp', function $$async_await_set_to_regexp(set) { + + + set = $send(set, 'map', [], function $$7(name){ + + + if (name == null) name = nil;; + return $$('Regexp').$escape(name.$to_s()).$gsub("\\*", ".*?");}, 1); + set = set.$join("|"); + return $regexp(["^(", set, ")$"]); + }, 1); + + $def(self, '$error', function $$error(msg, line) { + var self = this, error = nil, $writer = nil; + + + + if (line == null) line = nil;; + error = $$$($Opal, 'SyntaxError').$new(msg); + + $writer = [$$$($$('Opal'), 'OpalBacktraceLocation').$new(self.$file(), line)]; + $send(error, 'location=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self.$raise(error); + }, -2); + + $def(self, '$re_raise_with_location', function $$re_raise_with_location() { + var $yield = $$re_raise_with_location.$$p || nil, self = this, error = nil, opal_location = nil, $writer = nil, $ret_or_1 = nil, new_error = nil; + + delete $$re_raise_with_location.$$p; + try { + return Opal.yieldX($yield, []); + } catch ($err) { + if (Opal.rescue($err, [$$('StandardError'), $$$($Opal, 'SyntaxError')])) {(error = $err) + try { + + opal_location = $Opal.$opal_location_from_error(error); + + $writer = [self.$file()]; + $send(opal_location, 'path=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy(($ret_or_1 = opal_location.$label()))) { + $ret_or_1 + } else { + + $writer = [self.source.$lines()['$[]']($rb_minus(opal_location.$line().$to_i(), 1)).$strip()]; + $send(opal_location, 'label=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + new_error = $$$($Opal, 'SyntaxError').$new(error.$message()); + new_error.$set_backtrace(error.$backtrace()); + $Opal.$add_opal_location_to_error(opal_location, new_error); + return self.$raise(new_error); + } finally { Opal.pop_exception(); } + } else { throw $err; } + } + }, 0); + + $def(self, '$warning', function $$warning(msg, line) { + var self = this; + + + + if (line == null) line = nil;; + return self.$warn("warning: " + (msg) + " -- " + (self.$file()) + ":" + (line)); + }, -2); + + $def(self, '$parser_indent', function $$parser_indent() { + var self = this; + + return self.indent + }, 0); + + $def(self, '$s', function $$s(type, $a) { + var $post_args, children; + + + + $post_args = Opal.slice.call(arguments, 1); + + children = $post_args;; + return $$$($$$($Opal, 'AST'), 'Node').$new(type, children); + }, -2); + + $def(self, '$fragment', function $$fragment(str, scope, sexp) { + + + + if (sexp == null) sexp = nil;; + return $$('Fragment').$new(str, scope, sexp); + }, -3); + + $def(self, '$unique_temp', function $$unique_temp(name) { + var self = this, unique = nil; + + + name = name.$to_s(); + if (($truthy(name) && ($not(name['$empty?']())))) { + name = name.$to_s().$gsub("<=>", "$lt_eq_gt").$gsub("===", "$eq_eq_eq").$gsub("==", "$eq_eq").$gsub("=~", "$eq_tilde").$gsub("!~", "$excl_tilde").$gsub("!=", "$not_eq").$gsub("<=", "$lt_eq").$gsub(">=", "$gt_eq").$gsub("=", "$eq").$gsub("?", "$ques").$gsub("!", "$excl").$gsub("/", "$slash").$gsub("%", "$percent").$gsub("+", "$plus").$gsub("-", "$minus").$gsub("<", "$lt").$gsub(">", "$gt").$gsub(/[^\w\$]/, "$") + }; + unique = (self.unique = $rb_plus(self.unique, 1)); + return "" + (($truthy(name['$start_with?']("$")) ? (nil) : ("$"))) + (name) + "$" + (unique); + }, 1); + + $def(self, '$helper', function $$helper(name) { + var self = this; + + return self.$helpers()['$<<'](name) + }, 1); + + $def(self, '$indent', function $$indent() { + var $yield = $$indent.$$p || nil, self = this, indent = nil, res = nil; + + delete $$indent.$$p; + + indent = self.indent; + self.indent = $rb_plus(self.indent, $$('INDENT')); + self.space = "\n" + (self.indent); + res = Opal.yieldX($yield, []); + self.indent = indent; + self.space = "\n" + (self.indent); + return res; + }, 0); + + $def(self, '$with_temp', function $$with_temp() { + var $yield = $$with_temp.$$p || nil, self = this, tmp = nil, res = nil; + + delete $$with_temp.$$p; + + tmp = self.scope.$new_temp(); + res = Opal.yield1($yield, tmp); + self.scope.$queue_temp(tmp); + return res; + }, 0); + + $def(self, '$in_while', function $$in_while() { + var $yield = $$in_while.$$p || nil, self = this, result = nil; + + delete $$in_while.$$p; + + if (!($yield !== nil)) { + return nil + }; + self.while_loop = self.scope.$push_while(); + result = Opal.yieldX($yield, []); + self.scope.$pop_while(); + return result; + }, 0); + + $def(self, '$in_case', function $$in_case() { + var $yield = $$in_case.$$p || nil, self = this, old = nil; + + delete $$in_case.$$p; + + if (!($yield !== nil)) { + return nil + }; + old = self.case_stmt; + self.case_stmt = $hash2([], {}); + Opal.yieldX($yield, []); + return (self.case_stmt = old); + }, 0); + + $def(self, '$in_while?', function $Compiler_in_while$ques$8() { + var self = this; + + return self.scope['$in_while?']() + }, 0); + + $def(self, '$process', function $$process(sexp, level) { + var self = this, handler = nil; + + + + if (level == null) level = "expr";; + if ($truthy(sexp['$nil?']())) { + return self.$fragment("", self.$scope()) + }; + if ($truthy((handler = self.$handlers()['$[]'](sexp.$type())))) { + return handler.$new(sexp, level, self).$compile_to_fragments() + } else { + return self.$error("Unsupported sexp: " + (sexp.$type())) + }; + }, -2); + + $def(self, '$handlers', function $$handlers() { + var self = this, $ret_or_1 = nil; + + return (self.handlers = ($truthy(($ret_or_1 = self.handlers)) ? ($ret_or_1) : ($$$($$$($$('Opal'), 'Nodes'), 'Base').$handlers()))) + }, 0); + + $def(self, '$requires', function $$requires() { + var self = this, $ret_or_1 = nil; + + return (self.requires = ($truthy(($ret_or_1 = self.requires)) ? ($ret_or_1) : ([]))) + }, 0); + + $def(self, '$required_trees', function $$required_trees() { + var self = this, $ret_or_1 = nil; + + return (self.required_trees = ($truthy(($ret_or_1 = self.required_trees)) ? ($ret_or_1) : ([]))) + }, 0); + + $def(self, '$autoloads', function $$autoloads() { + var self = this, $ret_or_1 = nil; + + return (self.autoloads = ($truthy(($ret_or_1 = self.autoloads)) ? ($ret_or_1) : ([]))) + }, 0); + + $def(self, '$returns', function $$returns(sexp) { + var $a, $b, self = this, $ret_or_1 = nil, when_sexp = nil, then_sexp = nil, body_sexp = nil, resbodies = nil, else_sexp = nil, klass = nil, lvar = nil, body = nil, rescue_sexp = nil, ensure_body = nil, rest = nil, last = nil, cond = nil, true_body = nil, false_body = nil; + + + if (!$truthy(sexp)) { + return self.$returns(self.$s("nil")) + }; + if ($eqeqeq("undef", ($ret_or_1 = sexp.$type()))) { + return self.$returns(sexp.$updated("begin", [sexp, self.$s("nil")])) + } else if (($eqeqeq("break", $ret_or_1) || (($eqeqeq("next", $ret_or_1) || (($eqeqeq("redo", $ret_or_1) || ($eqeqeq("retry", $ret_or_1)))))))) { + return sexp + } else if ($eqeqeq("yield", $ret_or_1)) { + return sexp.$updated("returnable_yield", nil) + } else if ($eqeqeq("when", $ret_or_1)) { + + $a = [].concat($to_a(sexp)), $b = $a.length - 1, $b = ($b < 0) ? 0 : $b, (when_sexp = $slice.call($a, 0, $b)), (then_sexp = ($a[$b] == null ? nil : $a[$b])), $a; + return sexp.$updated(nil, [].concat($to_a(when_sexp)).concat([self.$returns(then_sexp)])); + } else if ($eqeqeq("rescue", $ret_or_1)) { + + $a = [].concat($to_a(sexp)), (body_sexp = ($a[0] == null ? nil : $a[0])), $b = $a.length - 1, $b = ($b < 1) ? 1 : $b, (resbodies = $slice.call($a, 1, $b)), (else_sexp = ($a[$b] == null ? nil : $a[$b])), $a; + resbodies = $send(resbodies, 'map', [], function $$9(resbody){var self = $$9.$$s == null ? this : $$9.$$s; + + + + if (resbody == null) resbody = nil;; + return self.$returns(resbody);}, {$$arity: 1, $$s: self}); + if ($truthy(else_sexp)) { + else_sexp = self.$returns(else_sexp) + }; + return sexp.$updated(nil, [self.$returns(body_sexp)].concat($to_a(resbodies)).concat([else_sexp])); + } else if ($eqeqeq("resbody", $ret_or_1)) { + + $a = [].concat($to_a(sexp)), (klass = ($a[0] == null ? nil : $a[0])), (lvar = ($a[1] == null ? nil : $a[1])), (body = ($a[2] == null ? nil : $a[2])), $a; + return sexp.$updated(nil, [klass, lvar, self.$returns(body)]); + } else if ($eqeqeq("ensure", $ret_or_1)) { + + $a = [].concat($to_a(sexp)), (rescue_sexp = ($a[0] == null ? nil : $a[0])), (ensure_body = ($a[1] == null ? nil : $a[1])), $a; + sexp = sexp.$updated(nil, [self.$returns(rescue_sexp), ensure_body]); + return sexp.$updated("js_return", [sexp]); + } else if (($eqeqeq("begin", $ret_or_1) || ($eqeqeq("kwbegin", $ret_or_1)))) { + + $a = [].concat($to_a(sexp)), $b = $a.length - 1, $b = ($b < 0) ? 0 : $b, (rest = $slice.call($a, 0, $b)), (last = ($a[$b] == null ? nil : $a[$b])), $a; + return sexp.$updated(nil, [].concat($to_a(rest)).concat([self.$returns(last)])); + } else if (($eqeqeq("while", $ret_or_1) || (($eqeqeq("until", $ret_or_1) || (($eqeqeq("while_post", $ret_or_1) || ($eqeqeq("until_post", $ret_or_1)))))))) { + return sexp + } else if (($eqeqeq("return", $ret_or_1) || (($eqeqeq("js_return", $ret_or_1) || ($eqeqeq("returnable_yield", $ret_or_1)))))) { + return sexp + } else if ($eqeqeq("xstr", $ret_or_1)) { + return sexp.$updated(nil, [$send(self, 's', ["js_return"].concat($to_a(sexp.$children())))]) + } else if ($eqeqeq("if", $ret_or_1)) { + + $a = [].concat($to_a(sexp)), (cond = ($a[0] == null ? nil : $a[0])), (true_body = ($a[1] == null ? nil : $a[1])), (false_body = ($a[2] == null ? nil : $a[2])), $a; + return sexp.$updated(nil, [cond, self.$returns(true_body), self.$returns(false_body)]); + } else if (($eqeq(sexp.$type(), "send") && ($eqeq(sexp.$children()['$[]'](1), "debugger")))) { + return sexp.$updated("begin", [sexp, self.$s("js_return", self.$s("nil"))]) + } else { + return sexp.$updated("js_return", [sexp]) + }; + }, 1); + + $def(self, '$handle_block_given_call', function $$handle_block_given_call(sexp) { + var self = this, scope = nil; + + + self.scope['$uses_block!'](); + if ($truthy(self.scope.$block_name())) { + return self.$fragment("(" + (self.scope.$block_name()) + " !== nil)", self.$scope(), sexp) + } else if (($truthy((scope = self.scope.$find_parent_def())) && ($truthy(scope.$block_name())))) { + return self.$fragment("(" + (scope.$block_name()) + " !== nil)", scope, sexp) + } else { + return self.$fragment("false", scope, sexp) + }; + }, 1); + + $def(self, '$marshal_dump', function $$marshal_dump() { + var self = this, $ret_or_1 = nil; + + return [self.options, self.option_values, (self.source_map = ($truthy(($ret_or_1 = self.source_map)) ? ($ret_or_1) : (self.$source_map().$cache()))), self.magic_comments, self.result, self.required_trees, self.requires, self.autoloads] + }, 0); + return $def(self, '$marshal_load', function $$marshal_load(src) { + var $a, $b, self = this; + + return $b = src, $a = $to_ary($b), (self.options = ($a[0] == null ? nil : $a[0])), (self.option_values = ($a[1] == null ? nil : $a[1])), (self.source_map = ($a[2] == null ? nil : $a[2])), (self.magic_comments = ($a[3] == null ? nil : $a[3])), (self.result = ($a[4] == null ? nil : $a[4])), (self.required_trees = ($a[5] == null ? nil : $a[5])), (self.requires = ($a[6] == null ? nil : $a[6])), (self.autoloads = ($a[7] == null ? nil : $a[7])), $b + }, 1); + })($nesting[0], null, $nesting); + })($nesting[0], $nesting); +}; + +Opal.modules["opal/erb"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $defs = Opal.defs, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $send = Opal.send, $regexp = Opal.regexp; + + Opal.add_stubs('require,compile,new,freeze,fix_quotes,find_contents,find_code,wrap_compiled,require_erb,prepared_source,gsub,+,last_match,=~,sub'); + + self.$require("opal/compiler"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $parent_nesting) { + var self = $module($base, 'ERB'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs(self, '$compile', function $$compile(source, file_name) { + + + + if (file_name == null) file_name = "(erb)";; + return $$('Compiler').$new(source, file_name).$compile(); + }, -2); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Compiler'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.prepared_source = $proto.source = $proto.file_name = nil; + + $const_set($nesting[0], 'BLOCK_EXPR', /\s+(do|\{)(\s*\|[^|]*\|)?\s*\Z/.$freeze()); + + $def(self, '$initialize', function $$initialize(source, file_name) { + var $a, self = this; + + + + if (file_name == null) file_name = "(erb)";; + return $a = [source, file_name, source], (self.source = $a[0]), (self.file_name = $a[1]), (self.result = $a[2]), $a; + }, -2); + + $def(self, '$prepared_source', function $$prepared_source() { + var self = this, $ret_or_1 = nil, source = nil; + + return (self.prepared_source = ($truthy(($ret_or_1 = self.prepared_source)) ? ($ret_or_1) : (((source = self.source), (source = self.$fix_quotes(source)), (source = self.$find_contents(source)), (source = self.$find_code(source)), (source = self.$wrap_compiled(source)), (source = self.$require_erb(source)), source)))) + }, 0); + + $def(self, '$compile', function $$compile() { + var self = this; + + return $$('Opal').$compile(self.$prepared_source()) + }, 0); + + $def(self, '$fix_quotes', function $$fix_quotes(result) { + + return result.$gsub("\"", "\\\"") + }, 1); + + $def(self, '$require_erb', function $$require_erb(result) { + + return $rb_plus("require \"erb\";", result) + }, 1); + + $def(self, '$find_contents', function $$find_contents(result) { + + return $send(result, 'gsub', [/<%=([\s\S]+?)%>/], function $$1(){var inner = nil; + + + inner = $$('Regexp').$last_match(1).$gsub(/\\'/, "'").$gsub(/\\"/, "\""); + if ($truthy(inner['$=~']($$('BLOCK_EXPR')))) { + return "\")\noutput_buffer.append= " + (inner) + "\noutput_buffer.append(\"" + } else { + return "\")\noutput_buffer.append=(" + (inner) + ")\noutput_buffer.append(\"" + };}, 0) + }, 1); + + $def(self, '$find_code', function $$find_code(result) { + + return $send(result, 'gsub', [/<%([\s\S]+?)%>/], function $$2(){var inner = nil; + + + inner = $$('Regexp').$last_match(1).$gsub(/\\"/, "\""); + return "\")\n" + (inner) + "\noutput_buffer.append(\"";}, 0) + }, 1); + return $def(self, '$wrap_compiled', function $$wrap_compiled(result) { + var self = this, path = nil; + + + path = self.file_name.$sub($regexp(["\\.opalerb", $$('REGEXP_END')]), ""); + return "Template.new('" + (path) + "') do |output_buffer|\noutput_buffer.append(\"" + (result) + "\")\noutput_buffer.join\nend\n"; + }, 1); + })($nesting[0], null, $nesting); + })($nesting[0], $nesting) + })($nesting[0], $nesting); +}; + +Opal.modules["opal-parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $module = Opal.module, $Opal = Opal.Opal, $hash2 = Opal.hash2, $truthy = Opal.truthy, $def = Opal.def; + + Opal.add_stubs('require,coerce_to!,merge,js_eval'); + + self.$require("corelib/string/unpack"); + self.$require("opal/compiler"); + self.$require("opal/erb"); + self.$require("opal/version"); + (function($base, $parent_nesting) { + var self = $module($base, 'Kernel'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$eval', function $Kernel_eval$1(str, binding, file, line) { + var self = this, default_eval_options = nil, $ret_or_1 = nil, compiling_options = nil, code = nil; + + + + if (binding == null) binding = nil;; + + if (file == null) file = nil;; + + if (line == null) line = nil;; + str = $Opal['$coerce_to!'](str, $$('String'), "to_str"); + default_eval_options = $hash2(["file", "eval"], {"file": ($truthy(($ret_or_1 = file)) ? ($ret_or_1) : ("(eval)")), "eval": true}); + compiling_options = Opal.hash({ arity_check: false }).$merge(default_eval_options); + code = Opal.compile(str, compiling_options); + if ($truthy(binding)) { + return binding.$js_eval(code) + } else { + + return (function(self) { + return eval(code); + })(self) + + }; + }, -2); + return $def(self, '$require_remote', function $$require_remote(url) { + var $a, self = this; + + + + var r = new XMLHttpRequest(); + r.open("GET", url, false); + r.send(''); + ; + return ($a = r.responseText, typeof Opal.compile === 'function' ? eval(Opal.compile($a, {scope_variables: ["url"], arity_check: false, file: '(eval)', eval: true})) : self.$eval($a)); + }, 1); + })($nesting[0], $nesting); + + Opal.compile = function(str, options) { + try { + str = $Opal['$coerce_to!'](str, $$('String'), "to_str") + if (options) options = Opal.hash(options); + return Opal.Opal.$compile(str, options); + } + catch (e) { + if (e.$$class === Opal.Opal.SyntaxError) { + var err = Opal.SyntaxError.$new(e.message); + err.$set_backtrace(e.$backtrace()); + throw(err); + } + else { throw e; } + } + }; + + Opal['eval'] = function(str, options) { + return eval(Opal.compile(str, options)); + }; + + function run_ruby_scripts() { + var tag, tags = document.getElementsByTagName('script'); + + for (var i = 0, len = tags.length; i < len; i++) { + tag = tags[i]; + if (tag.type === "text/ruby") { + if (tag.src) Opal.Kernel.$require_remote(tag.src); + if (tag.innerHTML) Opal.Kernel.$eval(tag.innerHTML); + } + } + } + + if (typeof(document) !== 'undefined') { + if (window.addEventListener) { + window.addEventListener('DOMContentLoaded', run_ruby_scripts, false); + } + else { + window.attachEvent('onload', run_ruby_scripts); + } + } +; +}; diff --git a/opal/1.4.1/opal-parser.min.js b/opal/1.4.1/opal-parser.min.js new file mode 100644 index 00000000..a3b1d458 --- /dev/null +++ b/opal/1.4.1/opal-parser.min.js @@ -0,0 +1 @@ +Opal.modules.base64=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$defs=Opal.defs,$hash2=Opal.hash2,$truthy=Opal.truthy;return Opal.add_stubs("raise,delete"),function($base,$parent_nesting){var encode,decode,self=$module($base,"Base64"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";return encode=function(input){for(var block,charCode,str=String(input),idx=0,map=chars,output="";str.charAt(0|idx)||(map="=",idx%1);output+=map.charAt(63&block>>8-idx%1*8))(charCode=str.charCodeAt(idx+=3/4))>255&&self.$raise($$("ArgumentError"),"invalid character (failed: The string to be encoded contains characters outside of the Latin1 range.)"),block=block<<8|charCode;return output},decode=function(input){var str=String(input).replace(/=+$/,"");str.length%4==1&&self.$raise($$("ArgumentError"),"invalid base64 (failed: The string to be decoded is not correctly encoded.)");for(var bs,buffer,bc=0,idx=0,output="";buffer=str.charAt(idx++);~buffer&&(bs=bc%4?64*bs+buffer:buffer,bc++%4)?output+=String.fromCharCode(255&bs>>(-2*bc&6)):0)buffer=chars.indexOf(buffer);return output},$defs(self,"$decode64",(function(string){return decode(string.replace(/\r?\n/g,""))}),1),$defs(self,"$encode64",(function(string){return encode(string).replace(/(.{60})/g,"$1\n").replace(/([^\n])$/g,"$1\n")}),1),$defs(self,"$strict_decode64",(function(string){return decode(string)}),1),$defs(self,"$strict_encode64",(function(string){return encode(string)}),1),$defs(self,"$urlsafe_decode64",(function(string){return decode(string.replace(/\-/g,"+").replace(/_/g,"/"))}),1),$defs(self,"$urlsafe_encode64",(function(string,$kwargs){var padding,str=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(padding=$kwargs.$$smap.padding)&&(padding=!0),str=encode(string).replace(/\+/g,"-").replace(/\//g,"_"),$truthy(padding)||(str=str.$delete("=")),str}),-2)}($nesting[0],$nesting)},Opal.modules["corelib/pack_unpack/format_string_parser"]=function(Opal){Opal.nil;var self,directives,modifiers,$$$=Opal.$$$,$module=Opal.module,$Kernel=Opal.Kernel;return Opal.add_stubs("raise"),self=$module("::","PackUnpack"),directives=["C","S","L","Q","J","c","s","l","q","j","n","N","v","V","U","w","D","d","F","f","E","e","G","g","A","a","Z","B","b","H","h","u","M","m","P","p","@","X","x"],modifiers=["!","_",">","<"],void(self.eachDirectiveAndCount=function(format,callback){var currentDirective,currentCount,currentModifiers,countSpecified;function reset(){currentDirective=null,currentCount=0,currentModifiers=[],countSpecified=!1}function yieldAndReset(){null!=currentDirective?(!/[sSiIlLqQjJ]/.test(currentDirective)&¤tModifiers.length>0&&$Kernel.$raise($$$("ArgumentError"),"'"+currentModifiers[0]+"' allowed only after types sSiIlLqQjJ"),-1!==currentModifiers.indexOf("<")&&-1!==currentModifiers.indexOf(">")&&$Kernel.$raise($$$("RangeError"),"Can't use both '<' and '>'"),countSpecified||(currentCount=1),-1!==currentModifiers.indexOf(">")&&(currentDirective+=">"),callback(currentDirective,currentCount),reset()):reset()}reset();for(var i=0;i,length,inspect,[],unpack"),self.$require("base64"),self.$require("corelib/pack_unpack/format_string_parser"),function($base,$super,$parent_nesting){var self=$klass("::",null,"String"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),expected=nil,given=nil,eachDirectiveAndCount=Opal.PackUnpack.eachDirectiveAndCount;function mapChunksToWords(callback){return function(data){return callback(data).map((function(chunk){return chunk.reverse().reduce((function(result,singleByte){return 256*result+singleByte}),0)}))}}function chunkBy(chunkSize,callback){return function(data){for(var array=callback(data),chunks=[],chunksCount=array.length/chunkSize,i=0;i=limit/2&&(n-=limit),n}))}}function bytesToAsciiChars(callback){return function(data){return callback(data).map((function(singleByte){return String.fromCharCode(singleByte)}))}}function joinChars(callback){return function(data){return callback(data).join("")}}function wrapIntoArray(callback){return function(data){return[callback(data)]}}var charCodesToFilter,filterTrailingZerosAndSpaces=(charCodesToFilter=["\0"," "].map((function(s){return s.charCodeAt(0)})),function(callback){return function(data){for(var charCodes=callback(data);-1!==charCodesToFilter.indexOf(charCodes[charCodes.length-1]);)charCodes=charCodes.slice(0,charCodes.length-1);return charCodes}});function invertChunks(callback){return function(data){return callback(data).map((function(chunk){return chunk.reverse()}))}}function identityFunction(value){return value}var callback,handlers={C:identityFunction,S:mapChunksToWords(chunkBy(2,identityFunction)),L:mapChunksToWords(chunkBy(4,identityFunction)),Q:mapChunksToWords(chunkBy(8,identityFunction)),J:null,"S>":mapChunksToWords(invertChunks(chunkBy(2,identityFunction))),"L>":mapChunksToWords(invertChunks(chunkBy(4,identityFunction))),"Q>":mapChunksToWords(invertChunks(chunkBy(8,identityFunction))),c:toNByteSigned(1,identityFunction),s:toNByteSigned(2,mapChunksToWords(chunkBy(2,identityFunction))),l:toNByteSigned(4,mapChunksToWords(chunkBy(4,identityFunction))),q:toNByteSigned(8,mapChunksToWords(chunkBy(8,identityFunction))),j:null,"s>":toNByteSigned(2,mapChunksToWords(invertChunks(chunkBy(2,identityFunction)))),"l>":toNByteSigned(4,mapChunksToWords(invertChunks(chunkBy(4,identityFunction)))),"q>":toNByteSigned(8,mapChunksToWords(invertChunks(chunkBy(8,identityFunction)))),n:null,N:null,v:null,V:null,U:identityFunction,w:(callback=identityFunction,function(data){for(var bytes=callback(data),result=[],buffer="",i=0;i45)return"";for(length+=n;n>0;){var c1=bytes[i],c2=bytes[i+1],c3=bytes[i+2],b1=(c1-32&63)<<2|(c2-32&63)>>4,b2=(c2-32&63)<<4|(c3-32&63)>>2,b3=(c3-32&63)<<6|bytes[i+3]-32&63;result.push(255&b1),result.push(255&b2),result.push(255&b3),i+=4,n-=3}++i}}return result.slice(0,length)}}(identityFunction))),M:function(callback){return function(data){return callback(data).replace(/[\t\x20]$/gm,"").replace(/=(?:\r\n?|\n|$)/g,"").replace(/=([a-fA-F0-9]{2})/g,(function($0,$1){var codePoint=parseInt($1,16);return String.fromCharCode(codePoint)}))}}(joinChars(bytesToAsciiChars(identityFunction))),m:function(callback){return function(data){return $$("Base64").$decode64(callback(data))}}(joinChars(bytesToAsciiChars(identityFunction))),P:null,p:null};function readBytes(n){return function(bytes){return{chunk:bytes.slice(0,n),rest:bytes=bytes.slice(n,bytes.length)}}}function readNTimesAndMerge(callback){return function(buffer,count){var chunkData,chunk=[];if(count===1/0)for(;buffer.length>0;)buffer=(chunkData=callback(buffer)).rest,chunk=chunk.concat(chunkData.chunk);else for(var i=0;i":readNTimesAndMerge(readBytes(2)),"L>":readNTimesAndMerge(readBytes(4)),"Q>":readNTimesAndMerge(readBytes(8)),c:readNTimesAndMerge(readBytes(1)),s:readNTimesAndMerge(readBytes(2)),l:readNTimesAndMerge(readBytes(4)),q:readNTimesAndMerge(readBytes(8)),j:null,"s>":readNTimesAndMerge(readBytes(2)),"l>":readNTimesAndMerge(readBytes(4)),"q>":readNTimesAndMerge(readBytes(8)),n:null,N:null,v:null,V:null,U:readNTimesAndMerge((function(bytes){var currentByteIndex=0,bytesLength=bytes.length;function readByte(){var result=bytes[currentByteIndex++];return bytesLength=bytes.length-currentByteIndex,result}var extraLength,c=readByte();if(c>>7==0)return{chunk:[c],rest:bytes.slice(currentByteIndex)};c>>6==2&&$Kernel.$raise($$$("ArgumentError"),"malformed UTF-8 character"),c>>5==6?extraLength=1:c>>4==14?extraLength=2:c>>3==30?extraLength=3:c>>2==62?extraLength=4:c>>1==126?extraLength=5:$Kernel.$raise("malformed UTF-8 character"),extraLength>bytesLength&&(expected=extraLength+1,given=bytesLength+1,$Kernel.$raise($$$("ArgumentError"),"malformed UTF-8 character (expected "+expected+" bytes, given "+given+" bytes)"));for(var result=c&(1<<8-extraLength-1)-1,i=0;i>6!=2&&$Kernel.$raise("Invalid multibyte sequence"),result=result<<6|63&c;return result<=65535?{chunk:[result],rest:bytes.slice(currentByteIndex)}:{chunk:[55296+((result-=65536)>>10&1023),56320+(1023&result)],rest:bytes.slice(currentByteIndex)}})),w:readNTimesAndMerge((function(buffer){for(var result=[],i=0;i0&&buffer.length>0;){var singleByte=buffer[0],bitsToTake=Math.min(count,8);Math.ceil(bitsToTake/8);if(buffer=buffer.slice(1,buffer.length),null!=singleByte){var bits=singleByte.toString(2);bits=Array(8-bits.length+1).join("0").concat(bits);for(var j=0;j0&&buffer.length>0;){var singleByte=buffer[0],bitsToTake=Math.min(count,8);Math.ceil(bitsToTake/8);if(buffer=buffer.slice(1,buffer.length),null!=singleByte){var bits=singleByte.toString(2);bits=Array(8-bits.length+1).join("0").concat(bits).split("").reverse().join("");for(var j=0;j0&&buffer.length>0;){var hex=buffer[0].toString(16);buffer=buffer.slice(1,buffer.length),hex=Array(2-hex.length+1).join("0").concat(hex),1===count?(result.push(hex[0]),count--):(result.push(hex[0],hex[1]),count-=2)}return{chunk:result,rest:buffer}},h:function(buffer,count){for(var result=[];count>0&&buffer.length>0;){var hex=buffer[0].toString(16);buffer=buffer.slice(1,buffer.length),hex=Array(2-hex.length+1).join("0").concat(hex),1===count?(result.push(hex[1]),count--):(result.push(hex[1],hex[0]),count-=2)}return{chunk:result,rest:buffer}},u:readNTimesAndMerge((function(buffer){var length=buffer.indexOf(32);return-1===length?{chunk:buffer,rest:[]}:{chunk:buffer.slice(0,length),rest:buffer.slice(length,buffer.length)}})),M:readAll,m:readAll,P:null,p:null},autocompletion={C:!0,S:!0,L:!0,Q:!0,J:null,"S>":!0,"L>":!0,"Q>":!0,c:!0,s:!0,l:!0,q:!0,j:null,"s>":!0,"l>":!0,"q>":!0,n:null,N:null,v:null,V:null,U:!1,w:!1,D:null,d:null,F:null,f:null,E:null,e:null,G:null,g:null,A:!1,a:!1,Z:!1,B:!1,b:!1,H:!1,h:!1,u:!1,M:!1,m:!1,P:null,p:null},optimized={"C*":handlers.C,"c*":handlers.c,"A*":handlers.A,"a*":handlers.a,"M*":wrapIntoArray(handlers.M),"m*":wrapIntoArray(handlers.m),"S*":handlers.S,"s*":handlers.s,"L*":handlers.L,"l*":handlers.l,"Q*":handlers.Q,"q*":handlers.q,"S>*":handlers["S>"],"s>*":handlers["s>"],"L>*":handlers["L>"],"l>*":handlers["l>"],"Q>*":handlers["Q>"],"q>*":handlers["q>"]};function alias(existingDirective,newDirective){readChunk[newDirective]=readChunk[existingDirective],handlers[newDirective]=handlers[existingDirective],autocompletion[newDirective]=autocompletion[existingDirective]}return alias("S>","n"),alias("L>","N"),alias("S","v"),alias("L","V"),$def(self,"$unpack",(function(format,$kwargs){var offset;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");null==(offset=$kwargs.$$smap.offset)&&(offset=0),$truthy($rb_lt(offset,0))&&$Kernel.$raise($$$("ArgumentError"),"offset can't be negative"),format=$Opal["$coerce_to!"](format,$$$("String"),"to_str").$gsub(/\s/,"").$delete("\0");var output=[];if("U*"==format&&"UTF-8"===this.internal_encoding.name&&"function"==typeof this.codePointAt){var j=0;output=new Array(this.length);for(var i=offset;i65535&&i++;return output.slice(0,j)}var buffer=this.$bytes();$truthy($rb_gt(offset,buffer.$length()))&&$Kernel.$raise($$$("ArgumentError"),"offset outside of string"),buffer=buffer.slice(offset);var optimizedHandler=optimized[format];if(optimizedHandler)return optimizedHandler(buffer);return eachDirectiveAndCount(format,(function(directive,count){var part=function(directive,count){var chunk,chunkReader=readChunk[directive];null==chunkReader&&$Kernel.$raise("Unsupported unpack directive "+directive.$inspect()+" (no chunk reader defined)");var chunkData=chunkReader(buffer,count);chunk=chunkData.chunk,buffer=chunkData.rest;var handler=handlers[directive];return null==handler&&$Kernel.$raise("Unsupported unpack directive "+directive.$inspect()+" (no handler defined)"),handler(chunk)}(directive,count);if(count!==1/0){var shouldAutocomplete=autocompletion[directive];null==shouldAutocomplete&&$Kernel.$raise("Unsupported unpack directive "+directive.$inspect()+" (no autocompletion rule defined)"),shouldAutocomplete&&function(array,size){for(;array.length"}),0),$def(self,"$==",(function(other){return!!$truthy(this["$equal?"](other))||($truthy(other["$instance_of?"](this.$class()))?this.hash["$=="](other.$instance_variable_get("@hash")):!(!$truthy(other["$is_a?"]($$$("Set")))||!$eqeq(this.$size(),other.$size()))&&$send(other,"all?",[],(function $$5(o){var self=null==$$5.$$s?this:$$5.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash["$include?"](o)}),{$$arity:1,$$s:this}))}),1),$def(self,"$add",(function(o){var $writer;return $writer=[o,!0],$send(this.hash,"[]=",$to_a($writer)),$rb_minus($writer.length,1),this}),1),$def(self,"$classify",(function $$classify(){var block=$$classify.$$p||nil,result=nil;return delete $$classify.$$p,block===nil?this.$enum_for("classify"):(result=$send($$$("Hash"),"new",[],(function $$6(h,k){var $writer;return null==h&&(h=nil),null==k&&(k=nil),$writer=[k,(null==$$6.$$s?this:$$6.$$s).$class().$new()],$send(h,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:2,$$s:this}),$send(this,"each",[],(function(item){return null==item&&(item=nil),result["$[]"](Opal.yield1(block,item)).$add(item)}),1),result)}),0),$def(self,"$collect!",(function $Set_collect$excl$8(){var block=$Set_collect$excl$8.$$p||nil,result=nil;return delete $Set_collect$excl$8.$$p,block===nil?this.$enum_for("collect!"):(result=this.$class().$new(),$send(this,"each",[],(function(item){return null==item&&(item=nil),result["$<<"](Opal.yield1(block,item))}),1),this.$replace(result))}),0),$def(self,"$delete",(function(o){return this.hash.$delete(o),this}),1),$def(self,"$delete?",(function(o){return $truthy(this["$include?"](o))?(this.$delete(o),this):nil}),1),$def(self,"$delete_if",(function $$delete_if(){var $yield=$$delete_if.$$p||nil;return delete $$delete_if.$$p,$yield===nil?this.$enum_for("delete_if"):($send($send(this,"select",[],(function(o){return null==o&&(o=nil),Opal.yield1($yield,o)}),1),"each",[],(function $$13(o){var self=null==$$13.$$s?this:$$13.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash.$delete(o)}),{$$arity:1,$$s:this}),this)}),0),$def(self,"$keep_if",(function $$keep_if(){var $yield=$$keep_if.$$p||nil;return delete $$keep_if.$$p,$yield===nil?this.$enum_for("keep_if"):($send($send(this,"reject",[],(function(o){return null==o&&(o=nil),Opal.yield1($yield,o)}),1),"each",[],(function $$15(o){var self=null==$$15.$$s?this:$$15.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash.$delete(o)}),{$$arity:1,$$s:this}),this)}),0),$def(self,"$reject!",(function $Set_reject$excl$16(){var before,block=$Set_reject$excl$16.$$p||nil;return delete $Set_reject$excl$16.$$p,block===nil?this.$enum_for("reject!"):(before=this.$size(),$send(this,"delete_if",[],block.$to_proc()),$eqeq(this.$size(),before)?nil:this)}),0),$def(self,"$select!",(function $Set_select$excl$17(){var before,block=$Set_select$excl$17.$$p||nil;return delete $Set_select$excl$17.$$p,block===nil?this.$enum_for("select!"):(before=this.$size(),$send(this,"keep_if",[],block.$to_proc()),$eqeq(this.$size(),before)?nil:this)}),0),$def(self,"$add?",(function(o){return $truthy(this["$include?"](o))?nil:this.$add(o)}),1),$def(self,"$each",(function $$each(){var block=$$each.$$p||nil;return delete $$each.$$p,block===nil?this.$enum_for("each"):($send(this.hash,"each_key",[],block.$to_proc()),this)}),0),$def(self,"$empty?",(function(){return this.hash["$empty?"]()}),0),$def(self,"$eql?",(function(other){return this.hash["$eql?"]($send(other,"instance_eval",[],(function $$21(){var self=null==$$21.$$s?this:$$21.$$s;return null==self.hash&&(self.hash=nil),self.hash}),{$$arity:0,$$s:this}))}),1),$def(self,"$clear",(function(){return this.hash.$clear(),this}),0),$def(self,"$include?",(function(o){return this.hash["$include?"](o)}),1),$def(self,"$merge",(function(enum$){return $send(enum$,"each",[],(function $$23(item){return null==item&&(item=nil),(null==$$23.$$s?this:$$23.$$s).$add(item)}),{$$arity:1,$$s:this}),this}),1),$def(self,"$replace",(function(enum$){return this.$clear(),this.$merge(enum$),this}),1),$def(self,"$size",(function(){return this.hash.$size()}),0),$def(self,"$subtract",(function(enum$){return $send(enum$,"each",[],(function $$24(item){return null==item&&(item=nil),(null==$$24.$$s?this:$$24.$$s).$delete(item)}),{$$arity:1,$$s:this}),this}),1),$def(self,"$|",(function(enum$){return $truthy(enum$["$respond_to?"]("each"))||$Kernel.$raise($$$("ArgumentError"),"value must be enumerable"),this.$dup().$merge(enum$)}),1),$def(self,"$superset?",(function(set){return is_set(set),!$truthy($rb_lt(this.$size(),set.$size()))&&$send(set,"all?",[],(function $$27(o){return null==o&&(o=nil),(null==$$27.$$s?this:$$27.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$proper_superset?",(function(set){return is_set(set),!$truthy($rb_le(this.$size(),set.$size()))&&$send(set,"all?",[],(function $$29(o){return null==o&&(o=nil),(null==$$29.$$s?this:$$29.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$subset?",(function(set){return is_set(set),!$truthy($rb_lt(set.$size(),this.$size()))&&$send(this,"all?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1)}),1),$def(self,"$proper_subset?",(function(set){return is_set(set),!$truthy($rb_le(set.$size(),this.$size()))&&$send(this,"all?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1)}),1),$def(self,"$intersect?",(function(set){return is_set(set),$truthy($rb_lt(this.$size(),set.$size()))?$send(this,"any?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1):$send(set,"any?",[],(function $$36(o){return null==o&&(o=nil),(null==$$36.$$s?this:$$36.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$disjoint?",(function(set){return this["$intersect?"](set)["$!"]()}),1),$def(self,"$to_a",(function(){return this.hash.$keys()}),0),$alias(self,"+","|"),$alias(self,"<","proper_subset?"),$alias(self,"<<","add"),$alias(self,"<=","subset?"),$alias(self,">","proper_superset?"),$alias(self,">=","superset?"),$alias(self,"difference","-"),$alias(self,"filter!","select!"),$alias(self,"length","size"),$alias(self,"map!","collect!"),$alias(self,"member?","include?"),$alias(self,"union","|")}(),function($base,$parent_nesting){var self=$module("::","Enumerable"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$to_set",(function $$to_set($a,$b){var $post_args,klass,block=$$to_set.$$p||nil,self=this;return delete $$to_set.$$p,($post_args=Opal.slice.call(arguments)).length>0&&(klass=$post_args.shift()),null==klass&&(klass=$$("Set")),$send(klass,"new",[self].concat($to_a($post_args)),block.$to_proc())}),-1)}(0,[])},Opal.modules["ast/node"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$alias=Opal.alias,$hash2=Opal.hash2,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$rb_times=Opal.rb_times,$to_a=Opal.to_a;return Opal.add_stubs("attr_reader,to_sym,freeze,to_a,assign_properties,hash,class,eql?,type,children,each,instance_variable_set,protected,private,nil?,==,original_dup,send,equal?,respond_to?,to_ast,updated,+,*,fancy_type,is_a?,to_sexp,inspect,map,to_sexp_array,gsub,to_s"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Node"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.type=$proto.children=nil,self.$attr_reader("type"),self.$attr_reader("children"),$alias(self,"to_a","children"),self.$attr_reader("hash"),$def(self,"$initialize",(function(type,children,properties){var $a;return null==children&&(children=[]),null==properties&&(properties=$hash2([],{})),$a=[type.$to_sym(),children.$to_a().$freeze()],this.type=$a[0],this.children=$a[1],this.$assign_properties(properties),this.hash=[this.type,this.children,this.$class()].$hash(),this.$freeze()}),-2),$def(self,"$eql?",(function(other){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.$class()["$eql?"](other.$class()))?this.type["$eql?"](other.$type()):$ret_or_2)?this.children["$eql?"](other.$children()):$ret_or_1}),1),$def(self,"$assign_properties",(function(properties){return $send(properties,"each",[],(function $$2(name,value){return null==name&&(name=nil),null==value&&(value=nil),(null==$$2.$$s?this:$$2.$$s).$instance_variable_set("@"+name,value)}),{$$arity:2,$$s:this}),nil}),1),self.$protected("assign_properties"),$alias(self,"original_dup","dup"),self.$private("original_dup"),$def(self,"$dup",(function(){return this}),0),$alias(self,"clone","dup"),$def(self,"$updated",(function(type,children,properties){var new_type,new_children,new_properties,$ret_or_1=nil,copy=nil;return null==type&&(type=nil),null==children&&(children=nil),null==properties&&(properties=nil),new_type=$truthy($ret_or_1=type)?$ret_or_1:this.type,new_children=$truthy($ret_or_1=children)?$ret_or_1:this.children,new_properties=$truthy($ret_or_1=properties)?$ret_or_1:$hash2([],{}),$eqeq(this.type,new_type)&&$eqeq(this.children,new_children)&&$truthy(properties["$nil?"]())?this:((copy=this.$original_dup()).$send("initialize",new_type,new_children,new_properties),copy)}),-1),$def(self,"$==",(function(other){var $ret_or_1=nil;return!!$truthy(this["$equal?"](other))||!!$truthy(other["$respond_to?"]("to_ast"))&&(other=other.$to_ast(),$truthy($ret_or_1=other.$type()["$=="](this.$type()))?other.$children()["$=="](this.$children()):$ret_or_1)}),1),$def(self,"$concat",(function(array){return this.$updated(nil,$rb_plus(this.children,array.$to_a()))}),1),$alias(self,"+","concat"),$def(self,"$append",(function(element){return this.$updated(nil,$rb_plus(this.children,[element]))}),1),$alias(self,"<<","append"),$def(self,"$to_sexp",(function(indent){var indented,sexp=nil;return null==indent&&(indent=0),indented=$rb_times(" ",indent),sexp=indented+"("+this.$fancy_type(),$send(this.$children(),"each",[],(function(child){return null==child&&(child=nil),sexp=$truthy(child["$is_a?"]($$("Node")))?$rb_plus(sexp,"\n"+child.$to_sexp($rb_plus(indent,1))):$rb_plus(sexp," "+child.$inspect())}),1),sexp=$rb_plus(sexp,")")}),-1),$alias(self,"to_s","to_sexp"),$def(self,"$inspect",(function(indent){var indented,sexp=nil;return null==indent&&(indent=0),indented=$rb_times(" ",indent),sexp=indented+"s(:"+this.type,$send(this.$children(),"each",[],(function(child){return null==child&&(child=nil),sexp=$truthy(child["$is_a?"]($$("Node")))?$rb_plus(sexp,",\n"+child.$inspect($rb_plus(indent,1))):$rb_plus(sexp,", "+child.$inspect())}),1),sexp=$rb_plus(sexp,")")}),-1),$def(self,"$to_ast",(function(){return this}),0),$def(self,"$to_sexp_array",(function(){var children_sexp_arrs;return children_sexp_arrs=$send(this.$children(),"map",[],(function(child){return null==child&&(child=nil),$truthy(child["$is_a?"]($$("Node")))?child.$to_sexp_array():child}),1),[this.$type()].concat($to_a(children_sexp_arrs))}),0),$def(self,"$deconstruct",(function(){return[this.$type()].concat($to_a(this.$children()))}),0),self.$protected(),$def(self,"$fancy_type",(function(){return this.type.$to_s().$gsub("_","-")}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/processor/mixin"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("nil?,to_ast,type,respond_to?,send,handler_missing,map,to_a,process"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){return function($base){var self=$module($base,"Mixin");return $def(self,"$process",(function(node){var on_handler,new_node=nil;return $truthy(node["$nil?"]())?nil:(on_handler="on_"+(node=node.$to_ast()).$type(),new_node=$truthy(this["$respond_to?"](on_handler))?this.$send(on_handler,node):this.$handler_missing(node),$truthy(new_node)&&(node=new_node),node)}),1),$def(self,"$process_all",(function(nodes){return $send(nodes.$to_a(),"map",[],(function $$1(node){return null==node&&(node=nil),(null==$$1.$$s?this:$$1.$$s).$process(node)}),{$$arity:1,$$s:this})}),1),$def(self,"$handler_missing",(function(node){return nil}),1)}([$klass($base,null,"Processor")].concat($parent_nesting)[0])}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/processor"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass;return Opal.add_stubs("require,include"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Processor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$require("ast/processor/mixin"),self.$include($$("Mixin"))}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/sexp"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$def=Opal.def;return Opal.add_stubs("new"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Sexp"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$s",(function(type,$a){var children;return children=Opal.slice.call(arguments,1),$$("Node").$new(type,children)}),-2)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules.ast=function(Opal){Opal.nil;var self,$module=Opal.module;return Opal.add_stubs("require"),(self=$module([][0],"AST")).$require("ast/node"),self.$require("ast/processor"),self.$require("ast/sexp")},Opal.modules["parser/ast/node"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$alias=Opal.alias,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def;return Opal.add_stubs("attr_reader,[],frozen?,dup,node=,-"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,$super,"Node");return self.$attr_reader("location"),$alias(self,"loc","location"),$def(self,"$assign_properties",(function(properties){var location=nil,$writer=nil;return $truthy(location=properties["$[]"]("location"))?($truthy(location["$frozen?"]())&&(location=location.$dup()),$send(location,"node=",$to_a($writer=[this])),$writer[$rb_minus($writer.length,1)],this.location=location):nil}),1)}([$module($base,"AST")].concat($parent_nesting)[0],$$$($$$("AST"),"Node"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/ast/node"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("require,attr_reader,[],frozen?,dup,merge!,loc,line,column"),self.$require("ast"),self.$require("parser/ast/node"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,$super,"Node");return self.$$prototype.meta=nil,self.$attr_reader("meta"),$def(self,"$assign_properties",(function $$assign_properties(properties){var $yield=$$assign_properties.$$p||nil,meta=nil,$ret_or_1=nil;return delete $$assign_properties.$$p,$truthy(meta=properties["$[]"]("meta"))?($truthy(meta["$frozen?"]())&&(meta=meta.$dup()),this.meta["$merge!"](meta)):this.meta=$truthy($ret_or_1=this.meta)?$ret_or_1:$hash2([],{}),$send2(this,$find_super(this,"assign_properties",$$assign_properties,!1,!0),"assign_properties",[properties],$yield)}),1),$def(self,"$line",(function(){return $truthy(this.$loc())?this.$loc().$line():nil}),0),$def(self,"$column",(function(){return $truthy(this.$loc())?this.$loc().$column():nil}),0)}([$module($base,"AST")].concat($parent_nesting)[0],$$$($$$($$$("Parser"),"AST"),"Node"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["racc/parser"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$const_set=Opal.const_set,$defs=Opal.defs,$gvars=Opal.gvars,$rb_lt=Opal.rb_lt,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$to_ary=Opal.to_ary,$neqeq=Opal.neqeq,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$rb_ge=Opal.rb_ge,$rb_gt=Opal.rb_gt,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_times=Opal.rb_times;return Opal.add_stubs("[],class,<,size,[]=,-,__send__,_racc_setup,raise,_racc_init_sysvars,catch,!=,next_token,racc_read_token,+,==,>=,_racc_evalact,!,>,push,racc_shift,-@,_racc_do_reduce,===,racc_accept,throw,on_error,<=,pop,racc_e_pop,inspect,racc_next_state,*,racc_reduce,sprintf,token_to_str,print,racc_token2str,puts,racc_print_stacks,empty?,each,racc_print_states,each_index"),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);$klass($nesting[0],$$("StandardError"),"ParseError")}($nesting[0],$nesting),$truthy($$$("::","ParseError","skip_raise")?"constant":nil)||$const_set($nesting[0],"ParseError",$$$($$("Racc"),"ParseError")),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);return $truthy($$("Racc_No_Extensions","skip_raise")?"constant":nil)||$const_set($nesting[0],"Racc_No_Extensions",!1),function($base,$super,$parent_nesting){var self=$klass($base,null,"Parser"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.yydebug=$proto.racc_debug_out=$proto.racc_error_status=$proto.racc_t=$proto.racc_vstack=$proto.racc_val=$proto.racc_state=$proto.racc_tstack=nil,$const_set($nesting[0],"Racc_Runtime_Version","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Revision",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Runtime_Core_Version_R","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Core_Revision_R",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Main_Parsing_Routine","_racc_do_parse_rb"),$const_set($nesting[0],"Racc_YY_Parse_Method","_racc_yyparse_rb"),$const_set($nesting[0],"Racc_Runtime_Core_Version",$$("Racc_Runtime_Core_Version_R")),$const_set($nesting[0],"Racc_Runtime_Core_Revision",$$("Racc_Runtime_Core_Revision_R")),$const_set($nesting[0],"Racc_Runtime_Type","ruby"),$defs($$("Parser"),"$racc_runtime_type",(function(){return $$("Racc_Runtime_Type")}),0),$def(self,"$_racc_setup",(function(){var $a,$b,$ret_or_1=nil,arg=nil,$writer=nil;return null==$gvars.stderr&&($gvars.stderr=nil),$truthy($$$(this.$class(),"Racc_debug_parser"))||(this.yydebug=!1),$truthy(null!=($a=this.yydebug)&&$a!==nil?"instance-variable":nil)||(this.yydebug=!1),$truthy(this.yydebug)&&($truthy(null!=($b=this.racc_debug_out)&&$b!==nil?"instance-variable":nil)||(this.racc_debug_out=$gvars.stderr),this.racc_debug_out=$truthy($ret_or_1=this.racc_debug_out)?$ret_or_1:$gvars.stderr),arg=$$$(this.$class(),"Racc_arg"),$truthy($rb_lt(arg.$size(),14))&&($send(arg,"[]=",$to_a($writer=[13,!0])),$writer[$rb_minus($writer.length,1)]),arg}),0),$def(self,"$_racc_init_sysvars",(function(){return this.racc_state=[0],this.racc_tstack=[],this.racc_vstack=[],this.racc_t=nil,this.racc_val=nil,this.racc_read_next=!0,this.racc_user_yyerror=!1,this.racc_error_status=0}),0),$def(self,"$do_parse",(function(){return this.$__send__($$("Racc_Main_Parsing_Routine"),this.$_racc_setup(),!1)}),0),$def(self,"$next_token",(function(){return this.$raise($$("NotImplementedError"),this.$class()+"#next_token is not defined")}),0),$def(self,"$_racc_do_parse_rb",(function(arg,in_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,tok=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),tok=act=i=nil,$send(this,"catch",["racc_end_parse"],(function $$1(){var $d,$e,self=null==$$1.$$s?this:$$1.$$s,$ret_or_1=nil;for(null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==self.racc_t&&(self.racc_t=nil),null==self.yydebug&&(self.yydebug=nil),null==self.racc_val&&(self.racc_val=nil);$truthy(!0);)for($truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))?($truthy(self.racc_read_next)&&$neqeq(self.racc_t,0)&&($e=self.$next_token(),$d=$to_ary($e),tok=null==$d[0]?nil:$d[0],self.racc_val=null==$d[1]?nil:$d[1],$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,$truthy(self.yydebug)&&self.$racc_read_token(self.racc_t,tok,self.racc_val),self.racc_read_next=!1),i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)))):act=action_default["$[]"](self.racc_state["$[]"](-1));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:0,$$s:this})}),2),$def(self,"$yyparse",(function(recv,mid){return this.$__send__($$("Racc_YY_Parse_Method"),recv,mid,this.$_racc_setup(),!0)}),2),$def(self,"$_racc_yyparse_rb",(function(recv,mid,arg,c_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),act=nil,i=nil,$send(this,"catch",["racc_end_parse"],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;for(null==self.racc_state&&(self.racc_state=nil);!$truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)));)for(;$truthy(act=self.$_racc_evalact(action_default["$[]"](self.racc_state["$[]"](-1)),arg)););return $send(recv,"__send__",[mid],(function $$3(tok,val){var self=null==$$3.$$s?this:$$3.$$s,$ret_or_1=nil,$ret_or_2=nil;for(null==self.racc_t&&(self.racc_t=nil),null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==tok&&(tok=nil),null==val&&(val=nil),$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,self.racc_val=val,self.racc_read_next=!1,i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););for(;$truthy($truthy($ret_or_1=$truthy($ret_or_2=(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))["$!"]())?$ret_or_2:self.racc_read_next["$!"]())?$ret_or_1:self.racc_t["$=="](0));)for($truthy(i)&&$truthy(i=$rb_plus(i,self.racc_t))&&$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:2,$$s:self})}),{$$arity:0,$$s:this})}),4),$def(self,"$_racc_evalact",(function(act,arg){var $a,shift_n,action_table=nil,action_check=nil,action_pointer=nil,reduce_n=nil,code=nil,$ret_or_1=nil,i=nil;if(action_table=null==($a=$to_ary(arg))[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],shift_n=null==$a[11]?nil:$a[11],reduce_n=null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],null==$a[14]?nil:$a[14],$truthy($rb_gt(act,0))&&$truthy($rb_lt(act,shift_n)))$truthy($rb_gt(this.racc_error_status,0))&&($eqeq(this.racc_t,1)||(this.racc_error_status=$rb_minus(this.racc_error_status,1))),this.racc_vstack.$push(this.racc_val),this.racc_state.$push(act),this.racc_read_next=!0,$truthy(this.yydebug)&&(this.racc_tstack.$push(this.racc_t),this.$racc_shift(this.racc_t,this.racc_tstack,this.racc_vstack));else if($truthy($rb_lt(act,0))&&$truthy($rb_gt(act,reduce_n["$-@"]()))){if(code=$send(this,"catch",["racc_jump"],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s;return null==self.racc_state&&(self.racc_state=nil),self.racc_state.$push(self.$_racc_do_reduce(arg,act)),!1}),{$$arity:0,$$s:this}),$truthy(code)){if($eqeqeq(1,$ret_or_1=code))return this.racc_user_yyerror=!0,reduce_n["$-@"]();if($eqeqeq(2,$ret_or_1))return shift_n;this.$raise("[Racc Bug] unknown jump code")}}else if($eqeq(act,shift_n))$truthy(this.yydebug)&&this.$racc_accept(),this.$throw("racc_end_parse",this.racc_vstack["$[]"](0));else{if($eqeq(act,reduce_n["$-@"]())){for($eqeqeq(0,$ret_or_1=this.racc_error_status)?$truthy(arg["$[]"](21))||this.$on_error(this.racc_t,this.racc_val,this.racc_vstack):$eqeqeq(3,$ret_or_1)&&($eqeq(this.racc_t,0)&&this.$throw("racc_end_parse",nil),this.racc_read_next=!0),this.racc_user_yyerror=!1,this.racc_error_status=3;$truthy(!0)&&!($truthy(i=action_pointer["$[]"](this.racc_state["$[]"](-1)))&&(i=$rb_plus(i,1),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),this.racc_state["$[]"](-1))));)$truthy($rb_le(this.racc_state.$size(),1))&&this.$throw("racc_end_parse",nil),this.racc_state.$pop(),this.racc_vstack.$pop(),$truthy(this.yydebug)&&(this.racc_tstack.$pop(),this.$racc_e_pop(this.racc_state,this.racc_tstack,this.racc_vstack));return act}this.$raise("[Racc Bug] unknown action "+act.$inspect())}return $truthy(this.yydebug)&&this.$racc_next_state(this.racc_state["$[]"](-1),this.racc_state),nil}),2),$def(self,"$_racc_do_reduce",(function(arg,act){var $a,nt_base,use_result,reduce_to,method_id,void_array,k1,goto_table=nil,goto_check=nil,goto_default=nil,goto_pointer=nil,reduce_table=nil,state=nil,vstack=nil,tstack=nil,i=nil,len=nil,tmp_t=nil,tmp_v=nil,$writer=nil,curstate=nil;return null==($a=$to_ary(arg))[0]?nil:$a[0],null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],null==$a[3]?nil:$a[3],goto_table=null==$a[4]?nil:$a[4],goto_check=null==$a[5]?nil:$a[5],goto_default=null==$a[6]?nil:$a[6],goto_pointer=null==$a[7]?nil:$a[7],nt_base=null==$a[8]?nil:$a[8],reduce_table=null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],use_result=null==$a[13]?nil:$a[13],state=this.racc_state,vstack=this.racc_vstack,tstack=this.racc_tstack,i=$rb_times(act,-3),len=reduce_table["$[]"](i),reduce_to=reduce_table["$[]"]($rb_plus(i,1)),method_id=reduce_table["$[]"]($rb_plus(i,2)),void_array=[],$truthy(this.yydebug)&&(tmp_t=tstack["$[]"](len["$-@"](),len)),tmp_v=vstack["$[]"](len["$-@"](),len),$truthy(this.yydebug)&&($writer=[len["$-@"](),len,void_array],$send(tstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=[len["$-@"](),len,void_array],$send(vstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[len["$-@"](),len,void_array],$send(state,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(use_result)?vstack.$push(this.$__send__(method_id,tmp_v,vstack,tmp_v["$[]"](0))):vstack.$push(this.$__send__(method_id,tmp_v,vstack)),tstack.$push(reduce_to),$truthy(this.yydebug)&&this.$racc_reduce(tmp_t,reduce_to,tstack,vstack),k1=$rb_minus(reduce_to,nt_base),$truthy(i=goto_pointer["$[]"](k1))&&(i=$rb_plus(i,state["$[]"](-1)),$truthy($rb_ge(i,0))&&$truthy(curstate=goto_table["$[]"](i))&&$eqeq(goto_check["$[]"](i),k1))?curstate:goto_default["$[]"](k1)}),2),$def(self,"$on_error",(function(t,val,vstack){var $ret_or_1;return this.$raise($$("ParseError"),this.$sprintf("\nparse error on value %s (%s)",val.$inspect(),$truthy($ret_or_1=this.$token_to_str(t))?$ret_or_1:"?"))}),3),$def(self,"$yyerror",(function(){return this.$throw("racc_jump",1)}),0),$def(self,"$yyaccept",(function(){return this.$throw("racc_jump",2)}),0),$def(self,"$yyerrok",(function(){return this.racc_error_status=0}),0),$def(self,"$racc_read_token",(function(t,tok,val){return this.racc_debug_out.$print("read "),this.racc_debug_out.$print(tok.$inspect(),"(",this.$racc_token2str(t),") "),this.racc_debug_out.$puts(val.$inspect()),this.racc_debug_out.$puts()}),3),$def(self,"$racc_shift",(function(tok,tstack,vstack){return this.racc_debug_out.$puts("shift "+this.$racc_token2str(tok)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_reduce",(function(toks,sim,tstack,vstack){var out=nil;return(out=this.racc_debug_out).$print("reduce "),$truthy(toks["$empty?"]())?out.$print(" "):$send(toks,"each",[],(function $$5(t){var self=null==$$5.$$s?this:$$5.$$s;return null==t&&(t=nil),out.$print(" ",self.$racc_token2str(t))}),{$$arity:1,$$s:this}),out.$puts(" --\x3e "+this.$racc_token2str(sim)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),4),$def(self,"$racc_accept",(function(){return this.racc_debug_out.$puts("accept"),this.racc_debug_out.$puts()}),0),$def(self,"$racc_e_pop",(function(state,tstack,vstack){return this.racc_debug_out.$puts("error recovering mode: pop token"),this.$racc_print_states(state),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_next_state",(function(curstate,state){return this.racc_debug_out.$puts("goto "+curstate),this.$racc_print_states(state),this.racc_debug_out.$puts()}),2),$def(self,"$racc_print_stacks",(function(t,v){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(t,"each_index",[],(function $$6(i){var self=null==$$6.$$s?this:$$6.$$s;return null==i&&(i=nil),out.$print(" (",self.$racc_token2str(t["$[]"](i))," ",v["$[]"](i).$inspect(),")")}),{$$arity:1,$$s:this}),out.$puts(" ]")}),2),$def(self,"$racc_print_states",(function(s){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(s,"each",[],(function(st){return null==st&&(st=nil),out.$print(" ",st)}),1),out.$puts(" ]")}),1),$def(self,"$racc_token2str",(function(tok){var $ret_or_1;return $truthy($ret_or_1=$$$(this.$class(),"Racc_token_to_s_table")["$[]"](tok))?$ret_or_1:this.$raise("[Racc Bug] can't convert token "+tok+" to string")}),1),$def(self,"$token_to_str",(function(t){return $$$(this.$class(),"Racc_token_to_s_table")["$[]"](t)}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/version"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set;return function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return $const_set($nesting[0],"VERSION","3.1.0.0")}($nesting[0],$nesting)},Opal.modules["racc/parser"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$const_set=Opal.const_set,$defs=Opal.defs,$gvars=Opal.gvars,$rb_lt=Opal.rb_lt,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$to_ary=Opal.to_ary,$neqeq=Opal.neqeq,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$rb_ge=Opal.rb_ge,$rb_gt=Opal.rb_gt,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_times=Opal.rb_times;return Opal.add_stubs("[],class,<,size,[]=,-,__send__,_racc_setup,raise,_racc_init_sysvars,catch,!=,next_token,racc_read_token,+,==,>=,_racc_evalact,!,>,push,racc_shift,-@,_racc_do_reduce,===,racc_accept,throw,on_error,<=,pop,racc_e_pop,inspect,racc_next_state,*,racc_reduce,sprintf,token_to_str,print,racc_token2str,puts,racc_print_stacks,empty?,each,racc_print_states,each_index"),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);$klass($nesting[0],$$("StandardError"),"ParseError")}($nesting[0],$nesting),$truthy($$$("::","ParseError","skip_raise")?"constant":nil)||$const_set($nesting[0],"ParseError",$$$($$("Racc"),"ParseError")),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);return $truthy($$("Racc_No_Extensions","skip_raise")?"constant":nil)||$const_set($nesting[0],"Racc_No_Extensions",!1),function($base,$super,$parent_nesting){var self=$klass($base,null,"Parser"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.yydebug=$proto.racc_debug_out=$proto.racc_error_status=$proto.racc_t=$proto.racc_vstack=$proto.racc_val=$proto.racc_state=$proto.racc_tstack=nil,$const_set($nesting[0],"Racc_Runtime_Version","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Revision",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Runtime_Core_Version_R","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Core_Revision_R",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Main_Parsing_Routine","_racc_do_parse_rb"),$const_set($nesting[0],"Racc_YY_Parse_Method","_racc_yyparse_rb"),$const_set($nesting[0],"Racc_Runtime_Core_Version",$$("Racc_Runtime_Core_Version_R")),$const_set($nesting[0],"Racc_Runtime_Core_Revision",$$("Racc_Runtime_Core_Revision_R")),$const_set($nesting[0],"Racc_Runtime_Type","ruby"),$defs($$("Parser"),"$racc_runtime_type",(function(){return $$("Racc_Runtime_Type")}),0),$def(self,"$_racc_setup",(function(){var $a,$b,$ret_or_1=nil,arg=nil,$writer=nil;return null==$gvars.stderr&&($gvars.stderr=nil),$truthy($$$(this.$class(),"Racc_debug_parser"))||(this.yydebug=!1),$truthy(null!=($a=this.yydebug)&&$a!==nil?"instance-variable":nil)||(this.yydebug=!1),$truthy(this.yydebug)&&($truthy(null!=($b=this.racc_debug_out)&&$b!==nil?"instance-variable":nil)||(this.racc_debug_out=$gvars.stderr),this.racc_debug_out=$truthy($ret_or_1=this.racc_debug_out)?$ret_or_1:$gvars.stderr),arg=$$$(this.$class(),"Racc_arg"),$truthy($rb_lt(arg.$size(),14))&&($send(arg,"[]=",$to_a($writer=[13,!0])),$writer[$rb_minus($writer.length,1)]),arg}),0),$def(self,"$_racc_init_sysvars",(function(){return this.racc_state=[0],this.racc_tstack=[],this.racc_vstack=[],this.racc_t=nil,this.racc_val=nil,this.racc_read_next=!0,this.racc_user_yyerror=!1,this.racc_error_status=0}),0),$def(self,"$do_parse",(function(){return this.$__send__($$("Racc_Main_Parsing_Routine"),this.$_racc_setup(),!1)}),0),$def(self,"$next_token",(function(){return this.$raise($$("NotImplementedError"),this.$class()+"#next_token is not defined")}),0),$def(self,"$_racc_do_parse_rb",(function(arg,in_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,tok=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),tok=act=i=nil,$send(this,"catch",["racc_end_parse"],(function $$1(){var $d,$e,self=null==$$1.$$s?this:$$1.$$s,$ret_or_1=nil;for(null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==self.racc_t&&(self.racc_t=nil),null==self.yydebug&&(self.yydebug=nil),null==self.racc_val&&(self.racc_val=nil);$truthy(!0);)for($truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))?($truthy(self.racc_read_next)&&$neqeq(self.racc_t,0)&&($e=self.$next_token(),$d=$to_ary($e),tok=null==$d[0]?nil:$d[0],self.racc_val=null==$d[1]?nil:$d[1],$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,$truthy(self.yydebug)&&self.$racc_read_token(self.racc_t,tok,self.racc_val),self.racc_read_next=!1),i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)))):act=action_default["$[]"](self.racc_state["$[]"](-1));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:0,$$s:this})}),2),$def(self,"$yyparse",(function(recv,mid){return this.$__send__($$("Racc_YY_Parse_Method"),recv,mid,this.$_racc_setup(),!0)}),2),$def(self,"$_racc_yyparse_rb",(function(recv,mid,arg,c_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),act=nil,i=nil,$send(this,"catch",["racc_end_parse"],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;for(null==self.racc_state&&(self.racc_state=nil);!$truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)));)for(;$truthy(act=self.$_racc_evalact(action_default["$[]"](self.racc_state["$[]"](-1)),arg)););return $send(recv,"__send__",[mid],(function $$3(tok,val){var self=null==$$3.$$s?this:$$3.$$s,$ret_or_1=nil,$ret_or_2=nil;for(null==self.racc_t&&(self.racc_t=nil),null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==tok&&(tok=nil),null==val&&(val=nil),$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,self.racc_val=val,self.racc_read_next=!1,i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););for(;$truthy($truthy($ret_or_1=$truthy($ret_or_2=(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))["$!"]())?$ret_or_2:self.racc_read_next["$!"]())?$ret_or_1:self.racc_t["$=="](0));)for($truthy(i)&&$truthy(i=$rb_plus(i,self.racc_t))&&$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:2,$$s:self})}),{$$arity:0,$$s:this})}),4),$def(self,"$_racc_evalact",(function(act,arg){var $a,shift_n,action_table=nil,action_check=nil,action_pointer=nil,reduce_n=nil,code=nil,$ret_or_1=nil,i=nil;if(action_table=null==($a=$to_ary(arg))[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],shift_n=null==$a[11]?nil:$a[11],reduce_n=null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],null==$a[14]?nil:$a[14],$truthy($rb_gt(act,0))&&$truthy($rb_lt(act,shift_n)))$truthy($rb_gt(this.racc_error_status,0))&&($eqeq(this.racc_t,1)||(this.racc_error_status=$rb_minus(this.racc_error_status,1))),this.racc_vstack.$push(this.racc_val),this.racc_state.$push(act),this.racc_read_next=!0,$truthy(this.yydebug)&&(this.racc_tstack.$push(this.racc_t),this.$racc_shift(this.racc_t,this.racc_tstack,this.racc_vstack));else if($truthy($rb_lt(act,0))&&$truthy($rb_gt(act,reduce_n["$-@"]()))){if(code=$send(this,"catch",["racc_jump"],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s;return null==self.racc_state&&(self.racc_state=nil),self.racc_state.$push(self.$_racc_do_reduce(arg,act)),!1}),{$$arity:0,$$s:this}),$truthy(code)){if($eqeqeq(1,$ret_or_1=code))return this.racc_user_yyerror=!0,reduce_n["$-@"]();if($eqeqeq(2,$ret_or_1))return shift_n;this.$raise("[Racc Bug] unknown jump code")}}else if($eqeq(act,shift_n))$truthy(this.yydebug)&&this.$racc_accept(),this.$throw("racc_end_parse",this.racc_vstack["$[]"](0));else{if($eqeq(act,reduce_n["$-@"]())){for($eqeqeq(0,$ret_or_1=this.racc_error_status)?$truthy(arg["$[]"](21))||this.$on_error(this.racc_t,this.racc_val,this.racc_vstack):$eqeqeq(3,$ret_or_1)&&($eqeq(this.racc_t,0)&&this.$throw("racc_end_parse",nil),this.racc_read_next=!0),this.racc_user_yyerror=!1,this.racc_error_status=3;$truthy(!0)&&!($truthy(i=action_pointer["$[]"](this.racc_state["$[]"](-1)))&&(i=$rb_plus(i,1),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),this.racc_state["$[]"](-1))));)$truthy($rb_le(this.racc_state.$size(),1))&&this.$throw("racc_end_parse",nil),this.racc_state.$pop(),this.racc_vstack.$pop(),$truthy(this.yydebug)&&(this.racc_tstack.$pop(),this.$racc_e_pop(this.racc_state,this.racc_tstack,this.racc_vstack));return act}this.$raise("[Racc Bug] unknown action "+act.$inspect())}return $truthy(this.yydebug)&&this.$racc_next_state(this.racc_state["$[]"](-1),this.racc_state),nil}),2),$def(self,"$_racc_do_reduce",(function(arg,act){var $a,nt_base,use_result,reduce_to,method_id,void_array,k1,goto_table=nil,goto_check=nil,goto_default=nil,goto_pointer=nil,reduce_table=nil,state=nil,vstack=nil,tstack=nil,i=nil,len=nil,tmp_t=nil,tmp_v=nil,$writer=nil,curstate=nil;return null==($a=$to_ary(arg))[0]?nil:$a[0],null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],null==$a[3]?nil:$a[3],goto_table=null==$a[4]?nil:$a[4],goto_check=null==$a[5]?nil:$a[5],goto_default=null==$a[6]?nil:$a[6],goto_pointer=null==$a[7]?nil:$a[7],nt_base=null==$a[8]?nil:$a[8],reduce_table=null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],use_result=null==$a[13]?nil:$a[13],state=this.racc_state,vstack=this.racc_vstack,tstack=this.racc_tstack,i=$rb_times(act,-3),len=reduce_table["$[]"](i),reduce_to=reduce_table["$[]"]($rb_plus(i,1)),method_id=reduce_table["$[]"]($rb_plus(i,2)),void_array=[],$truthy(this.yydebug)&&(tmp_t=tstack["$[]"](len["$-@"](),len)),tmp_v=vstack["$[]"](len["$-@"](),len),$truthy(this.yydebug)&&($writer=[len["$-@"](),len,void_array],$send(tstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=[len["$-@"](),len,void_array],$send(vstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[len["$-@"](),len,void_array],$send(state,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(use_result)?vstack.$push(this.$__send__(method_id,tmp_v,vstack,tmp_v["$[]"](0))):vstack.$push(this.$__send__(method_id,tmp_v,vstack)),tstack.$push(reduce_to),$truthy(this.yydebug)&&this.$racc_reduce(tmp_t,reduce_to,tstack,vstack),k1=$rb_minus(reduce_to,nt_base),$truthy(i=goto_pointer["$[]"](k1))&&(i=$rb_plus(i,state["$[]"](-1)),$truthy($rb_ge(i,0))&&$truthy(curstate=goto_table["$[]"](i))&&$eqeq(goto_check["$[]"](i),k1))?curstate:goto_default["$[]"](k1)}),2),$def(self,"$on_error",(function(t,val,vstack){var $ret_or_1;return this.$raise($$("ParseError"),this.$sprintf("\nparse error on value %s (%s)",val.$inspect(),$truthy($ret_or_1=this.$token_to_str(t))?$ret_or_1:"?"))}),3),$def(self,"$yyerror",(function(){return this.$throw("racc_jump",1)}),0),$def(self,"$yyaccept",(function(){return this.$throw("racc_jump",2)}),0),$def(self,"$yyerrok",(function(){return this.racc_error_status=0}),0),$def(self,"$racc_read_token",(function(t,tok,val){return this.racc_debug_out.$print("read "),this.racc_debug_out.$print(tok.$inspect(),"(",this.$racc_token2str(t),") "),this.racc_debug_out.$puts(val.$inspect()),this.racc_debug_out.$puts()}),3),$def(self,"$racc_shift",(function(tok,tstack,vstack){return this.racc_debug_out.$puts("shift "+this.$racc_token2str(tok)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_reduce",(function(toks,sim,tstack,vstack){var out=nil;return(out=this.racc_debug_out).$print("reduce "),$truthy(toks["$empty?"]())?out.$print(" "):$send(toks,"each",[],(function $$5(t){var self=null==$$5.$$s?this:$$5.$$s;return null==t&&(t=nil),out.$print(" ",self.$racc_token2str(t))}),{$$arity:1,$$s:this}),out.$puts(" --\x3e "+this.$racc_token2str(sim)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),4),$def(self,"$racc_accept",(function(){return this.racc_debug_out.$puts("accept"),this.racc_debug_out.$puts()}),0),$def(self,"$racc_e_pop",(function(state,tstack,vstack){return this.racc_debug_out.$puts("error recovering mode: pop token"),this.$racc_print_states(state),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_next_state",(function(curstate,state){return this.racc_debug_out.$puts("goto "+curstate),this.$racc_print_states(state),this.racc_debug_out.$puts()}),2),$def(self,"$racc_print_stacks",(function(t,v){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(t,"each_index",[],(function $$6(i){var self=null==$$6.$$s?this:$$6.$$s;return null==i&&(i=nil),out.$print(" (",self.$racc_token2str(t["$[]"](i))," ",v["$[]"](i).$inspect(),")")}),{$$arity:1,$$s:this}),out.$puts(" ]")}),2),$def(self,"$racc_print_states",(function(s){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(s,"each",[],(function(st){return null==st&&(st=nil),out.$print(" ",st)}),1),out.$puts(" ]")}),1),$def(self,"$racc_token2str",(function(tok){var $ret_or_1;return $truthy($ret_or_1=$$$(this.$class(),"Racc_token_to_s_table")["$[]"](tok))?$ret_or_1:this.$raise("[Racc Bug] can't convert token "+tok+" to string")}),1),$def(self,"$token_to_str",(function(t){return $$$(this.$class(),"Racc_token_to_s_table")["$[]"](t)}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/messages"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set,$hash2=Opal.hash2,$truthy=Opal.truthy,$eqeqeq=Opal.eqeqeq,$defs=Opal.defs;return Opal.add_stubs("freeze,[],empty?,===,format"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return $const_set($nesting[0],"MESSAGES",$hash2(["unicode_point_too_large","invalid_escape","incomplete_escape","invalid_hex_escape","invalid_unicode_escape","unterminated_unicode","escape_eof","string_eof","regexp_options","cvar_name","ivar_name","trailing_in_number","empty_numeric","invalid_octal","no_dot_digit_literal","bare_backslash","unexpected","embedded_document","heredoc_id_has_newline","heredoc_id_ends_with_nl","unterminated_heredoc_id","invalid_escape_use","ambiguous_literal","ambiguous_regexp","ambiguous_prefix","triple_dot_at_eol","nth_ref_alias","begin_in_method","backref_assignment","invalid_assignment","module_name_const","unexpected_token","argument_const","argument_ivar","argument_gvar","argument_cvar","duplicate_argument","empty_symbol","odd_hash","singleton_literal","dynamic_const","const_reassignment","module_in_def","class_in_def","unexpected_percent_str","block_and_blockarg","masgn_as_condition","block_given_to_yield","invalid_regexp","invalid_return","csend_in_lhs_of_masgn","cant_assign_to_numparam","reserved_for_numparam","ordinary_param_defined","numparam_used_in_outer_scope","circular_argument_reference","pm_interp_in_var_name","lvar_name","undefined_lvar","duplicate_variable_name","duplicate_pattern_key","endless_setter","invalid_id_to_get","forward_arg_after_restarg","no_anonymous_blockarg","useless_else","duplicate_hash_key","invalid_encoding","invalid_action","clobbered","different_replacements","swallowed_insertions","swallowed_insertions_conflict","crossing_deletions","crossing_deletions_conflict","crossing_insertions","crossing_insertions_conflict"],{unicode_point_too_large:"invalid Unicode codepoint (too large)",invalid_escape:"invalid escape character syntax",incomplete_escape:"incomplete character syntax",invalid_hex_escape:"invalid hex escape",invalid_unicode_escape:"invalid Unicode escape",unterminated_unicode:"unterminated Unicode escape",escape_eof:"escape sequence meets end of file",string_eof:"unterminated string meets end of file",regexp_options:"unknown regexp options: %{options}",cvar_name:"`%{name}' is not allowed as a class variable name",ivar_name:"`%{name}' is not allowed as an instance variable name",trailing_in_number:"trailing `%{character}' in number",empty_numeric:"numeric literal without digits",invalid_octal:"invalid octal digit",no_dot_digit_literal:"no . floating literal anymore; put 0 before dot",bare_backslash:"bare backslash only allowed before newline",unexpected:"unexpected `%{character}'",embedded_document:"embedded document meets end of file (and they embark on a romantic journey)",heredoc_id_has_newline:"here document identifier across newlines, never match",heredoc_id_ends_with_nl:"here document identifier ends with a newline",unterminated_heredoc_id:"unterminated heredoc id",invalid_escape_use:"invalid character syntax; use ?%{escape}",ambiguous_literal:"ambiguous first argument; put parentheses or a space even after the operator",ambiguous_regexp:"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after `/' operator",ambiguous_prefix:"`%{prefix}' interpreted as argument prefix",triple_dot_at_eol:"... at EOL, should be parenthesized",nth_ref_alias:"cannot define an alias for a back-reference variable",begin_in_method:"BEGIN in method",backref_assignment:"cannot assign to a back-reference variable",invalid_assignment:"cannot assign to a keyword",module_name_const:"class or module name must be a constant literal",unexpected_token:"unexpected token %{token}",argument_const:"formal argument cannot be a constant",argument_ivar:"formal argument cannot be an instance variable",argument_gvar:"formal argument cannot be a global variable",argument_cvar:"formal argument cannot be a class variable",duplicate_argument:"duplicate argument name",empty_symbol:"empty symbol literal",odd_hash:"odd number of entries for a hash",singleton_literal:"cannot define a singleton method for a literal",dynamic_const:"dynamic constant assignment",const_reassignment:"constant re-assignment",module_in_def:"module definition in method body",class_in_def:"class definition in method body",unexpected_percent_str:"%{type}: unknown type of percent-literal",block_and_blockarg:"both block argument and literal block are passed",masgn_as_condition:"multiple assignment in conditional context",block_given_to_yield:"block given to yield",invalid_regexp:"%{message}",invalid_return:"Invalid return in class/module body",csend_in_lhs_of_masgn:"&. inside multiple assignment destination",cant_assign_to_numparam:"cannot assign to numbered parameter %{name}",reserved_for_numparam:"%{name} is reserved for numbered parameter",ordinary_param_defined:"ordinary parameter is defined",numparam_used_in_outer_scope:"numbered parameter is already used in an outer scope",circular_argument_reference:"circular argument reference %{var_name}",pm_interp_in_var_name:"symbol literal with interpolation is not allowed",lvar_name:"`%{name}' is not allowed as a local variable name",undefined_lvar:"no such local variable: `%{name}'",duplicate_variable_name:"duplicate variable name %{name}",duplicate_pattern_key:"duplicate hash pattern key %{name}",endless_setter:"setter method cannot be defined in an endless method definition",invalid_id_to_get:"identifier %{identifier} is not valid to get",forward_arg_after_restarg:"... after rest argument",no_anonymous_blockarg:"no anonymous block parameter",useless_else:"else without rescue is useless",duplicate_hash_key:"key is duplicated and overwritten",invalid_encoding:"literal contains escape sequences incompatible with UTF-8",invalid_action:"cannot %{action}",clobbered:"clobbered by: %{action}",different_replacements:"different replacements: %{replacement} vs %{other_replacement}",swallowed_insertions:"this replacement:",swallowed_insertions_conflict:"swallows some inner rewriting actions:",crossing_deletions:"the deletion of:",crossing_deletions_conflict:"is crossing:",crossing_insertions:"the rewriting action on:",crossing_insertions_conflict:"is crossing that on:"}).$freeze()),function($base,$parent_nesting){var self=$module($base,"Messages"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$compile",(function(reason,arguments$){var template;return template=$$("MESSAGES")["$[]"](reason),$eqeqeq($$("Hash"),arguments$)&&$truthy(arguments$["$empty?"]())?template:this.$format(template,arguments$)}),2)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/deprecation"]=function(Opal){var $base,$parent_nesting,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("attr_writer,warn"),$base=$nesting[0],$parent_nesting=$nesting,function($base){var self=$module($base,"Deprecation");return self.$attr_writer("warned_of_deprecation"),$def(self,"$warn_of_deprecation",(function(){var $ret_or_1,$ret_or_2=nil;return null==this.warned_of_deprecation&&(this.warned_of_deprecation=nil),this.warned_of_deprecation=$truthy($ret_or_1=this.warned_of_deprecation)?$ret_or_1:!$truthy($ret_or_2=this.$warn($$$(this,"DEPRECATION_WARNING")))||$ret_or_2}),0)}([$module($base,"Parser")].concat($parent_nesting)[0])},Opal.modules["parser/ast/processor"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$alias=Opal.alias,$to_a=Opal.to_a,$not=Opal.not,$truthy=Opal.truthy,$slice=Opal.slice;return Opal.add_stubs("updated,process_all,on_var,!,nil?,process,on_vasgn,on_argument,is_a?,[],children,process_regular_node,warn"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Processor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$process_regular_node",(function(node){return node.$updated(nil,this.$process_all(node))}),1),$alias(self,"on_dstr","process_regular_node"),$alias(self,"on_dsym","process_regular_node"),$alias(self,"on_regexp","process_regular_node"),$alias(self,"on_xstr","process_regular_node"),$alias(self,"on_splat","process_regular_node"),$alias(self,"on_kwsplat","process_regular_node"),$alias(self,"on_array","process_regular_node"),$alias(self,"on_pair","process_regular_node"),$alias(self,"on_hash","process_regular_node"),$alias(self,"on_kwargs","process_regular_node"),$alias(self,"on_irange","process_regular_node"),$alias(self,"on_erange","process_regular_node"),$def(self,"$on_var",(function(node){return node}),1),$def(self,"$process_variable_node",(function(node){return this.$on_var(node)}),1),$alias(self,"on_lvar","process_variable_node"),$alias(self,"on_ivar","process_variable_node"),$alias(self,"on_gvar","process_variable_node"),$alias(self,"on_cvar","process_variable_node"),$alias(self,"on_back_ref","process_variable_node"),$alias(self,"on_nth_ref","process_variable_node"),$def(self,"$on_vasgn",(function(node){var $a,name,value_node=nil;return name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value_node=null==$a[1]?nil:$a[1],$not(value_node["$nil?"]())?node.$updated(nil,[name,this.$process(value_node)]):node}),1),$def(self,"$process_var_asgn_node",(function(node){return this.$on_vasgn(node)}),1),$alias(self,"on_lvasgn","process_var_asgn_node"),$alias(self,"on_ivasgn","process_var_asgn_node"),$alias(self,"on_gvasgn","process_var_asgn_node"),$alias(self,"on_cvasgn","process_var_asgn_node"),$alias(self,"on_and_asgn","process_regular_node"),$alias(self,"on_or_asgn","process_regular_node"),$def(self,"$on_op_asgn",(function(node){var $a,var_node,method_name,value_node;return var_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],value_node=null==$a[2]?nil:$a[2],node.$updated(nil,[this.$process(var_node),method_name,this.$process(value_node)])}),1),$alias(self,"on_mlhs","process_regular_node"),$alias(self,"on_masgn","process_regular_node"),$def(self,"$on_const",(function(node){var $a,scope_node,name;return scope_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],node.$updated(nil,[this.$process(scope_node),name])}),1),$def(self,"$on_casgn",(function(node){var $a,scope_node,name,value_node=nil;return scope_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],value_node=null==$a[2]?nil:$a[2],$not(value_node["$nil?"]())?node.$updated(nil,[this.$process(scope_node),name,this.$process(value_node)]):node.$updated(nil,[this.$process(scope_node),name])}),1),$alias(self,"on_args","process_regular_node"),$def(self,"$on_argument",(function(node){var $a,arg_name,value_node=nil;return arg_name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value_node=null==$a[1]?nil:$a[1],$not(value_node["$nil?"]())?node.$updated(nil,[arg_name,this.$process(value_node)]):node}),1),$def(self,"$process_argument_node",(function(node){return this.$on_argument(node)}),1),$alias(self,"on_arg","process_argument_node"),$alias(self,"on_optarg","process_argument_node"),$alias(self,"on_restarg","process_argument_node"),$alias(self,"on_blockarg","process_argument_node"),$alias(self,"on_shadowarg","process_argument_node"),$alias(self,"on_kwarg","process_argument_node"),$alias(self,"on_kwoptarg","process_argument_node"),$alias(self,"on_kwrestarg","process_argument_node"),$alias(self,"on_forward_arg","process_argument_node"),$def(self,"$on_procarg0",(function(node){return $truthy(node.$children()["$[]"](0)["$is_a?"]($$("Symbol")))?this.$on_argument(node):this.$process_regular_node(node)}),1),$alias(self,"on_arg_expr","process_regular_node"),$alias(self,"on_restarg_expr","process_regular_node"),$alias(self,"on_blockarg_expr","process_regular_node"),$alias(self,"on_block_pass","process_regular_node"),$alias(self,"on_module","process_regular_node"),$alias(self,"on_class","process_regular_node"),$alias(self,"on_sclass","process_regular_node"),$def(self,"$on_def",(function(node){var $a,name,args_node,body_node;return name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args_node=null==$a[1]?nil:$a[1],body_node=null==$a[2]?nil:$a[2],node.$updated(nil,[name,this.$process(args_node),this.$process(body_node)])}),1),$def(self,"$on_defs",(function(node){var $a,definee_node,name,args_node,body_node;return definee_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],args_node=null==$a[2]?nil:$a[2],body_node=null==$a[3]?nil:$a[3],node.$updated(nil,[this.$process(definee_node),name,this.$process(args_node),this.$process(body_node)])}),1),$alias(self,"on_undef","process_regular_node"),$alias(self,"on_alias","process_regular_node"),$def(self,"$on_send",(function(node){var $a,arg_nodes,receiver_node=nil,method_name=nil;return receiver_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],arg_nodes=$slice.call($a,2),$truthy(receiver_node)&&(receiver_node=this.$process(receiver_node)),node.$updated(nil,[receiver_node,method_name].concat($to_a(this.$process_all(arg_nodes))))}),1),$alias(self,"on_csend","on_send"),$alias(self,"on_index","process_regular_node"),$alias(self,"on_indexasgn","process_regular_node"),$alias(self,"on_block","process_regular_node"),$alias(self,"on_lambda","process_regular_node"),$def(self,"$on_numblock",(function(node){var $a,method_call,max_numparam,body;return method_call=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],max_numparam=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],node.$updated(nil,[this.$process(method_call),max_numparam,this.$process(body)])}),1),$alias(self,"on_while","process_regular_node"),$alias(self,"on_while_post","process_regular_node"),$alias(self,"on_until","process_regular_node"),$alias(self,"on_until_post","process_regular_node"),$alias(self,"on_for","process_regular_node"),$alias(self,"on_return","process_regular_node"),$alias(self,"on_break","process_regular_node"),$alias(self,"on_next","process_regular_node"),$alias(self,"on_redo","process_regular_node"),$alias(self,"on_retry","process_regular_node"),$alias(self,"on_super","process_regular_node"),$alias(self,"on_yield","process_regular_node"),$alias(self,"on_defined?","process_regular_node"),$alias(self,"on_not","process_regular_node"),$alias(self,"on_and","process_regular_node"),$alias(self,"on_or","process_regular_node"),$alias(self,"on_if","process_regular_node"),$alias(self,"on_when","process_regular_node"),$alias(self,"on_case","process_regular_node"),$alias(self,"on_iflipflop","process_regular_node"),$alias(self,"on_eflipflop","process_regular_node"),$alias(self,"on_match_current_line","process_regular_node"),$alias(self,"on_match_with_lvasgn","process_regular_node"),$alias(self,"on_resbody","process_regular_node"),$alias(self,"on_rescue","process_regular_node"),$alias(self,"on_ensure","process_regular_node"),$alias(self,"on_begin","process_regular_node"),$alias(self,"on_kwbegin","process_regular_node"),$alias(self,"on_preexe","process_regular_node"),$alias(self,"on_postexe","process_regular_node"),$alias(self,"on_case_match","process_regular_node"),$alias(self,"on_in_match","process_regular_node"),$alias(self,"on_match_pattern","process_regular_node"),$alias(self,"on_match_pattern_p","process_regular_node"),$alias(self,"on_in_pattern","process_regular_node"),$alias(self,"on_if_guard","process_regular_node"),$alias(self,"on_unless_guard","process_regular_node"),$alias(self,"on_match_var","process_variable_node"),$alias(self,"on_match_rest","process_regular_node"),$alias(self,"on_pin","process_regular_node"),$alias(self,"on_match_alt","process_regular_node"),$alias(self,"on_match_as","process_regular_node"),$alias(self,"on_array_pattern","process_regular_node"),$alias(self,"on_array_pattern_with_tail","process_regular_node"),$alias(self,"on_hash_pattern","process_regular_node"),$alias(self,"on_const_pattern","process_regular_node"),$alias(self,"on_find_pattern","process_regular_node"),$def(self,"$process_variable_node",(function(node){return this.$warn("Parser::AST::Processor#process_variable_node is deprecated as a public API and will be removed. Please use Parser::AST::Processor#on_var instead."),this.$on_var(node)}),1),$def(self,"$process_var_asgn_node",(function(node){return this.$warn("Parser::AST::Processor#process_var_asgn_node is deprecated as a public API and will be removed. Please use Parser::AST::Processor#on_vasgn instead."),this.$on_vasgn(node)}),1),$def(self,"$process_argument_node",(function(node){return this.$warn("Parser::AST::Processor#process_argument_node is deprecated as a public API and will be removed. Please use Parser::AST::Processor#on_argument instead."),this.$on_argument(node)}),1),$def(self,"$on_empty_else",(function(node){return node}),1)}($nesting[0],$$$($$$("AST"),"Processor"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/meta"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set;return Opal.add_stubs("freeze,to_set"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Meta")].concat($parent_nesting);return $const_set($nesting[0],"NODE_TYPES",["true","false","nil","int","float","str","dstr","sym","dsym","xstr","regopt","regexp","array","splat","pair","kwsplat","hash","irange","erange","self","lvar","ivar","cvar","gvar","const","defined?","lvasgn","ivasgn","cvasgn","gvasgn","casgn","mlhs","masgn","op_asgn","and_asgn","ensure","rescue","arg_expr","or_asgn","back_ref","nth_ref","match_with_lvasgn","match_current_line","module","class","sclass","def","defs","undef","alias","args","cbase","arg","optarg","restarg","blockarg","block_pass","kwarg","kwoptarg","kwrestarg","kwnilarg","send","csend","super","zsuper","yield","block","and","not","or","if","when","case","while","until","while_post","until_post","for","break","next","redo","return","resbody","kwbegin","begin","retry","preexe","postexe","iflipflop","eflipflop","shadowarg","complex","rational","__FILE__","__LINE__","__ENCODING__","ident","lambda","indexasgn","index","procarg0","restarg_expr","blockarg_expr","objc_kwarg","objc_restarg","objc_varargs","numargs","numblock","forward_args","forwarded_args","forward_arg","case_match","in_match","in_pattern","match_var","pin","match_alt","match_as","match_rest","array_pattern","match_with_trailing_comma","array_pattern_with_tail","hash_pattern","const_pattern","if_guard","unless_guard","match_nil_pattern","empty_else","find_pattern","kwargs","match_pattern_p","match_pattern"].$to_set().$freeze())}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/buffer"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$enc=Opal.enc,$truthy=Opal.truthy,$gvars=Opal.gvars,$eqeq=Opal.eqeq,$neqeq=Opal.neqeq,$defs=Opal.defs,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$not=Opal.not,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$rb_lt=Opal.rb_lt,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("attr_reader,empty?,=~,start_with?,freeze,==,[],!=,nil?,match,find,encoding,recognize_encoding,force_encoding,encode,to_s,source=,-,open,read,raise,frozen?,dup,reencode_string,class,valid_encoding?,name,raw_source=,gsub,!,ascii_only?,line_index_for_position,line_begins,+,to_a,lines,end_with?,<<,each,chomp!,fetch,source_lines,>=,size,<,new,source,source_range,private,index,bsearch,[]=,method_defined?,bsearch_index"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Buffer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.name=$proto.source=$proto.slice_source=$proto.first_line=$proto.lines=$proto.source_range=$proto.line_begins=$proto.line_index_for_position=$proto.line_range=nil,self.$attr_reader("name","first_line"),$const_set($nesting[0],"ENCODING_RE",$regexp([$enc("[\\s#](en)?coding\\s*[:=]\\s*","ASCII-8BIT"),$enc("(","ASCII-8BIT"),$enc("","ASCII-8BIT"),$enc("(utf8-mac)","ASCII-8BIT"),$enc("|","ASCII-8BIT"),$enc("","ASCII-8BIT"),$enc("([A-Za-z0-9_-]+?)(-unix|-dos|-mac)","ASCII-8BIT"),$enc("|","ASCII-8BIT"),$enc("([A-Za-z0-9_-]+)","ASCII-8BIT"),$enc(")","ASCII-8BIT"),$enc("","ASCII-8BIT")])),$defs(self,"$recognize_encoding",(function(string){var $a,$b,second_line,first_line=nil,encoding_line=nil,result=nil,$ret_or_1=nil,$ret_or_2=nil;return $truthy(string["$empty?"]())?nil:(string["$=~"](/^(.*)\n?(.*\n)?/),second_line=($a=[($b=$gvars["~"])===nil?nil:$b["$[]"](1),($b=$gvars["~"])===nil?nil:$b["$[]"](2)])[1],$truthy((first_line=$a[0])["$start_with?"]($enc("","ASCII-8BIT").$freeze()))?$$$($$("Encoding"),"UTF_8"):(encoding_line=$eqeq(first_line["$[]"](0,2),$enc("#!","ASCII-8BIT").$freeze())?second_line:first_line,$truthy(encoding_line["$nil?"]())||$neqeq(encoding_line["$[]"](0),$enc("#","ASCII-8BIT"))?nil:$truthy(result=$$("ENCODING_RE").$match(encoding_line))?$$("Encoding").$find($truthy($ret_or_1=$truthy($ret_or_2=result["$[]"](3))?$ret_or_2:result["$[]"](4))?$ret_or_1:result["$[]"](6)):nil))}),1),$defs(self,"$reencode_string",(function(input){var original_encoding,detected_encoding=nil;return original_encoding=input.$encoding(),detected_encoding=this.$recognize_encoding(input.$force_encoding($$$($$("Encoding"),"BINARY"))),$truthy(detected_encoding["$nil?"]())?input.$force_encoding(original_encoding):$eqeq(detected_encoding,$$$($$("Encoding"),"BINARY"))?input:input.$force_encoding(detected_encoding).$encode($$$($$("Encoding"),"UTF_8"))}),1),$def(self,"$initialize",(function(name,$a,$b){var $post_args,$kwargs,first_line,source,self=this,$writer=nil;if($post_args=Opal.slice.call(arguments,1),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return $post_args.length>0&&(first_line=$post_args.shift()),null==first_line&&(first_line=1),null==(source=$kwargs.$$smap.source)&&(source=nil),self.name=name.$to_s(),self.source=nil,self.first_line=first_line,self.lines=nil,self.line_begins=nil,self.slice_source=nil,self.line_index_for_position=$hash2([],{}),$truthy(source)?($send(self,"source=",$to_a($writer=[source])),$writer[$rb_minus($writer.length,1)]):nil}),-2),$def(self,"$read",(function(){return $send($$("File"),"open",[this.name,$enc("rb","ASCII-8BIT")],(function $$1(io){var $writer,self=null==$$1.$$s?this:$$1.$$s;return null==io&&(io=nil),$writer=[io.$read()],$send(self,"source=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),this}),0),$def(self,"$source",(function(){return $truthy(this.source["$nil?"]())&&this.$raise($$("RuntimeError"),$enc("Cannot extract source from uninitialized Source::Buffer","ASCII-8BIT")),this.source}),0),$def(self,"$source=",(function(input){var $writer;return $truthy(input["$frozen?"]())&&(input=input.$dup()),input=this.$class().$reencode_string(input),$truthy(input["$valid_encoding?"]())||this.$raise($$("EncodingError"),$enc("invalid byte sequence in ","ASCII-8BIT")+input.$encoding().$name()),$send(this,"raw_source=",$to_a($writer=[input])),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$raw_source=",(function(input){return $truthy(this.source)&&this.$raise($$("ArgumentError"),$enc("Source::Buffer is immutable","ASCII-8BIT")),this.source=input.$gsub($enc("\r\n","ASCII-8BIT").$freeze(),$enc("\n","ASCII-8BIT").$freeze()).$freeze(),$not(this.source["$ascii_only?"]())&&$neqeq(this.source.$encoding(),$$$($$("Encoding"),"UTF_32LE"))&&$neqeq(this.source.$encoding(),$$$($$("Encoding"),"BINARY"))?this.slice_source=this.source.$encode($$$($$("Encoding"),"UTF_32LE")):nil}),1),$def(self,"$slice",(function(range){return $truthy(this.slice_source["$nil?"]())?this.source["$[]"](range):this.slice_source["$[]"](range).$encode(this.source.$encoding())}),1),$def(self,"$decompose_position",(function(position){var line_index,line_begin;return line_index=this.$line_index_for_position(position),line_begin=this.$line_begins()["$[]"](line_index),[$rb_plus(this.first_line,line_index),$rb_minus(position,line_begin)]}),1),$def(self,"$line_for_position",(function(position){return $rb_plus(this.$line_index_for_position(position),this.first_line)}),1),$def(self,"$column_for_position",(function(position){var line_index;return line_index=this.$line_index_for_position(position),$rb_minus(position,this.$line_begins()["$[]"](line_index))}),1),$def(self,"$source_lines",(function(){var $ret_or_1,lines=nil;return this.lines=$truthy($ret_or_1=this.lines)?$ret_or_1:(lines=this.source.$lines().$to_a(),$truthy(this.source["$end_with?"]($enc("\n","ASCII-8BIT").$freeze()))&&lines["$<<"]($enc("","ASCII-8BIT").$dup()),$send(lines,"each",[],(function(line){return null==line&&(line=nil),line["$chomp!"]($enc("\n","ASCII-8BIT").$freeze()),line.$freeze()}),1),lines.$freeze())}),0),$def(self,"$source_line",(function(lineno){return this.$source_lines().$fetch($rb_minus(lineno,this.first_line)).$dup()}),1),$def(self,"$line_range",(function(lineno){var index;return index=$rb_minus(lineno,this.first_line),$truthy($rb_lt(index,0))||$truthy($rb_ge($rb_plus(index,1),this.$line_begins().$size()))?this.$raise($$("IndexError"),$enc("Parser::Source::Buffer: range for line ","ASCII-8BIT")+""+lineno+$enc(" requested, valid line numbers are ","ASCII-8BIT")+this.first_line+$enc("..","ASCII-8BIT")+$rb_minus($rb_plus(this.first_line,this.$line_begins().$size()),2)):$$("Range").$new(this,this.$line_begins()["$[]"](index),$rb_minus(this.$line_begins()["$[]"]($rb_plus(index,1)),1))}),1),$def(self,"$source_range",(function(){var $ret_or_1;return this.source_range=$truthy($ret_or_1=this.source_range)?$ret_or_1:$$("Range").$new(this,0,this.$source().$size())}),0),$def(self,"$last_line",(function(){return $rb_minus($rb_plus(this.$line_begins().$size(),this.first_line),2)}),0),$def(self,"$freeze",(function $$freeze(){var $yield=$$freeze.$$p||nil;return delete $$freeze.$$p,this.$source_lines(),this.$line_begins(),this.$source_range(),$send2(this,$find_super(this,"freeze",$$freeze,!1,!0),"freeze",[],$yield)}),0),$def(self,"$inspect",(function(){return $enc("#<","ASCII-8BIT")+this.$class()+$enc(" ","ASCII-8BIT")+this.$name()+$enc(">","ASCII-8BIT")}),0),self.$private(),$def(self,"$line_begins",(function(){var $ret_or_1,self=this,begins=nil,index=nil;return self.line_begins=$truthy($ret_or_1=self.line_begins)?$ret_or_1:(begins=[0],index=0,function(){for(;$truthy(index=self.source.$index($enc("\n","ASCII-8BIT").$freeze(),index));)index=$rb_plus(index,1),begins["$<<"](index)}(),begins["$<<"]($rb_plus(self.source.$size(),1)),begins)}),0),$def(self,"$line_index_for_position",(function(position){var $ret_or_1,index=nil,$writer=nil;return $truthy($ret_or_1=this.line_index_for_position["$[]"](position))?$ret_or_1:(index=$rb_minus(this.$bsearch(this.$line_begins(),position),1),$truthy(this.line_index_for_position["$frozen?"]())||($writer=[position,index],$send(this.line_index_for_position,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),index)}),1),$truthy($$("Array")["$method_defined?"]("bsearch_index"))?$def(self,"$bsearch",(function(line_begins,position){var $ret_or_1;return $truthy($ret_or_1=$send(line_begins,"bsearch_index",[],(function(line_begin){return null==line_begin&&(line_begin=nil),$rb_lt(position,line_begin)}),1))?$ret_or_1:$rb_minus(line_begins.$size(),1)}),2):$def(self,"$bsearch",(function(line_begins,position){var $ret_or_1=nil;return this.line_range=$truthy($ret_or_1=this.line_range)?$ret_or_1:Opal.Range.$new(0,line_begins.$size(),!0),$truthy($ret_or_1=$send(this.line_range,"bsearch",[],(function(i){return null==i&&(i=nil),$rb_lt(position,line_begins["$[]"](i))}),1))?$ret_or_1:$rb_minus(line_begins.$size(),1)}),2)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/range"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$rb_lt=Opal.rb_lt,$def=Opal.def,$hash2=Opal.hash2,$rb_minus=Opal.rb_minus,$alias=Opal.alias,$neqeq=Opal.neqeq,$to_ary=Opal.to_ary,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$rb_times=Opal.rb_times,$eqeq=Opal.eqeq;return Opal.add_stubs("include,attr_reader,<,raise,nil?,freeze,with,-,line_for_position,alias_method,column_for_position,!=,line,last_line,inspect,column,last_column,source_line,slice,begin_pos,end_pos,include?,source,to_a,decompose_position,join,name,+,new,min,max,disjoint?,empty?,>=,!,<=>,contains?,overlaps?,==,*,source_buffer,is_a?,nonzero?,hash"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Range"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.begin_pos=$proto.end_pos=$proto.source_buffer=nil,self.$include($$("Comparable")),self.$attr_reader("source_buffer"),self.$attr_reader("begin_pos","end_pos"),$def(self,"$initialize",(function(source_buffer,begin_pos,end_pos){var $a;return $truthy($rb_lt(end_pos,begin_pos))&&this.$raise($$("ArgumentError"),"Parser::Source::Range: end_pos must not be less than begin_pos"),$truthy(source_buffer["$nil?"]())&&this.$raise($$("ArgumentError"),"Parser::Source::Range: source_buffer must not be nil"),this.source_buffer=source_buffer,$a=[begin_pos,end_pos],this.begin_pos=$a[0],this.end_pos=$a[1],this.$freeze()}),3),$def(self,"$begin",(function(){return this.$with($hash2(["end_pos"],{end_pos:this.begin_pos}))}),0),$def(self,"$end",(function(){return this.$with($hash2(["begin_pos"],{begin_pos:this.end_pos}))}),0),$def(self,"$size",(function(){return $rb_minus(this.end_pos,this.begin_pos)}),0),$alias(self,"length","size"),$def(self,"$line",(function(){return this.source_buffer.$line_for_position(this.begin_pos)}),0),self.$alias_method("first_line","line"),$def(self,"$column",(function(){return this.source_buffer.$column_for_position(this.begin_pos)}),0),$def(self,"$last_line",(function(){return this.source_buffer.$line_for_position(this.end_pos)}),0),$def(self,"$last_column",(function(){return this.source_buffer.$column_for_position(this.end_pos)}),0),$def(self,"$column_range",(function(){return $neqeq(this.$line(),this.$last_line())&&this.$raise($$("RangeError"),this.$inspect()+" spans more than one line"),Opal.Range.$new(this.$column(),this.$last_column(),!0)}),0),$def(self,"$source_line",(function(){return this.source_buffer.$source_line(this.$line())}),0),$def(self,"$source",(function(){return this.source_buffer.$slice(Opal.Range.$new(this.$begin_pos(),this.$end_pos(),!0))}),0),$def(self,"$is?",(function($a){var self=this;return Opal.slice.call(arguments)["$include?"](self.$source())}),-1),$def(self,"$to_a",(function(){return Opal.Range.$new(this.begin_pos,this.end_pos,!0).$to_a()}),0),$def(self,"$to_range",(function(){return Opal.Range.$new(this.$begin_pos(),this.$end_pos(),!0)}),0),$def(self,"$to_s",(function(){var $a,$b,column,line=nil;return $b=this.source_buffer.$decompose_position(this.begin_pos),line=null==($a=$to_ary($b))[0]?nil:$a[0],column=null==$a[1]?nil:$a[1],[this.source_buffer.$name(),line,$rb_plus(column,1)].$join(":")}),0),$def(self,"$with",(function($kwargs){var begin_pos,end_pos;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(begin_pos=$kwargs.$$smap.begin_pos)&&(begin_pos=this.begin_pos),null==(end_pos=$kwargs.$$smap.end_pos)&&(end_pos=this.end_pos),$$("Range").$new(this.source_buffer,begin_pos,end_pos)}),-1),$def(self,"$adjust",(function($kwargs){var begin_pos,end_pos;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(begin_pos=$kwargs.$$smap.begin_pos)&&(begin_pos=0),null==(end_pos=$kwargs.$$smap.end_pos)&&(end_pos=0),$$("Range").$new(this.source_buffer,$rb_plus(this.begin_pos,begin_pos),$rb_plus(this.end_pos,end_pos))}),-1),$def(self,"$resize",(function(new_size){return this.$with($hash2(["end_pos"],{end_pos:$rb_plus(this.begin_pos,new_size)}))}),1),$def(self,"$join",(function(other){return $$("Range").$new(this.source_buffer,[this.begin_pos,other.$begin_pos()].$min(),[this.end_pos,other.$end_pos()].$max())}),1),$def(self,"$intersect",(function(other){return $truthy(this["$disjoint?"](other))?nil:$$("Range").$new(this.source_buffer,[this.begin_pos,other.$begin_pos()].$max(),[this.end_pos,other.$end_pos()].$min())}),1),$def(self,"$disjoint?",(function(other){var $ret_or_1=nil;return $truthy(this["$empty?"]())&&$truthy(other["$empty?"]())?this.begin_pos["$!="](other.$begin_pos()):$truthy($ret_or_1=$rb_ge(this.begin_pos,other.$end_pos()))?$ret_or_1:$rb_ge(other.$begin_pos(),this.end_pos)}),1),$def(self,"$overlaps?",(function(other){return this["$disjoint?"](other)["$!"]()}),1),$def(self,"$contains?",(function(other){return $rb_ge($rb_plus(other.$begin_pos()["$<=>"](this.begin_pos),this.end_pos["$<=>"](other.$end_pos())),$truthy(other["$empty?"]())?2:1)}),1),$def(self,"$contained?",(function(other){return other["$contains?"](this)}),1),$def(self,"$crossing?",(function(other){return!!$truthy(this["$overlaps?"](other))&&$rb_times(this.begin_pos["$<=>"](other.$begin_pos()),this.end_pos["$<=>"](other.$end_pos()))["$=="](1)}),1),$def(self,"$empty?",(function(){return this.begin_pos["$=="](this.end_pos)}),0),$def(self,"$<=>",(function(other){var $ret_or_1;return $truthy(other["$is_a?"]($$$($$$($$$("Parser"),"Source"),"Range")))&&$eqeq(this.source_buffer,other.$source_buffer())?$truthy($ret_or_1=this.begin_pos["$<=>"](other.$begin_pos())["$nonzero?"]())?$ret_or_1:this.end_pos["$<=>"](other.$end_pos()):nil}),1),self.$alias_method("eql?","=="),$def(self,"$hash",(function(){return[this.source_buffer,this.begin_pos,this.end_pos].$hash()}),0),$def(self,"$inspect",(function(){return"#"}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/comment"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$defs=Opal.defs,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("attr_reader,alias_method,new,associate,associate_locations,associate_by_identity,freeze,source,start_with?,text,==,type,is_a?,location,to_s,expression,inspect"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Comment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.location=nil,self.$attr_reader("text"),self.$attr_reader("location"),self.$alias_method("loc","location"),$defs(self,"$associate",(function(ast,comments){return $$("Associator").$new(ast,comments).$associate()}),2),$defs(self,"$associate_locations",(function(ast,comments){return $$("Associator").$new(ast,comments).$associate_locations()}),2),$defs(self,"$associate_by_identity",(function(ast,comments){return $$("Associator").$new(ast,comments).$associate_by_identity()}),2),$def(self,"$initialize",(function(range){return this.location=$$$($$$($$("Parser"),"Source"),"Map").$new(range),this.text=range.$source().$freeze(),this.$freeze()}),1),$def(self,"$type",(function(){return $truthy(this.$text()["$start_with?"]("#".$freeze()))?"inline":$truthy(this.$text()["$start_with?"]("=begin".$freeze()))?"document":nil}),0),$def(self,"$inline?",(function(){return this.$type()["$=="]("inline")}),0),$def(self,"$document?",(function(){return this.$type()["$=="]("document")}),0),$def(self,"$==",(function(other){var $ret_or_1;return $truthy($ret_or_1=other["$is_a?"]($$$($$("Source"),"Comment")))?this.location["$=="](other.$location()):$ret_or_1}),1),$def(self,"$inspect",(function(){return"#"}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/comment/associator"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$rb_le=Opal.rb_le,$rb_plus=Opal.rb_plus,$not=Opal.not;return Opal.add_stubs("attr_accessor,do_associate,private,freeze,[],include?,type,sort_by,compact,children,begin_pos,expression,loc,select,is_a?,new,[]=,-,==,compare_by_identity,advance_comment,advance_through_directives,visit,process_leading_comments,location,<=,line,last_line,each,children_in_source_order,process_trailing_comments,current_comment_before?,associate_and_advance_comment,current_comment_before_end?,current_comment_decorates?,+,!,end_pos,<<,start_with?,text,=~"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Associator"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.map_using=$proto.mapping=$proto.skip_directives=$proto.ast=$proto.current_comment=$proto.comment_num=$proto.comments=nil,self.$attr_accessor("skip_directives"),$def(self,"$initialize",(function(ast,comments){return this.ast=ast,this.comments=comments,this.skip_directives=!0}),2),$def(self,"$associate",(function(){return this.map_using="eql",this.$do_associate()}),0),$def(self,"$associate_locations",(function(){return this.map_using="location",this.$do_associate()}),0),$def(self,"$associate_by_identity",(function(){return this.map_using="identity",this.$do_associate()}),0),self.$private(),$const_set($nesting[0],"POSTFIX_TYPES",$$("Set")["$[]"]("if","while","while_post","until","until_post","masgn").$freeze()),$def(self,"$children_in_source_order",(function(node){return $truthy($$("POSTFIX_TYPES")["$include?"](node.$type()))?$send(node.$children().$compact(),"sort_by",[],(function(child){return null==child&&(child=nil),child.$loc().$expression().$begin_pos()}),1):$send(node.$children(),"select",[],(function(child){var $ret_or_1,$ret_or_2;return null==child&&(child=nil),$truthy($ret_or_1=$truthy($ret_or_2=child["$is_a?"]($$$($$("AST"),"Node")))?child.$loc():$ret_or_2)?child.$loc().$expression():$ret_or_1}),1)}),1),$def(self,"$do_associate",(function(){return this.mapping=$send($$("Hash"),"new",[],(function(h,k){var $writer;return null==h&&(h=nil),null==k&&(k=nil),$send(h,"[]=",$to_a($writer=[k,[]])),$writer[$rb_minus($writer.length,1)]}),2),$eqeq(this.map_using,"identity")&&this.mapping.$compare_by_identity(),this.comment_num=-1,this.$advance_comment(),$truthy(this.skip_directives)&&this.$advance_through_directives(),$truthy(this.ast)&&this.$visit(this.ast),this.mapping}),0),$def(self,"$visit",(function(node){var node_loc=nil;return this.$process_leading_comments(node),$truthy(this.current_comment)?(node_loc=node.$location(),$truthy($rb_le(this.current_comment.$location().$line(),node_loc.$last_line()))||$truthy(node_loc["$is_a?"]($$$($$("Map"),"Heredoc")))?($send(this.$children_in_source_order(node),"each",[],(function $$4(child){return null==child&&(child=nil),(null==$$4.$$s?this:$$4.$$s).$visit(child)}),{$$arity:1,$$s:this}),this.$process_trailing_comments(node)):nil):nil}),1),$def(self,"$process_leading_comments",(function(node){if($eqeq(node.$type(),"begin"))return nil;for(;$truthy(this["$current_comment_before?"](node));)this.$associate_and_advance_comment(node)}),1),$def(self,"$process_trailing_comments",(function(node){for(;$truthy(this["$current_comment_before_end?"](node));)this.$associate_and_advance_comment(node);for(;$truthy(this["$current_comment_decorates?"](node));)this.$associate_and_advance_comment(node)}),1),$def(self,"$advance_comment",(function(){return this.comment_num=$rb_plus(this.comment_num,1),this.current_comment=this.comments["$[]"](this.comment_num)}),0),$def(self,"$current_comment_before?",(function(node){var comment_loc=nil,node_loc=nil;return!$not(this.current_comment)&&(comment_loc=this.current_comment.$location().$expression(),node_loc=node.$location().$expression(),$rb_le(comment_loc.$end_pos(),node_loc.$begin_pos()))}),1),$def(self,"$current_comment_before_end?",(function(node){var comment_loc=nil,node_loc=nil;return!$not(this.current_comment)&&(comment_loc=this.current_comment.$location().$expression(),node_loc=node.$location().$expression(),$rb_le(comment_loc.$end_pos(),node_loc.$end_pos()))}),1),$def(self,"$current_comment_decorates?",(function(node){return!$not(this.current_comment)&&this.current_comment.$location().$line()["$=="](node.$location().$last_line())}),1),$def(self,"$associate_and_advance_comment",(function(node){var key;return key=$eqeq(this.map_using,"location")?node.$location():node,this.mapping["$[]"](key)["$<<"](this.current_comment),this.$advance_comment()}),1),$const_set($nesting[0],"MAGIC_COMMENT_RE",/^#\s*(-\*-|)\s*(frozen_string_literal|warn_indent|warn_past_scope):.*\1$/),$def(self,"$advance_through_directives",(function(){return $truthy(this.current_comment)&&$truthy(this.current_comment.$text()["$start_with?"]("#!".$freeze()))&&this.$advance_comment(),$truthy(this.current_comment)&&$truthy(this.current_comment.$text()["$=~"]($$("MAGIC_COMMENT_RE")))&&this.$advance_comment(),$truthy(this.current_comment)&&$truthy(this.current_comment.$text()["$=~"]($$$($$("Buffer"),"ENCODING_RE")))?this.$advance_comment():nil}),0)}(Opal.$r($nesting)("Comment"),0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$gvars=Opal.gvars,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$rb_plus=Opal.rb_plus,$truthy=Opal.truthy,$not=Opal.not,$neqeq=Opal.neqeq,$rb_le=Opal.rb_le,$rb_ge=Opal.rb_ge,$rb_lt=Opal.rb_lt,$hash2=Opal.hash2,$const_set=Opal.const_set;return Opal.add_stubs("attr_reader,warn_of_deprecation,class,new,lambda,puts,render,consumer=,-,append,freeze,begin,end,+,in_transaction?,raise,dup,source,each,sort,begin_pos,range,length,replacement,[]=,private,empty?,clobbered_insertion?,!,allow_multiple_insertions?,raise_clobber_error,record_insertion,adjacent_updates?,find,overlaps?,replace_compatible_with_insertion?,merge_actions!,<<,active_queue,adjacent_insertions?,merge_actions,delete,can_merge?,record_replace,|,active_insertions,active_insertions=,active_clobber,clobbered_position_mask,active_clobber=,size,!=,&,<=,end_pos,adjacent_insertion_mask,select,adjacent?,adjacent_position_mask,>=,==,[],all?,intersect,nil?,max,sort_by,push,join,first,max_by,merge_replacements,replace_actions,disjoint?,<,process,extend"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Rewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.diagnostics=$proto.insert_before_multi_order=$proto.insert_after_multi_order=$proto.source_buffer=$proto.queue=$proto.clobber=$proto.insertions=$proto.pending_queue=$proto.pending_clobber=$proto.pending_insertions=nil,self.$attr_reader("source_buffer"),self.$attr_reader("diagnostics"),$def(self,"$initialize",(function(source_buffer){var $writer;return this.$class().$warn_of_deprecation(),this.diagnostics=$$$($$("Diagnostic"),"Engine").$new(),$writer=[$send(this,"lambda",[],(function(diag){return null==$gvars.stderr&&($gvars.stderr=nil),null==diag&&(diag=nil),$gvars.stderr.$puts(diag.$render())}),1)],$send(this.diagnostics,"consumer=",$to_a($writer)),$rb_minus($writer.length,1),this.source_buffer=source_buffer,this.queue=[],this.clobber=0,this.insertions=0,this.insert_before_multi_order=0,this.insert_after_multi_order=0,this.pending_queue=nil,this.pending_clobber=nil,this.pending_insertions=nil}),1),$def(self,"$remove",(function(range){return this.$append($$$($$("Rewriter"),"Action").$new(range,"".$freeze()))}),1),$def(self,"$insert_before",(function(range,content){return this.$append($$$($$("Rewriter"),"Action").$new(range.$begin(),content))}),2),$def(self,"$wrap",(function(range,before,after){return this.$append($$$($$("Rewriter"),"Action").$new(range.$begin(),before)),this.$append($$$($$("Rewriter"),"Action").$new(range.$end(),after))}),3),$def(self,"$insert_before_multi",(function(range,content){return this.insert_before_multi_order=$rb_minus(this.insert_before_multi_order,1),this.$append($$$($$("Rewriter"),"Action").$new(range.$begin(),content,!0,this.insert_before_multi_order))}),2),$def(self,"$insert_after",(function(range,content){return this.$append($$$($$("Rewriter"),"Action").$new(range.$end(),content))}),2),$def(self,"$insert_after_multi",(function(range,content){return this.insert_after_multi_order=$rb_plus(this.insert_after_multi_order,1),this.$append($$$($$("Rewriter"),"Action").$new(range.$end(),content,!0,this.insert_after_multi_order))}),2),$def(self,"$replace",(function(range,content){return this.$append($$$($$("Rewriter"),"Action").$new(range,content))}),2),$def(self,"$process",(function(){var source,adjustment=nil;return $truthy(this["$in_transaction?"]())&&this.$raise("Do not call "+this.$class()+"#process inside a transaction"),adjustment=0,source=this.source_buffer.$source().$dup(),$send(this.queue.$sort(),"each",[],(function(action){var begin_pos,end_pos,$writer;return null==action&&(action=nil),begin_pos=$rb_plus(action.$range().$begin_pos(),adjustment),end_pos=$rb_plus(begin_pos,action.$range().$length()),$writer=[Opal.Range.$new(begin_pos,end_pos,!0),action.$replacement()],$send(source,"[]=",$to_a($writer)),$rb_minus($writer.length,1),adjustment=$rb_plus(adjustment,$rb_minus(action.$replacement().$length(),action.$range().$length()))}),1),source}),0),$def(self,"$transaction",(function $$transaction(){var $yield=$$transaction.$$p||nil,self=this;return delete $$transaction.$$p,function(){try{return $yield===nil&&self.$raise(self.$class()+"#transaction requires block"),$truthy(self["$in_transaction?"]())&&self.$raise("Nested transaction is not supported"),self.pending_queue=self.queue.$dup(),self.pending_clobber=self.clobber,self.pending_insertions=self.insertions,Opal.yieldX($yield,[]),self.queue=self.pending_queue,self.clobber=self.pending_clobber,self.insertions=self.pending_insertions,self}finally{self.pending_queue=nil,self.pending_clobber=nil,self.pending_insertions=nil}}()}),0),self.$private(),$def(self,"$append",(function(action){var range=nil,conflicting=nil,adjacent=nil,insertions=nil;if(range=action.$range(),$truthy(range["$empty?"]())){if($truthy(action.$replacement()["$empty?"]()))return this;$not(action["$allow_multiple_insertions?"]())&&$truthy(conflicting=this["$clobbered_insertion?"](range))&&this.$raise_clobber_error(action,[conflicting]),this.$record_insertion(range),$truthy(adjacent=this["$adjacent_updates?"](range))?(conflicting=$send(adjacent,"find",[],(function $$3(a){var $ret_or_1,self=null==$$3.$$s?this:$$3.$$s;return null==a&&(a=nil),$truthy($ret_or_1=a.$range()["$overlaps?"](range))?self["$replace_compatible_with_insertion?"](a,action)["$!"]():$ret_or_1}),{$$arity:1,$$s:this}),$truthy(conflicting)&&this.$raise_clobber_error(action,[conflicting]),this["$merge_actions!"](action,adjacent)):this.$active_queue()["$<<"](action)}else $truthy(insertions=this["$adjacent_insertions?"](range))&&$send(insertions,"each",[],(function $$4(insertion){var self=null==$$4.$$s?this:$$4.$$s;return null==insertion&&(insertion=nil),$truthy(range["$overlaps?"](insertion.$range()))&&$not(self["$replace_compatible_with_insertion?"](action,insertion))?self.$raise_clobber_error(action,[insertion]):(action=self.$merge_actions(action,[insertion]),self.$active_queue().$delete(insertion))}),{$$arity:1,$$s:this}),$truthy(adjacent=this["$adjacent_updates?"](range))?$truthy(this["$can_merge?"](action,adjacent))?(this.$record_replace(range),this["$merge_actions!"](action,adjacent)):this.$raise_clobber_error(action,adjacent):(this.$record_replace(range),this.$active_queue()["$<<"](action));return this}),1),$def(self,"$record_insertion",(function(range){var $writer;return $writer=[this.$active_insertions()["$|"](1["$<<"](range.$begin_pos()))],$send(this,"active_insertions=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$record_replace",(function(range){var $writer;return $writer=[this.$active_clobber()["$|"](this.$clobbered_position_mask(range))],$send(this,"active_clobber=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$clobbered_position_mask",(function(range){return $rb_minus(1["$<<"](range.$size()),1)["$<<"](range.$begin_pos())}),1),$def(self,"$adjacent_position_mask",(function(range){return $rb_minus(1["$<<"]($rb_plus(range.$size(),2)),1)["$<<"]($rb_minus(range.$begin_pos(),1))}),1),$def(self,"$adjacent_insertion_mask",(function(range){return $rb_minus(1["$<<"]($rb_plus(range.$size(),1)),1)["$<<"](range.$begin_pos())}),1),$def(self,"$clobbered_insertion?",(function(insertion){var insertion_pos;return insertion_pos=insertion.$begin_pos(),$neqeq(this.$active_insertions()["$&"](1["$<<"](insertion_pos)),0)?$send(this.$active_queue(),"find",[],(function(a){var $ret_or_1;return null==a&&(a=nil),$truthy($ret_or_1=$rb_le(a.$range().$begin_pos(),insertion_pos))?$rb_le(insertion_pos,a.$range().$end_pos()):$ret_or_1}),1):nil}),1),$def(self,"$adjacent_insertions?",(function(range){var result=nil;return $neqeq(this.$active_insertions()["$&"](this.$adjacent_insertion_mask(range)),0)?(result=$send(this.$active_queue(),"select",[],(function $$8(a){var $ret_or_1,self=null==$$8.$$s?this:$$8.$$s;return null==a&&(a=nil),$truthy($ret_or_1=a.$range()["$empty?"]())?self["$adjacent?"](range,a.$range()):$ret_or_1}),{$$arity:1,$$s:this}),$truthy(result["$empty?"]())?nil:result):nil}),1),$def(self,"$adjacent_updates?",(function(range){return $neqeq(this.$active_clobber()["$&"](this.$adjacent_position_mask(range)),0)?$send(this.$active_queue(),"select",[],(function $$10(a){return null==a&&(a=nil),(null==$$10.$$s?this:$$10.$$s)["$adjacent?"](range,a.$range())}),{$$arity:1,$$s:this}):nil}),1),$def(self,"$replace_compatible_with_insertion?",(function(replace,insertion){var $ret_or_1,$ret_or_2,offset=nil;return $truthy($ret_or_1=$truthy($ret_or_2=$rb_ge($rb_minus(replace.$replacement().$length(),replace.$range().$size()),insertion.$range().$size()))?offset=$rb_minus(insertion.$range().$begin_pos(),replace.$range().$begin_pos()):$ret_or_2)?replace.$replacement()["$[]"](offset,insertion.$replacement().$length())["$=="](insertion.$replacement()):$ret_or_1}),2),$def(self,"$can_merge?",(function(action,existing){var range=nil;return range=action.$range(),$send(existing,"all?",[],(function(other){var repl1_offset,repl2_offset,repl1_length,repl2_length,replacement2,overlap=nil,replacement1=nil,$ret_or_1=nil;return null==other&&(other=nil),overlap=range.$intersect(other.$range()),!!$truthy(overlap["$nil?"]())||(repl1_offset=$rb_minus(overlap.$begin_pos(),range.$begin_pos()),repl2_offset=$rb_minus(overlap.$begin_pos(),other.$range().$begin_pos()),repl1_length=[$rb_minus(other.$range().$length(),repl2_offset),$rb_minus(other.$replacement().$length(),repl2_offset)].$max(),repl2_length=[$rb_minus(range.$length(),repl1_offset),$rb_minus(action.$replacement().$length(),repl1_offset)].$max(),replacement1=$truthy($ret_or_1=action.$replacement()["$[]"](repl1_offset,repl1_length))?$ret_or_1:"".$freeze(),replacement2=$truthy($ret_or_1=other.$replacement()["$[]"](repl2_offset,repl2_length))?$ret_or_1:"".$freeze(),replacement1["$=="](replacement2))}),1)}),2),$def(self,"$merge_actions",(function(action,existing){var range,actions=nil;return range=(actions=$send(existing.$push(action),"sort_by",[],(function(a){return null==a&&(a=nil),[a.$range().$begin_pos(),a.$range().$end_pos()]}),1)).$first().$range().$join($send(actions,"max_by",[],(function(a){return null==a&&(a=nil),a.$range().$end_pos()}),1).$range()),$$$($$("Rewriter"),"Action").$new(range,this.$merge_replacements(actions))}),2),$def(self,"$merge_actions!",(function(action,existing){var new_action;return new_action=this.$merge_actions(action,existing),this.$active_queue().$delete(action),this.$replace_actions(existing,new_action)}),2),$def(self,"$merge_replacements",(function(actions){var result=nil,prev_act=nil;return result="".$dup(),prev_act=nil,$send(actions,"each",[],(function(act){var prev_end=nil,offset=nil;return null==act&&(act=nil),$not(prev_act)||$truthy(act.$range()["$disjoint?"](prev_act.$range()))?result["$<<"](act.$replacement()):(prev_end=[$rb_plus(prev_act.$range().$begin_pos(),prev_act.$replacement().$length()),prev_act.$range().$end_pos()].$max(),offset=$rb_minus(prev_end,act.$range().$begin_pos()),$truthy($rb_lt(offset,act.$replacement().$size()))&&result["$<<"](act.$replacement()["$[]"](Opal.Range.$new(offset,-1,!1)))),prev_act=act}),1),result}),1),$def(self,"$replace_actions",(function(old,updated){return $send(old,"each",[],(function $$18(act){return null==act&&(act=nil),(null==$$18.$$s?this:$$18.$$s).$active_queue().$delete(act)}),{$$arity:1,$$s:this}),this.$active_queue()["$<<"](updated)}),2),$def(self,"$raise_clobber_error",(function(action,existing){var diagnostic=nil;return diagnostic=$$("Diagnostic").$new("error","invalid_action",$hash2(["action"],{action:action}),action.$range()),this.diagnostics.$process(diagnostic),diagnostic=$$("Diagnostic").$new("note","clobbered",$hash2(["action"],{action:existing["$[]"](0)}),existing["$[]"](0).$range()),this.diagnostics.$process(diagnostic),this.$raise($$("ClobberingError"),"Parser::Source::Rewriter detected clobbering")}),2),$def(self,"$in_transaction?",(function(){return this.pending_queue["$nil?"]()["$!"]()}),0),$def(self,"$active_queue",(function(){var $ret_or_1;return $truthy($ret_or_1=this.pending_queue)?$ret_or_1:this.queue}),0),$def(self,"$active_clobber",(function(){var $ret_or_1;return $truthy($ret_or_1=this.pending_clobber)?$ret_or_1:this.clobber}),0),$def(self,"$active_insertions",(function(){var $ret_or_1;return $truthy($ret_or_1=this.pending_insertions)?$ret_or_1:this.insertions}),0),$def(self,"$active_clobber=",(function(value){return $truthy(this.pending_clobber)?this.pending_clobber=value:this.clobber=value}),1),$def(self,"$active_insertions=",(function(value){return $truthy(this.pending_insertions)?this.pending_insertions=value:this.insertions=value}),1),$def(self,"$adjacent?",(function(range1,range2){var $ret_or_1;return $truthy($ret_or_1=$rb_le(range1.$begin_pos(),range2.$end_pos()))?$rb_le(range2.$begin_pos(),range1.$end_pos()):$ret_or_1}),2),$const_set($nesting[0],"DEPRECATION_WARNING",["Parser::Source::Rewriter is deprecated.","Please update your code to use Parser::Source::TreeRewriter instead"].$join("\n").$freeze()),self.$extend($$("Deprecation"))}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/rewriter/action"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$eqeq=Opal.eqeq;return Opal.add_stubs("include,attr_reader,alias_method,freeze,<=>,begin_pos,range,zero?,order,empty?,==,length,inspect"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Action"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.replacement=$proto.range=nil,self.$include($$("Comparable")),self.$attr_reader("range","replacement","allow_multiple_insertions","order"),self.$alias_method("allow_multiple_insertions?","allow_multiple_insertions"),$def(self,"$initialize",(function(range,replacement,allow_multiple_insertions,order){return null==replacement&&(replacement=""),null==allow_multiple_insertions&&(allow_multiple_insertions=!1),null==order&&(order=0),this.range=range,this.replacement=replacement,this.allow_multiple_insertions=allow_multiple_insertions,this.order=order,this.$freeze()}),-2),$def(self,"$<=>",(function(other){var result=nil;return result=this.$range().$begin_pos()["$<=>"](other.$range().$begin_pos()),$truthy(result["$zero?"]())?this.$order()["$<=>"](other.$order()):result}),1),$def(self,"$to_s",(function(){return $eqeq(this.range.$length(),0)&&$truthy(this.replacement["$empty?"]())?"do nothing":$eqeq(this.range.$length(),0)?"insert "+this.replacement.$inspect():$truthy(this.replacement["$empty?"]())?"remove "+this.range.$length()+" character(s)":"replace "+this.range.$length()+" character(s) with "+this.replacement.$inspect()}),0)}(Opal.$r($nesting)("Rewriter"),0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/tree_rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$lambda=Opal.lambda,$gvars=Opal.gvars,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$const_set=Opal.const_set,$eqeqeq=Opal.eqeqeq,$range=Opal.range,$to_ary=Opal.to_ary,$rb_gt=(Opal.hash,Opal.rb_gt),$rb_lt=Opal.rb_lt,$slice=Opal.slice;return Opal.add_stubs("attr_reader,new,puts,render,consumer=,-,freeze,check_policy_validity,method,adjust,source_range,empty?,==,source_buffer,raise,combine,action_root,merge!,dup,contract,+,begin_pos,range,end_pos,check_range_validity,moved,to_s,replace,wrap,source,each,ordered_replacements,<<,[],length,join,nested_actions,class,name,action_summary,warn_of_deprecation,insert_before,insert_after,extend,protected,private,as_replacements,===,size,first,map,to_range,inspect,values,>,<,trigger_policy,process"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"TreeRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.diagnostics=$proto.source_buffer=$proto.enforcer=$proto.action_root=$proto.in_transaction=$proto.policy=nil,self.$attr_reader("source_buffer"),self.$attr_reader("diagnostics"),$def(self,"$initialize",(function(source_buffer,$kwargs){var crossing_deletions,different_replacements,swallowed_insertions,$writer,all_encompassing_range;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(crossing_deletions=$kwargs.$$smap.crossing_deletions)&&(crossing_deletions="accept"),null==(different_replacements=$kwargs.$$smap.different_replacements)&&(different_replacements="accept"),null==(swallowed_insertions=$kwargs.$$smap.swallowed_insertions)&&(swallowed_insertions="accept"),this.diagnostics=$$$($$("Diagnostic"),"Engine").$new(),$writer=[$lambda((function(diag){return null==$gvars.stderr&&($gvars.stderr=nil),null==diag&&(diag=nil),$gvars.stderr.$puts(diag.$render())}),1)],$send(this.diagnostics,"consumer=",$to_a($writer)),$rb_minus($writer.length,1),this.source_buffer=source_buffer,this.in_transaction=!1,this.policy=$hash2(["crossing_deletions","different_replacements","swallowed_insertions"],{crossing_deletions:crossing_deletions,different_replacements:different_replacements,swallowed_insertions:swallowed_insertions}).$freeze(),this.$check_policy_validity(),this.enforcer=this.$method("enforce_policy"),all_encompassing_range=this.source_buffer.$source_range().$adjust($hash2(["begin_pos","end_pos"],{begin_pos:-1,end_pos:1})),this.action_root=$$$($$("TreeRewriter"),"Action").$new(all_encompassing_range,this.enforcer)}),-2),$def(self,"$empty?",(function(){return this.action_root["$empty?"]()}),0),$def(self,"$merge!",(function(with$){return $eqeq(this.$source_buffer(),with$.$source_buffer())||this.$raise("TreeRewriter are not for the same source_buffer"),this.action_root=this.action_root.$combine(with$.$action_root()),this}),1),$def(self,"$merge",(function(with$){return this.$dup()["$merge!"](with$)}),1),$def(self,"$import!",(function(foreign_rewriter,$kwargs){var offset,merge_effective_range,merge_with,contracted=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(offset=$kwargs.$$smap.offset)&&(offset=0),$truthy(foreign_rewriter["$empty?"]())||(contracted=foreign_rewriter.$action_root().$contract(),merge_effective_range=$$$($$$($$$("Parser"),"Source"),"Range").$new(this.source_buffer,$rb_plus(contracted.$range().$begin_pos(),offset),$rb_plus(contracted.$range().$end_pos(),offset)),this.$check_range_validity(merge_effective_range),merge_with=contracted.$moved(this.source_buffer,offset),this.action_root=this.action_root.$combine(merge_with)),this}),-2),$def(self,"$replace",(function(range,content){return this.$combine(range,$hash2(["replacement"],{replacement:content}))}),2),$def(self,"$wrap",(function(range,insert_before,insert_after){return this.$combine(range,$hash2(["insert_before","insert_after"],{insert_before:insert_before.$to_s(),insert_after:insert_after.$to_s()}))}),3),$def(self,"$remove",(function(range){return this.$replace(range,"".$freeze())}),1),$def(self,"$insert_before",(function(range,content){return this.$wrap(range,content,nil)}),2),$def(self,"$insert_after",(function(range,content){return this.$wrap(range,nil,content)}),2),$def(self,"$process",(function(){var source=nil,chunks=nil,last_end=nil;return source=this.source_buffer.$source(),chunks=[],last_end=0,$send(this.action_root.$ordered_replacements(),"each",[],(function(range,replacement){return null==range&&(range=nil),null==replacement&&(replacement=nil),chunks["$<<"](source["$[]"](Opal.Range.$new(last_end,range.$begin_pos(),!0)))["$<<"](replacement),last_end=range.$end_pos()}),2),chunks["$<<"](source["$[]"](Opal.Range.$new(last_end,source.$length(),!0))),chunks.$join()}),0),$def(self,"$as_replacements",(function(){return this.action_root.$ordered_replacements()}),0),$def(self,"$as_nested_actions",(function(){return this.action_root.$nested_actions()}),0),$def(self,"$transaction",(function $$transaction(){var $yield=$$transaction.$$p||nil,self=this,previous=nil,restore_root=nil;return delete $$transaction.$$p,function(){try{return $yield===nil&&self.$raise(self.$class()+"#transaction requires block"),previous=self.in_transaction,self.in_transaction=!0,restore_root=self.action_root,Opal.yieldX($yield,[]),restore_root=nil,self}finally{$truthy(restore_root)&&(self.action_root=restore_root),self.in_transaction=previous}}()}),0),$def(self,"$in_transaction?",(function(){return this.in_transaction}),0),$def(self,"$inspect",(function(){return"#<"+this.$class()+" "+this.$source_buffer().$name()+": "+this.$action_summary()+">"}),0),$def(self,"$insert_before_multi",(function(range,text){return this.$class().$warn_of_deprecation(),this.$insert_before(range,text)}),2),$def(self,"$insert_after_multi",(function(range,text){return this.$class().$warn_of_deprecation(),this.$insert_after(range,text)}),2),$const_set($nesting[0],"DEPRECATION_WARNING",["TreeRewriter#insert_before_multi and insert_before_multi exist only for legacy compatibility.","Please update your code to use `wrap`, `insert_before` or `insert_after` instead."].$join("\n").$freeze()),self.$extend($$("Deprecation")),self.$protected(),self.$attr_reader("action_root"),self.$private(),$def(self,"$action_summary",(function(){var $ret_or_1,replacements=nil,suffix=nil,parts=nil;return replacements=this.$as_replacements(),$eqeqeq(0,$ret_or_1=replacements.$size())?"empty":($eqeqeq($range(1,3,!1),$ret_or_1)||(replacements=replacements.$first(3),suffix="…"),parts=$send(replacements,"map",[],(function($mlhs_tmp1){var $a,range=nil,str=nil;return null==$mlhs_tmp1&&($mlhs_tmp1=nil),range=null==($a=$to_ary($mlhs_tmp1))[0]?nil:$a[0],str=null==$a[1]?nil:$a[1],$truthy(str["$empty?"]())?"-"+range.$to_range():$eqeq(range.$size(),0)?"+"+str.$inspect()+"@"+range.$begin_pos():"^"+str.$inspect()+"@"+range.$to_range()}),{$$arity:1,$$has_top_level_mlhs_arg:!0}),$truthy(suffix)&&parts["$<<"](suffix),parts.$join(", "))}),0),$const_set($nesting[0],"ACTIONS",["accept","warn","raise"].$freeze()),$def(self,"$check_policy_validity",(function(){var invalid=nil;return invalid=$rb_minus(this.policy.$values(),$$("ACTIONS")),$truthy(invalid["$empty?"]())?nil:this.$raise($$("ArgumentError"),"Invalid policy: "+invalid.$join(", "))}),0),$def(self,"$combine",(function(range,attributes){var action;return range=this.$check_range_validity(range),action=$$$($$("TreeRewriter"),"Action").$new(range,this.enforcer,Opal.to_hash(attributes)),this.action_root=this.action_root.$combine(action),this}),2),$def(self,"$check_range_validity",(function(range){return($truthy($rb_lt(range.$begin_pos(),0))||$truthy($rb_gt(range.$end_pos(),this.source_buffer.$source().$size())))&&this.$raise($$("IndexError"),"The range "+range.$to_range()+" is outside the bounds of the source"),range}),1),$def(self,"$enforce_policy",(function $$enforce_policy(event){var values,$yield=$$enforce_policy.$$p||nil;return delete $$enforce_policy.$$p,$eqeq(this.policy["$[]"](event),"accept")?nil:$truthy(values=Opal.yieldX($yield,[]))?this.$trigger_policy(event,Opal.to_hash(values)):nil}),1),$const_set($nesting[0],"POLICY_TO_LEVEL",$hash2(["warn","raise"],{warn:"warning",raise:"error"}).$freeze()),$def(self,"$trigger_policy",(function(event,$kwargs){var range,conflict,arguments$,$a,action,$ret_or_1,diag=nil,highlights=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(range=$kwargs.$$smap.range)&&(range=this.$raise()),null==(conflict=$kwargs.$$smap.conflict)&&(conflict=nil),arguments$=Opal.kwrestargs($kwargs,{range:!0,conflict:!0}),action=$truthy($ret_or_1=this.policy["$[]"](event))?$ret_or_1:"raise",diag=$$$($$("Parser"),"Diagnostic").$new($$("POLICY_TO_LEVEL")["$[]"](action),event,arguments$,range),this.diagnostics.$process(diag),$truthy(conflict)&&(range=null==($a=$to_ary(conflict))[0]?nil:$a[0],highlights=$slice.call($a,1),diag=$$$($$("Parser"),"Diagnostic").$new($$("POLICY_TO_LEVEL")["$[]"](action),event+"_conflict",arguments$,range,highlights),this.diagnostics.$process(diag)),$eqeq(action,"raise")?this.$raise($$$($$("Parser"),"ClobberingError"),"Parser::Source::TreeRewriter detected clobbering"):nil}),-2)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/tree_rewriter/action"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$not=Opal.not,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$rb_gt=Opal.rb_gt,$rb_minus=Opal.rb_minus,$rb_ge=Opal.rb_ge,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_lt=Opal.rb_lt,$neqeq=Opal.neqeq;return Opal.add_stubs("attr_reader,freeze,empty?,do_combine,==,<<,begin,concat,flat_map,to_proc,end,!,insert_before,insert_after,replacement,raise,insertion?,with,begin_pos,range,first,children,end_pos,last,new,+,map,moved,protected,swallow,class,merge,place_in_hierarchy,analyse_hierarchy,[],fuse_deletions,combine_children,inject,size,bsearch,bsearch_child_index,>,-,>=,===,<=>,<=,check_fusible,<,shift,pop,compact!,each,call,call_enforcer_for_merge,!=,select"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super){var self=$klass($base,null,"Action"),$proto=self.$$prototype;return $proto.insert_before=$proto.insert_after=$proto.children=$proto.replacement=$proto.range=$proto.enforcer=nil,self.$attr_reader("range","replacement","insert_before","insert_after"),$def(self,"$initialize",(function(range,enforcer,$kwargs){var insert_before,replacement,insert_after,children,$a;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(insert_before=$kwargs.$$smap.insert_before)&&(insert_before=""),null==(replacement=$kwargs.$$smap.replacement)&&(replacement=nil),null==(insert_after=$kwargs.$$smap.insert_after)&&(insert_after=""),null==(children=$kwargs.$$smap.children)&&(children=[]),$a=[range,enforcer,children.$freeze(),insert_before.$freeze(),replacement,insert_after.$freeze()],this.range=$a[0],this.enforcer=$a[1],this.children=$a[2],this.insert_before=$a[3],this.replacement=$a[4],this.insert_after=$a[5],this.$freeze()}),-3),$def(self,"$combine",(function(action){return $truthy(action["$empty?"]())?this:this.$do_combine(action)}),1),$def(self,"$empty?",(function(){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.insert_before["$empty?"]())?this.insert_after["$empty?"]():$ret_or_3)?this.children["$empty?"]():$ret_or_2)?$truthy($ret_or_2=this.replacement["$=="](nil))?$ret_or_2:$truthy($ret_or_3=this.replacement["$empty?"]())?this.range["$empty?"]():$ret_or_3:$ret_or_1}),0),$def(self,"$ordered_replacements",(function(){var reps=nil;return reps=[],$truthy(this.insert_before["$empty?"]())||reps["$<<"]([this.range.$begin(),this.insert_before]),$truthy(this.replacement)&&reps["$<<"]([this.range,this.replacement]),reps.$concat($send(this.children,"flat_map",[],"ordered_replacements".$to_proc())),$truthy(this.insert_after["$empty?"]())||reps["$<<"]([this.range.$end(),this.insert_after]),reps}),0),$def(self,"$nested_actions",(function(){var actions=nil;return actions=[],($not(this.insert_before["$empty?"]())||$not(this.insert_after["$empty?"]()))&&actions["$<<"](["wrap",this.range,this.insert_before,this.insert_after]),$truthy(this.replacement)&&actions["$<<"](["replace",this.range,this.replacement]),actions.$concat($send(this.children,"flat_map",[],"nested_actions".$to_proc()))}),0),$def(self,"$insertion?",(function(){var $ret_or_1,$ret_or_2=nil;return $truthy($ret_or_1=$truthy($ret_or_2=this.$insert_before()["$empty?"]()["$!"]())?$ret_or_2:this.$insert_after()["$empty?"]()["$!"]())?$ret_or_1:$truthy($ret_or_2=this.$replacement())?this.$replacement()["$empty?"]()["$!"]():$ret_or_2}),0),$def(self,"$contract",(function(){var range;return $truthy(this["$empty?"]())&&this.$raise("Empty actions can not be contracted"),$truthy(this["$insertion?"]())?this:(range=this.range.$with($hash2(["begin_pos","end_pos"],{begin_pos:this.$children().$first().$range().$begin_pos(),end_pos:this.$children().$last().$range().$end_pos()})),this.$with($hash2(["range"],{range:range})))}),0),$def(self,"$moved",(function(source_buffer,offset){var moved_range;return moved_range=$$$($$$($$$("Parser"),"Source"),"Range").$new(source_buffer,$rb_plus(this.range.$begin_pos(),offset),$rb_plus(this.range.$end_pos(),offset)),this.$with($hash2(["range","children"],{range:moved_range,children:$send(this.$children(),"map",[],(function(child){return null==child&&(child=nil),child.$moved(source_buffer,offset)}),1)}))}),2),self.$protected(),self.$attr_reader("children"),$def(self,"$with",(function($kwargs){var range,enforcer,children,insert_before,replacement,insert_after;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(range=$kwargs.$$smap.range)&&(range=this.range),null==(enforcer=$kwargs.$$smap.enforcer)&&(enforcer=this.enforcer),null==(children=$kwargs.$$smap.children)&&(children=this.children),null==(insert_before=$kwargs.$$smap.insert_before)&&(insert_before=this.insert_before),null==(replacement=$kwargs.$$smap.replacement)&&(replacement=this.replacement),null==(insert_after=$kwargs.$$smap.insert_after)&&(insert_after=this.insert_after),$truthy(replacement)&&(children=this.$swallow(children)),this.$class().$new(range,enforcer,$hash2(["children","insert_before","replacement","insert_after"],{children:children,insert_before:insert_before,replacement:replacement,insert_after:insert_after}))}),-1),$def(self,"$do_combine",(function(action){return $eqeq(action.$range(),this.range)?this.$merge(action):this.$place_in_hierarchy(action)}),1),$def(self,"$place_in_hierarchy",(function(action){var family=nil,extra_sibbling=nil;return family=this.$analyse_hierarchy(action),$truthy(family["$[]"]("fusible"))?this.$fuse_deletions(action,family["$[]"]("fusible"),[].concat($to_a(family["$[]"]("sibbling_left"))).concat($to_a(family["$[]"]("child"))).concat($to_a(family["$[]"]("sibbling_right")))):(extra_sibbling=$truthy(family["$[]"]("parent"))?family["$[]"]("parent").$do_combine(action):$truthy(family["$[]"]("child"))?action.$with($hash2(["children","enforcer"],{children:family["$[]"]("child"),enforcer:this.enforcer})).$combine_children(action.$children()):action,this.$with($hash2(["children"],{children:[].concat($to_a(family["$[]"]("sibbling_left"))).concat([extra_sibbling]).concat($to_a(family["$[]"]("sibbling_right")))})))}),1),$def(self,"$combine_children",(function(more_children){return $send(more_children,"inject",[this],(function(parent,new_child){return null==parent&&(parent=nil),null==new_child&&(new_child=nil),parent.$place_in_hierarchy(new_child)}),2)}),1),$def(self,"$fuse_deletions",(function(action,fusible,other_sibblings){var fused_range,fused_deletion,without_fusible=nil;return without_fusible=this.$with($hash2(["children"],{children:other_sibblings})),fused_range=$send([action].concat($to_a(fusible)),"map",[],"range".$to_proc()).$inject("join"),fused_deletion=action.$with($hash2(["range"],{range:fused_range})),without_fusible.$do_combine(fused_deletion)}),3),$def(self,"$bsearch_child_index",(function $$bsearch_child_index(from){var size,$ret_or_1,$yield=$$bsearch_child_index.$$p||nil;return delete $$bsearch_child_index.$$p,null==from&&(from=0),size=this.children.$size(),$truthy($ret_or_1=$send(Opal.Range.$new(from,size,!0),"bsearch",[],(function $$6(i){var self=null==$$6.$$s?this:$$6.$$s;return null==self.children&&(self.children=nil),null==i&&(i=nil),Opal.yield1($yield,self.children["$[]"](i))}),{$$arity:1,$$s:this}))?$ret_or_1:size}),-1),$def(self,"$analyse_hierarchy",(function(action){var start,center,$ret_or_1,r=nil,left_index=nil,right_index=nil,parent=nil,overlap_left=nil,overlap_right=nil,contained=nil,fusible=nil;return r=action.$range(),left_index=$send(this,"bsearch_child_index",[],(function(child){return null==child&&(child=nil),$rb_gt(child.$range().$end_pos(),r.$begin_pos())}),1),start=$eqeq(left_index,0)?0:$rb_minus(left_index,1),right_index=$send(this,"bsearch_child_index",[start],(function(child){return null==child&&(child=nil),$rb_ge(child.$range().$begin_pos(),r.$end_pos())}),1),center=$rb_minus(right_index,left_index),$eqeqeq(0,$ret_or_1=center)||($eqeqeq(-1,$ret_or_1)?(left_index=$rb_minus(left_index,1),right_index=$rb_plus(right_index,1),parent=this.children["$[]"](left_index)):(overlap_left=this.children["$[]"](left_index).$range().$begin_pos()["$<=>"](r.$begin_pos()),overlap_right=this.children["$[]"]($rb_minus(right_index,1)).$range().$end_pos()["$<=>"](r.$end_pos()),$eqeq(center,1)&&$truthy($rb_le(overlap_left,0))&&$truthy($rb_ge(overlap_right,0))?parent=this.children["$[]"](left_index):(contained=this.children["$[]"](Opal.Range.$new(left_index,right_index,!0)),fusible=this.$check_fusible(action,$truthy($rb_lt(overlap_left,0))?contained.$shift():nil,$truthy($rb_gt(overlap_right,0))?contained.$pop():nil)))),$hash2(["parent","sibbling_left","sibbling_right","fusible","child"],{parent:parent,sibbling_left:this.children["$[]"](Opal.Range.$new(0,left_index,!0)),sibbling_right:this.children["$[]"](Opal.Range.$new(right_index,this.children.$size(),!0)),fusible:fusible,child:contained})}),1),$def(self,"$check_fusible",(function(action,$a){var fusible,self=this;return(fusible=Opal.slice.call(arguments,1))["$compact!"](),$truthy(fusible["$empty?"]())?nil:($send(fusible,"each",[],(function $$9(child){var kind,self=null==$$9.$$s?this:$$9.$$s;return null==self.enforcer&&(self.enforcer=nil),null==child&&(child=nil),kind=$truthy(action["$insertion?"]())||$truthy(child["$insertion?"]())?"crossing_insertions":"crossing_deletions",$send(self.enforcer,"call",[kind],(function(){return $hash2(["range","conflict"],{range:action.$range(),conflict:child.$range()})}),0)}),{$$arity:1,$$s:self}),fusible)}),-2),$def(self,"$merge",(function(action){var $ret_or_1;return this.$call_enforcer_for_merge(action),this.$with($hash2(["insert_before","replacement","insert_after"],{insert_before:""+action.$insert_before()+this.$insert_before(),replacement:$truthy($ret_or_1=action.$replacement())?$ret_or_1:this.replacement,insert_after:""+this.$insert_after()+action.$insert_after()})).$combine_children(action.$children())}),1),$def(self,"$call_enforcer_for_merge",(function(action){return $send(this.enforcer,"call",["different_replacements"],(function $$11(){var self=null==$$11.$$s?this:$$11.$$s;return null==self.replacement&&(self.replacement=nil),null==self.range&&(self.range=nil),$truthy(self.replacement)&&$truthy(action.$replacement())&&$neqeq(self.replacement,action.$replacement())?$hash2(["range","replacement","other_replacement"],{range:self.range,replacement:action.$replacement(),other_replacement:self.replacement}):nil}),{$$arity:0,$$s:this})}),1),$def(self,"$swallow",(function(children){return $send(this.enforcer,"call",["swallowed_insertions"],(function $$12(){var self=null==$$12.$$s?this:$$12.$$s,insertions=nil;return null==self.range&&(self.range=nil),insertions=$send(children,"select",[],"insertion?".$to_proc()),$truthy(insertions["$empty?"]())?nil:$hash2(["range","conflict"],{range:self.range,conflict:$send(insertions,"map",[],"range".$to_proc())})}),{$$arity:0,$$s:this}),[]}),1)}(Opal.$r($nesting)("TreeRewriter"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super,$send=Opal.send,$truthy=Opal.truthy,$hash2=Opal.hash2,$eqeq=Opal.eqeq,$range=Opal.range,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus;return Opal.add_stubs("attr_reader,freeze,line,alias_method,column,last_line,last_column,with,update_expression,==,class,reduce,map,instance_variables,instance_variable_get,send,inject,to_sym,[],[]=,-,protected,tap,dup,to_proc"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,null,"Map"),$proto=self.$$prototype;return $proto.node=$proto.expression=nil,self.$attr_reader("node"),self.$attr_reader("expression"),$def(self,"$initialize",(function(expression){return this.expression=expression}),1),$def(self,"$initialize_copy",(function $$initialize_copy(other){var $yield=$$initialize_copy.$$p||nil;return delete $$initialize_copy.$$p,$send2(this,$find_super(this,"initialize_copy",$$initialize_copy,!1,!0),"initialize_copy",[other],$yield),this.node=nil}),1),$def(self,"$node=",(function(node){return this.node=node,this.$freeze(),this.node}),1),$def(self,"$line",(function(){return this.expression.$line()}),0),self.$alias_method("first_line","line"),$def(self,"$column",(function(){return this.expression.$column()}),0),$def(self,"$last_line",(function(){return this.expression.$last_line()}),0),$def(self,"$last_column",(function(){return this.expression.$last_column()}),0),$def(self,"$with_expression",(function(expression_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_expression(expression_l)}),1)}),1),$def(self,"$==",(function(other){var $ret_or_1;return $truthy($ret_or_1=other.$class()["$=="](this.$class()))?$send(this.$instance_variables(),"map",[],(function $$4(ivar){return null==ivar&&(ivar=nil),(null==$$4.$$s?this:$$4.$$s).$instance_variable_get(ivar)["$=="](other.$send("instance_variable_get",ivar))}),{$$arity:1,$$s:this}).$reduce("&"):$ret_or_1}),1),$def(self,"$to_hash",(function(){return $send(this.$instance_variables(),"inject",[$hash2([],{})],(function $$5(hash,ivar){var $writer,self=null==$$5.$$s?this:$$5.$$s;return null==hash&&(hash=nil),null==ivar&&(ivar=nil),$eqeq(ivar.$to_sym(),"@node")||($writer=[ivar["$[]"]($range(1,-1,!1)).$to_sym(),self.$instance_variable_get(ivar)],$send(hash,"[]=",$to_a($writer)),$rb_minus($writer.length,1)),hash}),{$$arity:2,$$s:this})}),0),self.$protected(),$def(self,"$with",(function $Map_with$6(){var block=$Map_with$6.$$p||nil;return delete $Map_with$6.$$p,$send(this.$dup(),"tap",[],block.$to_proc())}),0),$def(self,"$update_expression",(function(expression_l){return this.expression=expression_l}),1)}([$module($base,"Source")].concat($parent_nesting)[0])}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/operator"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Operator");return self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(operator,expression){return delete $$initialize.$$p,this.operator=operator,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression],null)}),2)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/collection"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Collection");return self.$attr_reader("begin"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),3)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/constant"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Constant");return self.$attr_reader("double_colon"),self.$attr_reader("name"),self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(double_colon,name,expression){var $a;return delete $$initialize.$$p,$a=[double_colon,name],this.double_colon=$a[0],this.name=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression],null)}),3),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/variable"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Variable");return self.$attr_reader("name"),self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(name_l,expression_l){return delete $$initialize.$$p,null==expression_l&&(expression_l=name_l),this.name=name_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),-2),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/keyword"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Keyword");return self.$attr_reader("keyword"),self.$attr_reader("begin"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(keyword_l,begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,this.keyword=keyword_l,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/definition"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader,join"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Definition"),$proto=self.$$prototype;return $proto.keyword=$proto.end=nil,self.$attr_reader("keyword"),self.$attr_reader("operator"),self.$attr_reader("name"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(keyword_l,operator_l,name_l,end_l){return delete $$initialize.$$p,this.keyword=keyword_l,this.operator=operator_l,this.name=name_l,this.end=end_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[this.keyword.$join(this.end)],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/method_definition"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("attr_reader,join"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"MethodDefinition");return self.$$prototype.keyword=nil,self.$attr_reader("keyword"),self.$attr_reader("operator"),self.$attr_reader("name"),self.$attr_reader("end"),self.$attr_reader("assignment"),$def(self,"$initialize",(function $$initialize(keyword_l,operator_l,name_l,end_l,assignment_l,body_l){var $ret_or_1;return delete $$initialize.$$p,this.keyword=keyword_l,this.operator=operator_l,this.name=name_l,this.end=end_l,this.assignment=assignment_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[this.keyword.$join($truthy($ret_or_1=end_l)?$ret_or_1:body_l)],null)}),6)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/send"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Send");return self.$attr_reader("dot"),self.$attr_reader("selector"),self.$attr_reader("operator"),self.$attr_reader("begin"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(dot_l,selector_l,begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,this.dot=dot_l,this.selector=selector_l,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),5),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/index"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Index");return self.$attr_reader("begin"),self.$attr_reader("end"),self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],this.operator=nil,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),3),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/condition"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Condition");return self.$attr_reader("keyword"),self.$attr_reader("begin"),self.$attr_reader("else"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(keyword_l,begin_l,else_l,end_l,expression_l){var $a;return delete $$initialize.$$p,this.keyword=keyword_l,$a=[begin_l,else_l,end_l],this.begin=$a[0],this.else=$a[1],this.end=$a[2],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),5)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/ternary"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Ternary");return self.$attr_reader("question"),self.$attr_reader("colon"),$def(self,"$initialize",(function $$initialize(question_l,colon_l,expression_l){var $a;return delete $$initialize.$$p,$a=[question_l,colon_l],this.question=$a[0],this.colon=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),3)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/for"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"For");return self.$attr_reader("keyword","in"),self.$attr_reader("begin","end"),$def(self,"$initialize",(function $$initialize(keyword_l,in_l,begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,$a=[keyword_l,in_l],this.keyword=$a[0],this.in=$a[1],$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),5)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/rescue_body"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"RescueBody");return self.$attr_reader("keyword"),self.$attr_reader("assoc"),self.$attr_reader("begin"),$def(self,"$initialize",(function $$initialize(keyword_l,assoc_l,begin_l,expression_l){return delete $$initialize.$$p,this.keyword=keyword_l,this.assoc=assoc_l,this.begin=begin_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/heredoc"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Heredoc");return self.$attr_reader("heredoc_body"),self.$attr_reader("heredoc_end"),$def(self,"$initialize",(function $$initialize(begin_l,body_l,end_l){return delete $$initialize.$$p,this.heredoc_body=body_l,this.heredoc_end=end_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[begin_l],null)}),3)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/objc_kwarg"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ObjcKwarg");return self.$attr_reader("keyword"),self.$attr_reader("operator"),self.$attr_reader("argument"),$def(self,"$initialize",(function $$initialize(keyword_l,operator_l,argument_l,expression_l){var $a;return delete $$initialize.$$p,$a=[keyword_l,operator_l,argument_l],this.keyword=$a[0],this.operator=$a[1],this.argument=$a[2],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/syntax_error"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader,message"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"SyntaxError");return self.$attr_reader("diagnostic"),$def(self,"$initialize",(function $$initialize(diagnostic){return delete $$initialize.$$p,this.diagnostic=diagnostic,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[diagnostic.$message()],null)}),1)}($nesting[0],$$("StandardError"))}($nesting[0],$nesting)},Opal.modules["parser/clobbering_error"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass;return function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return $klass($nesting[0],$$("RuntimeError"),"ClobberingError"),nil}($nesting[0],$nesting)},Opal.modules["parser/diagnostic"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$truthy=Opal.truthy,$hash2=Opal.hash2,$def=Opal.def,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$to_ary=Opal.to_ary,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$send=Opal.send,$to_a=Opal.to_a,$rb_ge=Opal.rb_ge,$not=Opal.not,$neqeq=Opal.neqeq;return Opal.add_stubs("freeze,attr_reader,include?,raise,join,inspect,dup,compile,is?,==,line,last_line,+,message,render_line,first_line_only,last_line_only,-,source_buffer,decompose_position,end_pos,>,private,source_line,*,length,each,line_range,intersect,column_range,size,[]=,>=,!,map,name,!=,resize,=~,source,adjust"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Diagnostic"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.reason=$proto.arguments=$proto.location=$proto.level=$proto.highlights=nil,$const_set($nesting[0],"LEVELS",["note","warning","error","fatal"].$freeze()),self.$attr_reader("level","reason","arguments"),self.$attr_reader("location","highlights"),$def(self,"$initialize",(function(level,reason,arguments$,location,highlights){var $ret_or_1;return null==highlights&&(highlights=[]),$truthy($$("LEVELS")["$include?"](level))||this.$raise($$("ArgumentError"),"Diagnostic#level must be one of "+$$("LEVELS").$join(", ")+"; "+level.$inspect()+" provided."),$truthy(location)||this.$raise("Expected a location"),this.level=level,this.reason=reason,this.arguments=($truthy($ret_or_1=arguments$)?$ret_or_1:$hash2([],{})).$dup().$freeze(),this.location=location,this.highlights=highlights.$dup().$freeze(),this.$freeze()}),-5),$def(self,"$message",(function(){return $$("Messages").$compile(this.reason,this.arguments)}),0),$def(self,"$render",(function(){var $a,$b,first_line=nil,last_line=nil,num_lines=nil,last_lineno=nil,last_column=nil;return $eqeq(this.location.$line(),this.location.$last_line())||$truthy(this.location["$is?"]("\n"))?$rb_plus([this.location+": "+this.level+": "+this.$message()],this.$render_line(this.location)):(first_line=this.$first_line_only(this.location),last_line=this.$last_line_only(this.location),num_lines=$rb_plus($rb_minus(this.location.$last_line(),this.location.$line()),1),$b=this.location.$source_buffer().$decompose_position(this.location.$end_pos()),last_lineno=null==($a=$to_ary($b))[0]?nil:$a[0],last_column=null==$a[1]?nil:$a[1],$rb_plus($rb_plus([this.location+"-"+last_lineno+":"+last_column+": "+this.level+": "+this.$message()],this.$render_line(first_line,$rb_gt(num_lines,2),!1)),this.$render_line(last_line,!1,!0)))}),0),self.$private(),$def(self,"$render_line",(function(range,ellipsis,range_end){var source_line=nil,highlight_line=nil,$writer=nil;return null==ellipsis&&(ellipsis=!1),null==range_end&&(range_end=!1),source_line=range.$source_line(),highlight_line=$rb_times(" ",source_line.$length()),$send(this.highlights,"each",[],(function(highlight){var line_range,$writer=nil;return null==highlight&&(highlight=nil),line_range=range.$source_buffer().$line_range(range.$line()),$truthy(highlight=highlight.$intersect(line_range))?($writer=[highlight.$column_range(),$rb_times("~",highlight.$size())],$send(highlight_line,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),1),$truthy(range["$is?"]("\n"))?highlight_line=$rb_plus(highlight_line,"^"):$not(range_end)&&$truthy($rb_ge(range.$size(),1))?($writer=[range.$column_range(),$rb_plus("^",$rb_times("~",$rb_minus(range.$size(),1)))],$send(highlight_line,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):($writer=[range.$column_range(),$rb_times("~",range.$size())],$send(highlight_line,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy(ellipsis)&&(highlight_line=$rb_plus(highlight_line,"...")),$send([source_line,highlight_line],"map",[],(function(line){return null==line&&(line=nil),range.$source_buffer().$name()+":"+range.$line()+": "+line}),1)}),-2),$def(self,"$first_line_only",(function(range){return $neqeq(range.$line(),range.$last_line())?range.$resize(range.$source()["$=~"](/\n/)):range}),1),$def(self,"$last_line_only",(function(range){return $neqeq(range.$line(),range.$last_line())?range.$adjust($hash2(["begin_pos"],{begin_pos:range.$source()["$=~"](/[^\n]*$/)})):range}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/diagnostic/engine"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("attr_accessor,ignore?,call,raise?,raise,protected,==,level"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Engine"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.consumer=$proto.ignore_warnings=$proto.all_errors_are_fatal=nil,self.$attr_accessor("consumer"),self.$attr_accessor("all_errors_are_fatal"),self.$attr_accessor("ignore_warnings"),$def(self,"$initialize",(function(consumer){return null==consumer&&(consumer=nil),this.consumer=consumer,this.all_errors_are_fatal=!1,this.ignore_warnings=!1}),-1),$def(self,"$process",(function(diagnostic){return $truthy(this["$ignore?"](diagnostic))||$truthy(this.consumer)&&this.consumer.$call(diagnostic),$truthy(this["$raise?"](diagnostic))&&this.$raise($$$($$("Parser"),"SyntaxError"),diagnostic),this}),1),self.$protected(),$def(self,"$ignore?",(function(diagnostic){var $ret_or_1;return $truthy($ret_or_1=this.ignore_warnings)?diagnostic.$level()["$=="]("warning"):$ret_or_1}),1),$def(self,"$raise?",(function(diagnostic){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.all_errors_are_fatal)?diagnostic.$level()["$=="]("error"):$ret_or_2)?$ret_or_1:diagnostic.$level()["$=="]("fatal")}),1)}(Opal.$r($nesting)("Diagnostic"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/static_environment"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def;return Opal.add_stubs("reset,[],push,dup,pop,add,to_sym,include?,declare,declared?,empty?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"StaticEnvironment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.stack=$proto.variables=nil,$const_set($nesting[0],"FORWARD_ARGS","FORWARD_ARGS"),$const_set($nesting[0],"ANONYMOUS_BLOCKARG","ANONYMOUS_BLOCKARG"),$def(self,"$initialize",(function(){return this.$reset()}),0),$def(self,"$reset",(function(){return this.variables=$$("Set")["$[]"](),this.stack=[]}),0),$def(self,"$extend_static",(function(){return this.stack.$push(this.variables),this.variables=$$("Set")["$[]"](),this}),0),$def(self,"$extend_dynamic",(function(){return this.stack.$push(this.variables),this.variables=this.variables.$dup(),this}),0),$def(self,"$unextend",(function(){return this.variables=this.stack.$pop(),this}),0),$def(self,"$declare",(function(name){return this.variables.$add(name.$to_sym()),this}),1),$def(self,"$declared?",(function(name){return this.variables["$include?"](name.$to_sym())}),1),$def(self,"$declare_forward_args",(function(){return this.$declare($$("FORWARD_ARGS"))}),0),$def(self,"$declared_forward_args?",(function(){return this["$declared?"]($$("FORWARD_ARGS"))}),0),$def(self,"$declare_anonymous_blockarg",(function(){return this.$declare($$("ANONYMOUS_BLOCKARG"))}),0),$def(self,"$declared_anonymous_blockarg?",(function(){return this["$declared?"]($$("ANONYMOUS_BLOCKARG"))}),0),$def(self,"$empty?",(function(){return this.stack["$empty?"]()}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/lexer"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$const_set=Opal.const_set,$hash=Opal.hash,$def=Opal.def,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$hash2=Opal.hash2,$rb_plus=Opal.rb_plus,$to_ary=Opal.to_ary,$rb_le=Opal.rb_le,$eqeqeq=Opal.eqeqeq,$rb_gt=Opal.rb_gt,$neqeq=Opal.neqeq,$not=Opal.not,$rb_ge=Opal.rb_ge,$range=Opal.range,$rb_lt=Opal.rb_lt,$gvars=Opal.gvars;return Opal.add_stubs("attr_accessor,private,_lex_trans_keys=,-,_lex_key_spans=,_lex_index_offsets=,_lex_indicies=,_lex_trans_targs=,_lex_trans_actions=,_lex_to_state_actions=,_lex_from_state_actions=,_lex_eof_trans=,lex_start=,lex_error=,lex_en_interp_words=,lex_en_interp_string=,lex_en_plain_words=,lex_en_plain_string=,lex_en_interp_backslash_delimited=,lex_en_plain_backslash_delimited=,lex_en_interp_backslash_delimited_words=,lex_en_plain_backslash_delimited_words=,lex_en_regexp_modifiers=,lex_en_expr_variable=,lex_en_expr_fname=,lex_en_expr_endfn=,lex_en_expr_dot=,lex_en_expr_arg=,lex_en_expr_cmdarg=,lex_en_expr_endarg=,lex_en_expr_mid=,lex_en_expr_beg=,lex_en_expr_labelarg=,lex_en_expr_value=,lex_en_expr_end=,lex_en_leading_dot=,lex_en_line_comment=,lex_en_line_begin=,freeze,ord,union,chars,attr_reader,reset,lex_en_line_begin,class,new,source,==,encoding,unpack,[],lex_en_expr_dot,lex_en_expr_fname,lex_en_expr_value,lex_en_expr_beg,lex_en_expr_mid,lex_en_expr_arg,lex_en_expr_cmdarg,lex_en_expr_end,lex_en_expr_endarg,lex_en_expr_endfn,lex_en_expr_labelarg,lex_en_interp_string,lex_en_interp_words,lex_en_plain_string,fetch,invert,push,count,pop,any?,shift,send,+,size,<=,===,<<,>,!=,emit_comment,tok,literal,flush_string,extend_content,emit,heredoc?,saved_herebody_s=,start_interp_brace,[]=,diagnostic,range,str_s,gsub,version?,nest_and_try_closing,heredoc_e,pop_literal,infer_indent_level,!,eof_codepoint?,words?,extend_space,extend_string,active?,>=,slice,start_with?,chr,munge_escape?,match,regexp?,squiggly_heredoc?,supports_line_continuation_via_slash?,include?,scan,join,=~,to_i,stack_pop,emit_table,push_literal,in_argdef,arg_or_cmdarg,<,emit_do,declared?,nil?,last,getbyte,inspect,end_with?,empty?,index,call,Float,to_f,length,lambda,Rational,Complex,each,encode_escape,%,in_kwarg,end_interp_brace_and_try_closing,lexpop,saved_herebody_s,next_state_for_literal,rstrip,&,|,lex_error,protected,force_encoding,process,backslash_delimited?,interpolate?,lex_en_interp_backslash_delimited_words,lex_en_plain_backslash_delimited_words,lex_en_plain_words,lex_en_interp_backslash_delimited,lex_en_plain_backslash_delimited,dedent_level,type,lex_en_regexp_modifiers,upcase"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Lexer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$writer=nil,$proto=self.$$prototype;return $proto.source_buffer=$proto.source_pts=$proto.cs=$proto.cmdarg_stack=$proto.cmdarg=$proto.cond_stack=$proto.cond=$proto.dedent_level=$proto.token_queue=$proto.p=$proto.command_start=$proto.herebody_s=$proto.sharp_s=$proto.ts=$proto.te=$proto.top=$proto.stack=$proto.version=$proto.escape_s=$proto.escape=$proto.act=$proto.context=$proto.static_env=$proto.newline_s=$proto.lambda_stack=$proto.paren_nest=$proto.num_digits_s=$proto.num_suffix_s=$proto.num_base=$proto.num_xfrm=$proto.eq_begin_s=$proto.cs_before_block_comment=$proto.tokens=$proto.comments=$proto.diagnostics=$proto.literal_stack=nil,function(self,$parent_nesting){self.$attr_accessor("_lex_trans_keys"),self.$private("_lex_trans_keys","_lex_trans_keys=")}(Opal.get_singleton_class(self)),$send(self,"_lex_trans_keys=",$to_a($writer=[[0,0,101,101,103,103,105,105,110,110,69,69,78,78,68,68,95,95,95,95,0,26,0,127,0,127,0,127,0,127,0,45,0,120,0,120,0,92,0,120,0,120,0,45,0,120,0,120,67,99,45,45,0,92,0,120,0,102,0,127,0,127,0,127,0,127,0,45,0,120,0,120,0,92,0,120,0,120,0,45,0,120,0,120,67,99,45,45,0,92,0,120,0,102,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,58,58,58,58,46,46,0,127,58,58,60,60,62,62,10,10,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,115,115,99,99,117,117,101,101,108,116,101,101,115,115,115,115,105,105,108,108,105,105,108,108,58,58,0,127,10,10,0,127,9,92,10,10,9,92,58,58,98,98,101,101,103,103,105,105,110,110,0,127,61,61,9,92,9,92,9,92,9,92,9,92,10,10,0,127,0,127,61,126,93,93,0,127,0,127,10,10,34,34,10,10,39,39,0,127,10,96,96,96,0,45,0,120,0,120,0,92,0,120,0,120,0,45,0,120,0,120,67,99,45,45,0,92,0,120,0,102,0,127,0,127,0,127,0,127,0,127,0,127,58,58,58,58,0,127,43,57,48,57,48,57,48,57,48,57,115,115,99,99,117,117,101,101,99,99,117,117,101,101,0,127,58,58,9,92,9,92,9,92,9,92,9,92,9,92,60,60,10,10,9,92,9,92,10,10,10,10,10,10,10,10,46,46,0,95,9,32,0,0,10,10,10,10,98,98,9,32,10,10,95,95,0,92,9,32,36,123,0,127,48,57,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,48,102,48,102,0,0,48,102,48,102,0,0,0,45,0,92,0,92,0,0,0,0,0,92,48,102,48,102,0,0,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,92,36,123,0,127,48,57,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,48,102,48,102,0,0,48,102,48,102,0,0,0,45,0,92,0,92,0,0,0,0,0,92,48,102,48,102,0,0,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,92,9,32,0,26,0,92,0,26,0,35,36,123,0,127,48,57,0,127,0,26,0,35,9,32,36,123,0,127,48,57,0,127,0,32,9,32,65,122,65,122,36,64,0,127,48,57,0,127,0,127,0,127,0,127,9,32,0,0,61,126,10,10,10,10,0,127,0,127,48,57,115,115,38,38,42,42,64,64,58,58,60,61,62,62,61,126,61,61,61,62,0,127,0,127,0,127,0,127,0,127,0,127,0,127,93,93,10,10,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,124,124,0,127,0,127,9,32,10,10,10,10,46,46,10,10,0,0,0,127,0,127,61,61,0,0,9,32,0,0,61,126,10,10,10,10,38,38,42,42,64,64,60,61,62,62,61,126,61,61,61,62,0,127,93,93,10,10,124,124,0,126,0,127,0,61,9,61,9,61,0,0,9,61,9,62,46,46,46,46,58,58,9,32,0,0,0,127,0,0,9,124,0,0,10,10,10,10,0,0,9,61,58,58,60,60,62,62,9,32,10,10,0,127,102,102,101,101,110,110,104,104,0,127,0,127,0,127,0,0,0,127,10,10,0,123,9,32,10,10,10,10,10,10,0,0,111,111,0,0,0,127,0,127,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,58,61,0,0,61,126,61,61,0,0,0,0,0,0,9,32,61,61,9,32,61,126,10,10,10,10,0,127,38,61,0,0,42,61,61,61,9,92,9,92,9,92,46,46,46,46,10,10,0,26,0,127,0,127,61,61,0,0,61,126,61,62,0,0,0,0,0,0,0,0,61,126,0,127,48,57,38,38,42,42,64,64,60,61,62,62,61,61,61,62,0,127,48,57,0,127,124,124,64,64,60,61,0,0,10,34,10,39,96,96,62,62,61,126,61,62,0,122,0,0,0,127,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,48,102,48,102,0,0,48,102,48,102,0,0,0,45,0,92,0,92,0,0,0,0,0,92,48,102,48,102,0,0,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,127,0,127,0,127,0,0,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,61,126,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,0,61,124,0,92,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,61,61,0,0,9,32,0,0,61,126,10,10,10,10,0,127,0,127,48,57,61,61,38,61,0,0,0,0,42,61,61,62,46,57,46,46,10,10,48,101,48,95,46,120,48,114,43,57,48,105,102,102,0,0,101,105,0,0,0,0,48,114,48,114,48,114,48,114,105,114,102,102,0,0,101,105,115,115,0,0,0,0,48,114,48,114,48,114,48,114,48,114,48,114,48,114,48,114,46,114,48,114,46,114,48,114,58,58,60,61,62,62,61,126,61,61,61,62,0,127,0,127,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,0,10,10,0,0,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,9,92,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,0,61,124,0,0,9,92,9,92,9,92,46,46,46,46,10,10,46,46,10,10,10,61,10,10,10,101,10,110,10,100,10,10,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_key_spans"),self.$private("_lex_key_spans","_lex_key_spans=")}(Opal.get_singleton_class(self)),$send(self,"_lex_key_spans=",$to_a($writer=[[0,1,1,1,1,1,1,1,1,1,27,128,128,128,128,46,121,121,93,121,121,46,121,121,33,1,93,121,103,128,128,128,128,46,121,121,93,121,121,46,121,121,33,1,93,121,103,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,1,1,128,1,1,1,1,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,1,1,1,9,1,1,1,1,1,1,1,1,128,1,128,84,1,84,1,1,1,1,1,1,128,1,84,84,84,84,84,1,128,128,66,1,128,128,1,1,1,1,128,87,1,46,121,121,93,121,121,46,121,121,33,1,93,121,103,128,128,128,128,128,128,1,1,128,15,10,10,10,10,1,1,1,1,1,1,1,128,1,84,84,84,84,84,84,1,1,84,84,1,1,1,1,1,96,24,0,1,1,1,24,1,1,93,24,88,128,10,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,55,55,0,55,55,0,46,93,93,0,0,93,55,55,0,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,0,0,55,0,93,88,128,10,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,55,55,0,55,55,0,46,93,93,0,0,93,55,55,0,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,0,0,55,0,93,24,27,93,27,36,88,128,10,128,27,36,24,88,128,10,128,33,24,58,58,29,128,10,128,128,128,128,24,0,66,1,1,128,128,10,1,1,1,1,1,2,1,66,1,2,128,128,128,128,128,128,128,1,1,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,128,128,24,1,1,1,1,0,128,128,1,0,24,0,66,1,1,1,1,1,2,1,66,1,2,128,1,1,1,127,128,62,53,53,0,53,54,1,1,1,24,0,128,0,116,0,1,1,0,53,1,1,1,24,1,128,1,1,1,1,128,128,128,0,128,1,124,24,1,1,1,0,1,0,128,128,24,0,1,1,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,4,0,66,1,0,0,0,24,1,24,66,1,1,128,24,0,20,1,84,84,84,1,1,1,27,128,128,1,0,66,2,0,0,0,0,66,128,10,1,1,1,2,1,1,2,128,10,128,1,1,2,0,25,30,1,1,66,2,123,0,128,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,55,55,0,55,55,0,46,93,93,0,0,93,55,55,0,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,0,0,55,0,128,128,128,0,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,66,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,64,93,24,0,1,1,1,0,128,128,24,0,1,1,1,0,128,128,1,0,24,0,66,1,1,128,128,10,1,24,0,0,20,2,12,1,1,54,48,75,67,15,58,1,0,5,0,0,67,67,67,67,10,1,0,5,1,0,0,67,67,67,67,67,67,67,67,69,67,69,67,1,2,1,66,1,2,128,128,0,128,128,128,128,128,128,0,1,0,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,84,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,64,0,84,84,84,1,1,1,1,1,52,1,92,101,91,1]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_index_offsets"),self.$private("_lex_index_offsets","_lex_index_offsets=")}(Opal.get_singleton_class(self)),$send(self,"_lex_index_offsets=",$to_a($writer=[[0,0,2,4,6,8,10,12,14,16,18,46,175,304,433,562,609,731,853,947,1069,1191,1238,1360,1482,1516,1518,1612,1734,1838,1967,2096,2225,2354,2401,2523,2645,2739,2861,2983,3030,3152,3274,3308,3310,3404,3526,3630,3759,3888,4017,4146,4275,4404,4533,4662,4791,4920,5049,5178,5307,5436,5565,5567,5569,5571,5700,5702,5704,5706,5708,5837,5966,6095,6224,6353,6482,6611,6740,6869,6998,7127,7256,7385,7514,7643,7772,7901,8030,8032,8034,8036,8038,8048,8050,8052,8054,8056,8058,8060,8062,8064,8193,8195,8324,8409,8411,8496,8498,8500,8502,8504,8506,8508,8637,8639,8724,8809,8894,8979,9064,9066,9195,9324,9391,9393,9522,9651,9653,9655,9657,9659,9788,9876,9878,9925,10047,10169,10263,10385,10507,10554,10676,10798,10832,10834,10928,11050,11154,11283,11412,11541,11670,11799,11928,11930,11932,12061,12077,12088,12099,12110,12121,12123,12125,12127,12129,12131,12133,12135,12264,12266,12351,12436,12521,12606,12691,12776,12778,12780,12865,12950,12952,12954,12956,12958,12960,13057,13082,13083,13085,13087,13089,13114,13116,13118,13212,13237,13326,13455,13466,13595,13717,13718,13719,13728,13737,13738,13739,13833,13834,13835,13836,13930,13932,13933,13934,13935,14029,14085,14141,14142,14198,14254,14255,14302,14396,14490,14491,14492,14586,14642,14698,14699,14746,14748,14842,14919,14975,15031,15087,15088,15215,15342,15343,15470,15471,15598,15725,15852,15979,15980,16107,16234,16361,16488,16615,16742,16743,16744,16800,16801,16895,16984,17113,17124,17253,17375,17376,17377,17386,17395,17396,17397,17491,17492,17493,17494,17588,17590,17591,17592,17593,17687,17743,17799,17800,17856,17912,17913,17960,18054,18148,18149,18150,18244,18300,18356,18357,18404,18406,18500,18577,18633,18689,18745,18746,18873,19e3,19001,19128,19129,19256,19383,19510,19637,19638,19765,19892,20019,20146,20273,20400,20401,20402,20458,20459,20553,20578,20606,20700,20728,20765,20854,20983,20994,21123,21151,21188,21213,21302,21431,21442,21571,21605,21630,21689,21748,21778,21907,21918,22047,22176,22305,22434,22459,22460,22527,22529,22531,22660,22789,22800,22802,22804,22806,22808,22810,22813,22815,22882,22884,22887,23016,23145,23274,23403,23532,23661,23790,23792,23794,23923,24052,24181,24310,24439,24568,24697,24826,24955,25084,25213,25342,25471,25600,25729,25858,25987,26116,26245,26374,26503,26632,26761,26890,27019,27148,27277,27406,27535,27664,27793,27922,28051,28180,28309,28438,28567,28696,28825,28954,29083,29212,29341,29470,29599,29728,29857,29986,30115,30244,30373,30502,30631,30760,30889,31018,31147,31276,31405,31534,31663,31792,31921,32050,32179,32308,32437,32566,32695,32824,32953,33082,33211,33340,33469,33598,33727,33856,33985,34114,34243,34372,34501,34503,34632,34761,34786,34788,34790,34792,34794,34795,34924,35053,35055,35056,35081,35082,35149,35151,35153,35155,35157,35159,35162,35164,35231,35233,35236,35365,35367,35369,35371,35499,35628,35691,35745,35799,35800,35854,35909,35911,35913,35915,35940,35941,36070,36071,36188,36189,36191,36193,36194,36248,36250,36252,36254,36279,36281,36410,36412,36414,36416,36418,36547,36676,36805,36806,36935,36937,37062,37087,37089,37091,37093,37094,37096,37097,37226,37355,37380,37381,37383,37385,37387,37388,37517,37646,37775,37904,38033,38162,38291,38420,38549,38678,38807,38936,39065,39194,39323,39452,39581,39710,39715,39716,39783,39785,39786,39787,39788,39813,39815,39840,39907,39909,39911,40040,40065,40066,40087,40089,40174,40259,40344,40346,40348,40350,40378,40507,40636,40638,40639,40706,40709,40710,40711,40712,40713,40780,40909,40920,40922,40924,40926,40929,40931,40933,40936,41065,41076,41205,41207,41209,41212,41213,41239,41270,41272,41274,41341,41344,41468,41469,41598,41727,41849,41850,41851,41860,41869,41870,41871,41965,41966,41967,41968,42062,42064,42065,42066,42067,42161,42217,42273,42274,42330,42386,42387,42434,42528,42622,42623,42624,42718,42774,42830,42831,42878,42880,42974,43051,43107,43163,43219,43220,43347,43474,43475,43602,43603,43730,43857,43984,44111,44112,44239,44366,44493,44620,44747,44874,45001,45128,45255,45382,45509,45636,45763,45890,46017,46144,46271,46398,46525,46526,46527,46583,46584,46713,46842,46971,46972,46974,46975,47104,47233,47362,47491,47620,47749,47878,48007,48136,48265,48394,48523,48652,48781,48910,49039,49168,49297,49426,49555,49684,49813,49942,50071,50200,50329,50458,50587,50716,50845,50974,51103,51232,51361,51490,51619,51748,51877,52006,52135,52264,52393,52522,52651,52780,52909,53038,53167,53296,53425,53554,53683,53812,53941,54070,54199,54328,54457,54586,54715,54844,54911,55040,55169,55298,55427,55556,55685,55814,55943,56072,56201,56330,56459,56588,56717,56846,56975,57104,57233,57362,57491,57620,57749,57878,58007,58136,58137,58202,58296,58321,58322,58324,58326,58328,58329,58458,58587,58612,58613,58615,58617,58619,58620,58749,58878,58880,58881,58906,58907,58974,58976,58978,59107,59236,59247,59249,59274,59275,59276,59297,59300,59313,59315,59317,59372,59421,59497,59565,59581,59640,59642,59643,59649,59650,59651,59719,59787,59855,59923,59934,59936,59937,59943,59945,59946,59947,60015,60083,60151,60219,60287,60355,60423,60491,60561,60629,60699,60767,60769,60772,60774,60841,60843,60846,60975,61104,61105,61234,61363,61492,61621,61750,61879,61880,61882,61883,61884,62013,62142,62271,62400,62529,62658,62787,62916,63045,63174,63303,63432,63561,63690,63819,63948,64077,64206,64335,64464,64593,64722,64851,64980,65109,65238,65367,65496,65625,65754,65883,66012,66141,66270,66399,66528,66657,66742,66871,67e3,67129,67258,67387,67516,67645,67774,67903,68032,68161,68290,68419,68548,68677,68806,68935,69064,69193,69322,69451,69580,69709,69838,69967,70096,70225,70354,70483,70612,70741,70870,70999,71128,71257,71386,71515,71644,71773,71902,72031,72160,72289,72418,72547,72676,72805,72934,73063,73192,73321,73450,73579,73708,73837,73966,74095,74224,74353,74482,74611,74740,74869,74998,75127,75128,75193,75194,75279,75364,75449,75451,75453,75455,75457,75459,75512,75514,75607,75709,75801]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_indicies"),self.$private("_lex_indicies","_lex_indicies=")}(Opal.get_singleton_class(self)),$send(self,"_lex_indicies=",$to_a($writer=[[1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,0,0,10,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,12,14,12,14,14,12,12,14,14,14,15,14,14,16,16,16,16,16,16,16,16,16,16,14,14,14,14,14,14,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,14,12,12,13,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,14,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,14,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,17,17,17,17,17,17,17,17,17,12,12,12,12,12,12,18,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,17,17,17,17,17,17,17,17,17,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,13,19,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,20,19,22,22,22,19,22,22,22,22,22,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,24,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,25,22,19,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,26,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,25,22,19,27,27,27,19,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,19,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,29,27,19,30,30,30,19,30,30,30,30,30,31,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,19,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,19,30,30,30,19,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,19,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,19,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,33,20,19,34,34,34,19,34,34,34,34,34,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,19,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,36,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,37,34,34,34,34,34,34,38,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,39,34,19,34,34,34,19,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,19,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,39,34,40,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,41,19,41,19,19,42,42,42,19,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,19,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,44,42,19,22,22,22,19,22,22,22,22,22,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,26,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,25,22,19,45,45,45,19,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,19,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,46,46,46,46,46,46,46,46,46,46,45,45,45,45,45,45,45,46,46,46,46,46,46,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,46,46,46,46,46,46,45,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,49,49,47,49,47,49,49,47,47,49,49,49,50,49,49,51,51,51,51,51,51,51,51,51,51,49,49,49,49,49,49,49,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,49,47,47,48,49,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,49,47,48,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,49,49,49,49,49,49,49,49,49,49,47,47,47,47,47,47,47,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,47,47,47,47,49,47,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,47,47,47,47,47,49,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,52,52,52,52,52,52,52,52,52,52,47,47,47,47,47,47,53,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,48,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,47,48,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,52,52,52,52,52,52,52,52,52,52,47,47,47,47,47,47,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,48,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,47,48,54,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,56,55,54,57,57,57,54,57,57,57,57,57,58,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,59,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,60,57,54,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,61,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,60,57,54,62,62,62,54,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,54,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,54,65,65,65,54,65,65,65,65,65,66,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,54,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,67,65,54,65,65,65,54,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,54,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,67,65,54,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,68,55,54,69,69,69,54,69,69,69,69,69,70,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,54,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,71,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,72,69,69,69,69,69,69,73,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,74,69,54,69,69,69,54,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,54,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,74,69,75,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,76,54,76,54,54,77,77,77,54,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,54,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,79,77,54,57,57,57,54,57,57,57,57,57,58,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,61,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,60,57,54,80,80,80,54,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,54,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,80,80,80,80,80,80,80,81,81,81,81,81,81,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,80,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,84,84,82,84,82,84,84,82,82,84,84,84,85,84,84,86,86,86,86,86,86,86,86,86,86,84,84,84,84,84,84,84,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,84,82,82,83,84,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,84,82,83,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,84,84,84,84,84,84,84,84,84,84,82,82,82,82,82,82,82,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,82,82,82,82,84,82,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,82,82,82,82,82,84,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,87,87,87,87,87,87,87,87,87,87,82,82,82,82,82,82,88,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,83,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,82,83,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,87,87,87,87,87,87,87,87,87,87,82,82,82,82,82,82,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,83,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,82,83,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,91,91,89,91,89,91,91,89,89,91,91,91,92,91,91,93,93,93,93,93,93,93,93,93,93,91,91,91,91,91,91,91,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,91,89,89,90,91,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,91,89,90,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,91,91,91,91,91,91,91,91,91,91,89,89,89,89,89,89,89,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,89,89,89,89,91,89,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,89,89,89,89,89,91,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,94,94,94,94,94,94,94,94,94,94,89,89,89,89,89,89,95,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,90,89,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,89,90,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,94,94,94,94,94,94,94,94,94,94,89,89,89,89,89,89,89,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,90,89,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,89,90,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,97,97,98,97,98,97,97,98,98,97,97,97,99,97,97,100,100,100,100,100,100,100,100,100,100,97,97,97,97,97,97,97,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,98,97,98,98,96,97,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,98,98,98,97,98,96,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,97,97,97,97,97,97,97,97,97,97,98,98,98,98,98,98,98,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,98,98,98,98,97,98,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,98,98,98,98,98,97,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,101,101,101,101,101,101,101,101,101,101,98,98,98,98,98,98,102,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,98,98,98,98,101,98,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,98,98,98,98,98,101,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,103,103,103,103,103,103,103,103,103,103,98,98,98,98,98,98,98,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,98,98,98,98,103,98,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,98,98,98,98,98,103,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,105,105,105,105,105,105,105,105,105,105,104,104,104,104,104,104,104,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,104,104,104,104,105,104,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,104,104,104,104,104,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,106,106,106,106,106,106,106,106,106,106,107,107,107,107,107,107,107,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,107,107,107,107,107,107,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,107,107,107,107,107,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,110,108,108,108,108,108,108,108,108,108,108,108,108,108,108,109,109,109,109,109,109,109,109,109,109,111,108,108,108,108,110,108,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,108,108,108,108,109,108,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,108,108,108,108,108,109,111,108,108,112,113,108,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,116,114,114,114,114,114,114,114,114,114,114,114,114,114,114,115,115,115,115,115,115,115,115,115,115,117,114,114,114,114,116,114,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,114,114,114,114,115,114,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,114,114,114,114,114,115,117,114,119,118,120,118,121,118,118,118,118,118,118,118,118,118,118,123,118,123,123,123,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,123,118,118,118,118,124,125,118,126,118,127,128,129,130,131,124,118,118,118,118,118,118,118,118,118,118,132,118,133,129,134,135,118,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,136,137,129,138,122,118,122,122,122,122,122,122,122,122,139,122,122,122,122,122,122,122,122,140,122,122,141,122,142,122,122,122,143,144,118,138,118,122,118,118,118,118,118,118,118,118,118,145,118,145,145,145,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,145,118,118,118,118,146,147,118,148,118,149,150,151,152,153,146,118,118,118,118,118,118,118,118,118,118,154,118,155,151,156,157,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,158,159,151,120,115,118,115,115,115,115,115,115,115,115,160,115,115,115,115,115,115,115,115,161,115,115,162,115,163,115,115,115,164,165,118,120,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,166,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,167,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,168,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,169,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,170,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,166,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,115,115,171,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,172,115,115,115,115,115,115,115,173,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,174,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,175,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,166,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,176,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,166,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,177,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,178,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,170,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,180,179,181,179,182,179,151,179,183,179,179,179,179,179,179,179,184,179,185,179,186,179,151,179,187,179,151,179,188,179,182,179,190,189,191,191,191,191,191,191,191,191,191,193,191,193,193,193,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,193,191,191,191,191,191,191,191,194,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,191,195,191,191,192,191,192,192,192,196,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,191,191,191,191,191,192,197,191,191,191,191,191,191,191,191,191,191,199,191,199,199,199,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,199,191,191,191,191,191,191,191,200,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,191,201,191,191,198,191,198,198,198,202,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,191,191,191,191,191,198,204,203,204,204,204,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,204,203,203,203,203,203,203,203,205,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,206,203,207,203,208,203,208,208,208,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,208,203,203,203,203,203,203,203,209,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,210,203,211,212,214,213,215,213,216,213,217,213,218,213,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,219,219,219,219,219,219,219,219,219,219,220,220,220,220,220,220,220,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,220,220,220,220,220,220,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,220,220,220,220,220,219,221,211,222,223,222,222,222,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,222,211,211,224,211,211,211,211,211,211,211,211,211,211,211,211,225,225,225,225,225,225,225,225,225,225,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,226,211,227,228,227,227,227,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,227,211,211,229,211,211,211,211,211,211,211,211,211,211,211,211,230,230,230,230,230,230,230,230,230,230,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,231,211,233,234,233,233,233,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,233,232,232,235,232,232,232,232,232,232,232,232,232,232,232,232,236,236,236,236,236,236,236,236,236,236,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,237,232,239,240,239,239,239,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,239,238,238,241,238,238,238,238,238,238,238,238,238,238,238,238,242,242,242,242,242,242,242,242,242,242,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,243,238,239,244,239,239,239,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,239,238,238,241,238,238,238,238,238,238,238,238,238,238,238,238,242,242,242,242,242,242,242,242,242,242,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,243,238,223,211,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,247,247,245,247,245,247,247,245,245,247,247,247,248,247,247,249,249,249,249,249,249,249,249,249,249,247,247,247,247,247,247,247,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,245,247,245,245,246,247,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,245,245,245,247,245,246,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,247,247,247,247,247,247,247,247,247,247,245,245,245,245,245,245,245,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,245,245,245,245,247,245,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,245,245,245,245,245,247,250,247,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,247,245,250,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,252,245,245,245,245,253,245,245,245,245,245,254,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,221,245,245,245,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,245,245,245,245,251,255,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,245,245,245,254,245,251,257,257,257,257,257,257,257,257,257,257,258,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,256,256,256,256,256,256,256,256,256,256,257,257,257,257,257,257,257,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,257,257,257,257,256,257,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,257,257,257,257,257,256,260,259,263,262,258,257,263,264,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,252,245,245,245,245,253,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,245,245,245,245,251,255,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,245,245,245,245,245,251,266,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,263,265,263,266,267,268,268,268,267,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,267,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,269,268,267,270,270,270,267,270,270,270,270,270,271,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,267,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,272,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,273,270,267,270,270,270,267,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,267,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,274,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,273,270,267,275,275,275,267,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,267,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,276,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,277,275,267,278,278,278,267,278,278,278,278,278,279,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,267,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,280,278,267,278,278,278,267,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,267,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,280,278,267,268,268,268,267,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,267,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,281,268,267,282,282,282,267,282,282,282,282,282,283,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,267,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,284,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,285,282,282,282,282,282,282,286,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,287,282,267,282,282,282,267,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,267,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,287,282,288,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,289,267,289,267,267,290,290,290,267,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,267,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,291,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,292,290,267,270,270,270,267,270,270,270,270,270,271,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,267,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,274,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,273,270,267,293,293,293,267,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,267,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,294,294,294,294,294,294,294,294,294,294,293,293,293,293,293,293,293,294,294,294,294,294,294,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,294,294,294,294,294,294,293,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,296,211,211,211,211,211,211,211,211,211,211,211,211,211,211,295,295,295,295,295,295,295,295,295,295,297,211,211,298,211,296,211,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,211,211,211,211,295,211,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,211,211,211,211,211,295,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,296,245,245,245,245,245,245,245,245,245,245,245,245,245,245,295,295,295,295,295,295,295,295,295,295,297,245,245,298,245,296,245,295,295,295,295,295,295,299,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,295,245,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,245,295,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,296,245,245,245,245,245,245,245,245,245,245,245,245,245,245,295,295,295,295,295,295,295,295,295,295,297,245,245,298,245,296,245,295,295,295,295,295,295,295,295,300,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,295,245,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,245,295,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,296,245,245,245,245,245,245,245,245,245,245,245,245,245,245,295,295,295,295,295,295,295,295,295,295,297,245,245,298,245,296,245,295,295,295,295,295,295,295,295,295,295,295,295,295,301,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,295,245,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,245,295,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,296,245,245,245,245,245,245,245,245,245,245,245,245,245,245,295,295,295,295,295,295,295,295,295,295,297,245,245,298,245,296,245,295,295,295,301,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,295,245,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,245,295,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,304,302,302,302,302,302,302,302,302,302,302,302,302,302,302,303,303,303,303,303,303,303,303,303,303,305,302,302,302,302,304,302,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,302,302,302,302,303,302,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,302,302,302,302,302,303,305,302,302,306,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,308,308,308,308,308,308,308,308,308,308,307,307,307,307,307,307,307,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,307,307,307,307,308,307,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,307,307,307,307,307,308,310,309,310,309,309,311,311,311,311,311,311,311,311,311,311,309,311,311,311,311,311,311,311,311,311,311,309,312,312,312,312,312,312,312,312,312,312,309,314,314,314,314,314,314,314,314,314,314,313,315,315,315,315,315,315,315,315,315,315,313,317,316,318,316,319,316,320,316,322,321,323,321,324,321,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,325,325,325,325,325,325,325,325,325,325,307,307,307,307,307,307,307,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,307,307,307,307,325,307,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,307,307,307,307,307,325,326,313,327,328,327,327,327,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,327,313,313,329,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,330,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,331,313,332,333,332,332,332,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,332,313,313,334,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,335,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,336,313,338,339,338,338,338,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,338,337,337,340,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,341,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,342,337,344,345,344,344,344,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,343,343,346,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,347,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,348,343,344,345,344,344,344,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,343,343,346,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,349,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,348,343,344,350,344,344,344,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,343,343,346,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,347,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,348,343,351,313,328,313,353,354,353,353,353,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,353,352,352,355,352,352,356,352,352,352,352,352,352,352,357,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,358,352,360,354,360,360,360,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,360,359,359,355,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,358,359,363,362,365,364,366,361,367,361,368,352,370,369,369,369,370,369,369,369,369,371,372,371,371,371,369,369,369,369,369,369,369,369,369,369,369,369,370,369,369,369,369,369,371,369,369,373,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,374,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,375,369,369,376,369,371,377,371,371,371,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,371,377,378,379,380,381,382,384,383,386,387,386,386,386,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,386,385,372,383,388,383,390,389,389,389,390,389,389,389,389,391,392,391,391,391,389,389,389,389,389,389,389,389,389,389,389,389,390,389,389,389,389,389,391,389,389,393,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,394,389,391,395,391,391,391,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,391,395,397,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,398,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,399,396,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,13,13,13,13,13,13,13,13,13,13,400,400,400,400,400,400,400,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,400,400,400,400,13,400,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,400,400,400,400,400,13,16,16,16,16,16,16,16,16,16,16,400,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,13,13,13,13,13,13,13,13,13,13,401,401,401,401,401,401,401,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,401,401,401,401,17,401,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,401,401,401,401,401,17,404,403,403,403,404,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,404,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,405,405,405,405,405,405,405,405,403,403,403,403,403,403,403,403,403,403,403,406,403,403,403,403,403,403,403,403,403,407,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,408,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,409,403,403,410,403,411,412,414,414,414,414,414,414,414,414,413,415,415,415,415,415,415,415,415,413,413,416,416,42,42,42,416,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,416,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,417,42,418,419,420,420,42,42,42,420,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,420,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,421,42,41,420,422,423,424,424,27,27,27,424,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,424,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,425,27,426,426,426,426,426,426,426,426,426,426,424,424,424,424,424,424,424,426,426,426,426,426,426,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,426,426,426,426,426,426,424,428,428,428,428,428,428,428,428,428,428,427,427,427,427,427,427,427,428,428,428,428,428,428,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,428,428,428,428,428,428,427,427,429,429,429,429,429,429,429,429,429,429,420,420,420,420,420,420,420,429,429,429,429,429,429,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,429,429,429,429,429,429,420,431,431,431,431,431,431,431,431,431,431,430,430,430,430,430,430,430,431,431,431,431,431,431,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,431,431,431,431,431,431,430,430,420,20,20,20,420,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,420,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,432,20,416,27,27,27,416,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,416,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,29,27,416,433,433,433,416,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,416,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,434,433,435,436,436,433,433,433,436,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,436,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,437,433,438,438,438,438,438,438,438,438,438,438,436,436,436,436,436,436,436,438,438,438,438,438,438,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,438,438,438,438,438,438,436,440,440,440,440,440,440,440,440,440,440,439,439,439,439,439,439,439,440,440,440,440,440,440,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,440,440,440,440,440,440,439,439,436,20,20,20,436,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,436,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,432,20,441,436,436,27,27,27,436,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,436,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,29,27,443,443,443,443,443,443,443,443,443,443,442,442,442,442,442,442,442,443,443,443,443,443,443,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,443,443,443,443,443,443,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,444,442,445,445,445,445,445,445,445,445,445,445,442,442,442,442,442,442,442,445,445,445,445,445,445,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,445,445,445,445,445,445,442,446,446,446,446,446,446,446,446,446,446,442,442,442,442,442,442,442,446,446,446,446,446,446,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,446,446,446,446,446,446,442,447,447,447,447,447,447,447,447,447,447,442,442,442,442,442,442,442,447,447,447,447,447,447,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,447,447,447,447,447,447,442,448,451,450,450,450,451,450,450,450,450,452,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,451,450,450,450,450,450,452,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,453,453,453,453,453,453,453,453,453,453,450,450,450,450,450,450,450,453,453,453,453,453,453,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,453,453,453,453,453,453,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,454,450,451,450,450,450,451,450,450,450,450,449,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,451,450,450,450,450,450,449,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,455,455,455,455,455,455,455,455,455,455,450,450,450,450,450,450,450,455,455,455,455,455,455,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,455,455,455,455,455,455,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,456,450,449,451,455,455,455,451,455,455,455,455,449,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,451,455,455,455,455,455,449,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,449,455,457,451,458,458,458,451,458,458,458,458,452,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,452,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,453,453,453,453,453,453,453,453,453,453,458,458,458,458,458,458,458,453,453,453,453,453,453,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,453,453,453,453,453,453,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,449,458,451,458,458,458,451,458,458,458,458,449,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,449,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,455,455,455,455,455,455,455,455,455,455,458,458,458,458,458,458,458,455,455,455,455,455,455,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,455,455,455,455,455,455,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,460,460,460,460,460,460,460,460,460,460,458,458,458,458,458,458,458,460,460,460,460,460,460,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,460,460,460,460,460,460,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,453,453,453,453,453,453,453,453,453,453,458,458,458,458,458,458,458,453,453,453,453,453,453,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,453,453,453,453,453,453,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,462,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,463,463,463,463,463,463,463,463,463,463,458,458,458,458,458,458,458,463,463,463,463,463,463,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,463,463,463,463,463,463,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,464,464,464,464,464,464,464,464,464,464,458,458,458,458,458,458,458,464,464,464,464,464,464,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,464,464,464,464,464,464,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,465,465,465,465,465,465,465,465,465,465,458,458,458,458,458,458,458,465,465,465,465,465,465,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,465,465,465,465,465,465,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,466,466,466,466,466,466,466,466,466,466,458,458,458,458,458,458,458,466,466,466,466,466,466,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,466,466,466,466,466,466,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,467,467,467,467,467,467,467,467,467,467,458,458,458,458,458,458,458,467,467,467,467,467,467,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,467,467,467,467,467,467,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,449,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,449,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,467,467,467,467,467,467,467,467,467,467,458,458,458,458,458,458,458,467,467,467,467,467,467,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,467,467,467,467,467,467,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,449,458,468,469,471,471,471,471,471,471,471,471,471,471,470,470,470,470,470,470,470,471,471,471,471,471,471,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,471,471,471,471,471,471,470,470,473,472,472,472,473,472,472,472,472,472,474,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,473,472,472,472,472,472,472,472,472,475,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,476,472,478,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,479,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,480,477,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,48,48,48,48,48,48,48,48,48,48,481,481,481,481,481,481,481,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,481,481,481,481,48,481,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,481,481,481,481,481,48,51,51,51,51,51,51,51,51,51,51,481,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,48,48,48,48,48,48,48,48,48,48,482,482,482,482,482,482,482,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,482,482,482,482,52,482,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,482,482,482,482,482,52,485,484,484,484,485,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,485,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,486,486,486,486,486,486,486,486,484,484,484,484,484,484,484,484,484,484,484,487,484,484,484,484,484,484,484,484,484,488,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,489,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,490,484,484,491,484,492,493,495,495,495,495,495,495,495,495,494,496,496,496,496,496,496,496,496,494,494,497,497,77,77,77,497,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,497,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,498,77,499,500,501,501,77,77,77,501,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,501,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,502,77,76,501,503,504,505,505,62,62,62,505,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,505,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,506,62,507,507,507,507,507,507,507,507,507,507,505,505,505,505,505,505,505,507,507,507,507,507,507,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,507,507,507,507,507,507,505,509,509,509,509,509,509,509,509,509,509,508,508,508,508,508,508,508,509,509,509,509,509,509,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,509,509,509,509,509,509,508,508,510,510,510,510,510,510,510,510,510,510,501,501,501,501,501,501,501,510,510,510,510,510,510,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,510,510,510,510,510,510,501,512,512,512,512,512,512,512,512,512,512,511,511,511,511,511,511,511,512,512,512,512,512,512,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,512,512,512,512,512,512,511,511,501,55,55,55,501,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,501,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,513,55,497,62,62,62,497,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,497,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,497,514,514,514,497,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,497,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,515,514,516,517,517,514,514,514,517,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,517,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,518,514,519,519,519,519,519,519,519,519,519,519,517,517,517,517,517,517,517,519,519,519,519,519,519,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,519,519,519,519,519,519,517,521,521,521,521,521,521,521,521,521,521,520,520,520,520,520,520,520,521,521,521,521,521,521,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,521,521,521,521,521,521,520,520,517,55,55,55,517,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,517,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,513,55,522,517,517,62,62,62,517,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,517,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,524,524,524,524,524,524,524,524,524,524,523,523,523,523,523,523,523,524,524,524,524,524,524,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,524,524,524,524,524,524,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,525,523,526,526,526,526,526,526,526,526,526,526,523,523,523,523,523,523,523,526,526,526,526,526,526,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,526,526,526,526,526,526,523,527,527,527,527,527,527,527,527,527,527,523,523,523,523,523,523,523,527,527,527,527,527,527,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,527,527,527,527,527,527,523,528,528,528,528,528,528,528,528,528,528,523,523,523,523,523,523,523,528,528,528,528,528,528,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,528,528,528,528,528,528,523,529,532,531,531,531,532,531,531,531,531,533,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,532,531,531,531,531,531,533,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,534,534,534,534,534,534,534,534,534,534,531,531,531,531,531,531,531,534,534,534,534,534,534,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,534,534,534,534,534,534,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,535,531,532,531,531,531,532,531,531,531,531,530,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,532,531,531,531,531,531,530,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,536,536,536,536,536,536,536,536,536,536,531,531,531,531,531,531,531,536,536,536,536,536,536,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,536,536,536,536,536,536,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,537,531,530,532,536,536,536,532,536,536,536,536,530,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,532,536,536,536,536,536,530,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,530,536,538,532,539,539,539,532,539,539,539,539,533,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,533,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,534,534,534,534,534,534,534,534,534,534,539,539,539,539,539,539,539,534,534,534,534,534,534,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,534,534,534,534,534,534,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,530,539,532,539,539,539,532,539,539,539,539,530,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,530,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,536,536,536,536,536,536,536,536,536,536,539,539,539,539,539,539,539,536,536,536,536,536,536,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,536,536,536,536,536,536,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,541,541,541,541,541,541,541,541,541,541,539,539,539,539,539,539,539,541,541,541,541,541,541,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,541,541,541,541,541,541,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,534,534,534,534,534,534,534,534,534,534,539,539,539,539,539,539,539,534,534,534,534,534,534,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,534,534,534,534,534,534,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,543,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,544,544,544,544,544,544,544,544,544,544,539,539,539,539,539,539,539,544,544,544,544,544,544,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,544,544,544,544,544,544,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,545,545,545,545,545,545,545,545,545,545,539,539,539,539,539,539,539,545,545,545,545,545,545,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,545,545,545,545,545,545,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,546,546,546,546,546,546,546,546,546,546,539,539,539,539,539,539,539,546,546,546,546,546,546,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,546,546,546,546,546,546,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,547,547,547,547,547,547,547,547,547,547,539,539,539,539,539,539,539,547,547,547,547,547,547,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,547,547,547,547,547,547,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,548,548,548,548,548,548,548,548,548,548,539,539,539,539,539,539,539,548,548,548,548,548,548,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,548,548,548,548,548,548,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,530,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,530,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,548,548,548,548,548,548,548,548,548,548,539,539,539,539,539,539,539,548,548,548,548,548,548,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,548,548,548,548,548,548,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,530,539,549,550,552,552,552,552,552,552,552,552,552,552,551,551,551,551,551,551,551,552,552,552,552,552,552,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,552,552,552,552,552,552,551,551,554,553,553,553,554,553,553,553,553,555,556,555,555,555,553,553,553,553,553,553,553,553,553,553,553,553,554,553,553,553,553,553,555,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,557,553,555,558,555,555,555,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,555,558,559,560,560,560,559,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,559,560,562,561,561,561,562,561,561,561,561,561,563,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,562,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,564,561,565,566,566,566,565,566,566,566,566,566,567,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,565,566,569,568,568,568,569,568,568,568,568,568,570,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,569,568,568,568,568,568,568,568,568,571,568,573,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,574,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,575,572,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,83,83,83,83,83,83,83,83,83,83,576,576,576,576,576,576,576,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,576,576,576,576,83,576,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,576,576,576,576,576,83,86,86,86,86,86,86,86,86,86,86,576,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,83,83,83,83,83,83,83,83,83,83,577,577,577,577,577,577,577,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,577,577,577,577,87,577,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,577,577,577,577,577,87,579,578,578,578,579,578,578,578,578,578,580,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,579,578,582,581,581,581,582,581,581,581,581,583,584,583,583,583,581,581,581,581,581,581,581,581,581,581,581,581,582,581,581,581,581,581,583,581,581,585,581,583,586,583,583,583,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,583,586,588,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,589,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,590,587,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,90,90,90,90,90,90,90,90,90,90,591,591,591,591,591,591,591,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,591,591,591,591,90,591,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,591,591,591,591,591,90,93,93,93,93,93,93,93,93,93,93,591,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,90,90,90,90,90,90,90,90,90,90,592,592,592,592,592,592,592,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,592,592,592,592,94,592,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,592,592,592,592,592,94,594,593,593,593,594,593,593,593,593,595,596,595,595,595,593,593,593,593,593,593,593,593,593,593,593,593,594,593,593,593,593,593,595,593,595,597,595,595,595,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,595,597,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,598,598,598,598,598,598,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,598,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,600,600,600,600,600,600,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,600,601,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,602,98,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,96,96,96,96,96,96,96,96,96,96,603,603,603,603,603,603,603,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,603,603,603,603,96,603,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,603,603,603,603,603,96,100,100,100,100,100,100,100,100,100,100,603,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,101,101,101,101,101,101,101,101,101,101,604,604,604,604,604,604,604,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,604,604,604,604,101,604,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,604,604,604,604,604,101,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,103,103,103,103,103,103,103,103,103,103,605,605,605,605,605,605,605,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,605,605,605,605,103,605,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,605,605,605,605,605,103,607,608,608,608,607,608,608,608,608,609,610,609,609,609,608,608,608,608,608,608,608,608,608,608,608,608,607,608,608,608,608,608,609,611,608,612,613,614,615,608,608,608,616,617,608,617,608,618,608,608,608,608,608,608,608,608,608,608,619,608,620,621,622,608,608,623,624,623,623,625,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,626,627,608,618,628,618,629,630,631,632,633,634,606,606,635,606,606,606,636,637,638,606,606,639,640,641,642,606,643,606,644,606,608,645,608,617,608,606,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,647,646,646,646,646,646,646,646,646,646,646,646,646,646,646,606,606,606,606,606,606,606,606,606,606,646,646,646,647,646,647,646,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,646,646,646,646,606,646,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,646,646,646,646,646,606,609,648,609,609,609,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,609,648,649,618,650,650,618,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,618,650,651,652,653,654,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,105,105,655,105,655,105,105,655,655,105,105,105,657,105,105,658,658,658,658,658,658,658,658,658,658,105,105,105,105,105,105,105,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,655,105,655,655,656,105,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,655,655,655,105,655,656,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,656,656,656,656,656,656,656,656,656,656,659,659,659,659,659,659,659,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,659,659,659,659,656,659,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,659,659,659,659,659,656,658,658,658,658,658,658,658,658,658,658,659,660,650,618,650,618,650,618,650,662,661,618,663,650,618,650,664,618,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,618,655,618,650,618,618,650,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,647,646,646,646,646,646,646,646,646,646,646,646,646,646,646,623,623,623,623,623,623,623,623,623,623,646,646,646,647,646,647,646,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,646,646,646,646,623,646,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,646,646,646,646,646,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,623,666,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,623,623,623,667,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,623,623,623,623,623,668,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,623,623,623,623,623,623,623,623,623,623,669,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,623,623,623,623,623,623,623,623,623,623,670,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,669,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,664,655,610,655,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,672,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,673,674,606,606,606,606,606,675,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,676,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,677,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,678,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,679,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,680,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,681,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,682,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,683,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,684,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,685,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,686,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,682,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,687,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,686,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,688,606,689,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,690,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,691,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,692,606,606,606,606,606,606,606,606,606,606,606,606,693,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,694,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,695,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,696,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,697,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,698,606,606,606,606,606,606,606,606,606,606,699,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,700,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,701,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,691,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,702,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,703,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,647,704,704,704,704,704,704,704,704,704,704,704,704,704,704,606,606,606,606,606,606,606,606,606,606,704,704,704,647,704,647,704,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,704,704,704,704,606,704,606,606,606,606,606,606,606,606,705,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,704,704,704,704,704,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,706,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,707,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,708,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,709,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,710,606,711,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,712,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,684,606,606,606,713,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,714,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,715,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,700,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,716,606,606,606,606,606,606,606,606,606,606,606,606,606,638,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,698,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,684,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,717,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,718,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,719,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,700,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,720,606,606,606,721,606,606,606,606,606,722,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,722,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,723,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,724,606,606,606,606,606,606,606,606,606,606,606,606,606,606,725,726,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,727,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,700,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,728,606,606,729,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,695,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,730,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,731,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,713,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,732,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,638,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,733,606,606,606,606,606,606,606,606,606,727,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,695,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,734,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,735,606,606,606,606,606,606,606,736,606,606,606,606,606,606,606,737,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,713,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,701,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,721,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,738,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,695,606,606,606,719,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,739,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,740,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,689,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,618,650,742,743,743,743,742,743,743,743,743,744,743,744,744,744,743,743,743,743,743,743,743,743,743,743,743,743,742,743,743,743,743,743,744,743,743,745,743,743,743,743,743,743,743,743,743,743,746,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,743,747,743,743,741,743,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,743,743,743,743,743,741,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,110,748,748,748,748,748,748,748,748,748,748,748,748,748,748,109,109,109,109,109,109,109,109,109,109,111,748,748,748,748,110,748,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,748,748,748,748,109,748,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,748,748,748,748,748,109,744,749,744,744,744,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,744,749,750,751,752,753,754,748,755,748,756,758,759,759,759,758,759,759,759,759,760,761,760,760,760,759,759,759,759,759,759,759,759,759,759,759,759,758,759,759,759,759,759,760,762,759,763,759,764,765,759,759,759,766,767,759,767,759,764,759,759,759,759,759,759,759,759,759,759,759,759,768,769,770,759,759,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,772,773,759,764,757,764,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,759,774,759,767,759,757,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,776,775,775,775,775,775,775,775,775,775,775,775,775,775,775,757,757,757,757,757,757,757,757,757,757,775,775,775,775,775,776,775,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,775,775,775,775,757,775,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,775,775,775,775,775,757,778,777,779,760,780,760,760,760,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,760,780,781,764,782,782,764,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,764,782,783,784,785,786,764,782,764,782,764,782,764,787,782,764,782,789,764,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,764,788,764,782,764,764,782,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,776,790,790,790,790,790,790,790,790,790,790,790,790,790,790,771,771,771,771,771,771,771,771,771,771,790,790,790,790,790,776,790,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,790,790,790,790,771,790,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,790,790,790,790,790,771,789,788,761,788,764,782,792,791,791,791,792,791,791,791,791,793,794,793,793,793,791,791,791,791,791,791,791,791,791,791,791,791,792,791,791,791,791,791,793,791,791,795,791,120,796,791,797,791,798,120,151,799,153,120,791,791,791,791,791,791,791,791,791,791,800,791,801,151,802,803,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,151,804,151,120,791,791,791,791,791,791,791,791,791,791,805,791,791,791,791,791,791,791,791,806,791,791,807,791,808,791,791,791,164,165,791,120,791,809,809,809,809,809,809,809,809,809,793,809,793,793,793,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,793,809,809,809,809,146,147,809,148,809,149,150,151,152,153,146,809,809,809,809,809,809,809,809,809,809,154,809,155,151,156,157,809,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,158,159,151,120,115,809,115,115,115,115,115,115,115,115,160,115,115,115,115,115,115,115,115,161,115,115,162,115,163,115,115,115,164,165,809,120,809,115,810,811,811,811,810,811,811,811,811,151,812,151,151,151,811,811,811,811,811,811,811,811,811,811,811,811,810,811,811,811,811,811,151,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,151,811,151,812,151,151,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,114,114,114,114,114,120,114,114,114,114,114,114,114,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,114,151,812,151,151,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,114,813,151,812,151,151,151,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,151,814,814,814,814,814,814,814,814,814,815,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,151,814,151,812,151,151,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,151,114,816,810,151,810,818,817,820,821,820,820,820,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,820,819,822,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,116,810,810,810,810,810,810,810,810,810,810,810,810,810,810,115,115,115,115,115,115,115,115,115,115,117,810,810,810,810,116,810,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,810,810,810,810,115,810,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,810,810,810,810,810,115,823,151,812,151,151,151,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,151,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,151,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,120,810,824,825,826,827,828,829,151,812,151,151,151,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,151,810,810,810,810,810,810,810,810,810,120,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,151,810,151,817,120,830,120,830,831,832,831,831,831,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,831,819,833,830,834,834,834,834,834,834,834,834,834,123,834,123,123,123,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,123,834,834,834,834,124,125,834,126,834,127,128,129,130,131,124,834,834,834,834,834,834,834,834,834,834,132,834,133,129,134,135,834,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,136,137,129,138,122,834,122,122,122,122,122,122,122,122,139,122,122,122,122,122,122,122,122,140,122,122,141,122,142,122,122,122,143,144,834,138,834,122,151,830,835,830,836,830,837,830,838,190,190,190,838,190,190,190,190,839,190,839,839,839,190,190,190,190,190,190,190,190,190,190,190,190,838,190,190,190,190,190,839,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,190,840,190,190,192,190,192,192,192,196,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,190,190,190,190,190,192,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,841,189,189,189,189,189,189,189,189,189,189,189,189,189,189,192,192,192,192,192,192,192,192,192,192,190,189,189,189,189,841,189,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,189,189,189,189,192,189,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,189,189,189,189,189,192,842,842,842,842,842,842,842,842,842,193,842,193,193,193,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,193,842,842,842,842,842,842,842,194,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,842,195,842,842,192,842,192,192,192,196,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,842,842,842,842,842,192,843,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,841,842,842,842,842,842,842,842,842,842,842,842,842,842,842,192,192,192,192,192,192,192,192,192,192,190,842,842,842,842,841,842,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,842,842,842,842,192,842,192,192,192,192,192,192,192,192,192,192,192,192,192,192,844,192,192,192,192,192,192,192,192,192,192,192,842,842,842,842,842,192,197,842,846,845,845,845,846,845,845,845,845,847,845,847,847,847,845,845,845,845,845,845,845,845,845,845,845,845,846,845,845,845,845,845,847,845,845,848,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,849,845,845,845,845,845,845,845,850,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,851,845,847,852,847,847,847,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,847,852,853,854,855,856,858,857,859,860,857,861,863,864,864,864,863,864,864,864,864,865,866,865,865,865,864,864,864,864,864,864,864,864,864,864,864,864,863,864,864,864,864,864,865,864,864,867,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,864,868,864,864,862,864,862,862,862,862,862,862,862,862,869,862,862,862,862,862,862,862,862,870,862,862,871,862,872,862,862,862,864,864,864,864,864,862,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,862,862,862,862,862,862,862,862,862,862,873,873,873,873,873,873,873,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,873,873,873,873,862,873,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,873,873,873,873,873,862,865,874,865,865,865,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,865,874,875,876,877,878,879,881,880,882,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,884,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,885,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,886,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,887,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,888,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,884,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,862,862,889,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,890,862,862,862,862,862,862,862,891,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,892,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,893,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,884,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,894,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,884,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,895,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,896,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,888,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,898,221,221,221,898,221,221,221,221,899,900,899,899,899,221,221,221,221,221,221,221,221,221,221,221,221,898,221,221,221,221,221,899,901,221,902,221,903,904,221,905,221,906,907,221,908,909,910,221,221,221,221,221,221,221,221,221,221,911,221,912,913,914,915,221,916,917,916,916,918,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,919,920,221,921,922,221,923,924,925,926,927,928,897,897,929,897,897,897,930,931,932,897,897,933,934,935,936,897,937,897,938,897,939,940,221,921,221,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,945,944,944,946,944,947,949,950,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,951,948,953,952,954,955,956,899,957,899,899,899,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,899,957,959,958,961,962,961,961,961,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,961,960,221,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,221,963,964,965,966,967,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,968,968,968,968,968,968,968,968,968,968,969,969,969,969,969,969,969,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,969,969,969,969,969,969,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,969,969,969,969,969,968,972,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,221,971,973,975,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,221,974,221,211,222,223,222,222,222,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,222,971,971,224,971,971,971,971,971,971,971,971,971,971,971,971,225,225,225,225,225,225,225,225,225,225,971,971,971,221,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,226,971,239,240,239,239,239,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,239,238,238,241,238,238,238,238,238,238,238,238,238,238,238,238,242,242,242,242,242,242,242,242,242,242,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,243,238,222,223,222,222,222,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,222,971,971,224,971,971,971,971,971,971,971,971,971,971,971,971,225,225,225,225,225,225,225,225,225,225,971,971,971,221,221,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,226,971,977,963,979,978,981,980,963,982,982,982,963,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,963,982,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,984,985,963,986,247,987,985,963,963,988,989,963,989,963,247,963,963,963,963,963,963,963,963,963,963,990,963,991,992,993,963,994,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,995,963,963,247,983,247,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,963,996,963,997,963,983,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,999,998,998,998,998,998,998,998,998,998,998,998,998,998,998,983,983,983,983,983,983,983,983,983,983,998,998,998,1e3,998,999,998,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,998,998,998,998,983,998,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,998,998,998,998,998,983,1002,1001,1003,1005,1006,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1007,1004,1009,1010,1008,1011,1012,1013,1014,247,998,998,1015,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,247,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,246,246,246,246,246,246,246,246,246,246,998,998,998,998,998,998,998,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,998,998,998,998,246,998,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,998,998,998,998,998,246,249,249,249,249,249,249,249,249,249,249,998,1016,998,247,998,247,998,247,1017,998,247,998,247,998,247,247,998,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1018,1018,1018,1018,1018,1018,1021,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1018,1018,1018,1018,1019,1018,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1018,1018,1018,1018,1018,1019,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1022,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1024,1024,1024,1024,1024,1024,1024,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1024,1024,1024,1024,1025,1024,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1024,1024,1024,1024,1024,1025,1016,998,1015,998,1027,1028,963,1029,262,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,263,252,264,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,263,253,263,266,221,963,921,221,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,221,963,221,972,963,1033,1032,1032,1032,1033,1032,1032,1032,1032,1034,1035,1034,1034,1034,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1033,1032,1032,1032,1032,1032,1034,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1032,1037,1032,1032,1036,1032,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1032,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1038,1038,1038,1038,1039,1038,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1038,1038,1038,1038,1038,1039,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1040,1040,1040,1040,1040,1040,1040,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1040,1040,1040,1040,1041,1040,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1040,1040,1040,1040,1040,1041,1044,1043,1043,1043,1044,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1044,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1045,1045,1045,1045,1045,1045,1045,1045,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1046,1043,1043,1043,1043,1043,1043,1043,1043,1043,1047,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1048,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1049,1043,1043,1050,1043,1051,1052,1054,1054,1054,1054,1054,1054,1054,1054,1053,1055,1055,1055,1055,1055,1055,1055,1055,1053,1053,1056,1056,290,290,290,1056,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,1056,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,291,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,1057,290,1058,1059,1060,1060,290,290,290,1060,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,1060,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,291,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,1061,290,289,1060,1062,1063,1064,1064,275,275,275,1064,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,1064,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,276,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,1065,275,1066,1066,1066,1066,1066,1066,1066,1066,1066,1066,1064,1064,1064,1064,1064,1064,1064,1066,1066,1066,1066,1066,1066,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1066,1066,1066,1066,1066,1066,1064,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1067,1067,1067,1067,1067,1067,1067,1068,1068,1068,1068,1068,1068,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1068,1068,1068,1068,1068,1068,1067,1067,1069,1069,1069,1069,1069,1069,1069,1069,1069,1069,1060,1060,1060,1060,1060,1060,1060,1069,1069,1069,1069,1069,1069,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1069,1069,1069,1069,1069,1069,1060,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1070,1070,1070,1070,1070,1070,1070,1071,1071,1071,1071,1071,1071,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1071,1071,1071,1071,1071,1071,1070,1070,1060,268,268,268,1060,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1060,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1072,268,1056,275,275,275,1056,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,1056,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,276,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,277,275,1056,1073,1073,1073,1056,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1056,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1074,1073,1075,1076,1076,1073,1073,1073,1076,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1076,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1077,1073,1078,1078,1078,1078,1078,1078,1078,1078,1078,1078,1076,1076,1076,1076,1076,1076,1076,1078,1078,1078,1078,1078,1078,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1078,1078,1078,1078,1078,1078,1076,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1079,1079,1079,1079,1079,1079,1079,1080,1080,1080,1080,1080,1080,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1080,1080,1080,1080,1080,1080,1079,1079,1076,268,268,268,1076,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1076,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1072,268,1081,1076,1076,275,275,275,1076,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,1076,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,276,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,277,275,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1082,1082,1082,1082,1082,1082,1082,1083,1083,1083,1083,1083,1083,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1083,1083,1083,1083,1083,1083,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1084,1082,1085,1085,1085,1085,1085,1085,1085,1085,1085,1085,1082,1082,1082,1082,1082,1082,1082,1085,1085,1085,1085,1085,1085,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1085,1085,1085,1085,1085,1085,1082,1086,1086,1086,1086,1086,1086,1086,1086,1086,1086,1082,1082,1082,1082,1082,1082,1082,1086,1086,1086,1086,1086,1086,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1086,1086,1086,1086,1086,1086,1082,1087,1087,1087,1087,1087,1087,1087,1087,1087,1087,1082,1082,1082,1082,1082,1082,1082,1087,1087,1087,1087,1087,1087,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1087,1087,1087,1087,1087,1087,1082,1088,1091,1090,1090,1090,1091,1090,1090,1090,1090,1092,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1091,1090,1090,1090,1090,1090,1092,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1093,1093,1093,1093,1093,1093,1093,1093,1093,1093,1090,1090,1090,1090,1090,1090,1090,1093,1093,1093,1093,1093,1093,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1093,1093,1093,1093,1093,1093,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1094,1090,1091,1090,1090,1090,1091,1090,1090,1090,1090,1089,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1091,1090,1090,1090,1090,1090,1089,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1090,1090,1090,1090,1090,1090,1090,1095,1095,1095,1095,1095,1095,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1095,1095,1095,1095,1095,1095,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1096,1090,1089,1091,1095,1095,1095,1091,1095,1095,1095,1095,1089,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1091,1095,1095,1095,1095,1095,1089,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1089,1095,1097,1091,1098,1098,1098,1091,1098,1098,1098,1098,1092,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1092,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1089,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1089,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1098,1098,1098,1098,1098,1098,1098,1095,1095,1095,1095,1095,1095,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1095,1095,1095,1095,1095,1095,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1098,1098,1098,1098,1098,1098,1098,1101,1101,1101,1101,1101,1101,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1101,1101,1101,1101,1101,1101,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1103,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1098,1098,1098,1098,1098,1098,1098,1104,1104,1104,1104,1104,1104,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1104,1104,1104,1104,1104,1104,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1105,1105,1105,1105,1105,1105,1105,1105,1105,1105,1098,1098,1098,1098,1098,1098,1098,1105,1105,1105,1105,1105,1105,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1105,1105,1105,1105,1105,1105,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1106,1106,1106,1106,1106,1106,1106,1106,1106,1106,1098,1098,1098,1098,1098,1098,1098,1106,1106,1106,1106,1106,1106,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1106,1106,1106,1106,1106,1106,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1098,1098,1098,1098,1098,1098,1098,1107,1107,1107,1107,1107,1107,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1107,1107,1107,1107,1107,1107,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1089,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1089,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1110,1110,1110,1110,1110,1110,1110,1110,1110,1110,1098,1098,1098,1098,1098,1098,1098,1110,1110,1110,1110,1110,1110,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1110,1110,1110,1110,1110,1110,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1111,1111,1111,1111,1111,1111,1111,1111,1111,1111,1098,1098,1098,1098,1098,1098,1098,1111,1111,1111,1111,1111,1111,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1111,1111,1111,1111,1111,1111,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1112,1112,1112,1112,1112,1112,1112,1112,1112,1112,1098,1098,1098,1098,1098,1098,1098,1112,1112,1112,1112,1112,1112,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1112,1112,1112,1112,1112,1112,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1098,1098,1098,1098,1098,1098,1098,1113,1113,1113,1113,1113,1113,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1113,1113,1113,1113,1113,1113,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1114,1114,1114,1114,1114,1114,1114,1114,1114,1114,1098,1098,1098,1098,1098,1098,1098,1114,1114,1114,1114,1114,1114,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1114,1114,1114,1114,1114,1114,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1115,1115,1115,1115,1115,1115,1115,1115,1115,1115,1098,1098,1098,1098,1098,1098,1098,1115,1115,1115,1115,1115,1115,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1115,1115,1115,1115,1115,1115,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1098,1098,1098,1098,1098,1098,1098,1116,1116,1116,1116,1116,1116,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1116,1116,1116,1116,1116,1116,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1098,1098,1098,1098,1098,1098,1098,1117,1117,1117,1117,1117,1117,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1117,1117,1117,1117,1117,1117,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1098,1098,1098,1098,1098,1098,1098,1118,1118,1118,1118,1118,1118,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1118,1118,1118,1118,1118,1118,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1119,1119,1119,1119,1119,1119,1119,1119,1119,1119,1098,1098,1098,1098,1098,1098,1098,1119,1119,1119,1119,1119,1119,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1119,1119,1119,1119,1119,1119,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1120,1120,1120,1120,1120,1120,1120,1120,1120,1120,1098,1098,1098,1098,1098,1098,1098,1120,1120,1120,1120,1120,1120,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1120,1120,1120,1120,1120,1120,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1121,1122,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1123,1123,1123,1123,1123,1123,1123,1124,1124,1124,1124,1124,1124,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1124,1124,1124,1124,1124,1124,1123,1123,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,296,211,211,211,211,211,211,211,211,211,211,211,211,211,211,295,295,295,295,295,295,295,295,295,295,297,211,211,298,211,296,211,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,211,211,211,211,295,211,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,211,211,211,211,211,295,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,296,963,963,963,963,963,963,963,963,963,963,963,963,963,963,295,295,295,295,295,295,295,295,295,295,297,963,963,298,963,296,963,295,295,295,295,1125,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,963,963,963,963,295,963,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,963,963,963,963,963,295,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,296,963,963,963,963,963,963,963,963,963,963,963,963,963,963,295,295,295,295,295,295,295,295,295,295,297,963,963,298,963,296,963,295,295,295,295,295,295,295,295,295,295,295,295,295,1126,295,295,295,295,295,295,295,295,295,295,295,295,963,963,963,963,295,963,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,963,963,963,963,963,295,1127,1128,963,958,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,1129,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,1130,1131,897,897,897,897,897,1132,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,1133,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,1134,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1135,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,1136,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,1137,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,1138,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,1139,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,1140,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,1141,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,296,211,211,211,211,211,211,211,211,211,211,211,211,211,211,897,897,897,897,897,897,897,897,897,897,297,211,211,298,211,296,211,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,211,211,211,211,897,211,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,211,211,211,211,211,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,1142,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,1143,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,1139,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,1144,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,1143,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1145,897,1146,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,1147,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,1148,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1149,897,897,897,897,897,897,897,897,897,897,897,897,1150,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,1151,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,1152,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1153,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,1154,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,1155,897,897,897,897,897,897,897,897,897,897,1156,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1157,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,1158,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1148,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1159,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1160,897,1161,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1162,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1141,897,897,897,1159,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1163,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1164,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1157,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,1165,897,897,897,897,897,897,897,897,897,897,897,897,897,932,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1155,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,1166,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1167,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,1168,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1169,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1157,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1170,897,897,897,1171,897,897,897,897,897,1172,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1172,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1173,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,1174,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1175,1176,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,1177,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1178,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1179,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1182,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1183,1180,1180,1184,1180,1182,1180,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1180,1180,1180,1180,1181,1180,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1180,1180,1180,1180,1180,1181,949,1185,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,951,948,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1186,897,897,1187,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1152,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1188,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1189,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1159,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1190,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,932,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,1191,897,897,897,897,897,897,897,897,897,1192,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1152,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1157,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,1193,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,1194,897,897,897,897,897,897,897,1195,897,897,897,897,897,897,897,1196,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1159,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1197,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1198,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1166,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,1199,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1166,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,1200,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1152,897,897,897,1201,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1202,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1166,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,1203,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1204,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1146,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,1205,221,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,1206,963,1208,1207,1207,1207,1208,1207,1207,1207,1207,1209,1210,1209,1209,1209,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1208,1207,1207,1207,1207,1207,1209,1207,1207,1211,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1212,1207,1209,1213,1209,1209,1209,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1209,1213,1214,1215,1216,1217,1218,1220,1219,1221,1223,1224,1224,1224,1223,1224,1224,1224,1224,1225,1226,1225,1225,1225,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1223,1224,1224,1224,1224,1224,1225,1224,1227,1228,1224,1224,1224,1227,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1224,1229,1224,1224,1222,1224,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1224,1224,1224,1224,1224,1222,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,304,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,303,303,303,303,303,303,303,303,303,303,305,1230,1230,1230,1230,304,1230,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,1230,1230,1230,1230,303,1230,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,1230,1230,1230,1230,1230,303,1225,1231,1225,1225,1225,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1225,1231,1232,1233,1234,1235,1236,1237,1230,1238,1240,1241,1241,1241,1240,1241,1241,1241,1241,1242,1243,1242,1242,1242,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1240,1241,1241,1241,1241,1241,1242,1244,1245,1246,1247,1248,1249,1245,1250,1251,1252,1248,1253,1254,1255,1248,1256,1257,1257,1257,1257,1257,1257,1257,1257,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1265,1265,1267,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1268,1269,1270,1248,1271,1245,1272,1273,1274,1275,1276,1277,1239,1239,1278,1239,1239,1239,1279,1280,1281,1239,1239,1282,1283,1284,1285,1239,1286,1239,1287,1239,1288,1289,1290,1291,1241,1239,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,1292,313,313,313,313,313,313,313,313,313,313,313,313,313,313,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,313,313,313,313,313,1292,313,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,313,313,313,313,1239,313,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,313,313,313,313,313,1239,1294,1293,1295,1242,1296,1242,1242,1242,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1242,1296,1297,1299,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1299,1298,1300,1301,1302,1303,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,308,308,1304,308,1304,308,308,1304,1304,308,308,308,1305,308,308,1306,1306,1306,1306,1306,1306,1306,1306,1306,1306,308,308,308,308,308,308,308,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1304,308,1304,1304,325,308,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1304,1304,1304,308,1304,325,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,325,325,325,325,325,325,325,325,325,325,1307,1307,1307,1307,1307,1307,1307,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1307,1307,1307,1307,325,1307,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1307,1307,1307,1307,1307,325,1306,1306,1306,1306,1306,1306,1306,1306,1306,1306,1307,1308,313,1248,1309,1309,1309,1309,1309,1309,1309,1310,1309,1309,1309,1309,1309,1309,1309,1309,1309,1309,1309,1309,1309,1309,1308,1309,1311,1312,1248,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1308,1313,1308,1314,1309,1316,1315,312,312,312,312,312,312,312,312,312,312,1315,1318,1317,1319,1317,312,312,312,312,312,312,312,312,312,312,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1321,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1322,1320,1320,1320,1320,1320,1321,1320,311,311,311,311,311,311,311,311,311,311,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,310,1320,1324,1323,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1323,1323,1323,1323,1323,1323,1323,1323,1326,1323,1327,1328,1323,1323,1323,1323,1323,1323,1323,1323,1323,1329,1323,1323,1323,1323,1323,1323,1323,1323,1330,1323,1323,1323,1323,1323,1323,1331,1323,1323,1326,1323,1327,1328,1323,1323,1323,1332,1323,1323,1323,1323,1323,1329,1323,1323,1333,1323,1323,1323,1323,1323,1330,1323,314,314,314,314,314,314,314,314,314,314,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1335,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1336,1334,1334,1334,1334,1334,1335,1334,1334,1334,1337,1334,1334,1334,1334,1334,1334,1334,1334,1338,1334,1339,313,1339,313,313,315,315,315,315,315,315,315,315,315,315,313,315,315,315,315,315,315,315,315,315,315,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1339,1340,1340,1340,1340,1340,1340,1340,1340,1340,1341,1340,1343,1342,1344,1346,1345,1345,1345,1347,1345,1348,1349,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1331,1323,1323,1323,1323,1323,1323,1323,1323,1323,1332,1323,1323,1323,1323,1323,1323,1323,1323,1333,1323,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1351,1323,1323,1323,1323,1323,1323,1323,1323,1323,1332,1323,1323,1323,1323,1323,1323,1323,1323,1333,1323,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1354,1352,1352,1352,1352,1352,1352,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1357,1352,1352,1352,1352,1352,1352,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1359,1358,1360,1362,1361,1361,1361,1363,1361,1365,1364,1366,1367,1369,1369,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1370,1368,1368,1368,1368,1368,1368,1368,1368,1368,1371,1368,1368,1368,1368,1368,1368,1368,1368,1372,1368,1373,1373,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1374,1352,1352,1352,1352,1352,1352,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1373,1373,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1357,1352,1352,1352,1352,1352,1352,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1377,1375,1375,1375,1375,1375,1375,1375,1375,1375,1378,1375,1375,1375,1375,1375,1375,1375,1375,1379,1375,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1382,1380,1380,1380,1380,1380,1380,1380,1380,1380,1383,1380,1380,1380,1380,1380,1380,1380,1380,1384,1380,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1385,1385,1385,1385,1385,1385,1385,1386,1386,1386,1386,1386,1386,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1387,1385,1386,1386,1386,1386,1386,1386,1385,1385,1388,1385,1385,1385,1385,1385,1385,1385,1385,1389,1385,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1352,1352,1352,1352,1352,1352,1352,1390,1390,1390,1390,1390,1390,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1391,1352,1390,1390,1390,1390,1390,1390,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1352,1352,1352,1352,1352,1352,1352,1390,1390,1390,1390,1390,1390,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1357,1352,1390,1390,1390,1390,1390,1390,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1393,1392,1394,1394,1394,1394,1394,1394,1394,1394,1394,1394,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1395,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1396,1392,1392,1392,1392,1392,1395,1392,1392,1392,1397,1392,1392,1392,1392,1392,1392,1392,1392,1398,1392,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1400,1392,1392,1392,1392,1392,1392,1392,1392,1392,1397,1392,1392,1392,1392,1392,1392,1392,1392,1398,1392,1401,1352,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1403,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1404,1352,1352,1352,1352,1352,1403,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1357,1352,1352,1352,1352,1352,1352,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1310,1317,1248,1405,1309,1299,1309,1406,1407,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1299,1317,1299,1309,1299,1248,1309,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,325,325,325,325,325,325,325,325,325,325,1304,1304,1304,1304,1304,1304,1408,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1304,1304,1304,1304,325,1304,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1304,1304,1304,1304,1304,325,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,1292,313,313,313,313,313,313,313,313,313,313,313,313,313,313,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,313,313,313,313,1292,313,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,313,313,313,313,1265,313,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,313,313,313,313,313,1265,1410,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1265,1412,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1265,1265,1265,1413,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1265,1265,1265,1265,1265,1414,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1415,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1416,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1415,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1417,1419,1418,1420,1421,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1423,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1424,1425,1239,1239,1239,1239,1239,1426,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1427,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1428,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1429,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1430,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1431,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1432,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1433,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1434,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1435,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1436,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1437,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1438,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1439,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1440,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1441,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1437,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1442,1239,1443,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1444,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1445,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1446,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1448,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1449,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1450,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1451,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1452,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1453,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1454,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1455,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1456,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1457,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1458,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1459,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1460,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1461,1461,1461,1461,1461,1461,1461,1461,1461,327,328,327,327,327,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,327,1292,1461,329,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1461,1461,330,1461,1461,1292,1461,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1461,331,1461,1461,1239,1461,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1461,1461,1461,1461,1461,1239,344,345,344,344,344,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,343,343,346,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,349,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,348,343,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1463,1239,1239,1239,1239,1239,1239,1239,1239,1239,1464,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1465,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1292,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1466,1466,1466,1466,1466,1292,1466,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1466,1466,1466,1466,1239,1466,1239,1239,1239,1239,1239,1239,1239,1239,1467,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1466,1466,1466,1466,1466,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1468,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1469,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1470,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1471,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1472,1239,1473,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1474,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1447,1239,1239,1239,1475,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1440,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1476,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1477,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1457,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1478,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1281,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1479,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1480,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1440,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1481,1239,1239,1239,1239,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1482,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1483,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1484,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1457,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1485,1239,1239,1239,1486,1239,1239,1239,1239,1239,1487,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1488,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1454,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1440,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1489,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1490,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1491,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1492,1493,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1440,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1494,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1495,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1481,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1496,1239,1239,1497,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1440,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1498,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1454,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1499,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1500,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1501,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1440,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1502,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1503,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1489,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1504,1239,1239,1239,1239,1239,1239,1239,1239,1239,1505,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1451,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1480,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1506,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1507,1239,1239,1239,1239,1239,1239,1239,1508,1239,1239,1239,1239,1239,1239,1239,1509,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1510,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1446,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1511,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1512,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1481,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1513,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1481,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1514,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1451,1239,1239,1239,1515,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1516,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1481,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1517,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1518,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1519,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1489,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1520,1308,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1248,1298,1521,1523,1522,1523,1523,1523,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1523,1522,1522,1524,1522,1522,1525,1522,1522,1522,1522,1522,1522,1522,357,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1526,1522,353,354,353,353,353,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,353,1527,1527,355,1527,1527,356,1527,1527,1527,1527,1527,1527,1527,357,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,358,1527,360,1528,360,360,360,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,360,1528,1528,355,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,358,1528,1530,1529,1532,1531,363,362,368,1527,366,1527,1534,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1535,1533,1534,1533,1534,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1537,1533,1534,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1538,1533,1534,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1539,1533,1541,1539,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_trans_targs"),self.$private("_lex_trans_targs","_lex_trans_targs=")}(Opal.get_singleton_class(self)),$send(self,"_lex_trans_targs=",$to_a($writer=[[186,2,3,4,192,6,7,8,9,10,186,186,195,198,195,12,199,200,14,195,207,208,211,212,224,221,213,214,215,19,216,217,218,226,228,229,233,234,235,230,25,18,209,210,27,258,259,261,263,261,30,264,265,32,261,272,273,276,277,289,286,278,279,280,37,281,282,283,291,293,294,298,299,300,295,43,36,274,275,45,323,324,331,333,331,48,334,335,50,337,340,337,52,341,342,54,348,347,0,56,349,350,58,351,352,352,352,352,465,61,62,63,465,465,494,65,66,494,494,498,498,70,65,71,496,497,499,500,498,494,501,502,504,67,68,505,506,69,498,72,73,78,85,508,509,71,496,497,499,500,498,494,501,502,504,67,68,505,506,69,72,73,78,85,508,509,507,74,75,76,77,79,80,83,81,82,84,86,87,494,89,90,91,93,96,94,95,97,99,525,525,525,526,101,528,102,529,103,526,101,528,102,529,563,104,563,105,106,104,563,105,563,563,563,109,110,111,112,574,563,563,563,115,116,117,563,120,115,116,117,563,120,118,118,116,117,584,119,118,118,116,117,584,119,116,563,601,563,122,602,608,126,617,618,131,132,126,127,616,127,616,563,128,129,130,619,133,563,633,634,637,638,650,647,639,640,641,138,642,643,644,652,654,655,659,660,661,656,144,137,635,636,146,697,698,148,565,107,567,150,151,700,802,153,154,155,802,810,810,810,158,832,831,810,834,836,810,163,164,165,840,810,167,168,851,820,873,171,172,173,177,178,171,172,173,177,178,174,174,172,173,175,176,174,174,172,173,175,176,921,172,810,990,179,992,181,185,993,183,990,180,990,182,992,182,992,184,992,990,186,186,187,188,189,191,193,194,186,186,186,190,186,190,186,1,186,186,186,5,195,195,196,195,197,201,195,195,11,13,195,195,195,195,202,203,204,15,21,26,236,28,195,195,195,205,206,195,16,195,195,195,17,195,195,195,20,219,195,220,222,195,223,225,227,22,195,195,23,231,195,232,24,195,237,241,238,239,240,195,195,242,243,246,248,257,244,245,195,247,249,251,250,195,252,253,254,255,256,195,195,195,260,261,261,261,262,266,261,29,31,261,261,261,261,267,268,269,33,39,44,301,46,261,261,261,270,271,261,34,261,261,261,35,261,261,261,38,284,261,285,287,261,288,290,292,40,261,261,41,296,261,297,42,261,302,306,303,304,305,261,261,307,308,311,313,322,309,310,261,312,314,316,315,261,317,318,319,320,321,261,261,261,325,326,326,327,326,328,326,326,326,329,329,329,330,329,329,329,331,331,331,332,331,47,49,331,331,331,336,336,336,337,337,338,337,339,337,337,51,53,337,337,337,343,343,344,343,343,345,346,345,55,57,347,347,347,353,352,352,354,355,356,357,359,362,363,364,365,352,366,367,369,371,372,373,377,379,380,381,397,402,409,414,421,428,431,432,436,430,440,448,452,454,459,461,464,352,352,352,352,352,352,358,352,358,352,360,59,361,352,60,352,352,368,370,352,374,375,376,372,378,352,382,383,392,395,384,385,386,387,388,389,390,391,353,393,394,396,398,401,399,400,403,406,404,405,407,408,410,412,411,413,415,416,352,417,418,419,420,352,422,425,423,424,426,427,429,433,434,435,437,439,438,441,442,443,445,444,446,447,449,450,451,453,455,456,457,458,460,462,463,466,465,465,467,468,470,471,465,465,465,469,465,469,64,472,465,474,473,473,477,478,479,480,473,482,483,484,485,487,489,490,491,492,493,473,475,473,476,473,473,473,473,473,481,473,481,486,473,488,473,494,494,495,510,511,497,513,514,501,515,516,517,518,519,521,522,523,524,494,494,494,494,494,494,498,503,494,494,494,494,494,494,494,494,494,512,494,512,494,494,494,494,520,494,88,92,98,525,527,530,100,525,525,526,531,531,532,533,535,537,538,531,531,534,531,534,531,536,531,531,531,540,539,539,541,542,543,545,547,548,553,560,539,539,539,539,544,539,544,539,546,539,539,540,549,550,551,552,554,555,558,556,557,559,561,562,564,563,572,573,575,576,578,579,580,581,583,585,586,589,590,615,621,622,623,700,701,702,703,704,582,706,723,728,735,740,742,748,751,752,756,750,760,771,775,778,786,790,793,794,563,104,105,563,107,566,563,563,568,570,571,563,569,563,563,563,563,563,108,563,563,563,563,563,577,563,577,563,563,113,563,114,563,563,582,563,587,563,588,563,563,563,591,600,563,121,603,604,605,563,606,123,609,610,124,613,614,563,592,594,563,593,563,563,595,598,599,563,596,597,563,563,563,563,563,563,607,563,601,611,612,563,611,563,601,611,125,620,563,563,563,624,563,563,563,625,627,563,626,563,626,563,628,629,630,134,140,145,662,147,563,563,563,631,632,563,135,563,563,563,136,563,563,563,139,645,563,646,648,563,649,651,653,141,563,563,142,657,563,658,143,563,663,667,664,665,666,563,563,668,669,672,683,696,670,671,563,673,674,675,677,676,563,678,679,680,681,682,684,691,685,686,687,688,689,690,692,693,694,695,563,563,563,699,149,152,563,705,707,708,718,721,709,710,711,712,713,714,715,716,717,719,720,722,724,727,725,726,729,732,730,731,733,734,736,738,737,739,741,743,745,744,746,747,749,717,753,754,755,757,759,758,761,762,763,768,764,765,766,563,564,565,107,767,570,769,770,772,773,774,776,777,779,780,781,784,782,783,785,787,788,789,791,792,563,582,795,795,796,797,798,800,795,795,795,799,795,799,795,801,795,803,802,802,804,805,802,806,808,802,802,802,802,807,802,807,809,802,811,810,810,814,815,816,810,817,819,822,823,824,825,826,810,827,828,833,861,865,810,866,868,870,810,871,872,874,878,880,881,883,884,902,907,914,922,929,936,941,942,946,940,951,961,967,970,979,983,987,988,989,822,812,810,813,810,810,810,810,810,810,818,810,818,810,156,821,810,810,810,810,810,810,810,810,810,829,810,830,810,810,157,159,810,160,842,853,856,835,857,858,843,847,849,810,835,160,837,839,161,810,837,810,838,810,810,162,841,810,810,844,846,810,844,845,847,849,846,810,848,810,810,850,852,810,166,810,810,810,854,846,847,849,854,855,810,844,846,847,849,810,844,846,847,849,810,859,846,847,849,859,860,810,160,861,835,862,847,849,863,846,160,863,835,864,867,869,810,169,170,810,810,875,876,877,872,879,810,810,882,810,810,810,885,886,895,900,887,888,889,890,891,892,893,894,811,896,897,898,899,811,901,903,906,904,905,811,811,908,911,909,910,912,913,811,915,917,916,918,919,920,810,810,923,811,924,810,925,926,927,928,812,930,933,931,932,934,935,937,938,939,811,943,944,945,947,949,950,948,811,952,953,954,957,955,956,958,959,960,962,964,963,965,966,968,969,971,972,974,977,973,975,976,978,980,981,982,984,985,986,810,810,990,991,995,996,997,990,990,990,994,990,990,999,998,1e3,998,1001,1002,1003,998,998]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_trans_actions"),self.$private("_lex_trans_actions","_lex_trans_actions=")}(Opal.get_singleton_class(self)),$send(self,"_lex_trans_actions=",$to_a($writer=[[1,0,0,0,0,0,0,0,0,0,2,3,4,0,5,0,0,0,0,6,0,7,0,8,0,0,7,0,0,0,0,8,0,7,0,8,0,7,7,0,0,0,0,0,0,0,0,9,0,10,0,0,0,0,11,0,7,0,8,0,0,7,0,0,0,0,8,0,7,0,8,0,7,7,0,0,0,0,0,0,0,0,12,0,13,0,0,0,0,14,0,15,0,0,0,0,0,16,0,0,0,0,0,0,17,18,19,20,21,0,0,0,22,23,24,0,0,25,26,27,28,29,30,30,31,32,30,33,32,34,32,30,30,31,30,35,30,30,36,30,30,30,30,30,30,0,37,38,0,39,38,40,38,0,0,37,0,41,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,43,44,45,46,0,0,0,46,29,47,30,30,30,47,48,0,49,0,29,30,50,30,51,52,53,0,0,0,0,0,54,55,56,0,29,0,57,0,30,58,30,59,30,60,61,62,61,63,61,0,64,65,64,66,64,67,68,0,69,0,0,0,0,70,70,0,0,71,71,72,0,29,73,0,0,0,70,0,74,0,7,0,8,0,0,7,0,0,0,0,8,0,7,0,8,0,7,7,0,0,0,0,0,0,0,0,0,75,0,0,0,0,75,76,0,0,0,77,78,79,80,0,7,7,81,82,82,83,0,0,0,0,84,0,0,0,0,0,0,29,0,0,0,30,58,30,30,30,60,61,62,61,61,61,0,64,65,64,64,64,85,67,86,87,0,88,0,89,89,0,90,0,91,60,92,0,93,29,94,95,98,99,0,29,0,7,0,7,100,101,102,60,103,0,104,0,105,106,107,0,108,109,0,110,7,7,111,112,0,0,113,114,115,116,117,117,117,117,117,117,117,117,118,119,120,0,0,121,0,122,123,124,0,125,126,127,0,0,128,0,0,129,0,7,0,0,130,131,0,0,132,0,29,133,0,0,0,0,0,134,135,0,0,0,0,0,0,0,136,0,0,0,0,137,0,0,0,0,0,138,139,140,0,141,142,143,7,7,144,0,0,145,146,147,148,117,117,117,117,117,117,117,117,149,150,151,0,0,152,0,153,154,155,0,156,157,158,0,0,159,0,0,160,0,7,0,0,161,162,0,0,163,0,29,164,0,0,0,0,0,165,166,0,0,0,0,0,0,0,167,0,0,0,0,168,0,0,0,0,0,169,170,171,0,172,173,0,174,0,175,176,177,178,179,180,0,181,182,183,184,185,186,7,187,0,0,188,189,190,191,192,193,194,195,0,196,7,197,198,0,0,199,200,201,202,203,0,204,205,206,0,207,0,0,208,209,210,211,212,213,0,29,0,0,7,7,0,0,0,214,0,0,0,0,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,217,218,219,220,221,60,222,0,223,0,0,0,224,0,225,226,0,0,227,0,0,0,228,0,229,0,0,0,0,0,0,0,0,0,0,0,0,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,0,0,0,0,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,232,233,0,0,7,0,234,235,236,60,237,0,0,29,238,0,239,240,0,29,0,0,241,0,0,0,0,0,0,0,0,0,0,242,0,243,0,244,245,246,247,248,60,249,0,0,250,0,251,252,253,254,29,0,28,0,0,28,0,0,0,0,0,0,7,7,7,255,256,257,258,259,260,261,0,262,263,264,265,266,267,268,269,270,60,271,0,272,273,274,275,276,277,0,0,0,278,7,7,0,279,280,281,282,283,0,0,0,0,0,284,285,60,286,0,287,29,288,289,290,291,292,293,0,29,0,0,0,0,0,0,294,295,296,297,60,298,0,299,29,300,301,302,0,0,0,0,0,0,0,0,0,0,0,0,303,304,0,8,0,0,7,305,0,0,305,305,0,0,7,306,0,306,0,306,306,306,0,0,306,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,0,0,307,308,308,309,310,0,311,312,0,75,0,313,0,314,315,316,317,318,30,319,320,321,322,323,60,324,0,325,326,0,327,0,328,329,305,330,0,331,0,332,333,334,0,0,335,0,0,0,0,336,0,0,0,0,0,0,0,337,0,0,338,0,339,340,0,0,0,341,0,0,342,343,344,345,346,347,0,348,349,349,0,350,0,351,352,352,0,0,353,354,355,0,356,357,358,0,7,359,360,361,0,362,117,117,117,117,117,117,117,117,363,364,365,0,0,366,0,367,368,369,0,370,371,372,0,0,373,0,0,374,0,7,0,0,375,376,0,0,377,0,29,378,0,0,0,0,0,379,380,0,0,0,0,0,0,0,381,0,0,0,0,0,382,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,383,384,385,0,0,0,386,29,303,303,303,303,303,303,303,303,303,303,303,303,75,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,387,303,303,303,303,303,303,303,303,303,303,303,303,388,389,390,391,392,392,388,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,393,394,395,396,0,29,0,0,397,398,399,60,400,0,401,29,402,7,403,404,0,29,405,0,0,406,407,408,409,60,410,0,29,411,412,413,414,0,29,0,415,0,7,416,0,0,0,0,417,0,0,418,418,0,419,0,0,0,420,7,421,421,421,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,422,423,424,0,425,426,427,428,429,430,60,431,0,432,0,0,433,434,435,436,437,438,439,440,441,0,442,0,443,444,0,0,445,446,447,0,0,448,0,0,447,449,449,450,451,0,452,453,0,454,455,456,0,457,458,0,0,459,460,447,447,461,0,0,462,462,0,463,0,464,465,7,0,466,0,467,468,469,470,470,471,471,0,0,472,473,473,474,474,475,476,476,477,477,478,479,479,480,480,0,0,481,482,483,484,485,486,486,483,485,487,418,488,0,0,0,489,0,0,490,491,421,421,421,492,421,493,494,29,495,496,497,0,0,0,0,0,0,0,0,0,0,0,0,498,0,0,0,0,492,0,0,0,0,0,499,500,0,0,0,0,0,0,501,0,0,0,0,0,500,502,503,0,504,0,505,0,0,0,0,506,0,0,0,0,0,0,0,0,0,507,0,0,0,0,0,0,0,506,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,508,509,510,511,511,89,511,512,513,514,0,515,516,0,517,0,518,0,0,0,519,520]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_to_state_actions"),self.$private("_lex_to_state_actions","_lex_to_state_actions=")}(Opal.get_singleton_class(self)),$send(self,"_lex_to_state_actions=",$to_a($writer=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,96,0,96,0,0,0,0,96,96,0,0,0,0,0,96,0,96,0,96,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_from_state_actions"),self.$private("_lex_from_state_actions","_lex_from_state_actions=")}(Opal.get_singleton_class(self)),$send(self,"_lex_from_state_actions=",$to_a($writer=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,97,0,97,0,0,0,0,97,97,0,0,0,0,0,97,0,97,0,97,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_eof_trans"),self.$private("_lex_eof_trans","_lex_eof_trans=")}(Opal.get_singleton_class(self)),$send(self,"_lex_eof_trans=",$to_a($writer=[[0,1,1,1,1,1,1,1,1,1,1,13,13,13,13,20,20,20,20,20,20,20,20,20,20,20,20,20,20,48,48,48,48,55,55,55,55,55,55,55,55,55,55,55,55,55,55,83,83,83,83,90,90,90,90,0,0,0,0,105,107,109,109,109,109,115,115,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,180,180,180,180,180,180,180,180,180,180,180,180,190,192,192,192,204,204,204,212,214,214,214,214,214,220,212,212,212,212,212,212,212,246,246,246,246,246,246,212,262,212,262,246,246,212,268,268,268,268,268,268,268,268,268,268,268,268,268,268,212,246,246,246,246,303,303,303,308,310,310,310,314,314,317,317,317,317,322,322,322,308,314,314,314,314,314,314,314,314,314,353,360,362,362,362,362,353,0,378,379,380,382,384,386,384,384,0,396,397,401,401,402,403,412,413,414,414,414,417,417,419,420,421,421,421,423,424,425,425,425,428,428,421,431,431,421,417,417,436,437,437,437,440,440,437,437,437,443,443,443,443,449,450,450,450,450,458,450,450,450,450,463,450,450,450,450,450,450,469,470,471,471,0,478,482,482,483,484,493,494,495,495,495,498,498,500,501,502,502,502,504,505,506,506,506,509,509,502,512,512,502,498,498,517,518,518,518,521,521,518,518,518,524,524,524,524,530,531,531,531,531,539,531,531,531,531,544,531,531,531,531,531,531,550,551,552,552,0,559,560,0,566,0,573,577,577,578,0,0,587,588,592,592,593,0,598,0,601,0,604,604,605,606,0,647,649,650,651,652,654,656,660,660,651,651,651,651,662,651,651,656,651,651,647,666,666,666,666,666,666,656,656,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,705,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,651,0,749,750,751,753,749,749,757,0,776,778,780,781,782,783,784,786,783,783,783,783,783,789,783,783,791,789,789,783,0,810,811,115,115,814,815,115,811,811,818,820,823,811,824,811,825,826,828,830,811,818,831,831,820,831,835,831,831,831,831,0,190,843,844,843,843,0,853,854,856,858,860,858,862,0,874,875,876,877,879,881,883,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,0,942,945,948,949,953,955,956,957,958,959,961,964,965,967,969,972,974,975,212,972,977,972,964,979,981,964,964,999,1002,1004,1005,1009,1012,1013,1014,1015,999,999,999,999,999,999,999,999,999,999,1019,1023,1025,999,999,964,1030,1031,1031,1031,964,964,964,1032,1039,1039,1041,1043,1052,1053,1054,1054,1054,1057,1057,1059,1060,1061,1061,1061,1063,1064,1065,1065,1065,1068,1068,1061,1071,1071,1061,1057,1057,1076,1077,1077,1077,1080,1080,1077,1077,1077,1083,1083,1083,1083,1089,1090,1090,1090,1090,1098,1090,1090,1090,1090,1104,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1122,1123,1124,1124,212,964,964,1128,964,959,942,942,942,942,942,942,942,942,942,942,942,212,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,1181,949,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,1206,964,0,1214,1215,1216,1218,1220,1222,0,1231,1232,1233,1234,1236,1231,1239,0,314,1294,1296,1297,1298,1299,1301,1303,1305,1308,1308,314,1310,1312,1313,1314,1310,1316,1318,1318,1321,1321,1324,1335,314,1341,1343,1345,1346,1349,1350,1324,1324,1353,1353,1353,1359,1361,1362,1365,1367,1368,1369,1353,1353,1376,1381,1386,1353,1353,1393,1393,1353,1353,1318,1310,1310,1318,1310,1310,1305,314,1411,1412,1412,1412,1412,1412,1412,1418,1305,1421,1422,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1462,1463,1423,1423,1467,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1521,1299,1522,0,1528,1529,1530,1532,1528,1528,1528,0,1537,1537,1537,1537,1541]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_start")}(Opal.get_singleton_class(self)),$send(self,"lex_start=",$to_a($writer=[186])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_error")}(Opal.get_singleton_class(self)),$send(self,"lex_error=",$to_a($writer=[0])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_words=",$to_a($writer=[195])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_string")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_string=",$to_a($writer=[261])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_words=",$to_a($writer=[326])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_string")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_string=",$to_a($writer=[329])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_backslash_delimited")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_backslash_delimited=",$to_a($writer=[331])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_backslash_delimited")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_backslash_delimited=",$to_a($writer=[336])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_backslash_delimited_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_backslash_delimited_words=",$to_a($writer=[337])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_backslash_delimited_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_backslash_delimited_words=",$to_a($writer=[343])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_regexp_modifiers")}(Opal.get_singleton_class(self)),$send(self,"lex_en_regexp_modifiers=",$to_a($writer=[345])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_variable")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_variable=",$to_a($writer=[347])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_fname")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_fname=",$to_a($writer=[352])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_endfn")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_endfn=",$to_a($writer=[465])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_dot")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_dot=",$to_a($writer=[473])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_arg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_arg=",$to_a($writer=[494])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_cmdarg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_cmdarg=",$to_a($writer=[525])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_endarg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_endarg=",$to_a($writer=[531])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_mid")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_mid=",$to_a($writer=[539])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_beg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_beg=",$to_a($writer=[563])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_labelarg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_labelarg=",$to_a($writer=[795])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_value")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_value=",$to_a($writer=[802])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_end")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_end=",$to_a($writer=[810])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_leading_dot")}(Opal.get_singleton_class(self)),$send(self,"lex_en_leading_dot=",$to_a($writer=[990])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_line_comment")}(Opal.get_singleton_class(self)),$send(self,"lex_en_line_comment=",$to_a($writer=[998])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_line_begin")}(Opal.get_singleton_class(self)),$send(self,"lex_en_line_begin=",$to_a($writer=[186])),$writer[$rb_minus($writer.length,1)],$const_set($nesting[0],"ESCAPES",$hash("a".$ord(),"","b".$ord(),"\b","e".$ord(),"","f".$ord(),"\f","n".$ord(),"\n","r".$ord(),"\r","s".$ord()," ","t".$ord(),"\t","v".$ord(),"\v","\\".$ord(),"\\").$freeze()),$const_set($nesting[0],"REGEXP_META_CHARACTERS",$send($$("Regexp"),"union",$to_a("\\$()*+.<>?[]^{|}".$chars())).$freeze()),self.$attr_reader("source_buffer"),self.$attr_accessor("diagnostics"),self.$attr_accessor("static_env"),self.$attr_accessor("force_utf32"),self.$attr_accessor("cond","cmdarg","context","command_start"),self.$attr_accessor("tokens","comments"),self.$attr_reader("paren_nest","cmdarg_stack","cond_stack","lambda_stack"),$def(self,"$initialize",(function(version){return this.version=version,this.static_env=nil,this.context=nil,this.tokens=nil,this.comments=nil,this.$reset()}),1),$def(self,"$reset",(function(reset_state){return null==reset_state&&(reset_state=!0),$truthy(reset_state)&&(this.cs=this.$class().$lex_en_line_begin(),this.cond=$$("StackState").$new("cond"),this.cmdarg=$$("StackState").$new("cmdarg"),this.cond_stack=[],this.cmdarg_stack=[]),this.force_utf32=!1,this.source_pts=nil,this.p=0,this.ts=nil,this.te=nil,this.act=0,this.stack=[],this.top=0,this.token_queue=[],this.literal_stack=[],this.eq_begin_s=nil,this.sharp_s=nil,this.newline_s=nil,this.num_base=nil,this.num_digits_s=nil,this.num_suffix_s=nil,this.num_xfrm=nil,this.escape_s=nil,this.escape=nil,this.herebody_s=nil,this.paren_nest=0,this.lambda_stack=[],this.dedent_level=nil,this.command_start=!0,this.cs_before_block_comment=this.$class().$lex_en_line_begin()}),-1),$def(self,"$source_buffer=",(function(source_buffer){var source=nil;return this.source_buffer=source_buffer,$truthy(this.source_buffer)?(source=this.source_buffer.$source(),$eqeq(source.$encoding(),$$$($$("Encoding"),"UTF_8"))?this.source_pts=source.$unpack("U*"):this.source_pts=source.$unpack("C*"),$eqeq(this.source_pts["$[]"](0),65279)?this.p=1:nil):this.source_pts=nil}),1),$def(self,"$encoding",(function(){return this.source_buffer.$source().$encoding()}),0),$const_set($nesting[0],"LEX_STATES",$hash2(["line_begin","expr_dot","expr_fname","expr_value","expr_beg","expr_mid","expr_arg","expr_cmdarg","expr_end","expr_endarg","expr_endfn","expr_labelarg","interp_string","interp_words","plain_string","plain_words"],{line_begin:self.$lex_en_line_begin(),expr_dot:self.$lex_en_expr_dot(),expr_fname:self.$lex_en_expr_fname(),expr_value:self.$lex_en_expr_value(),expr_beg:self.$lex_en_expr_beg(),expr_mid:self.$lex_en_expr_mid(),expr_arg:self.$lex_en_expr_arg(),expr_cmdarg:self.$lex_en_expr_cmdarg(),expr_end:self.$lex_en_expr_end(),expr_endarg:self.$lex_en_expr_endarg(),expr_endfn:self.$lex_en_expr_endfn(),expr_labelarg:self.$lex_en_expr_labelarg(),interp_string:self.$lex_en_interp_string(),interp_words:self.$lex_en_interp_words(),plain_string:self.$lex_en_plain_string(),plain_words:self.$lex_en_plain_string()})),$def(self,"$state",(function(){return $$("LEX_STATES").$invert().$fetch(this.cs,this.cs)}),0),$def(self,"$state=",(function(state){return this.cs=$$("LEX_STATES").$fetch(state)}),1),$def(self,"$push_cmdarg",(function(){return this.cmdarg_stack.$push(this.cmdarg),this.cmdarg=$$("StackState").$new("cmdarg."+this.cmdarg_stack.$count())}),0),$def(self,"$pop_cmdarg",(function(){return this.cmdarg=this.cmdarg_stack.$pop()}),0),$def(self,"$push_cond",(function(){return this.cond_stack.$push(this.cond),this.cond=$$("StackState").$new("cond."+this.cond_stack.$count())}),0),$def(self,"$pop_cond",(function(){return this.cond=this.cond_stack.$pop()}),0),$def(self,"$dedent_level",(function(){var $a,dedent_level;return dedent_level=($a=[this.dedent_level,nil])[0],this.dedent_level=$a[1],dedent_level}),0),$def(self,"$advance",(function(){var $a,$b,pe,self=this,klass=nil,_lex_trans_keys=nil,_lex_key_spans=nil,_lex_index_offsets=nil,_lex_indicies=nil,_lex_trans_targs=nil,_lex_trans_actions=nil,_lex_to_state_actions=nil,_lex_from_state_actions=nil,_lex_eof_trans=nil,p=nil,eof=nil,cmd_state=nil,_slen=nil,_trans=nil,_keys=nil,_inds=nil,_goto_level=nil,$ret_or_1=nil,_wide=nil,tm=nil,heredoc_e=nil,diag_msg=nil,ident_tok=nil,ident_ts=nil,ident_te=nil,current_literal=nil,$writer=nil,line=nil,string=nil,lookahead=nil,token=nil,message=nil,escaped_char=nil,$ret_or_2=nil,unknown_options=nil,type=nil,delimiter=nil,escape=nil,ident=nil,followed_by_nl=nil,nl_emitted=nil,dots_te=nil,value=nil,digits=nil,invalid_idx=nil,invalid_s=nil,codepoints=nil,codepoint_s=nil,spaces_p=nil,codepoint=nil,new_herebody_s=nil,indent=nil,dedent_body=nil;if($truthy(self.token_queue["$any?"]()))return self.token_queue.$shift();for(_lex_trans_keys=(klass=self.$class()).$send("_lex_trans_keys"),_lex_key_spans=klass.$send("_lex_key_spans"),_lex_index_offsets=klass.$send("_lex_index_offsets"),_lex_indicies=klass.$send("_lex_indicies"),_lex_trans_targs=klass.$send("_lex_trans_targs"),_lex_trans_actions=klass.$send("_lex_trans_actions"),_lex_to_state_actions=klass.$send("_lex_to_state_actions"),_lex_from_state_actions=klass.$send("_lex_from_state_actions"),_lex_eof_trans=klass.$send("_lex_eof_trans"),pe=$rb_plus(self.source_pts.$size(),2),$a=[self.p,pe],p=$a[0],eof=$a[1],cmd_state=self.command_start,self.command_start=!1,!1,_slen=null==($a=$to_ary($b=nil))[0]?nil:$a[0],_trans=null==$a[1]?nil:$a[1],_keys=null==$a[2]?nil:$a[2],_inds=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],_goto_level=0,10,15,20,30,40;$truthy(!0);){if($truthy($rb_le(_goto_level,0))){if($eqeq(p,pe)){_goto_level=30;continue}if($eqeq(self.cs,0)){_goto_level=40;continue}}if($truthy($rb_le(_goto_level,10))&&($eqeqeq(97,$ret_or_1=_lex_from_state_actions["$[]"](self.cs))&&(self.ts=p),_keys=self.cs["$<<"](1),_inds=_lex_index_offsets["$[]"](self.cs),_slen=_lex_key_spans["$[]"](self.cs),_wide=$truthy($ret_or_1=self.source_pts["$[]"](p))?$ret_or_1:0,_trans=$truthy($rb_gt(_slen,0))&&$truthy($rb_le(_lex_trans_keys["$[]"](_keys),_wide))&&$truthy($rb_le(_wide,_lex_trans_keys["$[]"]($rb_plus(_keys,1))))?_lex_indicies["$[]"]($rb_minus($rb_plus(_inds,_wide),_lex_trans_keys["$[]"](_keys))):_lex_indicies["$[]"]($rb_plus(_inds,_slen))),$truthy($rb_le(_goto_level,15))&&(self.cs=_lex_trans_targs["$[]"](_trans),$neqeq(_lex_trans_actions["$[]"](_trans),0)))if($eqeqeq(29,$ret_or_1=_lex_trans_actions["$[]"](_trans)))self.newline_s=p;else if($eqeqeq(117,$ret_or_1))self.escape_s=p,self.escape=nil;else if($eqeqeq(30,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil);else if($eqeqeq(60,$ret_or_1))self.sharp_s=$rb_minus(p,1);else if($eqeqeq(64,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p);else if($eqeqeq(310,$ret_or_1))tm=p;else if($eqeqeq(37,$ret_or_1))tm=p;else if($eqeqeq(39,$ret_or_1))tm=p;else if($eqeqeq(41,$ret_or_1))tm=p;else if($eqeqeq(71,$ret_or_1))heredoc_e=p;else if($eqeqeq(349,$ret_or_1))tm=$rb_minus(p,1),diag_msg="ivar_name";else if($eqeqeq(352,$ret_or_1))tm=$rb_minus(p,2),diag_msg="cvar_name";else if($eqeqeq(360,$ret_or_1))self.escape=nil;else if($eqeqeq(392,$ret_or_1))tm=p;else if($eqeqeq(308,$ret_or_1))ident_tok=self.$tok(),ident_ts=self.ts,ident_te=self.te;else if($eqeqeq(479,$ret_or_1))self.num_base=16,self.num_digits_s=p;else if($eqeqeq(473,$ret_or_1))self.num_base=10,self.num_digits_s=p;else if($eqeqeq(476,$ret_or_1))self.num_base=8,self.num_digits_s=p;else if($eqeqeq(470,$ret_or_1))self.num_base=2,self.num_digits_s=p;else if($eqeqeq(485,$ret_or_1))self.num_base=10,self.num_digits_s=self.ts;else if($eqeqeq(447,$ret_or_1))self.num_base=8,self.num_digits_s=self.ts;else if($eqeqeq(462,$ret_or_1))self.num_suffix_s=p;else if($eqeqeq(455,$ret_or_1))self.num_suffix_s=p;else if($eqeqeq(452,$ret_or_1))self.num_suffix_s=p;else if($eqeqeq(89,$ret_or_1))tm=p;else if($eqeqeq(7,$ret_or_1))self.te=$rb_plus(p,1);else{if($eqeqeq(113,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(5,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(109,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(108,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(115,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(114,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(111,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else if($eqeqeq(112,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(6,$ret_or_1))p=$rb_minus(self.te,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(4,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else{if($eqeqeq(145,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(10,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(142,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(141,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(147,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(146,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(144,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(11,$ret_or_1))p=$rb_minus(self.te,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(9,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(173,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(172,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(175,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else if($eqeqeq(176,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(179,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(178,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(181,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else{if($eqeqeq(188,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(13,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(185,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(184,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(190,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(189,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(187,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(12,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(192,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(191,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else{if($eqeqeq(199,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(15,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(195,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(194,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(201,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(200,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(197,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else if($eqeqeq(198,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(14,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(203,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(202,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(205,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else{if($eqeqeq(206,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tREGEXP_OPT",self.$tok(self.ts,$rb_minus(self.te,1)),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(207,$ret_or_1)){self.te=p,p=$rb_minus(p,1),unknown_options=self.$tok().$scan(/[^imxouesn]/),$truthy(unknown_options["$any?"]())&&self.$diagnostic("error","regexp_options",$hash2(["options"],{options:unknown_options.$join()})),self.$emit("tREGEXP_OPT"),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(16,$ret_or_1)){self.te=$rb_plus(p,1),$truthy(self.$tok()["$=~"](/^\$([1-9][0-9]*)$/))?self.$emit("tNTH_REF",self.$tok($rb_plus(self.ts,1)).$to_i()):$truthy(self.$tok()["$=~"](/^\$([&`'+])$/))?self.$emit("tBACK_REF"):self.$emit("tGVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(208,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy(self.$tok()["$=~"](/^\$([1-9][0-9]*)$/))?self.$emit("tNTH_REF",self.$tok($rb_plus(self.ts,1)).$to_i()):$truthy(self.$tok()["$=~"](/^\$([&`'+])$/))?self.$emit("tBACK_REF"):self.$emit("tGVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(210,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy(self.$tok()["$=~"](/^@@[0-9]/))&&self.$diagnostic("error","cvar_name",$hash2(["name"],{name:self.$tok()})),self.$emit("tCVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(209,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy(self.$tok()["$=~"](/^@[0-9]/))&&self.$diagnostic("error","ivar_name",$hash2(["name"],{name:self.$tok()})),self.$emit("tIVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(231,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(217,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tIDENTIFIER"),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(18,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(214,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(226,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(20,$ret_or_1)){if(self.te=$rb_plus(p,1),$truthy(self["$version?"](23))){type=($b=[self.$tok()["$[]"]($range(0,-2,!1)),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(213,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(212,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(230,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(227,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT"),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(229,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(224,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(220,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(225,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(218,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(223,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(19,$ret_or_1)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(17,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(216,$ret_or_1)){if($eqeqeq(43,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(44,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tCONSTANT"),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(45,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(22,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tLABEL",self.$tok(self.ts,$rb_minus(self.te,2)),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),self.cs=795,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(23,$ret_or_1)){if(self.te=$rb_plus(p,1),$truthy($rb_ge(self.version,31))&&$truthy(self.context.$in_argdef())){self.$emit("tBDOT3","...".$freeze()),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}p=$rb_minus(p,3),self.cs=810,_goto_level=20;continue}if($eqeqeq(233,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(232,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(235,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(234,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(21,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(241,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(240,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(239,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(251,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(242,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(247,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(245,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(250,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(274,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(257,$ret_or_1)){self.te=$rb_plus(p,1),$eqeq(self.$tok(tm,$rb_plus(tm,1)),"/".$freeze())&&($truthy($rb_lt(self.version,30))?self.$diagnostic("warning","ambiguous_literal",nil,self.$range(tm,$rb_plus(tm,1))):self.$diagnostic("warning","ambiguous_regexp",nil,self.$range(tm,$rb_plus(tm,1)))),p=$rb_minus(tm,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(263,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(25,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(265,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(tm,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(40,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(252,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(253,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(264,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(260,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$diagnostic("warning","ambiguous_prefix",$hash2(["prefix"],{prefix:self.$tok(tm,self.te)}),self.$range(tm,self.te)),p=$rb_minus(tm,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(262,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(256,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(255,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(273,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(26,$ret_or_1))p=$rb_minus(self.te,1);else{if($eqeqeq(42,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(24,$ret_or_1)){if($eqeqeq(72,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$eqeq(self.$tok(tm,$rb_plus(tm,1)),"/".$freeze())&&($truthy($rb_lt(self.version,30))?self.$diagnostic("warning","ambiguous_literal",nil,self.$range(tm,$rb_plus(tm,1))):self.$diagnostic("warning","ambiguous_regexp",nil,self.$range(tm,$rb_plus(tm,1)))),p=$rb_minus(tm,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(73,$ret_or_2)){p=$rb_minus(self.te,1),self.$diagnostic("warning","ambiguous_prefix",$hash2(["prefix"],{prefix:self.$tok(tm,self.te)}),self.$range(tm,self.te)),p=$rb_minus(tm,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(78,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}p=$rb_minus(self.te,1)}else{if($eqeqeq(44,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=494,_goto_level=20;continue}if($eqeqeq(278,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(279,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=494,_goto_level=20;continue}if($eqeqeq(45,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=494,_goto_level=20;continue}if($eqeqeq(43,$ret_or_1)){if($eqeqeq(85,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$truthy(self.cond["$active?"]())?self.$emit("kDO_COND","do".$freeze(),$rb_minus(self.te,2),self.te):self.$emit("kDO","do".$freeze(),$rb_minus(self.te,2),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(86,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=494,_goto_level=20;continue}}else{if($eqeqeq(289,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_do(!0),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(282,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(283,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(284,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(287,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(293,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(292,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(301,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(295,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(299,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(294,$ret_or_1)){if($eqeqeq(93,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(94,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=563,_goto_level=20;continue}}else{if($eqeqeq(57,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(334,$ret_or_1)){self.te=$rb_plus(p,1),type=delimiter=self.$tok()["$[]"](0).$chr(),p=$rb_minus(p,1),self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(326,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.source_buffer.$slice(self.ts).$chr(),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(55,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.$tok()["$[]"]($range(0,-2,!1)),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(347,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_minus(p,1),self.$emit("tSYMBEG",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),self.cs=352,_goto_level=20;continue}if($eqeqeq(335,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.$tok(),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(346,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),$rb_plus(self.ts,2))),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(69,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1)),self.ts),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(357,$ret_or_1)){self.te=$rb_plus(p,1),escape=$hash2([" ","\r","\n","\t","\v","\f"],{" ":"\\s","\r":"\\r","\n":"\\n","\t":"\\t","\v":"\\v","\f":"\\f"})["$[]"](self.source_buffer.$slice($rb_plus(self.ts,1))),self.$diagnostic("warning","invalid_escape_use",$hash2(["escape"],{escape:escape}),self.$range()),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(356,$ret_or_1))self.te=$rb_plus(p,1),self.$diagnostic("fatal","incomplete_escape",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(336,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(52,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),$truthy(self["$version?"](18))?(ident=self.$tok(self.ts,$rb_minus(self.te,2)),self.$emit($truthy(self.source_buffer.$slice(self.ts)["$=~"](/[A-Z]/))?"tCONSTANT":"tIDENTIFIER",ident,self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,1),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](ident))?self.cs=810:self.cs=self.$arg_or_cmdarg(cmd_state)):(self.$emit("tLABEL",self.$tok(self.ts,$rb_minus(self.te,2)),self.ts,$rb_minus(self.te,1)),self.cs=795),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(49,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tIDENTIFIER",ident_tok,ident_ts,ident_te),p=$rb_minus(ident_te,1),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](ident_tok))&&$truthy($rb_lt(self.version,25))?self.cs=465:self.cs=525,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(320,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs_before_block_comment=self.cs,self.cs=186,_goto_level=20;continue}if($eqeqeq(56,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(304,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(330,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(329,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tSTAR","*".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(325,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","string_eof",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else if($eqeqeq(354,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(337,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1)),self.ts),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(350,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te)):(self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=self.ts),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(355,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","incomplete_escape",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(361,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(327,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(331,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$emit("tBDOT2"):self.$emit("tDOT2"),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(332,$ret_or_1)){self.te=p,p=$rb_minus(p,1),followed_by_nl=$rb_minus(self.te,1)["$=="](self.newline_s),nl_emitted=!1,dots_te=$truthy(followed_by_nl)?$rb_minus(self.te,1):self.te,$truthy($rb_ge(self.version,30))?$truthy(self.lambda_stack["$any?"]())&&$eqeq($rb_plus(self.lambda_stack.$last(),1),self.paren_nest)?self.$emit("tDOT3","...".$freeze(),self.ts,dots_te):(self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te),$truthy($rb_ge(self.version,31))&&$truthy(followed_by_nl)&&$truthy(self.context.$in_argdef())&&(self.$emit("tNL",$rb_minus(self.te,1),self.te),nl_emitted=!0)):$truthy($rb_ge(self.version,27))?self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te):self.$emit("tDOT3","...".$freeze(),self.ts,dots_te),$truthy(followed_by_nl)&&$not(nl_emitted)&&(p=$rb_minus(p,1)),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(307,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(317,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(319,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs_before_block_comment=self.cs,self.cs=186,_goto_level=20;continue}if($eqeqeq(322,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(54,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("fatal","string_eof",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else if($eqeqeq(73,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(74,$ret_or_1)){p=$rb_minus(self.te,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(48,$ret_or_1)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(53,$ret_or_1))p=$rb_minus(self.te,1);else{if($eqeqeq(68,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(51,$ret_or_1)){if($eqeqeq(99,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(106,$ret_or_2))p=$rb_minus(self.te,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(117,$ret_or_2)){if(p=$rb_minus(self.te,1),$truthy($rb_ge(self.version,27))){self.$emit("tPIPE",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}p=$rb_minus(p,2),self.cs=810,_goto_level=20;continue}if($eqeqeq(121,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(122,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm),p=$rb_minus(tm,1),self.cs=539,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(123,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(127,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(128,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(132,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}}}else{if($eqeqeq(395,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(396,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(397,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(401,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(77,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(405,$ret_or_1)){self.te=$rb_plus(p,1),self.cs=self.$push_literal(self.$tok(),self.$tok(),self.ts),_goto_level=20;continue}if($eqeqeq(404,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(403,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(407,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(406,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(76,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(440,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tLAMBDA","->".$freeze(),self.ts,$rb_plus(self.ts,2)),self.lambda_stack.$push(self.paren_nest),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(86,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(415,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.$tok(),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts,nil,!1,!1,!0),_goto_level=20;continue}if($eqeqeq(79,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(436,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=473,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(489,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(429,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(434,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tOP_ASGN",self.$tok(self.ts,$rb_minus(self.te,1))),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(420,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tEH","?".$freeze()),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(417,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(419,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tSEMI",";".$freeze()),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(494,$ret_or_1))self.te=$rb_plus(p,1),self.$diagnostic("error","bare_backslash",nil,self.$range(self.ts,$rb_plus(self.ts,1))),p=$rb_minus(p,1);else if($eqeqeq(414,$ret_or_1))self.te=$rb_plus(p,1),self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,!1))}));else{if($eqeqeq(413,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(505,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("KEYWORDS")),self.cs=352,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(503,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(502,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("KEYWORDS")),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(444,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("error","no_dot_digit_literal");else{if($eqeqeq(491,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(433,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(441,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=473,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(497,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(439,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(435,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(428,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(442,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(426,$ret_or_1))self.te=p,p=$rb_minus(p,1);else if($eqeqeq(432,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,!1))}));else{if($eqeqeq(84,$ret_or_1)){p=$rb_minus(self.te,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(80,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("error","no_dot_digit_literal");else{if($eqeqeq(83,$ret_or_1)){p=$rb_minus(self.te,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(78,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,!1))}));else if($eqeqeq(81,$ret_or_1)){if($eqeqeq(145,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLAMBEG","{".$freeze()):self.$emit("kDO_LAMBDA","do".$freeze())):$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLCURLY","{".$freeze()):self.$emit_do(),$eqeq(self.$tok(),"{".$freeze())&&(self.paren_nest=$rb_plus(self.paren_nest,1)),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(146,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=352,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(147,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(148,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(149,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(150,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=539,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(151,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),$truthy(self["$version?"](18))&&$eqeq(self.$tok(),"not".$freeze())){self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(152,$ret_or_2)){p=$rb_minus(self.te,1),$truthy(self["$version?"](18))?(self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))||(self.cs=self.$arg_or_cmdarg(cmd_state))):self.$emit("k__ENCODING__","__ENCODING__".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(153,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(154,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(156,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",self.$tok(self.ts,$rb_minus(self.te,1)).$to_i(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else if($eqeqeq(157,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$tok(self.ts,$rb_minus(self.te,1)).$to_f(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{if($eqeqeq(158,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(160,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(164,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(165,$ret_or_2)){p=$rb_minus(self.te,1),$eqeq(tm,self.te)?self.$emit("tFID"):(self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1)),self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(167,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(168,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}}}else{if($eqeqeq(516,$ret_or_1)){if(self.te=$rb_plus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),$truthy($rb_lt(self.version,27))){p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}self.$emit("tBDOT3"),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(95,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(tm,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(510,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(513,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),$truthy($rb_lt(self.version,27))){self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(515,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),$truthy($rb_lt(self.version,27))){p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}self.$emit("tBDOT2"),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(514,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(tm,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(512,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(90,$ret_or_1)){if(p=$rb_minus(self.te,1),$truthy($rb_lt(self.version,27))){self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(87,$ret_or_1)){p=$rb_minus(self.te,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(91,$ret_or_1)){if($eqeqeq(181,$ret_or_2=self.act)){if(p=$rb_minus(self.te,1),$truthy($rb_lt(self.version,27))){self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}}else if($eqeqeq(185,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(519,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_comment(self.eq_begin_s,self.te),self.cs=self.cs_before_block_comment,_goto_level=20;continue}if($eqeqeq(518,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","embedded_document",nil,self.$range(self.eq_begin_s,$rb_plus(self.eq_begin_s,"=begin".$length())));else{if($eqeqeq(106,$ret_or_1)){self.te=$rb_plus(p,1),self.eq_begin_s=self.ts,self.cs=998,_goto_level=20;continue}if($eqeqeq(2,$ret_or_1))self.te=$rb_plus(p,1),p=$rb_minus(pe,3);else{if($eqeqeq(98,$ret_or_1)){self.te=$rb_plus(p,1),cmd_state=!0,p=$rb_minus(p,1),self.cs=802,_goto_level=20;continue}if($eqeqeq(99,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(100,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(105,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.eq_begin_s=self.ts,self.cs=998,_goto_level=20;continue}if($eqeqeq(104,$ret_or_1)){self.te=p,p=$rb_minus(p,1),cmd_state=!0,p=$rb_minus(p,1),self.cs=802,_goto_level=20;continue}if($eqeqeq(1,$ret_or_1)){p=$rb_minus(self.te,1),cmd_state=!0,p=$rb_minus(p,1),self.cs=802,_goto_level=20;continue}if($eqeqeq(67,$ret_or_1))self.newline_s=p,self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p);else if($eqeqeq(110,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(143,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(174,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(180,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(186,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(193,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(196,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(204,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else{if($eqeqeq(275,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(266,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(tm,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(258,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(358,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),escape=$hash2([" ","\r","\n","\t","\v","\f"],{" ":"\\s","\r":"\\r","\n":"\\n","\t":"\\t","\v":"\\v","\f":"\\f"})["$[]"](self.source_buffer.$slice($rb_plus(self.ts,1))),self.$diagnostic("warning","invalid_escape_use",$hash2(["escape"],{escape:escape}),self.$range()),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(333,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),followed_by_nl=$rb_minus(self.te,1)["$=="](self.newline_s),nl_emitted=!1,dots_te=$truthy(followed_by_nl)?$rb_minus(self.te,1):self.te,$truthy($rb_ge(self.version,30))?$truthy(self.lambda_stack["$any?"]())&&$eqeq($rb_plus(self.lambda_stack.$last(),1),self.paren_nest)?self.$emit("tDOT3","...".$freeze(),self.ts,dots_te):(self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te),$truthy($rb_ge(self.version,31))&&$truthy(followed_by_nl)&&$truthy(self.context.$in_argdef())&&(self.$emit("tNL",$rb_minus(self.te,1),self.te),nl_emitted=!0)):$truthy($rb_ge(self.version,27))?self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te):self.$emit("tDOT3","...".$freeze(),self.ts,dots_te),$truthy(followed_by_nl)&&$not(nl_emitted)&&(p=$rb_minus(p,1)),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(321,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs_before_block_comment=self.cs,self.cs=186,_goto_level=20;continue}if($eqeqeq(443,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),$eqeq(self.paren_nest,0)&&self.$diagnostic("warning","triple_dot_at_eol",nil,self.$range(self.ts,$rb_minus(self.te,1))),self.$emit("tDOT3","...".$freeze(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(520,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),self.$emit_comment(self.eq_begin_s,self.te),self.cs=self.cs_before_block_comment,_goto_level=20;continue}if($eqeqeq(517,$ret_or_1))self.newline_s=p,self.te=$rb_plus(p,1);else{if($eqeqeq(107,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),self.eq_begin_s=self.ts,self.cs=998,_goto_level=20;continue}if($eqeqeq(3,$ret_or_1))self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(pe,3);else{if($eqeqeq(465,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$3(chars){var self=null==$$3.$$s?this:$$3.$$s;return null==chars&&(chars=nil),self.$emit("tRATIONAL",self.$Rational(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(463,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$4(chars){var self=null==$$4.$$s?this:$$4.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(468,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$5(chars){var self=null==$$5.$$s?this:$$5.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,self.$Rational(chars)))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(466,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$6(chars){var self=null==$$6.$$s?this:$$6.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,2)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(464,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$7(chars){var self=null==$$7.$$s?this:$$7.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,2)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(467,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$8(chars){var self=null==$$8.$$s?this:$$8.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,6)),p=$rb_minus(p,6)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(456,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$9(chars){var self=null==$$9.$$s?this:$$9.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,self.$Float(chars)))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(457,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$10(chars){var self=null==$$10.$$s?this:$$10.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars),self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,2)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(458,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$11(chars){var self=null==$$11.$$s?this:$$11.$$s;return null==chars&&(chars=nil),self.$emit("tRATIONAL",self.$Rational(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(460,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$12(chars){var self=null==$$12.$$s?this:$$12.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,self.$Rational(chars)))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(459,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$13(chars){var self=null==$$13.$$s?this:$$13.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars),self.ts,$rb_minus(self.te,6)),p=$rb_minus(p,6)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(137,$ret_or_1))self.escape="",codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1)),codepoint_s=$rb_plus(self.escape_s,2),$truthy($rb_lt(self.version,24))&&(($truthy(codepoints["$start_with?"](" "))||$truthy(codepoints["$start_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3))),$truthy(spaces_p=codepoints.$index(/[ \t]{2}/))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2))),($truthy(codepoints["$end_with?"](" "))||$truthy(codepoints["$end_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))),function(){var $brk=Opal.new_brk();try{$send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],(function $$14($mlhs_tmp1){var $c,self=null==$$14.$$s?this:$$14.$$s,codepoint_str=nil,spaces=nil,codepoint=nil;return null==self.escape&&(self.escape=nil),null==$mlhs_tmp1&&($mlhs_tmp1=nil),codepoint_str=null==($c=$to_ary($mlhs_tmp1))[0]?nil:$c[0],spaces=null==$c[1]?nil:$c[1],$truthy(spaces)?codepoint_s=$rb_plus(codepoint_s,spaces.$length()):(codepoint=codepoint_str.$to_i(16),$truthy($rb_ge(codepoint,1114112))&&(self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length()))),Opal.brk(nil,$brk)),self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$("Encoding"),"UTF_8"))),codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length()))}),{$$arity:1,$$s:self,$$brk:$brk,$$has_top_level_mlhs_arg:!0})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(168,$ret_or_1))self.escape="",codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1)),codepoint_s=$rb_plus(self.escape_s,2),$truthy($rb_lt(self.version,24))&&(($truthy(codepoints["$start_with?"](" "))||$truthy(codepoints["$start_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3))),$truthy(spaces_p=codepoints.$index(/[ \t]{2}/))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2))),($truthy(codepoints["$end_with?"](" "))||$truthy(codepoints["$end_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))),function(){var $brk=Opal.new_brk();try{$send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],(function $$15($mlhs_tmp1){var $c,self=null==$$15.$$s?this:$$15.$$s,codepoint_str=nil,spaces=nil,codepoint=nil;return null==self.escape&&(self.escape=nil),null==$mlhs_tmp1&&($mlhs_tmp1=nil),codepoint_str=null==($c=$to_ary($mlhs_tmp1))[0]?nil:$c[0],spaces=null==$c[1]?nil:$c[1],$truthy(spaces)?codepoint_s=$rb_plus(codepoint_s,spaces.$length()):(codepoint=codepoint_str.$to_i(16),$truthy($rb_ge(codepoint,1114112))&&(self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length()))),Opal.brk(nil,$brk)),self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$("Encoding"),"UTF_8"))),codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length()))}),{$$arity:1,$$s:self,$$brk:$brk,$$has_top_level_mlhs_arg:!0})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(382,$ret_or_1)){self.escape="",codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1)),codepoint_s=$rb_plus(self.escape_s,2),$truthy($rb_lt(self.version,24))&&(($truthy(codepoints["$start_with?"](" "))||$truthy(codepoints["$start_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3))),$truthy(spaces_p=codepoints.$index(/[ \t]{2}/))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2))),($truthy(codepoints["$end_with?"](" "))||$truthy(codepoints["$end_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))),function(){var $brk=Opal.new_brk();try{$send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],(function $$16($mlhs_tmp1){var $c,self=null==$$16.$$s?this:$$16.$$s,codepoint_str=nil,spaces=nil,codepoint=nil;return null==self.escape&&(self.escape=nil),null==$mlhs_tmp1&&($mlhs_tmp1=nil),codepoint_str=null==($c=$to_ary($mlhs_tmp1))[0]?nil:$c[0],spaces=null==$c[1]?nil:$c[1],$truthy(spaces)?codepoint_s=$rb_plus(codepoint_s,spaces.$length()):(codepoint=codepoint_str.$to_i(16),$truthy($rb_ge(codepoint,1114112))&&(self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length()))),Opal.brk(nil,$brk)),self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$("Encoding"),"UTF_8"))),codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length()))}),{$$arity:1,$$s:self,$$brk:$brk,$$has_top_level_mlhs_arg:!0})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(118,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(149,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(363,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(121,$ret_or_1))self.$diagnostic("fatal","invalid_escape"),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(152,$ret_or_1))self.$diagnostic("fatal","invalid_escape"),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(366,$ret_or_1)){self.$diagnostic("fatal","invalid_escape"),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(123,$ret_or_1))self.escape="",self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(154,$ret_or_1))self.escape="",self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(368,$ret_or_1)){self.escape="",self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(120,$ret_or_1))self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(151,$ret_or_1))self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(365,$ret_or_1)){self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(140,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(171,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(385,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(139,$ret_or_1))self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(170,$ret_or_1))self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(384,$ret_or_1)){self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2))),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(134,$ret_or_1))self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$("Encoding"),"UTF_8")),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(165,$ret_or_1))self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$("Encoding"),"UTF_8")),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(379,$ret_or_1)){self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$("Encoding"),"UTF_8")),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(133,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(164,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(378,$ret_or_1)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(138,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(169,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(383,$ret_or_1)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(135,$ret_or_1))self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(166,$ret_or_1))self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(380,$ret_or_1)){self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(119,$ret_or_1))self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(150,$ret_or_1))self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(364,$ret_or_1)){self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(177,$ret_or_1))self.escape_s=p,self.escape=nil,self.te=$rb_plus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(182,$ret_or_1))self.escape_s=p,self.escape=nil,self.te=$rb_plus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(58,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.newline_s=p;else if($eqeqeq(31,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p;else if($eqeqeq(33,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p;else if($eqeqeq(35,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p;else if($eqeqeq(219,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(238,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(246,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(34,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(277,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(269,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(288,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(300,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(296,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(59,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=$rb_plus(p,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(50,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=$rb_plus(p,1),self.$emit("tIDENTIFIER",ident_tok,ident_ts,ident_te),p=$rb_minus(ident_te,1),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](ident_tok))&&$truthy($rb_lt(self.version,25))?self.cs=465:self.cs=525,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(318,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(402,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(398,$ret_or_1)){if($truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),$truthy(self.context.$in_kwarg())){p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}self.cs=186,_goto_level=20;continue}if($eqeqeq(411,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(408,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),self.cs=186,_goto_level=20;continue}if($eqeqeq(495,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(427,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),self.cs=990,_goto_level=20;continue}if($eqeqeq(101,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(268,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),self.$emit("tLAMBEG","{".$freeze(),$rb_minus(self.te,1),self.te)):self.$emit("tLCURLY","{".$freeze(),$rb_minus(self.te,1),self.te),self.command_start=!0,self.paren_nest=$rb_plus(self.paren_nest,1),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(290,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),self.$emit("tLAMBEG","{".$freeze())):self.$emit("tLBRACE_ARG","{".$freeze()),self.paren_nest=$rb_plus(self.paren_nest,1),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(393,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),self.command_start=!0,self.$emit("tLAMBEG","{".$freeze())):self.$emit("tLBRACE","{".$freeze()),self.paren_nest=$rb_plus(self.paren_nest,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(508,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLAMBEG","{".$freeze()):self.$emit("kDO_LAMBDA","do".$freeze())):$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLCURLY","{".$freeze()):self.$emit_do(),$eqeq(self.$tok(),"{".$freeze())&&(self.paren_nest=$rb_plus(self.paren_nest,1)),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(509,$ret_or_1)){if(current_literal=self.$literal(),$truthy(current_literal)&&$truthy(current_literal.$end_interp_brace_and_try_closing())){$truthy(self["$version?"](18,19))?(self.$emit("tRCURLY","}".$freeze(),$rb_minus(p,1),p),self.cond.$lexpop(),self.cmdarg.$lexpop()):self.$emit("tSTRING_DEND","}".$freeze(),$rb_minus(p,1),p),$truthy(current_literal.$saved_herebody_s())&&(self.herebody_s=current_literal.$saved_herebody_s()),p=$rb_minus(p,1),self.cs=self.$next_state_for_literal(current_literal),p=$rb_plus(p,1),_goto_level=40;continue}self.paren_nest=$rb_minus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),$truthy($rb_lt(self.version,24))?(self.cond.$lexpop(),self.cmdarg.$lexpop()):(self.cond.$pop(),self.cmdarg.$pop()),($eqeq(self.$tok(),"}".$freeze())||$eqeq(self.$tok(),"]".$freeze()))&&($truthy($rb_ge(self.version,25))?self.cs=810:self.cs=531),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(61,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p);else if($eqeqeq(65,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.newline_s=p;else if($eqeqeq(222,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(237,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(249,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(271,$ret_or_1)){self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(286,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(298,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(324,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(400,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(410,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(431,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(103,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(243,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("tFID",self.$tok(self.ts,tm),self.ts,tm),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_minus(tm,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(338,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(309,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(424,$ret_or_1)){if(tm=p,$eqeqeq(145,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLAMBEG","{".$freeze()):self.$emit("kDO_LAMBDA","do".$freeze())):$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLCURLY","{".$freeze()):self.$emit_do(),$eqeq(self.$tok(),"{".$freeze())&&(self.paren_nest=$rb_plus(self.paren_nest,1)),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(146,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=352,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(147,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(148,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(149,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(150,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=539,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(151,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),$truthy(self["$version?"](18))&&$eqeq(self.$tok(),"not".$freeze())){self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(152,$ret_or_2)){p=$rb_minus(self.te,1),$truthy(self["$version?"](18))?(self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))||(self.cs=self.$arg_or_cmdarg(cmd_state))):self.$emit("k__ENCODING__","__ENCODING__".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(153,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(154,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(156,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",self.$tok(self.ts,$rb_minus(self.te,1)).$to_i(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else if($eqeqeq(157,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$tok(self.ts,$rb_minus(self.te,1)).$to_f(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{if($eqeqeq(158,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(160,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(164,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(165,$ret_or_2)){p=$rb_minus(self.te,1),$eqeq(tm,self.te)?self.$emit("tFID"):(self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1)),self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(167,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(168,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}}}else{if($eqeqeq(244,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tFID",self.$tok(self.ts,tm),self.ts,tm),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_minus(tm,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(339,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(311,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(425,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),$eqeq(tm,self.te)?self.$emit("tFID"):(self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1)),self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(340,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(312,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(341,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(313,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(345,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(316,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(344,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(315,$ret_or_1)){if(tm=$rb_minus(p,2),$eqeqeq(99,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(106,$ret_or_2))p=$rb_minus(self.te,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(117,$ret_or_2)){if(p=$rb_minus(self.te,1),$truthy($rb_ge(self.version,27))){self.$emit("tPIPE",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}p=$rb_minus(p,2),self.cs=810,_goto_level=20;continue}if($eqeqeq(121,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(122,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm),p=$rb_minus(tm,1),self.cs=539,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(123,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(127,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(128,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(132,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}}}else{if($eqeqeq(342,$ret_or_1)){tm=$rb_minus(p,3),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(314,$ret_or_1)){tm=$rb_minus(p,3),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(343,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(490,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(267,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit("tLBRACK","[".$freeze(),$rb_minus(self.te,1),self.te),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(386,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit("tLBRACK","[".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(493,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit("tLBRACK2","[".$freeze()),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(496,$ret_or_1)){self.paren_nest=$rb_minus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),$truthy($rb_lt(self.version,24))?(self.cond.$lexpop(),self.cmdarg.$lexpop()):(self.cond.$pop(),self.cmdarg.$pop()),($eqeq(self.$tok(),"}".$freeze())||$eqeq(self.$tok(),"]".$freeze()))&&($truthy($rb_ge(self.version,25))?self.cs=810:self.cs=531),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(259,$ret_or_1)){if(self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),$truthy(self["$version?"](18))){self.$emit("tLPAREN2","(".$freeze(),$rb_minus(self.te,1),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}self.$emit("tLPAREN_ARG","(".$freeze(),$rb_minus(self.te,1),self.te),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(272,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit("tLPAREN2","(".$freeze()),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(280,$ret_or_1)){if(self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit("tLPAREN_ARG","(".$freeze(),$rb_minus(self.te,1),self.te),$truthy(self["$version?"](18))){self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(328,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit("tLPAREN","(".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(437,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(438,$ret_or_1)){self.paren_nest=$rb_minus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),$truthy($rb_lt(self.version,24))?(self.cond.$lexpop(),self.cmdarg.$lexpop()):(self.cond.$pop(),self.cmdarg.$pop()),($eqeq(self.$tok(),"}".$freeze())||$eqeq(self.$tok(),"]".$freeze()))&&($truthy($rb_ge(self.version,25))?self.cs=810:self.cs=531),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(72,$ret_or_1))heredoc_e=p,self.newline_s=p;else if($eqeqeq(353,$ret_or_1)){if(new_herebody_s=p,self.te=p,p=$rb_minus(p,1),self.$tok(self.ts,heredoc_e)["$=~"](/^<<(-?)(~?)(["'`]?)(.*)\3$/m),indent=$truthy($ret_or_2=(($b=$gvars["~"])===nil?nil:$b["$[]"](1))["$empty?"]()["$!"]())?$ret_or_2:(($b=$gvars["~"])===nil?nil:$b["$[]"](2))["$empty?"]()["$!"](),dedent_body=(($b=$gvars["~"])===nil?nil:$b["$[]"](2))["$empty?"]()["$!"](),type=$truthy((($b=$gvars["~"])===nil?nil:$b["$[]"](3))["$empty?"]())?'<<"'.$freeze():$rb_plus("<<".$freeze(),($b=$gvars["~"])===nil?nil:$b["$[]"](3)),delimiter=($b=$gvars["~"])===nil?nil:$b["$[]"](4),$truthy($rb_ge(self.version,27))?($truthy($rb_gt(delimiter.$count("\n"),0))||$truthy($rb_gt(delimiter.$count("\r"),0)))&&self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1))):$truthy($rb_ge(self.version,24))&&$truthy($rb_gt(delimiter.$count("\n"),0))&&($truthy(delimiter["$end_with?"]("\n"))?(self.$diagnostic("warning","heredoc_id_ends_with_nl",nil,self.$range(self.ts,$rb_plus(self.ts,1))),delimiter=delimiter.$rstrip()):self.$diagnostic("fatal","heredoc_id_has_newline",nil,self.$range(self.ts,$rb_plus(self.ts,1)))),$truthy(dedent_body)&&$truthy(self["$version?"](18,19,20,21,22))){self.$emit("tLSHFT","<<".$freeze(),self.ts,$rb_plus(self.ts,2)),p=$rb_plus(self.ts,1),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$push_literal(type,delimiter,self.ts,heredoc_e,indent,dedent_body),self.herebody_s=$truthy($ret_or_2=self.herebody_s)?$ret_or_2:new_herebody_s,p=$rb_minus(self.herebody_s,1)}else{if($eqeqeq(348,$ret_or_1)){tm=$rb_minus(p,1),diag_msg="ivar_name",self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te)):(self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=self.ts),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(351,$ret_or_1)){tm=$rb_minus(p,2),diag_msg="cvar_name",self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te)):(self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=self.ts),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(359,$ret_or_1)){self.escape=nil,self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(389,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm),p=$rb_minus(tm,1),self.cs=539,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(480,$ret_or_1))self.num_base=16,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(474,$ret_or_1))self.num_base=10,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(477,$ret_or_1))self.num_base=8,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(471,$ret_or_1))self.num_base=2,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(486,$ret_or_1))self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p;else if($eqeqeq(449,$ret_or_1))self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p;else if($eqeqeq(487,$ret_or_1))self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$17(chars){return null==chars&&(chars=nil),(null==$$17.$$s?this:$$17.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self});else if($eqeqeq(8,$ret_or_1))self.te=$rb_plus(p,1),self.newline_s=p;else if($eqeqeq(453,$ret_or_1))self.te=$rb_plus(p,1),self.num_suffix_s=p;else if($eqeqeq(228,$ret_or_1))self.te=$rb_plus(p,1),self.act=43;else if($eqeqeq(215,$ret_or_1))self.te=$rb_plus(p,1),self.act=44;else if($eqeqeq(211,$ret_or_1))self.te=$rb_plus(p,1),self.act=45;else if($eqeqeq(27,$ret_or_1))self.te=$rb_plus(p,1),self.act=72;else if($eqeqeq(261,$ret_or_1))self.te=$rb_plus(p,1),self.act=73;else if($eqeqeq(28,$ret_or_1))self.te=$rb_plus(p,1),self.act=78;else if($eqeqeq(254,$ret_or_1))self.te=$rb_plus(p,1),self.act=79;else if($eqeqeq(281,$ret_or_1))self.te=$rb_plus(p,1),self.act=85;else if($eqeqeq(46,$ret_or_1))self.te=$rb_plus(p,1),self.act=86;else if($eqeqeq(302,$ret_or_1))self.te=$rb_plus(p,1),self.act=93;else if($eqeqeq(291,$ret_or_1))self.te=$rb_plus(p,1),self.act=94;else if($eqeqeq(70,$ret_or_1))self.te=$rb_plus(p,1),self.act=106;else if($eqeqeq(394,$ret_or_1))self.te=$rb_plus(p,1),self.act=117;else if($eqeqeq(305,$ret_or_1))self.te=$rb_plus(p,1),self.act=121;else if($eqeqeq(388,$ret_or_1))self.te=$rb_plus(p,1),self.act=122;else if($eqeqeq(387,$ret_or_1))self.te=$rb_plus(p,1),self.act=123;else if($eqeqeq(75,$ret_or_1))self.te=$rb_plus(p,1),self.act=127;else if($eqeqeq(303,$ret_or_1))self.te=$rb_plus(p,1),self.act=128;else if($eqeqeq(306,$ret_or_1))self.te=$rb_plus(p,1),self.act=132;else if($eqeqeq(504,$ret_or_1))self.te=$rb_plus(p,1),self.act=145;else if($eqeqeq(499,$ret_or_1))self.te=$rb_plus(p,1),self.act=146;else if($eqeqeq(507,$ret_or_1))self.te=$rb_plus(p,1),self.act=148;else if($eqeqeq(500,$ret_or_1))self.te=$rb_plus(p,1),self.act=149;else if($eqeqeq(501,$ret_or_1))self.te=$rb_plus(p,1),self.act=150;else if($eqeqeq(506,$ret_or_1))self.te=$rb_plus(p,1),self.act=151;else if($eqeqeq(498,$ret_or_1))self.te=$rb_plus(p,1),self.act=152;else if($eqeqeq(492,$ret_or_1))self.te=$rb_plus(p,1),self.act=153;else if($eqeqeq(418,$ret_or_1))self.te=$rb_plus(p,1),self.act=154;else if($eqeqeq(451,$ret_or_1))self.te=$rb_plus(p,1),self.act=157;else if($eqeqeq(82,$ret_or_1))self.te=$rb_plus(p,1),self.act=158;else if($eqeqeq(421,$ret_or_1))self.te=$rb_plus(p,1),self.act=160;else if($eqeqeq(412,$ret_or_1))self.te=$rb_plus(p,1),self.act=164;else if($eqeqeq(423,$ret_or_1))self.te=$rb_plus(p,1),self.act=165;else if($eqeqeq(416,$ret_or_1))self.te=$rb_plus(p,1),self.act=167;else if($eqeqeq(422,$ret_or_1))self.te=$rb_plus(p,1),self.act=168;else if($eqeqeq(88,$ret_or_1))self.te=$rb_plus(p,1),self.act=181;else if($eqeqeq(511,$ret_or_1))self.te=$rb_plus(p,1),self.act=185;else if($eqeqeq(183,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string()),self.escape_s=p,self.escape=nil}else if($eqeqeq(124,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(155,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(369,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(131,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(162,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(376,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(122,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(153,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(367,$ret_or_1)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(130,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(161,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(375,$ret_or_1)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(126,$ret_or_1))self.escape="",self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(157,$ret_or_1))self.escape="",self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(371,$ret_or_1)){self.escape="",self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(129,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(160,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(374,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(136,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(167,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(381,$ret_or_1)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(116,$ret_or_1))self.escape_s=p,self.escape=nil,self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(148,$ret_or_1))self.escape_s=p,self.escape=nil,self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(362,$ret_or_1)){self.escape_s=p,self.escape=nil,self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(62,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.newline_s=p;else if($eqeqeq(221,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(236,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(248,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(270,$ret_or_1)){self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(285,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(297,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(323,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(399,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(409,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(430,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(102,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(482,$ret_or_1))self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$18(chars){return null==chars&&(chars=nil),(null==$$18.$$s?this:$$18.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self});else if($eqeqeq(446,$ret_or_1))self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$19(chars){return null==chars&&(chars=nil),(null==$$19.$$s?this:$$19.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self});else{if($eqeqeq(461,$ret_or_1)){self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$20(chars){return null==chars&&(chars=nil),(null==$$20.$$s?this:$$20.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(454,$ret_or_1)){self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$21(chars){var self=null==$$21.$$s?this:$$21.$$s;return null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(450,$ret_or_1)){self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$22(chars){var self=null==$$22.$$s?this:$$22.$$s;return null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(276,$ret_or_1))self.te=$rb_plus(p,1),self.newline_s=p,self.act=79;else if($eqeqeq(36,$ret_or_1))self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.act=78;else if($eqeqeq(47,$ret_or_1))self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.act=86;else if($eqeqeq(94,$ret_or_1))self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.act=181;else if($eqeqeq(66,$ret_or_1))self.te=$rb_plus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=99;else if($eqeqeq(85,$ret_or_1))self.te=$rb_plus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=147;else if($eqeqeq(93,$ret_or_1))self.te=$rb_plus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=181;else if($eqeqeq(38,$ret_or_1))self.te=$rb_plus(p,1),tm=p,self.act=73;else if($eqeqeq(391,$ret_or_1))self.te=$rb_plus(p,1),tm=p,self.act=127;else if($eqeqeq(390,$ret_or_1))self.te=$rb_plus(p,1),tm=p,self.act=128;else if($eqeqeq(483,$ret_or_1))self.te=$rb_plus(p,1),self.num_base=10,self.num_digits_s=self.ts,self.act=154;else if($eqeqeq(127,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(158,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(372,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(125,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(156,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(370,$ret_or_1)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(132,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(163,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(377,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(128,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(159,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(373,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(478,$ret_or_1)){self.num_base=16,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$23(chars){return null==chars&&(chars=nil),(null==$$23.$$s?this:$$23.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(472,$ret_or_1)){self.num_base=10,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$24(chars){return null==chars&&(chars=nil),(null==$$24.$$s?this:$$24.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(475,$ret_or_1)){self.num_base=8,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$25(chars){return null==chars&&(chars=nil),(null==$$25.$$s?this:$$25.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(469,$ret_or_1)){self.num_base=2,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$26(chars){return null==chars&&(chars=nil),(null==$$26.$$s?this:$$26.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(481,$ret_or_1)){self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$27(chars){return null==chars&&(chars=nil),(null==$$27.$$s?this:$$27.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(445,$ret_or_1)){self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$28(chars){return null==chars&&(chars=nil),(null==$$28.$$s?this:$$28.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}$eqeqeq(32,$ret_or_1)?(self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p,self.act=73):$eqeqeq(63,$ret_or_1)?(self.te=$rb_plus(p,1),self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=99):$eqeqeq(92,$ret_or_1)?(self.te=$rb_plus(p,1),self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=181):$eqeqeq(488,$ret_or_1)?(self.te=$rb_plus(p,1),self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$29(chars){return null==chars&&(chars=nil),(null==$$29.$$s?this:$$29.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.act=156):$eqeqeq(484,$ret_or_1)?(self.te=$rb_plus(p,1),self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$30(chars){return null==chars&&(chars=nil),(null==$$30.$$s?this:$$30.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.act=156):$eqeqeq(448,$ret_or_1)&&(self.te=$rb_plus(p,1),self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$31(chars){return null==chars&&(chars=nil),(null==$$31.$$s?this:$$31.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.act=156)}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}if($truthy($rb_le(_goto_level,20))){if($eqeqeq(96,$ret_or_1=_lex_to_state_actions["$[]"](self.cs))&&(self.ts=nil),$eqeq(self.cs,0)){_goto_level=40;continue}if(p=$rb_plus(p,1),$neqeq(p,pe)){_goto_level=10;continue}}if($truthy($rb_le(_goto_level,30))&&$eqeq(p,eof)&&$truthy($rb_gt(_lex_eof_trans["$[]"](self.cs),0)))_trans=$rb_minus(_lex_eof_trans["$[]"](self.cs),1),_goto_level=15;else if($truthy($rb_le(_goto_level,40)))break}return $truthy(!1),self.p=p,$truthy(self.token_queue["$any?"]())?self.token_queue.$shift():$eqeq(self.cs,klass.$lex_error())?[!1,["$error".$freeze(),self.$range($rb_minus(p,1),p)]]:(eof=self.source_pts.$size(),[!1,["$eof".$freeze(),self.$range(eof,eof)]])}),0),self.$protected(),$def(self,"$eof_codepoint?",(function(point){return[4,26,0]["$include?"](point)}),1),$def(self,"$version?",(function($a){var self=this;return Opal.slice.call(arguments)["$include?"](self.version)}),-1),$def(self,"$stack_pop",(function(){return this.top=$rb_minus(this.top,1),this.stack["$[]"](this.top)}),0),$def(self,"$encode_escape",(function(ord){return ord.$chr().$force_encoding(this.source_buffer.$source().$encoding())}),1),$def(self,"$tok",(function(s,e){return null==s&&(s=this.ts),null==e&&(e=this.te),this.source_buffer.$slice(Opal.Range.$new(s,e,!0))}),-1),$def(self,"$range",(function(s,e){return null==s&&(s=this.ts),null==e&&(e=this.te),$$$($$$($$("Parser"),"Source"),"Range").$new(this.source_buffer,s,e)}),-1),$def(self,"$emit",(function(type,value,s,e){var token;return null==value&&(value=this.$tok()),null==s&&(s=this.ts),null==e&&(e=this.te),token=[type,[value,this.$range(s,e)]],this.token_queue.$push(token),$truthy(this.tokens)&&this.tokens.$push(token),token}),-2),$def(self,"$emit_table",(function(table,s,e){var value;return null==s&&(s=this.ts),null==e&&(e=this.te),value=this.$tok(s,e),this.$emit(table["$[]"](value),value,s,e)}),-2),$def(self,"$emit_do",(function(do_block){return null==do_block&&(do_block=!1),$truthy(this.cond["$active?"]())?this.$emit("kDO_COND","do".$freeze()):$truthy(this.cmdarg["$active?"]())||$truthy(do_block)?this.$emit("kDO_BLOCK","do".$freeze()):this.$emit("kDO","do".$freeze())}),-1),$def(self,"$arg_or_cmdarg",(function(cmd_state){return $truthy(cmd_state)?this.$class().$lex_en_expr_cmdarg():this.$class().$lex_en_expr_arg()}),1),$def(self,"$emit_comment",(function(s,e){return null==s&&(s=this.ts),null==e&&(e=this.te),$truthy(this.comments)&&this.comments.$push($$$($$$($$("Parser"),"Source"),"Comment").$new(this.$range(s,e))),$truthy(this.tokens)&&this.tokens.$push(["tCOMMENT",[this.$tok(s,e),this.$range(s,e)]]),nil}),-1),$def(self,"$diagnostic",(function(type,reason,arguments$,location,highlights){return null==arguments$&&(arguments$=nil),null==location&&(location=this.$range()),null==highlights&&(highlights=[]),this.diagnostics.$process($$$($$("Parser"),"Diagnostic").$new(type,reason,arguments$,location,highlights))}),-3),$def(self,"$push_literal",(function($a){var args,self=this,new_literal=nil;return args=Opal.slice.call(arguments),new_literal=$send($$("Literal"),"new",[self].concat($to_a(args))),self.literal_stack.$push(new_literal),self.$next_state_for_literal(new_literal)}),-1),$def(self,"$next_state_for_literal",(function(literal){return $truthy(literal["$words?"]())&&$truthy(literal["$backslash_delimited?"]())?$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_backslash_delimited_words():this.$class().$lex_en_plain_backslash_delimited_words():$truthy(literal["$words?"]())&&$not(literal["$backslash_delimited?"]())?$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_words():this.$class().$lex_en_plain_words():$not(literal["$words?"]())&&$truthy(literal["$backslash_delimited?"]())?$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_backslash_delimited():this.$class().$lex_en_plain_backslash_delimited():$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_string():this.$class().$lex_en_plain_string()}),1),$def(self,"$literal",(function(){return this.literal_stack.$last()}),0),$def(self,"$pop_literal",(function(){var old_literal=nil;return old_literal=this.literal_stack.$pop(),this.dedent_level=old_literal.$dedent_level(),$eqeq(old_literal.$type(),"tREGEXP_BEG")?this.$class().$lex_en_regexp_modifiers():this.$class().$lex_en_expr_end()}),0),$const_set($nesting[0],"PUNCTUATION",$hash2(["=","&","|","!","^","+","-","*","/","%","~",",",";",".","..","...","[","]","(",")","?",":","&&","||","-@","+@","~@","**","->","=~","!~","==","!=",">",">>",">=","<","<<","<=","=>","::","===","<=>","[]","[]=","{","}","`","!@","&."],{"=":"tEQL","&":"tAMPER2","|":"tPIPE","!":"tBANG","^":"tCARET","+":"tPLUS","-":"tMINUS","*":"tSTAR2","/":"tDIVIDE","%":"tPERCENT","~":"tTILDE",",":"tCOMMA",";":"tSEMI",".":"tDOT","..":"tDOT2","...":"tDOT3","[":"tLBRACK2","]":"tRBRACK","(":"tLPAREN2",")":"tRPAREN","?":"tEH",":":"tCOLON","&&":"tANDOP","||":"tOROP","-@":"tUMINUS","+@":"tUPLUS","~@":"tTILDE","**":"tPOW","->":"tLAMBDA","=~":"tMATCH","!~":"tNMATCH","==":"tEQ","!=":"tNEQ",">":"tGT",">>":"tRSHFT",">=":"tGEQ","<":"tLT","<<":"tLSHFT","<=":"tLEQ","=>":"tASSOC","::":"tCOLON2","===":"tEQQ","<=>":"tCMP","[]":"tAREF","[]=":"tASET","{":"tLCURLY","}":"tRCURLY","`":"tBACK_REF2","!@":"tBANG","&.":"tANDDOT"})),$const_set($nesting[0],"PUNCTUATION_BEGIN",$hash2(["&","*","**","+","-","::","(","{","["],{"&":"tAMPER","*":"tSTAR","**":"tDSTAR","+":"tUPLUS","-":"tUMINUS","::":"tCOLON3","(":"tLPAREN","{":"tLBRACE","[":"tLBRACK"})),$const_set($nesting[0],"KEYWORDS",$hash2(["if","unless","while","until","rescue","defined?","BEGIN","END"],{if:"kIF_MOD",unless:"kUNLESS_MOD",while:"kWHILE_MOD",until:"kUNTIL_MOD",rescue:"kRESCUE_MOD","defined?":"kDEFINED",BEGIN:"klBEGIN",END:"klEND"})),$const_set($nesting[0],"KEYWORDS_BEGIN",$hash2(["if","unless","while","until","rescue","defined?","BEGIN","END"],{if:"kIF",unless:"kUNLESS",while:"kWHILE",until:"kUNTIL",rescue:"kRESCUE","defined?":"kDEFINED",BEGIN:"klBEGIN",END:"klEND"})),$send(["class","module","def","undef","begin","end","then","elsif","else","ensure","case","when","for","break","next","redo","retry","in","do","return","yield","super","self","nil","true","false","and","or","not","alias","__FILE__","__LINE__","__ENCODING__"],"each",[],(function(keyword){return null==keyword&&(keyword=nil),$writer=[keyword,($writer=[keyword,"k"+keyword.$upcase()],$send($$("KEYWORDS"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])],$send($$("KEYWORDS_BEGIN"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1)}($$("Parser"),0,$nesting)},Opal.modules["parser/lexer/literal"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$hash2=Opal.hash2,$enc=Opal.enc,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$to_ary=Opal.to_ary,$def=Opal.def,$eqeq=Opal.eqeq,$rb_minus=Opal.rb_minus,$neqeq=Opal.neqeq,$not=Opal.not,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$rb_gt=Opal.rb_gt;return Opal.add_stubs("attr_reader,attr_accessor,coerce_encoding,include?,send,+,[],fetch,==,!,heredoc?,start_with?,freeze,clear_buffer,emit_start_tok,type,=~,words?,delimiter?,-,extend_space,!=,flush_string,emit,each_char,===,%,>,nil?,<<,empty?,extend_content,protected,lstrip,b,dup,force_encoding,encoding,source,source_buffer,length"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Literal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.lexer=$proto.start_tok=$proto.str_type=$proto.monolithic=$proto.interpolate=$proto.heredoc_e=$proto.dedent_body=$proto.end_delim=$proto.start_delim=$proto.nesting=$proto.label_allowed=$proto.buffer=$proto.str_s=$proto.interp_braces=$proto.buffer_s=$proto.buffer_e=$proto.space_emitted=$proto.indent=nil,$const_set($nesting[0],"DELIMITERS",$hash2(["(","[","{","<"],{"(":$enc(")","ASCII-8BIT"),"[":$enc("]","ASCII-8BIT"),"{":$enc("}","ASCII-8BIT"),"<":$enc(">","ASCII-8BIT")})),$const_set($nesting[0],"TYPES",$hash2(["'","<<'","%q",'"','<<"',"%","%Q","%w","%W","%i","%I",":'","%s",':"',"/","%r","%x","`","<<`"],{"'":["tSTRING_BEG",!1],"<<'":["tSTRING_BEG",!1],"%q":["tSTRING_BEG",!1],'"':["tSTRING_BEG",!0],'<<"':["tSTRING_BEG",!0],"%":["tSTRING_BEG",!0],"%Q":["tSTRING_BEG",!0],"%w":["tQWORDS_BEG",!1],"%W":["tWORDS_BEG",!0],"%i":["tQSYMBOLS_BEG",!1],"%I":["tSYMBOLS_BEG",!0],":'":["tSYMBEG",!1],"%s":["tSYMBEG",!1],':"':["tSYMBEG",!0],"/":["tREGEXP_BEG",!0],"%r":["tREGEXP_BEG",!0],"%x":["tXSTRING_BEG",!0],"`":["tXSTRING_BEG",!0],"<<`":["tXSTRING_BEG",!0]})),self.$attr_reader("heredoc_e","str_s","dedent_level"),self.$attr_accessor("saved_herebody_s"),$def(self,"$initialize",(function(lexer,str_type,delimiter,str_s,heredoc_e,indent,dedent_body,label_allowed){var $a,$b,$ret_or_1,$ret_or_2;return null==heredoc_e&&(heredoc_e=nil),null==indent&&(indent=!1),null==dedent_body&&(dedent_body=!1),null==label_allowed&&(label_allowed=!1),this.lexer=lexer,this.nesting=1,str_type=this.$coerce_encoding(str_type),delimiter=this.$coerce_encoding(delimiter),$truthy($$("TYPES")["$include?"](str_type))||lexer.$send("diagnostic","error","unexpected_percent_str",$hash2(["type"],{type:str_type}),this.lexer.$send("range",str_s,$rb_plus(str_s,2))),this.str_type=str_type,this.str_s=str_s,$b=$$("TYPES")["$[]"](str_type),$a=$to_ary($b),this.start_tok=null==$a[0]?nil:$a[0],this.interpolate=null==$a[1]?nil:$a[1],this.start_delim=$truthy($$("DELIMITERS")["$include?"](delimiter))?delimiter:nil,this.end_delim=$$("DELIMITERS").$fetch(delimiter,delimiter),this.heredoc_e=heredoc_e,this.indent=indent,this.label_allowed=label_allowed,this.dedent_body=dedent_body,this.dedent_level=nil,this.interp_braces=0,this.space_emitted=!0,this.monolithic=$truthy($ret_or_1=$truthy($ret_or_2=this.start_tok["$=="]("tSTRING_BEG"))?[$enc("'","ASCII-8BIT"),$enc('"',"ASCII-8BIT")]["$include?"](str_type):$ret_or_2)?this["$heredoc?"]()["$!"]():$ret_or_1,$truthy(this.str_type["$start_with?"]($enc("%","ASCII-8BIT").$freeze()))&&(this.str_type=$rb_plus(this.str_type,delimiter)),this.$clear_buffer(),$truthy(this.monolithic)?nil:this.$emit_start_tok()}),-5),$def(self,"$interpolate?",(function(){return this.interpolate}),0),$def(self,"$words?",(function(){var $ret_or_1,$ret_or_2,$ret_or_3;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.$type()["$=="]("tWORDS_BEG"))?$ret_or_3:this.$type()["$=="]("tQWORDS_BEG"))?$ret_or_2:this.$type()["$=="]("tSYMBOLS_BEG"))?$ret_or_1:this.$type()["$=="]("tQSYMBOLS_BEG")}),0),$def(self,"$regexp?",(function(){return this.$type()["$=="]("tREGEXP_BEG")}),0),$def(self,"$heredoc?",(function(){return this.heredoc_e["$!"]()["$!"]()}),0),$def(self,"$plain_heredoc?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$heredoc?"]())?this.dedent_body["$!"]():$ret_or_1}),0),$def(self,"$squiggly_heredoc?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$heredoc?"]())?this.dedent_body:$ret_or_1}),0),$def(self,"$backslash_delimited?",(function(){return this.end_delim["$=="]($enc("\\","ASCII-8BIT").$freeze())}),0),$def(self,"$type",(function(){return this.start_tok}),0),$def(self,"$munge_escape?",(function(character){return character=this.$coerce_encoding(character),!(!$truthy(this["$words?"]())||!$truthy(character["$=~"](/[ \t\v\r\f\n]/)))||[$enc("\\","ASCII-8BIT").$freeze(),this.start_delim,this.end_delim]["$include?"](character)}),1),$def(self,"$nest_and_try_closing",(function(delimiter,ts,te,lookahead){return null==lookahead&&(lookahead=nil),delimiter=this.$coerce_encoding(delimiter),$truthy(this.start_delim)&&$eqeq(this.start_delim,delimiter)?this.nesting=$rb_plus(this.nesting,1):$truthy(this["$delimiter?"](delimiter))&&(this.nesting=$rb_minus(this.nesting,1)),$eqeq(this.nesting,0)?($truthy(this["$words?"]())&&this.$extend_space(ts,ts),$truthy(lookahead)&&$truthy(this.label_allowed)&&$eqeq(lookahead["$[]"](0),$enc(":","ASCII-8BIT"))&&$neqeq(lookahead["$[]"](1),$enc(":","ASCII-8BIT"))&&$eqeq(this.start_tok,"tSTRING_BEG")?(this.$flush_string(),this.$emit("tLABEL_END",this.end_delim,ts,$rb_plus(te,1))):$truthy(this.monolithic)?this.$emit("tSTRING",this.buffer,this.str_s,te):($truthy(this["$heredoc?"]())||this.$flush_string(),this.$emit("tSTRING_END",this.end_delim,ts,te))):nil}),-4),$def(self,"$infer_indent_level",(function(line){var self=this,indent_level=nil;return $not(self.dedent_body)?nil:(indent_level=0,function(){var $brk=Opal.new_brk();try{return $send(line,"each_char",[],(function $$9(char$){var $ret_or_1,self=null==$$9.$$s?this:$$9.$$s;return null==self.dedent_level&&(self.dedent_level=nil),null==char$&&(char$=nil),$eqeqeq(" ",$ret_or_1=char$)?indent_level=$rb_plus(indent_level,1):$eqeqeq("\t",$ret_or_1)?indent_level=$rb_plus(indent_level,$rb_minus(8,indent_level["$%"](8))):(($truthy(self.dedent_level["$nil?"]())||$truthy($rb_gt(self.dedent_level,indent_level)))&&(self.dedent_level=indent_level),void Opal.brk(nil,$brk))}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}())}),1),$def(self,"$start_interp_brace",(function(){return this.interp_braces=$rb_plus(this.interp_braces,1)}),0),$def(self,"$end_interp_brace_and_try_closing",(function(){return this.interp_braces=$rb_minus(this.interp_braces,1),this.interp_braces["$=="](0)}),0),$def(self,"$extend_string",(function(string,ts,te){var $ret_or_1;return this.buffer_s=$truthy($ret_or_1=this.buffer_s)?$ret_or_1:ts,this.buffer_e=te,this.buffer["$<<"](string)}),3),$def(self,"$flush_string",(function(){return $truthy(this.monolithic)&&(this.$emit_start_tok(),this.monolithic=!1),$truthy(this.buffer["$empty?"]())?nil:(this.$emit("tSTRING_CONTENT",this.buffer,this.buffer_s,this.buffer_e),this.$clear_buffer(),this.$extend_content())}),0),$def(self,"$extend_content",(function(){return this.space_emitted=!1}),0),$def(self,"$extend_space",(function(ts,te){return this.$flush_string(),$truthy(this.space_emitted)?nil:(this.$emit("tSPACE",nil,ts,te),this.space_emitted=!0)}),2),$def(self,"$supports_line_continuation_via_slash?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$words?"]()["$!"]())?this.interpolate:$ret_or_1}),0),self.$protected(),$def(self,"$delimiter?",(function(delimiter){return $truthy(this.indent)?this.end_delim["$=="](delimiter.$lstrip()):this.end_delim["$=="](delimiter)}),1),$def(self,"$coerce_encoding",(function(string){return string.$b()}),1),$def(self,"$clear_buffer",(function(){return this.buffer=$enc("","ASCII-8BIT").$dup(),this.buffer.$force_encoding(this.lexer.$source_buffer().$source().$encoding()),this.buffer_s=nil,this.buffer_e=nil}),0),$def(self,"$emit_start_tok",(function(){var str_e,$ret_or_1;return str_e=$truthy($ret_or_1=this.heredoc_e)?$ret_or_1:$rb_plus(this.str_s,this.str_type.$length()),this.$emit(this.start_tok,this.str_type,this.str_s,str_e)}),0),$def(self,"$emit",(function(token,type,s,e){return this.lexer.$send("emit",token,type,s,e)}),4)}(Opal.$r($nesting)("Lexer"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/lexer/stack_state"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$alias=Opal.alias;return Opal.add_stubs("freeze,clear,|,<<,&,>>,==,[],to_s"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super){var self=$klass($base,null,"StackState"),$proto=self.$$prototype;return $proto.stack=$proto.name=nil,$def(self,"$initialize",(function(name){return this.name=name.$freeze(),this.$clear()}),1),$def(self,"$clear",(function(){return this.stack=0}),0),$def(self,"$push",(function(bit){var bit_value;return bit_value=$truthy(bit)?1:0,this.stack=this.stack["$<<"](1)["$|"](bit_value),bit}),1),$def(self,"$pop",(function(){var bit_value=nil;return bit_value=this.stack["$&"](1),this.stack=this.stack["$>>"](1),bit_value["$=="](1)}),0),$def(self,"$lexpop",(function(){return this.stack=this.stack["$>>"](1)["$|"](this.stack["$&"](1)),this.stack["$[]"](0)["$=="](1)}),0),$def(self,"$active?",(function(){return this.stack["$[]"](0)["$=="](1)}),0),$def(self,"$empty?",(function(){return this.stack["$=="](0)}),0),$def(self,"$to_s",(function(){return"["+this.stack.$to_s(2)+" <= "+this.name+"]"}),0),$alias(self,"inspect","to_s")}(Opal.$r($nesting)("Lexer"))}($nesting[0],$nesting)},Opal.modules["parser/lexer/dedenter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$eqeq=Opal.eqeq,$send=Opal.send,$truthy=Opal.truthy,$to_ary=Opal.to_ary,$slice=Opal.slice,$rb_le=Opal.rb_le,$eqeqeq=Opal.eqeqeq,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$rb_divide=Opal.rb_divide;return Opal.add_stubs("encoding,split,force_encoding,==,length,map!,each,each_char,<=,===,+,-,>,*,/,slice!,replace,join,end_with?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Dedenter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.at_line_begin=nil,$const_set($nesting[0],"TAB_WIDTH",8),$def(self,"$initialize",(function(dedent_level){return this.dedent_level=dedent_level,this.at_line_begin=!0,this.indent_level=0}),1),$def(self,"$dedent",(function(string){var $a,original_encoding,self=this,lines=nil,lines_to_dedent=nil;return original_encoding=string.$encoding(),lines=string.$force_encoding($$$($$("Encoding"),"BINARY")).$split("\\\n"),$eqeq(lines.$length(),1)?lines=[string.$force_encoding(original_encoding)]:$send(lines,"map!",[],(function(s){return null==s&&(s=nil),s.$force_encoding(original_encoding)}),1),$truthy(self.at_line_begin)?lines_to_dedent=lines:(null==($a=$to_ary(lines))[0]?nil:$a[0],lines_to_dedent=$slice.call($a,1)),function(){var $brk=Opal.new_brk();try{$send(lines_to_dedent,"each",[],(function $$2(line){var self=null==$$2.$$s?this:$$2.$$s,left_to_remove=nil,remove=nil;return null==self.dedent_level&&(self.dedent_level=nil),null==line&&(line=nil),left_to_remove=self.dedent_level,remove=0,function(){var $brk=Opal.new_brk();try{$send(line,"each_char",[],(function $$3(char$){var $ret_or_1,self=null==$$3.$$s?this:$$3.$$s;return null==self.dedent_level&&(self.dedent_level=nil),null==char$&&(char$=nil),$truthy($rb_le(left_to_remove,0))&&Opal.brk(nil,$brk),$eqeqeq(" ",$ret_or_1=char$)?(remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,1)):$eqeqeq("\t",$ret_or_1)?($truthy($rb_gt($rb_times($$("TAB_WIDTH"),$rb_plus($rb_divide(remove,$$("TAB_WIDTH")),1)),self.dedent_level))&&Opal.brk(nil,$brk),remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,$$("TAB_WIDTH"))):void Opal.brk(nil,$brk)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),line["$slice!"](0,remove)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),string.$replace(lines.$join()),self.at_line_begin=string["$end_with?"]("\n")}),1),$def(self,"$interrupt",(function(){return this.at_line_begin=!1}),0)}(Opal.$r($nesting)("Lexer"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/builders/default"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$hash2=Opal.hash2,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$not=Opal.not,$send=Opal.send,$neqeq=Opal.neqeq,$to_ary=Opal.to_ary,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$range=Opal.range,$slice=Opal.slice,$rb_gt=Opal.rb_gt,$rb_le=Opal.rb_le,$rb_lt=Opal.rb_lt;return Opal.add_stubs("attr_accessor,n0,token_map,numeric,n,value,new,loc,private,===,+@,-@,updated,join,expression,string_value,delimited_string_map,unquoted_map,collapse_string_parts?,nil?,first,children,string_map,prefix_string_map,to_sym,collection_map,empty?,==,version,diagnostic,!,type,dedent,map,interrupt,compact,uniq,sort,each_char,to_proc,static_regexp,message,<<,regexp_map,unary_op_map,binary_op_map,!=,%,size,last,each_slice,pair_keyword_map,pair_quoted_map,symbol_compose,adjust,=~,pair_keyword,accessible,upto,-,length,+,[],>=,range_map,variable_map,name,source_buffer,dup,line,emit_encoding,class,any?,end_with?,to_s,try_declare_numparam,declared?,static_env,var_send_map,top,current_arg_stack,parser,constant_map,in_def,context,check_assignment_to_numparam,check_reserved_for_numparam,declare,with_expression,with_operator,join_exprs,module_definition_map,definition_map,endless_definition_map,validate_definee,keyword_map,check_duplicate_args,validate_no_forward_arg_after_restarg,emit_forward_arg,forward_arg,arg_prefix_map,kwarg_map,emit_procarg0,emit_arg_inside_procarg0,location,resize,end,call_type_for_dot,emit_kwargs,rewrite_hash_args_to_kwargs,send_map,emit_lambda,expr_map,keyword,include?,block_map,array,emit_index,index_map,send_index_map,send_binary_op_map,static_regexp_node,each,names,send_unary_op_map,check_condition,condition_map,keyword_mod_map,ternary_map,for_map,>,count,rescue_body_map,eh_keyword_map,push,none?,one?,begin,guard_map,check_lvar_name,check_duplicate_pattern_variable,match_hash_var_from_str,match_var,check_duplicate_pattern_key,static_string,pair_quoted,match_hash_var,<=,check_duplicate_arg,is_a?,[]=,arg_name_collides?,<,in_dynamic_block?,has_numparams?,max_numparam_stack,start_with?,pattern_variables,pattern_hash_keys,with,begin_pos,end_pos,encode,valid_encoding?,process,diagnostics,send,kwargs?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Default"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.parser=$proto.emit_file_line_as_literals=nil,function(self,$parent_nesting){self.$attr_accessor("emit_lambda")}(Opal.get_singleton_class(self)),self.emit_lambda=!1,function(self,$parent_nesting){self.$attr_accessor("emit_procarg0")}(Opal.get_singleton_class(self)),self.emit_procarg0=!1,function(self,$parent_nesting){self.$attr_accessor("emit_encoding")}(Opal.get_singleton_class(self)),self.emit_encoding=!1,function(self,$parent_nesting){self.$attr_accessor("emit_index")}(Opal.get_singleton_class(self)),self.emit_index=!1,function(self,$parent_nesting){self.$attr_accessor("emit_arg_inside_procarg0")}(Opal.get_singleton_class(self)),self.emit_arg_inside_procarg0=!1,function(self,$parent_nesting){self.$attr_accessor("emit_forward_arg")}(Opal.get_singleton_class(self)),self.emit_forward_arg=!1,function(self,$parent_nesting){self.$attr_accessor("emit_kwargs")}(Opal.get_singleton_class(self)),self.emit_kwargs=!1,function(self,$parent_nesting){self.$attr_accessor("emit_match_pattern")}(Opal.get_singleton_class(self)),self.emit_match_pattern=!1,function(self,$parent_nesting){$def(self,"$modernize",(function(){return this.emit_lambda=!0,this.emit_procarg0=!0,this.emit_encoding=!0,this.emit_index=!0,this.emit_arg_inside_procarg0=!0,this.emit_forward_arg=!0,this.emit_kwargs=!0,this.emit_match_pattern=!0}),0)}(Opal.get_singleton_class(self)),self.$attr_accessor("parser"),self.$attr_accessor("emit_file_line_as_literals"),$def(self,"$initialize",(function(){return this.emit_file_line_as_literals=!0}),0),$def(self,"$nil",(function(nil_t){return this.$n0("nil",this.$token_map(nil_t))}),1),$def(self,"$true",(function(true_t){return this.$n0("true",this.$token_map(true_t))}),1),$def(self,"$false",(function(false_t){return this.$n0("false",this.$token_map(false_t))}),1),$def(self,"$integer",(function(integer_t){return this.$numeric("int",integer_t)}),1),$def(self,"$float",(function(float_t){return this.$numeric("float",float_t)}),1),$def(self,"$rational",(function(rational_t){return this.$numeric("rational",rational_t)}),1),$def(self,"$complex",(function(complex_t){return this.$numeric("complex",complex_t)}),1),$def(self,"$numeric",(function(kind,token){return this.$n(kind,[this.$value(token)],$$$($$$($$("Source"),"Map"),"Operator").$new(nil,this.$loc(token)))}),2),self.$private("numeric"),$def(self,"$unary_num",(function(unary_t,numeric){var $a,$ret_or_1,value=nil,operator_loc=nil;return value=null==($a=[].concat($to_a(numeric)))[0]?nil:$a[0],operator_loc=this.$loc(unary_t),$eqeqeq("+",$ret_or_1=this.$value(unary_t))?value=value["$+@"]():$eqeqeq("-",$ret_or_1)&&(value=value["$-@"]()),numeric.$updated(nil,[value],$hash2(["location"],{location:$$$($$$($$("Source"),"Map"),"Operator").$new(operator_loc,operator_loc.$join(numeric.$loc().$expression()))}))}),2),$def(self,"$__LINE__",(function(__LINE__t){return this.$n0("__LINE__",this.$token_map(__LINE__t))}),1),$def(self,"$string",(function(string_t){return this.$n("str",[this.$string_value(string_t)],this.$delimited_string_map(string_t))}),1),$def(self,"$string_internal",(function(string_t){return this.$n("str",[this.$string_value(string_t)],this.$unquoted_map(string_t))}),1),$def(self,"$string_compose",(function(begin_t,parts,end_t){return $truthy(this["$collapse_string_parts?"](parts))?$truthy(begin_t["$nil?"]())&&$truthy(end_t["$nil?"]())?parts.$first():this.$n("str",parts.$first().$children(),this.$string_map(begin_t,parts,end_t)):this.$n("dstr",[].concat($to_a(parts)),this.$string_map(begin_t,parts,end_t))}),3),$def(self,"$character",(function(char_t){return this.$n("str",[this.$string_value(char_t)],this.$prefix_string_map(char_t))}),1),$def(self,"$__FILE__",(function(__FILE__t){return this.$n0("__FILE__",this.$token_map(__FILE__t))}),1),$def(self,"$symbol",(function(symbol_t){return this.$n("sym",[this.$string_value(symbol_t).$to_sym()],this.$prefix_string_map(symbol_t))}),1),$def(self,"$symbol_internal",(function(symbol_t){return this.$n("sym",[this.$string_value(symbol_t).$to_sym()],this.$unquoted_map(symbol_t))}),1),$def(self,"$symbol_compose",(function(begin_t,parts,end_t){var str=nil;return $truthy(this["$collapse_string_parts?"](parts))?(str=parts.$first(),this.$n("sym",[str.$children().$first().$to_sym()],this.$collection_map(begin_t,str.$loc().$expression(),end_t))):$eqeq(this.parser.$version(),18)&&$truthy(parts["$empty?"]())?this.$diagnostic("error","empty_symbol",nil,this.$loc(begin_t).$join(this.$loc(end_t))):this.$n("dsym",[].concat($to_a(parts)),this.$collection_map(begin_t,parts,end_t))}),3),$def(self,"$xstring_compose",(function(begin_t,parts,end_t){return this.$n("xstr",[].concat($to_a(parts)),this.$string_map(begin_t,parts,end_t))}),3),$def(self,"$dedent_string",(function(node,dedent_level){var dedenter=nil,$ret_or_1=nil,str=nil,children=nil;return $not(dedent_level["$nil?"]())&&(dedenter=$$$($$("Lexer"),"Dedenter").$new(dedent_level),$eqeqeq("str",$ret_or_1=node.$type())?(str=node.$children().$first(),dedenter.$dedent(str)):($eqeqeq("dstr",$ret_or_1)||$eqeqeq("xstr",$ret_or_1))&&(children=$send(node.$children(),"map",[],(function(str_node){if(null==str_node&&(str_node=nil),$eqeq(str_node.$type(),"str")){if(str=str_node.$children().$first(),dedenter.$dedent(str),$truthy(str["$empty?"]()))return nil}else dedenter.$interrupt();return str_node}),1),node=node.$updated(nil,children.$compact()))),node}),2),$def(self,"$regexp_options",(function(regopt_t){var options;return options=$send(this.$value(regopt_t).$each_char().$sort().$uniq(),"map",[],"to_sym".$to_proc()),this.$n("regopt",options,this.$token_map(regopt_t))}),1),$def(self,"$regexp_compose",(function(begin_t,parts,end_t,options){var e=nil;try{this.$static_regexp(parts,options)}catch($err){if(!Opal.rescue($err,[$$("RegexpError")]))throw $err;e=$err;try{this.$diagnostic("error","invalid_regexp",$hash2(["message"],{message:e.$message()}),this.$loc(begin_t).$join(this.$loc(end_t)))}finally{Opal.pop_exception()}}return this.$n("regexp",parts["$<<"](options),this.$regexp_map(begin_t,end_t,options))}),4),$def(self,"$array",(function(begin_t,elements,end_t){return this.$n("array",elements,this.$collection_map(begin_t,elements,end_t))}),3),$def(self,"$splat",(function(star_t,arg){return null==arg&&(arg=nil),$truthy(arg["$nil?"]())?this.$n0("splat",this.$unary_op_map(star_t)):this.$n("splat",[arg],this.$unary_op_map(star_t,arg))}),-2),$def(self,"$word",(function(parts){return $truthy(this["$collapse_string_parts?"](parts))?parts.$first():this.$n("dstr",[].concat($to_a(parts)),this.$collection_map(nil,parts,nil))}),1),$def(self,"$words_compose",(function(begin_t,parts,end_t){return this.$n("array",[].concat($to_a(parts)),this.$collection_map(begin_t,parts,end_t))}),3),$def(self,"$symbols_compose",(function(begin_t,parts,end_t){return parts=$send(parts,"map",[],(function(part){var $a,$ret_or_1,value=nil;return null==part&&(part=nil),$eqeqeq("str",$ret_or_1=part.$type())?(value=null==($a=[].concat($to_a(part)))[0]?nil:$a[0],part.$updated("sym",[value.$to_sym()])):$eqeqeq("dstr",$ret_or_1)?part.$updated("dsym"):part}),1),this.$n("array",[].concat($to_a(parts)),this.$collection_map(begin_t,parts,end_t))}),3),$def(self,"$pair",(function(key,assoc_t,value){return this.$n("pair",[key,value],this.$binary_op_map(key,assoc_t,value))}),3),$def(self,"$pair_list_18",(function(list){return $neqeq(list.$size()["$%"](2),0)?this.$diagnostic("error","odd_hash",nil,list.$last().$loc().$expression()):$send(list.$each_slice(2),"map",[],(function $$6(key,value){var self=null==$$6.$$s?this:$$6.$$s;return null==key&&(key=nil),null==value&&(value=nil),self.$n("pair",[key,value],self.$binary_op_map(key,nil,value))}),{$$arity:2,$$s:this})}),1),$def(self,"$pair_keyword",(function(key_t,value){var $a,$b,key_map,pair_map,key;return $b=this.$pair_keyword_map(key_t,value),key_map=null==($a=$to_ary($b))[0]?nil:$a[0],pair_map=null==$a[1]?nil:$a[1],key=this.$n("sym",[this.$value(key_t).$to_sym()],key_map),this.$n("pair",[key,value],pair_map)}),2),$def(self,"$pair_quoted",(function(begin_t,parts,end_t,value){var $a,$b,pair_map,key;return $b=this.$pair_quoted_map(begin_t,end_t,value),end_t=null==($a=$to_ary($b))[0]?nil:$a[0],pair_map=null==$a[1]?nil:$a[1],key=this.$symbol_compose(begin_t,parts,end_t),this.$n("pair",[key,value],pair_map)}),4),$def(self,"$pair_label",(function(key_t){var value_l,value,label=nil;return value_l=this.$loc(key_t).$adjust($hash2(["end_pos"],{end_pos:-1})),label=this.$value(key_t),value=$truthy(label["$=~"](/^[[:lower:]]/))?this.$n("ident",[label.$to_sym()],$$$($$$($$("Source"),"Map"),"Variable").$new(value_l)):this.$n("const",[nil,label.$to_sym()],$$$($$$($$("Source"),"Map"),"Constant").$new(nil,value_l,value_l)),this.$pair_keyword(key_t,this.$accessible(value))}),1),$def(self,"$kwsplat",(function(dstar_t,arg){return this.$n("kwsplat",[arg],this.$unary_op_map(dstar_t,arg))}),2),$def(self,"$associate",(function(begin_t,pairs,end_t){return $send(0,"upto",[$rb_minus(pairs.$length(),1)],(function $$7(i){var self=null==$$7.$$s?this:$$7.$$s;return null==i&&(i=nil),$send($rb_plus(i,1),"upto",[$rb_minus(pairs.$length(),1)],(function $$8(j){var $a,$ret_or_1,self=null==$$8.$$s?this:$$8.$$s,key1=nil,key2=nil,do_warn=nil;return null==self.parser&&(self.parser=nil),null==j&&(j=nil),key1=null==($a=[].concat($to_a(pairs["$[]"](i))))[0]?nil:$a[0],key2=null==($a=[].concat($to_a(pairs["$[]"](j))))[0]?nil:$a[0],do_warn=!1,$eqeqeq("sym",$ret_or_1=key1.$type())||$eqeqeq("str",$ret_or_1)||$eqeqeq("int",$ret_or_1)||$eqeqeq("float",$ret_or_1)?$eqeq(key1,key2)&&(do_warn=!0):($eqeqeq("rational",$ret_or_1)||$eqeqeq("complex",$ret_or_1)||$eqeqeq("regexp",$ret_or_1))&&$truthy($rb_ge(self.parser.$version(),31))&&$eqeq(key1,key2)&&(do_warn=!0),$truthy(do_warn)?self.$diagnostic("warning","duplicate_hash_key",nil,key2.$loc().$expression()):nil}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:this}),this.$n("hash",[].concat($to_a(pairs)),this.$collection_map(begin_t,pairs,end_t))}),3),$def(self,"$range_inclusive",(function(lhs,dot2_t,rhs){return this.$n("irange",[lhs,rhs],this.$range_map(lhs,dot2_t,rhs))}),3),$def(self,"$range_exclusive",(function(lhs,dot3_t,rhs){return this.$n("erange",[lhs,rhs],this.$range_map(lhs,dot3_t,rhs))}),3),$def(self,"$self",(function(token){return this.$n0("self",this.$token_map(token))}),1),$def(self,"$ident",(function(token){return this.$n("ident",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$ivar",(function(token){return this.$n("ivar",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$gvar",(function(token){return this.$n("gvar",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$cvar",(function(token){return this.$n("cvar",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$back_ref",(function(token){return this.$n("back_ref",[this.$value(token).$to_sym()],this.$token_map(token))}),1),$def(self,"$nth_ref",(function(token){return this.$n("nth_ref",[this.$value(token)],this.$token_map(token))}),1),$def(self,"$accessible",(function(node){var $a,$ret_or_1,name=nil;return $eqeqeq("__FILE__",$ret_or_1=node.$type())?$truthy(this.emit_file_line_as_literals)?this.$n("str",[node.$loc().$expression().$source_buffer().$name()],node.$loc().$dup()):node:$eqeqeq("__LINE__",$ret_or_1)?$truthy(this.emit_file_line_as_literals)?this.$n("int",[node.$loc().$expression().$line()],node.$loc().$dup()):node:$eqeqeq("__ENCODING__",$ret_or_1)?$not(this.$class().$emit_encoding())?this.$n("const",[this.$n("const",[nil,"Encoding"],nil),"UTF_8"],node.$loc().$dup()):node:$eqeqeq("ident",$ret_or_1)?($a=[].concat($to_a(node)),name=null==$a[0]?nil:$a[0],$truthy($send(["?","!"],"any?",[],(function(c){return null==c&&(c=nil),name.$to_s()["$end_with?"](c)}),1))&&this.$diagnostic("error","invalid_id_to_get",$hash2(["identifier"],{identifier:name.$to_s()}),node.$loc().$expression()),$truthy($rb_ge(this.parser.$version(),27))&&$truthy(this.parser.$try_declare_numparam(node))?node.$updated("lvar"):$truthy(this.parser.$static_env()["$declared?"](name))?($eqeq(name.$to_s(),this.$parser().$current_arg_stack().$top())&&this.$diagnostic("error","circular_argument_reference",$hash2(["var_name"],{var_name:name.$to_s()}),node.$loc().$expression()),node.$updated("lvar")):this.$n("send",[nil,name],this.$var_send_map(node))):node}),1),$def(self,"$const",(function(name_t){return this.$n("const",[nil,this.$value(name_t).$to_sym()],this.$constant_map(nil,nil,name_t))}),1),$def(self,"$const_global",(function(t_colon3,name_t){var cbase;return cbase=this.$n0("cbase",this.$token_map(t_colon3)),this.$n("const",[cbase,this.$value(name_t).$to_sym()],this.$constant_map(cbase,t_colon3,name_t))}),2),$def(self,"$const_fetch",(function(scope,t_colon2,name_t){return this.$n("const",[scope,this.$value(name_t).$to_sym()],this.$constant_map(scope,t_colon2,name_t))}),3),$def(self,"$__ENCODING__",(function(__ENCODING__t){return this.$n0("__ENCODING__",this.$token_map(__ENCODING__t))}),1),$def(self,"$assignable",(function(node){var $a,$ret_or_1,name=nil,var_name=nil,name_loc=nil;return $eqeqeq("cvar",$ret_or_1=node.$type())?node.$updated("cvasgn"):$eqeqeq("ivar",$ret_or_1)?node.$updated("ivasgn"):$eqeqeq("gvar",$ret_or_1)?node.$updated("gvasgn"):$eqeqeq("const",$ret_or_1)?($truthy(this.parser.$context().$in_def())&&this.$diagnostic("error","dynamic_const",nil,node.$loc().$expression()),node.$updated("casgn")):$eqeqeq("ident",$ret_or_1)?(name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],var_name=node.$children()["$[]"](0).$to_s(),name_loc=node.$loc().$expression(),this.$check_assignment_to_numparam(var_name,name_loc),this.$check_reserved_for_numparam(var_name,name_loc),this.parser.$static_env().$declare(name),node.$updated("lvasgn")):$eqeqeq("match_var",$ret_or_1)?(name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],var_name=node.$children()["$[]"](0).$to_s(),name_loc=node.$loc().$expression(),this.$check_assignment_to_numparam(var_name,name_loc),this.$check_reserved_for_numparam(var_name,name_loc),node):$eqeqeq("nil",$ret_or_1)||$eqeqeq("self",$ret_or_1)||$eqeqeq("true",$ret_or_1)||$eqeqeq("false",$ret_or_1)||$eqeqeq("__FILE__",$ret_or_1)||$eqeqeq("__LINE__",$ret_or_1)||$eqeqeq("__ENCODING__",$ret_or_1)?this.$diagnostic("error","invalid_assignment",nil,node.$loc().$expression()):$eqeqeq("back_ref",$ret_or_1)||$eqeqeq("nth_ref",$ret_or_1)?this.$diagnostic("error","backref_assignment",nil,node.$loc().$expression()):nil}),1),$def(self,"$const_op_assignable",(function(node){return node.$updated("casgn")}),1),$def(self,"$assign",(function(lhs,eql_t,rhs){return lhs["$<<"](rhs).$updated(nil,nil,$hash2(["location"],{location:lhs.$loc().$with_operator(this.$loc(eql_t)).$with_expression(this.$join_exprs(lhs,rhs))}))}),3),$def(self,"$op_assign",(function(lhs,op_t,rhs){var $ret_or_1,operator=nil,source_map=nil,$ret_or_2=nil;return $eqeqeq("gvasgn",$ret_or_1=lhs.$type())||$eqeqeq("ivasgn",$ret_or_1)||$eqeqeq("lvasgn",$ret_or_1)||$eqeqeq("cvasgn",$ret_or_1)||$eqeqeq("casgn",$ret_or_1)||$eqeqeq("send",$ret_or_1)||$eqeqeq("csend",$ret_or_1)||$eqeqeq("index",$ret_or_1)?(operator=this.$value(op_t)["$[]"]($range(0,-1,!1)).$to_sym(),source_map=lhs.$loc().$with_operator(this.$loc(op_t)).$with_expression(this.$join_exprs(lhs,rhs)),$eqeq(lhs.$type(),"index")&&(lhs=lhs.$updated("indexasgn")),$eqeqeq("&&",$ret_or_2=operator)?this.$n("and_asgn",[lhs,rhs],source_map):$eqeqeq("||",$ret_or_2)?this.$n("or_asgn",[lhs,rhs],source_map):this.$n("op_asgn",[lhs,operator,rhs],source_map)):$eqeqeq("back_ref",$ret_or_1)||$eqeqeq("nth_ref",$ret_or_1)?this.$diagnostic("error","backref_assignment",nil,lhs.$loc().$expression()):nil}),3),$def(self,"$multi_lhs",(function(begin_t,items,end_t){return this.$n("mlhs",[].concat($to_a(items)),this.$collection_map(begin_t,items,end_t))}),3),$def(self,"$multi_assign",(function(lhs,eql_t,rhs){return this.$n("masgn",[lhs,rhs],this.$binary_op_map(lhs,eql_t,rhs))}),3),$def(self,"$def_class",(function(class_t,name,lt_t,superclass,body,end_t){return this.$n("class",[name,superclass,body],this.$module_definition_map(class_t,name,lt_t,end_t))}),6),$def(self,"$def_sclass",(function(class_t,lshft_t,expr,body,end_t){return this.$n("sclass",[expr,body],this.$module_definition_map(class_t,nil,lshft_t,end_t))}),5),$def(self,"$def_module",(function(module_t,name,body,end_t){return this.$n("module",[name,body],this.$module_definition_map(module_t,name,nil,end_t))}),4),$def(self,"$def_method",(function(def_t,name_t,args,body,end_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("def",[this.$value(name_t).$to_sym(),args,body],this.$definition_map(def_t,nil,name_t,end_t))}),5),$def(self,"$def_endless_method",(function(def_t,name_t,args,assignment_t,body){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("def",[this.$value(name_t).$to_sym(),args,body],this.$endless_definition_map(def_t,nil,name_t,assignment_t,body))}),5),$def(self,"$def_singleton",(function(def_t,definee,dot_t,name_t,args,body,end_t){return this.$validate_definee(definee),this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("defs",[definee,this.$value(name_t).$to_sym(),args,body],this.$definition_map(def_t,dot_t,name_t,end_t))}),7),$def(self,"$def_endless_singleton",(function(def_t,definee,dot_t,name_t,args,assignment_t,body){return this.$validate_definee(definee),this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("defs",[definee,this.$value(name_t).$to_sym(),args,body],this.$endless_definition_map(def_t,dot_t,name_t,assignment_t,body))}),7),$def(self,"$undef_method",(function(undef_t,names){return this.$n("undef",[].concat($to_a(names)),this.$keyword_map(undef_t,nil,names,nil))}),2),$def(self,"$alias",(function(alias_t,to,from){return this.$n("alias",[to,from],this.$keyword_map(alias_t,nil,[to,from],nil))}),3),$def(self,"$args",(function(begin_t,args,end_t,check_args){var map;return null==check_args&&(check_args=!0),$truthy(check_args)&&(args=this.$check_duplicate_args(args)),this.$validate_no_forward_arg_after_restarg(args),map=this.$collection_map(begin_t,args,end_t),$not(this.$class().$emit_forward_arg())&&$eqeq(args.$length(),1)&&$eqeq(args["$[]"](0).$type(),"forward_arg")?this.$n("forward_args",[],map):this.$n("args",args,map)}),-4),$def(self,"$numargs",(function(max_numparam){return this.$n("numargs",[max_numparam],nil)}),1),$def(self,"$forward_only_args",(function(begin_t,dots_t,end_t){var arg=nil;return $truthy(this.$class().$emit_forward_arg())?(arg=this.$forward_arg(dots_t),this.$n("args",[arg],this.$collection_map(begin_t,[arg],end_t))):this.$n("forward_args",[],this.$collection_map(begin_t,this.$token_map(dots_t),end_t))}),3),$def(self,"$forward_arg",(function(dots_t){return this.$n("forward_arg",[],this.$token_map(dots_t))}),1),$def(self,"$arg",(function(name_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("arg",[this.$value(name_t).$to_sym()],this.$variable_map(name_t))}),1),$def(self,"$optarg",(function(name_t,eql_t,value){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("optarg",[this.$value(name_t).$to_sym(),value],this.$variable_map(name_t).$with_operator(this.$loc(eql_t)).$with_expression(this.$loc(name_t).$join(value.$loc().$expression())))}),3),$def(self,"$restarg",(function(star_t,name_t){return null==name_t&&(name_t=nil),$truthy(name_t)?(this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("restarg",[this.$value(name_t).$to_sym()],this.$arg_prefix_map(star_t,name_t))):this.$n0("restarg",this.$arg_prefix_map(star_t))}),-2),$def(self,"$kwarg",(function(name_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("kwarg",[this.$value(name_t).$to_sym()],this.$kwarg_map(name_t))}),1),$def(self,"$kwoptarg",(function(name_t,value){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("kwoptarg",[this.$value(name_t).$to_sym(),value],this.$kwarg_map(name_t,value))}),2),$def(self,"$kwrestarg",(function(dstar_t,name_t){return null==name_t&&(name_t=nil),$truthy(name_t)?(this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("kwrestarg",[this.$value(name_t).$to_sym()],this.$arg_prefix_map(dstar_t,name_t))):this.$n0("kwrestarg",this.$arg_prefix_map(dstar_t))}),-2),$def(self,"$kwnilarg",(function(dstar_t,nil_t){return this.$n0("kwnilarg",this.$arg_prefix_map(dstar_t,nil_t))}),2),$def(self,"$shadowarg",(function(name_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("shadowarg",[this.$value(name_t).$to_sym()],this.$variable_map(name_t))}),1),$def(self,"$blockarg",(function(amper_t,name_t){var arg_name;return $not(name_t["$nil?"]())&&this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),arg_name=$truthy(name_t)?this.$value(name_t).$to_sym():nil,this.$n("blockarg",[arg_name],this.$arg_prefix_map(amper_t,name_t))}),2),$def(self,"$procarg0",(function(arg){return $truthy(this.$class().$emit_procarg0())?$eqeq(arg.$type(),"arg")&&$truthy(this.$class().$emit_arg_inside_procarg0())?this.$n("procarg0",[arg],$$$($$$($$("Source"),"Map"),"Collection").$new(nil,nil,arg.$location().$expression())):arg.$updated("procarg0"):arg}),1),$def(self,"$arg_expr",(function(expr){return $eqeq(expr.$type(),"lvasgn")?expr.$updated("arg"):this.$n("arg_expr",[expr],expr.$loc().$dup())}),1),$def(self,"$restarg_expr",(function(star_t,expr){return null==expr&&(expr=nil),$truthy(expr["$nil?"]())?this.$n0("restarg",this.$token_map(star_t)):$eqeq(expr.$type(),"lvasgn")?expr.$updated("restarg"):this.$n("restarg_expr",[expr],expr.$loc().$dup())}),-2),$def(self,"$blockarg_expr",(function(amper_t,expr){return $eqeq(expr.$type(),"lvasgn")?expr.$updated("blockarg"):this.$n("blockarg_expr",[expr],expr.$loc().$dup())}),2),$def(self,"$objc_kwarg",(function(kwname_t,assoc_t,name_t){var kwname_l=nil,operator_l=nil;return kwname_l=this.$loc(kwname_t),operator_l=$truthy(assoc_t["$nil?"]())?(kwname_l=kwname_l.$resize($rb_minus(kwname_l.$size(),1))).$end().$resize(1):this.$loc(assoc_t),this.$n("objc_kwarg",[this.$value(kwname_t).$to_sym(),this.$value(name_t).$to_sym()],$$$($$$($$("Source"),"Map"),"ObjcKwarg").$new(kwname_l,operator_l,this.$loc(name_t),kwname_l.$join(this.$loc(name_t))))}),3),$def(self,"$objc_restarg",(function(star_t,name){return null==name&&(name=nil),$truthy(name["$nil?"]())?this.$n0("restarg",this.$arg_prefix_map(star_t)):$eqeq(name.$type(),"arg")?name.$updated("restarg",nil,$hash2(["location"],{location:name.$loc().$with_operator(this.$loc(star_t))})):this.$n("objc_restarg",[name],this.$unary_op_map(star_t,name))}),-2),$def(self,"$call_type_for_dot",(function(dot_t){return $not(dot_t["$nil?"]())&&$eqeq(this.$value(dot_t),"anddot")?"csend":"send"}),1),$def(self,"$forwarded_args",(function(dots_t){return this.$n("forwarded_args",[],this.$token_map(dots_t))}),1),$def(self,"$call_method",(function(receiver,dot_t,selector_t,lparen_t,args,rparen_t){var type;return null==lparen_t&&(lparen_t=nil),null==args&&(args=[]),null==rparen_t&&(rparen_t=nil),type=this.$call_type_for_dot(dot_t),$truthy(this.$class().$emit_kwargs())&&this.$rewrite_hash_args_to_kwargs(args),$truthy(selector_t["$nil?"]())?this.$n(type,[receiver,"call"].concat($to_a(args)),this.$send_map(receiver,dot_t,nil,lparen_t,args,rparen_t)):this.$n(type,[receiver,this.$value(selector_t).$to_sym()].concat($to_a(args)),this.$send_map(receiver,dot_t,selector_t,lparen_t,args,rparen_t))}),-4),$def(self,"$call_lambda",(function(lambda_t){return $truthy(this.$class().$emit_lambda())?this.$n0("lambda",this.$expr_map(this.$loc(lambda_t))):this.$n("send",[nil,"lambda"],this.$send_map(nil,nil,lambda_t))}),1),$def(self,"$block",(function(method_call,begin_t,args,body,end_t){var $a,call_args=nil,last_arg=nil,block_type=nil,actual_send=nil,block=nil;return null==($a=[].concat($to_a(method_call)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],call_args=$slice.call($a,2),$eqeq(method_call.$type(),"yield")&&this.$diagnostic("error","block_given_to_yield",nil,method_call.$loc().$keyword(),[this.$loc(begin_t)]),last_arg=call_args.$last(),$truthy(last_arg)&&($eqeq(last_arg.$type(),"block_pass")||$eqeq(last_arg.$type(),"forwarded_args"))&&this.$diagnostic("error","block_and_blockarg",nil,last_arg.$loc().$expression(),[this.$loc(begin_t)]),$eqeq(args.$type(),"numargs")?(block_type="numblock",args=args.$children()["$[]"](0)):block_type="block",$truthy(["send","csend","index","super","zsuper","lambda"]["$include?"](method_call.$type()))?this.$n(block_type,[method_call,args,body],this.$block_map(method_call.$loc().$expression(),begin_t,end_t)):(actual_send=null==($a=[].concat($to_a(method_call)))[0]?nil:$a[0],block=this.$n(block_type,[actual_send,args,body],this.$block_map(actual_send.$loc().$expression(),begin_t,end_t)),this.$n(method_call.$type(),[block],method_call.$loc().$with_expression(this.$join_exprs(method_call,block))))}),5),$def(self,"$block_pass",(function(amper_t,arg){return this.$n("block_pass",[arg],this.$unary_op_map(amper_t,arg))}),2),$def(self,"$objc_varargs",(function(pair,rest_of_varargs){var $a,value,first_vararg=nil,vararg_array=nil;return value=null==($a=[].concat($to_a(pair)))[0]?nil:$a[0],first_vararg=null==$a[1]?nil:$a[1],vararg_array=this.$array(nil,[first_vararg].concat($to_a(rest_of_varargs)),nil).$updated("objc_varargs"),pair.$updated(nil,[value,vararg_array],$hash2(["location"],{location:pair.$loc().$with_expression(pair.$loc().$expression().$join(vararg_array.$loc().$expression()))}))}),2),$def(self,"$attr_asgn",(function(receiver,dot_t,selector_t){var method_name,type;return method_name=$rb_plus(this.$value(selector_t),"=").$to_sym(),type=this.$call_type_for_dot(dot_t),this.$n(type,[receiver,method_name],this.$send_map(receiver,dot_t,selector_t))}),3),$def(self,"$index",(function(receiver,lbrack_t,indexes,rbrack_t){return $truthy(this.$class().$emit_kwargs())&&this.$rewrite_hash_args_to_kwargs(indexes),$truthy(this.$class().$emit_index())?this.$n("index",[receiver].concat($to_a(indexes)),this.$index_map(receiver,lbrack_t,rbrack_t)):this.$n("send",[receiver,"[]"].concat($to_a(indexes)),this.$send_index_map(receiver,lbrack_t,rbrack_t))}),4),$def(self,"$index_asgn",(function(receiver,lbrack_t,indexes,rbrack_t){return $truthy(this.$class().$emit_index())?this.$n("indexasgn",[receiver].concat($to_a(indexes)),this.$index_map(receiver,lbrack_t,rbrack_t)):this.$n("send",[receiver,"[]="].concat($to_a(indexes)),this.$send_index_map(receiver,lbrack_t,rbrack_t))}),4),$def(self,"$binary_op",(function(receiver,operator_t,arg){var source_map=nil,operator=nil,method_call=nil;return source_map=this.$send_binary_op_map(receiver,operator_t,arg),$eqeq(this.parser.$version(),18)&&(operator=this.$value(operator_t),$eqeq(operator,"!=")?method_call=this.$n("send",[receiver,"==",arg],source_map):$eqeq(operator,"!~")&&(method_call=this.$n("send",[receiver,"=~",arg],source_map)),$truthy(["!=","!~"]["$include?"](operator)))?this.$n("not",[method_call],this.$expr_map(source_map.$expression())):this.$n("send",[receiver,this.$value(operator_t).$to_sym(),arg],source_map)}),3),$def(self,"$match_op",(function(receiver,match_t,arg){var source_map,regexp=nil;return source_map=this.$send_binary_op_map(receiver,match_t,arg),$truthy(regexp=this.$static_regexp_node(receiver))?($send(regexp.$names(),"each",[],(function $$11(name){var self=null==$$11.$$s?this:$$11.$$s;return null==self.parser&&(self.parser=nil),null==name&&(name=nil),self.parser.$static_env().$declare(name)}),{$$arity:1,$$s:this}),this.$n("match_with_lvasgn",[receiver,arg],source_map)):this.$n("send",[receiver,"=~",arg],source_map)}),3),$def(self,"$unary_op",(function(op_t,receiver){var $ret_or_1,method=nil;return method=$eqeqeq("+",$ret_or_1=this.$value(op_t))||$eqeqeq("-",$ret_or_1)?$rb_plus(this.$value(op_t),"@"):this.$value(op_t),this.$n("send",[receiver,method.$to_sym()],this.$send_unary_op_map(op_t,receiver))}),2),$def(self,"$not_op",(function(not_t,begin_t,receiver,end_t){var nil_node=nil;return null==begin_t&&(begin_t=nil),null==receiver&&(receiver=nil),null==end_t&&(end_t=nil),$eqeq(this.parser.$version(),18)?this.$n("not",[this.$check_condition(receiver)],this.$unary_op_map(not_t,receiver)):$truthy(receiver["$nil?"]())?(nil_node=this.$n0("begin",this.$collection_map(begin_t,nil,end_t)),this.$n("send",[nil_node,"!"],this.$send_unary_op_map(not_t,nil_node))):this.$n("send",[this.$check_condition(receiver),"!"],this.$send_map(nil,nil,not_t,begin_t,[receiver],end_t))}),-2),$def(self,"$logical_op",(function(type,lhs,op_t,rhs){return this.$n(type,[lhs,rhs],this.$binary_op_map(lhs,op_t,rhs))}),4),$def(self,"$condition",(function(cond_t,cond,then_t,if_true,else_t,if_false,end_t){return this.$n("if",[this.$check_condition(cond),if_true,if_false],this.$condition_map(cond_t,cond,then_t,if_true,else_t,if_false,end_t))}),7),$def(self,"$condition_mod",(function(if_true,if_false,cond_t,cond){var $ret_or_1;return this.$n("if",[this.$check_condition(cond),if_true,if_false],this.$keyword_mod_map($truthy($ret_or_1=if_true)?$ret_or_1:if_false,cond_t,cond))}),4),$def(self,"$ternary",(function(cond,question_t,if_true,colon_t,if_false){return this.$n("if",[this.$check_condition(cond),if_true,if_false],this.$ternary_map(cond,question_t,if_true,colon_t,if_false))}),5),$def(self,"$when",(function(when_t,patterns,then_t,body){var children;return children=patterns["$<<"](body),this.$n("when",children,this.$keyword_map(when_t,then_t,children,nil))}),4),$def(self,"$case",(function(case_t,expr,when_bodies,else_t,else_body,end_t){return this.$n("case",[expr].concat($to_a(when_bodies["$<<"](else_body))),this.$condition_map(case_t,expr,nil,nil,else_t,else_body,end_t))}),6),$def(self,"$loop",(function(type,keyword_t,cond,do_t,body,end_t){return this.$n(type,[this.$check_condition(cond),body],this.$keyword_map(keyword_t,do_t,nil,end_t))}),6),$def(self,"$loop_mod",(function(type,body,keyword_t,cond){return $eqeq(body.$type(),"kwbegin")&&(type+="_post"),this.$n(type,[this.$check_condition(cond),body],this.$keyword_mod_map(body,keyword_t,cond))}),4),$def(self,"$for",(function(for_t,iterator,in_t,iteratee,do_t,body,end_t){return this.$n("for",[iterator,iteratee,body],this.$for_map(for_t,in_t,do_t,end_t))}),7),$def(self,"$keyword_cmd",(function(type,keyword_t,lparen_t,args,rparen_t){var last_arg=nil;return null==lparen_t&&(lparen_t=nil),null==args&&(args=[]),null==rparen_t&&(rparen_t=nil),$eqeq(type,"yield")&&$truthy($rb_gt(args.$count(),0))&&(last_arg=args.$last(),$eqeq(last_arg.$type(),"block_pass")&&this.$diagnostic("error","block_given_to_yield",nil,this.$loc(keyword_t),[last_arg.$loc().$expression()])),$truthy(["yield","super"]["$include?"](type))&&$truthy(this.$class().$emit_kwargs())&&this.$rewrite_hash_args_to_kwargs(args),this.$n(type,args,this.$keyword_map(keyword_t,lparen_t,args,rparen_t))}),-3),$def(self,"$preexe",(function(preexe_t,lbrace_t,compstmt,rbrace_t){return this.$n("preexe",[compstmt],this.$keyword_map(preexe_t,lbrace_t,[],rbrace_t))}),4),$def(self,"$postexe",(function(postexe_t,lbrace_t,compstmt,rbrace_t){return this.$n("postexe",[compstmt],this.$keyword_map(postexe_t,lbrace_t,[],rbrace_t))}),4),$def(self,"$rescue_body",(function(rescue_t,exc_list,assoc_t,exc_var,then_t,compound_stmt){return this.$n("resbody",[exc_list,exc_var,compound_stmt],this.$rescue_body_map(rescue_t,exc_list,assoc_t,exc_var,then_t,compound_stmt))}),6),$def(self,"$begin_body",(function(compound_stmt,rescue_bodies,else_t,else_,ensure_t,ensure_){var statements=nil;return null==rescue_bodies&&(rescue_bodies=[]),null==else_t&&(else_t=nil),null==else_&&(else_=nil),null==ensure_t&&(ensure_t=nil),null==ensure_&&(ensure_=nil),$truthy(rescue_bodies["$any?"]())?compound_stmt=$truthy(else_t)?this.$n("rescue",[compound_stmt].concat($to_a($rb_plus(rescue_bodies,[else_]))),this.$eh_keyword_map(compound_stmt,nil,rescue_bodies,else_t,else_)):this.$n("rescue",[compound_stmt].concat($to_a($rb_plus(rescue_bodies,[nil]))),this.$eh_keyword_map(compound_stmt,nil,rescue_bodies,nil,nil)):$truthy(else_t)&&(statements=[],$not(compound_stmt["$nil?"]())&&($eqeq(compound_stmt.$type(),"begin")?statements=$rb_plus(statements,compound_stmt.$children()):statements.$push(compound_stmt)),statements.$push(this.$n("begin",[else_],this.$collection_map(else_t,[else_],nil))),compound_stmt=this.$n("begin",statements,this.$collection_map(nil,statements,nil))),$truthy(ensure_t)&&(compound_stmt=this.$n("ensure",[compound_stmt,ensure_],this.$eh_keyword_map(compound_stmt,ensure_t,[ensure_],nil,nil))),compound_stmt}),-2),$def(self,"$compstmt",(function(statements){return $truthy(statements["$none?"]())?nil:$truthy(statements["$one?"]())?statements.$first():this.$n("begin",statements,this.$collection_map(nil,statements,nil))}),1),$def(self,"$begin",(function(begin_t,body,end_t){return $truthy(body["$nil?"]())?this.$n0("begin",this.$collection_map(begin_t,nil,end_t)):$eqeq(body.$type(),"mlhs")||$eqeq(body.$type(),"begin")&&$truthy(body.$loc().$begin()["$nil?"]())&&$truthy(body.$loc().$end()["$nil?"]())?this.$n(body.$type(),body.$children(),this.$collection_map(begin_t,body.$children(),end_t)):this.$n("begin",[body],this.$collection_map(begin_t,[body],end_t))}),3),$def(self,"$begin_keyword",(function(begin_t,body,end_t){return $truthy(body["$nil?"]())?this.$n0("kwbegin",this.$collection_map(begin_t,nil,end_t)):$eqeq(body.$type(),"begin")&&$truthy(body.$loc().$begin()["$nil?"]())&&$truthy(body.$loc().$end()["$nil?"]())?this.$n("kwbegin",body.$children(),this.$collection_map(begin_t,body.$children(),end_t)):this.$n("kwbegin",[body],this.$collection_map(begin_t,[body],end_t))}),3),$def(self,"$case_match",(function(case_t,expr,in_bodies,else_t,else_body,end_t){return $truthy(else_t)&&$not(else_body)&&(else_body=this.$n("empty_else",nil,this.$token_map(else_t))),this.$n("case_match",[expr].concat($to_a(in_bodies["$<<"](else_body))),this.$condition_map(case_t,expr,nil,nil,else_t,else_body,end_t))}),6),$def(self,"$in_match",(function(lhs,in_t,rhs){return this.$n("in_match",[lhs,rhs],this.$binary_op_map(lhs,in_t,rhs))}),3),$def(self,"$match_pattern",(function(lhs,match_t,rhs){return this.$n("match_pattern",[lhs,rhs],this.$binary_op_map(lhs,match_t,rhs))}),3),$def(self,"$match_pattern_p",(function(lhs,match_t,rhs){return this.$n("match_pattern_p",[lhs,rhs],this.$binary_op_map(lhs,match_t,rhs))}),3),$def(self,"$in_pattern",(function(in_t,pattern,guard,then_t,body){var children=nil;return children=[pattern,guard,body],this.$n("in_pattern",children,this.$keyword_map(in_t,then_t,children.$compact(),nil))}),5),$def(self,"$if_guard",(function(if_t,if_body){return this.$n("if_guard",[if_body],this.$guard_map(if_t,if_body))}),2),$def(self,"$unless_guard",(function(unless_t,unless_body){return this.$n("unless_guard",[unless_body],this.$guard_map(unless_t,unless_body))}),2),$def(self,"$match_var",(function(name_t){var name,name_l;return name=this.$value(name_t).$to_sym(),name_l=this.$loc(name_t),this.$check_lvar_name(name,name_l),this.$check_duplicate_pattern_variable(name,name_l),this.parser.$static_env().$declare(name),this.$n("match_var",[name],this.$variable_map(name_t))}),1),$def(self,"$match_hash_var",(function(name_t){var name,name_l,expr_l=nil;return name=this.$value(name_t).$to_sym(),name_l=(expr_l=this.$loc(name_t)).$adjust($hash2(["end_pos"],{end_pos:-1})),this.$check_lvar_name(name,name_l),this.$check_duplicate_pattern_variable(name,name_l),this.parser.$static_env().$declare(name),this.$n("match_var",[name],$$$($$$($$("Source"),"Map"),"Variable").$new(name_l,expr_l))}),1),$def(self,"$match_hash_var_from_str",(function(begin_t,strings,end_t){var $a,$ret_or_1,string=nil,name=nil,name_l=nil,begin_l=nil,end_l=nil,expr_l=nil;return $truthy($rb_gt(strings.$length(),1))&&this.$diagnostic("error","pm_interp_in_var_name",nil,this.$loc(begin_t).$join(this.$loc(end_t))),string=strings["$[]"](0),$eqeqeq("str",$ret_or_1=string.$type())?(name=null==($a=[].concat($to_a(string)))[0]?nil:$a[0],name_l=string.$loc().$expression(),this.$check_lvar_name(name,name_l),this.$check_duplicate_pattern_variable(name,name_l),this.parser.$static_env().$declare(name),$truthy(begin_l=string.$loc().$begin())&&(name_l=name_l.$adjust($hash2(["begin_pos"],{begin_pos:begin_l.$length()}))),$truthy(end_l=string.$loc().$end())&&(name_l=name_l.$adjust($hash2(["end_pos"],{end_pos:end_l.$length()["$-@"]()}))),expr_l=this.$loc(begin_t).$join(string.$loc().$expression()).$join(this.$loc(end_t)),this.$n("match_var",[name.$to_sym()],$$$($$$($$("Source"),"Map"),"Variable").$new(name_l,expr_l))):$eqeqeq("begin",$ret_or_1)?this.$match_hash_var_from_str(begin_t,string.$children(),end_t):this.$diagnostic("error","pm_interp_in_var_name",nil,this.$loc(begin_t).$join(this.$loc(end_t)))}),3),$def(self,"$match_rest",(function(star_t,name_t){var name=nil;return null==name_t&&(name_t=nil),$truthy(name_t["$nil?"]())?this.$n0("match_rest",this.$unary_op_map(star_t)):(name=this.$match_var(name_t),this.$n("match_rest",[name],this.$unary_op_map(star_t,name)))}),-2),$def(self,"$hash_pattern",(function(lbrace_t,kwargs,rbrace_t){var args;return args=this.$check_duplicate_args(kwargs),this.$n("hash_pattern",args,this.$collection_map(lbrace_t,args,rbrace_t))}),3),$def(self,"$array_pattern",(function(lbrack_t,elements,rbrack_t){var node_elements,node_type,trailing_comma=nil;return $truthy(elements["$nil?"]())?this.$n("array_pattern",nil,this.$collection_map(lbrack_t,[],rbrack_t)):(trailing_comma=!1,node_elements=$send(elements,"map",[],(function(element){return null==element&&(element=nil),$eqeq(element.$type(),"match_with_trailing_comma")?(trailing_comma=!0,element.$children().$first()):(trailing_comma=!1,element)}),1),node_type=$truthy(trailing_comma)?"array_pattern_with_tail":"array_pattern",this.$n(node_type,node_elements,this.$collection_map(lbrack_t,elements,rbrack_t)))}),3),$def(self,"$find_pattern",(function(lbrack_t,elements,rbrack_t){return this.$n("find_pattern",elements,this.$collection_map(lbrack_t,elements,rbrack_t))}),3),$def(self,"$match_with_trailing_comma",(function(match,comma_t){return this.$n("match_with_trailing_comma",[match],this.$expr_map(match.$loc().$expression().$join(this.$loc(comma_t))))}),2),$def(self,"$const_pattern",(function(const$,ldelim_t,pattern,rdelim_t){return this.$n("const_pattern",[const$,pattern],$$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(ldelim_t),this.$loc(rdelim_t),const$.$loc().$expression().$join(this.$loc(rdelim_t))))}),4),$def(self,"$pin",(function(pin_t,var$){return this.$n("pin",[var$],this.$send_unary_op_map(pin_t,var$))}),2),$def(self,"$match_alt",(function(left,pipe_t,right){var source_map;return source_map=this.$binary_op_map(left,pipe_t,right),this.$n("match_alt",[left,right],source_map)}),3),$def(self,"$match_as",(function(value,assoc_t,as){var source_map;return source_map=this.$binary_op_map(value,assoc_t,as),this.$n("match_as",[value,as],source_map)}),3),$def(self,"$match_nil_pattern",(function(dstar_t,nil_t){return this.$n0("match_nil_pattern",this.$arg_prefix_map(dstar_t,nil_t))}),2),$def(self,"$match_pair",(function(label_type,label,value){var $a,begin_t=nil,parts=nil,end_t=nil,label_loc=nil,var_name=nil;return $eqeq(label_type,"label")?(this.$check_duplicate_pattern_key(label["$[]"](0),label["$[]"](1)),this.$pair_keyword(label,value)):(begin_t=null==($a=$to_ary(label))[0]?nil:$a[0],parts=null==$a[1]?nil:$a[1],end_t=null==$a[2]?nil:$a[2],label_loc=this.$loc(begin_t).$join(this.$loc(end_t)),$truthy(var_name=this.$static_string(parts))?this.$check_duplicate_pattern_key(var_name,label_loc):this.$diagnostic("error","pm_interp_in_var_name",nil,label_loc),this.$pair_quoted(begin_t,parts,end_t,value))}),3),$def(self,"$match_label",(function(label_type,label){var $a,begin_t=nil,strings=nil,end_t=nil;return $eqeq(label_type,"label")?this.$match_hash_var(label):(begin_t=null==($a=$to_ary(label))[0]?nil:$a[0],strings=null==$a[1]?nil:$a[1],end_t=null==$a[2]?nil:$a[2],this.$match_hash_var_from_str(begin_t,strings,end_t))}),2),self.$private(),$def(self,"$check_condition",(function(cond){var $a,$ret_or_1,lhs=nil,rhs=nil,type=nil,$ret_or_2=nil;return $eqeqeq("masgn",$ret_or_1=cond.$type())?$truthy($rb_le(this.parser.$version(),23))?this.$diagnostic("error","masgn_as_condition",nil,cond.$loc().$expression()):cond:$eqeqeq("begin",$ret_or_1)?$eqeq(cond.$children().$count(),1)?cond.$updated(nil,[this.$check_condition(cond.$children().$last())]):cond:$eqeqeq("and",$ret_or_1)||$eqeqeq("or",$ret_or_1)||$eqeqeq("irange",$ret_or_1)||$eqeqeq("erange",$ret_or_1)?(lhs=null==($a=[].concat($to_a(cond)))[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],type=$eqeqeq("irange",$ret_or_2=cond.$type())?"iflipflop":$eqeqeq("erange",$ret_or_2)?"eflipflop":nil,$truthy(["and","or"]["$include?"](cond.$type()))&&$eqeq(this.parser.$version(),18)?cond:cond.$updated(type,[this.$check_condition(lhs),this.$check_condition(rhs)])):$eqeqeq("regexp",$ret_or_1)?this.$n("match_current_line",[cond],this.$expr_map(cond.$loc().$expression())):cond}),1),$def(self,"$check_duplicate_args",(function(args,map){return null==map&&(map=$hash2([],{})),$send(args,"each",[],(function $$15(this_arg){var $ret_or_1,self=null==$$15.$$s?this:$$15.$$s;return null==this_arg&&(this_arg=nil),$eqeqeq("arg",$ret_or_1=this_arg.$type())||$eqeqeq("optarg",$ret_or_1)||$eqeqeq("restarg",$ret_or_1)||$eqeqeq("blockarg",$ret_or_1)||$eqeqeq("kwarg",$ret_or_1)||$eqeqeq("kwoptarg",$ret_or_1)||$eqeqeq("kwrestarg",$ret_or_1)||$eqeqeq("shadowarg",$ret_or_1)?self.$check_duplicate_arg(this_arg,map):$eqeqeq("procarg0",$ret_or_1)?$truthy(this_arg.$children()["$[]"](0)["$is_a?"]($$("Symbol")))?self.$check_duplicate_arg(this_arg,map):self.$check_duplicate_args(this_arg.$children(),map):$eqeqeq("mlhs",$ret_or_1)?self.$check_duplicate_args(this_arg.$children(),map):nil}),{$$arity:1,$$s:this})}),-2),$def(self,"$check_duplicate_arg",(function(this_arg,map){var $a,this_name,that_name,that_arg=nil,$writer=nil;return null==map&&(map=$hash2([],{})),this_name=null==($a=[].concat($to_a(this_arg)))[0]?nil:$a[0],that_arg=map["$[]"](this_name),that_name=null==($a=[].concat($to_a(that_arg)))[0]?nil:$a[0],$truthy(that_arg["$nil?"]())?($send(map,"[]=",$to_a($writer=[this_name,this_arg])),$writer[$rb_minus($writer.length,1)]):$truthy(this["$arg_name_collides?"](this_name,that_name))?this.$diagnostic("error","duplicate_argument",nil,this_arg.$loc().$name(),[that_arg.$loc().$name()]):nil}),-2),$def(self,"$validate_no_forward_arg_after_restarg",(function(args){var restarg=nil,forward_arg=nil;return restarg=nil,forward_arg=nil,$send(args,"each",[],(function(arg){var $ret_or_1;return null==arg&&(arg=nil),$eqeqeq("restarg",$ret_or_1=arg.$type())?restarg=arg:$eqeqeq("forward_arg",$ret_or_1)?forward_arg=arg:nil}),1),$not(forward_arg["$nil?"]())&&$not(restarg["$nil?"]())?this.$diagnostic("error","forward_arg_after_restarg",nil,forward_arg.$loc().$expression(),[restarg.$loc().$expression()]):nil}),1),$def(self,"$check_assignment_to_numparam",(function(name,loc){var assigning_to_numparam,$ret_or_1,$ret_or_2;return $truthy($rb_lt(this.parser.$version(),27))?nil:(assigning_to_numparam=$truthy($ret_or_1=$truthy($ret_or_2=this.parser.$context()["$in_dynamic_block?"]())?name["$=~"](/^_([1-9])$/):$ret_or_2)?this.parser.$max_numparam_stack()["$has_numparams?"]():$ret_or_1,$truthy(assigning_to_numparam)?this.$diagnostic("error","cant_assign_to_numparam",$hash2(["name"],{name:name}),loc):nil)}),2),$def(self,"$check_reserved_for_numparam",(function(name,loc){return $truthy($rb_lt(this.parser.$version(),30))?nil:$truthy(name["$=~"](/^_([1-9])$/))?this.$diagnostic("error","reserved_for_numparam",$hash2(["name"],{name:name}),loc):nil}),2),$def(self,"$arg_name_collides?",(function(this_name,that_name){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $eqeqeq(18,$ret_or_1=this.parser.$version())?this_name["$=="](that_name):$eqeqeq(19,$ret_or_1)?$truthy($ret_or_2=this_name["$!="]("_"))?this_name["$=="](that_name):$ret_or_2:$truthy($ret_or_2=$truthy($ret_or_3=this_name)?this_name["$[]"](0)["$!="]("_"):$ret_or_3)?this_name["$=="](that_name):$ret_or_2}),2),$def(self,"$check_lvar_name",(function(name,loc){return $truthy(name["$=~"](/^[[[:lower:]]_][[[:alnum:]]_]*$/))?nil:this.$diagnostic("error","lvar_name",$hash2(["name"],{name:name}),loc)}),2),$def(self,"$check_duplicate_pattern_variable",(function(name,loc){return $truthy(name.$to_s()["$start_with?"]("_"))?nil:($truthy(this.parser.$pattern_variables()["$declared?"](name))&&this.$diagnostic("error","duplicate_variable_name",$hash2(["name"],{name:name.$to_s()}),loc),this.parser.$pattern_variables().$declare(name))}),2),$def(self,"$check_duplicate_pattern_key",(function(name,loc){return $truthy(this.parser.$pattern_hash_keys()["$declared?"](name))&&this.$diagnostic("error","duplicate_pattern_key",$hash2(["name"],{name:name.$to_s()}),loc),this.parser.$pattern_hash_keys().$declare(name)}),2),$def(self,"$n",(function(type,children,source_map){return $$$($$("AST"),"Node").$new(type,children,$hash2(["location"],{location:source_map}))}),3),$def(self,"$n0",(function(type,source_map){return this.$n(type,[],source_map)}),2),$def(self,"$join_exprs",(function(left_expr,right_expr){return left_expr.$loc().$expression().$join(right_expr.$loc().$expression())}),2),$def(self,"$token_map",(function(token){return $$$($$("Source"),"Map").$new(this.$loc(token))}),1),$def(self,"$delimited_string_map",(function(string_t){var begin_l,end_l,str_range=nil;return begin_l=(str_range=this.$loc(string_t)).$with($hash2(["end_pos"],{end_pos:$rb_plus(str_range.$begin_pos(),1)})),end_l=str_range.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(str_range.$end_pos(),1)})),$$$($$$($$("Source"),"Map"),"Collection").$new(begin_l,end_l,this.$loc(string_t))}),1),$def(self,"$prefix_string_map",(function(symbol){var begin_l,str_range=nil;return begin_l=(str_range=this.$loc(symbol)).$with($hash2(["end_pos"],{end_pos:$rb_plus(str_range.$begin_pos(),1)})),$$$($$$($$("Source"),"Map"),"Collection").$new(begin_l,nil,this.$loc(symbol))}),1),$def(self,"$unquoted_map",(function(token){return $$$($$$($$("Source"),"Map"),"Collection").$new(nil,nil,this.$loc(token))}),1),$def(self,"$pair_keyword_map",(function(key_t,value_e){var key_l,colon_l,key_range=nil;return key_l=(key_range=this.$loc(key_t)).$adjust($hash2(["end_pos"],{end_pos:-1})),colon_l=key_range.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(key_range.$end_pos(),1)})),[$$$($$$($$("Source"),"Map"),"Collection").$new(nil,nil,key_l),$$$($$$($$("Source"),"Map"),"Operator").$new(colon_l,key_range.$join(value_e.$loc().$expression()))]}),2),$def(self,"$pair_quoted_map",(function(begin_t,end_t,value_e){var quote_l,colon_l,end_l=nil;return quote_l=(end_l=this.$loc(end_t)).$with($hash2(["begin_pos","end_pos"],{begin_pos:$rb_minus(end_l.$end_pos(),2),end_pos:$rb_minus(end_l.$end_pos(),1)})),colon_l=end_l.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(end_l.$end_pos(),1)})),[[this.$value(end_t),quote_l],$$$($$$($$("Source"),"Map"),"Operator").$new(colon_l,this.$loc(begin_t).$join(value_e.$loc().$expression()))]}),3),$def(self,"$expr_map",(function(loc){return $$$($$("Source"),"Map").$new(loc)}),1),$def(self,"$collection_map",(function(begin_t,parts,end_t){var expr_l=nil;return $truthy(begin_t["$nil?"]())||$truthy(end_t["$nil?"]())?$truthy(parts["$any?"]())?expr_l=this.$join_exprs(parts.$first(),parts.$last()):$not(begin_t["$nil?"]())?expr_l=this.$loc(begin_t):$not(end_t["$nil?"]())&&(expr_l=this.$loc(end_t)):expr_l=this.$loc(begin_t).$join(this.$loc(end_t)),$$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(begin_t),this.$loc(end_t),expr_l)}),3),$def(self,"$string_map",(function(begin_t,parts,end_t){var expr_l=nil;return $truthy(begin_t)&&$truthy(this.$value(begin_t)["$start_with?"]("<<"))?(expr_l=$truthy(parts["$any?"]())?this.$join_exprs(parts.$first(),parts.$last()):this.$loc(end_t).$begin(),$$$($$$($$("Source"),"Map"),"Heredoc").$new(this.$loc(begin_t),expr_l,this.$loc(end_t))):this.$collection_map(begin_t,parts,end_t)}),3),$def(self,"$regexp_map",(function(begin_t,end_t,options_e){return $$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(begin_t),this.$loc(end_t),this.$loc(begin_t).$join(options_e.$loc().$expression()))}),3),$def(self,"$constant_map",(function(scope,colon2_t,name_t){var expr_l=nil;return expr_l=$truthy(scope["$nil?"]())?this.$loc(name_t):scope.$loc().$expression().$join(this.$loc(name_t)),$$$($$$($$("Source"),"Map"),"Constant").$new(this.$loc(colon2_t),this.$loc(name_t),expr_l)}),3),$def(self,"$variable_map",(function(name_t){return $$$($$$($$("Source"),"Map"),"Variable").$new(this.$loc(name_t))}),1),$def(self,"$binary_op_map",(function(left_e,op_t,right_e){return $$$($$$($$("Source"),"Map"),"Operator").$new(this.$loc(op_t),this.$join_exprs(left_e,right_e))}),3),$def(self,"$unary_op_map",(function(op_t,arg_e){var expr_l=nil;return null==arg_e&&(arg_e=nil),expr_l=$truthy(arg_e["$nil?"]())?this.$loc(op_t):this.$loc(op_t).$join(arg_e.$loc().$expression()),$$$($$$($$("Source"),"Map"),"Operator").$new(this.$loc(op_t),expr_l)}),-2),$def(self,"$range_map",(function(start_e,op_t,end_e){var expr_l=nil;return $truthy(start_e)&&$truthy(end_e)?expr_l=this.$join_exprs(start_e,end_e):$truthy(start_e)?expr_l=start_e.$loc().$expression().$join(this.$loc(op_t)):$truthy(end_e)&&(expr_l=this.$loc(op_t).$join(end_e.$loc().$expression())),$$$($$$($$("Source"),"Map"),"Operator").$new(this.$loc(op_t),expr_l)}),3),$def(self,"$arg_prefix_map",(function(op_t,name_t){var expr_l=nil;return null==name_t&&(name_t=nil),expr_l=$truthy(name_t["$nil?"]())?this.$loc(op_t):this.$loc(op_t).$join(this.$loc(name_t)),$$$($$$($$("Source"),"Map"),"Variable").$new(this.$loc(name_t),expr_l)}),-2),$def(self,"$kwarg_map",(function(name_t,value_e){var name_range,expr_l=nil;return null==value_e&&(value_e=nil),name_range=this.$loc(name_t).$adjust($hash2(["end_pos"],{end_pos:-1})),expr_l=$truthy(value_e)?this.$loc(name_t).$join(value_e.$loc().$expression()):this.$loc(name_t),$$$($$$($$("Source"),"Map"),"Variable").$new(name_range,expr_l)}),-2),$def(self,"$module_definition_map",(function(keyword_t,name_e,operator_t,end_t){var name_l=nil;return $truthy(name_e)&&(name_l=name_e.$loc().$expression()),$$$($$$($$("Source"),"Map"),"Definition").$new(this.$loc(keyword_t),this.$loc(operator_t),name_l,this.$loc(end_t))}),4),$def(self,"$definition_map",(function(keyword_t,operator_t,name_t,end_t){return $$$($$$($$("Source"),"Map"),"MethodDefinition").$new(this.$loc(keyword_t),this.$loc(operator_t),this.$loc(name_t),this.$loc(end_t),nil,nil)}),4),$def(self,"$endless_definition_map",(function(keyword_t,operator_t,name_t,assignment_t,body_e){var body_l;return body_l=body_e.$loc().$expression(),$$$($$$($$("Source"),"Map"),"MethodDefinition").$new(this.$loc(keyword_t),this.$loc(operator_t),this.$loc(name_t),nil,this.$loc(assignment_t),body_l)}),5),$def(self,"$send_map",(function(receiver_e,dot_t,selector_t,begin_t,args,end_t){var begin_l=nil,end_l=nil;return null==begin_t&&(begin_t=nil),null==args&&(args=[]),null==end_t&&(end_t=nil),$truthy(receiver_e)?begin_l=receiver_e.$loc().$expression():$truthy(selector_t)&&(begin_l=this.$loc(selector_t)),$truthy(end_t)?end_l=this.$loc(end_t):$truthy(args["$any?"]())?end_l=args.$last().$loc().$expression():$truthy(selector_t)&&(end_l=this.$loc(selector_t)),$$$($$$($$("Source"),"Map"),"Send").$new(this.$loc(dot_t),this.$loc(selector_t),this.$loc(begin_t),this.$loc(end_t),begin_l.$join(end_l))}),-4),$def(self,"$var_send_map",(function(variable_e){return $$$($$$($$("Source"),"Map"),"Send").$new(nil,variable_e.$loc().$expression(),nil,nil,variable_e.$loc().$expression())}),1),$def(self,"$send_binary_op_map",(function(lhs_e,selector_t,rhs_e){return $$$($$$($$("Source"),"Map"),"Send").$new(nil,this.$loc(selector_t),nil,nil,this.$join_exprs(lhs_e,rhs_e))}),3),$def(self,"$send_unary_op_map",(function(selector_t,arg_e){var expr_l=nil;return expr_l=$truthy(arg_e["$nil?"]())?this.$loc(selector_t):this.$loc(selector_t).$join(arg_e.$loc().$expression()),$$$($$$($$("Source"),"Map"),"Send").$new(nil,this.$loc(selector_t),nil,nil,expr_l)}),2),$def(self,"$index_map",(function(receiver_e,lbrack_t,rbrack_t){return $$$($$$($$("Source"),"Map"),"Index").$new(this.$loc(lbrack_t),this.$loc(rbrack_t),receiver_e.$loc().$expression().$join(this.$loc(rbrack_t)))}),3),$def(self,"$send_index_map",(function(receiver_e,lbrack_t,rbrack_t){return $$$($$$($$("Source"),"Map"),"Send").$new(nil,this.$loc(lbrack_t).$join(this.$loc(rbrack_t)),nil,nil,receiver_e.$loc().$expression().$join(this.$loc(rbrack_t)))}),3),$def(self,"$block_map",(function(receiver_l,begin_t,end_t){return $$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(begin_t),this.$loc(end_t),receiver_l.$join(this.$loc(end_t)))}),3),$def(self,"$keyword_map",(function(keyword_t,begin_t,args,end_t){var $ret_or_1,end_l=nil;return args=$truthy($ret_or_1=args)?$ret_or_1:[],end_l=$truthy(end_t)?this.$loc(end_t):$truthy(args["$any?"]())&&$not(args.$last()["$nil?"]())?args.$last().$loc().$expression():$truthy(args["$any?"]())&&$truthy($rb_gt(args.$count(),1))?args["$[]"](-2).$loc().$expression():this.$loc(keyword_t),$$$($$$($$("Source"),"Map"),"Keyword").$new(this.$loc(keyword_t),this.$loc(begin_t),this.$loc(end_t),this.$loc(keyword_t).$join(end_l))}),4),$def(self,"$keyword_mod_map",(function(pre_e,keyword_t,post_e){return $$$($$$($$("Source"),"Map"),"Keyword").$new(this.$loc(keyword_t),nil,nil,this.$join_exprs(pre_e,post_e))}),3),$def(self,"$condition_map",(function(keyword_t,cond_e,begin_t,body_e,else_t,else_e,end_t){var end_l=nil;return end_l=$truthy(end_t)?this.$loc(end_t):$truthy(else_e)&&$truthy(else_e.$loc().$expression())?else_e.$loc().$expression():$truthy(this.$loc(else_t))?this.$loc(else_t):$truthy(body_e)&&$truthy(body_e.$loc().$expression())?body_e.$loc().$expression():$truthy(this.$loc(begin_t))?this.$loc(begin_t):cond_e.$loc().$expression(),$$$($$$($$("Source"),"Map"),"Condition").$new(this.$loc(keyword_t),this.$loc(begin_t),this.$loc(else_t),this.$loc(end_t),this.$loc(keyword_t).$join(end_l))}),7),$def(self,"$ternary_map",(function(begin_e,question_t,mid_e,colon_t,end_e){return $$$($$$($$("Source"),"Map"),"Ternary").$new(this.$loc(question_t),this.$loc(colon_t),this.$join_exprs(begin_e,end_e))}),5),$def(self,"$for_map",(function(keyword_t,in_t,begin_t,end_t){return $$$($$$($$("Source"),"Map"),"For").$new(this.$loc(keyword_t),this.$loc(in_t),this.$loc(begin_t),this.$loc(end_t),this.$loc(keyword_t).$join(this.$loc(end_t)))}),4),$def(self,"$rescue_body_map",(function(keyword_t,exc_list_e,assoc_t,exc_var_e,then_t,compstmt_e){var end_l=nil;return $truthy(compstmt_e)&&(end_l=compstmt_e.$loc().$expression()),$truthy(end_l["$nil?"]())&&$truthy(then_t)&&(end_l=this.$loc(then_t)),$truthy(end_l["$nil?"]())&&$truthy(exc_var_e)&&(end_l=exc_var_e.$loc().$expression()),$truthy(end_l["$nil?"]())&&$truthy(exc_list_e)&&(end_l=exc_list_e.$loc().$expression()),$truthy(end_l["$nil?"]())&&(end_l=this.$loc(keyword_t)),$$$($$$($$("Source"),"Map"),"RescueBody").$new(this.$loc(keyword_t),this.$loc(assoc_t),this.$loc(then_t),this.$loc(keyword_t).$join(end_l))}),6),$def(self,"$eh_keyword_map",(function(compstmt_e,keyword_t,body_es,else_t,else_e){var begin_l=nil,end_l=nil;return begin_l=$truthy(compstmt_e["$nil?"]())?$truthy(keyword_t["$nil?"]())?body_es.$first().$loc().$expression():this.$loc(keyword_t):compstmt_e.$loc().$expression(),end_l=$truthy(else_t)?$truthy(else_e["$nil?"]())?this.$loc(else_t):else_e.$loc().$expression():$not(body_es.$last()["$nil?"]())?body_es.$last().$loc().$expression():this.$loc(keyword_t),$$$($$$($$("Source"),"Map"),"Condition").$new(this.$loc(keyword_t),nil,this.$loc(else_t),nil,begin_l.$join(end_l))}),5),$def(self,"$guard_map",(function(keyword_t,guard_body_e){var guard_body_l,keyword_l=nil;return keyword_l=this.$loc(keyword_t),guard_body_l=guard_body_e.$loc().$expression(),$$$($$$($$("Source"),"Map"),"Keyword").$new(keyword_l,nil,nil,keyword_l.$join(guard_body_l))}),2),$def(self,"$static_string",(function(nodes){try{return $send(nodes,"map",[],(function $$18(node){var $ret_or_1,self=null==$$18.$$s?this:$$18.$$s,string=nil;if(null==node&&(node=nil),$eqeqeq("str",$ret_or_1=node.$type()))return node.$children()["$[]"](0);if($eqeqeq("begin",$ret_or_1)){if($truthy(string=self.$static_string(node.$children())))return string;Opal.ret(nil)}else Opal.ret(nil)}),{$$arity:1,$$s:this}).$join()}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),1),$def(self,"$static_regexp",(function(parts,options){var source=nil;return source=this.$static_string(parts),$truthy(source["$nil?"]())?nil:(source=$truthy(options.$children()["$include?"]("u"))?source.$encode($$$($$("Encoding"),"UTF_8")):$truthy(options.$children()["$include?"]("e"))?source.$encode($$$($$("Encoding"),"EUC_JP")):$truthy(options.$children()["$include?"]("s"))?source.$encode($$$($$("Encoding"),"WINDOWS_31J")):$truthy(options.$children()["$include?"]("n"))?source.$encode($$$($$("Encoding"),"BINARY")):source,$$("Regexp").$new(source,$truthy(options.$children()["$include?"]("x"))?$$$($$("Regexp"),"EXTENDED"):nil))}),2),$def(self,"$static_regexp_node",(function(node){var $a,parts=nil,options=nil;return $eqeq(node.$type(),"regexp")?(parts=($a=[node.$children()["$[]"]($range(0,-2,!1)),node.$children()["$[]"](-1)])[0],options=$a[1],this.$static_regexp(parts,options)):nil}),1),$def(self,"$collapse_string_parts?",(function(parts){var $ret_or_1;return $truthy($ret_or_1=parts["$one?"]())?["str","dstr"]["$include?"](parts.$first().$type()):$ret_or_1}),1),$def(self,"$value",(function(token){return token["$[]"](0)}),1),$def(self,"$string_value",(function(token){return $truthy(token["$[]"](0)["$valid_encoding?"]())||this.$diagnostic("error","invalid_encoding",nil,token["$[]"](1)),token["$[]"](0)}),1),$def(self,"$loc",(function(token){return $truthy(token)&&$truthy(token["$[]"](0))?token["$[]"](1):nil}),1),$def(self,"$diagnostic",(function(type,reason,arguments$,location,highlights){return null==highlights&&(highlights=[]),this.parser.$diagnostics().$process($$("Diagnostic").$new(type,reason,arguments$,location,highlights)),$eqeq(type,"error")?this.parser.$send("yyerror"):nil}),-5),$def(self,"$validate_definee",(function(definee){var $ret_or_1;return!($eqeqeq("int",$ret_or_1=definee.$type())||$eqeqeq("str",$ret_or_1)||$eqeqeq("dstr",$ret_or_1)||$eqeqeq("sym",$ret_or_1)||$eqeqeq("dsym",$ret_or_1)||$eqeqeq("regexp",$ret_or_1)||$eqeqeq("array",$ret_or_1)||$eqeqeq("hash",$ret_or_1))||(this.$diagnostic("error","singleton_literal",nil,definee.$loc().$expression()),!1)}),1),$def(self,"$rewrite_hash_args_to_kwargs",(function(args){var $writer=nil;return $truthy(args["$any?"]())&&$truthy(this["$kwargs?"](args.$last()))?($writer=[$rb_minus(args.$length(),1),args["$[]"]($rb_minus(args.$length(),1)).$updated("kwargs")],$send(args,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):$truthy($rb_gt(args.$length(),1))&&$eqeq(args.$last().$type(),"block_pass")&&$truthy(this["$kwargs?"](args["$[]"]($rb_minus(args.$length(),2))))?($writer=[$rb_minus(args.$length(),2),args["$[]"]($rb_minus(args.$length(),2)).$updated("kwargs")],$send(args,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),1),$def(self,"$kwargs?",(function(node){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=node.$type()["$=="]("hash"))?node.$loc().$begin()["$nil?"]():$ret_or_2)?node.$loc().$end()["$nil?"]():$ret_or_1}),1)}(Opal.$r($nesting)("Builders"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/context"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a,$truthy=Opal.truthy;return Opal.add_stubs("reset,attr_accessor,in_block,in_lambda"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Context"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"FLAGS",["in_defined","in_kwarg","in_argdef","in_def","in_class","in_block","in_lambda"]),$def(self,"$initialize",(function(){return this.$reset()}),0),$def(self,"$reset",(function(){return this.in_defined=!1,this.in_kwarg=!1,this.in_argdef=!1,this.in_def=!1,this.in_class=!1,this.in_block=!1,this.in_lambda=!1}),0),$send(self,"attr_accessor",$to_a($$("FLAGS"))),$def(self,"$in_dynamic_block?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$in_block())?$ret_or_1:this.$in_lambda()}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/max_numparam_stack"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus;return Opal.add_stubs("attr_reader,==,size,set,top,>,max,[],last,push,pop,private,[]=,-"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"MaxNumparamStack"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.stack=nil,self.$attr_reader("stack"),$const_set($nesting[0],"ORDINARY_PARAMS",-1),$def(self,"$initialize",(function(){return this.stack=[]}),0),$def(self,"$empty?",(function(){return this.stack.$size()["$=="](0)}),0),$def(self,"$has_ordinary_params!",(function(){return this.$set($$("ORDINARY_PARAMS"))}),0),$def(self,"$has_ordinary_params?",(function(){return this.$top()["$=="]($$("ORDINARY_PARAMS"))}),0),$def(self,"$has_numparams?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$top())?$rb_gt(this.$top(),0):$ret_or_1}),0),$def(self,"$register",(function(numparam){return this.$set([this.$top(),numparam].$max())}),1),$def(self,"$top",(function(){return this.stack.$last()["$[]"]("value")}),0),$def(self,"$push",(function($kwargs){var static$;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");if(!Opal.hasOwnProperty.call($kwargs.$$smap,"static"))throw Opal.ArgumentError.$new("missing keyword: static");return static$=$kwargs.$$smap.static,this.stack.$push($hash2(["value","static"],{value:0,static:static$}))}),1),$def(self,"$pop",(function(){return this.stack.$pop()["$[]"]("value")}),0),self.$private(),$def(self,"$set",(function(value){var $writer;return $writer=["value",value],$send(this.stack.$last(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/current_arg_stack"]=function(Opal){var $base,$parent_nesting,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$rb_minus=Opal.rb_minus,$send=Opal.send,$to_a=Opal.to_a;return Opal.add_stubs("attr_reader,freeze,==,size,<<,-,length,[]=,pop,clear,last"),$base=$nesting[0],$parent_nesting=$nesting,function($base,$super){var self=$klass($base,null,"CurrentArgStack");return self.$$prototype.stack=nil,self.$attr_reader("stack"),$def(self,"$initialize",(function(){return this.stack=[],this.$freeze()}),0),$def(self,"$empty?",(function(){return this.stack.$size()["$=="](0)}),0),$def(self,"$push",(function(value){return this.stack["$<<"](value)}),1),$def(self,"$set",(function(value){var $writer;return $writer=[$rb_minus(this.stack.$length(),1),value],$send(this.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$pop",(function(){return this.stack.$pop()}),0),$def(self,"$reset",(function(){return this.stack.$clear()}),0),$def(self,"$top",(function(){return this.stack.$last()}),0)}([$module($base,"Parser")].concat($parent_nesting)[0])},Opal.modules["parser/variables_stack"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("push,empty?,<<,new,pop,clear,last,to_sym,include?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"VariablesStack"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.stack=nil,$def(self,"$initialize",(function(){return this.stack=[],this.$push()}),0),$def(self,"$empty?",(function(){return this.stack["$empty?"]()}),0),$def(self,"$push",(function(){return this.stack["$<<"]($$("Set").$new())}),0),$def(self,"$pop",(function(){return this.stack.$pop()}),0),$def(self,"$reset",(function(){return this.stack.$clear()}),0),$def(self,"$declare",(function(name){return this.stack.$last()["$<<"](name.$to_sym())}),1),$def(self,"$declared?",(function(name){return this.stack.$last()["$include?"](name.$to_sym())}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/base"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$defs=Opal.defs,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$gvars=Opal.gvars,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$def=Opal.def,$not=Opal.not,$eqeqeq=Opal.eqeqeq,$to_ary=Opal.to_ary,$hash2=Opal.hash2;return Opal.add_stubs("default_parser,setup_source_buffer,default_encoding,parse,parse_with_comments,read,new,all_errors_are_fatal=,diagnostics,-,ignore_warnings=,lambda,puts,render,consumer=,force_encoding,dup,==,name,raw_source=,source=,private_class_method,attr_reader,version,diagnostics=,static_env=,context=,parser=,[],class,reset,source_buffer=,do_parse,comments=,comments,tokens=,!,raise,tokens,private,advance,===,diagnostic,map,process,yyerror,token_to_str"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Base"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.diagnostics=$proto.lexer=$proto.static_env=$proto.context=$proto.builder=$proto.current_arg_stack=$proto.pattern_variables=$proto.pattern_hash_keys=nil,$defs(self,"$parse",(function(string,file,line){var source_buffer,parser=nil;return null==file&&(file="(string)"),null==line&&(line=1),parser=this.$default_parser(),source_buffer=this.$setup_source_buffer(file,line,string,parser.$default_encoding()),parser.$parse(source_buffer)}),-2),$defs(self,"$parse_with_comments",(function(string,file,line){var source_buffer,parser=nil;return null==file&&(file="(string)"),null==line&&(line=1),parser=this.$default_parser(),source_buffer=this.$setup_source_buffer(file,line,string,parser.$default_encoding()),parser.$parse_with_comments(source_buffer)}),-2),$defs(self,"$parse_file",(function(filename){return this.$parse($$("File").$read(filename),filename)}),1),$defs(self,"$parse_file_with_comments",(function(filename){return this.$parse_with_comments($$("File").$read(filename),filename)}),1),$defs(self,"$default_parser",(function(){var parser=nil,$writer=nil;return parser=this.$new(),$writer=[!0],$send(parser.$diagnostics(),"all_errors_are_fatal=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!0],$send(parser.$diagnostics(),"ignore_warnings=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[$send(this,"lambda",[],(function(diagnostic){return null==$gvars.stderr&&($gvars.stderr=nil),null==diagnostic&&(diagnostic=nil),$gvars.stderr.$puts(diagnostic.$render())}),1)],$send(parser.$diagnostics(),"consumer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],parser}),0),$defs(self,"$setup_source_buffer",(function(file,line,string,encoding){var source_buffer,$writer=nil;return string=string.$dup().$force_encoding(encoding),source_buffer=$$$($$("Source"),"Buffer").$new(file,line),$eqeq(this.$name(),"Parser::Ruby18")?($send(source_buffer,"raw_source=",$to_a($writer=[string])),$writer[$rb_minus($writer.length,1)]):($send(source_buffer,"source=",$to_a($writer=[string])),$writer[$rb_minus($writer.length,1)]),source_buffer}),4),self.$private_class_method("setup_source_buffer"),self.$attr_reader("lexer"),self.$attr_reader("diagnostics"),self.$attr_reader("builder"),self.$attr_reader("static_env"),self.$attr_reader("source_buffer"),self.$attr_reader("context"),self.$attr_reader("max_numparam_stack"),self.$attr_reader("current_arg_stack"),self.$attr_reader("pattern_variables"),self.$attr_reader("pattern_hash_keys"),$def(self,"$initialize",(function(builder){var $writer=nil;return null==builder&&(builder=$$$($$$($$("Parser"),"Builders"),"Default").$new()),this.diagnostics=$$$($$("Diagnostic"),"Engine").$new(),this.static_env=$$("StaticEnvironment").$new(),this.context=$$("Context").$new(),this.max_numparam_stack=$$("MaxNumparamStack").$new(),this.current_arg_stack=$$("CurrentArgStack").$new(),this.pattern_variables=$$("VariablesStack").$new(),this.pattern_hash_keys=$$("VariablesStack").$new(),this.lexer=$$("Lexer").$new(this.$version()),$writer=[this.diagnostics],$send(this.lexer,"diagnostics=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[this.static_env],$send(this.lexer,"static_env=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[this.context],$send(this.lexer,"context=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.builder=builder,$writer=[this],$send(this.builder,"parser=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.last_token=nil,$truthy($$$(this.$class(),"Racc_debug_parser"))&&$truthy($$("ENV")["$[]"]("RACC_DEBUG"))&&(this.yydebug=!0),this.$reset()}),-1),$def(self,"$reset",(function(){return this.source_buffer=nil,this.lexer.$reset(),this.static_env.$reset(),this.context.$reset(),this.current_arg_stack.$reset(),this.pattern_variables.$reset(),this.pattern_hash_keys.$reset(),this}),0),$def(self,"$parse",(function(source_buffer){var self=this,$writer=nil,$ret_or_1=nil;return function(){try{return $writer=[source_buffer],$send(self.lexer,"source_buffer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.source_buffer=source_buffer,$truthy($ret_or_1=self.$do_parse())?$ret_or_1:nil}finally{self.source_buffer=nil,$writer=[nil],$send(self.lexer,"source_buffer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}}()}),1),$def(self,"$parse_with_comments",(function(source_buffer){var self=this,$writer=nil;return function(){try{return $writer=[[]],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],[self.$parse(source_buffer),self.lexer.$comments()]}finally{$writer=[nil],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}}()}),1),$def(self,"$tokenize",(function(source_buffer,recover){var self=this,$writer=nil,ast=nil;return null==recover&&(recover=!1),function(){try{$writer=[[]],$send(self.lexer,"tokens=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[[]],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)];try{ast=self.$parse(source_buffer)}catch($err){if(!Opal.rescue($err,[$$$($$("Parser"),"SyntaxError")]))throw $err;try{$not(recover)&&self.$raise()}finally{Opal.pop_exception()}}return[ast,self.lexer.$comments(),self.lexer.$tokens()]}finally{$writer=[nil],$send(self.lexer,"tokens=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[nil],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}}()}),-2),self.$private(),$def(self,"$next_token",(function(){var token;return token=this.lexer.$advance(),this.last_token=token,token}),0),$def(self,"$check_kwarg_name",(function(name_t){var $ret_or_1;return $eqeqeq(/^[a-z_]/,$ret_or_1=name_t["$[]"](0))?nil:$eqeqeq(/^[A-Z]/,$ret_or_1)?this.$diagnostic("error","argument_const",nil,name_t):nil}),1),$def(self,"$diagnostic",(function(level,reason,arguments$,location_t,highlights_ts){var $a,location,highlights;return null==highlights_ts&&(highlights_ts=[]),$a=$to_ary(location_t),null==$a[0]?nil:$a[0],location=null==$a[1]?nil:$a[1],highlights=$send(highlights_ts,"map",[],(function(token){var $c;return null==token&&(token=nil),$c=$to_ary(token),null==$c[0]?nil:$c[0],null==$c[1]?nil:$c[1]}),1),this.diagnostics.$process($$("Diagnostic").$new(level,reason,arguments$,location,highlights)),$eqeq(level,"error")?this.$yyerror():nil}),-5),$def(self,"$on_error",(function(error_token_id,error_value,value_stack){var $a,token_name,location;return token_name=this.$token_to_str(error_token_id),null==($a=$to_ary(error_value))[0]?nil:$a[0],location=null==$a[1]?nil:$a[1],this.diagnostics.$process($$("Diagnostic").$new("error","unexpected_token",$hash2(["token"],{token:token_name}),location))}),3)}($nesting[0],$$$($$("Racc"),"Parser"),$nesting)}($nesting[0],$nesting)},Opal.modules["parser/rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("new,process,include?,type,remove,wrap,insert_before,insert_after,replace,freeze,join,extend,warn_of_deprecation,class,warned_of_deprecation=,-"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Rewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.source_rewriter=nil,$def(self,"$rewrite",(function(source_buffer,ast){return this.source_rewriter=$$$($$("Source"),"Rewriter").$new(source_buffer),this.$process(ast),this.source_rewriter.$process()}),2),$def(self,"$assignment?",(function(node){return["lvasgn","ivasgn","gvasgn","cvasgn","casgn"]["$include?"](node.$type())}),1),$def(self,"$remove",(function(range){return this.source_rewriter.$remove(range)}),1),$def(self,"$wrap",(function(range,before,after){return this.source_rewriter.$wrap(range,before,after)}),3),$def(self,"$insert_before",(function(range,content){return this.source_rewriter.$insert_before(range,content)}),2),$def(self,"$insert_after",(function(range,content){return this.source_rewriter.$insert_after(range,content)}),2),$def(self,"$replace",(function(range,content){return this.source_rewriter.$replace(range,content)}),2),$const_set($nesting[0],"DEPRECATION_WARNING",["Parser::Rewriter is deprecated.","Please update your code to use Parser::TreeRewriter instead"].$join("\n").$freeze()),self.$extend($$("Deprecation")),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this,$writer=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),self.$class().$warn_of_deprecation(),$writer=[!0],$send($$$($$("Source"),"Rewriter"),"warned_of_deprecation=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield)}),-1)}($nesting[0],$$$($$$($$("Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)},Opal.modules["parser/tree_rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$def=(Opal.hash,Opal.def);return Opal.add_stubs("new,process,include?,type,remove,wrap,insert_before,insert_after,replace"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"TreeRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.source_rewriter=nil,$def(self,"$rewrite",(function(source_buffer,ast,$kwargs){var policy;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return policy=Opal.kwrestargs($kwargs,{}),this.source_rewriter=$$$($$$($$("Parser"),"Source"),"TreeRewriter").$new(source_buffer,Opal.to_hash(policy)),this.$process(ast),this.source_rewriter.$process()}),-3),$def(self,"$assignment?",(function(node){return["lvasgn","ivasgn","gvasgn","cvasgn","casgn"]["$include?"](node.$type())}),1),$def(self,"$remove",(function(range){return this.source_rewriter.$remove(range)}),1),$def(self,"$wrap",(function(range,before,after){return this.source_rewriter.$wrap(range,before,after)}),3),$def(self,"$insert_before",(function(range,content){return this.source_rewriter.$insert_before(range,content)}),2),$def(self,"$insert_after",(function(range,content){return this.source_rewriter.$insert_after(range,content)}),2),$def(self,"$replace",(function(range,content){return this.source_rewriter.$replace(range,content)}),2)}($nesting[0],$$$($$$($$("Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)},Opal.modules.parser=function(Opal){var self=Opal.top,$nesting=[],$$=Opal.$r($nesting),$$$=(Opal.nil,Opal.$$$),$truthy=Opal.truthy,$module=Opal.module;return Opal.add_stubs("=~,require,raise"),$truthy($$("RUBY_VERSION")["$=~"](/^1\.[89]\./))&&(self.$require("parser/version"),self.$raise($$("LoadError"),"parser v"+$$$($$("Parser"),"VERSION")+" cannot run on Ruby "+$$("RUBY_VERSION")+".\nPlease upgrade to Ruby 2.0.0 or higher, or use an older version of the parser gem.\n")),self.$require("set"),self.$require("racc/parser"),self.$require("ast"),function($base,$parent_nesting){var self=$module($base,"Parser"),$nesting=[self].concat($parent_nesting);return self.$require("parser/version"),self.$require("parser/messages"),self.$require("parser/deprecation"),function($base){var self=$module($base,"AST");self.$require("parser/ast/node"),self.$require("parser/ast/processor"),self.$require("parser/meta")}($nesting[0]),function($base){var self=$module($base,"Source");self.$require("parser/source/buffer"),self.$require("parser/source/range"),self.$require("parser/source/comment"),self.$require("parser/source/comment/associator"),self.$require("parser/source/rewriter"),self.$require("parser/source/rewriter/action"),self.$require("parser/source/tree_rewriter"),self.$require("parser/source/tree_rewriter/action"),self.$require("parser/source/map"),self.$require("parser/source/map/operator"),self.$require("parser/source/map/collection"),self.$require("parser/source/map/constant"),self.$require("parser/source/map/variable"),self.$require("parser/source/map/keyword"),self.$require("parser/source/map/definition"),self.$require("parser/source/map/method_definition"),self.$require("parser/source/map/send"),self.$require("parser/source/map/index"),self.$require("parser/source/map/condition"),self.$require("parser/source/map/ternary"),self.$require("parser/source/map/for"),self.$require("parser/source/map/rescue_body"),self.$require("parser/source/map/heredoc"),self.$require("parser/source/map/objc_kwarg")}($nesting[0]),self.$require("parser/syntax_error"),self.$require("parser/clobbering_error"),self.$require("parser/diagnostic"),self.$require("parser/diagnostic/engine"),self.$require("parser/static_environment"),self.$require("parser/lexer"),self.$require("parser/lexer/literal"),self.$require("parser/lexer/stack_state"),self.$require("parser/lexer/dedenter"),function($base){$module($base,"Builders").$require("parser/builders/default")}($nesting[0]),self.$require("parser/context"),self.$require("parser/max_numparam_stack"),self.$require("parser/current_arg_stack"),self.$require("parser/variables_stack"),self.$require("parser/base"),self.$require("parser/rewriter"),self.$require("parser/tree_rewriter")}($nesting[0],$nesting)},Opal.modules["parser/ruby31"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$not=Opal.not,$hash2=Opal.hash2,$send=Opal.send,$rb_gt=Opal.rb_gt,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$hash=Opal.hash,$const_set=Opal.const_set,$to_ary=Opal.to_ary,$eqeq=Opal.eqeq,$slice=Opal.slice;return Opal.add_stubs("require,end_with?,[],!,include?,diagnostic,extend_static,push,cmdarg,cond,unextend,pop,children,in_dynamic_block?,declared?,static_env,=~,expression,loc,has_ordinary_params?,max_numparam_stack,dup,stack,reverse_each,>,declare,register,to_i,new,each,split,empty?,[]=,-,+,compstmt,<<,preexe,nil?,begin_body,state=,alias,gvar,back_ref,undef_method,condition_mod,loop_mod,rescue_body,postexe,multi_assign,assign,array,op_assign,index,call_method,const_op_assignable,const_fetch,endless_method_name,def_endless_method,local_pop,in_def,in_def=,def_endless_singleton,logical_op,not_op,command_start=,in_kwarg,in_kwarg=,match_pattern,match_pattern_p,local_push,in_argdef=,in_block=,in_block,block,keyword_cmd,multi_lhs,begin,splat,concat,assignable,index_asgn,==,attr_asgn,const_global,const,symbol_internal,range_inclusive,range_exclusive,binary_op,unary_op,match_op,in_defined=,ternary,associate,declared_forward_args?,forwarded_args,block_pass,declared_anonymous_blockarg?,begin_keyword,condition,loop,case,case_match,for,in_class=,def_class,in_class,def_sclass,def_module,def_method,def_singleton,context,in_lambda,arg,restarg,size,procarg0,args,has_ordinary_params!,set,shadowarg,extend_dynamic,in_lambda=,call_lambda,has_numparams?,numargs,top,any?,when,in_pattern,if_guard,unless_guard,match_with_trailing_comma,array_pattern,find_pattern,hash_pattern,match_as,match_alt,const_pattern,match_rest,match_pair,match_label,match_nil_pattern,accessible,match_var,ident,pin,string_compose,dedent_string,dedent_level,string,character,xstring_compose,regexp_options,regexp_compose,words_compose,word,symbols_compose,string_internal,ivar,cvar,symbol,symbol_compose,respond_to?,negate,unary_num,integer,float,rational,complex,nil,self,true,false,__FILE__,__LINE__,__ENCODING__,nth_ref,declare_forward_args,forward_arg,check_kwarg_name,kwoptarg,kwarg,kwnilarg,kwrestarg,optarg,blockarg,declare_anonymous_blockarg,pair,pair_keyword,pair_label,pair_quoted,kwsplat,yyerrok"),self.$require("racc/parser.rb"),self.$require("parser"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var racc_action_table,racc_action_check,racc_action_pointer,racc_action_default,racc_goto_table,racc_goto_check,racc_goto_pointer,racc_goto_default,racc_reduce_table,racc_token_table,self=$klass($base,$super,"Ruby31"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),clist=nil,arr=nil,idx=nil,$proto=self.$$prototype;return $proto.static_env=$proto.lexer=$proto.max_numparam_stack=$proto.context=$proto.current_arg_stack=$proto.builder=$proto.pattern_variables=$proto.last_token=$proto.pattern_hash_keys=nil,$def(self,"$version",(function(){return 31}),0),$def(self,"$default_encoding",(function(){return $$$($$("Encoding"),"UTF_8")}),0),$def(self,"$endless_method_name",(function(name_t){return $not(["===","==","!=","<=",">="]["$include?"](name_t["$[]"](0)))&&$truthy(name_t["$[]"](0)["$end_with?"]("="))?this.$diagnostic("error","endless_setter",nil,name_t):nil}),1),$def(self,"$local_push",(function(){return this.static_env.$extend_static(),this.lexer.$cmdarg().$push(!1),this.lexer.$cond().$push(!1),this.max_numparam_stack.$push($hash2(["static"],{static:!0}))}),0),$def(self,"$local_pop",(function(){return this.static_env.$unextend(),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.max_numparam_stack.$pop()}),0),$def(self,"$try_declare_numparam",(function(node){var self=this,name=nil,location=nil,raw_max_numparam_stack=nil;return name=node.$children()["$[]"](0),!!($truthy(name["$=~"](/^_[1-9]$/))&&$not(self.$static_env()["$declared?"](name))&&$truthy(self.context["$in_dynamic_block?"]()))&&(location=node.$loc().$expression(),$truthy(self.$max_numparam_stack()["$has_ordinary_params?"]())&&self.$diagnostic("error","ordinary_param_defined",nil,[nil,location]),(raw_max_numparam_stack=self.$max_numparam_stack().$stack().$dup()).$pop(),function(){var $brk=Opal.new_brk();try{$send(raw_max_numparam_stack,"reverse_each",[],(function $$1(outer_scope){var self=null==$$1.$$s?this:$$1.$$s,outer_scope_has_numparams=nil;if(null==outer_scope&&(outer_scope=nil),!$truthy(outer_scope["$[]"]("static")))return outer_scope_has_numparams=$rb_gt(outer_scope["$[]"]("value"),0),$truthy(outer_scope_has_numparams)?self.$diagnostic("error","numparam_used_in_outer_scope",nil,[nil,location]):nil;Opal.brk(nil,$brk)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.$static_env().$declare(name),self.$max_numparam_stack().$register(name["$[]"](1).$to_i()),!0)}),1),clist=["-320,600,620,-119,1214,-121,-118,-320,-320,-320,221,222,1124,-320,-320","-624,-320,239,620,-123,620,925,-624,-110,-320,-732,237,428,-124,311","122,-122,430,429,717,311,-320,-320,620,-320,-320,-320,-320,-320,-116","-117,-124,620,620,-116,1001,828,718,627,892,925,627,126,240,-732,-123","833,125,-117,240,240,-320,-320,-320,-320,-320,-320,-320,-320,-320,-320","-320,-320,-320,-320,-624,-123,-320,-320,-320,-124,687,-320,-119,-110","-320,-121,-120,-320,1125,240,-720,135,-320,306,-320,-511,-320,-320,240","-320,-320,-320,-320,-320,-320,-320,-110,-320,-112,-109,310,-320,-320","-320,126,-120,310,-320,-320,125,-320,-320,-114,-110,-320,-320,-110,-113","-320,-320,126,-115,126,990,-113,125,-320,125,-110,-122,-320,-320,-122","-320,-320,-320,-320,-320,-118,126,126,-719,-107,1000,125,125,-116,-117","-124,126,126,-116,-117,-124,125,125,-108,221,222,218,-320,-320,-320","-320,-320,-320,-320,-320,-320,-320,-320,-320,-320,-320,221,222,-320","-320,-320,311,687,-320,-719,-123,-320,-111,661,-320,-123,648,-119,925","-320,-121,-320,-119,-320,-320,-121,-320,-320,-320,-320,-320,233,-320","-723,-320,-628,-720,-629,221,222,-723,-723,-723,104,105,-723,-723,-723","-320,-723,-120,-320,-320,-102,-320,-120,-320,-723,-723,-723,-723,-723","663,-320,924,-88,-122,219,-112,-723,-723,522,-723,-723,-723,-723,-723","-122,240,660,650,649,-122,-118,-111,-109,220,-744,-118,311,648,233,223","310,-116,240,-117,1063,300,-723,-723,-723,-723,-723,-723,-723,-723,-723","-723,-723,-723,-723,-723,233,682,-723,-723,-723,648,921,-723,106,107","-723,104,105,-723,-723,662,-723,-124,-723,126,-723,-112,-723,-723,125","-723,-723,-723,-723,-723,361,-723,-723,-723,-744,683,-719,-111,-109","648,306,650,649,646,648,362,648,-723,-110,648,-723,-723,-723,-723,240","-723,-744,-723,800,-320,-119,-112,-723,310,-112,-120,-320,-320,-320","650,649,-320,-320,-320,892,-320,-112,-111,-109,859,-111,-109,-112,-320","833,-320,-320,-320,875,106,107,919,-111,-109,-121,-320,-320,431,-320","-320,-320,-320,-320,650,649,646,949,471,650,649,650,649,655,650,649","653,920,1035,861,633,1063,233,-732,634,948,-320,-320,-320,-320,-320","-320,-320,-320,-320,-320,-320,-320,-320,-320,240,-629,-320,-320,-320","648,922,-320,-118,-635,-320,-119,-625,-320,-320,648,-320,-617,-320,-625","-320,510,-320,-320,-617,-320,-320,-320,-320,-320,683,-320,682,-320,507","506,-121,-118,-744,491,648,488,487,486,496,489,521,-320,-108,-623,-320","-320,-320,-320,499,-320,-623,-320,126,-723,-117,612,-320,125,614,-122","-723,-723,-723,650,649,651,-723,-723,633,-723,494,-625,960,650,649,664","-617,-723,-723,504,503,507,506,-121,633,-119,500,523,960,-723,-723,524","-723,-723,-723,-723,-723,239,650,649,659,491,-321,488,487,486,496,489","-623,-321,600,491,240,488,487,486,499,489,-321,-723,-723,-723,-723,-723","-723,-723,-723,-723,-723,-723,-723,-723,-723,558,-628,-723,-723,-723","494,688,-723,570,126,-723,648,572,-723,125,710,507,506,-723,574,-723","500,-723,-723,-114,-723,-723,-723,-723,-723,-614,-723,-723,-723,-321","126,-123,-614,-614,-614,125,135,-614,-614,-614,-614,-614,-723,-107,-87","-723,-723,-614,-723,-614,-723,-614,-614,-614,931,-116,485,-723,240,927","-120,-614,-614,928,-614,-614,-614,-614,-614,585,650,649,646,586,-311","227,-620,-621,227,950,951,-311,304,-620,-621,304,612,593,237,611,-311","-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614","-614,227,-614,-614,-614,227,-614,-614,592,315,-614,240,1188,-614,-614","233,-614,590,-614,126,-614,638,-614,-614,125,-614,-614,-614,-614,-614","-115,-614,-617,-614,-311,228,-620,-621,228,-617,-617,-617,-124,233,-617","-617,-617,-614,-617,306,-614,-614,-614,-614,597,-614,-617,-614,-617","-617,-617,612,-614,603,614,-614,228,264,-617,-617,228,-617,-617,-617","-617,-617,606,227,240,227,615,-356,-619,-622,675,616,636,574,-356,-619","-622,612,627,673,614,638,420,-356,-617,-617,-617,-617,-617,-617,-617","-617,-617,-617,-617,-617,-617,-617,631,754,-617,-617,-617,227,-617,-617","1149,1150,-617,499,630,-617,-617,632,-617,875,-617,640,-617,628,-617","-617,665,-617,-617,-617,-617,-617,228,-617,228,-617,-356,-619,-622,668","227,669,954,240,958,957,1197,1188,959,-617,-293,500,-617,-617,-617,-617","638,-617,671,-617,672,-723,676,1056,-617,240,-109,-617,-723,-723,-723","496,228,680,-723,-723,-320,-723,-118,956,264,499,681,-320,306,-723,-723","694,-720,985,892,695,-320,114,113,115,116,-723,-723,240,-723,-723,-723","-723,-723,228,221,222,697,118,117,119,261,700,507,506,263,262,701,500","703,264,104,105,221,222,358,-723,-723,-723,-723,-723,-723,-723,-723","-723,-723,-723,-723,-723,-723,-320,705,-723,-723,-723,-385,688,-723","227,719,-723,720,261,-723,227,1164,263,262,-723,724,-723,226,-723,-723","1162,-723,-723,-723,-723,-723,224,-723,-723,-723,726,102,90,93,94,732","95,97,96,98,754,985,892,-723,91,101,-723,-723,90,-111,499,-723,85,733","92,106,107,264,-723,264,91,-120,333,81,82,83,11,65,264,228,92,71,72","264,240,228,75,-723,73,74,76,35,36,79,80,788,240,240,500,240,84,33,32","114,113,115,116,-102,803,23,1056,240,606,281,282,10,53,335,12,118,117","119,108,64,110,109,111,814,112,120,121,-320,104,105,49,50,48,-321,-320","-723,819,-626,240,-720,-321,821,-723,-320,-626,280,279,-719,824,-321","829,-723,45,-626,830,38,834,858,66,67,227,862,68,863,40,-294,876,602","52,491,-723,488,487,486,558,489,520,24,558,888,892,910,102,90,93,94","913,95,97,96,98,914,-320,240,917,91,101,240,-321,926,-723,943,-626,85","944,92,106,107,945,962,46,47,333,81,82,83,11,65,964,300,970,71,72,972","974,228,75,-716,73,74,76,35,36,79,80,572,574,496,814,240,84,33,32,114","113,115,116,499,1159,23,488,487,486,306,489,10,53,335,12,118,117,119","108,64,110,109,111,306,112,120,121,227,104,105,49,50,48,-627,519,-614","507,506,814,264,-627,500,-614,520,892,987,988,-716,240,-627,240,-614","45,998,240,38,-295,240,66,67,1009,1013,68,1159,40,488,487,486,52,489","-716,-293,491,1017,488,487,486,24,489,700,718,1020,102,90,93,94,1022","95,97,96,98,1024,228,1026,1026,91,101,240,-627,774,-614,240,240,85,1054","92,106,107,1057,710,46,47,333,81,82,83,11,65,714,853,854,71,72,855,120","121,75,-717,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32,114,113","115,116,925,491,23,488,487,486,972,489,10,53,335,12,118,117,119,108","64,110,109,111,1069,112,120,121,240,104,105,49,50,48,814,491,-617,488","487,486,1086,489,710,-617,1088,1093,1094,1099,-717,1100,1101,714,-617","45,-296,1114,38,1115,1116,66,67,240,240,68,240,40,240,240,240,52,925","-717,710,491,1123,488,487,486,24,489,240,714,1129,102,90,93,94,1130","95,97,96,98,1132,700,1135,1138,91,101,1140,1142,240,-617,-385,1154,85","1165,92,106,107,1166,710,46,47,333,81,82,83,11,65,1026,1026,1026,71","72,1173,1186,1189,75,1194,73,74,76,35,36,79,80,256,1195,694,1115,1205","84,33,32,114,113,115,116,1205,700,23,129,130,131,132,133,10,53,335,12","118,117,119,108,64,110,109,111,1208,112,120,121,1210,104,105,49,50,48","264,268,269,270,271,281,282,276,277,272,273,1212,257,258,1214,1214,274","275,240,45,1026,255,38,1205,-720,66,67,-719,1231,68,1214,40,261,1214","267,52,263,262,1214,259,260,280,279,265,24,266,3,,,102,90,93,94,,95","97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32","114,113,115,116,,,23,,,,,677,10,53,335,12,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277","272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263","262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,278,,-265,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72",",,,75,,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32,114,113,115","116,,,23,,,,,889,10,53,335,12,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257","258,,,274,275,,45,,,337,,,66,67,,,68,,40,261,,267,52,263,262,,259,260","280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,","85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35","36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,677,10,53,335,12,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269","270,271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,337,,,66,67",",,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82","83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,918,10,53,335,12,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273",",257,258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259","260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278",",,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74","76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12","118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268","269,270,271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66","67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81","82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257","258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260","280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,","85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35","36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117","119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270","271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68",",40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,7,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258,,","274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279","265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,240,278,,,,,85,,92","106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79","80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271","281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40","261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,","104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258",",,274,275,,45,,,337,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280","279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,","92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36","79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271","281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40","261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,","104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258",",,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280","279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,","92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36","79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271","281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40","261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,","104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745,-745",",,274,275,,45,,,38,,,66,67,,264,68,,40,261,,267,52,263,262,,259,260","280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,261,,91,101,263,262",",259,260,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,","73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,264,491,23,488,487","486,,489,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,264,,261,,,,263,262,710,259,260,,,,,,274,275,,45,,,38,",",66,67,,,68,,40,261,,267,52,263,262,,259,260,,,265,24,266,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82","83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745","-745,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260","280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85",",92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36","79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271","281,282,276,277,272,273,,-745,-745,,,274,275,,45,,,38,,,66,67,,,68,","40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,","95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,","104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,45,,,38,,,66,67,,,68,,40","261,,267,52,263,262,,259,260,,,265,24,266,,,,102,90,93,94,,95,97,96","98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71","72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,",",,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,264,268,269,270,271,281,282,276,,272,273,,,,,,274,275,,45,",",38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266",",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47","7,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,264,268,269,270,271,281,282,,,272,273",",,,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260","280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85",",92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36","79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,-745,-745,-745","-745,281,282,,,-745,-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40,261",",267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95,97,96","98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71","72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,",",,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274,275,,45",",,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266",",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47","333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745","-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259","260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,",",85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76","35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,-745,-745","-745,-745,281,282,,,-745,-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40","261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65",",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,",",23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274,275",",45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24","266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106","107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113","115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121",",104,105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274","275,,245,,,253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,280,279,265","250,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745","-745,,,274,275,,245,,,253,,,66,67,,,68,,,261,,267,52,263,262,,259,260","280,279,265,250,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84","349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,245,",",253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,,,,250,,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47",",75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,",",,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,264,,,,,,,,,,,,,,,,274,275,,245,,,253,,,66,67,,,68,,,261,,,52,263","262,,259,260,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84","349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,245,",",253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,,,,250,,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,",",,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,",",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79","80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108","64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98",",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,","53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,",",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,","254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,436,,,,52,,,,,,",",,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,",",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79","80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,",",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35","36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,,,,85,,92,106,107,-441,,46,47,,,,-441,-441,-441",",,-441,-441,-441,,-441,,,,,,,,-441,-441,-441,-441,,,,,,,,,-441,-441",",-441,-441,-441,-441,-441,,,,,,,,,,,,,,,,,,,,,,,-441,-441,-441,-441","-441,-441,-441,-441,-441,-441,-441,-441,-441,-441,,,-441,-441,-441,",",-441,,306,-441,,,-441,-441,,-441,,-441,,-441,,-441,-441,,-441,-441","-441,-441,-441,,-441,-441,-441,,,,,,,,,,,,,,-441,,,-441,-441,,-441,","-441,81,82,83,,65,,-441,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33","32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,","112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,",",68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,","81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,",",84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66","67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117","119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,",",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73","74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,",",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,",",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-327,,46,47,,,,-327","-327,-327,,,-327,-327,-327,,-327,,,,,,,,-327,,-327,-327,,,,,,,,,-327","-327,,-327,-327,-327,-327,-327,,,,,,,,,,,,,,,,,,,,,,,-327,-327,-327","-327,-327,-327,-327,-327,-327,-327,-327,-327,-327,-327,,,-327,-327,-327",",,-327,,315,-327,,,-327,-327,,-327,,-327,,-327,,-327,-327,,-327,-327","-327,-327,-327,,-327,,-327,,,,,,,,,,,,,,-327,,,-327,-327,,-327,,-327","81,82,83,,65,,-327,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327","112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,",",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,","91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355","79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108","64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,","245,,,253,,,66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,","53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,",",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82","83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,",",52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33","32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327","112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,",",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,","91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36","79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108","64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98",",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,797,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73","74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,",",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,",",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,867,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82","83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,",",52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327","112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,",",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,","91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355","79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108","64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98",",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35","36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,",",,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,",",,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,",",,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,",",,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96","98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76","354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117","119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,",",,,,,245,,,253,,,66,67,,,68,,324,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,","118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,",",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47",",75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,",",,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49","50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,328,,,,,,250",",,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121",",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,797,,,","52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33","32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,240,,,81","82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,","84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66","67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,",",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,","118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,",",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47",",75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,","53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,",",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49","50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328",",,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106","107,,,46,47,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,",",84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38",",,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,","91,101,,,,,,420,85,,92,106,107,,,46,47,81,82,83,,65,,,,71,72,,,,75,","73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53",",,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,",",,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,",",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116",",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121",",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,322,","52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84","349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,",",66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96","98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76","354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117","119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,",",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73","74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,",",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,",",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,",",102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-275,,46","47,,,,-275,-275,-275,,,-275,-275,-275,491,-275,488,487,486,496,489,",",-275,-275,-275,,,,499,,,,,,-275,-275,,-275,-275,-275,-275,-275,,491",",488,487,486,496,489,494,,,,,,,,499,504,503,507,506,,,,500,,491,,488","487,486,496,489,-275,,,,,494,,-275,499,,,,306,-275,504,503,507,506,",",,500,,,,,,,,,494,485,,,,-275,-275,,,,,507,506,,,,500,,,,-275,,,-275",",81,82,83,-275,65,,485,,71,72,-275,,,75,,73,74,76,354,355,79,80,,,,",",84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79","80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95","97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73","74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,","53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,",",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,",",,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,","102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,","102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,","102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116",",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121",",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52",",,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33","32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84","349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66","67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,",",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,",",,,,245,,,253,,,66,67,,,68,,324,,,,52,,,328,,,,,,250,,,,,102,325,93","94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,",",,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121",",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52",",,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65","92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,",",,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66","67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,",",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,",",,,,245,,,253,,,66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","560,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,",",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,",",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49","50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328",",,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65","92,106,107,71,72,46,560,,75,,73,74,76,354,355,79,80,,,,,,84,349,357","114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84","349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66","67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,",",,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96","98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76","35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,",",,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325","93,94,,95,97,96,98,,,,,91,101,240,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,","254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,",",,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,",",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79","80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108","64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98",",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,","53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,",",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,","254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,",",,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,",",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11,65,,,,71,72,,,,75,,73,74","76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,,12,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,","118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,",",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47",",75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53",",,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,",",,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,",",,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48",",,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,",",,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,","102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,","102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116",",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47","81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114","113,115,116,,,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40",",,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,420,85",",92,106,107,,,46,47,81,82,83,,65,,,,71,72,,,,75,,73,74,76,35,36,79,80",",,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96","98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76","35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-725,,46,47,,,,-725,-725","-725,,,-725,-725,-725,,-725,,,,,,,,-725,-725,-725,-725,-725,,,,,,,,-725","-725,,-725,-725,-725,-725,-725,,,,,,,,,,,,,,,,,,,,,,,-725,-725,-725","-725,-725,-725,-725,-725,-725,-725,-725,-725,-725,-725,,,-725,-725,-725",",,-725,,,-725,,,-725,-725,,-725,,-725,,-725,,-725,-725,,-725,-725,-725","-725,-725,,-725,-725,-725,,,,,,,,,,,,,,-725,,,-725,-725,-725,-725,,-725","-724,-725,,,,,-725,-724,-724,-724,,,-724,-724,-724,,-724,,,,,,,,-724","-724,-724,-724,-724,,,,114,113,115,116,-724,-724,,-724,-724,-724,-724","-724,,,,,118,117,119,,,,,,,,,,,104,105,,,358,-724,-724,-724,-724,-724","-724,-724,-724,-724,-724,-724,-724,-724,-724,,,-724,-724,-724,,,-724",",,-724,,,-724,-724,,-724,,-724,,-724,,-724,-724,,-724,-724,-724,-724","-724,,-724,-724,-724,,102,90,93,94,,95,97,96,98,,,,-724,91,101,-724","-724,-724,-724,,-724,85,-724,92,106,107,-275,-724,81,82,83,11,65,-275","-275,-275,71,72,-275,-275,-275,75,-275,73,74,76,35,36,79,80,-275,-275","-275,-275,,84,33,32,114,113,115,116,-275,-275,23,-275,-275,-275,-275","-275,10,53,9,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275","-275,-275,,,-275,-275,-275,45,,-275,38,306,-275,66,67,-275,-275,68,-275","40,-275,,-275,52,-275,-275,,-275,-275,-275,-275,-275,24,-275,-275,-275",",102,90,93,94,,95,97,96,98,,,,-275,91,101,-275,-275,,-275,,-275,85,","92,106,107,,-275,46,47,81,82,83,,65,,,,71,72,,,,75,,73,74,76,35,36,79","80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,",",,91,101,126,,,,,125,85,,92,106,107,-312,,46,47,,,,-312,-312,-312,,","-312,-312,-312,,-312,,,,,,,,-312,,-312,-312,-312,,,,,,,,-312,-312,,-312","-312,-312,-312,-312,,,,,,,,,,,,,,,,,,,,,,,-312,-312,-312,-312,-312,-312","-312,-312,-312,-312,-312,-312,-312,-312,,,-312,-312,-312,,,-312,,,-312",",,-312,-312,,-312,,-312,,-312,,-312,-312,,-312,-312,-312,-312,-312,","-312,,-312,,,,,,,,,,,,,,-312,,,-312,-312,-312,-312,,-312,,-312,,81,82","83,-312,65,,,,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33","32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,","112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,",",68,,436,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,",",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117","119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,",",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73","74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,",",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,",",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,",",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116",",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104","105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52",",,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",436,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81","82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84","33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,",",,,,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1107,,,253",",,66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,",",,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1146,,,253,,","66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,",",,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,",",84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,253,,,66","67,,,68,,,491,,488,487,486,496,489,,,,,,,,,499,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,588,,494,85,,92,106,107,81,82,83,,65,507,506,,71","72,500,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116",",,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105",",,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72",",,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254",",,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,,,358",",,,,,,,,,,,,,,,,,,,346,,,253,,,66,67,,,68,,,491,,488,487,486,496,489",",,,,,,,,499,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,360,,494,85,,92","106,107,81,82,83,,65,507,506,,71,72,500,,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342",",,66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,",",,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66","67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81","82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1146,,,253,,,66,67,,","68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,400,64,110,109,401",",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,407,,,402,,,253,,,66,67",",,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68",",,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357","114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,,",",,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85","65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,341,,",",,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65","92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113","115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121",",104,105,,,358,,,,,,,,,,,,,,,,,,,,395,,,38,,,66,67,,,68,,40,,,,,,,,",",,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106","107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,350,,,118,117,119,400,64,110,109,401,,112,120,121,,104","105,,,358,,,,,,,,,,,,,,,,,,,,402,,,253,,,66,67,,,68,,,,,,,,,,,,,,,,",",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,185,196","186,209,182,202,192,191,212,213,207,190,189,184,210,214,215,194,183","197,201,203,195,188,,,,204,211,206,205,198,208,193,181,200,199,,,,,","180,187,178,179,175,176,177,138,140,137,,139,,,,,,,,169,170,,166,148","149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,,,,,,,,,163,162",",147,168,165,164,173,160,161,155,153,145,167,146,,,174,102,,,,,,,,,",",,,,101,185,196,186,209,182,202,192,191,212,213,207,190,189,184,210","214,215,194,183,197,201,203,195,188,,,,204,211,206,205,198,208,193,181","200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139,,,,,,,,169,170",",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,,,,,",",,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,,,174,102",",,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213,207,190,189","184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206,205,198,208","193,181,200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139,,,,,",",,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159",",,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146",",,174,102,,,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213,207","190,189,184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206,205","198,208,193,181,200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139",",,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158","159,,,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167","146,,,174,102,,,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213","207,190,189,184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206","294,293,295,292,181,200,199,,,,,,180,187,178,179,289,290,291,287,140","110,109,288,,112,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152",",,,171,172,158,159,,,,,,299,,,,,,,,163,162,,147,168,165,164,173,160","161,155,153,145,167,146,,,174,114,113,115,116,,,,,,491,,488,487,486","496,489,118,117,119,774,,,,777,499,,,,,104,105,,,358,,,,,,,,,,,,,494",",,,,,,776,,,747,507,506,,745,,500,746,,,,,,,,,,,,,,,,775,,,,102,90,93","94,,95,97,96,98,,,,,91,101,114,113,115,116,485,,85,,92,106,107,,,762","763,,118,117,119,774,,,491,777,488,487,486,496,489,104,105,,,358,,,","499,,,,,,,,,,,,,,,,776,,,747,,,494,745,,,746,,,,,504,503,507,506,,,","500,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,",",85,,92,106,107,,,762,763,,118,117,119,774,,,491,777,488,487,486,496","489,104,105,,,358,,,,499,,,,,,,,,,,,,,,,776,,,747,,,494,745,,,746,,749",",,504,503,507,506,,,,500,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91","101,114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,,777","754,,,,,104,105,,,358,499,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,","749,,,,,,,500,,,,,,,775,,,,102,755,93,94,,95,97,96,98,,,,,91,101,114","113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,491,777,488","487,486,496,489,104,105,,,358,,,,499,,,,,,,,,,,,,,,,776,,,747,,,494","745,,,746,,,,,504,503,507,506,,,,500,,,,775,,,,102,90,93,94,,95,97,96","98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119","774,,,491,777,488,487,486,496,489,104,105,,,358,,,,499,,,,,,,,,,,,,",",,776,,,747,,,494,745,,,746,,749,,,,,507,506,,,,500,,,,775,,,,102,90","93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762","763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776",",,747,,,,745,,,746,,749,,,,,,,491,,488,487,486,496,489,775,,,,102,90","93,94,499,95,97,96,98,,,,,91,101,240,114,113,115,116,,85,,92,106,107","494,,762,763,,,118,117,119,774,,507,506,777,,,500,,,104,105,,,358,,",",,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,485,,,,,,,,,,,,,775,,,,102","90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,","762,763,,118,117,119,774,,,,777,754,,,,,104,105,,,358,499,,,,,,,,,,",",,,,,,,,776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775,,,,102,755,93","94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763",",118,117,119,774,,,,777,754,,,,,104,105,,,358,499,,,,,,,,,,,,,,,,,,","776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775,,,,102,755,93,94,,95","97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,762,763,185,196,186,209,182","202,192,191,212,213,207,190,189,184,210,214,215,194,183,197,201,203","195,188,,,,204,211,206,205,198,208,193,181,200,199,,,,,,180,187,178","179,175,176,177,138,140,,,139,,,,,,,,169,170,,166,148,149,150,157,154","156,,,151,152,,,,171,172,158,159,,,,,,,,,,,,,,163,162,,147,168,165,164","173,160,161,155,153,145,167,146,,,174,114,113,115,116,,,491,,488,487","486,496,489,,,,118,117,119,774,,499,,777,754,,,,,104,105,,,358,499,",",,,,,,,494,,,,,,,,,,776,507,506,747,,,500,745,,,746,,749,,,,,,,500,",",,,,,775,,,,102,755,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,","85,,92,106,107,,,762,763,,118,117,119,774,,,,777,754,,,,,104,105,,,358","499,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775",",,,102,755,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106","107,,,762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,",",,,,,,,,776,,,747,,,,745,,,746,,,,,,,,,,,,,,,,775,,,,102,90,93,94,,95","97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763,,118","117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776,,,747,",",,745,,,746,,,,,,,,,,,,,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101","114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,,777,",",,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,,,,,,",",,,,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,",",85,,92,106,107,,,762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358",",,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,,,,,,,,,,,,,,775,,,,102","90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,","762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,114,113,115","116,,,,,,,,,776,,,747,118,117,119,745,,,746,,1053,,,,,104,105,,,358",",,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107",",,762,763,491,,488,487,486,496,489,,,,,102,90,93,94,499,95,97,96,98",",,,,91,101,114,113,115,116,,,85,,92,106,107,494,,,,,118,117,119,,504","503,507,506,,,,500,,104,105,,,358,,,,,,,,,,,,491,,488,487,486,496,489",",,,,,,,,499,,,,,,491,485,488,487,486,496,489,,,,,,,,,499,494,102,90","93,94,,95,97,96,98,,507,506,,91,101,500,,,,,494,85,,92,106,107,,,,504","503,507,506,,,491,500,488,487,486,496,489,,491,,488,487,486,496,489","499,,,,,485,,,499,,491,,488,487,486,496,489,,,,,,494,644,,499,485,,",",494,504,503,507,506,,,,500,504,503,507,506,,,,500,494,,,,,,,,,504,503","507,506,,,491,500,488,487,486,496,489,,,,,,,,,499,485,,,,,,,,485,,,",",,,,,,,,,494,,,,485,,,,,,,507,506,872,469,,500,871,,,,,,,,169,170,,166","148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,485",",,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,842,469,174",",843,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172","158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153","145,167,146,837,462,174,,838,,,,,,,,169,170,,166,148,149,150,157,154","156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165","164,173,160,161,155,153,145,167,146,465,469,174,,464,,,,,,,,169,170",",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,",",,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,729,469","174,,730,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171","172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155","153,145,167,146,556,462,174,,557,,,,,,,,169,170,,166,148,149,150,157","154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168","165,164,173,160,161,155,153,145,167,146,458,462,174,,459,,,,,,,,169","170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306",",,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,556","462,174,,557,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,",",,171,172,158,159,,,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161","155,153,145,167,146,729,469,174,,730,,,,,,,,169,170,,166,148,149,150","157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147","168,165,164,173,160,161,155,153,145,167,146,727,462,174,,728,,,,,,,","169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,",",,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146","807,462,174,,808,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152",",,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160","161,155,153,145,167,146,810,469,174,,811,,,,,,,,169,170,,166,148,149","150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162",",147,168,165,164,173,160,161,155,153,145,167,146,1200,462,174,,1201",",,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158","159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145","167,146,869,462,174,,870,,,,,,,,169,170,,166,148,149,150,157,154,156",",,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164","173,160,161,155,153,145,167,146,1202,469,174,,1203,,,,,,,,169,170,,166","148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,",",163,162,,147,168,165,164,173,160,161,155,153,145,167,146,839,469,174",",840,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172","158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153","145,167,146,1218,469,174,,1217,,,,,,,,169,170,,166,148,149,150,157,154","156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165","164,173,160,161,155,153,145,167,146,727,462,174,,728,,,,,,,,169,170",",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,",",,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,,,174"],racc_action_table=arr=$$$("Array").$new(28717,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),clist=["464,521,1016,837,1236,838,992,464,464,464,515,515,1053,464,464,289,464","23,835,631,1087,1058,289,807,464,927,443,137,396,785,3,840,137,137,501","31,464,464,1089,464,464,464,464,464,1104,1105,1108,384,385,392,850,622","501,625,1092,932,1092,331,23,928,521,625,331,393,1058,927,464,464,464","464,464,464,464,464,464,464,464,464,464,464,289,1165,464,464,464,443","464,464,1200,807,464,1201,839,464,1053,928,840,9,464,31,464,932,464","464,515,464,464,464,464,464,871,464,837,464,838,992,785,871,871,871","1016,1202,31,871,871,1016,871,464,631,807,464,464,807,464,871,464,835","396,1087,835,840,835,464,1087,807,464,871,871,1203,871,871,871,871,871","1222,622,1089,839,392,850,622,1089,1104,1105,1108,384,385,1104,1105","1108,384,385,393,981,981,12,871,871,871,871,871,871,871,871,871,871","871,871,871,871,553,553,871,871,871,69,871,871,1202,1165,871,839,416","871,1165,1127,1200,735,871,1201,871,1200,871,871,1201,871,871,871,871","871,251,871,729,871,243,1203,244,641,641,729,729,729,358,358,729,729","729,871,729,1202,871,871,802,871,1202,871,729,729,729,729,729,417,871","735,802,871,14,808,729,729,246,729,729,729,729,729,1203,981,416,1127","1127,1203,1222,810,979,15,251,1222,351,576,252,17,69,243,553,244,1127","27,729,729,729,729,729,729,729,729,729,729,729,729,729,729,20,458,729","729,729,656,729,729,358,358,729,48,48,729,729,417,729,246,729,641,729","808,729,729,641,729,729,729,729,729,42,729,729,729,252,459,810,810,979","947,351,576,576,576,658,45,414,729,458,413,729,729,729,729,53,729,20","729,576,730,458,808,729,351,808,729,730,730,730,656,656,730,730,730","1220,730,808,810,979,656,810,979,459,730,1220,730,730,730,1006,48,48","727,810,979,459,730,730,216,730,730,730,730,730,947,947,947,756,229","658,658,414,414,414,413,413,413,728,923,658,402,947,19,746,402,756,730","730,730,730,730,730,730,730,730,730,730,730,730,730,746,44,730,730,730","412,730,730,1006,231,730,727,291,730,730,418,730,288,730,291,730,235","730,730,288,730,730,730,730,730,870,730,869,730,700,700,728,923,19,972","415,972,972,972,972,972,245,730,44,290,730,730,730,730,972,730,290,730","996,872,44,822,730,996,822,730,872,872,872,412,412,412,872,872,776,872","972,291,776,418,418,418,288,872,872,972,972,972,972,870,931,869,972","247,931,872,872,248,872,872,872,872,872,254,415,415,415,1022,634,1022","1022,1022,1022,1022,290,634,362,914,972,914,914,914,1022,914,634,872","872,872,872,872,872,872,872,872,872,872,872,872,872,305,43,872,872,872","1022,872,872,319,389,872,411,320,872,389,914,1022,1022,872,323,872,1022","872,872,362,872,872,872,872,872,108,872,872,872,634,5,362,108,108,108","5,335,108,108,108,287,108,872,43,336,872,872,287,872,108,872,108,108","108,744,43,1022,872,338,744,872,108,108,744,108,108,108,108,108,339","411,411,411,340,347,286,294,295,29,759,759,347,286,294,295,29,376,346","21,376,347,108,108,108,108,108,108,108,108,108,108,108,108,108,108,287","345,108,108,108,1187,108,108,345,349,108,350,1187,108,108,352,108,345","108,509,108,1187,108,108,509,108,108,108,108,108,21,108,111,108,347","286,294,295,29,111,111,111,21,353,111,111,111,108,111,357,108,108,108","108,359,108,111,108,111,111,111,377,108,366,377,108,345,368,111,111","1187,111,111,111,111,111,371,442,374,404,378,54,293,292,442,379,404","381,54,293,292,380,390,442,380,404,391,54,111,111,111,111,111,111,111","111,111,111,111,111,111,111,395,939,111,111,111,394,111,111,1090,1090","111,939,394,111,111,397,111,678,111,406,111,394,111,111,426,111,111","111,111,111,442,111,404,111,54,293,292,432,1145,434,775,1157,775,775","1157,1145,775,111,435,939,111,111,111,111,1145,111,437,111,440,465,444","939,111,454,678,111,465,465,465,1132,394,456,465,465,811,465,678,775","531,1132,457,811,466,465,465,472,811,823,823,473,811,762,762,762,762","465,465,476,465,465,465,465,465,1145,383,383,477,762,762,762,531,478","1132,1132,531,531,481,1132,482,532,762,762,16,16,762,465,465,465,465","465,465,465,465,465,465,465,465,465,465,811,483,465,465,465,493,465","465,1106,505,465,508,532,465,18,1106,532,532,465,511,465,18,465,465","1106,465,465,465,465,465,18,465,465,465,517,762,762,762,762,525,762","762,762,762,945,1190,1190,465,762,762,465,465,88,465,945,465,762,526","762,762,762,533,465,534,88,465,387,387,387,387,387,387,535,1106,88,387","387,536,561,18,387,842,387,387,387,387,387,387,387,562,563,567,945,583","387,387,387,387,387,387,387,584,587,387,945,589,594,51,51,387,387,387","387,387,387,387,387,387,387,387,387,598,387,387,387,843,387,387,387","387,387,593,843,842,607,343,608,843,593,609,842,843,343,51,51,842,619","593,623,842,387,343,624,387,626,653,387,387,363,661,387,663,387,670","679,363,387,714,842,714,714,714,684,714,363,387,689,691,693,707,387","387,387,387,712,387,387,387,387,713,843,715,722,387,387,731,593,740","842,748,343,387,749,387,387,387,750,779,387,387,841,841,841,841,841","841,782,784,790,841,841,791,792,363,841,400,841,841,841,841,841,841","841,794,796,697,804,806,841,841,841,841,841,841,841,697,1099,841,1099","1099,1099,809,1099,841,841,841,841,841,841,841,841,841,841,841,841,812","841,841,841,242,841,841,841,841,841,344,242,400,697,697,813,816,344","697,400,242,825,831,832,400,836,344,845,400,841,849,851,841,866,868","841,841,877,890,841,1197,841,1197,1197,1197,841,1197,400,893,913,894","913,913,913,841,913,897,899,902,841,841,841,841,903,841,841,841,841","905,242,906,908,841,841,912,344,925,400,933,934,841,938,841,841,841","941,913,841,841,236,236,236,236,236,236,913,649,649,236,236,649,649","649,236,401,236,236,236,236,236,236,236,8,8,8,8,8,236,236,236,236,236","236,236,946,494,236,494,494,494,965,494,236,236,236,236,236,236,236","236,236,236,236,236,968,236,236,236,969,236,236,236,236,236,978,710","401,710,710,710,983,710,494,401,986,993,995,1002,401,1003,1004,494,401","236,1005,1031,236,1032,1037,236,236,1042,1043,236,1044,236,1045,1046","1047,236,1051,401,710,1114,1052,1114,1114,1114,236,1114,1055,710,1059","236,236,236,236,1066,236,236,236,236,1071,1072,1074,1075,236,236,1076","1078,1079,401,1080,1096,236,1107,236,236,236,1110,1114,236,236,1103","1103,1103,1103,1103,1103,1111,1112,1113,1103,1103,1124,1143,1146,1103","1155,1103,1103,1103,1103,1103,1103,1103,25,1156,1161,1171,1172,1103","1103,1103,1103,1103,1103,1103,1174,1177,1103,581,581,581,581,581,1103","1103,1103,1103,1103,1103,1103,1103,1103,1103,1103,1103,1180,1103,1103","1103,1181,1103,1103,1103,1103,1103,25,25,25,25,25,25,25,25,25,25,25","1182,25,25,1183,1185,25,25,1199,1103,1204,25,1103,1206,1217,1103,1103","1218,1224,1103,1225,1103,25,1226,25,1103,25,25,1227,25,25,25,25,25,1103","25,1,,,1103,1103,1103,1103,,1103,1103,1103,1103,,,,,1103,1103,,25,,",",,1103,,1103,1103,1103,,,1103,1103,997,997,997,997,997,997,,,,997,997",",,,997,,997,997,997,997,997,997,997,373,373,373,373,373,997,997,997","997,997,997,997,,,997,,,,,447,997,997,997,997,997,997,997,997,997,997","997,997,,997,997,997,,997,997,997,997,997,447,447,447,447,447,447,447","447,447,447,447,,447,447,,,447,447,,997,,,997,,,997,997,,,997,,997,447",",447,997,447,447,,447,447,447,447,447,997,447,,,,997,997,997,997,,997","997,997,997,,,,,997,997,,447,,447,,,997,,997,997,997,,,997,997,337,337","337,337,337,337,,,,337,337,,,,337,,337,337,337,337,337,337,337,334,334","334,334,334,337,337,337,337,337,337,337,,,337,,,,,692,337,337,337,337","337,337,337,337,337,337,337,337,,337,337,337,,337,337,337,337,337,692","692,692,692,692,692,692,692,692,692,692,,692,692,,,692,692,,337,,,337",",,337,337,,,337,,337,692,,692,337,692,692,,692,692,692,692,692,337,692",",,,337,337,337,337,,337,337,337,337,,,,,337,337,,692,,,,,337,,337,337","337,,,337,337,38,38,38,38,38,38,,,,38,38,,,,38,,38,38,38,38,38,38,38",",,,,,38,38,38,38,38,38,38,,,38,,,,,453,38,38,38,38,38,38,38,38,38,38","38,38,,38,38,38,,38,38,38,38,38,453,453,453,453,453,453,453,453,453","453,453,,453,453,,,453,453,,38,,,38,,,38,38,,,38,,38,453,,453,38,453","453,,453,453,453,453,453,38,453,,,,38,38,38,38,,38,38,38,38,,,,,38,38",",453,,,,,38,,38,38,38,,,38,38,642,642,642,642,642,642,,,,642,642,,,","642,,642,642,642,642,642,642,642,,,,,,642,642,642,642,642,642,642,,","642,,,,,723,642,642,642,642,642,642,642,642,642,642,642,642,,642,642","642,,642,642,642,642,642,723,723,723,723,723,723,723,723,723,723,723",",723,723,,,723,723,,642,,,642,,,642,642,,,642,,642,723,,723,642,723","723,,723,723,723,723,723,642,723,,,,642,642,642,642,,642,642,642,642",",,,,642,642,,723,,,,,642,,642,642,642,,,642,642,1068,1068,1068,1068","1068,1068,,,,1068,1068,,,,1068,,1068,1068,1068,1068,1068,1068,1068,",",,,,1068,1068,1068,1068,1068,1068,1068,,,1068,,,,,,1068,1068,1068,1068","1068,1068,1068,1068,1068,1068,1068,1068,,1068,1068,1068,,1068,1068,1068","1068,1068,817,817,817,817,817,817,817,817,817,817,817,,817,817,,,817","817,,1068,,,1068,,,1068,1068,,,1068,,1068,817,,817,1068,817,817,,817","817,817,817,817,1068,817,,,,1068,1068,1068,1068,,1068,1068,1068,1068",",,,,1068,1068,,817,,,,,1068,,1068,1068,1068,,,1068,1068,372,372,372","372,372,372,,,,372,372,,,,372,,372,372,372,372,372,372,372,,,,,,372","372,372,372,372,372,372,,,372,,,,,,372,372,372,372,372,372,372,372,372","372,372,372,,372,372,372,,372,372,372,372,372,874,874,874,874,874,874","874,874,874,874,874,,874,874,,,874,874,,372,,,372,,,372,372,,,372,,372","874,,874,372,874,874,,874,874,874,874,874,372,874,,,,372,372,372,372",",372,372,372,372,,,,,372,372,,874,,,,,372,,372,372,372,,,372,372,973","973,973,973,973,973,,,,973,973,,,,973,,973,973,973,973,973,973,973,",",,,,973,973,973,973,973,973,973,,,973,,,,,,973,973,973,973,973,973,973","973,973,973,973,973,,973,973,973,,973,973,973,973,973,317,317,317,317","317,317,317,317,317,317,317,,317,317,,,317,317,,973,,,973,,,973,973",",,973,,973,317,,317,973,317,317,,317,317,317,317,317,973,317,,,,973","973,973,973,,973,973,973,973,,,,,973,973,,317,,,,,973,,973,973,973,",",973,973,2,2,2,2,2,2,,,,2,2,,,,2,,2,2,2,2,2,2,2,,,,,,2,2,2,2,2,2,2,",",2,,,,,,2,2,2,2,2,2,2,2,2,2,2,2,,2,2,2,,2,2,2,2,2,550,550,550,550,550","550,550,550,550,550,550,,550,550,,,550,550,,2,,,2,,,2,2,,,2,,2,550,","550,2,550,550,,550,550,550,550,550,2,550,,,,2,2,2,2,,2,2,2,2,,,,,2,2","550,550,,,,,2,,2,2,2,,,2,2,230,230,230,230,230,230,,,,230,230,,,,230",",230,230,230,230,230,230,230,,,,,,230,230,230,230,230,230,230,,,230",",,,,,230,230,230,230,230,230,230,230,230,230,230,230,,230,230,230,,230","230,230,230,230,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067",",1067,1067,,,1067,1067,,230,,,230,,,230,230,,,230,,230,1067,,1067,230","1067,1067,,1067,1067,1067,1067,1067,230,1067,,,,230,230,230,230,,230","230,230,230,,,,,230,230,,1067,,,,,230,,230,230,230,,,230,230,342,342","342,342,342,342,,,,342,342,,,,342,,342,342,342,342,342,342,342,,,,,","342,342,342,342,342,342,342,,,342,,,,,,342,342,342,342,342,342,342,342","342,342,342,342,,342,342,342,,342,342,342,342,342,1034,1034,1034,1034","1034,1034,1034,1034,1034,1034,1034,,1034,1034,,,1034,1034,,342,,,342",",,342,342,,,342,,342,1034,,1034,342,1034,1034,,1034,1034,1034,1034,1034","342,1034,,,,342,342,342,342,,342,342,342,342,,,,,342,342,,1034,,,,,342",",342,342,342,,,342,342,253,253,253,253,253,253,,,,253,253,,,,253,,253","253,253,253,253,253,253,,,,,,253,253,253,253,253,253,253,,,253,,,,,","253,253,253,253,253,253,253,253,253,253,253,253,,253,253,253,,253,253","253,253,253,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,","1033,1033,,,1033,1033,,253,,,253,,,253,253,,,253,,253,1033,,1033,253","1033,1033,,1033,1033,1033,1033,1033,253,1033,,,,253,253,253,253,,253","253,253,253,,,,,253,253,,1033,,,,,253,,253,253,253,,,253,253,1013,1013","1013,1013,1013,1013,,,,1013,1013,,,,1013,,1013,1013,1013,1013,1013,1013","1013,,,,,,1013,1013,1013,1013,1013,1013,1013,,,1013,,,,,,1013,1013,1013","1013,1013,1013,1013,1013,1013,1013,1013,1013,,1013,1013,1013,,1013,1013","1013,1013,1013,1011,1011,1011,1011,1011,1011,1011,1011,1011,1011,1011",",1011,1011,,,1011,1011,,1013,,,1013,,,1013,1013,,,1013,,1013,1011,,1011","1013,1011,1011,,1011,1011,1011,1011,1011,1013,1011,,,,1013,1013,1013","1013,,1013,1013,1013,1013,,,,,1013,1013,,1011,,,,,1013,,1013,1013,1013",",,1013,1013,1098,1098,1098,1098,1098,1098,,,,1098,1098,,,,1098,,1098","1098,1098,1098,1098,1098,1098,,,,,,1098,1098,1098,1098,1098,1098,1098",",,1098,,,,,,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098",",1098,1098,1098,,1098,1098,1098,1098,1098,1010,1010,1010,1010,1010,1010","1010,1010,1010,1010,1010,,1010,1010,,,1010,1010,,1098,,,1098,,,1098","1098,,,1098,,1098,1010,,1010,1098,1010,1010,,1010,1010,1010,1010,1010","1098,1010,,,,1098,1098,1098,1098,,1098,1098,1098,1098,,,,,1098,1098",",1010,,,,,1098,,1098,1098,1098,,,1098,1098,1097,1097,1097,1097,1097","1097,,,,1097,1097,,,,1097,,1097,1097,1097,1097,1097,1097,1097,,,,,,1097","1097,1097,1097,1097,1097,1097,,,1097,,,,,,1097,1097,1097,1097,1097,1097","1097,1097,1097,1097,1097,1097,,1097,1097,1097,,1097,1097,1097,1097,1097","529,529,529,529,529,529,529,529,529,529,529,,529,529,,,529,529,,1097",",,1097,,,1097,1097,,546,1097,,1097,529,,529,1097,529,529,,529,529,529","529,529,1097,529,,,,1097,1097,1097,1097,,1097,1097,1097,1097,,,546,","1097,1097,546,546,,546,546,,1097,,1097,1097,1097,,,1097,1097,1147,1147","1147,1147,1147,1147,,,,1147,1147,,,,1147,,1147,1147,1147,1147,1147,1147","1147,,,,,,1147,1147,1147,1147,1147,1147,1147,547,1115,1147,1115,1115","1115,,1115,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147",",1147,1147,1147,,1147,1147,1147,1147,1147,604,,547,,,,547,547,1115,547","547,,,,,,604,604,,1147,,,1147,,,1147,1147,,,1147,,1147,604,,604,1147","604,604,,604,604,,,604,1147,604,,,,1147,1147,1147,1147,,1147,1147,1147","1147,,,,,1147,1147,,,,,,,1147,,1147,1147,1147,,,1147,1147,621,621,621","621,621,621,,,,621,621,,,,621,,621,621,621,621,621,621,621,,,,,,621","621,621,621,621,621,621,,,621,,,,,,621,621,621,621,621,621,621,621,621","621,621,621,,621,621,621,,621,621,621,621,621,364,364,364,364,364,364","364,364,364,364,364,,364,364,,,364,364,,621,,,621,,,621,621,,,621,,621","364,,364,621,364,364,,364,364,364,364,364,621,364,,,,621,621,621,621",",621,621,621,621,,,,,621,621,,,,,,,621,,621,621,621,,,621,621,892,892","892,892,892,892,,,,892,892,,,,892,,892,892,892,892,892,892,892,,,,,","892,892,892,892,892,892,892,,,892,,,,,,892,892,892,892,892,892,892,892","892,892,892,892,,892,892,892,,892,892,892,892,892,365,365,365,365,365","365,365,365,365,365,365,,365,365,,,365,365,,892,,,892,,,892,892,,,892",",892,365,,365,892,365,365,,365,365,365,365,365,892,365,,,,892,892,892","892,,892,892,892,892,,,,,892,892,,,,,,,892,,892,892,892,,,892,892,618","618,618,618,618,618,,,,618,618,,,,618,,618,618,618,618,618,618,618,",",,,,618,618,618,618,618,618,618,,,618,,,,,,618,618,618,618,618,618,618","618,618,618,618,618,,618,618,618,,618,618,618,618,618,551,,,,,,,,,,",",,,,,551,551,,618,,,618,,,618,618,,,618,,618,551,,551,618,551,551,,551","551,,,551,618,551,,,,618,618,618,618,,618,618,618,618,,,,,618,618,,",",,,,618,,618,618,618,,,618,618,1191,1191,1191,1191,1191,1191,,,,1191","1191,,,,1191,,1191,1191,1191,1191,1191,1191,1191,,,,,,1191,1191,1191","1191,1191,1191,1191,,,1191,,,,,,1191,1191,1191,1191,1191,1191,1191,1191","1191,1191,1191,1191,,1191,1191,1191,,1191,1191,1191,1191,1191,549,549","549,549,549,549,549,549,,549,549,,,,,,549,549,,1191,,,1191,,,1191,1191",",,1191,,1191,549,,549,1191,549,549,,549,549,549,549,549,1191,549,,,","1191,1191,1191,1191,,1191,1191,1191,1191,,,,,1191,1191,,,,,,,1191,,1191","1191,1191,,,1191,1191,135,135,135,135,135,135,,,,135,135,,,,135,,135","135,135,135,135,135,135,,,,,,135,135,135,135,135,135,135,,,135,,,,,","135,135,135,135,135,135,135,135,135,135,135,135,,135,135,135,,135,135","135,135,135,548,548,548,548,548,548,548,,,548,548,,,,,,548,548,,135",",,135,,,135,135,,,135,,135,548,,548,135,548,548,,548,548,548,548,548","135,548,,,,135,135,135,135,,135,135,135,135,,,,,135,135,,,,,,,135,,135","135,135,,,135,135,218,218,218,218,218,218,,,,218,218,,,,218,,218,218","218,218,218,218,218,,,,,,218,218,218,218,218,218,218,,,218,,,,,,218","218,218,218,218,218,218,218,218,218,218,218,,218,218,218,,218,218,218","218,218,545,545,545,545,545,545,545,,,545,545,,,,,,545,545,,218,,,218",",,218,218,,,218,,218,545,,545,218,545,545,,545,545,545,545,545,218,545",",,,218,218,218,218,,218,218,218,218,,,,,218,218,,,,,,,218,,218,218,218",",,218,218,846,846,846,846,846,846,,,,846,846,,,,846,,846,846,846,846","846,846,846,,,,,,846,846,846,846,846,846,846,,,846,,,,,,846,846,846","846,846,846,846,846,846,846,846,846,,846,846,846,,846,846,846,846,846","544,544,544,544,544,544,544,,,544,544,,,,,,544,544,,846,,,846,,,846","846,,,846,,846,544,,544,846,544,544,,544,544,544,544,544,846,544,,,","846,846,846,846,,846,846,846,846,,,,,846,846,,,,,,,846,,846,846,846",",,846,846,857,857,857,857,857,857,,,,857,857,,,,857,,857,857,857,857","857,857,857,,,,,,857,857,857,857,857,857,857,,,857,,,,,,857,857,857","857,857,857,857,857,857,857,857,857,,857,857,857,,857,857,857,857,857","543,543,543,543,543,543,543,,,543,543,,,,,,543,543,,857,,,857,,,857","857,,,857,,857,543,,543,857,543,543,,543,543,543,543,543,857,543,,,","857,857,857,857,,857,857,857,857,,,,,857,857,,,,,,,857,,857,857,857",",,857,857,388,388,388,388,388,388,,,,388,388,,,,388,,388,388,388,388","388,388,388,,,,,,388,388,388,388,388,388,388,,,388,,,,,,388,388,388","388,388,388,388,388,388,388,388,388,,388,388,388,,388,388,388,388,388","542,542,542,542,542,542,542,,,542,542,,,,,,542,542,,388,,,388,,,388","388,,,388,,388,542,,542,388,542,542,,542,542,542,542,542,388,542,,,","388,388,388,388,,388,388,388,388,,,,,388,388,,,,,,,388,,388,388,388",",,388,388,991,991,991,991,991,991,,,,991,991,,,,991,,991,991,991,991","991,991,991,,,,,,991,991,991,991,991,991,991,,,991,,,,,,991,991,991","991,991,991,991,991,991,991,991,991,,991,991,991,,991,991,991,991,991","541,541,541,541,541,541,541,,,541,541,,,,,,541,541,,991,,,991,,,991","991,,,991,,991,541,,541,991,541,541,,541,541,541,541,541,991,541,,,","991,991,991,991,,991,991,991,991,,,,,991,991,,,,920,920,920,991,920","991,991,991,920,920,991,991,,920,,920,920,920,920,920,920,920,,,,,,920","920,920,920,920,920,920,,,920,,,,,,,920,,,920,920,920,920,920,920,920","920,,920,920,920,,920,920,920,920,920,540,540,540,540,540,540,540,,","540,540,,,,,,540,540,,920,,,920,,,920,920,,,920,,,540,,540,920,540,540",",540,540,540,540,540,920,540,,,,920,920,920,920,,920,920,920,920,,,",",920,920,,,,921,921,921,920,921,920,920,920,921,921,920,920,,921,,921","921,921,921,921,921,921,,,,,,921,921,921,921,921,921,921,,,921,,,,,",",921,,,921,921,921,921,921,921,921,921,,921,921,921,,921,921,921,921","921,530,530,530,530,530,530,530,530,530,530,530,,530,530,,,530,530,","921,,,921,,,921,921,,,921,,,530,,530,921,530,530,,530,530,530,530,530","921,530,,,,921,921,921,921,,921,921,921,921,,,,,921,921,,,,922,922,922","921,922,921,921,921,922,922,921,921,,922,,922,922,922,922,922,922,922",",,,,,922,922,922,922,922,922,922,,,922,,,,,,,922,,,922,922,922,922,922","922,922,922,,922,922,922,,922,922,922,922,922,538,,,,,,,,,,,,,,,,538","538,,922,,,922,,,922,922,,,922,,,538,,538,922,538,538,,538,538,,,,922",",,,,922,922,922,922,,922,922,922,922,,,,,922,922,,,,733,733,733,922","733,922,922,922,733,733,922,922,,733,,733,733,733,733,733,733,733,,",",,,733,733,733,733,733,733,733,,,733,,,,,,,733,,,733,733,733,733,733","733,733,733,,733,733,733,,733,733,733,733,733,539,,,,,,,,,,,,,,,,539","539,,733,,,733,,,733,733,,,733,,,539,,,733,539,539,,539,539,,,,733,",",,,733,733,733,733,,733,733,733,733,,,,,733,733,,,,732,732,732,733,732","733,733,733,732,732,733,733,,732,,732,732,732,732,732,732,732,,,,,,732","732,732,732,732,732,732,,,732,,,,,,,732,,,732,732,732,732,732,732,732","732,,732,732,732,,732,732,732,732,732,537,,,,,,,,,,,,,,,,537,537,,732",",,732,,,732,732,,,732,,,537,,537,732,537,537,,537,537,,,,732,,,,,732","732,732,732,,732,732,732,732,,,,,732,732,,,,,,,732,,732,732,732,,,732","732,333,333,333,333,333,,,,333,333,,,,333,,333,333,333,333,333,333,333",",,,,,333,333,333,333,333,333,333,,,333,,,,,,333,333,,333,333,333,333","333,333,333,333,333,,333,333,333,,333,333,333,333,333,,,,,,,,,,,,,,",",,,,,333,,,333,,,333,333,,,333,,333,,,,333,,,,,,,,,333,,,,,333,333,333","333,,333,333,333,333,,,,,333,333,,,,265,265,265,333,265,333,333,333","265,265,333,333,,265,,265,265,265,265,265,265,265,,,,,,265,265,265,265","265,265,265,,,265,,,,,,,265,,,265,265,265,265,265,265,265,265,,265,265","265,,265,265,265,265,265,,,,,,,,,,,,,,,,,,,,265,,,265,,,265,265,,,265",",,,,,265,,,,,,,,,265,,,,,265,265,265,265,,265,265,265,265,,,,,265,265",",,,264,264,264,265,264,265,265,265,264,264,265,265,,264,,264,264,264","264,264,264,264,,,,,,264,264,264,264,264,264,264,,,264,,,,,,,264,,,264","264,264,264,264,264,264,264,,264,264,264,,264,264,264,264,264,,,,,,",",,,,,,,,,,,,,264,,,264,,,264,264,,,264,,,,,,264,,,,,,,,,264,,,,,264","264,264,264,,264,264,264,264,,,,,264,264,,,,263,263,263,264,263,264","264,264,263,263,264,264,,263,,263,263,263,263,263,263,263,,,,,,263,263","263,263,263,263,263,,,263,,,,,,,263,,,263,263,263,263,263,263,263,263",",263,263,263,,263,263,263,263,263,,,,,,,,,,,,,,,,,,,,263,,,263,,,263","263,,,263,,,,,,263,,,,,,,,,263,,,,,263,263,263,263,,263,263,263,263",",,,,263,263,,,,262,262,262,263,262,263,263,263,262,262,263,263,,262",",262,262,262,262,262,262,262,,,,,,262,262,262,262,262,262,262,,,262",",,,,,,262,,,262,262,262,262,262,262,262,262,,262,262,262,,262,262,262","262,262,,,,,,,,,,,,,,,,,,,,262,,,262,,,262,262,,,262,,,,,,262,,,,,,",",,262,,,,,262,262,262,262,,262,262,262,262,,,,,262,262,,,,261,261,261","262,261,262,262,262,261,261,262,262,,261,,261,261,261,261,261,261,261",",,,,,261,261,261,261,261,261,261,,,261,,,,,,,261,,,261,261,261,261,261","261,261,261,,261,261,261,,261,261,261,261,261,,,,,,,,,,,,,,,,,,,,261",",,261,,,261,261,,,261,,,,,,261,,,,,,,,,261,,,,,261,261,261,261,,261","261,261,261,,,,,261,261,,,,708,708,708,261,708,261,261,261,708,708,261","261,,708,,708,708,708,708,708,708,708,,,,,,708,708,708,708,708,708,708",",,708,,,,,,,708,,,708,708,708,708,708,708,708,708,,708,708,708,,708","708,708,708,708,,,,,,,,,,,,,,,,,,,,708,,,708,,,708,708,,,708,,,,,,708",",,,,,,,,708,,,,,708,708,708,708,,708,708,708,708,,,,,708,708,,,,260","260,260,708,260,708,708,708,260,260,708,708,,260,,260,260,260,260,260","260,260,,,,,,260,260,260,260,260,260,260,,,260,,,,,,,260,,,260,260,260","260,260,260,260,260,,260,260,260,,260,260,260,260,260,,,,,,,,,,,,,,",",,,,,260,,,260,,,260,260,,,260,,,,,,260,,,,,,,,,260,,,,,260,260,260","260,,260,260,260,260,,,,,260,260,,,,694,694,694,260,694,260,260,260","694,694,260,260,,694,,694,694,694,694,694,694,694,,,,,,694,694,694,694","694,694,694,,,694,,,,,,,694,,,694,694,694,694,694,694,694,694,,694,694","694,,694,694,694,694,694,,,,,,,,,,,,,,,,,,,,694,,,694,,,694,694,,,694",",694,,,,694,,,,,,,,,694,,,,,694,694,694,694,,694,694,694,694,,,,,694","694,,,,259,259,259,694,259,694,694,694,259,259,694,694,,259,,259,259","259,259,259,259,259,,,,,,259,259,259,259,259,259,259,,,259,,,,,,,259",",,259,259,259,259,259,259,259,259,,259,259,259,,259,259,259,259,259",",,,,,,,,,,,,,,,,,,,259,,,259,,,259,259,,,259,,,,,,259,,,,,,,,,259,,",",,259,259,259,259,,259,259,259,259,,,,,259,259,,,,258,258,258,259,258","259,259,259,258,258,259,259,,258,,258,258,258,258,258,258,258,,,,,,258","258,258,258,258,258,258,,,258,,,,,,,258,,,258,258,258,258,258,258,258","258,,258,258,258,,258,258,258,258,258,,,,,,,,,,,,,,,,,,,,258,,,258,",",258,258,,,258,,,,,,258,,,,,,,,,258,,,,,258,258,258,258,,258,258,258","258,,,,,258,258,,,,257,257,257,258,257,258,258,258,257,257,258,258,","257,,257,257,257,257,257,257,257,,,,,,257,257,257,257,257,257,257,,","257,,,,,,,257,,,257,257,257,257,257,257,257,257,,257,257,257,,257,257","257,257,257,,,,,,,,,,,,,,,,,,,,257,,,257,,,257,257,,,257,,,,,,257,,",",,,,,,257,,,,,257,257,257,257,,257,257,257,257,,,,,257,257,,,,688,688","688,257,688,257,257,257,688,688,257,257,,688,,688,688,688,688,688,688","688,,,,,,688,688,688,688,688,688,688,,,688,,,,,,,688,,,688,688,688,688","688,688,688,688,,688,688,688,,688,688,688,688,688,,,,,,,,,,,,,,,,,,",",688,,,688,,,688,688,,,688,,,,,,688,,,,,,,,,688,,,,,688,688,688,688",",688,688,688,688,,,,,688,688,,,,687,687,687,688,687,688,688,688,687","687,688,688,,687,,687,687,687,687,687,687,687,,,,,,687,687,687,687,687","687,687,,,687,,,,,,,687,,,687,687,687,687,687,687,687,687,,687,687,687",",687,687,687,687,687,,,,,,,,,,,,,,,,,,,,687,,,687,,,687,687,,,687,,",",,,687,,,,,,,,,687,,,,,687,687,687,687,,687,687,687,687,,,,,687,687",",,,,,,687,,687,687,687,32,,687,687,,,,32,32,32,,,32,32,32,,32,,,,,,",",32,32,32,32,,,,,,,,,32,32,,32,32,32,32,32,,,,,,,,,,,,,,,,,,,,,,,32","32,32,32,32,32,32,32,32,32,32,32,32,32,,,32,32,32,,,32,,32,32,,,32,32",",32,,32,,32,,32,32,,32,32,32,32,32,,32,32,32,,,,,,,,,,,,,,32,,,32,32",",32,,32,683,683,683,,683,,32,,683,683,,,,683,,683,683,683,683,683,683","683,,,,,,683,683,683,683,683,683,683,,,683,,,,,,,683,,,683,683,683,683","683,683,683,683,,683,683,683,,683,683,683,683,683,,,,,,,,,,,,,,,,,,",",683,,,683,,,683,683,,,683,,,,,,683,,,,,,,,,683,,,,,683,683,683,683",",683,683,683,683,,,,,683,683,,,,682,682,682,683,682,683,683,683,682","682,683,683,,682,,682,682,682,682,682,682,682,,,,,,682,682,682,682,682","682,682,,,682,,,,,,,682,,,682,682,682,682,682,682,682,682,,682,682,682",",682,682,682,682,682,,,,,,,,,,,,,,,,,,,,682,,,682,,,682,682,,,682,,",",,,682,,,,,,,,,682,,,,,682,682,682,682,,682,682,682,682,,,,,682,682",",,,681,681,681,682,681,682,682,682,681,681,682,682,,681,,681,681,681","681,681,681,681,,,,,,681,681,681,681,681,681,681,,,681,,,,,,,681,,,681","681,681,681,681,681,681,681,681,681,681,681,,681,681,681,681,681,,,",",,,,,,,,,,,,,,,,681,,,681,,,681,681,,,681,,,,681,,681,,,681,,,,,,681",",,,,681,681,681,681,,681,681,681,681,,,,,681,681,,,,956,956,956,681","956,681,681,681,956,956,681,681,,956,,956,956,956,956,956,956,956,,",",,,956,956,956,956,956,956,956,,,956,,,,,,,956,,,956,956,956,956,956","956,956,956,,956,956,956,,956,956,956,956,956,,,,,,,,,,,,,,,,,,,,956",",,956,,,956,956,,,956,,,,,,956,,,,,,,,,956,,,,,956,956,956,956,,956","956,956,956,,,,,956,956,,,,962,962,962,956,962,956,956,956,962,962,956","956,,962,,962,962,962,962,962,962,962,,,,,,962,962,962,962,962,962,962",",,962,,,,,,,962,,,962,962,962,962,962,962,962,962,,962,962,962,,962","962,962,962,962,,,,,,,,,,,,,,,,,,,,962,,,962,,,962,962,,,962,,,,,,962",",,,,,,,,962,,,,,962,962,962,962,,962,962,962,962,,,,,962,962,,,,,,,962",",962,962,962,33,,962,962,,,,33,33,33,,,33,33,33,,33,,,,,,,,33,,33,33",",,,,,,,,33,33,,33,33,33,33,33,,,,,,,,,,,,,,,,,,,,,,,33,33,33,33,33,33","33,33,33,33,33,33,33,33,,,33,33,33,,,33,,33,33,,,33,33,,33,,33,,33,","33,33,,33,33,33,33,33,,33,,33,,,,,,,,,,,,,,33,,,33,33,,33,,33,34,34","34,,34,,33,,34,34,,,,34,,34,34,34,34,34,34,34,,,,,,34,34,34,34,34,34","34,,,34,,,,,,,34,,,34,34,34,34,34,34,34,34,34,34,34,34,,34,34,34,34","34,,,,,,,,,,,,,,,,,,,,34,,,34,,,34,34,,,34,,34,,34,,34,,,34,,,,,,34",",,,,34,34,34,34,,34,34,34,34,,,,,34,34,,,,680,680,680,34,680,34,34,34","680,680,34,34,,680,,680,680,680,680,680,680,680,,,,,,680,680,680,680","680,680,680,,,680,,,,,,,680,,,680,680,680,680,680,680,680,680,680,680","680,680,,680,680,680,680,680,,,,,,,,,,,,,,,,,,,,680,,,680,,,680,680",",,680,,680,,680,,680,,,680,,,,,,680,,,,,680,680,680,680,,680,680,680","680,,,,,680,680,,,,677,677,677,680,677,680,680,680,677,677,680,680,","677,,677,677,677,677,677,677,677,,,,,,677,677,677,677,677,677,677,,","677,,,,,,,677,,,677,677,677,677,677,677,677,677,,677,677,677,,677,677","677,677,677,,,,,,,,,,,,,,,,,,,,677,,,677,,,677,677,,,677,,,,,,677,,",",,,,,,677,,,,,677,677,677,677,,677,677,677,677,,,,,677,677,,,,,,,677",",677,677,677,,,677,677,676,676,676,676,676,,,,676,676,,,,676,,676,676","676,676,676,676,676,,,,,,676,676,676,676,676,676,676,,,676,,,,,,676","676,,676,676,676,676,676,676,676,676,676,,676,676,676,,676,676,676,676","676,,,,,,,,,,,,,,,,,,,,676,,,676,,,676,676,,,676,,676,,,,676,,,,,,,",",676,,,,,676,676,676,676,,676,676,676,676,,,,,676,676,,,,985,985,985","676,985,676,676,676,985,985,676,676,,985,,985,985,985,985,985,985,985",",,,,,985,985,985,985,985,985,985,,,985,,,,,,,985,,,985,985,985,985,985","985,985,985,,985,985,985,,985,985,985,985,985,,,,,,,,,,,,,,,,,,,,985",",,985,,,985,985,,,985,,,,,,985,,,,,,,,,985,,,,,985,985,985,985,,985","985,985,985,,,,,985,985,,,,673,673,673,985,673,985,985,985,673,673,985","985,,673,,673,673,673,673,673,673,673,,,,,,673,673,673,673,673,673,673",",,673,,,,,,,673,,,673,673,673,673,673,673,673,673,673,673,673,673,,673","673,673,673,673,,,,,,,,,,,,,,,,,,,,673,,,673,,,673,673,,,673,,673,,673",",673,,,673,,,,,,673,,,,,673,673,673,673,,673,673,673,673,,,,,673,673",",,,672,672,672,673,672,673,673,673,672,672,673,673,,672,,672,672,672","672,672,672,672,,,,,,672,672,672,672,672,672,672,,,672,,,,,,,672,,,672","672,672,672,672,672,672,672,,672,672,672,,672,672,672,672,672,,,,,,",",,,,,,,,,,,,,672,,,672,,,672,672,,,672,,,,,,672,,,,,,,,,672,,,,,672","672,672,672,,672,672,672,672,,,,,672,672,,,,990,990,990,672,990,672","672,672,990,990,672,672,,990,,990,990,990,990,990,990,990,,,,,,990,990","990,990,990,990,990,,,990,,,,,,,990,,,990,990,990,990,990,990,990,990",",990,990,990,,990,990,990,990,990,,,,,,,,,,,,,,,,,,,,990,,,990,,,990","990,,,990,,990,,,,990,,,,,,,,,990,,,,,990,990,990,990,,990,990,990,990",",,,,990,990,,,,671,671,671,990,671,990,990,990,671,671,990,990,,671",",671,671,671,671,671,671,671,,,,,,671,671,671,671,671,671,671,,,671",",,,,,,671,,,671,671,671,671,671,671,671,671,,671,671,671,,671,671,671","671,671,,,,,,,,,,,,,,,,,,,,671,,,671,,,671,671,,,671,,671,,,,671,,,",",,,,,671,,,,,671,671,671,671,,671,671,671,671,,,,,671,671,,,,,,,671",",671,671,671,,,671,671,669,669,669,669,669,,,,669,669,,,,669,,669,669","669,669,669,669,669,,,,,,669,669,669,669,669,669,669,,,669,,,,,,669","669,,669,669,669,669,669,669,669,669,669,,669,669,669,,669,669,669,669","669,,,,,,,,,,,,,,,,,,,,669,,,669,,,669,669,,,669,,669,,,,669,,,,,,,",",669,,,,,669,669,669,669,,669,669,669,669,,,,,669,669,,,,35,35,35,669","35,669,669,669,35,35,669,669,,35,,35,35,35,35,35,35,35,,,,,,35,35,35","35,35,35,35,,,35,,,,,,,35,,,35,35,35,35,35,35,35,35,35,35,35,35,,35","35,35,35,35,,,,,,,,,,,,,,,,,,,,35,,,35,,,35,35,,,35,,35,,35,,35,,,35",",,,,,35,,,,,35,35,35,35,,35,35,35,35,,,,,35,35,,,,250,250,250,35,250","35,35,35,250,250,35,35,,250,,250,250,250,250,250,250,250,,,,,,250,250","250,250,250,250,250,,,250,,,,,,,250,,,250,250,250,250,250,250,250,250",",250,250,250,,250,250,250,250,250,,,,,,,,,,,,,,,,,,,,250,,,250,,,250","250,,,250,,,,,,250,,,,,,,,,250,,,,,250,250,250,250,,250,250,250,250",",,,,250,250,,,,36,36,36,250,36,250,250,250,36,36,250,250,,36,,36,36","36,36,36,36,36,,,,,,36,36,36,36,36,36,36,,,36,,,,,,,36,,,36,36,36,36","36,36,36,36,36,36,36,36,,36,36,36,36,36,,,,,,,,,,,,,,,,,,,,36,,,36,",",36,36,,,36,,36,,36,,36,,,36,,,,,,36,,,,,36,36,36,36,,36,36,36,36,,",",,36,36,,,,638,638,638,36,638,36,36,36,638,638,36,36,,638,,638,638,638","638,638,638,638,,,,,,638,638,638,638,638,638,638,,,638,,,,,,,638,,,638","638,638,638,638,638,638,638,638,638,638,638,,638,638,638,638,638,,,",",,,,,,,,,,,,,,,,638,,,638,,,638,638,,,638,,638,,638,,638,,,638,,,,,","638,,,,,638,638,638,638,,638,638,638,638,,,,,638,638,,,,1009,1009,1009","638,1009,638,638,638,1009,1009,638,638,,1009,,1009,1009,1009,1009,1009","1009,1009,,,,,,1009,1009,1009,1009,1009,1009,1009,,,1009,,,,,,,1009",",,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,,1009","1009,1009,1009,1009,,,,,,,,,,,,,,,,,,,,1009,,,1009,,,1009,1009,,,1009",",,,1009,,1009,,,1009,,,,,,1009,,,,,1009,1009,1009,1009,,1009,1009,1009","1009,,,,,1009,1009,,,,628,628,628,1009,628,1009,1009,1009,628,628,1009","1009,,628,,628,628,628,628,628,628,628,,,,,,628,628,628,628,628,628","628,,,628,,,,,,,628,,,628,628,628,628,628,628,628,628,628,628,628,628",",628,628,628,628,628,,,,,,,,,,,,,,,,,,,,628,,,628,,,628,628,,,628,,628",",628,,628,,,628,,,,,,628,,,,,628,628,628,628,,628,628,628,628,,,,,628","628,,,,627,627,627,628,627,628,628,628,627,627,628,628,,627,,627,627","627,627,627,627,627,,,,,,627,627,627,627,627,627,627,,,627,,,,,,,627",",,627,627,627,627,627,627,627,627,,627,627,627,,627,627,627,627,627",",,,,,,,,,,,,,,,,,,,627,,,627,,,627,627,,,627,,627,,,,627,,,,,,,,,627",",,,,627,627,627,627,,627,627,627,627,,,,,627,627,,,,818,818,818,627","818,627,627,627,818,818,627,627,,818,,818,818,818,818,818,818,818,,",",,,818,818,818,818,818,818,818,,,818,,,,,,,818,,,818,818,818,818,818","818,818,818,,818,818,818,,818,818,818,818,818,,,,,,,,,,,,,,,,,,,,818",",,818,,,818,818,,,818,,,,,,818,,,,,,,,,818,,,,,818,818,818,818,,818","818,818,818,,,,,818,818,,,,614,614,614,818,614,818,818,818,614,614,818","818,,614,,614,614,614,614,614,614,614,,,,,,614,614,614,614,614,614,614",",,614,,,,,,,614,,,614,614,614,614,614,614,614,614,614,614,614,614,,614","614,614,614,614,,,,,,,,,,,,,,,,,,,,614,,,614,,,614,614,,,614,,,,,,614",",,614,,,,,,614,,,,,614,614,614,614,,614,614,614,614,,,,,614,614,,,,611","611,611,614,611,614,614,614,611,611,614,614,,611,,611,611,611,611,611","611,611,,,,,,611,611,611,611,611,611,611,,,611,,,,,,,611,,,611,611,611","611,611,611,611,611,611,611,611,611,,611,611,611,611,611,,,,,,,,,,,",",,,,,,,,611,,,611,,,611,611,,,611,,611,,,,611,,,611,,,,,,611,,,,,611","611,611,611,,611,611,611,611,,,,,611,611,,,,239,239,239,611,239,611","611,611,239,239,611,611,,239,,239,239,239,239,239,239,239,,,,,,239,239","239,239,239,239,239,,,239,,,,,,,239,,,239,239,239,239,239,239,239,239",",239,239,239,,239,239,239,239,239,,,,,,,,,,,,,,,,,,,,239,,,239,,,239","239,,,239,,,,,,239,,,,,,,,,239,,,,,239,239,239,239,,239,239,239,239",",,,,239,239,239,,,605,605,605,239,605,239,239,239,605,605,239,239,,605",",605,605,605,605,605,605,605,,,,,,605,605,605,605,605,605,605,,,605",",,,,,,605,,,605,605,605,605,605,605,605,605,,605,605,605,,605,605,605","605,605,,,,,,,,,,,,,,,,,,,,605,,,605,,,605,605,,,605,,,,,,605,,,,,,",",,605,,,,,605,605,605,605,,605,605,605,605,,,,,605,605,,,,1035,1035","1035,605,1035,605,605,605,1035,1035,605,605,,1035,,1035,1035,1035,1035","1035,1035,1035,,,,,,1035,1035,1035,1035,1035,1035,1035,,,1035,,,,,,","1035,,,1035,1035,1035,1035,1035,1035,1035,1035,,1035,1035,1035,,1035","1035,1035,1035,1035,,,,,,,,,,,,,,,,,,,,1035,,,1035,,,1035,1035,,,1035",",,,,,1035,,,,,,,,,1035,,,,,1035,1035,1035,1035,,1035,1035,1035,1035",",,,,1035,1035,,,,603,603,603,1035,603,1035,1035,1035,603,603,1035,1035",",603,,603,603,603,603,603,603,603,,,,,,603,603,603,603,603,603,603,",",603,,,,,,,603,,,603,603,603,603,603,603,603,603,,603,603,603,,603,603","603,603,603,,,,,,,,,,,,,,,,,,,,603,,,603,,,603,603,,,603,,,,,,603,,",",,,,,,603,,,,,603,603,603,603,,603,603,603,603,,,,,603,603,,,,600,600","600,603,600,603,603,603,600,600,603,603,,600,,600,600,600,600,600,600","600,,,,,,600,600,600,600,600,600,600,,,600,,,,,,,600,,,600,600,600,600","600,600,600,600,,600,600,600,,600,600,600,600,600,,,,,,,,,,,,,,,,,,",",600,,,600,,,600,600,,,600,,,,,,600,,,,,,,,,600,,,,,600,600,600,600",",600,600,600,600,,,,,600,600,,,,238,238,238,600,238,600,600,600,238","238,600,600,,238,,238,238,238,238,238,238,238,,,,,,238,238,238,238,238","238,238,,,238,,,,,,,238,,,238,238,238,238,238,238,238,238,,238,238,238",",238,238,238,238,238,,,,,,,,,,,,,,,,,,,,238,,,238,,,238,238,,,238,,",",,,238,,,,,,,,,238,,,,,238,238,238,238,,238,238,238,238,,,,,238,238",",,,237,237,237,238,237,238,238,238,237,237,238,238,,237,,237,237,237","237,237,237,237,,,,,,237,237,237,237,237,237,237,,,237,,,,,,,237,,,237","237,237,237,237,237,237,237,,237,237,237,,237,237,237,237,237,,,,,,",",,,,,,,,,,,,,237,,,237,,,237,237,,,237,,,,,,237,,,,,,,,,237,,,,,237","237,237,237,,237,237,237,237,,,,,237,237,,,,590,590,590,237,590,237","237,237,590,590,237,237,,590,,590,590,590,590,590,590,590,,,,,,590,590","590,590,590,590,590,,,590,,,,,,,590,,,590,590,590,590,590,590,590,590","590,590,590,590,,590,590,590,590,590,,,,,,,,,,,,,,,,,,,,590,,,590,,","590,590,,,590,,590,,590,,590,,,590,,,,,,590,,,,,590,590,590,590,,590","590,590,590,,,,,590,590,,,,,,,590,,590,590,590,,,590,590,580,580,580","580,580,,,,580,580,,,,580,,580,580,580,580,580,580,580,,,,,,580,580","580,580,580,580,580,,,580,,,,,,580,580,580,580,580,580,580,580,580,580","580,580,,580,580,580,,580,580,580,580,580,,,,,,,,,,,,,,,,,,,,580,,,580",",,580,580,,,580,,580,,,,580,,,,,,,,,580,,,,,580,580,580,580,,580,580","580,580,,,,,580,580,,,,,,580,580,,580,580,580,,,580,580,574,574,574",",574,,,,574,574,,,,574,,574,574,574,574,574,574,574,,,,,,574,574,574","574,574,574,574,,,574,,,,,,,574,,,574,574,574,574,574,574,574,574,,574","574,574,,574,574,574,574,574,,,,,,,,,,,,,,,,,,,,574,,,574,,,574,574",",,574,,,,,,574,,,,,,,,,574,,,,,574,574,574,574,,574,574,574,574,,,,","574,574,,,,369,369,369,574,369,574,574,574,369,369,574,574,,369,,369","369,369,369,369,369,369,,,,,,369,369,369,369,369,369,369,,,369,,,,,",",369,,,369,369,369,369,369,369,369,369,,369,369,369,,369,369,369,369","369,,,,,,,,,,,,,,,,,,,,369,,,369,,,369,369,,,369,,,,,,369,,,,,,,,,369",",,,,369,369,369,369,,369,369,369,369,,,,,369,369,,,,46,46,46,369,46","369,369,369,46,46,369,369,,46,,46,46,46,46,46,46,46,,,,,,46,46,46,46","46,46,46,,,46,,,,,,,46,,,46,46,46,46,46,46,46,46,,46,46,46,,46,46,46","46,46,,,,,,,,,,,,,,,,,,,,46,,,46,,,46,46,,,46,,,,,,46,,,,,,,,,46,,,",",46,46,46,46,,46,46,46,46,,,,,46,46,,,,572,572,572,46,572,46,46,46,572","572,46,46,,572,,572,572,572,572,572,572,572,,,,,,572,572,572,572,572","572,572,,,572,,,,,,,572,,,572,572,572,572,572,572,572,572,572,572,572","572,,572,572,572,572,572,,,,,,,,,,,,,,,,,,,,572,,,572,,,572,572,,,572",",,,572,,572,,,572,,,,,,572,,,,,572,572,572,572,,572,572,572,572,,,,","572,572,,,,570,570,570,572,570,572,572,572,570,570,572,572,,570,,570","570,570,570,570,570,570,,,,,,570,570,570,570,570,570,570,,,570,,,,,",",570,,,570,570,570,570,570,570,570,570,570,570,570,570,,570,570,570","570,570,,,,,,,,,,,,,,,,,,,,570,,,570,,,570,570,,,570,,570,,570,,570",",,570,,,,,,570,,,,,570,570,570,570,,570,570,570,570,,,,,570,570,,,,47","47,47,570,47,570,570,570,47,47,570,570,,47,,47,47,47,47,47,47,47,,,",",,47,47,47,47,47,47,47,,,47,,,,,,,47,,,47,47,47,47,47,47,47,47,,47,47","47,,47,47,47,47,47,,,,,,,,,,,,,,,,,,,,47,,,47,,,47,47,,,47,,,,,,47,",",,,,,,,47,,,,,47,47,47,47,,47,47,47,47,,,,,47,47,,,,560,560,560,47,560","47,47,47,560,560,47,47,,560,,560,560,560,560,560,560,560,,,,,,560,560","560,560,560,560,560,,,560,,,,,,,560,,,560,560,560,560,560,560,560,560",",560,560,560,,560,560,560,560,560,,,,,,,,,,,,,,,,,,,,560,,,560,,,560","560,,,560,,,,,,560,,,,,,,,,560,,,,,560,560,560,560,,560,560,560,560",",,,,560,560,,,,49,49,49,560,49,560,560,560,49,49,560,560,,49,,49,49","49,49,49,49,49,,,,,,49,49,49,49,49,49,49,,,49,,,,,,,49,,,49,49,49,49","49,49,49,49,,49,49,49,,49,49,49,49,49,,,,,,,,,,,,,,,,,,,,49,,,49,,,49","49,,,49,,,,,,49,,,,,,,,,49,,,,,49,49,49,49,,49,49,49,49,,,,,49,49,,",",,,,49,,49,49,49,555,,49,49,,,,555,555,555,,,555,555,555,703,555,703","703,703,703,703,,,555,555,555,,,,703,,,,,,555,555,,555,555,555,555,555",",701,,701,701,701,701,701,703,,,,,,,,701,703,703,703,703,,,,703,,1140",",1140,1140,1140,1140,1140,555,,,,,701,,555,1140,,,,555,555,701,701,701","701,,,,701,,,,,,,,,1140,703,,,,555,555,,,,,1140,1140,,,,1140,,,,555",",,555,,283,283,283,555,283,,701,,283,283,555,,,283,,283,283,283,283","283,283,283,,,,,,283,283,283,283,283,283,283,,,283,,,,,,,283,,,283,283","283,283,283,283,283,283,,283,283,283,,283,283,283,283,283,,,,,,,,,,",",,,,,,,,,283,,,283,,,283,283,,,283,,,,,,283,,,,,,,,,283,,,,,283,283","283,283,,283,283,283,283,,,,,283,283,,,,224,224,224,283,224,283,283","283,224,224,283,283,,224,,224,224,224,224,224,224,224,,,,,,224,224,224","224,224,224,224,,,224,,,,,,,224,,,224,224,224,224,224,224,224,224,224","224,224,224,,224,224,224,224,224,,,,,,,,,,,,,,,,,,,,224,,,224,,,224","224,,,224,,224,,224,,224,,,224,,,,,,224,,,,,224,224,224,224,,224,224","224,224,,,,,224,224,,,,223,223,223,224,223,224,224,224,223,223,224,224",",223,,223,223,223,223,223,223,223,,,,,,223,223,223,223,223,223,223,",",223,,,,,,,223,,,223,223,223,223,223,223,223,223,,223,223,223,,223,223","223,223,223,,,,,,,,,,,,,,,,,,,,223,,,223,,,223,223,,,223,,,,,,223,,",",,,,,,223,,,,,223,223,223,223,,223,223,223,223,,,,,223,223,,,,50,50","50,223,50,223,223,223,50,50,223,223,,50,,50,50,50,50,50,50,50,,,,,,50","50,50,50,50,50,50,,,50,,,,,,,50,,,50,50,50,50,50,50,50,50,,50,50,50",",50,50,50,50,50,,,,,,,,,,,,,,,,,,,,50,,,50,,,50,50,,,50,,,,,,50,,,,",",,,,50,,,,,50,50,50,50,,50,50,50,50,,,,,50,50,,,,222,222,222,50,222","50,50,50,222,222,50,50,,222,,222,222,222,222,222,222,222,,,,,,222,222","222,222,222,222,222,,,222,,,,,,,222,,,222,222,222,222,222,222,222,222",",222,222,222,,222,222,222,222,222,,,,,,,,,,,,,,,,,,,,222,,,222,,,222","222,,,222,,,,,,222,,,,,,,,,222,,,,,222,222,222,222,,222,222,222,222",",,,,222,222,,,,72,72,72,222,72,222,222,222,72,72,222,222,,72,,72,72","72,72,72,72,72,,,,,,72,72,72,72,72,72,72,,,72,,,,,,,72,,,72,72,72,72","72,72,72,72,,72,72,72,,72,72,72,72,72,,,,,,,,,,,,,,,,,,,,72,,,72,,,72","72,,,72,,,,,,72,,,,,,,,,72,,,,,72,72,72,72,,72,72,72,72,,,,,72,72,,",",71,71,71,72,71,72,72,72,71,71,72,72,,71,,71,71,71,71,71,71,71,,,,,","71,71,71,71,71,71,71,,,71,,,,,,,71,,,71,71,71,71,71,71,71,71,,71,71","71,,71,71,71,71,71,,,,,,,,,,,,,,,,,,,,71,,,71,,,71,71,,,71,,,,,,71,",",,,,,,,71,,,,,71,71,71,71,,71,71,71,71,,,,,71,71,,,,436,436,436,71,436","71,71,71,436,436,71,71,,436,,436,436,436,436,436,436,436,,,,,,436,436","436,436,436,436,436,,,436,,,,,,,436,,,436,436,436,436,436,436,436,436",",436,436,436,,436,436,436,436,436,,,,,,,,,,,,,,,,,,,,436,,,436,,,436","436,,,436,,,,,,436,,,,,,,,,436,,,,,436,436,436,436,,436,436,436,436",",,,,436,436,,,,68,68,68,436,68,436,436,436,68,68,436,436,,68,,68,68","68,68,68,68,68,,,,,,68,68,68,68,68,68,68,,,68,,,,,,,68,,,68,68,68,68","68,68,68,68,68,68,68,68,,68,68,68,68,68,,,,,,,,,,,,,,,,,,,,68,,,68,",",68,68,,,68,,,,,,68,,,68,,,,,,68,,,,,68,68,68,68,,68,68,68,68,,,,,68","68,,,,407,407,407,68,407,68,68,68,407,407,68,68,,407,,407,407,407,407","407,407,407,,,,,,407,407,407,407,407,407,407,,,407,,,,,,,407,,,407,407","407,407,407,407,407,407,,407,407,407,,407,407,407,407,407,,,,,,,,,,",",,,,,,,,,407,,,407,,,407,407,,,407,,,,,,407,,,,,,,,,407,,,,,407,407","407,407,,407,407,407,407,,,,,407,407,,,,847,847,847,407,847,407,407","407,847,847,407,407,,847,,847,847,847,847,847,847,847,,,,,,847,847,847","847,847,847,847,,,847,,,,,,,847,,,847,847,847,847,847,847,847,847,,847","847,847,,847,847,847,847,847,,,,,,,,,,,,,,,,,,,,847,,,847,,,847,847",",,847,,,,,,847,,,,,,,,,847,,,,,847,847,847,847,,847,847,847,847,,,,","847,847,,,,276,276,276,847,276,847,847,847,276,276,847,847,,276,,276","276,276,276,276,276,276,,,,,,276,276,276,276,276,276,276,,,276,,,,,",",276,,,276,276,276,276,276,276,276,276,,276,276,276,,276,276,276,276","276,,,,,,,,,,,,,,,,,,,,276,,,276,,,276,276,,,276,,,,,,276,,,,,,,,,276",",,,,276,276,276,276,,276,276,276,276,,,,,276,276,,,,275,275,275,276","275,276,276,276,275,275,276,276,,275,,275,275,275,275,275,275,275,,",",,,275,275,275,275,275,275,275,,,275,,,,,,,275,,,275,275,275,275,275","275,275,275,,275,275,275,,275,275,275,275,275,,,,,,,,,,,,,,,,,,,,275",",,275,,,275,275,,,275,,,,,,275,,,,,,,,,275,,,,,275,275,275,275,,275","275,275,275,,,,,275,275,,,,67,67,67,275,67,275,275,275,67,67,275,275",",67,,67,67,67,67,67,67,67,,,,,,67,67,67,67,67,67,67,,,67,,,,,,,67,,","67,67,67,67,67,67,67,67,67,67,67,67,,67,67,67,67,67,,,,,,,,,,,,,,,,",",,,67,,,67,,,67,67,,,67,,67,,,,67,,,67,,,,,,67,,,,,67,67,67,67,,67,67","67,67,,,,,67,67,,,,,,,67,,67,67,67,,,67,67,66,66,66,66,66,,,,66,66,",",,66,,66,66,66,66,66,66,66,,,,,,66,66,66,66,66,66,66,,,66,,,,,,66,66",",66,66,66,66,66,66,66,66,66,,66,66,66,,66,66,66,66,66,,,,,,,,,,,,,,",",,,,,66,,,66,,,66,66,,,66,,66,,,,66,,,,,,,,,66,,,,,66,66,66,66,,66,66","66,66,,,,,66,66,,,,299,299,299,66,299,66,66,66,299,299,66,66,,299,,299","299,299,299,299,299,299,,,,,,299,299,299,299,299,299,299,,,299,,,,,",",299,,,299,299,299,299,299,299,299,299,,299,299,299,,299,299,299,299","299,,,,,,,,,,,,,,,,,,,,299,,,299,,,299,299,,,299,,,,,,299,,,,,,,,,299",",,,,299,299,299,299,,299,299,299,299,,,,,299,299,,,,274,274,274,299","274,299,299,299,274,274,299,299,,274,,274,274,274,274,274,274,274,,",",,,274,274,274,274,274,274,274,,,274,,,,,,,274,,,274,274,274,274,274","274,274,274,,274,274,274,,274,274,274,274,274,,,,,,,,,,,,,,,,,,,,274",",,274,,,274,274,,,274,,,,,,274,,,,,,,,,274,,,,,274,274,274,274,,274","274,274,274,,,,,274,274,,,,867,867,867,274,867,274,274,274,867,867,274","274,,867,,867,867,867,867,867,867,867,,,,,,867,867,867,867,867,867,867",",,867,,,,,,,867,,,867,867,867,867,867,867,867,867,,867,867,867,,867","867,867,867,867,,,,,,,,,,,,,,,,,,,,867,,,867,,,867,867,,,867,,,,,,867",",,,,,,,,867,,,,,867,867,867,867,,867,867,867,867,,,,,867,867,,,,24,24","24,867,24,867,867,867,24,24,867,867,,24,,24,24,24,24,24,24,24,,,,,,24","24,24,24,24,24,24,,,24,,,,,,,24,,,24,24,24,24,24,24,24,24,,24,24,24",",24,24,24,24,24,,,,,,,,,,,,,,,,,,,,24,,,24,,,24,24,,,24,,,,,,24,,,,",",,,,24,,,,,24,24,24,24,,24,24,24,24,,,,,24,24,,,,273,273,273,24,273","24,24,24,273,273,24,24,,273,,273,273,273,273,273,273,273,,,,,,273,273","273,273,273,273,273,,,273,,,,,,,273,,,273,273,273,273,273,273,273,273",",273,273,273,,273,273,273,273,273,,,,,,,,,,,,,,,,,,,,273,,,273,,,273","273,,,273,,,,,,273,,,,,,,,,273,,,,,273,273,273,273,,273,273,273,273",",,,,273,273,,,,788,788,788,273,788,273,273,273,788,788,273,273,,788",",788,788,788,788,788,788,788,,,,,,788,788,788,788,788,788,788,,,788",",,,,,,788,,,788,788,788,788,788,788,788,788,788,788,788,788,,788,788","788,788,788,,,,,,,,,,,,,,,,,,,,788,,,788,,,788,788,,,788,,788,,788,","788,,,788,,,,,,788,,,,,788,788,788,788,,788,788,788,788,,,,,788,788",",,,272,272,272,788,272,788,788,788,272,272,788,788,,272,,272,272,272","272,272,272,272,,,,,,272,272,272,272,272,272,272,,,272,,,,,,,272,,,272","272,272,272,272,272,272,272,,272,272,272,,272,272,272,272,272,,,,,,",",,,,,,,,,,,,,272,,,272,,,272,272,,,272,,,,,,272,,,,,,,,,272,,,,,272","272,272,272,,272,272,272,272,,,,,272,272,,,,875,875,875,272,875,272","272,272,875,875,272,272,,875,,875,875,875,875,875,875,875,,,,,,875,875","875,875,875,875,875,,,875,,,,,,,875,,,875,875,875,875,875,875,875,875",",875,875,875,,875,875,875,875,875,,,,,,,,,,,,,,,,,,,,875,,,875,,,875","875,,,875,,,,,,875,,,,,,,,,875,,,,,875,875,875,875,,875,875,875,875",",,,,875,875,,,,306,306,306,875,306,875,875,875,306,306,875,875,,306",",306,306,306,306,306,306,306,,,,,,306,306,306,306,306,306,306,,,306",",,,,,,306,,,306,306,306,306,306,306,306,306,306,306,306,306,,306,306","306,306,306,,,,,,,,,,,,,,,,,,,,306,,,306,,,306,306,,,306,,306,,306,","306,,,306,,,,,,306,,,,,306,306,306,306,,306,306,306,306,,,,,306,306",",,,888,888,888,306,888,306,306,306,888,888,306,306,,888,,888,888,888","888,888,888,888,,,,,,888,888,888,888,888,888,888,,,888,,,,,,,888,,,888","888,888,888,888,888,888,888,,888,888,888,,888,888,888,888,888,,,,,,",",,,,,,,,,,,,,888,,,888,,,888,888,,,888,,,,,,888,,,,,,,,,888,,,,,888","888,888,888,,888,888,888,888,,,,,888,888,,,,889,889,889,888,889,888","888,888,889,889,888,888,,889,,889,889,889,889,889,889,889,,,,,,889,889","889,889,889,889,889,,,889,,,,,,,889,,,889,889,889,889,889,889,889,889",",889,889,889,,889,889,889,889,889,,,,,,,,,,,,,,,,,,,,889,,,889,,,889","889,,,889,,,,,,889,,,,,,,,,889,,,,,889,889,889,889,,889,889,889,889",",,,,889,889,,,,307,307,307,889,307,889,889,889,307,307,889,889,,307",",307,307,307,307,307,307,307,,,,,,307,307,307,307,307,307,307,,,307",",,,,,,307,,,307,307,307,307,307,307,307,307,307,307,307,307,,307,307","307,307,307,,,,,,,,,,,,,,,,,,,,307,,,307,,,307,307,,,307,,307,,307,","307,,,307,,,,,,307,,,,,307,307,307,307,,307,307,307,307,,,,,307,307",",,,315,315,315,307,315,307,307,307,315,315,307,307,,315,,315,315,315","315,315,315,315,,,,,,315,315,315,315,315,315,315,,,315,,,,,,,315,,,315","315,315,315,315,315,315,315,315,315,315,315,,315,315,315,315,315,,,",",,,,,,,,,,,,,,,,315,,,315,,,315,315,,,315,,315,,315,,315,,,315,,,,,","315,,,,,315,315,315,315,,315,315,315,315,,,,,315,315,315,,,271,271,271","315,271,315,315,315,271,271,315,315,,271,,271,271,271,271,271,271,271",",,,,,271,271,271,271,271,271,271,,,271,,,,,,,271,,,271,271,271,271,271","271,271,271,,271,271,271,,271,271,271,271,271,,,,,,,,,,,,,,,,,,,,271",",,271,,,271,271,,,271,,,,,,271,,,,,,,,,271,,,,,271,271,271,271,,271","271,271,271,,,,,271,271,,,,270,270,270,271,270,271,271,271,270,270,271","271,,270,,270,270,270,270,270,270,270,,,,,,270,270,270,270,270,270,270",",,270,,,,,,,270,,,270,270,270,270,270,270,270,270,,270,270,270,,270","270,270,270,270,,,,,,,,,,,,,,,,,,,,270,,,270,,,270,270,,,270,,,,,,270",",,,,,,,,270,,,,,270,270,270,270,,270,270,270,270,,,,,270,270,,,,269","269,269,270,269,270,270,270,269,269,270,270,,269,,269,269,269,269,269","269,269,,,,,,269,269,269,269,269,269,269,,,269,,,,,,,269,,,269,269,269","269,269,269,269,269,,269,269,269,,269,269,269,269,269,,,,,,,,,,,,,,",",,,,,269,,,269,,,269,269,,,269,,,,,,269,,,,,,,,,269,,,,,269,269,269","269,,269,269,269,269,,,,,269,269,,,,322,322,322,269,322,269,269,269","322,322,269,269,,322,,322,322,322,322,322,322,322,,,,,,322,322,322,322","322,322,322,,,322,,,,,,,322,,,322,322,322,322,322,322,322,322,,322,322","322,,322,322,322,322,322,,,,,,,,,,,,,,,,,,,,322,,,322,,,322,322,,,322",",,,,,322,,,,,,,,,322,,,,,322,322,322,322,,322,322,322,322,,,,,322,322",",,,324,324,324,322,324,322,322,322,324,324,322,322,,324,,324,324,324","324,324,324,324,,,,,,324,324,324,324,324,324,324,,,324,,,,,,,324,,,324","324,324,324,324,324,324,324,,324,324,324,,324,324,324,324,324,,,,,,",",,,,,,,,,,,,,324,,,324,,,324,324,,,324,,,,,,324,,,,,,,,,324,,,,,324","324,324,324,,324,324,324,324,,,,,324,324,,,,327,327,327,324,327,324","324,324,327,327,324,324,,327,,327,327,327,327,327,327,327,,,,,,327,327","327,327,327,327,327,,,327,,,,,,,327,,,327,327,327,327,327,327,327,327",",327,327,327,,327,327,327,327,327,,,,,,,,,,,,,,,,,,,,327,,,327,,,327","327,,,327,,,,,,327,,,,,,,,,327,,,,,327,327,327,327,,327,327,327,327",",,,,327,327,,,,328,328,328,327,328,327,327,327,328,328,327,327,,328",",328,328,328,328,328,328,328,,,,,,328,328,328,328,328,328,328,,,328",",,,,,,328,,,328,328,328,328,328,328,328,328,,328,328,328,,328,328,328","328,328,,,,,,,,,,,,,,,,,,,,328,,,328,,,328,328,,,328,,,,,,328,,,,,,",",,328,,,,,328,328,328,328,,328,328,328,328,,,,,328,328,,,,268,268,268","328,268,328,328,328,268,268,328,328,,268,,268,268,268,268,268,268,268",",,,,,268,268,268,268,268,268,268,,,268,,,,,,,268,,,268,268,268,268,268","268,268,268,,268,268,268,,268,268,268,268,268,,,,,,,,,,,,,,,,,,,,268",",,268,,,268,268,,,268,,,,,,268,,,,,,,,,268,,,,,268,268,268,268,,268","268,268,268,,,,,268,268,,,,267,267,267,268,267,268,268,268,267,267,268","268,,267,,267,267,267,267,267,267,267,,,,,,267,267,267,267,267,267,267",",,267,,,,,,,267,,,267,267,267,267,267,267,267,267,,267,267,267,,267","267,267,267,267,,,,,,,,,,,,,,,,,,,,267,,,267,,,267,267,,,267,,,,,,267",",,,,,,,,267,,,,,267,267,267,267,,267,267,267,267,,,,,267,267,,,,266","266,266,267,266,267,267,267,266,266,267,267,,266,,266,266,266,266,266","266,266,,,,,,266,266,266,266,266,266,266,,,266,,,,,,,266,,,266,266,266","266,266,266,266,266,,266,266,266,,266,266,266,266,266,,,,,,,,,,,,,,",",,,,,266,,,266,,,266,266,,,266,,,,,,266,,,,,,,,,266,,,,,266,266,266","266,,266,266,266,266,,,,,266,266,,,,917,917,917,266,917,266,266,266","917,917,266,266,,917,,917,917,917,917,917,917,917,,,,,,917,917,917,917","917,917,917,,,917,,,,,,,917,,,917,917,917,917,917,917,917,917,,917,917","917,,917,917,917,917,917,,,,,,,,,,,,,,,,,,,,917,,,917,,,917,917,,,917",",,,,,917,,,,,,,,,917,,,,,917,917,917,917,,917,917,917,917,,,,,917,917",",,,918,918,918,917,918,917,917,917,918,918,917,917,,918,,918,918,918","918,918,918,918,,,,,,918,918,918,918,918,918,918,,,918,,,,,,,918,,,918","918,918,918,918,918,918,918,,918,918,918,,918,918,918,918,918,,,,,,",",,,,,,,,,,,,,918,,,918,,,918,918,,,918,,,,,,918,,,,,,,,,918,,,,,918","918,918,918,,918,918,918,918,,,,,918,918,,,,919,919,919,918,919,918","918,918,919,919,918,918,,919,,919,919,919,919,919,919,919,,,,,,919,919","919,919,919,919,919,,,919,,,,,,,919,,,919,919,919,919,919,919,919,919",",919,919,919,,919,919,919,919,919,,,,,,,,,,,,,,,,,,,,919,,,919,,,919","919,,,919,,,,,,919,,,,,,,,,919,,,,,919,919,919,919,,919,919,919,919",",,,,919,919,,,,497,497,497,919,497,919,919,919,497,497,919,919,,497",",497,497,497,497,497,497,497,,,,,,497,497,497,497,497,497,497,,,497",",,,,,,497,,,497,497,497,497,497,497,497,497,,497,497,497,,497,497,497","497,497,,,,,,,,,,,,,,,,,,,,497,,,497,,,497,497,,,497,,,,,,497,,,,,,",",,497,,,,,497,497,497,497,,497,497,497,497,,,,,497,497,,,,,,,497,,497","497,497,,,497,497,133,133,133,133,133,,,,133,133,,,,133,,133,133,133","133,133,133,133,,,,,,133,133,133,133,133,133,133,,,133,,,,,,133,133",",133,133,133,133,133,133,133,133,133,,133,133,133,,133,133,133,133,133",",,,,,,,,,,,,,,,,,,,133,,,133,,,133,133,,,133,,133,,,,133,,,,,,,,,133",",,,,133,133,133,133,,133,133,133,133,,,,,133,133,,,,132,132,132,133","132,133,133,133,132,132,133,133,,132,,132,132,132,132,132,132,132,,",",,,132,132,132,132,132,132,132,,,132,,,,,,,132,,,132,132,132,132,132","132,132,132,,132,132,132,,132,132,132,132,132,,,,,,,,,,,,,,,,,,,,132",",,132,,,132,132,,,132,,,,,,132,,,,,,,,,132,,,,,132,132,132,132,,132","132,132,132,,,,,132,132,,,,131,131,131,132,131,132,132,132,131,131,132","132,,131,,131,131,131,131,131,131,131,,,,,,131,131,131,131,131,131,131",",,131,,,,,,,131,,,131,131,131,131,131,131,131,131,,131,131,131,,131","131,131,131,131,,,,,,,,,,,,,,,,,,,,131,,,131,,,131,131,,,131,,,,,,131",",,,,,,,,131,,,,,131,131,131,131,,131,131,131,131,,,,,131,131,,,,130","130,130,131,130,131,131,131,130,130,131,131,,130,,130,130,130,130,130","130,130,,,,,,130,130,130,130,130,130,130,,,130,,,,,,,130,,,130,130,130","130,130,130,130,130,,130,130,130,,130,130,130,130,130,,,,,,,,,,,,,,",",,,,,130,,,130,,,130,130,,,130,,,,,,130,,,,,,,,,130,,,,,130,130,130","130,,130,130,130,130,,,,,130,130,,,,1149,1149,1149,130,1149,130,130","130,1149,1149,130,130,,1149,,1149,1149,1149,1149,1149,1149,1149,,,,",",1149,1149,1149,1149,1149,1149,1149,,,1149,,,,,,,1149,,,1149,1149,1149","1149,1149,1149,1149,1149,,1149,1149,1149,,1149,1149,1149,1149,1149,",",,,,,,,,,,,,,,,,,,1149,,,1149,,,1149,1149,,,1149,,,,,,1149,,,,,,,,,1149",",,,,1149,1149,1149,1149,,1149,1149,1149,1149,,,,,1149,1149,,,,1150,1150","1150,1149,1150,1149,1149,1149,1150,1150,1149,1149,,1150,,1150,1150,1150","1150,1150,1150,1150,,,,,,1150,1150,1150,1150,1150,1150,1150,,,1150,",",,,,,1150,,,1150,1150,1150,1150,1150,1150,1150,1150,,1150,1150,1150",",1150,1150,1150,1150,1150,,,,,,,,,,,,,,,,,,,,1150,,,1150,,,1150,1150",",,1150,,,,,,1150,,,,,,,,,1150,,,,,1150,1150,1150,1150,,1150,1150,1150","1150,,,,,1150,1150,,,,52,52,52,1150,52,1150,1150,1150,52,52,1150,1150",",52,,52,52,52,52,52,52,52,,,,,,52,52,52,52,52,52,52,,,52,,,,,,,52,,","52,52,52,52,52,52,52,52,,52,52,52,,52,52,52,52,52,,,,,,,,,,,,,,,,,,",",52,,,52,,,52,52,,,52,,,,,,52,,,,,,,,,52,,,,,52,52,52,52,,52,52,52,52",",,,,52,52,,,,129,129,129,52,129,52,52,52,129,129,52,52,,129,,129,129","129,129,129,129,129,,,,,,129,129,129,129,129,129,129,,,129,,,,,,,129",",,129,129,129,129,129,129,129,129,,129,129,129,,129,129,129,129,129",",,,,,,,,,,,,,,,,,,,129,,,129,,,129,129,,,129,,,,,,129,,,,,,,,,129,,",",,129,129,129,129,,129,129,129,129,,,,,129,129,,,,,,,129,,129,129,129",",,129,129,124,124,124,124,124,,,,124,124,,,,124,,124,124,124,124,124","124,124,,,,,,124,124,124,124,124,124,124,,,124,,,,,,124,124,124,124","124,124,124,124,124,124,124,124,,124,124,124,,124,124,124,124,124,,",",,,,,,,,,,,,,,,,,124,,,124,,,124,124,,,124,,124,,,,124,,,,,,,,,124,",",,,124,124,124,124,,124,124,124,124,,,,,124,124,,,,,,124,124,,124,124","124,,,124,124,1162,1162,1162,,1162,,,,1162,1162,,,,1162,,1162,1162,1162","1162,1162,1162,1162,,,,,,1162,1162,1162,1162,1162,1162,1162,,,1162,",",,,,,1162,,,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162",",1162,1162,1162,1162,1162,,,,,,,,,,,,,,,,,,,,1162,,,1162,,,1162,1162",",,1162,,1162,,1162,,1162,,,1162,,,,,,1162,,,,,1162,1162,1162,1162,,1162","1162,1162,1162,,,,,1162,1162,,,,471,471,471,1162,471,1162,1162,1162","471,471,1162,1162,,471,,471,471,471,471,471,471,471,,,,,,471,471,471","471,471,471,471,,,471,,,,,,,471,,,471,471,471,471,471,471,471,471,,471","471,471,,471,471,471,471,471,,,,,,,,,,,,,,,,,,,,471,,,471,,,471,471",",,471,,,,,,471,,,,,,,,,471,,,,,471,471,471,471,,471,471,471,471,,,,","471,471,,,,277,277,277,471,277,471,471,471,277,277,471,471,,277,,277","277,277,277,277,277,277,,,,,,277,277,277,277,277,277,277,,,277,,,,,",",277,,,277,277,277,277,277,277,277,277,,277,277,277,,277,277,277,277","277,,,,,,,,,,,,,,,,,,,,277,,,277,,,277,277,,,277,,,,,,277,,,,,,,,,277",",,,,277,277,277,277,,277,277,277,277,,,,,277,277,,,,,,,277,,277,277","277,470,,277,277,,,,470,470,470,,,470,470,470,,470,,,,,,,,470,470,470","470,470,,,,,,,,470,470,,470,470,470,470,470,,,,,,,,,,,,,,,,,,,,,,,470","470,470,470,470,470,470,470,470,470,470,470,470,470,,,470,470,470,,","470,,,470,,,470,470,,470,,470,,470,,470,470,,470,470,470,470,470,,470","470,470,,,,,,,,,,,,,,470,,,470,470,470,470,,470,469,470,,,,,470,469","469,469,,,469,469,469,,469,,,,,,,,469,469,469,469,469,,,,951,951,951","951,469,469,,469,469,469,469,469,,,,,951,951,951,,,,,,,,,,,951,951,",",951,469,469,469,469,469,469,469,469,469,469,469,469,469,469,,,469,469","469,,,469,,,469,,,469,469,,469,,469,,469,,469,469,,469,469,469,469,469",",469,469,469,,951,951,951,951,,951,951,951,951,,,,469,951,951,469,469","469,469,,469,951,469,951,951,951,460,469,7,7,7,7,7,460,460,460,7,7,460","460,460,7,460,7,7,7,7,7,7,7,460,460,460,460,,7,7,7,7,7,7,7,460,460,7","460,460,460,460,460,7,7,7,7,7,7,7,7,7,7,7,7,,7,7,7,,7,7,7,7,7,460,460","460,460,460,460,460,460,460,460,460,460,460,460,,,460,460,460,7,,460","7,460,460,7,7,460,460,7,460,7,460,,460,7,460,460,,460,460,460,460,460","7,460,460,460,,7,7,7,7,,7,7,7,7,,,,460,7,7,460,460,,460,,460,7,,7,7","7,,460,7,7,75,75,75,,75,,,,75,75,,,,75,,75,75,75,75,75,75,75,,,,,,75","75,75,75,75,75,75,,,75,,,,,,,75,,,75,75,75,75,75,75,75,75,,75,75,75",",75,75,75,75,75,,,,,,,,,,,,,,,,,,,,75,,,75,,,75,75,,,75,,,,,,75,,,,",",,,,75,,,,,75,75,75,75,,75,75,75,75,,,,,75,75,75,,,,,75,75,,75,75,75","64,,75,75,,,,64,64,64,,,64,64,64,,64,,,,,,,,64,,64,64,64,,,,,,,,64,64",",64,64,64,64,64,,,,,,,,,,,,,,,,,,,,,,,64,64,64,64,64,64,64,64,64,64","64,64,64,64,,,64,64,64,,,64,,,64,,,64,64,,64,,64,,64,,64,64,,64,64,64","64,64,,64,,64,,,,,,,,,,,,,,64,,,64,64,64,64,,64,,64,,278,278,278,64","278,,,,278,278,,,,278,,278,278,278,278,278,278,278,,,,,,278,278,278","278,278,278,278,,,278,,,,,,,278,,,278,278,278,278,278,278,278,278,,278","278,278,,278,278,278,278,278,,,,,,,,,,,,,,,,,,,,278,,,278,,,278,278",",,278,,,,,,278,,,,,,,,,278,,,,,278,278,278,278,,278,278,278,278,,,,","278,278,,,,221,221,221,278,221,278,278,278,221,221,278,278,,221,,221","221,221,221,221,221,221,,,,,,221,221,221,221,221,221,221,,,221,,,,,",",221,,,221,221,221,221,221,221,221,221,,221,221,221,,221,221,221,221","221,,,,,,,,,,,,,,,,,,,,221,,,221,,,221,221,,,221,,,,,,221,,,,,,,,,221",",,,,221,221,221,221,,221,221,221,221,,,,,221,221,,,,220,220,220,221","220,221,221,221,220,220,221,221,,220,,220,220,220,220,220,220,220,,",",,,220,220,220,220,220,220,220,,,220,,,,,,,220,,,220,220,220,220,220","220,220,220,,220,220,220,,220,220,220,220,220,,,,,,,,,,,,,,,,,,,,220",",,220,,,220,220,,,220,,220,,,,220,,,,,,,,,220,,,,,220,220,220,220,,220","220,220,220,,,,,220,220,,,,800,800,800,220,800,220,220,220,800,800,220","220,,800,,800,800,800,800,800,800,800,,,,,,800,800,800,800,800,800,800",",,800,,,,,,,800,,,800,800,800,800,800,800,800,800,,800,800,800,,800","800,800,800,800,,,,,,,,,,,,,,,,,,,,800,,,800,,,800,800,,,800,,,,,,800",",,,,,,,,800,,,,,800,800,800,800,,800,800,800,800,,,,,800,800,,,,797","797,797,800,797,800,800,800,797,797,800,800,,797,,797,797,797,797,797","797,797,,,,,,797,797,797,797,797,797,797,,,797,,,,,,,797,,,797,797,797","797,797,797,797,797,,797,797,797,,797,797,797,797,797,,,,,,,,,,,,,,",",,,,,797,,,797,,,797,797,,,797,,,,,,797,,,,,,,,,797,,,,,797,797,797","797,,797,797,797,797,,,,,797,797,,,,386,386,386,797,386,797,797,797","386,386,797,797,,386,,386,386,386,386,386,386,386,,,,,,386,386,386,386","386,386,386,,,386,,,,,,,386,,,386,386,386,386,386,386,386,386,,386,386","386,,386,386,386,386,386,,,,,,,,,,,,,,,,,,,,386,,,386,,,386,386,,,386",",,,,,386,,,,,,,,,386,,,,,386,386,386,386,,386,386,386,386,,,,,386,386",",,,524,524,524,386,524,386,386,386,524,524,386,386,,524,,524,524,524","524,524,524,524,,,,,,524,524,524,524,524,524,524,,,524,,,,,,,524,,,524","524,524,524,524,524,524,524,,524,524,524,,524,524,524,524,524,,,,,,",",,,,,,,,,,,,,524,,,524,,,524,524,,,524,,,,,,524,,,,,,,,,524,,,,,524","524,524,524,,524,524,524,524,,,,,524,524,,,,523,523,523,524,523,524","524,524,523,523,524,524,,523,,523,523,523,523,523,523,523,,,,,,523,523","523,523,523,523,523,,,523,,,,,,,523,,,523,523,523,523,523,523,523,523",",523,523,523,,523,523,523,523,523,,,,,,,,,,,,,,,,,,,,523,,,523,,,523","523,,,523,,,,,,523,,,,,,,,,523,,,,,523,523,523,523,,523,523,523,523",",,,,523,523,,,,522,522,522,523,522,523,523,523,522,522,523,523,,522",",522,522,522,522,522,522,522,,,,,,522,522,522,522,522,522,522,,,522",",,,,,,522,,,522,522,522,522,522,522,522,522,,522,522,522,,522,522,522","522,522,,,,,,,,,,,,,,,,,,,,522,,,522,,,522,522,,,522,,,,,,522,,,,,,",",,522,,,,,522,522,522,522,,522,522,522,522,,,,,522,522,,,,520,520,520","522,520,522,522,522,520,520,522,522,,520,,520,520,520,520,520,520,520",",,,,,520,520,520,520,520,520,520,,,520,,,,,,,520,,,520,520,520,520,520","520,520,520,520,520,520,520,,520,520,520,520,520,,,,,,,,,,,,,,,,,,,","520,,,520,,,520,520,,,520,,520,,520,,520,,,520,,,,,,520,,,,,520,520","520,520,,520,520,520,520,,,,,520,520,,,,219,219,219,520,219,520,520","520,219,219,520,520,,219,,219,219,219,219,219,219,219,,,,,,219,219,219","219,219,219,219,,,219,,,,,,,219,,,219,219,219,219,219,219,219,219,,219","219,219,,219,219,219,219,219,,,,,,,,,,,,,,,,,,,,219,,,219,,,219,219",",,219,,219,,,,219,,,,,,,,,219,,,,,219,219,219,219,,219,219,219,219,",",,,219,219,,,,510,510,510,219,510,219,219,219,510,510,219,219,,510,","510,510,510,510,510,510,510,,,,,,510,510,510,510,510,510,510,,,510,",",,,,,510,,,510,510,510,510,510,510,510,510,,510,510,510,,510,510,510","510,510,,,,,,,,,,,,,,,,,,,,510,,,510,,,510,510,,,510,,,,,,510,,,,,,",",,510,,,,,510,510,510,510,,510,510,510,510,,,,,510,510,,,,1017,1017","1017,510,1017,510,510,510,1017,1017,510,510,,1017,,1017,1017,1017,1017","1017,1017,1017,,,,,,1017,1017,1017,1017,1017,1017,1017,,,1017,,,,,,","1017,,,1017,1017,1017,1017,1017,1017,1017,1017,,1017,1017,1017,,1017","1017,,,1017,,,,,,,,,,,,,,,,,,,,1017,,,1017,,,1017,1017,,,1017,,,,,,",",,,,,,,,,,,,,1017,1017,1017,1017,,1017,1017,1017,1017,,,,,1017,1017",",,,1081,1081,1081,1017,1081,1017,1017,1017,1081,1081,,,,1081,,1081,1081","1081,1081,1081,1081,1081,,,,,,1081,1081,1081,1081,1081,1081,1081,,,1081",",,,,,,1081,,,1081,1081,1081,1081,1081,1081,1081,1081,,1081,1081,1081",",1081,1081,,,1081,,,,,,,,,,,,,,,,,,,,1081,,,1081,,,1081,1081,,,1081",",,,,,,,,,,,,,,,,,,,1081,1081,1081,1081,,1081,1081,1081,1081,,,,,1081","1081,,,,341,341,341,1081,341,1081,1081,1081,341,341,,,,341,,341,341","341,341,341,341,341,,,,,,341,341,341,341,341,341,341,,,341,,,,,,,341",",,341,341,341,341,341,341,341,341,,341,341,341,,341,341,,,341,,,,,,",",,,,,,,,,,,,,341,,,341,,,341,341,,,341,,,1214,,1214,1214,1214,1214,1214",",,,,,,,,1214,,341,341,341,341,,341,341,341,341,,,,,341,341,,,,341,,1214","341,,341,341,341,588,588,588,,588,1214,1214,,588,588,1214,,,588,,588","588,588,588,588,588,588,,,,,,588,588,588,588,588,588,588,,,588,,,,,",",588,,,588,588,588,588,588,588,588,588,,588,588,588,,588,588,,,588,",",,,,,,,,,,,,,,,,,,588,,,588,,,588,588,,,588,,,,,,,,,,,,,,,,,,,,588,588","588,588,,588,588,588,588,,,,,588,588,,,,40,40,40,588,40,588,588,588","40,40,,,,40,,40,40,40,40,40,40,40,,,,,,40,40,40,40,40,40,40,,,40,,,",",,,40,,,40,40,40,40,40,40,40,40,,40,40,40,,40,40,,,40,,,,,,,,,,,,,,",",,,,,40,,,40,,,40,40,,,40,,,1210,,1210,1210,1210,1210,1210,,,,,,,,,1210",",40,40,40,40,,40,40,40,40,,,,,40,40,,,,40,,1210,40,,40,40,40,803,803","803,,803,1210,1210,,803,803,1210,,,803,,803,803,803,803,803,803,803",",,,,,803,803,803,803,803,803,803,,,803,,,,,,,803,,,803,803,803,803,803","803,803,803,,803,803,803,,803,803,,,803,,,,,,,,,,,,,,,,,,,,803,,,803",",,803,803,,,803,,,,,,,,,,,,,,,,,,,,803,803,803,803,,803,803,803,803",",,,,803,803,,,,360,360,360,803,360,803,803,803,360,360,,,,360,,360,360","360,360,360,360,360,,,,,,360,360,360,360,360,360,360,,,360,,,,,,,360",",,360,360,360,360,360,360,360,360,,360,360,360,,360,360,,,360,,,,,,",",,,,,,,,,,,,,360,,,360,,,360,360,,,360,,,,,,,,,,,,,,,,,,,,360,360,360","360,,360,360,360,360,,,,,360,360,,,,1144,1144,1144,360,1144,360,360","360,1144,1144,,,,1144,,1144,1144,1144,1144,1144,1144,1144,,,,,,1144","1144,1144,1144,1144,1144,1144,,,1144,,,,,,,1144,,,1144,1144,1144,1144","1144,1144,1144,1144,,1144,1144,1144,,1144,1144,,,1144,,,,,,,,,,,,,,",",,,,,1144,,,1144,,,1144,1144,,,1144,,,,,,,,,,,,,,,,,,,,1144,1144,1144","1144,,1144,1144,1144,1144,,,,,1144,1144,,,,77,77,77,1144,77,1144,1144","1144,77,77,,,,77,,77,77,77,77,77,77,77,,,,,,77,77,77,77,77,77,77,,,77",",,,,,,77,,,77,77,77,77,77,77,77,77,,77,77,77,,77,77,,,77,,,,,,,,,,,",",,,,,77,,,77,,,77,,,77,77,,,77,,,,,,,,,,,,,,,,,,,,77,77,77,77,,77,77","77,77,,,,,77,77,,,,814,814,814,77,814,77,77,77,814,814,,,,814,,814,814","814,814,814,814,814,,,,,,814,814,814,814,814,814,814,,,814,,,,,,,814",",,814,814,814,814,814,814,814,814,,814,814,814,,814,814,,,814,,,,,,",",,,,,,,,,,,,,814,,,814,,,814,814,,,814,,,,,,,,,,,,,,,,,,,,814,814,814","814,,814,814,814,814,,,,,814,814,,,,597,597,597,814,597,814,814,814","597,597,,,,597,,597,597,597,597,597,597,597,,,,,,597,597,597,597,597","597,597,,,597,,,,,,,597,,,597,597,597,597,597,597,597,597,,597,597,597",",597,597,,,597,,,,,,,,,,,,,,,,,,,,597,,,597,,,597,597,,,597,,,,,,,,",",,,,,,,,,,,597,597,597,597,,597,597,597,597,,,,,597,597,,,,39,39,39","597,39,597,597,597,39,39,,,,39,,39,39,39,39,39,39,39,,,,,,39,39,39,39","39,39,39,,,39,,,,,,,39,,,39,39,39,39,39,39,39,39,,39,39,39,,39,39,,","39,,,,,,,,,,,,,,,,,,,,39,,,39,,,39,39,,,39,,39,,,,,,,,,,,,,,,,,,39,39","39,39,,39,39,39,39,,,,,39,39,,,,76,76,76,39,76,39,39,39,76,76,,,,76",",76,76,76,76,76,76,76,,,,,,76,76,76,76,76,76,76,,,76,,,,,,,76,,,76,76","76,76,76,76,76,76,,76,76,76,,76,76,,,76,,,,,,,,,,,,,,,,,,,,76,,,76,",",76,76,,,76,,76,,,,,,,,,,,,,,,,,,76,76,76,76,,76,76,76,76,,,,,76,76",",,,78,78,78,76,78,76,76,76,78,78,,,,78,,78,78,78,78,78,78,78,,,,,,78","78,78,78,78,78,78,,,78,,,,,,,78,,,78,78,78,78,78,78,78,78,,78,78,78",",78,78,,,78,,,,,,,,,,,,,,,,,,,,78,,,78,,,78,78,,,78,,,,,,,,,,,,,,,,",",,,78,78,78,78,,78,78,78,78,,,,,78,78,,,,,,,78,,78,78,78,10,10,10,10","10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,,,,10,10","10,10,10,10,10,10,10,10,,,,,,10,10,10,10,10,10,10,10,10,10,,10,,,,,",",,10,10,,10,10,10,10,10,10,10,,,10,10,,,,10,10,10,10,,,,,,,,,,,,,,10","10,,10,10,10,10,10,10,10,10,10,10,10,10,,,10,10,,,,,,,,,,,,,,10,427","427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427","427,427,427,427,427,427,,,,427,427,427,427,427,427,427,427,427,427,",",,,,427,427,427,427,427,427,427,427,427,,,427,,,,,,,,427,427,,427,427","427,427,427,427,427,,,427,427,,,,427,427,427,427,,,,,,,,,,,,,,427,427",",427,427,427,427,427,427,427,427,427,427,427,427,,,427,427,,,,,,,,,",",,,,427,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667","667,667,667,667,667,667,667,667,667,,,,667,667,667,667,667,667,667,667","667,667,,,,,,667,667,667,667,667,667,667,667,667,,,667,,,,,,,,667,667",",667,667,667,667,667,667,667,,,667,667,,,,667,667,667,667,,,,,,,,,,",",,,667,667,,667,667,667,667,667,667,667,667,667,667,667,667,,,667,667",",,,,,,,,,,,,,667,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11","11,11,11,11,11,11,11,,,,11,11,11,11,11,11,11,11,11,11,,,,,,11,11,11","11,11,11,11,11,11,,,11,,,,,,,,11,11,,11,11,11,11,11,11,11,,,11,11,,",",11,11,11,11,,,,,,,,,,,,,,11,11,,11,11,11,11,11,11,11,11,11,11,11,11",",,11,11,,,,,,,,,,,,,,11,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26","26,26,26,26,26,26,26,26,26,,,,26,26,26,26,26,26,26,26,26,26,,,,,,26","26,26,26,26,26,26,26,26,26,26,26,,26,,,,,,26,26,,26,26,26,26,26,26,26",",,26,26,,,,26,26,26,26,,,,,,26,,,,,,,,26,26,,26,26,26,26,26,26,26,26","26,26,26,26,,,26,753,753,753,753,,,,,,1026,,1026,1026,1026,1026,1026","753,753,753,753,,,,753,1026,,,,,753,753,,,753,,,,,,,,,,,,,1026,,,,,",",753,,,753,1026,1026,,753,,1026,753,,,,,,,,,,,,,,,,753,,,,753,753,753","753,,753,753,753,753,,,,,753,753,1205,1205,1205,1205,1026,,753,,753","753,753,,,753,753,,1205,1205,1205,1205,,,1208,1205,1208,1208,1208,1208","1208,1205,1205,,,1205,,,,1208,,,,,,,,,,,,,,,,1205,,,1205,,,1208,1205",",,1205,,,,,1208,1208,1208,1208,,,,1208,,,,1205,,,,1205,1205,1205,1205",",1205,1205,1205,1205,,,,,1205,1205,1129,1129,1129,1129,,,1205,,1205","1205,1205,,,1205,1205,,1129,1129,1129,1129,,,1138,1129,1138,1138,1138","1138,1138,1129,1129,,,1129,,,,1138,,,,,,,,,,,,,,,,1129,,,1129,,,1138","1129,,,1129,,1129,,,1138,1138,1138,1138,,,,1138,,,,1129,,,,1129,1129","1129,1129,,1129,1129,1129,1129,,,,,1129,1129,989,989,989,989,,,1129",",1129,1129,1129,,,1129,1129,,989,989,989,989,,,,989,989,,,,,989,989",",,989,989,,,,,,,,,,,,,,,,,,,989,,,989,,,,989,,,989,,989,,,,,,,989,,",",,,,989,,,,989,989,989,989,,989,989,989,989,,,,,989,989,942,942,942","942,,,989,,989,989,989,,,989,989,,942,942,942,942,,,1135,942,1135,1135","1135,1135,1135,942,942,,,942,,,,1135,,,,,,,,,,,,,,,,942,,,942,,,1135","942,,,942,,,,,1135,1135,1135,1135,,,,1135,,,,942,,,,942,942,942,942",",942,942,942,942,,,,,942,942,924,924,924,924,,,942,,942,942,942,,,942","942,,924,924,924,924,,,1231,924,1231,1231,1231,1231,1231,924,924,,,924",",,,1231,,,,,,,,,,,,,,,,924,,,924,,,1231,924,,,924,,924,,,,,1231,1231",",,,1231,,,,924,,,,924,924,924,924,,924,924,924,924,,,,,924,924,745,745","745,745,,,924,,924,924,924,,,924,924,,745,745,745,745,,,,745,,,,,,745","745,,,745,,,,,,,,,,,,,,,,,,,,745,,,745,,,,745,,,745,,745,,,,,,,1166",",1166,1166,1166,1166,1166,745,,,,745,745,745,745,1166,745,745,745,745",",,,,745,745,745,943,943,943,943,,745,,745,745,745,1166,,745,745,,,943","943,943,943,,1166,1166,943,,,1166,,,943,943,,,943,,,,,,,,,,,,,,,,,,",",943,,,943,,,,943,,,943,,,1166,,,,,,,,,,,,,943,,,,943,943,943,943,,943","943,943,943,,,,,943,943,930,930,930,930,,,943,,943,943,943,,,943,943",",930,930,930,930,,,,930,930,,,,,930,930,,,930,930,,,,,,,,,,,,,,,,,,","930,,,930,,,,930,,,930,,930,,,,,,,930,,,,,,,930,,,,930,930,930,930,","930,930,930,930,,,,,930,930,929,929,929,929,,,930,,930,930,930,,,930","930,,929,929,929,929,,,,929,929,,,,,929,929,,,929,929,,,,,,,,,,,,,,",",,,,929,,,929,,,,929,,,929,,929,,,,,,,929,,,,,,,929,,,,929,929,929,929",",929,929,929,929,,,,,929,929,,,,,,,929,,929,929,929,,,929,929,780,780","780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780","780,780,780,780,780,,,,780,780,780,780,780,780,780,780,780,780,,,,,","780,780,780,780,780,780,780,780,780,,,780,,,,,,,,780,780,,780,780,780","780,780,780,780,,,780,780,,,,780,780,780,780,,,,,,,,,,,,,,780,780,,780","780,780,780,780,780,780,780,780,780,780,780,,,780,528,528,528,528,,","1212,,1212,1212,1212,1212,1212,,,,528,528,528,528,,1212,,528,528,,,",",528,528,,,528,528,,,,,,,,,1212,,,,,,,,,,528,1212,1212,528,,,1212,528",",,528,,528,,,,,,,528,,,,,,,528,,,,528,528,528,528,,528,528,528,528,",",,,528,528,527,527,527,527,,,528,,528,528,528,,,528,528,,527,527,527","527,,,,527,527,,,,,527,527,,,527,527,,,,,,,,,,,,,,,,,,,527,,,527,,,","527,,,527,,527,,,,,,,527,,,,,,,527,,,,527,527,527,527,,527,527,527,527",",,,,527,527,1173,1173,1173,1173,,,527,,527,527,527,,,527,527,,1173,1173","1173,1173,,,,1173,,,,,,1173,1173,,,1173,,,,,,,,,,,,,,,,,,,,1173,,,1173",",,,1173,,,1173,,,,,,,,,,,,,,,,1173,,,,1173,1173,1173,1173,,1173,1173","1173,1173,,,,,1173,1173,1116,1116,1116,1116,,,1173,,1173,1173,1173,",",1173,1173,,1116,1116,1116,1116,,,,1116,,,,,,1116,1116,,,1116,,,,,,",",,,,,,,,,,,,,1116,,,1116,,,,1116,,,1116,,,,,,,,,,,,,,,,1116,,,,1116","1116,1116,1116,,1116,1116,1116,1116,,,,,1116,1116,926,926,926,926,,","1116,,1116,1116,1116,,,1116,1116,,926,926,926,926,,,,926,,,,,,926,926",",,926,,,,,,,,,,,,,,,,,,,,926,,,926,,,,926,,,926,,,,,,,,,,,,,,,,926,",",,926,926,926,926,,926,926,926,926,,,,,926,926,1125,1125,1125,1125,",",926,,926,926,926,,,926,926,,1125,1125,1125,1125,,,,1125,,,,,,1125,1125",",,1125,,,,,,,,,,,,,,,,,,,,1125,,,1125,,,,1125,,,1125,,,,,,,,,,,,,,,","1125,,,,1125,1125,1125,1125,,1125,1125,1125,1125,,,,,1125,1125,936,936","936,936,,,1125,,1125,1125,1125,,,1125,1125,,936,936,936,936,,,,936,",",,,,936,936,,,936,,,,,,,,763,763,763,763,,,,,,,,,936,,,936,763,763,763","936,,,936,,936,,,,,763,763,,,763,,,,,936,,,,936,936,936,936,,936,936","936,936,,,,,936,936,,,,,,,936,,936,936,936,,,936,936,233,,233,233,233","233,233,,,,,763,763,763,763,233,763,763,763,763,,,,,763,763,950,950","950,950,,,763,,763,763,763,233,,,,,950,950,950,,233,233,233,233,,,,233",",950,950,,,950,,,,,,,,,,,,705,,705,705,705,705,705,,,,,,,,,705,,,,,","234,233,234,234,234,234,234,,,,,,,,,234,705,950,950,950,950,,950,950","950,950,,705,705,,950,950,705,,,,,234,950,,950,950,950,,,,234,234,234","234,,,409,234,409,409,409,409,409,,1020,,1020,1020,1020,1020,1020,409",",,,,705,,,1020,,644,,644,644,644,644,644,,,,,,409,409,,644,234,,,,1020","409,409,409,409,,,,409,1020,1020,1020,1020,,,,1020,644,,,,,,,,,644,644","644,644,,,1024,644,1024,1024,1024,1024,1024,,,,,,,,,1024,409,,,,,,,","1020,,,,,,,,,,,,,1024,,,,644,,,,,,,1024,1024,675,675,,1024,675,,,,,",",,675,675,,675,675,675,675,675,675,675,,,675,675,,,,675,675,675,675",",,,,,675,,,,,1024,,,675,675,,675,675,675,675,675,675,675,675,675,675","675,675,636,636,675,,636,,,,,,,,636,636,,636,636,636,636,636,636,636",",,636,636,,,,636,636,636,636,,,,,,636,,,,,,,,636,636,,636,636,636,636","636,636,636,636,636,636,636,636,629,629,636,,629,,,,,,,,629,629,,629","629,629,629,629,629,629,,,629,629,,,,629,629,629,629,,,,,,629,,,,,,",",629,629,,629,629,629,629,629,629,629,629,629,629,629,629,226,226,629",",226,,,,,,,,226,226,,226,226,226,226,226,226,226,,,226,226,,,,226,226","226,226,,,,,,226,,,,,,,,226,226,,226,226,226,226,226,226,226,226,226","226,226,226,602,602,226,,602,,,,,,,,602,602,,602,602,602,602,602,602","602,,,602,602,,,,602,602,602,602,,,,,,602,,,,,,,,602,602,,602,602,602","602,602,602,602,602,602,602,602,602,637,637,602,,637,,,,,,,,637,637",",637,637,637,637,637,637,637,,,637,637,,,,637,637,637,637,,,,,,637,",",,,,,,637,637,,637,637,637,637,637,637,637,637,637,637,637,637,225,225","637,,225,,,,,,,,225,225,,225,225,225,225,225,225,225,,,225,225,,,,225","225,225,225,,,,,,225,,,,,,,,225,225,,225,225,225,225,225,225,225,225","225,225,225,225,302,302,225,,302,,,,,,,,302,302,,302,302,302,302,302","302,302,,,302,302,,,,302,302,302,302,,,,,,,,,,,,,,302,302,,302,302,302","302,302,302,302,302,302,302,302,302,519,519,302,,519,,,,,,,,519,519",",519,519,519,519,519,519,519,,,519,519,,,,519,519,519,519,,,,,,519,",",,,,,,519,519,,519,519,519,519,519,519,519,519,519,519,519,519,518,518","519,,518,,,,,,,,518,518,,518,518,518,518,518,518,518,,,518,518,,,,518","518,518,518,,,,,,518,,,,,,,,518,518,,518,518,518,518,518,518,518,518","518,518,518,518,591,591,518,,591,,,,,,,,591,591,,591,591,591,591,591","591,591,,,591,591,,,,591,591,591,591,,,,,,591,,,,,,,,591,591,,591,591","591,591,591,591,591,591,591,591,591,591,592,592,591,,592,,,,,,,,592","592,,592,592,592,592,592,592,592,,,592,592,,,,592,592,592,592,,,,,,592",",,,,,,,592,592,,592,592,592,592,592,592,592,592,592,592,592,592,1163","1163,592,,1163,,,,,,,,1163,1163,,1163,1163,1163,1163,1163,1163,1163",",,1163,1163,,,,1163,1163,1163,1163,,,,,,1163,,,,,,,,1163,1163,,1163","1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,674,674,1163",",674,,,,,,,,674,674,,674,674,674,674,674,674,674,,,674,674,,,,674,674","674,674,,,,,,674,,,,,,,,674,674,,674,674,674,674,674,674,674,674,674","674,674,674,1164,1164,674,,1164,,,,,,,,1164,1164,,1164,1164,1164,1164","1164,1164,1164,,,1164,1164,,,,1164,1164,1164,1164,,,,,,1164,,,,,,,,1164","1164,,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,630","630,1164,,630,,,,,,,,630,630,,630,630,630,630,630,630,630,,,630,630",",,,630,630,630,630,,,,,,630,,,,,,,,630,630,,630,630,630,630,630,630","630,630,630,630,630,630,1188,1188,630,,1188,,,,,,,,1188,1188,,1188,1188","1188,1188,1188,1188,1188,,,1188,1188,,,,1188,1188,1188,1188,,,,,,1188",",,,,,,,1188,1188,,1188,1188,1188,1188,1188,1188,1188,1188,1188,1188","1188,1188,601,601,1188,,601,,,,,,,,601,601,,601,601,601,601,601,601","601,,,601,601,,,,601,601,601,601,,,,,,601,,,,,,,,601,601,,601,601,601","601,601,601,601,601,601,601,601,601,,,601"],racc_action_check=arr=$$$("Array").$new(28717,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),racc_action_pointer=[nil,1550,2590,30,nil,485,nil,21057,1279,-15,24908,25292,63,nil,111,130,888,195,878,334,213,587,nil,-72,16018,1438,25420,260,nil,586,nil,10,7680,8479,8613,9947,10209,nil,1870,24507,23582,nil,199,495,356,292,12722,13115,252,13377,14041,977,19960,226,694,nil,nil,nil,nil,nil,nil,nil,nil,nil,21341,nil,15494,15351,14696,170,nil,14434,14303,nil,nil,21200,24638,24114,24769,nil,nil,nil,nil,nil,nil,nil,nil,nil,877,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,610,nil,nil,722,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,20234,nil,nil,nil,nil,20091,19567,19436,19305,19174,nil,4318,nil,-26,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,266,nil,4462,22788,21740,21609,14172,13910,13779,27931,27748,nil,nil,264,2734,305,nil,27294,27386,317,1294,12043,11912,11257,nil,nil,1133,138,140,432,174,389,452,nil,10078,131,191,3022,455,nil,nil,7277,7146,7015,6753,6491,6360,6229,6098,5967,18507,18376,18245,17590,17459,17328,16411,16149,15756,15220,15089,20639,21478,nil,nil,nil,nil,13648,nil,nil,583,548,381,-62,413,376,696,695,584,585,nil,nil,nil,15625,nil,nil,27992,nil,nil,484,16673,17066,nil,nil,nil,nil,nil,nil,nil,17197,nil,2446,nil,455,459,nil,17721,512,17852,nil,nil,17983,18114,nil,nil,-73,nil,5836,1711,509,484,1726,513,564,525,23312,2878,999,1139,614,617,582,nil,610,571,253,616,644,nil,nil,nil,650,171,611,23852,nil,471,1022,3742,3886,687,nil,691,12591,nil,677,2302,1567,638,nil,541,621,676,662,651,690,nil,870,35,36,22133,1006,4894,459,766,651,25,39,730,747,4,793,nil,nil,1141,1285,370,nil,692,nil,714,14827,nil,27438,nil,531,386,291,288,421,142,191,396,nil,nil,nil,nil,nil,nil,nil,713,25036,nil,nil,nil,nil,726,nil,798,717,14565,725,nil,nil,715,nil,690,-60,819,nil,nil,1582,nil,nil,nil,nil,nil,1870,735,nil,740,749,217,251,21057,nil,nil,nil,0,861,795,nil,nil,20916,20780,20508,880,882,nil,nil,769,775,780,nil,nil,785,787,809,nil,nil,nil,nil,nil,nil,nil,nil,nil,801,1280,nil,nil,19031,nil,nil,nil,1,nil,nil,nil,899,nil,nil,901,579,22919,951,nil,nil,nil,-26,nil,885,28114,28053,22657,-85,22526,22395,22264,835,853,26710,26612,3454,5300,814,855,936,938,947,952,5693,5431,5562,5169,5038,4894,4750,4606,4462,3482,3568,4318,4174,2590,4030,nil,154,nil,13518,nil,nil,nil,nil,13246,889,897,901,nil,nil,nil,902,nil,nil,12984,nil,12853,nil,12460,nil,219,nil,nil,nil,12317,1438,nil,904,909,nil,nil,910,23451,916,12174,28175,28236,995,958,nil,nil,24376,929,nil,11781,28602,27809,11650,3598,11388,nil,1066,947,990,nil,11126,nil,nil,10995,nil,nil,nil,4030,1075,nil,3742,25,1080,1084,37,1086,10733,10602,27687,28480,-5,nil,nil,472,nil,27626,27870,10340,nil,nil,191,2014,nil,27463,nil,nil,nil,nil,1249,nil,nil,nil,977,nil,nil,247,nil,286,nil,nil,966,nil,968,nil,nil,nil,25164,nil,9816,971,9673,9411,9280,28358,27565,9018,8875,733,1011,8744,8076,7945,7814,1017,nil,nil,7539,7408,1021,nil,1075,1726,1105,6884,nil,nil,1120,nil,nil,376,13512,nil,13482,nil,27365,nil,975,6622,nil,1310,nil,992,997,1057,1002,nil,nil,nil,nil,nil,nil,1090,2014,nil,nil,nil,307,332,222,361,1006,5693,5562,nil,120,nil,nil,nil,nil,1029,nil,nil,nil,555,26091,311,nil,1007,1092,1014,nil,nil,25503,nil,nil,375,nil,nil,586,nil,nil,861,27241,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,791,464,nil,nil,1016,26529,nil,1148,nil,1131,4,nil,nil,16280,nil,1046,1053,1154,nil,1041,nil,1088,22002,nil,nil,21871,nil,109,23721,1044,nil,1048,-1,233,1103,249,799,1117,1088,24245,nil,1156,2158,10864,nil,nil,nil,372,876,nil,1213,nil,nil,nil,nil,nil,1219,1220,nil,nil,6,1101,-21,-19,68,7,1150,997,989,nil,1103,4606,14958,nil,1227,22,1107,nil,nil,nil,nil,nil,4750,nil,nil,nil,nil,nil,nil,nil,nil,1106,15887,1110,387,385,110,500,nil,2302,16542,nil,1110,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,16804,16935,1236,nil,3886,1121,1169,nil,nil,1129,nil,1212,nil,nil,1131,1136,nil,1141,1143,nil,1144,nil,nil,nil,1150,1204,507,nil,nil,18638,18769,18900,5169,5300,5431,333,25993,1231,27004,-65,-35,26386,26288,480,-32,1154,1155,nil,27200,nil,1154,747,nil,1178,25895,26190,nil,929,1243,281,nil,nil,27339,20916,nil,nil,nil,nil,8207,nil,nil,nil,nil,nil,8338,nil,nil,1227,nil,nil,1237,1224,nil,nil,429,2446,nil,nil,nil,nil,1227,250,nil,137,nil,1357,nil,9149,1361,nil,nil,25797,9542,5038,-18,1362,nil,1363,369,1582,nil,nil,nil,nil,1238,1285,1249,1247,304,nil,nil,10471,3310,3166,nil,3166,nil,nil,-10,23050,nil,nil,27446,nil,497,nil,27515,nil,25493,nil,nil,nil,nil,1248,1250,3022,2878,11519,nil,1251,nil,nil,nil,nil,1257,1258,1260,1262,1263,1264,nil,nil,nil,1309,1267,-39,nil,1276,nil,nil,-66,1275,nil,nil,nil,nil,nil,nil,1323,2734,2158,nil,nil,1285,1286,nil,1287,1288,1291,nil,1316,1296,1283,23181,nil,nil,nil,nil,nil,8,nil,26,771,nil,40,nil,nil,nil,1420,3454,3310,1136,nil,nil,nil,1438,32,33,872,1376,34,nil,1302,1312,1313,1314,1348,3584,26906,nil,nil,nil,nil,nil,nil,nil,1317,27102,nil,145,nil,25699,nil,nil,815,nil,nil,25898,nil,nil,25702,nil,13537,nil,nil,1342,23983,763,1397,3598,nil,19698,19829,nil,nil,nil,nil,1341,1454,713,nil,nil,nil,1457,20377,28297,28419,69,26144,nil,nil,nil,nil,1332,1333,26808,1341,nil,nil,1342,nil,nil,1361,1365,1382,1385,nil,1386,nil,618,28541,nil,973,4174,nil,nil,nil,nil,nil,1195,nil,1392,76,79,109,136,1391,25601,1394,nil,25604,nil,23629,nil,26599,nil,23359,nil,nil,1439,1442,nil,362,nil,142,nil,1399,1401,1404,1409,nil,nil,nil,25996,nil,nil,nil,nil,-129,nil],racc_action_default=[-1,-745,-4,-745,-2,-730,-5,-745,-8,-745,-745,-745,-745,-31,-745,-745,-36,-745,-745,-639,-639,-311,-52,-732,-745,-61,-745,-69,-70,-71,-75,-287,-287,-287,-324,-352,-353,-87,-13,-91,-99,-101,-745,-626,-627,-745,-745,-745,-745,-745,-745,-239,-745,-732,-258,-302,-303,-304,-305,-306,-307,-308,-309,-310,-718,-313,-317,-744,-707,-333,-335,-745,-745,-63,-63,-730,-745,-745,-745,-354,-355,-357,-358,-359,-360,-419,-563,-564,-565,-566,-587,-569,-570,-589,-591,-574,-579,-583,-585,-601,-602,-603,-587,-605,-607,-608,-609,-610,-716,-615,-616,-717,-618,-619,-620,-621,-622,-623,-624,-625,-630,-631,1238,-3,-731,-740,-741,-742,-7,-745,-745,-745,-745,-745,-9,-4,-19,-745,-130,-131,-132,-133,-134,-135,-136,-140,-141,-142,-143,-144,-145,-146,-147,-148,-149,-150,-151,-152,-153,-154,-155,-156,-157,-158,-159,-160,-161,-162,-163,-164,-165,-166,-167,-168,-169,-170,-171,-172,-173,-174,-175,-176,-177,-178,-179,-180,-181,-182,-183,-184,-185,-186,-187,-188,-189,-190,-191,-192,-193,-194,-195,-196,-197,-198,-199,-200,-201,-202,-203,-204,-205,-206,-207,-208,-209,-210,-24,-137,-13,-745,-745,-745,-745,-745,-277,-745,-745,-728,-729,-745,-13,-638,-636,-662,-662,-745,-13,-745,-745,-732,-733,-56,-745,-626,-627,-745,-311,-745,-745,-245,-745,-639,-639,-13,-745,-57,-59,-222,-223,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-259,-260,-261,-262,-745,-65,-66,-745,-130,-131,-170,-171,-172,-188,-193,-200,-203,-626,-627,-705,-745,-428,-430,-745,-726,-727,-76,-277,-745,-332,-434,-443,-445,-82,-440,-83,-732,-84,-265,-282,-292,-292,-286,-290,-293,-745,-587,-709,-713,-745,-85,-86,-730,-14,-745,-17,-745,-89,-13,-732,-745,-92,-95,-13,-107,-108,-745,-745,-115,-324,-327,-732,-745,-639,-639,-352,-353,-356,-441,-745,-97,-745,-103,-321,-745,-224,-225,-606,-233,-234,-745,-246,-251,-13,-315,-732,-266,-737,-737,-745,-745,-737,-745,-334,-62,-745,-745,-745,-13,-13,-730,-745,-731,-626,-627,-745,-745,-311,-745,-370,-371,-125,-126,-745,-128,-745,-311,-634,-745,-348,-662,-567,-745,-745,-745,-745,-745,-745,-745,-745,-6,-743,-25,-26,-27,-28,-29,-745,-745,-21,-22,-23,-138,-745,-32,-35,-298,-745,-745,-297,-33,-745,-37,-745,-311,-49,-51,-211,-270,-293,-53,-54,-38,-212,-270,-732,-278,-292,-292,-719,-720,-287,-438,-721,-722,-720,-719,-287,-437,-439,-721,-722,-745,-555,-745,-383,-384,-732,-704,-704,-644,-645,-647,-647,-647,-661,-663,-664,-665,-666,-667,-668,-669,-670,-671,-745,-673,-675,-677,-682,-684,-685,-688,-693,-695,-696,-698,-699,-700,-702,-745,-745,-745,-48,-219,-55,-732,-331,-745,-745,-745,-277,-321,-745,-745,-745,-745,-745,-745,-745,-220,-221,-226,-227,-228,-229,-230,-231,-235,-236,-237,-238,-240,-241,-242,-243,-244,-247,-248,-249,-250,-732,-263,-67,-732,-449,-287,-719,-720,-73,-77,-663,-732,-292,-732,-288,-447,-449,-732,-326,-283,-745,-284,-745,-289,-745,-294,-745,-712,-715,-12,-731,-16,-18,-732,-88,-319,-104,-93,-745,-732,-277,-745,-745,-114,-745,-638,-606,-745,-100,-105,-745,-745,-745,-745,-264,-745,-328,-745,-732,-745,-267,-739,-738,-269,-739,-322,-323,-708,-13,-361,-362,-13,-745,-745,-745,-745,-745,-745,-277,-745,-745,-321,-63,-125,-126,-127,-745,-745,-277,-344,-632,-745,-13,-420,-662,-423,-568,-588,-593,-745,-595,-571,-590,-745,-592,-573,-745,-576,-745,-578,-581,-745,-582,-745,-604,-10,-20,-745,-30,-745,-301,-745,-745,-277,-745,-745,-745,-745,-442,-745,-279,-281,-745,-745,-78,-276,-435,-745,-745,-80,-436,-44,-254,-744,-744,-350,-637,-745,-642,-643,-745,-745,-654,-745,-657,-745,-659,-745,-745,-372,-745,-374,-376,-379,-382,-732,-676,-686,-687,-697,-701,-640,-46,-256,-351,-330,-734,-719,-720,-719,-720,-732,-745,-745,-58,-463,-466,-467,-468,-469,-471,-473,-476,-477,-534,-732,-489,-492,-504,-508,-513,-515,-516,-519,-520,-587,-523,-525,-526,-527,-532,-533,-745,-745,-537,-538,-539,-540,-541,-542,-543,-544,-545,-546,-547,-745,-745,-553,-60,-745,-745,-706,-745,-450,-72,-431,-447,-272,-279,-274,-745,-409,-745,-325,-292,-291,-295,-745,-710,-711,-745,-15,-90,-745,-96,-102,-732,-719,-720,-275,-723,-113,-745,-98,-745,-218,-232,-252,-745,-314,-316,-318,-737,-744,-363,-744,-64,-364,-365,-338,-339,-745,-745,-455,-341,-745,-732,-719,-720,-723,-320,-13,-125,-126,-129,-732,-13,-745,-346,-745,-745,-732,-594,-597,-598,-599,-600,-13,-572,-575,-577,-580,-584,-586,-139,-34,-299,-745,-732,-719,-720,-720,-719,-50,-271,-745,-735,-292,-40,-214,-41,-215,-79,-42,-217,-43,-216,-81,-745,-745,-744,-368,-13,-556,-744,-557,-558,-704,-683,-688,-703,-646,-647,-647,-674,-647,-647,-694,-647,-671,-386,-689,-732,-745,-745,-381,-672,-745,-745,-745,-745,-745,-745,-442,-464,-745,-745,-474,-475,-745,-745,-745,-494,-732,-732,-488,-495,-501,-745,-745,-491,-745,-745,-745,-507,-514,-518,-745,-522,-524,-530,-531,-535,-536,-548,-549,-745,-611,-612,-613,-126,-551,-745,-68,-429,-409,-433,-432,-745,-732,-444,-410,-732,-13,-446,-285,-296,-714,-94,-442,-106,-732,-268,-745,-366,-745,-745,-340,-342,-745,-745,-13,-442,-745,-442,-745,-745,-13,-349,-421,-424,-426,-413,-745,-745,-300,-442,-39,-213,-280,-45,-255,-11,-13,-562,-369,-745,-745,-560,-641,-745,-650,-745,-652,-745,-655,-745,-658,-660,-373,-375,-377,-380,-47,-257,-745,-465,-504,-470,-472,-481,-485,-732,-732,-732,-732,-732,-732,-552,-486,-487,-511,-496,-499,-502,-732,-587,-736,-732,-505,-509,-512,-517,-521,-528,-529,-745,-253,-13,-74,-273,-704,-704,-390,-392,-392,-392,-408,-745,-732,-671,-679,-680,-691,-448,-329,-336,-745,-337,-745,-460,-295,-744,-343,-345,-633,-745,-13,-13,-745,-422,-596,-561,-13,-626,-627,-745,-745,-311,-559,-647,-647,-647,-647,-745,-745,-745,-478,-479,-480,-482,-483,-484,-503,-497,-745,-490,-745,-493,-745,-550,-451,-745,-388,-389,-393,-399,-401,-745,-404,-745,-406,-411,-745,-745,-678,-745,-13,-456,-745,-745,-452,-453,-454,-347,-745,-745,-732,-415,-417,-418,-555,-277,-745,-745,-321,-745,-648,-651,-653,-656,-378,-505,-745,-500,-506,-510,-704,-681,-391,-392,-392,-392,-392,-692,-392,-412,-690,-745,-321,-744,-13,-461,-462,-425,-427,-414,-745,-554,-732,-719,-720,-723,-320,-647,-745,-498,-387,-745,-396,-745,-398,-745,-402,-745,-405,-407,-320,-723,-367,-744,-416,-442,-649,-392,-392,-392,-392,-457,-458,-459,-745,-394,-397,-400,-403,-392,-395],clist=["44,411,301,309,313,44,141,141,318,318,318,340,285,418,454,493,493,284","382,384,385,473,141,389,297,19,626,511,709,832,19,693,460,466,356,356","44,344,344,635,127,698,699,571,225,618,621,339,563,702,704,706,144,144","890,303,708,598,897,241,983,19,352,352,44,134,387,388,366,136,217,356","356,356,393,297,297,421,422,423,424,798,232,232,305,312,314,907,8,19","795,445,795,8,445,302,561,678,940,352,352,352,359,734,778,737,737,790","445,555,127,124,438,439,1003,451,383,383,236,559,383,715,44,798,610","613,1160,1059,617,512,375,44,904,44,1158,484,484,756,756,123,229,235","336,1037,4,476,509,19,320,320,320,1030,373,973,1032,1184,19,1075,19","1016,782,128,2,607,656,658,17,1012,338,1044,1047,17,792,801,383,383","383,383,216,1055,571,377,380,933,595,595,986,399,516,434,798,493,934","406,408,427,527,461,318,528,795,795,17,826,952,953,286,780,786,390,8","667,652,654,657,657,44,369,605,425,378,8,470,785,1160,1184,298,432,44","379,17,397,1221,639,44,1078,576,372,608,374,818,19,846,19,709,997,19","642,915,1031,1077,44,1136,19,433,444,1079,1157,444,19,19,831,339,903","568,905,449,450,518,319,319,319,444,844,643,999,19,426,419,409,318,318","850,514,515,804,1097,584,17,318,1098,554,565,566,813,965,1151,17,1089","17,1172,1228,376,989,1191,1038,1039,899,795,1174,731,484,303,929,232","232,316,329,330,930,1180,645,939,309,942,460,466,1068,968,313,1061,44","599,1062,622,44,356,912,955,344,44,894,1143,1,553,410,339,412,1175,413","236,339,552,1030,1171,356,19,1206,344,414,19,415,1036,416,352,19,127","1042,1045,417,44,591,525,526,923,852,1043,1046,596,857,806,847,17,352","17,44,44,17,935,601,902,582,1064,1065,17,19,623,624,809,898,17,17,1178","587,907,,,1126,809,,19,19,,961,,,,17,836,581,629,320,,141,127,696,493","1219,845,320,,383,685,849,,,809,580,690,,,336,,,809,691,336,709,709","979,,236,641,1152,437,437,860,904,860,,,1019,,868,725,579,,583,674,144","1021,1023,589,1025,1027,,1028,,,992,,460,466,493,722,493,666,,994,,461",",,1177,318,,991,17,882,,978,17,781,887,,,17,238,,,787,1006,789,684,452","470,793,975,798,689,,,,625,,772,772,685,513,795,969,,802,,1076,,17,371","805,756,756,562,319,445,721,,484,,,756,319,17,17,445,445,756,851,820","445,445,599,735,735,461,318,1090,904,737,1048,599,982,1041,,461,878","880,1049,1050,44,883,885,1229,1110,356,1052,,344,895,470,564,,1060,356",",,344,,567,470,756,975,461,318,19,,,,,784,461,,352,318,,,,44,,,44,352",",,,1230,841,470,823,,,825,,470,,,1133,1134,995,,,44,19,,1144,19,904","461,318,709,709,,,,,,,,827,,,,,,141,916,19,947,44,,,900,470,,900,44",",848,1103,1167,1168,1169,1170,,,794,,,,1120,1121,1122,,19,,,19,,1181",",19,1182,,,,,19,19,444,,144,19,19,,,,,,444,444,,1198,,444,444,,822,864",",1153,,,,,,967,,,,,,,1207,899,772,17,,445,,1147,,1148,772,,,1080,865",",896,,966,772,772,873,,1060,,963,1007,,,1224,284,1223,1060,,599,141","1176,,932,,685,17,,690,17,980,946,1096,,,,,,877,996,,,356,,,344,493",",,,17,,,356,,,344,513,,452,,,,,,1060,,,,,352,,,,,1072,,17,594,,17,352",",44,17,,1222,,44,,17,17,,,993,17,17,1176,,44,,,609,1131,,1029,835,981","19,,1004,,,19,,,,,,,1040,,,,19,,,,,,,,,1156,44,815,383,,,,,,19,,,1015","877,,1066,,,,,,444,,,,,19,,1080,1070,,1080,,772,,772,,,772,772,437,1085",",,1087,772,,,,679,,772,772,,,,1073,,,772,772,,,1199,1014,,,,1018,932",",,,,932,932,,,1127,,,809,44,,879,881,,1058,,884,886,,,1084,,,,,772,","44,1080,1117,1118,1119,1072,44,19,1072,,1072,1092,383,,,,17,,1128,,","17,44,356,,19,1105,,,,31,19,17,1102,735,31,,,,,,383,1095,,,779,,19,",",17,352,31,,,,,,,,,,31,31,31,,31,17,,,,,,,,,,44,1072,,1072,,1072,,1072",",,356,,,297,,,,31,,,,,31,31,1072,19,31,,,44,44,1192,1193,,,44,,,352","900,1155,,1073,,,1073,1161,1073,772,,906,,908,,19,19,,772,,,19,772,",",,,1163,,,461,318,17,,356,,31,297,765,765,44,31,31,31,31,31,,31,,,17","1190,,,,470,17,,,,,1008,352,,,19,772,,,,,,17,,,,1073,,1073,470,1073",",1073,,44,,,,,383,383,,,,,1220,,1081,772,1073,,,,,,879,881,886,884,19","679,,,,,,,,,,,,,,679,941,,17,,,31,31,31,31,31,31,31,,,,,,31,,,,,,31","31,31,31,,,,,17,17,381,18,,,17,,18,31,,,,,,,,,,,,,,,,242,,,,679,,,,",",242,242,242,,18,345,345,,,,,,,,,17,,,,,31,,,,679,,,31,31,,1008,,18","679,,,31,242,242,1002,,242,394,404,404,,,1137,1139,1141,,,,,31,,679",",31,17,,,,31,,765,1081,,,1081,,,1081,765,1081,,,,,,764,764,765,765,",",,,,1074,18,,,31,,242,242,242,242,18,,18,,,,,,31,31,31,,,,,,,679,,435","448,,679,679,,,,,,31,,,,,,,,,1111,,1112,,1113,1081,,1081,,1081,,1081",",,,,1209,1211,1213,1215,,1216,,1002,,,,,1081,,,,,,,,,,,,,,,,,,,18,242","442,242,242,442,242,,31,,,,18,1232,1233,1234,1235,,18,442,242,242,,",",1237,,,,,,,,,,18,,573,,575,,,577,578,,,,31,,679,679,679,,,,,,31,,941","765,,765,,,765,765,,,,,1183,765,1185,,,,,765,765,,242,,1002,,,765,765","242,242,,,,,,,,242,,1204,,,,,,,,,,,,,,,764,18,,31,,18,,,764,345,18,765",",31,,,,764,764,,,,,,,,,1225,345,1226,,1227,,20,,,,670,20,,18,31,,,31",",,1196,,,1236,31,,,242,18,18,,,,,31,,,,31,,,,20,353,353,,,,242,,,,,",",,,,,,,,679,,,31,,,31,31,20,716,31,,,,,,31,31,353,353,353,31,31,,,,",",,,,,,,,,,,,,,,,,,,,,,765,242,,,,,,,,765,,,,765,,,,20,,,,,,,,,20,,20",",,,,796,,381,,799,,,242,764,,764,,,764,764,,,242,,,764,,,,765,,764,764",",,,,,,764,764,,,,,,796,,,381,,,,,,,,,,,,765,448,,,,,,,,,,,,,31,,,764",",,,18,20,,20,,,20,,345,,242,,,20,,,31,345,,20,20,31,31,,866,,,,,,,,31","796,381,,20,,18,,,18,,,,,,893,242,,31,,,,,,,,242,,,911,18,,,,,31,,,",",,,,,,,,,,,,,,,,,,18,,,442,242,,,18,,,,,,442,442,,,,442,442,,,,,,,,20",",,,20,,,764,353,20,,,,,,31,764,,,,764,,,,,796,,353,,,,,31,,976,,,977",",20,,,,,31,,,,,,31,,,,20,20,31,,,,,,,,764,,,,,,,,31,,,,,,,,,,,,,,,,",",,,,,,,764,,,,,,,,1005,,,345,,,,,15,,,,,15,345,,,,242,,,,,31,,,,,,,",",,,,,,,,,,18,,,15,,18,242,,,,,31,31,,,,18,31,,,21,,,,,21,,,,,,15,,,442",",,,,,,398,773,773,,,,,,,,18,,,,,21,347,347,,,31,,31,31,,,,,,,,,,,,31",",,,,,1091,,21,,,,,15,,,,,396,405,405,,15,,15,381,20,,,31,,,,,353,,,",",242,,,,353,,,,,,,,,,,,,18,,,,,,,,20,,21,20,242,,,771,771,,18,21,,21",",,18,,,,,,,,20,,,,,,,,18,,,,1106,,,,,,,15,,440,,,440,,,20,,,20,15,,","20,,,15,440,,20,20,,,,20,20,,,,,,,,15,,,,,,,,,18,,,,,,,,,21,,443,,1145","443,,,,,,,21,,,,,,21,443,18,18,,,773,,18,,,,,,773,,,21,,,,,,773,773",",770,770,,,,,,,,,,,,,,,,,15,,,,15,1187,,,18,15,242,242,,,,,,,,,,,,242",",,,353,,,,,,,,,,,353,15,,,,,,,,,,,,,18,21,15,15,,21,,,,347,21,,,20,","771,,,20,,,,,771,,,,,347,20,,,771,771,,,,,,,21,,,,,,,20,43,,,,,43,,21","21,,,,,,,,20,,,,,,,,296,,,,,,,,,,,,43,343,343,,,773,,773,,,773,773,",",,,,773,,,,,,773,773,,,,43,,,773,773,,,,,,392,296,296,,,,,,,,,,,,,,",",,,769,769,,20,,,770,,,,,,773,,770,,,,,,,20,,770,770,,,20,43,,,,,,,",",43,,43,,,,20,,768,768,353,,,,,771,15,771,,,771,771,,,,,,771,,,,,,771","771,,,,,,,771,771,,,,,,,,,,,,15,,,15,,,,20,,,,,,,,21,,,,,353,,,347,15",",771,,,,,43,347,,,,20,20,,,,,20,43,767,767,,,773,43,,15,,21,440,,21","773,15,,,773,,,440,440,43,,,440,440,,,,,,,21,,,,,,353,856,,20,,,,,,",",770,,770,,,770,770,,,,21,773,770,443,,,,21,770,770,,,,443,443,,770","770,443,443,,,,769,,,20,,,,,769,,773,,,,,,,769,769,43,,,,43,,,771,343","43,,,,770,,,771,,,,771,,,,,,768,343,,,,,,,768,,,,,43,,,,768,768,,,,",",,,,,43,43,,,,,,,,,771,,,,,,,,,,,,,15,,,,,15,,,,,,,,,,347,15,,,771,",",,,,,347,,,,,,,,440,,,,,767,,,,,,,,767,,,,15,,21,,,767,767,21,,,,,770",",,,,,21,,,770,,,,770,,,,,,,769,,769,,443,769,769,,,,,,769,,,,,,769,769",",21,,,,,769,769,,,,,,,,,,770,,766,766,,,,,768,,768,,15,768,768,,,,,","768,,,,,,768,768,769,,15,,770,,768,768,15,,,,,,,,,,,,,,43,,15,,,,1109",",343,,,,,,,21,,343,,,,,,768,,,,,,,,,,21,,,,,43,21,,43,,,,,,,767,,767",",,767,767,21,,15,,1108,767,,43,,,,767,767,34,,,,,34,767,767,,,,,,,,",",,15,15,,43,34,,15,,,,43,,,,34,34,34,,34,769,,,,,21,,,767,769,,,,769",",,,,405,,,,,,,,,34,,,,15,34,34,21,21,34,,,,21,,,,,768,,,,,,,,,768,,","769,768,,,,,,,766,,,,,,,,766,,15,,,,,,405,766,766,21,34,,,,769,34,34","34,34,34,,34,,,,,,768,,,,,,,,,,,,,,,,343,,,,,,,,,,21,343,,,,,768,767",",,,,,,,,767,,,,767,,,,,,,,43,,,,,43,,,,,,,,,,,43,,,,,,,34,34,34,34,34","34,34,,,,,,34,767,,,,,34,34,34,34,,,,,,,43,,,,,,,34,,,,,,,,,,767,,,",",,,,,,,,,,,,,,,,766,,766,,,766,766,,,,,,766,,,,34,,766,766,,,,34,34",",766,766,,,,,34,,,,,,,,,,,,43,,,,,,34,,,,34,,,,,34,,,43,,,766,,,43,",",,,,,,,,,,,,,,43,,,,1104,34,,,,,,,,,,,,,,34,34,34,,,,,,,,,,,,,,,,,,","34,,,,,,,,,,,,,,,43,,,,,,,,,,,,,296,,,,,,,,,,,,,,,,43,43,,,,,43,,,,",",,,,,,249,,,34,,,,766,,,317,317,317,,,,766,,,,766,,364,365,,367,368",",370,,296,,,43,,,,,,,,,34,317,317,,,,,,,,34,,,,,,,,,,,,766,,,,,,,,,",",,,43,,,,,,,,,,,,,,,,,,,766,,,,,,,,,,,,,,,,34,,,,,,,,,,34,,,,,,,,,,",",,,,,,,,,,,,,,,,,34,,,34,,,,,,,34,,,,,,,,,,34,,,,34,,,,,,,,,,,,,,,,",",,,,317,447,,,453,317,34,,,34,34,,,34,,,,,453,34,34,,,,34,34,,,,,,249",",,,,,,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544","545,546,547,548,549,550,,,,,551,,,,,,,,,,,,,,,,,,,,,,,317,317,,,,,,",",317,,,,,,,317,,317,,,317,317,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,604,,,,,34,,,,,,,,,,,,,,,,,,,,,,,34,,,,,34,34,,,,,,,,,,34,,,,,,,,",",,,,,,,,,34,,,,,317,,,,,,,,,,,,34,,,,,,,,,,,,,,,,,,,,,,,692,,,,,,,,",",,,,,,,,,,,,,,,,,317,,,,,,,,,,,,,723,,34,,,,,,,,317,,453,453,453,,,",",34,,,,,,,,,,,,34,,,,,,34,,,,,,34,,,,,,,365,,,,,,,,,34,317,,317,,317",",,,,,,,,,,,,,,,317,,,,,,,,,,453,,,816,,817,,,,,,317,,,317,,,,,,,,,,34",",,317,317,,,,,,,,,,317,,,,,,,,,,,,,,,34,34,,,,,34,,,,,,,,,,,,317,453","317,,,,874,,,317,317,453,453,,,,453,453,,,,,,317,,,,,,,,,34,,34,34,","317,,,,,,,,,,34,,,,,,,,,,,,,,692,723,,,,,,,,,,,,,,34,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,317,,,,,,,,,317,,,317,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,317,,,,,,,,453,,,,,,,,",",,,,1010,1011,,,,,,,,,,,,,,,,,,,,,,,,,,,,1033,1034,453,453,453,453,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1067,,,,,,,,,,,,,,,,,,,,,,,,,",",,317,,,,,,,,,,,,,,,,,,,317,,,,,,,,,,,,,,,,,,,,,,,,,,453,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,317"],racc_goto_table=arr=$$$("Array").$new(4752,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),clist=["72,198,158,91,91,72,75,75,36,36,36,68,46,198,31,230,230,48,107,19,19","10,75,19,72,34,112,10,128,113,34,12,55,55,82,82,72,72,72,73,117,139","139,94,33,110,110,11,92,228,228,228,77,77,13,33,135,70,133,22,111,34","34,34,72,9,44,44,80,17,17,82,82,82,72,72,72,19,19,19,19,239,87,87,56","56,56,235,8,34,95,20,95,8,20,51,31,32,187,34,34,34,69,41,41,177,177","58,20,55,117,7,24,24,149,28,26,26,119,57,26,129,72,239,89,89,152,192","89,28,87,72,231,72,151,225,225,200,200,5,35,35,64,193,2,157,157,34,90","90,90,127,8,147,130,236,34,145,34,207,161,6,3,10,214,214,29,14,65,178","178,29,161,16,26,26,26,26,18,178,94,90,90,175,224,224,13,21,66,25,239","230,176,74,74,27,42,91,36,43,95,95,29,45,202,202,50,52,60,5,8,78,215","215,215,215,72,83,84,8,86,8,75,93,152,236,105,11,72,106,29,114,151,116","72,149,198,120,121,122,123,34,124,34,128,125,34,126,128,131,136,72,142","34,22,22,143,150,22,34,34,112,11,146,66,146,26,26,33,88,88,88,22,73","153,154,34,2,6,155,36,36,156,26,26,70,159,66,29,36,160,162,164,165,70","168,169,29,170,29,192,171,88,172,173,180,182,200,95,192,31,225,33,183","87,87,63,63,63,184,145,157,188,91,189,55,55,147,58,91,195,72,68,196","19,72,82,129,205,72,72,206,149,1,26,210,11,211,193,212,119,11,51,127","130,82,34,192,72,213,34,216,175,217,34,34,117,175,175,218,72,33,35,35","32,219,176,176,80,220,31,223,29,34,29,72,72,29,32,33,229,9,202,202,29","34,11,11,55,233,29,29,234,69,235,,,187,55,,34,34,,73,,,,29,31,8,33,90",",75,117,66,230,111,31,90,,26,91,10,,,55,7,91,,,64,,,55,36,64,128,128","32,,119,26,13,88,88,215,231,215,,,139,,31,66,5,,65,33,77,228,228,65","228,228,,228,,,32,,55,55,230,36,230,17,,32,,91,,,133,36,,110,29,57,","70,29,66,57,,,29,40,,,66,32,66,56,79,75,66,94,239,56,,,,5,,72,72,91","79,95,92,,66,,146,,29,40,66,200,200,88,88,20,117,,225,,,200,88,29,29","20,20,200,157,66,20,20,68,174,174,91,36,41,231,177,73,68,89,32,,91,28","28,32,32,72,28,28,13,146,82,191,,72,24,75,63,,191,82,,,72,,63,75,200","94,91,36,34,,,,,56,91,,34,36,,,,72,,,72,34,,,,113,44,75,11,,,11,,75",",,139,139,10,,,72,34,,135,34,231,91,36,128,128,,,,,,,,117,,,,,,75,66","34,198,72,,,140,75,,140,72,,117,110,228,228,228,228,,,90,,,,32,32,32",",34,,,34,,146,,34,146,,,,,34,34,22,,77,34,34,,,,,,22,22,,12,,22,22,","90,17,,112,,,,,,107,,,,,,,139,200,72,29,,20,,110,,110,72,,,230,8,,87",",158,72,72,8,,191,,46,28,,,146,48,228,191,,68,75,191,,174,,91,29,,91","29,68,174,10,,,,,,90,19,,,82,,,72,230,,,,29,,,82,,,72,79,,79,,,,,,191",",,,,34,,,,,132,,29,40,,29,34,,72,29,,32,,72,,29,29,,,11,29,29,191,,72",",,40,10,,66,88,26,34,,11,,,34,,,,,,,66,,,,34,,,,,,,,,10,72,79,26,,,",",,34,,,11,90,,19,,,,,,22,,,,,34,,230,66,,230,,72,,72,,,72,72,88,66,",",19,72,,,,40,,72,72,,,,140,,,72,72,,,31,87,,,,87,174,,,,,174,174,,,198",",,55,72,,79,79,,174,,79,79,,,11,,,,,72,,72,230,66,66,66,132,72,34,132",",132,11,26,,,,29,,66,,,29,72,82,,34,72,,,,59,34,29,11,174,59,,,,,,26","117,,,40,,34,,,29,34,59,,,,,,,,,,59,59,59,,59,29,,,,,,,,,,72,132,,132",",132,,132,,,82,,,72,,,,59,,,,,59,59,132,34,59,,,72,72,19,19,,,72,,,34","140,11,,140,,,140,11,140,72,,144,,144,,34,34,,72,,,34,72,,,,,33,,,91","36,29,,82,,59,72,98,98,72,59,59,59,59,59,,59,,,29,11,,,,75,29,,,,,79","34,,,34,72,,,,,,29,,,,140,,140,75,140,,140,,72,,,,,26,26,,,,,11,,232","72,140,,,,,,79,79,79,79,34,40,,,,,,,,,,,,,,40,40,,29,,,59,59,59,59,59","59,59,,,,,,59,,,,,,59,59,59,59,,,,,29,29,85,30,,,29,,30,59,,,,,,,,,",",,,,,,30,,,,40,,,,,,30,30,30,,30,30,30,,,,,,,,,29,,,,,59,,,,40,,,59","59,,79,,30,40,,,59,30,30,40,,30,30,30,30,,,141,141,141,,,,,59,,40,,59","29,,,,59,,98,232,,,232,,,232,98,232,,,,,,97,97,98,98,,,,,,144,30,,,59",",30,30,30,30,30,,30,,,,,,59,59,59,,,,,,,40,,85,85,,40,40,,,,,,59,,,",",,,,,144,,144,,144,232,,232,,232,,232,,,,,141,141,141,141,,141,,40,",",,,232,,,,,,,,,,,,,,,,,,,30,30,30,30,30,30,30,,59,,,,30,141,141,141","141,,30,30,30,30,,,,141,,,,,,,,,,30,,85,,85,,,85,85,,,,59,,40,40,40",",,,,,59,,40,98,,98,,,98,98,,,,,144,98,144,,,,,98,98,,30,,40,,,98,98","30,30,,,,,,,,30,,144,,,,,,,,,,,,,,,97,30,,59,,30,,,97,30,30,98,,59,",",,97,97,,,,,,,,,144,30,144,,144,,38,,,,85,38,,30,59,,,59,,,40,,,144","59,,,30,30,30,,,,,59,,,,59,,,,38,38,38,,,,30,,,,,,,,,,,,,,40,,,59,,","59,59,38,85,59,,,,,,59,59,38,38,38,59,59,,,,,,,,,,,,,,,,,,,,,,,,,,,98","30,,,,,,,,98,,,,98,,,,38,,,,,,,,,38,,38,,,,,85,,85,,85,,,30,97,,97,",",97,97,,,30,,,97,,,,98,,97,97,,,,,,,97,97,,,,,,85,,,85,,,,,,,,,,,,98","85,,,,,,,,,,,,,59,,,97,,,,30,38,,38,,,38,,30,,30,,,38,,,59,30,,38,38","59,59,,85,,,,,,,,59,85,85,,38,,30,,,30,,,,,,85,30,,59,,,,,,,,30,,,85","30,,,,,59,,,,,,,,,,,,,,,,,,,,,,30,,,30,30,,,30,,,,,,30,30,,,,30,30,",",,,,,,38,,,,38,,,97,38,38,,,,,,59,97,,,,97,,,,,85,,38,,,,,59,,85,,,85",",38,,,,,59,,,,,,59,,,,38,38,59,,,,,,,,97,,,,,,,,59,,,,,,,,,,,,,,,,,",",,,,,,97,,,,,,,,85,,,30,,,,,23,,,,,23,30,,,,30,,,,,59,,,,,,,,,,,,,,",",,,30,,,23,,30,30,,,,,59,59,,,,30,59,,,39,,,,,39,,,,,,23,,,30,,,,,,","23,109,109,,,,,,,,30,,,,,39,39,39,,,59,,59,59,,,,,,,,,,,,59,,,,,,85",",39,,,,,23,,,,,39,39,39,,23,,23,85,38,,,59,,,,,38,,,,,30,,,,38,,,,,",",,,,,,,30,,,,,,,,38,,39,38,30,,,104,104,,30,39,,39,,,30,,,,,,,,38,,",",,,,,30,,,,30,,,,,,,23,,23,,,23,,,38,,,38,23,,,38,,,23,23,,38,38,,,","38,38,,,,,,,,23,,,,,,,,,30,,,,,,,,,39,,39,,30,39,,,,,,,39,,,,,,39,39","30,30,,,109,,30,,,,,,109,,,39,,,,,,109,109,,103,103,,,,,,,,,,,,,,,,","23,,,,23,30,,,30,23,30,30,,,,,,,,,,,,30,,,,38,,,,,,,,,,,38,23,,,,,,",",,,,,,30,39,23,23,,39,,,,39,39,,,38,,104,,,38,,,,,104,,,,,39,38,,,104","104,,,,,,,39,,,,,,,38,71,,,,,71,,39,39,,,,,,,,38,,,,,,,,71,,,,,,,,,",",,71,71,71,,,109,,109,,,109,109,,,,,,109,,,,,,109,109,,,,71,,,109,109",",,,,,71,71,71,,,,,,,,,,,,,,,,,,102,102,,38,,,103,,,,,,109,,103,,,,,",",38,,103,103,,,38,71,,,,,,,,,71,,71,,,,38,,101,101,38,,,,,104,23,104",",,104,104,,,,,,104,,,,,,104,104,,,,,,,104,104,,,,,,,,,,,,23,,,23,,,","38,,,,,,,,39,,,,,38,,,39,23,,104,,,,,71,39,,,,38,38,,,,,38,71,100,100",",,109,71,,23,,39,23,,39,109,23,,,109,,,23,23,71,,,23,23,,,,,,,39,,,",",,38,39,,38,,,,,,,,103,,103,,,103,103,,,,39,109,103,39,,,,39,103,103",",,,39,39,,103,103,39,39,,,,102,,,38,,,,,102,,109,,,,,,,102,102,71,,",",71,,,104,71,71,,,,103,,,104,,,,104,,,,,,101,71,,,,,,,101,,,,,71,,,","101,101,,,,,,,,,,71,71,,,,,,,,,104,,,,,,,,,,,,,23,,,,,23,,,,,,,,,,39","23,,,104,,,,,,,39,,,,,,,,23,,,,,100,,,,,,,,100,,,,23,,39,,,100,100,39",",,,,103,,,,,,39,,,103,,,,103,,,,,,,102,,102,,39,102,102,,,,,,102,,,",",,102,102,,39,,,,,102,102,,,,,,,,,,103,,99,99,,,,,101,,101,,23,101,101",",,,,,101,,,,,,101,101,102,,23,,103,,101,101,23,,,,,,,,,,,,,,71,,23,",",,23,,71,,,,,,,39,,71,,,,,,101,,,,,,,,,,39,,,,,71,39,,71,,,,,,,100,","100,,,100,100,39,,23,,39,100,,71,,,,100,100,62,,,,,62,100,100,,,,,,",",,,,23,23,,71,62,,23,,,,71,,,,62,62,62,,62,102,,,,,39,,,100,102,,,,102",",,,,39,,,,,,,,,62,,,,23,62,62,39,39,62,,,,39,,,,,101,,,,,,,,,101,,,102","101,,,,,,,99,,,,,,,,99,,23,,,,,,39,99,99,39,62,,,,102,62,62,62,62,62",",62,,,,,,101,,,,,,,,,,,,,,,,71,,,,,,,,,,39,71,,,,,101,100,,,,,,,,,100",",,,100,,,,,,,,71,,,,,71,,,,,,,,,,,71,,,,,,,62,62,62,62,62,62,62,,,,",",62,100,,,,,62,62,62,62,,,,,,,71,,,,,,,62,,,,,,,,,,100,,,,,,,,,,,,,",",,,,,,99,,99,,,99,99,,,,,,99,,,,62,,99,99,,,,62,62,,99,99,,,,,62,,,",",,,,,,,,71,,,,,,62,,,,62,,,,,62,,,71,,,99,,,71,,,,,,,,,,,,,,,,71,,,","71,62,,,,,,,,,,,,,,62,62,62,,,,,,,,,,,,,,,,,,,62,,,,,,,,,,,,,,,71,,",",,,,,,,,,,71,,,,,,,,,,,,,,,,71,71,,,,,71,,,,,,,,,,,37,,,62,,,,99,,,37","37,37,,,,99,,,,99,,37,37,,37,37,,37,,71,,,71,,,,,,,,,62,37,37,,,,,,",",62,,,,,,,,,,,,99,,,,,,,,,,,,,71,,,,,,,,,,,,,,,,,,,99,,,,,,,,,,,,,,",",62,,,,,,,,,,62,,,,,,,,,,,,,,,,,,,,,,,,,,,,62,,,62,,,,,,,62,,,,,,,,",",62,,,,62,,,,,,,,,,,,,,,,,,,,,37,37,,,37,37,62,,,62,62,,,62,,,,,37,62","62,,,,62,62,,,,,,37,,,,,,,37,37,37,37,37,37,37,37,37,37,37,37,37,37","37,37,37,37,37,37,37,37,,,,,37,,,,,,,,,,,,,,,,,,,,,,,37,37,,,,,,,,37",",,,,,,37,,37,,,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,","62,,,,,,,,,,,,,,,,,,,,,,,62,,,,,62,62,,,,,,,,,,62,,,,,,,,,,,,,,,,,,62",",,,,37,,,,,,,,,,,,62,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,",",,,37,,,,,,,,,,,,,37,,62,,,,,,,,37,,37,37,37,,,,,62,,,,,,,,,,,,62,,",",,,62,,,,,,62,,,,,,,37,,,,,,,,,62,37,,37,,37,,,,,,,,,,,,,,,,37,,,,,",",,,,37,,,37,,37,,,,,,37,,,37,,,,,,,,,,62,,,37,37,,,,,,,,,,37,,,,,,,",",,,,,,,62,62,,,,,62,,,,,,,,,,,,37,37,37,,,,37,,,37,37,37,37,,,,37,37",",,,,,37,,,,,,,,,62,,62,62,,37,,,,,,,,,,62,,,,,,,,,,,,,,37,37,,,,,,,",",,,,,,62,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,37,,,37",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37",",,,,,,,37,,,,,,,,,,,,,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,37,37,37,37","37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,",",,,,37,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37"],racc_goto_check=arr=$$$("Array").$new(4752,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),racc_goto_pointer=[nil,343,142,162,nil,134,154,106,86,56,-209,9,-441,-639,-723,nil,-407,59,167,-52,-129,111,35,2068,-107,-30,45,59,-108,164,1262,-210,-357,26,23,121,-26,3589,1625,2121,484,-424,-59,-57,-7,-419,-14,nil,-9,nil,180,66,-345,nil,nil,-193,53,-186,-458,1017,-350,nil,3145,282,104,130,-51,nil,-28,62,-303,2499,-2,-363,116,-4,nil,42,-220,291,20,nil,-5,166,-153,1195,153,63,235,-252,114,-28,-258,-332,-277,-480,nil,849,616,2504,2203,2113,2068,1856,1723,200,161,-51,nil,1618,-339,-763,-364,-596,155,nil,-173,35,nil,98,172,-135,173,-366,-397,-603,-161,-762,-466,-373,-760,-664,-141,-639,nil,-437,-722,nil,nil,-436,-27,269,-822,-716,413,-815,-438,-638,nil,-737,-842,-965,-973,-135,-575,194,-361,-88,-25,-714,-711,-394,-9,nil,-18,-18,nil,nil,-488,-796,-691,-919,-530,-844,34,-562,-553,-422,-760,nil,-620,nil,-620,-431,-425,nil,nil,-648,-424,-423,nil,-352,-816,-781,nil,-615,-612,nil,-89,nil,-390,nil,-558,nil,nil,-437,-353,-735,nil,nil,257,254,255,264,-250,-200,265,266,271,-274,-271,nil,nil,-259,-168,-98,nil,nil,-432,-311,-218,-569,230,-298,-730,-616,-983,nil,nil,-491],racc_goto_default=[nil,nil,nil,nil,5,nil,6,391,334,nil,nil,472,nil,984,nil,331,332,nil,nil,nil,13,14,22,247,nil,nil,16,nil,441,248,363,nil,nil,637,251,nil,27,25,252,246,517,nil,nil,nil,nil,nil,nil,386,143,26,nil,nil,nil,28,29,812,nil,nil,nil,351,nil,30,348,455,37,nil,nil,39,42,41,nil,243,244,403,nil,463,142,87,nil,446,103,51,54,283,nil,323,nil,891,456,nil,457,468,480,686,569,321,307,55,56,57,58,59,60,61,62,63,nil,308,69,70,nil,nil,nil,nil,nil,77,nil,619,78,230,nil,nil,nil,nil,nil,nil,nil,711,492,nil,712,713,478,474,475,nil,1179,707,1071,nil,479,nil,nil,nil,481,nil,483,nil,971,nil,nil,nil,490,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,467,nil,nil,791,783,nil,nil,nil,nil,nil,nil,1051,nil,736,937,738,739,743,740,741,nil,nil,742,744,nil,nil,nil,936,938,nil,748,750,751,752,753,nil,757,501,758,759,760,761,nil,nil,nil,86,88,89,nil,nil,nil,nil,647,nil,nil,nil,nil,nil,99,100,nil,231,901,234,477,nil,482,909,495,497,498,1082,502,1083,505,508,326],racc_reduce_table=[0,0,"racc_error",0,150,"_reduce_1",2,148,"_reduce_2",2,149,"_reduce_3",0,151,"_reduce_4",1,151,"_reduce_5",3,151,"_reduce_6",2,151,"_reduce_7",1,153,"_reduce_none",2,153,"_reduce_9",3,156,"_reduce_10",4,157,"_reduce_11",2,158,"_reduce_12",0,162,"_reduce_13",1,162,"_reduce_14",3,162,"_reduce_15",2,162,"_reduce_16",1,163,"_reduce_none",2,163,"_reduce_18",0,174,"_reduce_19",4,155,"_reduce_20",3,155,"_reduce_21",3,155,"_reduce_22",3,155,"_reduce_23",2,155,"_reduce_24",3,155,"_reduce_25",3,155,"_reduce_26",3,155,"_reduce_27",3,155,"_reduce_28",3,155,"_reduce_29",4,155,"_reduce_30",1,155,"_reduce_none",3,155,"_reduce_32",3,155,"_reduce_33",5,155,"_reduce_34",3,155,"_reduce_35",1,155,"_reduce_none",3,167,"_reduce_37",3,167,"_reduce_38",6,167,"_reduce_39",5,167,"_reduce_40",5,167,"_reduce_41",5,167,"_reduce_42",5,167,"_reduce_43",4,167,"_reduce_44",6,167,"_reduce_45",4,167,"_reduce_46",6,167,"_reduce_47",3,167,"_reduce_48",1,175,"_reduce_none",3,175,"_reduce_50",1,175,"_reduce_none",1,173,"_reduce_none",3,173,"_reduce_53",3,173,"_reduce_54",3,173,"_reduce_55",2,173,"_reduce_56",0,189,"_reduce_57",4,173,"_reduce_58",0,190,"_reduce_59",4,173,"_reduce_60",1,173,"_reduce_none",1,166,"_reduce_none",0,194,"_reduce_63",3,191,"_reduce_64",1,193,"_reduce_65",2,181,"_reduce_66",0,199,"_reduce_67",5,185,"_reduce_68",1,169,"_reduce_none",1,169,"_reduce_none",1,200,"_reduce_none",4,200,"_reduce_72",0,207,"_reduce_73",4,204,"_reduce_74",1,206,"_reduce_none",2,183,"_reduce_76",3,183,"_reduce_77",4,183,"_reduce_78",5,183,"_reduce_79",4,183,"_reduce_80",5,183,"_reduce_81",2,183,"_reduce_82",2,183,"_reduce_83",2,183,"_reduce_84",2,183,"_reduce_85",2,183,"_reduce_86",1,168,"_reduce_87",3,168,"_reduce_88",1,212,"_reduce_89",3,212,"_reduce_90",1,211,"_reduce_none",2,211,"_reduce_92",3,211,"_reduce_93",5,211,"_reduce_94",2,211,"_reduce_95",4,211,"_reduce_96",2,211,"_reduce_97",4,211,"_reduce_98",1,211,"_reduce_99",3,211,"_reduce_100",1,215,"_reduce_none",3,215,"_reduce_102",2,214,"_reduce_103",3,214,"_reduce_104",1,217,"_reduce_105",3,217,"_reduce_106",1,216,"_reduce_107",1,216,"_reduce_108",4,216,"_reduce_109",3,216,"_reduce_110",3,216,"_reduce_111",3,216,"_reduce_112",3,216,"_reduce_113",2,216,"_reduce_114",1,216,"_reduce_115",1,170,"_reduce_116",1,170,"_reduce_117",4,170,"_reduce_118",3,170,"_reduce_119",3,170,"_reduce_120",3,170,"_reduce_121",3,170,"_reduce_122",2,170,"_reduce_123",1,170,"_reduce_124",1,220,"_reduce_125",1,220,"_reduce_none",2,221,"_reduce_127",1,221,"_reduce_128",3,221,"_reduce_129",1,195,"_reduce_none",1,195,"_reduce_none",1,195,"_reduce_none",1,195,"_reduce_none",1,195,"_reduce_none",1,164,"_reduce_135",1,164,"_reduce_none",1,165,"_reduce_137",0,225,"_reduce_138",4,165,"_reduce_139",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",3,184,"_reduce_211",3,184,"_reduce_212",6,184,"_reduce_213",5,184,"_reduce_214",5,184,"_reduce_215",5,184,"_reduce_216",5,184,"_reduce_217",4,184,"_reduce_218",3,184,"_reduce_219",3,184,"_reduce_220",3,184,"_reduce_221",2,184,"_reduce_222",2,184,"_reduce_223",2,184,"_reduce_224",2,184,"_reduce_225",3,184,"_reduce_226",3,184,"_reduce_227",3,184,"_reduce_228",3,184,"_reduce_229",3,184,"_reduce_230",3,184,"_reduce_231",4,184,"_reduce_232",2,184,"_reduce_233",2,184,"_reduce_234",3,184,"_reduce_235",3,184,"_reduce_236",3,184,"_reduce_237",3,184,"_reduce_238",1,184,"_reduce_none",3,184,"_reduce_240",3,184,"_reduce_241",3,184,"_reduce_242",3,184,"_reduce_243",3,184,"_reduce_244",2,184,"_reduce_245",2,184,"_reduce_246",3,184,"_reduce_247",3,184,"_reduce_248",3,184,"_reduce_249",3,184,"_reduce_250",0,231,"_reduce_251",4,184,"_reduce_252",6,184,"_reduce_253",4,184,"_reduce_254",6,184,"_reduce_255",4,184,"_reduce_256",6,184,"_reduce_257",1,184,"_reduce_none",1,230,"_reduce_none",1,230,"_reduce_none",1,230,"_reduce_none",1,230,"_reduce_none",3,228,"_reduce_263",3,228,"_reduce_264",1,232,"_reduce_none",1,233,"_reduce_none",2,233,"_reduce_none",4,233,"_reduce_268",2,233,"_reduce_269",1,226,"_reduce_none",3,226,"_reduce_271",3,238,"_reduce_272",5,238,"_reduce_273",3,238,"_reduce_274",0,240,"_reduce_275",1,240,"_reduce_none",0,178,"_reduce_277",1,178,"_reduce_none",2,178,"_reduce_none",4,178,"_reduce_280",2,178,"_reduce_281",1,210,"_reduce_282",2,210,"_reduce_283",2,210,"_reduce_284",4,210,"_reduce_285",1,210,"_reduce_286",0,243,"_reduce_287",2,203,"_reduce_288",2,242,"_reduce_289",1,242,"_reduce_290",2,241,"_reduce_291",0,241,"_reduce_292",1,235,"_reduce_293",2,235,"_reduce_294",3,235,"_reduce_295",4,235,"_reduce_296",1,172,"_reduce_297",1,172,"_reduce_none",3,171,"_reduce_299",4,171,"_reduce_300",2,171,"_reduce_301",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_312",0,267,"_reduce_313",4,229,"_reduce_314",0,268,"_reduce_315",4,229,"_reduce_316",0,269,"_reduce_317",4,229,"_reduce_318",3,229,"_reduce_319",3,229,"_reduce_320",2,229,"_reduce_321",3,229,"_reduce_322",3,229,"_reduce_323",1,229,"_reduce_324",4,229,"_reduce_325",3,229,"_reduce_326",1,229,"_reduce_327",0,270,"_reduce_328",6,229,"_reduce_329",4,229,"_reduce_330",3,229,"_reduce_331",2,229,"_reduce_332",1,229,"_reduce_none",2,229,"_reduce_334",1,229,"_reduce_none",6,229,"_reduce_336",6,229,"_reduce_337",4,229,"_reduce_338",4,229,"_reduce_339",5,229,"_reduce_340",4,229,"_reduce_341",5,229,"_reduce_342",6,229,"_reduce_343",0,271,"_reduce_344",6,229,"_reduce_345",0,272,"_reduce_346",7,229,"_reduce_347",0,273,"_reduce_348",5,229,"_reduce_349",4,229,"_reduce_350",4,229,"_reduce_351",1,229,"_reduce_352",1,229,"_reduce_353",1,229,"_reduce_354",1,229,"_reduce_355",1,177,"_reduce_none",1,262,"_reduce_357",1,265,"_reduce_358",1,196,"_reduce_359",1,209,"_reduce_360",1,257,"_reduce_none",1,257,"_reduce_none",2,257,"_reduce_363",1,192,"_reduce_none",1,192,"_reduce_none",1,258,"_reduce_none",5,258,"_reduce_367",1,160,"_reduce_none",2,160,"_reduce_369",1,261,"_reduce_none",1,261,"_reduce_none",1,274,"_reduce_372",3,274,"_reduce_373",1,277,"_reduce_374",3,277,"_reduce_375",1,276,"_reduce_none",3,276,"_reduce_377",5,276,"_reduce_378",1,276,"_reduce_379",3,276,"_reduce_380",2,278,"_reduce_381",1,278,"_reduce_382",1,279,"_reduce_none",1,279,"_reduce_none",0,284,"_reduce_385",2,282,"_reduce_386",4,283,"_reduce_387",2,283,"_reduce_388",2,283,"_reduce_389",1,283,"_reduce_390",2,288,"_reduce_391",0,288,"_reduce_392",1,289,"_reduce_none",6,290,"_reduce_394",8,290,"_reduce_395",4,290,"_reduce_396",6,290,"_reduce_397",4,290,"_reduce_398",2,290,"_reduce_none",6,290,"_reduce_400",2,290,"_reduce_401",4,290,"_reduce_402",6,290,"_reduce_403",2,290,"_reduce_404",4,290,"_reduce_405",2,290,"_reduce_406",4,290,"_reduce_407",1,290,"_reduce_none",0,294,"_reduce_409",1,294,"_reduce_410",3,295,"_reduce_411",4,295,"_reduce_412",1,296,"_reduce_413",4,296,"_reduce_414",1,297,"_reduce_415",3,297,"_reduce_416",1,298,"_reduce_417",1,298,"_reduce_none",0,302,"_reduce_419",0,303,"_reduce_420",5,256,"_reduce_421",4,300,"_reduce_422",1,300,"_reduce_423",0,306,"_reduce_424",4,301,"_reduce_425",0,307,"_reduce_426",4,301,"_reduce_427",0,309,"_reduce_428",4,305,"_reduce_429",2,201,"_reduce_430",4,201,"_reduce_431",5,201,"_reduce_432",5,201,"_reduce_433",2,255,"_reduce_434",4,255,"_reduce_435",4,255,"_reduce_436",3,255,"_reduce_437",3,255,"_reduce_438",3,255,"_reduce_439",2,255,"_reduce_440",1,255,"_reduce_441",4,255,"_reduce_442",0,311,"_reduce_443",4,254,"_reduce_444",0,312,"_reduce_445",4,254,"_reduce_446",0,313,"_reduce_447",3,205,"_reduce_448",0,314,"_reduce_449",0,315,"_reduce_450",4,308,"_reduce_451",5,259,"_reduce_452",1,316,"_reduce_453",1,316,"_reduce_none",0,319,"_reduce_455",0,320,"_reduce_456",7,260,"_reduce_457",1,318,"_reduce_458",1,318,"_reduce_none",1,317,"_reduce_460",3,317,"_reduce_461",3,317,"_reduce_462",1,188,"_reduce_none",2,188,"_reduce_464",3,188,"_reduce_465",1,188,"_reduce_466",1,188,"_reduce_467",1,188,"_reduce_468",1,321,"_reduce_none",3,326,"_reduce_470",1,326,"_reduce_none",3,328,"_reduce_472",1,328,"_reduce_none",1,330,"_reduce_474",1,331,"_reduce_475",1,329,"_reduce_none",1,329,"_reduce_none",4,329,"_reduce_478",4,329,"_reduce_479",4,329,"_reduce_480",3,329,"_reduce_481",4,329,"_reduce_482",4,329,"_reduce_483",4,329,"_reduce_484",3,329,"_reduce_485",3,329,"_reduce_486",3,329,"_reduce_487",2,329,"_reduce_488",0,335,"_reduce_489",4,329,"_reduce_490",2,329,"_reduce_491",0,336,"_reduce_492",4,329,"_reduce_493",1,322,"_reduce_494",1,322,"_reduce_495",2,322,"_reduce_496",3,322,"_reduce_497",5,322,"_reduce_498",2,322,"_reduce_499",4,322,"_reduce_500",1,322,"_reduce_none",2,337,"_reduce_502",3,337,"_reduce_503",1,324,"_reduce_504",3,324,"_reduce_505",5,323,"_reduce_506",2,340,"_reduce_507",1,340,"_reduce_508",1,339,"_reduce_509",3,339,"_reduce_510",1,338,"_reduce_none",3,325,"_reduce_512",1,325,"_reduce_513",2,325,"_reduce_514",1,325,"_reduce_515",1,341,"_reduce_516",3,341,"_reduce_517",2,343,"_reduce_518",1,343,"_reduce_519",1,344,"_reduce_520",3,344,"_reduce_521",2,346,"_reduce_522",1,346,"_reduce_523",2,348,"_reduce_524",1,342,"_reduce_none",1,342,"_reduce_none",1,332,"_reduce_none",3,332,"_reduce_528",3,332,"_reduce_529",2,332,"_reduce_530",2,332,"_reduce_531",1,332,"_reduce_none",1,332,"_reduce_none",1,332,"_reduce_none",2,332,"_reduce_535",2,332,"_reduce_536",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_545",1,349,"_reduce_none",1,327,"_reduce_547",2,350,"_reduce_548",2,350,"_reduce_549",4,351,"_reduce_550",2,333,"_reduce_551",3,333,"_reduce_552",1,333,"_reduce_553",6,159,"_reduce_554",0,159,"_reduce_555",1,353,"_reduce_556",1,353,"_reduce_none",1,353,"_reduce_none",2,354,"_reduce_559",1,354,"_reduce_none",2,161,"_reduce_561",1,161,"_reduce_none",1,244,"_reduce_none",1,244,"_reduce_none",1,245,"_reduce_565",1,356,"_reduce_566",2,356,"_reduce_567",3,357,"_reduce_568",1,357,"_reduce_569",1,357,"_reduce_570",3,246,"_reduce_571",4,247,"_reduce_572",3,248,"_reduce_573",0,360,"_reduce_574",3,360,"_reduce_575",1,361,"_reduce_576",2,361,"_reduce_577",3,250,"_reduce_578",0,363,"_reduce_579",3,363,"_reduce_580",3,249,"_reduce_581",3,251,"_reduce_582",0,364,"_reduce_583",3,364,"_reduce_584",0,365,"_reduce_585",3,365,"_reduce_586",0,345,"_reduce_587",2,345,"_reduce_588",0,358,"_reduce_589",2,358,"_reduce_590",0,359,"_reduce_591",2,359,"_reduce_592",1,362,"_reduce_593",2,362,"_reduce_594",0,367,"_reduce_595",4,362,"_reduce_596",1,366,"_reduce_597",1,366,"_reduce_598",1,366,"_reduce_599",1,366,"_reduce_none",1,224,"_reduce_none",1,224,"_reduce_none",1,368,"_reduce_603",3,369,"_reduce_604",1,355,"_reduce_605",2,355,"_reduce_606",1,227,"_reduce_607",1,227,"_reduce_608",1,227,"_reduce_609",1,227,"_reduce_610",1,352,"_reduce_611",1,352,"_reduce_612",1,352,"_reduce_613",1,218,"_reduce_614",1,218,"_reduce_615",1,218,"_reduce_616",1,218,"_reduce_617",1,218,"_reduce_618",1,219,"_reduce_619",1,219,"_reduce_620",1,219,"_reduce_621",1,219,"_reduce_622",1,219,"_reduce_623",1,219,"_reduce_624",1,219,"_reduce_625",1,252,"_reduce_626",1,252,"_reduce_627",1,176,"_reduce_628",1,176,"_reduce_629",1,186,"_reduce_630",1,186,"_reduce_631",0,370,"_reduce_632",4,263,"_reduce_633",0,263,"_reduce_634",1,182,"_reduce_none",1,182,"_reduce_636",3,371,"_reduce_637",1,266,"_reduce_none",0,373,"_reduce_639",3,266,"_reduce_640",4,372,"_reduce_641",2,372,"_reduce_642",2,372,"_reduce_643",1,372,"_reduce_644",1,372,"_reduce_645",2,375,"_reduce_646",0,375,"_reduce_647",6,304,"_reduce_648",8,304,"_reduce_649",4,304,"_reduce_650",6,304,"_reduce_651",4,304,"_reduce_652",6,304,"_reduce_653",2,304,"_reduce_654",4,304,"_reduce_655",6,304,"_reduce_656",2,304,"_reduce_657",4,304,"_reduce_658",2,304,"_reduce_659",4,304,"_reduce_660",1,304,"_reduce_661",0,304,"_reduce_662",1,239,"_reduce_663",1,299,"_reduce_664",1,299,"_reduce_665",1,299,"_reduce_666",1,299,"_reduce_667",1,275,"_reduce_none",1,275,"_reduce_669",1,377,"_reduce_670",1,378,"_reduce_671",3,378,"_reduce_672",1,291,"_reduce_673",3,291,"_reduce_674",1,379,"_reduce_675",2,380,"_reduce_676",1,380,"_reduce_677",2,381,"_reduce_678",1,381,"_reduce_679",1,285,"_reduce_680",3,285,"_reduce_681",1,374,"_reduce_682",3,374,"_reduce_683",1,347,"_reduce_none",1,347,"_reduce_none",2,281,"_reduce_686",2,280,"_reduce_687",1,280,"_reduce_688",3,382,"_reduce_689",3,383,"_reduce_690",1,292,"_reduce_691",3,292,"_reduce_692",1,376,"_reduce_693",3,376,"_reduce_694",1,384,"_reduce_none",1,384,"_reduce_none",2,293,"_reduce_697",1,293,"_reduce_698",1,385,"_reduce_none",1,385,"_reduce_none",2,287,"_reduce_701",1,287,"_reduce_702",2,286,"_reduce_703",0,286,"_reduce_704",1,197,"_reduce_none",3,197,"_reduce_706",0,253,"_reduce_707",2,253,"_reduce_none",1,237,"_reduce_709",3,237,"_reduce_710",3,386,"_reduce_711",2,386,"_reduce_712",1,386,"_reduce_713",4,386,"_reduce_714",2,386,"_reduce_715",1,208,"_reduce_none",1,208,"_reduce_none",1,208,"_reduce_none",1,202,"_reduce_none",1,202,"_reduce_none",1,202,"_reduce_none",1,202,"_reduce_none",1,310,"_reduce_none",1,310,"_reduce_none",1,310,"_reduce_none",1,198,"_reduce_none",1,198,"_reduce_none",1,180,"_reduce_728",1,180,"_reduce_729",0,152,"_reduce_none",1,152,"_reduce_none",0,187,"_reduce_none",1,187,"_reduce_none",2,213,"_reduce_734",2,179,"_reduce_735",2,334,"_reduce_736",0,236,"_reduce_none",1,236,"_reduce_none",1,236,"_reduce_none",1,264,"_reduce_740",1,264,"_reduce_none",1,154,"_reduce_none",2,154,"_reduce_none",0,234,"_reduce_744"],745,1238,racc_token_table=$hash(!1,0,"error",1,"kCLASS",2,"kMODULE",3,"kDEF",4,"kUNDEF",5,"kBEGIN",6,"kRESCUE",7,"kENSURE",8,"kEND",9,"kIF",10,"kUNLESS",11,"kTHEN",12,"kELSIF",13,"kELSE",14,"kCASE",15,"kWHEN",16,"kWHILE",17,"kUNTIL",18,"kFOR",19,"kBREAK",20,"kNEXT",21,"kREDO",22,"kRETRY",23,"kIN",24,"kDO",25,"kDO_COND",26,"kDO_BLOCK",27,"kDO_LAMBDA",28,"kRETURN",29,"kYIELD",30,"kSUPER",31,"kSELF",32,"kNIL",33,"kTRUE",34,"kFALSE",35,"kAND",36,"kOR",37,"kNOT",38,"kIF_MOD",39,"kUNLESS_MOD",40,"kWHILE_MOD",41,"kUNTIL_MOD",42,"kRESCUE_MOD",43,"kALIAS",44,"kDEFINED",45,"klBEGIN",46,"klEND",47,"k__LINE__",48,"k__FILE__",49,"k__ENCODING__",50,"tIDENTIFIER",51,"tFID",52,"tGVAR",53,"tIVAR",54,"tCONSTANT",55,"tLABEL",56,"tCVAR",57,"tNTH_REF",58,"tBACK_REF",59,"tSTRING_CONTENT",60,"tINTEGER",61,"tFLOAT",62,"tUPLUS",63,"tUMINUS",64,"tUNARY_NUM",65,"tPOW",66,"tCMP",67,"tEQ",68,"tEQQ",69,"tNEQ",70,"tGEQ",71,"tLEQ",72,"tANDOP",73,"tOROP",74,"tMATCH",75,"tNMATCH",76,"tDOT",77,"tDOT2",78,"tDOT3",79,"tAREF",80,"tASET",81,"tLSHFT",82,"tRSHFT",83,"tCOLON2",84,"tCOLON3",85,"tOP_ASGN",86,"tASSOC",87,"tLPAREN",88,"tLPAREN2",89,"tRPAREN",90,"tLPAREN_ARG",91,"tLBRACK",92,"tLBRACK2",93,"tRBRACK",94,"tLBRACE",95,"tLBRACE_ARG",96,"tSTAR",97,"tSTAR2",98,"tAMPER",99,"tAMPER2",100,"tTILDE",101,"tPERCENT",102,"tDIVIDE",103,"tDSTAR",104,"tPLUS",105,"tMINUS",106,"tLT",107,"tGT",108,"tPIPE",109,"tBANG",110,"tCARET",111,"tLCURLY",112,"tRCURLY",113,"tBACK_REF2",114,"tSYMBEG",115,"tSTRING_BEG",116,"tXSTRING_BEG",117,"tREGEXP_BEG",118,"tREGEXP_OPT",119,"tWORDS_BEG",120,"tQWORDS_BEG",121,"tSYMBOLS_BEG",122,"tQSYMBOLS_BEG",123,"tSTRING_DBEG",124,"tSTRING_DVAR",125,"tSTRING_END",126,"tSTRING_DEND",127,"tSTRING",128,"tSYMBOL",129,"tNL",130,"tEH",131,"tCOLON",132,"tCOMMA",133,"tSPACE",134,"tSEMI",135,"tLAMBDA",136,"tLAMBEG",137,"tCHARACTER",138,"tRATIONAL",139,"tIMAGINARY",140,"tLABEL_END",141,"tANDDOT",142,"tBDOT2",143,"tBDOT3",144,"tEQL",145,"tLOWEST",146),147,!0,$const_set($nesting[0],"Racc_arg",[racc_action_table,racc_action_check,racc_action_default,racc_action_pointer,racc_goto_table,racc_goto_check,racc_goto_default,racc_goto_pointer,147,racc_reduce_table,racc_token_table,1238,745,true]),$const_set($nesting[0],"Racc_token_to_s_table",["$end","error","kCLASS","kMODULE","kDEF","kUNDEF","kBEGIN","kRESCUE","kENSURE","kEND","kIF","kUNLESS","kTHEN","kELSIF","kELSE","kCASE","kWHEN","kWHILE","kUNTIL","kFOR","kBREAK","kNEXT","kREDO","kRETRY","kIN","kDO","kDO_COND","kDO_BLOCK","kDO_LAMBDA","kRETURN","kYIELD","kSUPER","kSELF","kNIL","kTRUE","kFALSE","kAND","kOR","kNOT","kIF_MOD","kUNLESS_MOD","kWHILE_MOD","kUNTIL_MOD","kRESCUE_MOD","kALIAS","kDEFINED","klBEGIN","klEND","k__LINE__","k__FILE__","k__ENCODING__","tIDENTIFIER","tFID","tGVAR","tIVAR","tCONSTANT","tLABEL","tCVAR","tNTH_REF","tBACK_REF","tSTRING_CONTENT","tINTEGER","tFLOAT","tUPLUS","tUMINUS","tUNARY_NUM","tPOW","tCMP","tEQ","tEQQ","tNEQ","tGEQ","tLEQ","tANDOP","tOROP","tMATCH","tNMATCH","tDOT","tDOT2","tDOT3","tAREF","tASET","tLSHFT","tRSHFT","tCOLON2","tCOLON3","tOP_ASGN","tASSOC","tLPAREN","tLPAREN2","tRPAREN","tLPAREN_ARG","tLBRACK","tLBRACK2","tRBRACK","tLBRACE","tLBRACE_ARG","tSTAR","tSTAR2","tAMPER","tAMPER2","tTILDE","tPERCENT","tDIVIDE","tDSTAR","tPLUS","tMINUS","tLT","tGT","tPIPE","tBANG","tCARET","tLCURLY","tRCURLY","tBACK_REF2","tSYMBEG","tSTRING_BEG","tXSTRING_BEG","tREGEXP_BEG","tREGEXP_OPT","tWORDS_BEG","tQWORDS_BEG","tSYMBOLS_BEG","tQSYMBOLS_BEG","tSTRING_DBEG","tSTRING_DVAR","tSTRING_END","tSTRING_DEND","tSTRING","tSYMBOL","tNL","tEH","tCOLON","tCOMMA","tSPACE","tSEMI","tLAMBDA","tLAMBEG","tCHARACTER","tRATIONAL","tIMAGINARY","tLABEL_END","tANDDOT","tBDOT2","tBDOT3","tEQL","tLOWEST","$start","program","top_compstmt","@1","top_stmts","opt_terms","top_stmt","terms","stmt","begin_block","bodystmt","compstmt","opt_rescue","opt_else","opt_ensure","stmts","stmt_or_begin","fitem","undef_list","expr_value","command_asgn","mlhs","command_call","lhs","mrhs","mrhs_arg","expr","@2","command_rhs","var_lhs","primary_value","opt_call_args","rbracket","call_op","defn_head","f_opt_paren_args","command","arg","defs_head","backref","opt_nl","p_top_expr_body","@3","@4","expr_value_do","do","def_name","@5","fname","k_def","singleton","dot_or_colon","@6","block_command","block_call","operation2","command_args","cmd_brace_block","brace_body","fcall","@7","operation","k_return","call_args","mlhs_basic","mlhs_inner","rparen","mlhs_head","mlhs_item","mlhs_node","mlhs_post","user_variable","keyword_variable","cname","cpath","op","reswords","symbol","@8","arg_rhs","simple_numeric","rel_expr","primary","relop","@9","arg_value","aref_args","none","args","trailer","assocs","paren_args","args_forward","opt_paren_args","opt_block_arg","block_arg","@10","literal","strings","xstring","regexp","words","qwords","symbols","qsymbols","var_ref","assoc_list","brace_block","method_call","lambda","then","if_tail","case_body","p_case_body","for_var","k_class","superclass","term","k_module","f_arglist","@11","@12","@13","@14","@15","@16","@17","f_marg","f_norm_arg","f_margs","f_marg_list","f_rest_marg","f_any_kwrest","f_kwrest","f_no_kwarg","f_eq","block_args_tail","@18","f_block_kwarg","opt_f_block_arg","f_block_arg","opt_block_args_tail","excessed_comma","block_param","f_arg","f_block_optarg","f_rest_arg","opt_block_param","block_param_def","opt_bv_decl","bv_decls","bvar","f_bad_arg","f_larglist","lambda_body","@19","@20","f_args","do_block","@21","@22","do_body","@23","operation3","@24","@25","@26","@27","@28","cases","p_top_expr","p_cases","@29","@30","p_expr","p_args","p_find","p_args_tail","p_kwargs","p_as","p_variable","p_alt","p_expr_basic","p_lparen","p_lbracket","p_value","p_const","rbrace","@31","@32","p_args_head","p_arg","p_args_post","p_rest","p_kwarg","p_any_kwrest","p_kw","p_kw_label","string_contents","p_kwrest","kwrest_mark","p_kwnorest","p_primitive","p_var_ref","p_expr_ref","nonlocal_var","exc_list","exc_var","numeric","string","string1","xstring_contents","regexp_contents","word_list","word","string_content","symbol_list","qword_list","qsym_list","string_dvar","@33","ssym","dsym","@34","f_paren_args","args_tail","@35","f_kwarg","opt_args_tail","f_optarg","f_arg_asgn","f_arg_item","f_label","f_kw","f_block_kw","f_opt","f_block_opt","restarg_mark","blkarg_mark","assoc"]),$const_set($nesting[0],"Racc_debug_parser",!1),$def(self,"$_reduce_1",(function(val,_values,result){return this.current_arg_stack.$push(nil),this.max_numparam_stack.$push($hash2(["static"],{static:!0})),result}),3),$def(self,"$_reduce_2",(function(val,_values,result){return result=val["$[]"](1),this.current_arg_stack.$pop(),this.max_numparam_stack.$pop(),result}),3),$def(self,"$_reduce_3",(function(val,_values,result){return this.builder.$compstmt(val["$[]"](0))}),3),$def(self,"$_reduce_4",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_5",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_6",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_7",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_9",(function(val,_values,result){return $send(this.builder,"preexe",[val["$[]"](0)].concat($to_a(val["$[]"](1))))}),3),$def(self,"$_reduce_10",(function(val,_values,result){return val}),3),$def(self,"$_reduce_11",(function(val,_values,result){var $a,$b,else_,ensure_t,ensure_,rescue_bodies=nil,else_t=nil;return rescue_bodies=val["$[]"](1),$b=val["$[]"](2),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],$b=val["$[]"](3),ensure_t=null==($a=$to_ary($b))[0]?nil:$a[0],ensure_=null==$a[1]?nil:$a[1],$truthy(rescue_bodies["$empty?"]())&&$not(else_t["$nil?"]())&&this.$diagnostic("error","useless_else",nil,else_t),this.builder.$begin_body(val["$[]"](0),rescue_bodies,else_t,else_,ensure_t,ensure_)}),3),$def(self,"$_reduce_12",(function(val,_values,result){return this.builder.$compstmt(val["$[]"](0))}),3),$def(self,"$_reduce_13",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_14",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_15",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_16",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_18",(function(val,_values,result){return this.$diagnostic("error","begin_in_method",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_19",(function(val,_values,result){var $writer;return $writer=["expr_fname"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_20",(function(val,_values,result){return this.builder.$alias(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_21",(function(val,_values,result){return this.builder.$alias(val["$[]"](0),this.builder.$gvar(val["$[]"](1)),this.builder.$gvar(val["$[]"](2)))}),3),$def(self,"$_reduce_22",(function(val,_values,result){return this.builder.$alias(val["$[]"](0),this.builder.$gvar(val["$[]"](1)),this.builder.$back_ref(val["$[]"](2)))}),3),$def(self,"$_reduce_23",(function(val,_values,result){return this.$diagnostic("error","nth_ref_alias",nil,val["$[]"](2)),result}),3),$def(self,"$_reduce_24",(function(val,_values,result){return this.builder.$undef_method(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_25",(function(val,_values,result){return this.builder.$condition_mod(val["$[]"](0),nil,val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_26",(function(val,_values,result){return this.builder.$condition_mod(nil,val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_27",(function(val,_values,result){return this.builder.$loop_mod("while",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_28",(function(val,_values,result){return this.builder.$loop_mod("until",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_29",(function(val,_values,result){var rescue_body;return rescue_body=this.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2)),this.builder.$begin_body(val["$[]"](0),[rescue_body])}),3),$def(self,"$_reduce_30",(function(val,_values,result){return this.builder.$postexe(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_32",(function(val,_values,result){return this.builder.$multi_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_33",(function(val,_values,result){return this.builder.$assign(val["$[]"](0),val["$[]"](1),this.builder.$array(nil,val["$[]"](2),nil))}),3),$def(self,"$_reduce_34",(function(val,_values,result){var rescue_body,begin_body;return rescue_body=this.builder.$rescue_body(val["$[]"](3),nil,nil,nil,nil,val["$[]"](4)),begin_body=this.builder.$begin_body(val["$[]"](2),[rescue_body]),this.builder.$multi_assign(val["$[]"](0),val["$[]"](1),begin_body)}),3),$def(self,"$_reduce_35",(function(val,_values,result){return this.builder.$multi_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_37",(function(val,_values,result){return this.builder.$assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_38",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_39",(function(val,_values,result){return this.builder.$op_assign(this.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3)),val["$[]"](4),val["$[]"](5))}),3),$def(self,"$_reduce_40",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_41",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_42",(function(val,_values,result){var const$;return const$=this.builder.$const_op_assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))),this.builder.$op_assign(const$,val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_43",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_44",(function(val,_values,result){var $a,$b,$c,def_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==($c=$to_ary(null==$a[1]?nil:$a[1]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),result=this.builder.$def_endless_method(def_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_45",(function(val,_values,result){var $a,$b,$c,def_t,name_t,rescue_body,method_body,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==($c=$to_ary(null==$a[1]?nil:$a[1]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=this.builder.$def_endless_method(def_t,name_t,val["$[]"](1),val["$[]"](2),method_body),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_46",(function(val,_values,result){var $a,$b,$c,def_t,recv,dot_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],recv=null==$a[1]?nil:$a[1],dot_t=null==$a[2]?nil:$a[2],name_t=null==($c=$to_ary(null==$a[3]?nil:$a[3]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),result=this.builder.$def_endless_singleton(def_t,recv,dot_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_47",(function(val,_values,result){var $a,$b,$c,def_t,recv,dot_t,name_t,rescue_body,method_body,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],recv=null==$a[1]?nil:$a[1],dot_t=null==$a[2]?nil:$a[2],name_t=null==($c=$to_ary(null==$a[3]?nil:$a[3]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=this.builder.$def_endless_singleton(def_t,recv,dot_t,name_t,val["$[]"](1),val["$[]"](2),method_body),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_48",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2)),result}),3),$def(self,"$_reduce_50",(function(val,_values,result){var rescue_body;return rescue_body=this.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2)),this.builder.$begin_body(val["$[]"](0),[rescue_body])}),3),$def(self,"$_reduce_53",(function(val,_values,result){return this.builder.$logical_op("and",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_54",(function(val,_values,result){return this.builder.$logical_op("or",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_55",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),nil,val["$[]"](2),nil)}),3),$def(self,"$_reduce_56",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_57",(function(val,_values,result){var $writer=nil;return $writer=["expr_beg"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.lexer,"command_start=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.pattern_variables.$push(),result=this.context.$in_kwarg(),$writer=[!0],$send(this.context,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_58",(function(val,_values,result){var $writer;return this.pattern_variables.$pop(),$writer=[val["$[]"](2)],$send(this.context,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$match_pattern(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_59",(function(val,_values,result){var $writer=nil;return $writer=["expr_beg"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.lexer,"command_start=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.pattern_variables.$push(),result=this.context.$in_kwarg(),$writer=[!0],$send(this.context,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_60",(function(val,_values,result){var $writer;return this.pattern_variables.$pop(),$writer=[val["$[]"](2)],$send(this.context,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$match_pattern_p(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_63",(function(val,_values,result){return this.lexer.$cond().$push(!0),result}),3),$def(self,"$_reduce_64",(function(val,_values,result){return this.lexer.$cond().$pop(),[val["$[]"](1),val["$[]"](2)]}),3),$def(self,"$_reduce_65",(function(val,_values,result){var $writer;return this.$local_push(),this.current_arg_stack.$push(nil),result=[val["$[]"](0),this.context.$dup()],$writer=[!0],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_66",(function(val,_values,result){return[val["$[]"](0),val["$[]"](1)]}),3),$def(self,"$_reduce_67",(function(val,_values,result){var $writer=nil;return $writer=["expr_fname"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_68",(function(val,_values,result){return[val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](4)]}),3),$def(self,"$_reduce_72",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil)}),3),$def(self,"$_reduce_73",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_74",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_block()],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)])}),3),$def(self,"$_reduce_76",(function(val,_values,result){return this.builder.$call_method(nil,nil,val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_77",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(nil,nil,val["$[]"](0),nil,val["$[]"](1),nil),$b=val["$[]"](2),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_78",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil)}),3),$def(self,"$_reduce_79",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_80",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil)}),3),$def(self,"$_reduce_81",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_82",(function(val,_values,result){return this.builder.$keyword_cmd("super",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_83",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_84",(function(val,_values,result){return this.builder.$keyword_cmd("return",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_85",(function(val,_values,result){return this.builder.$keyword_cmd("break",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_86",(function(val,_values,result){return this.builder.$keyword_cmd("next",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_87",(function(val,_values,result){return this.builder.$multi_lhs(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_88",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_89",(function(val,_values,result){return this.builder.$multi_lhs(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_90",(function(val,_values,result){return this.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_92",(function(val,_values,result){return val["$[]"](0).$push(val["$[]"](1))}),3),$def(self,"$_reduce_93",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1),val["$[]"](2)))}),3),$def(self,"$_reduce_94",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1),val["$[]"](2))).$concat(val["$[]"](4))}),3),$def(self,"$_reduce_95",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1)))}),3),$def(self,"$_reduce_96",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1))).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_97",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_98",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))].concat($to_a(val["$[]"](3)))}),3),$def(self,"$_reduce_99",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0))]}),3),$def(self,"$_reduce_100",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0))].concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_102",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_103",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_104",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_105",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_106",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_107",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_108",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_109",(function(val,_values,result){return this.builder.$index_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_110",(function(val,_values,result){return $eqeq(val["$[]"](1)["$[]"](0),"anddot")&&this.$diagnostic("error","csend_in_lhs_of_masgn",nil,val["$[]"](1)),this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_111",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_112",(function(val,_values,result){return $eqeq(val["$[]"](1)["$[]"](0),"anddot")&&this.$diagnostic("error","csend_in_lhs_of_masgn",nil,val["$[]"](1)),this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_113",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2)))}),3),$def(self,"$_reduce_114",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_global(val["$[]"](0),val["$[]"](1)))}),3),$def(self,"$_reduce_115",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_116",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_117",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_118",(function(val,_values,result){return this.builder.$index_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_119",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_120",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_121",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_122",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2)))}),3),$def(self,"$_reduce_123",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_global(val["$[]"](0),val["$[]"](1)))}),3),$def(self,"$_reduce_124",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_125",(function(val,_values,result){return this.$diagnostic("error","module_name_const",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_127",(function(val,_values,result){return this.builder.$const_global(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_128",(function(val,_values,result){return this.builder.$const(val["$[]"](0))}),3),$def(self,"$_reduce_129",(function(val,_values,result){return this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_135",(function(val,_values,result){return this.builder.$symbol_internal(val["$[]"](0))}),3),$def(self,"$_reduce_137",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_138",(function(val,_values,result){var $writer;return $writer=["expr_fname"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_139",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](3))}),3),$def(self,"$_reduce_211",(function(val,_values,result){return this.builder.$assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_212",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_213",(function(val,_values,result){return this.builder.$op_assign(this.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3)),val["$[]"](4),val["$[]"](5))}),3),$def(self,"$_reduce_214",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_215",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_216",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_217",(function(val,_values,result){var const$;return const$=this.builder.$const_op_assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))),this.builder.$op_assign(const$,val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_218",(function(val,_values,result){var const$;return const$=this.builder.$const_op_assignable(this.builder.$const_global(val["$[]"](0),val["$[]"](1))),this.builder.$op_assign(const$,val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_219",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_220",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_221",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_222",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_223",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_224",(function(val,_values,result){return this.builder.$range_inclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_225",(function(val,_values,result){return this.builder.$range_exclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_226",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_227",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_228",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_229",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_230",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_231",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_232",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),this.builder.$binary_op(val["$[]"](1),val["$[]"](2),val["$[]"](3)))}),3),$def(self,"$_reduce_233",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_234",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_235",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_236",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_237",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_238",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_240",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_241",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_242",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_243",(function(val,_values,result){return this.builder.$match_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_244",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_245",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_246",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_247",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_248",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_249",(function(val,_values,result){return this.builder.$logical_op("and",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_250",(function(val,_values,result){return this.builder.$logical_op("or",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_251",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_defined=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_252",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_defined=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$keyword_cmd("defined?",val["$[]"](0),nil,[val["$[]"](3)],nil)}),3),$def(self,"$_reduce_253",(function(val,_values,result){return this.builder.$ternary(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](4),val["$[]"](5))}),3),$def(self,"$_reduce_254",(function(val,_values,result){var $a,$b,$c,def_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==($c=$to_ary(null==$a[1]?nil:$a[1]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),result=this.builder.$def_endless_method(def_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_255",(function(val,_values,result){var $a,$b,$c,def_t,name_t,rescue_body,method_body,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==($c=$to_ary(null==$a[1]?nil:$a[1]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=this.builder.$def_endless_method(def_t,name_t,val["$[]"](1),val["$[]"](2),method_body),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_256",(function(val,_values,result){var $a,$b,$c,def_t,recv,dot_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],recv=null==$a[1]?nil:$a[1],dot_t=null==$a[2]?nil:$a[2],name_t=null==($c=$to_ary(null==$a[3]?nil:$a[3]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),result=this.builder.$def_endless_singleton(def_t,recv,dot_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_257",(function(val,_values,result){var $a,$b,$c,def_t,recv,dot_t,name_t,rescue_body,method_body,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],recv=null==$a[1]?nil:$a[1],dot_t=null==$a[2]?nil:$a[2],name_t=null==($c=$to_ary(null==$a[3]?nil:$a[3]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=this.builder.$def_endless_singleton(def_t,recv,dot_t,name_t,val["$[]"](1),val["$[]"](2),method_body),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_263",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_264",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_268",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$associate(nil,val["$[]"](2),nil))}),3),$def(self,"$_reduce_269",(function(val,_values,result){return[this.builder.$associate(nil,val["$[]"](0),nil)]}),3),$def(self,"$_reduce_271",(function(val,_values,result){var rescue_body;return rescue_body=this.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2)),this.builder.$begin_body(val["$[]"](0),[rescue_body])}),3),$def(self,"$_reduce_272",(function(val,_values,result){return val}),3),$def(self,"$_reduce_273",(function(val,_values,result){return $truthy(this.static_env["$declared_forward_args?"]())||this.$diagnostic("error","unexpected_token",$hash2(["token"],{token:"tBDOT3"}),val["$[]"](3)),[val["$[]"](0),[].concat($to_a(val["$[]"](1))).concat([this.builder.$forwarded_args(val["$[]"](3))]),val["$[]"](4)]}),3),$def(self,"$_reduce_274",(function(val,_values,result){return $truthy(this.static_env["$declared_forward_args?"]())||this.$diagnostic("error","unexpected_token",$hash2(["token"],{token:"tBDOT3"}),val["$[]"](1)),[val["$[]"](0),[this.builder.$forwarded_args(val["$[]"](1))],val["$[]"](2)]}),3),$def(self,"$_reduce_275",(function(val,_values,result){return[nil,[],nil]}),3),$def(self,"$_reduce_277",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_280",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$associate(nil,val["$[]"](2),nil))}),3),$def(self,"$_reduce_281",(function(val,_values,result){return[this.builder.$associate(nil,val["$[]"](0),nil)]}),3),$def(self,"$_reduce_282",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_283",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_284",(function(val,_values,result){return(result=[this.builder.$associate(nil,val["$[]"](0),nil)]).$concat(val["$[]"](1)),result}),3),$def(self,"$_reduce_285",(function(val,_values,result){var assocs;return assocs=this.builder.$associate(nil,val["$[]"](2),nil),(result=val["$[]"](0)["$<<"](assocs)).$concat(val["$[]"](3)),result}),3),$def(self,"$_reduce_286",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_287",(function(val,_values,result){var lookahead,$ret_or_1,last_token=nil,top=nil;return last_token=this.last_token["$[]"](0),lookahead=$truthy($ret_or_1=last_token["$=="]("tLBRACK"))?$ret_or_1:last_token["$=="]("tLPAREN_ARG"),$truthy(lookahead)?(top=this.lexer.$cmdarg().$pop(),this.lexer.$cmdarg().$push(!0),this.lexer.$cmdarg().$push(top)):this.lexer.$cmdarg().$push(!0),result}),3),$def(self,"$_reduce_288",(function(val,_values,result){var lookahead,top=nil;return lookahead=this.last_token["$[]"](0)["$=="]("tLBRACE_ARG"),$truthy(lookahead)?(top=this.lexer.$cmdarg().$pop(),this.lexer.$cmdarg().$pop(),this.lexer.$cmdarg().$push(top)):this.lexer.$cmdarg().$pop(),val["$[]"](1)}),3),$def(self,"$_reduce_289",(function(val,_values,result){return this.builder.$block_pass(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_290",(function(val,_values,result){return $not(this.static_env["$declared_anonymous_blockarg?"]())&&this.$diagnostic("error","no_anonymous_blockarg",nil,val["$[]"](0)),this.builder.$block_pass(val["$[]"](0),nil)}),3),$def(self,"$_reduce_291",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_292",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_293",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_294",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_295",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_296",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$splat(val["$[]"](2),val["$[]"](3)))}),3),$def(self,"$_reduce_297",(function(val,_values,result){return this.builder.$array(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_299",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_300",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$splat(val["$[]"](2),val["$[]"](3)))}),3),$def(self,"$_reduce_301",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_312",(function(val,_values,result){return this.builder.$call_method(nil,nil,val["$[]"](0))}),3),$def(self,"$_reduce_313",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),result}),3),$def(self,"$_reduce_314",(function(val,_values,result){return this.lexer.$cmdarg().$pop(),this.builder.$begin_keyword(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_315",(function(val,_values,result){var $writer;return $writer=["expr_endarg"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_316",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_317",(function(val,_values,result){var $writer;return $writer=["expr_endarg"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_318",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),nil,val["$[]"](3))}),3),$def(self,"$_reduce_319",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_320",(function(val,_values,result){return this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_321",(function(val,_values,result){return this.builder.$const_global(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_322",(function(val,_values,result){return this.builder.$array(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_323",(function(val,_values,result){return this.builder.$associate(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_324",(function(val,_values,result){return this.builder.$keyword_cmd("return",val["$[]"](0))}),3),$def(self,"$_reduce_325",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_326",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0),val["$[]"](1),[],val["$[]"](2))}),3),$def(self,"$_reduce_327",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0))}),3),$def(self,"$_reduce_328",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_defined=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_329",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_defined=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$keyword_cmd("defined?",val["$[]"](0),val["$[]"](2),[val["$[]"](4)],val["$[]"](5))}),3),$def(self,"$_reduce_330",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_331",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),val["$[]"](1),nil,val["$[]"](2))}),3),$def(self,"$_reduce_332",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(nil,nil,val["$[]"](0)),$b=val["$[]"](1),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_334",(function(val,_values,result){var $a,$b,begin_t,args,body,end_t;return $b=val["$[]"](1),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(val["$[]"](0),begin_t,args,body,end_t)}),3),$def(self,"$_reduce_336",(function(val,_values,result){var $a,$b,else_t,else_;return $b=val["$[]"](4),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],this.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3),else_t,else_,val["$[]"](5))}),3),$def(self,"$_reduce_337",(function(val,_values,result){var $a,$b,else_t,else_;return $b=val["$[]"](4),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],this.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),else_,else_t,val["$[]"](3),val["$[]"](5))}),3),$def(self,"$_reduce_338",(function(val,_values,result){return $send(this.builder,"loop",["while",val["$[]"](0)].concat($to_a(val["$[]"](1))).concat([val["$[]"](2),val["$[]"](3)]))}),3),$def(self,"$_reduce_339",(function(val,_values,result){return $send(this.builder,"loop",["until",val["$[]"](0)].concat($to_a(val["$[]"](1))).concat([val["$[]"](2),val["$[]"](3)]))}),3),$def(self,"$_reduce_340",(function(val,_values,result){var $a,$b,$c,when_bodies,else_t,else_body;return $b=($b=($a=[].concat($to_a(val["$[]"](3)))).length-1)<0?0:$b,when_bodies=$slice.call($a,0,$b),else_t=null==($c=$to_ary(null==$a[$b]?nil:$a[$b]))[0]?nil:$c[0],else_body=null==$c[1]?nil:$c[1],this.builder.$case(val["$[]"](0),val["$[]"](1),when_bodies,else_t,else_body,val["$[]"](4))}),3),$def(self,"$_reduce_341",(function(val,_values,result){var $a,$b,$c,when_bodies,else_t,else_body;return $b=($b=($a=[].concat($to_a(val["$[]"](2)))).length-1)<0?0:$b,when_bodies=$slice.call($a,0,$b),else_t=null==($c=$to_ary(null==$a[$b]?nil:$a[$b]))[0]?nil:$c[0],else_body=null==$c[1]?nil:$c[1],this.builder.$case(val["$[]"](0),nil,when_bodies,else_t,else_body,val["$[]"](3))}),3),$def(self,"$_reduce_342",(function(val,_values,result){var $a,$b,$c,in_bodies,else_t,else_body;return $b=($b=($a=[].concat($to_a(val["$[]"](3)))).length-1)<0?0:$b,in_bodies=$slice.call($a,0,$b),else_t=null==($c=$to_ary(null==$a[$b]?nil:$a[$b]))[0]?nil:$c[0],else_body=null==$c[1]?nil:$c[1],this.builder.$case_match(val["$[]"](0),val["$[]"](1),in_bodies,else_t,else_body,val["$[]"](4))}),3),$def(self,"$_reduce_343",(function(val,_values,result){return $send(this.builder,"for",[val["$[]"](0),val["$[]"](1),val["$[]"](2)].concat($to_a(val["$[]"](3))).concat([val["$[]"](4),val["$[]"](5)]))}),3),$def(self,"$_reduce_344",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_class=",$to_a($writer)),$rb_minus($writer.length,1),this.$local_push(),result}),3),$def(self,"$_reduce_345",(function(val,_values,result){var $a,$b,k_class,lt_t,superclass,$writer,ctx=nil;return $b=val["$[]"](0),k_class=null==($a=$to_ary($b))[0]?nil:$a[0],ctx=null==$a[1]?nil:$a[1],$truthy(this.context.$in_def())&&this.$diagnostic("error","class_in_def",nil,k_class),$b=val["$[]"](2),lt_t=null==($a=$to_ary($b))[0]?nil:$a[0],superclass=null==$a[1]?nil:$a[1],result=this.builder.$def_class(k_class,val["$[]"](1),lt_t,superclass,val["$[]"](4),val["$[]"](5)),this.$local_pop(),$writer=[ctx.$in_class()],$send(this.context,"in_class=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_346",(function(val,_values,result){var $writer=nil;return $writer=[!1],$send(this.context,"in_def=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.context,"in_class=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$local_push(),result}),3),$def(self,"$_reduce_347",(function(val,_values,result){var $a,$b,k_class,ctx=nil,$writer=nil;return $b=val["$[]"](0),k_class=null==($a=$to_ary($b))[0]?nil:$a[0],ctx=null==$a[1]?nil:$a[1],result=this.builder.$def_sclass(k_class,val["$[]"](1),val["$[]"](2),val["$[]"](5),val["$[]"](6)),this.$local_pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[ctx.$in_class()],$send(this.context,"in_class=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_348",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_class=",$to_a($writer)),$rb_minus($writer.length,1),this.$local_push(),result}),3),$def(self,"$_reduce_349",(function(val,_values,result){var $a,$b,k_mod,$writer,ctx=nil;return $b=val["$[]"](0),k_mod=null==($a=$to_ary($b))[0]?nil:$a[0],ctx=null==$a[1]?nil:$a[1],$truthy(this.context.$in_def())&&this.$diagnostic("error","module_in_def",nil,k_mod),result=this.builder.$def_module(k_mod,val["$[]"](1),val["$[]"](3),val["$[]"](4)),this.$local_pop(),$writer=[ctx.$in_class()],$send(this.context,"in_class=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_350",(function(val,_values,result){var $a,$b,$c,def_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==($c=$to_ary(null==$a[1]?nil:$a[1]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],result=this.builder.$def_method(def_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_351",(function(val,_values,result){var $a,$b,$c,def_t,recv,dot_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],recv=null==$a[1]?nil:$a[1],dot_t=null==$a[2]?nil:$a[2],name_t=null==($c=$to_ary(null==$a[3]?nil:$a[3]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],result=this.builder.$def_singleton(def_t,recv,dot_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_352",(function(val,_values,result){return this.builder.$keyword_cmd("break",val["$[]"](0))}),3),$def(self,"$_reduce_353",(function(val,_values,result){return this.builder.$keyword_cmd("next",val["$[]"](0))}),3),$def(self,"$_reduce_354",(function(val,_values,result){return this.builder.$keyword_cmd("redo",val["$[]"](0))}),3),$def(self,"$_reduce_355",(function(val,_values,result){return this.builder.$keyword_cmd("retry",val["$[]"](0))}),3),$def(self,"$_reduce_357",(function(val,_values,result){return[val["$[]"](0),this.context.$dup()]}),3),$def(self,"$_reduce_358",(function(val,_values,result){return[val["$[]"](0),this.context.$dup()]}),3),$def(self,"$_reduce_359",(function(val,_values,result){var $writer;return result=val["$[]"](0),$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_360",(function(val,_values,result){var $ret_or_1=nil;return $truthy(this.context.$in_class())&&$not(this.context.$in_def())&&$not($truthy($ret_or_1=this.$context().$in_block())?$ret_or_1:this.$context().$in_lambda())&&this.$diagnostic("error","invalid_return",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_363",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_367",(function(val,_values,result){var $a,$b,else_t,else_;return $b=val["$[]"](4),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],[val["$[]"](0),this.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3),else_t,else_,nil)]}),3),$def(self,"$_reduce_369",(function(val,_values,result){return val}),3),$def(self,"$_reduce_372",(function(val,_values,result){return this.builder.$arg(val["$[]"](0))}),3),$def(self,"$_reduce_373",(function(val,_values,result){return this.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_374",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_375",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_377",(function(val,_values,result){return val["$[]"](0).$push(val["$[]"](2))}),3),$def(self,"$_reduce_378",(function(val,_values,result){return val["$[]"](0).$push(val["$[]"](2)).$concat(val["$[]"](4))}),3),$def(self,"$_reduce_379",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_380",(function(val,_values,result){return[val["$[]"](0)].concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_381",(function(val,_values,result){return this.builder.$restarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_382",(function(val,_values,result){return this.builder.$restarg(val["$[]"](0))}),3),$def(self,"$_reduce_385",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_386",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_387",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_388",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_389",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_390",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_391",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_392",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_394",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_395",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](6)).$concat(val["$[]"](7))}),3),$def(self,"$_reduce_396",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_397",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_398",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_400",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_401",(function(val,_values,result){return $truthy(val["$[]"](1)["$empty?"]())&&$eqeq(val["$[]"](0).$size(),1)?[this.builder.$procarg0(val["$[]"](0)["$[]"](0))]:val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_402",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_403",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_404",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_405",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_406",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_407",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_409",(function(val,_values,result){return this.builder.$args(nil,[],nil)}),3),$def(self,"$_reduce_410",(function(val,_values,result){var $writer;return $writer=["expr_value"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_411",(function(val,_values,result){var $writer;return this.max_numparam_stack["$has_ordinary_params!"](),this.current_arg_stack.$set(nil),$writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$args(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_412",(function(val,_values,result){var $writer;return this.max_numparam_stack["$has_ordinary_params!"](),this.current_arg_stack.$set(nil),$writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$args(val["$[]"](0),val["$[]"](1).$concat(val["$[]"](2)),val["$[]"](3))}),3),$def(self,"$_reduce_413",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_414",(function(val,_values,result){return val["$[]"](2)}),3),$def(self,"$_reduce_415",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_416",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_417",(function(val,_values,result){return this.static_env.$declare(val["$[]"](0)["$[]"](0)),this.builder.$shadowarg(val["$[]"](0))}),3),$def(self,"$_reduce_419",(function(val,_values,result){var $writer;return this.static_env.$extend_dynamic(),this.max_numparam_stack.$push($hash2(["static"],{static:!1})),result=this.context.$dup(),$writer=[!0],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_420",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),result}),3),$def(self,"$_reduce_421",(function(val,_values,result){var $a,$b,lambda_call,args,begin_t,body,end_t,$writer;return lambda_call=this.builder.$call_lambda(val["$[]"](0)),args=$truthy(this.max_numparam_stack["$has_numparams?"]())?this.builder.$numargs(this.max_numparam_stack.$top()):val["$[]"](2),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],body=null==$a[1]?nil:$a[1],end_t=null==$a[2]?nil:$a[2],this.max_numparam_stack.$pop(),this.static_env.$unextend(),this.lexer.$cmdarg().$pop(),$writer=[val["$[]"](1).$in_lambda()],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$block(lambda_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_422",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.max_numparam_stack["$has_ordinary_params!"](),this.builder.$args(val["$[]"](0),val["$[]"](1).$concat(val["$[]"](2)),val["$[]"](3))}),3),$def(self,"$_reduce_423",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),$truthy(val["$[]"](0)["$any?"]())&&this.max_numparam_stack["$has_ordinary_params!"](),this.builder.$args(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_424",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_425",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_lambda()],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0),val["$[]"](2),val["$[]"](3)]}),3),$def(self,"$_reduce_426",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_427",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_lambda()],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0),val["$[]"](2),val["$[]"](3)]}),3),$def(self,"$_reduce_428",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_429",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_block()],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)])}),3),$def(self,"$_reduce_430",(function(val,_values,result){var $a,$b,begin_t,block_args,body,end_t;return $b=val["$[]"](1),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],block_args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(val["$[]"](0),begin_t,block_args,body,end_t)}),3),$def(self,"$_reduce_431",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_432",(function(val,_values,result){var $a,$b,lparen_t,rparen_t,method_call,begin_t,body,end_t,args=nil;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_433",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_434",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](1),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(nil,nil,val["$[]"](0),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_435",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_436",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_437",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_438",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](2),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),nil,lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_439",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](2),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),nil,lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_440",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](1),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$keyword_cmd("super",val["$[]"](0),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_441",(function(val,_values,result){return this.builder.$keyword_cmd("zsuper",val["$[]"](0))}),3),$def(self,"$_reduce_442",(function(val,_values,result){return this.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_443",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_444",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_block()],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)])}),3),$def(self,"$_reduce_445",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_446",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_block()],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)])}),3),$def(self,"$_reduce_447",(function(val,_values,result){return this.static_env.$extend_dynamic(),this.max_numparam_stack.$push($hash2(["static"],{static:!1})),result}),3),$def(self,"$_reduce_448",(function(val,_values,result){return result=[$truthy(this.max_numparam_stack["$has_numparams?"]())?this.builder.$numargs(this.max_numparam_stack.$top()):val["$[]"](1),val["$[]"](2)],this.max_numparam_stack.$pop(),this.static_env.$unextend(),result}),3),$def(self,"$_reduce_449",(function(val,_values,result){return this.static_env.$extend_dynamic(),this.max_numparam_stack.$push($hash2(["static"],{static:!1})),result}),3),$def(self,"$_reduce_450",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),result}),3),$def(self,"$_reduce_451",(function(val,_values,result){return result=[$truthy(this.max_numparam_stack["$has_numparams?"]())?this.builder.$numargs(this.max_numparam_stack.$top()):val["$[]"](2),val["$[]"](3)],this.max_numparam_stack.$pop(),this.static_env.$unextend(),this.lexer.$cmdarg().$pop(),result}),3),$def(self,"$_reduce_452",(function(val,_values,result){return[this.builder.$when(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))].concat($to_a(val["$[]"](4)))}),3),$def(self,"$_reduce_453",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_455",(function(val,_values,result){var $writer=nil;return $writer=["expr_beg"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.lexer,"command_start=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.pattern_variables.$push(),this.pattern_hash_keys.$push(),result=this.context.$in_kwarg(),$writer=[!0],$send(this.context,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_456",(function(val,_values,result){var $writer;return this.pattern_variables.$pop(),this.pattern_hash_keys.$pop(),$writer=[val["$[]"](1)],$send(this.context,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_457",(function(val,_values,result){return[$send(this.builder,"in_pattern",[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3),val["$[]"](5)]))].concat($to_a(val["$[]"](6)))}),3),$def(self,"$_reduce_458",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_460",(function(val,_values,result){return[val["$[]"](0),nil]}),3),$def(self,"$_reduce_461",(function(val,_values,result){return[val["$[]"](0),this.builder.$if_guard(val["$[]"](1),val["$[]"](2))]}),3),$def(self,"$_reduce_462",(function(val,_values,result){return[val["$[]"](0),this.builder.$unless_guard(val["$[]"](1),val["$[]"](2))]}),3),$def(self,"$_reduce_464",(function(val,_values,result){var item;return item=this.builder.$match_with_trailing_comma(val["$[]"](0),val["$[]"](1)),this.builder.$array_pattern(nil,[item],nil)}),3),$def(self,"$_reduce_465",(function(val,_values,result){return this.builder.$array_pattern(nil,[val["$[]"](0)].$concat(val["$[]"](2)),nil)}),3),$def(self,"$_reduce_466",(function(val,_values,result){return this.builder.$find_pattern(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_467",(function(val,_values,result){return this.builder.$array_pattern(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_468",(function(val,_values,result){return this.builder.$hash_pattern(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_470",(function(val,_values,result){return this.builder.$match_as(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_472",(function(val,_values,result){return this.builder.$match_alt(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_474",(function(val,_values,result){return result=val["$[]"](0),this.pattern_hash_keys.$push(),result}),3),$def(self,"$_reduce_475",(function(val,_values,result){return result=val["$[]"](0),this.pattern_hash_keys.$push(),result}),3),$def(self,"$_reduce_478",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$array_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_479",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$find_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_480",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$hash_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_481",(function(val,_values,result){var pattern;return pattern=this.builder.$array_pattern(val["$[]"](1),nil,val["$[]"](2)),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](2))}),3),$def(self,"$_reduce_482",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$array_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_483",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$find_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_484",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$hash_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_485",(function(val,_values,result){var pattern;return pattern=this.builder.$array_pattern(val["$[]"](1),nil,val["$[]"](2)),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](2))}),3),$def(self,"$_reduce_486",(function(val,_values,result){return this.builder.$array_pattern(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_487",(function(val,_values,result){return this.builder.$find_pattern(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_488",(function(val,_values,result){return this.builder.$array_pattern(val["$[]"](0),[],val["$[]"](1))}),3),$def(self,"$_reduce_489",(function(val,_values,result){var $writer;return this.pattern_hash_keys.$push(),result=this.context.$in_kwarg(),$writer=[!1],$send(this.context,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_490",(function(val,_values,result){var $writer;return this.pattern_hash_keys.$pop(),$writer=[val["$[]"](1)],$send(this.context,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$hash_pattern(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_491",(function(val,_values,result){return this.builder.$hash_pattern(val["$[]"](0),[],val["$[]"](1))}),3),$def(self,"$_reduce_492",(function(val,_values,result){return this.pattern_hash_keys.$push(),result}),3),$def(self,"$_reduce_493",(function(val,_values,result){return this.pattern_hash_keys.$pop(),this.builder.$begin(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_494",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_495",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_496",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([val["$[]"](1)])}),3),$def(self,"$_reduce_497",(function(val,_values,result){var match_rest;return match_rest=this.builder.$match_rest(val["$[]"](1),val["$[]"](2)),[].concat($to_a(val["$[]"](0))).concat([match_rest])}),3),$def(self,"$_reduce_498",(function(val,_values,result){var match_rest;return match_rest=this.builder.$match_rest(val["$[]"](1),val["$[]"](2)),[].concat($to_a(val["$[]"](0))).concat([match_rest]).concat($to_a(val["$[]"](4)))}),3),$def(self,"$_reduce_499",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([this.builder.$match_rest(val["$[]"](1))])}),3),$def(self,"$_reduce_500",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([this.builder.$match_rest(val["$[]"](1))]).concat($to_a(val["$[]"](3)))}),3),$def(self,"$_reduce_502",(function(val,_values,result){return[this.builder.$match_with_trailing_comma(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_503",(function(val,_values,result){var last_item;return last_item=this.builder.$match_with_trailing_comma(val["$[]"](1),val["$[]"](2)),[].concat($to_a(val["$[]"](0))).concat([last_item])}),3),$def(self,"$_reduce_504",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_505",(function(val,_values,result){return[val["$[]"](0)].concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_506",(function(val,_values,result){return[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](4)])}),3),$def(self,"$_reduce_507",(function(val,_values,result){return this.builder.$match_rest(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_508",(function(val,_values,result){return this.builder.$match_rest(val["$[]"](0))}),3),$def(self,"$_reduce_509",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_510",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([val["$[]"](2)])}),3),$def(self,"$_reduce_512",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_513",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_514",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_515",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_516",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_517",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([val["$[]"](2)])}),3),$def(self,"$_reduce_518",(function(val,_values,result){return $send(this.builder,"match_pair",$to_a(val["$[]"](0)).concat([val["$[]"](1)]))}),3),$def(self,"$_reduce_519",(function(val,_values,result){return $send(this.builder,"match_label",$to_a(val["$[]"](0)))}),3),$def(self,"$_reduce_520",(function(val,_values,result){return["label",val["$[]"](0)]}),3),$def(self,"$_reduce_521",(function(val,_values,result){return["quoted",[val["$[]"](0),val["$[]"](1),val["$[]"](2)]]}),3),$def(self,"$_reduce_522",(function(val,_values,result){return[this.builder.$match_rest(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_523",(function(val,_values,result){return[this.builder.$match_rest(val["$[]"](0),nil)]}),3),$def(self,"$_reduce_524",(function(val,_values,result){return[this.builder.$match_nil_pattern(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_528",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_529",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_530",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_531",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_535",(function(val,_values,result){return this.builder.$range_inclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_536",(function(val,_values,result){return this.builder.$range_exclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_545",(function(val,_values,result){return this.builder.$accessible(val["$[]"](0))}),3),$def(self,"$_reduce_547",(function(val,_values,result){return this.builder.$assignable(this.builder.$match_var(val["$[]"](0)))}),3),$def(self,"$_reduce_548",(function(val,_values,result){var name,lvar;return name=val["$[]"](1)["$[]"](0),$truthy(this.$static_env()["$declared?"](name))||this.$diagnostic("error","undefined_lvar",$hash2(["name"],{name:name}),val["$[]"](1)),lvar=this.builder.$accessible(this.builder.$ident(val["$[]"](1))),this.builder.$pin(val["$[]"](0),lvar)}),3),$def(self,"$_reduce_549",(function(val,_values,result){var non_lvar;return non_lvar=this.builder.$accessible(val["$[]"](1)),this.builder.$pin(val["$[]"](0),non_lvar)}),3),$def(self,"$_reduce_550",(function(val,_values,result){var expr;return expr=this.builder.$begin(val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.builder.$pin(val["$[]"](0),expr)}),3),$def(self,"$_reduce_551",(function(val,_values,result){return this.builder.$const_global(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_552",(function(val,_values,result){return this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_553",(function(val,_values,result){return this.builder.$const(val["$[]"](0))}),3),$def(self,"$_reduce_554",(function(val,_values,result){var $a,$b,assoc_t,exc_var,exc_list=nil;return $b=val["$[]"](2),assoc_t=null==($a=$to_ary($b))[0]?nil:$a[0],exc_var=null==$a[1]?nil:$a[1],$truthy(val["$[]"](1))&&(exc_list=this.builder.$array(nil,val["$[]"](1),nil)),[this.builder.$rescue_body(val["$[]"](0),exc_list,assoc_t,exc_var,val["$[]"](3),val["$[]"](4))].concat($to_a(val["$[]"](5)))}),3),$def(self,"$_reduce_555",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_556",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_559",(function(val,_values,result){return[val["$[]"](0),val["$[]"](1)]}),3),$def(self,"$_reduce_561",(function(val,_values,result){return[val["$[]"](0),val["$[]"](1)]}),3),$def(self,"$_reduce_565",(function(val,_values,result){return this.builder.$string_compose(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_566",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_567",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_568",(function(val,_values,result){var string;return string=this.builder.$string_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2)),this.builder.$dedent_string(string,this.lexer.$dedent_level())}),3),$def(self,"$_reduce_569",(function(val,_values,result){var string;return string=this.builder.$string(val["$[]"](0)),this.builder.$dedent_string(string,this.lexer.$dedent_level())}),3),$def(self,"$_reduce_570",(function(val,_values,result){return this.builder.$character(val["$[]"](0))}),3),$def(self,"$_reduce_571",(function(val,_values,result){var string;return string=this.builder.$xstring_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2)),this.builder.$dedent_string(string,this.lexer.$dedent_level())}),3),$def(self,"$_reduce_572",(function(val,_values,result){var opts;return opts=this.builder.$regexp_options(val["$[]"](3)),this.builder.$regexp_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2),opts)}),3),$def(self,"$_reduce_573",(function(val,_values,result){return this.builder.$words_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_574",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_575",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$word(val["$[]"](1)))}),3),$def(self,"$_reduce_576",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_577",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_578",(function(val,_values,result){return this.builder.$symbols_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_579",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_580",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$word(val["$[]"](1)))}),3),$def(self,"$_reduce_581",(function(val,_values,result){return this.builder.$words_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_582",(function(val,_values,result){return this.builder.$symbols_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_583",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_584",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$string_internal(val["$[]"](1)))}),3),$def(self,"$_reduce_585",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_586",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$symbol_internal(val["$[]"](1)))}),3),$def(self,"$_reduce_587",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_588",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_589",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_590",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_591",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_592",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_593",(function(val,_values,result){return this.builder.$string_internal(val["$[]"](0))}),3),$def(self,"$_reduce_594",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_595",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),this.lexer.$cond().$push(!1),result}),3),$def(self,"$_reduce_596",(function(val,_values,result){return this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.builder.$begin(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_597",(function(val,_values,result){return this.builder.$gvar(val["$[]"](0))}),3),$def(self,"$_reduce_598",(function(val,_values,result){return this.builder.$ivar(val["$[]"](0))}),3),$def(self,"$_reduce_599",(function(val,_values,result){return this.builder.$cvar(val["$[]"](0))}),3),$def(self,"$_reduce_603",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$symbol(val["$[]"](0))}),3),$def(self,"$_reduce_604",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$symbol_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_605",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_606",(function(val,_values,result){return $truthy(this.builder["$respond_to?"]("negate"))?this.builder.$negate(val["$[]"](0),val["$[]"](1)):this.builder.$unary_num(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_607",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$integer(val["$[]"](0))}),3),$def(self,"$_reduce_608",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$float(val["$[]"](0))}),3),$def(self,"$_reduce_609",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$rational(val["$[]"](0))}),3),$def(self,"$_reduce_610",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$complex(val["$[]"](0))}),3),$def(self,"$_reduce_611",(function(val,_values,result){return this.builder.$ivar(val["$[]"](0))}),3),$def(self,"$_reduce_612",(function(val,_values,result){return this.builder.$gvar(val["$[]"](0))}),3),$def(self,"$_reduce_613",(function(val,_values,result){return this.builder.$cvar(val["$[]"](0))}),3),$def(self,"$_reduce_614",(function(val,_values,result){return this.builder.$ident(val["$[]"](0))}),3),$def(self,"$_reduce_615",(function(val,_values,result){return this.builder.$ivar(val["$[]"](0))}),3),$def(self,"$_reduce_616",(function(val,_values,result){return this.builder.$gvar(val["$[]"](0))}),3),$def(self,"$_reduce_617",(function(val,_values,result){return this.builder.$const(val["$[]"](0))}),3),$def(self,"$_reduce_618",(function(val,_values,result){return this.builder.$cvar(val["$[]"](0))}),3),$def(self,"$_reduce_619",(function(val,_values,result){return this.builder.$nil(val["$[]"](0))}),3),$def(self,"$_reduce_620",(function(val,_values,result){return this.builder.$self(val["$[]"](0))}),3),$def(self,"$_reduce_621",(function(val,_values,result){return this.builder.$true(val["$[]"](0))}),3),$def(self,"$_reduce_622",(function(val,_values,result){return this.builder.$false(val["$[]"](0))}),3),$def(self,"$_reduce_623",(function(val,_values,result){return this.builder.$__FILE__(val["$[]"](0))}),3),$def(self,"$_reduce_624",(function(val,_values,result){return this.builder.$__LINE__(val["$[]"](0))}),3),$def(self,"$_reduce_625",(function(val,_values,result){return this.builder.$__ENCODING__(val["$[]"](0))}),3),$def(self,"$_reduce_626",(function(val,_values,result){return this.builder.$accessible(val["$[]"](0))}),3),$def(self,"$_reduce_627",(function(val,_values,result){return this.builder.$accessible(val["$[]"](0))}),3),$def(self,"$_reduce_628",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_629",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_630",(function(val,_values,result){return this.builder.$nth_ref(val["$[]"](0))}),3),$def(self,"$_reduce_631",(function(val,_values,result){return this.builder.$back_ref(val["$[]"](0))}),3),$def(self,"$_reduce_632",(function(val,_values,result){var $writer;return $writer=["expr_value"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_633",(function(val,_values,result){return[val["$[]"](0),val["$[]"](2)]}),3),$def(self,"$_reduce_634",(function(val,_values,result){return nil}),3),$def(self,"$_reduce_636",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$args(nil,[],nil)}),3),$def(self,"$_reduce_637",(function(val,_values,result){var $writer=nil;return result=this.builder.$args(val["$[]"](0),val["$[]"](1),val["$[]"](2)),$writer=["expr_value"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_639",(function(val,_values,result){var $writer=nil;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_640",(function(val,_values,result){var $writer=nil;return $writer=[val["$[]"](0).$in_kwarg()],$send(this.context,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.builder.$args(nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_641",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_642",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_643",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_644",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_645",(function(val,_values,result){return this.static_env.$declare_forward_args(),[this.builder.$forward_arg(val["$[]"](0))]}),3),$def(self,"$_reduce_646",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_647",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_648",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_649",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](6)).$concat(val["$[]"](7))}),3),$def(self,"$_reduce_650",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_651",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_652",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_653",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_654",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_655",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_656",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_657",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_658",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_659",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_660",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_661",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_662",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_663",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_664",(function(val,_values,result){return this.$diagnostic("error","argument_const",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_665",(function(val,_values,result){return this.$diagnostic("error","argument_ivar",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_666",(function(val,_values,result){return this.$diagnostic("error","argument_gvar",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_667",(function(val,_values,result){return this.$diagnostic("error","argument_cvar",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_669",(function(val,_values,result){return this.static_env.$declare(val["$[]"](0)["$[]"](0)),this.max_numparam_stack["$has_ordinary_params!"](),val["$[]"](0)}),3),$def(self,"$_reduce_670",(function(val,_values,result){return this.current_arg_stack.$set(val["$[]"](0)["$[]"](0)),val["$[]"](0)}),3),$def(self,"$_reduce_671",(function(val,_values,result){return this.current_arg_stack.$set(0),this.builder.$arg(val["$[]"](0))}),3),$def(self,"$_reduce_672",(function(val,_values,result){return this.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_673",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_674",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_675",(function(val,_values,result){var $writer;return this.$check_kwarg_name(val["$[]"](0)),this.static_env.$declare(val["$[]"](0)["$[]"](0)),this.max_numparam_stack["$has_ordinary_params!"](),this.current_arg_stack.$set(val["$[]"](0)["$[]"](0)),$writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),val["$[]"](0)}),3),$def(self,"$_reduce_676",(function(val,_values,result){var $writer;return this.current_arg_stack.$set(nil),$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$kwoptarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_677",(function(val,_values,result){var $writer;return this.current_arg_stack.$set(nil),$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$kwarg(val["$[]"](0))}),3),$def(self,"$_reduce_678",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$kwoptarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_679",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$kwarg(val["$[]"](0))}),3),$def(self,"$_reduce_680",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_681",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_682",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_683",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_686",(function(val,_values,result){return[this.builder.$kwnilarg(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_687",(function(val,_values,result){return this.static_env.$declare(val["$[]"](1)["$[]"](0)),[this.builder.$kwrestarg(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_688",(function(val,_values,result){return[this.builder.$kwrestarg(val["$[]"](0))]}),3),$def(self,"$_reduce_689",(function(val,_values,result){var $writer;return this.current_arg_stack.$set(0),$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$optarg(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_690",(function(val,_values,result){var $writer;return this.current_arg_stack.$set(0),$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$optarg(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_691",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_692",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_693",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_694",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_697",(function(val,_values,result){return this.static_env.$declare(val["$[]"](1)["$[]"](0)),[this.builder.$restarg(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_698",(function(val,_values,result){return[this.builder.$restarg(val["$[]"](0))]}),3),$def(self,"$_reduce_701",(function(val,_values,result){return this.static_env.$declare(val["$[]"](1)["$[]"](0)),this.builder.$blockarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_702",(function(val,_values,result){return this.static_env.$declare_anonymous_blockarg(),this.builder.$blockarg(val["$[]"](0),nil)}),3),$def(self,"$_reduce_703",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_704",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_706",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_707",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_709",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_710",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_711",(function(val,_values,result){return this.builder.$pair(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_712",(function(val,_values,result){return this.builder.$pair_keyword(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_713",(function(val,_values,result){return this.builder.$pair_label(val["$[]"](0))}),3),$def(self,"$_reduce_714",(function(val,_values,result){return this.builder.$pair_quoted(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_715",(function(val,_values,result){return this.builder.$kwsplat(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_728",(function(val,_values,result){return["dot",val["$[]"](0)["$[]"](1)]}),3),$def(self,"$_reduce_729",(function(val,_values,result){return["anddot",val["$[]"](0)["$[]"](1)]}),3),$def(self,"$_reduce_734",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_735",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_736",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_740",(function(val,_values,result){return this.$yyerrok(),result}),3),$def(self,"$_reduce_744",(function(val,_values,result){return nil}),3),$def(self,"$_reduce_none",(function(val,_values,result){return val["$[]"](0)}),3)}($nesting[0],$$$($$("Parser"),"Base"),$nesting)}($nesting[0],$nesting)},Opal.modules["opal/ast/builder"]=function(Opal){var self=Opal.top,$nesting=[],$$$=(Opal.nil,Opal.$$$),$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$Opal=Opal.Opal,$hash2=Opal.hash2,$def=Opal.def;return Opal.add_stubs("require,emit_lambda=,-,new"),self.$require("opal/ast/node"),self.$require("parser/ruby31"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var $writer,self=$klass($base,$super,"Builder");return $send(self,"emit_lambda=",$to_a($writer=[!0])),$rb_minus($writer.length,1),$def(self,"$n",(function(type,children,location){return $$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:location}))}),3)}([$module($base,"AST")].concat($parent_nesting)[0],$$$($$$($$$("Parser"),"Builders"),"Default"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/base"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$truthy=Opal.truthy,$Opal=Opal.Opal,$hash2=Opal.hash2,$defs=Opal.defs,$alias=Opal.alias,$rb_plus=Opal.rb_plus,$eqeqeq=Opal.eqeqeq,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,new,current_node,loc,+,stmts_of,begin_with_stmts,nil?,include?,type,children,===,length,[],s,attr_accessor,current_node=,-,location=,raise"),self.$require("parser"),self.$require("opal/ast/node"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Base"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"DummyLocation"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$node=",(function($a){return Opal.slice.call(arguments),nil}),-1),$def(self,"$expression",(function(){return this}),0),$def(self,"$begin_pos",(function(){return 0}),0),$def(self,"$end_pos",(function(){return 0}),0),$def(self,"$source",(function(){return""}),0),$def(self,"$line",(function(){return 0}),0),$def(self,"$column",(function(){return 0}),0),$def(self,"$last_line",(function(){return $$$($$("Float"),"INFINITY")}),0)}($nesting[0],0,$nesting),$const_set($nesting[0],"DUMMY_LOCATION",$$("DummyLocation").$new()),$def(self,"$s",(function(type,$a){var children,self=this,loc=nil;return children=Opal.slice.call(arguments,1),loc=$truthy(self.$current_node())?self.$current_node().$loc():$$("DUMMY_LOCATION"),$$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:loc}))}),-2),$defs(self,"$s",(function(type,$a){var children;return children=Opal.slice.call(arguments,1),$$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:$$("DUMMY_LOCATION")}))}),-2),$alias(self,"on_iter","process_regular_node"),$alias(self,"on_top","process_regular_node"),$alias(self,"on_zsuper","process_regular_node"),$alias(self,"on_jscall","on_send"),$alias(self,"on_jsattr","process_regular_node"),$alias(self,"on_jsattrasgn","process_regular_node"),$alias(self,"on_kwsplat","process_regular_node"),$def(self,"$prepend_to_body",(function(body,node){var stmts;return stmts=$rb_plus(this.$stmts_of(node),this.$stmts_of(body)),this.$begin_with_stmts(stmts)}),2),$def(self,"$append_to_body",(function(body,node){var stmts;return stmts=$rb_plus(this.$stmts_of(body),this.$stmts_of(node)),this.$begin_with_stmts(stmts)}),2),$def(self,"$stmts_of",(function(node){return $truthy(node["$nil?"]())?[]:$truthy(["begin","kwbegin"]["$include?"](node.$type()))?node.$children():[node]}),1),$def(self,"$begin_with_stmts",(function(stmts){var $ret_or_1;return $eqeqeq(0,$ret_or_1=stmts.$length())?nil:$eqeqeq(1,$ret_or_1)?stmts["$[]"](0):$send(this,"s",["begin"].concat($to_a(stmts)))}),1),self.$attr_accessor("current_node"),$def(self,"$process",(function $$process(node){var $yield=$$process.$$p||nil,self=this,$writer=nil;return delete $$process.$$p,function(){try{return $send(self,"current_node=",$to_a($writer=[node])),$writer[$rb_minus($writer.length,1)],$send2(self,$find_super(self,"process",$$process,!1,!0),"process",[node],$yield)}finally{$send(self,"current_node=",$to_a($writer=[nil])),$writer[$rb_minus($writer.length,1)]}}()}),1),$def(self,"$error",(function(msg){var error,$writer=nil;return error=$$$($Opal,"RewritingError").$new(msg),$truthy(this.$current_node())&&($writer=[this.$current_node().$loc()],$send(error,"location=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),this.$raise(error)}),1)}($nesting[0],$$$($$$($$$("Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/opal_engine_check"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_a=Opal.to_a,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$const_set=Opal.const_set;return Opal.add_stubs("require,children,skip_check_present?,process,s,skip_check_present_not?,=="),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"OpalEngineCheck"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_if",(function $$on_if(node){var $a,test,true_body,false_body,$yield=$$on_if.$$p||nil,$ret_or_1=nil;return delete $$on_if.$$p,test=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],true_body=null==$a[1]?nil:$a[1],false_body=null==$a[2]?nil:$a[2],$truthy(this["$skip_check_present?"](test))?this.$process($truthy($ret_or_1=true_body)?$ret_or_1:this.$s("nil")):$truthy(this["$skip_check_present_not?"](test))?this.$process($truthy($ret_or_1=false_body)?$ret_or_1:this.$s("nil")):$send2(this,$find_super(this,"on_if",$$on_if,!1,!0),"on_if",[node],$yield)}),1),$def(self,"$skip_check_present?",(function(test){var $ret_or_1;return $truthy($ret_or_1=test["$=="]($$("RUBY_ENGINE_CHECK")))?$ret_or_1:test["$=="]($$("RUBY_PLATFORM_CHECK"))}),1),$def(self,"$skip_check_present_not?",(function(test){var $ret_or_1;return $truthy($ret_or_1=test["$=="]($$("RUBY_ENGINE_CHECK_NOT")))?$ret_or_1:test["$=="]($$("RUBY_PLATFORM_CHECK_NOT"))}),1),$const_set($nesting[0],"RUBY_ENGINE_CHECK",self.$s("send",self.$s("const",nil,"RUBY_ENGINE"),"==",self.$s("str","opal"))),$const_set($nesting[0],"RUBY_ENGINE_CHECK_NOT",self.$s("send",self.$s("const",nil,"RUBY_ENGINE"),"!=",self.$s("str","opal"))),$const_set($nesting[0],"RUBY_PLATFORM_CHECK",self.$s("send",self.$s("const",nil,"RUBY_PLATFORM"),"==",self.$s("str","opal"))),$const_set($nesting[0],"RUBY_PLATFORM_CHECK_NOT",self.$s("send",self.$s("const",nil,"RUBY_PLATFORM"),"!=",self.$s("str","opal")))}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/for_rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$defs=Opal.defs,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$to_a=Opal.to_a,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,+,find,map,s,next_tmp,class,===,type,updated,<<,prepend_to_body,process,attr_reader,new,to_a,result"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ForRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$reset_tmp_counter!",(function(){return this.counter=0}),0),$defs(self,"$next_tmp",(function(){var $ret_or_1;return null==this.counter&&(this.counter=nil),this.counter=$truthy($ret_or_1=this.counter)?$ret_or_1:0,this.counter=$rb_plus(this.counter,1),"$for_tmp"+this.counter}),0),$def(self,"$on_for",(function(node){var $a,iterating_value,iterating_lvars,lvars_declared_in_body,outer_assigns,tmp_loop_variable,get_tmp_loop_variable,loop_variable_assignment,loop_variable=nil,loop_body=nil;return loop_variable=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],iterating_value=null==$a[1]?nil:$a[1],loop_body=null==$a[2]?nil:$a[2],iterating_lvars=$$("LocalVariableAssigns").$find(loop_variable),lvars_declared_in_body=$$("LocalVariableAssigns").$find(loop_body),outer_assigns=$send($rb_plus(iterating_lvars,lvars_declared_in_body),"map",[],(function $$2(lvar_name){return null==lvar_name&&(lvar_name=nil),(null==$$2.$$s?this:$$2.$$s).$s("lvdeclare",lvar_name)}),{$$arity:1,$$s:this}),tmp_loop_variable=this.$class().$next_tmp(),get_tmp_loop_variable=this.$s("js_tmp",tmp_loop_variable),loop_variable_assignment=$eqeqeq("mlhs",loop_variable.$type())?loop_variable.$updated("masgn",[loop_variable,get_tmp_loop_variable]):loop_variable["$<<"](get_tmp_loop_variable),loop_body=this.$prepend_to_body(loop_body,loop_variable_assignment),(node=node.$updated("send",[iterating_value,"each",node.$updated("iter",[this.$s("args",this.$s("arg",tmp_loop_variable)),this.$process(loop_body)])])).$updated("begin",[].concat($to_a(outer_assigns)).concat([node]))}),1),function($base,$super,$parent_nesting){var self=$klass($base,$super,"LocalVariableAssigns"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$attr_reader("result"),$defs(self,"$find",(function(node){var processor=nil;return(processor=this.$new()).$process(node),processor.$result().$to_a()}),1),$def(self,"$initialize",(function(){return this.result=$$("Set").$new()}),0),$def(self,"$on_lvasgn",(function $$on_lvasgn(node){var $a,name,$yield=$$on_lvasgn.$$p||nil;return delete $$on_lvasgn.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],this.$result()["$<<"](name),$send2(this,$find_super(this,"on_lvasgn",$$on_lvasgn,!1,!0),"on_lvasgn",[node],$yield)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/explicit_writer_return"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$slice=Opal.slice,$eqeq=Opal.eqeq,$regexp=Opal.regexp,$send=Opal.send;return Opal.add_stubs("require,s,==,to_s,=~,process_all,updated"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ExplicitWriterReturn"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.in_masgn=nil,$def(self,"$initialize",(function(){return this.in_masgn=!1}),0),$const_set($nesting[0],"TMP_NAME","$writer"),$const_set($nesting[0],"GET_ARGS_NODE",self.$s("lvar",$$("TMP_NAME"))),$const_set($nesting[0],"RETURN_ARGS_NODE",self.$s("jsattr",$$("GET_ARGS_NODE"),self.$s("send",self.$s("jsattr",$$("GET_ARGS_NODE"),self.$s("str","length")),"-",self.$s("int",1)))),$def(self,"$on_send",(function $$on_send(node){var $a,recv,args,$yield=$$on_send.$$p||nil,method_name=nil,set_args_node=nil;return delete $$on_send.$$p,$truthy(this.in_masgn)?$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield):(recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(method_name.$to_s()["$=~"]($regexp([$$("REGEXP_START"),"\\w+=",$$("REGEXP_END")])))||$eqeq(method_name.$to_s(),"[]=")?(set_args_node=this.$s("lvasgn",$$("TMP_NAME"),$send(this,"s",["array"].concat($to_a(this.$process_all(args))))),this.$s("begin",set_args_node,node.$updated(nil,[recv,method_name,this.$s("splat",$$("GET_ARGS_NODE"))]),$$("RETURN_ARGS_NODE"))):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield))}),1),$def(self,"$on_masgn",(function $$on_masgn(node){var result,$yield=$$on_masgn.$$p||nil;return delete $$on_masgn.$$p,this.in_masgn=!0,result=$send2(this,$find_super(this,"on_masgn",$$on_masgn,!1,!0),"on_masgn",[node],$yield),this.in_masgn=!1,result}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/regexp_anchors"]=function(Opal){var $nesting=[],$$$=(Opal.nil,Opal.$$$),$module=Opal.module,$const_set=Opal.const_set;return Opal.add_stubs("new"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set(self,"REGEXP_START","^"),$const_set(self,"REGEXP_END","$"),$const_set(self,"FORBIDDEN_STARTING_IDENTIFIER_CHARS","\\u0001-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"FORBIDDEN_ENDING_IDENTIFIER_CHARS","\\u0001-\\u0020\\u0022-\\u002F\\u003A-\\u003E\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"INLINE_IDENTIFIER_REGEXP",$$("Regexp").$new("[^"+$$$(self,"FORBIDDEN_STARTING_IDENTIFIER_CHARS")+"]*[^"+$$$(self,"FORBIDDEN_ENDING_IDENTIFIER_CHARS")+"]")),$const_set(self,"FORBIDDEN_CONST_NAME_CHARS","\\u0001-\\u0020\\u0021-\\u002F\\u003B-\\u003F\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"CONST_NAME_REGEXP",$$("Regexp").$new($$$(self,"REGEXP_START")+"(::)?[A-Z][^"+$$$(self,"FORBIDDEN_CONST_NAME_CHARS")+"]*"+$$$(self,"REGEXP_END")))}($nesting[0],$nesting)},Opal.modules["opal/rewriters/js_reserved_words"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$truthy=Opal.truthy,$defs=Opal.defs,$def=Opal.def,$range=Opal.range,$to_a=Opal.to_a,$send2=Opal.send2,$find_super=Opal.find_super,$hash2=Opal.hash2,$alias=Opal.alias;return Opal.add_stubs("require,freeze,=~,!,valid_name?,class,to_sym,valid_ivar_name?,[],to_s,updated,fix_var_name,fix_ivar_name"),self.$require("opal/rewriters/base"),self.$require("opal/regexp_anchors"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"JsReservedWords"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"ES51_RESERVED_WORD",$regexp([$$("REGEXP_START"),"(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"ES3_RESERVED_WORD_EXCLUSIVE",$regexp([$$("REGEXP_START"),"(?:int|byte|char|goto|long|final|float|short|double|native|throws|boolean|abstract|volatile|transient|synchronized)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"PROTO_SPECIAL_PROPS",$regexp([$$("REGEXP_START"),"(?:constructor|displayName|__proto__|__parent__|__noSuchMethod__|__count__)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"PROTO_SPECIAL_METHODS",$regexp([$$("REGEXP_START"),"(?:hasOwnProperty|valueOf)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"IMMUTABLE_PROPS",$regexp([$$("REGEXP_START"),"(?:NaN|Infinity|undefined)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"BASIC_IDENTIFIER_RULES",$regexp([$$("REGEXP_START"),"[$_a-z][$_a-z\\d]*",$$("REGEXP_END")],"i").$freeze()),$const_set($nesting[0],"RESERVED_FUNCTION_NAMES",$regexp([$$("REGEXP_START"),"(?:Array)",$$("REGEXP_END")]).$freeze()),$defs(self,"$valid_name?",(function(name){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $truthy($ret_or_1=$$("BASIC_IDENTIFIER_RULES")["$=~"](name))?($truthy($ret_or_2=$truthy($ret_or_3=$$("ES51_RESERVED_WORD")["$=~"](name))?$ret_or_3:$$("ES3_RESERVED_WORD_EXCLUSIVE")["$=~"](name))?$ret_or_2:$$("IMMUTABLE_PROPS")["$=~"](name))["$!"]():$ret_or_1}),1),$defs(self,"$valid_ivar_name?",(function(name){var $ret_or_1;return($truthy($ret_or_1=$$("PROTO_SPECIAL_PROPS")["$=~"](name))?$ret_or_1:$$("PROTO_SPECIAL_METHODS")["$=~"](name))["$!"]()}),1),$def(self,"$fix_var_name",(function(name){return $truthy(this.$class()["$valid_name?"](name))?name:(name+"$").$to_sym()}),1),$def(self,"$fix_ivar_name",(function(name){return $truthy(this.$class()["$valid_ivar_name?"](name.$to_s()["$[]"]($range(1,-1,!1))))?name:(name+"$").$to_sym()}),1),$def(self,"$on_lvar",(function $$on_lvar(node){var $a,name;return delete $$on_lvar.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],node=node.$updated(nil,[this.$fix_var_name(name)]),$send2(this,$find_super(this,"on_lvar",$$on_lvar,!1,!0),"on_lvar",[node],null)}),1),$def(self,"$on_lvasgn",(function $$on_lvasgn(node){var $a,name,value;return delete $$on_lvasgn.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],node=$truthy(value)?node.$updated(nil,[this.$fix_var_name(name),value]):node.$updated(nil,[this.$fix_var_name(name)]),$send2(this,$find_super(this,"on_lvasgn",$$on_lvasgn,!1,!0),"on_lvasgn",[node],null)}),1),$def(self,"$on_ivar",(function $$on_ivar(node){var $a,name;return delete $$on_ivar.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],node=node.$updated(nil,[this.$fix_ivar_name(name)]),$send2(this,$find_super(this,"on_ivar",$$on_ivar,!1,!0),"on_ivar",[node],null)}),1),$def(self,"$on_ivasgn",(function $$on_ivasgn(node){var $a,name,value;return delete $$on_ivasgn.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],node=$truthy(value)?node.$updated(nil,[this.$fix_ivar_name(name),value]):node.$updated(nil,[this.$fix_ivar_name(name)]),$send2(this,$find_super(this,"on_ivasgn",$$on_ivasgn,!1,!0),"on_ivasgn",[node],null)}),1),$def(self,"$on_restarg",(function(node){var $a,name;return name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$truthy(name)&&(node=node.$updated(nil,[this.$fix_var_name(name)],$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:name})}))),node}),1),$alias(self,"on_kwrestarg","on_restarg"),$def(self,"$on_argument",(function $$on_argument(node){var $a,name,value,fixed_name,new_children;return delete $$on_argument.$$p,node=$send2(this,$find_super(this,"on_argument",$$on_argument,!1,!0),"on_argument",[node],null),name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],fixed_name=this.$fix_var_name(name),new_children=$truthy(value)?[fixed_name,value]:[fixed_name],node.$updated(nil,new_children,$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:name})}))}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/block_to_iter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$def=Opal.def;return Opal.add_stubs("require,s,process,updated,+,children"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BlockToIter");return $def(self,"$on_block",(function(node){var $a,args,body,iter_node,recvr=nil;return recvr=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],iter_node=this.$s("iter",args,body),this.$process(recvr.$updated(nil,$rb_plus(recvr.$children(),[iter_node])))}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/dot_js_syntax"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_a=Opal.to_a,$slice=Opal.slice,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$eqeqeq=Opal.eqeqeq,$neqeq=Opal.neqeq,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("require,==,type,===,!=,size,error,first,to_js_attr_call,to_js_attr_assign_call,to_native_js_call,s"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DotJsSyntax");return $def(self,"$on_send",(function $$on_send(node){var $a,meth,$yield=$$on_send.$$p||nil,recv=nil,args=nil,recv_of_recv=nil,meth_of_recv=nil,$ret_or_1=nil,property=nil,value=nil;return delete $$on_send.$$p,recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(recv)&&$eqeq(recv.$type(),"send")?(recv_of_recv=null==($a=[].concat($to_a(recv)))[0]?nil:$a[0],meth_of_recv=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],$eqeq(meth_of_recv,"JS")?($eqeqeq("[]",$ret_or_1=meth)?($neqeq(args.$size(),1)&&this.$error(".JS[:property] syntax supports only one argument"),property=args.$first(),node=this.$to_js_attr_call(recv_of_recv,property)):$eqeqeq("[]=",$ret_or_1)?($neqeq(args.$size(),2)&&this.$error(".JS[:property]= syntax supports only two arguments"),property=null==($a=[].concat($to_a(args)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],node=this.$to_js_attr_assign_call(recv_of_recv,property,value)):node=this.$to_native_js_call(recv_of_recv,meth,args),$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],null)):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield)):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield)}),1),$def(self,"$to_native_js_call",(function(recv,meth,args){return $send(this,"s",["jscall",recv,meth].concat($to_a(args)))}),3),$def(self,"$to_js_attr_call",(function(recv,property){return this.$s("jsattr",recv,property)}),2),$def(self,"$to_js_attr_assign_call",(function(recv,property,value){return this.$s("jsattrasgn",recv,property,value)}),3)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/pattern_matching"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$slice=Opal.slice,$truthy=Opal.truthy,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$not=Opal.not,$neqeq=Opal.neqeq,$eqeq=Opal.eqeq,$alias=Opal.alias,$Opal=Opal.Opal;return Opal.add_stubs("require,s,convert_full_pattern,raise_no_matching_pattern_error,+,process,single_case_match,private,shift,===,type,!,empty?,!=,==,class,new,run!,variables,pattern,map,<<,array,on_literal,first,children,to_proc,method,each,to_ast,on_array_pattern,compact,[]"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"PatternMatching"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.depth=nil,$def(self,"$initialize",(function $$initialize(){var $yield=$$initialize.$$p||nil;return delete $$initialize.$$p,this.depth=0,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[],$yield)}),0),$def(self,"$on_match_pattern",(function(node){var $a,from,pat;return from=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],pat=null==$a[1]?nil:$a[1],this.$s("begin",this.$s("lvasgn","$pmvar",from),this.$s("if",this.$convert_full_pattern(from,pat),nil,this.$raise_no_matching_pattern_error("$pmvar")))}),1),$def(self,"$on_match_pattern_p",(function(node){var $a,from,pat;return from=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],pat=null==$a[1]?nil:$a[1],this.$s("if",this.$convert_full_pattern(from,pat),this.$s("true"),this.$s("false"))}),1),$def(self,"$on_case_match",(function(node){var $a,$b,from,cases,cmvar=nil,els=nil;return this.depth=$rb_plus(this.depth,1),cmvar="$cmvar"+this.depth,from=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],$b=($b=$a.length-1)<1?1:$b,cases=$slice.call($a,1,$b),els=null==$a[$b]?nil:$a[$b],$truthy(els)?this.$process(els):els=this.$raise_no_matching_pattern_error(cmvar),this.$s("begin",this.$s("lvasgn",cmvar,from),$send(this,"single_case_match",[cmvar].concat($to_a(cases)).concat([els])))}),1),self.$private(),$def(self,"$raise_no_matching_pattern_error",(function(from){return this.$s("send",nil,"raise",this.$s("const",this.$s("cbase"),"NoMatchingPatternError"),this.$s("lvar",from))}),1),$def(self,"$single_case_match",(function(from,$a,$b){var $post_args,cases,els,$c,self=this,cas=nil,pat=nil,if_guard=nil,body=nil,guard=nil,$ret_or_1=nil;return cases=($post_args=Opal.slice.call(arguments,1)).splice(0,$post_args.length-1),null==(els=$post_args.shift())&&(els=nil),cas=cases.$shift(),pat=null==($c=[].concat($to_a(cas)))[0]?nil:$c[0],if_guard=null==$c[1]?nil:$c[1],body=null==$c[2]?nil:$c[2],pat=self.$convert_full_pattern(from,pat),$truthy(if_guard)&&(guard=null==($c=[].concat($to_a(if_guard)))[0]?nil:$c[0],$eqeqeq("if_guard",$ret_or_1=if_guard.$type())?pat=self.$s("and",pat,guard):$eqeqeq("unless_guard",$ret_or_1)&&(pat=self.$s("and",pat,self.$s("send",guard,"!")))),self.$s("if",pat,self.$process(body),$not(cases["$empty?"]())?$send(self,"single_case_match",[from].concat($to_a(cases)).concat([els])):$neqeq(els,self.$s("empty_else"))?els:nil)}),-3),$def(self,"$convert_full_pattern",(function(from,pat){var converter=nil;return $eqeq(from.$class(),$$("Symbol"))&&(from=this.$s("lvar",from)),(converter=$$("PatternConverter").$new(pat))["$run!"](),this.$s("masgn",$send(this,"s",["mlhs"].concat($to_a(converter.$variables()))),this.$s("send",this.$s("const",this.$s("cbase"),"PatternMatching"),"call",from,converter.$pattern()))}),2),function($base,$super,$parent_nesting){var self=$klass($base,$super,"PatternConverter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.pat=$proto.outpat=$proto.variables=nil,$def(self,"$initialize",(function(pat){return this.pat=pat,this.variables=[]}),1),$def(self,"$run!",(function(){return this.outpat=this.$process(this.pat)}),0),$def(self,"$pattern",(function(){return this.outpat}),0),$def(self,"$variables",(function(){return $send(this.variables,"map",[],(function $$2(i){return null==i&&(i=nil),(null==$$2.$$s?this:$$2.$$s).$s("lvasgn",i)}),{$$arity:1,$$s:this})}),0),$def(self,"$on_match_var",(function(node){var $a,var$;return var$=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],this.variables["$<<"](var$),this.$s("sym","var")}),1),$def(self,"$on_match_as",(function(node){var $a,pat,save;return pat=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],save=null==$a[1]?nil:$a[1],this.$process(save),this.$array(this.$s("sym","save"),this.$process(pat))}),1),$def(self,"$on_literal",(function(node){return this.$array(this.$s("sym","lit"),node)}),1),$alias(self,"on_int","on_literal"),$alias(self,"on_float","on_literal"),$alias(self,"on_complex","on_literal"),$alias(self,"on_rational","on_literal"),$alias(self,"on_array","on_literal"),$alias(self,"on_str","on_literal"),$alias(self,"on_dstr","on_literal"),$alias(self,"on_xstr","on_literal"),$alias(self,"on_sym","on_literal"),$alias(self,"on_irange","on_literal"),$alias(self,"on_erange","on_literal"),$alias(self,"on_const","on_literal"),$alias(self,"on_regexp","on_literal"),$alias(self,"on_lambda","on_literal"),$alias(self,"on_begin","on_literal"),$def(self,"$on_pin",(function(node){return this.$on_literal(node.$children().$first())}),1),$def(self,"$on_match_rest",(function(node){return $truthy(node.$children()["$empty?"]())?this.$array(this.$s("sym","rest")):this.$array(this.$s("sym","rest"),this.$process(node.$children().$first()))}),1),$def(self,"$on_match_alt",(function(node){return $send(this,"array",[this.$s("sym","any")].concat($to_a($send(node.$children(),"map",[],this.$method("process").$to_proc()))))}),1),$def(self,"$on_const_pattern",(function(node){return $send(this,"array",[this.$s("sym","all")].concat($to_a($send(node.$children(),"map",[],this.$method("process").$to_proc()))))}),1),$def(self,"$on_array_pattern",(function(node,tail){var children=nil,fixed_size=nil,array_size=nil;return null==tail&&(tail=!1),children=[].concat($to_a(node)),$truthy(tail)&&children["$<<"](this.$s("match_rest")),fixed_size=!0,array_size=0,children=$send(children,"each",[],(function(i){return null==i&&(i=nil),$eqeqeq("match_rest",i.$type())?fixed_size=!1:array_size=$rb_plus(array_size,1)}),1),this.$array(this.$s("sym","array"),this.$to_ast(fixed_size),this.$to_ast(array_size),this.$to_ast($send(children,"map",[],this.$method("process").$to_proc())))}),-2),$def(self,"$on_array_pattern_with_tail",(function(node){return this.$on_array_pattern(node,!0)}),1),$def(self,"$on_hash_pattern",(function(node){var children=nil,any_size=nil;return children=[].concat($to_a(node)),any_size=$truthy(children["$empty?"]())?this.$to_ast(!1):this.$to_ast(!0),children=$send(children,"map",[],(function $$4(i){var $ret_or_1,self=null==$$4.$$s?this:$$4.$$s;return null==i&&(i=nil),$eqeqeq("pair",$ret_or_1=i.$type())?self.$array(i.$children()["$[]"](0),self.$process(i.$children()["$[]"](1))):$eqeqeq("match_var",$ret_or_1)?self.$array(self.$s("sym",i.$children()["$[]"](0)),self.$process(i)):$eqeqeq("match_nil_pattern",$ret_or_1)?(any_size=self.$to_ast(!1),nil):$eqeqeq("match_rest",$ret_or_1)?(any_size=$truthy(i.$children().$first())?self.$process(i.$children().$first()):self.$to_ast(!0),nil):nil}),{$$arity:1,$$s:this}).$compact(),this.$array(this.$s("sym","hash"),any_size,$send(this,"array",$to_a(children)))}),1),$def(self,"$on_find_pattern",(function(node){var children=nil;return children=[].concat($to_a(node)),children=$send(children,"map",[],this.$method("process").$to_proc()),this.$array(this.$s("sym","find"),$send(this,"array",$to_a(children)))}),1),self.$private(),$def(self,"$array",(function($a){var args,self=this;return args=Opal.slice.call(arguments),self.$to_ast(args)}),-1),$def(self,"$to_ast",(function(val){var $ret_or_1;return $eqeqeq($$("Array"),$ret_or_1=val)?$send(this,"s",["array"].concat($to_a(val))):$eqeqeq($$("Integer"),$ret_or_1)?this.$s("int",val):$eqeqeq(!0,$ret_or_1)?this.$s("true"):$eqeqeq(!1,$ret_or_1)?this.$s("false"):$eqeqeq(nil,$ret_or_1)?this.$s("nil"):nil}),1)}($nesting[0],$$$($$$($Opal,"Rewriters"),"Base"),$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/logical_operator_assignment"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$class_variable_set=Opal.class_variable_set,$defs=Opal.defs,$truthy=Opal.truthy,$class_variable_get=Opal.class_variable_get,$rb_plus=Opal.rb_plus,$const_set=Opal.const_set,$lambda=Opal.lambda,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$slice=Opal.slice,$hash2=Opal.hash2,$send=Opal.send,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,+,updated,s,==,include?,[],type,new_temp,freeze,call,fetch,error,process"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"LogicalOperatorAssignment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$reset_tmp_counter!",(function(){return $class_variable_set($nesting[0],"@@counter",0)}),0),$defs(self,"$new_temp",(function(){var $ret_or_1=nil;return $class_variable_set($nesting[0],"@@counter",$truthy(null!=$nesting[0].$$cvars["@@counter"]?"class variable":nil)&&$truthy($ret_or_1=$class_variable_get($nesting[0],"@@counter",!1))?$ret_or_1:0),$class_variable_set($nesting[0],"@@counter",$rb_plus($class_variable_get($nesting[0],"@@counter",!1),1)),"$logical_op_recvr_tmp_"+$class_variable_get($nesting[0],"@@counter",!1)}),0),$const_set($nesting[0],"GET_SET",$lambda((function $LogicalOperatorAssignment$2(get_type,set_type){return null==get_type&&(get_type=nil),null==set_type&&(set_type=nil),$lambda((function $$3(lhs,rhs,root_type){var get_node,self=null==$$3.$$s?this:$$3.$$s,condition_node=nil,defined_node=nil;return null==lhs&&(lhs=nil),null==rhs&&(rhs=nil),null==root_type&&(root_type=nil),get_node=lhs.$updated(get_type),condition_node=self.$s(root_type,get_node,rhs),$truthy(["const","cvar"]["$include?"](get_type))&&$eqeq(root_type,"or")&&(defined_node=self.$s("defined?",get_node),condition_node=self.$s("if",defined_node,self.$s("begin",condition_node),rhs)),lhs.$updated(set_type,[].concat($to_a(lhs)).concat([condition_node]))}),{$$arity:3,$$s:null==$LogicalOperatorAssignment$2.$$s?this:$LogicalOperatorAssignment$2.$$s})}),{$$arity:2,$$s:self})),$const_set($nesting[0],"LocalVariableHandler",$$("GET_SET")["$[]"]("lvar","lvasgn")),$const_set($nesting[0],"InstanceVariableHandler",$$("GET_SET")["$[]"]("ivar","ivasgn")),$const_set($nesting[0],"ConstantHandler",$$("GET_SET")["$[]"]("const","casgn")),$const_set($nesting[0],"GlobalVariableHandler",$$("GET_SET")["$[]"]("gvar","gvasgn")),$const_set($nesting[0],"ClassVariableHandler",$$("GET_SET")["$[]"]("cvar","cvasgn")),function($base,$super){var self=$klass($base,$super,"SendHandler");$defs(self,"$call",(function(lhs,rhs,root_type){var $a,args,call_reader,call_writer,get_or_set,recvr=nil,reader_method=nil,recvr_tmp=nil,cache_recvr=nil,writer_method=nil;return recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],reader_method=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(recvr)&&$eqeq(recvr.$type(),"send")&&(recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp)),writer_method=reader_method+"=",call_reader=lhs.$updated("send",[recvr,reader_method].concat($to_a(args))),call_writer=lhs.$updated("send",[recvr,writer_method].concat($to_a(args)).concat([rhs])),get_or_set=this.$s(root_type,call_reader,call_writer),$truthy(cache_recvr)?this.$s("begin",cache_recvr,get_or_set):get_or_set}),3)}($nesting[0],self),function($base,$super){var self=$klass($base,$super,"ConditionalSendHandler");$defs(self,"$call",(function(lhs,rhs,root_type){var $a,args,recvr_tmp,cache_recvr,recvr_is_nil,plain_send,plain_or_asgn,recvr=nil,meth=nil;return root_type+="_asgn",recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp),recvr_is_nil=this.$s("send",recvr,"nil?"),plain_send=lhs.$updated("send",[recvr,meth].concat($to_a(args))),plain_or_asgn=this.$s(root_type,plain_send,rhs),this.$s("begin",cache_recvr,this.$s("if",recvr_is_nil,this.$s("nil"),plain_or_asgn))}),3)}($nesting[0],self),$const_set($nesting[0],"HANDLERS",$hash2(["lvasgn","ivasgn","casgn","gvasgn","cvasgn","send","csend"],{lvasgn:$$("LocalVariableHandler"),ivasgn:$$("InstanceVariableHandler"),casgn:$$("ConstantHandler"),gvasgn:$$("GlobalVariableHandler"),cvasgn:$$("ClassVariableHandler"),send:$$("SendHandler"),csend:$$("ConditionalSendHandler")}).$freeze()),$def(self,"$on_or_asgn",(function(node){var $a,rhs,result,lhs=nil;return $a=[].concat($to_a(node)),lhs=null==$a[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],result=$send($$("HANDLERS"),"fetch",[lhs.$type()],(function $$4(){return(null==$$4.$$s?this:$$4.$$s).$error("cannot handle LHS type: "+lhs.$type())}),{$$arity:0,$$s:this}).$call(lhs,rhs,"or"),this.$process(result)}),1),$def(self,"$on_and_asgn",(function(node){var $a,rhs,result,lhs=nil;return $a=[].concat($to_a(node)),lhs=null==$a[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],result=$send($$("HANDLERS"),"fetch",[lhs.$type()],(function $$5(){return(null==$$5.$$s?this:$$5.$$s).$error("cannot handle LHS type: "+lhs.$type())}),{$$arity:0,$$s:this}).$call(lhs,rhs,"and"),this.$process(result)}),1),$const_set($nesting[0],"ASSIGNMENT_STRING_NODE",self.$s("str","assignment")),$def(self,"$on_defined?",(function $LogicalOperatorAssignment_on_defined$ques$6(node){var $a,inner=nil;return delete $LogicalOperatorAssignment_on_defined$ques$6.$$p,inner=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$truthy(["or_asgn","and_asgn"]["$include?"](inner.$type()))?$$("ASSIGNMENT_STRING_NODE"):$send2(this,$find_super(this,"on_defined?",$LogicalOperatorAssignment_on_defined$ques$6,!1,!0),"on_defined?",[node],null)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/binary_operator_assignment"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$class_variable_set=Opal.class_variable_set,$defs=Opal.defs,$truthy=Opal.truthy,$class_variable_get=Opal.class_variable_get,$rb_plus=Opal.rb_plus,$const_set=Opal.const_set,$lambda=Opal.lambda,$to_a=Opal.to_a,$slice=Opal.slice,$eqeq=Opal.eqeq,$hash2=Opal.hash2,$send=Opal.send,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,+,updated,[],==,type,new_temp,s,freeze,call,fetch,error,process"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"BinaryOperatorAssignment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$reset_tmp_counter!",(function(){return $class_variable_set($nesting[0],"@@counter",0)}),0),$defs(self,"$new_temp",(function(){var $ret_or_1=nil;return $class_variable_set($nesting[0],"@@counter",$truthy(null!=$nesting[0].$$cvars["@@counter"]?"class variable":nil)&&$truthy($ret_or_1=$class_variable_get($nesting[0],"@@counter",!1))?$ret_or_1:0),$class_variable_set($nesting[0],"@@counter",$rb_plus($class_variable_get($nesting[0],"@@counter",!1),1)),"$binary_op_recvr_tmp_"+$class_variable_get($nesting[0],"@@counter",!1)}),0),$const_set($nesting[0],"GET_SET",$lambda((function(get_type,set_type){return null==get_type&&(get_type=nil),null==set_type&&(set_type=nil),$lambda((function(node,lhs,operation,rhs){var get_node,set_node;return null==node&&(node=nil),null==lhs&&(lhs=nil),null==operation&&(operation=nil),null==rhs&&(rhs=nil),get_node=lhs.$updated(get_type),set_node=node.$updated("send",[get_node,operation,rhs]),lhs.$updated(set_type,[].concat($to_a(lhs)).concat([set_node]))}),4)}),2)),$const_set($nesting[0],"LocalVariableHandler",$$("GET_SET")["$[]"]("lvar","lvasgn")),$const_set($nesting[0],"InstanceVariableHandler",$$("GET_SET")["$[]"]("ivar","ivasgn")),$const_set($nesting[0],"ConstantHandler",$$("GET_SET")["$[]"]("const","casgn")),$const_set($nesting[0],"GlobalVariableHandler",$$("GET_SET")["$[]"]("gvar","gvasgn")),$const_set($nesting[0],"ClassVariableHandler",$$("GET_SET")["$[]"]("cvar","cvasgn")),function($base,$super){var self=$klass($base,$super,"SendHandler");$defs(self,"$call",(function(node,lhs,operation,rhs){var $a,args,call_reader,call_op,call_writer,recvr=nil,reader_method=nil,recvr_tmp=nil,cache_recvr=nil,writer_method=nil;return recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],reader_method=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(recvr)&&$eqeq(recvr.$type(),"send")&&(recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp)),writer_method=reader_method+"=",call_reader=lhs.$updated("send",[recvr,reader_method].concat($to_a(args))),call_op=node.$updated("send",[call_reader,operation,rhs]),call_writer=lhs.$updated("send",[recvr,writer_method].concat($to_a(args)).concat([call_op])),$truthy(cache_recvr)?node.$updated("begin",[cache_recvr,call_writer]):call_writer}),4)}($nesting[0],self),function($base,$super){var self=$klass($base,$super,"ConditionalSendHandler");$defs(self,"$call",(function(node,lhs,operation,rhs){var $a,args,recvr_tmp,cache_recvr,recvr_is_nil,plain_send,plain_op_asgn,recvr=nil,meth=nil;return recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp),recvr_is_nil=this.$s("send",recvr,"nil?"),plain_send=lhs.$updated("send",[recvr,meth].concat($to_a(args))),plain_op_asgn=node.$updated("op_asgn",[plain_send,operation,rhs]),this.$s("begin",cache_recvr,this.$s("if",recvr_is_nil,this.$s("nil"),plain_op_asgn))}),4)}($nesting[0],self),$const_set($nesting[0],"HANDLERS",$hash2(["lvasgn","ivasgn","casgn","gvasgn","cvasgn","send","csend"],{lvasgn:$$("LocalVariableHandler"),ivasgn:$$("InstanceVariableHandler"),casgn:$$("ConstantHandler"),gvasgn:$$("GlobalVariableHandler"),cvasgn:$$("ClassVariableHandler"),send:$$("SendHandler"),csend:$$("ConditionalSendHandler")}).$freeze()),$def(self,"$on_op_asgn",(function(node){var $a,op,rhs,result,lhs=nil;return $a=[].concat($to_a(node)),lhs=null==$a[0]?nil:$a[0],op=null==$a[1]?nil:$a[1],rhs=null==$a[2]?nil:$a[2],result=$send($$("HANDLERS"),"fetch",[lhs.$type()],(function $$4(){return(null==$$4.$$s?this:$$4.$$s).$error("cannot handle LHS type: "+lhs.$type())}),{$$arity:0,$$s:this}).$call(node,lhs,op,rhs),this.$process(result)}),1),$const_set($nesting[0],"ASSIGNMENT_STRING_NODE",self.$s("str","assignment")),$def(self,"$on_defined?",(function $BinaryOperatorAssignment_on_defined$ques$5(node){var $a,inner=nil;return delete $BinaryOperatorAssignment_on_defined$ques$5.$$p,inner=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$eqeq(inner.$type(),"op_asgn")?$$("ASSIGNMENT_STRING_NODE"):$send2(this,$find_super(this,"on_defined?",$BinaryOperatorAssignment_on_defined$ques$5,!1,!0),"on_defined?",[node],null)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/hashes/key_duplicates_rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$Opal=Opal.Opal;return Opal.add_stubs("require,new,include?,type,<<,==,process_regular_node,updated,inspect,warn"),self.$require("opal/rewriters/base"),self.$require("set"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Hashes")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"KeyDuplicatesRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.keys=nil,$def(self,"$initialize",(function(){return this.keys=$$("UniqKeysSet").$new()}),0),$def(self,"$on_hash",(function $$on_hash(node){var $a,self=this,previous_keys=nil;return delete $$on_hash.$$p,function(){try{return $a=[self.keys,$$("UniqKeysSet").$new()],previous_keys=$a[0],self.keys=$a[1],$send2(self,$find_super(self,"on_hash",$$on_hash,!1,!0),"on_hash",[node],null)}finally{self.keys=previous_keys}}()}),1),$def(self,"$on_pair",(function $$on_pair(node){var $a,key=nil;return delete $$on_pair.$$p,key=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$truthy(["str","sym"]["$include?"](key.$type()))&&this.keys["$<<"](key),$send2(this,$find_super(this,"on_pair",$$on_pair,!1,!0),"on_pair",[node],null)}),1),$def(self,"$on_kwsplat",(function(node){var $a,hash=nil;return hash=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$eqeq(hash.$type(),"hash")&&(hash=this.$process_regular_node(hash)),node.$updated(nil,[hash])}),1),function($base,$super,$parent_nesting){var self=$klass($base,null,"UniqKeysSet"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.set=nil,$def(self,"$initialize",(function(){return this.set=$$("Set").$new()}),0),$def(self,"$<<",(function(element){var $a,key=nil;return $truthy(this.set["$include?"](element))?(key=null==($a=[].concat($to_a(element)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],key=$eqeq(element.$type(),"str")?key.$inspect():":"+key,$$("Kernel").$warn("warning: key "+key+" is duplicated and overwritten")):this.set["$<<"](element)}),1)}($nesting[0],0,$nesting)}($nesting[0],$$$($$$($Opal,"Rewriters"),"Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/dump_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$hash2=Opal.hash2,$def=Opal.def;return Opal.add_stubs("require,updated"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DumpArgs");return $def(self,"$on_def",(function $$on_def(node){var $a,args;return delete $$on_def.$$p,node=$send2(this,$find_super(this,"on_def",$$on_def,!1,!0),"on_def",[node],null),null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))}),1),$def(self,"$on_defs",(function $$on_defs(node){var $a,args;return delete $$on_defs.$$p,node=$send2(this,$find_super(this,"on_defs",$$on_defs,!1,!0),"on_defs",[node],null),null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],args=null==$a[2]?nil:$a[2],null==$a[3]?nil:$a[3],node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))}),1),$def(self,"$on_iter",(function $$on_iter(node){var $a,args;return delete $$on_iter.$$p,node=$send2(this,$find_super(this,"on_iter",$$on_iter,!1,!0),"on_iter",[node],null),args=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/mlhs_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$def=Opal.def,$rb_plus=Opal.rb_plus,$send=Opal.send,$eqeq=Opal.eqeq,$hash2=Opal.hash2;return Opal.add_stubs("require,new,updated,rewritten,initialization,s,prepend_to_body,attr_reader,split!,+,each,children,==,type,new_mlhs_tmp,process,<<,length,[],empty?"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"MlhsArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_def",(function $$on_def(node){var $a,mid,args=nil,body=nil,arguments$=nil,$ret_or_1=nil;return delete $$on_def.$$p,node=$send2(this,$find_super(this,"on_def",$$on_def,!1,!0),"on_def",[node],null),mid=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],arguments$=$$("Arguments").$new(args),args=args.$updated(nil,arguments$.$rewritten()),$truthy(arguments$.$initialization())&&(body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),body=this.$prepend_to_body(body,arguments$.$initialization())),node.$updated(nil,[mid,args,body])}),1),$def(self,"$on_defs",(function $$on_defs(node){var $a,recv,mid,args=nil,body=nil,arguments$=nil,$ret_or_1=nil;return delete $$on_defs.$$p,node=$send2(this,$find_super(this,"on_defs",$$on_defs,!1,!0),"on_defs",[node],null),recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],mid=null==$a[1]?nil:$a[1],args=null==$a[2]?nil:$a[2],body=null==$a[3]?nil:$a[3],arguments$=$$("Arguments").$new(args),args=args.$updated(nil,arguments$.$rewritten()),$truthy(arguments$.$initialization())&&(body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),body=this.$prepend_to_body(body,arguments$.$initialization())),node.$updated(nil,[recv,mid,args,body])}),1),$def(self,"$on_iter",(function $$on_iter(node){var $a,args=nil,body=nil,arguments$=nil,$ret_or_1=nil;return delete $$on_iter.$$p,node=$send2(this,$find_super(this,"on_iter",$$on_iter,!1,!0),"on_iter",[node],null),args=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],body=null==$a[1]?nil:$a[1],arguments$=$$("Arguments").$new(args),args=args.$updated(nil,arguments$.$rewritten()),$truthy(arguments$.$initialization())&&(body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),body=this.$prepend_to_body(body,arguments$.$initialization())),node.$updated(nil,[args,body])}),1),function($base,$super,$parent_nesting){var self=$klass($base,$super,"Arguments"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.counter=$proto.args=$proto.initialization=nil,self.$attr_reader("rewritten","initialization"),$def(self,"$initialize",(function(args){return this.args=args,this.rewritten=[],this.initialization=[],this.rewriter=$$("MlhsRewriter").$new(),this["$split!"]()}),1),$def(self,"$reset_tmp_counter!",(function(){return this.counter=0}),0),$def(self,"$new_mlhs_tmp",(function(){var $ret_or_1;return this.counter=$truthy($ret_or_1=this.counter)?$ret_or_1:0,this.counter=$rb_plus(this.counter,1),"$mlhs_tmp"+this.counter}),0),$def(self,"$split!",(function(){return $send(this.args.$children(),"each",[],(function $$3(arg){var self=null==$$3.$$s?this:$$3.$$s,var_name=nil,rhs=nil,mlhs=nil;return null==self.rewriter&&(self.rewriter=nil),null==self.initialization&&(self.initialization=nil),null==self.rewritten&&(self.rewritten=nil),null==arg&&(arg=nil),$eqeq(arg.$type(),"mlhs")?(var_name=self.$new_mlhs_tmp(),rhs=self.$s("lvar",var_name),mlhs=self.rewriter.$process(arg),self.initialization["$<<"](self.$s("masgn",mlhs,rhs)),self.rewritten["$<<"](self.$s("arg",var_name).$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:var_name})})))):self.rewritten["$<<"](arg)}),{$$arity:1,$$s:this}),$eqeq(this.initialization.$length(),1)?this.initialization=this.initialization["$[]"](0):$truthy(this.initialization["$empty?"]())?this.initialization=nil:this.initialization=$send(this,"s",["begin"].concat($to_a(this.initialization)))}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"MlhsRewriter");return $def(self,"$on_arg",(function(node){return node.$updated("lvasgn")}),1),$def(self,"$on_restarg",(function(node){var name;return name=node.$children()["$[]"](0),$truthy(name)?this.$s("splat",node.$updated("lvasgn")):this.$s("splat")}),1)}($nesting[0],$$("Base"))}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/arguments"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("attr_reader,each,===,type,<<,any?,raise,!,nil?,has_any_kwargs?,can_inline_kwargs?,empty?"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,null,"Arguments"),$proto=self.$$prototype;return $proto.restarg=$proto.postargs=$proto.kwargs=$proto.kwoptargs=$proto.kwrestarg=$proto.optargs=nil,self.$attr_reader("args","optargs","restarg","postargs","kwargs","kwoptargs","kwrestarg","kwnilarg","shadowargs","blockarg"),$def(self,"$initialize",(function(args){return this.args=[],this.optargs=[],this.restarg=nil,this.postargs=[],this.kwargs=[],this.kwoptargs=[],this.kwrestarg=nil,this.kwnilarg=!1,this.shadowargs=[],this.blockarg=nil,$send(args,"each",[],(function $$1(arg){var $ret_or_1,self=null==$$1.$$s?this:$$1.$$s;return null==self.optargs&&(self.optargs=nil),null==self.restarg&&(self.restarg=nil),null==self.postargs&&(self.postargs=nil),null==self.args&&(self.args=nil),null==self.kwargs&&(self.kwargs=nil),null==self.kwoptargs&&(self.kwoptargs=nil),null==self.shadowargs&&(self.shadowargs=nil),null==arg&&(arg=nil),$eqeqeq("arg",$ret_or_1=arg.$type())||$eqeqeq("mlhs",$ret_or_1)?($truthy(self.restarg)||$truthy(self.optargs["$any?"]())?self.postargs:self.args)["$<<"](arg):$eqeqeq("optarg",$ret_or_1)?self.optargs["$<<"](arg):$eqeqeq("restarg",$ret_or_1)?self.restarg=arg:$eqeqeq("kwarg",$ret_or_1)?self.kwargs["$<<"](arg):$eqeqeq("kwoptarg",$ret_or_1)?self.kwoptargs["$<<"](arg):$eqeqeq("kwnilarg",$ret_or_1)?self.kwnilarg=!0:$eqeqeq("kwrestarg",$ret_or_1)?self.kwrestarg=arg:$eqeqeq("shadowarg",$ret_or_1)?self.shadowargs["$<<"](arg):$eqeqeq("blockarg",$ret_or_1)?self.blockarg=arg:self.$raise("Unsupported arg type "+arg.$type())}),{$$arity:1,$$s:this})}),1),$def(self,"$has_post_args?",(function(){var $ret_or_1,$ret_or_2=nil;return $truthy($ret_or_1=$truthy($ret_or_2=this.restarg["$nil?"]()["$!"]())?$ret_or_2:this.postargs["$any?"]())?$ret_or_1:$truthy($ret_or_2=this["$has_any_kwargs?"]())?this["$can_inline_kwargs?"]()["$!"]():$ret_or_2}),0),$def(self,"$has_any_kwargs?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.kwargs["$any?"]())?$ret_or_2:this.kwoptargs["$any?"]())?$ret_or_1:this.kwrestarg["$nil?"]()["$!"]()}),0),$def(self,"$can_inline_kwargs?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.optargs["$empty?"]())?this.restarg["$nil?"]():$ret_or_2)?this.postargs["$empty?"]():$ret_or_1}),0)}([$module($base,"Rewriters")].concat($parent_nesting)[0])}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/inline_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$hash2=Opal.hash2,$def=Opal.def,$const_set=Opal.const_set,$send=Opal.send,$eqeq=Opal.eqeq,$Opal=Opal.Opal;return Opal.add_stubs("require,s,new,updated,inline,prepend_to_body,initialization,attr_reader,freeze,children,each,send,any?,blockarg,<<,shadowargs,args,==,[],has_post_args?,length,has_any_kwargs?,can_inline_kwargs?,kwargs,kwoptargs,kwrestarg,postargs,optargs,args_to_keep,restarg"),self.$require("opal/rewriters/base"),self.$require("opal/rewriters/arguments"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"InlineArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_def",(function $$on_def(node){var $a,mid,$ret_or_1,inline_args,args=nil,body=nil,initializer=nil;return delete $$on_def.$$p,node=$send2(this,$find_super(this,"on_def",$$on_def,!1,!0),"on_def",[node],null),mid=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),initializer=$$("Initializer").$new(args,$hash2(["type"],{type:"def"})),inline_args=args.$updated(nil,initializer.$inline()),body=this.$prepend_to_body(body,initializer.$initialization()),node.$updated(nil,[mid,inline_args,body])}),1),$def(self,"$on_defs",(function $$on_defs(node){var $a,recv,mid,$ret_or_1,inline_args,args=nil,body=nil,initializer=nil;return delete $$on_defs.$$p,node=$send2(this,$find_super(this,"on_defs",$$on_defs,!1,!0),"on_defs",[node],null),recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],mid=null==$a[1]?nil:$a[1],args=null==$a[2]?nil:$a[2],body=null==$a[3]?nil:$a[3],body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),initializer=$$("Initializer").$new(args,$hash2(["type"],{type:"defs"})),inline_args=args.$updated(nil,initializer.$inline()),body=this.$prepend_to_body(body,initializer.$initialization()),node.$updated(nil,[recv,mid,inline_args,body])}),1),$def(self,"$on_iter",(function $$on_iter(node){var $a,$ret_or_1,inline_args,args=nil,body=nil,initializer=nil;return delete $$on_iter.$$p,node=$send2(this,$find_super(this,"on_iter",$$on_iter,!1,!0),"on_iter",[node],null),args=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],body=null==$a[1]?nil:$a[1],body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),initializer=$$("Initializer").$new(args,$hash2(["type"],{type:"iter"})),inline_args=args.$updated(nil,initializer.$inline()),body=this.$prepend_to_body(body,initializer.$initialization()),node.$updated(nil,[inline_args,body])}),1),function($base,$super,$parent_nesting){var self=$klass($base,$super,"Initializer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.initialization=$proto.args=$proto.inline=nil,self.$attr_reader("inline","initialization"),$const_set($nesting[0],"STEPS",["extract_blockarg","initialize_shadowargs","extract_args","prepare_post_args","prepare_kwargs","extract_optargs","extract_restarg","extract_post_args","extract_kwargs","extract_kwoptargs","extract_kwrestarg"].$freeze()),$def(self,"$initialize",(function(args,$kwargs){var type;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");if(!Opal.hasOwnProperty.call($kwargs.$$smap,"type"))throw Opal.ArgumentError.$new("missing keyword: type");return type=$kwargs.$$smap.type,this.args=$$("Arguments").$new(args.$children()),this.inline=[],this.initialization=[],this.type=type,this.underscore_found=!1,$send($$("STEPS"),"each",[],(function $$1(step){return null==step&&(step=nil),(null==$$1.$$s?this:$$1.$$s).$send(step)}),{$$arity:1,$$s:this}),$truthy(this.initialization["$any?"]())?this.initialization=$send(this,"s",["begin"].concat($to_a(this.initialization))):this.initialization=nil}),2),$def(self,"$extract_blockarg",(function(){var arg=nil;return $truthy(arg=this.args.$blockarg())?this.initialization["$<<"](arg.$updated("extract_blockarg")):nil}),0),$def(self,"$initialize_shadowargs",(function(){return $send(this.args.$shadowargs(),"each",[],(function $$2(arg){var self=null==$$2.$$s?this:$$2.$$s;return null==self.initialization&&(self.initialization=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("initialize_shadowarg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_args",(function(){return $send(this.args.$args(),"each",[],(function $$3(arg){var self=null==$$3.$$s?this:$$3.$$s;return null==self.type&&(self.type=nil),null==self.initialization&&(self.initialization=nil),null==self.underscore_found&&(self.underscore_found=nil),null==self.inline&&(self.inline=nil),null==arg&&(arg=nil),$eqeq(self.type,"iter")&&(self.initialization["$<<"](arg.$updated("initialize_iter_arg")),$eqeq(arg.$children()["$[]"](0),"_")&&($truthy(self.underscore_found)&&(arg=self.$s("fake_arg")),self.underscore_found=!0)),self.inline["$<<"](arg)}),{$$arity:1,$$s:this})}),0),$def(self,"$prepare_post_args",(function(){return $truthy(this.args["$has_post_args?"]())?this.initialization["$<<"](this.$s("prepare_post_args",this.args.$args().$length())):nil}),0),$def(self,"$prepare_kwargs",(function(){return $truthy(this.args["$has_any_kwargs?"]())?($truthy(this.args["$can_inline_kwargs?"]())?this.inline["$<<"](this.$s("arg","$kwargs")):(this.initialization["$<<"](this.$s("extract_kwargs")),this.inline["$<<"](this.$s("fake_arg"))),this.initialization["$<<"](this.$s("ensure_kwargs_are_kwargs"))):nil}),0),$def(self,"$extract_kwargs",(function(){return $send(this.args.$kwargs(),"each",[],(function $$4(arg){var self=null==$$4.$$s?this:$$4.$$s;return null==self.initialization&&(self.initialization=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("extract_kwarg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_kwoptargs",(function(){return $send(this.args.$kwoptargs(),"each",[],(function $$5(arg){var self=null==$$5.$$s?this:$$5.$$s;return null==self.initialization&&(self.initialization=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("extract_kwoptarg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_kwrestarg",(function(){var arg=nil;return $truthy(arg=this.args.$kwrestarg())?this.initialization["$<<"](arg.$updated("extract_kwrestarg")):nil}),0),$def(self,"$extract_post_args",(function(){return $send(this.args.$postargs(),"each",[],(function $$6(arg){var self=null==$$6.$$s?this:$$6.$$s;return null==self.initialization&&(self.initialization=nil),null==self.inline&&(self.inline=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("extract_post_arg")),self.inline["$<<"](self.$s("fake_arg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_optargs",(function(){var has_post_args;return has_post_args=this.args["$has_post_args?"](),$send(this.args.$optargs(),"each",[],(function $$7(arg){var $a,self=null==$$7.$$s?this:$$7.$$s,arg_name=nil,default_value=nil;return null==self.initialization&&(self.initialization=nil),null==self.inline&&(self.inline=nil),null==arg&&(arg=nil),$truthy(has_post_args)?(arg_name=null==($a=[].concat($to_a(arg)))[0]?nil:$a[0],default_value=null==$a[1]?nil:$a[1],self.initialization["$<<"](arg.$updated("extract_post_optarg",[arg_name,default_value,self.$args_to_keep()])),self.inline["$<<"](self.$s("fake_arg"))):(self.inline["$<<"](arg.$updated("arg")),self.initialization["$<<"](arg.$updated("extract_optarg")))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_restarg",(function(){var arg=nil,arg_name=nil;return $truthy(arg=this.args.$restarg())?(arg_name=arg.$children()["$[]"](0),this.initialization["$<<"](arg.$updated("extract_restarg",[arg_name,this.$args_to_keep()])),this.inline["$<<"](this.$s("fake_arg"))):nil}),0),$def(self,"$args_to_keep",(function(){return this.args.$postargs().$length()}),0)}($nesting[0],$$$($$$($Opal,"Rewriters"),"Base"),$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/numblocks"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_ary=Opal.to_ary,$send=Opal.send,$to_a=Opal.to_a,$def=Opal.def;return Opal.add_stubs("require,children,s,gen_args,map"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Numblocks");return $def(self,"$on_numblock",(function(node){var $a,$b,left,arg_count,right;return $b=node.$children(),left=null==($a=$to_ary($b))[0]?nil:$a[0],arg_count=null==$a[1]?nil:$a[1],right=null==$a[2]?nil:$a[2],this.$s("block",left,$send(this,"s",["args"].concat($to_a(this.$gen_args(arg_count)))),right)}),1),$def(self,"$gen_args",(function(arg_count){return $send(Opal.Range.$new(1,arg_count,!1),"map",[],(function $$1(i){return null==i&&(i=nil),(null==$$1.$$s?this:$$1.$$s).$s("arg","_"+i)}),{$$arity:1,$$s:this})}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/returnable_logic"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$def=Opal.def,$rb_minus=Opal.rb_minus,$to_a=Opal.to_a,$send=Opal.send,$send2=Opal.send2,$find_super=Opal.find_super,$slice=Opal.slice,$eqeq=Opal.eqeq;return Opal.add_stubs("require,+,-,children,[]=,meta,s,next_tmp,build_if_from_when,free_tmp,[],process,updated,==,count,first,delete,private,build_rule_from_parts,empty?,type"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ReturnableLogic");return self.$$prototype.counter=nil,$def(self,"$next_tmp",(function(){var $ret_or_1;return this.counter=$truthy($ret_or_1=this.counter)?$ret_or_1:0,this.counter=$rb_plus(this.counter,1),"$ret_or_"+this.counter}),0),$def(self,"$free_tmp",(function(){return this.counter=$rb_minus(this.counter,1)}),0),$def(self,"$reset_tmp_counter!",(function(){return this.counter=nil}),0),$def(self,"$on_if",(function $$on_if(node){var $a,$yield=$$on_if.$$p||nil,test=nil,$writer=nil;return delete $$on_if.$$p,test=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],$truthy(test)&&($writer=["if_test",!0],$send(test.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$send2(this,$find_super(this,"on_if",$$on_if,!1,!0),"on_if",[node],$yield)}),1),$def(self,"$on_case",(function(node){var $a,$b,lhs,whens,$ret_or_1,out,els=nil,lhs_tmp=nil;return lhs=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],$b=($b=$a.length-1)<1?1:$b,whens=$slice.call($a,1,$b),els=null==$a[$b]?nil:$a[$b],els=$truthy($ret_or_1=els)?$ret_or_1:this.$s("nil"),$truthy(lhs)&&(lhs_tmp=this.$next_tmp()),out=this.$build_if_from_when(node,lhs,lhs_tmp,whens,els),$truthy(lhs)&&this.$free_tmp(),out}),1),$def(self,"$on_or",(function(node){var $a,lhs=nil,rhs=nil,$writer=nil,out=nil,lhs_tmp=nil;return lhs=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],$truthy(node.$meta()["$[]"]("if_test"))?($writer=["if_test",($writer=["if_test",!0],$send(rhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])],$send(lhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],out=this.$process(node.$updated("if",[lhs,this.$s("true"),rhs]))):(lhs_tmp=this.$next_tmp(),out=this.$process(node.$updated("if",[this.$s("lvasgn",lhs_tmp,lhs),this.$s("js_tmp",lhs_tmp),rhs])),this.$free_tmp()),out}),1),$def(self,"$on_and",(function(node){var $a,lhs=nil,rhs=nil,$writer=nil,out=nil,lhs_tmp=nil;return lhs=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],$truthy(node.$meta()["$[]"]("if_test"))?($writer=["if_test",($writer=["if_test",!0],$send(rhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])],$send(lhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],out=this.$process(node.$updated("if",[lhs,rhs,this.$s("false")]))):(lhs_tmp=this.$next_tmp(),out=this.$process(node.$updated("if",[this.$s("lvasgn",lhs_tmp,lhs),rhs,this.$s("js_tmp",lhs_tmp)])),this.$free_tmp()),out}),1),$def(self,"$on_begin",(function $$on_begin(node){var $yield=$$on_begin.$$p||nil,$writer=nil;return delete $$on_begin.$$p,$truthy(node.$meta()["$[]"]("if_test"))&&$eqeq(node.$children().$count(),1)&&($writer=["if_test",!0],$send(node.$children().$first().$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),node.$meta().$delete("if_test"),$send2(this,$find_super(this,"on_begin",$$on_begin,!1,!0),"on_begin",[node],$yield)}),1),self.$private(),$def(self,"$build_if_from_when",(function(node,lhs,lhs_tmp,whens,els){var $a,$b,parts,expr,rule,first_when=nil,next_whens=nil;return first_when=null==($a=[].concat($to_a(whens)))[0]?nil:$a[0],next_whens=$slice.call($a,1),$b=($b=($a=[].concat($to_a(first_when.$children()))).length-1)<0?0:$b,parts=$slice.call($a,0,$b),expr=null==$a[$b]?nil:$a[$b],rule=this.$build_rule_from_parts(node,lhs,lhs_tmp,parts),first_when.$updated("if",[rule,this.$process(expr),$truthy(next_whens["$empty?"]())?this.$process(els):this.$build_if_from_when(nil,nil,lhs_tmp,next_whens,els)])}),5),$def(self,"$build_rule_from_parts",(function(node,lhs,lhs_tmp,parts){var $a,subrule,first_part=nil,next_parts=nil,splat_on=nil,iter_val=nil,block=nil;return lhs=$truthy(node)&&$truthy(lhs_tmp)?node.$updated("lvasgn",[lhs_tmp,this.$process(lhs)]):this.$s("js_tmp",lhs_tmp),first_part=null==($a=[].concat($to_a(parts)))[0]?nil:$a[0],next_parts=$slice.call($a,1),subrule=$eqeq(first_part.$type(),"splat")?(splat_on=first_part.$children().$first(),iter_val=this.$next_tmp(),block=this.$s("send",this.$process(splat_on),"any?",this.$s("iter",this.$s("args",this.$s("arg",iter_val)),this.$build_rule_from_parts(nil,nil,lhs_tmp,[this.$s("lvar",iter_val)]))),$truthy(node)&&$truthy(lhs_tmp)?this.$s("begin",lhs,block):block):$truthy(lhs_tmp)?this.$s("send",this.$process(first_part),"===",lhs):this.$process(first_part),$truthy(next_parts["$empty?"]())?subrule:this.$s("if",subrule,this.$s("true"),this.$build_rule_from_parts(nil,nil,lhs_tmp,next_parts))}),4)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/forward_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$range=Opal.range,$to_a=Opal.to_a,$send2=Opal.send2,$find_super=Opal.find_super,$neqeq=Opal.neqeq;return Opal.add_stubs("require,process,s,==,type,last,children,[],updated,!=,class"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ForwardArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_forward_args",(function(_node){return this.$process(this.$s("args",this.$s("forward_arg","$")))}),1),$def(self,"$on_args",(function $$on_args(node){var $yield=$$on_args.$$p||nil,prev_children=nil;return delete $$on_args.$$p,$truthy(node.$children().$last())&&$eqeq(node.$children().$last().$type(),"forward_arg")?(prev_children=node.$children()["$[]"]($range(0,-2,!1)),node.$updated(nil,[].concat($to_a(prev_children)).concat([this.$s("restarg","$fwd_rest"),this.$s("blockarg","$fwd_block")]))):$send2(this,$find_super(this,"on_args",$$on_args,!1,!0),"on_args",[node],$yield)}),1),$def(self,"$on_send",(function $$on_send(node){var $yield=$$on_send.$$p||nil,prev_children=nil;return delete $$on_send.$$p,$truthy(node.$children().$last())&&$neqeq(node.$children().$last().$class(),$$("Symbol"))&&$eqeq(node.$children().$last().$type(),"forwarded_args")?(prev_children=node.$children()["$[]"]($range(0,-2,!1)),node.$updated(nil,[].concat($to_a(prev_children)).concat([this.$s("splat",this.$s("lvar","$fwd_rest")),this.$s("block_pass",this.$s("lvar","$fwd_block"))]))):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("require,<<,list,delete,use,disabled?,class,each,new,process"),self.$require("opal/rewriters/opal_engine_check"),self.$require("opal/rewriters/for_rewriter"),self.$require("opal/rewriters/explicit_writer_return"),self.$require("opal/rewriters/js_reserved_words"),self.$require("opal/rewriters/block_to_iter"),self.$require("opal/rewriters/dot_js_syntax"),self.$require("opal/rewriters/pattern_matching"),self.$require("opal/rewriters/logical_operator_assignment"),self.$require("opal/rewriters/binary_operator_assignment"),self.$require("opal/rewriters/hashes/key_duplicates_rewriter"),self.$require("opal/rewriters/dump_args"),self.$require("opal/rewriters/mlhs_args"),self.$require("opal/rewriters/inline_args"),self.$require("opal/rewriters/numblocks"),self.$require("opal/rewriters/returnable_logic"),self.$require("opal/rewriters/forward_args"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Rewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.sexp=nil,function(self,$parent_nesting){$def(self,"$list",(function(){var $ret_or_1;return null==this.list&&(this.list=nil),this.list=$truthy($ret_or_1=this.list)?$ret_or_1:[]}),0),$def(self,"$use",(function(rewriter){return this.$list()["$<<"](rewriter)}),1),$def(self,"$delete",(function(rewriter){return this.$list().$delete(rewriter)}),1),$def(self,"$disable",(function $$disable(){var $yield=$$disable.$$p||nil,self=this;return delete $$disable.$$p,function(){try{return self.disabled=!0,Opal.yieldX($yield,[])}finally{self.disabled=!1}}()}),0),$def(self,"$disabled?",(function(){var $a;return null==this.disabled&&(this.disabled=nil),$truthy(null!=($a=this.disabled)&&$a!==nil?"instance-variable":nil)?this.disabled:nil}),0)}(Opal.get_singleton_class(self)),self.$use($$$($$("Rewriters"),"OpalEngineCheck")),self.$use($$$($$("Rewriters"),"ForRewriter")),self.$use($$$($$("Rewriters"),"Numblocks")),self.$use($$$($$("Rewriters"),"ForwardArgs")),self.$use($$$($$("Rewriters"),"BlockToIter")),self.$use($$$($$("Rewriters"),"DotJsSyntax")),self.$use($$$($$("Rewriters"),"PatternMatching")),self.$use($$$($$("Rewriters"),"JsReservedWords")),self.$use($$$($$("Rewriters"),"LogicalOperatorAssignment")),self.$use($$$($$("Rewriters"),"BinaryOperatorAssignment")),self.$use($$$($$("Rewriters"),"ExplicitWriterReturn")),self.$use($$$($$$($$("Rewriters"),"Hashes"),"KeyDuplicatesRewriter")),self.$use($$$($$("Rewriters"),"ReturnableLogic")),self.$use($$$($$("Rewriters"),"DumpArgs")),self.$use($$$($$("Rewriters"),"MlhsArgs")),self.$use($$$($$("Rewriters"),"InlineArgs")),$def(self,"$initialize",(function(sexp){return this.sexp=sexp}),1),$def(self,"$process",(function(){return $truthy(this.$class()["$disabled?"]())||$send(this.$class().$list(),"each",[],(function $$3(rewriter_class){var self=null==$$3.$$s?this:$$3.$$s,rewriter=nil;return null==self.sexp&&(self.sexp=nil),null==rewriter_class&&(rewriter_class=nil),rewriter=rewriter_class.$new(),self.sexp=rewriter.$process(self.sexp)}),{$$arity:1,$$s:this}),this.sexp}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/parser/source_buffer"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$defs=Opal.defs;return function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"SourceBuffer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$recognize_encoding",(function $$recognize_encoding(string){var $ret_or_1,$yield=$$recognize_encoding.$$p||nil;return delete $$recognize_encoding.$$p,$truthy($ret_or_1=$send2(this,$find_super(this,"recognize_encoding",$$recognize_encoding,!1,!0),"recognize_encoding",[string],$yield))?$ret_or_1:$$$($$("Encoding"),"UTF_8")}),1)}($nesting[0],$$$($$$($$$("Parser"),"Source"),"Buffer"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/parser/default_config"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$send2=Opal.send2,$find_super=Opal.find_super,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$lambda=Opal.lambda,$defs=Opal.defs;return Opal.add_stubs("attr_accessor,all_errors_are_fatal=,diagnostics,-,ignore_warnings=,diagnostics_consumer,consumer=,extend,diagnostics_consumer=,new,rewrite,process,default_parser,default_parser_class"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Parser"),$nesting=[self].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"DefaultConfig"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);(function($base){var self=$module($base,"ClassMethods");self.$attr_accessor("diagnostics_consumer"),$def(self,"$default_parser",(function $$default_parser(){var $yield=$$default_parser.$$p||nil,parser=nil,$writer=nil;return delete $$default_parser.$$p,parser=$send2(this,$find_super(this,"default_parser",$$default_parser,!1,!0),"default_parser",[],$yield),$writer=[!0],$send(parser.$diagnostics(),"all_errors_are_fatal=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(parser.$diagnostics(),"ignore_warnings=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[this.$diagnostics_consumer()],$send(parser.$diagnostics(),"consumer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],parser}),0)})($nesting[0]),$defs(self,"$included",(function(klass){var $writer;return klass.$extend($$("ClassMethods")),$writer=[$lambda((function(diagnostic){return null==diagnostic&&(diagnostic=nil),nil}),1)],$send(klass,"diagnostics_consumer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$initialize",(function $$initialize($a){var self=this;return delete $$initialize.$$p,Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",[$$$($$$($$("Opal"),"AST"),"Builder").$new()],null)}),-1),$def(self,"$parse",(function $$parse(source_buffer){var parsed,$yield=$$parse.$$p||nil;return delete $$parse.$$p,parsed=$send2(this,$find_super(this,"parse",$$parse,!1,!0),"parse",[source_buffer],$yield),this.$rewrite(parsed)}),1),$def(self,"$rewrite",(function(node){return $$$($$("Opal"),"Rewriter").$new(node).$process()}),1)}($nesting[0],$nesting),function(self,$parent_nesting){return self.$attr_accessor("default_parser_class"),$def(self,"$default_parser",(function(){return this.$default_parser_class().$default_parser()}),0)}(Opal.get_singleton_class(self))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/parser/with_ruby_lexer"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),$$$=(Opal.nil,Opal.$$$),$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus;return Opal.add_stubs("include,default_parser_class=,-"),function($base,$super,$parent_nesting){var $writer,self=$klass($base,$super,"WithRubyLexer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$include($$$($$$($$("Opal"),"Parser"),"DefaultConfig")),$writer=[self],$send($$$($$("Opal"),"Parser"),"default_parser_class=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}($$$($$("Opal"),"Parser"),$$$($$("Parser"),"Ruby31"),$nesting)},Opal.modules["opal/parser/patch"]=function(Opal){var $base,self,$nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$rb_plus=Opal.rb_plus,$send=Opal.send,$hash2=Opal.hash2,$eqeqeq=Opal.eqeqeq,$eqeq=Opal.eqeq,$not=Opal.not,$rb_le=Opal.rb_le,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$rb_divide=Opal.rb_divide,$to_a=Opal.to_a,$module=Opal.module;return Opal.add_stubs("source,unpack,+,to_a,lines,end_with?,<<,map,chomp,=~,diagnostic,nil?,new,===,type,updated,dedent,first,children,==,empty?,interrupt,compact,encoding,split,force_encoding,length,map!,each_with_index,!,each_char,<=,-,>,*,/,[],[]=,join,respond_to?,send,value"),$base=$$("Parser"),(self=$klass($base,null,"Lexer")).$$prototype.source_buffer=nil,$def(self,"$source_buffer=",(function(source_buffer){var source=nil;return this.source_buffer=source_buffer,$truthy(this.source_buffer)?(source=this.source_buffer.$source(),this.source_pts=source.$unpack("U*")):this.source_pts=nil}),1),function($base,$super){var self=$klass($base,null,"Literal"),$proto=self.$$prototype;$proto.buffer_s=$proto.buffer=nil,Opal.udef(self,"$extend_string"),$def(self,"$extend_string",(function(string,ts,te){var $ret_or_1;return this.buffer_s=$truthy($ret_or_1=this.buffer_s)?$ret_or_1:ts,this.buffer_e=te,this.buffer=$rb_plus(this.buffer,string)}),3)}($$$($$("Parser"),"Lexer")),function($base,$super){var self=$klass($base,null,"Buffer"),$proto=self.$$prototype;$proto.lines=$proto.source=nil,$def(self,"$source_lines",(function(){var $ret_or_1,lines=nil;return this.lines=$truthy($ret_or_1=this.lines)?$ret_or_1:(lines=this.source.$lines().$to_a(),$truthy(this.source["$end_with?"]("\n"))&&lines["$<<"](""),$send(lines,"map",[],(function(line){return null==line&&(line=nil),line.$chomp("\n")}),1))}),0)}($$$($$("Parser"),"Source")),function($base,$super){var self=$klass($base,null,"Default");$def(self,"$check_lvar_name",(function(name,loc){return $truthy(name["$=~"](new RegExp("^[\\p{Ll}|_][\\p{L}\\p{Nl}\\p{Nd}_]*$","u")))?nil:this.$diagnostic("error","lvar_name",$hash2(["name"],{name:name}),loc)}),2),$def(self,"$dedent_string",(function(node,dedent_level){var dedenter=nil,$ret_or_1=nil,children=nil;return $truthy(dedent_level["$nil?"]())||(dedenter=$$$($$$($$$("Parser"),"Lexer"),"Dedenter").$new(dedent_level),$eqeqeq("str",$ret_or_1=node.$type())?node=node.$updated(nil,[dedenter.$dedent(node.$children().$first())]):($eqeqeq("dstr",$ret_or_1)||$eqeqeq("xstr",$ret_or_1))&&(children=$send(node.$children(),"map",[],(function(str_node){if(null==str_node&&(str_node=nil),$eqeq(str_node.$type(),"str")){if(str_node=str_node.$updated(nil,[dedenter.$dedent(str_node.$children().$first())]),$truthy(str_node.$children().$first()["$empty?"]()))return nil}else dedenter.$interrupt();return str_node}),1),node=node.$updated(nil,children.$compact()))),node}),2)}($$$($$("Parser"),"Builders")),function($base,$super,$parent_nesting){var self=$klass($base,null,"Dedenter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$dedent",(function(string){var original_encoding,self=this,lines=nil;return original_encoding=string.$encoding(),lines=string.$force_encoding($$$($$("Encoding"),"BINARY")).$split("\\\n"),$eqeq(lines.$length(),1)?lines=[string.$force_encoding(original_encoding)]:$send(lines,"map!",[],(function(s){return null==s&&(s=nil),s.$force_encoding(original_encoding)}),1),function(){var $brk=Opal.new_brk();try{$send(lines,"each_with_index",[],(function $$5(line,index){var $writer,self=null==$$5.$$s?this:$$5.$$s,left_to_remove=nil,remove=nil;return null==self.at_line_begin&&(self.at_line_begin=nil),null==self.dedent_level&&(self.dedent_level=nil),null==line&&(line=nil),null==index&&(index=nil),$eqeq(index,0)&&$not(self.at_line_begin)?nil:(left_to_remove=self.dedent_level,remove=0,function(){var $brk=Opal.new_brk();try{$send(line,"each_char",[],(function $$6(char$){var $ret_or_1,self=null==$$6.$$s?this:$$6.$$s;return null==self.dedent_level&&(self.dedent_level=nil),null==char$&&(char$=nil),$truthy($rb_le(left_to_remove,0))&&Opal.brk(nil,$brk),$eqeqeq(" ",$ret_or_1=char$)?(remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,1)):$eqeqeq("\t",$ret_or_1)?($truthy($rb_gt($rb_times($$("TAB_WIDTH"),$rb_plus($rb_divide(remove,$$("TAB_WIDTH")),1)),self.dedent_level))&&Opal.brk(nil,$brk),remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,$$("TAB_WIDTH"))):void Opal.brk(nil,$brk)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),$writer=[index,line["$[]"](Opal.Range.$new(remove,-1,!1))],$send(lines,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),{$$arity:2,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),string=lines.$join(),self.at_line_begin=string["$end_with?"]("\n"),string}),1)}($$$($$("Parser"),"Lexer"),0,$nesting),function($base){var self=$module($base,"Mixin");Opal.udef(self,"$process"),$def(self,"$process",(function(node){var type,on_handler,$ret_or_1=nil,$writer=nil,handler=nil;return null==this._on_handler_cache&&(this._on_handler_cache=nil),$truthy(node["$nil?"]())?nil:(this._on_handler_cache=$truthy($ret_or_1=this._on_handler_cache)?$ret_or_1:$hash2([],{}),type=node.$type(),on_handler=$truthy($ret_or_1=this._on_handler_cache["$[]"](type))?$ret_or_1:($writer=[type,(handler="on_"+type,$truthy(this["$respond_to?"](handler))||(handler="handler_missing"),handler)],$send(this._on_handler_cache,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy($ret_or_1=this.$send(on_handler,node))?$ret_or_1:node)}),1)}($$$($$("AST"),"Processor")),function($base,$super){var self=$klass($base,null,"Default");return Opal.udef(self,"$string_value"),$def(self,"$string_value",(function(token){return this.$value(token)}),1)}($$$($$("Parser"),"Builders"))},Opal.modules["opal/parser"]=function(Opal){var self=Opal.top;Opal.nil;return Opal.add_stubs("require"),self.$require("opal/ast/builder"),self.$require("opal/rewriter"),self.$require("opal/parser/source_buffer"),self.$require("opal/parser/default_config"),self.$require("opal/parser/with_ruby_lexer"),self.$require("opal/parser/patch")},Opal.modules["opal/fragment"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt,$to_a=Opal.to_a,$not=Opal.not,$send=Opal.send;return Opal.add_stubs("attr_reader,to_s,inspect,===,type,[],meta,source_map_name_for,sexp,==,class,+,parent,>,!,first,children,loc,respond_to?,dot,selector,operator,begin,line,location,column"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Fragment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.code=$proto.scope=$proto.sexp=nil,self.$attr_reader("code"),$def(self,"$initialize",(function(code,scope,sexp){return null==sexp&&(sexp=nil),this.code=code.$to_s(),this.sexp=sexp,this.scope=scope}),-3),$def(self,"$inspect",(function(){return"f("+this.code.$inspect()+")"}),0),$def(self,"$source_map_name_for",(function(sexp){var $a,$ret_or_1,$ret_or_2=nil,scope=nil,iters=nil,level=nil,const$=nil,name=nil;if($eqeqeq("top",$ret_or_1=sexp.$type()))return $eqeqeq("require",$ret_or_2=sexp.$meta()["$[]"]("kind"))?"":$eqeqeq("eval",$ret_or_2)?"(eval)":$eqeqeq("main",$ret_or_2)?"
    ":nil;if($eqeqeq("begin",$ret_or_1)||$eqeqeq("newline",$ret_or_1)||$eqeqeq("js_return",$ret_or_1))return $truthy(this.scope)?this.$source_map_name_for(this.scope.$sexp()):nil;if($eqeqeq("iter",$ret_or_1)){for(scope=this.scope,iters=1;$truthy(scope)&&$eqeq(scope.$class(),$$$($$("Nodes"),"IterNode"));)iters=$rb_plus(iters,1),scope=scope.$parent();return $truthy($rb_gt(iters,1))&&(level=" ("+iters+" levels)"),"block"+level+" in "+this.$source_map_name_for(scope.$sexp())}return $eqeqeq("self",$ret_or_1)?"self":$eqeqeq("module",$ret_or_1)?(const$=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],""):$eqeqeq("class",$ret_or_1)?(const$=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],""):$eqeqeq("const",$ret_or_1)?(scope=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],$not(scope)||$eqeq(scope.$type(),"cbase")?name.$to_s():this.$source_map_name_for(scope)+"::"+name):$eqeqeq("int",$ret_or_1)||$eqeqeq("def",$ret_or_1)?sexp.$children().$first():$eqeqeq("defs",$ret_or_1)||$eqeqeq("send",$ret_or_1)?sexp.$children()["$[]"](1):$eqeqeq("lvar",$ret_or_1)||$eqeqeq("lvasgn",$ret_or_1)||$eqeqeq("lvdeclare",$ret_or_1)||$eqeqeq("ivar",$ret_or_1)||$eqeqeq("ivasgn",$ret_or_1)||$eqeqeq("gvar",$ret_or_1)||$eqeqeq("cvar",$ret_or_1)||$eqeqeq("cvasgn",$ret_or_1)||$eqeqeq("gvars",$ret_or_1)||$eqeqeq("gvasgn",$ret_or_1)||$eqeqeq("arg",$ret_or_1)?sexp.$children().$first():$eqeqeq("str",$ret_or_1)||$eqeqeq("xstr",$ret_or_1)?this.$source_map_name_for(this.scope.$sexp()):nil}),1),$def(self,"$source_map_name",(function(){return $truthy(this.sexp)?this.$source_map_name_for(this.sexp):nil}),0),$def(self,"$location",(function(){var loc=nil,$ret_or_1=nil;return $not(this.sexp)?nil:$eqeq(this.sexp.$type(),"send")?(loc=this.sexp.$loc(),$truthy(loc["$respond_to?"]("dot"))?$truthy($ret_or_1=loc.$dot())?$ret_or_1:loc.$selector():$truthy(loc["$respond_to?"]("operator"))?loc.$operator():this.sexp):$eqeq(this.sexp.$type(),"iter")&&$truthy(loc["$respond_to?"]("begin"))?this.sexp.$loc().$begin():this.sexp}),0),$def(self,"$line",(function(){var $a;return($a=this.$location())===nil||null==$a?nil:$send($a,"line",[])}),0),$def(self,"$column",(function(){var $a;return($a=this.$location())===nil||null==$a?nil:$send($a,"column",[])}),0),$def(self,"$skip_source_map?",(function(){return this.sexp["$=="](!1)}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/helpers"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$truthy=Opal.truthy,$def=Opal.def,$rb_plus=Opal.rb_plus,$send=Opal.send,$hash2=Opal.hash2,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$slice=Opal.slice,$eqeq=Opal.eqeq,$rb_minus=Opal.rb_minus;return Opal.add_stubs("require,valid_name?,inspect,=~,to_s,+,indent,compiler,to_proc,parser_indent,push,fragment,current_indent,js_truthy_optimize,helper,expr,===,type,[],handlers,include?,truthy_optimize?,==,count,<<,method_calls,first,children,s,[]=,meta,-,new_temp,scope,wrap"),self.$require("opal/regexp_anchors"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Helpers"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$property",(function(name){return $truthy(this["$valid_name?"](name))?"."+name:"["+name.$inspect()+"]"}),1),$def(self,"$valid_name?",(function(name){return $$$($$$($$("Opal"),"Rewriters"),"JsReservedWords")["$valid_name?"](name)}),1),$def(self,"$mid_to_jsid",(function(mid){return $truthy(/\=|\+|\-|\*|\/|\!|\?|<|\>|\&|\||\^|\%|\~|\[|`/["$=~"](mid.$to_s()))?"['$"+mid+"']":$rb_plus(".$",mid)}),1),$def(self,"$indent",(function $$indent(){var block=$$indent.$$p||nil;return delete $$indent.$$p,$send(this.$compiler(),"indent",[],block.$to_proc())}),0),$def(self,"$current_indent",(function(){return this.$compiler().$parser_indent()}),0),$def(self,"$line",(function($a){var strs,self=this;return strs=Opal.slice.call(arguments),self.$push(self.$fragment("\n"+self.$current_indent(),$hash2(["loc"],{loc:!1}))),$send(self,"push",$to_a(strs))}),-1),$def(self,"$empty_line",(function(){return this.$push(this.$fragment("\n",$hash2(["loc"],{loc:!1})))}),0),$def(self,"$js_truthy",(function(sexp){var optimize;return $truthy(optimize=this.$js_truthy_optimize(sexp))?optimize:(this.$helper("truthy"),[this.$fragment("$truthy("),this.$expr(sexp),this.$fragment(")")])}),1),$def(self,"$js_truthy_optimize",(function(sexp){var $a,$ret_or_1,receiver=nil,mid=nil,args=nil,receiver_handler_class=nil,$ret_or_2=nil,allow_optimization_on_type=nil,$ret_or_3=nil,true_body=nil,false_body=nil,$writer=nil;return $eqeqeq("send",$ret_or_1=sexp.$type())?(receiver=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],mid=null==$a[1]?nil:$a[1],args=$slice.call($a,2),receiver_handler_class=$truthy($ret_or_2=receiver)?this.$compiler().$handlers()["$[]"](receiver.$type()):$ret_or_2,allow_optimization_on_type=$truthy($ret_or_2=$truthy($ret_or_3=$$$($$("Compiler"),"COMPARE")["$include?"](mid.$to_s()))?receiver_handler_class:$ret_or_3)?receiver_handler_class["$truthy_optimize?"]():$ret_or_2,$truthy(allow_optimization_on_type)||$eqeq(mid,"block_given?")?this.$expr(sexp):$eqeq(args.$count(),1)?$eqeqeq("==",$ret_or_2=mid)?(this.$helper("eqeq"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$eqeq("),this.$expr(receiver),this.$fragment(", "),this.$expr(args.$first()),this.$fragment(")")]):$eqeqeq("===",$ret_or_2)?(this.$helper("eqeqeq"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$eqeqeq("),this.$expr(receiver),this.$fragment(", "),this.$expr(args.$first()),this.$fragment(")")]):$eqeqeq("!=",$ret_or_2)?(this.$helper("neqeq"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$neqeq("),this.$expr(receiver),this.$fragment(", "),this.$expr(args.$first()),this.$fragment(")")]):nil:$eqeq(args.$count(),0)&&$eqeqeq("!",$ret_or_2=mid)?(this.$helper("not"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$not("),this.$expr(receiver),this.$fragment(")")]):nil):$eqeqeq("begin",$ret_or_1)?$eqeq(sexp.$children().$count(),1)?this.$js_truthy_optimize(sexp.$children().$first()):nil:$eqeqeq("if",$ret_or_1)?(null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],true_body=null==$a[1]?nil:$a[1],false_body=null==$a[2]?nil:$a[2],$eqeq(true_body,this.$s("true"))?($writer=["do_js_truthy_on_false_body",!0],$send(sexp.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$expr(sexp)):$eqeq(false_body,this.$s("false"))?($writer=["do_js_truthy_on_true_body",!0],$send(sexp.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$expr(sexp)):nil):nil}),1),$def(self,"$conditional_send",(function $$conditional_send(recvr){var receiver_temp,$yield=$$conditional_send.$$p||nil;return delete $$conditional_send.$$p,receiver_temp=this.$scope().$new_temp(),this.$push(receiver_temp+" = ",recvr),this.$push(", ("+receiver_temp+" === nil || "+receiver_temp+" == null) ? nil : "),Opal.yield1($yield,receiver_temp),this.$wrap("(",")")}),1)}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/base"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$defs=Opal.defs,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$Opal=Opal.Opal,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,include,each,[]=,handlers,-,each_with_index,define_method,[],children,attr_reader,type,top_scope,top_scope=,compile,raise,is_a?,fragment,<<,reverse_each,unshift,push,new,scope,error,loc,==,process,expr,add_scope_local,to_sym,add_scope_ivar,add_scope_gvar,add_scope_temp,helper,with_temp,to_proc,in_while?,instance_variable_get,has_rescue_else?,in_ensure,in_ensure?,in_resbody,in_resbody?,in_rescue,!,class_scope?,sclass?,+,parent,nesting,class_variable_owner_nesting_level,comments,compiler,name,source_buffer,expression,start_with?,end_with?,line"),self.$require("opal/nodes/helpers"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Base"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.compiler=$proto.sexp=$proto.fragments=$proto.level=nil,self.$include($$("Helpers")),$defs(self,"$handlers",(function(){var $ret_or_1;return null==this.handlers&&(this.handlers=nil),this.handlers=$truthy($ret_or_1=this.handlers)?$ret_or_1:$hash2([],{})}),0),$defs(self,"$handle",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each",[],(function $$1(type){var $writer;return null==type&&(type=nil),$writer=[type,null==$$1.$$s?this:$$1.$$s],$send($$("Base").$handlers(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})}),-1),$defs(self,"$children",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each_with_index",[],(function $$2(name,idx){var self=null==$$2.$$s?this:$$2.$$s;return null==name&&(name=nil),null==idx&&(idx=nil),$send(self,"define_method",[name],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return null==self.sexp&&(self.sexp=nil),self.sexp.$children()["$[]"](idx)}),{$$arity:0,$$s:self})}),{$$arity:2,$$s:self})}),-1),$defs(self,"$truthy_optimize?",(function(){return!1}),0),self.$attr_reader("compiler","type","sexp"),$def(self,"$initialize",(function(sexp,level,compiler){var $ret_or_1,$writer=nil;return this.sexp=sexp,this.type=sexp.$type(),this.level=level,this.compiler=compiler,$truthy($ret_or_1=this.compiler.$top_scope())?$ret_or_1:($writer=[this],$send(this.compiler,"top_scope=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),3),$def(self,"$children",(function(){return this.sexp.$children()}),0),$def(self,"$compile_to_fragments",(function(){var $a;return $truthy(null!=($a=this.fragments)&&$a!==nil?"instance-variable":nil)||(this.fragments=[],this.$compile()),this.fragments}),0),$def(self,"$compile",(function(){return this.$raise("Not Implemented")}),0),$def(self,"$push",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each",[],(function $$5(str){var self=null==$$5.$$s?this:$$5.$$s;return null==self.fragments&&(self.fragments=nil),null==str&&(str=nil),$truthy(str["$is_a?"]($$("String")))&&(str=self.$fragment(str)),self.fragments["$<<"](str)}),{$$arity:1,$$s:self})}),-1),$def(self,"$unshift",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"reverse_each",[],(function $$6(str){var self=null==$$6.$$s?this:$$6.$$s;return null==self.fragments&&(self.fragments=nil),null==str&&(str=nil),$truthy(str["$is_a?"]($$("String")))&&(str=self.$fragment(str)),self.fragments.$unshift(str)}),{$$arity:1,$$s:self})}),-1),$def(self,"$wrap",(function(pre,post){return this.$unshift(pre),this.$push(post)}),2),$def(self,"$fragment",(function(str,$kwargs){var loc,$ret_or_1;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(loc=$kwargs.$$smap.loc)&&(loc=!0),$$$($$("Opal"),"Fragment").$new(str,this.$scope(),$truthy($ret_or_1=loc)?this.sexp:$ret_or_1)}),-2),$def(self,"$error",(function(msg){return this.compiler.$error(msg)}),1),$def(self,"$scope",(function(){return this.compiler.$scope()}),0),$def(self,"$top_scope",(function(){return this.compiler.$top_scope()}),0),$def(self,"$s",(function(type,$a){var children,self=this;return children=Opal.slice.call(arguments,1),$$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:self.sexp.$loc()}))}),-2),$def(self,"$expr?",(function(){return this.level["$=="]("expr")}),0),$def(self,"$recv?",(function(){return this.level["$=="]("recv")}),0),$def(self,"$stmt?",(function(){return this.level["$=="]("stmt")}),0),$def(self,"$process",(function(sexp,level){return null==level&&(level="expr"),this.compiler.$process(sexp,level)}),-2),$def(self,"$expr",(function(sexp){return this.compiler.$process(sexp,"expr")}),1),$def(self,"$recv",(function(sexp){return this.compiler.$process(sexp,"recv")}),1),$def(self,"$stmt",(function(sexp){return this.compiler.$process(sexp,"stmt")}),1),$def(self,"$expr_or_nil",(function(sexp){return $truthy(sexp)?this.$expr(sexp):"nil"}),1),$def(self,"$add_local",(function(name){return this.$scope().$add_scope_local(name.$to_sym())}),1),$def(self,"$add_ivar",(function(name){return this.$scope().$add_scope_ivar(name)}),1),$def(self,"$add_gvar",(function(name){return this.$scope().$add_scope_gvar(name)}),1),$def(self,"$add_temp",(function(temp){return this.$scope().$add_scope_temp(temp)}),1),$def(self,"$helper",(function(name){return this.compiler.$helper(name)}),1),$def(self,"$with_temp",(function $$with_temp(){var block=$$with_temp.$$p||nil;return delete $$with_temp.$$p,$send(this.compiler,"with_temp",[],block.$to_proc())}),0),$def(self,"$in_while?",(function(){return this.compiler["$in_while?"]()}),0),$def(self,"$while_loop",(function(){return this.compiler.$instance_variable_get("@while_loop")}),0),$def(self,"$has_rescue_else?",(function(){return this.$scope()["$has_rescue_else?"]()}),0),$def(self,"$in_ensure",(function $$in_ensure(){var block=$$in_ensure.$$p||nil;return delete $$in_ensure.$$p,$send(this.$scope(),"in_ensure",[],block.$to_proc())}),0),$def(self,"$in_ensure?",(function(){return this.$scope()["$in_ensure?"]()}),0),$def(self,"$in_resbody",(function $$in_resbody(){var block=$$in_resbody.$$p||nil;return delete $$in_resbody.$$p,$send(this.$scope(),"in_resbody",[],block.$to_proc())}),0),$def(self,"$in_resbody?",(function(){return this.$scope()["$in_resbody?"]()}),0),$def(self,"$in_rescue",(function $$in_rescue(node){var block=$$in_rescue.$$p||nil;return delete $$in_rescue.$$p,$send(this.$scope(),"in_rescue",[node],block.$to_proc())}),1),$def(self,"$class_variable_owner_nesting_level",(function(){var cvar_scope=nil,nesting_level=nil,$ret_or_1=nil;for(cvar_scope=this.$scope(),nesting_level=0;$truthy($truthy($ret_or_1=cvar_scope)?cvar_scope["$class_scope?"]()["$!"]():$ret_or_1);)$truthy(cvar_scope["$sclass?"]())&&(nesting_level=$rb_plus(nesting_level,1)),cvar_scope=cvar_scope.$parent();return nesting_level}),0),$def(self,"$class_variable_owner",(function(){return $truthy(this.$scope())?this.$scope().$nesting()+"["+this.$class_variable_owner_nesting_level()+"]":"Opal.Object"}),0),$def(self,"$comments",(function(){return this.$compiler().$comments()["$[]"](this.sexp.$loc())}),0),$def(self,"$source_location",(function(){var file=nil;return file=this.sexp.$loc().$expression().$source_buffer().$name(),$truthy(file["$start_with?"]("corelib/"))&&(file=""),$truthy(file["$end_with?"](".js"))&&(file=""),"['"+file+"', "+this.sexp.$loc().$line()+"]"}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/literal"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def,$defs=Opal.defs,$truthy=Opal.truthy,$const_set=Opal.const_set,$hash2=Opal.hash2,$regexp=Opal.regexp,$send=Opal.send,$rb_plus=Opal.rb_plus,$lambda=Opal.lambda,$rb_le=Opal.rb_le,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$slice=Opal.slice,$Opal=Opal.Opal,$rb_gt=Opal.rb_gt;return Opal.add_stubs("require,handle,==,type,push,self,scope,to_s,children,value,recv?,wrap,freeze,join,keys,gsub,even?,length,last_match,+,chop,[],inspect,to_i,to_utf16,translate_escape_chars,valid_encoding?,helper,upcase,<=,call,-,>>,&,attr_accessor,extract_flags_and_value,select!,flags,=~,warning,compiler,compile_static_regexp,compile_dynamic_regexp,each_with_index,zero?,expr,any?,===,new,map,to_proc,flags=,empty?,s,single_line?,value=,include?,is_a?,updated,delete,source,expression,loc,private,>,!=,!,regexp,first,each,compile_inline?,compile_inline,compile_range_initialize,start,finish,raise,expr_or_nil,numerator,denominator,real,imag"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ValueNode");self.$handle("true","false","self","nil"),$def(self,"$compile",(function(){return $eqeq(this.$type(),"self")?this.$push(this.$scope().$self()):this.$push(this.$type().$to_s())}),0),$defs(self,"$truthy_optimize?",(function(){return!0}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"NumericNode");self.$handle("int","float"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$value().$to_s()),$truthy(this["$recv?"]())?this.$wrap("(",")"):nil}),0),$defs(self,"$truthy_optimize?",(function(){return!0}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"StringNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("str"),self.$children("value"),$const_set($nesting[0],"ESCAPE_CHARS",$hash2(["a","e"],{a:"\\u0007",e:"\\u001b"}).$freeze()),$const_set($nesting[0],"ESCAPE_REGEX",$regexp(["(\\\\+)([",$$("ESCAPE_CHARS").$keys().$join(""),"])"]).$freeze()),$def(self,"$translate_escape_chars",(function(inspect_string){return $send(inspect_string,"gsub",[$$("ESCAPE_REGEX")],(function(original){return null==original&&(original=nil),$truthy($$("Regexp").$last_match(1).$length()["$even?"]())?original:$rb_plus($$("Regexp").$last_match(1).$chop(),$$("ESCAPE_CHARS")["$[]"]($$("Regexp").$last_match(2)))}),1)}),1),$def(self,"$compile",(function(){var sanitized_value,string_value=nil;return string_value=this.$value(),sanitized_value=$send(string_value.$inspect(),"gsub",[/\\u\{([0-9a-f]+)\}/],(function $$4(){var code_point,self=null==$$4.$$s?this:$$4.$$s;return code_point=$$("Regexp").$last_match(1).$to_i(16),self.$to_utf16(code_point)}),{$$arity:0,$$s:this}),this.$push(this.$translate_escape_chars(sanitized_value)),$truthy(this.$value()["$valid_encoding?"]())?nil:(this.$helper("binary"),this.$wrap("$binary(",")"))}),0),$def(self,"$to_utf16",(function(code_point){var lead_surrogate,tail_surrogate,u=nil;return 1023,u=$lambda((function(code_unit){return null==code_unit&&(code_unit=nil),$rb_plus("\\u",code_unit.$to_s(16).$upcase())}),1),$truthy($rb_le(code_point,65535))?u.$call(code_point):(code_point=$rb_minus(code_point,65536),lead_surrogate=$rb_plus(55296,code_point["$>>"](10)),tail_surrogate=$rb_plus(56320,code_point["$&"](1023)),$rb_plus(u.$call(lead_surrogate),u.$call(tail_surrogate)))}),1)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"SymbolNode");self.$handle("sym"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$value().$to_s().$inspect())}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"RegexpNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.sexp=nil,self.$handle("regexp"),self.$attr_accessor("value","flags"),$const_set($nesting[0],"SUPPORTED_FLAGS",/[gimuy]/.$freeze()),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.$extract_flags_and_value()}),-1),$def(self,"$compile",(function(){return $send(this.$flags(),"select!",[],(function $$6(flag){var self=null==$$6.$$s?this:$$6.$$s;return null==flag&&(flag=nil),!!$truthy($$("SUPPORTED_FLAGS")["$=~"](flag))||(self.$compiler().$warning("Skipping the '"+flag+"' Regexp flag as it's not widely supported by JavaScript vendors."),!1)}),{$$arity:1,$$s:this}),$eqeq(this.$value().$type(),"str")?this.$compile_static_regexp():this.$compile_dynamic_regexp()}),0),$def(self,"$compile_dynamic_regexp",(function(){return this.$helper("regexp"),this.$push("$regexp(["),$send(this.$value().$children(),"each_with_index",[],(function $$7(v,index){var self=null==$$7.$$s?this:$$7.$$s;return null==v&&(v=nil),null==index&&(index=nil),$truthy(index["$zero?"]())||self.$push(", "),self.$push(self.$expr(v))}),{$$arity:2,$$s:this}),this.$push("]"),$truthy(this.$flags()["$any?"]())&&this.$push(", '"+this.$flags().$join()+"'"),this.$push(")")}),0),$def(self,"$compile_static_regexp",(function(){var value;return value=this.$value().$children()["$[]"](0),$eqeqeq("",value)?this.$push("/(?:)/"):this.$push(""+$$("Regexp").$new(value).$inspect()+this.$flags().$join())}),0),$def(self,"$extract_flags_and_value",(function(){var $a,$b,values=nil,flags_sexp=nil,$writer=nil,parts=nil;return $b=($b=($a=[].concat($to_a(this.$children()))).length-1)<0?0:$b,values=$slice.call($a,0,$b),flags_sexp=null==$a[$b]?nil:$a[$b],$writer=[$send(flags_sexp.$children(),"map",[],"to_s".$to_proc())],$send(this,"flags=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[$truthy(values["$empty?"]())?this.$s("str",""):$truthy(this["$single_line?"](values))?values["$[]"](0):$send(this,"s",["dstr"].concat($to_a(values)))],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(this.$flags()["$include?"]("x"))&&(parts=$send(this.$value().$children(),"map",[],(function $$8(part){var self=null==$$8.$$s?this:$$8.$$s,trimmed_value=nil;return null==part&&(part=nil),$truthy(part["$is_a?"]($$$($$$($Opal,"AST"),"Node")))&&$eqeq(part.$type(),"str")?(trimmed_value=part.$children()["$[]"](0).$gsub(/^\s*\#.*/,"").$gsub(/\s/,""),self.$s("str",trimmed_value)):part}),{$$arity:1,$$s:this}),$writer=[this.$value().$updated(nil,parts)],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$flags().$delete("x")),$eqeq(this.$value().$type(),"str")?($writer=[this.$s("str",this.$value().$children()["$[]"](0).$gsub("\\A","^").$gsub("\\z","$"))],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),0),$def(self,"$raw_value",(function(){var $writer;return $writer=[this.sexp.$loc().$expression().$source()],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),0),self.$private(),$def(self,"$single_line?",(function(values){var $ret_or_1,value=nil;return!$truthy($rb_gt(values.$length(),1))&&(value=values["$[]"](0),$truthy($ret_or_1=value.$type()["$!="]("str"))?$ret_or_1:value.$children()["$[]"](0)["$include?"]("\n")["$!"]())}),1)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"MatchCurrentLineNode");self.$handle("match_current_line"),self.$children("regexp"),$def(self,"$compile",(function(){var gvar_sexp,send_node;return gvar_sexp=this.$s("gvar","$_"),send_node=this.$s("send",gvar_sexp,"=~",this.$regexp()),this.$push(this.$expr(send_node))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"DynamicStringNode");self.$handle("dstr"),$def(self,"$compile",(function(){var skip_empty=nil;return $truthy($rb_gt(this.$children().$length(),1))&&$eqeq(this.$children().$first().$type(),"str")?skip_empty=!0:this.$push('""'),$send(this.$children(),"each",[],(function $$10(part){var self=null==$$10.$$s?this:$$10.$$s;return null==part&&(part=nil),$truthy(skip_empty)?skip_empty=!1:self.$push(" + "),$eqeq(part.$type(),"str")?self.$push(self.$expr(part)):self.$push("(",self.$expr(part),")"),$truthy(self["$recv?"]())?self.$wrap("(",")"):nil}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("Base")),function($base,$super){$klass($base,$super,"DynamicSymbolNode").$handle("dsym")}($nesting[0],$$("DynamicStringNode")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"RangeNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$children("start","finish"),$const_set($nesting[0],"SIMPLE_CHILDREN_TYPES",["int","float","str","sym"].$freeze()),$def(self,"$compile",(function(){return $truthy(this["$compile_inline?"]())?(this.$helper("range"),this.$compile_inline()):this.$compile_range_initialize()}),0),$def(self,"$compile_inline?",(function(){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $truthy($ret_or_1=$truthy($ret_or_2=this.$start()["$!"]())?$ret_or_2:$truthy($ret_or_3=this.$start().$type())?$$("SIMPLE_CHILDREN_TYPES")["$include?"](this.$start().$type()):$ret_or_3)?$truthy($ret_or_2=this.$finish()["$!"]())?$ret_or_2:$truthy($ret_or_3=this.$finish().$type())?$$("SIMPLE_CHILDREN_TYPES")["$include?"](this.$finish().$type()):$ret_or_3:$ret_or_1}),0),$def(self,"$compile_inline",(function(){return this.$raise($$("NotImplementedError"))}),0),$def(self,"$compile_range_initialize",(function(){return this.$raise($$("NotImplementedError"))}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"InclusiveRangeNode");self.$handle("irange"),$def(self,"$compile_inline",(function(){return this.$push("$range(",this.$expr_or_nil(this.$start()),", ",this.$expr_or_nil(this.$finish()),", false)")}),0),$def(self,"$compile_range_initialize",(function(){return this.$push("Opal.Range.$new(",this.$expr_or_nil(this.$start()),", ",this.$expr_or_nil(this.$finish()),", false)")}),0)}($nesting[0],$$("RangeNode")),function($base,$super){var self=$klass($base,$super,"ExclusiveRangeNode");self.$handle("erange"),$def(self,"$compile_inline",(function(){return this.$push("$range(",this.$expr_or_nil(this.$start()),", ",this.$expr_or_nil(this.$finish()),", true)")}),0),$def(self,"$compile_range_initialize",(function(){return this.$push("Opal.Range.$new(",this.$expr_or_nil(this.$start()),",",this.$expr_or_nil(this.$finish()),", true)")}),0)}($nesting[0],$$("RangeNode")),function($base,$super){var self=$klass($base,$super,"RationalNode");self.$handle("rational"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("Opal.Rational.$new("+this.$value().$numerator()+", "+this.$value().$denominator()+")")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ComplexNode");return self.$handle("complex"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("Opal.Complex.$new("+this.$value().$real()+", "+this.$value().$imag()+")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/variables"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send,$range=Opal.range,$eqeqeq=Opal.eqeqeq,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,handle,children,irb?,compiler,top?,scope,using_irb?,push,to_s,var_name,with_temp,property,wrap,add_local,expr,value,expr?,recv?,[],name,add_ivar,self,helper,add_gvar,===,handle_global_match,handle_post_match,handle_pre_match,raise,index,stmt?,class_variable_owner,inspect"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"LocalVariableNode");self.$handle("lvar"),self.$children("var_name"),$def(self,"$using_irb?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$compiler()["$irb?"]())?this.$scope()["$top?"]():$ret_or_1}),0),$def(self,"$compile",(function(){return $truthy(this["$using_irb?"]())?$send(this,"with_temp",[],(function $$2(tmp){var self=null==$$2.$$s?this:$$2.$$s;return null==tmp&&(tmp=nil),self.$push(self.$property(self.$var_name().$to_s())),self.$wrap("(("+tmp+" = Opal.irb_vars",") == null ? nil : "+tmp+")")}),{$$arity:1,$$s:this}):this.$push(this.$var_name().$to_s())}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"LocalAssignNode");self.$handle("lvasgn"),self.$children("var_name","value"),$def(self,"$using_irb?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$compiler()["$irb?"]())?this.$scope()["$top?"]():$ret_or_1}),0),$def(self,"$compile",(function(){return $truthy(this["$using_irb?"]())?this.$push("Opal.irb_vars"+this.$property(this.$var_name().$to_s())+" = "):(this.$add_local(this.$var_name().$to_s()),this.$push(this.$var_name()+" = ")),this.$push(this.$expr(this.$value())),($truthy(this["$recv?"]())||$truthy(this["$expr?"]()))&&$truthy(this.$value())?this.$wrap("(",")"):nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"LocalDeclareNode");self.$handle("lvdeclare"),self.$children("var_name"),$def(self,"$compile",(function(){return this.$add_local(this.$var_name().$to_s()),nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"InstanceVariableNode");self.$handle("ivar"),self.$children("name"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return name=this.$property(this.$var_name()),this.$add_ivar(name),this.$push(""+this.$scope().$self()+name)}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"InstanceAssignNode");self.$handle("ivasgn"),self.$children("name","value"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return name=this.$property(this.$var_name()),this.$push(""+this.$scope().$self()+name+" = "),this.$push(this.$expr(this.$value())),($truthy(this["$recv?"]())||$truthy(this["$expr?"]()))&&$truthy(this.$value())?this.$wrap("(",")"):nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"GlobalVariableNode");self.$handle("gvar"),self.$children("name"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return this.$helper("gvars"),name=this.$property(this.$var_name()),this.$add_gvar(name),this.$push("$gvars"+name)}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"BackRefNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("back_ref"),$def(self,"$compile",(function $$compile(){var $ret_or_1,$yield=$$compile.$$p||nil;return delete $$compile.$$p,this.$helper("gvars"),$eqeqeq("&",$ret_or_1=this.$var_name())?this.$handle_global_match():$eqeqeq("'",$ret_or_1)?this.$handle_post_match():$eqeqeq("`",$ret_or_1)?this.$handle_pre_match():$eqeqeq("+",$ret_or_1)?$send2(this,$find_super(this,"compile",$$compile,!1,!0),"compile",[],$yield):this.$raise($$("NotImplementedError"))}),0),$def(self,"$handle_global_match",(function(){return $send(this,"with_temp",[],(function $$4(tmp){return null==tmp&&(tmp=nil),(null==$$4.$$s?this:$$4.$$s).$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+"['$[]'](0))")}),{$$arity:1,$$s:this})}),0),$def(self,"$handle_pre_match",(function(){return $send(this,"with_temp",[],(function $$5(tmp){return null==tmp&&(tmp=nil),(null==$$5.$$s?this:$$5.$$s).$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+".$pre_match())")}),{$$arity:1,$$s:this})}),0),$def(self,"$handle_post_match",(function(){return $send(this,"with_temp",[],(function $$6(tmp){return null==tmp&&(tmp=nil),(null==$$6.$$s?this:$$6.$$s).$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+".$post_match())")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("GlobalVariableNode"),$nesting),function($base,$super){var self=$klass($base,$super,"GlobalAssignNode");self.$handle("gvasgn"),self.$children("name","value"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return this.$helper("gvars"),name=this.$property(this.$var_name()),this.$push("$gvars"+name+" = "),this.$push(this.$expr(this.$value())),($truthy(this["$recv?"]())||$truthy(this["$expr?"]()))&&$truthy(this.$value())?this.$wrap("(",")"):nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"NthrefNode");self.$handle("nth_ref"),self.$children("index"),$def(self,"$compile",(function(){return this.$helper("gvars"),$send(this,"with_temp",[],(function $$7(tmp){var self=null==$$7.$$s?this:$$7.$$s;return null==tmp&&(tmp=nil),self.$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+"['$[]']("+self.$index()+"))")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ClassVariableNode");self.$handle("cvar"),self.$children("name"),$def(self,"$compile",(function(){var tolerant=nil;return this.$helper("class_variable_get"),tolerant=!1,$truthy(this["$stmt?"]())&&(tolerant=!0),this.$push("$class_variable_get("+this.$class_variable_owner()+", '"+this.$name()+"', "+tolerant.$inspect()+")")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ClassVarAssignNode");return self.$handle("cvasgn"),self.$children("name","value"),$def(self,"$compile",(function(){return this.$helper("class_variable_set"),this.$push("$class_variable_set("+this.$class_variable_owner()+", '"+this.$name()+"', ",this.$expr(this.$value()),")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/constants"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def,$const_set=Opal.const_set;return Opal.add_stubs("require,handle,children,magical_data_const?,push,optimized_access?,helper,name,==,const_scope,s,absolute_const,top_scope,recv,eval?,compiler,relative_access,scope,nil?,eof_content,freeze,include?,base,expr,value,nesting"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ConstNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("const"),self.$children("const_scope","name"),$def(self,"$compile",(function(){return $truthy(this["$magical_data_const?"]())?this.$push("$__END__"):$truthy(this["$optimized_access?"]())?(this.$helper(""+this.$name()),this.$push("$"+this.$name())):$eqeq(this.$const_scope(),this.$s("cbase"))?this.$push(this.$top_scope().$absolute_const()+"('"+this.$name()+"')"):$truthy(this.$const_scope())?this.$push(this.$top_scope().$absolute_const()+"(",this.$recv(this.$const_scope()),", '"+this.$name()+"')"):($truthy(this.$compiler()["$eval?"]()),this.$push(this.$scope().$relative_access()+"('"+this.$name()+"')"))}),0),$def(self,"$magical_data_const?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.$const_scope()["$nil?"]())?this.$name()["$=="]("DATA"):$ret_or_2)?this.$compiler().$eof_content():$ret_or_1}),0),$const_set($nesting[0],"OPTIMIZED_ACCESS_CONSTS",["BasicObject","Object","Module","Class","Opal","Kernel","NilClass"].$freeze()),$def(self,"$optimized_access?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$const_scope()["$=="](this.$s("cbase")))?$$("OPTIMIZED_ACCESS_CONSTS")["$include?"](this.$name()):$ret_or_1}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"CbaseNode");self.$handle("cbase"),$def(self,"$compile",(function(){return this.$push("'::'")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ConstAssignNode");return self.$handle("casgn"),self.$children("base","name","value"),$def(self,"$compile",(function(){return this.$helper("const_set"),$truthy(this.$base())?this.$push("$const_set(",this.$expr(this.$base()),", '"+this.$name()+"', ",this.$expr(this.$value()),")"):this.$push("$const_set("+this.$scope().$nesting()+"[0], '"+this.$name()+"', ",this.$expr(this.$value()),")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["corelib/comparable"]=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$truthy=Opal.truthy,$module=Opal.module,$rb_gt=Opal.rb_gt,$rb_lt=Opal.rb_lt,$eqeqeq=Opal.eqeqeq,$Kernel=Opal.Kernel,$def=Opal.def;return Opal.add_stubs(">,<,===,raise,class,<=>,equal?"),function($base){var self=$module("::","Comparable"),$ret_or_1=nil;function normalize(what){return Opal.is_a(what,Opal.Integer)?what:$rb_gt(what,0)?1:$rb_lt(what,0)?-1:0}function cmp_or_fail(lhs,rhs){var cmp=lhs["$<=>"](rhs);return $truthy(cmp)||function(lhs,rhs){var class_name;class_name=$eqeqeq(nil,$ret_or_1=rhs)||$eqeqeq(!0,$ret_or_1)||$eqeqeq(!1,$ret_or_1)||$eqeqeq($$$("Integer"),$ret_or_1)||$eqeqeq($$$("Float"),$ret_or_1)?rhs.$inspect():rhs.$$class,$Kernel.$raise($$$("ArgumentError"),"comparison of "+lhs.$class()+" with "+class_name+" failed")}(lhs,rhs),normalize(cmp)}return $def(self,"$==",(function(other){var cmp;return!!$truthy(this["$equal?"](other))||this["$<=>"]!=Opal.Kernel["$<=>"]&&(this.$$comparable?(delete this.$$comparable,!1):!!$truthy(cmp=this["$<=>"](other))&&0==normalize(cmp))}),1),$def(self,"$>",(function(other){return cmp_or_fail(this,other)>0}),1),$def(self,"$>=",(function(other){return cmp_or_fail(this,other)>=0}),1),$def(self,"$<",(function(other){return cmp_or_fail(this,other)<0}),1),$def(self,"$<=",(function(other){return cmp_or_fail(this,other)<=0}),1),$def(self,"$between?",(function(min,max){return!$rb_lt(this,min)&&!$rb_gt(this,max)}),2),$def(self,"$clamp",(function(min,max){var c,excl;if(null==max&&(max=nil),max===nil&&(Opal.is_a(min,Opal.Range)||$Kernel.$raise($$$("TypeError"),"wrong argument type "+min.$class()+" (expected Range)"),excl=min.excl,max=min.end,min=min.begin,max!==nil&&excl&&$Kernel.$raise($$$("ArgumentError"),"cannot clamp with an exclusive range")),min!==nil&&max!==nil&&cmp_or_fail(min,max)>0&&$Kernel.$raise($$$("ArgumentError"),"min argument must be smaller than max argument"),min!==nil){if(0==(c=cmp_or_fail(this,min)))return this;if(c<0)return min}return max!==nil&&(c=cmp_or_fail(this,max))>0?max:this}),-2)}()},Opal.modules.pathname=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def,$defs=Opal.defs,$to_ary=Opal.to_ary,$send=Opal.send,$to_a=Opal.to_a,$neqeq=Opal.neqeq,$rb_plus=Opal.rb_plus,$not=Opal.not,$alias=Opal.alias,$module=Opal.module;return Opal.add_stubs("require,include,quote,===,to_s,path,respond_to?,to_path,is_a?,nil?,raise,class,==,new,pwd,attr_reader,!,relative?,chop_basename,basename,=~,source,[],rindex,sub,absolute?,expand_path,plus,unshift,length,!=,empty?,first,shift,+,join,dirname,pop,reverse_each,directory?,extname,<=>,nonzero?,proc,casecmp,cleanpath,inspect,include?,fill,map,entries"),self.$require("corelib/comparable"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Pathname"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.path=nil,self.$include($$("Comparable")),$const_set($nesting[0],"SEPARATOR_PAT",$regexp([$$("Regexp").$quote($$$($$("File"),"SEPARATOR"))])),$def(self,"$initialize",(function(path){return $eqeqeq($$("Pathname"),path)?this.path=path.$path().$to_s():$truthy(path["$respond_to?"]("to_path"))?this.path=path.$to_path():$truthy(path["$is_a?"]($$("String")))?this.path=path:$truthy(path["$nil?"]())?this.$raise($$("TypeError"),"no implicit conversion of nil into String"):this.$raise($$("TypeError"),"no implicit conversion of "+path.$class()+" into String"),$eqeq(this.path,"\0")?this.$raise($$("ArgumentError")):nil}),1),$defs(self,"$pwd",(function(){return this.$new($$("Dir").$pwd())}),0),self.$attr_reader("path"),$def(self,"$==",(function(other){return other.$path()["$=="](this.path)}),1),$def(self,"$absolute?",(function(){return this["$relative?"]()["$!"]()}),0),$def(self,"$relative?",(function(){var $b,path=nil,r=nil;for(path=this.path;$truthy(r=this.$chop_basename(path));)path=null==($b=$to_ary(r))[0]?nil:$b[0];return path["$=="]("")}),0),$def(self,"$chop_basename",(function(path){var base;return base=$$("File").$basename(path),$truthy($$("Regexp").$new("^"+$$$($$("Pathname"),"SEPARATOR_PAT").$source()+"?$")["$=~"](base))?nil:[path["$[]"](0,path.$rindex(base)),base]}),1),$def(self,"$root?",(function(){return this.path["$=="]("/")}),0),$def(self,"$parent",(function(){var new_path=nil;return new_path=this.path.$sub(/\/([^\/]+\/?$)/,""),$eqeq(new_path,"")&&(new_path=$truthy(this["$absolute?"]())?"/":"."),$$("Pathname").$new(new_path)}),0),$def(self,"$sub",(function($a){var args,self=this;return args=Opal.slice.call(arguments),$$("Pathname").$new($send(self.path,"sub",$to_a(args)))}),-1),$def(self,"$cleanpath",(function(){return Opal.normalize(this.path)}),0),$def(self,"$to_path",(function(){return this.path}),0),$def(self,"$hash",(function(){return this.path}),0),$def(self,"$expand_path",(function(){return $$("Pathname").$new($$("File").$expand_path(this.path))}),0),$def(self,"$+",(function(other){return $eqeqeq($$("Pathname"),other)||(other=$$("Pathname").$new(other)),$$("Pathname").$new(this.$plus(this.path,other.$to_s()))}),1),$def(self,"$plus",(function(path1,path2){var $b,prefix2=nil,index_list2=nil,basename_list2=nil,r2=nil,basename2=nil,prefix1=nil,$ret_or_1=nil,r1=nil,basename1=nil,suffix2=nil;for(prefix2=path2,index_list2=[],basename_list2=[];$truthy(r2=this.$chop_basename(prefix2));)prefix2=null==($b=$to_ary(r2))[0]?nil:$b[0],basename2=null==$b[1]?nil:$b[1],index_list2.$unshift(prefix2.$length()),basename_list2.$unshift(basename2);if($neqeq(prefix2,""))return path2;for(prefix1=path1;$truthy(!0);){for(;$truthy($truthy($ret_or_1=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="]("."):$ret_or_1);)index_list2.$shift(),basename_list2.$shift();if(!$truthy(r1=this.$chop_basename(prefix1)))break;if(prefix1=null==($b=$to_ary(r1))[0]?nil:$b[0],basename1=null==$b[1]?nil:$b[1],!$eqeq(basename1,".")){if($eqeq(basename1,"..")||$truthy(basename_list2["$empty?"]())||$neqeq(basename_list2.$first(),"..")){prefix1=$rb_plus(prefix1,basename1);break}index_list2.$shift(),basename_list2.$shift()}}if(r1=this.$chop_basename(prefix1),$not(r1)&&$truthy($regexp([$$("SEPARATOR_PAT")])["$=~"]($$("File").$basename(prefix1))))for(;$truthy($truthy($ret_or_1=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="](".."):$ret_or_1);)index_list2.$shift(),basename_list2.$shift();return $not(basename_list2["$empty?"]())?(suffix2=path2["$[]"](Opal.Range.$new(index_list2.$first(),-1,!1)),$truthy(r1)?$$("File").$join(prefix1,suffix2):$rb_plus(prefix1,suffix2)):$truthy(r1)?prefix1:$$("File").$dirname(prefix1)}),2),$def(self,"$join",(function($a){try{var $post_args,args,self=this,result=nil;return $post_args=Opal.slice.call(arguments),$truthy((args=$post_args)["$empty?"]())?self:(result=args.$pop(),$eqeqeq($$("Pathname"),result)||(result=$$("Pathname").$new(result)),$truthy(result["$absolute?"]())?result:($send(args,"reverse_each",[],(function(arg){if(null==arg&&(arg=nil),$eqeqeq($$("Pathname"),arg)||(arg=$$("Pathname").$new(arg)),result=$rb_plus(arg,result),!$truthy(result["$absolute?"]()))return nil;Opal.ret(result)}),1),$rb_plus(self,result)))}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$split",(function(){return[this.$dirname(),this.$basename()]}),0),$def(self,"$dirname",(function(){return $$("Pathname").$new($$("File").$dirname(this.path))}),0),$def(self,"$basename",(function(){return $$("Pathname").$new($$("File").$basename(this.path))}),0),$def(self,"$directory?",(function(){return $$("File")["$directory?"](this.path)}),0),$def(self,"$extname",(function(){return $$("File").$extname(this.path)}),0),$def(self,"$<=>",(function(other){return this.$path()["$<=>"](other.$path())}),1),$const_set($nesting[0],"SAME_PATHS",$truthy($$$($$("File"),"FNM_SYSCASE")["$nonzero?"]())?$send(self,"proc",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a.$casecmp(b)["$=="](0)}),2):$send(self,"proc",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a["$=="](b)}),2)),$def(self,"$relative_path_from",(function(base_directory){var $b,dest_directory,dest_prefix=nil,dest_names=nil,r=nil,basename=nil,base_prefix=nil,base_names=nil,$ret_or_1=nil,$ret_or_2=nil,relpath_names=nil;for(dest_directory=this.$cleanpath().$to_s(),base_directory=base_directory.$cleanpath().$to_s(),dest_prefix=dest_directory,dest_names=[];$truthy(r=this.$chop_basename(dest_prefix));)dest_prefix=null==($b=$to_ary(r))[0]?nil:$b[0],basename=null==$b[1]?nil:$b[1],$neqeq(basename,".")&&dest_names.$unshift(basename);for(base_prefix=base_directory,base_names=[];$truthy(r=this.$chop_basename(base_prefix));)base_prefix=null==($b=$to_ary(r))[0]?nil:$b[0],basename=null==$b[1]?nil:$b[1],$neqeq(basename,".")&&base_names.$unshift(basename);for($truthy($$("SAME_PATHS")["$[]"](dest_prefix,base_prefix))||this.$raise($$("ArgumentError"),"different prefix: "+dest_prefix.$inspect()+" and "+base_directory.$inspect());$truthy($truthy($ret_or_1=$truthy($ret_or_2=dest_names["$empty?"]()["$!"]())?base_names["$empty?"]()["$!"]():$ret_or_2)?$$("SAME_PATHS")["$[]"](dest_names.$first(),base_names.$first()):$ret_or_1);)dest_names.$shift(),base_names.$shift();return $truthy(base_names["$include?"](".."))&&this.$raise($$("ArgumentError"),"base_directory has ..: "+base_directory.$inspect()),base_names.$fill(".."),relpath_names=$rb_plus(base_names,dest_names),$truthy(relpath_names["$empty?"]())?$$("Pathname").$new("."):$$("Pathname").$new($send($$("File"),"join",$to_a(relpath_names)))}),1),$def(self,"$entries",(function(){return $send($$("Dir").$entries(this.path),"map",[],(function $$11(f){return null==f&&(f=nil),(null==$$11.$$s?this:$$11.$$s).$class().$new(f)}),{$$arity:1,$$s:this})}),0),$alias(self,"===","=="),$alias(self,"eql?","=="),$alias(self,"to_s","to_path"),$alias(self,"to_str","to_path")}($nesting[0],0,$nesting),function($base,$parent_nesting){var self=$module($base,"Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$Pathname",(function(path){return $$("Pathname").$new(path)}),1)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/break_finder"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$alias=Opal.alias;return Opal.add_stubs("require"),self.$require("opal/rewriter"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BreakFinder");return self.$$prototype.found_break=nil,$def(self,"$initialize",(function(){return this.found_break=!1}),0),$def(self,"$found_break?",(function(){return this.found_break}),0),$def(self,"$on_break",(function(node){return this.found_break=!0,node}),1),$def(self,"$stop_lookup",(function(node){return nil}),1),$alias(self,"on_for","stop_lookup"),$alias(self,"on_while","stop_lookup"),$alias(self,"on_while_post","stop_lookup"),$alias(self,"on_until","stop_lookup"),$alias(self,"on_until_post","stop_lookup"),$alias(self,"on_block","stop_lookup")}($nesting[0],$$$($$$($$("Opal"),"Rewriters"),"Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/call"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$defs=Opal.defs,$send2=Opal.send2,$find_super=Opal.find_super,$slice=Opal.slice,$truthy=Opal.truthy,$def=Opal.def,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$not=Opal.not,$neqeq=Opal.neqeq,$eqeqeq=Opal.eqeqeq,$to_ary=Opal.to_ary,$Opal=Opal.Opal,$range=Opal.range;return Opal.add_stubs("require,handle,attr_reader,freeze,[]=,-,define_method,to_proc,include?,type,s,handle_special,record_method?,<<,method_calls,compiler,to_sym,meth,using_eval?,compile_eval_var,using_irb?,compile_irb_var,default_compile,private,iter,new,process,found_break?,splat?,!,empty?,collect_refinements_temps,scope,auto_await?,push,await_encountered=,invoke_using_refinement?,compile_using_refined_send,invoke_using_send?,compile_using_send,compile_simple_call_chain,compile_break_catcher,helper,compile_receiver,compile_method_name,compile_arguments,compile_block_pass,compile_refinements,recv,receiver_sexp,expr,arglist,children,map,iter_has_break?,unshift,line,method_jsid,any?,==,recvr,mid_to_jsid,to_s,with_temp,intern,irb?,top?,variable_like?,eval?,scope_variables,nil?,updated,async_await,!=,match?,method,arity,[],each,add_special,call,inline_operators?,fragment,resolve,requires,file,dirname,cleanpath,join,Pathname,self,inspect,length,warning,autoloads,required_trees,force_encoding,encoding,+,handle_block_given_call,def?,mid,module_name,count,accepts_using?,using_refinement,first,refinements_temp,arity_check?,defines_lambda,push_nesting?,nesting,new_temp,scope_locals,source_location,size,last,dynamic_require_severity,handle_part,===,is_a?,expand_path,split,error,each_with_object,pop"),self.$require("set"),self.$require("pathname"),self.$require("opal/nodes/base"),self.$require("opal/rewriters/break_finder"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"CallNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.sexp=$proto.compiler=nil,self.$handle("send"),self.$attr_reader("recvr","meth","arglist","iter"),$const_set($nesting[0],"SPECIALS",$hash2([],{})),$const_set($nesting[0],"OPERATORS",$hash2(["+","-","*","/","<","<=",">",">="],{"+":"plus","-":"minus","*":"times","/":"divide","<":"lt","<=":"le",">":"gt",">=":"ge"}).$freeze()),$defs(self,"$add_special",(function $$add_special(name,options){var $writer,handler=$$add_special.$$p||nil;return delete $$add_special.$$p,null==options&&(options=$hash2([],{})),$writer=[name,options],$send($$("SPECIALS"),"[]=",$to_a($writer)),$rb_minus($writer.length,1),$send(this,"define_method",["handle_"+name],handler.$to_proc())}),-2),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$b,$c,$yield=$$initialize.$$p||nil,self=this,args=nil,rest=nil,last_arg=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$b=[].concat($to_a(self.sexp)),self.recvr=null==$b[0]?nil:$b[0],self.meth=null==$b[1]?nil:$b[1],args=$slice.call($b,2),$c=($c=($b=[].concat($to_a(args))).length-1)<0?0:$c,rest=$slice.call($b,0,$c),last_arg=null==$b[$c]?nil:$b[$c],$truthy(last_arg)&&$truthy(["iter","block_pass"]["$include?"](last_arg.$type()))?(self.iter=last_arg,args=rest):self.iter=nil,self.arglist=$send(self,"s",["arglist"].concat($to_a(args)))}),-1),$def(self,"$compile",(function(){try{return $send(this,"handle_special",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return $truthy(self["$record_method?"]())&&self.$compiler().$method_calls()["$<<"](self.$meth().$to_sym()),$truthy(self["$using_eval?"]())&&Opal.ret(self.$compile_eval_var()),$truthy(self["$using_irb?"]())&&Opal.ret(self.$compile_irb_var()),self.$default_compile()}),{$$arity:0,$$s:this})}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),0),self.$private(),$def(self,"$iter_has_break?",(function(){var finder=nil;return!!$truthy(this.$iter())&&((finder=$$$($$$($$("Opal"),"Rewriters"),"BreakFinder").$new()).$process(this.$iter()),finder["$found_break?"]())}),0),$def(self,"$invoke_using_send?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$iter())?$ret_or_1:this["$splat?"]()}),0),$def(self,"$invoke_using_refinement?",(function(){return this.$scope().$scope().$collect_refinements_temps()["$empty?"]()["$!"]()}),0),$def(self,"$default_compile",(function(){var $writer=nil;return $truthy(this["$auto_await?"]())&&(this.$push("await "),$writer=[!0],$send(this.$scope(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy(this["$invoke_using_refinement?"]())?this.$compile_using_refined_send():$truthy(this["$invoke_using_send?"]())?this.$compile_using_send():this.$compile_simple_call_chain(),this.$compile_break_catcher()}),0),$def(self,"$compile_using_send",(function(){return this.$helper("send"),this.$push("$send("),this.$compile_receiver(),this.$compile_method_name(),this.$compile_arguments(),this.$compile_block_pass(),this.$push(")")}),0),$def(self,"$compile_using_refined_send",(function(){return this.$helper("refined_send"),this.$push("$refined_send("),this.$compile_refinements(),this.$compile_receiver(),this.$compile_method_name(),this.$compile_arguments(),this.$compile_block_pass(),this.$push(")")}),0),$def(self,"$compile_receiver",(function(){return this.$push(this.$recv(this.$receiver_sexp()))}),0),$def(self,"$compile_method_name",(function(){return this.$push(", '"+this.$meth()+"'")}),0),$def(self,"$compile_arguments",(function(){return this.$push(", "),$truthy(this["$splat?"]())?this.$push(this.$expr(this.$arglist())):$truthy(this.$arglist().$children()["$empty?"]())?this.$push("[]"):this.$push("[",this.$expr(this.$arglist()),"]")}),0),$def(self,"$compile_block_pass",(function(){return $truthy(this.$iter())?this.$push(", ",this.$expr(this.$iter())):nil}),0),$def(self,"$compile_refinements",(function(){var refinements;return refinements=$send(this.$scope().$collect_refinements_temps(),"map",[],(function $$5(i){return null==i&&(i=nil),(null==$$5.$$s?this:$$5.$$s).$s("js_tmp",i)}),{$$arity:1,$$s:this}),this.$push(this.$expr($send(this,"s",["array"].concat($to_a(refinements)))),", ")}),0),$def(self,"$compile_break_catcher",(function(){return $truthy(this["$iter_has_break?"]())?(this.$unshift("return "),this.$unshift("(function(){var $brk = Opal.new_brk(); try {"),this.$line("} catch (err) { if (err === $brk) { return err.$v } else { throw err } }})()")):nil}),0),$def(self,"$compile_simple_call_chain",(function(){return this.$push(this.$recv(this.$receiver_sexp()),this.$method_jsid(),"(",this.$expr(this.$arglist()),")")}),0),$def(self,"$splat?",(function(){return $send(this.$arglist().$children(),"any?",[],(function(a){return null==a&&(a=nil),a.$type()["$=="]("splat")}),1)}),0),$def(self,"$receiver_sexp",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$recvr())?$ret_or_1:this.$s("self")}),0),$def(self,"$method_jsid",(function(){return this.$mid_to_jsid(this.$meth().$to_s())}),0),$def(self,"$record_method?",(function(){return!0}),0),$def(self,"$compile_irb_var",(function(){return $send(this,"with_temp",[],(function $$9(tmp){var lvar,call,self=null==$$9.$$s?this:$$9.$$s;return null==tmp&&(tmp=nil),lvar=self.$meth(),call=self.$s("send",self.$s("self"),self.$meth().$intern(),self.$s("arglist")),self.$push("(("+tmp+" = Opal.irb_vars."+lvar+") == null ? ",self.$expr(call)," : "+tmp+")")}),{$$arity:1,$$s:this})}),0),$def(self,"$compile_eval_var",(function(){return this.$push(this.$meth().$to_s())}),0),$def(self,"$using_irb?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.compiler["$irb?"]())?this.$scope()["$top?"]():$ret_or_2)?this["$variable_like?"]():$ret_or_1}),0),$def(self,"$using_eval?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.compiler["$eval?"]())?this.$scope()["$top?"]():$ret_or_2)?this.compiler.$scope_variables()["$include?"](this.$meth()):$ret_or_1}),0),$def(self,"$variable_like?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.$arglist()["$=="](this.$s("arglist")))?this.$recvr()["$nil?"]():$ret_or_2)?this.$iter()["$nil?"]():$ret_or_1}),0),$def(self,"$sexp_with_arglist",(function(){return this.sexp.$updated(nil,[this.$recvr(),this.$meth(),this.$arglist()])}),0),$def(self,"$auto_await?",(function(){var $ret_or_1,$ret_or_2,awaited_set=nil;return awaited_set=this.$compiler().$async_await(),$truthy($ret_or_1=$truthy($ret_or_2=awaited_set)?awaited_set["$!="](!0):$ret_or_2)?awaited_set["$match?"](this.$meth().$to_s()):$ret_or_1}),0),$def(self,"$handle_special",(function $$handle_special(){var compile_default=$$handle_special.$$p||nil,method=nil;return delete $$handle_special.$$p,$truthy($$("SPECIALS")["$include?"](this.$meth()))?(method=this.$method("handle_"+this.$meth()),$eqeq(method.$arity(),1)?method["$[]"](compile_default):method["$[]"]()):Opal.yieldX(compile_default,[])}),0),$send($$("OPERATORS"),"each",[],(function $CallNode$14(operator,name){var self=null==$CallNode$14.$$s?this:$CallNode$14.$$s;return null==operator&&(operator=nil),null==name&&(name=nil),$send(self,"add_special",[operator.$to_sym()],(function $$15(compile_default){var $a,self=null==$$15.$$s?this:$$15.$$s,lhs=nil,rhs=nil;return null==compile_default&&(compile_default=nil),$truthy(self["$invoke_using_refinement?"]())?compile_default.$call():$truthy(self.$compiler()["$inline_operators?"]())?($truthy(self["$record_method?"]())&&self.$compiler().$method_calls()["$<<"](operator.$to_sym()),self.$helper("rb_"+name),lhs=($a=[self.$expr(self.$recvr()),self.$expr(self.$arglist())])[0],rhs=$a[1],self.$push(self.$fragment("$rb_"+name+"(")),self.$push(lhs),self.$push(self.$fragment(", ")),self.$push(rhs),self.$push(self.$fragment(")"))):compile_default.$call()}),{$$arity:1,$$s:self})}),{$$arity:2,$$s:self}),$send(self,"add_special",["require"],(function $CallNode$16(compile_default){var self=null==$CallNode$16.$$s?this:$CallNode$16.$$s,str=nil;return null==compile_default&&(compile_default=nil),str=$$("DependencyResolver").$new(self.$compiler(),self.$arglist().$children()["$[]"](0)).$resolve(),$truthy(str["$nil?"]())||self.$compiler().$requires()["$<<"](str),compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["require_relative"],(function $CallNode$17(){var self=null==$CallNode$17.$$s?this:$CallNode$17.$$s,arg=nil,file=nil,dir=nil;return arg=self.$arglist().$children()["$[]"](0),file=self.$compiler().$file(),$eqeq(arg.$type(),"str")&&(dir=$$("File").$dirname(file),self.$compiler().$requires()["$<<"](self.$Pathname(dir).$join(arg.$children()["$[]"](0)).$cleanpath().$to_s())),self.$push(self.$fragment(self.$scope().$self()+".$require("+file.$inspect()+"+ '/../' + ")),self.$push(self.$process(self.$arglist())),self.$push(self.$fragment(")"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["autoload"],(function $CallNode$18(compile_default){var self=null==$CallNode$18.$$s?this:$CallNode$18.$$s,args=nil,str=nil;return null==compile_default&&(compile_default=nil),args=self.$arglist().$children(),$eqeq(args.$length(),2)&&$eqeq(args["$[]"](0).$type(),"sym")&&(str=$$("DependencyResolver").$new(self.$compiler(),args["$[]"](1),"ignore").$resolve(),$truthy(str["$nil?"]())?self.$compiler().$warning("File for autoload of constant '"+args["$[]"](0).$children()["$[]"](0)+"' could not be bundled!"):(self.$compiler().$requires()["$<<"](str),self.$compiler().$autoloads()["$<<"](str))),compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["require_tree"],(function $CallNode$19(compile_default){var $a,rest,self=null==$CallNode$19.$$s?this:$CallNode$19.$$s,first_arg=nil,relative_path=nil,dir=nil,full_path=nil;return null==compile_default&&(compile_default=nil),first_arg=null==($a=[].concat($to_a(self.$arglist().$children())))[0]?nil:$a[0],rest=$slice.call($a,1),$eqeq(first_arg.$type(),"str")&&(relative_path=first_arg.$children()["$[]"](0),self.$compiler().$required_trees()["$<<"](relative_path),dir=$$("File").$dirname(self.$compiler().$file()),(full_path=self.$Pathname(dir).$join(relative_path).$cleanpath().$to_s()).$force_encoding(relative_path.$encoding()),first_arg=first_arg.$updated(nil,[full_path])),self.arglist=self.$arglist().$updated(nil,$rb_plus([first_arg],rest)),compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["block_given?"],(function $CallNode$20(){var self=null==$CallNode$20.$$s?this:$CallNode$20.$$s;return null==self.sexp&&(self.sexp=nil),self.$push(self.$compiler().$handle_block_given_call(self.sexp))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__callee__"],(function $CallNode$21(){var self=null==$CallNode$21.$$s?this:$CallNode$21.$$s;return $truthy(self.$scope()["$def?"]())?self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect())):self.$push(self.$fragment("nil"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__method__"],(function $CallNode$22(){var self=null==$CallNode$22.$$s?this:$CallNode$22.$$s;return $truthy(self.$scope()["$def?"]())?self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect())):self.$push(self.$fragment("nil"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__dir__"],(function $CallNode$23(){var self=null==$CallNode$23.$$s?this:$CallNode$23.$$s;return self.$push($$("File").$dirname($$$($$("Opal"),"Compiler").$module_name(self.$compiler().$file())).$inspect())}),{$$arity:0,$$s:self}),$send(self,"add_special",["using"],(function $CallNode$24(compile_default){var self=null==$CallNode$24.$$s?this:$CallNode$24.$$s;return null==compile_default&&(compile_default=nil),$truthy(self.$scope()["$accepts_using?"]())&&$eqeq(self.$arglist().$children().$count(),1)?self.$using_refinement(self.$arglist().$children().$first()):compile_default.$call()}),{$$arity:1,$$s:self}),$def(self,"$using_refinement",(function(arg){var $a,prev,curr;return prev=null==($a=[].concat($to_a(this.$scope().$refinements_temp())))[0]?nil:$a[0],curr=null==$a[1]?nil:$a[1],$truthy(prev)?this.$push("("+curr+" = "+prev+".slice(), "+curr+".push(",this.$expr(arg),"), "+this.$scope().$self()+")"):this.$push("("+curr+" = [",this.$expr(arg),"], "+this.$scope().$self()+")")}),1),$send(self,"add_special",["debugger"],(function $CallNode$25(){var self=null==$CallNode$25.$$s?this:$CallNode$25.$$s;return self.$push(self.$fragment("debugger"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__OPAL_COMPILER_CONFIG__"],(function $CallNode$26(){var self=null==$CallNode$26.$$s?this:$CallNode$26.$$s;return self.$push(self.$fragment("Opal.hash({ arity_check: "+self.$compiler()["$arity_check?"]()+" })"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["lambda"],(function $CallNode$27(compile_default){return null==compile_default&&(compile_default=nil),$send((null==$CallNode$27.$$s?this:$CallNode$27.$$s).$scope(),"defines_lambda",[],(function(){return compile_default.$call()}),0)}),{$$arity:1,$$s:self}),$send(self,"add_special",["nesting"],(function $CallNode$29(compile_default){var push_nesting,self=null==$CallNode$29.$$s?this:$CallNode$29.$$s;return null==compile_default&&(compile_default=nil),push_nesting=self["$push_nesting?"](),$truthy(push_nesting)&&self.$push("(Opal.Module.$$nesting = "+self.$scope().$nesting()+", "),compile_default.$call(),$truthy(push_nesting)?self.$push(")"):nil}),{$$arity:1,$$s:self}),$send(self,"add_special",["constants"],(function $CallNode$30(compile_default){var push_nesting,self=null==$CallNode$30.$$s?this:$CallNode$30.$$s;return null==compile_default&&(compile_default=nil),push_nesting=self["$push_nesting?"](),$truthy(push_nesting)&&self.$push("(Opal.Module.$$nesting = "+self.$scope().$nesting()+", "),compile_default.$call(),$truthy(push_nesting)?self.$push(")"):nil}),{$$arity:1,$$s:self}),$send(self,"add_special",["eval"],(function $CallNode$31(compile_default){var temp,scope_variables,self=null==$CallNode$31.$$s?this:$CallNode$31.$$s;return null==compile_default&&(compile_default=nil),$neqeq(self.$arglist().$children().$length(),1)||$not([self.$s("self"),nil]["$include?"](self.$recvr()))?compile_default.$call():(self.$scope().$nesting(),temp=self.$scope().$new_temp(),scope_variables=$send(self.$scope().$scope_locals(),"map",[],"to_s".$to_proc()).$inspect(),self.$push("("+temp+" = ",self.$expr(self.$arglist())),self.$push(", typeof Opal.compile === 'function' ? eval(Opal.compile("+temp),self.$push(", {scope_variables: ",scope_variables),self.$push(", arity_check: "+self.$compiler()["$arity_check?"]()+", file: '(eval)', eval: true})) : "),self.$push(self.$scope().$self()+".$eval("+temp+"))"))}),{$$arity:1,$$s:self}),$send(self,"add_special",["local_variables"],(function $CallNode$32(compile_default){var scope_variables,self=null==$CallNode$32.$$s?this:$CallNode$32.$$s;return null==compile_default&&(compile_default=nil),$truthy([self.$s("self"),nil]["$include?"](self.$recvr()))?(scope_variables=$send(self.$scope().$scope_locals(),"map",[],"to_s".$to_proc()).$inspect(),self.$push(scope_variables)):compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["binding"],(function $CallNode$33(compile_default){var self=null==$CallNode$33.$$s?this:$CallNode$33.$$s;return null==compile_default&&(compile_default=nil),$truthy(self.$recvr()["$nil?"]())?(self.$scope().$nesting(),self.$push("Opal.Binding.$new("),self.$push(" function($code, $value) {"),self.$push(" if (typeof $value === 'undefined') {"),self.$push(" return eval($code);"),self.$push(" }"),self.$push(" else {"),self.$push(" return eval($code + ' = $value');"),self.$push(" }"),self.$push(" },"),self.$push(" ",$send(self.$scope().$scope_locals(),"map",[],"to_s".$to_proc()).$inspect(),","),self.$push(" ",self.$scope().$self(),","),self.$push(" ",self.$source_location()),self.$push(")")):compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["__await__"],(function $CallNode$34(compile_default){var self=null==$CallNode$34.$$s?this:$CallNode$34.$$s,$writer=nil;return null==compile_default&&(compile_default=nil),$truthy(self.$compiler().$async_await())?(self.$push(self.$fragment("(await (")),self.$push(self.$process(self.$recvr())),self.$push(self.$fragment("))")),$writer=[!0],$send(self.$scope(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):compile_default.$call()}),{$$arity:1,$$s:self}),$def(self,"$push_nesting?",(function(){var $ret_or_1,recv=nil,$ret_or_2=nil,$ret_or_3=nil;return recv=this.$children().$first(),$truthy($ret_or_1=this.$children().$size()["$=="](2))?$truthy($ret_or_2=recv["$nil?"]())?$ret_or_2:$truthy($ret_or_3=recv.$type()["$=="]("const"))?recv.$children().$last()["$=="]("Module"):$ret_or_3:$ret_or_1}),0),function($base,$super,$parent_nesting){var self=$klass($base,null,"DependencyResolver"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.compiler=$proto.sexp=$proto.missing_dynamic_require=nil,$def(self,"$initialize",(function(compiler,sexp,missing_dynamic_require){var $ret_or_1;return null==missing_dynamic_require&&(missing_dynamic_require=nil),this.compiler=compiler,this.sexp=sexp,this.missing_dynamic_require=$truthy($ret_or_1=missing_dynamic_require)?$ret_or_1:this.compiler.$dynamic_require_severity()}),-3),$def(self,"$resolve",(function(){return this.$handle_part(this.sexp)}),0),$def(self,"$handle_part",(function(sexp,missing_dynamic_require){var $a,$b,$ret_or_1=nil,recv=nil,meth=nil,args=nil,parts=nil;if(null==missing_dynamic_require&&(missing_dynamic_require=this.missing_dynamic_require),$truthy(sexp)){if($eqeqeq("str",$ret_or_1=sexp.$type()))return sexp.$children()["$[]"](0);if($eqeqeq("dstr",$ret_or_1))return $send(sexp.$children(),"map",[],(function $$36(i){return null==i&&(i=nil),(null==$$36.$$s?this:$$36.$$s).$handle_part(i)}),{$$arity:1,$$s:this}).$join();if($eqeqeq("begin",$ret_or_1)){if($eqeq(sexp.$children().$length(),1))return this.$handle_part(sexp.$children()["$[]"](0))}else if($eqeqeq("send",$ret_or_1)){if($b=sexp.$children(),recv=null==($a=$to_ary($b))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),parts=$send(args,"map",[],(function $$37(s){return null==s&&(s=nil),(null==$$37.$$s?this:$$37.$$s).$handle_part(s,"ignore")}),{$$arity:1,$$s:this}),$truthy(parts["$include?"](nil)))return nil;if($truthy(recv["$is_a?"]($$$($$$($Opal,"AST"),"Node")))&&$eqeq(recv.$type(),"const")&&$eqeq(recv.$children().$last(),"File")){if($eqeq(meth,"expand_path"))return $send(this,"expand_path",$to_a(parts));if($eqeq(meth,"join"))return this.$expand_path(parts.$join("/"));if($eqeq(meth,"dirname"))return this.$expand_path(parts["$[]"](0).$split("/")["$[]"]($range(0,-1,!0)).$join("/"))}else if($eqeq(meth,"__dir__"))return $$("File").$dirname($$$($$("Opal"),"Compiler").$module_name(this.compiler.$file()))}}return $eqeqeq("error",$ret_or_1=missing_dynamic_require)?this.compiler.$error("Cannot handle dynamic require",this.sexp.$line()):$eqeqeq("warning",$ret_or_1)?this.compiler.$warning("Cannot handle dynamic require",this.sexp.$line()):nil}),-2),$def(self,"$expand_path",(function(path,base){return null==base&&(base=""),$send((base+"/"+path).$split("/"),"each_with_object",[[]],(function(part,p){return null==part&&(part=nil),null==p&&(p=nil),$eqeq(part,"")?nil:$eqeq(part,"..")?p.$pop():p["$<<"](part)}),2).$join("/")}),-2)}($nesting[0],0,$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/csend"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$def=Opal.def;return Opal.add_stubs("require,handle,helper,conditional_send,recv,receiver_sexp,push,compile_method_name,compile_arguments,compile_block_pass"),self.$require("opal/nodes/call"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"CSendNode");return self.$handle("csend"),$def(self,"$default_compile",(function(){return this.$helper("send"),$send(this,"conditional_send",[this.$recv(this.$receiver_sexp())],(function $$1(receiver_temp){var self=null==$$1.$$s?this:$$1.$$s;return null==receiver_temp&&(receiver_temp=nil),self.$push("$send(",receiver_temp),self.$compile_method_name(),self.$compile_arguments(),self.$compile_block_pass(),self.$push(")")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("CallNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/call_special"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$send=Opal.send;return Opal.add_stubs("require,handle,children,push,recv,recvr,expr,property,value,<<,default_compile,meth,receiver_sexp,method_jsid,compile_arguments,iter,s,lhs,rhs,==,type,first,map,flatten,scan,to_proc,empty?,stmt?,process"),self.$require("opal/nodes/base"),self.$require("opal/nodes/call"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"JsAttrNode");self.$handle("jsattr"),self.$children("recvr","property"),$def(self,"$compile",(function(){return this.$push(this.$recv(this.$recvr()),"[",this.$expr(this.$property()),"]")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JsAttrAsgnNode");self.$handle("jsattrasgn"),self.$children("recvr","property","value"),$def(self,"$compile",(function(){return this.$push(this.$recv(this.$recvr()),"[",this.$expr(this.$property()),"] = ",this.$expr(this.$value()))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JsCallNode"),$proto=self.$$prototype;$proto.iter=$proto.arglist=nil,self.$handle("jscall"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$truthy(self.iter)&&(self.arglist=self.arglist["$<<"](self.iter)),self.iter=nil}),-1),$def(self,"$compile",(function(){return this.$default_compile()}),0),$def(self,"$method_jsid",(function(){return"."+this.$meth()}),0),$def(self,"$compile_using_send",(function(){return this.$push(this.$recv(this.$receiver_sexp()),this.$method_jsid(),".apply(null"),this.$compile_arguments(),$truthy(this.$iter())&&this.$push(".concat(",this.$expr(this.$iter()),")"),this.$push(")")}),0)}($nesting[0],$$("CallNode")),function($base,$super){var self=$klass($base,$super,"Match3Node");return self.$$prototype.level=nil,self.$handle("match_with_lvasgn"),self.$children("lhs","rhs"),$def(self,"$compile",(function(){var sexp=nil,re=nil,names=nil,names_def=nil;return sexp=this.$s("send",this.$lhs(),"=~",this.$rhs()),$eqeq(this.$lhs().$type(),"regexp")&&$eqeq(this.$lhs().$children().$first().$type(),"str")&&(re=this.$lhs().$children().$first().$children().$first(),names=$send(re.$scan(/\(\?<([^>]*)>/).$flatten(),"map",[],"to_sym".$to_proc()),$truthy(names["$empty?"]())||(names_def=this.$s("lvasgn","$m3names",this.$s("if",this.$s("gvar","$~"),this.$s("send",this.$s("gvar","$~"),"named_captures"),this.$s("hash"))),names=$send(names,"map",[],(function $$1(name){var self=null==$$1.$$s?this:$$1.$$s;return null==name&&(name=nil),self.$s("lvasgn",name,self.$s("send",self.$s("lvar","$m3names"),"[]",self.$s("sym",name)))}),{$$arity:1,$$s:this}),sexp=$truthy(this["$stmt?"]())?$send(this,"s",["begin",sexp,names_def].concat($to_a(names))):$send(this,"s",["begin",this.$s("lvasgn","$m3tmp",sexp),names_def].concat($to_a(names)).concat([this.$s("lvar","$m3tmp")])))),this.$push(this.$process(sexp,this.level))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/scope"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$def=Opal.def,$send=Opal.send,$rb_minus=Opal.rb_minus,$truthy=Opal.truthy,$not=Opal.not,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$hash2=Opal.hash2;return Opal.add_stubs("require,attr_accessor,attr_reader,indent,scope,compiler,scope=,-,==,iter?,!,class?,dup,push,map,ivars,gvars,empty?,<<,parser_indent,join,+,fragment,def_in_class?,add_proto_ivar,include?,has_local?,|,scope_locals,reject,start_with?,to_s,has_temp?,pop,next_temp,loop,succ,uses_block!,identify!,valid_name?,mid,compact,parent,name,scope_name,unique_temp,lambda?,def?,type,nil?,rescue_else_sexp,last,class,collect_refinements_temps,add_scope_local,new_refinements_temp,identity,block_name=,add_temp,block_name,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ScopeNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.type=$proto.is_lambda=$proto.lambda_definition=$proto.defs=$proto.parent=$proto.temps=$proto.locals=$proto.proto_ivars=$proto.compiler=$proto.ivars=$proto.gvars=$proto.args=$proto.queue=$proto.while_stack=$proto.identity=$proto.uses_block=$proto.rescues=$proto.in_resbody=$proto.in_ensure=$proto.next_retry_id=$proto.refinements_temp=$proto.block_prepared=nil,self.$attr_accessor("parent"),self.$attr_accessor("name"),self.$attr_accessor("block_name"),self.$attr_reader("scope_name"),self.$attr_reader("locals"),self.$attr_reader("ivars"),self.$attr_reader("gvars"),self.$attr_accessor("mid"),self.$attr_accessor("defs"),self.$attr_reader("methods"),self.$attr_accessor("catch_return","has_break","has_retry"),self.$attr_accessor("rescue_else_sexp"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.locals=[],self.temps=[],self.args=[],self.ivars=[],self.gvars=[],self.parent=nil,self.queue=[],self.unique="a",self.while_stack=[],self.identity=nil,self.defs=nil,self.methods=[],self.uses_block=!1,self.in_ensure=!1,self.proto_ivars=[]}),-1),$def(self,"$in_scope",(function $$in_scope(){var $yield=$$in_scope.$$p||nil;return delete $$in_scope.$$p,$send(this,"indent",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s,$writer=nil;return null==self.parent&&(self.parent=nil),self.parent=self.$compiler().$scope(),$writer=[self],$send(self.$compiler(),"scope=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],Opal.yield1($yield,self),$writer=[self.parent],$send(self.$compiler(),"scope=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:0,$$s:this})}),0),$def(self,"$class_scope?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.type["$=="]("class"))?$ret_or_1:this.type["$=="]("module")}),0),$def(self,"$class?",(function(){return this.type["$=="]("class")}),0),$def(self,"$module?",(function(){return this.type["$=="]("module")}),0),$def(self,"$sclass?",(function(){return this.type["$=="]("sclass")}),0),$def(self,"$top?",(function(){return this.type["$=="]("top")}),0),$def(self,"$iter?",(function(){return this.type["$=="]("iter")}),0),$def(self,"$def?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.type["$=="]("def"))?$ret_or_1:this.type["$=="]("defs")}),0),$def(self,"$lambda?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$iter?"]())?this.is_lambda:$ret_or_1}),0),$def(self,"$is_lambda!",(function(){return this.is_lambda=!0}),0),$def(self,"$defines_lambda",(function $$defines_lambda(){var $yield=$$defines_lambda.$$p||nil;return delete $$defines_lambda.$$p,this.lambda_definition=!0,Opal.yieldX($yield,[]),this.lambda_definition=!1}),0),$def(self,"$lambda_definition?",(function(){return this.lambda_definition}),0),$def(self,"$def_in_class?",(function(){var $ret_or_1,$ret_or_2,$ret_or_3;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.defs["$!"]())?this.type["$=="]("def"):$ret_or_3)?this.parent:$ret_or_2)?this.parent["$class?"]():$ret_or_1}),0),$def(self,"$to_vars",(function(){var indent,vars=nil,iv=nil,gv=nil,str=nil;return vars=this.temps.$dup(),$send(vars,"push",$to_a($send(this.locals,"map",[],(function(l){return null==l&&(l=nil),l+" = nil"}),1))),iv=$send(this.$ivars(),"map",[],(function(ivar){return null==ivar&&(ivar=nil),"if (self"+ivar+" == null) self"+ivar+" = nil;\n"}),1),gv=$send(this.$gvars(),"map",[],(function(gvar){return null==gvar&&(gvar=nil),"if ($gvars"+gvar+" == null) $gvars"+gvar+" = nil;\n"}),1),$truthy(this["$class?"]())&&$not(this.proto_ivars["$empty?"]())&&vars["$<<"]("$proto = self.$$prototype"),indent=this.compiler.$parser_indent(),str=$truthy(vars["$empty?"]())?"":"var "+vars.$join(", ")+";\n",$truthy(this.$ivars()["$empty?"]())||(str=$rb_plus(str,""+indent+iv.$join(indent))),$truthy(this.$gvars()["$empty?"]())||(str=$rb_plus(str,""+indent+gv.$join(indent))),$truthy(this["$class?"]())&&$not(this.proto_ivars["$empty?"]())&&(str=str+"\n"+indent+$send(this.proto_ivars,"map",[],(function(i){return null==i&&(i=nil),"$proto"+i}),1).$join(" = ")+" = nil;"),this.$fragment(str)}),0),$def(self,"$add_scope_ivar",(function(ivar){return $truthy(this["$def_in_class?"]())?this.parent.$add_proto_ivar(ivar):$truthy(this.ivars["$include?"](ivar))?nil:this.ivars["$<<"](ivar)}),1),$def(self,"$add_scope_gvar",(function(gvar){return $truthy(this.gvars["$include?"](gvar))?nil:this.gvars["$<<"](gvar)}),1),$def(self,"$add_proto_ivar",(function(ivar){return $truthy(this.proto_ivars["$include?"](ivar))?nil:this.proto_ivars["$<<"](ivar)}),1),$def(self,"$add_arg",(function(arg){return $truthy(this.args["$include?"](arg))||this.args["$<<"](arg),arg}),1),$def(self,"$add_scope_local",(function(local){return $truthy(this["$has_local?"](local))?nil:this.locals["$<<"](local)}),1),$def(self,"$has_local?",(function(local){return!!($truthy(this.locals["$include?"](local))||$truthy(this.args["$include?"](local))||$truthy(this.temps["$include?"](local)))||!(!$truthy(this.parent)||!$eqeq(this.type,"iter"))&&this.parent["$has_local?"](local)}),1),$def(self,"$scope_locals",(function(){var locals;return locals=this.locals["$|"](this.args)["$|"]($truthy(this.parent)&&$eqeq(this.type,"iter")?this.parent.$scope_locals():[]),$send(locals,"reject",[],(function(i){return null==i&&(i=nil),i.$to_s()["$start_with?"]("$")}),1)}),0),$def(self,"$add_scope_temp",(function(tmp){return $truthy(this["$has_temp?"](tmp))?nil:this.temps.$push(tmp)}),1),$def(self,"$has_temp?",(function(tmp){return this.temps["$include?"](tmp)}),1),$def(self,"$new_temp",(function(){var tmp;return $truthy(this.queue["$empty?"]())?(tmp=this.$next_temp(),this.temps["$<<"](tmp),tmp):this.queue.$pop()}),0),$def(self,"$next_temp",(function(){var self=this,tmp=nil;return tmp=nil,function(){var $brk=Opal.new_brk();try{$send(self,"loop",[],(function $$20(){var self=null==$$20.$$s?this:$$20.$$s;if(null==self.unique&&(self.unique=nil),tmp="$"+self.unique,self.unique=self.unique.$succ(),$truthy(self["$has_local?"](tmp)))return nil;Opal.brk(nil,$brk)}),{$$arity:0,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),tmp}),0),$def(self,"$queue_temp",(function(name){return this.queue["$<<"](name)}),1),$def(self,"$push_while",(function(){var info;return info=$hash2([],{}),this.while_stack.$push(info),info}),0),$def(self,"$pop_while",(function(){return this.while_stack.$pop()}),0),$def(self,"$in_while?",(function(){return this.while_stack["$empty?"]()["$!"]()}),0),$def(self,"$uses_block!",(function(){return $eqeq(this.type,"iter")&&$truthy(this.parent)?this.parent["$uses_block!"]():(this.uses_block=!0,this["$identify!"]())}),0),$def(self,"$identify!",(function(name){var $ret_or_1=nil,$ret_or_2=nil,$ret_or_3=nil;return null==name&&(name=nil),$truthy(this.identity)||($truthy(this["$valid_name?"](this.$mid()))?this.identity="$$"+this.$mid():(name=$truthy($ret_or_1=name)?$ret_or_1:[$truthy($ret_or_2=this.$parent())?$truthy($ret_or_3=this.$parent().$name())?$ret_or_3:this.$parent().$scope_name():$ret_or_2,this.$mid()].$compact().$join("_"),this.identity=this.compiler.$unique_temp(name))),this.identity}),-1),self.$attr_reader("identity"),$def(self,"$find_parent_def",(function(){var scope=nil;for(scope=this;$truthy(scope=scope.$parent());)if($truthy(scope["$def?"]())||$truthy(scope["$lambda?"]()))return scope;return nil}),0),$def(self,"$super_chain",(function(){var $a,chain=nil,scope=nil,defn=nil,mid=nil;for(chain=($a=[[],this,"null","null"])[0],scope=$a[1],defn=$a[2],mid=$a[3];$truthy(scope);){if(!$eqeq(scope.$type(),"iter")){if($truthy(["def","defs"]["$include?"](scope.$type()))){defn=scope["$identify!"](),mid="'"+scope.$mid()+"'";break}break}chain["$<<"](scope["$identify!"]()),$truthy(scope.$parent())&&(scope=scope.$parent())}return[chain,defn,mid]}),0),$def(self,"$uses_block?",(function(){return this.uses_block}),0),$def(self,"$has_rescue_else?",(function(){return this.$rescue_else_sexp()["$nil?"]()["$!"]()}),0),$def(self,"$in_rescue",(function $$in_rescue(node){var $ret_or_1,result,$yield=$$in_rescue.$$p||nil;return delete $$in_rescue.$$p,this.rescues=$truthy($ret_or_1=this.rescues)?$ret_or_1:[],this.rescues.$push(node),result=Opal.yieldX($yield,[]),this.rescues.$pop(),result}),1),$def(self,"$current_rescue",(function(){return this.rescues.$last()}),0),$def(self,"$in_resbody",(function $$in_resbody(){var result,$yield=$$in_resbody.$$p||nil;return delete $$in_resbody.$$p,$yield===nil?nil:(this.in_resbody=!0,result=Opal.yieldX($yield,[]),this.in_resbody=!1,result)}),0),$def(self,"$in_resbody?",(function(){return this.in_resbody}),0),$def(self,"$in_ensure",(function $$in_ensure(){var result,$yield=$$in_ensure.$$p||nil;return delete $$in_ensure.$$p,$yield===nil?nil:(this.in_ensure=!0,result=Opal.yieldX($yield,[]),this.in_ensure=!1,result)}),0),$def(self,"$in_ensure?",(function(){return this.in_ensure}),0),$def(self,"$gen_retry_id",(function(){var $ret_or_1;return this.next_retry_id=$truthy($ret_or_1=this.next_retry_id)?$ret_or_1:"retry_0",this.next_retry_id=this.next_retry_id.$succ()}),0),$def(self,"$accepts_using?",(function(){return[$$("TopNode"),$$("ModuleNode"),$$("ClassNode"),$$("IterNode")]["$include?"](this.$class())}),0),$def(self,"$collect_refinements_temps",(function(temps){return null==temps&&(temps=[]),$truthy(this.refinements_temp)&&temps["$<<"](this.refinements_temp),$truthy(this.$parent())?this.$parent().$collect_refinements_temps(temps):temps}),-1),$def(self,"$new_refinements_temp",(function(){var var$;return var$=this.$compiler().$unique_temp("$refn"),this.$add_scope_local(var$),var$}),0),$def(self,"$refinements_temp",(function(){var $a,prev,curr;return prev=($a=[this.refinements_temp,this.$new_refinements_temp()])[0],curr=$a[1],this.refinements_temp=curr,[prev,curr]}),0),$def(self,"$self",(function(){return this.define_self=!0,"self"}),0),$def(self,"$nesting",(function(){return this.define_nesting=!0,"$nesting"}),0),$def(self,"$relative_access",(function(){return this.define_relative_access=this.define_nesting=!0,"$$"}),0),$def(self,"$prepare_block",(function(block_name){var scope_name,$writer=nil;return null==block_name&&(block_name=nil),scope_name=this.$scope().$identity(),$truthy(block_name)&&($send(this,"block_name=",$to_a($writer=[block_name])),$writer[$rb_minus($writer.length,1)]),this.$add_temp(this.$block_name()+" = "+scope_name+".$$p || nil"),$truthy(this.block_prepared)?nil:(this.$line("delete "+scope_name+".$$p;"),this.block_prepared=!0)}),-1),self.$attr_accessor("await_encountered")}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/module"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_ary=Opal.to_ary,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$def=Opal.def;return Opal.add_stubs("require,handle,children,name_and_base,helper,nil?,body,stmt?,unshift,line,in_scope,name=,scope,-,compile_body,await_encountered,await_encountered=,parent,+,nesting,private,cid,expr,stmt,returns,compiler,empty_line,add_temp,to_vars"),self.$require("opal/nodes/scope"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ModuleNode"),$proto=self.$$prototype;return $proto.define_nesting=$proto.define_relative_access=nil,self.$handle("module"),self.$children("cid","body"),$def(self,"$compile",(function(){var $a,$b,name,base,await_begin=nil,await_end=nil,async=nil,$writer=nil;return $b=this.$name_and_base(),$a=$to_ary($b),name=null==$a[0]?nil:$a[0],base=null==$a[1]?nil:$a[1],this.$helper("module"),$truthy(this.$body()["$nil?"]())?$truthy(this["$stmt?"]())?this.$unshift("$module(",base,", '"+name+"')"):this.$unshift("($module(",base,", '"+name+"'), nil)"):(this.$line(" var self = $module($base, '"+name+"');"),$send(this,"in_scope",[],(function $$1(){var $writer,self=null==$$1.$$s?this:$$1.$$s;return $writer=[name],$send(self.$scope(),"name=",$to_a($writer)),$rb_minus($writer.length,1),self.$compile_body()}),{$$arity:0,$$s:this}),$truthy(this.$await_encountered())?(await_begin="(await ",await_end=")",async="async ",$writer=[!0],$send(this.$parent(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):(await_begin=($a=["","",""])[0],await_end=$a[1],async=$a[2]),this.$unshift(await_begin+"("+async+"function($base"+($truthy(this.define_nesting)?", $parent_nesting":nil)+") {"),this.$line("})(",base,($truthy(this.define_nesting)?$rb_plus(", ",this.$scope().$nesting()):nil)+")"+await_end))}),0),self.$private(),$def(self,"$name_and_base",(function(){var $a,$b,name,base=nil;return $b=this.$cid().$children(),base=null==($a=$to_ary($b))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],$truthy(base["$nil?"]())?[name,this.$scope().$nesting()+"[0]"]:[name,this.$expr(base)]}),0),$def(self,"$compile_body",(function(){var body_code;return body_code=this.$stmt(this.$compiler().$returns(this.$body())),this.$empty_line(),$truthy(this.define_nesting)&&this.$add_temp("$nesting = [self].concat($parent_nesting)"),$truthy(this.define_relative_access)&&this.$add_temp("$$ = Opal.$r($nesting)"),this.$line(this.$scope().$to_vars()),this.$line(body_code)}),0)}($nesting[0],$$("ScopeNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/class"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_ary=Opal.to_ary,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$def=Opal.def;return Opal.add_stubs("require,handle,children,name_and_base,helper,nil?,body,stmt?,unshift,super_code,line,in_scope,name=,scope,-,compile_body,await_encountered,await_encountered=,parent,+,nesting,sup,expr"),self.$require("opal/nodes/module"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ClassNode");return self.$$prototype.define_nesting=nil,self.$handle("class"),self.$children("cid","sup","body"),$def(self,"$compile",(function(){var $a,$b,name,base,await_begin=nil,await_end=nil,async=nil,$writer=nil;return $b=this.$name_and_base(),$a=$to_ary($b),name=null==$a[0]?nil:$a[0],base=null==$a[1]?nil:$a[1],this.$helper("klass"),$truthy(this.$body()["$nil?"]())?$truthy(this["$stmt?"]())?this.$unshift("$klass(",base,", ",this.$super_code(),", '"+name+"')"):this.$unshift("($klass(",base,", ",this.$super_code(),", '"+name+"'), nil)"):(this.$line(" var self = $klass($base, $super, '"+name+"');"),$send(this,"in_scope",[],(function $$1(){var $writer,self=null==$$1.$$s?this:$$1.$$s;return $writer=[name],$send(self.$scope(),"name=",$to_a($writer)),$rb_minus($writer.length,1),self.$compile_body()}),{$$arity:0,$$s:this}),$truthy(this.$await_encountered())?(await_begin="(await ",await_end=")",async="async ",$writer=[!0],$send(this.$parent(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):(await_begin=($a=["","",""])[0],await_end=$a[1],async=$a[2]),this.$unshift(await_begin+"("+async+"function($base, $super"+($truthy(this.define_nesting)?", $parent_nesting":nil)+") {"),this.$line("})(",base,", ",this.$super_code(),($truthy(this.define_nesting)?$rb_plus(", ",this.$scope().$nesting()):nil)+")"+await_end))}),0),$def(self,"$super_code",(function(){return $truthy(this.$sup())?this.$expr(this.$sup()):"null"}),0)}($nesting[0],$$("ModuleNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/singleton_class"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("require,handle,children,push,in_scope,stmt,returns,compiler,body,add_temp,line,to_vars,scope,recv,object,nesting"),self.$require("opal/nodes/scope"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"SingletonClassNode");return self.$handle("sclass"),self.$children("object","body"),$def(self,"$compile",(function(){return this.$push("(function(self, $parent_nesting) {"),$send(this,"in_scope",[],(function $$1(){var body_stmt,self=null==$$1.$$s?this:$$1.$$s;return null==self.define_nesting&&(self.define_nesting=nil),null==self.define_relative_access&&(self.define_relative_access=nil),body_stmt=self.$stmt(self.$compiler().$returns(self.$body())),$truthy(self.define_nesting)&&self.$add_temp("$nesting = [self].concat($parent_nesting)"),$truthy(self.define_relative_access)&&self.$add_temp("$$ = Opal.$r($nesting)"),self.$line(self.$scope().$to_vars()),self.$line(body_stmt)}),{$$arity:0,$$s:this}),this.$line("})(Opal.get_singleton_class(",this.$recv(this.$object()),"), "+this.$scope().$nesting()+")")}),0)}($nesting[0],$$("ScopeNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_arg,scope,name,push,to_s"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArgNode");return self.$handle("arg"),self.$children("name"),$def(self,"$compile",(function(){return this.$scope().$add_arg(this.$name()),this.$push(this.$name().$to_s())}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/arity_check"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$def=Opal.def,$send=Opal.send,$rb_minus=Opal.rb_minus,$truthy=Opal.truthy,$not=Opal.not,$rb_lt=Opal.rb_lt,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt;return Opal.add_stubs("require,handle,children,new,args_node,args,optargs,restarg,postargs,kwargs,kwoptargs,kwrestarg,kwnilarg,arity,arity=,scope,-,arity_check?,compiler,empty?,arity_checks,helper,inspect,to_s,mid,line,push,join,compact,size,all_args,!,-@,<,+,>,<<,has_only_optional_kwargs?,any?,negative_arity,positive_arity,select,include?,type,has_required_kwargs?,all?,==,def?,class_scope?,top?,parent,class?,name,module?,identity"),self.$require("opal/nodes/base"),self.$require("opal/rewriters/arguments"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ArityCheckNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.kwargs=$proto.kwoptargs=$proto.kwrestarg=$proto.all_args=$proto.args=$proto.optargs=$proto.restarg=$proto.postargs=$proto.arity_checks=nil,self.$handle("arity_check"),self.$children("args_node"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this,arguments$=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),arguments$=$$$($$("Rewriters"),"Arguments").$new(self.$args_node().$children()),self.args=arguments$.$args(),self.optargs=arguments$.$optargs(),self.restarg=arguments$.$restarg(),self.postargs=arguments$.$postargs(),self.kwargs=arguments$.$kwargs(),self.kwoptargs=arguments$.$kwoptargs(),self.kwrestarg=arguments$.$kwrestarg(),self.kwnilarg=arguments$.$kwnilarg()}),-1),$def(self,"$compile",(function(){var $writer,meth=nil;return $writer=[this.$arity()],$send(this.$scope(),"arity=",$to_a($writer)),$rb_minus($writer.length,1),$truthy(this.$compiler()["$arity_check?"]())?$truthy(this.$arity_checks()["$empty?"]())?nil:(this.$helper("ac"),meth=this.$scope().$mid().$to_s().$inspect(),this.$line("var $arity = arguments.length;"),this.$push(" if ("+this.$arity_checks().$join(" || ")+") { $ac($arity, "+this.$arity()+", this, "+meth+"); }")):nil}),0),$def(self,"$kwargs",(function(){return[].concat($to_a(this.kwargs)).concat($to_a(this.kwoptargs)).concat([this.kwrestarg]).$compact()}),0),$def(self,"$all_args",(function(){var $ret_or_1;return this.all_args=$truthy($ret_or_1=this.all_args)?$ret_or_1:[].concat($to_a(this.args)).concat($to_a(this.optargs)).concat([this.restarg]).concat($to_a(this.postargs)).concat($to_a(this.$kwargs())).$compact()}),0),$def(self,"$arity_checks",(function(){var $a,arity=nil,min_arity=nil,max_arity=nil;return $truthy(null!=($a=this.arity_checks)&&$a!==nil?"instance-variable":nil)||(arity=this.$all_args().$size(),arity=$rb_minus(arity,this.optargs.$size()),$truthy(this.restarg)&&(arity=$rb_minus(arity,1)),arity=$rb_minus(arity,this.$kwargs().$size()),($not(this.optargs["$empty?"]())||$not(this.$kwargs()["$empty?"]())||$truthy(this.restarg))&&(arity=$rb_minus(arity["$-@"](),1)),this.arity_checks=[],$truthy($rb_lt(arity,0))?(min_arity=$rb_plus(arity,1)["$-@"](),max_arity=this.$all_args().$size(),$truthy($rb_gt(min_arity,0))&&this.arity_checks["$<<"]("$arity < "+min_arity),$truthy(this.restarg)||this.arity_checks["$<<"]("$arity > "+max_arity)):this.arity_checks["$<<"]("$arity !== "+arity)),this.arity_checks}),0),$def(self,"$arity",(function(){return $truthy(this.restarg)||$truthy(this.optargs["$any?"]())||$truthy(this["$has_only_optional_kwargs?"]())?this.$negative_arity():this.$positive_arity()}),0),$def(self,"$negative_arity",(function(){var result=nil;return result=$send(this.$all_args(),"select",[],(function(arg){return null==arg&&(arg=nil),["arg","mlhs"]["$include?"](arg.$type())}),1).$size(),$truthy(this["$has_required_kwargs?"]())&&(result=$rb_plus(result,1)),result=$rb_minus(result["$-@"](),1)}),0),$def(self,"$positive_arity",(function(){var result=nil;return result=this.$all_args().$size(),result=$rb_minus(result,this.$kwargs().$size()),$truthy(this.$kwargs()["$any?"]())&&(result=$rb_plus(result,1)),result}),0),$def(self,"$has_only_optional_kwargs?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$kwargs()["$any?"]())?$send(this.$kwargs(),"all?",[],(function(arg){return null==arg&&(arg=nil),["kwoptarg","kwrestarg"]["$include?"](arg.$type())}),1):$ret_or_1}),0),$def(self,"$has_required_kwargs?",(function(){return $send(this.$kwargs(),"any?",[],(function(arg){return null==arg&&(arg=nil),arg.$type()["$=="]("kwarg")}),1)}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"IterArityCheckNode");return self.$handle("iter_arity_check"),$def(self,"$compile",(function(){var $writer,parent_scope=nil,$ret_or_1=nil,$ret_or_2=nil,context=nil,identity=nil;if($writer=[this.$arity()],$send(this.$scope(),"arity=",$to_a($writer)),$rb_minus($writer.length,1),!$truthy(this.$compiler()["$arity_check?"]()))return nil;if($truthy(this.$arity_checks()["$empty?"]()))return nil;for(parent_scope=this.$scope();!$truthy($truthy($ret_or_1=$truthy($ret_or_2=parent_scope["$def?"]())?$ret_or_2:parent_scope["$class_scope?"]())?$ret_or_1:parent_scope["$top?"]());)parent_scope=parent_scope.$parent();return context=$truthy(parent_scope["$top?"]())?"'
    '":$truthy(parent_scope["$def?"]())?"'"+parent_scope.$mid()+"'":$truthy(parent_scope["$class?"]())?"''":$truthy(parent_scope["$module?"]())?"''":nil,identity=this.$scope().$identity(),this.$line("if ("+identity+".$$is_lambda || "+identity+".$$define_meth) {"),this.$line(" var $arity = arguments.length;"),this.$line(" if ("+this.$arity_checks().$join(" || ")+") { Opal.block_ac($arity, "+this.$arity()+", "+context+"); }"),this.$line("}")}),0)}($nesting[0],$$("ArityCheckNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/ensure_kwargs_are_kwargs"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,helper,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"EnsureKwargsAreKwargs");return self.$handle("ensure_kwargs_are_kwargs"),$def(self,"$compile",(function(){return this.$helper("hash2"),this.$line("if ($kwargs == null) {"),this.$line(" $kwargs = $hash2([], {});"),this.$line("} else if (!$kwargs.$$is_hash) {"),this.$line(" throw Opal.ArgumentError.$new('expected kwargs');"),this.$line("}")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_block_arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,uses_block!,scope,add_arg,name,prepare_block"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractBlockarg");return self.$handle("extract_blockarg"),self.$children("name"),$def(self,"$compile",(function(){return this.$scope()["$uses_block!"](),this.$scope().$add_arg(this.$name()),this.$scope().$prepare_block(this.$name())}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,[],meta,<<,used_kwargs,scope,add_temp,lvar_name,line,inspect,to_s"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwarg");return self.$$prototype.sexp=nil,self.$handle("extract_kwarg"),self.$children("lvar_name"),$def(self,"$compile",(function(){var key_name=nil;return key_name=this.sexp.$meta()["$[]"]("arg_name"),this.$scope().$used_kwargs()["$<<"](key_name),this.$add_temp(this.$lvar_name()),this.$line("if (!Opal.hasOwnProperty.call($kwargs.$$smap, '"+key_name+"')) {"),this.$line(" throw Opal.ArgumentError.$new('missing keyword: "+key_name+"');"),this.$line("}"),this.$line(this.$lvar_name()+" = $kwargs.$$smap["+key_name.$to_s().$inspect()+"];")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwargs"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,add_temp,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwargs");return self.$handle("extract_kwargs"),$def(self,"$compile",(function(){return this.$add_temp("$kwargs"),this.$line("$kwargs = Opal.extract_kwargs($post_args)")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwoptarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,[],meta,<<,used_kwargs,scope,add_temp,lvar_name,line,inspect,to_s,==,default_value,expr"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwoptarg");return self.$$prototype.sexp=nil,self.$handle("extract_kwoptarg"),self.$children("lvar_name","default_value"),$def(self,"$compile",(function(){var key_name=nil;return key_name=this.sexp.$meta()["$[]"]("arg_name"),this.$scope().$used_kwargs()["$<<"](key_name),this.$add_temp(this.$lvar_name()),this.$line(this.$lvar_name()+" = $kwargs.$$smap["+key_name.$to_s().$inspect()+"];"),$eqeq(this.$default_value().$children()["$[]"](1),"undefined")?nil:this.$line("if ("+this.$lvar_name()+" == null) "+this.$lvar_name()+" = ",this.$expr(this.$default_value()))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwrestarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("require,handle,children,name,add_temp,line,used_kwargs,map,scope,join"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwrestarg");return self.$handle("extract_kwrestarg"),self.$children("name"),$def(self,"$compile",(function(){var name,$ret_or_1;return name=$truthy($ret_or_1=this.$name())?$ret_or_1:"$kw_rest_arg",this.$add_temp(name),this.$line(name+" = Opal.kwrestargs($kwargs, "+this.$used_kwargs()+");")}),0),$def(self,"$used_kwargs",(function(){return"{"+$send(this.$scope().$used_kwargs(),"map",[],(function(arg_name){return null==arg_name&&(arg_name=nil),"'"+arg_name+"': true"}),1).$join(",")+"}"}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_optarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,==,[],default_value,line,name,expr"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractOptargNode");return self.$handle("extract_optarg"),self.$children("name","default_value"),$def(self,"$compile",(function(){return $eqeq(this.$default_value().$children()["$[]"](1),"undefined")?nil:this.$line("if ("+this.$name()+" == null) "+this.$name()+" = ",this.$expr(this.$default_value()),";")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_post_arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_temp,name,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractPostArg");return self.$handle("extract_post_arg"),self.$children("name"),$def(self,"$compile",(function(){return this.$add_temp(this.$name()),this.$line(this.$name()+" = $post_args.shift();"),this.$line("if ("+this.$name()+" == null) "+this.$name()+" = nil;")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_post_optarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_temp,name,line,args_to_keep,==,[],default_value,expr"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractPostOptarg");return self.$handle("extract_post_optarg"),self.$children("name","default_value","args_to_keep"),$def(self,"$compile",(function(){return this.$add_temp(this.$name()),this.$line("if ($post_args.length > "+this.$args_to_keep()+") "+this.$name()+" = $post_args.shift();"),$eqeq(this.$default_value().$children()["$[]"](1),"undefined")?nil:this.$line("if ("+this.$name()+" == null) "+this.$name()+" = ",this.$expr(this.$default_value()),";")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_restarg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,name,add_temp,==,args_to_keep,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractRestarg");return self.$handle("extract_restarg"),self.$children("name","args_to_keep"),$def(self,"$compile",(function(){var name,$ret_or_1;return name=$truthy($ret_or_1=this.$name())?$ret_or_1:"$rest_arg",this.$add_temp(name),$eqeq(this.$args_to_keep(),0)?this.$line(name+" = $post_args;"):this.$line(name+" = $post_args.splice(0, $post_args.length - "+this.$args_to_keep()+");")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/fake_arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,next_temp,scope,add_arg,push"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"FakeArgNode");return self.$handle("fake_arg"),$def(self,"$compile",(function(){var name;return name=this.$scope().$next_temp(),this.$scope().$add_arg(name),this.$push(name)}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/initialize_iterarg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,line,name"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"InitializeIterarg");return self.$handle("initialize_iter_arg"),self.$children("name"),$def(self,"$compile",(function(){return this.$line("if ("+this.$name()+" == null) "+this.$name()+" = nil;")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/initialize_shadowarg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,<<,locals,scope,name,add_arg,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"InitializeShadowarg");return self.$handle("initialize_shadowarg"),self.$children("name"),$def(self,"$compile",(function(){return this.$scope().$locals()["$<<"](this.$name()),this.$scope().$add_arg(this.$name()),this.$line(this.$name()+" = nil;")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/parameters"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a,$truthy=Opal.truthy,$eqeq=Opal.eqeq;return Opal.add_stubs("children,map,public_send,type,join,compact,=="),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,null,"Parameters");return self.$$prototype.args=nil,$def(self,"$initialize",(function(args){return this.args=args.$children()}),1),$def(self,"$to_code",(function(){return"["+$send(this.args,"map",[],(function $$1(arg){return null==arg&&(arg=nil),$send(null==$$1.$$s?this:$$1.$$s,"public_send",["on_"+arg.$type()].concat($to_a(arg)))}),{$$arity:1,$$s:this}).$compact().$join(", ")+"]"}),0),$def(self,"$on_arg",(function(arg_name){return"['req', '"+arg_name+"']"}),1),$def(self,"$on_mlhs",(function($a){return Opal.slice.call(arguments),"['req']"}),-1),$def(self,"$on_optarg",(function(arg_name,_default_value){return"['opt', '"+arg_name+"']"}),2),$def(self,"$on_restarg",(function(arg_name){return null==arg_name&&(arg_name=nil),$truthy(arg_name)?($eqeq(arg_name,"fwd_rest_arg")&&(arg_name="*"),"['rest', '"+arg_name+"']"):"['rest']"}),-1),$def(self,"$on_kwarg",(function(arg_name){return"['keyreq', '"+arg_name+"']"}),1),$def(self,"$on_kwoptarg",(function(arg_name,_default_value){return"['key', '"+arg_name+"']"}),2),$def(self,"$on_kwrestarg",(function(arg_name){return null==arg_name&&(arg_name=nil),$truthy(arg_name)?"['keyrest', '"+arg_name+"']":"['keyrest']"}),-1),$def(self,"$on_blockarg",(function(arg_name){return $eqeq(arg_name,"fwd_block_arg")&&(arg_name="&"),"['block', '"+arg_name+"']"}),1),$def(self,"$on_kwnilarg",(function(){return"['nokey']"}),0),$def(self,"$on_shadowarg",(function(_arg_name){return nil}),1)}([$module($base,"Args")].concat($parent_nesting)[0])}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/prepare_post_args"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_temp,==,offset,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"PreparePostArgs");return self.$handle("prepare_post_args"),self.$children("offset"),$def(self,"$compile",(function(){return this.$add_temp("$post_args"),$eqeq(this.$offset(),0)?this.$line("$post_args = Opal.slice.call(arguments)"):this.$line("$post_args = Opal.slice.call(arguments, "+this.$offset()+")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$send=Opal.send,$truthy=Opal.truthy,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt,$neqeq=Opal.neqeq,$def=Opal.def;return Opal.add_stubs("require,handle,each_with_index,children,multiple_underscore?,[],[]=,-,+,>,s,type,!=,push,process,==,count,start_with?,to_s,first"),self.$require("opal/nodes/base"),self.$require("opal/nodes/args/arg"),self.$require("opal/nodes/args/arity_check"),self.$require("opal/nodes/args/ensure_kwargs_are_kwargs"),self.$require("opal/nodes/args/extract_block_arg"),self.$require("opal/nodes/args/extract_kwarg"),self.$require("opal/nodes/args/extract_kwargs"),self.$require("opal/nodes/args/extract_kwoptarg"),self.$require("opal/nodes/args/extract_kwrestarg"),self.$require("opal/nodes/args/extract_optarg"),self.$require("opal/nodes/args/extract_post_arg"),self.$require("opal/nodes/args/extract_post_optarg"),self.$require("opal/nodes/args/extract_restarg"),self.$require("opal/nodes/args/fake_arg"),self.$require("opal/nodes/args/initialize_iterarg"),self.$require("opal/nodes/args/initialize_shadowarg"),self.$require("opal/nodes/args/parameters"),self.$require("opal/nodes/args/prepare_post_args"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArgsNode");return self.$handle("args"),$def(self,"$compile",(function(){var same_arg_counter=nil;return same_arg_counter=$hash2([],{}),$send(this.$children(),"each_with_index",[],(function $$1(arg,idx){var self=null==$$1.$$s?this:$$1.$$s,$writer=nil;return null==arg&&(arg=nil),null==idx&&(idx=nil),$truthy(self["$multiple_underscore?"](arg))&&($truthy(same_arg_counter["$[]"](arg))||($send(same_arg_counter,"[]=",$to_a($writer=[arg,0])),$writer[$rb_minus($writer.length,1)]),$writer=[arg,$rb_plus(same_arg_counter["$[]"](arg),1)],$send(same_arg_counter,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy($rb_gt(same_arg_counter["$[]"](arg),1))&&(arg=self.$s(arg.$type(),arg.$children()["$[]"](0)+"_$"+same_arg_counter["$[]"](arg)))),$neqeq(idx,0)&&self.$push(", "),self.$push(self.$process(arg))}),{$$arity:2,$$s:this})}),0),$def(self,"$multiple_underscore?",(function(arg){var $ret_or_1,$ret_or_2,$ret_or_3;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=arg.$type()["$=="]("arg"))?arg.$children().$count()["$=="](1):$ret_or_3)?arg.$children().$first().$to_s()["$start_with?"]("_"):$ret_or_2)?$rb_gt(this.$children().$count(arg),1):$ret_or_1}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/node_with_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("require,attr_reader,attr_accessor,[],meta,s,original_args,push,process,arity_check_node,uses_block?,scope,prepare_block,to_code,new"),self.$require("opal/nodes/scope"),self.$require("opal/nodes/args/parameters"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"NodeWithArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.sexp=nil,self.$attr_reader("used_kwargs"),self.$attr_accessor("arity"),self.$attr_reader("original_args"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.original_args=self.sexp.$meta()["$[]"]("original_args"),self.used_kwargs=[],self.arity=0}),-1),$def(self,"$arity_check_node",(function(){return this.$s("arity_check",this.$original_args())}),0),$def(self,"$compile_arity_check",(function(){return this.$push(this.$process(this.$arity_check_node()))}),0),$def(self,"$compile_block_arg",(function(){return $truthy(this.$scope()["$uses_block?"]())?this.$scope().$prepare_block():nil}),0),$def(self,"$parameters_code",(function(){return $$$($$("Args"),"Parameters").$new(this.$original_args()).$to_code()}),0)}($nesting[0],$$("ScopeNode"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/iter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$eqeq=Opal.eqeq,$rb_gt=Opal.rb_gt,$def=Opal.def;return Opal.add_stubs("require,handle,children,lambda_definition?,scope,is_lambda!,in_scope,identify!,process,inline_args,compile_arity_check,stmt,returned_body,add_temp,to_vars,line,catch_return,unshift,push,await_encountered,<<,arity,self,contains_break?,arity_check?,compiler,parameters_code,has_top_level_mlhs_arg?,has_trailing_comma_in_args?,==,length,>,join,nesting,relative_access,block_arg,prepare_block,each,args,first,updated,body,returns,s,any?,original_args,type,expression,loc,source,match,new,found_break?"),self.$require("opal/nodes/node_with_args"),self.$require("opal/rewriters/break_finder"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"IterNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.define_self=$proto.define_nesting=$proto.define_relative_access=$proto.sexp=nil,self.$handle("iter"),self.$children("inline_args","body"),$def(self,"$compile",(function(){var inline_params=nil,to_vars=nil,identity=nil,body_code=nil,blockopts=nil;return $truthy(this.$scope()["$lambda_definition?"]())&&this["$is_lambda!"](),inline_params=nil,to_vars=identity=body_code=nil,$send(this,"in_scope",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return null==self.define_self&&(self.define_self=nil),identity=self.$scope()["$identify!"](),inline_params=self.$process(self.$inline_args()),self.$compile_arity_check(),body_code=self.$stmt(self.$returned_body()),$truthy(self.define_self)&&self.$add_temp("self = "+identity+".$$s == null ? this : "+identity+".$$s"),to_vars=self.$scope().$to_vars(),self.$line(body_code),$truthy(self.$scope().$catch_return())?(self.$unshift("try {\n"),self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }"),self.$push(" throw $returner; }")):nil}),{$$arity:0,$$s:this}),this.$unshift(to_vars),$truthy(this.$await_encountered())?this.$unshift("async function "+identity+"(",inline_params,"){"):this.$unshift("function "+identity+"(",inline_params,"){"),this.$push("}"),(blockopts=[])["$<<"]("$$arity: "+this.$arity()),$truthy(this.define_self)&&blockopts["$<<"]("$$s: "+this.$scope().$self()),$truthy(this["$contains_break?"]())&&blockopts["$<<"]("$$brk: $brk"),$truthy(this.$compiler()["$arity_check?"]())&&blockopts["$<<"]("$$parameters: "+this.$parameters_code()),$truthy(this["$has_top_level_mlhs_arg?"]())&&blockopts["$<<"]("$$has_top_level_mlhs_arg: true"),$truthy(this["$has_trailing_comma_in_args?"]())&&blockopts["$<<"]("$$has_trailing_comma_in_args: true"),$eqeq(blockopts.$length(),1)?this.$push(", "+this.$arity()):$truthy($rb_gt(blockopts.$length(),1))&&this.$push(", {",blockopts.$join(", "),"}"),$truthy(this.define_nesting)&&this.$scope().$nesting(),$truthy(this.define_relative_access)?this.$scope().$relative_access():nil}),0),$def(self,"$compile_block_arg",(function(){return $truthy(this.$block_arg())?this.$scope().$prepare_block():nil}),0),$def(self,"$extract_underscore_args",(function(){var valid_args=nil,caught_blank_argument=nil;return valid_args=[],caught_blank_argument=!1,$send(this.$args().$children(),"each",[],(function(arg){var arg_name;return null==arg&&(arg=nil),arg_name=arg.$children().$first(),$eqeq(arg_name,"_")?$truthy(caught_blank_argument)?nil:(caught_blank_argument=!0,valid_args["$<<"](arg)):valid_args["$<<"](arg)}),1),this.sexp=this.sexp.$updated(nil,[this.$args().$updated(nil,valid_args),this.$body()])}),0),$def(self,"$returned_body",(function(){var $ret_or_1;return this.$compiler().$returns($truthy($ret_or_1=this.$body())?$ret_or_1:this.$s("nil"))}),0),$def(self,"$has_top_level_mlhs_arg?",(function(){return $send(this.$original_args().$children(),"any?",[],(function(arg){return null==arg&&(arg=nil),arg.$type()["$=="]("mlhs")}),1)}),0),$def(self,"$has_trailing_comma_in_args?",(function(){return $truthy(this.$original_args().$loc())&&$truthy(this.$original_args().$loc().$expression())?this.$original_args().$loc().$expression().$source().$match(/,\s*\|/):nil}),0),$def(self,"$arity_check_node",(function(){return this.$s("iter_arity_check",this.$original_args())}),0),$def(self,"$contains_break?",(function(){var finder=nil;return(finder=$$$($$$($$("Opal"),"Rewriters"),"BreakFinder").$new()).$process(this.sexp),finder["$found_break?"]()}),0)}($nesting[0],$$("NodeWithArgs"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/def"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$def=Opal.def,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,handle,children,in_scope,mid,mid=,scope,-,==,type,defs=,identify!,identity,block_name=,process,inline_args,stmt,returns,compiler,stmts,compile_block_arg,add_temp,compile_arity_check,unshift,current_indent,to_vars,line,catch_return,push,await_encountered,<<,arity,arity_check?,parameters_code,parse_comments?,comments_code,enable_source_location?,source_location,length,>,join,wrap_with_definition,nesting,relative_access,helper,wrap,self,expr?,+,map,comments,inspect,text"),self.$require("opal/nodes/node_with_args"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DefNode"),$proto=self.$$prototype;return $proto.define_nesting=$proto.define_relative_access=nil,self.$handle("def"),self.$children("mid","inline_args","stmts"),$def(self,"$compile",(function(){var inline_params=nil,scope_name=nil,blockopts=nil;return inline_params=nil,scope_name=nil,$send(this,"in_scope",[],(function $$1(){var stmt_code,self=null==$$1.$$s?this:$$1.$$s,$writer=nil;return null==self.sexp&&(self.sexp=nil),null==self.define_self&&(self.define_self=nil),$writer=[self.$mid()],$send(self.$scope(),"mid=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$eqeq(self.sexp.$type(),"defs")&&($writer=[!0],$send(self.$scope(),"defs=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),self.$scope()["$identify!"](),scope_name=self.$scope().$identity(),$writer=["$yield"],$send(self.$scope(),"block_name=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],inline_params=self.$process(self.$inline_args()),stmt_code=self.$stmt(self.$compiler().$returns(self.$stmts())),self.$compile_block_arg(),$truthy(self.define_self)&&self.$add_temp("self = this"),self.$compile_arity_check(),self.$unshift("\n"+self.$current_indent(),self.$scope().$to_vars()),self.$line(stmt_code),$truthy(self.$scope().$catch_return())?(self.$unshift("try {\n"),self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }"),self.$push(" throw $returner; }")):nil}),{$$arity:0,$$s:this}),this.$unshift(") {"),this.$unshift(inline_params),this.$unshift("function "+scope_name+"("),$truthy(this.$await_encountered())&&this.$unshift("async "),this.$line("}"),(blockopts=[])["$<<"]("$$arity: "+this.$arity()),$truthy(this.$compiler()["$arity_check?"]())&&blockopts["$<<"]("$$parameters: "+this.$parameters_code()),$truthy(this.$compiler()["$parse_comments?"]())&&blockopts["$<<"]("$$comments: "+this.$comments_code()),$truthy(this.$compiler()["$enable_source_location?"]())&&blockopts["$<<"]("$$source_location: "+this.$source_location()),$eqeq(blockopts.$length(),1)?this.$push(", "+this.$arity()):$truthy($rb_gt(blockopts.$length(),1))&&this.$push(", {",blockopts.$join(", "),"}"),this.$wrap_with_definition(),$truthy(this.define_nesting)&&this.$scope().$nesting(),$truthy(this.define_relative_access)?this.$scope().$relative_access():nil}),0),$def(self,"$wrap_with_definition",(function(){return this.$helper("def"),this.$wrap("$def("+this.$scope().$self()+", '$"+this.$mid()+"', ",")"),$truthy(this["$expr?"]())?nil:this.$unshift("\n"+this.$current_indent())}),0),$def(self,"$comments_code",(function(){return $rb_plus($rb_plus("[",$send(this.$comments(),"map",[],(function(comment){return null==comment&&(comment=nil),comment.$text().$inspect()}),1).$join(", ")),"]")}),0)}($nesting[0],$$("NodeWithArgs"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/defs"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,helper,unshift,expr,recvr,mid,push"),self.$require("opal/nodes/def"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DefsNode");return self.$handle("defs"),self.$children("recvr","mid","inline_args","stmts"),$def(self,"$wrap_with_definition",(function(){return this.$helper("defs"),this.$unshift("$defs(",this.$expr(this.$recvr()),", '$"+this.$mid()+"', "),this.$push(")")}),0)}($nesting[0],$$("DefNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/if"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def,$not=Opal.not,$send=Opal.send,$eqeqeq=Opal.eqeqeq;return Opal.add_stubs("require,handle,children,should_compile_as_simple_expression?,==,true_body,s,compile_with_binary_or,false_body,compile_with_binary_and,compile_with_ternary,compile_with_if,truthy,falsy,!,push,js_truthy,test,indent,line,stmt,type,expects_expression?,await_encountered,scope,wrap,returnify,returns,compiler,expr?,recv?,simple?,expr,[],meta,sexp,===,single_line?,strip_empty_children,all?,helper,new_temp,top_scope,excl,from,to"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"IfNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("if"),self.$children("test","true_body","false_body"),$def(self,"$compile",(function(){return $truthy(this["$should_compile_as_simple_expression?"]())?$eqeq(this.$true_body(),this.$s("true"))?this.$compile_with_binary_or():$eqeq(this.$false_body(),this.$s("false"))?this.$compile_with_binary_and():this.$compile_with_ternary():this.$compile_with_if()}),0),$def(self,"$compile_with_if",(function(){var $a,truthy=nil,falsy=nil;return truthy=this.$truthy(),falsy=this.$falsy(),$truthy(falsy)&&$not(truthy)?(this.$push("if (!",this.$js_truthy(this.$test()),") {"),falsy=($a=[truthy,falsy])[0],truthy=$a[1]):this.$push("if (",this.$js_truthy(this.$test()),") {"),$truthy(truthy)&&$send(this,"indent",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return self.$line(self.$stmt(truthy))}),{$$arity:0,$$s:this}),$truthy(falsy)?$eqeq(falsy.$type(),"if")?this.$line("} else ",this.$stmt(falsy)):(this.$line("} else {"),$send(this,"indent",[],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;return self.$line(self.$stmt(falsy))}),{$$arity:0,$$s:this}),this.$line("}")):(this.$line("}"),$truthy(this["$expects_expression?"]())&&this.$line("return nil;")),$truthy(this["$expects_expression?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() {","})())"):this.$wrap("(function() {","})()"):nil}),0),$def(self,"$truthy",(function(){return this.$returnify(this.$true_body())}),0),$def(self,"$falsy",(function(){return this.$returnify(this.$false_body())}),0),$def(self,"$returnify",(function(body){return $truthy(this["$expects_expression?"]())&&$truthy(body)?this.$compiler().$returns(body):body}),1),$def(self,"$expects_expression?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$expr?"]())?$ret_or_1:this["$recv?"]()}),0),$def(self,"$should_compile_as_simple_expression?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this["$expects_expression?"]())?this["$simple?"](this.$true_body()):$ret_or_2)?this["$simple?"](this.$false_body()):$ret_or_1}),0),$def(self,"$compile_with_ternary",(function(){var truthy,falsy=nil,$ret_or_1=nil;return truthy=this.$true_body(),falsy=this.$false_body(),this.$push("("),this.$push(this.$js_truthy(this.$test())," ? "),this.$push("(",this.$expr($truthy($ret_or_1=truthy)?$ret_or_1:this.$s("nil")),") : "),$not(falsy)||$eqeq(falsy.$type(),"if")?this.$push(this.$expr($truthy($ret_or_1=falsy)?$ret_or_1:this.$s("nil"))):this.$push("(",this.$expr($truthy($ret_or_1=falsy)?$ret_or_1:this.$s("nil")),")"),this.$push(")")}),0),$def(self,"$compile_with_binary_and",(function(){var truthy=nil,$ret_or_1=nil;return truthy=$truthy(this.$sexp().$meta()["$[]"]("do_js_truthy_on_true_body"))?this.$js_truthy($truthy($ret_or_1=this.$true_body())?$ret_or_1:this.$s("nil")):this.$expr($truthy($ret_or_1=this.$true_body())?$ret_or_1:this.$s("nil")),this.$push("("),this.$push(this.$js_truthy(this.$test())," && "),this.$push("(",truthy,")"),this.$push(")")}),0),$def(self,"$compile_with_binary_or",(function(){var falsy=nil,$ret_or_1=nil;return falsy=$truthy(this.$sexp().$meta()["$[]"]("do_js_truthy_on_false_body"))?this.$js_truthy($truthy($ret_or_1=this.$false_body())?$ret_or_1:this.$s("nil")):this.$expr($truthy($ret_or_1=this.$false_body())?$ret_or_1:this.$s("nil")),this.$push("("),this.$push(this.$js_truthy(this.$test())," || "),this.$push("(",falsy,")"),this.$push(")")}),0),$def(self,"$simple?",(function(body){var $ret_or_2=nil;return!$eqeqeq($$$($$("AST"),"Node"),body)||!($eqeqeq("return",$ret_or_2=body.$type())||$eqeqeq("js_return",$ret_or_2)||$eqeqeq("break",$ret_or_2)||$eqeqeq("next",$ret_or_2)||$eqeqeq("redo",$ret_or_2)||$eqeqeq("retry",$ret_or_2))&&($eqeqeq("xstr",$ret_or_2)?$$("XStringNode")["$single_line?"]($$("XStringNode").$strip_empty_children(body.$children())):$send(body.$children(),"all?",[],(function $$6(i){return null==i&&(i=nil),(null==$$6.$$s?this:$$6.$$s)["$simple?"](i)}),{$$arity:1,$$s:this}))}),1)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"IFlipFlop");self.$handle("iflipflop"),self.$children("from","to"),$def(self,"$excl",(function(){return""}),0),$def(self,"$compile",(function(){var fun_name,ff;return this.$helper("truthy"),ff=(fun_name=this.$top_scope().$new_temp())+".$$ff",this.$push("(typeof "+fun_name+" === 'undefined' ? ("+fun_name+" = function(from, to){"),this.$push(" if (typeof "+ff+" === 'undefined') "+ff+" = false;"),this.$push(" var retval = "+ff+";"),this.$push(" if (!"+ff+") {"),this.$push(" "+ff+" = retval = $truthy(from());"),this.$push(" }"),this.$push(" "+this.$excl()+"if ("+ff+") {"),this.$push(" if ($truthy(to())) "+ff+" = false;"),this.$push(" }"),this.$push(" return retval;"),this.$push("}) : "+fun_name+")("),this.$push(" function() { ",this.$stmt(this.$compiler().$returns(this.$from()))," },"),this.$push(" function() { ",this.$stmt(this.$compiler().$returns(this.$to()))," }"),this.$push(")")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"EFlipFlop");return self.$handle("eflipflop"),$def(self,"$excl",(function(){return"else "}),0)}($nesting[0],$$("IFlipFlop"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/logic"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt,$not=Opal.not;return Opal.add_stubs("require,handle,in_while?,push,iter?,scope,expr_or_nil,value,error,===,size,children,s,first,compile_while,compile_iter,[],while_loop,stmt?,line,break_val,nil?,expr,[]=,-,helper,identity,==,empty_splat?,recv,>,find_parent_def,!,lambda?,def?,expr?,return_in_iter?,return_expr_in_def?,scope_to_catch_return,catch_return=,return_val,to_s"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"NextNode");self.$handle("next"),$def(self,"$compile",(function(){return $truthy(this["$in_while?"]())?this.$push("continue;"):$truthy(this.$scope()["$iter?"]())?this.$push("return ",this.$expr_or_nil(this.$value()),";"):this.$error("Invalid next")}),0),$def(self,"$value",(function(){var $ret_or_1;return $eqeqeq(0,$ret_or_1=this.$children().$size())?this.$s("nil"):$eqeqeq(1,$ret_or_1)?this.$children().$first():$send(this,"s",["array"].concat($to_a(this.$children())))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"BreakNode");self.$handle("break"),self.$children("value"),$def(self,"$compile",(function(){return $truthy(this["$in_while?"]())?this.$compile_while():$truthy(this.$scope()["$iter?"]())?this.$compile_iter():this.$error("void value expression: cannot use break outside of iter/while")}),0),$def(self,"$compile_while",(function(){return $truthy(this.$while_loop()["$[]"]("closure"))?this.$push("return ",this.$expr_or_nil(this.$value())):this.$push("break;")}),0),$def(self,"$compile_iter",(function(){return $truthy(this["$stmt?"]())||this.$error("break must be used as a statement"),this.$line("Opal.brk(",this.$break_val(),", $brk)")}),0),$def(self,"$break_val",(function(){return $truthy(this.$value()["$nil?"]())?this.$expr(this.$s("nil")):this.$expr(this.$value())}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"RedoNode");self.$handle("redo"),$def(self,"$compile",(function(){return $truthy(this["$in_while?"]())?this.$compile_while():$truthy(this.$scope()["$iter?"]())?this.$compile_iter():this.$push("REDO()")}),0),$def(self,"$compile_while",(function(){var $writer;return $writer=["use_redo",!0],$send(this.$while_loop(),"[]=",$to_a($writer)),$rb_minus($writer.length,1),this.$push(this.$while_loop()["$[]"]("redo_var")+" = true; continue;")}),0),$def(self,"$compile_iter",(function(){return this.$helper("slice"),this.$push("return "+this.$scope().$identity()+".apply(null, $slice.call(arguments))")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"SplatNode");self.$handle("splat"),self.$children("value"),$def(self,"$empty_splat?",(function(){return this.$value()["$=="](this.$s("array"))}),0),$def(self,"$compile",(function(){return $truthy(this["$empty_splat?"]())?this.$push("[]"):(this.$helper("to_a"),this.$push("$to_a(",this.$recv(this.$value()),")"))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ReturnNode");self.$handle("return"),self.$children("value"),$def(self,"$return_val",(function(){return $truthy(this.$value()["$nil?"]())?this.$expr(this.$s("nil")):$truthy($rb_gt(this.$children().$size(),1))?this.$expr($send(this,"s",["array"].concat($to_a(this.$children())))):this.$expr(this.$value())}),0),$def(self,"$return_in_iter?",(function(){var parent_def=nil;return $truthy(this.$scope()["$iter?"]())&&$not(this.$scope()["$lambda?"]())&&$truthy(parent_def=this.$scope().$find_parent_def())?parent_def:nil}),0),$def(self,"$return_expr_in_def?",(function(){return $truthy(this["$expr?"]())&&($truthy(this.$scope()["$def?"]())||$truthy(this.$scope()["$lambda?"]()))?this.$scope():nil}),0),$def(self,"$scope_to_catch_return",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$return_in_iter?"]())?$ret_or_1:this["$return_expr_in_def?"]()}),0),$def(self,"$compile",(function(){var def_scope,$writer=nil;return $truthy(def_scope=this.$scope_to_catch_return())?($send(def_scope,"catch_return=",$to_a($writer=[!0])),$writer[$rb_minus($writer.length,1)],this.$push("Opal.ret(",this.$return_val(),")")):$truthy(this["$stmt?"]())?this.$push("return ",this.$return_val()):this.$error("void value expression: cannot return as an expression")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JSReturnNode");self.$handle("js_return"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("return "),this.$push(this.$expr(this.$value()))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JSTempNode");self.$handle("js_tmp"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$value().$to_s())}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"BlockPassNode");return self.$handle("block_pass"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$expr(this.$s("send",this.$value(),"to_proc",this.$s("arglist"))))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/definitions"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$range=Opal.range,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$slice=Opal.slice,$rb_plus=Opal.rb_plus,$hash2=Opal.hash2,$const_set=Opal.const_set;return Opal.add_stubs("require,handle,children,each,line,self,scope,expr,===,type,new_name,helper,inspect,[],to_s,first,old_name,push,error,empty?,stmt?,compile_children,simple_children?,compile_inline_children,>,size,wrap,==,returned_children,await_encountered,parent,+,returns,compiler,s,process,fragment,freeze,none?,include?,map,each_with_index,reject,to_proc"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"UndefNode");self.$handle("undef"),self.$children("value"),$def(self,"$compile",(function(){return $send(this.$children(),"each",[],(function $$1(child){var self=null==$$1.$$s?this:$$1.$$s;return null==child&&(child=nil),self.$line("Opal.udef("+self.$scope().$self()+", '$' + ",self.$expr(child),");")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"AliasNode");self.$handle("alias"),self.$children("new_name","old_name"),$def(self,"$compile",(function(){var $ret_or_1,new_name_str=nil,old_name_str=nil;return $eqeqeq("gvar",$ret_or_1=this.$new_name().$type())?(this.$helper("alias_gvar"),new_name_str=this.$new_name().$children().$first().$to_s()["$[]"]($range(1,-1,!1)).$inspect(),old_name_str=this.$old_name().$children().$first().$to_s()["$[]"]($range(1,-1,!1)).$inspect(),this.$push("$alias_gvar(",new_name_str,", ",old_name_str,")")):$eqeqeq("dsym",$ret_or_1)||$eqeqeq("sym",$ret_or_1)?(this.$helper("alias"),this.$push("$alias("+this.$scope().$self()+", ",this.$expr(this.$new_name()),", ",this.$expr(this.$old_name()),")")):this.$error("Opal doesn't know yet how to alias with "+this.$new_name().$type())}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"BeginNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.level=$proto.returned_children=nil,self.$handle("begin"),$def(self,"$compile",(function(){return $truthy(this.$children()["$empty?"]())?this.$push("nil"):$truthy(this["$stmt?"]())?this.$compile_children(this.$children(),this.level):$truthy(this["$simple_children?"]())?(this.$compile_inline_children(this.$children(),this.level),$truthy($rb_gt(this.$children().$size(),1))?this.$wrap("(",")"):nil):$eqeq(this.$children().$size(),1)?this.$compile_inline_children(this.$returned_children(),this.level):(this.$compile_children(this.$returned_children(),this.level),$truthy(this.$scope().$parent().$await_encountered())?this.$wrap("(await (async function() {","})())"):this.$wrap("(function() {","})()"))}),0),$def(self,"$returned_children",(function(){var $a,$b,$ret_or_1,rest=nil,last_child=nil;return this.returned_children=$truthy($ret_or_1=this.returned_children)?$ret_or_1:($b=($b=($a=[].concat($to_a(this.$children()))).length-1)<0?0:$b,rest=$slice.call($a,0,$b),last_child=null==$a[$b]?nil:$a[$b],$truthy(last_child)?$rb_plus(rest,[this.$compiler().$returns(last_child)]):[this.$s("nil")])}),0),$def(self,"$compile_children",(function(children,level){return $send(children,"each",[],(function $$2(child){var self=null==$$2.$$s?this:$$2.$$s;return null==child&&(child=nil),self.$line(self.$process(child,level),self.$fragment(";",$hash2(["loc"],{loc:!1})))}),{$$arity:1,$$s:this})}),2),$const_set($nesting[0],"COMPLEX_CHILDREN",["while","while_post","until","until_post","js_return"].$freeze()),$def(self,"$simple_children?",(function(){return $send(this.$children(),"none?",[],(function(child){return null==child&&(child=nil),$$("COMPLEX_CHILDREN")["$include?"](child.$type())}),1)}),0),$def(self,"$compile_inline_children",(function(children,level){var processed_children;return processed_children=$send(children,"map",[],(function $$5(child){return null==child&&(child=nil),(null==$$5.$$s?this:$$5.$$s).$process(child,level)}),{$$arity:1,$$s:this}),$send($send(processed_children,"reject",[],"empty?".$to_proc()),"each_with_index",[],(function $$6(child,idx){var self=null==$$6.$$s?this:$$6.$$s;return null==child&&(child=nil),null==idx&&(idx=nil),$eqeq(idx,0)||self.$push(self.$fragment(", ",$hash2(["loc"],{loc:!1}))),self.$push(child)}),{$$arity:2,$$s:this})}),2)}($nesting[0],$$("ScopeNode"),$nesting),function($base,$super){return $klass($base,$super,"KwBeginNode").$handle("kwbegin")}($nesting[0],$$("BeginNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/yield"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def;return Opal.add_stubs("require,find_yielding_scope,uses_block!,block_name,block_name=,-,yields_single_arg?,children,push,expr,first,wrap,s,uses_splat?,scope,def?,parent,!,==,size,any?,type,handle,compile_call"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BaseYieldNode");$def(self,"$compile_call",(function(){var block_name,yielding_scope=nil,$writer=nil;return(yielding_scope=this.$find_yielding_scope())["$uses_block!"](),$truthy(yielding_scope.$block_name())||($send(yielding_scope,"block_name=",$to_a($writer=["$yield"])),$writer[$rb_minus($writer.length,1)]),block_name=yielding_scope.$block_name(),$truthy(this["$yields_single_arg?"](this.$children()))?(this.$push(this.$expr(this.$children().$first())),this.$wrap("Opal.yield1("+block_name+", ",")")):(this.$push(this.$expr($send(this,"s",["arglist"].concat($to_a(this.$children()))))),$truthy(this["$uses_splat?"](this.$children()))?this.$wrap("Opal.yieldX("+block_name+", ",")"):this.$wrap("Opal.yieldX("+block_name+", [","])"))}),0),$def(self,"$find_yielding_scope",(function(){var working=nil;for(working=this.$scope();$truthy(working)&&!$truthy(working.$block_name())&&!$truthy(working["$def?"]());)working=working.$parent();return working}),0),$def(self,"$yields_single_arg?",(function(children){var $ret_or_1;return $truthy($ret_or_1=this["$uses_splat?"](children)["$!"]())?children.$size()["$=="](1):$ret_or_1}),1),$def(self,"$uses_splat?",(function(children){return $send(children,"any?",[],(function(child){return null==child&&(child=nil),child.$type()["$=="]("splat")}),1)}),1)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"YieldNode");self.$handle("yield"),$def(self,"$compile",(function(){return this.$compile_call()}),0)}($nesting[0],$$("BaseYieldNode")),function($base,$super){var self=$klass($base,$super,"ReturnableYieldNode");return self.$handle("returnable_yield"),$def(self,"$compile",(function(){return this.$compile_call(),this.$wrap("return ",";")}),0)}($nesting[0],$$("BaseYieldNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/rescue"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$def=Opal.def,$range=Opal.range,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq;return Opal.add_stubs("require,handle,children,push,in_ensure,line,stmt,body_sexp,indent,has_rescue_else?,unshift,rescue_else_code,process,compiler,ensr_sexp,wrap_in_closure?,await_encountered,scope,wrap,returns,begn,ensr,s,recv?,expr?,rescue_else_sexp,stmt?,detect,[],!=,type,rescue_else_sexp=,-,handle_rescue_else_manually?,in_rescue,body_code,each_with_index,==,retry_id,body,nil?,!,in_ensure?,gen_retry_id,attr_reader,expr,klasses,lvar,updated,in_resbody,rescue_body,klasses_sexp,in_resbody?,error,current_rescue"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"EnsureNode");self.$handle("ensure"),self.$children("begn","ensr"),$def(self,"$compile",(function(){return this.$push("try {"),$send(this,"in_ensure",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return self.$line(self.$stmt(self.$body_sexp()))}),{$$arity:0,$$s:this}),this.$line("} finally {"),$send(this,"indent",[],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;return null==self.level&&(self.level=nil),$truthy(self["$has_rescue_else?"]())?(self.$unshift("var $no_errors = true; "),self.$line("var $rescue_else_result;"),self.$line("if ($no_errors) { "),$send(self,"indent",[],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return self.$line("$rescue_else_result = (function() {"),$send(self,"indent",[],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s;return self.$line(self.$stmt(self.$rescue_else_code()))}),{$$arity:0,$$s:self}),self.$line("})();")}),{$$arity:0,$$s:self}),self.$line("}"),self.$line(self.$compiler().$process(self.$ensr_sexp(),self.level)),self.$line("if ($no_errors) { return $rescue_else_result; }")):self.$line(self.$compiler().$process(self.$ensr_sexp(),self.level))}),{$$arity:0,$$s:this}),this.$line("}"),$truthy(this["$wrap_in_closure?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() { ","; })())"):this.$wrap("(function() { ","; })()"):nil}),0),$def(self,"$body_sexp",(function(){return $truthy(this["$wrap_in_closure?"]())?this.$compiler().$returns(this.$begn()):this.$begn()}),0),$def(self,"$ensr_sexp",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$ensr())?$ret_or_1:this.$s("nil")}),0),$def(self,"$wrap_in_closure?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this["$recv?"]())?$ret_or_2:this["$expr?"]())?$ret_or_1:this["$has_rescue_else?"]()}),0),$def(self,"$rescue_else_code",(function(){var rescue_else_code=nil;return rescue_else_code=this.$scope().$rescue_else_sexp(),$truthy(this["$stmt?"]())||(rescue_else_code=this.$compiler().$returns(rescue_else_code)),rescue_else_code}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"RescueNode");self.$$prototype.retry_id=nil,self.$handle("rescue"),self.$children("body"),$def(self,"$compile",(function(){var $writer;return $writer=[$send(this.$children()["$[]"]($range(1,-1,!1)),"detect",[],(function(sexp){var $ret_or_1;return null==sexp&&(sexp=nil),$truthy($ret_or_1=sexp)?sexp.$type()["$!="]("resbody"):$ret_or_1}),1)],$send(this.$scope(),"rescue_else_sexp=",$to_a($writer)),$rb_minus($writer.length,1),!1,$truthy(this["$handle_rescue_else_manually?"]())&&this.$line("var $no_errors = true;"),$send(this,"in_rescue",[this],(function $$7(){var self=null==$$7.$$s?this:$$7.$$s;return self.$push("try {"),$send(self,"indent",[],(function $$8(){var self=null==$$8.$$s?this:$$8.$$s;return self.$line(self.$stmt(self.$body_code()))}),{$$arity:0,$$s:self}),self.$line("} catch ($err) {"),$send(self,"indent",[],(function $$9(){var self=null==$$9.$$s?this:$$9.$$s;return $truthy(self["$has_rescue_else?"]())&&self.$line("$no_errors = false;"),$send(self.$children()["$[]"]($range(1,-1,!1)),"each_with_index",[],(function $$10(child,idx){var self=null==$$10.$$s?this:$$10.$$s;return null==self.level&&(self.level=nil),null==child&&(child=nil),null==idx&&(idx=nil),$truthy(child)&&$eqeq(child.$type(),"resbody")?(!0,$eqeq(idx,0)||self.$push(" else "),self.$line(self.$process(child,self.level))):nil}),{$$arity:2,$$s:self}),self.$push(" else { throw $err; }")}),{$$arity:0,$$s:self}),self.$line("}"),$truthy(self["$handle_rescue_else_manually?"]())&&(self.$push("finally {"),$send(self,"indent",[],(function $$11(){var self=null==$$11.$$s?this:$$11.$$s;return self.$line("if ($no_errors) { "),$send(self,"indent",[],(function $$12(){var self=null==$$12.$$s?this:$$12.$$s;return self.$line(self.$stmt(self.$rescue_else_code()))}),{$$arity:0,$$s:self}),self.$line("}")}),{$$arity:0,$$s:self}),self.$push("}")),$truthy(self.$retry_id())?self.$wrap(self.$retry_id()+": do { "," break; } while(1)"):nil}),{$$arity:0,$$s:this}),$truthy(this["$expr?"]())||$truthy(this["$recv?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() { ","})())"):this.$wrap("(function() { ","})()"):nil}),0),$def(self,"$body_code",(function(){var body_code=nil;return body_code=$truthy(this.$body()["$nil?"]())||$eqeq(this.$body().$type(),"resbody")?this.$s("nil"):this.$body(),$truthy(this["$stmt?"]())||(body_code=this.$compiler().$returns(body_code)),body_code}),0),$def(self,"$rescue_else_code",(function(){var rescue_else_code=nil;return rescue_else_code=this.$scope().$rescue_else_sexp(),$truthy(this["$stmt?"]())||(rescue_else_code=this.$compiler().$returns(rescue_else_code)),rescue_else_code}),0),$def(self,"$handle_rescue_else_manually?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$in_ensure?"]()["$!"]())?this["$has_rescue_else?"]():$ret_or_1}),0),$def(self,"$gen_retry_id",(function(){var $ret_or_1;return this.retry_id=$truthy($ret_or_1=this.retry_id)?$ret_or_1:this.$scope().$gen_retry_id()}),0),self.$attr_reader("retry_id")}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ResBodyNode");self.$handle("resbody"),self.$children("klasses_sexp","lvar","body"),$def(self,"$compile",(function(){return this.$push("if (Opal.rescue($err, ",this.$expr(this.$klasses()),")) {"),$send(this,"indent",[],(function $$14(){var self=null==$$14.$$s?this:$$14.$$s;return $truthy(self.$lvar())&&self.$push(self.$expr(self.$lvar().$updated(nil,[].concat($to_a(self.$lvar().$children())).concat([self.$s("js_tmp","$err")])))),self.$line("try {"),$send(self,"indent",[],(function $$15(){var self=null==$$15.$$s?this:$$15.$$s;return $send(self,"in_resbody",[],(function $$16(){var self=null==$$16.$$s?this:$$16.$$s;return self.$line(self.$stmt(self.$rescue_body()))}),{$$arity:0,$$s:self})}),{$$arity:0,$$s:self}),self.$line("} finally { Opal.pop_exception(); }")}),{$$arity:0,$$s:this}),this.$line("}")}),0),$def(self,"$klasses",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$klasses_sexp())?$ret_or_1:this.$s("array",this.$s("const",nil,"StandardError"))}),0),$def(self,"$rescue_body",(function(){var $ret_or_1,body_code=nil;return body_code=$truthy($ret_or_1=this.$body())?$ret_or_1:this.$s("nil"),$truthy(this["$stmt?"]())||(body_code=this.$compiler().$returns(body_code)),body_code}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"RetryNode");return self.$handle("retry"),$def(self,"$compile",(function(){return $truthy(this["$in_resbody?"]())||this.$error("Invalid retry"),this.$push("continue "+this.$scope().$current_rescue().$gen_retry_id())}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/super"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$slice=Opal.slice,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def,$to_ary=Opal.to_ary,$eqeq=Opal.eqeq,$not=Opal.not,$eqeqeq=Opal.eqeqeq,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt;return Opal.add_stubs("require,include?,type,s,helper,push,compile_receiver,compile_method_body,compile_method_name,compile_arguments,compile_block_pass,private,def?,scope,find_parent_def,to_s,mid,def_scope,identify!,self,method_id,def_scope_identity,defined_check_param,allow_stubs,super_chain,join,map,implicit_arguments_param,super_method_invocation,iter?,super_block_invocation,raise,handle,wrap,uses_block!,compile_using_send,==,iter,block_name,implicit_arglist,!,<<,new,each,children,original_args,[],===,+,[]=,-,>,meta,empty?"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BaseSuperNode"),$proto=self.$$prototype;$proto.sexp=$proto.def_scope=nil,$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$b,$c,$yield=$$initialize.$$p||nil,self=this,args=nil,rest=nil,last_child=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),args=[].concat($to_a(self.sexp)),$c=($c=($b=[].concat($to_a(args))).length-1)<0?0:$c,rest=$slice.call($b,0,$c),last_child=null==$b[$c]?nil:$b[$c],$truthy(last_child)&&$truthy(["iter","block_pass"]["$include?"](last_child.$type()))?(self.iter=last_child,args=rest):self.iter=self.$s("js_tmp","null"),self.arglist=$send(self,"s",["arglist"].concat($to_a(args))),self.recvr=self.$s("self")}),-1),$def(self,"$compile_using_send",(function(){return this.$helper("send2"),this.$push("$send2("),this.$compile_receiver(),this.$compile_method_body(),this.$compile_method_name(),this.$compile_arguments(),this.$compile_block_pass(),this.$push(")")}),0),self.$private(),$def(self,"$def_scope",(function(){var $ret_or_1;return this.def_scope=$truthy($ret_or_1=this.def_scope)?$ret_or_1:$truthy(this.$scope()["$def?"]())?this.$scope():this.$scope().$find_parent_def()}),0),$def(self,"$defined_check_param",(function(){return"false"}),0),$def(self,"$implicit_arguments_param",(function(){return"false"}),0),$def(self,"$method_id",(function(){return this.$def_scope().$mid().$to_s()}),0),$def(self,"$def_scope_identity",(function(){return this.$def_scope()["$identify!"](this.$def_scope().$mid())}),0),$def(self,"$allow_stubs",(function(){return"true"}),0),$def(self,"$super_method_invocation",(function(){return this.$helper("find_super"),"$find_super("+this.$scope().$self()+", '"+this.$method_id()+"', "+this.$def_scope_identity()+", "+this.$defined_check_param()+", "+this.$allow_stubs()+")"}),0),$def(self,"$super_block_invocation",(function(){var $a,$b,chain,cur_defn,mid,trys;return this.$helper("find_block_super"),$b=this.$scope().$super_chain(),chain=null==($a=$to_ary($b))[0]?nil:$a[0],cur_defn=null==$a[1]?nil:$a[1],mid=null==$a[2]?nil:$a[2],trys=$send(chain,"map",[],(function(c){return null==c&&(c=nil),c+".$$def"}),1).$join(" || "),"$find_block_super("+this.$scope().$self()+", "+mid+", ("+trys+" || "+cur_defn+"), "+this.$defined_check_param()+", "+this.$implicit_arguments_param()+")"}),0),$def(self,"$compile_method_body",(function(){return this.$push(", "),$truthy(this.$scope()["$def?"]())?this.$push(this.$super_method_invocation()):$truthy(this.$scope()["$iter?"]())?this.$push(this.$super_block_invocation()):this.$raise("super must be called from method body or block")}),0),$def(self,"$compile_method_name",(function(){var $a,$b,mid=nil;return $truthy(this.$scope()["$def?"]())?this.$push(", '"+this.$method_id()+"'"):$truthy(this.$scope()["$iter?"]())?($b=this.$scope().$super_chain(),null==($a=$to_ary($b))[0]?nil:$a[0],null==$a[1]?nil:$a[1],mid=null==$a[2]?nil:$a[2],this.$push(", "+mid)):nil}),0)}($nesting[0],$$("CallNode")),function($base,$super){var self=$klass($base,$super,"DefinedSuperNode");self.$handle("defined_super"),$def(self,"$allow_stubs",(function(){return"false"}),0),$def(self,"$defined_check_param",(function(){return"true"}),0),$def(self,"$compile",(function(){return this.$compile_receiver(),this.$compile_method_body(),this.$wrap("((",') != null ? "super" : nil)')}),0)}($nesting[0],$$("BaseSuperNode")),function($base,$super){var self=$klass($base,$super,"SuperNode");self.$handle("super"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$truthy(self.$scope()["$def?"]())?self.$scope()["$uses_block!"]():nil}),-1),$def(self,"$compile",(function(){return this.$compile_using_send()}),0)}($nesting[0],$$("BaseSuperNode")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"ZsuperNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$handle("zsuper"),$def(self,"$implicit_arguments_param",(function(){return"true"}),0),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this,$ret_or_1=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$eqeq(self.$iter().$type(),"iter")?nil:(self.$scope()["$uses_block!"](),self.iter=self.$s("js_tmp",$truthy($ret_or_1=self.$scope().$block_name())?$ret_or_1:"$yield"))}),-1),$def(self,"$compile",(function(){var implicit_args=nil,block_pass=nil;return $truthy(this.$def_scope())&&(implicit_args=this.$implicit_arglist(),$truthy(this.$block_name())&&$not(this.$iter())&&(block_pass=this.$s("block_pass",this.$s("lvar",this.$block_name())),implicit_args["$<<"](block_pass)),this.arglist=$send(this,"s",["arglist"].concat($to_a(implicit_args)))),this.$compile_using_send()}),0),$def(self,"$implicit_arglist",(function(){var args=nil,kwargs=nil,same_arg_counter=nil;return args=[],kwargs=[],same_arg_counter=$$("Hash").$new(0),$send(this.$def_scope().$original_args().$children(),"each",[],(function $$2(sexp){var $ret_or_1,self=null==$$2.$$s?this:$$2.$$s,lvar_name=nil,arg_node=nil,$writer=nil,key_name=nil;return null==sexp&&(sexp=nil),lvar_name=sexp.$children()["$[]"](0),$eqeqeq("arg",$ret_or_1=sexp.$type())||$eqeqeq("optarg",$ret_or_1)?(arg_node=self.$s("lvar",lvar_name),$eqeq(lvar_name["$[]"](0),"_")&&($writer=[lvar_name,$rb_plus(same_arg_counter["$[]"](lvar_name),1)],$send(same_arg_counter,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy($rb_gt(same_arg_counter["$[]"](lvar_name),1))&&(arg_node=self.$s("js_tmp",lvar_name+"_$"+same_arg_counter["$[]"](lvar_name)))),args["$<<"](arg_node)):$eqeqeq("restarg",$ret_or_1)?(arg_node=$truthy(lvar_name)?self.$s("lvar",lvar_name):self.$s("js_tmp","$rest_arg"),args["$<<"](self.$s("splat",arg_node))):$eqeqeq("kwarg",$ret_or_1)||$eqeqeq("kwoptarg",$ret_or_1)?(key_name=sexp.$meta()["$[]"]("arg_name"),kwargs["$<<"](self.$s("pair",self.$s("sym",key_name),self.$s("lvar",lvar_name)))):$eqeqeq("kwrestarg",$ret_or_1)?(arg_node=$truthy(lvar_name)?self.$s("lvar",lvar_name):self.$s("js_tmp","$kw_rest_arg"),kwargs["$<<"](self.$s("kwsplat",arg_node))):nil}),{$$arity:1,$$s:this}),$truthy(kwargs["$empty?"]())||args["$<<"]($send(this,"s",["hash"].concat($to_a(kwargs)))),args}),0),$def(self,"$block_name",(function(){var $ret_or_1;return $eqeqeq($$$($$$($$("Opal"),"Nodes"),"IterNode"),$ret_or_1=this.$def_scope())||$eqeqeq($$$($$$($$("Opal"),"Nodes"),"DefNode"),$ret_or_1)?this.$def_scope().$block_name():this.$raise("Don't know what to do with super in the scope "+this.$def_scope())}),0)}($nesting[0],$$("SuperNode"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/version"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set;return function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return $const_set($nesting[0],"VERSION","1.4.1")}($nesting[0],$nesting)},Opal.modules["opal/nodes/top"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("require,handle,children,top_scope=,compiler,-,push,version_comment,in_scope,==,body,s,line,use_strict?,stmt,stmts,is_a?,eval?,add_temp,add_used_helpers,to_vars,scope,compile_method_stubs,compile_irb_vars,compile_end_construct,opening,closing,await_encountered,requirable?,unshift,inspect,module_name,file,esm?,returns,irb?,each,to_a,helpers,method_missing?,method_calls,join,map,to_proc,empty?,eof_content"),self.$require("pathname"),self.$require("opal/version"),self.$require("opal/nodes/scope"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"TopNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$handle("top"),self.$children("body"),$def(self,"$compile",(function(){var $writer;return $writer=[this],$send(this.$compiler(),"top_scope=",$to_a($writer)),$rb_minus($writer.length,1),this.$push(this.$version_comment()),$send(this,"in_scope",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s,body_code=nil;return null==self.define_nesting&&(self.define_nesting=nil),null==self.define_self&&(self.define_self=nil),null==self.define_relative_access&&(self.define_relative_access=nil),null==self.define_absolute_const&&(self.define_absolute_const=nil),$eqeq(self.$body(),self.$s("nil"))?self.$line("return Opal.nil;"):($truthy(self.$compiler()["$use_strict?"]())&&self.$line('"use strict";'),body_code=self.$stmt(self.$stmts()),$truthy(body_code["$is_a?"]($$("Array")))||(body_code=[body_code]),$truthy(self.$compiler()["$eval?"]())?$truthy(self.define_nesting)&&self.$add_temp("$nesting = self.$$is_a_module ? [self] : [self.$$class]"):($truthy(self.define_self)&&self.$add_temp("self = Opal.top"),$truthy(self.define_nesting)&&self.$add_temp("$nesting = []")),$truthy(self.define_relative_access)&&self.$add_temp("$$ = Opal.$r($nesting)"),self.$add_temp("nil = Opal.nil"),$truthy(self.define_absolute_const)&&self.$add_temp("$$$ = Opal.$$$"),self.$add_used_helpers(),self.$line(self.$scope().$to_vars()),self.$compile_method_stubs(),self.$compile_irb_vars(),self.$compile_end_construct(),self.$line(body_code))}),{$$arity:0,$$s:this}),this.$opening(),this.$closing()}),0),$def(self,"$opening",(function(){var async_prefix=nil;return $truthy(this.$await_encountered())&&(async_prefix="async "),$truthy(this.$compiler()["$requirable?"]())?this.$unshift("Opal.modules["+$$$($$("Opal"),"Compiler").$module_name(this.$compiler().$file()).$inspect()+"] = "+async_prefix+"function(Opal) {"):$truthy(this.$compiler()["$eval?"]())?this.$unshift("("+async_prefix+"function(Opal, self) {"):$truthy(this.$compiler()["$esm?"]())?this.$unshift("export default Opal.queue("+async_prefix+"function(Opal) {"):this.$unshift("Opal.queue("+async_prefix+"function(Opal) {")}),0),$def(self,"$closing",(function(){return $truthy(this.$compiler()["$requirable?"]())?this.$line("};\n"):$truthy(this.$compiler()["$eval?"]())?this.$line("})(Opal, self);"):this.$line("});\n")}),0),$def(self,"$stmts",(function(){return this.$compiler().$returns(this.$body())}),0),$def(self,"$absolute_const",(function(){return this.define_absolute_const=!0,"$$$"}),0),$def(self,"$compile_irb_vars",(function(){return $truthy(this.$compiler()["$irb?"]())?this.$line("if (!Opal.irb_vars) { Opal.irb_vars = {}; }"):nil}),0),$def(self,"$add_used_helpers",(function(){return $send(this.$compiler().$helpers().$to_a(),"each",[],(function $$2(h){return null==h&&(h=nil),(null==$$2.$$s?this:$$2.$$s).$add_temp("$"+h+" = Opal."+h)}),{$$arity:1,$$s:this})}),0),$def(self,"$compile_method_stubs",(function(){var calls=nil,stubs=nil;return $truthy(this.$compiler()["$method_missing?"]())?(calls=this.$compiler().$method_calls(),stubs=$send(calls.$to_a(),"map",[],"to_s".$to_proc()).$join(","),$truthy(stubs["$empty?"]())?nil:this.$line("Opal.add_stubs('"+stubs+"');")):nil}),0),$def(self,"$compile_end_construct",(function(){var content=nil;return $truthy(content=this.$compiler().$eof_content())?(this.$line("var $__END__ = Opal.Object.$new();"),this.$line("$__END__.$read = function() { return "+content.$inspect()+"; };")):nil}),0),$def(self,"$version_comment",(function(){return"/* Generated by Opal "+$$$($$("Opal"),"VERSION")+" */"}),0)}($nesting[0],$$("ScopeNode"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/while"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def;return Opal.add_stubs("require,handle,children,js_truthy,test,with_temp,in_while,compiler,wrap_in_closure?,[]=,while_loop,-,indent,stmt,body,uses_redo?,compile_with_redo,compile_without_redo,await_encountered,scope,wrap,private,push,compile_while,while_open,while_close,line,[],expr?,recv?"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"WhileNode");self.$handle("while"),self.$children("test","body"),$def(self,"$compile",(function(){var test_code;return test_code=this.$js_truthy(this.$test()),$send(this,"with_temp",[],(function $$1(redo_var){var self=null==$$1.$$s?this:$$1.$$s;return null==redo_var&&(redo_var=nil),$send(self.$compiler(),"in_while",[],(function $$2(){var body_code,self=null==$$2.$$s?this:$$2.$$s,$writer=nil;return $truthy(self["$wrap_in_closure?"]())&&($writer=["closure",!0],$send(self.$while_loop(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=["redo_var",redo_var],$send(self.$while_loop(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],body_code=$send(self,"indent",[],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return self.$stmt(self.$body())}),{$$arity:0,$$s:self}),$truthy(self["$uses_redo?"]())?self.$compile_with_redo(test_code,body_code,redo_var):self.$compile_without_redo(test_code,body_code)}),{$$arity:0,$$s:self})}),{$$arity:1,$$s:this}),$truthy(this["$wrap_in_closure?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() {","; return nil; })())"):this.$wrap("(function() {","; return nil; })()"):nil}),0),self.$private(),$def(self,"$compile_with_redo",(function(test_code,body_code,redo_var){return this.$push(redo_var+" = false; "),this.$compile_while([redo_var," || ",test_code],[redo_var+" = false;",body_code])}),3),$def(self,"$compile_without_redo",(function(test_code,body_code){return this.$compile_while([test_code],[body_code])}),2),$def(self,"$compile_while",(function(test_code,body_code){return $send(this,"push",[this.$while_open()].concat($to_a(test_code)).concat([this.$while_close()])),$send(this,"indent",[],(function $$4(){return $send(null==$$4.$$s?this:$$4.$$s,"line",$to_a(body_code))}),{$$arity:0,$$s:this}),this.$line("}")}),2),$def(self,"$while_open",(function(){return"while ("}),0),$def(self,"$while_close",(function(){return") {"}),0),$def(self,"$uses_redo?",(function(){return this.$while_loop()["$[]"]("use_redo")}),0),$def(self,"$wrap_in_closure?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$expr?"]())?$ret_or_1:this["$recv?"]()}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"UntilNode");self.$handle("until"),self.$private(),$def(self,"$while_open",(function(){return"while (!("}),0),$def(self,"$while_close",(function(){return")) {"}),0)}($nesting[0],$$("WhileNode")),function($base,$super){var self=$klass($base,$super,"WhilePostNode");self.$handle("while_post"),self.$private(),$def(self,"$compile_while",(function(test_code,body_code){return this.$push("do {"),$send(this,"indent",[],(function $$7(){return $send(null==$$7.$$s?this:$$7.$$s,"line",$to_a(body_code))}),{$$arity:0,$$s:this}),$send(this,"line",["} ",this.$while_open()].concat($to_a(test_code)).concat([this.$while_close()]))}),2),$def(self,"$while_close",(function(){return");"}),0)}($nesting[0],$$("WhileNode")),function($base,$super){var self=$klass($base,$super,"UntilPostNode");return self.$handle("until_post"),self.$private(),$def(self,"$while_open",(function(){return"while(!("}),0),$def(self,"$while_close",(function(){return"));"}),0)}($nesting[0],$$("WhilePostNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/hash"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$def=Opal.def,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$to_ary=Opal.to_ary,$hash2=Opal.hash2,$rb_minus=Opal.rb_minus;return Opal.add_stubs("require,handle,attr_accessor,each,children,===,type,<<,[],all?,keys,include?,has_kwsplat,compile_merge,simple_keys?,compile_hash2,compile_hash,helper,==,empty?,expr,s,each_with_index,push,wrap,times,size,inspect,to_s,values,[]=,-,join,value"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"HashNode");self.$handle("hash"),self.$attr_accessor("has_kwsplat","keys","values"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.has_kwsplat=!1,self.keys=[],self.values=[],$send(self.$children(),"each",[],(function $$1(child){var $ret_or_1,self=null==$$1.$$s?this:$$1.$$s;return null==self.keys&&(self.keys=nil),null==self.values&&(self.values=nil),null==child&&(child=nil),$eqeqeq("kwsplat",$ret_or_1=child.$type())?self.has_kwsplat=!0:$eqeqeq("pair",$ret_or_1)?(self.keys["$<<"](child.$children()["$[]"](0)),self.values["$<<"](child.$children()["$[]"](1))):nil}),{$$arity:1,$$s:self})}),-1),$def(self,"$simple_keys?",(function(){return $send(this.$keys(),"all?",[],(function(key){return null==key&&(key=nil),["sym","str"]["$include?"](key.$type())}),1)}),0),$def(self,"$compile",(function(){return $truthy(this.$has_kwsplat())?this.$compile_merge():$truthy(this["$simple_keys?"]())?this.$compile_hash2():this.$compile_hash()}),0),$def(self,"$compile_merge",(function(){var $a,result=nil,seq=nil;return this.$helper("hash"),result=($a=[[],[]])[0],seq=$a[1],$send(this.$children(),"each",[],(function $$4(child){var self=null==$$4.$$s?this:$$4.$$s;return null==child&&(child=nil),$eqeq(child.$type(),"kwsplat")?($truthy(seq["$empty?"]())||result["$<<"](self.$expr($send(self,"s",["hash"].concat($to_a(seq))))),result["$<<"](self.$expr(child)),seq=[]):seq["$<<"](child)}),{$$arity:1,$$s:this}),$truthy(seq["$empty?"]())||result["$<<"](this.$expr($send(this,"s",["hash"].concat($to_a(seq))))),$send(result,"each_with_index",[],(function $$5(fragment,idx){var self=null==$$5.$$s?this:$$5.$$s;return null==fragment&&(fragment=nil),null==idx&&(idx=nil),$eqeq(idx,0)?self.$push(fragment):self.$push(".$merge(",fragment,")")}),{$$arity:2,$$s:this})}),0),$def(self,"$compile_hash",(function(){return this.$helper("hash"),$send(this.$children(),"each_with_index",[],(function $$6(pair,idx){var $a,$b,key,value,self=null==$$6.$$s?this:$$6.$$s;return null==pair&&(pair=nil),null==idx&&(idx=nil),$b=pair.$children(),key=null==($a=$to_ary($b))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],$eqeq(idx,0)||self.$push(", "),self.$push(self.$expr(key),", ",self.$expr(value))}),{$$arity:2,$$s:this}),this.$wrap("$hash(",")")}),0),$def(self,"$compile_hash2",(function(){var $a,hash_obj=nil,hash_keys=nil;return $a=[$hash2([],{}),[]],hash_obj=$a[0],hash_keys=$a[1],this.$helper("hash2"),$send(this.$keys().$size(),"times",[],(function $$7(idx){var key,$writer,self=null==$$7.$$s?this:$$7.$$s;return null==idx&&(idx=nil),key=self.$keys()["$[]"](idx).$children()["$[]"](0).$to_s().$inspect(),$truthy(hash_obj["$include?"](key))||hash_keys["$<<"](key),$writer=[key,self.$expr(self.$values()["$[]"](idx))],$send(hash_obj,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),$send(hash_keys,"each_with_index",[],(function $$8(key,idx){var self=null==$$8.$$s?this:$$8.$$s;return null==key&&(key=nil),null==idx&&(idx=nil),$eqeq(idx,0)||self.$push(", "),self.$push(key+": "),self.$push(hash_obj["$[]"](key))}),{$$arity:2,$$s:this}),this.$wrap("$hash2(["+hash_keys.$join(", ")+"], {","})")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"KwSplatNode");return self.$handle("kwsplat"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("Opal.to_hash(",this.$expr(this.$value()),")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/array"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def;return Opal.add_stubs("require,handle,empty?,children,push,each,==,type,expr,<<,fragment"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArrayNode");return self.$handle("array"),$def(self,"$compile",(function(){var $a,code=nil,work=nil,join=nil;return $truthy(this.$children()["$empty?"]())?this.$push("[]"):(code=($a=[[],[]])[0],work=$a[1],$send(this.$children(),"each",[],(function $$1(child){var splat,part,self=null==$$1.$$s?this:$$1.$$s;return null==child&&(child=nil),splat=child.$type()["$=="]("splat"),part=self.$expr(child),$truthy(splat)?($truthy(work["$empty?"]())?$truthy(code["$empty?"]())?code["$<<"](self.$fragment("[].concat("))["$<<"](part)["$<<"](self.$fragment(")")):code["$<<"](self.$fragment(".concat("))["$<<"](part)["$<<"](self.$fragment(")")):($truthy(code["$empty?"]())?code["$<<"](self.$fragment("["))["$<<"](work)["$<<"](self.$fragment("]")):code["$<<"](self.$fragment(".concat(["))["$<<"](work)["$<<"](self.$fragment("])")),code["$<<"](self.$fragment(".concat("))["$<<"](part)["$<<"](self.$fragment(")"))),work=[]):($truthy(work["$empty?"]())||work["$<<"](self.$fragment(", ")),work["$<<"](part))}),{$$arity:1,$$s:this}),$truthy(work["$empty?"]())||(join=[this.$fragment("["),work,this.$fragment("]")],$truthy(code["$empty?"]())?code=join:code.$push([this.$fragment(".concat("),join,this.$fragment(")")])),this.$push(code))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/defined"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeqeq=Opal.eqeqeq,$eqeq=Opal.eqeq,$def=Opal.def,$truthy=Opal.truthy,$to_a=Opal.to_a,$slice=Opal.slice,$send=Opal.send,$range=Opal.range;return Opal.add_stubs("require,handle,children,===,type,value,push,inspect,to_s,==,[],size,compile_defined_send,wrap,compile_defined_ivar,compile_defined_super,compile_defined_yield,compile_defined_xstr,compile_defined_const,compile_defined_cvar,compile_defined_gvar,compile_defined_back_ref,compile_defined_nth_ref,compile_defined_array,respond_to?,__send__,new_temp,scope,expr,wrap_with_try_catch,mid_to_jsid,compile_defined,compile_send_recv_doesnt_raise,self,each,s,uses_block!,block_name,find_parent_def,nil?,relative_access,absolute_const,top_scope,class_variable_owner,helper,include?,each_with_index"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DefinedNode");return self.$handle("defined?"),self.$children("value"),$def(self,"$compile",(function(){var $ret_or_1;return $eqeqeq("self",$ret_or_1=this.$value().$type())||$eqeqeq("nil",$ret_or_1)||$eqeqeq("false",$ret_or_1)||$eqeqeq("true",$ret_or_1)?this.$push(this.$value().$type().$to_s().$inspect()):$eqeqeq("lvasgn",$ret_or_1)||$eqeqeq("ivasgn",$ret_or_1)||$eqeqeq("gvasgn",$ret_or_1)||$eqeqeq("cvasgn",$ret_or_1)||$eqeqeq("casgn",$ret_or_1)||$eqeqeq("op_asgn",$ret_or_1)||$eqeqeq("or_asgn",$ret_or_1)||$eqeqeq("and_asgn",$ret_or_1)?this.$push("'assignment'"):$eqeqeq("lvar",$ret_or_1)?this.$push("'local-variable'"):$eqeqeq("begin",$ret_or_1)?$eqeq(this.$value().$children().$size(),1)&&$eqeq(this.$value().$children()["$[]"](0).$type(),"masgn")?this.$push("'assignment'"):this.$push("'expression'"):$eqeqeq("send",$ret_or_1)?(this.$compile_defined_send(this.$value()),this.$wrap("("," ? 'method' : nil)")):$eqeqeq("ivar",$ret_or_1)?(this.$compile_defined_ivar(this.$value()),this.$wrap("("," ? 'instance-variable' : nil)")):$eqeqeq("zsuper",$ret_or_1)||$eqeqeq("super",$ret_or_1)?this.$compile_defined_super():$eqeqeq("yield",$ret_or_1)?(this.$compile_defined_yield(),this.$wrap("("," ? 'yield' : nil)")):$eqeqeq("xstr",$ret_or_1)?this.$compile_defined_xstr(this.$value()):$eqeqeq("const",$ret_or_1)?(this.$compile_defined_const(this.$value()),this.$wrap("("," ? 'constant' : nil)")):$eqeqeq("cvar",$ret_or_1)?(this.$compile_defined_cvar(this.$value()),this.$wrap("("," ? 'class variable' : nil)")):$eqeqeq("gvar",$ret_or_1)?(this.$compile_defined_gvar(this.$value()),this.$wrap("("," ? 'global-variable' : nil)")):$eqeqeq("back_ref",$ret_or_1)?(this.$compile_defined_back_ref(),this.$wrap("("," ? 'global-variable' : nil)")):$eqeqeq("nth_ref",$ret_or_1)?(this.$compile_defined_nth_ref(),this.$wrap("("," ? 'global-variable' : nil)")):$eqeqeq("array",$ret_or_1)?(this.$compile_defined_array(this.$value()),this.$wrap("("," ? 'expression' : nil)")):this.$push("'expression'")}),0),$def(self,"$compile_defined",(function(node){var type,node_tmp=nil;return type=node.$type(),$truthy(this["$respond_to?"]("compile_defined_"+type))?this.$__send__("compile_defined_"+type,node):(node_tmp=this.$scope().$new_temp(),this.$push("("+node_tmp+" = ",this.$expr(node),")"),node_tmp)}),1),$def(self,"$wrap_with_try_catch",(function(code){var returning_tmp;return returning_tmp=this.$scope().$new_temp(),this.$push("("+returning_tmp+" = (function() { try {"),this.$push(" return "+code+";"),this.$push("} catch ($err) {"),this.$push(" if (Opal.rescue($err, [Opal.Exception])) {"),this.$push(" try {"),this.$push(" return false;"),this.$push(" } finally { Opal.pop_exception() }"),this.$push(" } else { throw $err; }"),this.$push("}})())"),returning_tmp}),1),$def(self,"$compile_send_recv_doesnt_raise",(function(recv_code){return this.$wrap_with_try_catch(recv_code)}),1),$def(self,"$compile_defined_send",(function(node){var $a,args,mid,recv_value_tmp,meth_tmp,recv=nil,method_name=nil,recv_code=nil,recv_tmp=nil;return recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],args=$slice.call($a,2),mid=this.$mid_to_jsid(method_name.$to_s()),$truthy(recv)?(recv_code=this.$compile_defined(recv),this.$push(" && "),$eqeq(recv.$type(),"send")&&(recv_code=this.$compile_send_recv_doesnt_raise(recv_code),this.$push(" && ")),recv_tmp=this.$scope().$new_temp(),this.$push("("+recv_tmp+" = ",recv_code,", "+recv_tmp+") && ")):recv_tmp=this.$scope().$self(),recv_value_tmp=this.$scope().$new_temp(),this.$push("("+recv_value_tmp+" = "+recv_tmp+") && "),meth_tmp=this.$scope().$new_temp(),this.$push("((("+meth_tmp+" = "+recv_value_tmp+mid+") && !"+meth_tmp+".$$stub)"),this.$push(" || "+recv_value_tmp+"['$respond_to_missing?']('"+method_name+"'))"),$send(args,"each",[],(function $$1(arg){var self=null==$$1.$$s?this:$$1.$$s;return null==arg&&(arg=nil),$eqeqeq("block_pass",arg.$type())?nil:(self.$push(" && "),self.$compile_defined(arg))}),{$$arity:1,$$s:this}),this.$wrap("(",")"),meth_tmp+"()"}),1),$def(self,"$compile_defined_ivar",(function(node){var name,tmp;return name=node.$children()["$[]"](0).$to_s()["$[]"]($range(1,-1,!1)),tmp=this.$scope().$new_temp(),this.$push("("+tmp+" = "+this.$scope().$self()+"['"+name+"'], "+tmp+" != null && "+tmp+" !== nil)"),tmp}),1),$def(self,"$compile_defined_super",(function(){return this.$push(this.$expr(this.$s("defined_super")))}),0),$def(self,"$compile_defined_yield",(function(){var block_name,$ret_or_1;return this.$scope()["$uses_block!"](),block_name=$truthy($ret_or_1=this.$scope().$block_name())?$ret_or_1:this.$scope().$find_parent_def().$block_name(),this.$push("("+block_name+" != null && "+block_name+" !== nil)"),block_name}),0),$def(self,"$compile_defined_xstr",(function(node){return this.$push("(typeof(",this.$expr(node),') !== "undefined")')}),1),$def(self,"$compile_defined_const",(function(node){var $a,const_name,const_tmp,const_scope=nil,const_scope_tmp=nil;return const_scope=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],const_name=null==$a[1]?nil:$a[1],const_tmp=this.$scope().$new_temp(),$truthy(const_scope["$nil?"]())?this.$push("("+const_tmp+" = "+this.$scope().$relative_access()+"('"+const_name+"', 'skip_raise'))"):$eqeq(const_scope,this.$s("cbase"))?this.$push("("+const_tmp+" = "+this.$top_scope().$absolute_const()+"('::', '"+const_name+"', 'skip_raise'))"):(const_scope_tmp=this.$compile_defined(const_scope),this.$push(" && ("+const_tmp+" = "+this.$top_scope().$absolute_const()+"("+const_scope_tmp+", '"+const_name+"', 'skip_raise'))")),const_tmp}),1),$def(self,"$compile_defined_cvar",(function(node){var $a,cvar_name,cvar_tmp;return cvar_name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],cvar_tmp=this.$scope().$new_temp(),this.$push("("+cvar_tmp+" = "+this.$class_variable_owner()+".$$cvars['"+cvar_name+"'], "+cvar_tmp+" != null)"),cvar_tmp}),1),$def(self,"$compile_defined_gvar",(function(node){var gvar_temp,name=nil;return this.$helper("gvars"),name=node.$children()["$[]"](0).$to_s()["$[]"]($range(1,-1,!1)),gvar_temp=this.$scope().$new_temp(),$truthy(["~","!"]["$include?"](name))?this.$push("("+gvar_temp+" = ",this.$expr(node)," || true)"):this.$push("("+gvar_temp+" = $gvars["+name.$inspect()+"], "+gvar_temp+" != null)"),gvar_temp}),1),$def(self,"$compile_defined_back_ref",(function(){var back_ref_temp;return this.$helper("gvars"),back_ref_temp=this.$scope().$new_temp(),this.$push("("+back_ref_temp+" = $gvars['~'], "+back_ref_temp+" != null && "+back_ref_temp+" !== nil)"),back_ref_temp}),0),$def(self,"$compile_defined_nth_ref",(function(){var nth_ref_tmp;return this.$helper("gvars"),nth_ref_tmp=this.$scope().$new_temp(),this.$push("("+nth_ref_tmp+" = $gvars['~'], "+nth_ref_tmp+" != null && "+nth_ref_tmp+" != nil)"),nth_ref_tmp}),0),$def(self,"$compile_defined_array",(function(node){return $send(node.$children(),"each_with_index",[],(function $$2(child,idx){var self=null==$$2.$$s?this:$$2.$$s;return null==child&&(child=nil),null==idx&&(idx=nil),$eqeq(idx,0)||self.$push(" && "),self.$compile_defined(child)}),{$$arity:2,$$s:this})}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/masgn"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def,$rb_ge=Opal.rb_ge,$not=Opal.not,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,freeze,handle,children,new_temp,scope,==,type,rhs,push,expr,any?,size,compile_masgn,lhs,helper,queue_temp,take_while,!=,drop,each_with_index,compile_assignment,empty?,shift,[],<<,dup,s,>=,!,updated,include?,+,last,raise"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"MassAssignNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"SIMPLE_ASSIGNMENT",["lvasgn","ivasgn","lvar","gvasgn","cdecl","casgn"].$freeze()),self.$handle("masgn"),self.$children("lhs","rhs"),$def(self,"$compile",(function(){var array,rhs_len=nil,retval=nil;return array=this.$scope().$new_temp(),$eqeq(this.$rhs().$type(),"array")?(this.$push(array+" = ",this.$expr(this.$rhs())),rhs_len=$truthy($send(this.$rhs().$children(),"any?",[],(function(c){return null==c&&(c=nil),c.$type()["$=="]("splat")}),1))?nil:this.$rhs().$children().$size(),this.$compile_masgn(this.$lhs().$children(),array,rhs_len),this.$push(", "+array)):(this.$helper("to_ary"),retval=this.$scope().$new_temp(),this.$push(retval+" = ",this.$expr(this.$rhs())),this.$push(", "+array+" = $to_ary("+retval+")"),this.$compile_masgn(this.$lhs().$children(),array),this.$push(", "+retval),this.$scope().$queue_temp(retval)),this.$scope().$queue_temp(array)}),0),$def(self,"$compile_masgn",(function(lhs_items,array,len){var pre_splat=nil,post_splat=nil,splat=nil,part=nil,tmp=nil;return null==len&&(len=nil),pre_splat=$send(lhs_items,"take_while",[],(function(child){return null==child&&(child=nil),child.$type()["$!="]("splat")}),1),post_splat=lhs_items.$drop(pre_splat.$size()),$send(pre_splat,"each_with_index",[],(function $$3(child,idx){return null==child&&(child=nil),null==idx&&(idx=nil),(null==$$3.$$s?this:$$3.$$s).$compile_assignment(child,array,idx,len)}),{$$arity:2,$$s:this}),$truthy(post_splat["$empty?"]())?nil:(splat=post_splat.$shift(),$truthy(post_splat["$empty?"]())?$truthy(part=splat.$children()["$[]"](0))?(this.$helper("slice"),part=part.$dup()["$<<"](this.$s("js_tmp","$slice.call("+array+", "+pre_splat.$size()+")")),this.$push(", "),this.$push(this.$expr(part))):nil:(tmp=this.$scope().$new_temp(),this.$push(", "+tmp+" = "+array+".length - "+post_splat.$size()),this.$push(", "+tmp+" = ("+tmp+" < "+pre_splat.$size()+") ? "+pre_splat.$size()+" : "+tmp),$truthy(part=splat.$children()["$[]"](0))&&(this.$helper("slice"),part=part.$dup()["$<<"](this.$s("js_tmp","$slice.call("+array+", "+pre_splat.$size()+", "+tmp+")")),this.$push(", "),this.$push(this.$expr(part))),$send(post_splat,"each_with_index",[],(function $$4(child,idx){var self=null==$$4.$$s?this:$$4.$$s;return null==child&&(child=nil),null==idx&&(idx=nil),$eqeq(idx,0)?self.$compile_assignment(child,array,tmp):self.$compile_assignment(child,array,tmp+" + "+idx)}),{$$arity:2,$$s:this}),this.$scope().$queue_temp(tmp)))}),-3),$def(self,"$compile_assignment",(function(child,array,idx,len){var assign=nil,part=nil,tmp=nil;if(null==len&&(len=nil),assign=$not(len)||$truthy($rb_ge(idx,len))?this.$s("js_tmp","("+array+"["+idx+"] == null ? nil : "+array+"["+idx+"])"):this.$s("js_tmp",array+"["+idx+"]"),part=child.$updated(),$truthy($$("SIMPLE_ASSIGNMENT")["$include?"](child.$type())))part=part.$updated(nil,$rb_plus(part.$children(),[assign]));else if($eqeq(child.$type(),"send"))part=part.$updated(nil,$rb_plus(part.$children(),[assign]));else if($eqeq(child.$type(),"attrasgn"))part.$last()["$<<"](assign);else{if($eqeq(child.$type(),"mlhs"))return this.$helper("to_ary"),tmp=this.$scope().$new_temp(),this.$push(", ("+tmp+" = $to_ary("+assign.$children()["$[]"](0)+")"),this.$compile_masgn(child.$children(),tmp),this.$push(")"),this.$scope().$queue_temp(tmp),nil;this.$raise("Bad child node in masgn LHS: "+child+". LHS: "+this.$lhs())}return this.$push(", "),this.$push(this.$expr(part))}),-4)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/arglist"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$to_a=Opal.to_a,$def=Opal.def;return Opal.add_stubs("require,handle,each,children,==,type,expr,empty?,<<,fragment,push"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArglistNode");return self.$handle("arglist"),$def(self,"$compile",(function(){var $a,code=nil,work=nil,join=nil;return code=($a=[[],[]])[0],work=$a[1],$send(this.$children(),"each",[],(function $$1(current){var splat,arg,self=null==$$1.$$s?this:$$1.$$s;return null==current&&(current=nil),splat=current.$type()["$=="]("splat"),arg=self.$expr(current),$truthy(splat)?($truthy(work["$empty?"]())?$truthy(code["$empty?"]())?code["$<<"](arg):code["$<<"](self.$fragment(".concat("))["$<<"](arg)["$<<"](self.$fragment(")")):($truthy(code["$empty?"]())?code["$<<"](self.$fragment("["))["$<<"](work)["$<<"](self.$fragment("]")):code["$<<"](self.$fragment(".concat(["))["$<<"](work)["$<<"](self.$fragment("])")),code["$<<"](self.$fragment(".concat("))["$<<"](arg)["$<<"](self.$fragment(")"))),work=[]):($truthy(work["$empty?"]())||work["$<<"](self.$fragment(", ")),work["$<<"](arg))}),{$$arity:1,$$s:this}),$truthy(work["$empty?"]())||(join=work,$truthy(code["$empty?"]())?code=join:code["$<<"](this.$fragment(".concat(["))["$<<"](join)["$<<"](this.$fragment("])"))),$send(this,"push",$to_a(code))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/x_string"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def,$defs=Opal.defs,$lambda=Opal.lambda,$eqeqeq=Opal.eqeqeq,$eqeq=Opal.eqeq,$not=Opal.not,$range=Opal.range;return Opal.add_stubs("handle,unpack_return,children,strip_empty_children,single_line?,compile_single_line,each,compile_child,recv?,wrap,push,==,size,none?,type,end_with?,source,expression,loc,dup,nil?,empty?,rstrip,any?,[],first,shift,last,pop,private,===,include?,self,scope,new,expr,raise,s,strip,=~,!,extract_last_value,expr?,warning,compiler,line"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"XStringNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.should_add_semicolon=$proto.returning=nil,self.$handle("xstr"),$def(self,"$compile",(function(){var unpacked_children,stripped_children;return this.should_add_semicolon=!1,unpacked_children=this.$unpack_return(this.$children()),stripped_children=$$("XStringNode").$strip_empty_children(unpacked_children),$truthy($$("XStringNode")["$single_line?"](stripped_children))?this.$compile_single_line(stripped_children):$send(unpacked_children,"each",[],(function $$1(c){return null==c&&(c=nil),(null==$$1.$$s?this:$$1.$$s).$compile_child(c)}),{$$arity:1,$$s:this}),$truthy(this["$recv?"]())&&this.$wrap("(",")"),$truthy(this.should_add_semicolon)?this.$push(";"):nil}),0),$defs(self,"$single_line?",(function(children){var $ret_or_1;return $truthy($ret_or_1=children.$size()["$=="](1))?$ret_or_1:$send(children,"none?",[],(function(c){var $ret_or_2;return null==c&&(c=nil),$truthy($ret_or_2=c.$type()["$=="]("str"))?c.$loc().$expression().$source()["$end_with?"]("\n"):$ret_or_2}),1)}),1),$defs(self,"$strip_empty_children",(function(children){var empty_line=nil,$ret_or_1=nil;for(children=children.$dup(),empty_line=$lambda((function(child){var $ret_or_1,$ret_or_2=nil;return null==child&&(child=nil),$truthy($ret_or_1=child["$nil?"]())?$ret_or_1:$truthy($ret_or_2=child.$type()["$=="]("str"))?child.$loc().$expression().$source().$rstrip()["$empty?"]():$ret_or_2}),1);$truthy($truthy($ret_or_1=children["$any?"]())?empty_line["$[]"](children.$first()):$ret_or_1);)children.$shift();for(;$truthy($truthy($ret_or_1=children["$any?"]())?empty_line["$[]"](children.$last()):$ret_or_1);)children.$pop();return children}),1),self.$private(),$def(self,"$compile_child",(function(child){var $ret_or_1,value=nil;return $eqeqeq("str",$ret_or_1=child.$type())?(value=child.$loc().$expression().$source(),$truthy(value["$include?"]("self"))&&this.$scope().$self(),this.$push($$("Fragment").$new(value,this.$scope(),child))):$eqeqeq("begin",$ret_or_1)||$eqeqeq("gvar",$ret_or_1)||$eqeqeq("ivar",$ret_or_1)||$eqeqeq("nil",$ret_or_1)?this.$push(this.$expr(child)):this.$raise("Unsupported xstr part: "+child.$type())}),1),$def(self,"$compile_single_line",(function(children){var single_child,has_embeded_return=nil,first_child=nil,$ret_or_1=nil,last_child=nil,last_value=nil;return has_embeded_return=!1,first_child=children.$shift(),single_child=children["$empty?"](),first_child=$truthy($ret_or_1=first_child)?$ret_or_1:this.$s("nil"),$eqeq(first_child.$type(),"str")&&(has_embeded_return=first_child.$loc().$expression().$source().$strip()["$=~"](/^return\b/)),$truthy(this.returning)&&$not(has_embeded_return)&&this.$push("return "),last_child=$truthy($ret_or_1=children.$pop())?$ret_or_1:first_child,$eqeq(last_child.$type(),"str")&&(last_value=this.$extract_last_value(last_child)),$truthy(single_child)||(this.should_add_semicolon=!1,this.$compile_child(first_child),$send(children,"each",[],(function $$5(c){return null==c&&(c=nil),(null==$$5.$$s?this:$$5.$$s).$compile_child(c)}),{$$arity:1,$$s:this})),$eqeq(last_child.$type(),"str")?this.$push($$("Fragment").$new(last_value,this.$scope(),last_child)):this.$compile_child(last_child)}),1),$def(self,"$extract_last_value",(function(last_child){var last_value=nil;return last_value=last_child.$loc().$expression().$source().$rstrip(),$truthy(last_value["$include?"]("self"))&&this.$scope().$self(),($truthy(this.returning)||$truthy(this["$expr?"]()))&&$truthy(last_value["$end_with?"](";"))&&(this.$compiler().$warning("Removed semicolon ending x-string expression, interpreted as unintentional",last_child.$line()),last_value=last_value["$[]"]($range(0,-2,!1))),$truthy(this.returning)&&(this.should_add_semicolon=!0),last_value}),1),$def(self,"$unpack_return",(function(children){var first_child=nil;return first_child=children.$first(),this.returning=!1,$eqeq(first_child.$type(),"js_return")&&(this.returning=!0,children=first_child.$children()),children}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/lambda"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send=Opal.send,$def=Opal.def;return Opal.add_stubs("require,handle,children,helper,defines_lambda,scope,push,expr,iter"),self.$require("opal/nodes/call"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"LambdaNode");return self.$handle("lambda"),self.$children("iter"),$def(self,"$compile",(function(){return this.$helper("lambda"),$send(this.$scope(),"defines_lambda",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return self.$push("$lambda(",self.$expr(self.$iter()),")")}),{$$arity:0,$$s:this})}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes"]=function(Opal){var self=Opal.top;Opal.nil;return Opal.add_stubs("require"),self.$require("opal/nodes/base"),self.$require("opal/nodes/literal"),self.$require("opal/nodes/variables"),self.$require("opal/nodes/constants"),self.$require("opal/nodes/call"),self.$require("opal/nodes/csend"),self.$require("opal/nodes/call_special"),self.$require("opal/nodes/module"),self.$require("opal/nodes/class"),self.$require("opal/nodes/singleton_class"),self.$require("opal/nodes/args"),self.$require("opal/nodes/args/arity_check"),self.$require("opal/nodes/iter"),self.$require("opal/nodes/def"),self.$require("opal/nodes/defs"),self.$require("opal/nodes/if"),self.$require("opal/nodes/logic"),self.$require("opal/nodes/definitions"),self.$require("opal/nodes/yield"),self.$require("opal/nodes/rescue"),self.$require("opal/nodes/super"),self.$require("opal/nodes/top"),self.$require("opal/nodes/while"),self.$require("opal/nodes/hash"),self.$require("opal/nodes/array"),self.$require("opal/nodes/defined"),self.$require("opal/nodes/masgn"),self.$require("opal/nodes/arglist"),self.$require("opal/nodes/x_string"),self.$require("opal/nodes/lambda")},Opal.modules["opal/eof_content"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$eqeq=Opal.eqeq,$range=Opal.range,$to_ary=Opal.to_ary;return Opal.add_stubs("empty?,[],last_token_position,drop_while,lines,==,join,private,last,end_pos"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"EofContent"),$nesting=[self].concat($parent_nesting),$proto=self.$$prototype;return $proto.tokens=$proto.source=nil,$const_set($nesting[0],"DATA_SEPARATOR","__END__\n"),$def(self,"$initialize",(function(tokens,source){return this.tokens=tokens,this.source=source}),2),$def(self,"$eof",(function(){var eof_content=nil,$ret_or_1=nil;return $truthy(this.tokens["$empty?"]())?nil:(eof_content=this.source["$[]"](Opal.Range.$new(this.$last_token_position(),-1,!1)),$truthy(eof_content)?(eof_content=$send(eof_content.$lines(),"drop_while",[],(function(line){return null==line&&(line=nil),line["$=="]("\n")}),1),$eqeq(eof_content["$[]"](0),"__END__\n")?(eof_content=$truthy($ret_or_1=eof_content["$[]"]($range(1,-1,!1)))?$ret_or_1:[]).$join():$eqeq(eof_content,["__END__"])?"":nil):nil)}),0),self.$private(),$def(self,"$last_token_position",(function(){var $a,$b,last_token_info;return $b=this.tokens.$last(),null==($a=$to_ary($b))[0]?nil:$a[0],last_token_info=null==$a[1]?nil:$a[1],null==($a=$to_ary($b=last_token_info))[0]?nil:$a[0],(null==$a[1]?nil:$a[1]).$end_pos()}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/errors"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$defs=Opal.defs,$rb_plus=Opal.rb_plus,$alias=Opal.alias;return Opal.add_stubs("attr_reader,attr_accessor,new,respond_to?,location,location=,-,diagnostic,diagnostic=,to_a,backtrace,unshift,to_s,set_backtrace,path,lineno,+,label,line,lineno=,source_line,label=,expression"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $klass($nesting[0],$$("StandardError"),"Error"),function($base,$super){var self=$klass($base,$super,"GemNotFound");self.$attr_reader("gem_name"),$def(self,"$initialize",(function $$initialize(gem_name){return delete $$initialize.$$p,this.gem_name=gem_name,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",["can't find gem "+gem_name],null)}),1)}($nesting[0],$$("Error")),function($base,$super){$klass($base,$super,"CompilationError").$attr_accessor("location")}($nesting[0],$$("Error")),$klass($nesting[0],$$("CompilationError"),"ParsingError"),$klass($nesting[0],$$("ParsingError"),"RewritingError"),function($base,$super){$klass($base,$super,"SyntaxError").$attr_accessor("location")}($nesting[0],$$$("SyntaxError")),$defs(self,"$opal_location_from_error",(function(error){var opal_location,$writer=nil;return opal_location=$$("OpalBacktraceLocation").$new(),$truthy(error["$respond_to?"]("location"))&&($writer=[error.$location()],$send(opal_location,"location=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy(error["$respond_to?"]("diagnostic"))&&($writer=[error.$diagnostic()],$send(opal_location,"diagnostic=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),opal_location}),1),$defs(self,"$add_opal_location_to_error",(function(opal_location,error){var backtrace=nil;return(backtrace=error.$backtrace().$to_a()).$unshift(opal_location.$to_s()),error.$set_backtrace(backtrace),error}),2),function($base,$super){var self=$klass($base,null,"OpalBacktraceLocation");return self.$attr_accessor("path","lineno","label"),$def(self,"$initialize",(function(path,lineno,label){var $a;return null==path&&(path=nil),null==lineno&&(lineno=nil),null==label&&(label=nil),$a=[path,lineno,label],this.path=$a[0],this.lineno=$a[1],this.label=$a[2],$a}),-1),$def(self,"$to_s",(function(){var string=nil;return string=this.$path(),$truthy(this.$lineno())&&(string=$rb_plus(string,":"+this.$lineno())),string=$rb_plus(string,":in "),string=$truthy(this.$label())?$rb_plus(string,"`"+this.$label()+"'"):$rb_plus(string,"unknown")}),0),$alias(self,"line","lineno"),$def(self,"$diagnostic=",(function(diagnostic){var $writer;return $truthy(diagnostic)?($writer=[diagnostic.$location()],$send(this,"location=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),1),$def(self,"$location=",(function(location){var $writer=nil;return $truthy(location)?($writer=[location.$line()],$send(this,"lineno=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(location["$respond_to?"]("source_line"))?($writer=[location.$source_line()],$send(this,"label=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):$truthy(location["$respond_to?"]("expression"))?($writer=[location.$expression().$source_line()],$send(this,"label=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil):nil}),1)}($nesting[0])}($nesting[0],$nesting)},Opal.modules["opal/magic_comments"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$module=Opal.module,$const_set=Opal.const_set,$hash2=Opal.hash2,$truthy=Opal.truthy,$send=Opal.send,$rb_ge=Opal.rb_ge,$eqeqeq=Opal.eqeqeq,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$defs=Opal.defs;return Opal.add_stubs("freeze,line,loc,take,each,>=,any?,scan,text,to_sym,===,[]=,-"),function($base,$parent_nesting){var self=$module($base,"MagicComments"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"MAGIC_COMMENT_RE",/^# *(\w+) *: *(\S+.*?) *$/.$freeze()),$const_set($nesting[0],"EMACS_MAGIC_COMMENT_RE",/^# *-\*- *(\w+) *: *(\S+.*?) *-\*- *$/.$freeze()),$defs(self,"$parse",(function(sexp,comments){var flags,first_line=nil;return flags=$hash2([],{}),$truthy(sexp)&&(first_line=sexp.$loc().$line(),comments=comments.$take(first_line)),$send(comments,"each",[],(function(comment){var parts=nil;return null==comment&&(comment=nil),$truthy(first_line)&&$truthy($rb_ge(comment.$loc().$line(),first_line))?nil:$truthy((parts=comment.$text().$scan($$("MAGIC_COMMENT_RE")))["$any?"]())||$truthy((parts=comment.$text().$scan($$("EMACS_MAGIC_COMMENT_RE")))["$any?"]())?$send(parts,"each",[],(function(key,value){var $writer,$ret_or_1;return null==key&&(key=nil),null==value&&(value=nil),$writer=[key.$to_sym(),$eqeqeq("true",$ret_or_1=value)||!$eqeqeq("false",$ret_or_1)&&value],$send(flags,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),2):nil}),1),flags}),2)}($$("Opal"),$nesting)},Opal.modules["opal/compiler"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$hash2=Opal.hash2,$defs=Opal.defs,$klass=Opal.klass,$const_set=Opal.const_set,$send=Opal.send,$truthy=Opal.truthy,$not=Opal.not,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$Opal=Opal.Opal,$to_ary=Opal.to_ary,$alias=Opal.alias,$eqeqeq=Opal.eqeqeq,$regexp=Opal.regexp,$rb_plus=Opal.rb_plus,$slice=Opal.slice,$eqeq=Opal.eqeq;return Opal.add_stubs("require,compile,new,freeze,join,dirname,first,split,basename,to_s,cleanpath,Pathname,fetch,define_method,option_value,key?,[],!,include?,raise,inspect,[]=,-,compiler_option,attr_reader,attr_accessor,parse,re_raise_with_location,flatten,process,end_with?,code,last,<<,fragment,s,map,to_proc,file,source=,default_parser,tokenize,requirable?,eval?,tap,meta,associate_locations,eof,magic_comments,to_sym,strip,async_await_before_typecasting,===,async_await_set_to_regexp,to_a,gsub,escape,location=,opal_location_from_error,path=,label,lines,to_i,line,label=,message,set_backtrace,backtrace,add_opal_location_to_error,warn,empty?,+,start_with?,helpers,new_temp,queue_temp,push_while,pop_while,in_while?,nil?,scope,handlers,type,compile_to_fragments,error,returns,updated,children,==,uses_block!,block_name,find_parent_def,cache,source_map"),self.$require("set"),self.$require("opal/parser"),self.$require("opal/fragment"),self.$require("opal/nodes"),self.$require("opal/eof_content"),self.$require("opal/errors"),self.$require("opal/magic_comments"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$compile",(function(source,options){return null==options&&(options=$hash2([],{})),$$("Compiler").$new(source,options).$compile()}),-2),function($base,$super,$parent_nesting){var self=$klass($base,null,"Compiler"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.option_values=$proto.options=$proto.magic_comments=$proto.fragments=$proto.source=$proto.buffer=$proto.source_map=$proto.result=$proto.helpers=$proto.method_calls=$proto.async_await=$proto.indent=$proto.unique=$proto.scope=$proto.case_stmt=$proto.handlers=$proto.requires=$proto.required_trees=$proto.autoloads=nil,$const_set($nesting[0],"INDENT"," "),$const_set($nesting[0],"COMPARE",["<",">","<=",">="].$freeze()),$defs(self,"$module_name",(function(path){return path=$$("File").$join($$("File").$dirname(path),$$("File").$basename(path).$split(".").$first()),this.$Pathname(path).$cleanpath().$to_s()}),1),$defs(self,"$compiler_option",(function(name,config){var method_name;return null==config&&(config=$hash2([],{})),method_name=config.$fetch("as",name),$send(this,"define_method",[method_name],(function $$1(){return(null==$$1.$$s?this:$$1.$$s).$option_value(name,config)}),{$$arity:0,$$s:this})}),-2),$def(self,"$option_value",(function(name,config){var default_value,magic_comment,$writer,valid_values=nil,value=nil;return $truthy(this.option_values["$key?"](name))?this.option_values["$[]"](name):(default_value=config["$[]"]("default"),valid_values=config["$[]"]("valid_values"),magic_comment=config["$[]"]("magic_comment"),value=this.options.$fetch(name,default_value),$truthy(magic_comment)&&$truthy(this.magic_comments["$key?"](name))&&(value=this.magic_comments.$fetch(name)),$truthy(valid_values)&&$not(valid_values["$include?"](value))&&this.$raise($$("ArgumentError"),"invalid value "+value.$inspect()+" for option "+name.$inspect()+" (valid values: "+valid_values.$inspect()+")"),$writer=[name,value],$send(this.option_values,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),2),self.$compiler_option("file",$hash2(["default"],{default:"(file)"})),self.$compiler_option("method_missing",$hash2(["default","as"],{default:!0,as:"method_missing?"})),self.$compiler_option("arity_check",$hash2(["default","as"],{default:!1,as:"arity_check?"})),self.$compiler_option("freezing",$hash2(["default","as"],{default:!0,as:"freezing?"})),self.$compiler_option("irb",$hash2(["default","as"],{default:!1,as:"irb?"})),self.$compiler_option("dynamic_require_severity",$hash2(["default","valid_values"],{default:"ignore",valid_values:["error","warning","ignore"]})),self.$compiler_option("requirable",$hash2(["default","as"],{default:!1,as:"requirable?"})),self.$compiler_option("esm",$hash2(["default","as"],{default:!1,as:"esm?"})),self.$compiler_option("inline_operators",$hash2(["default","as"],{default:!0,as:"inline_operators?"})),self.$compiler_option("eval",$hash2(["default","as"],{default:!1,as:"eval?"})),self.$compiler_option("enable_source_location",$hash2(["default","as"],{default:!1,as:"enable_source_location?"})),self.$compiler_option("use_strict",$hash2(["default","as","magic_comment"],{default:!1,as:"use_strict?",magic_comment:!0})),self.$compiler_option("parse_comments",$hash2(["default","as"],{default:!1,as:"parse_comments?"})),self.$compiler_option("scope_variables",$hash2(["default"],{default:[]})),self.$compiler_option("await",$hash2(["default","as","magic_comment"],{default:!1,as:"async_await",magic_comment:!0})),self.$attr_reader("result"),self.$attr_reader("fragments"),self.$attr_accessor("scope"),self.$attr_accessor("top_scope"),self.$attr_reader("case_stmt"),self.$attr_reader("eof_content"),self.$attr_reader("comments"),self.$attr_reader("magic_comments"),$def(self,"$initialize",(function(source,options){return null==options&&(options=$hash2([],{})),this.source=source,this.indent="",this.unique=0,this.options=options,this.comments=$$("Hash").$new([]),this.case_stmt=nil,this.option_values=$hash2([],{}),this.magic_comments=$hash2([],{})}),-2),$def(self,"$compile",(function(){return this.$parse(),this.fragments=$send(this,"re_raise_with_location",[],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;return null==self.sexp&&(self.sexp=nil),self.$process(self.sexp).$flatten()}),{$$arity:0,$$s:this}),$truthy(this.fragments.$last().$code()["$end_with?"]("\n"))||this.fragments["$<<"](this.$fragment("\n",nil,this.$s("newline"))),this.result=$send(this.fragments,"map",[],"code".$to_proc()).$join("")}),0),$def(self,"$parse",(function(){var $a,$b,sexp,comments,tokens,kind,$ret_or_1,$writer=nil;return this.buffer=$$$($$$($Opal,"Parser"),"SourceBuffer").$new(this.$file(),1),$writer=[this.source],$send(this.buffer,"source=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.parser=$$$($$("Opal"),"Parser").$default_parser(),$b=$send(this,"re_raise_with_location",[],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return null==self.parser&&(self.parser=nil),null==self.buffer&&(self.buffer=nil),self.parser.$tokenize(self.buffer)}),{$$arity:0,$$s:this}),sexp=null==($a=$to_ary($b))[0]?nil:$a[0],comments=null==$a[1]?nil:$a[1],tokens=null==$a[2]?nil:$a[2],kind=$truthy(this["$requirable?"]())?"require":$truthy(this["$eval?"]())?"eval":"main",this.sexp=$send(this.$s("top",$truthy($ret_or_1=sexp)?$ret_or_1:this.$s("nil")),"tap",[],(function(i){return null==i&&(i=nil),$writer=["kind",kind],$send(i.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),this.comments=$$$($$$($$$("Parser"),"Source"),"Comment").$associate_locations(sexp,comments),this.magic_comments=$$("MagicComments").$parse(sexp,comments),this.eof_content=$$("EofContent").$new(tokens,this.source).$eof()}),0),$def(self,"$source_map",(function(){var $ret_or_1;return $truthy($ret_or_1=this.source_map)?$ret_or_1:$$$($$$($Opal,"SourceMap"),"File").$new(this.fragments,this.$file(),this.source,this.result)}),0),$def(self,"$helpers",(function(){var $ret_or_1;return this.helpers=$truthy($ret_or_1=this.helpers)?$ret_or_1:$$("Set").$new($send(this.$magic_comments()["$[]"]("helpers").$to_s().$split(","),"map",[],(function(h){return null==h&&(h=nil),h.$strip().$to_sym()}),1))}),0),$def(self,"$method_calls",(function(){var $ret_or_1;return this.method_calls=$truthy($ret_or_1=this.method_calls)?$ret_or_1:$$("Set").$new()}),0),$alias(self,"async_await_before_typecasting","async_await"),$def(self,"$async_await",(function(){var $a,original=nil,$ret_or_1=nil;return $truthy(null!=($a=this.async_await)&&$a!==nil?"instance-variable":nil)?this.async_await:(original=this.$async_await_before_typecasting(),this.async_await=$eqeqeq($$("String"),$ret_or_1=original)?this.$async_await_set_to_regexp($send(original.$split(","),"map",[],(function(h){return null==h&&(h=nil),h.$strip().$to_sym()}),1)):$eqeqeq($$("Array"),$ret_or_1)||$eqeqeq($$("Set"),$ret_or_1)?this.$async_await_set_to_regexp($send(original.$to_a(),"map",[],"to_sym".$to_proc())):$eqeqeq($$("Regexp"),$ret_or_1)||$eqeqeq(!0,$ret_or_1)||$eqeqeq(!1,$ret_or_1)?original:this.$raise("A value of await compiler option can be either a Set, an Array, a String or a Boolean."))}),0),$def(self,"$async_await_set_to_regexp",(function(set){return set=(set=$send(set,"map",[],(function(name){return null==name&&(name=nil),$$("Regexp").$escape(name.$to_s()).$gsub("\\*",".*?")}),1)).$join("|"),$regexp(["^(",set,")$"])}),1),$def(self,"$error",(function(msg,line){var error,$writer;return null==line&&(line=nil),error=$$$($Opal,"SyntaxError").$new(msg),$writer=[$$$($$("Opal"),"OpalBacktraceLocation").$new(this.$file(),line)],$send(error,"location=",$to_a($writer)),$rb_minus($writer.length,1),this.$raise(error)}),-2),$def(self,"$re_raise_with_location",(function $$re_raise_with_location(){var $yield=$$re_raise_with_location.$$p||nil,error=nil,opal_location=nil,$writer=nil,new_error=nil;delete $$re_raise_with_location.$$p;try{return Opal.yieldX($yield,[])}catch($err){if(!Opal.rescue($err,[$$("StandardError"),$$$($Opal,"SyntaxError")]))throw $err;error=$err;try{return opal_location=$Opal.$opal_location_from_error(error),$writer=[this.$file()],$send(opal_location,"path=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(opal_location.$label())||($writer=[this.source.$lines()["$[]"]($rb_minus(opal_location.$line().$to_i(),1)).$strip()],$send(opal_location,"label=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),(new_error=$$$($Opal,"SyntaxError").$new(error.$message())).$set_backtrace(error.$backtrace()),$Opal.$add_opal_location_to_error(opal_location,new_error),this.$raise(new_error)}finally{Opal.pop_exception()}}}),0),$def(self,"$warning",(function(msg,line){return null==line&&(line=nil),this.$warn("warning: "+msg+" -- "+this.$file()+":"+line)}),-2),$def(self,"$parser_indent",(function(){return this.indent}),0),$def(self,"$s",(function(type,$a){var children;return children=Opal.slice.call(arguments,1),$$$($$$($Opal,"AST"),"Node").$new(type,children)}),-2),$def(self,"$fragment",(function(str,scope,sexp){return null==sexp&&(sexp=nil),$$("Fragment").$new(str,scope,sexp)}),-3),$def(self,"$unique_temp",(function(name){var unique;return name=name.$to_s(),$truthy(name)&&$not(name["$empty?"]())&&(name=name.$to_s().$gsub("<=>","$lt_eq_gt").$gsub("===","$eq_eq_eq").$gsub("==","$eq_eq").$gsub("=~","$eq_tilde").$gsub("!~","$excl_tilde").$gsub("!=","$not_eq").$gsub("<=","$lt_eq").$gsub(">=","$gt_eq").$gsub("=","$eq").$gsub("?","$ques").$gsub("!","$excl").$gsub("/","$slash").$gsub("%","$percent").$gsub("+","$plus").$gsub("-","$minus").$gsub("<","$lt").$gsub(">","$gt").$gsub(/[^\w\$]/,"$")),unique=this.unique=$rb_plus(this.unique,1),""+($truthy(name["$start_with?"]("$"))?nil:"$")+name+"$"+unique}),1),$def(self,"$helper",(function(name){return this.$helpers()["$<<"](name)}),1),$def(self,"$indent",(function $$indent(){var indent,res,$yield=$$indent.$$p||nil;return delete $$indent.$$p,indent=this.indent,this.indent=$rb_plus(this.indent,$$("INDENT")),this.space="\n"+this.indent,res=Opal.yieldX($yield,[]),this.indent=indent,this.space="\n"+this.indent,res}),0),$def(self,"$with_temp",(function $$with_temp(){var tmp,res,$yield=$$with_temp.$$p||nil;return delete $$with_temp.$$p,tmp=this.scope.$new_temp(),res=Opal.yield1($yield,tmp),this.scope.$queue_temp(tmp),res}),0),$def(self,"$in_while",(function $$in_while(){var result,$yield=$$in_while.$$p||nil;return delete $$in_while.$$p,$yield===nil?nil:(this.while_loop=this.scope.$push_while(),result=Opal.yieldX($yield,[]),this.scope.$pop_while(),result)}),0),$def(self,"$in_case",(function $$in_case(){var old,$yield=$$in_case.$$p||nil;return delete $$in_case.$$p,$yield===nil?nil:(old=this.case_stmt,this.case_stmt=$hash2([],{}),Opal.yieldX($yield,[]),this.case_stmt=old)}),0),$def(self,"$in_while?",(function(){return this.scope["$in_while?"]()}),0),$def(self,"$process",(function(sexp,level){var handler=nil;return null==level&&(level="expr"),$truthy(sexp["$nil?"]())?this.$fragment("",this.$scope()):$truthy(handler=this.$handlers()["$[]"](sexp.$type()))?handler.$new(sexp,level,this).$compile_to_fragments():this.$error("Unsupported sexp: "+sexp.$type())}),-2),$def(self,"$handlers",(function(){var $ret_or_1;return this.handlers=$truthy($ret_or_1=this.handlers)?$ret_or_1:$$$($$$($$("Opal"),"Nodes"),"Base").$handlers()}),0),$def(self,"$requires",(function(){var $ret_or_1;return this.requires=$truthy($ret_or_1=this.requires)?$ret_or_1:[]}),0),$def(self,"$required_trees",(function(){var $ret_or_1;return this.required_trees=$truthy($ret_or_1=this.required_trees)?$ret_or_1:[]}),0),$def(self,"$autoloads",(function(){var $ret_or_1;return this.autoloads=$truthy($ret_or_1=this.autoloads)?$ret_or_1:[]}),0),$def(self,"$returns",(function(sexp){var $a,$b,$ret_or_1,when_sexp=nil,then_sexp=nil,body_sexp=nil,resbodies=nil,else_sexp=nil,klass=nil,lvar=nil,body=nil,rescue_sexp=nil,ensure_body=nil,rest=nil,last=nil,cond=nil,true_body=nil,false_body=nil;return $truthy(sexp)?$eqeqeq("undef",$ret_or_1=sexp.$type())?this.$returns(sexp.$updated("begin",[sexp,this.$s("nil")])):$eqeqeq("break",$ret_or_1)||$eqeqeq("next",$ret_or_1)||$eqeqeq("redo",$ret_or_1)||$eqeqeq("retry",$ret_or_1)?sexp:$eqeqeq("yield",$ret_or_1)?sexp.$updated("returnable_yield",nil):$eqeqeq("when",$ret_or_1)?($b=($b=($a=[].concat($to_a(sexp))).length-1)<0?0:$b,when_sexp=$slice.call($a,0,$b),then_sexp=null==$a[$b]?nil:$a[$b],sexp.$updated(nil,[].concat($to_a(when_sexp)).concat([this.$returns(then_sexp)]))):$eqeqeq("rescue",$ret_or_1)?(body_sexp=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],$b=($b=$a.length-1)<1?1:$b,resbodies=$slice.call($a,1,$b),else_sexp=null==$a[$b]?nil:$a[$b],resbodies=$send(resbodies,"map",[],(function $$9(resbody){return null==resbody&&(resbody=nil),(null==$$9.$$s?this:$$9.$$s).$returns(resbody)}),{$$arity:1,$$s:this}),$truthy(else_sexp)&&(else_sexp=this.$returns(else_sexp)),sexp.$updated(nil,[this.$returns(body_sexp)].concat($to_a(resbodies)).concat([else_sexp]))):$eqeqeq("resbody",$ret_or_1)?(klass=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],lvar=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],sexp.$updated(nil,[klass,lvar,this.$returns(body)])):$eqeqeq("ensure",$ret_or_1)?(rescue_sexp=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],ensure_body=null==$a[1]?nil:$a[1],(sexp=sexp.$updated(nil,[this.$returns(rescue_sexp),ensure_body])).$updated("js_return",[sexp])):$eqeqeq("begin",$ret_or_1)||$eqeqeq("kwbegin",$ret_or_1)?($b=($b=($a=[].concat($to_a(sexp))).length-1)<0?0:$b,rest=$slice.call($a,0,$b),last=null==$a[$b]?nil:$a[$b],sexp.$updated(nil,[].concat($to_a(rest)).concat([this.$returns(last)]))):$eqeqeq("while",$ret_or_1)||$eqeqeq("until",$ret_or_1)||$eqeqeq("while_post",$ret_or_1)||$eqeqeq("until_post",$ret_or_1)||$eqeqeq("return",$ret_or_1)||$eqeqeq("js_return",$ret_or_1)||$eqeqeq("returnable_yield",$ret_or_1)?sexp:$eqeqeq("xstr",$ret_or_1)?sexp.$updated(nil,[$send(this,"s",["js_return"].concat($to_a(sexp.$children())))]):$eqeqeq("if",$ret_or_1)?(cond=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],true_body=null==$a[1]?nil:$a[1],false_body=null==$a[2]?nil:$a[2],sexp.$updated(nil,[cond,this.$returns(true_body),this.$returns(false_body)])):$eqeq(sexp.$type(),"send")&&$eqeq(sexp.$children()["$[]"](1),"debugger")?sexp.$updated("begin",[sexp,this.$s("js_return",this.$s("nil"))]):sexp.$updated("js_return",[sexp]):this.$returns(this.$s("nil"))}),1),$def(self,"$handle_block_given_call",(function(sexp){var scope=nil;return this.scope["$uses_block!"](),$truthy(this.scope.$block_name())?this.$fragment("("+this.scope.$block_name()+" !== nil)",this.$scope(),sexp):$truthy(scope=this.scope.$find_parent_def())&&$truthy(scope.$block_name())?this.$fragment("("+scope.$block_name()+" !== nil)",scope,sexp):this.$fragment("false",scope,sexp)}),1),$def(self,"$marshal_dump",(function(){var $ret_or_1;return[this.options,this.option_values,this.source_map=$truthy($ret_or_1=this.source_map)?$ret_or_1:this.$source_map().$cache(),this.magic_comments,this.result,this.required_trees,this.requires,this.autoloads]}),0),$def(self,"$marshal_load",(function(src){var $a,$b;return $a=$to_ary($b=src),this.options=null==$a[0]?nil:$a[0],this.option_values=null==$a[1]?nil:$a[1],this.source_map=null==$a[2]?nil:$a[2],this.magic_comments=null==$a[3]?nil:$a[3],this.result=null==$a[4]?nil:$a[4],this.required_trees=null==$a[5]?nil:$a[5],this.requires=null==$a[6]?nil:$a[6],this.autoloads=null==$a[7]?nil:$a[7],$b}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/erb"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$defs=Opal.defs,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$send=Opal.send,$regexp=Opal.regexp;return Opal.add_stubs("require,compile,new,freeze,fix_quotes,find_contents,find_code,wrap_compiled,require_erb,prepared_source,gsub,+,last_match,=~,sub"),self.$require("opal/compiler"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"ERB"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$compile",(function(source,file_name){return null==file_name&&(file_name="(erb)"),$$("Compiler").$new(source,file_name).$compile()}),-2),function($base,$super,$parent_nesting){var self=$klass($base,null,"Compiler"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.prepared_source=$proto.source=$proto.file_name=nil,$const_set($nesting[0],"BLOCK_EXPR",/\s+(do|\{)(\s*\|[^|]*\|)?\s*\Z/.$freeze()),$def(self,"$initialize",(function(source,file_name){var $a;return null==file_name&&(file_name="(erb)"),$a=[source,file_name,source],this.source=$a[0],this.file_name=$a[1],this.result=$a[2],$a}),-2),$def(self,"$prepared_source",(function(){var $ret_or_1,source=nil;return this.prepared_source=$truthy($ret_or_1=this.prepared_source)?$ret_or_1:(source=this.source,source=this.$fix_quotes(source),source=this.$find_contents(source),source=this.$find_code(source),source=this.$wrap_compiled(source),source=this.$require_erb(source))}),0),$def(self,"$compile",(function(){return $$("Opal").$compile(this.$prepared_source())}),0),$def(self,"$fix_quotes",(function(result){return result.$gsub('"','\\"')}),1),$def(self,"$require_erb",(function(result){return $rb_plus('require "erb";',result)}),1),$def(self,"$find_contents",(function(result){return $send(result,"gsub",[/<%=([\s\S]+?)%>/],(function(){var inner=nil;return inner=$$("Regexp").$last_match(1).$gsub(/\\'/,"'").$gsub(/\\"/,'"'),$truthy(inner["$=~"]($$("BLOCK_EXPR")))?'")\noutput_buffer.append= '+inner+'\noutput_buffer.append("':'")\noutput_buffer.append=('+inner+')\noutput_buffer.append("'}),0)}),1),$def(self,"$find_code",(function(result){return $send(result,"gsub",[/<%([\s\S]+?)%>/],(function(){return'")\n'+$$("Regexp").$last_match(1).$gsub(/\\"/,'"')+'\noutput_buffer.append("'}),0)}),1),$def(self,"$wrap_compiled",(function(result){return"Template.new('"+this.file_name.$sub($regexp(["\\.opalerb",$$("REGEXP_END")]),"")+"') do |output_buffer|\noutput_buffer.append(\""+result+'")\noutput_buffer.join\nend\n'}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal-parser"]=function(Opal){var self=Opal.top,$nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$module=Opal.module,$Opal=Opal.Opal,$hash2=Opal.hash2,$truthy=Opal.truthy,$def=Opal.def;function run_ruby_scripts(){for(var tag,tags=document.getElementsByTagName("script"),i=0,len=tags.length;i> 8 - idx % 1 * 8) + ) { + charCode = str.charCodeAt(idx += 3/4); + if (charCode > 0xFF) { + self.$raise($$('ArgumentError'), "invalid character (failed: The string to be encoded contains characters outside of the Latin1 range.)"); + } + block = block << 8 | charCode; + } + return output; + /* eslint-enable */ + }; + + // decoder + // [https://gist.github.com/1020396] by [https://github.com/atk] + decode = function (input) { + var str = String(input).replace(/=+$/, ''); + if (str.length % 4 == 1) { + self.$raise($$('ArgumentError'), "invalid base64 (failed: The string to be decoded is not correctly encoded.)"); + } + /* eslint-disable */ + for ( + // initialize result and counters + var bc = 0, bs, buffer, idx = 0, output = ''; + // get next character + buffer = str.charAt(idx++); + // character found in table? initialize bit storage and add its ascii value; + ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, + // and if not first of each 4 characters, + // convert the first 8 bits to one ascii character + bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0 + ) { + // try to find character in table (0-63, not found => -1) + buffer = chars.indexOf(buffer); + } + return output; + /* eslint-enable */ + }; + ; + $defs(self, '$decode64', function $$decode64(string) { + + return decode(string.replace(/\r?\n/g, '')); + }, 1); + $defs(self, '$encode64', function $$encode64(string) { + + return encode(string).replace(/(.{60})/g, "$1\n").replace(/([^\n])$/g, "$1\n"); + }, 1); + $defs(self, '$strict_decode64', function $$strict_decode64(string) { + + return decode(string); + }, 1); + $defs(self, '$strict_encode64', function $$strict_encode64(string) { + + return encode(string); + }, 1); + $defs(self, '$urlsafe_decode64', function $$urlsafe_decode64(string) { + + return decode(string.replace(/\-/g, '+').replace(/_/g, '/')); + }, 1); + return $defs(self, '$urlsafe_encode64', function $$urlsafe_encode64(string, $kwargs) { + var padding, str = nil; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + padding = $kwargs.$$smap["padding"]; + if (padding == null) padding = true; + str = encode(string).replace(/\+/g, '-').replace(/\//g, '_'); + if (!$truthy(padding)) { + str = str.$delete("=") + }; + return str; + }, -2); + })($nesting[0], $nesting) +}; + +Opal.modules["json"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $Object = Opal.Object, $hash2 = Opal.hash2, $eqeqeq = Opal.eqeqeq, $defs = Opal.defs, $truthy = Opal.truthy, $def = Opal.def; + + Opal.add_stubs('raise,new,push,[]=,-,[],create_id,json_create,const_get,attr_accessor,create_id=,===,parse,generate,from_object,merge,to_json,responds_to?,to_io,write,to_s,to_a,strftime'); + + (function($base, $parent_nesting) { + var self = $module($base, 'JSON'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $writer = nil; + + + $klass($nesting[0], $$('StandardError'), 'JSONError'); + $klass($nesting[0], $$('JSONError'), 'ParserError'); + + var $hasOwn = Opal.hasOwnProperty; + + function $parse(source) { + try { + return JSON.parse(source); + } catch (e) { + self.$raise($$$($$('JSON'), 'ParserError'), e.message); + } + }; + + function to_opal(value, options) { + var klass, arr, hash, i, ii, k; + + switch (typeof value) { + case 'string': + return value; + + case 'number': + return value; + + case 'boolean': + return !!value; + + case 'undefined': + return nil; + + case 'object': + if (!value) return nil; + + if (value.$$is_array) { + arr = (options.array_class).$new(); + + for (i = 0, ii = value.length; i < ii; i++) { + (arr).$push(to_opal(value[i], options)); + } + + return arr; + } + else { + hash = (options.object_class).$new(); + + for (k in value) { + if ($hasOwn.call(value, k)) { + (($writer = [k, to_opal(value[k], options)]), $send((hash), '[]=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)]); + } + } + + if (!options.parse && (klass = (hash)['$[]']($$('JSON').$create_id())) != nil) { + return $Object.$const_get(klass).$json_create(hash); + } + else { + return hash; + } + } + } + }; + ; + (function(self, $parent_nesting) { + + return self.$attr_accessor("create_id") + })(Opal.get_singleton_class(self), $nesting); + + $writer = ["json_class"]; + $send(self, 'create_id=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + $defs(self, '$[]', function $JSON_$$$1(value, options) { + var self = this; + + + + if (options == null) options = $hash2([], {});; + if ($eqeqeq($$('String'), value)) { + return self.$parse(value, options) + } else { + return self.$generate(value, options) + }; + }, -2); + $defs(self, '$parse', function $$parse(source, options) { + var self = this; + + + + if (options == null) options = $hash2([], {});; + return self.$from_object($parse(source), options.$merge($hash2(["parse"], {"parse": true}))); + }, -2); + $defs(self, '$parse!', function $JSON_parse$excl$2(source, options) { + var self = this; + + + + if (options == null) options = $hash2([], {});; + return self.$parse(source, options); + }, -2); + $defs(self, '$load', function $$load(source, options) { + var self = this; + + + + if (options == null) options = $hash2([], {});; + return self.$from_object($parse(source), options); + }, -2); + $defs(self, '$from_object', function $$from_object(js_object, options) { + var $ret_or_1 = nil, $writer = nil; + + + + if (options == null) options = $hash2([], {});; + if ($truthy(($ret_or_1 = options['$[]']("object_class")))) { + $ret_or_1 + } else { + + $writer = ["object_class", $$('Hash')]; + $send(options, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + if ($truthy(($ret_or_1 = options['$[]']("array_class")))) { + $ret_or_1 + } else { + + $writer = ["array_class", $$('Array')]; + $send(options, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return to_opal(js_object, options.$$smap);; + }, -2); + $defs(self, '$generate', function $$generate(obj, options) { + + + + if (options == null) options = $hash2([], {});; + return obj.$to_json(options); + }, -2); + return $defs(self, '$dump', function $$dump(obj, io, limit) { + var self = this, string = nil; + + + + if (io == null) io = nil;; + + if (limit == null) limit = nil;; + string = self.$generate(obj); + if ($truthy(io)) { + + if ($truthy(io['$responds_to?']("to_io"))) { + io = io.$to_io() + }; + io.$write(string); + return io; + } else { + return string + }; + }, -2); + })($nesting[0], $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'Object'); + + + return $def(self, '$to_json', function $$to_json() { + var self = this; + + return self.$to_s().$to_json() + }, 0) + })($nesting[0], null); + (function($base) { + var self = $module($base, 'Enumerable'); + + + return $def(self, '$to_json', function $$to_json() { + var self = this; + + return self.$to_a().$to_json() + }, 0) + })($nesting[0]); + (function($base, $super) { + var self = $klass($base, $super, 'Array'); + + + return $def(self, '$to_json', function $$to_json() { + var self = this; + + + var result = []; + + for (var i = 0, length = self.length; i < length; i++) { + result.push((self[i]).$to_json()); + } + + return '[' + result.join(',') + ']'; + + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Boolean'); + + + return $def(self, '$to_json', function $$to_json() { + var self = this; + + return (self == true) ? 'true' : 'false'; + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Hash'); + + + return $def(self, '$to_json', function $$to_json() { + var self = this; + + + var result = []; + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + result.push((key).$to_s().$to_json() + ':' + (value).$to_json()); + } + + return '{' + result.join(',') + '}'; + + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'NilClass'); + + + return $def(self, '$to_json', function $$to_json() { + + return "null" + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Numeric'); + + + return $def(self, '$to_json', function $$to_json() { + var self = this; + + return self.toString(); + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'String'); + + + return $def(self, '$to_json', function $$to_json() { + var self = this; + + return JSON.stringify(self); + }, 0) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Time'); + + + return $def(self, '$to_json', function $$to_json() { + var self = this; + + return self.$strftime("%FT%T%z").$to_json() + }, 0) + })($nesting[0], null); + return (function($base, $super) { + var self = $klass($base, $super, 'Date'); + + + + + $def(self, '$to_json', function $$to_json() { + var self = this; + + return self.$to_s().$to_json() + }, 0); + return $def(self, '$as_json', function $$as_json() { + var self = this; + + return self.$to_s() + }, 0); + })($nesting[0], null); +}; + +Opal.modules["opal/source_map/map"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $truthy = Opal.truthy, $def = Opal.def, $to_ary = Opal.to_ary; + + Opal.add_stubs('require,map,to_json,to_h,to_s,delete,encode64,generated_code'); + + self.$require("base64"); + self.$require("json"); + return (function($base, $parent_nesting) { + var self = $module($base, 'Map'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$to_h', function $$to_h() { + var self = this, $ret_or_1 = nil; + if (self.to_h == null) self.to_h = nil; + + if ($truthy(($ret_or_1 = self.to_h))) { + return $ret_or_1 + } else { + return self.$map() + } + }, 0); + + $def(self, '$to_json', function $$to_json() { + var self = this; + + return self.$to_h().$to_json() + }, 0); + + $def(self, '$as_json', function $$as_json($a) { + var $post_args, $rest_arg, self = this; + + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return self.$to_h(); + }, -1); + + $def(self, '$to_s', function $$to_s() { + var self = this; + + return self.$to_h().$to_s() + }, 0); + + $def(self, '$to_data_uri_comment', function $$to_data_uri_comment() { + var self = this; + + return "//# sourceMappingURL=data:application/json;base64," + ($$('Base64').$encode64(self.$to_json()).$delete("\n")) + }, 0); + + $def(self, '$cache', function $$cache() { + var self = this, $ret_or_1 = nil; + if (self.to_h == null) self.to_h = nil; + + + self.to_h = ($truthy(($ret_or_1 = self.to_h)) ? ($ret_or_1) : (self.$map())); + return self; + }, 0); + + $def(self, '$marshal_dump', function $$marshal_dump() { + var self = this; + + return [self.$to_h(), self.$generated_code()] + }, 0); + return $def(self, '$marshal_load', function $$marshal_load(value) { + var $a, $b, self = this; + + return $b = value, $a = $to_ary($b), (self.to_h = ($a[0] == null ? nil : $a[0])), (self.generated_code = ($a[1] == null ? nil : $a[1])), $b + }, 1); + })($$$($$('Opal'), 'SourceMap'), $nesting); +}; + +Opal.modules["opal/source_map/file"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $truthy = Opal.truthy, $hash2 = Opal.hash2, $rb_lt = Opal.rb_lt, $to_ary = Opal.to_ary, $rb_plus = Opal.rb_plus, $not = Opal.not; + + Opal.add_stubs('include,attr_reader,new,size,[]=,-,join,map,to_proc,file,force_encoding,source,names,encode_mappings,relative_mappings,absolute_mappings,sort_by,to_a,line,<,column,source_map_name,[],to_s,to_int,each,fragments_by_line,skip_source_map?,is_a?,<<,segment_from_fragment,+,private,flat_map,fragments,code,split,with_index,!,zero?,last'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'File'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.generated_code = $proto.fragments = $proto.names = $proto.names_map = $proto.relative_mappings = $proto.absolute_mappings = nil; + + self.$include($$$($$$($$('Opal'), 'SourceMap'), 'Map')); + self.$attr_reader("fragments"); + self.$attr_reader("file"); + self.$attr_reader("source"); + + $def(self, '$initialize', function $$initialize(fragments, file, source, generated_code) { + var self = this; + + + + if (generated_code == null) generated_code = nil;; + self.fragments = fragments; + self.file = file; + self.source = source; + self.names_map = $send($$('Hash'), 'new', [], function $$1(hash, name){var $writer = nil; + + + + if (hash == null) hash = nil;; + + if (name == null) name = nil;; + $writer = [name, hash.$size()]; + $send(hash, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 2); + self.generated_code = generated_code; + return (self.absolute_mappings = nil); + }, -4); + + $def(self, '$generated_code', function $$generated_code() { + var self = this, $ret_or_1 = nil; + + return (self.generated_code = ($truthy(($ret_or_1 = self.generated_code)) ? ($ret_or_1) : ($send(self.fragments, 'map', [], "code".$to_proc()).$join()))) + }, 0); + + $def(self, '$map', function $$map($kwargs) { + var source_root, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + source_root = $kwargs.$$smap["source_root"]; + if (source_root == null) source_root = ""; + return $hash2(["version", "sourceRoot", "sources", "sourcesContent", "names", "mappings"], {"version": 3, "sourceRoot": source_root, "sources": [self.$file()], "sourcesContent": [self.$source().$force_encoding("UTF-8")], "names": self.$names(), "mappings": $$$($$$($$('Opal'), 'SourceMap'), 'VLQ').$encode_mappings(self.$relative_mappings())}); + }, -1); + + $def(self, '$names', function $$names() { + var self = this, $ret_or_1 = nil; + + return (self.names = ($truthy(($ret_or_1 = self.names)) ? ($ret_or_1) : ((self.$absolute_mappings(), $send($send(self.names_map.$to_a(), 'sort_by', [], function $$2(_, index){ + + + if (_ == null) _ = nil;; + + if (index == null) index = nil;; + return index;}, 2), 'map', [], function $$3(name, _){ + + + if (name == null) name = nil;; + + if (_ == null) _ = nil;; + return name;}, 2))))) + }, 0); + + $def(self, '$segment_from_fragment', function $$segment_from_fragment(fragment, generated_column) { + var self = this, source_index = nil, original_line = nil, $ret_or_1 = nil, original_column = nil, map_name_index = nil, $writer = nil; + + + source_index = 0; + original_line = $rb_minus(($truthy(($ret_or_1 = fragment.$line())) ? ($ret_or_1) : (0)), 1); + if ($truthy($rb_lt(original_line, 0))) { + original_line = 0 + }; + original_column = ($truthy(($ret_or_1 = fragment.$column())) ? ($ret_or_1) : (0)); + if ($truthy(fragment.$source_map_name())) { + + map_name_index = ($truthy(($ret_or_1 = self.names_map['$[]'](fragment.$source_map_name().$to_s()))) ? ($ret_or_1) : ((($writer = [fragment.$source_map_name().$to_s(), self.names_map.$size()]), $send(self.names_map, '[]=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)]))); + return [generated_column, source_index, original_line, original_column, map_name_index]; + } else { + return [generated_column, source_index, original_line, original_column] + }; + }, 2); + + $def(self, '$relative_mappings', function $$relative_mappings() { + var self = this, $ret_or_1 = nil, reference_segment = nil, reference_name_index = nil; + + return (self.relative_mappings = ($truthy(($ret_or_1 = self.relative_mappings)) ? ($ret_or_1) : (((reference_segment = [0, 0, 0, 0, 0]), (reference_name_index = 0), $send(self.$absolute_mappings(), 'map', [], function $$4(absolute_mapping){var $writer = nil; + + + + if (absolute_mapping == null) absolute_mapping = nil;; + + $writer = [0, 0]; + $send(reference_segment, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return $send(absolute_mapping, 'map', [], function $$5(absolute_segment){var segment = nil, $ret_or_2 = nil; + + + + if (absolute_segment == null) absolute_segment = nil;; + segment = []; + + $writer = [0, $rb_minus(absolute_segment['$[]'](0), reference_segment['$[]'](0))]; + $send(segment, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [1, $rb_minus(absolute_segment['$[]'](1), ($truthy(($ret_or_2 = reference_segment['$[]'](1))) ? ($ret_or_2) : (0)))]; + $send(segment, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [2, $rb_minus(absolute_segment['$[]'](2), ($truthy(($ret_or_2 = reference_segment['$[]'](2))) ? ($ret_or_2) : (0)))]; + $send(segment, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [3, $rb_minus(absolute_segment['$[]'](3), ($truthy(($ret_or_2 = reference_segment['$[]'](3))) ? ($ret_or_2) : (0)))]; + $send(segment, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy(absolute_segment['$[]'](4))) { + + + $writer = [4, $rb_minus(absolute_segment['$[]'](4).$to_int(), ($truthy(($ret_or_2 = reference_segment['$[]'](4))) ? ($ret_or_2) : (reference_name_index)).$to_int())]; + $send(segment, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + reference_name_index = absolute_segment['$[]'](4); + }; + reference_segment = absolute_segment; + return segment;}, 1);}, 1))))) + }, 0); + + $def(self, '$absolute_mappings', function $$absolute_mappings() { + var self = this, $ret_or_1 = nil, mappings = nil; + + return (self.absolute_mappings = ($truthy(($ret_or_1 = self.absolute_mappings)) ? ($ret_or_1) : (((mappings = []), $send(self.$fragments_by_line(), 'each', [], function $$6(raw_segments){var self = $$6.$$s == null ? this : $$6.$$s, generated_column = nil, segments = nil; + + + + if (raw_segments == null) raw_segments = nil;; + generated_column = 0; + segments = []; + $send(raw_segments, 'each', [], function $$7($mlhs_tmp1){var $a, $b, self = $$7.$$s == null ? this : $$7.$$s, generated_code = nil, fragment = nil; + + + + if ($mlhs_tmp1 == null) $mlhs_tmp1 = nil;; + $b = $mlhs_tmp1, $a = $to_ary($b), (generated_code = ($a[0] == null ? nil : $a[0])), (fragment = ($a[1] == null ? nil : $a[1])), $b; + if (!($truthy(fragment['$is_a?']($$$($$('Opal'), 'Fragment'))) && ($truthy(fragment['$skip_source_map?']())))) { + segments['$<<'](self.$segment_from_fragment(fragment, generated_column)) + }; + return (generated_column = $rb_plus(generated_column, generated_code.$size()));}, {$$arity: 1, $$s: self, $$has_top_level_mlhs_arg: true}); + return mappings['$<<'](segments);}, {$$arity: 1, $$s: self}), mappings)))) + }, 0); + self.$private(); + return $def(self, '$fragments_by_line', function $$fragments_by_line() { + var self = this, raw_mappings = nil; + + + raw_mappings = [[]]; + $send(self.$fragments(), 'flat_map', [], function $$8(fragment){var fragment_code = nil, fragment_lines = nil; + + + + if (fragment == null) fragment = nil;; + fragment_code = fragment.$code(); + fragment_lines = fragment_code.$split("\n", -1); + return $send(fragment_lines.$each(), 'with_index', [], function $$9(fragment_line, index){var raw_segment = nil; + + + + if (fragment_line == null) fragment_line = nil;; + + if (index == null) index = nil;; + raw_segment = [fragment_line, fragment]; + if (($truthy(index['$zero?']()) && ($not(fragment_line.$size()['$zero?']())))) { + return raw_mappings.$last()['$<<'](raw_segment) + } else if (($truthy(index['$zero?']()) && ($truthy(fragment_line.$size()['$zero?']())))) { + return nil + } else if ($truthy(fragment_line.$size()['$zero?']())) { + return raw_mappings['$<<']([]) + } else { + return raw_mappings['$<<']([raw_segment]) + };}, 2);}, 1); + return raw_mappings; + }, 0); + })($$$($$('Opal'), 'SourceMap'), null, $nesting) +}; + +Opal.modules["opal/source_map/index"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $hash2 = Opal.hash2, $def = Opal.def, $send = Opal.send, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus; + + Opal.add_stubs('include,attr_reader,map,to_h,generated_code,+,count,[],rindex,size'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Index'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.source_maps = nil; + + self.$include($$$($$$($$('Opal'), 'SourceMap'), 'Map')); + self.$attr_reader("source_maps"); + + $def(self, '$initialize', function $$initialize(source_maps, $kwargs) { + var join, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + join = $kwargs.$$smap["join"]; + if (join == null) join = nil; + self.source_maps = source_maps; + return (self.join = join); + }, -2); + return $def(self, '$map', function $$map() { + var self = this, offset_line = nil, offset_column = nil; + + + offset_line = 0; + offset_column = 0; + return $hash2(["version", "sections"], {"version": 3, "sections": $send(self.source_maps, 'map', [], function $$1(source_map){var self = $$1.$$s == null ? this : $$1.$$s, map = nil, generated_code = nil, new_lines_count = nil, last_line = nil; + if (self.join == null) self.join = nil; + + + + if (source_map == null) source_map = nil;; + map = $hash2(["offset", "map"], {"offset": $hash2(["line", "column"], {"line": offset_line, "column": offset_column}), "map": source_map.$to_h()}); + generated_code = source_map.$generated_code(); + if ($truthy(self.join)) { + generated_code = $rb_plus(generated_code, self.join) + }; + new_lines_count = generated_code.$count("\n"); + last_line = generated_code['$[]'](Opal.Range.$new($rb_plus(generated_code.$rindex("\n"), 1), -1, false)); + offset_line = $rb_plus(offset_line, new_lines_count); + offset_column = $rb_plus(offset_column, last_line.$size()); + return map;}, {$$arity: 1, $$s: self})}); + }, 0); + })($$$($$('Opal'), 'SourceMap'), null, $nesting) +}; + +Opal.modules["opal/source_map/vlq"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $const_set = Opal.const_set, $rb_minus = Opal.rb_minus, $send = Opal.send, $range = Opal.range, $hash2 = Opal.hash2, $to_a = Opal.to_a, $truthy = Opal.truthy, $rb_lt = Opal.rb_lt, $rb_plus = Opal.rb_plus, $rb_gt = Opal.rb_gt, $defs = Opal.defs, $eqeq = Opal.eqeq; + + Opal.add_stubs('<<,-,split,inject,[],[]=,each,<,+,-@,loop,&,>>,>,|,join,any?,shift,raise,==,map,encode,each_with_index,decode'); + return (function($base, $parent_nesting) { + var self = $module($base, 'VLQ'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $const_set($nesting[0], 'VLQ_BASE_SHIFT', 5); + $const_set($nesting[0], 'VLQ_BASE', (1)['$<<']($$('VLQ_BASE_SHIFT'))); + $const_set($nesting[0], 'VLQ_BASE_MASK', $rb_minus($$('VLQ_BASE'), 1)); + $const_set($nesting[0], 'VLQ_CONTINUATION_BIT', $$('VLQ_BASE')); + $const_set($nesting[0], 'BASE64_DIGITS', "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".$split("")); + $const_set($nesting[0], 'BASE64_VALUES', $send($range(0, 64, true), 'inject', [$hash2([], {})], function $VLQ$1(h, i){var $writer = nil; + + + + if (h == null) h = nil;; + + if (i == null) i = nil;; + + $writer = [$$('BASE64_DIGITS')['$[]'](i), i]; + $send(h, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return h;}, 2)); + $defs(self, '$encode', function $$encode(ary) { + var self = this, result = nil; + + + result = []; + (function(){var $brk = Opal.new_brk(); try {return $send(ary, 'each', [], function $$2(n){var self = $$2.$$s == null ? this : $$2.$$s, vlq = nil; + + + + if (n == null) n = nil;; + vlq = ($truthy($rb_lt(n, 0)) ? ($rb_plus(n['$-@']()['$<<'](1), 1)) : (n['$<<'](1))); + return (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], function $$3(){var digit = nil; + + + digit = vlq['$&']($$('VLQ_BASE_MASK')); + vlq = vlq['$>>']($$('VLQ_BASE_SHIFT')); + if ($truthy($rb_gt(vlq, 0))) { + digit = digit['$|']($$('VLQ_CONTINUATION_BIT')) + }; + result['$<<']($$('BASE64_DIGITS')['$[]'](digit)); + if ($truthy($rb_gt(vlq, 0))) { + return nil + } else { + + Opal.brk(nil, $brk) + };}, {$$arity: 0, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})();}, {$$arity: 1, $$s: self, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + return result.$join(); + }, 1); + $defs(self, '$decode', function $$decode(str) { + var $a, $b, self = this, result = nil, chars = nil, vlq = nil, shift = nil, continuation = nil, char$ = nil, digit = nil; + + + result = []; + chars = str.$split(""); + while ($truthy(chars['$any?']())) { + + vlq = 0; + shift = 0; + continuation = true; + while ($truthy(continuation)) { + + char$ = chars.$shift(); + if (!$truthy(char$)) { + self.$raise($$('ArgumentError')) + }; + digit = $$('BASE64_VALUES')['$[]'](char$); + if ($eqeq(digit['$&']($$('VLQ_CONTINUATION_BIT')), 0)) { + continuation = false + }; + digit = digit['$&']($$('VLQ_BASE_MASK')); + vlq = $rb_plus(vlq, digit['$<<'](shift)); + shift = $rb_plus(shift, $$('VLQ_BASE_SHIFT')); + }; + result['$<<'](($eqeq(vlq['$&'](1), 1) ? (vlq['$>>'](1)['$-@']()) : (vlq['$>>'](1)))); + }; + return result; + }, 1); + $defs(self, '$encode_mappings', function $$encode_mappings(ary) { + var self = this; + + return $send(ary, 'map', [], function $$4(group){var self = $$4.$$s == null ? this : $$4.$$s; + + + + if (group == null) group = nil;; + return $send(group, 'map', [], function $$5(segment){var self = $$5.$$s == null ? this : $$5.$$s; + + + + if (segment == null) segment = nil;; + return self.$encode(segment);}, {$$arity: 1, $$s: self}).$join(",");}, {$$arity: 1, $$s: self}).$join(";") + }, 1); + return $defs(self, '$decode_mappings', function $$decode_mappings(str) { + var self = this, mappings = nil; + + + mappings = []; + $send(str.$split(";"), 'each_with_index', [], function $$6(group, index){var self = $$6.$$s == null ? this : $$6.$$s, $writer = nil; + + + + if (group == null) group = nil;; + + if (index == null) index = nil;; + + $writer = [index, []]; + $send(mappings, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return $send(group.$split(","), 'each', [], function $$7(segment){var self = $$7.$$s == null ? this : $$7.$$s; + + + + if (segment == null) segment = nil;; + return mappings['$[]'](index)['$<<'](self.$decode(segment));}, {$$arity: 1, $$s: self});}, {$$arity: 2, $$s: self}); + return mappings; + }, 1); + })($$$($$('Opal'), 'SourceMap'), $nesting) +}; + +Opal.modules["opal/source_map"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module; + + Opal.add_stubs('autoload'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base) { + var self = $module($base, 'SourceMap'); + + + + self.$autoload("Map", "opal/source_map/map"); + self.$autoload("File", "opal/source_map/file"); + self.$autoload("Index", "opal/source_map/index"); + return self.$autoload("VLQ", "opal/source_map/vlq"); + })($nesting[0]) + })($nesting[0], $nesting) +}; + +Opal.modules["opal-source-maps"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, nil = Opal.nil; + + Opal.add_stubs('require'); + return self.$require("opal/source_map") +}; diff --git a/opal/1.4.1/opal-source-maps.min.js b/opal/1.4.1/opal-source-maps.min.js new file mode 100644 index 00000000..a9476241 --- /dev/null +++ b/opal/1.4.1/opal-source-maps.min.js @@ -0,0 +1 @@ +Opal.modules.base64=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$defs=Opal.defs,$hash2=Opal.hash2,$truthy=Opal.truthy;return Opal.add_stubs("raise,delete"),function($base,$parent_nesting){var encode,decode,self=$module($base,"Base64"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";return encode=function(input){for(var block,charCode,str=String(input),idx=0,map=chars,output="";str.charAt(0|idx)||(map="=",idx%1);output+=map.charAt(63&block>>8-idx%1*8))(charCode=str.charCodeAt(idx+=3/4))>255&&self.$raise($$("ArgumentError"),"invalid character (failed: The string to be encoded contains characters outside of the Latin1 range.)"),block=block<<8|charCode;return output},decode=function(input){var str=String(input).replace(/=+$/,"");str.length%4==1&&self.$raise($$("ArgumentError"),"invalid base64 (failed: The string to be decoded is not correctly encoded.)");for(var bs,buffer,bc=0,idx=0,output="";buffer=str.charAt(idx++);~buffer&&(bs=bc%4?64*bs+buffer:buffer,bc++%4)?output+=String.fromCharCode(255&bs>>(-2*bc&6)):0)buffer=chars.indexOf(buffer);return output},$defs(self,"$decode64",(function(string){return decode(string.replace(/\r?\n/g,""))}),1),$defs(self,"$encode64",(function(string){return encode(string).replace(/(.{60})/g,"$1\n").replace(/([^\n])$/g,"$1\n")}),1),$defs(self,"$strict_decode64",(function(string){return decode(string)}),1),$defs(self,"$strict_encode64",(function(string){return encode(string)}),1),$defs(self,"$urlsafe_decode64",(function(string){return decode(string.replace(/\-/g,"+").replace(/_/g,"/"))}),1),$defs(self,"$urlsafe_encode64",(function(string,$kwargs){var padding,str=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(padding=$kwargs.$$smap.padding)&&(padding=!0),str=encode(string).replace(/\+/g,"-").replace(/\//g,"_"),$truthy(padding)||(str=str.$delete("=")),str}),-2)}($nesting[0],$nesting)},Opal.modules.json=function(Opal){var self,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$Object=Opal.Object,$hash2=Opal.hash2,$eqeqeq=Opal.eqeqeq,$defs=Opal.defs,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("raise,new,push,[]=,-,[],create_id,json_create,const_get,attr_accessor,create_id=,===,parse,generate,from_object,merge,to_json,responds_to?,to_io,write,to_s,to_a,strftime"),function($base,$parent_nesting){var self=$module($base,"JSON"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$writer=nil;$klass($nesting[0],$$("StandardError"),"JSONError"),$klass($nesting[0],$$("JSONError"),"ParserError");var $hasOwn=Opal.hasOwnProperty;function $parse(source){try{return JSON.parse(source)}catch(e){self.$raise($$$($$("JSON"),"ParserError"),e.message)}}function to_opal(value,options){var klass,arr,hash,i,ii,k;switch(typeof value){case"string":case"number":return value;case"boolean":return!!value;case"undefined":return nil;case"object":if(!value)return nil;if(value.$$is_array){for(arr=options.array_class.$new(),i=0,ii=value.length;i>,>,|,join,any?,shift,raise,==,map,encode,each_with_index,decode"),function($base,$parent_nesting){var self=$module($base,"VLQ"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"VLQ_BASE_SHIFT",5),$const_set($nesting[0],"VLQ_BASE",1["$<<"]($$("VLQ_BASE_SHIFT"))),$const_set($nesting[0],"VLQ_BASE_MASK",$rb_minus($$("VLQ_BASE"),1)),$const_set($nesting[0],"VLQ_CONTINUATION_BIT",$$("VLQ_BASE")),$const_set($nesting[0],"BASE64_DIGITS","ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".$split("")),$const_set($nesting[0],"BASE64_VALUES",$send($range(0,64,!0),"inject",[$hash2([],{})],(function(h,i){var $writer;return null==h&&(h=nil),null==i&&(i=nil),$writer=[$$("BASE64_DIGITS")["$[]"](i),i],$send(h,"[]=",$to_a($writer)),$rb_minus($writer.length,1),h}),2)),$defs(self,"$encode",(function(ary){var self=this,result=nil;return result=[],function(){var $brk=Opal.new_brk();try{$send(ary,"each",[],(function $$2(n){var self=null==$$2.$$s?this:$$2.$$s,vlq=nil;return null==n&&(n=nil),vlq=$truthy($rb_lt(n,0))?$rb_plus(n["$-@"]()["$<<"](1),1):n["$<<"](1),function(){var $brk=Opal.new_brk();try{return $send(self,"loop",[],(function(){var digit=nil;if(digit=vlq["$&"]($$("VLQ_BASE_MASK")),vlq=vlq["$>>"]($$("VLQ_BASE_SHIFT")),$truthy($rb_gt(vlq,0))&&(digit=digit["$|"]($$("VLQ_CONTINUATION_BIT"))),result["$<<"]($$("BASE64_DIGITS")["$[]"](digit)),$truthy($rb_gt(vlq,0)))return nil;Opal.brk(nil,$brk)}),{$$arity:0,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}()}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),result.$join()}),1),$defs(self,"$decode",(function(str){var result=nil,chars=nil,vlq=nil,shift=nil,continuation=nil,char$=nil,digit=nil;for(result=[],chars=str.$split("");$truthy(chars["$any?"]());){for(vlq=0,shift=0,continuation=!0;$truthy(continuation);)char$=chars.$shift(),$truthy(char$)||this.$raise($$("ArgumentError")),digit=$$("BASE64_VALUES")["$[]"](char$),$eqeq(digit["$&"]($$("VLQ_CONTINUATION_BIT")),0)&&(continuation=!1),digit=digit["$&"]($$("VLQ_BASE_MASK")),vlq=$rb_plus(vlq,digit["$<<"](shift)),shift=$rb_plus(shift,$$("VLQ_BASE_SHIFT"));result["$<<"]($eqeq(vlq["$&"](1),1)?vlq["$>>"](1)["$-@"]():vlq["$>>"](1))}return result}),1),$defs(self,"$encode_mappings",(function(ary){return $send(ary,"map",[],(function $$4(group){return null==group&&(group=nil),$send(group,"map",[],(function $$5(segment){return null==segment&&(segment=nil),(null==$$5.$$s?this:$$5.$$s).$encode(segment)}),{$$arity:1,$$s:null==$$4.$$s?this:$$4.$$s}).$join(",")}),{$$arity:1,$$s:this}).$join(";")}),1),$defs(self,"$decode_mappings",(function(str){var mappings=nil;return mappings=[],$send(str.$split(";"),"each_with_index",[],(function $$6(group,index){var $writer,self=null==$$6.$$s?this:$$6.$$s;return null==group&&(group=nil),null==index&&(index=nil),$send(mappings,"[]=",$to_a($writer=[index,[]])),$rb_minus($writer.length,1),$send(group.$split(","),"each",[],(function $$7(segment){var self=null==$$7.$$s?this:$$7.$$s;return null==segment&&(segment=nil),mappings["$[]"](index)["$<<"](self.$decode(segment))}),{$$arity:1,$$s:self})}),{$$arity:2,$$s:this}),mappings}),1)}($$$($$("Opal"),"SourceMap"),$nesting)},Opal.modules["opal/source_map"]=function(Opal){var $base,$parent_nesting,$nesting=[],$module=(Opal.nil,Opal.module);return Opal.add_stubs("autoload"),$base=$nesting[0],$parent_nesting=$nesting,function($base){var self=$module($base,"SourceMap");return self.$autoload("Map","opal/source_map/map"),self.$autoload("File","opal/source_map/file"),self.$autoload("Index","opal/source_map/index"),self.$autoload("VLQ","opal/source_map/vlq")}([$module($base,"Opal")].concat($parent_nesting)[0])},Opal.modules["opal-source-maps"]=function(Opal){var self=Opal.top;Opal.nil;return Opal.add_stubs("require"),self.$require("opal/source_map")}; diff --git a/opal/1.4.1/opal-source-maps.min.js.gz b/opal/1.4.1/opal-source-maps.min.js.gz new file mode 100644 index 00000000..459476bf Binary files /dev/null and b/opal/1.4.1/opal-source-maps.min.js.gz differ diff --git a/opal/1.4.1/opal.js b/opal/1.4.1/opal.js new file mode 100644 index 00000000..60ada10d --- /dev/null +++ b/opal/1.4.1/opal.js @@ -0,0 +1,24793 @@ +(function(global_object) { + "use strict"; + + // @note + // A few conventions for the documentation of this file: + // 1. Always use "//" (in contrast with "/**/") + // 2. The syntax used is Yardoc (yardoc.org), which is intended for Ruby (se below) + // 3. `@param` and `@return` types should be preceded by `JS.` when referring to + // JavaScript constructors (e.g. `JS.Function`) otherwise Ruby is assumed. + // 4. `nil` and `null` being unambiguous refer to the respective + // objects/values in Ruby and JavaScript + // 5. This is still WIP :) so please give feedback and suggestions on how + // to improve or for alternative solutions + // + // The way the code is digested before going through Yardoc is a secret kept + // in the docs repo (https://github.com/opal/docs/tree/master). + + var console; + + // Detect the global object + if (typeof(globalThis) !== 'undefined') { global_object = globalThis; } + else if (typeof(global) !== 'undefined') { global_object = global; } + else if (typeof(window) !== 'undefined') { global_object = window; } + + // Setup a dummy console object if missing + if (typeof(global_object.console) === 'object') { + console = global_object.console; + } else if (global_object.console == null) { + console = global_object.console = {}; + } else { + console = {}; + } + + if (!('log' in console)) { console.log = function () {}; } + if (!('warn' in console)) { console.warn = console.log; } + + if (typeof(global_object.Opal) !== 'undefined') { + console.warn('Opal already loaded. Loading twice can cause troubles, please fix your setup.'); + return global_object.Opal; + } + + var nil; + + // The actual class for BasicObject + var BasicObject; + + // The actual Object class. + // The leading underscore is to avoid confusion with window.Object() + var _Object; + + // The actual Module class + var Module; + + // The actual Class class + var Class; + + // The Opal.Opal class (helpers etc.) + var _Opal; + + // The Kernel module + var Kernel; + + // The Opal object that is exposed globally + var Opal = global_object.Opal = {}; + + // This is a useful reference to global object inside ruby files + Opal.global = global_object; + global_object.Opal = Opal; + + // Configure runtime behavior with regards to require and unsupported features + Opal.config = { + missing_require_severity: 'error', // error, warning, ignore + unsupported_features_severity: 'warning', // error, warning, ignore + experimental_features_severity: 'warning',// warning, ignore + enable_stack_trace: true // true, false + }; + + // Minify common function calls + var $has_own = Object.hasOwnProperty; + var $bind = Function.prototype.bind; + var $set_proto = Object.setPrototypeOf; + var $slice = Array.prototype.slice; + var $splice = Array.prototype.splice; + + // Nil object id is always 4 + var nil_id = 4; + + // Generates even sequential numbers greater than 4 + // (nil_id) to serve as unique ids for ruby objects + var unique_id = nil_id; + + // Return next unique id + Opal.uid = function() { + unique_id += 2; + return unique_id; + }; + + // Retrieve or assign the id of an object + Opal.id = function(obj) { + if (obj.$$is_number) return (obj * 2)+1; + if (obj.$$id != null) { + return obj.$$id; + } + $prop(obj, '$$id', Opal.uid()); + return obj.$$id; + }; + + // Globals table + Opal.gvars = {}; + + // Exit function, this should be replaced by platform specific implementation + // (See nodejs and chrome for examples) + Opal.exit = function(status) { if (Opal.gvars.DEBUG) console.log('Exited with status '+status); }; + + // keeps track of exceptions for $! + Opal.exceptions = []; + + // @private + // Pops an exception from the stack and updates `$!`. + Opal.pop_exception = function() { + var exception = Opal.exceptions.pop(); + if (exception) { + Opal.gvars["!"] = exception; + Opal.gvars["@"] = exception.$backtrace(); + } + else { + Opal.gvars["!"] = Opal.gvars["@"] = nil; + } + }; + + function $prop(object, name, initialValue) { + if (typeof(object) === "string") { + // Special case for: + // s = "string" + // def s.m; end + // String class is the only class that: + // + compiles to JS primitive + // + allows method definition directly on instances + // numbers, true, false and null do not support it. + object[name] = initialValue; + } else { + Object.defineProperty(object, name, { + value: initialValue, + enumerable: false, + configurable: true, + writable: true + }); + } + } + + Opal.prop = $prop; + + // @deprecated + Opal.defineProperty = Opal.prop; + + Opal.slice = $slice; + + + // Helpers + // ----- + + var $truthy = Opal.truthy = function(val) { + return false !== val && nil !== val && undefined !== val && null !== val && (!(val instanceof Boolean) || true === val.valueOf()); + }; + + Opal.falsy = function(val) { + return !$truthy(val); + }; + + Opal.type_error = function(object, type, method, coerced) { + object = object.$$class; + + if (coerced && method) { + coerced = coerced.$$class; + return Opal.TypeError.$new( + "can't convert " + object + " into " + type + + " (" + object + "#" + method + " gives " + coerced + ")" + ) + } else { + return Opal.TypeError.$new( + "no implicit conversion of " + object + " into " + type + ) + } + }; + + Opal.coerce_to = function(object, type, method, args) { + if (type['$==='](object)) return object; + + if (!object['$respond_to?'](method)) { + throw Opal.type_error(object, type); + } + + if (args == null) args = []; + return Opal.send(object, method, args); + } + + Opal.respond_to = function(obj, jsid, include_all) { + if (obj == null || !obj.$$class) return false; + include_all = !!include_all; + var body = obj[jsid]; + + if (obj['$respond_to?'].$$pristine) { + if (typeof(body) === "function" && !body.$$stub) { + return true; + } + if (!obj['$respond_to_missing?'].$$pristine) { + return Opal.send(obj, obj['$respond_to_missing?'], [jsid.substr(1), include_all]); + } + } else { + return Opal.send(obj, obj['$respond_to?'], [jsid.substr(1), include_all]); + } + } + + // TracePoint support + // ------------------ + // + // Support for `TracePoint.trace(:class) do ... end` + Opal.trace_class = false; + Opal.tracers_for_class = []; + + function invoke_tracers_for_class(klass_or_module) { + var i, ii, tracer; + + for(i = 0, ii = Opal.tracers_for_class.length; i < ii; i++) { + tracer = Opal.tracers_for_class[i]; + tracer.trace_object = klass_or_module; + tracer.block.$call(tracer); + } + } + + function handle_autoload(cref, name) { + if (!cref.$$autoload[name].loaded) { + cref.$$autoload[name].loaded = true; + try { + Opal.Kernel.$require(cref.$$autoload[name].path); + } catch (e) { + cref.$$autoload[name].exception = e; + throw e; + } + cref.$$autoload[name].required = true; + if (cref.$$const[name] != null) { + cref.$$autoload[name].success = true; + return cref.$$const[name]; + } + } else if (cref.$$autoload[name].loaded && !cref.$$autoload[name].required) { + if (cref.$$autoload[name].exception) { throw cref.$$autoload[name].exception; } + } + } + + // Constants + // --------- + // + // For future reference: + // - The Rails autoloading guide (http://guides.rubyonrails.org/v5.0/autoloading_and_reloading_constants.html) + // - @ConradIrwin's 2012 post on “Everything you ever wanted to know about constant lookup in Ruby” (http://cirw.in/blog/constant-lookup.html) + // + // Legend of MRI concepts/names: + // - constant reference (cref): the module/class that acts as a namespace + // - nesting: the namespaces wrapping the current scope, e.g. nesting inside + // `module A; module B::C; end; end` is `[B::C, A]` + + // Get the constant in the scope of the current cref + function const_get_name(cref, name) { + if (cref) { + if (cref.$$const[name] != null) { return cref.$$const[name]; } + if (cref.$$autoload && cref.$$autoload[name]) { + return handle_autoload(cref, name); + } + } + } + + // Walk up the nesting array looking for the constant + function const_lookup_nesting(nesting, name) { + var i, ii, constant; + + if (nesting.length === 0) return; + + // If the nesting is not empty the constant is looked up in its elements + // and in order. The ancestors of those elements are ignored. + for (i = 0, ii = nesting.length; i < ii; i++) { + constant = nesting[i].$$const[name]; + if (constant != null) { + return constant; + } else if (nesting[i].$$autoload && nesting[i].$$autoload[name]) { + return handle_autoload(nesting[i], name); + } + } + } + + // Walk up the ancestors chain looking for the constant + function const_lookup_ancestors(cref, name) { + var i, ii, ancestors; + + if (cref == null) return; + + ancestors = Opal.ancestors(cref); + + for (i = 0, ii = ancestors.length; i < ii; i++) { + if (ancestors[i].$$const && $has_own.call(ancestors[i].$$const, name)) { + return ancestors[i].$$const[name]; + } else if (ancestors[i].$$autoload && ancestors[i].$$autoload[name]) { + return handle_autoload(ancestors[i], name); + } + } + } + + // Walk up Object's ancestors chain looking for the constant, + // but only if cref is missing or a module. + function const_lookup_Object(cref, name) { + if (cref == null || cref.$$is_module) { + return const_lookup_ancestors(_Object, name); + } + } + + // Call const_missing if nothing else worked + function const_missing(cref, name, skip_missing) { + if (!skip_missing) { + return (cref || _Object).$const_missing(name); + } + } + + // Look for the constant just in the current cref or call `#const_missing` + Opal.const_get_local = function(cref, name, skip_missing) { + var result; + + if (cref == null) return; + + if (cref === '::') cref = _Object; + + if (!cref.$$is_module && !cref.$$is_class) { + throw new Opal.TypeError(cref.toString() + " is not a class/module"); + } + + result = const_get_name(cref, name); if (result != null) return result; + result = const_missing(cref, name, skip_missing); if (result != null) return result; + }; + + // Look for the constant relative to a cref or call `#const_missing` (when the + // constant is prefixed by `::`). + Opal.const_get_qualified = function(cref, name, skip_missing) { + var result, cache, cached, current_version = Opal.const_cache_version; + + if (name == null) { + // A shortpath for calls like ::String => $$$("String") + result = const_get_name(_Object, cref); + + if (result != null) return result; + return Opal.const_get_qualified(_Object, cref, skip_missing); + } + + if (cref == null) return; + + if (cref === '::') cref = _Object; + + if (!cref.$$is_module && !cref.$$is_class) { + throw new Opal.TypeError(cref.toString() + " is not a class/module"); + } + + if ((cache = cref.$$const_cache) == null) { + $prop(cref, '$$const_cache', Object.create(null)); + cache = cref.$$const_cache; + } + cached = cache[name]; + + if (cached == null || cached[0] !== current_version) { + ((result = const_get_name(cref, name)) != null) || + ((result = const_lookup_ancestors(cref, name)) != null); + cache[name] = [current_version, result]; + } else { + result = cached[1]; + } + + return result != null ? result : const_missing(cref, name, skip_missing); + }; + + // Initialize the top level constant cache generation counter + Opal.const_cache_version = 1; + + // Look for the constant in the open using the current nesting and the nearest + // cref ancestors or call `#const_missing` (when the constant has no :: prefix). + Opal.const_get_relative = function(nesting, name, skip_missing) { + var cref = nesting[0], result, current_version = Opal.const_cache_version, cache, cached; + + if ((cache = nesting.$$const_cache) == null) { + $prop(nesting, '$$const_cache', Object.create(null)); + cache = nesting.$$const_cache; + } + cached = cache[name]; + + if (cached == null || cached[0] !== current_version) { + ((result = const_get_name(cref, name)) != null) || + ((result = const_lookup_nesting(nesting, name)) != null) || + ((result = const_lookup_ancestors(cref, name)) != null) || + ((result = const_lookup_Object(cref, name)) != null); + + cache[name] = [current_version, result]; + } else { + result = cached[1]; + } + + return result != null ? result : const_missing(cref, name, skip_missing); + }; + + // Register the constant on a cref and opportunistically set the name of + // unnamed classes/modules. + function $const_set(cref, name, value) { + if (cref == null || cref === '::') cref = _Object; + + if (value.$$is_a_module) { + if (value.$$name == null || value.$$name === nil) value.$$name = name; + if (value.$$base_module == null) value.$$base_module = cref; + } + + cref.$$const = (cref.$$const || Object.create(null)); + cref.$$const[name] = value; + + // Add a short helper to navigate constants manually. + // @example + // Opal.$$.Regexp.$$.IGNORECASE + cref.$$ = cref.$$const; + + Opal.const_cache_version++; + + // Expose top level constants onto the Opal object + if (cref === _Object) Opal[name] = value; + + // Name new class directly onto current scope (Opal.Foo.Baz = klass) + $prop(cref, name, value); + + return value; + }; + + Opal.const_set = $const_set; + + // Get all the constants reachable from a given cref, by default will include + // inherited constants. + Opal.constants = function(cref, inherit) { + if (inherit == null) inherit = true; + + var module, modules = [cref], i, ii, constants = {}, constant; + + if (inherit) modules = modules.concat(Opal.ancestors(cref)); + if (inherit && cref.$$is_module) modules = modules.concat([Opal.Object]).concat(Opal.ancestors(Opal.Object)); + + for (i = 0, ii = modules.length; i < ii; i++) { + module = modules[i]; + + // Do not show Objects constants unless we're querying Object itself + if (cref !== _Object && module == _Object) break; + + for (constant in module.$$const) { + constants[constant] = true; + } + if (module.$$autoload) { + for (constant in module.$$autoload) { + constants[constant] = true; + } + } + } + + return Object.keys(constants); + }; + + // Remove a constant from a cref. + Opal.const_remove = function(cref, name) { + Opal.const_cache_version++; + + if (cref.$$const[name] != null) { + var old = cref.$$const[name]; + delete cref.$$const[name]; + return old; + } + + if (cref.$$autoload && cref.$$autoload[name]) { + delete cref.$$autoload[name]; + return nil; + } + + throw Opal.NameError.$new("constant "+cref+"::"+cref.$name()+" not defined"); + }; + + // Generates a function that is a curried const_get_relative. + Opal.const_get_relative_factory = function(nesting) { + return function(name, skip_missing) { + return Opal.$$(nesting, name, skip_missing); + } + } + + // Setup some shortcuts to reduce compiled size + Opal.$$ = Opal.const_get_relative; + Opal.$$$ = Opal.const_get_qualified; + Opal.$r = Opal.const_get_relative_factory; + + // Modules & Classes + // ----------------- + + // A `class Foo; end` expression in ruby is compiled to call this runtime + // method which either returns an existing class of the given name, or creates + // a new class in the given `base` scope. + // + // If a constant with the given name exists, then we check to make sure that + // it is a class and also that the superclasses match. If either of these + // fail, then we raise a `TypeError`. Note, `superclass` may be null if one + // was not specified in the ruby code. + // + // We pass a constructor to this method of the form `function ClassName() {}` + // simply so that classes show up with nicely formatted names inside debuggers + // in the web browser (or node/sprockets). + // + // The `scope` is the current `self` value where the class is being created + // from. We use this to get the scope for where the class should be created. + // If `scope` is an object (not a class/module), we simple get its class and + // use that as the scope instead. + // + // @param scope [Object] where the class is being created + // @param superclass [Class,null] superclass of the new class (may be null) + // @param singleton [Boolean,null] a true value denotes we want to allocate + // a singleton + // + // @return new [Class] or existing ruby class + // + Opal.allocate_class = function(name, superclass, singleton) { + var klass, constructor; + + if (superclass != null && superclass.$$bridge) { + // Inheritance from bridged classes requires + // calling original JS constructors + constructor = function() { + var args = $slice.call(arguments), + self = new ($bind.apply(superclass.$$constructor, [null].concat(args)))(); + + // and replacing a __proto__ manually + $set_proto(self, klass.$$prototype); + return self; + } + } else { + constructor = function(){}; + } + + if (name && name !== nil) { + $prop(constructor, 'displayName', '::'+name); + } + + klass = constructor; + + $prop(klass, '$$name', name); + $prop(klass, '$$constructor', constructor); + $prop(klass, '$$prototype', constructor.prototype); + $prop(klass, '$$const', {}); + $prop(klass, '$$is_class', true); + $prop(klass, '$$is_a_module', true); + $prop(klass, '$$super', superclass); + $prop(klass, '$$cvars', {}); + $prop(klass, '$$own_included_modules', []); + $prop(klass, '$$own_prepended_modules', []); + $prop(klass, '$$ancestors', []); + $prop(klass, '$$ancestors_cache_version', null); + $prop(klass, '$$subclasses', []); + + $prop(klass.$$prototype, '$$class', klass); + + // By default if there are no singleton class methods + // __proto__ is Class.prototype + // Later singleton methods generate a singleton_class + // and inject it into ancestors chain + if (Opal.Class) { + $set_proto(klass, Opal.Class.prototype); + } + + if (superclass != null) { + $set_proto(klass.$$prototype, superclass.$$prototype); + + if (singleton !== true) { + // Let's not forbid GC from cleaning up our + // subclasses. + if (typeof WeakRef !== 'undefined') { + // First, let's clean up our array from empty objects. + var i, subclass, rebuilt_subclasses = []; + for (i = 0; i < superclass.$$subclasses.length; i++) { + subclass = superclass.$$subclasses[i]; + if (subclass.deref() !== undefined) { + rebuilt_subclasses.push(subclass); + } + } + // Now, let's add our class. + rebuilt_subclasses.push(new WeakRef(klass)); + superclass.$$subclasses = rebuilt_subclasses; + } + else { + superclass.$$subclasses.push(klass); + } + } + + if (superclass.$$meta) { + // If superclass has metaclass then we have explicitely inherit it. + Opal.build_class_singleton_class(klass); + } + } + + return klass; + }; + + + function find_existing_class(scope, name) { + // Try to find the class in the current scope + var klass = const_get_name(scope, name); + + // If the class exists in the scope, then we must use that + if (klass) { + // Make sure the existing constant is a class, or raise error + if (!klass.$$is_class) { + throw Opal.TypeError.$new(name + " is not a class"); + } + + return klass; + } + } + + function ensureSuperclassMatch(klass, superclass) { + if (klass.$$super !== superclass) { + throw Opal.TypeError.$new("superclass mismatch for class " + klass.$$name); + } + } + + Opal.klass = function(scope, superclass, name) { + var bridged; + + if (scope == null || scope == '::') { + // Global scope + scope = _Object; + } else if (!scope.$$is_class && !scope.$$is_module) { + // Scope is an object, use its class + scope = scope.$$class; + } + + // If the superclass is not an Opal-generated class then we're bridging a native JS class + if ( + superclass != null && (!superclass.hasOwnProperty || ( + superclass.hasOwnProperty && !superclass.hasOwnProperty('$$is_class') + )) + ) { + if (superclass.constructor && superclass.constructor.name == "Function") { + bridged = superclass; + superclass = _Object; + } else { + throw Opal.TypeError.$new("superclass must be a Class (" + ( + (superclass.constructor && (superclass.constructor.name || superclass.constructor.$$name)) || + typeof(superclass) + ) + " given)"); + } + } + + var klass = find_existing_class(scope, name); + + if (klass) { + if (superclass) { + // Make sure existing class has same superclass + ensureSuperclassMatch(klass, superclass); + } + + if (Opal.trace_class) { invoke_tracers_for_class(klass); } + + return klass; + } + + // Class doesn't exist, create a new one with given superclass... + + // Not specifying a superclass means we can assume it to be Object + if (superclass == null) { + superclass = _Object; + } + + // Create the class object (instance of Class) + klass = Opal.allocate_class(name, superclass); + $const_set(scope, name, klass); + + // Call .inherited() hook with new class on the superclass + if (superclass.$inherited) { + superclass.$inherited(klass); + } + + if (bridged) { + Opal.bridge(bridged, klass); + } + + if (Opal.trace_class) { invoke_tracers_for_class(klass); } + + return klass; + }; + + // Define new module (or return existing module). The given `scope` is basically + // the current `self` value the `module` statement was defined in. If this is + // a ruby module or class, then it is used, otherwise if the scope is a ruby + // object then that objects real ruby class is used (e.g. if the scope is the + // main object, then the top level `Object` class is used as the scope). + // + // If a module of the given name is already defined in the scope, then that + // instance is just returned. + // + // If there is a class of the given name in the scope, then an error is + // generated instead (cannot have a class and module of same name in same scope). + // + // Otherwise, a new module is created in the scope with the given name, and that + // new instance is returned back (to be referenced at runtime). + // + // @param scope [Module, Class] class or module this definition is inside + // @param id [String] the name of the new (or existing) module + // + // @return [Module] + Opal.allocate_module = function(name) { + var constructor = function(){}; + if (name) { + $prop(constructor, 'displayName', name+'.$$constructor'); + } + + var module = constructor; + + if (name) + $prop(constructor, 'displayName', name+'.constructor'); + + $prop(module, '$$name', name); + $prop(module, '$$prototype', constructor.prototype); + $prop(module, '$$const', {}); + $prop(module, '$$is_module', true); + $prop(module, '$$is_a_module', true); + $prop(module, '$$cvars', {}); + $prop(module, '$$iclasses', []); + $prop(module, '$$own_included_modules', []); + $prop(module, '$$own_prepended_modules', []); + $prop(module, '$$ancestors', [module]); + $prop(module, '$$ancestors_cache_version', null); + + $set_proto(module, Opal.Module.prototype); + + return module; + }; + + function find_existing_module(scope, name) { + var module = const_get_name(scope, name); + if (module == null && scope === _Object) module = const_lookup_ancestors(_Object, name); + + if (module) { + if (!module.$$is_module && module !== _Object) { + throw Opal.TypeError.$new(name + " is not a module"); + } + } + + return module; + } + + Opal.module = function(scope, name) { + var module; + + if (scope == null || scope == '::') { + // Global scope + scope = _Object; + } else if (!scope.$$is_class && !scope.$$is_module) { + // Scope is an object, use its class + scope = scope.$$class; + } + + module = find_existing_module(scope, name); + + if (module) { + + if (Opal.trace_class) { invoke_tracers_for_class(module); } + + return module; + } + + // Module doesnt exist, create a new one... + module = Opal.allocate_module(name); + $const_set(scope, name, module); + + if (Opal.trace_class) { invoke_tracers_for_class(module); } + + return module; + }; + + // Return the singleton class for the passed object. + // + // If the given object alredy has a singleton class, then it will be stored on + // the object as the `$$meta` property. If this exists, then it is simply + // returned back. + // + // Otherwise, a new singleton object for the class or object is created, set on + // the object at `$$meta` for future use, and then returned. + // + // @param object [Object] the ruby object + // @return [Class] the singleton class for object + Opal.get_singleton_class = function(object) { + if (object.$$meta) { + return object.$$meta; + } + + if (object.hasOwnProperty('$$is_class')) { + return Opal.build_class_singleton_class(object); + } else if (object.hasOwnProperty('$$is_module')) { + return Opal.build_module_singleton_class(object); + } else { + return Opal.build_object_singleton_class(object); + } + }; + + // Build the singleton class for an existing class. Class object are built + // with their singleton class already in the prototype chain and inheriting + // from their superclass object (up to `Class` itself). + // + // NOTE: Actually in MRI a class' singleton class inherits from its + // superclass' singleton class which in turn inherits from Class. + // + // @param klass [Class] + // @return [Class] + Opal.build_class_singleton_class = function(klass) { + var superclass, meta; + + if (klass.$$meta) { + return klass.$$meta; + } + + // The singleton_class superclass is the singleton_class of its superclass; + // but BasicObject has no superclass (its `$$super` is null), thus we + // fallback on `Class`. + superclass = klass === BasicObject ? Class : Opal.get_singleton_class(klass.$$super); + + meta = Opal.allocate_class(null, superclass, true); + + $prop(meta, '$$is_singleton', true); + $prop(meta, '$$singleton_of', klass); + $prop(klass, '$$meta', meta); + $set_proto(klass, meta.$$prototype); + // Restoring ClassName.class + $prop(klass, '$$class', Opal.Class); + + return meta; + }; + + Opal.build_module_singleton_class = function(mod) { + if (mod.$$meta) { + return mod.$$meta; + } + + var meta = Opal.allocate_class(null, Opal.Module, true); + + $prop(meta, '$$is_singleton', true); + $prop(meta, '$$singleton_of', mod); + $prop(mod, '$$meta', meta); + $set_proto(mod, meta.$$prototype); + // Restoring ModuleName.class + $prop(mod, '$$class', Opal.Module); + + return meta; + }; + + // Build the singleton class for a Ruby (non class) Object. + // + // @param object [Object] + // @return [Class] + Opal.build_object_singleton_class = function(object) { + var superclass = object.$$class, + klass = Opal.allocate_class(nil, superclass, true); + + $prop(klass, '$$is_singleton', true); + $prop(klass, '$$singleton_of', object); + + delete klass.$$prototype.$$class; + + $prop(object, '$$meta', klass); + + $set_proto(object, object.$$meta.$$prototype); + + return klass; + }; + + Opal.is_method = function(prop) { + return (prop[0] === '$' && prop[1] !== '$'); + }; + + Opal.instance_methods = function(mod) { + var exclude = [], results = [], ancestors = Opal.ancestors(mod); + + for (var i = 0, l = ancestors.length; i < l; i++) { + var ancestor = ancestors[i], + proto = ancestor.$$prototype; + + if (proto.hasOwnProperty('$$dummy')) { + proto = proto.$$define_methods_on; + } + + var props = Object.getOwnPropertyNames(proto); + + for (var j = 0, ll = props.length; j < ll; j++) { + var prop = props[j]; + + if (Opal.is_method(prop)) { + var method_name = prop.slice(1), + method = proto[prop]; + + if (method.$$stub && exclude.indexOf(method_name) === -1) { + exclude.push(method_name); + } + + if (!method.$$stub && results.indexOf(method_name) === -1 && exclude.indexOf(method_name) === -1) { + results.push(method_name); + } + } + } + } + + return results; + }; + + Opal.own_instance_methods = function(mod) { + var results = [], + proto = mod.$$prototype; + + if (proto.hasOwnProperty('$$dummy')) { + proto = proto.$$define_methods_on; + } + + var props = Object.getOwnPropertyNames(proto); + + for (var i = 0, length = props.length; i < length; i++) { + var prop = props[i]; + + if (Opal.is_method(prop)) { + var method = proto[prop]; + + if (!method.$$stub) { + var method_name = prop.slice(1); + results.push(method_name); + } + } + } + + return results; + }; + + Opal.methods = function(obj) { + return Opal.instance_methods(obj.$$meta || obj.$$class); + }; + + Opal.own_methods = function(obj) { + if (obj.$$meta) { + return Opal.own_instance_methods(obj.$$meta); + } + else { + return []; + } + }; + + Opal.receiver_methods = function(obj) { + var mod = Opal.get_singleton_class(obj); + var singleton_methods = Opal.own_instance_methods(mod); + var instance_methods = Opal.own_instance_methods(mod.$$super); + return singleton_methods.concat(instance_methods); + }; + + // Returns an object containing all pairs of names/values + // for all class variables defined in provided +module+ + // and its ancestors. + // + // @param module [Module] + // @return [Object] + Opal.class_variables = function(module) { + var ancestors = Opal.ancestors(module), + i, length = ancestors.length, + result = {}; + + for (i = length - 1; i >= 0; i--) { + var ancestor = ancestors[i]; + + for (var cvar in ancestor.$$cvars) { + result[cvar] = ancestor.$$cvars[cvar]; + } + } + + return result; + }; + + // Sets class variable with specified +name+ to +value+ + // in provided +module+ + // + // @param module [Module] + // @param name [String] + // @param value [Object] + Opal.class_variable_set = function(module, name, value) { + var ancestors = Opal.ancestors(module), + i, length = ancestors.length; + + for (i = length - 2; i >= 0; i--) { + var ancestor = ancestors[i]; + + if ($has_own.call(ancestor.$$cvars, name)) { + ancestor.$$cvars[name] = value; + return value; + } + } + + module.$$cvars[name] = value; + + return value; + }; + + // Gets class variable with specified +name+ from provided +module+ + // + // @param module [Module] + // @param name [String] + Opal.class_variable_get = function(module, name, tolerant) { + if ($has_own.call(module.$$cvars, name)) + return module.$$cvars[name]; + + var ancestors = Opal.ancestors(module), + i, length = ancestors.length; + + for (i = 0; i < length; i++) { + var ancestor = ancestors[i]; + + if ($has_own.call(ancestor.$$cvars, name)) { + return ancestor.$$cvars[name]; + } + } + + if (!tolerant) + throw Opal.NameError.$new('uninitialized class variable '+name+' in '+module.$name()); + + return nil; + } + + function isRoot(proto) { + return proto.hasOwnProperty('$$iclass') && proto.hasOwnProperty('$$root'); + } + + function own_included_modules(module) { + var result = [], mod, proto = Object.getPrototypeOf(module.$$prototype); + + while (proto) { + if (proto.hasOwnProperty('$$class')) { + // superclass + break; + } + mod = protoToModule(proto); + if (mod) { + result.push(mod); + } + proto = Object.getPrototypeOf(proto); + } + + return result; + } + + function own_prepended_modules(module) { + var result = [], mod, proto = Object.getPrototypeOf(module.$$prototype); + + if (module.$$prototype.hasOwnProperty('$$dummy')) { + while (proto) { + if (proto === module.$$prototype.$$define_methods_on) { + break; + } + + mod = protoToModule(proto); + if (mod) { + result.push(mod); + } + + proto = Object.getPrototypeOf(proto); + } + } + + return result; + } + + + // The actual inclusion of a module into a class. + // + // ## Class `$$parent` and `iclass` + // + // To handle `super` calls, every class has a `$$parent`. This parent is + // used to resolve the next class for a super call. A normal class would + // have this point to its superclass. However, if a class includes a module + // then this would need to take into account the module. The module would + // also have to then point its `$$parent` to the actual superclass. We + // cannot modify modules like this, because it might be included in more + // then one class. To fix this, we actually insert an `iclass` as the class' + // `$$parent` which can then point to the superclass. The `iclass` acts as + // a proxy to the actual module, so the `super` chain can then search it for + // the required method. + // + // @param module [Module] the module to include + // @param includer [Module] the target class to include module into + // @return [null] + Opal.append_features = function(module, includer) { + var module_ancestors = Opal.ancestors(module); + var iclasses = []; + + if (module_ancestors.indexOf(includer) !== -1) { + throw Opal.ArgumentError.$new('cyclic include detected'); + } + + for (var i = 0, length = module_ancestors.length; i < length; i++) { + var ancestor = module_ancestors[i], iclass = create_iclass(ancestor); + $prop(iclass, '$$included', true); + iclasses.push(iclass); + } + var includer_ancestors = Opal.ancestors(includer), + chain = chain_iclasses(iclasses), + start_chain_after, + end_chain_on; + + if (includer_ancestors.indexOf(module) === -1) { + // first time include + + // includer -> chain.first -> ...chain... -> chain.last -> includer.parent + start_chain_after = includer.$$prototype; + end_chain_on = Object.getPrototypeOf(includer.$$prototype); + } else { + // The module has been already included, + // we don't need to put it into the ancestors chain again, + // but this module may have new included modules. + // If it's true we need to copy them. + // + // The simplest way is to replace ancestors chain from + // parent + // | + // `module` iclass (has a $$root flag) + // | + // ...previos chain of module.included_modules ... + // | + // "next ancestor" (has a $$root flag or is a real class) + // + // to + // parent + // | + // `module` iclass (has a $$root flag) + // | + // ...regenerated chain of module.included_modules + // | + // "next ancestor" (has a $$root flag or is a real class) + // + // because there are no intermediate classes between `parent` and `next ancestor`. + // It doesn't break any prototypes of other objects as we don't change class references. + + var parent = includer.$$prototype, module_iclass = Object.getPrototypeOf(parent); + + while (module_iclass != null) { + if (module_iclass.$$module === module && isRoot(module_iclass)) { + break; + } + + parent = module_iclass; + module_iclass = Object.getPrototypeOf(module_iclass); + } + + if (module_iclass) { + // module has been directly included + var next_ancestor = Object.getPrototypeOf(module_iclass); + + // skip non-root iclasses (that were recursively included) + while (next_ancestor.hasOwnProperty('$$iclass') && !isRoot(next_ancestor)) { + next_ancestor = Object.getPrototypeOf(next_ancestor); + } + + start_chain_after = parent; + end_chain_on = next_ancestor; + } else { + // module has not been directly included but was in ancestor chain because it was included by another module + // include it directly + start_chain_after = includer.$$prototype; + end_chain_on = Object.getPrototypeOf(includer.$$prototype); + } + } + + $set_proto(start_chain_after, chain.first); + $set_proto(chain.last, end_chain_on); + + // recalculate own_included_modules cache + includer.$$own_included_modules = own_included_modules(includer); + + Opal.const_cache_version++; + }; + + Opal.prepend_features = function(module, prepender) { + // Here we change the ancestors chain from + // + // prepender + // | + // parent + // + // to: + // + // dummy(prepender) + // | + // iclass(module) + // | + // iclass(prepender) + // | + // parent + var module_ancestors = Opal.ancestors(module); + var iclasses = []; + + if (module_ancestors.indexOf(prepender) !== -1) { + throw Opal.ArgumentError.$new('cyclic prepend detected'); + } + + for (var i = 0, length = module_ancestors.length; i < length; i++) { + var ancestor = module_ancestors[i], iclass = create_iclass(ancestor); + $prop(iclass, '$$prepended', true); + iclasses.push(iclass); + } + + var chain = chain_iclasses(iclasses), + dummy_prepender = prepender.$$prototype, + previous_parent = Object.getPrototypeOf(dummy_prepender), + prepender_iclass, + start_chain_after, + end_chain_on; + + if (dummy_prepender.hasOwnProperty('$$dummy')) { + // The module already has some prepended modules + // which means that we don't need to make it "dummy" + prepender_iclass = dummy_prepender.$$define_methods_on; + } else { + // Making the module "dummy" + prepender_iclass = create_dummy_iclass(prepender); + flush_methods_in(prepender); + $prop(dummy_prepender, '$$dummy', true); + $prop(dummy_prepender, '$$define_methods_on', prepender_iclass); + + // Converting + // dummy(prepender) -> previous_parent + // to + // dummy(prepender) -> iclass(prepender) -> previous_parent + $set_proto(dummy_prepender, prepender_iclass); + $set_proto(prepender_iclass, previous_parent); + } + + var prepender_ancestors = Opal.ancestors(prepender); + + if (prepender_ancestors.indexOf(module) === -1) { + // first time prepend + + start_chain_after = dummy_prepender; + + // next $$root or prepender_iclass or non-$$iclass + end_chain_on = Object.getPrototypeOf(dummy_prepender); + while (end_chain_on != null) { + if ( + end_chain_on.hasOwnProperty('$$root') || + end_chain_on === prepender_iclass || + !end_chain_on.hasOwnProperty('$$iclass') + ) { + break; + } + + end_chain_on = Object.getPrototypeOf(end_chain_on); + } + } else { + throw Opal.RuntimeError.$new("Prepending a module multiple times is not supported"); + } + + $set_proto(start_chain_after, chain.first); + $set_proto(chain.last, end_chain_on); + + // recalculate own_prepended_modules cache + prepender.$$own_prepended_modules = own_prepended_modules(prepender); + + Opal.const_cache_version++; + }; + + function flush_methods_in(module) { + var proto = module.$$prototype, + props = Object.getOwnPropertyNames(proto); + + for (var i = 0; i < props.length; i++) { + var prop = props[i]; + if (Opal.is_method(prop)) { + delete proto[prop]; + } + } + } + + function create_iclass(module) { + var iclass = create_dummy_iclass(module); + + if (module.$$is_module) { + module.$$iclasses.push(iclass); + } + + return iclass; + } + + // Dummy iclass doesn't receive updates when the module gets a new method. + function create_dummy_iclass(module) { + var iclass = {}, + proto = module.$$prototype; + + if (proto.hasOwnProperty('$$dummy')) { + proto = proto.$$define_methods_on; + } + + var props = Object.getOwnPropertyNames(proto), + length = props.length, i; + + for (i = 0; i < length; i++) { + var prop = props[i]; + $prop(iclass, prop, proto[prop]); + } + + $prop(iclass, '$$iclass', true); + $prop(iclass, '$$module', module); + + return iclass; + } + + function chain_iclasses(iclasses) { + var length = iclasses.length, first = iclasses[0]; + + $prop(first, '$$root', true); + + if (length === 1) { + return { first: first, last: first }; + } + + var previous = first; + + for (var i = 1; i < length; i++) { + var current = iclasses[i]; + $set_proto(previous, current); + previous = current; + } + + + return { first: iclasses[0], last: iclasses[length - 1] }; + } + + // For performance, some core Ruby classes are toll-free bridged to their + // native JavaScript counterparts (e.g. a Ruby Array is a JavaScript Array). + // + // This method is used to setup a native constructor (e.g. Array), to have + // its prototype act like a normal Ruby class. Firstly, a new Ruby class is + // created using the native constructor so that its prototype is set as the + // target for the new class. Note: all bridged classes are set to inherit + // from Object. + // + // Example: + // + // Opal.bridge(self, Function); + // + // @param klass [Class] the Ruby class to bridge + // @param constructor [JS.Function] native JavaScript constructor to use + // @return [Class] returns the passed Ruby class + // + Opal.bridge = function(native_klass, klass) { + if (native_klass.hasOwnProperty('$$bridge')) { + throw Opal.ArgumentError.$new("already bridged"); + } + + // constructor is a JS function with a prototype chain like: + // - constructor + // - super + // + // What we need to do is to inject our class (with its prototype chain) + // between constructor and super. For example, after injecting ::Object + // into JS String we get: + // + // - constructor (window.String) + // - Opal.Object + // - Opal.Kernel + // - Opal.BasicObject + // - super (window.Object) + // - null + // + $prop(native_klass, '$$bridge', klass); + $set_proto(native_klass.prototype, (klass.$$super || Opal.Object).$$prototype); + $prop(klass, '$$prototype', native_klass.prototype); + + $prop(klass.$$prototype, '$$class', klass); + $prop(klass, '$$constructor', native_klass); + $prop(klass, '$$bridge', true); + }; + + function protoToModule(proto) { + if (proto.hasOwnProperty('$$dummy')) { + return; + } else if (proto.hasOwnProperty('$$iclass')) { + return proto.$$module; + } else if (proto.hasOwnProperty('$$class')) { + return proto.$$class; + } + } + + function own_ancestors(module) { + return module.$$own_prepended_modules.concat([module]).concat(module.$$own_included_modules); + } + + // The Array of ancestors for a given module/class + Opal.ancestors = function(module) { + if (!module) { return []; } + + if (module.$$ancestors_cache_version === Opal.const_cache_version) { + return module.$$ancestors; + } + + var result = [], i, mods, length; + + for (i = 0, mods = own_ancestors(module), length = mods.length; i < length; i++) { + result.push(mods[i]); + } + + if (module.$$super) { + for (i = 0, mods = Opal.ancestors(module.$$super), length = mods.length; i < length; i++) { + result.push(mods[i]); + } + } + + module.$$ancestors_cache_version = Opal.const_cache_version; + module.$$ancestors = result; + + return result; + }; + + Opal.included_modules = function(module) { + var result = [], mod = null, proto = Object.getPrototypeOf(module.$$prototype); + + for (; proto && Object.getPrototypeOf(proto); proto = Object.getPrototypeOf(proto)) { + mod = protoToModule(proto); + if (mod && mod.$$is_module && proto.$$iclass && proto.$$included) { + result.push(mod); + } + } + + return result; + }; + + + // Method Missing + // -------------- + + // Methods stubs are used to facilitate method_missing in opal. A stub is a + // placeholder function which just calls `method_missing` on the receiver. + // If no method with the given name is actually defined on an object, then it + // is obvious to say that the stub will be called instead, and then in turn + // method_missing will be called. + // + // When a file in ruby gets compiled to javascript, it includes a call to + // this function which adds stubs for every method name in the compiled file. + // It should then be safe to assume that method_missing will work for any + // method call detected. + // + // Method stubs are added to the BasicObject prototype, which every other + // ruby object inherits, so all objects should handle method missing. A stub + // is only added if the given property name (method name) is not already + // defined. + // + // Note: all ruby methods have a `$` prefix in javascript, so all stubs will + // have this prefix as well (to make this method more performant). + // + // Opal.add_stubs("foo,bar,baz="); + // + // All stub functions will have a private `$$stub` property set to true so + // that other internal methods can detect if a method is just a stub or not. + // `Kernel#respond_to?` uses this property to detect a methods presence. + // + // @param stubs [Array] an array of method stubs to add + // @return [undefined] + Opal.add_stubs = function(stubs) { + var proto = Opal.BasicObject.$$prototype; + var stub, existing_method; + stubs = stubs.split(','); + + for (var i = 0, length = stubs.length; i < length; i++) { + stub = '$'+stubs[i], existing_method = proto[stub]; + + if (existing_method == null || existing_method.$$stub) { + Opal.add_stub_for(proto, stub); + } + } + }; + + // Add a method_missing stub function to the given prototype for the + // given name. + // + // @param prototype [Prototype] the target prototype + // @param stub [String] stub name to add (e.g. "$foo") + // @return [undefined] + Opal.add_stub_for = function(prototype, stub) { + // Opal.stub_for(stub) is the method_missing_stub + $prop(prototype, stub, Opal.stub_for(stub)); + }; + + // Generate the method_missing stub for a given method name. + // + // @param method_name [String] The js-name of the method to stub (e.g. "$foo") + // @return [undefined] + Opal.stub_for = function(method_name) { + + function method_missing_stub() { + // Copy any given block onto the method_missing dispatcher + this.$method_missing.$$p = method_missing_stub.$$p; + + // Set block property to null ready for the next call (stop false-positives) + delete method_missing_stub.$$p; + + // call method missing with correct args (remove '$' prefix on method name) + var args_ary = new Array(arguments.length); + for(var i = 0, l = args_ary.length; i < l; i++) { args_ary[i] = arguments[i]; } + + return this.$method_missing.apply(this, [method_name.slice(1)].concat(args_ary)); + } + + method_missing_stub.$$stub = true; + + return method_missing_stub; + }; + + + // Methods + // ------- + + // Arity count error dispatcher for methods + // + // @param actual [Fixnum] number of arguments given to method + // @param expected [Fixnum] expected number of arguments + // @param object [Object] owner of the method +meth+ + // @param meth [String] method name that got wrong number of arguments + // @raise [ArgumentError] + Opal.ac = function(actual, expected, object, meth) { + var inspect = ''; + if (object.$$is_a_module) { + inspect += object.$$name + '.'; + } + else { + inspect += object.$$class.$$name + '#'; + } + inspect += meth; + + throw Opal.ArgumentError.$new('[' + inspect + '] wrong number of arguments (given ' + actual + ', expected ' + expected + ')'); + }; + + // Arity count error dispatcher for blocks + // + // @param actual [Fixnum] number of arguments given to block + // @param expected [Fixnum] expected number of arguments + // @param context [Object] context of the block definition + // @raise [ArgumentError] + Opal.block_ac = function(actual, expected, context) { + var inspect = "`block in " + context + "'"; + + throw Opal.ArgumentError.$new(inspect + ': wrong number of arguments (given ' + actual + ', expected ' + expected + ')'); + }; + + // Super dispatcher + Opal.find_super = function(obj, mid, current_func, defcheck, allow_stubs) { + var jsid = '$' + mid, ancestors, super_method; + + if (obj.hasOwnProperty('$$meta')) { + ancestors = Opal.ancestors(obj.$$meta); + } else { + ancestors = Opal.ancestors(obj.$$class); + } + + var current_index = ancestors.indexOf(current_func.$$owner); + + for (var i = current_index + 1; i < ancestors.length; i++) { + var ancestor = ancestors[i], + proto = ancestor.$$prototype; + + if (proto.hasOwnProperty('$$dummy')) { + proto = proto.$$define_methods_on; + } + + if (proto.hasOwnProperty(jsid)) { + super_method = proto[jsid]; + break; + } + } + + if (!defcheck && super_method && super_method.$$stub && obj.$method_missing.$$pristine) { + // method_missing hasn't been explicitly defined + throw Opal.NoMethodError.$new('super: no superclass method `'+mid+"' for "+obj, mid); + } + + return (super_method.$$stub && !allow_stubs) ? null : super_method; + }; + + // Iter dispatcher for super in a block + Opal.find_block_super = function(obj, jsid, current_func, defcheck, implicit) { + var call_jsid = jsid; + + if (!current_func) { + throw Opal.RuntimeError.$new("super called outside of method"); + } + + if (implicit && current_func.$$define_meth) { + throw Opal.RuntimeError.$new("implicit argument passing of super from method defined by define_method() is not supported. Specify all arguments explicitly"); + } + + if (current_func.$$def) { + call_jsid = current_func.$$jsid; + } + + return Opal.find_super(obj, call_jsid, current_func, defcheck); + }; + + // @deprecated + Opal.find_super_dispatcher = Opal.find_super; + + // @deprecated + Opal.find_iter_super_dispatcher = Opal.find_block_super; + + // Used to return as an expression. Sometimes, we can't simply return from + // a javascript function as if we were a method, as the return is used as + // an expression, or even inside a block which must "return" to the outer + // method. This helper simply throws an error which is then caught by the + // method. This approach is expensive, so it is only used when absolutely + // needed. + // + Opal.ret = function(val) { + Opal.returner.$v = val; + throw Opal.returner; + }; + + // Used to break out of a block. + Opal.brk = function(val, breaker) { + breaker.$v = val; + throw breaker; + }; + + // Builds a new unique breaker, this is to avoid multiple nested breaks to get + // in the way of each other. + Opal.new_brk = function() { + return new Error('unexpected break'); + }; + + // handles yield calls for 1 yielded arg + Opal.yield1 = function(block, arg) { + if (typeof(block) !== "function") { + throw Opal.LocalJumpError.$new("no block given"); + } + + var has_mlhs = block.$$has_top_level_mlhs_arg, + has_trailing_comma = block.$$has_trailing_comma_in_args; + + if (block.length > 1 || ((has_mlhs || has_trailing_comma) && block.length === 1)) { + arg = Opal.to_ary(arg); + } + + if ((block.length > 1 || (has_trailing_comma && block.length === 1)) && arg.$$is_array) { + return block.apply(null, arg); + } + else { + return block(arg); + } + }; + + // handles yield for > 1 yielded arg + Opal.yieldX = function(block, args) { + if (typeof(block) !== "function") { + throw Opal.LocalJumpError.$new("no block given"); + } + + if (block.length > 1 && args.length === 1) { + if (args[0].$$is_array) { + return block.apply(null, args[0]); + } + } + + if (!args.$$is_array) { + var args_ary = new Array(args.length); + for(var i = 0, l = args_ary.length; i < l; i++) { args_ary[i] = args[i]; } + + return block.apply(null, args_ary); + } + + return block.apply(null, args); + }; + + // Finds the corresponding exception match in candidates. Each candidate can + // be a value, or an array of values. Returns null if not found. + Opal.rescue = function(exception, candidates) { + for (var i = 0; i < candidates.length; i++) { + var candidate = candidates[i]; + + if (candidate.$$is_array) { + var result = Opal.rescue(exception, candidate); + + if (result) { + return result; + } + } + else if (candidate === Opal.JS.Error) { + return candidate; + } + else if (candidate['$==='](exception)) { + return candidate; + } + } + + return null; + }; + + Opal.is_a = function(object, klass) { + if (klass != null && object.$$meta === klass || object.$$class === klass) { + return true; + } + + if (object.$$is_number && klass.$$is_number_class) { + return (klass.$$is_integer_class) ? (object % 1) === 0 : true; + } + + var i, length, ancestors = Opal.ancestors(object.$$is_class ? Opal.get_singleton_class(object) : (object.$$meta || object.$$class)); + + for (i = 0, length = ancestors.length; i < length; i++) { + if (ancestors[i] === klass) { + return true; + } + } + + return false; + }; + + // Helpers for extracting kwsplats + // Used for: { **h } + Opal.to_hash = function(value) { + if (value.$$is_hash) { + return value; + } + else if (value['$respond_to?']('to_hash', true)) { + var hash = value.$to_hash(); + if (hash.$$is_hash) { + return hash; + } + else { + throw Opal.TypeError.$new("Can't convert " + value.$$class + + " to Hash (" + value.$$class + "#to_hash gives " + hash.$$class + ")"); + } + } + else { + throw Opal.TypeError.$new("no implicit conversion of " + value.$$class + " into Hash"); + } + }; + + // Helpers for implementing multiple assignment + // Our code for extracting the values and assigning them only works if the + // return value is a JS array. + // So if we get an Array subclass, extract the wrapped JS array from it + + // Used for: a, b = something (no splat) + Opal.to_ary = function(value) { + if (value.$$is_array) { + return value; + } + else if (value['$respond_to?']('to_ary', true)) { + var ary = value.$to_ary(); + if (ary === nil) { + return [value]; + } + else if (ary.$$is_array) { + return ary; + } + else { + throw Opal.TypeError.$new("Can't convert " + value.$$class + + " to Array (" + value.$$class + "#to_ary gives " + ary.$$class + ")"); + } + } + else { + return [value]; + } + }; + + // Used for: a, b = *something (with splat) + Opal.to_a = function(value) { + if (value.$$is_array) { + // A splatted array must be copied + return value.slice(); + } + else if (value['$respond_to?']('to_a', true)) { + var ary = value.$to_a(); + if (ary === nil) { + return [value]; + } + else if (ary.$$is_array) { + return ary; + } + else { + throw Opal.TypeError.$new("Can't convert " + value.$$class + + " to Array (" + value.$$class + "#to_a gives " + ary.$$class + ")"); + } + } + else { + return [value]; + } + }; + + // Used for extracting keyword arguments from arguments passed to + // JS function. If provided +arguments+ list doesn't have a Hash + // as a last item, returns a blank Hash. + // + // @param parameters [Array] + // @return [Hash] + // + Opal.extract_kwargs = function(parameters) { + var kwargs = parameters[parameters.length - 1]; + if (kwargs != null && Opal.respond_to(kwargs, '$to_hash', true)) { + $splice.call(parameters, parameters.length - 1); + return kwargs.$to_hash(); + } + else { + return Opal.hash2([], {}); + } + }; + + // Used to get a list of rest keyword arguments. Method takes the given + // keyword args, i.e. the hash literal passed to the method containing all + // keyword arguemnts passed to method, as well as the used args which are + // the names of required and optional arguments defined. This method then + // just returns all key/value pairs which have not been used, in a new + // hash literal. + // + // @param given_args [Hash] all kwargs given to method + // @param used_args [Object] all keys used as named kwargs + // @return [Hash] + // + Opal.kwrestargs = function(given_args, used_args) { + var keys = [], + map = {}, + key , + given_map = given_args.$$smap; + + for (key in given_map) { + if (!used_args[key]) { + keys.push(key); + map[key] = given_map[key]; + } + } + + return Opal.hash2(keys, map); + }; + + function apply_blockopts(block, blockopts) { + if (typeof(blockopts) === 'number') { + block.$$arity = blockopts; + } + else if (typeof(blockopts) === 'object') { + Object.assign(block, blockopts); + } + } + + // Calls passed method on a ruby object with arguments and block: + // + // Can take a method or a method name. + // + // 1. When method name gets passed it invokes it by its name + // and calls 'method_missing' when object doesn't have this method. + // Used internally by Opal to invoke method that takes a block or a splat. + // 2. When method (i.e. method body) gets passed, it doesn't trigger 'method_missing' + // because it doesn't know the name of the actual method. + // Used internally by Opal to invoke 'super'. + // + // @example + // var my_array = [1, 2, 3, 4] + // Opal.send(my_array, 'length') # => 4 + // Opal.send(my_array, my_array.$length) # => 4 + // + // Opal.send(my_array, 'reverse!') # => [4, 3, 2, 1] + // Opal.send(my_array, my_array['$reverse!']') # => [4, 3, 2, 1] + // + // @param recv [Object] ruby object + // @param method [Function, String] method body or name of the method + // @param args [Array] arguments that will be passed to the method call + // @param block [Function] ruby block + // @param blockopts [Object, Number] optional properties to set on the block + // @return [Object] returning value of the method call + Opal.send = function(recv, method, args, block, blockopts) { + var body; + + apply_blockopts(block, blockopts); + + if (typeof(method) === 'function') { + body = method; + method = null; + } else if (typeof(method) === 'string') { + body = recv['$'+method]; + } else { + throw Opal.NameError.$new("Passed method should be a string or a function"); + } + + return Opal.send2(recv, body, method, args, block); + }; + + Opal.send2 = function(recv, body, method, args, block, blockopts) { + if (body == null && method != null && recv.$method_missing) { + body = recv.$method_missing; + args = [method].concat(args); + } + + apply_blockopts(block, blockopts); + + if (typeof block === 'function') body.$$p = block; + return body.apply(recv, args); + }; + + Opal.refined_send = function(refinement_groups, recv, method, args, block, blockopts) { + var i, j, k, ancestors, ancestor, refinements, refinement, refine_modules, refine_module, body; + + if (recv.hasOwnProperty('$$meta')) { + ancestors = Opal.ancestors(recv.$$meta); + } else { + ancestors = Opal.ancestors(recv.$$class); + } + + apply_blockopts(block, blockopts); + + // For all ancestors that there are, starting from the closest to the furthest... + for (i = 0; i < ancestors.length; i++) { + ancestor = Opal.id(ancestors[i]); + // For all refinement groups there are, starting from the closest scope to the furthest... + for (j = 0; j < refinement_groups.length; j++) { + refinements = refinement_groups[j]; + // For all refinements there are, starting from the last `using` call to the furthest... + for (k = refinements.length - 1; k >= 0; k--) { + refinement = refinements[k]; + if (typeof refinement.$$refine_modules === 'undefined') continue; + // A single module being given as an argument of the `using` call contains multiple + // refinement modules + refine_modules = refinement.$$refine_modules; + // Does this module refine a given call for a given ancestor module? + if (typeof refine_modules[ancestor] !== 'undefined') { + refine_module = refine_modules[ancestor]; + // Does this module define a method we want to call? + if (typeof refine_module.$$prototype['$'+method] !== 'undefined') { + body = refine_module.$$prototype['$'+method]; + return Opal.send2(recv, body, method, args, block); + } + } + } + } + } + + return Opal.send(recv, method, args, block); + }; + + Opal.lambda = function(block, blockopts) { + block.$$is_lambda = true; + + apply_blockopts(block, blockopts); + + return block; + }; + + // Used to define methods on an object. This is a helper method, used by the + // compiled source to define methods on special case objects when the compiler + // can not determine the destination object, or the object is a Module + // instance. This can get called by `Module#define_method` as well. + // + // ## Modules + // + // Any method defined on a module will come through this runtime helper. + // The method is added to the module body, and the owner of the method is + // set to be the module itself. This is used later when choosing which + // method should show on a class if more than 1 included modules define + // the same method. Finally, if the module is in `module_function` mode, + // then the method is also defined onto the module itself. + // + // ## Classes + // + // This helper will only be called for classes when a method is being + // defined indirectly; either through `Module#define_method`, or by a + // literal `def` method inside an `instance_eval` or `class_eval` body. In + // either case, the method is simply added to the class' prototype. A special + // exception exists for `BasicObject` and `Object`. These two classes are + // special because they are used in toll-free bridged classes. In each of + // these two cases, extra work is required to define the methods on toll-free + // bridged class' prototypes as well. + // + // ## Objects + // + // If a simple ruby object is the object, then the method is simply just + // defined on the object as a singleton method. This would be the case when + // a method is defined inside an `instance_eval` block. + // + // @param obj [Object, Class] the actual obj to define method for + // @param jsid [String] the JavaScript friendly method name (e.g. '$foo') + // @param body [JS.Function] the literal JavaScript function used as method + // @param blockopts [Object, Number] optional properties to set on the body + // @return [null] + // + Opal.def = function(obj, jsid, body, blockopts) { + apply_blockopts(body, blockopts); + + // Special case for a method definition in the + // top-level namespace + if (obj === Opal.top) { + return Opal.defn(Opal.Object, jsid, body); + } + // if instance_eval is invoked on a module/class, it sets inst_eval_mod + else if (!obj.$$eval && obj.$$is_a_module) { + return Opal.defn(obj, jsid, body); + } + else { + return Opal.defs(obj, jsid, body); + } + }; + + // Define method on a module or class (see Opal.def). + Opal.defn = function(module, jsid, body) { + body.displayName = jsid; + body.$$owner = module; + + var name = jsid.substr(1); + + var proto = module.$$prototype; + if (proto.hasOwnProperty('$$dummy')) { + proto = proto.$$define_methods_on; + } + $prop(proto, jsid, body); + + if (module.$$is_module) { + if (module.$$module_function) { + Opal.defs(module, jsid, body) + } + + for (var i = 0, iclasses = module.$$iclasses, length = iclasses.length; i < length; i++) { + var iclass = iclasses[i]; + $prop(iclass, jsid, body); + } + } + + var singleton_of = module.$$singleton_of; + if (module.$method_added && !module.$method_added.$$stub && !singleton_of) { + module.$method_added(name); + } + else if (singleton_of && singleton_of.$singleton_method_added && !singleton_of.$singleton_method_added.$$stub) { + singleton_of.$singleton_method_added(name); + } + + return name; + }; + + // Define a singleton method on the given object (see Opal.def). + Opal.defs = function(obj, jsid, body, blockopts) { + apply_blockopts(body, blockopts); + + if (obj.$$is_string || obj.$$is_number) { + throw Opal.TypeError.$new("can't define singleton"); + } + return Opal.defn(Opal.get_singleton_class(obj), jsid, body); + }; + + // Called from #remove_method. + Opal.rdef = function(obj, jsid) { + if (!$has_own.call(obj.$$prototype, jsid)) { + throw Opal.NameError.$new("method '" + jsid.substr(1) + "' not defined in " + obj.$name()); + } + + delete obj.$$prototype[jsid]; + + if (obj.$$is_singleton) { + if (obj.$$prototype.$singleton_method_removed && !obj.$$prototype.$singleton_method_removed.$$stub) { + obj.$$prototype.$singleton_method_removed(jsid.substr(1)); + } + } + else { + if (obj.$method_removed && !obj.$method_removed.$$stub) { + obj.$method_removed(jsid.substr(1)); + } + } + }; + + // Called from #undef_method. + Opal.udef = function(obj, jsid) { + if (!obj.$$prototype[jsid] || obj.$$prototype[jsid].$$stub) { + throw Opal.NameError.$new("method '" + jsid.substr(1) + "' not defined in " + obj.$name()); + } + + Opal.add_stub_for(obj.$$prototype, jsid); + + if (obj.$$is_singleton) { + if (obj.$$prototype.$singleton_method_undefined && !obj.$$prototype.$singleton_method_undefined.$$stub) { + obj.$$prototype.$singleton_method_undefined(jsid.substr(1)); + } + } + else { + if (obj.$method_undefined && !obj.$method_undefined.$$stub) { + obj.$method_undefined(jsid.substr(1)); + } + } + }; + + function is_method_body(body) { + return (typeof(body) === "function" && !body.$$stub); + } + + Opal.alias = function(obj, name, old) { + var id = '$' + name, + old_id = '$' + old, + body, + alias; + + // Aliasing on main means aliasing on Object... + if (typeof obj.$$prototype === 'undefined') { + obj = Opal.Object; + } + + body = obj.$$prototype['$' + old]; + + // When running inside #instance_eval the alias refers to class methods. + if (obj.$$eval) { + return Opal.alias(Opal.get_singleton_class(obj), name, old); + } + + if (!is_method_body(body)) { + var ancestor = obj.$$super; + + while (typeof(body) !== "function" && ancestor) { + body = ancestor[old_id]; + ancestor = ancestor.$$super; + } + + if (!is_method_body(body) && obj.$$is_module) { + // try to look into Object + body = Opal.Object.$$prototype[old_id] + } + + if (!is_method_body(body)) { + throw Opal.NameError.$new("undefined method `" + old + "' for class `" + obj.$name() + "'") + } + } + + // If the body is itself an alias use the original body + // to keep the max depth at 1. + if (body.$$alias_of) body = body.$$alias_of; + + // We need a wrapper because otherwise properties + // would be overwritten on the original body. + alias = function() { + var block = alias.$$p, args, i, ii; + + args = new Array(arguments.length); + for(i = 0, ii = arguments.length; i < ii; i++) { + args[i] = arguments[i]; + } + + delete alias.$$p; + + return Opal.send(this, body, args, block); + }; + + // Assign the 'length' value with defineProperty because + // in strict mode the property is not writable. + // It doesn't work in older browsers (like Chrome 38), where + // an exception is thrown breaking Opal altogether. + try { + Object.defineProperty(alias, 'length', { value: body.length }); + } catch (e) {} + + // Try to make the browser pick the right name + alias.displayName = name; + + alias.$$arity = body.$$arity; + alias.$$parameters = body.$$parameters; + alias.$$source_location = body.$$source_location; + alias.$$alias_of = body; + alias.$$alias_name = name; + + Opal.defn(obj, id, alias); + + return obj; + }; + + Opal.alias_gvar = function(new_name, old_name) { + Object.defineProperty(Opal.gvars, new_name, { + configurable: true, + enumerable: true, + get: function() { + return Opal.gvars[old_name]; + }, + set: function(new_value) { + Opal.gvars[old_name] = new_value; + } + }); + return nil; + } + + Opal.alias_native = function(obj, name, native_name) { + var id = '$' + name, + body = obj.$$prototype[native_name]; + + if (typeof(body) !== "function" || body.$$stub) { + throw Opal.NameError.$new("undefined native method `" + native_name + "' for class `" + obj.$name() + "'") + } + + Opal.defn(obj, id, body); + + return obj; + }; + + + // Hashes + // ------ + + Opal.hash_init = function(hash) { + hash.$$smap = Object.create(null); + hash.$$map = Object.create(null); + hash.$$keys = []; + }; + + Opal.hash_clone = function(from_hash, to_hash) { + to_hash.$$none = from_hash.$$none; + to_hash.$$proc = from_hash.$$proc; + + for (var i = 0, keys = from_hash.$$keys, smap = from_hash.$$smap, len = keys.length, key, value; i < len; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = smap[key]; + } else { + value = key.value; + key = key.key; + } + + Opal.hash_put(to_hash, key, value); + } + }; + + Opal.hash_put = function(hash, key, value) { + if (key.$$is_string) { + if (!$has_own.call(hash.$$smap, key)) { + hash.$$keys.push(key); + } + hash.$$smap[key] = value; + return; + } + + var key_hash, bucket, last_bucket; + key_hash = hash.$$by_identity ? Opal.id(key) : key.$hash(); + + if (!$has_own.call(hash.$$map, key_hash)) { + bucket = {key: key, key_hash: key_hash, value: value}; + hash.$$keys.push(bucket); + hash.$$map[key_hash] = bucket; + return; + } + + bucket = hash.$$map[key_hash]; + + while (bucket) { + if (key === bucket.key || key['$eql?'](bucket.key)) { + last_bucket = undefined; + bucket.value = value; + break; + } + last_bucket = bucket; + bucket = bucket.next; + } + + if (last_bucket) { + bucket = {key: key, key_hash: key_hash, value: value}; + hash.$$keys.push(bucket); + last_bucket.next = bucket; + } + }; + + Opal.hash_get = function(hash, key) { + if (key.$$is_string) { + if ($has_own.call(hash.$$smap, key)) { + return hash.$$smap[key]; + } + return; + } + + var key_hash, bucket; + key_hash = hash.$$by_identity ? Opal.id(key) : key.$hash(); + + if ($has_own.call(hash.$$map, key_hash)) { + bucket = hash.$$map[key_hash]; + + while (bucket) { + if (key === bucket.key || key['$eql?'](bucket.key)) { + return bucket.value; + } + bucket = bucket.next; + } + } + }; + + Opal.hash_delete = function(hash, key) { + var i, keys = hash.$$keys, length = keys.length, value, key_tmp; + + if (key.$$is_string) { + if (typeof key !== "string") key = key.valueOf(); + + if (!$has_own.call(hash.$$smap, key)) { + return; + } + + for (i = 0; i < length; i++) { + key_tmp = keys[i]; + + if (key_tmp.$$is_string && typeof key_tmp !== "string") { + key_tmp = key_tmp.valueOf(); + } + + if (key_tmp === key) { + keys.splice(i, 1); + break; + } + } + + value = hash.$$smap[key]; + delete hash.$$smap[key]; + return value; + } + + var key_hash = key.$hash(); + + if (!$has_own.call(hash.$$map, key_hash)) { + return; + } + + var bucket = hash.$$map[key_hash], last_bucket; + + while (bucket) { + if (key === bucket.key || key['$eql?'](bucket.key)) { + value = bucket.value; + + for (i = 0; i < length; i++) { + if (keys[i] === bucket) { + keys.splice(i, 1); + break; + } + } + + if (last_bucket && bucket.next) { + last_bucket.next = bucket.next; + } + else if (last_bucket) { + delete last_bucket.next; + } + else if (bucket.next) { + hash.$$map[key_hash] = bucket.next; + } + else { + delete hash.$$map[key_hash]; + } + + return value; + } + last_bucket = bucket; + bucket = bucket.next; + } + }; + + Opal.hash_rehash = function(hash) { + for (var i = 0, length = hash.$$keys.length, key_hash, bucket, last_bucket; i < length; i++) { + + if (hash.$$keys[i].$$is_string) { + continue; + } + + key_hash = hash.$$keys[i].key.$hash(); + + if (key_hash === hash.$$keys[i].key_hash) { + continue; + } + + bucket = hash.$$map[hash.$$keys[i].key_hash]; + last_bucket = undefined; + + while (bucket) { + if (bucket === hash.$$keys[i]) { + if (last_bucket && bucket.next) { + last_bucket.next = bucket.next; + } + else if (last_bucket) { + delete last_bucket.next; + } + else if (bucket.next) { + hash.$$map[hash.$$keys[i].key_hash] = bucket.next; + } + else { + delete hash.$$map[hash.$$keys[i].key_hash]; + } + break; + } + last_bucket = bucket; + bucket = bucket.next; + } + + hash.$$keys[i].key_hash = key_hash; + + if (!$has_own.call(hash.$$map, key_hash)) { + hash.$$map[key_hash] = hash.$$keys[i]; + continue; + } + + bucket = hash.$$map[key_hash]; + last_bucket = undefined; + + while (bucket) { + if (bucket === hash.$$keys[i]) { + last_bucket = undefined; + break; + } + last_bucket = bucket; + bucket = bucket.next; + } + + if (last_bucket) { + last_bucket.next = hash.$$keys[i]; + } + } + }; + + Opal.hash = function() { + var arguments_length = arguments.length, args, hash, i, length, key, value; + + if (arguments_length === 1 && arguments[0].$$is_hash) { + return arguments[0]; + } + + hash = new Opal.Hash(); + Opal.hash_init(hash); + + if (arguments_length === 1 && arguments[0].$$is_array) { + args = arguments[0]; + length = args.length; + + for (i = 0; i < length; i++) { + if (args[i].length !== 2) { + throw Opal.ArgumentError.$new("value not of length 2: " + args[i].$inspect()); + } + + key = args[i][0]; + value = args[i][1]; + + Opal.hash_put(hash, key, value); + } + + return hash; + } + + if (arguments_length === 1) { + args = arguments[0]; + for (key in args) { + if ($has_own.call(args, key)) { + value = args[key]; + + Opal.hash_put(hash, key, value); + } + } + + return hash; + } + + if (arguments_length % 2 !== 0) { + throw Opal.ArgumentError.$new("odd number of arguments for Hash"); + } + + for (i = 0; i < arguments_length; i += 2) { + key = arguments[i]; + value = arguments[i + 1]; + + Opal.hash_put(hash, key, value); + } + + return hash; + }; + + // A faster Hash creator for hashes that just use symbols and + // strings as keys. The map and keys array can be constructed at + // compile time, so they are just added here by the constructor + // function. + // + Opal.hash2 = function(keys, smap) { + var hash = new Opal.Hash(); + + hash.$$smap = smap; + hash.$$map = Object.create(null); + hash.$$keys = keys; + + return hash; + }; + + // Create a new range instance with first and last values, and whether the + // range excludes the last value. + // + Opal.range = function(first, last, exc) { + var range = new Opal.Range(); + range.begin = first; + range.end = last; + range.excl = exc; + + return range; + }; + + // Get the ivar name for a given name. + // Mostly adds a trailing $ to reserved names. + // + Opal.ivar = function(name) { + if ( + // properties + name === "constructor" || + name === "displayName" || + name === "__count__" || + name === "__noSuchMethod__" || + name === "__parent__" || + name === "__proto__" || + + // methods + name === "hasOwnProperty" || + name === "valueOf" + ) + { + return name + "$"; + } + + return name; + }; + + + // Regexps + // ------- + + // Escape Regexp special chars letting the resulting string be used to build + // a new Regexp. + // + Opal.escape_regexp = function(str) { + return str.replace(/([-[\]\/{}()*+?.^$\\| ])/g, '\\$1') + .replace(/[\n]/g, '\\n') + .replace(/[\r]/g, '\\r') + .replace(/[\f]/g, '\\f') + .replace(/[\t]/g, '\\t'); + }; + + // Create a global Regexp from a RegExp object and cache the result + // on the object itself ($$g attribute). + // + Opal.global_regexp = function(pattern) { + if (pattern.global) { + return pattern; // RegExp already has the global flag + } + if (pattern.$$g == null) { + pattern.$$g = new RegExp(pattern.source, (pattern.multiline ? 'gm' : 'g') + (pattern.ignoreCase ? 'i' : '')); + } else { + pattern.$$g.lastIndex = null; // reset lastIndex property + } + return pattern.$$g; + }; + + // Create a global multiline Regexp from a RegExp object and cache the result + // on the object itself ($$gm or $$g attribute). + // + Opal.global_multiline_regexp = function(pattern) { + var result; + if (pattern.multiline) { + if (pattern.global) { + return pattern; // RegExp already has the global and multiline flag + } + // we are using the $$g attribute because the Regexp is already multiline + if (pattern.$$g != null) { + result = pattern.$$g; + } else { + result = pattern.$$g = new RegExp(pattern.source, 'gm' + (pattern.ignoreCase ? 'i' : '')); + } + } else if (pattern.$$gm != null) { + result = pattern.$$gm; + } else { + result = pattern.$$gm = new RegExp(pattern.source, 'gm' + (pattern.ignoreCase ? 'i' : '')); + } + result.lastIndex = null; // reset lastIndex property + return result; + }; + + // Combine multiple regexp parts together + Opal.regexp = function(parts, flags) { + var part; + var ignoreCase = typeof flags !== 'undefined' && flags && flags.indexOf('i') >= 0; + + for (var i = 0, ii = parts.length; i < ii; i++) { + part = parts[i]; + if (part instanceof RegExp) { + if (part.ignoreCase !== ignoreCase) + Opal.Kernel.$warn( + "ignore case doesn't match for " + part.source.$inspect(), + Opal.hash({uplevel: 1}) + ) + + part = part.source; + } + if (part === '') part = '(?:' + part + ')'; + parts[i] = part; + } + + if (flags) { + return new RegExp(parts.join(''), flags); + } else { + return new RegExp(parts.join('')); + } + }; + + // Require system + // -------------- + + Opal.modules = {}; + Opal.loaded_features = ['corelib/runtime']; + Opal.current_dir = '.'; + Opal.require_table = {'corelib/runtime': true}; + + Opal.normalize = function(path) { + var parts, part, new_parts = [], SEPARATOR = '/'; + + if (Opal.current_dir !== '.') { + path = Opal.current_dir.replace(/\/*$/, '/') + path; + } + + path = path.replace(/^\.\//, ''); + path = path.replace(/\.(rb|opal|js)$/, ''); + parts = path.split(SEPARATOR); + + for (var i = 0, ii = parts.length; i < ii; i++) { + part = parts[i]; + if (part === '') continue; + (part === '..') ? new_parts.pop() : new_parts.push(part) + } + + return new_parts.join(SEPARATOR); + }; + + Opal.loaded = function(paths) { + var i, l, path; + + for (i = 0, l = paths.length; i < l; i++) { + path = Opal.normalize(paths[i]); + + if (Opal.require_table[path]) { + continue; + } + + Opal.loaded_features.push(path); + Opal.require_table[path] = true; + } + }; + + Opal.load = function(path) { + path = Opal.normalize(path); + + Opal.loaded([path]); + + var module = Opal.modules[path]; + + if (module) { + var retval = module(Opal); + if (typeof Promise !== 'undefined' && retval instanceof Promise) { + // A special case of require having an async top: + // We will need to await it. + return retval.then(function() { return true; }); + } + } + else { + var severity = Opal.config.missing_require_severity; + var message = 'cannot load such file -- ' + path; + + if (severity === "error") { + if (Opal.LoadError) { + throw Opal.LoadError.$new(message) + } else { + throw message + } + } + else if (severity === "warning") { + console.warn('WARNING: LoadError: ' + message); + } + } + + return true; + }; + + Opal.require = function(path) { + path = Opal.normalize(path); + + if (Opal.require_table[path]) { + return false; + } + + return Opal.load(path); + }; + + + // Strings + // ------- + + Opal.encodings = Object.create(null); + + // Sets the encoding on a string, will treat string literals as frozen strings + // raising a FrozenError. + // + // @param str [String] the string on which the encoding should be set + // @param name [String] the canonical name of the encoding + // @param type [String] possible values are either `"encoding"`, `"internal_encoding"`, or `undefined + Opal.set_encoding = function(str, name, type) { + if (typeof type === "undefined") type = "encoding"; + if (typeof str === 'string' || str.$$frozen === true) + throw Opal.FrozenError.$new("can't modify frozen String"); + + var encoding = Opal.find_encoding(name); + + if (encoding === str[type]) { return str; } + + str[type] = encoding; + + return str; + }; + + // Fetches the encoding for the given name or raises ArgumentError. + Opal.find_encoding = function(name) { + var register = Opal.encodings; + var encoding = register[name] || register[name.toUpperCase()]; + if (!encoding) throw Opal.ArgumentError.$new("unknown encoding name - " + name); + return encoding; + } + + // @returns a String object with the encoding set from a string literal + Opal.enc = function(str, name) { + var dup = new String(str); + dup = Opal.set_encoding(dup, name); + dup.internal_encoding = dup.encoding; + return dup + } + + // @returns a String object with the internal encoding set to Binary + Opal.binary = function(str) { + var dup = new String(str); + return Opal.set_encoding(dup, "binary", "internal_encoding"); + } + + Opal.last_promise = null; + Opal.promise_unhandled_exception = false; + + // Run a block of code, but if it returns a Promise, don't run the next + // one, but queue it. + Opal.queue = function(proc) { + if (Opal.last_promise) { + // The async path is taken only if anything before returned a + // Promise(V2). + Opal.last_promise = Opal.last_promise.then(function() { + if (!Opal.promise_unhandled_exception) return proc(Opal); + })['catch'](function(error) { + if (Opal.respond_to(error, '$full_message')) { + error = error.$full_message(); + } + console.error(error); + // Abort further execution + Opal.promise_unhandled_exception = true; + Opal.exit(1); + }); + return Opal.last_promise; + } + else { + var ret = proc(Opal); + if (typeof Promise === 'function' && typeof ret === 'object' && ret instanceof Promise) { + Opal.last_promise = ret; + } + return ret; + } + } + + // Operator helpers + // ---------------- + Opal.rb_plus = function(l,r) { return (typeof(l) === 'number' && typeof(r) === 'number') ? l + r : l['$+'](r); } + Opal.rb_minus = function(l,r) { return (typeof(l) === 'number' && typeof(r) === 'number') ? l - r : l['$-'](r); } + Opal.rb_times = function(l,r) { return (typeof(l) === 'number' && typeof(r) === 'number') ? l * r : l['$*'](r); } + Opal.rb_divide = function(l,r) { return (typeof(l) === 'number' && typeof(r) === 'number') ? l / r : l['$/'](r); } + Opal.rb_lt = function(l,r) { return (typeof(l) === 'number' && typeof(r) === 'number') ? l < r : l['$<'](r); } + Opal.rb_gt = function(l,r) { return (typeof(l) === 'number' && typeof(r) === 'number') ? l > r : l['$>'](r); } + Opal.rb_le = function(l,r) { return (typeof(l) === 'number' && typeof(r) === 'number') ? l <= r : l['$<='](r); } + Opal.rb_ge = function(l,r) { return (typeof(l) === 'number' && typeof(r) === 'number') ? l >= r : l['$>='](r); } + + // Optimized helpers for calls like $truthy((a)['$==='](b)) -> $eqeqeq(a, b) + Opal.eqeq = function(lhs, rhs) { + if ((typeof lhs === 'number' && typeof rhs === 'number') || + (typeof lhs === 'string' && typeof rhs === 'string')) { + return lhs === rhs; + } + return $truthy((lhs)['$=='](rhs)); + }; + Opal.eqeqeq = function(lhs, rhs) { + if ((typeof lhs === 'number' && typeof rhs === 'number') || + (typeof lhs === 'string' && typeof rhs === 'string')) { + return lhs === rhs; + } + return $truthy((lhs)['$==='](rhs)); + }; + Opal.neqeq = function(lhs, rhs) { + if ((typeof lhs === 'number' && typeof rhs === 'number') || + (typeof lhs === 'string' && typeof rhs === 'string')) { + return lhs !== rhs; + } + return $truthy((lhs)['$!='](rhs)); + }; + Opal.not = function(arg) { + if (true === arg) return false; + if (undefined === arg || null === arg || false === arg || nil === arg) return true; + return $truthy(arg['$!']()); + } + + + + // Initialization + // -------------- + Opal.BasicObject = BasicObject = Opal.allocate_class('BasicObject', null); + Opal.Object = _Object = Opal.allocate_class('Object', Opal.BasicObject); + Opal.Module = Module = Opal.allocate_class('Module', Opal.Object); + Opal.Class = Class = Opal.allocate_class('Class', Opal.Module); + Opal.Opal = _Opal = Opal.allocate_module('Opal'); + Opal.Kernel = Kernel = Opal.allocate_module('Kernel'); + + $set_proto(Opal.BasicObject, Opal.Class.$$prototype); + $set_proto(Opal.Object, Opal.Class.$$prototype); + $set_proto(Opal.Module, Opal.Class.$$prototype); + $set_proto(Opal.Class, Opal.Class.$$prototype); + + // BasicObject can reach itself, avoid const_set to skip the $$base_module logic + BasicObject.$$const["BasicObject"] = BasicObject; + + // Assign basic constants + $const_set(_Object, "BasicObject", BasicObject); + $const_set(_Object, "Object", _Object); + $const_set(_Object, "Module", Module); + $const_set(_Object, "Class", Class); + $const_set(_Object, "Opal", _Opal); + $const_set(_Object, "Kernel", Kernel); + + // Fix booted classes to have correct .class value + BasicObject.$$class = Class; + _Object.$$class = Class; + Module.$$class = Class; + Class.$$class = Class; + _Opal.$$class = Module; + Kernel.$$class = Module; + + // Forward .toString() to #to_s + $prop(_Object.$$prototype, 'toString', function() { + var to_s = this.$to_s(); + if (to_s.$$is_string && typeof(to_s) === 'object') { + // a string created using new String('string') + return to_s.valueOf(); + } else { + return to_s; + } + }); + + // Make Kernel#require immediately available as it's needed to require all the + // other corelib files. + $prop(_Object.$$prototype, '$require', Opal.require); + + // Instantiate the main object + Opal.top = new _Object(); + Opal.top.$to_s = Opal.top.$inspect = function() { return 'main' }; + Opal.top.$define_method = top_define_method; + + // Foward calls to define_method on the top object to Object + function top_define_method() { + var args = Opal.slice.call(arguments); + var block = top_define_method.$$p; + delete top_define_method.$$p; + return Opal.send(_Object, 'define_method', args, block) + }; + + // Nil + Opal.NilClass = Opal.allocate_class('NilClass', Opal.Object); + $const_set(_Object, 'NilClass', Opal.NilClass); + nil = Opal.nil = new Opal.NilClass(); + nil.$$id = nil_id; + nil.call = nil.apply = function() { throw Opal.LocalJumpError.$new('no block given'); }; + + // Errors + Opal.breaker = new Error('unexpected break (old)'); + Opal.returner = new Error('unexpected return'); + TypeError.$$super = Error; +}).call(this); +Opal.loaded(["corelib/runtime.js"]); +Opal.modules["corelib/helpers"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $$$ = Opal.$$$, $type_error = Opal.type_error, $coerce_to = Opal.coerce_to, $module = Opal.module, $defs = Opal.defs, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $truthy = Opal.truthy, $Opal = Opal.Opal; + + Opal.add_stubs('===,raise,respond_to?,nil?,__send__,<=>,class,coerce_to!,new,to_s,__id__'); + return (function($base) { + var self = $module($base, 'Opal'); + + + + $defs(self, '$bridge', function $$bridge(constructor, klass) { + + return Opal.bridge(constructor, klass); + }, 2); + $defs(self, '$coerce_to!', function $Opal_coerce_to$excl$1(object, type, method, $a) { + var $post_args, args, coerced = nil; + + + + $post_args = Opal.slice.call(arguments, 3); + + args = $post_args;; + coerced = $coerce_to(object, type, method, args); + if (!$eqeqeq(type, coerced)) { + $Kernel.$raise($type_error(object, type, method, coerced)) + }; + return coerced; + }, -4); + $defs(self, '$coerce_to?', function $Opal_coerce_to$ques$2(object, type, method, $a) { + var $post_args, args, coerced = nil; + + + + $post_args = Opal.slice.call(arguments, 3); + + args = $post_args;; + if (!$truthy(object['$respond_to?'](method))) { + return nil + }; + coerced = $coerce_to(object, type, method, args); + if ($truthy(coerced['$nil?']())) { + return nil + }; + if (!$eqeqeq(type, coerced)) { + $Kernel.$raise($type_error(object, type, method, coerced)) + }; + return coerced; + }, -4); + $defs(self, '$try_convert', function $$try_convert(object, type, method) { + + + if ($eqeqeq(type, object)) { + return object + }; + if ($truthy(object['$respond_to?'](method))) { + return object.$__send__(method) + } else { + return nil + }; + }, 3); + $defs(self, '$compare', function $$compare(a, b) { + var compare = nil; + + + compare = a['$<=>'](b); + if ($truthy(compare === nil)) { + $Kernel.$raise($$$('ArgumentError'), "comparison of " + (a.$class()) + " with " + (b.$class()) + " failed") + }; + return compare; + }, 2); + $defs(self, '$destructure', function $$destructure(args) { + + + if (args.length == 1) { + return args[0]; + } + else if (args.$$is_array) { + return args; + } + else { + var args_ary = new Array(args.length); + for(var i = 0, l = args_ary.length; i < l; i++) { args_ary[i] = args[i]; } + + return args_ary; + } + + }, 1); + $defs(self, '$respond_to?', function $Opal_respond_to$ques$3(obj, method, include_all) { + + + + if (include_all == null) include_all = false;; + + if (obj == null || !obj.$$class) { + return false; + } + ; + return obj['$respond_to?'](method, include_all); + }, -3); + $defs(self, '$instance_variable_name!', function $Opal_instance_variable_name$excl$4(name) { + + + name = $Opal['$coerce_to!'](name, $$$('String'), "to_str"); + if (!$truthy(/^@[a-zA-Z_][a-zA-Z0-9_]*?$/.test(name))) { + $Kernel.$raise($$$('NameError').$new("'" + (name) + "' is not allowed as an instance variable name", name)) + }; + return name; + }, 1); + $defs(self, '$class_variable_name!', function $Opal_class_variable_name$excl$5(name) { + + + name = $Opal['$coerce_to!'](name, $$$('String'), "to_str"); + if ($truthy(name.length < 3 || name.slice(0,2) !== '@@')) { + $Kernel.$raise($$$('NameError').$new("`" + (name) + "' is not allowed as a class variable name", name)) + }; + return name; + }, 1); + $defs(self, '$const_name?', function $Opal_const_name$ques$6(const_name) { + + + if (typeof const_name !== 'string') { + (const_name = $Opal['$coerce_to!'](const_name, $$$('String'), "to_str")) + } + + return const_name[0] === const_name[0].toUpperCase() + + }, 1); + $defs(self, '$const_name!', function $Opal_const_name$excl$7(const_name) { + var $a, self = this; + + + if ($truthy((($a = $$$('::', 'String', 'skip_raise')) ? 'constant' : nil))) { + const_name = $Opal['$coerce_to!'](const_name, $$$('String'), "to_str") + }; + + if (!const_name || const_name[0] != const_name[0].toUpperCase()) { + self.$raise($$$('NameError'), "wrong constant name " + (const_name)) + } + ; + return const_name; + }, 1); + $defs(self, '$pristine', function $$pristine(owner_class, $a) { + var $post_args, method_names; + + + + $post_args = Opal.slice.call(arguments, 1); + + method_names = $post_args;; + + var method_name, method; + for (var i = method_names.length - 1; i >= 0; i--) { + method_name = method_names[i]; + method = owner_class.$$prototype['$'+method_name]; + + if (method && !method.$$stub) { + method.$$pristine = true; + } + } + ; + return nil; + }, -2); + var inspect_stack = []; + return $defs(self, '$inspect', function $$inspect(value) { + var e = nil; + + + ; + var pushed = false; + + return (function() { try { + try { + + + if (value === null) { + // JS null value + return 'null'; + } + else if (value === undefined) { + // JS undefined value + return 'undefined'; + } + else if (typeof value.$$class === 'undefined') { + // JS object / other value that is not bridged + return Object.prototype.toString.apply(value); + } + else if (typeof value.$inspect !== 'function' || value.$inspect.$$stub) { + // BasicObject and friends + return "#<" + (value.$$class) + ":0x" + (value.$__id__().$to_s(16)) + ">" + } + else if (inspect_stack.indexOf(value.$__id__()) !== -1) { + // inspect recursing inside inspect to find out about the + // same object + return "#<" + (value.$$class) + ":0x" + (value.$__id__().$to_s(16)) + ">" + } + else { + // anything supporting Opal + inspect_stack.push(value.$__id__()); + pushed = true; + return value.$inspect(); + } + ; + return nil; + } catch ($err) { + if (Opal.rescue($err, [$$$('Exception')])) {(e = $err) + try { + return "#<" + (value.$$class) + ":0x" + (value.$__id__().$to_s(16)) + ">" + } finally { Opal.pop_exception(); } + } else { throw $err; } + } + } finally { + if (pushed) inspect_stack.pop() + }; })();; + }, -1); + })('::') +}; + +Opal.modules["corelib/module"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $coerce_to = Opal.coerce_to, $const_set = Opal.const_set, $Object = Opal.Object, $klass = Opal.klass, $defs = Opal.defs, $send = Opal.send, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $Module = Opal.Module, $Kernel = Opal.Kernel, $rb_lt = Opal.rb_lt, $rb_gt = Opal.rb_gt, $to_a = Opal.to_a, $hash2 = Opal.hash2, $Opal = Opal.Opal, $eqeq = Opal.eqeq, $lambda = Opal.lambda, $range = Opal.range, $send2 = Opal.send2, $find_super = Opal.find_super, $alias = Opal.alias; + + Opal.add_stubs('module_eval,to_proc,===,raise,equal?,<,>,nil?,attr_reader,attr_writer,warn,attr_accessor,const_name?,class_variable_name!,const_name!,=~,new,inject,split,const_get,==,start_with?,!~,bind,call,class,append_features,included,name,cover?,size,merge,compile,proc,any?,prepend_features,prepended,to_s,__id__,constants,include?,copy_class_variables,copy_constants,class_exec,inspect'); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Module'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs(self, '$allocate', function $$allocate() { + var self = this; + + + var module = Opal.allocate_module(nil, function(){}); + // Link the prototype of Module subclasses + if (self !== Opal.Module) Object.setPrototypeOf(module, self.$$prototype); + return module; + + }, 0); + + $def(self, '$initialize', function $$initialize() { + var block = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + ; + if ((block !== nil)) { + return $send(self, 'module_eval', [], block.$to_proc()) + } else { + return nil + }; + }, 0); + + $def(self, '$===', function $Module_$eq_eq_eq$1(object) { + var self = this; + + + if ($truthy(object == null)) { + return false + }; + return Opal.is_a(object, self);; + }, 1); + + $def(self, '$<', function $Module_$lt$2(other) { + var self = this; + + + if (!$eqeqeq($Module, other)) { + $Kernel.$raise($$$('TypeError'), "compared with non class/module") + }; + + var working = self, + ancestors, + i, length; + + if (working === other) { + return false; + } + + for (i = 0, ancestors = Opal.ancestors(self), length = ancestors.length; i < length; i++) { + if (ancestors[i] === other) { + return true; + } + } + + for (i = 0, ancestors = Opal.ancestors(other), length = ancestors.length; i < length; i++) { + if (ancestors[i] === self) { + return false; + } + } + + return nil; + ; + }, 1); + + $def(self, '$<=', function $Module_$lt_eq$3(other) { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$equal?'](other)))) { + return $ret_or_1 + } else { + return $rb_lt(self, other) + } + }, 1); + + $def(self, '$>', function $Module_$gt$4(other) { + var self = this; + + + if (!$eqeqeq($Module, other)) { + $Kernel.$raise($$$('TypeError'), "compared with non class/module") + }; + return $rb_lt(other, self); + }, 1); + + $def(self, '$>=', function $Module_$gt_eq$5(other) { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$equal?'](other)))) { + return $ret_or_1 + } else { + return $rb_gt(self, other) + } + }, 1); + + $def(self, '$<=>', function $Module_$lt_eq_gt$6(other) { + var self = this, lt = nil; + + + + if (self === other) { + return 0; + } + ; + if (!$eqeqeq($Module, other)) { + return nil + }; + lt = $rb_lt(self, other); + if ($truthy(lt['$nil?']())) { + return nil + }; + if ($truthy(lt)) { + return -1 + } else { + return 1 + }; + }, 1); + + $def(self, '$alias_method', function $$alias_method(newname, oldname) { + var self = this; + + + newname = $coerce_to(newname, $$$('String'), 'to_str'); + oldname = $coerce_to(oldname, $$$('String'), 'to_str'); + Opal.alias(self, newname, oldname); + return self; + }, 2); + + $def(self, '$alias_native', function $$alias_native(mid, jsid) { + var self = this; + + + + if (jsid == null) jsid = mid;; + Opal.alias_native(self, mid, jsid); + return self; + }, -2); + + $def(self, '$ancestors', function $$ancestors() { + var self = this; + + return Opal.ancestors(self); + }, 0); + + $def(self, '$append_features', function $$append_features(includer) { + var self = this; + + + Opal.append_features(self, includer); + return self; + }, 1); + + $def(self, '$attr_accessor', function $$attr_accessor($a) { + var $post_args, names, self = this; + + + + $post_args = Opal.slice.call(arguments); + + names = $post_args;; + $send(self, 'attr_reader', $to_a(names)); + return $send(self, 'attr_writer', $to_a(names)); + }, -1); + + $def(self, '$attr', function $$attr($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + + if (args.length == 2 && (args[1] === true || args[1] === false)) { + self.$warn("optional boolean argument is obsoleted", $hash2(["uplevel"], {"uplevel": 1})) + + args[1] ? self.$attr_accessor(args[0]) : self.$attr_reader(args[0]); + return nil; + } + ; + return $send(self, 'attr_reader', $to_a(args)); + }, -1); + + $def(self, '$attr_reader', function $$attr_reader($a) { + var $post_args, names, self = this; + + + + $post_args = Opal.slice.call(arguments); + + names = $post_args;; + + var proto = self.$$prototype; + + for (var i = names.length - 1; i >= 0; i--) { + var name = names[i], + id = '$' + name, + ivar = Opal.ivar(name); + + // the closure here is needed because name will change at the next + // cycle, I wish we could use let. + var body = (function(ivar) { + return function() { + if (this[ivar] == null) { + return nil; + } + else { + return this[ivar]; + } + }; + })(ivar); + + // initialize the instance variable as nil + Opal.prop(proto, ivar, nil); + + body.$$parameters = []; + body.$$arity = 0; + + Opal.defn(self, id, body); + } + ; + return nil; + }, -1); + + $def(self, '$attr_writer', function $$attr_writer($a) { + var $post_args, names, self = this; + + + + $post_args = Opal.slice.call(arguments); + + names = $post_args;; + + var proto = self.$$prototype; + + for (var i = names.length - 1; i >= 0; i--) { + var name = names[i], + id = '$' + name + '=', + ivar = Opal.ivar(name); + + // the closure here is needed because name will change at the next + // cycle, I wish we could use let. + var body = (function(ivar){ + return function(value) { + return this[ivar] = value; + } + })(ivar); + + body.$$parameters = [['req']]; + body.$$arity = 1; + + // initialize the instance variable as nil + Opal.prop(proto, ivar, nil); + + Opal.defn(self, id, body); + } + ; + return nil; + }, -1); + + $def(self, '$autoload', function $$autoload(const$, path) { + var self = this; + + + if (!$$('Opal')['$const_name?'](const$)) { + $Kernel.$raise($$$('NameError'), "autoload must be constant name: " + (const$)) + } + + if (path == "") { + $Kernel.$raise($$$('ArgumentError'), "empty file name") + } + + if (!self.$$const.hasOwnProperty(const$)) { + if (!self.$$autoload) { + self.$$autoload = {}; + } + Opal.const_cache_version++; + self.$$autoload[const$] = { path: path, loaded: false, required: false, success: false, exception: false }; + } + return nil; + + }, 2); + + $def(self, '$autoload?', function $Module_autoload$ques$7(const$) { + var self = this; + + + if (self.$$autoload && self.$$autoload[const$] && !self.$$autoload[const$].required && !self.$$autoload[const$].success) { + return self.$$autoload[const$].path; + } + + var ancestors = self.$ancestors(); + + for (var i = 0, length = ancestors.length; i < length; i++) { + if (ancestors[i].$$autoload && ancestors[i].$$autoload[const$] && !ancestors[i].$$autoload[const$].required && !ancestors[i].$$autoload[const$].success) { + return ancestors[i].$$autoload[const$].path; + } + } + return nil; + + }, 1); + + $def(self, '$class_variables', function $$class_variables() { + var self = this; + + return Object.keys(Opal.class_variables(self)); + }, 0); + + $def(self, '$class_variable_get', function $$class_variable_get(name) { + var self = this; + + + name = $Opal['$class_variable_name!'](name); + return Opal.class_variable_get(self, name, false);; + }, 1); + + $def(self, '$class_variable_set', function $$class_variable_set(name, value) { + var self = this; + + + name = $Opal['$class_variable_name!'](name); + return Opal.class_variable_set(self, name, value);; + }, 2); + + $def(self, '$class_variable_defined?', function $Module_class_variable_defined$ques$8(name) { + var self = this; + + + name = $Opal['$class_variable_name!'](name); + return Opal.class_variables(self).hasOwnProperty(name);; + }, 1); + + $def(self, '$remove_class_variable', function $$remove_class_variable(name) { + var self = this; + + + name = $Opal['$class_variable_name!'](name); + + if (Opal.hasOwnProperty.call(self.$$cvars, name)) { + var value = self.$$cvars[name]; + delete self.$$cvars[name]; + return value; + } else { + $Kernel.$raise($$$('NameError'), "cannot remove " + (name) + " for " + (self)) + } + ; + }, 1); + + $def(self, '$constants', function $$constants(inherit) { + var self = this; + + + + if (inherit == null) inherit = true;; + return Opal.constants(self, inherit);; + }, -1); + $defs(self, '$constants', function $$constants(inherit) { + var self = this; + + + ; + + if (inherit == null) { + var nesting = (self.$$nesting || []).concat($Object), + constant, constants = {}, + i, ii; + + for(i = 0, ii = nesting.length; i < ii; i++) { + for (constant in nesting[i].$$const) { + constants[constant] = true; + } + } + return Object.keys(constants); + } else { + return Opal.constants(self, inherit) + } + ; + }, -1); + $defs(self, '$nesting', function $$nesting() { + var self = this; + + return self.$$nesting || []; + }, 0); + + $def(self, '$const_defined?', function $Module_const_defined$ques$9(name, inherit) { + var self = this; + + + + if (inherit == null) inherit = true;; + name = $$('Opal')['$const_name!'](name); + if (!$truthy(name['$=~']($$$($Opal, 'CONST_NAME_REGEXP')))) { + $Kernel.$raise($$$('NameError').$new("wrong constant name " + (name), name)) + }; + + var module, modules = [self], module_constants, i, ii; + + // Add up ancestors if inherit is true + if (inherit) { + modules = modules.concat(Opal.ancestors(self)); + + // Add Object's ancestors if it's a module – modules have no ancestors otherwise + if (self.$$is_module) { + modules = modules.concat([$Object]).concat(Opal.ancestors($Object)); + } + } + + for (i = 0, ii = modules.length; i < ii; i++) { + module = modules[i]; + if (module.$$const[name] != null) { return true; } + if ( + module.$$autoload && + module.$$autoload[name] && + !module.$$autoload[name].required && + !module.$$autoload[name].success + ) { + return true; + } + } + + return false; + ; + }, -2); + + $def(self, '$const_get', function $$const_get(name, inherit) { + var self = this; + + + + if (inherit == null) inherit = true;; + name = $$('Opal')['$const_name!'](name); + + if (name.indexOf('::') === 0 && name !== '::'){ + name = name.slice(2); + } + ; + if ($truthy(name.indexOf('::') != -1 && name != '::')) { + return $send(name.$split("::"), 'inject', [self], function $$10(o, c){ + + + if (o == null) o = nil;; + + if (c == null) c = nil;; + return o.$const_get(c);}, 2) + }; + if (!$truthy(name['$=~']($$$($Opal, 'CONST_NAME_REGEXP')))) { + $Kernel.$raise($$$('NameError').$new("wrong constant name " + (name), name)) + }; + + if (inherit) { + return Opal.$$([self], name); + } else { + return Opal.const_get_local(self, name); + } + ; + }, -2); + + $def(self, '$const_missing', function $$const_missing(name) { + var self = this, full_const_name = nil; + + + full_const_name = ($eqeq(self, $Object) ? (name) : ("" + (self) + "::" + (name))); + return $Kernel.$raise($$$('NameError').$new("uninitialized constant " + (full_const_name), name)); + }, 1); + + $def(self, '$const_set', function $$const_set(name, value) { + var self = this; + + + name = $Opal['$const_name!'](name); + if (($truthy(name['$!~']($$$($Opal, 'CONST_NAME_REGEXP'))) || ($truthy(name['$start_with?']("::"))))) { + $Kernel.$raise($$$('NameError').$new("wrong constant name " + (name), name)) + }; + $const_set(self, name, value); + return value; + }, 2); + + $def(self, '$public_constant', function $$public_constant(const_name) { + + return nil + }, 1); + + $def(self, '$define_method', function $$define_method(name, method) { + var block = $$define_method.$$p || nil, self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + delete $$define_method.$$p; + + ; + ; + + if (method === undefined && block === nil) + $Kernel.$raise($$$('ArgumentError'), "tried to create a Proc object without a block") + ; + block = ($truthy(($ret_or_1 = block)) ? ($ret_or_1) : ($eqeqeq($$$('Proc'), ($ret_or_2 = method)) ? (method) : ($eqeqeq($$$('Method'), $ret_or_2) ? (method.$to_proc().$$unbound) : ($eqeqeq($$$('UnboundMethod'), $ret_or_2) ? ($lambda(function $$11($a){var $post_args, args, self = $$11.$$s == null ? this : $$11.$$s, bound = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + bound = method.$bind(self); + return $send(bound, 'call', $to_a(args));}, {$$arity: -1, $$s: self})) : ($Kernel.$raise($$$('TypeError'), "wrong argument type " + (block.$class()) + " (expected Proc/Method)")))))); + + var id = '$' + name; + + block.$$jsid = name; + block.$$s = null; + block.$$def = block; + block.$$define_meth = true; + + return Opal.defn(self, id, block); + ; + }, -2); + + $def(self, '$remove_method', function $$remove_method($a) { + var $post_args, names, self = this; + + + + $post_args = Opal.slice.call(arguments); + + names = $post_args;; + + for (var i = 0, length = names.length; i < length; i++) { + Opal.rdef(self, "$" + names[i]); + } + ; + return self; + }, -1); + + $def(self, '$singleton_class?', function $Module_singleton_class$ques$12() { + var self = this; + + return !!self.$$is_singleton; + }, 0); + + $def(self, '$include', function $$include($a) { + var $post_args, mods, self = this; + + + + $post_args = Opal.slice.call(arguments); + + mods = $post_args;; + + for (var i = mods.length - 1; i >= 0; i--) { + var mod = mods[i]; + + if (!mod.$$is_module) { + $Kernel.$raise($$$('TypeError'), "wrong argument type " + ((mod).$class()) + " (expected Module)"); + } + + (mod).$append_features(self); + (mod).$included(self); + } + ; + return self; + }, -1); + + $def(self, '$included_modules', function $$included_modules() { + var self = this; + + return Opal.included_modules(self); + }, 0); + + $def(self, '$include?', function $Module_include$ques$13(mod) { + var self = this; + + + if (!mod.$$is_module) { + $Kernel.$raise($$$('TypeError'), "wrong argument type " + ((mod).$class()) + " (expected Module)"); + } + + var i, ii, mod2, ancestors = Opal.ancestors(self); + + for (i = 0, ii = ancestors.length; i < ii; i++) { + mod2 = ancestors[i]; + if (mod2 === mod && mod2 !== self) { + return true; + } + } + + return false; + + }, 1); + + $def(self, '$instance_method', function $$instance_method(name) { + var self = this; + + + var meth = self.$$prototype['$' + name]; + + if (!meth || meth.$$stub) { + $Kernel.$raise($$$('NameError').$new("undefined method `" + (name) + "' for class `" + (self.$name()) + "'", name)); + } + + return $$$('UnboundMethod').$new(self, meth.$$owner || self, meth, name); + + }, 1); + + $def(self, '$instance_methods', function $$instance_methods(include_super) { + var self = this; + + + + if (include_super == null) include_super = true;; + + if ($truthy(include_super)) { + return Opal.instance_methods(self); + } else { + return Opal.own_instance_methods(self); + } + ; + }, -1); + + $def(self, '$included', function $$included(mod) { + + return nil + }, 1); + + $def(self, '$extended', function $$extended(mod) { + + return nil + }, 1); + + $def(self, '$extend_object', function $$extend_object(object) { + + return nil + }, 1); + + $def(self, '$method_added', function $$method_added($a) { + var $post_args, $rest_arg; + + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return nil; + }, -1); + + $def(self, '$method_removed', function $$method_removed($a) { + var $post_args, $rest_arg; + + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return nil; + }, -1); + + $def(self, '$method_undefined', function $$method_undefined($a) { + var $post_args, $rest_arg; + + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return nil; + }, -1); + + $def(self, '$module_eval', function $$module_eval($a) { + var block = $$module_eval.$$p || nil, $post_args, args, $b, self = this, string = nil, file = nil, _lineno = nil, default_eval_options = nil, $ret_or_1 = nil, compiling_options = nil, compiled = nil; + + delete $$module_eval.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if (($truthy(block['$nil?']()) && ($truthy(!!Opal.compile)))) { + + if (!$truthy($range(1, 3, false)['$cover?'](args.$size()))) { + $Kernel.$raise($$$('ArgumentError'), "wrong number of arguments (0 for 1..3)") + }; + $b = [].concat($to_a(args)), (string = ($b[0] == null ? nil : $b[0])), (file = ($b[1] == null ? nil : $b[1])), (_lineno = ($b[2] == null ? nil : $b[2])), $b; + default_eval_options = $hash2(["file", "eval"], {"file": ($truthy(($ret_or_1 = file)) ? ($ret_or_1) : ("(eval)")), "eval": true}); + compiling_options = Opal.hash({ arity_check: false }).$merge(default_eval_options); + compiled = $Opal.$compile(string, compiling_options); + block = $send($Kernel, 'proc', [], function $$14(){var self = $$14.$$s == null ? this : $$14.$$s; + + return new Function("Opal,self", "return " + compiled)(Opal, self);}, {$$arity: 0, $$s: self}); + } else if ($truthy(args['$any?']())) { + $Kernel.$raise($$$('ArgumentError'), "" + ("wrong number of arguments (" + (args.$size()) + " for 0)") + "\n\n NOTE:If you want to enable passing a String argument please add \"require 'opal-parser'\" to your script\n") + }; + + var old = block.$$s, + result; + + block.$$s = null; + result = block.apply(self, [self]); + block.$$s = old; + + return result; + ; + }, -1); + + $def(self, '$module_exec', function $$module_exec($a) { + var block = $$module_exec.$$p || nil, $post_args, args, self = this; + + delete $$module_exec.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + + if (block === nil) { + $Kernel.$raise($$$('LocalJumpError'), "no block given") + } + + var block_self = block.$$s, result; + + block.$$s = null; + result = block.apply(self, args); + block.$$s = block_self; + + return result; + ; + }, -1); + + $def(self, '$method_defined?', function $Module_method_defined$ques$15(method) { + var self = this; + + + var body = self.$$prototype['$' + method]; + return (!!body) && !body.$$stub; + + }, 1); + + $def(self, '$module_function', function $$module_function($a) { + var $post_args, methods, self = this; + + + + $post_args = Opal.slice.call(arguments); + + methods = $post_args;; + + if (methods.length === 0) { + self.$$module_function = true; + return nil; + } + else { + for (var i = 0, length = methods.length; i < length; i++) { + var meth = methods[i], + id = '$' + meth, + func = self.$$prototype[id]; + + Opal.defs(self, id, func); + } + return methods.length === 1 ? methods[0] : methods; + } + + return self; + ; + }, -1); + + $def(self, '$name', function $$name() { + var self = this; + + + if (self.$$full_name) { + return self.$$full_name; + } + + var result = [], base = self; + + while (base) { + // Give up if any of the ancestors is unnamed + if (base.$$name === nil || base.$$name == null) return nil; + + result.unshift(base.$$name); + + base = base.$$base_module; + + if (base === $Object) { + break; + } + } + + if (result.length === 0) { + return nil; + } + + return self.$$full_name = result.join('::'); + + }, 0); + + $def(self, '$prepend', function $$prepend($a) { + var $post_args, mods, self = this; + + + + $post_args = Opal.slice.call(arguments); + + mods = $post_args;; + + if (mods.length === 0) { + $Kernel.$raise($$$('ArgumentError'), "wrong number of arguments (given 0, expected 1+)") + } + + for (var i = mods.length - 1; i >= 0; i--) { + var mod = mods[i]; + + if (!mod.$$is_module) { + $Kernel.$raise($$$('TypeError'), "wrong argument type " + ((mod).$class()) + " (expected Module)"); + } + + (mod).$prepend_features(self); + (mod).$prepended(self); + } + ; + return self; + }, -1); + + $def(self, '$prepend_features', function $$prepend_features(prepender) { + var self = this; + + + + if (!self.$$is_module) { + $Kernel.$raise($$$('TypeError'), "wrong argument type " + (self.$class()) + " (expected Module)"); + } + + Opal.prepend_features(self, prepender) + ; + return self; + }, 1); + + $def(self, '$prepended', function $$prepended(mod) { + + return nil + }, 1); + + $def(self, '$remove_const', function $$remove_const(name) { + var self = this; + + return Opal.const_remove(self, name); + }, 1); + + $def(self, '$to_s', function $$to_s() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = Opal.Module.$name.call(self)))) { + return $ret_or_1 + } else { + return "#<" + (self.$$is_module ? 'Module' : 'Class') + ":0x" + (self.$__id__().$to_s(16)) + ">" + } + }, 0); + + $def(self, '$undef_method', function $$undef_method($a) { + var $post_args, names, self = this; + + + + $post_args = Opal.slice.call(arguments); + + names = $post_args;; + + for (var i = 0, length = names.length; i < length; i++) { + Opal.udef(self, "$" + names[i]); + } + ; + return self; + }, -1); + + $def(self, '$instance_variables', function $$instance_variables() { + var self = this, consts = nil; + + + consts = (Opal.Module.$$nesting = $nesting, self.$constants()); + + var result = []; + + for (var name in self) { + if (self.hasOwnProperty(name) && name.charAt(0) !== '$' && name !== 'constructor' && !consts['$include?'](name)) { + result.push('@' + name); + } + } + + return result; + ; + }, 0); + + $def(self, '$dup', function $$dup() { + var $yield = $$dup.$$p || nil, self = this, copy = nil; + + delete $$dup.$$p; + + copy = $send2(self, $find_super(self, 'dup', $$dup, false, true), 'dup', [], $yield); + copy.$copy_class_variables(self); + copy.$copy_constants(self); + return copy; + }, 0); + + $def(self, '$copy_class_variables', function $$copy_class_variables(other) { + var self = this; + + + for (var name in other.$$cvars) { + self.$$cvars[name] = other.$$cvars[name]; + } + + }, 1); + + $def(self, '$copy_constants', function $$copy_constants(other) { + var self = this; + + + var name, other_constants = other.$$const; + + for (name in other_constants) { + $const_set(self, name, other_constants[name]); + } + + }, 1); + + $def(self, '$refine', function $$refine(klass) { + var block = $$refine.$$p || nil, $a, self = this, refinement_module = nil, m = nil, klass_id = nil; + + delete $$refine.$$p; + + ; + $a = [self, nil, nil], (refinement_module = $a[0]), (m = $a[1]), (klass_id = $a[2]), $a; + + klass_id = Opal.id(klass); + if (typeof self.$$refine_modules === "undefined") { + self.$$refine_modules = {}; + } + if (typeof self.$$refine_modules[klass_id] === "undefined") { + m = self.$$refine_modules[klass_id] = $$$('Refinement').$new(); + } + else { + m = self.$$refine_modules[klass_id]; + } + m.refinement_module = refinement_module + m.refined_class = klass + ; + $send(m, 'class_exec', [], block.$to_proc()); + return m; + }, 1); + + $def(self, '$using', function $$using(mod) { + + return $Kernel.$raise("Module#using is not permitted in methods") + }, 1); + $alias(self, "class_eval", "module_eval"); + $alias(self, "class_exec", "module_exec"); + return $alias(self, "inspect", "to_s"); + })('::', null, $nesting); + return (function($base, $super) { + var self = $klass($base, $super, 'Refinement'); + + var $proto = self.$$prototype; + + $proto.refinement_module = $proto.refined_class = nil; + return $def(self, '$inspect', function $$inspect() { + var $yield = $$inspect.$$p || nil, self = this; + + delete $$inspect.$$p; + if ($truthy(self.refinement_module)) { + return "#" + } else { + return $send2(self, $find_super(self, 'inspect', $$inspect, false, true), 'inspect', [], $yield) + } + }, 0) + })('::', $Module); +}; + +Opal.modules["corelib/class"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $klass = Opal.klass, $send = Opal.send, $defs = Opal.defs, $def = Opal.def, $rb_plus = Opal.rb_plus, $send2 = Opal.send2, $find_super = Opal.find_super, $alias = Opal.alias; + + Opal.add_stubs('require,class_eval,to_proc,+,subclasses,flatten,map,initialize_copy,allocate,name,to_s'); + + self.$require("corelib/module"); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Class'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs(self, '$new', function $Class_new$1(superclass) { + var block = $Class_new$1.$$p || nil; + + delete $Class_new$1.$$p; + + ; + + if (superclass == null) superclass = $$('Object');; + + if (!superclass.$$is_class) { + throw Opal.TypeError.$new("superclass must be a Class"); + } + + var klass = Opal.allocate_class(nil, superclass); + superclass.$inherited(klass); + ((block !== nil) ? ($send((klass), 'class_eval', [], block.$to_proc())) : nil) + return klass; + ; + }, -1); + + $def(self, '$allocate', function $$allocate() { + var self = this; + + + var obj = new self.$$constructor(); + obj.$$id = Opal.uid(); + return obj; + + }, 0); + + $def(self, '$descendants', function $$descendants() { + var self = this; + + return $rb_plus(self.$subclasses(), $send(self.$subclasses(), 'map', [], "descendants".$to_proc()).$flatten()) + }, 0); + + $def(self, '$inherited', function $$inherited(cls) { + + return nil + }, 1); + + $def(self, '$initialize_dup', function $$initialize_dup(original) { + var self = this; + + + self.$initialize_copy(original); + + self.$$name = null; + self.$$full_name = null; + ; + }, 1); + + $def(self, '$new', function $Class_new$2($a) { + var block = $Class_new$2.$$p || nil, $post_args, args, self = this; + + delete $Class_new$2.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + + var object = self.$allocate(); + Opal.send(object, object.$initialize, args, block); + return object; + ; + }, -1); + + $def(self, '$subclasses', function $$subclasses() { + var self = this; + + + if (typeof WeakRef !== 'undefined') { + var i, subclass, out = []; + for (i = 0; i < self.$$subclasses.length; i++) { + subclass = self.$$subclasses[i].deref(); + if (subclass !== undefined) { + out.push(subclass); + } + } + return out; + } + else { + return self.$$subclasses; + } + + }, 0); + + $def(self, '$superclass', function $$superclass() { + var self = this; + + return self.$$super || nil; + }, 0); + + $def(self, '$to_s', function $$to_s() { + var $yield = $$to_s.$$p || nil, self = this; + + delete $$to_s.$$p; + + var singleton_of = self.$$singleton_of; + + if (singleton_of && singleton_of.$$is_a_module) { + return "#"; + } + else if (singleton_of) { + // a singleton class created from an object + return "#>"; + } + + return $send2(self, $find_super(self, 'to_s', $$to_s, false, true), 'to_s', [], null); + + }, 0); + return $alias(self, "inspect", "to_s"); + })('::', null, $nesting); +}; + +Opal.modules["corelib/basic_object"] = function(Opal) {/* Generated by Opal 1.4.1 */ + "use strict"; + var nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $def = Opal.def, $alias = Opal.alias, $truthy = Opal.truthy, $range = Opal.range, $Kernel = Opal.Kernel, $to_a = Opal.to_a, $hash2 = Opal.hash2, $Opal = Opal.Opal, $send = Opal.send, $eqeq = Opal.eqeq, $rb_ge = Opal.rb_ge; + + Opal.add_stubs('==,raise,inspect,!,nil?,cover?,size,merge,compile,proc,[],first,>=,length,instance_variable_get,any?,new,caller,pristine'); + return (function($base, $super) { + var self = $klass($base, $super, 'BasicObject'); + + + + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, $rest_arg; + + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return nil; + }, -1); + + $def(self, '$==', function $BasicObject_$eq_eq$1(other) { + var self = this; + + return self === other; + }, 1); + + $def(self, '$eql?', function $BasicObject_eql$ques$2(other) { + var self = this; + + return self['$=='](other) + }, 1); + $alias(self, "equal?", "=="); + + $def(self, '$__id__', function $$__id__() { + var self = this; + + + if (self.$$id != null) { + return self.$$id; + } + Opal.prop(self, '$$id', Opal.uid()); + return self.$$id; + + }, 0); + + $def(self, '$__send__', function $$__send__(symbol, $a) { + var block = $$__send__.$$p || nil, $post_args, args, self = this; + + delete $$__send__.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + + if (!symbol.$$is_string) { + self.$raise($$$('TypeError'), "" + (self.$inspect()) + " is not a symbol nor a string") + } + + var func = self['$' + symbol]; + + if (func) { + if (block !== nil) { + func.$$p = block; + } + + return func.apply(self, args); + } + + if (block !== nil) { + self.$method_missing.$$p = block; + } + + return self.$method_missing.apply(self, [symbol].concat(args)); + ; + }, -2); + + $def(self, '$!', function $BasicObject_$excl$3() { + + return false + }, 0); + + $def(self, '$!=', function $BasicObject_$not_eq$4(other) { + var self = this; + + return self['$=='](other)['$!']() + }, 1); + + $def(self, '$instance_eval', function $$instance_eval($a) { + var block = $$instance_eval.$$p || nil, $post_args, args, $b, self = this, string = nil, file = nil, _lineno = nil, default_eval_options = nil, $ret_or_1 = nil, compiling_options = nil, compiled = nil; + + delete $$instance_eval.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if (($truthy(block['$nil?']()) && ($truthy(!!Opal.compile)))) { + + if (!$truthy($range(1, 3, false)['$cover?'](args.$size()))) { + $Kernel.$raise($$$('ArgumentError'), "wrong number of arguments (0 for 1..3)") + }; + $b = [].concat($to_a(args)), (string = ($b[0] == null ? nil : $b[0])), (file = ($b[1] == null ? nil : $b[1])), (_lineno = ($b[2] == null ? nil : $b[2])), $b; + default_eval_options = $hash2(["file", "eval"], {"file": ($truthy(($ret_or_1 = file)) ? ($ret_or_1) : ("(eval)")), "eval": true}); + compiling_options = Opal.hash({ arity_check: false }).$merge(default_eval_options); + compiled = $Opal.$compile(string, compiling_options); + block = $send($Kernel, 'proc', [], function $$5(){var self = $$5.$$s == null ? this : $$5.$$s; + + return new Function("Opal,self", "return " + compiled)(Opal, self);}, {$$arity: 0, $$s: self}); + } else if ((($truthy(block['$nil?']()) && ($truthy($rb_ge(args.$length(), 1)))) && ($eqeq(args.$first()['$[]'](0), "@")))) { + return self.$instance_variable_get(args.$first()) + } else if ($truthy(args['$any?']())) { + $Kernel.$raise($$$('ArgumentError'), "wrong number of arguments (" + (args.$size()) + " for 0)") + }; + + var old = block.$$s, + result; + + block.$$s = null; + + // Need to pass $$eval so that method definitions know if this is + // being done on a class/module. Cannot be compiler driven since + // send(:instance_eval) needs to work. + if (self.$$is_a_module) { + self.$$eval = true; + try { + result = block.call(self, self); + } + finally { + self.$$eval = false; + } + } + else { + result = block.call(self, self); + } + + block.$$s = old; + + return result; + ; + }, -1); + + $def(self, '$instance_exec', function $$instance_exec($a) { + var block = $$instance_exec.$$p || nil, $post_args, args, self = this; + + delete $$instance_exec.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if (!$truthy(block)) { + $Kernel.$raise($$$('ArgumentError'), "no block given") + }; + + var block_self = block.$$s, + result; + + block.$$s = null; + + if (self.$$is_a_module) { + self.$$eval = true; + try { + result = block.apply(self, args); + } + finally { + self.$$eval = false; + } + } + else { + result = block.apply(self, args); + } + + block.$$s = block_self; + + return result; + ; + }, -1); + + $def(self, '$singleton_method_added', function $$singleton_method_added($a) { + var $post_args, $rest_arg; + + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return nil; + }, -1); + + $def(self, '$singleton_method_removed', function $$singleton_method_removed($a) { + var $post_args, $rest_arg; + + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return nil; + }, -1); + + $def(self, '$singleton_method_undefined', function $$singleton_method_undefined($a) { + var $post_args, $rest_arg; + + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return nil; + }, -1); + + $def(self, '$method_missing', function $$method_missing(symbol, $a) { + var block = $$method_missing.$$p || nil, $post_args, args, self = this, inspect_result = nil; + + delete $$method_missing.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + inspect_result = $Opal.$inspect(self); + return $Kernel.$raise($$$('NoMethodError').$new("undefined method `" + (symbol) + "' for " + (inspect_result), symbol, args), nil, $Kernel.$caller(1)); + }, -2); + $Opal.$pristine(self, "method_missing"); + return $def(self, '$respond_to_missing?', function $BasicObject_respond_to_missing$ques$6(method_name, include_all) { + + + + if (include_all == null) include_all = false;; + return false; + }, -2); + })('::', null) +}; + +Opal.modules["corelib/kernel"] = function(Opal) {/* Generated by Opal 1.4.1 */ + "use strict"; + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $coerce_to = Opal.coerce_to, $respond_to = Opal.respond_to, $Opal = Opal.Opal, $module = Opal.module, $def = Opal.def, $Kernel = Opal.Kernel, $gvars = Opal.gvars, $hash2 = Opal.hash2, $send = Opal.send, $to_a = Opal.to_a, $rb_plus = Opal.rb_plus, $eqeq = Opal.eqeq, $eqeqeq = Opal.eqeqeq, $rb_le = Opal.rb_le, $rb_lt = Opal.rb_lt, $Object = Opal.Object, $alias = Opal.alias, $klass = Opal.klass; + + Opal.add_stubs('!,=~,==,object_id,raise,new,class,coerce_to?,<<,allocate,copy_instance_variables,copy_singleton_methods,initialize_clone,initialize_copy,define_method,singleton_class,to_proc,initialize_dup,for,empty?,pop,call,append_features,extend_object,extended,gets,__id__,include?,each,instance_variables,instance_variable_get,inspect,+,to_s,instance_variable_name!,respond_to?,to_int,coerce_to!,Integer,nil?,===,enum_for,result,any?,print,format,puts,<=,length,[],readline,<,first,split,caller,map,to_str,exception,backtrace,rand,respond_to_missing?,pristine,try_convert!,expand_path,join,start_with?,new_seed,srand,tag,value,open,include'); + + (function($base, $parent_nesting) { + var self = $module($base, 'Kernel'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$=~', function $Kernel_$eq_tilde$1(obj) { + + return false + }, 1); + + $def(self, '$!~', function $Kernel_$excl_tilde$2(obj) { + var self = this; + + return self['$=~'](obj)['$!']() + }, 1); + + $def(self, '$===', function $Kernel_$eq_eq_eq$3(other) { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$object_id()['$=='](other.$object_id())))) { + return $ret_or_1 + } else { + return self['$=='](other) + } + }, 1); + + $def(self, '$<=>', function $Kernel_$lt_eq_gt$4(other) { + var self = this; + + + // set guard for infinite recursion + self.$$comparable = true; + + var x = self['$=='](other); + + if (x && x !== nil) { + return 0; + } + + return nil; + + }, 1); + + $def(self, '$method', function $$method(name) { + var self = this; + + + var meth = self['$' + name]; + + if (!meth || meth.$$stub) { + $Kernel.$raise($$$('NameError').$new("undefined method `" + (name) + "' for class `" + (self.$class()) + "'", name)); + } + + return $$$('Method').$new(self, meth.$$owner || self.$class(), meth, name); + + }, 1); + + $def(self, '$methods', function $$methods(all) { + var self = this; + + + + if (all == null) all = true;; + + if ($truthy(all)) { + return Opal.methods(self); + } else { + return Opal.own_methods(self); + } + ; + }, -1); + + $def(self, '$public_methods', function $$public_methods(all) { + var self = this; + + + + if (all == null) all = true;; + + if ($truthy(all)) { + return Opal.methods(self); + } else { + return Opal.receiver_methods(self); + } + ; + }, -1); + + $def(self, '$Array', function $$Array(object) { + + + var coerced; + + if (object === nil) { + return []; + } + + if (object.$$is_array) { + return object; + } + + coerced = $Opal['$coerce_to?'](object, $$$('Array'), "to_ary"); + if (coerced !== nil) { return coerced; } + + coerced = $Opal['$coerce_to?'](object, $$$('Array'), "to_a"); + if (coerced !== nil) { return coerced; } + + return [object]; + + }, 1); + + $def(self, '$at_exit', function $$at_exit() { + var block = $$at_exit.$$p || nil, $ret_or_1 = nil; + if ($gvars.__at_exit__ == null) $gvars.__at_exit__ = nil; + + delete $$at_exit.$$p; + + ; + $gvars.__at_exit__ = ($truthy(($ret_or_1 = $gvars.__at_exit__)) ? ($ret_or_1) : ([])); + $gvars.__at_exit__['$<<'](block); + return block; + }, 0); + + $def(self, '$caller', function $$caller(start, length) { + + + + if (start == null) start = 1;; + + if (length == null) length = nil;; + + var stack, result; + + stack = new Error().$backtrace(); + result = []; + + for (var i = start + 1, ii = stack.length; i < ii; i++) { + if (!stack[i].match(/runtime\.js/)) { + result.push(stack[i]); + } + } + if (length != nil) result = result.slice(0, length); + return result; + ; + }, -1); + + $def(self, '$class', function $Kernel_class$5() { + var self = this; + + return self.$$class; + }, 0); + + $def(self, '$copy_instance_variables', function $$copy_instance_variables(other) { + var self = this; + + + var keys = Object.keys(other), i, ii, name; + for (i = 0, ii = keys.length; i < ii; i++) { + name = keys[i]; + if (name.charAt(0) !== '$' && other.hasOwnProperty(name)) { + self[name] = other[name]; + } + } + + }, 1); + + $def(self, '$copy_singleton_methods', function $$copy_singleton_methods(other) { + var self = this; + + + var i, name, names, length; + + if (other.hasOwnProperty('$$meta')) { + var other_singleton_class = Opal.get_singleton_class(other); + var self_singleton_class = Opal.get_singleton_class(self); + names = Object.getOwnPropertyNames(other_singleton_class.$$prototype); + + for (i = 0, length = names.length; i < length; i++) { + name = names[i]; + if (Opal.is_method(name)) { + self_singleton_class.$$prototype[name] = other_singleton_class.$$prototype[name]; + } + } + + self_singleton_class.$$const = Object.assign({}, other_singleton_class.$$const); + Object.setPrototypeOf( + self_singleton_class.$$prototype, + Object.getPrototypeOf(other_singleton_class.$$prototype) + ); + } + + for (i = 0, names = Object.getOwnPropertyNames(other), length = names.length; i < length; i++) { + name = names[i]; + if (name.charAt(0) === '$' && name.charAt(1) !== '$' && other.hasOwnProperty(name)) { + self[name] = other[name]; + } + } + + }, 1); + + $def(self, '$clone', function $$clone($kwargs) { + var freeze, self = this, copy = nil; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + freeze = $kwargs.$$smap["freeze"]; + if (freeze == null) freeze = true; + copy = self.$class().$allocate(); + copy.$copy_instance_variables(self); + copy.$copy_singleton_methods(self); + copy.$initialize_clone(self); + return copy; + }, -1); + + $def(self, '$initialize_clone', function $$initialize_clone(other) { + var self = this; + + return self.$initialize_copy(other) + }, 1); + + $def(self, '$define_singleton_method', function $$define_singleton_method(name, method) { + var block = $$define_singleton_method.$$p || nil, self = this; + + delete $$define_singleton_method.$$p; + + ; + ; + return $send(self.$singleton_class(), 'define_method', [name, method], block.$to_proc()); + }, -2); + + $def(self, '$dup', function $$dup() { + var self = this, copy = nil; + + + copy = self.$class().$allocate(); + copy.$copy_instance_variables(self); + copy.$initialize_dup(self); + return copy; + }, 0); + + $def(self, '$initialize_dup', function $$initialize_dup(other) { + var self = this; + + return self.$initialize_copy(other) + }, 1); + + $def(self, '$enum_for', function $$enum_for($a, $b) { + var block = $$enum_for.$$p || nil, $post_args, method, args, self = this; + + delete $$enum_for.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + if ($post_args.length > 0) method = $post_args.shift(); + if (method == null) method = "each";; + + args = $post_args;; + return $send($$$('Enumerator'), 'for', [self, method].concat($to_a(args)), block.$to_proc()); + }, -1); + + $def(self, '$equal?', function $Kernel_equal$ques$6(other) { + var self = this; + + return self === other; + }, 1); + + $def(self, '$exit', function $$exit(status) { + var $a, $ret_or_1 = nil, block = nil; + if ($gvars.__at_exit__ == null) $gvars.__at_exit__ = nil; + + + + if (status == null) status = true;; + $gvars.__at_exit__ = ($truthy(($ret_or_1 = $gvars.__at_exit__)) ? ($ret_or_1) : ([])); + while (!($truthy($gvars.__at_exit__['$empty?']()))) { + + block = $gvars.__at_exit__.$pop(); + block.$call(); + }; + + if (status.$$is_boolean) { + status = status ? 0 : 1; + } else { + status = $coerce_to(status, $$$('Integer'), 'to_int') + } + + Opal.exit(status); + ; + return nil; + }, -1); + + $def(self, '$extend', function $$extend($a) { + var $post_args, mods, self = this; + + + + $post_args = Opal.slice.call(arguments); + + mods = $post_args;; + + var singleton = self.$singleton_class(); + + for (var i = mods.length - 1; i >= 0; i--) { + var mod = mods[i]; + + if (!mod.$$is_module) { + $Kernel.$raise($$$('TypeError'), "wrong argument type " + ((mod).$class()) + " (expected Module)"); + } + + (mod).$append_features(singleton); + (mod).$extend_object(self); + (mod).$extended(self); + } + ; + return self; + }, -1); + + $def(self, '$gets', function $$gets($a) { + var $post_args, args; + if ($gvars.stdin == null) $gvars.stdin = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send($gvars.stdin, 'gets', $to_a(args)); + }, -1); + + $def(self, '$hash', function $$hash() { + var self = this; + + return self.$__id__() + }, 0); + + $def(self, '$initialize_copy', function $$initialize_copy(other) { + + return nil + }, 1); + var inspect_stack = []; + + $def(self, '$inspect', function $$inspect() { + var self = this, ivs = nil, id = nil, pushed = nil, e = nil; + + return (function() { try { + try { + + ivs = ""; + id = self.$__id__(); + if ($truthy((inspect_stack)['$include?'](id))) { + ivs = " ..." + } else { + + (inspect_stack)['$<<'](id); + pushed = true; + $send(self.$instance_variables(), 'each', [], function $$7(i){var self = $$7.$$s == null ? this : $$7.$$s, ivar = nil, inspect = nil; + + + + if (i == null) i = nil;; + ivar = self.$instance_variable_get(i); + inspect = $$('Opal').$inspect(ivar); + return (ivs = $rb_plus(ivs, " " + (i) + "=" + (inspect)));}, {$$arity: 1, $$s: self}); + }; + return "#<" + (self.$class()) + ":0x" + (id.$to_s(16)) + (ivs) + ">"; + } catch ($err) { + if (Opal.rescue($err, [$$('StandardError')])) {(e = $err) + try { + return "#<" + (self.$class()) + ":0x" + (id.$to_s(16)) + ">" + } finally { Opal.pop_exception(); } + } else { throw $err; } + } + } finally { + ($truthy(pushed) ? ((inspect_stack).$pop()) : nil) + }; })() + }, 0); + + $def(self, '$instance_of?', function $Kernel_instance_of$ques$8(klass) { + var self = this; + + + if (!klass.$$is_class && !klass.$$is_module) { + $Kernel.$raise($$$('TypeError'), "class or module required"); + } + + return self.$$class === klass; + + }, 1); + + $def(self, '$instance_variable_defined?', function $Kernel_instance_variable_defined$ques$9(name) { + var self = this; + + + name = $Opal['$instance_variable_name!'](name); + return Opal.hasOwnProperty.call(self, name.substr(1));; + }, 1); + + $def(self, '$instance_variable_get', function $$instance_variable_get(name) { + var self = this; + + + name = $Opal['$instance_variable_name!'](name); + + var ivar = self[Opal.ivar(name.substr(1))]; + + return ivar == null ? nil : ivar; + ; + }, 1); + + $def(self, '$instance_variable_set', function $$instance_variable_set(name, value) { + var self = this; + + + name = $Opal['$instance_variable_name!'](name); + return self[Opal.ivar(name.substr(1))] = value;; + }, 2); + + $def(self, '$remove_instance_variable', function $$remove_instance_variable(name) { + var self = this; + + + name = $Opal['$instance_variable_name!'](name); + + var key = Opal.ivar(name.substr(1)), + val; + if (self.hasOwnProperty(key)) { + val = self[key]; + delete self[key]; + return val; + } + ; + return $Kernel.$raise($$$('NameError'), "instance variable " + (name) + " not defined"); + }, 1); + + $def(self, '$instance_variables', function $$instance_variables() { + var self = this; + + + var result = [], ivar; + + for (var name in self) { + if (self.hasOwnProperty(name) && name.charAt(0) !== '$') { + if (name.substr(-1) === '$') { + ivar = name.slice(0, name.length - 1); + } else { + ivar = name; + } + result.push('@' + ivar); + } + } + + return result; + + }, 0); + + $def(self, '$Integer', function $$Integer(value, base) { + + + ; + + var i, str, base_digits; + + if (!value.$$is_string) { + if (base !== undefined) { + $Kernel.$raise($$$('ArgumentError'), "base specified for non string value") + } + if (value === nil) { + $Kernel.$raise($$$('TypeError'), "can't convert nil into Integer") + } + if (value.$$is_number) { + if (value === Infinity || value === -Infinity || isNaN(value)) { + $Kernel.$raise($$$('FloatDomainError'), value) + } + return Math.floor(value); + } + if (value['$respond_to?']("to_int")) { + i = value.$to_int(); + if (i !== nil) { + return i; + } + } + return $Opal['$coerce_to!'](value, $$$('Integer'), "to_i"); + } + + if (value === "0") { + return 0; + } + + if (base === undefined) { + base = 0; + } else { + base = $coerce_to(base, $$$('Integer'), 'to_int'); + if (base === 1 || base < 0 || base > 36) { + $Kernel.$raise($$$('ArgumentError'), "invalid radix " + (base)) + } + } + + str = value.toLowerCase(); + + str = str.replace(/(\d)_(?=\d)/g, '$1'); + + str = str.replace(/^(\s*[+-]?)(0[bodx]?)/, function (_, head, flag) { + switch (flag) { + case '0b': + if (base === 0 || base === 2) { + base = 2; + return head; + } + // no-break + case '0': + case '0o': + if (base === 0 || base === 8) { + base = 8; + return head; + } + // no-break + case '0d': + if (base === 0 || base === 10) { + base = 10; + return head; + } + // no-break + case '0x': + if (base === 0 || base === 16) { + base = 16; + return head; + } + // no-break + } + $Kernel.$raise($$$('ArgumentError'), "invalid value for Integer(): \"" + (value) + "\"") + }); + + base = (base === 0 ? 10 : base); + + base_digits = '0-' + (base <= 10 ? base - 1 : '9a-' + String.fromCharCode(97 + (base - 11))); + + if (!(new RegExp('^\\s*[+-]?[' + base_digits + ']+\\s*$')).test(str)) { + $Kernel.$raise($$$('ArgumentError'), "invalid value for Integer(): \"" + (value) + "\"") + } + + i = parseInt(str, base); + + if (isNaN(i)) { + $Kernel.$raise($$$('ArgumentError'), "invalid value for Integer(): \"" + (value) + "\"") + } + + return i; + ; + }, -2); + + $def(self, '$Float', function $$Float(value) { + + + var str; + + if (value === nil) { + $Kernel.$raise($$$('TypeError'), "can't convert nil into Float") + } + + if (value.$$is_string) { + str = value.toString(); + + str = str.replace(/(\d)_(?=\d)/g, '$1'); + + //Special case for hex strings only: + if (/^\s*[-+]?0[xX][0-9a-fA-F]+\s*$/.test(str)) { + return $Kernel.$Integer(str); + } + + if (!/^\s*[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?\s*$/.test(str)) { + $Kernel.$raise($$$('ArgumentError'), "invalid value for Float(): \"" + (value) + "\"") + } + + return parseFloat(str); + } + + return $Opal['$coerce_to!'](value, $$$('Float'), "to_f"); + + }, 1); + + $def(self, '$Hash', function $$Hash(arg) { + + + if (($truthy(arg['$nil?']()) || ($eqeq(arg, [])))) { + return $hash2([], {}) + }; + if ($eqeqeq($$$('Hash'), arg)) { + return arg + }; + return $Opal['$coerce_to!'](arg, $$$('Hash'), "to_hash"); + }, 1); + + $def(self, '$is_a?', function $Kernel_is_a$ques$10(klass) { + var self = this; + + + if (!klass.$$is_class && !klass.$$is_module) { + $Kernel.$raise($$$('TypeError'), "class or module required"); + } + + return Opal.is_a(self, klass); + + }, 1); + + $def(self, '$itself', function $$itself() { + var self = this; + + return self + }, 0); + + $def(self, '$lambda', function $$lambda() { + var block = $$lambda.$$p || nil; + + delete $$lambda.$$p; + + ; + return Opal.lambda(block);; + }, 0); + + $def(self, '$load', function $$load(file) { + + + file = $Opal['$coerce_to!'](file, $$$('String'), "to_str"); + return Opal.load(file); + }, 1); + + $def(self, '$loop', function $$loop() { + var $a, $yield = $$loop.$$p || nil, self = this, e = nil; + + delete $$loop.$$p; + + if (!($yield !== nil)) { + return $send(self, 'enum_for', ["loop"], function $$11(){ + return $$$($$$('Float'), 'INFINITY')}, 0) + }; + while ($truthy(true)) { + + try { + Opal.yieldX($yield, []) + } catch ($err) { + if (Opal.rescue($err, [$$$('StopIteration')])) {(e = $err) + try { + return e.$result() + } finally { Opal.pop_exception(); } + } else { throw $err; } + }; + }; + return self; + }, 0); + + $def(self, '$nil?', function $Kernel_nil$ques$12() { + + return false + }, 0); + + $def(self, '$printf', function $$printf($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if ($truthy(args['$any?']())) { + self.$print($send(self, 'format', $to_a(args))) + }; + return nil; + }, -1); + + $def(self, '$proc', function $$proc() { + var block = $$proc.$$p || nil; + + delete $$proc.$$p; + + ; + if (!$truthy(block)) { + $Kernel.$raise($$$('ArgumentError'), "tried to create Proc object without a block") + }; + block.$$is_lambda = false; + return block; + }, 0); + + $def(self, '$puts', function $$puts($a) { + var $post_args, strs; + if ($gvars.stdout == null) $gvars.stdout = nil; + + + + $post_args = Opal.slice.call(arguments); + + strs = $post_args;; + return $send($gvars.stdout, 'puts', $to_a(strs)); + }, -1); + + $def(self, '$p', function $$p($a) { + var $post_args, args; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + $send(args, 'each', [], function $$13(obj){ if ($gvars.stdout == null) $gvars.stdout = nil; + + + + if (obj == null) obj = nil;; + return $gvars.stdout.$puts(obj.$inspect());}, 1); + if ($truthy($rb_le(args.$length(), 1))) { + return args['$[]'](0) + } else { + return args + }; + }, -1); + + $def(self, '$print', function $$print($a) { + var $post_args, strs; + if ($gvars.stdout == null) $gvars.stdout = nil; + + + + $post_args = Opal.slice.call(arguments); + + strs = $post_args;; + return $send($gvars.stdout, 'print', $to_a(strs)); + }, -1); + + $def(self, '$readline', function $$readline($a) { + var $post_args, args; + if ($gvars.stdin == null) $gvars.stdin = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send($gvars.stdin, 'readline', $to_a(args)); + }, -1); + + $def(self, '$warn', function $$warn($a, $b) { + var $post_args, $kwargs, strs, uplevel, $c, $d, self = this, location = nil; + if ($gvars.VERBOSE == null) $gvars.VERBOSE = nil; + if ($gvars.stderr == null) $gvars.stderr = nil; + + + + $post_args = Opal.slice.call(arguments); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + strs = $post_args;; + + uplevel = $kwargs.$$smap["uplevel"]; + if (uplevel == null) uplevel = nil; + if ($truthy(uplevel)) { + + uplevel = $Opal['$coerce_to!'](uplevel, $$$('Integer'), "to_str"); + if ($truthy($rb_lt(uplevel, 0))) { + $Kernel.$raise($$$('ArgumentError'), "negative level (" + (uplevel) + ")") + }; + location = ($d = ($c = self.$caller($rb_plus(uplevel, 1), 1).$first(), ($c === nil || $c == null) ? nil : $send($c, 'split', [":in `"])), ($d === nil || $d == null) ? nil : $send($d, 'first', [])); + if ($truthy(location)) { + location = "" + (location) + ": " + }; + strs = $send(strs, 'map', [], function $$14(s){ + + + if (s == null) s = nil;; + return "" + (location) + "warning: " + (s);}, 1); + }; + if (($truthy($gvars.VERBOSE['$nil?']()) || ($truthy(strs['$empty?']())))) { + return nil + } else { + return $send($gvars.stderr, 'puts', $to_a(strs)) + }; + }, -1); + + $def(self, '$raise', function $$raise(exception, string, backtrace) { + if ($gvars["!"] == null) $gvars["!"] = nil; + if ($gvars["@"] == null) $gvars["@"] = nil; + + + ; + + if (string == null) string = nil;; + + if (backtrace == null) backtrace = nil;; + + if (exception == null && $gvars["!"] !== nil) { + throw $gvars["!"]; + } + if (exception == null) { + exception = $$$('RuntimeError').$new(""); + } + else if ($respond_to(exception, '$to_str')) { + exception = $$$('RuntimeError').$new(exception.$to_str()); + } + // using respond_to? and not an undefined check to avoid method_missing matching as true + else if (exception.$$is_class && $respond_to(exception, '$exception')) { + exception = exception.$exception(string); + } + else if (exception.$$is_exception) { + // exception is fine + } + else { + exception = $$$('TypeError').$new("exception class/object expected"); + } + + if (backtrace !== nil) { + exception.$set_backtrace(backtrace); + } + + if ($gvars["!"] !== nil) { + Opal.exceptions.push($gvars["!"]); + } + + $gvars["!"] = exception; + $gvars["@"] = (exception).$backtrace(); + + throw exception; + ; + }, -1); + + $def(self, '$rand', function $$rand(max) { + + + ; + + if (max === undefined) { + return $$$($$$('Random'), 'DEFAULT').$rand(); + } + + if (max.$$is_number) { + if (max < 0) { + max = Math.abs(max); + } + + if (max % 1 !== 0) { + max = max.$to_i(); + } + + if (max === 0) { + max = undefined; + } + } + ; + return $$$($$$('Random'), 'DEFAULT').$rand(max); + }, -1); + + $def(self, '$respond_to?', function $Kernel_respond_to$ques$15(name, include_all) { + var self = this; + + + + if (include_all == null) include_all = false;; + + var body = self['$' + name]; + + if (typeof(body) === "function" && !body.$$stub) { + return true; + } + + if (self['$respond_to_missing?'].$$pristine === true) { + return false; + } else { + return self['$respond_to_missing?'](name, include_all); + } + ; + }, -2); + + $def(self, '$respond_to_missing?', function $Kernel_respond_to_missing$ques$16(method_name, include_all) { + + + + if (include_all == null) include_all = false;; + return false; + }, -2); + $Opal.$pristine(self, "respond_to?", "respond_to_missing?"); + + $def(self, '$require', function $$require(file) { + + + // As Object.require refers to Kernel.require once Kernel has been loaded the String + // class may not be available yet, the coercion requires both String and Array to be loaded. + if (typeof file !== 'string' && Opal.String && Opal.Array) { + (file = $Opal['$coerce_to!'](file, $$$('String'), "to_str")) + } + return Opal.require(file) + + }, 1); + + $def(self, '$require_relative', function $$require_relative(file) { + + + $Opal['$try_convert!'](file, $$$('String'), "to_str"); + file = $$$('File').$expand_path($$$('File').$join(Opal.current_file, "..", file)); + return Opal.require(file); + }, 1); + + $def(self, '$require_tree', function $$require_tree(path, $kwargs) { + var autoload; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + autoload = $kwargs.$$smap["autoload"]; + if (autoload == null) autoload = false; + + var result = []; + + path = $$$('File').$expand_path(path) + path = Opal.normalize(path); + if (path === '.') path = ''; + for (var name in Opal.modules) { + if ((name)['$start_with?'](path)) { + if(!autoload) { + result.push([name, Opal.require(name)]); + } else { + result.push([name, true]); // do nothing, delegated to a autoloading + } + } + } + + return result; + ; + }, -2); + + $def(self, '$singleton_class', function $$singleton_class() { + var self = this; + + return Opal.get_singleton_class(self); + }, 0); + + $def(self, '$sleep', function $$sleep(seconds) { + + + + if (seconds == null) seconds = nil;; + + if (seconds === nil) { + $Kernel.$raise($$$('TypeError'), "can't convert NilClass into time interval") + } + if (!seconds.$$is_number) { + $Kernel.$raise($$$('TypeError'), "can't convert " + (seconds.$class()) + " into time interval") + } + if (seconds < 0) { + $Kernel.$raise($$$('ArgumentError'), "time interval must be positive") + } + var get_time = Opal.global.performance ? + function() {return performance.now()} : + function() {return new Date()} + + var t = get_time(); + while (get_time() - t <= seconds * 1000); + return Math.round(seconds); + ; + }, -1); + + $def(self, '$srand', function $$srand(seed) { + + + + if (seed == null) seed = $$('Random').$new_seed();; + return $$$('Random').$srand(seed); + }, -1); + + $def(self, '$String', function $$String(str) { + var $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = $Opal['$coerce_to?'](str, $$$('String'), "to_str")))) { + return $ret_or_1 + } else { + return $Opal['$coerce_to!'](str, $$$('String'), "to_s") + } + }, 1); + + $def(self, '$tap', function $$tap() { + var block = $$tap.$$p || nil, self = this; + + delete $$tap.$$p; + + ; + Opal.yield1(block, self); + return self; + }, 0); + + $def(self, '$to_proc', function $$to_proc() { + var self = this; + + return self + }, 0); + + $def(self, '$to_s', function $$to_s() { + var self = this; + + return "#<" + (self.$class()) + ":0x" + (self.$__id__().$to_s(16)) + ">" + }, 0); + + $def(self, '$catch', function $Kernel_catch$17(tag) { + var $yield = $Kernel_catch$17.$$p || nil, $ret_or_1 = nil, e = nil; + + delete $Kernel_catch$17.$$p; + + + if (tag == null) tag = nil;; + try { + + tag = ($truthy(($ret_or_1 = tag)) ? ($ret_or_1) : ($Object.$new())); + return Opal.yield1($yield, tag);; + } catch ($err) { + if (Opal.rescue($err, [$$$('UncaughtThrowError')])) {(e = $err) + try { + + if ($eqeq(e.$tag(), tag)) { + return e.$value() + }; + return $Kernel.$raise(); + } finally { Opal.pop_exception(); } + } else { throw $err; } + }; + }, -1); + + $def(self, '$throw', function $Kernel_throw$18(tag, obj) { + + + + if (obj == null) obj = nil;; + return $Kernel.$raise($$$('UncaughtThrowError').$new(tag, obj)); + }, -2); + + $def(self, '$open', function $$open($a) { + var block = $$open.$$p || nil, $post_args, args; + + delete $$open.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send($$$('File'), 'open', $to_a(args), block.$to_proc()); + }, -1); + + $def(self, '$yield_self', function $$yield_self() { + var $yield = $$yield_self.$$p || nil, self = this; + + delete $$yield_self.$$p; + + if (!($yield !== nil)) { + return $send(self, 'enum_for', ["yield_self"], function $$19(){ + return 1}, 0) + }; + return Opal.yield1($yield, self);; + }, 0); + $alias(self, "fail", "raise"); + $alias(self, "kind_of?", "is_a?"); + $alias(self, "object_id", "__id__"); + $alias(self, "public_send", "__send__"); + $alias(self, "send", "__send__"); + $alias(self, "then", "yield_self"); + return $alias(self, "to_enum", "enum_for"); + })('::', $nesting); + return (function($base, $super) { + var self = $klass($base, $super, 'Object'); + + + + delete $Object.$$prototype.$require; + return self.$include($Kernel); + })('::', null); +}; + +Opal.modules["corelib/main"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $def = Opal.def, $Object = Opal.Object, $Kernel = Opal.Kernel; + + Opal.add_stubs('include,raise'); + return (function(self, $parent_nesting) { + + + + $def(self, '$to_s', function $$to_s() { + + return "main" + }, 0); + + $def(self, '$include', function $$include(mod) { + + return $Object.$include(mod) + }, 1); + + $def(self, '$autoload', function $$autoload($a) { + var $post_args, args; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return Opal.Object.$autoload.apply(Opal.Object, args);; + }, -1); + return $def(self, '$using', function $$using(mod) { + + return $Kernel.$raise("main.using is permitted only at toplevel") + }, 1); + })(Opal.get_singleton_class(self), $nesting) +}; + +Opal.modules["corelib/error/errno"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $klass = Opal.klass; + + Opal.add_stubs('+,errno,class,attr_reader'); + + (function($base, $parent_nesting) { + var self = $module($base, 'Errno'); + + var $nesting = [self].concat($parent_nesting), errors = nil, klass = nil; + + + errors = [["EINVAL", "Invalid argument", 22], ["EEXIST", "File exists", 17], ["EISDIR", "Is a directory", 21], ["EMFILE", "Too many open files", 24], ["EACCES", "Permission denied", 13], ["EPERM", "Operation not permitted", 1], ["ENOENT", "No such file or directory", 2]]; + klass = nil; + + var i; + for (i = 0; i < errors.length; i++) { + (function() { // Create a closure + var class_name = errors[i][0]; + var default_message = errors[i][1]; + var errno = errors[i][2]; + + klass = Opal.klass(self, Opal.SystemCallError, class_name); + klass.errno = errno; + + (function(self, $parent_nesting) { + + return $def(self, '$new', function $new$1(name) { + var $yield = $new$1.$$p || nil, self = this, message = nil; + + delete $new$1.$$p; + + + if (name == null) name = nil;; + message = default_message; + if ($truthy(name)) { + message = $rb_plus(message, " - " + (name)) + }; + return $send2(self, $find_super(self, 'new', $new$1, false, true), 'new', [message], null); + }, -1) + })(Opal.get_singleton_class(klass), $nesting) + })(); + } + ; + })('::', $nesting); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'SystemCallError'); + + var $nesting = [self].concat($parent_nesting); + + + + $def(self, '$errno', function $$errno() { + var self = this; + + return self.$class().$errno() + }, 0); + return (function(self, $parent_nesting) { + + return self.$attr_reader("errno") + })(Opal.get_singleton_class(self), $nesting); + })('::', $$$('StandardError'), $nesting); +}; + +Opal.modules["corelib/error"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $gvars = Opal.gvars, $defs = Opal.defs, $send = Opal.send, $to_a = Opal.to_a, $def = Opal.def, $truthy = Opal.truthy, $hash2 = Opal.hash2, $Kernel = Opal.Kernel, $not = Opal.not, $rb_plus = Opal.rb_plus, $eqeq = Opal.eqeq, $Object = Opal.Object, $send2 = Opal.send2, $find_super = Opal.find_super, $module = Opal.module; + + Opal.add_stubs('new,map,backtrace,clone,to_s,merge,tty?,[],include?,raise,dup,empty?,!,caller,shift,+,class,join,cause,full_message,==,reverse,split,autoload,attr_reader,inspect'); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Exception'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.message = nil; + + Opal.prop(self.$$prototype, '$$is_exception', true); + var stack_trace_limit; + $defs(self, '$new', function $Exception_new$1($a) { + var $post_args, args, self = this; + if ($gvars["!"] == null) $gvars["!"] = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + + var message = (args.length > 0) ? args[0] : nil; + var error = new self.$$constructor(message); + error.name = self.$$name; + error.message = message; + error.cause = $gvars["!"]; + Opal.send(error, error.$initialize, args); + + // Error.captureStackTrace() will use .name and .toString to build the + // first line of the stack trace so it must be called after the error + // has been initialized. + // https://nodejs.org/dist/latest-v6.x/docs/api/errors.html + if (Opal.config.enable_stack_trace && Error.captureStackTrace) { + // Passing Kernel.raise will cut the stack trace from that point above + Error.captureStackTrace(error, stack_trace_limit); + } + + return error; + ; + }, -1); + stack_trace_limit = self.$new; + $defs(self, '$exception', function $$exception($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send(self, 'new', $to_a(args)); + }, -1); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return self.message = (args.length > 0) ? args[0] : nil;; + }, -1); + + // Convert backtrace from any format to Ruby format + function correct_backtrace(backtrace) { + var new_bt = [], m; + + for (var i = 0; i < backtrace.length; i++) { + var loc = backtrace[i]; + if (!loc || !loc.$$is_string) { + /* Do nothing */ + } + /* Chromium format */ + else if ((m = loc.match(/^ at (.*?) \((.*?)\)$/))) { + new_bt.push(m[2] + ":in `" + m[1] + "'"); + } + else if ((m = loc.match(/^ at (.*?)$/))) { + new_bt.push(m[1] + ":in `undefined'"); + } + /* Node format */ + else if ((m = loc.match(/^ from (.*?)$/))) { + new_bt.push(m[1]); + } + /* Mozilla/Apple format */ + else if ((m = loc.match(/^(.*?)@(.*?)$/))) { + new_bt.push(m[2] + ':in `' + m[1] + "'"); + } + } + + return new_bt; + } + ; + + $def(self, '$backtrace', function $$backtrace() { + var self = this; + + + if (self.backtrace) { + // nil is a valid backtrace + return self.backtrace; + } + + var backtrace = self.stack; + + if (typeof(backtrace) !== 'undefined' && backtrace.$$is_string) { + return self.backtrace = correct_backtrace(backtrace.split("\n").slice(0, 15)); + } + else if (backtrace) { + return self.backtrace = correct_backtrace(backtrace.slice(0, 15)); + } + + return []; + + }, 0); + + $def(self, '$backtrace_locations', function $$backtrace_locations() { + var $a, self = this; + + + if (self.backtrace_locations) return self.backtrace_locations; + self.backtrace_locations = ($a = self.$backtrace(), ($a === nil || $a == null) ? nil : $send($a, 'map', [], function $$2(loc){ + + + if (loc == null) loc = nil;; + return $$$($$$($$$('Thread'), 'Backtrace'), 'Location').$new(loc);}, 1)) + return self.backtrace_locations; + + }, 0); + + $def(self, '$cause', function $$cause() { + var self = this; + + return self.cause || nil; + }, 0); + + $def(self, '$exception', function $$exception(str) { + var self = this; + + + + if (str == null) str = nil;; + + if (str === nil || self === str) { + return self; + } + + var cloned = self.$clone(); + cloned.message = str; + if (self.backtrace) cloned.backtrace = self.backtrace.$dup(); + cloned.stack = self.stack; + cloned.cause = self.cause; + return cloned; + ; + }, -1); + + $def(self, '$message', function $$message() { + var self = this; + + return self.$to_s() + }, 0); + + $def(self, '$full_message', function $$full_message(kwargs) { + var $a, $b, self = this, $ret_or_1 = nil, highlight = nil, order = nil, bold_underline = nil, bold = nil, reset = nil, bt = nil, first = nil, msg = nil; + if ($gvars.stderr == null) $gvars.stderr = nil; + + + + if (kwargs == null) kwargs = nil;; + if (!$truthy((($a = $$('Hash', 'skip_raise')) ? 'constant' : nil))) { + return "" + (self.message) + "\n" + (self.stack) + }; + kwargs = $hash2(["highlight", "order"], {"highlight": $gvars.stderr['$tty?'](), "order": "top"}).$merge(($truthy(($ret_or_1 = kwargs)) ? ($ret_or_1) : ($hash2([], {})))); + $b = [kwargs['$[]']("highlight"), kwargs['$[]']("order")], (highlight = $b[0]), (order = $b[1]), $b; + if (!$truthy([true, false]['$include?'](highlight))) { + $Kernel.$raise($$$('ArgumentError'), "expected true or false as highlight: " + (highlight)) + }; + if (!$truthy(["top", "bottom"]['$include?'](order))) { + $Kernel.$raise($$$('ArgumentError'), "expected :top or :bottom as order: " + (order)) + }; + if ($truthy(highlight)) { + + bold_underline = "\u001b[1;4m"; + bold = "\u001b[1m"; + reset = "\u001b[m"; + } else { + bold_underline = (bold = (reset = "")) + }; + bt = self.$backtrace().$dup(); + if (($not(bt) || ($truthy(bt['$empty?']())))) { + bt = self.$caller() + }; + first = bt.$shift(); + msg = "" + (first) + ": "; + msg = $rb_plus(msg, "" + (bold) + (self.$to_s()) + " (" + (bold_underline) + (self.$class()) + (reset) + (bold) + ")" + (reset) + "\n"); + msg = $rb_plus(msg, $send(bt, 'map', [], function $$3(loc){ + + + if (loc == null) loc = nil;; + return "\tfrom " + (loc) + "\n";}, 1).$join()); + if ($truthy(self.$cause())) { + msg = $rb_plus(msg, self.$cause().$full_message($hash2(["highlight"], {"highlight": highlight}))) + }; + if ($eqeq(order, "bottom")) { + + msg = msg.$split("\n").$reverse().$join("\n"); + msg = $rb_plus("" + (bold) + "Traceback" + (reset) + " (most recent call last):\n", msg); + }; + return msg; + }, -1); + + $def(self, '$inspect', function $$inspect() { + var self = this, as_str = nil; + + + as_str = self.$to_s(); + if ($truthy(as_str['$empty?']())) { + return self.$class().$to_s() + } else { + return "#<" + (self.$class().$to_s()) + ": " + (self.$to_s()) + ">" + }; + }, 0); + + $def(self, '$set_backtrace', function $$set_backtrace(backtrace) { + var self = this; + + + var valid = true, i, ii; + + if (backtrace === nil) { + self.backtrace = nil; + self.stack = ''; + } else if (backtrace.$$is_string) { + self.backtrace = [backtrace]; + self.stack = ' from ' + backtrace; + } else { + if (backtrace.$$is_array) { + for (i = 0, ii = backtrace.length; i < ii; i++) { + if (!backtrace[i].$$is_string) { + valid = false; + break; + } + } + } else { + valid = false; + } + + if (valid === false) { + $Kernel.$raise($$$('TypeError'), "backtrace must be Array of String") + } + + self.backtrace = backtrace; + self.stack = $send((backtrace), 'map', [], function $$4(i){ + + + if (i == null) i = nil;; + return $rb_plus(" from ", i);}, 1).join("\n"); + } + + return backtrace; + + }, 1); + return $def(self, '$to_s', function $$to_s() { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.message)) ? (self.message.$to_s()) : ($ret_or_2))))) { + return $ret_or_1 + } else { + return self.$class().$to_s() + } + }, 0); + })('::', Error, $nesting); + $klass('::', $$$('Exception'), 'ScriptError'); + $klass('::', $$$('ScriptError'), 'SyntaxError'); + $klass('::', $$$('ScriptError'), 'LoadError'); + $klass('::', $$$('ScriptError'), 'NotImplementedError'); + $klass('::', $$$('Exception'), 'SystemExit'); + $klass('::', $$$('Exception'), 'NoMemoryError'); + $klass('::', $$$('Exception'), 'SignalException'); + $klass('::', $$$('SignalException'), 'Interrupt'); + $klass('::', $$$('Exception'), 'SecurityError'); + $klass('::', $$$('Exception'), 'SystemStackError'); + $klass('::', $$$('Exception'), 'StandardError'); + $klass('::', $$$('StandardError'), 'EncodingError'); + $klass('::', $$$('StandardError'), 'ZeroDivisionError'); + $klass('::', $$$('StandardError'), 'NameError'); + $klass('::', $$$('NameError'), 'NoMethodError'); + $klass('::', $$$('StandardError'), 'RuntimeError'); + $klass('::', $$$('RuntimeError'), 'FrozenError'); + $klass('::', $$$('StandardError'), 'LocalJumpError'); + $klass('::', $$$('StandardError'), 'TypeError'); + $klass('::', $$$('StandardError'), 'ArgumentError'); + $klass('::', $$$('ArgumentError'), 'UncaughtThrowError'); + $klass('::', $$$('StandardError'), 'IndexError'); + $klass('::', $$$('IndexError'), 'StopIteration'); + $klass('::', $$$('StopIteration'), 'ClosedQueueError'); + $klass('::', $$$('IndexError'), 'KeyError'); + $klass('::', $$$('StandardError'), 'RangeError'); + $klass('::', $$$('RangeError'), 'FloatDomainError'); + $klass('::', $$$('StandardError'), 'IOError'); + $klass('::', $$$('IOError'), 'EOFError'); + $klass('::', $$$('StandardError'), 'SystemCallError'); + $klass('::', $$$('StandardError'), 'RegexpError'); + $klass('::', $$$('StandardError'), 'ThreadError'); + $klass('::', $$$('StandardError'), 'FiberError'); + $Object.$autoload("Errno", "corelib/error/errno"); + (function($base, $super) { + var self = $klass($base, $super, 'UncaughtThrowError'); + + var $proto = self.$$prototype; + + $proto.tag = nil; + + self.$attr_reader("tag", "value"); + return $def(self, '$initialize', function $$initialize(tag, value) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + if (value == null) value = nil;; + self.tag = tag; + self.value = value; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', ["uncaught throw " + (self.tag.$inspect())], null); + }, -2); + })('::', $$$('ArgumentError')); + (function($base, $super) { + var self = $klass($base, $super, 'NameError'); + + + + self.$attr_reader("name"); + return $def(self, '$initialize', function $$initialize(message, name) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + if (name == null) name = nil;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [message], null); + return (self.name = name); + }, -2); + })('::', null); + (function($base, $super) { + var self = $klass($base, $super, 'NoMethodError'); + + + + self.$attr_reader("args"); + return $def(self, '$initialize', function $$initialize(message, name, args) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + if (name == null) name = nil;; + + if (args == null) args = [];; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [message, name], null); + return (self.args = args); + }, -2); + })('::', null); + (function($base, $super) { + var self = $klass($base, $super, 'StopIteration'); + + + return self.$attr_reader("result") + })('::', null); + (function($base, $super) { + var self = $klass($base, $super, 'KeyError'); + + var $proto = self.$$prototype; + + $proto.receiver = $proto.key = nil; + + + $def(self, '$initialize', function $$initialize(message, $kwargs) { + var receiver, key, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + receiver = $kwargs.$$smap["receiver"]; + if (receiver == null) receiver = nil; + + key = $kwargs.$$smap["key"]; + if (key == null) key = nil; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [message], null); + self.receiver = receiver; + return (self.key = key); + }, -2); + + $def(self, '$receiver', function $$receiver() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.receiver))) { + return $ret_or_1 + } else { + return $Kernel.$raise($$$('ArgumentError'), "no receiver is available") + } + }, 0); + return $def(self, '$key', function $$key() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.key))) { + return $ret_or_1 + } else { + return $Kernel.$raise($$$('ArgumentError'), "no key is available") + } + }, 0); + })('::', null); + return (function($base, $parent_nesting) { + var self = $module($base, 'JS'); + + var $nesting = [self].concat($parent_nesting); + + return ($klass($nesting[0], null, 'Error'), nil) + })('::', $nesting); +}; + +Opal.modules["corelib/constants"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $$$ = Opal.$$$, $const_set = Opal.const_set; + + + $const_set('::', 'RUBY_PLATFORM', "opal"); + $const_set('::', 'RUBY_ENGINE', "opal"); + $const_set('::', 'RUBY_VERSION', "3.1.0"); + $const_set('::', 'RUBY_ENGINE_VERSION', "1.4.1"); + $const_set('::', 'RUBY_RELEASE_DATE', "2022-01-12"); + $const_set('::', 'RUBY_PATCHLEVEL', 0); + $const_set('::', 'RUBY_REVISION', "0"); + $const_set('::', 'RUBY_COPYRIGHT', "opal - Copyright (C) 2013-2021 Adam Beynon and the Opal contributors"); + return $const_set('::', 'RUBY_DESCRIPTION', "opal " + ($$$('RUBY_ENGINE_VERSION')) + " (" + ($$$('RUBY_RELEASE_DATE')) + " revision " + ($$$('RUBY_REVISION')) + ")"); +}; + +Opal.modules["opal/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $Object = Opal.Object; + + Opal.add_stubs('require'); + + $Object.$require("corelib/runtime"); + $Object.$require("corelib/helpers"); + $Object.$require("corelib/module"); + $Object.$require("corelib/class"); + $Object.$require("corelib/basic_object"); + $Object.$require("corelib/kernel"); + $Object.$require("corelib/main"); + $Object.$require("corelib/error"); + return $Object.$require("corelib/constants"); +}; + +Opal.modules["corelib/nil"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $Kernel = Opal.Kernel, $def = Opal.def, $hash2 = Opal.hash2, $NilClass = Opal.NilClass, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $alias = Opal.alias; + + Opal.add_stubs('raise,name,new,>,length,Rational'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'NilClass'); + + var $nesting = [self].concat($parent_nesting); + + + self.$$prototype.$$meta = self; + (function(self, $parent_nesting) { + + + + $def(self, '$allocate', function $$allocate() { + var self = this; + + return $Kernel.$raise($$$('TypeError'), "allocator undefined for " + (self.$name())) + }, 0); + + + Opal.udef(self, '$' + "new");; + return nil;; + })(Opal.get_singleton_class(self), $nesting); + + $def(self, '$!', function $NilClass_$excl$1() { + + return true + }, 0); + + $def(self, '$&', function $NilClass_$$2(other) { + + return false + }, 1); + + $def(self, '$|', function $NilClass_$$3(other) { + + return other !== false && other !== nil; + }, 1); + + $def(self, '$^', function $NilClass_$$4(other) { + + return other !== false && other !== nil; + }, 1); + + $def(self, '$==', function $NilClass_$eq_eq$5(other) { + + return other === nil; + }, 1); + + $def(self, '$dup', function $$dup() { + + return nil + }, 0); + + $def(self, '$clone', function $$clone($kwargs) { + var freeze; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + freeze = $kwargs.$$smap["freeze"]; + if (freeze == null) freeze = true; + return nil; + }, -1); + + $def(self, '$inspect', function $$inspect() { + + return "nil" + }, 0); + + $def(self, '$nil?', function $NilClass_nil$ques$6() { + + return true + }, 0); + + $def(self, '$singleton_class', function $$singleton_class() { + + return $NilClass + }, 0); + + $def(self, '$to_a', function $$to_a() { + + return [] + }, 0); + + $def(self, '$to_h', function $$to_h() { + + return Opal.hash(); + }, 0); + + $def(self, '$to_i', function $$to_i() { + + return 0 + }, 0); + + $def(self, '$to_s', function $$to_s() { + + return "" + }, 0); + + $def(self, '$to_c', function $$to_c() { + + return $$$('Complex').$new(0, 0) + }, 0); + + $def(self, '$rationalize', function $$rationalize($a) { + var $post_args, args; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if ($truthy($rb_gt(args.$length(), 1))) { + $Kernel.$raise($$$('ArgumentError')) + }; + return $Kernel.$Rational(0, 1); + }, -1); + + $def(self, '$to_r', function $$to_r() { + + return $Kernel.$Rational(0, 1) + }, 0); + + $def(self, '$instance_variables', function $$instance_variables() { + + return [] + }, 0); + return $alias(self, "to_f", "to_i"); + })('::', null, $nesting) +}; + +Opal.modules["corelib/boolean"] = function(Opal) {/* Generated by Opal 1.4.1 */ + "use strict"; + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $Kernel = Opal.Kernel, $def = Opal.def, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $alias = Opal.alias; + + Opal.add_stubs('raise,name'); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Boolean'); + + var $nesting = [self].concat($parent_nesting); + + + Opal.prop(self.$$prototype, '$$is_boolean', true); + + var properties = ['$$class', '$$meta']; + + for (var i = 0; i < properties.length; i++) { + Object.defineProperty(self.$$prototype, properties[i], { + configurable: true, + enumerable: false, + get: function() { + return this == true ? Opal.TrueClass : + this == false ? Opal.FalseClass : + Opal.Boolean; + } + }); + } + + Object.defineProperty(self.$$prototype, "$$id", { + configurable: true, + enumerable: false, + get: function() { + return this == true ? 2 : + this == false ? 0 : + nil; + } + }); + ; + (function(self, $parent_nesting) { + + + + $def(self, '$allocate', function $$allocate() { + var self = this; + + return $Kernel.$raise($$$('TypeError'), "allocator undefined for " + (self.$name())) + }, 0); + + + Opal.udef(self, '$' + "new");; + return nil;; + })(Opal.get_singleton_class(self), $nesting); + + $def(self, '$__id__', function $$__id__() { + var self = this; + + return self.valueOf() ? 2 : 0; + }, 0); + + $def(self, '$!', function $Boolean_$excl$1() { + var self = this; + + return self != true; + }, 0); + + $def(self, '$&', function $Boolean_$$2(other) { + var self = this; + + return (self == true) ? (other !== false && other !== nil) : false; + }, 1); + + $def(self, '$|', function $Boolean_$$3(other) { + var self = this; + + return (self == true) ? true : (other !== false && other !== nil); + }, 1); + + $def(self, '$^', function $Boolean_$$4(other) { + var self = this; + + return (self == true) ? (other === false || other === nil) : (other !== false && other !== nil); + }, 1); + + $def(self, '$==', function $Boolean_$eq_eq$5(other) { + var self = this; + + return (self == true) === other.valueOf(); + }, 1); + + $def(self, '$singleton_class', function $$singleton_class() { + var self = this; + + return self.$$meta; + }, 0); + + $def(self, '$to_s', function $$to_s() { + var self = this; + + return (self == true) ? 'true' : 'false'; + }, 0); + + $def(self, '$dup', function $$dup() { + var self = this; + + return self + }, 0); + + $def(self, '$clone', function $$clone($kwargs) { + var freeze, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + freeze = $kwargs.$$smap["freeze"]; + if (freeze == null) freeze = true; + return self; + }, -1); + + $def(self, '$method_missing', function $$method_missing(method, $a) { + var block = $$method_missing.$$p || nil, $post_args, args, self = this; + + delete $$method_missing.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + var body = self.$$class.$$prototype['$' + method]; + if (!$truthy(typeof body !== 'undefined' && !body.$$stub)) { + $send2(self, $find_super(self, 'method_missing', $$method_missing, false, true), 'method_missing', [method].concat($to_a(args)), block) + }; + return Opal.send(self, body, args, block); + }, -2); + + $def(self, '$respond_to_missing?', function $Boolean_respond_to_missing$ques$6(method, _include_all) { + var self = this; + + + + if (_include_all == null) _include_all = false;; + var body = self.$$class.$$prototype['$' + method]; + return typeof body !== 'undefined' && !body.$$stub;; + }, -2); + $alias(self, "eql?", "=="); + $alias(self, "equal?", "=="); + $alias(self, "inspect", "to_s"); + return $alias(self, "object_id", "__id__"); + })('::', Boolean, $nesting); + $klass('::', $$$('Boolean'), 'TrueClass'); + return ($klass('::', $$$('Boolean'), 'FalseClass'), nil); +}; + +Opal.modules["corelib/comparable"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $module = Opal.module, $rb_gt = Opal.rb_gt, $rb_lt = Opal.rb_lt, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $def = Opal.def; + + Opal.add_stubs('>,<,===,raise,class,<=>,equal?'); + return (function($base) { + var self = $module($base, 'Comparable'); + + var $ret_or_1 = nil; + + + + function normalize(what) { + if (Opal.is_a(what, Opal.Integer)) { return what; } + + if ($rb_gt(what, 0)) { return 1; } + if ($rb_lt(what, 0)) { return -1; } + return 0; + } + + function fail_comparison(lhs, rhs) { + var class_name; + (($eqeqeq(nil, ($ret_or_1 = rhs)) || (($eqeqeq(true, $ret_or_1) || (($eqeqeq(false, $ret_or_1) || (($eqeqeq($$$('Integer'), $ret_or_1) || ($eqeqeq($$$('Float'), $ret_or_1))))))))) ? (class_name = rhs.$inspect()) : (class_name = rhs.$$class)) + $Kernel.$raise($$$('ArgumentError'), "comparison of " + ((lhs).$class()) + " with " + (class_name) + " failed") + } + + function cmp_or_fail(lhs, rhs) { + var cmp = (lhs)['$<=>'](rhs); + if (!$truthy(cmp)) fail_comparison(lhs, rhs); + return normalize(cmp); + } + ; + + $def(self, '$==', function $Comparable_$eq_eq$1(other) { + var self = this, cmp = nil; + + + if ($truthy(self['$equal?'](other))) { + return true + }; + + if (self["$<=>"] == Opal.Kernel["$<=>"]) { + return false; + } + + // check for infinite recursion + if (self.$$comparable) { + delete self.$$comparable; + return false; + } + ; + if (!$truthy((cmp = self['$<=>'](other)))) { + return false + }; + return normalize(cmp) == 0;; + }, 1); + + $def(self, '$>', function $Comparable_$gt$2(other) { + var self = this; + + return cmp_or_fail(self, other) > 0; + }, 1); + + $def(self, '$>=', function $Comparable_$gt_eq$3(other) { + var self = this; + + return cmp_or_fail(self, other) >= 0; + }, 1); + + $def(self, '$<', function $Comparable_$lt$4(other) { + var self = this; + + return cmp_or_fail(self, other) < 0; + }, 1); + + $def(self, '$<=', function $Comparable_$lt_eq$5(other) { + var self = this; + + return cmp_or_fail(self, other) <= 0; + }, 1); + + $def(self, '$between?', function $Comparable_between$ques$6(min, max) { + var self = this; + + + if ($rb_lt(self, min)) { + return false + }; + if ($rb_gt(self, max)) { + return false + }; + return true; + }, 2); + return $def(self, '$clamp', function $$clamp(min, max) { + var self = this; + + + + if (max == null) max = nil;; + + var c, excl; + + if (max === nil) { + // We are dealing with a new Ruby 2.7 behaviour that we are able to + // provide a single Range argument instead of 2 Comparables. + + if (!Opal.is_a(min, Opal.Range)) { + $Kernel.$raise($$$('TypeError'), "wrong argument type " + (min.$class()) + " (expected Range)") + } + + excl = min.excl; + max = min.end; + min = min.begin; + + if (max !== nil && excl) { + $Kernel.$raise($$$('ArgumentError'), "cannot clamp with an exclusive range") + } + } + + if (min !== nil && max !== nil && cmp_or_fail(min, max) > 0) { + $Kernel.$raise($$$('ArgumentError'), "min argument must be smaller than max argument") + } + + if (min !== nil) { + c = cmp_or_fail(self, min); + + if (c == 0) return self; + if (c < 0) return min; + } + + if (max !== nil) { + c = cmp_or_fail(self, max); + + if (c > 0) return max; + } + + return self; + ; + }, -2); + })('::') +}; + +Opal.modules["corelib/regexp"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $coerce_to = Opal.coerce_to, $klass = Opal.klass, $const_set = Opal.const_set, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $truthy = Opal.truthy, $gvars = Opal.gvars, $Kernel = Opal.Kernel, $Opal = Opal.Opal, $alias = Opal.alias, $send = Opal.send, $hash2 = Opal.hash2, $rb_plus = Opal.rb_plus, $rb_ge = Opal.rb_ge, $to_a = Opal.to_a, $eqeqeq = Opal.eqeqeq, $rb_minus = Opal.rb_minus; + + Opal.add_stubs('nil?,[],raise,escape,options,to_str,new,join,coerce_to!,!,match,coerce_to?,begin,uniq,map,scan,source,to_proc,transform_values,group_by,each_with_index,+,last,=~,attr_reader,>=,length,is_a?,include?,names,regexp,named_captures,===,captures,-,inspect,empty?,each,to_a'); + + $klass('::', $$$('StandardError'), 'RegexpError'); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Regexp'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $const_set(self, 'IGNORECASE', 1); + $const_set(self, 'EXTENDED', 2); + $const_set(self, 'MULTILINE', 4); + Opal.prop(self.$$prototype, '$$is_regexp', true); + (function(self, $parent_nesting) { + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$allocate', function $$allocate() { + var $yield = $$allocate.$$p || nil, self = this, allocated = nil; + + delete $$allocate.$$p; + + allocated = $send2(self, $find_super(self, 'allocate', $$allocate, false, true), 'allocate', [], $yield); + allocated.uninitialized = true; + return allocated; + }, 0); + + $def(self, '$escape', function $$escape(string) { + + return Opal.escape_regexp(string); + }, 1); + + $def(self, '$last_match', function $$last_match(n) { + if ($gvars["~"] == null) $gvars["~"] = nil; + + + + if (n == null) n = nil;; + if ($truthy(n['$nil?']())) { + return $gvars["~"] + } else if ($truthy($gvars["~"])) { + return $gvars["~"]['$[]'](n) + } else { + return nil + }; + }, -1); + + $def(self, '$union', function $$union($a) { + var $post_args, parts, self = this; + + + + $post_args = Opal.slice.call(arguments); + + parts = $post_args;; + + var is_first_part_array, quoted_validated, part, options, each_part_options; + if (parts.length == 0) { + return /(?!)/; + } + // return fast if there's only one element + if (parts.length == 1 && parts[0].$$is_regexp) { + return parts[0]; + } + // cover the 2 arrays passed as arguments case + is_first_part_array = parts[0].$$is_array; + if (parts.length > 1 && is_first_part_array) { + $Kernel.$raise($$$('TypeError'), "no implicit conversion of Array into String") + } + // deal with splat issues (related to https://github.com/opal/opal/issues/858) + if (is_first_part_array) { + parts = parts[0]; + } + options = undefined; + quoted_validated = []; + for (var i=0; i < parts.length; i++) { + part = parts[i]; + if (part.$$is_string) { + quoted_validated.push(self.$escape(part)); + } + else if (part.$$is_regexp) { + each_part_options = (part).$options(); + if (options != undefined && options != each_part_options) { + $Kernel.$raise($$$('TypeError'), "All expressions must use the same options") + } + options = each_part_options; + quoted_validated.push('('+part.source+')'); + } + else { + quoted_validated.push(self.$escape((part).$to_str())); + } + } + ; + return self.$new((quoted_validated).$join("|"), options); + }, -1); + + $def(self, '$new', function $new$1(regexp, options) { + + + ; + + if (regexp.$$is_regexp) { + return new RegExp(regexp); + } + + regexp = $Opal['$coerce_to!'](regexp, $$$('String'), "to_str"); + + if (regexp.charAt(regexp.length - 1) === '\\' && regexp.charAt(regexp.length - 2) !== '\\') { + $Kernel.$raise($$$('RegexpError'), "too short escape sequence: /" + (regexp) + "/") + } + + if (options === undefined || options['$!']()) { + return new RegExp(regexp); + } + + if (options.$$is_number) { + var temp = ''; + if ($$('IGNORECASE') & options) { temp += 'i'; } + if ($$('MULTILINE') & options) { temp += 'm'; } + options = temp; + } + else { + options = 'i'; + } + + return new RegExp(regexp, options); + ; + }, -2); + $alias(self, "compile", "new"); + return $alias(self, "quote", "escape"); + })(Opal.get_singleton_class(self), $nesting); + + $def(self, '$==', function $Regexp_$eq_eq$2(other) { + var self = this; + + return other instanceof RegExp && self.toString() === other.toString(); + }, 1); + + $def(self, '$===', function $Regexp_$eq_eq_eq$3(string) { + var self = this; + + return self.$match($Opal['$coerce_to?'](string, $$$('String'), "to_str")) !== nil + }, 1); + + $def(self, '$=~', function $Regexp_$eq_tilde$4(string) { + var self = this, $ret_or_1 = nil; + if ($gvars["~"] == null) $gvars["~"] = nil; + + if ($truthy(($ret_or_1 = self.$match(string)))) { + return $gvars["~"].$begin(0) + } else { + return $ret_or_1 + } + }, 1); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + + var regexp_format = /^\/(.*)\/([^\/]*)$/; + var value = self.toString(); + var matches = regexp_format.exec(value); + if (matches) { + var regexp_pattern = matches[1]; + var regexp_flags = matches[2]; + var chars = regexp_pattern.split(''); + var chars_length = chars.length; + var char_escaped = false; + var regexp_pattern_escaped = ''; + for (var i = 0; i < chars_length; i++) { + var current_char = chars[i]; + if (!char_escaped && current_char == '/') { + regexp_pattern_escaped = regexp_pattern_escaped.concat('\\'); + } + regexp_pattern_escaped = regexp_pattern_escaped.concat(current_char); + if (current_char == '\\') { + if (char_escaped) { + // does not over escape + char_escaped = false; + } else { + char_escaped = true; + } + } else { + char_escaped = false; + } + } + return '/' + regexp_pattern_escaped + '/' + regexp_flags; + } else { + return value; + } + + }, 0); + + $def(self, '$match', function $$match(string, pos) { + var block = $$match.$$p || nil, self = this; + if ($gvars["~"] == null) $gvars["~"] = nil; + + delete $$match.$$p; + + ; + ; + + if (self.uninitialized) { + $Kernel.$raise($$$('TypeError'), "uninitialized Regexp") + } + + if (pos === undefined) { + if (string === nil) return ($gvars["~"] = nil); + var m = self.exec($coerce_to(string, $$$('String'), 'to_str')); + if (m) { + ($gvars["~"] = $$$('MatchData').$new(self, m)); + return block === nil ? $gvars["~"] : Opal.yield1(block, $gvars["~"]); + } else { + return ($gvars["~"] = nil); + } + } + + pos = $coerce_to(pos, $$$('Integer'), 'to_int'); + + if (string === nil) { + return ($gvars["~"] = nil); + } + + string = $coerce_to(string, $$$('String'), 'to_str'); + + if (pos < 0) { + pos += string.length; + if (pos < 0) { + return ($gvars["~"] = nil); + } + } + + // global RegExp maintains state, so not using self/this + var md, re = Opal.global_regexp(self); + + while (true) { + md = re.exec(string); + if (md === null) { + return ($gvars["~"] = nil); + } + if (md.index >= pos) { + ($gvars["~"] = $$$('MatchData').$new(re, md)); + return block === nil ? $gvars["~"] : Opal.yield1(block, $gvars["~"]); + } + re.lastIndex = md.index + 1; + } + ; + }, -2); + + $def(self, '$match?', function $Regexp_match$ques$5(string, pos) { + var self = this; + + + ; + + if (self.uninitialized) { + $Kernel.$raise($$$('TypeError'), "uninitialized Regexp") + } + + if (pos === undefined) { + return string === nil ? false : self.test($coerce_to(string, $$$('String'), 'to_str')); + } + + pos = $coerce_to(pos, $$$('Integer'), 'to_int'); + + if (string === nil) { + return false; + } + + string = $coerce_to(string, $$$('String'), 'to_str'); + + if (pos < 0) { + pos += string.length; + if (pos < 0) { + return false; + } + } + + // global RegExp maintains state, so not using self/this + var md, re = Opal.global_regexp(self); + + md = re.exec(string); + if (md === null || md.index < pos) { + return false; + } else { + return true; + } + ; + }, -2); + + $def(self, '$names', function $$names() { + var self = this; + + return $send(self.$source().$scan(/\(?<(\w+)>/, $hash2(["no_matchdata"], {"no_matchdata": true})), 'map', [], "first".$to_proc()).$uniq() + }, 0); + + $def(self, '$named_captures', function $$named_captures() { + var self = this; + + return $send($send($send(self.$source().$scan(/\(?<(\w+)>/, $hash2(["no_matchdata"], {"no_matchdata": true})), 'map', [], "first".$to_proc()).$each_with_index(), 'group_by', [], "first".$to_proc()), 'transform_values', [], function $$6(i){ + + + if (i == null) i = nil;; + return $send(i, 'map', [], function $$7(j){ + + + if (j == null) j = nil;; + return $rb_plus(j.$last(), 1);}, 1);}, 1) + }, 0); + + $def(self, '$~', function $Regexp_$$8() { + var self = this; + if ($gvars._ == null) $gvars._ = nil; + + return self['$=~']($gvars._) + }, 0); + + $def(self, '$source', function $$source() { + var self = this; + + return self.source; + }, 0); + + $def(self, '$options', function $$options() { + var self = this; + + + if (self.uninitialized) { + $Kernel.$raise($$$('TypeError'), "uninitialized Regexp") + } + var result = 0; + // should be supported in IE6 according to https://msdn.microsoft.com/en-us/library/7f5z26w4(v=vs.94).aspx + if (self.multiline) { + result |= $$('MULTILINE'); + } + if (self.ignoreCase) { + result |= $$('IGNORECASE'); + } + return result; + + }, 0); + + $def(self, '$casefold?', function $Regexp_casefold$ques$9() { + var self = this; + + return self.ignoreCase; + }, 0); + $alias(self, "eql?", "=="); + return $alias(self, "to_s", "source"); + })('::', RegExp, $nesting); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'MatchData'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.matches = nil; + + self.$attr_reader("post_match", "pre_match", "regexp", "string"); + + $def(self, '$initialize', function $$initialize(regexp, match_groups, $kwargs) { + var no_matchdata, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + no_matchdata = $kwargs.$$smap["no_matchdata"]; + if (no_matchdata == null) no_matchdata = false; + if (!$truthy(no_matchdata)) { + $gvars["~"] = self + }; + self.regexp = regexp; + self.begin = match_groups.index; + self.string = match_groups.input; + self.pre_match = match_groups.input.slice(0, match_groups.index); + self.post_match = match_groups.input.slice(match_groups.index + match_groups[0].length); + self.matches = []; + + for (var i = 0, length = match_groups.length; i < length; i++) { + var group = match_groups[i]; + + if (group == null) { + self.matches.push(nil); + } + else { + self.matches.push(group); + } + } + ; + }, -3); + + $def(self, '$match', function $$match(idx) { + var self = this, match = nil; + + if ($truthy((match = self['$[]'](idx)))) { + return match + } else if (($truthy(idx['$is_a?']($$('Integer'))) && ($truthy($rb_ge(idx, self.$length()))))) { + return $Kernel.$raise($$$('IndexError'), "index " + (idx) + " out of matches") + } else { + return nil + } + }, 1); + + $def(self, '$match_length', function $$match_length(idx) { + var $a, self = this; + + return ($a = self.$match(idx), ($a === nil || $a == null) ? nil : $send($a, 'length', [])) + }, 1); + + $def(self, '$[]', function $MatchData_$$$10($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + + if (args[0].$$is_string) { + if (self.$regexp().$names()['$include?'](args['$[]'](0))['$!']()) { + $Kernel.$raise($$$('IndexError'), "undefined group name reference: " + (args['$[]'](0))) + } + return self.$named_captures()['$[]'](args['$[]'](0)) + } + else { + return $send(self.matches, '[]', $to_a(args)) + } + ; + }, -1); + + $def(self, '$offset', function $$offset(n) { + var self = this; + + + if (n !== 0) { + $Kernel.$raise($$$('ArgumentError'), "MatchData#offset only supports 0th element") + } + return [self.begin, self.begin + self.matches[n].length]; + + }, 1); + + $def(self, '$==', function $MatchData_$eq_eq$11(other) { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil, $ret_or_4 = nil; + + + if (!$eqeqeq($$$('MatchData'), other)) { + return false + }; + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = ($truthy(($ret_or_3 = ($truthy(($ret_or_4 = self.string == other.string)) ? (self.regexp.toString() == other.regexp.toString()) : ($ret_or_4)))) ? (self.pre_match == other.pre_match) : ($ret_or_3)))) ? (self.post_match == other.post_match) : ($ret_or_2))))) { + return self.begin == other.begin; + } else { + return $ret_or_1 + }; + }, 1); + + $def(self, '$begin', function $$begin(n) { + var self = this; + + + if (n !== 0) { + $Kernel.$raise($$$('ArgumentError'), "MatchData#begin only supports 0th element") + } + return self.begin; + + }, 1); + + $def(self, '$end', function $$end(n) { + var self = this; + + + if (n !== 0) { + $Kernel.$raise($$$('ArgumentError'), "MatchData#end only supports 0th element") + } + return self.begin + self.matches[n].length; + + }, 1); + + $def(self, '$captures', function $$captures() { + var self = this; + + return self.matches.slice(1) + }, 0); + + $def(self, '$named_captures', function $$named_captures() { + var self = this, matches = nil; + + + matches = self.$captures(); + return $send(self.$regexp().$named_captures(), 'transform_values', [], function $$12(i){ + + + if (i == null) i = nil;; + return matches['$[]']($rb_minus(i.$last(), 1));}, 1); + }, 0); + + $def(self, '$names', function $$names() { + var self = this; + + return self.$regexp().$names() + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + + var str = "#"; + + }, 0); + + $def(self, '$length', function $$length() { + var self = this; + + return self.matches.length + }, 0); + + $def(self, '$to_a', function $$to_a() { + var self = this; + + return self.matches + }, 0); + + $def(self, '$to_s', function $$to_s() { + var self = this; + + return self.matches[0] + }, 0); + + $def(self, '$values_at', function $$values_at($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + + var i, a, index, values = []; + + for (i = 0; i < args.length; i++) { + + if (args[i].$$is_range) { + a = (args[i]).$to_a(); + a.unshift(i, 1); + Array.prototype.splice.apply(args, a); + } + + index = $Opal['$coerce_to!'](args[i], $$$('Integer'), "to_int"); + + if (index < 0) { + index += self.matches.length; + if (index < 0) { + values.push(nil); + continue; + } + } + + values.push(self.matches[index]); + } + + return values; + ; + }, -1); + $alias(self, "eql?", "=="); + return $alias(self, "size", "length"); + })($nesting[0], null, $nesting); +}; + +Opal.modules["corelib/string"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $coerce_to = Opal.coerce_to, $respond_to = Opal.respond_to, $global_multiline_regexp = Opal.global_multiline_regexp, $klass = Opal.klass, $def = Opal.def, $Opal = Opal.Opal, $defs = Opal.defs, $send = Opal.send, $to_a = Opal.to_a, $hash2 = Opal.hash2, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $truthy = Opal.truthy, $gvars = Opal.gvars, $rb_divide = Opal.rb_divide, $rb_plus = Opal.rb_plus, $alias = Opal.alias, $const_set = Opal.const_set; + + Opal.add_stubs('require,include,coerce_to?,initialize,===,format,raise,respond_to?,to_s,to_str,<=>,==,=~,new,force_encoding,casecmp,empty?,ljust,ceil,/,+,rjust,floor,coerce_to!,copy_singleton_methods,initialize_clone,initialize_dup,enum_for,chomp,[],to_i,each_line,to_proc,to_a,class,match,match?,captures,proc,succ,escape,include?,upcase,unicode_normalize,pristine'); + + self.$require("corelib/comparable"); + self.$require("corelib/regexp"); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'String'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$include($$$('Comparable')); + + Opal.prop(self.$$prototype, '$$is_string', true); + + Opal.prop(self.$$prototype, '$$cast', function(string) { + var klass = this.$$class; + if (klass.$$constructor === String) { + return string; + } else { + return new klass.$$constructor(string); + } + }); + ; + + $def(self, '$__id__', function $$__id__() { + var self = this; + + return self.toString(); + }, 0); + $defs(self, '$try_convert', function $$try_convert(what) { + + return $Opal['$coerce_to?'](what, $$$('String'), "to_str") + }, 1); + $defs(self, '$new', function $String_new$1($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + + var str = args[0] || ""; + var opts = args[args.length-1]; + str = $coerce_to(str, $$$('String'), 'to_str'); + if (opts && opts.$$is_hash) { + if (opts.$$smap.encoding) str = str.$force_encoding(opts.$$smap.encoding); + } + str = new self.$$constructor(str); + if (!str.$initialize.$$pristine) $send((str), 'initialize', $to_a(args)); + return str; + ; + }, -1); + + $def(self, '$initialize', function $$initialize($a, $b) { + var $post_args, $kwargs, str, encoding, capacity; + + + + $post_args = Opal.slice.call(arguments); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if ($post_args.length > 0) str = $post_args.shift();; + + encoding = $kwargs.$$smap["encoding"]; + if (encoding == null) encoding = nil; + + capacity = $kwargs.$$smap["capacity"]; + if (capacity == null) capacity = nil; + return nil; + }, -1); + + $def(self, '$%', function $String_$percent$2(data) { + var self = this; + + if ($eqeqeq($$$('Array'), data)) { + return $send(self, 'format', [self].concat($to_a(data))) + } else { + return self.$format(self, data) + } + }, 1); + + $def(self, '$*', function $String_$$3(count) { + var self = this; + + + count = $coerce_to(count, $$$('Integer'), 'to_int'); + + if (count < 0) { + $Kernel.$raise($$$('ArgumentError'), "negative argument") + } + + if (count === 0) { + return self.$$cast(''); + } + + var result = '', + string = self.toString(); + + // All credit for the bit-twiddling magic code below goes to Mozilla + // polyfill implementation of String.prototype.repeat() posted here: + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat + + if (string.length * count >= 1 << 28) { + $Kernel.$raise($$$('RangeError'), "multiply count must not overflow maximum string size") + } + + for (;;) { + if ((count & 1) === 1) { + result += string; + } + count >>>= 1; + if (count === 0) { + break; + } + string += string; + } + + return self.$$cast(result); + + }, 1); + + $def(self, '$+', function $String_$plus$4(other) { + var self = this; + + + other = $coerce_to(other, $$$('String'), 'to_str'); + + if (other == "" && self.$$class === Opal.String) return self; + if (self == "" && other.$$class === Opal.String) return other; + var out = self + other; + if (self.encoding === out.encoding && other.encoding === out.encoding) return out; + if (self.encoding.name === "UTF-8" || other.encoding.name === "UTF-8") return out; + return Opal.enc(out, self.encoding); + ; + }, 1); + + $def(self, '$<=>', function $String_$lt_eq_gt$5(other) { + var self = this; + + if ($truthy(other['$respond_to?']("to_str"))) { + + other = other.$to_str().$to_s(); + return self > other ? 1 : (self < other ? -1 : 0);; + } else { + + var cmp = other['$<=>'](self); + + if (cmp === nil) { + return nil; + } + else { + return cmp > 0 ? -1 : (cmp < 0 ? 1 : 0); + } + + } + }, 1); + + $def(self, '$==', function $String_$eq_eq$6(other) { + var self = this; + + + if (other.$$is_string) { + return self.toString() === other.toString(); + } + if ($respond_to(other, '$to_str')) { + return other['$=='](self); + } + return false; + + }, 1); + + $def(self, '$=~', function $String_$eq_tilde$7(other) { + var self = this; + + + if (other.$$is_string) { + $Kernel.$raise($$$('TypeError'), "type mismatch: String given"); + } + + return other['$=~'](self); + + }, 1); + + $def(self, '$[]', function $String_$$$8(index, length) { + var self = this; + + + ; + + var size = self.length, exclude, range; + + if (index.$$is_range) { + exclude = index.excl; + range = index; + length = index.end === nil ? -1 : $coerce_to(index.end, $$$('Integer'), 'to_int'); + index = index.begin === nil ? 0 : $coerce_to(index.begin, $$$('Integer'), 'to_int'); + + if (Math.abs(index) > size) { + return nil; + } + + if (index < 0) { + index += size; + } + + if (length < 0) { + length += size; + } + + if (!exclude || range.end === nil) { + length += 1; + } + + length = length - index; + + if (length < 0) { + length = 0; + } + + return self.$$cast(self.substr(index, length)); + } + + + if (index.$$is_string) { + if (length != null) { + $Kernel.$raise($$$('TypeError')) + } + return self.indexOf(index) !== -1 ? self.$$cast(index) : nil; + } + + + if (index.$$is_regexp) { + var match = self.match(index); + + if (match === null) { + ($gvars["~"] = nil) + return nil; + } + + ($gvars["~"] = $$$('MatchData').$new(index, match)) + + if (length == null) { + return self.$$cast(match[0]); + } + + length = $coerce_to(length, $$$('Integer'), 'to_int'); + + if (length < 0 && -length < match.length) { + return self.$$cast(match[length += match.length]); + } + + if (length >= 0 && length < match.length) { + return self.$$cast(match[length]); + } + + return nil; + } + + + index = $coerce_to(index, $$$('Integer'), 'to_int'); + + if (index < 0) { + index += size; + } + + if (length == null) { + if (index >= size || index < 0) { + return nil; + } + return self.$$cast(self.substr(index, 1)); + } + + length = $coerce_to(length, $$$('Integer'), 'to_int'); + + if (length < 0) { + return nil; + } + + if (index > size || index < 0) { + return nil; + } + + return self.$$cast(self.substr(index, length)); + ; + }, -2); + + $def(self, '$b', function $$b() { + var self = this; + + return (new String(self)).$force_encoding("binary") + }, 0); + + $def(self, '$capitalize', function $$capitalize() { + var self = this; + + return self.$$cast(self.charAt(0).toUpperCase() + self.substr(1).toLowerCase()); + }, 0); + + $def(self, '$casecmp', function $$casecmp(other) { + var self = this; + + + if (!$truthy(other['$respond_to?']("to_str"))) { + return nil + }; + other = ($coerce_to(other, $$$('String'), 'to_str')).$to_s(); + + var ascii_only = /^[\x00-\x7F]*$/; + if (ascii_only.test(self) && ascii_only.test(other)) { + self = self.toLowerCase(); + other = other.toLowerCase(); + } + ; + return self['$<=>'](other); + }, 1); + + $def(self, '$casecmp?', function $String_casecmp$ques$9(other) { + var self = this; + + + var cmp = self.$casecmp(other); + if (cmp === nil) { + return nil; + } else { + return cmp === 0; + } + + }, 1); + + $def(self, '$center', function $$center(width, padstr) { + var self = this; + + + + if (padstr == null) padstr = " ";; + width = $coerce_to(width, $$$('Integer'), 'to_int'); + padstr = ($coerce_to(padstr, $$$('String'), 'to_str')).$to_s(); + if ($truthy(padstr['$empty?']())) { + $Kernel.$raise($$$('ArgumentError'), "zero width padding") + }; + if ($truthy(width <= self.length)) { + return self + }; + + var ljustified = self.$ljust($rb_divide($rb_plus(width, self.length), 2).$ceil(), padstr), + rjustified = self.$rjust($rb_divide($rb_plus(width, self.length), 2).$floor(), padstr); + + return self.$$cast(rjustified + ljustified.slice(self.length)); + ; + }, -2); + + $def(self, '$chomp', function $$chomp(separator) { + var self = this; + if ($gvars["/"] == null) $gvars["/"] = nil; + + + + if (separator == null) separator = $gvars["/"];; + if ($truthy(separator === nil || self.length === 0)) { + return self + }; + separator = $Opal['$coerce_to!'](separator, $$$('String'), "to_str").$to_s(); + + var result; + + if (separator === "\n") { + result = self.replace(/\r?\n?$/, ''); + } + else if (separator === "") { + result = self.replace(/(\r?\n)+$/, ''); + } + else if (self.length >= separator.length) { + var tail = self.substr(self.length - separator.length, separator.length); + + if (tail === separator) { + result = self.substr(0, self.length - separator.length); + } + } + + if (result != null) { + return self.$$cast(result); + } + ; + return self; + }, -1); + + $def(self, '$chop', function $$chop() { + var self = this; + + + var length = self.length, result; + + if (length <= 1) { + result = ""; + } else if (self.charAt(length - 1) === "\n" && self.charAt(length - 2) === "\r") { + result = self.substr(0, length - 2); + } else { + result = self.substr(0, length - 1); + } + + return self.$$cast(result); + + }, 0); + + $def(self, '$chr', function $$chr() { + var self = this; + + return self.charAt(0); + }, 0); + + $def(self, '$clone', function $$clone() { + var self = this, copy = nil; + + + copy = new String(self); + copy.$copy_singleton_methods(self); + copy.$initialize_clone(self); + return copy; + }, 0); + + $def(self, '$dup', function $$dup() { + var self = this, copy = nil; + + + copy = new String(self); + copy.$initialize_dup(self); + return copy; + }, 0); + + $def(self, '$count', function $$count($a) { + var $post_args, sets, self = this; + + + + $post_args = Opal.slice.call(arguments); + + sets = $post_args;; + + if (sets.length === 0) { + $Kernel.$raise($$$('ArgumentError'), "ArgumentError: wrong number of arguments (0 for 1+)") + } + var char_class = char_class_from_char_sets(sets); + if (char_class === null) { + return 0; + } + return self.length - self.replace(new RegExp(char_class, 'g'), '').length; + ; + }, -1); + + $def(self, '$delete', function $String_delete$10($a) { + var $post_args, sets, self = this; + + + + $post_args = Opal.slice.call(arguments); + + sets = $post_args;; + + if (sets.length === 0) { + $Kernel.$raise($$$('ArgumentError'), "ArgumentError: wrong number of arguments (0 for 1+)") + } + var char_class = char_class_from_char_sets(sets); + if (char_class === null) { + return self; + } + return self.$$cast(self.replace(new RegExp(char_class, 'g'), '')); + ; + }, -1); + + $def(self, '$delete_prefix', function $$delete_prefix(prefix) { + var self = this; + + + if (!prefix.$$is_string) { + prefix = $coerce_to(prefix, $$$('String'), 'to_str'); + } + + if (self.slice(0, prefix.length) === prefix) { + return self.$$cast(self.slice(prefix.length)); + } else { + return self; + } + + }, 1); + + $def(self, '$delete_suffix', function $$delete_suffix(suffix) { + var self = this; + + + if (!suffix.$$is_string) { + suffix = $coerce_to(suffix, $$$('String'), 'to_str'); + } + + if (self.slice(self.length - suffix.length) === suffix) { + return self.$$cast(self.slice(0, self.length - suffix.length)); + } else { + return self; + } + + }, 1); + + $def(self, '$downcase', function $$downcase() { + var self = this; + + return self.$$cast(self.toLowerCase()); + }, 0); + + $def(self, '$each_line', function $$each_line($a, $b) { + var block = $$each_line.$$p || nil, $post_args, $kwargs, separator, chomp, self = this; + if ($gvars["/"] == null) $gvars["/"] = nil; + + delete $$each_line.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if ($post_args.length > 0) separator = $post_args.shift(); + if (separator == null) separator = $gvars["/"];; + + chomp = $kwargs.$$smap["chomp"]; + if (chomp == null) chomp = false; + if (!(block !== nil)) { + return self.$enum_for("each_line", separator, $hash2(["chomp"], {"chomp": chomp})) + }; + + if (separator === nil) { + Opal.yield1(block, self); + + return self; + } + + separator = $coerce_to(separator, $$$('String'), 'to_str'); + + var a, i, n, length, chomped, trailing, splitted, value; + + if (separator.length === 0) { + for (a = self.split(/((?:\r?\n){2})(?:(?:\r?\n)*)/), i = 0, n = a.length; i < n; i += 2) { + if (a[i] || a[i + 1]) { + value = (a[i] || "") + (a[i + 1] || ""); + if (chomp) { + value = (value).$chomp("\n"); + } + Opal.yield1(block, value); + } + } + + return self; + } + + chomped = self.$chomp(separator); + trailing = self.length != chomped.length; + splitted = chomped.split(separator); + + for (i = 0, length = splitted.length; i < length; i++) { + value = splitted[i]; + if (i < length - 1 || trailing) { + value += separator; + } + if (chomp) { + value = (value).$chomp(separator); + } + Opal.yield1(block, value); + } + ; + return self; + }, -1); + + $def(self, '$empty?', function $String_empty$ques$11() { + var self = this; + + return self.length === 0; + }, 0); + + $def(self, '$end_with?', function $String_end_with$ques$12($a) { + var $post_args, suffixes, self = this; + + + + $post_args = Opal.slice.call(arguments); + + suffixes = $post_args;; + + for (var i = 0, length = suffixes.length; i < length; i++) { + var suffix = $coerce_to(suffixes[i], $$$('String'), 'to_str').$to_s(); + + if (self.length >= suffix.length && + self.substr(self.length - suffix.length, suffix.length) == suffix) { + return true; + } + } + ; + return false; + }, -1); + + $def(self, '$gsub', function $$gsub(pattern, replacement) { + var block = $$gsub.$$p || nil, self = this; + + delete $$gsub.$$p; + + ; + ; + + if (replacement === undefined && block === nil) { + return self.$enum_for("gsub", pattern); + } + + var result = '', match_data = nil, index = 0, match, _replacement; + + if (pattern.$$is_regexp) { + pattern = $global_multiline_regexp(pattern); + } else { + pattern = $coerce_to(pattern, $$$('String'), 'to_str'); + pattern = new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gm'); + } + + var lastIndex; + while (true) { + match = pattern.exec(self); + + if (match === null) { + ($gvars["~"] = nil) + result += self.slice(index); + break; + } + + match_data = $$$('MatchData').$new(pattern, match); + + if (replacement === undefined) { + lastIndex = pattern.lastIndex; + _replacement = block(match[0]); + pattern.lastIndex = lastIndex; // save and restore lastIndex + } + else if (replacement.$$is_hash) { + _replacement = (replacement)['$[]'](match[0]).$to_s(); + } + else { + if (!replacement.$$is_string) { + replacement = $coerce_to(replacement, $$$('String'), 'to_str'); + } + _replacement = replacement.replace(/([\\]+)([0-9+&`'])/g, function (original, slashes, command) { + if (slashes.length % 2 === 0) { + return original; + } + switch (command) { + case "+": + for (var i = match.length - 1; i > 0; i--) { + if (match[i] !== undefined) { + return slashes.slice(1) + match[i]; + } + } + return ''; + case "&": return slashes.slice(1) + match[0]; + case "`": return slashes.slice(1) + self.slice(0, match.index); + case "'": return slashes.slice(1) + self.slice(match.index + match[0].length); + default: return slashes.slice(1) + (match[command] || ''); + } + }).replace(/\\\\/g, '\\'); + } + + if (pattern.lastIndex === match.index) { + result += (self.slice(index, match.index) + _replacement + (self[match.index] || "")); + pattern.lastIndex += 1; + } + else { + result += (self.slice(index, match.index) + _replacement) + } + index = pattern.lastIndex; + } + + ($gvars["~"] = match_data) + return self.$$cast(result); + ; + }, -2); + + $def(self, '$hash', function $$hash() { + var self = this; + + return self.toString(); + }, 0); + + $def(self, '$hex', function $$hex() { + var self = this; + + return self.$to_i(16) + }, 0); + + $def(self, '$include?', function $String_include$ques$13(other) { + var self = this; + + + if (!other.$$is_string) { + other = $coerce_to(other, $$$('String'), 'to_str'); + } + return self.indexOf(other) !== -1; + + }, 1); + + $def(self, '$index', function $$index(search, offset) { + var self = this; + + + ; + + var index, + match, + regex; + + if (offset === undefined) { + offset = 0; + } else { + offset = $coerce_to(offset, $$$('Integer'), 'to_int'); + if (offset < 0) { + offset += self.length; + if (offset < 0) { + return nil; + } + } + } + + if (search.$$is_regexp) { + regex = $global_multiline_regexp(search); + while (true) { + match = regex.exec(self); + if (match === null) { + ($gvars["~"] = nil); + index = -1; + break; + } + if (match.index >= offset) { + ($gvars["~"] = $$$('MatchData').$new(regex, match)) + index = match.index; + break; + } + regex.lastIndex = match.index + 1; + } + } else { + search = $coerce_to(search, $$$('String'), 'to_str'); + if (search.length === 0 && offset > self.length) { + index = -1; + } else { + index = self.indexOf(search, offset); + } + } + + return index === -1 ? nil : index; + ; + }, -2); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + + /* eslint-disable no-misleading-character-class */ + var escapable = /[\\\"\x00-\x1f\u007F-\u009F\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + meta = { + '\u0007': '\\a', + '\u001b': '\\e', + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '\v': '\\v', + '"' : '\\"', + '\\': '\\\\' + }, + escaped = self.replace(escapable, function (chr) { + if (meta[chr]) return meta[chr]; + chr = chr.charCodeAt(0); + if (chr <= 0xff && (self.encoding["$binary?"]() || self.internal_encoding["$binary?"]())) { + return '\\x' + ('00' + chr.toString(16).toUpperCase()).slice(-2); + } else { + return '\\u' + ('0000' + chr.toString(16).toUpperCase()).slice(-4); + } + }); + return '"' + escaped.replace(/\#[\$\@\{]/g, '\\$&') + '"'; + /* eslint-enable no-misleading-character-class */ + + }, 0); + + $def(self, '$intern', function $$intern() { + var self = this; + + return self.toString(); + }, 0); + + $def(self, '$lines', function $$lines($a, $b) { + var block = $$lines.$$p || nil, $post_args, $kwargs, separator, chomp, self = this, e = nil; + if ($gvars["/"] == null) $gvars["/"] = nil; + + delete $$lines.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if ($post_args.length > 0) separator = $post_args.shift(); + if (separator == null) separator = $gvars["/"];; + + chomp = $kwargs.$$smap["chomp"]; + if (chomp == null) chomp = false; + e = $send(self, 'each_line', [separator, $hash2(["chomp"], {"chomp": chomp})], block.$to_proc()); + if ($truthy(block)) { + return self + } else { + return e.$to_a() + }; + }, -1); + + $def(self, '$ljust', function $$ljust(width, padstr) { + var self = this; + + + + if (padstr == null) padstr = " ";; + width = $coerce_to(width, $$$('Integer'), 'to_int'); + padstr = ($coerce_to(padstr, $$$('String'), 'to_str')).$to_s(); + if ($truthy(padstr['$empty?']())) { + $Kernel.$raise($$$('ArgumentError'), "zero width padding") + }; + if ($truthy(width <= self.length)) { + return self + }; + + var index = -1, + result = ""; + + width -= self.length; + + while (++index < width) { + result += padstr; + } + + return self.$$cast(self + result.slice(0, width)); + ; + }, -2); + + $def(self, '$lstrip', function $$lstrip() { + var self = this; + + return self.replace(/^[\u0000\s]*/, ''); + }, 0); + + $def(self, '$ascii_only?', function $String_ascii_only$ques$14() { + var self = this; + + + if (!self.encoding.ascii) return false; + return /^[\x00-\x7F]*$/.test(self); + + }, 0); + + $def(self, '$match', function $$match(pattern, pos) { + var block = $$match.$$p || nil, self = this; + + delete $$match.$$p; + + ; + ; + if (($eqeqeq($$('String'), pattern) || ($truthy(pattern['$respond_to?']("to_str"))))) { + pattern = $$$('Regexp').$new(pattern.$to_str()) + }; + if (!$eqeqeq($$$('Regexp'), pattern)) { + $Kernel.$raise($$$('TypeError'), "wrong argument type " + (pattern.$class()) + " (expected Regexp)") + }; + return $send(pattern, 'match', [self, pos], block.$to_proc()); + }, -2); + + $def(self, '$match?', function $String_match$ques$15(pattern, pos) { + var self = this; + + + ; + if (($eqeqeq($$('String'), pattern) || ($truthy(pattern['$respond_to?']("to_str"))))) { + pattern = $$$('Regexp').$new(pattern.$to_str()) + }; + if (!$eqeqeq($$$('Regexp'), pattern)) { + $Kernel.$raise($$$('TypeError'), "wrong argument type " + (pattern.$class()) + " (expected Regexp)") + }; + return pattern['$match?'](self, pos); + }, -2); + + $def(self, '$next', function $$next() { + var self = this; + + + var i = self.length; + if (i === 0) { + return self.$$cast(''); + } + var result = self; + var first_alphanum_char_index = self.search(/[a-zA-Z0-9]/); + var carry = false; + var code; + while (i--) { + code = self.charCodeAt(i); + if ((code >= 48 && code <= 57) || + (code >= 65 && code <= 90) || + (code >= 97 && code <= 122)) { + switch (code) { + case 57: + carry = true; + code = 48; + break; + case 90: + carry = true; + code = 65; + break; + case 122: + carry = true; + code = 97; + break; + default: + carry = false; + code += 1; + } + } else { + if (first_alphanum_char_index === -1) { + if (code === 255) { + carry = true; + code = 0; + } else { + carry = false; + code += 1; + } + } else { + carry = true; + } + } + result = result.slice(0, i) + String.fromCharCode(code) + result.slice(i + 1); + if (carry && (i === 0 || i === first_alphanum_char_index)) { + switch (code) { + case 65: + break; + case 97: + break; + default: + code += 1; + } + if (i === 0) { + result = String.fromCharCode(code) + result; + } else { + result = result.slice(0, i) + String.fromCharCode(code) + result.slice(i); + } + carry = false; + } + if (!carry) { + break; + } + } + return self.$$cast(result); + + }, 0); + + $def(self, '$oct', function $$oct() { + var self = this; + + + var result, + string = self, + radix = 8; + + if (/^\s*_/.test(string)) { + return 0; + } + + string = string.replace(/^(\s*[+-]?)(0[bodx]?)(.+)$/i, function (original, head, flag, tail) { + switch (tail.charAt(0)) { + case '+': + case '-': + return original; + case '0': + if (tail.charAt(1) === 'x' && flag === '0x') { + return original; + } + } + switch (flag) { + case '0b': + radix = 2; + break; + case '0': + case '0o': + radix = 8; + break; + case '0d': + radix = 10; + break; + case '0x': + radix = 16; + break; + } + return head + tail; + }); + + result = parseInt(string.replace(/_(?!_)/g, ''), radix); + return isNaN(result) ? 0 : result; + + }, 0); + + $def(self, '$ord', function $$ord() { + var self = this; + + + if (typeof self.codePointAt === "function") { + return self.codePointAt(0); + } + else { + return self.charCodeAt(0); + } + + }, 0); + + $def(self, '$partition', function $$partition(sep) { + var self = this; + + + var i, m; + + if (sep.$$is_regexp) { + m = sep.exec(self); + if (m === null) { + i = -1; + } else { + $$$('MatchData').$new(sep, m); + sep = m[0]; + i = m.index; + } + } else { + sep = $coerce_to(sep, $$$('String'), 'to_str'); + i = self.indexOf(sep); + } + + if (i === -1) { + return [self, '', '']; + } + + return [ + self.slice(0, i), + self.slice(i, i + sep.length), + self.slice(i + sep.length) + ]; + + }, 1); + + $def(self, '$reverse', function $$reverse() { + var self = this; + + return self.split('').reverse().join(''); + }, 0); + + $def(self, '$rindex', function $$rindex(search, offset) { + var self = this; + + + ; + + var i, m, r, _m; + + if (offset === undefined) { + offset = self.length; + } else { + offset = $coerce_to(offset, $$$('Integer'), 'to_int'); + if (offset < 0) { + offset += self.length; + if (offset < 0) { + return nil; + } + } + } + + if (search.$$is_regexp) { + m = null; + r = $global_multiline_regexp(search); + while (true) { + _m = r.exec(self); + if (_m === null || _m.index > offset) { + break; + } + m = _m; + r.lastIndex = m.index + 1; + } + if (m === null) { + ($gvars["~"] = nil) + i = -1; + } else { + $$$('MatchData').$new(r, m); + i = m.index; + } + } else { + search = $coerce_to(search, $$$('String'), 'to_str'); + i = self.lastIndexOf(search, offset); + } + + return i === -1 ? nil : i; + ; + }, -2); + + $def(self, '$rjust', function $$rjust(width, padstr) { + var self = this; + + + + if (padstr == null) padstr = " ";; + width = $coerce_to(width, $$$('Integer'), 'to_int'); + padstr = ($coerce_to(padstr, $$$('String'), 'to_str')).$to_s(); + if ($truthy(padstr['$empty?']())) { + $Kernel.$raise($$$('ArgumentError'), "zero width padding") + }; + if ($truthy(width <= self.length)) { + return self + }; + + var chars = Math.floor(width - self.length), + patterns = Math.floor(chars / padstr.length), + result = Array(patterns + 1).join(padstr), + remaining = chars - result.length; + + return self.$$cast(result + padstr.slice(0, remaining) + self); + ; + }, -2); + + $def(self, '$rpartition', function $$rpartition(sep) { + var self = this; + + + var i, m, r, _m; + + if (sep.$$is_regexp) { + m = null; + r = $global_multiline_regexp(sep); + + while (true) { + _m = r.exec(self); + if (_m === null) { + break; + } + m = _m; + r.lastIndex = m.index + 1; + } + + if (m === null) { + i = -1; + } else { + $$$('MatchData').$new(r, m); + sep = m[0]; + i = m.index; + } + + } else { + sep = $coerce_to(sep, $$$('String'), 'to_str'); + i = self.lastIndexOf(sep); + } + + if (i === -1) { + return ['', '', self]; + } + + return [ + self.slice(0, i), + self.slice(i, i + sep.length), + self.slice(i + sep.length) + ]; + + }, 1); + + $def(self, '$rstrip', function $$rstrip() { + var self = this; + + return self.replace(/[\s\u0000]*$/, ''); + }, 0); + + $def(self, '$scan', function $$scan(pattern, $kwargs) { + var block = $$scan.$$p || nil, no_matchdata, self = this; + + delete $$scan.$$p; + + ; + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + no_matchdata = $kwargs.$$smap["no_matchdata"]; + if (no_matchdata == null) no_matchdata = false; + + var result = [], + match_data = nil, + match; + + if (pattern.$$is_regexp) { + pattern = $global_multiline_regexp(pattern); + } else { + pattern = $coerce_to(pattern, $$$('String'), 'to_str'); + pattern = new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gm'); + } + + while ((match = pattern.exec(self)) != null) { + match_data = $$$('MatchData').$new(pattern, match, $hash2(["no_matchdata"], {"no_matchdata": no_matchdata})); + if (block === nil) { + match.length == 1 ? result.push(match[0]) : result.push((match_data).$captures()); + } else { + match.length == 1 ? Opal.yield1(block, match[0]) : Opal.yield1(block, (match_data).$captures()); + } + if (pattern.lastIndex === match.index) { + pattern.lastIndex += 1; + } + } + + if (!no_matchdata) ($gvars["~"] = match_data); + + return (block !== nil ? self : result); + ; + }, -2); + + $def(self, '$singleton_class', function $$singleton_class() { + var self = this; + + return Opal.get_singleton_class(self); + }, 0); + + $def(self, '$split', function $$split(pattern, limit) { + var self = this, $ret_or_1 = nil; + if ($gvars[";"] == null) $gvars[";"] = nil; + + + ; + ; + + if (self.length === 0) { + return []; + } + + if (limit === undefined) { + limit = 0; + } else { + limit = $Opal['$coerce_to!'](limit, $$$('Integer'), "to_int"); + if (limit === 1) { + return [self]; + } + } + + if (pattern === undefined || pattern === nil) { + pattern = ($truthy(($ret_or_1 = $gvars[";"])) ? ($ret_or_1) : (" ")); + } + + var result = [], + string = self.toString(), + index = 0, + match, + i, ii; + + if (pattern.$$is_regexp) { + pattern = $global_multiline_regexp(pattern); + } else { + pattern = $coerce_to(pattern, $$$('String'), 'to_str').$to_s(); + if (pattern === ' ') { + pattern = /\s+/gm; + string = string.replace(/^\s+/, ''); + } else { + pattern = new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gm'); + } + } + + result = string.split(pattern); + + if (result.length === 1 && result[0] === string) { + return [self.$$cast(result[0])]; + } + + while ((i = result.indexOf(undefined)) !== -1) { + result.splice(i, 1); + } + + function castResult() { + for (i = 0; i < result.length; i++) { + result[i] = self.$$cast(result[i]); + } + } + + if (limit === 0) { + while (result[result.length - 1] === '') { + result.length -= 1; + } + castResult(); + return result; + } + + match = pattern.exec(string); + + if (limit < 0) { + if (match !== null && match[0] === '' && pattern.source.indexOf('(?=') === -1) { + for (i = 0, ii = match.length; i < ii; i++) { + result.push(''); + } + } + castResult(); + return result; + } + + if (match !== null && match[0] === '') { + result.splice(limit - 1, result.length - 1, result.slice(limit - 1).join('')); + castResult(); + return result; + } + + if (limit >= result.length) { + castResult(); + return result; + } + + i = 0; + while (match !== null) { + i++; + index = pattern.lastIndex; + if (i + 1 === limit) { + break; + } + match = pattern.exec(string); + } + result.splice(limit - 1, result.length - 1, string.slice(index)); + castResult(); + return result; + ; + }, -1); + + $def(self, '$squeeze', function $$squeeze($a) { + var $post_args, sets, self = this; + + + + $post_args = Opal.slice.call(arguments); + + sets = $post_args;; + + if (sets.length === 0) { + return self.$$cast(self.replace(/(.)\1+/g, '$1')); + } + var char_class = char_class_from_char_sets(sets); + if (char_class === null) { + return self; + } + return self.$$cast(self.replace(new RegExp('(' + char_class + ')\\1+', 'g'), '$1')); + ; + }, -1); + + $def(self, '$start_with?', function $String_start_with$ques$16($a) { + var $post_args, prefixes, self = this; + + + + $post_args = Opal.slice.call(arguments); + + prefixes = $post_args;; + + for (var i = 0, length = prefixes.length; i < length; i++) { + if (prefixes[i].$$is_regexp) { + var regexp = prefixes[i]; + var match = regexp.exec(self); + + if (match != null && match.index === 0) { + ($gvars["~"] = $$$('MatchData').$new(regexp, match)); + return true; + } else { + ($gvars["~"] = nil) + } + } else { + var prefix = $coerce_to(prefixes[i], $$$('String'), 'to_str').$to_s(); + + if (self.indexOf(prefix) === 0) { + return true; + } + } + } + + return false; + ; + }, -1); + + $def(self, '$strip', function $$strip() { + var self = this; + + return self.replace(/^[\s\u0000]*|[\s\u0000]*$/g, ''); + }, 0); + + $def(self, '$sub', function $$sub(pattern, replacement) { + var block = $$sub.$$p || nil, self = this; + + delete $$sub.$$p; + + ; + ; + + if (!pattern.$$is_regexp) { + pattern = $coerce_to(pattern, $$$('String'), 'to_str'); + pattern = new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')); + } + + var result, match = pattern.exec(self); + + if (match === null) { + ($gvars["~"] = nil) + result = self.toString(); + } else { + $$$('MatchData').$new(pattern, match) + + if (replacement === undefined) { + + if (block === nil) { + $Kernel.$raise($$$('ArgumentError'), "wrong number of arguments (1 for 2)") + } + result = self.slice(0, match.index) + block(match[0]) + self.slice(match.index + match[0].length); + + } else if (replacement.$$is_hash) { + + result = self.slice(0, match.index) + (replacement)['$[]'](match[0]).$to_s() + self.slice(match.index + match[0].length); + + } else { + + replacement = $coerce_to(replacement, $$$('String'), 'to_str'); + + replacement = replacement.replace(/([\\]+)([0-9+&`'])/g, function (original, slashes, command) { + if (slashes.length % 2 === 0) { + return original; + } + switch (command) { + case "+": + for (var i = match.length - 1; i > 0; i--) { + if (match[i] !== undefined) { + return slashes.slice(1) + match[i]; + } + } + return ''; + case "&": return slashes.slice(1) + match[0]; + case "`": return slashes.slice(1) + self.slice(0, match.index); + case "'": return slashes.slice(1) + self.slice(match.index + match[0].length); + default: return slashes.slice(1) + (match[command] || ''); + } + }).replace(/\\\\/g, '\\'); + + result = self.slice(0, match.index) + replacement + self.slice(match.index + match[0].length); + } + } + + return self.$$cast(result); + ; + }, -2); + + $def(self, '$sum', function $$sum(n) { + var self = this; + + + + if (n == null) n = 16;; + + n = $coerce_to(n, $$$('Integer'), 'to_int'); + + var result = 0, + length = self.length, + i = 0; + + for (; i < length; i++) { + result += self.charCodeAt(i); + } + + if (n <= 0) { + return result; + } + + return result & (Math.pow(2, n) - 1); + ; + }, -1); + + $def(self, '$swapcase', function $$swapcase() { + var self = this; + + + var str = self.replace(/([a-z]+)|([A-Z]+)/g, function($0,$1,$2) { + return $1 ? $0.toUpperCase() : $0.toLowerCase(); + }); + + if (self.constructor === String) { + return str; + } + + return self.$class().$new(str); + + }, 0); + + $def(self, '$to_f', function $$to_f() { + var self = this; + + + if (self.charAt(0) === '_') { + return 0; + } + + var result = parseFloat(self.replace(/_/g, '')); + + if (isNaN(result) || result == Infinity || result == -Infinity) { + return 0; + } + else { + return result; + } + + }, 0); + + $def(self, '$to_i', function $$to_i(base) { + var self = this; + + + + if (base == null) base = 10;; + + var result, + string = self.toLowerCase(), + radix = $coerce_to(base, $$$('Integer'), 'to_int'); + + if (radix === 1 || radix < 0 || radix > 36) { + $Kernel.$raise($$$('ArgumentError'), "invalid radix " + (radix)) + } + + if (/^\s*_/.test(string)) { + return 0; + } + + string = string.replace(/^(\s*[+-]?)(0[bodx]?)(.+)$/, function (original, head, flag, tail) { + switch (tail.charAt(0)) { + case '+': + case '-': + return original; + case '0': + if (tail.charAt(1) === 'x' && flag === '0x' && (radix === 0 || radix === 16)) { + return original; + } + } + switch (flag) { + case '0b': + if (radix === 0 || radix === 2) { + radix = 2; + return head + tail; + } + break; + case '0': + case '0o': + if (radix === 0 || radix === 8) { + radix = 8; + return head + tail; + } + break; + case '0d': + if (radix === 0 || radix === 10) { + radix = 10; + return head + tail; + } + break; + case '0x': + if (radix === 0 || radix === 16) { + radix = 16; + return head + tail; + } + break; + } + return original + }); + + result = parseInt(string.replace(/_(?!_)/g, ''), radix); + return isNaN(result) ? 0 : result; + ; + }, -1); + + $def(self, '$to_proc', function $$to_proc() { + var $yield = $$to_proc.$$p || nil, self = this, method_name = nil; + + delete $$to_proc.$$p; + + method_name = $rb_plus("$", self.valueOf()); + return $send($Kernel, 'proc', [], function $$17($a){var block = $$17.$$p || nil, $post_args, args; + + delete $$17.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + + if (args.length === 0) { + $Kernel.$raise($$$('ArgumentError'), "no receiver given") + } + + var recv = args[0]; + + if (recv == null) recv = nil; + + var body = recv[method_name]; + + if (!body) { + return recv.$method_missing.apply(recv, args); + } + + if (typeof block === 'function') { + body.$$p = block; + } + + if (args.length === 1) { + return body.call(recv); + } else { + return body.apply(recv, args.slice(1)); + } + ;}, -1); + }, 0); + + $def(self, '$to_s', function $$to_s() { + var self = this; + + return self.toString(); + }, 0); + + $def(self, '$tr', function $$tr(from, to) { + var self = this; + + + from = $coerce_to(from, $$$('String'), 'to_str').$to_s(); + to = $coerce_to(to, $$$('String'), 'to_str').$to_s(); + + if (from.length == 0 || from === to) { + return self; + } + + var i, in_range, c, ch, start, end, length; + var subs = {}; + var from_chars = from.split(''); + var from_length = from_chars.length; + var to_chars = to.split(''); + var to_length = to_chars.length; + + var inverse = false; + var global_sub = null; + if (from_chars[0] === '^' && from_chars.length > 1) { + inverse = true; + from_chars.shift(); + global_sub = to_chars[to_length - 1] + from_length -= 1; + } + + var from_chars_expanded = []; + var last_from = null; + in_range = false; + for (i = 0; i < from_length; i++) { + ch = from_chars[i]; + if (last_from == null) { + last_from = ch; + from_chars_expanded.push(ch); + } + else if (ch === '-') { + if (last_from === '-') { + from_chars_expanded.push('-'); + from_chars_expanded.push('-'); + } + else if (i == from_length - 1) { + from_chars_expanded.push('-'); + } + else { + in_range = true; + } + } + else if (in_range) { + start = last_from.charCodeAt(0); + end = ch.charCodeAt(0); + if (start > end) { + $Kernel.$raise($$$('ArgumentError'), "invalid range \"" + (String.fromCharCode(start)) + "-" + (String.fromCharCode(end)) + "\" in string transliteration") + } + for (c = start + 1; c < end; c++) { + from_chars_expanded.push(String.fromCharCode(c)); + } + from_chars_expanded.push(ch); + in_range = null; + last_from = null; + } + else { + from_chars_expanded.push(ch); + } + } + + from_chars = from_chars_expanded; + from_length = from_chars.length; + + if (inverse) { + for (i = 0; i < from_length; i++) { + subs[from_chars[i]] = true; + } + } + else { + if (to_length > 0) { + var to_chars_expanded = []; + var last_to = null; + in_range = false; + for (i = 0; i < to_length; i++) { + ch = to_chars[i]; + if (last_to == null) { + last_to = ch; + to_chars_expanded.push(ch); + } + else if (ch === '-') { + if (last_to === '-') { + to_chars_expanded.push('-'); + to_chars_expanded.push('-'); + } + else if (i == to_length - 1) { + to_chars_expanded.push('-'); + } + else { + in_range = true; + } + } + else if (in_range) { + start = last_to.charCodeAt(0); + end = ch.charCodeAt(0); + if (start > end) { + $Kernel.$raise($$$('ArgumentError'), "invalid range \"" + (String.fromCharCode(start)) + "-" + (String.fromCharCode(end)) + "\" in string transliteration") + } + for (c = start + 1; c < end; c++) { + to_chars_expanded.push(String.fromCharCode(c)); + } + to_chars_expanded.push(ch); + in_range = null; + last_to = null; + } + else { + to_chars_expanded.push(ch); + } + } + + to_chars = to_chars_expanded; + to_length = to_chars.length; + } + + var length_diff = from_length - to_length; + if (length_diff > 0) { + var pad_char = (to_length > 0 ? to_chars[to_length - 1] : ''); + for (i = 0; i < length_diff; i++) { + to_chars.push(pad_char); + } + } + + for (i = 0; i < from_length; i++) { + subs[from_chars[i]] = to_chars[i]; + } + } + + var new_str = '' + for (i = 0, length = self.length; i < length; i++) { + ch = self.charAt(i); + var sub = subs[ch]; + if (inverse) { + new_str += (sub == null ? global_sub : ch); + } + else { + new_str += (sub != null ? sub : ch); + } + } + return self.$$cast(new_str); + + }, 2); + + $def(self, '$tr_s', function $$tr_s(from, to) { + var self = this; + + + from = $coerce_to(from, $$$('String'), 'to_str').$to_s(); + to = $coerce_to(to, $$$('String'), 'to_str').$to_s(); + + if (from.length == 0) { + return self; + } + + var i, in_range, c, ch, start, end, length; + var subs = {}; + var from_chars = from.split(''); + var from_length = from_chars.length; + var to_chars = to.split(''); + var to_length = to_chars.length; + + var inverse = false; + var global_sub = null; + if (from_chars[0] === '^' && from_chars.length > 1) { + inverse = true; + from_chars.shift(); + global_sub = to_chars[to_length - 1] + from_length -= 1; + } + + var from_chars_expanded = []; + var last_from = null; + in_range = false; + for (i = 0; i < from_length; i++) { + ch = from_chars[i]; + if (last_from == null) { + last_from = ch; + from_chars_expanded.push(ch); + } + else if (ch === '-') { + if (last_from === '-') { + from_chars_expanded.push('-'); + from_chars_expanded.push('-'); + } + else if (i == from_length - 1) { + from_chars_expanded.push('-'); + } + else { + in_range = true; + } + } + else if (in_range) { + start = last_from.charCodeAt(0); + end = ch.charCodeAt(0); + if (start > end) { + $Kernel.$raise($$$('ArgumentError'), "invalid range \"" + (String.fromCharCode(start)) + "-" + (String.fromCharCode(end)) + "\" in string transliteration") + } + for (c = start + 1; c < end; c++) { + from_chars_expanded.push(String.fromCharCode(c)); + } + from_chars_expanded.push(ch); + in_range = null; + last_from = null; + } + else { + from_chars_expanded.push(ch); + } + } + + from_chars = from_chars_expanded; + from_length = from_chars.length; + + if (inverse) { + for (i = 0; i < from_length; i++) { + subs[from_chars[i]] = true; + } + } + else { + if (to_length > 0) { + var to_chars_expanded = []; + var last_to = null; + in_range = false; + for (i = 0; i < to_length; i++) { + ch = to_chars[i]; + if (last_from == null) { + last_from = ch; + to_chars_expanded.push(ch); + } + else if (ch === '-') { + if (last_to === '-') { + to_chars_expanded.push('-'); + to_chars_expanded.push('-'); + } + else if (i == to_length - 1) { + to_chars_expanded.push('-'); + } + else { + in_range = true; + } + } + else if (in_range) { + start = last_from.charCodeAt(0); + end = ch.charCodeAt(0); + if (start > end) { + $Kernel.$raise($$$('ArgumentError'), "invalid range \"" + (String.fromCharCode(start)) + "-" + (String.fromCharCode(end)) + "\" in string transliteration") + } + for (c = start + 1; c < end; c++) { + to_chars_expanded.push(String.fromCharCode(c)); + } + to_chars_expanded.push(ch); + in_range = null; + last_from = null; + } + else { + to_chars_expanded.push(ch); + } + } + + to_chars = to_chars_expanded; + to_length = to_chars.length; + } + + var length_diff = from_length - to_length; + if (length_diff > 0) { + var pad_char = (to_length > 0 ? to_chars[to_length - 1] : ''); + for (i = 0; i < length_diff; i++) { + to_chars.push(pad_char); + } + } + + for (i = 0; i < from_length; i++) { + subs[from_chars[i]] = to_chars[i]; + } + } + var new_str = '' + var last_substitute = null + for (i = 0, length = self.length; i < length; i++) { + ch = self.charAt(i); + var sub = subs[ch] + if (inverse) { + if (sub == null) { + if (last_substitute == null) { + new_str += global_sub; + last_substitute = true; + } + } + else { + new_str += ch; + last_substitute = null; + } + } + else { + if (sub != null) { + if (last_substitute == null || last_substitute !== sub) { + new_str += sub; + last_substitute = sub; + } + } + else { + new_str += ch; + last_substitute = null; + } + } + } + return self.$$cast(new_str); + + }, 2); + + $def(self, '$upcase', function $$upcase() { + var self = this; + + return self.$$cast(self.toUpperCase()); + }, 0); + + $def(self, '$upto', function $$upto(stop, excl) { + var block = $$upto.$$p || nil, self = this; + + delete $$upto.$$p; + + ; + + if (excl == null) excl = false;; + if (!(block !== nil)) { + return self.$enum_for("upto", stop, excl) + }; + + var a, b, s = self.toString(); + + stop = $coerce_to(stop, $$$('String'), 'to_str'); + + if (s.length === 1 && stop.length === 1) { + + a = s.charCodeAt(0); + b = stop.charCodeAt(0); + + while (a <= b) { + if (excl && a === b) { + break; + } + + block(String.fromCharCode(a)); + + a += 1; + } + + } else if (parseInt(s, 10).toString() === s && parseInt(stop, 10).toString() === stop) { + + a = parseInt(s, 10); + b = parseInt(stop, 10); + + while (a <= b) { + if (excl && a === b) { + break; + } + + block(a.toString()); + + a += 1; + } + + } else { + + while (s.length <= stop.length && s <= stop) { + if (excl && s === stop) { + break; + } + + block(s); + + s = (s).$succ(); + } + + } + return self; + ; + }, -2); + + function char_class_from_char_sets(sets) { + function explode_sequences_in_character_set(set) { + var result = '', + i, len = set.length, + curr_char, + skip_next_dash, + char_code_from, + char_code_upto, + char_code; + for (i = 0; i < len; i++) { + curr_char = set.charAt(i); + if (curr_char === '-' && i > 0 && i < (len - 1) && !skip_next_dash) { + char_code_from = set.charCodeAt(i - 1); + char_code_upto = set.charCodeAt(i + 1); + if (char_code_from > char_code_upto) { + $Kernel.$raise($$$('ArgumentError'), "invalid range \"" + (char_code_from) + "-" + (char_code_upto) + "\" in string transliteration") + } + for (char_code = char_code_from + 1; char_code < char_code_upto + 1; char_code++) { + result += String.fromCharCode(char_code); + } + skip_next_dash = true; + i++; + } else { + skip_next_dash = (curr_char === '\\'); + result += curr_char; + } + } + return result; + } + + function intersection(setA, setB) { + if (setA.length === 0) { + return setB; + } + var result = '', + i, len = setA.length, + chr; + for (i = 0; i < len; i++) { + chr = setA.charAt(i); + if (setB.indexOf(chr) !== -1) { + result += chr; + } + } + return result; + } + + var i, len, set, neg, chr, tmp, + pos_intersection = '', + neg_intersection = ''; + + for (i = 0, len = sets.length; i < len; i++) { + set = $coerce_to(sets[i], $$$('String'), 'to_str'); + neg = (set.charAt(0) === '^' && set.length > 1); + set = explode_sequences_in_character_set(neg ? set.slice(1) : set); + if (neg) { + neg_intersection = intersection(neg_intersection, set); + } else { + pos_intersection = intersection(pos_intersection, set); + } + } + + if (pos_intersection.length > 0 && neg_intersection.length > 0) { + tmp = ''; + for (i = 0, len = pos_intersection.length; i < len; i++) { + chr = pos_intersection.charAt(i); + if (neg_intersection.indexOf(chr) === -1) { + tmp += chr; + } + } + pos_intersection = tmp; + neg_intersection = ''; + } + + if (pos_intersection.length > 0) { + return '[' + $$$('Regexp').$escape(pos_intersection) + ']'; + } + + if (neg_intersection.length > 0) { + return '[^' + $$$('Regexp').$escape(neg_intersection) + ']'; + } + + return null; + } + ; + + $def(self, '$instance_variables', function $$instance_variables() { + + return [] + }, 0); + $defs(self, '$_load', function $$_load($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send(self, 'new', $to_a(args)); + }, -1); + + $def(self, '$unicode_normalize', function $$unicode_normalize(form) { + var self = this; + + + + if (form == null) form = "nfc";; + if (!$truthy(["nfc", "nfd", "nfkc", "nfkd"]['$include?'](form))) { + $Kernel.$raise($$$('ArgumentError'), "Invalid normalization form " + (form)) + }; + return self.normalize(form.$upcase()); + }, -1); + + $def(self, '$unicode_normalized?', function $String_unicode_normalized$ques$18(form) { + var self = this; + + + + if (form == null) form = "nfc";; + return self.$unicode_normalize(form)['$=='](self); + }, -1); + + $def(self, '$unpack', function $$unpack(format) { + + return $Kernel.$raise("To use String#unpack, you must first require 'corelib/string/unpack'.") + }, 1); + + $def(self, '$unpack1', function $$unpack1(format) { + + return $Kernel.$raise("To use String#unpack1, you must first require 'corelib/string/unpack'.") + }, 1); + + $def(self, '$freeze', function $$freeze() { + var self = this; + + + if (typeof self === 'string') return self; + self.$$frozen = true; + return self; + + }, 0); + + $def(self, '$-@', function $String_$minus$$19() { + var self = this; + + + if (typeof self === 'string') return self; + if (self.$$frozen === true) return self; + if (self.encoding.name == 'UTF-8' && self.internal_encoding.name == 'UTF-8') return self.toString(); + return self.$dup().$freeze(); + + }, 0); + + $def(self, '$frozen?', function $String_frozen$ques$20() { + var self = this; + + return typeof self === 'string' || self.$$frozen === true; + }, 0); + $alias(self, "+@", "dup"); + $alias(self, "===", "=="); + $alias(self, "byteslice", "[]"); + $alias(self, "eql?", "=="); + $alias(self, "equal?", "==="); + $alias(self, "object_id", "__id__"); + $alias(self, "slice", "[]"); + $alias(self, "succ", "next"); + $alias(self, "to_str", "to_s"); + $alias(self, "to_sym", "intern"); + return $Opal.$pristine(self, "initialize"); + })('::', String, $nesting); + return $const_set($nesting[0], 'Symbol', $$('String')); +}; + +Opal.modules["corelib/enumerable"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $coerce_to = Opal.coerce_to, $yield1 = Opal.yield1, $yieldX = Opal.yieldX, $module = Opal.module, $send = Opal.send, $to_a = Opal.to_a, $Opal = Opal.Opal, $def = Opal.def, $Kernel = Opal.Kernel, $rb_gt = Opal.rb_gt, $rb_times = Opal.rb_times, $rb_lt = Opal.rb_lt, $eqeq = Opal.eqeq, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $rb_divide = Opal.rb_divide, $rb_le = Opal.rb_le, $hash2 = Opal.hash2, $lambda = Opal.lambda, $not = Opal.not, $alias = Opal.alias; + + Opal.add_stubs('each,public_send,destructure,to_enum,enumerator_size,new,yield,raise,slice_when,!,enum_for,flatten,map,compact,to_a,warn,proc,==,nil?,respond_to?,coerce_to!,>,*,try_convert,<,+,-,ceil,/,size,select,to_proc,__send__,length,<=,[],push,<<,[]=,===,inspect,<=>,first,reverse,sort,take,sort_by,compare,call,dup,sort!,map!,include?,-@,key?,values,transform_values,group_by,fetch,to_h,coerce_to?,class,zip'); + return (function($base) { + var self = $module($base, 'Enumerable'); + + + + + function comparableForPattern(value) { + if (value.length === 0) { + value = [nil]; + } + + if (value.length > 1) { + value = [value]; + } + + return value; + } + ; + + $def(self, '$all?', function $Enumerable_all$ques$1(pattern) {try { + + var block = $Enumerable_all$ques$1.$$p || nil, self = this; + + delete $Enumerable_all$ques$1.$$p; + + ; + ; + if ($truthy(pattern !== undefined)) { + $send(self, 'each', [], function $$2($a){var $post_args, value, comparable = nil; + + + + $post_args = Opal.slice.call(arguments); + + value = $post_args;; + comparable = comparableForPattern(value); + if ($truthy($send(pattern, 'public_send', ["==="].concat($to_a(comparable))))) { + return nil + } else { + Opal.ret(false) + };}, -1) + } else if ((block !== nil)) { + $send(self, 'each', [], function $$3($a){var $post_args, value; + + + + $post_args = Opal.slice.call(arguments); + + value = $post_args;; + if ($truthy(Opal.yieldX(block, $to_a(value)))) { + return nil + } else { + Opal.ret(false) + };}, -1) + } else { + $send(self, 'each', [], function $$4($a){var $post_args, value; + + + + $post_args = Opal.slice.call(arguments); + + value = $post_args;; + if ($truthy($Opal.$destructure(value))) { + return nil + } else { + Opal.ret(false) + };}, -1) + }; + return true; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, -1); + + $def(self, '$any?', function $Enumerable_any$ques$5(pattern) {try { + + var block = $Enumerable_any$ques$5.$$p || nil, self = this; + + delete $Enumerable_any$ques$5.$$p; + + ; + ; + if ($truthy(pattern !== undefined)) { + $send(self, 'each', [], function $$6($a){var $post_args, value, comparable = nil; + + + + $post_args = Opal.slice.call(arguments); + + value = $post_args;; + comparable = comparableForPattern(value); + if ($truthy($send(pattern, 'public_send', ["==="].concat($to_a(comparable))))) { + Opal.ret(true) + } else { + return nil + };}, -1) + } else if ((block !== nil)) { + $send(self, 'each', [], function $$7($a){var $post_args, value; + + + + $post_args = Opal.slice.call(arguments); + + value = $post_args;; + if ($truthy(Opal.yieldX(block, $to_a(value)))) { + Opal.ret(true) + } else { + return nil + };}, -1) + } else { + $send(self, 'each', [], function $$8($a){var $post_args, value; + + + + $post_args = Opal.slice.call(arguments); + + value = $post_args;; + if ($truthy($Opal.$destructure(value))) { + Opal.ret(true) + } else { + return nil + };}, -1) + }; + return false; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, -1); + + $def(self, '$chunk', function $$chunk() { + var block = $$chunk.$$p || nil, self = this; + + delete $$chunk.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'to_enum', ["chunk"], function $$9(){var self = $$9.$$s == null ? this : $$9.$$s; + + return self.$enumerator_size()}, {$$arity: 0, $$s: self}) + }; + return $send($$$('Enumerator'), 'new', [], function $$10(yielder){var self = $$10.$$s == null ? this : $$10.$$s; + + + + if (yielder == null) yielder = nil;; + + var previous = nil, accumulate = []; + + function releaseAccumulate() { + if (accumulate.length > 0) { + yielder.$yield(previous, accumulate) + } + } + + self.$each.$$p = function(value) { + var key = $yield1(block, value); + + if (key === nil) { + releaseAccumulate(); + accumulate = []; + previous = nil; + } else { + if (previous === nil || previous === key) { + accumulate.push(value); + } else { + releaseAccumulate(); + accumulate = [value]; + } + + previous = key; + } + } + + self.$each(); + + releaseAccumulate(); + ;}, {$$arity: 1, $$s: self}); + }, 0); + + $def(self, '$chunk_while', function $$chunk_while() { + var block = $$chunk_while.$$p || nil, self = this; + + delete $$chunk_while.$$p; + + ; + if (!(block !== nil)) { + $Kernel.$raise($$$('ArgumentError'), "no block given") + }; + return $send(self, 'slice_when', [], function $$11(before, after){ + + + if (before == null) before = nil;; + + if (after == null) after = nil;; + return Opal.yieldX(block, [before, after])['$!']();}, 2); + }, 0); + + $def(self, '$collect', function $$collect() { + var block = $$collect.$$p || nil, self = this; + + delete $$collect.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["collect"], function $$12(){var self = $$12.$$s == null ? this : $$12.$$s; + + return self.$enumerator_size()}, {$$arity: 0, $$s: self}) + }; + + var result = []; + + self.$each.$$p = function() { + var value = $yieldX(block, arguments); + + result.push(value); + }; + + self.$each(); + + return result; + ; + }, 0); + + $def(self, '$collect_concat', function $$collect_concat() { + var block = $$collect_concat.$$p || nil, self = this; + + delete $$collect_concat.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["collect_concat"], function $$13(){var self = $$13.$$s == null ? this : $$13.$$s; + + return self.$enumerator_size()}, {$$arity: 0, $$s: self}) + }; + return $send(self, 'map', [], function $$14(item){ + + + if (item == null) item = nil;; + return Opal.yield1(block, item);;}, 1).$flatten(1); + }, 0); + + $def(self, '$compact', function $$compact() { + var self = this; + + return self.$to_a().$compact() + }, 0); + + $def(self, '$count', function $$count(object) { + var block = $$count.$$p || nil, self = this, result = nil; + + delete $$count.$$p; + + ; + ; + result = 0; + + if (object != null && block !== nil) { + self.$warn("warning: given block not used") + } + ; + if ($truthy(object != null)) { + block = $send($Kernel, 'proc', [], function $$15($a){var $post_args, args; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $Opal.$destructure(args)['$=='](object);}, -1) + } else if ($truthy(block['$nil?']())) { + block = $send($Kernel, 'proc', [], function $$16(){ + return true}, 0) + }; + $send(self, 'each', [], function $$17($a){var $post_args, args; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if ($truthy($yieldX(block, args))) { + return result++; + } else { + return nil + };}, -1); + return result; + }, -1); + + $def(self, '$cycle', function $$cycle(n) { + var block = $$cycle.$$p || nil, self = this; + + delete $$cycle.$$p; + + ; + + if (n == null) n = nil;; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["cycle", n], function $$18(){var self = $$18.$$s == null ? this : $$18.$$s; + + if ($truthy(n['$nil?']())) { + if ($truthy(self['$respond_to?']("size"))) { + return $$$($$$('Float'), 'INFINITY') + } else { + return nil + } + } else { + + n = $Opal['$coerce_to!'](n, $$$('Integer'), "to_int"); + if ($truthy($rb_gt(n, 0))) { + return $rb_times(self.$enumerator_size(), n) + } else { + return 0 + }; + }}, {$$arity: 0, $$s: self}) + }; + if (!$truthy(n['$nil?']())) { + + n = $Opal['$coerce_to!'](n, $$$('Integer'), "to_int"); + if ($truthy(n <= 0)) { + return nil + }; + }; + + var all = [], i, length, value; + + self.$each.$$p = function() { + var param = $Opal.$destructure(arguments), + value = $yield1(block, param); + + all.push(param); + } + + self.$each(); + + if (all.length === 0) { + return nil; + } + + if (n === nil) { + while (true) { + for (i = 0, length = all.length; i < length; i++) { + value = $yield1(block, all[i]); + } + } + } + else { + while (n > 1) { + for (i = 0, length = all.length; i < length; i++) { + value = $yield1(block, all[i]); + } + + n--; + } + } + ; + }, -1); + + $def(self, '$detect', function $$detect(ifnone) {try { + + var block = $$detect.$$p || nil, self = this; + + delete $$detect.$$p; + + ; + ; + if (!(block !== nil)) { + return self.$enum_for("detect", ifnone) + }; + $send(self, 'each', [], function $$19($a){var $post_args, args, value = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + value = $Opal.$destructure(args); + if ($truthy(Opal.yield1(block, value))) { + Opal.ret(value) + } else { + return nil + };}, -1); + + if (ifnone !== undefined) { + if (typeof(ifnone) === 'function') { + return ifnone(); + } else { + return ifnone; + } + } + ; + return nil; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, -1); + + $def(self, '$drop', function $$drop(number) { + var self = this; + + + number = $coerce_to(number, $$$('Integer'), 'to_int'); + if ($truthy(number < 0)) { + $Kernel.$raise($$$('ArgumentError'), "attempt to drop negative size") + }; + + var result = [], + current = 0; + + self.$each.$$p = function() { + if (number <= current) { + result.push($Opal.$destructure(arguments)); + } + + current++; + }; + + self.$each() + + return result; + ; + }, 1); + + $def(self, '$drop_while', function $$drop_while() { + var block = $$drop_while.$$p || nil, self = this; + + delete $$drop_while.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("drop_while") + }; + + var result = [], + dropping = true; + + self.$each.$$p = function() { + var param = $Opal.$destructure(arguments); + + if (dropping) { + var value = $yield1(block, param); + + if (!$truthy(value)) { + dropping = false; + result.push(param); + } + } + else { + result.push(param); + } + }; + + self.$each(); + + return result; + ; + }, 0); + + $def(self, '$each_cons', function $$each_cons(n) { + var block = $$each_cons.$$p || nil, self = this; + + delete $$each_cons.$$p; + + ; + if ($truthy(arguments.length != 1)) { + $Kernel.$raise($$$('ArgumentError'), "wrong number of arguments (" + (arguments.length) + " for 1)") + }; + n = $Opal.$try_convert(n, $$$('Integer'), "to_int"); + if ($truthy(n <= 0)) { + $Kernel.$raise($$$('ArgumentError'), "invalid size") + }; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["each_cons", n], function $$20(){var self = $$20.$$s == null ? this : $$20.$$s, enum_size = nil; + + + enum_size = self.$enumerator_size(); + if ($truthy(enum_size['$nil?']())) { + return nil + } else if (($eqeq(enum_size, 0) || ($truthy($rb_lt(enum_size, n))))) { + return 0 + } else { + return $rb_plus($rb_minus(enum_size, n), 1) + };}, {$$arity: 0, $$s: self}) + }; + + var buffer = []; + + self.$each.$$p = function() { + var element = $Opal.$destructure(arguments); + buffer.push(element); + if (buffer.length > n) { + buffer.shift(); + } + if (buffer.length == n) { + $yield1(block, buffer.slice(0, n)); + } + } + + self.$each(); + + return self; + ; + }, 1); + + $def(self, '$each_entry', function $$each_entry($a) { + var block = $$each_entry.$$p || nil, $post_args, data, self = this; + + delete $$each_entry.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + data = $post_args;; + if (!(block !== nil)) { + return $send(self, 'to_enum', ["each_entry"].concat($to_a(data)), function $$21(){var self = $$21.$$s == null ? this : $$21.$$s; + + return self.$enumerator_size()}, {$$arity: 0, $$s: self}) + }; + + self.$each.$$p = function() { + var item = $Opal.$destructure(arguments); + + $yield1(block, item); + } + + self.$each.apply(self, data); + + return self; + ; + }, -1); + + $def(self, '$each_slice', function $$each_slice(n) { + var block = $$each_slice.$$p || nil, self = this; + + delete $$each_slice.$$p; + + ; + n = $coerce_to(n, $$$('Integer'), 'to_int'); + if ($truthy(n <= 0)) { + $Kernel.$raise($$$('ArgumentError'), "invalid slice size") + }; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["each_slice", n], function $$22(){var self = $$22.$$s == null ? this : $$22.$$s; + + if ($truthy(self['$respond_to?']("size"))) { + return $rb_divide(self.$size(), n).$ceil() + } else { + return nil + }}, {$$arity: 0, $$s: self}) + }; + + var slice = [] + + self.$each.$$p = function() { + var param = $Opal.$destructure(arguments); + + slice.push(param); + + if (slice.length === n) { + $yield1(block, slice); + slice = []; + } + }; + + self.$each(); + + // our "last" group, if smaller than n then won't have been yielded + if (slice.length > 0) { + $yield1(block, slice); + } + ; + return self; + }, 1); + + $def(self, '$each_with_index', function $$each_with_index($a) { + var block = $$each_with_index.$$p || nil, $post_args, args, self = this; + + delete $$each_with_index.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["each_with_index"].concat($to_a(args)), function $$23(){var self = $$23.$$s == null ? this : $$23.$$s; + + return self.$enumerator_size()}, {$$arity: 0, $$s: self}) + }; + + var index = 0; + + self.$each.$$p = function() { + var param = $Opal.$destructure(arguments); + + block(param, index); + + index++; + }; + + self.$each.apply(self, args); + ; + return self; + }, -1); + + $def(self, '$each_with_object', function $$each_with_object(object) { + var block = $$each_with_object.$$p || nil, self = this; + + delete $$each_with_object.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["each_with_object", object], function $$24(){var self = $$24.$$s == null ? this : $$24.$$s; + + return self.$enumerator_size()}, {$$arity: 0, $$s: self}) + }; + + self.$each.$$p = function() { + var param = $Opal.$destructure(arguments); + + block(param, object); + }; + + self.$each(); + ; + return object; + }, 1); + + $def(self, '$entries', function $$entries($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + + var result = []; + + self.$each.$$p = function() { + result.push($Opal.$destructure(arguments)); + }; + + self.$each.apply(self, args); + + return result; + ; + }, -1); + + $def(self, '$filter_map', function $$filter_map() { + var block = $$filter_map.$$p || nil, self = this; + + delete $$filter_map.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["filter_map"], function $$25(){var self = $$25.$$s == null ? this : $$25.$$s; + + return self.$enumerator_size()}, {$$arity: 0, $$s: self}) + }; + return $send($send(self, 'map', [], block.$to_proc()), 'select', [], "itself".$to_proc()); + }, 0); + + $def(self, '$find_all', function $$find_all() { + var block = $$find_all.$$p || nil, self = this; + + delete $$find_all.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["find_all"], function $$26(){var self = $$26.$$s == null ? this : $$26.$$s; + + return self.$enumerator_size()}, {$$arity: 0, $$s: self}) + }; + + var result = []; + + self.$each.$$p = function() { + var param = $Opal.$destructure(arguments), + value = $yield1(block, param); + + if ($truthy(value)) { + result.push(param); + } + }; + + self.$each(); + + return result; + ; + }, 0); + + $def(self, '$find_index', function $$find_index(object) {try { + + var block = $$find_index.$$p || nil, self = this, index = nil; + + delete $$find_index.$$p; + + ; + ; + if ($truthy(object === undefined && block === nil)) { + return self.$enum_for("find_index") + }; + + if (object != null && block !== nil) { + self.$warn("warning: given block not used") + } + ; + index = 0; + if ($truthy(object != null)) { + $send(self, 'each', [], function $$27($a){var $post_args, value; + + + + $post_args = Opal.slice.call(arguments); + + value = $post_args;; + if ($eqeq($Opal.$destructure(value), object)) { + Opal.ret(index) + }; + return index += 1;;}, -1) + } else { + $send(self, 'each', [], function $$28($a){var $post_args, value; + + + + $post_args = Opal.slice.call(arguments); + + value = $post_args;; + if ($truthy(Opal.yieldX(block, $to_a(value)))) { + Opal.ret(index) + }; + return index += 1;;}, -1) + }; + return nil; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, -1); + + $def(self, '$first', function $$first(number) {try { + + var self = this, result = nil, current = nil; + + + ; + if ($truthy(number === undefined)) { + return $send(self, 'each', [], function $$29(value){ + + + if (value == null) value = nil;; + Opal.ret(value);}, 1) + } else { + + result = []; + number = $coerce_to(number, $$$('Integer'), 'to_int'); + if ($truthy(number < 0)) { + $Kernel.$raise($$$('ArgumentError'), "attempt to take negative size") + }; + if ($truthy(number == 0)) { + return [] + }; + current = 0; + $send(self, 'each', [], function $$30($a){var $post_args, args; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + result.push($Opal.$destructure(args)); + if ($truthy(number <= ++current)) { + Opal.ret(result) + } else { + return nil + };}, -1); + return result; + }; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, -1); + + $def(self, '$grep', function $$grep(pattern) { + var block = $$grep.$$p || nil, self = this, result = nil; + + delete $$grep.$$p; + + ; + result = []; + $send(self, 'each', [], function $$31($a){var $post_args, value, cmp = nil; + + + + $post_args = Opal.slice.call(arguments); + + value = $post_args;; + cmp = comparableForPattern(value); + if (!$truthy($send(pattern, '__send__', ["==="].concat($to_a(cmp))))) { + return nil; + }; + if ((block !== nil)) { + + if ($truthy($rb_gt(value.$length(), 1))) { + value = [value] + }; + value = Opal.yieldX(block, $to_a(value)); + } else if ($truthy($rb_le(value.$length(), 1))) { + value = value['$[]'](0) + }; + return result.$push(value);}, -1); + return result; + }, 1); + + $def(self, '$grep_v', function $$grep_v(pattern) { + var block = $$grep_v.$$p || nil, self = this, result = nil; + + delete $$grep_v.$$p; + + ; + result = []; + $send(self, 'each', [], function $$32($a){var $post_args, value, cmp = nil; + + + + $post_args = Opal.slice.call(arguments); + + value = $post_args;; + cmp = comparableForPattern(value); + if ($truthy($send(pattern, '__send__', ["==="].concat($to_a(cmp))))) { + return nil; + }; + if ((block !== nil)) { + + if ($truthy($rb_gt(value.$length(), 1))) { + value = [value] + }; + value = Opal.yieldX(block, $to_a(value)); + } else if ($truthy($rb_le(value.$length(), 1))) { + value = value['$[]'](0) + }; + return result.$push(value);}, -1); + return result; + }, 1); + + $def(self, '$group_by', function $$group_by() { + var block = $$group_by.$$p || nil, self = this, hash = nil, $ret_or_1 = nil, $writer = nil; + + delete $$group_by.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["group_by"], function $$33(){var self = $$33.$$s == null ? this : $$33.$$s; + + return self.$enumerator_size()}, {$$arity: 0, $$s: self}) + }; + hash = $hash2([], {}); + + var result; + + self.$each.$$p = function() { + var param = $Opal.$destructure(arguments), + value = $yield1(block, param); + + ($truthy(($ret_or_1 = hash['$[]'](value))) ? ($ret_or_1) : ((($writer = [value, []]), $send(hash, '[]=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)])))['$<<'](param); + } + + self.$each(); + + if (result !== undefined) { + return result; + } + ; + return hash; + }, 0); + + $def(self, '$include?', function $Enumerable_include$ques$34(obj) {try { + + var self = this; + + + $send(self, 'each', [], function $$35($a){var $post_args, args; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if ($eqeq($Opal.$destructure(args), obj)) { + Opal.ret(true) + } else { + return nil + };}, -1); + return false; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 1); + + $def(self, '$inject', function $$inject(object, sym) { + var block = $$inject.$$p || nil, self = this; + + delete $$inject.$$p; + + ; + ; + ; + + var result = object; + + if (block !== nil && sym === undefined) { + self.$each.$$p = function() { + var value = $Opal.$destructure(arguments); + + if (result === undefined) { + result = value; + return; + } + + value = $yieldX(block, [result, value]); + + result = value; + }; + } + else { + if (sym === undefined) { + if (!$$$('Symbol')['$==='](object)) { + $Kernel.$raise($$$('TypeError'), "" + (object.$inspect()) + " is not a Symbol"); + } + + sym = object; + result = undefined; + } + + self.$each.$$p = function() { + var value = $Opal.$destructure(arguments); + + if (result === undefined) { + result = value; + return; + } + + result = (result).$__send__(sym, value); + }; + } + + self.$each(); + + return result == undefined ? nil : result; + ; + }, -1); + + $def(self, '$lazy', function $$lazy() { + var self = this; + + return $send($$$($$$('Enumerator'), 'Lazy'), 'new', [self, self.$enumerator_size()], function $$36(enum$, $a){var $post_args, args; + + + + if (enum$ == null) enum$ = nil;; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + return $send(enum$, 'yield', $to_a(args));}, -2) + }, 0); + + $def(self, '$enumerator_size', function $$enumerator_size() { + var self = this; + + if ($truthy(self['$respond_to?']("size"))) { + return self.$size() + } else { + return nil + } + }, 0); + + $def(self, '$max', function $$max(n) { + var block = $$max.$$p || nil, self = this; + + delete $$max.$$p; + + ; + ; + + if (n === undefined || n === nil) { + var result, value; + + self.$each.$$p = function() { + var item = $Opal.$destructure(arguments); + + if (result === undefined) { + result = item; + return; + } + + if (block !== nil) { + value = $yieldX(block, [item, result]); + } else { + value = (item)['$<=>'](result); + } + + if (value === nil) { + $Kernel.$raise($$$('ArgumentError'), "comparison failed"); + } + + if (value > 0) { + result = item; + } + } + + self.$each(); + + if (result === undefined) { + return nil; + } else { + return result; + } + } + + n = $coerce_to(n, $$$('Integer'), 'to_int'); + ; + return $send(self, 'sort', [], block.$to_proc()).$reverse().$first(n); + }, -1); + + $def(self, '$max_by', function $$max_by(n) { + var block = $$max_by.$$p || nil, self = this; + + delete $$max_by.$$p; + + ; + + if (n == null) n = nil;; + if (!$truthy(block)) { + return $send(self, 'enum_for', ["max_by", n], function $$37(){var self = $$37.$$s == null ? this : $$37.$$s; + + return self.$enumerator_size()}, {$$arity: 0, $$s: self}) + }; + if (!$truthy(n['$nil?']())) { + return $send(self, 'sort_by', [], block.$to_proc()).$reverse().$take(n) + }; + + var result, + by; + + self.$each.$$p = function() { + var param = $Opal.$destructure(arguments), + value = $yield1(block, param); + + if (result === undefined) { + result = param; + by = value; + return; + } + + if ((value)['$<=>'](by) > 0) { + result = param + by = value; + } + }; + + self.$each(); + + return result === undefined ? nil : result; + ; + }, -1); + + $def(self, '$min', function $$min(n) { + var block = $$min.$$p || nil, self = this; + + delete $$min.$$p; + + ; + + if (n == null) n = nil;; + if (!$truthy(n['$nil?']())) { + if ((block !== nil)) { + return $send(self, 'sort', [], function $$38(a, b){ + + + if (a == null) a = nil;; + + if (b == null) b = nil;; + return Opal.yieldX(block, [a, b]);;}, 2).$take(n) + } else { + return self.$sort().$take(n) + } + }; + + var result; + + if (block !== nil) { + self.$each.$$p = function() { + var param = $Opal.$destructure(arguments); + + if (result === undefined) { + result = param; + return; + } + + var value = block(param, result); + + if (value === nil) { + $Kernel.$raise($$$('ArgumentError'), "comparison failed"); + } + + if (value < 0) { + result = param; + } + }; + } + else { + self.$each.$$p = function() { + var param = $Opal.$destructure(arguments); + + if (result === undefined) { + result = param; + return; + } + + if ($Opal.$compare(param, result) < 0) { + result = param; + } + }; + } + + self.$each(); + + return result === undefined ? nil : result; + ; + }, -1); + + $def(self, '$min_by', function $$min_by(n) { + var block = $$min_by.$$p || nil, self = this; + + delete $$min_by.$$p; + + ; + + if (n == null) n = nil;; + if (!$truthy(block)) { + return $send(self, 'enum_for', ["min_by", n], function $$39(){var self = $$39.$$s == null ? this : $$39.$$s; + + return self.$enumerator_size()}, {$$arity: 0, $$s: self}) + }; + if (!$truthy(n['$nil?']())) { + return $send(self, 'sort_by', [], block.$to_proc()).$take(n) + }; + + var result, + by; + + self.$each.$$p = function() { + var param = $Opal.$destructure(arguments), + value = $yield1(block, param); + + if (result === undefined) { + result = param; + by = value; + return; + } + + if ((value)['$<=>'](by) < 0) { + result = param + by = value; + } + }; + + self.$each(); + + return result === undefined ? nil : result; + ; + }, -1); + + $def(self, '$minmax', function $$minmax() { + var block = $$minmax.$$p || nil, self = this, $ret_or_1 = nil; + + delete $$minmax.$$p; + + ; + block = ($truthy(($ret_or_1 = block)) ? ($ret_or_1) : ($send($Kernel, 'proc', [], function $$40(a, b){ + + + if (a == null) a = nil;; + + if (b == null) b = nil;; + return a['$<=>'](b);}, 2))); + + var min = nil, max = nil, first_time = true; + + self.$each.$$p = function() { + var element = $Opal.$destructure(arguments); + if (first_time) { + min = max = element; + first_time = false; + } else { + var min_cmp = block.$call(min, element); + + if (min_cmp === nil) { + $Kernel.$raise($$$('ArgumentError'), "comparison failed") + } else if (min_cmp > 0) { + min = element; + } + + var max_cmp = block.$call(max, element); + + if (max_cmp === nil) { + $Kernel.$raise($$$('ArgumentError'), "comparison failed") + } else if (max_cmp < 0) { + max = element; + } + } + } + + self.$each(); + + return [min, max]; + ; + }, 0); + + $def(self, '$minmax_by', function $$minmax_by() { + var block = $$minmax_by.$$p || nil, self = this; + + delete $$minmax_by.$$p; + + ; + if (!$truthy(block)) { + return $send(self, 'enum_for', ["minmax_by"], function $$41(){var self = $$41.$$s == null ? this : $$41.$$s; + + return self.$enumerator_size()}, {$$arity: 0, $$s: self}) + }; + + var min_result = nil, + max_result = nil, + min_by, + max_by; + + self.$each.$$p = function() { + var param = $Opal.$destructure(arguments), + value = $yield1(block, param); + + if ((min_by === undefined) || (value)['$<=>'](min_by) < 0) { + min_result = param; + min_by = value; + } + + if ((max_by === undefined) || (value)['$<=>'](max_by) > 0) { + max_result = param; + max_by = value; + } + }; + + self.$each(); + + return [min_result, max_result]; + ; + }, 0); + + $def(self, '$none?', function $Enumerable_none$ques$42(pattern) {try { + + var block = $Enumerable_none$ques$42.$$p || nil, self = this; + + delete $Enumerable_none$ques$42.$$p; + + ; + ; + if ($truthy(pattern !== undefined)) { + $send(self, 'each', [], function $$43($a){var $post_args, value, comparable = nil; + + + + $post_args = Opal.slice.call(arguments); + + value = $post_args;; + comparable = comparableForPattern(value); + if ($truthy($send(pattern, 'public_send', ["==="].concat($to_a(comparable))))) { + Opal.ret(false) + } else { + return nil + };}, -1) + } else if ((block !== nil)) { + $send(self, 'each', [], function $$44($a){var $post_args, value; + + + + $post_args = Opal.slice.call(arguments); + + value = $post_args;; + if ($truthy(Opal.yieldX(block, $to_a(value)))) { + Opal.ret(false) + } else { + return nil + };}, -1) + } else { + $send(self, 'each', [], function $$45($a){var $post_args, value, item = nil; + + + + $post_args = Opal.slice.call(arguments); + + value = $post_args;; + item = $Opal.$destructure(value); + if ($truthy(item)) { + Opal.ret(false) + } else { + return nil + };}, -1) + }; + return true; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, -1); + + $def(self, '$one?', function $Enumerable_one$ques$46(pattern) {try { + + var block = $Enumerable_one$ques$46.$$p || nil, self = this, count = nil; + + delete $Enumerable_one$ques$46.$$p; + + ; + ; + count = 0; + if ($truthy(pattern !== undefined)) { + $send(self, 'each', [], function $$47($a){var $post_args, value, comparable = nil; + + + + $post_args = Opal.slice.call(arguments); + + value = $post_args;; + comparable = comparableForPattern(value); + if ($truthy($send(pattern, 'public_send', ["==="].concat($to_a(comparable))))) { + + count = $rb_plus(count, 1); + if ($truthy($rb_gt(count, 1))) { + Opal.ret(false) + } else { + return nil + }; + } else { + return nil + };}, -1) + } else if ((block !== nil)) { + $send(self, 'each', [], function $$48($a){var $post_args, value; + + + + $post_args = Opal.slice.call(arguments); + + value = $post_args;; + if (!$truthy(Opal.yieldX(block, $to_a(value)))) { + return nil; + }; + count = $rb_plus(count, 1); + if ($truthy($rb_gt(count, 1))) { + Opal.ret(false) + } else { + return nil + };}, -1) + } else { + $send(self, 'each', [], function $$49($a){var $post_args, value; + + + + $post_args = Opal.slice.call(arguments); + + value = $post_args;; + if (!$truthy($Opal.$destructure(value))) { + return nil; + }; + count = $rb_plus(count, 1); + if ($truthy($rb_gt(count, 1))) { + Opal.ret(false) + } else { + return nil + };}, -1) + }; + return count['$=='](1); + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, -1); + + $def(self, '$partition', function $$partition() { + var block = $$partition.$$p || nil, self = this; + + delete $$partition.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["partition"], function $$50(){var self = $$50.$$s == null ? this : $$50.$$s; + + return self.$enumerator_size()}, {$$arity: 0, $$s: self}) + }; + + var truthy = [], falsy = [], result; + + self.$each.$$p = function() { + var param = $Opal.$destructure(arguments), + value = $yield1(block, param); + + if ($truthy(value)) { + truthy.push(param); + } + else { + falsy.push(param); + } + }; + + self.$each(); + + return [truthy, falsy]; + ; + }, 0); + + $def(self, '$reject', function $$reject() { + var block = $$reject.$$p || nil, self = this; + + delete $$reject.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["reject"], function $$51(){var self = $$51.$$s == null ? this : $$51.$$s; + + return self.$enumerator_size()}, {$$arity: 0, $$s: self}) + }; + + var result = []; + + self.$each.$$p = function() { + var param = $Opal.$destructure(arguments), + value = $yield1(block, param); + + if (!$truthy(value)) { + result.push(param); + } + }; + + self.$each(); + + return result; + ; + }, 0); + + $def(self, '$reverse_each', function $$reverse_each() { + var block = $$reverse_each.$$p || nil, self = this; + + delete $$reverse_each.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["reverse_each"], function $$52(){var self = $$52.$$s == null ? this : $$52.$$s; + + return self.$enumerator_size()}, {$$arity: 0, $$s: self}) + }; + + var result = []; + + self.$each.$$p = function() { + result.push(arguments); + }; + + self.$each(); + + for (var i = result.length - 1; i >= 0; i--) { + $yieldX(block, result[i]); + } + + return result; + ; + }, 0); + + $def(self, '$slice_before', function $$slice_before(pattern) { + var block = $$slice_before.$$p || nil, self = this; + + delete $$slice_before.$$p; + + ; + ; + if ($truthy(pattern === undefined && block === nil)) { + $Kernel.$raise($$$('ArgumentError'), "both pattern and block are given") + }; + if ($truthy(pattern !== undefined && block !== nil || arguments.length > 1)) { + $Kernel.$raise($$$('ArgumentError'), "wrong number of arguments (" + (arguments.length) + " expected 1)") + }; + return $send($$$('Enumerator'), 'new', [], function $$53(e){var self = $$53.$$s == null ? this : $$53.$$s; + + + + if (e == null) e = nil;; + + var slice = []; + + if (block !== nil) { + if (pattern === undefined) { + self.$each.$$p = function() { + var param = $Opal.$destructure(arguments), + value = $yield1(block, param); + + if ($truthy(value) && slice.length > 0) { + e['$<<'](slice); + slice = []; + } + + slice.push(param); + }; + } + else { + self.$each.$$p = function() { + var param = $Opal.$destructure(arguments), + value = block(param, pattern.$dup()); + + if ($truthy(value) && slice.length > 0) { + e['$<<'](slice); + slice = []; + } + + slice.push(param); + }; + } + } + else { + self.$each.$$p = function() { + var param = $Opal.$destructure(arguments), + value = pattern['$==='](param); + + if ($truthy(value) && slice.length > 0) { + e['$<<'](slice); + slice = []; + } + + slice.push(param); + }; + } + + self.$each(); + + if (slice.length > 0) { + e['$<<'](slice); + } + ;}, {$$arity: 1, $$s: self}); + }, -1); + + $def(self, '$slice_after', function $$slice_after(pattern) { + var block = $$slice_after.$$p || nil, self = this; + + delete $$slice_after.$$p; + + ; + ; + if ($truthy(pattern === undefined && block === nil)) { + $Kernel.$raise($$$('ArgumentError'), "both pattern and block are given") + }; + if ($truthy(pattern !== undefined && block !== nil || arguments.length > 1)) { + $Kernel.$raise($$$('ArgumentError'), "wrong number of arguments (" + (arguments.length) + " expected 1)") + }; + if ($truthy(pattern !== undefined)) { + block = $send($Kernel, 'proc', [], function $$54(e){ + + + if (e == null) e = nil;; + return pattern['$==='](e);}, 1) + }; + return $send($$$('Enumerator'), 'new', [], function $$55(yielder){var self = $$55.$$s == null ? this : $$55.$$s; + + + + if (yielder == null) yielder = nil;; + + var accumulate; + + self.$each.$$p = function() { + var element = $Opal.$destructure(arguments), + end_chunk = $yield1(block, element); + + if (accumulate == null) { + accumulate = []; + } + + if ($truthy(end_chunk)) { + accumulate.push(element); + yielder.$yield(accumulate); + accumulate = null; + } else { + accumulate.push(element) + } + } + + self.$each(); + + if (accumulate != null) { + yielder.$yield(accumulate); + } + ;}, {$$arity: 1, $$s: self}); + }, -1); + + $def(self, '$slice_when', function $$slice_when() { + var block = $$slice_when.$$p || nil, self = this; + + delete $$slice_when.$$p; + + ; + if (!(block !== nil)) { + $Kernel.$raise($$$('ArgumentError'), "wrong number of arguments (0 for 1)") + }; + return $send($$$('Enumerator'), 'new', [], function $$56(yielder){var self = $$56.$$s == null ? this : $$56.$$s; + + + + if (yielder == null) yielder = nil;; + + var slice = nil, last_after = nil; + + self.$each_cons.$$p = function() { + var params = $Opal.$destructure(arguments), + before = params[0], + after = params[1], + match = $yieldX(block, [before, after]); + + last_after = after; + + if (slice === nil) { + slice = []; + } + + if ($truthy(match)) { + slice.push(before); + yielder.$yield(slice); + slice = []; + } else { + slice.push(before); + } + } + + self.$each_cons(2); + + if (slice !== nil) { + slice.push(last_after); + yielder.$yield(slice); + } + ;}, {$$arity: 1, $$s: self}); + }, 0); + + $def(self, '$sort', function $$sort() { + var block = $$sort.$$p || nil, self = this, ary = nil; + + delete $$sort.$$p; + + ; + ary = self.$to_a(); + if (!(block !== nil)) { + block = $lambda(function $$57(a, b){ + + + if (a == null) a = nil;; + + if (b == null) b = nil;; + return a['$<=>'](b);}, 2) + }; + return $send(ary, 'sort', [], block.$to_proc()); + }, 0); + + $def(self, '$sort_by', function $$sort_by() { + var block = $$sort_by.$$p || nil, self = this, dup = nil; + + delete $$sort_by.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["sort_by"], function $$58(){var self = $$58.$$s == null ? this : $$58.$$s; + + return self.$enumerator_size()}, {$$arity: 0, $$s: self}) + }; + dup = $send(self, 'map', [], function $$59(){var arg = nil; + + + arg = $Opal.$destructure(arguments); + return [Opal.yield1(block, arg), arg];}, 0); + $send(dup, 'sort!', [], function $$60(a, b){ + + + if (a == null) a = nil;; + + if (b == null) b = nil;; + return (a[0])['$<=>'](b[0]);}, 2); + return $send(dup, 'map!', [], function $$61(i){ + + + if (i == null) i = nil;; + return i[1];;}, 1); + }, 0); + + $def(self, '$sum', function $$sum(initial) { + var $yield = $$sum.$$p || nil, self = this, result = nil, compensation = nil; + + delete $$sum.$$p; + + + if (initial == null) initial = 0;; + result = initial; + compensation = 0; + $send(self, 'each', [], function $$62($a){var $post_args, args, item = nil, y = nil, t = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + item = (($yield !== nil) ? (Opal.yieldX($yield, $to_a(args))) : ($Opal.$destructure(args))); + if (($not([$$$($$$('Float'), 'INFINITY'), $$$($$$('Float'), 'INFINITY')['$-@']()]['$include?'](item)) && ($truthy(item['$respond_to?']("-"))))) { + + y = $rb_minus(item, compensation); + t = $rb_plus(result, y); + compensation = $rb_minus($rb_minus(t, result), y); + return (result = t); + } else { + return (result = $rb_plus(result, item)) + };}, -1); + return result; + }, -1); + + $def(self, '$take', function $$take(num) { + var self = this; + + return self.$first(num) + }, 1); + + $def(self, '$take_while', function $$take_while() {try { + + var block = $$take_while.$$p || nil, self = this, result = nil; + + delete $$take_while.$$p; + + ; + if (!$truthy(block)) { + return self.$enum_for("take_while") + }; + result = []; + return $send(self, 'each', [], function $$63($a){var $post_args, args, value = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + value = $Opal.$destructure(args); + if (!$truthy(Opal.yield1(block, value))) { + Opal.ret(result) + }; + return result.push(value);;}, -1); + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 0); + + $def(self, '$uniq', function $$uniq() { + var block = $$uniq.$$p || nil, self = this, hash = nil; + + delete $$uniq.$$p; + + ; + hash = $hash2([], {}); + $send(self, 'each', [], function $$64($a){var $post_args, args, value = nil, produced = nil, $writer = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + value = $Opal.$destructure(args); + produced = ((block !== nil) ? (Opal.yield1(block, value)) : (value)); + if ($truthy(hash['$key?'](produced))) { + return nil + } else { + + $writer = [produced, value]; + $send(hash, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + };}, -1); + return hash.$values(); + }, 0); + + $def(self, '$tally', function $$tally(hash) { + var self = this, out = nil; + + + ; + out = $send($send(self, 'group_by', [], "itself".$to_proc()), 'transform_values', [], "count".$to_proc()); + if ($truthy(hash)) { + + $send(out, 'each', [], function $$65(k, v){var $writer = nil; + + + + if (k == null) k = nil;; + + if (v == null) v = nil;; + $writer = [k, $rb_plus(hash.$fetch(k, 0), v)]; + $send(hash, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 2); + return hash; + } else { + return out + }; + }, -1); + + $def(self, '$to_h', function $$to_h($a) { + var block = $$to_h.$$p || nil, $post_args, args, self = this; + + delete $$to_h.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if ((block !== nil)) { + return $send($send(self, 'map', [], block.$to_proc()), 'to_h', $to_a(args)) + }; + + var hash = $hash2([], {}); + + self.$each.$$p = function() { + var param = $Opal.$destructure(arguments); + var ary = $Opal['$coerce_to?'](param, $$$('Array'), "to_ary"), key, val; + if (!ary.$$is_array) { + $Kernel.$raise($$$('TypeError'), "wrong element type " + ((ary).$class()) + " (expected array)") + } + if (ary.length !== 2) { + $Kernel.$raise($$$('ArgumentError'), "wrong array length (expected 2, was " + ((ary).$length()) + ")") + } + key = ary[0]; + val = ary[1]; + + Opal.hash_put(hash, key, val); + }; + + self.$each.apply(self, args); + + return hash; + ; + }, -1); + + $def(self, '$zip', function $$zip($a) { + var block = $$zip.$$p || nil, $post_args, others, self = this; + + delete $$zip.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + others = $post_args;; + return $send(self.$to_a(), 'zip', $to_a(others)); + }, -1); + $alias(self, "find", "detect"); + $alias(self, "filter", "find_all"); + $alias(self, "flat_map", "collect_concat"); + $alias(self, "map", "collect"); + $alias(self, "member?", "include?"); + $alias(self, "reduce", "inject"); + $alias(self, "select", "find_all"); + return $alias(self, "to_a", "entries"); + })('::') +}; + +Opal.modules["corelib/enumerator/arithmetic_sequence"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $truthy = Opal.truthy, $to_a = Opal.to_a, $eqeq = Opal.eqeq, $Kernel = Opal.Kernel, $def = Opal.def, $rb_gt = Opal.rb_gt, $rb_lt = Opal.rb_lt, $rb_le = Opal.rb_le, $rb_ge = Opal.rb_ge, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $eqeqeq = Opal.eqeqeq, $not = Opal.not, $rb_times = Opal.rb_times, $rb_divide = Opal.rb_divide, $alias = Opal.alias; + + Opal.add_stubs('is_a?,==,raise,respond_to?,class,attr_reader,begin,end,exclude_end?,>,step,<,<=,>=,-@,_lesser_than_end?,<<,+,-,===,%,_greater_than_begin?,reverse,!,include?,*,to_i,abs,/,hash,inspect'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Enumerator'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ArithmeticSequence'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.step_arg2 = $proto.receiver_num = $proto.step_arg1 = $proto.step = $proto.range = $proto.topfx = $proto.bypfx = $proto.creation_method = $proto.skipped_arg = nil; + + Opal.prop(self.$$prototype, '$$is_arithmetic_seq', true); + var inf = Infinity; + + $def(self, '$initialize', function $$initialize(range, step, creation_method) { + var $a, self = this, $ret_or_1 = nil; + + + ; + + if (creation_method == null) creation_method = "step";; + self.creation_method = creation_method; + if ($truthy(range['$is_a?']($$$('Array')))) { + + $a = [].concat($to_a(range)), (self.step_arg1 = ($a[0] == null ? nil : $a[0])), (self.step_arg2 = ($a[1] == null ? nil : $a[1])), (self.topfx = ($a[2] == null ? nil : $a[2])), (self.bypfx = ($a[3] == null ? nil : $a[3])), $a; + self.receiver_num = step; + self.step = 1; + self.range = ($truthy(self.step_arg2) ? (((self.step = self.step_arg2), Opal.Range.$new(self.receiver_num, self.step_arg1, false))) : ($truthy(self.step_arg1) ? (Opal.Range.$new(self.receiver_num, self.step_arg1, false)) : (Opal.Range.$new(self.receiver_num, nil, false)))); + } else { + + if (!$truthy(step)) { + self.skipped_arg = true + }; + $a = [range, ($truthy(($ret_or_1 = step)) ? ($ret_or_1) : (1))], (self.range = $a[0]), (self.step = $a[1]), $a; + }; + self.object = self; + if ($eqeq(self.step, 0)) { + $Kernel.$raise($$('ArgumentError'), "step can't be 0") + }; + if ($truthy(self.step['$respond_to?']("to_int"))) { + return nil + } else { + return $Kernel.$raise($$('ArgumentError'), "" + ("no implicit conversion of " + (self.step.$class()) + " ") + "into Integer") + }; + }, -2); + self.$attr_reader("step"); + + $def(self, '$begin', function $$begin() { + var self = this; + + return self.range.$begin() + }, 0); + + $def(self, '$end', function $$end() { + var self = this; + + return self.range.$end() + }, 0); + + $def(self, '$exclude_end?', function $ArithmeticSequence_exclude_end$ques$1() { + var self = this; + + return self.range['$exclude_end?']() + }, 0); + + $def(self, '$_lesser_than_end?', function $ArithmeticSequence__lesser_than_end$ques$2(val) { + var self = this, end_ = nil, $ret_or_1 = nil; + + + end_ = ($truthy(($ret_or_1 = self.$end())) ? ($ret_or_1) : (inf)); + if ($truthy($rb_gt(self.$step(), 0))) { + if ($truthy(self['$exclude_end?']())) { + return $rb_lt(val, end_) + } else { + return $rb_le(val, end_) + } + } else if ($truthy(self['$exclude_end?']())) { + return $rb_gt(val, end_) + } else { + return $rb_ge(val, end_) + }; + }, 1); + + $def(self, '$_greater_than_begin?', function $ArithmeticSequence__greater_than_begin$ques$3(val) { + var self = this, begin_ = nil, $ret_or_1 = nil; + + + begin_ = ($truthy(($ret_or_1 = self.$begin())) ? ($ret_or_1) : ((inf)['$-@']())); + if ($truthy($rb_gt(self.$step(), 0))) { + return $rb_gt(val, begin_) + } else { + return $rb_lt(val, begin_) + }; + }, 1); + + $def(self, '$first', function $$first(count) { + var $a, self = this, iter = nil, $ret_or_1 = nil, out = nil; + + + ; + iter = ($truthy(($ret_or_1 = self.$begin())) ? ($ret_or_1) : ((inf)['$-@']())); + if (!$truthy(count)) { + return ($truthy(self['$_lesser_than_end?'](iter)) ? (iter) : (nil)) + }; + out = []; + while ($truthy(($truthy(($ret_or_1 = self['$_lesser_than_end?'](iter))) ? ($rb_gt(count, 0)) : ($ret_or_1)))) { + + out['$<<'](iter); + iter = $rb_plus(iter, self.$step()); + count = $rb_minus(count, 1); + }; + return out; + }, -1); + + $def(self, '$each', function $$each() { + var block = $$each.$$p || nil, $a, self = this, $ret_or_1 = nil, iter = nil; + + delete $$each.$$p; + + ; + if (!(block !== nil)) { + return self + }; + if ($eqeqeq(nil, ($ret_or_1 = self.$begin()))) { + $Kernel.$raise($$('TypeError'), "nil can't be coerced into Integer") + } else { + nil + }; + iter = ($truthy(($ret_or_1 = self.$begin())) ? ($ret_or_1) : ((inf)['$-@']())); + while ($truthy(self['$_lesser_than_end?'](iter))) { + + Opal.yield1(block, iter); + iter = $rb_plus(iter, self.$step()); + }; + return self; + }, 0); + + $def(self, '$last', function $$last(count) { + var $a, self = this, $ret_or_1 = nil, iter = nil, out = nil; + + + ; + if (($eqeqeq(inf, ($ret_or_1 = self.$end())) || ($eqeqeq((inf)['$-@'](), $ret_or_1)))) { + $Kernel.$raise($$$('FloatDomainError'), self.$end()) + } else if ($eqeqeq(nil, $ret_or_1)) { + $Kernel.$raise($$$('RangeError'), "cannot get the last element of endless arithmetic sequence") + } else { + nil + }; + iter = $rb_minus(self.$end(), $rb_minus(self.$end(), self.$begin())['$%'](self.$step())); + if (!$truthy(self['$_lesser_than_end?'](iter))) { + iter = $rb_minus(iter, self.$step()) + }; + if (!$truthy(count)) { + return ($truthy(self['$_greater_than_begin?'](iter)) ? (iter) : (nil)) + }; + out = []; + while ($truthy(($truthy(($ret_or_1 = self['$_greater_than_begin?'](iter))) ? ($rb_gt(count, 0)) : ($ret_or_1)))) { + + out['$<<'](iter); + iter = $rb_minus(iter, self.$step()); + count = $rb_minus(count, 1); + }; + return out.$reverse(); + }, -1); + + $def(self, '$size', function $$size() { + var self = this, step_sign = nil, iter = nil; + + + step_sign = ($truthy($rb_gt(self.$step(), 0)) ? (1) : (-1)); + if ($not(self['$_lesser_than_end?'](self.$begin()))) { + return 0 + } else if ($truthy([(inf)['$-@'](), inf]['$include?'](self.$step()))) { + return 1 + } else if (($truthy([$rb_times((inf)['$-@'](), step_sign), nil]['$include?'](self.$begin())) || ($truthy([$rb_times(inf, step_sign), nil]['$include?'](self.$end()))))) { + return inf; + } else { + + iter = $rb_minus(self.$end(), $rb_minus(self.$end(), self.$begin())['$%'](self.$step())); + if (!$truthy(self['$_lesser_than_end?'](iter))) { + iter = $rb_minus(iter, self.$step()) + }; + return $rb_plus($rb_divide($rb_minus(iter, self.$begin()), self.$step()).$abs().$to_i(), 1); + }; + }, 0); + + $def(self, '$==', function $ArithmeticSequence_$eq_eq$4(other) { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil, $ret_or_4 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = ($truthy(($ret_or_3 = ($truthy(($ret_or_4 = self.$class()['$=='](other.$class()))) ? (self.$begin()['$=='](other.$begin())) : ($ret_or_4)))) ? (self.$end()['$=='](other.$end())) : ($ret_or_3)))) ? (self.$step()['$=='](other.$step())) : ($ret_or_2))))) { + return self['$exclude_end?']()['$=='](other['$exclude_end?']()) + } else { + return $ret_or_1 + } + }, 1); + + $def(self, '$hash', function $$hash() { + var self = this; + + return [self.$begin(), self.$end(), self.$step(), self['$exclude_end?']()].$hash() + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this, args = nil; + + if ($truthy(self.receiver_num)) { + + args = ($truthy(self.step_arg2) ? ("(" + (self.topfx) + (self.step_arg1.$inspect()) + ", " + (self.bypfx) + (self.step_arg2.$inspect()) + ")") : ($truthy(self.step_arg1) ? ("(" + (self.topfx) + (self.step_arg1.$inspect()) + ")") : nil)); + return "(" + (self.receiver_num.$inspect()) + "." + (self.creation_method) + (args) + ")"; + } else { + + args = ($truthy(self.skipped_arg) ? (nil) : ("(" + (self.step) + ")")); + return "((" + (self.range.$inspect()) + ")." + (self.creation_method) + (args) + ")"; + } + }, 0); + $alias(self, "===", "=="); + return $alias(self, "eql?", "=="); + })(self, self, $nesting) + })('::', null, $nesting) +}; + +Opal.modules["corelib/enumerator/chain"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus; + + Opal.add_stubs('to_enum,size,each,<<,to_proc,include?,+,reverse_each,respond_to?,rewind,inspect'); + return (function($base, $super) { + var self = $klass($base, $super, 'Enumerator'); + + + return (function($base, $super) { + var self = $klass($base, $super, 'Chain'); + + var $proto = self.$$prototype; + + $proto.enums = $proto.iterated = nil; + + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, enums, self = this; + + + + $post_args = Opal.slice.call(arguments); + + enums = $post_args;; + self.enums = enums; + self.iterated = []; + return (self.object = self); + }, -1); + + $def(self, '$each', function $$each($a) { + var block = $$each.$$p || nil, $post_args, args, self = this; + + delete $$each.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if (!(block !== nil)) { + return $send(self, 'to_enum', ["each"].concat($to_a(args)), function $$1(){var self = $$1.$$s == null ? this : $$1.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + $send(self.enums, 'each', [], function $$2(enum$){var self = $$2.$$s == null ? this : $$2.$$s; + if (self.iterated == null) self.iterated = nil; + + + + if (enum$ == null) enum$ = nil;; + self.iterated['$<<'](enum$); + return $send(enum$, 'each', $to_a(args), block.$to_proc());}, {$$arity: 1, $$s: self}); + return self; + }, -1); + + $def(self, '$size', function $$size($a) {try { + + var $post_args, args, self = this, accum = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + accum = 0; + $send(self.enums, 'each', [], function $$3(enum$){var size = nil; + + + + if (enum$ == null) enum$ = nil;; + size = $send(enum$, 'size', $to_a(args)); + if ($truthy([nil, $$$($$$('Float'), 'INFINITY')]['$include?'](size))) { + Opal.ret(size) + }; + return (accum = $rb_plus(accum, size));}, 1); + return accum; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, -1); + + $def(self, '$rewind', function $$rewind() { + var self = this; + + + $send(self.iterated, 'reverse_each', [], function $$4(enum$){ + + + if (enum$ == null) enum$ = nil;; + if ($truthy(enum$['$respond_to?']("rewind"))) { + return enum$.$rewind() + } else { + return nil + };}, 1); + self.iterated = []; + return self; + }, 0); + return $def(self, '$inspect', function $$inspect() { + var self = this; + + return "#" + }, 0); + })(self, self) + })('::', null) +}; + +Opal.modules["corelib/enumerator/generator"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $breaker = Opal.breaker, $klass = Opal.klass, $truthy = Opal.truthy, $Kernel = Opal.Kernel, $def = Opal.def, $send = Opal.send; + + Opal.add_stubs('include,raise,new,to_proc'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Enumerator'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Generator'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.block = nil; + + self.$include($$$('Enumerable')); + + $def(self, '$initialize', function $$initialize() { + var block = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + ; + if (!$truthy(block)) { + $Kernel.$raise($$$('LocalJumpError'), "no block given") + }; + return (self.block = block); + }, 0); + return $def(self, '$each', function $$each($a) { + var block = $$each.$$p || nil, $post_args, args, self = this, yielder = nil; + + delete $$each.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + yielder = $send($$('Yielder'), 'new', [], block.$to_proc()); + + try { + args.unshift(yielder); + + Opal.yieldX(self.block, args); + } + catch (e) { + if (e === $breaker) { + return $breaker.$v; + } + else { + throw e; + } + } + ; + return self; + }, -1); + })($nesting[0], null, $nesting) + })($nesting[0], null, $nesting) +}; + +Opal.modules["corelib/enumerator/lazy"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $coerce_to = Opal.coerce_to, $yield1 = Opal.yield1, $yieldX = Opal.yieldX, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $defs = Opal.defs, $Kernel = Opal.Kernel, $send = Opal.send, $def = Opal.def, $Opal = Opal.Opal, $rb_lt = Opal.rb_lt, $eqeqeq = Opal.eqeqeq, $rb_plus = Opal.rb_plus, $alias = Opal.alias; + + Opal.add_stubs('raise,each,new,enumerator_size,yield,respond_to?,try_convert,<,===,+,for,class,to_proc,destructure,inspect'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Enumerator'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Lazy'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.enumerator = nil; + + $klass(self, $$$('Exception'), 'StopLazyError'); + $defs(self, '$for', function $Lazy_for$1(object, $a) { + var $post_args, $rest_arg, $yield = $Lazy_for$1.$$p || nil, self = this, lazy = nil; + + delete $Lazy_for$1.$$p; + + + $post_args = Opal.slice.call(arguments, 1); + + $rest_arg = $post_args;; + lazy = $send2(self, $find_super(self, 'for', $Lazy_for$1, false, true), 'for', [object].concat($to_a($rest_arg)), $yield); + lazy.enumerator = object; + return lazy; + }, -2); + + $def(self, '$initialize', function $$initialize(object, size) { + var block = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + ; + + if (size == null) size = nil;; + if (!(block !== nil)) { + $Kernel.$raise($$$('ArgumentError'), "tried to call lazy new without a block") + }; + self.enumerator = object; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [size], function $$2(yielder, $a){var $post_args, each_args; + + + + if (yielder == null) yielder = nil;; + + $post_args = Opal.slice.call(arguments, 1); + + each_args = $post_args;; + try { + return $send(object, 'each', $to_a(each_args), function $$3($b){var $post_args, args; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + + args.unshift(yielder); + + $yieldX(block, args); + ;}, -1) + } catch ($err) { + if (Opal.rescue($err, [$$('StopLazyError')])) { + try { + return nil + } finally { Opal.pop_exception(); } + } else { throw $err; } + };}, -2); + }, -2); + + $def(self, '$lazy', function $$lazy() { + var self = this; + + return self + }, 0); + + $def(self, '$collect', function $$collect() { + var block = $$collect.$$p || nil, self = this; + + delete $$collect.$$p; + + ; + if (!$truthy(block)) { + $Kernel.$raise($$$('ArgumentError'), "tried to call lazy map without a block") + }; + return $send($$('Lazy'), 'new', [self, self.$enumerator_size()], function $$4(enum$, $a){var $post_args, args; + + + + if (enum$ == null) enum$ = nil;; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + + var value = $yieldX(block, args); + + enum$.$yield(value); + ;}, -2); + }, 0); + + $def(self, '$collect_concat', function $$collect_concat() { + var block = $$collect_concat.$$p || nil, self = this; + + delete $$collect_concat.$$p; + + ; + if (!$truthy(block)) { + $Kernel.$raise($$$('ArgumentError'), "tried to call lazy map without a block") + }; + return $send($$('Lazy'), 'new', [self, nil], function $$5(enum$, $a){var $post_args, args; + + + + if (enum$ == null) enum$ = nil;; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + + var value = $yieldX(block, args); + + if ((value)['$respond_to?']("force") && (value)['$respond_to?']("each")) { + $send((value), 'each', [], function $$6(v){ + + + if (v == null) v = nil;; + return enum$.$yield(v);}, 1) + } + else { + var array = $Opal.$try_convert(value, $$$('Array'), "to_ary"); + + if (array === nil) { + enum$.$yield(value); + } + else { + $send((value), 'each', [], function $$7(v){ + + + if (v == null) v = nil;; + return enum$.$yield(v);}, 1); + } + } + ;}, -2); + }, 0); + + $def(self, '$drop', function $$drop(n) { + var self = this, current_size = nil, set_size = nil, dropped = nil; + + + n = $coerce_to(n, $$$('Integer'), 'to_int'); + if ($truthy($rb_lt(n, 0))) { + $Kernel.$raise($$$('ArgumentError'), "attempt to drop negative size") + }; + current_size = self.$enumerator_size(); + set_size = ($eqeqeq($$$('Integer'), current_size) ? (($truthy($rb_lt(n, current_size)) ? (n) : (current_size))) : (current_size)); + dropped = 0; + return $send($$('Lazy'), 'new', [self, set_size], function $$8(enum$, $a){var $post_args, args; + + + + if (enum$ == null) enum$ = nil;; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + if ($truthy($rb_lt(dropped, n))) { + return (dropped = $rb_plus(dropped, 1)) + } else { + return $send(enum$, 'yield', $to_a(args)) + };}, -2); + }, 1); + + $def(self, '$drop_while', function $$drop_while() { + var block = $$drop_while.$$p || nil, self = this, succeeding = nil; + + delete $$drop_while.$$p; + + ; + if (!$truthy(block)) { + $Kernel.$raise($$$('ArgumentError'), "tried to call lazy drop_while without a block") + }; + succeeding = true; + return $send($$('Lazy'), 'new', [self, nil], function $$9(enum$, $a){var $post_args, args; + + + + if (enum$ == null) enum$ = nil;; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + if ($truthy(succeeding)) { + + var value = $yieldX(block, args); + + if (!$truthy(value)) { + succeeding = false; + + $send(enum$, 'yield', $to_a(args)); + } + + } else { + return $send(enum$, 'yield', $to_a(args)) + };}, -2); + }, 0); + + $def(self, '$enum_for', function $$enum_for($a, $b) { + var block = $$enum_for.$$p || nil, $post_args, method, args, self = this; + + delete $$enum_for.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + if ($post_args.length > 0) method = $post_args.shift(); + if (method == null) method = "each";; + + args = $post_args;; + return $send(self.$class(), 'for', [self, method].concat($to_a(args)), block.$to_proc()); + }, -1); + + $def(self, '$find_all', function $$find_all() { + var block = $$find_all.$$p || nil, self = this; + + delete $$find_all.$$p; + + ; + if (!$truthy(block)) { + $Kernel.$raise($$$('ArgumentError'), "tried to call lazy select without a block") + }; + return $send($$('Lazy'), 'new', [self, nil], function $$10(enum$, $a){var $post_args, args; + + + + if (enum$ == null) enum$ = nil;; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + + var value = $yieldX(block, args); + + if ($truthy(value)) { + $send(enum$, 'yield', $to_a(args)); + } + ;}, -2); + }, 0); + + $def(self, '$grep', function $$grep(pattern) { + var block = $$grep.$$p || nil, self = this; + + delete $$grep.$$p; + + ; + if ($truthy(block)) { + return $send($$('Lazy'), 'new', [self, nil], function $$11(enum$, $a){var $post_args, args; + + + + if (enum$ == null) enum$ = nil;; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + + var param = $Opal.$destructure(args), + value = pattern['$==='](param); + + if ($truthy(value)) { + value = $yield1(block, param); + + enum$.$yield($yield1(block, param)); + } + ;}, -2) + } else { + return $send($$('Lazy'), 'new', [self, nil], function $$12(enum$, $a){var $post_args, args; + + + + if (enum$ == null) enum$ = nil;; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + + var param = $Opal.$destructure(args), + value = pattern['$==='](param); + + if ($truthy(value)) { + enum$.$yield(param); + } + ;}, -2) + }; + }, 1); + + $def(self, '$reject', function $$reject() { + var block = $$reject.$$p || nil, self = this; + + delete $$reject.$$p; + + ; + if (!$truthy(block)) { + $Kernel.$raise($$$('ArgumentError'), "tried to call lazy reject without a block") + }; + return $send($$('Lazy'), 'new', [self, nil], function $$13(enum$, $a){var $post_args, args; + + + + if (enum$ == null) enum$ = nil;; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + + var value = $yieldX(block, args); + + if (!$truthy(value)) { + $send(enum$, 'yield', $to_a(args)); + } + ;}, -2); + }, 0); + + $def(self, '$take', function $$take(n) { + var self = this, current_size = nil, set_size = nil, taken = nil; + + + n = $coerce_to(n, $$$('Integer'), 'to_int'); + if ($truthy($rb_lt(n, 0))) { + $Kernel.$raise($$$('ArgumentError'), "attempt to take negative size") + }; + current_size = self.$enumerator_size(); + set_size = ($eqeqeq($$$('Integer'), current_size) ? (($truthy($rb_lt(n, current_size)) ? (n) : (current_size))) : (current_size)); + taken = 0; + return $send($$('Lazy'), 'new', [self, set_size], function $$14(enum$, $a){var $post_args, args; + + + + if (enum$ == null) enum$ = nil;; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + if ($truthy($rb_lt(taken, n))) { + + $send(enum$, 'yield', $to_a(args)); + return (taken = $rb_plus(taken, 1)); + } else { + return $Kernel.$raise($$('StopLazyError')) + };}, -2); + }, 1); + + $def(self, '$take_while', function $$take_while() { + var block = $$take_while.$$p || nil, self = this; + + delete $$take_while.$$p; + + ; + if (!$truthy(block)) { + $Kernel.$raise($$$('ArgumentError'), "tried to call lazy take_while without a block") + }; + return $send($$('Lazy'), 'new', [self, nil], function $$15(enum$, $a){var $post_args, args; + + + + if (enum$ == null) enum$ = nil;; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + + var value = $yieldX(block, args); + + if ($truthy(value)) { + $send(enum$, 'yield', $to_a(args)); + } + else { + $Kernel.$raise($$('StopLazyError')); + } + ;}, -2); + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return "#<" + (self.$class()) + ": " + (self.enumerator.$inspect()) + ">" + }, 0); + $alias(self, "force", "to_a"); + $alias(self, "filter", "find_all"); + $alias(self, "flat_map", "collect_concat"); + $alias(self, "map", "collect"); + $alias(self, "select", "find_all"); + return $alias(self, "to_enum", "enum_for"); + })(self, self, $nesting) + })('::', null, $nesting) +}; + +Opal.modules["corelib/enumerator/yielder"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $klass = Opal.klass, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a; + + Opal.add_stubs('yield,proc'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Enumerator'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super) { + var self = $klass($base, $super, 'Yielder'); + + var $proto = self.$$prototype; + + $proto.block = nil; + + + $def(self, '$initialize', function $$initialize() { + var block = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + ; + self.block = block; + return self; + }, 0); + + $def(self, '$yield', function $Yielder_yield$1($a) { + var $post_args, values, self = this; + + + + $post_args = Opal.slice.call(arguments); + + values = $post_args;; + + var value = Opal.yieldX(self.block, values); + + if (value === $breaker) { + throw $breaker; + } + + return value; + ; + }, -1); + + $def(self, '$<<', function $Yielder_$lt$lt$2(value) { + var self = this; + + + self.$yield(value); + return self; + }, 1); + return $def(self, '$to_proc', function $$to_proc() { + var self = this; + + return $send(self, 'proc', [], function $$3($a){var $post_args, values, self = $$3.$$s == null ? this : $$3.$$s; + + + + $post_args = Opal.slice.call(arguments); + + values = $post_args;; + return $send(self, 'yield', $to_a(values));}, {$$arity: -1, $$s: self}) + }, 0); + })($nesting[0], null) + })($nesting[0], null, $nesting) +}; + +Opal.modules["corelib/enumerator"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $slice = Opal.slice, $coerce_to = Opal.coerce_to, $klass = Opal.klass, $defs = Opal.defs, $truthy = Opal.truthy, $send = Opal.send, $not = Opal.not, $def = Opal.def, $rb_plus = Opal.rb_plus, $to_a = Opal.to_a, $Opal = Opal.Opal, $send2 = Opal.send2, $find_super = Opal.find_super, $rb_ge = Opal.rb_ge, $Kernel = Opal.Kernel, $rb_le = Opal.rb_le, $alias = Opal.alias; + + Opal.add_stubs('require,include,allocate,new,to_proc,!,respond_to?,empty?,nil?,+,class,__send__,call,enum_for,size,destructure,map,>=,length,raise,[],peek_values,<=,next_values,inspect,any?,autoload'); + + self.$require("corelib/enumerable"); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Enumerator'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.size = $proto.args = $proto.object = $proto.method = $proto.values = $proto.cursor = nil; + + self.$include($$$('Enumerable')); + self.$$prototype.$$is_enumerator = true; + $defs(self, '$for', function $Enumerator_for$1(object, $a, $b) { + var block = $Enumerator_for$1.$$p || nil, $post_args, method, args, self = this; + + delete $Enumerator_for$1.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + if ($post_args.length > 0) method = $post_args.shift(); + if (method == null) method = "each";; + + args = $post_args;; + + var obj = self.$allocate(); + + obj.object = object; + obj.size = block; + obj.method = method; + obj.args = args; + obj.cursor = 0; + + return obj; + ; + }, -2); + + $def(self, '$initialize', function $$initialize($a) { + var block = $$initialize.$$p || nil, $post_args, $rest_arg, self = this; + + delete $$initialize.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + self.cursor = 0; + if ($truthy(block)) { + + self.object = $send($$('Generator'), 'new', [], block.$to_proc()); + self.method = "each"; + self.args = []; + self.size = arguments[0] || nil; + if (($truthy(self.size) && ($not(self.size['$respond_to?']("call"))))) { + return (self.size = $coerce_to(self.size, $$$('Integer'), 'to_int')) + } else { + return nil + }; + } else { + + self.object = arguments[0]; + self.method = arguments[1] || "each"; + self.args = $slice.call(arguments, 2); + return (self.size = nil); + }; + }, -1); + + $def(self, '$each', function $$each($a) { + var block = $$each.$$p || nil, $post_args, args, self = this; + + delete $$each.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if (($truthy(block['$nil?']()) && ($truthy(args['$empty?']())))) { + return self + }; + args = $rb_plus(self.args, args); + if ($truthy(block['$nil?']())) { + return $send(self.$class(), 'new', [self.object, self.method].concat($to_a(args))) + }; + return $send(self.object, '__send__', [self.method].concat($to_a(args)), block.$to_proc()); + }, -1); + + $def(self, '$size', function $$size() { + var self = this; + + if ($truthy(self.size['$respond_to?']("call"))) { + return $send(self.size, 'call', $to_a(self.args)) + } else { + return self.size + } + }, 0); + + $def(self, '$with_index', function $$with_index(offset) { + var block = $$with_index.$$p || nil, self = this; + + delete $$with_index.$$p; + + ; + + if (offset == null) offset = 0;; + offset = ($truthy(offset) ? ($coerce_to(offset, $$$('Integer'), 'to_int')) : (0)); + if (!$truthy(block)) { + return $send(self, 'enum_for', ["with_index", offset], function $$2(){var self = $$2.$$s == null ? this : $$2.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + var result, index = offset; + + self.$each.$$p = function() { + var param = $Opal.$destructure(arguments), + value = block(param, index); + + index++; + + return value; + } + + return self.$each(); + ; + }, -1); + + $def(self, '$each_with_index', function $$each_with_index() { + var block = $$each_with_index.$$p || nil, self = this; + + delete $$each_with_index.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["each_with_index"], function $$3(){var self = $$3.$$s == null ? this : $$3.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + $send2(self, $find_super(self, 'each_with_index', $$each_with_index, false, true), 'each_with_index', [], block); + return self.object; + }, 0); + + $def(self, '$rewind', function $$rewind() { + var self = this; + + + self.cursor = 0; + return self; + }, 0); + + $def(self, '$peek_values', function $$peek_values() { + var self = this, $ret_or_1 = nil; + + + self.values = ($truthy(($ret_or_1 = self.values)) ? ($ret_or_1) : ($send(self, 'map', [], function $$4($a){var $post_args, i; + + + + $post_args = Opal.slice.call(arguments); + + i = $post_args;; + return i;}, -1))); + if ($truthy($rb_ge(self.cursor, self.values.$length()))) { + $Kernel.$raise($$$('StopIteration'), "iteration reached an end") + }; + return self.values['$[]'](self.cursor); + }, 0); + + $def(self, '$peek', function $$peek() { + var self = this, values = nil; + + + values = self.$peek_values(); + if ($truthy($rb_le(values.$length(), 1))) { + return values['$[]'](0) + } else { + return values + }; + }, 0); + + $def(self, '$next_values', function $$next_values() { + var self = this, out = nil; + + + out = self.$peek_values(); + self.cursor = $rb_plus(self.cursor, 1); + return out; + }, 0); + + $def(self, '$next', function $$next() { + var self = this, values = nil; + + + values = self.$next_values(); + if ($truthy($rb_le(values.$length(), 1))) { + return values['$[]'](0) + } else { + return values + }; + }, 0); + + $def(self, '$feed', function $$feed(arg) { + var self = this; + + return self.$raise($$('NotImplementedError'), "Opal doesn't support Enumerator#feed") + }, 1); + + $def(self, '$+', function $Enumerator_$plus$5(other) { + var self = this; + + return $$$($$$('Enumerator'), 'Chain').$new(self, other) + }, 1); + + $def(self, '$inspect', function $$inspect() { + var self = this, result = nil; + + + result = "#<" + (self.$class()) + ": " + (self.object.$inspect()) + ":" + (self.method); + if ($truthy(self.args['$any?']())) { + result = $rb_plus(result, "(" + (self.args.$inspect()['$[]']($$$('Range').$new(1, -2))) + ")") + }; + return $rb_plus(result, ">"); + }, 0); + $alias(self, "with_object", "each_with_object"); + self.$autoload("ArithmeticSequence", "corelib/enumerator/arithmetic_sequence"); + self.$autoload("Chain", "corelib/enumerator/chain"); + self.$autoload("Generator", "corelib/enumerator/generator"); + self.$autoload("Lazy", "corelib/enumerator/lazy"); + return self.$autoload("Yielder", "corelib/enumerator/yielder"); + })('::', null, $nesting); +}; + +Opal.modules["corelib/numeric"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $truthy = Opal.truthy, $Kernel = Opal.Kernel, $def = Opal.def, $to_ary = Opal.to_ary, $eqeqeq = Opal.eqeqeq, $rb_minus = Opal.rb_minus, $rb_times = Opal.rb_times, $rb_lt = Opal.rb_lt, $eqeq = Opal.eqeq, $rb_divide = Opal.rb_divide, $Opal = Opal.Opal, $hash2 = Opal.hash2, $not = Opal.not, $send = Opal.send, $rb_ge = Opal.rb_ge, $rb_le = Opal.rb_le, $rb_plus = Opal.rb_plus, $rb_gt = Opal.rb_gt, $alias = Opal.alias; + + Opal.add_stubs('require,include,instance_of?,class,Float,respond_to?,coerce,__send__,===,raise,equal?,-,*,div,<,-@,ceil,to_f,denominator,to_r,==,floor,/,%,Complex,zero?,numerator,abs,arg,coerce_to!,round,<=>,compare,is_a?,!,new,enum_for,to_proc,negative?,>=,<=,+,to_i,truncate,>'); + + self.$require("corelib/comparable"); + return (function($base, $super) { + var self = $klass($base, $super, 'Numeric'); + + + + self.$include($$$('Comparable')); + + $def(self, '$coerce', function $$coerce(other) { + var self = this; + + + if ($truthy(other['$instance_of?'](self.$class()))) { + return [other, self] + }; + return [$Kernel.$Float(other), $Kernel.$Float(self)]; + }, 1); + + $def(self, '$__coerced__', function $$__coerced__(method, other) { + var $a, $b, self = this, a = nil, b = nil, $ret_or_1 = nil; + + if ($truthy(other['$respond_to?']("coerce"))) { + + $b = other.$coerce(self), $a = $to_ary($b), (a = ($a[0] == null ? nil : $a[0])), (b = ($a[1] == null ? nil : $a[1])), $b; + return a.$__send__(method, b); + } else if (($eqeqeq("+", ($ret_or_1 = method)) || (($eqeqeq("-", $ret_or_1) || (($eqeqeq("*", $ret_or_1) || (($eqeqeq("/", $ret_or_1) || (($eqeqeq("%", $ret_or_1) || (($eqeqeq("&", $ret_or_1) || (($eqeqeq("|", $ret_or_1) || (($eqeqeq("^", $ret_or_1) || ($eqeqeq("**", $ret_or_1)))))))))))))))))) { + return $Kernel.$raise($$$('TypeError'), "" + (other.$class()) + " can't be coerced into Numeric") + } else if (($eqeqeq(">", $ret_or_1) || (($eqeqeq(">=", $ret_or_1) || (($eqeqeq("<", $ret_or_1) || (($eqeqeq("<=", $ret_or_1) || ($eqeqeq("<=>", $ret_or_1)))))))))) { + return $Kernel.$raise($$$('ArgumentError'), "comparison of " + (self.$class()) + " with " + (other.$class()) + " failed") + } else { + return nil + } + }, 2); + + $def(self, '$<=>', function $Numeric_$lt_eq_gt$1(other) { + var self = this; + + + if ($truthy(self['$equal?'](other))) { + return 0 + }; + return nil; + }, 1); + + $def(self, '$+@', function $Numeric_$plus$$2() { + var self = this; + + return self + }, 0); + + $def(self, '$-@', function $Numeric_$minus$$3() { + var self = this; + + return $rb_minus(0, self) + }, 0); + + $def(self, '$%', function $Numeric_$percent$4(other) { + var self = this; + + return $rb_minus(self, $rb_times(other, self.$div(other))) + }, 1); + + $def(self, '$abs', function $$abs() { + var self = this; + + if ($rb_lt(self, 0)) { + return self['$-@']() + } else { + return self + } + }, 0); + + $def(self, '$abs2', function $$abs2() { + var self = this; + + return $rb_times(self, self) + }, 0); + + $def(self, '$angle', function $$angle() { + var self = this; + + if ($rb_lt(self, 0)) { + return $$$($$$('Math'), 'PI') + } else { + return 0 + } + }, 0); + + $def(self, '$ceil', function $$ceil(ndigits) { + var self = this; + + + + if (ndigits == null) ndigits = 0;; + return self.$to_f().$ceil(ndigits); + }, -1); + + $def(self, '$conj', function $$conj() { + var self = this; + + return self + }, 0); + + $def(self, '$denominator', function $$denominator() { + var self = this; + + return self.$to_r().$denominator() + }, 0); + + $def(self, '$div', function $$div(other) { + var self = this; + + + if ($eqeq(other, 0)) { + $Kernel.$raise($$$('ZeroDivisionError'), "divided by o") + }; + return $rb_divide(self, other).$floor(); + }, 1); + + $def(self, '$divmod', function $$divmod(other) { + var self = this; + + return [self.$div(other), self['$%'](other)] + }, 1); + + $def(self, '$fdiv', function $$fdiv(other) { + var self = this; + + return $rb_divide(self.$to_f(), other) + }, 1); + + $def(self, '$floor', function $$floor(ndigits) { + var self = this; + + + + if (ndigits == null) ndigits = 0;; + return self.$to_f().$floor(ndigits); + }, -1); + + $def(self, '$i', function $$i() { + var self = this; + + return $Kernel.$Complex(0, self) + }, 0); + + $def(self, '$imag', function $$imag() { + + return 0 + }, 0); + + $def(self, '$integer?', function $Numeric_integer$ques$5() { + + return false + }, 0); + + $def(self, '$nonzero?', function $Numeric_nonzero$ques$6() { + var self = this; + + if ($truthy(self['$zero?']())) { + return nil + } else { + return self + } + }, 0); + + $def(self, '$numerator', function $$numerator() { + var self = this; + + return self.$to_r().$numerator() + }, 0); + + $def(self, '$polar', function $$polar() { + var self = this; + + return [self.$abs(), self.$arg()] + }, 0); + + $def(self, '$quo', function $$quo(other) { + var self = this; + + return $rb_divide($Opal['$coerce_to!'](self, $$$('Rational'), "to_r"), other) + }, 1); + + $def(self, '$real', function $$real() { + var self = this; + + return self + }, 0); + + $def(self, '$real?', function $Numeric_real$ques$7() { + + return true + }, 0); + + $def(self, '$rect', function $$rect() { + var self = this; + + return [self, 0] + }, 0); + + $def(self, '$round', function $$round(digits) { + var self = this; + + + ; + return self.$to_f().$round(digits); + }, -1); + + $def(self, '$step', function $$step($a, $b, $c) { + var block = $$step.$$p || nil, $post_args, $kwargs, limit, step, to, by, $d, self = this, counter = nil; + + delete $$step.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if ($post_args.length > 0) limit = $post_args.shift();; + + if ($post_args.length > 0) step = $post_args.shift();; + + to = $kwargs.$$smap["to"];; + + by = $kwargs.$$smap["by"];; + + if (limit !== undefined && to !== undefined) { + $Kernel.$raise($$$('ArgumentError'), "to is given twice") + } + + if (step !== undefined && by !== undefined) { + $Kernel.$raise($$$('ArgumentError'), "step is given twice") + } + + if (to !== undefined) { + limit = to; + } + + if (by !== undefined) { + step = by; + } + + if (limit === undefined) { + limit = nil; + } + + function validateParameters() { + if (step === nil) { + $Kernel.$raise($$$('TypeError'), "step must be numeric") + } + + if (step != null && step['$=='](0)) { + $Kernel.$raise($$$('ArgumentError'), "step can't be 0") + } + + if (step === nil || step == null) { + step = 1; + } + + var sign = step['$<=>'](0); + + if (sign === nil) { + $Kernel.$raise($$$('ArgumentError'), "0 can't be coerced into " + (step.$class())) + } + + if (limit === nil || limit == null) { + limit = sign > 0 ? $$$($$$('Float'), 'INFINITY') : $$$($$$('Float'), 'INFINITY')['$-@'](); + } + + $Opal.$compare(self, limit) + } + + function stepFloatSize() { + if ((step > 0 && self > limit) || (step < 0 && self < limit)) { + return 0; + } else if (step === Infinity || step === -Infinity) { + return 1; + } else { + var abs = Math.abs, floor = Math.floor, + err = (abs(self) + abs(limit) + abs(limit - self)) / abs(step) * $$$($$$('Float'), 'EPSILON'); + + if (err === Infinity || err === -Infinity) { + return 0; + } else { + if (err > 0.5) { + err = 0.5; + } + + return floor((limit - self) / step + err) + 1 + } + } + } + + function stepSize() { + validateParameters(); + + if (step === 0) { + return Infinity; + } + + if (step % 1 !== 0) { + return stepFloatSize(); + } else if ((step > 0 && self > limit) || (step < 0 && self < limit)) { + return 0; + } else { + var ceil = Math.ceil, abs = Math.abs, + lhs = abs(self - limit) + 1, + rhs = abs(step); + + return ceil(lhs / rhs); + } + } + + ; + if (!(block !== nil)) { + if ((($not(limit) || ($truthy(limit['$is_a?']($$$('Numeric'))))) && (($not(step) || ($truthy(step['$is_a?']($$$('Numeric')))))))) { + return $$$($$$('Enumerator'), 'ArithmeticSequence').$new([limit, step, ($truthy(to) ? ("to: ") : nil), ($truthy(by) ? ("by: ") : nil)], self) + } else { + return $send(self, 'enum_for', ["step", limit, step], (stepSize).$to_proc()) + } + }; + + validateParameters(); + + var isDesc = step['$negative?'](), + isInf = step['$=='](0) || + (limit === Infinity && !isDesc) || + (limit === -Infinity && isDesc); + + if (self.$$is_number && step.$$is_number && limit.$$is_number) { + if (self % 1 === 0 && (isInf || limit % 1 === 0) && step % 1 === 0) { + var value = self; + + if (isInf) { + for (;; value += step) { + block(value); + } + } else if (isDesc) { + for (; value >= limit; value += step) { + block(value); + } + } else { + for (; value <= limit; value += step) { + block(value); + } + } + + return self; + } else { + var begin = self.$to_f().valueOf(); + step = step.$to_f().valueOf(); + limit = limit.$to_f().valueOf(); + + var n = stepFloatSize(); + + if (!isFinite(step)) { + if (n !== 0) block(begin); + } else if (step === 0) { + while (true) { + block(begin); + } + } else { + for (var i = 0; i < n; i++) { + var d = i * step + self; + if (step >= 0 ? limit < d : limit > d) { + d = limit; + } + block(d); + } + } + + return self; + } + } + ; + counter = self; + while ($truthy(isDesc ? $rb_ge(counter, limit) : $rb_le(counter, limit))) { + + Opal.yield1(block, counter); + counter = $rb_plus(counter, step); + }; + }, -1); + + $def(self, '$to_c', function $$to_c() { + var self = this; + + return $Kernel.$Complex(self, 0) + }, 0); + + $def(self, '$to_int', function $$to_int() { + var self = this; + + return self.$to_i() + }, 0); + + $def(self, '$truncate', function $$truncate(ndigits) { + var self = this; + + + + if (ndigits == null) ndigits = 0;; + return self.$to_f().$truncate(ndigits); + }, -1); + + $def(self, '$zero?', function $Numeric_zero$ques$8() { + var self = this; + + return self['$=='](0) + }, 0); + + $def(self, '$positive?', function $Numeric_positive$ques$9() { + var self = this; + + return $rb_gt(self, 0) + }, 0); + + $def(self, '$negative?', function $Numeric_negative$ques$10() { + var self = this; + + return $rb_lt(self, 0) + }, 0); + + $def(self, '$dup', function $$dup() { + var self = this; + + return self + }, 0); + + $def(self, '$clone', function $$clone($kwargs) { + var freeze, self = this; + + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + freeze = $kwargs.$$smap["freeze"]; + if (freeze == null) freeze = true; + return self; + }, -1); + + $def(self, '$finite?', function $Numeric_finite$ques$11() { + + return true + }, 0); + + $def(self, '$infinite?', function $Numeric_infinite$ques$12() { + + return nil + }, 0); + $alias(self, "arg", "angle"); + $alias(self, "conjugate", "conj"); + $alias(self, "imaginary", "imag"); + $alias(self, "magnitude", "abs"); + $alias(self, "modulo", "%"); + $alias(self, "phase", "arg"); + return $alias(self, "rectangular", "rect"); + })('::', null); +}; + +Opal.modules["corelib/array"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $falsy = Opal.falsy, $hash_ids = Opal.hash_ids, $yield1 = Opal.yield1, $hash_get = Opal.hash_get, $hash_put = Opal.hash_put, $hash_delete = Opal.hash_delete, $coerce_to = Opal.coerce_to, $respond_to = Opal.respond_to, $klass = Opal.klass, $defs = Opal.defs, $Kernel = Opal.Kernel, $def = Opal.def, $Opal = Opal.Opal, $eqeqeq = Opal.eqeqeq, $hash2 = Opal.hash2, $send2 = Opal.send2, $find_super = Opal.find_super, $send = Opal.send, $rb_gt = Opal.rb_gt, $rb_times = Opal.rb_times, $eqeq = Opal.eqeq, $rb_minus = Opal.rb_minus, $to_a = Opal.to_a, $to_ary = Opal.to_ary, $gvars = Opal.gvars, $rb_ge = Opal.rb_ge, $rb_lt = Opal.rb_lt, $neqeq = Opal.neqeq, $alias = Opal.alias; + + Opal.add_stubs('require,include,to_a,warn,raise,replace,respond_to?,to_ary,coerce_to?,===,join,to_str,hash,<=>,==,object_id,inspect,enum_for,class,bsearch_index,to_proc,nil?,coerce_to!,>,*,enumerator_size,empty?,size,map,equal?,dup,each,reduce,-,[],dig,eql?,length,exclude_end?,flatten,__id__,&,!,intersection,to_s,new,item,max,min,>=,**,delete_if,reverse,rotate,rand,at,keep_if,shuffle!,<,sort,sort_by,!=,times,[]=,<<,uniq,|,values,is_a?,end,begin,upto,reject,pristine,singleton_class'); + + self.$require("corelib/enumerable"); + self.$require("corelib/numeric"); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Array'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$include($$$('Enumerable')); + Opal.prop(self.$$prototype, '$$is_array', true); + + // Recent versions of V8 (> 7.1) only use an optimized implementation when Array.prototype is unmodified. + // For instance, "array-splice.tq" has a "fast path" (ExtractFastJSArray, defined in "src/codegen/code-stub-assembler.cc") + // but it's only enabled when "IsPrototypeInitialArrayPrototype()" is true. + // + // Older versions of V8 were using relatively fast JS-with-extensions code even when Array.prototype is modified: + // https://github.com/v8/v8/blob/7.0.1/src/js/array.js#L599-L642 + // + // In short, Array operations are slow in recent versions of V8 when the Array.prototype has been tampered. + // So, when possible, we are using faster open-coded version to boost the performance. + + // As of V8 8.4, depending on the size of the array, this is up to ~25x times faster than Array#shift() + // Implementation is heavily inspired by: https://github.com/nodejs/node/blob/ba684805b6c0eded76e5cd89ee00328ac7a59365/lib/internal/util.js#L341-L347 + function shiftNoArg(list) { + var r = list[0]; + var index = 1; + var length = list.length; + for (; index < length; index++) { + list[index - 1] = list[index]; + } + list.pop(); + return r; + } + + function toArraySubclass(obj, klass) { + if (klass.$$name === Opal.Array) { + return obj; + } else { + return klass.$allocate().$replace((obj).$to_a()); + } + } + + // A helper for keep_if and delete_if, filter is either Opal.truthy + // or Opal.falsy. + function filterIf(self, filter, block) { + var value, raised = null, updated = new Array(self.length); + + for (var i = 0, i2 = 0, length = self.length; i < length; i++) { + if (!raised) { + try { + value = $yield1(block, self[i]) + } catch(error) { + raised = error; + } + } + + if (raised || filter(value)) { + updated[i2] = self[i] + i2 += 1; + } + } + + if (i2 !== i) { + self.splice.apply(self, [0, updated.length].concat(updated)); + self.splice(i2, updated.length); + } + + if (raised) throw raised; + } + ; + $defs(self, '$[]', function $Array_$$$1($a) { + var $post_args, objects, self = this; + + + + $post_args = Opal.slice.call(arguments); + + objects = $post_args;; + return toArraySubclass(objects, self);; + }, -1); + + $def(self, '$initialize', function $$initialize(size, obj) { + var block = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + ; + + if (size == null) size = nil;; + + if (obj == null) obj = nil;; + + if (obj !== nil && block !== nil) { + $Kernel.$warn("warning: block supersedes default value argument") + } + + if (size > $$$($$$('Integer'), 'MAX')) { + $Kernel.$raise($$$('ArgumentError'), "array size too big") + } + + if (arguments.length > 2) { + $Kernel.$raise($$$('ArgumentError'), "wrong number of arguments (" + (arguments.length) + " for 0..2)") + } + + if (arguments.length === 0) { + self.splice(0, self.length); + return self; + } + + if (arguments.length === 1) { + if (size.$$is_array) { + self.$replace(size.$to_a()) + return self; + } else if (size['$respond_to?']("to_ary")) { + self.$replace(size.$to_ary()) + return self; + } + } + + size = $coerce_to(size, $$$('Integer'), 'to_int'); + + if (size < 0) { + $Kernel.$raise($$$('ArgumentError'), "negative array size") + } + + self.splice(0, self.length); + var i, value; + + if (block === nil) { + for (i = 0; i < size; i++) { + self.push(obj); + } + } + else { + for (i = 0, value; i < size; i++) { + value = block(i); + self[i] = value; + } + } + + return self; + ; + }, -1); + $defs(self, '$try_convert', function $$try_convert(obj) { + + return $Opal['$coerce_to?'](obj, $$$('Array'), "to_ary") + }, 1); + + $def(self, '$&', function $Array_$$2(other) { + var self = this; + + + other = ($eqeqeq($$$('Array'), other) ? (other.$to_a()) : (($coerce_to(other, $$$('Array'), 'to_ary')).$to_a())); + + var result = [], hash = $hash2([], {}), i, length, item; + + for (i = 0, length = other.length; i < length; i++) { + $hash_put(hash, other[i], true); + } + + for (i = 0, length = self.length; i < length; i++) { + item = self[i]; + if ($hash_delete(hash, item) !== undefined) { + result.push(item); + } + } + + return result; + ; + }, 1); + + $def(self, '$|', function $Array_$$3(other) { + var self = this; + + + other = ($eqeqeq($$$('Array'), other) ? (other.$to_a()) : (($coerce_to(other, $$$('Array'), 'to_ary')).$to_a())); + + var hash = $hash2([], {}), i, length, item; + + for (i = 0, length = self.length; i < length; i++) { + $hash_put(hash, self[i], true); + } + + for (i = 0, length = other.length; i < length; i++) { + $hash_put(hash, other[i], true); + } + + return hash.$keys(); + ; + }, 1); + + $def(self, '$*', function $Array_$$4(other) { + var self = this; + + + if ($truthy(other['$respond_to?']("to_str"))) { + return self.$join(other.$to_str()) + }; + other = $coerce_to(other, $$$('Integer'), 'to_int'); + if ($truthy(other < 0)) { + $Kernel.$raise($$$('ArgumentError'), "negative argument") + }; + + var result = [], + converted = self.$to_a(); + + for (var i = 0; i < other; i++) { + result = result.concat(converted); + } + + return result; + ; + }, 1); + + $def(self, '$+', function $Array_$plus$5(other) { + var self = this; + + + other = ($eqeqeq($$$('Array'), other) ? (other.$to_a()) : (($coerce_to(other, $$$('Array'), 'to_ary')).$to_a())); + return self.concat(other);; + }, 1); + + $def(self, '$-', function $Array_$minus$6(other) { + var self = this; + + + other = ($eqeqeq($$$('Array'), other) ? (other.$to_a()) : (($coerce_to(other, $$$('Array'), 'to_ary')).$to_a())); + if ($truthy(self.length === 0)) { + return [] + }; + if ($truthy(other.length === 0)) { + return self.slice() + }; + + var result = [], hash = $hash2([], {}), i, length, item; + + for (i = 0, length = other.length; i < length; i++) { + $hash_put(hash, other[i], true); + } + + for (i = 0, length = self.length; i < length; i++) { + item = self[i]; + if ($hash_get(hash, item) === undefined) { + result.push(item); + } + } + + return result; + ; + }, 1); + + $def(self, '$<<', function $Array_$lt$lt$7(object) { + var self = this; + + + self.push(object); + return self; + }, 1); + + $def(self, '$<=>', function $Array_$lt_eq_gt$8(other) { + var self = this; + + + if ($eqeqeq($$$('Array'), other)) { + other = other.$to_a() + } else if ($truthy(other['$respond_to?']("to_ary"))) { + other = other.$to_ary().$to_a() + } else { + return nil + }; + + if (self.$hash() === other.$hash()) { + return 0; + } + + var count = Math.min(self.length, other.length); + + for (var i = 0; i < count; i++) { + var tmp = (self[i])['$<=>'](other[i]); + + if (tmp !== 0) { + return tmp; + } + } + + return (self.length)['$<=>'](other.length); + ; + }, 1); + + $def(self, '$==', function $Array_$eq_eq$9(other) { + var self = this; + + + var recursed = {}; + + function _eqeq(array, other) { + var i, length, a, b; + + if (array === other) + return true; + + if (!other.$$is_array) { + if ($respond_to(other, '$to_ary')) { + return (other)['$=='](array); + } else { + return false; + } + } + + if (array.$$constructor !== Array) + array = (array).$to_a(); + if (other.$$constructor !== Array) + other = (other).$to_a(); + + if (array.length !== other.length) { + return false; + } + + recursed[(array).$object_id()] = true; + + for (i = 0, length = array.length; i < length; i++) { + a = array[i]; + b = other[i]; + if (a.$$is_array) { + if (b.$$is_array && b.length !== a.length) { + return false; + } + if (!recursed.hasOwnProperty((a).$object_id())) { + if (!_eqeq(a, b)) { + return false; + } + } + } else { + if (!(a)['$=='](b)) { + return false; + } + } + } + + return true; + } + + return _eqeq(self, other); + + }, 1); + + function $array_slice_range(self, index) { + var size = self.length, + exclude, from, to, result; + + exclude = index.excl; + from = index.begin === nil ? 0 : $coerce_to(index.begin, Opal.Integer, 'to_int'); + to = index.end === nil ? -1 : $coerce_to(index.end, Opal.Integer, 'to_int'); + + if (from < 0) { + from += size; + + if (from < 0) { + return nil; + } + } + + if (index.excl_rev && index.begin !== nil) { + from += 1; + } + + if (from > size) { + return nil; + } + + if (to < 0) { + to += size; + + if (to < 0) { + return []; + } + } + + if (!exclude || index.end === nil) { + to += 1; + } + + result = self.slice(from, to); + return result; + } + + function $array_slice_arithmetic_seq(self, index) { + var array, out = [], i = 0, pseudorange; + + if (index.step < 0) { + pseudorange = { + begin: index.range.end, + end: index.range.begin, + excl: false, + excl_rev: index.range.excl + }; + array = $array_slice_range(self, pseudorange).$reverse(); + } + else { + array = $array_slice_range(self, index.range); + } + + while (i < array.length) { + out.push(array[i]); + i += Math.abs(index.step); + } + + return out; + } + + function $array_slice_index_length(self, index, length) { + var size = self.length, + exclude, from, to, result; + + index = $coerce_to(index, Opal.Integer, 'to_int'); + + if (index < 0) { + index += size; + + if (index < 0) { + return nil; + } + } + + if (length === undefined) { + if (index >= size || index < 0) { + return nil; + } + + return self[index]; + } + else { + length = $coerce_to(length, Opal.Integer, 'to_int'); + + if (length < 0 || index > size || index < 0) { + return nil; + } + + result = self.slice(index, index + length); + } + return result; + } + ; + + $def(self, '$[]', function $Array_$$$10(index, length) { + var self = this; + + + ; + + if (index.$$is_range) { + return $array_slice_range(self, index); + } + else if (index.$$is_arithmetic_seq) { + return $array_slice_arithmetic_seq(self, index); + } + else { + return $array_slice_index_length(self, index, length); + } + ; + }, -2); + + $def(self, '$[]=', function $Array_$$$eq$11(index, value, extra) { + var self = this, data = nil, length = nil; + + + ; + var i, size = self.length;; + if ($eqeqeq($$$('Range'), index)) { + + data = ($eqeqeq($$$('Array'), value) ? (value.$to_a()) : ($truthy(value['$respond_to?']("to_ary")) ? (value.$to_ary().$to_a()) : ([value]))); + + var exclude = index.excl, + from = index.begin === nil ? 0 : $coerce_to(index.begin, Opal.Integer, 'to_int'), + to = index.end === nil ? -1 : $coerce_to(index.end, Opal.Integer, 'to_int'); + + if (from < 0) { + from += size; + + if (from < 0) { + $Kernel.$raise($$$('RangeError'), "" + (index.$inspect()) + " out of range"); + } + } + + if (to < 0) { + to += size; + } + + if (!exclude || index.end === nil) { + to += 1; + } + + if (from > size) { + for (i = size; i < from; i++) { + self[i] = nil; + } + } + + if (to < 0) { + self.splice.apply(self, [from, 0].concat(data)); + } + else { + self.splice.apply(self, [from, to - from].concat(data)); + } + + return value; + ; + } else { + + if ($truthy(extra === undefined)) { + length = 1 + } else { + + length = value; + value = extra; + data = ($eqeqeq($$$('Array'), value) ? (value.$to_a()) : ($truthy(value['$respond_to?']("to_ary")) ? (value.$to_ary().$to_a()) : ([value]))); + }; + + var old; + + index = $coerce_to(index, $$$('Integer'), 'to_int'); + length = $coerce_to(length, $$$('Integer'), 'to_int'); + + if (index < 0) { + old = index; + index += size; + + if (index < 0) { + $Kernel.$raise($$$('IndexError'), "index " + (old) + " too small for array; minimum " + (-self.length)); + } + } + + if (length < 0) { + $Kernel.$raise($$$('IndexError'), "negative length (" + (length) + ")") + } + + if (index > size) { + for (i = size; i < index; i++) { + self[i] = nil; + } + } + + if (extra === undefined) { + self[index] = value; + } + else { + self.splice.apply(self, [index, length].concat(data)); + } + + return value; + ; + }; + }, -3); + + $def(self, '$any?', function $Array_any$ques$12(pattern) { + var block = $Array_any$ques$12.$$p || nil, self = this; + + delete $Array_any$ques$12.$$p; + + ; + ; + if (self.length === 0) return false; + return $send2(self, $find_super(self, 'any?', $Array_any$ques$12, false, true), 'any?', [pattern], block); + }, -1); + + $def(self, '$assoc', function $$assoc(object) { + var self = this; + + + for (var i = 0, length = self.length, item; i < length; i++) { + if (item = self[i], item.length && (item[0])['$=='](object)) { + return item; + } + } + + return nil; + + }, 1); + + $def(self, '$at', function $$at(index) { + var self = this; + + + index = $coerce_to(index, $$$('Integer'), 'to_int') + + if (index < 0) { + index += self.length; + } + + if (index < 0 || index >= self.length) { + return nil; + } + + return self[index]; + + }, 1); + + $def(self, '$bsearch_index', function $$bsearch_index() { + var block = $$bsearch_index.$$p || nil, self = this; + + delete $$bsearch_index.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("bsearch_index") + }; + + var min = 0, + max = self.length, + mid, + val, + ret, + smaller = false, + satisfied = nil; + + while (min < max) { + mid = min + Math.floor((max - min) / 2); + val = self[mid]; + ret = $yield1(block, val); + + if (ret === true) { + satisfied = mid; + smaller = true; + } + else if (ret === false || ret === nil) { + smaller = false; + } + else if (ret.$$is_number) { + if (ret === 0) { return mid; } + smaller = (ret < 0); + } + else { + $Kernel.$raise($$$('TypeError'), "wrong argument type " + ((ret).$class()) + " (must be numeric, true, false or nil)") + } + + if (smaller) { max = mid; } else { min = mid + 1; } + } + + return satisfied; + ; + }, 0); + + $def(self, '$bsearch', function $$bsearch() { + var block = $$bsearch.$$p || nil, self = this, index = nil; + + delete $$bsearch.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("bsearch") + }; + index = $send(self, 'bsearch_index', [], block.$to_proc()); + + if (index != null && index.$$is_number) { + return self[index]; + } else { + return index; + } + ; + }, 0); + + $def(self, '$cycle', function $$cycle(n) { + var block = $$cycle.$$p || nil, self = this; + + delete $$cycle.$$p; + + ; + + if (n == null) n = nil;; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["cycle", n], function $$13(){var self = $$13.$$s == null ? this : $$13.$$s; + + if ($truthy(n['$nil?']())) { + return $$$($$$('Float'), 'INFINITY') + } else { + + n = $Opal['$coerce_to!'](n, $$$('Integer'), "to_int"); + if ($truthy($rb_gt(n, 0))) { + return $rb_times(self.$enumerator_size(), n) + } else { + return 0 + }; + }}, {$$arity: 0, $$s: self}) + }; + if (($truthy(self['$empty?']()) || ($eqeq(n, 0)))) { + return nil + }; + + var i, length, value; + + if (n === nil) { + while (true) { + for (i = 0, length = self.length; i < length; i++) { + value = $yield1(block, self[i]); + } + } + } + else { + n = $Opal['$coerce_to!'](n, $$$('Integer'), "to_int"); + if (n <= 0) { + return self; + } + + while (n > 0) { + for (i = 0, length = self.length; i < length; i++) { + value = $yield1(block, self[i]); + } + + n--; + } + } + ; + return self; + }, -1); + + $def(self, '$clear', function $$clear() { + var self = this; + + + self.splice(0, self.length); + return self; + }, 0); + + $def(self, '$count', function $$count(object) { + var block = $$count.$$p || nil, self = this; + + delete $$count.$$p; + + ; + ; + if (($truthy(object !== undefined) || ($truthy(block)))) { + return $send2(self, $find_super(self, 'count', $$count, false, true), 'count', [object], block) + } else { + return self.$size() + }; + }, -1); + + $def(self, '$initialize_copy', function $$initialize_copy(other) { + var self = this; + + return self.$replace(other) + }, 1); + + $def(self, '$collect', function $$collect() { + var block = $$collect.$$p || nil, self = this; + + delete $$collect.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["collect"], function $$14(){var self = $$14.$$s == null ? this : $$14.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + var result = []; + + for (var i = 0, length = self.length; i < length; i++) { + var value = $yield1(block, self[i]); + result.push(value); + } + + return result; + ; + }, 0); + + $def(self, '$collect!', function $Array_collect$excl$15() { + var block = $Array_collect$excl$15.$$p || nil, self = this; + + delete $Array_collect$excl$15.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["collect!"], function $$16(){var self = $$16.$$s == null ? this : $$16.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + for (var i = 0, length = self.length; i < length; i++) { + var value = $yield1(block, self[i]); + self[i] = value; + } + ; + return self; + }, 0); + + function binomial_coefficient(n, k) { + if (n === k || k === 0) { + return 1; + } + + if (k > 0 && n > k) { + return binomial_coefficient(n - 1, k - 1) + binomial_coefficient(n - 1, k); + } + + return 0; + } + ; + + $def(self, '$combination', function $$combination(n) { + var $yield = $$combination.$$p || nil, self = this, num = nil; + + delete $$combination.$$p; + + num = $Opal['$coerce_to!'](n, $$$('Integer'), "to_int"); + if (!($yield !== nil)) { + return $send(self, 'enum_for', ["combination", num], function $$17(){var self = $$17.$$s == null ? this : $$17.$$s; + + return binomial_coefficient(self.length, num)}, {$$arity: 0, $$s: self}) + }; + + var i, length, stack, chosen, lev, done, next; + + if (num === 0) { + Opal.yield1($yield, []) + } else if (num === 1) { + for (i = 0, length = self.length; i < length; i++) { + Opal.yield1($yield, [self[i]]) + } + } + else if (num === self.length) { + Opal.yield1($yield, self.slice()) + } + else if (num >= 0 && num < self.length) { + stack = []; + for (i = 0; i <= num + 1; i++) { + stack.push(0); + } + + chosen = []; + lev = 0; + done = false; + stack[0] = -1; + + while (!done) { + chosen[lev] = self[stack[lev+1]]; + while (lev < num - 1) { + lev++; + next = stack[lev+1] = stack[lev] + 1; + chosen[lev] = self[next]; + } + Opal.yield1($yield, chosen.slice()) + lev++; + do { + done = (lev === 0); + stack[lev]++; + lev--; + } while ( stack[lev+1] + num === self.length + lev + 1 ); + } + } + ; + return self; + }, 1); + + $def(self, '$repeated_combination', function $$repeated_combination(n) { + var $yield = $$repeated_combination.$$p || nil, self = this, num = nil; + + delete $$repeated_combination.$$p; + + num = $Opal['$coerce_to!'](n, $$$('Integer'), "to_int"); + if (!($yield !== nil)) { + return $send(self, 'enum_for', ["repeated_combination", num], function $$18(){var self = $$18.$$s == null ? this : $$18.$$s; + + return binomial_coefficient(self.length + num - 1, num);}, {$$arity: 0, $$s: self}) + }; + + function iterate(max, from, buffer, self) { + if (buffer.length == max) { + var copy = buffer.slice(); + Opal.yield1($yield, copy) + return; + } + for (var i = from; i < self.length; i++) { + buffer.push(self[i]); + iterate(max, i, buffer, self); + buffer.pop(); + } + } + + if (num >= 0) { + iterate(num, 0, [], self); + } + ; + return self; + }, 1); + + $def(self, '$compact', function $$compact() { + var self = this; + + + var result = []; + + for (var i = 0, length = self.length, item; i < length; i++) { + if ((item = self[i]) !== nil) { + result.push(item); + } + } + + return result; + + }, 0); + + $def(self, '$compact!', function $Array_compact$excl$19() { + var self = this; + + + var original = self.length; + + for (var i = 0, length = self.length; i < length; i++) { + if (self[i] === nil) { + self.splice(i, 1); + + length--; + i--; + } + } + + return self.length === original ? nil : self; + + }, 0); + + $def(self, '$concat', function $$concat($a) { + var $post_args, others, self = this; + + + + $post_args = Opal.slice.call(arguments); + + others = $post_args;; + others = $send(others, 'map', [], function $$20(other){var self = $$20.$$s == null ? this : $$20.$$s; + + + + if (other == null) other = nil;; + other = ($eqeqeq($$$('Array'), other) ? (other.$to_a()) : (($coerce_to(other, $$$('Array'), 'to_ary')).$to_a())); + if ($truthy(other['$equal?'](self))) { + other = other.$dup() + }; + return other;}, {$$arity: 1, $$s: self}); + $send(others, 'each', [], function $$21(other){var self = $$21.$$s == null ? this : $$21.$$s; + + + + if (other == null) other = nil;; + + for (var i = 0, length = other.length; i < length; i++) { + self.push(other[i]); + } + ;}, {$$arity: 1, $$s: self}); + return self; + }, -1); + + $def(self, '$delete', function $Array_delete$22(object) { + var $yield = $Array_delete$22.$$p || nil, self = this; + + delete $Array_delete$22.$$p; + + var original = self.length; + + for (var i = 0, length = original; i < length; i++) { + if ((self[i])['$=='](object)) { + self.splice(i, 1); + + length--; + i--; + } + } + + if (self.length === original) { + if (($yield !== nil)) { + return Opal.yieldX($yield, []); + } + return nil; + } + return object; + + }, 1); + + $def(self, '$delete_at', function $$delete_at(index) { + var self = this; + + + index = $coerce_to(index, $$$('Integer'), 'to_int'); + + if (index < 0) { + index += self.length; + } + + if (index < 0 || index >= self.length) { + return nil; + } + + var result = self[index]; + + self.splice(index, 1); + + return result; + + }, 1); + + $def(self, '$delete_if', function $$delete_if() { + var block = $$delete_if.$$p || nil, self = this; + + delete $$delete_if.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["delete_if"], function $$23(){var self = $$23.$$s == null ? this : $$23.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + filterIf(self, $falsy, block); + return self; + }, 0); + + $def(self, '$difference', function $$difference($a) { + var $post_args, arrays, self = this; + + + + $post_args = Opal.slice.call(arguments); + + arrays = $post_args;; + return $send(arrays, 'reduce', [self.$to_a().$dup()], function $$24(a, b){ + + + if (a == null) a = nil;; + + if (b == null) b = nil;; + return $rb_minus(a, b);}, 2); + }, -1); + + $def(self, '$dig', function $$dig(idx, $a) { + var $post_args, idxs, self = this, item = nil; + + + + $post_args = Opal.slice.call(arguments, 1); + + idxs = $post_args;; + item = self['$[]'](idx); + + if (item === nil || idxs.length === 0) { + return item; + } + ; + if (!$truthy(item['$respond_to?']("dig"))) { + $Kernel.$raise($$$('TypeError'), "" + (item.$class()) + " does not have #dig method") + }; + return $send(item, 'dig', $to_a(idxs)); + }, -2); + + $def(self, '$drop', function $$drop(number) { + var self = this; + + + number = $coerce_to(number, $$$('Integer'), 'to_int'); + + if (number < 0) { + $Kernel.$raise($$$('ArgumentError')) + } + + return self.slice(number); + + }, 1); + + $def(self, '$dup', function $$dup() { + var $yield = $$dup.$$p || nil, self = this; + + delete $$dup.$$p; + + + if (self.$$class === Opal.Array && + self.$$class.$allocate.$$pristine && + self.$copy_instance_variables.$$pristine && + self.$initialize_dup.$$pristine) { + return self.slice(0); + } + ; + return $send2(self, $find_super(self, 'dup', $$dup, false, true), 'dup', [], $yield); + }, 0); + + $def(self, '$each', function $$each() { + var block = $$each.$$p || nil, self = this; + + delete $$each.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["each"], function $$25(){var self = $$25.$$s == null ? this : $$25.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + for (var i = 0, length = self.length; i < length; i++) { + var value = $yield1(block, self[i]); + } + ; + return self; + }, 0); + + $def(self, '$each_index', function $$each_index() { + var block = $$each_index.$$p || nil, self = this; + + delete $$each_index.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["each_index"], function $$26(){var self = $$26.$$s == null ? this : $$26.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + for (var i = 0, length = self.length; i < length; i++) { + var value = $yield1(block, i); + } + ; + return self; + }, 0); + + $def(self, '$empty?', function $Array_empty$ques$27() { + var self = this; + + return self.length === 0; + }, 0); + + $def(self, '$eql?', function $Array_eql$ques$28(other) { + var self = this; + + + var recursed = {}; + + function _eql(array, other) { + var i, length, a, b; + + if (!other.$$is_array) { + return false; + } + + other = other.$to_a(); + + if (array.length !== other.length) { + return false; + } + + recursed[(array).$object_id()] = true; + + for (i = 0, length = array.length; i < length; i++) { + a = array[i]; + b = other[i]; + if (a.$$is_array) { + if (b.$$is_array && b.length !== a.length) { + return false; + } + if (!recursed.hasOwnProperty((a).$object_id())) { + if (!_eql(a, b)) { + return false; + } + } + } else { + if (!(a)['$eql?'](b)) { + return false; + } + } + } + + return true; + } + + return _eql(self, other); + + }, 1); + + $def(self, '$fetch', function $$fetch(index, defaults) { + var block = $$fetch.$$p || nil, self = this; + + delete $$fetch.$$p; + + ; + ; + + var original = index; + + index = $coerce_to(index, $$$('Integer'), 'to_int'); + + if (index < 0) { + index += self.length; + } + + if (index >= 0 && index < self.length) { + return self[index]; + } + + if (block !== nil && defaults != null) { + self.$warn("warning: block supersedes default value argument") + } + + if (block !== nil) { + return block(original); + } + + if (defaults != null) { + return defaults; + } + + if (self.length === 0) { + $Kernel.$raise($$$('IndexError'), "index " + (original) + " outside of array bounds: 0...0") + } + else { + $Kernel.$raise($$$('IndexError'), "index " + (original) + " outside of array bounds: -" + (self.length) + "..." + (self.length)); + } + ; + }, -2); + + $def(self, '$fill', function $$fill($a) { + var block = $$fill.$$p || nil, $post_args, args, $b, $c, self = this, one = nil, two = nil, obj = nil, left = nil, right = nil; + + delete $$fill.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + var i, length, value;; + if ($truthy(block)) { + + if ($truthy(args.length > 2)) { + $Kernel.$raise($$$('ArgumentError'), "wrong number of arguments (" + (args.$length()) + " for 0..2)") + }; + $c = args, $b = $to_ary($c), (one = ($b[0] == null ? nil : $b[0])), (two = ($b[1] == null ? nil : $b[1])), $c; + } else { + + if ($truthy(args.length == 0)) { + $Kernel.$raise($$$('ArgumentError'), "wrong number of arguments (0 for 1..3)") + } else if ($truthy(args.length > 3)) { + $Kernel.$raise($$$('ArgumentError'), "wrong number of arguments (" + (args.$length()) + " for 1..3)") + }; + $c = args, $b = $to_ary($c), (obj = ($b[0] == null ? nil : $b[0])), (one = ($b[1] == null ? nil : $b[1])), (two = ($b[2] == null ? nil : $b[2])), $c; + }; + if ($eqeqeq($$$('Range'), one)) { + + if ($truthy(two)) { + $Kernel.$raise($$$('TypeError'), "length invalid with range") + }; + left = one.begin === nil ? 0 : $coerce_to(one.begin, $$$('Integer'), 'to_int'); + if ($truthy(left < 0)) { + left += this.length + }; + if ($truthy(left < 0)) { + $Kernel.$raise($$$('RangeError'), "" + (one.$inspect()) + " out of range") + }; + right = one.end === nil ? -1 : $coerce_to(one.end, $$$('Integer'), 'to_int'); + if ($truthy(right < 0)) { + right += this.length + }; + if (!$truthy(one['$exclude_end?']())) { + right += 1 + }; + if ($truthy(right <= left)) { + return self + }; + } else if ($truthy(one)) { + + left = $coerce_to(one, $$$('Integer'), 'to_int'); + if ($truthy(left < 0)) { + left += this.length + }; + if ($truthy(left < 0)) { + left = 0 + }; + if ($truthy(two)) { + + right = $coerce_to(two, $$$('Integer'), 'to_int'); + if ($truthy(right == 0)) { + return self + }; + right += left; + } else { + right = this.length + }; + } else { + + left = 0; + right = this.length; + }; + if ($truthy(left > this.length)) { + + for (i = this.length; i < right; i++) { + self[i] = nil; + } + + }; + if ($truthy(right > this.length)) { + this.length = right + }; + if ($truthy(block)) { + + for (length = this.length; left < right; left++) { + value = block(left); + self[left] = value; + } + + } else { + + for (length = this.length; left < right; left++) { + self[left] = obj; + } + + }; + return self; + }, -1); + + $def(self, '$first', function $$first(count) { + var self = this; + + + ; + + if (count == null) { + return self.length === 0 ? nil : self[0]; + } + + count = $coerce_to(count, $$$('Integer'), 'to_int'); + + if (count < 0) { + $Kernel.$raise($$$('ArgumentError'), "negative array size"); + } + + return self.slice(0, count); + ; + }, -1); + + $def(self, '$flatten', function $$flatten(level) { + var self = this; + + + ; + + function _flatten(array, level) { + var result = [], + i, length, + item, ary; + + array = (array).$to_a(); + + for (i = 0, length = array.length; i < length; i++) { + item = array[i]; + + if (!$respond_to(item, '$to_ary', true)) { + result.push(item); + continue; + } + + ary = (item).$to_ary(); + + if (ary === nil) { + result.push(item); + continue; + } + + if (!ary.$$is_array) { + $Kernel.$raise($$$('TypeError')); + } + + if (ary === self) { + $Kernel.$raise($$$('ArgumentError')); + } + + switch (level) { + case undefined: + result = result.concat(_flatten(ary)); + break; + case 0: + result.push(ary); + break; + default: + result.push.apply(result, _flatten(ary, level - 1)); + } + } + return result; + } + + if (level !== undefined) { + level = $coerce_to(level, $$$('Integer'), 'to_int'); + } + + return _flatten(self, level); + ; + }, -1); + + $def(self, '$flatten!', function $Array_flatten$excl$29(level) { + var self = this; + + + ; + + var flattened = self.$flatten(level); + + if (self.length == flattened.length) { + for (var i = 0, length = self.length; i < length; i++) { + if (self[i] !== flattened[i]) { + break; + } + } + + if (i == length) { + return nil; + } + } + + self.$replace(flattened); + ; + return self; + }, -1); + + $def(self, '$hash', function $$hash() { + var self = this; + + + var top = ($hash_ids === undefined), + result = ['A'], + hash_id = self.$object_id(), + item, i, key; + + try { + if (top) { + $hash_ids = Object.create(null); + } + + // return early for recursive structures + if ($hash_ids[hash_id]) { + return 'self'; + } + + for (key in $hash_ids) { + item = $hash_ids[key]; + if (self['$eql?'](item)) { + return 'self'; + } + } + + $hash_ids[hash_id] = self; + + for (i = 0; i < self.length; i++) { + item = self[i]; + result.push(item.$hash()); + } + + return result.join(','); + } finally { + if (top) { + $hash_ids = undefined; + } + } + + }, 0); + + $def(self, '$include?', function $Array_include$ques$30(member) { + var self = this; + + + for (var i = 0, length = self.length; i < length; i++) { + if ((self[i])['$=='](member)) { + return true; + } + } + + return false; + + }, 1); + + $def(self, '$index', function $$index(object) { + var block = $$index.$$p || nil, self = this; + + delete $$index.$$p; + + ; + ; + + var i, length, value; + + if (object != null && block !== nil) { + self.$warn("warning: given block not used") + } + + if (object != null) { + for (i = 0, length = self.length; i < length; i++) { + if ((self[i])['$=='](object)) { + return i; + } + } + } + else if (block !== nil) { + for (i = 0, length = self.length; i < length; i++) { + value = block(self[i]); + + if (value !== false && value !== nil) { + return i; + } + } + } + else { + return self.$enum_for("index"); + } + + return nil; + ; + }, -1); + + $def(self, '$insert', function $$insert(index, $a) { + var $post_args, objects, self = this; + + + + $post_args = Opal.slice.call(arguments, 1); + + objects = $post_args;; + + index = $coerce_to(index, $$$('Integer'), 'to_int'); + + if (objects.length > 0) { + if (index < 0) { + index += self.length + 1; + + if (index < 0) { + $Kernel.$raise($$$('IndexError'), "" + (index) + " is out of bounds"); + } + } + if (index > self.length) { + for (var i = self.length; i < index; i++) { + self.push(nil); + } + } + + self.splice.apply(self, [index, 0].concat(objects)); + } + ; + return self; + }, -2); + var inspect_stack = []; + + $def(self, '$inspect', function $$inspect() { + var self = this; + + + + var result = [], + id = self.$__id__(), + pushed = true; + ; + + return (function() { try { + + + if (inspect_stack.indexOf(id) !== -1) { + pushed = false; + return '[...]'; + } + inspect_stack.push(id) + + for (var i = 0, length = self.length; i < length; i++) { + var item = self['$[]'](i); + + result.push($$('Opal').$inspect(item)); + } + + return '[' + result.join(', ') + ']'; + ; + return nil; + } finally { + if (pushed) inspect_stack.pop() + }; })();; + }, 0); + + $def(self, '$intersection', function $$intersection($a) { + var $post_args, arrays, self = this; + + + + $post_args = Opal.slice.call(arguments); + + arrays = $post_args;; + return $send(arrays, 'reduce', [self.$to_a().$dup()], function $$31(a, b){ + + + if (a == null) a = nil;; + + if (b == null) b = nil;; + return a['$&'](b);}, 2); + }, -1); + + $def(self, '$intersect?', function $Array_intersect$ques$32(other) { + var self = this; + + return self.$intersection(other)['$empty?']()['$!']() + }, 1); + + $def(self, '$join', function $$join(sep) { + var self = this; + if ($gvars[","] == null) $gvars[","] = nil; + + + + if (sep == null) sep = nil;; + if ($truthy(self.length === 0)) { + return "" + }; + if ($truthy(sep === nil)) { + sep = $gvars[","] + }; + + var result = []; + var i, length, item, tmp; + + for (i = 0, length = self.length; i < length; i++) { + item = self[i]; + + if ($respond_to(item, '$to_str')) { + tmp = (item).$to_str(); + + if (tmp !== nil) { + result.push((tmp).$to_s()); + + continue; + } + } + + if ($respond_to(item, '$to_ary')) { + tmp = (item).$to_ary(); + + if (tmp === self) { + $Kernel.$raise($$$('ArgumentError')); + } + + if (tmp !== nil) { + result.push((tmp).$join(sep)); + + continue; + } + } + + if ($respond_to(item, '$to_s')) { + tmp = (item).$to_s(); + + if (tmp !== nil) { + result.push(tmp); + + continue; + } + } + + $Kernel.$raise($$$('NoMethodError').$new("" + ($$('Opal').$inspect(self.$item())) + " doesn't respond to #to_str, #to_ary or #to_s", "to_str")); + } + + if (sep === nil) { + return result.join(''); + } + else { + return result.join($Opal['$coerce_to!'](sep, $$$('String'), "to_str").$to_s()); + } + ; + }, -1); + + $def(self, '$keep_if', function $$keep_if() { + var block = $$keep_if.$$p || nil, self = this; + + delete $$keep_if.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["keep_if"], function $$33(){var self = $$33.$$s == null ? this : $$33.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + filterIf(self, $truthy, block); + return self; + }, 0); + + $def(self, '$last', function $$last(count) { + var self = this; + + + ; + + if (count == null) { + return self.length === 0 ? nil : self[self.length - 1]; + } + + count = $coerce_to(count, $$$('Integer'), 'to_int'); + + if (count < 0) { + $Kernel.$raise($$$('ArgumentError'), "negative array size"); + } + + if (count > self.length) { + count = self.length; + } + + return self.slice(self.length - count, self.length); + ; + }, -1); + + $def(self, '$length', function $$length() { + var self = this; + + return self.length; + }, 0); + + $def(self, '$max', function $$max(n) { + var block = $$max.$$p || nil, self = this; + + delete $$max.$$p; + + ; + ; + return $send(self.$each(), 'max', [n], block.$to_proc()); + }, -1); + + $def(self, '$min', function $$min() { + var block = $$min.$$p || nil, self = this; + + delete $$min.$$p; + + ; + return $send(self.$each(), 'min', [], block.$to_proc()); + }, 0); + + // Returns the product of from, from-1, ..., from - how_many + 1. + function descending_factorial(from, how_many) { + var count = how_many >= 0 ? 1 : 0; + while (how_many) { + count *= from; + from--; + how_many--; + } + return count; + } + ; + + $def(self, '$permutation', function $$permutation(num) { + var block = $$permutation.$$p || nil, self = this, perm = nil, used = nil; + + delete $$permutation.$$p; + + ; + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["permutation", num], function $$34(){var self = $$34.$$s == null ? this : $$34.$$s; + + return descending_factorial(self.length, num === undefined ? self.length : num);}, {$$arity: 0, $$s: self}) + }; + + var permute, offensive, output; + + if (num === undefined) { + num = self.length; + } + else { + num = $coerce_to(num, $$$('Integer'), 'to_int'); + } + + if (num < 0 || self.length < num) { + // no permutations, yield nothing + } + else if (num === 0) { + // exactly one permutation: the zero-length array + Opal.yield1(block, []) + } + else if (num === 1) { + // this is a special, easy case + for (var i = 0; i < self.length; i++) { + Opal.yield1(block, [self[i]]) + } + } + else { + // this is the general case + (perm = $$('Array').$new(num)); + (used = $$('Array').$new(self.length, false)); + + permute = function(num, perm, index, used, blk) { + self = this; + for(var i = 0; i < self.length; i++){ + if(used['$[]'](i)['$!']()) { + perm[index] = i; + if(index < num - 1) { + used[i] = true; + permute.call(self, num, perm, index + 1, used, blk); + used[i] = false; + } + else { + output = []; + for (var j = 0; j < perm.length; j++) { + output.push(self[perm[j]]); + } + $yield1(blk, output); + } + } + } + } + + if ((block !== nil)) { + // offensive (both definitions) copy. + offensive = self.slice(); + permute.call(offensive, num, perm, 0, used, block); + } + else { + permute.call(self, num, perm, 0, used, block); + } + } + ; + return self; + }, -1); + + $def(self, '$repeated_permutation', function $$repeated_permutation(n) { + var $yield = $$repeated_permutation.$$p || nil, self = this, num = nil; + + delete $$repeated_permutation.$$p; + + num = $Opal['$coerce_to!'](n, $$$('Integer'), "to_int"); + if (!($yield !== nil)) { + return $send(self, 'enum_for', ["repeated_permutation", num], function $$35(){var self = $$35.$$s == null ? this : $$35.$$s; + + if ($truthy($rb_ge(num, 0))) { + return self.$size()['$**'](num) + } else { + return 0 + }}, {$$arity: 0, $$s: self}) + }; + + function iterate(max, buffer, self) { + if (buffer.length == max) { + var copy = buffer.slice(); + Opal.yield1($yield, copy) + return; + } + for (var i = 0; i < self.length; i++) { + buffer.push(self[i]); + iterate(max, buffer, self); + buffer.pop(); + } + } + + iterate(num, [], self.slice()); + ; + return self; + }, 1); + + $def(self, '$pop', function $$pop(count) { + var self = this; + + + ; + if ($truthy(count === undefined)) { + + if ($truthy(self.length === 0)) { + return nil + }; + return self.pop(); + }; + count = $coerce_to(count, $$$('Integer'), 'to_int'); + if ($truthy(count < 0)) { + $Kernel.$raise($$$('ArgumentError'), "negative array size") + }; + if ($truthy(self.length === 0)) { + return [] + }; + if ($truthy(count === 1)) { + return [self.pop()]; + } else if ($truthy(count > self.length)) { + return self.splice(0, self.length); + } else { + return self.splice(self.length - count, self.length); + }; + }, -1); + + $def(self, '$product', function $$product($a) { + var block = $$product.$$p || nil, $post_args, args, self = this; + + delete $$product.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + + var result = (block !== nil) ? null : [], + n = args.length + 1, + counters = new Array(n), + lengths = new Array(n), + arrays = new Array(n), + i, m, subarray, len, resultlen = 1; + + arrays[0] = self; + for (i = 1; i < n; i++) { + arrays[i] = $coerce_to(args[i - 1], $$$('Array'), 'to_ary'); + } + + for (i = 0; i < n; i++) { + len = arrays[i].length; + if (len === 0) { + return result || self; + } + resultlen *= len; + if (resultlen > 2147483647) { + $Kernel.$raise($$$('RangeError'), "too big to product") + } + lengths[i] = len; + counters[i] = 0; + } + + outer_loop: for (;;) { + subarray = []; + for (i = 0; i < n; i++) { + subarray.push(arrays[i][counters[i]]); + } + if (result) { + result.push(subarray); + } else { + Opal.yield1(block, subarray) + } + m = n - 1; + counters[m]++; + while (counters[m] === lengths[m]) { + counters[m] = 0; + if (--m < 0) break outer_loop; + counters[m]++; + } + } + + return result || self; + ; + }, -1); + + $def(self, '$push', function $$push($a) { + var $post_args, objects, self = this; + + + + $post_args = Opal.slice.call(arguments); + + objects = $post_args;; + + for (var i = 0, length = objects.length; i < length; i++) { + self.push(objects[i]); + } + ; + return self; + }, -1); + + $def(self, '$rassoc', function $$rassoc(object) { + var self = this; + + + for (var i = 0, length = self.length, item; i < length; i++) { + item = self[i]; + + if (item.length && item[1] !== undefined) { + if ((item[1])['$=='](object)) { + return item; + } + } + } + + return nil; + + }, 1); + + $def(self, '$reject', function $$reject() { + var block = $$reject.$$p || nil, self = this; + + delete $$reject.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["reject"], function $$36(){var self = $$36.$$s == null ? this : $$36.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + var result = []; + + for (var i = 0, length = self.length, value; i < length; i++) { + value = block(self[i]); + + if (value === false || value === nil) { + result.push(self[i]); + } + } + return result; + ; + }, 0); + + $def(self, '$reject!', function $Array_reject$excl$37() { + var block = $Array_reject$excl$37.$$p || nil, self = this, original = nil; + + delete $Array_reject$excl$37.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["reject!"], function $$38(){var self = $$38.$$s == null ? this : $$38.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + original = self.$length(); + $send(self, 'delete_if', [], block.$to_proc()); + if ($eqeq(self.$length(), original)) { + return nil + } else { + return self + }; + }, 0); + + $def(self, '$replace', function $$replace(other) { + var self = this; + + + other = ($eqeqeq($$$('Array'), other) ? (other.$to_a()) : (($coerce_to(other, $$$('Array'), 'to_ary')).$to_a())); + + self.splice(0, self.length); + self.push.apply(self, other); + ; + return self; + }, 1); + + $def(self, '$reverse', function $$reverse() { + var self = this; + + return self.slice(0).reverse(); + }, 0); + + $def(self, '$reverse!', function $Array_reverse$excl$39() { + var self = this; + + return self.reverse(); + }, 0); + + $def(self, '$reverse_each', function $$reverse_each() { + var block = $$reverse_each.$$p || nil, self = this; + + delete $$reverse_each.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["reverse_each"], function $$40(){var self = $$40.$$s == null ? this : $$40.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + $send(self.$reverse(), 'each', [], block.$to_proc()); + return self; + }, 0); + + $def(self, '$rindex', function $$rindex(object) { + var block = $$rindex.$$p || nil, self = this; + + delete $$rindex.$$p; + + ; + ; + + var i, value; + + if (object != null && block !== nil) { + self.$warn("warning: given block not used") + } + + if (object != null) { + for (i = self.length - 1; i >= 0; i--) { + if (i >= self.length) { + break; + } + if ((self[i])['$=='](object)) { + return i; + } + } + } + else if (block !== nil) { + for (i = self.length - 1; i >= 0; i--) { + if (i >= self.length) { + break; + } + + value = block(self[i]); + + if (value !== false && value !== nil) { + return i; + } + } + } + else if (object == null) { + return self.$enum_for("rindex"); + } + + return nil; + ; + }, -1); + + $def(self, '$rotate', function $$rotate(n) { + var self = this; + + + + if (n == null) n = 1;; + + var ary, idx, firstPart, lastPart; + + n = $coerce_to(n, $$$('Integer'), 'to_int') + + if (self.length === 1) { + return self.slice(); + } + if (self.length === 0) { + return []; + } + + ary = self.slice(); + idx = n % ary.length; + + firstPart = ary.slice(idx); + lastPart = ary.slice(0, idx); + return firstPart.concat(lastPart); + ; + }, -1); + + $def(self, '$rotate!', function $Array_rotate$excl$41(cnt) { + var self = this, ary = nil; + + + + if (cnt == null) cnt = 1;; + + if (self.length === 0 || self.length === 1) { + return self; + } + cnt = $coerce_to(cnt, $$$('Integer'), 'to_int'); + ; + ary = self.$rotate(cnt); + return self.$replace(ary); + }, -1); + (function($base, $super) { + var self = $klass($base, $super, 'SampleRandom'); + + var $proto = self.$$prototype; + + $proto.rng = nil; + + + $def(self, '$initialize', function $$initialize(rng) { + var self = this; + + return (self.rng = rng) + }, 1); + return $def(self, '$rand', function $$rand(size) { + var self = this, random = nil; + + + random = $coerce_to(self.rng.$rand(size), $$$('Integer'), 'to_int'); + if ($truthy(random < 0)) { + $Kernel.$raise($$$('RangeError'), "random value must be >= 0") + }; + if (!$truthy(random < size)) { + $Kernel.$raise($$$('RangeError'), "random value must be less than Array size") + }; + return random; + }, 1); + })(self, null); + + $def(self, '$sample', function $$sample(count, options) { + var self = this, o = nil, rng = nil; + + + ; + ; + if ($truthy(count === undefined)) { + return self.$at($Kernel.$rand(self.length)) + }; + if ($truthy(options === undefined)) { + if ($truthy((o = $Opal['$coerce_to?'](count, $$$('Hash'), "to_hash")))) { + + options = o; + count = nil; + } else { + + options = nil; + count = $coerce_to(count, $$$('Integer'), 'to_int'); + } + } else { + + count = $coerce_to(count, $$$('Integer'), 'to_int'); + options = $coerce_to(options, $$$('Hash'), 'to_hash'); + }; + if (($truthy(count) && ($truthy(count < 0)))) { + $Kernel.$raise($$$('ArgumentError'), "count must be greater than 0") + }; + if ($truthy(options)) { + rng = options['$[]']("random") + }; + rng = (($truthy(rng) && ($truthy(rng['$respond_to?']("rand")))) ? ($$('SampleRandom').$new(rng)) : ($Kernel)); + if (!$truthy(count)) { + return self[rng.$rand(self.length)] + }; + + + var abandon, spin, result, i, j, k, targetIndex, oldValue; + + if (count > self.length) { + count = self.length; + } + + switch (count) { + case 0: + return []; + break; + case 1: + return [self[rng.$rand(self.length)]]; + break; + case 2: + i = rng.$rand(self.length); + j = rng.$rand(self.length); + if (i === j) { + j = i === 0 ? i + 1 : i - 1; + } + return [self[i], self[j]]; + break; + default: + if (self.length / count > 3) { + abandon = false; + spin = 0; + + result = $$('Array').$new(count); + i = 1; + + result[0] = rng.$rand(self.length); + while (i < count) { + k = rng.$rand(self.length); + j = 0; + + while (j < i) { + while (k === result[j]) { + spin++; + if (spin > 100) { + abandon = true; + break; + } + k = rng.$rand(self.length); + } + if (abandon) { break; } + + j++; + } + + if (abandon) { break; } + + result[i] = k; + + i++; + } + + if (!abandon) { + i = 0; + while (i < count) { + result[i] = self[result[i]]; + i++; + } + + return result; + } + } + + result = self.slice(); + + for (var c = 0; c < count; c++) { + targetIndex = rng.$rand(self.length); + oldValue = result[c]; + result[c] = result[targetIndex]; + result[targetIndex] = oldValue; + } + + return count === self.length ? result : (result)['$[]'](0, count); + } + ; + }, -1); + + $def(self, '$select', function $$select() { + var block = $$select.$$p || nil, self = this; + + delete $$select.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["select"], function $$42(){var self = $$42.$$s == null ? this : $$42.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + var result = []; + + for (var i = 0, length = self.length, item, value; i < length; i++) { + item = self[i]; + + value = $yield1(block, item); + + if ($truthy(value)) { + result.push(item); + } + } + + return result; + ; + }, 0); + + $def(self, '$select!', function $Array_select$excl$43() { + var block = $Array_select$excl$43.$$p || nil, self = this; + + delete $Array_select$excl$43.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["select!"], function $$44(){var self = $$44.$$s == null ? this : $$44.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + var original = self.length; + $send(self, 'keep_if', [], block.$to_proc()); + return self.length === original ? nil : self; + ; + }, 0); + + $def(self, '$shift', function $$shift(count) { + var self = this; + + + ; + if ($truthy(count === undefined)) { + + if ($truthy(self.length === 0)) { + return nil + }; + return shiftNoArg(self); + }; + count = $coerce_to(count, $$$('Integer'), 'to_int'); + if ($truthy(count < 0)) { + $Kernel.$raise($$$('ArgumentError'), "negative array size") + }; + if ($truthy(self.length === 0)) { + return [] + }; + return self.splice(0, count);; + }, -1); + + $def(self, '$shuffle', function $$shuffle(rng) { + var self = this; + + + ; + return self.$dup().$to_a()['$shuffle!'](rng); + }, -1); + + $def(self, '$shuffle!', function $Array_shuffle$excl$45(rng) { + var self = this; + + + ; + + var randgen, i = self.length, j, tmp; + + if (rng !== undefined) { + rng = $Opal['$coerce_to?'](rng, $$$('Hash'), "to_hash"); + + if (rng !== nil) { + rng = rng['$[]']("random"); + + if (rng !== nil && rng['$respond_to?']("rand")) { + randgen = rng; + } + } + } + + while (i) { + if (randgen) { + j = randgen.$rand(i).$to_int(); + + if (j < 0) { + $Kernel.$raise($$$('RangeError'), "random number too small " + (j)) + } + + if (j >= i) { + $Kernel.$raise($$$('RangeError'), "random number too big " + (j)) + } + } + else { + j = self.$rand(i); + } + + tmp = self[--i]; + self[i] = self[j]; + self[j] = tmp; + } + + return self; + ; + }, -1); + + $def(self, '$slice!', function $Array_slice$excl$46(index, length) { + var self = this, result = nil, range = nil, range_start = nil, range_end = nil, start = nil; + + + ; + result = nil; + if ($truthy(length === undefined)) { + if ($eqeqeq($$$('Range'), index)) { + + range = index; + result = self['$[]'](range); + range_start = range.begin === nil ? 0 : $coerce_to(range.begin, $$$('Integer'), 'to_int'); + range_end = range.end === nil ? -1 : $coerce_to(range.end, $$$('Integer'), 'to_int'); + + if (range_start < 0) { + range_start += self.length; + } + + if (range_end < 0) { + range_end += self.length; + } else if (range_end >= self.length) { + range_end = self.length - 1; + if (range.excl) { + range_end += 1; + } + } + + var range_length = range_end - range_start; + if (range.excl && range.end !== nil) { + range_end -= 1; + } else { + range_length += 1; + } + + if (range_start < self.length && range_start >= 0 && range_end < self.length && range_end >= 0 && range_length > 0) { + self.splice(range_start, range_length); + } + ; + } else { + + start = $coerce_to(index, $$$('Integer'), 'to_int'); + + if (start < 0) { + start += self.length; + } + + if (start < 0 || start >= self.length) { + return nil; + } + + result = self[start]; + + if (start === 0) { + self.shift(); + } else { + self.splice(start, 1); + } + ; + } + } else { + + start = $coerce_to(index, $$$('Integer'), 'to_int'); + length = $coerce_to(length, $$$('Integer'), 'to_int'); + + if (length < 0) { + return nil; + } + + var end = start + length; + + result = self['$[]'](start, length); + + if (start < 0) { + start += self.length; + } + + if (start + length > self.length) { + length = self.length - start; + } + + if (start < self.length && start >= 0) { + self.splice(start, length); + } + ; + }; + return result; + }, -2); + + $def(self, '$sort', function $$sort() { + var block = $$sort.$$p || nil, self = this; + + delete $$sort.$$p; + + ; + if (!$truthy(self.length > 1)) { + return self + }; + + if (block === nil) { + block = function(a, b) { + return (a)['$<=>'](b); + }; + } + + return self.slice().sort(function(x, y) { + var ret = block(x, y); + + if (ret === nil) { + $Kernel.$raise($$$('ArgumentError'), "comparison of " + ((x).$inspect()) + " with " + ((y).$inspect()) + " failed"); + } + + return $rb_gt(ret, 0) ? 1 : ($rb_lt(ret, 0) ? -1 : 0); + }); + ; + }, 0); + + $def(self, '$sort!', function $Array_sort$excl$47() { + var block = $Array_sort$excl$47.$$p || nil, self = this; + + delete $Array_sort$excl$47.$$p; + + ; + + var result; + + if ((block !== nil)) { + result = $send((self.slice()), 'sort', [], block.$to_proc()); + } + else { + result = (self.slice()).$sort(); + } + + self.length = 0; + for(var i = 0, length = result.length; i < length; i++) { + self.push(result[i]); + } + + return self; + ; + }, 0); + + $def(self, '$sort_by!', function $Array_sort_by$excl$48() { + var block = $Array_sort_by$excl$48.$$p || nil, self = this; + + delete $Array_sort_by$excl$48.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["sort_by!"], function $$49(){var self = $$49.$$s == null ? this : $$49.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + return self.$replace($send(self, 'sort_by', [], block.$to_proc())); + }, 0); + + $def(self, '$take', function $$take(count) { + var self = this; + + + if (count < 0) { + $Kernel.$raise($$$('ArgumentError')); + } + + return self.slice(0, count); + + }, 1); + + $def(self, '$take_while', function $$take_while() { + var block = $$take_while.$$p || nil, self = this; + + delete $$take_while.$$p; + + ; + + var result = []; + + for (var i = 0, length = self.length, item, value; i < length; i++) { + item = self[i]; + + value = block(item); + + if (value === false || value === nil) { + return result; + } + + result.push(item); + } + + return result; + ; + }, 0); + + $def(self, '$to_a', function $$to_a() { + var self = this; + + + if (self.$$class === Opal.Array) { + return self; + } + else { + return Opal.Array.$new(self); + } + + }, 0); + + $def(self, '$to_ary', function $$to_ary() { + var self = this; + + return self + }, 0); + + $def(self, '$to_h', function $$to_h() { + var block = $$to_h.$$p || nil, self = this, array = nil; + + delete $$to_h.$$p; + + ; + array = self; + if ((block !== nil)) { + array = $send(array, 'map', [], block.$to_proc()) + }; + + var i, len = array.length, ary, key, val, hash = $hash2([], {}); + + for (i = 0; i < len; i++) { + ary = $Opal['$coerce_to?'](array[i], $$$('Array'), "to_ary"); + if (!ary.$$is_array) { + $Kernel.$raise($$$('TypeError'), "wrong element type " + ((ary).$class()) + " at " + (i) + " (expected array)") + } + if (ary.length !== 2) { + $Kernel.$raise($$$('ArgumentError'), "wrong array length at " + (i) + " (expected 2, was " + ((ary).$length()) + ")") + } + key = ary[0]; + val = ary[1]; + $hash_put(hash, key, val); + } + + return hash; + ; + }, 0); + + $def(self, '$transpose', function $$transpose() { + var self = this, result = nil, max = nil; + + + if ($truthy(self['$empty?']())) { + return [] + }; + result = []; + max = nil; + $send(self, 'each', [], function $$50(row){var $ret_or_1 = nil; + + + + if (row == null) row = nil;; + row = ($eqeqeq($$$('Array'), row) ? (row.$to_a()) : (($coerce_to(row, $$$('Array'), 'to_ary')).$to_a())); + max = ($truthy(($ret_or_1 = max)) ? ($ret_or_1) : (row.length)); + if ($neqeq(row.length, max)) { + $Kernel.$raise($$$('IndexError'), "element size differs (" + (row.length) + " should be " + (max) + ")") + }; + return $send((row.length), 'times', [], function $$51(i){var entry = nil, $writer = nil; + + + + if (i == null) i = nil;; + entry = ($truthy(($ret_or_1 = result['$[]'](i))) ? ($ret_or_1) : ((($writer = [i, []]), $send(result, '[]=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)]))); + return entry['$<<'](row.$at(i));}, 1);}, 1); + return result; + }, 0); + + $def(self, '$union', function $$union($a) { + var $post_args, arrays, self = this; + + + + $post_args = Opal.slice.call(arguments); + + arrays = $post_args;; + return $send(arrays, 'reduce', [self.$uniq()], function $$52(a, b){ + + + if (a == null) a = nil;; + + if (b == null) b = nil;; + return a['$|'](b);}, 2); + }, -1); + + $def(self, '$uniq', function $$uniq() { + var block = $$uniq.$$p || nil, self = this; + + delete $$uniq.$$p; + + ; + + var hash = $hash2([], {}), i, length, item, key; + + if (block === nil) { + for (i = 0, length = self.length; i < length; i++) { + item = self[i]; + if ($hash_get(hash, item) === undefined) { + $hash_put(hash, item, item); + } + } + } + else { + for (i = 0, length = self.length; i < length; i++) { + item = self[i]; + key = $yield1(block, item); + if ($hash_get(hash, key) === undefined) { + $hash_put(hash, key, item); + } + } + } + + return (hash).$values(); + ; + }, 0); + + $def(self, '$uniq!', function $Array_uniq$excl$53() { + var block = $Array_uniq$excl$53.$$p || nil, self = this; + + delete $Array_uniq$excl$53.$$p; + + ; + + var original_length = self.length, hash = $hash2([], {}), i, length, item, key; + + for (i = 0, length = original_length; i < length; i++) { + item = self[i]; + key = (block === nil ? item : $yield1(block, item)); + + if ($hash_get(hash, key) === undefined) { + $hash_put(hash, key, item); + continue; + } + + self.splice(i, 1); + length--; + i--; + } + + return self.length === original_length ? nil : self; + ; + }, 0); + + $def(self, '$unshift', function $$unshift($a) { + var $post_args, objects, self = this; + + + + $post_args = Opal.slice.call(arguments); + + objects = $post_args;; + + var selfLength = self.length + var objectsLength = objects.length + if (objectsLength == 0) return self; + var index = selfLength - objectsLength + for (var i = 0; i < objectsLength; i++) { + self.push(self[index + i]) + } + var len = selfLength - 1 + while (len - objectsLength >= 0) { + self[len] = self[len - objectsLength] + len-- + } + for (var j = 0; j < objectsLength; j++) { + self[j] = objects[j] + } + return self; + ; + }, -1); + + $def(self, '$values_at', function $$values_at($a) { + var $post_args, args, self = this, out = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + out = []; + $send(args, 'each', [], function $$54(elem){var self = $$54.$$s == null ? this : $$54.$$s, finish = nil, start = nil, i = nil; + + + + if (elem == null) elem = nil;; + if ($truthy(elem['$is_a?']($$$('Range')))) { + + finish = elem.$end() === nil ? -1 : $coerce_to(elem.$end(), $$$('Integer'), 'to_int'); + start = elem.$begin() === nil ? 0 : $coerce_to(elem.$begin(), $$$('Integer'), 'to_int'); + + if (start < 0) { + start = start + self.length; + return nil;; + } + ; + + if (finish < 0) { + finish = finish + self.length; + } + if (elem['$exclude_end?']() && elem.$end() !== nil) { + finish--; + } + if (finish < start) { + return nil;; + } + ; + return $send(start, 'upto', [finish], function $$55(i){var self = $$55.$$s == null ? this : $$55.$$s; + + + + if (i == null) i = nil;; + return out['$<<'](self.$at(i));}, {$$arity: 1, $$s: self}); + } else { + + i = $coerce_to(elem, $$$('Integer'), 'to_int'); + return out['$<<'](self.$at(i)); + };}, {$$arity: 1, $$s: self}); + return out; + }, -1); + + $def(self, '$zip', function $$zip($a) { + var block = $$zip.$$p || nil, $post_args, others, self = this, $ret_or_1 = nil; + + delete $$zip.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + others = $post_args;; + + var result = [], size = self.length, part, o, i, j, jj; + + for (j = 0, jj = others.length; j < jj; j++) { + o = others[j]; + if (o.$$is_array) { + continue; + } + if (o.$$is_range || o.$$is_enumerator) { + others[j] = o.$take(size); + continue; + } + others[j] = ($truthy(($ret_or_1 = $Opal['$coerce_to?'](o, $$$('Array'), "to_ary"))) ? ($ret_or_1) : ($Opal['$coerce_to!'](o, $$$('Enumerator'), "to_enum", "each"))).$to_a(); + } + + for (i = 0; i < size; i++) { + part = [self[i]]; + + for (j = 0, jj = others.length; j < jj; j++) { + o = others[j][i]; + + if (o == null) { + o = nil; + } + + part[j + 1] = o; + } + + result[i] = part; + } + + if (block !== nil) { + for (i = 0; i < size; i++) { + Opal.yield1(block, result[i]); + } + + return nil; + } + + return result; + ; + }, -1); + $defs(self, '$inherited', function $$inherited(klass) { + + + klass.$$prototype.$to_a = function() { + return this.slice(0, this.length); + } + + }, 1); + + $def(self, '$instance_variables', function $$instance_variables() { + var $yield = $$instance_variables.$$p || nil, self = this; + + delete $$instance_variables.$$p; + return $send($send2(self, $find_super(self, 'instance_variables', $$instance_variables, false, true), 'instance_variables', [], $yield), 'reject', [], function $$56(ivar){var $ret_or_1 = nil; + + + + if (ivar == null) ivar = nil;; + if ($truthy(($ret_or_1 = /^@\d+$/.test(ivar)))) { + return $ret_or_1 + } else { + return ivar['$==']("@length") + };}, 1) + }, 0); + + $def(self, '$pack', function $$pack($a) { + var $post_args, args; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $Kernel.$raise("To use Array#pack, you must first require 'corelib/array/pack'."); + }, -1); + $alias(self, "append", "push"); + $alias(self, "filter", "select"); + $alias(self, "filter!", "select!"); + $alias(self, "map", "collect"); + $alias(self, "map!", "collect!"); + $alias(self, "prepend", "unshift"); + $alias(self, "size", "length"); + $alias(self, "slice", "[]"); + $alias(self, "to_s", "inspect"); + $Opal.$pristine(self.$singleton_class(), "allocate"); + return $Opal.$pristine(self, "copy_instance_variables", "initialize_dup"); + })('::', Array, $nesting); +}; + +Opal.modules["corelib/hash"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $yield1 = Opal.yield1, $hash = Opal.hash, $hash_init = Opal.hash_init, $hash_get = Opal.hash_get, $hash_put = Opal.hash_put, $hash_delete = Opal.hash_delete, $klass = Opal.klass, $Opal = Opal.Opal, $Kernel = Opal.Kernel, $defs = Opal.defs, $def = Opal.def, $send = Opal.send, $rb_ge = Opal.rb_ge, $rb_gt = Opal.rb_gt, $hash2 = Opal.hash2, $truthy = Opal.truthy, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $alias = Opal.alias; + + Opal.add_stubs('require,include,coerce_to?,[],merge!,allocate,raise,coerce_to!,each,fetch,>=,>,==,compare_by_identity,lambda?,abs,arity,enum_for,size,respond_to?,class,dig,except!,dup,delete,new,inspect,map,to_proc,flatten,eql?,default,default_proc,default_proc=,-,default=,to_h,proc'); + + self.$require("corelib/enumerable"); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Hash'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$include($$$('Enumerable')); + self.$$prototype.$$is_hash = true; + $defs(self, '$[]', function $Hash_$$$1($a) { + var $post_args, argv, self = this; + + + + $post_args = Opal.slice.call(arguments); + + argv = $post_args;; + + var hash, argc = argv.length, i; + + if (argc === 1) { + hash = $Opal['$coerce_to?'](argv['$[]'](0), $$$('Hash'), "to_hash"); + if (hash !== nil) { + return self.$allocate()['$merge!'](hash); + } + + argv = $Opal['$coerce_to?'](argv['$[]'](0), $$$('Array'), "to_ary"); + if (argv === nil) { + $Kernel.$raise($$$('ArgumentError'), "odd number of arguments for Hash") + } + + argc = argv.length; + hash = self.$allocate(); + + for (i = 0; i < argc; i++) { + if (!argv[i].$$is_array) continue; + switch(argv[i].length) { + case 1: + hash.$store(argv[i][0], nil); + break; + case 2: + hash.$store(argv[i][0], argv[i][1]); + break; + default: + $Kernel.$raise($$$('ArgumentError'), "invalid number of elements (" + (argv[i].length) + " for 1..2)") + } + } + + return hash; + } + + if (argc % 2 !== 0) { + $Kernel.$raise($$$('ArgumentError'), "odd number of arguments for Hash") + } + + hash = self.$allocate(); + + for (i = 0; i < argc; i += 2) { + hash.$store(argv[i], argv[i + 1]); + } + + return hash; + ; + }, -1); + $defs(self, '$allocate', function $$allocate() { + var self = this; + + + var hash = new self.$$constructor(); + + $hash_init(hash); + + hash.$$none = nil; + hash.$$proc = nil; + + return hash; + + }, 0); + $defs(self, '$try_convert', function $$try_convert(obj) { + + return $Opal['$coerce_to?'](obj, $$$('Hash'), "to_hash") + }, 1); + + $def(self, '$initialize', function $$initialize(defaults) { + var block = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + ; + ; + + if (defaults !== undefined && block !== nil) { + $Kernel.$raise($$$('ArgumentError'), "wrong number of arguments (1 for 0)") + } + self.$$none = (defaults === undefined ? nil : defaults); + self.$$proc = block; + + return self; + ; + }, -1); + + $def(self, '$==', function $Hash_$eq_eq$2(other) { + var self = this; + + + if (self === other) { + return true; + } + + if (!other.$$is_hash) { + return false; + } + + if (self.$$keys.length !== other.$$keys.length) { + return false; + } + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value, other_value; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + other_value = other.$$smap[key]; + } else { + value = key.value; + other_value = $hash_get(other, key.key); + } + + if (other_value === undefined || !value['$eql?'](other_value)) { + return false; + } + } + + return true; + + }, 1); + + $def(self, '$>=', function $Hash_$gt_eq$3(other) { + var self = this, result = nil; + + + other = $Opal['$coerce_to!'](other, $$$('Hash'), "to_hash"); + + if (self.$$keys.length < other.$$keys.length) { + return false + } + ; + result = true; + $send(other, 'each', [], function $$4(other_key, other_val){var self = $$4.$$s == null ? this : $$4.$$s, val = nil; + + + + if (other_key == null) other_key = nil;; + + if (other_val == null) other_val = nil;; + val = self.$fetch(other_key, null); + + if (val == null || val !== other_val) { + result = false; + return; + } + ;}, {$$arity: 2, $$s: self}); + return result; + }, 1); + + $def(self, '$>', function $Hash_$gt$5(other) { + var self = this; + + + other = $Opal['$coerce_to!'](other, $$$('Hash'), "to_hash"); + + if (self.$$keys.length <= other.$$keys.length) { + return false + } + ; + return $rb_ge(self, other); + }, 1); + + $def(self, '$<', function $Hash_$lt$6(other) { + var self = this; + + + other = $Opal['$coerce_to!'](other, $$$('Hash'), "to_hash"); + return $rb_gt(other, self); + }, 1); + + $def(self, '$<=', function $Hash_$lt_eq$7(other) { + var self = this; + + + other = $Opal['$coerce_to!'](other, $$$('Hash'), "to_hash"); + return $rb_ge(other, self); + }, 1); + + $def(self, '$[]', function $Hash_$$$8(key) { + var self = this; + + + var value = $hash_get(self, key); + + if (value !== undefined) { + return value; + } + + return self.$default(key); + + }, 1); + + $def(self, '$[]=', function $Hash_$$$eq$9(key, value) { + var self = this; + + + $hash_put(self, key, value); + return value; + + }, 2); + + $def(self, '$assoc', function $$assoc(object) { + var self = this; + + + for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + if ((key)['$=='](object)) { + return [key, self.$$smap[key]]; + } + } else { + if ((key.key)['$=='](object)) { + return [key.key, key.value]; + } + } + } + + return nil; + + }, 1); + + $def(self, '$clear', function $$clear() { + var self = this; + + + $hash_init(self); + return self; + + }, 0); + + $def(self, '$clone', function $$clone() { + var self = this; + + + var hash = new self.$$class(); + + $hash_init(hash); + Opal.hash_clone(self, hash); + + return hash; + + }, 0); + + $def(self, '$compact', function $$compact() { + var self = this; + + + var hash = $hash(); + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + if (value !== nil) { + $hash_put(hash, key, value); + } + } + + return hash; + + }, 0); + + $def(self, '$compact!', function $Hash_compact$excl$10() { + var self = this; + + + var changes_were_made = false; + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + if (value === nil) { + if ($hash_delete(self, key) !== undefined) { + changes_were_made = true; + length--; + i--; + } + } + } + + return changes_were_made ? self : nil; + + }, 0); + + $def(self, '$compare_by_identity', function $$compare_by_identity() { + var self = this; + + + var i, ii, key, keys = self.$$keys, identity_hash; + + if (self.$$by_identity) return self; + if (self.$$keys.length === 0) { + self.$$by_identity = true + return self; + } + + identity_hash = $hash2([], {}).$compare_by_identity(); + for(i = 0, ii = keys.length; i < ii; i++) { + key = keys[i]; + if (!key.$$is_string) key = key.key; + $hash_put(identity_hash, key, $hash_get(self, key)); + } + + self.$$by_identity = true; + self.$$map = identity_hash.$$map; + self.$$smap = identity_hash.$$smap; + return self; + + }, 0); + + $def(self, '$compare_by_identity?', function $Hash_compare_by_identity$ques$11() { + var self = this; + + return self.$$by_identity === true; + }, 0); + + $def(self, '$default', function $Hash_default$12(key) { + var self = this; + + + ; + + if (key !== undefined && self.$$proc !== nil && self.$$proc !== undefined) { + return self.$$proc.$call(self, key); + } + if (self.$$none === undefined) { + return nil; + } + return self.$$none; + ; + }, -1); + + $def(self, '$default=', function $Hash_default$eq$13(object) { + var self = this; + + + self.$$proc = nil; + self.$$none = object; + + return object; + + }, 1); + + $def(self, '$default_proc', function $$default_proc() { + var self = this; + + + if (self.$$proc !== undefined) { + return self.$$proc; + } + return nil; + + }, 0); + + $def(self, '$default_proc=', function $Hash_default_proc$eq$14(default_proc) { + var self = this; + + + var proc = default_proc; + + if (proc !== nil) { + proc = $Opal['$coerce_to!'](proc, $$$('Proc'), "to_proc"); + + if ((proc)['$lambda?']() && (proc).$arity().$abs() !== 2) { + $Kernel.$raise($$$('TypeError'), "default_proc takes two arguments"); + } + } + + self.$$none = nil; + self.$$proc = proc; + + return default_proc; + + }, 1); + + $def(self, '$delete', function $Hash_delete$15(key) { + var block = $Hash_delete$15.$$p || nil, self = this; + + delete $Hash_delete$15.$$p; + + ; + + var value = $hash_delete(self, key); + + if (value !== undefined) { + return value; + } + + if (block !== nil) { + return Opal.yield1(block, key); + } + + return nil; + ; + }, 1); + + $def(self, '$delete_if', function $$delete_if() { + var block = $$delete_if.$$p || nil, self = this; + + delete $$delete_if.$$p; + + ; + if (!$truthy(block)) { + return $send(self, 'enum_for', ["delete_if"], function $$16(){var self = $$16.$$s == null ? this : $$16.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + obj = block(key, value); + + if (obj !== false && obj !== nil) { + if ($hash_delete(self, key) !== undefined) { + length--; + i--; + } + } + } + + return self; + ; + }, 0); + + $def(self, '$dig', function $$dig(key, $a) { + var $post_args, keys, self = this, item = nil; + + + + $post_args = Opal.slice.call(arguments, 1); + + keys = $post_args;; + item = self['$[]'](key); + + if (item === nil || keys.length === 0) { + return item; + } + ; + if (!$truthy(item['$respond_to?']("dig"))) { + $Kernel.$raise($$$('TypeError'), "" + (item.$class()) + " does not have #dig method") + }; + return $send(item, 'dig', $to_a(keys)); + }, -2); + + $def(self, '$each', function $$each() { + var block = $$each.$$p || nil, self = this; + + delete $$each.$$p; + + ; + if (!$truthy(block)) { + return $send(self, 'enum_for', ["each"], function $$17(){var self = $$17.$$s == null ? this : $$17.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + $yield1(block, [key, value]); + } + + return self; + ; + }, 0); + + $def(self, '$each_key', function $$each_key() { + var block = $$each_key.$$p || nil, self = this; + + delete $$each_key.$$p; + + ; + if (!$truthy(block)) { + return $send(self, 'enum_for', ["each_key"], function $$18(){var self = $$18.$$s == null ? this : $$18.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) { + key = keys[i]; + + block(key.$$is_string ? key : key.key); + } + + return self; + ; + }, 0); + + $def(self, '$each_value', function $$each_value() { + var block = $$each_value.$$p || nil, self = this; + + delete $$each_value.$$p; + + ; + if (!$truthy(block)) { + return $send(self, 'enum_for', ["each_value"], function $$19(){var self = $$19.$$s == null ? this : $$19.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) { + key = keys[i]; + + block(key.$$is_string ? self.$$smap[key] : key.value); + } + + return self; + ; + }, 0); + + $def(self, '$empty?', function $Hash_empty$ques$20() { + var self = this; + + return self.$$keys.length === 0; + }, 0); + + $def(self, '$except', function $$except($a) { + var $post_args, keys, self = this; + + + + $post_args = Opal.slice.call(arguments); + + keys = $post_args;; + return $send(self.$dup(), 'except!', $to_a(keys)); + }, -1); + + $def(self, '$except!', function $Hash_except$excl$21($a) { + var $post_args, keys, self = this; + + + + $post_args = Opal.slice.call(arguments); + + keys = $post_args;; + $send(keys, 'each', [], function $$22(key){var self = $$22.$$s == null ? this : $$22.$$s; + + + + if (key == null) key = nil;; + return self.$delete(key);}, {$$arity: 1, $$s: self}); + return self; + }, -1); + + $def(self, '$fetch', function $$fetch(key, defaults) { + var block = $$fetch.$$p || nil, self = this; + + delete $$fetch.$$p; + + ; + ; + + var value = $hash_get(self, key); + + if (value !== undefined) { + return value; + } + + if (block !== nil) { + return block(key); + } + + if (defaults !== undefined) { + return defaults; + } + ; + return $Kernel.$raise($$$('KeyError').$new("key not found: " + (key.$inspect()), $hash2(["key", "receiver"], {"key": key, "receiver": self}))); + }, -2); + + $def(self, '$fetch_values', function $$fetch_values($a) { + var block = $$fetch_values.$$p || nil, $post_args, keys, self = this; + + delete $$fetch_values.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + keys = $post_args;; + return $send(keys, 'map', [], function $$23(key){var self = $$23.$$s == null ? this : $$23.$$s; + + + + if (key == null) key = nil;; + return $send(self, 'fetch', [key], block.$to_proc());}, {$$arity: 1, $$s: self}); + }, -1); + + $def(self, '$flatten', function $$flatten(level) { + var self = this; + + + + if (level == null) level = 1;; + level = $Opal['$coerce_to!'](level, $$$('Integer'), "to_int"); + + var result = []; + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + result.push(key); + + if (value.$$is_array) { + if (level === 1) { + result.push(value); + continue; + } + + result = result.concat((value).$flatten(level - 2)); + continue; + } + + result.push(value); + } + + return result; + ; + }, -1); + + $def(self, '$has_key?', function $Hash_has_key$ques$24(key) { + var self = this; + + return $hash_get(self, key) !== undefined; + }, 1); + + $def(self, '$has_value?', function $Hash_has_value$ques$25(value) { + var self = this; + + + for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) { + key = keys[i]; + + if (((key.$$is_string ? self.$$smap[key] : key.value))['$=='](value)) { + return true; + } + } + + return false; + + }, 1); + + $def(self, '$hash', function $$hash() { + var self = this; + + + var top = (Opal.hash_ids === undefined), + hash_id = self.$object_id(), + result = ['Hash'], + key, item; + + try { + if (top) { + Opal.hash_ids = Object.create(null); + } + + if (Opal[hash_id]) { + return 'self'; + } + + for (key in Opal.hash_ids) { + item = Opal.hash_ids[key]; + if (self['$eql?'](item)) { + return 'self'; + } + } + + Opal.hash_ids[hash_id] = self; + + for (var i = 0, keys = self.$$keys, length = keys.length; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + result.push([key, self.$$smap[key].$hash()]); + } else { + result.push([key.key_hash, key.value.$hash()]); + } + } + + return result.sort().join(); + + } finally { + if (top) { + Opal.hash_ids = undefined; + } + } + + }, 0); + + $def(self, '$index', function $$index(object) { + var self = this; + + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + if ((value)['$=='](object)) { + return key; + } + } + + return nil; + + }, 1); + + $def(self, '$indexes', function $$indexes($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + + var result = []; + + for (var i = 0, length = args.length, key, value; i < length; i++) { + key = args[i]; + value = $hash_get(self, key); + + if (value === undefined) { + result.push(self.$default()); + continue; + } + + result.push(value); + } + + return result; + ; + }, -1); + var inspect_ids; + + $def(self, '$inspect', function $$inspect() { + var self = this; + + + + var top = (inspect_ids === undefined), + hash_id = self.$object_id(), + result = []; + ; + + return (function() { try { + + + if (top) { + inspect_ids = {}; + } + + if (inspect_ids.hasOwnProperty(hash_id)) { + return '{...}'; + } + + inspect_ids[hash_id] = true; + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + key = $$('Opal').$inspect(key) + value = $$('Opal').$inspect(value) + + result.push(key + '=>' + value); + } + + return '{' + result.join(', ') + '}'; + ; + return nil; + } finally { + if (top) inspect_ids = undefined + }; })();; + }, 0); + + $def(self, '$invert', function $$invert() { + var self = this; + + + var hash = $hash(); + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + $hash_put(hash, value, key); + } + + return hash; + + }, 0); + + $def(self, '$keep_if', function $$keep_if() { + var block = $$keep_if.$$p || nil, self = this; + + delete $$keep_if.$$p; + + ; + if (!$truthy(block)) { + return $send(self, 'enum_for', ["keep_if"], function $$26(){var self = $$26.$$s == null ? this : $$26.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + obj = block(key, value); + + if (obj === false || obj === nil) { + if ($hash_delete(self, key) !== undefined) { + length--; + i--; + } + } + } + + return self; + ; + }, 0); + + $def(self, '$keys', function $$keys() { + var self = this; + + + var result = []; + + for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + result.push(key); + } else { + result.push(key.key); + } + } + + return result; + + }, 0); + + $def(self, '$length', function $$length() { + var self = this; + + return self.$$keys.length; + }, 0); + + $def(self, '$merge', function $$merge($a) { + var block = $$merge.$$p || nil, $post_args, others, self = this; + + delete $$merge.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + others = $post_args;; + return $send(self.$dup(), 'merge!', $to_a(others), block.$to_proc()); + }, -1); + + $def(self, '$merge!', function $Hash_merge$excl$27($a) { + var block = $Hash_merge$excl$27.$$p || nil, $post_args, others, self = this; + + delete $Hash_merge$excl$27.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + others = $post_args;; + + var i, j, other, other_keys, length, key, value, other_value; + for (i = 0; i < others.length; ++i) { + other = $Opal['$coerce_to!'](others[i], $$$('Hash'), "to_hash"); + other_keys = other.$$keys, length = other_keys.length; + + if (block === nil) { + for (j = 0; j < length; j++) { + key = other_keys[j]; + + if (key.$$is_string) { + other_value = other.$$smap[key]; + } else { + other_value = key.value; + key = key.key; + } + + $hash_put(self, key, other_value); + } + } else { + for (j = 0; j < length; j++) { + key = other_keys[j]; + + if (key.$$is_string) { + other_value = other.$$smap[key]; + } else { + other_value = key.value; + key = key.key; + } + + value = $hash_get(self, key); + + if (value === undefined) { + $hash_put(self, key, other_value); + continue; + } + + $hash_put(self, key, block(key, value, other_value)); + } + } + } + + return self; + ; + }, -1); + + $def(self, '$rassoc', function $$rassoc(object) { + var self = this; + + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + if ((value)['$=='](object)) { + return [key, value]; + } + } + + return nil; + + }, 1); + + $def(self, '$rehash', function $$rehash() { + var self = this; + + + Opal.hash_rehash(self); + return self; + + }, 0); + + $def(self, '$reject', function $$reject() { + var block = $$reject.$$p || nil, self = this; + + delete $$reject.$$p; + + ; + if (!$truthy(block)) { + return $send(self, 'enum_for', ["reject"], function $$28(){var self = $$28.$$s == null ? this : $$28.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + var hash = $hash(); + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + obj = block(key, value); + + if (obj === false || obj === nil) { + $hash_put(hash, key, value); + } + } + + return hash; + ; + }, 0); + + $def(self, '$reject!', function $Hash_reject$excl$29() { + var block = $Hash_reject$excl$29.$$p || nil, self = this; + + delete $Hash_reject$excl$29.$$p; + + ; + if (!$truthy(block)) { + return $send(self, 'enum_for', ["reject!"], function $$30(){var self = $$30.$$s == null ? this : $$30.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + var changes_were_made = false; + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + obj = block(key, value); + + if (obj !== false && obj !== nil) { + if ($hash_delete(self, key) !== undefined) { + changes_were_made = true; + length--; + i--; + } + } + } + + return changes_were_made ? self : nil; + ; + }, 0); + + $def(self, '$replace', function $$replace(other) { + var self = this, $writer = nil; + + + other = $Opal['$coerce_to!'](other, $$$('Hash'), "to_hash"); + + $hash_init(self); + + for (var i = 0, other_keys = other.$$keys, length = other_keys.length, key, value, other_value; i < length; i++) { + key = other_keys[i]; + + if (key.$$is_string) { + other_value = other.$$smap[key]; + } else { + other_value = key.value; + key = key.key; + } + + $hash_put(self, key, other_value); + } + ; + if ($truthy(other.$default_proc())) { + + $writer = [other.$default_proc()]; + $send(self, 'default_proc=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + } else { + + $writer = [other.$default()]; + $send(self, 'default=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return self; + }, 1); + + $def(self, '$select', function $$select() { + var block = $$select.$$p || nil, self = this; + + delete $$select.$$p; + + ; + if (!$truthy(block)) { + return $send(self, 'enum_for', ["select"], function $$31(){var self = $$31.$$s == null ? this : $$31.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + var hash = $hash(); + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + obj = block(key, value); + + if (obj !== false && obj !== nil) { + $hash_put(hash, key, value); + } + } + + return hash; + ; + }, 0); + + $def(self, '$select!', function $Hash_select$excl$32() { + var block = $Hash_select$excl$32.$$p || nil, self = this; + + delete $Hash_select$excl$32.$$p; + + ; + if (!$truthy(block)) { + return $send(self, 'enum_for', ["select!"], function $$33(){var self = $$33.$$s == null ? this : $$33.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + var result = nil; + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + obj = block(key, value); + + if (obj === false || obj === nil) { + if ($hash_delete(self, key) !== undefined) { + length--; + i--; + } + result = self; + } + } + + return result; + ; + }, 0); + + $def(self, '$shift', function $$shift() { + var self = this; + + + var keys = self.$$keys, + key; + + if (keys.length > 0) { + key = keys[0]; + + key = key.$$is_string ? key : key.key; + + return [key, $hash_delete(self, key)]; + } + + return self.$default(nil); + + }, 0); + + $def(self, '$slice', function $$slice($a) { + var $post_args, keys, self = this; + + + + $post_args = Opal.slice.call(arguments); + + keys = $post_args;; + + var result = $hash(); + + for (var i = 0, length = keys.length; i < length; i++) { + var key = keys[i], value = $hash_get(self, key); + + if (value !== undefined) { + $hash_put(result, key, value); + } + } + + return result; + ; + }, -1); + + $def(self, '$to_a', function $$to_a() { + var self = this; + + + var result = []; + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + result.push([key, value]); + } + + return result; + + }, 0); + + $def(self, '$to_h', function $$to_h() { + var block = $$to_h.$$p || nil, self = this; + + delete $$to_h.$$p; + + ; + if ((block !== nil)) { + return $send(self, 'map', [], block.$to_proc()).$to_h() + }; + + if (self.$$class === Opal.Hash) { + return self; + } + + var hash = new Opal.Hash(); + + $hash_init(hash); + Opal.hash_clone(self, hash); + + return hash; + ; + }, 0); + + $def(self, '$to_hash', function $$to_hash() { + var self = this; + + return self + }, 0); + + $def(self, '$to_proc', function $$to_proc() { + var self = this; + + return $send(self, 'proc', [], function $$34(key){var self = $$34.$$s == null ? this : $$34.$$s; + + + ; + + if (key == null) { + $Kernel.$raise($$$('ArgumentError'), "no key given") + } + ; + return self['$[]'](key);}, {$$arity: -1, $$s: self}) + }, 0); + + $def(self, '$transform_keys', function $$transform_keys() { + var block = $$transform_keys.$$p || nil, self = this; + + delete $$transform_keys.$$p; + + ; + if (!$truthy(block)) { + return $send(self, 'enum_for', ["transform_keys"], function $$35(){var self = $$35.$$s == null ? this : $$35.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + var result = $hash(); + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + key = $yield1(block, key); + + $hash_put(result, key, value); + } + + return result; + ; + }, 0); + + $def(self, '$transform_keys!', function $Hash_transform_keys$excl$36() { + var block = $Hash_transform_keys$excl$36.$$p || nil, self = this; + + delete $Hash_transform_keys$excl$36.$$p; + + ; + if (!$truthy(block)) { + return $send(self, 'enum_for', ["transform_keys!"], function $$37(){var self = $$37.$$s == null ? this : $$37.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + var keys = Opal.slice.call(self.$$keys), + i, length = keys.length, key, value, new_key; + + for (i = 0; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + new_key = $yield1(block, key); + + $hash_delete(self, key); + $hash_put(self, new_key, value); + } + + return self; + ; + }, 0); + + $def(self, '$transform_values', function $$transform_values() { + var block = $$transform_values.$$p || nil, self = this; + + delete $$transform_values.$$p; + + ; + if (!$truthy(block)) { + return $send(self, 'enum_for', ["transform_values"], function $$38(){var self = $$38.$$s == null ? this : $$38.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + var result = $hash(); + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + value = $yield1(block, value); + + $hash_put(result, key, value); + } + + return result; + ; + }, 0); + + $def(self, '$transform_values!', function $Hash_transform_values$excl$39() { + var block = $Hash_transform_values$excl$39.$$p || nil, self = this; + + delete $Hash_transform_values$excl$39.$$p; + + ; + if (!$truthy(block)) { + return $send(self, 'enum_for', ["transform_values!"], function $$40(){var self = $$40.$$s == null ? this : $$40.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + value = self.$$smap[key]; + } else { + value = key.value; + key = key.key; + } + + value = $yield1(block, value); + + $hash_put(self, key, value); + } + + return self; + ; + }, 0); + + $def(self, '$values', function $$values() { + var self = this; + + + var result = []; + + for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) { + key = keys[i]; + + if (key.$$is_string) { + result.push(self.$$smap[key]); + } else { + result.push(key.value); + } + } + + return result; + + }, 0); + $alias(self, "dup", "clone"); + $alias(self, "each_pair", "each"); + $alias(self, "eql?", "=="); + $alias(self, "filter", "select"); + $alias(self, "filter!", "select!"); + $alias(self, "include?", "has_key?"); + $alias(self, "indices", "indexes"); + $alias(self, "key", "index"); + $alias(self, "key?", "has_key?"); + $alias(self, "member?", "has_key?"); + $alias(self, "size", "length"); + $alias(self, "store", "[]="); + $alias(self, "to_s", "inspect"); + $alias(self, "update", "merge!"); + $alias(self, "value?", "has_value?"); + return $alias(self, "values_at", "indexes"); + })('::', null, $nesting); +}; + +Opal.modules["corelib/number"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $Opal = Opal.Opal, $Kernel = Opal.Kernel, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $not = Opal.not, $rb_lt = Opal.rb_lt, $send2 = Opal.send2, $find_super = Opal.find_super, $send = Opal.send, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq, $rb_divide = Opal.rb_divide, $to_ary = Opal.to_ary, $rb_times = Opal.rb_times, $rb_le = Opal.rb_le, $rb_ge = Opal.rb_ge, $alias = Opal.alias, $const_set = Opal.const_set; + + Opal.add_stubs('require,bridge,raise,name,class,Float,respond_to?,coerce_to!,__coerced__,===,>,!,**,new,<,to_f,==,nan?,infinite?,enum_for,+,-,gcd,lcm,%,/,frexp,to_i,ldexp,rationalize,*,<<,to_r,truncate,-@,size,<=,>=,inspect,coerce_to?'); + + self.$require("corelib/numeric"); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Number'); + + var $nesting = [self].concat($parent_nesting); + + + $Opal.$bridge(Number, self); + Opal.prop(self.$$prototype, '$$is_number', true); + self.$$is_number_class = true; + (function(self, $parent_nesting) { + + + + $def(self, '$allocate', function $$allocate() { + var self = this; + + return $Kernel.$raise($$$('TypeError'), "allocator undefined for " + (self.$name())) + }, 0); + + + Opal.udef(self, '$' + "new");; + return nil;; + })(Opal.get_singleton_class(self), $nesting); + + $def(self, '$coerce', function $$coerce(other) { + var self = this; + + + if (other === nil) { + $Kernel.$raise($$$('TypeError'), "can't convert " + (other.$class()) + " into Float"); + } + else if (other.$$is_string) { + return [$Kernel.$Float(other), self]; + } + else if (other['$respond_to?']("to_f")) { + return [$Opal['$coerce_to!'](other, $$$('Float'), "to_f"), self]; + } + else if (other.$$is_number) { + return [other, self]; + } + else { + $Kernel.$raise($$$('TypeError'), "can't convert " + (other.$class()) + " into Float"); + } + + }, 1); + + $def(self, '$__id__', function $$__id__() { + var self = this; + + return (self * 2) + 1; + }, 0); + + $def(self, '$+', function $Number_$plus$1(other) { + var self = this; + + + if (other.$$is_number) { + return self + other; + } + else { + return self.$__coerced__("+", other); + } + + }, 1); + + $def(self, '$-', function $Number_$minus$2(other) { + var self = this; + + + if (other.$$is_number) { + return self - other; + } + else { + return self.$__coerced__("-", other); + } + + }, 1); + + $def(self, '$*', function $Number_$$3(other) { + var self = this; + + + if (other.$$is_number) { + return self * other; + } + else { + return self.$__coerced__("*", other); + } + + }, 1); + + $def(self, '$/', function $Number_$slash$4(other) { + var self = this; + + + if (other.$$is_number) { + return self / other; + } + else { + return self.$__coerced__("/", other); + } + + }, 1); + + $def(self, '$%', function $Number_$percent$5(other) { + var self = this; + + + if (other.$$is_number) { + if (other == -Infinity) { + return other; + } + else if (other == 0) { + $Kernel.$raise($$$('ZeroDivisionError'), "divided by 0"); + } + else if (other < 0 || self < 0) { + return (self % other + other) % other; + } + else { + return self % other; + } + } + else { + return self.$__coerced__("%", other); + } + + }, 1); + + $def(self, '$&', function $Number_$$6(other) { + var self = this; + + + if (other.$$is_number) { + return self & other; + } + else { + return self.$__coerced__("&", other); + } + + }, 1); + + $def(self, '$|', function $Number_$$7(other) { + var self = this; + + + if (other.$$is_number) { + return self | other; + } + else { + return self.$__coerced__("|", other); + } + + }, 1); + + $def(self, '$^', function $Number_$$8(other) { + var self = this; + + + if (other.$$is_number) { + return self ^ other; + } + else { + return self.$__coerced__("^", other); + } + + }, 1); + + $def(self, '$<', function $Number_$lt$9(other) { + var self = this; + + + if (other.$$is_number) { + return self < other; + } + else { + return self.$__coerced__("<", other); + } + + }, 1); + + $def(self, '$<=', function $Number_$lt_eq$10(other) { + var self = this; + + + if (other.$$is_number) { + return self <= other; + } + else { + return self.$__coerced__("<=", other); + } + + }, 1); + + $def(self, '$>', function $Number_$gt$11(other) { + var self = this; + + + if (other.$$is_number) { + return self > other; + } + else { + return self.$__coerced__(">", other); + } + + }, 1); + + $def(self, '$>=', function $Number_$gt_eq$12(other) { + var self = this; + + + if (other.$$is_number) { + return self >= other; + } + else { + return self.$__coerced__(">=", other); + } + + }, 1); + + var spaceship_operator = function(self, other) { + if (other.$$is_number) { + if (isNaN(self) || isNaN(other)) { + return nil; + } + + if (self > other) { + return 1; + } else if (self < other) { + return -1; + } else { + return 0; + } + } + else { + return self.$__coerced__("<=>", other); + } + } + ; + + $def(self, '$<=>', function $Number_$lt_eq_gt$13(other) { + var self = this; + + try { + return spaceship_operator(self, other); + } catch ($err) { + if (Opal.rescue($err, [$$$('ArgumentError')])) { + try { + return nil + } finally { Opal.pop_exception(); } + } else { throw $err; } + } + }, 1); + + $def(self, '$<<', function $Number_$lt$lt$14(count) { + var self = this; + + + count = $Opal['$coerce_to!'](count, $$$('Integer'), "to_int"); + return count > 0 ? self << count : self >> -count; + }, 1); + + $def(self, '$>>', function $Number_$gt$gt$15(count) { + var self = this; + + + count = $Opal['$coerce_to!'](count, $$$('Integer'), "to_int"); + return count > 0 ? self >> count : self << -count; + }, 1); + + $def(self, '$[]', function $Number_$$$16(bit) { + var self = this; + + + bit = $Opal['$coerce_to!'](bit, $$$('Integer'), "to_int"); + + if (bit < 0) { + return 0; + } + if (bit >= 32) { + return self < 0 ? 1 : 0; + } + return (self >> bit) & 1; + ; + }, 1); + + $def(self, '$+@', function $Number_$plus$$17() { + var self = this; + + return +self; + }, 0); + + $def(self, '$-@', function $Number_$minus$$18() { + var self = this; + + return -self; + }, 0); + + $def(self, '$~', function $Number_$$19() { + var self = this; + + return ~self; + }, 0); + + $def(self, '$**', function $Number_$$$20(other) { + var self = this; + + if ($eqeqeq($$$('Integer'), other)) { + if (($not($$$('Integer')['$==='](self)) || ($truthy($rb_gt(other, 0))))) { + return Math.pow(self, other); + } else { + return $$$('Rational').$new(self, 1)['$**'](other) + } + } else if (($rb_lt(self, 0) && (($eqeqeq($$$('Float'), other) || ($eqeqeq($$$('Rational'), other)))))) { + return $$$('Complex').$new(self, 0)['$**'](other.$to_f()) + } else if ($truthy(other.$$is_number != null)) { + return Math.pow(self, other); + } else { + return self.$__coerced__("**", other) + } + }, 1); + + $def(self, '$===', function $Number_$eq_eq_eq$21(other) { + var self = this; + + + if (other.$$is_number) { + return self.valueOf() === other.valueOf(); + } + else if (other['$respond_to?']("==")) { + return other['$=='](self); + } + else { + return false; + } + + }, 1); + + $def(self, '$==', function $Number_$eq_eq$22(other) { + var self = this; + + + if (other.$$is_number) { + return self.valueOf() === other.valueOf(); + } + else if (other['$respond_to?']("==")) { + return other['$=='](self); + } + else { + return false; + } + + }, 1); + + $def(self, '$abs', function $$abs() { + var self = this; + + return Math.abs(self); + }, 0); + + $def(self, '$abs2', function $$abs2() { + var self = this; + + return Math.abs(self * self); + }, 0); + + $def(self, '$allbits?', function $Number_allbits$ques$23(mask) { + var self = this; + + + mask = $Opal['$coerce_to!'](mask, $$$('Integer'), "to_int"); + return (self & mask) == mask;; + }, 1); + + $def(self, '$anybits?', function $Number_anybits$ques$24(mask) { + var self = this; + + + mask = $Opal['$coerce_to!'](mask, $$$('Integer'), "to_int"); + return (self & mask) !== 0;; + }, 1); + + $def(self, '$angle', function $$angle() { + var self = this; + + + if ($truthy(self['$nan?']())) { + return self + }; + + if (self == 0) { + if (1 / self > 0) { + return 0; + } + else { + return Math.PI; + } + } + else if (self < 0) { + return Math.PI; + } + else { + return 0; + } + ; + }, 0); + + $def(self, '$bit_length', function $$bit_length() { + var self = this; + + + if (!$eqeqeq($$$('Integer'), self)) { + $Kernel.$raise($$$('NoMethodError').$new("undefined method `bit_length` for " + (self) + ":Float", "bit_length")) + }; + + if (self === 0 || self === -1) { + return 0; + } + + var result = 0, + value = self < 0 ? ~self : self; + + while (value != 0) { + result += 1; + value >>>= 1; + } + + return result; + ; + }, 0); + + $def(self, '$ceil', function $$ceil(ndigits) { + var self = this; + + + + if (ndigits == null) ndigits = 0;; + + var f = self.$to_f(); + + if (f % 1 === 0 && ndigits >= 0) { + return f; + } + + var factor = Math.pow(10, ndigits), + result = Math.ceil(f * factor) / factor; + + if (f % 1 === 0) { + result = Math.round(result); + } + + return result; + ; + }, -1); + + $def(self, '$chr', function $$chr(encoding) { + var self = this; + + + ; + return Opal.enc(String.fromCharCode(self), encoding || "BINARY");; + }, -1); + + $def(self, '$denominator', function $$denominator() { + var $yield = $$denominator.$$p || nil, self = this; + + delete $$denominator.$$p; + if (($truthy(self['$nan?']()) || ($truthy(self['$infinite?']())))) { + return 1 + } else { + return $send2(self, $find_super(self, 'denominator', $$denominator, false, true), 'denominator', [], $yield) + } + }, 0); + + $def(self, '$downto', function $$downto(stop) { + var block = $$downto.$$p || nil, self = this; + + delete $$downto.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["downto", stop], function $$25(){var self = $$25.$$s == null ? this : $$25.$$s; + + + if (!$eqeqeq($$$('Numeric'), stop)) { + $Kernel.$raise($$$('ArgumentError'), "comparison of " + (self.$class()) + " with " + (stop.$class()) + " failed") + }; + if ($truthy($rb_gt(stop, self))) { + return 0 + } else { + return $rb_plus($rb_minus(self, stop), 1) + };}, {$$arity: 0, $$s: self}) + }; + + if (!stop.$$is_number) { + $Kernel.$raise($$$('ArgumentError'), "comparison of " + (self.$class()) + " with " + (stop.$class()) + " failed") + } + for (var i = self; i >= stop; i--) { + block(i); + } + ; + return self; + }, 1); + + $def(self, '$equal?', function $Number_equal$ques$26(other) { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self['$=='](other)))) { + return $ret_or_1 + } else { + return isNaN(self) && isNaN(other); + } + }, 1); + + $def(self, '$even?', function $Number_even$ques$27() { + var self = this; + + return self % 2 === 0; + }, 0); + + $def(self, '$floor', function $$floor(ndigits) { + var self = this; + + + + if (ndigits == null) ndigits = 0;; + + var f = self.$to_f(); + + if (f % 1 === 0 && ndigits >= 0) { + return f; + } + + var factor = Math.pow(10, ndigits), + result = Math.floor(f * factor) / factor; + + if (f % 1 === 0) { + result = Math.round(result); + } + + return result; + ; + }, -1); + + $def(self, '$gcd', function $$gcd(other) { + var self = this; + + + if (!$eqeqeq($$$('Integer'), other)) { + $Kernel.$raise($$$('TypeError'), "not an integer") + }; + + var min = Math.abs(self), + max = Math.abs(other); + + while (min > 0) { + var tmp = min; + + min = max % min; + max = tmp; + } + + return max; + ; + }, 1); + + $def(self, '$gcdlcm', function $$gcdlcm(other) { + var self = this; + + return [self.$gcd(other), self.$lcm(other)] + }, 1); + + $def(self, '$integer?', function $Number_integer$ques$28() { + var self = this; + + return self % 1 === 0; + }, 0); + + $def(self, '$is_a?', function $Number_is_a$ques$29(klass) { + var $yield = $Number_is_a$ques$29.$$p || nil, self = this; + + delete $Number_is_a$ques$29.$$p; + + if (($eqeq(klass, $$$('Integer')) && ($eqeqeq($$$('Integer'), self)))) { + return true + }; + if (($eqeq(klass, $$$('Integer')) && ($eqeqeq($$$('Integer'), self)))) { + return true + }; + if (($eqeq(klass, $$$('Float')) && ($eqeqeq($$$('Float'), self)))) { + return true + }; + return $send2(self, $find_super(self, 'is_a?', $Number_is_a$ques$29, false, true), 'is_a?', [klass], $yield); + }, 1); + + $def(self, '$instance_of?', function $Number_instance_of$ques$30(klass) { + var $yield = $Number_instance_of$ques$30.$$p || nil, self = this; + + delete $Number_instance_of$ques$30.$$p; + + if (($eqeq(klass, $$$('Integer')) && ($eqeqeq($$$('Integer'), self)))) { + return true + }; + if (($eqeq(klass, $$$('Integer')) && ($eqeqeq($$$('Integer'), self)))) { + return true + }; + if (($eqeq(klass, $$$('Float')) && ($eqeqeq($$$('Float'), self)))) { + return true + }; + return $send2(self, $find_super(self, 'instance_of?', $Number_instance_of$ques$30, false, true), 'instance_of?', [klass], $yield); + }, 1); + + $def(self, '$lcm', function $$lcm(other) { + var self = this; + + + if (!$eqeqeq($$$('Integer'), other)) { + $Kernel.$raise($$$('TypeError'), "not an integer") + }; + + if (self == 0 || other == 0) { + return 0; + } + else { + return Math.abs(self * other / self.$gcd(other)); + } + ; + }, 1); + + $def(self, '$next', function $$next() { + var self = this; + + return self + 1; + }, 0); + + $def(self, '$nobits?', function $Number_nobits$ques$31(mask) { + var self = this; + + + mask = $Opal['$coerce_to!'](mask, $$$('Integer'), "to_int"); + return (self & mask) == 0;; + }, 1); + + $def(self, '$nonzero?', function $Number_nonzero$ques$32() { + var self = this; + + return self == 0 ? nil : self; + }, 0); + + $def(self, '$numerator', function $$numerator() { + var $yield = $$numerator.$$p || nil, self = this; + + delete $$numerator.$$p; + if (($truthy(self['$nan?']()) || ($truthy(self['$infinite?']())))) { + return self + } else { + return $send2(self, $find_super(self, 'numerator', $$numerator, false, true), 'numerator', [], $yield) + } + }, 0); + + $def(self, '$odd?', function $Number_odd$ques$33() { + var self = this; + + return self % 2 !== 0; + }, 0); + + $def(self, '$ord', function $$ord() { + var self = this; + + return self + }, 0); + + $def(self, '$pow', function $$pow(b, m) { + var self = this; + + + ; + + if (self == 0) { + $Kernel.$raise($$$('ZeroDivisionError'), "divided by 0") + } + + if (m === undefined) { + return self['$**'](b); + } else { + if (!($$$('Integer')['$==='](b))) { + $Kernel.$raise($$$('TypeError'), "Integer#pow() 2nd argument not allowed unless a 1st argument is integer") + } + + if (b < 0) { + $Kernel.$raise($$$('TypeError'), "Integer#pow() 1st argument cannot be negative when 2nd argument specified") + } + + if (!($$$('Integer')['$==='](m))) { + $Kernel.$raise($$$('TypeError'), "Integer#pow() 2nd argument not allowed unless all arguments are integers") + } + + if (m === 0) { + $Kernel.$raise($$$('ZeroDivisionError'), "divided by 0") + } + + return self['$**'](b)['$%'](m) + } + ; + }, -2); + + $def(self, '$pred', function $$pred() { + var self = this; + + return self - 1; + }, 0); + + $def(self, '$quo', function $$quo(other) { + var $yield = $$quo.$$p || nil, self = this; + + delete $$quo.$$p; + if ($eqeqeq($$$('Integer'), self)) { + return $send2(self, $find_super(self, 'quo', $$quo, false, true), 'quo', [other], $yield) + } else { + return $rb_divide(self, other) + } + }, 1); + + $def(self, '$rationalize', function $$rationalize(eps) { + var $a, $b, self = this, f = nil, n = nil; + + + ; + + if (arguments.length > 1) { + $Kernel.$raise($$$('ArgumentError'), "wrong number of arguments (" + (arguments.length) + " for 0..1)"); + } + ; + if ($eqeqeq($$$('Integer'), self)) { + return $$$('Rational').$new(self, 1) + } else if ($truthy(self['$infinite?']())) { + return $Kernel.$raise($$$('FloatDomainError'), "Infinity") + } else if ($truthy(self['$nan?']())) { + return $Kernel.$raise($$$('FloatDomainError'), "NaN") + } else if ($truthy(eps == null)) { + + $b = $$$('Math').$frexp(self), $a = $to_ary($b), (f = ($a[0] == null ? nil : $a[0])), (n = ($a[1] == null ? nil : $a[1])), $b; + f = $$$('Math').$ldexp(f, $$$($$$('Float'), 'MANT_DIG')).$to_i(); + n = $rb_minus(n, $$$($$$('Float'), 'MANT_DIG')); + return $$$('Rational').$new($rb_times(2, f), (1)['$<<']($rb_minus(1, n))).$rationalize($$$('Rational').$new(1, (1)['$<<']($rb_minus(1, n)))); + } else { + return self.$to_r().$rationalize(eps) + }; + }, -1); + + $def(self, '$remainder', function $$remainder(y) { + var self = this; + + return $rb_minus(self, $rb_times(y, $rb_divide(self, y).$truncate())) + }, 1); + + $def(self, '$round', function $$round(ndigits) { + var $a, $b, self = this, _ = nil, exp = nil; + + + ; + if ($eqeqeq($$$('Integer'), self)) { + + if ($truthy(ndigits == null)) { + return self + }; + if (($eqeqeq($$$('Float'), ndigits) && ($truthy(ndigits['$infinite?']())))) { + $Kernel.$raise($$$('RangeError'), "Infinity") + }; + ndigits = $Opal['$coerce_to!'](ndigits, $$$('Integer'), "to_int"); + if ($truthy($rb_lt(ndigits, $$$($$$('Integer'), 'MIN')))) { + $Kernel.$raise($$$('RangeError'), "out of bounds") + }; + if ($truthy(ndigits >= 0)) { + return self + }; + ndigits = ndigits['$-@'](); + + if (0.415241 * ndigits - 0.125 > self.$size()) { + return 0; + } + + var f = Math.pow(10, ndigits), + x = Math.floor((Math.abs(self) + f / 2) / f) * f; + + return self < 0 ? -x : x; + ; + } else { + + if (($truthy(self['$nan?']()) && ($truthy(ndigits == null)))) { + $Kernel.$raise($$$('FloatDomainError'), "NaN") + }; + ndigits = $Opal['$coerce_to!'](ndigits || 0, $$$('Integer'), "to_int"); + if ($truthy($rb_le(ndigits, 0))) { + if ($truthy(self['$nan?']())) { + $Kernel.$raise($$$('RangeError'), "NaN") + } else if ($truthy(self['$infinite?']())) { + $Kernel.$raise($$$('FloatDomainError'), "Infinity") + } + } else if ($eqeq(ndigits, 0)) { + return Math.round(self) + } else if (($truthy(self['$nan?']()) || ($truthy(self['$infinite?']())))) { + return self + }; + $b = $$$('Math').$frexp(self), $a = $to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (exp = ($a[1] == null ? nil : $a[1])), $b; + if ($truthy($rb_ge(ndigits, $rb_minus($rb_plus($$$($$$('Float'), 'DIG'), 2), ($truthy($rb_gt(exp, 0)) ? ($rb_divide(exp, 4)) : ($rb_minus($rb_divide(exp, 3), 1))))))) { + return self + }; + if ($truthy($rb_lt(ndigits, ($truthy($rb_gt(exp, 0)) ? ($rb_plus($rb_divide(exp, 3), 1)) : ($rb_divide(exp, 4)))['$-@']()))) { + return 0 + }; + return Math.round(self * Math.pow(10, ndigits)) / Math.pow(10, ndigits);; + }; + }, -1); + + $def(self, '$times', function $$times() { + var block = $$times.$$p || nil, self = this; + + delete $$times.$$p; + + ; + if (!$truthy(block)) { + return $send(self, 'enum_for', ["times"], function $$34(){var self = $$34.$$s == null ? this : $$34.$$s; + + return self}, {$$arity: 0, $$s: self}) + }; + + for (var i = 0; i < self; i++) { + block(i); + } + ; + return self; + }, 0); + + $def(self, '$to_f', function $$to_f() { + var self = this; + + return self + }, 0); + + $def(self, '$to_i', function $$to_i() { + var self = this; + + return self < 0 ? Math.ceil(self) : Math.floor(self); + }, 0); + + $def(self, '$to_r', function $$to_r() { + var $a, $b, self = this, f = nil, e = nil; + + if ($eqeqeq($$$('Integer'), self)) { + return $$$('Rational').$new(self, 1) + } else { + + $b = $$$('Math').$frexp(self), $a = $to_ary($b), (f = ($a[0] == null ? nil : $a[0])), (e = ($a[1] == null ? nil : $a[1])), $b; + f = $$$('Math').$ldexp(f, $$$($$$('Float'), 'MANT_DIG')).$to_i(); + e = $rb_minus(e, $$$($$$('Float'), 'MANT_DIG')); + return $rb_times(f, $$$($$$('Float'), 'RADIX')['$**'](e)).$to_r(); + } + }, 0); + + $def(self, '$to_s', function $$to_s(base) { + var self = this; + + + + if (base == null) base = 10;; + base = $Opal['$coerce_to!'](base, $$$('Integer'), "to_int"); + if (($truthy($rb_lt(base, 2)) || ($truthy($rb_gt(base, 36))))) { + $Kernel.$raise($$$('ArgumentError'), "invalid radix " + (base)) + }; + if (($eqeq(self, 0) && ($truthy(1/self === -Infinity)))) { + return "-0.0" + }; + return self.toString(base);; + }, -1); + + $def(self, '$truncate', function $$truncate(ndigits) { + var self = this; + + + + if (ndigits == null) ndigits = 0;; + + var f = self.$to_f(); + + if (f % 1 === 0 && ndigits >= 0) { + return f; + } + + var factor = Math.pow(10, ndigits), + result = parseInt(f * factor, 10) / factor; + + if (f % 1 === 0) { + result = Math.round(result); + } + + return result; + ; + }, -1); + + $def(self, '$digits', function $$digits(base) { + var self = this; + + + + if (base == null) base = 10;; + if ($rb_lt(self, 0)) { + $Kernel.$raise($$$($$$('Math'), 'DomainError'), "out of domain") + }; + base = $Opal['$coerce_to!'](base, $$$('Integer'), "to_int"); + if ($truthy($rb_lt(base, 2))) { + $Kernel.$raise($$$('ArgumentError'), "invalid radix " + (base)) + }; + + if (self != parseInt(self)) $Kernel.$raise($$$('NoMethodError'), "undefined method `digits' for " + (self.$inspect())) + + var value = self, result = []; + + if (self == 0) { + return [0]; + } + + while (value != 0) { + result.push(value % base); + value = parseInt(value / base, 10); + } + + return result; + ; + }, -1); + + $def(self, '$divmod', function $$divmod(other) { + var $yield = $$divmod.$$p || nil, self = this; + + delete $$divmod.$$p; + if (($truthy(self['$nan?']()) || ($truthy(other['$nan?']())))) { + return $Kernel.$raise($$$('FloatDomainError'), "NaN") + } else if ($truthy(self['$infinite?']())) { + return $Kernel.$raise($$$('FloatDomainError'), "Infinity") + } else { + return $send2(self, $find_super(self, 'divmod', $$divmod, false, true), 'divmod', [other], $yield) + } + }, 1); + + $def(self, '$upto', function $$upto(stop) { + var block = $$upto.$$p || nil, self = this; + + delete $$upto.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["upto", stop], function $$35(){var self = $$35.$$s == null ? this : $$35.$$s; + + + if (!$eqeqeq($$$('Numeric'), stop)) { + $Kernel.$raise($$$('ArgumentError'), "comparison of " + (self.$class()) + " with " + (stop.$class()) + " failed") + }; + if ($truthy($rb_lt(stop, self))) { + return 0 + } else { + return $rb_plus($rb_minus(stop, self), 1) + };}, {$$arity: 0, $$s: self}) + }; + + if (!stop.$$is_number) { + $Kernel.$raise($$$('ArgumentError'), "comparison of " + (self.$class()) + " with " + (stop.$class()) + " failed") + } + for (var i = self; i <= stop; i++) { + block(i); + } + ; + return self; + }, 1); + + $def(self, '$zero?', function $Number_zero$ques$36() { + var self = this; + + return self == 0; + }, 0); + + $def(self, '$size', function $$size() { + + return 4 + }, 0); + + $def(self, '$nan?', function $Number_nan$ques$37() { + var self = this; + + return isNaN(self); + }, 0); + + $def(self, '$finite?', function $Number_finite$ques$38() { + var self = this; + + return self != Infinity && self != -Infinity && !isNaN(self); + }, 0); + + $def(self, '$infinite?', function $Number_infinite$ques$39() { + var self = this; + + + if (self == Infinity) { + return +1; + } + else if (self == -Infinity) { + return -1; + } + else { + return nil; + } + + }, 0); + + $def(self, '$positive?', function $Number_positive$ques$40() { + var self = this; + + return self != 0 && (self == Infinity || 1 / self > 0); + }, 0); + + $def(self, '$negative?', function $Number_negative$ques$41() { + var self = this; + + return self == -Infinity || 1 / self < 0; + }, 0); + $alias(self, "arg", "angle"); + $alias(self, "eql?", "=="); + $alias(self, "fdiv", "/"); + $alias(self, "inspect", "to_s"); + $alias(self, "kind_of?", "is_a?"); + $alias(self, "magnitude", "abs"); + $alias(self, "modulo", "%"); + $alias(self, "object_id", "__id__"); + $alias(self, "phase", "angle"); + $alias(self, "succ", "next"); + return $alias(self, "to_int", "to_i"); + })('::', $$$('Numeric'), $nesting); + $const_set('::', 'Fixnum', $$$('Number')); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Integer'); + + var $nesting = [self].concat($parent_nesting); + + + self.$$is_number_class = true; + self.$$is_integer_class = true; + (function(self, $parent_nesting) { + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$allocate', function $$allocate() { + var self = this; + + return $Kernel.$raise($$$('TypeError'), "allocator undefined for " + (self.$name())) + }, 0); + + Opal.udef(self, '$' + "new");; + + $def(self, '$sqrt', function $$sqrt(n) { + + + n = $Opal['$coerce_to!'](n, $$$('Integer'), "to_int"); + + if (n < 0) { + $Kernel.$raise($$$($$$('Math'), 'DomainError'), "Numerical argument is out of domain - \"isqrt\"") + } + + return parseInt(Math.sqrt(n), 10); + ; + }, 1); + return $def(self, '$try_convert', function $$try_convert(object) { + var self = this; + + return $$('Opal')['$coerce_to?'](object, self, "to_int") + }, 1); + })(Opal.get_singleton_class(self), $nesting); + $const_set(self, 'MAX', Math.pow(2, 30) - 1); + return $const_set(self, 'MIN', -Math.pow(2, 30)); + })('::', $$$('Numeric'), $nesting); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Float'); + + var $nesting = [self].concat($parent_nesting); + + + self.$$is_number_class = true; + (function(self, $parent_nesting) { + + + + $def(self, '$allocate', function $$allocate() { + var self = this; + + return $Kernel.$raise($$$('TypeError'), "allocator undefined for " + (self.$name())) + }, 0); + + Opal.udef(self, '$' + "new");; + return $def(self, '$===', function $eq_eq_eq$42(other) { + + return !!other.$$is_number; + }, 1); + })(Opal.get_singleton_class(self), $nesting); + $const_set(self, 'INFINITY', Infinity); + $const_set(self, 'MAX', Number.MAX_VALUE); + $const_set(self, 'MIN', Number.MIN_VALUE); + $const_set(self, 'NAN', NaN); + $const_set(self, 'DIG', 15); + $const_set(self, 'MANT_DIG', 53); + $const_set(self, 'RADIX', 2); + return $const_set(self, 'EPSILON', Number.EPSILON || 2.2204460492503130808472633361816E-16); + })('::', $$$('Numeric'), $nesting); +}; + +Opal.modules["corelib/range"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $truthy = Opal.truthy, $Kernel = Opal.Kernel, $def = Opal.def, $not = Opal.not, $send2 = Opal.send2, $find_super = Opal.find_super, $rb_lt = Opal.rb_lt, $rb_le = Opal.rb_le, $send = Opal.send, $eqeq = Opal.eqeq, $eqeqeq = Opal.eqeqeq, $rb_gt = Opal.rb_gt, $rb_minus = Opal.rb_minus, $Opal = Opal.Opal, $rb_divide = Opal.rb_divide, $rb_plus = Opal.rb_plus, $rb_times = Opal.rb_times, $rb_ge = Opal.rb_ge, $alias = Opal.alias; + + Opal.add_stubs('require,include,attr_reader,raise,nil?,<=>,include?,!,<,<=,enum_for,size,upto,to_proc,respond_to?,class,succ,==,===,exclude_end?,eql?,begin,end,last,to_a,>,-@,-,to_i,coerce_to!,ceil,/,is_a?,new,loop,+,*,>=,each_with_index,%,step,bsearch,inspect,[],hash'); + + self.$require("corelib/enumerable"); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Range'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.begin = $proto.end = $proto.excl = nil; + + self.$include($$$('Enumerable')); + self.$$prototype.$$is_range = true; + self.$attr_reader("begin", "end"); + + $def(self, '$initialize', function $$initialize(first, last, exclude) { + var self = this; + + + + if (exclude == null) exclude = false;; + if ($truthy(self.begin)) { + $Kernel.$raise($$$('NameError'), "'initialize' called twice") + }; + if (!(($truthy(first['$<=>'](last)) || ($truthy(first['$nil?']()))) || ($truthy(last['$nil?']())))) { + $Kernel.$raise($$$('ArgumentError'), "bad value for range") + }; + self.begin = first; + self.end = last; + return (self.excl = exclude); + }, -3); + + $def(self, '$===', function $Range_$eq_eq_eq$1(value) { + var self = this; + + return self['$include?'](value) + }, 1); + + function is_infinite(self) { + if (self.begin === nil || self.end === nil || + self.begin === -Infinity || self.end === Infinity || + self.begin === Infinity || self.end === -Infinity) return true; + return false; + } + ; + + $def(self, '$count', function $$count() { + var block = $$count.$$p || nil, self = this; + + delete $$count.$$p; + + ; + if (($not((block !== nil)) && ($truthy(is_infinite(self))))) { + return $$$($$$('Float'), 'INFINITY') + }; + return $send2(self, $find_super(self, 'count', $$count, false, true), 'count', [], block); + }, 0); + + $def(self, '$to_a', function $$to_a() { + var $yield = $$to_a.$$p || nil, self = this; + + delete $$to_a.$$p; + + if ($truthy(is_infinite(self))) { + $Kernel.$raise($$$('TypeError'), "cannot convert endless range to an array") + }; + return $send2(self, $find_super(self, 'to_a', $$to_a, false, true), 'to_a', [], $yield); + }, 0); + + $def(self, '$cover?', function $Range_cover$ques$2(value) { + var self = this, beg_cmp = nil, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil, end_cmp = nil; + + + beg_cmp = ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = ($truthy(($ret_or_3 = self.begin['$nil?']())) ? (-1) : ($ret_or_3)))) ? ($ret_or_2) : (self.begin['$<=>'](value))))) && ($ret_or_1)); + end_cmp = ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = ($truthy(($ret_or_3 = self.end['$nil?']())) ? (-1) : ($ret_or_3)))) ? ($ret_or_2) : (value['$<=>'](self.end))))) && ($ret_or_1)); + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = ($truthy(self.excl) ? (($truthy(($ret_or_3 = end_cmp)) ? ($rb_lt(end_cmp, 0)) : ($ret_or_3))) : ($truthy(($ret_or_3 = end_cmp)) ? ($rb_le(end_cmp, 0)) : ($ret_or_3))))) ? (beg_cmp) : ($ret_or_2))))) { + return $rb_le(beg_cmp, 0) + } else { + return $ret_or_1 + }; + }, 1); + + $def(self, '$each', function $$each() { + var block = $$each.$$p || nil, $a, self = this, current = nil, last = nil, $ret_or_1 = nil; + + delete $$each.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["each"], function $$3(){var self = $$3.$$s == null ? this : $$3.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + + var i, limit; + + if (self.begin.$$is_number && self.end.$$is_number) { + if (self.begin % 1 !== 0 || self.end % 1 !== 0) { + $Kernel.$raise($$$('TypeError'), "can't iterate from Float") + } + + for (i = self.begin, limit = self.end + ($truthy(self.excl) ? (0) : (1)); i < limit; i++) { + block(i); + } + + return self; + } + + if (self.begin.$$is_string && self.end.$$is_string) { + $send(self.begin, 'upto', [self.end, self.excl], block.$to_proc()) + return self; + } + ; + current = self.begin; + last = self.end; + if (!$truthy(current['$respond_to?']("succ"))) { + $Kernel.$raise($$$('TypeError'), "can't iterate from " + (current.$class())) + }; + while ($truthy(($truthy(($ret_or_1 = self.end['$nil?']())) ? ($ret_or_1) : ($rb_lt(current['$<=>'](last), 0))))) { + + Opal.yield1(block, current); + current = current.$succ(); + }; + if (($not(self.excl) && ($eqeq(current, last)))) { + Opal.yield1(block, current) + }; + return self; + }, 0); + + $def(self, '$eql?', function $Range_eql$ques$4(other) { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + + if (!$eqeqeq($$$('Range'), other)) { + return false + }; + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = self.excl['$==='](other['$exclude_end?']()))) ? (self.begin['$eql?'](other.$begin())) : ($ret_or_2))))) { + return self.end['$eql?'](other.$end()) + } else { + return $ret_or_1 + }; + }, 1); + + $def(self, '$exclude_end?', function $Range_exclude_end$ques$5() { + var self = this; + + return self.excl + }, 0); + + $def(self, '$first', function $$first(n) { + var $yield = $$first.$$p || nil, self = this; + + delete $$first.$$p; + + ; + if ($truthy(self.begin['$nil?']())) { + $Kernel.$raise($$$('RangeError'), "cannot get the minimum of beginless range") + }; + if ($truthy(n == null)) { + return self.begin + }; + return $send2(self, $find_super(self, 'first', $$first, false, true), 'first', [n], $yield); + }, -1); + + $def(self, '$last', function $$last(n) { + var self = this; + + + ; + if ($truthy(self.end['$nil?']())) { + $Kernel.$raise($$$('RangeError'), "cannot get the maximum of endless range") + }; + if ($truthy(n == null)) { + return self.end + }; + return self.$to_a().$last(n); + }, -1); + + $def(self, '$max', function $$max() { + var $yield = $$max.$$p || nil, self = this; + + delete $$max.$$p; + if ($truthy(self.end['$nil?']())) { + return $Kernel.$raise($$$('RangeError'), "cannot get the maximum of endless range") + } else if (($yield !== nil)) { + return $send2(self, $find_super(self, 'max', $$max, false, true), 'max', [], $yield) + } else if (($not(self.begin['$nil?']()) && (($truthy($rb_gt(self.begin, self.end)) || (($truthy(self.excl) && ($eqeq(self.begin, self.end)))))))) { + return nil + } else { + return self.excl ? self.end - 1 : self.end + } + }, 0); + + $def(self, '$min', function $$min() { + var $yield = $$min.$$p || nil, self = this; + + delete $$min.$$p; + if ($truthy(self.begin['$nil?']())) { + return $Kernel.$raise($$$('RangeError'), "cannot get the minimum of beginless range") + } else if (($yield !== nil)) { + return $send2(self, $find_super(self, 'min', $$min, false, true), 'min', [], $yield) + } else if (($not(self.end['$nil?']()) && (($truthy($rb_gt(self.begin, self.end)) || (($truthy(self.excl) && ($eqeq(self.begin, self.end)))))))) { + return nil + } else { + return self.begin + } + }, 0); + + $def(self, '$size', function $$size() { + var self = this, infinity = nil, range_begin = nil, range_end = nil; + + + infinity = $$$($$$('Float'), 'INFINITY'); + if ((($eqeq(self.begin, infinity) && ($not(self.end['$nil?']()))) || (($eqeq(self.end, infinity['$-@']()) && ($not(self.begin['$nil?']())))))) { + return 0 + }; + if ($truthy(is_infinite(self))) { + return infinity + }; + if (!($eqeqeq($$$('Numeric'), self.begin) && ($eqeqeq($$$('Numeric'), self.end)))) { + return nil + }; + range_begin = self.begin; + range_end = self.end; + if ($truthy(self.excl)) { + range_end = $rb_minus(range_end, 1) + }; + if ($truthy($rb_lt(range_end, range_begin))) { + return 0 + }; + return (Math.abs(range_end - range_begin) + 1).$to_i(); + }, 0); + + $def(self, '$step', function $$step(n) { + var $yield = $$step.$$p || nil, self = this, $ret_or_1 = nil, i = nil; + + delete $$step.$$p; + + ; + + function coerceStepSize() { + if (n == null) { + n = 1; + } + else if (!n.$$is_number) { + n = $Opal['$coerce_to!'](n, $$$('Integer'), "to_int") + } + + if (n < 0) { + $Kernel.$raise($$$('ArgumentError'), "step can't be negative") + } else if (n === 0) { + $Kernel.$raise($$$('ArgumentError'), "step can't be 0") + } + } + + function enumeratorSize() { + if (!self.begin['$respond_to?']("succ")) { + return nil; + } + + if (self.begin.$$is_string && self.end.$$is_string) { + return nil; + } + + if (n % 1 === 0) { + return $rb_divide(self.$size(), n).$ceil(); + } else { + // n is a float + var begin = self.begin, end = self.end, + abs = Math.abs, floor = Math.floor, + err = (abs(begin) + abs(end) + abs(end - begin)) / abs(n) * $$$($$$('Float'), 'EPSILON'), + size; + + if (err > 0.5) { + err = 0.5; + } + + if (self.excl) { + size = floor((end - begin) / n - err); + if (size * n + begin < end) { + size++; + } + } else { + size = floor((end - begin) / n + err) + 1 + } + + return size; + } + } + ; + if (!($yield !== nil)) { + if (((($truthy(self.begin['$is_a?']($$('Numeric'))) || ($truthy(self.begin['$nil?']()))) && (($truthy(self.end['$is_a?']($$('Numeric'))) || ($truthy(self.end['$nil?']()))))) && ($not(($truthy(($ret_or_1 = self.begin['$nil?']())) ? (self.end['$nil?']()) : ($ret_or_1)))))) { + return $$$($$$('Enumerator'), 'ArithmeticSequence').$new(self, n, "step") + } else { + return $send(self, 'enum_for', ["step", n], function $$6(){ + + coerceStepSize(); + return enumeratorSize(); + }, 0) + } + }; + coerceStepSize(); + if ($truthy(self.begin.$$is_number && self.end.$$is_number)) { + + i = 0; + (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], function $$7(){var self = $$7.$$s == null ? this : $$7.$$s, current = nil; + if (self.begin == null) self.begin = nil; + if (self.excl == null) self.excl = nil; + if (self.end == null) self.end = nil; + + + current = $rb_plus(self.begin, $rb_times(i, n)); + if ($truthy(self.excl)) { + if ($truthy($rb_ge(current, self.end))) { + + Opal.brk(nil, $brk) + } + } else if ($truthy($rb_gt(current, self.end))) { + + Opal.brk(nil, $brk) + }; + Opal.yield1($yield, current); + return (i = $rb_plus(i, 1));}, {$$arity: 0, $$s: self, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + } else { + + + if (self.begin.$$is_string && self.end.$$is_string && n % 1 !== 0) { + $Kernel.$raise($$$('TypeError'), "no implicit conversion to float from string") + } + ; + $send(self, 'each_with_index', [], function $$8(value, idx){ + + + if (value == null) value = nil;; + + if (idx == null) idx = nil;; + if ($eqeq(idx['$%'](n), 0)) { + return Opal.yield1($yield, value); + } else { + return nil + };}, 2); + }; + return self; + }, -1); + + $def(self, '$%', function $Range_$percent$9(n) { + var self = this; + + if (($truthy(self.begin['$is_a?']($$('Numeric'))) && ($truthy(self.end['$is_a?']($$('Numeric')))))) { + return $$$($$$('Enumerator'), 'ArithmeticSequence').$new(self, n, "%") + } else { + return self.$step(n) + } + }, 1); + + $def(self, '$bsearch', function $$bsearch() { + var block = $$bsearch.$$p || nil, self = this; + + delete $$bsearch.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("bsearch") + }; + if ($truthy(is_infinite(self) && (self.begin.$$is_number || self.end.$$is_number))) { + $Kernel.$raise($$$('NotImplementedError'), "Can't #bsearch an infinite range") + }; + if (!$truthy(self.begin.$$is_number && self.end.$$is_number)) { + $Kernel.$raise($$$('TypeError'), "can't do binary search for " + (self.begin.$class())) + }; + return $send(self.$to_a(), 'bsearch', [], block.$to_proc()); + }, 0); + + $def(self, '$to_s', function $$to_s() { + var self = this, $ret_or_1 = nil; + + return "" + (($truthy(($ret_or_1 = self.begin)) ? ($ret_or_1) : (""))) + (($truthy(self.excl) ? ("...") : (".."))) + (($truthy(($ret_or_1 = self.end)) ? ($ret_or_1) : (""))) + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this, $ret_or_1 = nil; + + return "" + (($truthy(($ret_or_1 = self.begin)) ? (self.begin.$inspect()) : ($ret_or_1))) + (($truthy(self.excl) ? ("...") : (".."))) + (($truthy(($ret_or_1 = self.end)) ? (self.end.$inspect()) : ($ret_or_1))) + }, 0); + + $def(self, '$marshal_load', function $$marshal_load(args) { + var self = this; + + + self.begin = args['$[]']("begin"); + self.end = args['$[]']("end"); + return (self.excl = args['$[]']("excl")); + }, 1); + + $def(self, '$hash', function $$hash() { + var self = this; + + return [self.begin, self.end, self.excl].$hash() + }, 0); + $alias(self, "==", "eql?"); + $alias(self, "include?", "cover?"); + return $alias(self, "member?", "cover?"); + })('::', null, $nesting); +}; + +Opal.modules["corelib/proc"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $$$ = Opal.$$$, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $Kernel = Opal.Kernel, $defs = Opal.defs, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $Opal = Opal.Opal, $alias = Opal.alias; + + Opal.add_stubs('raise,proc,call,to_proc,new,source_location,coerce_to!'); + return (function($base, $super) { + var self = $klass($base, $super, 'Proc'); + + + + Opal.prop(self.$$prototype, '$$is_proc', true); + Opal.prop(self.$$prototype, '$$is_lambda', false); + $defs(self, '$new', function $Proc_new$1() { + var block = $Proc_new$1.$$p || nil; + + delete $Proc_new$1.$$p; + + ; + if (!$truthy(block)) { + $Kernel.$raise($$$('ArgumentError'), "tried to create a Proc object without a block") + }; + return block; + }, 0); + + $def(self, '$call', function $$call($a) { + var block = $$call.$$p || nil, $post_args, args, self = this; + + delete $$call.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + + if (block !== nil) { + self.$$p = block; + } + + var result, $brk = self.$$brk; + + if ($brk) { + try { + if (self.$$is_lambda) { + result = self.apply(null, args); + } + else { + result = Opal.yieldX(self, args); + } + } catch (err) { + if (err === $brk) { + return $brk.$v + } + else { + throw err + } + } + } + else { + if (self.$$is_lambda) { + result = self.apply(null, args); + } + else { + result = Opal.yieldX(self, args); + } + } + + return result; + ; + }, -1); + + $def(self, '$>>', function $Proc_$gt$gt$2(other) { + var $yield = $Proc_$gt$gt$2.$$p || nil, self = this; + + delete $Proc_$gt$gt$2.$$p; + return $send($Kernel, 'proc', [], function $$3($a){var block = $$3.$$p || nil, $post_args, args, self = $$3.$$s == null ? this : $$3.$$s, out = nil; + + delete $$3.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + out = $send(self, 'call', $to_a(args), block.$to_proc()); + return other.$call(out);}, {$$arity: -1, $$s: self}) + }, 1); + + $def(self, '$<<', function $Proc_$lt$lt$4(other) { + var $yield = $Proc_$lt$lt$4.$$p || nil, self = this; + + delete $Proc_$lt$lt$4.$$p; + return $send($Kernel, 'proc', [], function $$5($a){var block = $$5.$$p || nil, $post_args, args, self = $$5.$$s == null ? this : $$5.$$s, out = nil; + + delete $$5.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + out = $send(other, 'call', $to_a(args), block.$to_proc()); + return self.$call(out);}, {$$arity: -1, $$s: self}) + }, 1); + + $def(self, '$to_proc', function $$to_proc() { + var self = this; + + return self + }, 0); + + $def(self, '$lambda?', function $Proc_lambda$ques$6() { + var self = this; + + return !!self.$$is_lambda; + }, 0); + + $def(self, '$arity', function $$arity() { + var self = this; + + + if (self.$$is_curried) { + return -1; + } else { + return self.$$arity; + } + + }, 0); + + $def(self, '$source_location', function $$source_location() { + var self = this; + + + if (self.$$is_curried) { return nil; }; + return nil; + }, 0); + + $def(self, '$binding', function $$binding() { + var $a, self = this; + + + if (self.$$is_curried) { $Kernel.$raise($$$('ArgumentError'), "Can't create Binding") }; + if ($truthy((($a = $$$('::', 'Binding', 'skip_raise')) ? 'constant' : nil))) { + return $$$('Binding').$new(nil, [], self.$$s, self.$source_location()) + } else { + return nil + }; + }, 0); + + $def(self, '$parameters', function $$parameters() { + var self = this; + + + if (self.$$is_curried) { + return [["rest"]]; + } else if (self.$$parameters) { + if (self.$$is_lambda) { + return self.$$parameters; + } else { + var result = [], i, length; + + for (i = 0, length = self.$$parameters.length; i < length; i++) { + var parameter = self.$$parameters[i]; + + if (parameter[0] === 'req') { + // required arguments always have name + parameter = ['opt', parameter[1]]; + } + + result.push(parameter); + } + + return result; + } + } else { + return []; + } + + }, 0); + + $def(self, '$curry', function $$curry(arity) { + var self = this; + + + ; + + if (arity === undefined) { + arity = self.length; + } + else { + arity = $Opal['$coerce_to!'](arity, $$$('Integer'), "to_int"); + if (self.$$is_lambda && arity !== self.length) { + $Kernel.$raise($$$('ArgumentError'), "wrong number of arguments (" + (arity) + " for " + (self.length) + ")") + } + } + + function curried () { + var args = $slice.call(arguments), + length = args.length, + result; + + if (length > arity && self.$$is_lambda && !self.$$is_curried) { + $Kernel.$raise($$$('ArgumentError'), "wrong number of arguments (" + (length) + " for " + (arity) + ")") + } + + if (length >= arity) { + return self.$call.apply(self, args); + } + + result = function () { + return curried.apply(null, + args.concat($slice.call(arguments))); + } + result.$$is_lambda = self.$$is_lambda; + result.$$is_curried = true; + + return result; + }; + + curried.$$is_lambda = self.$$is_lambda; + curried.$$is_curried = true; + return curried; + ; + }, -1); + + $def(self, '$dup', function $$dup() { + var self = this; + + + var original_proc = self.$$original_proc || self, + proc = function () { + return original_proc.apply(this, arguments); + }; + + for (var prop in self) { + if (self.hasOwnProperty(prop)) { + proc[prop] = self[prop]; + } + } + + return proc; + + }, 0); + $alias(self, "===", "call"); + $alias(self, "clone", "dup"); + $alias(self, "yield", "call"); + return $alias(self, "[]", "call"); + })('::', Function) +}; + +Opal.modules["corelib/method"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $alias = Opal.alias, $Kernel = Opal.Kernel, $send = Opal.send, $to_a = Opal.to_a; + + Opal.add_stubs('attr_reader,arity,curry,>>,<<,new,class,join,source_location,raise,call,bind,to_proc'); + + (function($base, $super) { + var self = $klass($base, $super, 'Method'); + + var $proto = self.$$prototype; + + $proto.method = $proto.receiver = $proto.owner = $proto.name = nil; + + self.$attr_reader("owner", "receiver", "name"); + + $def(self, '$initialize', function $$initialize(receiver, owner, method, name) { + var self = this; + + + self.receiver = receiver; + self.owner = owner; + self.name = name; + return (self.method = method); + }, 4); + + $def(self, '$arity', function $$arity() { + var self = this; + + return self.method.$arity() + }, 0); + + $def(self, '$parameters', function $$parameters() { + var self = this; + + return self.method.$$parameters + }, 0); + + $def(self, '$source_location', function $$source_location() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.method.$$source_location))) { + return $ret_or_1 + } else { + return ["(eval)", 0] + } + }, 0); + + $def(self, '$comments', function $$comments() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.method.$$comments))) { + return $ret_or_1 + } else { + return [] + } + }, 0); + + $def(self, '$call', function $$call($a) { + var block = $$call.$$p || nil, $post_args, args, self = this; + + delete $$call.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + + self.method.$$p = block; + + return self.method.apply(self.receiver, args); + ; + }, -1); + + $def(self, '$curry', function $$curry(arity) { + var self = this; + + + ; + return self.method.$curry(arity); + }, -1); + + $def(self, '$>>', function $Method_$gt$gt$1(other) { + var self = this; + + return self.method['$>>'](other) + }, 1); + + $def(self, '$<<', function $Method_$lt$lt$2(other) { + var self = this; + + return self.method['$<<'](other) + }, 1); + + $def(self, '$unbind', function $$unbind() { + var self = this; + + return $$$('UnboundMethod').$new(self.receiver.$class(), self.owner, self.method, self.name) + }, 0); + + $def(self, '$to_proc', function $$to_proc() { + var self = this; + + + var proc = self.$call.bind(self); + proc.$$unbound = self.method; + proc.$$is_lambda = true; + proc.$$arity = self.method.$$arity; + proc.$$parameters = self.method.$$parameters; + return proc; + + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return "#<" + (self.$class()) + ": " + (self.receiver.$class()) + "#" + (self.name) + " (defined in " + (self.owner) + " in " + (self.$source_location().$join(":")) + ")>" + }, 0); + $alias(self, "[]", "call"); + return $alias(self, "===", "call"); + })('::', null); + return (function($base, $super) { + var self = $klass($base, $super, 'UnboundMethod'); + + var $proto = self.$$prototype; + + $proto.method = $proto.owner = $proto.name = $proto.source = nil; + + self.$attr_reader("source", "owner", "name"); + + $def(self, '$initialize', function $$initialize(source, owner, method, name) { + var self = this; + + + self.source = source; + self.owner = owner; + self.method = method; + return (self.name = name); + }, 4); + + $def(self, '$arity', function $$arity() { + var self = this; + + return self.method.$arity() + }, 0); + + $def(self, '$parameters', function $$parameters() { + var self = this; + + return self.method.$$parameters + }, 0); + + $def(self, '$source_location', function $$source_location() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.method.$$source_location))) { + return $ret_or_1 + } else { + return ["(eval)", 0] + } + }, 0); + + $def(self, '$comments', function $$comments() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.method.$$comments))) { + return $ret_or_1 + } else { + return [] + } + }, 0); + + $def(self, '$bind', function $$bind(object) { + var self = this; + + + if (self.owner.$$is_module || Opal.is_a(object, self.owner)) { + return $$$('Method').$new(object, self.owner, self.method, self.name); + } + else { + $Kernel.$raise($$$('TypeError'), "can't bind singleton method to a different class (expected " + (object) + ".kind_of?(" + (self.owner) + " to be true)"); + } + + }, 1); + + $def(self, '$bind_call', function $$bind_call(object, $a) { + var block = $$bind_call.$$p || nil, $post_args, args, self = this; + + delete $$bind_call.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + return $send(self.$bind(object), 'call', $to_a(args), block.$to_proc()); + }, -2); + return $def(self, '$inspect', function $$inspect() { + var self = this; + + return "#<" + (self.$class()) + ": " + (self.source) + "#" + (self.name) + " (defined in " + (self.owner) + " in " + (self.$source_location().$join(":")) + ")>" + }, 0); + })('::', null); +}; + +Opal.modules["corelib/variables"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $gvars = Opal.gvars, $const_set = Opal.const_set, $Object = Opal.Object, $hash2 = Opal.hash2; + + Opal.add_stubs('new'); + + $gvars['&'] = $gvars['~'] = $gvars['`'] = $gvars["'"] = nil; + $gvars.LOADED_FEATURES = ($gvars["\""] = Opal.loaded_features); + $gvars.LOAD_PATH = ($gvars[":"] = []); + $gvars["/"] = "\n"; + $gvars[","] = nil; + $const_set('::', 'ARGV', []); + $const_set('::', 'ARGF', $Object.$new()); + $const_set('::', 'ENV', $hash2([], {})); + $gvars.VERBOSE = false; + $gvars.DEBUG = false; + return ($gvars.SAFE = 0); +}; + +Opal.modules["corelib/io"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $const_set = Opal.const_set, $not = Opal.not, $truthy = Opal.truthy, $def = Opal.def, $Kernel = Opal.Kernel, $gvars = Opal.gvars, $send = Opal.send, $to_a = Opal.to_a, $rb_plus = Opal.rb_plus, $neqeq = Opal.neqeq, $range = Opal.range, $hash2 = Opal.hash2, $eqeq = Opal.eqeq, $to_ary = Opal.to_ary, $rb_gt = Opal.rb_gt, $alias = Opal.alias, $rb_minus = Opal.rb_minus, $writer = nil; + + Opal.add_stubs('attr_reader,attr_accessor,!,match?,include?,size,write,String,flatten,puts,sysread_noraise,+,!=,[],ord,getc,readchar,raise,gets,==,to_str,length,split,sub,sysread,>,to_a,each_line,enum_for,getbyte,closed_write?,closed_read?,new,write_proc=,-,read_proc='); + + (function($base, $super) { + var self = $klass($base, $super, 'IO'); + + var $proto = self.$$prototype; + + $proto.fd = $proto.read_buffer = $proto.closed = nil; + + $const_set(self, 'SEEK_SET', 0); + $const_set(self, 'SEEK_CUR', 1); + $const_set(self, 'SEEK_END', 2); + $const_set(self, 'SEEK_DATA', 3); + $const_set(self, 'SEEK_HOLE', 4); + $const_set(self, 'READABLE', 1); + $const_set(self, 'WRITABLE', 4); + self.$attr_reader("eof"); + self.$attr_accessor("read_proc", "sync", "tty", "write_proc"); + + $def(self, '$initialize', function $$initialize(fd, flags) { + var self = this; + + + + if (flags == null) flags = "r";; + self.fd = fd; + self.flags = flags; + self.eof = false; + if (($truthy(flags['$include?']("r")) && ($not(flags['$match?'](/[wa+]/))))) { + return (self.closed = "write") + } else if (($truthy(flags['$match?'](/[wa]/)) && ($not(flags['$match?'](/[r+]/))))) { + return (self.closed = "read") + } else { + return nil + }; + }, -2); + + $def(self, '$fileno', function $$fileno() { + var self = this; + + return self.fd + }, 0); + + $def(self, '$tty?', function $IO_tty$ques$1() { + var self = this; + + return self.tty == true; + }, 0); + + $def(self, '$write', function $$write(string) { + var self = this; + + + self.write_proc(string); + return string.$size(); + }, 1); + + $def(self, '$flush', function $$flush() { + + return nil + }, 0); + + $def(self, '$<<', function $IO_$lt$lt$2(string) { + var self = this; + + + self.$write(string); + return self; + }, 1); + + $def(self, '$print', function $$print($a) { + var $post_args, args, self = this; + if ($gvars[","] == null) $gvars[","] = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + + for (var i = 0, ii = args.length; i < ii; i++) { + args[i] = $Kernel.$String(args[i]) + } + self.$write(args.join($gvars[","])); + ; + return nil; + }, -1); + + $def(self, '$puts', function $$puts($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + + var line + if (args.length === 0) { + self.$write("\n"); + return nil; + } else { + for (var i = 0, ii = args.length; i < ii; i++) { + if (args[i].$$is_array){ + var ary = (args[i]).$flatten() + if (ary.length > 0) $send(self, 'puts', $to_a((ary))) + } else { + if (args[i].$$is_string) { + line = args[i].valueOf(); + } else { + line = $Kernel.$String(args[i]); + } + if (!line.endsWith("\n")) line += "\n" + self.$write(line) + } + } + } + ; + return nil; + }, -1); + + $def(self, '$getc', function $$getc() { + var $a, self = this, $ret_or_1 = nil, parts = nil, ret = nil; + + + self.read_buffer = ($truthy(($ret_or_1 = self.read_buffer)) ? ($ret_or_1) : ("")); + parts = ""; + do { + + self.read_buffer = $rb_plus(self.read_buffer, parts); + if ($neqeq(self.read_buffer, "")) { + + ret = self.read_buffer['$[]'](0); + self.read_buffer = self.read_buffer['$[]']($range(1, -1, false)); + return ret; + }; + } while ($truthy((parts = self.$sysread_noraise(1))));; + return nil; + }, 0); + + $def(self, '$getbyte', function $$getbyte() { + var $a, self = this; + + return ($a = self.$getc(), ($a === nil || $a == null) ? nil : $send($a, 'ord', [])) + }, 0); + + $def(self, '$readbyte', function $$readbyte() { + var self = this; + + return self.$readchar().$ord() + }, 0); + + $def(self, '$readchar', function $$readchar() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.$getc()))) { + return $ret_or_1 + } else { + return $Kernel.$raise($$$('EOFError'), "end of file reached") + } + }, 0); + + $def(self, '$readline', function $$readline($a) { + var $post_args, args, self = this, $ret_or_1 = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if ($truthy(($ret_or_1 = $send(self, 'gets', $to_a(args))))) { + return $ret_or_1 + } else { + return $Kernel.$raise($$$('EOFError'), "end of file reached") + }; + }, -1); + + $def(self, '$gets', function $$gets(sep, limit, opts) { + var $a, $b, $c, self = this, orig_sep = nil, $ret_or_1 = nil, seplen = nil, data = nil, ret = nil, orig_buffer = nil; + if ($gvars["/"] == null) $gvars["/"] = nil; + + + + if (sep == null) sep = false;; + + if (limit == null) limit = nil;; + + if (opts == null) opts = $hash2([], {});; + if (($truthy(sep.$$is_number) && ($not(limit)))) { + $a = [false, sep, limit], (sep = $a[0]), (limit = $a[1]), (opts = $a[2]), $a + }; + if ((($truthy(sep.$$is_hash) && ($not(limit))) && ($eqeq(opts, $hash2([], {}))))) { + $a = [false, nil, sep], (sep = $a[0]), (limit = $a[1]), (opts = $a[2]), $a + } else if (($truthy(limit.$$is_hash) && ($eqeq(opts, $hash2([], {}))))) { + $a = [sep, nil, limit], (sep = $a[0]), (limit = $a[1]), (opts = $a[2]), $a + }; + orig_sep = sep; + if ($eqeq(sep, false)) { + sep = $gvars["/"] + }; + if ($eqeq(sep, "")) { + sep = /\r?\n\r?\n/ + }; + sep = ($truthy(($ret_or_1 = sep)) ? ($ret_or_1) : ("")); + if (!$eqeq(orig_sep, "")) { + sep = sep.$to_str() + }; + seplen = ($eqeq(orig_sep, "") ? (2) : (sep.$length())); + if ($eqeq(sep, " ")) { + sep = / / + }; + self.read_buffer = ($truthy(($ret_or_1 = self.read_buffer)) ? ($ret_or_1) : ("")); + data = ""; + ret = nil; + do { + + self.read_buffer = $rb_plus(self.read_buffer, data); + if (($neqeq(sep, "") && ($truthy(($truthy(sep.$$is_regexp) ? (self.read_buffer['$match?'](sep)) : (self.read_buffer['$include?'](sep))))))) { + + orig_buffer = self.read_buffer; + $c = self.read_buffer.$split(sep, 2), $b = $to_ary($c), (ret = ($b[0] == null ? nil : $b[0])), (self.read_buffer = ($b[1] == null ? nil : $b[1])), $c; + if ($neqeq(ret, orig_buffer)) { + ret = $rb_plus(ret, orig_buffer['$[]'](ret.$length(), seplen)) + }; + break;; + }; + } while ($truthy((data = self.$sysread_noraise(($eqeq(sep, "") ? (65536) : (1))))));; + if (!$truthy(ret)) { + + $a = [($truthy(($ret_or_1 = self.read_buffer)) ? ($ret_or_1) : ("")), ""], (ret = $a[0]), (self.read_buffer = $a[1]), $a; + if ($eqeq(ret, "")) { + ret = nil + }; + }; + if ($truthy(ret)) { + + if ($truthy(limit)) { + + ret = ret['$[]'](Opal.Range.$new(0,limit, true)); + self.read_buffer = $rb_plus(ret['$[]'](Opal.Range.$new(limit, -1, false)), self.read_buffer); + }; + if ($truthy(opts['$[]']("chomp"))) { + ret = ret.$sub(/\r?\n$/, "") + }; + if ($eqeq(orig_sep, "")) { + ret = ret.$sub(/^[\r\n]+/, "") + }; + }; + if ($eqeq(orig_sep, false)) { + $gvars._ = ret + }; + return ret; + }, -1); + + $def(self, '$sysread', function $$sysread(integer) { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.read_proc(integer)))) { + return $ret_or_1 + } else { + + self.eof = true; + return $Kernel.$raise($$$('EOFError'), "end of file reached"); + } + }, 1); + + $def(self, '$sysread_noraise', function $$sysread_noraise(integer) { + var self = this; + + try { + return self.$sysread(integer) + } catch ($err) { + if (Opal.rescue($err, [$$$('EOFError')])) { + try { + return nil + } finally { Opal.pop_exception(); } + } else { throw $err; } + } + }, 1); + + $def(self, '$readpartial', function $$readpartial(integer) { + var $a, self = this, $ret_or_1 = nil, part = nil, ret = nil; + + + self.read_buffer = ($truthy(($ret_or_1 = self.read_buffer)) ? ($ret_or_1) : ("")); + part = self.$sysread(integer); + $a = [$rb_plus(self.read_buffer, ($truthy(($ret_or_1 = part)) ? ($ret_or_1) : (""))), ""], (ret = $a[0]), (self.read_buffer = $a[1]), $a; + if ($eqeq(ret, "")) { + ret = nil + }; + return ret; + }, 1); + + $def(self, '$read', function $$read(integer) { + var $a, $b, self = this, $ret_or_1 = nil, parts = nil, ret = nil; + + + + if (integer == null) integer = nil;; + self.read_buffer = ($truthy(($ret_or_1 = self.read_buffer)) ? ($ret_or_1) : ("")); + parts = ""; + ret = nil; + do { + + self.read_buffer = $rb_plus(self.read_buffer, parts); + if (($truthy(integer) && ($truthy($rb_gt(self.read_buffer.$length(), integer))))) { + + $b = [self.read_buffer['$[]'](Opal.Range.$new(0,integer, true)), self.read_buffer['$[]'](Opal.Range.$new(integer, -1, false))], (ret = $b[0]), (self.read_buffer = $b[1]), $b; + return ret; + }; + } while ($truthy((parts = self.$sysread_noraise(($truthy(($ret_or_1 = integer)) ? ($ret_or_1) : (65536))))));; + $a = [self.read_buffer, ""], (ret = $a[0]), (self.read_buffer = $a[1]), $a; + return ret; + }, -1); + + $def(self, '$readlines', function $$readlines(separator) { + var self = this; + if ($gvars["/"] == null) $gvars["/"] = nil; + + + + if (separator == null) separator = $gvars["/"];; + return self.$each_line(separator).$to_a(); + }, -1); + + $def(self, '$each', function $$each($a, $b) { + var block = $$each.$$p || nil, $post_args, sep, args, $c, self = this, s = nil; + if ($gvars["/"] == null) $gvars["/"] = nil; + + delete $$each.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + if ($post_args.length > 0) sep = $post_args.shift(); + if (sep == null) sep = $gvars["/"];; + + args = $post_args;; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["each", sep].concat($to_a(args))) + }; + while ($truthy((s = $send(self, 'gets', [sep].concat($to_a(args)))))) { + Opal.yield1(block, s) + }; + return self; + }, -1); + + $def(self, '$each_byte', function $$each_byte() { + var block = $$each_byte.$$p || nil, $a, self = this, s = nil; + + delete $$each_byte.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("each_byte") + }; + while ($truthy((s = self.$getbyte()))) { + Opal.yield1(block, s) + }; + return self; + }, 0); + + $def(self, '$each_char', function $$each_char() { + var block = $$each_char.$$p || nil, $a, self = this, s = nil; + + delete $$each_char.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("each_char") + }; + while ($truthy((s = self.$getc()))) { + Opal.yield1(block, s) + }; + return self; + }, 0); + + $def(self, '$close', function $$close() { + var self = this; + + return (self.closed = "both") + }, 0); + + $def(self, '$close_read', function $$close_read() { + var self = this; + + if ($eqeq(self.closed, "write")) { + return (self.closed = "both") + } else { + return (self.closed = "read") + } + }, 0); + + $def(self, '$close_write', function $$close_write() { + var self = this; + + if ($eqeq(self.closed, "read")) { + return (self.closed = "both") + } else { + return (self.closed = "write") + } + }, 0); + + $def(self, '$closed?', function $IO_closed$ques$3() { + var self = this; + + return self.closed['$==']("both") + }, 0); + + $def(self, '$closed_read?', function $IO_closed_read$ques$4() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.closed['$==']("read")))) { + return $ret_or_1 + } else { + return self.closed['$==']("both") + } + }, 0); + + $def(self, '$closed_write?', function $IO_closed_write$ques$5() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.closed['$==']("write")))) { + return $ret_or_1 + } else { + return self.closed['$==']("both") + } + }, 0); + + $def(self, '$check_writable', function $$check_writable() { + var self = this; + + if ($truthy(self['$closed_write?']())) { + return $Kernel.$raise($$$('IOError'), "not opened for writing") + } else { + return nil + } + }, 0); + + $def(self, '$check_readable', function $$check_readable() { + var self = this; + + if ($truthy(self['$closed_read?']())) { + return $Kernel.$raise($$$('IOError'), "not opened for reading") + } else { + return nil + } + }, 0); + $alias(self, "each_line", "each"); + return $alias(self, "eof?", "eof"); + })('::', null); + $const_set('::', 'STDIN', ($gvars.stdin = $$$('IO').$new(0, "r"))); + $const_set('::', 'STDOUT', ($gvars.stdout = $$$('IO').$new(1, "w"))); + $const_set('::', 'STDERR', ($gvars.stderr = $$$('IO').$new(2, "w"))); + var console = Opal.global.console; + + $writer = [typeof(process) === 'object' && typeof(process.stdout) === 'object' ? function(s){process.stdout.write(s)} : function(s){console.log(s)}]; + $send($$$('STDOUT'), 'write_proc=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [typeof(process) === 'object' && typeof(process.stderr) === 'object' ? function(s){process.stderr.write(s)} : function(s){console.warn(s)}]; + $send($$$('STDERR'), 'write_proc=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [function(s) { var p = prompt(); if (p !== null) return p + "\n"; return nil; }]; + $send($$$('STDIN'), 'read_proc=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; +}; + +Opal.modules["opal/regexp_anchors"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $const_set = Opal.const_set; + + Opal.add_stubs('new'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Opal'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $const_set(self, 'REGEXP_START', "^"); + $const_set(self, 'REGEXP_END', "$"); + $const_set(self, 'FORBIDDEN_STARTING_IDENTIFIER_CHARS', "\\u0001-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"); + $const_set(self, 'FORBIDDEN_ENDING_IDENTIFIER_CHARS', "\\u0001-\\u0020\\u0022-\\u002F\\u003A-\\u003E\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"); + $const_set(self, 'INLINE_IDENTIFIER_REGEXP', $$('Regexp').$new("[^" + ($$$(self, 'FORBIDDEN_STARTING_IDENTIFIER_CHARS')) + "]*[^" + ($$$(self, 'FORBIDDEN_ENDING_IDENTIFIER_CHARS')) + "]")); + $const_set(self, 'FORBIDDEN_CONST_NAME_CHARS', "\\u0001-\\u0020\\u0021-\\u002F\\u003B-\\u003F\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"); + return $const_set(self, 'CONST_NAME_REGEXP', $$('Regexp').$new("" + ($$$(self, 'REGEXP_START')) + "(::)?[A-Z][^" + ($$$(self, 'FORBIDDEN_CONST_NAME_CHARS')) + "]*" + ($$$(self, 'REGEXP_END')))); + })($nesting[0], $nesting) +}; + +Opal.modules["opal/mini"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $Object = Opal.Object; + + Opal.add_stubs('require'); + + $Object.$require("opal/base"); + $Object.$require("corelib/nil"); + $Object.$require("corelib/boolean"); + $Object.$require("corelib/string"); + $Object.$require("corelib/comparable"); + $Object.$require("corelib/enumerable"); + $Object.$require("corelib/enumerator"); + $Object.$require("corelib/array"); + $Object.$require("corelib/hash"); + $Object.$require("corelib/number"); + $Object.$require("corelib/range"); + $Object.$require("corelib/proc"); + $Object.$require("corelib/method"); + $Object.$require("corelib/regexp"); + $Object.$require("corelib/variables"); + $Object.$require("corelib/io"); + return $Object.$require("opal/regexp_anchors"); +}; + +Opal.modules["corelib/kernel/format"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $$$ = Opal.$$$, $coerce_to = Opal.coerce_to, $module = Opal.module, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $Opal = Opal.Opal, $Kernel = Opal.Kernel, $gvars = Opal.gvars, $def = Opal.def, $alias = Opal.alias; + + Opal.add_stubs('respond_to?,[],==,length,coerce_to?,nil?,to_a,raise,to_int,fetch,Integer,Float,to_ary,to_str,inspect,to_s'); + return (function($base) { + var self = $module($base, 'Kernel'); + + + + + $def(self, '$format', function $$format(format_string, $a) { + var $post_args, args, ary = nil; + if ($gvars.DEBUG == null) $gvars.DEBUG = nil; + + + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + if (($eqeq(args.$length(), 1) && ($truthy(args['$[]'](0)['$respond_to?']("to_ary"))))) { + + ary = $Opal['$coerce_to?'](args['$[]'](0), $$$('Array'), "to_ary"); + if (!$truthy(ary['$nil?']())) { + args = ary.$to_a() + }; + }; + + var result = '', + //used for slicing: + begin_slice = 0, + end_slice, + //used for iterating over the format string: + i, + len = format_string.length, + //used for processing field values: + arg, + str, + //used for processing %g and %G fields: + exponent, + //used for keeping track of width and precision: + width, + precision, + //used for holding temporary values: + tmp_num, + //used for processing %{} and %<> fileds: + hash_parameter_key, + closing_brace_char, + //used for processing %b, %B, %o, %x, and %X fields: + base_number, + base_prefix, + base_neg_zero_regex, + base_neg_zero_digit, + //used for processing arguments: + next_arg, + seq_arg_num = 1, + pos_arg_num = 0, + //used for keeping track of flags: + flags, + FNONE = 0, + FSHARP = 1, + FMINUS = 2, + FPLUS = 4, + FZERO = 8, + FSPACE = 16, + FWIDTH = 32, + FPREC = 64, + FPREC0 = 128; + + function CHECK_FOR_FLAGS() { + if (flags&FWIDTH) { $Kernel.$raise($$$('ArgumentError'), "flag after width") } + if (flags&FPREC0) { $Kernel.$raise($$$('ArgumentError'), "flag after precision") } + } + + function CHECK_FOR_WIDTH() { + if (flags&FWIDTH) { $Kernel.$raise($$$('ArgumentError'), "width given twice") } + if (flags&FPREC0) { $Kernel.$raise($$$('ArgumentError'), "width after precision") } + } + + function GET_NTH_ARG(num) { + if (num >= args.length) { $Kernel.$raise($$$('ArgumentError'), "too few arguments") } + return args[num]; + } + + function GET_NEXT_ARG() { + switch (pos_arg_num) { + case -1: $Kernel.$raise($$$('ArgumentError'), "unnumbered(" + (seq_arg_num) + ") mixed with numbered") // raise + case -2: $Kernel.$raise($$$('ArgumentError'), "unnumbered(" + (seq_arg_num) + ") mixed with named") // raise + } + pos_arg_num = seq_arg_num++; + return GET_NTH_ARG(pos_arg_num - 1); + } + + function GET_POS_ARG(num) { + if (pos_arg_num > 0) { + $Kernel.$raise($$$('ArgumentError'), "numbered(" + (num) + ") after unnumbered(" + (pos_arg_num) + ")") + } + if (pos_arg_num === -2) { + $Kernel.$raise($$$('ArgumentError'), "numbered(" + (num) + ") after named") + } + if (num < 1) { + $Kernel.$raise($$$('ArgumentError'), "invalid index - " + (num) + "$") + } + pos_arg_num = -1; + return GET_NTH_ARG(num - 1); + } + + function GET_ARG() { + return (next_arg === undefined ? GET_NEXT_ARG() : next_arg); + } + + function READ_NUM(label) { + var num, str = ''; + for (;; i++) { + if (i === len) { + $Kernel.$raise($$$('ArgumentError'), "malformed format string - %*[0-9]") + } + if (format_string.charCodeAt(i) < 48 || format_string.charCodeAt(i) > 57) { + i--; + num = parseInt(str, 10) || 0; + if (num > 2147483647) { + $Kernel.$raise($$$('ArgumentError'), "" + (label) + " too big") + } + return num; + } + str += format_string.charAt(i); + } + } + + function READ_NUM_AFTER_ASTER(label) { + var arg, num = READ_NUM(label); + if (format_string.charAt(i + 1) === '$') { + i++; + arg = GET_POS_ARG(num); + } else { + arg = GET_NEXT_ARG(); + } + return (arg).$to_int(); + } + + for (i = format_string.indexOf('%'); i !== -1; i = format_string.indexOf('%', i)) { + str = undefined; + + flags = FNONE; + width = -1; + precision = -1; + next_arg = undefined; + + end_slice = i; + + i++; + + switch (format_string.charAt(i)) { + case '%': + begin_slice = i; + // no-break + case '': + case '\n': + case '\0': + i++; + continue; + } + + format_sequence: for (; i < len; i++) { + switch (format_string.charAt(i)) { + + case ' ': + CHECK_FOR_FLAGS(); + flags |= FSPACE; + continue format_sequence; + + case '#': + CHECK_FOR_FLAGS(); + flags |= FSHARP; + continue format_sequence; + + case '+': + CHECK_FOR_FLAGS(); + flags |= FPLUS; + continue format_sequence; + + case '-': + CHECK_FOR_FLAGS(); + flags |= FMINUS; + continue format_sequence; + + case '0': + CHECK_FOR_FLAGS(); + flags |= FZERO; + continue format_sequence; + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + tmp_num = READ_NUM('width'); + if (format_string.charAt(i + 1) === '$') { + if (i + 2 === len) { + str = '%'; + i++; + break format_sequence; + } + if (next_arg !== undefined) { + $Kernel.$raise($$$('ArgumentError'), "value given twice - %" + (tmp_num) + "$") + } + next_arg = GET_POS_ARG(tmp_num); + i++; + } else { + CHECK_FOR_WIDTH(); + flags |= FWIDTH; + width = tmp_num; + } + continue format_sequence; + + case '<': + case '\{': + closing_brace_char = (format_string.charAt(i) === '<' ? '>' : '\}'); + hash_parameter_key = ''; + + i++; + + for (;; i++) { + if (i === len) { + $Kernel.$raise($$$('ArgumentError'), "malformed name - unmatched parenthesis") + } + if (format_string.charAt(i) === closing_brace_char) { + + if (pos_arg_num > 0) { + $Kernel.$raise($$$('ArgumentError'), "named " + (hash_parameter_key) + " after unnumbered(" + (pos_arg_num) + ")") + } + if (pos_arg_num === -1) { + $Kernel.$raise($$$('ArgumentError'), "named " + (hash_parameter_key) + " after numbered") + } + pos_arg_num = -2; + + if (args[0] === undefined || !args[0].$$is_hash) { + $Kernel.$raise($$$('ArgumentError'), "one hash required") + } + + next_arg = (args[0]).$fetch(hash_parameter_key); + + if (closing_brace_char === '>') { + continue format_sequence; + } else { + str = next_arg.toString(); + if (precision !== -1) { str = str.slice(0, precision); } + if (flags&FMINUS) { + while (str.length < width) { str = str + ' '; } + } else { + while (str.length < width) { str = ' ' + str; } + } + break format_sequence; + } + } + hash_parameter_key += format_string.charAt(i); + } + // raise + + case '*': + i++; + CHECK_FOR_WIDTH(); + flags |= FWIDTH; + width = READ_NUM_AFTER_ASTER('width'); + if (width < 0) { + flags |= FMINUS; + width = -width; + } + continue format_sequence; + + case '.': + if (flags&FPREC0) { + $Kernel.$raise($$$('ArgumentError'), "precision given twice") + } + flags |= FPREC|FPREC0; + precision = 0; + i++; + if (format_string.charAt(i) === '*') { + i++; + precision = READ_NUM_AFTER_ASTER('precision'); + if (precision < 0) { + flags &= ~FPREC; + } + continue format_sequence; + } + precision = READ_NUM('precision'); + continue format_sequence; + + case 'd': + case 'i': + case 'u': + arg = $Kernel.$Integer(GET_ARG()); + if (arg >= 0) { + str = arg.toString(); + while (str.length < precision) { str = '0' + str; } + if (flags&FMINUS) { + if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } + while (str.length < width) { str = str + ' '; } + } else { + if (flags&FZERO && precision === -1) { + while (str.length < width - ((flags&FPLUS || flags&FSPACE) ? 1 : 0)) { str = '0' + str; } + if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } + } else { + if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } + while (str.length < width) { str = ' ' + str; } + } + } + } else { + str = (-arg).toString(); + while (str.length < precision) { str = '0' + str; } + if (flags&FMINUS) { + str = '-' + str; + while (str.length < width) { str = str + ' '; } + } else { + if (flags&FZERO && precision === -1) { + while (str.length < width - 1) { str = '0' + str; } + str = '-' + str; + } else { + str = '-' + str; + while (str.length < width) { str = ' ' + str; } + } + } + } + break format_sequence; + + case 'b': + case 'B': + case 'o': + case 'x': + case 'X': + switch (format_string.charAt(i)) { + case 'b': + case 'B': + base_number = 2; + base_prefix = '0b'; + base_neg_zero_regex = /^1+/; + base_neg_zero_digit = '1'; + break; + case 'o': + base_number = 8; + base_prefix = '0'; + base_neg_zero_regex = /^3?7+/; + base_neg_zero_digit = '7'; + break; + case 'x': + case 'X': + base_number = 16; + base_prefix = '0x'; + base_neg_zero_regex = /^f+/; + base_neg_zero_digit = 'f'; + break; + } + arg = $Kernel.$Integer(GET_ARG()); + if (arg >= 0) { + str = arg.toString(base_number); + while (str.length < precision) { str = '0' + str; } + if (flags&FMINUS) { + if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } + if (flags&FSHARP && arg !== 0) { str = base_prefix + str; } + while (str.length < width) { str = str + ' '; } + } else { + if (flags&FZERO && precision === -1) { + while (str.length < width - ((flags&FPLUS || flags&FSPACE) ? 1 : 0) - ((flags&FSHARP && arg !== 0) ? base_prefix.length : 0)) { str = '0' + str; } + if (flags&FSHARP && arg !== 0) { str = base_prefix + str; } + if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } + } else { + if (flags&FSHARP && arg !== 0) { str = base_prefix + str; } + if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } + while (str.length < width) { str = ' ' + str; } + } + } + } else { + if (flags&FPLUS || flags&FSPACE) { + str = (-arg).toString(base_number); + while (str.length < precision) { str = '0' + str; } + if (flags&FMINUS) { + if (flags&FSHARP) { str = base_prefix + str; } + str = '-' + str; + while (str.length < width) { str = str + ' '; } + } else { + if (flags&FZERO && precision === -1) { + while (str.length < width - 1 - (flags&FSHARP ? 2 : 0)) { str = '0' + str; } + if (flags&FSHARP) { str = base_prefix + str; } + str = '-' + str; + } else { + if (flags&FSHARP) { str = base_prefix + str; } + str = '-' + str; + while (str.length < width) { str = ' ' + str; } + } + } + } else { + str = (arg >>> 0).toString(base_number).replace(base_neg_zero_regex, base_neg_zero_digit); + while (str.length < precision - 2) { str = base_neg_zero_digit + str; } + if (flags&FMINUS) { + str = '..' + str; + if (flags&FSHARP) { str = base_prefix + str; } + while (str.length < width) { str = str + ' '; } + } else { + if (flags&FZERO && precision === -1) { + while (str.length < width - 2 - (flags&FSHARP ? base_prefix.length : 0)) { str = base_neg_zero_digit + str; } + str = '..' + str; + if (flags&FSHARP) { str = base_prefix + str; } + } else { + str = '..' + str; + if (flags&FSHARP) { str = base_prefix + str; } + while (str.length < width) { str = ' ' + str; } + } + } + } + } + if (format_string.charAt(i) === format_string.charAt(i).toUpperCase()) { + str = str.toUpperCase(); + } + break format_sequence; + + case 'f': + case 'e': + case 'E': + case 'g': + case 'G': + arg = $Kernel.$Float(GET_ARG()); + if (arg >= 0 || isNaN(arg)) { + if (arg === Infinity) { + str = 'Inf'; + } else { + switch (format_string.charAt(i)) { + case 'f': + str = arg.toFixed(precision === -1 ? 6 : precision); + break; + case 'e': + case 'E': + str = arg.toExponential(precision === -1 ? 6 : precision); + break; + case 'g': + case 'G': + str = arg.toExponential(); + exponent = parseInt(str.split('e')[1], 10); + if (!(exponent < -4 || exponent >= (precision === -1 ? 6 : precision))) { + str = arg.toPrecision(precision === -1 ? (flags&FSHARP ? 6 : undefined) : precision); + } + break; + } + } + if (flags&FMINUS) { + if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } + while (str.length < width) { str = str + ' '; } + } else { + if (flags&FZERO && arg !== Infinity && !isNaN(arg)) { + while (str.length < width - ((flags&FPLUS || flags&FSPACE) ? 1 : 0)) { str = '0' + str; } + if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } + } else { + if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; } + while (str.length < width) { str = ' ' + str; } + } + } + } else { + if (arg === -Infinity) { + str = 'Inf'; + } else { + switch (format_string.charAt(i)) { + case 'f': + str = (-arg).toFixed(precision === -1 ? 6 : precision); + break; + case 'e': + case 'E': + str = (-arg).toExponential(precision === -1 ? 6 : precision); + break; + case 'g': + case 'G': + str = (-arg).toExponential(); + exponent = parseInt(str.split('e')[1], 10); + if (!(exponent < -4 || exponent >= (precision === -1 ? 6 : precision))) { + str = (-arg).toPrecision(precision === -1 ? (flags&FSHARP ? 6 : undefined) : precision); + } + break; + } + } + if (flags&FMINUS) { + str = '-' + str; + while (str.length < width) { str = str + ' '; } + } else { + if (flags&FZERO && arg !== -Infinity) { + while (str.length < width - 1) { str = '0' + str; } + str = '-' + str; + } else { + str = '-' + str; + while (str.length < width) { str = ' ' + str; } + } + } + } + if (format_string.charAt(i) === format_string.charAt(i).toUpperCase() && arg !== Infinity && arg !== -Infinity && !isNaN(arg)) { + str = str.toUpperCase(); + } + str = str.replace(/([eE][-+]?)([0-9])$/, '$10$2'); + break format_sequence; + + case 'a': + case 'A': + // Not implemented because there are no specs for this field type. + $Kernel.$raise($$$('NotImplementedError'), "`A` and `a` format field types are not implemented in Opal yet") + // raise + + case 'c': + arg = GET_ARG(); + if ((arg)['$respond_to?']("to_ary")) { arg = (arg).$to_ary()[0]; } + if ((arg)['$respond_to?']("to_str")) { + str = (arg).$to_str(); + } else { + str = String.fromCharCode($coerce_to(arg, $$$('Integer'), 'to_int')); + } + if (str.length !== 1) { + $Kernel.$raise($$$('ArgumentError'), "%c requires a character") + } + if (flags&FMINUS) { + while (str.length < width) { str = str + ' '; } + } else { + while (str.length < width) { str = ' ' + str; } + } + break format_sequence; + + case 'p': + str = (GET_ARG()).$inspect(); + if (precision !== -1) { str = str.slice(0, precision); } + if (flags&FMINUS) { + while (str.length < width) { str = str + ' '; } + } else { + while (str.length < width) { str = ' ' + str; } + } + break format_sequence; + + case 's': + str = (GET_ARG()).$to_s(); + if (precision !== -1) { str = str.slice(0, precision); } + if (flags&FMINUS) { + while (str.length < width) { str = str + ' '; } + } else { + while (str.length < width) { str = ' ' + str; } + } + break format_sequence; + + default: + $Kernel.$raise($$$('ArgumentError'), "malformed format string - %" + (format_string.charAt(i))) + } + } + + if (str === undefined) { + $Kernel.$raise($$$('ArgumentError'), "malformed format string - %") + } + + result += format_string.slice(begin_slice, end_slice) + str; + begin_slice = i + 1; + } + + if ($gvars.DEBUG && pos_arg_num >= 0 && seq_arg_num < args.length) { + $Kernel.$raise($$$('ArgumentError'), "too many arguments for format string") + } + + return result + format_string.slice(begin_slice); + ; + }, -2); + return $alias(self, "sprintf", "format"); + })('::') +}; + +Opal.modules["corelib/string/encoding"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $hash2 = Opal.hash2, $rb_plus = Opal.rb_plus, $truthy = Opal.truthy, $send = Opal.send, $defs = Opal.defs, $eqeq = Opal.eqeq, $def = Opal.def, $Kernel = Opal.Kernel, $Opal = Opal.Opal, $rb_lt = Opal.rb_lt, $alias = Opal.alias, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $writer = nil; + + Opal.add_stubs('require,+,[],clone,initialize,new,instance_eval,to_proc,each,const_set,tr,==,default_external,attr_accessor,singleton_class,attr_reader,raise,register,length,bytes,force_encoding,dup,bytesize,enum_for,each_byte,to_a,each_char,each_codepoint,coerce_to!,find,<,default_external=,-'); + + self.$require("corelib/string"); + (function($base, $super) { + var self = $klass($base, $super, 'Encoding'); + + var $proto = self.$$prototype; + + $proto.ascii = $proto.dummy = $proto.name = nil; + + $defs(self, '$register', function $$register(name, options) { + var block = $$register.$$p || nil, self = this, names = nil, $ret_or_1 = nil, ascii = nil, dummy = nil, encoding = nil, register = nil; + + delete $$register.$$p; + + ; + + if (options == null) options = $hash2([], {});; + names = $rb_plus([name], ($truthy(($ret_or_1 = options['$[]']("aliases"))) ? ($ret_or_1) : ([]))); + ascii = ($truthy(($ret_or_1 = options['$[]']("ascii"))) && ($ret_or_1)); + dummy = ($truthy(($ret_or_1 = options['$[]']("dummy"))) && ($ret_or_1)); + if ($truthy(options['$[]']("inherits"))) { + + encoding = options['$[]']("inherits").$clone(); + encoding.$initialize(name, names, ascii, dummy); + } else { + encoding = self.$new(name, names, ascii, dummy) + }; + if ((block !== nil)) { + $send(encoding, 'instance_eval', [], block.$to_proc()) + }; + register = Opal.encodings; + return $send(names, 'each', [], function $$1(encoding_name){var self = $$1.$$s == null ? this : $$1.$$s; + + + + if (encoding_name == null) encoding_name = nil;; + self.$const_set(encoding_name.$tr("-", "_"), encoding); + return register[encoding_name] = encoding;}, {$$arity: 1, $$s: self}); + }, -2); + $defs(self, '$find', function $$find(name) { + var self = this; + + + if ($eqeq(name, "default_external")) { + return self.$default_external() + }; + return Opal.find_encoding(name);; + }, 1); + self.$singleton_class().$attr_accessor("default_external"); + self.$attr_reader("name", "names"); + + $def(self, '$initialize', function $$initialize(name, names, ascii, dummy) { + var self = this; + + + self.name = name; + self.names = names; + self.ascii = ascii; + return (self.dummy = dummy); + }, 4); + + $def(self, '$ascii_compatible?', function $Encoding_ascii_compatible$ques$2() { + var self = this; + + return self.ascii + }, 0); + + $def(self, '$dummy?', function $Encoding_dummy$ques$3() { + var self = this; + + return self.dummy + }, 0); + + $def(self, '$binary?', function $Encoding_binary$ques$4() { + + return false + }, 0); + + $def(self, '$to_s', function $$to_s() { + var self = this; + + return self.name + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return "#" + }, 0); + + $def(self, '$charsize', function $$charsize(string) { + + + var len = 0; + for (var i = 0, length = string.length; i < length; i++) { + var charcode = string.charCodeAt(i); + if (!(charcode >= 0xD800 && charcode <= 0xDBFF)) { + len++; + } + } + return len; + + }, 1); + + $def(self, '$each_char', function $$each_char(string) { + var block = $$each_char.$$p || nil; + + delete $$each_char.$$p; + + ; + + var low_surrogate = ""; + for (var i = 0, length = string.length; i < length; i++) { + var charcode = string.charCodeAt(i); + var chr = string.charAt(i); + if (charcode >= 0xDC00 && charcode <= 0xDFFF) { + low_surrogate = chr; + continue; + } + else if (charcode >= 0xD800 && charcode <= 0xDBFF) { + chr = low_surrogate + chr; + } + if (string.encoding.name != "UTF-8") { + chr = new String(chr); + chr.encoding = string.encoding; + } + Opal.yield1(block, chr); + } + ; + }, 1); + + $def(self, '$each_byte', function $$each_byte($a) { + var $post_args, $rest_arg; + + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return $Kernel.$raise($$$('NotImplementedError')); + }, -1); + + $def(self, '$bytesize', function $$bytesize($a) { + var $post_args, $rest_arg; + + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return $Kernel.$raise($$$('NotImplementedError')); + }, -1); + $klass('::', $$$('StandardError'), 'EncodingError'); + return ($klass('::', $$$('EncodingError'), 'CompatibilityError'), nil); + })('::', null); + $send($$$('Encoding'), 'register', ["UTF-8", $hash2(["aliases", "ascii"], {"aliases": ["CP65001"], "ascii": true})], function $$5(){var self = $$5.$$s == null ? this : $$5.$$s; + + + + $def(self, '$each_byte', function $$each_byte(string) { + var block = $$each_byte.$$p || nil; + + delete $$each_byte.$$p; + + ; + + // Taken from: https://github.com/feross/buffer/blob/f52dffd9df0445b93c0c9065c2f8f0f46b2c729a/index.js#L1954-L2032 + var units = Infinity; + var codePoint; + var length = string.length; + var leadSurrogate = null; + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i); + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) { + Opal.yield1(block, 0xEF); + Opal.yield1(block, 0xBF); + Opal.yield1(block, 0xBD); + } + continue; + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) { + Opal.yield1(block, 0xEF); + Opal.yield1(block, 0xBF); + Opal.yield1(block, 0xBD); + } + continue; + } + + // valid lead + leadSurrogate = codePoint; + + continue; + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) { + Opal.yield1(block, 0xEF); + Opal.yield1(block, 0xBF); + Opal.yield1(block, 0xBD); + } + leadSurrogate = codePoint; + continue; + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) { + Opal.yield1(block, 0xEF); + Opal.yield1(block, 0xBF); + Opal.yield1(block, 0xBD); + } + } + + leadSurrogate = null; + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break; + Opal.yield1(block, codePoint); + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break; + Opal.yield1(block, codePoint >> 0x6 | 0xC0); + Opal.yield1(block, codePoint & 0x3F | 0x80); + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break; + Opal.yield1(block, codePoint >> 0xC | 0xE0); + Opal.yield1(block, codePoint >> 0x6 & 0x3F | 0x80); + Opal.yield1(block, codePoint & 0x3F | 0x80); + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break; + Opal.yield1(block, codePoint >> 0x12 | 0xF0); + Opal.yield1(block, codePoint >> 0xC & 0x3F | 0x80); + Opal.yield1(block, codePoint >> 0x6 & 0x3F | 0x80); + Opal.yield1(block, codePoint & 0x3F | 0x80); + } else { + // Invalid code point + } + } + ; + }, 1); + return $def(self, '$bytesize', function $$bytesize(string) { + + return string.$bytes().$length() + }, 1);}, {$$arity: 0, $$s: self}); + $send($$$('Encoding'), 'register', ["UTF-16LE"], function $$6(){var self = $$6.$$s == null ? this : $$6.$$s; + + + + $def(self, '$each_byte', function $$each_byte(string) { + var block = $$each_byte.$$p || nil; + + delete $$each_byte.$$p; + + ; + + for (var i = 0, length = string.length; i < length; i++) { + var code = string.charCodeAt(i); + + Opal.yield1(block, code & 0xff); + Opal.yield1(block, code >> 8); + } + ; + }, 1); + return $def(self, '$bytesize', function $$bytesize(string) { + + return string.length * 2; + }, 1);}, {$$arity: 0, $$s: self}); + $send($$$('Encoding'), 'register', ["UTF-16BE", $hash2(["inherits"], {"inherits": $$$($$$('Encoding'), 'UTF_16LE')})], function $$7(){var self = $$7.$$s == null ? this : $$7.$$s; + + return $def(self, '$each_byte', function $$each_byte(string) { + var block = $$each_byte.$$p || nil; + + delete $$each_byte.$$p; + + ; + + for (var i = 0, length = string.length; i < length; i++) { + var code = string.charCodeAt(i); + + Opal.yield1(block, code >> 8); + Opal.yield1(block, code & 0xff); + } + ; + }, 1)}, {$$arity: 0, $$s: self}); + $send($$$('Encoding'), 'register', ["UTF-32LE"], function $$8(){var self = $$8.$$s == null ? this : $$8.$$s; + + + + $def(self, '$each_byte', function $$each_byte(string) { + var block = $$each_byte.$$p || nil; + + delete $$each_byte.$$p; + + ; + + for (var i = 0, length = string.length; i < length; i++) { + var code = string.charCodeAt(i); + + Opal.yield1(block, code & 0xff); + Opal.yield1(block, code >> 8); + Opal.yield1(block, 0); + Opal.yield1(block, 0); + } + ; + }, 1); + return $def(self, '$bytesize', function $$bytesize(string) { + + return string.length * 4; + }, 1);}, {$$arity: 0, $$s: self}); + $send($$$('Encoding'), 'register', ["UTF-32BE", $hash2(["inherits"], {"inherits": $$$($$$('Encoding'), 'UTF_32LE')})], function $$9(){var self = $$9.$$s == null ? this : $$9.$$s; + + return $def(self, '$each_byte', function $$each_byte(string) { + var block = $$each_byte.$$p || nil; + + delete $$each_byte.$$p; + + ; + + for (var i = 0, length = string.length; i < length; i++) { + var code = string.charCodeAt(i); + + Opal.yield1(block, 0); + Opal.yield1(block, 0); + Opal.yield1(block, code >> 8); + Opal.yield1(block, code & 0xff); + } + ; + }, 1)}, {$$arity: 0, $$s: self}); + $send($$$('Encoding'), 'register', ["ASCII-8BIT", $hash2(["aliases", "ascii"], {"aliases": ["BINARY"], "ascii": true})], function $$10(){var self = $$10.$$s == null ? this : $$10.$$s; + + + + $def(self, '$each_char', function $$each_char(string) { + var block = $$each_char.$$p || nil; + + delete $$each_char.$$p; + + ; + + for (var i = 0, length = string.length; i < length; i++) { + var chr = new String(string.charAt(i)); + chr.encoding = string.encoding; + Opal.yield1(block, chr); + } + ; + }, 1); + + $def(self, '$charsize', function $$charsize(string) { + + return string.length; + }, 1); + + $def(self, '$each_byte', function $$each_byte(string) { + var block = $$each_byte.$$p || nil; + + delete $$each_byte.$$p; + + ; + + for (var i = 0, length = string.length; i < length; i++) { + var code = string.charCodeAt(i); + Opal.yield1(block, code & 0xff); + } + ; + }, 1); + + $def(self, '$bytesize', function $$bytesize(string) { + + return string.length; + }, 1); + return $def(self, '$binary?', function $binary$ques$11() { + + return true + }, 0);}, {$$arity: 0, $$s: self}); + $$$('Encoding').$register("ISO-8859-1", $hash2(["aliases", "ascii", "inherits"], {"aliases": ["ISO8859-1"], "ascii": true, "inherits": $$$($$$('Encoding'), 'ASCII_8BIT')})); + $$$('Encoding').$register("US-ASCII", $hash2(["aliases", "ascii", "inherits"], {"aliases": ["ASCII"], "ascii": true, "inherits": $$$($$$('Encoding'), 'ASCII_8BIT')})); + (function($base, $super) { + var self = $klass($base, $super, 'String'); + + var $proto = self.$$prototype; + + $proto.internal_encoding = $proto.bytes = $proto.encoding = nil; + + self.$attr_reader("encoding"); + self.$attr_reader("internal_encoding"); + Opal.prop(String.prototype, 'bytes', nil); + Opal.prop(String.prototype, 'encoding', $$$($$$('Encoding'), 'UTF_8')); + Opal.prop(String.prototype, 'internal_encoding', $$$($$$('Encoding'), 'UTF_8')); + + $def(self, '$b', function $$b() { + var self = this; + + return self.$dup().$force_encoding("binary") + }, 0); + + $def(self, '$bytesize', function $$bytesize() { + var self = this; + + return self.internal_encoding.$bytesize(self) + }, 0); + + $def(self, '$each_byte', function $$each_byte() { + var block = $$each_byte.$$p || nil, self = this; + + delete $$each_byte.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["each_byte"], function $$12(){var self = $$12.$$s == null ? this : $$12.$$s; + + return self.$bytesize()}, {$$arity: 0, $$s: self}) + }; + $send(self.internal_encoding, 'each_byte', [self], block.$to_proc()); + return self; + }, 0); + + $def(self, '$bytes', function $$bytes() { + var self = this, $ret_or_1 = nil; + + + + if (typeof self === 'string') { + return (new String(self)).$each_byte().$to_a(); + } + ; + self.bytes = ($truthy(($ret_or_1 = self.bytes)) ? ($ret_or_1) : (self.$each_byte().$to_a())); + return self.bytes.$dup(); + }, 0); + + $def(self, '$each_char', function $$each_char() { + var block = $$each_char.$$p || nil, self = this; + + delete $$each_char.$$p; + + ; + if (!(block !== nil)) { + return $send(self, 'enum_for', ["each_char"], function $$13(){var self = $$13.$$s == null ? this : $$13.$$s; + + return self.$length()}, {$$arity: 0, $$s: self}) + }; + $send(self.encoding, 'each_char', [self], block.$to_proc()); + return self; + }, 0); + + $def(self, '$chars', function $$chars() { + var block = $$chars.$$p || nil, self = this; + + delete $$chars.$$p; + + ; + if (!$truthy(block)) { + return self.$each_char().$to_a() + }; + return $send(self, 'each_char', [], block.$to_proc()); + }, 0); + + $def(self, '$each_codepoint', function $$each_codepoint() { + var block = $$each_codepoint.$$p || nil, self = this; + + delete $$each_codepoint.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("each_codepoint") + }; + + for (var i = 0, length = self.length; i < length; i++) { + Opal.yield1(block, self.codePointAt(i)); + } + ; + return self; + }, 0); + + $def(self, '$codepoints', function $$codepoints() { + var block = $$codepoints.$$p || nil, self = this; + + delete $$codepoints.$$p; + + ; + if ((block !== nil)) { + return $send(self, 'each_codepoint', [], block.$to_proc()) + }; + return self.$each_codepoint().$to_a(); + }, 0); + + $def(self, '$encode', function $$encode(encoding) { + var self = this; + + return Opal.enc(self, encoding); + }, 1); + + $def(self, '$force_encoding', function $$force_encoding(encoding) { + var self = this; + + + var str = self; + + if (encoding === str.encoding) { return str; } + + encoding = $Opal['$coerce_to!'](encoding, $$$('String'), "to_s"); + encoding = $$$('Encoding').$find(encoding); + + if (encoding === str.encoding) { return str; } + + str = Opal.set_encoding(str, encoding); + + return str; + + }, 1); + + $def(self, '$getbyte', function $$getbyte(idx) { + var self = this, string_bytes = nil; + + + string_bytes = self.$bytes(); + idx = $Opal['$coerce_to!'](idx, $$$('Integer'), "to_int"); + if ($truthy($rb_lt(string_bytes.$length(), idx))) { + return nil + }; + return string_bytes['$[]'](idx); + }, 1); + + $def(self, '$initialize_copy', function $$initialize_copy(other) { + + return "\n" + " self.encoding = other.encoding;\n" + " self.internal_encoding = other.internal_encoding;\n" + " " + }, 1); + + $def(self, '$length', function $$length() { + var self = this; + + return self.length; + }, 0); + $alias(self, "size", "length"); + return $def(self, '$valid_encoding?', function $String_valid_encoding$ques$14() { + + return true + }, 0); + })('::', null); + + $writer = [$$$($$('Encoding'), 'UTF_8')]; + $send($$$('Encoding'), 'default_external=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; +}; + +Opal.modules["corelib/math"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $type_error = Opal.type_error, $module = Opal.module, $const_set = Opal.const_set, $Class = Opal.Class, $Kernel = Opal.Kernel, $defs = Opal.defs, $def = Opal.def, $truthy = Opal.truthy, $rb_minus = Opal.rb_minus, $eqeqeq = Opal.eqeqeq, $rb_divide = Opal.rb_divide; + + Opal.add_stubs('new,raise,Float,Integer,module_function,checked,float!,===,gamma,-,integer!,/,infinite?'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Math'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $const_set(self, 'E', Math.E); + $const_set(self, 'PI', Math.PI); + $const_set(self, 'DomainError', $Class.$new($$$('StandardError'))); + $defs(self, '$checked', function $$checked(method, $a) { + var $post_args, args; + + + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + + if (isNaN(args[0]) || (args.length == 2 && isNaN(args[1]))) { + return NaN; + } + + var result = Math[method].apply(null, args); + + if (isNaN(result)) { + $Kernel.$raise($$('DomainError'), "Numerical argument is out of domain - \"" + (method) + "\""); + } + + return result; + ; + }, -2); + $defs(self, '$float!', function $Math_float$excl$1(value) { + + try { + return $Kernel.$Float(value) + } catch ($err) { + if (Opal.rescue($err, [$$$('ArgumentError')])) { + try { + return $Kernel.$raise($type_error(value, $$$('Float'))) + } finally { Opal.pop_exception(); } + } else { throw $err; } + } + }, 1); + $defs(self, '$integer!', function $Math_integer$excl$2(value) { + + try { + return $Kernel.$Integer(value) + } catch ($err) { + if (Opal.rescue($err, [$$$('ArgumentError')])) { + try { + return $Kernel.$raise($type_error(value, $$$('Integer'))) + } finally { Opal.pop_exception(); } + } else { throw $err; } + } + }, 1); + self.$module_function(); + + $def(self, '$acos', function $$acos(x) { + + return $$$('Math').$checked("acos", $$$('Math')['$float!'](x)) + }, 1); + if (!$truthy((typeof(Math.acosh) !== "undefined"))) { + + Math.acosh = function(x) { + return Math.log(x + Math.sqrt(x * x - 1)); + } + + }; + + $def(self, '$acosh', function $$acosh(x) { + + return $$$('Math').$checked("acosh", $$$('Math')['$float!'](x)) + }, 1); + + $def(self, '$asin', function $$asin(x) { + + return $$$('Math').$checked("asin", $$$('Math')['$float!'](x)) + }, 1); + if (!$truthy((typeof(Math.asinh) !== "undefined"))) { + + Math.asinh = function(x) { + return Math.log(x + Math.sqrt(x * x + 1)) + } + + }; + + $def(self, '$asinh', function $$asinh(x) { + + return $$$('Math').$checked("asinh", $$$('Math')['$float!'](x)) + }, 1); + + $def(self, '$atan', function $$atan(x) { + + return $$$('Math').$checked("atan", $$$('Math')['$float!'](x)) + }, 1); + + $def(self, '$atan2', function $$atan2(y, x) { + + return $$$('Math').$checked("atan2", $$$('Math')['$float!'](y), $$$('Math')['$float!'](x)) + }, 2); + if (!$truthy((typeof(Math.atanh) !== "undefined"))) { + + Math.atanh = function(x) { + return 0.5 * Math.log((1 + x) / (1 - x)); + } + + }; + + $def(self, '$atanh', function $$atanh(x) { + + return $$$('Math').$checked("atanh", $$$('Math')['$float!'](x)) + }, 1); + if (!$truthy((typeof(Math.cbrt) !== "undefined"))) { + + Math.cbrt = function(x) { + if (x == 0) { + return 0; + } + + if (x < 0) { + return -Math.cbrt(-x); + } + + var r = x, + ex = 0; + + while (r < 0.125) { + r *= 8; + ex--; + } + + while (r > 1.0) { + r *= 0.125; + ex++; + } + + r = (-0.46946116 * r + 1.072302) * r + 0.3812513; + + while (ex < 0) { + r *= 0.5; + ex++; + } + + while (ex > 0) { + r *= 2; + ex--; + } + + r = (2.0 / 3.0) * r + (1.0 / 3.0) * x / (r * r); + r = (2.0 / 3.0) * r + (1.0 / 3.0) * x / (r * r); + r = (2.0 / 3.0) * r + (1.0 / 3.0) * x / (r * r); + r = (2.0 / 3.0) * r + (1.0 / 3.0) * x / (r * r); + + return r; + } + + }; + + $def(self, '$cbrt', function $$cbrt(x) { + + return $$$('Math').$checked("cbrt", $$$('Math')['$float!'](x)) + }, 1); + + $def(self, '$cos', function $$cos(x) { + + return $$$('Math').$checked("cos", $$$('Math')['$float!'](x)) + }, 1); + if (!$truthy((typeof(Math.cosh) !== "undefined"))) { + + Math.cosh = function(x) { + return (Math.exp(x) + Math.exp(-x)) / 2; + } + + }; + + $def(self, '$cosh', function $$cosh(x) { + + return $$$('Math').$checked("cosh", $$$('Math')['$float!'](x)) + }, 1); + if (!$truthy((typeof(Math.erf) !== "undefined"))) { + + Opal.prop(Math, 'erf', function(x) { + var A1 = 0.254829592, + A2 = -0.284496736, + A3 = 1.421413741, + A4 = -1.453152027, + A5 = 1.061405429, + P = 0.3275911; + + var sign = 1; + + if (x < 0) { + sign = -1; + } + + x = Math.abs(x); + + var t = 1.0 / (1.0 + P * x); + var y = 1.0 - (((((A5 * t + A4) * t) + A3) * t + A2) * t + A1) * t * Math.exp(-x * x); + + return sign * y; + }); + + }; + + $def(self, '$erf', function $$erf(x) { + + return $$$('Math').$checked("erf", $$$('Math')['$float!'](x)) + }, 1); + if (!$truthy((typeof(Math.erfc) !== "undefined"))) { + + Opal.prop(Math, 'erfc', function(x) { + var z = Math.abs(x), + t = 1.0 / (0.5 * z + 1.0); + + var A1 = t * 0.17087277 + -0.82215223, + A2 = t * A1 + 1.48851587, + A3 = t * A2 + -1.13520398, + A4 = t * A3 + 0.27886807, + A5 = t * A4 + -0.18628806, + A6 = t * A5 + 0.09678418, + A7 = t * A6 + 0.37409196, + A8 = t * A7 + 1.00002368, + A9 = t * A8, + A10 = -z * z - 1.26551223 + A9; + + var a = t * Math.exp(A10); + + if (x < 0.0) { + return 2.0 - a; + } + else { + return a; + } + }); + + }; + + $def(self, '$erfc', function $$erfc(x) { + + return $$$('Math').$checked("erfc", $$$('Math')['$float!'](x)) + }, 1); + + $def(self, '$exp', function $$exp(x) { + + return $$$('Math').$checked("exp", $$$('Math')['$float!'](x)) + }, 1); + + $def(self, '$frexp', function $$frexp(x) { + + + x = $$('Math')['$float!'](x); + + if (isNaN(x)) { + return [NaN, 0]; + } + + var ex = Math.floor(Math.log(Math.abs(x)) / Math.log(2)) + 1, + frac = x / Math.pow(2, ex); + + return [frac, ex]; + ; + }, 1); + + $def(self, '$gamma', function $$gamma(n) { + + + n = $$('Math')['$float!'](n); + + var i, t, x, value, result, twoN, threeN, fourN, fiveN; + + var G = 4.7421875; + + var P = [ + 0.99999999999999709182, + 57.156235665862923517, + -59.597960355475491248, + 14.136097974741747174, + -0.49191381609762019978, + 0.33994649984811888699e-4, + 0.46523628927048575665e-4, + -0.98374475304879564677e-4, + 0.15808870322491248884e-3, + -0.21026444172410488319e-3, + 0.21743961811521264320e-3, + -0.16431810653676389022e-3, + 0.84418223983852743293e-4, + -0.26190838401581408670e-4, + 0.36899182659531622704e-5 + ]; + + + if (isNaN(n)) { + return NaN; + } + + if (n === 0 && 1 / n < 0) { + return -Infinity; + } + + if (n === -1 || n === -Infinity) { + $Kernel.$raise($$('DomainError'), "Numerical argument is out of domain - \"gamma\""); + } + + if ($$('Integer')['$==='](n)) { + if (n <= 0) { + return isFinite(n) ? Infinity : NaN; + } + + if (n > 171) { + return Infinity; + } + + value = n - 2; + result = n - 1; + + while (value > 1) { + result *= value; + value--; + } + + if (result == 0) { + result = 1; + } + + return result; + } + + if (n < 0.5) { + return Math.PI / (Math.sin(Math.PI * n) * $$$('Math').$gamma($rb_minus(1, n))); + } + + if (n >= 171.35) { + return Infinity; + } + + if (n > 85.0) { + twoN = n * n; + threeN = twoN * n; + fourN = threeN * n; + fiveN = fourN * n; + + return Math.sqrt(2 * Math.PI / n) * Math.pow((n / Math.E), n) * + (1 + 1 / (12 * n) + 1 / (288 * twoN) - 139 / (51840 * threeN) - + 571 / (2488320 * fourN) + 163879 / (209018880 * fiveN) + + 5246819 / (75246796800 * fiveN * n)); + } + + n -= 1; + x = P[0]; + + for (i = 1; i < P.length; ++i) { + x += P[i] / (n + i); + } + + t = n + G + 0.5; + + return Math.sqrt(2 * Math.PI) * Math.pow(t, n + 0.5) * Math.exp(-t) * x; + ; + }, 1); + if (!$truthy((typeof(Math.hypot) !== "undefined"))) { + + Math.hypot = function(x, y) { + return Math.sqrt(x * x + y * y) + } + + }; + + $def(self, '$hypot', function $$hypot(x, y) { + + return $$$('Math').$checked("hypot", $$$('Math')['$float!'](x), $$$('Math')['$float!'](y)) + }, 2); + + $def(self, '$ldexp', function $$ldexp(mantissa, exponent) { + + + mantissa = $$('Math')['$float!'](mantissa); + exponent = $$('Math')['$integer!'](exponent); + + if (isNaN(exponent)) { + $Kernel.$raise($$$('RangeError'), "float NaN out of range of integer"); + } + + return mantissa * Math.pow(2, exponent); + ; + }, 2); + + $def(self, '$lgamma', function $$lgamma(n) { + + + if (n == -1) { + return [Infinity, 1]; + } + else { + return [Math.log(Math.abs($$$('Math').$gamma(n))), $$$('Math').$gamma(n) < 0 ? -1 : 1]; + } + + }, 1); + + $def(self, '$log', function $$log(x, base) { + + + ; + if ($eqeqeq($$$('String'), x)) { + $Kernel.$raise($type_error(x, $$$('Float'))) + }; + if ($truthy(base == null)) { + return $$$('Math').$checked("log", $$$('Math')['$float!'](x)) + } else { + + if ($eqeqeq($$$('String'), base)) { + $Kernel.$raise($type_error(base, $$$('Float'))) + }; + return $rb_divide($$$('Math').$checked("log", $$$('Math')['$float!'](x)), $$$('Math').$checked("log", $$$('Math')['$float!'](base))); + }; + }, -2); + if (!$truthy((typeof(Math.log10) !== "undefined"))) { + + Math.log10 = function(x) { + return Math.log(x) / Math.LN10; + } + + }; + + $def(self, '$log10', function $$log10(x) { + + + if ($eqeqeq($$$('String'), x)) { + $Kernel.$raise($type_error(x, $$$('Float'))) + }; + return $$$('Math').$checked("log10", $$$('Math')['$float!'](x)); + }, 1); + if (!$truthy((typeof(Math.log2) !== "undefined"))) { + + Math.log2 = function(x) { + return Math.log(x) / Math.LN2; + } + + }; + + $def(self, '$log2', function $$log2(x) { + + + if ($eqeqeq($$$('String'), x)) { + $Kernel.$raise($type_error(x, $$$('Float'))) + }; + return $$$('Math').$checked("log2", $$$('Math')['$float!'](x)); + }, 1); + + $def(self, '$sin', function $$sin(x) { + + return $$$('Math').$checked("sin", $$$('Math')['$float!'](x)) + }, 1); + if (!$truthy((typeof(Math.sinh) !== "undefined"))) { + + Math.sinh = function(x) { + return (Math.exp(x) - Math.exp(-x)) / 2; + } + + }; + + $def(self, '$sinh', function $$sinh(x) { + + return $$$('Math').$checked("sinh", $$$('Math')['$float!'](x)) + }, 1); + + $def(self, '$sqrt', function $$sqrt(x) { + + return $$$('Math').$checked("sqrt", $$$('Math')['$float!'](x)) + }, 1); + + $def(self, '$tan', function $$tan(x) { + + + x = $$$('Math')['$float!'](x); + if ($truthy(x['$infinite?']())) { + return $$$($$$('Float'), 'NAN') + }; + return $$$('Math').$checked("tan", $$$('Math')['$float!'](x)); + }, 1); + if (!$truthy((typeof(Math.tanh) !== "undefined"))) { + + Math.tanh = function(x) { + if (x == Infinity) { + return 1; + } + else if (x == -Infinity) { + return -1; + } + else { + return (Math.exp(x) - Math.exp(-x)) / (Math.exp(x) + Math.exp(-x)); + } + } + + }; + return $def(self, '$tanh', function $$tanh(x) { + + return $$$('Math').$checked("tanh", $$$('Math')['$float!'](x)) + }, 1); + })('::', $nesting) +}; + +Opal.modules["corelib/complex/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $truthy = Opal.truthy, $def = Opal.def, $klass = Opal.klass; + + Opal.add_stubs('new,from_string'); + + (function($base, $parent_nesting) { + var self = $module($base, 'Kernel'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$Complex', function $$Complex(real, imag) { + + + + if (imag == null) imag = nil;; + if ($truthy(imag)) { + return $$('Complex').$new(real, imag) + } else { + return $$('Complex').$new(real, 0) + }; + }, -2) + })('::', $nesting); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'String'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$to_c', function $$to_c() { + var self = this; + + return $$('Complex').$from_string(self) + }, 0) + })('::', null, $nesting); +}; + +Opal.modules["corelib/complex"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $defs = Opal.defs, $rb_times = Opal.rb_times, $def = Opal.def, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $rb_divide = Opal.rb_divide, $eqeq = Opal.eqeq, $to_ary = Opal.to_ary, $rb_gt = Opal.rb_gt, $neqeq = Opal.neqeq, $const_set = Opal.const_set, $alias = Opal.alias; + + Opal.add_stubs('require,real?,===,raise,new,*,cos,sin,attr_reader,class,==,real,imag,Complex,-@,+,__coerced__,-,nan?,/,conj,abs2,quo,polar,exp,log,>,!=,divmod,**,hypot,atan2,lcm,denominator,finite?,infinite?,numerator,abs,arg,rationalize,to_f,to_i,to_r,inspect,zero?,positive?,Rational'); + + self.$require("corelib/numeric"); + self.$require("corelib/complex/base"); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Complex'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.real = $proto.imag = nil; + + $defs(self, '$rect', function $$rect(real, imag) { + var self = this; + + + + if (imag == null) imag = 0;; + if (!((($eqeqeq($$$('Numeric'), real) && ($truthy(real['$real?']()))) && ($eqeqeq($$$('Numeric'), imag))) && ($truthy(imag['$real?']())))) { + $Kernel.$raise($$$('TypeError'), "not a real") + }; + return self.$new(real, imag); + }, -2); + $defs(self, '$polar', function $$polar(r, theta) { + var self = this; + + + + if (theta == null) theta = 0;; + if (!((($eqeqeq($$$('Numeric'), r) && ($truthy(r['$real?']()))) && ($eqeqeq($$$('Numeric'), theta))) && ($truthy(theta['$real?']())))) { + $Kernel.$raise($$$('TypeError'), "not a real") + }; + return self.$new($rb_times(r, $$$('Math').$cos(theta)), $rb_times(r, $$$('Math').$sin(theta))); + }, -2); + self.$attr_reader("real", "imag"); + + $def(self, '$initialize', function $$initialize(real, imag) { + var self = this; + + + + if (imag == null) imag = 0;; + self.real = real; + return (self.imag = imag); + }, -2); + + $def(self, '$coerce', function $$coerce(other) { + var self = this; + + if ($eqeqeq($$$('Complex'), other)) { + return [other, self] + } else if (($eqeqeq($$$('Numeric'), other) && ($truthy(other['$real?']())))) { + return [$$$('Complex').$new(other, 0), self] + } else { + return $Kernel.$raise($$$('TypeError'), "" + (other.$class()) + " can't be coerced into Complex") + } + }, 1); + + $def(self, '$==', function $Complex_$eq_eq$1(other) { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq($$$('Complex'), other)) { + if ($truthy(($ret_or_1 = self.real['$=='](other.$real())))) { + return self.imag['$=='](other.$imag()) + } else { + return $ret_or_1 + } + } else if (($eqeqeq($$$('Numeric'), other) && ($truthy(other['$real?']())))) { + if ($truthy(($ret_or_1 = self.real['$=='](other)))) { + return self.imag['$=='](0) + } else { + return $ret_or_1 + } + } else { + return other['$=='](self) + } + }, 1); + + $def(self, '$-@', function $Complex_$minus$$2() { + var self = this; + + return $Kernel.$Complex(self.real['$-@'](), self.imag['$-@']()) + }, 0); + + $def(self, '$+', function $Complex_$plus$3(other) { + var self = this; + + if ($eqeqeq($$$('Complex'), other)) { + return $Kernel.$Complex($rb_plus(self.real, other.$real()), $rb_plus(self.imag, other.$imag())) + } else if (($eqeqeq($$$('Numeric'), other) && ($truthy(other['$real?']())))) { + return $Kernel.$Complex($rb_plus(self.real, other), self.imag) + } else { + return self.$__coerced__("+", other) + } + }, 1); + + $def(self, '$-', function $Complex_$minus$4(other) { + var self = this; + + if ($eqeqeq($$$('Complex'), other)) { + return $Kernel.$Complex($rb_minus(self.real, other.$real()), $rb_minus(self.imag, other.$imag())) + } else if (($eqeqeq($$$('Numeric'), other) && ($truthy(other['$real?']())))) { + return $Kernel.$Complex($rb_minus(self.real, other), self.imag) + } else { + return self.$__coerced__("-", other) + } + }, 1); + + $def(self, '$*', function $Complex_$$5(other) { + var self = this; + + if ($eqeqeq($$$('Complex'), other)) { + return $Kernel.$Complex($rb_minus($rb_times(self.real, other.$real()), $rb_times(self.imag, other.$imag())), $rb_plus($rb_times(self.real, other.$imag()), $rb_times(self.imag, other.$real()))) + } else if (($eqeqeq($$$('Numeric'), other) && ($truthy(other['$real?']())))) { + return $Kernel.$Complex($rb_times(self.real, other), $rb_times(self.imag, other)) + } else { + return self.$__coerced__("*", other) + } + }, 1); + + $def(self, '$/', function $Complex_$slash$6(other) { + var self = this; + + if ($eqeqeq($$$('Complex'), other)) { + if ((((($eqeqeq($$$('Number'), self.real) && ($truthy(self.real['$nan?']()))) || (($eqeqeq($$$('Number'), self.imag) && ($truthy(self.imag['$nan?']()))))) || (($eqeqeq($$$('Number'), other.$real()) && ($truthy(other.$real()['$nan?']()))))) || (($eqeqeq($$$('Number'), other.$imag()) && ($truthy(other.$imag()['$nan?']())))))) { + return $$$('Complex').$new($$$($$$('Float'), 'NAN'), $$$($$$('Float'), 'NAN')) + } else { + return $rb_divide($rb_times(self, other.$conj()), other.$abs2()) + } + } else if (($eqeqeq($$$('Numeric'), other) && ($truthy(other['$real?']())))) { + return $Kernel.$Complex(self.real.$quo(other), self.imag.$quo(other)) + } else { + return self.$__coerced__("/", other) + } + }, 1); + + $def(self, '$**', function $Complex_$$$7(other) { + var $a, $b, $c, $d, self = this, r = nil, theta = nil, ore = nil, oim = nil, nr = nil, ntheta = nil, x = nil, z = nil, n = nil, div = nil, mod = nil; + + + if ($eqeq(other, 0)) { + return $$$('Complex').$new(1, 0) + }; + if ($eqeqeq($$$('Complex'), other)) { + + $b = self.$polar(), $a = $to_ary($b), (r = ($a[0] == null ? nil : $a[0])), (theta = ($a[1] == null ? nil : $a[1])), $b; + ore = other.$real(); + oim = other.$imag(); + nr = $$$('Math').$exp($rb_minus($rb_times(ore, $$$('Math').$log(r)), $rb_times(oim, theta))); + ntheta = $rb_plus($rb_times(theta, ore), $rb_times(oim, $$$('Math').$log(r))); + return $$$('Complex').$polar(nr, ntheta); + } else if ($eqeqeq($$$('Integer'), other)) { + if ($truthy($rb_gt(other, 0))) { + + x = self; + z = x; + n = $rb_minus(other, 1); + while ($neqeq(n, 0)) { + + $c = n.$divmod(2), $b = $to_ary($c), (div = ($b[0] == null ? nil : $b[0])), (mod = ($b[1] == null ? nil : $b[1])), $c; + while ($eqeq(mod, 0)) { + + x = $Kernel.$Complex($rb_minus($rb_times(x.$real(), x.$real()), $rb_times(x.$imag(), x.$imag())), $rb_times($rb_times(2, x.$real()), x.$imag())); + n = div; + $d = n.$divmod(2), $c = $to_ary($d), (div = ($c[0] == null ? nil : $c[0])), (mod = ($c[1] == null ? nil : $c[1])), $d; + }; + z = $rb_times(z, x); + n = $rb_minus(n, 1); + }; + return z; + } else { + return $rb_divide($$$('Rational').$new(1, 1), self)['$**'](other['$-@']()) + } + } else if (($eqeqeq($$$('Float'), other) || ($eqeqeq($$$('Rational'), other)))) { + + $b = self.$polar(), $a = $to_ary($b), (r = ($a[0] == null ? nil : $a[0])), (theta = ($a[1] == null ? nil : $a[1])), $b; + return $$$('Complex').$polar(r['$**'](other), $rb_times(theta, other)); + } else { + return self.$__coerced__("**", other) + }; + }, 1); + + $def(self, '$abs', function $$abs() { + var self = this; + + return $$$('Math').$hypot(self.real, self.imag) + }, 0); + + $def(self, '$abs2', function $$abs2() { + var self = this; + + return $rb_plus($rb_times(self.real, self.real), $rb_times(self.imag, self.imag)) + }, 0); + + $def(self, '$angle', function $$angle() { + var self = this; + + return $$$('Math').$atan2(self.imag, self.real) + }, 0); + + $def(self, '$conj', function $$conj() { + var self = this; + + return $Kernel.$Complex(self.real, self.imag['$-@']()) + }, 0); + + $def(self, '$denominator', function $$denominator() { + var self = this; + + return self.real.$denominator().$lcm(self.imag.$denominator()) + }, 0); + + $def(self, '$eql?', function $Complex_eql$ques$8(other) { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = $$('Complex')['$==='](other))) ? (self.real.$class()['$=='](self.imag.$class())) : ($ret_or_2))))) { + return self['$=='](other) + } else { + return $ret_or_1 + } + }, 1); + + $def(self, '$fdiv', function $$fdiv(other) { + var self = this; + + + if (!$eqeqeq($$$('Numeric'), other)) { + $Kernel.$raise($$$('TypeError'), "" + (other.$class()) + " can't be coerced into Complex") + }; + return $rb_divide(self, other); + }, 1); + + $def(self, '$finite?', function $Complex_finite$ques$9() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.real['$finite?']()))) { + return self.imag['$finite?']() + } else { + return $ret_or_1 + } + }, 0); + + $def(self, '$hash', function $$hash() { + var self = this; + + return "Complex:" + (self.real) + ":" + (self.imag) + }, 0); + + $def(self, '$infinite?', function $Complex_infinite$ques$10() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.real['$infinite?']()))) { + return $ret_or_1 + } else { + return self.imag['$infinite?']() + } + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return "(" + (self) + ")" + }, 0); + + $def(self, '$numerator', function $$numerator() { + var self = this, d = nil; + + + d = self.$denominator(); + return $Kernel.$Complex($rb_times(self.real.$numerator(), $rb_divide(d, self.real.$denominator())), $rb_times(self.imag.$numerator(), $rb_divide(d, self.imag.$denominator()))); + }, 0); + + $def(self, '$polar', function $$polar() { + var self = this; + + return [self.$abs(), self.$arg()] + }, 0); + + $def(self, '$rationalize', function $$rationalize(eps) { + var self = this; + + + ; + + if (arguments.length > 1) { + $Kernel.$raise($$$('ArgumentError'), "wrong number of arguments (" + (arguments.length) + " for 0..1)"); + } + ; + if ($neqeq(self.imag, 0)) { + $Kernel.$raise($$$('RangeError'), "can't convert " + (self) + " into Rational") + }; + return self.$real().$rationalize(eps); + }, -1); + + $def(self, '$real?', function $Complex_real$ques$11() { + + return false + }, 0); + + $def(self, '$rect', function $$rect() { + var self = this; + + return [self.real, self.imag] + }, 0); + + $def(self, '$to_f', function $$to_f() { + var self = this; + + + if (!$eqeq(self.imag, 0)) { + $Kernel.$raise($$$('RangeError'), "can't convert " + (self) + " into Float") + }; + return self.real.$to_f(); + }, 0); + + $def(self, '$to_i', function $$to_i() { + var self = this; + + + if (!$eqeq(self.imag, 0)) { + $Kernel.$raise($$$('RangeError'), "can't convert " + (self) + " into Integer") + }; + return self.real.$to_i(); + }, 0); + + $def(self, '$to_r', function $$to_r() { + var self = this; + + + if (!$eqeq(self.imag, 0)) { + $Kernel.$raise($$$('RangeError'), "can't convert " + (self) + " into Rational") + }; + return self.real.$to_r(); + }, 0); + + $def(self, '$to_s', function $$to_s() { + var self = this, result = nil; + + + result = self.real.$inspect(); + result = $rb_plus(result, (((($eqeqeq($$$('Number'), self.imag) && ($truthy(self.imag['$nan?']()))) || ($truthy(self.imag['$positive?']()))) || ($truthy(self.imag['$zero?']()))) ? ("+") : ("-"))); + result = $rb_plus(result, self.imag.$abs().$inspect()); + if (($eqeqeq($$$('Number'), self.imag) && (($truthy(self.imag['$nan?']()) || ($truthy(self.imag['$infinite?']())))))) { + result = $rb_plus(result, "*") + }; + return $rb_plus(result, "i"); + }, 0); + $const_set($nesting[0], 'I', self.$new(0, 1)); + $defs(self, '$from_string', function $$from_string(str) { + + + var re = /[+-]?[\d_]+(\.[\d_]+)?(e\d+)?/, + match = str.match(re), + real, imag, denominator; + + function isFloat() { + return re.test(str); + } + + function cutFloat() { + var match = str.match(re); + var number = match[0]; + str = str.slice(number.length); + return number.replace(/_/g, ''); + } + + // handles both floats and rationals + function cutNumber() { + if (isFloat()) { + var numerator = parseFloat(cutFloat()); + + if (str[0] === '/') { + // rational real part + str = str.slice(1); + + if (isFloat()) { + var denominator = parseFloat(cutFloat()); + return $Kernel.$Rational(numerator, denominator); + } else { + // reverting '/' + str = '/' + str; + return numerator; + } + } else { + // float real part, no denominator + return numerator; + } + } else { + return null; + } + } + + real = cutNumber(); + + if (!real) { + if (str[0] === 'i') { + // i => Complex(0, 1) + return $Kernel.$Complex(0, 1); + } + if (str[0] === '-' && str[1] === 'i') { + // -i => Complex(0, -1) + return $Kernel.$Complex(0, -1); + } + if (str[0] === '+' && str[1] === 'i') { + // +i => Complex(0, 1) + return $Kernel.$Complex(0, 1); + } + // anything => Complex(0, 0) + return $Kernel.$Complex(0, 0); + } + + imag = cutNumber(); + if (!imag) { + if (str[0] === 'i') { + // 3i => Complex(0, 3) + return $Kernel.$Complex(0, real); + } else { + // 3 => Complex(3, 0) + return $Kernel.$Complex(real, 0); + } + } else { + // 3+2i => Complex(3, 2) + return $Kernel.$Complex(real, imag); + } + + }, 1); + (function(self, $parent_nesting) { + + return $alias(self, "rectangular", "rect") + })(Opal.get_singleton_class(self), $nesting); + $alias(self, "arg", "angle"); + $alias(self, "conjugate", "conj"); + $alias(self, "divide", "/"); + $alias(self, "imaginary", "imag"); + $alias(self, "magnitude", "abs"); + $alias(self, "phase", "arg"); + $alias(self, "quo", "/"); + $alias(self, "rectangular", "rect"); + + Opal.udef(self, '$' + "negative?");; + + Opal.udef(self, '$' + "positive?");; + + + Opal.udef(self, '$' + "step");; + return nil;; + })('::', $$$('Numeric'), $nesting); +}; + +Opal.modules["corelib/rational/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $def = Opal.def, $klass = Opal.klass; + + Opal.add_stubs('convert,from_string'); + + (function($base) { + var self = $module($base, 'Kernel'); + + + return $def(self, '$Rational', function $$Rational(numerator, denominator) { + + + + if (denominator == null) denominator = 1;; + return $$$('Rational').$convert(numerator, denominator); + }, -2) + })('::'); + return (function($base, $super) { + var self = $klass($base, $super, 'String'); + + + return $def(self, '$to_r', function $$to_r() { + var self = this; + + return $$$('Rational').$from_string(self) + }, 0) + })('::', null); +}; + +Opal.modules["corelib/rational"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $eqeq = Opal.eqeq, $Kernel = Opal.Kernel, $truthy = Opal.truthy, $rb_lt = Opal.rb_lt, $rb_divide = Opal.rb_divide, $defs = Opal.defs, $eqeqeq = Opal.eqeqeq, $not = Opal.not, $Opal = Opal.Opal, $def = Opal.def, $rb_minus = Opal.rb_minus, $rb_times = Opal.rb_times, $rb_plus = Opal.rb_plus, $rb_gt = Opal.rb_gt, $rb_le = Opal.rb_le, $alias = Opal.alias; + + Opal.add_stubs('require,to_i,==,raise,<,-@,new,gcd,/,nil?,===,reduce,to_r,!,equal?,coerce_to!,to_f,numerator,denominator,<=>,-,*,__coerced__,+,Rational,>,**,abs,ceil,with_precision,floor,<=,truncate,send'); + + self.$require("corelib/numeric"); + self.$require("corelib/rational/base"); + return (function($base, $super) { + var self = $klass($base, $super, 'Rational'); + + var $proto = self.$$prototype; + + $proto.num = $proto.den = nil; + + $defs(self, '$reduce', function $$reduce(num, den) { + var self = this, gcd = nil; + + + num = num.$to_i(); + den = den.$to_i(); + if ($eqeq(den, 0)) { + $Kernel.$raise($$$('ZeroDivisionError'), "divided by 0") + } else if ($truthy($rb_lt(den, 0))) { + + num = num['$-@'](); + den = den['$-@'](); + } else if ($eqeq(den, 1)) { + return self.$new(num, den) + }; + gcd = num.$gcd(den); + return self.$new($rb_divide(num, gcd), $rb_divide(den, gcd)); + }, 2); + $defs(self, '$convert', function $$convert(num, den) { + var self = this; + + + if (($truthy(num['$nil?']()) || ($truthy(den['$nil?']())))) { + $Kernel.$raise($$$('TypeError'), "cannot convert nil into Rational") + }; + if (($eqeqeq($$$('Integer'), num) && ($eqeqeq($$$('Integer'), den)))) { + return self.$reduce(num, den) + }; + if ((($eqeqeq($$$('Float'), num) || ($eqeqeq($$$('String'), num))) || ($eqeqeq($$$('Complex'), num)))) { + num = num.$to_r() + }; + if ((($eqeqeq($$$('Float'), den) || ($eqeqeq($$$('String'), den))) || ($eqeqeq($$$('Complex'), den)))) { + den = den.$to_r() + }; + if (($truthy(den['$equal?'](1)) && ($not($$$('Integer')['$==='](num))))) { + return $Opal['$coerce_to!'](num, $$$('Rational'), "to_r") + } else if (($eqeqeq($$$('Numeric'), num) && ($eqeqeq($$$('Numeric'), den)))) { + return $rb_divide(num, den) + } else { + return self.$reduce(num, den) + }; + }, 2); + + $def(self, '$initialize', function $$initialize(num, den) { + var self = this; + + + self.num = num; + return (self.den = den); + }, 2); + + $def(self, '$numerator', function $$numerator() { + var self = this; + + return self.num + }, 0); + + $def(self, '$denominator', function $$denominator() { + var self = this; + + return self.den + }, 0); + + $def(self, '$coerce', function $$coerce(other) { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq($$$('Rational'), ($ret_or_1 = other))) { + return [other, self] + } else if ($eqeqeq($$$('Integer'), $ret_or_1)) { + return [other.$to_r(), self] + } else if ($eqeqeq($$$('Float'), $ret_or_1)) { + return [other, self.$to_f()] + } else { + return nil + } + }, 1); + + $def(self, '$==', function $Rational_$eq_eq$1(other) { + var self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($eqeqeq($$$('Rational'), ($ret_or_1 = other))) { + if ($truthy(($ret_or_2 = self.num['$=='](other.$numerator())))) { + return self.den['$=='](other.$denominator()) + } else { + return $ret_or_2 + } + } else if ($eqeqeq($$$('Integer'), $ret_or_1)) { + if ($truthy(($ret_or_2 = self.num['$=='](other)))) { + return self.den['$=='](1) + } else { + return $ret_or_2 + } + } else if ($eqeqeq($$$('Float'), $ret_or_1)) { + return self.$to_f()['$=='](other) + } else { + return other['$=='](self) + } + }, 1); + + $def(self, '$<=>', function $Rational_$lt_eq_gt$2(other) { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq($$$('Rational'), ($ret_or_1 = other))) { + return $rb_minus($rb_times(self.num, other.$denominator()), $rb_times(self.den, other.$numerator()))['$<=>'](0) + } else if ($eqeqeq($$$('Integer'), $ret_or_1)) { + return $rb_minus(self.num, $rb_times(self.den, other))['$<=>'](0) + } else if ($eqeqeq($$$('Float'), $ret_or_1)) { + return self.$to_f()['$<=>'](other) + } else { + return self.$__coerced__("<=>", other) + } + }, 1); + + $def(self, '$+', function $Rational_$plus$3(other) { + var self = this, $ret_or_1 = nil, num = nil, den = nil; + + if ($eqeqeq($$$('Rational'), ($ret_or_1 = other))) { + + num = $rb_plus($rb_times(self.num, other.$denominator()), $rb_times(self.den, other.$numerator())); + den = $rb_times(self.den, other.$denominator()); + return $Kernel.$Rational(num, den); + } else if ($eqeqeq($$$('Integer'), $ret_or_1)) { + return $Kernel.$Rational($rb_plus(self.num, $rb_times(other, self.den)), self.den) + } else if ($eqeqeq($$$('Float'), $ret_or_1)) { + return $rb_plus(self.$to_f(), other) + } else { + return self.$__coerced__("+", other) + } + }, 1); + + $def(self, '$-', function $Rational_$minus$4(other) { + var self = this, $ret_or_1 = nil, num = nil, den = nil; + + if ($eqeqeq($$$('Rational'), ($ret_or_1 = other))) { + + num = $rb_minus($rb_times(self.num, other.$denominator()), $rb_times(self.den, other.$numerator())); + den = $rb_times(self.den, other.$denominator()); + return $Kernel.$Rational(num, den); + } else if ($eqeqeq($$$('Integer'), $ret_or_1)) { + return $Kernel.$Rational($rb_minus(self.num, $rb_times(other, self.den)), self.den) + } else if ($eqeqeq($$$('Float'), $ret_or_1)) { + return $rb_minus(self.$to_f(), other) + } else { + return self.$__coerced__("-", other) + } + }, 1); + + $def(self, '$*', function $Rational_$$5(other) { + var self = this, $ret_or_1 = nil, num = nil, den = nil; + + if ($eqeqeq($$$('Rational'), ($ret_or_1 = other))) { + + num = $rb_times(self.num, other.$numerator()); + den = $rb_times(self.den, other.$denominator()); + return $Kernel.$Rational(num, den); + } else if ($eqeqeq($$$('Integer'), $ret_or_1)) { + return $Kernel.$Rational($rb_times(self.num, other), self.den) + } else if ($eqeqeq($$$('Float'), $ret_or_1)) { + return $rb_times(self.$to_f(), other) + } else { + return self.$__coerced__("*", other) + } + }, 1); + + $def(self, '$/', function $Rational_$slash$6(other) { + var self = this, $ret_or_1 = nil, num = nil, den = nil; + + if ($eqeqeq($$$('Rational'), ($ret_or_1 = other))) { + + num = $rb_times(self.num, other.$denominator()); + den = $rb_times(self.den, other.$numerator()); + return $Kernel.$Rational(num, den); + } else if ($eqeqeq($$$('Integer'), $ret_or_1)) { + if ($eqeq(other, 0)) { + return $rb_divide(self.$to_f(), 0.0) + } else { + return $Kernel.$Rational(self.num, $rb_times(self.den, other)) + } + } else if ($eqeqeq($$$('Float'), $ret_or_1)) { + return $rb_divide(self.$to_f(), other) + } else { + return self.$__coerced__("/", other) + } + }, 1); + + $def(self, '$**', function $Rational_$$$7(other) { + var self = this, $ret_or_1 = nil; + + if ($eqeqeq($$$('Integer'), ($ret_or_1 = other))) { + if (($eqeq(self, 0) && ($truthy($rb_lt(other, 0))))) { + return $$$($$$('Float'), 'INFINITY') + } else if ($truthy($rb_gt(other, 0))) { + return $Kernel.$Rational(self.num['$**'](other), self.den['$**'](other)) + } else if ($truthy($rb_lt(other, 0))) { + return $Kernel.$Rational(self.den['$**'](other['$-@']()), self.num['$**'](other['$-@']())) + } else { + return $Kernel.$Rational(1, 1) + } + } else if ($eqeqeq($$$('Float'), $ret_or_1)) { + return self.$to_f()['$**'](other) + } else if ($eqeqeq($$$('Rational'), $ret_or_1)) { + if ($eqeq(other, 0)) { + return $Kernel.$Rational(1, 1) + } else if ($eqeq(other.$denominator(), 1)) { + if ($truthy($rb_lt(other, 0))) { + return $Kernel.$Rational(self.den['$**'](other.$numerator().$abs()), self.num['$**'](other.$numerator().$abs())) + } else { + return $Kernel.$Rational(self.num['$**'](other.$numerator()), self.den['$**'](other.$numerator())) + } + } else if (($eqeq(self, 0) && ($truthy($rb_lt(other, 0))))) { + return $Kernel.$raise($$$('ZeroDivisionError'), "divided by 0") + } else { + return self.$to_f()['$**'](other) + } + } else { + return self.$__coerced__("**", other) + } + }, 1); + + $def(self, '$abs', function $$abs() { + var self = this; + + return $Kernel.$Rational(self.num.$abs(), self.den.$abs()) + }, 0); + + $def(self, '$ceil', function $$ceil(precision) { + var self = this; + + + + if (precision == null) precision = 0;; + if ($eqeq(precision, 0)) { + return $rb_divide(self.num['$-@'](), self.den)['$-@']().$ceil() + } else { + return self.$with_precision("ceil", precision) + }; + }, -1); + + $def(self, '$floor', function $$floor(precision) { + var self = this; + + + + if (precision == null) precision = 0;; + if ($eqeq(precision, 0)) { + return $rb_divide(self.num['$-@'](), self.den)['$-@']().$floor() + } else { + return self.$with_precision("floor", precision) + }; + }, -1); + + $def(self, '$hash', function $$hash() { + var self = this; + + return "Rational:" + (self.num) + ":" + (self.den) + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return "(" + (self) + ")" + }, 0); + + $def(self, '$rationalize', function $$rationalize(eps) { + var self = this; + + + ; + + if (arguments.length > 1) { + $Kernel.$raise($$$('ArgumentError'), "wrong number of arguments (" + (arguments.length) + " for 0..1)"); + } + + if (eps == null) { + return self; + } + + var e = eps.$abs(), + a = $rb_minus(self, e), + b = $rb_plus(self, e); + + var p0 = 0, + p1 = 1, + q0 = 1, + q1 = 0, + p2, q2; + + var c, k, t; + + while (true) { + c = (a).$ceil(); + + if ($rb_le(c, b)) { + break; + } + + k = c - 1; + p2 = k * p1 + p0; + q2 = k * q1 + q0; + t = $rb_divide(1, $rb_minus(b, k)); + b = $rb_divide(1, $rb_minus(a, k)); + a = t; + + p0 = p1; + q0 = q1; + p1 = p2; + q1 = q2; + } + + return $Kernel.$Rational(c * p1 + p0, c * q1 + q0); + ; + }, -1); + + $def(self, '$round', function $$round(precision) { + var self = this, num = nil, den = nil, approx = nil; + + + + if (precision == null) precision = 0;; + if (!$eqeq(precision, 0)) { + return self.$with_precision("round", precision) + }; + if ($eqeq(self.num, 0)) { + return 0 + }; + if ($eqeq(self.den, 1)) { + return self.num + }; + num = $rb_plus($rb_times(self.num.$abs(), 2), self.den); + den = $rb_times(self.den, 2); + approx = $rb_divide(num, den).$truncate(); + if ($truthy($rb_lt(self.num, 0))) { + return approx['$-@']() + } else { + return approx + }; + }, -1); + + $def(self, '$to_f', function $$to_f() { + var self = this; + + return $rb_divide(self.num, self.den) + }, 0); + + $def(self, '$to_i', function $$to_i() { + var self = this; + + return self.$truncate() + }, 0); + + $def(self, '$to_r', function $$to_r() { + var self = this; + + return self + }, 0); + + $def(self, '$to_s', function $$to_s() { + var self = this; + + return "" + (self.num) + "/" + (self.den) + }, 0); + + $def(self, '$truncate', function $$truncate(precision) { + var self = this; + + + + if (precision == null) precision = 0;; + if ($eqeq(precision, 0)) { + if ($truthy($rb_lt(self.num, 0))) { + return self.$ceil() + } else { + return self.$floor() + } + } else { + return self.$with_precision("truncate", precision) + }; + }, -1); + + $def(self, '$with_precision', function $$with_precision(method, precision) { + var self = this, p = nil, s = nil; + + + if (!$eqeqeq($$$('Integer'), precision)) { + $Kernel.$raise($$$('TypeError'), "not an Integer") + }; + p = (10)['$**'](precision); + s = $rb_times(self, p); + if ($truthy($rb_lt(precision, 1))) { + return $rb_divide(s.$send(method), p).$to_i() + } else { + return $Kernel.$Rational(s.$send(method), p) + }; + }, 2); + $defs(self, '$from_string', function $$from_string(string) { + + + var str = string.trimLeft(), + re = /^[+-]?[\d_]+(\.[\d_]+)?/, + match = str.match(re), + numerator, denominator; + + function isFloat() { + return re.test(str); + } + + function cutFloat() { + var match = str.match(re); + var number = match[0]; + str = str.slice(number.length); + return number.replace(/_/g, ''); + } + + if (isFloat()) { + numerator = parseFloat(cutFloat()); + + if (str[0] === '/') { + // rational real part + str = str.slice(1); + + if (isFloat()) { + denominator = parseFloat(cutFloat()); + return $Kernel.$Rational(numerator, denominator); + } else { + return $Kernel.$Rational(numerator, 1); + } + } else { + return $Kernel.$Rational(numerator, 1); + } + } else { + return $Kernel.$Rational(0, 1); + } + + }, 1); + $alias(self, "divide", "/"); + return $alias(self, "quo", "/"); + })('::', $$$('Numeric')); +}; + +Opal.modules["corelib/time"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $slice = Opal.slice, $klass = Opal.klass, $Kernel = Opal.Kernel, $Opal = Opal.Opal, $defs = Opal.defs, $eqeqeq = Opal.eqeqeq, $def = Opal.def, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $rb_lt = Opal.rb_lt, $rb_plus = Opal.rb_plus, $rb_divide = Opal.rb_divide, $rb_minus = Opal.rb_minus, $range = Opal.range, $neqeq = Opal.neqeq, $rb_le = Opal.rb_le, $eqeq = Opal.eqeq, $alias = Opal.alias; + + Opal.add_stubs('require,include,===,raise,coerce_to!,respond_to?,to_str,to_i,new,<=>,to_f,nil?,>,<,strftime,year,month,day,+,round,/,-,copy_instance_variables,initialize_dup,is_a?,zero?,wday,utc?,mon,yday,hour,min,sec,rjust,ljust,zone,to_s,[],cweek_cyear,isdst,!=,<=,==,ceil'); + + self.$require("corelib/comparable"); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Time'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$include($$$('Comparable')); + + var days_of_week = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], + short_days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + short_months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], + long_months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; + ; + $defs(self, '$at', function $$at(seconds, frac) { + + + ; + + var result; + + if ($$$('Time')['$==='](seconds)) { + if (frac !== undefined) { + $Kernel.$raise($$$('TypeError'), "can't convert Time into an exact number") + } + result = new Date(seconds.getTime()); + result.is_utc = seconds.is_utc; + return result; + } + + if (!seconds.$$is_number) { + seconds = $Opal['$coerce_to!'](seconds, $$$('Integer'), "to_int"); + } + + if (frac === undefined) { + return new Date(seconds * 1000); + } + + if (!frac.$$is_number) { + frac = $Opal['$coerce_to!'](frac, $$$('Integer'), "to_int"); + } + + return new Date(seconds * 1000 + (frac / 1000)); + ; + }, -2); + + function time_params(year, month, day, hour, min, sec) { + if (year.$$is_string) { + year = parseInt(year, 10); + } else { + year = $Opal['$coerce_to!'](year, $$$('Integer'), "to_int"); + } + + if (month === nil) { + month = 1; + } else if (!month.$$is_number) { + if ((month)['$respond_to?']("to_str")) { + month = (month).$to_str(); + switch (month.toLowerCase()) { + case 'jan': month = 1; break; + case 'feb': month = 2; break; + case 'mar': month = 3; break; + case 'apr': month = 4; break; + case 'may': month = 5; break; + case 'jun': month = 6; break; + case 'jul': month = 7; break; + case 'aug': month = 8; break; + case 'sep': month = 9; break; + case 'oct': month = 10; break; + case 'nov': month = 11; break; + case 'dec': month = 12; break; + default: month = (month).$to_i(); + } + } else { + month = $Opal['$coerce_to!'](month, $$$('Integer'), "to_int"); + } + } + + if (month < 1 || month > 12) { + $Kernel.$raise($$$('ArgumentError'), "month out of range: " + (month)) + } + month = month - 1; + + if (day === nil) { + day = 1; + } else if (day.$$is_string) { + day = parseInt(day, 10); + } else { + day = $Opal['$coerce_to!'](day, $$$('Integer'), "to_int"); + } + + if (day < 1 || day > 31) { + $Kernel.$raise($$$('ArgumentError'), "day out of range: " + (day)) + } + + if (hour === nil) { + hour = 0; + } else if (hour.$$is_string) { + hour = parseInt(hour, 10); + } else { + hour = $Opal['$coerce_to!'](hour, $$$('Integer'), "to_int"); + } + + if (hour < 0 || hour > 24) { + $Kernel.$raise($$$('ArgumentError'), "hour out of range: " + (hour)) + } + + if (min === nil) { + min = 0; + } else if (min.$$is_string) { + min = parseInt(min, 10); + } else { + min = $Opal['$coerce_to!'](min, $$$('Integer'), "to_int"); + } + + if (min < 0 || min > 59) { + $Kernel.$raise($$$('ArgumentError'), "min out of range: " + (min)) + } + + if (sec === nil) { + sec = 0; + } else if (!sec.$$is_number) { + if (sec.$$is_string) { + sec = parseInt(sec, 10); + } else { + sec = $Opal['$coerce_to!'](sec, $$$('Integer'), "to_int"); + } + } + + if (sec < 0 || sec > 60) { + $Kernel.$raise($$$('ArgumentError'), "sec out of range: " + (sec)) + } + + return [year, month, day, hour, min, sec]; + } + ; + $defs(self, '$new', function $Time_new$1(year, month, day, hour, min, sec, utc_offset) { + + + ; + + if (month == null) month = nil;; + + if (day == null) day = nil;; + + if (hour == null) hour = nil;; + + if (min == null) min = nil;; + + if (sec == null) sec = nil;; + + if (utc_offset == null) utc_offset = nil;; + + var args, result; + + if (year === undefined) { + return new Date(); + } + + if (utc_offset !== nil) { + $Kernel.$raise($$$('ArgumentError'), "Opal does not support explicitly specifying UTC offset for Time") + } + + args = time_params(year, month, day, hour, min, sec); + year = args[0]; + month = args[1]; + day = args[2]; + hour = args[3]; + min = args[4]; + sec = args[5]; + + result = new Date(year, month, day, hour, min, 0, sec * 1000); + if (year < 100) { + result.setFullYear(year); + } + return result; + ; + }, -1); + $defs(self, '$local', function $$local(year, month, day, hour, min, sec, millisecond, _dummy1, _dummy2, _dummy3) { + + + + if (month == null) month = nil;; + + if (day == null) day = nil;; + + if (hour == null) hour = nil;; + + if (min == null) min = nil;; + + if (sec == null) sec = nil;; + + if (millisecond == null) millisecond = nil;; + + if (_dummy1 == null) _dummy1 = nil;; + + if (_dummy2 == null) _dummy2 = nil;; + + if (_dummy3 == null) _dummy3 = nil;; + + var args, result; + + if (arguments.length === 10) { + args = $slice.call(arguments); + year = args[5]; + month = args[4]; + day = args[3]; + hour = args[2]; + min = args[1]; + sec = args[0]; + } + + args = time_params(year, month, day, hour, min, sec); + year = args[0]; + month = args[1]; + day = args[2]; + hour = args[3]; + min = args[4]; + sec = args[5]; + + result = new Date(year, month, day, hour, min, 0, sec * 1000); + if (year < 100) { + result.setFullYear(year); + } + return result; + ; + }, -2); + $defs(self, '$gm', function $$gm(year, month, day, hour, min, sec, millisecond, _dummy1, _dummy2, _dummy3) { + + + + if (month == null) month = nil;; + + if (day == null) day = nil;; + + if (hour == null) hour = nil;; + + if (min == null) min = nil;; + + if (sec == null) sec = nil;; + + if (millisecond == null) millisecond = nil;; + + if (_dummy1 == null) _dummy1 = nil;; + + if (_dummy2 == null) _dummy2 = nil;; + + if (_dummy3 == null) _dummy3 = nil;; + + var args, result; + + if (arguments.length === 10) { + args = $slice.call(arguments); + year = args[5]; + month = args[4]; + day = args[3]; + hour = args[2]; + min = args[1]; + sec = args[0]; + } + + args = time_params(year, month, day, hour, min, sec); + year = args[0]; + month = args[1]; + day = args[2]; + hour = args[3]; + min = args[4]; + sec = args[5]; + + result = new Date(Date.UTC(year, month, day, hour, min, 0, sec * 1000)); + if (year < 100) { + result.setUTCFullYear(year); + } + result.is_utc = true; + return result; + ; + }, -2); + $defs(self, '$now', function $$now() { + var self = this; + + return self.$new() + }, 0); + + $def(self, '$+', function $Time_$plus$2(other) { + var self = this; + + + if ($eqeqeq($$$('Time'), other)) { + $Kernel.$raise($$$('TypeError'), "time + time?") + }; + + if (!other.$$is_number) { + other = $Opal['$coerce_to!'](other, $$$('Integer'), "to_int"); + } + var result = new Date(self.getTime() + (other * 1000)); + result.is_utc = self.is_utc; + return result; + ; + }, 1); + + $def(self, '$-', function $Time_$minus$3(other) { + var self = this; + + + if ($eqeqeq($$$('Time'), other)) { + return (self.getTime() - other.getTime()) / 1000 + }; + + if (!other.$$is_number) { + other = $Opal['$coerce_to!'](other, $$$('Integer'), "to_int"); + } + var result = new Date(self.getTime() - (other * 1000)); + result.is_utc = self.is_utc; + return result; + ; + }, 1); + + $def(self, '$<=>', function $Time_$lt_eq_gt$4(other) { + var self = this, r = nil; + + if ($eqeqeq($$$('Time'), other)) { + return self.$to_f()['$<=>'](other.$to_f()) + } else { + + r = other['$<=>'](self); + if ($truthy(r['$nil?']())) { + return nil + } else if ($truthy($rb_gt(r, 0))) { + return -1 + } else if ($truthy($rb_lt(r, 0))) { + return 1 + } else { + return 0 + }; + } + }, 1); + + $def(self, '$==', function $Time_$eq_eq$5(other) { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = $$$('Time')['$==='](other)))) { + return self.$to_f() === other.$to_f() + } else { + return $ret_or_1 + } + }, 1); + + $def(self, '$asctime', function $$asctime() { + var self = this; + + return self.$strftime("%a %b %e %H:%M:%S %Y") + }, 0); + + $def(self, '$day', function $$day() { + var self = this; + + return self.is_utc ? self.getUTCDate() : self.getDate(); + }, 0); + + $def(self, '$yday', function $$yday() { + var self = this, start_of_year = nil, start_of_day = nil, one_day = nil; + + + start_of_year = $$('Time').$new(self.$year()).$to_i(); + start_of_day = $$('Time').$new(self.$year(), self.$month(), self.$day()).$to_i(); + one_day = 86400; + return $rb_plus($rb_divide($rb_minus(start_of_day, start_of_year), one_day).$round(), 1); + }, 0); + + $def(self, '$isdst', function $$isdst() { + var self = this; + + + var jan = new Date(self.getFullYear(), 0, 1), + jul = new Date(self.getFullYear(), 6, 1); + return self.getTimezoneOffset() < Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset()); + + }, 0); + + $def(self, '$dup', function $$dup() { + var self = this, copy = nil; + + + copy = new Date(self.getTime()); + copy.$copy_instance_variables(self); + copy.$initialize_dup(self); + return copy; + }, 0); + + $def(self, '$eql?', function $Time_eql$ques$6(other) { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = other['$is_a?']($$$('Time'))))) { + return self['$<=>'](other)['$zero?']() + } else { + return $ret_or_1 + } + }, 1); + + $def(self, '$friday?', function $Time_friday$ques$7() { + var self = this; + + return self.$wday() == 5 + }, 0); + + $def(self, '$hash', function $$hash() { + var self = this; + + return 'Time:' + self.getTime(); + }, 0); + + $def(self, '$hour', function $$hour() { + var self = this; + + return self.is_utc ? self.getUTCHours() : self.getHours(); + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + if ($truthy(self['$utc?']())) { + return self.$strftime("%Y-%m-%d %H:%M:%S UTC") + } else { + return self.$strftime("%Y-%m-%d %H:%M:%S %z") + } + }, 0); + + $def(self, '$min', function $$min() { + var self = this; + + return self.is_utc ? self.getUTCMinutes() : self.getMinutes(); + }, 0); + + $def(self, '$mon', function $$mon() { + var self = this; + + return (self.is_utc ? self.getUTCMonth() : self.getMonth()) + 1; + }, 0); + + $def(self, '$monday?', function $Time_monday$ques$8() { + var self = this; + + return self.$wday() == 1 + }, 0); + + $def(self, '$saturday?', function $Time_saturday$ques$9() { + var self = this; + + return self.$wday() == 6 + }, 0); + + $def(self, '$sec', function $$sec() { + var self = this; + + return self.is_utc ? self.getUTCSeconds() : self.getSeconds(); + }, 0); + + $def(self, '$succ', function $$succ() { + var self = this; + + + var result = new Date(self.getTime() + 1000); + result.is_utc = self.is_utc; + return result; + + }, 0); + + $def(self, '$usec', function $$usec() { + var self = this; + + return self.getMilliseconds() * 1000; + }, 0); + + $def(self, '$zone', function $$zone() { + var self = this; + + + var string = self.toString(), + result; + + if (string.indexOf('(') == -1) { + result = string.match(/[A-Z]{3,4}/)[0]; + } + else { + result = string.match(/\((.+)\)(?:\s|$)/)[1] + } + + if (result == "GMT" && /(GMT\W*\d{4})/.test(string)) { + return RegExp.$1; + } + else { + return result; + } + + }, 0); + + $def(self, '$getgm', function $$getgm() { + var self = this; + + + var result = new Date(self.getTime()); + result.is_utc = true; + return result; + + }, 0); + + $def(self, '$gmtime', function $$gmtime() { + var self = this; + + + self.is_utc = true; + return self; + + }, 0); + + $def(self, '$gmt?', function $Time_gmt$ques$10() { + var self = this; + + return self.is_utc === true; + }, 0); + + $def(self, '$gmt_offset', function $$gmt_offset() { + var self = this; + + return self.is_utc ? 0 : -self.getTimezoneOffset() * 60; + }, 0); + + $def(self, '$strftime', function $$strftime(format) { + var self = this; + + + return format.replace(/%([\-_#^0]*:{0,2})(\d+)?([EO]*)(.)/g, function(full, flags, width, _, conv) { + var result = "", + zero = flags.indexOf('0') !== -1, + pad = flags.indexOf('-') === -1, + blank = flags.indexOf('_') !== -1, + upcase = flags.indexOf('^') !== -1, + invert = flags.indexOf('#') !== -1, + colons = (flags.match(':') || []).length; + + width = parseInt(width, 10); + + if (zero && blank) { + if (flags.indexOf('0') < flags.indexOf('_')) { + zero = false; + } + else { + blank = false; + } + } + + switch (conv) { + case 'Y': + result += self.$year(); + break; + + case 'C': + zero = !blank; + result += Math.round(self.$year() / 100); + break; + + case 'y': + zero = !blank; + result += (self.$year() % 100); + break; + + case 'm': + zero = !blank; + result += self.$mon(); + break; + + case 'B': + result += long_months[self.$mon() - 1]; + break; + + case 'b': + case 'h': + blank = !zero; + result += short_months[self.$mon() - 1]; + break; + + case 'd': + zero = !blank + result += self.$day(); + break; + + case 'e': + blank = !zero + result += self.$day(); + break; + + case 'j': + zero = !blank; + width = isNaN(width) ? 3 : width; + result += self.$yday(); + break; + + case 'H': + zero = !blank; + result += self.$hour(); + break; + + case 'k': + blank = !zero; + result += self.$hour(); + break; + + case 'I': + zero = !blank; + result += (self.$hour() % 12 || 12); + break; + + case 'l': + blank = !zero; + result += (self.$hour() % 12 || 12); + break; + + case 'P': + result += (self.$hour() >= 12 ? "pm" : "am"); + break; + + case 'p': + result += (self.$hour() >= 12 ? "PM" : "AM"); + break; + + case 'M': + zero = !blank; + result += self.$min(); + break; + + case 'S': + zero = !blank; + result += self.$sec() + break; + + case 'L': + zero = !blank; + width = isNaN(width) ? 3 : width; + result += self.getMilliseconds(); + break; + + case 'N': + width = isNaN(width) ? 9 : width; + result += (self.getMilliseconds().toString()).$rjust(3, "0"); + result = (result).$ljust(width, "0"); + break; + + case 'z': + var offset = self.getTimezoneOffset(), + hours = Math.floor(Math.abs(offset) / 60), + minutes = Math.abs(offset) % 60; + + result += offset < 0 ? "+" : "-"; + result += hours < 10 ? "0" : ""; + result += hours; + + if (colons > 0) { + result += ":"; + } + + result += minutes < 10 ? "0" : ""; + result += minutes; + + if (colons > 1) { + result += ":00"; + } + + break; + + case 'Z': + result += self.$zone(); + break; + + case 'A': + result += days_of_week[self.$wday()]; + break; + + case 'a': + result += short_days[self.$wday()]; + break; + + case 'u': + result += (self.$wday() + 1); + break; + + case 'w': + result += self.$wday(); + break; + + case 'V': + result += self.$cweek_cyear()['$[]'](0).$to_s().$rjust(2, "0"); + break; + + case 'G': + result += self.$cweek_cyear()['$[]'](1); + break; + + case 'g': + result += self.$cweek_cyear()['$[]'](1)['$[]']($range(-2, -1, false)); + break; + + case 's': + result += self.$to_i(); + break; + + case 'n': + result += "\n"; + break; + + case 't': + result += "\t"; + break; + + case '%': + result += "%"; + break; + + case 'c': + result += self.$strftime("%a %b %e %T %Y"); + break; + + case 'D': + case 'x': + result += self.$strftime("%m/%d/%y"); + break; + + case 'F': + result += self.$strftime("%Y-%m-%d"); + break; + + case 'v': + result += self.$strftime("%e-%^b-%4Y"); + break; + + case 'r': + result += self.$strftime("%I:%M:%S %p"); + break; + + case 'R': + result += self.$strftime("%H:%M"); + break; + + case 'T': + case 'X': + result += self.$strftime("%H:%M:%S"); + break; + + default: + return full; + } + + if (upcase) { + result = result.toUpperCase(); + } + + if (invert) { + result = result.replace(/[A-Z]/, function(c) { c.toLowerCase() }). + replace(/[a-z]/, function(c) { c.toUpperCase() }); + } + + if (pad && (zero || blank)) { + result = (result).$rjust(isNaN(width) ? 2 : width, blank ? " " : "0"); + } + + return result; + }); + + }, 1); + + $def(self, '$sunday?', function $Time_sunday$ques$11() { + var self = this; + + return self.$wday() == 0 + }, 0); + + $def(self, '$thursday?', function $Time_thursday$ques$12() { + var self = this; + + return self.$wday() == 4 + }, 0); + + $def(self, '$to_a', function $$to_a() { + var self = this; + + return [self.$sec(), self.$min(), self.$hour(), self.$day(), self.$month(), self.$year(), self.$wday(), self.$yday(), self.$isdst(), self.$zone()] + }, 0); + + $def(self, '$to_f', function $$to_f() { + var self = this; + + return self.getTime() / 1000; + }, 0); + + $def(self, '$to_i', function $$to_i() { + var self = this; + + return parseInt(self.getTime() / 1000, 10); + }, 0); + + $def(self, '$tuesday?', function $Time_tuesday$ques$13() { + var self = this; + + return self.$wday() == 2 + }, 0); + + $def(self, '$wday', function $$wday() { + var self = this; + + return self.is_utc ? self.getUTCDay() : self.getDay(); + }, 0); + + $def(self, '$wednesday?', function $Time_wednesday$ques$14() { + var self = this; + + return self.$wday() == 3 + }, 0); + + $def(self, '$year', function $$year() { + var self = this; + + return self.is_utc ? self.getUTCFullYear() : self.getFullYear(); + }, 0); + + $def(self, '$cweek_cyear', function $$cweek_cyear() { + var self = this, jan01 = nil, jan01_wday = nil, first_monday = nil, year = nil, offset = nil, week = nil, dec31 = nil, dec31_wday = nil; + + + jan01 = $$$('Time').$new(self.$year(), 1, 1); + jan01_wday = jan01.$wday(); + first_monday = 0; + year = self.$year(); + if (($truthy($rb_le(jan01_wday, 4)) && ($neqeq(jan01_wday, 0)))) { + offset = $rb_minus(jan01_wday, 1) + } else { + + offset = $rb_minus($rb_minus(jan01_wday, 7), 1); + if ($eqeq(offset, -8)) { + offset = -1 + }; + }; + week = $rb_divide($rb_plus(self.$yday(), offset), 7.0).$ceil(); + if ($truthy($rb_le(week, 0))) { + return $$$('Time').$new($rb_minus(self.$year(), 1), 12, 31).$cweek_cyear() + } else if ($eqeq(week, 53)) { + + dec31 = $$$('Time').$new(self.$year(), 12, 31); + dec31_wday = dec31.$wday(); + if (($truthy($rb_le(dec31_wday, 3)) && ($neqeq(dec31_wday, 0)))) { + + week = 1; + year = $rb_plus(year, 1); + }; + }; + return [week, year]; + }, 0); + (function(self, $parent_nesting) { + + + $alias(self, "mktime", "local"); + return $alias(self, "utc", "gm"); + })(Opal.get_singleton_class(self), $nesting); + $alias(self, "ctime", "asctime"); + $alias(self, "dst?", "isdst"); + $alias(self, "getutc", "getgm"); + $alias(self, "gmtoff", "gmt_offset"); + $alias(self, "mday", "day"); + $alias(self, "month", "mon"); + $alias(self, "to_s", "inspect"); + $alias(self, "tv_sec", "to_i"); + $alias(self, "tv_usec", "usec"); + $alias(self, "utc", "gmtime"); + $alias(self, "utc?", "gmt?"); + return $alias(self, "utc_offset", "gmt_offset"); + })('::', Date, $nesting); +}; + +Opal.modules["corelib/struct"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $neqeq = Opal.neqeq, $eqeq = Opal.eqeq, $Opal = Opal.Opal, $send = Opal.send, $Class = Opal.Class, $to_a = Opal.to_a, $def = Opal.def, $defs = Opal.defs, $Kernel = Opal.Kernel, $rb_gt = Opal.rb_gt, $rb_minus = Opal.rb_minus, $eqeqeq = Opal.eqeqeq, $rb_lt = Opal.rb_lt, $rb_ge = Opal.rb_ge, $rb_plus = Opal.rb_plus, $alias = Opal.alias; + + Opal.add_stubs('require,include,!=,upcase,[],==,class,unshift,const_name!,map,coerce_to!,new,each,define_struct_attribute,allocate,initialize,alias_method,module_eval,to_proc,const_set,raise,<<,members,define_method,instance_eval,last,>,length,-,keys,any?,join,[]=,each_with_index,hash,===,<,-@,size,>=,include?,to_sym,instance_of?,__id__,eql?,enum_for,+,name,each_pair,inspect,to_h,args,each_with_object,flatten,to_a,respond_to?,dig'); + + self.$require("corelib/enumerable"); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Struct'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$include($$$('Enumerable')); + $defs(self, '$new', function $Struct_new$1(const_name, $a, $b) { + var block = $Struct_new$1.$$p || nil, $post_args, $kwargs, args, keyword_init, self = this, klass = nil; + + delete $Struct_new$1.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + args = $post_args;; + + keyword_init = $kwargs.$$smap["keyword_init"]; + if (keyword_init == null) keyword_init = false; + if ($truthy(const_name)) { + if (($eqeq(const_name.$class(), $$$('String')) && ($neqeq(const_name['$[]'](0).$upcase(), const_name['$[]'](0))))) { + + args.$unshift(const_name); + const_name = nil; + } else { + + try { + const_name = $Opal['$const_name!'](const_name) + } catch ($err) { + if (Opal.rescue($err, [$$$('TypeError'), $$$('NameError')])) { + try { + + args.$unshift(const_name); + const_name = nil; + } finally { Opal.pop_exception(); } + } else { throw $err; } + }; + } + }; + $send(args, 'map', [], function $$2(arg){ + + + if (arg == null) arg = nil;; + return $Opal['$coerce_to!'](arg, $$$('String'), "to_str");}, 1); + klass = $send($Class, 'new', [self], function $$3(){var self = $$3.$$s == null ? this : $$3.$$s; + + + $send(args, 'each', [], function $$4(arg){var self = $$4.$$s == null ? this : $$4.$$s; + + + + if (arg == null) arg = nil;; + return self.$define_struct_attribute(arg);}, {$$arity: 1, $$s: self}); + return (function(self, $parent_nesting) { + + + + $def(self, '$new', function $new$5($a) { + var $post_args, args, self = this, instance = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + instance = self.$allocate(); + instance.$$data = {}; + $send(instance, 'initialize', $to_a(args)); + return instance; + }, -1); + return self.$alias_method("[]", "new"); + })(Opal.get_singleton_class(self), $nesting);}, {$$arity: 0, $$s: self}); + if ($truthy(block)) { + $send(klass, 'module_eval', [], block.$to_proc()) + }; + klass.$$keyword_init = keyword_init; + if ($truthy(const_name)) { + $$$('Struct').$const_set(const_name, klass) + }; + return klass; + }, -2); + $defs(self, '$define_struct_attribute', function $$define_struct_attribute(name) { + var self = this; + + + if ($eqeq(self, $$$('Struct'))) { + $Kernel.$raise($$$('ArgumentError'), "you cannot define attributes to the Struct class") + }; + self.$members()['$<<'](name); + $send(self, 'define_method', [name], function $$6(){var self = $$6.$$s == null ? this : $$6.$$s; + + return self.$$data[name];}, {$$arity: 0, $$s: self}); + return $send(self, 'define_method', ["" + (name) + "="], function $$7(value){var self = $$7.$$s == null ? this : $$7.$$s; + + + + if (value == null) value = nil;; + return self.$$data[name] = value;;}, {$$arity: 1, $$s: self}); + }, 1); + $defs(self, '$members', function $$members() { + var self = this, $ret_or_1 = nil; + if (self.members == null) self.members = nil; + + + if ($eqeq(self, $$$('Struct'))) { + $Kernel.$raise($$$('ArgumentError'), "the Struct class has no members") + }; + return (self.members = ($truthy(($ret_or_1 = self.members)) ? ($ret_or_1) : ([]))); + }, 0); + $defs(self, '$inherited', function $$inherited(klass) { + var self = this, members = nil; + if (self.members == null) self.members = nil; + + + members = self.members; + return $send(klass, 'instance_eval', [], function $$8(){var self = $$8.$$s == null ? this : $$8.$$s; + + return (self.members = members)}, {$$arity: 0, $$s: self}); + }, 1); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, args, self = this, kwargs = nil, $ret_or_1 = nil, extra = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if ($truthy(self.$class().$$keyword_init)) { + + kwargs = ($truthy(($ret_or_1 = args.$last())) ? ($ret_or_1) : ($hash2([], {}))); + if (($truthy($rb_gt(args.$length(), 1)) || ($truthy((args.length === 1 && !kwargs.$$is_hash))))) { + $Kernel.$raise($$$('ArgumentError'), "wrong number of arguments (given " + (args.$length()) + ", expected 0)") + }; + extra = $rb_minus(kwargs.$keys(), self.$class().$members()); + if ($truthy(extra['$any?']())) { + $Kernel.$raise($$$('ArgumentError'), "unknown keywords: " + (extra.$join(", "))) + }; + return $send(self.$class().$members(), 'each', [], function $$9(name){var self = $$9.$$s == null ? this : $$9.$$s, $writer = nil; + + + + if (name == null) name = nil;; + $writer = [name, kwargs['$[]'](name)]; + $send(self, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}); + } else { + + if ($truthy($rb_gt(args.$length(), self.$class().$members().$length()))) { + $Kernel.$raise($$$('ArgumentError'), "struct size differs") + }; + return $send(self.$class().$members(), 'each_with_index', [], function $$10(name, index){var self = $$10.$$s == null ? this : $$10.$$s, $writer = nil; + + + + if (name == null) name = nil;; + + if (index == null) index = nil;; + $writer = [name, args['$[]'](index)]; + $send(self, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 2, $$s: self}); + }; + }, -1); + + $def(self, '$initialize_copy', function $$initialize_copy(from) { + var self = this; + + + self.$$data = {} + var keys = Object.keys(from.$$data), i, max, name; + for (i = 0, max = keys.length; i < max; i++) { + name = keys[i]; + self.$$data[name] = from.$$data[name]; + } + + }, 1); + $defs(self, '$keyword_init?', function $Struct_keyword_init$ques$11() { + var self = this; + + return self.$$keyword_init; + }, 0); + + $def(self, '$members', function $$members() { + var self = this; + + return self.$class().$members() + }, 0); + + $def(self, '$hash', function $$hash() { + var self = this; + + return $$('Hash').$new(self.$$data).$hash() + }, 0); + + $def(self, '$[]', function $Struct_$$$12(name) { + var self = this; + + + if ($eqeqeq($$$('Integer'), name)) { + + if ($truthy($rb_lt(name, self.$class().$members().$size()['$-@']()))) { + $Kernel.$raise($$$('IndexError'), "offset " + (name) + " too small for struct(size:" + (self.$class().$members().$size()) + ")") + }; + if ($truthy($rb_ge(name, self.$class().$members().$size()))) { + $Kernel.$raise($$$('IndexError'), "offset " + (name) + " too large for struct(size:" + (self.$class().$members().$size()) + ")") + }; + name = self.$class().$members()['$[]'](name); + } else if ($eqeqeq($$$('String'), name)) { + + if(!self.$$data.hasOwnProperty(name)) { + $Kernel.$raise($$$('NameError').$new("no member '" + (name) + "' in struct", name)) + } + + } else { + $Kernel.$raise($$$('TypeError'), "no implicit conversion of " + (name.$class()) + " into Integer") + }; + name = $Opal['$coerce_to!'](name, $$$('String'), "to_str"); + return self.$$data[name];; + }, 1); + + $def(self, '$[]=', function $Struct_$$$eq$13(name, value) { + var self = this; + + + if ($eqeqeq($$$('Integer'), name)) { + + if ($truthy($rb_lt(name, self.$class().$members().$size()['$-@']()))) { + $Kernel.$raise($$$('IndexError'), "offset " + (name) + " too small for struct(size:" + (self.$class().$members().$size()) + ")") + }; + if ($truthy($rb_ge(name, self.$class().$members().$size()))) { + $Kernel.$raise($$$('IndexError'), "offset " + (name) + " too large for struct(size:" + (self.$class().$members().$size()) + ")") + }; + name = self.$class().$members()['$[]'](name); + } else if ($eqeqeq($$$('String'), name)) { + if (!$truthy(self.$class().$members()['$include?'](name.$to_sym()))) { + $Kernel.$raise($$$('NameError').$new("no member '" + (name) + "' in struct", name)) + } + } else { + $Kernel.$raise($$$('TypeError'), "no implicit conversion of " + (name.$class()) + " into Integer") + }; + name = $Opal['$coerce_to!'](name, $$$('String'), "to_str"); + return self.$$data[name] = value;; + }, 2); + + $def(self, '$==', function $Struct_$eq_eq$14(other) { + var self = this; + + + if (!$truthy(other['$instance_of?'](self.$class()))) { + return false + }; + + var recursed1 = {}, recursed2 = {}; + + function _eqeq(struct, other) { + var key, a, b; + + recursed1[(struct).$__id__()] = true; + recursed2[(other).$__id__()] = true; + + for (key in struct.$$data) { + a = struct.$$data[key]; + b = other.$$data[key]; + + if ($$$('Struct')['$==='](a)) { + if (!recursed1.hasOwnProperty((a).$__id__()) || !recursed2.hasOwnProperty((b).$__id__())) { + if (!_eqeq(a, b)) { + return false; + } + } + } else { + if (!(a)['$=='](b)) { + return false; + } + } + } + + return true; + } + + return _eqeq(self, other); + ; + }, 1); + + $def(self, '$eql?', function $Struct_eql$ques$15(other) { + var self = this; + + + if (!$truthy(other['$instance_of?'](self.$class()))) { + return false + }; + + var recursed1 = {}, recursed2 = {}; + + function _eqeq(struct, other) { + var key, a, b; + + recursed1[(struct).$__id__()] = true; + recursed2[(other).$__id__()] = true; + + for (key in struct.$$data) { + a = struct.$$data[key]; + b = other.$$data[key]; + + if ($$$('Struct')['$==='](a)) { + if (!recursed1.hasOwnProperty((a).$__id__()) || !recursed2.hasOwnProperty((b).$__id__())) { + if (!_eqeq(a, b)) { + return false; + } + } + } else { + if (!(a)['$eql?'](b)) { + return false; + } + } + } + + return true; + } + + return _eqeq(self, other); + ; + }, 1); + + $def(self, '$each', function $$each() { + var $yield = $$each.$$p || nil, self = this; + + delete $$each.$$p; + + if (!($yield !== nil)) { + return $send(self, 'enum_for', ["each"], function $$16(){var self = $$16.$$s == null ? this : $$16.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + $send(self.$class().$members(), 'each', [], function $$17(name){var self = $$17.$$s == null ? this : $$17.$$s; + + + + if (name == null) name = nil;; + return Opal.yield1($yield, self['$[]'](name));;}, {$$arity: 1, $$s: self}); + return self; + }, 0); + + $def(self, '$each_pair', function $$each_pair() { + var $yield = $$each_pair.$$p || nil, self = this; + + delete $$each_pair.$$p; + + if (!($yield !== nil)) { + return $send(self, 'enum_for', ["each_pair"], function $$18(){var self = $$18.$$s == null ? this : $$18.$$s; + + return self.$size()}, {$$arity: 0, $$s: self}) + }; + $send(self.$class().$members(), 'each', [], function $$19(name){var self = $$19.$$s == null ? this : $$19.$$s; + + + + if (name == null) name = nil;; + return Opal.yield1($yield, [name, self['$[]'](name)]);;}, {$$arity: 1, $$s: self}); + return self; + }, 0); + + $def(self, '$length', function $$length() { + var self = this; + + return self.$class().$members().$length() + }, 0); + + $def(self, '$to_a', function $$to_a() { + var self = this; + + return $send(self.$class().$members(), 'map', [], function $$20(name){var self = $$20.$$s == null ? this : $$20.$$s; + + + + if (name == null) name = nil;; + return self['$[]'](name);}, {$$arity: 1, $$s: self}) + }, 0); + var inspect_stack = []; + + $def(self, '$inspect', function $$inspect() { + var self = this, result = nil, pushed = nil; + + return (function() { try { + + result = "#") + } else { + + (inspect_stack)['$<<'](self.$__id__()); + pushed = true; + if (($eqeqeq($$$('Struct'), self) && ($truthy(self.$class().$name())))) { + result = $rb_plus(result, "" + (self.$class()) + " ") + }; + result = $rb_plus(result, $send(self.$each_pair(), 'map', [], function $$21(name, value){ + + + if (name == null) name = nil;; + + if (value == null) value = nil;; + return "" + (name) + "=" + ($$('Opal').$inspect(value));}, 2).$join(", ")); + result = $rb_plus(result, ">"); + return result; + }; + } finally { + ($truthy(pushed) ? (inspect_stack.pop()) : nil) + }; })() + }, 0); + + $def(self, '$to_h', function $$to_h() { + var block = $$to_h.$$p || nil, self = this; + + delete $$to_h.$$p; + + ; + if ((block !== nil)) { + return $send($send(self, 'map', [], block.$to_proc()), 'to_h', $to_a(self.$args())) + }; + return $send(self.$class().$members(), 'each_with_object', [$hash2([], {})], function $$22(name, h){var self = $$22.$$s == null ? this : $$22.$$s, $writer = nil; + + + + if (name == null) name = nil;; + + if (h == null) h = nil;; + $writer = [name, self['$[]'](name)]; + $send(h, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 2, $$s: self}); + }, 0); + + $def(self, '$values_at', function $$values_at($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + args = $send(args, 'map', [], function $$23(arg){ + + + if (arg == null) arg = nil;; + return arg.$$is_range ? arg.$to_a() : arg;}, 1).$flatten(); + + var result = []; + for (var i = 0, len = args.length; i < len; i++) { + if (!args[i].$$is_number) { + $Kernel.$raise($$$('TypeError'), "no implicit conversion of " + ((args[i]).$class()) + " into Integer") + } + result.push(self['$[]'](args[i])); + } + return result; + ; + }, -1); + + $def(self, '$dig', function $$dig(key, $a) { + var $post_args, keys, self = this, item = nil; + + + + $post_args = Opal.slice.call(arguments, 1); + + keys = $post_args;; + item = ($truthy(key.$$is_string && self.$$data.hasOwnProperty(key)) ? (self.$$data[key] || nil) : nil); + + if (item === nil || keys.length === 0) { + return item; + } + ; + if (!$truthy(item['$respond_to?']("dig"))) { + $Kernel.$raise($$$('TypeError'), "" + (item.$class()) + " does not have #dig method") + }; + return $send(item, 'dig', $to_a(keys)); + }, -2); + $alias(self, "size", "length"); + $alias(self, "to_s", "inspect"); + return $alias(self, "values", "to_a"); + })('::', null, $nesting); +}; + +Opal.modules["corelib/dir"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $alias = Opal.alias; + + Opal.add_stubs('[]'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Dir'); + + var $nesting = [self].concat($parent_nesting); + + return (function(self, $parent_nesting) { + + + + $def(self, '$chdir', function $$chdir(dir) { + var $yield = $$chdir.$$p || nil, prev_cwd = nil; + + delete $$chdir.$$p; + return (function() { try { + + prev_cwd = Opal.current_dir; + Opal.current_dir = dir; + return Opal.yieldX($yield, []);; + } finally { + Opal.current_dir = prev_cwd + }; })() + }, 1); + + $def(self, '$pwd', function $$pwd() { + + return Opal.current_dir || '.'; + }, 0); + + $def(self, '$home', function $$home() { + var $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = $$$('ENV')['$[]']("HOME")))) { + return $ret_or_1 + } else { + return "." + } + }, 0); + return $alias(self, "getwd", "pwd"); + })(Opal.get_singleton_class(self), $nesting) + })('::', null, $nesting) +}; + +Opal.modules["corelib/file"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $klass = Opal.klass, $const_set = Opal.const_set, $Opal = Opal.Opal, $regexp = Opal.regexp, $rb_plus = Opal.rb_plus, $def = Opal.def, $Kernel = Opal.Kernel, $eqeq = Opal.eqeq, $rb_lt = Opal.rb_lt, $rb_minus = Opal.rb_minus, $range = Opal.range, $send = Opal.send, $alias = Opal.alias; + + Opal.add_stubs('respond_to?,to_path,coerce_to!,pwd,split,sub,+,unshift,join,home,raise,start_with?,absolute_path,==,<,dirname,-,basename,empty?,rindex,[],length,nil?,gsub,find,=~,map,each_with_index,flatten,reject,to_proc,end_with?'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'File'); + + var $nesting = [self].concat($parent_nesting), windows_root_rx = nil; + + + $const_set($nesting[0], 'Separator', $const_set($nesting[0], 'SEPARATOR', "/")); + $const_set($nesting[0], 'ALT_SEPARATOR', nil); + $const_set($nesting[0], 'PATH_SEPARATOR', ":"); + $const_set($nesting[0], 'FNM_SYSCASE', 0); + windows_root_rx = /^[a-zA-Z]:(?:\\|\/)/; + return (function(self, $parent_nesting) { + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$absolute_path', function $$absolute_path(path, basedir) { + var sep = nil, sep_chars = nil, new_parts = nil, $ret_or_1 = nil, path_abs = nil, basedir_abs = nil, parts = nil, leading_sep = nil, abs = nil, new_path = nil; + + + + if (basedir == null) basedir = nil;; + sep = $$('SEPARATOR'); + sep_chars = $sep_chars(); + new_parts = []; + path = ($truthy(path['$respond_to?']("to_path")) ? (path.$to_path()) : (path)); + path = $Opal['$coerce_to!'](path, $$$('String'), "to_str"); + basedir = ($truthy(($ret_or_1 = basedir)) ? ($ret_or_1) : ($$$('Dir').$pwd())); + path_abs = path.substr(0, sep.length) === sep || windows_root_rx.test(path); + basedir_abs = basedir.substr(0, sep.length) === sep || windows_root_rx.test(basedir); + if ($truthy(path_abs)) { + + parts = path.$split($regexp(["[", sep_chars, "]"])); + leading_sep = windows_root_rx.test(path) ? '' : path.$sub($regexp(["^([", sep_chars, "]+).*$"]), "\\1"); + abs = true; + } else { + + parts = $rb_plus(basedir.$split($regexp(["[", sep_chars, "]"])), path.$split($regexp(["[", sep_chars, "]"]))); + leading_sep = windows_root_rx.test(basedir) ? '' : basedir.$sub($regexp(["^([", sep_chars, "]+).*$"]), "\\1"); + abs = basedir_abs; + }; + + var part; + for (var i = 0, ii = parts.length; i < ii; i++) { + part = parts[i]; + + if ( + (part === nil) || + (part === '' && ((new_parts.length === 0) || abs)) || + (part === '.' && ((new_parts.length === 0) || abs)) + ) { + continue; + } + if (part === '..') { + new_parts.pop(); + } else { + new_parts.push(part); + } + } + + if (!abs && parts[0] !== '.') { + new_parts.$unshift(".") + } + ; + new_path = new_parts.$join(sep); + if ($truthy(abs)) { + new_path = $rb_plus(leading_sep, new_path) + }; + return new_path; + }, -2); + + $def(self, '$expand_path', function $$expand_path(path, basedir) { + var self = this, sep = nil, sep_chars = nil, home = nil, leading_sep = nil, home_path_regexp = nil; + + + + if (basedir == null) basedir = nil;; + sep = $$('SEPARATOR'); + sep_chars = $sep_chars(); + if ($truthy(path[0] === '~' || (basedir && basedir[0] === '~'))) { + + home = $$('Dir').$home(); + if (!$truthy(home)) { + $Kernel.$raise($$$('ArgumentError'), "couldn't find HOME environment -- expanding `~'") + }; + leading_sep = windows_root_rx.test(home) ? '' : home.$sub($regexp(["^([", sep_chars, "]+).*$"]), "\\1"); + if (!$truthy(home['$start_with?'](leading_sep))) { + $Kernel.$raise($$$('ArgumentError'), "non-absolute home") + }; + home = $rb_plus(home, sep); + home_path_regexp = $regexp(["^\\~(?:", sep, "|$)"]); + path = path.$sub(home_path_regexp, home); + if ($truthy(basedir)) { + basedir = basedir.$sub(home_path_regexp, home) + }; + }; + return self.$absolute_path(path, basedir); + }, -2); + + // Coerce a given path to a path string using #to_path and #to_str + function $coerce_to_path(path) { + if ($truthy((path)['$respond_to?']("to_path"))) { + path = path.$to_path(); + } + + path = $Opal['$coerce_to!'](path, $$$('String'), "to_str"); + + return path; + } + + // Return a RegExp compatible char class + function $sep_chars() { + if ($$('ALT_SEPARATOR') === nil) { + return Opal.escape_regexp($$('SEPARATOR')); + } else { + return Opal.escape_regexp($rb_plus($$('SEPARATOR'), $$('ALT_SEPARATOR'))); + } + } + ; + + $def(self, '$dirname', function $$dirname(path, level) { + var self = this, sep_chars = nil; + + + + if (level == null) level = 1;; + if ($eqeq(level, 0)) { + return path + }; + if ($truthy($rb_lt(level, 0))) { + $Kernel.$raise($$$('ArgumentError'), "level can't be negative") + }; + sep_chars = $sep_chars(); + path = $coerce_to_path(path); + + var absolute = path.match(new RegExp("^[" + (sep_chars) + "]")), out; + + path = path.replace(new RegExp("[" + (sep_chars) + "]+$"), ''); // remove trailing separators + path = path.replace(new RegExp("[^" + (sep_chars) + "]+$"), ''); // remove trailing basename + path = path.replace(new RegExp("[" + (sep_chars) + "]+$"), ''); // remove final trailing separators + + if (path === '') { + out = absolute ? '/' : '.'; + } + else { + out = path; + } + + if (level == 1) { + return out; + } + else { + return self.$dirname(out, $rb_minus(level, 1)) + } + ; + }, -2); + + $def(self, '$basename', function $$basename(name, suffix) { + var sep_chars = nil; + + + + if (suffix == null) suffix = nil;; + sep_chars = $sep_chars(); + name = $coerce_to_path(name); + + if (name.length == 0) { + return name; + } + + if (suffix !== nil) { + suffix = $Opal['$coerce_to!'](suffix, $$$('String'), "to_str") + } else { + suffix = null; + } + + name = name.replace(new RegExp("(.)[" + (sep_chars) + "]*$"), '$1'); + name = name.replace(new RegExp("^(?:.*[" + (sep_chars) + "])?([^" + (sep_chars) + "]+)$"), '$1'); + + if (suffix === ".*") { + name = name.replace(/\.[^\.]+$/, ''); + } else if(suffix !== null) { + suffix = Opal.escape_regexp(suffix); + name = name.replace(new RegExp("" + (suffix) + "$"), ''); + } + + return name; + ; + }, -2); + + $def(self, '$extname', function $$extname(path) { + var self = this, filename = nil, last_dot_idx = nil; + + + path = $coerce_to_path(path); + filename = self.$basename(path); + if ($truthy(filename['$empty?']())) { + return "" + }; + last_dot_idx = filename['$[]']($range(1, -1, false)).$rindex("."); + if (($truthy(last_dot_idx['$nil?']()) || ($eqeq($rb_plus(last_dot_idx, 1), $rb_minus(filename.$length(), 1))))) { + return "" + } else { + return filename['$[]'](Opal.Range.$new($rb_plus(last_dot_idx, 1), -1, false)) + }; + }, 1); + + $def(self, '$exist?', function $exist$ques$1(path) { + + return Opal.modules[path] != null + }, 1); + + $def(self, '$directory?', function $directory$ques$2(path) { + var files = nil, file = nil; + + + files = []; + + for (var key in Opal.modules) { + files.push(key) + } + ; + path = path.$gsub($regexp(["(^.", $$('SEPARATOR'), "+|", $$('SEPARATOR'), "+$)"])); + file = $send(files, 'find', [], function $$3(f){ + + + if (f == null) f = nil;; + return f['$=~']($regexp(["^", path]));}, 1); + return file; + }, 1); + + $def(self, '$join', function $$join($a) { + var $post_args, paths, result = nil; + + + + $post_args = Opal.slice.call(arguments); + + paths = $post_args;; + if ($truthy(paths['$empty?']())) { + return "" + }; + result = ""; + paths = $send(paths.$flatten().$each_with_index(), 'map', [], function $$4(item, index){ + + + if (item == null) item = nil;; + + if (index == null) index = nil;; + if (($eqeq(index, 0) && ($truthy(item['$empty?']())))) { + return $$('SEPARATOR') + } else if (($eqeq(paths.$length(), $rb_plus(index, 1)) && ($truthy(item['$empty?']())))) { + return $$('SEPARATOR') + } else { + return item + };}, 2); + paths = $send(paths, 'reject', [], "empty?".$to_proc()); + $send(paths, 'each_with_index', [], function $$5(item, index){var next_item = nil; + + + + if (item == null) item = nil;; + + if (index == null) index = nil;; + next_item = paths['$[]']($rb_plus(index, 1)); + if ($truthy(next_item['$nil?']())) { + return (result = "" + (result) + (item)) + } else { + + if (($truthy(item['$end_with?']($$('SEPARATOR'))) && ($truthy(next_item['$start_with?']($$('SEPARATOR')))))) { + item = item.$sub($regexp([$$('SEPARATOR'), "+$"]), "") + }; + return (result = (($truthy(item['$end_with?']($$('SEPARATOR'))) || ($truthy(next_item['$start_with?']($$('SEPARATOR'))))) ? ("" + (result) + (item)) : ("" + (result) + (item) + ($$('SEPARATOR'))))); + };}, 2); + return result; + }, -1); + + $def(self, '$split', function $$split(path) { + + return path.$split($$('SEPARATOR')) + }, 1); + $alias(self, "realpath", "expand_path"); + return $alias(self, "exists?", "exist?"); + })(Opal.get_singleton_class(self), $nesting); + })('::', $$$('IO'), $nesting) +}; + +Opal.modules["corelib/process/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $klass = Opal.klass, $defs = Opal.defs; + + + (function($base, $super) { + var self = $klass($base, $super, 'Signal'); + + + return $defs(self, '$trap', function $$trap($a) { + var $post_args, $rest_arg; + + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return nil; + }, -1) + })('::', null); + return (function($base, $super) { + var self = $klass($base, $super, 'GC'); + + + return $defs(self, '$start', function $$start() { + + return nil + }, 0) + })('::', null); +}; + +Opal.modules["corelib/process"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $defs = Opal.defs, $truthy = Opal.truthy, $Kernel = Opal.Kernel; + + Opal.add_stubs('const_set,size,<<,__register_clock__,to_f,now,new,[],raise'); + return (function($base) { + var self = $module($base, 'Process'); + + var monotonic = nil; + + + self.__clocks__ = []; + $defs(self, '$__register_clock__', function $$__register_clock__(name, func) { + var self = this; + if (self.__clocks__ == null) self.__clocks__ = nil; + + + self.$const_set(name, self.__clocks__.$size()); + return self.__clocks__['$<<'](func); + }, 2); + self.$__register_clock__("CLOCK_REALTIME", function() { return Date.now() }); + monotonic = false; + + if (Opal.global.performance) { + monotonic = function() { + return performance.now() + }; + } + else if (Opal.global.process && process.hrtime) { + // let now be the base to get smaller numbers + var hrtime_base = process.hrtime(); + + monotonic = function() { + var hrtime = process.hrtime(hrtime_base); + var us = (hrtime[1] / 1000) | 0; // cut below microsecs; + return ((hrtime[0] * 1000) + (us / 1000)); + }; + } + ; + if ($truthy(monotonic)) { + self.$__register_clock__("CLOCK_MONOTONIC", monotonic) + }; + $defs(self, '$pid', function $$pid() { + + return 0 + }, 0); + $defs(self, '$times', function $$times() { + var t = nil; + + + t = $$$('Time').$now().$to_f(); + return $$$($$$('Benchmark'), 'Tms').$new(t, t, t, t, t); + }, 0); + return $defs(self, '$clock_gettime', function $$clock_gettime(clock_id, unit) { + var self = this, $ret_or_1 = nil, clock = nil; + if (self.__clocks__ == null) self.__clocks__ = nil; + + + + if (unit == null) unit = "float_second";; + if ($truthy(($ret_or_1 = (clock = self.__clocks__['$[]'](clock_id))))) { + $ret_or_1 + } else { + $Kernel.$raise($$$($$$('Errno'), 'EINVAL'), "clock_gettime(" + (clock_id) + ") " + (self.__clocks__['$[]'](clock_id))) + }; + + var ms = clock(); + switch (unit) { + case 'float_second': return (ms / 1000); // number of seconds as a float (default) + case 'float_millisecond': return (ms / 1); // number of milliseconds as a float + case 'float_microsecond': return (ms * 1000); // number of microseconds as a float + case 'second': return ((ms / 1000) | 0); // number of seconds as an integer + case 'millisecond': return ((ms / 1) | 0); // number of milliseconds as an integer + case 'microsecond': return ((ms * 1000) | 0); // number of microseconds as an integer + case 'nanosecond': return ((ms * 1000000) | 0); // number of nanoseconds as an integer + default: $Kernel.$raise($$$('ArgumentError'), "unexpected unit: " + (unit)) + } + ; + }, -2); + })('::') +}; + +Opal.modules["corelib/random/formatter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $module = Opal.module, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $range = Opal.range, $rb_divide = Opal.rb_divide, $Kernel = Opal.Kernel, $Opal = Opal.Opal; + + Opal.add_stubs('_verify_count,bytes,encode,strict_encode64,random_bytes,urlsafe_encode64,split,hex,[]=,-,[],map,to_proc,join,times,<<,|,ord,/,abs,random_float,raise,coerce_to!,flatten,new,random_number,length,include,extend'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Random'); + + var $nesting = [self].concat($parent_nesting); + + + (function($base, $parent_nesting) { + var self = $module($base, 'Formatter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$hex', function $$hex(count) { + var self = this; + + + + if (count == null) count = nil;; + count = $$$('Random').$_verify_count(count); + + var bytes = self.$bytes(count); + var out = ""; + for (var i = 0; i < count; i++) { + out += bytes.charCodeAt(i).toString(16).padStart(2, '0'); + } + return (out).$encode("US-ASCII"); + ; + }, -1); + + $def(self, '$random_bytes', function $$random_bytes(count) { + var self = this; + + + + if (count == null) count = nil;; + return self.$bytes(count); + }, -1); + + $def(self, '$base64', function $$base64(count) { + var self = this; + + + + if (count == null) count = nil;; + return $$$('Base64').$strict_encode64(self.$random_bytes(count)).$encode("US-ASCII"); + }, -1); + + $def(self, '$urlsafe_base64', function $$urlsafe_base64(count, padding) { + var self = this; + + + + if (count == null) count = nil;; + + if (padding == null) padding = false;; + return $$$('Base64').$urlsafe_encode64(self.$random_bytes(count), padding).$encode("US-ASCII"); + }, -1); + + $def(self, '$uuid', function $$uuid() { + var self = this, str = nil, $writer = nil; + + + str = self.$hex(16).$split(""); + + $writer = [12, "4"]; + $send(str, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [16, (parseInt(str['$[]'](16), 16) & 3 | 8).toString(16)]; + $send(str, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + str = [str['$[]']($range(0, 8, true)), str['$[]']($range(8, 12, true)), str['$[]']($range(12, 16, true)), str['$[]']($range(16, 20, true)), str['$[]']($range(20, 32, true))]; + str = $send(str, 'map', [], "join".$to_proc()); + return str.$join("-"); + }, 0); + + $def(self, '$random_float', function $$random_float() { + var self = this, bs = nil, num = nil; + + + bs = self.$bytes(4); + num = 0; + $send((4), 'times', [], function $$1(i){ + + + if (i == null) i = nil;; + num = num['$<<'](8); + return (num = num['$|'](bs['$[]'](i).$ord()));}, 1); + return $rb_divide(num.$abs(), 2147483647); + }, 0); + + $def(self, '$random_number', function $$random_number(limit) { + var self = this; + + + ; + + function randomFloat() { + return self.$random_float(); + } + + function randomInt(max) { + return Math.floor(randomFloat() * max); + } + + function randomRange() { + var min = limit.begin, + max = limit.end; + + if (min === nil || max === nil) { + return nil; + } + + var length = max - min; + + if (length < 0) { + return nil; + } + + if (length === 0) { + return min; + } + + if (max % 1 === 0 && min % 1 === 0 && !limit.excl) { + length++; + } + + return randomInt(length) + min; + } + + if (limit == null) { + return randomFloat(); + } else if (limit.$$is_range) { + return randomRange(); + } else if (limit.$$is_number) { + if (limit <= 0) { + $Kernel.$raise($$$('ArgumentError'), "invalid argument - " + (limit)) + } + + if (limit % 1 === 0) { + // integer + return randomInt(limit); + } else { + return randomFloat() * limit; + } + } else { + limit = $Opal['$coerce_to!'](limit, $$$('Integer'), "to_int"); + + if (limit <= 0) { + $Kernel.$raise($$$('ArgumentError'), "invalid argument - " + (limit)) + } + + return randomInt(limit); + } + ; + }, -1); + return $def(self, '$alphanumeric', function $$alphanumeric(count) { + var self = this, map = nil; + + + + if (count == null) count = nil;; + count = $$('Random').$_verify_count(count); + map = $send([$range("0", "9", false), $range("a", "z", false), $range("A", "Z", false)], 'map', [], "to_a".$to_proc()).$flatten(); + return $send($$$('Array'), 'new', [count], function $$2(i){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (i == null) i = nil;; + return map['$[]'](self.$random_number(map.$length()));}, {$$arity: 1, $$s: self}).$join(); + }, -1); + })(self, $nesting); + self.$include($$$($$$('Random'), 'Formatter')); + return self.$extend($$$($$$('Random'), 'Formatter')); + })('::', null, $nesting) +}; + +Opal.modules["corelib/random/mersenne_twister"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $const_set = Opal.const_set, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, mersenne_twister = nil; + + Opal.add_stubs('generator=,-'); + + mersenne_twister = (function() { + /* Period parameters */ + var N = 624; + var M = 397; + var MATRIX_A = 0x9908b0df; /* constant vector a */ + var UMASK = 0x80000000; /* most significant w-r bits */ + var LMASK = 0x7fffffff; /* least significant r bits */ + var MIXBITS = function(u,v) { return ( ((u) & UMASK) | ((v) & LMASK) ); }; + var TWIST = function(u,v) { return (MIXBITS((u),(v)) >>> 1) ^ ((v & 0x1) ? MATRIX_A : 0x0); }; + + function init(s) { + var mt = {left: 0, next: N, state: new Array(N)}; + init_genrand(mt, s); + return mt; + } + + /* initializes mt[N] with a seed */ + function init_genrand(mt, s) { + var j, i; + mt.state[0] = s >>> 0; + for (j=1; j> 30) >>> 0)) + j); + /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */ + /* In the previous versions, MSBs of the seed affect */ + /* only MSBs of the array state[]. */ + /* 2002/01/09 modified by Makoto Matsumoto */ + mt.state[j] &= 0xffffffff; /* for >32 bit machines */ + } + mt.left = 1; + mt.next = N; + } + + /* generate N words at one time */ + function next_state(mt) { + var p = 0, _p = mt.state; + var j; + + mt.left = N; + mt.next = 0; + + for (j=N-M+1; --j; p++) + _p[p] = _p[p+(M)] ^ TWIST(_p[p+(0)], _p[p+(1)]); + + for (j=M; --j; p++) + _p[p] = _p[p+(M-N)] ^ TWIST(_p[p+(0)], _p[p+(1)]); + + _p[p] = _p[p+(M-N)] ^ TWIST(_p[p+(0)], _p[0]); + } + + /* generates a random number on [0,0xffffffff]-interval */ + function genrand_int32(mt) { + /* mt must be initialized */ + var y; + + if (--mt.left <= 0) next_state(mt); + y = mt.state[mt.next++]; + + /* Tempering */ + y ^= (y >>> 11); + y ^= (y << 7) & 0x9d2c5680; + y ^= (y << 15) & 0xefc60000; + y ^= (y >>> 18); + + return y >>> 0; + } + + function int_pair_to_real_exclusive(a, b) { + a >>>= 5; + b >>>= 6; + return(a*67108864.0+b)*(1.0/9007199254740992.0); + } + + // generates a random number on [0,1) with 53-bit resolution + function genrand_real(mt) { + /* mt must be initialized */ + var a = genrand_int32(mt), b = genrand_int32(mt); + return int_pair_to_real_exclusive(a, b); + } + + return { genrand_real: genrand_real, init: init }; +})(); + return (function($base, $super) { + var self = $klass($base, $super, 'Random'); + + var $writer = nil; + + + var MAX_INT = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1; + $const_set(self, 'MERSENNE_TWISTER_GENERATOR', { + new_seed: function() { return Math.round(Math.random() * MAX_INT); }, + reseed: function(seed) { return mersenne_twister.init(seed); }, + rand: function(mt) { return mersenne_twister.genrand_real(mt); } + }); + + $writer = [$$$(self, 'MERSENNE_TWISTER_GENERATOR')]; + $send(self, 'generator=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + })('::', null); +}; + +Opal.modules["corelib/random"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $klass = Opal.klass, $Kernel = Opal.Kernel, $defs = Opal.defs, $Opal = Opal.Opal, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $send = Opal.send; + + Opal.add_stubs('require,attr_reader,to_int,raise,new_seed,coerce_to!,reseed,rand,seed,bytes,===,==,state,_verify_count,encode,join,new,chr,random_number,random_float,const_defined?,const_set'); + + self.$require("corelib/random/formatter"); + (function($base, $super) { + var self = $klass($base, $super, 'Random'); + + + + self.$attr_reader("seed", "state"); + $defs(self, '$_verify_count', function $$_verify_count(count) { + + + if (!$truthy(count)) count = 16; + if (typeof count !== "number") count = (count).$to_int(); + if (count < 0) $Kernel.$raise($$$('ArgumentError'), "negative string size (or size too big)"); + count = Math.floor(count); + return count; + + }, 1); + + $def(self, '$initialize', function $$initialize(seed) { + var self = this; + + + + if (seed == null) seed = $$$('Random').$new_seed();; + seed = $Opal['$coerce_to!'](seed, $$$('Integer'), "to_int"); + self.state = seed; + return self.$reseed(seed); + }, -1); + + $def(self, '$reseed', function $$reseed(seed) { + var self = this; + + + self.seed = seed; + return self.$rng = Opal.$$rand.reseed(seed);; + }, 1); + $defs(self, '$new_seed', function $$new_seed() { + + return Opal.$$rand.new_seed(); + }, 0); + $defs(self, '$rand', function $$rand(limit) { + var self = this; + + + ; + return $$$(self, 'DEFAULT').$rand(limit); + }, -1); + $defs(self, '$srand', function $$srand(n) { + var self = this, previous_seed = nil; + + + + if (n == null) n = $$$('Random').$new_seed();; + n = $Opal['$coerce_to!'](n, $$$('Integer'), "to_int"); + previous_seed = $$$(self, 'DEFAULT').$seed(); + $$$(self, 'DEFAULT').$reseed(n); + return previous_seed; + }, -1); + $defs(self, '$urandom', function $$urandom(size) { + + return $$$('SecureRandom').$bytes(size) + }, 1); + + $def(self, '$==', function $Random_$eq_eq$1(other) { + var self = this, $ret_or_1 = nil; + + + if (!$eqeqeq($$$('Random'), other)) { + return false + }; + if ($truthy(($ret_or_1 = self.$seed()['$=='](other.$seed())))) { + return self.$state()['$=='](other.$state()) + } else { + return $ret_or_1 + }; + }, 1); + + $def(self, '$bytes', function $$bytes(length) { + var self = this; + + + length = $$$('Random').$_verify_count(length); + return $send($$$('Array'), 'new', [length], function $$2(){var self = $$2.$$s == null ? this : $$2.$$s; + + return self.$rand(255).$chr()}, {$$arity: 0, $$s: self}).$join().$encode("ASCII-8BIT"); + }, 1); + $defs(self, '$bytes', function $$bytes(length) { + var self = this; + + return $$$(self, 'DEFAULT').$bytes(length) + }, 1); + + $def(self, '$rand', function $$rand(limit) { + var self = this; + + + ; + return self.$random_number(limit); + }, -1); + + $def(self, '$random_float', function $$random_float() { + var self = this; + + + self.state++; + return Opal.$$rand.rand(self.$rng); + + }, 0); + $defs(self, '$random_float', function $$random_float() { + var self = this; + + return $$$(self, 'DEFAULT').$random_float() + }, 0); + return $defs(self, '$generator=', function $Random_generator$eq$3(generator) { + var self = this; + + + Opal.$$rand = generator; + if ($truthy(self['$const_defined?']("DEFAULT"))) { + return $$$(self, 'DEFAULT').$reseed() + } else { + return self.$const_set("DEFAULT", self.$new(self.$new_seed())) + }; + }, 1); + })('::', null); + return self.$require("corelib/random/mersenne_twister"); +}; + +Opal.modules["corelib/unsupported"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $Kernel = Opal.Kernel, $klass = Opal.klass, $send = Opal.send, $module = Opal.module, $def = Opal.def, $alias = Opal.alias, $defs = Opal.defs; + + Opal.add_stubs('raise,warn,each,define_method,%'); + + + var warnings = {}; + + function handle_unsupported_feature(message) { + switch (Opal.config.unsupported_features_severity) { + case 'error': + $Kernel.$raise($$$('NotImplementedError'), message) + break; + case 'warning': + warn(message) + break; + default: // ignore + // noop + } + } + + function warn(string) { + if (warnings[string]) { + return; + } + + warnings[string] = true; + self.$warn(string); + } +; + (function($base, $super) { + var self = $klass($base, $super, 'String'); + + + + var ERROR = "String#%s not supported. Mutable String methods are not supported in Opal."; + return $send(["<<", "capitalize!", "chomp!", "chop!", "downcase!", "gsub!", "lstrip!", "next!", "reverse!", "slice!", "squeeze!", "strip!", "sub!", "succ!", "swapcase!", "tr!", "tr_s!", "upcase!", "prepend", "[]=", "clear", "encode!", "unicode_normalize!"], 'each', [], function $String$1(method_name){var self = $String$1.$$s == null ? this : $String$1.$$s; + + + + if (method_name == null) method_name = nil;; + return $send(self, 'define_method', [method_name], function $$2($a){var $post_args, $rest_arg; + + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return $Kernel.$raise($$$('NotImplementedError'), (ERROR)['$%'](method_name));}, -1);}, {$$arity: 1, $$s: self}); + })('::', null); + (function($base) { + var self = $module($base, 'Kernel'); + + + + var ERROR = "Object freezing is not supported by Opal"; + + $def(self, '$freeze', function $$freeze() { + var self = this; + + + handle_unsupported_feature(ERROR); + return self; + }, 0); + return $def(self, '$frozen?', function $Kernel_frozen$ques$3() { + + + handle_unsupported_feature(ERROR); + return false; + }, 0); + })('::'); + (function($base) { + var self = $module($base, 'Kernel'); + + + + var ERROR = "Object tainting is not supported by Opal"; + + $def(self, '$taint', function $$taint() { + var self = this; + + + handle_unsupported_feature(ERROR); + return self; + }, 0); + + $def(self, '$untaint', function $$untaint() { + var self = this; + + + handle_unsupported_feature(ERROR); + return self; + }, 0); + return $def(self, '$tainted?', function $Kernel_tainted$ques$4() { + + + handle_unsupported_feature(ERROR); + return false; + }, 0); + })('::'); + (function($base, $super) { + var self = $klass($base, $super, 'Module'); + + + + + $def(self, '$public', function $Module_public$5($a) { + var $post_args, methods, self = this; + + + + $post_args = Opal.slice.call(arguments); + + methods = $post_args;; + + if (methods.length === 0) { + self.$$module_function = false; + return nil; + } + return (methods.length === 1) ? methods[0] : methods; + ; + }, -1); + + $def(self, '$private_class_method', function $$private_class_method($a) { + var $post_args, methods; + + + + $post_args = Opal.slice.call(arguments); + + methods = $post_args;; + return (methods.length === 1) ? methods[0] : methods;; + }, -1); + + $def(self, '$private_method_defined?', function $Module_private_method_defined$ques$6(obj) { + + return false + }, 1); + + $def(self, '$private_constant', function $$private_constant($a) { + var $post_args, $rest_arg; + + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return nil; + }, -1); + $alias(self, "nesting", "public"); + $alias(self, "private", "public"); + $alias(self, "protected", "public"); + $alias(self, "protected_method_defined?", "private_method_defined?"); + $alias(self, "public_class_method", "private_class_method"); + $alias(self, "public_instance_method", "instance_method"); + $alias(self, "public_instance_methods", "instance_methods"); + return $alias(self, "public_method_defined?", "method_defined?"); + })('::', null); + (function($base) { + var self = $module($base, 'Kernel'); + + + + + $def(self, '$private_methods', function $$private_methods($a) { + var $post_args, methods; + + + + $post_args = Opal.slice.call(arguments); + + methods = $post_args;; + return []; + }, -1); + return $alias(self, "private_instance_methods", "private_methods"); + })('::'); + (function($base, $parent_nesting) { + var self = $module($base, 'Kernel'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$eval', function $Kernel_eval$7($a) { + var $post_args, $rest_arg; + + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return $Kernel.$raise($$$('NotImplementedError'), "To use Kernel#eval, you must first require 'opal-parser'. " + ("See https://github.com/opal/opal/blob/" + ($$('RUBY_ENGINE_VERSION')) + "/docs/opal_parser.md for details.")); + }, -1) + })('::', $nesting); + $defs(self, '$public', function $public$8($a) { + var $post_args, methods; + + + + $post_args = Opal.slice.call(arguments); + + methods = $post_args;; + return (methods.length === 1) ? methods[0] : methods;; + }, -1); + return $defs(self, '$private', function $private$9($a) { + var $post_args, methods; + + + + $post_args = Opal.slice.call(arguments); + + methods = $post_args;; + return (methods.length === 1) ? methods[0] : methods;; + }, -1); +}; + +Opal.queue(function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $Object = Opal.Object; + + Opal.add_stubs('require,autoload'); + + $Object.$require("opal/base"); + $Object.$require("opal/mini"); + $Object.$require("corelib/kernel/format"); + $Object.$require("corelib/string/encoding"); + $Object.$autoload("Math", "corelib/math"); + $Object.$require("corelib/complex/base"); + $Object.$autoload("Complex", "corelib/complex"); + $Object.$require("corelib/rational/base"); + $Object.$autoload("Rational", "corelib/rational"); + $Object.$require("corelib/time"); + $Object.$autoload("Struct", "corelib/struct"); + $Object.$require("corelib/dir"); + $Object.$autoload("File", "corelib/file"); + $Object.$require("corelib/process/base"); + $Object.$autoload("Process", "corelib/process"); + $Object.$autoload("Random", "corelib/random"); + return $Object.$require("corelib/unsupported"); +}); diff --git a/opal/1.4.1/opal.min.js b/opal/1.4.1/opal.min.js new file mode 100644 index 00000000..e4ed162c --- /dev/null +++ b/opal/1.4.1/opal.min.js @@ -0,0 +1 @@ +(function(global_object){"use strict";var console,nil,BasicObject,_Object,Module,Class,_Opal,Kernel;if("undefined"!=typeof globalThis?global_object=globalThis:"undefined"!=typeof global?global_object=global:"undefined"!=typeof window&&(global_object=window),"log"in(console="object"==typeof global_object.console?global_object.console:null==global_object.console?global_object.console={}:{})||(console.log=function(){}),"warn"in console||(console.warn=console.log),void 0!==global_object.Opal)return console.warn("Opal already loaded. Loading twice can cause troubles, please fix your setup."),global_object.Opal;var Opal=global_object.Opal={};Opal.global=global_object,global_object.Opal=Opal,Opal.config={missing_require_severity:"error",unsupported_features_severity:"warning",experimental_features_severity:"warning",enable_stack_trace:!0};var $has_own=Object.hasOwnProperty,$bind=Function.prototype.bind,$set_proto=Object.setPrototypeOf,$slice=Array.prototype.slice,$splice=Array.prototype.splice,unique_id=4;function $prop(object,name,initialValue){"string"==typeof object?object[name]=initialValue:Object.defineProperty(object,name,{value:initialValue,enumerable:!1,configurable:!0,writable:!0})}Opal.uid=function(){return unique_id+=2},Opal.id=function(obj){return obj.$$is_number?2*obj+1:(null!=obj.$$id||$prop(obj,"$$id",Opal.uid()),obj.$$id)},Opal.gvars={},Opal.exit=function(status){Opal.gvars.DEBUG&&console.log("Exited with status "+status)},Opal.exceptions=[],Opal.pop_exception=function(){var exception=Opal.exceptions.pop();exception?(Opal.gvars["!"]=exception,Opal.gvars["@"]=exception.$backtrace()):Opal.gvars["!"]=Opal.gvars["@"]=nil},Opal.prop=$prop,Opal.defineProperty=Opal.prop,Opal.slice=$slice;var $truthy=Opal.truthy=function(val){return!(!1===val||nil===val||null==val||val instanceof Boolean&&!0!==val.valueOf())};function invoke_tracers_for_class(klass_or_module){var i,ii,tracer;for(i=0,ii=Opal.tracers_for_class.length;i=0;i--){var ancestor=ancestors[i];for(var cvar in ancestor.$$cvars)result[cvar]=ancestor.$$cvars[cvar]}return result},Opal.class_variable_set=function(module,name,value){var i,ancestors=Opal.ancestors(module);for(i=ancestors.length-2;i>=0;i--){var ancestor=ancestors[i];if($has_own.call(ancestor.$$cvars,name))return ancestor.$$cvars[name]=value,value}return module.$$cvars[name]=value,value},Opal.class_variable_get=function(module,name,tolerant){if($has_own.call(module.$$cvars,name))return module.$$cvars[name];var i,ancestors=Opal.ancestors(module),length=ancestors.length;for(i=0;i1||(has_mlhs||has_trailing_comma)&&1===block.length)&&(arg=Opal.to_ary(arg)),(block.length>1||has_trailing_comma&&1===block.length)&&arg.$$is_array?block.apply(null,arg):block(arg)},Opal.yieldX=function(block,args){if("function"!=typeof block)throw Opal.LocalJumpError.$new("no block given");if(block.length>1&&1===args.length&&args[0].$$is_array)return block.apply(null,args[0]);if(!args.$$is_array){for(var args_ary=new Array(args.length),i=0,l=args_ary.length;i=0;k--)if(void 0!==(refinement=refinements[k]).$$refine_modules&&void 0!==(refine_modules=refinement.$$refine_modules)[ancestor]&&void 0!==(refine_module=refine_modules[ancestor]).$$prototype["$"+method])return body=refine_module.$$prototype["$"+method],Opal.send2(recv,body,method,args,block);return Opal.send(recv,method,args,block)},Opal.lambda=function(block,blockopts){return block.$$is_lambda=!0,apply_blockopts(block,blockopts),block},Opal.def=function(obj,jsid,body,blockopts){return apply_blockopts(body,blockopts),obj===Opal.top?Opal.defn(Opal.Object,jsid,body):!obj.$$eval&&obj.$$is_a_module?Opal.defn(obj,jsid,body):Opal.defs(obj,jsid,body)},Opal.defn=function(module,jsid,body){body.displayName=jsid,body.$$owner=module;var name=jsid.substr(1),proto=module.$$prototype;if(proto.hasOwnProperty("$$dummy")&&(proto=proto.$$define_methods_on),$prop(proto,jsid,body),module.$$is_module){module.$$module_function&&Opal.defs(module,jsid,body);for(var i=0,iclasses=module.$$iclasses,length=iclasses.length;i=0,i=0,ii=parts.length;ir:l["$>"](r)},Opal.rb_le=function(l,r){return"number"==typeof l&&"number"==typeof r?l<=r:l["$<="](r)},Opal.rb_ge=function(l,r){return"number"==typeof l&&"number"==typeof r?l>=r:l["$>="](r)},Opal.eqeq=function(lhs,rhs){return"number"==typeof lhs&&"number"==typeof rhs||"string"==typeof lhs&&"string"==typeof rhs?lhs===rhs:$truthy(lhs["$=="](rhs))},Opal.eqeqeq=function(lhs,rhs){return"number"==typeof lhs&&"number"==typeof rhs||"string"==typeof lhs&&"string"==typeof rhs?lhs===rhs:$truthy(lhs["$==="](rhs))},Opal.neqeq=function(lhs,rhs){return"number"==typeof lhs&&"number"==typeof rhs||"string"==typeof lhs&&"string"==typeof rhs?lhs!==rhs:$truthy(lhs["$!="](rhs))},Opal.not=function(arg){return!0!==arg&&(null==arg||!1===arg||nil===arg||$truthy(arg["$!"]()))},Opal.BasicObject=BasicObject=Opal.allocate_class("BasicObject",null),Opal.Object=_Object=Opal.allocate_class("Object",Opal.BasicObject),Opal.Module=Module=Opal.allocate_class("Module",Opal.Object),Opal.Class=Class=Opal.allocate_class("Class",Opal.Module),Opal.Opal=_Opal=Opal.allocate_module("Opal"),Opal.Kernel=Kernel=Opal.allocate_module("Kernel"),$set_proto(Opal.BasicObject,Opal.Class.$$prototype),$set_proto(Opal.Object,Opal.Class.$$prototype),$set_proto(Opal.Module,Opal.Class.$$prototype),$set_proto(Opal.Class,Opal.Class.$$prototype),BasicObject.$$const.BasicObject=BasicObject,$const_set(_Object,"BasicObject",BasicObject),$const_set(_Object,"Object",_Object),$const_set(_Object,"Module",Module),$const_set(_Object,"Class",Class),$const_set(_Object,"Opal",_Opal),$const_set(_Object,"Kernel",Kernel),BasicObject.$$class=Class,_Object.$$class=Class,Module.$$class=Class,Class.$$class=Class,_Opal.$$class=Module,Kernel.$$class=Module,$prop(_Object.$$prototype,"toString",(function(){var to_s=this.$to_s();return to_s.$$is_string&&"object"==typeof to_s?to_s.valueOf():to_s})),$prop(_Object.$$prototype,"$require",Opal.require),Opal.top=new _Object,Opal.top.$to_s=Opal.top.$inspect=function(){return"main"},Opal.top.$define_method=function top_define_method(){var args=Opal.slice.call(arguments),block=top_define_method.$$p;return delete top_define_method.$$p,Opal.send(_Object,"define_method",args,block)},Opal.NilClass=Opal.allocate_class("NilClass",Opal.Object),$const_set(_Object,"NilClass",Opal.NilClass),(nil=Opal.nil=new Opal.NilClass).$$id=4,nil.call=nil.apply=function(){throw Opal.LocalJumpError.$new("no block given")},Opal.breaker=new Error("unexpected break (old)"),Opal.returner=new Error("unexpected return"),TypeError.$$super=Error}).call(this),Opal.loaded(["corelib/runtime.js"]),Opal.modules["corelib/helpers"]=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$type_error=Opal.type_error,$coerce_to=Opal.coerce_to,$module=Opal.module,$defs=Opal.defs,$eqeqeq=Opal.eqeqeq,$Kernel=Opal.Kernel,$truthy=Opal.truthy,$Opal=Opal.Opal;return Opal.add_stubs("===,raise,respond_to?,nil?,__send__,<=>,class,coerce_to!,new,to_s,__id__"),function($base){var self=$module("::","Opal");$defs(self,"$bridge",(function(constructor,klass){return Opal.bridge(constructor,klass)}),2),$defs(self,"$coerce_to!",(function(object,type,method,$a){var $post_args,coerced=nil;return $post_args=Opal.slice.call(arguments,3),coerced=$coerce_to(object,type,method,$post_args),$eqeqeq(type,coerced)||$Kernel.$raise($type_error(object,type,method,coerced)),coerced}),-4),$defs(self,"$coerce_to?",(function(object,type,method,$a){var args,coerced=nil;return args=Opal.slice.call(arguments,3),$truthy(object["$respond_to?"](method))?(coerced=$coerce_to(object,type,method,args),$truthy(coerced["$nil?"]())?nil:($eqeqeq(type,coerced)||$Kernel.$raise($type_error(object,type,method,coerced)),coerced)):nil}),-4),$defs(self,"$try_convert",(function(object,type,method){return $eqeqeq(type,object)?object:$truthy(object["$respond_to?"](method))?object.$__send__(method):nil}),3),$defs(self,"$compare",(function(a,b){var compare;return compare=a["$<=>"](b),$truthy(compare===nil)&&$Kernel.$raise($$$("ArgumentError"),"comparison of "+a.$class()+" with "+b.$class()+" failed"),compare}),2),$defs(self,"$destructure",(function(args){if(1==args.length)return args[0];if(args.$$is_array)return args;for(var args_ary=new Array(args.length),i=0,l=args_ary.length;i=0;i--)method_name=method_names[i],(method=owner_class.$$prototype["$"+method_name])&&!method.$$stub&&(method.$$pristine=!0);return nil}),-2);var inspect_stack=[];return $defs(self,"$inspect",(function(value){var pushed=!1;return function(){try{try{return null===value?"null":void 0===value?"undefined":void 0===value.$$class?Object.prototype.toString.apply(value):"function"!=typeof value.$inspect||value.$inspect.$$stub||-1!==inspect_stack.indexOf(value.$__id__())?"#<"+value.$$class+":0x"+value.$__id__().$to_s(16)+">":(inspect_stack.push(value.$__id__()),pushed=!0,value.$inspect())}catch($err){if(!Opal.rescue($err,[$$$("Exception")]))throw $err;$err;try{return"#<"+value.$$class+":0x"+value.$__id__().$to_s(16)+">"}finally{Opal.pop_exception()}}}finally{pushed&&inspect_stack.pop()}}()}),-1)}()},Opal.modules["corelib/module"]=function(Opal){var self,$proto,nil=Opal.nil,$$$=Opal.$$$,$truthy=Opal.truthy,$coerce_to=Opal.coerce_to,$const_set=Opal.const_set,$Object=Opal.Object,$klass=Opal.klass,$defs=Opal.defs,$send=Opal.send,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$Module=Opal.Module,$Kernel=Opal.Kernel,$rb_lt=Opal.rb_lt,$rb_gt=Opal.rb_gt,$to_a=Opal.to_a,$hash2=Opal.hash2,$Opal=Opal.Opal,$eqeq=Opal.eqeq,$lambda=Opal.lambda,$range=Opal.range,$send2=Opal.send2,$find_super=Opal.find_super,$alias=Opal.alias;return Opal.add_stubs("module_eval,to_proc,===,raise,equal?,<,>,nil?,attr_reader,attr_writer,warn,attr_accessor,const_name?,class_variable_name!,const_name!,=~,new,inject,split,const_get,==,start_with?,!~,bind,call,class,append_features,included,name,cover?,size,merge,compile,proc,any?,prepend_features,prepended,to_s,__id__,constants,include?,copy_class_variables,copy_constants,class_exec,inspect"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Module"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$defs(self,"$allocate",(function(){var module=Opal.allocate_module(nil,(function(){}));return this!==Opal.Module&&Object.setPrototypeOf(module,this.$$prototype),module}),0),$def(self,"$initialize",(function $$initialize(){var block=$$initialize.$$p||nil;return delete $$initialize.$$p,block!==nil?$send(this,"module_eval",[],block.$to_proc()):nil}),0),$def(self,"$===",(function(object){return!$truthy(null==object)&&Opal.is_a(object,this)}),1),$def(self,"$<",(function(other){$eqeqeq($Module,other)||$Kernel.$raise($$$("TypeError"),"compared with non class/module");var ancestors,i,length;if(this===other)return!1;for(i=0,length=(ancestors=Opal.ancestors(this)).length;i",(function(other){return $eqeqeq($Module,other)||$Kernel.$raise($$$("TypeError"),"compared with non class/module"),$rb_lt(other,this)}),1),$def(self,"$>=",(function(other){var $ret_or_1;return $truthy($ret_or_1=this["$equal?"](other))?$ret_or_1:$rb_gt(this,other)}),1),$def(self,"$<=>",(function(other){var lt=nil;return this===other?0:$eqeqeq($Module,other)?(lt=$rb_lt(this,other),$truthy(lt["$nil?"]())?nil:$truthy(lt)?-1:1):nil}),1),$def(self,"$alias_method",(function(newname,oldname){return newname=$coerce_to(newname,$$$("String"),"to_str"),oldname=$coerce_to(oldname,$$$("String"),"to_str"),Opal.alias(this,newname,oldname),this}),2),$def(self,"$alias_native",(function(mid,jsid){return null==jsid&&(jsid=mid),Opal.alias_native(this,mid,jsid),this}),-2),$def(self,"$ancestors",(function(){return Opal.ancestors(this)}),0),$def(self,"$append_features",(function(includer){return Opal.append_features(this,includer),this}),1),$def(self,"$attr_accessor",(function($a){var $post_args,names,self=this;return $post_args=Opal.slice.call(arguments),$send(self,"attr_reader",$to_a(names=$post_args)),$send(self,"attr_writer",$to_a(names))}),-1),$def(self,"$attr",(function($a){var args,self=this;return 2!=(args=Opal.slice.call(arguments)).length||!0!==args[1]&&!1!==args[1]?$send(self,"attr_reader",$to_a(args)):(self.$warn("optional boolean argument is obsoleted",$hash2(["uplevel"],{uplevel:1})),args[1]?self.$attr_accessor(args[0]):self.$attr_reader(args[0]),nil)}),-1),$def(self,"$attr_reader",(function($a){var names,self=this;names=Opal.slice.call(arguments);for(var proto=self.$$prototype,i=names.length-1;i>=0;i--){var name=names[i],id="$"+name,ivar=Opal.ivar(name),body=function(ivar){return function(){return null==this[ivar]?nil:this[ivar]}}(ivar);Opal.prop(proto,ivar,nil),body.$$parameters=[],body.$$arity=0,Opal.defn(self,id,body)}return nil}),-1),$def(self,"$attr_writer",(function($a){var names,self=this;names=Opal.slice.call(arguments);for(var proto=self.$$prototype,i=names.length-1;i>=0;i--){var name=names[i],id="$"+name+"=",ivar=Opal.ivar(name),body=function(ivar){return function(value){return this[ivar]=value}}(ivar);body.$$parameters=[["req"]],body.$$arity=1,Opal.prop(proto,ivar,nil),Opal.defn(self,id,body)}return nil}),-1),$def(self,"$autoload",(function(const$,path){return $$("Opal")["$const_name?"](const$)||$Kernel.$raise($$$("NameError"),"autoload must be constant name: "+const$),""==path&&$Kernel.$raise($$$("ArgumentError"),"empty file name"),this.$$const.hasOwnProperty(const$)||(this.$$autoload||(this.$$autoload={}),Opal.const_cache_version++,this.$$autoload[const$]={path:path,loaded:!1,required:!1,success:!1,exception:!1}),nil}),2),$def(self,"$autoload?",(function(const$){if(this.$$autoload&&this.$$autoload[const$]&&!this.$$autoload[const$].required&&!this.$$autoload[const$].success)return this.$$autoload[const$].path;for(var ancestors=this.$ancestors(),i=0,length=ancestors.length;i=0;i--){var mod=mods[i];mod.$$is_module||$Kernel.$raise($$$("TypeError"),"wrong argument type "+mod.$class()+" (expected Module)"),mod.$append_features(self),mod.$included(self)}return self}),-1),$def(self,"$included_modules",(function(){return Opal.included_modules(this)}),0),$def(self,"$include?",(function(mod){mod.$$is_module||$Kernel.$raise($$$("TypeError"),"wrong argument type "+mod.$class()+" (expected Module)");var i,ii,mod2,ancestors=Opal.ancestors(this);for(i=0,ii=ancestors.length;i=0;i--){var mod=mods[i];mod.$$is_module||$Kernel.$raise($$$("TypeError"),"wrong argument type "+mod.$class()+" (expected Module)"),mod.$prepend_features(self),mod.$prepended(self)}return self}),-1),$def(self,"$prepend_features",(function(prepender){return this.$$is_module||$Kernel.$raise($$$("TypeError"),"wrong argument type "+this.$class()+" (expected Module)"),Opal.prepend_features(this,prepender),this}),1),$def(self,"$prepended",(function(mod){return nil}),1),$def(self,"$remove_const",(function(name){return Opal.const_remove(this,name)}),1),$def(self,"$to_s",(function(){var $ret_or_1;return $truthy($ret_or_1=Opal.Module.$name.call(this))?$ret_or_1:"#<"+(this.$$is_module?"Module":"Class")+":0x"+this.$__id__().$to_s(16)+">"}),0),$def(self,"$undef_method",(function($a){for(var names,self=this,i=0,length=(names=Opal.slice.call(arguments)).length;i":$send2(this,$find_super(this,"inspect",$$inspect,!1,!0),"inspect",[],$yield)}),0)},Opal.modules["corelib/class"]=function(Opal){var self=Opal.top,nil=Opal.nil,$klass=Opal.klass,$send=Opal.send,$defs=Opal.defs,$def=Opal.def,$rb_plus=Opal.rb_plus,$send2=Opal.send2,$find_super=Opal.find_super,$alias=Opal.alias;return Opal.add_stubs("require,class_eval,to_proc,+,subclasses,flatten,map,initialize_copy,allocate,name,to_s"),self.$require("corelib/module"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Class"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$new",(function $Class_new$1(superclass){var block=$Class_new$1.$$p||nil;if(delete $Class_new$1.$$p,null==superclass&&(superclass=$$("Object")),!superclass.$$is_class)throw Opal.TypeError.$new("superclass must be a Class");var klass=Opal.allocate_class(nil,superclass);return superclass.$inherited(klass),block!==nil&&$send(klass,"class_eval",[],block.$to_proc()),klass}),-1),$def(self,"$allocate",(function(){var obj=new this.$$constructor;return obj.$$id=Opal.uid(),obj}),0),$def(self,"$descendants",(function(){return $rb_plus(this.$subclasses(),$send(this.$subclasses(),"map",[],"descendants".$to_proc()).$flatten())}),0),$def(self,"$inherited",(function(cls){return nil}),1),$def(self,"$initialize_dup",(function(original){this.$initialize_copy(original),this.$$name=null,this.$$full_name=null}),1),$def(self,"$new",(function $Class_new$2($a){var args,block=$Class_new$2.$$p||nil,self=this;delete $Class_new$2.$$p,args=Opal.slice.call(arguments);var object=self.$allocate();return Opal.send(object,object.$initialize,args,block),object}),-1),$def(self,"$subclasses",(function(){if("undefined"!=typeof WeakRef){var i,subclass,out=[];for(i=0;i":singleton_of?"#>":$send2(this,$find_super(this,"to_s",$$to_s,!1,!0),"to_s",[],null)}),0),$alias(self,"inspect","to_s")}(0,0,[])},Opal.modules["corelib/basic_object"]=function(Opal){"use strict";var self,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$def=Opal.def,$alias=Opal.alias,$truthy=Opal.truthy,$range=Opal.range,$Kernel=Opal.Kernel,$to_a=Opal.to_a,$hash2=Opal.hash2,$Opal=Opal.Opal,$send=Opal.send,$eqeq=Opal.eqeq,$rb_ge=Opal.rb_ge;return Opal.add_stubs("==,raise,inspect,!,nil?,cover?,size,merge,compile,proc,[],first,>=,length,instance_variable_get,any?,new,caller,pristine"),self=$klass("::",null,"BasicObject"),$def(self,"$initialize",(function($a){return Opal.slice.call(arguments),nil}),-1),$def(self,"$==",(function(other){return this===other}),1),$def(self,"$eql?",(function(other){return this["$=="](other)}),1),$alias(self,"equal?","=="),$def(self,"$__id__",(function(){return null!=this.$$id||Opal.prop(this,"$$id",Opal.uid()),this.$$id}),0),$def(self,"$__send__",(function $$__send__(symbol,$a){var args,block=$$__send__.$$p||nil,self=this;delete $$__send__.$$p,args=Opal.slice.call(arguments,1),symbol.$$is_string||self.$raise($$$("TypeError"),self.$inspect()+" is not a symbol nor a string");var func=self["$"+symbol];return func?(block!==nil&&(func.$$p=block),func.apply(self,args)):(block!==nil&&(self.$method_missing.$$p=block),self.$method_missing.apply(self,[symbol].concat(args)))}),-2),$def(self,"$!",(function(){return!1}),0),$def(self,"$!=",(function(other){return this["$=="](other)["$!"]()}),1),$def(self,"$instance_eval",(function $$instance_eval($a){var args,$b,block=$$instance_eval.$$p||nil,self=this,string=nil,file=nil,default_eval_options=nil,$ret_or_1=nil,compiling_options=nil,compiled=nil;if(delete $$instance_eval.$$p,args=Opal.slice.call(arguments),$truthy(block["$nil?"]())&&$truthy(!!Opal.compile))$truthy($range(1,3,!1)["$cover?"](args.$size()))||$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments (0 for 1..3)"),string=null==($b=[].concat($to_a(args)))[0]?nil:$b[0],file=null==$b[1]?nil:$b[1],null==$b[2]||$b[2],default_eval_options=$hash2(["file","eval"],{file:$truthy($ret_or_1=file)?$ret_or_1:"(eval)",eval:!0}),compiling_options=Opal.hash({arity_check:!1}).$merge(default_eval_options),compiled=$Opal.$compile(string,compiling_options),block=$send($Kernel,"proc",[],(function $$5(){var self=null==$$5.$$s?this:$$5.$$s;return new Function("Opal,self","return "+compiled)(Opal,self)}),{$$arity:0,$$s:self});else{if($truthy(block["$nil?"]())&&$truthy($rb_ge(args.$length(),1))&&$eqeq(args.$first()["$[]"](0),"@"))return self.$instance_variable_get(args.$first());$truthy(args["$any?"]())&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+args.$size()+" for 0)")}var result,old=block.$$s;if(block.$$s=null,self.$$is_a_module){self.$$eval=!0;try{result=block.call(self,self)}finally{self.$$eval=!1}}else result=block.call(self,self);return block.$$s=old,result}),-1),$def(self,"$instance_exec",(function $$instance_exec($a){var args,block=$$instance_exec.$$p||nil,self=this;delete $$instance_exec.$$p,args=Opal.slice.call(arguments),$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"no block given");var result,block_self=block.$$s;if(block.$$s=null,self.$$is_a_module){self.$$eval=!0;try{result=block.apply(self,args)}finally{self.$$eval=!1}}else result=block.apply(self,args);return block.$$s=block_self,result}),-1),$def(self,"$singleton_method_added",(function($a){return Opal.slice.call(arguments),nil}),-1),$def(self,"$singleton_method_removed",(function($a){return Opal.slice.call(arguments),nil}),-1),$def(self,"$singleton_method_undefined",(function($a){return Opal.slice.call(arguments),nil}),-1),$def(self,"$method_missing",(function $$method_missing(symbol,$a){var args,self=this,inspect_result=nil;return delete $$method_missing.$$p,args=Opal.slice.call(arguments,1),inspect_result=$Opal.$inspect(self),$Kernel.$raise($$$("NoMethodError").$new("undefined method `"+symbol+"' for "+inspect_result,symbol,args),nil,$Kernel.$caller(1))}),-2),$Opal.$pristine(self,"method_missing"),$def(self,"$respond_to_missing?",(function(method_name,include_all){return null==include_all&&(include_all=!1),!1}),-2)},Opal.modules["corelib/kernel"]=function(Opal){"use strict";var self,nil=Opal.nil,$$$=Opal.$$$,$truthy=Opal.truthy,$coerce_to=Opal.coerce_to,$respond_to=Opal.respond_to,$Opal=Opal.Opal,$module=Opal.module,$def=Opal.def,$Kernel=Opal.Kernel,$gvars=Opal.gvars,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_lt=Opal.rb_lt,$Object=Opal.Object,$alias=Opal.alias,$klass=Opal.klass;return Opal.add_stubs("!,=~,==,object_id,raise,new,class,coerce_to?,<<,allocate,copy_instance_variables,copy_singleton_methods,initialize_clone,initialize_copy,define_method,singleton_class,to_proc,initialize_dup,for,empty?,pop,call,append_features,extend_object,extended,gets,__id__,include?,each,instance_variables,instance_variable_get,inspect,+,to_s,instance_variable_name!,respond_to?,to_int,coerce_to!,Integer,nil?,===,enum_for,result,any?,print,format,puts,<=,length,[],readline,<,first,split,caller,map,to_str,exception,backtrace,rand,respond_to_missing?,pristine,try_convert!,expand_path,join,start_with?,new_seed,srand,tag,value,open,include"),function($base,$parent_nesting){var self=$module("::","Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$=~",(function(obj){return!1}),1),$def(self,"$!~",(function(obj){return this["$=~"](obj)["$!"]()}),1),$def(self,"$===",(function(other){var $ret_or_1;return $truthy($ret_or_1=this.$object_id()["$=="](other.$object_id()))?$ret_or_1:this["$=="](other)}),1),$def(self,"$<=>",(function(other){this.$$comparable=!0;var x=this["$=="](other);return x&&x!==nil?0:nil}),1),$def(self,"$method",(function(name){var meth=this["$"+name];return meth&&!meth.$$stub||$Kernel.$raise($$$("NameError").$new("undefined method `"+name+"' for class `"+this.$class()+"'",name)),$$$("Method").$new(this,meth.$$owner||this.$class(),meth,name)}),1),$def(self,"$methods",(function(all){return null==all&&(all=!0),$truthy(all)?Opal.methods(this):Opal.own_methods(this)}),-1),$def(self,"$public_methods",(function(all){return null==all&&(all=!0),$truthy(all)?Opal.methods(this):Opal.receiver_methods(this)}),-1),$def(self,"$Array",(function(object){var coerced;return object===nil?[]:object.$$is_array?object:(coerced=$Opal["$coerce_to?"](object,$$$("Array"),"to_ary"))!==nil||(coerced=$Opal["$coerce_to?"](object,$$$("Array"),"to_a"))!==nil?coerced:[object]}),1),$def(self,"$at_exit",(function $$at_exit(){var $ret_or_1,block=$$at_exit.$$p||nil;return null==$gvars.__at_exit__&&($gvars.__at_exit__=nil),delete $$at_exit.$$p,$gvars.__at_exit__=$truthy($ret_or_1=$gvars.__at_exit__)?$ret_or_1:[],$gvars.__at_exit__["$<<"](block),block}),0),$def(self,"$caller",(function(start,length){var stack,result;null==start&&(start=1),null==length&&(length=nil),result=[];for(var i=start+1,ii=(stack=(new Error).$backtrace()).length;i0&&(method=$post_args.shift()),null==method&&(method="each"),args=$post_args,$send($$$("Enumerator"),"for",[self,method].concat($to_a(args)),block.$to_proc())}),-1),$def(self,"$equal?",(function(other){return this===other}),1),$def(self,"$exit",(function(status){var $ret_or_1;for(null==$gvars.__at_exit__&&($gvars.__at_exit__=nil),null==status&&(status=!0),$gvars.__at_exit__=$truthy($ret_or_1=$gvars.__at_exit__)?$ret_or_1:[];!$truthy($gvars.__at_exit__["$empty?"]());)$gvars.__at_exit__.$pop().$call();return status=status.$$is_boolean?status?0:1:$coerce_to(status,$$$("Integer"),"to_int"),Opal.exit(status),nil}),-1),$def(self,"$extend",(function($a){var mods,self=this;mods=Opal.slice.call(arguments);for(var singleton=self.$singleton_class(),i=mods.length-1;i>=0;i--){var mod=mods[i];mod.$$is_module||$Kernel.$raise($$$("TypeError"),"wrong argument type "+mod.$class()+" (expected Module)"),mod.$append_features(singleton),mod.$extend_object(self),mod.$extended(self)}return self}),-1),$def(self,"$gets",(function($a){var args;return null==$gvars.stdin&&($gvars.stdin=nil),args=Opal.slice.call(arguments),$send($gvars.stdin,"gets",$to_a(args))}),-1),$def(self,"$hash",(function(){return this.$__id__()}),0),$def(self,"$initialize_copy",(function(other){return nil}),1);var inspect_stack=[];$def(self,"$inspect",(function(){var self=this,ivs=nil,id=nil,pushed=nil;return function(){try{try{return ivs="",id=self.$__id__(),$truthy(inspect_stack["$include?"](id))?ivs=" ...":(inspect_stack["$<<"](id),pushed=!0,$send(self.$instance_variables(),"each",[],(function $$7(i){var ivar,inspect;return null==i&&(i=nil),ivar=(null==$$7.$$s?this:$$7.$$s).$instance_variable_get(i),inspect=$$("Opal").$inspect(ivar),ivs=$rb_plus(ivs," "+i+"="+inspect)}),{$$arity:1,$$s:self})),"#<"+self.$class()+":0x"+id.$to_s(16)+ivs+">"}catch($err){if(!Opal.rescue($err,[$$("StandardError")]))throw $err;$err;try{return"#<"+self.$class()+":0x"+id.$to_s(16)+">"}finally{Opal.pop_exception()}}}finally{$truthy(pushed)&&inspect_stack.$pop()}}()}),0),$def(self,"$instance_of?",(function(klass){return klass.$$is_class||klass.$$is_module||$Kernel.$raise($$$("TypeError"),"class or module required"),this.$$class===klass}),1),$def(self,"$instance_variable_defined?",(function(name){return name=$Opal["$instance_variable_name!"](name),Opal.hasOwnProperty.call(this,name.substr(1))}),1),$def(self,"$instance_variable_get",(function(name){name=$Opal["$instance_variable_name!"](name);var ivar=this[Opal.ivar(name.substr(1))];return null==ivar?nil:ivar}),1),$def(self,"$instance_variable_set",(function(name,value){return name=$Opal["$instance_variable_name!"](name),this[Opal.ivar(name.substr(1))]=value}),2),$def(self,"$remove_instance_variable",(function(name){name=$Opal["$instance_variable_name!"](name);var val,key=Opal.ivar(name.substr(1));return this.hasOwnProperty(key)?(val=this[key],delete this[key],val):$Kernel.$raise($$$("NameError"),"instance variable "+name+" not defined")}),1),$def(self,"$instance_variables",(function(){var ivar,result=[];for(var name in this)this.hasOwnProperty(name)&&"$"!==name.charAt(0)&&(ivar="$"===name.substr(-1)?name.slice(0,name.length-1):name,result.push("@"+ivar));return result}),0),$def(self,"$Integer",(function(value,base){var i,str,base_digits;return value.$$is_string?"0"===value?0:(void 0===base?base=0:(1===(base=$coerce_to(base,$$$("Integer"),"to_int"))||base<0||base>36)&&$Kernel.$raise($$$("ArgumentError"),"invalid radix "+base),str=(str=(str=value.toLowerCase()).replace(/(\d)_(?=\d)/g,"$1")).replace(/^(\s*[+-]?)(0[bodx]?)/,(function(_,head,flag){switch(flag){case"0b":if(0===base||2===base)return base=2,head;case"0":case"0o":if(0===base||8===base)return base=8,head;case"0d":if(0===base||10===base)return base=10,head;case"0x":if(0===base||16===base)return base=16,head}$Kernel.$raise($$$("ArgumentError"),'invalid value for Integer(): "'+value+'"')})),base_digits="0-"+((base=0===base?10:base)<=10?base-1:"9a-"+String.fromCharCode(base-11+97)),new RegExp("^\\s*[+-]?["+base_digits+"]+\\s*$").test(str)||$Kernel.$raise($$$("ArgumentError"),'invalid value for Integer(): "'+value+'"'),i=parseInt(str,base),isNaN(i)&&$Kernel.$raise($$$("ArgumentError"),'invalid value for Integer(): "'+value+'"'),i):(void 0!==base&&$Kernel.$raise($$$("ArgumentError"),"base specified for non string value"),value===nil&&$Kernel.$raise($$$("TypeError"),"can't convert nil into Integer"),value.$$is_number?((value===1/0||value===-1/0||isNaN(value))&&$Kernel.$raise($$$("FloatDomainError"),value),Math.floor(value)):value["$respond_to?"]("to_int")&&(i=value.$to_int())!==nil?i:$Opal["$coerce_to!"](value,$$$("Integer"),"to_i"))}),-2),$def(self,"$Float",(function(value){var str;return value===nil&&$Kernel.$raise($$$("TypeError"),"can't convert nil into Float"),value.$$is_string?(str=(str=value.toString()).replace(/(\d)_(?=\d)/g,"$1"),/^\s*[-+]?0[xX][0-9a-fA-F]+\s*$/.test(str)?$Kernel.$Integer(str):(/^\s*[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?\s*$/.test(str)||$Kernel.$raise($$$("ArgumentError"),'invalid value for Float(): "'+value+'"'),parseFloat(str))):$Opal["$coerce_to!"](value,$$$("Float"),"to_f")}),1),$def(self,"$Hash",(function(arg){return $truthy(arg["$nil?"]())||$eqeq(arg,[])?$hash2([],{}):$eqeqeq($$$("Hash"),arg)?arg:$Opal["$coerce_to!"](arg,$$$("Hash"),"to_hash")}),1),$def(self,"$is_a?",(function(klass){return klass.$$is_class||klass.$$is_module||$Kernel.$raise($$$("TypeError"),"class or module required"),Opal.is_a(this,klass)}),1),$def(self,"$itself",(function(){return this}),0),$def(self,"$lambda",(function $$lambda(){var block=$$lambda.$$p||nil;return delete $$lambda.$$p,Opal.lambda(block)}),0),$def(self,"$load",(function(file){return file=$Opal["$coerce_to!"](file,$$$("String"),"to_str"),Opal.load(file)}),1),$def(self,"$loop",(function $$loop(){var $yield=$$loop.$$p||nil,e=nil;if(delete $$loop.$$p,$yield===nil)return $send(this,"enum_for",["loop"],(function(){return $$$($$$("Float"),"INFINITY")}),0);for(;$truthy(!0);)try{Opal.yieldX($yield,[])}catch($err){if(!Opal.rescue($err,[$$$("StopIteration")]))throw $err;e=$err;try{return e.$result()}finally{Opal.pop_exception()}}return this}),0),$def(self,"$nil?",(function(){return!1}),0),$def(self,"$printf",(function($a){var $post_args,args,self=this;return $post_args=Opal.slice.call(arguments),$truthy((args=$post_args)["$any?"]())&&self.$print($send(self,"format",$to_a(args))),nil}),-1),$def(self,"$proc",(function $$proc(){var block=$$proc.$$p||nil;return delete $$proc.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to create Proc object without a block"),block.$$is_lambda=!1,block}),0),$def(self,"$puts",(function($a){var strs;return null==$gvars.stdout&&($gvars.stdout=nil),strs=Opal.slice.call(arguments),$send($gvars.stdout,"puts",$to_a(strs))}),-1),$def(self,"$p",(function($a){var $post_args,args;return $post_args=Opal.slice.call(arguments),$send(args=$post_args,"each",[],(function(obj){return null==$gvars.stdout&&($gvars.stdout=nil),null==obj&&(obj=nil),$gvars.stdout.$puts(obj.$inspect())}),1),$truthy($rb_le(args.$length(),1))?args["$[]"](0):args}),-1),$def(self,"$print",(function($a){var strs;return null==$gvars.stdout&&($gvars.stdout=nil),strs=Opal.slice.call(arguments),$send($gvars.stdout,"print",$to_a(strs))}),-1),$def(self,"$readline",(function($a){var args;return null==$gvars.stdin&&($gvars.stdin=nil),args=Opal.slice.call(arguments),$send($gvars.stdin,"readline",$to_a(args))}),-1),$def(self,"$warn",(function($a,$b){var $post_args,$kwargs,strs,uplevel,$c,$d,self=this,location=nil;if(null==$gvars.VERBOSE&&($gvars.VERBOSE=nil),null==$gvars.stderr&&($gvars.stderr=nil),$post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return strs=$post_args,null==(uplevel=$kwargs.$$smap.uplevel)&&(uplevel=nil),$truthy(uplevel)&&(uplevel=$Opal["$coerce_to!"](uplevel,$$$("Integer"),"to_str"),$truthy($rb_lt(uplevel,0))&&$Kernel.$raise($$$("ArgumentError"),"negative level ("+uplevel+")"),$d=($c=self.$caller($rb_plus(uplevel,1),1).$first())===nil||null==$c?nil:$send($c,"split",[":in `"]),location=$d===nil||null==$d?nil:$send($d,"first",[]),$truthy(location)&&(location+=": "),strs=$send(strs,"map",[],(function(s){return null==s&&(s=nil),location+"warning: "+s}),1)),$truthy($gvars.VERBOSE["$nil?"]())||$truthy(strs["$empty?"]())?nil:$send($gvars.stderr,"puts",$to_a(strs))}),-1),$def(self,"$raise",(function(exception,string,backtrace){if(null==$gvars["!"]&&($gvars["!"]=nil),null==$gvars["@"]&&($gvars["@"]=nil),null==string&&(string=nil),null==backtrace&&(backtrace=nil),null==exception&&$gvars["!"]!==nil)throw $gvars["!"];throw null==exception?exception=$$$("RuntimeError").$new(""):$respond_to(exception,"$to_str")?exception=$$$("RuntimeError").$new(exception.$to_str()):exception.$$is_class&&$respond_to(exception,"$exception")?exception=exception.$exception(string):exception.$$is_exception||(exception=$$$("TypeError").$new("exception class/object expected")),backtrace!==nil&&exception.$set_backtrace(backtrace),$gvars["!"]!==nil&&Opal.exceptions.push($gvars["!"]),$gvars["!"]=exception,$gvars["@"]=exception.$backtrace(),exception}),-1),$def(self,"$rand",(function(max){return void 0===max?$$$($$$("Random"),"DEFAULT").$rand():(max.$$is_number&&(max<0&&(max=Math.abs(max)),max%1!=0&&(max=max.$to_i()),0===max&&(max=void 0)),$$$($$$("Random"),"DEFAULT").$rand(max))}),-1),$def(self,"$respond_to?",(function(name,include_all){null==include_all&&(include_all=!1);var body=this["$"+name];return"function"==typeof body&&!body.$$stub||!0!==this["$respond_to_missing?"].$$pristine&&this["$respond_to_missing?"](name,include_all)}),-2),$def(self,"$respond_to_missing?",(function(method_name,include_all){return null==include_all&&(include_all=!1),!1}),-2),$Opal.$pristine(self,"respond_to?","respond_to_missing?"),$def(self,"$require",(function(file){return"string"!=typeof file&&Opal.String&&Opal.Array&&(file=$Opal["$coerce_to!"](file,$$$("String"),"to_str")),Opal.require(file)}),1),$def(self,"$require_relative",(function(file){return $Opal["$try_convert!"](file,$$$("String"),"to_str"),file=$$$("File").$expand_path($$$("File").$join(Opal.current_file,"..",file)),Opal.require(file)}),1),$def(self,"$require_tree",(function(path,$kwargs){var autoload;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");null==(autoload=$kwargs.$$smap.autoload)&&(autoload=!1);var result=[];for(var name in path=$$$("File").$expand_path(path),"."===(path=Opal.normalize(path))&&(path=""),Opal.modules)name["$start_with?"](path)&&(autoload?result.push([name,!0]):result.push([name,Opal.require(name)]));return result}),-2),$def(self,"$singleton_class",(function(){return Opal.get_singleton_class(this)}),0),$def(self,"$sleep",(function(seconds){null==seconds&&(seconds=nil),seconds===nil&&$Kernel.$raise($$$("TypeError"),"can't convert NilClass into time interval"),seconds.$$is_number||$Kernel.$raise($$$("TypeError"),"can't convert "+seconds.$class()+" into time interval"),seconds<0&&$Kernel.$raise($$$("ArgumentError"),"time interval must be positive");for(var get_time=Opal.global.performance?function(){return performance.now()}:function(){return new Date},t=get_time();get_time()-t<=1e3*seconds;);return Math.round(seconds)}),-1),$def(self,"$srand",(function(seed){return null==seed&&(seed=$$("Random").$new_seed()),$$$("Random").$srand(seed)}),-1),$def(self,"$String",(function(str){var $ret_or_1;return $truthy($ret_or_1=$Opal["$coerce_to?"](str,$$$("String"),"to_str"))?$ret_or_1:$Opal["$coerce_to!"](str,$$$("String"),"to_s")}),1),$def(self,"$tap",(function $$tap(){var block=$$tap.$$p||nil;return delete $$tap.$$p,Opal.yield1(block,this),this}),0),$def(self,"$to_proc",(function(){return this}),0),$def(self,"$to_s",(function(){return"#<"+this.$class()+":0x"+this.$__id__().$to_s(16)+">"}),0),$def(self,"$catch",(function $Kernel_catch$17(tag){var $yield=$Kernel_catch$17.$$p||nil,$ret_or_1=nil,e=nil;delete $Kernel_catch$17.$$p,null==tag&&(tag=nil);try{return tag=$truthy($ret_or_1=tag)?$ret_or_1:$Object.$new(),Opal.yield1($yield,tag)}catch($err){if(!Opal.rescue($err,[$$$("UncaughtThrowError")]))throw $err;e=$err;try{return $eqeq(e.$tag(),tag)?e.$value():$Kernel.$raise()}finally{Opal.pop_exception()}}}),-1),$def(self,"$throw",(function(tag,obj){return null==obj&&(obj=nil),$Kernel.$raise($$$("UncaughtThrowError").$new(tag,obj))}),-2),$def(self,"$open",(function $$open($a){var args,block=$$open.$$p||nil;return delete $$open.$$p,args=Opal.slice.call(arguments),$send($$$("File"),"open",$to_a(args),block.$to_proc())}),-1),$def(self,"$yield_self",(function $$yield_self(){var $yield=$$yield_self.$$p||nil;return delete $$yield_self.$$p,$yield===nil?$send(this,"enum_for",["yield_self"],(function(){return 1}),0):Opal.yield1($yield,this)}),0),$alias(self,"fail","raise"),$alias(self,"kind_of?","is_a?"),$alias(self,"object_id","__id__"),$alias(self,"public_send","__send__"),$alias(self,"send","__send__"),$alias(self,"then","yield_self"),$alias(self,"to_enum","enum_for")}(0,[]),self=$klass("::",null,"Object"),delete $Object.$$prototype.$require,self.$include($Kernel)},Opal.modules["corelib/main"]=function(Opal){var self=Opal.top,$def=(Opal.nil,Opal.def),$Object=Opal.Object,$Kernel=Opal.Kernel;return Opal.add_stubs("include,raise"),function(self,$parent_nesting){return $def(self,"$to_s",(function(){return"main"}),0),$def(self,"$include",(function(mod){return $Object.$include(mod)}),1),$def(self,"$autoload",(function($a){var args;return args=Opal.slice.call(arguments),Opal.Object.$autoload.apply(Opal.Object,args)}),-1),$def(self,"$using",(function(mod){return $Kernel.$raise("main.using is permitted only at toplevel")}),1)}(Opal.get_singleton_class(self))},Opal.modules["corelib/error/errno"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$klass=Opal.klass;return Opal.add_stubs("+,errno,class,attr_reader"),function($base,$parent_nesting){var errors,i,self=$module("::","Errno"),klass=([self].concat($parent_nesting),nil);for(errors=[["EINVAL","Invalid argument",22],["EEXIST","File exists",17],["EISDIR","Is a directory",21],["EMFILE","Too many open files",24],["EACCES","Permission denied",13],["EPERM","Operation not permitted",1],["ENOENT","No such file or directory",2]],klass=nil,i=0;i0?args[0]:nil,error=new self.$$constructor(message);return error.name=self.$$name,error.message=message,error.cause=$gvars["!"],Opal.send(error,error.$initialize,args),Opal.config.enable_stack_trace&&Error.captureStackTrace&&Error.captureStackTrace(error,stack_trace_limit),error}),-1),stack_trace_limit=self.$new,$defs(self,"$exception",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send(self,"new",$to_a($post_args))}),-1),$def(self,"$initialize",(function($a){var args,self=this;return args=Opal.slice.call(arguments),self.message=args.length>0?args[0]:nil}),-1),$def(self,"$backtrace",(function(){if(this.backtrace)return this.backtrace;var backtrace=this.stack;return void 0!==backtrace&&backtrace.$$is_string?this.backtrace=correct_backtrace(backtrace.split("\n").slice(0,15)):backtrace?this.backtrace=correct_backtrace(backtrace.slice(0,15)):[]}),0),$def(self,"$backtrace_locations",(function(){var $a;return this.backtrace_locations||(this.backtrace_locations=($a=this.$backtrace())===nil||null==$a?nil:$send($a,"map",[],(function(loc){return null==loc&&(loc=nil),$$$($$$($$$("Thread"),"Backtrace"),"Location").$new(loc)}),1)),this.backtrace_locations}),0),$def(self,"$cause",(function(){return this.cause||nil}),0),$def(self,"$exception",(function(str){if(null==str&&(str=nil),str===nil||this===str)return this;var cloned=this.$clone();return cloned.message=str,this.backtrace&&(cloned.backtrace=this.backtrace.$dup()),cloned.stack=this.stack,cloned.cause=this.cause,cloned}),-1),$def(self,"$message",(function(){return this.$to_s()}),0),$def(self,"$full_message",(function(kwargs){var $b,$ret_or_1,highlight,order,first,bold_underline=nil,bold=nil,reset=nil,bt=nil,msg=nil;return null==$gvars.stderr&&($gvars.stderr=nil),null==kwargs&&(kwargs=nil),$truthy($$("Hash","skip_raise")?"constant":nil)?(order=($b=[(kwargs=$hash2(["highlight","order"],{highlight:$gvars.stderr["$tty?"](),order:"top"}).$merge($truthy($ret_or_1=kwargs)?$ret_or_1:$hash2([],{})))["$[]"]("highlight"),kwargs["$[]"]("order")])[1],$truthy([!0,!1]["$include?"](highlight=$b[0]))||$Kernel.$raise($$$("ArgumentError"),"expected true or false as highlight: "+highlight),$truthy(["top","bottom"]["$include?"](order))||$Kernel.$raise($$$("ArgumentError"),"expected :top or :bottom as order: "+order),$truthy(highlight)?(bold_underline="",bold="",reset=""):bold_underline=bold=reset="",bt=this.$backtrace().$dup(),($not(bt)||$truthy(bt["$empty?"]()))&&(bt=this.$caller()),first=bt.$shift(),msg=$rb_plus(msg=first+": ",""+bold+this.$to_s()+" ("+bold_underline+this.$class()+reset+bold+")"+reset+"\n"),msg=$rb_plus(msg,$send(bt,"map",[],(function(loc){return null==loc&&(loc=nil),"\tfrom "+loc+"\n"}),1).$join()),$truthy(this.$cause())&&(msg=$rb_plus(msg,this.$cause().$full_message($hash2(["highlight"],{highlight:highlight})))),$eqeq(order,"bottom")&&(msg=msg.$split("\n").$reverse().$join("\n"),msg=$rb_plus(bold+"Traceback"+reset+" (most recent call last):\n",msg)),msg):this.message+"\n"+this.stack}),-1),$def(self,"$inspect",(function(){var as_str=nil;return as_str=this.$to_s(),$truthy(as_str["$empty?"]())?this.$class().$to_s():"#<"+this.$class().$to_s()+": "+this.$to_s()+">"}),0),$def(self,"$set_backtrace",(function(backtrace){var i,ii,valid=!0;if(backtrace===nil)this.backtrace=nil,this.stack="";else if(backtrace.$$is_string)this.backtrace=[backtrace],this.stack=" from "+backtrace;else{if(backtrace.$$is_array){for(i=0,ii=backtrace.length;i,length,Rational"),function($base,$super,$parent_nesting){var self=$klass("::",null,"NilClass");[self].concat($parent_nesting);return self.$$prototype.$$meta=self,function(self,$parent_nesting){$def(self,"$allocate",(function(){return $Kernel.$raise($$$("TypeError"),"allocator undefined for "+this.$name())}),0),Opal.udef(self,"$new")}(Opal.get_singleton_class(self)),$def(self,"$!",(function(){return!0}),0),$def(self,"$&",(function(other){return!1}),1),$def(self,"$|",(function(other){return!1!==other&&other!==nil}),1),$def(self,"$^",(function(other){return!1!==other&&other!==nil}),1),$def(self,"$==",(function(other){return other===nil}),1),$def(self,"$dup",(function(){return nil}),0),$def(self,"$clone",(function($kwargs){if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==$kwargs.$$smap.freeze&&!0,nil}),-1),$def(self,"$inspect",(function(){return"nil"}),0),$def(self,"$nil?",(function(){return!0}),0),$def(self,"$singleton_class",(function(){return $NilClass}),0),$def(self,"$to_a",(function(){return[]}),0),$def(self,"$to_h",(function(){return Opal.hash()}),0),$def(self,"$to_i",(function(){return 0}),0),$def(self,"$to_s",(function(){return""}),0),$def(self,"$to_c",(function(){return $$$("Complex").$new(0,0)}),0),$def(self,"$rationalize",(function($a){var $post_args;return $post_args=Opal.slice.call(arguments),$truthy($rb_gt($post_args.$length(),1))&&$Kernel.$raise($$$("ArgumentError")),$Kernel.$Rational(0,1)}),-1),$def(self,"$to_r",(function(){return $Kernel.$Rational(0,1)}),0),$def(self,"$instance_variables",(function(){return[]}),0),$alias(self,"to_f","to_i")}(0,0,[])},Opal.modules["corelib/boolean"]=function(Opal){"use strict";var nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$Kernel=Opal.Kernel,$def=Opal.def,$hash2=Opal.hash2,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$alias=Opal.alias;return Opal.add_stubs("raise,name"),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Boolean");[self].concat($parent_nesting);Opal.prop(self.$$prototype,"$$is_boolean",!0);for(var properties=["$$class","$$meta"],i=0;i,<,===,raise,class,<=>,equal?"),function($base){var self=$module("::","Comparable"),$ret_or_1=nil;function normalize(what){return Opal.is_a(what,Opal.Integer)?what:$rb_gt(what,0)?1:$rb_lt(what,0)?-1:0}function cmp_or_fail(lhs,rhs){var cmp=lhs["$<=>"](rhs);return $truthy(cmp)||function(lhs,rhs){var class_name;class_name=$eqeqeq(nil,$ret_or_1=rhs)||$eqeqeq(!0,$ret_or_1)||$eqeqeq(!1,$ret_or_1)||$eqeqeq($$$("Integer"),$ret_or_1)||$eqeqeq($$$("Float"),$ret_or_1)?rhs.$inspect():rhs.$$class,$Kernel.$raise($$$("ArgumentError"),"comparison of "+lhs.$class()+" with "+class_name+" failed")}(lhs,rhs),normalize(cmp)}return $def(self,"$==",(function(other){var cmp;return!!$truthy(this["$equal?"](other))||this["$<=>"]!=Opal.Kernel["$<=>"]&&(this.$$comparable?(delete this.$$comparable,!1):!!$truthy(cmp=this["$<=>"](other))&&0==normalize(cmp))}),1),$def(self,"$>",(function(other){return cmp_or_fail(this,other)>0}),1),$def(self,"$>=",(function(other){return cmp_or_fail(this,other)>=0}),1),$def(self,"$<",(function(other){return cmp_or_fail(this,other)<0}),1),$def(self,"$<=",(function(other){return cmp_or_fail(this,other)<=0}),1),$def(self,"$between?",(function(min,max){return!$rb_lt(this,min)&&!$rb_gt(this,max)}),2),$def(self,"$clamp",(function(min,max){var c,excl;if(null==max&&(max=nil),max===nil&&(Opal.is_a(min,Opal.Range)||$Kernel.$raise($$$("TypeError"),"wrong argument type "+min.$class()+" (expected Range)"),excl=min.excl,max=min.end,min=min.begin,max!==nil&&excl&&$Kernel.$raise($$$("ArgumentError"),"cannot clamp with an exclusive range")),min!==nil&&max!==nil&&cmp_or_fail(min,max)>0&&$Kernel.$raise($$$("ArgumentError"),"min argument must be smaller than max argument"),min!==nil){if(0==(c=cmp_or_fail(this,min)))return this;if(c<0)return min}return max!==nil&&(c=cmp_or_fail(this,max))>0?max:this}),-2)}()},Opal.modules["corelib/regexp"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$coerce_to=Opal.coerce_to,$klass=Opal.klass,$const_set=Opal.const_set,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$truthy=Opal.truthy,$gvars=Opal.gvars,$Kernel=Opal.Kernel,$Opal=Opal.Opal,$alias=Opal.alias,$send=Opal.send,$hash2=Opal.hash2,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$rb_minus=Opal.rb_minus;return Opal.add_stubs("nil?,[],raise,escape,options,to_str,new,join,coerce_to!,!,match,coerce_to?,begin,uniq,map,scan,source,to_proc,transform_values,group_by,each_with_index,+,last,=~,attr_reader,>=,length,is_a?,include?,names,regexp,named_captures,===,captures,-,inspect,empty?,each,to_a"),$klass("::",$$$("StandardError"),"RegexpError"),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Regexp"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$const_set(self,"IGNORECASE",1),$const_set(self,"EXTENDED",2),$const_set(self,"MULTILINE",4),Opal.prop(self.$$prototype,"$$is_regexp",!0),function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$allocate",(function $$allocate(){var $yield=$$allocate.$$p||nil,allocated=nil;return delete $$allocate.$$p,(allocated=$send2(this,$find_super(this,"allocate",$$allocate,!1,!0),"allocate",[],$yield)).uninitialized=!0,allocated}),0),$def(self,"$escape",(function(string){return Opal.escape_regexp(string)}),1),$def(self,"$last_match",(function(n){return null==$gvars["~"]&&($gvars["~"]=nil),null==n&&(n=nil),$truthy(n["$nil?"]())?$gvars["~"]:$truthy($gvars["~"])?$gvars["~"]["$[]"](n):nil}),-1),$def(self,"$union",(function($a){var parts,is_first_part_array,quoted_validated,part,options,each_part_options,self=this;if(0==(parts=Opal.slice.call(arguments)).length)return/(?!)/;if(1==parts.length&&parts[0].$$is_regexp)return parts[0];is_first_part_array=parts[0].$$is_array,parts.length>1&&is_first_part_array&&$Kernel.$raise($$$("TypeError"),"no implicit conversion of Array into String"),is_first_part_array&&(parts=parts[0]),options=void 0,quoted_validated=[];for(var i=0;i=pos)return $gvars["~"]=$$$("MatchData").$new(re,md),block===nil?$gvars["~"]:Opal.yield1(block,$gvars["~"]);re.lastIndex=md.index+1}}),-2),$def(self,"$match?",(function(string,pos){var md;return this.uninitialized&&$Kernel.$raise($$$("TypeError"),"uninitialized Regexp"),void 0===pos?string!==nil&&this.test($coerce_to(string,$$$("String"),"to_str")):(pos=$coerce_to(pos,$$$("Integer"),"to_int"),string!==nil&&(string=$coerce_to(string,$$$("String"),"to_str"),!(pos<0&&(pos+=string.length)<0)&&!(null===(md=Opal.global_regexp(this).exec(string))||md.index/,$hash2(["no_matchdata"],{no_matchdata:!0})),"map",[],"first".$to_proc()).$uniq()}),0),$def(self,"$named_captures",(function(){return $send($send($send(this.$source().$scan(/\(?<(\w+)>/,$hash2(["no_matchdata"],{no_matchdata:!0})),"map",[],"first".$to_proc()).$each_with_index(),"group_by",[],"first".$to_proc()),"transform_values",[],(function(i){return null==i&&(i=nil),$send(i,"map",[],(function(j){return null==j&&(j=nil),$rb_plus(j.$last(),1)}),1)}),1)}),0),$def(self,"$~",(function(){return null==$gvars._&&($gvars._=nil),this["$=~"]($gvars._)}),0),$def(self,"$source",(function(){return this.source}),0),$def(self,"$options",(function(){this.uninitialized&&$Kernel.$raise($$$("TypeError"),"uninitialized Regexp");var result=0;return this.multiline&&(result|=$$("MULTILINE")),this.ignoreCase&&(result|=$$("IGNORECASE")),result}),0),$def(self,"$casefold?",(function(){return this.ignoreCase}),0),$alias(self,"eql?","=="),$alias(self,"to_s","source")}(0,RegExp,$nesting),function($base,$super,$parent_nesting){var self=$klass($base,null,"MatchData"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.matches=nil,self.$attr_reader("post_match","pre_match","regexp","string"),$def(self,"$initialize",(function(regexp,match_groups,$kwargs){var no_matchdata;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");null==(no_matchdata=$kwargs.$$smap.no_matchdata)&&(no_matchdata=!1),$truthy(no_matchdata)||($gvars["~"]=this),this.regexp=regexp,this.begin=match_groups.index,this.string=match_groups.input,this.pre_match=match_groups.input.slice(0,match_groups.index),this.post_match=match_groups.input.slice(match_groups.index+match_groups[0].length),this.matches=[];for(var i=0,length=match_groups.length;i"}),0),$def(self,"$length",(function(){return this.matches.length}),0),$def(self,"$to_a",(function(){return this.matches}),0),$def(self,"$to_s",(function(){return this.matches[0]}),0),$def(self,"$values_at",(function($a){var args,self=this;args=Opal.slice.call(arguments);var i,a,index,values=[];for(i=0;i,==,=~,new,force_encoding,casecmp,empty?,ljust,ceil,/,+,rjust,floor,coerce_to!,copy_singleton_methods,initialize_clone,initialize_dup,enum_for,chomp,[],to_i,each_line,to_proc,to_a,class,match,match?,captures,proc,succ,escape,include?,upcase,unicode_normalize,pristine"),self.$require("corelib/comparable"),self.$require("corelib/regexp"),function($base,$super,$parent_nesting){var self=$klass("::",String,"String"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);function char_class_from_char_sets(sets){function explode_sequences_in_character_set(set){var i,curr_char,skip_next_dash,char_code_from,char_code_upto,char_code,result="",len=set.length;for(i=0;i0&&i(char_code_upto=set.charCodeAt(i+1))&&$Kernel.$raise($$$("ArgumentError"),'invalid range "'+char_code_from+"-"+char_code_upto+'" in string transliteration'),char_code=char_code_from+1;char_code1,set=explode_sequences_in_character_set(neg?set.slice(1):set),neg?neg_intersection=intersection(neg_intersection,set):pos_intersection=intersection(pos_intersection,set);if(pos_intersection.length>0&&neg_intersection.length>0){for(tmp="",i=0,len=pos_intersection.length;i0?"["+$$$("Regexp").$escape(pos_intersection)+"]":neg_intersection.length>0?"[^"+$$$("Regexp").$escape(neg_intersection)+"]":null}self.$include($$$("Comparable")),Opal.prop(self.$$prototype,"$$is_string",!0),Opal.prop(self.$$prototype,"$$cast",(function(string){var klass=this.$$class;return klass.$$constructor===String?string:new klass.$$constructor(string)})),$def(self,"$__id__",(function(){return this.toString()}),0),$defs(self,"$try_convert",(function(what){return $Opal["$coerce_to?"](what,$$$("String"),"to_str")}),1),$defs(self,"$new",(function($a){var args,self=this,str=(args=Opal.slice.call(arguments))[0]||"",opts=args[args.length-1];return str=$coerce_to(str,$$$("String"),"to_str"),opts&&opts.$$is_hash&&opts.$$smap.encoding&&(str=str.$force_encoding(opts.$$smap.encoding)),(str=new self.$$constructor(str)).$initialize.$$pristine||$send(str,"initialize",$to_a(args)),str}),-1),$def(self,"$initialize",(function($a,$b){var $post_args,$kwargs;if($post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return $post_args.length>0&&$post_args.shift(),null==$kwargs.$$smap.encoding&&nil,null==$kwargs.$$smap.capacity&&nil,nil}),-1),$def(self,"$%",(function(data){var self=this;return $eqeqeq($$$("Array"),data)?$send(self,"format",[self].concat($to_a(data))):self.$format(self,data)}),1),$def(self,"$*",(function(count){if((count=$coerce_to(count,$$$("Integer"),"to_int"))<0&&$Kernel.$raise($$$("ArgumentError"),"negative argument"),0===count)return this.$$cast("");var result="",string=this.toString();for(string.length*count>=1<<28&&$Kernel.$raise($$$("RangeError"),"multiply count must not overflow maximum string size");1==(1&count)&&(result+=string),0!==(count>>>=1);)string+=string;return this.$$cast(result)}),1),$def(self,"$+",(function(other){if(""==(other=$coerce_to(other,$$$("String"),"to_str"))&&this.$$class===Opal.String)return this;if(""==this&&other.$$class===Opal.String)return other;var out=this+other;return this.encoding===out.encoding&&other.encoding===out.encoding||"UTF-8"===this.encoding.name||"UTF-8"===other.encoding.name?out:Opal.enc(out,this.encoding)}),1),$def(self,"$<=>",(function(other){if($truthy(other["$respond_to?"]("to_str")))return this>(other=other.$to_str().$to_s())?1:this"](this);return cmp===nil?nil:cmp>0?-1:cmp<0?1:0}),1),$def(self,"$==",(function(other){return other.$$is_string?this.toString()===other.toString():!!$respond_to(other,"$to_str")&&other["$=="](this)}),1),$def(self,"$=~",(function(other){return other.$$is_string&&$Kernel.$raise($$$("TypeError"),"type mismatch: String given"),other["$=~"](this)}),1),$def(self,"$[]",(function(index,length){var exclude,range,size=this.length;if(index.$$is_range)return exclude=index.excl,range=index,length=index.end===nil?-1:$coerce_to(index.end,$$$("Integer"),"to_int"),index=index.begin===nil?0:$coerce_to(index.begin,$$$("Integer"),"to_int"),Math.abs(index)>size?nil:(index<0&&(index+=size),length<0&&(length+=size),exclude&&range.end!==nil||(length+=1),(length-=index)<0&&(length=0),this.$$cast(this.substr(index,length)));if(index.$$is_string)return null!=length&&$Kernel.$raise($$$("TypeError")),-1!==this.indexOf(index)?this.$$cast(index):nil;if(index.$$is_regexp){var match=this.match(index);return null===match?($gvars["~"]=nil,nil):($gvars["~"]=$$$("MatchData").$new(index,match),null==length?this.$$cast(match[0]):(length=$coerce_to(length,$$$("Integer"),"to_int"))<0&&-length=0&&length=size||index<0?nil:this.$$cast(this.substr(index,1)):(length=$coerce_to(length,$$$("Integer"),"to_int"))<0||index>size||index<0?nil:this.$$cast(this.substr(index,length))}),-2),$def(self,"$b",(function(){return new String(this).$force_encoding("binary")}),0),$def(self,"$capitalize",(function(){return this.$$cast(this.charAt(0).toUpperCase()+this.substr(1).toLowerCase())}),0),$def(self,"$casecmp",(function(other){var self=this;if(!$truthy(other["$respond_to?"]("to_str")))return nil;other=$coerce_to(other,$$$("String"),"to_str").$to_s();var ascii_only=/^[\x00-\x7F]*$/;return ascii_only.test(self)&&ascii_only.test(other)&&(self=self.toLowerCase(),other=other.toLowerCase()),self["$<=>"](other)}),1),$def(self,"$casecmp?",(function(other){var cmp=this.$casecmp(other);return cmp===nil?nil:0===cmp}),1),$def(self,"$center",(function(width,padstr){if(null==padstr&&(padstr=" "),width=$coerce_to(width,$$$("Integer"),"to_int"),padstr=$coerce_to(padstr,$$$("String"),"to_str").$to_s(),$truthy(padstr["$empty?"]())&&$Kernel.$raise($$$("ArgumentError"),"zero width padding"),$truthy(width<=this.length))return this;var ljustified=this.$ljust($rb_divide($rb_plus(width,this.length),2).$ceil(),padstr),rjustified=this.$rjust($rb_divide($rb_plus(width,this.length),2).$floor(),padstr);return this.$$cast(rjustified+ljustified.slice(this.length))}),-2),$def(self,"$chomp",(function(separator){var result;if(null==$gvars["/"]&&($gvars["/"]=nil),null==separator&&(separator=$gvars["/"]),$truthy(separator===nil||0===this.length))return this;if("\n"===(separator=$Opal["$coerce_to!"](separator,$$$("String"),"to_str").$to_s()))result=this.replace(/\r?\n?$/,"");else if(""===separator)result=this.replace(/(\r?\n)+$/,"");else if(this.length>=separator.length){this.substr(this.length-separator.length,separator.length)===separator&&(result=this.substr(0,this.length-separator.length))}return null!=result?this.$$cast(result):this}),-1),$def(self,"$chop",(function(){var result,length=this.length;return result=length<=1?"":"\n"===this.charAt(length-1)&&"\r"===this.charAt(length-2)?this.substr(0,length-2):this.substr(0,length-1),this.$$cast(result)}),0),$def(self,"$chr",(function(){return this.charAt(0)}),0),$def(self,"$clone",(function(){var copy=nil;return(copy=new String(this)).$copy_singleton_methods(this),copy.$initialize_clone(this),copy}),0),$def(self,"$dup",(function(){var copy=nil;return(copy=new String(this)).$initialize_dup(this),copy}),0),$def(self,"$count",(function($a){var sets,self=this;0===(sets=Opal.slice.call(arguments)).length&&$Kernel.$raise($$$("ArgumentError"),"ArgumentError: wrong number of arguments (0 for 1+)");var char_class=char_class_from_char_sets(sets);return null===char_class?0:self.length-self.replace(new RegExp(char_class,"g"),"").length}),-1),$def(self,"$delete",(function($a){var sets,self=this;0===(sets=Opal.slice.call(arguments)).length&&$Kernel.$raise($$$("ArgumentError"),"ArgumentError: wrong number of arguments (0 for 1+)");var char_class=char_class_from_char_sets(sets);return null===char_class?self:self.$$cast(self.replace(new RegExp(char_class,"g"),""))}),-1),$def(self,"$delete_prefix",(function(prefix){return prefix.$$is_string||(prefix=$coerce_to(prefix,$$$("String"),"to_str")),this.slice(0,prefix.length)===prefix?this.$$cast(this.slice(prefix.length)):this}),1),$def(self,"$delete_suffix",(function(suffix){return suffix.$$is_string||(suffix=$coerce_to(suffix,$$$("String"),"to_str")),this.slice(this.length-suffix.length)===suffix?this.$$cast(this.slice(0,this.length-suffix.length)):this}),1),$def(self,"$downcase",(function(){return this.$$cast(this.toLowerCase())}),0),$def(self,"$each_line",(function $$each_line($a,$b){var $post_args,$kwargs,separator,chomp,a,i,n,length,chomped,trailing,splitted,value,block=$$each_line.$$p||nil,self=this;if(null==$gvars["/"]&&($gvars["/"]=nil),delete $$each_line.$$p,$post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");if($post_args.length>0&&(separator=$post_args.shift()),null==separator&&(separator=$gvars["/"]),null==(chomp=$kwargs.$$smap.chomp)&&(chomp=!1),block===nil)return self.$enum_for("each_line",separator,$hash2(["chomp"],{chomp:chomp}));if(separator===nil)return Opal.yield1(block,self),self;if(0===(separator=$coerce_to(separator,$$$("String"),"to_str")).length){for(i=0,n=(a=self.split(/((?:\r?\n){2})(?:(?:\r?\n)*)/)).length;i=suffix.length&&self.substr(self.length-suffix.length,suffix.length)==suffix)return!0}return!1}),-1),$def(self,"$gsub",(function $$gsub(pattern,replacement){var block=$$gsub.$$p||nil,self=this;if(delete $$gsub.$$p,void 0===replacement&&block===nil)return self.$enum_for("gsub",pattern);var match,_replacement,lastIndex,result="",match_data=nil,index=0;for(pattern.$$is_regexp?pattern=$global_multiline_regexp(pattern):(pattern=$coerce_to(pattern,$$$("String"),"to_str"),pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm"));;){if(null===(match=pattern.exec(self))){$gvars["~"]=nil,result+=self.slice(index);break}match_data=$$$("MatchData").$new(pattern,match),void 0===replacement?(lastIndex=pattern.lastIndex,_replacement=block(match[0]),pattern.lastIndex=lastIndex):replacement.$$is_hash?_replacement=replacement["$[]"](match[0]).$to_s():(replacement.$$is_string||(replacement=$coerce_to(replacement,$$$("String"),"to_str")),_replacement=replacement.replace(/([\\]+)([0-9+&`'])/g,(function(original,slashes,command){if(slashes.length%2==0)return original;switch(command){case"+":for(var i=match.length-1;i>0;i--)if(void 0!==match[i])return slashes.slice(1)+match[i];return"";case"&":return slashes.slice(1)+match[0];case"`":return slashes.slice(1)+self.slice(0,match.index);case"'":return slashes.slice(1)+self.slice(match.index+match[0].length);default:return slashes.slice(1)+(match[command]||"")}})).replace(/\\\\/g,"\\")),pattern.lastIndex===match.index?(result+=self.slice(index,match.index)+_replacement+(self[match.index]||""),pattern.lastIndex+=1):result+=self.slice(index,match.index)+_replacement,index=pattern.lastIndex}return $gvars["~"]=match_data,self.$$cast(result)}),-2),$def(self,"$hash",(function(){return this.toString()}),0),$def(self,"$hex",(function(){return this.$to_i(16)}),0),$def(self,"$include?",(function(other){return other.$$is_string||(other=$coerce_to(other,$$$("String"),"to_str")),-1!==this.indexOf(other)}),1),$def(self,"$index",(function(search,offset){var index,match,regex;if(void 0===offset)offset=0;else if((offset=$coerce_to(offset,$$$("Integer"),"to_int"))<0&&(offset+=this.length)<0)return nil;if(search.$$is_regexp)for(regex=$global_multiline_regexp(search);;){if(null===(match=regex.exec(this))){$gvars["~"]=nil,index=-1;break}if(match.index>=offset){$gvars["~"]=$$$("MatchData").$new(regex,match),index=match.index;break}regex.lastIndex=match.index+1}else index=0===(search=$coerce_to(search,$$$("String"),"to_str")).length&&offset>this.length?-1:this.indexOf(search,offset);return-1===index?nil:index}),-2),$def(self,"$inspect",(function(){var self=this,meta={"":"\\a","":"\\e","\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\v":"\\v",'"':'\\"',"\\":"\\\\"};return'"'+self.replace(/[\\\"\x00-\x1f\u007F-\u009F\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,(function(chr){return meta[chr]?meta[chr]:(chr=chr.charCodeAt(0))<=255&&(self.encoding["$binary?"]()||self.internal_encoding["$binary?"]())?"\\x"+("00"+chr.toString(16).toUpperCase()).slice(-2):"\\u"+("0000"+chr.toString(16).toUpperCase()).slice(-4)})).replace(/\#[\$\@\{]/g,"\\$&")+'"'}),0),$def(self,"$intern",(function(){return this.toString()}),0),$def(self,"$lines",(function $$lines($a,$b){var $post_args,$kwargs,separator,chomp,block=$$lines.$$p||nil,self=this,e=nil;if(null==$gvars["/"]&&($gvars["/"]=nil),delete $$lines.$$p,$post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return $post_args.length>0&&(separator=$post_args.shift()),null==separator&&(separator=$gvars["/"]),null==(chomp=$kwargs.$$smap.chomp)&&(chomp=!1),e=$send(self,"each_line",[separator,$hash2(["chomp"],{chomp:chomp})],block.$to_proc()),$truthy(block)?self:e.$to_a()}),-1),$def(self,"$ljust",(function(width,padstr){if(null==padstr&&(padstr=" "),width=$coerce_to(width,$$$("Integer"),"to_int"),padstr=$coerce_to(padstr,$$$("String"),"to_str").$to_s(),$truthy(padstr["$empty?"]())&&$Kernel.$raise($$$("ArgumentError"),"zero width padding"),$truthy(width<=this.length))return this;var index=-1,result="";for(width-=this.length;++index=48&&code<=57||code>=65&&code<=90||code>=97&&code<=122)switch(code){case 57:carry=!0,code=48;break;case 90:carry=!0,code=65;break;case 122:carry=!0,code=97;break;default:carry=!1,code+=1}else-1===first_alphanum_char_index?255===code?(carry=!0,code=0):(carry=!1,code+=1):carry=!0;if(result=result.slice(0,i)+String.fromCharCode(code)+result.slice(i+1),carry&&(0===i||i===first_alphanum_char_index)){switch(code){case 65:case 97:break;default:code+=1}result=0===i?String.fromCharCode(code)+result:result.slice(0,i)+String.fromCharCode(code)+result.slice(i),carry=!1}if(!carry)break}return this.$$cast(result)}),0),$def(self,"$oct",(function(){var result,string=this,radix=8;return/^\s*_/.test(string)?0:(string=string.replace(/^(\s*[+-]?)(0[bodx]?)(.+)$/i,(function(original,head,flag,tail){switch(tail.charAt(0)){case"+":case"-":return original;case"0":if("x"===tail.charAt(1)&&"0x"===flag)return original}switch(flag){case"0b":radix=2;break;case"0":case"0o":radix=8;break;case"0d":radix=10;break;case"0x":radix=16}return head+tail})),result=parseInt(string.replace(/_(?!_)/g,""),radix),isNaN(result)?0:result)}),0),$def(self,"$ord",(function(){return"function"==typeof this.codePointAt?this.codePointAt(0):this.charCodeAt(0)}),0),$def(self,"$partition",(function(sep){var i,m;return sep.$$is_regexp?null===(m=sep.exec(this))?i=-1:($$$("MatchData").$new(sep,m),sep=m[0],i=m.index):(sep=$coerce_to(sep,$$$("String"),"to_str"),i=this.indexOf(sep)),-1===i?[this,"",""]:[this.slice(0,i),this.slice(i,i+sep.length),this.slice(i+sep.length)]}),1),$def(self,"$reverse",(function(){return this.split("").reverse().join("")}),0),$def(self,"$rindex",(function(search,offset){var i,m,r,_m;if(void 0===offset)offset=this.length;else if((offset=$coerce_to(offset,$$$("Integer"),"to_int"))<0&&(offset+=this.length)<0)return nil;if(search.$$is_regexp){for(m=null,r=$global_multiline_regexp(search);!(null===(_m=r.exec(this))||_m.index>offset);)m=_m,r.lastIndex=m.index+1;null===m?($gvars["~"]=nil,i=-1):($$$("MatchData").$new(r,m),i=m.index)}else search=$coerce_to(search,$$$("String"),"to_str"),i=this.lastIndexOf(search,offset);return-1===i?nil:i}),-2),$def(self,"$rjust",(function(width,padstr){if(null==padstr&&(padstr=" "),width=$coerce_to(width,$$$("Integer"),"to_int"),padstr=$coerce_to(padstr,$$$("String"),"to_str").$to_s(),$truthy(padstr["$empty?"]())&&$Kernel.$raise($$$("ArgumentError"),"zero width padding"),$truthy(width<=this.length))return this;var chars=Math.floor(width-this.length),patterns=Math.floor(chars/padstr.length),result=Array(patterns+1).join(padstr),remaining=chars-result.length;return this.$$cast(result+padstr.slice(0,remaining)+this)}),-2),$def(self,"$rpartition",(function(sep){var i,m,r,_m;if(sep.$$is_regexp){for(m=null,r=$global_multiline_regexp(sep);null!==(_m=r.exec(this));)m=_m,r.lastIndex=m.index+1;null===m?i=-1:($$$("MatchData").$new(r,m),sep=m[0],i=m.index)}else sep=$coerce_to(sep,$$$("String"),"to_str"),i=this.lastIndexOf(sep);return-1===i?["","",this]:[this.slice(0,i),this.slice(i,i+sep.length),this.slice(i+sep.length)]}),1),$def(self,"$rstrip",(function(){return this.replace(/[\s\u0000]*$/,"")}),0),$def(self,"$scan",(function $$scan(pattern,$kwargs){var no_matchdata,block=$$scan.$$p||nil;if(delete $$scan.$$p,null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");null==(no_matchdata=$kwargs.$$smap.no_matchdata)&&(no_matchdata=!1);var match,result=[],match_data=nil;for(pattern.$$is_regexp?pattern=$global_multiline_regexp(pattern):(pattern=$coerce_to(pattern,$$$("String"),"to_str"),pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm"));null!=(match=pattern.exec(this));)match_data=$$$("MatchData").$new(pattern,match,$hash2(["no_matchdata"],{no_matchdata:no_matchdata})),block===nil?1==match.length?result.push(match[0]):result.push(match_data.$captures()):1==match.length?Opal.yield1(block,match[0]):Opal.yield1(block,match_data.$captures()),pattern.lastIndex===match.index&&(pattern.lastIndex+=1);return no_matchdata||($gvars["~"]=match_data),block!==nil?this:result}),-2),$def(self,"$singleton_class",(function(){return Opal.get_singleton_class(this)}),0),$def(self,"$split",(function(pattern,limit){var self=this,$ret_or_1=nil;if(null==$gvars[";"]&&($gvars[";"]=nil),0===self.length)return[];if(void 0===limit)limit=0;else if(1===(limit=$Opal["$coerce_to!"](limit,$$$("Integer"),"to_int")))return[self];void 0!==pattern&&pattern!==nil||(pattern=$truthy($ret_or_1=$gvars[";"])?$ret_or_1:" ");var match,i,ii,result=[],string=self.toString(),index=0;if(pattern.$$is_regexp?pattern=$global_multiline_regexp(pattern):" "===(pattern=$coerce_to(pattern,$$$("String"),"to_str").$to_s())?(pattern=/\s+/gm,string=string.replace(/^\s+/,"")):pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm"),1===(result=string.split(pattern)).length&&result[0]===string)return[self.$$cast(result[0])];for(;-1!==(i=result.indexOf(void 0));)result.splice(i,1);function castResult(){for(i=0;i=result.length)return castResult(),result;for(i=0;null!==match&&(i++,index=pattern.lastIndex,i+1!==limit);)match=pattern.exec(string);return result.splice(limit-1,result.length-1,string.slice(index)),castResult(),result}),-1),$def(self,"$squeeze",(function($a){var sets,self=this;if(0===(sets=Opal.slice.call(arguments)).length)return self.$$cast(self.replace(/(.)\1+/g,"$1"));var char_class=char_class_from_char_sets(sets);return null===char_class?self:self.$$cast(self.replace(new RegExp("("+char_class+")\\1+","g"),"$1"))}),-1),$def(self,"$start_with?",(function($a){for(var prefixes,self=this,i=0,length=(prefixes=Opal.slice.call(arguments)).length;i0;i--)if(void 0!==match[i])return slashes.slice(1)+match[i];return"";case"&":return slashes.slice(1)+match[0];case"`":return slashes.slice(1)+self.slice(0,match.index);case"'":return slashes.slice(1)+self.slice(match.index+match[0].length);default:return slashes.slice(1)+(match[command]||"")}})).replace(/\\\\/g,"\\"),result=self.slice(0,match.index)+replacement+self.slice(match.index+match[0].length))),self.$$cast(result)}),-2),$def(self,"$sum",(function(n){null==n&&(n=16),n=$coerce_to(n,$$$("Integer"),"to_int");for(var result=0,length=this.length,i=0;i36)&&$Kernel.$raise($$$("ArgumentError"),"invalid radix "+radix),/^\s*_/.test(string)?0:(string=string.replace(/^(\s*[+-]?)(0[bodx]?)(.+)$/,(function(original,head,flag,tail){switch(tail.charAt(0)){case"+":case"-":return original;case"0":if("x"===tail.charAt(1)&&"0x"===flag&&(0===radix||16===radix))return original}switch(flag){case"0b":if(0===radix||2===radix)return radix=2,head+tail;break;case"0":case"0o":if(0===radix||8===radix)return radix=8,head+tail;break;case"0d":if(0===radix||10===radix)return radix=10,head+tail;break;case"0x":if(0===radix||16===radix)return radix=16,head+tail}return original})),result=parseInt(string.replace(/_(?!_)/g,""),radix),isNaN(result)?0:result)}),-1),$def(self,"$to_proc",(function $$to_proc(){var method_name;return delete $$to_proc.$$p,method_name=$rb_plus("$",this.valueOf()),$send($Kernel,"proc",[],(function $$17($a){var args,block=$$17.$$p||nil;delete $$17.$$p,0===(args=Opal.slice.call(arguments)).length&&$Kernel.$raise($$$("ArgumentError"),"no receiver given");var recv=args[0];null==recv&&(recv=nil);var body=recv[method_name];return body?("function"==typeof block&&(body.$$p=block),1===args.length?body.call(recv):body.apply(recv,args.slice(1))):recv.$method_missing.apply(recv,args)}),-1)}),0),$def(self,"$to_s",(function(){return this.toString()}),0),$def(self,"$tr",(function(from,to){var i,in_range,c,ch,start,end,length;if(from=$coerce_to(from,$$$("String"),"to_str").$to_s(),to=$coerce_to(to,$$$("String"),"to_str").$to_s(),0==from.length||from===to)return this;var subs={},from_chars=from.split(""),from_length=from_chars.length,to_chars=to.split(""),to_length=to_chars.length,inverse=!1,global_sub=null;"^"===from_chars[0]&&from_chars.length>1&&(inverse=!0,from_chars.shift(),global_sub=to_chars[to_length-1],from_length-=1);var from_chars_expanded=[],last_from=null;for(in_range=!1,i=0;i(end=ch.charCodeAt(0))&&$Kernel.$raise($$$("ArgumentError"),'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration'),c=start+1;c0){var to_chars_expanded=[],last_to=null;for(in_range=!1,i=0;i(end=ch.charCodeAt(0))&&$Kernel.$raise($$$("ArgumentError"),'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration'),c=start+1;c0){var pad_char=to_length>0?to_chars[to_length-1]:"";for(i=0;i1&&(inverse=!0,from_chars.shift(),global_sub=to_chars[to_length-1],from_length-=1);var from_chars_expanded=[],last_from=null;for(in_range=!1,i=0;i(end=ch.charCodeAt(0))&&$Kernel.$raise($$$("ArgumentError"),'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration'),c=start+1;c0){var to_chars_expanded=[];for(in_range=!1,i=0;i(end=ch.charCodeAt(0))&&$Kernel.$raise($$$("ArgumentError"),'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration'),c=start+1;c0){var pad_char=to_length>0?to_chars[to_length-1]:"";for(i=0;i,*,try_convert,<,+,-,ceil,/,size,select,to_proc,__send__,length,<=,[],push,<<,[]=,===,inspect,<=>,first,reverse,sort,take,sort_by,compare,call,dup,sort!,map!,include?,-@,key?,values,transform_values,group_by,fetch,to_h,coerce_to?,class,zip"),function($base){var self=$module("::","Enumerable");function comparableForPattern(value){return 0===value.length&&(value=[nil]),value.length>1&&(value=[value]),value}return $def(self,"$all?",(function $Enumerable_all$ques$1(pattern){try{var block=$Enumerable_all$ques$1.$$p||nil;return delete $Enumerable_all$ques$1.$$p,$truthy(void 0!==pattern)?$send(this,"each",[],(function($a){var comparable=nil;if(comparable=comparableForPattern(Opal.slice.call(arguments)),$truthy($send(pattern,"public_send",["==="].concat($to_a(comparable)))))return nil;Opal.ret(!1)}),-1):$send(this,"each",[],block!==nil?function($a){var value;if(value=Opal.slice.call(arguments),$truthy(Opal.yieldX(block,$to_a(value))))return nil;Opal.ret(!1)}:function($a){var value;if(value=Opal.slice.call(arguments),$truthy($Opal.$destructure(value)))return nil;Opal.ret(!1)},-1),!0}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$any?",(function $Enumerable_any$ques$5(pattern){try{var block=$Enumerable_any$ques$5.$$p||nil;return delete $Enumerable_any$ques$5.$$p,$truthy(void 0!==pattern)?$send(this,"each",[],(function($a){var comparable=nil;if(comparable=comparableForPattern(Opal.slice.call(arguments)),!$truthy($send(pattern,"public_send",["==="].concat($to_a(comparable)))))return nil;Opal.ret(!0)}),-1):$send(this,"each",[],block!==nil?function($a){var value;if(value=Opal.slice.call(arguments),!$truthy(Opal.yieldX(block,$to_a(value))))return nil;Opal.ret(!0)}:function($a){var value;if(value=Opal.slice.call(arguments),!$truthy($Opal.$destructure(value)))return nil;Opal.ret(!0)},-1),!1}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$chunk",(function $$chunk(){var block=$$chunk.$$p||nil;return delete $$chunk.$$p,block===nil?$send(this,"to_enum",["chunk"],(function $$9(){return(null==$$9.$$s?this:$$9.$$s).$enumerator_size()}),{$$arity:0,$$s:this}):$send($$$("Enumerator"),"new",[],(function $$10(yielder){var self=null==$$10.$$s?this:$$10.$$s;null==yielder&&(yielder=nil);var previous=nil,accumulate=[];function releaseAccumulate(){accumulate.length>0&&yielder.$yield(previous,accumulate)}self.$each.$$p=function(value){var key=$yield1(block,value);key===nil?(releaseAccumulate(),accumulate=[],previous=nil):(previous===nil||previous===key?accumulate.push(value):(releaseAccumulate(),accumulate=[value]),previous=key)},self.$each(),releaseAccumulate()}),{$$arity:1,$$s:this})}),0),$def(self,"$chunk_while",(function $$chunk_while(){var block=$$chunk_while.$$p||nil;return delete $$chunk_while.$$p,block===nil&&$Kernel.$raise($$$("ArgumentError"),"no block given"),$send(this,"slice_when",[],(function(before,after){return null==before&&(before=nil),null==after&&(after=nil),Opal.yieldX(block,[before,after])["$!"]()}),2)}),0),$def(self,"$collect",(function $$collect(){var block=$$collect.$$p||nil;if(delete $$collect.$$p,block===nil)return $send(this,"enum_for",["collect"],(function $$12(){return(null==$$12.$$s?this:$$12.$$s).$enumerator_size()}),{$$arity:0,$$s:this});var result=[];return this.$each.$$p=function(){var value=$yieldX(block,arguments);result.push(value)},this.$each(),result}),0),$def(self,"$collect_concat",(function $$collect_concat(){var block=$$collect_concat.$$p||nil;return delete $$collect_concat.$$p,block===nil?$send(this,"enum_for",["collect_concat"],(function $$13(){return(null==$$13.$$s?this:$$13.$$s).$enumerator_size()}),{$$arity:0,$$s:this}):$send(this,"map",[],(function(item){return null==item&&(item=nil),Opal.yield1(block,item)}),1).$flatten(1)}),0),$def(self,"$compact",(function(){return this.$to_a().$compact()}),0),$def(self,"$count",(function $$count(object){var block=$$count.$$p||nil,result=nil;return delete $$count.$$p,result=0,null!=object&&block!==nil&&this.$warn("warning: given block not used"),$truthy(null!=object)?block=$send($Kernel,"proc",[],(function($a){var args;return args=Opal.slice.call(arguments),$Opal.$destructure(args)["$=="](object)}),-1):$truthy(block["$nil?"]())&&(block=$send($Kernel,"proc",[],(function(){return!0}),0)),$send(this,"each",[],(function($a){var $post_args;return $post_args=Opal.slice.call(arguments),$truthy($yieldX(block,$post_args))?result++:nil}),-1),result}),-1),$def(self,"$cycle",(function $$cycle(n){var block=$$cycle.$$p||nil;if(delete $$cycle.$$p,null==n&&(n=nil),block===nil)return $send(this,"enum_for",["cycle",n],(function $$18(){var self=null==$$18.$$s?this:$$18.$$s;return $truthy(n["$nil?"]())?$truthy(self["$respond_to?"]("size"))?$$$($$$("Float"),"INFINITY"):nil:(n=$Opal["$coerce_to!"](n,$$$("Integer"),"to_int"),$truthy($rb_gt(n,0))?$rb_times(self.$enumerator_size(),n):0)}),{$$arity:0,$$s:this});if(!$truthy(n["$nil?"]())&&(n=$Opal["$coerce_to!"](n,$$$("Integer"),"to_int"),$truthy(n<=0)))return nil;var i,length,all=[];if(this.$each.$$p=function(){var param=$Opal.$destructure(arguments);$yield1(block,param);all.push(param)},this.$each(),0===all.length)return nil;if(n===nil)for(;;)for(i=0,length=all.length;i1;){for(i=0,length=all.length;in&&buffer.shift(),buffer.length==n&&$yield1(block,buffer.slice(0,n))},self.$each(),self}),1),$def(self,"$each_entry",(function $$each_entry($a){var data,block=$$each_entry.$$p||nil,self=this;return delete $$each_entry.$$p,data=Opal.slice.call(arguments),block===nil?$send(self,"to_enum",["each_entry"].concat($to_a(data)),(function $$21(){return(null==$$21.$$s?this:$$21.$$s).$enumerator_size()}),{$$arity:0,$$s:self}):(self.$each.$$p=function(){var item=$Opal.$destructure(arguments);$yield1(block,item)},self.$each.apply(self,data),self)}),-1),$def(self,"$each_slice",(function $$each_slice(n){var block=$$each_slice.$$p||nil;if(delete $$each_slice.$$p,n=$coerce_to(n,$$$("Integer"),"to_int"),$truthy(n<=0)&&$Kernel.$raise($$$("ArgumentError"),"invalid slice size"),block===nil)return $send(this,"enum_for",["each_slice",n],(function $$22(){var self=null==$$22.$$s?this:$$22.$$s;return $truthy(self["$respond_to?"]("size"))?$rb_divide(self.$size(),n).$ceil():nil}),{$$arity:0,$$s:this});var slice=[];return this.$each.$$p=function(){var param=$Opal.$destructure(arguments);slice.push(param),slice.length===n&&($yield1(block,slice),slice=[])},this.$each(),slice.length>0&&$yield1(block,slice),this}),1),$def(self,"$each_with_index",(function $$each_with_index($a){var args,block=$$each_with_index.$$p||nil,self=this;if(delete $$each_with_index.$$p,args=Opal.slice.call(arguments),block===nil)return $send(self,"enum_for",["each_with_index"].concat($to_a(args)),(function $$23(){return(null==$$23.$$s?this:$$23.$$s).$enumerator_size()}),{$$arity:0,$$s:self});var index=0;return self.$each.$$p=function(){var param=$Opal.$destructure(arguments);block(param,index),index++},self.$each.apply(self,args),self}),-1),$def(self,"$each_with_object",(function $$each_with_object(object){var block=$$each_with_object.$$p||nil;return delete $$each_with_object.$$p,block===nil?$send(this,"enum_for",["each_with_object",object],(function $$24(){return(null==$$24.$$s?this:$$24.$$s).$enumerator_size()}),{$$arity:0,$$s:this}):(this.$each.$$p=function(){var param=$Opal.$destructure(arguments);block(param,object)},this.$each(),object)}),1),$def(self,"$entries",(function($a){var args,self=this;args=Opal.slice.call(arguments);var result=[];return self.$each.$$p=function(){result.push($Opal.$destructure(arguments))},self.$each.apply(self,args),result}),-1),$def(self,"$filter_map",(function $$filter_map(){var block=$$filter_map.$$p||nil;return delete $$filter_map.$$p,block===nil?$send(this,"enum_for",["filter_map"],(function $$25(){return(null==$$25.$$s?this:$$25.$$s).$enumerator_size()}),{$$arity:0,$$s:this}):$send($send(this,"map",[],block.$to_proc()),"select",[],"itself".$to_proc())}),0),$def(self,"$find_all",(function $$find_all(){var block=$$find_all.$$p||nil;if(delete $$find_all.$$p,block===nil)return $send(this,"enum_for",["find_all"],(function $$26(){return(null==$$26.$$s?this:$$26.$$s).$enumerator_size()}),{$$arity:0,$$s:this});var result=[];return this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);$truthy(value)&&result.push(param)},this.$each(),result}),0),$def(self,"$find_index",(function $$find_index(object){try{var block=$$find_index.$$p||nil,index=nil;return delete $$find_index.$$p,$truthy(void 0===object&&block===nil)?this.$enum_for("find_index"):(null!=object&&block!==nil&&this.$warn("warning: given block not used"),index=0,$truthy(null!=object)?$send(this,"each",[],(function($a){var value;return value=Opal.slice.call(arguments),$eqeq($Opal.$destructure(value),object)&&Opal.ret(index),index+=1}),-1):$send(this,"each",[],(function($a){var value;return value=Opal.slice.call(arguments),$truthy(Opal.yieldX(block,$to_a(value)))&&Opal.ret(index),index+=1}),-1),nil)}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$first",(function(number){try{var result=nil,current=nil;return $truthy(void 0===number)?$send(this,"each",[],(function(value){null==value&&(value=nil),Opal.ret(value)}),1):(result=[],number=$coerce_to(number,$$$("Integer"),"to_int"),$truthy(number<0)&&$Kernel.$raise($$$("ArgumentError"),"attempt to take negative size"),$truthy(0==number)?[]:(current=0,$send(this,"each",[],(function($a){var args;if(args=Opal.slice.call(arguments),result.push($Opal.$destructure(args)),!$truthy(number<=++current))return nil;Opal.ret(result)}),-1),result))}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$grep",(function $$grep(pattern){var block=$$grep.$$p||nil,result=nil;return delete $$grep.$$p,result=[],$send(this,"each",[],(function($a){var value,cmp=nil;return cmp=comparableForPattern(value=Opal.slice.call(arguments)),$truthy($send(pattern,"__send__",["==="].concat($to_a(cmp))))?(block!==nil?($truthy($rb_gt(value.$length(),1))&&(value=[value]),value=Opal.yieldX(block,$to_a(value))):$truthy($rb_le(value.$length(),1))&&(value=value["$[]"](0)),result.$push(value)):nil}),-1),result}),1),$def(self,"$grep_v",(function $$grep_v(pattern){var block=$$grep_v.$$p||nil,result=nil;return delete $$grep_v.$$p,result=[],$send(this,"each",[],(function($a){var value,cmp=nil;return cmp=comparableForPattern(value=Opal.slice.call(arguments)),$truthy($send(pattern,"__send__",["==="].concat($to_a(cmp))))?nil:(block!==nil?($truthy($rb_gt(value.$length(),1))&&(value=[value]),value=Opal.yieldX(block,$to_a(value))):$truthy($rb_le(value.$length(),1))&&(value=value["$[]"](0)),result.$push(value))}),-1),result}),1),$def(self,"$group_by",(function $$group_by(){var block=$$group_by.$$p||nil,hash=nil,$ret_or_1=nil,$writer=nil;return delete $$group_by.$$p,block===nil?$send(this,"enum_for",["group_by"],(function $$33(){return(null==$$33.$$s?this:$$33.$$s).$enumerator_size()}),{$$arity:0,$$s:this}):(hash=$hash2([],{}),this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);($truthy($ret_or_1=hash["$[]"](value))?$ret_or_1:($writer=[value,[]],$send(hash,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]))["$<<"](param)},this.$each(),hash)}),0),$def(self,"$include?",(function(obj){try{return $send(this,"each",[],(function($a){var args;if(args=Opal.slice.call(arguments),!$eqeq($Opal.$destructure(args),obj))return nil;Opal.ret(!0)}),-1),!1}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),1),$def(self,"$inject",(function $$inject(object,sym){var block=$$inject.$$p||nil;delete $$inject.$$p;var result=object;return block!==nil&&void 0===sym?this.$each.$$p=function(){var value=$Opal.$destructure(arguments);void 0!==result?(value=$yieldX(block,[result,value]),result=value):result=value}:(void 0===sym&&($$$("Symbol")["$==="](object)||$Kernel.$raise($$$("TypeError"),object.$inspect()+" is not a Symbol"),sym=object,result=void 0),this.$each.$$p=function(){var value=$Opal.$destructure(arguments);result=void 0!==result?result.$__send__(sym,value):value}),this.$each(),null==result?nil:result}),-1),$def(self,"$lazy",(function(){return $send($$$($$$("Enumerator"),"Lazy"),"new",[this,this.$enumerator_size()],(function(enum$,$a){var $post_args;return null==enum$&&(enum$=nil),$post_args=Opal.slice.call(arguments,1),$send(enum$,"yield",$to_a($post_args))}),-2)}),0),$def(self,"$enumerator_size",(function(){return $truthy(this["$respond_to?"]("size"))?this.$size():nil}),0),$def(self,"$max",(function $$max(n){var result,value,block=$$max.$$p||nil;return delete $$max.$$p,void 0===n||n===nil?(this.$each.$$p=function(){var item=$Opal.$destructure(arguments);void 0!==result?((value=block!==nil?$yieldX(block,[item,result]):item["$<=>"](result))===nil&&$Kernel.$raise($$$("ArgumentError"),"comparison failed"),value>0&&(result=item)):result=item},this.$each(),void 0===result?nil:result):(n=$coerce_to(n,$$$("Integer"),"to_int"),$send(this,"sort",[],block.$to_proc()).$reverse().$first(n))}),-1),$def(self,"$max_by",(function $$max_by(n){var result,by,block=$$max_by.$$p||nil;return delete $$max_by.$$p,null==n&&(n=nil),$truthy(block)?$truthy(n["$nil?"]())?(this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);if(void 0===result)return result=param,void(by=value);value["$<=>"](by)>0&&(result=param,by=value)},this.$each(),void 0===result?nil:result):$send(this,"sort_by",[],block.$to_proc()).$reverse().$take(n):$send(this,"enum_for",["max_by",n],(function $$37(){return(null==$$37.$$s?this:$$37.$$s).$enumerator_size()}),{$$arity:0,$$s:this})}),-1),$def(self,"$min",(function $$min(n){var result,block=$$min.$$p||nil;return delete $$min.$$p,null==n&&(n=nil),$truthy(n["$nil?"]())?(this.$each.$$p=block!==nil?function(){var param=$Opal.$destructure(arguments);if(void 0!==result){var value=block(param,result);value===nil&&$Kernel.$raise($$$("ArgumentError"),"comparison failed"),value<0&&(result=param)}else result=param}:function(){var param=$Opal.$destructure(arguments);void 0!==result?$Opal.$compare(param,result)<0&&(result=param):result=param},this.$each(),void 0===result?nil:result):block!==nil?$send(this,"sort",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),Opal.yieldX(block,[a,b])}),2).$take(n):this.$sort().$take(n)}),-1),$def(self,"$min_by",(function $$min_by(n){var result,by,block=$$min_by.$$p||nil;return delete $$min_by.$$p,null==n&&(n=nil),$truthy(block)?$truthy(n["$nil?"]())?(this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);if(void 0===result)return result=param,void(by=value);value["$<=>"](by)<0&&(result=param,by=value)},this.$each(),void 0===result?nil:result):$send(this,"sort_by",[],block.$to_proc()).$take(n):$send(this,"enum_for",["min_by",n],(function $$39(){return(null==$$39.$$s?this:$$39.$$s).$enumerator_size()}),{$$arity:0,$$s:this})}),-1),$def(self,"$minmax",(function $$minmax(){var $ret_or_1,block=$$minmax.$$p||nil;delete $$minmax.$$p,block=$truthy($ret_or_1=block)?$ret_or_1:$send($Kernel,"proc",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a["$<=>"](b)}),2);var min=nil,max=nil,first_time=!0;return this.$each.$$p=function(){var element=$Opal.$destructure(arguments);if(first_time)min=max=element,first_time=!1;else{var min_cmp=block.$call(min,element);min_cmp===nil?$Kernel.$raise($$$("ArgumentError"),"comparison failed"):min_cmp>0&&(min=element);var max_cmp=block.$call(max,element);max_cmp===nil?$Kernel.$raise($$$("ArgumentError"),"comparison failed"):max_cmp<0&&(max=element)}},this.$each(),[min,max]}),0),$def(self,"$minmax_by",(function $$minmax_by(){var block=$$minmax_by.$$p||nil;if(delete $$minmax_by.$$p,!$truthy(block))return $send(this,"enum_for",["minmax_by"],(function $$41(){return(null==$$41.$$s?this:$$41.$$s).$enumerator_size()}),{$$arity:0,$$s:this});var min_by,max_by,min_result=nil,max_result=nil;return this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);(void 0===min_by||value["$<=>"](min_by)<0)&&(min_result=param,min_by=value),(void 0===max_by||value["$<=>"](max_by)>0)&&(max_result=param,max_by=value)},this.$each(),[min_result,max_result]}),0),$def(self,"$none?",(function $Enumerable_none$ques$42(pattern){try{var block=$Enumerable_none$ques$42.$$p||nil;return delete $Enumerable_none$ques$42.$$p,$truthy(void 0!==pattern)?$send(this,"each",[],(function($a){var comparable=nil;if(comparable=comparableForPattern(Opal.slice.call(arguments)),!$truthy($send(pattern,"public_send",["==="].concat($to_a(comparable)))))return nil;Opal.ret(!1)}),-1):$send(this,"each",[],block!==nil?function($a){var value;if(value=Opal.slice.call(arguments),!$truthy(Opal.yieldX(block,$to_a(value))))return nil;Opal.ret(!1)}:function($a){var value,item=nil;if(value=Opal.slice.call(arguments),item=$Opal.$destructure(value),!$truthy(item))return nil;Opal.ret(!1)},-1),!0}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$one?",(function $Enumerable_one$ques$46(pattern){try{var block=$Enumerable_one$ques$46.$$p||nil,count=nil;return delete $Enumerable_one$ques$46.$$p,count=0,$truthy(void 0!==pattern)?$send(this,"each",[],(function($a){var comparable=nil;return comparable=comparableForPattern(Opal.slice.call(arguments)),$truthy($send(pattern,"public_send",["==="].concat($to_a(comparable))))?(count=$rb_plus(count,1),$truthy($rb_gt(count,1))?void Opal.ret(!1):nil):nil}),-1):$send(this,"each",[],block!==nil?function($a){var value;return value=Opal.slice.call(arguments),$truthy(Opal.yieldX(block,$to_a(value)))?(count=$rb_plus(count,1),$truthy($rb_gt(count,1))?void Opal.ret(!1):nil):nil}:function($a){var value;return value=Opal.slice.call(arguments),$truthy($Opal.$destructure(value))?(count=$rb_plus(count,1),$truthy($rb_gt(count,1))?void Opal.ret(!1):nil):nil},-1),count["$=="](1)}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$partition",(function $$partition(){var block=$$partition.$$p||nil;if(delete $$partition.$$p,block===nil)return $send(this,"enum_for",["partition"],(function $$50(){return(null==$$50.$$s?this:$$50.$$s).$enumerator_size()}),{$$arity:0,$$s:this});var truthy=[],falsy=[];return this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);$truthy(value)?truthy.push(param):falsy.push(param)},this.$each(),[truthy,falsy]}),0),$def(self,"$reject",(function $$reject(){var block=$$reject.$$p||nil;if(delete $$reject.$$p,block===nil)return $send(this,"enum_for",["reject"],(function $$51(){return(null==$$51.$$s?this:$$51.$$s).$enumerator_size()}),{$$arity:0,$$s:this});var result=[];return this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);$truthy(value)||result.push(param)},this.$each(),result}),0),$def(self,"$reverse_each",(function $$reverse_each(){var block=$$reverse_each.$$p||nil;if(delete $$reverse_each.$$p,block===nil)return $send(this,"enum_for",["reverse_each"],(function $$52(){return(null==$$52.$$s?this:$$52.$$s).$enumerator_size()}),{$$arity:0,$$s:this});var result=[];this.$each.$$p=function(){result.push(arguments)},this.$each();for(var i=result.length-1;i>=0;i--)$yieldX(block,result[i]);return result}),0),$def(self,"$slice_before",(function $$slice_before(pattern){var block=$$slice_before.$$p||nil,self=this;return delete $$slice_before.$$p,$truthy(void 0===pattern&&block===nil)&&$Kernel.$raise($$$("ArgumentError"),"both pattern and block are given"),$truthy(void 0!==pattern&&block!==nil||arguments.length>1)&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arguments.length+" expected 1)"),$send($$$("Enumerator"),"new",[],(function $$53(e){var self=null==$$53.$$s?this:$$53.$$s;null==e&&(e=nil);var slice=[];self.$each.$$p=block!==nil?void 0===pattern?function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);$truthy(value)&&slice.length>0&&(e["$<<"](slice),slice=[]),slice.push(param)}:function(){var param=$Opal.$destructure(arguments),value=block(param,pattern.$dup());$truthy(value)&&slice.length>0&&(e["$<<"](slice),slice=[]),slice.push(param)}:function(){var param=$Opal.$destructure(arguments),value=pattern["$==="](param);$truthy(value)&&slice.length>0&&(e["$<<"](slice),slice=[]),slice.push(param)},self.$each(),slice.length>0&&e["$<<"](slice)}),{$$arity:1,$$s:self})}),-1),$def(self,"$slice_after",(function $$slice_after(pattern){var block=$$slice_after.$$p||nil,self=this;return delete $$slice_after.$$p,$truthy(void 0===pattern&&block===nil)&&$Kernel.$raise($$$("ArgumentError"),"both pattern and block are given"),$truthy(void 0!==pattern&&block!==nil||arguments.length>1)&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arguments.length+" expected 1)"),$truthy(void 0!==pattern)&&(block=$send($Kernel,"proc",[],(function(e){return null==e&&(e=nil),pattern["$==="](e)}),1)),$send($$$("Enumerator"),"new",[],(function $$55(yielder){var accumulate,self=null==$$55.$$s?this:$$55.$$s;null==yielder&&(yielder=nil),self.$each.$$p=function(){var element=$Opal.$destructure(arguments),end_chunk=$yield1(block,element);null==accumulate&&(accumulate=[]),$truthy(end_chunk)?(accumulate.push(element),yielder.$yield(accumulate),accumulate=null):accumulate.push(element)},self.$each(),null!=accumulate&&yielder.$yield(accumulate)}),{$$arity:1,$$s:self})}),-1),$def(self,"$slice_when",(function $$slice_when(){var block=$$slice_when.$$p||nil;return delete $$slice_when.$$p,block===nil&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments (0 for 1)"),$send($$$("Enumerator"),"new",[],(function $$56(yielder){var self=null==$$56.$$s?this:$$56.$$s;null==yielder&&(yielder=nil);var slice=nil,last_after=nil;self.$each_cons.$$p=function(){var params=$Opal.$destructure(arguments),before=params[0],after=params[1],match=$yieldX(block,[before,after]);last_after=after,slice===nil&&(slice=[]),$truthy(match)?(slice.push(before),yielder.$yield(slice),slice=[]):slice.push(before)},self.$each_cons(2),slice!==nil&&(slice.push(last_after),yielder.$yield(slice))}),{$$arity:1,$$s:this})}),0),$def(self,"$sort",(function $$sort(){var ary,block=$$sort.$$p||nil;return delete $$sort.$$p,ary=this.$to_a(),block===nil&&(block=$lambda((function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a["$<=>"](b)}),2)),$send(ary,"sort",[],block.$to_proc())}),0),$def(self,"$sort_by",(function $$sort_by(){var dup,block=$$sort_by.$$p||nil;return delete $$sort_by.$$p,block===nil?$send(this,"enum_for",["sort_by"],(function $$58(){return(null==$$58.$$s?this:$$58.$$s).$enumerator_size()}),{$$arity:0,$$s:this}):(dup=$send(this,"map",[],(function(){var arg=nil;return arg=$Opal.$destructure(arguments),[Opal.yield1(block,arg),arg]}),0),$send(dup,"sort!",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a[0]["$<=>"](b[0])}),2),$send(dup,"map!",[],(function(i){return null==i&&(i=nil),i[1]}),1))}),0),$def(self,"$sum",(function $$sum(initial){var $yield=$$sum.$$p||nil,result=nil,compensation=nil;return delete $$sum.$$p,null==initial&&(initial=0),result=initial,compensation=0,$send(this,"each",[],(function($a){var args,item=nil,y=nil,t=nil;return args=Opal.slice.call(arguments),item=$yield!==nil?Opal.yieldX($yield,$to_a(args)):$Opal.$destructure(args),$not([$$$($$$("Float"),"INFINITY"),$$$($$$("Float"),"INFINITY")["$-@"]()]["$include?"](item))&&$truthy(item["$respond_to?"]("-"))?(y=$rb_minus(item,compensation),t=$rb_plus(result,y),compensation=$rb_minus($rb_minus(t,result),y),result=t):result=$rb_plus(result,item)}),-1),result}),-1),$def(self,"$take",(function(num){return this.$first(num)}),1),$def(self,"$take_while",(function $$take_while(){try{var block=$$take_while.$$p||nil,result=nil;return delete $$take_while.$$p,$truthy(block)?(result=[],$send(this,"each",[],(function($a){var args,value=nil;return args=Opal.slice.call(arguments),value=$Opal.$destructure(args),$truthy(Opal.yield1(block,value))||Opal.ret(result),result.push(value)}),-1)):this.$enum_for("take_while")}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),0),$def(self,"$uniq",(function $$uniq(){var block=$$uniq.$$p||nil,hash=nil;return delete $$uniq.$$p,hash=$hash2([],{}),$send(this,"each",[],(function($a){var args,value=nil,produced=nil,$writer=nil;return args=Opal.slice.call(arguments),value=$Opal.$destructure(args),produced=block!==nil?Opal.yield1(block,value):value,$truthy(hash["$key?"](produced))?nil:($send(hash,"[]=",$to_a($writer=[produced,value])),$writer[$rb_minus($writer.length,1)])}),-1),hash.$values()}),0),$def(self,"$tally",(function(hash){var out;return out=$send($send(this,"group_by",[],"itself".$to_proc()),"transform_values",[],"count".$to_proc()),$truthy(hash)?($send(out,"each",[],(function(k,v){var $writer;return null==k&&(k=nil),null==v&&(v=nil),$writer=[k,$rb_plus(hash.$fetch(k,0),v)],$send(hash,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),2),hash):out}),-1),$def(self,"$to_h",(function $$to_h($a){var args,block=$$to_h.$$p||nil,self=this;if(delete $$to_h.$$p,args=Opal.slice.call(arguments),block!==nil)return $send($send(self,"map",[],block.$to_proc()),"to_h",$to_a(args));var hash=$hash2([],{});return self.$each.$$p=function(){var key,val,param=$Opal.$destructure(arguments),ary=$Opal["$coerce_to?"](param,$$$("Array"),"to_ary");ary.$$is_array||$Kernel.$raise($$$("TypeError"),"wrong element type "+ary.$class()+" (expected array)"),2!==ary.length&&$Kernel.$raise($$$("ArgumentError"),"wrong array length (expected 2, was "+ary.$length()+")"),key=ary[0],val=ary[1],Opal.hash_put(hash,key,val)},self.$each.apply(self,args),hash}),-1),$def(self,"$zip",(function $$zip($a){var others,self=this;return delete $$zip.$$p,others=Opal.slice.call(arguments),$send(self.$to_a(),"zip",$to_a(others))}),-1),$alias(self,"find","detect"),$alias(self,"filter","find_all"),$alias(self,"flat_map","collect_concat"),$alias(self,"map","collect"),$alias(self,"member?","include?"),$alias(self,"reduce","inject"),$alias(self,"select","find_all"),$alias(self,"to_a","entries")}()},Opal.modules["corelib/enumerator/arithmetic_sequence"]=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$truthy=Opal.truthy,$to_a=Opal.to_a,$eqeq=Opal.eqeq,$Kernel=Opal.Kernel,$def=Opal.def,$rb_gt=Opal.rb_gt,$rb_lt=Opal.rb_lt,$rb_le=Opal.rb_le,$rb_ge=Opal.rb_ge,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$eqeqeq=Opal.eqeqeq,$not=Opal.not,$rb_times=Opal.rb_times,$rb_divide=Opal.rb_divide,$alias=Opal.alias;return Opal.add_stubs("is_a?,==,raise,respond_to?,class,attr_reader,begin,end,exclude_end?,>,step,<,<=,>=,-@,_lesser_than_end?,<<,+,-,===,%,_greater_than_begin?,reverse,!,include?,*,to_i,abs,/,hash,inspect"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Enumerator"),$nesting=[self].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ArithmeticSequence"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.step_arg2=$proto.receiver_num=$proto.step_arg1=$proto.step=$proto.range=$proto.topfx=$proto.bypfx=$proto.creation_method=$proto.skipped_arg=nil,Opal.prop(self.$$prototype,"$$is_arithmetic_seq",!0);var inf=1/0;return $def(self,"$initialize",(function(range,step,creation_method){var $a,$ret_or_1=nil;return null==creation_method&&(creation_method="step"),this.creation_method=creation_method,$truthy(range["$is_a?"]($$$("Array")))?($a=[].concat($to_a(range)),this.step_arg1=null==$a[0]?nil:$a[0],this.step_arg2=null==$a[1]?nil:$a[1],this.topfx=null==$a[2]?nil:$a[2],this.bypfx=null==$a[3]?nil:$a[3],this.receiver_num=step,this.step=1,this.range=$truthy(this.step_arg2)?(this.step=this.step_arg2,Opal.Range.$new(this.receiver_num,this.step_arg1,!1)):$truthy(this.step_arg1)?Opal.Range.$new(this.receiver_num,this.step_arg1,!1):Opal.Range.$new(this.receiver_num,nil,!1)):($truthy(step)||(this.skipped_arg=!0),$a=[range,$truthy($ret_or_1=step)?$ret_or_1:1],this.range=$a[0],this.step=$a[1]),this.object=this,$eqeq(this.step,0)&&$Kernel.$raise($$("ArgumentError"),"step can't be 0"),$truthy(this.step["$respond_to?"]("to_int"))?nil:$Kernel.$raise($$("ArgumentError"),"no implicit conversion of "+this.step.$class()+" into Integer")}),-2),self.$attr_reader("step"),$def(self,"$begin",(function(){return this.range.$begin()}),0),$def(self,"$end",(function(){return this.range.$end()}),0),$def(self,"$exclude_end?",(function(){return this.range["$exclude_end?"]()}),0),$def(self,"$_lesser_than_end?",(function(val){var end_,$ret_or_1;return end_=$truthy($ret_or_1=this.$end())?$ret_or_1:inf,$truthy($rb_gt(this.$step(),0))?$truthy(this["$exclude_end?"]())?$rb_lt(val,end_):$rb_le(val,end_):$truthy(this["$exclude_end?"]())?$rb_gt(val,end_):$rb_ge(val,end_)}),1),$def(self,"$_greater_than_begin?",(function(val){var begin_,$ret_or_1;return begin_=$truthy($ret_or_1=this.$begin())?$ret_or_1:inf["$-@"](),$truthy($rb_gt(this.$step(),0))?$rb_gt(val,begin_):$rb_lt(val,begin_)}),1),$def(self,"$first",(function(count){var iter=nil,$ret_or_1=nil,out=nil;if(iter=$truthy($ret_or_1=this.$begin())?$ret_or_1:inf["$-@"](),!$truthy(count))return $truthy(this["$_lesser_than_end?"](iter))?iter:nil;for(out=[];$truthy($truthy($ret_or_1=this["$_lesser_than_end?"](iter))?$rb_gt(count,0):$ret_or_1);)out["$<<"](iter),iter=$rb_plus(iter,this.$step()),count=$rb_minus(count,1);return out}),-1),$def(self,"$each",(function $$each(){var $ret_or_1,block=$$each.$$p||nil,iter=nil;if(delete $$each.$$p,block===nil)return this;for($eqeqeq(nil,this.$begin())&&$Kernel.$raise($$("TypeError"),"nil can't be coerced into Integer"),iter=$truthy($ret_or_1=this.$begin())?$ret_or_1:inf["$-@"]();$truthy(this["$_lesser_than_end?"](iter));)Opal.yield1(block,iter),iter=$rb_plus(iter,this.$step());return this}),0),$def(self,"$last",(function(count){var $ret_or_1=nil,iter=nil,out=nil;if($eqeqeq(inf,$ret_or_1=this.$end())||$eqeqeq(inf["$-@"](),$ret_or_1)?$Kernel.$raise($$$("FloatDomainError"),this.$end()):$eqeqeq(nil,$ret_or_1)&&$Kernel.$raise($$$("RangeError"),"cannot get the last element of endless arithmetic sequence"),iter=$rb_minus(this.$end(),$rb_minus(this.$end(),this.$begin())["$%"](this.$step())),$truthy(this["$_lesser_than_end?"](iter))||(iter=$rb_minus(iter,this.$step())),!$truthy(count))return $truthy(this["$_greater_than_begin?"](iter))?iter:nil;for(out=[];$truthy($truthy($ret_or_1=this["$_greater_than_begin?"](iter))?$rb_gt(count,0):$ret_or_1);)out["$<<"](iter),iter=$rb_minus(iter,this.$step()),count=$rb_minus(count,1);return out.$reverse()}),-1),$def(self,"$size",(function(){var step_sign,iter=nil;return step_sign=$truthy($rb_gt(this.$step(),0))?1:-1,$not(this["$_lesser_than_end?"](this.$begin()))?0:$truthy([inf["$-@"](),inf]["$include?"](this.$step()))?1:$truthy([$rb_times(inf["$-@"](),step_sign),nil]["$include?"](this.$begin()))||$truthy([$rb_times(inf,step_sign),nil]["$include?"](this.$end()))?inf:(iter=$rb_minus(this.$end(),$rb_minus(this.$end(),this.$begin())["$%"](this.$step())),$truthy(this["$_lesser_than_end?"](iter))||(iter=$rb_minus(iter,this.$step())),$rb_plus($rb_divide($rb_minus(iter,this.$begin()),this.$step()).$abs().$to_i(),1))}),0),$def(self,"$==",(function(other){var $ret_or_1,$ret_or_2,$ret_or_3,$ret_or_4;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=$truthy($ret_or_4=this.$class()["$=="](other.$class()))?this.$begin()["$=="](other.$begin()):$ret_or_4)?this.$end()["$=="](other.$end()):$ret_or_3)?this.$step()["$=="](other.$step()):$ret_or_2)?this["$exclude_end?"]()["$=="](other["$exclude_end?"]()):$ret_or_1}),1),$def(self,"$hash",(function(){return[this.$begin(),this.$end(),this.$step(),this["$exclude_end?"]()].$hash()}),0),$def(self,"$inspect",(function(){var args=nil;return $truthy(this.receiver_num)?(args=$truthy(this.step_arg2)?"("+this.topfx+this.step_arg1.$inspect()+", "+this.bypfx+this.step_arg2.$inspect()+")":$truthy(this.step_arg1)?"("+this.topfx+this.step_arg1.$inspect()+")":nil,"("+this.receiver_num.$inspect()+"."+this.creation_method+args+")"):(args=$truthy(this.skipped_arg)?nil:"("+this.step+")","(("+this.range.$inspect()+")."+this.creation_method+args+")")}),0),$alias(self,"===","=="),$alias(self,"eql?","==")}(self,self,$nesting)}(0,0,[])},Opal.modules["corelib/enumerator/chain"]=function(Opal){var self,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus;return Opal.add_stubs("to_enum,size,each,<<,to_proc,include?,+,reverse_each,respond_to?,rewind,inspect"),function($base,$super){var self=$klass($base,$super,"Chain"),$proto=self.$$prototype;return $proto.enums=$proto.iterated=nil,$def(self,"$initialize",(function($a){var enums,self=this;return enums=Opal.slice.call(arguments),self.enums=enums,self.iterated=[],self.object=self}),-1),$def(self,"$each",(function $$each($a){var $post_args,args,block=$$each.$$p||nil,self=this;return delete $$each.$$p,$post_args=Opal.slice.call(arguments),args=$post_args,block===nil?$send(self,"to_enum",["each"].concat($to_a(args)),(function $$1(){return(null==$$1.$$s?this:$$1.$$s).$size()}),{$$arity:0,$$s:self}):($send(self.enums,"each",[],(function $$2(enum$){var self=null==$$2.$$s?this:$$2.$$s;return null==self.iterated&&(self.iterated=nil),null==enum$&&(enum$=nil),self.iterated["$<<"](enum$),$send(enum$,"each",$to_a(args),block.$to_proc())}),{$$arity:1,$$s:self}),self)}),-1),$def(self,"$size",(function($a){try{var $post_args,args,self=this,accum=nil;return $post_args=Opal.slice.call(arguments),args=$post_args,accum=0,$send(self.enums,"each",[],(function(enum$){var size;return null==enum$&&(enum$=nil),size=$send(enum$,"size",$to_a(args)),$truthy([nil,$$$($$$("Float"),"INFINITY")]["$include?"](size))&&Opal.ret(size),accum=$rb_plus(accum,size)}),1),accum}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$rewind",(function(){return $send(this.iterated,"reverse_each",[],(function(enum$){return null==enum$&&(enum$=nil),$truthy(enum$["$respond_to?"]("rewind"))?enum$.$rewind():nil}),1),this.iterated=[],this}),0),$def(self,"$inspect",(function(){return"#"}),0)}(self=$klass("::",null,"Enumerator"),self)},Opal.modules["corelib/enumerator/generator"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$breaker=Opal.breaker,$klass=Opal.klass,$truthy=Opal.truthy,$Kernel=Opal.Kernel,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("include,raise,new,to_proc"),function($base,$super,$parent_nesting){var $nesting=[$klass($base,null,"Enumerator")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Generator"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.block=nil,self.$include($$$("Enumerable")),$def(self,"$initialize",(function $$initialize(){var block=$$initialize.$$p||nil;return delete $$initialize.$$p,$truthy(block)||$Kernel.$raise($$$("LocalJumpError"),"no block given"),this.block=block}),0),$def(self,"$each",(function $$each($a){var args,block=$$each.$$p||nil,self=this,yielder=nil;delete $$each.$$p,args=Opal.slice.call(arguments),yielder=$send($$("Yielder"),"new",[],block.$to_proc());try{args.unshift(yielder),Opal.yieldX(self.block,args)}catch(e){if(e===$breaker)return $breaker.$v;throw e}return self}),-1)}($nesting[0],0,$nesting)}($nesting[0],0,$nesting)},Opal.modules["corelib/enumerator/lazy"]=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$truthy=Opal.truthy,$coerce_to=Opal.coerce_to,$yield1=Opal.yield1,$yieldX=Opal.yieldX,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$defs=Opal.defs,$Kernel=Opal.Kernel,$send=Opal.send,$def=Opal.def,$Opal=Opal.Opal,$rb_lt=Opal.rb_lt,$eqeqeq=Opal.eqeqeq,$rb_plus=Opal.rb_plus,$alias=Opal.alias;return Opal.add_stubs("raise,each,new,enumerator_size,yield,respond_to?,try_convert,<,===,+,for,class,to_proc,destructure,inspect"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Enumerator"),$nesting=[self].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Lazy"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.enumerator=nil,$klass(self,$$$("Exception"),"StopLazyError"),$defs(self,"$for",(function $Lazy_for$1(object,$a){var $rest_arg,$yield=$Lazy_for$1.$$p||nil,self=this,lazy=nil;return delete $Lazy_for$1.$$p,$rest_arg=Opal.slice.call(arguments,1),(lazy=$send2(self,$find_super(self,"for",$Lazy_for$1,!1,!0),"for",[object].concat($to_a($rest_arg)),$yield)).enumerator=object,lazy}),-2),$def(self,"$initialize",(function $$initialize(object,size){var block=$$initialize.$$p||nil;return delete $$initialize.$$p,null==size&&(size=nil),block===nil&&$Kernel.$raise($$$("ArgumentError"),"tried to call lazy new without a block"),this.enumerator=object,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[size],(function(yielder,$a){var each_args;null==yielder&&(yielder=nil),each_args=Opal.slice.call(arguments,1);try{return $send(object,"each",$to_a(each_args),(function($b){var args;(args=Opal.slice.call(arguments)).unshift(yielder),$yieldX(block,args)}),-1)}catch($err){if(!Opal.rescue($err,[$$("StopLazyError")]))throw $err;try{return nil}finally{Opal.pop_exception()}}}),-2)}),-2),$def(self,"$lazy",(function(){return this}),0),$def(self,"$collect",(function $$collect(){var block=$$collect.$$p||nil;return delete $$collect.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to call lazy map without a block"),$send($$("Lazy"),"new",[this,this.$enumerator_size()],(function(enum$,$a){var $post_args;null==enum$&&(enum$=nil),$post_args=Opal.slice.call(arguments,1);var value=$yieldX(block,$post_args);enum$.$yield(value)}),-2)}),0),$def(self,"$collect_concat",(function $$collect_concat(){var block=$$collect_concat.$$p||nil;return delete $$collect_concat.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to call lazy map without a block"),$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var $post_args;null==enum$&&(enum$=nil),$post_args=Opal.slice.call(arguments,1);var value=$yieldX(block,$post_args);if(value["$respond_to?"]("force")&&value["$respond_to?"]("each"))$send(value,"each",[],(function(v){return null==v&&(v=nil),enum$.$yield(v)}),1);else{var array=$Opal.$try_convert(value,$$$("Array"),"to_ary");array===nil?enum$.$yield(value):$send(value,"each",[],(function(v){return null==v&&(v=nil),enum$.$yield(v)}),1)}}),-2)}),0),$def(self,"$drop",(function(n){var current_size,set_size,dropped=nil;return n=$coerce_to(n,$$$("Integer"),"to_int"),$truthy($rb_lt(n,0))&&$Kernel.$raise($$$("ArgumentError"),"attempt to drop negative size"),current_size=this.$enumerator_size(),set_size=$eqeqeq($$$("Integer"),current_size)&&$truthy($rb_lt(n,current_size))?n:current_size,dropped=0,$send($$("Lazy"),"new",[this,set_size],(function(enum$,$a){var args;return null==enum$&&(enum$=nil),args=Opal.slice.call(arguments,1),$truthy($rb_lt(dropped,n))?dropped=$rb_plus(dropped,1):$send(enum$,"yield",$to_a(args))}),-2)}),1),$def(self,"$drop_while",(function $$drop_while(){var block=$$drop_while.$$p||nil,succeeding=nil;return delete $$drop_while.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to call lazy drop_while without a block"),succeeding=!0,$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var args;if(null==enum$&&(enum$=nil),args=Opal.slice.call(arguments,1),!$truthy(succeeding))return $send(enum$,"yield",$to_a(args));var value=$yieldX(block,args);$truthy(value)||(succeeding=!1,$send(enum$,"yield",$to_a(args)))}),-2)}),0),$def(self,"$enum_for",(function $$enum_for($a,$b){var $post_args,method,args,block=$$enum_for.$$p||nil,self=this;return delete $$enum_for.$$p,($post_args=Opal.slice.call(arguments)).length>0&&(method=$post_args.shift()),null==method&&(method="each"),args=$post_args,$send(self.$class(),"for",[self,method].concat($to_a(args)),block.$to_proc())}),-1),$def(self,"$find_all",(function $$find_all(){var block=$$find_all.$$p||nil;return delete $$find_all.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to call lazy select without a block"),$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var $post_args,args;null==enum$&&(enum$=nil),$post_args=Opal.slice.call(arguments,1);var value=$yieldX(block,args=$post_args);$truthy(value)&&$send(enum$,"yield",$to_a(args))}),-2)}),0),$def(self,"$grep",(function $$grep(pattern){var block=$$grep.$$p||nil;return delete $$grep.$$p,$truthy(block)?$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var args;null==enum$&&(enum$=nil),args=Opal.slice.call(arguments,1);var param=$Opal.$destructure(args),value=pattern["$==="](param);$truthy(value)&&(value=$yield1(block,param),enum$.$yield($yield1(block,param)))}),-2):$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var args;null==enum$&&(enum$=nil),args=Opal.slice.call(arguments,1);var param=$Opal.$destructure(args),value=pattern["$==="](param);$truthy(value)&&enum$.$yield(param)}),-2)}),1),$def(self,"$reject",(function $$reject(){var block=$$reject.$$p||nil;return delete $$reject.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to call lazy reject without a block"),$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var $post_args,args;null==enum$&&(enum$=nil),$post_args=Opal.slice.call(arguments,1);var value=$yieldX(block,args=$post_args);$truthy(value)||$send(enum$,"yield",$to_a(args))}),-2)}),0),$def(self,"$take",(function(n){var current_size,set_size,taken=nil;return n=$coerce_to(n,$$$("Integer"),"to_int"),$truthy($rb_lt(n,0))&&$Kernel.$raise($$$("ArgumentError"),"attempt to take negative size"),current_size=this.$enumerator_size(),set_size=$eqeqeq($$$("Integer"),current_size)&&$truthy($rb_lt(n,current_size))?n:current_size,taken=0,$send($$("Lazy"),"new",[this,set_size],(function(enum$,$a){var args;return null==enum$&&(enum$=nil),args=Opal.slice.call(arguments,1),$truthy($rb_lt(taken,n))?($send(enum$,"yield",$to_a(args)),taken=$rb_plus(taken,1)):$Kernel.$raise($$("StopLazyError"))}),-2)}),1),$def(self,"$take_while",(function $$take_while(){var block=$$take_while.$$p||nil;return delete $$take_while.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to call lazy take_while without a block"),$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var $post_args,args;null==enum$&&(enum$=nil),$post_args=Opal.slice.call(arguments,1);var value=$yieldX(block,args=$post_args);$truthy(value)?$send(enum$,"yield",$to_a(args)):$Kernel.$raise($$("StopLazyError"))}),-2)}),0),$def(self,"$inspect",(function(){return"#<"+this.$class()+": "+this.enumerator.$inspect()+">"}),0),$alias(self,"force","to_a"),$alias(self,"filter","find_all"),$alias(self,"flat_map","collect_concat"),$alias(self,"map","collect"),$alias(self,"select","find_all"),$alias(self,"to_enum","enum_for")}(self,self,$nesting)}(0,0,[])},Opal.modules["corelib/enumerator/yielder"]=function(Opal){var $base,$parent_nesting,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$klass=Opal.klass,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a;return Opal.add_stubs("yield,proc"),$base=$nesting[0],$parent_nesting=$nesting,function($base,$super){var self=$klass($base,null,"Yielder");return self.$$prototype.block=nil,$def(self,"$initialize",(function $$initialize(){var block=$$initialize.$$p||nil;return delete $$initialize.$$p,this.block=block,this}),0),$def(self,"$yield",(function($a){var values,self=this;values=Opal.slice.call(arguments);var value=Opal.yieldX(self.block,values);if(value===$breaker)throw $breaker;return value}),-1),$def(self,"$<<",(function(value){return this.$yield(value),this}),1),$def(self,"$to_proc",(function(){return $send(this,"proc",[],(function $$3($a){var $post_args,self=null==$$3.$$s?this:$$3.$$s;return $post_args=Opal.slice.call(arguments),$send(self,"yield",$to_a($post_args))}),{$$arity:-1,$$s:this})}),0)}([$klass($base,null,"Enumerator")].concat($parent_nesting)[0])},Opal.modules["corelib/enumerator"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$slice=Opal.slice,$coerce_to=Opal.coerce_to,$klass=Opal.klass,$defs=Opal.defs,$truthy=Opal.truthy,$send=Opal.send,$not=Opal.not,$def=Opal.def,$rb_plus=Opal.rb_plus,$to_a=Opal.to_a,$Opal=Opal.Opal,$send2=Opal.send2,$find_super=Opal.find_super,$rb_ge=Opal.rb_ge,$Kernel=Opal.Kernel,$rb_le=Opal.rb_le,$alias=Opal.alias;return Opal.add_stubs("require,include,allocate,new,to_proc,!,respond_to?,empty?,nil?,+,class,__send__,call,enum_for,size,destructure,map,>=,length,raise,[],peek_values,<=,next_values,inspect,any?,autoload"),self.$require("corelib/enumerable"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Enumerator"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.size=$proto.args=$proto.object=$proto.method=$proto.values=$proto.cursor=nil,self.$include($$$("Enumerable")),self.$$prototype.$$is_enumerator=!0,$defs(self,"$for",(function $Enumerator_for$1(object,$a,$b){var $post_args,method,args,block=$Enumerator_for$1.$$p||nil,self=this;delete $Enumerator_for$1.$$p,($post_args=Opal.slice.call(arguments,1)).length>0&&(method=$post_args.shift()),null==method&&(method="each"),args=$post_args;var obj=self.$allocate();return obj.object=object,obj.size=block,obj.method=method,obj.args=args,obj.cursor=0,obj}),-2),$def(self,"$initialize",(function $$initialize($a){var block=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,Opal.slice.call(arguments),self.cursor=0,$truthy(block)?(self.object=$send($$("Generator"),"new",[],block.$to_proc()),self.method="each",self.args=[],self.size=arguments[0]||nil,$truthy(self.size)&&$not(self.size["$respond_to?"]("call"))?self.size=$coerce_to(self.size,$$$("Integer"),"to_int"):nil):(self.object=arguments[0],self.method=arguments[1]||"each",self.args=$slice.call(arguments,2),self.size=nil)}),-1),$def(self,"$each",(function $$each($a){var args,block=$$each.$$p||nil,self=this;return delete $$each.$$p,args=Opal.slice.call(arguments),$truthy(block["$nil?"]())&&$truthy(args["$empty?"]())?self:(args=$rb_plus(self.args,args),$truthy(block["$nil?"]())?$send(self.$class(),"new",[self.object,self.method].concat($to_a(args))):$send(self.object,"__send__",[self.method].concat($to_a(args)),block.$to_proc()))}),-1),$def(self,"$size",(function(){return $truthy(this.size["$respond_to?"]("call"))?$send(this.size,"call",$to_a(this.args)):this.size}),0),$def(self,"$with_index",(function $$with_index(offset){var block=$$with_index.$$p||nil;if(delete $$with_index.$$p,null==offset&&(offset=0),offset=$truthy(offset)?$coerce_to(offset,$$$("Integer"),"to_int"):0,!$truthy(block))return $send(this,"enum_for",["with_index",offset],(function $$2(){return(null==$$2.$$s?this:$$2.$$s).$size()}),{$$arity:0,$$s:this});var index=offset;return this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=block(param,index);return index++,value},this.$each()}),-1),$def(self,"$each_with_index",(function $$each_with_index(){var block=$$each_with_index.$$p||nil;return delete $$each_with_index.$$p,block===nil?$send(this,"enum_for",["each_with_index"],(function $$3(){return(null==$$3.$$s?this:$$3.$$s).$size()}),{$$arity:0,$$s:this}):($send2(this,$find_super(this,"each_with_index",$$each_with_index,!1,!0),"each_with_index",[],block),this.object)}),0),$def(self,"$rewind",(function(){return this.cursor=0,this}),0),$def(self,"$peek_values",(function(){var $ret_or_1;return this.values=$truthy($ret_or_1=this.values)?$ret_or_1:$send(this,"map",[],(function($a){return Opal.slice.call(arguments)}),-1),$truthy($rb_ge(this.cursor,this.values.$length()))&&$Kernel.$raise($$$("StopIteration"),"iteration reached an end"),this.values["$[]"](this.cursor)}),0),$def(self,"$peek",(function(){var values=nil;return values=this.$peek_values(),$truthy($rb_le(values.$length(),1))?values["$[]"](0):values}),0),$def(self,"$next_values",(function(){var out;return out=this.$peek_values(),this.cursor=$rb_plus(this.cursor,1),out}),0),$def(self,"$next",(function(){var values=nil;return values=this.$next_values(),$truthy($rb_le(values.$length(),1))?values["$[]"](0):values}),0),$def(self,"$feed",(function(arg){return this.$raise($$("NotImplementedError"),"Opal doesn't support Enumerator#feed")}),1),$def(self,"$+",(function(other){return $$$($$$("Enumerator"),"Chain").$new(this,other)}),1),$def(self,"$inspect",(function(){var result=nil;return result="#<"+this.$class()+": "+this.object.$inspect()+":"+this.method,$truthy(this.args["$any?"]())&&(result=$rb_plus(result,"("+this.args.$inspect()["$[]"]($$$("Range").$new(1,-2))+")")),$rb_plus(result,">")}),0),$alias(self,"with_object","each_with_object"),self.$autoload("ArithmeticSequence","corelib/enumerator/arithmetic_sequence"),self.$autoload("Chain","corelib/enumerator/chain"),self.$autoload("Generator","corelib/enumerator/generator"),self.$autoload("Lazy","corelib/enumerator/lazy"),self.$autoload("Yielder","corelib/enumerator/yielder")}(0,0,[])},Opal.modules["corelib/numeric"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$truthy=Opal.truthy,$Kernel=Opal.Kernel,$def=Opal.def,$to_ary=Opal.to_ary,$eqeqeq=Opal.eqeqeq,$rb_minus=Opal.rb_minus,$rb_times=Opal.rb_times,$rb_lt=Opal.rb_lt,$eqeq=Opal.eqeq,$rb_divide=Opal.rb_divide,$Opal=Opal.Opal,$hash2=Opal.hash2,$not=Opal.not,$send=Opal.send,$rb_ge=Opal.rb_ge,$rb_le=Opal.rb_le,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt,$alias=Opal.alias;return Opal.add_stubs("require,include,instance_of?,class,Float,respond_to?,coerce,__send__,===,raise,equal?,-,*,div,<,-@,ceil,to_f,denominator,to_r,==,floor,/,%,Complex,zero?,numerator,abs,arg,coerce_to!,round,<=>,compare,is_a?,!,new,enum_for,to_proc,negative?,>=,<=,+,to_i,truncate,>"),self.$require("corelib/comparable"),function($base,$super){var self=$klass("::",null,"Numeric");return self.$include($$$("Comparable")),$def(self,"$coerce",(function(other){return $truthy(other["$instance_of?"](this.$class()))?[other,this]:[$Kernel.$Float(other),$Kernel.$Float(this)]}),1),$def(self,"$__coerced__",(function(method,other){var $a,$b,a=nil,b=nil,$ret_or_1=nil;return $truthy(other["$respond_to?"]("coerce"))?($b=other.$coerce(this),a=null==($a=$to_ary($b))[0]?nil:$a[0],b=null==$a[1]?nil:$a[1],a.$__send__(method,b)):$eqeqeq("+",$ret_or_1=method)||$eqeqeq("-",$ret_or_1)||$eqeqeq("*",$ret_or_1)||$eqeqeq("/",$ret_or_1)||$eqeqeq("%",$ret_or_1)||$eqeqeq("&",$ret_or_1)||$eqeqeq("|",$ret_or_1)||$eqeqeq("^",$ret_or_1)||$eqeqeq("**",$ret_or_1)?$Kernel.$raise($$$("TypeError"),other.$class()+" can't be coerced into Numeric"):$eqeqeq(">",$ret_or_1)||$eqeqeq(">=",$ret_or_1)||$eqeqeq("<",$ret_or_1)||$eqeqeq("<=",$ret_or_1)||$eqeqeq("<=>",$ret_or_1)?$Kernel.$raise($$$("ArgumentError"),"comparison of "+this.$class()+" with "+other.$class()+" failed"):nil}),2),$def(self,"$<=>",(function(other){return $truthy(this["$equal?"](other))?0:nil}),1),$def(self,"$+@",(function(){return this}),0),$def(self,"$-@",(function(){return $rb_minus(0,this)}),0),$def(self,"$%",(function(other){return $rb_minus(this,$rb_times(other,this.$div(other)))}),1),$def(self,"$abs",(function(){return $rb_lt(this,0)?this["$-@"]():this}),0),$def(self,"$abs2",(function(){return $rb_times(this,this)}),0),$def(self,"$angle",(function(){return $rb_lt(this,0)?$$$($$$("Math"),"PI"):0}),0),$def(self,"$ceil",(function(ndigits){return null==ndigits&&(ndigits=0),this.$to_f().$ceil(ndigits)}),-1),$def(self,"$conj",(function(){return this}),0),$def(self,"$denominator",(function(){return this.$to_r().$denominator()}),0),$def(self,"$div",(function(other){return $eqeq(other,0)&&$Kernel.$raise($$$("ZeroDivisionError"),"divided by o"),$rb_divide(this,other).$floor()}),1),$def(self,"$divmod",(function(other){return[this.$div(other),this["$%"](other)]}),1),$def(self,"$fdiv",(function(other){return $rb_divide(this.$to_f(),other)}),1),$def(self,"$floor",(function(ndigits){return null==ndigits&&(ndigits=0),this.$to_f().$floor(ndigits)}),-1),$def(self,"$i",(function(){return $Kernel.$Complex(0,this)}),0),$def(self,"$imag",(function(){return 0}),0),$def(self,"$integer?",(function(){return!1}),0),$def(self,"$nonzero?",(function(){return $truthy(this["$zero?"]())?nil:this}),0),$def(self,"$numerator",(function(){return this.$to_r().$numerator()}),0),$def(self,"$polar",(function(){return[this.$abs(),this.$arg()]}),0),$def(self,"$quo",(function(other){return $rb_divide($Opal["$coerce_to!"](this,$$$("Rational"),"to_r"),other)}),1),$def(self,"$real",(function(){return this}),0),$def(self,"$real?",(function(){return!0}),0),$def(self,"$rect",(function(){return[this,0]}),0),$def(self,"$round",(function(digits){return this.$to_f().$round(digits)}),-1),$def(self,"$step",(function $$step($a,$b,$c){var $post_args,$kwargs,limit,step,to,by,block=$$step.$$p||nil,self=this,counter=nil;if(delete $$step.$$p,$post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");function validateParameters(){step===nil&&$Kernel.$raise($$$("TypeError"),"step must be numeric"),null!=step&&step["$=="](0)&&$Kernel.$raise($$$("ArgumentError"),"step can't be 0"),step!==nil&&null!=step||(step=1);var sign=step["$<=>"](0);sign===nil&&$Kernel.$raise($$$("ArgumentError"),"0 can't be coerced into "+step.$class()),limit!==nil&&null!=limit||(limit=sign>0?$$$($$$("Float"),"INFINITY"):$$$($$$("Float"),"INFINITY")["$-@"]()),$Opal.$compare(self,limit)}function stepFloatSize(){if(step>0&&self>limit||step<0&&self.5&&(err=.5),floor((limit-self)/step+err)+1)}function stepSize(){if(validateParameters(),0===step)return 1/0;if(step%1!=0)return stepFloatSize();if(step>0&&self>limit||step<0&&self0&&(limit=$post_args.shift()),$post_args.length>0&&(step=$post_args.shift()),to=$kwargs.$$smap.to,by=$kwargs.$$smap.by,void 0!==limit&&void 0!==to&&$Kernel.$raise($$$("ArgumentError"),"to is given twice"),void 0!==step&&void 0!==by&&$Kernel.$raise($$$("ArgumentError"),"step is given twice"),void 0!==to&&(limit=to),void 0!==by&&(step=by),void 0===limit&&(limit=nil),block===nil)return($not(limit)||$truthy(limit["$is_a?"]($$$("Numeric"))))&&($not(step)||$truthy(step["$is_a?"]($$$("Numeric"))))?$$$($$$("Enumerator"),"ArithmeticSequence").$new([limit,step,$truthy(to)?"to: ":nil,$truthy(by)?"by: ":nil],self):$send(self,"enum_for",["step",limit,step],stepSize.$to_proc());validateParameters();var isDesc=step["$negative?"](),isInf=step["$=="](0)||limit===1/0&&!isDesc||limit===-1/0&&isDesc;if(self.$$is_number&&step.$$is_number&&limit.$$is_number){if(self%1!=0||!isInf&&limit%1!=0||step%1!=0){var begin=self.$to_f().valueOf();step=step.$to_f().valueOf(),limit=limit.$to_f().valueOf();var n=stepFloatSize();if(isFinite(step))if(0===step)for(;;)block(begin);else for(var i=0;i=0?limitd)&&(d=limit),block(d)}else 0!==n&&block(begin);return self}var value=self;if(isInf)for(;;value+=step)block(value);else if(isDesc)for(;value>=limit;value+=step)block(value);else for(;value<=limit;value+=step)block(value);return self}for(counter=self;$truthy(isDesc?$rb_ge(counter,limit):$rb_le(counter,limit));)Opal.yield1(block,counter),counter=$rb_plus(counter,step)}),-1),$def(self,"$to_c",(function(){return $Kernel.$Complex(this,0)}),0),$def(self,"$to_int",(function(){return this.$to_i()}),0),$def(self,"$truncate",(function(ndigits){return null==ndigits&&(ndigits=0),this.$to_f().$truncate(ndigits)}),-1),$def(self,"$zero?",(function(){return this["$=="](0)}),0),$def(self,"$positive?",(function(){return $rb_gt(this,0)}),0),$def(self,"$negative?",(function(){return $rb_lt(this,0)}),0),$def(self,"$dup",(function(){return this}),0),$def(self,"$clone",(function($kwargs){if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==$kwargs.$$smap.freeze&&!0,this}),-1),$def(self,"$finite?",(function(){return!0}),0),$def(self,"$infinite?",(function(){return nil}),0),$alias(self,"arg","angle"),$alias(self,"conjugate","conj"),$alias(self,"imaginary","imag"),$alias(self,"magnitude","abs"),$alias(self,"modulo","%"),$alias(self,"phase","arg"),$alias(self,"rectangular","rect")}()},Opal.modules["corelib/array"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$truthy=Opal.truthy,$falsy=Opal.falsy,$hash_ids=Opal.hash_ids,$yield1=Opal.yield1,$hash_get=Opal.hash_get,$hash_put=Opal.hash_put,$hash_delete=Opal.hash_delete,$coerce_to=Opal.coerce_to,$respond_to=Opal.respond_to,$klass=Opal.klass,$defs=Opal.defs,$Kernel=Opal.Kernel,$def=Opal.def,$Opal=Opal.Opal,$eqeqeq=Opal.eqeqeq,$hash2=Opal.hash2,$send2=Opal.send2,$find_super=Opal.find_super,$send=Opal.send,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$eqeq=Opal.eqeq,$rb_minus=Opal.rb_minus,$to_a=Opal.to_a,$to_ary=Opal.to_ary,$gvars=Opal.gvars,$rb_ge=Opal.rb_ge,$rb_lt=Opal.rb_lt,$neqeq=Opal.neqeq,$alias=Opal.alias;return Opal.add_stubs("require,include,to_a,warn,raise,replace,respond_to?,to_ary,coerce_to?,===,join,to_str,hash,<=>,==,object_id,inspect,enum_for,class,bsearch_index,to_proc,nil?,coerce_to!,>,*,enumerator_size,empty?,size,map,equal?,dup,each,reduce,-,[],dig,eql?,length,exclude_end?,flatten,__id__,&,!,intersection,to_s,new,item,max,min,>=,**,delete_if,reverse,rotate,rand,at,keep_if,shuffle!,<,sort,sort_by,!=,times,[]=,<<,uniq,|,values,is_a?,end,begin,upto,reject,pristine,singleton_class"),self.$require("corelib/enumerable"),self.$require("corelib/numeric"),function($base,$super,$parent_nesting){var self=$klass("::",Array,"Array"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);function toArraySubclass(obj,klass){return klass.$$name===Opal.Array?obj:klass.$allocate().$replace(obj.$to_a())}function filterIf(self,filter,block){for(var value,raised=null,updated=new Array(self.length),i=0,i2=0,length=self.length;isize?nil:to<0&&(to+=size)<0?[]:(exclude&&index.end!==nil||(to+=1),self.slice(from,to)))}function binomial_coefficient(n,k){return n===k||0===k?1:k>0&&n>k?binomial_coefficient(n-1,k-1)+binomial_coefficient(n-1,k):0}self.$include($$$("Enumerable")),Opal.prop(self.$$prototype,"$$is_array",!0),$defs(self,"$[]",(function($a){var self=this;return toArraySubclass(Opal.slice.call(arguments),self)}),-1),$def(self,"$initialize",(function $$initialize(size,obj){var i,value,block=$$initialize.$$p||nil,self=this;if(delete $$initialize.$$p,null==size&&(size=nil),null==obj&&(obj=nil),obj!==nil&&block!==nil&&$Kernel.$warn("warning: block supersedes default value argument"),size>$$$($$$("Integer"),"MAX")&&$Kernel.$raise($$$("ArgumentError"),"array size too big"),arguments.length>2&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arguments.length+" for 0..2)"),0===arguments.length)return self.splice(0,self.length),self;if(1===arguments.length){if(size.$$is_array)return self.$replace(size.$to_a()),self;if(size["$respond_to?"]("to_ary"))return self.$replace(size.$to_ary()),self}if((size=$coerce_to(size,$$$("Integer"),"to_int"))<0&&$Kernel.$raise($$$("ArgumentError"),"negative array size"),self.splice(0,self.length),block===nil)for(i=0;i",(function(other){if($eqeqeq($$$("Array"),other))other=other.$to_a();else{if(!$truthy(other["$respond_to?"]("to_ary")))return nil;other=other.$to_ary().$to_a()}if(this.$hash()===other.$hash())return 0;for(var count=Math.min(this.length,other.length),i=0;i"](other[i]);if(0!==tmp)return tmp}return this.length["$<=>"](other.length)}),1),$def(self,"$==",(function(other){var recursed={};return function _eqeq(array,other){var i,length,a,b;if(array===other)return!0;if(!other.$$is_array)return!!$respond_to(other,"$to_ary")&&other["$=="](array);if(array.$$constructor!==Array&&(array=array.$to_a()),other.$$constructor!==Array&&(other=other.$to_a()),array.length!==other.length)return!1;for(recursed[array.$object_id()]=!0,i=0,length=array.length;i=size||index<0?nil:self[index]:(length=$coerce_to(length,Opal.Integer,"to_int"))<0||index>size||index<0?nil:self.slice(index,index+length)}(this,index,length)}),-2),$def(self,"$[]=",(function(index,value,extra){var i,old,data=nil,length=nil,size=this.length;if($eqeqeq($$$("Range"),index)){data=$eqeqeq($$$("Array"),value)?value.$to_a():$truthy(value["$respond_to?"]("to_ary"))?value.$to_ary().$to_a():[value];var exclude=index.excl,from=index.begin===nil?0:$coerce_to(index.begin,Opal.Integer,"to_int"),to=index.end===nil?-1:$coerce_to(index.end,Opal.Integer,"to_int");if(from<0&&(from+=size)<0&&$Kernel.$raise($$$("RangeError"),index.$inspect()+" out of range"),to<0&&(to+=size),exclude&&index.end!==nil||(to+=1),from>size)for(i=size;isize)for(i=size;i=this.length?nil:this[index]}),1),$def(self,"$bsearch_index",(function $$bsearch_index(){var block=$$bsearch_index.$$p||nil;if(delete $$bsearch_index.$$p,block===nil)return this.$enum_for("bsearch_index");for(var mid,val,ret,min=0,max=this.length,smaller=!1,satisfied=nil;min0;){for(i=0,length=this.length;i=0&&num=0&&function iterate(max,from,buffer,self){if(buffer.length!=max)for(var i=from;i=this.length)return nil;var result=this[index];return this.splice(index,1),result}),1),$def(self,"$delete_if",(function $$delete_if(){var block=$$delete_if.$$p||nil;return delete $$delete_if.$$p,block===nil?$send(this,"enum_for",["delete_if"],(function $$23(){return(null==$$23.$$s?this:$$23.$$s).$size()}),{$$arity:0,$$s:this}):(filterIf(this,$falsy,block),this)}),0),$def(self,"$difference",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"reduce",[self.$to_a().$dup()],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),$rb_minus(a,b)}),2)}),-1),$def(self,"$dig",(function(idx,$a){var idxs,self=this,item=nil;return idxs=Opal.slice.call(arguments,1),(item=self["$[]"](idx))===nil||0===idxs.length?item:($truthy(item["$respond_to?"]("dig"))||$Kernel.$raise($$$("TypeError"),item.$class()+" does not have #dig method"),$send(item,"dig",$to_a(idxs)))}),-2),$def(self,"$drop",(function(number){return(number=$coerce_to(number,$$$("Integer"),"to_int"))<0&&$Kernel.$raise($$$("ArgumentError")),this.slice(number)}),1),$def(self,"$dup",(function $$dup(){var $yield=$$dup.$$p||nil;return delete $$dup.$$p,this.$$class===Opal.Array&&this.$$class.$allocate.$$pristine&&this.$copy_instance_variables.$$pristine&&this.$initialize_dup.$$pristine?this.slice(0):$send2(this,$find_super(this,"dup",$$dup,!1,!0),"dup",[],$yield)}),0),$def(self,"$each",(function $$each(){var block=$$each.$$p||nil;if(delete $$each.$$p,block===nil)return $send(this,"enum_for",["each"],(function $$25(){return(null==$$25.$$s?this:$$25.$$s).$size()}),{$$arity:0,$$s:this});for(var i=0,length=this.length;i=0&&index2)&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+args.$length()+" for 0..2)"),one=null==($b=$to_ary(args))[0]?nil:$b[0],two=null==$b[1]?nil:$b[1]):($truthy(0==args.length)?$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments (0 for 1..3)"):$truthy(args.length>3)&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+args.$length()+" for 1..3)"),obj=null==($b=$to_ary(args))[0]?nil:$b[0],one=null==$b[1]?nil:$b[1],two=null==$b[2]?nil:$b[2]),$eqeqeq($$$("Range"),one)){if($truthy(two)&&$Kernel.$raise($$$("TypeError"),"length invalid with range"),left=one.begin===nil?0:$coerce_to(one.begin,$$$("Integer"),"to_int"),$truthy(left<0)&&(left+=this.length),$truthy(left<0)&&$Kernel.$raise($$$("RangeError"),one.$inspect()+" out of range"),right=one.end===nil?-1:$coerce_to(one.end,$$$("Integer"),"to_int"),$truthy(right<0)&&(right+=this.length),$truthy(one["$exclude_end?"]())||(right+=1),$truthy(right<=left))return self}else if($truthy(one))if(left=$coerce_to(one,$$$("Integer"),"to_int"),$truthy(left<0)&&(left+=this.length),$truthy(left<0)&&(left=0),$truthy(two)){if(right=$coerce_to(two,$$$("Integer"),"to_int"),$truthy(0==right))return self;right+=left}else right=this.length;else left=0,right=this.length;if($truthy(left>this.length))for(i=this.length;ithis.length)&&(this.length=right),$truthy(block))for(this.length;left0){if(index<0&&(index+=self.length+1)<0&&$Kernel.$raise($$$("IndexError"),index+" is out of bounds"),index>self.length)for(var i=self.length;ithis.length&&(count=this.length),this.slice(this.length-count,this.length))}),-1),$def(self,"$length",(function(){return this.length}),0),$def(self,"$max",(function $$max(n){var block=$$max.$$p||nil;return delete $$max.$$p,$send(this.$each(),"max",[n],block.$to_proc())}),-1),$def(self,"$min",(function $$min(){var block=$$min.$$p||nil;return delete $$min.$$p,$send(this.$each(),"min",[],block.$to_proc())}),0),$def(self,"$permutation",(function $$permutation(num){var permute,offensive,output,block=$$permutation.$$p||nil,self=this,perm=nil,used=nil;if(delete $$permutation.$$p,block===nil)return $send(self,"enum_for",["permutation",num],(function $$34(){var self=null==$$34.$$s?this:$$34.$$s;return function(from,how_many){for(var count=how_many>=0?1:0;how_many;)count*=from,from--,how_many--;return count}(self.length,void 0===num?self.length:num)}),{$$arity:0,$$s:self});if((num=void 0===num?self.length:$coerce_to(num,$$$("Integer"),"to_int"))<0||self.lengththis.length)?this.splice(0,this.length):this.splice(this.length-count,this.length))}),-1),$def(self,"$product",(function $$product($a){var $post_args,args,block=$$product.$$p||nil,self=this;delete $$product.$$p,$post_args=Opal.slice.call(arguments);var i,m,subarray,len,result=block!==nil?null:[],n=(args=$post_args).length+1,counters=new Array(n),lengths=new Array(n),arrays=new Array(n),resultlen=1;for(arrays[0]=self,i=1;i2147483647&&$Kernel.$raise($$$("RangeError"),"too big to product"),lengths[i]=len,counters[i]=0}outer_loop:for(;;){for(subarray=[],i=0;i=0&&!(i>=this.length);i--)if(this[i]["$=="](object))return i}else if(block!==nil){for(i=this.length-1;i>=0&&!(i>=this.length);i--)if(!1!==(value=block(this[i]))&&value!==nil)return i}else if(null==object)return this.$enum_for("rindex");return nil}),-1),$def(self,"$rotate",(function(n){var ary,idx,firstPart,lastPart;return null==n&&(n=1),n=$coerce_to(n,$$$("Integer"),"to_int"),1===this.length?this.slice():0===this.length?[]:(idx=n%(ary=this.slice()).length,firstPart=ary.slice(idx),lastPart=ary.slice(0,idx),firstPart.concat(lastPart))}),-1),$def(self,"$rotate!",(function(cnt){var ary;return null==cnt&&(cnt=1),0===this.length||1===this.length?this:(cnt=$coerce_to(cnt,$$$("Integer"),"to_int"),ary=this.$rotate(cnt),this.$replace(ary))}),-1),function($base,$super){var self=$klass($base,null,"SampleRandom");self.$$prototype.rng=nil,$def(self,"$initialize",(function(rng){return this.rng=rng}),1),$def(self,"$rand",(function(size){var random;return random=$coerce_to(this.rng.$rand(size),$$$("Integer"),"to_int"),$truthy(random<0)&&$Kernel.$raise($$$("RangeError"),"random value must be >= 0"),$truthy(randomthis.length&&(count=this.length),count){case 0:return[];case 1:return[this[rng.$rand(this.length)]];case 2:return(i=rng.$rand(this.length))===(j=rng.$rand(this.length))&&(j=0===i?i+1:i-1),[this[i],this[j]];default:if(this.length/count>3){for(abandon=!1,spin=0,i=1,(result=$$("Array").$new(count))[0]=rng.$rand(this.length);i100){abandon=!0;break}k=rng.$rand(this.length)}if(abandon)break;j++}if(abandon)break;result[i]=k,i++}if(!abandon){for(i=0;i=i&&$Kernel.$raise($$$("RangeError"),"random number too big "+j)):j=this.$rand(i),tmp=this[--i],this[i]=this[j],this[j]=tmp;return this}),-1),$def(self,"$slice!",(function(index,length){var result=nil,range=nil,range_start=nil,range_end=nil,start=nil;if(result=nil,$truthy(void 0===length))if($eqeqeq($$$("Range"),index)){range=index,result=this["$[]"](range),range_start=range.begin===nil?0:$coerce_to(range.begin,$$$("Integer"),"to_int"),range_end=range.end===nil?-1:$coerce_to(range.end,$$$("Integer"),"to_int"),range_start<0&&(range_start+=this.length),range_end<0?range_end+=this.length:range_end>=this.length&&(range_end=this.length-1,range.excl&&(range_end+=1));var range_length=range_end-range_start;range.excl&&range.end!==nil?range_end-=1:range_length+=1,range_start=0&&range_end=0&&range_length>0&&this.splice(range_start,range_length)}else{if((start=$coerce_to(index,$$$("Integer"),"to_int"))<0&&(start+=this.length),start<0||start>=this.length)return nil;result=this[start],0===start?this.shift():this.splice(start,1)}else{if(start=$coerce_to(index,$$$("Integer"),"to_int"),(length=$coerce_to(length,$$$("Integer"),"to_int"))<0)return nil;result=this["$[]"](start,length),start<0&&(start+=this.length),start+length>this.length&&(length=this.length-start),start=0&&this.splice(start,length)}return result}),-2),$def(self,"$sort",(function $$sort(){var block=$$sort.$$p||nil;return delete $$sort.$$p,$truthy(this.length>1)?(block===nil&&(block=function(a,b){return a["$<=>"](b)}),this.slice().sort((function(x,y){var ret=block(x,y);return ret===nil&&$Kernel.$raise($$$("ArgumentError"),"comparison of "+x.$inspect()+" with "+y.$inspect()+" failed"),$rb_gt(ret,0)?1:$rb_lt(ret,0)?-1:0}))):this}),0),$def(self,"$sort!",(function $Array_sort$excl$47(){var result,block=$Array_sort$excl$47.$$p||nil;delete $Array_sort$excl$47.$$p,result=block!==nil?$send(this.slice(),"sort",[],block.$to_proc()):this.slice().$sort(),this.length=0;for(var i=0,length=result.length;i=0;)self[len]=self[len-objectsLength],len--;for(var j=0;j=,>,==,compare_by_identity,lambda?,abs,arity,enum_for,size,respond_to?,class,dig,except!,dup,delete,new,inspect,map,to_proc,flatten,eql?,default,default_proc,default_proc=,-,default=,to_h,proc"),self.$require("corelib/enumerable"),function($base,$super,$parent_nesting){var inspect_ids,self=$klass("::",null,"Hash"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$include($$$("Enumerable")),self.$$prototype.$$is_hash=!0,$defs(self,"$[]",(function($a){var argv,hash,i,self=this,argc=(argv=Opal.slice.call(arguments)).length;if(1===argc){if((hash=$Opal["$coerce_to?"](argv["$[]"](0),$$$("Hash"),"to_hash"))!==nil)return self.$allocate()["$merge!"](hash);for((argv=$Opal["$coerce_to?"](argv["$[]"](0),$$$("Array"),"to_ary"))===nil&&$Kernel.$raise($$$("ArgumentError"),"odd number of arguments for Hash"),argc=argv.length,hash=self.$allocate(),i=0;i=",(function(other){var result=nil;return other=$Opal["$coerce_to!"](other,$$$("Hash"),"to_hash"),!(this.$$keys.length",(function(other){return other=$Opal["$coerce_to!"](other,$$$("Hash"),"to_hash"),!(this.$$keys.length<=other.$$keys.length)&&$rb_ge(this,other)}),1),$def(self,"$<",(function(other){return other=$Opal["$coerce_to!"](other,$$$("Hash"),"to_hash"),$rb_gt(other,this)}),1),$def(self,"$<=",(function(other){return other=$Opal["$coerce_to!"](other,$$$("Hash"),"to_hash"),$rb_ge(other,this)}),1),$def(self,"$[]",(function(key){var value=$hash_get(this,key);return void 0!==value?value:this.$default(key)}),1),$def(self,"$[]=",(function(key,value){return $hash_put(this,key,value),value}),2),$def(self,"$assoc",(function(object){for(var key,i=0,keys=this.$$keys,length=keys.length;i"+value);return"{"+result.join(", ")+"}"}finally{top&&(inspect_ids=void 0)}}()}),0),$def(self,"$invert",(function(){for(var key,value,hash=$hash(),i=0,keys=this.$$keys,length=keys.length;i0?[key=(key=keys[0]).$$is_string?key:key.key,$hash_delete(this,key)]:this.$default(nil)}),0),$def(self,"$slice",(function($a){var keys,self=this;keys=Opal.slice.call(arguments);for(var result=$hash(),i=0,length=keys.length;i,!,**,new,<,to_f,==,nan?,infinite?,enum_for,+,-,gcd,lcm,%,/,frexp,to_i,ldexp,rationalize,*,<<,to_r,truncate,-@,size,<=,>=,inspect,coerce_to?"),self.$require("corelib/numeric"),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Number");[self].concat($parent_nesting);$Opal.$bridge(Number,self),Opal.prop(self.$$prototype,"$$is_number",!0),self.$$is_number_class=!0,function(self,$parent_nesting){$def(self,"$allocate",(function(){return $Kernel.$raise($$$("TypeError"),"allocator undefined for "+this.$name())}),0),Opal.udef(self,"$new")}(Opal.get_singleton_class(self)),$def(self,"$coerce",(function(other){if(other===nil)$Kernel.$raise($$$("TypeError"),"can't convert "+other.$class()+" into Float");else{if(other.$$is_string)return[$Kernel.$Float(other),this];if(other["$respond_to?"]("to_f"))return[$Opal["$coerce_to!"](other,$$$("Float"),"to_f"),this];if(other.$$is_number)return[other,this];$Kernel.$raise($$$("TypeError"),"can't convert "+other.$class()+" into Float")}}),1),$def(self,"$__id__",(function(){return 2*this+1}),0),$def(self,"$+",(function(other){return other.$$is_number?this+other:this.$__coerced__("+",other)}),1),$def(self,"$-",(function(other){return other.$$is_number?this-other:this.$__coerced__("-",other)}),1),$def(self,"$*",(function(other){return other.$$is_number?this*other:this.$__coerced__("*",other)}),1),$def(self,"$/",(function(other){return other.$$is_number?this/other:this.$__coerced__("/",other)}),1),$def(self,"$%",(function(other){return other.$$is_number?other==-1/0?other:0!=other?other<0||this<0?(this%other+other)%other:this%other:void $Kernel.$raise($$$("ZeroDivisionError"),"divided by 0"):this.$__coerced__("%",other)}),1),$def(self,"$&",(function(other){return other.$$is_number?this&other:this.$__coerced__("&",other)}),1),$def(self,"$|",(function(other){return other.$$is_number?this|other:this.$__coerced__("|",other)}),1),$def(self,"$^",(function(other){return other.$$is_number?this^other:this.$__coerced__("^",other)}),1),$def(self,"$<",(function(other){return other.$$is_number?this",(function(other){return other.$$is_number?this>other:this.$__coerced__(">",other)}),1),$def(self,"$>=",(function(other){return other.$$is_number?this>=other:this.$__coerced__(">=",other)}),1);$def(self,"$<=>",(function(other){try{return function(self,other){return other.$$is_number?isNaN(self)||isNaN(other)?nil:self>other?1:self",other)}(this,other)}catch($err){if(!Opal.rescue($err,[$$$("ArgumentError")]))throw $err;try{return nil}finally{Opal.pop_exception()}}}),1),$def(self,"$<<",(function(count){return(count=$Opal["$coerce_to!"](count,$$$("Integer"),"to_int"))>0?this<>-count}),1),$def(self,"$>>",(function(count){return(count=$Opal["$coerce_to!"](count,$$$("Integer"),"to_int"))>0?this>>count:this<<-count}),1),$def(self,"$[]",(function(bit){return(bit=$Opal["$coerce_to!"](bit,$$$("Integer"),"to_int"))<0?0:bit>=32?this<0?1:0:this>>bit&1}),1),$def(self,"$+@",(function(){return+this}),0),$def(self,"$-@",(function(){return-this}),0),$def(self,"$~",(function(){return~this}),0),$def(self,"$**",(function(other){return $eqeqeq($$$("Integer"),other)?$not($$$("Integer")["$==="](this))||$truthy($rb_gt(other,0))?Math.pow(this,other):$$$("Rational").$new(this,1)["$**"](other):$rb_lt(this,0)&&($eqeqeq($$$("Float"),other)||$eqeqeq($$$("Rational"),other))?$$$("Complex").$new(this,0)["$**"](other.$to_f()):$truthy(null!=other.$$is_number)?Math.pow(this,other):this.$__coerced__("**",other)}),1),$def(self,"$===",(function(other){return other.$$is_number?this.valueOf()===other.valueOf():!!other["$respond_to?"]("==")&&other["$=="](this)}),1),$def(self,"$==",(function(other){return other.$$is_number?this.valueOf()===other.valueOf():!!other["$respond_to?"]("==")&&other["$=="](this)}),1),$def(self,"$abs",(function(){return Math.abs(this)}),0),$def(self,"$abs2",(function(){return Math.abs(this*this)}),0),$def(self,"$allbits?",(function(mask){return(this&(mask=$Opal["$coerce_to!"](mask,$$$("Integer"),"to_int")))==mask}),1),$def(self,"$anybits?",(function(mask){return 0!=(this&(mask=$Opal["$coerce_to!"](mask,$$$("Integer"),"to_int")))}),1),$def(self,"$angle",(function(){return $truthy(this["$nan?"]())?this:0==this?1/this>0?0:Math.PI:this<0?Math.PI:0}),0),$def(self,"$bit_length",(function(){if($eqeqeq($$$("Integer"),this)||$Kernel.$raise($$$("NoMethodError").$new("undefined method `bit_length` for "+this+":Float","bit_length")),0===this||-1===this)return 0;for(var result=0,value=this<0?~this:this;0!=value;)result+=1,value>>>=1;return result}),0),$def(self,"$ceil",(function(ndigits){null==ndigits&&(ndigits=0);var f=this.$to_f();if(f%1==0&&ndigits>=0)return f;var factor=Math.pow(10,ndigits),result=Math.ceil(f*factor)/factor;return f%1==0&&(result=Math.round(result)),result}),-1),$def(self,"$chr",(function(encoding){return Opal.enc(String.fromCharCode(this),encoding||"BINARY")}),-1),$def(self,"$denominator",(function $$denominator(){var $yield=$$denominator.$$p||nil;return delete $$denominator.$$p,$truthy(this["$nan?"]())||$truthy(this["$infinite?"]())?1:$send2(this,$find_super(this,"denominator",$$denominator,!1,!0),"denominator",[],$yield)}),0),$def(self,"$downto",(function $$downto(stop){var block=$$downto.$$p||nil;if(delete $$downto.$$p,block===nil)return $send(this,"enum_for",["downto",stop],(function $$25(){var self=null==$$25.$$s?this:$$25.$$s;return $eqeqeq($$$("Numeric"),stop)||$Kernel.$raise($$$("ArgumentError"),"comparison of "+self.$class()+" with "+stop.$class()+" failed"),$truthy($rb_gt(stop,self))?0:$rb_plus($rb_minus(self,stop),1)}),{$$arity:0,$$s:this});stop.$$is_number||$Kernel.$raise($$$("ArgumentError"),"comparison of "+this.$class()+" with "+stop.$class()+" failed");for(var i=this;i>=stop;i--)block(i);return this}),1),$def(self,"$equal?",(function(other){var $ret_or_1;return $truthy($ret_or_1=this["$=="](other))?$ret_or_1:isNaN(this)&&isNaN(other)}),1),$def(self,"$even?",(function(){return this%2==0}),0),$def(self,"$floor",(function(ndigits){null==ndigits&&(ndigits=0);var f=this.$to_f();if(f%1==0&&ndigits>=0)return f;var factor=Math.pow(10,ndigits),result=Math.floor(f*factor)/factor;return f%1==0&&(result=Math.round(result)),result}),-1),$def(self,"$gcd",(function(other){$eqeqeq($$$("Integer"),other)||$Kernel.$raise($$$("TypeError"),"not an integer");for(var min=Math.abs(this),max=Math.abs(other);min>0;){var tmp=min;min=max%min,max=tmp}return max}),1),$def(self,"$gcdlcm",(function(other){return[this.$gcd(other),this.$lcm(other)]}),1),$def(self,"$integer?",(function(){return this%1==0}),0),$def(self,"$is_a?",(function $Number_is_a$ques$29(klass){var $yield=$Number_is_a$ques$29.$$p||nil;return delete $Number_is_a$ques$29.$$p,!(!$eqeq(klass,$$$("Integer"))||!$eqeqeq($$$("Integer"),this))||(!(!$eqeq(klass,$$$("Integer"))||!$eqeqeq($$$("Integer"),this))||(!(!$eqeq(klass,$$$("Float"))||!$eqeqeq($$$("Float"),this))||$send2(this,$find_super(this,"is_a?",$Number_is_a$ques$29,!1,!0),"is_a?",[klass],$yield)))}),1),$def(self,"$instance_of?",(function $Number_instance_of$ques$30(klass){var $yield=$Number_instance_of$ques$30.$$p||nil;return delete $Number_instance_of$ques$30.$$p,!(!$eqeq(klass,$$$("Integer"))||!$eqeqeq($$$("Integer"),this))||(!(!$eqeq(klass,$$$("Integer"))||!$eqeqeq($$$("Integer"),this))||(!(!$eqeq(klass,$$$("Float"))||!$eqeqeq($$$("Float"),this))||$send2(this,$find_super(this,"instance_of?",$Number_instance_of$ques$30,!1,!0),"instance_of?",[klass],$yield)))}),1),$def(self,"$lcm",(function(other){return $eqeqeq($$$("Integer"),other)||$Kernel.$raise($$$("TypeError"),"not an integer"),0==this||0==other?0:Math.abs(this*other/this.$gcd(other))}),1),$def(self,"$next",(function(){return this+1}),0),$def(self,"$nobits?",(function(mask){return 0==(this&(mask=$Opal["$coerce_to!"](mask,$$$("Integer"),"to_int")))}),1),$def(self,"$nonzero?",(function(){return 0==this?nil:this}),0),$def(self,"$numerator",(function $$numerator(){var $yield=$$numerator.$$p||nil;return delete $$numerator.$$p,$truthy(this["$nan?"]())||$truthy(this["$infinite?"]())?this:$send2(this,$find_super(this,"numerator",$$numerator,!1,!0),"numerator",[],$yield)}),0),$def(self,"$odd?",(function(){return this%2!=0}),0),$def(self,"$ord",(function(){return this}),0),$def(self,"$pow",(function(b,m){return 0==this&&$Kernel.$raise($$$("ZeroDivisionError"),"divided by 0"),void 0===m?this["$**"](b):($$$("Integer")["$==="](b)||$Kernel.$raise($$$("TypeError"),"Integer#pow() 2nd argument not allowed unless a 1st argument is integer"),b<0&&$Kernel.$raise($$$("TypeError"),"Integer#pow() 1st argument cannot be negative when 2nd argument specified"),$$$("Integer")["$==="](m)||$Kernel.$raise($$$("TypeError"),"Integer#pow() 2nd argument not allowed unless all arguments are integers"),0===m&&$Kernel.$raise($$$("ZeroDivisionError"),"divided by 0"),this["$**"](b)["$%"](m))}),-2),$def(self,"$pred",(function(){return this-1}),0),$def(self,"$quo",(function $$quo(other){var $yield=$$quo.$$p||nil;return delete $$quo.$$p,$eqeqeq($$$("Integer"),this)?$send2(this,$find_super(this,"quo",$$quo,!1,!0),"quo",[other],$yield):$rb_divide(this,other)}),1),$def(self,"$rationalize",(function(eps){var $a,$b,self=this,f=nil,n=nil;return arguments.length>1&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arguments.length+" for 0..1)"),$eqeqeq($$$("Integer"),self)?$$$("Rational").$new(self,1):$truthy(self["$infinite?"]())?$Kernel.$raise($$$("FloatDomainError"),"Infinity"):$truthy(self["$nan?"]())?$Kernel.$raise($$$("FloatDomainError"),"NaN"):$truthy(null==eps)?($b=$$$("Math").$frexp(self),f=null==($a=$to_ary($b))[0]?nil:$a[0],n=null==$a[1]?nil:$a[1],f=$$$("Math").$ldexp(f,$$$($$$("Float"),"MANT_DIG")).$to_i(),n=$rb_minus(n,$$$($$$("Float"),"MANT_DIG")),$$$("Rational").$new($rb_times(2,f),1["$<<"]($rb_minus(1,n))).$rationalize($$$("Rational").$new(1,1["$<<"]($rb_minus(1,n))))):self.$to_r().$rationalize(eps)}),-1),$def(self,"$remainder",(function(y){return $rb_minus(this,$rb_times(y,$rb_divide(this,y).$truncate()))}),1),$def(self,"$round",(function(ndigits){var $a,$b,exp=nil;if($eqeqeq($$$("Integer"),this)){if($truthy(null==ndigits))return this;if($eqeqeq($$$("Float"),ndigits)&&$truthy(ndigits["$infinite?"]())&&$Kernel.$raise($$$("RangeError"),"Infinity"),ndigits=$Opal["$coerce_to!"](ndigits,$$$("Integer"),"to_int"),$truthy($rb_lt(ndigits,$$$($$$("Integer"),"MIN")))&&$Kernel.$raise($$$("RangeError"),"out of bounds"),$truthy(ndigits>=0))return this;if(.415241*(ndigits=ndigits["$-@"]())-.125>this.$size())return 0;var f=Math.pow(10,ndigits),x=Math.floor((Math.abs(this)+f/2)/f)*f;return this<0?-x:x}if($truthy(this["$nan?"]())&&$truthy(null==ndigits)&&$Kernel.$raise($$$("FloatDomainError"),"NaN"),ndigits=$Opal["$coerce_to!"](ndigits||0,$$$("Integer"),"to_int"),$truthy($rb_le(ndigits,0)))$truthy(this["$nan?"]())?$Kernel.$raise($$$("RangeError"),"NaN"):$truthy(this["$infinite?"]())&&$Kernel.$raise($$$("FloatDomainError"),"Infinity");else{if($eqeq(ndigits,0))return Math.round(this);if($truthy(this["$nan?"]())||$truthy(this["$infinite?"]()))return this}return $b=$$$("Math").$frexp(this),null==($a=$to_ary($b))[0]?nil:$a[0],exp=null==$a[1]?nil:$a[1],$truthy($rb_ge(ndigits,$rb_minus($rb_plus($$$($$$("Float"),"DIG"),2),$truthy($rb_gt(exp,0))?$rb_divide(exp,4):$rb_minus($rb_divide(exp,3),1))))?this:$truthy($rb_lt(ndigits,($truthy($rb_gt(exp,0))?$rb_plus($rb_divide(exp,3),1):$rb_divide(exp,4))["$-@"]()))?0:Math.round(this*Math.pow(10,ndigits))/Math.pow(10,ndigits)}),-1),$def(self,"$times",(function $$times(){var block=$$times.$$p||nil;if(delete $$times.$$p,!$truthy(block))return $send(this,"enum_for",["times"],(function $$34(){return null==$$34.$$s?this:$$34.$$s}),{$$arity:0,$$s:this});for(var i=0;i=0)return f;var factor=Math.pow(10,ndigits),result=parseInt(f*factor,10)/factor;return f%1==0&&(result=Math.round(result)),result}),-1),$def(self,"$digits",(function(base){null==base&&(base=10),$rb_lt(this,0)&&$Kernel.$raise($$$($$$("Math"),"DomainError"),"out of domain"),base=$Opal["$coerce_to!"](base,$$$("Integer"),"to_int"),$truthy($rb_lt(base,2))&&$Kernel.$raise($$$("ArgumentError"),"invalid radix "+base),this!=parseInt(this)&&$Kernel.$raise($$$("NoMethodError"),"undefined method `digits' for "+this.$inspect());var value=this,result=[];if(0==this)return[0];for(;0!=value;)result.push(value%base),value=parseInt(value/base,10);return result}),-1),$def(self,"$divmod",(function $$divmod(other){var $yield=$$divmod.$$p||nil;return delete $$divmod.$$p,$truthy(this["$nan?"]())||$truthy(other["$nan?"]())?$Kernel.$raise($$$("FloatDomainError"),"NaN"):$truthy(this["$infinite?"]())?$Kernel.$raise($$$("FloatDomainError"),"Infinity"):$send2(this,$find_super(this,"divmod",$$divmod,!1,!0),"divmod",[other],$yield)}),1),$def(self,"$upto",(function $$upto(stop){var block=$$upto.$$p||nil;if(delete $$upto.$$p,block===nil)return $send(this,"enum_for",["upto",stop],(function $$35(){var self=null==$$35.$$s?this:$$35.$$s;return $eqeqeq($$$("Numeric"),stop)||$Kernel.$raise($$$("ArgumentError"),"comparison of "+self.$class()+" with "+stop.$class()+" failed"),$truthy($rb_lt(stop,self))?0:$rb_plus($rb_minus(stop,self),1)}),{$$arity:0,$$s:this});stop.$$is_number||$Kernel.$raise($$$("ArgumentError"),"comparison of "+this.$class()+" with "+stop.$class()+" failed");for(var i=this;i<=stop;i++)block(i);return this}),1),$def(self,"$zero?",(function(){return 0==this}),0),$def(self,"$size",(function(){return 4}),0),$def(self,"$nan?",(function(){return isNaN(this)}),0),$def(self,"$finite?",(function(){return this!=1/0&&this!=-1/0&&!isNaN(this)}),0),$def(self,"$infinite?",(function(){return this==1/0?1:this==-1/0?-1:nil}),0),$def(self,"$positive?",(function(){return 0!=this&&(this==1/0||1/this>0)}),0),$def(self,"$negative?",(function(){return this==-1/0||1/this<0}),0),$alias(self,"arg","angle"),$alias(self,"eql?","=="),$alias(self,"fdiv","/"),$alias(self,"inspect","to_s"),$alias(self,"kind_of?","is_a?"),$alias(self,"magnitude","abs"),$alias(self,"modulo","%"),$alias(self,"object_id","__id__"),$alias(self,"phase","angle"),$alias(self,"succ","next"),$alias(self,"to_int","to_i")}(0,$$$("Numeric"),$nesting),$const_set("::","Fixnum",$$$("Number")),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Integer"),$nesting=[self].concat($parent_nesting);self.$$is_number_class=!0,self.$$is_integer_class=!0,function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$allocate",(function(){return $Kernel.$raise($$$("TypeError"),"allocator undefined for "+this.$name())}),0),Opal.udef(self,"$new"),$def(self,"$sqrt",(function(n){return(n=$Opal["$coerce_to!"](n,$$$("Integer"),"to_int"))<0&&$Kernel.$raise($$$($$$("Math"),"DomainError"),'Numerical argument is out of domain - "isqrt"'),parseInt(Math.sqrt(n),10)}),1),$def(self,"$try_convert",(function(object){return $$("Opal")["$coerce_to?"](object,this,"to_int")}),1)}(Opal.get_singleton_class(self),$nesting),$const_set(self,"MAX",Math.pow(2,30)-1),$const_set(self,"MIN",-Math.pow(2,30))}(0,$$$("Numeric"),$nesting),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Float");[self].concat($parent_nesting);return self.$$is_number_class=!0,function(self,$parent_nesting){$def(self,"$allocate",(function(){return $Kernel.$raise($$$("TypeError"),"allocator undefined for "+this.$name())}),0),Opal.udef(self,"$new"),$def(self,"$===",(function(other){return!!other.$$is_number}),1)}(Opal.get_singleton_class(self)),$const_set(self,"INFINITY",1/0),$const_set(self,"MAX",Number.MAX_VALUE),$const_set(self,"MIN",Number.MIN_VALUE),$const_set(self,"NAN",NaN),$const_set(self,"DIG",15),$const_set(self,"MANT_DIG",53),$const_set(self,"RADIX",2),$const_set(self,"EPSILON",Number.EPSILON||2220446049250313e-31)}(0,$$$("Numeric"),$nesting)},Opal.modules["corelib/range"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$truthy=Opal.truthy,$Kernel=Opal.Kernel,$def=Opal.def,$not=Opal.not,$send2=Opal.send2,$find_super=Opal.find_super,$rb_lt=Opal.rb_lt,$rb_le=Opal.rb_le,$send=Opal.send,$eqeq=Opal.eqeq,$eqeqeq=Opal.eqeqeq,$rb_gt=Opal.rb_gt,$rb_minus=Opal.rb_minus,$Opal=Opal.Opal,$rb_divide=Opal.rb_divide,$rb_plus=Opal.rb_plus,$rb_times=Opal.rb_times,$rb_ge=Opal.rb_ge,$alias=Opal.alias;return Opal.add_stubs("require,include,attr_reader,raise,nil?,<=>,include?,!,<,<=,enum_for,size,upto,to_proc,respond_to?,class,succ,==,===,exclude_end?,eql?,begin,end,last,to_a,>,-@,-,to_i,coerce_to!,ceil,/,is_a?,new,loop,+,*,>=,each_with_index,%,step,bsearch,inspect,[],hash"),self.$require("corelib/enumerable"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Range"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;function is_infinite(self){return self.begin===nil||self.end===nil||self.begin===-1/0||self.end===1/0||self.begin===1/0||self.end===-1/0}return $proto.begin=$proto.end=$proto.excl=nil,self.$include($$$("Enumerable")),self.$$prototype.$$is_range=!0,self.$attr_reader("begin","end"),$def(self,"$initialize",(function(first,last,exclude){return null==exclude&&(exclude=!1),$truthy(this.begin)&&$Kernel.$raise($$$("NameError"),"'initialize' called twice"),$truthy(first["$<=>"](last))||$truthy(first["$nil?"]())||$truthy(last["$nil?"]())||$Kernel.$raise($$$("ArgumentError"),"bad value for range"),this.begin=first,this.end=last,this.excl=exclude}),-3),$def(self,"$===",(function(value){return this["$include?"](value)}),1),$def(self,"$count",(function $$count(){var block=$$count.$$p||nil;return delete $$count.$$p,$not(block!==nil)&&$truthy(is_infinite(this))?$$$($$$("Float"),"INFINITY"):$send2(this,$find_super(this,"count",$$count,!1,!0),"count",[],block)}),0),$def(self,"$to_a",(function $$to_a(){var $yield=$$to_a.$$p||nil;return delete $$to_a.$$p,$truthy(is_infinite(this))&&$Kernel.$raise($$$("TypeError"),"cannot convert endless range to an array"),$send2(this,$find_super(this,"to_a",$$to_a,!1,!0),"to_a",[],$yield)}),0),$def(self,"$cover?",(function(value){var beg_cmp,end_cmp,$ret_or_1=nil,$ret_or_2=nil,$ret_or_3=nil;return beg_cmp=$truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.begin["$nil?"]())?-1:$ret_or_3)?$ret_or_2:this.begin["$<=>"](value))&&$ret_or_1,end_cmp=$truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.end["$nil?"]())?-1:$ret_or_3)?$ret_or_2:value["$<=>"](this.end))&&$ret_or_1,$truthy($ret_or_1=$truthy($ret_or_2=$truthy(this.excl)?$truthy($ret_or_3=end_cmp)?$rb_lt(end_cmp,0):$ret_or_3:$truthy($ret_or_3=end_cmp)?$rb_le(end_cmp,0):$ret_or_3)?beg_cmp:$ret_or_2)?$rb_le(beg_cmp,0):$ret_or_1}),1),$def(self,"$each",(function $$each(){var last,i,limit,block=$$each.$$p||nil,current=nil,$ret_or_1=nil;if(delete $$each.$$p,block===nil)return $send(this,"enum_for",["each"],(function $$3(){return(null==$$3.$$s?this:$$3.$$s).$size()}),{$$arity:0,$$s:this});if(this.begin.$$is_number&&this.end.$$is_number){for(this.begin%1==0&&this.end%1==0||$Kernel.$raise($$$("TypeError"),"can't iterate from Float"),i=this.begin,limit=this.end+($truthy(this.excl)?0:1);i"](last),0));)Opal.yield1(block,current),current=current.$succ();return $not(this.excl)&&$eqeq(current,last)&&Opal.yield1(block,current),this}),0),$def(self,"$eql?",(function(other){var $ret_or_1,$ret_or_2;return!!$eqeqeq($$$("Range"),other)&&($truthy($ret_or_1=$truthy($ret_or_2=this.excl["$==="](other["$exclude_end?"]()))?this.begin["$eql?"](other.$begin()):$ret_or_2)?this.end["$eql?"](other.$end()):$ret_or_1)}),1),$def(self,"$exclude_end?",(function(){return this.excl}),0),$def(self,"$first",(function $$first(n){var $yield=$$first.$$p||nil;return delete $$first.$$p,$truthy(this.begin["$nil?"]())&&$Kernel.$raise($$$("RangeError"),"cannot get the minimum of beginless range"),$truthy(null==n)?this.begin:$send2(this,$find_super(this,"first",$$first,!1,!0),"first",[n],$yield)}),-1),$def(self,"$last",(function(n){return $truthy(this.end["$nil?"]())&&$Kernel.$raise($$$("RangeError"),"cannot get the maximum of endless range"),$truthy(null==n)?this.end:this.$to_a().$last(n)}),-1),$def(self,"$max",(function $$max(){var $yield=$$max.$$p||nil;return delete $$max.$$p,$truthy(this.end["$nil?"]())?$Kernel.$raise($$$("RangeError"),"cannot get the maximum of endless range"):$yield!==nil?$send2(this,$find_super(this,"max",$$max,!1,!0),"max",[],$yield):$not(this.begin["$nil?"]())&&($truthy($rb_gt(this.begin,this.end))||$truthy(this.excl)&&$eqeq(this.begin,this.end))?nil:this.excl?this.end-1:this.end}),0),$def(self,"$min",(function $$min(){var $yield=$$min.$$p||nil;return delete $$min.$$p,$truthy(this.begin["$nil?"]())?$Kernel.$raise($$$("RangeError"),"cannot get the minimum of beginless range"):$yield!==nil?$send2(this,$find_super(this,"min",$$min,!1,!0),"min",[],$yield):$not(this.end["$nil?"]())&&($truthy($rb_gt(this.begin,this.end))||$truthy(this.excl)&&$eqeq(this.begin,this.end))?nil:this.begin}),0),$def(self,"$size",(function(){var range_begin,infinity=nil,range_end=nil;return infinity=$$$($$$("Float"),"INFINITY"),$eqeq(this.begin,infinity)&&$not(this.end["$nil?"]())||$eqeq(this.end,infinity["$-@"]())&&$not(this.begin["$nil?"]())?0:$truthy(is_infinite(this))?infinity:$eqeqeq($$$("Numeric"),this.begin)&&$eqeqeq($$$("Numeric"),this.end)?(range_begin=this.begin,range_end=this.end,$truthy(this.excl)&&(range_end=$rb_minus(range_end,1)),$truthy($rb_lt(range_end,range_begin))?0:(Math.abs(range_end-range_begin)+1).$to_i()):nil}),0),$def(self,"$step",(function $$step(n){var $yield=$$step.$$p||nil,self=this,$ret_or_1=nil,i=nil;function coerceStepSize(){null==n?n=1:n.$$is_number||(n=$Opal["$coerce_to!"](n,$$$("Integer"),"to_int")),n<0?$Kernel.$raise($$$("ArgumentError"),"step can't be negative"):0===n&&$Kernel.$raise($$$("ArgumentError"),"step can't be 0")}return delete $$step.$$p,$yield===nil?($truthy(self.begin["$is_a?"]($$("Numeric")))||$truthy(self.begin["$nil?"]()))&&($truthy(self.end["$is_a?"]($$("Numeric")))||$truthy(self.end["$nil?"]()))&&$not($truthy($ret_or_1=self.begin["$nil?"]())?self.end["$nil?"]():$ret_or_1)?$$$($$$("Enumerator"),"ArithmeticSequence").$new(self,n,"step"):$send(self,"enum_for",["step",n],(function(){return coerceStepSize(),function(){if(!self.begin["$respond_to?"]("succ"))return nil;if(self.begin.$$is_string&&self.end.$$is_string)return nil;if(n%1==0)return $rb_divide(self.$size(),n).$ceil();var size,begin=self.begin,end=self.end,abs=Math.abs,floor=Math.floor,err=(abs(begin)+abs(end)+abs(end-begin))/abs(n)*$$$($$$("Float"),"EPSILON");return err>.5&&(err=.5),self.excl?(size=floor((end-begin)/n-err))*n+begin>",(function $Proc_$gt$gt$2(other){return delete $Proc_$gt$gt$2.$$p,$send($Kernel,"proc",[],(function $$3($a){var $post_args,block=$$3.$$p||nil,self=null==$$3.$$s?this:$$3.$$s,out=nil;return delete $$3.$$p,$post_args=Opal.slice.call(arguments),out=$send(self,"call",$to_a($post_args),block.$to_proc()),other.$call(out)}),{$$arity:-1,$$s:this})}),1),$def(self,"$<<",(function $Proc_$lt$lt$4(other){return delete $Proc_$lt$lt$4.$$p,$send($Kernel,"proc",[],(function $$5($a){var $post_args,block=$$5.$$p||nil,self=null==$$5.$$s?this:$$5.$$s,out=nil;return delete $$5.$$p,$post_args=Opal.slice.call(arguments),out=$send(other,"call",$to_a($post_args),block.$to_proc()),self.$call(out)}),{$$arity:-1,$$s:this})}),1),$def(self,"$to_proc",(function(){return this}),0),$def(self,"$lambda?",(function(){return!!this.$$is_lambda}),0),$def(self,"$arity",(function(){return this.$$is_curried?-1:this.$$arity}),0),$def(self,"$source_location",(function(){return this.$$is_curried,nil}),0),$def(self,"$binding",(function(){return this.$$is_curried&&$Kernel.$raise($$$("ArgumentError"),"Can't create Binding"),$truthy($$$("::","Binding","skip_raise")?"constant":nil)?$$$("Binding").$new(nil,[],this.$$s,this.$source_location()):nil}),0),$def(self,"$parameters",(function(){if(this.$$is_curried)return[["rest"]];if(this.$$parameters){if(this.$$is_lambda)return this.$$parameters;var i,length,result=[];for(i=0,length=this.$$parameters.length;iarity&&self.$$is_lambda&&!self.$$is_curried&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+length+" for "+arity+")"),length>=arity?self.$call.apply(self,args):(result=function(){return curried.apply(null,args.concat($slice.call(arguments)))},result.$$is_lambda=self.$$is_lambda,result.$$is_curried=!0,result)}return void 0===arity?arity=self.length:(arity=$Opal["$coerce_to!"](arity,$$$("Integer"),"to_int"),self.$$is_lambda&&arity!==self.length&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arity+" for "+self.length+")")),curried.$$is_lambda=self.$$is_lambda,curried.$$is_curried=!0,curried}),-1),$def(self,"$dup",(function(){var original_proc=this.$$original_proc||this,proc=function(){return original_proc.apply(this,arguments)};for(var prop in this)this.hasOwnProperty(prop)&&(proc[prop]=this[prop]);return proc}),0),$alias(self,"===","call"),$alias(self,"clone","dup"),$alias(self,"yield","call"),$alias(self,"[]","call")},Opal.modules["corelib/method"]=function(Opal){var self,$proto,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$alias=Opal.alias,$Kernel=Opal.Kernel,$send=Opal.send,$to_a=Opal.to_a;return Opal.add_stubs("attr_reader,arity,curry,>>,<<,new,class,join,source_location,raise,call,bind,to_proc"),self=$klass("::",null,"Method"),($proto=self.$$prototype).method=$proto.receiver=$proto.owner=$proto.name=nil,self.$attr_reader("owner","receiver","name"),$def(self,"$initialize",(function(receiver,owner,method,name){return this.receiver=receiver,this.owner=owner,this.name=name,this.method=method}),4),$def(self,"$arity",(function(){return this.method.$arity()}),0),$def(self,"$parameters",(function(){return this.method.$$parameters}),0),$def(self,"$source_location",(function(){var $ret_or_1;return $truthy($ret_or_1=this.method.$$source_location)?$ret_or_1:["(eval)",0]}),0),$def(self,"$comments",(function(){var $ret_or_1;return $truthy($ret_or_1=this.method.$$comments)?$ret_or_1:[]}),0),$def(self,"$call",(function $$call($a){var args,block=$$call.$$p||nil,self=this;return delete $$call.$$p,args=Opal.slice.call(arguments),self.method.$$p=block,self.method.apply(self.receiver,args)}),-1),$def(self,"$curry",(function(arity){return this.method.$curry(arity)}),-1),$def(self,"$>>",(function(other){return this.method["$>>"](other)}),1),$def(self,"$<<",(function(other){return this.method["$<<"](other)}),1),$def(self,"$unbind",(function(){return $$$("UnboundMethod").$new(this.receiver.$class(),this.owner,this.method,this.name)}),0),$def(self,"$to_proc",(function(){var proc=this.$call.bind(this);return proc.$$unbound=this.method,proc.$$is_lambda=!0,proc.$$arity=this.method.$$arity,proc.$$parameters=this.method.$$parameters,proc}),0),$def(self,"$inspect",(function(){return"#<"+this.$class()+": "+this.receiver.$class()+"#"+this.name+" (defined in "+this.owner+" in "+this.$source_location().$join(":")+")>"}),0),$alias(self,"[]","call"),$alias(self,"===","call"),function($base,$super){var self=$klass("::",null,"UnboundMethod"),$proto=self.$$prototype;return $proto.method=$proto.owner=$proto.name=$proto.source=nil,self.$attr_reader("source","owner","name"),$def(self,"$initialize",(function(source,owner,method,name){return this.source=source,this.owner=owner,this.method=method,this.name=name}),4),$def(self,"$arity",(function(){return this.method.$arity()}),0),$def(self,"$parameters",(function(){return this.method.$$parameters}),0),$def(self,"$source_location",(function(){var $ret_or_1;return $truthy($ret_or_1=this.method.$$source_location)?$ret_or_1:["(eval)",0]}),0),$def(self,"$comments",(function(){var $ret_or_1;return $truthy($ret_or_1=this.method.$$comments)?$ret_or_1:[]}),0),$def(self,"$bind",(function(object){if(this.owner.$$is_module||Opal.is_a(object,this.owner))return $$$("Method").$new(object,this.owner,this.method,this.name);$Kernel.$raise($$$("TypeError"),"can't bind singleton method to a different class (expected "+object+".kind_of?("+this.owner+" to be true)")}),1),$def(self,"$bind_call",(function $$bind_call(object,$a){var args,block=$$bind_call.$$p||nil,self=this;return delete $$bind_call.$$p,args=Opal.slice.call(arguments,1),$send(self.$bind(object),"call",$to_a(args),block.$to_proc())}),-2),$def(self,"$inspect",(function(){return"#<"+this.$class()+": "+this.source+"#"+this.name+" (defined in "+this.owner+" in "+this.$source_location().$join(":")+")>"}),0)}()},Opal.modules["corelib/variables"]=function(Opal){var nil=Opal.nil,$gvars=Opal.gvars,$const_set=Opal.const_set,$Object=Opal.Object,$hash2=Opal.hash2;return Opal.add_stubs("new"),$gvars["&"]=$gvars["~"]=$gvars["`"]=$gvars["'"]=nil,$gvars.LOADED_FEATURES=$gvars['"']=Opal.loaded_features,$gvars.LOAD_PATH=$gvars[":"]=[],$gvars["/"]="\n",$gvars[","]=nil,$const_set("::","ARGV",[]),$const_set("::","ARGF",$Object.$new()),$const_set("::","ENV",$hash2([],{})),$gvars.VERBOSE=!1,$gvars.DEBUG=!1,$gvars.SAFE=0},Opal.modules["corelib/io"]=function(Opal){var self,$proto,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$const_set=Opal.const_set,$not=Opal.not,$truthy=Opal.truthy,$def=Opal.def,$Kernel=Opal.Kernel,$gvars=Opal.gvars,$send=Opal.send,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$neqeq=Opal.neqeq,$range=Opal.range,$hash2=Opal.hash2,$eqeq=Opal.eqeq,$to_ary=Opal.to_ary,$rb_gt=Opal.rb_gt,$alias=Opal.alias,$rb_minus=Opal.rb_minus,$writer=nil;Opal.add_stubs("attr_reader,attr_accessor,!,match?,include?,size,write,String,flatten,puts,sysread_noraise,+,!=,[],ord,getc,readchar,raise,gets,==,to_str,length,split,sub,sysread,>,to_a,each_line,enum_for,getbyte,closed_write?,closed_read?,new,write_proc=,-,read_proc="),self=$klass("::",null,"IO"),($proto=self.$$prototype).fd=$proto.read_buffer=$proto.closed=nil,$const_set(self,"SEEK_SET",0),$const_set(self,"SEEK_CUR",1),$const_set(self,"SEEK_END",2),$const_set(self,"SEEK_DATA",3),$const_set(self,"SEEK_HOLE",4),$const_set(self,"READABLE",1),$const_set(self,"WRITABLE",4),self.$attr_reader("eof"),self.$attr_accessor("read_proc","sync","tty","write_proc"),$def(self,"$initialize",(function(fd,flags){return null==flags&&(flags="r"),this.fd=fd,this.flags=flags,this.eof=!1,$truthy(flags["$include?"]("r"))&&$not(flags["$match?"](/[wa+]/))?this.closed="write":$truthy(flags["$match?"](/[wa]/))&&$not(flags["$match?"](/[r+]/))?this.closed="read":nil}),-2),$def(self,"$fileno",(function(){return this.fd}),0),$def(self,"$tty?",(function(){return 1==this.tty}),0),$def(self,"$write",(function(string){return this.write_proc(string),string.$size()}),1),$def(self,"$flush",(function(){return nil}),0),$def(self,"$<<",(function(string){return this.$write(string),this}),1),$def(self,"$print",(function($a){var args,self=this;null==$gvars[","]&&($gvars[","]=nil);for(var i=0,ii=(args=Opal.slice.call(arguments)).length;i0&&$send(self,"puts",$to_a(ary))}else(line=args[i].$$is_string?args[i].valueOf():$Kernel.$String(args[i])).endsWith("\n")||(line+="\n"),self.$write(line);return nil}),-1),$def(self,"$getc",(function(){var $ret_or_1,parts=nil,ret=nil;this.read_buffer=$truthy($ret_or_1=this.read_buffer)?$ret_or_1:"",parts="";do{if(this.read_buffer=$rb_plus(this.read_buffer,parts),$neqeq(this.read_buffer,""))return ret=this.read_buffer["$[]"](0),this.read_buffer=this.read_buffer["$[]"]($range(1,-1,!1)),ret}while($truthy(parts=this.$sysread_noraise(1)));return nil}),0),$def(self,"$getbyte",(function(){var $a;return($a=this.$getc())===nil||null==$a?nil:$send($a,"ord",[])}),0),$def(self,"$readbyte",(function(){return this.$readchar().$ord()}),0),$def(self,"$readchar",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$getc())?$ret_or_1:$Kernel.$raise($$$("EOFError"),"end of file reached")}),0),$def(self,"$readline",(function($a){var $post_args,self=this,$ret_or_1=nil;return $post_args=Opal.slice.call(arguments),$truthy($ret_or_1=$send(self,"gets",$to_a($post_args)))?$ret_or_1:$Kernel.$raise($$$("EOFError"),"end of file reached")}),-1),$def(self,"$gets",(function(sep,limit,opts){var $a,$b,$c,orig_sep,seplen,$ret_or_1=nil,data=nil,ret=nil,orig_buffer=nil;null==$gvars["/"]&&($gvars["/"]=nil),null==sep&&(sep=!1),null==limit&&(limit=nil),null==opts&&(opts=$hash2([],{})),$truthy(sep.$$is_number)&&$not(limit)&&(sep=($a=[!1,sep,limit])[0],limit=$a[1],opts=$a[2]),$truthy(sep.$$is_hash)&&$not(limit)&&$eqeq(opts,$hash2([],{}))?(sep=($a=[!1,nil,sep])[0],limit=$a[1],opts=$a[2]):$truthy(limit.$$is_hash)&&$eqeq(opts,$hash2([],{}))&&(sep=($a=[sep,nil,limit])[0],limit=$a[1],opts=$a[2]),orig_sep=sep,$eqeq(sep,!1)&&(sep=$gvars["/"]),$eqeq(sep,"")&&(sep=/\r?\n\r?\n/),sep=$truthy($ret_or_1=sep)?$ret_or_1:"",$eqeq(orig_sep,"")||(sep=sep.$to_str()),seplen=$eqeq(orig_sep,"")?2:sep.$length(),$eqeq(sep," ")&&(sep=/ /),this.read_buffer=$truthy($ret_or_1=this.read_buffer)?$ret_or_1:"",data="",ret=nil;do{if(this.read_buffer=$rb_plus(this.read_buffer,data),$neqeq(sep,"")&&$truthy($truthy(sep.$$is_regexp)?this.read_buffer["$match?"](sep):this.read_buffer["$include?"](sep))){orig_buffer=this.read_buffer,$c=this.read_buffer.$split(sep,2),ret=null==($b=$to_ary($c))[0]?nil:$b[0],this.read_buffer=null==$b[1]?nil:$b[1],$neqeq(ret,orig_buffer)&&(ret=$rb_plus(ret,orig_buffer["$[]"](ret.$length(),seplen)));break}}while($truthy(data=this.$sysread_noraise($eqeq(sep,"")?65536:1)));return $truthy(ret)||(ret=($a=[$truthy($ret_or_1=this.read_buffer)?$ret_or_1:"",""])[0],this.read_buffer=$a[1],$eqeq(ret,"")&&(ret=nil)),$truthy(ret)&&($truthy(limit)&&(ret=ret["$[]"](Opal.Range.$new(0,limit,!0)),this.read_buffer=$rb_plus(ret["$[]"](Opal.Range.$new(limit,-1,!1)),this.read_buffer)),$truthy(opts["$[]"]("chomp"))&&(ret=ret.$sub(/\r?\n$/,"")),$eqeq(orig_sep,"")&&(ret=ret.$sub(/^[\r\n]+/,""))),$eqeq(orig_sep,!1)&&($gvars._=ret),ret}),-1),$def(self,"$sysread",(function(integer){var $ret_or_1;return $truthy($ret_or_1=this.read_proc(integer))?$ret_or_1:(this.eof=!0,$Kernel.$raise($$$("EOFError"),"end of file reached"))}),1),$def(self,"$sysread_noraise",(function(integer){try{return this.$sysread(integer)}catch($err){if(!Opal.rescue($err,[$$$("EOFError")]))throw $err;try{return nil}finally{Opal.pop_exception()}}}),1),$def(self,"$readpartial",(function(integer){var $a,part,$ret_or_1=nil,ret=nil;return this.read_buffer=$truthy($ret_or_1=this.read_buffer)?$ret_or_1:"",part=this.$sysread(integer),ret=($a=[$rb_plus(this.read_buffer,$truthy($ret_or_1=part)?$ret_or_1:""),""])[0],this.read_buffer=$a[1],$eqeq(ret,"")&&(ret=nil),ret}),1),$def(self,"$read",(function(integer){var $a,$b,$ret_or_1=nil,parts=nil,ret=nil;null==integer&&(integer=nil),this.read_buffer=$truthy($ret_or_1=this.read_buffer)?$ret_or_1:"",parts="",ret=nil;do{if(this.read_buffer=$rb_plus(this.read_buffer,parts),$truthy(integer)&&$truthy($rb_gt(this.read_buffer.$length(),integer)))return ret=($b=[this.read_buffer["$[]"](Opal.Range.$new(0,integer,!0)),this.read_buffer["$[]"](Opal.Range.$new(integer,-1,!1))])[0],this.read_buffer=$b[1],ret}while($truthy(parts=this.$sysread_noraise($truthy($ret_or_1=integer)?$ret_or_1:65536)));return ret=($a=[this.read_buffer,""])[0],this.read_buffer=$a[1],ret}),-1),$def(self,"$readlines",(function(separator){return null==$gvars["/"]&&($gvars["/"]=nil),null==separator&&(separator=$gvars["/"]),this.$each_line(separator).$to_a()}),-1),$def(self,"$each",(function $$each($a,$b){var $post_args,sep,args,block=$$each.$$p||nil,self=this,s=nil;if(null==$gvars["/"]&&($gvars["/"]=nil),delete $$each.$$p,($post_args=Opal.slice.call(arguments)).length>0&&(sep=$post_args.shift()),null==sep&&(sep=$gvars["/"]),args=$post_args,block===nil)return $send(self,"enum_for",["each",sep].concat($to_a(args)));for(;$truthy(s=$send(self,"gets",[sep].concat($to_a(args))));)Opal.yield1(block,s);return self}),-1),$def(self,"$each_byte",(function $$each_byte(){var block=$$each_byte.$$p||nil,s=nil;if(delete $$each_byte.$$p,block===nil)return this.$enum_for("each_byte");for(;$truthy(s=this.$getbyte());)Opal.yield1(block,s);return this}),0),$def(self,"$each_char",(function $$each_char(){var block=$$each_char.$$p||nil,s=nil;if(delete $$each_char.$$p,block===nil)return this.$enum_for("each_char");for(;$truthy(s=this.$getc());)Opal.yield1(block,s);return this}),0),$def(self,"$close",(function(){return this.closed="both"}),0),$def(self,"$close_read",(function(){return $eqeq(this.closed,"write")?this.closed="both":this.closed="read"}),0),$def(self,"$close_write",(function(){return $eqeq(this.closed,"read")?this.closed="both":this.closed="write"}),0),$def(self,"$closed?",(function(){return this.closed["$=="]("both")}),0),$def(self,"$closed_read?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.closed["$=="]("read"))?$ret_or_1:this.closed["$=="]("both")}),0),$def(self,"$closed_write?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.closed["$=="]("write"))?$ret_or_1:this.closed["$=="]("both")}),0),$def(self,"$check_writable",(function(){return $truthy(this["$closed_write?"]())?$Kernel.$raise($$$("IOError"),"not opened for writing"):nil}),0),$def(self,"$check_readable",(function(){return $truthy(this["$closed_read?"]())?$Kernel.$raise($$$("IOError"),"not opened for reading"):nil}),0),$alias(self,"each_line","each"),$alias(self,"eof?","eof"),$const_set("::","STDIN",$gvars.stdin=$$$("IO").$new(0,"r")),$const_set("::","STDOUT",$gvars.stdout=$$$("IO").$new(1,"w")),$const_set("::","STDERR",$gvars.stderr=$$$("IO").$new(2,"w"));var console=Opal.global.console;return $writer=["object"==typeof process&&"object"==typeof process.stdout?function(s){process.stdout.write(s)}:function(s){console.log(s)}],$send($$$("STDOUT"),"write_proc=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=["object"==typeof process&&"object"==typeof process.stderr?function(s){process.stderr.write(s)}:function(s){console.warn(s)}],$send($$$("STDERR"),"write_proc=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[function(s){var p=prompt();return null!==p?p+"\n":nil}],$send($$$("STDIN"),"read_proc=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]},Opal.modules["opal/regexp_anchors"]=function(Opal){var $nesting=[],$$$=(Opal.nil,Opal.$$$),$module=Opal.module,$const_set=Opal.const_set;return Opal.add_stubs("new"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set(self,"REGEXP_START","^"),$const_set(self,"REGEXP_END","$"),$const_set(self,"FORBIDDEN_STARTING_IDENTIFIER_CHARS","\\u0001-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"FORBIDDEN_ENDING_IDENTIFIER_CHARS","\\u0001-\\u0020\\u0022-\\u002F\\u003A-\\u003E\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"INLINE_IDENTIFIER_REGEXP",$$("Regexp").$new("[^"+$$$(self,"FORBIDDEN_STARTING_IDENTIFIER_CHARS")+"]*[^"+$$$(self,"FORBIDDEN_ENDING_IDENTIFIER_CHARS")+"]")),$const_set(self,"FORBIDDEN_CONST_NAME_CHARS","\\u0001-\\u0020\\u0021-\\u002F\\u003B-\\u003F\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"CONST_NAME_REGEXP",$$("Regexp").$new($$$(self,"REGEXP_START")+"(::)?[A-Z][^"+$$$(self,"FORBIDDEN_CONST_NAME_CHARS")+"]*"+$$$(self,"REGEXP_END")))}($nesting[0],$nesting)},Opal.modules["opal/mini"]=function(Opal){Opal.nil;var $Object=Opal.Object;return Opal.add_stubs("require"),$Object.$require("opal/base"),$Object.$require("corelib/nil"),$Object.$require("corelib/boolean"),$Object.$require("corelib/string"),$Object.$require("corelib/comparable"),$Object.$require("corelib/enumerable"),$Object.$require("corelib/enumerator"),$Object.$require("corelib/array"),$Object.$require("corelib/hash"),$Object.$require("corelib/number"),$Object.$require("corelib/range"),$Object.$require("corelib/proc"),$Object.$require("corelib/method"),$Object.$require("corelib/regexp"),$Object.$require("corelib/variables"),$Object.$require("corelib/io"),$Object.$require("opal/regexp_anchors")},Opal.modules["corelib/kernel/format"]=function(Opal){var self,nil=Opal.nil,$$$=Opal.$$$,$coerce_to=Opal.coerce_to,$module=Opal.module,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$Opal=Opal.Opal,$Kernel=Opal.Kernel,$gvars=Opal.gvars,$def=Opal.def,$alias=Opal.alias;return Opal.add_stubs("respond_to?,[],==,length,coerce_to?,nil?,to_a,raise,to_int,fetch,Integer,Float,to_ary,to_str,inspect,to_s"),self=$module("::","Kernel"),$def(self,"$format",(function(format_string,$a){var $post_args,args,ary=nil;null==$gvars.DEBUG&&($gvars.DEBUG=nil),$post_args=Opal.slice.call(arguments,1),$eqeq((args=$post_args).$length(),1)&&$truthy(args["$[]"](0)["$respond_to?"]("to_ary"))&&(ary=$Opal["$coerce_to?"](args["$[]"](0),$$$("Array"),"to_ary"),$truthy(ary["$nil?"]())||(args=ary.$to_a()));var end_slice,i,arg,str,exponent,width,precision,tmp_num,hash_parameter_key,closing_brace_char,base_number,base_prefix,base_neg_zero_regex,base_neg_zero_digit,next_arg,flags,result="",begin_slice=0,len=format_string.length,seq_arg_num=1,pos_arg_num=0,FNONE=0,FSHARP=1,FMINUS=2,FPLUS=4,FZERO=8,FSPACE=16,FWIDTH=32,FPREC=64,FPREC0=128;function CHECK_FOR_FLAGS(){flags&FWIDTH&&$Kernel.$raise($$$("ArgumentError"),"flag after width"),flags&FPREC0&&$Kernel.$raise($$$("ArgumentError"),"flag after precision")}function CHECK_FOR_WIDTH(){flags&FWIDTH&&$Kernel.$raise($$$("ArgumentError"),"width given twice"),flags&FPREC0&&$Kernel.$raise($$$("ArgumentError"),"width after precision")}function GET_NTH_ARG(num){return num>=args.length&&$Kernel.$raise($$$("ArgumentError"),"too few arguments"),args[num]}function GET_NEXT_ARG(){switch(pos_arg_num){case-1:$Kernel.$raise($$$("ArgumentError"),"unnumbered("+seq_arg_num+") mixed with numbered");case-2:$Kernel.$raise($$$("ArgumentError"),"unnumbered("+seq_arg_num+") mixed with named")}return GET_NTH_ARG((pos_arg_num=seq_arg_num++)-1)}function GET_POS_ARG(num){return pos_arg_num>0&&$Kernel.$raise($$$("ArgumentError"),"numbered("+num+") after unnumbered("+pos_arg_num+")"),-2===pos_arg_num&&$Kernel.$raise($$$("ArgumentError"),"numbered("+num+") after named"),num<1&&$Kernel.$raise($$$("ArgumentError"),"invalid index - "+num+"$"),pos_arg_num=-1,GET_NTH_ARG(num-1)}function GET_ARG(){return void 0===next_arg?GET_NEXT_ARG():next_arg}function READ_NUM(label){for(var num,str="";;i++){if(i===len&&$Kernel.$raise($$$("ArgumentError"),"malformed format string - %*[0-9]"),format_string.charCodeAt(i)<48||format_string.charCodeAt(i)>57)return i--,(num=parseInt(str,10)||0)>2147483647&&$Kernel.$raise($$$("ArgumentError"),label+" too big"),num;str+=format_string.charAt(i)}}function READ_NUM_AFTER_ASTER(label){var arg,num=READ_NUM(label);return"$"===format_string.charAt(i+1)?(i++,arg=GET_POS_ARG(num)):arg=GET_NEXT_ARG(),arg.$to_int()}for(i=format_string.indexOf("%");-1!==i;i=format_string.indexOf("%",i)){switch(str=void 0,flags=FNONE,width=-1,precision=-1,next_arg=void 0,end_slice=i,i++,format_string.charAt(i)){case"%":begin_slice=i;case"":case"\n":case"\0":i++;continue}format_sequence:for(;i":"}",hash_parameter_key="",i++;;i++){if(i===len&&$Kernel.$raise($$$("ArgumentError"),"malformed name - unmatched parenthesis"),format_string.charAt(i)===closing_brace_char){if(pos_arg_num>0&&$Kernel.$raise($$$("ArgumentError"),"named "+hash_parameter_key+" after unnumbered("+pos_arg_num+")"),-1===pos_arg_num&&$Kernel.$raise($$$("ArgumentError"),"named "+hash_parameter_key+" after numbered"),pos_arg_num=-2,void 0!==args[0]&&args[0].$$is_hash||$Kernel.$raise($$$("ArgumentError"),"one hash required"),next_arg=args[0].$fetch(hash_parameter_key),">"===closing_brace_char)continue format_sequence;if(str=next_arg.toString(),-1!==precision&&(str=str.slice(0,precision)),flags&FMINUS)for(;str.length=0){for(str=arg.toString();str.length=0){for(str=arg.toString(base_number);str.length>>0).toString(base_number).replace(base_neg_zero_regex,base_neg_zero_digit);str.length=0||isNaN(arg)){if(arg===1/0)str="Inf";else switch(format_string.charAt(i)){case"f":str=arg.toFixed(-1===precision?6:precision);break;case"e":case"E":str=arg.toExponential(-1===precision?6:precision);break;case"g":case"G":str=arg.toExponential(),(exponent=parseInt(str.split("e")[1],10))<-4||exponent>=(-1===precision?6:precision)||(str=arg.toPrecision(-1===precision?flags&FSHARP?6:void 0:precision))}if(flags&FMINUS)for((flags&FPLUS||flags&FSPACE)&&(str=(flags&FPLUS?"+":" ")+str);str.length=(-1===precision?6:precision)||(str=(-arg).toPrecision(-1===precision?flags&FSHARP?6:void 0:precision))}if(flags&FMINUS)for(str="-"+str;str.length=0&&seq_arg_num"}),0),$def(self,"$charsize",(function(string){for(var len=0,i=0,length=string.length;i=55296&&charcode<=56319||len++}return len}),1),$def(self,"$each_char",(function $$each_char(string){var block=$$each_char.$$p||nil;delete $$each_char.$$p;for(var low_surrogate="",i=0,length=string.length;i=56320&&charcode<=57343?low_surrogate=chr:(charcode>=55296&&charcode<=56319&&(chr=low_surrogate+chr),"UTF-8"!=string.encoding.name&&((chr=new String(chr)).encoding=string.encoding),Opal.yield1(block,chr))}}),1),$def(self,"$each_byte",(function($a){return Opal.slice.call(arguments),$Kernel.$raise($$$("NotImplementedError"))}),-1),$def(self,"$bytesize",(function($a){return Opal.slice.call(arguments),$Kernel.$raise($$$("NotImplementedError"))}),-1),$klass("::",$$$("StandardError"),"EncodingError"),$klass("::",$$$("EncodingError"),"CompatibilityError")}(),$send($$$("Encoding"),"register",["UTF-8",$hash2(["aliases","ascii"],{aliases:["CP65001"],ascii:!0})],(function $$5(){var self=null==$$5.$$s?this:$$5.$$s;return $def(self,"$each_byte",(function $$each_byte(string){var block=$$each_byte.$$p||nil;delete $$each_byte.$$p;for(var codePoint,units=1/0,length=string.length,leadSurrogate=null,i=0;i55295&&codePoint<57344){if(!leadSurrogate){if(codePoint>56319){(units-=3)>-1&&(Opal.yield1(block,239),Opal.yield1(block,191),Opal.yield1(block,189));continue}if(i+1===length){(units-=3)>-1&&(Opal.yield1(block,239),Opal.yield1(block,191),Opal.yield1(block,189));continue}leadSurrogate=codePoint;continue}if(codePoint<56320){(units-=3)>-1&&(Opal.yield1(block,239),Opal.yield1(block,191),Opal.yield1(block,189)),leadSurrogate=codePoint;continue}codePoint=65536+(leadSurrogate-55296<<10|codePoint-56320)}else leadSurrogate&&(units-=3)>-1&&(Opal.yield1(block,239),Opal.yield1(block,191),Opal.yield1(block,189));if(leadSurrogate=null,codePoint<128){if((units-=1)<0)break;Opal.yield1(block,codePoint)}else if(codePoint<2048){if((units-=2)<0)break;Opal.yield1(block,codePoint>>6|192),Opal.yield1(block,63&codePoint|128)}else if(codePoint<65536){if((units-=3)<0)break;Opal.yield1(block,codePoint>>12|224),Opal.yield1(block,codePoint>>6&63|128),Opal.yield1(block,63&codePoint|128)}else if(codePoint<1114112){if((units-=4)<0)break;Opal.yield1(block,codePoint>>18|240),Opal.yield1(block,codePoint>>12&63|128),Opal.yield1(block,codePoint>>6&63|128),Opal.yield1(block,63&codePoint|128)}}}),1),$def(self,"$bytesize",(function(string){return string.$bytes().$length()}),1)}),{$$arity:0,$$s:self}),$send($$$("Encoding"),"register",["UTF-16LE"],(function $$6(){var self=null==$$6.$$s?this:$$6.$$s;return $def(self,"$each_byte",(function $$each_byte(string){var block=$$each_byte.$$p||nil;delete $$each_byte.$$p;for(var i=0,length=string.length;i>8)}}),1),$def(self,"$bytesize",(function(string){return 2*string.length}),1)}),{$$arity:0,$$s:self}),$send($$$("Encoding"),"register",["UTF-16BE",$hash2(["inherits"],{inherits:$$$($$$("Encoding"),"UTF_16LE")})],(function $$7(){return $def(null==$$7.$$s?this:$$7.$$s,"$each_byte",(function $$each_byte(string){var block=$$each_byte.$$p||nil;delete $$each_byte.$$p;for(var i=0,length=string.length;i>8),Opal.yield1(block,255&code)}}),1)}),{$$arity:0,$$s:self}),$send($$$("Encoding"),"register",["UTF-32LE"],(function $$8(){var self=null==$$8.$$s?this:$$8.$$s;return $def(self,"$each_byte",(function $$each_byte(string){var block=$$each_byte.$$p||nil;delete $$each_byte.$$p;for(var i=0,length=string.length;i>8),Opal.yield1(block,0),Opal.yield1(block,0)}}),1),$def(self,"$bytesize",(function(string){return 4*string.length}),1)}),{$$arity:0,$$s:self}),$send($$$("Encoding"),"register",["UTF-32BE",$hash2(["inherits"],{inherits:$$$($$$("Encoding"),"UTF_32LE")})],(function $$9(){return $def(null==$$9.$$s?this:$$9.$$s,"$each_byte",(function $$each_byte(string){var block=$$each_byte.$$p||nil;delete $$each_byte.$$p;for(var i=0,length=string.length;i>8),Opal.yield1(block,255&code)}}),1)}),{$$arity:0,$$s:self}),$send($$$("Encoding"),"register",["ASCII-8BIT",$hash2(["aliases","ascii"],{aliases:["BINARY"],ascii:!0})],(function $$10(){var self=null==$$10.$$s?this:$$10.$$s;return $def(self,"$each_char",(function $$each_char(string){var block=$$each_char.$$p||nil;delete $$each_char.$$p;for(var i=0,length=string.length;i1;)r*=.125,ex++;for(r=(-.46946116*r+1.072302)*r+.3812513;ex<0;)r*=.5,ex++;for(;ex>0;)r*=2,ex--;return r=2/3*(r=2/3*(r=2/3*(r=2/3*r+1/3*x/(r*r))+1/3*x/(r*r))+1/3*x/(r*r))+1/3*x/(r*r)}),$def(self,"$cbrt",(function(x){return $$$("Math").$checked("cbrt",$$$("Math")["$float!"](x))}),1),$def(self,"$cos",(function(x){return $$$("Math").$checked("cos",$$$("Math")["$float!"](x))}),1),$truthy(void 0!==Math.cosh)||(Math.cosh=function(x){return(Math.exp(x)+Math.exp(-x))/2}),$def(self,"$cosh",(function(x){return $$$("Math").$checked("cosh",$$$("Math")["$float!"](x))}),1),$truthy(void 0!==Math.erf)||Opal.prop(Math,"erf",(function(x){var sign=1;x<0&&(sign=-1);var t=1/(1+.3275911*(x=Math.abs(x)));return sign*(1-((((1.061405429*t-1.453152027)*t+1.421413741)*t-.284496736)*t+.254829592)*t*Math.exp(-x*x))})),$def(self,"$erf",(function(x){return $$$("Math").$checked("erf",$$$("Math")["$float!"](x))}),1),$truthy(void 0!==Math.erfc)||Opal.prop(Math,"erfc",(function(x){var z=Math.abs(x),t=1/(.5*z+1),A10=-z*z-1.26551223+t*(t*(t*(t*(t*(t*(t*(t*(.17087277*t-.82215223)+1.48851587)-1.13520398)+.27886807)-.18628806)+.09678418)+.37409196)+1.00002368),a=t*Math.exp(A10);return x<0?2-a:a})),$def(self,"$erfc",(function(x){return $$$("Math").$checked("erfc",$$$("Math")["$float!"](x))}),1),$def(self,"$exp",(function(x){return $$$("Math").$checked("exp",$$$("Math")["$float!"](x))}),1),$def(self,"$frexp",(function(x){if(x=$$("Math")["$float!"](x),isNaN(x))return[NaN,0];var ex=Math.floor(Math.log(Math.abs(x))/Math.log(2))+1;return[x/Math.pow(2,ex),ex]}),1),$def(self,"$gamma",(function(n){var i,t,x,value,result,twoN,threeN,fourN,fiveN;n=$$("Math")["$float!"](n);var P=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22];if(isNaN(n))return NaN;if(0===n&&1/n<0)return-1/0;if(-1!==n&&n!==-1/0||$Kernel.$raise($$("DomainError"),'Numerical argument is out of domain - "gamma"'),$$("Integer")["$==="](n)){if(n<=0)return isFinite(n)?1/0:NaN;if(n>171)return 1/0;for(value=n-2,result=n-1;value>1;)result*=value,value--;return 0==result&&(result=1),result}if(n<.5)return Math.PI/(Math.sin(Math.PI*n)*$$$("Math").$gamma($rb_minus(1,n)));if(n>=171.35)return 1/0;if(n>85)return fiveN=(fourN=(threeN=(twoN=n*n)*n)*n)*n,Math.sqrt(2*Math.PI/n)*Math.pow(n/Math.E,n)*(1+1/(12*n)+1/(288*twoN)-139/(51840*threeN)-571/(2488320*fourN)+163879/(209018880*fiveN)+5246819/(75246796800*fiveN*n));for(n-=1,x=P[0],i=1;i,!=,divmod,**,hypot,atan2,lcm,denominator,finite?,infinite?,numerator,abs,arg,rationalize,to_f,to_i,to_r,inspect,zero?,positive?,Rational"),self.$require("corelib/numeric"),self.$require("corelib/complex/base"),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Complex"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.real=$proto.imag=nil,$defs(self,"$rect",(function(real,imag){return null==imag&&(imag=0),$eqeqeq($$$("Numeric"),real)&&$truthy(real["$real?"]())&&$eqeqeq($$$("Numeric"),imag)&&$truthy(imag["$real?"]())||$Kernel.$raise($$$("TypeError"),"not a real"),this.$new(real,imag)}),-2),$defs(self,"$polar",(function(r,theta){return null==theta&&(theta=0),$eqeqeq($$$("Numeric"),r)&&$truthy(r["$real?"]())&&$eqeqeq($$$("Numeric"),theta)&&$truthy(theta["$real?"]())||$Kernel.$raise($$$("TypeError"),"not a real"),this.$new($rb_times(r,$$$("Math").$cos(theta)),$rb_times(r,$$$("Math").$sin(theta)))}),-2),self.$attr_reader("real","imag"),$def(self,"$initialize",(function(real,imag){return null==imag&&(imag=0),this.real=real,this.imag=imag}),-2),$def(self,"$coerce",(function(other){return $eqeqeq($$$("Complex"),other)?[other,this]:$eqeqeq($$$("Numeric"),other)&&$truthy(other["$real?"]())?[$$$("Complex").$new(other,0),this]:$Kernel.$raise($$$("TypeError"),other.$class()+" can't be coerced into Complex")}),1),$def(self,"$==",(function(other){var $ret_or_1=nil;return $eqeqeq($$$("Complex"),other)?$truthy($ret_or_1=this.real["$=="](other.$real()))?this.imag["$=="](other.$imag()):$ret_or_1:$eqeqeq($$$("Numeric"),other)&&$truthy(other["$real?"]())?$truthy($ret_or_1=this.real["$=="](other))?this.imag["$=="](0):$ret_or_1:other["$=="](this)}),1),$def(self,"$-@",(function(){return $Kernel.$Complex(this.real["$-@"](),this.imag["$-@"]())}),0),$def(self,"$+",(function(other){return $eqeqeq($$$("Complex"),other)?$Kernel.$Complex($rb_plus(this.real,other.$real()),$rb_plus(this.imag,other.$imag())):$eqeqeq($$$("Numeric"),other)&&$truthy(other["$real?"]())?$Kernel.$Complex($rb_plus(this.real,other),this.imag):this.$__coerced__("+",other)}),1),$def(self,"$-",(function(other){return $eqeqeq($$$("Complex"),other)?$Kernel.$Complex($rb_minus(this.real,other.$real()),$rb_minus(this.imag,other.$imag())):$eqeqeq($$$("Numeric"),other)&&$truthy(other["$real?"]())?$Kernel.$Complex($rb_minus(this.real,other),this.imag):this.$__coerced__("-",other)}),1),$def(self,"$*",(function(other){return $eqeqeq($$$("Complex"),other)?$Kernel.$Complex($rb_minus($rb_times(this.real,other.$real()),$rb_times(this.imag,other.$imag())),$rb_plus($rb_times(this.real,other.$imag()),$rb_times(this.imag,other.$real()))):$eqeqeq($$$("Numeric"),other)&&$truthy(other["$real?"]())?$Kernel.$Complex($rb_times(this.real,other),$rb_times(this.imag,other)):this.$__coerced__("*",other)}),1),$def(self,"$/",(function(other){return $eqeqeq($$$("Complex"),other)?$eqeqeq($$$("Number"),this.real)&&$truthy(this.real["$nan?"]())||$eqeqeq($$$("Number"),this.imag)&&$truthy(this.imag["$nan?"]())||$eqeqeq($$$("Number"),other.$real())&&$truthy(other.$real()["$nan?"]())||$eqeqeq($$$("Number"),other.$imag())&&$truthy(other.$imag()["$nan?"]())?$$$("Complex").$new($$$($$$("Float"),"NAN"),$$$($$$("Float"),"NAN")):$rb_divide($rb_times(this,other.$conj()),other.$abs2()):$eqeqeq($$$("Numeric"),other)&&$truthy(other["$real?"]())?$Kernel.$Complex(this.real.$quo(other),this.imag.$quo(other)):this.$__coerced__("/",other)}),1),$def(self,"$**",(function(other){var $a,$b,$c,$d,r=nil,theta=nil,ore=nil,oim=nil,nr=nil,ntheta=nil,x=nil,z=nil,n=nil,div=nil,mod=nil;if($eqeq(other,0))return $$$("Complex").$new(1,0);if($eqeqeq($$$("Complex"),other))return $b=this.$polar(),r=null==($a=$to_ary($b))[0]?nil:$a[0],theta=null==$a[1]?nil:$a[1],ore=other.$real(),oim=other.$imag(),nr=$$$("Math").$exp($rb_minus($rb_times(ore,$$$("Math").$log(r)),$rb_times(oim,theta))),ntheta=$rb_plus($rb_times(theta,ore),$rb_times(oim,$$$("Math").$log(r))),$$$("Complex").$polar(nr,ntheta);if($eqeqeq($$$("Integer"),other)){if($truthy($rb_gt(other,0))){for(z=x=this,n=$rb_minus(other,1);$neqeq(n,0);){for($c=n.$divmod(2),div=null==($b=$to_ary($c))[0]?nil:$b[0],mod=null==$b[1]?nil:$b[1];$eqeq(mod,0);)x=$Kernel.$Complex($rb_minus($rb_times(x.$real(),x.$real()),$rb_times(x.$imag(),x.$imag())),$rb_times($rb_times(2,x.$real()),x.$imag())),$d=(n=div).$divmod(2),div=null==($c=$to_ary($d))[0]?nil:$c[0],mod=null==$c[1]?nil:$c[1];z=$rb_times(z,x),n=$rb_minus(n,1)}return z}return $rb_divide($$$("Rational").$new(1,1),this)["$**"](other["$-@"]())}return $eqeqeq($$$("Float"),other)||$eqeqeq($$$("Rational"),other)?($b=this.$polar(),r=null==($a=$to_ary($b))[0]?nil:$a[0],theta=null==$a[1]?nil:$a[1],$$$("Complex").$polar(r["$**"](other),$rb_times(theta,other))):this.$__coerced__("**",other)}),1),$def(self,"$abs",(function(){return $$$("Math").$hypot(this.real,this.imag)}),0),$def(self,"$abs2",(function(){return $rb_plus($rb_times(this.real,this.real),$rb_times(this.imag,this.imag))}),0),$def(self,"$angle",(function(){return $$$("Math").$atan2(this.imag,this.real)}),0),$def(self,"$conj",(function(){return $Kernel.$Complex(this.real,this.imag["$-@"]())}),0),$def(self,"$denominator",(function(){return this.real.$denominator().$lcm(this.imag.$denominator())}),0),$def(self,"$eql?",(function(other){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=$$("Complex")["$==="](other))?this.real.$class()["$=="](this.imag.$class()):$ret_or_2)?this["$=="](other):$ret_or_1}),1),$def(self,"$fdiv",(function(other){return $eqeqeq($$$("Numeric"),other)||$Kernel.$raise($$$("TypeError"),other.$class()+" can't be coerced into Complex"),$rb_divide(this,other)}),1),$def(self,"$finite?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.real["$finite?"]())?this.imag["$finite?"]():$ret_or_1}),0),$def(self,"$hash",(function(){return"Complex:"+this.real+":"+this.imag}),0),$def(self,"$infinite?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.real["$infinite?"]())?$ret_or_1:this.imag["$infinite?"]()}),0),$def(self,"$inspect",(function(){return"("+this+")"}),0),$def(self,"$numerator",(function(){var d;return d=this.$denominator(),$Kernel.$Complex($rb_times(this.real.$numerator(),$rb_divide(d,this.real.$denominator())),$rb_times(this.imag.$numerator(),$rb_divide(d,this.imag.$denominator())))}),0),$def(self,"$polar",(function(){return[this.$abs(),this.$arg()]}),0),$def(self,"$rationalize",(function(eps){var self=this;return arguments.length>1&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arguments.length+" for 0..1)"),$neqeq(self.imag,0)&&$Kernel.$raise($$$("RangeError"),"can't convert "+self+" into Rational"),self.$real().$rationalize(eps)}),-1),$def(self,"$real?",(function(){return!1}),0),$def(self,"$rect",(function(){return[this.real,this.imag]}),0),$def(self,"$to_f",(function(){return $eqeq(this.imag,0)||$Kernel.$raise($$$("RangeError"),"can't convert "+this+" into Float"),this.real.$to_f()}),0),$def(self,"$to_i",(function(){return $eqeq(this.imag,0)||$Kernel.$raise($$$("RangeError"),"can't convert "+this+" into Integer"),this.real.$to_i()}),0),$def(self,"$to_r",(function(){return $eqeq(this.imag,0)||$Kernel.$raise($$$("RangeError"),"can't convert "+this+" into Rational"),this.real.$to_r()}),0),$def(self,"$to_s",(function(){var result=nil;return result=this.real.$inspect(),result=$rb_plus(result,$eqeqeq($$$("Number"),this.imag)&&$truthy(this.imag["$nan?"]())||$truthy(this.imag["$positive?"]())||$truthy(this.imag["$zero?"]())?"+":"-"),result=$rb_plus(result,this.imag.$abs().$inspect()),$eqeqeq($$$("Number"),this.imag)&&($truthy(this.imag["$nan?"]())||$truthy(this.imag["$infinite?"]()))&&(result=$rb_plus(result,"*")),$rb_plus(result,"i")}),0),$const_set($nesting[0],"I",self.$new(0,1)),$defs(self,"$from_string",(function(str){var real,imag,re=/[+-]?[\d_]+(\.[\d_]+)?(e\d+)?/;str.match(re);function isFloat(){return re.test(str)}function cutFloat(){var number=str.match(re)[0];return str=str.slice(number.length),number.replace(/_/g,"")}function cutNumber(){if(isFloat()){var numerator=parseFloat(cutFloat());if("/"===str[0]){if(str=str.slice(1),isFloat()){var denominator=parseFloat(cutFloat());return $Kernel.$Rational(numerator,denominator)}return str="/"+str,numerator}return numerator}return null}return(real=cutNumber())?(imag=cutNumber())?$Kernel.$Complex(real,imag):"i"===str[0]?$Kernel.$Complex(0,real):$Kernel.$Complex(real,0):"i"===str[0]?$Kernel.$Complex(0,1):"-"===str[0]&&"i"===str[1]?$Kernel.$Complex(0,-1):"+"===str[0]&&"i"===str[1]?$Kernel.$Complex(0,1):$Kernel.$Complex(0,0)}),1),function(self,$parent_nesting){$alias(self,"rectangular","rect")}(Opal.get_singleton_class(self)),$alias(self,"arg","angle"),$alias(self,"conjugate","conj"),$alias(self,"divide","/"),$alias(self,"imaginary","imag"),$alias(self,"magnitude","abs"),$alias(self,"phase","arg"),$alias(self,"quo","/"),$alias(self,"rectangular","rect"),Opal.udef(self,"$negative?"),Opal.udef(self,"$positive?"),Opal.udef(self,"$step"),nil}(0,$$$("Numeric"),[])},Opal.modules["corelib/rational/base"]=function(Opal){Opal.nil;var self,$$$=Opal.$$$,$module=Opal.module,$def=Opal.def,$klass=Opal.klass;return Opal.add_stubs("convert,from_string"),self=$module("::","Kernel"),$def(self,"$Rational",(function(numerator,denominator){return null==denominator&&(denominator=1),$$$("Rational").$convert(numerator,denominator)}),-2),function($base,$super){var self=$klass("::",null,"String");return $def(self,"$to_r",(function(){return $$$("Rational").$from_string(this)}),0)}()},Opal.modules["corelib/rational"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$eqeq=Opal.eqeq,$Kernel=Opal.Kernel,$truthy=Opal.truthy,$rb_lt=Opal.rb_lt,$rb_divide=Opal.rb_divide,$defs=Opal.defs,$eqeqeq=Opal.eqeqeq,$not=Opal.not,$Opal=Opal.Opal,$def=Opal.def,$rb_minus=Opal.rb_minus,$rb_times=Opal.rb_times,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt,$rb_le=Opal.rb_le,$alias=Opal.alias;return Opal.add_stubs("require,to_i,==,raise,<,-@,new,gcd,/,nil?,===,reduce,to_r,!,equal?,coerce_to!,to_f,numerator,denominator,<=>,-,*,__coerced__,+,Rational,>,**,abs,ceil,with_precision,floor,<=,truncate,send"),self.$require("corelib/numeric"),self.$require("corelib/rational/base"),function($base,$super){var self=$klass("::",$super,"Rational"),$proto=self.$$prototype;return $proto.num=$proto.den=nil,$defs(self,"$reduce",(function(num,den){var gcd;if(num=num.$to_i(),den=den.$to_i(),$eqeq(den,0))$Kernel.$raise($$$("ZeroDivisionError"),"divided by 0");else if($truthy($rb_lt(den,0)))num=num["$-@"](),den=den["$-@"]();else if($eqeq(den,1))return this.$new(num,den);return gcd=num.$gcd(den),this.$new($rb_divide(num,gcd),$rb_divide(den,gcd))}),2),$defs(self,"$convert",(function(num,den){return($truthy(num["$nil?"]())||$truthy(den["$nil?"]()))&&$Kernel.$raise($$$("TypeError"),"cannot convert nil into Rational"),$eqeqeq($$$("Integer"),num)&&$eqeqeq($$$("Integer"),den)?this.$reduce(num,den):(($eqeqeq($$$("Float"),num)||$eqeqeq($$$("String"),num)||$eqeqeq($$$("Complex"),num))&&(num=num.$to_r()),($eqeqeq($$$("Float"),den)||$eqeqeq($$$("String"),den)||$eqeqeq($$$("Complex"),den))&&(den=den.$to_r()),$truthy(den["$equal?"](1))&&$not($$$("Integer")["$==="](num))?$Opal["$coerce_to!"](num,$$$("Rational"),"to_r"):$eqeqeq($$$("Numeric"),num)&&$eqeqeq($$$("Numeric"),den)?$rb_divide(num,den):this.$reduce(num,den))}),2),$def(self,"$initialize",(function(num,den){return this.num=num,this.den=den}),2),$def(self,"$numerator",(function(){return this.num}),0),$def(self,"$denominator",(function(){return this.den}),0),$def(self,"$coerce",(function(other){var $ret_or_1;return $eqeqeq($$$("Rational"),$ret_or_1=other)?[other,this]:$eqeqeq($$$("Integer"),$ret_or_1)?[other.$to_r(),this]:$eqeqeq($$$("Float"),$ret_or_1)?[other,this.$to_f()]:nil}),1),$def(self,"$==",(function(other){var $ret_or_1,$ret_or_2=nil;return $eqeqeq($$$("Rational"),$ret_or_1=other)?$truthy($ret_or_2=this.num["$=="](other.$numerator()))?this.den["$=="](other.$denominator()):$ret_or_2:$eqeqeq($$$("Integer"),$ret_or_1)?$truthy($ret_or_2=this.num["$=="](other))?this.den["$=="](1):$ret_or_2:$eqeqeq($$$("Float"),$ret_or_1)?this.$to_f()["$=="](other):other["$=="](this)}),1),$def(self,"$<=>",(function(other){var $ret_or_1;return $eqeqeq($$$("Rational"),$ret_or_1=other)?$rb_minus($rb_times(this.num,other.$denominator()),$rb_times(this.den,other.$numerator()))["$<=>"](0):$eqeqeq($$$("Integer"),$ret_or_1)?$rb_minus(this.num,$rb_times(this.den,other))["$<=>"](0):$eqeqeq($$$("Float"),$ret_or_1)?this.$to_f()["$<=>"](other):this.$__coerced__("<=>",other)}),1),$def(self,"$+",(function(other){var $ret_or_1,num=nil,den=nil;return $eqeqeq($$$("Rational"),$ret_or_1=other)?(num=$rb_plus($rb_times(this.num,other.$denominator()),$rb_times(this.den,other.$numerator())),den=$rb_times(this.den,other.$denominator()),$Kernel.$Rational(num,den)):$eqeqeq($$$("Integer"),$ret_or_1)?$Kernel.$Rational($rb_plus(this.num,$rb_times(other,this.den)),this.den):$eqeqeq($$$("Float"),$ret_or_1)?$rb_plus(this.$to_f(),other):this.$__coerced__("+",other)}),1),$def(self,"$-",(function(other){var $ret_or_1,num=nil,den=nil;return $eqeqeq($$$("Rational"),$ret_or_1=other)?(num=$rb_minus($rb_times(this.num,other.$denominator()),$rb_times(this.den,other.$numerator())),den=$rb_times(this.den,other.$denominator()),$Kernel.$Rational(num,den)):$eqeqeq($$$("Integer"),$ret_or_1)?$Kernel.$Rational($rb_minus(this.num,$rb_times(other,this.den)),this.den):$eqeqeq($$$("Float"),$ret_or_1)?$rb_minus(this.$to_f(),other):this.$__coerced__("-",other)}),1),$def(self,"$*",(function(other){var $ret_or_1,num=nil,den=nil;return $eqeqeq($$$("Rational"),$ret_or_1=other)?(num=$rb_times(this.num,other.$numerator()),den=$rb_times(this.den,other.$denominator()),$Kernel.$Rational(num,den)):$eqeqeq($$$("Integer"),$ret_or_1)?$Kernel.$Rational($rb_times(this.num,other),this.den):$eqeqeq($$$("Float"),$ret_or_1)?$rb_times(this.$to_f(),other):this.$__coerced__("*",other)}),1),$def(self,"$/",(function(other){var $ret_or_1,num=nil,den=nil;return $eqeqeq($$$("Rational"),$ret_or_1=other)?(num=$rb_times(this.num,other.$denominator()),den=$rb_times(this.den,other.$numerator()),$Kernel.$Rational(num,den)):$eqeqeq($$$("Integer"),$ret_or_1)?$eqeq(other,0)?$rb_divide(this.$to_f(),0):$Kernel.$Rational(this.num,$rb_times(this.den,other)):$eqeqeq($$$("Float"),$ret_or_1)?$rb_divide(this.$to_f(),other):this.$__coerced__("/",other)}),1),$def(self,"$**",(function(other){var $ret_or_1;return $eqeqeq($$$("Integer"),$ret_or_1=other)?$eqeq(this,0)&&$truthy($rb_lt(other,0))?$$$($$$("Float"),"INFINITY"):$truthy($rb_gt(other,0))?$Kernel.$Rational(this.num["$**"](other),this.den["$**"](other)):$truthy($rb_lt(other,0))?$Kernel.$Rational(this.den["$**"](other["$-@"]()),this.num["$**"](other["$-@"]())):$Kernel.$Rational(1,1):$eqeqeq($$$("Float"),$ret_or_1)?this.$to_f()["$**"](other):$eqeqeq($$$("Rational"),$ret_or_1)?$eqeq(other,0)?$Kernel.$Rational(1,1):$eqeq(other.$denominator(),1)?$truthy($rb_lt(other,0))?$Kernel.$Rational(this.den["$**"](other.$numerator().$abs()),this.num["$**"](other.$numerator().$abs())):$Kernel.$Rational(this.num["$**"](other.$numerator()),this.den["$**"](other.$numerator())):$eqeq(this,0)&&$truthy($rb_lt(other,0))?$Kernel.$raise($$$("ZeroDivisionError"),"divided by 0"):this.$to_f()["$**"](other):this.$__coerced__("**",other)}),1),$def(self,"$abs",(function(){return $Kernel.$Rational(this.num.$abs(),this.den.$abs())}),0),$def(self,"$ceil",(function(precision){return null==precision&&(precision=0),$eqeq(precision,0)?$rb_divide(this.num["$-@"](),this.den)["$-@"]().$ceil():this.$with_precision("ceil",precision)}),-1),$def(self,"$floor",(function(precision){return null==precision&&(precision=0),$eqeq(precision,0)?$rb_divide(this.num["$-@"](),this.den)["$-@"]().$floor():this.$with_precision("floor",precision)}),-1),$def(self,"$hash",(function(){return"Rational:"+this.num+":"+this.den}),0),$def(self,"$inspect",(function(){return"("+this+")"}),0),$def(self,"$rationalize",(function(eps){var self=this;if(arguments.length>1&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arguments.length+" for 0..1)"),null==eps)return self;for(var p2,q2,c,k,t,e=eps.$abs(),a=$rb_minus(self,e),b=$rb_plus(self,e),p0=0,p1=1,q0=1,q1=0;c=a.$ceil(),!$rb_le(c,b);)p2=(k=c-1)*p1+p0,q2=k*q1+q0,t=$rb_divide(1,$rb_minus(b,k)),b=$rb_divide(1,$rb_minus(a,k)),a=t,p0=p1,q0=q1,p1=p2,q1=q2;return $Kernel.$Rational(c*p1+p0,c*q1+q0)}),-1),$def(self,"$round",(function(precision){var num,den,approx=nil;return null==precision&&(precision=0),$eqeq(precision,0)?$eqeq(this.num,0)?0:$eqeq(this.den,1)?this.num:(num=$rb_plus($rb_times(this.num.$abs(),2),this.den),den=$rb_times(this.den,2),approx=$rb_divide(num,den).$truncate(),$truthy($rb_lt(this.num,0))?approx["$-@"]():approx):this.$with_precision("round",precision)}),-1),$def(self,"$to_f",(function(){return $rb_divide(this.num,this.den)}),0),$def(self,"$to_i",(function(){return this.$truncate()}),0),$def(self,"$to_r",(function(){return this}),0),$def(self,"$to_s",(function(){return this.num+"/"+this.den}),0),$def(self,"$truncate",(function(precision){return null==precision&&(precision=0),$eqeq(precision,0)?$truthy($rb_lt(this.num,0))?this.$ceil():this.$floor():this.$with_precision("truncate",precision)}),-1),$def(self,"$with_precision",(function(method,precision){var p,s=nil;return $eqeqeq($$$("Integer"),precision)||$Kernel.$raise($$$("TypeError"),"not an Integer"),p=10["$**"](precision),s=$rb_times(this,p),$truthy($rb_lt(precision,1))?$rb_divide(s.$send(method),p).$to_i():$Kernel.$Rational(s.$send(method),p)}),2),$defs(self,"$from_string",(function(string){var numerator,denominator,str=string.trimLeft(),re=/^[+-]?[\d_]+(\.[\d_]+)?/;str.match(re);function isFloat(){return re.test(str)}function cutFloat(){var number=str.match(re)[0];return str=str.slice(number.length),number.replace(/_/g,"")}return isFloat()?(numerator=parseFloat(cutFloat()),"/"===str[0]?(str=str.slice(1),isFloat()?(denominator=parseFloat(cutFloat()),$Kernel.$Rational(numerator,denominator)):$Kernel.$Rational(numerator,1)):$Kernel.$Rational(numerator,1)):$Kernel.$Rational(0,1)}),1),$alias(self,"divide","/"),$alias(self,"quo","/")}(0,$$$("Numeric"))},Opal.modules["corelib/time"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$slice=Opal.slice,$klass=Opal.klass,$Kernel=Opal.Kernel,$Opal=Opal.Opal,$defs=Opal.defs,$eqeqeq=Opal.eqeqeq,$def=Opal.def,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$rb_lt=Opal.rb_lt,$rb_plus=Opal.rb_plus,$rb_divide=Opal.rb_divide,$rb_minus=Opal.rb_minus,$range=Opal.range,$neqeq=Opal.neqeq,$rb_le=Opal.rb_le,$eqeq=Opal.eqeq,$alias=Opal.alias;return Opal.add_stubs("require,include,===,raise,coerce_to!,respond_to?,to_str,to_i,new,<=>,to_f,nil?,>,<,strftime,year,month,day,+,round,/,-,copy_instance_variables,initialize_dup,is_a?,zero?,wday,utc?,mon,yday,hour,min,sec,rjust,ljust,zone,to_s,[],cweek_cyear,isdst,!=,<=,==,ceil"),self.$require("corelib/comparable"),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Time"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$include($$$("Comparable"));var days_of_week=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],short_days=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],short_months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],long_months=["January","February","March","April","May","June","July","August","September","October","November","December"];function time_params(year,month,day,hour,min,sec){if(year=year.$$is_string?parseInt(year,10):$Opal["$coerce_to!"](year,$$$("Integer"),"to_int"),month===nil)month=1;else if(!month.$$is_number)if(month["$respond_to?"]("to_str"))switch((month=month.$to_str()).toLowerCase()){case"jan":month=1;break;case"feb":month=2;break;case"mar":month=3;break;case"apr":month=4;break;case"may":month=5;break;case"jun":month=6;break;case"jul":month=7;break;case"aug":month=8;break;case"sep":month=9;break;case"oct":month=10;break;case"nov":month=11;break;case"dec":month=12;break;default:month=month.$to_i()}else month=$Opal["$coerce_to!"](month,$$$("Integer"),"to_int");return(month<1||month>12)&&$Kernel.$raise($$$("ArgumentError"),"month out of range: "+month),month-=1,((day=day===nil?1:day.$$is_string?parseInt(day,10):$Opal["$coerce_to!"](day,$$$("Integer"),"to_int"))<1||day>31)&&$Kernel.$raise($$$("ArgumentError"),"day out of range: "+day),((hour=hour===nil?0:hour.$$is_string?parseInt(hour,10):$Opal["$coerce_to!"](hour,$$$("Integer"),"to_int"))<0||hour>24)&&$Kernel.$raise($$$("ArgumentError"),"hour out of range: "+hour),((min=min===nil?0:min.$$is_string?parseInt(min,10):$Opal["$coerce_to!"](min,$$$("Integer"),"to_int"))<0||min>59)&&$Kernel.$raise($$$("ArgumentError"),"min out of range: "+min),sec===nil?sec=0:sec.$$is_number||(sec=sec.$$is_string?parseInt(sec,10):$Opal["$coerce_to!"](sec,$$$("Integer"),"to_int")),(sec<0||sec>60)&&$Kernel.$raise($$$("ArgumentError"),"sec out of range: "+sec),[year,month,day,hour,min,sec]}return $defs(self,"$at",(function(seconds,frac){var result;return $$$("Time")["$==="](seconds)?(void 0!==frac&&$Kernel.$raise($$$("TypeError"),"can't convert Time into an exact number"),(result=new Date(seconds.getTime())).is_utc=seconds.is_utc,result):(seconds.$$is_number||(seconds=$Opal["$coerce_to!"](seconds,$$$("Integer"),"to_int")),void 0===frac?new Date(1e3*seconds):(frac.$$is_number||(frac=$Opal["$coerce_to!"](frac,$$$("Integer"),"to_int")),new Date(1e3*seconds+frac/1e3)))}),-2),$defs(self,"$new",(function(year,month,day,hour,min,sec,utc_offset){var args,result;return null==month&&(month=nil),null==day&&(day=nil),null==hour&&(hour=nil),null==min&&(min=nil),null==sec&&(sec=nil),null==utc_offset&&(utc_offset=nil),void 0===year?new Date:(utc_offset!==nil&&$Kernel.$raise($$$("ArgumentError"),"Opal does not support explicitly specifying UTC offset for Time"),year=(args=time_params(year,month,day,hour,min,sec))[0],month=args[1],day=args[2],hour=args[3],min=args[4],sec=args[5],result=new Date(year,month,day,hour,min,0,1e3*sec),year<100&&result.setFullYear(year),result)}),-1),$defs(self,"$local",(function(year,month,day,hour,min,sec,millisecond,_dummy1,_dummy2,_dummy3){var args,result;return null==month&&(month=nil),null==day&&(day=nil),null==hour&&(hour=nil),null==min&&(min=nil),null==sec&&(sec=nil),null==millisecond&&(millisecond=nil),null==_dummy1&&(_dummy1=nil),null==_dummy2&&(_dummy2=nil),null==_dummy3&&(_dummy3=nil),10===arguments.length&&(year=(args=$slice.call(arguments))[5],month=args[4],day=args[3],hour=args[2],min=args[1],sec=args[0]),year=(args=time_params(year,month,day,hour,min,sec))[0],month=args[1],day=args[2],hour=args[3],min=args[4],sec=args[5],result=new Date(year,month,day,hour,min,0,1e3*sec),year<100&&result.setFullYear(year),result}),-2),$defs(self,"$gm",(function(year,month,day,hour,min,sec,millisecond,_dummy1,_dummy2,_dummy3){var args,result;return null==month&&(month=nil),null==day&&(day=nil),null==hour&&(hour=nil),null==min&&(min=nil),null==sec&&(sec=nil),null==millisecond&&(millisecond=nil),null==_dummy1&&(_dummy1=nil),null==_dummy2&&(_dummy2=nil),null==_dummy3&&(_dummy3=nil),10===arguments.length&&(year=(args=$slice.call(arguments))[5],month=args[4],day=args[3],hour=args[2],min=args[1],sec=args[0]),year=(args=time_params(year,month,day,hour,min,sec))[0],month=args[1],day=args[2],hour=args[3],min=args[4],sec=args[5],result=new Date(Date.UTC(year,month,day,hour,min,0,1e3*sec)),year<100&&result.setUTCFullYear(year),result.is_utc=!0,result}),-2),$defs(self,"$now",(function(){return this.$new()}),0),$def(self,"$+",(function(other){$eqeqeq($$$("Time"),other)&&$Kernel.$raise($$$("TypeError"),"time + time?"),other.$$is_number||(other=$Opal["$coerce_to!"](other,$$$("Integer"),"to_int"));var result=new Date(this.getTime()+1e3*other);return result.is_utc=this.is_utc,result}),1),$def(self,"$-",(function(other){if($eqeqeq($$$("Time"),other))return(this.getTime()-other.getTime())/1e3;other.$$is_number||(other=$Opal["$coerce_to!"](other,$$$("Integer"),"to_int"));var result=new Date(this.getTime()-1e3*other);return result.is_utc=this.is_utc,result}),1),$def(self,"$<=>",(function(other){var r=nil;return $eqeqeq($$$("Time"),other)?this.$to_f()["$<=>"](other.$to_f()):(r=other["$<=>"](this),$truthy(r["$nil?"]())?nil:$truthy($rb_gt(r,0))?-1:$truthy($rb_lt(r,0))?1:0)}),1),$def(self,"$==",(function(other){var $ret_or_1;return $truthy($ret_or_1=$$$("Time")["$==="](other))?this.$to_f()===other.$to_f():$ret_or_1}),1),$def(self,"$asctime",(function(){return this.$strftime("%a %b %e %H:%M:%S %Y")}),0),$def(self,"$day",(function(){return this.is_utc?this.getUTCDate():this.getDate()}),0),$def(self,"$yday",(function(){var start_of_year,start_of_day;return start_of_year=$$("Time").$new(this.$year()).$to_i(),start_of_day=$$("Time").$new(this.$year(),this.$month(),this.$day()).$to_i(),86400,$rb_plus($rb_divide($rb_minus(start_of_day,start_of_year),86400).$round(),1)}),0),$def(self,"$isdst",(function(){var jan=new Date(this.getFullYear(),0,1),jul=new Date(this.getFullYear(),6,1);return this.getTimezoneOffset()"](other)["$zero?"]():$ret_or_1}),1),$def(self,"$friday?",(function(){return 5==this.$wday()}),0),$def(self,"$hash",(function(){return"Time:"+this.getTime()}),0),$def(self,"$hour",(function(){return this.is_utc?this.getUTCHours():this.getHours()}),0),$def(self,"$inspect",(function(){return $truthy(this["$utc?"]())?this.$strftime("%Y-%m-%d %H:%M:%S UTC"):this.$strftime("%Y-%m-%d %H:%M:%S %z")}),0),$def(self,"$min",(function(){return this.is_utc?this.getUTCMinutes():this.getMinutes()}),0),$def(self,"$mon",(function(){return(this.is_utc?this.getUTCMonth():this.getMonth())+1}),0),$def(self,"$monday?",(function(){return 1==this.$wday()}),0),$def(self,"$saturday?",(function(){return 6==this.$wday()}),0),$def(self,"$sec",(function(){return this.is_utc?this.getUTCSeconds():this.getSeconds()}),0),$def(self,"$succ",(function(){var result=new Date(this.getTime()+1e3);return result.is_utc=this.is_utc,result}),0),$def(self,"$usec",(function(){return 1e3*this.getMilliseconds()}),0),$def(self,"$zone",(function(){var result,string=this.toString();return"GMT"==(result=-1==string.indexOf("(")?string.match(/[A-Z]{3,4}/)[0]:string.match(/\((.+)\)(?:\s|$)/)[1])&&/(GMT\W*\d{4})/.test(string)?RegExp.$1:result}),0),$def(self,"$getgm",(function(){var result=new Date(this.getTime());return result.is_utc=!0,result}),0),$def(self,"$gmtime",(function(){return this.is_utc=!0,this}),0),$def(self,"$gmt?",(function(){return!0===this.is_utc}),0),$def(self,"$gmt_offset",(function(){return this.is_utc?0:60*-this.getTimezoneOffset()}),0),$def(self,"$strftime",(function(format){var self=this;return format.replace(/%([\-_#^0]*:{0,2})(\d+)?([EO]*)(.)/g,(function(full,flags,width,_,conv){var result="",zero=-1!==flags.indexOf("0"),pad=-1===flags.indexOf("-"),blank=-1!==flags.indexOf("_"),upcase=-1!==flags.indexOf("^"),invert=-1!==flags.indexOf("#"),colons=(flags.match(":")||[]).length;switch(width=parseInt(width,10),zero&&blank&&(flags.indexOf("0")=12?"pm":"am";break;case"p":result+=self.$hour()>=12?"PM":"AM";break;case"M":zero=!blank,result+=self.$min();break;case"S":zero=!blank,result+=self.$sec();break;case"L":zero=!blank,width=isNaN(width)?3:width,result+=self.getMilliseconds();break;case"N":width=isNaN(width)?9:width,result=(result+=self.getMilliseconds().toString().$rjust(3,"0")).$ljust(width,"0");break;case"z":var offset=self.getTimezoneOffset(),hours=Math.floor(Math.abs(offset)/60),minutes=Math.abs(offset)%60;result+=offset<0?"+":"-",result+=hours<10?"0":"",result+=hours,colons>0&&(result+=":"),result+=minutes<10?"0":"",result+=minutes,colons>1&&(result+=":00");break;case"Z":result+=self.$zone();break;case"A":result+=days_of_week[self.$wday()];break;case"a":result+=short_days[self.$wday()];break;case"u":result+=self.$wday()+1;break;case"w":result+=self.$wday();break;case"V":result+=self.$cweek_cyear()["$[]"](0).$to_s().$rjust(2,"0");break;case"G":result+=self.$cweek_cyear()["$[]"](1);break;case"g":result+=self.$cweek_cyear()["$[]"](1)["$[]"]($range(-2,-1,!1));break;case"s":result+=self.$to_i();break;case"n":result+="\n";break;case"t":result+="\t";break;case"%":result+="%";break;case"c":result+=self.$strftime("%a %b %e %T %Y");break;case"D":case"x":result+=self.$strftime("%m/%d/%y");break;case"F":result+=self.$strftime("%Y-%m-%d");break;case"v":result+=self.$strftime("%e-%^b-%4Y");break;case"r":result+=self.$strftime("%I:%M:%S %p");break;case"R":result+=self.$strftime("%H:%M");break;case"T":case"X":result+=self.$strftime("%H:%M:%S");break;default:return full}return upcase&&(result=result.toUpperCase()),invert&&(result=result.replace(/[A-Z]/,(function(c){c.toLowerCase()})).replace(/[a-z]/,(function(c){c.toUpperCase()}))),pad&&(zero||blank)&&(result=result.$rjust(isNaN(width)?2:width,blank?" ":"0")),result}))}),1),$def(self,"$sunday?",(function(){return 0==this.$wday()}),0),$def(self,"$thursday?",(function(){return 4==this.$wday()}),0),$def(self,"$to_a",(function(){return[this.$sec(),this.$min(),this.$hour(),this.$day(),this.$month(),this.$year(),this.$wday(),this.$yday(),this.$isdst(),this.$zone()]}),0),$def(self,"$to_f",(function(){return this.getTime()/1e3}),0),$def(self,"$to_i",(function(){return parseInt(this.getTime()/1e3,10)}),0),$def(self,"$tuesday?",(function(){return 2==this.$wday()}),0),$def(self,"$wday",(function(){return this.is_utc?this.getUTCDay():this.getDay()}),0),$def(self,"$wednesday?",(function(){return 3==this.$wday()}),0),$def(self,"$year",(function(){return this.is_utc?this.getUTCFullYear():this.getFullYear()}),0),$def(self,"$cweek_cyear",(function(){var jan01_wday,year=nil,offset=nil,week=nil,dec31_wday=nil;return jan01_wday=$$$("Time").$new(this.$year(),1,1).$wday(),0,year=this.$year(),$truthy($rb_le(jan01_wday,4))&&$neqeq(jan01_wday,0)?offset=$rb_minus(jan01_wday,1):(offset=$rb_minus($rb_minus(jan01_wday,7),1),$eqeq(offset,-8)&&(offset=-1)),week=$rb_divide($rb_plus(this.$yday(),offset),7).$ceil(),$truthy($rb_le(week,0))?$$$("Time").$new($rb_minus(this.$year(),1),12,31).$cweek_cyear():($eqeq(week,53)&&(dec31_wday=$$$("Time").$new(this.$year(),12,31).$wday(),$truthy($rb_le(dec31_wday,3))&&$neqeq(dec31_wday,0)&&(week=1,year=$rb_plus(year,1))),[week,year])}),0),function(self,$parent_nesting){$alias(self,"mktime","local"),$alias(self,"utc","gm")}(Opal.get_singleton_class(self)),$alias(self,"ctime","asctime"),$alias(self,"dst?","isdst"),$alias(self,"getutc","getgm"),$alias(self,"gmtoff","gmt_offset"),$alias(self,"mday","day"),$alias(self,"month","mon"),$alias(self,"to_s","inspect"),$alias(self,"tv_sec","to_i"),$alias(self,"tv_usec","usec"),$alias(self,"utc","gmtime"),$alias(self,"utc?","gmt?"),$alias(self,"utc_offset","gmt_offset")}(0,Date,[])},Opal.modules["corelib/struct"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy,$neqeq=Opal.neqeq,$eqeq=Opal.eqeq,$Opal=Opal.Opal,$send=Opal.send,$Class=Opal.Class,$to_a=Opal.to_a,$def=Opal.def,$defs=Opal.defs,$Kernel=Opal.Kernel,$rb_gt=Opal.rb_gt,$rb_minus=Opal.rb_minus,$eqeqeq=Opal.eqeqeq,$rb_lt=Opal.rb_lt,$rb_ge=Opal.rb_ge,$rb_plus=Opal.rb_plus,$alias=Opal.alias;return Opal.add_stubs("require,include,!=,upcase,[],==,class,unshift,const_name!,map,coerce_to!,new,each,define_struct_attribute,allocate,initialize,alias_method,module_eval,to_proc,const_set,raise,<<,members,define_method,instance_eval,last,>,length,-,keys,any?,join,[]=,each_with_index,hash,===,<,-@,size,>=,include?,to_sym,instance_of?,__id__,eql?,enum_for,+,name,each_pair,inspect,to_h,args,each_with_object,flatten,to_a,respond_to?,dig"),self.$require("corelib/enumerable"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Struct"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$include($$$("Enumerable")),$defs(self,"$new",(function $Struct_new$1(const_name,$a,$b){var $post_args,$kwargs,args,keyword_init,block=$Struct_new$1.$$p||nil,self=this,klass=nil;if(delete $Struct_new$1.$$p,$post_args=Opal.slice.call(arguments,1),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");if(args=$post_args,null==(keyword_init=$kwargs.$$smap.keyword_init)&&(keyword_init=!1),$truthy(const_name))if($eqeq(const_name.$class(),$$$("String"))&&$neqeq(const_name["$[]"](0).$upcase(),const_name["$[]"](0)))args.$unshift(const_name),const_name=nil;else try{const_name=$Opal["$const_name!"](const_name)}catch($err){if(!Opal.rescue($err,[$$$("TypeError"),$$$("NameError")]))throw $err;try{args.$unshift(const_name),const_name=nil}finally{Opal.pop_exception()}}return $send(args,"map",[],(function(arg){return null==arg&&(arg=nil),$Opal["$coerce_to!"](arg,$$$("String"),"to_str")}),1),klass=$send($Class,"new",[self],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return $send(args,"each",[],(function $$4(arg){return null==arg&&(arg=nil),(null==$$4.$$s?this:$$4.$$s).$define_struct_attribute(arg)}),{$$arity:1,$$s:self}),function(self,$parent_nesting){return $def(self,"$new",(function($a){var args,self=this,instance=nil;return args=Opal.slice.call(arguments),(instance=self.$allocate()).$$data={},$send(instance,"initialize",$to_a(args)),instance}),-1),self.$alias_method("[]","new")}(Opal.get_singleton_class(self))}),{$$arity:0,$$s:self}),$truthy(block)&&$send(klass,"module_eval",[],block.$to_proc()),klass.$$keyword_init=keyword_init,$truthy(const_name)&&$$$("Struct").$const_set(const_name,klass),klass}),-2),$defs(self,"$define_struct_attribute",(function(name){return $eqeq(this,$$$("Struct"))&&$Kernel.$raise($$$("ArgumentError"),"you cannot define attributes to the Struct class"),this.$members()["$<<"](name),$send(this,"define_method",[name],(function $$6(){return(null==$$6.$$s?this:$$6.$$s).$$data[name]}),{$$arity:0,$$s:this}),$send(this,"define_method",[name+"="],(function $$7(value){return null==value&&(value=nil),(null==$$7.$$s?this:$$7.$$s).$$data[name]=value}),{$$arity:1,$$s:this})}),1),$defs(self,"$members",(function(){var $ret_or_1;return null==this.members&&(this.members=nil),$eqeq(this,$$$("Struct"))&&$Kernel.$raise($$$("ArgumentError"),"the Struct class has no members"),this.members=$truthy($ret_or_1=this.members)?$ret_or_1:[]}),0),$defs(self,"$inherited",(function(klass){var members;return null==this.members&&(this.members=nil),members=this.members,$send(klass,"instance_eval",[],(function $$8(){return(null==$$8.$$s?this:$$8.$$s).members=members}),{$$arity:0,$$s:this})}),1),$def(self,"$initialize",(function($a){var $post_args,args,self=this,kwargs=nil,$ret_or_1=nil,extra=nil;return $post_args=Opal.slice.call(arguments),args=$post_args,$truthy(self.$class().$$keyword_init)?(kwargs=$truthy($ret_or_1=args.$last())?$ret_or_1:$hash2([],{}),($truthy($rb_gt(args.$length(),1))||$truthy(1===args.length&&!kwargs.$$is_hash))&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments (given "+args.$length()+", expected 0)"),extra=$rb_minus(kwargs.$keys(),self.$class().$members()),$truthy(extra["$any?"]())&&$Kernel.$raise($$$("ArgumentError"),"unknown keywords: "+extra.$join(", ")),$send(self.$class().$members(),"each",[],(function $$9(name){var $writer,self=null==$$9.$$s?this:$$9.$$s;return null==name&&(name=nil),$writer=[name,kwargs["$[]"](name)],$send(self,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})):($truthy($rb_gt(args.$length(),self.$class().$members().$length()))&&$Kernel.$raise($$$("ArgumentError"),"struct size differs"),$send(self.$class().$members(),"each_with_index",[],(function $$10(name,index){var $writer,self=null==$$10.$$s?this:$$10.$$s;return null==name&&(name=nil),null==index&&(index=nil),$writer=[name,args["$[]"](index)],$send(self,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:2,$$s:self}))}),-1),$def(self,"$initialize_copy",(function(from){this.$$data={};var i,max,name,keys=Object.keys(from.$$data);for(i=0,max=keys.length;i"):(inspect_stack["$<<"](self.$__id__()),pushed=!0,$eqeqeq($$$("Struct"),self)&&$truthy(self.$class().$name())&&(result=$rb_plus(result,self.$class()+" ")),result=$rb_plus(result,$send(self.$each_pair(),"map",[],(function(name,value){return null==name&&(name=nil),null==value&&(value=nil),name+"="+$$("Opal").$inspect(value)}),2).$join(", ")),result=$rb_plus(result,">"))}finally{$truthy(pushed)&&inspect_stack.pop()}}()}),0),$def(self,"$to_h",(function $$to_h(){var block=$$to_h.$$p||nil;return delete $$to_h.$$p,block!==nil?$send($send(this,"map",[],block.$to_proc()),"to_h",$to_a(this.$args())):$send(this.$class().$members(),"each_with_object",[$hash2([],{})],(function $$22(name,h){var $writer;return null==name&&(name=nil),null==h&&(h=nil),$writer=[name,(null==$$22.$$s?this:$$22.$$s)["$[]"](name)],$send(h,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:2,$$s:this})}),0),$def(self,"$values_at",(function($a){var $post_args,args,self=this;$post_args=Opal.slice.call(arguments);for(var result=[],i=0,len=(args=$send(args=$post_args,"map",[],(function(arg){return null==arg&&(arg=nil),arg.$$is_range?arg.$to_a():arg}),1).$flatten()).length;i>>1^(1&v?2567483615:0)};function genrand_int32(mt){var y;return--mt.left<=0&&function(mt){var j,p=0,_p=mt.state;for(mt.left=N,mt.next=0,j=228;--j;p++)_p[p]=_p[p+M]^TWIST(_p[p+0],_p[p+1]);for(j=M;--j;p++)_p[p]=_p[p+(M-N)]^TWIST(_p[p+0],_p[p+1]);_p[p]=_p[p+(M-N)]^TWIST(_p[p+0],_p[0])}(mt),y=mt.state[mt.next++],y^=y>>>11,y^=y<<7&2636928640,y^=y<<15&4022730752,(y^=y>>>18)>>>0}return{genrand_real:function(mt){return function(a,b){return(67108864*(a>>>=5)+(b>>>=6))*(1/9007199254740992)}(genrand_int32(mt),genrand_int32(mt))},init:function(s){var mt={left:0,next:N,state:new Array(N)};return function(mt,s){var j;for(mt.state[0]=s>>>0,j=1;j>30>>>0)+j,mt.state[j]&=4294967295;mt.left=1,mt.next=N}(mt,s),mt}}}(),self=$klass("::",null,"Random"),MAX_INT=Number.MAX_SAFE_INTEGER||Math.pow(2,53)-1,$const_set(self,"MERSENNE_TWISTER_GENERATOR",{new_seed:function(){return Math.round(Math.random()*MAX_INT)},reseed:function(seed){return mersenne_twister.init(seed)},rand:function(mt){return mersenne_twister.genrand_real(mt)}}),$writer=[$$$(self,"MERSENNE_TWISTER_GENERATOR")],$send(self,"generator=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]},Opal.modules["corelib/random"]=function(Opal){var self=Opal.top,$$$=(Opal.nil,Opal.$$$),$truthy=Opal.truthy,$klass=Opal.klass,$Kernel=Opal.Kernel,$defs=Opal.defs,$Opal=Opal.Opal,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$send=Opal.send;return Opal.add_stubs("require,attr_reader,to_int,raise,new_seed,coerce_to!,reseed,rand,seed,bytes,===,==,state,_verify_count,encode,join,new,chr,random_number,random_float,const_defined?,const_set"),self.$require("corelib/random/formatter"),function($base,$super){var self=$klass("::",null,"Random");self.$attr_reader("seed","state"),$defs(self,"$_verify_count",(function(count){return $truthy(count)||(count=16),"number"!=typeof count&&(count=count.$to_int()),count<0&&$Kernel.$raise($$$("ArgumentError"),"negative string size (or size too big)"),count=Math.floor(count)}),1),$def(self,"$initialize",(function(seed){return null==seed&&(seed=$$$("Random").$new_seed()),seed=$Opal["$coerce_to!"](seed,$$$("Integer"),"to_int"),this.state=seed,this.$reseed(seed)}),-1),$def(self,"$reseed",(function(seed){return this.seed=seed,this.$rng=Opal.$$rand.reseed(seed)}),1),$defs(self,"$new_seed",(function(){return Opal.$$rand.new_seed()}),0),$defs(self,"$rand",(function(limit){return $$$(this,"DEFAULT").$rand(limit)}),-1),$defs(self,"$srand",(function(n){var previous_seed;return null==n&&(n=$$$("Random").$new_seed()),n=$Opal["$coerce_to!"](n,$$$("Integer"),"to_int"),previous_seed=$$$(this,"DEFAULT").$seed(),$$$(this,"DEFAULT").$reseed(n),previous_seed}),-1),$defs(self,"$urandom",(function(size){return $$$("SecureRandom").$bytes(size)}),1),$def(self,"$==",(function(other){var $ret_or_1;return!!$eqeqeq($$$("Random"),other)&&($truthy($ret_or_1=this.$seed()["$=="](other.$seed()))?this.$state()["$=="](other.$state()):$ret_or_1)}),1),$def(self,"$bytes",(function(length){return length=$$$("Random").$_verify_count(length),$send($$$("Array"),"new",[length],(function $$2(){return(null==$$2.$$s?this:$$2.$$s).$rand(255).$chr()}),{$$arity:0,$$s:this}).$join().$encode("ASCII-8BIT")}),1),$defs(self,"$bytes",(function(length){return $$$(this,"DEFAULT").$bytes(length)}),1),$def(self,"$rand",(function(limit){return this.$random_number(limit)}),-1),$def(self,"$random_float",(function(){return this.state++,Opal.$$rand.rand(this.$rng)}),0),$defs(self,"$random_float",(function(){return $$$(this,"DEFAULT").$random_float()}),0),$defs(self,"$generator=",(function(generator){return Opal.$$rand=generator,$truthy(this["$const_defined?"]("DEFAULT"))?$$$(this,"DEFAULT").$reseed():this.$const_set("DEFAULT",this.$new(this.$new_seed()))}),1)}(),self.$require("corelib/random/mersenne_twister")},Opal.modules["corelib/unsupported"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$Kernel=Opal.Kernel,$klass=Opal.klass,$send=Opal.send,$module=Opal.module,$def=Opal.def,$alias=Opal.alias,$defs=Opal.defs;Opal.add_stubs("raise,warn,each,define_method,%");var warnings={};function handle_unsupported_feature(message){switch(Opal.config.unsupported_features_severity){case"error":$Kernel.$raise($$$("NotImplementedError"),message);break;case"warning":!function(string){if(warnings[string])return;warnings[string]=!0,self.$warn(string)}(message)}}return function($base,$super){var self=$klass("::",null,"String"),ERROR="String#%s not supported. Mutable String methods are not supported in Opal.";$send(["<<","capitalize!","chomp!","chop!","downcase!","gsub!","lstrip!","next!","reverse!","slice!","squeeze!","strip!","sub!","succ!","swapcase!","tr!","tr_s!","upcase!","prepend","[]=","clear","encode!","unicode_normalize!"],"each",[],(function $String$1(method_name){return null==method_name&&(method_name=nil),$send(null==$String$1.$$s?this:$String$1.$$s,"define_method",[method_name],(function($a){return Opal.slice.call(arguments),$Kernel.$raise($$$("NotImplementedError"),ERROR["$%"](method_name))}),-1)}),{$$arity:1,$$s:self})}(),function($base){var self=$module("::","Kernel"),ERROR="Object freezing is not supported by Opal";$def(self,"$freeze",(function(){return handle_unsupported_feature(ERROR),this}),0),$def(self,"$frozen?",(function(){return handle_unsupported_feature(ERROR),!1}),0)}(),function($base){var self=$module("::","Kernel"),ERROR="Object tainting is not supported by Opal";$def(self,"$taint",(function(){return handle_unsupported_feature(ERROR),this}),0),$def(self,"$untaint",(function(){return handle_unsupported_feature(ERROR),this}),0),$def(self,"$tainted?",(function(){return handle_unsupported_feature(ERROR),!1}),0)}(),function($base,$super){var self=$klass("::",null,"Module");$def(self,"$public",(function($a){var methods,self=this;return 0===(methods=Opal.slice.call(arguments)).length?(self.$$module_function=!1,nil):1===methods.length?methods[0]:methods}),-1),$def(self,"$private_class_method",(function($a){var methods;return 1===(methods=Opal.slice.call(arguments)).length?methods[0]:methods}),-1),$def(self,"$private_method_defined?",(function(obj){return!1}),1),$def(self,"$private_constant",(function($a){return Opal.slice.call(arguments),nil}),-1),$alias(self,"nesting","public"),$alias(self,"private","public"),$alias(self,"protected","public"),$alias(self,"protected_method_defined?","private_method_defined?"),$alias(self,"public_class_method","private_class_method"),$alias(self,"public_instance_method","instance_method"),$alias(self,"public_instance_methods","instance_methods"),$alias(self,"public_method_defined?","method_defined?")}(),function($base){var self=$module("::","Kernel");$def(self,"$private_methods",(function($a){return Opal.slice.call(arguments),[]}),-1),$alias(self,"private_instance_methods","private_methods")}(),function($base,$parent_nesting){var self=$module("::","Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$eval",(function($a){return Opal.slice.call(arguments),$Kernel.$raise($$$("NotImplementedError"),"To use Kernel#eval, you must first require 'opal-parser'. See https://github.com/opal/opal/blob/"+$$("RUBY_ENGINE_VERSION")+"/docs/opal_parser.md for details.")}),-1)}(0,[]),$defs(self,"$public",(function($a){var methods;return 1===(methods=Opal.slice.call(arguments)).length?methods[0]:methods}),-1),$defs(self,"$private",(function($a){var methods;return 1===(methods=Opal.slice.call(arguments)).length?methods[0]:methods}),-1)},Opal.queue((function(Opal){Opal.nil;var $Object=Opal.Object;return Opal.add_stubs("require,autoload"),$Object.$require("opal/base"),$Object.$require("opal/mini"),$Object.$require("corelib/kernel/format"),$Object.$require("corelib/string/encoding"),$Object.$autoload("Math","corelib/math"),$Object.$require("corelib/complex/base"),$Object.$autoload("Complex","corelib/complex"),$Object.$require("corelib/rational/base"),$Object.$autoload("Rational","corelib/rational"),$Object.$require("corelib/time"),$Object.$autoload("Struct","corelib/struct"),$Object.$require("corelib/dir"),$Object.$autoload("File","corelib/file"),$Object.$require("corelib/process/base"),$Object.$autoload("Process","corelib/process"),$Object.$autoload("Random","corelib/random"),$Object.$require("corelib/unsupported")})); diff --git a/opal/1.4.1/opal.min.js.gz b/opal/1.4.1/opal.min.js.gz new file mode 100644 index 00000000..dcdf115e Binary files /dev/null and b/opal/1.4.1/opal.min.js.gz differ diff --git a/opal/1.4.1/open-uri.js b/opal/1.4.1/open-uri.js new file mode 100644 index 00000000..8568b971 --- /dev/null +++ b/opal/1.4.1/open-uri.js @@ -0,0 +1,1139 @@ +Opal.modules["stringio"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $defs = Opal.defs, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $rb_ge = Opal.rb_ge, $rb_gt = Opal.rb_gt, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq, $alias = Opal.alias; + + Opal.add_stubs('new,call,close,attr_accessor,check_readable,==,length,===,>=,raise,>,+,-,seek,check_writable,String,[],eof?,write,read'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'StringIO'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.position = $proto.string = nil; + + $defs(self, '$open', function $$open(string, mode) { + var block = $$open.$$p || nil, self = this, io = nil, res = nil; + + delete $$open.$$p; + + ; + + if (string == null) string = "";; + + if (mode == null) mode = nil;; + io = self.$new(string, mode); + res = block.$call(io); + io.$close(); + return res; + }, -1); + self.$attr_accessor("string"); + + $def(self, '$initialize', function $$initialize(string, mode) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + if (string == null) string = "";; + + if (mode == null) mode = "rw";; + self.string = string; + self.position = 0; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [nil, mode], null); + }, -1); + + $def(self, '$eof?', function $StringIO_eof$ques$1() { + var self = this; + + + self.$check_readable(); + return self.position['$=='](self.string.$length()); + }, 0); + + $def(self, '$seek', function $$seek(pos, whence) { + var self = this, $ret_or_1 = nil; + + + + if (whence == null) whence = $$$($$('IO'), 'SEEK_SET');; + self.read_buffer = ""; + if ($eqeqeq($$$($$('IO'), 'SEEK_SET'), ($ret_or_1 = whence))) { + + if (!$truthy($rb_ge(pos, 0))) { + self.$raise($$$($$('Errno'), 'EINVAL')) + }; + self.position = pos; + } else if ($eqeqeq($$$($$('IO'), 'SEEK_CUR'), $ret_or_1)) { + if ($truthy($rb_gt($rb_plus(self.position, pos), self.string.$length()))) { + self.position = self.string.$length() + } else { + self.position = $rb_plus(self.position, pos) + } + } else if ($eqeqeq($$$($$('IO'), 'SEEK_END'), $ret_or_1)) { + if ($truthy($rb_gt(pos, self.string.$length()))) { + self.position = 0 + } else { + self.position = $rb_minus(self.position, pos) + } + } else { + nil + }; + return 0; + }, -2); + + $def(self, '$tell', function $$tell() { + var self = this; + + return self.position + }, 0); + + $def(self, '$rewind', function $$rewind() { + var self = this; + + return self.$seek(0) + }, 0); + + $def(self, '$write', function $$write(string) { + var self = this, before = nil, after = nil; + + + self.$check_writable(); + self.read_buffer = ""; + string = self.$String(string); + if ($eqeq(self.string.$length(), self.position)) { + + self.string = $rb_plus(self.string, string); + return (self.position = $rb_plus(self.position, string.$length())); + } else { + + before = self.string['$[]'](Opal.Range.$new(0, $rb_minus(self.position, 1), false)); + after = self.string['$[]'](Opal.Range.$new($rb_plus(self.position, string.$length()), -1, false)); + self.string = $rb_plus($rb_plus(before, string), after); + return (self.position = $rb_plus(self.position, string.$length())); + }; + }, 1); + + $def(self, '$read', function $$read(length, outbuf) { + var self = this, string = nil, str = nil; + + + + if (length == null) length = nil;; + + if (outbuf == null) outbuf = nil;; + self.$check_readable(); + if ($truthy(self['$eof?']())) { + return nil + }; + string = ($truthy(length) ? (((str = self.string['$[]'](self.position, length)), (self.position = $rb_plus(self.position, length)), ($truthy($rb_gt(self.position, self.string.$length())) ? ((self.position = self.string.$length())) : nil), str)) : (((str = self.string['$[]'](Opal.Range.$new(self.position, -1, false))), (self.position = self.string.$length()), str))); + if ($truthy(outbuf)) { + return outbuf.$write(string) + } else { + return string + }; + }, -1); + + $def(self, '$sysread', function $$sysread(length) { + var self = this; + + + self.$check_readable(); + return self.$read(length); + }, 1); + $alias(self, "eof", "eof?"); + $alias(self, "pos", "tell"); + $alias(self, "pos=", "seek"); + return $alias(self, "readpartial", "read"); + })($nesting[0], $$('IO'), $nesting) +}; + +Opal.modules["corelib/pack_unpack/format_string_parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $Kernel = Opal.Kernel; + + Opal.add_stubs('raise'); + return (function($base) { + var self = $module($base, 'PackUnpack'); + + + + var directives = [ + // Integer + 'C', + 'S', + 'L', + 'Q', + 'J', + + 'c', + 's', + 'l', + 'q', + 'j', + + 'n', + 'N', + 'v', + 'V', + + 'U', + 'w', + + // Float + 'D', + 'd', + 'F', + 'f', + 'E', + 'e', + 'G', + 'g', + + // String + 'A', + 'a', + 'Z', + 'B', + 'b', + 'H', + 'h', + 'u', + 'M', + 'm', + + 'P', + 'p', + + // Misc + '@', + 'X', + 'x' + ]; + + var modifiers = [ + '!', // ignored + '_', // ignored + '>', // big endian + '<' // little endian + ]; + + self.eachDirectiveAndCount = function(format, callback) { + var currentDirective, + currentCount, + currentModifiers, + countSpecified; + + function reset() { + currentDirective = null; + currentCount = 0; + currentModifiers = []; + countSpecified = false; + } + + reset(); + + function yieldAndReset() { + if (currentDirective == null) { + reset(); + return; + } + + var directiveSupportsModifiers = /[sSiIlLqQjJ]/.test(currentDirective); + + if (!directiveSupportsModifiers && currentModifiers.length > 0) { + $Kernel.$raise($$$('ArgumentError'), "'" + (currentModifiers[0]) + "' allowed only after types sSiIlLqQjJ") + } + + if (currentModifiers.indexOf('<') !== -1 && currentModifiers.indexOf('>') !== -1) { + $Kernel.$raise($$$('RangeError'), "Can't use both '<' and '>'") + } + + if (!countSpecified) { + currentCount = 1; + } + + if (currentModifiers.indexOf('>') !== -1) { + currentDirective = currentDirective + '>'; + } + + callback(currentDirective, currentCount); + + reset(); + } + + for (var i = 0; i < format.length; i++) { + var currentChar = format[i]; + + if (directives.indexOf(currentChar) !== -1) { + // Directive char always resets current state + yieldAndReset(); + currentDirective = currentChar; + } else if (currentDirective) { + if (/\d/.test(currentChar)) { + // Count can be represented as a sequence of digits + currentCount = currentCount * 10 + parseInt(currentChar, 10); + countSpecified = true; + } else if (currentChar === '*' && countSpecified === false) { + // Count can be represented by a star character + currentCount = Infinity; + countSpecified = true; + } else if (modifiers.indexOf(currentChar) !== -1 && countSpecified === false) { + // Directives can be specified only after directive and before count + currentModifiers.push(currentChar); + } else { + yieldAndReset(); + } + } + } + + yieldAndReset(); + } + + })('::') +}; + +Opal.modules["corelib/array/pack"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, nil = Opal.nil, $$$ = Opal.$$$, $coerce_to = Opal.coerce_to, $klass = Opal.klass, $Kernel = Opal.Kernel, $Opal = Opal.Opal, $def = Opal.def; + + Opal.add_stubs('require,raise,delete,gsub,coerce_to!,inspect'); + + self.$require("corelib/pack_unpack/format_string_parser"); + return (function($base, $super) { + var self = $klass($base, $super, 'Array'); + + + + + // Format Parser + var eachDirectiveAndCount = Opal.PackUnpack.eachDirectiveAndCount; + + function identityFunction(value) { return value; } + + function utf8BytesToUtf16LEString(bytes) { + var str = String.fromCharCode.apply(null, bytes), out = "", i = 0, len = str.length, c, char2, char3; + while (i < len) { + c = str.charCodeAt(i++); + switch (c >> 4) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + // 0xxxxxxx + out += str.charAt(i - 1); + break; + case 12: + case 13: + // 110x xxxx 10xx xxxx + char2 = str.charCodeAt(i++); + out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F)); + break; + case 14: + // 1110 xxxx10xx xxxx10xx xxxx + char2 = str.charCodeAt(i++); + char3 = str.charCodeAt(i++); + out += String.fromCharCode(((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | ((char3 & 0x3F) << 0)); + break; + } + } + return out; + } + + function asciiBytesToUtf16LEString(bytes) { + return String.fromCharCode.apply(null, bytes); + } + + function asciiStringFromUnsignedInt(bytes, callback) { + return function(data) { + var buffer = callback(data); + + return buffer.map(function(item) { + var result = []; + + for (var i = 0; i < bytes; i++) { + var bit = item & 255; + result.push(bit); + item = item >> 8; + }; + + return asciiBytesToUtf16LEString(result); + }); + } + } + + function asciiStringFromSignedInt(bytes, callback) { + return function(data) { + var buffer = callback(data), + bits = bytes * 8, + limit = Math.pow(2, bits); + + return buffer.map(function(item) { + if (item < 0) { + item += limit; + } + + var result = []; + + for (var i = 0; i < bytes; i++) { + var bit = item & 255; + result.push(bit); + item = item >> 8; + }; + + return asciiBytesToUtf16LEString(result); + }); + } + } + + function toInt(callback) { + return function(data) { + var buffer = callback(data); + + return buffer.map(function(item) { + return $coerce_to(item, $$$('Integer'), 'to_int') + }); + } + } + + function ToStr(callback) { + return function(data) { + var buffer = callback(data); + + return buffer.map(function(item) { + return $coerce_to(item, $$$('String'), 'to_str') + }); + } + } + + function fromCodePoint(callback) { + return function(data) { + var buffer = callback(data); + return buffer.map(function(item) { + try { + return String.fromCodePoint(item); + } catch (error) { + if (error instanceof RangeError) { + $Kernel.$raise($$$('RangeError'), "value out of range"); + } + throw error; + } + }); + } + } + + function joinChars(callback) { + return function(data) { + var buffer = callback(data); + return buffer.join(''); + } + } + + var handlers = { + // Integer + 'C': joinChars(asciiStringFromUnsignedInt(1, toInt(identityFunction))), + 'S': joinChars(asciiStringFromUnsignedInt(2, toInt(identityFunction))), + 'L': joinChars(asciiStringFromUnsignedInt(4, toInt(identityFunction))), + 'Q': joinChars(asciiStringFromUnsignedInt(8, toInt(identityFunction))), + 'J': null, + + 'S>': null, + 'L>': null, + 'Q>': null, + + 'c': joinChars(asciiStringFromSignedInt(1, toInt(identityFunction))), + 's': joinChars(asciiStringFromSignedInt(2, toInt(identityFunction))), + 'l': joinChars(asciiStringFromSignedInt(4, toInt(identityFunction))), + 'q': joinChars(asciiStringFromSignedInt(8, toInt(identityFunction))), + 'j': null, + + 's>': null, + 'l>': null, + 'q>': null, + + 'n': null, + 'N': null, + 'v': null, + 'V': null, + + 'U': joinChars(fromCodePoint(toInt(identityFunction))), + 'w': null, + + // Float + 'D': null, + 'd': null, + 'F': null, + 'f': null, + 'E': null, + 'e': null, + 'G': null, + 'g': null, + + // String + 'A': joinChars(identityFunction), + 'a': joinChars(identityFunction), + 'Z': null, + 'B': null, + 'b': null, + 'H': null, + 'h': null, + 'u': null, + 'M': null, + 'm': null, + + 'P': null, + 'p': null + }; + + function readNTimesFromBufferAndMerge(callback) { + return function(buffer, count) { + var chunk = [], chunkData; + + if (count === Infinity) { + while (buffer.length > 0) { + chunkData = callback(buffer); + buffer = chunkData.rest; + chunk = chunk.concat(chunkData.chunk); + } + } else { + if (buffer.length < count) { + $Kernel.$raise($$$('ArgumentError'), "too few arguments"); + } + for (var i = 0; i < count; i++) { + chunkData = callback(buffer); + buffer = chunkData.rest; + chunk = chunk.concat(chunkData.chunk); + } + } + + return { chunk: chunk, rest: buffer }; + } + } + + function readItem(buffer) { + var chunk = buffer.slice(0, 1); + buffer = buffer.slice(1, buffer.length); + return { chunk: chunk, rest: buffer }; + } + + function readNCharsFromTheFirstItemAndMergeWithFallback(fallback, callback) { + return function(buffer, count) { + var chunk = [], source = buffer[0]; + + if (source === nil) { + source = ''; + } else if (source === undefined) { + $Kernel.$raise($$$('ArgumentError'), "too few arguments"); + } else { + source = $coerce_to(source, $$$('String'), 'to_str'); + } + + buffer = buffer.slice(1, buffer.length); + + function infiniteReeder() { + var chunkData = callback(source); + source = chunkData.rest; + var subChunk = chunkData.chunk; + + if (subChunk.length === 1 && subChunk[0] === nil) { + subChunk = [] + } + + chunk = chunk.concat(subChunk); + } + + function finiteReeder() { + var chunkData = callback(source); + source = chunkData.rest; + var subChunk = chunkData.chunk; + + if (subChunk.length === 0) { + subChunk = [fallback]; + } + + if (subChunk.length === 1 && subChunk[0] === nil) { + subChunk = [fallback]; + } + + chunk = chunk.concat(subChunk); + } + + if (count === Infinity) { + while (source.length > 0) { + infiniteReeder(); + } + } else { + for (var i = 0; i < count; i++) { + finiteReeder(); + } + } + + return { chunk: chunk, rest: buffer }; + } + } + + var readChunk = { + // Integer + 'C': readNTimesFromBufferAndMerge(readItem), + 'S': readNTimesFromBufferAndMerge(readItem), + 'L': readNTimesFromBufferAndMerge(readItem), + 'Q': readNTimesFromBufferAndMerge(readItem), + 'J': null, + + 'S>': null, + 'L>': null, + 'Q>': null, + + 'c': readNTimesFromBufferAndMerge(readItem), + 's': readNTimesFromBufferAndMerge(readItem), + 'l': readNTimesFromBufferAndMerge(readItem), + 'q': readNTimesFromBufferAndMerge(readItem), + 'j': null, + + 's>': null, + 'l>': null, + 'q>': null, + + 'n': null, + 'N': null, + 'v': null, + 'V': null, + + 'U': readNTimesFromBufferAndMerge(readItem), + 'w': null, + + // Float + 'D': null, + 'd': null, + 'F': null, + 'f': null, + 'E': null, + 'e': null, + 'G': null, + 'g': null, + + // String + 'A': readNCharsFromTheFirstItemAndMergeWithFallback(" ", readItem), + 'a': readNCharsFromTheFirstItemAndMergeWithFallback("\x00", readItem), + 'Z': null, + 'B': null, + 'b': null, + 'H': null, + 'h': null, + 'u': null, + 'M': null, + 'm': null, + + 'P': null, + 'p': null + }; + + var autocompletion = { + // Integer + 'C': false, + 'S': false, + 'L': false, + 'Q': false, + 'J': null, + + 'S>': null, + 'L>': null, + 'Q>': null, + + 'c': false, + 's': false, + 'l': false, + 'q': false, + 'j': null, + + 's>': null, + 'l>': null, + 'q>': null, + + 'n': null, + 'N': null, + 'v': null, + 'V': null, + + 'U': false, + 'w': null, + + // Float + 'D': null, + 'd': null, + 'F': null, + 'f': null, + 'E': null, + 'e': null, + 'G': null, + 'g': null, + + // String + 'A': false, + 'a': false, + 'Z': null, + 'B': null, + 'b': null, + 'H': null, + 'h': null, + 'u': false, + 'M': null, + 'm': null, + + 'P': null, + 'p': null + }; + ; + return $def(self, '$pack', function $$pack(format) { + var self = this; + + + format = $Opal['$coerce_to!'](format, $$$('String'), "to_str").$gsub(/\s/, "").$delete("\u0000"); + + var output = ''; + + var buffer = self.slice(); + + function autocomplete(array, size) { + while (array.length < size) { + array.push(nil); + } + + return array; + } + + function processChunk(directive, count) { + var chunk, + chunkReader = readChunk[directive]; + + if (chunkReader == null) { + $Kernel.$raise("Unsupported pack directive " + ((directive).$inspect()) + " (no chunk reader defined)") + } + + var chunkData = chunkReader(buffer, count); + chunk = chunkData.chunk; + buffer = chunkData.rest; + + var handler = handlers[directive]; + + if (handler == null) { + $Kernel.$raise("Unsupported pack directive " + ((directive).$inspect()) + " (no handler defined)") + } + + return handler(chunk); + } + + eachDirectiveAndCount(format, function(directive, count) { + var part = processChunk(directive, count); + + if (count !== Infinity) { + var shouldAutocomplete = autocompletion[directive] + + if (shouldAutocomplete == null) { + $Kernel.$raise("Unsupported pack directive " + ((directive).$inspect()) + " (no autocompletion rule defined)") + } + + if (shouldAutocomplete) { + autocomplete(part, count); + } + } + + output = output.concat(part); + }); + + if (format.match(/^(U\*?)+$/)) { + return output; + } + else { + return Opal.enc(output, "binary"); + } + ; + }, 1); + })('::', null); +}; + +Opal.modules["open-uri"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $alias = Opal.alias, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $def = Opal.def, $hash2 = Opal.hash2, $defs = Opal.defs, $eqeq = Opal.eqeq, $rb_minus = Opal.rb_minus, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $rb_plus = Opal.rb_plus, $eqeqeq = Opal.eqeqeq; + + Opal.add_stubs('require,private,=~,respond_to?,open_uri,to_proc,open_uri_original_open,module_function,open_loop,rewind,close_io,close!,closed?,close,request,==,build_response,raise,new,<<,pack,data,io,status=,-,meta_add_field,attr_reader,+,length,===,init,extend,instance_eval,status,base_uri,base_uri=,each,metas,meta_add_field2,attr_accessor,charset,find_encoding,set_encoding,force_encoding,string,find,downcase,[]=,join,meta_setup_encoding,[],utc,at,content_type_parse,scheme,open,read'); + + self.$require("stringio"); + self.$require("corelib/array/pack"); + (function($base, $parent_nesting) { + var self = $module($base, 'Kernel'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$private(); + $alias(self, "open_uri_original_open", "open"); + (function(self, $parent_nesting) { + + return $alias(self, "open_uri_original_open", "open") + })(Opal.get_singleton_class(self), $nesting); + + $def(self, '$open', function $$open(name, $a) { + var block = $$open.$$p || nil, $post_args, rest, self = this; + + delete $$open.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + rest = $post_args;; + if (($truthy(name['$respond_to?']("to_str")) && ($truthy(/^[A-Za-z][A-Za-z0-9+\-\.]*:\/\//['$=~'](name))))) { + return $send($$('OpenURI'), 'open_uri', [name].concat($to_a(rest)), block.$to_proc()) + } else { + return $send(self, 'open_uri_original_open', [name].concat($to_a(rest)), block.$to_proc()) + }; + }, -2); + return self.$module_function("open"); + })($nesting[0], $nesting); + return (function($base, $parent_nesting) { + var self = $module($base, 'OpenURI'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs(self, '$open_uri', function $$open_uri(name, $a) { + var $post_args, rest, $yield = $$open_uri.$$p || nil, self = this, io = nil; + + delete $$open_uri.$$p; + + + $post_args = Opal.slice.call(arguments, 1); + + rest = $post_args;; + io = self.$open_loop(name, $hash2([], {})); + io.$rewind(); + if (($yield !== nil)) { + + return (function() { try { + return Opal.yield1($yield, io); + } finally { + self.$close_io(io) + }; })(); + } else { + return io + }; + }, -2); + $defs(self, '$close_io', function $$close_io(io) { + + if ($truthy(io['$respond_to?']("close!"))) { + return io['$close!']() + } else if ($truthy(io['$closed?']())) { + return nil + } else { + return io.$close() + } + }, 1); + $defs(self, '$open_loop', function $$open_loop(uri, options) { + var self = this, req = nil, data = nil, status = nil, status_text = nil; + + + req = self.$request(uri); + data = req.responseText; + status = req.status; + status_text = req.statusText && req.statusText.errno ? req.statusText.errno : req.statusText; + if (($eqeq(status, 200) || (($eqeq(status, 0) && ($truthy(data)))))) { + return self.$build_response(req, status, status_text) + } else { + return self.$raise($$$($$('OpenURI'), 'HTTPError').$new("" + (status) + " " + (status_text), "")) + }; + }, 2); + $defs(self, '$build_response', function $$build_response(req, status, status_text) { + var self = this, buf = nil, io = nil, $writer = nil, last_modified = nil; + + + buf = $$('Buffer').$new(); + buf['$<<'](self.$data(req).$pack("c*")); + io = buf.$io(); + + $writer = ["" + (status) + " " + (status_text)]; + $send(io, 'status=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + io.$meta_add_field("content-type", req.getResponseHeader("Content-Type") || ''); + last_modified = req.getResponseHeader("Last-Modified"); + if ($truthy(last_modified)) { + io.$meta_add_field("last-modified", last_modified) + }; + return io; + }, 3); + $defs(self, '$data', function $$data(req) { + + + var binStr = req.responseText; + var byteArray = []; + for (var i = 0, len = binStr.length; i < len; ++i) { + var c = binStr.charCodeAt(i); + var byteCode = c & 0xff; // byte at offset i + byteArray.push(byteCode); + } + return byteArray; + + }, 1); + $defs(self, '$request', function $$request(uri) { + var self = this; + + + try { + var xhr = new XMLHttpRequest(); + xhr.open('GET', uri, false); + // We cannot use xhr.responseType = "arraybuffer" because XMLHttpRequest is used in synchronous mode. + // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType#Synchronous_XHR_restrictions + xhr.overrideMimeType('text/plain; charset=x-user-defined'); + xhr.send(); + return xhr; + } catch (error) { + self.$raise($$$($$('OpenURI'), 'HTTPError').$new(error.message, "")) + } + + }, 1); + (function($base, $super) { + var self = $klass($base, $super, 'HTTPError'); + + + + + $def(self, '$initialize', function $$initialize(message, io) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [message, io], null); + return (self.io = io); + }, 2); + return self.$attr_reader("io"); + })($nesting[0], $$('StandardError')); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Buffer'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.io = $proto.size = nil; + + + $def(self, '$initialize', function $$initialize() { + var self = this; + + + self.io = $$('StringIO').$new(); + return (self.size = 0); + }, 0); + self.$attr_reader("size"); + + $def(self, '$<<', function $Buffer_$lt$lt$1(str) { + var self = this; + + + self.io['$<<'](str); + return (self.size = $rb_plus(self.size, str.$length())); + }, 1); + return $def(self, '$io', function $$io() { + var self = this; + + + if (!$eqeqeq($$('Meta'), self.io)) { + $$('Meta').$init(self.io) + }; + return self.io; + }, 0); + })($nesting[0], null, $nesting); + (function($base, $parent_nesting) { + var self = $module($base, 'Meta'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs($$('Meta'), '$init', function $$init(obj, src) { + var self = this, $writer = nil; + + + + if (src == null) src = nil;; + obj.$extend($$('Meta')); + $send(obj, 'instance_eval', [], function $$2(){var self = $$2.$$s == null ? this : $$2.$$s; + + + self.base_uri = nil; + self.meta = $hash2([], {}); + return (self.metas = $hash2([], {}));}, {$$arity: 0, $$s: self}); + if ($truthy(src)) { + + + $writer = [src.$status()]; + $send(obj, 'status=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [src.$base_uri()]; + $send(obj, 'base_uri=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return $send(src.$metas(), 'each', [], function $$3(name, values){ + + + if (name == null) name = nil;; + + if (values == null) values = nil;; + return obj.$meta_add_field2(name, values);}, 2); + } else { + return nil + }; + }, -2); + self.$attr_accessor("status"); + self.$attr_accessor("base_uri"); + self.$attr_reader("meta"); + self.$attr_reader("metas"); + + $def(self, '$meta_setup_encoding', function $$meta_setup_encoding() { + var self = this, charset = nil, enc = nil; + + + charset = self.$charset(); + enc = self.$find_encoding(charset); + return self.$set_encoding(enc); + }, 0); + + $def(self, '$set_encoding', function $$set_encoding(enc) { + var self = this; + + if ($truthy(self['$respond_to?']("force_encoding"))) { + return self.$force_encoding(enc) + } else if ($truthy(self['$respond_to?']("string"))) { + return self.$string().$force_encoding(enc) + } else { + return self.$set_encoding(enc) + } + }, 1); + + $def(self, '$find_encoding', function $$find_encoding(charset) { + var enc = nil; + + + enc = nil; + if ($truthy(charset)) { + + try { + enc = $$('Encoding').$find(charset) + } catch ($err) { + if (Opal.rescue($err, [$$('ArgumentError')])) { + try { + nil + } finally { Opal.pop_exception(); } + } else { throw $err; } + }; + }; + if (!$truthy(enc)) { + enc = $$$($$('Encoding'), 'ASCII_8BIT') + }; + return enc; + }, 1); + + $def(self, '$meta_add_field2', function $$meta_add_field2(name, values) { + var self = this, $writer = nil; + if (self.metas == null) self.metas = nil; + if (self.meta == null) self.meta = nil; + + + name = name.$downcase(); + + $writer = [name, values]; + $send(self.metas, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [name, values.$join(", ")]; + $send(self.meta, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($eqeq(name, "content-type")) { + return self.$meta_setup_encoding() + } else { + return nil + }; + }, 2); + + $def(self, '$meta_add_field', function $$meta_add_field(name, value) { + var self = this; + + return self.$meta_add_field2(name, [value]) + }, 2); + + $def(self, '$last_modified', function $$last_modified() { + var self = this, vs = nil; + if (self.metas == null) self.metas = nil; + + if ($truthy((vs = self.metas['$[]']("last-modified")))) { + return $$('Time').$at(Date.parse(vs.$join(", ")) / 1000).$utc() + } else { + return nil + } + }, 0); + + $def(self, '$content_type_parse', function $$content_type_parse() { + var self = this, content_type = nil; + if (self.metas == null) self.metas = nil; + + + content_type = self.metas['$[]']("content-type"); + return content_type.$join(", "); + }, 0); + + $def(self, '$charset', function $$charset() { + var self = this, type = nil; + if (self.base_uri == null) self.base_uri = nil; + + + type = self.$content_type_parse(); + if (((($truthy(type) && ($truthy(/^text\//['$=~'](type)))) && ($truthy(self.base_uri))) && ($truthy(/^http$/i['$=~'](self.base_uri.$scheme()))))) { + return "iso-8859-1" + } else { + return nil + }; + }, 0); + return $def(self, '$content_type', function $$content_type() { + var self = this, type = nil, $ret_or_1 = nil; + + + type = self.$content_type_parse(); + if ($truthy(($ret_or_1 = type))) { + return $ret_or_1 + } else { + return "application/octet-stream" + }; + }, 0); + })($nesting[0], $nesting); + return (function($base, $parent_nesting) { + var self = $module($base, 'OpenRead'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$open', function $$open($a) { + var block = $$open.$$p || nil, $post_args, rest, self = this; + + delete $$open.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + rest = $post_args;; + return $send($$('OpenURI'), 'open_uri', [self].concat($to_a(rest)), block.$to_proc()); + }, -1); + return $def(self, '$read', function $$read(options) { + var self = this; + + + + if (options == null) options = $hash2([], {});; + return $send(self, 'open', [options], function $$4(f){var str = nil; + + + + if (f == null) f = nil;; + str = f.$read(); + $$('Meta').$init(str, f); + return str;}, 1); + }, -1); + })($nesting[0], $nesting); + })($nesting[0], $nesting); +}; diff --git a/opal/1.4.1/open-uri.min.js b/opal/1.4.1/open-uri.min.js new file mode 100644 index 00000000..18b9755c --- /dev/null +++ b/opal/1.4.1/open-uri.min.js @@ -0,0 +1 @@ +Opal.modules.stringio=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$defs=Opal.defs,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$rb_ge=Opal.rb_ge,$rb_gt=Opal.rb_gt,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$alias=Opal.alias;return Opal.add_stubs("new,call,close,attr_accessor,check_readable,==,length,===,>=,raise,>,+,-,seek,check_writable,String,[],eof?,write,read"),function($base,$super,$parent_nesting){var self=$klass($base,$super,"StringIO"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.position=$proto.string=nil,$defs(self,"$open",(function $$open(string,mode){var res,block=$$open.$$p||nil,io=nil;return delete $$open.$$p,null==string&&(string=""),null==mode&&(mode=nil),io=this.$new(string,mode),res=block.$call(io),io.$close(),res}),-1),self.$attr_accessor("string"),$def(self,"$initialize",(function $$initialize(string,mode){return delete $$initialize.$$p,null==string&&(string=""),null==mode&&(mode="rw"),this.string=string,this.position=0,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[nil,mode],null)}),-1),$def(self,"$eof?",(function(){return this.$check_readable(),this.position["$=="](this.string.$length())}),0),$def(self,"$seek",(function(pos,whence){var $ret_or_1;return null==whence&&(whence=$$$($$("IO"),"SEEK_SET")),this.read_buffer="",$eqeqeq($$$($$("IO"),"SEEK_SET"),$ret_or_1=whence)?($truthy($rb_ge(pos,0))||this.$raise($$$($$("Errno"),"EINVAL")),this.position=pos):$eqeqeq($$$($$("IO"),"SEEK_CUR"),$ret_or_1)?$truthy($rb_gt($rb_plus(this.position,pos),this.string.$length()))?this.position=this.string.$length():this.position=$rb_plus(this.position,pos):$eqeqeq($$$($$("IO"),"SEEK_END"),$ret_or_1)&&($truthy($rb_gt(pos,this.string.$length()))?this.position=0:this.position=$rb_minus(this.position,pos)),0}),-2),$def(self,"$tell",(function(){return this.position}),0),$def(self,"$rewind",(function(){return this.$seek(0)}),0),$def(self,"$write",(function(string){var before=nil,after=nil;return this.$check_writable(),this.read_buffer="",string=this.$String(string),$eqeq(this.string.$length(),this.position)?(this.string=$rb_plus(this.string,string),this.position=$rb_plus(this.position,string.$length())):(before=this.string["$[]"](Opal.Range.$new(0,$rb_minus(this.position,1),!1)),after=this.string["$[]"](Opal.Range.$new($rb_plus(this.position,string.$length()),-1,!1)),this.string=$rb_plus($rb_plus(before,string),after),this.position=$rb_plus(this.position,string.$length()))}),1),$def(self,"$read",(function(length,outbuf){var string,str=nil;return null==length&&(length=nil),null==outbuf&&(outbuf=nil),this.$check_readable(),$truthy(this["$eof?"]())?nil:(string=$truthy(length)?(str=this.string["$[]"](this.position,length),this.position=$rb_plus(this.position,length),$truthy($rb_gt(this.position,this.string.$length()))&&(this.position=this.string.$length()),str):(str=this.string["$[]"](Opal.Range.$new(this.position,-1,!1)),this.position=this.string.$length(),str),$truthy(outbuf)?outbuf.$write(string):string)}),-1),$def(self,"$sysread",(function(length){return this.$check_readable(),this.$read(length)}),1),$alias(self,"eof","eof?"),$alias(self,"pos","tell"),$alias(self,"pos=","seek"),$alias(self,"readpartial","read")}($nesting[0],$$("IO"),$nesting)},Opal.modules["corelib/pack_unpack/format_string_parser"]=function(Opal){Opal.nil;var self,directives,modifiers,$$$=Opal.$$$,$module=Opal.module,$Kernel=Opal.Kernel;return Opal.add_stubs("raise"),self=$module("::","PackUnpack"),directives=["C","S","L","Q","J","c","s","l","q","j","n","N","v","V","U","w","D","d","F","f","E","e","G","g","A","a","Z","B","b","H","h","u","M","m","P","p","@","X","x"],modifiers=["!","_",">","<"],void(self.eachDirectiveAndCount=function(format,callback){var currentDirective,currentCount,currentModifiers,countSpecified;function reset(){currentDirective=null,currentCount=0,currentModifiers=[],countSpecified=!1}function yieldAndReset(){null!=currentDirective?(!/[sSiIlLqQjJ]/.test(currentDirective)&¤tModifiers.length>0&&$Kernel.$raise($$$("ArgumentError"),"'"+currentModifiers[0]+"' allowed only after types sSiIlLqQjJ"),-1!==currentModifiers.indexOf("<")&&-1!==currentModifiers.indexOf(">")&&$Kernel.$raise($$$("RangeError"),"Can't use both '<' and '>'"),countSpecified||(currentCount=1),-1!==currentModifiers.indexOf(">")&&(currentDirective+=">"),callback(currentDirective,currentCount),reset()):reset()}reset();for(var i=0;i>=8}return asciiBytesToUtf16LEString(result)}))}}function asciiStringFromSignedInt(bytes,callback){return function(data){var buffer=callback(data),bits=8*bytes,limit=Math.pow(2,bits);return buffer.map((function(item){item<0&&(item+=limit);for(var result=[],i=0;i>=8}return asciiBytesToUtf16LEString(result)}))}}function toInt(callback){return function(data){return callback(data).map((function(item){return $coerce_to(item,$$$("Integer"),"to_int")}))}}function joinChars(callback){return function(data){return callback(data).join("")}}var callback,handlers={C:joinChars(asciiStringFromUnsignedInt(1,toInt(identityFunction))),S:joinChars(asciiStringFromUnsignedInt(2,toInt(identityFunction))),L:joinChars(asciiStringFromUnsignedInt(4,toInt(identityFunction))),Q:joinChars(asciiStringFromUnsignedInt(8,toInt(identityFunction))),J:null,"S>":null,"L>":null,"Q>":null,c:joinChars(asciiStringFromSignedInt(1,toInt(identityFunction))),s:joinChars(asciiStringFromSignedInt(2,toInt(identityFunction))),l:joinChars(asciiStringFromSignedInt(4,toInt(identityFunction))),q:joinChars(asciiStringFromSignedInt(8,toInt(identityFunction))),j:null,"s>":null,"l>":null,"q>":null,n:null,N:null,v:null,V:null,U:joinChars((callback=toInt(identityFunction),function(data){return callback(data).map((function(item){try{return String.fromCodePoint(item)}catch(error){throw error instanceof RangeError&&$Kernel.$raise($$$("RangeError"),"value out of range"),error}}))})),w:null,D:null,d:null,F:null,f:null,E:null,e:null,G:null,g:null,A:joinChars(identityFunction),a:joinChars(identityFunction),Z:null,B:null,b:null,H:null,h:null,u:null,M:null,m:null,P:null,p:null};function readNTimesFromBufferAndMerge(callback){return function(buffer,count){var chunkData,chunk=[];if(count===1/0)for(;buffer.length>0;)buffer=(chunkData=callback(buffer)).rest,chunk=chunk.concat(chunkData.chunk);else{buffer.length0;)infiniteReeder();else for(var i=0;i":null,"L>":null,"Q>":null,c:readNTimesFromBufferAndMerge(readItem),s:readNTimesFromBufferAndMerge(readItem),l:readNTimesFromBufferAndMerge(readItem),q:readNTimesFromBufferAndMerge(readItem),j:null,"s>":null,"l>":null,"q>":null,n:null,N:null,v:null,V:null,U:readNTimesFromBufferAndMerge(readItem),w:null,D:null,d:null,F:null,f:null,E:null,e:null,G:null,g:null,A:readNCharsFromTheFirstItemAndMergeWithFallback(" ",readItem),a:readNCharsFromTheFirstItemAndMergeWithFallback("\0",readItem),Z:null,B:null,b:null,H:null,h:null,u:null,M:null,m:null,P:null,p:null},autocompletion={C:!1,S:!1,L:!1,Q:!1,J:null,"S>":null,"L>":null,"Q>":null,c:!1,s:!1,l:!1,q:!1,j:null,"s>":null,"l>":null,"q>":null,n:null,N:null,v:null,V:null,U:!1,w:null,D:null,d:null,F:null,f:null,E:null,e:null,G:null,g:null,A:!1,a:!1,Z:null,B:null,b:null,H:null,h:null,u:!1,M:null,m:null,P:null,p:null};return $def(self,"$pack",(function(format){format=$Opal["$coerce_to!"](format,$$$("String"),"to_str").$gsub(/\s/,"").$delete("\0");var output="",buffer=this.slice();return eachDirectiveAndCount(format,(function(directive,count){var part=function(directive,count){var chunk,chunkReader=readChunk[directive];null==chunkReader&&$Kernel.$raise("Unsupported pack directive "+directive.$inspect()+" (no chunk reader defined)");var chunkData=chunkReader(buffer,count);chunk=chunkData.chunk,buffer=chunkData.rest;var handler=handlers[directive];return null==handler&&$Kernel.$raise("Unsupported pack directive "+directive.$inspect()+" (no handler defined)"),handler(chunk)}(directive,count);if(count!==1/0){var shouldAutocomplete=autocompletion[directive];null==shouldAutocomplete&&$Kernel.$raise("Unsupported pack directive "+directive.$inspect()+" (no autocompletion rule defined)"),shouldAutocomplete&&function(array,size){for(;array.length,shift,each,rindex,throw,include,attr_reader,>=,incompatible_argument_styles,raise,filter_backtrace,caller,pattern,match,to_a,length,private,conv,proc,block,-,fetch,[]=,join,dup,desc,arg,<,+@,*,sub,to_i,max,collect,!,ljust,to_s,=~,first,long,short,last_match,conv_arg,parse_arg,respond_to?,delete,update,invert,delete_if,unshift,push,__send__,complete,keys,list,reverse_each,summarize,concat,reverse,each_line,add_banner,compsys,catch,basename,visit,puts,help,exit,require,show_version,split,abort,program_name,ver,instance_eval,nonzero?,inc,class,add_officious,base,terminate,accept,top,reject,attr_writer,attr_accessor,version,release,pop,index,banner,<=,search,notwice,!=,any?,guess,tr,downcase,append,make_switch,define,prepend,define_head,define_tail,order!,default_argv,to_sym,parse_in_order,include?,require_exact,set_option,parse,switch_name,delete_prefix,match_nonswitch?,permute!,parse!,scan,compact,getopts,curry,select!,is_a?,message_for,formatter,&,correct,map,map!,load,expand_path,readlines,upcase,shellwords,nil?,Integer,to_f,Rational,Float,|,args,reason,additional,const_set,undef_method,default_argv=,warn,options,extend'); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'OptionParser'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $writer = nil, decimal = nil, binary = nil, hex = nil, octal = nil, integer = nil, float$ = nil, floatpat = nil, real = nil, yesno = nil, $proto = self.$$prototype; + + $proto.banner = $proto.program_name = $proto.version = $proto.release = $proto.stack = $proto.summary_width = $proto.summary_indent = nil; + + $const_set($$('OptionParser'), 'Version', "0.1.1"); + $const_set($nesting[0], 'NoArgument', [$const_set($nesting[0], 'NO_ARGUMENT', "NONE"), nil].$freeze()); + $const_set($nesting[0], 'RequiredArgument', [$const_set($nesting[0], 'REQUIRED_ARGUMENT', "REQUIRED"), true].$freeze()); + $const_set($nesting[0], 'OptionalArgument', [$const_set($nesting[0], 'OPTIONAL_ARGUMENT', "OPTIONAL"), false].$freeze()); + (function($base, $parent_nesting) { + var self = $module($base, 'Completion'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs(self, '$regexp', function $$regexp(key, icase) { + + return $$('Regexp').$new($rb_plus("\\A", $$('Regexp').$quote(key).$gsub(/\w+\b/, "\\&\\w*")), icase) + }, 2); + $defs(self, '$candidate', function $$candidate(key, icase, pat) { + var block = $$candidate.$$p || nil, $ret_or_1 = nil, candidates = nil; + + delete $$candidate.$$p; + + ; + + if (icase == null) icase = false;; + + if (pat == null) pat = nil;; + pat = ($truthy(($ret_or_1 = pat)) ? ($ret_or_1) : ($$('Completion').$regexp(key, icase))); + candidates = []; + $send(block, 'call', [], function $$1(k, $a){var $post_args, v, $b, $c, $d, $e, kn = nil; + + + + if (k == null) k = nil;; + + $post_args = Opal.slice.call(arguments, 1); + + v = $post_args;; + if ($truthy(($ret_or_1 = ($eqeqeq($$('Regexp'), k) ? (((kn = ""), k['$==='](key))) : (((kn = ($truthy(((($b = k) && ($c = $b, $c) && ($d = $c) && ((($e = $d.$id2name) && !$e.$$stub) || $d['$respond_to_missing?']('id2name'))) ? 'method' : nil)) ? (k.$id2name()) : (k))), pat['$==='](kn))))))) { + $ret_or_1 + } else { + return nil; + }; + if ($truthy(v['$empty?']())) { + v['$<<'](k) + }; + return candidates['$<<']([k, v, kn]);}, -2); + return candidates; + }, -2); + + $def(self, '$candidate', function $$candidate(key, icase, pat) { + var self = this; + + + + if (icase == null) icase = false;; + + if (pat == null) pat = nil;; + return $send($$('Completion'), 'candidate', [key, icase, pat], self.$method("each").$to_proc()); + }, -2); + self.$public(); + + $def(self, '$complete', function $$complete(key, icase, pat) { + var $a, $b, $yield = $$complete.$$p || nil, self = this, candidates = nil, canon = nil, sw = nil, cn = nil, $ret_or_1 = nil; + + delete $$complete.$$p; + + + if (icase == null) icase = false;; + + if (pat == null) pat = nil;; + candidates = $send($send(self, 'candidate', [key, icase, pat], self.$method("each").$to_proc()), 'sort_by', [], function $$2(k, v, kn){ + + + if (k == null) k = nil;; + + if (v == null) v = nil;; + + if (kn == null) kn = nil;; + return kn.$size();}, 3); + if ($eqeq(candidates.$size(), 1)) { + $b = candidates['$[]'](0), $a = $to_ary($b), (canon = ($a[0] == null ? nil : $a[0])), (sw = ($a[1] == null ? nil : $a[1])), $b + } else if ($truthy($rb_gt(candidates.$size(), 1))) { + + $b = candidates.$shift(), $a = $to_ary($b), (canon = ($a[0] == null ? nil : $a[0])), (sw = ($a[1] == null ? nil : $a[1])), (cn = ($a[2] == null ? nil : $a[2])), $b; + $send(candidates, 'each', [], function $$3(k, v, kn){var $c, self = $$3.$$s == null ? this : $$3.$$s; + + + + if (k == null) k = nil;; + + if (v == null) v = nil;; + + if (kn == null) kn = nil;; + if ($eqeq(sw, v)) { + return nil; + }; + if (($eqeqeq($$('String'), cn) && ($eqeqeq($$('String'), kn)))) { + if ($truthy(cn.$rindex(kn, 0))) { + + $c = [k, v, kn], (canon = $c[0]), (sw = $c[1]), (cn = $c[2]), $c; + return nil;; + } else if ($truthy(kn.$rindex(cn, 0))) { + return nil; + } + }; + return self.$throw("ambiguous", key);}, {$$arity: 3, $$s: self}); + }; + if ($truthy(canon)) { + + if ($truthy(($ret_or_1 = ($yield !== nil)))) { + $ret_or_1 + } else { + + return [key].concat($to_a(sw)); + }; + return Opal.yieldX($yield, [key].concat($to_a(sw)));; + } else { + return nil + }; + }, -2); + return $def(self, '$convert', function $$convert($a, $b, $c) { + var $post_args, opt, val, $rest_arg; + + + + $post_args = Opal.slice.call(arguments); + + if ($post_args.length > 0) opt = $post_args.shift(); + if (opt == null) opt = nil;; + + if ($post_args.length > 0) val = $post_args.shift(); + if (val == null) val = nil;; + + $rest_arg = $post_args;; + return val; + }, -1); + })($nesting[0], $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'OptionMap'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return self.$include($$('Completion')) + })($nesting[0], $$('Hash'), $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Switch'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto["short"] = $proto["long"] = $proto.pattern = nil; + + self.$attr_reader("pattern", "conv", "short", "long", "arg", "desc", "block"); + $defs(self, '$guess', function $$guess(arg) { + var self = this, $ret_or_1 = nil, t = nil; + + + if ($eqeqeq("", ($ret_or_1 = arg))) { + t = self + } else if ($eqeqeq(/^=?\[/, $ret_or_1)) { + t = $$$($$('Switch'), 'OptionalArgument') + } else if ($eqeqeq(/^\s+\[/, $ret_or_1)) { + t = $$$($$('Switch'), 'PlacedArgument') + } else { + t = $$$($$('Switch'), 'RequiredArgument') + }; + if ($truthy(($ret_or_1 = $rb_ge(self, t)))) { + $ret_or_1 + } else { + self.$incompatible_argument_styles(arg, t) + }; + return t; + }, 1); + $defs(self, '$incompatible_argument_styles', function $$incompatible_argument_styles(arg, t) { + var self = this; + + return self.$raise($$('ArgumentError'), "" + (arg) + ": incompatible argument styles\n " + (self) + ", " + (t), $$('ParseError').$filter_backtrace(self.$caller(2))) + }, 2); + $defs(self, '$pattern', function $$pattern() { + + return $$('NilClass') + }, 0); + + $def(self, '$initialize', function $$initialize(pattern, conv, short$, long$, arg, desc, block) { + var _block = $$initialize.$$p || nil, $a, self = this, $ret_or_1 = nil; + + delete $$initialize.$$p; + + ; + + if (pattern == null) pattern = nil;; + + if (conv == null) conv = nil;; + + if (short$ == null) short$ = nil;; + + if (long$ == null) long$ = nil;; + + if (arg == null) arg = nil;; + + if (desc == null) desc = (($truthy(short$) || ($truthy(long$))) ? ([]) : nil);; + + if (block == null) block = nil;; + if ($eqeqeq($$('Array'), pattern)) { + self.$raise() + }; + block = ($truthy(($ret_or_1 = block)) ? ($ret_or_1) : (_block)); + return $a = [pattern, conv, short$, long$, arg, desc, block], (self.pattern = $a[0]), (self.conv = $a[1]), (self["short"] = $a[2]), (self["long"] = $a[3]), (self.arg = $a[4]), (self.desc = $a[5]), (self.block = $a[6]), $a; + }, -1); + + $def(self, '$parse_arg', function $$parse_arg(arg) { + var $yield = $$parse_arg.$$p || nil, self = this, $ret_or_1 = nil, m = nil, s = nil; + + delete $$parse_arg.$$p; + + if ($truthy(($ret_or_1 = self.$pattern()))) { + $ret_or_1 + } else { + + return [nil, [arg]]; + }; + if (!$truthy((m = self.$pattern().$match(arg)))) { + + Opal.yieldX($yield, [$$('InvalidArgument'), arg]); + return [arg, []]; + }; + if ($eqeqeq($$('String'), m)) { + m = [(s = m)] + } else { + + m = m.$to_a(); + s = m['$[]'](0); + if (!$eqeqeq($$('String'), s)) { + return [nil, m] + }; + }; + if (!$truthy(arg.$rindex(s, 0))) { + self.$raise($$('InvalidArgument'), arg) + }; + if ($eqeq(s.$length(), arg.$length())) { + return [nil, m] + }; + Opal.yieldX($yield, [$$('InvalidArgument'), arg]); + return [arg['$[]'](Opal.Range.$new(s.$length(), -1, false)), m]; + }, 1); + self.$private("parse_arg"); + + $def(self, '$conv_arg', function $$conv_arg(arg, val) { + var self = this; + + + + if (val == null) val = [];; + if ($truthy(self.$conv())) { + val = $send(self.$conv(), 'call', $to_a(val)) + } else { + val = $send($send(self, 'proc', [], function $$4(v){ + + + if (v == null) v = nil;; + return v;}, 1), 'call', $to_a(val)) + }; + return [arg, self.$block(), val]; + }, -2); + self.$private("conv_arg"); + + $def(self, '$summarize', function $$summarize(sdone, ldone, width, max, indent) { + var $a, $yield = $$summarize.$$p || nil, self = this, sopts = nil, lopts = nil, left = nil, right = nil, s = nil, l = nil, $ret_or_1 = nil, $ret_or_2 = nil, $writer = nil, mlen = nil, r = nil; + + delete $$summarize.$$p; + + + if (sdone == null) sdone = $hash2([], {});; + + if (ldone == null) ldone = $hash2([], {});; + + if (width == null) width = 1;; + + if (max == null) max = $rb_minus(width, 1);; + + if (indent == null) indent = "";; + $a = [[], [], nil], (sopts = $a[0]), (lopts = $a[1]), $a; + if ($truthy(self["short"])) { + $send(self["short"], 'each', [], function $$5(s){var $writer = nil; + + + + if (s == null) s = nil;; + $send(sdone, 'fetch', [s], function $$6(){ + return sopts['$<<'](s)}, 0); + + $writer = [s, true]; + $send(sdone, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, 1) + }; + if ($truthy(self["long"])) { + $send(self["long"], 'each', [], function $$7(s){var $writer = nil; + + + + if (s == null) s = nil;; + $send(ldone, 'fetch', [s], function $$8(){ + return lopts['$<<'](s)}, 0); + + $writer = [s, true]; + $send(ldone, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, 1) + }; + if (($truthy(sopts['$empty?']()) && ($truthy(lopts['$empty?']())))) { + return nil + }; + left = [sopts.$join(", ")]; + right = self.$desc().$dup(); + while ($truthy((s = lopts.$shift()))) { + + l = $rb_plus(left['$[]'](-1).$length(), s.$length()); + if (($eqeq(left.$size(), 1) && ($truthy(self.$arg())))) { + l = $rb_plus(l, self.$arg().$length()) + }; + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = $rb_lt(l, max))) ? ($ret_or_2) : (sopts['$empty?']()))))) { + $ret_or_1 + } else { + left['$<<'](""['$+@']()) + }; + + $writer = [-1, $rb_plus(left['$[]'](-1), $rb_plus(($truthy(left['$[]'](-1)['$empty?']()) ? ($rb_times(" ", 4)) : (", ")), s))]; + $send(left, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + }; + if ($truthy(self.$arg())) { + + $writer = [0, $rb_plus(left['$[]'](0), ($truthy(left['$[]'](1)) ? ($rb_plus(self.$arg().$sub(/^(\[?)=/, "\\1"), ",")) : (self.$arg())))]; + $send(left, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + mlen = $send(left, 'collect', [], "length".$to_proc()).$max().$to_i(); + while ($truthy(($truthy(($ret_or_1 = $rb_gt(mlen, width))) ? ((l = left.$shift())) : ($ret_or_1)))) { + + if ($eqeq(l.$length(), mlen)) { + mlen = $send(left, 'collect', [], "length".$to_proc()).$max().$to_i() + }; + if ((($truthy($rb_lt(l.$length(), width)) && ($truthy((r = right['$[]'](0))))) && ($not(r['$empty?']())))) { + + l = $rb_plus($rb_plus(l.$to_s().$ljust(width), " "), r); + right.$shift(); + }; + Opal.yield1($yield, $rb_plus(indent, l)); + }; + while ($truthy(((l = left.$shift()), (r = right.$shift()), ($truthy(($ret_or_1 = l)) ? ($ret_or_1) : (r))))) { + + if (($truthy(r) && ($not(r['$empty?']())))) { + l = $rb_plus($rb_plus(l.$to_s().$ljust(width), " "), r) + }; + Opal.yield1($yield, $rb_plus(indent, l)); + }; + return self; + }, -1); + + $def(self, '$add_banner', function $$add_banner(to) { + var self = this, s = nil; + + + if (!($truthy(self["short"]) || ($truthy(self["long"])))) { + + s = self.$desc().$join(); + if (!$truthy(s['$empty?']())) { + to['$<<']($rb_plus($rb_plus(" [", s), "]...")) + }; + }; + return to; + }, 1); + + $def(self, '$match_nonswitch?', function $Switch_match_nonswitch$ques$9(str) { + var self = this; + + if (($truthy(self["short"]) || ($truthy(self["long"])))) { + return nil + } else { + return self.pattern['$=~'](str) + } + }, 1); + + $def(self, '$switch_name', function $$switch_name() { + var self = this, $ret_or_1 = nil; + + return ($truthy(($ret_or_1 = self.$long().$first())) ? ($ret_or_1) : (self.$short().$first())).$sub(/^-+(?:\[no-\])?/, "") + }, 0); + + $def(self, '$compsys', function $$compsys(sdone, ldone) { + var $a, $yield = $$compsys.$$p || nil, self = this, sopts = nil, lopts = nil; + + delete $$compsys.$$p; + + $a = [[], []], (sopts = $a[0]), (lopts = $a[1]), $a; + if ($truthy(self["short"])) { + $send(self["short"], 'each', [], function $$10(s){var $writer = nil; + + + + if (s == null) s = nil;; + $send(sdone, 'fetch', [s], function $$11(){ + return sopts['$<<'](s)}, 0); + + $writer = [s, true]; + $send(sdone, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, 1) + }; + if ($truthy(self["long"])) { + $send(self["long"], 'each', [], function $$12(s){var $writer = nil; + + + + if (s == null) s = nil;; + $send(ldone, 'fetch', [s], function $$13(){ + return lopts['$<<'](s)}, 0); + + $writer = [s, true]; + $send(ldone, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];;}, 1) + }; + if (($truthy(sopts['$empty?']()) && ($truthy(lopts['$empty?']())))) { + return nil + }; + return $send($rb_plus(sopts, lopts), 'each', [], function $$14(opt){var self = $$14.$$s == null ? this : $$14.$$s, o = nil; + + + + if (opt == null) opt = nil;; + if ($truthy(/^--\[no-\](.+)$/['$=~'](opt))) { + + o = $$('Regexp').$last_match(1); + Opal.yieldX($yield, ["--" + (o), self.$desc().$join("")]); + return Opal.yieldX($yield, ["--no-" + (o), self.$desc().$join("")]);; + } else { + return Opal.yieldX($yield, [opt.$to_s(), self.$desc().$join("")]); + };}, {$$arity: 1, $$s: self}); + }, 2); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'NoArgument'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$parse', function $$parse(arg, argv) { + var $yield = $$parse.$$p || nil, self = this; + + delete $$parse.$$p; + + if ($truthy(arg)) { + Opal.yieldX($yield, [$$('NeedlessArgument'), arg]) + }; + return self.$conv_arg(arg); + }, 2); + $defs(self, '$incompatible_argument_styles', function $$incompatible_argument_styles($a) { + var $post_args, $rest_arg; + + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return nil; + }, -1); + return $defs(self, '$pattern', function $$pattern() { + + return $$('Object') + }, 0); + })($nesting[0], self, $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'RequiredArgument'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$parse', function $$parse(arg, argv) { + var self = this; + + + if (!$truthy(arg)) { + + if ($truthy(argv['$empty?']())) { + self.$raise($$('MissingArgument')) + }; + arg = argv.$shift(); + }; + return $send(self, 'conv_arg', $to_a($send(self, 'parse_arg', [arg], self.$method("raise").$to_proc()))); + }, 2) + })($nesting[0], self, $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'OptionalArgument'); + + + return $def(self, '$parse', function $$parse(arg, argv) { + var error = $$parse.$$p || nil, self = this; + + delete $$parse.$$p; + + ; + if ($truthy(arg)) { + return $send(self, 'conv_arg', $to_a($send(self, 'parse_arg', [arg], error.$to_proc()))) + } else { + return self.$conv_arg(arg) + }; + }, 2) + })($nesting[0], self); + return (function($base, $super) { + var self = $klass($base, $super, 'PlacedArgument'); + + + return $def(self, '$parse', function $$parse(arg, argv) { + var error = $$parse.$$p || nil, self = this, val = nil, opt = nil, $writer = nil; + + delete $$parse.$$p; + + ; + if (($not((val = arg)) && (($truthy(argv['$empty?']()) || ($truthy(/^-/['$=~']((val = argv['$[]'](0))))))))) { + return [nil, self.$block(), nil] + }; + opt = (val = $send(self, 'parse_arg', [val], error.$to_proc()))['$[]'](1); + val = $send(self, 'conv_arg', $to_a(val)); + if (($truthy(opt) && ($not(arg)))) { + argv.$shift() + } else { + + $writer = [0, nil]; + $send(val, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + return val; + }, 2) + })($nesting[0], self); + })($nesting[0], null, $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'List'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.atype = $proto["short"] = $proto["long"] = $proto.list = nil; + + self.$attr_reader("atype"); + self.$attr_reader("short"); + self.$attr_reader("long"); + self.$attr_reader("list"); + + $def(self, '$initialize', function $$initialize() { + var self = this; + + + self.atype = $hash2([], {}); + self["short"] = $$('OptionMap').$new(); + self["long"] = $$('OptionMap').$new(); + return (self.list = []); + }, 0); + + $def(self, '$accept', function $$accept(t, pat) { + var block = $$accept.$$p || nil, self = this, $ret_or_1 = nil, $writer = nil; + + delete $$accept.$$p; + + ; + + if (pat == null) pat = /.*/m;; + if ($truthy(pat)) { + if ($truthy(($ret_or_1 = pat['$respond_to?']("match")))) { + $ret_or_1 + } else { + self.$raise($$('TypeError'), "has no `match'", $$('ParseError').$filter_backtrace(self.$caller(2))) + } + } else if ($truthy(t['$respond_to?']("match"))) { + pat = t + }; + if (!$truthy(block)) { + if ($truthy(pat['$respond_to?']("convert"))) { + block = pat.$method("convert").$to_proc() + } + }; + + $writer = [t, [pat, block]]; + $send(self.atype, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + }, -2); + + $def(self, '$reject', function $$reject(t) { + var self = this; + + return self.atype.$delete(t) + }, 1); + + $def(self, '$update', function $$update(sw, sopts, lopts, nsw, nlopts) { + var self = this, used = nil; + + + + if (nsw == null) nsw = nil;; + + if (nlopts == null) nlopts = nil;; + if ($truthy(sopts)) { + $send(sopts, 'each', [], function $$15(o){var self = $$15.$$s == null ? this : $$15.$$s, $writer = nil; + if (self["short"] == null) self["short"] = nil; + + + + if (o == null) o = nil;; + $writer = [o, sw]; + $send(self["short"], '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}) + }; + if ($truthy(lopts)) { + $send(lopts, 'each', [], function $$16(o){var self = $$16.$$s == null ? this : $$16.$$s, $writer = nil; + if (self["long"] == null) self["long"] = nil; + + + + if (o == null) o = nil;; + $writer = [o, sw]; + $send(self["long"], '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}) + }; + if (($truthy(nsw) && ($truthy(nlopts)))) { + $send(nlopts, 'each', [], function $$17(o){var self = $$17.$$s == null ? this : $$17.$$s, $writer = nil; + if (self["long"] == null) self["long"] = nil; + + + + if (o == null) o = nil;; + $writer = [o, nsw]; + $send(self["long"], '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}) + }; + used = self["short"].$invert().$update(self["long"].$invert()); + return $send(self.list, 'delete_if', [], function $$18(o){var $ret_or_1 = nil; + + + + if (o == null) o = nil;; + if ($truthy(($ret_or_1 = $$('Switch')['$==='](o)))) { + return used['$[]'](o)['$!']() + } else { + return $ret_or_1 + };}, 1); + }, -4); + self.$private("update"); + + $def(self, '$prepend', function $$prepend($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + $send(self, 'update', $to_a(args)); + return self.list.$unshift(args['$[]'](0)); + }, -1); + + $def(self, '$append', function $$append($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + $send(self, 'update', $to_a(args)); + return self.list.$push(args['$[]'](0)); + }, -1); + + $def(self, '$search', function $$search(id, key) {try { + + var $yield = $$search.$$p || nil, self = this, list = nil, val = nil; + + delete $$search.$$p; + if ($truthy((list = self.$__send__(id)))) { + + val = $send(list, 'fetch', [key], function $$19(){ + Opal.ret(nil)}, 0); + if (($yield !== nil)) { + return Opal.yield1($yield, val); + } else { + return val + }; + } else { + return nil + } + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 2); + + $def(self, '$complete', function $$complete(id, opt, $a, $b) { + var block = $$complete.$$p || nil, $post_args, icase, pat, self = this; + + delete $$complete.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 2); + + if ($post_args.length > 0) icase = $post_args.shift(); + if (icase == null) icase = false;; + + pat = $post_args;; + return $send(self.$__send__(id), 'complete', [opt, icase].concat($to_a(pat)), block.$to_proc()); + }, -3); + + $def(self, '$get_candidates', function $$get_candidates(id) { + var $yield = $$get_candidates.$$p || nil, self = this; + + delete $$get_candidates.$$p; + return Opal.yield1($yield, self.$__send__(id).$keys()); + }, 1); + + $def(self, '$each_option', function $$each_option() { + var block = $$each_option.$$p || nil, self = this; + + delete $$each_option.$$p; + + ; + return $send(self.$list(), 'each', [], block.$to_proc()); + }, 0); + + $def(self, '$summarize', function $$summarize($a) { + var block = $$summarize.$$p || nil, $post_args, args, self = this, sum = nil; + + delete $$summarize.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + sum = []; + $send(self.$list(), 'reverse_each', [], function $$20(opt){var s = nil; + + + + if (opt == null) opt = nil;; + if ($truthy(opt['$respond_to?']("summarize"))) { + + s = []; + $send(opt, 'summarize', $to_a(args), function $$21(l){ + + + if (l == null) l = nil;; + return s['$<<'](l);}, 1); + return sum.$concat(s.$reverse()); + } else if (($not(opt) || ($truthy(opt['$empty?']())))) { + return sum['$<<']("") + } else if ($truthy(opt['$respond_to?']("each_line"))) { + return sum.$concat([].concat($to_a(opt.$each_line())).$reverse()) + } else { + return sum.$concat([].concat($to_a(opt.$each())).$reverse()) + };}, 1); + return $send(sum, 'reverse_each', [], block.$to_proc()); + }, -1); + + $def(self, '$add_banner', function $$add_banner(to) { + var self = this; + + + $send(self.$list(), 'each', [], function $$22(opt){ + + + if (opt == null) opt = nil;; + if ($truthy(opt['$respond_to?']("add_banner"))) { + return opt.$add_banner(to) + } else { + return nil + };}, 1); + return to; + }, 1); + return $def(self, '$compsys', function $$compsys($a) { + var block = $$compsys.$$p || nil, $post_args, args, self = this; + + delete $$compsys.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send(self.$list(), 'each', [], function $$23(opt){ + + + if (opt == null) opt = nil;; + if ($truthy(opt['$respond_to?']("compsys"))) { + return $send(opt, 'compsys', $to_a(args), block.$to_proc()) + } else { + return nil + };}, 1); + }, -1); + })($nesting[0], null, $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'CompletingHash'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$include($$('Completion')); + return $def(self, '$match', function $$match(key) {try { + + var $a, $b, self = this, values = nil; + + + $b = $send(self, 'fetch', [key], function $$24(){var self = $$24.$$s == null ? this : $$24.$$s; + + return self.$raise($$('AmbiguousArgument'), $send(self, 'catch', ["ambiguous"], function $$25(){var self = $$25.$$s == null ? this : $$25.$$s; + + Opal.ret(self.$complete(key))}, {$$arity: 0, $$s: self}))}, {$$arity: 0, $$s: self}), $a = $to_ary($b), (values = $slice.call($a, 0)), $b; + return [key].concat($to_a(values)); + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 1); + })($nesting[0], $$('Hash'), $nesting); + $const_set($nesting[0], 'ArgumentStyle', $hash2([], {})); + $send($$('NoArgument'), 'each', [], function $OptionParser$26(el){var $writer = nil; + + + + if (el == null) el = nil;; + $writer = [el, $$$($$('Switch'), 'NoArgument')]; + $send($$('ArgumentStyle'), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 1); + $send($$('RequiredArgument'), 'each', [], function $OptionParser$27(el){var $writer = nil; + + + + if (el == null) el = nil;; + $writer = [el, $$$($$('Switch'), 'RequiredArgument')]; + $send($$('ArgumentStyle'), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 1); + $send($$('OptionalArgument'), 'each', [], function $OptionParser$28(el){var $writer = nil; + + + + if (el == null) el = nil;; + $writer = [el, $$$($$('Switch'), 'OptionalArgument')]; + $send($$('ArgumentStyle'), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 1); + $$('ArgumentStyle').$freeze(); + $const_set($nesting[0], 'DefaultList', $$('List').$new()); + + $writer = ["-", $send($$$($$('Switch'), 'NoArgument'), 'new', [], function $OptionParser$29(){ + return nil}, 0)]; + $send($$('DefaultList').$short(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = ["", $send($$$($$('Switch'), 'NoArgument'), 'new', [], function $OptionParser$30(){var self = $OptionParser$30.$$s == null ? this : $OptionParser$30.$$s; + + return self.$throw("terminate")}, {$$arity: 0, $$s: self})]; + $send($$('DefaultList').$long(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + $const_set($nesting[0], 'COMPSYS_HEADER', "\n" + "typeset -A opt_args\n" + "local context state line\n" + "\n" + "_arguments -s -S \\\n"); + + $def(self, '$compsys', function $$compsys(to, name) { + var self = this; + if ($gvars["0"] == null) $gvars["0"] = nil; + + + + if (name == null) name = $$('File').$basename($gvars["0"]);; + to['$<<']("#compdef " + (name) + "\n"); + to['$<<']($$('COMPSYS_HEADER')); + $send(self, 'visit', ["compsys", $hash2([], {}), $hash2([], {})], function $$31(o, d){ + + + if (o == null) o = nil;; + + if (d == null) d = nil;; + return to['$<<'](" \"" + (o) + "[" + (d.$gsub(/[\"\[\]]/, "\\\\\\&")) + "]\" \\\n");}, 2); + return to['$<<'](" '*:file:_files' && return 0\n"); + }, -2); + $const_set($nesting[0], 'Officious', $hash2([], {})); + + $writer = ["help", $send(self, 'proc', [], function $OptionParser$32(parser){var self = $OptionParser$32.$$s == null ? this : $OptionParser$32.$$s; + + + + if (parser == null) parser = nil;; + return $send($$$($$('Switch'), 'NoArgument'), 'new', [], function $$33(arg){var self = $$33.$$s == null ? this : $$33.$$s; + + + + if (arg == null) arg = nil;; + self.$puts(parser.$help()); + return self.$exit();}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self})]; + $send($$('Officious'), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = ["*-completion-bash", $send(self, 'proc', [], function $OptionParser$34(parser){var self = $OptionParser$34.$$s == null ? this : $OptionParser$34.$$s; + + + + if (parser == null) parser = nil;; + return $send($$$($$('Switch'), 'RequiredArgument'), 'new', [], function $$35(arg){var self = $$35.$$s == null ? this : $$35.$$s; + + + + if (arg == null) arg = nil;; + self.$puts(parser.$candidate(arg)); + return self.$exit();}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self})]; + $send($$('Officious'), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = ["*-completion-zsh", $send(self, 'proc', [], function $OptionParser$36(parser){var self = $OptionParser$36.$$s == null ? this : $OptionParser$36.$$s; + + + + if (parser == null) parser = nil;; + return $send($$$($$('Switch'), 'OptionalArgument'), 'new', [], function $$37(arg){var self = $$37.$$s == null ? this : $$37.$$s; + + + + if (arg == null) arg = nil;; + parser.$compsys($$('STDOUT'), arg); + return self.$exit();}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self})]; + $send($$('Officious'), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = ["version", $send(self, 'proc', [], function $OptionParser$38(parser){var self = $OptionParser$38.$$s == null ? this : $OptionParser$38.$$s; + + + + if (parser == null) parser = nil;; + return $send($$$($$('Switch'), 'OptionalArgument'), 'new', [], function $$39(pkg){var self = $$39.$$s == null ? this : $$39.$$s, $ret_or_1 = nil, v = nil; + + + + if (pkg == null) pkg = nil;; + if ($truthy(pkg)) { + + + var $no_errors = true;try { + self.$require("optparse/version") + } catch ($err) { + $no_errors = false; + if (Opal.rescue($err, [$$('LoadError')])) { + try { + nil + } finally { Opal.pop_exception(); } + } else { throw $err; } + }finally { + if ($no_errors) { + + if ($truthy(($ret_or_1 = $send(self, 'show_version', $to_a(pkg.$split(/,/)))))) { + $ret_or_1 + } else { + self.$abort("" + (parser.$program_name()) + ": no version found in package " + (pkg)) + }; + self.$exit(); + }}; + }; + if ($truthy(($ret_or_1 = (v = parser.$ver())))) { + $ret_or_1 + } else { + self.$abort("" + (parser.$program_name()) + ": version unknown") + }; + self.$puts(v); + return self.$exit();}, {$$arity: 1, $$s: self});}, {$$arity: 1, $$s: self})]; + $send($$('Officious'), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + $defs(self, '$with', function $OptionParser_with$40($a) { + var block = $OptionParser_with$40.$$p || nil, $post_args, args, self = this, opts = nil; + + delete $OptionParser_with$40.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + opts = $send(self, 'new', $to_a(args)); + $send(opts, 'instance_eval', [], block.$to_proc()); + return opts; + }, -1); + $defs(self, '$inc', function $$inc(arg, default$) { + var $ret_or_1 = nil; + + + + if (default$ == null) default$ = nil;; + if ($eqeqeq($$('Integer'), ($ret_or_1 = arg))) { + return arg['$nonzero?']() + } else if ($eqeqeq(nil, $ret_or_1)) { + return $rb_plus(default$.$to_i(), 1) + } else { + return nil + }; + }, -2); + + $def(self, '$inc', function $$inc($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send(self.$class(), 'inc', $to_a(args)); + }, -1); + + $def(self, '$initialize', function $$initialize(banner, width, indent) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + if (banner == null) banner = nil;; + + if (width == null) width = 32;; + + if (indent == null) indent = $rb_times(" ", 4);; + self.stack = [$$('DefaultList'), $$('List').$new(), $$('List').$new()]; + self.program_name = nil; + self.banner = banner; + self.summary_width = width; + self.summary_indent = indent; + self.default_argv = $$('ARGV'); + self.require_exact = false; + self.$add_officious(); + if (($yield !== nil)) { + return Opal.yield1($yield, self); + } else { + return nil + }; + }, -1); + + $def(self, '$add_officious', function $$add_officious() { + var self = this, list = nil; + + + list = self.$base(); + return $send($$('Officious'), 'each', [], function $$41(opt, block){var self = $$41.$$s == null ? this : $$41.$$s, $logical_op_recvr_tmp_1 = nil, $ret_or_1 = nil, $writer = nil; + + + + if (opt == null) opt = nil;; + + if (block == null) block = nil;; + $logical_op_recvr_tmp_1 = list.$long(); + if ($truthy(($ret_or_1 = $logical_op_recvr_tmp_1['$[]'](opt)))) { + return $ret_or_1 + } else { + + $writer = [opt, block.$call(self)]; + $send($logical_op_recvr_tmp_1, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + };}, {$$arity: 2, $$s: self}); + }, 0); + + $def(self, '$terminate', function $$terminate(arg) { + var self = this; + + + + if (arg == null) arg = nil;; + return self.$class().$terminate(arg); + }, -1); + $defs(self, '$terminate', function $$terminate(arg) { + var self = this; + + + + if (arg == null) arg = nil;; + return self.$throw("terminate", arg); + }, -1); + self.stack = [$$('DefaultList')]; + $defs(self, '$top', function $$top() { + + return $$('DefaultList') + }, 0); + + $def(self, '$accept', function $$accept($a) { + var blk = $$accept.$$p || nil, $post_args, args, self = this; + + delete $$accept.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send(self.$top(), 'accept', $to_a(args), blk.$to_proc()); + }, -1); + $defs(self, '$accept', function $$accept($a) { + var blk = $$accept.$$p || nil, $post_args, args, self = this; + + delete $$accept.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send(self.$top(), 'accept', $to_a(args), blk.$to_proc()); + }, -1); + + $def(self, '$reject', function $$reject($a) { + var blk = $$reject.$$p || nil, $post_args, args, self = this; + + delete $$reject.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send(self.$top(), 'reject', $to_a(args), blk.$to_proc()); + }, -1); + $defs(self, '$reject', function $$reject($a) { + var blk = $$reject.$$p || nil, $post_args, args, self = this; + + delete $$reject.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send(self.$top(), 'reject', $to_a(args), blk.$to_proc()); + }, -1); + self.$attr_writer("banner"); + self.$attr_writer("program_name"); + self.$attr_accessor("summary_width"); + self.$attr_accessor("summary_indent"); + self.$attr_accessor("default_argv"); + self.$attr_accessor("require_exact"); + + $def(self, '$banner', function $$banner() { + var self = this; + + + if (!$truthy(self.banner)) { + + self.banner = ((("Usage: ") + (self.$program_name())) + " [options]")['$+@'](); + self.$visit("add_banner", self.banner); + }; + return self.banner; + }, 0); + + $def(self, '$program_name', function $$program_name() { + var self = this, $ret_or_1 = nil; + if ($gvars["0"] == null) $gvars["0"] = nil; + + if ($truthy(($ret_or_1 = self.program_name))) { + return $ret_or_1 + } else { + return $$('File').$basename($gvars["0"], ".*") + } + }, 0); + $alias(self, "set_banner", "banner="); + $alias(self, "set_program_name", "program_name="); + $alias(self, "set_summary_width", "summary_width="); + $alias(self, "set_summary_indent", "summary_indent="); + self.$attr_writer("version"); + self.$attr_writer("release"); + + $def(self, '$version', function $$version() { + var $a, $b, self = this, $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = (($a = self['version'], $a != null && $a !== nil) ? 'instance-variable' : nil))) ? (self.version) : ($ret_or_2))))) { + return $ret_or_1 + } else { + + if ($truthy(($ret_or_2 = (($b = $$$('::', 'Version', 'skip_raise')) ? 'constant' : nil)))) { + return $$$('Version') + } else { + return $ret_or_2 + }; + } + }, 0); + + $def(self, '$release', function $$release() { + var $a, $b, $c, self = this, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = ($truthy(($ret_or_3 = (($a = self['release'], $a != null && $a !== nil) ? 'instance-variable' : nil))) ? (self.release) : ($ret_or_3)))) ? ($ret_or_2) : (($truthy(($ret_or_3 = (($b = $$$('::', 'Release', 'skip_raise')) ? 'constant' : nil))) ? ($$$('Release')) : ($ret_or_3))))))) { + return $ret_or_1 + } else { + + if ($truthy(($ret_or_2 = (($c = $$$('::', 'RELEASE', 'skip_raise')) ? 'constant' : nil)))) { + return $$$('RELEASE') + } else { + return $ret_or_2 + }; + } + }, 0); + + $def(self, '$ver', function $$ver() { + var self = this, v = nil, str = nil; + + if ($truthy((v = self.$version()))) { + + str = ((("" + (self.$program_name())) + " ") + ([v].$join(".")))['$+@'](); + if ($truthy((v = self.$release()))) { + str['$<<'](" (" + (v) + ")") + }; + return str; + } else { + return nil + } + }, 0); + + $def(self, '$warn', function $$warn(mesg) { + var $yield = $$warn.$$p || nil, self = this; + if ($gvars["!"] == null) $gvars["!"] = nil; + + delete $$warn.$$p; + + + if (mesg == null) mesg = $gvars["!"];; + return $send2(self, $find_super(self, 'warn', $$warn, false, true), 'warn', ["" + (self.$program_name()) + ": " + (mesg)], null); + }, -1); + + $def(self, '$abort', function $$abort(mesg) { + var $yield = $$abort.$$p || nil, self = this; + if ($gvars["!"] == null) $gvars["!"] = nil; + + delete $$abort.$$p; + + + if (mesg == null) mesg = $gvars["!"];; + return $send2(self, $find_super(self, 'abort', $$abort, false, true), 'abort', ["" + (self.$program_name()) + ": " + (mesg)], null); + }, -1); + + $def(self, '$top', function $$top() { + var self = this; + + return self.stack['$[]'](-1) + }, 0); + + $def(self, '$base', function $$base() { + var self = this; + + return self.stack['$[]'](1) + }, 0); + + $def(self, '$new', function $OptionParser_new$42() { + var $yield = $OptionParser_new$42.$$p || nil, self = this; + + delete $OptionParser_new$42.$$p; + + self.stack.$push($$('List').$new()); + if (($yield !== nil)) { + return Opal.yield1($yield, self); + } else { + return self + }; + }, 0); + + $def(self, '$remove', function $$remove() { + var self = this; + + return self.stack.$pop() + }, 0); + + $def(self, '$summarize', function $$summarize(to, width, max, indent) { + var blk = $$summarize.$$p || nil, self = this, nl = nil, $ret_or_1 = nil; + + delete $$summarize.$$p; + + ; + + if (to == null) to = [];; + + if (width == null) width = self.summary_width;; + + if (max == null) max = $rb_minus(width, 1);; + + if (indent == null) indent = self.summary_indent;; + nl = "\n"; + blk = ($truthy(($ret_or_1 = blk)) ? ($ret_or_1) : ($send(self, 'proc', [], function $$43(l){ + + + if (l == null) l = nil;; + return to['$<<'](($truthy(l.$index(nl, -1)) ? (l) : ($rb_plus(l, nl))));}, 1))); + $send(self, 'visit', ["summarize", $hash2([], {}), $hash2([], {}), width, max, indent], blk.$to_proc()); + return to; + }, -1); + + $def(self, '$help', function $$help() { + var self = this; + + return self.$summarize([self.$banner().$to_s().$sub(/\n?$/, "\n")]).$join() + }, 0); + $alias(self, "to_s", "help"); + + $def(self, '$to_a', function $$to_a() { + var self = this; + + return self.$summarize([self.$banner().$to_s().$split(/^/)]).$join() + }, 0); + + $def(self, '$notwice', function $$notwice(obj, prv, msg) { + var self = this; + + + if (!($not(prv) || ($eqeq(prv, obj)))) { + self.$raise($$('ArgumentError'), "argument " + (msg) + " given twice: " + (obj), $$('ParseError').$filter_backtrace(self.$caller(2))) + }; + return obj; + }, 3); + self.$private("notwice"); + $const_set($nesting[0], 'SPLAT_PROC', $send(self, 'proc', [], function $OptionParser$44($a){var $post_args, a; + + + + $post_args = Opal.slice.call(arguments); + + a = $post_args;; + if ($truthy($rb_le(a.$length(), 1))) { + return a.$first() + } else { + return a + };}, -1)); + + $def(self, '$make_switch', function $$make_switch(opts, block) { + var $a, $b, self = this, short$ = nil, long$ = nil, nolong = nil, style = nil, pattern = nil, conv = nil, not_pattern = nil, not_conv = nil, not_style = nil, ldesc = nil, sdesc = nil, desc = nil, arg = nil, default_style = nil, default_pattern = nil, klass = nil, q = nil, a = nil, has_arg = nil, $ret_or_2 = nil, s = nil; + + + + if (block == null) block = nil;; + $a = [[], [], []], (short$ = $a[0]), (long$ = $a[1]), (nolong = $a[2]), (style = ($a[3] == null ? nil : $a[3])), (pattern = ($a[4] == null ? nil : $a[4])), (conv = ($a[5] == null ? nil : $a[5])), (not_pattern = ($a[6] == null ? nil : $a[6])), (not_conv = ($a[7] == null ? nil : $a[7])), (not_style = ($a[8] == null ? nil : $a[8])), $a; + $a = [[], [], []], (ldesc = $a[0]), (sdesc = $a[1]), (desc = $a[2]), (arg = ($a[3] == null ? nil : $a[3])), $a; + default_style = $$$($$('Switch'), 'NoArgument'); + default_pattern = nil; + klass = nil; + $b = nil, $a = $to_ary($b), (q = ($a[0] == null ? nil : $a[0])), (a = ($a[1] == null ? nil : $a[1])), $b; + has_arg = false; + $send(opts, 'each', [], function $$45(o){var $c, $d, self = $$45.$$s == null ? this : $$45.$$s, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + + + if (o == null) o = nil;; + if ($truthy($send(self, 'search', ["atype", o], function $$46(pat, c){var $c, self = $$46.$$s == null ? this : $$46.$$s; + + + + if (pat == null) pat = nil;; + + if (c == null) c = nil;; + klass = self.$notwice(o, klass, "type"); + if (($truthy(not_style) && ($neqeq(not_style, $$$($$('Switch'), 'NoArgument'))))) { + return $c = [pat, c], (not_pattern = $c[0]), (not_conv = $c[1]), $c + } else { + return $c = [pat, c], (default_pattern = $c[0]), (conv = $c[1]), $c + };}, {$$arity: 2, $$s: self}))) { + return nil; + }; + if (($not(($truthy(($ret_or_1 = $$('String')['$==='](o))) ? ($ret_or_1) : ($$('Symbol')['$==='](o)))) && ($truthy(o['$respond_to?']("match"))))) { + + pattern = self.$notwice(o, pattern, "pattern"); + if ($truthy(pattern['$respond_to?']("convert"))) { + conv = pattern.$method("convert").$to_proc() + } else { + conv = $$('SPLAT_PROC') + }; + return nil;; + }; + if (($eqeqeq($$('Proc'), ($ret_or_1 = o)) || ($eqeqeq($$('Method'), $ret_or_1)))) { + return (block = self.$notwice(o, block, "block")) + } else if (($eqeqeq($$('Array'), $ret_or_1) || ($eqeqeq($$('Hash'), $ret_or_1)))) { + + if (!$eqeqeq($$('CompletingHash'), ($ret_or_2 = pattern))) { + if ($eqeqeq(nil, $ret_or_2)) { + + pattern = $$('CompletingHash').$new(); + if ($truthy(pattern['$respond_to?']("convert"))) { + conv = pattern.$method("convert").$to_proc() + }; + } else { + self.$raise($$('ArgumentError'), "argument pattern given twice") + } + }; + return $send(o, 'each', [], function $$47(pat, $c){var $post_args, v, $writer = nil; + + + + if (pat == null) pat = nil;; + + $post_args = Opal.slice.call(arguments, 1); + + v = $post_args;; + $writer = [pat, $send(v, 'fetch', [0], function $$48(){ + return pat}, 0)]; + $send(pattern, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, -2); + } else if ($eqeqeq($$('Module'), $ret_or_1)) { + return self.$raise($$('ArgumentError'), "unsupported argument type: " + (o), $$('ParseError').$filter_backtrace(self.$caller(4))) + } else if ($truthy($send($$('ArgumentStyle').$keys(), 'any?', [], function $$49($ret_or_2){ + + + if ($ret_or_2 == null) $ret_or_2 = nil;; + return $ret_or_2['$===']($ret_or_1);}, 1))) { + return (style = self.$notwice($$('ArgumentStyle')['$[]'](o), style, "style")) + } else if ($eqeqeq(/^--no-([^\[\]=\s]*)(.+)?/, $ret_or_1)) { + + $c = [$$('Regexp').$last_match(1), $$('Regexp').$last_match(2)], (q = $c[0]), (a = $c[1]), $c; + o = self.$notwice(($truthy(a) ? ($$('Object')) : ($$('TrueClass'))), klass, "type"); + if (!$truthy(not_style)) { + $d = self.$search("atype", o), $c = $to_ary($d), (not_pattern = ($c[0] == null ? nil : $c[0])), (not_conv = ($c[1] == null ? nil : $c[1])), $d + }; + if ($truthy(a)) { + not_style = ($truthy(($ret_or_3 = not_style)) ? ($ret_or_3) : (default_style)).$guess((arg = a)) + }; + default_style = $$$($$('Switch'), 'NoArgument'); + if (!$truthy(default_pattern)) { + $d = self.$search("atype", $$('FalseClass')), $c = $to_ary($d), (default_pattern = ($c[0] == null ? nil : $c[0])), (conv = ($c[1] == null ? nil : $c[1])), $d + }; + ldesc['$<<']("--no-" + (q)); + q = q.$downcase().$tr("_", "-"); + long$['$<<']("no-" + (q)); + return nolong['$<<'](q); + } else if ($eqeqeq(/^--\[no-\]([^\[\]=\s]*)(.+)?/, $ret_or_1)) { + + $c = [$$('Regexp').$last_match(1), $$('Regexp').$last_match(2)], (q = $c[0]), (a = $c[1]), $c; + o = self.$notwice(($truthy(a) ? ($$('Object')) : ($$('TrueClass'))), klass, "type"); + if ($truthy(a)) { + + default_style = default_style.$guess((arg = a)); + if (!$truthy(default_pattern)) { + $d = self.$search("atype", o), $c = $to_ary($d), (default_pattern = ($c[0] == null ? nil : $c[0])), (conv = ($c[1] == null ? nil : $c[1])), $d + }; + }; + ldesc['$<<']("--[no-]" + (q)); + o = q.$downcase().$tr("_", "-"); + long$['$<<'](o); + if (!$truthy(not_style)) { + $d = self.$search("atype", $$('FalseClass')), $c = $to_ary($d), (not_pattern = ($c[0] == null ? nil : $c[0])), (not_conv = ($c[1] == null ? nil : $c[1])), $d + }; + not_style = $$$($$('Switch'), 'NoArgument'); + return nolong['$<<']("no-" + (o)); + } else if ($eqeqeq(/^--([^\[\]=\s]*)(.+)?/, $ret_or_1)) { + + $c = [$$('Regexp').$last_match(1), $$('Regexp').$last_match(2)], (q = $c[0]), (a = $c[1]), $c; + if ($truthy(a)) { + + o = self.$notwice($$('NilClass'), klass, "type"); + default_style = default_style.$guess((arg = a)); + if (!$truthy(default_pattern)) { + $d = self.$search("atype", o), $c = $to_ary($d), (default_pattern = ($c[0] == null ? nil : $c[0])), (conv = ($c[1] == null ? nil : $c[1])), $d + }; + }; + ldesc['$<<']("--" + (q)); + o = q.$downcase().$tr("_", "-"); + return long$['$<<'](o); + } else if ($eqeqeq(/^-(\[\^?\]?(?:[^\\\]]|\\.)*\])(.+)?/, $ret_or_1)) { + + $c = [$$('Regexp').$last_match(1), $$('Regexp').$last_match(2)], (q = $c[0]), (a = $c[1]), $c; + o = self.$notwice($$('Object'), klass, "type"); + if ($truthy(a)) { + + default_style = default_style.$guess((arg = a)); + if (!$truthy(default_pattern)) { + $d = self.$search("atype", o), $c = $to_ary($d), (default_pattern = ($c[0] == null ? nil : $c[0])), (conv = ($c[1] == null ? nil : $c[1])), $d + }; + } else { + has_arg = true + }; + sdesc['$<<']("-" + (q)); + return short$['$<<']($$('Regexp').$new(q)); + } else if ($eqeqeq(/^-(.)(.+)?/, $ret_or_1)) { + + $c = [$$('Regexp').$last_match(1), $$('Regexp').$last_match(2)], (q = $c[0]), (a = $c[1]), $c; + if ($truthy(a)) { + + o = self.$notwice($$('NilClass'), klass, "type"); + default_style = default_style.$guess((arg = a)); + if (!$truthy(default_pattern)) { + $d = self.$search("atype", o), $c = $to_ary($d), (default_pattern = ($c[0] == null ? nil : $c[0])), (conv = ($c[1] == null ? nil : $c[1])), $d + }; + }; + sdesc['$<<']("-" + (q)); + return short$['$<<'](q); + } else if ($eqeqeq(/^=/, $ret_or_1)) { + + style = self.$notwice(default_style.$guess((arg = o)), style, "style"); + if ($truthy(default_pattern)) { + return nil + } else { + return $d = self.$search("atype", $$('Object')), $c = $to_ary($d), (default_pattern = ($c[0] == null ? nil : $c[0])), (conv = ($c[1] == null ? nil : $c[1])), $d + }; + } else { + return desc.$push(o) + };}, {$$arity: 1, $$s: self}); + if (!$truthy(default_pattern)) { + $b = self.$search("atype", default_style.$pattern()), $a = $to_ary($b), (default_pattern = ($a[0] == null ? nil : $a[0])), (conv = ($a[1] == null ? nil : $a[1])), $b + }; + if ($not(($truthy(($ret_or_2 = short$['$empty?']())) ? (long$['$empty?']()) : ($ret_or_2)))) { + + if (($truthy(has_arg) && ($eqeq(default_style, $$$($$('Switch'), 'NoArgument'))))) { + default_style = $$$($$('Switch'), 'RequiredArgument') + }; + s = ($truthy(($ret_or_2 = style)) ? ($ret_or_2) : (default_style)).$new(($truthy(($ret_or_2 = pattern)) ? ($ret_or_2) : (default_pattern)), conv, sdesc, ldesc, arg, desc, block); + } else if ($not(block)) { + + if (($truthy(style) || ($truthy(pattern)))) { + self.$raise($$('ArgumentError'), "no switch given", $$('ParseError').$filter_backtrace(self.$caller())) + }; + s = desc; + } else { + + short$['$<<'](pattern); + s = ($truthy(($ret_or_2 = style)) ? ($ret_or_2) : (default_style)).$new(pattern, conv, nil, nil, arg, desc, block); + }; + return [s, short$, long$, ($truthy(not_style) ? (not_style.$new(not_pattern, not_conv, sdesc, ldesc, nil, desc, block)) : nil), nolong]; + }, -2); + + $def(self, '$define', function $$define($a) { + var block = $$define.$$p || nil, $post_args, opts, self = this, sw = nil; + + delete $$define.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + opts = $post_args;; + $send(self.$top(), 'append', $to_a((sw = self.$make_switch(opts, block)))); + return sw['$[]'](0); + }, -1); + + $def(self, '$on', function $$on($a) { + var block = $$on.$$p || nil, $post_args, opts, self = this; + + delete $$on.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + opts = $post_args;; + $send(self, 'define', $to_a(opts), block.$to_proc()); + return self; + }, -1); + $alias(self, "def_option", "define"); + + $def(self, '$define_head', function $$define_head($a) { + var block = $$define_head.$$p || nil, $post_args, opts, self = this, sw = nil; + + delete $$define_head.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + opts = $post_args;; + $send(self.$top(), 'prepend', $to_a((sw = self.$make_switch(opts, block)))); + return sw['$[]'](0); + }, -1); + + $def(self, '$on_head', function $$on_head($a) { + var block = $$on_head.$$p || nil, $post_args, opts, self = this; + + delete $$on_head.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + opts = $post_args;; + $send(self, 'define_head', $to_a(opts), block.$to_proc()); + return self; + }, -1); + $alias(self, "def_head_option", "define_head"); + + $def(self, '$define_tail', function $$define_tail($a) { + var block = $$define_tail.$$p || nil, $post_args, opts, self = this, sw = nil; + + delete $$define_tail.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + opts = $post_args;; + $send(self.$base(), 'append', $to_a((sw = self.$make_switch(opts, block)))); + return sw['$[]'](0); + }, -1); + + $def(self, '$on_tail', function $$on_tail($a) { + var block = $$on_tail.$$p || nil, $post_args, opts, self = this; + + delete $$on_tail.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + opts = $post_args;; + $send(self, 'define_tail', $to_a(opts), block.$to_proc()); + return self; + }, -1); + $alias(self, "def_tail_option", "define_tail"); + + $def(self, '$separator', function $$separator(string) { + var self = this; + + return self.$top().$append(string, nil, nil) + }, 1); + + $def(self, '$order', function $$order($a, $b) { + var nonopt = $$order.$$p || nil, $post_args, $kwargs, argv, into, self = this; + + delete $$order.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + argv = $post_args;; + + into = $kwargs.$$smap["into"]; + if (into == null) into = nil; + if (($eqeq(argv.$size(), 1) && ($eqeqeq($$('Array'), argv['$[]'](0))))) { + argv = argv['$[]'](0).$dup() + }; + return $send(self, 'order!', [argv, $hash2(["into"], {"into": into})], nonopt.$to_proc()); + }, -1); + + $def(self, '$order!', function $OptionParser_order$excl$50($a, $b) { + var nonopt = $OptionParser_order$excl$50.$$p || nil, $post_args, $kwargs, argv, into, self = this, setter = nil; + + delete $OptionParser_order$excl$50.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if ($post_args.length > 0) argv = $post_args.shift(); + if (argv == null) argv = self.$default_argv();; + + into = $kwargs.$$smap["into"]; + if (into == null) into = nil; + if ($truthy(into)) { + setter = $lambda(function $$51(name, val){var $writer = nil; + + + + if (name == null) name = nil;; + + if (val == null) val = nil;; + $writer = [name.$to_sym(), val]; + $send(into, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 2) + }; + return $send(self, 'parse_in_order', [argv, setter], nonopt.$to_proc()); + }, -1); + + $def(self, '$parse_in_order', function $$parse_in_order(argv, setter) { + var nonopt = $$parse_in_order.$$p || nil, $a, $b, self = this, opt = nil, arg = nil, val = nil, rest = nil, $ret_or_2 = nil; + + delete $$parse_in_order.$$p; + + ; + + if (argv == null) argv = self.$default_argv();; + + if (setter == null) setter = nil;; + $b = nil, $a = $to_ary($b), (opt = ($a[0] == null ? nil : $a[0])), (arg = ($a[1] == null ? nil : $a[1])), (val = ($a[2] == null ? nil : $a[2])), (rest = ($a[3] == null ? nil : $a[3])), $b; + nonopt = ($truthy(($ret_or_2 = nonopt)) ? ($ret_or_2) : ($send(self, 'proc', [], function $$52(a){var self = $$52.$$s == null ? this : $$52.$$s; + + + + if (a == null) a = nil;; + return self.$throw("terminate", a);}, {$$arity: 1, $$s: self}))); + if ($truthy((arg = $send(self, 'catch', ["terminate"], function $$53(){var $c, $d, $e, self = $$53.$$s == null ? this : $$53.$$s, sw = nil, cb = nil, eq = nil, has_arg = nil, $ret_or_3 = nil; + if ($gvars["!"] == null) $gvars["!"] = nil; + + + while ($truthy((arg = argv.$shift()))) { + if ($eqeqeq(/^--([^=]*)(?:=(.*))?/m, ($ret_or_2 = arg))) { + + $d = [$$('Regexp').$last_match(1), $$('Regexp').$last_match(2)], (opt = $d[0]), (rest = $d[1]), $d; + opt = opt.$tr("_", "-"); + + try { + + $e = self.$complete("long", opt, true), $d = $to_ary($e), (sw = ($d[0] == null ? nil : $d[0])), $e; + if (($truthy(self.$require_exact()) && ($not(sw.$long()['$include?'](arg))))) { + self.$raise($$('InvalidOption'), arg) + }; + } catch ($err) { + if (Opal.rescue($err, [$$('ParseError')])) { + try { + self.$raise($gvars["!"].$set_option(arg, true)) + } finally { Opal.pop_exception(); } + } else { throw $err; } + };; + + try { + + $e = $send(sw, 'parse', [rest, argv], function $$54($f){var $post_args, exc, self = $$54.$$s == null ? this : $$54.$$s; + + + + $post_args = Opal.slice.call(arguments); + + exc = $post_args;; + return $send(self, 'raise', $to_a(exc));}, {$$arity: -1, $$s: self}), $d = $to_ary($e), (opt = ($d[0] == null ? nil : $d[0])), (cb = ($d[1] == null ? nil : $d[1])), (val = ($d[2] == null ? nil : $d[2])), $e; + if ($truthy(cb)) { + val = cb.$call(val) + }; + if ($truthy(setter)) { + setter.$call(sw.$switch_name(), val) + }; + } catch ($err) { + if (Opal.rescue($err, [$$('ParseError')])) { + try { + self.$raise($gvars["!"].$set_option(arg, rest)) + } finally { Opal.pop_exception(); } + } else { throw $err; } + };; + } else if ($eqeqeq(/^-(.)((=).*|.+)?/m, $ret_or_2)) { + + $d = [$$('Regexp').$last_match(3), $$('Regexp').$last_match(2), $$('Regexp').$last_match(1)], (eq = $d[0]), (rest = $d[1]), (opt = $d[2]), $d; + $d = [eq, rest], (has_arg = $d[0]), (val = $d[1]), $d; + + try { + + $e = self.$search("short", opt), $d = $to_ary($e), (sw = ($d[0] == null ? nil : $d[0])), $e; + if (!$truthy(sw)) { + + try { + + $e = self.$complete("short", opt), $d = $to_ary($e), (sw = ($d[0] == null ? nil : $d[0])), $e; + val = arg.$delete_prefix("-"); + has_arg = true; + } catch ($err) { + if (Opal.rescue($err, [$$('InvalidOption')])) { + try { + + if ($truthy(self.$require_exact())) { + self.$raise() + }; + $e = self.$complete("long", opt), $d = $to_ary($e), (sw = ($d[0] == null ? nil : $d[0])), $e; + eq = ($truthy(($ret_or_3 = eq)) ? ($ret_or_3) : (rest['$!']())); + } finally { Opal.pop_exception(); } + } else { throw $err; } + }; + }; + } catch ($err) { + if (Opal.rescue($err, [$$('ParseError')])) { + try { + self.$raise($gvars["!"].$set_option(arg, true)) + } finally { Opal.pop_exception(); } + } else { throw $err; } + };; + + + var $no_errors = true;try { + $e = $send(sw, 'parse', [val, argv], function $$55($f){var $post_args, exc, self = $$55.$$s == null ? this : $$55.$$s; + + + + $post_args = Opal.slice.call(arguments); + + exc = $post_args;; + if ($truthy(eq)) { + return $send(self, 'raise', $to_a(exc)) + } else { + return nil + };}, {$$arity: -1, $$s: self}), $d = $to_ary($e), (opt = ($d[0] == null ? nil : $d[0])), (cb = ($d[1] == null ? nil : $d[1])), (val = ($d[2] == null ? nil : $d[2])), $e + } catch ($err) { + $no_errors = false; + if (Opal.rescue($err, [$$('ParseError')])) { + try { + self.$raise($gvars["!"].$set_option(arg, $rb_gt(arg.$length(), 2))) + } finally { Opal.pop_exception(); } + } else { throw $err; } + }finally { + if ($no_errors) { + if ((($truthy(has_arg) && ($not(eq))) && ($eqeq(arg, "-" + (opt))))) { + self.$raise($$('InvalidOption'), arg) + } + }};; + + try { + + if (($truthy(opt) && (($not(rest) || ($neqeq((opt = opt.$sub(/^-*/, "-")), "-")))))) { + argv.$unshift(opt) + }; + if ($truthy(cb)) { + val = cb.$call(val) + }; + if ($truthy(setter)) { + setter.$call(sw.$switch_name(), val) + }; + } catch ($err) { + if (Opal.rescue($err, [$$('ParseError')])) { + try { + self.$raise($gvars["!"].$set_option(arg, $rb_gt(arg.$length(), 2))) + } finally { Opal.pop_exception(); } + } else { throw $err; } + };; + } else { + $send(self, 'catch', ["prune"], function $$56(){var self = $$56.$$s == null ? this : $$56.$$s; + + + $send(self, 'visit', ["each_option"], function $$57(sw0){ + + + if (sw0 == null) sw0 = nil;; + sw = sw0; + if (($eqeqeq($$('Switch'), sw) && ($truthy(sw['$match_nonswitch?'](arg))))) { + return sw.$block().$call(arg) + } else { + return nil + };}, 1); + return nonopt.$call(arg);}, {$$arity: 0, $$s: self}) + } + }; + return nil;}, {$$arity: 0, $$s: self})))) { + argv.$unshift(arg) + }; + $send(self, 'visit', ["search", "short", nil], function $$58(sw){ + + + if (sw == null) sw = nil;; + if ($truthy(sw.$pattern())) { + return nil + } else { + return $send(sw.$block(), 'call', $to_a(argv)) + };}, 1); + return argv; + }, -1); + self.$private("parse_in_order"); + + $def(self, '$permute', function $$permute($a, $b) { + var $post_args, $kwargs, argv, into, self = this; + + + + $post_args = Opal.slice.call(arguments); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + argv = $post_args;; + + into = $kwargs.$$smap["into"]; + if (into == null) into = nil; + if (($eqeq(argv.$size(), 1) && ($eqeqeq($$('Array'), argv['$[]'](0))))) { + argv = argv['$[]'](0).$dup() + }; + return self['$permute!'](argv, $hash2(["into"], {"into": into})); + }, -1); + + $def(self, '$permute!', function $OptionParser_permute$excl$59($a, $b) { + var $post_args, $kwargs, argv, into, self = this, nonopts = nil, $writer = nil; + + + + $post_args = Opal.slice.call(arguments); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if ($post_args.length > 0) argv = $post_args.shift(); + if (argv == null) argv = self.$default_argv();; + + into = $kwargs.$$smap["into"]; + if (into == null) into = nil; + nonopts = []; + $send(self, 'order!', [argv, $hash2(["into"], {"into": into})], nonopts.$method("<<").$to_proc()); + + $writer = [0, 0, nonopts]; + $send(argv, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return argv; + }, -1); + + $def(self, '$parse', function $$parse($a, $b) { + var $post_args, $kwargs, argv, into, self = this; + + + + $post_args = Opal.slice.call(arguments); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + argv = $post_args;; + + into = $kwargs.$$smap["into"]; + if (into == null) into = nil; + if (($eqeq(argv.$size(), 1) && ($eqeqeq($$('Array'), argv['$[]'](0))))) { + argv = argv['$[]'](0).$dup() + }; + return self['$parse!'](argv, $hash2(["into"], {"into": into})); + }, -1); + + $def(self, '$parse!', function $OptionParser_parse$excl$60($a, $b) { + var $post_args, $kwargs, argv, into, self = this; + + + + $post_args = Opal.slice.call(arguments); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if ($post_args.length > 0) argv = $post_args.shift(); + if (argv == null) argv = self.$default_argv();; + + into = $kwargs.$$smap["into"]; + if (into == null) into = nil; + if ($truthy($$('ENV')['$include?']("POSIXLY_CORRECT"))) { + return self['$order!'](argv, $hash2(["into"], {"into": into})) + } else { + return self['$permute!'](argv, $hash2(["into"], {"into": into})) + }; + }, -1); + + $def(self, '$getopts', function $$getopts($a) { + var $post_args, args, $b, self = this, argv = nil, single_options = nil, long_options = nil, result = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + argv = ($eqeqeq($$('Array'), args.$first()) ? (args.$shift()) : (self.$default_argv())); + $b = [].concat($to_a(args)), (single_options = ($b[0] == null ? nil : $b[0])), (long_options = $slice.call($b, 1)), $b; + result = $hash2([], {}); + if ($truthy(single_options)) { + $send(single_options, 'scan', [/(.)(:)?/], function $$61(opt, val){var self = $$61.$$s == null ? this : $$61.$$s, $writer = nil; + + + + if (opt == null) opt = nil;; + + if (val == null) val = nil;; + if ($truthy(val)) { + + + $writer = [opt, nil]; + $send(result, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self.$define("-" + (opt) + " VAL"); + } else { + + + $writer = [opt, false]; + $send(result, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self.$define("-" + (opt)); + };}, {$$arity: 2, $$s: self}) + }; + $send(long_options, 'each', [], function $$62(arg){var $c, $d, self = $$62.$$s == null ? this : $$62.$$s, desc = nil, opt = nil, val = nil, $writer = nil, $ret_or_2 = nil; + + + + if (arg == null) arg = nil;; + $d = arg.$split(";", 2), $c = $to_ary($d), (arg = ($c[0] == null ? nil : $c[0])), (desc = ($c[1] == null ? nil : $c[1])), $d; + $d = arg.$split(":", 2), $c = $to_ary($d), (opt = ($c[0] == null ? nil : $c[0])), (val = ($c[1] == null ? nil : $c[1])), $d; + if ($truthy(val)) { + + + $writer = [opt, ($truthy(val['$empty?']()) ? (nil) : (val))]; + $send(result, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return $send(self, 'define', ["--" + (opt) + "=" + (($truthy(($ret_or_2 = result['$[]'](opt))) ? ($ret_or_2) : ("VAL")))].concat($to_a([desc].$compact()))); + } else { + + + $writer = [opt, false]; + $send(result, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return $send(self, 'define', ["--" + (opt)].concat($to_a([desc].$compact()))); + };}, {$$arity: 1, $$s: self}); + self.$parse_in_order(argv, result.$method("[]=")); + return result; + }, -1); + $defs(self, '$getopts', function $$getopts($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send(self.$new(), 'getopts', $to_a(args)); + }, -1); + + $def(self, '$visit', function $$visit(id, $a) { + var block = $$visit.$$p || nil, $post_args, args, self = this; + + delete $$visit.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + $send(self.stack, 'reverse_each', [], function $$63(el){ + + + if (el == null) el = nil;; + return $send(el, '__send__', [id].concat($to_a(args)), block.$to_proc());}, 1); + return nil; + }, -2); + self.$private("visit"); + + $def(self, '$search', function $$search(id, key) { + var $yield = $$search.$$p || nil, self = this, block_given = nil, retval = nil; + + delete $$search.$$p; + + block_given = ($yield !== nil); + retval = nil; + (function(){var $brk = Opal.new_brk(); try {return $send(self, 'visit', ["search", id, key], function $$64(k){ + + + if (k == null) k = nil;; + retval = ($truthy(block_given) ? (Opal.yield1($yield, k)) : (k)); + + Opal.brk(nil, $brk);}, {$$arity: 1, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + return retval; + }, 2); + self.$private("search"); + + $def(self, '$complete', function $$complete(typ, opt, $a, $b) {try { + + var $post_args, icase, pat, self = this, retval = nil, ambiguous = nil, exc = nil; + + + + $post_args = Opal.slice.call(arguments, 2); + + if ($post_args.length > 0) icase = $post_args.shift(); + if (icase == null) icase = false;; + + pat = $post_args;; + if ($truthy(pat['$empty?']())) { + + retval = nil; + (function(){var $brk = Opal.new_brk(); try {return $send(self, 'search', [typ, opt], function $$65(sw){ + + + if (sw == null) sw = nil;; + retval = [sw, opt]; + + Opal.brk(nil, $brk);}, {$$arity: 1, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + if ($truthy(retval)) { + return retval + }; + }; + ambiguous = (function(){var $brk = Opal.new_brk(); try {return $send(self, 'catch', ["ambiguous"], function $$66(){var self = $$66.$$s == null ? this : $$66.$$s; + + + retval = nil; + (function(){var $brk = Opal.new_brk(); try {return $send(self, 'visit', ["complete", typ, opt, icase].concat($to_a(pat)), function $$67(o, $c){var $post_args, sw; + + + + if (o == null) o = nil;; + + $post_args = Opal.slice.call(arguments, 1); + + sw = $post_args;; + retval = sw; + + Opal.brk(nil, $brk);}, {$$arity: -2, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + if ($truthy(retval)) { + Opal.ret(retval) + } else { + return nil + };}, {$$arity: 0, $$s: self, $$brk: $brk}) + } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); + exc = ($truthy(ambiguous) ? ($$('AmbiguousOption')) : ($$('InvalidOption'))); + return self.$raise(exc.$new(opt, $hash2(["additional"], {"additional": self.$method("additional_message").$curry()['$[]'](typ)}))); + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, -3); + self.$private("complete"); + + $def(self, '$additional_message', function $$additional_message(typ, opt) { + var $a, $b, self = this, all_candidates = nil, checker = nil; + + + if (!(($truthy(typ) && ($truthy(opt))) && ($truthy((($b = $$('DidYouMean', 'skip_raise')) && ($a = $$$($b, 'SpellChecker', 'skip_raise')) ? 'constant' : nil))))) { + return nil + }; + all_candidates = []; + $send(self, 'visit', ["get_candidates", typ], function $$68(candidates){ + + + if (candidates == null) candidates = nil;; + return all_candidates.$concat(candidates);}, 1); + $send(all_candidates, 'select!', [], function $$69(cand){ + + + if (cand == null) cand = nil;; + return cand['$is_a?']($$('String'));}, 1); + checker = $$$($$('DidYouMean'), 'SpellChecker').$new($hash2(["dictionary"], {"dictionary": all_candidates})); + return $$('DidYouMean').$formatter().$message_for(all_candidates['$&'](checker.$correct(opt))); + }, 2); + + $def(self, '$candidate', function $$candidate(word) { + var $a, $b, self = this, list = nil, $ret_or_2 = nil, long$ = nil, short$ = nil, arg = nil, argpat = nil, pat = nil; + + + list = []; + if ($eqeqeq("-", ($ret_or_2 = word))) { + long$ = (short$ = true) + } else if ($eqeqeq(/^--/, $ret_or_2)) { + + $b = word.$split(/=/, 2), $a = $to_ary($b), (word = ($a[0] == null ? nil : $a[0])), (arg = ($a[1] == null ? nil : $a[1])), $b; + if (($truthy(arg) && ($not(arg['$empty?']())))) { + argpat = $$('Completion').$regexp(arg, false) + }; + long$ = true; + } else if ($eqeqeq(/^-/, $ret_or_2)) { + short$ = true + } else { + nil + }; + pat = $$('Completion').$regexp(word, long$); + $send(self, 'visit', ["each_option"], function $$70(opt){var opts = nil; + + + + if (opt == null) opt = nil;; + if (!$eqeqeq($$('Switch'), opt)) { + return nil; + }; + opts = $rb_plus(($truthy(long$) ? (opt.$long()) : ([])), ($truthy(short$) ? (opt.$short()) : ([]))); + if ($truthy(pat)) { + opts = $send($send($$('Completion'), 'candidate', [word, true, pat], opts.$method("each").$to_proc()), 'map', [], "first".$to_proc()) + }; + if ($truthy(/^=/['$=~'](opt.$arg()))) { + + $send(opts, 'map!', [], function $$71(sw){ + + + if (sw == null) sw = nil;; + return $rb_plus(sw, "=");}, 1); + if (($truthy(arg) && ($eqeqeq($$('CompletingHash'), opt.$pattern())))) { + if ($truthy((opts = opt.$pattern().$candidate(arg, false, argpat)))) { + $send(opts, 'map!', [], "last".$to_proc()) + } + }; + }; + return list.$concat(opts);}, 1); + return list; + }, 1); + + $def(self, '$load', function $$load(filename) { + var $a, self = this, basename = nil; + if ($gvars["0"] == null) $gvars["0"] = nil; + + + + if (filename == null) filename = nil;; + if (!$truthy(filename)) { + + basename = $$('File').$basename($gvars["0"], ".*"); + + try { + if ($truthy(self.$load($$('File').$expand_path(basename, "~/.options")))) { + return true + } + } catch ($err) { + if (Opal.rescue($err, [$$('StandardError')])) { + try { + nil + } finally { Opal.pop_exception(); } + } else { throw $err; } + };; + basename['$<<'](".options"); + return $send([$$('ENV')['$[]']("XDG_CONFIG_HOME"), "~/.config"].concat($to_a(($a = $$('ENV')['$[]']("XDG_CONFIG_DIRS"), ($a === nil || $a == null) ? nil : $send($a, 'split', [$$$($$('File'), 'PATH_SEPARATOR')])))).concat(["~/config/settings"]), 'any?', [], function $$72(dir){var self = $$72.$$s == null ? this : $$72.$$s; + + + + if (dir == null) dir = nil;; + if (($not(dir) || ($truthy(dir['$empty?']())))) { + return nil; + }; + + try { + return self.$load($$('File').$expand_path(basename, dir)) + } catch ($err) { + if (Opal.rescue($err, [$$('StandardError')])) { + try { + return nil + } finally { Opal.pop_exception(); } + } else { throw $err; } + };;}, {$$arity: 1, $$s: self}); + }; + + try { + + $send(self, 'parse', $to_a($send($$('IO').$readlines(filename), 'each', [], "chomp!".$to_proc()))); + return true; + } catch ($err) { + if (Opal.rescue($err, [$$$($$('Errno'), 'ENOENT'), $$$($$('Errno'), 'ENOTDIR')])) { + try { + return false + } finally { Opal.pop_exception(); } + } else { throw $err; } + };; + }, -1); + + $def(self, '$environment', function $$environment(env) { + var self = this, $ret_or_2 = nil, $ret_or_3 = nil; + if ($gvars["0"] == null) $gvars["0"] = nil; + + + + if (env == null) env = $$('File').$basename($gvars["0"], ".*");; + if ($truthy(($ret_or_2 = (env = ($truthy(($ret_or_3 = $$('ENV')['$[]'](env))) ? ($ret_or_3) : ($$('ENV')['$[]'](env.$upcase()))))))) { + $ret_or_2 + } else { + return nil + }; + self.$require("shellwords"); + return $send(self, 'parse', $to_a($$('Shellwords').$shellwords(env))); + }, -1); + $send(self, 'accept', [$$('Object')], function $OptionParser$73(s){var $ret_or_2 = nil; + + + + if (s == null) s = nil;; + if ($truthy(($ret_or_2 = s))) { + return $ret_or_2 + } else { + return s['$nil?']() + };}, {$$arity: 1, $$has_trailing_comma_in_args: true}); + $send(self, 'accept', [$$('NilClass')], function $OptionParser$74(s){ + + + if (s == null) s = nil;; + return s;}, {$$arity: 1, $$has_trailing_comma_in_args: true}); + $send(self, 'accept', [$$('String'), /.+/m], function $OptionParser$75(s, $a){var $post_args, $rest_arg; + + + + if (s == null) s = nil;; + + $post_args = Opal.slice.call(arguments, 1); + + $rest_arg = $post_args;; + return s;}, -2); + decimal = "\\d+(?:_\\d+)*"; + binary = "b[01]+(?:_[01]+)*"; + hex = "x[\\da-f]+(?:_[\\da-f]+)*"; + octal = "0(?:[0-7]+(?:_[0-7]+)*|" + (binary) + "|" + (hex) + ")?"; + integer = "" + (octal) + "|" + (decimal); + $send(self, 'accept', [$$('Integer'), $regexp(["\\A[-+]?(?:", integer, ")\\z"], 'i')], function $OptionParser$76(s){var self = $OptionParser$76.$$s == null ? this : $OptionParser$76.$$s; + + + + if (s == null) s = nil;; + if ($truthy(s)) { + + try { + return self.$Integer(s) + } catch ($err) { + if (Opal.rescue($err, [$$('ArgumentError')])) { + try { + return self.$raise($$$($$('OptionParser'), 'InvalidArgument'), s) + } finally { Opal.pop_exception(); } + } else { throw $err; } + }; + } else { + return nil + };}, {$$arity: 1, $$s: self, $$has_trailing_comma_in_args: true}); + float$ = "(?:" + (decimal) + "(?=(.)?)(?:\\.(?:" + (decimal) + ")?)?|\\." + (decimal) + ")(?:E[-+]?" + (decimal) + ")?"; + floatpat = $regexp(["\\A[-+]?", float$, "\\z"], 'i'); + $send(self, 'accept', [$$('Float'), floatpat], function $OptionParser$77(s){ + + + if (s == null) s = nil;; + if ($truthy(s)) { + return s.$to_f() + } else { + return nil + };}, {$$arity: 1, $$has_trailing_comma_in_args: true}); + real = "[-+]?(?:" + (octal) + "|" + (float$) + ")"; + $send(self, 'accept', [$$('Numeric'), $regexp(["\\A(", real, ")(?:/(", real, "))?\\z"], 'i')], function $OptionParser$78(s, d, f, n){var self = $OptionParser$78.$$s == null ? this : $OptionParser$78.$$s; + + + + if (s == null) s = nil;; + + if (d == null) d = nil;; + + if (f == null) f = nil;; + + if (n == null) n = nil;; + if ($truthy(n)) { + return self.$Rational(d, n) + } else if ($truthy(f)) { + return self.$Float(s) + } else { + return self.$Integer(s) + };}, {$$arity: 4, $$s: self, $$has_trailing_comma_in_args: true}); + $const_set($nesting[0], 'DecimalInteger', $regexp(["\\A[-+]?", decimal, "\\z"], 'i')); + $send(self, 'accept', [$$('DecimalInteger'), $$('DecimalInteger')], function $OptionParser$79(s){var self = $OptionParser$79.$$s == null ? this : $OptionParser$79.$$s; + + + + if (s == null) s = nil;; + if ($truthy(s)) { + + try { + return self.$Integer(s, 10) + } catch ($err) { + if (Opal.rescue($err, [$$('ArgumentError')])) { + try { + return self.$raise($$$($$('OptionParser'), 'InvalidArgument'), s) + } finally { Opal.pop_exception(); } + } else { throw $err; } + }; + } else { + return nil + };}, {$$arity: 1, $$s: self, $$has_trailing_comma_in_args: true}); + $const_set($nesting[0], 'OctalInteger', $regexp(["\\A[-+]?(?:[0-7]+(?:_[0-7]+)*|0(?:", binary, "|", hex, "))\\z"], 'i')); + $send(self, 'accept', [$$('OctalInteger'), $$('OctalInteger')], function $OptionParser$80(s){var self = $OptionParser$80.$$s == null ? this : $OptionParser$80.$$s; + + + + if (s == null) s = nil;; + if ($truthy(s)) { + + try { + return self.$Integer(s, 8) + } catch ($err) { + if (Opal.rescue($err, [$$('ArgumentError')])) { + try { + return self.$raise($$$($$('OptionParser'), 'InvalidArgument'), s) + } finally { Opal.pop_exception(); } + } else { throw $err; } + }; + } else { + return nil + };}, {$$arity: 1, $$s: self, $$has_trailing_comma_in_args: true}); + $const_set($nesting[0], 'DecimalNumeric', floatpat); + $send(self, 'accept', [$$('DecimalNumeric'), floatpat], function $OptionParser$81(s, f){var self = $OptionParser$81.$$s == null ? this : $OptionParser$81.$$s; + + + + if (s == null) s = nil;; + + if (f == null) f = nil;; + if ($truthy(s)) { + + try { + if ($truthy(f)) { + return self.$Float(s) + } else { + return self.$Integer(s) + } + } catch ($err) { + if (Opal.rescue($err, [$$('ArgumentError')])) { + try { + return self.$raise($$$($$('OptionParser'), 'InvalidArgument'), s) + } finally { Opal.pop_exception(); } + } else { throw $err; } + }; + } else { + return nil + };}, {$$arity: 2, $$s: self}); + yesno = $$('CompletingHash').$new(); + $send(["-", "no", "false"], 'each', [], function $OptionParser$82(el){ + + + if (el == null) el = nil;; + $writer = [el, false]; + $send(yesno, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 1); + $send(["+", "yes", "true"], 'each', [], function $OptionParser$83(el){ + + + if (el == null) el = nil;; + $writer = [el, true]; + $send(yesno, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 1); + + $writer = ["nil", false]; + $send(yesno, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + $send(self, 'accept', [$$('TrueClass'), yesno], function $OptionParser$84(arg, val){var $ret_or_2 = nil; + + + + if (arg == null) arg = nil;; + + if (val == null) val = nil;; + if ($truthy(($ret_or_2 = val['$nil?']()))) { + return $ret_or_2 + } else { + return val + };}, 2); + $send(self, 'accept', [$$('FalseClass'), yesno], function $OptionParser$85(arg, val){var $ret_or_2 = nil; + + + + if (arg == null) arg = nil;; + + if (val == null) val = nil;; + if ($truthy(($ret_or_2 = val['$nil?']()['$!']()))) { + return val + } else { + return $ret_or_2 + };}, 2); + $send(self, 'accept', [$$('Array')], function $OptionParser$86(s){ + + + if (s == null) s = nil;; + if ($truthy(s)) { + s = $send(s.$split(","), 'collect', [], function $$87(ss){ + + + if (ss == null) ss = nil;; + if ($truthy(ss['$empty?']())) { + return nil + } else { + return ss + };}, 1) + }; + return s;}, {$$arity: 1, $$has_trailing_comma_in_args: true}); + $send(self, 'accept', [$$('Regexp'), /^\/((?:\\.|[^\\])*)\/([[:alpha:]]+)?$|.*/], function $OptionParser$88(all, s, o){var f = nil, k = nil, $ret_or_2 = nil; + + + + if (all == null) all = nil;; + + if (s == null) s = nil;; + + if (o == null) o = nil;; + f = 0; + if ($truthy(o)) { + + if ($truthy(/i/['$=~'](o))) { + f = f['$|']($$$($$('Regexp'), 'IGNORECASE')) + }; + if ($truthy(/m/['$=~'](o))) { + f = f['$|']($$$($$('Regexp'), 'MULTILINE')) + }; + if ($truthy(/x/['$=~'](o))) { + f = f['$|']($$$($$('Regexp'), 'EXTENDED')) + }; + k = o.$delete("imx"); + if ($truthy(k['$empty?']())) { + k = nil + }; + }; + return $$('Regexp').$new(($truthy(($ret_or_2 = s)) ? ($ret_or_2) : (all)), f, k);}, 3); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'ParseError'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.args = $proto.reason = $proto.arg0 = nil; + + $const_set($nesting[0], 'Reason', "parse error"); + + $def(self, '$initialize', function $$initialize($a, $b) { + var $post_args, $kwargs, args, additional, $c, $d, self = this; + + + + $post_args = Opal.slice.call(arguments); + + $kwargs = Opal.extract_kwargs($post_args); + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + args = $post_args;; + + additional = $kwargs.$$smap["additional"]; + if (additional == null) additional = nil; + self.additional = additional; + $d = args, $c = $to_ary($d), (self.arg0 = ($c[0] == null ? nil : $c[0])), $d; + self.args = args; + return (self.reason = nil); + }, -1); + self.$attr_reader("args"); + self.$attr_writer("reason"); + self.$attr_accessor("additional"); + + $def(self, '$recover', function $$recover(argv) { + var self = this, $writer = nil; + + + + $writer = [0, 0, self.args]; + $send(argv, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return argv; + }, 1); + $defs(self, '$filter_backtrace', function $$filter_backtrace(array) { + if ($gvars.DEBUG == null) $gvars.DEBUG = nil; + + + if (!$truthy($gvars.DEBUG)) { + $send(array, 'delete_if', [], $regexp(["\\A", $$('Regexp').$quote($enc("./optparse.rb", "US-ASCII")), ":"]).$method("=~").$to_proc()) + }; + return array; + }, 1); + + $def(self, '$set_backtrace', function $$set_backtrace(array) { + var $yield = $$set_backtrace.$$p || nil, self = this; + + delete $$set_backtrace.$$p; + return $send2(self, $find_super(self, 'set_backtrace', $$set_backtrace, false, true), 'set_backtrace', [self.$class().$filter_backtrace(array)], null) + }, 1); + + $def(self, '$set_option', function $$set_option(opt, eq) { + var self = this, $writer = nil; + + + if ($truthy(eq)) { + + $writer = [0, opt]; + $send(self.args, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + } else { + self.args.$unshift(opt) + }; + return self; + }, 2); + + $def(self, '$reason', function $$reason() { + var self = this, $ret_or_2 = nil; + + if ($truthy(($ret_or_2 = self.reason))) { + return $ret_or_2 + } else { + return $$$(self.$class(), 'Reason') + } + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return "#<" + (self.$class()) + ": " + (self.$args().$join(" ")) + ">" + }, 0); + + $def(self, '$message', function $$message() { + var self = this; + + return "" + (self.$reason()) + ": " + (self.$args().$join(" ")) + (($truthy(self.$additional()) ? (self.$additional()['$[]'](self.arg0)) : nil)) + }, 0); + return $alias(self, "to_s", "message"); + })($nesting[0], $$('RuntimeError'), $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'AmbiguousOption'); + + + return self.$const_set("Reason", "ambiguous option") + })($nesting[0], $$('ParseError')); + (function($base, $super) { + var self = $klass($base, $super, 'NeedlessArgument'); + + + return self.$const_set("Reason", "needless argument") + })($nesting[0], $$('ParseError')); + (function($base, $super) { + var self = $klass($base, $super, 'MissingArgument'); + + + return self.$const_set("Reason", "missing argument") + })($nesting[0], $$('ParseError')); + (function($base, $super) { + var self = $klass($base, $super, 'InvalidOption'); + + + return self.$const_set("Reason", "invalid option") + })($nesting[0], $$('ParseError')); + (function($base, $super) { + var self = $klass($base, $super, 'InvalidArgument'); + + + return self.$const_set("Reason", "invalid argument") + })($nesting[0], $$('ParseError')); + (function($base, $super) { + var self = $klass($base, $super, 'AmbiguousArgument'); + + + return self.$const_set("Reason", "ambiguous argument") + })($nesting[0], $$('InvalidArgument')); + (function($base, $parent_nesting) { + var self = $module($base, 'Arguable'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$options=', function $Arguable_options$eq$89(opt) { + var self = this; + + if ($truthy((self.optparse = opt))) { + return nil + } else { + return (function(self, $parent_nesting) { + + + self.$undef_method("options"); + return self.$undef_method("options="); + })(Opal.get_singleton_class(self), $nesting) + } + }, 1); + + $def(self, '$options', function $$options() { + var $yield = $$options.$$p || nil, self = this, $ret_or_2 = nil, $writer = nil; + if (self.optparse == null) self.optparse = nil; + if ($gvars["!"] == null) $gvars["!"] = nil; + + delete $$options.$$p; + + self.optparse = ($truthy(($ret_or_2 = self.optparse)) ? ($ret_or_2) : ($$('OptionParser').$new())); + + $writer = [self]; + $send(self.optparse, 'default_argv=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + if ($truthy(($ret_or_2 = ($yield !== nil)))) { + $ret_or_2 + } else { + + return self.optparse; + }; + + try { + return Opal.yield1($yield, self.optparse); + } catch ($err) { + if (Opal.rescue($err, [$$('ParseError')])) { + try { + + self.optparse.$warn($gvars["!"]); + return nil; + } finally { Opal.pop_exception(); } + } else { throw $err; } + };; + }, 0); + + $def(self, '$order!', function $Arguable_order$excl$90() { + var blk = $Arguable_order$excl$90.$$p || nil, self = this; + + delete $Arguable_order$excl$90.$$p; + + ; + return $send(self.$options(), 'order!', [self], blk.$to_proc()); + }, 0); + + $def(self, '$permute!', function $Arguable_permute$excl$91() { + var self = this; + + return self.$options()['$permute!'](self) + }, 0); + + $def(self, '$parse!', function $Arguable_parse$excl$92() { + var self = this; + + return self.$options()['$parse!'](self) + }, 0); + + $def(self, '$getopts', function $$getopts($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send(self.$options(), 'getopts', [self].concat($to_a(args))); + }, -1); + $defs(self, '$extend_object', function $$extend_object(obj) { + var $yield = $$extend_object.$$p || nil, self = this; + + delete $$extend_object.$$p; + + $send2(self, $find_super(self, 'extend_object', $$extend_object, false, true), 'extend_object', [obj], $yield); + return $send(obj, 'instance_eval', [], function $$93(){var self = $$93.$$s == null ? this : $$93.$$s; + + return (self.optparse = nil)}, {$$arity: 0, $$s: self}); + }, 1); + return $def(self, '$initialize', function $$initialize($a) { + var $post_args, args, $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', $to_a(args), $yield); + return (self.optparse = nil); + }, -1); + })($nesting[0], $nesting); + return (function($base, $parent_nesting) { + var self = $module($base, 'Acceptables'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$const_set("DecimalInteger", $$$($$('OptionParser'), 'DecimalInteger')); + self.$const_set("OctalInteger", $$$($$('OptionParser'), 'OctalInteger')); + return self.$const_set("DecimalNumeric", $$$($$('OptionParser'), 'DecimalNumeric')); + })($nesting[0], $nesting); + })($nesting[0], null, $nesting); + $$('ARGV').$extend($$$($$('OptionParser'), 'Arguable')); + return $const_set($nesting[0], 'OptParse', $$('OptionParser')); +}; diff --git a/opal/1.4.1/optparse.min.js b/opal/1.4.1/optparse.min.js new file mode 100644 index 00000000..ba40b50f --- /dev/null +++ b/opal/1.4.1/optparse.min.js @@ -0,0 +1 @@ +Opal.modules["optparse/version"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$send=Opal.send,$eqeq=Opal.eqeq,$Object=Opal.Object,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$def=Opal.def,$regexp=Opal.regexp,$neqeq=Opal.neqeq;return Opal.add_stubs("program_name,options,proc,to_s,==,===,join,<<,find,const_defined?,const_get,puts,[],size,search_const,call,intern,each,inject,split,raise,grep,constants,shift,!="),function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$show_version",(function($a){var pkgs,self=this,progname=nil,result=nil,show=nil;return pkgs=Opal.slice.call(arguments),progname=$$("ARGV").$options().$program_name(),result=!1,show=$send(self,"proc",[],(function $$1(klass,cname,version){var self=null==$$1.$$s?this:$$1.$$s,str=nil;return null==klass&&(klass=nil),null==cname&&(cname=nil),null==version&&(version=nil),str=progname.$to_s(),$eqeq(klass,$Object)&&$eqeq(cname,"VERSION")||($eqeqeq($$("Array"),version)&&(version=version.$join(".")),$eqeq(klass,$$("Object"))||str["$<<"](": "+klass),str["$<<"](" version "+version)),$send(["Release","RELEASE"],"find",[],(function(rel){return null==rel&&(rel=nil),$truthy(klass["$const_defined?"](rel))?str["$<<"](" ("+klass.$const_get(rel)+")"):nil}),1),self.$puts(str),result=!0}),{$$arity:3,$$s:self}),$eqeq(pkgs.$size(),1)&&$eqeq(pkgs["$[]"](0),"all")?$send(self,"search_const",[$Object,/^V(?:ERSION|ersion)$/],(function(klass,cname,version){return null==klass&&(klass=nil),null==cname&&(cname=nil),null==version&&(version=nil),$eqeq(cname["$[]"](1),"e")&&$truthy(klass["$const_defined?"]("Version"))?nil:show.$call(klass,cname.$intern(),version)}),3):$send(pkgs,"each",[],(function(pkg){var v=nil,n=nil;null==pkg&&(pkg=nil);try{return pkg=$send(pkg.$split(/::|\//),"inject",[$Object],(function(m,c){return null==m&&(m=nil),null==c&&(c=nil),m.$const_get(c)}),2),v=$truthy(pkg["$const_defined?"]("Version"))?pkg.$const_get(n="Version"):$truthy(pkg["$const_defined?"]("VERSION"))?pkg.$const_get(n="VERSION"):(n=nil,"unknown"),show.$call(pkg,n,v)}catch($err){if(!Opal.rescue($err,[$$("NameError")]))throw $err;try{return nil}finally{Opal.pop_exception()}}}),1),result}),-1),$def(self,"$each_const",(function(path,base){return null==base&&(base=$Object),$send(path.$split(/::|\//),"inject",[base],(function $$6(klass,name){var self=null==$$6.$$s?this:$$6.$$s;return null==klass&&(klass=nil),null==name&&(name=nil),$eqeqeq($$("Module"),klass)||self.$raise($$("NameError"),path),$send(klass.$constants(),"grep",[$regexp([name],"i")],(function(c){return null==c&&(c=nil),$truthy(klass["$const_defined?"](c))?klass.$const_get(c):nil}),1)}),{$$arity:2,$$s:this})}),-2),$def(self,"$search_const",(function $$search_const(klass,name){var $yield=$$search_const.$$p||nil,klasses=nil;for(delete $$search_const.$$p,klasses=[klass];$truthy(klass=klasses.$shift());)$send(klass.$constants(),"each",[],(function(cname){var const$;return null==cname&&(cname=nil),$truthy(klass["$const_defined?"](cname))?(const$=klass.$const_get(cname),$eqeqeq(name,cname)&&Opal.yieldX($yield,[klass,cname,const$]),$eqeqeq($$("Module"),const$)&&$neqeq(const$,$Object)?klasses["$<<"](const$):nil):nil}),1)}),2)}(Opal.get_singleton_class($$("OptionParser")),$nesting)},Opal.modules.shellwords=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$rb_plus=Opal.rb_plus,$send=Opal.send,$to_ary=Opal.to_ary,$truthy=Opal.truthy,$def=Opal.def,$alias=Opal.alias,$klass=Opal.klass;return Opal.add_stubs("+,new,scan,raise,inspect,gsub,<<,module_function,to_s,empty?,dup,join,map,shellescape,split,escape"),function($base,$parent_nesting){var self=$module($base,"Shellwords"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$shellsplit",(function(line){var words=nil,field=nil;return line=$rb_plus(line," "),words=[],field=$$("String").$new(),$send(line,"scan",[/\s*(?:([^\s\\\'\"]+)|'([^\']*)'|"((?:[^\"\\]|\\.)*)"|(\\.?)|(\S))(\r?\n?\Z|\s)?/m],(function $$1($mlhs_tmp1){var $a,word,sq,garbage,sep,$ret_or_1,$ret_or_2,self=null==$$1.$$s?this:$$1.$$s,dq=nil,esc=nil,$ret_or_3=nil;return null==$mlhs_tmp1&&($mlhs_tmp1=nil),word=null==($a=$to_ary($mlhs_tmp1))[0]?nil:$a[0],sq=null==$a[1]?nil:$a[1],dq=null==$a[2]?nil:$a[2],esc=null==$a[3]?nil:$a[3],garbage=null==$a[4]?nil:$a[4],sep=null==$a[5]?nil:$a[5],$truthy(garbage)&&self.$raise($$("ArgumentError"),"Unmatched quote: "+line.$inspect()),field=$rb_plus(field,$truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=word)?$ret_or_3:sq)?$ret_or_2:$truthy($ret_or_3=dq)?dq.$gsub(/\\([$`"\\\n])/,"\\1"):$ret_or_3)?$ret_or_1:esc.$gsub(/\\(.)/,"\\1")),$truthy(sep)?(words["$<<"](field),field=$$("String").$new()):nil}),{$$arity:1,$$s:this,$$has_top_level_mlhs_arg:!0}),words}),1),$alias(self,"shellwords","shellsplit"),self.$module_function("shellsplit","shellwords"),function(self,$parent_nesting){$alias(self,"split","shellsplit")}(Opal.get_singleton_class(self)),$def(self,"$shellescape",(function(str){return str=str.$to_s(),$truthy(str["$empty?"]())?"''".$dup():str=(str=(str=str.$dup()).$gsub(/[^A-Za-z0-9_\-.,:+\/@\n]/,"\\\\\\&")).$gsub(/\n/,"'\n'")}),1),self.$module_function("shellescape"),function(self,$parent_nesting){$alias(self,"escape","shellescape")}(Opal.get_singleton_class(self)),$def(self,"$shelljoin",(function(array){return $send(array,"map",[],(function $$2(arg){return null==arg&&(arg=nil),(null==$$2.$$s?this:$$2.$$s).$shellescape(arg)}),{$$arity:1,$$s:this}).$join(" ")}),1),self.$module_function("shelljoin"),function(self,$parent_nesting){$alias(self,"join","shelljoin")}(Opal.get_singleton_class(self))}($nesting[0],$nesting),function($base,$super,$parent_nesting){var self=$klass($base,null,"String"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$shellsplit",(function(){return $$("Shellwords").$split(this)}),0),$def(self,"$shellescape",(function(){return $$("Shellwords").$escape(this)}),0)}($nesting[0],0,$nesting),function($base,$super,$parent_nesting){var self=$klass($base,null,"Array"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$shelljoin",(function(){return $$("Shellwords").$join(this)}),0)}($nesting[0],0,$nesting)},Opal.modules.optparse=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$const_set=Opal.const_set,$module=Opal.module,$rb_plus=Opal.rb_plus,$defs=Opal.defs,$truthy=Opal.truthy,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$def=Opal.def,$eqeq=Opal.eqeq,$to_ary=Opal.to_ary,$rb_gt=Opal.rb_gt,$to_a=Opal.to_a,$rb_ge=Opal.rb_ge,$hash2=Opal.hash2,$rb_minus=Opal.rb_minus,$rb_lt=Opal.rb_lt,$rb_times=Opal.rb_times,$not=Opal.not,$slice=Opal.slice,$gvars=Opal.gvars,$alias=Opal.alias,$send2=Opal.send2,$find_super=Opal.find_super,$rb_le=Opal.rb_le,$neqeq=Opal.neqeq,$lambda=Opal.lambda,$regexp=Opal.regexp,$enc=Opal.enc;return Opal.add_stubs("freeze,new,+,gsub,quote,regexp,call,===,id2name,empty?,<<,candidate,to_proc,method,public,sort_by,size,==,[],>,shift,each,rindex,throw,include,attr_reader,>=,incompatible_argument_styles,raise,filter_backtrace,caller,pattern,match,to_a,length,private,conv,proc,block,-,fetch,[]=,join,dup,desc,arg,<,+@,*,sub,to_i,max,collect,!,ljust,to_s,=~,first,long,short,last_match,conv_arg,parse_arg,respond_to?,delete,update,invert,delete_if,unshift,push,__send__,complete,keys,list,reverse_each,summarize,concat,reverse,each_line,add_banner,compsys,catch,basename,visit,puts,help,exit,require,show_version,split,abort,program_name,ver,instance_eval,nonzero?,inc,class,add_officious,base,terminate,accept,top,reject,attr_writer,attr_accessor,version,release,pop,index,banner,<=,search,notwice,!=,any?,guess,tr,downcase,append,make_switch,define,prepend,define_head,define_tail,order!,default_argv,to_sym,parse_in_order,include?,require_exact,set_option,parse,switch_name,delete_prefix,match_nonswitch?,permute!,parse!,scan,compact,getopts,curry,select!,is_a?,message_for,formatter,&,correct,map,map!,load,expand_path,readlines,upcase,shellwords,nil?,Integer,to_f,Rational,Float,|,args,reason,additional,const_set,undef_method,default_argv=,warn,options,extend"),function($base,$super,$parent_nesting){var decimal,hex,octal,float$,floatpat,real,yesno,self=$klass($base,null,"OptionParser"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$writer=nil,$proto=self.$$prototype;$proto.banner=$proto.program_name=$proto.version=$proto.release=$proto.stack=$proto.summary_width=$proto.summary_indent=nil,$const_set($$("OptionParser"),"Version","0.1.1"),$const_set($nesting[0],"NoArgument",[$const_set($nesting[0],"NO_ARGUMENT","NONE"),nil].$freeze()),$const_set($nesting[0],"RequiredArgument",[$const_set($nesting[0],"REQUIRED_ARGUMENT","REQUIRED"),!0].$freeze()),$const_set($nesting[0],"OptionalArgument",[$const_set($nesting[0],"OPTIONAL_ARGUMENT","OPTIONAL"),!1].$freeze()),function($base,$parent_nesting){var self=$module($base,"Completion"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$defs(self,"$regexp",(function(key,icase){return $$("Regexp").$new($rb_plus("\\A",$$("Regexp").$quote(key).$gsub(/\w+\b/,"\\&\\w*")),icase)}),2),$defs(self,"$candidate",(function $$candidate(key,icase,pat){var block=$$candidate.$$p||nil,$ret_or_1=nil,candidates=nil;return delete $$candidate.$$p,null==icase&&(icase=!1),null==pat&&(pat=nil),pat=$truthy($ret_or_1=pat)?$ret_or_1:$$("Completion").$regexp(key,icase),candidates=[],$send(block,"call",[],(function(k,$a){var v,$b,$c,$d,$e,kn=nil;return null==k&&(k=nil),v=Opal.slice.call(arguments,1),$truthy($ret_or_1=$eqeqeq($$("Regexp"),k)?(kn="",k["$==="](key)):(kn=$truthy(($b=k)&&($c=$b)&&($d=$c)&&(($e=$d.$id2name)&&!$e.$$stub||$d["$respond_to_missing?"]("id2name"))?"method":nil)?k.$id2name():k,pat["$==="](kn)))?($truthy(v["$empty?"]())&&v["$<<"](k),candidates["$<<"]([k,v,kn])):nil}),-2),candidates}),-2),$def(self,"$candidate",(function(key,icase,pat){return null==icase&&(icase=!1),null==pat&&(pat=nil),$send($$("Completion"),"candidate",[key,icase,pat],this.$method("each").$to_proc())}),-2),self.$public(),$def(self,"$complete",(function $$complete(key,icase,pat){var $a,$b,$yield=$$complete.$$p||nil,candidates=nil,canon=nil,sw=nil,cn=nil;return delete $$complete.$$p,null==icase&&(icase=!1),null==pat&&(pat=nil),candidates=$send($send(this,"candidate",[key,icase,pat],this.$method("each").$to_proc()),"sort_by",[],(function(k,v,kn){return null==k&&(k=nil),null==v&&(v=nil),null==kn&&(kn=nil),kn.$size()}),3),$eqeq(candidates.$size(),1)?($b=candidates["$[]"](0),$a=$to_ary($b),canon=null==$a[0]?nil:$a[0],sw=null==$a[1]?nil:$a[1]):$truthy($rb_gt(candidates.$size(),1))&&($b=candidates.$shift(),$a=$to_ary($b),canon=null==$a[0]?nil:$a[0],sw=null==$a[1]?nil:$a[1],cn=null==$a[2]?nil:$a[2],$send(candidates,"each",[],(function $$3(k,v,kn){var $c,self=null==$$3.$$s?this:$$3.$$s;if(null==k&&(k=nil),null==v&&(v=nil),null==kn&&(kn=nil),$eqeq(sw,v))return nil;if($eqeqeq($$("String"),cn)&&$eqeqeq($$("String"),kn)){if($truthy(cn.$rindex(kn,0)))return canon=($c=[k,v,kn])[0],sw=$c[1],cn=$c[2],nil;if($truthy(kn.$rindex(cn,0)))return nil}return self.$throw("ambiguous",key)}),{$$arity:3,$$s:this})),$truthy(canon)?$truthy($yield!==nil)?Opal.yieldX($yield,[key].concat($to_a(sw))):[key].concat($to_a(sw)):nil}),-2),$def(self,"$convert",(function($a,$b,$c){var $post_args,opt,val;return($post_args=Opal.slice.call(arguments)).length>0&&(opt=$post_args.shift()),null==opt&&(opt=nil),$post_args.length>0&&(val=$post_args.shift()),null==val&&(val=nil),$post_args,val}),-1)}($nesting[0],$nesting),function($base,$super,$parent_nesting){var self=$klass($base,$super,"OptionMap"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$include($$("Completion"))}($nesting[0],$$("Hash"),$nesting),function($base,$super,$parent_nesting){var self=$klass($base,null,"Switch"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.short=$proto.long=$proto.pattern=nil,self.$attr_reader("pattern","conv","short","long","arg","desc","block"),$defs(self,"$guess",(function(arg){var $ret_or_1=nil,t=nil;return t=$eqeqeq("",$ret_or_1=arg)?this:$eqeqeq(/^=?\[/,$ret_or_1)?$$$($$("Switch"),"OptionalArgument"):$eqeqeq(/^\s+\[/,$ret_or_1)?$$$($$("Switch"),"PlacedArgument"):$$$($$("Switch"),"RequiredArgument"),$truthy($ret_or_1=$rb_ge(this,t))||this.$incompatible_argument_styles(arg,t),t}),1),$defs(self,"$incompatible_argument_styles",(function(arg,t){return this.$raise($$("ArgumentError"),arg+": incompatible argument styles\n "+this+", "+t,$$("ParseError").$filter_backtrace(this.$caller(2)))}),2),$defs(self,"$pattern",(function(){return $$("NilClass")}),0),$def(self,"$initialize",(function $$initialize(pattern,conv,short$,long$,arg,desc,block){var $a,$ret_or_1,_block=$$initialize.$$p||nil;return delete $$initialize.$$p,null==pattern&&(pattern=nil),null==conv&&(conv=nil),null==short$&&(short$=nil),null==long$&&(long$=nil),null==arg&&(arg=nil),null==desc&&(desc=$truthy(short$)||$truthy(long$)?[]:nil),null==block&&(block=nil),$eqeqeq($$("Array"),pattern)&&this.$raise(),$a=[pattern,conv,short$,long$,arg,desc,block=$truthy($ret_or_1=block)?$ret_or_1:_block],this.pattern=$a[0],this.conv=$a[1],this.short=$a[2],this.long=$a[3],this.arg=$a[4],this.desc=$a[5],this.block=$a[6],$a}),-1),$def(self,"$parse_arg",(function $$parse_arg(arg){var $yield=$$parse_arg.$$p||nil,m=nil,s=nil;if(delete $$parse_arg.$$p,!$truthy(this.$pattern()))return[nil,[arg]];if(!$truthy(m=this.$pattern().$match(arg)))return Opal.yieldX($yield,[$$("InvalidArgument"),arg]),[arg,[]];if($eqeqeq($$("String"),m))m=[s=m];else if(s=(m=m.$to_a())["$[]"](0),!$eqeqeq($$("String"),s))return[nil,m];return $truthy(arg.$rindex(s,0))||this.$raise($$("InvalidArgument"),arg),$eqeq(s.$length(),arg.$length())?[nil,m]:(Opal.yieldX($yield,[$$("InvalidArgument"),arg]),[arg["$[]"](Opal.Range.$new(s.$length(),-1,!1)),m])}),1),self.$private("parse_arg"),$def(self,"$conv_arg",(function(arg,val){return null==val&&(val=[]),val=$truthy(this.$conv())?$send(this.$conv(),"call",$to_a(val)):$send($send(this,"proc",[],(function(v){return null==v&&(v=nil),v}),1),"call",$to_a(val)),[arg,this.$block(),val]}),-2),self.$private("conv_arg"),$def(self,"$summarize",(function $$summarize(sdone,ldone,width,max,indent){var $a,$yield=$$summarize.$$p||nil,sopts=nil,lopts=nil,left=nil,right=nil,s=nil,l=nil,$ret_or_1=nil,$ret_or_2=nil,$writer=nil,mlen=nil,r=nil;if(delete $$summarize.$$p,null==sdone&&(sdone=$hash2([],{})),null==ldone&&(ldone=$hash2([],{})),null==width&&(width=1),null==max&&(max=$rb_minus(width,1)),null==indent&&(indent=""),sopts=($a=[[],[],nil])[0],lopts=$a[1],$truthy(this.short)&&$send(this.short,"each",[],(function(s){var $writer;return null==s&&(s=nil),$send(sdone,"fetch",[s],(function(){return sopts["$<<"](s)}),0),$send(sdone,"[]=",$to_a($writer=[s,!0])),$writer[$rb_minus($writer.length,1)]}),1),$truthy(this.long)&&$send(this.long,"each",[],(function(s){var $writer;return null==s&&(s=nil),$send(ldone,"fetch",[s],(function(){return lopts["$<<"](s)}),0),$send(ldone,"[]=",$to_a($writer=[s,!0])),$writer[$rb_minus($writer.length,1)]}),1),$truthy(sopts["$empty?"]())&&$truthy(lopts["$empty?"]()))return nil;for(left=[sopts.$join(", ")],right=this.$desc().$dup();$truthy(s=lopts.$shift());)l=$rb_plus(left["$[]"](-1).$length(),s.$length()),$eqeq(left.$size(),1)&&$truthy(this.$arg())&&(l=$rb_plus(l,this.$arg().$length())),$truthy($ret_or_1=$truthy($ret_or_2=$rb_lt(l,max))?$ret_or_2:sopts["$empty?"]())||left["$<<"](""["$+@"]()),$writer=[-1,$rb_plus(left["$[]"](-1),$rb_plus($truthy(left["$[]"](-1)["$empty?"]())?$rb_times(" ",4):", ",s))],$send(left,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)];for($truthy(this.$arg())&&($writer=[0,$rb_plus(left["$[]"](0),$truthy(left["$[]"](1))?$rb_plus(this.$arg().$sub(/^(\[?)=/,"\\1"),","):this.$arg())],$send(left,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),mlen=$send(left,"collect",[],"length".$to_proc()).$max().$to_i();$truthy($truthy($ret_or_1=$rb_gt(mlen,width))?l=left.$shift():$ret_or_1);)$eqeq(l.$length(),mlen)&&(mlen=$send(left,"collect",[],"length".$to_proc()).$max().$to_i()),$truthy($rb_lt(l.$length(),width))&&$truthy(r=right["$[]"](0))&&$not(r["$empty?"]())&&(l=$rb_plus($rb_plus(l.$to_s().$ljust(width)," "),r),right.$shift()),Opal.yield1($yield,$rb_plus(indent,l));for(;$truthy((l=left.$shift(),r=right.$shift(),$truthy($ret_or_1=l)?$ret_or_1:r));)$truthy(r)&&$not(r["$empty?"]())&&(l=$rb_plus($rb_plus(l.$to_s().$ljust(width)," "),r)),Opal.yield1($yield,$rb_plus(indent,l));return this}),-1),$def(self,"$add_banner",(function(to){var s=nil;return $truthy(this.short)||$truthy(this.long)||(s=this.$desc().$join(),$truthy(s["$empty?"]())||to["$<<"]($rb_plus($rb_plus(" [",s),"]..."))),to}),1),$def(self,"$match_nonswitch?",(function(str){return $truthy(this.short)||$truthy(this.long)?nil:this.pattern["$=~"](str)}),1),$def(self,"$switch_name",(function(){var $ret_or_1;return($truthy($ret_or_1=this.$long().$first())?$ret_or_1:this.$short().$first()).$sub(/^-+(?:\[no-\])?/,"")}),0),$def(self,"$compsys",(function $$compsys(sdone,ldone){var $a,$yield=$$compsys.$$p||nil,sopts=nil,lopts=nil;return delete $$compsys.$$p,sopts=($a=[[],[]])[0],lopts=$a[1],$truthy(this.short)&&$send(this.short,"each",[],(function(s){var $writer;return null==s&&(s=nil),$send(sdone,"fetch",[s],(function(){return sopts["$<<"](s)}),0),$send(sdone,"[]=",$to_a($writer=[s,!0])),$writer[$rb_minus($writer.length,1)]}),1),$truthy(this.long)&&$send(this.long,"each",[],(function(s){var $writer;return null==s&&(s=nil),$send(ldone,"fetch",[s],(function(){return lopts["$<<"](s)}),0),$send(ldone,"[]=",$to_a($writer=[s,!0])),$writer[$rb_minus($writer.length,1)]}),1),$truthy(sopts["$empty?"]())&&$truthy(lopts["$empty?"]())?nil:$send($rb_plus(sopts,lopts),"each",[],(function $$14(opt){var self=null==$$14.$$s?this:$$14.$$s,o=nil;return null==opt&&(opt=nil),$truthy(/^--\[no-\](.+)$/["$=~"](opt))?(o=$$("Regexp").$last_match(1),Opal.yieldX($yield,["--"+o,self.$desc().$join("")]),Opal.yieldX($yield,["--no-"+o,self.$desc().$join("")])):Opal.yieldX($yield,[opt.$to_s(),self.$desc().$join("")])}),{$$arity:1,$$s:this})}),2),function($base,$super,$parent_nesting){var self=$klass($base,$super,"NoArgument"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$parse",(function $$parse(arg,argv){var $yield=$$parse.$$p||nil;return delete $$parse.$$p,$truthy(arg)&&Opal.yieldX($yield,[$$("NeedlessArgument"),arg]),this.$conv_arg(arg)}),2),$defs(self,"$incompatible_argument_styles",(function($a){return Opal.slice.call(arguments),nil}),-1),$defs(self,"$pattern",(function(){return $$("Object")}),0)}($nesting[0],self,$nesting),function($base,$super,$parent_nesting){var self=$klass($base,$super,"RequiredArgument"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$parse",(function(arg,argv){return $truthy(arg)||($truthy(argv["$empty?"]())&&this.$raise($$("MissingArgument")),arg=argv.$shift()),$send(this,"conv_arg",$to_a($send(this,"parse_arg",[arg],this.$method("raise").$to_proc())))}),2)}($nesting[0],self,$nesting),function($base,$super){var self=$klass($base,$super,"OptionalArgument");$def(self,"$parse",(function $$parse(arg,argv){var error=$$parse.$$p||nil;return delete $$parse.$$p,$truthy(arg)?$send(this,"conv_arg",$to_a($send(this,"parse_arg",[arg],error.$to_proc()))):this.$conv_arg(arg)}),2)}($nesting[0],self),function($base,$super){var self=$klass($base,$super,"PlacedArgument");$def(self,"$parse",(function $$parse(arg,argv){var opt,error=$$parse.$$p||nil,val=nil,$writer=nil;return delete $$parse.$$p,$not(val=arg)&&($truthy(argv["$empty?"]())||$truthy(/^-/["$=~"](val=argv["$[]"](0))))?[nil,this.$block(),nil]:(opt=(val=$send(this,"parse_arg",[val],error.$to_proc()))["$[]"](1),val=$send(this,"conv_arg",$to_a(val)),$truthy(opt)&&$not(arg)?argv.$shift():($send(val,"[]=",$to_a($writer=[0,nil])),$writer[$rb_minus($writer.length,1)]),val)}),2)}($nesting[0],self)}($nesting[0],0,$nesting),function($base,$super,$parent_nesting){var self=$klass($base,null,"List"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.atype=$proto.short=$proto.long=$proto.list=nil,self.$attr_reader("atype"),self.$attr_reader("short"),self.$attr_reader("long"),self.$attr_reader("list"),$def(self,"$initialize",(function(){return this.atype=$hash2([],{}),this.short=$$("OptionMap").$new(),this.long=$$("OptionMap").$new(),this.list=[]}),0),$def(self,"$accept",(function $$accept(t,pat){var $writer,block=$$accept.$$p||nil;return delete $$accept.$$p,null==pat&&(pat=/.*/m),$truthy(pat)?$truthy(pat["$respond_to?"]("match"))||this.$raise($$("TypeError"),"has no `match'",$$("ParseError").$filter_backtrace(this.$caller(2))):$truthy(t["$respond_to?"]("match"))&&(pat=t),$truthy(block)||$truthy(pat["$respond_to?"]("convert"))&&(block=pat.$method("convert").$to_proc()),$writer=[t,[pat,block]],$send(this.atype,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),-2),$def(self,"$reject",(function(t){return this.atype.$delete(t)}),1),$def(self,"$update",(function(sw,sopts,lopts,nsw,nlopts){var used=nil;return null==nsw&&(nsw=nil),null==nlopts&&(nlopts=nil),$truthy(sopts)&&$send(sopts,"each",[],(function $$15(o){var $writer,self=null==$$15.$$s?this:$$15.$$s;return null==self.short&&(self.short=nil),null==o&&(o=nil),$writer=[o,sw],$send(self.short,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),$truthy(lopts)&&$send(lopts,"each",[],(function $$16(o){var $writer,self=null==$$16.$$s?this:$$16.$$s;return null==self.long&&(self.long=nil),null==o&&(o=nil),$writer=[o,sw],$send(self.long,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),$truthy(nsw)&&$truthy(nlopts)&&$send(nlopts,"each",[],(function $$17(o){var $writer,self=null==$$17.$$s?this:$$17.$$s;return null==self.long&&(self.long=nil),null==o&&(o=nil),$writer=[o,nsw],$send(self.long,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),used=this.short.$invert().$update(this.long.$invert()),$send(this.list,"delete_if",[],(function(o){var $ret_or_1;return null==o&&(o=nil),$truthy($ret_or_1=$$("Switch")["$==="](o))?used["$[]"](o)["$!"]():$ret_or_1}),1)}),-4),self.$private("update"),$def(self,"$prepend",(function($a){var $post_args,args,self=this;return $post_args=Opal.slice.call(arguments),$send(self,"update",$to_a(args=$post_args)),self.list.$unshift(args["$[]"](0))}),-1),$def(self,"$append",(function($a){var $post_args,args,self=this;return $post_args=Opal.slice.call(arguments),$send(self,"update",$to_a(args=$post_args)),self.list.$push(args["$[]"](0))}),-1),$def(self,"$search",(function $$search(id,key){try{var list,$yield=$$search.$$p||nil,val=nil;return delete $$search.$$p,$truthy(list=this.$__send__(id))?(val=$send(list,"fetch",[key],(function(){Opal.ret(nil)}),0),$yield!==nil?Opal.yield1($yield,val):val):nil}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),2),$def(self,"$complete",(function $$complete(id,opt,$a,$b){var $post_args,icase,pat,block=$$complete.$$p||nil,self=this;return delete $$complete.$$p,($post_args=Opal.slice.call(arguments,2)).length>0&&(icase=$post_args.shift()),null==icase&&(icase=!1),pat=$post_args,$send(self.$__send__(id),"complete",[opt,icase].concat($to_a(pat)),block.$to_proc())}),-3),$def(self,"$get_candidates",(function $$get_candidates(id){var $yield=$$get_candidates.$$p||nil;return delete $$get_candidates.$$p,Opal.yield1($yield,this.$__send__(id).$keys())}),1),$def(self,"$each_option",(function $$each_option(){var block=$$each_option.$$p||nil;return delete $$each_option.$$p,$send(this.$list(),"each",[],block.$to_proc())}),0),$def(self,"$summarize",(function $$summarize($a){var $post_args,args,block=$$summarize.$$p||nil,self=this,sum=nil;return delete $$summarize.$$p,$post_args=Opal.slice.call(arguments),args=$post_args,sum=[],$send(self.$list(),"reverse_each",[],(function(opt){var s=nil;return null==opt&&(opt=nil),$truthy(opt["$respond_to?"]("summarize"))?(s=[],$send(opt,"summarize",$to_a(args),(function(l){return null==l&&(l=nil),s["$<<"](l)}),1),sum.$concat(s.$reverse())):$not(opt)||$truthy(opt["$empty?"]())?sum["$<<"](""):$truthy(opt["$respond_to?"]("each_line"))?sum.$concat([].concat($to_a(opt.$each_line())).$reverse()):sum.$concat([].concat($to_a(opt.$each())).$reverse())}),1),$send(sum,"reverse_each",[],block.$to_proc())}),-1),$def(self,"$add_banner",(function(to){return $send(this.$list(),"each",[],(function(opt){return null==opt&&(opt=nil),$truthy(opt["$respond_to?"]("add_banner"))?opt.$add_banner(to):nil}),1),to}),1),$def(self,"$compsys",(function $$compsys($a){var $post_args,args,block=$$compsys.$$p||nil,self=this;return delete $$compsys.$$p,$post_args=Opal.slice.call(arguments),args=$post_args,$send(self.$list(),"each",[],(function(opt){return null==opt&&(opt=nil),$truthy(opt["$respond_to?"]("compsys"))?$send(opt,"compsys",$to_a(args),block.$to_proc()):nil}),1)}),-1)}($nesting[0],0,$nesting),function($base,$super,$parent_nesting){var self=$klass($base,$super,"CompletingHash"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$include($$("Completion")),$def(self,"$match",(function(key){try{var $a,$b,values;return $b=$send(this,"fetch",[key],(function $$24(){var self=null==$$24.$$s?this:$$24.$$s;return self.$raise($$("AmbiguousArgument"),$send(self,"catch",["ambiguous"],(function $$25(){var self=null==$$25.$$s?this:$$25.$$s;Opal.ret(self.$complete(key))}),{$$arity:0,$$s:self}))}),{$$arity:0,$$s:this}),$a=$to_ary($b),values=$slice.call($a,0),[key].concat($to_a(values))}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),1)}($nesting[0],$$("Hash"),$nesting),$const_set($nesting[0],"ArgumentStyle",$hash2([],{})),$send($$("NoArgument"),"each",[],(function(el){var $writer;return null==el&&(el=nil),$writer=[el,$$$($$("Switch"),"NoArgument")],$send($$("ArgumentStyle"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$send($$("RequiredArgument"),"each",[],(function(el){var $writer;return null==el&&(el=nil),$writer=[el,$$$($$("Switch"),"RequiredArgument")],$send($$("ArgumentStyle"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$send($$("OptionalArgument"),"each",[],(function(el){var $writer;return null==el&&(el=nil),$writer=[el,$$$($$("Switch"),"OptionalArgument")],$send($$("ArgumentStyle"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$$("ArgumentStyle").$freeze(),$const_set($nesting[0],"DefaultList",$$("List").$new()),$writer=["-",$send($$$($$("Switch"),"NoArgument"),"new",[],(function(){return nil}),0)],$send($$("DefaultList").$short(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=["",$send($$$($$("Switch"),"NoArgument"),"new",[],(function $OptionParser$30(){return(null==$OptionParser$30.$$s?this:$OptionParser$30.$$s).$throw("terminate")}),{$$arity:0,$$s:self})],$send($$("DefaultList").$long(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$const_set($nesting[0],"COMPSYS_HEADER","\ntypeset -A opt_args\nlocal context state line\n\n_arguments -s -S \\\n"),$def(self,"$compsys",(function(to,name){return null==$gvars[0]&&($gvars[0]=nil),null==name&&(name=$$("File").$basename($gvars[0])),to["$<<"]("#compdef "+name+"\n"),to["$<<"]($$("COMPSYS_HEADER")),$send(this,"visit",["compsys",$hash2([],{}),$hash2([],{})],(function(o,d){return null==o&&(o=nil),null==d&&(d=nil),to["$<<"](' "'+o+"["+d.$gsub(/[\"\[\]]/,"\\\\\\&")+']" \\\n')}),2),to["$<<"](" '*:file:_files' && return 0\n")}),-2),$const_set($nesting[0],"Officious",$hash2([],{})),$writer=["help",$send(self,"proc",[],(function $OptionParser$32(parser){var self=null==$OptionParser$32.$$s?this:$OptionParser$32.$$s;return null==parser&&(parser=nil),$send($$$($$("Switch"),"NoArgument"),"new",[],(function $$33(arg){var self=null==$$33.$$s?this:$$33.$$s;return null==arg&&(arg=nil),self.$puts(parser.$help()),self.$exit()}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:self})],$send($$("Officious"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=["*-completion-bash",$send(self,"proc",[],(function $OptionParser$34(parser){var self=null==$OptionParser$34.$$s?this:$OptionParser$34.$$s;return null==parser&&(parser=nil),$send($$$($$("Switch"),"RequiredArgument"),"new",[],(function $$35(arg){var self=null==$$35.$$s?this:$$35.$$s;return null==arg&&(arg=nil),self.$puts(parser.$candidate(arg)),self.$exit()}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:self})],$send($$("Officious"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=["*-completion-zsh",$send(self,"proc",[],(function $OptionParser$36(parser){var self=null==$OptionParser$36.$$s?this:$OptionParser$36.$$s;return null==parser&&(parser=nil),$send($$$($$("Switch"),"OptionalArgument"),"new",[],(function $$37(arg){var self=null==$$37.$$s?this:$$37.$$s;return null==arg&&(arg=nil),parser.$compsys($$("STDOUT"),arg),self.$exit()}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:self})],$send($$("Officious"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=["version",$send(self,"proc",[],(function $OptionParser$38(parser){var self=null==$OptionParser$38.$$s?this:$OptionParser$38.$$s;return null==parser&&(parser=nil),$send($$$($$("Switch"),"OptionalArgument"),"new",[],(function $$39(pkg){var v,self=null==$$39.$$s?this:$$39.$$s;if(null==pkg&&(pkg=nil),$truthy(pkg)){var $no_errors=!0;try{self.$require("optparse/version")}catch($err){if($no_errors=!1,!Opal.rescue($err,[$$("LoadError")]))throw $err;Opal.pop_exception()}finally{$no_errors&&($truthy($send(self,"show_version",$to_a(pkg.$split(/,/))))||self.$abort(parser.$program_name()+": no version found in package "+pkg),self.$exit())}}return $truthy(v=parser.$ver())||self.$abort(parser.$program_name()+": version unknown"),self.$puts(v),self.$exit()}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:self})],$send($$("Officious"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$defs(self,"$with",(function $OptionParser_with$40($a){var $post_args,block=$OptionParser_with$40.$$p||nil,self=this,opts=nil;return delete $OptionParser_with$40.$$p,$post_args=Opal.slice.call(arguments),opts=$send(self,"new",$to_a($post_args)),$send(opts,"instance_eval",[],block.$to_proc()),opts}),-1),$defs(self,"$inc",(function(arg,default$){var $ret_or_1;return null==default$&&(default$=nil),$eqeqeq($$("Integer"),$ret_or_1=arg)?arg["$nonzero?"]():$eqeqeq(nil,$ret_or_1)?$rb_plus(default$.$to_i(),1):nil}),-2),$def(self,"$inc",(function($a){var args,self=this;return args=Opal.slice.call(arguments),$send(self.$class(),"inc",$to_a(args))}),-1),$def(self,"$initialize",(function $$initialize(banner,width,indent){var $yield=$$initialize.$$p||nil;return delete $$initialize.$$p,null==banner&&(banner=nil),null==width&&(width=32),null==indent&&(indent=$rb_times(" ",4)),this.stack=[$$("DefaultList"),$$("List").$new(),$$("List").$new()],this.program_name=nil,this.banner=banner,this.summary_width=width,this.summary_indent=indent,this.default_argv=$$("ARGV"),this.require_exact=!1,this.$add_officious(),$yield!==nil?Opal.yield1($yield,this):nil}),-1),$def(self,"$add_officious",(function(){var list=nil;return list=this.$base(),$send($$("Officious"),"each",[],(function $$41(opt,block){var $ret_or_1,self=null==$$41.$$s?this:$$41.$$s,$logical_op_recvr_tmp_1=nil,$writer=nil;return null==opt&&(opt=nil),null==block&&(block=nil),$logical_op_recvr_tmp_1=list.$long(),$truthy($ret_or_1=$logical_op_recvr_tmp_1["$[]"](opt))?$ret_or_1:($writer=[opt,block.$call(self)],$send($logical_op_recvr_tmp_1,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),{$$arity:2,$$s:this})}),0),$def(self,"$terminate",(function(arg){return null==arg&&(arg=nil),this.$class().$terminate(arg)}),-1),$defs(self,"$terminate",(function(arg){return null==arg&&(arg=nil),this.$throw("terminate",arg)}),-1),self.stack=[$$("DefaultList")],$defs(self,"$top",(function(){return $$("DefaultList")}),0),$def(self,"$accept",(function $$accept($a){var args,blk=$$accept.$$p||nil,self=this;return delete $$accept.$$p,args=Opal.slice.call(arguments),$send(self.$top(),"accept",$to_a(args),blk.$to_proc())}),-1),$defs(self,"$accept",(function $$accept($a){var args,blk=$$accept.$$p||nil,self=this;return delete $$accept.$$p,args=Opal.slice.call(arguments),$send(self.$top(),"accept",$to_a(args),blk.$to_proc())}),-1),$def(self,"$reject",(function $$reject($a){var args,blk=$$reject.$$p||nil,self=this;return delete $$reject.$$p,args=Opal.slice.call(arguments),$send(self.$top(),"reject",$to_a(args),blk.$to_proc())}),-1),$defs(self,"$reject",(function $$reject($a){var args,blk=$$reject.$$p||nil,self=this;return delete $$reject.$$p,args=Opal.slice.call(arguments),$send(self.$top(),"reject",$to_a(args),blk.$to_proc())}),-1),self.$attr_writer("banner"),self.$attr_writer("program_name"),self.$attr_accessor("summary_width"),self.$attr_accessor("summary_indent"),self.$attr_accessor("default_argv"),self.$attr_accessor("require_exact"),$def(self,"$banner",(function(){return $truthy(this.banner)||(this.banner=("Usage: "+this.$program_name()+" [options]")["$+@"](),this.$visit("add_banner",this.banner)),this.banner}),0),$def(self,"$program_name",(function(){var $ret_or_1;return null==$gvars[0]&&($gvars[0]=nil),$truthy($ret_or_1=this.program_name)?$ret_or_1:$$("File").$basename($gvars[0],".*")}),0),$alias(self,"set_banner","banner="),$alias(self,"set_program_name","program_name="),$alias(self,"set_summary_width","summary_width="),$alias(self,"set_summary_indent","summary_indent="),self.$attr_writer("version"),self.$attr_writer("release"),$def(self,"$version",(function(){var $a,$ret_or_1,$ret_or_2=nil;return $truthy($ret_or_1=$truthy($ret_or_2=null!=($a=this.version)&&$a!==nil?"instance-variable":nil)?this.version:$ret_or_2)?$ret_or_1:$truthy($ret_or_2=$$$("::","Version","skip_raise")?"constant":nil)?$$$("Version"):$ret_or_2}),0),$def(self,"$release",(function(){var $a,$ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=null!=($a=this.release)&&$a!==nil?"instance-variable":nil)?this.release:$ret_or_3)?$ret_or_2:$truthy($ret_or_3=$$$("::","Release","skip_raise")?"constant":nil)?$$$("Release"):$ret_or_3)?$ret_or_1:$truthy($ret_or_2=$$$("::","RELEASE","skip_raise")?"constant":nil)?$$$("RELEASE"):$ret_or_2}),0),$def(self,"$ver",(function(){var v=nil,str=nil;return $truthy(v=this.$version())?(str=(this.$program_name()+" "+[v].$join("."))["$+@"](),$truthy(v=this.$release())&&str["$<<"](" ("+v+")"),str):nil}),0),$def(self,"$warn",(function $$warn(mesg){return null==$gvars["!"]&&($gvars["!"]=nil),delete $$warn.$$p,null==mesg&&(mesg=$gvars["!"]),$send2(this,$find_super(this,"warn",$$warn,!1,!0),"warn",[this.$program_name()+": "+mesg],null)}),-1),$def(self,"$abort",(function $$abort(mesg){return null==$gvars["!"]&&($gvars["!"]=nil),delete $$abort.$$p,null==mesg&&(mesg=$gvars["!"]),$send2(this,$find_super(this,"abort",$$abort,!1,!0),"abort",[this.$program_name()+": "+mesg],null)}),-1),$def(self,"$top",(function(){return this.stack["$[]"](-1)}),0),$def(self,"$base",(function(){return this.stack["$[]"](1)}),0),$def(self,"$new",(function $OptionParser_new$42(){var $yield=$OptionParser_new$42.$$p||nil;return delete $OptionParser_new$42.$$p,this.stack.$push($$("List").$new()),$yield!==nil?Opal.yield1($yield,this):this}),0),$def(self,"$remove",(function(){return this.stack.$pop()}),0),$def(self,"$summarize",(function $$summarize(to,width,max,indent){var $ret_or_1,blk=$$summarize.$$p||nil;return delete $$summarize.$$p,null==to&&(to=[]),null==width&&(width=this.summary_width),null==max&&(max=$rb_minus(width,1)),null==indent&&(indent=this.summary_indent),"\n",blk=$truthy($ret_or_1=blk)?$ret_or_1:$send(this,"proc",[],(function(l){return null==l&&(l=nil),to["$<<"]($truthy(l.$index("\n",-1))?l:$rb_plus(l,"\n"))}),1),$send(this,"visit",["summarize",$hash2([],{}),$hash2([],{}),width,max,indent],blk.$to_proc()),to}),-1),$def(self,"$help",(function(){return this.$summarize([this.$banner().$to_s().$sub(/\n?$/,"\n")]).$join()}),0),$alias(self,"to_s","help"),$def(self,"$to_a",(function(){return this.$summarize([this.$banner().$to_s().$split(/^/)]).$join()}),0),$def(self,"$notwice",(function(obj,prv,msg){return $not(prv)||$eqeq(prv,obj)||this.$raise($$("ArgumentError"),"argument "+msg+" given twice: "+obj,$$("ParseError").$filter_backtrace(this.$caller(2))),obj}),3),self.$private("notwice"),$const_set($nesting[0],"SPLAT_PROC",$send(self,"proc",[],(function($a){var $post_args,a;return $post_args=Opal.slice.call(arguments),$truthy($rb_le((a=$post_args).$length(),1))?a.$first():a}),-1)),$def(self,"$make_switch",(function(opts,block){var $a,$b,short$=nil,long$=nil,nolong=nil,style=nil,pattern=nil,conv=nil,not_pattern=nil,not_conv=nil,not_style=nil,ldesc=nil,sdesc=nil,desc=nil,arg=nil,default_style=nil,default_pattern=nil,klass=nil,q=nil,a=nil,has_arg=nil,$ret_or_2=nil,s=nil;return null==block&&(block=nil),short$=($a=[[],[],[]])[0],long$=$a[1],nolong=$a[2],style=null==$a[3]?nil:$a[3],pattern=null==$a[4]?nil:$a[4],conv=null==$a[5]?nil:$a[5],not_pattern=null==$a[6]?nil:$a[6],not_conv=null==$a[7]?nil:$a[7],not_style=null==$a[8]?nil:$a[8],ldesc=($a=[[],[],[]])[0],sdesc=$a[1],desc=$a[2],arg=null==$a[3]?nil:$a[3],default_style=$$$($$("Switch"),"NoArgument"),default_pattern=nil,klass=nil,$a=$to_ary($b=nil),q=null==$a[0]?nil:$a[0],a=null==$a[1]?nil:$a[1],has_arg=!1,$send(opts,"each",[],(function $$45(o){var $c,$d,self=null==$$45.$$s?this:$$45.$$s,$ret_or_1=nil,$ret_or_2=nil,$ret_or_3=nil;return null==o&&(o=nil),$truthy($send(self,"search",["atype",o],(function $$46(pat,c){var $c;return null==pat&&(pat=nil),null==c&&(c=nil),klass=(null==$$46.$$s?this:$$46.$$s).$notwice(o,klass,"type"),$truthy(not_style)&&$neqeq(not_style,$$$($$("Switch"),"NoArgument"))?(not_pattern=($c=[pat,c])[0],not_conv=$c[1],$c):(default_pattern=($c=[pat,c])[0],conv=$c[1],$c)}),{$$arity:2,$$s:self}))?nil:$not($truthy($ret_or_1=$$("String")["$==="](o))?$ret_or_1:$$("Symbol")["$==="](o))&&$truthy(o["$respond_to?"]("match"))?(pattern=self.$notwice(o,pattern,"pattern"),conv=$truthy(pattern["$respond_to?"]("convert"))?pattern.$method("convert").$to_proc():$$("SPLAT_PROC"),nil):$eqeqeq($$("Proc"),$ret_or_1=o)||$eqeqeq($$("Method"),$ret_or_1)?block=self.$notwice(o,block,"block"):$eqeqeq($$("Array"),$ret_or_1)||$eqeqeq($$("Hash"),$ret_or_1)?($eqeqeq($$("CompletingHash"),$ret_or_2=pattern)||($eqeqeq(nil,$ret_or_2)?(pattern=$$("CompletingHash").$new(),$truthy(pattern["$respond_to?"]("convert"))&&(conv=pattern.$method("convert").$to_proc())):self.$raise($$("ArgumentError"),"argument pattern given twice")),$send(o,"each",[],(function(pat,$c){var $post_args,$writer=nil;return null==pat&&(pat=nil),$post_args=Opal.slice.call(arguments,1),$writer=[pat,$send($post_args,"fetch",[0],(function(){return pat}),0)],$send(pattern,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),-2)):$eqeqeq($$("Module"),$ret_or_1)?self.$raise($$("ArgumentError"),"unsupported argument type: "+o,$$("ParseError").$filter_backtrace(self.$caller(4))):$truthy($send($$("ArgumentStyle").$keys(),"any?",[],(function($ret_or_2){return null==$ret_or_2&&($ret_or_2=nil),$ret_or_2["$==="]($ret_or_1)}),1))?style=self.$notwice($$("ArgumentStyle")["$[]"](o),style,"style"):$eqeqeq(/^--no-([^\[\]=\s]*)(.+)?/,$ret_or_1)?($c=[$$("Regexp").$last_match(1),$$("Regexp").$last_match(2)],q=$c[0],a=$c[1],o=self.$notwice($truthy(a)?$$("Object"):$$("TrueClass"),klass,"type"),$truthy(not_style)||($d=self.$search("atype",o),$c=$to_ary($d),not_pattern=null==$c[0]?nil:$c[0],not_conv=null==$c[1]?nil:$c[1]),$truthy(a)&&(not_style=($truthy($ret_or_3=not_style)?$ret_or_3:default_style).$guess(arg=a)),default_style=$$$($$("Switch"),"NoArgument"),$truthy(default_pattern)||($d=self.$search("atype",$$("FalseClass")),$c=$to_ary($d),default_pattern=null==$c[0]?nil:$c[0],conv=null==$c[1]?nil:$c[1]),ldesc["$<<"]("--no-"+q),q=q.$downcase().$tr("_","-"),long$["$<<"]("no-"+q),nolong["$<<"](q)):$eqeqeq(/^--\[no-\]([^\[\]=\s]*)(.+)?/,$ret_or_1)?($c=[$$("Regexp").$last_match(1),$$("Regexp").$last_match(2)],q=$c[0],a=$c[1],o=self.$notwice($truthy(a)?$$("Object"):$$("TrueClass"),klass,"type"),$truthy(a)&&(default_style=default_style.$guess(arg=a),$truthy(default_pattern)||($d=self.$search("atype",o),$c=$to_ary($d),default_pattern=null==$c[0]?nil:$c[0],conv=null==$c[1]?nil:$c[1])),ldesc["$<<"]("--[no-]"+q),o=q.$downcase().$tr("_","-"),long$["$<<"](o),$truthy(not_style)||($d=self.$search("atype",$$("FalseClass")),$c=$to_ary($d),not_pattern=null==$c[0]?nil:$c[0],not_conv=null==$c[1]?nil:$c[1]),not_style=$$$($$("Switch"),"NoArgument"),nolong["$<<"]("no-"+o)):$eqeqeq(/^--([^\[\]=\s]*)(.+)?/,$ret_or_1)?($c=[$$("Regexp").$last_match(1),$$("Regexp").$last_match(2)],q=$c[0],a=$c[1],$truthy(a)&&(o=self.$notwice($$("NilClass"),klass,"type"),default_style=default_style.$guess(arg=a),$truthy(default_pattern)||($d=self.$search("atype",o),$c=$to_ary($d),default_pattern=null==$c[0]?nil:$c[0],conv=null==$c[1]?nil:$c[1])),ldesc["$<<"]("--"+q),o=q.$downcase().$tr("_","-"),long$["$<<"](o)):$eqeqeq(/^-(\[\^?\]?(?:[^\\\]]|\\.)*\])(.+)?/,$ret_or_1)?($c=[$$("Regexp").$last_match(1),$$("Regexp").$last_match(2)],q=$c[0],a=$c[1],o=self.$notwice($$("Object"),klass,"type"),$truthy(a)?(default_style=default_style.$guess(arg=a),$truthy(default_pattern)||($d=self.$search("atype",o),$c=$to_ary($d),default_pattern=null==$c[0]?nil:$c[0],conv=null==$c[1]?nil:$c[1])):has_arg=!0,sdesc["$<<"]("-"+q),short$["$<<"]($$("Regexp").$new(q))):$eqeqeq(/^-(.)(.+)?/,$ret_or_1)?($c=[$$("Regexp").$last_match(1),$$("Regexp").$last_match(2)],q=$c[0],a=$c[1],$truthy(a)&&(o=self.$notwice($$("NilClass"),klass,"type"),default_style=default_style.$guess(arg=a),$truthy(default_pattern)||($d=self.$search("atype",o),$c=$to_ary($d),default_pattern=null==$c[0]?nil:$c[0],conv=null==$c[1]?nil:$c[1])),sdesc["$<<"]("-"+q),short$["$<<"](q)):$eqeqeq(/^=/,$ret_or_1)?(style=self.$notwice(default_style.$guess(arg=o),style,"style"),$truthy(default_pattern)?nil:($d=self.$search("atype",$$("Object")),$c=$to_ary($d),default_pattern=null==$c[0]?nil:$c[0],conv=null==$c[1]?nil:$c[1],$d)):desc.$push(o)}),{$$arity:1,$$s:this}),$truthy(default_pattern)||($b=this.$search("atype",default_style.$pattern()),$a=$to_ary($b),default_pattern=null==$a[0]?nil:$a[0],conv=null==$a[1]?nil:$a[1]),$not($truthy($ret_or_2=short$["$empty?"]())?long$["$empty?"]():$ret_or_2)?($truthy(has_arg)&&$eqeq(default_style,$$$($$("Switch"),"NoArgument"))&&(default_style=$$$($$("Switch"),"RequiredArgument")),s=($truthy($ret_or_2=style)?$ret_or_2:default_style).$new($truthy($ret_or_2=pattern)?$ret_or_2:default_pattern,conv,sdesc,ldesc,arg,desc,block)):$not(block)?(($truthy(style)||$truthy(pattern))&&this.$raise($$("ArgumentError"),"no switch given",$$("ParseError").$filter_backtrace(this.$caller())),s=desc):(short$["$<<"](pattern),s=($truthy($ret_or_2=style)?$ret_or_2:default_style).$new(pattern,conv,nil,nil,arg,desc,block)),[s,short$,long$,$truthy(not_style)?not_style.$new(not_pattern,not_conv,sdesc,ldesc,nil,desc,block):nil,nolong]}),-2),$def(self,"$define",(function $$define($a){var opts,block=$$define.$$p||nil,self=this,sw=nil;return delete $$define.$$p,opts=Opal.slice.call(arguments),$send(self.$top(),"append",$to_a(sw=self.$make_switch(opts,block))),sw["$[]"](0)}),-1),$def(self,"$on",(function $$on($a){var $post_args,block=$$on.$$p||nil,self=this;return delete $$on.$$p,$post_args=Opal.slice.call(arguments),$send(self,"define",$to_a($post_args),block.$to_proc()),self}),-1),$alias(self,"def_option","define"),$def(self,"$define_head",(function $$define_head($a){var opts,block=$$define_head.$$p||nil,self=this,sw=nil;return delete $$define_head.$$p,opts=Opal.slice.call(arguments),$send(self.$top(),"prepend",$to_a(sw=self.$make_switch(opts,block))),sw["$[]"](0)}),-1),$def(self,"$on_head",(function $$on_head($a){var $post_args,block=$$on_head.$$p||nil,self=this;return delete $$on_head.$$p,$post_args=Opal.slice.call(arguments),$send(self,"define_head",$to_a($post_args),block.$to_proc()),self}),-1),$alias(self,"def_head_option","define_head"),$def(self,"$define_tail",(function $$define_tail($a){var opts,block=$$define_tail.$$p||nil,self=this,sw=nil;return delete $$define_tail.$$p,opts=Opal.slice.call(arguments),$send(self.$base(),"append",$to_a(sw=self.$make_switch(opts,block))),sw["$[]"](0)}),-1),$def(self,"$on_tail",(function $$on_tail($a){var $post_args,block=$$on_tail.$$p||nil,self=this;return delete $$on_tail.$$p,$post_args=Opal.slice.call(arguments),$send(self,"define_tail",$to_a($post_args),block.$to_proc()),self}),-1),$alias(self,"def_tail_option","define_tail"),$def(self,"$separator",(function(string){return this.$top().$append(string,nil,nil)}),1),$def(self,"$order",(function $$order($a,$b){var $post_args,$kwargs,argv,into,nonopt=$$order.$$p||nil,self=this;if(delete $$order.$$p,$post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return argv=$post_args,null==(into=$kwargs.$$smap.into)&&(into=nil),$eqeq(argv.$size(),1)&&$eqeqeq($$("Array"),argv["$[]"](0))&&(argv=argv["$[]"](0).$dup()),$send(self,"order!",[argv,$hash2(["into"],{into:into})],nonopt.$to_proc())}),-1),$def(self,"$order!",(function $OptionParser_order$excl$50($a,$b){var $post_args,$kwargs,argv,into,nonopt=$OptionParser_order$excl$50.$$p||nil,self=this,setter=nil;if(delete $OptionParser_order$excl$50.$$p,$post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return $post_args.length>0&&(argv=$post_args.shift()),null==argv&&(argv=self.$default_argv()),null==(into=$kwargs.$$smap.into)&&(into=nil),$truthy(into)&&(setter=$lambda((function(name,val){var $writer;return null==name&&(name=nil),null==val&&(val=nil),$writer=[name.$to_sym(),val],$send(into,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),2)),$send(self,"parse_in_order",[argv,setter],nonopt.$to_proc())}),-1),$def(self,"$parse_in_order",(function $$parse_in_order(argv,setter){var $a,nonopt=$$parse_in_order.$$p||nil,opt=nil,arg=nil,val=nil,rest=nil,$ret_or_2=nil;return delete $$parse_in_order.$$p,null==argv&&(argv=this.$default_argv()),null==setter&&(setter=nil),$a=$to_ary(nil),opt=null==$a[0]?nil:$a[0],arg=null==$a[1]?nil:$a[1],val=null==$a[2]?nil:$a[2],rest=null==$a[3]?nil:$a[3],nonopt=$truthy($ret_or_2=nonopt)?$ret_or_2:$send(this,"proc",[],(function $$52(a){return null==a&&(a=nil),(null==$$52.$$s?this:$$52.$$s).$throw("terminate",a)}),{$$arity:1,$$s:this}),$truthy(arg=$send(this,"catch",["terminate"],(function $$53(){var $d,$e,self=null==$$53.$$s?this:$$53.$$s,sw=nil,cb=nil,eq=nil,has_arg=nil,$ret_or_3=nil;for(null==$gvars["!"]&&($gvars["!"]=nil);$truthy(arg=argv.$shift());)if($eqeqeq(/^--([^=]*)(?:=(.*))?/m,$ret_or_2=arg)){$d=[$$("Regexp").$last_match(1),$$("Regexp").$last_match(2)],opt=$d[0],rest=$d[1],opt=opt.$tr("_","-");try{$e=self.$complete("long",opt,!0),$d=$to_ary($e),sw=null==$d[0]?nil:$d[0],$truthy(self.$require_exact())&&$not(sw.$long()["$include?"](arg))&&self.$raise($$("InvalidOption"),arg)}catch($err){if(!Opal.rescue($err,[$$("ParseError")]))throw $err;try{self.$raise($gvars["!"].$set_option(arg,!0))}finally{Opal.pop_exception()}}try{$e=$send(sw,"parse",[rest,argv],(function $$54($f){var $post_args,self=null==$$54.$$s?this:$$54.$$s;return $post_args=Opal.slice.call(arguments),$send(self,"raise",$to_a($post_args))}),{$$arity:-1,$$s:self}),$d=$to_ary($e),opt=null==$d[0]?nil:$d[0],cb=null==$d[1]?nil:$d[1],val=null==$d[2]?nil:$d[2],$truthy(cb)&&(val=cb.$call(val)),$truthy(setter)&&setter.$call(sw.$switch_name(),val)}catch($err){if(!Opal.rescue($err,[$$("ParseError")]))throw $err;try{self.$raise($gvars["!"].$set_option(arg,rest))}finally{Opal.pop_exception()}}}else if($eqeqeq(/^-(.)((=).*|.+)?/m,$ret_or_2)){$d=[$$("Regexp").$last_match(3),$$("Regexp").$last_match(2),$$("Regexp").$last_match(1)],eq=$d[0],rest=$d[1],opt=$d[2],has_arg=($d=[eq,rest])[0],val=$d[1];try{if($e=self.$search("short",opt),$d=$to_ary($e),sw=null==$d[0]?nil:$d[0],!$truthy(sw))try{$e=self.$complete("short",opt),$d=$to_ary($e),sw=null==$d[0]?nil:$d[0],val=arg.$delete_prefix("-"),has_arg=!0}catch($err){if(!Opal.rescue($err,[$$("InvalidOption")]))throw $err;try{$truthy(self.$require_exact())&&self.$raise(),$e=self.$complete("long",opt),$d=$to_ary($e),sw=null==$d[0]?nil:$d[0],eq=$truthy($ret_or_3=eq)?$ret_or_3:rest["$!"]()}finally{Opal.pop_exception()}}}catch($err){if(!Opal.rescue($err,[$$("ParseError")]))throw $err;try{self.$raise($gvars["!"].$set_option(arg,!0))}finally{Opal.pop_exception()}}var $no_errors=!0;try{$e=$send(sw,"parse",[val,argv],(function $$55($f){var exc,self=null==$$55.$$s?this:$$55.$$s;return exc=Opal.slice.call(arguments),$truthy(eq)?$send(self,"raise",$to_a(exc)):nil}),{$$arity:-1,$$s:self}),$d=$to_ary($e),opt=null==$d[0]?nil:$d[0],cb=null==$d[1]?nil:$d[1],val=null==$d[2]?nil:$d[2]}catch($err){if($no_errors=!1,!Opal.rescue($err,[$$("ParseError")]))throw $err;try{self.$raise($gvars["!"].$set_option(arg,$rb_gt(arg.$length(),2)))}finally{Opal.pop_exception()}}finally{$no_errors&&$truthy(has_arg)&&$not(eq)&&$eqeq(arg,"-"+opt)&&self.$raise($$("InvalidOption"),arg)}try{$truthy(opt)&&($not(rest)||$neqeq(opt=opt.$sub(/^-*/,"-"),"-"))&&argv.$unshift(opt),$truthy(cb)&&(val=cb.$call(val)),$truthy(setter)&&setter.$call(sw.$switch_name(),val)}catch($err){if(!Opal.rescue($err,[$$("ParseError")]))throw $err;try{self.$raise($gvars["!"].$set_option(arg,$rb_gt(arg.$length(),2)))}finally{Opal.pop_exception()}}}else $send(self,"catch",["prune"],(function $$56(){return $send(null==$$56.$$s?this:$$56.$$s,"visit",["each_option"],(function(sw0){return null==sw0&&(sw0=nil),sw=sw0,$eqeqeq($$("Switch"),sw)&&$truthy(sw["$match_nonswitch?"](arg))?sw.$block().$call(arg):nil}),1),nonopt.$call(arg)}),{$$arity:0,$$s:self});return nil}),{$$arity:0,$$s:this}))&&argv.$unshift(arg),$send(this,"visit",["search","short",nil],(function(sw){return null==sw&&(sw=nil),$truthy(sw.$pattern())?nil:$send(sw.$block(),"call",$to_a(argv))}),1),argv}),-1),self.$private("parse_in_order"),$def(self,"$permute",(function($a,$b){var $post_args,$kwargs,argv,into,self=this;if($post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return argv=$post_args,null==(into=$kwargs.$$smap.into)&&(into=nil),$eqeq(argv.$size(),1)&&$eqeqeq($$("Array"),argv["$[]"](0))&&(argv=argv["$[]"](0).$dup()),self["$permute!"](argv,$hash2(["into"],{into:into}))}),-1),$def(self,"$permute!",(function($a,$b){var $post_args,$kwargs,argv,into,self=this,nonopts=nil,$writer=nil;if($post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return $post_args.length>0&&(argv=$post_args.shift()),null==argv&&(argv=self.$default_argv()),null==(into=$kwargs.$$smap.into)&&(into=nil),nonopts=[],$send(self,"order!",[argv,$hash2(["into"],{into:into})],nonopts.$method("<<").$to_proc()),$send(argv,"[]=",$to_a($writer=[0,0,nonopts])),$writer[$rb_minus($writer.length,1)],argv}),-1),$def(self,"$parse",(function($a,$b){var $post_args,$kwargs,argv,into,self=this;if($post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return argv=$post_args,null==(into=$kwargs.$$smap.into)&&(into=nil),$eqeq(argv.$size(),1)&&$eqeqeq($$("Array"),argv["$[]"](0))&&(argv=argv["$[]"](0).$dup()),self["$parse!"](argv,$hash2(["into"],{into:into}))}),-1),$def(self,"$parse!",(function($a,$b){var $post_args,$kwargs,argv,into,self=this;if($post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return $post_args.length>0&&(argv=$post_args.shift()),null==argv&&(argv=self.$default_argv()),null==(into=$kwargs.$$smap.into)&&(into=nil),$truthy($$("ENV")["$include?"]("POSIXLY_CORRECT"))?self["$order!"](argv,$hash2(["into"],{into:into})):self["$permute!"](argv,$hash2(["into"],{into:into}))}),-1),$def(self,"$getopts",(function($a){var args,$b,self=this,argv=nil,single_options=nil,long_options=nil,result=nil;return args=Opal.slice.call(arguments),argv=$eqeqeq($$("Array"),args.$first())?args.$shift():self.$default_argv(),single_options=null==($b=[].concat($to_a(args)))[0]?nil:$b[0],long_options=$slice.call($b,1),result=$hash2([],{}),$truthy(single_options)&&$send(single_options,"scan",[/(.)(:)?/],(function $$61(opt,val){var self=null==$$61.$$s?this:$$61.$$s,$writer=nil;return null==opt&&(opt=nil),null==val&&(val=nil),$truthy(val)?($send(result,"[]=",$to_a($writer=[opt,nil])),$writer[$rb_minus($writer.length,1)],self.$define("-"+opt+" VAL")):($send(result,"[]=",$to_a($writer=[opt,!1])),$writer[$rb_minus($writer.length,1)],self.$define("-"+opt))}),{$$arity:2,$$s:self}),$send(long_options,"each",[],(function $$62(arg){var $c,$d,opt,self=null==$$62.$$s?this:$$62.$$s,desc=nil,val=nil,$writer=nil,$ret_or_2=nil;return null==arg&&(arg=nil),$d=arg.$split(";",2),arg=null==($c=$to_ary($d))[0]?nil:$c[0],desc=null==$c[1]?nil:$c[1],$d=arg.$split(":",2),opt=null==($c=$to_ary($d))[0]?nil:$c[0],val=null==$c[1]?nil:$c[1],$truthy(val)?($writer=[opt,$truthy(val["$empty?"]())?nil:val],$send(result,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$send(self,"define",["--"+opt+"="+($truthy($ret_or_2=result["$[]"](opt))?$ret_or_2:"VAL")].concat($to_a([desc].$compact())))):($send(result,"[]=",$to_a($writer=[opt,!1])),$writer[$rb_minus($writer.length,1)],$send(self,"define",["--"+opt].concat($to_a([desc].$compact()))))}),{$$arity:1,$$s:self}),self.$parse_in_order(argv,result.$method("[]=")),result}),-1),$defs(self,"$getopts",(function($a){var args,self=this;return args=Opal.slice.call(arguments),$send(self.$new(),"getopts",$to_a(args))}),-1),$def(self,"$visit",(function $$visit(id,$a){var $post_args,args,block=$$visit.$$p||nil,self=this;return delete $$visit.$$p,$post_args=Opal.slice.call(arguments,1),args=$post_args,$send(self.stack,"reverse_each",[],(function(el){return null==el&&(el=nil),$send(el,"__send__",[id].concat($to_a(args)),block.$to_proc())}),1),nil}),-2),self.$private("visit"),$def(self,"$search",(function $$search(id,key){var block_given,$yield=$$search.$$p||nil,self=this,retval=nil;return delete $$search.$$p,block_given=$yield!==nil,retval=nil,function(){var $brk=Opal.new_brk();try{$send(self,"visit",["search",id,key],(function(k){null==k&&(k=nil),retval=$truthy(block_given)?Opal.yield1($yield,k):k,Opal.brk(nil,$brk)}),{$$arity:1,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),retval}),2),self.$private("search"),$def(self,"$complete",(function(typ,opt,$a,$b){try{var $post_args,icase,pat,self=this,retval=nil,ambiguous=nil,exc=nil;return($post_args=Opal.slice.call(arguments,2)).length>0&&(icase=$post_args.shift()),null==icase&&(icase=!1),$truthy((pat=$post_args)["$empty?"]())&&(retval=nil,function(){var $brk=Opal.new_brk();try{$send(self,"search",[typ,opt],(function(sw){null==sw&&(sw=nil),retval=[sw,opt],Opal.brk(nil,$brk)}),{$$arity:1,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),$truthy(retval))?retval:(ambiguous=function(){var $brk=Opal.new_brk();try{return $send(self,"catch",["ambiguous"],(function $$66(){var self=null==$$66.$$s?this:$$66.$$s;if(retval=nil,function(){var $brk=Opal.new_brk();try{$send(self,"visit",["complete",typ,opt,icase].concat($to_a(pat)),(function(o,$c){var $post_args;null==o&&(o=nil),$post_args=Opal.slice.call(arguments,1),retval=$post_args,Opal.brk(nil,$brk)}),{$$arity:-2,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),!$truthy(retval))return nil;Opal.ret(retval)}),{$$arity:0,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),exc=$truthy(ambiguous)?$$("AmbiguousOption"):$$("InvalidOption"),self.$raise(exc.$new(opt,$hash2(["additional"],{additional:self.$method("additional_message").$curry()["$[]"](typ)}))))}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-3),self.$private("complete"),$def(self,"$additional_message",(function(typ,opt){var $b,all_candidates=nil,checker=nil;return $truthy(typ)&&$truthy(opt)&&$truthy(($b=$$("DidYouMean","skip_raise"))&&$$$($b,"SpellChecker","skip_raise")?"constant":nil)?(all_candidates=[],$send(this,"visit",["get_candidates",typ],(function(candidates){return null==candidates&&(candidates=nil),all_candidates.$concat(candidates)}),1),$send(all_candidates,"select!",[],(function(cand){return null==cand&&(cand=nil),cand["$is_a?"]($$("String"))}),1),checker=$$$($$("DidYouMean"),"SpellChecker").$new($hash2(["dictionary"],{dictionary:all_candidates})),$$("DidYouMean").$formatter().$message_for(all_candidates["$&"](checker.$correct(opt)))):nil}),2),$def(self,"$candidate",(function(word){var $a,$b,$ret_or_2,pat,list=nil,long$=nil,short$=nil,arg=nil,argpat=nil;return list=[],$eqeqeq("-",$ret_or_2=word)?long$=short$=!0:$eqeqeq(/^--/,$ret_or_2)?($b=word.$split(/=/,2),$a=$to_ary($b),word=null==$a[0]?nil:$a[0],arg=null==$a[1]?nil:$a[1],$truthy(arg)&&$not(arg["$empty?"]())&&(argpat=$$("Completion").$regexp(arg,!1)),long$=!0):$eqeqeq(/^-/,$ret_or_2)&&(short$=!0),pat=$$("Completion").$regexp(word,long$),$send(this,"visit",["each_option"],(function(opt){var opts=nil;return null==opt&&(opt=nil),$eqeqeq($$("Switch"),opt)?(opts=$rb_plus($truthy(long$)?opt.$long():[],$truthy(short$)?opt.$short():[]),$truthy(pat)&&(opts=$send($send($$("Completion"),"candidate",[word,!0,pat],opts.$method("each").$to_proc()),"map",[],"first".$to_proc())),$truthy(/^=/["$=~"](opt.$arg()))&&($send(opts,"map!",[],(function(sw){return null==sw&&(sw=nil),$rb_plus(sw,"=")}),1),$truthy(arg)&&$eqeqeq($$("CompletingHash"),opt.$pattern())&&$truthy(opts=opt.$pattern().$candidate(arg,!1,argpat))&&$send(opts,"map!",[],"last".$to_proc())),list.$concat(opts)):nil}),1),list}),1),$def(self,"$load",(function(filename){var $a,basename=nil;if(null==$gvars[0]&&($gvars[0]=nil),null==filename&&(filename=nil),!$truthy(filename)){basename=$$("File").$basename($gvars[0],".*");try{if($truthy(this.$load($$("File").$expand_path(basename,"~/.options"))))return!0}catch($err){if(!Opal.rescue($err,[$$("StandardError")]))throw $err;Opal.pop_exception()}return basename["$<<"](".options"),$send([$$("ENV")["$[]"]("XDG_CONFIG_HOME"),"~/.config"].concat($to_a(($a=$$("ENV")["$[]"]("XDG_CONFIG_DIRS"),$a===nil||null==$a?nil:$send($a,"split",[$$$($$("File"),"PATH_SEPARATOR")])))).concat(["~/config/settings"]),"any?",[],(function $$72(dir){var self=null==$$72.$$s?this:$$72.$$s;if(null==dir&&(dir=nil),$not(dir)||$truthy(dir["$empty?"]()))return nil;try{return self.$load($$("File").$expand_path(basename,dir))}catch($err){if(!Opal.rescue($err,[$$("StandardError")]))throw $err;try{return nil}finally{Opal.pop_exception()}}}),{$$arity:1,$$s:this})}try{return $send(this,"parse",$to_a($send($$("IO").$readlines(filename),"each",[],"chomp!".$to_proc()))),!0}catch($err){if(!Opal.rescue($err,[$$$($$("Errno"),"ENOENT"),$$$($$("Errno"),"ENOTDIR")]))throw $err;try{return!1}finally{Opal.pop_exception()}}}),-1),$def(self,"$environment",(function(env){var $ret_or_3;return null==$gvars[0]&&($gvars[0]=nil),null==env&&(env=$$("File").$basename($gvars[0],".*")),$truthy(env=$truthy($ret_or_3=$$("ENV")["$[]"](env))?$ret_or_3:$$("ENV")["$[]"](env.$upcase()))?(this.$require("shellwords"),$send(this,"parse",$to_a($$("Shellwords").$shellwords(env)))):nil}),-1),$send(self,"accept",[$$("Object")],(function(s){var $ret_or_2;return null==s&&(s=nil),$truthy($ret_or_2=s)?$ret_or_2:s["$nil?"]()}),{$$arity:1,$$has_trailing_comma_in_args:!0}),$send(self,"accept",[$$("NilClass")],(function(s){return null==s&&(s=nil),s}),{$$arity:1,$$has_trailing_comma_in_args:!0}),$send(self,"accept",[$$("String"),/.+/m],(function(s,$a){return null==s&&(s=nil),Opal.slice.call(arguments,1),s}),-2),"b[01]+(?:_[01]+)*",(octal="0(?:[0-7]+(?:_[0-7]+)*|b[01]+(?:_[01]+)*|"+(hex="x[\\da-f]+(?:_[\\da-f]+)*")+")?")+"|"+(decimal="\\d+(?:_\\d+)*"),$send(self,"accept",[$$("Integer"),$regexp(["\\A[-+]?(?:","0(?:[0-7]+(?:_[0-7]+)*|b[01]+(?:_[01]+)*|x[\\da-f]+(?:_[\\da-f]+)*)?|\\d+(?:_\\d+)*",")\\z"],"i")],(function $OptionParser$76(s){var self=null==$OptionParser$76.$$s?this:$OptionParser$76.$$s;if(null==s&&(s=nil),!$truthy(s))return nil;try{return self.$Integer(s)}catch($err){if(!Opal.rescue($err,[$$("ArgumentError")]))throw $err;try{return self.$raise($$$($$("OptionParser"),"InvalidArgument"),s)}finally{Opal.pop_exception()}}}),{$$arity:1,$$s:self,$$has_trailing_comma_in_args:!0}),floatpat=$regexp(["\\A[-+]?",float$="(?:"+decimal+"(?=(.)?)(?:\\.(?:"+decimal+")?)?|\\."+decimal+")(?:E[-+]?"+decimal+")?","\\z"],"i"),$send(self,"accept",[$$("Float"),floatpat],(function(s){return null==s&&(s=nil),$truthy(s)?s.$to_f():nil}),{$$arity:1,$$has_trailing_comma_in_args:!0}),real="[-+]?(?:"+octal+"|"+float$+")",$send(self,"accept",[$$("Numeric"),$regexp(["\\A(",real,")(?:/(",real,"))?\\z"],"i")],(function $OptionParser$78(s,d,f,n){var self=null==$OptionParser$78.$$s?this:$OptionParser$78.$$s;return null==s&&(s=nil),null==d&&(d=nil),null==f&&(f=nil),null==n&&(n=nil),$truthy(n)?self.$Rational(d,n):$truthy(f)?self.$Float(s):self.$Integer(s)}),{$$arity:4,$$s:self,$$has_trailing_comma_in_args:!0}),$const_set($nesting[0],"DecimalInteger",$regexp(["\\A[-+]?",decimal,"\\z"],"i")),$send(self,"accept",[$$("DecimalInteger"),$$("DecimalInteger")],(function $OptionParser$79(s){var self=null==$OptionParser$79.$$s?this:$OptionParser$79.$$s;if(null==s&&(s=nil),!$truthy(s))return nil;try{return self.$Integer(s,10)}catch($err){if(!Opal.rescue($err,[$$("ArgumentError")]))throw $err;try{return self.$raise($$$($$("OptionParser"),"InvalidArgument"),s)}finally{Opal.pop_exception()}}}),{$$arity:1,$$s:self,$$has_trailing_comma_in_args:!0}),$const_set($nesting[0],"OctalInteger",$regexp(["\\A[-+]?(?:[0-7]+(?:_[0-7]+)*|0(?:","b[01]+(?:_[01]+)*","|",hex,"))\\z"],"i")),$send(self,"accept",[$$("OctalInteger"),$$("OctalInteger")],(function $OptionParser$80(s){var self=null==$OptionParser$80.$$s?this:$OptionParser$80.$$s;if(null==s&&(s=nil),!$truthy(s))return nil;try{return self.$Integer(s,8)}catch($err){if(!Opal.rescue($err,[$$("ArgumentError")]))throw $err;try{return self.$raise($$$($$("OptionParser"),"InvalidArgument"),s)}finally{Opal.pop_exception()}}}),{$$arity:1,$$s:self,$$has_trailing_comma_in_args:!0}),$const_set($nesting[0],"DecimalNumeric",floatpat),$send(self,"accept",[$$("DecimalNumeric"),floatpat],(function $OptionParser$81(s,f){var self=null==$OptionParser$81.$$s?this:$OptionParser$81.$$s;if(null==s&&(s=nil),null==f&&(f=nil),!$truthy(s))return nil;try{return $truthy(f)?self.$Float(s):self.$Integer(s)}catch($err){if(!Opal.rescue($err,[$$("ArgumentError")]))throw $err;try{return self.$raise($$$($$("OptionParser"),"InvalidArgument"),s)}finally{Opal.pop_exception()}}}),{$$arity:2,$$s:self}),yesno=$$("CompletingHash").$new(),$send(["-","no","false"],"each",[],(function(el){return null==el&&(el=nil),$send(yesno,"[]=",$to_a($writer=[el,!1])),$writer[$rb_minus($writer.length,1)]}),1),$send(["+","yes","true"],"each",[],(function(el){return null==el&&(el=nil),$send(yesno,"[]=",$to_a($writer=[el,!0])),$writer[$rb_minus($writer.length,1)]}),1),$send(yesno,"[]=",$to_a($writer=["nil",!1])),$writer[$rb_minus($writer.length,1)],$send(self,"accept",[$$("TrueClass"),yesno],(function(arg,val){var $ret_or_2;return null==arg&&(arg=nil),null==val&&(val=nil),$truthy($ret_or_2=val["$nil?"]())?$ret_or_2:val}),2),$send(self,"accept",[$$("FalseClass"),yesno],(function(arg,val){var $ret_or_2;return null==arg&&(arg=nil),null==val&&(val=nil),$truthy($ret_or_2=val["$nil?"]()["$!"]())?val:$ret_or_2}),2),$send(self,"accept",[$$("Array")],(function(s){return null==s&&(s=nil),$truthy(s)&&(s=$send(s.$split(","),"collect",[],(function(ss){return null==ss&&(ss=nil),$truthy(ss["$empty?"]())?nil:ss}),1)),s}),{$$arity:1,$$has_trailing_comma_in_args:!0}),$send(self,"accept",[$$("Regexp"),/^\/((?:\\.|[^\\])*)\/([[:alpha:]]+)?$|.*/],(function(all,s,o){var $ret_or_2,f=nil,k=nil;return null==all&&(all=nil),null==s&&(s=nil),null==o&&(o=nil),f=0,$truthy(o)&&($truthy(/i/["$=~"](o))&&(f=f["$|"]($$$($$("Regexp"),"IGNORECASE"))),$truthy(/m/["$=~"](o))&&(f=f["$|"]($$$($$("Regexp"),"MULTILINE"))),$truthy(/x/["$=~"](o))&&(f=f["$|"]($$$($$("Regexp"),"EXTENDED"))),k=o.$delete("imx"),$truthy(k["$empty?"]())&&(k=nil)),$$("Regexp").$new($truthy($ret_or_2=s)?$ret_or_2:all,f,k)}),3),function($base,$super,$parent_nesting){var self=$klass($base,$super,"ParseError"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.args=$proto.reason=$proto.arg0=nil,$const_set($nesting[0],"Reason","parse error"),$def(self,"$initialize",(function($a,$b){var $post_args,$kwargs,args,additional,$c,self=this;if($post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return args=$post_args,null==(additional=$kwargs.$$smap.additional)&&(additional=nil),self.additional=additional,$c=$to_ary(args),self.arg0=null==$c[0]?nil:$c[0],self.args=args,self.reason=nil}),-1),self.$attr_reader("args"),self.$attr_writer("reason"),self.$attr_accessor("additional"),$def(self,"$recover",(function(argv){var $writer;return $writer=[0,0,this.args],$send(argv,"[]=",$to_a($writer)),$rb_minus($writer.length,1),argv}),1),$defs(self,"$filter_backtrace",(function(array){return null==$gvars.DEBUG&&($gvars.DEBUG=nil),$truthy($gvars.DEBUG)||$send(array,"delete_if",[],$regexp(["\\A",$$("Regexp").$quote($enc("./optparse.rb","US-ASCII")),":"]).$method("=~").$to_proc()),array}),1),$def(self,"$set_backtrace",(function $$set_backtrace(array){return delete $$set_backtrace.$$p,$send2(this,$find_super(this,"set_backtrace",$$set_backtrace,!1,!0),"set_backtrace",[this.$class().$filter_backtrace(array)],null)}),1),$def(self,"$set_option",(function(opt,eq){var $writer=nil;return $truthy(eq)?($writer=[0,opt],$send(this.args,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):this.args.$unshift(opt),this}),2),$def(self,"$reason",(function(){var $ret_or_2;return $truthy($ret_or_2=this.reason)?$ret_or_2:$$$(this.$class(),"Reason")}),0),$def(self,"$inspect",(function(){return"#<"+this.$class()+": "+this.$args().$join(" ")+">"}),0),$def(self,"$message",(function(){return this.$reason()+": "+this.$args().$join(" ")+($truthy(this.$additional())?this.$additional()["$[]"](this.arg0):nil)}),0),$alias(self,"to_s","message")}($nesting[0],$$("RuntimeError"),$nesting),function($base,$super){$klass($base,$super,"AmbiguousOption").$const_set("Reason","ambiguous option")}($nesting[0],$$("ParseError")),function($base,$super){$klass($base,$super,"NeedlessArgument").$const_set("Reason","needless argument")}($nesting[0],$$("ParseError")),function($base,$super){$klass($base,$super,"MissingArgument").$const_set("Reason","missing argument")}($nesting[0],$$("ParseError")),function($base,$super){$klass($base,$super,"InvalidOption").$const_set("Reason","invalid option")}($nesting[0],$$("ParseError")),function($base,$super){$klass($base,$super,"InvalidArgument").$const_set("Reason","invalid argument")}($nesting[0],$$("ParseError")),function($base,$super){$klass($base,$super,"AmbiguousArgument").$const_set("Reason","ambiguous argument")}($nesting[0],$$("InvalidArgument")),function($base,$parent_nesting){var self=$module($base,"Arguable"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$options=",(function(opt){return $truthy(this.optparse=opt)?nil:function(self,$parent_nesting){return self.$undef_method("options"),self.$undef_method("options=")}(Opal.get_singleton_class(this))}),1),$def(self,"$options",(function $$options(){var $writer,$yield=$$options.$$p||nil,$ret_or_2=nil;if(null==this.optparse&&(this.optparse=nil),null==$gvars["!"]&&($gvars["!"]=nil),delete $$options.$$p,this.optparse=$truthy($ret_or_2=this.optparse)?$ret_or_2:$$("OptionParser").$new(),$writer=[this],$send(this.optparse,"default_argv=",$to_a($writer)),$rb_minus($writer.length,1),!$truthy($ret_or_2=$yield!==nil))return this.optparse;try{return Opal.yield1($yield,this.optparse)}catch($err){if(!Opal.rescue($err,[$$("ParseError")]))throw $err;try{return this.optparse.$warn($gvars["!"]),nil}finally{Opal.pop_exception()}}}),0),$def(self,"$order!",(function $Arguable_order$excl$90(){var blk=$Arguable_order$excl$90.$$p||nil;return delete $Arguable_order$excl$90.$$p,$send(this.$options(),"order!",[this],blk.$to_proc())}),0),$def(self,"$permute!",(function(){return this.$options()["$permute!"](this)}),0),$def(self,"$parse!",(function(){return this.$options()["$parse!"](this)}),0),$def(self,"$getopts",(function($a){var args,self=this;return args=Opal.slice.call(arguments),$send(self.$options(),"getopts",[self].concat($to_a(args)))}),-1),$defs(self,"$extend_object",(function $$extend_object(obj){var $yield=$$extend_object.$$p||nil;return delete $$extend_object.$$p,$send2(this,$find_super(this,"extend_object",$$extend_object,!1,!0),"extend_object",[obj],$yield),$send(obj,"instance_eval",[],(function $$93(){return(null==$$93.$$s?this:$$93.$$s).optparse=nil}),{$$arity:0,$$s:this})}),1),$def(self,"$initialize",(function $$initialize($a){var args,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,args=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a(args),$yield),self.optparse=nil}),-1)}($nesting[0],$nesting),function($base,$parent_nesting){var self=$module($base,"Acceptables"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$const_set("DecimalInteger",$$$($$("OptionParser"),"DecimalInteger")),self.$const_set("OctalInteger",$$$($$("OptionParser"),"OctalInteger")),self.$const_set("DecimalNumeric",$$$($$("OptionParser"),"DecimalNumeric"))}($nesting[0],$nesting)}($nesting[0],0,$nesting),$$("ARGV").$extend($$$($$("OptionParser"),"Arguable")),$const_set($nesting[0],"OptParse",$$("OptionParser"))}; diff --git a/opal/1.4.1/optparse.min.js.gz b/opal/1.4.1/optparse.min.js.gz new file mode 100644 index 00000000..ce0644ba Binary files /dev/null and b/opal/1.4.1/optparse.min.js.gz differ diff --git a/opal/1.4.1/ostruct.js b/opal/1.4.1/ostruct.js new file mode 100644 index 00000000..70cc45a9 --- /dev/null +++ b/opal/1.4.1/ostruct.js @@ -0,0 +1,242 @@ +Opal.modules["ostruct"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $rb_gt = Opal.rb_gt, $neqeq = Opal.neqeq, $range = Opal.range, $send2 = Opal.send2, $find_super = Opal.find_super, $rb_plus = Opal.rb_plus, $alias = Opal.alias; + + Opal.add_stubs('each_pair,new_ostruct_member,[]=,-,[],to_sym,>,length,raise,new,end_with?,!=,chomp,to_s,key?,enum_for,is_a?,==,instance_variable_get,===,eql?,dup,to_n,hash,attr_reader,__send__,singleton_class,delete,respond_to?,define_singleton_method,__id__,class,any?,+,join,map,inspect'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'OpenStruct'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.table = nil; + + + $def(self, '$initialize', function $$initialize(hash) { + var self = this; + + + + if (hash == null) hash = nil;; + self.table = $hash2([], {}); + if ($truthy(hash)) { + return $send(hash, 'each_pair', [], function $$1(key, value){var self = $$1.$$s == null ? this : $$1.$$s, $writer = nil; + if (self.table == null) self.table = nil; + + + + if (key == null) key = nil;; + + if (value == null) value = nil;; + $writer = [self.$new_ostruct_member(key), value]; + $send(self.table, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 2, $$s: self}) + } else { + return nil + }; + }, -1); + + $def(self, '$[]', function $OpenStruct_$$$2(name) { + var self = this; + + return self.table['$[]'](name.$to_sym()) + }, 1); + + $def(self, '$[]=', function $OpenStruct_$$$eq$3(name, value) { + var self = this, $writer = nil; + + + $writer = [self.$new_ostruct_member(name), value]; + $send(self.table, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }, 2); + + $def(self, '$method_missing', function $$method_missing(name, $a) { + var $post_args, args, self = this, $writer = nil; + + + + $post_args = Opal.slice.call(arguments, 1); + + args = $post_args;; + if ($truthy($rb_gt(args.$length(), 2))) { + self.$raise($$('NoMethodError').$new("undefined method `" + (name) + "' for #", name)) + }; + if ($truthy(name['$end_with?']("="))) { + + if ($neqeq(args.$length(), 1)) { + self.$raise($$('ArgumentError'), "wrong number of arguments (0 for 1)") + }; + + $writer = [self.$new_ostruct_member(name['$[]']($range(0, -2, false))), args['$[]'](0)]; + $send(self.table, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + } else { + return self.table['$[]'](name.$to_sym()) + }; + }, -2); + + $def(self, '$respond_to_missing?', function $OpenStruct_respond_to_missing$ques$4(mid, include_private) { + var $a, $yield = $OpenStruct_respond_to_missing$ques$4.$$p || nil, self = this, mname = nil, $ret_or_1 = nil; + + delete $OpenStruct_respond_to_missing$ques$4.$$p; + + + if (include_private == null) include_private = false;; + mname = mid.$to_s().$chomp("=").$to_sym(); + if ($truthy(($ret_or_1 = ($a = self.table, ($a === nil || $a == null) ? nil : $send($a, 'key?', [mname]))))) { + return $ret_or_1 + } else { + return $send2(self, $find_super(self, 'respond_to_missing?', $OpenStruct_respond_to_missing$ques$4, false, true), 'respond_to_missing?', [mid, include_private], $yield) + }; + }, -2); + + $def(self, '$each_pair', function $$each_pair() { + var $yield = $$each_pair.$$p || nil, self = this; + + delete $$each_pair.$$p; + + if (!($yield !== nil)) { + return self.$enum_for("each_pair") + }; + return $send(self.table, 'each_pair', [], function $$5(pair){ + + + if (pair == null) pair = nil;; + return Opal.yield1($yield, pair);;}, 1); + }, 0); + + $def(self, '$==', function $OpenStruct_$eq_eq$6(other) { + var self = this; + + + if (!$truthy(other['$is_a?']($$('OpenStruct')))) { + return false + }; + return self.table['$=='](other.$instance_variable_get("@table")); + }, 1); + + $def(self, '$===', function $OpenStruct_$eq_eq_eq$7(other) { + var self = this; + + + if (!$truthy(other['$is_a?']($$('OpenStruct')))) { + return false + }; + return self.table['$==='](other.$instance_variable_get("@table")); + }, 1); + + $def(self, '$eql?', function $OpenStruct_eql$ques$8(other) { + var self = this; + + + if (!$truthy(other['$is_a?']($$('OpenStruct')))) { + return false + }; + return self.table['$eql?'](other.$instance_variable_get("@table")); + }, 1); + + $def(self, '$to_h', function $$to_h() { + var self = this; + + return self.table.$dup() + }, 0); + + $def(self, '$to_n', function $$to_n() { + var self = this; + + return self.table.$to_n() + }, 0); + + $def(self, '$hash', function $$hash() { + var self = this; + + return self.table.$hash() + }, 0); + self.$attr_reader("table"); + + $def(self, '$delete_field', function $$delete_field(name) { + var self = this, sym = nil; + + + sym = name.$to_sym(); + + try { + self.$singleton_class().$__send__("remove_method", sym, "" + (sym) + "=") + } catch ($err) { + if (Opal.rescue($err, [$$('NameError')])) { + try { + nil + } finally { Opal.pop_exception(); } + } else { throw $err; } + };; + return self.table.$delete(sym); + }, 1); + + $def(self, '$new_ostruct_member', function $$new_ostruct_member(name) { + var self = this; + + + name = name.$to_sym(); + if (!$truthy(self['$respond_to?'](name))) { + + $send(self, 'define_singleton_method', [name], function $$9(){var self = $$9.$$s == null ? this : $$9.$$s; + if (self.table == null) self.table = nil; + + return self.table['$[]'](name)}, {$$arity: 0, $$s: self}); + $send(self, 'define_singleton_method', ["" + (name) + "="], function $$10(x){var self = $$10.$$s == null ? this : $$10.$$s, $writer = nil; + if (self.table == null) self.table = nil; + + + + if (x == null) x = nil;; + $writer = [name, x]; + $send(self.table, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 1, $$s: self}); + }; + return name; + }, 1); + var ostruct_ids;; + + $def(self, '$inspect', function $$inspect() { + var self = this, result = nil; + + + + var top = (ostruct_ids === undefined), + ostruct_id = self.$__id__(); + ; + + return (function() { try { + + result = "#<" + (self.$class()); + + if (top) { + ostruct_ids = {}; + } + if (ostruct_ids.hasOwnProperty(ostruct_id)) { + return result + ' ...>'; + } + ostruct_ids[ostruct_id] = true; + ; + if ($truthy(self.table['$any?']())) { + result = $rb_plus(result, " ") + }; + result = $rb_plus(result, $send(self.$each_pair(), 'map', [], function $$11(name, value){ + + + if (name == null) name = nil;; + + if (value == null) value = nil;; + return "" + (name) + "=" + (value.$inspect());}, 2).$join(", ")); + result = $rb_plus(result, ">"); + return result; + } finally { + + if (top) { + ostruct_ids = undefined; + } + + }; })();; + }, 0); + return $alias(self, "to_s", "inspect"); + })($nesting[0], null, $nesting) +}; diff --git a/opal/1.4.1/ostruct.min.js b/opal/1.4.1/ostruct.min.js new file mode 100644 index 00000000..b741ee43 --- /dev/null +++ b/opal/1.4.1/ostruct.min.js @@ -0,0 +1 @@ +Opal.modules.ostruct=function(Opal){var $nesting=[],nil=Opal.nil,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$rb_gt=Opal.rb_gt,$neqeq=Opal.neqeq,$range=Opal.range,$send2=Opal.send2,$find_super=Opal.find_super,$rb_plus=Opal.rb_plus,$alias=Opal.alias;return Opal.add_stubs("each_pair,new_ostruct_member,[]=,-,[],to_sym,>,length,raise,new,end_with?,!=,chomp,to_s,key?,enum_for,is_a?,==,instance_variable_get,===,eql?,dup,to_n,hash,attr_reader,__send__,singleton_class,delete,respond_to?,define_singleton_method,__id__,class,any?,+,join,map,inspect"),function($base,$super,$parent_nesting){var ostruct_ids,self=$klass($base,null,"OpenStruct"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.table=nil,$def(self,"$initialize",(function(hash){return null==hash&&(hash=nil),this.table=$hash2([],{}),$truthy(hash)?$send(hash,"each_pair",[],(function $$1(key,value){var $writer,self=null==$$1.$$s?this:$$1.$$s;return null==self.table&&(self.table=nil),null==key&&(key=nil),null==value&&(value=nil),$writer=[self.$new_ostruct_member(key),value],$send(self.table,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:2,$$s:this}):nil}),-1),$def(self,"$[]",(function(name){return this.table["$[]"](name.$to_sym())}),1),$def(self,"$[]=",(function(name,value){var $writer;return $writer=[this.$new_ostruct_member(name),value],$send(this.table,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),2),$def(self,"$method_missing",(function(name,$a){var $post_args,args,self=this,$writer=nil;return $post_args=Opal.slice.call(arguments,1),$truthy($rb_gt((args=$post_args).$length(),2))&&self.$raise($$("NoMethodError").$new("undefined method `"+name+"' for #",name)),$truthy(name["$end_with?"]("="))?($neqeq(args.$length(),1)&&self.$raise($$("ArgumentError"),"wrong number of arguments (0 for 1)"),$writer=[self.$new_ostruct_member(name["$[]"]($range(0,-2,!1))),args["$[]"](0)],$send(self.table,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):self.table["$[]"](name.$to_sym())}),-2),$def(self,"$respond_to_missing?",(function $OpenStruct_respond_to_missing$ques$4(mid,include_private){var $a,mname,$yield=$OpenStruct_respond_to_missing$ques$4.$$p||nil,$ret_or_1=nil;return delete $OpenStruct_respond_to_missing$ques$4.$$p,null==include_private&&(include_private=!1),mname=mid.$to_s().$chomp("=").$to_sym(),$truthy($ret_or_1=($a=this.table)===nil||null==$a?nil:$send($a,"key?",[mname]))?$ret_or_1:$send2(this,$find_super(this,"respond_to_missing?",$OpenStruct_respond_to_missing$ques$4,!1,!0),"respond_to_missing?",[mid,include_private],$yield)}),-2),$def(self,"$each_pair",(function $$each_pair(){var $yield=$$each_pair.$$p||nil;return delete $$each_pair.$$p,$yield===nil?this.$enum_for("each_pair"):$send(this.table,"each_pair",[],(function(pair){return null==pair&&(pair=nil),Opal.yield1($yield,pair)}),1)}),0),$def(self,"$==",(function(other){return!!$truthy(other["$is_a?"]($$("OpenStruct")))&&this.table["$=="](other.$instance_variable_get("@table"))}),1),$def(self,"$===",(function(other){return!!$truthy(other["$is_a?"]($$("OpenStruct")))&&this.table["$==="](other.$instance_variable_get("@table"))}),1),$def(self,"$eql?",(function(other){return!!$truthy(other["$is_a?"]($$("OpenStruct")))&&this.table["$eql?"](other.$instance_variable_get("@table"))}),1),$def(self,"$to_h",(function(){return this.table.$dup()}),0),$def(self,"$to_n",(function(){return this.table.$to_n()}),0),$def(self,"$hash",(function(){return this.table.$hash()}),0),self.$attr_reader("table"),$def(self,"$delete_field",(function(name){var sym;sym=name.$to_sym();try{this.$singleton_class().$__send__("remove_method",sym,sym+"=")}catch($err){if(!Opal.rescue($err,[$$("NameError")]))throw $err;Opal.pop_exception()}return this.table.$delete(sym)}),1),$def(self,"$new_ostruct_member",(function(name){return name=name.$to_sym(),$truthy(this["$respond_to?"](name))||($send(this,"define_singleton_method",[name],(function $$9(){var self=null==$$9.$$s?this:$$9.$$s;return null==self.table&&(self.table=nil),self.table["$[]"](name)}),{$$arity:0,$$s:this}),$send(this,"define_singleton_method",[name+"="],(function $$10(x){var $writer,self=null==$$10.$$s?this:$$10.$$s;return null==self.table&&(self.table=nil),null==x&&(x=nil),$writer=[name,x],$send(self.table,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this})),name}),1),$def(self,"$inspect",(function(){var self=this,result=nil,top=void 0===ostruct_ids,ostruct_id=self.$__id__();return function(){try{return result="#<"+self.$class(),top&&(ostruct_ids={}),ostruct_ids.hasOwnProperty(ostruct_id)?result+" ...>":(ostruct_ids[ostruct_id]=!0,$truthy(self.table["$any?"]())&&(result=$rb_plus(result," ")),result=$rb_plus(result,$send(self.$each_pair(),"map",[],(function(name,value){return null==name&&(name=nil),null==value&&(value=nil),name+"="+value.$inspect()}),2).$join(", ")),result=$rb_plus(result,">"))}finally{top&&(ostruct_ids=void 0)}}()}),0),$alias(self,"to_s","inspect")}($nesting[0],0,$nesting)}; diff --git a/opal/1.4.1/ostruct.min.js.gz b/opal/1.4.1/ostruct.min.js.gz new file mode 100644 index 00000000..581e7e0e Binary files /dev/null and b/opal/1.4.1/ostruct.min.js.gz differ diff --git a/opal/1.4.1/pathname.js b/opal/1.4.1/pathname.js new file mode 100644 index 00000000..32747a98 --- /dev/null +++ b/opal/1.4.1/pathname.js @@ -0,0 +1,499 @@ +Opal.modules["corelib/comparable"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $module = Opal.module, $rb_gt = Opal.rb_gt, $rb_lt = Opal.rb_lt, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $def = Opal.def; + + Opal.add_stubs('>,<,===,raise,class,<=>,equal?'); + return (function($base) { + var self = $module($base, 'Comparable'); + + var $ret_or_1 = nil; + + + + function normalize(what) { + if (Opal.is_a(what, Opal.Integer)) { return what; } + + if ($rb_gt(what, 0)) { return 1; } + if ($rb_lt(what, 0)) { return -1; } + return 0; + } + + function fail_comparison(lhs, rhs) { + var class_name; + (($eqeqeq(nil, ($ret_or_1 = rhs)) || (($eqeqeq(true, $ret_or_1) || (($eqeqeq(false, $ret_or_1) || (($eqeqeq($$$('Integer'), $ret_or_1) || ($eqeqeq($$$('Float'), $ret_or_1))))))))) ? (class_name = rhs.$inspect()) : (class_name = rhs.$$class)) + $Kernel.$raise($$$('ArgumentError'), "comparison of " + ((lhs).$class()) + " with " + (class_name) + " failed") + } + + function cmp_or_fail(lhs, rhs) { + var cmp = (lhs)['$<=>'](rhs); + if (!$truthy(cmp)) fail_comparison(lhs, rhs); + return normalize(cmp); + } + ; + + $def(self, '$==', function $Comparable_$eq_eq$1(other) { + var self = this, cmp = nil; + + + if ($truthy(self['$equal?'](other))) { + return true + }; + + if (self["$<=>"] == Opal.Kernel["$<=>"]) { + return false; + } + + // check for infinite recursion + if (self.$$comparable) { + delete self.$$comparable; + return false; + } + ; + if (!$truthy((cmp = self['$<=>'](other)))) { + return false + }; + return normalize(cmp) == 0;; + }, 1); + + $def(self, '$>', function $Comparable_$gt$2(other) { + var self = this; + + return cmp_or_fail(self, other) > 0; + }, 1); + + $def(self, '$>=', function $Comparable_$gt_eq$3(other) { + var self = this; + + return cmp_or_fail(self, other) >= 0; + }, 1); + + $def(self, '$<', function $Comparable_$lt$4(other) { + var self = this; + + return cmp_or_fail(self, other) < 0; + }, 1); + + $def(self, '$<=', function $Comparable_$lt_eq$5(other) { + var self = this; + + return cmp_or_fail(self, other) <= 0; + }, 1); + + $def(self, '$between?', function $Comparable_between$ques$6(min, max) { + var self = this; + + + if ($rb_lt(self, min)) { + return false + }; + if ($rb_gt(self, max)) { + return false + }; + return true; + }, 2); + return $def(self, '$clamp', function $$clamp(min, max) { + var self = this; + + + + if (max == null) max = nil;; + + var c, excl; + + if (max === nil) { + // We are dealing with a new Ruby 2.7 behaviour that we are able to + // provide a single Range argument instead of 2 Comparables. + + if (!Opal.is_a(min, Opal.Range)) { + $Kernel.$raise($$$('TypeError'), "wrong argument type " + (min.$class()) + " (expected Range)") + } + + excl = min.excl; + max = min.end; + min = min.begin; + + if (max !== nil && excl) { + $Kernel.$raise($$$('ArgumentError'), "cannot clamp with an exclusive range") + } + } + + if (min !== nil && max !== nil && cmp_or_fail(min, max) > 0) { + $Kernel.$raise($$$('ArgumentError'), "min argument must be smaller than max argument") + } + + if (min !== nil) { + c = cmp_or_fail(self, min); + + if (c == 0) return self; + if (c < 0) return min; + } + + if (max !== nil) { + c = cmp_or_fail(self, max); + + if (c > 0) return max; + } + + return self; + ; + }, -2); + })('::') +}; + +Opal.modules["pathname"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $const_set = Opal.const_set, $regexp = Opal.regexp, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $def = Opal.def, $defs = Opal.defs, $to_ary = Opal.to_ary, $send = Opal.send, $to_a = Opal.to_a, $neqeq = Opal.neqeq, $rb_plus = Opal.rb_plus, $not = Opal.not, $alias = Opal.alias, $module = Opal.module; + + Opal.add_stubs('require,include,quote,===,to_s,path,respond_to?,to_path,is_a?,nil?,raise,class,==,new,pwd,attr_reader,!,relative?,chop_basename,basename,=~,source,[],rindex,sub,absolute?,expand_path,plus,unshift,length,!=,empty?,first,shift,+,join,dirname,pop,reverse_each,directory?,extname,<=>,nonzero?,proc,casecmp,cleanpath,inspect,include?,fill,map,entries'); + + self.$require("corelib/comparable"); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Pathname'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.path = nil; + + self.$include($$('Comparable')); + $const_set($nesting[0], 'SEPARATOR_PAT', $regexp([$$('Regexp').$quote($$$($$('File'), 'SEPARATOR'))])); + + $def(self, '$initialize', function $$initialize(path) { + var self = this; + + + if ($eqeqeq($$('Pathname'), path)) { + self.path = path.$path().$to_s() + } else if ($truthy(path['$respond_to?']("to_path"))) { + self.path = path.$to_path() + } else if ($truthy(path['$is_a?']($$('String')))) { + self.path = path + } else if ($truthy(path['$nil?']())) { + self.$raise($$('TypeError'), "no implicit conversion of nil into String") + } else { + self.$raise($$('TypeError'), "no implicit conversion of " + (path.$class()) + " into String") + }; + if ($eqeq(self.path, "\u0000")) { + return self.$raise($$('ArgumentError')) + } else { + return nil + }; + }, 1); + $defs(self, '$pwd', function $$pwd() { + var self = this; + + return self.$new($$('Dir').$pwd()) + }, 0); + self.$attr_reader("path"); + + $def(self, '$==', function $Pathname_$eq_eq$1(other) { + var self = this; + + return other.$path()['$=='](self.path) + }, 1); + + $def(self, '$absolute?', function $Pathname_absolute$ques$2() { + var self = this; + + return self['$relative?']()['$!']() + }, 0); + + $def(self, '$relative?', function $Pathname_relative$ques$3() { + var $a, $b, $c, self = this, path = nil, r = nil; + + + path = self.path; + while ($truthy((r = self.$chop_basename(path)))) { + $c = r, $b = $to_ary($c), (path = ($b[0] == null ? nil : $b[0])), $c + }; + return path['$=='](""); + }, 0); + + $def(self, '$chop_basename', function $$chop_basename(path) { + var base = nil; + + + base = $$('File').$basename(path); + if ($truthy($$('Regexp').$new("^" + ($$$($$('Pathname'), 'SEPARATOR_PAT').$source()) + "?$")['$=~'](base))) { + return nil + } else { + return [path['$[]'](0, path.$rindex(base)), base] + }; + }, 1); + + $def(self, '$root?', function $Pathname_root$ques$4() { + var self = this; + + return self.path['$==']("/") + }, 0); + + $def(self, '$parent', function $$parent() { + var self = this, new_path = nil; + + + new_path = self.path.$sub(/\/([^\/]+\/?$)/, ""); + if ($eqeq(new_path, "")) { + new_path = ($truthy(self['$absolute?']()) ? ("/") : (".")) + }; + return $$('Pathname').$new(new_path); + }, 0); + + $def(self, '$sub', function $$sub($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $$('Pathname').$new($send(self.path, 'sub', $to_a(args))); + }, -1); + + $def(self, '$cleanpath', function $$cleanpath() { + var self = this; + + return Opal.normalize(self.path) + }, 0); + + $def(self, '$to_path', function $$to_path() { + var self = this; + + return self.path + }, 0); + + $def(self, '$hash', function $$hash() { + var self = this; + + return self.path + }, 0); + + $def(self, '$expand_path', function $$expand_path() { + var self = this; + + return $$('Pathname').$new($$('File').$expand_path(self.path)) + }, 0); + + $def(self, '$+', function $Pathname_$plus$5(other) { + var self = this; + + + if (!$eqeqeq($$('Pathname'), other)) { + other = $$('Pathname').$new(other) + }; + return $$('Pathname').$new(self.$plus(self.path, other.$to_s())); + }, 1); + + $def(self, '$plus', function $$plus(path1, path2) { + var $a, $b, $c, self = this, prefix2 = nil, index_list2 = nil, basename_list2 = nil, r2 = nil, basename2 = nil, prefix1 = nil, $ret_or_1 = nil, r1 = nil, basename1 = nil, suffix2 = nil; + + + prefix2 = path2; + index_list2 = []; + basename_list2 = []; + while ($truthy((r2 = self.$chop_basename(prefix2)))) { + + $c = r2, $b = $to_ary($c), (prefix2 = ($b[0] == null ? nil : $b[0])), (basename2 = ($b[1] == null ? nil : $b[1])), $c; + index_list2.$unshift(prefix2.$length()); + basename_list2.$unshift(basename2); + }; + if ($neqeq(prefix2, "")) { + return path2 + }; + prefix1 = path1; + while ($truthy(true)) { + + while ($truthy(($truthy(($ret_or_1 = basename_list2['$empty?']()['$!']())) ? (basename_list2.$first()['$=='](".")) : ($ret_or_1)))) { + + index_list2.$shift(); + basename_list2.$shift(); + }; + if (!$truthy((r1 = self.$chop_basename(prefix1)))) { + break; + }; + $c = r1, $b = $to_ary($c), (prefix1 = ($b[0] == null ? nil : $b[0])), (basename1 = ($b[1] == null ? nil : $b[1])), $c; + if ($eqeq(basename1, ".")) { + continue; + }; + if ((($eqeq(basename1, "..") || ($truthy(basename_list2['$empty?']()))) || ($neqeq(basename_list2.$first(), "..")))) { + + prefix1 = $rb_plus(prefix1, basename1); + break;; + }; + index_list2.$shift(); + basename_list2.$shift(); + }; + r1 = self.$chop_basename(prefix1); + if (($not(r1) && ($truthy($regexp([$$('SEPARATOR_PAT')])['$=~']($$('File').$basename(prefix1)))))) { + while ($truthy(($truthy(($ret_or_1 = basename_list2['$empty?']()['$!']())) ? (basename_list2.$first()['$==']("..")) : ($ret_or_1)))) { + + index_list2.$shift(); + basename_list2.$shift(); + } + }; + if ($not(basename_list2['$empty?']())) { + + suffix2 = path2['$[]'](Opal.Range.$new(index_list2.$first(), -1, false)); + if ($truthy(r1)) { + return $$('File').$join(prefix1, suffix2) + } else { + return $rb_plus(prefix1, suffix2) + }; + } else if ($truthy(r1)) { + return prefix1 + } else { + return $$('File').$dirname(prefix1) + }; + }, 2); + + $def(self, '$join', function $$join($a) {try { + + var $post_args, args, self = this, result = nil; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + if ($truthy(args['$empty?']())) { + return self + }; + result = args.$pop(); + if (!$eqeqeq($$('Pathname'), result)) { + result = $$('Pathname').$new(result) + }; + if ($truthy(result['$absolute?']())) { + return result + }; + $send(args, 'reverse_each', [], function $$6(arg){ + + + if (arg == null) arg = nil;; + if (!$eqeqeq($$('Pathname'), arg)) { + arg = $$('Pathname').$new(arg) + }; + result = $rb_plus(arg, result); + if ($truthy(result['$absolute?']())) { + Opal.ret(result) + } else { + return nil + };}, 1); + return $rb_plus(self, result); + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, -1); + + $def(self, '$split', function $$split() { + var self = this; + + return [self.$dirname(), self.$basename()] + }, 0); + + $def(self, '$dirname', function $$dirname() { + var self = this; + + return $$('Pathname').$new($$('File').$dirname(self.path)) + }, 0); + + $def(self, '$basename', function $$basename() { + var self = this; + + return $$('Pathname').$new($$('File').$basename(self.path)) + }, 0); + + $def(self, '$directory?', function $Pathname_directory$ques$7() { + var self = this; + + return $$('File')['$directory?'](self.path) + }, 0); + + $def(self, '$extname', function $$extname() { + var self = this; + + return $$('File').$extname(self.path) + }, 0); + + $def(self, '$<=>', function $Pathname_$lt_eq_gt$8(other) { + var self = this; + + return self.$path()['$<=>'](other.$path()) + }, 1); + $const_set($nesting[0], 'SAME_PATHS', ($truthy($$$($$('File'), 'FNM_SYSCASE')['$nonzero?']()) ? ($send(self, 'proc', [], function $Pathname$9(a, b){ + + + if (a == null) a = nil;; + + if (b == null) b = nil;; + return a.$casecmp(b)['$=='](0);}, 2)) : ($send(self, 'proc', [], function $Pathname$10(a, b){ + + + if (a == null) a = nil;; + + if (b == null) b = nil;; + return a['$=='](b);}, 2)))); + + $def(self, '$relative_path_from', function $$relative_path_from(base_directory) { + var $a, $b, $c, self = this, dest_directory = nil, dest_prefix = nil, dest_names = nil, r = nil, basename = nil, base_prefix = nil, base_names = nil, $ret_or_1 = nil, $ret_or_2 = nil, relpath_names = nil; + + + dest_directory = self.$cleanpath().$to_s(); + base_directory = base_directory.$cleanpath().$to_s(); + dest_prefix = dest_directory; + dest_names = []; + while ($truthy((r = self.$chop_basename(dest_prefix)))) { + + $c = r, $b = $to_ary($c), (dest_prefix = ($b[0] == null ? nil : $b[0])), (basename = ($b[1] == null ? nil : $b[1])), $c; + if ($neqeq(basename, ".")) { + dest_names.$unshift(basename) + }; + }; + base_prefix = base_directory; + base_names = []; + while ($truthy((r = self.$chop_basename(base_prefix)))) { + + $c = r, $b = $to_ary($c), (base_prefix = ($b[0] == null ? nil : $b[0])), (basename = ($b[1] == null ? nil : $b[1])), $c; + if ($neqeq(basename, ".")) { + base_names.$unshift(basename) + }; + }; + if (!$truthy($$('SAME_PATHS')['$[]'](dest_prefix, base_prefix))) { + self.$raise($$('ArgumentError'), "different prefix: " + (dest_prefix.$inspect()) + " and " + (base_directory.$inspect())) + }; + while ($truthy(($truthy(($ret_or_1 = ($truthy(($ret_or_2 = dest_names['$empty?']()['$!']())) ? (base_names['$empty?']()['$!']()) : ($ret_or_2)))) ? ($$('SAME_PATHS')['$[]'](dest_names.$first(), base_names.$first())) : ($ret_or_1)))) { + + dest_names.$shift(); + base_names.$shift(); + }; + if ($truthy(base_names['$include?'](".."))) { + self.$raise($$('ArgumentError'), "base_directory has ..: " + (base_directory.$inspect())) + }; + base_names.$fill(".."); + relpath_names = $rb_plus(base_names, dest_names); + if ($truthy(relpath_names['$empty?']())) { + return $$('Pathname').$new(".") + } else { + return $$('Pathname').$new($send($$('File'), 'join', $to_a(relpath_names))) + }; + }, 1); + + $def(self, '$entries', function $$entries() { + var self = this; + + return $send($$('Dir').$entries(self.path), 'map', [], function $$11(f){var self = $$11.$$s == null ? this : $$11.$$s; + + + + if (f == null) f = nil;; + return self.$class().$new(f);}, {$$arity: 1, $$s: self}) + }, 0); + $alias(self, "===", "=="); + $alias(self, "eql?", "=="); + $alias(self, "to_s", "to_path"); + return $alias(self, "to_str", "to_path"); + })($nesting[0], null, $nesting); + return (function($base, $parent_nesting) { + var self = $module($base, 'Kernel'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$Pathname', function $$Pathname(path) { + + return $$('Pathname').$new(path) + }, 1) + })($nesting[0], $nesting); +}; diff --git a/opal/1.4.1/pathname.min.js b/opal/1.4.1/pathname.min.js new file mode 100644 index 00000000..107da7c8 --- /dev/null +++ b/opal/1.4.1/pathname.min.js @@ -0,0 +1 @@ +Opal.modules["corelib/comparable"]=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$truthy=Opal.truthy,$module=Opal.module,$rb_gt=Opal.rb_gt,$rb_lt=Opal.rb_lt,$eqeqeq=Opal.eqeqeq,$Kernel=Opal.Kernel,$def=Opal.def;return Opal.add_stubs(">,<,===,raise,class,<=>,equal?"),function($base){var self=$module("::","Comparable"),$ret_or_1=nil;function normalize(what){return Opal.is_a(what,Opal.Integer)?what:$rb_gt(what,0)?1:$rb_lt(what,0)?-1:0}function cmp_or_fail(lhs,rhs){var cmp=lhs["$<=>"](rhs);return $truthy(cmp)||function(lhs,rhs){var class_name;class_name=$eqeqeq(nil,$ret_or_1=rhs)||$eqeqeq(!0,$ret_or_1)||$eqeqeq(!1,$ret_or_1)||$eqeqeq($$$("Integer"),$ret_or_1)||$eqeqeq($$$("Float"),$ret_or_1)?rhs.$inspect():rhs.$$class,$Kernel.$raise($$$("ArgumentError"),"comparison of "+lhs.$class()+" with "+class_name+" failed")}(lhs,rhs),normalize(cmp)}return $def(self,"$==",(function(other){var cmp;return!!$truthy(this["$equal?"](other))||this["$<=>"]!=Opal.Kernel["$<=>"]&&(this.$$comparable?(delete this.$$comparable,!1):!!$truthy(cmp=this["$<=>"](other))&&0==normalize(cmp))}),1),$def(self,"$>",(function(other){return cmp_or_fail(this,other)>0}),1),$def(self,"$>=",(function(other){return cmp_or_fail(this,other)>=0}),1),$def(self,"$<",(function(other){return cmp_or_fail(this,other)<0}),1),$def(self,"$<=",(function(other){return cmp_or_fail(this,other)<=0}),1),$def(self,"$between?",(function(min,max){return!$rb_lt(this,min)&&!$rb_gt(this,max)}),2),$def(self,"$clamp",(function(min,max){var c,excl;if(null==max&&(max=nil),max===nil&&(Opal.is_a(min,Opal.Range)||$Kernel.$raise($$$("TypeError"),"wrong argument type "+min.$class()+" (expected Range)"),excl=min.excl,max=min.end,min=min.begin,max!==nil&&excl&&$Kernel.$raise($$$("ArgumentError"),"cannot clamp with an exclusive range")),min!==nil&&max!==nil&&cmp_or_fail(min,max)>0&&$Kernel.$raise($$$("ArgumentError"),"min argument must be smaller than max argument"),min!==nil){if(0==(c=cmp_or_fail(this,min)))return this;if(c<0)return min}return max!==nil&&(c=cmp_or_fail(this,max))>0?max:this}),-2)}()},Opal.modules.pathname=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def,$defs=Opal.defs,$to_ary=Opal.to_ary,$send=Opal.send,$to_a=Opal.to_a,$neqeq=Opal.neqeq,$rb_plus=Opal.rb_plus,$not=Opal.not,$alias=Opal.alias,$module=Opal.module;return Opal.add_stubs("require,include,quote,===,to_s,path,respond_to?,to_path,is_a?,nil?,raise,class,==,new,pwd,attr_reader,!,relative?,chop_basename,basename,=~,source,[],rindex,sub,absolute?,expand_path,plus,unshift,length,!=,empty?,first,shift,+,join,dirname,pop,reverse_each,directory?,extname,<=>,nonzero?,proc,casecmp,cleanpath,inspect,include?,fill,map,entries"),self.$require("corelib/comparable"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Pathname"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.path=nil,self.$include($$("Comparable")),$const_set($nesting[0],"SEPARATOR_PAT",$regexp([$$("Regexp").$quote($$$($$("File"),"SEPARATOR"))])),$def(self,"$initialize",(function(path){return $eqeqeq($$("Pathname"),path)?this.path=path.$path().$to_s():$truthy(path["$respond_to?"]("to_path"))?this.path=path.$to_path():$truthy(path["$is_a?"]($$("String")))?this.path=path:$truthy(path["$nil?"]())?this.$raise($$("TypeError"),"no implicit conversion of nil into String"):this.$raise($$("TypeError"),"no implicit conversion of "+path.$class()+" into String"),$eqeq(this.path,"\0")?this.$raise($$("ArgumentError")):nil}),1),$defs(self,"$pwd",(function(){return this.$new($$("Dir").$pwd())}),0),self.$attr_reader("path"),$def(self,"$==",(function(other){return other.$path()["$=="](this.path)}),1),$def(self,"$absolute?",(function(){return this["$relative?"]()["$!"]()}),0),$def(self,"$relative?",(function(){var $b,path=nil,r=nil;for(path=this.path;$truthy(r=this.$chop_basename(path));)path=null==($b=$to_ary(r))[0]?nil:$b[0];return path["$=="]("")}),0),$def(self,"$chop_basename",(function(path){var base;return base=$$("File").$basename(path),$truthy($$("Regexp").$new("^"+$$$($$("Pathname"),"SEPARATOR_PAT").$source()+"?$")["$=~"](base))?nil:[path["$[]"](0,path.$rindex(base)),base]}),1),$def(self,"$root?",(function(){return this.path["$=="]("/")}),0),$def(self,"$parent",(function(){var new_path=nil;return new_path=this.path.$sub(/\/([^\/]+\/?$)/,""),$eqeq(new_path,"")&&(new_path=$truthy(this["$absolute?"]())?"/":"."),$$("Pathname").$new(new_path)}),0),$def(self,"$sub",(function($a){var args,self=this;return args=Opal.slice.call(arguments),$$("Pathname").$new($send(self.path,"sub",$to_a(args)))}),-1),$def(self,"$cleanpath",(function(){return Opal.normalize(this.path)}),0),$def(self,"$to_path",(function(){return this.path}),0),$def(self,"$hash",(function(){return this.path}),0),$def(self,"$expand_path",(function(){return $$("Pathname").$new($$("File").$expand_path(this.path))}),0),$def(self,"$+",(function(other){return $eqeqeq($$("Pathname"),other)||(other=$$("Pathname").$new(other)),$$("Pathname").$new(this.$plus(this.path,other.$to_s()))}),1),$def(self,"$plus",(function(path1,path2){var $b,prefix2=nil,index_list2=nil,basename_list2=nil,r2=nil,basename2=nil,prefix1=nil,$ret_or_1=nil,r1=nil,basename1=nil,suffix2=nil;for(prefix2=path2,index_list2=[],basename_list2=[];$truthy(r2=this.$chop_basename(prefix2));)prefix2=null==($b=$to_ary(r2))[0]?nil:$b[0],basename2=null==$b[1]?nil:$b[1],index_list2.$unshift(prefix2.$length()),basename_list2.$unshift(basename2);if($neqeq(prefix2,""))return path2;for(prefix1=path1;$truthy(!0);){for(;$truthy($truthy($ret_or_1=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="]("."):$ret_or_1);)index_list2.$shift(),basename_list2.$shift();if(!$truthy(r1=this.$chop_basename(prefix1)))break;if(prefix1=null==($b=$to_ary(r1))[0]?nil:$b[0],basename1=null==$b[1]?nil:$b[1],!$eqeq(basename1,".")){if($eqeq(basename1,"..")||$truthy(basename_list2["$empty?"]())||$neqeq(basename_list2.$first(),"..")){prefix1=$rb_plus(prefix1,basename1);break}index_list2.$shift(),basename_list2.$shift()}}if(r1=this.$chop_basename(prefix1),$not(r1)&&$truthy($regexp([$$("SEPARATOR_PAT")])["$=~"]($$("File").$basename(prefix1))))for(;$truthy($truthy($ret_or_1=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="](".."):$ret_or_1);)index_list2.$shift(),basename_list2.$shift();return $not(basename_list2["$empty?"]())?(suffix2=path2["$[]"](Opal.Range.$new(index_list2.$first(),-1,!1)),$truthy(r1)?$$("File").$join(prefix1,suffix2):$rb_plus(prefix1,suffix2)):$truthy(r1)?prefix1:$$("File").$dirname(prefix1)}),2),$def(self,"$join",(function($a){try{var $post_args,args,self=this,result=nil;return $post_args=Opal.slice.call(arguments),$truthy((args=$post_args)["$empty?"]())?self:(result=args.$pop(),$eqeqeq($$("Pathname"),result)||(result=$$("Pathname").$new(result)),$truthy(result["$absolute?"]())?result:($send(args,"reverse_each",[],(function(arg){if(null==arg&&(arg=nil),$eqeqeq($$("Pathname"),arg)||(arg=$$("Pathname").$new(arg)),result=$rb_plus(arg,result),!$truthy(result["$absolute?"]()))return nil;Opal.ret(result)}),1),$rb_plus(self,result)))}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$split",(function(){return[this.$dirname(),this.$basename()]}),0),$def(self,"$dirname",(function(){return $$("Pathname").$new($$("File").$dirname(this.path))}),0),$def(self,"$basename",(function(){return $$("Pathname").$new($$("File").$basename(this.path))}),0),$def(self,"$directory?",(function(){return $$("File")["$directory?"](this.path)}),0),$def(self,"$extname",(function(){return $$("File").$extname(this.path)}),0),$def(self,"$<=>",(function(other){return this.$path()["$<=>"](other.$path())}),1),$const_set($nesting[0],"SAME_PATHS",$truthy($$$($$("File"),"FNM_SYSCASE")["$nonzero?"]())?$send(self,"proc",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a.$casecmp(b)["$=="](0)}),2):$send(self,"proc",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a["$=="](b)}),2)),$def(self,"$relative_path_from",(function(base_directory){var $b,dest_directory,dest_prefix=nil,dest_names=nil,r=nil,basename=nil,base_prefix=nil,base_names=nil,$ret_or_1=nil,$ret_or_2=nil,relpath_names=nil;for(dest_directory=this.$cleanpath().$to_s(),base_directory=base_directory.$cleanpath().$to_s(),dest_prefix=dest_directory,dest_names=[];$truthy(r=this.$chop_basename(dest_prefix));)dest_prefix=null==($b=$to_ary(r))[0]?nil:$b[0],basename=null==$b[1]?nil:$b[1],$neqeq(basename,".")&&dest_names.$unshift(basename);for(base_prefix=base_directory,base_names=[];$truthy(r=this.$chop_basename(base_prefix));)base_prefix=null==($b=$to_ary(r))[0]?nil:$b[0],basename=null==$b[1]?nil:$b[1],$neqeq(basename,".")&&base_names.$unshift(basename);for($truthy($$("SAME_PATHS")["$[]"](dest_prefix,base_prefix))||this.$raise($$("ArgumentError"),"different prefix: "+dest_prefix.$inspect()+" and "+base_directory.$inspect());$truthy($truthy($ret_or_1=$truthy($ret_or_2=dest_names["$empty?"]()["$!"]())?base_names["$empty?"]()["$!"]():$ret_or_2)?$$("SAME_PATHS")["$[]"](dest_names.$first(),base_names.$first()):$ret_or_1);)dest_names.$shift(),base_names.$shift();return $truthy(base_names["$include?"](".."))&&this.$raise($$("ArgumentError"),"base_directory has ..: "+base_directory.$inspect()),base_names.$fill(".."),relpath_names=$rb_plus(base_names,dest_names),$truthy(relpath_names["$empty?"]())?$$("Pathname").$new("."):$$("Pathname").$new($send($$("File"),"join",$to_a(relpath_names)))}),1),$def(self,"$entries",(function(){return $send($$("Dir").$entries(this.path),"map",[],(function $$11(f){return null==f&&(f=nil),(null==$$11.$$s?this:$$11.$$s).$class().$new(f)}),{$$arity:1,$$s:this})}),0),$alias(self,"===","=="),$alias(self,"eql?","=="),$alias(self,"to_s","to_path"),$alias(self,"to_str","to_path")}($nesting[0],0,$nesting),function($base,$parent_nesting){var self=$module($base,"Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$Pathname",(function(path){return $$("Pathname").$new(path)}),1)}($nesting[0],$nesting)}; diff --git a/opal/1.4.1/pathname.min.js.gz b/opal/1.4.1/pathname.min.js.gz new file mode 100644 index 00000000..6637ef5d Binary files /dev/null and b/opal/1.4.1/pathname.min.js.gz differ diff --git a/opal/1.4.1/pp.js b/opal/1.4.1/pp.js new file mode 100644 index 00000000..e21b27a2 --- /dev/null +++ b/opal/1.4.1/pp.js @@ -0,0 +1,1548 @@ +Opal.modules["thread"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $truthy = Opal.truthy, $defs = Opal.defs, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $hash2 = Opal.hash2, $Opal = Opal.Opal, $alias = Opal.alias, $const_set = Opal.const_set; + + Opal.add_stubs('allocate,core_initialize!,current,raise,[],coerce_key_name,[]=,-,key?,keys,private,coerce_to!,clear,empty?,size,shift,push,each,to_proc,=~,last_match,to_i,inspect,attr_reader,locked?,lock,unlock'); + + $klass($nesting[0], $$('StandardError'), 'ThreadError'); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Thread'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.fiber_locals = $proto.thread_locals = nil; + + $defs(self, '$current', function $$current() { + var self = this; + if (self.current == null) self.current = nil; + + + if (!$truthy(self.current)) { + + self.current = self.$allocate(); + self.current['$core_initialize!'](); + }; + return self.current; + }, 0); + $defs(self, '$list', function $$list() { + var self = this; + + return [self.$current()] + }, 0); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return self.$raise($$('NotImplementedError'), "Thread creation not available"); + }, -1); + + $def(self, '$[]', function $Thread_$$$1(key) { + var self = this; + + return self.fiber_locals['$[]'](self.$coerce_key_name(key)) + }, 1); + + $def(self, '$[]=', function $Thread_$$$eq$2(key, value) { + var self = this, $writer = nil; + + + $writer = [self.$coerce_key_name(key), value]; + $send(self.fiber_locals, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }, 2); + + $def(self, '$key?', function $Thread_key$ques$3(key) { + var self = this; + + return self.fiber_locals['$key?'](self.$coerce_key_name(key)) + }, 1); + + $def(self, '$keys', function $$keys() { + var self = this; + + return self.fiber_locals.$keys() + }, 0); + + $def(self, '$thread_variable_get', function $$thread_variable_get(key) { + var self = this; + + return self.thread_locals['$[]'](self.$coerce_key_name(key)) + }, 1); + + $def(self, '$thread_variable_set', function $$thread_variable_set(key, value) { + var self = this, $writer = nil; + + + $writer = [self.$coerce_key_name(key), value]; + $send(self.thread_locals, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }, 2); + + $def(self, '$thread_variable?', function $Thread_thread_variable$ques$4(key) { + var self = this; + + return self.thread_locals['$key?'](self.$coerce_key_name(key)) + }, 1); + + $def(self, '$thread_variables', function $$thread_variables() { + var self = this; + + return self.thread_locals.$keys() + }, 0); + self.$private(); + + $def(self, '$core_initialize!', function $Thread_core_initialize$excl$5() { + var self = this; + + + self.thread_locals = $hash2([], {}); + return (self.fiber_locals = $hash2([], {})); + }, 0); + + $def(self, '$coerce_key_name', function $$coerce_key_name(key) { + + return $Opal['$coerce_to!'](key, $$('String'), "to_s") + }, 1); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Queue'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.storage = nil; + + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return self.$clear() + }, 0); + + $def(self, '$clear', function $$clear() { + var self = this; + + return (self.storage = []) + }, 0); + + $def(self, '$empty?', function $Queue_empty$ques$6() { + var self = this; + + return self.storage['$empty?']() + }, 0); + + $def(self, '$size', function $$size() { + var self = this; + + return self.storage.$size() + }, 0); + + $def(self, '$pop', function $$pop(non_block) { + var self = this; + + + + if (non_block == null) non_block = false;; + if ($truthy(self['$empty?']())) { + + if ($truthy(non_block)) { + self.$raise($$('ThreadError'), "Queue empty") + }; + self.$raise($$('ThreadError'), "Deadlock"); + }; + return self.storage.$shift(); + }, -1); + + $def(self, '$push', function $$push(value) { + var self = this; + + return self.storage.$push(value) + }, 1); + + $def(self, '$each', function $$each() { + var block = $$each.$$p || nil, self = this; + + delete $$each.$$p; + + ; + return $send(self.storage, 'each', [], block.$to_proc()); + }, 0); + $alias(self, "<<", "push"); + $alias(self, "deq", "pop"); + $alias(self, "enq", "push"); + $alias(self, "length", "size"); + return $alias(self, "shift", "pop"); + })($nesting[0], null, $nesting); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Backtrace'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Location'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.label = $proto.str = nil; + + + $def(self, '$initialize', function $$initialize(str) { + var self = this, $ret_or_1 = nil; + + + self.str = str; + str['$=~'](/^(.*?):(\d+):(\d+):in `(.*?)'$/); + self.path = $$('Regexp').$last_match(1); + self.label = $$('Regexp').$last_match(4); + self.lineno = $$('Regexp').$last_match(2).$to_i(); + self.label['$=~'](/(\w+)$/); + return (self.base_label = ($truthy(($ret_or_1 = $$('Regexp').$last_match(1))) ? ($ret_or_1) : (self.label))); + }, 1); + + $def(self, '$to_s', function $$to_s() { + var self = this; + + return self.str + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return self.str.$inspect() + }, 0); + self.$attr_reader("base_label", "label", "lineno", "path"); + return $alias(self, "absolute_path", "path"); + })($nesting[0], null, $nesting) + })($nesting[0], null, $nesting); + })($nesting[0], null, $nesting); + $const_set($nesting[0], 'Queue', $$$($$('Thread'), 'Queue')); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Mutex'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.locked = nil; + + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return (self.locked = false) + }, 0); + + $def(self, '$lock', function $$lock() { + var self = this; + + + if ($truthy(self.locked)) { + self.$raise($$('ThreadError'), "Deadlock") + }; + self.locked = true; + return self; + }, 0); + + $def(self, '$locked?', function $Mutex_locked$ques$7() { + var self = this; + + return self.locked + }, 0); + + $def(self, '$owned?', function $Mutex_owned$ques$8() { + var self = this; + + return self.locked + }, 0); + + $def(self, '$try_lock', function $$try_lock() { + var self = this; + + if ($truthy(self['$locked?']())) { + return false + } else { + + self.$lock(); + return true; + } + }, 0); + + $def(self, '$unlock', function $$unlock() { + var self = this; + + + if (!$truthy(self.locked)) { + self.$raise($$('ThreadError'), "Mutex not locked") + }; + self.locked = false; + return self; + }, 0); + return $def(self, '$synchronize', function $$synchronize() { + var $yield = $$synchronize.$$p || nil, self = this; + + delete $$synchronize.$$p; + + self.$lock(); + + return (function() { try { + return Opal.yieldX($yield, []); + } finally { + self.$unlock() + }; })();; + }, 0); + })($nesting[0], null, $nesting); +}; + +Opal.modules["stringio"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $defs = Opal.defs, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $rb_ge = Opal.rb_ge, $rb_gt = Opal.rb_gt, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq, $alias = Opal.alias; + + Opal.add_stubs('new,call,close,attr_accessor,check_readable,==,length,===,>=,raise,>,+,-,seek,check_writable,String,[],eof?,write,read'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'StringIO'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.position = $proto.string = nil; + + $defs(self, '$open', function $$open(string, mode) { + var block = $$open.$$p || nil, self = this, io = nil, res = nil; + + delete $$open.$$p; + + ; + + if (string == null) string = "";; + + if (mode == null) mode = nil;; + io = self.$new(string, mode); + res = block.$call(io); + io.$close(); + return res; + }, -1); + self.$attr_accessor("string"); + + $def(self, '$initialize', function $$initialize(string, mode) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + if (string == null) string = "";; + + if (mode == null) mode = "rw";; + self.string = string; + self.position = 0; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [nil, mode], null); + }, -1); + + $def(self, '$eof?', function $StringIO_eof$ques$1() { + var self = this; + + + self.$check_readable(); + return self.position['$=='](self.string.$length()); + }, 0); + + $def(self, '$seek', function $$seek(pos, whence) { + var self = this, $ret_or_1 = nil; + + + + if (whence == null) whence = $$$($$('IO'), 'SEEK_SET');; + self.read_buffer = ""; + if ($eqeqeq($$$($$('IO'), 'SEEK_SET'), ($ret_or_1 = whence))) { + + if (!$truthy($rb_ge(pos, 0))) { + self.$raise($$$($$('Errno'), 'EINVAL')) + }; + self.position = pos; + } else if ($eqeqeq($$$($$('IO'), 'SEEK_CUR'), $ret_or_1)) { + if ($truthy($rb_gt($rb_plus(self.position, pos), self.string.$length()))) { + self.position = self.string.$length() + } else { + self.position = $rb_plus(self.position, pos) + } + } else if ($eqeqeq($$$($$('IO'), 'SEEK_END'), $ret_or_1)) { + if ($truthy($rb_gt(pos, self.string.$length()))) { + self.position = 0 + } else { + self.position = $rb_minus(self.position, pos) + } + } else { + nil + }; + return 0; + }, -2); + + $def(self, '$tell', function $$tell() { + var self = this; + + return self.position + }, 0); + + $def(self, '$rewind', function $$rewind() { + var self = this; + + return self.$seek(0) + }, 0); + + $def(self, '$write', function $$write(string) { + var self = this, before = nil, after = nil; + + + self.$check_writable(); + self.read_buffer = ""; + string = self.$String(string); + if ($eqeq(self.string.$length(), self.position)) { + + self.string = $rb_plus(self.string, string); + return (self.position = $rb_plus(self.position, string.$length())); + } else { + + before = self.string['$[]'](Opal.Range.$new(0, $rb_minus(self.position, 1), false)); + after = self.string['$[]'](Opal.Range.$new($rb_plus(self.position, string.$length()), -1, false)); + self.string = $rb_plus($rb_plus(before, string), after); + return (self.position = $rb_plus(self.position, string.$length())); + }; + }, 1); + + $def(self, '$read', function $$read(length, outbuf) { + var self = this, string = nil, str = nil; + + + + if (length == null) length = nil;; + + if (outbuf == null) outbuf = nil;; + self.$check_readable(); + if ($truthy(self['$eof?']())) { + return nil + }; + string = ($truthy(length) ? (((str = self.string['$[]'](self.position, length)), (self.position = $rb_plus(self.position, length)), ($truthy($rb_gt(self.position, self.string.$length())) ? ((self.position = self.string.$length())) : nil), str)) : (((str = self.string['$[]'](Opal.Range.$new(self.position, -1, false))), (self.position = self.string.$length()), str))); + if ($truthy(outbuf)) { + return outbuf.$write(string) + } else { + return string + }; + }, -1); + + $def(self, '$sysread', function $$sysread(length) { + var self = this; + + + self.$check_readable(); + return self.$read(length); + }, 1); + $alias(self, "eof", "eof?"); + $alias(self, "pos", "tell"); + $alias(self, "pos=", "seek"); + return $alias(self, "readpartial", "read"); + })($nesting[0], $$('IO'), $nesting) +}; + +Opal.modules["prettyprint"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $klass = Opal.klass, $send = Opal.send, $rb_times = Opal.rb_times, $defs = Opal.defs, $truthy = Opal.truthy, $def = Opal.def, $rb_lt = Opal.rb_lt, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $eqeqeq = Opal.eqeqeq, $to_a = Opal.to_a; + + Opal.add_stubs('dup,lambda,*,new,to_proc,flush,attr_reader,last,<,+,deq,empty?,breakables,shift,output,-,width,!,===,first,length,<<,add,break_outmost_groups,group,breakable,break?,call,text,group_sub,nest,depth,push,enq,pop,delete,each,clear,indent,current_group,newline,genspace,group_queue,[],downto,slice!,break,[]='); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'PrettyPrint'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.group_stack = $proto.maxwidth = $proto.output_width = $proto.buffer_width = $proto.group_queue = $proto.buffer = $proto.output = $proto.newline = $proto.genspace = $proto.indent = nil; + + $defs($$('PrettyPrint'), '$format', function $$format(output, maxwidth, newline, genspace) { + var $yield = $$format.$$p || nil, self = this, q = nil; + + delete $$format.$$p; + + + if (output == null) output = "".$dup();; + + if (maxwidth == null) maxwidth = 79;; + + if (newline == null) newline = "\n";; + + if (genspace == null) genspace = $send(self, 'lambda', [], function $$1(n){ + + + if (n == null) n = nil;; + return $rb_times(" ", n);}, 1);; + q = $send($$('PrettyPrint'), 'new', [output, maxwidth, newline], genspace.$to_proc()); + Opal.yield1($yield, q); + q.$flush(); + return output; + }, -1); + $defs($$('PrettyPrint'), '$singleline_format', function $$singleline_format(output, maxwidth, newline, genspace) { + var $yield = $$singleline_format.$$p || nil, q = nil; + + delete $$singleline_format.$$p; + + + if (output == null) output = "".$dup();; + + if (maxwidth == null) maxwidth = nil;; + + if (newline == null) newline = nil;; + + if (genspace == null) genspace = nil;; + q = $$('SingleLine').$new(output); + Opal.yield1($yield, q); + return output; + }, -1); + + $def(self, '$initialize', function $$initialize(output, maxwidth, newline) { + var genspace = $$initialize.$$p || nil, self = this, $ret_or_1 = nil, root_group = nil; + + delete $$initialize.$$p; + + ; + + if (output == null) output = "".$dup();; + + if (maxwidth == null) maxwidth = 79;; + + if (newline == null) newline = "\n";; + self.output = output; + self.maxwidth = maxwidth; + self.newline = newline; + self.genspace = ($truthy(($ret_or_1 = genspace)) ? ($ret_or_1) : ($send(self, 'lambda', [], function $$2(n){ + + + if (n == null) n = nil;; + return $rb_times(" ", n);}, 1))); + self.output_width = 0; + self.buffer_width = 0; + self.buffer = []; + root_group = $$('Group').$new(0); + self.group_stack = [root_group]; + self.group_queue = $$('GroupQueue').$new(root_group); + return (self.indent = 0); + }, -1); + self.$attr_reader("output"); + self.$attr_reader("maxwidth"); + self.$attr_reader("newline"); + self.$attr_reader("genspace"); + self.$attr_reader("indent"); + self.$attr_reader("group_queue"); + + $def(self, '$current_group', function $$current_group() { + var self = this; + + return self.group_stack.$last() + }, 0); + + $def(self, '$break_outmost_groups', function $$break_outmost_groups() { + var $a, $b, self = this, group = nil, data = nil, $ret_or_1 = nil, text = nil; + + while ($truthy($rb_lt(self.maxwidth, $rb_plus(self.output_width, self.buffer_width)))) { + + if (!$truthy((group = self.group_queue.$deq()))) { + return nil + }; + while (!($truthy(group.$breakables()['$empty?']()))) { + + data = self.buffer.$shift(); + self.output_width = data.$output(self.output, self.output_width); + self.buffer_width = $rb_minus(self.buffer_width, data.$width()); + }; + while ($truthy(($truthy(($ret_or_1 = self.buffer['$empty?']()['$!']())) ? ($$('Text')['$==='](self.buffer.$first())) : ($ret_or_1)))) { + + text = self.buffer.$shift(); + self.output_width = text.$output(self.output, self.output_width); + self.buffer_width = $rb_minus(self.buffer_width, text.$width()); + }; + } + }, 0); + + $def(self, '$text', function $$text(obj, width) { + var self = this, text = nil; + + + + if (width == null) width = obj.$length();; + if ($truthy(self.buffer['$empty?']())) { + + self.output['$<<'](obj); + return (self.output_width = $rb_plus(self.output_width, width)); + } else { + + text = self.buffer.$last(); + if (!$eqeqeq($$('Text'), text)) { + + text = $$('Text').$new(); + self.buffer['$<<'](text); + }; + text.$add(obj, width); + self.buffer_width = $rb_plus(self.buffer_width, width); + return self.$break_outmost_groups(); + }; + }, -2); + + $def(self, '$fill_breakable', function $$fill_breakable(sep, width) { + var self = this; + + + + if (sep == null) sep = " ";; + + if (width == null) width = sep.$length();; + return $send(self, 'group', [], function $$3(){var self = $$3.$$s == null ? this : $$3.$$s; + + return self.$breakable(sep, width)}, {$$arity: 0, $$s: self}); + }, -1); + + $def(self, '$breakable', function $$breakable(sep, width) { + var self = this, group = nil; + + + + if (sep == null) sep = " ";; + + if (width == null) width = sep.$length();; + group = self.group_stack.$last(); + if ($truthy(group['$break?']())) { + + self.$flush(); + self.output['$<<'](self.newline); + self.output['$<<'](self.genspace.$call(self.indent)); + self.output_width = self.indent; + return (self.buffer_width = 0); + } else { + + self.buffer['$<<']($$('Breakable').$new(sep, width, self)); + self.buffer_width = $rb_plus(self.buffer_width, width); + return self.$break_outmost_groups(); + }; + }, -1); + + $def(self, '$group', function $$group(indent, open_obj, close_obj, open_width, close_width) { + var $yield = $$group.$$p || nil, self = this; + + delete $$group.$$p; + + + if (indent == null) indent = 0;; + + if (open_obj == null) open_obj = "";; + + if (close_obj == null) close_obj = "";; + + if (open_width == null) open_width = open_obj.$length();; + + if (close_width == null) close_width = close_obj.$length();; + self.$text(open_obj, open_width); + $send(self, 'group_sub', [], function $$4(){var self = $$4.$$s == null ? this : $$4.$$s; + + return $send(self, 'nest', [indent], function $$5(){ + return Opal.yieldX($yield, []);}, 0)}, {$$arity: 0, $$s: self}); + return self.$text(close_obj, close_width); + }, -1); + + $def(self, '$group_sub', function $$group_sub() { + var $yield = $$group_sub.$$p || nil, self = this, group = nil; + + delete $$group_sub.$$p; + + group = $$('Group').$new($rb_plus(self.group_stack.$last().$depth(), 1)); + self.group_stack.$push(group); + self.group_queue.$enq(group); + + return (function() { try { + return Opal.yieldX($yield, []); + } finally { + (self.group_stack.$pop(), ($truthy(group.$breakables()['$empty?']()) ? (self.group_queue.$delete(group)) : nil)) + }; })();; + }, 0); + + $def(self, '$nest', function $$nest(indent) { + var $yield = $$nest.$$p || nil, self = this; + + delete $$nest.$$p; + + self.indent = $rb_plus(self.indent, indent); + + return (function() { try { + return Opal.yieldX($yield, []); + } finally { + (self.indent = $rb_minus(self.indent, indent)) + }; })();; + }, 1); + + $def(self, '$flush', function $$flush() { + var self = this; + + + $send(self.buffer, 'each', [], function $$6(data){var self = $$6.$$s == null ? this : $$6.$$s; + if (self.output == null) self.output = nil; + if (self.output_width == null) self.output_width = nil; + + + + if (data == null) data = nil;; + return (self.output_width = data.$output(self.output, self.output_width));}, {$$arity: 1, $$s: self}); + self.buffer.$clear(); + return (self.buffer_width = 0); + }, 0); + (function($base, $super) { + var self = $klass($base, $super, 'Text'); + + var $proto = self.$$prototype; + + $proto.objs = $proto.width = nil; + + + $def(self, '$initialize', function $$initialize() { + var self = this; + + + self.objs = []; + return (self.width = 0); + }, 0); + self.$attr_reader("width"); + + $def(self, '$output', function $$output(out, output_width) { + var self = this; + + + $send(self.objs, 'each', [], function $$7(obj){ + + + if (obj == null) obj = nil;; + return out['$<<'](obj);}, 1); + return $rb_plus(output_width, self.width); + }, 2); + return $def(self, '$add', function $$add(obj, width) { + var self = this; + + + self.objs['$<<'](obj); + return (self.width = $rb_plus(self.width, width)); + }, 2); + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Breakable'); + + var $proto = self.$$prototype; + + $proto.group = $proto.pp = $proto.indent = $proto.obj = $proto.width = nil; + + + $def(self, '$initialize', function $$initialize(sep, width, q) { + var self = this; + + + self.obj = sep; + self.width = width; + self.pp = q; + self.indent = q.$indent(); + self.group = q.$current_group(); + return self.group.$breakables().$push(self); + }, 3); + self.$attr_reader("obj"); + self.$attr_reader("width"); + self.$attr_reader("indent"); + return $def(self, '$output', function $$output(out, output_width) { + var self = this; + + + self.group.$breakables().$shift(); + if ($truthy(self.group['$break?']())) { + + out['$<<'](self.pp.$newline()); + out['$<<'](self.pp.$genspace().$call(self.indent)); + return self.indent; + } else { + + if ($truthy(self.group.$breakables()['$empty?']())) { + self.pp.$group_queue().$delete(self.group) + }; + out['$<<'](self.obj); + return $rb_plus(output_width, self.width); + }; + }, 2); + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Group'); + + var $proto = self.$$prototype; + + $proto["break"] = nil; + + + $def(self, '$initialize', function $$initialize(depth) { + var self = this; + + + self.depth = depth; + self.breakables = []; + return (self["break"] = false); + }, 1); + self.$attr_reader("depth"); + self.$attr_reader("breakables"); + + $def(self, '$break', function $Group_break$8() { + var self = this; + + return (self["break"] = true) + }, 0); + + $def(self, '$break?', function $Group_break$ques$9() { + var self = this; + + return self["break"] + }, 0); + return $def(self, '$first?', function $Group_first$ques$10() { + var $a, self = this; + + if ($truthy((($a = self['first'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { + return false + } else { + + self.first = false; + return true; + } + }, 0); + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'GroupQueue'); + + var $proto = self.$$prototype; + + $proto.queue = nil; + + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, groups, self = this; + + + + $post_args = Opal.slice.call(arguments); + + groups = $post_args;; + self.queue = []; + return $send(groups, 'each', [], function $$11(g){var self = $$11.$$s == null ? this : $$11.$$s; + + + + if (g == null) g = nil;; + return self.$enq(g);}, {$$arity: 1, $$s: self}); + }, -1); + + $def(self, '$enq', function $$enq(group) { + var $a, self = this, depth = nil; + + + depth = group.$depth(); + while (!($truthy($rb_lt(depth, self.queue.$length())))) { + self.queue['$<<']([]) + }; + return self.queue['$[]'](depth)['$<<'](group); + }, 1); + + $def(self, '$deq', function $$deq() {try { + + var self = this; + + + $send(self.queue, 'each', [], function $$12(gs){ + + + if (gs == null) gs = nil;; + $send($rb_minus(gs.$length(), 1), 'downto', [0], function $$13(i){var group = nil; + + + + if (i == null) i = nil;; + if ($truthy(gs['$[]'](i).$breakables()['$empty?']())) { + return nil + } else { + + group = gs['$slice!'](i, 1).$first(); + group.$break(); + Opal.ret(group); + };}, 1); + $send(gs, 'each', [], function $$14(group){ + + + if (group == null) group = nil;; + return group.$break();}, 1); + return gs.$clear();}, 1); + return nil; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 0); + return $def(self, '$delete', function $GroupQueue_delete$15(group) { + var self = this; + + return self.queue['$[]'](group.$depth()).$delete(group) + }, 1); + })($nesting[0], null); + return (function($base, $super) { + var self = $klass($base, $super, 'SingleLine'); + + var $proto = self.$$prototype; + + $proto.output = $proto.first = nil; + + + $def(self, '$initialize', function $$initialize(output, maxwidth, newline) { + var self = this; + + + + if (maxwidth == null) maxwidth = nil;; + + if (newline == null) newline = nil;; + self.output = output; + return (self.first = [true]); + }, -2); + + $def(self, '$text', function $$text(obj, width) { + var self = this; + + + + if (width == null) width = nil;; + return self.output['$<<'](obj); + }, -2); + + $def(self, '$breakable', function $$breakable(sep, width) { + var self = this; + + + + if (sep == null) sep = " ";; + + if (width == null) width = nil;; + return self.output['$<<'](sep); + }, -1); + + $def(self, '$nest', function $$nest(indent) { + var $yield = $$nest.$$p || nil; + + delete $$nest.$$p; + return Opal.yieldX($yield, []); + }, 1); + + $def(self, '$group', function $$group(indent, open_obj, close_obj, open_width, close_width) { + var $yield = $$group.$$p || nil, self = this; + + delete $$group.$$p; + + + if (indent == null) indent = nil;; + + if (open_obj == null) open_obj = "";; + + if (close_obj == null) close_obj = "";; + + if (open_width == null) open_width = nil;; + + if (close_width == null) close_width = nil;; + self.first.$push(true); + self.output['$<<'](open_obj); + Opal.yieldX($yield, []); + self.output['$<<'](close_obj); + return self.first.$pop(); + }, -1); + + $def(self, '$flush', function $$flush() { + + return nil + }, 0); + return $def(self, '$first?', function $SingleLine_first$ques$16() { + var self = this, result = nil, $writer = nil; + + + result = self.first['$[]'](-1); + + $writer = [-1, false]; + $send(self.first, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 0); + })($nesting[0], null); + })($nesting[0], null, $nesting) +}; + +Opal.modules["pp"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $gvars = Opal.gvars, $send = Opal.send, $defs = Opal.defs, $to_a = Opal.to_a, $module = Opal.module, $eqeq = Opal.eqeq, $hash2 = Opal.hash2, $rb_minus = Opal.rb_minus, $def = Opal.def, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $eqeqeq = Opal.eqeqeq, $neqeq = Opal.neqeq, $not = Opal.not, $rb_gt = Opal.rb_gt, $rb_le = Opal.rb_le; + + Opal.add_stubs('require,new,guard_inspect_key,pp,flush,<<,bind_call,instance_method,to_proc,attr_accessor,==,[],current,compare_by_identity,[]=,-,include?,delete,text,is_a?,__getobj__,check_inspect_key,group,pretty_print_cycle,push_inspect_key,pretty_print,sharing_detection,pop_inspect_key,+,name,class,chomp,breakable,lambda,comma_breakable,__send__,call,object_address_group,seplist,pretty_print_instance_variables,===,to_s,instance_eval,include,!=,owner,inspect,respond_to?,!,pp_object,sort,instance_variables,raise,singleline_pp,dup,empty?,pp_hash,each,keys,sprintf,mcall,begin,exclude_end?,end,lines,>,size,named_captures,regexp,object_group,class_eval,string,<=,first,module_function'); + + self.$require("thread"); + self.$require("stringio"); + self.$require("prettyprint"); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'PP'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs($$('PP'), '$pp', function $$pp(obj, out, width) { + var q = nil; + if ($gvars.stdout == null) $gvars.stdout = nil; + + + + if (out == null) out = $gvars.stdout;; + + if (width == null) width = 79;; + q = $$('PP').$new(out, width); + $send(q, 'guard_inspect_key', [], function $$1(){ + return q.$pp(obj)}, 0); + q.$flush(); + return out['$<<']("\n"); + }, -2); + $defs($$('PP'), '$singleline_pp', function $$singleline_pp(obj, out) { + var q = nil; + if ($gvars.stdout == null) $gvars.stdout = nil; + + + + if (out == null) out = $gvars.stdout;; + q = $$('SingleLine').$new(out); + $send(q, 'guard_inspect_key', [], function $$2(){ + return q.$pp(obj)}, 0); + q.$flush(); + return out; + }, -2); + $defs($$('PP'), '$mcall', function $$mcall(obj, mod, meth, $a) { + var block = $$mcall.$$p || nil, $post_args, args; + + delete $$mcall.$$p; + + ; + + $post_args = Opal.slice.call(arguments, 3); + + args = $post_args;; + return $send(mod.$instance_method(meth), 'bind_call', [obj].concat($to_a(args)), block.$to_proc()); + }, -4); + self.sharing_detection = false; + (function(self, $parent_nesting) { + + return self.$attr_accessor("sharing_detection") + })(Opal.get_singleton_class(self), $nesting); + (function($base, $parent_nesting) { + var self = $module($base, 'PPMethods'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$guard_inspect_key', function $$guard_inspect_key() { + var $yield = $$guard_inspect_key.$$p || nil, $writer = nil, save = nil; + + delete $$guard_inspect_key.$$p; + + if ($eqeq($$('Thread').$current()['$[]']("__recursive_key__"), nil)) { + + $writer = ["__recursive_key__", $hash2([], {}).$compare_by_identity()]; + $send($$('Thread').$current(), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + if ($eqeq($$('Thread').$current()['$[]']("__recursive_key__")['$[]']("inspect"), nil)) { + + $writer = ["inspect", $hash2([], {}).$compare_by_identity()]; + $send($$('Thread').$current()['$[]']("__recursive_key__"), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)]; + }; + save = $$('Thread').$current()['$[]']("__recursive_key__")['$[]']("inspect"); + + return (function() { try { + + + $writer = ["inspect", $hash2([], {}).$compare_by_identity()]; + $send($$('Thread').$current()['$[]']("__recursive_key__"), '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return Opal.yieldX($yield, []);; + } finally { + (($writer = ["inspect", save]), $send($$('Thread').$current()['$[]']("__recursive_key__"), '[]=', $to_a($writer)), $writer[$rb_minus($writer["length"], 1)]) + }; })();; + }, 0); + + $def(self, '$check_inspect_key', function $$check_inspect_key(id) { + var $ret_or_1 = nil, $ret_or_2 = nil; + + if ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = $$('Thread').$current()['$[]']("__recursive_key__"))) ? ($$('Thread').$current()['$[]']("__recursive_key__")['$[]']("inspect")) : ($ret_or_2))))) { + return $$('Thread').$current()['$[]']("__recursive_key__")['$[]']("inspect")['$include?'](id) + } else { + return $ret_or_1 + } + }, 1); + + $def(self, '$push_inspect_key', function $$push_inspect_key(id) { + var $writer = nil; + + + $writer = [id, true]; + $send($$('Thread').$current()['$[]']("__recursive_key__")['$[]']("inspect"), '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }, 1); + + $def(self, '$pop_inspect_key', function $$pop_inspect_key(id) { + + return $$('Thread').$current()['$[]']("__recursive_key__")['$[]']("inspect").$delete(id) + }, 1); + + $def(self, '$pp', function $$pp(obj) {try { + + var $a, self = this; + + + ; + + if (obj === null) { + self.$text("null") + Opal.ret(nil) + } + else if (obj === undefined) { + self.$text("undefined") + Opal.ret(nil) + } + else if (obj.$$class === undefined) { + self.$text(Object.prototype.toString.apply(obj)) + Opal.ret(nil) + } + ; + if (($truthy((($a = $$$('::', 'Delegator', 'skip_raise')) ? 'constant' : nil)) && ($truthy(obj['$is_a?']($$$('Delegator')))))) { + obj = obj.$__getobj__() + }; + if ($truthy(self.$check_inspect_key(obj))) { + + $send(self, 'group', [], function $$3(){var self = $$3.$$s == null ? this : $$3.$$s; + + return obj.$pretty_print_cycle(self)}, {$$arity: 0, $$s: self}); + return nil; + }; + + return (function() { try { + + self.$push_inspect_key(obj); + return $send(self, 'group', [], function $$4(){var self = $$4.$$s == null ? this : $$4.$$s; + + return obj.$pretty_print(self)}, {$$arity: 0, $$s: self}); + } finally { + ($truthy($$('PP').$sharing_detection()) ? (nil) : (self.$pop_inspect_key(obj))) + }; })();; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, -1); + + $def(self, '$object_group', function $$object_group(obj) { + var block = $$object_group.$$p || nil, self = this; + + delete $$object_group.$$p; + + ; + return $send(self, 'group', [1, $rb_plus("#<", obj.$class().$name()), ">"], block.$to_proc()); + }, 1); + + $def(self, '$object_address_group', function $$object_address_group(obj) { + var block = $$object_address_group.$$p || nil, self = this, str = nil; + + delete $$object_address_group.$$p; + + ; + str = $$('Kernel').$instance_method("to_s").$bind_call(obj); + str = str.$chomp(">"); + return $send(self, 'group', [1, str, ">"], block.$to_proc()); + }, 1); + + $def(self, '$comma_breakable', function $$comma_breakable() { + var self = this; + + + self.$text(","); + return self.$breakable(); + }, 0); + + $def(self, '$seplist', function $$seplist(list, sep, iter_method) { + var $yield = $$seplist.$$p || nil, self = this, $ret_or_1 = nil, first = nil; + + delete $$seplist.$$p; + + + if (sep == null) sep = nil;; + + if (iter_method == null) iter_method = "each";; + sep = ($truthy(($ret_or_1 = sep)) ? ($ret_or_1) : ($send(self, 'lambda', [], function $$5(){var self = $$5.$$s == null ? this : $$5.$$s; + + return self.$comma_breakable()}, {$$arity: 0, $$s: self}))); + first = true; + return $send(list, '__send__', [iter_method], function $$6($a){var $post_args, v; + + + + $post_args = Opal.slice.call(arguments); + + v = $post_args;; + if ($truthy(first)) { + first = false + } else { + sep.$call() + }; + return Opal.yieldX($yield, $to_a(v));;}, -1); + }, -2); + + $def(self, '$pp_object', function $$pp_object(obj) { + var self = this; + + return $send(self, 'object_address_group', [obj], function $$7(){var self = $$7.$$s == null ? this : $$7.$$s; + + return $send(self, 'seplist', [obj.$pretty_print_instance_variables(), $send(self, 'lambda', [], function $$8(){var self = $$8.$$s == null ? this : $$8.$$s; + + return self.$text(",")}, {$$arity: 0, $$s: self})], function $$9(v){var self = $$9.$$s == null ? this : $$9.$$s; + + + + if (v == null) v = nil;; + self.$breakable(); + if ($eqeqeq($$('Symbol'), v)) { + v = v.$to_s() + }; + self.$text(v); + self.$text("="); + return $send(self, 'group', [1], function $$10(){var self = $$10.$$s == null ? this : $$10.$$s; + + + self.$breakable(""); + return self.$pp(obj.$instance_eval(v));}, {$$arity: 0, $$s: self});}, {$$arity: 1, $$s: self})}, {$$arity: 0, $$s: self}) + }, 1); + return $def(self, '$pp_hash', function $$pp_hash(obj) { + var self = this; + + return $send(self, 'group', [1, "{", "}"], function $$11(){var self = $$11.$$s == null ? this : $$11.$$s; + + return $send(self, 'seplist', [obj, nil, "each_pair"], function $$12(k, v){var self = $$12.$$s == null ? this : $$12.$$s; + + + + if (k == null) k = nil;; + + if (v == null) v = nil;; + return $send(self, 'group', [], function $$13(){var self = $$13.$$s == null ? this : $$13.$$s; + + + self.$pp(k); + self.$text("=>"); + return $send(self, 'group', [1], function $$14(){var self = $$14.$$s == null ? this : $$14.$$s; + + + self.$breakable(""); + return self.$pp(v);}, {$$arity: 0, $$s: self});}, {$$arity: 0, $$s: self});}, {$$arity: 2, $$s: self})}, {$$arity: 0, $$s: self}) + }, 1); + })($nesting[0], $nesting); + self.$include($$('PPMethods')); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'SingleLine'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return self.$include($$('PPMethods')) + })($nesting[0], $$$($$('PrettyPrint'), 'SingleLine'), $nesting); + return (function($base, $parent_nesting) { + var self = $module($base, 'ObjectMixin'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$pretty_print', function $$pretty_print(q) { + var self = this, umethod_method = nil, inspect_method = nil; + + + umethod_method = $$('Object').$instance_method("method"); + + try { + inspect_method = umethod_method.$bind_call(self, "inspect") + } catch ($err) { + if (Opal.rescue($err, [$$('NameError')])) { + try { + nil + } finally { Opal.pop_exception(); } + } else { throw $err; } + };; + if (($truthy(inspect_method) && ($neqeq(inspect_method.$owner(), $$('Kernel'))))) { + return q.$text(self.$inspect()) + } else if (($not(inspect_method) && ($truthy(self['$respond_to?']("inspect"))))) { + return q.$text(self.$inspect()) + } else { + return q.$pp_object(self) + }; + }, 1); + + $def(self, '$pretty_print_cycle', function $$pretty_print_cycle(q) { + var self = this; + + return $send(q, 'object_address_group', [self], function $$15(){ + + q.$breakable(); + return q.$text("...");}, 0) + }, 1); + + $def(self, '$pretty_print_instance_variables', function $$pretty_print_instance_variables() { + var self = this; + + return self.$instance_variables().$sort() + }, 0); + return $def(self, '$pretty_print_inspect', function $$pretty_print_inspect() { + var self = this; + + + if ($eqeq($$('Object').$instance_method("method").$bind_call(self, "pretty_print").$owner(), $$$($$('PP'), 'ObjectMixin'))) { + self.$raise("pretty_print is not overridden for " + (self.$class())) + }; + return $$('PP').$singleline_pp(self, "".$dup()); + }, 0); + })($nesting[0], $nesting); + })($nesting[0], $$('PrettyPrint'), $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'Array'); + + + + + $def(self, '$pretty_print', function $$pretty_print(q) { + var self = this; + + return $send(q, 'group', [1, "[", "]"], function $$16(){var self = $$16.$$s == null ? this : $$16.$$s; + + return $send(q, 'seplist', [self], function $$17(v){ + + + if (v == null) v = nil;; + return q.$pp(v);}, 1)}, {$$arity: 0, $$s: self}) + }, 1); + return $def(self, '$pretty_print_cycle', function $$pretty_print_cycle(q) { + var self = this; + + return q.$text(($truthy(self['$empty?']()) ? ("[]") : ("[...]"))) + }, 1); + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Hash'); + + + + + $def(self, '$pretty_print', function $$pretty_print(q) { + var self = this; + + return q.$pp_hash(self) + }, 1); + return $def(self, '$pretty_print_cycle', function $$pretty_print_cycle(q) { + var self = this; + + return q.$text(($truthy(self['$empty?']()) ? ("{}") : ("{...}"))) + }, 1); + })($nesting[0], null); + (function(self, $parent_nesting) { + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$pretty_print', function $$pretty_print(q) { + var h = nil; + + + h = $hash2([], {}); + $send($$('ENV').$keys().$sort(), 'each', [], function $$18(k){var $writer = nil; + + + + if (k == null) k = nil;; + $writer = [k, $$('ENV')['$[]'](k)]; + $send(h, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 1); + return q.$pp_hash(h); + }, 1) + })(Opal.get_singleton_class($$('ENV')), $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Struct'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$pretty_print', function $$pretty_print(q) { + var self = this; + + return $send(q, 'group', [1, self.$sprintf("#"], function $$19(){var self = $$19.$$s == null ? this : $$19.$$s; + + return $send(q, 'seplist', [$$('PP').$mcall(self, $$('Struct'), "members"), $send(self, 'lambda', [], function $$20(){ + return q.$text(",")}, 0)], function $$21(member){var self = $$21.$$s == null ? this : $$21.$$s; + + + + if (member == null) member = nil;; + q.$breakable(); + q.$text(member.$to_s()); + q.$text("="); + return $send(q, 'group', [1], function $$22(){var self = $$22.$$s == null ? this : $$22.$$s; + + + q.$breakable(""); + return q.$pp(self['$[]'](member));}, {$$arity: 0, $$s: self});}, {$$arity: 1, $$s: self})}, {$$arity: 0, $$s: self}) + }, 1); + return $def(self, '$pretty_print_cycle', function $$pretty_print_cycle(q) { + var self = this; + + return q.$text(self.$sprintf("#", $$('PP').$mcall(self, $$('Kernel'), "class").$name())) + }, 1); + })($nesting[0], null, $nesting); + (function($base, $super) { + var self = $klass($base, $super, 'Range'); + + + return $def(self, '$pretty_print', function $$pretty_print(q) { + var self = this; + + + q.$pp(self.$begin()); + q.$breakable(""); + q.$text(($truthy(self['$exclude_end?']()) ? ("...") : (".."))); + q.$breakable(""); + if ($truthy(self.$end())) { + return q.$pp(self.$end()) + } else { + return nil + }; + }, 1) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'String'); + + + return $def(self, '$pretty_print', function $$pretty_print(q) { + var self = this, lines = nil; + + + lines = self.$lines(); + if ($truthy($rb_gt(lines.$size(), 1))) { + return $send(q, 'group', [0, "", ""], function $$23(){var self = $$23.$$s == null ? this : $$23.$$s; + + return $send(q, 'seplist', [lines, $send(self, 'lambda', [], function $$24(){ + + q.$text(" +"); + return q.$breakable();}, 0)], function $$25(v){ + + + if (v == null) v = nil;; + return q.$pp(v);}, 1)}, {$$arity: 0, $$s: self}) + } else { + return q.$text(self.$inspect()) + }; + }, 1) + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'MatchData'); + + + return $def(self, '$pretty_print', function $$pretty_print(q) { + var self = this, nc = nil; + + + nc = []; + $send(self.$regexp().$named_captures(), 'each', [], function $$26(name, indexes){ + + + if (name == null) name = nil;; + + if (indexes == null) indexes = nil;; + return $send(indexes, 'each', [], function $$27(i){var $writer = nil; + + + + if (i == null) i = nil;; + $writer = [i, name]; + $send(nc, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, 1);}, 2); + return $send(q, 'object_group', [self], function $$28(){var self = $$28.$$s == null ? this : $$28.$$s; + + + q.$breakable(); + return $send(q, 'seplist', [Opal.Range.$new(0,self.$size(), true), $send(self, 'lambda', [], function $$29(){ + return q.$breakable()}, 0)], function $$30(i){var self = $$30.$$s == null ? this : $$30.$$s; + + + + if (i == null) i = nil;; + if ($eqeq(i, 0)) { + return q.$pp(self['$[]'](i)) + } else { + + if ($truthy(nc['$[]'](i))) { + q.$text(nc['$[]'](i)) + } else { + q.$pp(i) + }; + q.$text(":"); + return q.$pp(self['$[]'](i)); + };}, {$$arity: 1, $$s: self});}, {$$arity: 0, $$s: self}); + }, 1) + })($nesting[0], null); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Object'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return self.$include($$$($$('PP'), 'ObjectMixin')) + })($nesting[0], $$('BasicObject'), $nesting); + $send([$$('Numeric'), $$('Symbol'), $$('FalseClass'), $$('TrueClass'), $$('NilClass'), $$('Module')], 'each', [], function $$31(c){var self = $$31.$$s == null ? this : $$31.$$s; + + + + if (c == null) c = nil;; + return $send(c, 'class_eval', [], function $$32(){var self = $$32.$$s == null ? this : $$32.$$s; + + return $def(self, '$pretty_print_cycle', function $$pretty_print_cycle(q) { + var self = this; + + return q.$text(self.$inspect()) + }, 1)}, {$$arity: 0, $$s: self});}, {$$arity: 1, $$s: self}); + $send([$$('Numeric'), $$('FalseClass'), $$('TrueClass'), $$('Module')], 'each', [], function $$33(c){var self = $$33.$$s == null ? this : $$33.$$s; + + + + if (c == null) c = nil;; + return $send(c, 'class_eval', [], function $$34(){var self = $$34.$$s == null ? this : $$34.$$s; + + return $def(self, '$pretty_print', function $$pretty_print(q) { + var self = this; + + return q.$text(self.$inspect()) + }, 1)}, {$$arity: 0, $$s: self});}, {$$arity: 1, $$s: self}); + return (function($base, $parent_nesting) { + var self = $module($base, 'Kernel'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$pretty_inspect', function $$pretty_inspect() { + var self = this; + + return $$('PP').$pp(self, $$('StringIO').$new()).$string() + }, 0); + + $def(self, '$pp', function $$pp($a) { + var $post_args, objs; + + + + $post_args = Opal.slice.call(arguments); + + objs = $post_args;; + $send(objs, 'each', [], function $$35(obj){ + + + if (obj == null) obj = nil;; + return $$('PP').$pp(obj);}, 1); + if ($truthy($rb_le(objs.$size(), 1))) { + return objs.$first() + } else { + return objs + }; + }, -1); + return self.$module_function("pp"); + })($nesting[0], $nesting); +}; diff --git a/opal/1.4.1/pp.min.js b/opal/1.4.1/pp.min.js new file mode 100644 index 00000000..8f6222dd --- /dev/null +++ b/opal/1.4.1/pp.min.js @@ -0,0 +1 @@ +Opal.modules.thread=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$truthy=Opal.truthy,$defs=Opal.defs,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$hash2=Opal.hash2,$Opal=Opal.Opal,$alias=Opal.alias,$const_set=Opal.const_set;return Opal.add_stubs("allocate,core_initialize!,current,raise,[],coerce_key_name,[]=,-,key?,keys,private,coerce_to!,clear,empty?,size,shift,push,each,to_proc,=~,last_match,to_i,inspect,attr_reader,locked?,lock,unlock"),$klass($nesting[0],$$("StandardError"),"ThreadError"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Thread"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.fiber_locals=$proto.thread_locals=nil,$defs(self,"$current",(function(){return null==this.current&&(this.current=nil),$truthy(this.current)||(this.current=this.$allocate(),this.current["$core_initialize!"]()),this.current}),0),$defs(self,"$list",(function(){return[this.$current()]}),0),$def(self,"$initialize",(function($a){var self=this;return Opal.slice.call(arguments),self.$raise($$("NotImplementedError"),"Thread creation not available")}),-1),$def(self,"$[]",(function(key){return this.fiber_locals["$[]"](this.$coerce_key_name(key))}),1),$def(self,"$[]=",(function(key,value){var $writer;return $writer=[this.$coerce_key_name(key),value],$send(this.fiber_locals,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),2),$def(self,"$key?",(function(key){return this.fiber_locals["$key?"](this.$coerce_key_name(key))}),1),$def(self,"$keys",(function(){return this.fiber_locals.$keys()}),0),$def(self,"$thread_variable_get",(function(key){return this.thread_locals["$[]"](this.$coerce_key_name(key))}),1),$def(self,"$thread_variable_set",(function(key,value){var $writer;return $writer=[this.$coerce_key_name(key),value],$send(this.thread_locals,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),2),$def(self,"$thread_variable?",(function(key){return this.thread_locals["$key?"](this.$coerce_key_name(key))}),1),$def(self,"$thread_variables",(function(){return this.thread_locals.$keys()}),0),self.$private(),$def(self,"$core_initialize!",(function(){return this.thread_locals=$hash2([],{}),this.fiber_locals=$hash2([],{})}),0),$def(self,"$coerce_key_name",(function(key){return $Opal["$coerce_to!"](key,$$("String"),"to_s")}),1),function($base,$super,$parent_nesting){var self=$klass($base,null,"Queue"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.storage=nil,$def(self,"$initialize",(function(){return this.$clear()}),0),$def(self,"$clear",(function(){return this.storage=[]}),0),$def(self,"$empty?",(function(){return this.storage["$empty?"]()}),0),$def(self,"$size",(function(){return this.storage.$size()}),0),$def(self,"$pop",(function(non_block){return null==non_block&&(non_block=!1),$truthy(this["$empty?"]())&&($truthy(non_block)&&this.$raise($$("ThreadError"),"Queue empty"),this.$raise($$("ThreadError"),"Deadlock")),this.storage.$shift()}),-1),$def(self,"$push",(function(value){return this.storage.$push(value)}),1),$def(self,"$each",(function $$each(){var block=$$each.$$p||nil;return delete $$each.$$p,$send(this.storage,"each",[],block.$to_proc())}),0),$alias(self,"<<","push"),$alias(self,"deq","pop"),$alias(self,"enq","push"),$alias(self,"length","size"),$alias(self,"shift","pop")}($nesting[0],0,$nesting),function($base,$super,$parent_nesting){var $nesting=[$klass($base,null,"Backtrace")].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,null,"Location"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.label=$proto.str=nil,$def(self,"$initialize",(function(str){var $ret_or_1;return this.str=str,str["$=~"](/^(.*?):(\d+):(\d+):in `(.*?)'$/),this.path=$$("Regexp").$last_match(1),this.label=$$("Regexp").$last_match(4),this.lineno=$$("Regexp").$last_match(2).$to_i(),this.label["$=~"](/(\w+)$/),this.base_label=$truthy($ret_or_1=$$("Regexp").$last_match(1))?$ret_or_1:this.label}),1),$def(self,"$to_s",(function(){return this.str}),0),$def(self,"$inspect",(function(){return this.str.$inspect()}),0),self.$attr_reader("base_label","label","lineno","path"),$alias(self,"absolute_path","path")})($nesting[0],0,$nesting)}($nesting[0],0,$nesting)}($nesting[0],0,$nesting),$const_set($nesting[0],"Queue",$$$($$("Thread"),"Queue")),function($base,$super,$parent_nesting){var self=$klass($base,null,"Mutex"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.locked=nil,$def(self,"$initialize",(function(){return this.locked=!1}),0),$def(self,"$lock",(function(){return $truthy(this.locked)&&this.$raise($$("ThreadError"),"Deadlock"),this.locked=!0,this}),0),$def(self,"$locked?",(function(){return this.locked}),0),$def(self,"$owned?",(function(){return this.locked}),0),$def(self,"$try_lock",(function(){return!$truthy(this["$locked?"]())&&(this.$lock(),!0)}),0),$def(self,"$unlock",(function(){return $truthy(this.locked)||this.$raise($$("ThreadError"),"Mutex not locked"),this.locked=!1,this}),0),$def(self,"$synchronize",(function $$synchronize(){var $yield=$$synchronize.$$p||nil,self=this;return delete $$synchronize.$$p,self.$lock(),function(){try{return Opal.yieldX($yield,[])}finally{self.$unlock()}}()}),0)}($nesting[0],0,$nesting)},Opal.modules.stringio=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$defs=Opal.defs,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$rb_ge=Opal.rb_ge,$rb_gt=Opal.rb_gt,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$alias=Opal.alias;return Opal.add_stubs("new,call,close,attr_accessor,check_readable,==,length,===,>=,raise,>,+,-,seek,check_writable,String,[],eof?,write,read"),function($base,$super,$parent_nesting){var self=$klass($base,$super,"StringIO"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.position=$proto.string=nil,$defs(self,"$open",(function $$open(string,mode){var res,block=$$open.$$p||nil,io=nil;return delete $$open.$$p,null==string&&(string=""),null==mode&&(mode=nil),io=this.$new(string,mode),res=block.$call(io),io.$close(),res}),-1),self.$attr_accessor("string"),$def(self,"$initialize",(function $$initialize(string,mode){return delete $$initialize.$$p,null==string&&(string=""),null==mode&&(mode="rw"),this.string=string,this.position=0,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[nil,mode],null)}),-1),$def(self,"$eof?",(function(){return this.$check_readable(),this.position["$=="](this.string.$length())}),0),$def(self,"$seek",(function(pos,whence){var $ret_or_1;return null==whence&&(whence=$$$($$("IO"),"SEEK_SET")),this.read_buffer="",$eqeqeq($$$($$("IO"),"SEEK_SET"),$ret_or_1=whence)?($truthy($rb_ge(pos,0))||this.$raise($$$($$("Errno"),"EINVAL")),this.position=pos):$eqeqeq($$$($$("IO"),"SEEK_CUR"),$ret_or_1)?$truthy($rb_gt($rb_plus(this.position,pos),this.string.$length()))?this.position=this.string.$length():this.position=$rb_plus(this.position,pos):$eqeqeq($$$($$("IO"),"SEEK_END"),$ret_or_1)&&($truthy($rb_gt(pos,this.string.$length()))?this.position=0:this.position=$rb_minus(this.position,pos)),0}),-2),$def(self,"$tell",(function(){return this.position}),0),$def(self,"$rewind",(function(){return this.$seek(0)}),0),$def(self,"$write",(function(string){var before=nil,after=nil;return this.$check_writable(),this.read_buffer="",string=this.$String(string),$eqeq(this.string.$length(),this.position)?(this.string=$rb_plus(this.string,string),this.position=$rb_plus(this.position,string.$length())):(before=this.string["$[]"](Opal.Range.$new(0,$rb_minus(this.position,1),!1)),after=this.string["$[]"](Opal.Range.$new($rb_plus(this.position,string.$length()),-1,!1)),this.string=$rb_plus($rb_plus(before,string),after),this.position=$rb_plus(this.position,string.$length()))}),1),$def(self,"$read",(function(length,outbuf){var string,str=nil;return null==length&&(length=nil),null==outbuf&&(outbuf=nil),this.$check_readable(),$truthy(this["$eof?"]())?nil:(string=$truthy(length)?(str=this.string["$[]"](this.position,length),this.position=$rb_plus(this.position,length),$truthy($rb_gt(this.position,this.string.$length()))&&(this.position=this.string.$length()),str):(str=this.string["$[]"](Opal.Range.$new(this.position,-1,!1)),this.position=this.string.$length(),str),$truthy(outbuf)?outbuf.$write(string):string)}),-1),$def(self,"$sysread",(function(length){return this.$check_readable(),this.$read(length)}),1),$alias(self,"eof","eof?"),$alias(self,"pos","tell"),$alias(self,"pos=","seek"),$alias(self,"readpartial","read")}($nesting[0],$$("IO"),$nesting)},Opal.modules.prettyprint=function(Opal){var $nesting=[],nil=Opal.nil,$klass=Opal.klass,$send=Opal.send,$rb_times=Opal.rb_times,$defs=Opal.defs,$truthy=Opal.truthy,$def=Opal.def,$rb_lt=Opal.rb_lt,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$eqeqeq=Opal.eqeqeq,$to_a=Opal.to_a;return Opal.add_stubs("dup,lambda,*,new,to_proc,flush,attr_reader,last,<,+,deq,empty?,breakables,shift,output,-,width,!,===,first,length,<<,add,break_outmost_groups,group,breakable,break?,call,text,group_sub,nest,depth,push,enq,pop,delete,each,clear,indent,current_group,newline,genspace,group_queue,[],downto,slice!,break,[]="),function($base,$super,$parent_nesting){var self=$klass($base,null,"PrettyPrint"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.group_stack=$proto.maxwidth=$proto.output_width=$proto.buffer_width=$proto.group_queue=$proto.buffer=$proto.output=$proto.newline=$proto.genspace=$proto.indent=nil,$defs($$("PrettyPrint"),"$format",(function $$format(output,maxwidth,newline,genspace){var $yield=$$format.$$p||nil,q=nil;return delete $$format.$$p,null==output&&(output="".$dup()),null==maxwidth&&(maxwidth=79),null==newline&&(newline="\n"),null==genspace&&(genspace=$send(this,"lambda",[],(function(n){return null==n&&(n=nil),$rb_times(" ",n)}),1)),q=$send($$("PrettyPrint"),"new",[output,maxwidth,newline],genspace.$to_proc()),Opal.yield1($yield,q),q.$flush(),output}),-1),$defs($$("PrettyPrint"),"$singleline_format",(function $$singleline_format(output,maxwidth,newline,genspace){var q,$yield=$$singleline_format.$$p||nil;return delete $$singleline_format.$$p,null==output&&(output="".$dup()),null==maxwidth&&(maxwidth=nil),null==newline&&(newline=nil),null==genspace&&(genspace=nil),q=$$("SingleLine").$new(output),Opal.yield1($yield,q),output}),-1),$def(self,"$initialize",(function $$initialize(output,maxwidth,newline){var $ret_or_1,root_group,genspace=$$initialize.$$p||nil;return delete $$initialize.$$p,null==output&&(output="".$dup()),null==maxwidth&&(maxwidth=79),null==newline&&(newline="\n"),this.output=output,this.maxwidth=maxwidth,this.newline=newline,this.genspace=$truthy($ret_or_1=genspace)?$ret_or_1:$send(this,"lambda",[],(function(n){return null==n&&(n=nil),$rb_times(" ",n)}),1),this.output_width=0,this.buffer_width=0,this.buffer=[],root_group=$$("Group").$new(0),this.group_stack=[root_group],this.group_queue=$$("GroupQueue").$new(root_group),this.indent=0}),-1),self.$attr_reader("output"),self.$attr_reader("maxwidth"),self.$attr_reader("newline"),self.$attr_reader("genspace"),self.$attr_reader("indent"),self.$attr_reader("group_queue"),$def(self,"$current_group",(function(){return this.group_stack.$last()}),0),$def(self,"$break_outmost_groups",(function(){for(var group=nil,data=nil,$ret_or_1=nil,text=nil;$truthy($rb_lt(this.maxwidth,$rb_plus(this.output_width,this.buffer_width)));){if(!$truthy(group=this.group_queue.$deq()))return nil;for(;!$truthy(group.$breakables()["$empty?"]());)data=this.buffer.$shift(),this.output_width=data.$output(this.output,this.output_width),this.buffer_width=$rb_minus(this.buffer_width,data.$width());for(;$truthy($truthy($ret_or_1=this.buffer["$empty?"]()["$!"]())?$$("Text")["$==="](this.buffer.$first()):$ret_or_1);)text=this.buffer.$shift(),this.output_width=text.$output(this.output,this.output_width),this.buffer_width=$rb_minus(this.buffer_width,text.$width())}}),0),$def(self,"$text",(function(obj,width){var text=nil;return null==width&&(width=obj.$length()),$truthy(this.buffer["$empty?"]())?(this.output["$<<"](obj),this.output_width=$rb_plus(this.output_width,width)):(text=this.buffer.$last(),$eqeqeq($$("Text"),text)||(text=$$("Text").$new(),this.buffer["$<<"](text)),text.$add(obj,width),this.buffer_width=$rb_plus(this.buffer_width,width),this.$break_outmost_groups())}),-2),$def(self,"$fill_breakable",(function(sep,width){return null==sep&&(sep=" "),null==width&&(width=sep.$length()),$send(this,"group",[],(function $$3(){return(null==$$3.$$s?this:$$3.$$s).$breakable(sep,width)}),{$$arity:0,$$s:this})}),-1),$def(self,"$breakable",(function(sep,width){var group=nil;return null==sep&&(sep=" "),null==width&&(width=sep.$length()),group=this.group_stack.$last(),$truthy(group["$break?"]())?(this.$flush(),this.output["$<<"](this.newline),this.output["$<<"](this.genspace.$call(this.indent)),this.output_width=this.indent,this.buffer_width=0):(this.buffer["$<<"]($$("Breakable").$new(sep,width,this)),this.buffer_width=$rb_plus(this.buffer_width,width),this.$break_outmost_groups())}),-1),$def(self,"$group",(function $$group(indent,open_obj,close_obj,open_width,close_width){var $yield=$$group.$$p||nil;return delete $$group.$$p,null==indent&&(indent=0),null==open_obj&&(open_obj=""),null==close_obj&&(close_obj=""),null==open_width&&(open_width=open_obj.$length()),null==close_width&&(close_width=close_obj.$length()),this.$text(open_obj,open_width),$send(this,"group_sub",[],(function $$4(){return $send(null==$$4.$$s?this:$$4.$$s,"nest",[indent],(function(){return Opal.yieldX($yield,[])}),0)}),{$$arity:0,$$s:this}),this.$text(close_obj,close_width)}),-1),$def(self,"$group_sub",(function $$group_sub(){var $yield=$$group_sub.$$p||nil,self=this,group=nil;return delete $$group_sub.$$p,group=$$("Group").$new($rb_plus(self.group_stack.$last().$depth(),1)),self.group_stack.$push(group),self.group_queue.$enq(group),function(){try{return Opal.yieldX($yield,[])}finally{self.group_stack.$pop(),$truthy(group.$breakables()["$empty?"]())&&self.group_queue.$delete(group)}}()}),0),$def(self,"$nest",(function $$nest(indent){var $yield=$$nest.$$p||nil,self=this;return delete $$nest.$$p,self.indent=$rb_plus(self.indent,indent),function(){try{return Opal.yieldX($yield,[])}finally{self.indent=$rb_minus(self.indent,indent)}}()}),1),$def(self,"$flush",(function(){return $send(this.buffer,"each",[],(function $$6(data){var self=null==$$6.$$s?this:$$6.$$s;return null==self.output&&(self.output=nil),null==self.output_width&&(self.output_width=nil),null==data&&(data=nil),self.output_width=data.$output(self.output,self.output_width)}),{$$arity:1,$$s:this}),this.buffer.$clear(),this.buffer_width=0}),0),function($base,$super){var self=$klass($base,null,"Text"),$proto=self.$$prototype;$proto.objs=$proto.width=nil,$def(self,"$initialize",(function(){return this.objs=[],this.width=0}),0),self.$attr_reader("width"),$def(self,"$output",(function(out,output_width){return $send(this.objs,"each",[],(function(obj){return null==obj&&(obj=nil),out["$<<"](obj)}),1),$rb_plus(output_width,this.width)}),2),$def(self,"$add",(function(obj,width){return this.objs["$<<"](obj),this.width=$rb_plus(this.width,width)}),2)}($nesting[0]),function($base,$super){var self=$klass($base,null,"Breakable"),$proto=self.$$prototype;$proto.group=$proto.pp=$proto.indent=$proto.obj=$proto.width=nil,$def(self,"$initialize",(function(sep,width,q){return this.obj=sep,this.width=width,this.pp=q,this.indent=q.$indent(),this.group=q.$current_group(),this.group.$breakables().$push(this)}),3),self.$attr_reader("obj"),self.$attr_reader("width"),self.$attr_reader("indent"),$def(self,"$output",(function(out,output_width){return this.group.$breakables().$shift(),$truthy(this.group["$break?"]())?(out["$<<"](this.pp.$newline()),out["$<<"](this.pp.$genspace().$call(this.indent)),this.indent):($truthy(this.group.$breakables()["$empty?"]())&&this.pp.$group_queue().$delete(this.group),out["$<<"](this.obj),$rb_plus(output_width,this.width))}),2)}($nesting[0]),function($base,$super){var self=$klass($base,null,"Group");self.$$prototype.break=nil,$def(self,"$initialize",(function(depth){return this.depth=depth,this.breakables=[],this.break=!1}),1),self.$attr_reader("depth"),self.$attr_reader("breakables"),$def(self,"$break",(function(){return this.break=!0}),0),$def(self,"$break?",(function(){return this.break}),0),$def(self,"$first?",(function(){var $a;return!$truthy(($a=this.first,null!=$a&&$a!==nil?"instance-variable":nil))&&(this.first=!1,!0)}),0)}($nesting[0]),function($base,$super){var self=$klass($base,null,"GroupQueue");self.$$prototype.queue=nil,$def(self,"$initialize",(function($a){var groups,self=this;return groups=Opal.slice.call(arguments),self.queue=[],$send(groups,"each",[],(function $$11(g){return null==g&&(g=nil),(null==$$11.$$s?this:$$11.$$s).$enq(g)}),{$$arity:1,$$s:self})}),-1),$def(self,"$enq",(function(group){var depth;for(depth=group.$depth();!$truthy($rb_lt(depth,this.queue.$length()));)this.queue["$<<"]([]);return this.queue["$[]"](depth)["$<<"](group)}),1),$def(self,"$deq",(function(){try{return $send(this.queue,"each",[],(function(gs){return null==gs&&(gs=nil),$send($rb_minus(gs.$length(),1),"downto",[0],(function(i){var group=nil;if(null==i&&(i=nil),$truthy(gs["$[]"](i).$breakables()["$empty?"]()))return nil;(group=gs["$slice!"](i,1).$first()).$break(),Opal.ret(group)}),1),$send(gs,"each",[],(function(group){return null==group&&(group=nil),group.$break()}),1),gs.$clear()}),1),nil}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),0),$def(self,"$delete",(function(group){return this.queue["$[]"](group.$depth()).$delete(group)}),1)}($nesting[0]),function($base,$super){var self=$klass($base,null,"SingleLine"),$proto=self.$$prototype;return $proto.output=$proto.first=nil,$def(self,"$initialize",(function(output,maxwidth,newline){return null==maxwidth&&(maxwidth=nil),null==newline&&(newline=nil),this.output=output,this.first=[!0]}),-2),$def(self,"$text",(function(obj,width){return null==width&&(width=nil),this.output["$<<"](obj)}),-2),$def(self,"$breakable",(function(sep,width){return null==sep&&(sep=" "),null==width&&(width=nil),this.output["$<<"](sep)}),-1),$def(self,"$nest",(function $$nest(indent){var $yield=$$nest.$$p||nil;return delete $$nest.$$p,Opal.yieldX($yield,[])}),1),$def(self,"$group",(function $$group(indent,open_obj,close_obj,open_width,close_width){var $yield=$$group.$$p||nil;return delete $$group.$$p,null==indent&&(indent=nil),null==open_obj&&(open_obj=""),null==close_obj&&(close_obj=""),null==open_width&&(open_width=nil),null==close_width&&(close_width=nil),this.first.$push(!0),this.output["$<<"](open_obj),Opal.yieldX($yield,[]),this.output["$<<"](close_obj),this.first.$pop()}),-1),$def(self,"$flush",(function(){return nil}),0),$def(self,"$first?",(function(){var result,$writer;return result=this.first["$[]"](-1),$writer=[-1,!1],$send(this.first,"[]=",$to_a($writer)),$rb_minus($writer.length,1),result}),0)}($nesting[0])}($nesting[0],0,$nesting)},Opal.modules.pp=function(Opal){var self=Opal.top,$nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$gvars=Opal.gvars,$send=Opal.send,$defs=Opal.defs,$to_a=Opal.to_a,$module=Opal.module,$eqeq=Opal.eqeq,$hash2=Opal.hash2,$rb_minus=Opal.rb_minus,$def=Opal.def,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$eqeqeq=Opal.eqeqeq,$neqeq=Opal.neqeq,$not=Opal.not,$rb_gt=Opal.rb_gt,$rb_le=Opal.rb_le;return Opal.add_stubs("require,new,guard_inspect_key,pp,flush,<<,bind_call,instance_method,to_proc,attr_accessor,==,[],current,compare_by_identity,[]=,-,include?,delete,text,is_a?,__getobj__,check_inspect_key,group,pretty_print_cycle,push_inspect_key,pretty_print,sharing_detection,pop_inspect_key,+,name,class,chomp,breakable,lambda,comma_breakable,__send__,call,object_address_group,seplist,pretty_print_instance_variables,===,to_s,instance_eval,include,!=,owner,inspect,respond_to?,!,pp_object,sort,instance_variables,raise,singleline_pp,dup,empty?,pp_hash,each,keys,sprintf,mcall,begin,exclude_end?,end,lines,>,size,named_captures,regexp,object_group,class_eval,string,<=,first,module_function"),self.$require("thread"),self.$require("stringio"),self.$require("prettyprint"),function($base,$super,$parent_nesting){var self=$klass($base,$super,"PP"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$defs($$("PP"),"$pp",(function(obj,out,width){var q=nil;return null==$gvars.stdout&&($gvars.stdout=nil),null==out&&(out=$gvars.stdout),null==width&&(width=79),q=$$("PP").$new(out,width),$send(q,"guard_inspect_key",[],(function(){return q.$pp(obj)}),0),q.$flush(),out["$<<"]("\n")}),-2),$defs($$("PP"),"$singleline_pp",(function(obj,out){var q=nil;return null==$gvars.stdout&&($gvars.stdout=nil),null==out&&(out=$gvars.stdout),q=$$("SingleLine").$new(out),$send(q,"guard_inspect_key",[],(function(){return q.$pp(obj)}),0),q.$flush(),out}),-2),$defs($$("PP"),"$mcall",(function $$mcall(obj,mod,meth,$a){var args,block=$$mcall.$$p||nil;return delete $$mcall.$$p,args=Opal.slice.call(arguments,3),$send(mod.$instance_method(meth),"bind_call",[obj].concat($to_a(args)),block.$to_proc())}),-4),self.sharing_detection=!1,function(self,$parent_nesting){self.$attr_accessor("sharing_detection")}(Opal.get_singleton_class(self)),function($base,$parent_nesting){var self=$module($base,"PPMethods"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$guard_inspect_key",(function $$guard_inspect_key(){var save,$yield=$$guard_inspect_key.$$p||nil,$writer=nil;return delete $$guard_inspect_key.$$p,$eqeq($$("Thread").$current()["$[]"]("__recursive_key__"),nil)&&($writer=["__recursive_key__",$hash2([],{}).$compare_by_identity()],$send($$("Thread").$current(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$eqeq($$("Thread").$current()["$[]"]("__recursive_key__")["$[]"]("inspect"),nil)&&($writer=["inspect",$hash2([],{}).$compare_by_identity()],$send($$("Thread").$current()["$[]"]("__recursive_key__"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),save=$$("Thread").$current()["$[]"]("__recursive_key__")["$[]"]("inspect"),function(){try{return $writer=["inspect",$hash2([],{}).$compare_by_identity()],$send($$("Thread").$current()["$[]"]("__recursive_key__"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],Opal.yieldX($yield,[])}finally{$writer=["inspect",save],$send($$("Thread").$current()["$[]"]("__recursive_key__"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}}()}),0),$def(self,"$check_inspect_key",(function(id){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=$$("Thread").$current()["$[]"]("__recursive_key__"))?$$("Thread").$current()["$[]"]("__recursive_key__")["$[]"]("inspect"):$ret_or_2)?$$("Thread").$current()["$[]"]("__recursive_key__")["$[]"]("inspect")["$include?"](id):$ret_or_1}),1),$def(self,"$push_inspect_key",(function(id){var $writer;return $writer=[id,!0],$send($$("Thread").$current()["$[]"]("__recursive_key__")["$[]"]("inspect"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$pop_inspect_key",(function(id){return $$("Thread").$current()["$[]"]("__recursive_key__")["$[]"]("inspect").$delete(id)}),1),$def(self,"$pp",(function(obj){try{var self=this;return null===obj?(self.$text("null"),Opal.ret(nil)):void 0===obj?(self.$text("undefined"),Opal.ret(nil)):void 0===obj.$$class&&(self.$text(Object.prototype.toString.apply(obj)),Opal.ret(nil)),$truthy($$$("::","Delegator","skip_raise")?"constant":nil)&&$truthy(obj["$is_a?"]($$$("Delegator")))&&(obj=obj.$__getobj__()),$truthy(self.$check_inspect_key(obj))?($send(self,"group",[],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return obj.$pretty_print_cycle(self)}),{$$arity:0,$$s:self}),nil):function(){try{return self.$push_inspect_key(obj),$send(self,"group",[],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s;return obj.$pretty_print(self)}),{$$arity:0,$$s:self})}finally{$truthy($$("PP").$sharing_detection())||self.$pop_inspect_key(obj)}}()}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$object_group",(function $$object_group(obj){var block=$$object_group.$$p||nil;return delete $$object_group.$$p,$send(this,"group",[1,$rb_plus("#<",obj.$class().$name()),">"],block.$to_proc())}),1),$def(self,"$object_address_group",(function $$object_address_group(obj){var block=$$object_address_group.$$p||nil,str=nil;return delete $$object_address_group.$$p,str=(str=$$("Kernel").$instance_method("to_s").$bind_call(obj)).$chomp(">"),$send(this,"group",[1,str,">"],block.$to_proc())}),1),$def(self,"$comma_breakable",(function(){return this.$text(","),this.$breakable()}),0),$def(self,"$seplist",(function $$seplist(list,sep,iter_method){var $ret_or_1,$yield=$$seplist.$$p||nil,first=nil;return delete $$seplist.$$p,null==sep&&(sep=nil),null==iter_method&&(iter_method="each"),sep=$truthy($ret_or_1=sep)?$ret_or_1:$send(this,"lambda",[],(function $$5(){return(null==$$5.$$s?this:$$5.$$s).$comma_breakable()}),{$$arity:0,$$s:this}),first=!0,$send(list,"__send__",[iter_method],(function($a){var v;return v=Opal.slice.call(arguments),$truthy(first)?first=!1:sep.$call(),Opal.yieldX($yield,$to_a(v))}),-1)}),-2),$def(self,"$pp_object",(function(obj){return $send(this,"object_address_group",[obj],(function $$7(){var self=null==$$7.$$s?this:$$7.$$s;return $send(self,"seplist",[obj.$pretty_print_instance_variables(),$send(self,"lambda",[],(function $$8(){return(null==$$8.$$s?this:$$8.$$s).$text(",")}),{$$arity:0,$$s:self})],(function $$9(v){var self=null==$$9.$$s?this:$$9.$$s;return null==v&&(v=nil),self.$breakable(),$eqeqeq($$("Symbol"),v)&&(v=v.$to_s()),self.$text(v),self.$text("="),$send(self,"group",[1],(function $$10(){var self=null==$$10.$$s?this:$$10.$$s;return self.$breakable(""),self.$pp(obj.$instance_eval(v))}),{$$arity:0,$$s:self})}),{$$arity:1,$$s:self})}),{$$arity:0,$$s:this})}),1),$def(self,"$pp_hash",(function(obj){return $send(this,"group",[1,"{","}"],(function $$11(){var self=null==$$11.$$s?this:$$11.$$s;return $send(self,"seplist",[obj,nil,"each_pair"],(function $$12(k,v){var self=null==$$12.$$s?this:$$12.$$s;return null==k&&(k=nil),null==v&&(v=nil),$send(self,"group",[],(function $$13(){var self=null==$$13.$$s?this:$$13.$$s;return self.$pp(k),self.$text("=>"),$send(self,"group",[1],(function $$14(){var self=null==$$14.$$s?this:$$14.$$s;return self.$breakable(""),self.$pp(v)}),{$$arity:0,$$s:self})}),{$$arity:0,$$s:self})}),{$$arity:2,$$s:self})}),{$$arity:0,$$s:this})}),1)}($nesting[0],$nesting),self.$include($$("PPMethods")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"SingleLine"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$include($$("PPMethods"))}($nesting[0],$$$($$("PrettyPrint"),"SingleLine"),$nesting),function($base,$parent_nesting){var self=$module($base,"ObjectMixin"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$pretty_print",(function(q){var umethod_method=nil,inspect_method=nil;umethod_method=$$("Object").$instance_method("method");try{inspect_method=umethod_method.$bind_call(this,"inspect")}catch($err){if(!Opal.rescue($err,[$$("NameError")]))throw $err;Opal.pop_exception()}return $truthy(inspect_method)&&$neqeq(inspect_method.$owner(),$$("Kernel"))||$not(inspect_method)&&$truthy(this["$respond_to?"]("inspect"))?q.$text(this.$inspect()):q.$pp_object(this)}),1),$def(self,"$pretty_print_cycle",(function(q){return $send(q,"object_address_group",[this],(function(){return q.$breakable(),q.$text("...")}),0)}),1),$def(self,"$pretty_print_instance_variables",(function(){return this.$instance_variables().$sort()}),0),$def(self,"$pretty_print_inspect",(function(){return $eqeq($$("Object").$instance_method("method").$bind_call(this,"pretty_print").$owner(),$$$($$("PP"),"ObjectMixin"))&&this.$raise("pretty_print is not overridden for "+this.$class()),$$("PP").$singleline_pp(this,"".$dup())}),0)}($nesting[0],$nesting)}($nesting[0],$$("PrettyPrint"),$nesting),function($base,$super){var self=$klass($base,null,"Array");$def(self,"$pretty_print",(function(q){return $send(q,"group",[1,"[","]"],(function $$16(){return $send(q,"seplist",[null==$$16.$$s?this:$$16.$$s],(function(v){return null==v&&(v=nil),q.$pp(v)}),1)}),{$$arity:0,$$s:this})}),1),$def(self,"$pretty_print_cycle",(function(q){return q.$text($truthy(this["$empty?"]())?"[]":"[...]")}),1)}($nesting[0]),function($base,$super){var self=$klass($base,null,"Hash");$def(self,"$pretty_print",(function(q){return q.$pp_hash(this)}),1),$def(self,"$pretty_print_cycle",(function(q){return q.$text($truthy(this["$empty?"]())?"{}":"{...}")}),1)}($nesting[0]),function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$pretty_print",(function(q){var h;return h=$hash2([],{}),$send($$("ENV").$keys().$sort(),"each",[],(function(k){var $writer;return null==k&&(k=nil),$writer=[k,$$("ENV")["$[]"](k)],$send(h,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),q.$pp_hash(h)}),1)}(Opal.get_singleton_class($$("ENV")),$nesting),function($base,$super,$parent_nesting){var self=$klass($base,null,"Struct"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$pretty_print",(function(q){return $send(q,"group",[1,this.$sprintf("#"],(function $$19(){var self=null==$$19.$$s?this:$$19.$$s;return $send(q,"seplist",[$$("PP").$mcall(self,$$("Struct"),"members"),$send(self,"lambda",[],(function(){return q.$text(",")}),0)],(function $$21(member){var self=null==$$21.$$s?this:$$21.$$s;return null==member&&(member=nil),q.$breakable(),q.$text(member.$to_s()),q.$text("="),$send(q,"group",[1],(function $$22(){var self=null==$$22.$$s?this:$$22.$$s;return q.$breakable(""),q.$pp(self["$[]"](member))}),{$$arity:0,$$s:self})}),{$$arity:1,$$s:self})}),{$$arity:0,$$s:this})}),1),$def(self,"$pretty_print_cycle",(function(q){return q.$text(this.$sprintf("#",$$("PP").$mcall(this,$$("Kernel"),"class").$name()))}),1)}($nesting[0],0,$nesting),function($base,$super){var self=$klass($base,null,"Range");$def(self,"$pretty_print",(function(q){return q.$pp(this.$begin()),q.$breakable(""),q.$text($truthy(this["$exclude_end?"]())?"...":".."),q.$breakable(""),$truthy(this.$end())?q.$pp(this.$end()):nil}),1)}($nesting[0]),function($base,$super){var self=$klass($base,null,"String");$def(self,"$pretty_print",(function(q){var lines=nil;return lines=this.$lines(),$truthy($rb_gt(lines.$size(),1))?$send(q,"group",[0,"",""],(function $$23(){return $send(q,"seplist",[lines,$send(null==$$23.$$s?this:$$23.$$s,"lambda",[],(function(){return q.$text(" +"),q.$breakable()}),0)],(function(v){return null==v&&(v=nil),q.$pp(v)}),1)}),{$$arity:0,$$s:this}):q.$text(this.$inspect())}),1)}($nesting[0]),function($base,$super){var self=$klass($base,null,"MatchData");$def(self,"$pretty_print",(function(q){var nc=nil;return nc=[],$send(this.$regexp().$named_captures(),"each",[],(function(name,indexes){return null==name&&(name=nil),null==indexes&&(indexes=nil),$send(indexes,"each",[],(function(i){var $writer;return null==i&&(i=nil),$send(nc,"[]=",$to_a($writer=[i,name])),$writer[$rb_minus($writer.length,1)]}),1)}),2),$send(q,"object_group",[this],(function $$28(){var self=null==$$28.$$s?this:$$28.$$s;return q.$breakable(),$send(q,"seplist",[Opal.Range.$new(0,self.$size(),!0),$send(self,"lambda",[],(function(){return q.$breakable()}),0)],(function $$30(i){var self=null==$$30.$$s?this:$$30.$$s;return null==i&&(i=nil),$eqeq(i,0)||($truthy(nc["$[]"](i))?q.$text(nc["$[]"](i)):q.$pp(i),q.$text(":")),q.$pp(self["$[]"](i))}),{$$arity:1,$$s:self})}),{$$arity:0,$$s:this})}),1)}($nesting[0]),function($base,$super,$parent_nesting){var self=$klass($base,$super,"Object"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$include($$$($$("PP"),"ObjectMixin"))}($nesting[0],$$("BasicObject"),$nesting),$send([$$("Numeric"),$$("Symbol"),$$("FalseClass"),$$("TrueClass"),$$("NilClass"),$$("Module")],"each",[],(function $$31(c){return null==c&&(c=nil),$send(c,"class_eval",[],(function $$32(){return $def(null==$$32.$$s?this:$$32.$$s,"$pretty_print_cycle",(function(q){return q.$text(this.$inspect())}),1)}),{$$arity:0,$$s:null==$$31.$$s?this:$$31.$$s})}),{$$arity:1,$$s:self}),$send([$$("Numeric"),$$("FalseClass"),$$("TrueClass"),$$("Module")],"each",[],(function $$33(c){return null==c&&(c=nil),$send(c,"class_eval",[],(function $$34(){return $def(null==$$34.$$s?this:$$34.$$s,"$pretty_print",(function(q){return q.$text(this.$inspect())}),1)}),{$$arity:0,$$s:null==$$33.$$s?this:$$33.$$s})}),{$$arity:1,$$s:self}),function($base,$parent_nesting){var self=$module($base,"Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$pretty_inspect",(function(){return $$("PP").$pp(this,$$("StringIO").$new()).$string()}),0),$def(self,"$pp",(function($a){var $post_args,objs;return $post_args=Opal.slice.call(arguments),$send(objs=$post_args,"each",[],(function(obj){return null==obj&&(obj=nil),$$("PP").$pp(obj)}),1),$truthy($rb_le(objs.$size(),1))?objs.$first():objs}),-1),self.$module_function("pp")}($nesting[0],$nesting)}; diff --git a/opal/1.4.1/pp.min.js.gz b/opal/1.4.1/pp.min.js.gz new file mode 100644 index 00000000..80846829 Binary files /dev/null and b/opal/1.4.1/pp.min.js.gz differ diff --git a/opal/1.4.1/prettyprint.js b/opal/1.4.1/prettyprint.js new file mode 100644 index 00000000..20e52fa5 --- /dev/null +++ b/opal/1.4.1/prettyprint.js @@ -0,0 +1,524 @@ +Opal.modules["prettyprint"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $klass = Opal.klass, $send = Opal.send, $rb_times = Opal.rb_times, $defs = Opal.defs, $truthy = Opal.truthy, $def = Opal.def, $rb_lt = Opal.rb_lt, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $eqeqeq = Opal.eqeqeq, $to_a = Opal.to_a; + + Opal.add_stubs('dup,lambda,*,new,to_proc,flush,attr_reader,last,<,+,deq,empty?,breakables,shift,output,-,width,!,===,first,length,<<,add,break_outmost_groups,group,breakable,break?,call,text,group_sub,nest,depth,push,enq,pop,delete,each,clear,indent,current_group,newline,genspace,group_queue,[],downto,slice!,break,[]='); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'PrettyPrint'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.group_stack = $proto.maxwidth = $proto.output_width = $proto.buffer_width = $proto.group_queue = $proto.buffer = $proto.output = $proto.newline = $proto.genspace = $proto.indent = nil; + + $defs($$('PrettyPrint'), '$format', function $$format(output, maxwidth, newline, genspace) { + var $yield = $$format.$$p || nil, self = this, q = nil; + + delete $$format.$$p; + + + if (output == null) output = "".$dup();; + + if (maxwidth == null) maxwidth = 79;; + + if (newline == null) newline = "\n";; + + if (genspace == null) genspace = $send(self, 'lambda', [], function $$1(n){ + + + if (n == null) n = nil;; + return $rb_times(" ", n);}, 1);; + q = $send($$('PrettyPrint'), 'new', [output, maxwidth, newline], genspace.$to_proc()); + Opal.yield1($yield, q); + q.$flush(); + return output; + }, -1); + $defs($$('PrettyPrint'), '$singleline_format', function $$singleline_format(output, maxwidth, newline, genspace) { + var $yield = $$singleline_format.$$p || nil, q = nil; + + delete $$singleline_format.$$p; + + + if (output == null) output = "".$dup();; + + if (maxwidth == null) maxwidth = nil;; + + if (newline == null) newline = nil;; + + if (genspace == null) genspace = nil;; + q = $$('SingleLine').$new(output); + Opal.yield1($yield, q); + return output; + }, -1); + + $def(self, '$initialize', function $$initialize(output, maxwidth, newline) { + var genspace = $$initialize.$$p || nil, self = this, $ret_or_1 = nil, root_group = nil; + + delete $$initialize.$$p; + + ; + + if (output == null) output = "".$dup();; + + if (maxwidth == null) maxwidth = 79;; + + if (newline == null) newline = "\n";; + self.output = output; + self.maxwidth = maxwidth; + self.newline = newline; + self.genspace = ($truthy(($ret_or_1 = genspace)) ? ($ret_or_1) : ($send(self, 'lambda', [], function $$2(n){ + + + if (n == null) n = nil;; + return $rb_times(" ", n);}, 1))); + self.output_width = 0; + self.buffer_width = 0; + self.buffer = []; + root_group = $$('Group').$new(0); + self.group_stack = [root_group]; + self.group_queue = $$('GroupQueue').$new(root_group); + return (self.indent = 0); + }, -1); + self.$attr_reader("output"); + self.$attr_reader("maxwidth"); + self.$attr_reader("newline"); + self.$attr_reader("genspace"); + self.$attr_reader("indent"); + self.$attr_reader("group_queue"); + + $def(self, '$current_group', function $$current_group() { + var self = this; + + return self.group_stack.$last() + }, 0); + + $def(self, '$break_outmost_groups', function $$break_outmost_groups() { + var $a, $b, self = this, group = nil, data = nil, $ret_or_1 = nil, text = nil; + + while ($truthy($rb_lt(self.maxwidth, $rb_plus(self.output_width, self.buffer_width)))) { + + if (!$truthy((group = self.group_queue.$deq()))) { + return nil + }; + while (!($truthy(group.$breakables()['$empty?']()))) { + + data = self.buffer.$shift(); + self.output_width = data.$output(self.output, self.output_width); + self.buffer_width = $rb_minus(self.buffer_width, data.$width()); + }; + while ($truthy(($truthy(($ret_or_1 = self.buffer['$empty?']()['$!']())) ? ($$('Text')['$==='](self.buffer.$first())) : ($ret_or_1)))) { + + text = self.buffer.$shift(); + self.output_width = text.$output(self.output, self.output_width); + self.buffer_width = $rb_minus(self.buffer_width, text.$width()); + }; + } + }, 0); + + $def(self, '$text', function $$text(obj, width) { + var self = this, text = nil; + + + + if (width == null) width = obj.$length();; + if ($truthy(self.buffer['$empty?']())) { + + self.output['$<<'](obj); + return (self.output_width = $rb_plus(self.output_width, width)); + } else { + + text = self.buffer.$last(); + if (!$eqeqeq($$('Text'), text)) { + + text = $$('Text').$new(); + self.buffer['$<<'](text); + }; + text.$add(obj, width); + self.buffer_width = $rb_plus(self.buffer_width, width); + return self.$break_outmost_groups(); + }; + }, -2); + + $def(self, '$fill_breakable', function $$fill_breakable(sep, width) { + var self = this; + + + + if (sep == null) sep = " ";; + + if (width == null) width = sep.$length();; + return $send(self, 'group', [], function $$3(){var self = $$3.$$s == null ? this : $$3.$$s; + + return self.$breakable(sep, width)}, {$$arity: 0, $$s: self}); + }, -1); + + $def(self, '$breakable', function $$breakable(sep, width) { + var self = this, group = nil; + + + + if (sep == null) sep = " ";; + + if (width == null) width = sep.$length();; + group = self.group_stack.$last(); + if ($truthy(group['$break?']())) { + + self.$flush(); + self.output['$<<'](self.newline); + self.output['$<<'](self.genspace.$call(self.indent)); + self.output_width = self.indent; + return (self.buffer_width = 0); + } else { + + self.buffer['$<<']($$('Breakable').$new(sep, width, self)); + self.buffer_width = $rb_plus(self.buffer_width, width); + return self.$break_outmost_groups(); + }; + }, -1); + + $def(self, '$group', function $$group(indent, open_obj, close_obj, open_width, close_width) { + var $yield = $$group.$$p || nil, self = this; + + delete $$group.$$p; + + + if (indent == null) indent = 0;; + + if (open_obj == null) open_obj = "";; + + if (close_obj == null) close_obj = "";; + + if (open_width == null) open_width = open_obj.$length();; + + if (close_width == null) close_width = close_obj.$length();; + self.$text(open_obj, open_width); + $send(self, 'group_sub', [], function $$4(){var self = $$4.$$s == null ? this : $$4.$$s; + + return $send(self, 'nest', [indent], function $$5(){ + return Opal.yieldX($yield, []);}, 0)}, {$$arity: 0, $$s: self}); + return self.$text(close_obj, close_width); + }, -1); + + $def(self, '$group_sub', function $$group_sub() { + var $yield = $$group_sub.$$p || nil, self = this, group = nil; + + delete $$group_sub.$$p; + + group = $$('Group').$new($rb_plus(self.group_stack.$last().$depth(), 1)); + self.group_stack.$push(group); + self.group_queue.$enq(group); + + return (function() { try { + return Opal.yieldX($yield, []); + } finally { + (self.group_stack.$pop(), ($truthy(group.$breakables()['$empty?']()) ? (self.group_queue.$delete(group)) : nil)) + }; })();; + }, 0); + + $def(self, '$nest', function $$nest(indent) { + var $yield = $$nest.$$p || nil, self = this; + + delete $$nest.$$p; + + self.indent = $rb_plus(self.indent, indent); + + return (function() { try { + return Opal.yieldX($yield, []); + } finally { + (self.indent = $rb_minus(self.indent, indent)) + }; })();; + }, 1); + + $def(self, '$flush', function $$flush() { + var self = this; + + + $send(self.buffer, 'each', [], function $$6(data){var self = $$6.$$s == null ? this : $$6.$$s; + if (self.output == null) self.output = nil; + if (self.output_width == null) self.output_width = nil; + + + + if (data == null) data = nil;; + return (self.output_width = data.$output(self.output, self.output_width));}, {$$arity: 1, $$s: self}); + self.buffer.$clear(); + return (self.buffer_width = 0); + }, 0); + (function($base, $super) { + var self = $klass($base, $super, 'Text'); + + var $proto = self.$$prototype; + + $proto.objs = $proto.width = nil; + + + $def(self, '$initialize', function $$initialize() { + var self = this; + + + self.objs = []; + return (self.width = 0); + }, 0); + self.$attr_reader("width"); + + $def(self, '$output', function $$output(out, output_width) { + var self = this; + + + $send(self.objs, 'each', [], function $$7(obj){ + + + if (obj == null) obj = nil;; + return out['$<<'](obj);}, 1); + return $rb_plus(output_width, self.width); + }, 2); + return $def(self, '$add', function $$add(obj, width) { + var self = this; + + + self.objs['$<<'](obj); + return (self.width = $rb_plus(self.width, width)); + }, 2); + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Breakable'); + + var $proto = self.$$prototype; + + $proto.group = $proto.pp = $proto.indent = $proto.obj = $proto.width = nil; + + + $def(self, '$initialize', function $$initialize(sep, width, q) { + var self = this; + + + self.obj = sep; + self.width = width; + self.pp = q; + self.indent = q.$indent(); + self.group = q.$current_group(); + return self.group.$breakables().$push(self); + }, 3); + self.$attr_reader("obj"); + self.$attr_reader("width"); + self.$attr_reader("indent"); + return $def(self, '$output', function $$output(out, output_width) { + var self = this; + + + self.group.$breakables().$shift(); + if ($truthy(self.group['$break?']())) { + + out['$<<'](self.pp.$newline()); + out['$<<'](self.pp.$genspace().$call(self.indent)); + return self.indent; + } else { + + if ($truthy(self.group.$breakables()['$empty?']())) { + self.pp.$group_queue().$delete(self.group) + }; + out['$<<'](self.obj); + return $rb_plus(output_width, self.width); + }; + }, 2); + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'Group'); + + var $proto = self.$$prototype; + + $proto["break"] = nil; + + + $def(self, '$initialize', function $$initialize(depth) { + var self = this; + + + self.depth = depth; + self.breakables = []; + return (self["break"] = false); + }, 1); + self.$attr_reader("depth"); + self.$attr_reader("breakables"); + + $def(self, '$break', function $Group_break$8() { + var self = this; + + return (self["break"] = true) + }, 0); + + $def(self, '$break?', function $Group_break$ques$9() { + var self = this; + + return self["break"] + }, 0); + return $def(self, '$first?', function $Group_first$ques$10() { + var $a, self = this; + + if ($truthy((($a = self['first'], $a != null && $a !== nil) ? 'instance-variable' : nil))) { + return false + } else { + + self.first = false; + return true; + } + }, 0); + })($nesting[0], null); + (function($base, $super) { + var self = $klass($base, $super, 'GroupQueue'); + + var $proto = self.$$prototype; + + $proto.queue = nil; + + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, groups, self = this; + + + + $post_args = Opal.slice.call(arguments); + + groups = $post_args;; + self.queue = []; + return $send(groups, 'each', [], function $$11(g){var self = $$11.$$s == null ? this : $$11.$$s; + + + + if (g == null) g = nil;; + return self.$enq(g);}, {$$arity: 1, $$s: self}); + }, -1); + + $def(self, '$enq', function $$enq(group) { + var $a, self = this, depth = nil; + + + depth = group.$depth(); + while (!($truthy($rb_lt(depth, self.queue.$length())))) { + self.queue['$<<']([]) + }; + return self.queue['$[]'](depth)['$<<'](group); + }, 1); + + $def(self, '$deq', function $$deq() {try { + + var self = this; + + + $send(self.queue, 'each', [], function $$12(gs){ + + + if (gs == null) gs = nil;; + $send($rb_minus(gs.$length(), 1), 'downto', [0], function $$13(i){var group = nil; + + + + if (i == null) i = nil;; + if ($truthy(gs['$[]'](i).$breakables()['$empty?']())) { + return nil + } else { + + group = gs['$slice!'](i, 1).$first(); + group.$break(); + Opal.ret(group); + };}, 1); + $send(gs, 'each', [], function $$14(group){ + + + if (group == null) group = nil;; + return group.$break();}, 1); + return gs.$clear();}, 1); + return nil; + } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; } + }, 0); + return $def(self, '$delete', function $GroupQueue_delete$15(group) { + var self = this; + + return self.queue['$[]'](group.$depth()).$delete(group) + }, 1); + })($nesting[0], null); + return (function($base, $super) { + var self = $klass($base, $super, 'SingleLine'); + + var $proto = self.$$prototype; + + $proto.output = $proto.first = nil; + + + $def(self, '$initialize', function $$initialize(output, maxwidth, newline) { + var self = this; + + + + if (maxwidth == null) maxwidth = nil;; + + if (newline == null) newline = nil;; + self.output = output; + return (self.first = [true]); + }, -2); + + $def(self, '$text', function $$text(obj, width) { + var self = this; + + + + if (width == null) width = nil;; + return self.output['$<<'](obj); + }, -2); + + $def(self, '$breakable', function $$breakable(sep, width) { + var self = this; + + + + if (sep == null) sep = " ";; + + if (width == null) width = nil;; + return self.output['$<<'](sep); + }, -1); + + $def(self, '$nest', function $$nest(indent) { + var $yield = $$nest.$$p || nil; + + delete $$nest.$$p; + return Opal.yieldX($yield, []); + }, 1); + + $def(self, '$group', function $$group(indent, open_obj, close_obj, open_width, close_width) { + var $yield = $$group.$$p || nil, self = this; + + delete $$group.$$p; + + + if (indent == null) indent = nil;; + + if (open_obj == null) open_obj = "";; + + if (close_obj == null) close_obj = "";; + + if (open_width == null) open_width = nil;; + + if (close_width == null) close_width = nil;; + self.first.$push(true); + self.output['$<<'](open_obj); + Opal.yieldX($yield, []); + self.output['$<<'](close_obj); + return self.first.$pop(); + }, -1); + + $def(self, '$flush', function $$flush() { + + return nil + }, 0); + return $def(self, '$first?', function $SingleLine_first$ques$16() { + var self = this, result = nil, $writer = nil; + + + result = self.first['$[]'](-1); + + $writer = [-1, false]; + $send(self.first, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 0); + })($nesting[0], null); + })($nesting[0], null, $nesting) +}; diff --git a/opal/1.4.1/prettyprint.min.js b/opal/1.4.1/prettyprint.min.js new file mode 100644 index 00000000..ae582492 --- /dev/null +++ b/opal/1.4.1/prettyprint.min.js @@ -0,0 +1 @@ +Opal.modules.prettyprint=function(Opal){var $nesting=[],nil=Opal.nil,$klass=Opal.klass,$send=Opal.send,$rb_times=Opal.rb_times,$defs=Opal.defs,$truthy=Opal.truthy,$def=Opal.def,$rb_lt=Opal.rb_lt,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$eqeqeq=Opal.eqeqeq,$to_a=Opal.to_a;return Opal.add_stubs("dup,lambda,*,new,to_proc,flush,attr_reader,last,<,+,deq,empty?,breakables,shift,output,-,width,!,===,first,length,<<,add,break_outmost_groups,group,breakable,break?,call,text,group_sub,nest,depth,push,enq,pop,delete,each,clear,indent,current_group,newline,genspace,group_queue,[],downto,slice!,break,[]="),function($base,$super,$parent_nesting){var self=$klass($base,null,"PrettyPrint"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.group_stack=$proto.maxwidth=$proto.output_width=$proto.buffer_width=$proto.group_queue=$proto.buffer=$proto.output=$proto.newline=$proto.genspace=$proto.indent=nil,$defs($$("PrettyPrint"),"$format",(function $$format(output,maxwidth,newline,genspace){var $yield=$$format.$$p||nil,q=nil;return delete $$format.$$p,null==output&&(output="".$dup()),null==maxwidth&&(maxwidth=79),null==newline&&(newline="\n"),null==genspace&&(genspace=$send(this,"lambda",[],(function(n){return null==n&&(n=nil),$rb_times(" ",n)}),1)),q=$send($$("PrettyPrint"),"new",[output,maxwidth,newline],genspace.$to_proc()),Opal.yield1($yield,q),q.$flush(),output}),-1),$defs($$("PrettyPrint"),"$singleline_format",(function $$singleline_format(output,maxwidth,newline,genspace){var q,$yield=$$singleline_format.$$p||nil;return delete $$singleline_format.$$p,null==output&&(output="".$dup()),null==maxwidth&&(maxwidth=nil),null==newline&&(newline=nil),null==genspace&&(genspace=nil),q=$$("SingleLine").$new(output),Opal.yield1($yield,q),output}),-1),$def(self,"$initialize",(function $$initialize(output,maxwidth,newline){var $ret_or_1,root_group,genspace=$$initialize.$$p||nil;return delete $$initialize.$$p,null==output&&(output="".$dup()),null==maxwidth&&(maxwidth=79),null==newline&&(newline="\n"),this.output=output,this.maxwidth=maxwidth,this.newline=newline,this.genspace=$truthy($ret_or_1=genspace)?$ret_or_1:$send(this,"lambda",[],(function(n){return null==n&&(n=nil),$rb_times(" ",n)}),1),this.output_width=0,this.buffer_width=0,this.buffer=[],root_group=$$("Group").$new(0),this.group_stack=[root_group],this.group_queue=$$("GroupQueue").$new(root_group),this.indent=0}),-1),self.$attr_reader("output"),self.$attr_reader("maxwidth"),self.$attr_reader("newline"),self.$attr_reader("genspace"),self.$attr_reader("indent"),self.$attr_reader("group_queue"),$def(self,"$current_group",(function(){return this.group_stack.$last()}),0),$def(self,"$break_outmost_groups",(function(){for(var group=nil,data=nil,$ret_or_1=nil,text=nil;$truthy($rb_lt(this.maxwidth,$rb_plus(this.output_width,this.buffer_width)));){if(!$truthy(group=this.group_queue.$deq()))return nil;for(;!$truthy(group.$breakables()["$empty?"]());)data=this.buffer.$shift(),this.output_width=data.$output(this.output,this.output_width),this.buffer_width=$rb_minus(this.buffer_width,data.$width());for(;$truthy($truthy($ret_or_1=this.buffer["$empty?"]()["$!"]())?$$("Text")["$==="](this.buffer.$first()):$ret_or_1);)text=this.buffer.$shift(),this.output_width=text.$output(this.output,this.output_width),this.buffer_width=$rb_minus(this.buffer_width,text.$width())}}),0),$def(self,"$text",(function(obj,width){var text=nil;return null==width&&(width=obj.$length()),$truthy(this.buffer["$empty?"]())?(this.output["$<<"](obj),this.output_width=$rb_plus(this.output_width,width)):(text=this.buffer.$last(),$eqeqeq($$("Text"),text)||(text=$$("Text").$new(),this.buffer["$<<"](text)),text.$add(obj,width),this.buffer_width=$rb_plus(this.buffer_width,width),this.$break_outmost_groups())}),-2),$def(self,"$fill_breakable",(function(sep,width){return null==sep&&(sep=" "),null==width&&(width=sep.$length()),$send(this,"group",[],(function $$3(){return(null==$$3.$$s?this:$$3.$$s).$breakable(sep,width)}),{$$arity:0,$$s:this})}),-1),$def(self,"$breakable",(function(sep,width){var group=nil;return null==sep&&(sep=" "),null==width&&(width=sep.$length()),group=this.group_stack.$last(),$truthy(group["$break?"]())?(this.$flush(),this.output["$<<"](this.newline),this.output["$<<"](this.genspace.$call(this.indent)),this.output_width=this.indent,this.buffer_width=0):(this.buffer["$<<"]($$("Breakable").$new(sep,width,this)),this.buffer_width=$rb_plus(this.buffer_width,width),this.$break_outmost_groups())}),-1),$def(self,"$group",(function $$group(indent,open_obj,close_obj,open_width,close_width){var $yield=$$group.$$p||nil;return delete $$group.$$p,null==indent&&(indent=0),null==open_obj&&(open_obj=""),null==close_obj&&(close_obj=""),null==open_width&&(open_width=open_obj.$length()),null==close_width&&(close_width=close_obj.$length()),this.$text(open_obj,open_width),$send(this,"group_sub",[],(function $$4(){return $send(null==$$4.$$s?this:$$4.$$s,"nest",[indent],(function(){return Opal.yieldX($yield,[])}),0)}),{$$arity:0,$$s:this}),this.$text(close_obj,close_width)}),-1),$def(self,"$group_sub",(function $$group_sub(){var $yield=$$group_sub.$$p||nil,self=this,group=nil;return delete $$group_sub.$$p,group=$$("Group").$new($rb_plus(self.group_stack.$last().$depth(),1)),self.group_stack.$push(group),self.group_queue.$enq(group),function(){try{return Opal.yieldX($yield,[])}finally{self.group_stack.$pop(),$truthy(group.$breakables()["$empty?"]())&&self.group_queue.$delete(group)}}()}),0),$def(self,"$nest",(function $$nest(indent){var $yield=$$nest.$$p||nil,self=this;return delete $$nest.$$p,self.indent=$rb_plus(self.indent,indent),function(){try{return Opal.yieldX($yield,[])}finally{self.indent=$rb_minus(self.indent,indent)}}()}),1),$def(self,"$flush",(function(){return $send(this.buffer,"each",[],(function $$6(data){var self=null==$$6.$$s?this:$$6.$$s;return null==self.output&&(self.output=nil),null==self.output_width&&(self.output_width=nil),null==data&&(data=nil),self.output_width=data.$output(self.output,self.output_width)}),{$$arity:1,$$s:this}),this.buffer.$clear(),this.buffer_width=0}),0),function($base,$super){var self=$klass($base,null,"Text"),$proto=self.$$prototype;$proto.objs=$proto.width=nil,$def(self,"$initialize",(function(){return this.objs=[],this.width=0}),0),self.$attr_reader("width"),$def(self,"$output",(function(out,output_width){return $send(this.objs,"each",[],(function(obj){return null==obj&&(obj=nil),out["$<<"](obj)}),1),$rb_plus(output_width,this.width)}),2),$def(self,"$add",(function(obj,width){return this.objs["$<<"](obj),this.width=$rb_plus(this.width,width)}),2)}($nesting[0]),function($base,$super){var self=$klass($base,null,"Breakable"),$proto=self.$$prototype;$proto.group=$proto.pp=$proto.indent=$proto.obj=$proto.width=nil,$def(self,"$initialize",(function(sep,width,q){return this.obj=sep,this.width=width,this.pp=q,this.indent=q.$indent(),this.group=q.$current_group(),this.group.$breakables().$push(this)}),3),self.$attr_reader("obj"),self.$attr_reader("width"),self.$attr_reader("indent"),$def(self,"$output",(function(out,output_width){return this.group.$breakables().$shift(),$truthy(this.group["$break?"]())?(out["$<<"](this.pp.$newline()),out["$<<"](this.pp.$genspace().$call(this.indent)),this.indent):($truthy(this.group.$breakables()["$empty?"]())&&this.pp.$group_queue().$delete(this.group),out["$<<"](this.obj),$rb_plus(output_width,this.width))}),2)}($nesting[0]),function($base,$super){var self=$klass($base,null,"Group");self.$$prototype.break=nil,$def(self,"$initialize",(function(depth){return this.depth=depth,this.breakables=[],this.break=!1}),1),self.$attr_reader("depth"),self.$attr_reader("breakables"),$def(self,"$break",(function(){return this.break=!0}),0),$def(self,"$break?",(function(){return this.break}),0),$def(self,"$first?",(function(){var $a;return!$truthy(($a=this.first,null!=$a&&$a!==nil?"instance-variable":nil))&&(this.first=!1,!0)}),0)}($nesting[0]),function($base,$super){var self=$klass($base,null,"GroupQueue");self.$$prototype.queue=nil,$def(self,"$initialize",(function($a){var groups,self=this;return groups=Opal.slice.call(arguments),self.queue=[],$send(groups,"each",[],(function $$11(g){return null==g&&(g=nil),(null==$$11.$$s?this:$$11.$$s).$enq(g)}),{$$arity:1,$$s:self})}),-1),$def(self,"$enq",(function(group){var depth;for(depth=group.$depth();!$truthy($rb_lt(depth,this.queue.$length()));)this.queue["$<<"]([]);return this.queue["$[]"](depth)["$<<"](group)}),1),$def(self,"$deq",(function(){try{return $send(this.queue,"each",[],(function(gs){return null==gs&&(gs=nil),$send($rb_minus(gs.$length(),1),"downto",[0],(function(i){var group=nil;if(null==i&&(i=nil),$truthy(gs["$[]"](i).$breakables()["$empty?"]()))return nil;(group=gs["$slice!"](i,1).$first()).$break(),Opal.ret(group)}),1),$send(gs,"each",[],(function(group){return null==group&&(group=nil),group.$break()}),1),gs.$clear()}),1),nil}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),0),$def(self,"$delete",(function(group){return this.queue["$[]"](group.$depth()).$delete(group)}),1)}($nesting[0]),function($base,$super){var self=$klass($base,null,"SingleLine"),$proto=self.$$prototype;return $proto.output=$proto.first=nil,$def(self,"$initialize",(function(output,maxwidth,newline){return null==maxwidth&&(maxwidth=nil),null==newline&&(newline=nil),this.output=output,this.first=[!0]}),-2),$def(self,"$text",(function(obj,width){return null==width&&(width=nil),this.output["$<<"](obj)}),-2),$def(self,"$breakable",(function(sep,width){return null==sep&&(sep=" "),null==width&&(width=nil),this.output["$<<"](sep)}),-1),$def(self,"$nest",(function $$nest(indent){var $yield=$$nest.$$p||nil;return delete $$nest.$$p,Opal.yieldX($yield,[])}),1),$def(self,"$group",(function $$group(indent,open_obj,close_obj,open_width,close_width){var $yield=$$group.$$p||nil;return delete $$group.$$p,null==indent&&(indent=nil),null==open_obj&&(open_obj=""),null==close_obj&&(close_obj=""),null==open_width&&(open_width=nil),null==close_width&&(close_width=nil),this.first.$push(!0),this.output["$<<"](open_obj),Opal.yieldX($yield,[]),this.output["$<<"](close_obj),this.first.$pop()}),-1),$def(self,"$flush",(function(){return nil}),0),$def(self,"$first?",(function(){var result,$writer;return result=this.first["$[]"](-1),$writer=[-1,!1],$send(this.first,"[]=",$to_a($writer)),$rb_minus($writer.length,1),result}),0)}($nesting[0])}($nesting[0],0,$nesting)}; diff --git a/opal/1.4.1/prettyprint.min.js.gz b/opal/1.4.1/prettyprint.min.js.gz new file mode 100644 index 00000000..9eaa10e6 Binary files /dev/null and b/opal/1.4.1/prettyprint.min.js.gz differ diff --git a/opal/1.4.1/promise.js b/opal/1.4.1/promise.js new file mode 100644 index 00000000..8564347d --- /dev/null +++ b/opal/1.4.1/promise.js @@ -0,0 +1,544 @@ +Opal.modules["promise"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $klass = Opal.klass, $defs = Opal.defs, $hash2 = Opal.hash2, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $not = Opal.not, $send = Opal.send, $to_a = Opal.to_a, $rb_plus = Opal.rb_plus, $alias = Opal.alias, $send2 = Opal.send2, $find_super = Opal.find_super, $rb_le = Opal.rb_le, $rb_minus = Opal.rb_minus, $const_set = Opal.const_set; + + Opal.add_stubs('resolve,new,reject,attr_reader,===,value,key?,keys,!=,==,<<,>>,exception?,[],resolved?,rejected?,!,error,include?,action,realized?,raise,^,call,resolve!,exception!,any?,each,reject!,there_can_be_only_one!,then,to_proc,fail,always,trace,class,object_id,+,inspect,rescue,nil?,prev,act?,push,concat,it,proc,reverse,pop,<=,length,shift,-,wait,map,reduce,try,tap,all?,find'); + + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Promise'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.value = $proto.action = $proto.exception = $proto.realized = $proto.next = $proto.delayed = $proto.error = $proto.prev = nil; + + $defs(self, '$value', function $$value(value) { + var self = this; + + return self.$new().$resolve(value) + }, 1); + $defs(self, '$error', function $$error(value) { + var self = this; + + return self.$new().$reject(value) + }, 1); + $defs(self, '$when', function $$when($a) { + var $post_args, promises; + + + + $post_args = Opal.slice.call(arguments); + + promises = $post_args;; + return $$('When').$new(promises); + }, -1); + self.$attr_reader("error", "prev", "next"); + + $def(self, '$initialize', function $$initialize(action) { + var self = this; + + + + if (action == null) action = $hash2([], {});; + self.action = action; + self.realized = false; + self.exception = false; + self.value = nil; + self.error = nil; + self.delayed = false; + self.prev = nil; + return (self.next = []); + }, -1); + + $def(self, '$value', function $$value() { + var self = this; + + if ($eqeqeq($$('Promise'), self.value)) { + return self.value.$value() + } else { + return self.value + } + }, 0); + + $def(self, '$act?', function $Promise_act$ques$1() { + var self = this, $ret_or_1 = nil; + + if ($truthy(($ret_or_1 = self.action['$key?']("success")))) { + return $ret_or_1 + } else { + return self.action['$key?']("always") + } + }, 0); + + $def(self, '$action', function $$action() { + var self = this; + + return self.action.$keys() + }, 0); + + $def(self, '$exception?', function $Promise_exception$ques$2() { + var self = this; + + return self.exception + }, 0); + + $def(self, '$realized?', function $Promise_realized$ques$3() { + var self = this; + + return self.realized['$!='](false) + }, 0); + + $def(self, '$resolved?', function $Promise_resolved$ques$4() { + var self = this; + + return self.realized['$==']("resolve") + }, 0); + + $def(self, '$rejected?', function $Promise_rejected$ques$5() { + var self = this; + + return self.realized['$==']("reject") + }, 0); + + $def(self, '$^', function $Promise_$$6(promise) { + var self = this; + + + promise['$<<'](self); + self['$>>'](promise); + return promise; + }, 1); + + $def(self, '$<<', function $Promise_$lt$lt$7(promise) { + var self = this; + + + self.prev = promise; + return self; + }, 1); + + $def(self, '$>>', function $Promise_$gt$gt$8(promise) { + var self = this; + + + self.next['$<<'](promise); + if ($truthy(self['$exception?']())) { + promise.$reject(self.delayed['$[]'](0)) + } else if ($truthy(self['$resolved?']())) { + promise.$resolve(($truthy(self.delayed) ? (self.delayed['$[]'](0)) : (self.$value()))) + } else if ($truthy(self['$rejected?']())) { + if (($not(self.action['$key?']("failure")) || ($eqeqeq($$('Promise'), ($truthy(self.delayed) ? (self.delayed['$[]'](0)) : (self.error)))))) { + promise.$reject(($truthy(self.delayed) ? (self.delayed['$[]'](0)) : (self.$error()))) + } else if ($truthy(promise.$action()['$include?']("always"))) { + promise.$reject(($truthy(self.delayed) ? (self.delayed['$[]'](0)) : (self.$error()))) + } + }; + return self; + }, 1); + + $def(self, '$resolve', function $$resolve(value) { + var self = this, block = nil, $ret_or_1 = nil, e = nil; + + + + if (value == null) value = nil;; + if ($truthy(self['$realized?']())) { + self.$raise($$('ArgumentError'), "the promise has already been realized") + }; + if ($eqeqeq($$('Promise'), value)) { + return value['$<<'](self.prev)['$^'](self) + }; + + try { + + block = ($truthy(($ret_or_1 = self.action['$[]']("success"))) ? ($ret_or_1) : (self.action['$[]']("always"))); + if ($truthy(block)) { + value = block.$call(value) + }; + self['$resolve!'](value); + } catch ($err) { + if (Opal.rescue($err, [$$('Exception')])) {(e = $err) + try { + self['$exception!'](e) + } finally { Opal.pop_exception(); } + } else { throw $err; } + };; + return self; + }, -1); + + $def(self, '$resolve!', function $Promise_resolve$excl$9(value) { + var self = this; + + + self.realized = "resolve"; + self.value = value; + if ($truthy(self.next['$any?']())) { + return $send(self.next, 'each', [], function $$10(p){ + + + if (p == null) p = nil;; + return p.$resolve(value);}, 1) + } else { + return (self.delayed = [value]) + }; + }, 1); + + $def(self, '$reject', function $$reject(value) { + var self = this, block = nil, $ret_or_1 = nil, e = nil; + + + + if (value == null) value = nil;; + if ($truthy(self['$realized?']())) { + self.$raise($$('ArgumentError'), "the promise has already been realized") + }; + if ($eqeqeq($$('Promise'), value)) { + return value['$<<'](self.prev)['$^'](self) + }; + + try { + + block = ($truthy(($ret_or_1 = self.action['$[]']("failure"))) ? ($ret_or_1) : (self.action['$[]']("always"))); + if ($truthy(block)) { + value = block.$call(value) + }; + if ($truthy(self.action['$key?']("always"))) { + self['$resolve!'](value) + } else { + self['$reject!'](value) + }; + } catch ($err) { + if (Opal.rescue($err, [$$('Exception')])) {(e = $err) + try { + self['$exception!'](e) + } finally { Opal.pop_exception(); } + } else { throw $err; } + };; + return self; + }, -1); + + $def(self, '$reject!', function $Promise_reject$excl$11(value) { + var self = this; + + + self.realized = "reject"; + self.error = value; + if ($truthy(self.next['$any?']())) { + return $send(self.next, 'each', [], function $$12(p){ + + + if (p == null) p = nil;; + return p.$reject(value);}, 1) + } else { + return (self.delayed = [value]) + }; + }, 1); + + $def(self, '$exception!', function $Promise_exception$excl$13(error) { + var self = this; + + + self.exception = true; + return self['$reject!'](error); + }, 1); + + $def(self, '$then', function $$then() { + var block = $$then.$$p || nil, self = this; + + delete $$then.$$p; + + ; + return self['$^']($$('Promise').$new($hash2(["success"], {"success": block}))); + }, 0); + + $def(self, '$then!', function $Promise_then$excl$14() { + var block = $Promise_then$excl$14.$$p || nil, self = this; + + delete $Promise_then$excl$14.$$p; + + ; + self['$there_can_be_only_one!'](); + return $send(self, 'then', [], block.$to_proc()); + }, 0); + + $def(self, '$fail', function $$fail() { + var block = $$fail.$$p || nil, self = this; + + delete $$fail.$$p; + + ; + return self['$^']($$('Promise').$new($hash2(["failure"], {"failure": block}))); + }, 0); + + $def(self, '$fail!', function $Promise_fail$excl$15() { + var block = $Promise_fail$excl$15.$$p || nil, self = this; + + delete $Promise_fail$excl$15.$$p; + + ; + self['$there_can_be_only_one!'](); + return $send(self, 'fail', [], block.$to_proc()); + }, 0); + + $def(self, '$always', function $$always() { + var block = $$always.$$p || nil, self = this; + + delete $$always.$$p; + + ; + return self['$^']($$('Promise').$new($hash2(["always"], {"always": block}))); + }, 0); + + $def(self, '$always!', function $Promise_always$excl$16() { + var block = $Promise_always$excl$16.$$p || nil, self = this; + + delete $Promise_always$excl$16.$$p; + + ; + self['$there_can_be_only_one!'](); + return $send(self, 'always', [], block.$to_proc()); + }, 0); + + $def(self, '$trace', function $$trace(depth) { + var block = $$trace.$$p || nil, self = this; + + delete $$trace.$$p; + + ; + + if (depth == null) depth = nil;; + return self['$^']($$('Trace').$new(depth, block)); + }, -1); + + $def(self, '$trace!', function $Promise_trace$excl$17($a) { + var block = $Promise_trace$excl$17.$$p || nil, $post_args, args, self = this; + + delete $Promise_trace$excl$17.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + self['$there_can_be_only_one!'](); + return $send(self, 'trace', $to_a(args), block.$to_proc()); + }, -1); + + $def(self, '$there_can_be_only_one!', function $Promise_there_can_be_only_one$excl$18() { + var self = this; + + if ($truthy(self.next['$any?']())) { + return self.$raise($$('ArgumentError'), "a promise has already been chained") + } else { + return nil + } + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this, result = nil, $ret_or_1 = nil; + + + result = "#<" + (self.$class()) + "(" + (self.$object_id()) + ")"; + if ($truthy(self.next['$any?']())) { + result = $rb_plus(result, " >> " + (self.next.$inspect())) + }; + result = $rb_plus(result, ($truthy(self['$realized?']()) ? (": " + (($truthy(($ret_or_1 = self.value)) ? ($ret_or_1) : (self.error)).$inspect()) + ">") : (">"))); + return result; + }, 0); + + $def(self, '$to_v2', function $$to_v2() { + var self = this, v2 = nil; + + + v2 = $$('PromiseV2').$new(); + $send($send(self, 'then', [], function $$19(i){ + + + if (i == null) i = nil;; + return v2.$resolve(i);}, 1), 'rescue', [], function $$20(i){ + + + if (i == null) i = nil;; + return v2.$reject(i);}, 1); + return v2; + }, 0); + $alias(self, "catch", "fail"); + $alias(self, "catch!", "fail!"); + $alias(self, "do", "then"); + $alias(self, "do!", "then!"); + $alias(self, "ensure", "always"); + $alias(self, "ensure!", "always!"); + $alias(self, "finally", "always"); + $alias(self, "finally!", "always!"); + $alias(self, "rescue", "fail"); + $alias(self, "rescue!", "fail!"); + $alias(self, "to_n", "to_v2"); + $alias(self, "to_v1", "itself"); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Trace'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + $defs(self, '$it', function $$it(promise) { + var self = this, current = nil, prev = nil; + + + current = []; + if (($truthy(promise['$act?']()) || ($truthy(promise.$prev()['$nil?']())))) { + current.$push(promise.$value()) + }; + prev = promise.$prev(); + if ($truthy(prev)) { + return current.$concat(self.$it(prev)) + } else { + return current + }; + }, 1); + return $def(self, '$initialize', function $$initialize(depth, block) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + self.depth = depth; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [$hash2(["success"], {"success": $send(self, 'proc', [], function $$21(){var self = $$21.$$s == null ? this : $$21.$$s, trace = nil; + + + trace = $$('Trace').$it(self).$reverse(); + trace.$pop(); + if (($truthy(depth) && ($truthy($rb_le(depth, trace.$length()))))) { + trace.$shift($rb_minus(trace.$length(), depth)) + }; + return $send(block, 'call', $to_a(trace));}, {$$arity: 0, $$s: self})})], null); + }, 2); + })($nesting[0], self, $nesting); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'When'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.wait = nil; + + + $def(self, '$initialize', function $$initialize(promises) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + if (promises == null) promises = [];; + $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [], null); + self.wait = []; + return $send(promises, 'each', [], function $$22(promise){var self = $$22.$$s == null ? this : $$22.$$s; + + + + if (promise == null) promise = nil;; + return self.$wait(promise);}, {$$arity: 1, $$s: self}); + }, -1); + + $def(self, '$each', function $$each() { + var block = $$each.$$p || nil, self = this; + + delete $$each.$$p; + + ; + if (!$truthy(block)) { + self.$raise($$('ArgumentError'), "no block given") + }; + return $send(self, 'then', [], function $$23(values){ + + + if (values == null) values = nil;; + return $send(values, 'each', [], block.$to_proc());}, 1); + }, 0); + + $def(self, '$collect', function $$collect() { + var block = $$collect.$$p || nil, self = this; + + delete $$collect.$$p; + + ; + if (!$truthy(block)) { + self.$raise($$('ArgumentError'), "no block given") + }; + return $send(self, 'then', [], function $$24(values){ + + + if (values == null) values = nil;; + return $$('When').$new($send(values, 'map', [], block.$to_proc()));}, 1); + }, 0); + + $def(self, '$inject', function $$inject($a) { + var block = $$inject.$$p || nil, $post_args, args, self = this; + + delete $$inject.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return $send(self, 'then', [], function $$25(values){ + + + if (values == null) values = nil;; + return $send(values, 'reduce', $to_a(args), block.$to_proc());}, 1); + }, -1); + + $def(self, '$wait', function $$wait(promise) { + var self = this; + + + if (!$eqeqeq($$('Promise'), promise)) { + promise = $$('Promise').$value(promise) + }; + if ($truthy(promise['$act?']())) { + promise = promise.$then() + }; + self.wait['$<<'](promise); + $send(promise, 'always', [], function $$26(){var self = $$26.$$s == null ? this : $$26.$$s; + if (self.next == null) self.next = nil; + + if ($truthy(self.next['$any?']())) { + return self.$try() + } else { + return nil + }}, {$$arity: 0, $$s: self}); + return self; + }, 1); + + $def(self, '$>>', function $When_$gt$gt$27($a) { + var $post_args, $rest_arg, $yield = $When_$gt$gt$27.$$p || nil, self = this; + + delete $When_$gt$gt$27.$$p; + + + $post_args = Opal.slice.call(arguments); + + $rest_arg = $post_args;; + return $send($send2(self, $find_super(self, '>>', $When_$gt$gt$27, false, true), '>>', $to_a($rest_arg), $yield), 'tap', [], function $$28(){var self = $$28.$$s == null ? this : $$28.$$s; + + return self.$try()}, {$$arity: 0, $$s: self}); + }, -1); + + $def(self, '$try', function $When_try$29() { + var self = this, promise = nil; + + if ($truthy($send(self.wait, 'all?', [], "realized?".$to_proc()))) { + + promise = $send(self.wait, 'find', [], "rejected?".$to_proc()); + if ($truthy(promise)) { + return self.$reject(promise.$error()) + } else { + return self.$resolve($send(self.wait, 'map', [], "value".$to_proc())) + }; + } else { + return nil + } + }, 0); + $alias(self, "map", "collect"); + $alias(self, "reduce", "inject"); + return $alias(self, "and", "wait"); + })($nesting[0], self, $nesting); + })($nesting[0], null, $nesting); + return $const_set($nesting[0], 'PromiseV1', $$('Promise')); +}; diff --git a/opal/1.4.1/promise.min.js b/opal/1.4.1/promise.min.js new file mode 100644 index 00000000..111a54da --- /dev/null +++ b/opal/1.4.1/promise.min.js @@ -0,0 +1 @@ +Opal.modules.promise=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$klass=Opal.klass,$defs=Opal.defs,$hash2=Opal.hash2,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$not=Opal.not,$send=Opal.send,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$alias=Opal.alias,$send2=Opal.send2,$find_super=Opal.find_super,$rb_le=Opal.rb_le,$rb_minus=Opal.rb_minus,$const_set=Opal.const_set;return Opal.add_stubs("resolve,new,reject,attr_reader,===,value,key?,keys,!=,==,<<,>>,exception?,[],resolved?,rejected?,!,error,include?,action,realized?,raise,^,call,resolve!,exception!,any?,each,reject!,there_can_be_only_one!,then,to_proc,fail,always,trace,class,object_id,+,inspect,rescue,nil?,prev,act?,push,concat,it,proc,reverse,pop,<=,length,shift,-,wait,map,reduce,try,tap,all?,find"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Promise"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.value=$proto.action=$proto.exception=$proto.realized=$proto.next=$proto.delayed=$proto.error=$proto.prev=nil,$defs(self,"$value",(function(value){return this.$new().$resolve(value)}),1),$defs(self,"$error",(function(value){return this.$new().$reject(value)}),1),$defs(self,"$when",(function($a){var promises;return promises=Opal.slice.call(arguments),$$("When").$new(promises)}),-1),self.$attr_reader("error","prev","next"),$def(self,"$initialize",(function(action){return null==action&&(action=$hash2([],{})),this.action=action,this.realized=!1,this.exception=!1,this.value=nil,this.error=nil,this.delayed=!1,this.prev=nil,this.next=[]}),-1),$def(self,"$value",(function(){return $eqeqeq($$("Promise"),this.value)?this.value.$value():this.value}),0),$def(self,"$act?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.action["$key?"]("success"))?$ret_or_1:this.action["$key?"]("always")}),0),$def(self,"$action",(function(){return this.action.$keys()}),0),$def(self,"$exception?",(function(){return this.exception}),0),$def(self,"$realized?",(function(){return this.realized["$!="](!1)}),0),$def(self,"$resolved?",(function(){return this.realized["$=="]("resolve")}),0),$def(self,"$rejected?",(function(){return this.realized["$=="]("reject")}),0),$def(self,"$^",(function(promise){return promise["$<<"](this),this["$>>"](promise),promise}),1),$def(self,"$<<",(function(promise){return this.prev=promise,this}),1),$def(self,"$>>",(function(promise){return this.next["$<<"](promise),$truthy(this["$exception?"]())?promise.$reject(this.delayed["$[]"](0)):$truthy(this["$resolved?"]())?promise.$resolve($truthy(this.delayed)?this.delayed["$[]"](0):this.$value()):$truthy(this["$rejected?"]())&&($not(this.action["$key?"]("failure"))||$eqeqeq($$("Promise"),$truthy(this.delayed)?this.delayed["$[]"](0):this.error)||$truthy(promise.$action()["$include?"]("always")))&&promise.$reject($truthy(this.delayed)?this.delayed["$[]"](0):this.$error()),this}),1),$def(self,"$resolve",(function(value){var block=nil,$ret_or_1=nil,e=nil;if(null==value&&(value=nil),$truthy(this["$realized?"]())&&this.$raise($$("ArgumentError"),"the promise has already been realized"),$eqeqeq($$("Promise"),value))return value["$<<"](this.prev)["$^"](this);try{block=$truthy($ret_or_1=this.action["$[]"]("success"))?$ret_or_1:this.action["$[]"]("always"),$truthy(block)&&(value=block.$call(value)),this["$resolve!"](value)}catch($err){if(!Opal.rescue($err,[$$("Exception")]))throw $err;e=$err;try{this["$exception!"](e)}finally{Opal.pop_exception()}}return this}),-1),$def(self,"$resolve!",(function(value){return this.realized="resolve",this.value=value,$truthy(this.next["$any?"]())?$send(this.next,"each",[],(function(p){return null==p&&(p=nil),p.$resolve(value)}),1):this.delayed=[value]}),1),$def(self,"$reject",(function(value){var block=nil,$ret_or_1=nil,e=nil;if(null==value&&(value=nil),$truthy(this["$realized?"]())&&this.$raise($$("ArgumentError"),"the promise has already been realized"),$eqeqeq($$("Promise"),value))return value["$<<"](this.prev)["$^"](this);try{block=$truthy($ret_or_1=this.action["$[]"]("failure"))?$ret_or_1:this.action["$[]"]("always"),$truthy(block)&&(value=block.$call(value)),$truthy(this.action["$key?"]("always"))?this["$resolve!"](value):this["$reject!"](value)}catch($err){if(!Opal.rescue($err,[$$("Exception")]))throw $err;e=$err;try{this["$exception!"](e)}finally{Opal.pop_exception()}}return this}),-1),$def(self,"$reject!",(function(value){return this.realized="reject",this.error=value,$truthy(this.next["$any?"]())?$send(this.next,"each",[],(function(p){return null==p&&(p=nil),p.$reject(value)}),1):this.delayed=[value]}),1),$def(self,"$exception!",(function(error){return this.exception=!0,this["$reject!"](error)}),1),$def(self,"$then",(function $$then(){var block=$$then.$$p||nil;return delete $$then.$$p,this["$^"]($$("Promise").$new($hash2(["success"],{success:block})))}),0),$def(self,"$then!",(function $Promise_then$excl$14(){var block=$Promise_then$excl$14.$$p||nil;return delete $Promise_then$excl$14.$$p,this["$there_can_be_only_one!"](),$send(this,"then",[],block.$to_proc())}),0),$def(self,"$fail",(function $$fail(){var block=$$fail.$$p||nil;return delete $$fail.$$p,this["$^"]($$("Promise").$new($hash2(["failure"],{failure:block})))}),0),$def(self,"$fail!",(function $Promise_fail$excl$15(){var block=$Promise_fail$excl$15.$$p||nil;return delete $Promise_fail$excl$15.$$p,this["$there_can_be_only_one!"](),$send(this,"fail",[],block.$to_proc())}),0),$def(self,"$always",(function $$always(){var block=$$always.$$p||nil;return delete $$always.$$p,this["$^"]($$("Promise").$new($hash2(["always"],{always:block})))}),0),$def(self,"$always!",(function $Promise_always$excl$16(){var block=$Promise_always$excl$16.$$p||nil;return delete $Promise_always$excl$16.$$p,this["$there_can_be_only_one!"](),$send(this,"always",[],block.$to_proc())}),0),$def(self,"$trace",(function $$trace(depth){var block=$$trace.$$p||nil;return delete $$trace.$$p,null==depth&&(depth=nil),this["$^"]($$("Trace").$new(depth,block))}),-1),$def(self,"$trace!",(function $Promise_trace$excl$17($a){var args,block=$Promise_trace$excl$17.$$p||nil,self=this;return delete $Promise_trace$excl$17.$$p,args=Opal.slice.call(arguments),self["$there_can_be_only_one!"](),$send(self,"trace",$to_a(args),block.$to_proc())}),-1),$def(self,"$there_can_be_only_one!",(function(){return $truthy(this.next["$any?"]())?this.$raise($$("ArgumentError"),"a promise has already been chained"):nil}),0),$def(self,"$inspect",(function(){var result=nil,$ret_or_1=nil;return result="#<"+this.$class()+"("+this.$object_id()+")",$truthy(this.next["$any?"]())&&(result=$rb_plus(result," >> "+this.next.$inspect())),result=$rb_plus(result,$truthy(this["$realized?"]())?": "+($truthy($ret_or_1=this.value)?$ret_or_1:this.error).$inspect()+">":">")}),0),$def(self,"$to_v2",(function(){var v2=nil;return v2=$$("PromiseV2").$new(),$send($send(this,"then",[],(function(i){return null==i&&(i=nil),v2.$resolve(i)}),1),"rescue",[],(function(i){return null==i&&(i=nil),v2.$reject(i)}),1),v2}),0),$alias(self,"catch","fail"),$alias(self,"catch!","fail!"),$alias(self,"do","then"),$alias(self,"do!","then!"),$alias(self,"ensure","always"),$alias(self,"ensure!","always!"),$alias(self,"finally","always"),$alias(self,"finally!","always!"),$alias(self,"rescue","fail"),$alias(self,"rescue!","fail!"),$alias(self,"to_n","to_v2"),$alias(self,"to_v1","itself"),function($base,$super,$parent_nesting){var self=$klass($base,$super,"Trace"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$defs(self,"$it",(function(promise){var prev,current=nil;return current=[],($truthy(promise["$act?"]())||$truthy(promise.$prev()["$nil?"]()))&¤t.$push(promise.$value()),prev=promise.$prev(),$truthy(prev)?current.$concat(this.$it(prev)):current}),1),$def(self,"$initialize",(function $$initialize(depth,block){return delete $$initialize.$$p,this.depth=depth,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[$hash2(["success"],{success:$send(this,"proc",[],(function $$21(){var self=null==$$21.$$s?this:$$21.$$s,trace=nil;return(trace=$$("Trace").$it(self).$reverse()).$pop(),$truthy(depth)&&$truthy($rb_le(depth,trace.$length()))&&trace.$shift($rb_minus(trace.$length(),depth)),$send(block,"call",$to_a(trace))}),{$$arity:0,$$s:this})})],null)}),2)}($nesting[0],self,$nesting),function($base,$super,$parent_nesting){var self=$klass($base,$super,"When"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.wait=nil,$def(self,"$initialize",(function $$initialize(promises){return delete $$initialize.$$p,null==promises&&(promises=[]),$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[],null),this.wait=[],$send(promises,"each",[],(function $$22(promise){return null==promise&&(promise=nil),(null==$$22.$$s?this:$$22.$$s).$wait(promise)}),{$$arity:1,$$s:this})}),-1),$def(self,"$each",(function $$each(){var block=$$each.$$p||nil;return delete $$each.$$p,$truthy(block)||this.$raise($$("ArgumentError"),"no block given"),$send(this,"then",[],(function(values){return null==values&&(values=nil),$send(values,"each",[],block.$to_proc())}),1)}),0),$def(self,"$collect",(function $$collect(){var block=$$collect.$$p||nil;return delete $$collect.$$p,$truthy(block)||this.$raise($$("ArgumentError"),"no block given"),$send(this,"then",[],(function(values){return null==values&&(values=nil),$$("When").$new($send(values,"map",[],block.$to_proc()))}),1)}),0),$def(self,"$inject",(function $$inject($a){var $post_args,args,block=$$inject.$$p||nil,self=this;return delete $$inject.$$p,$post_args=Opal.slice.call(arguments),args=$post_args,$send(self,"then",[],(function(values){return null==values&&(values=nil),$send(values,"reduce",$to_a(args),block.$to_proc())}),1)}),-1),$def(self,"$wait",(function(promise){return $eqeqeq($$("Promise"),promise)||(promise=$$("Promise").$value(promise)),$truthy(promise["$act?"]())&&(promise=promise.$then()),this.wait["$<<"](promise),$send(promise,"always",[],(function $$26(){var self=null==$$26.$$s?this:$$26.$$s;return null==self.next&&(self.next=nil),$truthy(self.next["$any?"]())?self.$try():nil}),{$$arity:0,$$s:this}),this}),1),$def(self,"$>>",(function $When_$gt$gt$27($a){var $rest_arg,$yield=$When_$gt$gt$27.$$p||nil,self=this;return delete $When_$gt$gt$27.$$p,$rest_arg=Opal.slice.call(arguments),$send($send2(self,$find_super(self,">>",$When_$gt$gt$27,!1,!0),">>",$to_a($rest_arg),$yield),"tap",[],(function $$28(){return(null==$$28.$$s?this:$$28.$$s).$try()}),{$$arity:0,$$s:self})}),-1),$def(self,"$try",(function(){var promise=nil;return $truthy($send(this.wait,"all?",[],"realized?".$to_proc()))?(promise=$send(this.wait,"find",[],"rejected?".$to_proc()),$truthy(promise)?this.$reject(promise.$error()):this.$resolve($send(this.wait,"map",[],"value".$to_proc()))):nil}),0),$alias(self,"map","collect"),$alias(self,"reduce","inject"),$alias(self,"and","wait")}($nesting[0],self,$nesting)}($nesting[0],0,$nesting),$const_set($nesting[0],"PromiseV1",$$("Promise"))}; diff --git a/opal/1.4.1/promise.min.js.gz b/opal/1.4.1/promise.min.js.gz new file mode 100644 index 00000000..13d64dc4 Binary files /dev/null and b/opal/1.4.1/promise.min.js.gz differ diff --git a/opal/1.4.1/quickjs.js b/opal/1.4.1/quickjs.js new file mode 100644 index 00000000..e0db9726 --- /dev/null +++ b/opal/1.4.1/quickjs.js @@ -0,0 +1,42 @@ +Opal.modules["quickjs/io"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var nil = Opal.nil; + + + Opal.gvars.stdout.write_proc = function(s) { + std.out.printf("%s", s); + std.out.flush(); + } + + Opal.gvars.stderr.write_proc = function(s) { + std.err.printf("%s", s); + std.err.flush(); + } + + Opal.gvars.stdin.read_proc = function(s) { + if (std.in.eof()) { + return nil; + } + else { + return std.in.readAsString(s); + } + } + +}; + +Opal.modules["quickjs/kernel"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $const_set = Opal.const_set; + + + $const_set($nesting[0], 'ARGV', scriptArgs); + return Opal.exit = std.exit;; +}; + +Opal.modules["quickjs"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, nil = Opal.nil; + + Opal.add_stubs('require'); + + /* global std, scriptArgs */; + self.$require("quickjs/io"); + return self.$require("quickjs/kernel"); +}; diff --git a/opal/1.4.1/quickjs.min.js b/opal/1.4.1/quickjs.min.js new file mode 100644 index 00000000..46c53587 --- /dev/null +++ b/opal/1.4.1/quickjs.min.js @@ -0,0 +1 @@ +Opal.modules["quickjs/io"]=function(Opal){var nil=Opal.nil;Opal.gvars.stdout.write_proc=function(s){std.out.printf("%s",s),std.out.flush()},Opal.gvars.stderr.write_proc=function(s){std.err.printf("%s",s),std.err.flush()},Opal.gvars.stdin.read_proc=function(s){return std.in.eof()?nil:std.in.readAsString(s)}},Opal.modules["quickjs/kernel"]=function(Opal){Opal.nil;return(0,Opal.const_set)([][0],"ARGV",scriptArgs),Opal.exit=std.exit},Opal.modules.quickjs=function(Opal){var self=Opal.top;Opal.nil;return Opal.add_stubs("require"),self.$require("quickjs/io"),self.$require("quickjs/kernel")}; diff --git a/opal/1.4.1/quickjs.min.js.gz b/opal/1.4.1/quickjs.min.js.gz new file mode 100644 index 00000000..01d8ed11 Binary files /dev/null and b/opal/1.4.1/quickjs.min.js.gz differ diff --git a/opal/1.4.1/rbconfig.js b/opal/1.4.1/rbconfig.js new file mode 100644 index 00000000..fa99da9a --- /dev/null +++ b/opal/1.4.1/rbconfig.js @@ -0,0 +1,16 @@ +Opal.modules["rbconfig"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set, $hash2 = Opal.hash2; + + Opal.add_stubs('split,[]'); + + (function($base, $parent_nesting) { + var self = $module($base, 'RbConfig'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), versions = nil; + + + versions = $$('RUBY_VERSION').$split("."); + return $const_set($nesting[0], 'CONFIG', $hash2(["ruby_version", "MAJOR", "MINOR", "TEENY", "RUBY", "RUBY_INSTALL_NAME", "RUBY_SO_NAME", "target_os", "host_os", "PATH_SEPARATOR"], {"ruby_version": $$('RUBY_VERSION'), "MAJOR": versions['$[]'](0), "MINOR": versions['$[]'](1), "TEENY": versions['$[]'](2), "RUBY": $$('RUBY_ENGINE'), "RUBY_INSTALL_NAME": $$('RUBY_ENGINE'), "RUBY_SO_NAME": $$('RUBY_ENGINE'), "target_os": "ECMA-262", "host_os": "ECMA-262", "PATH_SEPARATOR": ":"})); + })($nesting[0], $nesting); + return $const_set($nesting[0], 'RUBY_EXE', "bundle exec exe/opal"); +}; diff --git a/opal/1.4.1/rbconfig.min.js b/opal/1.4.1/rbconfig.min.js new file mode 100644 index 00000000..463453a3 --- /dev/null +++ b/opal/1.4.1/rbconfig.min.js @@ -0,0 +1 @@ +Opal.modules.rbconfig=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$const_set=Opal.const_set,$hash2=Opal.hash2;return Opal.add_stubs("split,[]"),function($base,$parent_nesting){var $nesting=[$module($base,"RbConfig")].concat($parent_nesting),$$=Opal.$r($nesting),versions=nil;versions=$$("RUBY_VERSION").$split("."),$const_set($nesting[0],"CONFIG",$hash2(["ruby_version","MAJOR","MINOR","TEENY","RUBY","RUBY_INSTALL_NAME","RUBY_SO_NAME","target_os","host_os","PATH_SEPARATOR"],{ruby_version:$$("RUBY_VERSION"),MAJOR:versions["$[]"](0),MINOR:versions["$[]"](1),TEENY:versions["$[]"](2),RUBY:$$("RUBY_ENGINE"),RUBY_INSTALL_NAME:$$("RUBY_ENGINE"),RUBY_SO_NAME:$$("RUBY_ENGINE"),target_os:"ECMA-262",host_os:"ECMA-262",PATH_SEPARATOR:":"}))}($nesting[0],$nesting),$const_set($nesting[0],"RUBY_EXE","bundle exec exe/opal")}; diff --git a/opal/1.4.1/rbconfig.min.js.gz b/opal/1.4.1/rbconfig.min.js.gz new file mode 100644 index 00000000..5735aa64 Binary files /dev/null and b/opal/1.4.1/rbconfig.min.js.gz differ diff --git a/opal/1.4.1/securerandom.js b/opal/1.4.1/securerandom.js new file mode 100644 index 00000000..14ce98ce --- /dev/null +++ b/opal/1.4.1/securerandom.js @@ -0,0 +1,263 @@ +Opal.modules["corelib/random/formatter"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $module = Opal.module, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $range = Opal.range, $rb_divide = Opal.rb_divide, $Kernel = Opal.Kernel, $Opal = Opal.Opal; + + Opal.add_stubs('_verify_count,bytes,encode,strict_encode64,random_bytes,urlsafe_encode64,split,hex,[]=,-,[],map,to_proc,join,times,<<,|,ord,/,abs,random_float,raise,coerce_to!,flatten,new,random_number,length,include,extend'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Random'); + + var $nesting = [self].concat($parent_nesting); + + + (function($base, $parent_nesting) { + var self = $module($base, 'Formatter'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$hex', function $$hex(count) { + var self = this; + + + + if (count == null) count = nil;; + count = $$$('Random').$_verify_count(count); + + var bytes = self.$bytes(count); + var out = ""; + for (var i = 0; i < count; i++) { + out += bytes.charCodeAt(i).toString(16).padStart(2, '0'); + } + return (out).$encode("US-ASCII"); + ; + }, -1); + + $def(self, '$random_bytes', function $$random_bytes(count) { + var self = this; + + + + if (count == null) count = nil;; + return self.$bytes(count); + }, -1); + + $def(self, '$base64', function $$base64(count) { + var self = this; + + + + if (count == null) count = nil;; + return $$$('Base64').$strict_encode64(self.$random_bytes(count)).$encode("US-ASCII"); + }, -1); + + $def(self, '$urlsafe_base64', function $$urlsafe_base64(count, padding) { + var self = this; + + + + if (count == null) count = nil;; + + if (padding == null) padding = false;; + return $$$('Base64').$urlsafe_encode64(self.$random_bytes(count), padding).$encode("US-ASCII"); + }, -1); + + $def(self, '$uuid', function $$uuid() { + var self = this, str = nil, $writer = nil; + + + str = self.$hex(16).$split(""); + + $writer = [12, "4"]; + $send(str, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [16, (parseInt(str['$[]'](16), 16) & 3 | 8).toString(16)]; + $send(str, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + str = [str['$[]']($range(0, 8, true)), str['$[]']($range(8, 12, true)), str['$[]']($range(12, 16, true)), str['$[]']($range(16, 20, true)), str['$[]']($range(20, 32, true))]; + str = $send(str, 'map', [], "join".$to_proc()); + return str.$join("-"); + }, 0); + + $def(self, '$random_float', function $$random_float() { + var self = this, bs = nil, num = nil; + + + bs = self.$bytes(4); + num = 0; + $send((4), 'times', [], function $$1(i){ + + + if (i == null) i = nil;; + num = num['$<<'](8); + return (num = num['$|'](bs['$[]'](i).$ord()));}, 1); + return $rb_divide(num.$abs(), 2147483647); + }, 0); + + $def(self, '$random_number', function $$random_number(limit) { + var self = this; + + + ; + + function randomFloat() { + return self.$random_float(); + } + + function randomInt(max) { + return Math.floor(randomFloat() * max); + } + + function randomRange() { + var min = limit.begin, + max = limit.end; + + if (min === nil || max === nil) { + return nil; + } + + var length = max - min; + + if (length < 0) { + return nil; + } + + if (length === 0) { + return min; + } + + if (max % 1 === 0 && min % 1 === 0 && !limit.excl) { + length++; + } + + return randomInt(length) + min; + } + + if (limit == null) { + return randomFloat(); + } else if (limit.$$is_range) { + return randomRange(); + } else if (limit.$$is_number) { + if (limit <= 0) { + $Kernel.$raise($$$('ArgumentError'), "invalid argument - " + (limit)) + } + + if (limit % 1 === 0) { + // integer + return randomInt(limit); + } else { + return randomFloat() * limit; + } + } else { + limit = $Opal['$coerce_to!'](limit, $$$('Integer'), "to_int"); + + if (limit <= 0) { + $Kernel.$raise($$$('ArgumentError'), "invalid argument - " + (limit)) + } + + return randomInt(limit); + } + ; + }, -1); + return $def(self, '$alphanumeric', function $$alphanumeric(count) { + var self = this, map = nil; + + + + if (count == null) count = nil;; + count = $$('Random').$_verify_count(count); + map = $send([$range("0", "9", false), $range("a", "z", false), $range("A", "Z", false)], 'map', [], "to_a".$to_proc()).$flatten(); + return $send($$$('Array'), 'new', [count], function $$2(i){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (i == null) i = nil;; + return map['$[]'](self.$random_number(map.$length()));}, {$$arity: 1, $$s: self}).$join(); + }, -1); + })(self, $nesting); + self.$include($$$($$$('Random'), 'Formatter')); + return self.$extend($$$($$$('Random'), 'Formatter')); + })('::', null, $nesting) +}; + +Opal.modules["securerandom"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $defs = Opal.defs; + + Opal.add_stubs('require,extend,warn,rand,gen_random,_verify_count,encode'); + + self.$require("corelib/random/formatter"); + return (function($base, $parent_nesting) { + var self = $module($base, 'SecureRandom'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + self.$extend($$$($$('Random'), 'Formatter')); + + var gen_random_bytes; + + if ((Opal.global.crypto && Opal.global.crypto.getRandomValues) || + (Opal.global.msCrypto && Opal.global.msCrypto.getRandomValues)) { + // This method is available in all non-ancient web browsers. + + var crypto = Opal.global.crypto || Opal.global.msCrypto; + gen_random_bytes = function(count) { + var storage = new Uint8Array(count); + crypto.getRandomValues(storage); + return storage; + }; + } + else if (Opal.global.crypto && Opal.global.crypto.randomBytes) { + // This method is available in Node.js + + gen_random_bytes = function(count) { + return Opal.global.crypto.randomBytes(count); + }; + } + else { + // Let's dangerously polyfill this interface with our MersenneTwister + // xor native JS Math.random xor something about current time... + // That's hardly secure, but the following warning should provide a person + // deploying the code a good idea on what he should do to make his deployment + // actually secure. + // It's possible to interface other libraries by adding an else if above if + // that's really desired. + + self.$warn("Can't get a Crypto.getRandomValues interface or Crypto.randomBytes." + "The random values generated with SecureRandom won't be " + "cryptographically secure") + + gen_random_bytes = function(count) { + var storage = new Uint8Array(count); + for (var i = 0; i < count; i++) { + storage[i] = self.$rand(255) ^ Math.floor(Math.random() * 256); + storage[i] ^= +(new Date())>>self.$rand(255)&0xff; + } + return storage; + } + } + ; + $defs(self, '$bytes', function $$bytes(bytes) { + var self = this; + + + + if (bytes == null) bytes = nil;; + return self.$gen_random(bytes); + }, -1); + return $defs(self, '$gen_random', function $$gen_random(count) { + var out = nil; + + + + if (count == null) count = nil;; + count = $$('Random').$_verify_count(count); + out = ""; + + var bytes = gen_random_bytes(count); + for (var i = 0; i < count; i++) { + out += String.fromCharCode(bytes[i]); + } + ; + return out.$encode("ASCII-8BIT"); + }, -1); + })($nesting[0], $nesting); +}; diff --git a/opal/1.4.1/securerandom.min.js b/opal/1.4.1/securerandom.min.js new file mode 100644 index 00000000..aea53837 --- /dev/null +++ b/opal/1.4.1/securerandom.min.js @@ -0,0 +1 @@ +Opal.modules["corelib/random/formatter"]=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$module=Opal.module,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$range=Opal.range,$rb_divide=Opal.rb_divide,$Kernel=Opal.Kernel,$Opal=Opal.Opal;return Opal.add_stubs("_verify_count,bytes,encode,strict_encode64,random_bytes,urlsafe_encode64,split,hex,[]=,-,[],map,to_proc,join,times,<<,|,ord,/,abs,random_float,raise,coerce_to!,flatten,new,random_number,length,include,extend"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Random"),$nesting=[self].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Formatter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$hex",(function(count){null==count&&(count=nil),count=$$$("Random").$_verify_count(count);for(var bytes=this.$bytes(count),out="",i=0;i>self.$rand(255)&255;return storage});return $defs(self,"$bytes",(function(bytes){return null==bytes&&(bytes=nil),this.$gen_random(bytes)}),-1),$defs(self,"$gen_random",(function(count){var out=nil;null==count&&(count=nil),count=$$("Random").$_verify_count(count),out="";for(var bytes=gen_random_bytes(count),i=0;i" + }, 0); + + $def(self, '$==', function $Set_$eq_eq$4(other) { + var self = this; + + if ($truthy(self['$equal?'](other))) { + return true + } else if ($truthy(other['$instance_of?'](self.$class()))) { + return self.hash['$=='](other.$instance_variable_get("@hash")) + } else if (($truthy(other['$is_a?']($$$('Set'))) && ($eqeq(self.$size(), other.$size())))) { + return $send(other, 'all?', [], function $$5(o){var self = $$5.$$s == null ? this : $$5.$$s; + if (self.hash == null) self.hash = nil; + + + + if (o == null) o = nil;; + return self.hash['$include?'](o);}, {$$arity: 1, $$s: self}) + } else { + return false + } + }, 1); + + $def(self, '$add', function $$add(o) { + var self = this, $writer = nil; + + + + $writer = [o, true]; + $send(self.hash, '[]=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return self; + }, 1); + + $def(self, '$classify', function $$classify() { + var block = $$classify.$$p || nil, self = this, result = nil; + + delete $$classify.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("classify") + }; + result = $send($$$('Hash'), 'new', [], function $$6(h, k){var self = $$6.$$s == null ? this : $$6.$$s, $writer = nil; + + + + if (h == null) h = nil;; + + if (k == null) k = nil;; + $writer = [k, self.$class().$new()]; + $send(h, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];}, {$$arity: 2, $$s: self}); + $send(self, 'each', [], function $$7(item){ + + + if (item == null) item = nil;; + return result['$[]'](Opal.yield1(block, item)).$add(item);}, 1); + return result; + }, 0); + + $def(self, '$collect!', function $Set_collect$excl$8() { + var block = $Set_collect$excl$8.$$p || nil, self = this, result = nil; + + delete $Set_collect$excl$8.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("collect!") + }; + result = self.$class().$new(); + $send(self, 'each', [], function $$9(item){ + + + if (item == null) item = nil;; + return result['$<<'](Opal.yield1(block, item));}, 1); + return self.$replace(result); + }, 0); + + $def(self, '$delete', function $Set_delete$10(o) { + var self = this; + + + self.hash.$delete(o); + return self; + }, 1); + + $def(self, '$delete?', function $Set_delete$ques$11(o) { + var self = this; + + if ($truthy(self['$include?'](o))) { + + self.$delete(o); + return self; + } else { + return nil + } + }, 1); + + $def(self, '$delete_if', function $$delete_if() { + var $yield = $$delete_if.$$p || nil, self = this; + + delete $$delete_if.$$p; + + if (!($yield !== nil)) { + return self.$enum_for("delete_if") + }; + $send($send(self, 'select', [], function $$12(o){ + + + if (o == null) o = nil;; + return Opal.yield1($yield, o);;}, 1), 'each', [], function $$13(o){var self = $$13.$$s == null ? this : $$13.$$s; + if (self.hash == null) self.hash = nil; + + + + if (o == null) o = nil;; + return self.hash.$delete(o);}, {$$arity: 1, $$s: self}); + return self; + }, 0); + + $def(self, '$keep_if', function $$keep_if() { + var $yield = $$keep_if.$$p || nil, self = this; + + delete $$keep_if.$$p; + + if (!($yield !== nil)) { + return self.$enum_for("keep_if") + }; + $send($send(self, 'reject', [], function $$14(o){ + + + if (o == null) o = nil;; + return Opal.yield1($yield, o);;}, 1), 'each', [], function $$15(o){var self = $$15.$$s == null ? this : $$15.$$s; + if (self.hash == null) self.hash = nil; + + + + if (o == null) o = nil;; + return self.hash.$delete(o);}, {$$arity: 1, $$s: self}); + return self; + }, 0); + + $def(self, '$reject!', function $Set_reject$excl$16() { + var block = $Set_reject$excl$16.$$p || nil, self = this, before = nil; + + delete $Set_reject$excl$16.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("reject!") + }; + before = self.$size(); + $send(self, 'delete_if', [], block.$to_proc()); + if ($eqeq(self.$size(), before)) { + return nil + } else { + return self + }; + }, 0); + + $def(self, '$select!', function $Set_select$excl$17() { + var block = $Set_select$excl$17.$$p || nil, self = this, before = nil; + + delete $Set_select$excl$17.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("select!") + }; + before = self.$size(); + $send(self, 'keep_if', [], block.$to_proc()); + if ($eqeq(self.$size(), before)) { + return nil + } else { + return self + }; + }, 0); + + $def(self, '$add?', function $Set_add$ques$18(o) { + var self = this; + + if ($truthy(self['$include?'](o))) { + return nil + } else { + return self.$add(o) + } + }, 1); + + $def(self, '$each', function $$each() { + var block = $$each.$$p || nil, self = this; + + delete $$each.$$p; + + ; + if (!(block !== nil)) { + return self.$enum_for("each") + }; + $send(self.hash, 'each_key', [], block.$to_proc()); + return self; + }, 0); + + $def(self, '$empty?', function $Set_empty$ques$19() { + var self = this; + + return self.hash['$empty?']() + }, 0); + + $def(self, '$eql?', function $Set_eql$ques$20(other) { + var self = this; + + return self.hash['$eql?']($send(other, 'instance_eval', [], function $$21(){var self = $$21.$$s == null ? this : $$21.$$s; + if (self.hash == null) self.hash = nil; + + return self.hash}, {$$arity: 0, $$s: self})) + }, 1); + + $def(self, '$clear', function $$clear() { + var self = this; + + + self.hash.$clear(); + return self; + }, 0); + + $def(self, '$include?', function $Set_include$ques$22(o) { + var self = this; + + return self.hash['$include?'](o) + }, 1); + + $def(self, '$merge', function $$merge(enum$) { + var self = this; + + + $send(enum$, 'each', [], function $$23(item){var self = $$23.$$s == null ? this : $$23.$$s; + + + + if (item == null) item = nil;; + return self.$add(item);}, {$$arity: 1, $$s: self}); + return self; + }, 1); + + $def(self, '$replace', function $$replace(enum$) { + var self = this; + + + self.$clear(); + self.$merge(enum$); + return self; + }, 1); + + $def(self, '$size', function $$size() { + var self = this; + + return self.hash.$size() + }, 0); + + $def(self, '$subtract', function $$subtract(enum$) { + var self = this; + + + $send(enum$, 'each', [], function $$24(item){var self = $$24.$$s == null ? this : $$24.$$s; + + + + if (item == null) item = nil;; + return self.$delete(item);}, {$$arity: 1, $$s: self}); + return self; + }, 1); + + $def(self, '$|', function $Set_$$25(enum$) { + var self = this; + + + if (!$truthy(enum$['$respond_to?']("each"))) { + $Kernel.$raise($$$('ArgumentError'), "value must be enumerable") + }; + return self.$dup().$merge(enum$); + }, 1); + + function is_set(set) { + ($truthy(($ret_or_1 = (set)['$is_a?']($$$('Set')))) ? ($ret_or_1) : ($Kernel.$raise($$$('ArgumentError'), "value must be a set"))) + } + ; + + $def(self, '$superset?', function $Set_superset$ques$26(set) { + var self = this; + + + is_set(set); + if ($truthy($rb_lt(self.$size(), set.$size()))) { + return false + }; + return $send(set, 'all?', [], function $$27(o){var self = $$27.$$s == null ? this : $$27.$$s; + + + + if (o == null) o = nil;; + return self['$include?'](o);}, {$$arity: 1, $$s: self}); + }, 1); + + $def(self, '$proper_superset?', function $Set_proper_superset$ques$28(set) { + var self = this; + + + is_set(set); + if ($truthy($rb_le(self.$size(), set.$size()))) { + return false + }; + return $send(set, 'all?', [], function $$29(o){var self = $$29.$$s == null ? this : $$29.$$s; + + + + if (o == null) o = nil;; + return self['$include?'](o);}, {$$arity: 1, $$s: self}); + }, 1); + + $def(self, '$subset?', function $Set_subset$ques$30(set) { + var self = this; + + + is_set(set); + if ($truthy($rb_lt(set.$size(), self.$size()))) { + return false + }; + return $send(self, 'all?', [], function $$31(o){ + + + if (o == null) o = nil;; + return set['$include?'](o);}, 1); + }, 1); + + $def(self, '$proper_subset?', function $Set_proper_subset$ques$32(set) { + var self = this; + + + is_set(set); + if ($truthy($rb_le(set.$size(), self.$size()))) { + return false + }; + return $send(self, 'all?', [], function $$33(o){ + + + if (o == null) o = nil;; + return set['$include?'](o);}, 1); + }, 1); + + $def(self, '$intersect?', function $Set_intersect$ques$34(set) { + var self = this; + + + is_set(set); + if ($truthy($rb_lt(self.$size(), set.$size()))) { + return $send(self, 'any?', [], function $$35(o){ + + + if (o == null) o = nil;; + return set['$include?'](o);}, 1) + } else { + return $send(set, 'any?', [], function $$36(o){var self = $$36.$$s == null ? this : $$36.$$s; + + + + if (o == null) o = nil;; + return self['$include?'](o);}, {$$arity: 1, $$s: self}) + }; + }, 1); + + $def(self, '$disjoint?', function $Set_disjoint$ques$37(set) { + var self = this; + + return self['$intersect?'](set)['$!']() + }, 1); + + $def(self, '$to_a', function $$to_a() { + var self = this; + + return self.hash.$keys() + }, 0); + $alias(self, "+", "|"); + $alias(self, "<", "proper_subset?"); + $alias(self, "<<", "add"); + $alias(self, "<=", "subset?"); + $alias(self, ">", "proper_superset?"); + $alias(self, ">=", "superset?"); + $alias(self, "difference", "-"); + $alias(self, "filter!", "select!"); + $alias(self, "length", "size"); + $alias(self, "map!", "collect!"); + $alias(self, "member?", "include?"); + return $alias(self, "union", "|"); + })('::', null); + return (function($base, $parent_nesting) { + var self = $module($base, 'Enumerable'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$to_set', function $$to_set($a, $b) { + var block = $$to_set.$$p || nil, $post_args, klass, args, self = this; + + delete $$to_set.$$p; + + ; + + $post_args = Opal.slice.call(arguments); + + if ($post_args.length > 0) klass = $post_args.shift(); + if (klass == null) klass = $$('Set');; + + args = $post_args;; + return $send(klass, 'new', [self].concat($to_a(args)), block.$to_proc()); + }, -1) + })('::', $nesting); +}; diff --git a/opal/1.4.1/set.min.js b/opal/1.4.1/set.min.js new file mode 100644 index 00000000..945f259f --- /dev/null +++ b/opal/1.4.1/set.min.js @@ -0,0 +1 @@ +Opal.modules.set=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$defs=Opal.defs,$hash2=Opal.hash2,$truthy=Opal.truthy,$eqeqeq=Opal.eqeqeq,$Kernel=Opal.Kernel,$send=Opal.send,$def=Opal.def,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_lt=Opal.rb_lt,$rb_le=Opal.rb_le,$alias=Opal.alias,$module=Opal.module;return Opal.add_stubs("include,new,nil?,===,raise,each,add,merge,class,respond_to?,subtract,dup,join,to_a,equal?,instance_of?,==,instance_variable_get,size,is_a?,all?,include?,[]=,-,enum_for,[],<<,replace,delete,select,reject,delete_if,to_proc,keep_if,each_key,empty?,eql?,instance_eval,clear,<,<=,any?,!,intersect?,keys"),function($base,$super){var self=$klass("::",null,"Set");function is_set(set){$truthy(set["$is_a?"]($$$("Set")))||$Kernel.$raise($$$("ArgumentError"),"value must be a set")}self.$$prototype.hash=nil,self.$include($$$("Enumerable")),$defs(self,"$[]",(function($a){var ary,self=this;return ary=Opal.slice.call(arguments),self.$new(ary)}),-1),$def(self,"$initialize",(function $$initialize(enum$){var block=$$initialize.$$p||nil;return delete $$initialize.$$p,null==enum$&&(enum$=nil),this.hash=$hash2([],{}),$truthy(enum$["$nil?"]())?nil:($eqeqeq($$$("Enumerable"),enum$)||$Kernel.$raise($$$("ArgumentError"),"value must be enumerable"),$truthy(block)?$send(enum$,"each",[],(function $$2(item){return null==item&&(item=nil),(null==$$2.$$s?this:$$2.$$s).$add(Opal.yield1(block,item))}),{$$arity:1,$$s:this}):this.$merge(enum$))}),-1),$def(self,"$dup",(function(){return this.$class().$new().$merge(this)}),0),$def(self,"$-",(function(enum$){return $truthy(enum$["$respond_to?"]("each"))||$Kernel.$raise($$$("ArgumentError"),"value must be enumerable"),this.$dup().$subtract(enum$)}),1),$def(self,"$inspect",(function(){return"#"}),0),$def(self,"$==",(function(other){return!!$truthy(this["$equal?"](other))||($truthy(other["$instance_of?"](this.$class()))?this.hash["$=="](other.$instance_variable_get("@hash")):!(!$truthy(other["$is_a?"]($$$("Set")))||!$eqeq(this.$size(),other.$size()))&&$send(other,"all?",[],(function $$5(o){var self=null==$$5.$$s?this:$$5.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash["$include?"](o)}),{$$arity:1,$$s:this}))}),1),$def(self,"$add",(function(o){var $writer;return $writer=[o,!0],$send(this.hash,"[]=",$to_a($writer)),$rb_minus($writer.length,1),this}),1),$def(self,"$classify",(function $$classify(){var block=$$classify.$$p||nil,result=nil;return delete $$classify.$$p,block===nil?this.$enum_for("classify"):(result=$send($$$("Hash"),"new",[],(function $$6(h,k){var $writer;return null==h&&(h=nil),null==k&&(k=nil),$writer=[k,(null==$$6.$$s?this:$$6.$$s).$class().$new()],$send(h,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:2,$$s:this}),$send(this,"each",[],(function(item){return null==item&&(item=nil),result["$[]"](Opal.yield1(block,item)).$add(item)}),1),result)}),0),$def(self,"$collect!",(function $Set_collect$excl$8(){var block=$Set_collect$excl$8.$$p||nil,result=nil;return delete $Set_collect$excl$8.$$p,block===nil?this.$enum_for("collect!"):(result=this.$class().$new(),$send(this,"each",[],(function(item){return null==item&&(item=nil),result["$<<"](Opal.yield1(block,item))}),1),this.$replace(result))}),0),$def(self,"$delete",(function(o){return this.hash.$delete(o),this}),1),$def(self,"$delete?",(function(o){return $truthy(this["$include?"](o))?(this.$delete(o),this):nil}),1),$def(self,"$delete_if",(function $$delete_if(){var $yield=$$delete_if.$$p||nil;return delete $$delete_if.$$p,$yield===nil?this.$enum_for("delete_if"):($send($send(this,"select",[],(function(o){return null==o&&(o=nil),Opal.yield1($yield,o)}),1),"each",[],(function $$13(o){var self=null==$$13.$$s?this:$$13.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash.$delete(o)}),{$$arity:1,$$s:this}),this)}),0),$def(self,"$keep_if",(function $$keep_if(){var $yield=$$keep_if.$$p||nil;return delete $$keep_if.$$p,$yield===nil?this.$enum_for("keep_if"):($send($send(this,"reject",[],(function(o){return null==o&&(o=nil),Opal.yield1($yield,o)}),1),"each",[],(function $$15(o){var self=null==$$15.$$s?this:$$15.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash.$delete(o)}),{$$arity:1,$$s:this}),this)}),0),$def(self,"$reject!",(function $Set_reject$excl$16(){var before,block=$Set_reject$excl$16.$$p||nil;return delete $Set_reject$excl$16.$$p,block===nil?this.$enum_for("reject!"):(before=this.$size(),$send(this,"delete_if",[],block.$to_proc()),$eqeq(this.$size(),before)?nil:this)}),0),$def(self,"$select!",(function $Set_select$excl$17(){var before,block=$Set_select$excl$17.$$p||nil;return delete $Set_select$excl$17.$$p,block===nil?this.$enum_for("select!"):(before=this.$size(),$send(this,"keep_if",[],block.$to_proc()),$eqeq(this.$size(),before)?nil:this)}),0),$def(self,"$add?",(function(o){return $truthy(this["$include?"](o))?nil:this.$add(o)}),1),$def(self,"$each",(function $$each(){var block=$$each.$$p||nil;return delete $$each.$$p,block===nil?this.$enum_for("each"):($send(this.hash,"each_key",[],block.$to_proc()),this)}),0),$def(self,"$empty?",(function(){return this.hash["$empty?"]()}),0),$def(self,"$eql?",(function(other){return this.hash["$eql?"]($send(other,"instance_eval",[],(function $$21(){var self=null==$$21.$$s?this:$$21.$$s;return null==self.hash&&(self.hash=nil),self.hash}),{$$arity:0,$$s:this}))}),1),$def(self,"$clear",(function(){return this.hash.$clear(),this}),0),$def(self,"$include?",(function(o){return this.hash["$include?"](o)}),1),$def(self,"$merge",(function(enum$){return $send(enum$,"each",[],(function $$23(item){return null==item&&(item=nil),(null==$$23.$$s?this:$$23.$$s).$add(item)}),{$$arity:1,$$s:this}),this}),1),$def(self,"$replace",(function(enum$){return this.$clear(),this.$merge(enum$),this}),1),$def(self,"$size",(function(){return this.hash.$size()}),0),$def(self,"$subtract",(function(enum$){return $send(enum$,"each",[],(function $$24(item){return null==item&&(item=nil),(null==$$24.$$s?this:$$24.$$s).$delete(item)}),{$$arity:1,$$s:this}),this}),1),$def(self,"$|",(function(enum$){return $truthy(enum$["$respond_to?"]("each"))||$Kernel.$raise($$$("ArgumentError"),"value must be enumerable"),this.$dup().$merge(enum$)}),1),$def(self,"$superset?",(function(set){return is_set(set),!$truthy($rb_lt(this.$size(),set.$size()))&&$send(set,"all?",[],(function $$27(o){return null==o&&(o=nil),(null==$$27.$$s?this:$$27.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$proper_superset?",(function(set){return is_set(set),!$truthy($rb_le(this.$size(),set.$size()))&&$send(set,"all?",[],(function $$29(o){return null==o&&(o=nil),(null==$$29.$$s?this:$$29.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$subset?",(function(set){return is_set(set),!$truthy($rb_lt(set.$size(),this.$size()))&&$send(this,"all?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1)}),1),$def(self,"$proper_subset?",(function(set){return is_set(set),!$truthy($rb_le(set.$size(),this.$size()))&&$send(this,"all?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1)}),1),$def(self,"$intersect?",(function(set){return is_set(set),$truthy($rb_lt(this.$size(),set.$size()))?$send(this,"any?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1):$send(set,"any?",[],(function $$36(o){return null==o&&(o=nil),(null==$$36.$$s?this:$$36.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$disjoint?",(function(set){return this["$intersect?"](set)["$!"]()}),1),$def(self,"$to_a",(function(){return this.hash.$keys()}),0),$alias(self,"+","|"),$alias(self,"<","proper_subset?"),$alias(self,"<<","add"),$alias(self,"<=","subset?"),$alias(self,">","proper_superset?"),$alias(self,">=","superset?"),$alias(self,"difference","-"),$alias(self,"filter!","select!"),$alias(self,"length","size"),$alias(self,"map!","collect!"),$alias(self,"member?","include?"),$alias(self,"union","|")}(),function($base,$parent_nesting){var self=$module("::","Enumerable"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$to_set",(function $$to_set($a,$b){var $post_args,klass,block=$$to_set.$$p||nil,self=this;return delete $$to_set.$$p,($post_args=Opal.slice.call(arguments)).length>0&&(klass=$post_args.shift()),null==klass&&(klass=$$("Set")),$send(klass,"new",[self].concat($to_a($post_args)),block.$to_proc())}),-1)}(0,[])}; diff --git a/opal/1.4.1/set.min.js.gz b/opal/1.4.1/set.min.js.gz new file mode 100644 index 00000000..fad31288 Binary files /dev/null and b/opal/1.4.1/set.min.js.gz differ diff --git a/opal/1.4.1/shellwords.js b/opal/1.4.1/shellwords.js new file mode 100644 index 00000000..7b5ae690 --- /dev/null +++ b/opal/1.4.1/shellwords.js @@ -0,0 +1,109 @@ +Opal.modules["shellwords"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $rb_plus = Opal.rb_plus, $send = Opal.send, $to_ary = Opal.to_ary, $truthy = Opal.truthy, $def = Opal.def, $alias = Opal.alias, $klass = Opal.klass; + + Opal.add_stubs('+,new,scan,raise,inspect,gsub,<<,module_function,to_s,empty?,dup,join,map,shellescape,split,escape'); + + (function($base, $parent_nesting) { + var self = $module($base, 'Shellwords'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$shellsplit', function $$shellsplit(line) { + var self = this, words = nil, field = nil; + + + line = $rb_plus(line, " "); + words = []; + field = $$('String').$new(); + $send(line, 'scan', [/\s*(?:([^\s\\\'\"]+)|'([^\']*)'|"((?:[^\"\\]|\\.)*)"|(\\.?)|(\S))(\r?\n?\Z|\s)?/m], function $$1($mlhs_tmp1){var $a, $b, self = $$1.$$s == null ? this : $$1.$$s, word = nil, sq = nil, dq = nil, esc = nil, garbage = nil, sep = nil, $ret_or_1 = nil, $ret_or_2 = nil, $ret_or_3 = nil; + + + + if ($mlhs_tmp1 == null) $mlhs_tmp1 = nil;; + $b = $mlhs_tmp1, $a = $to_ary($b), (word = ($a[0] == null ? nil : $a[0])), (sq = ($a[1] == null ? nil : $a[1])), (dq = ($a[2] == null ? nil : $a[2])), (esc = ($a[3] == null ? nil : $a[3])), (garbage = ($a[4] == null ? nil : $a[4])), (sep = ($a[5] == null ? nil : $a[5])), $b; + if ($truthy(garbage)) { + self.$raise($$('ArgumentError'), "Unmatched quote: " + (line.$inspect())) + }; + field = $rb_plus(field, ($truthy(($ret_or_1 = ($truthy(($ret_or_2 = ($truthy(($ret_or_3 = word)) ? ($ret_or_3) : (sq)))) ? ($ret_or_2) : (($truthy(($ret_or_3 = dq)) ? (dq.$gsub(/\\([$`"\\\n])/, "\\1")) : ($ret_or_3)))))) ? ($ret_or_1) : (esc.$gsub(/\\(.)/, "\\1")))); + if ($truthy(sep)) { + + words['$<<'](field); + return (field = $$('String').$new()); + } else { + return nil + };}, {$$arity: 1, $$s: self, $$has_top_level_mlhs_arg: true}); + return words; + }, 1); + $alias(self, "shellwords", "shellsplit"); + self.$module_function("shellsplit", "shellwords"); + (function(self, $parent_nesting) { + + return $alias(self, "split", "shellsplit") + })(Opal.get_singleton_class(self), $nesting); + + $def(self, '$shellescape', function $$shellescape(str) { + + + str = str.$to_s(); + if ($truthy(str['$empty?']())) { + return "''".$dup() + }; + str = str.$dup(); + str = str.$gsub(/[^A-Za-z0-9_\-.,:+\/@\n]/, "\\\\\\&"); + str = str.$gsub(/\n/, "'\n'"); + return str; + }, 1); + self.$module_function("shellescape"); + (function(self, $parent_nesting) { + + return $alias(self, "escape", "shellescape") + })(Opal.get_singleton_class(self), $nesting); + + $def(self, '$shelljoin', function $$shelljoin(array) { + var self = this; + + return $send(array, 'map', [], function $$2(arg){var self = $$2.$$s == null ? this : $$2.$$s; + + + + if (arg == null) arg = nil;; + return self.$shellescape(arg);}, {$$arity: 1, $$s: self}).$join(" ") + }, 1); + self.$module_function("shelljoin"); + return (function(self, $parent_nesting) { + + return $alias(self, "join", "shelljoin") + })(Opal.get_singleton_class(self), $nesting); + })($nesting[0], $nesting); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'String'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$shellsplit', function $$shellsplit() { + var self = this; + + return $$('Shellwords').$split(self) + }, 0); + return $def(self, '$shellescape', function $$shellescape() { + var self = this; + + return $$('Shellwords').$escape(self) + }, 0); + })($nesting[0], null, $nesting); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Array'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + return $def(self, '$shelljoin', function $$shelljoin() { + var self = this; + + return $$('Shellwords').$join(self) + }, 0) + })($nesting[0], null, $nesting); +}; diff --git a/opal/1.4.1/shellwords.min.js b/opal/1.4.1/shellwords.min.js new file mode 100644 index 00000000..35cc092b --- /dev/null +++ b/opal/1.4.1/shellwords.min.js @@ -0,0 +1 @@ +Opal.modules.shellwords=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$rb_plus=Opal.rb_plus,$send=Opal.send,$to_ary=Opal.to_ary,$truthy=Opal.truthy,$def=Opal.def,$alias=Opal.alias,$klass=Opal.klass;return Opal.add_stubs("+,new,scan,raise,inspect,gsub,<<,module_function,to_s,empty?,dup,join,map,shellescape,split,escape"),function($base,$parent_nesting){var self=$module($base,"Shellwords"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$shellsplit",(function(line){var words=nil,field=nil;return line=$rb_plus(line," "),words=[],field=$$("String").$new(),$send(line,"scan",[/\s*(?:([^\s\\\'\"]+)|'([^\']*)'|"((?:[^\"\\]|\\.)*)"|(\\.?)|(\S))(\r?\n?\Z|\s)?/m],(function $$1($mlhs_tmp1){var $a,word,sq,garbage,sep,$ret_or_1,$ret_or_2,self=null==$$1.$$s?this:$$1.$$s,dq=nil,esc=nil,$ret_or_3=nil;return null==$mlhs_tmp1&&($mlhs_tmp1=nil),word=null==($a=$to_ary($mlhs_tmp1))[0]?nil:$a[0],sq=null==$a[1]?nil:$a[1],dq=null==$a[2]?nil:$a[2],esc=null==$a[3]?nil:$a[3],garbage=null==$a[4]?nil:$a[4],sep=null==$a[5]?nil:$a[5],$truthy(garbage)&&self.$raise($$("ArgumentError"),"Unmatched quote: "+line.$inspect()),field=$rb_plus(field,$truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=word)?$ret_or_3:sq)?$ret_or_2:$truthy($ret_or_3=dq)?dq.$gsub(/\\([$`"\\\n])/,"\\1"):$ret_or_3)?$ret_or_1:esc.$gsub(/\\(.)/,"\\1")),$truthy(sep)?(words["$<<"](field),field=$$("String").$new()):nil}),{$$arity:1,$$s:this,$$has_top_level_mlhs_arg:!0}),words}),1),$alias(self,"shellwords","shellsplit"),self.$module_function("shellsplit","shellwords"),function(self,$parent_nesting){$alias(self,"split","shellsplit")}(Opal.get_singleton_class(self)),$def(self,"$shellescape",(function(str){return str=str.$to_s(),$truthy(str["$empty?"]())?"''".$dup():str=(str=(str=str.$dup()).$gsub(/[^A-Za-z0-9_\-.,:+\/@\n]/,"\\\\\\&")).$gsub(/\n/,"'\n'")}),1),self.$module_function("shellescape"),function(self,$parent_nesting){$alias(self,"escape","shellescape")}(Opal.get_singleton_class(self)),$def(self,"$shelljoin",(function(array){return $send(array,"map",[],(function $$2(arg){return null==arg&&(arg=nil),(null==$$2.$$s?this:$$2.$$s).$shellescape(arg)}),{$$arity:1,$$s:this}).$join(" ")}),1),self.$module_function("shelljoin"),function(self,$parent_nesting){$alias(self,"join","shelljoin")}(Opal.get_singleton_class(self))}($nesting[0],$nesting),function($base,$super,$parent_nesting){var self=$klass($base,null,"String"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$shellsplit",(function(){return $$("Shellwords").$split(this)}),0),$def(self,"$shellescape",(function(){return $$("Shellwords").$escape(this)}),0)}($nesting[0],0,$nesting),function($base,$super,$parent_nesting){var self=$klass($base,null,"Array"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$shelljoin",(function(){return $$("Shellwords").$join(this)}),0)}($nesting[0],0,$nesting)}; diff --git a/opal/1.4.1/shellwords.min.js.gz b/opal/1.4.1/shellwords.min.js.gz new file mode 100644 index 00000000..1d3c1c33 Binary files /dev/null and b/opal/1.4.1/shellwords.min.js.gz differ diff --git a/opal/1.4.1/singleton.js b/opal/1.4.1/singleton.js new file mode 100644 index 00000000..e8c8fb1e --- /dev/null +++ b/opal/1.4.1/singleton.js @@ -0,0 +1,80 @@ +Opal.modules["singleton"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super, $send = Opal.send, $truthy = Opal.truthy, $defs = Opal.defs; + + Opal.add_stubs('raise,class,__init__,instance_eval,new,extend'); + return (function($base, $parent_nesting) { + var self = $module($base, 'Singleton'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$clone', function $$clone() { + var self = this; + + return self.$raise($$('TypeError'), "can't clone instance of singleton " + (self.$class())) + }, 0); + + $def(self, '$dup', function $$dup() { + var self = this; + + return self.$raise($$('TypeError'), "can't dup instance of singleton " + (self.$class())) + }, 0); + (function($base, $parent_nesting) { + var self = $module($base, 'SingletonClassMethods'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$clone', function $$clone() { + var $yield = $$clone.$$p || nil, self = this; + + delete $$clone.$$p; + return $$('Singleton').$__init__($send2(self, $find_super(self, 'clone', $$clone, false, true), 'clone', [], $yield)) + }, 0); + return $def(self, '$inherited', function $$inherited(sub_klass) { + var $yield = $$inherited.$$p || nil, self = this; + + delete $$inherited.$$p; + + $send2(self, $find_super(self, 'inherited', $$inherited, false, true), 'inherited', [sub_klass], $yield); + return $$('Singleton').$__init__(sub_klass); + }, 1); + })($nesting[0], $nesting); + return (function(self, $parent_nesting) { + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); + + + + $def(self, '$__init__', function $$__init__(klass) { + var self = this; + + + $send(klass, 'instance_eval', [], function $$1(){var self = $$1.$$s == null ? this : $$1.$$s; + + return (self.singleton__instance__ = nil)}, {$$arity: 0, $$s: self}); + $defs(klass, '$instance', function $$instance() { + var self = this; + if (self.singleton__instance__ == null) self.singleton__instance__ = nil; + + + if ($truthy(self.singleton__instance__)) { + return self.singleton__instance__ + }; + return (self.singleton__instance__ = self.$new()); + }, 0); + return klass; + }, 1); + return $def(self, '$included', function $$included(klass) { + var $yield = $$included.$$p || nil, self = this; + + delete $$included.$$p; + + $send2(self, $find_super(self, 'included', $$included, false, true), 'included', [klass], $yield); + klass.$extend($$('SingletonClassMethods')); + return $$('Singleton').$__init__(klass); + }, 1); + })(Opal.get_singleton_class($$('Singleton')), $nesting); + })($nesting[0], $nesting) +}; diff --git a/opal/1.4.1/singleton.min.js b/opal/1.4.1/singleton.min.js new file mode 100644 index 00000000..41309da9 --- /dev/null +++ b/opal/1.4.1/singleton.min.js @@ -0,0 +1 @@ +Opal.modules.singleton=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super,$send=Opal.send,$truthy=Opal.truthy,$defs=Opal.defs;return Opal.add_stubs("raise,class,__init__,instance_eval,new,extend"),function($base,$parent_nesting){var self=$module($base,"Singleton"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$clone",(function(){return this.$raise($$("TypeError"),"can't clone instance of singleton "+this.$class())}),0),$def(self,"$dup",(function(){return this.$raise($$("TypeError"),"can't dup instance of singleton "+this.$class())}),0),function($base,$parent_nesting){var self=$module($base,"SingletonClassMethods"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$clone",(function $$clone(){var $yield=$$clone.$$p||nil;return delete $$clone.$$p,$$("Singleton").$__init__($send2(this,$find_super(this,"clone",$$clone,!1,!0),"clone",[],$yield))}),0),$def(self,"$inherited",(function $$inherited(sub_klass){var $yield=$$inherited.$$p||nil;return delete $$inherited.$$p,$send2(this,$find_super(this,"inherited",$$inherited,!1,!0),"inherited",[sub_klass],$yield),$$("Singleton").$__init__(sub_klass)}),1)}($nesting[0],$nesting),function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$__init__",(function(klass){return $send(klass,"instance_eval",[],(function $$1(){return(null==$$1.$$s?this:$$1.$$s).singleton__instance__=nil}),{$$arity:0,$$s:this}),$defs(klass,"$instance",(function(){return null==this.singleton__instance__&&(this.singleton__instance__=nil),$truthy(this.singleton__instance__)?this.singleton__instance__:this.singleton__instance__=this.$new()}),0),klass}),1),$def(self,"$included",(function $$included(klass){var $yield=$$included.$$p||nil;return delete $$included.$$p,$send2(this,$find_super(this,"included",$$included,!1,!0),"included",[klass],$yield),klass.$extend($$("SingletonClassMethods")),$$("Singleton").$__init__(klass)}),1)}(Opal.get_singleton_class($$("Singleton")),$nesting)}($nesting[0],$nesting)}; diff --git a/opal/1.4.1/singleton.min.js.gz b/opal/1.4.1/singleton.min.js.gz new file mode 100644 index 00000000..122b7c4f Binary files /dev/null and b/opal/1.4.1/singleton.min.js.gz differ diff --git a/opal/1.4.1/stringio.js b/opal/1.4.1/stringio.js new file mode 100644 index 00000000..c08f7a5e --- /dev/null +++ b/opal/1.4.1/stringio.js @@ -0,0 +1,146 @@ +Opal.modules["stringio"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $defs = Opal.defs, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $rb_ge = Opal.rb_ge, $rb_gt = Opal.rb_gt, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq, $alias = Opal.alias; + + Opal.add_stubs('new,call,close,attr_accessor,check_readable,==,length,===,>=,raise,>,+,-,seek,check_writable,String,[],eof?,write,read'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'StringIO'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.position = $proto.string = nil; + + $defs(self, '$open', function $$open(string, mode) { + var block = $$open.$$p || nil, self = this, io = nil, res = nil; + + delete $$open.$$p; + + ; + + if (string == null) string = "";; + + if (mode == null) mode = nil;; + io = self.$new(string, mode); + res = block.$call(io); + io.$close(); + return res; + }, -1); + self.$attr_accessor("string"); + + $def(self, '$initialize', function $$initialize(string, mode) { + var $yield = $$initialize.$$p || nil, self = this; + + delete $$initialize.$$p; + + + if (string == null) string = "";; + + if (mode == null) mode = "rw";; + self.string = string; + self.position = 0; + return $send2(self, $find_super(self, 'initialize', $$initialize, false, true), 'initialize', [nil, mode], null); + }, -1); + + $def(self, '$eof?', function $StringIO_eof$ques$1() { + var self = this; + + + self.$check_readable(); + return self.position['$=='](self.string.$length()); + }, 0); + + $def(self, '$seek', function $$seek(pos, whence) { + var self = this, $ret_or_1 = nil; + + + + if (whence == null) whence = $$$($$('IO'), 'SEEK_SET');; + self.read_buffer = ""; + if ($eqeqeq($$$($$('IO'), 'SEEK_SET'), ($ret_or_1 = whence))) { + + if (!$truthy($rb_ge(pos, 0))) { + self.$raise($$$($$('Errno'), 'EINVAL')) + }; + self.position = pos; + } else if ($eqeqeq($$$($$('IO'), 'SEEK_CUR'), $ret_or_1)) { + if ($truthy($rb_gt($rb_plus(self.position, pos), self.string.$length()))) { + self.position = self.string.$length() + } else { + self.position = $rb_plus(self.position, pos) + } + } else if ($eqeqeq($$$($$('IO'), 'SEEK_END'), $ret_or_1)) { + if ($truthy($rb_gt(pos, self.string.$length()))) { + self.position = 0 + } else { + self.position = $rb_minus(self.position, pos) + } + } else { + nil + }; + return 0; + }, -2); + + $def(self, '$tell', function $$tell() { + var self = this; + + return self.position + }, 0); + + $def(self, '$rewind', function $$rewind() { + var self = this; + + return self.$seek(0) + }, 0); + + $def(self, '$write', function $$write(string) { + var self = this, before = nil, after = nil; + + + self.$check_writable(); + self.read_buffer = ""; + string = self.$String(string); + if ($eqeq(self.string.$length(), self.position)) { + + self.string = $rb_plus(self.string, string); + return (self.position = $rb_plus(self.position, string.$length())); + } else { + + before = self.string['$[]'](Opal.Range.$new(0, $rb_minus(self.position, 1), false)); + after = self.string['$[]'](Opal.Range.$new($rb_plus(self.position, string.$length()), -1, false)); + self.string = $rb_plus($rb_plus(before, string), after); + return (self.position = $rb_plus(self.position, string.$length())); + }; + }, 1); + + $def(self, '$read', function $$read(length, outbuf) { + var self = this, string = nil, str = nil; + + + + if (length == null) length = nil;; + + if (outbuf == null) outbuf = nil;; + self.$check_readable(); + if ($truthy(self['$eof?']())) { + return nil + }; + string = ($truthy(length) ? (((str = self.string['$[]'](self.position, length)), (self.position = $rb_plus(self.position, length)), ($truthy($rb_gt(self.position, self.string.$length())) ? ((self.position = self.string.$length())) : nil), str)) : (((str = self.string['$[]'](Opal.Range.$new(self.position, -1, false))), (self.position = self.string.$length()), str))); + if ($truthy(outbuf)) { + return outbuf.$write(string) + } else { + return string + }; + }, -1); + + $def(self, '$sysread', function $$sysread(length) { + var self = this; + + + self.$check_readable(); + return self.$read(length); + }, 1); + $alias(self, "eof", "eof?"); + $alias(self, "pos", "tell"); + $alias(self, "pos=", "seek"); + return $alias(self, "readpartial", "read"); + })($nesting[0], $$('IO'), $nesting) +}; diff --git a/opal/1.4.1/stringio.min.js b/opal/1.4.1/stringio.min.js new file mode 100644 index 00000000..72feceaf --- /dev/null +++ b/opal/1.4.1/stringio.min.js @@ -0,0 +1 @@ +Opal.modules.stringio=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$defs=Opal.defs,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$rb_ge=Opal.rb_ge,$rb_gt=Opal.rb_gt,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$alias=Opal.alias;return Opal.add_stubs("new,call,close,attr_accessor,check_readable,==,length,===,>=,raise,>,+,-,seek,check_writable,String,[],eof?,write,read"),function($base,$super,$parent_nesting){var self=$klass($base,$super,"StringIO"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.position=$proto.string=nil,$defs(self,"$open",(function $$open(string,mode){var res,block=$$open.$$p||nil,io=nil;return delete $$open.$$p,null==string&&(string=""),null==mode&&(mode=nil),io=this.$new(string,mode),res=block.$call(io),io.$close(),res}),-1),self.$attr_accessor("string"),$def(self,"$initialize",(function $$initialize(string,mode){return delete $$initialize.$$p,null==string&&(string=""),null==mode&&(mode="rw"),this.string=string,this.position=0,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[nil,mode],null)}),-1),$def(self,"$eof?",(function(){return this.$check_readable(),this.position["$=="](this.string.$length())}),0),$def(self,"$seek",(function(pos,whence){var $ret_or_1;return null==whence&&(whence=$$$($$("IO"),"SEEK_SET")),this.read_buffer="",$eqeqeq($$$($$("IO"),"SEEK_SET"),$ret_or_1=whence)?($truthy($rb_ge(pos,0))||this.$raise($$$($$("Errno"),"EINVAL")),this.position=pos):$eqeqeq($$$($$("IO"),"SEEK_CUR"),$ret_or_1)?$truthy($rb_gt($rb_plus(this.position,pos),this.string.$length()))?this.position=this.string.$length():this.position=$rb_plus(this.position,pos):$eqeqeq($$$($$("IO"),"SEEK_END"),$ret_or_1)&&($truthy($rb_gt(pos,this.string.$length()))?this.position=0:this.position=$rb_minus(this.position,pos)),0}),-2),$def(self,"$tell",(function(){return this.position}),0),$def(self,"$rewind",(function(){return this.$seek(0)}),0),$def(self,"$write",(function(string){var before=nil,after=nil;return this.$check_writable(),this.read_buffer="",string=this.$String(string),$eqeq(this.string.$length(),this.position)?(this.string=$rb_plus(this.string,string),this.position=$rb_plus(this.position,string.$length())):(before=this.string["$[]"](Opal.Range.$new(0,$rb_minus(this.position,1),!1)),after=this.string["$[]"](Opal.Range.$new($rb_plus(this.position,string.$length()),-1,!1)),this.string=$rb_plus($rb_plus(before,string),after),this.position=$rb_plus(this.position,string.$length()))}),1),$def(self,"$read",(function(length,outbuf){var string,str=nil;return null==length&&(length=nil),null==outbuf&&(outbuf=nil),this.$check_readable(),$truthy(this["$eof?"]())?nil:(string=$truthy(length)?(str=this.string["$[]"](this.position,length),this.position=$rb_plus(this.position,length),$truthy($rb_gt(this.position,this.string.$length()))&&(this.position=this.string.$length()),str):(str=this.string["$[]"](Opal.Range.$new(this.position,-1,!1)),this.position=this.string.$length(),str),$truthy(outbuf)?outbuf.$write(string):string)}),-1),$def(self,"$sysread",(function(length){return this.$check_readable(),this.$read(length)}),1),$alias(self,"eof","eof?"),$alias(self,"pos","tell"),$alias(self,"pos=","seek"),$alias(self,"readpartial","read")}($nesting[0],$$("IO"),$nesting)}; diff --git a/opal/1.4.1/stringio.min.js.gz b/opal/1.4.1/stringio.min.js.gz new file mode 100644 index 00000000..9d8ffb76 Binary files /dev/null and b/opal/1.4.1/stringio.min.js.gz differ diff --git a/opal/1.4.1/strscan.js b/opal/1.4.1/strscan.js new file mode 100644 index 00000000..726a1599 --- /dev/null +++ b/opal/1.4.1/strscan.js @@ -0,0 +1,388 @@ +Opal.modules["strscan"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $Opal = Opal.Opal, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $alias = Opal.alias; + + Opal.add_stubs('attr_reader,anchor,empty?,===,to_s,coerce_to!,scan_until,length,size,rest,pos=,-,private'); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'StringScanner'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.pos = $proto.string = $proto.working = $proto.matched = $proto.prev_pos = $proto.match = nil; + + self.$attr_reader("pos", "matched"); + + $def(self, '$initialize', function $$initialize(string) { + var self = this; + + + self.string = string; + self.pos = 0; + self.matched = nil; + self.working = string; + return (self.match = []); + }, 1); + self.$attr_reader("string"); + + $def(self, '$beginning_of_line?', function $StringScanner_beginning_of_line$ques$1() { + var self = this; + + return self.pos === 0 || self.string.charAt(self.pos - 1) === "\n" + }, 0); + + $def(self, '$scan', function $$scan(pattern) { + var self = this; + + + pattern = self.$anchor(pattern); + + var result = pattern.exec(self.working); + + if (result == null) { + return self.matched = nil; + } + else if (typeof(result) === 'object') { + self.prev_pos = self.pos; + self.pos += result[0].length; + self.working = self.working.substring(result[0].length); + self.matched = result[0]; + self.match = result; + + return result[0]; + } + else if (typeof(result) === 'string') { + self.pos += result.length; + self.working = self.working.substring(result.length); + + return result; + } + else { + return nil; + } + ; + }, 1); + + $def(self, '$scan_until', function $$scan_until(pattern) { + var self = this; + + + pattern = self.$anchor(pattern); + + var pos = self.pos, + working = self.working, + result; + + while (true) { + result = pattern.exec(working); + pos += 1; + working = working.substr(1); + + if (result == null) { + if (working.length === 0) { + self.match = []; + return self.matched = nil; + } + + continue; + } + + self.matched = self.string.substr(self.pos, pos - self.pos - 1 + result[0].length); + self.match = result; + self.prev_pos = pos - 1; + self.pos = pos; + self.working = working.substr(result[0].length); + + return self.matched; + } + ; + }, 1); + + $def(self, '$[]', function $StringScanner_$$$2(idx) { + var self = this, $ret_or_1 = nil; + + + if ($truthy(self.match['$empty?']())) { + return nil + }; + if ($eqeqeq($$('Symbol'), ($ret_or_1 = idx))) { + idx = idx.$to_s() + } else if (!$eqeqeq($$('String'), $ret_or_1)) { + idx = $Opal['$coerce_to!'](idx, $$('Integer'), "to_int") + }; + + var match = self.match; + + if (idx < 0) { + idx += match.length; + } + + if (idx < 0 || idx >= match.length) { + return nil; + } + + if (match[idx] == null) { + return nil; + } + + return match[idx]; + ; + }, 1); + + $def(self, '$check', function $$check(pattern) { + var self = this; + + + pattern = self.$anchor(pattern); + + var result = pattern.exec(self.working); + + if (result == null) { + return self.matched = nil; + } + + return self.matched = result[0]; + ; + }, 1); + + $def(self, '$check_until', function $$check_until(pattern) { + var self = this; + + + var prev_pos = self.prev_pos, + pos = self.pos; + + var result = self.$scan_until(pattern); + + if (result !== nil) { + self.matched = result.substr(-1); + self.working = self.string.substr(pos); + } + + self.prev_pos = prev_pos; + self.pos = pos; + + return result; + + }, 1); + + $def(self, '$peek', function $$peek(length) { + var self = this; + + return self.working.substring(0, length) + }, 1); + + $def(self, '$eos?', function $StringScanner_eos$ques$3() { + var self = this; + + return self.working.length === 0 + }, 0); + + $def(self, '$exist?', function $StringScanner_exist$ques$4(pattern) { + var self = this; + + + var result = pattern.exec(self.working); + + if (result == null) { + return nil; + } + else if (result.index == 0) { + return 0; + } + else { + return result.index + 1; + } + + }, 1); + + $def(self, '$skip', function $$skip(pattern) { + var self = this; + + + pattern = self.$anchor(pattern); + + var result = pattern.exec(self.working); + + if (result == null) { + self.match = []; + return self.matched = nil; + } + else { + var match_str = result[0]; + var match_len = match_str.length; + + self.matched = match_str; + self.match = result; + self.prev_pos = self.pos; + self.pos += match_len; + self.working = self.working.substring(match_len); + + return match_len; + } + ; + }, 1); + + $def(self, '$skip_until', function $$skip_until(pattern) { + var self = this; + + + var result = self.$scan_until(pattern); + + if (result === nil) { + return nil; + } + else { + self.matched = result.substr(-1); + + return result.length; + } + + }, 1); + + $def(self, '$get_byte', function $$get_byte() { + var self = this; + + + var result = nil; + + if (self.pos < self.string.length) { + self.prev_pos = self.pos; + self.pos += 1; + result = self.matched = self.working.substring(0, 1); + self.working = self.working.substring(1); + } + else { + self.matched = nil; + } + + return result; + + }, 0); + + $def(self, '$match?', function $StringScanner_match$ques$5(pattern) { + var self = this; + + + pattern = self.$anchor(pattern); + + var result = pattern.exec(self.working); + + if (result == null) { + return nil; + } + else { + self.prev_pos = self.pos; + + return result[0].length; + } + ; + }, 1); + + $def(self, '$pos=', function $StringScanner_pos$eq$6(pos) { + var self = this; + + + + if (pos < 0) { + pos += self.string.$length(); + } + ; + self.pos = pos; + return (self.working = self.string.slice(pos)); + }, 1); + + $def(self, '$matched_size', function $$matched_size() { + var self = this; + + + if (self.matched === nil) { + return nil; + } + + return self.matched.length + + }, 0); + + $def(self, '$post_match', function $$post_match() { + var self = this; + + + if (self.matched === nil) { + return nil; + } + + return self.string.substr(self.pos); + + }, 0); + + $def(self, '$pre_match', function $$pre_match() { + var self = this; + + + if (self.matched === nil) { + return nil; + } + + return self.string.substr(0, self.prev_pos); + + }, 0); + + $def(self, '$reset', function $$reset() { + var self = this; + + + self.working = self.string; + self.matched = nil; + return (self.pos = 0); + }, 0); + + $def(self, '$rest', function $$rest() { + var self = this; + + return self.working + }, 0); + + $def(self, '$rest?', function $StringScanner_rest$ques$7() { + var self = this; + + return self.working.length !== 0 + }, 0); + + $def(self, '$rest_size', function $$rest_size() { + var self = this; + + return self.$rest().$size() + }, 0); + + $def(self, '$terminate', function $$terminate() { + var self = this, $writer = nil; + + + self.match = nil; + + $writer = [self.string.$length()]; + $send(self, 'pos=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)];; + }, 0); + + $def(self, '$unscan', function $$unscan() { + var self = this; + + + self.pos = self.prev_pos; + self.prev_pos = nil; + self.match = nil; + return self; + }, 0); + $alias(self, "bol?", "beginning_of_line?"); + $alias(self, "getch", "get_byte"); + self.$private(); + return $def(self, '$anchor', function $$anchor(pattern) { + + + var flags = pattern.toString().match(/\/([^\/]+)$/); + flags = flags ? flags[1] : undefined; + return new RegExp('^(?:' + pattern.source + ')', flags); + + }, 1); + })($nesting[0], null, $nesting) +}; diff --git a/opal/1.4.1/strscan.min.js b/opal/1.4.1/strscan.min.js new file mode 100644 index 00000000..9693eaab --- /dev/null +++ b/opal/1.4.1/strscan.min.js @@ -0,0 +1 @@ +Opal.modules.strscan=function(Opal){var $nesting=[],nil=Opal.nil,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$eqeqeq=Opal.eqeqeq,$Opal=Opal.Opal,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$alias=Opal.alias;return Opal.add_stubs("attr_reader,anchor,empty?,===,to_s,coerce_to!,scan_until,length,size,rest,pos=,-,private"),function($base,$super,$parent_nesting){var self=$klass($base,null,"StringScanner"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.pos=$proto.string=$proto.working=$proto.matched=$proto.prev_pos=$proto.match=nil,self.$attr_reader("pos","matched"),$def(self,"$initialize",(function(string){return this.string=string,this.pos=0,this.matched=nil,this.working=string,this.match=[]}),1),self.$attr_reader("string"),$def(self,"$beginning_of_line?",(function(){return 0===this.pos||"\n"===this.string.charAt(this.pos-1)}),0),$def(self,"$scan",(function(pattern){var result=(pattern=this.$anchor(pattern)).exec(this.working);return null==result?this.matched=nil:"object"==typeof result?(this.prev_pos=this.pos,this.pos+=result[0].length,this.working=this.working.substring(result[0].length),this.matched=result[0],this.match=result,result[0]):"string"==typeof result?(this.pos+=result.length,this.working=this.working.substring(result.length),result):nil}),1),$def(self,"$scan_until",(function(pattern){pattern=this.$anchor(pattern);for(var result,pos=this.pos,working=this.working;;){if(result=pattern.exec(working),pos+=1,working=working.substr(1),null!=result)return this.matched=this.string.substr(this.pos,pos-this.pos-1+result[0].length),this.match=result,this.prev_pos=pos-1,this.pos=pos,this.working=working.substr(result[0].length),this.matched;if(0===working.length)return this.match=[],this.matched=nil}}),1),$def(self,"$[]",(function(idx){var $ret_or_1;if($truthy(this.match["$empty?"]()))return nil;$eqeqeq($$("Symbol"),$ret_or_1=idx)?idx=idx.$to_s():$eqeqeq($$("String"),$ret_or_1)||(idx=$Opal["$coerce_to!"](idx,$$("Integer"),"to_int"));var match=this.match;return idx<0&&(idx+=match.length),idx<0||idx>=match.length||null==match[idx]?nil:match[idx]}),1),$def(self,"$check",(function(pattern){var result=(pattern=this.$anchor(pattern)).exec(this.working);return this.matched=null==result?nil:result[0]}),1),$def(self,"$check_until",(function(pattern){var prev_pos=this.prev_pos,pos=this.pos,result=this.$scan_until(pattern);return result!==nil&&(this.matched=result.substr(-1),this.working=this.string.substr(pos)),this.prev_pos=prev_pos,this.pos=pos,result}),1),$def(self,"$peek",(function(length){return this.working.substring(0,length)}),1),$def(self,"$eos?",(function(){return 0===this.working.length}),0),$def(self,"$exist?",(function(pattern){var result=pattern.exec(this.working);return null==result?nil:0==result.index?0:result.index+1}),1),$def(self,"$skip",(function(pattern){var result=(pattern=this.$anchor(pattern)).exec(this.working);if(null==result)return this.match=[],this.matched=nil;var match_str=result[0],match_len=match_str.length;return this.matched=match_str,this.match=result,this.prev_pos=this.pos,this.pos+=match_len,this.working=this.working.substring(match_len),match_len}),1),$def(self,"$skip_until",(function(pattern){var result=this.$scan_until(pattern);return result===nil?nil:(this.matched=result.substr(-1),result.length)}),1),$def(self,"$get_byte",(function(){var result=nil;return this.pos" + }, 0); + + $def(self, '$render', function $$render(ctx) { + var self = this; + + + + if (ctx == null) ctx = self;; + return $send(ctx, 'instance_exec', [$$('OutputBuffer').$new()], self.body.$to_proc()); + }, -1); + return (function($base, $super) { + var self = $klass($base, $super, 'OutputBuffer'); + + var $proto = self.$$prototype; + + $proto.buffer = nil; + + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return (self.buffer = []) + }, 0); + + $def(self, '$append', function $$append(str) { + var self = this; + + return self.buffer['$<<'](str) + }, 1); + + $def(self, '$join', function $$join() { + var self = this; + + return self.buffer.$join() + }, 0); + return $alias(self, "append=", "append"); + })($nesting[0], null); + })($nesting[0], null, $nesting) +}; diff --git a/opal/1.4.1/template.min.js b/opal/1.4.1/template.min.js new file mode 100644 index 00000000..3cba1cc5 --- /dev/null +++ b/opal/1.4.1/template.min.js @@ -0,0 +1 @@ +Opal.modules.template=function(Opal){var $nesting=[],nil=Opal.nil,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy,$defs=Opal.defs,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$alias=Opal.alias;return Opal.add_stubs("[],[]=,-,keys,attr_reader,instance_exec,new,to_proc,<<,join"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Template"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.name=$proto.body=nil,self._cache=$hash2([],{}),$defs(self,"$[]",(function(name){var $ret_or_1;return null==this._cache&&(this._cache=nil),$truthy($ret_or_1=this._cache["$[]"](name))?$ret_or_1:this._cache["$[]"]("templates/"+name)}),1),$defs(self,"$[]=",(function(name,instance){var $writer;return null==this._cache&&(this._cache=nil),$writer=[name,instance],$send(this._cache,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),2),$defs(self,"$paths",(function(){return null==this._cache&&(this._cache=nil),this._cache.$keys()}),0),self.$attr_reader("body"),$def(self,"$initialize",(function $$initialize(name){var $a,$writer,body=$$initialize.$$p||nil;return delete $$initialize.$$p,$a=[name,body],this.name=$a[0],this.body=$a[1],$writer=[name,this],$send($$("Template"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$inspect",(function(){return"#"}),0),$def(self,"$render",(function(ctx){return null==ctx&&(ctx=this),$send(ctx,"instance_exec",[$$("OutputBuffer").$new()],this.body.$to_proc())}),-1),function($base,$super){var self=$klass($base,null,"OutputBuffer");return self.$$prototype.buffer=nil,$def(self,"$initialize",(function(){return this.buffer=[]}),0),$def(self,"$append",(function(str){return this.buffer["$<<"](str)}),1),$def(self,"$join",(function(){return this.buffer.$join()}),0),$alias(self,"append=","append")}($nesting[0])}($nesting[0],0,$nesting)}; diff --git a/opal/1.4.1/template.min.js.gz b/opal/1.4.1/template.min.js.gz new file mode 100644 index 00000000..083d5b80 Binary files /dev/null and b/opal/1.4.1/template.min.js.gz differ diff --git a/opal/1.4.1/thread.js b/opal/1.4.1/thread.js new file mode 100644 index 00000000..9dee1285 --- /dev/null +++ b/opal/1.4.1/thread.js @@ -0,0 +1,294 @@ +Opal.modules["thread"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $truthy = Opal.truthy, $defs = Opal.defs, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $hash2 = Opal.hash2, $Opal = Opal.Opal, $alias = Opal.alias, $const_set = Opal.const_set; + + Opal.add_stubs('allocate,core_initialize!,current,raise,[],coerce_key_name,[]=,-,key?,keys,private,coerce_to!,clear,empty?,size,shift,push,each,to_proc,=~,last_match,to_i,inspect,attr_reader,locked?,lock,unlock'); + + $klass($nesting[0], $$('StandardError'), 'ThreadError'); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Thread'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.fiber_locals = $proto.thread_locals = nil; + + $defs(self, '$current', function $$current() { + var self = this; + if (self.current == null) self.current = nil; + + + if (!$truthy(self.current)) { + + self.current = self.$allocate(); + self.current['$core_initialize!'](); + }; + return self.current; + }, 0); + $defs(self, '$list', function $$list() { + var self = this; + + return [self.$current()] + }, 0); + + $def(self, '$initialize', function $$initialize($a) { + var $post_args, args, self = this; + + + + $post_args = Opal.slice.call(arguments); + + args = $post_args;; + return self.$raise($$('NotImplementedError'), "Thread creation not available"); + }, -1); + + $def(self, '$[]', function $Thread_$$$1(key) { + var self = this; + + return self.fiber_locals['$[]'](self.$coerce_key_name(key)) + }, 1); + + $def(self, '$[]=', function $Thread_$$$eq$2(key, value) { + var self = this, $writer = nil; + + + $writer = [self.$coerce_key_name(key), value]; + $send(self.fiber_locals, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }, 2); + + $def(self, '$key?', function $Thread_key$ques$3(key) { + var self = this; + + return self.fiber_locals['$key?'](self.$coerce_key_name(key)) + }, 1); + + $def(self, '$keys', function $$keys() { + var self = this; + + return self.fiber_locals.$keys() + }, 0); + + $def(self, '$thread_variable_get', function $$thread_variable_get(key) { + var self = this; + + return self.thread_locals['$[]'](self.$coerce_key_name(key)) + }, 1); + + $def(self, '$thread_variable_set', function $$thread_variable_set(key, value) { + var self = this, $writer = nil; + + + $writer = [self.$coerce_key_name(key), value]; + $send(self.thread_locals, '[]=', $to_a($writer)); + return $writer[$rb_minus($writer["length"], 1)]; + }, 2); + + $def(self, '$thread_variable?', function $Thread_thread_variable$ques$4(key) { + var self = this; + + return self.thread_locals['$key?'](self.$coerce_key_name(key)) + }, 1); + + $def(self, '$thread_variables', function $$thread_variables() { + var self = this; + + return self.thread_locals.$keys() + }, 0); + self.$private(); + + $def(self, '$core_initialize!', function $Thread_core_initialize$excl$5() { + var self = this; + + + self.thread_locals = $hash2([], {}); + return (self.fiber_locals = $hash2([], {})); + }, 0); + + $def(self, '$coerce_key_name', function $$coerce_key_name(key) { + + return $Opal['$coerce_to!'](key, $$('String'), "to_s") + }, 1); + (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Queue'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.storage = nil; + + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return self.$clear() + }, 0); + + $def(self, '$clear', function $$clear() { + var self = this; + + return (self.storage = []) + }, 0); + + $def(self, '$empty?', function $Queue_empty$ques$6() { + var self = this; + + return self.storage['$empty?']() + }, 0); + + $def(self, '$size', function $$size() { + var self = this; + + return self.storage.$size() + }, 0); + + $def(self, '$pop', function $$pop(non_block) { + var self = this; + + + + if (non_block == null) non_block = false;; + if ($truthy(self['$empty?']())) { + + if ($truthy(non_block)) { + self.$raise($$('ThreadError'), "Queue empty") + }; + self.$raise($$('ThreadError'), "Deadlock"); + }; + return self.storage.$shift(); + }, -1); + + $def(self, '$push', function $$push(value) { + var self = this; + + return self.storage.$push(value) + }, 1); + + $def(self, '$each', function $$each() { + var block = $$each.$$p || nil, self = this; + + delete $$each.$$p; + + ; + return $send(self.storage, 'each', [], block.$to_proc()); + }, 0); + $alias(self, "<<", "push"); + $alias(self, "deq", "pop"); + $alias(self, "enq", "push"); + $alias(self, "length", "size"); + return $alias(self, "shift", "pop"); + })($nesting[0], null, $nesting); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Backtrace'); + + var $nesting = [self].concat($parent_nesting); + + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Location'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.label = $proto.str = nil; + + + $def(self, '$initialize', function $$initialize(str) { + var self = this, $ret_or_1 = nil; + + + self.str = str; + str['$=~'](/^(.*?):(\d+):(\d+):in `(.*?)'$/); + self.path = $$('Regexp').$last_match(1); + self.label = $$('Regexp').$last_match(4); + self.lineno = $$('Regexp').$last_match(2).$to_i(); + self.label['$=~'](/(\w+)$/); + return (self.base_label = ($truthy(($ret_or_1 = $$('Regexp').$last_match(1))) ? ($ret_or_1) : (self.label))); + }, 1); + + $def(self, '$to_s', function $$to_s() { + var self = this; + + return self.str + }, 0); + + $def(self, '$inspect', function $$inspect() { + var self = this; + + return self.str.$inspect() + }, 0); + self.$attr_reader("base_label", "label", "lineno", "path"); + return $alias(self, "absolute_path", "path"); + })($nesting[0], null, $nesting) + })($nesting[0], null, $nesting); + })($nesting[0], null, $nesting); + $const_set($nesting[0], 'Queue', $$$($$('Thread'), 'Queue')); + return (function($base, $super, $parent_nesting) { + var self = $klass($base, $super, 'Mutex'); + + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $proto = self.$$prototype; + + $proto.locked = nil; + + + $def(self, '$initialize', function $$initialize() { + var self = this; + + return (self.locked = false) + }, 0); + + $def(self, '$lock', function $$lock() { + var self = this; + + + if ($truthy(self.locked)) { + self.$raise($$('ThreadError'), "Deadlock") + }; + self.locked = true; + return self; + }, 0); + + $def(self, '$locked?', function $Mutex_locked$ques$7() { + var self = this; + + return self.locked + }, 0); + + $def(self, '$owned?', function $Mutex_owned$ques$8() { + var self = this; + + return self.locked + }, 0); + + $def(self, '$try_lock', function $$try_lock() { + var self = this; + + if ($truthy(self['$locked?']())) { + return false + } else { + + self.$lock(); + return true; + } + }, 0); + + $def(self, '$unlock', function $$unlock() { + var self = this; + + + if (!$truthy(self.locked)) { + self.$raise($$('ThreadError'), "Mutex not locked") + }; + self.locked = false; + return self; + }, 0); + return $def(self, '$synchronize', function $$synchronize() { + var $yield = $$synchronize.$$p || nil, self = this; + + delete $$synchronize.$$p; + + self.$lock(); + + return (function() { try { + return Opal.yieldX($yield, []); + } finally { + self.$unlock() + }; })();; + }, 0); + })($nesting[0], null, $nesting); +}; diff --git a/opal/1.4.1/thread.min.js b/opal/1.4.1/thread.min.js new file mode 100644 index 00000000..d3086b0e --- /dev/null +++ b/opal/1.4.1/thread.min.js @@ -0,0 +1 @@ +Opal.modules.thread=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$truthy=Opal.truthy,$defs=Opal.defs,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$hash2=Opal.hash2,$Opal=Opal.Opal,$alias=Opal.alias,$const_set=Opal.const_set;return Opal.add_stubs("allocate,core_initialize!,current,raise,[],coerce_key_name,[]=,-,key?,keys,private,coerce_to!,clear,empty?,size,shift,push,each,to_proc,=~,last_match,to_i,inspect,attr_reader,locked?,lock,unlock"),$klass($nesting[0],$$("StandardError"),"ThreadError"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Thread"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.fiber_locals=$proto.thread_locals=nil,$defs(self,"$current",(function(){return null==this.current&&(this.current=nil),$truthy(this.current)||(this.current=this.$allocate(),this.current["$core_initialize!"]()),this.current}),0),$defs(self,"$list",(function(){return[this.$current()]}),0),$def(self,"$initialize",(function($a){var self=this;return Opal.slice.call(arguments),self.$raise($$("NotImplementedError"),"Thread creation not available")}),-1),$def(self,"$[]",(function(key){return this.fiber_locals["$[]"](this.$coerce_key_name(key))}),1),$def(self,"$[]=",(function(key,value){var $writer;return $writer=[this.$coerce_key_name(key),value],$send(this.fiber_locals,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),2),$def(self,"$key?",(function(key){return this.fiber_locals["$key?"](this.$coerce_key_name(key))}),1),$def(self,"$keys",(function(){return this.fiber_locals.$keys()}),0),$def(self,"$thread_variable_get",(function(key){return this.thread_locals["$[]"](this.$coerce_key_name(key))}),1),$def(self,"$thread_variable_set",(function(key,value){var $writer;return $writer=[this.$coerce_key_name(key),value],$send(this.thread_locals,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),2),$def(self,"$thread_variable?",(function(key){return this.thread_locals["$key?"](this.$coerce_key_name(key))}),1),$def(self,"$thread_variables",(function(){return this.thread_locals.$keys()}),0),self.$private(),$def(self,"$core_initialize!",(function(){return this.thread_locals=$hash2([],{}),this.fiber_locals=$hash2([],{})}),0),$def(self,"$coerce_key_name",(function(key){return $Opal["$coerce_to!"](key,$$("String"),"to_s")}),1),function($base,$super,$parent_nesting){var self=$klass($base,null,"Queue"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.storage=nil,$def(self,"$initialize",(function(){return this.$clear()}),0),$def(self,"$clear",(function(){return this.storage=[]}),0),$def(self,"$empty?",(function(){return this.storage["$empty?"]()}),0),$def(self,"$size",(function(){return this.storage.$size()}),0),$def(self,"$pop",(function(non_block){return null==non_block&&(non_block=!1),$truthy(this["$empty?"]())&&($truthy(non_block)&&this.$raise($$("ThreadError"),"Queue empty"),this.$raise($$("ThreadError"),"Deadlock")),this.storage.$shift()}),-1),$def(self,"$push",(function(value){return this.storage.$push(value)}),1),$def(self,"$each",(function $$each(){var block=$$each.$$p||nil;return delete $$each.$$p,$send(this.storage,"each",[],block.$to_proc())}),0),$alias(self,"<<","push"),$alias(self,"deq","pop"),$alias(self,"enq","push"),$alias(self,"length","size"),$alias(self,"shift","pop")}($nesting[0],0,$nesting),function($base,$super,$parent_nesting){var $nesting=[$klass($base,null,"Backtrace")].concat($parent_nesting);(function($base,$super,$parent_nesting){var self=$klass($base,null,"Location"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.label=$proto.str=nil,$def(self,"$initialize",(function(str){var $ret_or_1;return this.str=str,str["$=~"](/^(.*?):(\d+):(\d+):in `(.*?)'$/),this.path=$$("Regexp").$last_match(1),this.label=$$("Regexp").$last_match(4),this.lineno=$$("Regexp").$last_match(2).$to_i(),this.label["$=~"](/(\w+)$/),this.base_label=$truthy($ret_or_1=$$("Regexp").$last_match(1))?$ret_or_1:this.label}),1),$def(self,"$to_s",(function(){return this.str}),0),$def(self,"$inspect",(function(){return this.str.$inspect()}),0),self.$attr_reader("base_label","label","lineno","path"),$alias(self,"absolute_path","path")})($nesting[0],0,$nesting)}($nesting[0],0,$nesting)}($nesting[0],0,$nesting),$const_set($nesting[0],"Queue",$$$($$("Thread"),"Queue")),function($base,$super,$parent_nesting){var self=$klass($base,null,"Mutex"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.locked=nil,$def(self,"$initialize",(function(){return this.locked=!1}),0),$def(self,"$lock",(function(){return $truthy(this.locked)&&this.$raise($$("ThreadError"),"Deadlock"),this.locked=!0,this}),0),$def(self,"$locked?",(function(){return this.locked}),0),$def(self,"$owned?",(function(){return this.locked}),0),$def(self,"$try_lock",(function(){return!$truthy(this["$locked?"]())&&(this.$lock(),!0)}),0),$def(self,"$unlock",(function(){return $truthy(this.locked)||this.$raise($$("ThreadError"),"Mutex not locked"),this.locked=!1,this}),0),$def(self,"$synchronize",(function $$synchronize(){var $yield=$$synchronize.$$p||nil,self=this;return delete $$synchronize.$$p,self.$lock(),function(){try{return Opal.yieldX($yield,[])}finally{self.$unlock()}}()}),0)}($nesting[0],0,$nesting)}; diff --git a/opal/1.4.1/thread.min.js.gz b/opal/1.4.1/thread.min.js.gz new file mode 100644 index 00000000..0a4023c7 Binary files /dev/null and b/opal/1.4.1/thread.min.js.gz differ diff --git a/opal/1.4.1/time.js b/opal/1.4.1/time.js new file mode 100644 index 00000000..2be7b6d9 --- /dev/null +++ b/opal/1.4.1/time.js @@ -0,0 +1,20 @@ +Opal.modules["time"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $klass = Opal.klass, $defs = Opal.defs, $def = Opal.def; + + Opal.add_stubs('strftime'); + return (function($base, $super) { + var self = $klass($base, $super, 'Time'); + + + + $defs(self, '$parse', function $$parse(str) { + + return new Date(Date.parse(str)); + }, 1); + return $def(self, '$iso8601', function $$iso8601() { + var self = this; + + return self.$strftime("%FT%T%z") + }, 0); + })($nesting[0], null) +}; diff --git a/opal/1.4.1/time.min.js b/opal/1.4.1/time.min.js new file mode 100644 index 00000000..abeb6b6a --- /dev/null +++ b/opal/1.4.1/time.min.js @@ -0,0 +1 @@ +Opal.modules.time=function(Opal){Opal.nil;var self,$klass=Opal.klass,$defs=Opal.defs,$def=Opal.def;return Opal.add_stubs("strftime"),self=$klass([][0],null,"Time"),$defs(self,"$parse",(function(str){return new Date(Date.parse(str))}),1),$def(self,"$iso8601",(function(){return this.$strftime("%FT%T%z")}),0)}; diff --git a/opal/1.4.1/time.min.js.gz b/opal/1.4.1/time.min.js.gz new file mode 100644 index 00000000..b40a8338 Binary files /dev/null and b/opal/1.4.1/time.min.js.gz differ diff --git a/opal/1.4.1/yaml.js b/opal/1.4.1/yaml.js new file mode 100644 index 00000000..d8916d71 --- /dev/null +++ b/opal/1.4.1/yaml.js @@ -0,0 +1,6 @@ +Opal.modules["yaml"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, nil = Opal.nil; + + Opal.add_stubs('warn'); + return self.$warn("REMOVED: use `require 'nodejs/yaml'` instead") +}; diff --git a/opal/1.4.1/yaml.min.js b/opal/1.4.1/yaml.min.js new file mode 100644 index 00000000..9ad848b7 --- /dev/null +++ b/opal/1.4.1/yaml.min.js @@ -0,0 +1 @@ +Opal.modules.yaml=function(Opal){var self=Opal.top;Opal.nil;return Opal.add_stubs("warn"),self.$warn("REMOVED: use `require 'nodejs/yaml'` instead")}; diff --git a/opal/1.4.1/yaml.min.js.gz b/opal/1.4.1/yaml.min.js.gz new file mode 100644 index 00000000..fa33ed34 Binary files /dev/null and b/opal/1.4.1/yaml.min.js.gz differ diff --git a/opal/current/await.js b/opal/current/await.js index 1a3f32d5..1f77e363 100644 --- a/opal/current/await.js +++ b/opal/current/await.js @@ -1,11 +1,7 @@ -Opal.modules["promise/v2"] = function(Opal) {/* Generated by Opal 1.4.0 */ - var self = Opal.top, $nesting = [], nil = Opal.nil, $truthy = Opal.truthy, $klass = Opal.klass, $def = Opal.def, $eqeq = Opal.eqeq, $send = Opal.send, $alias = Opal.alias, $rb_gt = Opal.rb_gt, $rb_minus = Opal.rb_minus, $to_a = Opal.to_a, $eqeqeq = Opal.eqeqeq, $rb_plus = Opal.rb_plus; +Opal.modules["promise/v2"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $klass = Opal.klass, $def = Opal.def, $eqeq = Opal.eqeq, $send = Opal.send, $alias = Opal.alias, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $rb_minus = Opal.rb_minus, $to_a = Opal.to_a, $eqeqeq = Opal.eqeqeq, $rb_plus = Opal.rb_plus; - Opal.add_stubs('warn,instance_variable_set,Array,==,length,first,tap,attr_reader,!=,native?,raise,include?,any?,proc,call,nativity_check!,gen_tracing_proc,<<,there_can_be_only_one!,then,to_proc,fail,always,!,>,value,unshift,-,prev,trace,light_nativity_check!,nil?,resolved?,===,rejected?,map,when,new,rescue,resolve,reject,class,+,object_id,inspect'); - - if ($truthy(Opal.config.experimental_features_severity == 'warning')) { - self.$warn("PromiseV2 is a technology preview, which means it may change its behavior " + "in the future until this warning is removed. If you are interested in this part, " + "please make sure you track the async/await/promises tag on Opal issues: " + "https://github.com/opal/opal/issues?q=label%3Aasync%2Fawait%2Fpromises") - }; + Opal.add_stubs('instance_variable_set,Array,==,length,first,tap,attr_reader,!=,native?,raise,include?,any?,proc,call,nativity_check!,gen_tracing_proc,<<,there_can_be_only_one!,then,to_proc,fail,always,!,>,value,unshift,-,prev,trace,light_nativity_check!,nil?,resolved?,===,rejected?,map,when,new,rescue,resolve,reject,class,+,object_id,inspect'); return (function($base, $super, $parent_nesting) { var self = $klass($base, $super, 'PromiseV2'); @@ -503,10 +499,10 @@ Opal.modules["promise/v2"] = function(Opal) {/* Generated by Opal 1.4.0 */ $alias(self, "resolve!", "resolve"); $alias(self, "to_n", "itself"); return $alias(self, "to_v2", "itself"); - })($nesting[0], Promise, $nesting); + })($nesting[0], Promise, $nesting) }; -Opal.modules["await"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["await"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $coerce_to = Opal.coerce_to, $truthy = Opal.truthy, $klass = Opal.klass, $rb_lt = Opal.rb_lt, $rb_plus = Opal.rb_plus, $def = Opal.def, $send = Opal.send, $module = Opal.module, $to_a = Opal.to_a, $gvars = Opal.gvars, $rb_times = Opal.rb_times, $alias = Opal.alias; Opal.add_stubs('warn,require,<,<<,[],+,map_await,to_proc,when,map,empty?,pop,call,new,proc,resolve,*,async?'); diff --git a/opal/current/await.min.js b/opal/current/await.min.js index 34b81d1e..f3bd4f75 100644 --- a/opal/current/await.min.js +++ b/opal/current/await.min.js @@ -1 +1 @@ -Opal.modules["promise/v2"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$truthy=Opal.truthy,$klass=Opal.klass,$def=Opal.def,$eqeq=Opal.eqeq,$send=Opal.send,$alias=Opal.alias,$rb_gt=Opal.rb_gt,$rb_minus=Opal.rb_minus,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$rb_plus=Opal.rb_plus;return Opal.add_stubs("warn,instance_variable_set,Array,==,length,first,tap,attr_reader,!=,native?,raise,include?,any?,proc,call,nativity_check!,gen_tracing_proc,<<,there_can_be_only_one!,then,to_proc,fail,always,!,>,value,unshift,-,prev,trace,light_nativity_check!,nil?,resolved?,===,rejected?,map,when,new,rescue,resolve,reject,class,+,object_id,inspect"),$truthy("warning"==Opal.config.experimental_features_severity)&&self.$warn("PromiseV2 is a technology preview, which means it may change its behavior in the future until this warning is removed. If you are interested in this part, please make sure you track the async/await/promises tag on Opal issues: https://github.com/opal/opal/issues?q=label%3Aasync%2Fawait%2Fpromises"),function($base,$super,$parent_nesting){var self=$klass($base,Promise,"PromiseV2"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.type=$proto.next=$proto.realized=$proto.resolve_proc=$proto.reject_proc=$proto.value=nil,function(self,$parent_nesting){$def(self,"$allocate",(function(){var $a,ok=nil,fail=nil,prom=nil;return ok=($a=[nil,nil])[0],fail=$a[1],(prom=new this.$$constructor((function(_ok,_fail){ok=_ok,fail=_fail}))).$instance_variable_set("@type","opal"),prom.$instance_variable_set("@resolve_proc",ok),prom.$instance_variable_set("@reject_proc",fail),prom}),0),$def(self,"$when",(function($a){var promises,self=this;return promises=Opal.slice.call(arguments),promises=self.$Array($eqeq(promises.$length(),1)?promises.$first():promises),$send(Promise.all(promises),"tap",[],(function(prom){return null==prom&&(prom=nil),prom.$instance_variable_set("@type","when")}),1)}),-1),$def(self,"$all_resolved",(function($a){var promises,self=this;return promises=Opal.slice.call(arguments),promises=self.$Array($eqeq(promises.$length(),1)?promises.$first():promises),$send(Promise.allResolved(promises),"tap",[],(function(prom){return null==prom&&(prom=nil),prom.$instance_variable_set("@type","all_resolved")}),1)}),-1),$def(self,"$any",(function($a){var promises,self=this;return promises=Opal.slice.call(arguments),promises=self.$Array($eqeq(promises.$length(),1)?promises.$first():promises),$send(Promise.any(promises),"tap",[],(function(prom){return null==prom&&(prom=nil),prom.$instance_variable_set("@type","any")}),1)}),-1),$def(self,"$race",(function($a){var promises,self=this;return promises=Opal.slice.call(arguments),promises=self.$Array($eqeq(promises.$length(),1)?promises.$first():promises),$send(Promise.race(promises),"tap",[],(function(prom){return null==prom&&(prom=nil),prom.$instance_variable_set("@type","race")}),1)}),-1),$def(self,"$resolve",(function(value){return null==value&&(value=nil),$send(Promise.resolve(value),"tap",[],(function(prom){return null==prom&&(prom=nil),prom.$instance_variable_set("@type","resolve"),prom.$instance_variable_set("@realized","resolve"),prom.$instance_variable_set("@value",value)}),1)}),-1),$def(self,"$reject",(function(value){return null==value&&(value=nil),$send(Promise.reject(value),"tap",[],(function(prom){return null==prom&&(prom=nil),prom.$instance_variable_set("@type","reject"),prom.$instance_variable_set("@realized","reject"),prom.$instance_variable_set("@value",value)}),1)}),-1),$alias(self,"all","when"),$alias(self,"error","reject"),$alias(self,"value","resolve")}(Opal.get_singleton_class(self)),self.$attr_reader("prev","next"),$def(self,"$native?",(function(){return this.type["$!="]("opal")}),0),$def(self,"$nativity_check!",(function(){return $truthy(this["$native?"]())?this.$raise($$("ArgumentError"),"this promise is native to JavaScript"):nil}),0),$def(self,"$light_nativity_check!",(function(){return $truthy(["reject","resolve","trace","always","fail","then"]["$include?"](this.type))?nil:$truthy(this["$native?"]())?this.$raise($$("ArgumentError"),"this promise is native to JavaScript"):nil}),0),$def(self,"$there_can_be_only_one!",(function(){return $truthy(this.next)&&$truthy(this.next["$any?"]())?this.$raise($$("ArgumentError"),"a promise has already been chained"):nil}),0),$def(self,"$gen_tracing_proc",(function $$gen_tracing_proc(passing){var block=$$gen_tracing_proc.$$p||nil;return delete $$gen_tracing_proc.$$p,$send(this,"proc",[],(function(i){var res;return null==i&&(i=nil),res=passing.$call(i),Opal.yield1(block,res),res}),1)}),1),$def(self,"$resolve",(function(value){return null==value&&(value=nil),this["$nativity_check!"](),$truthy(this.realized)&&this.$raise($$("ArgumentError"),"this promise was already resolved"),this.value=value,this.realized="resolve",this.resolve_proc.$call(value),this}),-1),$def(self,"$reject",(function(value){return null==value&&(value=nil),this["$nativity_check!"](),$truthy(this.realized)&&this.$raise($$("ArgumentError"),"this promise was already resolved"),this.value=value,this.realized="reject",this.reject_proc.$call(value),this}),-1),$def(self,"$then",(function $$then(){var blk,$ret_or_1,block=$$then.$$p||nil,prom=nil;return delete $$then.$$p,prom=nil,blk=$send(this,"gen_tracing_proc",[block],(function(val){return null==val&&(val=nil),prom.$instance_variable_set("@realized","resolve"),prom.$instance_variable_set("@value",val)}),1),(prom=this.then(blk)).$instance_variable_set("@prev",this),prom.$instance_variable_set("@type","then"),(this.next=$truthy($ret_or_1=this.next)?$ret_or_1:[])["$<<"](prom),prom}),0),$def(self,"$then!",(function $PromiseV2_then$excl$13(){var block=$PromiseV2_then$excl$13.$$p||nil;return delete $PromiseV2_then$excl$13.$$p,this["$there_can_be_only_one!"](),$send(this,"then",[],block.$to_proc())}),0),$def(self,"$fail",(function $$fail(){var blk,$ret_or_1,block=$$fail.$$p||nil,prom=nil;return delete $$fail.$$p,prom=nil,blk=$send(this,"gen_tracing_proc",[block],(function(val){return null==val&&(val=nil),prom.$instance_variable_set("@realized","resolve"),prom.$instance_variable_set("@value",val)}),1),(prom=this.catch(blk)).$instance_variable_set("@prev",this),prom.$instance_variable_set("@type","fail"),(this.next=$truthy($ret_or_1=this.next)?$ret_or_1:[])["$<<"](prom),prom}),0),$def(self,"$fail!",(function $PromiseV2_fail$excl$15(){var block=$PromiseV2_fail$excl$15.$$p||nil;return delete $PromiseV2_fail$excl$15.$$p,this["$there_can_be_only_one!"](),$send(this,"fail",[],block.$to_proc())}),0),$def(self,"$always",(function $$always(){var blk,$ret_or_1,block=$$always.$$p||nil,prom=nil;return delete $$always.$$p,prom=nil,blk=$send(this,"gen_tracing_proc",[block],(function(val){return null==val&&(val=nil),prom.$instance_variable_set("@realized","resolve"),prom.$instance_variable_set("@value",val)}),1),(prom=this.finally(blk)).$instance_variable_set("@prev",this),prom.$instance_variable_set("@type","always"),(this.next=$truthy($ret_or_1=this.next)?$ret_or_1:[])["$<<"](prom),prom}),0),$def(self,"$always!",(function $PromiseV2_always$excl$17(){var block=$PromiseV2_always$excl$17.$$p||nil;return delete $PromiseV2_always$excl$17.$$p,this["$there_can_be_only_one!"](),$send(this,"always",[],block.$to_proc())}),0),$def(self,"$trace",(function $$trace(depth){var block=$$trace.$$p||nil,prom=nil;return delete $$trace.$$p,null==depth&&(depth=nil),(prom=$send(this,"then",[],(function $$18(){var values=nil,$ret_or_1=nil,$ret_or_2=nil,val=nil;for(values=[],prom=null==$$18.$$s?this:$$18.$$s;$truthy($truthy($ret_or_1=prom)?$truthy($ret_or_2=depth["$!"]())?$ret_or_2:$rb_gt(depth,0):$ret_or_1);){val=nil;try{val=prom.$value()}catch($err){if(!Opal.rescue($err,[$$("ArgumentError")]))throw $err;try{val="native"}finally{Opal.pop_exception()}}values.$unshift(val),$truthy(depth)&&(depth=$rb_minus(depth,1)),prom=prom.$prev()}return Opal.yieldX(block,$to_a(values))}),{$$arity:0,$$s:this})).$instance_variable_set("@type","trace"),prom}),-1),$def(self,"$trace!",(function $PromiseV2_trace$excl$19($a){var args,block=$PromiseV2_trace$excl$19.$$p||nil,self=this;return delete $PromiseV2_trace$excl$19.$$p,args=Opal.slice.call(arguments),self["$there_can_be_only_one!"](),$send(self,"trace",$to_a(args),block.$to_proc())}),-1),$def(self,"$resolved?",(function(){return this["$light_nativity_check!"](),this.realized["$=="]("resolve")}),0),$def(self,"$rejected?",(function(){return this["$light_nativity_check!"](),this.realized["$=="]("reject")}),0),$def(self,"$realized?",(function(){return this["$light_nativity_check!"](),this.realized["$nil?"]()["$!"]()}),0),$def(self,"$value",(function(){return $truthy(this["$resolved?"]())?$eqeqeq($$("PromiseV2"),this.value)?this.value.$value():this.value:nil}),0),$def(self,"$error",(function(){return this["$light_nativity_check!"](),$truthy(this["$rejected?"]())?this.value:nil}),0),$def(self,"$and",(function($a){var $post_args,promises,self=this;return $post_args=Opal.slice.call(arguments),promises=$send(promises=$post_args,"map",[],(function(i){return null==i&&(i=nil),$eqeqeq($$("PromiseV2"),i)?i:$$("PromiseV2").$value(i)}),1),$send($send($$("PromiseV2"),"when",[self].concat($to_a(promises))),"then",[],(function(a,$b){var b;return null==a&&(a=nil),b=Opal.slice.call(arguments,1),[].concat($to_a(a)).concat($to_a(b))}),-2)}),-1),$def(self,"$initialize",(function $$initialize(){var block=$$initialize.$$p||nil;return delete $$initialize.$$p,block!==nil?Opal.yield1(block,this):nil}),0),$def(self,"$to_v1",(function(){var v1=nil;return v1=$$("PromiseV1").$new(),$send($send(this,"then",[],(function(i){return null==i&&(i=nil),v1.$resolve(i)}),1),"rescue",[],(function(i){return null==i&&(i=nil),v1.$reject(i)}),1),v1}),0),$def(self,"$inspect",(function(){var result=nil;return result="#<"+this.$class(),$truthy(this.type)?$truthy(["opal","resolve","reject"]["$include?"](this.type))||(result=$rb_plus(result,":"+this.type)):result=$rb_plus(result,":native"),$truthy(this.realized)&&(result=$rb_plus(result,":"+this.realized)),result=$rb_plus(result,"("+this.$object_id()+")"),$truthy(this.next)&&$truthy(this.next["$any?"]())&&(result=$rb_plus(result," >> "+this.next.$inspect())),$truthy(this.value)&&(result=$rb_plus(result,": "+this.value.$inspect())),result=$rb_plus(result,">")}),0),$alias(self,"catch","fail"),$alias(self,"catch!","fail!"),$alias(self,"do","then"),$alias(self,"do!","then!"),$alias(self,"ensure","always"),$alias(self,"ensure!","always!"),$alias(self,"finally","always"),$alias(self,"finally!","always!"),$alias(self,"reject!","reject"),$alias(self,"rescue","fail"),$alias(self,"rescue!","fail!"),$alias(self,"resolve!","resolve"),$alias(self,"to_n","itself"),$alias(self,"to_v2","itself")}($nesting[0],0,$nesting)},Opal.modules.await=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$coerce_to=Opal.coerce_to,$truthy=Opal.truthy,$klass=Opal.klass,$rb_lt=Opal.rb_lt,$rb_plus=Opal.rb_plus,$def=Opal.def,$send=Opal.send,$module=Opal.module,$to_a=Opal.to_a,$gvars=Opal.gvars,$rb_times=Opal.rb_times,$alias=Opal.alias;Opal.add_stubs("warn,require,<,<<,[],+,map_await,to_proc,when,map,empty?,pop,call,new,proc,resolve,*,async?"),$truthy("warning"==Opal.config.experimental_features_severity)&&self.$warn("Await functionality is a technology preview, which means it may change its behavior in the future unless this warning is removed. If you are interested in this part, please make sure you track the async/await/promises tag on Opal issues: https://github.com/opal/opal/issues?q=label%3Aasync%2Fawait%2Fpromises");var AsyncFunction=Object.getPrototypeOf((async function(){})).constructor;return self.$require("promise/v2"),function($base,$super){var self=$klass($base,null,"Array");$def(self,"$map_await",(async function $$map_await(){var block=$$map_await.$$p||nil,i=nil,results=nil;for(delete $$map_await.$$p,i=0,results=[];$truthy($rb_lt(i,this.length));)results["$<<"](await Opal.yield1(block,this["$[]"](i))),i=$rb_plus(i,1);return results}),0),$def(self,"$each_await",(async function $$each_await(){var block=$$each_await.$$p||nil;return delete $$each_await.$$p,await $send(this,"map_await",[],block.$to_proc()),this}),0)}($nesting[0]),function($base,$parent_nesting){var self=$module($base,"Enumerable"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$each_async",(async function $$each_async(){var block=$$each_async.$$p||nil;return delete $$each_async.$$p,await $send($$("PromiseV2"),"when",$to_a($send(this,"map",[],block.$to_proc())))}),0)}($nesting[0],$nesting),function($base,$parent_nesting){var self=$module($base,"Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$exit",(async function(status){var $ret_or_1,block=nil;for(null==$gvars.__at_exit__&&($gvars.__at_exit__=nil),null==status&&(status=!0),$gvars.__at_exit__=$truthy($ret_or_1=$gvars.__at_exit__)?$ret_or_1:[];!$truthy($gvars.__at_exit__["$empty?"]());)block=$gvars.__at_exit__.$pop(),await block.$call();return status=status.$$is_boolean?status?0:1:$coerce_to(status,$$("Integer"),"to_int"),Opal.exit(status),nil}),-1),$def(self,"$sleep",(function(seconds){var prom=nil;return prom=$$("PromiseV2").$new(),setTimeout($send(this,"proc",[],(function(){return prom.$resolve()}),0),$rb_times(seconds,1e3)),prom}),1)}($nesting[0],$nesting),function($base){var self=$module($base,"Kernel");$alias(self,"await","itself")}($nesting[0]),function($base,$super){var self=$klass($base,null,"Proc");$def(self,"$async?",(function(){return this instanceof AsyncFunction}),0)}($nesting[0]),function($base,$super){var self=$klass($base,null,"Method");return self.$$prototype.method=nil,$def(self,"$async?",(function(){return this.method["$async?"]()}),0)}($nesting[0])}; +Opal.modules["promise/v2"]=function(Opal){var $nesting=[],nil=Opal.nil,$klass=Opal.klass,$def=Opal.def,$eqeq=Opal.eqeq,$send=Opal.send,$alias=Opal.alias,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$rb_minus=Opal.rb_minus,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$rb_plus=Opal.rb_plus;return Opal.add_stubs("instance_variable_set,Array,==,length,first,tap,attr_reader,!=,native?,raise,include?,any?,proc,call,nativity_check!,gen_tracing_proc,<<,there_can_be_only_one!,then,to_proc,fail,always,!,>,value,unshift,-,prev,trace,light_nativity_check!,nil?,resolved?,===,rejected?,map,when,new,rescue,resolve,reject,class,+,object_id,inspect"),function($base,$super,$parent_nesting){var self=$klass($base,Promise,"PromiseV2"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.type=$proto.next=$proto.realized=$proto.resolve_proc=$proto.reject_proc=$proto.value=nil,function(self,$parent_nesting){$def(self,"$allocate",(function(){var $a,ok=nil,fail=nil,prom=nil;return ok=($a=[nil,nil])[0],fail=$a[1],(prom=new this.$$constructor((function(_ok,_fail){ok=_ok,fail=_fail}))).$instance_variable_set("@type","opal"),prom.$instance_variable_set("@resolve_proc",ok),prom.$instance_variable_set("@reject_proc",fail),prom}),0),$def(self,"$when",(function($a){var promises,self=this;return promises=Opal.slice.call(arguments),promises=self.$Array($eqeq(promises.$length(),1)?promises.$first():promises),$send(Promise.all(promises),"tap",[],(function(prom){return null==prom&&(prom=nil),prom.$instance_variable_set("@type","when")}),1)}),-1),$def(self,"$all_resolved",(function($a){var promises,self=this;return promises=Opal.slice.call(arguments),promises=self.$Array($eqeq(promises.$length(),1)?promises.$first():promises),$send(Promise.allResolved(promises),"tap",[],(function(prom){return null==prom&&(prom=nil),prom.$instance_variable_set("@type","all_resolved")}),1)}),-1),$def(self,"$any",(function($a){var promises,self=this;return promises=Opal.slice.call(arguments),promises=self.$Array($eqeq(promises.$length(),1)?promises.$first():promises),$send(Promise.any(promises),"tap",[],(function(prom){return null==prom&&(prom=nil),prom.$instance_variable_set("@type","any")}),1)}),-1),$def(self,"$race",(function($a){var promises,self=this;return promises=Opal.slice.call(arguments),promises=self.$Array($eqeq(promises.$length(),1)?promises.$first():promises),$send(Promise.race(promises),"tap",[],(function(prom){return null==prom&&(prom=nil),prom.$instance_variable_set("@type","race")}),1)}),-1),$def(self,"$resolve",(function(value){return null==value&&(value=nil),$send(Promise.resolve(value),"tap",[],(function(prom){return null==prom&&(prom=nil),prom.$instance_variable_set("@type","resolve"),prom.$instance_variable_set("@realized","resolve"),prom.$instance_variable_set("@value",value)}),1)}),-1),$def(self,"$reject",(function(value){return null==value&&(value=nil),$send(Promise.reject(value),"tap",[],(function(prom){return null==prom&&(prom=nil),prom.$instance_variable_set("@type","reject"),prom.$instance_variable_set("@realized","reject"),prom.$instance_variable_set("@value",value)}),1)}),-1),$alias(self,"all","when"),$alias(self,"error","reject"),$alias(self,"value","resolve")}(Opal.get_singleton_class(self)),self.$attr_reader("prev","next"),$def(self,"$native?",(function(){return this.type["$!="]("opal")}),0),$def(self,"$nativity_check!",(function(){return $truthy(this["$native?"]())?this.$raise($$("ArgumentError"),"this promise is native to JavaScript"):nil}),0),$def(self,"$light_nativity_check!",(function(){return $truthy(["reject","resolve","trace","always","fail","then"]["$include?"](this.type))?nil:$truthy(this["$native?"]())?this.$raise($$("ArgumentError"),"this promise is native to JavaScript"):nil}),0),$def(self,"$there_can_be_only_one!",(function(){return $truthy(this.next)&&$truthy(this.next["$any?"]())?this.$raise($$("ArgumentError"),"a promise has already been chained"):nil}),0),$def(self,"$gen_tracing_proc",(function $$gen_tracing_proc(passing){var block=$$gen_tracing_proc.$$p||nil;return delete $$gen_tracing_proc.$$p,$send(this,"proc",[],(function(i){var res;return null==i&&(i=nil),res=passing.$call(i),Opal.yield1(block,res),res}),1)}),1),$def(self,"$resolve",(function(value){return null==value&&(value=nil),this["$nativity_check!"](),$truthy(this.realized)&&this.$raise($$("ArgumentError"),"this promise was already resolved"),this.value=value,this.realized="resolve",this.resolve_proc.$call(value),this}),-1),$def(self,"$reject",(function(value){return null==value&&(value=nil),this["$nativity_check!"](),$truthy(this.realized)&&this.$raise($$("ArgumentError"),"this promise was already resolved"),this.value=value,this.realized="reject",this.reject_proc.$call(value),this}),-1),$def(self,"$then",(function $$then(){var blk,$ret_or_1,block=$$then.$$p||nil,prom=nil;return delete $$then.$$p,prom=nil,blk=$send(this,"gen_tracing_proc",[block],(function(val){return null==val&&(val=nil),prom.$instance_variable_set("@realized","resolve"),prom.$instance_variable_set("@value",val)}),1),(prom=this.then(blk)).$instance_variable_set("@prev",this),prom.$instance_variable_set("@type","then"),(this.next=$truthy($ret_or_1=this.next)?$ret_or_1:[])["$<<"](prom),prom}),0),$def(self,"$then!",(function $PromiseV2_then$excl$13(){var block=$PromiseV2_then$excl$13.$$p||nil;return delete $PromiseV2_then$excl$13.$$p,this["$there_can_be_only_one!"](),$send(this,"then",[],block.$to_proc())}),0),$def(self,"$fail",(function $$fail(){var blk,$ret_or_1,block=$$fail.$$p||nil,prom=nil;return delete $$fail.$$p,prom=nil,blk=$send(this,"gen_tracing_proc",[block],(function(val){return null==val&&(val=nil),prom.$instance_variable_set("@realized","resolve"),prom.$instance_variable_set("@value",val)}),1),(prom=this.catch(blk)).$instance_variable_set("@prev",this),prom.$instance_variable_set("@type","fail"),(this.next=$truthy($ret_or_1=this.next)?$ret_or_1:[])["$<<"](prom),prom}),0),$def(self,"$fail!",(function $PromiseV2_fail$excl$15(){var block=$PromiseV2_fail$excl$15.$$p||nil;return delete $PromiseV2_fail$excl$15.$$p,this["$there_can_be_only_one!"](),$send(this,"fail",[],block.$to_proc())}),0),$def(self,"$always",(function $$always(){var blk,$ret_or_1,block=$$always.$$p||nil,prom=nil;return delete $$always.$$p,prom=nil,blk=$send(this,"gen_tracing_proc",[block],(function(val){return null==val&&(val=nil),prom.$instance_variable_set("@realized","resolve"),prom.$instance_variable_set("@value",val)}),1),(prom=this.finally(blk)).$instance_variable_set("@prev",this),prom.$instance_variable_set("@type","always"),(this.next=$truthy($ret_or_1=this.next)?$ret_or_1:[])["$<<"](prom),prom}),0),$def(self,"$always!",(function $PromiseV2_always$excl$17(){var block=$PromiseV2_always$excl$17.$$p||nil;return delete $PromiseV2_always$excl$17.$$p,this["$there_can_be_only_one!"](),$send(this,"always",[],block.$to_proc())}),0),$def(self,"$trace",(function $$trace(depth){var block=$$trace.$$p||nil,prom=nil;return delete $$trace.$$p,null==depth&&(depth=nil),(prom=$send(this,"then",[],(function $$18(){var values=nil,$ret_or_1=nil,$ret_or_2=nil,val=nil;for(values=[],prom=null==$$18.$$s?this:$$18.$$s;$truthy($truthy($ret_or_1=prom)?$truthy($ret_or_2=depth["$!"]())?$ret_or_2:$rb_gt(depth,0):$ret_or_1);){val=nil;try{val=prom.$value()}catch($err){if(!Opal.rescue($err,[$$("ArgumentError")]))throw $err;try{val="native"}finally{Opal.pop_exception()}}values.$unshift(val),$truthy(depth)&&(depth=$rb_minus(depth,1)),prom=prom.$prev()}return Opal.yieldX(block,$to_a(values))}),{$$arity:0,$$s:this})).$instance_variable_set("@type","trace"),prom}),-1),$def(self,"$trace!",(function $PromiseV2_trace$excl$19($a){var args,block=$PromiseV2_trace$excl$19.$$p||nil,self=this;return delete $PromiseV2_trace$excl$19.$$p,args=Opal.slice.call(arguments),self["$there_can_be_only_one!"](),$send(self,"trace",$to_a(args),block.$to_proc())}),-1),$def(self,"$resolved?",(function(){return this["$light_nativity_check!"](),this.realized["$=="]("resolve")}),0),$def(self,"$rejected?",(function(){return this["$light_nativity_check!"](),this.realized["$=="]("reject")}),0),$def(self,"$realized?",(function(){return this["$light_nativity_check!"](),this.realized["$nil?"]()["$!"]()}),0),$def(self,"$value",(function(){return $truthy(this["$resolved?"]())?$eqeqeq($$("PromiseV2"),this.value)?this.value.$value():this.value:nil}),0),$def(self,"$error",(function(){return this["$light_nativity_check!"](),$truthy(this["$rejected?"]())?this.value:nil}),0),$def(self,"$and",(function($a){var $post_args,promises,self=this;return $post_args=Opal.slice.call(arguments),promises=$send(promises=$post_args,"map",[],(function(i){return null==i&&(i=nil),$eqeqeq($$("PromiseV2"),i)?i:$$("PromiseV2").$value(i)}),1),$send($send($$("PromiseV2"),"when",[self].concat($to_a(promises))),"then",[],(function(a,$b){var b;return null==a&&(a=nil),b=Opal.slice.call(arguments,1),[].concat($to_a(a)).concat($to_a(b))}),-2)}),-1),$def(self,"$initialize",(function $$initialize(){var block=$$initialize.$$p||nil;return delete $$initialize.$$p,block!==nil?Opal.yield1(block,this):nil}),0),$def(self,"$to_v1",(function(){var v1=nil;return v1=$$("PromiseV1").$new(),$send($send(this,"then",[],(function(i){return null==i&&(i=nil),v1.$resolve(i)}),1),"rescue",[],(function(i){return null==i&&(i=nil),v1.$reject(i)}),1),v1}),0),$def(self,"$inspect",(function(){var result=nil;return result="#<"+this.$class(),$truthy(this.type)?$truthy(["opal","resolve","reject"]["$include?"](this.type))||(result=$rb_plus(result,":"+this.type)):result=$rb_plus(result,":native"),$truthy(this.realized)&&(result=$rb_plus(result,":"+this.realized)),result=$rb_plus(result,"("+this.$object_id()+")"),$truthy(this.next)&&$truthy(this.next["$any?"]())&&(result=$rb_plus(result," >> "+this.next.$inspect())),$truthy(this.value)&&(result=$rb_plus(result,": "+this.value.$inspect())),result=$rb_plus(result,">")}),0),$alias(self,"catch","fail"),$alias(self,"catch!","fail!"),$alias(self,"do","then"),$alias(self,"do!","then!"),$alias(self,"ensure","always"),$alias(self,"ensure!","always!"),$alias(self,"finally","always"),$alias(self,"finally!","always!"),$alias(self,"reject!","reject"),$alias(self,"rescue","fail"),$alias(self,"rescue!","fail!"),$alias(self,"resolve!","resolve"),$alias(self,"to_n","itself"),$alias(self,"to_v2","itself")}($nesting[0],0,$nesting)},Opal.modules.await=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$coerce_to=Opal.coerce_to,$truthy=Opal.truthy,$klass=Opal.klass,$rb_lt=Opal.rb_lt,$rb_plus=Opal.rb_plus,$def=Opal.def,$send=Opal.send,$module=Opal.module,$to_a=Opal.to_a,$gvars=Opal.gvars,$rb_times=Opal.rb_times,$alias=Opal.alias;Opal.add_stubs("warn,require,<,<<,[],+,map_await,to_proc,when,map,empty?,pop,call,new,proc,resolve,*,async?"),$truthy("warning"==Opal.config.experimental_features_severity)&&self.$warn("Await functionality is a technology preview, which means it may change its behavior in the future unless this warning is removed. If you are interested in this part, please make sure you track the async/await/promises tag on Opal issues: https://github.com/opal/opal/issues?q=label%3Aasync%2Fawait%2Fpromises");var AsyncFunction=Object.getPrototypeOf((async function(){})).constructor;return self.$require("promise/v2"),function($base,$super){var self=$klass($base,null,"Array");$def(self,"$map_await",(async function $$map_await(){var block=$$map_await.$$p||nil,i=nil,results=nil;for(delete $$map_await.$$p,i=0,results=[];$truthy($rb_lt(i,this.length));)results["$<<"](await Opal.yield1(block,this["$[]"](i))),i=$rb_plus(i,1);return results}),0),$def(self,"$each_await",(async function $$each_await(){var block=$$each_await.$$p||nil;return delete $$each_await.$$p,await $send(this,"map_await",[],block.$to_proc()),this}),0)}($nesting[0]),function($base,$parent_nesting){var self=$module($base,"Enumerable"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$each_async",(async function $$each_async(){var block=$$each_async.$$p||nil;return delete $$each_async.$$p,await $send($$("PromiseV2"),"when",$to_a($send(this,"map",[],block.$to_proc())))}),0)}($nesting[0],$nesting),function($base,$parent_nesting){var self=$module($base,"Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$exit",(async function(status){var $ret_or_1,block=nil;for(null==$gvars.__at_exit__&&($gvars.__at_exit__=nil),null==status&&(status=!0),$gvars.__at_exit__=$truthy($ret_or_1=$gvars.__at_exit__)?$ret_or_1:[];!$truthy($gvars.__at_exit__["$empty?"]());)block=$gvars.__at_exit__.$pop(),await block.$call();return status=status.$$is_boolean?status?0:1:$coerce_to(status,$$("Integer"),"to_int"),Opal.exit(status),nil}),-1),$def(self,"$sleep",(function(seconds){var prom=nil;return prom=$$("PromiseV2").$new(),setTimeout($send(this,"proc",[],(function(){return prom.$resolve()}),0),$rb_times(seconds,1e3)),prom}),1)}($nesting[0],$nesting),function($base){var self=$module($base,"Kernel");$alias(self,"await","itself")}($nesting[0]),function($base,$super){var self=$klass($base,null,"Proc");$def(self,"$async?",(function(){return this instanceof AsyncFunction}),0)}($nesting[0]),function($base,$super){var self=$klass($base,null,"Method");return self.$$prototype.method=nil,$def(self,"$async?",(function(){return this.method["$async?"]()}),0)}($nesting[0])}; diff --git a/opal/current/await.min.js.gz b/opal/current/await.min.js.gz index f67e5297..4426effc 100644 Binary files a/opal/current/await.min.js.gz and b/opal/current/await.min.js.gz differ diff --git a/opal/current/base64.js b/opal/current/base64.js index 2fd9711f..ffef29c6 100644 --- a/opal/current/base64.js +++ b/opal/current/base64.js @@ -1,4 +1,4 @@ -Opal.modules["base64"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["base64"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $defs = Opal.defs, $hash2 = Opal.hash2, $truthy = Opal.truthy; Opal.add_stubs('raise,delete'); diff --git a/opal/current/benchmark.js b/opal/current/benchmark.js index dbc7247a..21d44623 100644 --- a/opal/current/benchmark.js +++ b/opal/current/benchmark.js @@ -1,4 +1,4 @@ -Opal.modules["benchmark"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["benchmark"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $const_set = Opal.const_set, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $rb_times = Opal.rb_times, $def = Opal.def, $to_ary = Opal.to_ary, $klass = Opal.klass, $rb_lt = Opal.rb_lt, $alias = Opal.alias, $gvars = Opal.gvars, $hash2 = Opal.hash2, $eqeqeq = Opal.eqeqeq; Opal.add_stubs('sync,sync=,-,+,empty?,print,*,new,===,each,grep,ljust,shift,label,format,list,nil?,benchmark,to_proc,width,puts,length,inject,measure,rjust,map,start,tap,times,clock_gettime,utime,stime,cutime,cstime,module_function,raise,to_s,<,<<,attr_reader,real,memberwise,gsub,dup,%,total,protected,__send__'); diff --git a/opal/current/bigdecimal.js b/opal/current/bigdecimal.js index 28784fa3..acefab60 100644 --- a/opal/current/bigdecimal.js +++ b/opal/current/bigdecimal.js @@ -1,4 +1,4 @@ -Opal.modules["js"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["js"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $def = Opal.def, $truthy = Opal.truthy, $alias = Opal.alias; Opal.add_stubs('insert,<<,global,extend'); @@ -102,7 +102,7 @@ Opal.modules["js"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0]) }; -Opal.modules["bigdecimal/bignumber"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["bigdecimal/bignumber"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $klass = Opal.klass; return (function($base, $super) { @@ -123,7 +123,7 @@ Opal.modules["bigdecimal/bignumber"] = function(Opal) {/* Generated by Opal 1.4. })($nesting[0], $$('Numeric')) }; -Opal.modules["bigdecimal"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["bigdecimal"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $klass = Opal.klass, $module = Opal.module, $def = Opal.def, $hash2 = Opal.hash2, $send = Opal.send, $to_a = Opal.to_a, $hash = Opal.hash, $defs = Opal.defs, $const_set = Opal.const_set, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $send2 = Opal.send2, $find_super = Opal.find_super, $rb_lt = Opal.rb_lt, $to_ary = Opal.to_ary, $rb_gt = Opal.rb_gt, $rb_ge = Opal.rb_ge, $eqeq = Opal.eqeq, $rb_divide = Opal.rb_divide, $alias = Opal.alias; Opal.add_stubs('require,allocate,initialize,warn,BigDecimal,===,attr_reader,new,class,bignumber,nan?,nil?,raise,<,coerce,>,mode,>=,==,/,zero?,infinite?,finite?'); diff --git a/opal/current/buffer.js b/opal/current/buffer.js index 352efbce..8df378bc 100644 --- a/opal/current/buffer.js +++ b/opal/current/buffer.js @@ -1,4 +1,4 @@ -Opal.modules["native"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["native"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $defs = Opal.defs, $truthy = Opal.truthy, $send = Opal.send, $Kernel = Opal.Kernel, $hash2 = Opal.hash2, $range = Opal.range, $to_a = Opal.to_a, $def = Opal.def, $alias = Opal.alias, $klass = Opal.klass, $rb_minus = Opal.rb_minus, $send2 = Opal.send2, $find_super = Opal.find_super, $eqeqeq = Opal.eqeqeq, $rb_ge = Opal.rb_ge, $gvars = Opal.gvars; Opal.add_stubs('try_convert,native?,respond_to?,to_n,raise,inspect,Native,proc,map!,end_with?,define_method,[],convert,call,to_proc,new,each,native_reader,native_writer,extend,warn,include,is_a?,map,to_a,_Array,method_missing,bind,instance_method,slice,-,length,[]=,enum_for,===,>=,<<,each_pair,method_defined?,_initialize,name,native_module'); @@ -861,7 +861,7 @@ Opal.modules["native"] = function(Opal) {/* Generated by Opal 1.4.0 */ return ($gvars.$ = ($gvars.global = self.$Native(Opal.global))); }; -Opal.modules["buffer/array"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["buffer/array"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $gvars = Opal.gvars, $defs = Opal.defs, $eqeq = Opal.eqeq, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $truthy = Opal.truthy, $alias = Opal.alias; Opal.add_stubs('include,[],name_for,attr_reader,==,for,to_n,enum_for'); @@ -973,7 +973,7 @@ Opal.modules["buffer/array"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], null, $nesting) }; -Opal.modules["buffer/view"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["buffer/view"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $gvars = Opal.gvars, $defs = Opal.defs, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $alias = Opal.alias; Opal.add_stubs('include,!,nil?,[],attr_reader,native?,to_n,name_for'); @@ -1201,7 +1201,7 @@ Opal.modules["buffer/view"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], null, $nesting) }; -Opal.modules["buffer"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["buffer"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $gvars = Opal.gvars, $defs = Opal.defs, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $alias = Opal.alias; Opal.add_stubs('require,include,!,nil?,[],===,native?,new,pack,to_a'); diff --git a/opal/current/console.js b/opal/current/console.js index d2e5be3d..32bedaa1 100644 --- a/opal/current/console.js +++ b/opal/current/console.js @@ -1,4 +1,4 @@ -Opal.modules["native"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["native"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $defs = Opal.defs, $truthy = Opal.truthy, $send = Opal.send, $Kernel = Opal.Kernel, $hash2 = Opal.hash2, $range = Opal.range, $to_a = Opal.to_a, $def = Opal.def, $alias = Opal.alias, $klass = Opal.klass, $rb_minus = Opal.rb_minus, $send2 = Opal.send2, $find_super = Opal.find_super, $eqeqeq = Opal.eqeqeq, $rb_ge = Opal.rb_ge, $gvars = Opal.gvars; Opal.add_stubs('try_convert,native?,respond_to?,to_n,raise,inspect,Native,proc,map!,end_with?,define_method,[],convert,call,to_proc,new,each,native_reader,native_writer,extend,warn,include,is_a?,map,to_a,_Array,method_missing,bind,instance_method,slice,-,length,[]=,enum_for,===,>=,<<,each_pair,method_defined?,_initialize,name,native_module'); @@ -861,7 +861,7 @@ Opal.modules["native"] = function(Opal) {/* Generated by Opal 1.4.0 */ return ($gvars.$ = ($gvars.global = self.$Native(Opal.global))); }; -Opal.modules["console"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["console"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $send = Opal.send, $gvars = Opal.gvars; Opal.add_stubs('require,include,raise,==,arity,instance_exec,to_proc,new'); diff --git a/opal/current/date.js b/opal/current/date.js index 734227e6..bf2fffaf 100644 --- a/opal/current/date.js +++ b/opal/current/date.js @@ -1,4 +1,4 @@ -Opal.modules["date"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["date"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $to_ary = Opal.to_ary, $send2 = Opal.send2, $find_super = Opal.find_super, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $const_set = Opal.const_set, $rb_plus = Opal.rb_plus, $send = Opal.send, $alias = Opal.alias, $rb_minus = Opal.rb_minus, $rb_lt = Opal.rb_lt, $rb_times = Opal.rb_times; Opal.add_stubs('include,<=>,attr_reader,nonzero?,d,zero?,new,class,-@,+@,===,coerce,==,>,+,allocate,join,compact,map,to_proc,downcase,wrap,raise,clone,jd,>>,wday,year,month,day,-,to_s,to_i,<,*,reverse,step,abs,each'); diff --git a/opal/current/delegate.js b/opal/current/delegate.js index 693c9ccb..a46296f6 100644 --- a/opal/current/delegate.js +++ b/opal/current/delegate.js @@ -1,4 +1,4 @@ -Opal.modules["delegate"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["delegate"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $send2 = Opal.send2, $find_super = Opal.find_super; Opal.add_stubs('__setobj__,__getobj__,respond_to?,__send__,to_proc'); diff --git a/opal/current/dir.js b/opal/current/dir.js index c9479553..8e9c5ac8 100644 --- a/opal/current/dir.js +++ b/opal/current/dir.js @@ -1,4 +1,4 @@ -Opal.modules["dir"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["dir"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, nil = Opal.nil; Opal.add_stubs('warn'); diff --git a/opal/current/e2mmap.js b/opal/current/e2mmap.js index ce4a8aa0..69fc5b3e 100644 --- a/opal/current/e2mmap.js +++ b/opal/current/e2mmap.js @@ -1,4 +1,4 @@ -Opal.modules["e2mmap"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["e2mmap"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set, $send2 = Opal.send2, $find_super = Opal.find_super, $truthy = Opal.truthy, $rb_lt = Opal.rb_lt, $defs = Opal.defs, $send = Opal.send, $to_a = Opal.to_a, $def = Opal.def, $alias = Opal.alias, $hash2 = Opal.hash2, $rb_minus = Opal.rb_minus, $gvars = Opal.gvars, $regexp = Opal.regexp, $enc = Opal.enc; Opal.add_stubs('<,bind,module_eval,Raise,class,extend,def_e2message,def_exception,instance_eval,[]=,-,new,const_defined?,remove_const,const_set,e2mm_message,nil?,caller,=~,[],quote,shift,raise,sprintf,Fail,inspect,each,ancestors'); diff --git a/opal/current/encoding.js b/opal/current/encoding.js index 2e140017..29cc1161 100644 --- a/opal/current/encoding.js +++ b/opal/current/encoding.js @@ -1,4 +1,4 @@ -Opal.modules["encoding"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["encoding"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, nil = Opal.nil; Opal.add_stubs('warn'); diff --git a/opal/current/enumerator.js b/opal/current/enumerator.js index a8ba6c43..53a77b72 100644 --- a/opal/current/enumerator.js +++ b/opal/current/enumerator.js @@ -1,3 +1,3 @@ -Opal.modules["enumerator"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["enumerator"] = function(Opal) {/* Generated by Opal 1.4.1 */ return Opal.nil; }; diff --git a/opal/current/erb.js b/opal/current/erb.js index ce32681b..3c18ecd4 100644 --- a/opal/current/erb.js +++ b/opal/current/erb.js @@ -1,4 +1,4 @@ -Opal.modules["template"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["template"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $defs = Opal.defs, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $alias = Opal.alias; Opal.add_stubs('[],[]=,-,keys,attr_reader,instance_exec,new,to_proc,<<,join'); @@ -94,7 +94,7 @@ Opal.modules["template"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], null, $nesting) }; -Opal.modules["erb"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["erb"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $klass = Opal.klass, $module = Opal.module, $def = Opal.def, $alias = Opal.alias; Opal.add_stubs('require,module_function'); diff --git a/opal/current/file.js b/opal/current/file.js index 0573648b..4a197aea 100644 --- a/opal/current/file.js +++ b/opal/current/file.js @@ -1,4 +1,4 @@ -Opal.modules["file"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["file"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, nil = Opal.nil; Opal.add_stubs('warn'); diff --git a/opal/current/fileutils.js b/opal/current/fileutils.js index 4db201a4..afe14e98 100644 --- a/opal/current/fileutils.js +++ b/opal/current/fileutils.js @@ -1,3 +1,3 @@ -Opal.modules["fileutils"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["fileutils"] = function(Opal) {/* Generated by Opal 1.4.1 */ return Opal.nil; }; diff --git a/opal/current/forwardable.js b/opal/current/forwardable.js index 816b8b6f..b0e4aa0d 100644 --- a/opal/current/forwardable.js +++ b/opal/current/forwardable.js @@ -1,4 +1,4 @@ -Opal.modules["forwardable"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["forwardable"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $send = Opal.send, $truthy = Opal.truthy, $def = Opal.def, $to_a = Opal.to_a, $alias = Opal.alias; Opal.add_stubs('each,respond_to?,def_instance_delegator,include?,start_with?,to_s,define_method,__send__,instance_variable_get,to_proc,def_single_delegator,define_singleton_method'); diff --git a/opal/current/gjs.js b/opal/current/gjs.js index 237dd3b8..e6ab8cdf 100644 --- a/opal/current/gjs.js +++ b/opal/current/gjs.js @@ -1,4 +1,4 @@ -Opal.modules["gjs/io"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["gjs/io"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil; @@ -31,7 +31,7 @@ Opal.modules["gjs/io"] = function(Opal) {/* Generated by Opal 1.4.0 */ ; }; -Opal.modules["gjs/kernel"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["gjs/kernel"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $const_set = Opal.const_set; @@ -40,7 +40,7 @@ Opal.modules["gjs/kernel"] = function(Opal) {/* Generated by Opal 1.4.0 */ return Opal.exit = imports.system.exit;; }; -Opal.modules["gjs"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["gjs"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, nil = Opal.nil; Opal.add_stubs('require'); diff --git a/opal/current/headless_chrome.js b/opal/current/headless_chrome.js index 81dad247..07f9b0f2 100644 --- a/opal/current/headless_chrome.js +++ b/opal/current/headless_chrome.js @@ -1,4 +1,4 @@ -Opal.modules["headless_chrome"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["headless_chrome"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil; diff --git a/opal/current/iconv.js b/opal/current/iconv.js index 031f533f..0097d886 100644 --- a/opal/current/iconv.js +++ b/opal/current/iconv.js @@ -1,3 +1,3 @@ -Opal.modules["iconv"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["iconv"] = function(Opal) {/* Generated by Opal 1.4.1 */ return Opal.nil; }; diff --git a/opal/current/index.html b/opal/current/index.html index 919808c7..03f72a12 100644 --- a/opal/current/index.html +++ b/opal/current/index.html @@ -2,841 +2,841 @@ - Opal: CDN distribution for version 1.4.0 + Opal: CDN distribution for version 1.4.1 -

    Opal: CDN distribution for version 1.4.0

    +

    Opal: CDN distribution for version 1.4.1

    • - //cdn.opalrb.com/opal/1.4.0/await.js + //cdn.opalrb.com/opal/1.4.1/await.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/await.js" onload="Opal.require('await')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/await.js" onload="Opal.require('await')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/await.min.js + //cdn.opalrb.com/opal/1.4.1/await.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/await.min.js" onload="Opal.require('await')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/await.min.js" onload="Opal.require('await')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/base64.js + //cdn.opalrb.com/opal/1.4.1/base64.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/base64.js" onload="Opal.require('base64')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/base64.js" onload="Opal.require('base64')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/base64.min.js + //cdn.opalrb.com/opal/1.4.1/base64.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/base64.min.js" onload="Opal.require('base64')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/base64.min.js" onload="Opal.require('base64')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/benchmark.js + //cdn.opalrb.com/opal/1.4.1/benchmark.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/benchmark.js" onload="Opal.require('benchmark')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/benchmark.js" onload="Opal.require('benchmark')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/benchmark.min.js + //cdn.opalrb.com/opal/1.4.1/benchmark.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/benchmark.min.js" onload="Opal.require('benchmark')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/benchmark.min.js" onload="Opal.require('benchmark')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/bigdecimal.js + //cdn.opalrb.com/opal/1.4.1/bigdecimal.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/bigdecimal.js" onload="Opal.require('bigdecimal')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/bigdecimal.js" onload="Opal.require('bigdecimal')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/bigdecimal.min.js + //cdn.opalrb.com/opal/1.4.1/bigdecimal.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/bigdecimal.min.js" onload="Opal.require('bigdecimal')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/bigdecimal.min.js" onload="Opal.require('bigdecimal')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/buffer.js + //cdn.opalrb.com/opal/1.4.1/buffer.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/buffer.js" onload="Opal.require('buffer')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/buffer.js" onload="Opal.require('buffer')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/buffer.min.js + //cdn.opalrb.com/opal/1.4.1/buffer.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/buffer.min.js" onload="Opal.require('buffer')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/buffer.min.js" onload="Opal.require('buffer')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/console.js + //cdn.opalrb.com/opal/1.4.1/console.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/console.js" onload="Opal.require('console')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/console.js" onload="Opal.require('console')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/console.min.js + //cdn.opalrb.com/opal/1.4.1/console.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/console.min.js" onload="Opal.require('console')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/console.min.js" onload="Opal.require('console')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/date.js + //cdn.opalrb.com/opal/1.4.1/date.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/date.js" onload="Opal.require('date')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/date.js" onload="Opal.require('date')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/date.min.js + //cdn.opalrb.com/opal/1.4.1/date.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/date.min.js" onload="Opal.require('date')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/date.min.js" onload="Opal.require('date')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/delegate.js + //cdn.opalrb.com/opal/1.4.1/delegate.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/delegate.js" onload="Opal.require('delegate')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/delegate.js" onload="Opal.require('delegate')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/delegate.min.js + //cdn.opalrb.com/opal/1.4.1/delegate.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/delegate.min.js" onload="Opal.require('delegate')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/delegate.min.js" onload="Opal.require('delegate')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/dir.js + //cdn.opalrb.com/opal/1.4.1/dir.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/dir.js" onload="Opal.require('dir')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/dir.js" onload="Opal.require('dir')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/dir.min.js + //cdn.opalrb.com/opal/1.4.1/dir.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/dir.min.js" onload="Opal.require('dir')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/dir.min.js" onload="Opal.require('dir')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/e2mmap.js + //cdn.opalrb.com/opal/1.4.1/e2mmap.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/e2mmap.js" onload="Opal.require('e2mmap')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/e2mmap.js" onload="Opal.require('e2mmap')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/e2mmap.min.js + //cdn.opalrb.com/opal/1.4.1/e2mmap.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/e2mmap.min.js" onload="Opal.require('e2mmap')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/e2mmap.min.js" onload="Opal.require('e2mmap')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/encoding.js + //cdn.opalrb.com/opal/1.4.1/encoding.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/encoding.js" onload="Opal.require('encoding')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/encoding.js" onload="Opal.require('encoding')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/encoding.min.js + //cdn.opalrb.com/opal/1.4.1/encoding.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/encoding.min.js" onload="Opal.require('encoding')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/encoding.min.js" onload="Opal.require('encoding')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/enumerator.js + //cdn.opalrb.com/opal/1.4.1/enumerator.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/enumerator.js" onload="Opal.require('enumerator')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/enumerator.js" onload="Opal.require('enumerator')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/enumerator.min.js + //cdn.opalrb.com/opal/1.4.1/enumerator.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/enumerator.min.js" onload="Opal.require('enumerator')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/enumerator.min.js" onload="Opal.require('enumerator')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/erb.js + //cdn.opalrb.com/opal/1.4.1/erb.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/erb.js" onload="Opal.require('erb')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/erb.js" onload="Opal.require('erb')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/erb.min.js + //cdn.opalrb.com/opal/1.4.1/erb.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/erb.min.js" onload="Opal.require('erb')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/erb.min.js" onload="Opal.require('erb')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/file.js + //cdn.opalrb.com/opal/1.4.1/file.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/file.js" onload="Opal.require('file')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/file.js" onload="Opal.require('file')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/file.min.js + //cdn.opalrb.com/opal/1.4.1/file.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/file.min.js" onload="Opal.require('file')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/file.min.js" onload="Opal.require('file')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/fileutils.js + //cdn.opalrb.com/opal/1.4.1/fileutils.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/fileutils.js" onload="Opal.require('fileutils')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/fileutils.js" onload="Opal.require('fileutils')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/fileutils.min.js + //cdn.opalrb.com/opal/1.4.1/fileutils.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/fileutils.min.js" onload="Opal.require('fileutils')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/fileutils.min.js" onload="Opal.require('fileutils')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/forwardable.js + //cdn.opalrb.com/opal/1.4.1/forwardable.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/forwardable.js" onload="Opal.require('forwardable')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/forwardable.js" onload="Opal.require('forwardable')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/forwardable.min.js + //cdn.opalrb.com/opal/1.4.1/forwardable.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/forwardable.min.js" onload="Opal.require('forwardable')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/forwardable.min.js" onload="Opal.require('forwardable')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/gjs.js + //cdn.opalrb.com/opal/1.4.1/gjs.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/gjs.js" onload="Opal.require('gjs')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/gjs.js" onload="Opal.require('gjs')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/gjs.min.js + //cdn.opalrb.com/opal/1.4.1/gjs.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/gjs.min.js" onload="Opal.require('gjs')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/gjs.min.js" onload="Opal.require('gjs')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/headless_chrome.js + //cdn.opalrb.com/opal/1.4.1/headless_chrome.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/headless_chrome.js" onload="Opal.require('headless_chrome')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/headless_chrome.js" onload="Opal.require('headless_chrome')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/headless_chrome.min.js + //cdn.opalrb.com/opal/1.4.1/headless_chrome.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/headless_chrome.min.js" onload="Opal.require('headless_chrome')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/headless_chrome.min.js" onload="Opal.require('headless_chrome')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/iconv.js + //cdn.opalrb.com/opal/1.4.1/iconv.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/iconv.js" onload="Opal.require('iconv')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/iconv.js" onload="Opal.require('iconv')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/iconv.min.js + //cdn.opalrb.com/opal/1.4.1/iconv.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/iconv.min.js" onload="Opal.require('iconv')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/iconv.min.js" onload="Opal.require('iconv')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/js.js + //cdn.opalrb.com/opal/1.4.1/js.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/js.js" onload="Opal.require('js')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/js.js" onload="Opal.require('js')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/js.min.js + //cdn.opalrb.com/opal/1.4.1/js.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/js.min.js" onload="Opal.require('js')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/js.min.js" onload="Opal.require('js')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/json.js + //cdn.opalrb.com/opal/1.4.1/json.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/json.js" onload="Opal.require('json')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/json.js" onload="Opal.require('json')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/json.min.js + //cdn.opalrb.com/opal/1.4.1/json.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/json.min.js" onload="Opal.require('json')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/json.min.js" onload="Opal.require('json')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/logger.js + //cdn.opalrb.com/opal/1.4.1/logger.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/logger.js" onload="Opal.require('logger')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/logger.js" onload="Opal.require('logger')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/logger.min.js + //cdn.opalrb.com/opal/1.4.1/logger.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/logger.min.js" onload="Opal.require('logger')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/logger.min.js" onload="Opal.require('logger')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/math.js + //cdn.opalrb.com/opal/1.4.1/math.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/math.js" onload="Opal.require('math')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/math.js" onload="Opal.require('math')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/math.min.js + //cdn.opalrb.com/opal/1.4.1/math.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/math.min.js" onload="Opal.require('math')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/math.min.js" onload="Opal.require('math')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/matrix.js + //cdn.opalrb.com/opal/1.4.1/matrix.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/matrix.js" onload="Opal.require('matrix')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/matrix.js" onload="Opal.require('matrix')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/matrix.min.js + //cdn.opalrb.com/opal/1.4.1/matrix.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/matrix.min.js" onload="Opal.require('matrix')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/matrix.min.js" onload="Opal.require('matrix')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/nashorn.js + //cdn.opalrb.com/opal/1.4.1/nashorn.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/nashorn.js" onload="Opal.require('nashorn')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/nashorn.js" onload="Opal.require('nashorn')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/nashorn.min.js + //cdn.opalrb.com/opal/1.4.1/nashorn.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/nashorn.min.js" onload="Opal.require('nashorn')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/nashorn.min.js" onload="Opal.require('nashorn')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/native.js + //cdn.opalrb.com/opal/1.4.1/native.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/native.js" onload="Opal.require('native')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/native.js" onload="Opal.require('native')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/native.min.js + //cdn.opalrb.com/opal/1.4.1/native.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/native.min.js" onload="Opal.require('native')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/native.min.js" onload="Opal.require('native')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/nodejs.js + //cdn.opalrb.com/opal/1.4.1/nodejs.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/nodejs.js" onload="Opal.require('nodejs')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/nodejs.js" onload="Opal.require('nodejs')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/nodejs.min.js + //cdn.opalrb.com/opal/1.4.1/nodejs.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/nodejs.min.js" onload="Opal.require('nodejs')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/nodejs.min.js" onload="Opal.require('nodejs')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/observer.js + //cdn.opalrb.com/opal/1.4.1/observer.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/observer.js" onload="Opal.require('observer')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/observer.js" onload="Opal.require('observer')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/observer.min.js + //cdn.opalrb.com/opal/1.4.1/observer.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/observer.min.js" onload="Opal.require('observer')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/observer.min.js" onload="Opal.require('observer')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/opal-builder.js + //cdn.opalrb.com/opal/1.4.1/opal-builder.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/opal-builder.js" onload="Opal.require('opal-builder')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/opal-builder.js" onload="Opal.require('opal-builder')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/opal-builder.min.js + //cdn.opalrb.com/opal/1.4.1/opal-builder.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/opal-builder.min.js" onload="Opal.require('opal-builder')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/opal-builder.min.js" onload="Opal.require('opal-builder')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/opal-parser.js + //cdn.opalrb.com/opal/1.4.1/opal-parser.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/opal-parser.js" onload="Opal.require('opal-parser')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/opal-parser.js" onload="Opal.require('opal-parser')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/opal-parser.min.js + //cdn.opalrb.com/opal/1.4.1/opal-parser.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/opal-parser.min.js" onload="Opal.require('opal-parser')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/opal-parser.min.js" onload="Opal.require('opal-parser')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/opal-platform.js + //cdn.opalrb.com/opal/1.4.1/opal-platform.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/opal-platform.js" onload="Opal.require('opal-platform')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/opal-platform.js" onload="Opal.require('opal-platform')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/opal-platform.min.js + //cdn.opalrb.com/opal/1.4.1/opal-platform.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/opal-platform.min.js" onload="Opal.require('opal-platform')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/opal-platform.min.js" onload="Opal.require('opal-platform')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/opal-source-maps.js + //cdn.opalrb.com/opal/1.4.1/opal-source-maps.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/opal-source-maps.js" onload="Opal.require('opal-source-maps')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/opal-source-maps.js" onload="Opal.require('opal-source-maps')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/opal-source-maps.min.js + //cdn.opalrb.com/opal/1.4.1/opal-source-maps.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/opal-source-maps.min.js" onload="Opal.require('opal-source-maps')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/opal-source-maps.min.js" onload="Opal.require('opal-source-maps')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/opal.js + //cdn.opalrb.com/opal/1.4.1/opal.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/opal.js"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/opal.js"></script>


    • - //cdn.opalrb.com/opal/1.4.0/opal.min.js + //cdn.opalrb.com/opal/1.4.1/opal.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/opal.min.js"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/opal.min.js"></script>


    • - //cdn.opalrb.com/opal/1.4.0/open-uri.js + //cdn.opalrb.com/opal/1.4.1/open-uri.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/open-uri.js" onload="Opal.require('open-uri')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/open-uri.js" onload="Opal.require('open-uri')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/open-uri.min.js + //cdn.opalrb.com/opal/1.4.1/open-uri.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/open-uri.min.js" onload="Opal.require('open-uri')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/open-uri.min.js" onload="Opal.require('open-uri')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/optparse.js + //cdn.opalrb.com/opal/1.4.1/optparse.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/optparse.js" onload="Opal.require('optparse')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/optparse.js" onload="Opal.require('optparse')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/optparse.min.js + //cdn.opalrb.com/opal/1.4.1/optparse.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/optparse.min.js" onload="Opal.require('optparse')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/optparse.min.js" onload="Opal.require('optparse')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/ostruct.js + //cdn.opalrb.com/opal/1.4.1/ostruct.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/ostruct.js" onload="Opal.require('ostruct')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/ostruct.js" onload="Opal.require('ostruct')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/ostruct.min.js + //cdn.opalrb.com/opal/1.4.1/ostruct.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/ostruct.min.js" onload="Opal.require('ostruct')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/ostruct.min.js" onload="Opal.require('ostruct')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/pathname.js + //cdn.opalrb.com/opal/1.4.1/pathname.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/pathname.js" onload="Opal.require('pathname')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/pathname.js" onload="Opal.require('pathname')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/pathname.min.js + //cdn.opalrb.com/opal/1.4.1/pathname.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/pathname.min.js" onload="Opal.require('pathname')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/pathname.min.js" onload="Opal.require('pathname')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/pp.js + //cdn.opalrb.com/opal/1.4.1/pp.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/pp.js" onload="Opal.require('pp')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/pp.js" onload="Opal.require('pp')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/pp.min.js + //cdn.opalrb.com/opal/1.4.1/pp.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/pp.min.js" onload="Opal.require('pp')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/pp.min.js" onload="Opal.require('pp')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/prettyprint.js + //cdn.opalrb.com/opal/1.4.1/prettyprint.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/prettyprint.js" onload="Opal.require('prettyprint')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/prettyprint.js" onload="Opal.require('prettyprint')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/prettyprint.min.js + //cdn.opalrb.com/opal/1.4.1/prettyprint.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/prettyprint.min.js" onload="Opal.require('prettyprint')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/prettyprint.min.js" onload="Opal.require('prettyprint')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/promise.js + //cdn.opalrb.com/opal/1.4.1/promise.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/promise.js" onload="Opal.require('promise')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/promise.js" onload="Opal.require('promise')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/promise.min.js + //cdn.opalrb.com/opal/1.4.1/promise.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/promise.min.js" onload="Opal.require('promise')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/promise.min.js" onload="Opal.require('promise')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/quickjs.js + //cdn.opalrb.com/opal/1.4.1/quickjs.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/quickjs.js" onload="Opal.require('quickjs')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/quickjs.js" onload="Opal.require('quickjs')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/quickjs.min.js + //cdn.opalrb.com/opal/1.4.1/quickjs.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/quickjs.min.js" onload="Opal.require('quickjs')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/quickjs.min.js" onload="Opal.require('quickjs')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/rbconfig.js + //cdn.opalrb.com/opal/1.4.1/rbconfig.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/rbconfig.js" onload="Opal.require('rbconfig')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/rbconfig.js" onload="Opal.require('rbconfig')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/rbconfig.min.js + //cdn.opalrb.com/opal/1.4.1/rbconfig.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/rbconfig.min.js" onload="Opal.require('rbconfig')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/rbconfig.min.js" onload="Opal.require('rbconfig')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/securerandom.js + //cdn.opalrb.com/opal/1.4.1/securerandom.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/securerandom.js" onload="Opal.require('securerandom')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/securerandom.js" onload="Opal.require('securerandom')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/securerandom.min.js + //cdn.opalrb.com/opal/1.4.1/securerandom.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/securerandom.min.js" onload="Opal.require('securerandom')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/securerandom.min.js" onload="Opal.require('securerandom')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/set.js + //cdn.opalrb.com/opal/1.4.1/set.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/set.js" onload="Opal.require('set')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/set.js" onload="Opal.require('set')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/set.min.js + //cdn.opalrb.com/opal/1.4.1/set.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/set.min.js" onload="Opal.require('set')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/set.min.js" onload="Opal.require('set')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/shellwords.js + //cdn.opalrb.com/opal/1.4.1/shellwords.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/shellwords.js" onload="Opal.require('shellwords')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/shellwords.js" onload="Opal.require('shellwords')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/shellwords.min.js + //cdn.opalrb.com/opal/1.4.1/shellwords.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/shellwords.min.js" onload="Opal.require('shellwords')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/shellwords.min.js" onload="Opal.require('shellwords')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/singleton.js + //cdn.opalrb.com/opal/1.4.1/singleton.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/singleton.js" onload="Opal.require('singleton')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/singleton.js" onload="Opal.require('singleton')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/singleton.min.js + //cdn.opalrb.com/opal/1.4.1/singleton.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/singleton.min.js" onload="Opal.require('singleton')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/singleton.min.js" onload="Opal.require('singleton')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/stringio.js + //cdn.opalrb.com/opal/1.4.1/stringio.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/stringio.js" onload="Opal.require('stringio')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/stringio.js" onload="Opal.require('stringio')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/stringio.min.js + //cdn.opalrb.com/opal/1.4.1/stringio.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/stringio.min.js" onload="Opal.require('stringio')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/stringio.min.js" onload="Opal.require('stringio')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/strscan.js + //cdn.opalrb.com/opal/1.4.1/strscan.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/strscan.js" onload="Opal.require('strscan')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/strscan.js" onload="Opal.require('strscan')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/strscan.min.js + //cdn.opalrb.com/opal/1.4.1/strscan.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/strscan.min.js" onload="Opal.require('strscan')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/strscan.min.js" onload="Opal.require('strscan')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/template.js + //cdn.opalrb.com/opal/1.4.1/template.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/template.js" onload="Opal.require('template')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/template.js" onload="Opal.require('template')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/template.min.js + //cdn.opalrb.com/opal/1.4.1/template.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/template.min.js" onload="Opal.require('template')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/template.min.js" onload="Opal.require('template')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/thread.js + //cdn.opalrb.com/opal/1.4.1/thread.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/thread.js" onload="Opal.require('thread')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/thread.js" onload="Opal.require('thread')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/thread.min.js + //cdn.opalrb.com/opal/1.4.1/thread.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/thread.min.js" onload="Opal.require('thread')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/thread.min.js" onload="Opal.require('thread')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/time.js + //cdn.opalrb.com/opal/1.4.1/time.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/time.js" onload="Opal.require('time')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/time.js" onload="Opal.require('time')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/time.min.js + //cdn.opalrb.com/opal/1.4.1/time.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/time.min.js" onload="Opal.require('time')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/time.min.js" onload="Opal.require('time')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/yaml.js + //cdn.opalrb.com/opal/1.4.1/yaml.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/yaml.js" onload="Opal.require('yaml')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/yaml.js" onload="Opal.require('yaml')"></script>


    • - //cdn.opalrb.com/opal/1.4.0/yaml.min.js + //cdn.opalrb.com/opal/1.4.1/yaml.min.js
      - <script src="//cdn.opalrb.com/opal/1.4.0/yaml.min.js" onload="Opal.require('yaml')"></script> + <script src="//cdn.opalrb.com/opal/1.4.1/yaml.min.js" onload="Opal.require('yaml')"></script>


    • diff --git a/opal/current/js.js b/opal/current/js.js index f575e2d2..18a048d3 100644 --- a/opal/current/js.js +++ b/opal/current/js.js @@ -1,4 +1,4 @@ -Opal.modules["js"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["js"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $def = Opal.def, $truthy = Opal.truthy, $alias = Opal.alias; Opal.add_stubs('insert,<<,global,extend'); diff --git a/opal/current/json.js b/opal/current/json.js index 61c4eff0..fbe5e43f 100644 --- a/opal/current/json.js +++ b/opal/current/json.js @@ -1,4 +1,4 @@ -Opal.modules["json"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["json"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $Object = Opal.Object, $hash2 = Opal.hash2, $eqeqeq = Opal.eqeqeq, $defs = Opal.defs, $truthy = Opal.truthy, $def = Opal.def; Opal.add_stubs('raise,new,push,[]=,-,[],create_id,json_create,const_get,attr_accessor,create_id=,===,parse,generate,from_object,merge,to_json,responds_to?,to_io,write,to_s,to_a,strftime'); diff --git a/opal/current/logger.js b/opal/current/logger.js index ee2913c1..eedb3a63 100644 --- a/opal/current/logger.js +++ b/opal/current/logger.js @@ -1,4 +1,4 @@ -Opal.modules["logger"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["logger"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $module = Opal.module, $const_set = Opal.const_set, $send = Opal.send, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $rb_le = Opal.rb_le, $rb_lt = Opal.rb_lt; Opal.add_stubs('include,to_h,map,constants,const_get,to_s,format,chr,strftime,message_as_string,===,full_message,inspect,attr_reader,attr_accessor,new,key,upcase,raise,add,to_proc,<=,<,write,call,[],now'); diff --git a/opal/current/math.js b/opal/current/math.js index 450b542b..057278e1 100644 --- a/opal/current/math.js +++ b/opal/current/math.js @@ -1,4 +1,4 @@ -Opal.modules["math"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["math"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, nil = Opal.nil; Opal.add_stubs('warn'); diff --git a/opal/current/matrix.js b/opal/current/matrix.js index a84c4802..56c98dd3 100644 --- a/opal/current/matrix.js +++ b/opal/current/matrix.js @@ -1,4 +1,4 @@ -Opal.modules["e2mmap"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["e2mmap"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set, $send2 = Opal.send2, $find_super = Opal.find_super, $truthy = Opal.truthy, $rb_lt = Opal.rb_lt, $defs = Opal.defs, $send = Opal.send, $to_a = Opal.to_a, $def = Opal.def, $alias = Opal.alias, $hash2 = Opal.hash2, $rb_minus = Opal.rb_minus, $gvars = Opal.gvars, $regexp = Opal.regexp, $enc = Opal.enc; Opal.add_stubs('<,bind,module_eval,Raise,class,extend,def_e2message,def_exception,instance_eval,[]=,-,new,const_defined?,remove_const,const_set,e2mm_message,nil?,caller,=~,[],quote,shift,raise,sprintf,Fail,inspect,each,ancestors'); @@ -178,7 +178,7 @@ Opal.modules["e2mmap"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["matrix/eigenvalue_decomposition"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["matrix/eigenvalue_decomposition"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $def = Opal.def, $alias = Opal.alias, $eqeq = Opal.eqeq, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_gt = Opal.rb_gt, $rb_plus = Opal.rb_plus, $rb_divide = Opal.rb_divide, $rb_times = Opal.rb_times, $neqeq = Opal.neqeq, $rb_lt = Opal.rb_lt, $rb_le = Opal.rb_le, $rb_ge = Opal.rb_ge, $to_ary = Opal.to_ary; Opal.add_stubs('is_a?,raise,class,row_count,new,symmetric?,to_a,tridiagonalize,diagonalize,reduce_to_hessenberg,hessenberg_to_real_schur,send,transpose,build_eigenvectors,inverse,dup,each_with_index,==,Complex,[],[]=,-,map,diagonal,eigenvalues,v,d,v_inv,alias_method,private,>,+,-@,abs,/,*,times,downto,sqrt,upto,!=,max,<,<=,hypot,>=,min,cdiv'); @@ -1654,7 +1654,7 @@ Opal.modules["matrix/eigenvalue_decomposition"] = function(Opal) {/* Generated b })($nesting[0], null, $nesting) }; -Opal.modules["matrix/lup_decomposition"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["matrix/lup_decomposition"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $eqeq = Opal.eqeq, $def = Opal.def, $rb_le = Opal.rb_le, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $neqeq = Opal.neqeq, $rb_times = Opal.rb_times, $rb_plus = Opal.rb_plus, $rb_lt = Opal.rb_lt; Opal.add_stubs('include,build,min,>,[],==,<=,new,each_with_index,[]=,-,send,l,u,p,alias_method,attr_reader,times,!=,Raise,*,singular?,is_a?,row_count,column_count,map,to_a,row,upto,+,downto,quo,convert_to_array,size,values_at,elements,raise,class,abs,-@,<'); @@ -2008,7 +2008,7 @@ Opal.modules["matrix/lup_decomposition"] = function(Opal) {/* Generated by Opal })($nesting[0], null, $nesting) }; -Opal.modules["matrix"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["matrix"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $defs = Opal.defs, $send = Opal.send, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $rb_lt = Opal.rb_lt, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $alias = Opal.alias, $neqeq = Opal.neqeq, $rb_times = Opal.rb_times, $rb_plus = Opal.rb_plus, $def = Opal.def, $rb_ge = Opal.rb_ge, $eqeqeq = Opal.eqeqeq, $const_set = Opal.const_set, $hash2 = Opal.hash2, $rb_gt = Opal.rb_gt, $to_ary = Opal.to_ary, $rb_le = Opal.rb_le, $not = Opal.not, $rb_divide = Opal.rb_divide; Opal.add_stubs('require,extend,def_e2message,def_exception,include,autoload,private_class_method,attr_reader,protected,rows,convert_to_array,map!,size,[],each,==,raise,new,transpose,coerce_to_int,<,to_enum,empty,[]=,-,diagonal,scalar,!=,*,coerce_to_matrix,map,send,to_proc,column_count,concat,row_count,each_with_index,+,empty?,method,first,Raise,combine,class,private,fetch,alias_method,elements,-@,>=,times,collect,new_matrix,===,upto,min,inspect,freeze,>,include?,last,pop,end,exclude_end?,<=,to_a,delete_at,square?,determinant,first_minor,**,build,cofactor,!,inject,with_index,all?,conj,singular?,eql?,hash,column_vector,column,apply_through_coercion,/,inverse,I,abs,quo,identity,loop,zero?,>>,eigensystem,+@,determinant_bareiss,find,warn,hstack,rank,round,vstack,real,imag,row,join,to_s,dup,to_ary,message,is_a?,coerce,length,public_send,kind_of?,respond_to?,__send__,coerce_to,count,independent?,collect2,each2,basis,laplace_expansion,sqrt,abs2,magnitude,acos,inner_product,row_vector'); diff --git a/opal/current/nashorn.js b/opal/current/nashorn.js index 2534c3fc..6d34cb29 100644 --- a/opal/current/nashorn.js +++ b/opal/current/nashorn.js @@ -1,4 +1,4 @@ -Opal.modules["nashorn/io"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["nashorn/io"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $send = Opal.send, $gvars = Opal.gvars, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $writer = nil; if ($gvars.stdout == null) $gvars.stdout = nil; if ($gvars.stderr == null) $gvars.stderr = nil; @@ -15,7 +15,7 @@ Opal.modules["nashorn/io"] = function(Opal) {/* Generated by Opal 1.4.0 */ return $writer[$rb_minus($writer["length"], 1)];; }; -Opal.modules["corelib/file"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/file"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $klass = Opal.klass, $const_set = Opal.const_set, $Opal = Opal.Opal, $regexp = Opal.regexp, $rb_plus = Opal.rb_plus, $def = Opal.def, $Kernel = Opal.Kernel, $eqeq = Opal.eqeq, $rb_lt = Opal.rb_lt, $rb_minus = Opal.rb_minus, $range = Opal.range, $send = Opal.send, $alias = Opal.alias; Opal.add_stubs('respond_to?,to_path,coerce_to!,pwd,split,sub,+,unshift,join,home,raise,start_with?,absolute_path,==,<,dirname,-,basename,empty?,rindex,[],length,nil?,gsub,find,=~,map,each_with_index,flatten,reject,to_proc,end_with?'); @@ -306,7 +306,7 @@ Opal.modules["corelib/file"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', $$$('IO'), $nesting) }; -Opal.modules["nashorn/file"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["nashorn/file"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $klass = Opal.klass, $defs = Opal.defs; Opal.add_stubs('require'); @@ -346,7 +346,7 @@ Opal.modules["nashorn/file"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], null); }; -Opal.modules["nashorn"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["nashorn"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module; Opal.add_stubs('require'); diff --git a/opal/current/native.js b/opal/current/native.js index dacf98dd..344e96c0 100644 --- a/opal/current/native.js +++ b/opal/current/native.js @@ -1,4 +1,4 @@ -Opal.modules["native"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["native"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $defs = Opal.defs, $truthy = Opal.truthy, $send = Opal.send, $Kernel = Opal.Kernel, $hash2 = Opal.hash2, $range = Opal.range, $to_a = Opal.to_a, $def = Opal.def, $alias = Opal.alias, $klass = Opal.klass, $rb_minus = Opal.rb_minus, $send2 = Opal.send2, $find_super = Opal.find_super, $eqeqeq = Opal.eqeqeq, $rb_ge = Opal.rb_ge, $gvars = Opal.gvars; Opal.add_stubs('try_convert,native?,respond_to?,to_n,raise,inspect,Native,proc,map!,end_with?,define_method,[],convert,call,to_proc,new,each,native_reader,native_writer,extend,warn,include,is_a?,map,to_a,_Array,method_missing,bind,instance_method,slice,-,length,[]=,enum_for,===,>=,<<,each_pair,method_defined?,_initialize,name,native_module'); diff --git a/opal/current/nodejs.js b/opal/current/nodejs.js index b40ca176..0a54cffa 100644 --- a/opal/current/nodejs.js +++ b/opal/current/nodejs.js @@ -1,4 +1,4 @@ -Opal.modules["nodejs/base"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["nodejs/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set, $eqeq = Opal.eqeq, $lambda = Opal.lambda, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $writer = nil; Opal.add_stubs('==,first,shift,write_proc=,-,read_proc=,tty='); @@ -61,7 +61,7 @@ Opal.modules["nodejs/base"] = function(Opal) {/* Generated by Opal 1.4.0 */ return $writer[$rb_minus($writer["length"], 1)];; }; -Opal.modules["native"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["native"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $defs = Opal.defs, $truthy = Opal.truthy, $send = Opal.send, $Kernel = Opal.Kernel, $hash2 = Opal.hash2, $range = Opal.range, $to_a = Opal.to_a, $def = Opal.def, $alias = Opal.alias, $klass = Opal.klass, $rb_minus = Opal.rb_minus, $send2 = Opal.send2, $find_super = Opal.find_super, $eqeqeq = Opal.eqeqeq, $rb_ge = Opal.rb_ge, $gvars = Opal.gvars; Opal.add_stubs('try_convert,native?,respond_to?,to_n,raise,inspect,Native,proc,map!,end_with?,define_method,[],convert,call,to_proc,new,each,native_reader,native_writer,extend,warn,include,is_a?,map,to_a,_Array,method_missing,bind,instance_method,slice,-,length,[]=,enum_for,===,>=,<<,each_pair,method_defined?,_initialize,name,native_module'); @@ -924,7 +924,7 @@ Opal.modules["native"] = function(Opal) {/* Generated by Opal 1.4.0 */ return ($gvars.$ = ($gvars.global = self.$Native(Opal.global))); }; -Opal.modules["buffer/array"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["buffer/array"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $gvars = Opal.gvars, $defs = Opal.defs, $eqeq = Opal.eqeq, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $truthy = Opal.truthy, $alias = Opal.alias; Opal.add_stubs('include,[],name_for,attr_reader,==,for,to_n,enum_for'); @@ -1036,7 +1036,7 @@ Opal.modules["buffer/array"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], null, $nesting) }; -Opal.modules["buffer/view"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["buffer/view"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $gvars = Opal.gvars, $defs = Opal.defs, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $alias = Opal.alias; Opal.add_stubs('include,!,nil?,[],attr_reader,native?,to_n,name_for'); @@ -1264,7 +1264,7 @@ Opal.modules["buffer/view"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], null, $nesting) }; -Opal.modules["buffer"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["buffer"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $gvars = Opal.gvars, $defs = Opal.defs, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $alias = Opal.alias; Opal.add_stubs('require,include,!,nil?,[],===,native?,new,pack,to_a'); @@ -1344,7 +1344,7 @@ Opal.modules["buffer"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], null, $nesting); }; -Opal.modules["corelib/process/status"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/process/status"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('attr_reader,=='); @@ -1388,7 +1388,7 @@ Opal.modules["corelib/process/status"] = function(Opal) {/* Generated by Opal 1. })('::', $nesting) }; -Opal.modules["nodejs/kernel"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["nodejs/kernel"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $hash2 = Opal.hash2, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $gvars = Opal.gvars, $neqeq = Opal.neqeq, $def = Opal.def; Opal.add_stubs('require,is_a?,first,shift,to_n,merge,empty?,===,[],new,!=,raise,==,encode,to_s'); @@ -1449,7 +1449,7 @@ Opal.modules["nodejs/kernel"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["corelib/file"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/file"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $klass = Opal.klass, $const_set = Opal.const_set, $Opal = Opal.Opal, $regexp = Opal.regexp, $rb_plus = Opal.rb_plus, $def = Opal.def, $Kernel = Opal.Kernel, $eqeq = Opal.eqeq, $rb_lt = Opal.rb_lt, $rb_minus = Opal.rb_minus, $range = Opal.range, $send = Opal.send, $alias = Opal.alias; Opal.add_stubs('respond_to?,to_path,coerce_to!,pwd,split,sub,+,unshift,join,home,raise,start_with?,absolute_path,==,<,dirname,-,basename,empty?,rindex,[],length,nil?,gsub,find,=~,map,each_with_index,flatten,reject,to_proc,end_with?'); @@ -1740,7 +1740,7 @@ Opal.modules["corelib/file"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', $$$('IO'), $nesting) }; -Opal.modules["nodejs/file"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["nodejs/file"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $truthy = Opal.truthy, $const_set = Opal.const_set, $defs = Opal.defs, $alias = Opal.alias, $send = Opal.send, $neqeq = Opal.neqeq, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('require,constants,raise,warn,const_get,new,error,size,respond_to?,path,join,call,start_with?,first,exist?,realpath,!=,close,to_path,pwd,to_str,include?,delete,match?,sub,attr_reader'); @@ -2160,7 +2160,7 @@ Opal.modules["nodejs/file"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($$('File'), null); }; -Opal.modules["nodejs/dir"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["nodejs/dir"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $Opal = Opal.Opal, $alias = Opal.alias; Opal.add_stubs('respond_to?,flat_map,to_path,coerce_to!'); @@ -2245,7 +2245,7 @@ Opal.modules["nodejs/dir"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], null, $nesting) }; -Opal.modules["nodejs/io"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["nodejs/io"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $klass = Opal.klass, $alias = Opal.alias, $def = Opal.def, $defs = Opal.defs; Opal.add_stubs('require,attr_reader,initialize_before_node_io,write,read'); @@ -2302,7 +2302,7 @@ Opal.modules["nodejs/io"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], null, $nesting); }; -Opal.modules["nodejs/argf"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["nodejs/argf"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $const_set = Opal.const_set, $def = Opal.def, $eqeq = Opal.eqeq, $gvars = Opal.gvars, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $rb_gt = Opal.rb_gt, $not = Opal.not, $alias = Opal.alias, $writer = nil; Opal.add_stubs('new,include,filename,==,open,argv,shift,close,file,closed?,enum_for,gets,nil?,+,loop,read,-,length,>,to_a,each,attr_accessor,rewind,!,fileno,eof?,lineno='); @@ -2504,7 +2504,7 @@ Opal.modules["nodejs/argf"] = function(Opal) {/* Generated by Opal 1.4.0 */ return $writer[$rb_minus($writer["length"], 1)];; }; -Opal.modules["nodejs/open-uri"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["nodejs/open-uri"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $defs = Opal.defs; return (function($base) { @@ -2540,7 +2540,7 @@ Opal.modules["nodejs/open-uri"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0]) }; -Opal.modules["corelib/comparable"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/comparable"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $module = Opal.module, $rb_gt = Opal.rb_gt, $rb_lt = Opal.rb_lt, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $def = Opal.def; Opal.add_stubs('>,<,===,raise,class,<=>,equal?'); @@ -2681,7 +2681,7 @@ Opal.modules["corelib/comparable"] = function(Opal) {/* Generated by Opal 1.4.0 })('::') }; -Opal.modules["pathname"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["pathname"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $const_set = Opal.const_set, $regexp = Opal.regexp, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $def = Opal.def, $defs = Opal.defs, $to_ary = Opal.to_ary, $send = Opal.send, $to_a = Opal.to_a, $neqeq = Opal.neqeq, $rb_plus = Opal.rb_plus, $not = Opal.not, $alias = Opal.alias, $module = Opal.module; Opal.add_stubs('require,include,quote,===,to_s,path,respond_to?,to_path,is_a?,nil?,raise,class,==,new,pwd,attr_reader,!,relative?,chop_basename,basename,=~,source,[],rindex,sub,absolute?,expand_path,plus,unshift,length,!=,empty?,first,shift,+,join,dirname,pop,reverse_each,directory?,extname,<=>,nonzero?,proc,casecmp,cleanpath,inspect,include?,fill,map,entries'); @@ -3040,7 +3040,7 @@ Opal.modules["pathname"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["nodejs/pathname"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["nodejs/pathname"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,include,to_str,!,absolute?'); @@ -3077,7 +3077,7 @@ Opal.modules["nodejs/pathname"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], null, $nesting); }; -Opal.modules["nodejs/env"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["nodejs/env"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $const_set = Opal.const_set, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $alias = Opal.alias; Opal.add_stubs('new,to_s,key?,[],raise,to_h,keys,merge'); @@ -3170,7 +3170,7 @@ Opal.modules["nodejs/env"] = function(Opal) {/* Generated by Opal 1.4.0 */ })(Opal.get_singleton_class($$('ENV')), $nesting); }; -Opal.modules["nodejs"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["nodejs"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, nil = Opal.nil; Opal.add_stubs('require'); diff --git a/opal/current/observer.js b/opal/current/observer.js index 1e69a2d0..0dca896e 100644 --- a/opal/current/observer.js +++ b/opal/current/observer.js @@ -1,4 +1,4 @@ -Opal.modules["observer"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["observer"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def; Opal.add_stubs('respond_to?,raise,new,to_s,[]=,-,delete,clear,size,each,send'); diff --git a/opal/current/opal-builder.js b/opal/current/opal-builder.js index 7b5e5fcb..e702ff20 100644 --- a/opal/current/opal-builder.js +++ b/opal/current/opal-builder.js @@ -1,4 +1,4 @@ -Opal.modules["opal/regexp_anchors"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/regexp_anchors"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $const_set = Opal.const_set; Opal.add_stubs('new'); @@ -18,7 +18,7 @@ Opal.modules["opal/regexp_anchors"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting) }; -Opal.modules["corelib/comparable"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/comparable"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $module = Opal.module, $rb_gt = Opal.rb_gt, $rb_lt = Opal.rb_lt, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $def = Opal.def; Opal.add_stubs('>,<,===,raise,class,<=>,equal?'); @@ -159,7 +159,7 @@ Opal.modules["corelib/comparable"] = function(Opal) {/* Generated by Opal 1.4.0 })('::') }; -Opal.modules["pathname"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["pathname"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $const_set = Opal.const_set, $regexp = Opal.regexp, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $def = Opal.def, $defs = Opal.defs, $to_ary = Opal.to_ary, $send = Opal.send, $to_a = Opal.to_a, $neqeq = Opal.neqeq, $rb_plus = Opal.rb_plus, $not = Opal.not, $alias = Opal.alias, $module = Opal.module; Opal.add_stubs('require,include,quote,===,to_s,path,respond_to?,to_path,is_a?,nil?,raise,class,==,new,pwd,attr_reader,!,relative?,chop_basename,basename,=~,source,[],rindex,sub,absolute?,expand_path,plus,unshift,length,!=,empty?,first,shift,+,join,dirname,pop,reverse_each,directory?,extname,<=>,nonzero?,proc,casecmp,cleanpath,inspect,include?,fill,map,entries'); @@ -518,7 +518,7 @@ Opal.modules["pathname"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/hike"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/hike"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $hash2 = Opal.hash2, $def = Opal.def, $truthy = Opal.truthy, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $to_ary = Opal.to_ary, $regexp = Opal.regexp, $rb_plus = Opal.rb_plus; Opal.add_stubs('require,attr_reader,freeze,dup,map,new,to_s,sub,=~,find_in_base_path,find_in_paths,[],directory?,sort,reject,entries,[]=,-,key?,exist?,stat,protected,is_a?,last,pop,split,each,match,join,to_proc,paths_contain?,pattern_for,select,sort_matches,file?,any?,paths,==,length,build_pattern_for,extensions,escape,sort_by,scan,inject,index,+,expand_path,concat,normalize_path,normalize_extension,find,root,private,start_with?,relative?'); @@ -886,7 +886,7 @@ Opal.modules["opal/hike"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/path_reader"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/path_reader"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $regexp = Opal.regexp, $send = Opal.send, $to_a = Opal.to_a, $def = Opal.def, $truthy = Opal.truthy; Opal.add_stubs('require,freeze,quote,paths,new,append_paths,append_extensions,expand,nil?,exist?,open,to_proc,=~,absolute?,find_path,file_finder,extensions,private,Pathname,find,attr_reader'); @@ -985,7 +985,7 @@ Opal.modules["opal/path_reader"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/paths"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/paths"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $defs = Opal.defs, $send = Opal.send, $to_a = Opal.to_a, $def = Opal.def, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus; Opal.add_stubs('expand_path,append_paths,concat,require_paths_for_gem,private,find_by_name,raise,each,runtime_dependencies,+,name,gem_dir,map,require_paths,<<,join,extend,freeze,core_dir,std_dir,reset_paths!'); @@ -1085,7 +1085,7 @@ Opal.modules["opal/paths"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["set"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["set"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $defs = Opal.defs, $hash2 = Opal.hash2, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $send = Opal.send, $def = Opal.def, $eqeq = Opal.eqeq, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_lt = Opal.rb_lt, $rb_le = Opal.rb_le, $alias = Opal.alias, $module = Opal.module; Opal.add_stubs('include,new,nil?,===,raise,each,add,merge,class,respond_to?,subtract,dup,join,to_a,equal?,instance_of?,==,instance_variable_get,size,is_a?,all?,include?,[]=,-,enum_for,[],<<,replace,delete,select,reject,delete_if,to_proc,keep_if,each_key,empty?,eql?,instance_eval,clear,<,<=,any?,!,intersect?,keys'); @@ -1574,7 +1574,7 @@ Opal.modules["set"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', $nesting); }; -Opal.modules["opal/config"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/config"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $truthy = Opal.truthy, $hash2 = Opal.hash2, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $eqeqeq = Opal.eqeqeq, $lambda = Opal.lambda; Opal.add_stubs('require,extend,private,fetch,[]=,config_options,-,define_singleton_method,config,any?,===,raise,inspect,public,each,call,default_config,config_option,new'); @@ -1704,7 +1704,7 @@ Opal.modules["opal/config"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/cache"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/cache"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $truthy = Opal.truthy, $not = Opal.not, $eqeq = Opal.eqeq, $defs = Opal.defs, $klass = Opal.klass, $def = Opal.def, $send = Opal.send, $rb_plus = Opal.rb_plus, $gvars = Opal.gvars, $range = Opal.range; Opal.add_stubs('require,attr_writer,singleton_class,!,find_dir,[],==,new,module_function,respond_to?,fetch,to_proc,+,digest,join,runtime_key,get,set,expand_path,gem_dir,grep,map,sort,size,to_f,mtime,to_s,to_i,hexdigest'); @@ -1789,7 +1789,7 @@ Opal.modules["opal/cache"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/builder"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/builder"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $defs = Opal.defs, $send = Opal.send, $hash2 = Opal.hash2, $Opal = Opal.Opal, $def = Opal.def, $to_a = Opal.to_a, $rb_plus = Opal.rb_plus, $send2 = Opal.send2, $find_super = Opal.find_super, $not = Opal.not, $lambda = Opal.lambda, $eqeqeq = Opal.eqeqeq; Opal.add_stubs('require,include?,processors,<<,each,extensions,each_pair,public_send,new,paths,flatten,map,compiler_options,missing_require_severity,cache,build,to_proc,build_str,source_for,read,nil?,expand_path,expand_ext,processor_for,+,preload,requires,tree_requires,process_require,autoloads,processed,raise,inspect,message,backtrace,dup,stubs,path_reader,prerequired,to_sym,join,append_paths,include,attr_reader,attr_accessor,private,empty?,to_s,pwd,dirname,Pathname,flat_map,required_trees,find,start_with?,glob,relative_path_from,match?,!,merge,[],===,warn,already_processed,stub?,process_requires,expand,basename'); @@ -2141,7 +2141,7 @@ Opal.modules["opal/builder"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["ast/node"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["ast/node"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $alias = Opal.alias, $hash2 = Opal.hash2, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $eqeq = Opal.eqeq, $rb_plus = Opal.rb_plus, $rb_times = Opal.rb_times, $to_a = Opal.to_a; Opal.add_stubs('attr_reader,to_sym,freeze,to_a,assign_properties,hash,class,eql?,type,children,each,instance_variable_set,protected,private,nil?,==,original_dup,send,equal?,respond_to?,to_ast,updated,+,*,fancy_type,is_a?,to_sexp,inspect,map,to_sexp_array,gsub,to_s'); @@ -2346,7 +2346,7 @@ Opal.modules["ast/node"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["ast/processor/mixin"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["ast/processor/mixin"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $send = Opal.send; Opal.add_stubs('nil?,to_ast,type,respond_to?,send,handler_missing,map,to_a,process'); @@ -2405,7 +2405,7 @@ Opal.modules["ast/processor/mixin"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting) }; -Opal.modules["ast/processor"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["ast/processor"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass; Opal.add_stubs('require,include'); @@ -2426,7 +2426,7 @@ Opal.modules["ast/processor"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["ast/sexp"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["ast/sexp"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $def = Opal.def; Opal.add_stubs('new'); @@ -2454,7 +2454,7 @@ Opal.modules["ast/sexp"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["ast"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["ast"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module; Opal.add_stubs('require'); @@ -2469,7 +2469,7 @@ Opal.modules["ast"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0]) }; -Opal.modules["parser/ast/node"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/ast/node"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $alias = Opal.alias, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def; Opal.add_stubs('attr_reader,[],frozen?,dup,node=,-'); @@ -2512,7 +2512,7 @@ Opal.modules["parser/ast/node"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["opal/ast/node"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/ast/node"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('require,attr_reader,[],frozen?,dup,merge!,loc,line,column'); @@ -2578,7 +2578,7 @@ Opal.modules["opal/ast/node"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["racc/parser"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["racc/parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $a, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $const_set = Opal.const_set, $defs = Opal.defs, $gvars = Opal.gvars, $rb_lt = Opal.rb_lt, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $to_ary = Opal.to_ary, $neqeq = Opal.neqeq, $rb_plus = Opal.rb_plus, $eqeq = Opal.eqeq, $rb_ge = Opal.rb_ge, $rb_gt = Opal.rb_gt, $eqeqeq = Opal.eqeqeq, $rb_le = Opal.rb_le, $rb_times = Opal.rb_times; Opal.add_stubs('[],class,<,size,[]=,-,__send__,_racc_setup,raise,_racc_init_sysvars,catch,!=,next_token,racc_read_token,+,==,>=,_racc_evalact,!,>,push,racc_shift,-@,_racc_do_reduce,===,racc_accept,throw,on_error,<=,pop,racc_e_pop,inspect,racc_next_state,*,racc_reduce,sprintf,token_to_str,print,racc_token2str,puts,racc_print_stacks,empty?,each,racc_print_states,each_index'); @@ -3062,7 +3062,7 @@ Opal.modules["racc/parser"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["parser/version"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/version"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set; return (function($base, $parent_nesting) { @@ -3070,11 +3070,11 @@ Opal.modules["parser/version"] = function(Opal) {/* Generated by Opal 1.4.0 */ var $nesting = [self].concat($parent_nesting); - return $const_set($nesting[0], 'VERSION', "3.0.3.2") + return $const_set($nesting[0], 'VERSION', "3.1.0.0") })($nesting[0], $nesting) }; -Opal.modules["racc/parser"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["racc/parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $a, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $const_set = Opal.const_set, $defs = Opal.defs, $gvars = Opal.gvars, $rb_lt = Opal.rb_lt, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $to_ary = Opal.to_ary, $neqeq = Opal.neqeq, $rb_plus = Opal.rb_plus, $eqeq = Opal.eqeq, $rb_ge = Opal.rb_ge, $rb_gt = Opal.rb_gt, $eqeqeq = Opal.eqeqeq, $rb_le = Opal.rb_le, $rb_times = Opal.rb_times; Opal.add_stubs('[],class,<,size,[]=,-,__send__,_racc_setup,raise,_racc_init_sysvars,catch,!=,next_token,racc_read_token,+,==,>=,_racc_evalact,!,>,push,racc_shift,-@,_racc_do_reduce,===,racc_accept,throw,on_error,<=,pop,racc_e_pop,inspect,racc_next_state,*,racc_reduce,sprintf,token_to_str,print,racc_token2str,puts,racc_print_stacks,empty?,each,racc_print_states,each_index'); @@ -3558,7 +3558,7 @@ Opal.modules["racc/parser"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["parser/messages"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/messages"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set, $hash2 = Opal.hash2, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $defs = Opal.defs; Opal.add_stubs('freeze,[],empty?,===,format'); @@ -3588,7 +3588,7 @@ Opal.modules["parser/messages"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["parser/deprecation"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/deprecation"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $truthy = Opal.truthy, $def = Opal.def; Opal.add_stubs('attr_writer,warn'); @@ -3613,7 +3613,7 @@ Opal.modules["parser/deprecation"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting) }; -Opal.modules["parser/ast/processor"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/ast/processor"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $alias = Opal.alias, $to_a = Opal.to_a, $not = Opal.not, $truthy = Opal.truthy, $slice = Opal.slice; Opal.add_stubs('updated,process_all,on_var,!,nil?,process,on_vasgn,on_argument,is_a?,[],children,process_regular_node,warn'); @@ -3889,7 +3889,7 @@ Opal.modules["parser/ast/processor"] = function(Opal) {/* Generated by Opal 1.4. })($nesting[0], $nesting) }; -Opal.modules["parser/meta"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/meta"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set; Opal.add_stubs('freeze,to_set'); @@ -3908,7 +3908,7 @@ Opal.modules["parser/meta"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["parser/source/buffer"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/buffer"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $regexp = Opal.regexp, $enc = Opal.enc, $truthy = Opal.truthy, $gvars = Opal.gvars, $eqeq = Opal.eqeq, $neqeq = Opal.neqeq, $defs = Opal.defs, $hash2 = Opal.hash2, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $not = Opal.not, $rb_plus = Opal.rb_plus, $rb_ge = Opal.rb_ge, $rb_lt = Opal.rb_lt, $send2 = Opal.send2, $find_super = Opal.find_super; Opal.add_stubs('attr_reader,empty?,=~,start_with?,freeze,==,[],!=,nil?,match,find,encoding,recognize_encoding,force_encoding,encode,to_s,source=,-,open,read,raise,frozen?,dup,reencode_string,class,valid_encoding?,name,raw_source=,gsub,!,ascii_only?,line_index_for_position,line_begins,+,to_a,lines,end_with?,<<,each,chomp!,fetch,source_lines,>=,size,<,new,source,source_range,private,index,bsearch,[]=,method_defined?,bsearch_index'); @@ -4225,7 +4225,7 @@ Opal.modules["parser/source/buffer"] = function(Opal) {/* Generated by Opal 1.4. })($nesting[0], $nesting) }; -Opal.modules["parser/source/range"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/range"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $rb_lt = Opal.rb_lt, $def = Opal.def, $hash2 = Opal.hash2, $rb_minus = Opal.rb_minus, $alias = Opal.alias, $neqeq = Opal.neqeq, $to_ary = Opal.to_ary, $rb_plus = Opal.rb_plus, $rb_ge = Opal.rb_ge, $rb_times = Opal.rb_times, $eqeq = Opal.eqeq; Opal.add_stubs('include,attr_reader,<,raise,nil?,freeze,with,-,line_for_position,alias_method,column_for_position,!=,line,last_line,inspect,column,last_column,source_line,slice,begin_pos,end_pos,include?,source,to_a,decompose_position,join,name,+,new,min,max,disjoint?,empty?,>=,!,<=>,contains?,overlaps?,==,*,source_buffer,is_a?,nonzero?,hash'); @@ -4499,7 +4499,7 @@ Opal.modules["parser/source/range"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting) }; -Opal.modules["parser/source/comment"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/comment"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $defs = Opal.defs, $def = Opal.def, $truthy = Opal.truthy; Opal.add_stubs('attr_reader,alias_method,new,associate,associate_locations,associate_by_identity,freeze,source,start_with?,text,==,type,is_a?,location,to_s,expression,inspect'); @@ -4597,7 +4597,7 @@ Opal.modules["parser/source/comment"] = function(Opal) {/* Generated by Opal 1.4 })($nesting[0], $nesting) }; -Opal.modules["parser/source/comment/associator"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/comment/associator"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $const_set = Opal.const_set, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq, $rb_le = Opal.rb_le, $rb_plus = Opal.rb_plus, $not = Opal.not; Opal.add_stubs('attr_accessor,do_associate,private,freeze,[],include?,type,sort_by,compact,children,begin_pos,expression,loc,select,is_a?,new,[]=,-,==,compare_by_identity,advance_comment,advance_through_directives,visit,process_leading_comments,location,<=,line,last_line,each,children_in_source_order,process_trailing_comments,current_comment_before?,associate_and_advance_comment,current_comment_before_end?,current_comment_decorates?,+,!,end_pos,<<,start_with?,text,=~'); @@ -4824,7 +4824,7 @@ Opal.modules["parser/source/comment/associator"] = function(Opal) {/* Generated })($nesting[0], $nesting) }; -Opal.modules["parser/source/rewriter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $gvars = Opal.gvars, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $rb_plus = Opal.rb_plus, $truthy = Opal.truthy, $not = Opal.not, $neqeq = Opal.neqeq, $rb_le = Opal.rb_le, $rb_ge = Opal.rb_ge, $rb_lt = Opal.rb_lt, $hash2 = Opal.hash2, $const_set = Opal.const_set; Opal.add_stubs('attr_reader,warn_of_deprecation,class,new,lambda,puts,render,consumer=,-,append,freeze,begin,end,+,in_transaction?,raise,dup,source,each,sort,begin_pos,range,length,replacement,[]=,private,empty?,clobbered_insertion?,!,allow_multiple_insertions?,raise_clobber_error,record_insertion,adjacent_updates?,find,overlaps?,replace_compatible_with_insertion?,merge_actions!,<<,active_queue,adjacent_insertions?,merge_actions,delete,can_merge?,record_replace,|,active_insertions,active_insertions=,active_clobber,clobbered_position_mask,active_clobber=,size,!=,&,<=,end_pos,adjacent_insertion_mask,select,adjacent?,adjacent_position_mask,>=,==,[],all?,intersect,nil?,max,sort_by,push,join,first,max_by,merge_replacements,replace_actions,disjoint?,<,process,extend'); @@ -5312,7 +5312,7 @@ Opal.modules["parser/source/rewriter"] = function(Opal) {/* Generated by Opal 1. })($nesting[0], $nesting) }; -Opal.modules["parser/source/rewriter/action"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/rewriter/action"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $eqeq = Opal.eqeq; Opal.add_stubs('include,attr_reader,alias_method,freeze,<=>,begin_pos,range,zero?,order,empty?,==,length,inspect'); @@ -5382,7 +5382,7 @@ Opal.modules["parser/source/rewriter/action"] = function(Opal) {/* Generated by })($nesting[0], $nesting) }; -Opal.modules["parser/source/tree_rewriter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/tree_rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $lambda = Opal.lambda, $gvars = Opal.gvars, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $const_set = Opal.const_set, $eqeqeq = Opal.eqeqeq, $range = Opal.range, $to_ary = Opal.to_ary, $hash = Opal.hash, $rb_gt = Opal.rb_gt, $rb_lt = Opal.rb_lt, $slice = Opal.slice; Opal.add_stubs('attr_reader,new,puts,render,consumer=,-,freeze,check_policy_validity,method,adjust,source_range,empty?,==,source_buffer,raise,combine,action_root,merge!,dup,contract,+,begin_pos,range,end_pos,check_range_validity,moved,to_s,replace,wrap,source,each,ordered_replacements,<<,[],length,join,nested_actions,class,name,action_summary,warn_of_deprecation,insert_before,insert_after,extend,protected,private,as_replacements,===,size,first,map,to_range,inspect,values,>,<,trigger_policy,process'); @@ -5721,7 +5721,7 @@ Opal.modules["parser/source/tree_rewriter"] = function(Opal) {/* Generated by Op })($nesting[0], $nesting) }; -Opal.modules["parser/source/tree_rewriter/action"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/tree_rewriter/action"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $not = Opal.not, $rb_plus = Opal.rb_plus, $eqeq = Opal.eqeq, $to_a = Opal.to_a, $rb_gt = Opal.rb_gt, $rb_minus = Opal.rb_minus, $rb_ge = Opal.rb_ge, $eqeqeq = Opal.eqeqeq, $rb_le = Opal.rb_le, $rb_lt = Opal.rb_lt, $neqeq = Opal.neqeq; Opal.add_stubs('attr_reader,freeze,empty?,do_combine,==,<<,begin,concat,flat_map,to_proc,end,!,insert_before,insert_after,replacement,raise,insertion?,with,begin_pos,range,first,children,end_pos,last,new,+,map,moved,protected,swallow,class,merge,place_in_hierarchy,analyse_hierarchy,[],fuse_deletions,combine_children,inject,size,bsearch,bsearch_child_index,>,-,>=,===,<=>,<=,check_fusible,<,shift,pop,compact!,each,call,call_enforcer_for_merge,!=,select'); @@ -6081,7 +6081,7 @@ Opal.modules["parser/source/tree_rewriter/action"] = function(Opal) {/* Generate })($nesting[0], $nesting) }; -Opal.modules["parser/source/map"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2, $eqeq = Opal.eqeq, $range = Opal.range, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus; Opal.add_stubs('attr_reader,freeze,line,alias_method,column,last_line,last_column,with,update_expression,==,class,reduce,map,instance_variables,instance_variable_get,send,inject,to_sym,[],[]=,-,protected,tap,dup,to_proc'); @@ -6218,7 +6218,7 @@ Opal.modules["parser/source/map"] = function(Opal) {/* Generated by Opal 1.4.0 * })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/operator"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/operator"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader'); @@ -6251,7 +6251,7 @@ Opal.modules["parser/source/map/operator"] = function(Opal) {/* Generated by Opa })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/collection"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/collection"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader'); @@ -6285,7 +6285,7 @@ Opal.modules["parser/source/map/collection"] = function(Opal) {/* Generated by O })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/constant"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/constant"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $send = Opal.send; Opal.add_stubs('attr_reader,with,update_operator,protected'); @@ -6337,7 +6337,7 @@ Opal.modules["parser/source/map/constant"] = function(Opal) {/* Generated by Opa })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/variable"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/variable"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $send = Opal.send; Opal.add_stubs('attr_reader,with,update_operator,protected'); @@ -6390,7 +6390,7 @@ Opal.modules["parser/source/map/variable"] = function(Opal) {/* Generated by Opa })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/keyword"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/keyword"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader'); @@ -6426,7 +6426,7 @@ Opal.modules["parser/source/map/keyword"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/definition"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/definition"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader,join'); @@ -6467,7 +6467,7 @@ Opal.modules["parser/source/map/definition"] = function(Opal) {/* Generated by O })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/method_definition"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/method_definition"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $truthy = Opal.truthy, $def = Opal.def; Opal.add_stubs('attr_reader,join'); @@ -6510,7 +6510,7 @@ Opal.modules["parser/source/map/method_definition"] = function(Opal) {/* Generat })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/send"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/send"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $send = Opal.send; Opal.add_stubs('attr_reader,with,update_operator,protected'); @@ -6566,7 +6566,7 @@ Opal.modules["parser/source/map/send"] = function(Opal) {/* Generated by Opal 1. })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/index"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/index"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $send = Opal.send; Opal.add_stubs('attr_reader,with,update_operator,protected'); @@ -6619,7 +6619,7 @@ Opal.modules["parser/source/map/index"] = function(Opal) {/* Generated by Opal 1 })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/condition"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/condition"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader'); @@ -6656,7 +6656,7 @@ Opal.modules["parser/source/map/condition"] = function(Opal) {/* Generated by Op })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/ternary"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/ternary"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader'); @@ -6690,7 +6690,7 @@ Opal.modules["parser/source/map/ternary"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/for"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/for"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader'); @@ -6725,7 +6725,7 @@ Opal.modules["parser/source/map/for"] = function(Opal) {/* Generated by Opal 1.4 })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/rescue_body"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/rescue_body"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader'); @@ -6762,7 +6762,7 @@ Opal.modules["parser/source/map/rescue_body"] = function(Opal) {/* Generated by })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/heredoc"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/heredoc"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader'); @@ -6797,7 +6797,7 @@ Opal.modules["parser/source/map/heredoc"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/objc_kwarg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/objc_kwarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader'); @@ -6832,7 +6832,7 @@ Opal.modules["parser/source/map/objc_kwarg"] = function(Opal) {/* Generated by O })($nesting[0], $nesting) }; -Opal.modules["parser/syntax_error"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/syntax_error"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader,message'); @@ -6859,7 +6859,7 @@ Opal.modules["parser/syntax_error"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting) }; -Opal.modules["parser/clobbering_error"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/clobbering_error"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass; return (function($base, $parent_nesting) { @@ -6871,7 +6871,7 @@ Opal.modules["parser/clobbering_error"] = function(Opal) {/* Generated by Opal 1 })($nesting[0], $nesting) }; -Opal.modules["parser/diagnostic"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/diagnostic"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $truthy = Opal.truthy, $hash2 = Opal.hash2, $def = Opal.def, $eqeq = Opal.eqeq, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $to_ary = Opal.to_ary, $rb_gt = Opal.rb_gt, $rb_times = Opal.rb_times, $send = Opal.send, $to_a = Opal.to_a, $rb_ge = Opal.rb_ge, $not = Opal.not, $neqeq = Opal.neqeq; Opal.add_stubs('freeze,attr_reader,include?,raise,join,inspect,dup,compile,is?,==,line,last_line,+,message,render_line,first_line_only,last_line_only,-,source_buffer,decompose_position,end_pos,>,private,source_line,*,length,each,line_range,intersect,column_range,size,[]=,>=,!,map,name,!=,resize,=~,source,adjust'); @@ -7001,7 +7001,7 @@ Opal.modules["parser/diagnostic"] = function(Opal) {/* Generated by Opal 1.4.0 * })($nesting[0], $nesting) }; -Opal.modules["parser/diagnostic/engine"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/diagnostic/engine"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy; Opal.add_stubs('attr_accessor,ignore?,call,raise?,raise,protected,==,level'); @@ -7070,7 +7070,7 @@ Opal.modules["parser/diagnostic/engine"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting) }; -Opal.modules["parser/static_environment"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/static_environment"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def; Opal.add_stubs('reset,[],push,dup,pop,add,to_sym,include?,declare,declared?,empty?'); @@ -7175,16 +7175,16 @@ Opal.modules["parser/static_environment"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting) }; -Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $const_set = Opal.const_set, $hash = Opal.hash, $def = Opal.def, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $hash2 = Opal.hash2, $rb_plus = Opal.rb_plus, $to_ary = Opal.to_ary, $rb_le = Opal.rb_le, $eqeqeq = Opal.eqeqeq, $rb_gt = Opal.rb_gt, $neqeq = Opal.neqeq, $not = Opal.not, $rb_ge = Opal.rb_ge, $range = Opal.range, $rb_lt = Opal.rb_lt, $gvars = Opal.gvars; - Opal.add_stubs('attr_accessor,private,_lex_trans_keys=,-,_lex_key_spans=,_lex_index_offsets=,_lex_indicies=,_lex_trans_targs=,_lex_trans_actions=,_lex_to_state_actions=,_lex_from_state_actions=,_lex_eof_trans=,lex_start=,lex_error=,lex_en_interp_words=,lex_en_interp_string=,lex_en_plain_words=,lex_en_plain_string=,lex_en_interp_backslash_delimited=,lex_en_plain_backslash_delimited=,lex_en_interp_backslash_delimited_words=,lex_en_plain_backslash_delimited_words=,lex_en_regexp_modifiers=,lex_en_expr_variable=,lex_en_expr_fname=,lex_en_expr_endfn=,lex_en_expr_dot=,lex_en_expr_arg=,lex_en_expr_cmdarg=,lex_en_expr_endarg=,lex_en_expr_mid=,lex_en_expr_beg=,lex_en_expr_labelarg=,lex_en_expr_value=,lex_en_expr_end=,lex_en_leading_dot=,lex_en_line_comment=,lex_en_line_begin=,freeze,ord,union,chars,attr_reader,reset,lex_en_line_begin,class,new,source,==,encoding,unpack,[],lex_en_expr_dot,lex_en_expr_fname,lex_en_expr_value,lex_en_expr_beg,lex_en_expr_mid,lex_en_expr_arg,lex_en_expr_cmdarg,lex_en_expr_end,lex_en_expr_endarg,lex_en_expr_endfn,lex_en_expr_labelarg,lex_en_interp_string,lex_en_interp_words,lex_en_plain_string,fetch,invert,push,count,pop,any?,shift,send,+,size,<=,===,<<,>,!=,emit_comment,tok,literal,flush_string,extend_content,emit,heredoc?,saved_herebody_s=,start_interp_brace,[]=,diagnostic,range,str_s,gsub,version?,nest_and_try_closing,heredoc_e,pop_literal,infer_indent_level,!,eof_codepoint?,words?,extend_space,extend_string,active?,>=,slice,start_with?,chr,munge_escape?,match,regexp?,squiggly_heredoc?,supports_line_continuation_via_slash?,include?,scan,join,=~,to_i,stack_pop,emit_table,push_literal,arg_or_cmdarg,<,emit_do,declared?,nil?,last,in_def_open_args?,getbyte,inspect,end_with?,empty?,index,call,Float,to_f,length,lambda,Rational,Complex,each,encode_escape,%,end_interp_brace_and_try_closing,lexpop,saved_herebody_s,next_state_for_literal,rstrip,&,|,lex_error,protected,force_encoding,process,backslash_delimited?,interpolate?,lex_en_interp_backslash_delimited_words,lex_en_plain_backslash_delimited_words,lex_en_plain_words,lex_en_interp_backslash_delimited,lex_en_plain_backslash_delimited,dedent_level,type,lex_en_regexp_modifiers,upcase'); + Opal.add_stubs('attr_accessor,private,_lex_trans_keys=,-,_lex_key_spans=,_lex_index_offsets=,_lex_indicies=,_lex_trans_targs=,_lex_trans_actions=,_lex_to_state_actions=,_lex_from_state_actions=,_lex_eof_trans=,lex_start=,lex_error=,lex_en_interp_words=,lex_en_interp_string=,lex_en_plain_words=,lex_en_plain_string=,lex_en_interp_backslash_delimited=,lex_en_plain_backslash_delimited=,lex_en_interp_backslash_delimited_words=,lex_en_plain_backslash_delimited_words=,lex_en_regexp_modifiers=,lex_en_expr_variable=,lex_en_expr_fname=,lex_en_expr_endfn=,lex_en_expr_dot=,lex_en_expr_arg=,lex_en_expr_cmdarg=,lex_en_expr_endarg=,lex_en_expr_mid=,lex_en_expr_beg=,lex_en_expr_labelarg=,lex_en_expr_value=,lex_en_expr_end=,lex_en_leading_dot=,lex_en_line_comment=,lex_en_line_begin=,freeze,ord,union,chars,attr_reader,reset,lex_en_line_begin,class,new,source,==,encoding,unpack,[],lex_en_expr_dot,lex_en_expr_fname,lex_en_expr_value,lex_en_expr_beg,lex_en_expr_mid,lex_en_expr_arg,lex_en_expr_cmdarg,lex_en_expr_end,lex_en_expr_endarg,lex_en_expr_endfn,lex_en_expr_labelarg,lex_en_interp_string,lex_en_interp_words,lex_en_plain_string,fetch,invert,push,count,pop,any?,shift,send,+,size,<=,===,<<,>,!=,emit_comment,tok,literal,flush_string,extend_content,emit,heredoc?,saved_herebody_s=,start_interp_brace,[]=,diagnostic,range,str_s,gsub,version?,nest_and_try_closing,heredoc_e,pop_literal,infer_indent_level,!,eof_codepoint?,words?,extend_space,extend_string,active?,>=,slice,start_with?,chr,munge_escape?,match,regexp?,squiggly_heredoc?,supports_line_continuation_via_slash?,include?,scan,join,=~,to_i,stack_pop,emit_table,push_literal,in_argdef,arg_or_cmdarg,<,emit_do,declared?,nil?,last,getbyte,inspect,end_with?,empty?,index,call,Float,to_f,length,lambda,Rational,Complex,each,encode_escape,%,in_kwarg,end_interp_brace_and_try_closing,lexpop,saved_herebody_s,next_state_for_literal,rstrip,&,|,lex_error,protected,force_encoding,process,backslash_delimited?,interpolate?,lex_en_interp_backslash_delimited_words,lex_en_plain_backslash_delimited_words,lex_en_plain_words,lex_en_interp_backslash_delimited,lex_en_plain_backslash_delimited,dedent_level,type,lex_en_regexp_modifiers,upcase'); return (function($base, $super, $parent_nesting) { var self = $klass($base, $super, 'Lexer'); var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $writer = nil, $proto = self.$$prototype; - $proto.source_buffer = $proto.source_pts = $proto.cs = $proto.cmdarg_stack = $proto.cmdarg = $proto.cond_stack = $proto.cond = $proto.dedent_level = $proto.token_queue = $proto.p = $proto.command_start = $proto.herebody_s = $proto.sharp_s = $proto.ts = $proto.te = $proto.top = $proto.stack = $proto.version = $proto.escape_s = $proto.escape = $proto.act = $proto.static_env = $proto.newline_s = $proto.lambda_stack = $proto.paren_nest = $proto.context = $proto.num_digits_s = $proto.num_suffix_s = $proto.num_base = $proto.num_xfrm = $proto.eq_begin_s = $proto.cs_before_block_comment = $proto.in_kwarg = $proto.tokens = $proto.comments = $proto.diagnostics = $proto.literal_stack = nil; + $proto.source_buffer = $proto.source_pts = $proto.cs = $proto.cmdarg_stack = $proto.cmdarg = $proto.cond_stack = $proto.cond = $proto.dedent_level = $proto.token_queue = $proto.p = $proto.command_start = $proto.herebody_s = $proto.sharp_s = $proto.ts = $proto.te = $proto.top = $proto.stack = $proto.version = $proto.escape_s = $proto.escape = $proto.act = $proto.context = $proto.static_env = $proto.newline_s = $proto.lambda_stack = $proto.paren_nest = $proto.num_digits_s = $proto.num_suffix_s = $proto.num_base = $proto.num_xfrm = $proto.eq_begin_s = $proto.cs_before_block_comment = $proto.tokens = $proto.comments = $proto.diagnostics = $proto.literal_stack = nil; (function(self, $parent_nesting) { @@ -7193,7 +7193,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$private("_lex_trans_keys", "_lex_trans_keys="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[0, 0, 101, 101, 103, 103, 105, 105, 110, 110, 69, 69, 78, 78, 68, 68, 95, 95, 95, 95, 0, 26, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 120, 0, 120, 0, 92, 0, 120, 0, 120, 0, 45, 0, 120, 0, 120, 67, 99, 45, 45, 0, 92, 0, 120, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 120, 0, 120, 0, 92, 0, 120, 0, 120, 0, 45, 0, 120, 0, 120, 67, 99, 45, 45, 0, 92, 0, 120, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 58, 58, 58, 46, 46, 10, 10, 0, 127, 58, 58, 60, 60, 62, 62, 10, 10, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 115, 115, 99, 99, 117, 117, 101, 101, 108, 116, 101, 101, 115, 115, 115, 115, 105, 105, 108, 108, 105, 105, 108, 108, 58, 58, 0, 127, 10, 10, 0, 127, 9, 92, 10, 10, 9, 92, 58, 58, 98, 98, 101, 101, 103, 103, 105, 105, 110, 110, 0, 127, 61, 61, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 10, 10, 0, 127, 0, 127, 61, 126, 93, 93, 0, 127, 0, 127, 10, 10, 34, 34, 10, 10, 39, 39, 0, 127, 10, 96, 96, 96, 0, 45, 0, 120, 0, 120, 0, 92, 0, 120, 0, 120, 0, 45, 0, 120, 0, 120, 67, 99, 45, 45, 0, 92, 0, 120, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 58, 58, 58, 0, 127, 43, 57, 48, 57, 48, 57, 48, 57, 48, 57, 115, 115, 99, 99, 117, 117, 101, 101, 99, 99, 117, 117, 101, 101, 0, 127, 58, 58, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 60, 60, 10, 10, 9, 92, 9, 92, 10, 10, 10, 10, 10, 10, 10, 10, 46, 46, 0, 95, 9, 32, 0, 0, 10, 10, 10, 10, 98, 98, 9, 32, 10, 10, 95, 95, 0, 92, 9, 32, 36, 123, 0, 127, 48, 57, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 48, 102, 48, 102, 0, 0, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 92, 36, 123, 0, 127, 48, 57, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 48, 102, 48, 102, 0, 0, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 92, 9, 32, 0, 26, 0, 92, 0, 26, 0, 35, 36, 123, 0, 127, 48, 57, 0, 127, 0, 26, 0, 35, 9, 32, 36, 123, 0, 127, 48, 57, 0, 127, 0, 32, 9, 32, 65, 122, 65, 122, 36, 64, 0, 127, 48, 57, 0, 127, 0, 127, 0, 127, 0, 127, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 115, 115, 38, 38, 42, 42, 64, 64, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 93, 93, 10, 10, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 124, 124, 0, 127, 0, 127, 9, 32, 10, 10, 10, 10, 46, 46, 10, 10, 0, 0, 0, 127, 0, 127, 61, 61, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 93, 93, 10, 10, 124, 124, 0, 126, 0, 127, 0, 61, 9, 61, 9, 61, 0, 0, 9, 61, 9, 62, 46, 46, 46, 46, 58, 58, 9, 32, 0, 0, 0, 127, 0, 0, 9, 124, 0, 0, 10, 10, 10, 10, 0, 0, 9, 61, 58, 58, 60, 60, 62, 62, 9, 32, 10, 10, 0, 127, 102, 102, 101, 101, 110, 110, 104, 104, 0, 127, 0, 127, 0, 127, 0, 0, 0, 127, 10, 10, 0, 123, 9, 32, 10, 10, 10, 10, 10, 10, 0, 0, 111, 111, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 61, 0, 0, 61, 126, 61, 61, 0, 0, 0, 0, 0, 0, 9, 32, 61, 61, 9, 32, 61, 126, 10, 10, 10, 10, 0, 127, 38, 61, 0, 0, 42, 61, 61, 61, 9, 92, 9, 92, 9, 92, 46, 46, 46, 46, 10, 10, 0, 26, 0, 127, 0, 127, 61, 61, 0, 0, 61, 126, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 61, 126, 0, 127, 48, 57, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 61, 61, 62, 0, 127, 48, 57, 0, 127, 124, 124, 64, 64, 60, 61, 0, 0, 10, 34, 10, 39, 96, 96, 62, 62, 61, 126, 61, 62, 0, 122, 0, 0, 0, 127, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 48, 102, 48, 102, 0, 0, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 61, 126, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 92, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 61, 61, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 61, 61, 38, 61, 0, 0, 0, 0, 42, 61, 61, 62, 46, 57, 46, 46, 10, 10, 48, 101, 48, 95, 46, 120, 48, 114, 43, 57, 48, 105, 102, 102, 0, 0, 101, 105, 0, 0, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 105, 114, 102, 102, 0, 0, 101, 105, 115, 115, 0, 0, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 46, 114, 48, 114, 46, 114, 48, 114, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 9, 92, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 0, 9, 92, 9, 92, 9, 92, 46, 46, 46, 46, 10, 10, 46, 46, 10, 10, 10, 61, 10, 10, 10, 101, 10, 110, 10, 100, 10, 10, 0]]; + $writer = [[0, 0, 101, 101, 103, 103, 105, 105, 110, 110, 69, 69, 78, 78, 68, 68, 95, 95, 95, 95, 0, 26, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 120, 0, 120, 0, 92, 0, 120, 0, 120, 0, 45, 0, 120, 0, 120, 67, 99, 45, 45, 0, 92, 0, 120, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 120, 0, 120, 0, 92, 0, 120, 0, 120, 0, 45, 0, 120, 0, 120, 67, 99, 45, 45, 0, 92, 0, 120, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 58, 58, 58, 46, 46, 0, 127, 58, 58, 60, 60, 62, 62, 10, 10, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 115, 115, 99, 99, 117, 117, 101, 101, 108, 116, 101, 101, 115, 115, 115, 115, 105, 105, 108, 108, 105, 105, 108, 108, 58, 58, 0, 127, 10, 10, 0, 127, 9, 92, 10, 10, 9, 92, 58, 58, 98, 98, 101, 101, 103, 103, 105, 105, 110, 110, 0, 127, 61, 61, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 10, 10, 0, 127, 0, 127, 61, 126, 93, 93, 0, 127, 0, 127, 10, 10, 34, 34, 10, 10, 39, 39, 0, 127, 10, 96, 96, 96, 0, 45, 0, 120, 0, 120, 0, 92, 0, 120, 0, 120, 0, 45, 0, 120, 0, 120, 67, 99, 45, 45, 0, 92, 0, 120, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 58, 58, 58, 0, 127, 43, 57, 48, 57, 48, 57, 48, 57, 48, 57, 115, 115, 99, 99, 117, 117, 101, 101, 99, 99, 117, 117, 101, 101, 0, 127, 58, 58, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 60, 60, 10, 10, 9, 92, 9, 92, 10, 10, 10, 10, 10, 10, 10, 10, 46, 46, 0, 95, 9, 32, 0, 0, 10, 10, 10, 10, 98, 98, 9, 32, 10, 10, 95, 95, 0, 92, 9, 32, 36, 123, 0, 127, 48, 57, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 48, 102, 48, 102, 0, 0, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 92, 36, 123, 0, 127, 48, 57, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 48, 102, 48, 102, 0, 0, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 92, 9, 32, 0, 26, 0, 92, 0, 26, 0, 35, 36, 123, 0, 127, 48, 57, 0, 127, 0, 26, 0, 35, 9, 32, 36, 123, 0, 127, 48, 57, 0, 127, 0, 32, 9, 32, 65, 122, 65, 122, 36, 64, 0, 127, 48, 57, 0, 127, 0, 127, 0, 127, 0, 127, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 115, 115, 38, 38, 42, 42, 64, 64, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 93, 93, 10, 10, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 124, 124, 0, 127, 0, 127, 9, 32, 10, 10, 10, 10, 46, 46, 10, 10, 0, 0, 0, 127, 0, 127, 61, 61, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 93, 93, 10, 10, 124, 124, 0, 126, 0, 127, 0, 61, 9, 61, 9, 61, 0, 0, 9, 61, 9, 62, 46, 46, 46, 46, 58, 58, 9, 32, 0, 0, 0, 127, 0, 0, 9, 124, 0, 0, 10, 10, 10, 10, 0, 0, 9, 61, 58, 58, 60, 60, 62, 62, 9, 32, 10, 10, 0, 127, 102, 102, 101, 101, 110, 110, 104, 104, 0, 127, 0, 127, 0, 127, 0, 0, 0, 127, 10, 10, 0, 123, 9, 32, 10, 10, 10, 10, 10, 10, 0, 0, 111, 111, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 61, 0, 0, 61, 126, 61, 61, 0, 0, 0, 0, 0, 0, 9, 32, 61, 61, 9, 32, 61, 126, 10, 10, 10, 10, 0, 127, 38, 61, 0, 0, 42, 61, 61, 61, 9, 92, 9, 92, 9, 92, 46, 46, 46, 46, 10, 10, 0, 26, 0, 127, 0, 127, 61, 61, 0, 0, 61, 126, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 61, 126, 0, 127, 48, 57, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 61, 61, 62, 0, 127, 48, 57, 0, 127, 124, 124, 64, 64, 60, 61, 0, 0, 10, 34, 10, 39, 96, 96, 62, 62, 61, 126, 61, 62, 0, 122, 0, 0, 0, 127, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 48, 102, 48, 102, 0, 0, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 61, 126, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 92, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 61, 61, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 61, 61, 38, 61, 0, 0, 0, 0, 42, 61, 61, 62, 46, 57, 46, 46, 10, 10, 48, 101, 48, 95, 46, 120, 48, 114, 43, 57, 48, 105, 102, 102, 0, 0, 101, 105, 0, 0, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 105, 114, 102, 102, 0, 0, 101, 105, 115, 115, 0, 0, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 46, 114, 48, 114, 46, 114, 48, 114, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 9, 92, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 0, 9, 92, 9, 92, 9, 92, 46, 46, 46, 46, 10, 10, 46, 46, 10, 10, 10, 61, 10, 10, 10, 101, 10, 110, 10, 100, 10, 10, 0]]; $send(self, '_lex_trans_keys=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7203,7 +7203,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$private("_lex_key_spans", "_lex_key_spans="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 128, 128, 128, 128, 46, 121, 121, 93, 121, 121, 46, 121, 121, 33, 1, 93, 121, 103, 128, 128, 128, 128, 46, 121, 121, 93, 121, 121, 46, 121, 121, 33, 1, 93, 121, 103, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 1, 1, 1, 128, 1, 1, 1, 1, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 128, 1, 128, 84, 1, 84, 1, 1, 1, 1, 1, 1, 128, 1, 84, 84, 84, 84, 84, 1, 128, 128, 66, 1, 128, 128, 1, 1, 1, 1, 128, 87, 1, 46, 121, 121, 93, 121, 121, 46, 121, 121, 33, 1, 93, 121, 103, 128, 128, 128, 128, 128, 128, 1, 1, 128, 15, 10, 10, 10, 10, 1, 1, 1, 1, 1, 1, 1, 128, 1, 84, 84, 84, 84, 84, 84, 1, 1, 84, 84, 1, 1, 1, 1, 1, 96, 24, 0, 1, 1, 1, 24, 1, 1, 93, 24, 88, 128, 10, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 55, 55, 0, 55, 55, 0, 46, 93, 93, 0, 0, 93, 55, 55, 0, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 93, 88, 128, 10, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 55, 55, 0, 55, 55, 0, 46, 93, 93, 0, 0, 93, 55, 55, 0, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 93, 24, 27, 93, 27, 36, 88, 128, 10, 128, 27, 36, 24, 88, 128, 10, 128, 33, 24, 58, 58, 29, 128, 10, 128, 128, 128, 128, 24, 0, 66, 1, 1, 128, 128, 10, 1, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 128, 128, 128, 128, 128, 128, 1, 1, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 128, 128, 24, 1, 1, 1, 1, 0, 128, 128, 1, 0, 24, 0, 66, 1, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 1, 1, 1, 127, 128, 62, 53, 53, 0, 53, 54, 1, 1, 1, 24, 0, 128, 0, 116, 0, 1, 1, 0, 53, 1, 1, 1, 24, 1, 128, 1, 1, 1, 1, 128, 128, 128, 0, 128, 1, 124, 24, 1, 1, 1, 0, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 4, 0, 66, 1, 0, 0, 0, 24, 1, 24, 66, 1, 1, 128, 24, 0, 20, 1, 84, 84, 84, 1, 1, 1, 27, 128, 128, 1, 0, 66, 2, 0, 0, 0, 0, 66, 128, 10, 1, 1, 1, 2, 1, 1, 2, 128, 10, 128, 1, 1, 2, 0, 25, 30, 1, 1, 66, 2, 123, 0, 128, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 55, 55, 0, 55, 55, 0, 46, 93, 93, 0, 0, 93, 55, 55, 0, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 128, 128, 128, 0, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 66, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 93, 24, 0, 1, 1, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 1, 0, 24, 0, 66, 1, 1, 128, 128, 10, 1, 24, 0, 0, 20, 2, 12, 1, 1, 54, 48, 75, 67, 15, 58, 1, 0, 5, 0, 0, 67, 67, 67, 67, 10, 1, 0, 5, 1, 0, 0, 67, 67, 67, 67, 67, 67, 67, 67, 69, 67, 69, 67, 1, 2, 1, 66, 1, 2, 128, 128, 0, 128, 128, 128, 128, 128, 128, 0, 1, 0, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 84, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 0, 84, 84, 84, 1, 1, 1, 1, 1, 52, 1, 92, 101, 91, 1]]; + $writer = [[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 128, 128, 128, 128, 46, 121, 121, 93, 121, 121, 46, 121, 121, 33, 1, 93, 121, 103, 128, 128, 128, 128, 46, 121, 121, 93, 121, 121, 46, 121, 121, 33, 1, 93, 121, 103, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 1, 1, 128, 1, 1, 1, 1, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 128, 1, 128, 84, 1, 84, 1, 1, 1, 1, 1, 1, 128, 1, 84, 84, 84, 84, 84, 1, 128, 128, 66, 1, 128, 128, 1, 1, 1, 1, 128, 87, 1, 46, 121, 121, 93, 121, 121, 46, 121, 121, 33, 1, 93, 121, 103, 128, 128, 128, 128, 128, 128, 1, 1, 128, 15, 10, 10, 10, 10, 1, 1, 1, 1, 1, 1, 1, 128, 1, 84, 84, 84, 84, 84, 84, 1, 1, 84, 84, 1, 1, 1, 1, 1, 96, 24, 0, 1, 1, 1, 24, 1, 1, 93, 24, 88, 128, 10, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 55, 55, 0, 55, 55, 0, 46, 93, 93, 0, 0, 93, 55, 55, 0, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 93, 88, 128, 10, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 55, 55, 0, 55, 55, 0, 46, 93, 93, 0, 0, 93, 55, 55, 0, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 93, 24, 27, 93, 27, 36, 88, 128, 10, 128, 27, 36, 24, 88, 128, 10, 128, 33, 24, 58, 58, 29, 128, 10, 128, 128, 128, 128, 24, 0, 66, 1, 1, 128, 128, 10, 1, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 128, 128, 128, 128, 128, 128, 1, 1, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 128, 128, 24, 1, 1, 1, 1, 0, 128, 128, 1, 0, 24, 0, 66, 1, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 1, 1, 1, 127, 128, 62, 53, 53, 0, 53, 54, 1, 1, 1, 24, 0, 128, 0, 116, 0, 1, 1, 0, 53, 1, 1, 1, 24, 1, 128, 1, 1, 1, 1, 128, 128, 128, 0, 128, 1, 124, 24, 1, 1, 1, 0, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 4, 0, 66, 1, 0, 0, 0, 24, 1, 24, 66, 1, 1, 128, 24, 0, 20, 1, 84, 84, 84, 1, 1, 1, 27, 128, 128, 1, 0, 66, 2, 0, 0, 0, 0, 66, 128, 10, 1, 1, 1, 2, 1, 1, 2, 128, 10, 128, 1, 1, 2, 0, 25, 30, 1, 1, 66, 2, 123, 0, 128, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 55, 55, 0, 55, 55, 0, 46, 93, 93, 0, 0, 93, 55, 55, 0, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 128, 128, 128, 0, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 66, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 93, 24, 0, 1, 1, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 1, 0, 24, 0, 66, 1, 1, 128, 128, 10, 1, 24, 0, 0, 20, 2, 12, 1, 1, 54, 48, 75, 67, 15, 58, 1, 0, 5, 0, 0, 67, 67, 67, 67, 10, 1, 0, 5, 1, 0, 0, 67, 67, 67, 67, 67, 67, 67, 67, 69, 67, 69, 67, 1, 2, 1, 66, 1, 2, 128, 128, 0, 128, 128, 128, 128, 128, 128, 0, 1, 0, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 84, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 0, 84, 84, 84, 1, 1, 1, 1, 1, 52, 1, 92, 101, 91, 1]]; $send(self, '_lex_key_spans=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7213,7 +7213,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$private("_lex_index_offsets", "_lex_index_offsets="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 46, 175, 304, 433, 562, 609, 731, 853, 947, 1069, 1191, 1238, 1360, 1482, 1516, 1518, 1612, 1734, 1838, 1967, 2096, 2225, 2354, 2401, 2523, 2645, 2739, 2861, 2983, 3030, 3152, 3274, 3308, 3310, 3404, 3526, 3630, 3759, 3888, 4017, 4146, 4275, 4404, 4533, 4662, 4791, 4920, 5049, 5178, 5307, 5436, 5565, 5567, 5569, 5571, 5573, 5702, 5704, 5706, 5708, 5710, 5839, 5968, 6097, 6226, 6355, 6484, 6613, 6742, 6871, 7000, 7129, 7258, 7387, 7516, 7645, 7774, 7903, 8032, 8034, 8036, 8038, 8040, 8050, 8052, 8054, 8056, 8058, 8060, 8062, 8064, 8066, 8195, 8197, 8326, 8411, 8413, 8498, 8500, 8502, 8504, 8506, 8508, 8510, 8639, 8641, 8726, 8811, 8896, 8981, 9066, 9068, 9197, 9326, 9393, 9395, 9524, 9653, 9655, 9657, 9659, 9661, 9790, 9878, 9880, 9927, 10049, 10171, 10265, 10387, 10509, 10556, 10678, 10800, 10834, 10836, 10930, 11052, 11156, 11285, 11414, 11543, 11672, 11801, 11930, 11932, 11934, 12063, 12079, 12090, 12101, 12112, 12123, 12125, 12127, 12129, 12131, 12133, 12135, 12137, 12266, 12268, 12353, 12438, 12523, 12608, 12693, 12778, 12780, 12782, 12867, 12952, 12954, 12956, 12958, 12960, 12962, 13059, 13084, 13085, 13087, 13089, 13091, 13116, 13118, 13120, 13214, 13239, 13328, 13457, 13468, 13597, 13719, 13720, 13721, 13730, 13739, 13740, 13741, 13835, 13836, 13837, 13838, 13932, 13934, 13935, 13936, 13937, 14031, 14087, 14143, 14144, 14200, 14256, 14257, 14304, 14398, 14492, 14493, 14494, 14588, 14644, 14700, 14701, 14748, 14750, 14844, 14921, 14977, 15033, 15089, 15090, 15217, 15344, 15345, 15472, 15473, 15600, 15727, 15854, 15981, 15982, 16109, 16236, 16363, 16490, 16617, 16744, 16745, 16746, 16802, 16803, 16897, 16986, 17115, 17126, 17255, 17377, 17378, 17379, 17388, 17397, 17398, 17399, 17493, 17494, 17495, 17496, 17590, 17592, 17593, 17594, 17595, 17689, 17745, 17801, 17802, 17858, 17914, 17915, 17962, 18056, 18150, 18151, 18152, 18246, 18302, 18358, 18359, 18406, 18408, 18502, 18579, 18635, 18691, 18747, 18748, 18875, 19002, 19003, 19130, 19131, 19258, 19385, 19512, 19639, 19640, 19767, 19894, 20021, 20148, 20275, 20402, 20403, 20404, 20460, 20461, 20555, 20580, 20608, 20702, 20730, 20767, 20856, 20985, 20996, 21125, 21153, 21190, 21215, 21304, 21433, 21444, 21573, 21607, 21632, 21691, 21750, 21780, 21909, 21920, 22049, 22178, 22307, 22436, 22461, 22462, 22529, 22531, 22533, 22662, 22791, 22802, 22804, 22806, 22808, 22810, 22812, 22815, 22817, 22884, 22886, 22889, 23018, 23147, 23276, 23405, 23534, 23663, 23792, 23794, 23796, 23925, 24054, 24183, 24312, 24441, 24570, 24699, 24828, 24957, 25086, 25215, 25344, 25473, 25602, 25731, 25860, 25989, 26118, 26247, 26376, 26505, 26634, 26763, 26892, 27021, 27150, 27279, 27408, 27537, 27666, 27795, 27924, 28053, 28182, 28311, 28440, 28569, 28698, 28827, 28956, 29085, 29214, 29343, 29472, 29601, 29730, 29859, 29988, 30117, 30246, 30375, 30504, 30633, 30762, 30891, 31020, 31149, 31278, 31407, 31536, 31665, 31794, 31923, 32052, 32181, 32310, 32439, 32568, 32697, 32826, 32955, 33084, 33213, 33342, 33471, 33600, 33729, 33858, 33987, 34116, 34245, 34374, 34503, 34505, 34634, 34763, 34788, 34790, 34792, 34794, 34796, 34797, 34926, 35055, 35057, 35058, 35083, 35084, 35151, 35153, 35155, 35157, 35159, 35161, 35164, 35166, 35233, 35235, 35238, 35367, 35369, 35371, 35373, 35501, 35630, 35693, 35747, 35801, 35802, 35856, 35911, 35913, 35915, 35917, 35942, 35943, 36072, 36073, 36190, 36191, 36193, 36195, 36196, 36250, 36252, 36254, 36256, 36281, 36283, 36412, 36414, 36416, 36418, 36420, 36549, 36678, 36807, 36808, 36937, 36939, 37064, 37089, 37091, 37093, 37095, 37096, 37098, 37099, 37228, 37357, 37382, 37383, 37385, 37387, 37389, 37390, 37519, 37648, 37777, 37906, 38035, 38164, 38293, 38422, 38551, 38680, 38809, 38938, 39067, 39196, 39325, 39454, 39583, 39712, 39717, 39718, 39785, 39787, 39788, 39789, 39790, 39815, 39817, 39842, 39909, 39911, 39913, 40042, 40067, 40068, 40089, 40091, 40176, 40261, 40346, 40348, 40350, 40352, 40380, 40509, 40638, 40640, 40641, 40708, 40711, 40712, 40713, 40714, 40715, 40782, 40911, 40922, 40924, 40926, 40928, 40931, 40933, 40935, 40938, 41067, 41078, 41207, 41209, 41211, 41214, 41215, 41241, 41272, 41274, 41276, 41343, 41346, 41470, 41471, 41600, 41729, 41851, 41852, 41853, 41862, 41871, 41872, 41873, 41967, 41968, 41969, 41970, 42064, 42066, 42067, 42068, 42069, 42163, 42219, 42275, 42276, 42332, 42388, 42389, 42436, 42530, 42624, 42625, 42626, 42720, 42776, 42832, 42833, 42880, 42882, 42976, 43053, 43109, 43165, 43221, 43222, 43349, 43476, 43477, 43604, 43605, 43732, 43859, 43986, 44113, 44114, 44241, 44368, 44495, 44622, 44749, 44876, 45003, 45130, 45257, 45384, 45511, 45638, 45765, 45892, 46019, 46146, 46273, 46400, 46527, 46528, 46529, 46585, 46586, 46715, 46844, 46973, 46974, 46976, 46977, 47106, 47235, 47364, 47493, 47622, 47751, 47880, 48009, 48138, 48267, 48396, 48525, 48654, 48783, 48912, 49041, 49170, 49299, 49428, 49557, 49686, 49815, 49944, 50073, 50202, 50331, 50460, 50589, 50718, 50847, 50976, 51105, 51234, 51363, 51492, 51621, 51750, 51879, 52008, 52137, 52266, 52395, 52524, 52653, 52782, 52911, 53040, 53169, 53298, 53427, 53556, 53685, 53814, 53943, 54072, 54201, 54330, 54459, 54588, 54717, 54846, 54913, 55042, 55171, 55300, 55429, 55558, 55687, 55816, 55945, 56074, 56203, 56332, 56461, 56590, 56719, 56848, 56977, 57106, 57235, 57364, 57493, 57622, 57751, 57880, 58009, 58138, 58139, 58204, 58298, 58323, 58324, 58326, 58328, 58330, 58331, 58460, 58589, 58614, 58615, 58617, 58619, 58621, 58622, 58751, 58880, 58882, 58883, 58908, 58909, 58976, 58978, 58980, 59109, 59238, 59249, 59251, 59276, 59277, 59278, 59299, 59302, 59315, 59317, 59319, 59374, 59423, 59499, 59567, 59583, 59642, 59644, 59645, 59651, 59652, 59653, 59721, 59789, 59857, 59925, 59936, 59938, 59939, 59945, 59947, 59948, 59949, 60017, 60085, 60153, 60221, 60289, 60357, 60425, 60493, 60563, 60631, 60701, 60769, 60771, 60774, 60776, 60843, 60845, 60848, 60977, 61106, 61107, 61236, 61365, 61494, 61623, 61752, 61881, 61882, 61884, 61885, 61886, 62015, 62144, 62273, 62402, 62531, 62660, 62789, 62918, 63047, 63176, 63305, 63434, 63563, 63692, 63821, 63950, 64079, 64208, 64337, 64466, 64595, 64724, 64853, 64982, 65111, 65240, 65369, 65498, 65627, 65756, 65885, 66014, 66143, 66272, 66401, 66530, 66659, 66744, 66873, 67002, 67131, 67260, 67389, 67518, 67647, 67776, 67905, 68034, 68163, 68292, 68421, 68550, 68679, 68808, 68937, 69066, 69195, 69324, 69453, 69582, 69711, 69840, 69969, 70098, 70227, 70356, 70485, 70614, 70743, 70872, 71001, 71130, 71259, 71388, 71517, 71646, 71775, 71904, 72033, 72162, 72291, 72420, 72549, 72678, 72807, 72936, 73065, 73194, 73323, 73452, 73581, 73710, 73839, 73968, 74097, 74226, 74355, 74484, 74613, 74742, 74871, 75000, 75129, 75130, 75195, 75196, 75281, 75366, 75451, 75453, 75455, 75457, 75459, 75461, 75514, 75516, 75609, 75711, 75803]]; + $writer = [[0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 46, 175, 304, 433, 562, 609, 731, 853, 947, 1069, 1191, 1238, 1360, 1482, 1516, 1518, 1612, 1734, 1838, 1967, 2096, 2225, 2354, 2401, 2523, 2645, 2739, 2861, 2983, 3030, 3152, 3274, 3308, 3310, 3404, 3526, 3630, 3759, 3888, 4017, 4146, 4275, 4404, 4533, 4662, 4791, 4920, 5049, 5178, 5307, 5436, 5565, 5567, 5569, 5571, 5700, 5702, 5704, 5706, 5708, 5837, 5966, 6095, 6224, 6353, 6482, 6611, 6740, 6869, 6998, 7127, 7256, 7385, 7514, 7643, 7772, 7901, 8030, 8032, 8034, 8036, 8038, 8048, 8050, 8052, 8054, 8056, 8058, 8060, 8062, 8064, 8193, 8195, 8324, 8409, 8411, 8496, 8498, 8500, 8502, 8504, 8506, 8508, 8637, 8639, 8724, 8809, 8894, 8979, 9064, 9066, 9195, 9324, 9391, 9393, 9522, 9651, 9653, 9655, 9657, 9659, 9788, 9876, 9878, 9925, 10047, 10169, 10263, 10385, 10507, 10554, 10676, 10798, 10832, 10834, 10928, 11050, 11154, 11283, 11412, 11541, 11670, 11799, 11928, 11930, 11932, 12061, 12077, 12088, 12099, 12110, 12121, 12123, 12125, 12127, 12129, 12131, 12133, 12135, 12264, 12266, 12351, 12436, 12521, 12606, 12691, 12776, 12778, 12780, 12865, 12950, 12952, 12954, 12956, 12958, 12960, 13057, 13082, 13083, 13085, 13087, 13089, 13114, 13116, 13118, 13212, 13237, 13326, 13455, 13466, 13595, 13717, 13718, 13719, 13728, 13737, 13738, 13739, 13833, 13834, 13835, 13836, 13930, 13932, 13933, 13934, 13935, 14029, 14085, 14141, 14142, 14198, 14254, 14255, 14302, 14396, 14490, 14491, 14492, 14586, 14642, 14698, 14699, 14746, 14748, 14842, 14919, 14975, 15031, 15087, 15088, 15215, 15342, 15343, 15470, 15471, 15598, 15725, 15852, 15979, 15980, 16107, 16234, 16361, 16488, 16615, 16742, 16743, 16744, 16800, 16801, 16895, 16984, 17113, 17124, 17253, 17375, 17376, 17377, 17386, 17395, 17396, 17397, 17491, 17492, 17493, 17494, 17588, 17590, 17591, 17592, 17593, 17687, 17743, 17799, 17800, 17856, 17912, 17913, 17960, 18054, 18148, 18149, 18150, 18244, 18300, 18356, 18357, 18404, 18406, 18500, 18577, 18633, 18689, 18745, 18746, 18873, 19000, 19001, 19128, 19129, 19256, 19383, 19510, 19637, 19638, 19765, 19892, 20019, 20146, 20273, 20400, 20401, 20402, 20458, 20459, 20553, 20578, 20606, 20700, 20728, 20765, 20854, 20983, 20994, 21123, 21151, 21188, 21213, 21302, 21431, 21442, 21571, 21605, 21630, 21689, 21748, 21778, 21907, 21918, 22047, 22176, 22305, 22434, 22459, 22460, 22527, 22529, 22531, 22660, 22789, 22800, 22802, 22804, 22806, 22808, 22810, 22813, 22815, 22882, 22884, 22887, 23016, 23145, 23274, 23403, 23532, 23661, 23790, 23792, 23794, 23923, 24052, 24181, 24310, 24439, 24568, 24697, 24826, 24955, 25084, 25213, 25342, 25471, 25600, 25729, 25858, 25987, 26116, 26245, 26374, 26503, 26632, 26761, 26890, 27019, 27148, 27277, 27406, 27535, 27664, 27793, 27922, 28051, 28180, 28309, 28438, 28567, 28696, 28825, 28954, 29083, 29212, 29341, 29470, 29599, 29728, 29857, 29986, 30115, 30244, 30373, 30502, 30631, 30760, 30889, 31018, 31147, 31276, 31405, 31534, 31663, 31792, 31921, 32050, 32179, 32308, 32437, 32566, 32695, 32824, 32953, 33082, 33211, 33340, 33469, 33598, 33727, 33856, 33985, 34114, 34243, 34372, 34501, 34503, 34632, 34761, 34786, 34788, 34790, 34792, 34794, 34795, 34924, 35053, 35055, 35056, 35081, 35082, 35149, 35151, 35153, 35155, 35157, 35159, 35162, 35164, 35231, 35233, 35236, 35365, 35367, 35369, 35371, 35499, 35628, 35691, 35745, 35799, 35800, 35854, 35909, 35911, 35913, 35915, 35940, 35941, 36070, 36071, 36188, 36189, 36191, 36193, 36194, 36248, 36250, 36252, 36254, 36279, 36281, 36410, 36412, 36414, 36416, 36418, 36547, 36676, 36805, 36806, 36935, 36937, 37062, 37087, 37089, 37091, 37093, 37094, 37096, 37097, 37226, 37355, 37380, 37381, 37383, 37385, 37387, 37388, 37517, 37646, 37775, 37904, 38033, 38162, 38291, 38420, 38549, 38678, 38807, 38936, 39065, 39194, 39323, 39452, 39581, 39710, 39715, 39716, 39783, 39785, 39786, 39787, 39788, 39813, 39815, 39840, 39907, 39909, 39911, 40040, 40065, 40066, 40087, 40089, 40174, 40259, 40344, 40346, 40348, 40350, 40378, 40507, 40636, 40638, 40639, 40706, 40709, 40710, 40711, 40712, 40713, 40780, 40909, 40920, 40922, 40924, 40926, 40929, 40931, 40933, 40936, 41065, 41076, 41205, 41207, 41209, 41212, 41213, 41239, 41270, 41272, 41274, 41341, 41344, 41468, 41469, 41598, 41727, 41849, 41850, 41851, 41860, 41869, 41870, 41871, 41965, 41966, 41967, 41968, 42062, 42064, 42065, 42066, 42067, 42161, 42217, 42273, 42274, 42330, 42386, 42387, 42434, 42528, 42622, 42623, 42624, 42718, 42774, 42830, 42831, 42878, 42880, 42974, 43051, 43107, 43163, 43219, 43220, 43347, 43474, 43475, 43602, 43603, 43730, 43857, 43984, 44111, 44112, 44239, 44366, 44493, 44620, 44747, 44874, 45001, 45128, 45255, 45382, 45509, 45636, 45763, 45890, 46017, 46144, 46271, 46398, 46525, 46526, 46527, 46583, 46584, 46713, 46842, 46971, 46972, 46974, 46975, 47104, 47233, 47362, 47491, 47620, 47749, 47878, 48007, 48136, 48265, 48394, 48523, 48652, 48781, 48910, 49039, 49168, 49297, 49426, 49555, 49684, 49813, 49942, 50071, 50200, 50329, 50458, 50587, 50716, 50845, 50974, 51103, 51232, 51361, 51490, 51619, 51748, 51877, 52006, 52135, 52264, 52393, 52522, 52651, 52780, 52909, 53038, 53167, 53296, 53425, 53554, 53683, 53812, 53941, 54070, 54199, 54328, 54457, 54586, 54715, 54844, 54911, 55040, 55169, 55298, 55427, 55556, 55685, 55814, 55943, 56072, 56201, 56330, 56459, 56588, 56717, 56846, 56975, 57104, 57233, 57362, 57491, 57620, 57749, 57878, 58007, 58136, 58137, 58202, 58296, 58321, 58322, 58324, 58326, 58328, 58329, 58458, 58587, 58612, 58613, 58615, 58617, 58619, 58620, 58749, 58878, 58880, 58881, 58906, 58907, 58974, 58976, 58978, 59107, 59236, 59247, 59249, 59274, 59275, 59276, 59297, 59300, 59313, 59315, 59317, 59372, 59421, 59497, 59565, 59581, 59640, 59642, 59643, 59649, 59650, 59651, 59719, 59787, 59855, 59923, 59934, 59936, 59937, 59943, 59945, 59946, 59947, 60015, 60083, 60151, 60219, 60287, 60355, 60423, 60491, 60561, 60629, 60699, 60767, 60769, 60772, 60774, 60841, 60843, 60846, 60975, 61104, 61105, 61234, 61363, 61492, 61621, 61750, 61879, 61880, 61882, 61883, 61884, 62013, 62142, 62271, 62400, 62529, 62658, 62787, 62916, 63045, 63174, 63303, 63432, 63561, 63690, 63819, 63948, 64077, 64206, 64335, 64464, 64593, 64722, 64851, 64980, 65109, 65238, 65367, 65496, 65625, 65754, 65883, 66012, 66141, 66270, 66399, 66528, 66657, 66742, 66871, 67000, 67129, 67258, 67387, 67516, 67645, 67774, 67903, 68032, 68161, 68290, 68419, 68548, 68677, 68806, 68935, 69064, 69193, 69322, 69451, 69580, 69709, 69838, 69967, 70096, 70225, 70354, 70483, 70612, 70741, 70870, 70999, 71128, 71257, 71386, 71515, 71644, 71773, 71902, 72031, 72160, 72289, 72418, 72547, 72676, 72805, 72934, 73063, 73192, 73321, 73450, 73579, 73708, 73837, 73966, 74095, 74224, 74353, 74482, 74611, 74740, 74869, 74998, 75127, 75128, 75193, 75194, 75279, 75364, 75449, 75451, 75453, 75455, 75457, 75459, 75512, 75514, 75607, 75709, 75801]]; $send(self, '_lex_index_offsets=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7223,7 +7223,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$private("_lex_indicies", "_lex_indicies="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 12, 14, 12, 14, 14, 12, 12, 14, 14, 14, 15, 14, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 14, 12, 12, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 14, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 14, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 12, 12, 12, 12, 12, 12, 18, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 19, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 20, 19, 22, 22, 22, 19, 22, 22, 22, 22, 22, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 24, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 25, 22, 19, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 25, 22, 19, 27, 27, 27, 19, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 19, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 29, 27, 19, 30, 30, 30, 19, 30, 30, 30, 30, 30, 31, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 19, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 32, 30, 19, 30, 30, 30, 19, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 19, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 32, 30, 19, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 33, 20, 19, 34, 34, 34, 19, 34, 34, 34, 34, 34, 35, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 19, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 36, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 37, 34, 34, 34, 34, 34, 34, 38, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 39, 34, 19, 34, 34, 34, 19, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 19, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 39, 34, 40, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 41, 19, 41, 19, 19, 42, 42, 42, 19, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 19, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 44, 42, 19, 22, 22, 22, 19, 22, 22, 22, 22, 22, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 25, 22, 19, 45, 45, 45, 19, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 19, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 45, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 49, 49, 47, 49, 47, 49, 49, 47, 47, 49, 49, 49, 50, 49, 49, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 49, 49, 49, 49, 49, 49, 49, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 49, 47, 47, 48, 49, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 49, 47, 48, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 47, 47, 47, 47, 47, 47, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 47, 47, 47, 47, 49, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 47, 47, 47, 47, 47, 49, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 47, 47, 47, 47, 47, 47, 53, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 48, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 47, 48, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 47, 47, 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 48, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 47, 48, 54, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 55, 54, 57, 57, 57, 54, 57, 57, 57, 57, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 59, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 60, 57, 54, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 61, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 60, 57, 54, 62, 62, 62, 54, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 54, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 54, 65, 65, 65, 54, 65, 65, 65, 65, 65, 66, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 54, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 67, 65, 54, 65, 65, 65, 54, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 54, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 67, 65, 54, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 68, 55, 54, 69, 69, 69, 54, 69, 69, 69, 69, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 54, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 71, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 72, 69, 69, 69, 69, 69, 69, 73, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 74, 69, 54, 69, 69, 69, 54, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 54, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 74, 69, 75, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 76, 54, 76, 54, 54, 77, 77, 77, 54, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 54, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 79, 77, 54, 57, 57, 57, 54, 57, 57, 57, 57, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 61, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 60, 57, 54, 80, 80, 80, 54, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 54, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 80, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 84, 84, 82, 84, 82, 84, 84, 82, 82, 84, 84, 84, 85, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 84, 84, 84, 84, 84, 84, 84, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 84, 82, 82, 83, 84, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 84, 82, 83, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 82, 82, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 84, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 82, 84, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 82, 82, 82, 82, 82, 82, 88, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 83, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 82, 83, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 83, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 82, 83, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 91, 89, 91, 89, 91, 91, 89, 89, 91, 91, 91, 92, 91, 91, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 91, 91, 91, 91, 91, 91, 91, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 91, 89, 89, 90, 91, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 91, 89, 90, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 89, 89, 89, 89, 89, 89, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 89, 89, 89, 89, 91, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 89, 89, 89, 89, 89, 91, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 89, 89, 89, 89, 89, 89, 95, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 90, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 89, 90, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 89, 89, 89, 89, 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 90, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 89, 90, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 97, 97, 98, 97, 98, 97, 97, 98, 98, 97, 97, 97, 99, 97, 97, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 97, 97, 97, 97, 97, 97, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 98, 97, 98, 98, 96, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 98, 98, 98, 97, 98, 96, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 98, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 97, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 102, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 98, 98, 98, 98, 98, 98, 98, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 98, 98, 98, 98, 103, 98, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 98, 98, 98, 98, 98, 103, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104, 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104, 104, 105, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104, 104, 104, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 110, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 111, 108, 108, 108, 108, 110, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 108, 108, 108, 108, 109, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 108, 108, 108, 108, 108, 109, 111, 108, 108, 112, 113, 108, 114, 108, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 115, 115, 115, 115, 117, 115, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 115, 115, 115, 115, 116, 115, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 115, 115, 115, 115, 115, 116, 118, 115, 120, 119, 121, 119, 122, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 124, 119, 124, 124, 124, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 124, 119, 119, 119, 119, 125, 126, 119, 127, 119, 128, 129, 130, 131, 132, 125, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 133, 119, 134, 130, 135, 136, 119, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 137, 138, 130, 139, 123, 119, 123, 123, 123, 123, 123, 123, 123, 123, 140, 123, 123, 123, 123, 123, 123, 123, 123, 141, 123, 123, 142, 123, 143, 123, 123, 123, 144, 145, 119, 139, 119, 123, 119, 119, 119, 119, 119, 119, 119, 119, 119, 146, 119, 146, 146, 146, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 146, 119, 119, 119, 119, 147, 148, 119, 149, 119, 150, 151, 152, 153, 154, 147, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 155, 119, 156, 152, 157, 158, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 159, 160, 152, 121, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 161, 116, 116, 116, 116, 116, 116, 116, 116, 162, 116, 116, 163, 116, 164, 116, 116, 116, 165, 166, 119, 121, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 167, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 168, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 169, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 170, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 171, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 167, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 172, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 173, 116, 116, 116, 116, 116, 116, 116, 174, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 175, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 176, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 167, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 177, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 167, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 178, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 179, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 171, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 181, 180, 182, 180, 183, 180, 152, 180, 184, 180, 180, 180, 180, 180, 180, 180, 185, 180, 186, 180, 187, 180, 152, 180, 188, 180, 152, 180, 189, 180, 183, 180, 191, 190, 192, 192, 192, 192, 192, 192, 192, 192, 192, 194, 192, 194, 194, 194, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 194, 192, 192, 192, 192, 192, 192, 192, 195, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 192, 196, 192, 192, 193, 192, 193, 193, 193, 197, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 192, 192, 192, 192, 192, 193, 198, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 200, 192, 200, 200, 200, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 200, 192, 192, 192, 192, 192, 192, 192, 201, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 192, 202, 192, 192, 199, 192, 199, 199, 199, 203, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 192, 192, 192, 192, 192, 199, 205, 204, 205, 205, 205, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 205, 204, 204, 204, 204, 204, 204, 204, 206, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 207, 204, 208, 204, 209, 204, 209, 209, 209, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 209, 204, 204, 204, 204, 204, 204, 204, 210, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 211, 204, 212, 213, 215, 214, 216, 214, 217, 214, 218, 214, 219, 214, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 221, 221, 221, 221, 221, 221, 221, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 221, 221, 221, 221, 221, 221, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 221, 221, 221, 221, 221, 220, 222, 212, 223, 224, 223, 223, 223, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 223, 212, 212, 225, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 227, 212, 228, 229, 228, 228, 228, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 228, 212, 212, 230, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 232, 212, 234, 235, 234, 234, 234, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 234, 233, 233, 236, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 238, 233, 240, 241, 240, 240, 240, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, 239, 239, 242, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 244, 239, 240, 245, 240, 240, 240, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, 239, 239, 242, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 244, 239, 224, 212, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 248, 248, 246, 248, 246, 248, 248, 246, 246, 248, 248, 248, 249, 248, 248, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 248, 248, 248, 248, 248, 248, 248, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 248, 246, 246, 247, 248, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 246, 246, 248, 246, 247, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 246, 246, 246, 246, 246, 246, 246, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 246, 246, 246, 246, 248, 246, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 246, 246, 246, 246, 246, 248, 251, 248, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 248, 246, 251, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 253, 246, 246, 246, 246, 254, 246, 246, 246, 246, 246, 255, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 222, 246, 246, 246, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 246, 246, 246, 246, 252, 256, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 246, 246, 246, 255, 246, 252, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 259, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 258, 258, 258, 258, 258, 258, 258, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 258, 258, 258, 258, 257, 258, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 258, 258, 258, 258, 258, 257, 261, 260, 264, 263, 259, 258, 264, 265, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 253, 246, 246, 246, 246, 254, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 246, 246, 246, 246, 252, 256, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 246, 246, 246, 246, 246, 252, 267, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 264, 266, 264, 267, 268, 269, 269, 269, 268, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 268, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 270, 269, 268, 271, 271, 271, 268, 271, 271, 271, 271, 271, 272, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 268, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 273, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 274, 271, 268, 271, 271, 271, 268, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 268, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 275, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 274, 271, 268, 276, 276, 276, 268, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 268, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 277, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 278, 276, 268, 279, 279, 279, 268, 279, 279, 279, 279, 279, 280, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 268, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 281, 279, 268, 279, 279, 279, 268, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 268, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 281, 279, 268, 269, 269, 269, 268, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 268, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 282, 269, 268, 283, 283, 283, 268, 283, 283, 283, 283, 283, 284, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 268, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 285, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 286, 283, 283, 283, 283, 283, 283, 287, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 288, 283, 268, 283, 283, 283, 268, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 268, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 288, 283, 289, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 290, 268, 290, 268, 268, 291, 291, 291, 268, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 268, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 292, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 293, 291, 268, 271, 271, 271, 268, 271, 271, 271, 271, 271, 272, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 268, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 275, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 274, 271, 268, 294, 294, 294, 268, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 268, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 294, 294, 294, 294, 294, 294, 294, 295, 295, 295, 295, 295, 295, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 295, 295, 295, 295, 295, 295, 294, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 297, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 298, 212, 212, 299, 212, 297, 212, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 212, 212, 212, 212, 296, 212, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 212, 212, 212, 212, 212, 296, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 297, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 298, 246, 246, 299, 246, 297, 246, 296, 296, 296, 296, 296, 296, 300, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 246, 246, 246, 246, 296, 246, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 246, 246, 246, 246, 246, 296, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 297, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 298, 246, 246, 299, 246, 297, 246, 296, 296, 296, 296, 296, 296, 296, 296, 301, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 246, 246, 246, 246, 296, 246, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 246, 246, 246, 246, 246, 296, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 297, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 298, 246, 246, 299, 246, 297, 246, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 302, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 246, 246, 246, 246, 296, 246, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 246, 246, 246, 246, 246, 296, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 297, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 298, 246, 246, 299, 246, 297, 246, 296, 296, 296, 302, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 246, 246, 246, 246, 296, 246, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 246, 246, 246, 246, 246, 296, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 305, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 306, 303, 303, 303, 303, 305, 303, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 303, 303, 303, 303, 304, 303, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 303, 303, 303, 303, 303, 304, 306, 303, 303, 307, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 308, 308, 308, 308, 308, 308, 308, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 308, 308, 308, 308, 309, 308, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 308, 308, 308, 308, 308, 309, 311, 310, 311, 310, 310, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 310, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 310, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 310, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 314, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 314, 318, 317, 319, 317, 320, 317, 321, 317, 323, 322, 324, 322, 325, 322, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 308, 308, 308, 308, 308, 308, 308, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 308, 308, 308, 308, 326, 308, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 308, 308, 308, 308, 308, 326, 327, 314, 328, 329, 328, 328, 328, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 328, 314, 314, 330, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 331, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 332, 314, 333, 334, 333, 333, 333, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 333, 314, 314, 335, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 336, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 337, 314, 339, 340, 339, 339, 339, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 339, 338, 338, 341, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 342, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 343, 338, 345, 346, 345, 345, 345, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 345, 344, 344, 347, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 348, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 349, 344, 345, 346, 345, 345, 345, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 345, 344, 344, 347, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 350, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 349, 344, 345, 351, 345, 345, 345, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 345, 344, 344, 347, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 348, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 349, 344, 352, 314, 329, 314, 354, 355, 354, 354, 354, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 354, 353, 353, 356, 353, 353, 357, 353, 353, 353, 353, 353, 353, 353, 358, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 359, 353, 361, 355, 361, 361, 361, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 361, 360, 360, 356, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 359, 360, 364, 363, 366, 365, 367, 362, 368, 362, 369, 353, 371, 370, 370, 370, 371, 370, 370, 370, 370, 372, 373, 372, 372, 372, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 371, 370, 370, 370, 370, 370, 372, 370, 370, 374, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 375, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 376, 370, 370, 377, 370, 372, 378, 372, 372, 372, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 372, 378, 379, 380, 381, 382, 383, 385, 384, 387, 388, 387, 387, 387, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 387, 386, 373, 384, 389, 384, 391, 390, 390, 390, 391, 390, 390, 390, 390, 392, 393, 392, 392, 392, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 391, 390, 390, 390, 390, 390, 392, 390, 390, 394, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 395, 390, 392, 396, 392, 392, 392, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 392, 396, 398, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 399, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 400, 397, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 401, 401, 401, 401, 401, 401, 401, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 401, 401, 401, 401, 13, 401, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 401, 401, 401, 401, 401, 13, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 401, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 402, 402, 402, 402, 402, 402, 402, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 402, 402, 402, 402, 17, 402, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 402, 402, 402, 402, 402, 17, 405, 404, 404, 404, 405, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 405, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 406, 406, 406, 406, 406, 406, 406, 406, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 407, 404, 404, 404, 404, 404, 404, 404, 404, 404, 408, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 409, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 410, 404, 404, 411, 404, 412, 413, 415, 415, 415, 415, 415, 415, 415, 415, 414, 416, 416, 416, 416, 416, 416, 416, 416, 414, 414, 417, 417, 42, 42, 42, 417, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 417, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 418, 42, 419, 420, 421, 421, 42, 42, 42, 421, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 421, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 422, 42, 41, 421, 423, 424, 425, 425, 27, 27, 27, 425, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 425, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 426, 27, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 425, 425, 425, 425, 425, 425, 425, 427, 427, 427, 427, 427, 427, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 427, 427, 427, 427, 427, 427, 425, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 428, 428, 428, 428, 428, 428, 428, 429, 429, 429, 429, 429, 429, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 429, 429, 429, 429, 429, 429, 428, 428, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 421, 421, 421, 421, 421, 421, 421, 430, 430, 430, 430, 430, 430, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 430, 430, 430, 430, 430, 430, 421, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 431, 431, 431, 431, 431, 431, 431, 432, 432, 432, 432, 432, 432, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 432, 432, 432, 432, 432, 432, 431, 431, 421, 20, 20, 20, 421, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 421, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 433, 20, 417, 27, 27, 27, 417, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 417, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 29, 27, 417, 434, 434, 434, 417, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 417, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 435, 434, 436, 437, 437, 434, 434, 434, 437, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 437, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 438, 434, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 437, 437, 437, 437, 437, 437, 437, 439, 439, 439, 439, 439, 439, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 439, 439, 439, 439, 439, 439, 437, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 440, 440, 440, 440, 440, 440, 440, 441, 441, 441, 441, 441, 441, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 441, 441, 441, 441, 441, 441, 440, 440, 437, 20, 20, 20, 437, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 437, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 433, 20, 442, 437, 437, 27, 27, 27, 437, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 437, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 29, 27, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 443, 443, 443, 443, 443, 443, 443, 444, 444, 444, 444, 444, 444, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 444, 444, 444, 444, 444, 444, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 445, 443, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 443, 443, 443, 443, 443, 443, 443, 446, 446, 446, 446, 446, 446, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 446, 446, 446, 446, 446, 446, 443, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 443, 443, 443, 443, 443, 443, 443, 447, 447, 447, 447, 447, 447, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 447, 447, 447, 447, 447, 447, 443, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 443, 443, 443, 443, 443, 443, 443, 448, 448, 448, 448, 448, 448, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 448, 448, 448, 448, 448, 448, 443, 449, 452, 451, 451, 451, 452, 451, 451, 451, 451, 453, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 452, 451, 451, 451, 451, 451, 453, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 451, 451, 451, 451, 451, 451, 451, 454, 454, 454, 454, 454, 454, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 454, 454, 454, 454, 454, 454, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 455, 451, 452, 451, 451, 451, 452, 451, 451, 451, 451, 450, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 452, 451, 451, 451, 451, 451, 450, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 451, 451, 451, 451, 451, 451, 451, 456, 456, 456, 456, 456, 456, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 456, 456, 456, 456, 456, 456, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 457, 451, 450, 452, 456, 456, 456, 452, 456, 456, 456, 456, 450, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 452, 456, 456, 456, 456, 456, 450, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 450, 456, 458, 452, 459, 459, 459, 452, 459, 459, 459, 459, 453, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 459, 459, 459, 459, 453, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 459, 459, 459, 459, 459, 459, 459, 454, 454, 454, 454, 454, 454, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 454, 454, 454, 454, 454, 454, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 450, 459, 452, 459, 459, 459, 452, 459, 459, 459, 459, 450, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 459, 459, 459, 459, 450, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 459, 459, 459, 459, 459, 459, 459, 456, 456, 456, 456, 456, 456, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 456, 456, 456, 456, 456, 456, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 452, 459, 459, 459, 452, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 459, 459, 459, 459, 459, 459, 459, 461, 461, 461, 461, 461, 461, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 461, 461, 461, 461, 461, 461, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 462, 459, 452, 459, 459, 459, 452, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 459, 459, 459, 459, 459, 459, 459, 454, 454, 454, 454, 454, 454, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 454, 454, 454, 454, 454, 454, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 462, 459, 463, 452, 459, 459, 459, 452, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 459, 459, 459, 459, 459, 459, 459, 464, 464, 464, 464, 464, 464, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 464, 464, 464, 464, 464, 464, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 462, 459, 452, 459, 459, 459, 452, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 459, 459, 459, 459, 459, 459, 459, 465, 465, 465, 465, 465, 465, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 465, 465, 465, 465, 465, 465, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 462, 459, 452, 459, 459, 459, 452, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 459, 459, 459, 459, 459, 459, 459, 466, 466, 466, 466, 466, 466, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 466, 466, 466, 466, 466, 466, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 462, 459, 452, 459, 459, 459, 452, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 459, 459, 459, 459, 459, 459, 459, 467, 467, 467, 467, 467, 467, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 467, 467, 467, 467, 467, 467, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 462, 459, 452, 459, 459, 459, 452, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 459, 459, 459, 459, 459, 459, 459, 468, 468, 468, 468, 468, 468, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 468, 468, 468, 468, 468, 468, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 462, 459, 452, 459, 459, 459, 452, 459, 459, 459, 459, 450, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 459, 459, 459, 459, 450, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 459, 459, 459, 459, 459, 459, 459, 468, 468, 468, 468, 468, 468, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 468, 468, 468, 468, 468, 468, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 450, 459, 469, 470, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 471, 471, 471, 471, 471, 471, 471, 472, 472, 472, 472, 472, 472, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 472, 472, 472, 472, 472, 472, 471, 471, 474, 473, 473, 473, 474, 473, 473, 473, 473, 473, 475, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 474, 473, 473, 473, 473, 473, 473, 473, 473, 476, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 477, 473, 479, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 480, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 481, 478, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 482, 482, 482, 482, 482, 482, 482, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 482, 482, 482, 482, 48, 482, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 482, 482, 482, 482, 482, 48, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 482, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 483, 483, 483, 483, 483, 483, 483, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 483, 483, 483, 483, 52, 483, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 483, 483, 483, 483, 483, 52, 486, 485, 485, 485, 486, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 486, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 487, 487, 487, 487, 487, 487, 487, 487, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 488, 485, 485, 485, 485, 485, 485, 485, 485, 485, 489, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 490, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 491, 485, 485, 492, 485, 493, 494, 496, 496, 496, 496, 496, 496, 496, 496, 495, 497, 497, 497, 497, 497, 497, 497, 497, 495, 495, 498, 498, 77, 77, 77, 498, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 498, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 499, 77, 500, 501, 502, 502, 77, 77, 77, 502, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 502, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 503, 77, 76, 502, 504, 505, 506, 506, 62, 62, 62, 506, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 506, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 507, 62, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 506, 506, 506, 506, 506, 506, 506, 508, 508, 508, 508, 508, 508, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 508, 508, 508, 508, 508, 508, 506, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 509, 509, 509, 509, 509, 509, 509, 510, 510, 510, 510, 510, 510, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 510, 510, 510, 510, 510, 510, 509, 509, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 502, 502, 502, 502, 502, 502, 502, 511, 511, 511, 511, 511, 511, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 511, 511, 511, 511, 511, 511, 502, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 512, 512, 512, 512, 512, 512, 512, 513, 513, 513, 513, 513, 513, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 513, 513, 513, 513, 513, 513, 512, 512, 502, 55, 55, 55, 502, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 502, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 514, 55, 498, 62, 62, 62, 498, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 498, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 498, 515, 515, 515, 498, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 498, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 516, 515, 517, 518, 518, 515, 515, 515, 518, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 518, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 519, 515, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 518, 518, 518, 518, 518, 518, 518, 520, 520, 520, 520, 520, 520, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 520, 520, 520, 520, 520, 520, 518, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 521, 521, 521, 521, 521, 521, 521, 522, 522, 522, 522, 522, 522, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 522, 522, 522, 522, 522, 522, 521, 521, 518, 55, 55, 55, 518, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 518, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 514, 55, 523, 518, 518, 62, 62, 62, 518, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 518, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 524, 524, 524, 524, 524, 524, 524, 525, 525, 525, 525, 525, 525, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 525, 525, 525, 525, 525, 525, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 526, 524, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 524, 524, 524, 524, 524, 524, 524, 527, 527, 527, 527, 527, 527, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 527, 527, 527, 527, 527, 527, 524, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 524, 524, 524, 524, 524, 524, 524, 528, 528, 528, 528, 528, 528, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 528, 528, 528, 528, 528, 528, 524, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 524, 524, 524, 524, 524, 524, 524, 529, 529, 529, 529, 529, 529, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 529, 529, 529, 529, 529, 529, 524, 530, 533, 532, 532, 532, 533, 532, 532, 532, 532, 534, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 533, 532, 532, 532, 532, 532, 534, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 532, 532, 532, 532, 532, 532, 532, 535, 535, 535, 535, 535, 535, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 535, 535, 535, 535, 535, 535, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 536, 532, 533, 532, 532, 532, 533, 532, 532, 532, 532, 531, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 533, 532, 532, 532, 532, 532, 531, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 532, 532, 532, 532, 532, 532, 532, 537, 537, 537, 537, 537, 537, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 537, 537, 537, 537, 537, 537, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 538, 532, 531, 533, 537, 537, 537, 533, 537, 537, 537, 537, 531, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 533, 537, 537, 537, 537, 537, 531, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 531, 537, 539, 533, 540, 540, 540, 533, 540, 540, 540, 540, 534, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 540, 540, 540, 540, 534, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 540, 540, 540, 540, 540, 540, 540, 535, 535, 535, 535, 535, 535, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 535, 535, 535, 535, 535, 535, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 531, 540, 533, 540, 540, 540, 533, 540, 540, 540, 540, 531, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 540, 540, 540, 540, 531, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 540, 540, 540, 540, 540, 540, 540, 537, 537, 537, 537, 537, 537, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 537, 537, 537, 537, 537, 537, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 533, 540, 540, 540, 533, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 540, 540, 540, 540, 540, 540, 540, 542, 542, 542, 542, 542, 542, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 542, 542, 542, 542, 542, 542, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 543, 540, 533, 540, 540, 540, 533, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 540, 540, 540, 540, 540, 540, 540, 535, 535, 535, 535, 535, 535, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 535, 535, 535, 535, 535, 535, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 543, 540, 544, 533, 540, 540, 540, 533, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 540, 540, 540, 540, 540, 540, 540, 545, 545, 545, 545, 545, 545, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 545, 545, 545, 545, 545, 545, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 543, 540, 533, 540, 540, 540, 533, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 540, 540, 540, 540, 540, 540, 540, 546, 546, 546, 546, 546, 546, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 546, 546, 546, 546, 546, 546, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 543, 540, 533, 540, 540, 540, 533, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 540, 540, 540, 540, 540, 540, 540, 547, 547, 547, 547, 547, 547, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 547, 547, 547, 547, 547, 547, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 543, 540, 533, 540, 540, 540, 533, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 540, 540, 540, 540, 540, 540, 540, 548, 548, 548, 548, 548, 548, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 548, 548, 548, 548, 548, 548, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 543, 540, 533, 540, 540, 540, 533, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 540, 540, 540, 540, 540, 540, 540, 549, 549, 549, 549, 549, 549, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 549, 549, 549, 549, 549, 549, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 543, 540, 533, 540, 540, 540, 533, 540, 540, 540, 540, 531, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 540, 540, 540, 540, 531, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 540, 540, 540, 540, 540, 540, 540, 549, 549, 549, 549, 549, 549, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 549, 549, 549, 549, 549, 549, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 531, 540, 550, 551, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 552, 552, 552, 552, 552, 552, 552, 553, 553, 553, 553, 553, 553, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 553, 553, 553, 553, 553, 553, 552, 552, 555, 554, 554, 554, 555, 554, 554, 554, 554, 556, 557, 556, 556, 556, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 555, 554, 554, 554, 554, 554, 556, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 558, 554, 556, 559, 556, 556, 556, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 556, 559, 560, 561, 561, 561, 560, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 560, 561, 563, 562, 562, 562, 563, 562, 562, 562, 562, 562, 564, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 563, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 565, 562, 566, 567, 567, 567, 566, 567, 567, 567, 567, 567, 568, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 566, 567, 570, 569, 569, 569, 570, 569, 569, 569, 569, 569, 571, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 570, 569, 569, 569, 569, 569, 569, 569, 569, 572, 569, 574, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 575, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 576, 573, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 577, 577, 577, 577, 577, 577, 577, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 577, 577, 577, 577, 83, 577, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 577, 577, 577, 577, 577, 83, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 577, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 578, 578, 578, 578, 578, 578, 578, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 578, 578, 578, 578, 87, 578, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 578, 578, 578, 578, 578, 87, 580, 579, 579, 579, 580, 579, 579, 579, 579, 579, 581, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 580, 579, 583, 582, 582, 582, 583, 582, 582, 582, 582, 584, 585, 584, 584, 584, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 583, 582, 582, 582, 582, 582, 584, 582, 582, 586, 582, 584, 587, 584, 584, 584, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 584, 587, 589, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 590, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 591, 588, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 592, 592, 592, 592, 592, 592, 592, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 592, 592, 592, 592, 90, 592, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 592, 592, 592, 592, 592, 90, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 592, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 593, 593, 593, 593, 593, 593, 593, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 593, 593, 593, 593, 94, 593, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 593, 593, 593, 593, 593, 94, 595, 594, 594, 594, 595, 594, 594, 594, 594, 596, 597, 596, 596, 596, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 595, 594, 594, 594, 594, 594, 596, 594, 596, 598, 596, 596, 596, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 596, 598, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 599, 599, 599, 599, 599, 599, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 599, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 601, 601, 601, 601, 601, 601, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 601, 602, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 603, 98, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 604, 604, 604, 604, 604, 604, 604, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 604, 604, 604, 604, 96, 604, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 604, 604, 604, 604, 604, 96, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 604, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 605, 605, 605, 605, 605, 605, 605, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 605, 605, 605, 605, 101, 605, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 605, 605, 605, 605, 605, 101, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 606, 606, 606, 606, 606, 606, 606, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 606, 606, 606, 606, 103, 606, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 606, 606, 606, 606, 606, 103, 608, 609, 609, 609, 608, 609, 609, 609, 609, 610, 611, 610, 610, 610, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 608, 609, 609, 609, 609, 609, 610, 612, 609, 613, 614, 615, 616, 609, 609, 609, 617, 618, 609, 618, 609, 619, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 620, 609, 621, 622, 623, 609, 609, 624, 625, 624, 624, 626, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 627, 628, 609, 619, 629, 619, 630, 631, 632, 633, 634, 635, 607, 607, 636, 607, 607, 607, 637, 638, 639, 607, 607, 640, 641, 642, 643, 607, 644, 607, 645, 607, 609, 646, 609, 618, 609, 607, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 648, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 647, 647, 647, 648, 647, 648, 647, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 647, 647, 647, 647, 607, 647, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 647, 647, 647, 647, 647, 607, 610, 649, 610, 610, 610, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 610, 649, 650, 619, 651, 651, 619, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 619, 651, 652, 653, 654, 655, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 105, 105, 656, 105, 656, 105, 105, 656, 656, 105, 105, 105, 658, 105, 105, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 105, 105, 105, 105, 105, 105, 105, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 656, 105, 656, 656, 657, 105, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 656, 656, 656, 105, 656, 657, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 660, 660, 660, 660, 660, 660, 660, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 660, 660, 660, 660, 657, 660, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 660, 660, 660, 660, 660, 657, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 660, 661, 651, 619, 651, 619, 651, 619, 651, 663, 662, 619, 664, 651, 619, 651, 665, 619, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 619, 656, 619, 651, 619, 619, 651, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 648, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 647, 647, 647, 648, 647, 648, 647, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 647, 647, 647, 647, 624, 647, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 647, 647, 647, 647, 647, 624, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 648, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 648, 666, 648, 666, 624, 624, 624, 624, 667, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 624, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 666, 624, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 648, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 648, 666, 648, 666, 624, 624, 624, 624, 624, 624, 668, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 624, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 666, 624, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 648, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 648, 666, 648, 666, 624, 624, 624, 624, 624, 624, 624, 624, 669, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 624, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 666, 624, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 648, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 648, 666, 648, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 670, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 624, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 666, 624, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 648, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 648, 666, 648, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 671, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 624, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 666, 624, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 648, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 648, 666, 648, 666, 624, 624, 624, 670, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 624, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 666, 624, 665, 656, 611, 656, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 673, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 674, 675, 607, 607, 607, 607, 607, 676, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 677, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 678, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 679, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 680, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 681, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 682, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 683, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 684, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 685, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 686, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 687, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 683, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 688, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 687, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 689, 607, 690, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 691, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 692, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 693, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 694, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 695, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 696, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 697, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 698, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 699, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 700, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 701, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 702, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 692, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 703, 607, 607, 607, 607, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 704, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 648, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 705, 705, 705, 648, 705, 648, 705, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 705, 705, 705, 705, 607, 705, 607, 607, 607, 607, 607, 607, 607, 607, 706, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 705, 705, 705, 705, 705, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 707, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 708, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 709, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 710, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 711, 607, 712, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 713, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 685, 607, 607, 607, 714, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 715, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 716, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 701, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 717, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 639, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 699, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 718, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 719, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 720, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 701, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 721, 607, 607, 607, 722, 607, 607, 607, 607, 607, 723, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 723, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 724, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 725, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 726, 727, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 728, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 701, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 729, 607, 607, 730, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 685, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 696, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 731, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 732, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 714, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 733, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 639, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 734, 607, 607, 607, 607, 607, 607, 607, 607, 607, 728, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 696, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 735, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 736, 607, 607, 607, 607, 607, 607, 607, 737, 607, 607, 607, 607, 607, 607, 607, 738, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 714, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 702, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 722, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 739, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 696, 607, 607, 607, 720, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 740, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 741, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 690, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 619, 651, 743, 744, 744, 744, 743, 744, 744, 744, 744, 745, 744, 745, 745, 745, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 743, 744, 744, 744, 744, 744, 745, 744, 744, 746, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 747, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 744, 748, 744, 744, 742, 744, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 744, 744, 744, 744, 744, 742, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 110, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 111, 749, 749, 749, 749, 110, 749, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 749, 749, 749, 749, 109, 749, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 749, 749, 749, 749, 749, 109, 745, 750, 745, 745, 745, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 745, 750, 751, 752, 753, 754, 755, 749, 756, 749, 757, 759, 760, 760, 760, 759, 760, 760, 760, 760, 761, 762, 761, 761, 761, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 759, 760, 760, 760, 760, 760, 761, 763, 760, 764, 760, 765, 766, 760, 760, 760, 767, 768, 760, 768, 760, 765, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 769, 770, 771, 760, 760, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 773, 774, 760, 765, 758, 765, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 760, 775, 760, 768, 760, 758, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 777, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 776, 776, 776, 776, 776, 777, 776, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 776, 776, 776, 776, 758, 776, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 776, 776, 776, 776, 776, 758, 779, 778, 780, 761, 781, 761, 761, 761, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 761, 781, 782, 765, 783, 783, 765, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 765, 783, 784, 785, 786, 787, 765, 783, 765, 783, 765, 783, 765, 788, 783, 765, 783, 790, 765, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 765, 789, 765, 783, 765, 765, 783, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 777, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 791, 791, 791, 791, 791, 777, 791, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 791, 791, 791, 791, 772, 791, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 791, 791, 791, 791, 791, 772, 790, 789, 762, 789, 765, 783, 793, 792, 792, 792, 793, 792, 792, 792, 792, 794, 795, 794, 794, 794, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 793, 792, 792, 792, 792, 792, 794, 792, 792, 796, 792, 121, 797, 792, 798, 792, 799, 121, 152, 800, 154, 121, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 801, 792, 802, 152, 803, 804, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 152, 805, 152, 121, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 806, 792, 792, 792, 792, 792, 792, 792, 792, 807, 792, 792, 808, 792, 809, 792, 792, 792, 165, 166, 792, 121, 792, 810, 810, 810, 810, 810, 810, 810, 810, 810, 794, 810, 794, 794, 794, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 794, 810, 810, 810, 810, 147, 148, 810, 149, 810, 150, 151, 152, 153, 154, 147, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 155, 810, 156, 152, 157, 158, 810, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 159, 160, 152, 121, 116, 810, 116, 116, 116, 116, 116, 116, 116, 116, 161, 116, 116, 116, 116, 116, 116, 116, 116, 162, 116, 116, 163, 116, 164, 116, 116, 116, 165, 166, 810, 121, 810, 116, 811, 812, 812, 812, 811, 812, 812, 812, 812, 152, 813, 152, 152, 152, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 811, 812, 812, 812, 812, 812, 152, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 152, 812, 152, 813, 152, 152, 152, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 152, 115, 115, 115, 115, 115, 121, 115, 115, 115, 115, 115, 115, 115, 152, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 152, 115, 152, 813, 152, 152, 152, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 152, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 152, 115, 814, 152, 813, 152, 152, 152, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 152, 815, 815, 815, 815, 815, 815, 815, 815, 815, 816, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 152, 815, 152, 813, 152, 152, 152, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 152, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 152, 152, 115, 817, 811, 152, 811, 819, 818, 821, 822, 821, 821, 821, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 821, 820, 823, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 117, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 811, 811, 811, 811, 117, 811, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 811, 811, 811, 811, 116, 811, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 811, 811, 811, 811, 811, 116, 824, 152, 813, 152, 152, 152, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 152, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 152, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 121, 811, 825, 826, 827, 828, 829, 830, 152, 813, 152, 152, 152, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 152, 811, 811, 811, 811, 811, 811, 811, 811, 811, 121, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 152, 811, 152, 818, 121, 831, 121, 831, 832, 833, 832, 832, 832, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 832, 820, 834, 831, 835, 835, 835, 835, 835, 835, 835, 835, 835, 124, 835, 124, 124, 124, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 124, 835, 835, 835, 835, 125, 126, 835, 127, 835, 128, 129, 130, 131, 132, 125, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 133, 835, 134, 130, 135, 136, 835, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 137, 138, 130, 139, 123, 835, 123, 123, 123, 123, 123, 123, 123, 123, 140, 123, 123, 123, 123, 123, 123, 123, 123, 141, 123, 123, 142, 123, 143, 123, 123, 123, 144, 145, 835, 139, 835, 123, 152, 831, 836, 831, 837, 831, 838, 831, 839, 191, 191, 191, 839, 191, 191, 191, 191, 840, 191, 840, 840, 840, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 839, 191, 191, 191, 191, 191, 840, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 191, 841, 191, 191, 193, 191, 193, 193, 193, 197, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 191, 191, 191, 191, 191, 193, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 842, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 191, 190, 190, 190, 190, 842, 190, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 190, 190, 190, 190, 193, 190, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 190, 190, 190, 190, 190, 193, 843, 843, 843, 843, 843, 843, 843, 843, 843, 194, 843, 194, 194, 194, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 194, 843, 843, 843, 843, 843, 843, 843, 195, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 843, 196, 843, 843, 193, 843, 193, 193, 193, 197, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 843, 843, 843, 843, 843, 193, 844, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 842, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 191, 843, 843, 843, 843, 842, 843, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 843, 843, 843, 843, 193, 843, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 845, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 843, 843, 843, 843, 843, 193, 198, 843, 847, 846, 846, 846, 847, 846, 846, 846, 846, 848, 846, 848, 848, 848, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 847, 846, 846, 846, 846, 846, 848, 846, 846, 849, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 850, 846, 846, 846, 846, 846, 846, 846, 851, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 852, 846, 848, 853, 848, 848, 848, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 848, 853, 854, 855, 856, 857, 859, 858, 860, 861, 858, 862, 864, 865, 865, 865, 864, 865, 865, 865, 865, 866, 867, 866, 866, 866, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 864, 865, 865, 865, 865, 865, 866, 865, 865, 868, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 865, 869, 865, 865, 863, 865, 863, 863, 863, 863, 863, 863, 863, 863, 870, 863, 863, 863, 863, 863, 863, 863, 863, 871, 863, 863, 872, 863, 873, 863, 863, 863, 865, 865, 865, 865, 865, 863, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 874, 874, 874, 874, 874, 874, 874, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 874, 874, 874, 874, 863, 874, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 874, 874, 874, 874, 874, 863, 866, 875, 866, 866, 866, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 866, 875, 876, 877, 878, 879, 880, 882, 881, 883, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 885, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 886, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 887, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 888, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 889, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 885, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 890, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 891, 863, 863, 863, 863, 863, 863, 863, 892, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 893, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 894, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 885, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 863, 895, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 885, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 896, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 863, 897, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 889, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 899, 222, 222, 222, 899, 222, 222, 222, 222, 900, 901, 900, 900, 900, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 899, 222, 222, 222, 222, 222, 900, 902, 222, 903, 222, 904, 905, 222, 906, 222, 907, 908, 222, 909, 910, 911, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 912, 222, 913, 914, 915, 916, 222, 917, 918, 917, 917, 919, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 920, 921, 222, 922, 923, 222, 924, 925, 926, 927, 928, 929, 898, 898, 930, 898, 898, 898, 931, 932, 933, 898, 898, 934, 935, 936, 937, 898, 938, 898, 939, 898, 940, 941, 222, 922, 222, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 946, 945, 945, 947, 945, 948, 950, 951, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 952, 949, 954, 953, 955, 956, 957, 900, 958, 900, 900, 900, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 900, 958, 960, 959, 962, 963, 962, 962, 962, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 962, 961, 222, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 222, 964, 965, 966, 967, 968, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 970, 970, 970, 970, 970, 970, 970, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 970, 970, 970, 970, 970, 970, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 970, 970, 970, 970, 970, 969, 973, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 222, 972, 974, 976, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 222, 975, 222, 212, 223, 224, 223, 223, 223, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 223, 972, 972, 225, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 972, 972, 972, 222, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 227, 972, 240, 241, 240, 240, 240, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, 239, 239, 242, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 244, 239, 223, 224, 223, 223, 223, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 223, 972, 972, 225, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 972, 972, 972, 222, 222, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 227, 972, 978, 964, 980, 979, 982, 981, 964, 983, 983, 983, 964, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 964, 983, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 985, 986, 964, 987, 248, 988, 986, 964, 964, 989, 990, 964, 990, 964, 248, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 991, 964, 992, 993, 994, 964, 995, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 996, 964, 964, 248, 984, 248, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 964, 997, 964, 998, 964, 984, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 1000, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 999, 999, 999, 1001, 999, 1000, 999, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 999, 999, 999, 999, 984, 999, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 999, 999, 999, 999, 999, 984, 1003, 1002, 1004, 1006, 1007, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1008, 1005, 1010, 1011, 1009, 1012, 1013, 1014, 1015, 248, 999, 999, 1016, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 248, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 999, 999, 999, 999, 999, 999, 999, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 999, 999, 999, 999, 247, 999, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 999, 999, 999, 999, 999, 247, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 999, 1017, 999, 248, 999, 248, 999, 248, 1018, 999, 248, 999, 248, 999, 248, 248, 999, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1019, 1019, 1019, 1019, 1019, 1019, 1022, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1019, 1019, 1019, 1019, 1020, 1019, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1019, 1019, 1019, 1019, 1019, 1020, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1023, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1025, 1025, 1025, 1025, 1026, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1025, 1025, 1025, 1025, 1025, 1026, 1017, 999, 1016, 999, 1028, 1029, 964, 1030, 263, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 264, 253, 265, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 264, 254, 264, 267, 222, 964, 922, 222, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 222, 964, 222, 973, 964, 1034, 1033, 1033, 1033, 1034, 1033, 1033, 1033, 1033, 1035, 1036, 1035, 1035, 1035, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1034, 1033, 1033, 1033, 1033, 1033, 1035, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1033, 1038, 1033, 1033, 1037, 1033, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1033, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1039, 1039, 1039, 1039, 1040, 1039, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1039, 1039, 1039, 1039, 1039, 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1041, 1041, 1041, 1041, 1042, 1041, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1041, 1041, 1041, 1041, 1041, 1042, 1045, 1044, 1044, 1044, 1045, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1045, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1047, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1048, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1049, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1050, 1044, 1044, 1051, 1044, 1052, 1053, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1054, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1054, 1054, 1057, 1057, 291, 291, 291, 1057, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 1057, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 292, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 1058, 291, 1059, 1060, 1061, 1061, 291, 291, 291, 1061, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 1061, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 292, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 1062, 291, 290, 1061, 1063, 1064, 1065, 1065, 276, 276, 276, 1065, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 1065, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 277, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 1066, 276, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1067, 1067, 1067, 1067, 1067, 1067, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1067, 1067, 1067, 1067, 1067, 1067, 1065, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1069, 1069, 1069, 1069, 1069, 1069, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1069, 1069, 1069, 1069, 1069, 1069, 1068, 1068, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1070, 1070, 1070, 1070, 1070, 1070, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1070, 1070, 1070, 1070, 1070, 1070, 1061, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1072, 1072, 1072, 1072, 1072, 1072, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1072, 1072, 1072, 1072, 1072, 1072, 1071, 1071, 1061, 269, 269, 269, 1061, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 1061, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 1073, 269, 1057, 276, 276, 276, 1057, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 1057, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 277, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 278, 276, 1057, 1074, 1074, 1074, 1057, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1057, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1075, 1074, 1076, 1077, 1077, 1074, 1074, 1074, 1077, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1077, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1078, 1074, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1079, 1079, 1079, 1079, 1079, 1079, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1079, 1079, 1079, 1079, 1079, 1079, 1077, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1081, 1081, 1081, 1081, 1081, 1081, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1081, 1081, 1081, 1081, 1081, 1081, 1080, 1080, 1077, 269, 269, 269, 1077, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 1077, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 1073, 269, 1082, 1077, 1077, 276, 276, 276, 1077, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 1077, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 277, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 278, 276, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1084, 1084, 1084, 1084, 1084, 1084, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1084, 1084, 1084, 1084, 1084, 1084, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1085, 1083, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1086, 1086, 1086, 1086, 1086, 1086, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1086, 1086, 1086, 1086, 1086, 1086, 1083, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1087, 1087, 1087, 1087, 1087, 1087, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1087, 1087, 1087, 1087, 1087, 1087, 1083, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1088, 1088, 1088, 1088, 1088, 1088, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1088, 1088, 1088, 1088, 1088, 1088, 1083, 1089, 1092, 1091, 1091, 1091, 1092, 1091, 1091, 1091, 1091, 1093, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1092, 1091, 1091, 1091, 1091, 1091, 1093, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1094, 1094, 1094, 1094, 1094, 1094, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1094, 1094, 1094, 1094, 1094, 1094, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1095, 1091, 1092, 1091, 1091, 1091, 1092, 1091, 1091, 1091, 1091, 1090, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1092, 1091, 1091, 1091, 1091, 1091, 1090, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1096, 1096, 1096, 1096, 1096, 1096, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1096, 1096, 1096, 1096, 1096, 1096, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1097, 1091, 1090, 1092, 1096, 1096, 1096, 1092, 1096, 1096, 1096, 1096, 1090, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1092, 1096, 1096, 1096, 1096, 1096, 1090, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1090, 1096, 1098, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1093, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1093, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1100, 1100, 1100, 1100, 1100, 1100, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1100, 1100, 1100, 1100, 1100, 1100, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1090, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1090, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1090, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1096, 1096, 1096, 1096, 1096, 1096, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1096, 1096, 1096, 1096, 1096, 1096, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1102, 1102, 1102, 1102, 1102, 1102, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1102, 1102, 1102, 1102, 1102, 1102, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1100, 1100, 1100, 1100, 1100, 1100, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1100, 1100, 1100, 1100, 1100, 1100, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1104, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1105, 1105, 1105, 1105, 1105, 1105, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1105, 1105, 1105, 1105, 1105, 1105, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1106, 1106, 1106, 1106, 1106, 1106, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1106, 1106, 1106, 1106, 1106, 1106, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1107, 1107, 1107, 1107, 1107, 1107, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1107, 1107, 1107, 1107, 1107, 1107, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1108, 1108, 1108, 1108, 1108, 1108, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1108, 1108, 1108, 1108, 1108, 1108, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1090, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1090, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1090, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1111, 1111, 1111, 1111, 1111, 1111, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1111, 1111, 1111, 1111, 1111, 1111, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1112, 1112, 1112, 1112, 1112, 1112, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1112, 1112, 1112, 1112, 1112, 1112, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1113, 1113, 1113, 1113, 1113, 1113, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1113, 1113, 1113, 1113, 1113, 1113, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1090, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1114, 1114, 1114, 1114, 1114, 1114, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1114, 1114, 1114, 1114, 1114, 1114, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1090, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1115, 1115, 1115, 1115, 1115, 1115, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1115, 1115, 1115, 1115, 1115, 1115, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1090, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1116, 1116, 1116, 1116, 1116, 1116, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1116, 1116, 1116, 1116, 1116, 1116, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1090, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1117, 1117, 1117, 1117, 1117, 1117, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1117, 1117, 1117, 1117, 1117, 1117, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1090, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1090, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1118, 1118, 1118, 1118, 1118, 1118, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1118, 1118, 1118, 1118, 1118, 1118, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1119, 1119, 1119, 1119, 1119, 1119, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1119, 1119, 1119, 1119, 1119, 1119, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1120, 1120, 1120, 1120, 1120, 1120, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1120, 1120, 1120, 1120, 1120, 1120, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1121, 1121, 1121, 1121, 1121, 1121, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1121, 1121, 1121, 1121, 1121, 1121, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1122, 1123, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1125, 1125, 1125, 1125, 1125, 1125, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1125, 1125, 1125, 1125, 1125, 1125, 1124, 1124, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 297, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 298, 212, 212, 299, 212, 297, 212, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 212, 212, 212, 212, 296, 212, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 212, 212, 212, 212, 212, 296, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 297, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 298, 964, 964, 299, 964, 297, 964, 296, 296, 296, 296, 1126, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 964, 964, 964, 964, 296, 964, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 964, 964, 964, 964, 964, 296, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 297, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 298, 964, 964, 299, 964, 297, 964, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 1127, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 964, 964, 964, 964, 296, 964, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 964, 964, 964, 964, 964, 296, 1128, 1129, 964, 959, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 1130, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 1131, 1132, 898, 898, 898, 898, 898, 1133, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1134, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 1135, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1136, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 1137, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 1138, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1139, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 1140, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 1141, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 1142, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 297, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 212, 212, 299, 212, 297, 212, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 212, 212, 212, 212, 898, 212, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 212, 212, 212, 212, 212, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 1143, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1144, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 1140, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 1145, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1144, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1146, 898, 1147, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 1148, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 1149, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1150, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1151, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 1152, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 1153, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1154, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 1155, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 1156, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1157, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1158, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 1159, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1149, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1160, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1161, 898, 1162, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1163, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1142, 898, 898, 898, 1160, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1164, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1165, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1158, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 1166, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 933, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1156, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 1167, 898, 898, 898, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1168, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 1169, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1170, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1158, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1171, 898, 898, 898, 1172, 898, 898, 898, 898, 898, 1173, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1173, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1174, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 1175, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1176, 1177, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 1178, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1179, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1180, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1183, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1184, 1181, 1181, 1185, 1181, 1183, 1181, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1181, 1181, 1181, 1181, 1182, 1181, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1181, 1181, 1181, 1181, 1181, 1182, 950, 1186, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 952, 949, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1187, 898, 898, 1188, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1142, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1153, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1189, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1190, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1160, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1191, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 933, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 1192, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1193, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1153, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1158, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1194, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 1195, 898, 898, 898, 898, 898, 898, 898, 1196, 898, 898, 898, 898, 898, 898, 898, 1197, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1160, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1198, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1199, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1167, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 1200, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1167, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 1201, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1153, 898, 898, 898, 1202, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1203, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1167, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 1204, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1205, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1147, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 1206, 222, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 1207, 964, 1209, 1208, 1208, 1208, 1209, 1208, 1208, 1208, 1208, 1210, 1211, 1210, 1210, 1210, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1209, 1208, 1208, 1208, 1208, 1208, 1210, 1208, 1208, 1212, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1213, 1208, 1210, 1214, 1210, 1210, 1210, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1210, 1214, 1215, 1216, 1217, 1218, 1219, 1221, 1220, 1222, 1224, 1225, 1225, 1225, 1224, 1225, 1225, 1225, 1225, 1226, 1227, 1226, 1226, 1226, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1224, 1225, 1225, 1225, 1225, 1225, 1226, 1225, 1228, 1229, 1225, 1225, 1225, 1228, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1225, 1230, 1225, 1225, 1223, 1225, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1225, 1225, 1225, 1225, 1225, 1223, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 305, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 306, 1231, 1231, 1231, 1231, 305, 1231, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 1231, 1231, 1231, 1231, 304, 1231, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 1231, 1231, 1231, 1231, 1231, 304, 1226, 1232, 1226, 1226, 1226, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1226, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1231, 1239, 1241, 1242, 1242, 1242, 1241, 1242, 1242, 1242, 1242, 1243, 1244, 1243, 1243, 1243, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1241, 1242, 1242, 1242, 1242, 1242, 1243, 1245, 1246, 1247, 1248, 1249, 1250, 1246, 1251, 1252, 1253, 1249, 1254, 1255, 1256, 1249, 1257, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1266, 1266, 1268, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1269, 1270, 1271, 1249, 1272, 1246, 1273, 1274, 1275, 1276, 1277, 1278, 1240, 1240, 1279, 1240, 1240, 1240, 1280, 1281, 1282, 1240, 1240, 1283, 1284, 1285, 1286, 1240, 1287, 1240, 1288, 1240, 1289, 1290, 1291, 1292, 1242, 1240, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 1293, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 314, 314, 314, 314, 314, 1293, 314, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 314, 314, 314, 314, 1240, 314, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 314, 314, 314, 314, 314, 1240, 1295, 1294, 1296, 1243, 1297, 1243, 1243, 1243, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1243, 1297, 1298, 1300, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1300, 1299, 1301, 1302, 1303, 1304, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 309, 309, 1305, 309, 1305, 309, 309, 1305, 1305, 309, 309, 309, 1306, 309, 309, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 309, 309, 309, 309, 309, 309, 309, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 1305, 309, 1305, 1305, 326, 309, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 1305, 1305, 1305, 309, 1305, 326, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 1308, 1308, 1308, 1308, 326, 1308, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 1308, 1308, 1308, 1308, 1308, 326, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1308, 1309, 314, 1249, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1311, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1309, 1310, 1312, 1313, 1249, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1309, 1314, 1309, 1315, 1310, 1317, 1316, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1316, 1319, 1318, 1320, 1318, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1322, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1323, 1321, 1321, 1321, 1321, 1321, 1322, 1321, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 311, 1321, 1325, 1324, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1327, 1324, 1328, 1329, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1330, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1331, 1324, 1324, 1324, 1324, 1324, 1324, 1332, 1324, 1324, 1327, 1324, 1328, 1329, 1324, 1324, 1324, 1333, 1324, 1324, 1324, 1324, 1324, 1330, 1324, 1324, 1334, 1324, 1324, 1324, 1324, 1324, 1331, 1324, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1336, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1337, 1335, 1335, 1335, 1335, 1335, 1336, 1335, 1335, 1335, 1338, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1339, 1335, 1340, 314, 1340, 314, 314, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 314, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1340, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1342, 1341, 1344, 1343, 1345, 1347, 1346, 1346, 1346, 1348, 1346, 1349, 1350, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1332, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1333, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1334, 1324, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1352, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1333, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1334, 1324, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1355, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1356, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1357, 1353, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1358, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1356, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1357, 1353, 1356, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1357, 1353, 1360, 1359, 1361, 1363, 1362, 1362, 1362, 1364, 1362, 1366, 1365, 1367, 1368, 1370, 1370, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1371, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1372, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1373, 1369, 1374, 1374, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1375, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1356, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1357, 1353, 1374, 1374, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1358, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1356, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1357, 1353, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1378, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1379, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1380, 1376, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1383, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1384, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1385, 1381, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1387, 1387, 1387, 1387, 1387, 1387, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1388, 1386, 1387, 1387, 1387, 1387, 1387, 1387, 1386, 1386, 1389, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1390, 1386, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1391, 1391, 1391, 1391, 1391, 1391, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1392, 1353, 1391, 1391, 1391, 1391, 1391, 1391, 1353, 1353, 1356, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1357, 1353, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1391, 1391, 1391, 1391, 1391, 1391, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1358, 1353, 1391, 1391, 1391, 1391, 1391, 1391, 1353, 1353, 1356, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1357, 1353, 1394, 1393, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1396, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1397, 1393, 1393, 1393, 1393, 1393, 1396, 1393, 1393, 1393, 1398, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1399, 1393, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1401, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1398, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1399, 1393, 1402, 1353, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1404, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1405, 1353, 1353, 1353, 1353, 1353, 1404, 1353, 1353, 1353, 1356, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1357, 1353, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1358, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1356, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1357, 1353, 1311, 1318, 1249, 1406, 1310, 1300, 1310, 1407, 1408, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1300, 1318, 1300, 1310, 1300, 1249, 1310, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 1305, 1305, 1305, 1305, 1305, 1305, 1409, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 1305, 1305, 1305, 1305, 326, 1305, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 1305, 1305, 1305, 1305, 1305, 326, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 1293, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1410, 314, 314, 314, 314, 1293, 314, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 314, 314, 314, 314, 1266, 314, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 314, 314, 314, 314, 314, 1266, 1411, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1293, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1410, 1412, 1412, 1412, 1412, 1293, 1412, 1266, 1266, 1266, 1266, 1413, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1266, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1412, 1266, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1293, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1410, 1412, 1412, 1412, 1412, 1293, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1414, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1266, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1412, 1266, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1293, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1410, 1412, 1412, 1412, 1412, 1293, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1415, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1266, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1412, 1266, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1293, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1410, 1412, 1412, 1412, 1412, 1293, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1416, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1266, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1412, 1266, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1293, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1410, 1412, 1412, 1412, 1412, 1293, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1417, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1266, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1412, 1266, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1293, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1410, 1412, 1412, 1412, 1412, 1293, 1412, 1266, 1266, 1266, 1416, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1266, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1412, 1266, 1418, 1420, 1419, 1421, 1422, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1424, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1425, 1426, 1240, 1240, 1240, 1240, 1240, 1427, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1428, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1429, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1430, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1431, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1432, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1433, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1434, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1435, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1436, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1437, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1438, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1439, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1440, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1441, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1442, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1438, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1443, 1240, 1444, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1445, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1446, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1447, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1448, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1449, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1450, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1451, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1452, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1448, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1453, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1454, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1455, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1456, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1457, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1458, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1448, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1459, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1460, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1461, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 328, 329, 328, 328, 328, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 328, 1293, 1462, 330, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1462, 1462, 331, 1462, 1462, 1293, 1462, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1462, 332, 1462, 1462, 1240, 1462, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1462, 1462, 1462, 1462, 1462, 1240, 345, 346, 345, 345, 345, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 345, 344, 344, 347, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 350, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 349, 344, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1464, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1465, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1466, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1293, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1467, 1467, 1467, 1467, 1467, 1293, 1467, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1467, 1467, 1467, 1467, 1240, 1467, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1468, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1467, 1467, 1467, 1467, 1467, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1469, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1470, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1471, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1472, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1473, 1240, 1474, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1475, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1448, 1240, 1240, 1240, 1476, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1448, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1441, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1477, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1478, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1458, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1479, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1282, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1480, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1481, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1441, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1448, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1482, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1448, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1483, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1484, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1485, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1458, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1486, 1240, 1240, 1240, 1487, 1240, 1240, 1240, 1240, 1240, 1488, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1489, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1455, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1441, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1490, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1491, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1492, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1493, 1494, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1441, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1495, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1496, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1482, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1497, 1240, 1240, 1498, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1441, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1499, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1455, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1500, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1501, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1502, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1441, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1503, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1504, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1490, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1505, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1506, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1452, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1481, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1507, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1508, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1509, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1510, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1511, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1447, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1512, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1513, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1482, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1514, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1482, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1515, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1452, 1240, 1240, 1240, 1516, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1517, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1482, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1518, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1519, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1520, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1490, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1521, 1309, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1249, 1299, 1522, 1524, 1523, 1524, 1524, 1524, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1524, 1523, 1523, 1525, 1523, 1523, 1526, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 358, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1527, 1523, 354, 355, 354, 354, 354, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 354, 1528, 1528, 356, 1528, 1528, 357, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 358, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 359, 1528, 361, 1529, 361, 361, 361, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 361, 1529, 1529, 356, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 359, 1529, 1531, 1530, 1533, 1532, 364, 363, 369, 1528, 367, 1528, 1535, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1536, 1534, 1535, 1534, 1535, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1538, 1534, 1535, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1539, 1534, 1535, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1540, 1534, 1542, 1540, 0]]; + $writer = [[1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 12, 14, 12, 14, 14, 12, 12, 14, 14, 14, 15, 14, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 14, 12, 12, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 14, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 14, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 12, 12, 12, 12, 12, 12, 18, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 19, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 20, 19, 22, 22, 22, 19, 22, 22, 22, 22, 22, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 24, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 25, 22, 19, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 25, 22, 19, 27, 27, 27, 19, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 19, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 29, 27, 19, 30, 30, 30, 19, 30, 30, 30, 30, 30, 31, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 19, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 32, 30, 19, 30, 30, 30, 19, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 19, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 32, 30, 19, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 33, 20, 19, 34, 34, 34, 19, 34, 34, 34, 34, 34, 35, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 19, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 36, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 37, 34, 34, 34, 34, 34, 34, 38, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 39, 34, 19, 34, 34, 34, 19, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 19, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 39, 34, 40, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 41, 19, 41, 19, 19, 42, 42, 42, 19, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 19, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 44, 42, 19, 22, 22, 22, 19, 22, 22, 22, 22, 22, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 25, 22, 19, 45, 45, 45, 19, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 19, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 45, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 49, 49, 47, 49, 47, 49, 49, 47, 47, 49, 49, 49, 50, 49, 49, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 49, 49, 49, 49, 49, 49, 49, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 49, 47, 47, 48, 49, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 49, 47, 48, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 47, 47, 47, 47, 47, 47, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 47, 47, 47, 47, 49, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 47, 47, 47, 47, 47, 49, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 47, 47, 47, 47, 47, 47, 53, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 48, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 47, 48, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 47, 47, 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 48, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 47, 48, 54, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 55, 54, 57, 57, 57, 54, 57, 57, 57, 57, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 59, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 60, 57, 54, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 61, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 60, 57, 54, 62, 62, 62, 54, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 54, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 54, 65, 65, 65, 54, 65, 65, 65, 65, 65, 66, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 54, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 67, 65, 54, 65, 65, 65, 54, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 54, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 67, 65, 54, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 68, 55, 54, 69, 69, 69, 54, 69, 69, 69, 69, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 54, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 71, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 72, 69, 69, 69, 69, 69, 69, 73, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 74, 69, 54, 69, 69, 69, 54, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 54, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 74, 69, 75, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 76, 54, 76, 54, 54, 77, 77, 77, 54, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 54, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 79, 77, 54, 57, 57, 57, 54, 57, 57, 57, 57, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 61, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 60, 57, 54, 80, 80, 80, 54, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 54, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 80, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 84, 84, 82, 84, 82, 84, 84, 82, 82, 84, 84, 84, 85, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 84, 84, 84, 84, 84, 84, 84, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 84, 82, 82, 83, 84, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 84, 82, 83, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 82, 82, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 84, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 82, 84, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 82, 82, 82, 82, 82, 82, 88, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 83, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 82, 83, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 83, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 82, 83, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 91, 89, 91, 89, 91, 91, 89, 89, 91, 91, 91, 92, 91, 91, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 91, 91, 91, 91, 91, 91, 91, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 91, 89, 89, 90, 91, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 91, 89, 90, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 89, 89, 89, 89, 89, 89, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 89, 89, 89, 89, 91, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 89, 89, 89, 89, 89, 91, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 89, 89, 89, 89, 89, 89, 95, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 90, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 89, 90, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 89, 89, 89, 89, 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 90, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 89, 90, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 97, 97, 98, 97, 98, 97, 97, 98, 98, 97, 97, 97, 99, 97, 97, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 97, 97, 97, 97, 97, 97, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 98, 97, 98, 98, 96, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 98, 98, 98, 97, 98, 96, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 98, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 97, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 102, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 98, 98, 98, 98, 98, 98, 98, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 98, 98, 98, 98, 103, 98, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 98, 98, 98, 98, 98, 103, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104, 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104, 104, 105, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104, 104, 104, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 110, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 111, 108, 108, 108, 108, 110, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 108, 108, 108, 108, 109, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 108, 108, 108, 108, 108, 109, 111, 108, 108, 112, 113, 108, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 116, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 114, 114, 114, 114, 116, 114, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 114, 114, 114, 114, 115, 114, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 114, 114, 114, 114, 114, 115, 117, 114, 119, 118, 120, 118, 121, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 123, 118, 123, 123, 123, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 123, 118, 118, 118, 118, 124, 125, 118, 126, 118, 127, 128, 129, 130, 131, 124, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 132, 118, 133, 129, 134, 135, 118, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 136, 137, 129, 138, 122, 118, 122, 122, 122, 122, 122, 122, 122, 122, 139, 122, 122, 122, 122, 122, 122, 122, 122, 140, 122, 122, 141, 122, 142, 122, 122, 122, 143, 144, 118, 138, 118, 122, 118, 118, 118, 118, 118, 118, 118, 118, 118, 145, 118, 145, 145, 145, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 145, 118, 118, 118, 118, 146, 147, 118, 148, 118, 149, 150, 151, 152, 153, 146, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 154, 118, 155, 151, 156, 157, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 158, 159, 151, 120, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 160, 115, 115, 115, 115, 115, 115, 115, 115, 161, 115, 115, 162, 115, 163, 115, 115, 115, 164, 165, 118, 120, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 166, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 167, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 168, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 169, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 170, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 166, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 171, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 172, 115, 115, 115, 115, 115, 115, 115, 173, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 174, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 175, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 166, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 176, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 166, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 177, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 178, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 170, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 180, 179, 181, 179, 182, 179, 151, 179, 183, 179, 179, 179, 179, 179, 179, 179, 184, 179, 185, 179, 186, 179, 151, 179, 187, 179, 151, 179, 188, 179, 182, 179, 190, 189, 191, 191, 191, 191, 191, 191, 191, 191, 191, 193, 191, 193, 193, 193, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 193, 191, 191, 191, 191, 191, 191, 191, 194, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 191, 195, 191, 191, 192, 191, 192, 192, 192, 196, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 191, 191, 191, 191, 191, 192, 197, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 199, 191, 199, 199, 199, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 199, 191, 191, 191, 191, 191, 191, 191, 200, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 191, 201, 191, 191, 198, 191, 198, 198, 198, 202, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 191, 191, 191, 191, 191, 198, 204, 203, 204, 204, 204, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 204, 203, 203, 203, 203, 203, 203, 203, 205, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 206, 203, 207, 203, 208, 203, 208, 208, 208, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 208, 203, 203, 203, 203, 203, 203, 203, 209, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 210, 203, 211, 212, 214, 213, 215, 213, 216, 213, 217, 213, 218, 213, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 220, 220, 220, 220, 220, 220, 220, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 220, 220, 220, 220, 220, 220, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 220, 220, 220, 220, 220, 219, 221, 211, 222, 223, 222, 222, 222, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 222, 211, 211, 224, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 226, 211, 227, 228, 227, 227, 227, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 227, 211, 211, 229, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 231, 211, 233, 234, 233, 233, 233, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 233, 232, 232, 235, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 237, 232, 239, 240, 239, 239, 239, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 238, 238, 241, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 243, 238, 239, 244, 239, 239, 239, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 238, 238, 241, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 243, 238, 223, 211, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 247, 247, 245, 247, 245, 247, 247, 245, 245, 247, 247, 247, 248, 247, 247, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 247, 247, 247, 247, 247, 247, 247, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 245, 247, 245, 245, 246, 247, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 245, 245, 245, 247, 245, 246, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 245, 245, 245, 245, 245, 245, 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 245, 245, 245, 245, 247, 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 245, 245, 245, 245, 245, 247, 250, 247, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 247, 245, 250, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 252, 245, 245, 245, 245, 253, 245, 245, 245, 245, 245, 254, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 221, 245, 245, 245, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 245, 245, 245, 245, 251, 255, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 245, 245, 245, 254, 245, 251, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 258, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 257, 257, 257, 257, 257, 257, 257, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 257, 257, 257, 257, 256, 257, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 257, 257, 257, 257, 257, 256, 260, 259, 263, 262, 258, 257, 263, 264, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 252, 245, 245, 245, 245, 253, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 245, 245, 245, 245, 251, 255, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 245, 245, 245, 245, 245, 251, 266, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 263, 265, 263, 266, 267, 268, 268, 268, 267, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 267, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 269, 268, 267, 270, 270, 270, 267, 270, 270, 270, 270, 270, 271, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 267, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 272, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 273, 270, 267, 270, 270, 270, 267, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 267, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 274, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 273, 270, 267, 275, 275, 275, 267, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 267, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 277, 275, 267, 278, 278, 278, 267, 278, 278, 278, 278, 278, 279, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 267, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 280, 278, 267, 278, 278, 278, 267, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 267, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 280, 278, 267, 268, 268, 268, 267, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 267, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 281, 268, 267, 282, 282, 282, 267, 282, 282, 282, 282, 282, 283, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 267, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 284, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 285, 282, 282, 282, 282, 282, 282, 286, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 287, 282, 267, 282, 282, 282, 267, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 267, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 287, 282, 288, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 289, 267, 289, 267, 267, 290, 290, 290, 267, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 267, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 292, 290, 267, 270, 270, 270, 267, 270, 270, 270, 270, 270, 271, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 267, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 274, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 273, 270, 267, 293, 293, 293, 267, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 267, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 293, 293, 293, 293, 293, 293, 293, 294, 294, 294, 294, 294, 294, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 294, 294, 294, 294, 294, 294, 293, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 296, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 211, 211, 298, 211, 296, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 211, 211, 211, 211, 295, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 211, 211, 211, 211, 211, 295, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 296, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 245, 245, 298, 245, 296, 245, 295, 295, 295, 295, 295, 295, 299, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 295, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 245, 295, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 296, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 245, 245, 298, 245, 296, 245, 295, 295, 295, 295, 295, 295, 295, 295, 300, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 295, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 245, 295, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 296, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 245, 245, 298, 245, 296, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 301, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 295, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 245, 295, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 296, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 245, 245, 298, 245, 296, 245, 295, 295, 295, 301, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 295, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 245, 295, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 304, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 305, 302, 302, 302, 302, 304, 302, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 302, 302, 302, 302, 303, 302, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 302, 302, 302, 302, 302, 303, 305, 302, 302, 306, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 307, 307, 307, 307, 307, 307, 307, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 307, 307, 307, 307, 308, 307, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 307, 307, 307, 307, 307, 308, 310, 309, 310, 309, 309, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 309, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 309, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 309, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 313, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 313, 317, 316, 318, 316, 319, 316, 320, 316, 322, 321, 323, 321, 324, 321, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 307, 307, 307, 307, 307, 307, 307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 307, 307, 307, 307, 325, 307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 307, 307, 307, 307, 307, 325, 326, 313, 327, 328, 327, 327, 327, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 327, 313, 313, 329, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 330, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 331, 313, 332, 333, 332, 332, 332, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 332, 313, 313, 334, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 335, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 336, 313, 338, 339, 338, 338, 338, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 338, 337, 337, 340, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 341, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 342, 337, 344, 345, 344, 344, 344, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 343, 343, 346, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 347, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 348, 343, 344, 345, 344, 344, 344, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 343, 343, 346, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 349, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 348, 343, 344, 350, 344, 344, 344, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 343, 343, 346, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 347, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 348, 343, 351, 313, 328, 313, 353, 354, 353, 353, 353, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 353, 352, 352, 355, 352, 352, 356, 352, 352, 352, 352, 352, 352, 352, 357, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 358, 352, 360, 354, 360, 360, 360, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 360, 359, 359, 355, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 358, 359, 363, 362, 365, 364, 366, 361, 367, 361, 368, 352, 370, 369, 369, 369, 370, 369, 369, 369, 369, 371, 372, 371, 371, 371, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 370, 369, 369, 369, 369, 369, 371, 369, 369, 373, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 374, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 375, 369, 369, 376, 369, 371, 377, 371, 371, 371, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 371, 377, 378, 379, 380, 381, 382, 384, 383, 386, 387, 386, 386, 386, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 386, 385, 372, 383, 388, 383, 390, 389, 389, 389, 390, 389, 389, 389, 389, 391, 392, 391, 391, 391, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 390, 389, 389, 389, 389, 389, 391, 389, 389, 393, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 394, 389, 391, 395, 391, 391, 391, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 391, 395, 397, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 398, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 399, 396, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 400, 400, 400, 400, 400, 400, 400, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 400, 400, 400, 400, 13, 400, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 400, 400, 400, 400, 400, 13, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 400, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 401, 401, 401, 401, 401, 401, 401, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 401, 401, 401, 401, 17, 401, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 401, 401, 401, 401, 401, 17, 404, 403, 403, 403, 404, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 404, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 405, 405, 405, 405, 405, 405, 405, 405, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 406, 403, 403, 403, 403, 403, 403, 403, 403, 403, 407, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 408, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 409, 403, 403, 410, 403, 411, 412, 414, 414, 414, 414, 414, 414, 414, 414, 413, 415, 415, 415, 415, 415, 415, 415, 415, 413, 413, 416, 416, 42, 42, 42, 416, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 416, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 417, 42, 418, 419, 420, 420, 42, 42, 42, 420, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 420, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 421, 42, 41, 420, 422, 423, 424, 424, 27, 27, 27, 424, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 424, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 425, 27, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 424, 424, 424, 424, 424, 424, 424, 426, 426, 426, 426, 426, 426, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 426, 426, 426, 426, 426, 426, 424, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 427, 427, 427, 427, 427, 427, 427, 428, 428, 428, 428, 428, 428, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 428, 428, 428, 428, 428, 428, 427, 427, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 420, 420, 420, 420, 420, 420, 420, 429, 429, 429, 429, 429, 429, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 429, 429, 429, 429, 429, 429, 420, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 430, 430, 430, 430, 430, 430, 430, 431, 431, 431, 431, 431, 431, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 431, 431, 431, 431, 431, 431, 430, 430, 420, 20, 20, 20, 420, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 420, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 432, 20, 416, 27, 27, 27, 416, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 416, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 29, 27, 416, 433, 433, 433, 416, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 416, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 434, 433, 435, 436, 436, 433, 433, 433, 436, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 436, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 437, 433, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 436, 436, 436, 436, 436, 436, 436, 438, 438, 438, 438, 438, 438, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 438, 438, 438, 438, 438, 438, 436, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 439, 439, 439, 439, 439, 439, 439, 440, 440, 440, 440, 440, 440, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 440, 440, 440, 440, 440, 440, 439, 439, 436, 20, 20, 20, 436, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 436, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 432, 20, 441, 436, 436, 27, 27, 27, 436, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 436, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 29, 27, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 442, 442, 442, 442, 442, 442, 442, 443, 443, 443, 443, 443, 443, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 443, 443, 443, 443, 443, 443, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 444, 442, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 442, 442, 442, 442, 442, 442, 442, 445, 445, 445, 445, 445, 445, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 445, 445, 445, 445, 445, 445, 442, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 442, 442, 442, 442, 442, 442, 442, 446, 446, 446, 446, 446, 446, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 446, 446, 446, 446, 446, 446, 442, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 442, 442, 442, 442, 442, 442, 442, 447, 447, 447, 447, 447, 447, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 447, 447, 447, 447, 447, 447, 442, 448, 451, 450, 450, 450, 451, 450, 450, 450, 450, 452, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 451, 450, 450, 450, 450, 450, 452, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 450, 450, 450, 450, 450, 450, 450, 453, 453, 453, 453, 453, 453, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 453, 453, 453, 453, 453, 453, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 454, 450, 451, 450, 450, 450, 451, 450, 450, 450, 450, 449, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 451, 450, 450, 450, 450, 450, 449, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 450, 450, 450, 450, 450, 450, 450, 455, 455, 455, 455, 455, 455, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 455, 455, 455, 455, 455, 455, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 456, 450, 449, 451, 455, 455, 455, 451, 455, 455, 455, 455, 449, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 451, 455, 455, 455, 455, 455, 449, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 449, 455, 457, 451, 458, 458, 458, 451, 458, 458, 458, 458, 452, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 452, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 449, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 458, 458, 458, 458, 458, 458, 458, 455, 455, 455, 455, 455, 455, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 455, 455, 455, 455, 455, 455, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 458, 458, 458, 458, 458, 458, 458, 460, 460, 460, 460, 460, 460, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 460, 460, 460, 460, 460, 460, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 462, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 458, 458, 458, 458, 458, 458, 458, 463, 463, 463, 463, 463, 463, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 463, 463, 463, 463, 463, 463, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 458, 458, 458, 458, 458, 458, 458, 464, 464, 464, 464, 464, 464, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 464, 464, 464, 464, 464, 464, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 458, 458, 458, 458, 458, 458, 458, 465, 465, 465, 465, 465, 465, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 465, 465, 465, 465, 465, 465, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 458, 458, 458, 458, 458, 458, 458, 466, 466, 466, 466, 466, 466, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 466, 466, 466, 466, 466, 466, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 449, 458, 468, 469, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 470, 470, 470, 470, 470, 470, 470, 471, 471, 471, 471, 471, 471, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 471, 471, 471, 471, 471, 471, 470, 470, 473, 472, 472, 472, 473, 472, 472, 472, 472, 472, 474, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 473, 472, 472, 472, 472, 472, 472, 472, 472, 475, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 476, 472, 478, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 479, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 480, 477, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 481, 481, 481, 481, 481, 481, 481, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 481, 481, 481, 481, 48, 481, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 481, 481, 481, 481, 481, 48, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 481, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 482, 482, 482, 482, 482, 482, 482, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 482, 482, 482, 482, 52, 482, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 482, 482, 482, 482, 482, 52, 485, 484, 484, 484, 485, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 485, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 486, 486, 486, 486, 486, 486, 486, 486, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 487, 484, 484, 484, 484, 484, 484, 484, 484, 484, 488, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 489, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 490, 484, 484, 491, 484, 492, 493, 495, 495, 495, 495, 495, 495, 495, 495, 494, 496, 496, 496, 496, 496, 496, 496, 496, 494, 494, 497, 497, 77, 77, 77, 497, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 497, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 498, 77, 499, 500, 501, 501, 77, 77, 77, 501, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 501, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 502, 77, 76, 501, 503, 504, 505, 505, 62, 62, 62, 505, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 505, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 506, 62, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 505, 505, 505, 505, 505, 505, 505, 507, 507, 507, 507, 507, 507, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 507, 507, 507, 507, 507, 507, 505, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 508, 508, 508, 508, 508, 508, 508, 509, 509, 509, 509, 509, 509, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 509, 509, 509, 509, 509, 509, 508, 508, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 501, 501, 501, 501, 501, 501, 501, 510, 510, 510, 510, 510, 510, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 510, 510, 510, 510, 510, 510, 501, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 511, 511, 511, 511, 511, 511, 511, 512, 512, 512, 512, 512, 512, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 512, 512, 512, 512, 512, 512, 511, 511, 501, 55, 55, 55, 501, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 501, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 513, 55, 497, 62, 62, 62, 497, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 497, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 497, 514, 514, 514, 497, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 497, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 515, 514, 516, 517, 517, 514, 514, 514, 517, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 517, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 518, 514, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 517, 517, 517, 517, 517, 517, 517, 519, 519, 519, 519, 519, 519, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 519, 519, 519, 519, 519, 519, 517, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 520, 520, 520, 520, 520, 520, 520, 521, 521, 521, 521, 521, 521, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 521, 521, 521, 521, 521, 521, 520, 520, 517, 55, 55, 55, 517, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 517, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 513, 55, 522, 517, 517, 62, 62, 62, 517, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 517, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 523, 523, 523, 523, 523, 523, 523, 524, 524, 524, 524, 524, 524, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 524, 524, 524, 524, 524, 524, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 525, 523, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 523, 523, 523, 523, 523, 523, 523, 526, 526, 526, 526, 526, 526, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 526, 526, 526, 526, 526, 526, 523, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 523, 523, 523, 523, 523, 523, 523, 527, 527, 527, 527, 527, 527, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 527, 527, 527, 527, 527, 527, 523, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 523, 523, 523, 523, 523, 523, 523, 528, 528, 528, 528, 528, 528, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 528, 528, 528, 528, 528, 528, 523, 529, 532, 531, 531, 531, 532, 531, 531, 531, 531, 533, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 532, 531, 531, 531, 531, 531, 533, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 531, 531, 531, 531, 531, 531, 531, 534, 534, 534, 534, 534, 534, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 534, 534, 534, 534, 534, 534, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 535, 531, 532, 531, 531, 531, 532, 531, 531, 531, 531, 530, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 532, 531, 531, 531, 531, 531, 530, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 531, 531, 531, 531, 531, 531, 531, 536, 536, 536, 536, 536, 536, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 536, 536, 536, 536, 536, 536, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 537, 531, 530, 532, 536, 536, 536, 532, 536, 536, 536, 536, 530, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 532, 536, 536, 536, 536, 536, 530, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 530, 536, 538, 532, 539, 539, 539, 532, 539, 539, 539, 539, 533, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 533, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 530, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 530, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 530, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 539, 539, 539, 539, 539, 539, 539, 536, 536, 536, 536, 536, 536, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 536, 536, 536, 536, 536, 536, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 539, 539, 539, 539, 539, 539, 539, 541, 541, 541, 541, 541, 541, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 541, 541, 541, 541, 541, 541, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 543, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 539, 539, 539, 539, 539, 539, 539, 544, 544, 544, 544, 544, 544, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 544, 544, 544, 544, 544, 544, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 539, 539, 539, 539, 539, 539, 539, 545, 545, 545, 545, 545, 545, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 545, 545, 545, 545, 545, 545, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 539, 539, 539, 539, 539, 539, 539, 546, 546, 546, 546, 546, 546, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 546, 546, 546, 546, 546, 546, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 539, 539, 539, 539, 539, 539, 539, 547, 547, 547, 547, 547, 547, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 547, 547, 547, 547, 547, 547, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 530, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 530, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 530, 539, 549, 550, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 551, 551, 551, 551, 551, 551, 551, 552, 552, 552, 552, 552, 552, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 552, 552, 552, 552, 552, 552, 551, 551, 554, 553, 553, 553, 554, 553, 553, 553, 553, 555, 556, 555, 555, 555, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 554, 553, 553, 553, 553, 553, 555, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 557, 553, 555, 558, 555, 555, 555, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 555, 558, 559, 560, 560, 560, 559, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 559, 560, 562, 561, 561, 561, 562, 561, 561, 561, 561, 561, 563, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 562, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 564, 561, 565, 566, 566, 566, 565, 566, 566, 566, 566, 566, 567, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 565, 566, 569, 568, 568, 568, 569, 568, 568, 568, 568, 568, 570, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 569, 568, 568, 568, 568, 568, 568, 568, 568, 571, 568, 573, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 574, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 575, 572, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 576, 576, 576, 576, 576, 576, 576, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 576, 576, 576, 576, 83, 576, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 576, 576, 576, 576, 576, 83, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 576, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 577, 577, 577, 577, 577, 577, 577, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 577, 577, 577, 577, 87, 577, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 577, 577, 577, 577, 577, 87, 579, 578, 578, 578, 579, 578, 578, 578, 578, 578, 580, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 579, 578, 582, 581, 581, 581, 582, 581, 581, 581, 581, 583, 584, 583, 583, 583, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 582, 581, 581, 581, 581, 581, 583, 581, 581, 585, 581, 583, 586, 583, 583, 583, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 583, 586, 588, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 589, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 590, 587, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 591, 591, 591, 591, 591, 591, 591, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 591, 591, 591, 591, 90, 591, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 591, 591, 591, 591, 591, 90, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 591, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 592, 592, 592, 592, 592, 592, 592, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 592, 592, 592, 592, 94, 592, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 592, 592, 592, 592, 592, 94, 594, 593, 593, 593, 594, 593, 593, 593, 593, 595, 596, 595, 595, 595, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 594, 593, 593, 593, 593, 593, 595, 593, 595, 597, 595, 595, 595, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 595, 597, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 598, 598, 598, 598, 598, 598, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 598, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 600, 600, 600, 600, 600, 600, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 600, 601, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 602, 98, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 603, 603, 603, 603, 603, 603, 603, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 603, 603, 603, 603, 96, 603, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 603, 603, 603, 603, 603, 96, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 603, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 604, 604, 604, 604, 604, 604, 604, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 604, 604, 604, 604, 101, 604, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 604, 604, 604, 604, 604, 101, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 605, 605, 605, 605, 605, 605, 605, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 605, 605, 605, 605, 103, 605, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 605, 605, 605, 605, 605, 103, 607, 608, 608, 608, 607, 608, 608, 608, 608, 609, 610, 609, 609, 609, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 607, 608, 608, 608, 608, 608, 609, 611, 608, 612, 613, 614, 615, 608, 608, 608, 616, 617, 608, 617, 608, 618, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 619, 608, 620, 621, 622, 608, 608, 623, 624, 623, 623, 625, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 626, 627, 608, 618, 628, 618, 629, 630, 631, 632, 633, 634, 606, 606, 635, 606, 606, 606, 636, 637, 638, 606, 606, 639, 640, 641, 642, 606, 643, 606, 644, 606, 608, 645, 608, 617, 608, 606, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 647, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 646, 646, 646, 647, 646, 647, 646, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 646, 646, 646, 646, 606, 646, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 646, 646, 646, 646, 646, 606, 609, 648, 609, 609, 609, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 609, 648, 649, 618, 650, 650, 618, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 618, 650, 651, 652, 653, 654, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 105, 105, 655, 105, 655, 105, 105, 655, 655, 105, 105, 105, 657, 105, 105, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 105, 105, 105, 105, 105, 105, 105, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 655, 105, 655, 655, 656, 105, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 655, 655, 655, 105, 655, 656, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 659, 659, 659, 659, 659, 659, 659, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 659, 659, 659, 659, 656, 659, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 659, 659, 659, 659, 659, 656, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 659, 660, 650, 618, 650, 618, 650, 618, 650, 662, 661, 618, 663, 650, 618, 650, 664, 618, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 618, 655, 618, 650, 618, 618, 650, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 647, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 646, 646, 646, 647, 646, 647, 646, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 646, 646, 646, 646, 623, 646, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 646, 646, 646, 646, 646, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 623, 666, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 623, 623, 623, 667, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 623, 623, 623, 623, 623, 668, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 669, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 670, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 669, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 664, 655, 610, 655, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 672, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 673, 674, 606, 606, 606, 606, 606, 675, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 676, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 677, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 678, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 679, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 680, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 681, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 682, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 683, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 684, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 685, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 686, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 682, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 687, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 686, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 688, 606, 689, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 690, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 691, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 692, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 693, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 694, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 695, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 696, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 697, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 698, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 699, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 700, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 701, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 691, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 702, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 703, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 647, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 704, 704, 704, 647, 704, 647, 704, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 704, 704, 704, 704, 606, 704, 606, 606, 606, 606, 606, 606, 606, 606, 705, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 704, 704, 704, 704, 704, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 706, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 707, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 708, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 709, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 710, 606, 711, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 712, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 684, 606, 606, 606, 713, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 714, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 715, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 700, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 716, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 638, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 698, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 717, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 718, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 719, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 700, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 720, 606, 606, 606, 721, 606, 606, 606, 606, 606, 722, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 722, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 723, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 724, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 725, 726, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 727, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 700, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 728, 606, 606, 729, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 695, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 730, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 731, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 713, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 732, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 638, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 733, 606, 606, 606, 606, 606, 606, 606, 606, 606, 727, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 695, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 734, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 735, 606, 606, 606, 606, 606, 606, 606, 736, 606, 606, 606, 606, 606, 606, 606, 737, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 713, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 701, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 721, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 738, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 695, 606, 606, 606, 719, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 739, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 740, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 689, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 618, 650, 742, 743, 743, 743, 742, 743, 743, 743, 743, 744, 743, 744, 744, 744, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 742, 743, 743, 743, 743, 743, 744, 743, 743, 745, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 746, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 743, 747, 743, 743, 741, 743, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 743, 743, 743, 743, 743, 741, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 110, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 111, 748, 748, 748, 748, 110, 748, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 748, 748, 748, 748, 109, 748, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 748, 748, 748, 748, 748, 109, 744, 749, 744, 744, 744, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 744, 749, 750, 751, 752, 753, 754, 748, 755, 748, 756, 758, 759, 759, 759, 758, 759, 759, 759, 759, 760, 761, 760, 760, 760, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 758, 759, 759, 759, 759, 759, 760, 762, 759, 763, 759, 764, 765, 759, 759, 759, 766, 767, 759, 767, 759, 764, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 768, 769, 770, 759, 759, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 772, 773, 759, 764, 757, 764, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 759, 774, 759, 767, 759, 757, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 776, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 775, 775, 775, 775, 775, 776, 775, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 775, 775, 775, 775, 757, 775, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 775, 775, 775, 775, 775, 757, 778, 777, 779, 760, 780, 760, 760, 760, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 760, 780, 781, 764, 782, 782, 764, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 764, 782, 783, 784, 785, 786, 764, 782, 764, 782, 764, 782, 764, 787, 782, 764, 782, 789, 764, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 764, 788, 764, 782, 764, 764, 782, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 776, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 790, 790, 790, 790, 790, 776, 790, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 790, 790, 790, 790, 771, 790, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 790, 790, 790, 790, 790, 771, 789, 788, 761, 788, 764, 782, 792, 791, 791, 791, 792, 791, 791, 791, 791, 793, 794, 793, 793, 793, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 792, 791, 791, 791, 791, 791, 793, 791, 791, 795, 791, 120, 796, 791, 797, 791, 798, 120, 151, 799, 153, 120, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 800, 791, 801, 151, 802, 803, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 151, 804, 151, 120, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 805, 791, 791, 791, 791, 791, 791, 791, 791, 806, 791, 791, 807, 791, 808, 791, 791, 791, 164, 165, 791, 120, 791, 809, 809, 809, 809, 809, 809, 809, 809, 809, 793, 809, 793, 793, 793, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 793, 809, 809, 809, 809, 146, 147, 809, 148, 809, 149, 150, 151, 152, 153, 146, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 154, 809, 155, 151, 156, 157, 809, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 158, 159, 151, 120, 115, 809, 115, 115, 115, 115, 115, 115, 115, 115, 160, 115, 115, 115, 115, 115, 115, 115, 115, 161, 115, 115, 162, 115, 163, 115, 115, 115, 164, 165, 809, 120, 809, 115, 810, 811, 811, 811, 810, 811, 811, 811, 811, 151, 812, 151, 151, 151, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 810, 811, 811, 811, 811, 811, 151, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 151, 811, 151, 812, 151, 151, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 114, 114, 114, 114, 114, 120, 114, 114, 114, 114, 114, 114, 114, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 114, 151, 812, 151, 151, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 114, 813, 151, 812, 151, 151, 151, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 151, 814, 814, 814, 814, 814, 814, 814, 814, 814, 815, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 151, 814, 151, 812, 151, 151, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 151, 114, 816, 810, 151, 810, 818, 817, 820, 821, 820, 820, 820, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 820, 819, 822, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 116, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 810, 810, 810, 810, 116, 810, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 810, 810, 810, 810, 115, 810, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 810, 810, 810, 810, 810, 115, 823, 151, 812, 151, 151, 151, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 151, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 151, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 120, 810, 824, 825, 826, 827, 828, 829, 151, 812, 151, 151, 151, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 151, 810, 810, 810, 810, 810, 810, 810, 810, 810, 120, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 151, 810, 151, 817, 120, 830, 120, 830, 831, 832, 831, 831, 831, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 831, 819, 833, 830, 834, 834, 834, 834, 834, 834, 834, 834, 834, 123, 834, 123, 123, 123, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 123, 834, 834, 834, 834, 124, 125, 834, 126, 834, 127, 128, 129, 130, 131, 124, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 132, 834, 133, 129, 134, 135, 834, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 136, 137, 129, 138, 122, 834, 122, 122, 122, 122, 122, 122, 122, 122, 139, 122, 122, 122, 122, 122, 122, 122, 122, 140, 122, 122, 141, 122, 142, 122, 122, 122, 143, 144, 834, 138, 834, 122, 151, 830, 835, 830, 836, 830, 837, 830, 838, 190, 190, 190, 838, 190, 190, 190, 190, 839, 190, 839, 839, 839, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 838, 190, 190, 190, 190, 190, 839, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 190, 840, 190, 190, 192, 190, 192, 192, 192, 196, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 190, 190, 190, 190, 190, 192, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 841, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 190, 189, 189, 189, 189, 841, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 189, 189, 189, 189, 192, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 189, 189, 189, 189, 189, 192, 842, 842, 842, 842, 842, 842, 842, 842, 842, 193, 842, 193, 193, 193, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 193, 842, 842, 842, 842, 842, 842, 842, 194, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 842, 195, 842, 842, 192, 842, 192, 192, 192, 196, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 842, 842, 842, 842, 842, 192, 843, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 841, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 190, 842, 842, 842, 842, 841, 842, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 842, 842, 842, 842, 192, 842, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 844, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 842, 842, 842, 842, 842, 192, 197, 842, 846, 845, 845, 845, 846, 845, 845, 845, 845, 847, 845, 847, 847, 847, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 846, 845, 845, 845, 845, 845, 847, 845, 845, 848, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 849, 845, 845, 845, 845, 845, 845, 845, 850, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 851, 845, 847, 852, 847, 847, 847, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 847, 852, 853, 854, 855, 856, 858, 857, 859, 860, 857, 861, 863, 864, 864, 864, 863, 864, 864, 864, 864, 865, 866, 865, 865, 865, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 863, 864, 864, 864, 864, 864, 865, 864, 864, 867, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 864, 868, 864, 864, 862, 864, 862, 862, 862, 862, 862, 862, 862, 862, 869, 862, 862, 862, 862, 862, 862, 862, 862, 870, 862, 862, 871, 862, 872, 862, 862, 862, 864, 864, 864, 864, 864, 862, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 873, 873, 873, 873, 873, 873, 873, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 873, 873, 873, 873, 862, 873, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 873, 873, 873, 873, 873, 862, 865, 874, 865, 865, 865, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 865, 874, 875, 876, 877, 878, 879, 881, 880, 882, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 884, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 885, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 886, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 887, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 888, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 884, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 889, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 890, 862, 862, 862, 862, 862, 862, 862, 891, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 892, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 893, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 884, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 894, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 884, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 895, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 896, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 888, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 898, 221, 221, 221, 898, 221, 221, 221, 221, 899, 900, 899, 899, 899, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 898, 221, 221, 221, 221, 221, 899, 901, 221, 902, 221, 903, 904, 221, 905, 221, 906, 907, 221, 908, 909, 910, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 911, 221, 912, 913, 914, 915, 221, 916, 917, 916, 916, 918, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 919, 920, 221, 921, 922, 221, 923, 924, 925, 926, 927, 928, 897, 897, 929, 897, 897, 897, 930, 931, 932, 897, 897, 933, 934, 935, 936, 897, 937, 897, 938, 897, 939, 940, 221, 921, 221, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 945, 944, 944, 946, 944, 947, 949, 950, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 951, 948, 953, 952, 954, 955, 956, 899, 957, 899, 899, 899, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 899, 957, 959, 958, 961, 962, 961, 961, 961, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 961, 960, 221, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 221, 963, 964, 965, 966, 967, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 969, 969, 969, 969, 969, 969, 969, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 969, 969, 969, 969, 969, 969, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 969, 969, 969, 969, 969, 968, 972, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 221, 971, 973, 975, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 221, 974, 221, 211, 222, 223, 222, 222, 222, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 222, 971, 971, 224, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 971, 971, 971, 221, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 226, 971, 239, 240, 239, 239, 239, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 238, 238, 241, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 243, 238, 222, 223, 222, 222, 222, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 222, 971, 971, 224, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 971, 971, 971, 221, 221, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 226, 971, 977, 963, 979, 978, 981, 980, 963, 982, 982, 982, 963, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 963, 982, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 984, 985, 963, 986, 247, 987, 985, 963, 963, 988, 989, 963, 989, 963, 247, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 990, 963, 991, 992, 993, 963, 994, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 995, 963, 963, 247, 983, 247, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 963, 996, 963, 997, 963, 983, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 999, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 998, 998, 998, 1000, 998, 999, 998, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 998, 998, 998, 998, 983, 998, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 998, 998, 998, 998, 998, 983, 1002, 1001, 1003, 1005, 1006, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1007, 1004, 1009, 1010, 1008, 1011, 1012, 1013, 1014, 247, 998, 998, 1015, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 247, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 998, 998, 998, 998, 998, 998, 998, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 998, 998, 998, 998, 246, 998, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 998, 998, 998, 998, 998, 246, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 998, 1016, 998, 247, 998, 247, 998, 247, 1017, 998, 247, 998, 247, 998, 247, 247, 998, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1018, 1018, 1018, 1018, 1018, 1018, 1021, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1018, 1018, 1018, 1018, 1019, 1018, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1018, 1018, 1018, 1018, 1018, 1019, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1022, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1024, 1024, 1024, 1024, 1025, 1024, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1024, 1024, 1024, 1024, 1024, 1025, 1016, 998, 1015, 998, 1027, 1028, 963, 1029, 262, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 263, 252, 264, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 263, 253, 263, 266, 221, 963, 921, 221, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 221, 963, 221, 972, 963, 1033, 1032, 1032, 1032, 1033, 1032, 1032, 1032, 1032, 1034, 1035, 1034, 1034, 1034, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1033, 1032, 1032, 1032, 1032, 1032, 1034, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1032, 1037, 1032, 1032, 1036, 1032, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1032, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1038, 1038, 1038, 1038, 1039, 1038, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1038, 1038, 1038, 1038, 1038, 1039, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1040, 1040, 1040, 1040, 1041, 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1040, 1040, 1040, 1040, 1040, 1041, 1044, 1043, 1043, 1043, 1044, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1044, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1046, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1047, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1048, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1049, 1043, 1043, 1050, 1043, 1051, 1052, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1053, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1053, 1053, 1056, 1056, 290, 290, 290, 1056, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 1056, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 1057, 290, 1058, 1059, 1060, 1060, 290, 290, 290, 1060, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 1060, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 1061, 290, 289, 1060, 1062, 1063, 1064, 1064, 275, 275, 275, 1064, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 1064, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 1065, 275, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1066, 1066, 1066, 1066, 1066, 1066, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1066, 1066, 1066, 1066, 1066, 1066, 1064, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1068, 1068, 1068, 1068, 1068, 1068, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1068, 1068, 1068, 1068, 1068, 1068, 1067, 1067, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1069, 1069, 1069, 1069, 1069, 1069, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1069, 1069, 1069, 1069, 1069, 1069, 1060, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071, 1071, 1071, 1071, 1071, 1071, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071, 1071, 1071, 1071, 1071, 1071, 1070, 1070, 1060, 268, 268, 268, 1060, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1060, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1072, 268, 1056, 275, 275, 275, 1056, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 1056, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 277, 275, 1056, 1073, 1073, 1073, 1056, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1056, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1074, 1073, 1075, 1076, 1076, 1073, 1073, 1073, 1076, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1076, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1077, 1073, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1078, 1078, 1078, 1078, 1078, 1078, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1078, 1078, 1078, 1078, 1078, 1078, 1076, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1080, 1080, 1080, 1080, 1080, 1080, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1080, 1080, 1080, 1080, 1080, 1080, 1079, 1079, 1076, 268, 268, 268, 1076, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1076, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1072, 268, 1081, 1076, 1076, 275, 275, 275, 1076, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 1076, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 277, 275, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1083, 1083, 1083, 1083, 1083, 1083, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1083, 1083, 1083, 1083, 1083, 1083, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1084, 1082, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1085, 1085, 1085, 1085, 1085, 1085, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1085, 1085, 1085, 1085, 1085, 1085, 1082, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1086, 1086, 1086, 1086, 1086, 1086, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1086, 1086, 1086, 1086, 1086, 1086, 1082, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1087, 1087, 1087, 1087, 1087, 1087, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1087, 1087, 1087, 1087, 1087, 1087, 1082, 1088, 1091, 1090, 1090, 1090, 1091, 1090, 1090, 1090, 1090, 1092, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1091, 1090, 1090, 1090, 1090, 1090, 1092, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1093, 1093, 1093, 1093, 1093, 1093, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1093, 1093, 1093, 1093, 1093, 1093, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1094, 1090, 1091, 1090, 1090, 1090, 1091, 1090, 1090, 1090, 1090, 1089, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1091, 1090, 1090, 1090, 1090, 1090, 1089, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1095, 1095, 1095, 1095, 1095, 1095, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1095, 1095, 1095, 1095, 1095, 1095, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1096, 1090, 1089, 1091, 1095, 1095, 1095, 1091, 1095, 1095, 1095, 1095, 1089, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1091, 1095, 1095, 1095, 1095, 1095, 1089, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1089, 1095, 1097, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1092, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1092, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1089, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1095, 1095, 1095, 1095, 1095, 1095, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1095, 1095, 1095, 1095, 1095, 1095, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1101, 1101, 1101, 1101, 1101, 1101, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1101, 1101, 1101, 1101, 1101, 1101, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1103, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1104, 1104, 1104, 1104, 1104, 1104, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1104, 1104, 1104, 1104, 1104, 1104, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1105, 1105, 1105, 1105, 1105, 1105, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1105, 1105, 1105, 1105, 1105, 1105, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1106, 1106, 1106, 1106, 1106, 1106, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1106, 1106, 1106, 1106, 1106, 1106, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1107, 1107, 1107, 1107, 1107, 1107, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1107, 1107, 1107, 1107, 1107, 1107, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1089, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1110, 1110, 1110, 1110, 1110, 1110, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1110, 1110, 1110, 1110, 1110, 1110, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1111, 1111, 1111, 1111, 1111, 1111, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1111, 1111, 1111, 1111, 1111, 1111, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1112, 1112, 1112, 1112, 1112, 1112, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1112, 1112, 1112, 1112, 1112, 1112, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1113, 1113, 1113, 1113, 1113, 1113, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1113, 1113, 1113, 1113, 1113, 1113, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1114, 1114, 1114, 1114, 1114, 1114, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1114, 1114, 1114, 1114, 1114, 1114, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1115, 1115, 1115, 1115, 1115, 1115, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1115, 1115, 1115, 1115, 1115, 1115, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1116, 1116, 1116, 1116, 1116, 1116, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1116, 1116, 1116, 1116, 1116, 1116, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1117, 1117, 1117, 1117, 1117, 1117, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1117, 1117, 1117, 1117, 1117, 1117, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1118, 1118, 1118, 1118, 1118, 1118, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1118, 1118, 1118, 1118, 1118, 1118, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1119, 1119, 1119, 1119, 1119, 1119, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1119, 1119, 1119, 1119, 1119, 1119, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1120, 1120, 1120, 1120, 1120, 1120, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1120, 1120, 1120, 1120, 1120, 1120, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1121, 1122, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1124, 1124, 1124, 1124, 1124, 1124, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1124, 1124, 1124, 1124, 1124, 1124, 1123, 1123, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 296, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 211, 211, 298, 211, 296, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 211, 211, 211, 211, 295, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 211, 211, 211, 211, 211, 295, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 296, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 963, 963, 298, 963, 296, 963, 295, 295, 295, 295, 1125, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 963, 963, 963, 963, 295, 963, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 963, 963, 963, 963, 963, 295, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 296, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 963, 963, 298, 963, 296, 963, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 1126, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 963, 963, 963, 963, 295, 963, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 963, 963, 963, 963, 963, 295, 1127, 1128, 963, 958, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 1129, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 1130, 1131, 897, 897, 897, 897, 897, 1132, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1133, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 1134, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1135, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 1136, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1137, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1138, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 1139, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 1140, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 1141, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 296, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 211, 211, 298, 211, 296, 211, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 211, 211, 211, 211, 897, 211, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 211, 211, 211, 211, 211, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1142, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1143, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 1139, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1144, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1143, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1145, 897, 1146, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1147, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 1148, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1149, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1150, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 1151, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1152, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1153, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 1154, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 1155, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1156, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1157, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 1158, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1148, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1159, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1160, 897, 1161, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1162, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1141, 897, 897, 897, 1159, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1163, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1164, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1157, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 1165, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 932, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1155, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 1166, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1167, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 1168, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1169, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1157, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1170, 897, 897, 897, 1171, 897, 897, 897, 897, 897, 1172, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1172, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1173, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 1174, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1175, 1176, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 1177, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1178, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1179, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1182, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1183, 1180, 1180, 1184, 1180, 1182, 1180, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1180, 1180, 1180, 1180, 1181, 1180, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1180, 1180, 1180, 1180, 1180, 1181, 949, 1185, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 951, 948, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1186, 897, 897, 1187, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1152, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1188, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1189, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1159, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1190, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 932, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 1191, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1192, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1152, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1157, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1193, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 1194, 897, 897, 897, 897, 897, 897, 897, 1195, 897, 897, 897, 897, 897, 897, 897, 1196, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1159, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1197, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1198, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1166, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1199, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1166, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 1200, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1152, 897, 897, 897, 1201, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1202, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1166, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1203, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1204, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1146, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 1205, 221, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 1206, 963, 1208, 1207, 1207, 1207, 1208, 1207, 1207, 1207, 1207, 1209, 1210, 1209, 1209, 1209, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1208, 1207, 1207, 1207, 1207, 1207, 1209, 1207, 1207, 1211, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1212, 1207, 1209, 1213, 1209, 1209, 1209, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1209, 1213, 1214, 1215, 1216, 1217, 1218, 1220, 1219, 1221, 1223, 1224, 1224, 1224, 1223, 1224, 1224, 1224, 1224, 1225, 1226, 1225, 1225, 1225, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1223, 1224, 1224, 1224, 1224, 1224, 1225, 1224, 1227, 1228, 1224, 1224, 1224, 1227, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1224, 1229, 1224, 1224, 1222, 1224, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1224, 1224, 1224, 1224, 1224, 1222, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 304, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 305, 1230, 1230, 1230, 1230, 304, 1230, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 1230, 1230, 1230, 1230, 303, 1230, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 1230, 1230, 1230, 1230, 1230, 303, 1225, 1231, 1225, 1225, 1225, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1225, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1230, 1238, 1240, 1241, 1241, 1241, 1240, 1241, 1241, 1241, 1241, 1242, 1243, 1242, 1242, 1242, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1240, 1241, 1241, 1241, 1241, 1241, 1242, 1244, 1245, 1246, 1247, 1248, 1249, 1245, 1250, 1251, 1252, 1248, 1253, 1254, 1255, 1248, 1256, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1265, 1265, 1267, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1268, 1269, 1270, 1248, 1271, 1245, 1272, 1273, 1274, 1275, 1276, 1277, 1239, 1239, 1278, 1239, 1239, 1239, 1279, 1280, 1281, 1239, 1239, 1282, 1283, 1284, 1285, 1239, 1286, 1239, 1287, 1239, 1288, 1289, 1290, 1291, 1241, 1239, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1292, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 313, 313, 313, 313, 313, 1292, 313, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 313, 313, 313, 313, 1239, 313, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 313, 313, 313, 313, 313, 1239, 1294, 1293, 1295, 1242, 1296, 1242, 1242, 1242, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1242, 1296, 1297, 1299, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1299, 1298, 1300, 1301, 1302, 1303, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 308, 308, 1304, 308, 1304, 308, 308, 1304, 1304, 308, 308, 308, 1305, 308, 308, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 308, 308, 308, 308, 308, 308, 308, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1304, 308, 1304, 1304, 325, 308, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1304, 1304, 1304, 308, 1304, 325, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1307, 1307, 1307, 1307, 325, 1307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1307, 1307, 1307, 1307, 1307, 325, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1307, 1308, 313, 1248, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1310, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1308, 1309, 1311, 1312, 1248, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1308, 1313, 1308, 1314, 1309, 1316, 1315, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 1315, 1318, 1317, 1319, 1317, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1321, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1322, 1320, 1320, 1320, 1320, 1320, 1321, 1320, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 310, 1320, 1324, 1323, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1326, 1323, 1327, 1328, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1329, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1330, 1323, 1323, 1323, 1323, 1323, 1323, 1331, 1323, 1323, 1326, 1323, 1327, 1328, 1323, 1323, 1323, 1332, 1323, 1323, 1323, 1323, 1323, 1329, 1323, 1323, 1333, 1323, 1323, 1323, 1323, 1323, 1330, 1323, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1335, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1336, 1334, 1334, 1334, 1334, 1334, 1335, 1334, 1334, 1334, 1337, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1338, 1334, 1339, 313, 1339, 313, 313, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 313, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1339, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1341, 1340, 1343, 1342, 1344, 1346, 1345, 1345, 1345, 1347, 1345, 1348, 1349, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1331, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1332, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1333, 1323, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1351, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1332, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1333, 1323, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1354, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1357, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1359, 1358, 1360, 1362, 1361, 1361, 1361, 1363, 1361, 1365, 1364, 1366, 1367, 1369, 1369, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1370, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1371, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1372, 1368, 1373, 1373, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1374, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1373, 1373, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1357, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1377, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1378, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1379, 1375, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1382, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1383, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1384, 1380, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1386, 1386, 1386, 1386, 1386, 1386, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1387, 1385, 1386, 1386, 1386, 1386, 1386, 1386, 1385, 1385, 1388, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1389, 1385, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1391, 1352, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1357, 1352, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1393, 1392, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1395, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1396, 1392, 1392, 1392, 1392, 1392, 1395, 1392, 1392, 1392, 1397, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1398, 1392, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1400, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1397, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1398, 1392, 1401, 1352, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1403, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1404, 1352, 1352, 1352, 1352, 1352, 1403, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1357, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1310, 1317, 1248, 1405, 1309, 1299, 1309, 1406, 1407, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1299, 1317, 1299, 1309, 1299, 1248, 1309, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1304, 1304, 1304, 1304, 1304, 1304, 1408, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1304, 1304, 1304, 1304, 325, 1304, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1304, 1304, 1304, 1304, 1304, 325, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1292, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 313, 313, 313, 313, 1292, 313, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 313, 313, 313, 313, 1265, 313, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 313, 313, 313, 313, 313, 1265, 1410, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1265, 1412, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1413, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1414, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1415, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1416, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1415, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1417, 1419, 1418, 1420, 1421, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1423, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1424, 1425, 1239, 1239, 1239, 1239, 1239, 1426, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1427, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1428, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1429, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1430, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1431, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1432, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1433, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1434, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1435, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1436, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1437, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1438, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1439, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1440, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1441, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1437, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1442, 1239, 1443, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1444, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1445, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1446, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1448, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1449, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1450, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1451, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1452, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1453, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1454, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1455, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1456, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1457, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1458, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1459, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1460, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 327, 328, 327, 327, 327, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 327, 1292, 1461, 329, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1461, 1461, 330, 1461, 1461, 1292, 1461, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1461, 331, 1461, 1461, 1239, 1461, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1461, 1461, 1461, 1461, 1461, 1239, 344, 345, 344, 344, 344, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 343, 343, 346, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 349, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 348, 343, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1463, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1464, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1465, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1292, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1466, 1466, 1466, 1466, 1466, 1292, 1466, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1466, 1466, 1466, 1466, 1239, 1466, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1467, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1466, 1466, 1466, 1466, 1466, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1468, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1469, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1470, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1471, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1472, 1239, 1473, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1474, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1475, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1440, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1476, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1477, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1457, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1478, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1281, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1479, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1480, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1440, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1481, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1482, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1483, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1484, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1457, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1485, 1239, 1239, 1239, 1486, 1239, 1239, 1239, 1239, 1239, 1487, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1488, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1454, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1440, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1489, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1490, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1491, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1492, 1493, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1440, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1494, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1495, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1481, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1496, 1239, 1239, 1497, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1440, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1498, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1454, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1499, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1500, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1501, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1440, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1502, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1503, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1489, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1504, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1505, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1451, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1480, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1506, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1507, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1508, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1509, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1510, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1446, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1511, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1512, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1481, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1513, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1481, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1514, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1451, 1239, 1239, 1239, 1515, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1516, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1481, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1517, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1518, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1519, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1489, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1520, 1308, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1248, 1298, 1521, 1523, 1522, 1523, 1523, 1523, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1523, 1522, 1522, 1524, 1522, 1522, 1525, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 357, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1526, 1522, 353, 354, 353, 353, 353, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 353, 1527, 1527, 355, 1527, 1527, 356, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 357, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 358, 1527, 360, 1528, 360, 360, 360, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 360, 1528, 1528, 355, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 358, 1528, 1530, 1529, 1532, 1531, 363, 362, 368, 1527, 366, 1527, 1534, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1535, 1533, 1534, 1533, 1534, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1537, 1533, 1534, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1538, 1533, 1534, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1539, 1533, 1541, 1539, 0]]; $send(self, '_lex_indicies=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7233,7 +7233,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$private("_lex_trans_targs", "_lex_trans_targs="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[187, 2, 3, 4, 193, 6, 7, 8, 9, 10, 187, 187, 196, 199, 196, 12, 200, 201, 14, 196, 208, 209, 212, 213, 225, 222, 214, 215, 216, 19, 217, 218, 219, 227, 229, 230, 234, 235, 236, 231, 25, 18, 210, 211, 27, 259, 260, 262, 264, 262, 30, 265, 266, 32, 262, 273, 274, 277, 278, 290, 287, 279, 280, 281, 37, 282, 283, 284, 292, 294, 295, 299, 300, 301, 296, 43, 36, 275, 276, 45, 324, 325, 332, 334, 332, 48, 335, 336, 50, 338, 341, 338, 52, 342, 343, 54, 349, 348, 0, 56, 350, 351, 58, 352, 353, 353, 353, 353, 466, 61, 62, 63, 466, 65, 466, 495, 66, 67, 495, 495, 499, 499, 71, 66, 72, 497, 498, 500, 501, 499, 495, 502, 503, 505, 68, 69, 506, 507, 70, 499, 73, 74, 79, 86, 509, 510, 72, 497, 498, 500, 501, 499, 495, 502, 503, 505, 68, 69, 506, 507, 70, 73, 74, 79, 86, 509, 510, 508, 75, 76, 77, 78, 80, 81, 84, 82, 83, 85, 87, 88, 495, 90, 91, 92, 94, 97, 95, 96, 98, 100, 526, 526, 526, 527, 102, 529, 103, 530, 104, 527, 102, 529, 103, 530, 564, 105, 564, 106, 107, 105, 564, 106, 564, 564, 564, 110, 111, 112, 113, 575, 564, 564, 564, 116, 117, 118, 564, 121, 116, 117, 118, 564, 121, 119, 119, 117, 118, 585, 120, 119, 119, 117, 118, 585, 120, 117, 564, 602, 564, 123, 603, 609, 127, 618, 619, 132, 133, 127, 128, 617, 128, 617, 564, 129, 130, 131, 620, 134, 564, 634, 635, 638, 639, 651, 648, 640, 641, 642, 139, 643, 644, 645, 653, 655, 656, 660, 661, 662, 657, 145, 138, 636, 637, 147, 698, 699, 149, 566, 108, 568, 151, 152, 701, 803, 154, 155, 156, 803, 811, 811, 811, 159, 833, 832, 811, 835, 837, 811, 164, 165, 166, 841, 811, 168, 169, 852, 821, 874, 172, 173, 174, 178, 179, 172, 173, 174, 178, 179, 175, 175, 173, 174, 176, 177, 175, 175, 173, 174, 176, 177, 922, 173, 811, 991, 180, 993, 182, 186, 994, 184, 991, 181, 991, 183, 993, 183, 993, 185, 993, 991, 187, 187, 188, 189, 190, 192, 194, 195, 187, 187, 187, 191, 187, 191, 187, 1, 187, 187, 187, 5, 196, 196, 197, 196, 198, 202, 196, 196, 11, 13, 196, 196, 196, 196, 203, 204, 205, 15, 21, 26, 237, 28, 196, 196, 196, 206, 207, 196, 16, 196, 196, 196, 17, 196, 196, 196, 20, 220, 196, 221, 223, 196, 224, 226, 228, 22, 196, 196, 23, 232, 196, 233, 24, 196, 238, 242, 239, 240, 241, 196, 196, 243, 244, 247, 249, 258, 245, 246, 196, 248, 250, 252, 251, 196, 253, 254, 255, 256, 257, 196, 196, 196, 261, 262, 262, 262, 263, 267, 262, 29, 31, 262, 262, 262, 262, 268, 269, 270, 33, 39, 44, 302, 46, 262, 262, 262, 271, 272, 262, 34, 262, 262, 262, 35, 262, 262, 262, 38, 285, 262, 286, 288, 262, 289, 291, 293, 40, 262, 262, 41, 297, 262, 298, 42, 262, 303, 307, 304, 305, 306, 262, 262, 308, 309, 312, 314, 323, 310, 311, 262, 313, 315, 317, 316, 262, 318, 319, 320, 321, 322, 262, 262, 262, 326, 327, 327, 328, 327, 329, 327, 327, 327, 330, 330, 330, 331, 330, 330, 330, 332, 332, 332, 333, 332, 47, 49, 332, 332, 332, 337, 337, 337, 338, 338, 339, 338, 340, 338, 338, 51, 53, 338, 338, 338, 344, 344, 345, 344, 344, 346, 347, 346, 55, 57, 348, 348, 348, 354, 353, 353, 355, 356, 357, 358, 360, 363, 364, 365, 366, 353, 367, 368, 370, 372, 373, 374, 378, 380, 381, 382, 398, 403, 410, 415, 422, 429, 432, 433, 437, 431, 441, 449, 453, 455, 460, 462, 465, 353, 353, 353, 353, 353, 353, 359, 353, 359, 353, 361, 59, 362, 353, 60, 353, 353, 369, 371, 353, 375, 376, 377, 373, 379, 353, 383, 384, 393, 396, 385, 386, 387, 388, 389, 390, 391, 392, 354, 394, 395, 397, 399, 402, 400, 401, 404, 407, 405, 406, 408, 409, 411, 413, 412, 414, 416, 417, 353, 418, 419, 420, 421, 353, 423, 426, 424, 425, 427, 428, 430, 434, 435, 436, 438, 440, 439, 442, 443, 444, 446, 445, 447, 448, 450, 451, 452, 454, 456, 457, 458, 459, 461, 463, 464, 467, 466, 466, 468, 469, 471, 472, 466, 466, 466, 470, 466, 470, 64, 473, 466, 475, 474, 474, 478, 479, 480, 481, 474, 483, 484, 485, 486, 488, 490, 491, 492, 493, 494, 474, 476, 474, 477, 474, 474, 474, 474, 474, 482, 474, 482, 487, 474, 489, 474, 495, 495, 496, 511, 512, 498, 514, 515, 502, 516, 517, 518, 519, 520, 522, 523, 524, 525, 495, 495, 495, 495, 495, 495, 499, 504, 495, 495, 495, 495, 495, 495, 495, 495, 495, 513, 495, 513, 495, 495, 495, 495, 521, 495, 89, 93, 99, 526, 528, 531, 101, 526, 526, 527, 532, 532, 533, 534, 536, 538, 539, 532, 532, 535, 532, 535, 532, 537, 532, 532, 532, 541, 540, 540, 542, 543, 544, 546, 548, 549, 554, 561, 540, 540, 540, 540, 545, 540, 545, 540, 547, 540, 540, 541, 550, 551, 552, 553, 555, 556, 559, 557, 558, 560, 562, 563, 565, 564, 573, 574, 576, 577, 579, 580, 581, 582, 584, 586, 587, 590, 591, 616, 622, 623, 624, 701, 702, 703, 704, 705, 583, 707, 724, 729, 736, 741, 743, 749, 752, 753, 757, 751, 761, 772, 776, 779, 787, 791, 794, 795, 564, 105, 106, 564, 108, 567, 564, 564, 569, 571, 572, 564, 570, 564, 564, 564, 564, 564, 109, 564, 564, 564, 564, 564, 578, 564, 578, 564, 564, 114, 564, 115, 564, 564, 583, 564, 588, 564, 589, 564, 564, 564, 592, 601, 564, 122, 604, 605, 606, 564, 607, 124, 610, 611, 125, 614, 615, 564, 593, 595, 564, 594, 564, 564, 596, 599, 600, 564, 597, 598, 564, 564, 564, 564, 564, 564, 608, 564, 602, 612, 613, 564, 612, 564, 602, 612, 126, 621, 564, 564, 564, 625, 564, 564, 564, 626, 628, 564, 627, 564, 627, 564, 629, 630, 631, 135, 141, 146, 663, 148, 564, 564, 564, 632, 633, 564, 136, 564, 564, 564, 137, 564, 564, 564, 140, 646, 564, 647, 649, 564, 650, 652, 654, 142, 564, 564, 143, 658, 564, 659, 144, 564, 664, 668, 665, 666, 667, 564, 564, 669, 670, 673, 684, 697, 671, 672, 564, 674, 675, 676, 678, 677, 564, 679, 680, 681, 682, 683, 685, 692, 686, 687, 688, 689, 690, 691, 693, 694, 695, 696, 564, 564, 564, 700, 150, 153, 564, 706, 708, 709, 719, 722, 710, 711, 712, 713, 714, 715, 716, 717, 718, 720, 721, 723, 725, 728, 726, 727, 730, 733, 731, 732, 734, 735, 737, 739, 738, 740, 742, 744, 746, 745, 747, 748, 750, 718, 754, 755, 756, 758, 760, 759, 762, 763, 764, 769, 765, 766, 767, 564, 565, 566, 108, 768, 571, 770, 771, 773, 774, 775, 777, 778, 780, 781, 782, 785, 783, 784, 786, 788, 789, 790, 792, 793, 564, 583, 796, 796, 797, 798, 799, 801, 796, 796, 796, 800, 796, 800, 796, 802, 796, 804, 803, 803, 805, 806, 803, 807, 809, 803, 803, 803, 803, 808, 803, 808, 810, 803, 812, 811, 811, 815, 816, 817, 811, 818, 820, 823, 824, 825, 826, 827, 811, 828, 829, 834, 862, 866, 811, 867, 869, 871, 811, 872, 873, 875, 879, 881, 882, 884, 885, 903, 908, 915, 923, 930, 937, 942, 943, 947, 941, 952, 962, 968, 971, 980, 984, 988, 989, 990, 823, 813, 811, 814, 811, 811, 811, 811, 811, 811, 819, 811, 819, 811, 157, 822, 811, 811, 811, 811, 811, 811, 811, 811, 811, 830, 811, 831, 811, 811, 158, 160, 811, 161, 843, 854, 857, 836, 858, 859, 844, 848, 850, 811, 836, 161, 838, 840, 162, 811, 838, 811, 839, 811, 811, 163, 842, 811, 811, 845, 847, 811, 845, 846, 848, 850, 847, 811, 849, 811, 811, 851, 853, 811, 167, 811, 811, 811, 855, 847, 848, 850, 855, 856, 811, 845, 847, 848, 850, 811, 845, 847, 848, 850, 811, 860, 847, 848, 850, 860, 861, 811, 161, 862, 836, 863, 848, 850, 864, 847, 161, 864, 836, 865, 868, 870, 811, 170, 171, 811, 811, 876, 877, 878, 873, 880, 811, 811, 883, 811, 811, 811, 886, 887, 896, 901, 888, 889, 890, 891, 892, 893, 894, 895, 812, 897, 898, 899, 900, 812, 902, 904, 907, 905, 906, 812, 812, 909, 912, 910, 911, 913, 914, 812, 916, 918, 917, 919, 920, 921, 811, 811, 924, 812, 925, 811, 926, 927, 928, 929, 813, 931, 934, 932, 933, 935, 936, 938, 939, 940, 812, 944, 945, 946, 948, 950, 951, 949, 812, 953, 954, 955, 958, 956, 957, 959, 960, 961, 963, 965, 964, 966, 967, 969, 970, 972, 973, 975, 978, 974, 976, 977, 979, 981, 982, 983, 985, 986, 987, 811, 811, 991, 992, 996, 997, 998, 991, 991, 991, 995, 991, 991, 1000, 999, 1001, 999, 1002, 1003, 1004, 999, 999]]; + $writer = [[186, 2, 3, 4, 192, 6, 7, 8, 9, 10, 186, 186, 195, 198, 195, 12, 199, 200, 14, 195, 207, 208, 211, 212, 224, 221, 213, 214, 215, 19, 216, 217, 218, 226, 228, 229, 233, 234, 235, 230, 25, 18, 209, 210, 27, 258, 259, 261, 263, 261, 30, 264, 265, 32, 261, 272, 273, 276, 277, 289, 286, 278, 279, 280, 37, 281, 282, 283, 291, 293, 294, 298, 299, 300, 295, 43, 36, 274, 275, 45, 323, 324, 331, 333, 331, 48, 334, 335, 50, 337, 340, 337, 52, 341, 342, 54, 348, 347, 0, 56, 349, 350, 58, 351, 352, 352, 352, 352, 465, 61, 62, 63, 465, 465, 494, 65, 66, 494, 494, 498, 498, 70, 65, 71, 496, 497, 499, 500, 498, 494, 501, 502, 504, 67, 68, 505, 506, 69, 498, 72, 73, 78, 85, 508, 509, 71, 496, 497, 499, 500, 498, 494, 501, 502, 504, 67, 68, 505, 506, 69, 72, 73, 78, 85, 508, 509, 507, 74, 75, 76, 77, 79, 80, 83, 81, 82, 84, 86, 87, 494, 89, 90, 91, 93, 96, 94, 95, 97, 99, 525, 525, 525, 526, 101, 528, 102, 529, 103, 526, 101, 528, 102, 529, 563, 104, 563, 105, 106, 104, 563, 105, 563, 563, 563, 109, 110, 111, 112, 574, 563, 563, 563, 115, 116, 117, 563, 120, 115, 116, 117, 563, 120, 118, 118, 116, 117, 584, 119, 118, 118, 116, 117, 584, 119, 116, 563, 601, 563, 122, 602, 608, 126, 617, 618, 131, 132, 126, 127, 616, 127, 616, 563, 128, 129, 130, 619, 133, 563, 633, 634, 637, 638, 650, 647, 639, 640, 641, 138, 642, 643, 644, 652, 654, 655, 659, 660, 661, 656, 144, 137, 635, 636, 146, 697, 698, 148, 565, 107, 567, 150, 151, 700, 802, 153, 154, 155, 802, 810, 810, 810, 158, 832, 831, 810, 834, 836, 810, 163, 164, 165, 840, 810, 167, 168, 851, 820, 873, 171, 172, 173, 177, 178, 171, 172, 173, 177, 178, 174, 174, 172, 173, 175, 176, 174, 174, 172, 173, 175, 176, 921, 172, 810, 990, 179, 992, 181, 185, 993, 183, 990, 180, 990, 182, 992, 182, 992, 184, 992, 990, 186, 186, 187, 188, 189, 191, 193, 194, 186, 186, 186, 190, 186, 190, 186, 1, 186, 186, 186, 5, 195, 195, 196, 195, 197, 201, 195, 195, 11, 13, 195, 195, 195, 195, 202, 203, 204, 15, 21, 26, 236, 28, 195, 195, 195, 205, 206, 195, 16, 195, 195, 195, 17, 195, 195, 195, 20, 219, 195, 220, 222, 195, 223, 225, 227, 22, 195, 195, 23, 231, 195, 232, 24, 195, 237, 241, 238, 239, 240, 195, 195, 242, 243, 246, 248, 257, 244, 245, 195, 247, 249, 251, 250, 195, 252, 253, 254, 255, 256, 195, 195, 195, 260, 261, 261, 261, 262, 266, 261, 29, 31, 261, 261, 261, 261, 267, 268, 269, 33, 39, 44, 301, 46, 261, 261, 261, 270, 271, 261, 34, 261, 261, 261, 35, 261, 261, 261, 38, 284, 261, 285, 287, 261, 288, 290, 292, 40, 261, 261, 41, 296, 261, 297, 42, 261, 302, 306, 303, 304, 305, 261, 261, 307, 308, 311, 313, 322, 309, 310, 261, 312, 314, 316, 315, 261, 317, 318, 319, 320, 321, 261, 261, 261, 325, 326, 326, 327, 326, 328, 326, 326, 326, 329, 329, 329, 330, 329, 329, 329, 331, 331, 331, 332, 331, 47, 49, 331, 331, 331, 336, 336, 336, 337, 337, 338, 337, 339, 337, 337, 51, 53, 337, 337, 337, 343, 343, 344, 343, 343, 345, 346, 345, 55, 57, 347, 347, 347, 353, 352, 352, 354, 355, 356, 357, 359, 362, 363, 364, 365, 352, 366, 367, 369, 371, 372, 373, 377, 379, 380, 381, 397, 402, 409, 414, 421, 428, 431, 432, 436, 430, 440, 448, 452, 454, 459, 461, 464, 352, 352, 352, 352, 352, 352, 358, 352, 358, 352, 360, 59, 361, 352, 60, 352, 352, 368, 370, 352, 374, 375, 376, 372, 378, 352, 382, 383, 392, 395, 384, 385, 386, 387, 388, 389, 390, 391, 353, 393, 394, 396, 398, 401, 399, 400, 403, 406, 404, 405, 407, 408, 410, 412, 411, 413, 415, 416, 352, 417, 418, 419, 420, 352, 422, 425, 423, 424, 426, 427, 429, 433, 434, 435, 437, 439, 438, 441, 442, 443, 445, 444, 446, 447, 449, 450, 451, 453, 455, 456, 457, 458, 460, 462, 463, 466, 465, 465, 467, 468, 470, 471, 465, 465, 465, 469, 465, 469, 64, 472, 465, 474, 473, 473, 477, 478, 479, 480, 473, 482, 483, 484, 485, 487, 489, 490, 491, 492, 493, 473, 475, 473, 476, 473, 473, 473, 473, 473, 481, 473, 481, 486, 473, 488, 473, 494, 494, 495, 510, 511, 497, 513, 514, 501, 515, 516, 517, 518, 519, 521, 522, 523, 524, 494, 494, 494, 494, 494, 494, 498, 503, 494, 494, 494, 494, 494, 494, 494, 494, 494, 512, 494, 512, 494, 494, 494, 494, 520, 494, 88, 92, 98, 525, 527, 530, 100, 525, 525, 526, 531, 531, 532, 533, 535, 537, 538, 531, 531, 534, 531, 534, 531, 536, 531, 531, 531, 540, 539, 539, 541, 542, 543, 545, 547, 548, 553, 560, 539, 539, 539, 539, 544, 539, 544, 539, 546, 539, 539, 540, 549, 550, 551, 552, 554, 555, 558, 556, 557, 559, 561, 562, 564, 563, 572, 573, 575, 576, 578, 579, 580, 581, 583, 585, 586, 589, 590, 615, 621, 622, 623, 700, 701, 702, 703, 704, 582, 706, 723, 728, 735, 740, 742, 748, 751, 752, 756, 750, 760, 771, 775, 778, 786, 790, 793, 794, 563, 104, 105, 563, 107, 566, 563, 563, 568, 570, 571, 563, 569, 563, 563, 563, 563, 563, 108, 563, 563, 563, 563, 563, 577, 563, 577, 563, 563, 113, 563, 114, 563, 563, 582, 563, 587, 563, 588, 563, 563, 563, 591, 600, 563, 121, 603, 604, 605, 563, 606, 123, 609, 610, 124, 613, 614, 563, 592, 594, 563, 593, 563, 563, 595, 598, 599, 563, 596, 597, 563, 563, 563, 563, 563, 563, 607, 563, 601, 611, 612, 563, 611, 563, 601, 611, 125, 620, 563, 563, 563, 624, 563, 563, 563, 625, 627, 563, 626, 563, 626, 563, 628, 629, 630, 134, 140, 145, 662, 147, 563, 563, 563, 631, 632, 563, 135, 563, 563, 563, 136, 563, 563, 563, 139, 645, 563, 646, 648, 563, 649, 651, 653, 141, 563, 563, 142, 657, 563, 658, 143, 563, 663, 667, 664, 665, 666, 563, 563, 668, 669, 672, 683, 696, 670, 671, 563, 673, 674, 675, 677, 676, 563, 678, 679, 680, 681, 682, 684, 691, 685, 686, 687, 688, 689, 690, 692, 693, 694, 695, 563, 563, 563, 699, 149, 152, 563, 705, 707, 708, 718, 721, 709, 710, 711, 712, 713, 714, 715, 716, 717, 719, 720, 722, 724, 727, 725, 726, 729, 732, 730, 731, 733, 734, 736, 738, 737, 739, 741, 743, 745, 744, 746, 747, 749, 717, 753, 754, 755, 757, 759, 758, 761, 762, 763, 768, 764, 765, 766, 563, 564, 565, 107, 767, 570, 769, 770, 772, 773, 774, 776, 777, 779, 780, 781, 784, 782, 783, 785, 787, 788, 789, 791, 792, 563, 582, 795, 795, 796, 797, 798, 800, 795, 795, 795, 799, 795, 799, 795, 801, 795, 803, 802, 802, 804, 805, 802, 806, 808, 802, 802, 802, 802, 807, 802, 807, 809, 802, 811, 810, 810, 814, 815, 816, 810, 817, 819, 822, 823, 824, 825, 826, 810, 827, 828, 833, 861, 865, 810, 866, 868, 870, 810, 871, 872, 874, 878, 880, 881, 883, 884, 902, 907, 914, 922, 929, 936, 941, 942, 946, 940, 951, 961, 967, 970, 979, 983, 987, 988, 989, 822, 812, 810, 813, 810, 810, 810, 810, 810, 810, 818, 810, 818, 810, 156, 821, 810, 810, 810, 810, 810, 810, 810, 810, 810, 829, 810, 830, 810, 810, 157, 159, 810, 160, 842, 853, 856, 835, 857, 858, 843, 847, 849, 810, 835, 160, 837, 839, 161, 810, 837, 810, 838, 810, 810, 162, 841, 810, 810, 844, 846, 810, 844, 845, 847, 849, 846, 810, 848, 810, 810, 850, 852, 810, 166, 810, 810, 810, 854, 846, 847, 849, 854, 855, 810, 844, 846, 847, 849, 810, 844, 846, 847, 849, 810, 859, 846, 847, 849, 859, 860, 810, 160, 861, 835, 862, 847, 849, 863, 846, 160, 863, 835, 864, 867, 869, 810, 169, 170, 810, 810, 875, 876, 877, 872, 879, 810, 810, 882, 810, 810, 810, 885, 886, 895, 900, 887, 888, 889, 890, 891, 892, 893, 894, 811, 896, 897, 898, 899, 811, 901, 903, 906, 904, 905, 811, 811, 908, 911, 909, 910, 912, 913, 811, 915, 917, 916, 918, 919, 920, 810, 810, 923, 811, 924, 810, 925, 926, 927, 928, 812, 930, 933, 931, 932, 934, 935, 937, 938, 939, 811, 943, 944, 945, 947, 949, 950, 948, 811, 952, 953, 954, 957, 955, 956, 958, 959, 960, 962, 964, 963, 965, 966, 968, 969, 971, 972, 974, 977, 973, 975, 976, 978, 980, 981, 982, 984, 985, 986, 810, 810, 990, 991, 995, 996, 997, 990, 990, 990, 994, 990, 990, 999, 998, 1000, 998, 1001, 1002, 1003, 998, 998]]; $send(self, '_lex_trans_targs=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7243,7 +7243,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$private("_lex_trans_actions", "_lex_trans_actions="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 0, 0, 0, 0, 6, 0, 7, 0, 8, 0, 0, 7, 0, 0, 0, 0, 8, 0, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 10, 0, 0, 0, 0, 11, 0, 7, 0, 8, 0, 0, 7, 0, 0, 0, 0, 8, 0, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 13, 0, 0, 0, 0, 14, 0, 15, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 17, 18, 19, 20, 21, 0, 0, 0, 22, 0, 23, 24, 0, 0, 25, 26, 27, 28, 29, 30, 30, 31, 32, 30, 33, 32, 34, 32, 30, 30, 31, 30, 35, 30, 30, 36, 30, 30, 30, 30, 30, 30, 0, 37, 38, 0, 39, 38, 40, 38, 0, 0, 37, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 46, 0, 0, 0, 46, 29, 47, 30, 30, 30, 47, 48, 0, 49, 0, 29, 30, 50, 30, 51, 52, 53, 0, 0, 0, 0, 0, 54, 55, 56, 0, 29, 0, 57, 0, 30, 58, 30, 59, 30, 60, 61, 62, 61, 63, 61, 0, 64, 65, 64, 66, 64, 67, 68, 0, 69, 0, 0, 0, 0, 70, 70, 0, 0, 71, 71, 72, 0, 29, 73, 0, 0, 0, 70, 0, 74, 0, 7, 0, 8, 0, 0, 7, 0, 0, 0, 0, 8, 0, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 75, 76, 0, 0, 0, 77, 78, 79, 80, 0, 7, 7, 81, 82, 82, 83, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 30, 58, 30, 30, 30, 60, 61, 62, 61, 61, 61, 0, 64, 65, 64, 64, 64, 85, 67, 86, 87, 0, 88, 0, 89, 89, 0, 90, 0, 91, 60, 92, 0, 93, 29, 94, 95, 98, 99, 0, 29, 0, 7, 0, 7, 100, 101, 102, 60, 103, 0, 104, 0, 105, 106, 107, 0, 108, 109, 0, 110, 7, 7, 111, 112, 0, 0, 113, 114, 115, 116, 117, 117, 117, 117, 117, 117, 117, 117, 118, 119, 120, 0, 0, 121, 0, 122, 123, 124, 0, 125, 126, 127, 0, 0, 128, 0, 0, 129, 0, 7, 0, 0, 130, 131, 0, 0, 132, 0, 29, 133, 0, 0, 0, 0, 0, 134, 135, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 138, 139, 140, 0, 141, 142, 143, 7, 7, 144, 0, 0, 145, 146, 147, 148, 117, 117, 117, 117, 117, 117, 117, 117, 149, 150, 151, 0, 0, 152, 0, 153, 154, 155, 0, 156, 157, 158, 0, 0, 159, 0, 0, 160, 0, 7, 0, 0, 161, 162, 0, 0, 163, 0, 29, 164, 0, 0, 0, 0, 0, 165, 166, 0, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 169, 170, 171, 0, 172, 173, 0, 174, 0, 175, 176, 177, 178, 179, 180, 0, 181, 182, 183, 184, 185, 186, 7, 187, 0, 0, 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, 7, 197, 198, 0, 0, 199, 200, 201, 202, 203, 0, 204, 205, 206, 0, 207, 0, 0, 208, 209, 210, 211, 212, 213, 0, 29, 0, 0, 7, 7, 0, 0, 0, 214, 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 217, 218, 219, 220, 221, 60, 222, 0, 223, 0, 0, 0, 224, 0, 225, 226, 0, 0, 227, 0, 0, 0, 228, 0, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 232, 233, 0, 0, 7, 0, 234, 235, 236, 60, 237, 0, 0, 29, 238, 0, 239, 240, 0, 29, 0, 0, 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 242, 0, 243, 0, 244, 245, 246, 247, 248, 60, 249, 0, 0, 250, 0, 251, 252, 253, 254, 29, 0, 28, 0, 0, 28, 0, 0, 0, 0, 0, 0, 7, 7, 7, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 269, 270, 60, 271, 0, 272, 273, 274, 275, 276, 277, 0, 0, 0, 278, 7, 7, 0, 279, 280, 281, 282, 283, 0, 0, 0, 0, 0, 284, 285, 60, 286, 0, 287, 29, 288, 289, 290, 291, 292, 293, 0, 29, 0, 0, 0, 0, 0, 0, 294, 295, 296, 297, 60, 298, 0, 299, 29, 300, 301, 302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 303, 304, 0, 8, 0, 0, 7, 305, 0, 0, 305, 305, 0, 0, 7, 306, 0, 306, 0, 306, 306, 306, 0, 0, 306, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 0, 0, 307, 308, 308, 309, 310, 0, 311, 312, 0, 75, 0, 313, 0, 314, 315, 316, 317, 318, 30, 319, 320, 321, 322, 323, 60, 324, 0, 325, 326, 0, 327, 0, 328, 329, 305, 330, 0, 331, 0, 332, 333, 334, 0, 0, 335, 0, 0, 0, 0, 336, 0, 0, 0, 0, 0, 0, 0, 337, 0, 0, 338, 0, 339, 340, 0, 0, 0, 341, 0, 0, 342, 343, 344, 345, 346, 347, 0, 348, 349, 349, 0, 350, 0, 351, 352, 352, 0, 0, 353, 354, 355, 0, 356, 357, 358, 0, 7, 359, 360, 361, 0, 362, 117, 117, 117, 117, 117, 117, 117, 117, 363, 364, 365, 0, 0, 366, 0, 367, 368, 369, 0, 370, 371, 372, 0, 0, 373, 0, 0, 374, 0, 7, 0, 0, 375, 376, 0, 0, 377, 0, 29, 378, 0, 0, 0, 0, 0, 379, 380, 0, 0, 0, 0, 0, 0, 0, 381, 0, 0, 0, 0, 0, 382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 383, 384, 385, 0, 0, 0, 386, 29, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 75, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 387, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 388, 389, 390, 391, 392, 392, 388, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 393, 394, 395, 396, 0, 29, 0, 0, 397, 398, 399, 60, 400, 0, 401, 29, 402, 7, 403, 404, 0, 29, 405, 0, 0, 406, 407, 408, 409, 60, 410, 0, 29, 411, 412, 413, 414, 0, 29, 0, 415, 0, 7, 416, 0, 0, 0, 0, 417, 0, 0, 418, 418, 0, 419, 0, 0, 0, 420, 7, 421, 421, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 422, 423, 424, 0, 425, 426, 427, 428, 429, 430, 60, 431, 0, 432, 0, 0, 433, 434, 435, 436, 437, 438, 439, 440, 441, 0, 442, 0, 443, 444, 0, 0, 445, 446, 447, 0, 0, 448, 0, 0, 447, 449, 449, 450, 451, 0, 452, 453, 0, 454, 455, 456, 0, 457, 458, 0, 0, 459, 460, 447, 447, 461, 0, 0, 462, 462, 0, 463, 0, 464, 465, 7, 0, 466, 0, 467, 468, 469, 470, 470, 471, 471, 0, 0, 472, 473, 473, 474, 474, 475, 476, 476, 477, 477, 478, 479, 479, 480, 480, 0, 0, 481, 482, 483, 484, 485, 486, 486, 483, 485, 487, 418, 488, 0, 0, 0, 489, 0, 0, 490, 491, 421, 421, 421, 492, 421, 493, 494, 29, 495, 496, 497, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 498, 0, 0, 0, 0, 492, 0, 0, 0, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 501, 0, 0, 0, 0, 0, 500, 502, 503, 0, 504, 0, 505, 0, 0, 0, 0, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 507, 0, 0, 0, 0, 0, 0, 0, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 508, 509, 510, 511, 511, 89, 511, 512, 513, 514, 0, 515, 516, 0, 517, 0, 518, 0, 0, 0, 519, 520]]; + $writer = [[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 0, 0, 0, 0, 6, 0, 7, 0, 8, 0, 0, 7, 0, 0, 0, 0, 8, 0, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 10, 0, 0, 0, 0, 11, 0, 7, 0, 8, 0, 0, 7, 0, 0, 0, 0, 8, 0, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 13, 0, 0, 0, 0, 14, 0, 15, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 17, 18, 19, 20, 21, 0, 0, 0, 22, 23, 24, 0, 0, 25, 26, 27, 28, 29, 30, 30, 31, 32, 30, 33, 32, 34, 32, 30, 30, 31, 30, 35, 30, 30, 36, 30, 30, 30, 30, 30, 30, 0, 37, 38, 0, 39, 38, 40, 38, 0, 0, 37, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 46, 0, 0, 0, 46, 29, 47, 30, 30, 30, 47, 48, 0, 49, 0, 29, 30, 50, 30, 51, 52, 53, 0, 0, 0, 0, 0, 54, 55, 56, 0, 29, 0, 57, 0, 30, 58, 30, 59, 30, 60, 61, 62, 61, 63, 61, 0, 64, 65, 64, 66, 64, 67, 68, 0, 69, 0, 0, 0, 0, 70, 70, 0, 0, 71, 71, 72, 0, 29, 73, 0, 0, 0, 70, 0, 74, 0, 7, 0, 8, 0, 0, 7, 0, 0, 0, 0, 8, 0, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 75, 76, 0, 0, 0, 77, 78, 79, 80, 0, 7, 7, 81, 82, 82, 83, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 30, 58, 30, 30, 30, 60, 61, 62, 61, 61, 61, 0, 64, 65, 64, 64, 64, 85, 67, 86, 87, 0, 88, 0, 89, 89, 0, 90, 0, 91, 60, 92, 0, 93, 29, 94, 95, 98, 99, 0, 29, 0, 7, 0, 7, 100, 101, 102, 60, 103, 0, 104, 0, 105, 106, 107, 0, 108, 109, 0, 110, 7, 7, 111, 112, 0, 0, 113, 114, 115, 116, 117, 117, 117, 117, 117, 117, 117, 117, 118, 119, 120, 0, 0, 121, 0, 122, 123, 124, 0, 125, 126, 127, 0, 0, 128, 0, 0, 129, 0, 7, 0, 0, 130, 131, 0, 0, 132, 0, 29, 133, 0, 0, 0, 0, 0, 134, 135, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 138, 139, 140, 0, 141, 142, 143, 7, 7, 144, 0, 0, 145, 146, 147, 148, 117, 117, 117, 117, 117, 117, 117, 117, 149, 150, 151, 0, 0, 152, 0, 153, 154, 155, 0, 156, 157, 158, 0, 0, 159, 0, 0, 160, 0, 7, 0, 0, 161, 162, 0, 0, 163, 0, 29, 164, 0, 0, 0, 0, 0, 165, 166, 0, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 169, 170, 171, 0, 172, 173, 0, 174, 0, 175, 176, 177, 178, 179, 180, 0, 181, 182, 183, 184, 185, 186, 7, 187, 0, 0, 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, 7, 197, 198, 0, 0, 199, 200, 201, 202, 203, 0, 204, 205, 206, 0, 207, 0, 0, 208, 209, 210, 211, 212, 213, 0, 29, 0, 0, 7, 7, 0, 0, 0, 214, 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 217, 218, 219, 220, 221, 60, 222, 0, 223, 0, 0, 0, 224, 0, 225, 226, 0, 0, 227, 0, 0, 0, 228, 0, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 232, 233, 0, 0, 7, 0, 234, 235, 236, 60, 237, 0, 0, 29, 238, 0, 239, 240, 0, 29, 0, 0, 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 242, 0, 243, 0, 244, 245, 246, 247, 248, 60, 249, 0, 0, 250, 0, 251, 252, 253, 254, 29, 0, 28, 0, 0, 28, 0, 0, 0, 0, 0, 0, 7, 7, 7, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 269, 270, 60, 271, 0, 272, 273, 274, 275, 276, 277, 0, 0, 0, 278, 7, 7, 0, 279, 280, 281, 282, 283, 0, 0, 0, 0, 0, 284, 285, 60, 286, 0, 287, 29, 288, 289, 290, 291, 292, 293, 0, 29, 0, 0, 0, 0, 0, 0, 294, 295, 296, 297, 60, 298, 0, 299, 29, 300, 301, 302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 303, 304, 0, 8, 0, 0, 7, 305, 0, 0, 305, 305, 0, 0, 7, 306, 0, 306, 0, 306, 306, 306, 0, 0, 306, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 0, 0, 307, 308, 308, 309, 310, 0, 311, 312, 0, 75, 0, 313, 0, 314, 315, 316, 317, 318, 30, 319, 320, 321, 322, 323, 60, 324, 0, 325, 326, 0, 327, 0, 328, 329, 305, 330, 0, 331, 0, 332, 333, 334, 0, 0, 335, 0, 0, 0, 0, 336, 0, 0, 0, 0, 0, 0, 0, 337, 0, 0, 338, 0, 339, 340, 0, 0, 0, 341, 0, 0, 342, 343, 344, 345, 346, 347, 0, 348, 349, 349, 0, 350, 0, 351, 352, 352, 0, 0, 353, 354, 355, 0, 356, 357, 358, 0, 7, 359, 360, 361, 0, 362, 117, 117, 117, 117, 117, 117, 117, 117, 363, 364, 365, 0, 0, 366, 0, 367, 368, 369, 0, 370, 371, 372, 0, 0, 373, 0, 0, 374, 0, 7, 0, 0, 375, 376, 0, 0, 377, 0, 29, 378, 0, 0, 0, 0, 0, 379, 380, 0, 0, 0, 0, 0, 0, 0, 381, 0, 0, 0, 0, 0, 382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 383, 384, 385, 0, 0, 0, 386, 29, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 75, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 387, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 388, 389, 390, 391, 392, 392, 388, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 393, 394, 395, 396, 0, 29, 0, 0, 397, 398, 399, 60, 400, 0, 401, 29, 402, 7, 403, 404, 0, 29, 405, 0, 0, 406, 407, 408, 409, 60, 410, 0, 29, 411, 412, 413, 414, 0, 29, 0, 415, 0, 7, 416, 0, 0, 0, 0, 417, 0, 0, 418, 418, 0, 419, 0, 0, 0, 420, 7, 421, 421, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 422, 423, 424, 0, 425, 426, 427, 428, 429, 430, 60, 431, 0, 432, 0, 0, 433, 434, 435, 436, 437, 438, 439, 440, 441, 0, 442, 0, 443, 444, 0, 0, 445, 446, 447, 0, 0, 448, 0, 0, 447, 449, 449, 450, 451, 0, 452, 453, 0, 454, 455, 456, 0, 457, 458, 0, 0, 459, 460, 447, 447, 461, 0, 0, 462, 462, 0, 463, 0, 464, 465, 7, 0, 466, 0, 467, 468, 469, 470, 470, 471, 471, 0, 0, 472, 473, 473, 474, 474, 475, 476, 476, 477, 477, 478, 479, 479, 480, 480, 0, 0, 481, 482, 483, 484, 485, 486, 486, 483, 485, 487, 418, 488, 0, 0, 0, 489, 0, 0, 490, 491, 421, 421, 421, 492, 421, 493, 494, 29, 495, 496, 497, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 498, 0, 0, 0, 0, 492, 0, 0, 0, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 501, 0, 0, 0, 0, 0, 500, 502, 503, 0, 504, 0, 505, 0, 0, 0, 0, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 507, 0, 0, 0, 0, 0, 0, 0, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 508, 509, 510, 511, 511, 89, 511, 512, 513, 514, 0, 515, 516, 0, 517, 0, 518, 0, 0, 0, 519, 520]]; $send(self, '_lex_trans_actions=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7253,7 +7253,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$private("_lex_to_state_actions", "_lex_to_state_actions="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 96, 0, 96, 0, 0, 0, 0, 96, 96, 0, 0, 0, 0, 0, 96, 0, 96, 0, 96, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0]]; + $writer = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 96, 0, 96, 0, 0, 0, 0, 96, 96, 0, 0, 0, 0, 0, 96, 0, 96, 0, 96, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0]]; $send(self, '_lex_to_state_actions=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7263,7 +7263,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$private("_lex_from_state_actions", "_lex_from_state_actions="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 97, 0, 97, 0, 0, 0, 0, 97, 97, 0, 0, 0, 0, 0, 97, 0, 97, 0, 97, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0]]; + $writer = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 97, 0, 97, 0, 0, 0, 0, 97, 97, 0, 0, 0, 0, 0, 97, 0, 97, 0, 97, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0]]; $send(self, '_lex_from_state_actions=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7273,7 +7273,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$private("_lex_eof_trans", "_lex_eof_trans="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 48, 48, 48, 48, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 83, 83, 83, 83, 90, 90, 90, 90, 0, 0, 0, 0, 105, 107, 109, 109, 109, 109, 109, 116, 116, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 191, 193, 193, 193, 205, 205, 205, 213, 215, 215, 215, 215, 215, 221, 213, 213, 213, 213, 213, 213, 213, 247, 247, 247, 247, 247, 247, 213, 263, 213, 263, 247, 247, 213, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 213, 247, 247, 247, 247, 304, 304, 304, 309, 311, 311, 311, 315, 315, 318, 318, 318, 318, 323, 323, 323, 309, 315, 315, 315, 315, 315, 315, 315, 315, 315, 354, 361, 363, 363, 363, 363, 354, 0, 379, 380, 381, 383, 385, 387, 385, 385, 0, 397, 398, 402, 402, 403, 404, 413, 414, 415, 415, 415, 418, 418, 420, 421, 422, 422, 422, 424, 425, 426, 426, 426, 429, 429, 422, 432, 432, 422, 418, 418, 437, 438, 438, 438, 441, 441, 438, 438, 438, 444, 444, 444, 444, 450, 451, 451, 451, 451, 459, 451, 451, 451, 451, 464, 451, 451, 451, 451, 451, 451, 470, 471, 472, 472, 0, 479, 483, 483, 484, 485, 494, 495, 496, 496, 496, 499, 499, 501, 502, 503, 503, 503, 505, 506, 507, 507, 507, 510, 510, 503, 513, 513, 503, 499, 499, 518, 519, 519, 519, 522, 522, 519, 519, 519, 525, 525, 525, 525, 531, 532, 532, 532, 532, 540, 532, 532, 532, 532, 545, 532, 532, 532, 532, 532, 532, 551, 552, 553, 553, 0, 560, 561, 0, 567, 0, 574, 578, 578, 579, 0, 0, 588, 589, 593, 593, 594, 0, 599, 0, 602, 0, 605, 605, 606, 607, 0, 648, 650, 651, 652, 653, 655, 657, 661, 661, 652, 652, 652, 652, 663, 652, 652, 657, 652, 652, 648, 667, 667, 667, 667, 667, 667, 657, 657, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 706, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 652, 0, 750, 751, 752, 754, 750, 750, 758, 0, 777, 779, 781, 782, 783, 784, 785, 787, 784, 784, 784, 784, 784, 790, 784, 784, 792, 790, 790, 784, 0, 811, 812, 116, 116, 815, 816, 116, 812, 812, 819, 821, 824, 812, 825, 812, 826, 827, 829, 831, 812, 819, 832, 832, 821, 832, 836, 832, 832, 832, 832, 0, 191, 844, 845, 844, 844, 0, 854, 855, 857, 859, 861, 859, 863, 0, 875, 876, 877, 878, 880, 882, 884, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 0, 943, 946, 949, 950, 954, 956, 957, 958, 959, 960, 962, 965, 966, 968, 970, 973, 975, 976, 213, 973, 978, 973, 965, 980, 982, 965, 965, 1000, 1003, 1005, 1006, 1010, 1013, 1014, 1015, 1016, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1020, 1024, 1026, 1000, 1000, 965, 1031, 1032, 1032, 1032, 965, 965, 965, 1033, 1040, 1040, 1042, 1044, 1053, 1054, 1055, 1055, 1055, 1058, 1058, 1060, 1061, 1062, 1062, 1062, 1064, 1065, 1066, 1066, 1066, 1069, 1069, 1062, 1072, 1072, 1062, 1058, 1058, 1077, 1078, 1078, 1078, 1081, 1081, 1078, 1078, 1078, 1084, 1084, 1084, 1084, 1090, 1091, 1091, 1091, 1091, 1099, 1091, 1091, 1091, 1091, 1105, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1123, 1124, 1125, 1125, 213, 965, 965, 1129, 965, 960, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 213, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 1182, 950, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 1207, 965, 0, 1215, 1216, 1217, 1219, 1221, 1223, 0, 1232, 1233, 1234, 1235, 1237, 1232, 1240, 0, 315, 1295, 1297, 1298, 1299, 1300, 1302, 1304, 1306, 1309, 1309, 315, 1311, 1313, 1314, 1315, 1311, 1317, 1319, 1319, 1322, 1322, 1325, 1336, 315, 1342, 1344, 1346, 1347, 1350, 1351, 1325, 1325, 1354, 1354, 1354, 1360, 1362, 1363, 1366, 1368, 1369, 1370, 1354, 1354, 1377, 1382, 1387, 1354, 1354, 1394, 1394, 1354, 1354, 1319, 1311, 1311, 1319, 1311, 1311, 1306, 315, 1412, 1413, 1413, 1413, 1413, 1413, 1413, 1419, 1306, 1422, 1423, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1463, 1464, 1424, 1424, 1468, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1522, 1300, 1523, 0, 1529, 1530, 1531, 1533, 1529, 1529, 1529, 0, 1538, 1538, 1538, 1538, 1542]]; + $writer = [[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 48, 48, 48, 48, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 83, 83, 83, 83, 90, 90, 90, 90, 0, 0, 0, 0, 105, 107, 109, 109, 109, 109, 115, 115, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 190, 192, 192, 192, 204, 204, 204, 212, 214, 214, 214, 214, 214, 220, 212, 212, 212, 212, 212, 212, 212, 246, 246, 246, 246, 246, 246, 212, 262, 212, 262, 246, 246, 212, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 212, 246, 246, 246, 246, 303, 303, 303, 308, 310, 310, 310, 314, 314, 317, 317, 317, 317, 322, 322, 322, 308, 314, 314, 314, 314, 314, 314, 314, 314, 314, 353, 360, 362, 362, 362, 362, 353, 0, 378, 379, 380, 382, 384, 386, 384, 384, 0, 396, 397, 401, 401, 402, 403, 412, 413, 414, 414, 414, 417, 417, 419, 420, 421, 421, 421, 423, 424, 425, 425, 425, 428, 428, 421, 431, 431, 421, 417, 417, 436, 437, 437, 437, 440, 440, 437, 437, 437, 443, 443, 443, 443, 449, 450, 450, 450, 450, 458, 450, 450, 450, 450, 463, 450, 450, 450, 450, 450, 450, 469, 470, 471, 471, 0, 478, 482, 482, 483, 484, 493, 494, 495, 495, 495, 498, 498, 500, 501, 502, 502, 502, 504, 505, 506, 506, 506, 509, 509, 502, 512, 512, 502, 498, 498, 517, 518, 518, 518, 521, 521, 518, 518, 518, 524, 524, 524, 524, 530, 531, 531, 531, 531, 539, 531, 531, 531, 531, 544, 531, 531, 531, 531, 531, 531, 550, 551, 552, 552, 0, 559, 560, 0, 566, 0, 573, 577, 577, 578, 0, 0, 587, 588, 592, 592, 593, 0, 598, 0, 601, 0, 604, 604, 605, 606, 0, 647, 649, 650, 651, 652, 654, 656, 660, 660, 651, 651, 651, 651, 662, 651, 651, 656, 651, 651, 647, 666, 666, 666, 666, 666, 666, 656, 656, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 705, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 651, 0, 749, 750, 751, 753, 749, 749, 757, 0, 776, 778, 780, 781, 782, 783, 784, 786, 783, 783, 783, 783, 783, 789, 783, 783, 791, 789, 789, 783, 0, 810, 811, 115, 115, 814, 815, 115, 811, 811, 818, 820, 823, 811, 824, 811, 825, 826, 828, 830, 811, 818, 831, 831, 820, 831, 835, 831, 831, 831, 831, 0, 190, 843, 844, 843, 843, 0, 853, 854, 856, 858, 860, 858, 862, 0, 874, 875, 876, 877, 879, 881, 883, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 0, 942, 945, 948, 949, 953, 955, 956, 957, 958, 959, 961, 964, 965, 967, 969, 972, 974, 975, 212, 972, 977, 972, 964, 979, 981, 964, 964, 999, 1002, 1004, 1005, 1009, 1012, 1013, 1014, 1015, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 1019, 1023, 1025, 999, 999, 964, 1030, 1031, 1031, 1031, 964, 964, 964, 1032, 1039, 1039, 1041, 1043, 1052, 1053, 1054, 1054, 1054, 1057, 1057, 1059, 1060, 1061, 1061, 1061, 1063, 1064, 1065, 1065, 1065, 1068, 1068, 1061, 1071, 1071, 1061, 1057, 1057, 1076, 1077, 1077, 1077, 1080, 1080, 1077, 1077, 1077, 1083, 1083, 1083, 1083, 1089, 1090, 1090, 1090, 1090, 1098, 1090, 1090, 1090, 1090, 1104, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1122, 1123, 1124, 1124, 212, 964, 964, 1128, 964, 959, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 212, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 1181, 949, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 1206, 964, 0, 1214, 1215, 1216, 1218, 1220, 1222, 0, 1231, 1232, 1233, 1234, 1236, 1231, 1239, 0, 314, 1294, 1296, 1297, 1298, 1299, 1301, 1303, 1305, 1308, 1308, 314, 1310, 1312, 1313, 1314, 1310, 1316, 1318, 1318, 1321, 1321, 1324, 1335, 314, 1341, 1343, 1345, 1346, 1349, 1350, 1324, 1324, 1353, 1353, 1353, 1359, 1361, 1362, 1365, 1367, 1368, 1369, 1353, 1353, 1376, 1381, 1386, 1353, 1353, 1393, 1393, 1353, 1353, 1318, 1310, 1310, 1318, 1310, 1310, 1305, 314, 1411, 1412, 1412, 1412, 1412, 1412, 1412, 1418, 1305, 1421, 1422, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1462, 1463, 1423, 1423, 1467, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1521, 1299, 1522, 0, 1528, 1529, 1530, 1532, 1528, 1528, 1528, 0, 1537, 1537, 1537, 1537, 1541]]; $send(self, '_lex_eof_trans=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7281,7 +7281,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_start") })(Opal.get_singleton_class(self), $nesting); - $writer = [187]; + $writer = [186]; $send(self, 'lex_start=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7297,7 +7297,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_interp_words") })(Opal.get_singleton_class(self), $nesting); - $writer = [196]; + $writer = [195]; $send(self, 'lex_en_interp_words=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7305,7 +7305,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_interp_string") })(Opal.get_singleton_class(self), $nesting); - $writer = [262]; + $writer = [261]; $send(self, 'lex_en_interp_string=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7313,7 +7313,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_plain_words") })(Opal.get_singleton_class(self), $nesting); - $writer = [327]; + $writer = [326]; $send(self, 'lex_en_plain_words=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7321,7 +7321,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_plain_string") })(Opal.get_singleton_class(self), $nesting); - $writer = [330]; + $writer = [329]; $send(self, 'lex_en_plain_string=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7329,7 +7329,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_interp_backslash_delimited") })(Opal.get_singleton_class(self), $nesting); - $writer = [332]; + $writer = [331]; $send(self, 'lex_en_interp_backslash_delimited=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7337,7 +7337,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_plain_backslash_delimited") })(Opal.get_singleton_class(self), $nesting); - $writer = [337]; + $writer = [336]; $send(self, 'lex_en_plain_backslash_delimited=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7345,7 +7345,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_interp_backslash_delimited_words") })(Opal.get_singleton_class(self), $nesting); - $writer = [338]; + $writer = [337]; $send(self, 'lex_en_interp_backslash_delimited_words=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7353,7 +7353,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_plain_backslash_delimited_words") })(Opal.get_singleton_class(self), $nesting); - $writer = [344]; + $writer = [343]; $send(self, 'lex_en_plain_backslash_delimited_words=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7361,7 +7361,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_regexp_modifiers") })(Opal.get_singleton_class(self), $nesting); - $writer = [346]; + $writer = [345]; $send(self, 'lex_en_regexp_modifiers=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7369,7 +7369,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_variable") })(Opal.get_singleton_class(self), $nesting); - $writer = [348]; + $writer = [347]; $send(self, 'lex_en_expr_variable=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7377,7 +7377,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_fname") })(Opal.get_singleton_class(self), $nesting); - $writer = [353]; + $writer = [352]; $send(self, 'lex_en_expr_fname=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7385,7 +7385,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_endfn") })(Opal.get_singleton_class(self), $nesting); - $writer = [466]; + $writer = [465]; $send(self, 'lex_en_expr_endfn=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7393,7 +7393,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_dot") })(Opal.get_singleton_class(self), $nesting); - $writer = [474]; + $writer = [473]; $send(self, 'lex_en_expr_dot=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7401,7 +7401,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_arg") })(Opal.get_singleton_class(self), $nesting); - $writer = [495]; + $writer = [494]; $send(self, 'lex_en_expr_arg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7409,7 +7409,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_cmdarg") })(Opal.get_singleton_class(self), $nesting); - $writer = [526]; + $writer = [525]; $send(self, 'lex_en_expr_cmdarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7417,7 +7417,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_endarg") })(Opal.get_singleton_class(self), $nesting); - $writer = [532]; + $writer = [531]; $send(self, 'lex_en_expr_endarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7425,7 +7425,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_mid") })(Opal.get_singleton_class(self), $nesting); - $writer = [540]; + $writer = [539]; $send(self, 'lex_en_expr_mid=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7433,7 +7433,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_beg") })(Opal.get_singleton_class(self), $nesting); - $writer = [564]; + $writer = [563]; $send(self, 'lex_en_expr_beg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7441,7 +7441,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_labelarg") })(Opal.get_singleton_class(self), $nesting); - $writer = [796]; + $writer = [795]; $send(self, 'lex_en_expr_labelarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7449,7 +7449,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_value") })(Opal.get_singleton_class(self), $nesting); - $writer = [803]; + $writer = [802]; $send(self, 'lex_en_expr_value=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7457,7 +7457,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_end") })(Opal.get_singleton_class(self), $nesting); - $writer = [811]; + $writer = [810]; $send(self, 'lex_en_expr_end=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7465,7 +7465,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_leading_dot") })(Opal.get_singleton_class(self), $nesting); - $writer = [991]; + $writer = [990]; $send(self, 'lex_en_leading_dot=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7473,7 +7473,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_line_comment") })(Opal.get_singleton_class(self), $nesting); - $writer = [999]; + $writer = [998]; $send(self, 'lex_en_line_comment=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -7481,7 +7481,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_line_begin") })(Opal.get_singleton_class(self), $nesting); - $writer = [187]; + $writer = [186]; $send(self, 'lex_en_line_begin=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; $const_set($nesting[0], 'ESCAPES', $hash("a".$ord(), "\u0007", "b".$ord(), "\b", "e".$ord(), "\u001b", "f".$ord(), "\f", "n".$ord(), "\n", "r".$ord(), "\r", "s".$ord(), " ", "t".$ord(), "\t", "v".$ord(), "\v", "\\".$ord(), "\\").$freeze()); @@ -7490,7 +7490,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$attr_accessor("diagnostics"); self.$attr_accessor("static_env"); self.$attr_accessor("force_utf32"); - self.$attr_accessor("cond", "cmdarg", "in_kwarg", "context", "command_start"); + self.$attr_accessor("cond", "cmdarg", "context", "command_start"); self.$attr_accessor("tokens", "comments"); self.$attr_reader("paren_nest", "cmdarg_stack", "cond_stack", "lambda_stack"); @@ -7544,7 +7544,6 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.lambda_stack = []; self.dedent_level = nil; self.command_start = true; - self.in_kwarg = false; return (self.cs_before_block_comment = self.$class().$lex_en_line_begin()); }, -1); @@ -7800,7 +7799,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; current_literal.$start_interp_brace(); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -7820,7 +7819,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(109, $ret_or_1)) { @@ -7889,7 +7888,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -7928,7 +7927,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(111, $ret_or_1)) { @@ -7953,7 +7952,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8004,7 +8003,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8033,7 +8032,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; current_literal.$start_interp_brace(); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -8053,7 +8052,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(142, $ret_or_1)) { @@ -8122,7 +8121,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8161,7 +8160,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(144, $ret_or_1)) { @@ -8180,7 +8179,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8231,7 +8230,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8308,7 +8307,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8341,7 +8340,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8418,7 +8417,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8445,7 +8444,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8474,7 +8473,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; current_literal.$start_interp_brace(); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -8494,7 +8493,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(185, $ret_or_1)) { @@ -8563,7 +8562,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8602,7 +8601,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(187, $ret_or_1)) { @@ -8621,7 +8620,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8648,7 +8647,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8725,7 +8724,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8754,7 +8753,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; current_literal.$start_interp_brace(); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -8774,7 +8773,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(195, $ret_or_1)) { @@ -8843,7 +8842,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8882,7 +8881,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(197, $ret_or_1)) { @@ -8907,7 +8906,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8934,7 +8933,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -9011,7 +9010,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -9035,7 +9034,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tREGEXP_OPT", self.$tok(self.ts, $rb_minus(self.te, 1)), self.ts, $rb_minus(self.te, 1)); p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(207, $ret_or_1)) { @@ -9048,7 +9047,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$diagnostic("error", "regexp_options", $hash2(["options"], {"options": unknown_options.$join()})) }; self.$emit("tREGEXP_OPT"); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -9119,7 +9118,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit_table($$('KEYWORDS_BEGIN')); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -9129,7 +9128,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit("tIDENTIFIER"); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -9139,14 +9138,14 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; $writer = [self.top, self.cs]; $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(214, $ret_or_1)) { @@ -9154,7 +9153,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -9166,7 +9165,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(20, $ret_or_1)) { @@ -9184,7 +9183,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;; };; @@ -9194,7 +9193,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(212, $ret_or_1)) { @@ -9212,7 +9211,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit_table($$('KEYWORDS_BEGIN')); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -9223,7 +9222,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit("tCONSTANT"); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -9234,7 +9233,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit("tIDENTIFIER"); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -9245,14 +9244,14 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; $writer = [self.top, self.cs]; $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(220, $ret_or_1)) { @@ -9261,7 +9260,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -9273,7 +9272,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(218, $ret_or_1)) { @@ -9287,7 +9286,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(19, $ret_or_1)) { @@ -9296,7 +9295,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('PUNCTUATION')); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -9308,7 +9307,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(216, $ret_or_1)) { @@ -9318,7 +9317,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS_BEGIN')); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -9328,7 +9327,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit("tCONSTANT"); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -9338,7 +9337,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit("tIDENTIFIER"); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -9352,18 +9351,38 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tLABEL", self.$tok(self.ts, $rb_minus(self.te, 2)), self.ts, $rb_minus(self.te, 1)); p = $rb_minus(p, 1); - self.cs = 796; + self.cs = 795; p = $rb_plus(p, 1); _goto_level = _out; continue;;;; + } else if ($eqeqeq(23, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + if (($truthy($rb_ge(self.version, 31)) && ($truthy(self.context.$in_argdef())))) { + + self.$emit("tBDOT3", "...".$freeze()); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + p = $rb_minus(p, 3); + + self.cs = 810; + _goto_level = _again; + continue;;; + };; } else if ($eqeqeq(233, $ret_or_1)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(232, $ret_or_1)) { @@ -9386,7 +9405,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(21, $ret_or_1)) { @@ -9396,7 +9415,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(241, $ret_or_1)) { @@ -9404,7 +9423,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 495; + self.cs = 494; p = $rb_plus(p, 1); _goto_level = _out; @@ -9415,7 +9434,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(239, $ret_or_1)) { @@ -9455,7 +9474,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 495; + self.cs = 494; p = $rb_plus(p, 1); _goto_level = _out; @@ -9471,7 +9490,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(274, $ret_or_1)) { @@ -9480,7 +9499,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(257, $ret_or_1)) { @@ -9496,7 +9515,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; p = $rb_minus(tm, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(263, $ret_or_1)) { @@ -9506,7 +9525,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(25, $ret_or_1)) { @@ -9515,7 +9534,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(265, $ret_or_1)) { @@ -9524,7 +9543,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(40, $ret_or_1)) { @@ -9533,7 +9552,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(252, $ret_or_1)) { @@ -9542,7 +9561,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(253, $ret_or_1)) { @@ -9561,7 +9580,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(260, $ret_or_1)) { @@ -9572,7 +9591,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$diagnostic("warning", "ambiguous_prefix", $hash2(["prefix"], {"prefix": self.$tok(tm, self.te)}), self.$range(tm, self.te)); p = $rb_minus(tm, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(262, $ret_or_1)) { @@ -9582,7 +9601,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(256, $ret_or_1)) { @@ -9592,7 +9611,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(255, $ret_or_1)) { @@ -9606,7 +9625,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(26, $ret_or_1)) { @@ -9620,7 +9639,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(24, $ret_or_1)) { @@ -9638,7 +9657,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; p = $rb_minus(tm, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;; } else if ($eqeqeq(73, $ret_or_2)) { @@ -9648,7 +9667,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$diagnostic("warning", "ambiguous_prefix", $hash2(["prefix"], {"prefix": self.$tok(tm, self.te)}), self.$range(tm, self.te)); p = $rb_minus(tm, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;; } else if ($eqeqeq(78, $ret_or_2)) { @@ -9657,7 +9676,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;; } else { @@ -9671,7 +9690,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 495; + self.cs = 494; _goto_level = _again; continue;;;; } else if ($eqeqeq(278, $ret_or_1)) { @@ -9690,7 +9709,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 495; + self.cs = 494; _goto_level = _again; continue;;;; } else if ($eqeqeq(45, $ret_or_1)) { @@ -9700,7 +9719,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 495; + self.cs = 494; _goto_level = _again; continue;;;; } else if ($eqeqeq(43, $ret_or_1)) { @@ -9714,7 +9733,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("kDO", "do".$freeze(), $rb_minus(self.te, 2), self.te) }; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -9725,7 +9744,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 495; + self.cs = 494; _goto_level = _again; continue;;; } else { @@ -9736,7 +9755,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit_do(true); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -9747,7 +9766,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(283, $ret_or_1)) { @@ -9770,7 +9789,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(293, $ret_or_1)) { @@ -9779,7 +9798,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(292, $ret_or_1)) { @@ -9798,7 +9817,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(295, $ret_or_1)) { @@ -9812,7 +9831,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(294, $ret_or_1)) { @@ -9822,7 +9841,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS')); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -9833,7 +9852,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;; } else { @@ -9845,7 +9864,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -9886,7 +9905,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit("tSYMBEG", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); - self.cs = 353; + self.cs = 352; _goto_level = _again; continue;;;; } else if ($eqeqeq(335, $ret_or_1)) { @@ -9903,7 +9922,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), $rb_plus(self.ts, 2))); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -9913,7 +9932,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1)), self.ts); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -9926,7 +9945,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$diagnostic("warning", "invalid_escape_use", $hash2(["escape"], {"escape": escape}), self.$range()); p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(356, $ret_or_1)) { @@ -9954,14 +9973,14 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit(($truthy(self.source_buffer.$slice(self.ts)['$=~'](/[A-Z]/)) ? ("tCONSTANT") : ("tIDENTIFIER")), ident, self.ts, $rb_minus(self.te, 2)); p = $rb_minus(p, 1); if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](ident))))) { - self.cs = 811 + self.cs = 810 } else { self.cs = self.$arg_or_cmdarg(cmd_state) }; } else { self.$emit("tLABEL", self.$tok(self.ts, $rb_minus(self.te, 2)), self.ts, $rb_minus(self.te, 1)); - self.cs = 796; + self.cs = 795; }; p = $rb_plus(p, 1); @@ -9974,9 +9993,9 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER", ident_tok, ident_ts, ident_te); p = $rb_minus(ident_te, 1); if ((($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](ident_tok)))) && ($truthy($rb_lt(self.version, 25))))) { - self.cs = 466 + self.cs = 465 } else { - self.cs = 526 + self.cs = 525 }; p = $rb_plus(p, 1); @@ -9989,7 +10008,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); self.cs_before_block_comment = self.cs; - self.cs = 187; + self.cs = 186; _goto_level = _again; continue;;;; } else if ($eqeqeq(56, $ret_or_1)) { @@ -9998,7 +10017,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(304, $ret_or_1)) { @@ -10017,7 +10036,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -10050,7 +10069,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1)), self.ts); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -10067,7 +10086,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tCOLON", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = self.ts; }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -10085,7 +10104,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(327, $ret_or_1)) { @@ -10108,7 +10127,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tDOT2") }; - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -10127,7 +10146,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tBDOT3", "...".$freeze(), self.ts, dots_te); - if ((($truthy($rb_ge(self.version, 31)) && ($truthy(followed_by_nl))) && ($truthy(self.context['$in_def_open_args?']())))) { + if ((($truthy($rb_ge(self.version, 31)) && ($truthy(followed_by_nl))) && ($truthy(self.context.$in_argdef())))) { self.$emit("tNL", $rb_minus(self.te, 1), self.te); nl_emitted = true; @@ -10141,7 +10160,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ if (($truthy(followed_by_nl) && ($not(nl_emitted)))) { p = $rb_minus(p, 1) }; - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -10154,7 +10173,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER"); if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -10179,7 +10198,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); self.cs_before_block_comment = self.cs; - self.cs = 187; + self.cs = 186; _goto_level = _again; continue;;;; } else if ($eqeqeq(322, $ret_or_1)) { @@ -10189,7 +10208,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(54, $ret_or_1)) { @@ -10215,7 +10234,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -10228,7 +10247,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER"); if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -10252,7 +10271,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(51, $ret_or_1)) { @@ -10263,7 +10282,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -10281,7 +10300,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tPIPE", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -10290,7 +10309,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 2); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;; }; @@ -10309,7 +10328,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit("kRESCUE", "rescue".$freeze(), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 540; + self.cs = 539; p = $rb_plus(p, 1); _goto_level = _out; @@ -10320,7 +10339,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS_BEGIN')); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10331,7 +10350,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;; } else if ($eqeqeq(128, $ret_or_2)) { @@ -10341,7 +10360,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER"); if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -10360,7 +10379,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;; } else { @@ -10372,7 +10391,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(396, $ret_or_1)) { @@ -10395,7 +10414,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(77, $ret_or_1)) { @@ -10404,7 +10423,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(405, $ret_or_1)) { @@ -10421,7 +10440,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(403, $ret_or_1)) { @@ -10444,7 +10463,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(76, $ret_or_1)) { @@ -10454,7 +10473,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(440, $ret_or_1)) { @@ -10463,7 +10482,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tLAMBDA", "->".$freeze(), self.ts, $rb_plus(self.ts, 2)); self.lambda_stack.$push(self.paren_nest); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -10474,7 +10493,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("kCLASS", "class".$freeze(), self.ts, $rb_plus(self.ts, 5)); self.$emit("tLSHFT", "<<".$freeze(), $rb_minus(self.te, 2), self.te); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10499,7 +10518,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(436, $ret_or_1)) { @@ -10507,7 +10526,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 474; + self.cs = 473; p = $rb_plus(p, 1); _goto_level = _out; @@ -10517,7 +10536,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10527,7 +10546,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10537,7 +10556,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit("tOP_ASGN", self.$tok(self.ts, $rb_minus(self.te, 1))); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -10547,7 +10566,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit("tEH", "?".$freeze()); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10557,7 +10576,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -10568,7 +10587,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tSEMI", ";".$freeze()); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10599,7 +10618,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit_table($$('KEYWORDS')); - self.cs = 353; + self.cs = 352; p = $rb_plus(p, 1); _goto_level = _out; @@ -10611,7 +10630,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("kCLASS", "class".$freeze(), self.ts, $rb_plus(self.ts, 5)); self.$emit("tLSHFT", "<<".$freeze(), $rb_minus(self.te, 2), self.te); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10623,7 +10642,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit_table($$('KEYWORDS')); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10657,7 +10676,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(441, $ret_or_1)) { @@ -10666,7 +10685,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 474; + self.cs = 473; p = $rb_plus(p, 1); _goto_level = _out; @@ -10679,7 +10698,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER"); if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -10698,7 +10717,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10709,7 +10728,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10720,7 +10739,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -10731,7 +10750,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -10826,7 +10845,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.paren_nest = $rb_plus(self.paren_nest, 1) }; self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10836,7 +10855,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS')); - self.cs = 353; + self.cs = 352; p = $rb_plus(p, 1); _goto_level = _out; @@ -10847,7 +10866,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit("kCLASS", "class".$freeze(), self.ts, $rb_plus(self.ts, 5)); self.$emit("tLSHFT", "<<".$freeze(), $rb_minus(self.te, 2), self.te); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10857,7 +10876,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS')); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -10868,7 +10887,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS')); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10878,7 +10897,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS')); - self.cs = 540; + self.cs = 539; p = $rb_plus(p, 1); _goto_level = _out; @@ -10890,14 +10909,14 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit_table($$('KEYWORDS')); if (($truthy(self['$version?'](18)) && ($eqeq(self.$tok(), "not".$freeze())))) { - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; continue;;; } else { - self.cs = 495; + self.cs = 494; p = $rb_plus(p, 1); _goto_level = _out; @@ -11019,7 +11038,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER"); if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -11043,7 +11062,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER", self.$tok(self.ts, tm), self.ts, tm); p = $rb_minus(tm, 1); }; - self.cs = 495; + self.cs = 494; p = $rb_plus(p, 1); _goto_level = _out; @@ -11053,7 +11072,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('PUNCTUATION')); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -11063,7 +11082,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('PUNCTUATION')); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -11079,7 +11098,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ if ($truthy($rb_lt(self.version, 27))) { p = $rb_minus(p, 1); - self.cs = 187; + self.cs = 186; p = $rb_plus(p, 1); _goto_level = _out; @@ -11087,7 +11106,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tBDOT3"); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -11099,7 +11118,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(510, $ret_or_1)) { @@ -11108,7 +11127,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); p = $rb_minus(p, 1); - self.cs = 187; + self.cs = 186; p = $rb_plus(p, 1); _goto_level = _out; @@ -11122,7 +11141,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); p = $rb_minus(p, 1); - self.cs = 187; + self.cs = 186; p = $rb_plus(p, 1); _goto_level = _out; @@ -11137,7 +11156,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ if ($truthy($rb_lt(self.version, 27))) { p = $rb_minus(p, 1); - self.cs = 187; + self.cs = 186; p = $rb_plus(p, 1); _goto_level = _out; @@ -11145,7 +11164,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tBDOT2"); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -11158,7 +11177,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(512, $ret_or_1)) { @@ -11168,7 +11187,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); p = $rb_minus(p, 1); - self.cs = 187; + self.cs = 186; p = $rb_plus(p, 1); _goto_level = _out; @@ -11182,7 +11201,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); p = $rb_minus(p, 1); - self.cs = 187; + self.cs = 186; p = $rb_plus(p, 1); _goto_level = _out; @@ -11195,7 +11214,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); p = $rb_minus(p, 1); - self.cs = 187; + self.cs = 186; p = $rb_plus(p, 1); _goto_level = _out; @@ -11210,7 +11229,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); p = $rb_minus(p, 1); - self.cs = 187; + self.cs = 186; p = $rb_plus(p, 1); _goto_level = _out; @@ -11222,7 +11241,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); p = $rb_minus(p, 1); - self.cs = 187; + self.cs = 186; p = $rb_plus(p, 1); _goto_level = _out; @@ -11252,7 +11271,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.eq_begin_s = self.ts; - self.cs = 999; + self.cs = 998; _goto_level = _again; continue;;;; } else if ($eqeqeq(2, $ret_or_1)) { @@ -11267,7 +11286,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ cmd_state = true; p = $rb_minus(p, 1); - self.cs = 803; + self.cs = 802; _goto_level = _again; continue;;;; } else if ($eqeqeq(99, $ret_or_1)) { @@ -11290,7 +11309,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.eq_begin_s = self.ts; - self.cs = 999; + self.cs = 998; _goto_level = _again; continue;;;; } else if ($eqeqeq(104, $ret_or_1)) { @@ -11301,7 +11320,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ cmd_state = true; p = $rb_minus(p, 1); - self.cs = 803; + self.cs = 802; _goto_level = _again; continue;;;; } else if ($eqeqeq(1, $ret_or_1)) { @@ -11312,7 +11331,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ cmd_state = true; p = $rb_minus(p, 1); - self.cs = 803; + self.cs = 802; _goto_level = _again; continue;;;; } else if ($eqeqeq(67, $ret_or_1)) { @@ -11753,31 +11772,6 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ current_literal.$extend_string(self.$tok(), self.ts, self.te); current_literal.$flush_string(); };;; - } else if ($eqeqeq(23, $ret_or_1)) { - - - self.newline_s = p;; - - self.te = $rb_plus(p, 1); - - if ($truthy($rb_ge(self.version, 31))) { - - self.$emit("tBDOT3", "...".$freeze(), self.ts, $rb_minus(self.te, 1)); - self.$emit("tNL", "\n".$freeze(), $rb_minus(self.te, 1), self.te); - self.cs = 811; - - p = $rb_plus(p, 1); - _goto_level = _out; - continue;;; - } else { - - p = $rb_minus(p, 4); - p = $rb_minus(p, 1); - - self.cs = 811; - _goto_level = _again; - continue;;; - };;; } else if ($eqeqeq(275, $ret_or_1)) { @@ -11787,7 +11781,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(266, $ret_or_1)) { @@ -11799,7 +11793,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(258, $ret_or_1)) { @@ -11811,7 +11805,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(358, $ret_or_1)) { @@ -11825,7 +11819,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$diagnostic("warning", "invalid_escape_use", $hash2(["escape"], {"escape": escape}), self.$range()); p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(333, $ret_or_1)) { @@ -11844,7 +11838,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tBDOT3", "...".$freeze(), self.ts, dots_te); - if ((($truthy($rb_ge(self.version, 31)) && ($truthy(followed_by_nl))) && ($truthy(self.context['$in_def_open_args?']())))) { + if ((($truthy($rb_ge(self.version, 31)) && ($truthy(followed_by_nl))) && ($truthy(self.context.$in_argdef())))) { self.$emit("tNL", $rb_minus(self.te, 1), self.te); nl_emitted = true; @@ -11858,7 +11852,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ if (($truthy(followed_by_nl) && ($not(nl_emitted)))) { p = $rb_minus(p, 1) }; - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -11873,7 +11867,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); self.cs_before_block_comment = self.cs; - self.cs = 187; + self.cs = 186; _goto_level = _again; continue;;;;; } else if ($eqeqeq(443, $ret_or_1)) { @@ -11888,7 +11882,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; self.$emit("tDOT3", "...".$freeze(), self.ts, $rb_minus(self.te, 1)); p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -11920,7 +11914,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.eq_begin_s = self.ts; - self.cs = 999; + self.cs = 998; _goto_level = _again; continue;;;;; } else if ($eqeqeq(3, $ret_or_1)) { @@ -12463,7 +12457,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -12554,7 +12548,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -12627,7 +12621,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -12700,7 +12694,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -12773,7 +12767,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -12846,7 +12840,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -12919,7 +12913,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -12992,7 +12986,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -13065,7 +13059,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -13138,7 +13132,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -13211,7 +13205,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -13284,7 +13278,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -13429,7 +13423,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(277, $ret_or_1)) { @@ -13457,7 +13451,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(288, $ret_or_1)) { @@ -13496,7 +13490,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(59, $ret_or_1)) { @@ -13512,7 +13506,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -13531,9 +13525,9 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER", ident_tok, ident_ts, ident_te); p = $rb_minus(ident_te, 1); if ((($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](ident_tok)))) && ($truthy($rb_lt(self.version, 25))))) { - self.cs = 466 + self.cs = 465 } else { - self.cs = 526 + self.cs = 525 }; p = $rb_plus(p, 1); @@ -13573,16 +13567,16 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = p; p = $rb_minus(p, 1); - if ($truthy(self.in_kwarg)) { + if ($truthy(self.context.$in_kwarg())) { p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;; } else { - self.cs = 187; + self.cs = 186; _goto_level = _again; continue;; };;; @@ -13610,7 +13604,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 187; + self.cs = 186; _goto_level = _again; continue;;;;; } else if ($eqeqeq(495, $ret_or_1)) { @@ -13637,7 +13631,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 991; + self.cs = 990; _goto_level = _again; continue;;;;; } else if ($eqeqeq(101, $ret_or_1)) { @@ -13673,7 +13667,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; self.command_start = true; self.paren_nest = $rb_plus(self.paren_nest, 1); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -13700,7 +13694,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; self.paren_nest = $rb_plus(self.paren_nest, 1); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -13761,7 +13755,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.paren_nest = $rb_plus(self.paren_nest, 1) }; self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -13809,9 +13803,9 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; if (($eqeq(self.$tok(), "}".$freeze()) || ($eqeq(self.$tok(), "]".$freeze())))) { if ($truthy($rb_ge(self.version, 25))) { - self.cs = 811 + self.cs = 810 } else { - self.cs = 532 + self.cs = 531 } }; @@ -13860,7 +13854,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(286, $ret_or_1)) { @@ -13937,7 +13931,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -13952,7 +13946,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(424, $ret_or_1)) { @@ -13981,7 +13975,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.paren_nest = $rb_plus(self.paren_nest, 1) }; self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -13991,7 +13985,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS')); - self.cs = 353; + self.cs = 352; p = $rb_plus(p, 1); _goto_level = _out; @@ -14002,7 +13996,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit("kCLASS", "class".$freeze(), self.ts, $rb_plus(self.ts, 5)); self.$emit("tLSHFT", "<<".$freeze(), $rb_minus(self.te, 2), self.te); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -14012,7 +14006,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS')); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -14023,7 +14017,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS')); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -14033,7 +14027,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS')); - self.cs = 540; + self.cs = 539; p = $rb_plus(p, 1); _goto_level = _out; @@ -14045,14 +14039,14 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit_table($$('KEYWORDS')); if (($truthy(self['$version?'](18)) && ($eqeq(self.$tok(), "not".$freeze())))) { - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; continue;;; } else { - self.cs = 495; + self.cs = 494; p = $rb_plus(p, 1); _goto_level = _out; @@ -14174,7 +14168,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER"); if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -14198,7 +14192,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER", self.$tok(self.ts, tm), self.ts, tm); p = $rb_minus(tm, 1); }; - self.cs = 495; + self.cs = 494; p = $rb_plus(p, 1); _goto_level = _out; @@ -14208,7 +14202,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('PUNCTUATION')); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -14218,7 +14212,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('PUNCTUATION')); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -14251,7 +14245,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -14266,7 +14260,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(425, $ret_or_1)) { @@ -14284,7 +14278,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER", self.$tok(self.ts, tm), self.ts, tm); p = $rb_minus(tm, 1); }; - self.cs = 495; + self.cs = 494; p = $rb_plus(p, 1); _goto_level = _out; @@ -14299,7 +14293,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -14314,7 +14308,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(341, $ret_or_1)) { @@ -14327,7 +14321,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -14342,7 +14336,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(345, $ret_or_1)) { @@ -14355,7 +14349,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -14370,7 +14364,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(344, $ret_or_1)) { @@ -14383,7 +14377,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -14399,7 +14393,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -14417,7 +14411,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tPIPE", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -14426,7 +14420,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 2); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;; }; @@ -14445,7 +14439,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit("kRESCUE", "rescue".$freeze(), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 540; + self.cs = 539; p = $rb_plus(p, 1); _goto_level = _out; @@ -14456,7 +14450,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS_BEGIN')); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -14467,7 +14461,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;; } else if ($eqeqeq(128, $ret_or_2)) { @@ -14477,7 +14471,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER"); if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -14496,7 +14490,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;; } else { @@ -14512,7 +14506,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -14527,7 +14521,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(343, $ret_or_1)) { @@ -14540,7 +14534,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -14570,7 +14564,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit("tLBRACK", "[".$freeze(), $rb_minus(self.te, 1), self.te); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -14601,7 +14595,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit("tLBRACK2", "[".$freeze()); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -14626,9 +14620,9 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; if (($eqeq(self.$tok(), "}".$freeze()) || ($eqeq(self.$tok(), "]".$freeze())))) { if ($truthy($rb_ge(self.version, 25))) { - self.cs = 811 + self.cs = 810 } else { - self.cs = 532 + self.cs = 531 } }; @@ -14651,7 +14645,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ if ($truthy(self['$version?'](18))) { self.$emit("tLPAREN2", "(".$freeze(), $rb_minus(self.te, 1), self.te); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -14659,7 +14653,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tLPAREN_ARG", "(".$freeze(), $rb_minus(self.te, 1), self.te); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -14679,7 +14673,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit("tLPAREN2", "(".$freeze()); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -14700,14 +14694,14 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tLPAREN_ARG", "(".$freeze(), $rb_minus(self.te, 1), self.te); if ($truthy(self['$version?'](18))) { - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; continue;;; } else { - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -14745,7 +14739,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -14770,9 +14764,9 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; if (($eqeq(self.$tok(), "}".$freeze()) || ($eqeq(self.$tok(), "]".$freeze())))) { if ($truthy($rb_ge(self.version, 25))) { - self.cs = 811 + self.cs = 810 } else { - self.cs = 532 + self.cs = 531 } }; @@ -14817,7 +14811,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tLSHFT", "<<".$freeze(), self.ts, $rb_plus(self.ts, 2)); p = $rb_plus(self.ts, 1); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -14844,7 +14838,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tCOLON", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = self.ts; }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -14865,7 +14859,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tCOLON", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = self.ts; }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -14884,7 +14878,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -14899,7 +14893,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("kRESCUE", "rescue".$freeze(), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 540; + self.cs = 539; p = $rb_plus(p, 1); _goto_level = _out; @@ -15340,7 +15334,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -15437,7 +15431,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -15525,7 +15519,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -15613,7 +15607,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -15692,7 +15686,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -15771,7 +15765,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -15850,7 +15844,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -15932,7 +15926,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -15983,7 +15977,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(285, $ret_or_1)) { @@ -16368,7 +16362,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -16462,7 +16456,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -16547,7 +16541,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -16632,7 +16626,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -17233,7 +17227,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($$('Parser'), null, $nesting) }; -Opal.modules["parser/lexer/literal"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/lexer/literal"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $hash2 = Opal.hash2, $enc = Opal.enc, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $to_ary = Opal.to_ary, $def = Opal.def, $eqeq = Opal.eqeq, $rb_minus = Opal.rb_minus, $neqeq = Opal.neqeq, $not = Opal.not, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $rb_gt = Opal.rb_gt; Opal.add_stubs('attr_reader,attr_accessor,coerce_encoding,include?,send,+,[],fetch,==,!,heredoc?,start_with?,freeze,clear_buffer,emit_start_tok,type,=~,words?,delimiter?,-,extend_space,!=,flush_string,emit,each_char,===,%,>,nil?,<<,empty?,extend_content,protected,lstrip,b,dup,force_encoding,encoding,source,source_buffer,length'); @@ -17548,7 +17542,7 @@ Opal.modules["parser/lexer/literal"] = function(Opal) {/* Generated by Opal 1.4. })($nesting[0], $nesting) }; -Opal.modules["parser/lexer/stack_state"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/lexer/stack_state"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $alias = Opal.alias; Opal.add_stubs('freeze,clear,|,<<,&,>>,==,[],to_s'); @@ -17627,7 +17621,7 @@ Opal.modules["parser/lexer/stack_state"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting) }; -Opal.modules["parser/lexer/dedenter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/lexer/dedenter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $eqeq = Opal.eqeq, $send = Opal.send, $truthy = Opal.truthy, $to_ary = Opal.to_ary, $slice = Opal.slice, $rb_le = Opal.rb_le, $eqeqeq = Opal.eqeqeq, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $rb_gt = Opal.rb_gt, $rb_times = Opal.rb_times, $rb_divide = Opal.rb_divide; Opal.add_stubs('encoding,split,force_encoding,==,length,map!,each,each_char,<=,===,+,-,>,*,/,slice!,replace,join,end_with?'); @@ -17723,10 +17717,10 @@ Opal.modules["parser/lexer/dedenter"] = function(Opal) {/* Generated by Opal 1.4 })($nesting[0], $nesting) }; -Opal.modules["parser/builders/default"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/builders/default"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $to_a = Opal.to_a, $eqeqeq = Opal.eqeqeq, $hash2 = Opal.hash2, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $not = Opal.not, $send = Opal.send, $neqeq = Opal.neqeq, $to_ary = Opal.to_ary, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $rb_ge = Opal.rb_ge, $range = Opal.range, $slice = Opal.slice, $rb_gt = Opal.rb_gt, $rb_le = Opal.rb_le, $rb_lt = Opal.rb_lt; - Opal.add_stubs('attr_accessor,n0,token_map,numeric,n,value,new,loc,private,===,+@,-@,updated,join,expression,string_value,delimited_string_map,unquoted_map,collapse_string_parts?,nil?,first,children,string_map,prefix_string_map,to_sym,collection_map,empty?,==,version,diagnostic,!,type,dedent,map,interrupt,compact,uniq,sort,each_char,to_proc,static_regexp,message,<<,regexp_map,unary_op_map,binary_op_map,!=,%,size,last,each_slice,pair_keyword_map,pair_quoted_map,symbol_compose,adjust,=~,pair_keyword,accessible,upto,-,length,+,[],>=,range_map,variable_map,name,source_buffer,dup,line,emit_encoding,class,any?,end_with?,to_s,try_declare_numparam,declared?,static_env,var_send_map,top,current_arg_stack,parser,constant_map,dynamic_const_definition_allowed?,context,check_assignment_to_numparam,check_reserved_for_numparam,declare,with_expression,with_operator,join_exprs,module_definition_map,definition_map,endless_definition_map,validate_definee,keyword_map,check_duplicate_args,validate_no_forward_arg_after_restarg,emit_forward_arg,forward_arg,arg_prefix_map,kwarg_map,emit_procarg0,emit_arg_inside_procarg0,location,resize,end,call_type_for_dot,emit_kwargs,rewrite_hash_args_to_kwargs,send_map,emit_lambda,expr_map,keyword,include?,block_map,array,emit_index,index_map,send_index_map,send_binary_op_map,static_regexp_node,each,names,send_unary_op_map,check_condition,condition_map,keyword_mod_map,ternary_map,for_map,>,count,rescue_body_map,eh_keyword_map,push,none?,one?,begin,guard_map,check_lvar_name,check_duplicate_pattern_variable,match_hash_var_from_str,match_var,check_duplicate_pattern_key,static_string,pair_quoted,match_hash_var,<=,check_duplicate_arg,is_a?,[]=,arg_name_collides?,<,in_dynamic_block?,has_numparams?,max_numparam_stack,start_with?,pattern_variables,pattern_hash_keys,with,begin_pos,end_pos,encode,valid_encoding?,process,diagnostics,send,kwargs?'); + Opal.add_stubs('attr_accessor,n0,token_map,numeric,n,value,new,loc,private,===,+@,-@,updated,join,expression,string_value,delimited_string_map,unquoted_map,collapse_string_parts?,nil?,first,children,string_map,prefix_string_map,to_sym,collection_map,empty?,==,version,diagnostic,!,type,dedent,map,interrupt,compact,uniq,sort,each_char,to_proc,static_regexp,message,<<,regexp_map,unary_op_map,binary_op_map,!=,%,size,last,each_slice,pair_keyword_map,pair_quoted_map,symbol_compose,adjust,=~,pair_keyword,accessible,upto,-,length,+,[],>=,range_map,variable_map,name,source_buffer,dup,line,emit_encoding,class,any?,end_with?,to_s,try_declare_numparam,declared?,static_env,var_send_map,top,current_arg_stack,parser,constant_map,in_def,context,check_assignment_to_numparam,check_reserved_for_numparam,declare,with_expression,with_operator,join_exprs,module_definition_map,definition_map,endless_definition_map,validate_definee,keyword_map,check_duplicate_args,validate_no_forward_arg_after_restarg,emit_forward_arg,forward_arg,arg_prefix_map,kwarg_map,emit_procarg0,emit_arg_inside_procarg0,location,resize,end,call_type_for_dot,emit_kwargs,rewrite_hash_args_to_kwargs,send_map,emit_lambda,expr_map,keyword,include?,block_map,array,emit_index,index_map,send_index_map,send_binary_op_map,static_regexp_node,each,names,send_unary_op_map,check_condition,condition_map,keyword_mod_map,ternary_map,for_map,>,count,rescue_body_map,eh_keyword_map,push,none?,one?,begin,guard_map,check_lvar_name,check_duplicate_pattern_variable,match_hash_var_from_str,match_var,check_duplicate_pattern_key,static_string,pair_quoted,match_hash_var,<=,check_duplicate_arg,is_a?,[]=,arg_name_collides?,<,in_dynamic_block?,has_numparams?,max_numparam_stack,start_with?,pattern_variables,pattern_hash_keys,with,begin_pos,end_pos,encode,valid_encoding?,process,diagnostics,send,kwargs?'); return (function($base, $parent_nesting) { var self = $module($base, 'Parser'); @@ -18294,7 +18288,7 @@ Opal.modules["parser/builders/default"] = function(Opal) {/* Generated by Opal 1 return node.$updated("gvasgn") } else if ($eqeqeq("const", $ret_or_1)) { - if (!$truthy(self.parser.$context()['$dynamic_const_definition_allowed?']())) { + if ($truthy(self.parser.$context().$in_def())) { self.$diagnostic("error", "dynamic_const", nil, node.$loc().$expression()) }; return node.$updated("casgn"); @@ -19963,130 +19957,59 @@ Opal.modules["parser/builders/default"] = function(Opal) {/* Generated by Opal 1 })($nesting[0], $nesting) }; -Opal.modules["parser/context"] = function(Opal) {/* Generated by Opal 1.4.0 */ - var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $rb_gt = Opal.rb_gt, $alias = Opal.alias; +Opal.modules["parser/context"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $truthy = Opal.truthy; - Opal.add_stubs('attr_reader,freeze,<<,pop,clear,empty?,==,last,include?,rindex,stack,nil?,!,>,in_block?,in_lambda?'); + Opal.add_stubs('reset,attr_accessor,in_block,in_lambda'); return (function($base, $parent_nesting) { var self = $module($base, 'Parser'); var $nesting = [self].concat($parent_nesting); - return (function($base, $super) { + return (function($base, $super, $parent_nesting) { var self = $klass($base, $super, 'Context'); - var $proto = self.$$prototype; + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); - $proto.stack = nil; - self.$attr_reader("stack"); + $const_set($nesting[0], 'FLAGS', ["in_defined", "in_kwarg", "in_argdef", "in_def", "in_class", "in_block", "in_lambda"]); $def(self, '$initialize', function $$initialize() { var self = this; - - self.stack = []; - return self.$freeze(); - }, 0); - - $def(self, '$push', function $$push(state) { - var self = this; - - return self.stack['$<<'](state) - }, 1); - - $def(self, '$pop', function $$pop() { - var self = this; - - return self.stack.$pop() + return self.$reset() }, 0); $def(self, '$reset', function $$reset() { var self = this; - return self.stack.$clear() - }, 0); - - $def(self, '$empty?', function $Context_empty$ques$1() { - var self = this; - - return self.stack['$empty?']() - }, 0); - - $def(self, '$in_class?', function $Context_in_class$ques$2() { - var self = this; - - return self.stack.$last()['$==']("class") - }, 0); - - $def(self, '$indirectly_in_def?', function $Context_indirectly_in_def$ques$3() { - var self = this, $ret_or_1 = nil; - - if ($truthy(($ret_or_1 = self.stack['$include?']("def")))) { - return $ret_or_1 - } else { - return self.stack['$include?']("defs") - } - }, 0); - - $def(self, '$class_definition_allowed?', function $Context_class_definition_allowed$ques$4() { - var self = this, def_index = nil, sclass_index = nil, $ret_or_1 = nil, $ret_or_2 = nil; - - def_index = $send(self.$stack(), 'rindex', [], function $$5(item){ - - - if (item == null) item = nil;; - return ["def", "defs"]['$include?'](item);}, 1); - sclass_index = self.$stack().$rindex("sclass"); - if ($truthy(($ret_or_1 = def_index['$nil?']()))) { - return $ret_or_1 - } else { - - if ($truthy(($ret_or_2 = sclass_index['$nil?']()['$!']()))) { - return $rb_gt(sclass_index, def_index) - } else { - return $ret_or_2 - }; - }; - }, 0); - $alias(self, "module_definition_allowed?", "class_definition_allowed?"); - $alias(self, "dynamic_const_definition_allowed?", "class_definition_allowed?"); - - $def(self, '$in_block?', function $Context_in_block$ques$6() { - var self = this; - - return self.stack.$last()['$==']("block") - }, 0); - - $def(self, '$in_lambda?', function $Context_in_lambda$ques$7() { - var self = this; - - return self.stack.$last()['$==']("lambda") + self.in_defined = false; + self.in_kwarg = false; + self.in_argdef = false; + self.in_def = false; + self.in_class = false; + self.in_block = false; + return (self.in_lambda = false); }, 0); - - $def(self, '$in_dynamic_block?', function $Context_in_dynamic_block$ques$8() { + $send(self, 'attr_accessor', $to_a($$('FLAGS'))); + return $def(self, '$in_dynamic_block?', function $Context_in_dynamic_block$ques$1() { var self = this, $ret_or_1 = nil; - if ($truthy(($ret_or_1 = self['$in_block?']()))) { + if ($truthy(($ret_or_1 = self.$in_block()))) { return $ret_or_1 } else { - return self['$in_lambda?']() + return self.$in_lambda() } }, 0); - return $def(self, '$in_def_open_args?', function $Context_in_def_open_args$ques$9() { - var self = this; - - return self.stack.$last()['$==']("def_open_args") - }, 0); - })($nesting[0], null) + })($nesting[0], null, $nesting) })($nesting[0], $nesting) }; -Opal.modules["parser/max_numparam_stack"] = function(Opal) {/* Generated by Opal 1.4.0 */ - var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $rb_minus = Opal.rb_minus, $send = Opal.send, $to_a = Opal.to_a; +Opal.modules["parser/max_numparam_stack"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $hash2 = Opal.hash2, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus; - Opal.add_stubs('attr_reader,==,size,set,top,>,max,last,push,pop,private,-,length,[]='); + Opal.add_stubs('attr_reader,==,size,set,top,>,max,[],last,push,pop,private,[]=,-'); return (function($base, $parent_nesting) { var self = $module($base, 'Parser'); @@ -20145,34 +20068,46 @@ Opal.modules["parser/max_numparam_stack"] = function(Opal) {/* Generated by Opal $def(self, '$top', function $$top() { var self = this; - return self.stack.$last() + return self.stack.$last()['$[]']("value") }, 0); - $def(self, '$push', function $$push() { - var self = this; + $def(self, '$push', function $$push($kwargs) { + var static$, self = this; - return self.stack.$push(0) - }, 0); + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if (!Opal.hasOwnProperty.call($kwargs.$$smap, 'static')) { + throw Opal.ArgumentError.$new('missing keyword: static'); + } + static$ = $kwargs.$$smap["static"];; + return self.stack.$push($hash2(["value", "static"], {"value": 0, "static": static$})); + }, 1); $def(self, '$pop', function $$pop() { var self = this; - return self.stack.$pop() + return self.stack.$pop()['$[]']("value") }, 0); self.$private(); return $def(self, '$set', function $$set(value) { var self = this, $writer = nil; - $writer = [$rb_minus(self.stack.$length(), 1), value]; - $send(self.stack, '[]=', $to_a($writer)); + $writer = ["value", value]; + $send(self.stack.$last(), '[]=', $to_a($writer)); return $writer[$rb_minus($writer["length"], 1)]; }, 1); })($nesting[0], null, $nesting) })($nesting[0], $nesting) }; -Opal.modules["parser/current_arg_stack"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/current_arg_stack"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $rb_minus = Opal.rb_minus, $send = Opal.send, $to_a = Opal.to_a; Opal.add_stubs('attr_reader,freeze,==,size,<<,-,length,[]=,pop,clear,last'); @@ -20239,7 +20174,7 @@ Opal.modules["parser/current_arg_stack"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting) }; -Opal.modules["parser/variables_stack"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/variables_stack"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('push,empty?,<<,new,pop,clear,last,to_sym,include?'); @@ -20302,7 +20237,7 @@ Opal.modules["parser/variables_stack"] = function(Opal) {/* Generated by Opal 1. })($nesting[0], $nesting) }; -Opal.modules["parser/base"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $defs = Opal.defs, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $gvars = Opal.gvars, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $def = Opal.def, $not = Opal.not, $eqeqeq = Opal.eqeqeq, $to_ary = Opal.to_ary, $hash2 = Opal.hash2; Opal.add_stubs('default_parser,setup_source_buffer,default_encoding,parse,parse_with_comments,read,new,all_errors_are_fatal=,diagnostics,-,ignore_warnings=,lambda,puts,render,consumer=,force_encoding,dup,==,name,raw_source=,source=,private_class_method,attr_reader,version,diagnostics=,static_env=,context=,parser=,[],class,reset,source_buffer=,do_parse,comments=,comments,tokens=,!,raise,tokens,private,advance,===,diagnostic,map,process,yyerror,token_to_str'); @@ -20583,7 +20518,7 @@ Opal.modules["parser/base"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["parser/rewriter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $const_set = Opal.const_set, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $send2 = Opal.send2, $find_super = Opal.find_super; Opal.add_stubs('new,process,include?,type,remove,wrap,insert_before,insert_after,replace,freeze,join,extend,warn_of_deprecation,class,warned_of_deprecation=,-'); @@ -20665,7 +20600,7 @@ Opal.modules["parser/rewriter"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["parser/tree_rewriter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/tree_rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $hash = Opal.hash, $def = Opal.def; Opal.add_stubs('new,process,include?,type,remove,wrap,insert_before,insert_after,replace'); @@ -20736,7 +20671,7 @@ Opal.modules["parser/tree_rewriter"] = function(Opal) {/* Generated by Opal 1.4. })($nesting[0], $nesting) }; -Opal.modules["parser"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $module = Opal.module; Opal.add_stubs('=~,require,raise'); @@ -20822,10 +20757,10 @@ Opal.modules["parser"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $not = Opal.not, $send = Opal.send, $eqeq = Opal.eqeq, $rb_gt = Opal.rb_gt, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $hash = Opal.hash, $const_set = Opal.const_set, $to_ary = Opal.to_ary, $hash2 = Opal.hash2, $slice = Opal.slice; +Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $not = Opal.not, $hash2 = Opal.hash2, $send = Opal.send, $rb_gt = Opal.rb_gt, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $hash = Opal.hash, $const_set = Opal.const_set, $to_ary = Opal.to_ary, $eqeq = Opal.eqeq, $slice = Opal.slice; - Opal.add_stubs('require,end_with?,[],!,include?,diagnostic,children,in_dynamic_block?,context,declared?,static_env,=~,expression,loc,has_ordinary_params?,max_numparam_stack,dup,stack,pop,reverse_each,==,>,declare,register,to_i,new,each,split,empty?,[]=,-,+,push,compstmt,<<,preexe,nil?,begin_body,state=,alias,gvar,back_ref,undef_method,condition_mod,loop_mod,rescue_body,postexe,multi_assign,assign,array,op_assign,index,call_method,const_op_assignable,const_fetch,endless_method_name,def_endless_method,cmdarg,cond,unextend,def_endless_singleton,logical_op,not_op,command_start=,in_kwarg,in_kwarg=,match_pattern,match_pattern_p,extend_static,block,keyword_cmd,multi_lhs,begin,splat,concat,assignable,index_asgn,attr_asgn,const_global,const,symbol_internal,range_inclusive,range_exclusive,binary_op,unary_op,match_op,ternary,associate,declared_forward_args?,forwarded_args,block_pass,declared_anonymous_blockarg?,begin_keyword,condition,loop,case,case_match,for,class_definition_allowed?,def_class,def_sclass,module_definition_allowed?,def_module,def_method,def_singleton,in_class?,arg,restarg,size,procarg0,args,has_ordinary_params!,set,shadowarg,extend_dynamic,call_lambda,has_numparams?,numargs,top,any?,when,in_pattern,if_guard,unless_guard,match_with_trailing_comma,array_pattern,find_pattern,hash_pattern,match_as,match_alt,const_pattern,match_rest,match_pair,match_label,match_nil_pattern,accessible,match_var,ident,pin,string_compose,dedent_string,dedent_level,string,character,xstring_compose,regexp_options,regexp_compose,words_compose,word,symbols_compose,string_internal,ivar,cvar,symbol,symbol_compose,respond_to?,negate,unary_num,integer,float,rational,complex,nil,self,true,false,__FILE__,__LINE__,__ENCODING__,nth_ref,declare_forward_args,forward_arg,check_kwarg_name,kwoptarg,kwarg,kwnilarg,kwrestarg,optarg,blockarg,declare_anonymous_blockarg,pair,pair_keyword,pair_label,pair_quoted,kwsplat,yyerrok'); + Opal.add_stubs('require,end_with?,[],!,include?,diagnostic,extend_static,push,cmdarg,cond,unextend,pop,children,in_dynamic_block?,declared?,static_env,=~,expression,loc,has_ordinary_params?,max_numparam_stack,dup,stack,reverse_each,>,declare,register,to_i,new,each,split,empty?,[]=,-,+,compstmt,<<,preexe,nil?,begin_body,state=,alias,gvar,back_ref,undef_method,condition_mod,loop_mod,rescue_body,postexe,multi_assign,assign,array,op_assign,index,call_method,const_op_assignable,const_fetch,endless_method_name,def_endless_method,local_pop,in_def,in_def=,def_endless_singleton,logical_op,not_op,command_start=,in_kwarg,in_kwarg=,match_pattern,match_pattern_p,local_push,in_argdef=,in_block=,in_block,block,keyword_cmd,multi_lhs,begin,splat,concat,assignable,index_asgn,==,attr_asgn,const_global,const,symbol_internal,range_inclusive,range_exclusive,binary_op,unary_op,match_op,in_defined=,ternary,associate,declared_forward_args?,forwarded_args,block_pass,declared_anonymous_blockarg?,begin_keyword,condition,loop,case,case_match,for,in_class=,def_class,in_class,def_sclass,def_module,def_method,def_singleton,context,in_lambda,arg,restarg,size,procarg0,args,has_ordinary_params!,set,shadowarg,extend_dynamic,in_lambda=,call_lambda,has_numparams?,numargs,top,any?,when,in_pattern,if_guard,unless_guard,match_with_trailing_comma,array_pattern,find_pattern,hash_pattern,match_as,match_alt,const_pattern,match_rest,match_pair,match_label,match_nil_pattern,accessible,match_var,ident,pin,string_compose,dedent_string,dedent_level,string,character,xstring_compose,regexp_options,regexp_compose,words_compose,word,symbols_compose,string_internal,ivar,cvar,symbol,symbol_compose,respond_to?,negate,unary_num,integer,float,rational,complex,nil,self,true,false,__FILE__,__LINE__,__ENCODING__,nth_ref,declare_forward_args,forward_arg,check_kwarg_name,kwoptarg,kwarg,kwnilarg,kwrestarg,optarg,blockarg,declare_anonymous_blockarg,pair,pair_keyword,pair_label,pair_quoted,kwsplat,yyerrok'); self.$require("racc/parser.rb"); self.$require("parser"); @@ -20839,7 +20774,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), clist = nil, racc_action_table = nil, arr = nil, idx = nil, racc_action_check = nil, racc_action_pointer = nil, racc_action_default = nil, racc_goto_table = nil, racc_goto_check = nil, racc_goto_pointer = nil, racc_goto_default = nil, racc_reduce_table = nil, racc_reduce_n = nil, racc_shift_n = nil, racc_token_table = nil, racc_nt_base = nil, racc_use_result_var = nil, $proto = self.$$prototype; - $proto.current_arg_stack = $proto.max_numparam_stack = $proto.builder = $proto.lexer = $proto.static_env = $proto.context = $proto.pattern_variables = $proto.last_token = $proto.pattern_hash_keys = nil; + $proto.static_env = $proto.lexer = $proto.max_numparam_stack = $proto.context = $proto.current_arg_stack = $proto.builder = $proto.pattern_variables = $proto.last_token = $proto.pattern_hash_keys = nil; $def(self, '$version', function $$version() { @@ -20862,37 +20797,55 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ } }, 1); + $def(self, '$local_push', function $$local_push() { + var self = this; + + + self.static_env.$extend_static(); + self.lexer.$cmdarg().$push(false); + self.lexer.$cond().$push(false); + return self.max_numparam_stack.$push($hash2(["static"], {"static": true})); + }, 0); + + $def(self, '$local_pop', function $$local_pop() { + var self = this; + + + self.static_env.$unextend(); + self.lexer.$cmdarg().$pop(); + self.lexer.$cond().$pop(); + return self.max_numparam_stack.$pop(); + }, 0); + $def(self, '$try_declare_numparam', function $$try_declare_numparam(node) { - var self = this, name = nil, location = nil, raw_context = nil, raw_max_numparam_stack = nil; + var self = this, name = nil, location = nil, raw_max_numparam_stack = nil; name = node.$children()['$[]'](0); - if ((($truthy(name['$=~'](/^_[1-9]$/)) && ($not(self.$static_env()['$declared?'](name)))) && ($truthy(self.$context()['$in_dynamic_block?']())))) { + if ((($truthy(name['$=~'](/^_[1-9]$/)) && ($not(self.$static_env()['$declared?'](name)))) && ($truthy(self.context['$in_dynamic_block?']())))) { location = node.$loc().$expression(); if ($truthy(self.$max_numparam_stack()['$has_ordinary_params?']())) { self.$diagnostic("error", "ordinary_param_defined", nil, [nil, location]) }; - raw_context = self.$context().$stack().$dup(); raw_max_numparam_stack = self.$max_numparam_stack().$stack().$dup(); - raw_context.$pop(); raw_max_numparam_stack.$pop(); - (function(){var $brk = Opal.new_brk(); try {return $send(raw_context, 'reverse_each', [], function $$1(outer_scope){var self = $$1.$$s == null ? this : $$1.$$s, outer_scope_has_numparams = nil; + (function(){var $brk = Opal.new_brk(); try {return $send(raw_max_numparam_stack, 'reverse_each', [], function $$1(outer_scope){var self = $$1.$$s == null ? this : $$1.$$s, outer_scope_has_numparams = nil; if (outer_scope == null) outer_scope = nil;; - if (($eqeq(outer_scope, "block") || ($eqeq(outer_scope, "lambda")))) { + if ($truthy(outer_scope['$[]']("static"))) { + + Opal.brk(nil, $brk) + } else { - outer_scope_has_numparams = $rb_gt(raw_max_numparam_stack.$pop(), 0); + outer_scope_has_numparams = $rb_gt(outer_scope['$[]']("value"), 0); if ($truthy(outer_scope_has_numparams)) { return self.$diagnostic("error", "numparam_used_in_outer_scope", nil, [nil, location]) } else { return nil }; - } else { - - Opal.brk(nil, $brk) };}, {$$arity: 1, $$s: self, $$brk: $brk}) } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); self.$static_env().$declare(name); @@ -20902,8 +20855,8 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return false }; }, 1); - clist = ["-319,308,617,995,597,-117,-116,-319,-319,-319,218,219,308,-319,-319", "919,-319,919,919,-121,-122,617,-725,-118,-319,617,660,624,658,1207,234", "-123,-119,713,943,828,-319,-319,617,-319,-319,-319,-319,-319,-116,-117", "-124,617,617,-124,925,714,942,123,236,921,1142,1143,122,922,237,918", "237,-123,-504,303,-319,-319,-319,-319,-319,-319,-319,-319,-319,-319", "-319,-319,-319,-319,218,219,-319,-319,-319,-713,684,-319,307,-124,-319", "-123,659,-319,657,237,218,219,-319,307,-319,119,-319,-319,237,-319,-319", "-319,-319,-319,-607,-319,994,-319,-108,-107,823,-607,-607,-607,123,-119", "-607,-607,-607,122,-607,-319,-112,-113,-319,-319,-109,-113,-607,-319", "-607,-607,-607,123,-114,-110,-319,123,122,-122,-607,-607,122,-607,-607", "-607,-607,-607,-121,-120,123,-118,-115,984,-109,122,-116,-117,-124,123", "123,-116,-117,-124,122,122,1117,308,237,132,-607,-607,-607,-607,-607", "-607,-607,-607,-607,-607,-607,-607,-607,-607,123,-725,-607,-607,-607", "122,-607,-607,609,215,-607,611,123,-607,-607,-111,-607,122,-607,-123", "-607,230,-607,-607,-123,-607,-607,-607,-607,-607,123,-607,-610,-607", "-621,122,-109,237,-622,-610,-610,-610,-712,-122,-610,-610,-610,-607", "-610,-119,-607,-607,-607,-607,-119,-607,-610,-607,-610,-610,-610,230", "-607,216,1118,-607,-120,-110,-610,-610,307,-610,-610,-610,-610,-610", "-109,-737,217,-109,-712,-111,-121,-120,-112,-118,220,-121,-120,519,-118", "-109,887,-116,624,218,219,-117,-610,-610,-610,-610,-610,-610,-610,-610", "-610,-610,-610,-610,-610,-610,-725,297,-610,-610,-610,-737,-610,-610", "-713,-111,-610,870,-111,-610,-610,645,-610,237,-610,-712,-610,-110,-610", "-610,-111,-610,-610,-610,-610,-610,308,-610,-319,-610,101,102,-124,358", "-112,-319,-319,-319,101,102,-319,-319,-319,-610,-319,-122,-610,-610", "-610,-610,-122,-610,-319,-610,-319,-319,-319,-110,-610,-111,-110,-610", "504,503,-319,-319,-118,-319,-319,-319,-319,-319,-110,237,-112,647,646", "-112,645,-607,630,645,230,887,954,645,-607,630,359,-112,303,631,1057", "828,-319,-319,-319,-319,-319,-319,-319,-319,-319,-319,-319,-319,-319", "-319,103,104,-319,-319,-319,307,916,-319,103,104,-319,913,645,-319,-319", "645,-319,-614,-319,237,-319,428,-319,-319,-614,-319,-319,-319,-319,-319", "-737,-319,914,-319,647,646,-607,647,646,643,645,647,646,643,856,645", "468,-319,645,1029,-319,-319,-319,-319,796,-319,645,-319,1057,-716,679", "230,-319,-628,680,-122,-716,-716,-716,507,-119,-716,-716,-716,224,-716", "647,646,648,647,646,627,-614,-716,-716,-716,-716,-716,679,854,625,-121", "218,219,518,-716,-716,680,-716,-716,-716,-716,-716,520,647,646,661,-110", "-118,647,646,643,647,646,650,645,-622,-737,521,-119,647,646,656,-121", "236,-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,-716", "-716,225,750,-716,-716,-716,-112,915,-716,-119,-102,-716,496,-616,-716", "-716,555,-716,-121,-716,-616,-716,-88,-716,-716,-108,-716,-716,-716", "-716,-716,-319,-716,-716,-716,979,887,-117,-319,-319,-319,647,646,652", "-319,-319,609,-319,-716,611,497,-716,-716,-716,-716,-319,-716,224,-716", "567,123,569,1050,-716,301,122,-120,-319,-319,571,-319,-319,-319,-319", "-319,979,887,132,-616,488,224,485,484,483,493,486,425,1181,-610,630", "-87,427,426,954,496,-610,635,-319,-319,-319,-319,-319,-319,-319,-319", "-319,-319,-319,-319,-319,-319,237,-617,-319,-319,-319,491,684,-319,-617", "582,-319,225,224,-319,501,500,504,503,-319,301,-319,497,-319,-319,583", "-319,-319,-319,-319,-319,123,-319,-716,-319,225,122,590,87,123,-716", "-716,-716,-610,122,312,-716,-716,-319,-716,88,-319,-319,237,-319,230", "-319,-716,-716,230,89,609,482,-319,608,609,-122,-617,611,-716,-716,303", "-716,-716,-716,-716,-716,237,225,594,1190,488,224,485,484,483,493,486", "-618,1157,597,944,945,218,219,-618,496,600,1155,-716,-716,-716,-716", "-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,261,-621,-716,-716", "-716,491,685,-716,237,612,-716,234,-615,-716,501,500,504,503,-716,-615", "-716,497,-716,-716,-114,-716,-716,-716,-716,-716,613,-716,-716,-716", "225,870,-123,571,624,488,-618,485,484,483,493,486,417,-716,-107,-612", "-716,-716,-710,-111,496,-716,-612,-613,-115,-716,-116,482,-716,628,-613", "-120,-716,-716,-716,493,-124,629,-716,-716,637,-716,491,-615,662,496", "665,666,-109,-716,-716,501,500,504,503,-292,224,668,497,669,-118,-716", "-716,672,-716,-716,-716,-716,-716,673,-610,237,670,677,224,678,303,-610", "504,503,-612,633,-710,497,237,691,-610,692,-613,237,635,-716,-716,-716", "-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,-710,694,-716", "-716,-716,697,685,-716,-354,698,-716,700,702,-716,704,-354,225,715,-716", "716,-716,720,-716,-716,-354,-716,-716,-716,-716,-716,-610,-716,-716", "-716,225,722,-619,728,729,261,261,224,-620,-619,750,261,261,-716,589", "-620,-716,-716,-619,-716,496,-716,-320,587,-620,237,784,237,-716,-320", "237,-120,330,77,78,26,11,65,-320,-354,237,71,72,-102,799,237,75,-716", "73,74,76,35,36,79,80,603,810,814,497,237,81,33,32,111,110,112,113,-619", "816,23,1050,819,225,-620,824,10,53,332,12,115,114,116,105,64,107,106", "108,-320,109,117,118,224,101,102,49,50,48,-320,223,-716,825,224,278", "279,-320,829,-716,221,599,853,857,-712,858,-320,-293,-716,45,517,871", "38,555,555,66,67,-310,883,68,887,40,907,908,-310,52,237,-716,911,261", "237,277,276,-310,24,920,937,938,939,99,87,90,91,956,92,94,93,95,958", "225,297,964,88,98,966,-320,968,-716,569,225,82,258,89,103,104,260,259", "46,47,330,77,78,26,11,65,571,810,237,71,72,303,303,-310,75,-709,73,74", "76,35,36,79,80,126,127,128,129,130,81,33,32,111,110,112,113,810,488", "23,485,484,483,261,486,10,53,332,12,115,114,116,105,64,107,106,108,887", "109,117,118,224,101,102,49,50,48,-319,516,-607,981,224,982,237,-319", "706,-607,517,1181,-713,237,-709,992,-319,710,-607,45,635,237,38,-294", "237,66,67,-319,1003,68,1007,40,-292,1011,-319,52,697,-709,714,-713,1014", "848,849,-319,24,850,117,118,1016,99,87,90,91,1018,92,94,93,95,1020,225", "1020,237,88,98,770,-319,237,-607,237,225,82,1048,89,103,104,1051,919", "46,47,330,77,78,26,11,65,966,1063,237,71,72,810,1079,-319,75,1081,73", "74,76,35,36,79,80,253,1086,1087,1092,1093,81,33,32,111,110,112,113,1094", "488,23,485,484,483,-295,486,10,53,332,12,115,114,116,105,64,107,106", "108,1107,109,117,118,1108,101,102,49,50,48,261,265,266,267,268,278,279", "273,274,269,270,1109,254,255,237,237,271,272,237,45,237,252,38,493,237", "66,67,237,919,68,1116,40,258,496,264,52,260,259,237,256,257,277,276", "262,24,263,1122,1123,1125,99,87,90,91,697,92,94,93,95,1128,1131,1133", "1135,88,98,237,275,504,503,1137,1147,82,497,89,103,104,1158,1159,46", "47,330,77,78,26,11,65,1020,1020,1020,71,72,1166,1179,1182,75,1187,73", "74,76,35,36,79,80,126,127,128,129,130,81,33,32,111,110,112,113,1188", "691,23,1108,1198,1198,697,674,10,53,332,12,115,114,116,105,64,107,106", "108,1201,109,117,118,1203,101,102,49,50,48,261,265,266,267,268,278,279", "273,274,269,270,1205,254,255,1207,1207,271,272,237,45,1020,948,38,952", "951,66,67,953,1198,68,-713,40,258,-712,264,52,260,259,1224,256,257,277", "276,262,24,263,1207,1207,1207,99,87,90,91,3,92,94,93,95,950,,,,88,98", ",275,,-264,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75", ",73,74,76,35,36,79,80,126,127,128,129,130,81,33,32,111,110,112,113,", ",23,,,,,884,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118", ",101,102,49,50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255", ",,271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277", "276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89", "103,104,,,46,47,7,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80", "126,127,128,129,130,81,33,32,111,110,112,113,,,23,,,,,674,10,53,9,12", "115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265", "266,267,268,278,279,273,274,269,270,,254,255,,,271,272,,45,,,38,,,66", "67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87", "90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89,103,104,,,46,47,330,77", "78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110", "112,113,,,23,,,,,912,10,53,332,12,115,114,116,105,64,107,106,108,,109", "117,118,,101,102,49,50,48,261,265,266,267,268,278,279,273,274,269,270", ",254,255,,,271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256", "257,277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,", ",,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76", "35,36,79,80,,,,,,81,33,32,111,110,112,113,,1152,23,485,484,483,,486", "10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49", "50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255,,,271,272", ",45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24", "263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89,103,104,,", "46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81", "33,32,111,110,112,113,,1152,23,485,484,483,,486,10,53,332,12,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267", "268,278,279,273,274,269,270,,254,255,,,271,272,,45,,,38,,,66,67,,,68", ",40,258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,", "92,94,93,95,,,,,88,98,,275,,,,,82,,89,103,104,,,46,47,330,77,78,26,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113", ",,23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,", "101,102,49,50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255", ",,271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277", "276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,237,275,,,,,82", ",89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36", "79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267,268", "278,279,273,274,269,270,,254,255,,,271,272,,45,,,38,,,66,67,,,68,,40", "258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,,92,94", "93,95,,,,,88,98,,275,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,", ",,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,", "23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255,,", "271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276", "262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89,103", "104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80", ",,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267,268,278", "279,273,274,269,270,,254,255,,,271,272,,45,,,38,,,66,67,,,68,,40,258", ",264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,,92,94,93", "95,,,,,88,98,,275,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71", "72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,", ",,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102", "49,50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255,,,271", "272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262", "24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89,103,104", ",,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,", ",81,33,32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116,105,64", "107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267,268,278,279", "273,274,269,270,,254,255,,,271,272,,45,,,38,,,66,67,,,68,,40,258,,264", "52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,", ",,,88,98,,275,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72", ",,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,", "10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49", "50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255,,,271,272", ",45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24", "263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89,103,104,,", "46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81", "33,32,111,110,112,113,,488,23,485,484,483,,486,10,53,332,12,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,488,,485,484,483", ",486,,706,,488,,485,484,483,,486,710,,45,,,38,,,66,67,,261,68,,40,,", ",52,,706,,261,,,,,24,,710,706,,99,87,90,91,,92,94,93,95,,,258,,88,98", "260,259,,256,257,,82,258,89,103,104,260,259,46,47,330,77,78,26,11,65", ",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,", "488,23,485,484,483,,486,10,53,332,12,115,114,116,105,64,107,106,108", ",109,117,118,,101,102,49,50,48,261,265,266,267,268,278,279,273,706,269", "270,,,,,,271,272,,45,,,38,,,66,67,,261,68,,40,258,,264,52,260,259,,256", "257,277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,258,,88,98,260", "259,,256,257,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,", "75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,488,23,485,484", "483,,486,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,261,,,,,,,,706,,,,,,,,271,272,,45,,,38,,,66,67,,,68,,40", "258,,264,52,260,259,,256,257,,,262,24,263,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72,", ",,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10", "53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50", "48,261,265,266,267,268,278,279,,,269,270,,,,,,271,272,,45,,,38,,,66", "67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87", "90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,330,77,78", "26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110", "112,113,,,23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117", "118,,101,102,49,50,48,261,265,266,267,268,278,279,273,274,269,270,,-738", "-738,,,271,272,,45,,,334,,,66,67,,,68,,40,258,,264,52,260,259,,256,257", "277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89", "103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79", "80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,-738,-738,-738", "-738,278,279,,,-738,-738,,,,,,271,272,,45,,,38,,,66,67,,,68,,40,258", ",264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,,92,94,93", "95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72", ",,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,", "10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49", "50,48,261,-738,-738,-738,-738,278,279,,,-738,-738,,,,,,271,272,,45,", ",334,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24,263", ",,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,330", "77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111", "110,112,113,,,23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109", "117,118,,101,102,49,50,48,261,-738,-738,-738,-738,278,279,,,-738,-738", ",,,,,271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257", "277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89", "103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79", "80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267,268", "278,279,273,274,269,270,,-738,-738,,,271,272,,45,,,38,,,66,67,,,68,", "40,258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,,92", "94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,", ",,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,", "23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,261,-738,-738,-738,-738,278,279,,,-738,-738,,,,,,271,272", ",45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24", "263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46", "47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33", "32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116,105,64,107,106", "108,,109,117,118,,101,102,49,50,48,261,-738,-738,-738,-738,278,279,", ",-738,-738,,,,,,271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259", ",256,257,277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,", ",,,,82,,89,103,104,,,46,47,7,77,78,26,11,65,,,,71,72,,,,75,,73,74,76", "35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,9,12,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267", "268,278,279,273,274,269,270,,-738,-738,,,271,272,,45,,,38,,,66,67,,", "68,,40,258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91", ",92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,330,77,78,26,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113", ",,23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,", "101,102,49,50,48,261,,,,,,,,,,,,,,,,271,272,,45,,,334,,,66,67,,,68,", "40,258,,264,52,260,259,,256,257,,,262,24,263,,,,99,87,90,91,,92,94,93", "95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76", "351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,-738,-738", "-738,-738,278,279,,,-738,-738,,,,,,271,272,,242,,,250,,,66,67,,,68,", ",258,,264,52,260,259,,256,257,277,276,262,247,263,,,,99,87,90,91,,92", "94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73", "74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,", ",115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265", "266,267,268,278,279,273,274,269,270,,-738,-738,,,271,272,,242,,,250", ",,66,67,,,68,,,258,,264,52,260,259,,256,257,277,276,262,247,263,,,,99", "87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46", "47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251", ",,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50", "48,261,,,,,,,,,,,,,,,,271,272,,242,,,250,,,66,67,,,68,,,258,,264,52", "260,259,,256,257,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77", "78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,", "81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106", "108,,109,117,118,,101,102,49,50,48,261,,,,,,,,,,,,,,,,271,272,,242,", ",250,,,66,67,,,68,,,258,,264,52,260,259,,256,257,,,,247,,,,,99,87,90", "91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,", "75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,", ",,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48", "261,,,,,,,,,,,,,,,,271,272,,242,,,250,,,66,67,,,68,,,258,,,52,260,259", ",256,257,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82", "65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354", "111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109", "117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68", ",,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78", "26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81", "346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106", "108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66", "67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,", ",,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80", ",,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64", "107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,", "250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,", ",,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352", "79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351", "352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,", ",242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93", "95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76", "351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92", "94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73", "74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,", ",115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,", ",,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90", "91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,77,78,26,11,65", ",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,", ",23,,,,,,10,53,,12,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,", ",,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103", "104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110", "112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118", ",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52", ",,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65", "89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111", "110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117", "118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,433", ",,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26", "82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346", "354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108", ",109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67", ",,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77", "78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,", "81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106", "108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66", "67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,", ",,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,", ",,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107", "106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250", ",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88", "98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80", ",,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107", "106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250", ",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88", "98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80", ",,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107", "106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250", ",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88", "98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80", ",,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107", "106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250", ",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88", "98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79", "80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,", "242,,,250,,,66,67,,,68,,,,319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92", "94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73", "74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,", ",115,114,116,105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,", ",,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,793,,319,,52,,,325,,,,,,247", ",,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104", "71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113", ",,23,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102", "49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24", ",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104", "71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112", "113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,", ",,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,-434", ",46,47,,,,-434,-434,-434,,,-434,-434,-434,,-434,,,,,,,,-434,-434,-434", "-434,,,,,,,,,-434,-434,,-434,-434,-434,-434,-434,,,,,,,,,,,,,,,,,,,", ",,,-434,-434,-434,-434,-434,-434,-434,-434,-434,-434,-434,-434,-434", "-434,,,-434,-434,-434,,,-434,,303,-434,,,-434,-434,,-434,,-434,,-434", ",-434,-434,,-434,-434,-434,-434,-434,-326,-434,-434,-434,,,,-326,-326", "-326,,,-326,-326,-326,,-326,-434,,,-434,-434,,-434,-326,-434,-326,-326", ",,,,-434,,,,-326,-326,,-326,-326,-326,-326,-326,,,,,,,,,,,,,,,,,,,,", ",,-326,-326,-326,-326,-326,-326,-326,-326,-326,-326,-326,-326,-326,-326", ",,-326,-326,-326,,,-326,,312,-326,,,-326,-326,,-326,,-326,,-326,,-326", "-326,,-326,-326,-326,-326,-326,,-326,,-326,,,,,,,,,,,,,,-326,,,-326", "-326,,-326,,-326,77,78,26,,65,,-326,,71,72,,,,75,,73,74,76,351,352,79", "80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35", "36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116", "105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,", ",,,,242,,,250,,,66,67,,,68,,321,,319,,52,,,325,,,,,,247,,,,,99,322,90", "91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,77,78,26,11,65", ",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,", ",23,,,,,,10,53,,12,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,", ",,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103", "104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112", "113,,,23,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,", ",,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103", "104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112", "113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118", ",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319", ",52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78", "26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81", "346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106", "108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66", "67,,,68,,793,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98", ",,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,", ",,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107", "106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250", ",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88", "98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79", "80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,862,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93", "95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,77,78,26,11,65,,,,71,72,,", ",75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10", "53,,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48", ",,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,99", "87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46", "47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251", ",,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50", "48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,", ",99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251", ",,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118,,101,102,49", "50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52,,,325", ",,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89", "103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110", "112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117", "118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321", ",319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77", "78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81", "33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108", "324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66", "67,,,68,,321,,319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,", ",,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351", "352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116", "105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,", ",,,,242,,,250,,,66,67,,,68,,,,319,,52,,,325,,,,,,247,,,,,99,322,90,91", ",92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75", ",73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,", ",115,114,116,105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,", ",,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52,,,325,,,,,,247", ",,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104", "71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112", "113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,,,52,,", ",,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89", "103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111", "110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109", "117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68", ",,,,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77", "78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,", "81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106", "108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,", ",66,67,,,68,,793,,,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35", "36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,", ",,,88,98,237,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35", "36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,", ",,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36", "79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,", ",,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351", "352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,", ",242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93", "95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76", "351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92", "94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73", "74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,", ",115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,", ",,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90", "91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,", "75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53", ",,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,", ",,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87", "90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47", ",75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,", "53,,,115,114,116,105,64,107,106,108,324,109,117,118,,101,102,49,50,48", ",,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52,,,325,,,,,,247", ",,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47", "77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111", "110,112,113,,,23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109", "117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40", ",,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,417,82", ",89,103,104,,,46,47,77,78,26,,65,,,,71,72,,,,75,,73,74,76,351,352,79", "80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351", "352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116", "105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,", ",,,,242,,,250,,,66,67,,,68,,,,319,,52,,,325,,,,,,247,,,,,99,322,90,91", ",92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75", ",73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,", "53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,", ",,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99", "87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46", "47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251", ",,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50", "48,,,,,,,,,,,,,,,,,,,,242,,,250,603,,66,67,,,68,,,,,,52,,,,,,,,,247", ",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104", "71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112", "113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118", ",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,793,,319", ",52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78", "26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81", "346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106", "108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66", "67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,", ",,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80", ",,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64", "107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,", "250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,", ",,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352", "79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351", "352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,", ",242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93", "95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76", "351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92", "94,93,95,,,,,88,98,,,,,,,82,,89,103,104,-274,,46,47,,,,-274,-274,-274", ",,-274,-274,-274,488,-274,485,484,483,493,486,,,-274,-274,-274,,,,496", ",,,,,-274,-274,,-274,-274,-274,-274,-274,488,,485,484,483,493,486,,491", "641,,,,,,496,,501,500,504,503,,,,497,,488,,485,484,483,493,486,-274", ",,,491,,,-274,496,,,,303,-274,,504,503,,,,497,,,,,,,,,,491,482,,,,-274", "-274,,,501,500,504,503,,,,497,,,,-274,,,-274,,77,78,26,-274,65,482,", ",71,72,-274,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113", ",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52", ",,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82", "65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111", "110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117", "118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,", ",52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82", "65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111", "110,112,113,,,23,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117", "118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,", ",52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,123,,,,,122,82", ",89,103,104,,,46,47,77,78,26,,65,,,,71,72,,,,75,,73,74,76,35,36,79,80", ",,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105,64,107", "106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250", ",,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88", "98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79", "80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351", "352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116", "105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,", ",,,,242,,,250,,,66,67,,,68,,,,,,52,,,325,,,,,,247,,,,,99,322,90,91,", "92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,", "73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115", "114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,", ",,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,", "92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,", "73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53", ",,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,", ",,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87", "90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47", ",75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,", ",,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50", "48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,", ",99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71", "72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113", ",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102", "49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247", ",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104", "71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112", "113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118", ",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,,", "52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,", "89,103,104,,,46,47,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79", "80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,,12,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,45", ",,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35", "36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,", ",,,88,98,,,,,,,82,,89,103,104,-311,,46,47,,,,-311,-311,-311,,,-311,-311", "-311,,-311,,,,,,,,-311,,-311,-311,-311,,,,,,,,-311,-311,,-311,-311,-311", "-311,-311,,,,,,,,,,,,,,,,,,,,,,,-311,-311,-311,-311,-311,-311,-311,-311", "-311,-311,-311,-311,-311,-311,,,-311,-311,-311,,,-311,,,-311,,,-311", "-311,,-311,,-311,,-311,,-311,-311,,-311,-311,-311,-311,-311,,-311,,-311", ",,,,,,,,,,,,,-311,,,-311,-311,-311,-311,,-311,,-311,,77,78,26,-311,65", ",,,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113", ",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102", "49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247", ",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104", "71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112", "113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,", ",,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103", "104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112", "113,,,23,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,", ",,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103", "104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110", "112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118", ",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52", ",,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65", "89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111", "110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117", "118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,", ",52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82", "65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354", "111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324", "109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,", ",68,,793,,319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88", "98,,,,77,78,26,82,65,89,103,104,71,72,46,557,,75,,73,74,76,35,36,79", "80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64", "107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,", "250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,", ",,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352", "79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351", "352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,", ",242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93", "95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76", "351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92", "94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73", "74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115", "114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,", ",,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91", ",92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75", ",73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,", ",115,114,116,105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,", ",,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52,,,325,,,,,,247", ",,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104", "71,72,46,557,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113", ",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52", ",,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82", "65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111", "110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109", "117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68", ",321,,319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98", "237,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79", "80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351", "352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,", ",242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93", "95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76", "351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92", "94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73", "74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,", ",115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,", ",,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90", "91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,", "75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,", ",,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48", ",,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99", "87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46", "47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251", ",,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50", "48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,", ",99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71", "72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113", ",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102", "49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247", ",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104", "71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112", "113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,", ",,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103", "104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110", "112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118", ",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52", ",,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65", "89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111", "110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117", "118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,", ",52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82", "65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354", "111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109", "117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68", ",,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78", "26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81", "346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106", "108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66", "67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,", ",,,,,82,,89,103,104,,,46,47,77,78,26,11,65,,,,71,72,,,,75,,73,74,76", "35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,,12,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94", "93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74", "76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94", "93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74", "76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94", "93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74", "76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94", "93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74", "76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94", "93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74", "76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94", "93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74", "76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115", "114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,", ",,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91", ",92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75", ",73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,", "115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,", ",,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90", "91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,77,78,26,11,65", ",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,", ",23,,,,,,10,53,9,12,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,", ",,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,417,82,,89,103,104", ",,46,47,77,78,26,,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33", "32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324", "109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,", ",68,,321,,319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88", "98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80", ",,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107", "106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250", ",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88", "98,,,,,,,82,,89,103,104,-718,,46,47,,,,-718,-718,-718,,,-718,-718,-718", ",-718,,,,,,,,-718,-718,-718,-718,-718,,,,,,,,-718,-718,,-718,-718,-718", "-718,-718,,,,,,,,,,,,,,,,,,,,,,,-718,-718,-718,-718,-718,-718,-718,-718", "-718,-718,-718,-718,-718,-718,,,-718,-718,-718,,,-718,,,-718,,,-718", "-718,,-718,,-718,,-718,,-718,-718,,-718,-718,-718,-718,-718,,-718,-718", "-718,,,,,,,,,,,,,,-718,,,-718,-718,-718,-718,,-718,-717,-718,,,,,-718", "-717,-717,-717,,,-717,-717,-717,,-717,,,,,,,,-717,-717,-717,-717,-717", ",,,,,,,-717,-717,,-717,-717,-717,-717,-717,,,,,,,,,,,,,,,,,,,,,,,-717", "-717,-717,-717,-717,-717,-717,-717,-717,-717,-717,-717,-717,-717,,,-717", "-717,-717,,,-717,,,-717,,,-717,-717,,-717,,-717,,-717,,-717,-717,,-717", "-717,-717,-717,-717,,-717,-717,-717,,,,,,,,,,,,,,-717,,,-717,-717,-717", "-717,,-717,,-717,,77,78,26,-717,65,,,,71,72,,,,75,,73,74,76,351,352", "79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,,,,82,,89,103,104,,,46,47,77,78,26,11,65,,,,71,72,,,,75", ",73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53", "9,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,", ",,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,99,87", "90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,-274,,46,47,,,,-274", "-274,-274,,,-274,-274,-274,,-274,,,,,,,,-274,-274,-274,-274,,,,,,,,", "-274,-274,,-274,-274,-274,-274,-274,,,,,,,,,,,,,,,,,,,,,,,-274,-274", "-274,-274,-274,-274,-274,-274,-274,-274,-274,-274,-274,-274,,,-274,-274", "-274,,,-274,,303,-274,,,-274,-274,,-274,,-274,,-274,,-274,-274,,-274", "-274,-274,-274,-274,,-274,-274,-274,,,,,,,,,,,,,,-274,,,-274,-274,,-274", ",-274,77,78,26,,65,,-274,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81", "33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105,64,107,106,108", ",109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67", ",,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77", "78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81", "33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105,64,107,106,108", ",109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67", ",,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77", "78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,", "81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106", "108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66", "67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,", ",,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,", ",,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105,64,107,106", "108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66", "67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,", ",77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,", ",,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106", "108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66", "67,,,68,,433,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98", ",,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80", ",,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64", "107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,", "250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,", ",,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352", "79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35", "36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,", ",242,,,250,,,66,67,,,68,,433,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94", "93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74", "76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115", "114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,", ",,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91", ",92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75", ",73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,", "53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,", ",,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99", "87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46", "47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251", ",,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50", "48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,", ",99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71", "72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113", ",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102", "49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247", ",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104", "71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113", ",,23,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102", "49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24", ",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104", "71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113", ",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52", ",,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82", "65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111", "110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117", "118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,", ",52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82", "65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354", "111,110,112,113,,,251,,,,,,,347,,,115,114,116,105,64,107,106,108,,109", "117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,343,,,339,,,66,67,,,68,,,", ",,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65", "89,103,104,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110", "112,113,,,251,,,,,,,347,,,115,114,116,105,64,107,106,108,,109,117,118", ",101,102,,,355,,,,,,,,,,,,,,,,,,,,1100,,,250,,,66,67,,,68,,,,,,,,,,", ",,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103", "104,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112", "113,,,251,,,,,,,347,,,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,,,355,,,,,,,,,,,,,,,,,,,,343,,,250,,,66,67,,,68,,,488,,485,484,483", "493,486,,,,,,,,,496,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,585,,491", "82,,89,103,104,77,78,26,,65,504,503,,71,72,497,,,75,,73,74,76,351,352", "79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,392", ",,38,,,66,67,,,68,,40,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,", "88,98,,,,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352,79", "80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,1139,", ",250,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88", "98,,,,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352,79,80", ",,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114,116,105,64", "107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,343,,,339", ",,66,67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,", ",,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352,79,80,,,,", ",81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114,116,105,64,107", "106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,343,,,339,,,66", "67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77", "78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346", "354,111,110,112,113,,,251,,,,,,,347,,,115,114,116,397,64,107,106,398", ",109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,404,,,399,,,250,,,66,67", ",,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78", "26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346", "354,111,110,112,113,,,251,,,,,,,347,,,115,114,116,397,64,107,106,398", ",109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,399,,,250,,,66,67,,,68", ",,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82", "65,89,103,104,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111", "110,112,113,,,251,,,,,,,347,,,115,114,116,105,64,107,106,108,,109,117", "118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,343,,,250,,,66,67,,,68,,,488,", "485,484,483,493,486,,,,,,,,,496,,99,87,90,91,,92,94,93,95,,,,,88,98", ",,,357,,491,82,,89,103,104,77,78,26,,65,504,503,,71,72,497,,,75,,73", "74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347", ",,115,114,116,105,64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,", ",,,,,,,,,,,,1139,,,250,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,", "92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74", "76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115", "114,116,105,64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,", ",,,,,,343,,,339,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93", "95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351", "352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,", ",,343,,,339,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352", "79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,343", ",,339,,,66,67,,,68,,338,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,", ",,88,98,,,,,,,82,,89,103,104,182,193,183,206,179,199,189,188,209,210", "204,187,186,181,207,211,212,191,180,194,198,200,192,185,,,,201,208,203", "202,195,205,190,178,197,196,,,,,,177,184,175,176,172,173,174,135,137", ",,136,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169", "155,156,,,,,,,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142", "164,143,,,171,99,,,,,,,,,,,,,,98,182,193,183,206,179,199,189,188,209", "210,204,187,186,181,207,211,212,191,180,194,198,200,192,185,,,,201,208", "203,202,195,205,190,178,197,196,,,,,,177,184,175,176,172,173,174,135", "137,134,,136,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,", ",,168,169,155,156,,,,,,,,,,,,,,160,159,,144,165,162,161,170,157,158", "152,150,142,164,143,,,171,99,,,,,,,,,,,,,,98,182,193,183,206,179,199", "189,188,209,210,204,187,186,181,207,211,212,191,180,194,198,200,192", "185,,,,201,208,203,202,195,205,190,178,197,196,,,,,,177,184,175,176", "172,173,174,135,137,,,136,,,,,,,,166,167,,163,145,146,147,154,151,153", ",,148,149,,,,168,169,155,156,,,,,,,,,,,,,,160,159,,144,165,162,161,170", "157,158,152,150,142,164,143,,,171,99,,,,,,,,,,,,,,98,182,193,183,206", "179,199,189,188,209,210,204,187,186,181,207,211,212,191,180,194,198", "200,192,185,,,,201,208,203,202,195,205,190,178,197,196,,,,,,177,184", "175,176,172,173,174,135,137,,,136,,,,,,,,166,167,,163,145,146,147,154", "151,153,,,148,149,,,,168,169,155,156,,,,,,,,,,,,,,160,159,,144,165,162", "161,170,157,158,152,150,142,164,143,,,171,99,111,110,112,113,,,,,,,", ",,98,,,115,114,116,770,,,488,773,485,484,483,493,486,101,102,,,355,", ",,496,,,,,,,,,,,,,,,,772,,,743,,,491,741,,,742,,,,,501,500,504,503,", ",,497,,,,771,,,,99,87,90,91,,92,94,93,95,,,,,88,98,111,110,112,113,", ",82,,89,103,104,,,758,759,,115,114,116,770,,,,773,750,,,,,101,102,,", "355,496,,,,,,,,,,,,,,,,,,,772,,,743,,,,741,,,742,,745,,,,,,,497,,,,", ",,771,,,,99,751,90,91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89", "103,104,,,758,759,,115,114,116,770,,,488,773,485,484,483,493,486,101", "102,,,355,,,,496,,,,,,,,,,,,,,,,772,,,743,,,491,741,,,742,,,,,501,500", "504,503,,,,497,,,,771,,,,99,87,90,91,,92,94,93,95,,,,,88,98,111,110", "112,113,,,82,,89,103,104,,,758,759,,115,114,116,770,,,488,773,485,484", "483,493,486,101,102,,,355,,,,496,,,,,,,,,,,,,,,,772,,,743,,,491,741", ",,742,,,,,,,504,503,,,,497,,,,771,,,,99,87,90,91,,92,94,93,95,,,,,88", "98,111,110,112,113,,,82,,89,103,104,,,758,759,,115,114,116,770,,,488", "773,485,484,483,493,486,101,102,,,355,,,,496,,,,,,,,,,,,,,,,772,,,743", ",,491,741,,,742,,1047,,,,,504,503,,,,497,,,,771,,,,99,87,90,91,,92,94", "93,95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,758,759,,115,114", "116,770,,,488,773,485,484,483,493,486,101,102,,,355,,,,496,,,,,,,,,", ",,,,,,772,,,743,,,491,741,,,742,,,,,,,504,503,,,,497,,,,771,,,,99,87", "90,91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,758", "759,,115,114,116,770,,,,773,750,,,,,101,102,,,355,496,,,,,,,,,,,,,,", ",,,,772,,,743,,,,741,,,742,,745,,,,,,,497,,,,,,,771,,,,99,751,90,91", ",92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,758,759,,115", "114,116,770,,,,773,750,,,,,101,102,,,355,496,,,,,,,,,,,,,,,,,,,772,", ",743,,,,741,,,742,,745,,,,,,,497,,,,,,,771,,,,99,751,90,91,,92,94,93", "95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,758,759,,115,114,116", "770,,,,773,,,,,,101,102,,,355,,,,,,,,,,,,,,,,,,,,772,,,743,,,,741,,", "742,,,,,,,,,,,,,,,,771,,,,99,87,90,91,,92,94,93,95,,,,,88,98,111,110", "112,113,,,82,,89,103,104,,,758,759,,115,114,116,770,,,,773,,,,,,101", "102,,,355,,,,,,,,,,,,,,,,,,,,772,,,743,,,,741,,,742,,745,,,,,,,,,,,", ",,771,,,,99,87,90,91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89", "103,104,,,758,759,,115,114,116,770,,,,773,,,,,,101,102,,,355,,,,,,,", ",,,,,,,,,,,,772,,,743,,,,741,,,742,,745,,,,,,,,,,,,,,771,,,,99,87,90", "91,,92,94,93,95,,,,,88,98,237,,,,,,82,,89,103,104,,,758,759,182,193", "183,206,179,199,189,188,209,210,204,187,186,181,207,211,212,191,180", "194,198,200,192,185,,,,201,208,203,291,290,292,289,178,197,196,,,,,", "177,184,175,176,286,287,288,284,137,107,106,285,,109,,,,,,166,167,,163", "145,146,147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,296,,,,,,", ",160,159,,144,165,162,161,170,157,158,152,150,142,164,143,,,171,111", "110,112,113,,,488,,485,484,483,493,486,,,,115,114,116,770,,496,,773", ",,,,,101,102,,,355,,,,,,,,,,491,,,,,,,,,,772,504,503,743,,,497,741,", ",742,,,,,,,,,,,,,,,,771,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,482,", ",,,82,,89,103,104,,,758,759,182,193,183,206,179,199,189,188,209,210", "204,187,186,181,207,211,212,191,180,194,198,200,192,185,,,,201,208,203", "202,195,205,190,178,197,196,,,,,,177,184,175,176,172,173,174,135,137", ",,136,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169", "155,156,,,,,,,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142", "164,143,,,171,111,110,112,113,,,,,,,,,,,,,115,114,116,770,,,,773,750", ",,,,101,102,,,355,496,,,,,,,,,,,,,,,,,,,772,,,743,,,,741,,,742,,745", ",,,,,,497,,,,,,,771,,,,99,751,90,91,,92,94,93,95,,,,,88,98,111,110,112", "113,,,82,,89,103,104,,,758,759,,115,114,116,770,,,,773,750,,,,,101,102", ",,355,496,,,,,,,,,,,,,,,,,,,772,,,743,,,,741,,,742,,745,,,,,,,497,,", ",,,,771,,,,99,751,90,91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82", ",89,103,104,,,758,759,,115,114,116,770,,,,773,,,,,,101,102,,,355,,,", ",,,,,,,,,,,,,,,,772,,,743,,,,741,,,742,,,,,,,,,,,,,,,,771,,,,99,87,90", "91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,758,759", ",115,114,116,770,,,,773,,,,,,101,102,,,355,,,,,,,,,,,,,,,,,,,,772,,", "743,,,,741,,,742,,,,,,,,,,,,,,,,771,,,,99,87,90,91,,92,94,93,95,,,,", "88,98,111,110,112,113,,,82,,89,103,104,,,758,759,,115,114,116,770,,", ",773,,,,,,101,102,,,355,,,,,,,,111,110,112,113,,,,,,,,,772,,,743,115", "114,116,741,,,742,,745,,,,,101,102,,,355,,,,,771,,,,99,87,90,91,,92", "94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,758,759,,,,,,,,,,,,99,87,90", "91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,,,,115", "114,116,,,,,,,,,,,101,102,,,355,111,110,112,113,,,,,,,,,,,,,115,114", "116,,,,,,,,,,,101,102,,,355,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,,,,82,,89,103,104,,,,,,,,,99,87,90,91,,92,94,93,95,,,,", "88,98,111,110,112,113,,,82,,89,103,104,,,,,,115,114,116,488,,485,484", "483,493,486,,,,101,102,,,355,496,,,,,,,,,,,488,,485,484,483,493,486", ",,,,491,,,,496,,,,,501,500,504,503,,,,497,,,,,,,,,,491,99,87,90,91,", "92,94,93,95,,504,503,,88,98,497,,,,,,82,,89,103,104,,,488,482,485,484", "483,493,486,,488,,485,484,483,493,486,496,,,,,,,,496,,,488,482,485,484", "483,493,486,,,,,491,,,,496,,,,491,501,500,504,503,,,,497,501,500,504", "503,,,,497,488,491,485,484,483,493,486,,,,,,504,503,,496,,497,488,,485", "484,483,493,486,,,,,,,482,,496,,,,491,,482,,,,,,,,,504,503,,,,497,,491", ",482,,,,,,,501,500,504,503,,,,497,,,,,,,,,,,,1211,466,,,1210,,,,,,482", ",166,167,,163,145,146,147,154,151,153,,,148,149,,,482,168,169,155,156", ",,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142,164", "143,553,459,171,,554,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148", "149,,,,168,169,155,156,,,,,,,,,,,,,,160,159,,144,165,162,161,170,157", "158,152,150,142,164,143,462,466,171,,461,,,,,,,,166,167,,163,145,146", "147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159", ",144,165,162,161,170,157,158,152,150,142,164,143,1195,466,171,,1196", ",,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169,155", "156,,,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142", "164,143,725,466,171,,726,,,,,,,,166,167,,163,145,146,147,154,151,153", ",,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159,,144,165,162,161", "170,157,158,152,150,142,164,143,1193,459,171,,1194,,,,,,,,166,167,,163", "145,146,147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,", ",160,159,,144,165,162,161,170,157,158,152,150,142,164,143,867,466,171", ",866,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169", "155,156,,,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150", "142,164,143,723,459,171,,724,,,,,,,,166,167,,163,145,146,147,154,151", "153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159,,144,165,162", "161,170,157,158,152,150,142,164,143,455,459,171,,456,,,,,,,,166,167", ",163,145,146,147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,303,", ",,,,,,160,159,,144,165,162,161,170,157,158,152,150,142,164,143,803,459", "171,,804,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168", "169,155,156,,,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152", "150,142,164,143,806,466,171,,807,,,,,,,,166,167,,163,145,146,147,154", "151,153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159,,144,165", "162,161,170,157,158,152,150,142,164,143,832,459,171,,833,,,,,,,,166", "167,,163,145,146,147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,303", ",,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142,164,143,864", "459,171,,865,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,", ",,168,169,155,156,,,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158", "152,150,142,164,143,834,466,171,,835,,,,,,,,166,167,,163,145,146,147", "154,151,153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159,,144", "165,162,161,170,157,158,152,150,142,164,143,553,459,171,,554,,,,,,,", "166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169,155,156,,", ",,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142,164,143", "837,466,171,,838,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149", ",,,168,169,155,156,,,,,,303,,,,,,,,160,159,,144,165,162,161,170,157", "158,152,150,142,164,143,723,459,171,,724,,,,,,,,166,167,,163,145,146", "147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159", ",144,165,162,161,170,157,158,152,150,142,164,143,725,466,171,,726,,", ",,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169,155,156", ",,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142,164", "143,,,171"]; - racc_action_table = (arr = $$$('Array').$new(28951, nil)); + clist = ["-320,600,620,-119,1214,-121,-118,-320,-320,-320,221,222,1124,-320,-320", "-624,-320,239,620,-123,620,925,-624,-110,-320,-732,237,428,-124,311", "122,-122,430,429,717,311,-320,-320,620,-320,-320,-320,-320,-320,-116", "-117,-124,620,620,-116,1001,828,718,627,892,925,627,126,240,-732,-123", "833,125,-117,240,240,-320,-320,-320,-320,-320,-320,-320,-320,-320,-320", "-320,-320,-320,-320,-624,-123,-320,-320,-320,-124,687,-320,-119,-110", "-320,-121,-120,-320,1125,240,-720,135,-320,306,-320,-511,-320,-320,240", "-320,-320,-320,-320,-320,-320,-320,-110,-320,-112,-109,310,-320,-320", "-320,126,-120,310,-320,-320,125,-320,-320,-114,-110,-320,-320,-110,-113", "-320,-320,126,-115,126,990,-113,125,-320,125,-110,-122,-320,-320,-122", "-320,-320,-320,-320,-320,-118,126,126,-719,-107,1000,125,125,-116,-117", "-124,126,126,-116,-117,-124,125,125,-108,221,222,218,-320,-320,-320", "-320,-320,-320,-320,-320,-320,-320,-320,-320,-320,-320,221,222,-320", "-320,-320,311,687,-320,-719,-123,-320,-111,661,-320,-123,648,-119,925", "-320,-121,-320,-119,-320,-320,-121,-320,-320,-320,-320,-320,233,-320", "-723,-320,-628,-720,-629,221,222,-723,-723,-723,104,105,-723,-723,-723", "-320,-723,-120,-320,-320,-102,-320,-120,-320,-723,-723,-723,-723,-723", "663,-320,924,-88,-122,219,-112,-723,-723,522,-723,-723,-723,-723,-723", "-122,240,660,650,649,-122,-118,-111,-109,220,-744,-118,311,648,233,223", "310,-116,240,-117,1063,300,-723,-723,-723,-723,-723,-723,-723,-723,-723", "-723,-723,-723,-723,-723,233,682,-723,-723,-723,648,921,-723,106,107", "-723,104,105,-723,-723,662,-723,-124,-723,126,-723,-112,-723,-723,125", "-723,-723,-723,-723,-723,361,-723,-723,-723,-744,683,-719,-111,-109", "648,306,650,649,646,648,362,648,-723,-110,648,-723,-723,-723,-723,240", "-723,-744,-723,800,-320,-119,-112,-723,310,-112,-120,-320,-320,-320", "650,649,-320,-320,-320,892,-320,-112,-111,-109,859,-111,-109,-112,-320", "833,-320,-320,-320,875,106,107,919,-111,-109,-121,-320,-320,431,-320", "-320,-320,-320,-320,650,649,646,949,471,650,649,650,649,655,650,649", "653,920,1035,861,633,1063,233,-732,634,948,-320,-320,-320,-320,-320", "-320,-320,-320,-320,-320,-320,-320,-320,-320,240,-629,-320,-320,-320", "648,922,-320,-118,-635,-320,-119,-625,-320,-320,648,-320,-617,-320,-625", "-320,510,-320,-320,-617,-320,-320,-320,-320,-320,683,-320,682,-320,507", "506,-121,-118,-744,491,648,488,487,486,496,489,521,-320,-108,-623,-320", "-320,-320,-320,499,-320,-623,-320,126,-723,-117,612,-320,125,614,-122", "-723,-723,-723,650,649,651,-723,-723,633,-723,494,-625,960,650,649,664", "-617,-723,-723,504,503,507,506,-121,633,-119,500,523,960,-723,-723,524", "-723,-723,-723,-723,-723,239,650,649,659,491,-321,488,487,486,496,489", "-623,-321,600,491,240,488,487,486,499,489,-321,-723,-723,-723,-723,-723", "-723,-723,-723,-723,-723,-723,-723,-723,-723,558,-628,-723,-723,-723", "494,688,-723,570,126,-723,648,572,-723,125,710,507,506,-723,574,-723", "500,-723,-723,-114,-723,-723,-723,-723,-723,-614,-723,-723,-723,-321", "126,-123,-614,-614,-614,125,135,-614,-614,-614,-614,-614,-723,-107,-87", "-723,-723,-614,-723,-614,-723,-614,-614,-614,931,-116,485,-723,240,927", "-120,-614,-614,928,-614,-614,-614,-614,-614,585,650,649,646,586,-311", "227,-620,-621,227,950,951,-311,304,-620,-621,304,612,593,237,611,-311", "-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614", "-614,227,-614,-614,-614,227,-614,-614,592,315,-614,240,1188,-614,-614", "233,-614,590,-614,126,-614,638,-614,-614,125,-614,-614,-614,-614,-614", "-115,-614,-617,-614,-311,228,-620,-621,228,-617,-617,-617,-124,233,-617", "-617,-617,-614,-617,306,-614,-614,-614,-614,597,-614,-617,-614,-617", "-617,-617,612,-614,603,614,-614,228,264,-617,-617,228,-617,-617,-617", "-617,-617,606,227,240,227,615,-356,-619,-622,675,616,636,574,-356,-619", "-622,612,627,673,614,638,420,-356,-617,-617,-617,-617,-617,-617,-617", "-617,-617,-617,-617,-617,-617,-617,631,754,-617,-617,-617,227,-617,-617", "1149,1150,-617,499,630,-617,-617,632,-617,875,-617,640,-617,628,-617", "-617,665,-617,-617,-617,-617,-617,228,-617,228,-617,-356,-619,-622,668", "227,669,954,240,958,957,1197,1188,959,-617,-293,500,-617,-617,-617,-617", "638,-617,671,-617,672,-723,676,1056,-617,240,-109,-617,-723,-723,-723", "496,228,680,-723,-723,-320,-723,-118,956,264,499,681,-320,306,-723,-723", "694,-720,985,892,695,-320,114,113,115,116,-723,-723,240,-723,-723,-723", "-723,-723,228,221,222,697,118,117,119,261,700,507,506,263,262,701,500", "703,264,104,105,221,222,358,-723,-723,-723,-723,-723,-723,-723,-723", "-723,-723,-723,-723,-723,-723,-320,705,-723,-723,-723,-385,688,-723", "227,719,-723,720,261,-723,227,1164,263,262,-723,724,-723,226,-723,-723", "1162,-723,-723,-723,-723,-723,224,-723,-723,-723,726,102,90,93,94,732", "95,97,96,98,754,985,892,-723,91,101,-723,-723,90,-111,499,-723,85,733", "92,106,107,264,-723,264,91,-120,333,81,82,83,11,65,264,228,92,71,72", "264,240,228,75,-723,73,74,76,35,36,79,80,788,240,240,500,240,84,33,32", "114,113,115,116,-102,803,23,1056,240,606,281,282,10,53,335,12,118,117", "119,108,64,110,109,111,814,112,120,121,-320,104,105,49,50,48,-321,-320", "-723,819,-626,240,-720,-321,821,-723,-320,-626,280,279,-719,824,-321", "829,-723,45,-626,830,38,834,858,66,67,227,862,68,863,40,-294,876,602", "52,491,-723,488,487,486,558,489,520,24,558,888,892,910,102,90,93,94", "913,95,97,96,98,914,-320,240,917,91,101,240,-321,926,-723,943,-626,85", "944,92,106,107,945,962,46,47,333,81,82,83,11,65,964,300,970,71,72,972", "974,228,75,-716,73,74,76,35,36,79,80,572,574,496,814,240,84,33,32,114", "113,115,116,499,1159,23,488,487,486,306,489,10,53,335,12,118,117,119", "108,64,110,109,111,306,112,120,121,227,104,105,49,50,48,-627,519,-614", "507,506,814,264,-627,500,-614,520,892,987,988,-716,240,-627,240,-614", "45,998,240,38,-295,240,66,67,1009,1013,68,1159,40,488,487,486,52,489", "-716,-293,491,1017,488,487,486,24,489,700,718,1020,102,90,93,94,1022", "95,97,96,98,1024,228,1026,1026,91,101,240,-627,774,-614,240,240,85,1054", "92,106,107,1057,710,46,47,333,81,82,83,11,65,714,853,854,71,72,855,120", "121,75,-717,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32,114,113", "115,116,925,491,23,488,487,486,972,489,10,53,335,12,118,117,119,108", "64,110,109,111,1069,112,120,121,240,104,105,49,50,48,814,491,-617,488", "487,486,1086,489,710,-617,1088,1093,1094,1099,-717,1100,1101,714,-617", "45,-296,1114,38,1115,1116,66,67,240,240,68,240,40,240,240,240,52,925", "-717,710,491,1123,488,487,486,24,489,240,714,1129,102,90,93,94,1130", "95,97,96,98,1132,700,1135,1138,91,101,1140,1142,240,-617,-385,1154,85", "1165,92,106,107,1166,710,46,47,333,81,82,83,11,65,1026,1026,1026,71", "72,1173,1186,1189,75,1194,73,74,76,35,36,79,80,256,1195,694,1115,1205", "84,33,32,114,113,115,116,1205,700,23,129,130,131,132,133,10,53,335,12", "118,117,119,108,64,110,109,111,1208,112,120,121,1210,104,105,49,50,48", "264,268,269,270,271,281,282,276,277,272,273,1212,257,258,1214,1214,274", "275,240,45,1026,255,38,1205,-720,66,67,-719,1231,68,1214,40,261,1214", "267,52,263,262,1214,259,260,280,279,265,24,266,3,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32", "114,113,115,116,,,23,,,,,677,10,53,335,12,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277", "272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263", "262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,278,,-265,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72", ",,,75,,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32,114,113,115", "116,,,23,,,,,889,10,53,335,12,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257", "258,,,274,275,,45,,,337,,,66,67,,,68,,40,261,,267,52,263,262,,259,260", "280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,", "85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35", "36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,677,10,53,335,12,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269", "270,271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,337,,,66,67", ",,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82", "83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,918,10,53,335,12,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273", ",257,258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259", "260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278", ",,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74", "76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12", "118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268", "269,270,271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66", "67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81", "82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257", "258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260", "280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,", "85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35", "36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117", "119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270", "271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68", ",40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,7,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258,,", "274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279", "265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,240,278,,,,,85,,92", "106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79", "80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271", "281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40", "261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,", "104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258", ",,274,275,,45,,,337,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280", "279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,", "92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36", "79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271", "281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40", "261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,", "104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258", ",,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280", "279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,", "92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36", "79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271", "281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40", "261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,", "104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745,-745", ",,274,275,,45,,,38,,,66,67,,264,68,,40,261,,267,52,263,262,,259,260", "280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,261,,91,101,263,262", ",259,260,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,", "73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,264,491,23,488,487", "486,,489,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,264,,261,,,,263,262,710,259,260,,,,,,274,275,,45,,,38,", ",66,67,,,68,,40,261,,267,52,263,262,,259,260,,,265,24,266,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82", "83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745", "-745,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260", "280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85", ",92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36", "79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271", "281,282,276,277,272,273,,-745,-745,,,274,275,,45,,,38,,,66,67,,,68,", "40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,", "95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,", "104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,45,,,38,,,66,67,,,68,,40", "261,,267,52,263,262,,259,260,,,265,24,266,,,,102,90,93,94,,95,97,96", "98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71", "72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,", ",,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,264,268,269,270,271,281,282,276,,272,273,,,,,,274,275,,45,", ",38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266", ",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47", "7,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,264,268,269,270,271,281,282,,,272,273", ",,,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260", "280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85", ",92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36", "79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,-745,-745,-745", "-745,281,282,,,-745,-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40,261", ",267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95,97,96", "98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71", "72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,", ",,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274,275,,45", ",,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266", ",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47", "333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745", "-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259", "260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,", ",85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76", "35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,-745,-745", "-745,-745,281,282,,,-745,-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40", "261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65", ",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,", ",23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274,275", ",45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24", "266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106", "107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113", "115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121", ",104,105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274", "275,,245,,,253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,280,279,265", "250,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745", "-745,,,274,275,,245,,,253,,,66,67,,,68,,,261,,267,52,263,262,,259,260", "280,279,265,250,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84", "349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,245,", ",253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,,,,250,,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47", ",75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,", ",,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,264,,,,,,,,,,,,,,,,274,275,,245,,,253,,,66,67,,,68,,,261,,,52,263", "262,,259,260,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84", "349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,245,", ",253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,,,,250,,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,", ",,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,", ",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79", "80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108", "64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98", ",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,", "53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,", ",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,", "254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,436,,,,52,,,,,,", ",,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,", ",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79", "80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,", ",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35", "36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,,,,85,,92,106,107,-441,,46,47,,,,-441,-441,-441", ",,-441,-441,-441,,-441,,,,,,,,-441,-441,-441,-441,,,,,,,,,-441,-441", ",-441,-441,-441,-441,-441,,,,,,,,,,,,,,,,,,,,,,,-441,-441,-441,-441", "-441,-441,-441,-441,-441,-441,-441,-441,-441,-441,,,-441,-441,-441,", ",-441,,306,-441,,,-441,-441,,-441,,-441,,-441,,-441,-441,,-441,-441", "-441,-441,-441,,-441,-441,-441,,,,,,,,,,,,,,-441,,,-441,-441,,-441,", "-441,81,82,83,,65,,-441,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33", "32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,", "112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,", ",68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,", "81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,", ",84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66", "67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117", "119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,", ",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73", "74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,", ",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,", ",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-327,,46,47,,,,-327", "-327,-327,,,-327,-327,-327,,-327,,,,,,,,-327,,-327,-327,,,,,,,,,-327", "-327,,-327,-327,-327,-327,-327,,,,,,,,,,,,,,,,,,,,,,,-327,-327,-327", "-327,-327,-327,-327,-327,-327,-327,-327,-327,-327,-327,,,-327,-327,-327", ",,-327,,315,-327,,,-327,-327,,-327,,-327,,-327,,-327,-327,,-327,-327", "-327,-327,-327,,-327,,-327,,,,,,,,,,,,,,-327,,,-327,-327,,-327,,-327", "81,82,83,,65,,-327,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327", "112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,", ",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,", "91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355", "79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108", "64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,", "245,,,253,,,66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,", "53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,", ",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82", "83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,", ",52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33", "32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327", "112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,", ",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,", "91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36", "79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108", "64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98", ",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,797,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73", "74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,", ",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,", ",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,867,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82", "83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,", ",52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327", "112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,", ",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,", "91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355", "79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108", "64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98", ",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35", "36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,", ",,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,", ",,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,", ",,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,", ",,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96", "98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76", "354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117", "119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,", ",,,,,245,,,253,,,66,67,,,68,,324,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,", "118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,", ",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47", ",75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,", ",,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49", "50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,328,,,,,,250", ",,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121", ",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,797,,,", "52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33", "32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,240,,,81", "82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,", "84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66", "67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,", ",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,", "118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,", ",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47", ",75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,", "53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,", ",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49", "50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328", ",,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106", "107,,,46,47,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,", ",84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38", ",,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,", "91,101,,,,,,420,85,,92,106,107,,,46,47,81,82,83,,65,,,,71,72,,,,75,", "73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53", ",,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,", ",,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,", ",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116", ",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121", ",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,322,", "52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84", "349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,", ",66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96", "98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76", "354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117", "119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,", ",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73", "74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,", ",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,", ",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,", ",102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-275,,46", "47,,,,-275,-275,-275,,,-275,-275,-275,491,-275,488,487,486,496,489,", ",-275,-275,-275,,,,499,,,,,,-275,-275,,-275,-275,-275,-275,-275,,491", ",488,487,486,496,489,494,,,,,,,,499,504,503,507,506,,,,500,,491,,488", "487,486,496,489,-275,,,,,494,,-275,499,,,,306,-275,504,503,507,506,", ",,500,,,,,,,,,494,485,,,,-275,-275,,,,,507,506,,,,500,,,,-275,,,-275", ",81,82,83,-275,65,,485,,71,72,-275,,,75,,73,74,76,354,355,79,80,,,,", ",84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79", "80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95", "97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73", "74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,", "53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,", ",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,", ",,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,", "102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,", "102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,", "102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116", ",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121", ",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52", ",,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33", "32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84", "349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66", "67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,", ",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,", ",,,,245,,,253,,,66,67,,,68,,324,,,,52,,,328,,,,,,250,,,,,102,325,93", "94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,", ",,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121", ",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52", ",,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65", "92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,", ",,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66", "67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,", ",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,", ",,,,245,,,253,,,66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "560,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,", ",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,", ",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49", "50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328", ",,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65", "92,106,107,71,72,46,560,,75,,73,74,76,354,355,79,80,,,,,,84,349,357", "114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84", "349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66", "67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,", ",,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96", "98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76", "35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,", ",,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325", "93,94,,95,97,96,98,,,,,91,101,240,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,", "254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,", ",,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,", ",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79", "80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108", "64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98", ",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,", "53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,", ",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,", "254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,", ",,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,", ",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11,65,,,,71,72,,,,75,,73,74", "76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,,12,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,", "118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,", ",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47", ",75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53", ",,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,", ",,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,", ",,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48", ",,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,", ",,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,", "102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,", "102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116", ",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47", "81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114", "113,115,116,,,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40", ",,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,420,85", ",92,106,107,,,46,47,81,82,83,,65,,,,71,72,,,,75,,73,74,76,35,36,79,80", ",,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96", "98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76", "35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-725,,46,47,,,,-725,-725", "-725,,,-725,-725,-725,,-725,,,,,,,,-725,-725,-725,-725,-725,,,,,,,,-725", "-725,,-725,-725,-725,-725,-725,,,,,,,,,,,,,,,,,,,,,,,-725,-725,-725", "-725,-725,-725,-725,-725,-725,-725,-725,-725,-725,-725,,,-725,-725,-725", ",,-725,,,-725,,,-725,-725,,-725,,-725,,-725,,-725,-725,,-725,-725,-725", "-725,-725,,-725,-725,-725,,,,,,,,,,,,,,-725,,,-725,-725,-725,-725,,-725", "-724,-725,,,,,-725,-724,-724,-724,,,-724,-724,-724,,-724,,,,,,,,-724", "-724,-724,-724,-724,,,,114,113,115,116,-724,-724,,-724,-724,-724,-724", "-724,,,,,118,117,119,,,,,,,,,,,104,105,,,358,-724,-724,-724,-724,-724", "-724,-724,-724,-724,-724,-724,-724,-724,-724,,,-724,-724,-724,,,-724", ",,-724,,,-724,-724,,-724,,-724,,-724,,-724,-724,,-724,-724,-724,-724", "-724,,-724,-724,-724,,102,90,93,94,,95,97,96,98,,,,-724,91,101,-724", "-724,-724,-724,,-724,85,-724,92,106,107,-275,-724,81,82,83,11,65,-275", "-275,-275,71,72,-275,-275,-275,75,-275,73,74,76,35,36,79,80,-275,-275", "-275,-275,,84,33,32,114,113,115,116,-275,-275,23,-275,-275,-275,-275", "-275,10,53,9,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275", "-275,-275,,,-275,-275,-275,45,,-275,38,306,-275,66,67,-275,-275,68,-275", "40,-275,,-275,52,-275,-275,,-275,-275,-275,-275,-275,24,-275,-275,-275", ",102,90,93,94,,95,97,96,98,,,,-275,91,101,-275,-275,,-275,,-275,85,", "92,106,107,,-275,46,47,81,82,83,,65,,,,71,72,,,,75,,73,74,76,35,36,79", "80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,", ",,91,101,126,,,,,125,85,,92,106,107,-312,,46,47,,,,-312,-312,-312,,", "-312,-312,-312,,-312,,,,,,,,-312,,-312,-312,-312,,,,,,,,-312,-312,,-312", "-312,-312,-312,-312,,,,,,,,,,,,,,,,,,,,,,,-312,-312,-312,-312,-312,-312", "-312,-312,-312,-312,-312,-312,-312,-312,,,-312,-312,-312,,,-312,,,-312", ",,-312,-312,,-312,,-312,,-312,,-312,-312,,-312,-312,-312,-312,-312,", "-312,,-312,,,,,,,,,,,,,,-312,,,-312,-312,-312,-312,,-312,,-312,,81,82", "83,-312,65,,,,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33", "32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,", "112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,", ",68,,436,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,", ",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117", "119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,", ",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73", "74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,", ",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,", ",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,", ",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116", ",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104", "105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52", ",,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",436,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81", "82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84", "33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,", ",,,,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1107,,,253", ",,66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,", ",,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1146,,,253,,", "66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,", ",,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,", ",84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,253,,,66", "67,,,68,,,491,,488,487,486,496,489,,,,,,,,,499,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,588,,494,85,,92,106,107,81,82,83,,65,507,506,,71", "72,500,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116", ",,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", ",,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", ",,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254", ",,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,,,358", ",,,,,,,,,,,,,,,,,,,346,,,253,,,66,67,,,68,,,491,,488,487,486,496,489", ",,,,,,,,499,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,360,,494,85,,92", "106,107,81,82,83,,65,507,506,,71,72,500,,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342", ",,66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,", ",,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66", "67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81", "82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1146,,,253,,,66,67,,", "68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,400,64,110,109,401", ",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,407,,,402,,,253,,,66,67", ",,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68", ",,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357", "114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,,", ",,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85", "65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,341,,", ",,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65", "92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113", "115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121", ",104,105,,,358,,,,,,,,,,,,,,,,,,,,395,,,38,,,66,67,,,68,,40,,,,,,,,", ",,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106", "107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,350,,,118,117,119,400,64,110,109,401,,112,120,121,,104", "105,,,358,,,,,,,,,,,,,,,,,,,,402,,,253,,,66,67,,,68,,,,,,,,,,,,,,,,", ",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,185,196", "186,209,182,202,192,191,212,213,207,190,189,184,210,214,215,194,183", "197,201,203,195,188,,,,204,211,206,205,198,208,193,181,200,199,,,,,", "180,187,178,179,175,176,177,138,140,137,,139,,,,,,,,169,170,,166,148", "149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,,,,,,,,,163,162", ",147,168,165,164,173,160,161,155,153,145,167,146,,,174,102,,,,,,,,,", ",,,,101,185,196,186,209,182,202,192,191,212,213,207,190,189,184,210", "214,215,194,183,197,201,203,195,188,,,,204,211,206,205,198,208,193,181", "200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139,,,,,,,,169,170", ",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,,,,,", ",,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,,,174,102", ",,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213,207,190,189", "184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206,205,198,208", "193,181,200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139,,,,,", ",,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159", ",,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146", ",,174,102,,,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213,207", "190,189,184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206,205", "198,208,193,181,200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139", ",,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158", "159,,,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167", "146,,,174,102,,,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213", "207,190,189,184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206", "294,293,295,292,181,200,199,,,,,,180,187,178,179,289,290,291,287,140", "110,109,288,,112,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152", ",,,171,172,158,159,,,,,,299,,,,,,,,163,162,,147,168,165,164,173,160", "161,155,153,145,167,146,,,174,114,113,115,116,,,,,,491,,488,487,486", "496,489,118,117,119,774,,,,777,499,,,,,104,105,,,358,,,,,,,,,,,,,494", ",,,,,,776,,,747,507,506,,745,,500,746,,,,,,,,,,,,,,,,775,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,114,113,115,116,485,,85,,92,106,107,,,762", "763,,118,117,119,774,,,491,777,488,487,486,496,489,104,105,,,358,,,", "499,,,,,,,,,,,,,,,,776,,,747,,,494,745,,,746,,,,,504,503,507,506,,,", "500,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,", ",85,,92,106,107,,,762,763,,118,117,119,774,,,491,777,488,487,486,496", "489,104,105,,,358,,,,499,,,,,,,,,,,,,,,,776,,,747,,,494,745,,,746,,749", ",,504,503,507,506,,,,500,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,,777", "754,,,,,104,105,,,358,499,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,", "749,,,,,,,500,,,,,,,775,,,,102,755,93,94,,95,97,96,98,,,,,91,101,114", "113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,491,777,488", "487,486,496,489,104,105,,,358,,,,499,,,,,,,,,,,,,,,,776,,,747,,,494", "745,,,746,,,,,504,503,507,506,,,,500,,,,775,,,,102,90,93,94,,95,97,96", "98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119", "774,,,491,777,488,487,486,496,489,104,105,,,358,,,,499,,,,,,,,,,,,,", ",,776,,,747,,,494,745,,,746,,749,,,,,507,506,,,,500,,,,775,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762", "763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776", ",,747,,,,745,,,746,,749,,,,,,,491,,488,487,486,496,489,775,,,,102,90", "93,94,499,95,97,96,98,,,,,91,101,240,114,113,115,116,,85,,92,106,107", "494,,762,763,,,118,117,119,774,,507,506,777,,,500,,,104,105,,,358,,", ",,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,485,,,,,,,,,,,,,775,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,", "762,763,,118,117,119,774,,,,777,754,,,,,104,105,,,358,499,,,,,,,,,,", ",,,,,,,,776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775,,,,102,755,93", "94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763", ",118,117,119,774,,,,777,754,,,,,104,105,,,358,499,,,,,,,,,,,,,,,,,,", "776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775,,,,102,755,93,94,,95", "97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,762,763,185,196,186,209,182", "202,192,191,212,213,207,190,189,184,210,214,215,194,183,197,201,203", "195,188,,,,204,211,206,205,198,208,193,181,200,199,,,,,,180,187,178", "179,175,176,177,138,140,,,139,,,,,,,,169,170,,166,148,149,150,157,154", "156,,,151,152,,,,171,172,158,159,,,,,,,,,,,,,,163,162,,147,168,165,164", "173,160,161,155,153,145,167,146,,,174,114,113,115,116,,,491,,488,487", "486,496,489,,,,118,117,119,774,,499,,777,754,,,,,104,105,,,358,499,", ",,,,,,,494,,,,,,,,,,776,507,506,747,,,500,745,,,746,,749,,,,,,,500,", ",,,,,775,,,,102,755,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,", "85,,92,106,107,,,762,763,,118,117,119,774,,,,777,754,,,,,104,105,,,358", "499,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775", ",,,102,755,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106", "107,,,762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,", ",,,,,,,,776,,,747,,,,745,,,746,,,,,,,,,,,,,,,,775,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763,,118", "117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776,,,747,", ",,745,,,746,,,,,,,,,,,,,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101", "114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,,777,", ",,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,,,,,,", ",,,,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,", ",85,,92,106,107,,,762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358", ",,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,,,,,,,,,,,,,,775,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,", "762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,114,113,115", "116,,,,,,,,,776,,,747,118,117,119,745,,,746,,1053,,,,,104,105,,,358", ",,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107", ",,762,763,491,,488,487,486,496,489,,,,,102,90,93,94,499,95,97,96,98", ",,,,91,101,114,113,115,116,,,85,,92,106,107,494,,,,,118,117,119,,504", "503,507,506,,,,500,,104,105,,,358,,,,,,,,,,,,491,,488,487,486,496,489", ",,,,,,,,499,,,,,,491,485,488,487,486,496,489,,,,,,,,,499,494,102,90", "93,94,,95,97,96,98,,507,506,,91,101,500,,,,,494,85,,92,106,107,,,,504", "503,507,506,,,491,500,488,487,486,496,489,,491,,488,487,486,496,489", "499,,,,,485,,,499,,491,,488,487,486,496,489,,,,,,494,644,,499,485,,", ",494,504,503,507,506,,,,500,504,503,507,506,,,,500,494,,,,,,,,,504,503", "507,506,,,491,500,488,487,486,496,489,,,,,,,,,499,485,,,,,,,,485,,,", ",,,,,,,,,494,,,,485,,,,,,,507,506,872,469,,500,871,,,,,,,,169,170,,166", "148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,485", ",,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,842,469,174", ",843,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172", "158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153", "145,167,146,837,462,174,,838,,,,,,,,169,170,,166,148,149,150,157,154", "156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165", "164,173,160,161,155,153,145,167,146,465,469,174,,464,,,,,,,,169,170", ",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,", ",,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,729,469", "174,,730,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171", "172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155", "153,145,167,146,556,462,174,,557,,,,,,,,169,170,,166,148,149,150,157", "154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168", "165,164,173,160,161,155,153,145,167,146,458,462,174,,459,,,,,,,,169", "170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306", ",,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,556", "462,174,,557,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,", ",,171,172,158,159,,,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161", "155,153,145,167,146,729,469,174,,730,,,,,,,,169,170,,166,148,149,150", "157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147", "168,165,164,173,160,161,155,153,145,167,146,727,462,174,,728,,,,,,,", "169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,", ",,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146", "807,462,174,,808,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152", ",,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160", "161,155,153,145,167,146,810,469,174,,811,,,,,,,,169,170,,166,148,149", "150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162", ",147,168,165,164,173,160,161,155,153,145,167,146,1200,462,174,,1201", ",,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158", "159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145", "167,146,869,462,174,,870,,,,,,,,169,170,,166,148,149,150,157,154,156", ",,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164", "173,160,161,155,153,145,167,146,1202,469,174,,1203,,,,,,,,169,170,,166", "148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,", ",163,162,,147,168,165,164,173,160,161,155,153,145,167,146,839,469,174", ",840,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172", "158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153", "145,167,146,1218,469,174,,1217,,,,,,,,169,170,,166,148,149,150,157,154", "156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165", "164,173,160,161,155,153,145,167,146,727,462,174,,728,,,,,,,,169,170", ",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,", ",,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,,,174"]; + racc_action_table = (arr = $$$('Array').$new(28717, nil)); idx = 0; $send(clist, 'each', [], function $Ruby31$2(str){ @@ -20921,8 +20874,8 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ $writer[$rb_minus($writer["length"], 1)]; }; return (idx = $rb_plus(idx, 1));}, 1);}, 1); - clist = ["461,348,1010,845,518,390,389,461,461,461,512,512,781,461,461,731,461", "1052,926,833,835,1080,921,986,461,1082,414,622,413,1229,440,628,832", "498,752,622,461,461,830,461,461,461,461,461,1097,1098,1101,381,382,393", "740,498,752,990,23,740,1083,1083,990,740,1052,731,921,518,926,348,461", "461,461,461,461,461,461,461,461,461,461,461,461,461,550,550,461,461", "461,835,461,461,348,440,461,1158,414,461,413,23,638,638,461,781,461", "3,461,461,512,461,461,461,461,461,105,461,845,461,390,389,619,105,105", "105,1010,1193,105,105,105,1010,105,461,833,835,461,461,986,461,105,461", "105,105,105,1080,628,832,461,1082,1080,461,105,105,1082,105,105,105", "105,105,1194,1195,830,1215,393,830,973,830,1097,1098,1101,381,382,1097", "1098,1101,381,382,1047,69,550,9,105,105,105,105,105,105,105,105,105", "105,105,105,105,105,638,922,105,105,105,638,105,105,817,12,105,817,386", "105,105,806,105,386,105,1158,105,19,105,105,1158,105,105,105,105,105", "619,105,108,105,240,619,973,922,241,108,108,108,1195,1196,108,108,108", "105,108,1193,105,105,105,105,1193,105,108,105,108,108,108,20,105,14", "1047,105,834,803,108,108,69,108,108,108,108,108,973,19,15,973,806,806", "1194,1195,804,1215,17,1194,1195,243,1215,973,1085,240,1085,813,813,241", "108,108,108,108,108,108,108,108,108,108,108,108,108,108,742,27,108,108", "108,20,108,108,1196,806,108,1000,806,108,108,1120,108,742,108,834,108", "803,108,108,806,108,108,108,108,108,31,108,726,108,355,355,243,42,804", "726,726,726,48,48,726,726,726,108,726,1196,108,108,108,108,1196,108", "726,108,726,726,726,803,108,834,803,108,697,697,726,726,1000,726,726", "726,726,726,803,813,804,1120,1120,804,655,284,925,573,249,1213,925,941", "284,399,45,804,31,399,1120,1213,726,726,726,726,726,726,726,726,726", "726,726,726,726,726,355,355,726,726,726,31,726,726,48,48,726,723,409", "726,726,653,726,292,726,53,726,213,726,726,292,726,726,726,726,726,249", "726,724,726,655,655,284,573,573,573,415,941,941,941,655,408,226,726", "410,917,726,726,726,726,573,726,412,726,941,725,455,248,726,228,865", "726,725,725,725,232,723,725,725,725,391,725,409,409,409,653,653,391", "292,725,725,725,725,725,864,653,391,724,16,16,242,725,725,456,725,725", "725,725,725,244,415,415,415,455,917,408,408,408,410,410,410,411,44,248", "245,455,412,412,412,865,251,725,725,725,725,725,725,725,725,725,725", "725,725,725,725,391,939,725,725,725,456,725,725,864,798,725,939,287", "725,725,302,725,456,725,287,725,798,725,725,44,725,725,725,725,725,866", "725,725,725,1183,1183,44,866,866,866,411,411,411,866,866,377,866,725", "377,939,725,725,725,725,866,725,283,725,316,5,317,939,725,283,5,725", "866,866,320,866,866,866,866,866,818,818,332,287,231,1180,231,231,231", "231,231,134,1180,285,772,333,134,134,772,231,285,1180,866,866,866,866", "866,866,866,866,866,866,866,866,866,866,335,286,866,866,866,231,866", "866,286,336,866,283,29,866,231,231,231,231,866,29,866,231,866,866,337", "866,866,866,866,866,328,866,462,866,1180,328,343,85,506,462,462,462", "285,506,346,462,462,866,462,85,866,866,347,866,349,866,462,462,350,85", "373,231,866,373,374,866,286,374,462,462,354,462,462,462,462,462,1150", "29,356,1150,641,1099,641,641,641,641,641,288,1099,359,755,755,380,380", "288,641,363,1099,462,462,462,462,462,462,462,462,462,462,462,462,462", "462,365,43,462,462,462,641,462,462,371,375,462,21,289,462,641,641,641", "641,462,289,462,641,462,462,359,462,462,462,462,462,376,462,462,462", "1099,675,359,378,387,966,288,966,966,966,966,966,388,462,43,290,462", "462,398,462,966,462,290,291,21,867,43,641,462,392,291,462,867,867,867", "694,21,394,867,867,403,867,966,289,423,694,429,431,675,867,867,966,966", "966,966,432,439,434,966,437,675,867,867,439,867,867,867,867,867,441", "398,451,439,453,401,454,463,398,694,694,290,401,398,694,966,469,398", "470,291,473,401,867,867,867,867,867,867,867,867,867,867,867,867,867", "867,398,474,867,867,867,475,867,867,54,478,867,479,480,867,490,54,439", "502,867,505,867,508,867,867,54,867,867,867,867,867,398,867,867,867,401", "514,340,522,523,530,531,342,341,340,933,532,533,867,342,341,867,867", "340,867,933,867,631,342,341,558,559,560,867,631,564,867,215,215,215", "215,215,215,631,54,580,215,215,581,584,586,215,837,215,215,215,215,215", "215,215,591,595,604,933,605,215,215,215,215,215,215,215,340,606,215", "933,616,342,341,620,215,215,215,215,215,215,215,215,215,215,215,215", "631,215,215,215,18,215,215,215,215,215,590,18,837,621,360,51,51,590", "623,837,18,360,650,658,837,660,590,667,837,215,360,676,215,681,686,215", "215,344,688,215,690,215,708,709,344,215,711,837,718,529,727,51,51,344", "215,736,744,745,746,215,215,215,215,775,215,215,215,215,778,18,780,786", "215,215,787,590,788,837,790,360,215,529,215,215,215,529,529,215,215", "836,836,836,836,836,836,792,800,802,836,836,805,808,344,836,397,836", "836,836,836,836,836,836,578,578,578,578,578,836,836,836,836,836,836", "836,809,907,836,907,907,907,812,907,836,836,836,836,836,836,836,836", "836,836,836,836,820,836,836,836,239,836,836,836,836,836,838,239,397", "826,1138,827,831,838,907,397,239,1138,838,840,397,844,838,907,397,836", "1138,846,836,861,863,836,836,807,872,836,885,836,888,889,807,836,892", "397,894,807,897,646,646,807,836,646,646,646,898,836,836,836,836,900", "836,836,836,836,901,239,903,906,836,836,919,838,927,397,928,1138,836", "932,836,836,836,935,940,836,836,233,233,233,233,233,233,959,962,963", "233,233,972,977,807,233,980,233,233,233,233,233,233,233,25,987,989,996", "997,233,233,233,233,233,233,233,998,710,233,710,710,710,999,710,233", "233,233,233,233,233,233,233,233,233,233,233,1025,233,233,233,1026,233", "233,233,233,233,25,25,25,25,25,25,25,25,25,25,25,1031,25,25,1036,1037", "25,25,1038,233,1039,25,233,1125,1040,233,233,1041,1045,233,1046,233", "25,1125,25,233,25,25,1049,25,25,25,25,25,233,25,1053,1060,1065,233,233", "233,233,1066,233,233,233,233,1068,1069,1070,1072,233,233,1073,25,1125", "1125,1074,1089,233,1125,233,233,233,1100,1103,233,233,991,991,991,991", "991,991,1104,1105,1106,991,991,1117,1136,1139,991,1148,991,991,991,991", "991,991,991,8,8,8,8,8,991,991,991,991,991,991,991,1149,1154,991,1164", "1165,1167,1170,444,991,991,991,991,991,991,991,991,991,991,991,991,1173", "991,991,991,1174,991,991,991,991,991,444,444,444,444,444,444,444,444", "444,444,444,1175,444,444,1176,1178,444,444,1192,991,1197,771,991,771", "771,991,991,771,1199,991,1210,991,444,1211,444,991,444,444,1217,444", "444,444,444,444,991,444,1218,1219,1220,991,991,991,991,1,991,991,991", "991,771,,,,991,991,,444,,444,,,991,,991,991,991,,,991,991,1096,1096", "1096,1096,1096,1096,,,,1096,1096,,,,1096,,1096,1096,1096,1096,1096,1096", "1096,331,331,331,331,331,1096,1096,1096,1096,1096,1096,1096,,,1096,", ",,,689,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,", "1096,1096,1096,,1096,1096,1096,1096,1096,689,689,689,689,689,689,689", "689,689,689,689,,689,689,,,689,689,,1096,,,1096,,,1096,1096,,,1096,", "1096,689,,689,1096,689,689,,689,689,689,689,689,1096,689,,,,1096,1096", "1096,1096,,1096,1096,1096,1096,,,,,1096,1096,,689,,,,,1096,,1096,1096", "1096,,,1096,1096,2,2,2,2,2,2,,,,2,2,,,,2,,2,2,2,2,2,2,2,370,370,370", "370,370,2,2,2,2,2,2,2,,,2,,,,,450,2,2,2,2,2,2,2,2,2,2,2,2,,2,2,2,,2", "2,2,2,2,450,450,450,450,450,450,450,450,450,450,450,,450,450,,,450,450", ",2,,,2,,,2,2,,,2,,2,450,,450,2,450,450,,450,450,450,450,450,2,450,,", ",2,2,2,2,,2,2,2,2,,,,,2,2,,450,,,,,2,,2,2,2,,,2,2,639,639,639,639,639", "639,,,,639,639,,,,639,,639,639,639,639,639,639,639,,,,,,639,639,639", "639,639,639,639,,,639,,,,,719,639,639,639,639,639,639,639,639,639,639", "639,639,,639,639,639,,639,639,639,639,639,719,719,719,719,719,719,719", "719,719,719,719,,719,719,,,719,719,,639,,,639,,,639,639,,,639,,639,719", ",719,639,719,719,,719,719,719,719,719,639,719,,,,639,639,639,639,,639", "639,639,639,,,,,639,639,,719,,,,,639,,639,639,639,,,639,639,1062,1062", "1062,1062,1062,1062,,,,1062,1062,,,,1062,,1062,1062,1062,1062,1062,1062", "1062,,,,,,1062,1062,1062,1062,1062,1062,1062,,1190,1062,1190,1190,1190", ",1190,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,,1062", "1062,1062,,1062,1062,1062,1062,1062,869,869,869,869,869,869,869,869", "869,869,869,,869,869,,,869,869,,1062,,,1062,,,1062,1062,,,1062,,1062", "869,,869,1062,869,869,,869,869,869,869,869,1062,869,,,,1062,1062,1062", "1062,,1062,1062,1062,1062,,,,,1062,1062,,869,,,,,1062,,1062,1062,1062", ",,1062,1062,967,967,967,967,967,967,,,,967,967,,,,967,,967,967,967,967", "967,967,967,,,,,,967,967,967,967,967,967,967,,1092,967,1092,1092,1092", ",1092,967,967,967,967,967,967,967,967,967,967,967,967,,967,967,967,", "967,967,967,967,967,314,314,314,314,314,314,314,314,314,314,314,,314", "314,,,314,314,,967,,,967,,,967,967,,,967,,967,314,,314,967,314,314,", "314,314,314,314,314,967,314,,,,967,967,967,967,,967,967,967,967,,,,", "967,967,,314,,,,,967,,967,967,967,,,967,967,369,369,369,369,369,369", ",,,369,369,,,,369,,369,369,369,369,369,369,369,,,,,,369,369,369,369", "369,369,369,,,369,,,,,,369,369,369,369,369,369,369,369,369,369,369,369", ",369,369,369,,369,369,369,369,369,547,547,547,547,547,547,547,547,547", "547,547,,547,547,,,547,547,,369,,,369,,,369,369,,,369,,369,547,,547", "369,547,547,,547,547,547,547,547,369,547,,,,369,369,369,369,,369,369", "369,369,,,,,369,369,547,547,,,,,369,,369,369,369,,,369,369,250,250,250", "250,250,250,,,,250,250,,,,250,,250,250,250,250,250,250,250,,,,,,250", "250,250,250,250,250,250,,,250,,,,,,250,250,250,250,250,250,250,250,250", "250,250,250,,250,250,250,,250,250,250,250,250,1061,1061,1061,1061,1061", "1061,1061,1061,1061,1061,1061,,1061,1061,,,1061,1061,,250,,,250,,,250", "250,,,250,,250,1061,,1061,250,1061,1061,,1061,1061,1061,1061,1061,250", "1061,,,,250,250,250,250,,250,250,250,250,,,,,250,250,,1061,,,,,250,", "250,250,250,,,250,250,852,852,852,852,852,852,,,,852,852,,,,852,,852", "852,852,852,852,852,852,,,,,,852,852,852,852,852,852,852,,,852,,,,,", "852,852,852,852,852,852,852,852,852,852,852,852,,852,852,852,,852,852", "852,852,852,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,", "1005,1005,,,1005,1005,,852,,,852,,,852,852,,,852,,852,1005,,1005,852", "1005,1005,,1005,1005,1005,1005,1005,852,1005,,,,852,852,852,852,,852", "852,852,852,,,,,852,852,,1005,,,,,852,,852,852,852,,,852,852,227,227", "227,227,227,227,,,,227,227,,,,227,,227,227,227,227,227,227,227,,,,,", "227,227,227,227,227,227,227,,,227,,,,,,227,227,227,227,227,227,227,227", "227,227,227,227,,227,227,227,,227,227,227,227,227,602,602,602,602,602", "602,602,602,602,602,602,,602,602,,,602,602,,227,,,227,,,227,227,,,227", ",227,602,,602,227,602,602,,602,602,602,602,602,227,602,,,,227,227,227", "227,,227,227,227,227,,,,,227,227,,602,,,,,227,,227,227,227,,,227,227", "841,841,841,841,841,841,,,,841,841,,,,841,,841,841,841,841,841,841,841", ",,,,,841,841,841,841,841,841,841,,,841,,,,,,841,841,841,841,841,841", "841,841,841,841,841,841,,841,841,841,,841,841,841,841,841,1028,1028", "1028,1028,1028,1028,1028,1028,1028,1028,1028,,1028,1028,,,1028,1028", ",841,,,841,,,841,841,,,841,,841,1028,,1028,841,1028,1028,,1028,1028", "1028,1028,1028,841,1028,,,,841,841,841,841,,841,841,841,841,,,,,841", "841,,1028,,,,,841,,841,841,841,,,841,841,1007,1007,1007,1007,1007,1007", ",,,1007,1007,,,,1007,,1007,1007,1007,1007,1007,1007,1007,,,,,,1007,1007", "1007,1007,1007,1007,1007,,,1007,,,,,,1007,1007,1007,1007,1007,1007,1007", "1007,1007,1007,1007,1007,,1007,1007,1007,,1007,1007,1007,1007,1007,1027", "1027,1027,1027,1027,1027,1027,1027,1027,1027,1027,,1027,1027,,,1027", "1027,,1007,,,1007,,,1007,1007,,,1007,,1007,1027,,1027,1007,1027,1027", ",1027,1027,1027,1027,1027,1007,1027,,,,1007,1007,1007,1007,,1007,1007", "1007,1007,,,,,1007,1007,,1027,,,,,1007,,1007,1007,1007,,,1007,1007,1091", "1091,1091,1091,1091,1091,,,,1091,1091,,,,1091,,1091,1091,1091,1091,1091", "1091,1091,,,,,,1091,1091,1091,1091,1091,1091,1091,,,1091,,,,,,1091,1091", "1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,,1091,1091,1091,,1091", "1091,1091,1091,1091,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004", "1004,,1004,1004,,,1004,1004,,1091,,,1091,,,1091,1091,,,1091,,1091,1004", ",1004,1091,1004,1004,,1004,1004,1004,1004,1004,1091,1004,,,,1091,1091", "1091,1091,,1091,1091,1091,1091,,,,,1091,1091,,1004,,,,,1091,,1091,1091", "1091,,,1091,1091,1140,1140,1140,1140,1140,1140,,,,1140,1140,,,,1140", ",1140,1140,1140,1140,1140,1140,1140,,,,,,1140,1140,1140,1140,1140,1140", "1140,,491,1140,491,491,491,,491,1140,1140,1140,1140,1140,1140,1140,1140", "1140,1140,1140,1140,,1140,1140,1140,,1140,1140,1140,1140,1140,706,,706", "706,706,,706,,491,,1107,,1107,1107,1107,,1107,491,,1140,,,1140,,,1140", "1140,,544,1140,,1140,,,,1140,,706,,528,,,,,1140,,706,1107,,1140,1140", "1140,1140,,1140,1140,1140,1140,,,544,,1140,1140,544,544,,544,544,,1140", "528,1140,1140,1140,528,528,1140,1140,618,618,618,618,618,618,,,,618", "618,,,,618,,618,618,618,618,618,618,618,,,,,,618,618,618,618,618,618", "618,,1108,618,1108,1108,1108,,1108,618,618,618,618,618,618,618,618,618", "618,618,618,,618,618,618,,618,618,618,618,618,546,546,546,546,546,546", "546,546,1108,546,546,,,,,,546,546,,618,,,618,,,618,618,,543,618,,618", "546,,546,618,546,546,,546,546,546,546,546,618,546,,,,618,618,618,618", ",618,618,618,618,,,543,,618,618,543,543,,543,543,,618,,618,618,618,", ",618,618,615,615,615,615,615,615,,,,615,615,,,,615,,615,615,615,615", "615,615,615,,,,,,615,615,615,615,615,615,615,,908,615,908,908,908,,908", "615,615,615,615,615,615,615,615,615,615,615,615,,615,615,615,,615,615", "615,615,615,601,,,,,,,,908,,,,,,,,601,601,,615,,,615,,,615,615,,,615", ",615,601,,601,615,601,601,,601,601,,,601,615,601,,,,615,615,615,615", ",615,615,615,615,,,,,615,615,,,,,,,615,,615,615,615,,,615,615,887,887", "887,887,887,887,,,,887,887,,,,887,,887,887,887,887,887,887,887,,,,,", "887,887,887,887,887,887,887,,,887,,,,,,887,887,887,887,887,887,887,887", "887,887,887,887,,887,887,887,,887,887,887,887,887,545,545,545,545,545", "545,545,,,545,545,,,,,,545,545,,887,,,887,,,887,887,,,887,,887,545,", "545,887,545,545,,545,545,545,545,545,887,545,,,,887,887,887,887,,887", "887,887,887,,,,,887,887,,,,,,,887,,887,887,887,,,887,887,339,339,339", "339,339,339,,,,339,339,,,,339,,339,339,339,339,339,339,339,,,,,,339", "339,339,339,339,339,339,,,339,,,,,,339,339,339,339,339,339,339,339,339", "339,339,339,,339,339,339,,339,339,339,339,339,526,526,526,526,526,526", "526,526,526,526,526,,526,526,,,526,526,,339,,,339,,,339,339,,,339,,339", "526,,526,339,526,526,,526,526,526,526,526,339,526,,,,339,339,339,339", ",339,339,339,339,,,,,339,339,,,,,,,339,,339,339,339,,,339,339,1090,1090", "1090,1090,1090,1090,,,,1090,1090,,,,1090,,1090,1090,1090,1090,1090,1090", "1090,,,,,,1090,1090,1090,1090,1090,1090,1090,,,1090,,,,,,1090,1090,1090", "1090,1090,1090,1090,1090,1090,1090,1090,1090,,1090,1090,1090,,1090,1090", "1090,1090,1090,542,542,542,542,542,542,542,,,542,542,,,,,,542,542,,1090", ",,1090,,,1090,1090,,,1090,,1090,542,,542,1090,542,542,,542,542,542,542", "542,1090,542,,,,1090,1090,1090,1090,,1090,1090,1090,1090,,,,,1090,1090", ",,,,,,1090,,1090,1090,1090,,,1090,1090,38,38,38,38,38,38,,,,38,38,,", ",38,,38,38,38,38,38,38,38,,,,,,38,38,38,38,38,38,38,,,38,,,,,,38,38", "38,38,38,38,38,38,38,38,38,38,,38,38,38,,38,38,38,38,38,541,541,541", "541,541,541,541,,,541,541,,,,,,541,541,,38,,,38,,,38,38,,,38,,38,541", ",541,38,541,541,,541,541,541,541,541,38,541,,,,38,38,38,38,,38,38,38", "38,,,,,38,38,,,,,,,38,,38,38,38,,,38,38,985,985,985,985,985,985,,,,985", "985,,,,985,,985,985,985,985,985,985,985,,,,,,985,985,985,985,985,985", "985,,,985,,,,,,985,985,985,985,985,985,985,985,985,985,985,985,,985", "985,985,,985,985,985,985,985,540,540,540,540,540,540,540,,,540,540,", ",,,,540,540,,985,,,985,,,985,985,,,985,,985,540,,540,985,540,540,,540", "540,540,540,540,985,540,,,,985,985,985,985,,985,985,985,985,,,,,985", "985,,,,,,,985,,985,985,985,,,985,985,1184,1184,1184,1184,1184,1184,", ",,1184,1184,,,,1184,,1184,1184,1184,1184,1184,1184,1184,,,,,,1184,1184", "1184,1184,1184,1184,1184,,,1184,,,,,,1184,1184,1184,1184,1184,1184,1184", "1184,1184,1184,1184,1184,,1184,1184,1184,,1184,1184,1184,1184,1184,361", "361,361,361,361,361,361,361,361,361,361,,361,361,,,361,361,,1184,,,1184", ",,1184,1184,,,1184,,1184,361,,361,1184,361,361,,361,361,361,361,361", "1184,361,,,,1184,1184,1184,1184,,1184,1184,1184,1184,,,,,1184,1184,", ",,,,,1184,,1184,1184,1184,,,1184,1184,385,385,385,385,385,385,,,,385", "385,,,,385,,385,385,385,385,385,385,385,,,,,,385,385,385,385,385,385", "385,,,385,,,,,,385,385,385,385,385,385,385,385,385,385,385,385,,385", "385,385,,385,385,385,385,385,539,539,539,539,539,539,539,,,539,539,", ",,,,539,539,,385,,,385,,,385,385,,,385,,385,539,,539,385,539,539,,539", "539,539,539,539,385,539,,,,385,385,385,385,,385,385,385,385,,,,,385", "385,,,,,,,385,,385,385,385,,,385,385,384,384,384,384,384,384,,,,384", "384,,,,384,,384,384,384,384,384,384,384,,,,,,384,384,384,384,384,384", "384,,,384,,,,,,384,384,384,384,384,384,384,384,384,384,384,384,,384", "384,384,,384,384,384,384,384,538,538,538,538,538,538,538,,,538,538,", ",,,,538,538,,384,,,384,,,384,384,,,384,,384,538,,538,384,538,538,,538", "538,538,538,538,384,538,,,,384,384,384,384,,384,384,384,384,,,,,384", "384,,,,,,,384,,384,384,384,,,384,384,132,132,132,132,132,132,,,,132", "132,,,,132,,132,132,132,132,132,132,132,,,,,,132,132,132,132,132,132", "132,,,132,,,,,,132,132,132,132,132,132,132,132,132,132,132,132,,132", "132,132,,132,132,132,132,132,527,527,527,527,527,527,527,527,527,527", "527,,527,527,,,527,527,,132,,,132,,,132,132,,,132,,132,527,,527,132", "527,527,,527,527,527,527,527,132,527,,,,132,132,132,132,,132,132,132", "132,,,,,132,132,,,,,,,132,,132,132,132,,,132,132,334,334,334,334,334", "334,,,,334,334,,,,334,,334,334,334,334,334,334,334,,,,,,334,334,334", "334,334,334,334,,,334,,,,,,334,334,334,334,334,334,334,334,334,334,334", "334,,334,334,334,,334,334,334,334,334,548,,,,,,,,,,,,,,,,548,548,,334", ",,334,,,334,334,,,334,,334,548,,548,334,548,548,,548,548,,,548,334,548", ",,,334,334,334,334,,334,334,334,334,,,,,334,334,,,,914,914,914,334,914", "334,334,334,914,914,334,334,,914,,914,914,914,914,914,914,914,,,,,,914", "914,914,914,914,914,914,,,914,,,,,,,914,,,914,914,914,914,914,914,914", "914,,914,914,914,,914,914,914,914,914,537,537,537,537,537,537,537,,", "537,537,,,,,,537,537,,914,,,914,,,914,914,,,914,,,537,,537,914,537,537", ",537,537,537,537,537,914,537,,,,914,914,914,914,,914,914,914,914,,,", ",914,914,,,,915,915,915,914,915,914,914,914,915,915,914,914,,915,,915", "915,915,915,915,915,915,,,,,,915,915,915,915,915,915,915,,,915,,,,,", ",915,,,915,915,915,915,915,915,915,915,,915,915,915,,915,915,915,915", "915,362,362,362,362,362,362,362,362,362,362,362,,362,362,,,362,362,", "915,,,915,,,915,915,,,915,,,362,,362,915,362,362,,362,362,362,362,362", "915,362,,,,915,915,915,915,,915,915,915,915,,,,,915,915,,,,916,916,916", "915,916,915,915,915,916,916,915,915,,916,,916,916,916,916,916,916,916", ",,,,,916,916,916,916,916,916,916,,,916,,,,,,,916,,,916,916,916,916,916", "916,916,916,,916,916,916,,916,916,916,916,916,534,,,,,,,,,,,,,,,,534", "534,,916,,,916,,,916,916,,,916,,,534,,534,916,534,534,,534,534,,,,916", ",,,,916,916,916,916,,916,916,916,916,,,,,916,916,,,,261,261,261,916", "261,916,916,916,261,261,916,916,,261,,261,261,261,261,261,261,261,,", ",,,261,261,261,261,261,261,261,,,261,,,,,,,261,,,261,261,261,261,261", "261,261,261,,261,261,261,,261,261,261,261,261,535,,,,,,,,,,,,,,,,535", "535,,261,,,261,,,261,261,,,261,,,535,,535,261,535,535,,535,535,,,,261", ",,,,261,261,261,261,,261,261,261,261,,,,,261,261,,,,729,729,729,261", "729,261,261,261,729,729,261,261,,729,,729,729,729,729,729,729,729,,", ",,,729,729,729,729,729,729,729,,,729,,,,,,,729,,,729,729,729,729,729", "729,729,729,,729,729,729,,729,729,729,729,729,536,,,,,,,,,,,,,,,,536", "536,,729,,,729,,,729,729,,,729,,,536,,,729,536,536,,536,536,,,,729,", ",,,729,729,729,729,,729,729,729,729,,,,,729,729,,,,325,325,325,729,325", "729,729,729,325,325,729,729,,325,,325,325,325,325,325,325,325,,,,,,325", "325,325,325,325,325,325,,,325,,,,,,,325,,,325,325,325,325,325,325,325", "325,,325,325,325,,325,325,325,325,325,,,,,,,,,,,,,,,,,,,,325,,,325,", ",325,325,,,325,,,,,,325,,,,,,,,,325,,,,,325,325,325,325,,325,325,325", "325,,,,,325,325,,,,728,728,728,325,728,325,325,325,728,728,325,325,", "728,,728,728,728,728,728,728,728,,,,,,728,728,728,728,728,728,728,,", "728,,,,,,,728,,,728,728,728,728,728,728,728,728,,728,728,728,,728,728", "728,728,728,,,,,,,,,,,,,,,,,,,,728,,,728,,,728,728,,,728,,,,,,728,,", ",,,,,,728,,,,,728,728,728,728,,728,728,728,728,,,,,728,728,,,,260,260", "260,728,260,728,728,728,260,260,728,728,,260,,260,260,260,260,260,260", "260,,,,,,260,260,260,260,260,260,260,,,260,,,,,,,260,,,260,260,260,260", "260,260,260,260,,260,260,260,,260,260,260,260,260,,,,,,,,,,,,,,,,,,", ",260,,,260,,,260,260,,,260,,,,,,260,,,,,,,,,260,,,,,260,260,260,260", ",260,260,260,260,,,,,260,260,,,,259,259,259,260,259,260,260,260,259", "259,260,260,,259,,259,259,259,259,259,259,259,,,,,,259,259,259,259,259", "259,259,,,259,,,,,,,259,,,259,259,259,259,259,259,259,259,,259,259,259", ",259,259,259,259,259,,,,,,,,,,,,,,,,,,,,259,,,259,,,259,259,,,259,,", ",,,259,,,,,,,,,259,,,,,259,259,259,259,,259,259,259,259,,,,,259,259", ",,,258,258,258,259,258,259,259,259,258,258,259,259,,258,,258,258,258", "258,258,258,258,,,,,,258,258,258,258,258,258,258,,,258,,,,,,,258,,,258", "258,258,258,258,258,258,258,,258,258,258,,258,258,258,258,258,,,,,,", ",,,,,,,,,,,,,258,,,258,,,258,258,,,258,,,,,,258,,,,,,,,,258,,,,,258", "258,258,258,,258,258,258,258,,,,,258,258,,,,257,257,257,258,257,258", "258,258,257,257,258,258,,257,,257,257,257,257,257,257,257,,,,,,257,257", "257,257,257,257,257,,,257,,,,,,,257,,,257,257,257,257,257,257,257,257", ",257,257,257,,257,257,257,257,257,,,,,,,,,,,,,,,,,,,,257,,,257,,,257", "257,,,257,,,,,,257,,,,,,,,,257,,,,,257,257,257,257,,257,257,257,257", ",,,,257,257,,,,256,256,256,257,256,257,257,257,256,256,257,257,,256", ",256,256,256,256,256,256,256,,,,,,256,256,256,256,256,256,256,,,256", ",,,,,,256,,,256,256,256,256,256,256,256,256,,256,256,256,,256,256,256", "256,256,,,,,,,,,,,,,,,,,,,,256,,,256,,,256,256,,,256,,,,,,256,,,,,,", ",,256,,,,,256,256,256,256,,256,256,256,256,,,,,256,256,,,,,,,256,,256", "256,256,,,256,256,330,330,330,330,330,,,,330,330,,,,330,,330,330,330", "330,330,330,330,,,,,,330,330,330,330,330,330,330,,,330,,,,,,330,330", ",330,330,330,330,330,330,330,330,330,,330,330,330,,330,330,330,330,330", ",,,,,,,,,,,,,,,,,,,330,,,330,,,330,330,,,330,,330,,,,330,,,,,,,,,330", ",,,,330,330,330,330,,330,330,330,330,,,,,330,330,,,,704,704,704,330", "704,330,330,330,704,704,330,330,,704,,704,704,704,704,704,704,704,,", ",,,704,704,704,704,704,704,704,,,704,,,,,,,704,,,704,704,704,704,704", "704,704,704,,704,704,704,,704,704,704,704,704,,,,,,,,,,,,,,,,,,,,704", ",,704,,,704,704,,,704,,,,,,704,,,,,,,,,704,,,,,704,704,704,704,,704", "704,704,704,,,,,704,704,,,,691,691,691,704,691,704,704,704,691,691,704", "704,,691,,691,691,691,691,691,691,691,,,,,,691,691,691,691,691,691,691", ",,691,,,,,,,691,,,691,691,691,691,691,691,691,691,,691,691,691,,691", "691,691,691,691,,,,,,,,,,,,,,,,,,,,691,,,691,,,691,691,,,691,,691,,", ",691,,,,,,,,,691,,,,,691,691,691,691,,691,691,691,691,,,,,691,691,,", ",255,255,255,691,255,691,691,691,255,255,691,691,,255,,255,255,255,255", "255,255,255,,,,,,255,255,255,255,255,255,255,,,255,,,,,,,255,,,255,255", "255,255,255,255,255,255,,255,255,255,,255,255,255,255,255,,,,,,,,,,", ",,,,,,,,,255,,,255,,,255,255,,,255,,,,,,255,,,,,,,,,255,,,,,255,255", "255,255,,255,255,255,255,,,,,255,255,,,,254,254,254,255,254,255,255", "255,254,254,255,255,,254,,254,254,254,254,254,254,254,,,,,,254,254,254", "254,254,254,254,,,254,,,,,,,254,,,254,254,254,254,254,254,254,254,,254", "254,254,,254,254,254,254,254,,,,,,,,,,,,,,,,,,,,254,,,254,,,254,254", ",,254,,,,,,254,,,,,,,,,254,,,,,254,254,254,254,,254,254,254,254,,,,", "254,254,,,,685,685,685,254,685,254,254,254,685,685,254,254,,685,,685", "685,685,685,685,685,685,,,,,,685,685,685,685,685,685,685,,,685,,,,,", ",685,,,685,685,685,685,685,685,685,685,,685,685,685,,685,685,685,685", "685,,,,,,,,,,,,,,,,,,,,685,,,685,,,685,685,,,685,,,,,,685,,,,,,,,,685", ",,,,685,685,685,685,,685,685,685,685,,,,,685,685,,,,684,684,684,685", "684,685,685,685,684,684,685,685,,684,,684,684,684,684,684,684,684,,", ",,,684,684,684,684,684,684,684,,,684,,,,,,,684,,,684,684,684,684,684", "684,684,684,,684,684,684,,684,684,684,684,684,,,,,,,,,,,,,,,,,,,,684", ",,684,,,684,684,,,684,,,,,,684,,,,,,,,,684,,,,,684,684,684,684,,684", "684,684,684,,,,,684,684,,,,680,680,680,684,680,684,684,684,680,680,684", "684,,680,,680,680,680,680,680,680,680,,,,,,680,680,680,680,680,680,680", ",,680,,,,,,,680,,,680,680,680,680,680,680,680,680,,680,680,680,,680", "680,680,680,680,,,,,,,,,,,,,,,,,,,,680,,,680,,,680,680,,,680,,,,,,680", ",,,,,,,,680,,,,,680,680,680,680,,680,680,680,680,,,,,680,680,,,,679", "679,679,680,679,680,680,680,679,679,680,680,,679,,679,679,679,679,679", "679,679,,,,,,679,679,679,679,679,679,679,,,679,,,,,,,679,,,679,679,679", "679,679,679,679,679,,679,679,679,,679,679,679,679,679,,,,,,,,,,,,,,", ",,,,,679,,,679,,,679,679,,,679,,,,,,679,,,,,,,,,679,,,,,679,679,679", "679,,679,679,679,679,,,,,679,679,,,,678,678,678,679,678,679,679,679", "678,678,679,679,,678,,678,678,678,678,678,678,678,,,,,,678,678,678,678", "678,678,678,,,678,,,,,,,678,,,678,678,678,678,678,678,678,678,678,678", "678,678,,678,678,678,678,678,,,,,,,,,,,,,,,,,,,,678,,,678,,,678,678", ",,678,,,,678,,678,,,678,,,,,,678,,,,,678,678,678,678,,678,678,678,678", ",,,,678,678,,,,677,677,677,678,677,678,678,678,677,677,678,678,,677", ",677,677,677,677,677,677,677,,,,,,677,677,677,677,677,677,677,,,677", ",,,,,,677,,,677,677,677,677,677,677,677,677,677,677,677,677,,677,677", "677,677,677,,,,,,,,,,,,,,,,,,,,677,,,677,,,677,677,,,677,,677,,677,", "677,,,677,,,,,,677,,,,,677,677,677,677,,677,677,677,677,,,,,677,677", ",,,950,950,950,677,950,677,677,677,950,950,677,677,,950,,950,950,950", "950,950,950,950,,,,,,950,950,950,950,950,950,950,,,950,,,,,,,950,,,950", "950,950,950,950,950,950,950,,950,950,950,,950,950,950,950,950,,,,,,", ",,,,,,,,,,,,,950,,,950,,,950,950,,,950,,,,,,950,,,,,,,,,950,,,,,950", "950,950,950,,950,950,950,950,,,,,950,950,,,,956,956,956,950,956,950", "950,950,956,956,950,950,,956,,956,956,956,956,956,956,956,,,,,,956,956", "956,956,956,956,956,,,956,,,,,,,956,,,956,956,956,956,956,956,956,956", ",956,956,956,,956,956,956,956,956,,,,,,,,,,,,,,,,,,,,956,,,956,,,956", "956,,,956,,,,,,956,,,,,,,,,956,,,,,956,956,956,956,,956,956,956,956", ",,,,956,956,,,,,,,956,,956,956,956,32,,956,956,,,,32,32,32,,,32,32,32", ",32,,,,,,,,32,32,32,32,,,,,,,,,32,32,,32,32,32,32,32,,,,,,,,,,,,,,,", ",,,,,,,32,32,32,32,32,32,32,32,32,32,32,32,32,32,,,32,32,32,,,32,,32", "32,,,32,32,,32,,32,,32,,32,32,,32,32,32,32,32,33,32,32,32,,,,33,33,33", ",,33,33,33,,33,32,,,32,32,,32,33,32,33,33,,,,,32,,,,33,33,,33,33,33", "33,33,,,,,,,,,,,,,,,,,,,,,,,33,33,33,33,33,33,33,33,33,33,33,33,33,33", ",,33,33,33,,,33,,33,33,,,33,33,,33,,33,,33,,33,33,,33,33,33,33,33,,33", ",33,,,,,,,,,,,,,,33,,,33,33,,33,,33,674,674,674,,674,,33,,674,674,,", ",674,,674,674,674,674,674,674,674,,,,,,674,674,674,674,674,674,674,", ",674,,,,,,,674,,,674,674,674,674,674,674,674,674,,674,674,674,,674,674", "674,674,674,,,,,,,,,,,,,,,,,,,,674,,,674,,,674,674,,,674,,,,,,674,,", ",,,,,,674,,,,,674,674,674,674,,674,674,674,674,,,,,674,674,,,,34,34", "34,674,34,674,674,674,34,34,674,674,,34,,34,34,34,34,34,34,34,,,,,,34", "34,34,34,34,34,34,,,34,,,,,,,34,,,34,34,34,34,34,34,34,34,34,34,34,34", ",34,34,34,34,34,,,,,,,,,,,,,,,,,,,,34,,,34,,,34,34,,,34,,34,,34,,34", ",,34,,,,,,34,,,,,34,34,34,34,,34,34,34,34,,,,,34,34,,,,,,,34,,34,34", "34,,,34,34,673,673,673,673,673,,,,673,673,,,,673,,673,673,673,673,673", "673,673,,,,,,673,673,673,673,673,673,673,,,673,,,,,,673,673,,673,673", "673,673,673,673,673,673,673,,673,673,673,,673,673,673,673,673,,,,,,", ",,,,,,,,,,,,,673,,,673,,,673,673,,,673,,673,,,,673,,,,,,,,,673,,,,,673", "673,673,673,,673,673,673,673,,,,,673,673,,,,979,979,979,673,979,673", "673,673,979,979,673,673,,979,,979,979,979,979,979,979,979,,,,,,979,979", "979,979,979,979,979,,,979,,,,,,,979,,,979,979,979,979,979,979,979,979", ",979,979,979,,979,979,979,979,979,,,,,,,,,,,,,,,,,,,,979,,,979,,,979", "979,,,979,,,,,,979,,,,,,,,,979,,,,,979,979,979,979,,979,979,979,979", ",,,,979,979,,,,670,670,670,979,670,979,979,979,670,670,979,979,,670", ",670,670,670,670,670,670,670,,,,,,670,670,670,670,670,670,670,,,670", ",,,,,,670,,,670,670,670,670,670,670,670,670,670,670,670,670,,670,670", "670,670,670,,,,,,,,,,,,,,,,,,,,670,,,670,,,670,670,,,670,,670,,670,", "670,,,670,,,,,,670,,,,,670,670,670,670,,670,670,670,670,,,,,670,670", ",,,984,984,984,670,984,670,670,670,984,984,670,670,,984,,984,984,984", "984,984,984,984,,,,,,984,984,984,984,984,984,984,,,984,,,,,,,984,,,984", "984,984,984,984,984,984,984,,984,984,984,,984,984,984,984,984,,,,,,", ",,,,,,,,,,,,,984,,,984,,,984,984,,,984,,984,,,,984,,,,,,,,,984,,,,,984", "984,984,984,,984,984,984,984,,,,,984,984,,,,669,669,669,984,669,984", "984,984,669,669,984,984,,669,,669,669,669,669,669,669,669,,,,,,669,669", "669,669,669,669,669,,,669,,,,,,,669,,,669,669,669,669,669,669,669,669", ",669,669,669,,669,669,669,669,669,,,,,,,,,,,,,,,,,,,,669,,,669,,,669", "669,,,669,,,,,,669,,,,,,,,,669,,,,,669,669,669,669,,669,669,669,669", ",,,,669,669,,,,668,668,668,669,668,669,669,669,668,668,669,669,,668", ",668,668,668,668,668,668,668,,,,,,668,668,668,668,668,668,668,,,668", ",,,,,,668,,,668,668,668,668,668,668,668,668,,668,668,668,,668,668,668", "668,668,,,,,,,,,,,,,,,,,,,,668,,,668,,,668,668,,,668,,668,,,,668,,,", ",,,,,668,,,,,668,668,668,668,,668,668,668,668,,,,,668,668,,,,,,,668", ",668,668,668,,,668,668,666,666,666,666,666,,,,666,666,,,,666,,666,666", "666,666,666,666,666,,,,,,666,666,666,666,666,666,666,,,666,,,,,,666", "666,,666,666,666,666,666,666,666,666,666,,666,666,666,,666,666,666,666", "666,,,,,,,,,,,,,,,,,,,,666,,,666,,,666,666,,,666,,666,,,,666,,,,,,,", ",666,,,,,666,666,666,666,,666,666,666,666,,,,,666,666,,,,247,247,247", "666,247,666,666,666,247,247,666,666,,247,,247,247,247,247,247,247,247", ",,,,,247,247,247,247,247,247,247,,,247,,,,,,,247,,,247,247,247,247,247", "247,247,247,,247,247,247,,247,247,247,247,247,,,,,,,,,,,,,,,,,,,,247", ",,247,,,247,247,,,247,,,,,,247,,,,,,,,,247,,,,,247,247,247,247,,247", "247,247,247,,,,,247,247,,,,35,35,35,247,35,247,247,247,35,35,247,247", ",35,,35,35,35,35,35,35,35,,,,,,35,35,35,35,35,35,35,,,35,,,,,,,35,,", "35,35,35,35,35,35,35,35,35,35,35,35,,35,35,35,35,35,,,,,,,,,,,,,,,,", ",,,35,,,35,,,35,35,,,35,,35,,35,,35,,,35,,,,,,35,,,,,35,35,35,35,,35", "35,35,35,,,,,35,35,,,,36,36,36,35,36,35,35,35,36,36,35,35,,36,,36,36", "36,36,36,36,36,,,,,,36,36,36,36,36,36,36,,,36,,,,,,,36,,,36,36,36,36", "36,36,36,36,36,36,36,36,,36,36,36,36,36,,,,,,,,,,,,,,,,,,,,36,,,36,", ",36,36,,,36,,36,,36,,36,,,36,,,,,,36,,,,,36,36,36,36,,36,36,36,36,,", ",,36,36,,,,635,635,635,36,635,36,36,36,635,635,36,36,,635,,635,635,635", "635,635,635,635,,,,,,635,635,635,635,635,635,635,,,635,,,,,,,635,,,635", "635,635,635,635,635,635,635,635,635,635,635,,635,635,635,635,635,,,", ",,,,,,,,,,,,,,,,635,,,635,,,635,635,,,635,,635,,635,,635,,,635,,,,,", "635,,,,,635,635,635,635,,635,635,635,635,,,,,635,635,,,,1003,1003,1003", "635,1003,635,635,635,1003,1003,635,635,,1003,,1003,1003,1003,1003,1003", "1003,1003,,,,,,1003,1003,1003,1003,1003,1003,1003,,,1003,,,,,,,1003", ",,1003,1003,1003,1003,1003,1003,1003,1003,1003,1003,1003,1003,,1003", "1003,1003,1003,1003,,,,,,,,,,,,,,,,,,,,1003,,,1003,,,1003,1003,,,1003", ",,,1003,,1003,,,1003,,,,,,1003,,,,,1003,1003,1003,1003,,1003,1003,1003", "1003,,,,,1003,1003,,,,625,625,625,1003,625,1003,1003,1003,625,625,1003", "1003,,625,,625,625,625,625,625,625,625,,,,,,625,625,625,625,625,625", "625,,,625,,,,,,,625,,,625,625,625,625,625,625,625,625,625,625,625,625", ",625,625,625,625,625,,,,,,,,,,,,,,,,,,,,625,,,625,,,625,625,,,625,,625", ",625,,625,,,625,,,,,,625,,,,,625,625,625,625,,625,625,625,625,,,,,625", "625,,,,624,624,624,625,624,625,625,625,624,624,625,625,,624,,624,624", "624,624,624,624,624,,,,,,624,624,624,624,624,624,624,,,624,,,,,,,624", ",,624,624,624,624,624,624,624,624,,624,624,624,,624,624,624,624,624", ",,,,,,,,,,,,,,,,,,,624,,,624,,,624,624,,,624,,624,,,,624,,,,,,,,,624", ",,,,624,624,624,624,,624,624,624,624,,,,,624,624,,,,611,611,611,624", "611,624,624,624,611,611,624,624,,611,,611,611,611,611,611,611,611,,", ",,,611,611,611,611,611,611,611,,,611,,,,,,,611,,,611,611,611,611,611", "611,611,611,611,611,611,611,,611,611,611,611,611,,,,,,,,,,,,,,,,,,,", "611,,,611,,,611,611,,,611,,,,,,611,,,611,,,,,,611,,,,,611,611,611,611", ",611,611,611,611,,,,,611,611,,,,608,608,608,611,608,611,611,611,608", "608,611,611,,608,,608,608,608,608,608,608,608,,,,,,608,608,608,608,608", "608,608,,,608,,,,,,,608,,,608,608,608,608,608,608,608,608,608,608,608", "608,,608,608,608,608,608,,,,,,,,,,,,,,,,,,,,608,,,608,,,608,608,,,608", ",608,,,,608,,,608,,,,,,608,,,,,608,608,608,608,,608,608,608,608,,,,", "608,608,,,,236,236,236,608,236,608,608,608,236,236,608,608,,236,,236", "236,236,236,236,236,236,,,,,,236,236,236,236,236,236,236,,,236,,,,,", ",236,,,236,236,236,236,236,236,236,236,,236,236,236,,236,236,236,236", "236,,,,,,,,,,,,,,,,,,,,236,,,236,,,236,236,,,236,,,,,,236,,,,,,,,,236", ",,,,236,236,236,236,,236,236,236,236,,,,,236,236,236,,,235,235,235,236", "235,236,236,236,235,235,236,236,,235,,235,235,235,235,235,235,235,,", ",,,235,235,235,235,235,235,235,,,235,,,,,,,235,,,235,235,235,235,235", "235,235,235,,235,235,235,,235,235,235,235,235,,,,,,,,,,,,,,,,,,,,235", ",,235,,,235,235,,,235,,,,,,235,,,,,,,,,235,,,,,235,235,235,235,,235", "235,235,235,,,,,235,235,,,,603,603,603,235,603,235,235,235,603,603,235", "235,,603,,603,603,603,603,603,603,603,,,,,,603,603,603,603,603,603,603", ",,603,,,,,,,603,,,603,603,603,603,603,603,603,603,,603,603,603,,603", "603,603,603,603,,,,,,,,,,,,,,,,,,,,603,,,603,,,603,603,,,603,,,,,,603", ",,,,,,,,603,,,,,603,603,603,603,,603,603,603,603,,,,,603,603,,,,1029", "1029,1029,603,1029,603,603,603,1029,1029,603,603,,1029,,1029,1029,1029", "1029,1029,1029,1029,,,,,,1029,1029,1029,1029,1029,1029,1029,,,1029,", ",,,,,1029,,,1029,1029,1029,1029,1029,1029,1029,1029,,1029,1029,1029", ",1029,1029,1029,1029,1029,,,,,,,,,,,,,,,,,,,,1029,,,1029,,,1029,1029", ",,1029,,,,,,1029,,,,,,,,,1029,,,,,1029,1029,1029,1029,,1029,1029,1029", "1029,,,,,1029,1029,,,,600,600,600,1029,600,1029,1029,1029,600,600,1029", "1029,,600,,600,600,600,600,600,600,600,,,,,,600,600,600,600,600,600", "600,,,600,,,,,,,600,,,600,600,600,600,600,600,600,600,,600,600,600,", "600,600,600,600,600,,,,,,,,,,,,,,,,,,,,600,,,600,,,600,600,,,600,,,", ",,600,,,,,,,,,600,,,,,600,600,600,600,,600,600,600,600,,,,,600,600,", ",,597,597,597,600,597,600,600,600,597,597,600,600,,597,,597,597,597", "597,597,597,597,,,,,,597,597,597,597,597,597,597,,,597,,,,,,,597,,,597", "597,597,597,597,597,597,597,,597,597,597,,597,597,597,597,597,,,,,,", ",,,,,,,,,,,,,597,,,597,,,597,597,,,597,,,,,,597,,,,,,,,,597,,,,,597", "597,597,597,,597,597,597,597,,,,,597,597,,,,234,234,234,597,234,597", "597,597,234,234,597,597,,234,,234,234,234,234,234,234,234,,,,,,234,234", "234,234,234,234,234,,,234,,,,,,,234,,,234,234,234,234,234,234,234,234", ",234,234,234,,234,234,234,234,234,,,,,,,,,,,,,,,,,,,,234,,,234,,,234", "234,,,234,,,,,,234,,,,,,,,,234,,,,,234,234,234,234,,234,234,234,234", ",,,,234,234,,,,587,587,587,234,587,234,234,234,587,587,234,234,,587", ",587,587,587,587,587,587,587,,,,,,587,587,587,587,587,587,587,,,587", ",,,,,,587,,,587,587,587,587,587,587,587,587,587,587,587,587,,587,587", "587,587,587,,,,,,,,,,,,,,,,,,,,587,,,587,,,587,587,,,587,,587,,587,", "587,,,587,,,,,,587,,,,,587,587,587,587,,587,587,587,587,,,,,587,587", ",,,,,,587,,587,587,587,,,587,587,577,577,577,577,577,,,,577,577,,,,577", ",577,577,577,577,577,577,577,,,,,,577,577,577,577,577,577,577,,,577", ",,,,,577,577,577,577,577,577,577,577,577,577,577,577,,577,577,577,,577", "577,577,577,577,,,,,,,,,,,,,,,,,,,,577,,,577,,,577,577,,,577,,577,,", ",577,,,,,,,,,577,,,,,577,577,577,577,,577,577,577,577,,,,,577,577,,", ",,,577,577,,577,577,577,,,577,577,571,571,571,,571,,,,571,571,,,,571", ",571,571,571,571,571,571,571,,,,,,571,571,571,571,571,571,571,,,571", ",,,,,,571,,,571,571,571,571,571,571,571,571,,571,571,571,,571,571,571", "571,571,,,,,,,,,,,,,,,,,,,,571,,,571,,,571,571,,,571,,,,,,571,,,,,,", ",,571,,,,,571,571,571,571,,571,571,571,571,,,,,571,571,,,,569,569,569", "571,569,571,571,571,569,569,571,571,,569,,569,569,569,569,569,569,569", ",,,,,569,569,569,569,569,569,569,,,569,,,,,,,569,,,569,569,569,569,569", "569,569,569,569,569,569,569,,569,569,569,569,569,,,,,,,,,,,,,,,,,,,", "569,,,569,,,569,569,,,569,,,,569,,569,,,569,,,,,,569,,,,,569,569,569", "569,,569,569,569,569,,,,,569,569,,,,366,366,366,569,366,569,569,569", "366,366,569,569,,366,,366,366,366,366,366,366,366,,,,,,366,366,366,366", "366,366,366,,,366,,,,,,,366,,,366,366,366,366,366,366,366,366,,366,366", "366,,366,366,366,366,366,,,,,,,,,,,,,,,,,,,,366,,,366,,,366,366,,,366", ",,,,,366,,,,,,,,,366,,,,,366,366,366,366,,366,366,366,366,,,,,366,366", ",,,368,368,368,366,368,366,366,366,368,368,366,366,,368,,368,368,368", "368,368,368,368,,,,,,368,368,368,368,368,368,368,,,368,,,,,,,368,,,368", "368,368,368,368,368,368,368,,368,368,368,,368,368,368,368,368,,,,,,", ",,,,,,,,,,,,,368,,,368,368,,368,368,,,368,,,,,,368,,,,,,,,,368,,,,,368", "368,368,368,,368,368,368,368,,,,,368,368,,,,567,567,567,368,567,368", "368,368,567,567,368,368,,567,,567,567,567,567,567,567,567,,,,,,567,567", "567,567,567,567,567,,,567,,,,,,,567,,,567,567,567,567,567,567,567,567", "567,567,567,567,,567,567,567,567,567,,,,,,,,,,,,,,,,,,,,567,,,567,,", "567,567,,,567,,567,,567,,567,,,567,,,,,,567,,,,,567,567,567,567,,567", "567,567,567,,,,,567,567,,,,46,46,46,567,46,567,567,567,46,46,567,567", ",46,,46,46,46,46,46,46,46,,,,,,46,46,46,46,46,46,46,,,46,,,,,,,46,,", "46,46,46,46,46,46,46,46,,46,46,46,,46,46,46,46,46,,,,,,,,,,,,,,,,,,", ",46,,,46,,,46,46,,,46,,,,,,46,,,,,,,,,46,,,,,46,46,46,46,,46,46,46,46", ",,,,46,46,,,,557,557,557,46,557,46,46,46,557,557,46,46,,557,,557,557", "557,557,557,557,557,,,,,,557,557,557,557,557,557,557,,,557,,,,,,,557", ",,557,557,557,557,557,557,557,557,,557,557,557,,557,557,557,557,557", ",,,,,,,,,,,,,,,,,,,557,,,557,,,557,557,,,557,,,,,,557,,,,,,,,,557,,", ",,557,557,557,557,,557,557,557,557,,,,,557,557,,,,47,47,47,557,47,557", "557,557,47,47,557,557,,47,,47,47,47,47,47,47,47,,,,,,47,47,47,47,47", "47,47,,,47,,,,,,,47,,,47,47,47,47,47,47,47,47,,47,47,47,,47,47,47,47", "47,,,,,,,,,,,,,,,,,,,,47,,,47,,,47,47,,,47,,,,,,47,,,,,,,,,47,,,,,47", "47,47,47,,47,47,47,47,,,,,47,47,,,,280,280,280,47,280,47,47,47,280,280", "47,47,,280,,280,280,280,280,280,280,280,,,,,,280,280,280,280,280,280", "280,,,280,,,,,,,280,,,280,280,280,280,280,280,280,280,,280,280,280,", "280,280,280,280,280,,,,,,,,,,,,,,,,,,,,280,,,280,,,280,280,,,280,,,", ",,280,,,,,,,,,280,,,,,280,280,280,280,,280,280,280,280,,,,,280,280,", ",,275,275,275,280,275,280,280,280,275,275,280,280,,275,,275,275,275", "275,275,275,275,,,,,,275,275,275,275,275,275,275,,,275,,,,,,,275,,,275", "275,275,275,275,275,275,275,,275,275,275,,275,275,275,275,275,,,,,,", ",,,,,,,,,,,,,275,,,275,,,275,275,,,275,,,,,,275,,,,,,,,,275,,,,,275", "275,275,275,,275,275,275,275,,,,,275,275,,,,,,,275,,275,275,275,552", ",275,275,,,,552,552,552,,,552,552,552,406,552,406,406,406,406,406,,", "552,552,552,,,,406,,,,,,552,552,,552,552,552,552,552,1159,,1159,1159", "1159,1159,1159,,406,406,,,,,,1159,,406,406,406,406,,,,406,,1131,,1131", "1131,1131,1131,1131,552,,,,1159,,,552,1131,,,,552,552,,1159,1159,,,", "1159,,,,,,,,,,1131,406,,,,552,552,,,1131,1131,1131,1131,,,,1131,,,,552", ",,552,,221,221,221,552,221,1159,,,221,221,552,,,221,,221,221,221,221", "221,221,221,,,,,,221,221,221,221,221,221,221,,,221,,,,,,,221,,,221,221", "221,221,221,221,221,221,221,221,221,221,,221,221,221,221,221,,,,,,,", ",,,,,,,,,,,,221,,,221,,,221,221,,,221,,221,,221,,221,,,221,,,,,,221", ",,,,221,221,221,221,,221,221,221,221,,,,,221,221,,,,220,220,220,221", "220,221,221,221,220,220,221,221,,220,,220,220,220,220,220,220,220,,", ",,,220,220,220,220,220,220,220,,,220,,,,,,,220,,,220,220,220,220,220", "220,220,220,,220,220,220,,220,220,220,220,220,,,,,,,,,,,,,,,,,,,,220", ",,220,,,220,220,,,220,,,,,,220,,,,,,,,,220,,,,,220,220,220,220,,220", "220,220,220,,,,,220,220,,,,75,75,75,220,75,220,220,220,75,75,220,220", ",75,,75,75,75,75,75,75,75,,,,,,75,75,75,75,75,75,75,,,75,,,,,,,75,,", "75,75,75,75,75,75,75,75,,75,75,75,,75,75,75,75,75,,,,,,,,,,,,,,,,,,", ",75,,,75,,,75,75,,,75,,,,,,75,,,,,,,,,75,,,,,75,75,75,75,,75,75,75,75", ",,,,75,75,75,,,,,75,75,,75,75,75,,,75,75,71,71,71,,71,,,,71,71,,,,71", ",71,71,71,71,71,71,71,,,,,,71,71,71,71,71,71,71,,,71,,,,,,,71,,,71,71", "71,71,71,71,71,71,,71,71,71,,71,71,71,71,71,,,,,,,,,,,,,,,,,,,,71,,", "71,,,71,71,,,71,,,,,,71,,,,,,,,,71,,,,,71,71,71,71,,71,71,71,71,,,,", "71,71,,,,433,433,433,71,433,71,71,71,433,433,71,71,,433,,433,433,433", "433,433,433,433,,,,,,433,433,433,433,433,433,433,,,433,,,,,,,433,,,433", "433,433,433,433,433,433,433,,433,433,433,,433,433,433,433,433,,,,,,", ",,,,,,,,,,,,,433,,,433,,,433,433,,,433,,,,,,433,,,,,,,,,433,,,,,433", "433,433,433,,433,433,433,433,,,,,433,433,,,,68,68,68,433,68,433,433", "433,68,68,433,433,,68,,68,68,68,68,68,68,68,,,,,,68,68,68,68,68,68,68", ",,68,,,,,,,68,,,68,68,68,68,68,68,68,68,68,68,68,68,,68,68,68,68,68", ",,,,,,,,,,,,,,,,,,,68,,,68,,,68,68,,,68,,,,,,68,,,68,,,,,,68,,,,,68", "68,68,68,,68,68,68,68,,,,,68,68,,,,842,842,842,68,842,68,68,68,842,842", "68,68,,842,,842,842,842,842,842,842,842,,,,,,842,842,842,842,842,842", "842,,,842,,,,,,,842,,,842,842,842,842,842,842,842,842,,842,842,842,", "842,842,842,842,842,,,,,,,,,,,,,,,,,,,,842,,,842,,,842,842,,,842,,,", ",,842,,,,,,,,,842,,,,,842,842,842,842,,842,842,842,842,,,,,842,842,", ",,793,793,793,842,793,842,842,842,793,793,842,842,,793,,793,793,793", "793,793,793,793,,,,,,793,793,793,793,793,793,793,,,793,,,,,,,793,,,793", "793,793,793,793,793,793,793,,793,793,793,,793,793,793,793,793,,,,,,", ",,,,,,,,,,,,,793,,,793,,,793,793,,,793,,,,,,793,,,,,,,,,793,,,,,793", "793,793,793,,793,793,793,793,,,,,793,793,,,,272,272,272,793,272,793", "793,793,272,272,793,793,,272,,272,272,272,272,272,272,272,,,,,,272,272", "272,272,272,272,272,,,272,,,,,,,272,,,272,272,272,272,272,272,272,272", ",272,272,272,,272,272,272,272,272,,,,,,,,,,,,,,,,,,,,272,,,272,,,272", "272,,,272,,,,,,272,,,,,,,,,272,,,,,272,272,272,272,,272,272,272,272", ",,,,272,272,,,,271,271,271,272,271,272,272,272,271,271,272,272,,271", ",271,271,271,271,271,271,271,,,,,,271,271,271,271,271,271,271,,,271", ",,,,,,271,,,271,271,271,271,271,271,271,271,,271,271,271,,271,271,271", "271,271,,,,,,,,,,,,,,,,,,,,271,,,271,,,271,271,,,271,,,,,,271,,,,,,", ",,271,,,,,271,271,271,271,,271,271,271,271,,,,,271,271,,,,67,67,67,271", "67,271,271,271,67,67,271,271,,67,,67,67,67,67,67,67,67,,,,,,67,67,67", "67,67,67,67,,,67,,,,,,,67,,,67,67,67,67,67,67,67,67,67,67,67,67,,67", "67,67,67,67,,,,,,,,,,,,,,,,,,,,67,,,67,,,67,67,,,67,,67,,,,67,,,67,", ",,,,67,,,,,67,67,67,67,,67,67,67,67,,,,,67,67,,,,,,,67,,67,67,67,,,67", "67,66,66,66,66,66,,,,66,66,,,,66,,66,66,66,66,66,66,66,,,,,,66,66,66", "66,66,66,66,,,66,,,,,,66,66,,66,66,66,66,66,66,66,66,66,,66,66,66,,66", "66,66,66,66,,,,,,,,,,,,,,,,,,,,66,,,66,,,66,66,,,66,,66,,,,66,,,,,,", ",,66,,,,,66,66,66,66,,66,66,66,66,,,,,66,66,,,,404,404,404,66,404,66", "66,66,404,404,66,66,,404,,404,404,404,404,404,404,404,,,,,,404,404,404", "404,404,404,404,,,404,,,,,,,404,,,404,404,404,404,404,404,404,404,,404", "404,404,,404,404,404,404,404,,,,,,,,,,,,,,,,,,,,404,,,404,,,404,404", ",,404,,,,,,404,,,,,,,,,404,,,,,404,404,404,404,,404,404,404,404,,,,", "404,404,,,,,,,404,,404,404,404,64,,404,404,,,,64,64,64,,,64,64,64,,64", ",,,,,,,64,,64,64,64,,,,,,,,64,64,,64,64,64,64,64,,,,,,,,,,,,,,,,,,,", ",,,64,64,64,64,64,64,64,64,64,64,64,64,64,64,,,64,64,64,,,64,,,64,,", "64,64,,64,,64,,64,,64,64,,64,64,64,64,64,,64,,64,,,,,,,,,,,,,,64,,,64", "64,64,64,,64,,64,,270,270,270,64,270,,,,270,270,,,,270,,270,270,270", "270,270,270,270,,,,,,270,270,270,270,270,270,270,,,270,,,,,,,270,,,270", "270,270,270,270,270,270,270,,270,270,270,,270,270,270,270,270,,,,,,", ",,,,,,,,,,,,,270,,,270,,,270,270,,,270,,,,,,270,,,,,,,,,270,,,,,270", "270,270,270,,270,270,270,270,,,,,270,270,,,,862,862,862,270,862,270", "270,270,862,862,270,270,,862,,862,862,862,862,862,862,862,,,,,,862,862", "862,862,862,862,862,,,862,,,,,,,862,,,862,862,862,862,862,862,862,862", ",862,862,862,,862,862,862,862,862,,,,,,,,,,,,,,,,,,,,862,,,862,,,862", "862,,,862,,,,,,862,,,,,,,,,862,,,,,862,862,862,862,,862,862,862,862", ",,,,862,862,,,,296,296,296,862,296,862,862,862,296,296,862,862,,296", ",296,296,296,296,296,296,296,,,,,,296,296,296,296,296,296,296,,,296", ",,,,,,296,,,296,296,296,296,296,296,296,296,,296,296,296,,296,296,296", "296,296,,,,,,,,,,,,,,,,,,,,296,,,296,,,296,296,,,296,,,,,,296,,,,,,", ",,296,,,,,296,296,296,296,,296,296,296,296,,,,,296,296,,,,269,269,269", "296,269,296,296,296,269,269,296,296,,269,,269,269,269,269,269,269,269", ",,,,,269,269,269,269,269,269,269,,,269,,,,,,,269,,,269,269,269,269,269", "269,269,269,,269,269,269,,269,269,269,269,269,,,,,,,,,,,,,,,,,,,,269", ",,269,,,269,269,,,269,,,,,,269,,,,,,,,,269,,,,,269,269,269,269,,269", "269,269,269,,,,,269,269,,,,268,268,268,269,268,269,269,269,268,268,269", "269,,268,,268,268,268,268,268,268,268,,,,,,268,268,268,268,268,268,268", ",,268,,,,,,,268,,,268,268,268,268,268,268,268,268,,268,268,268,,268", "268,268,268,268,,,,,,,,,,,,,,,,,,,,268,,,268,,,268,268,,,268,,,,,,268", ",,,,,,,,268,,,,,268,268,268,268,,268,268,268,268,,,,,268,268,,,,784", "784,784,268,784,268,268,268,784,784,268,268,,784,,784,784,784,784,784", "784,784,,,,,,784,784,784,784,784,784,784,,,784,,,,,,,784,,,784,784,784", "784,784,784,784,784,784,784,784,784,,784,784,784,784,784,,,,,,,,,,,", ",,,,,,,,784,,,784,,,784,784,,,784,,784,,784,,784,,,784,,,,,,784,,,,", "784,784,784,784,,784,784,784,784,,,,,784,784,,,,870,870,870,784,870", "784,784,784,870,870,784,784,,870,,870,870,870,870,870,870,870,,,,,,870", "870,870,870,870,870,870,,,870,,,,,,,870,,,870,870,870,870,870,870,870", "870,,870,870,870,,870,870,870,870,870,,,,,,,,,,,,,,,,,,,,870,,,870,", ",870,870,,,870,,,,,,870,,,,,,,,,870,,,,,870,870,870,870,,870,870,870", "870,,,,,870,870,,,,267,267,267,870,267,870,870,870,267,267,870,870,", "267,,267,267,267,267,267,267,267,,,,,,267,267,267,267,267,267,267,,", "267,,,,,,,267,,,267,267,267,267,267,267,267,267,,267,267,267,,267,267", "267,267,267,,,,,,,,,,,,,,,,,,,,267,,,267,,,267,267,,,267,,,,,,267,,", ",,,,,,267,,,,,267,267,267,267,,267,267,267,267,,,,,267,267,,,,883,883", "883,267,883,267,267,267,883,883,267,267,,883,,883,883,883,883,883,883", "883,,,,,,883,883,883,883,883,883,883,,,883,,,,,,,883,,,883,883,883,883", "883,883,883,883,,883,883,883,,883,883,883,883,883,,,,,,,,,,,,,,,,,,", ",883,,,883,,,883,883,,,883,,,,,,883,,,,,,,,,883,,,,,883,883,883,883", ",883,883,883,883,,,,,883,883,,,,884,884,884,883,884,883,883,883,884", "884,883,883,,884,,884,884,884,884,884,884,884,,,,,,884,884,884,884,884", "884,884,,,884,,,,,,,884,,,884,884,884,884,884,884,884,884,,884,884,884", ",884,884,884,884,884,,,,,,,,,,,,,,,,,,,,884,,,884,,,884,884,,,884,,", ",,,884,,,,,,,,,884,,,,,884,884,884,884,,884,884,884,884,,,,,884,884", ",,,24,24,24,884,24,884,884,884,24,24,884,884,,24,,24,24,24,24,24,24", "24,,,,,,24,24,24,24,24,24,24,,,24,,,,,,,24,,,24,24,24,24,24,24,24,24", ",24,24,24,,24,24,24,24,24,,,,,,,,,,,,,,,,,,,,24,,,24,,,24,24,,,24,,", ",,,24,,,,,,,,,24,,,,,24,24,24,24,,24,24,24,24,,,,,24,24,,,,303,303,303", "24,303,24,24,24,303,303,24,24,,303,,303,303,303,303,303,303,303,,,,", ",303,303,303,303,303,303,303,,,303,,,,,,,303,,,303,303,303,303,303,303", "303,303,303,303,303,303,,303,303,303,303,303,,,,,,,,,,,,,,,,,,,,303", ",,303,,,303,303,,,303,,303,,303,,303,,,303,,,,,,303,,,,,303,303,303", "303,,303,303,303,303,,,,,303,303,,,,304,304,304,303,304,303,303,303", "304,304,303,303,,304,,304,304,304,304,304,304,304,,,,,,304,304,304,304", "304,304,304,,,304,,,,,,,304,,,304,304,304,304,304,304,304,304,304,304", "304,304,,304,304,304,304,304,,,,,,,,,,,,,,,,,,,,304,,,304,,,304,304", ",,304,,304,,304,,304,,,304,,,,,,304,,,,,304,304,304,304,,304,304,304", "304,,,,,304,304,,,,312,312,312,304,312,304,304,304,312,312,304,304,", "312,,312,312,312,312,312,312,312,,,,,,312,312,312,312,312,312,312,,", "312,,,,,,,312,,,312,312,312,312,312,312,312,312,312,312,312,312,,312", "312,312,312,312,,,,,,,,,,,,,,,,,,,,312,,,312,,,312,312,,,312,,312,,312", ",312,,,312,,,,,,312,,,,,312,312,312,312,,312,312,312,312,,,,,312,312", "312,,,266,266,266,312,266,312,312,312,266,266,312,312,,266,,266,266", "266,266,266,266,266,,,,,,266,266,266,266,266,266,266,,,266,,,,,,,266", ",,266,266,266,266,266,266,266,266,,266,266,266,,266,266,266,266,266", ",,,,,,,,,,,,,,,,,,,266,,,266,,,266,266,,,266,,,,,,266,,,,,,,,,266,,", ",,266,266,266,266,,266,266,266,266,,,,,266,266,,,,265,265,265,266,265", "266,266,266,265,265,266,266,,265,,265,265,265,265,265,265,265,,,,,,265", "265,265,265,265,265,265,,,265,,,,,,,265,,,265,265,265,265,265,265,265", "265,,265,265,265,,265,265,265,265,265,,,,,,,,,,,,,,,,,,,,265,,,265,", ",265,265,,,265,,,,,,265,,,,,,,,,265,,,,,265,265,265,265,,265,265,265", "265,,,,,265,265,,,,264,264,264,265,264,265,265,265,264,264,265,265,", "264,,264,264,264,264,264,264,264,,,,,,264,264,264,264,264,264,264,,", "264,,,,,,,264,,,264,264,264,264,264,264,264,264,,264,264,264,,264,264", "264,264,264,,,,,,,,,,,,,,,,,,,,264,,,264,,,264,264,,,264,,,,,,264,,", ",,,,,,264,,,,,264,264,264,264,,264,264,264,264,,,,,264,264,,,,319,319", "319,264,319,264,264,264,319,319,264,264,,319,,319,319,319,319,319,319", "319,,,,,,319,319,319,319,319,319,319,,,319,,,,,,,319,,,319,319,319,319", "319,319,319,319,,319,319,319,,319,319,319,319,319,,,,,,,,,,,,,,,,,,", ",319,,,319,,,319,319,,,319,,,,,,319,,,,,,,,,319,,,,,319,319,319,319", ",319,319,319,319,,,,,319,319,,,,321,321,321,319,321,319,319,319,321", "321,319,319,,321,,321,321,321,321,321,321,321,,,,,,321,321,321,321,321", "321,321,,,321,,,,,,,321,,,321,321,321,321,321,321,321,321,,321,321,321", ",321,321,321,321,321,,,,,,,,,,,,,,,,,,,,321,,,321,,,321,321,,,321,,", ",,,321,,,,,,,,,321,,,,,321,321,321,321,,321,321,321,321,,,,,321,321", ",,,324,324,324,321,324,321,321,321,324,324,321,321,,324,,324,324,324", "324,324,324,324,,,,,,324,324,324,324,324,324,324,,,324,,,,,,,324,,,324", "324,324,324,324,324,324,324,,324,324,324,,324,324,324,324,324,,,,,,", ",,,,,,,,,,,,,324,,,324,,,324,324,,,324,,,,,,324,,,,,,,,,324,,,,,324", "324,324,324,,324,324,324,324,,,,,324,324,,,,263,263,263,324,263,324", "324,324,263,263,324,324,,263,,263,263,263,263,263,263,263,,,,,,263,263", "263,263,263,263,263,,,263,,,,,,,263,,,263,263,263,263,263,263,263,263", ",263,263,263,,263,263,263,263,263,,,,,,,,,,,,,,,,,,,,263,,,263,,,263", "263,,,263,,,,,,263,,,,,,,,,263,,,,,263,263,263,263,,263,263,263,263", ",,,,263,263,,,,262,262,262,263,262,263,263,263,262,262,263,263,,262", ",262,262,262,262,262,262,262,,,,,,262,262,262,262,262,262,262,,,262", ",,,,,,262,,,262,262,262,262,262,262,262,262,,262,262,262,,262,262,262", "262,262,,,,,,,,,,,,,,,,,,,,262,,,262,,,262,262,,,262,,,,,,262,,,,,,", ",,262,,,,,262,262,262,262,,262,262,262,262,,,,,262,262,,,,911,911,911", "262,911,262,262,262,911,911,262,262,,911,,911,911,911,911,911,911,911", ",,,,,911,911,911,911,911,911,911,,,911,,,,,,,911,,,911,911,911,911,911", "911,911,911,,911,911,911,,911,911,911,911,911,,,,,,,,,,,,,,,,,,,,911", ",,911,,,911,911,,,911,,,,,,911,,,,,,,,,911,,,,,911,911,911,911,,911", "911,911,911,,,,,911,911,,,,912,912,912,911,912,911,911,911,912,912,911", "911,,912,,912,912,912,912,912,912,912,,,,,,912,912,912,912,912,912,912", ",,912,,,,,,,912,,,912,912,912,912,912,912,912,912,,912,912,912,,912", "912,912,912,912,,,,,,,,,,,,,,,,,,,,912,,,912,,,912,912,,,912,,,,,,912", ",,,,,,,,912,,,,,912,912,912,912,,912,912,912,912,,,,,912,912,,,,913", "913,913,912,913,912,912,912,913,913,912,912,,913,,913,913,913,913,913", "913,913,,,,,,913,913,913,913,913,913,913,,,913,,,,,,,913,,,913,913,913", "913,913,913,913,913,,913,913,913,,913,913,913,913,913,,,,,,,,,,,,,,", ",,,,,913,,,913,,,913,913,,,913,,,,,,913,,,,,,,,,913,,,,,913,913,913", "913,,913,913,913,913,,,,,913,913,,,,494,494,494,913,494,913,913,913", "494,494,913,913,,494,,494,494,494,494,494,494,494,,,,,,494,494,494,494", "494,494,494,,,494,,,,,,,494,,,494,494,494,494,494,494,494,494,,494,494", "494,,494,494,494,494,494,,,,,,,,,,,,,,,,,,,,494,,,494,,,494,494,,,494", ",,,,,494,,,,,,,,,494,,,,,494,494,494,494,,494,494,494,494,,,,,494,494", ",,,,,,494,,494,494,494,,,494,494,130,130,130,130,130,,,,130,130,,,,130", ",130,130,130,130,130,130,130,,,,,,130,130,130,130,130,130,130,,,130", ",,,,,130,130,,130,130,130,130,130,130,130,130,130,,130,130,130,,130", "130,130,130,130,,,,,,,,,,,,,,,,,,,,130,,,130,,,130,130,,,130,,130,,", ",130,,,,,,,,,130,,,,,130,130,130,130,,130,130,130,130,,,,,130,130,,", ",129,129,129,130,129,130,130,130,129,129,130,130,,129,,129,129,129,129", "129,129,129,,,,,,129,129,129,129,129,129,129,,,129,,,,,,,129,,,129,129", "129,129,129,129,129,129,,129,129,129,,129,129,129,129,129,,,,,,,,,,", ",,,,,,,,,129,,,129,,,129,129,,,129,,,,,,129,,,,,,,,,129,,,,,129,129", "129,129,,129,129,129,129,,,,,129,129,,,,128,128,128,129,128,129,129", "129,128,128,129,129,,128,,128,128,128,128,128,128,128,,,,,,128,128,128", "128,128,128,128,,,128,,,,,,,128,,,128,128,128,128,128,128,128,128,,128", "128,128,,128,128,128,128,128,,,,,,,,,,,,,,,,,,,,128,,,128,,,128,128", ",,128,,,,,,128,,,,,,,,,128,,,,,128,128,128,128,,128,128,128,128,,,,", "128,128,,,,1142,1142,1142,128,1142,128,128,128,1142,1142,128,128,,1142", ",1142,1142,1142,1142,1142,1142,1142,,,,,,1142,1142,1142,1142,1142,1142", "1142,,,1142,,,,,,,1142,,,1142,1142,1142,1142,1142,1142,1142,1142,,1142", "1142,1142,,1142,1142,1142,1142,1142,,,,,,,,,,,,,,,,,,,,1142,,,1142,", ",1142,1142,,,1142,,,,,,1142,,,,,,,,,1142,,,,,1142,1142,1142,1142,,1142", "1142,1142,1142,,,,,1142,1142,,,,1143,1143,1143,1142,1143,1142,1142,1142", "1143,1143,1142,1142,,1143,,1143,1143,1143,1143,1143,1143,1143,,,,,,1143", "1143,1143,1143,1143,1143,1143,,,1143,,,,,,,1143,,,1143,1143,1143,1143", "1143,1143,1143,1143,,1143,1143,1143,,1143,1143,1143,1143,1143,,,,,,", ",,,,,,,,,,,,,1143,,,1143,,,1143,1143,,,1143,,,,,,1143,,,,,,,,,1143,", ",,,1143,1143,1143,1143,,1143,1143,1143,1143,,,,,1143,1143,,,,127,127", "127,1143,127,1143,1143,1143,127,127,1143,1143,,127,,127,127,127,127", "127,127,127,,,,,,127,127,127,127,127,127,127,,,127,,,,,,,127,,,127,127", "127,127,127,127,127,127,,127,127,127,,127,127,127,127,127,,,,,,,,,,", ",,,,,,,,,127,,,127,,,127,127,,,127,,,,,,127,,,,,,,,,127,,,,,127,127", "127,127,,127,127,127,127,,,,,127,127,,,,50,50,50,127,50,127,127,127", "50,50,127,127,,50,,50,50,50,50,50,50,50,,,,,,50,50,50,50,50,50,50,,", "50,,,,,,,50,,,50,50,50,50,50,50,50,50,,50,50,50,,50,50,50,50,50,,,,", ",,,,,,,,,,,,,,,50,,,50,,,50,50,,,50,,,,,,50,,,,,,,,,50,,,,,50,50,50", "50,,50,50,50,50,,,,,50,50,,,,126,126,126,50,126,50,50,50,126,126,50", "50,,126,,126,126,126,126,126,126,126,,,,,,126,126,126,126,126,126,126", ",,126,,,,,,,126,,,126,126,126,126,126,126,126,126,,126,126,126,,126", "126,126,126,126,,,,,,,,,,,,,,,,,,,,126,,,126,,,126,126,,,126,,,,,,126", ",,,,,,,,126,,,,,126,126,126,126,,126,126,126,126,,,,,126,126,,,,,,,126", ",126,126,126,,,126,126,121,121,121,121,121,,,,121,121,,,,121,,121,121", "121,121,121,121,121,,,,,,121,121,121,121,121,121,121,,,121,,,,,,121", "121,121,121,121,121,121,121,121,121,121,121,,121,121,121,,121,121,121", "121,121,,,,,,,,,,,,,,,,,,,,121,,,121,,,121,121,,,121,,121,,,,121,,,", ",,,,,121,,,,,121,121,121,121,,121,121,121,121,,,,,121,121,,,,,,121,121", ",121,121,121,,,121,121,1155,1155,1155,,1155,,,,1155,1155,,,,1155,,1155", "1155,1155,1155,1155,1155,1155,,,,,,1155,1155,1155,1155,1155,1155,1155", ",,1155,,,,,,,1155,,,1155,1155,1155,1155,1155,1155,1155,1155,1155,1155", "1155,1155,,1155,1155,1155,1155,1155,,,,,,,,,,,,,,,,,,,,1155,,,1155,", ",1155,1155,,,1155,,1155,,1155,,1155,,,1155,,,,,,1155,,,,,1155,1155,1155", "1155,,1155,1155,1155,1155,,,,,1155,1155,,,,468,468,468,1155,468,1155", "1155,1155,468,468,1155,1155,,468,,468,468,468,468,468,468,468,,,,,,468", "468,468,468,468,468,468,,,468,,,,,,,468,,,468,468,468,468,468,468,468", "468,,468,468,468,,468,468,468,468,468,,,,,,,,,,,,,,,,,,,,468,,,468,", ",468,468,,,468,,,,,,468,,,,,,,,,468,,,,,468,468,468,468,,468,468,468", "468,,,,,468,468,,,,,,,468,,468,468,468,467,,468,468,,,,467,467,467,", ",467,467,467,,467,,,,,,,,467,467,467,467,467,,,,,,,,467,467,,467,467", "467,467,467,,,,,,,,,,,,,,,,,,,,,,,467,467,467,467,467,467,467,467,467", "467,467,467,467,467,,,467,467,467,,,467,,,467,,,467,467,,467,,467,,467", ",467,467,,467,467,467,467,467,,467,467,467,,,,,,,,,,,,,,467,,,467,467", "467,467,,467,466,467,,,,,467,466,466,466,,,466,466,466,,466,,,,,,,,466", "466,466,466,466,,,,,,,,466,466,,466,466,466,466,466,,,,,,,,,,,,,,,,", ",,,,,,466,466,466,466,466,466,466,466,466,466,466,466,466,466,,,466", "466,466,,,466,,,466,,,466,466,,466,,466,,466,,466,466,,466,466,466,466", "466,,466,466,466,,,,,,,,,,,,,,466,,,466,466,466,466,,466,,466,,52,52", "52,466,52,,,,52,52,,,,52,,52,52,52,52,52,52,52,,,,,,52,52,52,52,52,52", "52,,,52,,,,,,,52,,,52,52,52,52,52,52,52,52,,52,52,52,,52,52,52,52,52", ",,,,,,,,,,,,,,,,,,,52,,,52,,,52,52,,,52,,,,,,52,,,,,,,,,52,,,,,52,52", "52,52,,52,52,52,52,,,,,52,52,,,,,,,52,,52,52,52,,,52,52,7,7,7,7,7,,", ",7,7,,,,7,,7,7,7,7,7,7,7,,,,,,7,7,7,7,7,7,7,,,7,,,,,,7,7,7,7,7,7,7,7", "7,7,7,7,,7,7,7,,7,7,7,7,7,,,,,,,,,,,,,,,,,,,,7,,,7,,,7,7,,,7,,7,,,,7", ",,,,,,,,7,,,,,7,7,7,7,,7,7,7,7,,,,,7,7,,,,,,,7,,7,7,7,457,,7,7,,,,457", "457,457,,,457,457,457,,457,,,,,,,,457,457,457,457,,,,,,,,,457,457,,457", "457,457,457,457,,,,,,,,,,,,,,,,,,,,,,,457,457,457,457,457,457,457,457", "457,457,457,457,457,457,,,457,457,457,,,457,,457,457,,,457,457,,457", ",457,,457,,457,457,,457,457,457,457,457,,457,457,457,,,,,,,,,,,,,,457", ",,457,457,,457,,457,72,72,72,,72,,457,,72,72,,,,72,,72,72,72,72,72,72", "72,,,,,,72,72,72,72,72,72,72,,,72,,,,,,,72,,,72,72,72,72,72,72,72,72", ",72,72,72,,72,72,72,72,72,,,,,,,,,,,,,,,,,,,,72,,,72,,,72,72,,,72,,", ",,,72,,,,,,,,,72,,,,,72,72,72,72,,72,72,72,72,,,,,72,72,,,,219,219,219", "72,219,72,72,72,219,219,72,72,,219,,219,219,219,219,219,219,219,,,,", ",219,219,219,219,219,219,219,,,219,,,,,,,219,,,219,219,219,219,219,219", "219,219,,219,219,219,,219,219,219,219,219,,,,,,,,,,,,,,,,,,,,219,,,219", ",,219,219,,,219,,,,,,219,,,,,,,,,219,,,,,219,219,219,219,,219,219,219", "219,,,,,219,219,,,,274,274,274,219,274,219,219,219,274,274,219,219,", "274,,274,274,274,274,274,274,274,,,,,,274,274,274,274,274,274,274,,", "274,,,,,,,274,,,274,274,274,274,274,274,274,274,,274,274,274,,274,274", "274,274,274,,,,,,,,,,,,,,,,,,,,274,,,274,,,274,274,,,274,,,,,,274,,", ",,,,,,274,,,,,274,274,274,274,,274,274,274,274,,,,,274,274,,,,218,218", "218,274,218,274,274,274,218,218,274,274,,218,,218,218,218,218,218,218", "218,,,,,,218,218,218,218,218,218,218,,,218,,,,,,,218,,,218,218,218,218", "218,218,218,218,,218,218,218,,218,218,218,218,218,,,,,,,,,,,,,,,,,,", ",218,,,218,,,218,218,,,218,,,,,,218,,,,,,,,,218,,,,,218,218,218,218", ",218,218,218,218,,,,,218,218,,,,217,217,217,218,217,218,218,218,217", "217,218,218,,217,,217,217,217,217,217,217,217,,,,,,217,217,217,217,217", "217,217,,,217,,,,,,,217,,,217,217,217,217,217,217,217,217,,217,217,217", ",217,217,217,217,217,,,,,,,,,,,,,,,,,,,,217,,,217,,,217,217,,,217,,217", ",,,217,,,,,,,,,217,,,,,217,217,217,217,,217,217,217,217,,,,,217,217", ",,,273,273,273,217,273,217,217,217,273,273,217,217,,273,,273,273,273", "273,273,273,273,,,,,,273,273,273,273,273,273,273,,,273,,,,,,,273,,,273", "273,273,273,273,273,273,273,,273,273,273,,273,273,273,273,273,,,,,,", ",,,,,,,,,,,,,273,,,273,,,273,273,,,273,,,,,,273,,,,,,,,,273,,,,,273", "273,273,273,,273,273,273,273,,,,,273,273,,,,49,49,49,273,49,273,273", "273,49,49,273,273,,49,,49,49,49,49,49,49,49,,,,,,49,49,49,49,49,49,49", ",,49,,,,,,,49,,,49,49,49,49,49,49,49,49,,49,49,49,,49,49,49,49,49,,", ",,,,,,,,,,,,,,,,,49,,,49,,,49,49,,,49,,,,,,49,,,,,,,,,49,,,,,49,49,49", "49,,49,49,49,49,,,,,49,49,,,,216,216,216,49,216,49,49,49,216,216,49", "49,,216,,216,216,216,216,216,216,216,,,,,,216,216,216,216,216,216,216", ",,216,,,,,,,216,,,216,216,216,216,216,216,216,216,,216,216,216,,216", "216,216,216,216,,,,,,,,,,,,,,,,,,,,216,,,216,,,216,216,,,216,,216,,", ",216,,,,,,,,,216,,,,,216,216,216,216,,216,216,216,216,,,,,216,216,,", ",796,796,796,216,796,216,216,216,796,796,216,216,,796,,796,796,796,796", "796,796,796,,,,,,796,796,796,796,796,796,796,,,796,,,,,,,796,,,796,796", "796,796,796,796,796,796,,796,796,796,,796,796,796,796,796,,,,,,,,,,", ",,,,,,,,,796,,,796,,,796,796,,,796,,,,,,796,,,,,,,,,796,,,,,796,796", "796,796,,796,796,796,796,,,,,796,796,,,,521,521,521,796,521,796,796", "796,521,521,796,796,,521,,521,521,521,521,521,521,521,,,,,,521,521,521", "521,521,521,521,,,521,,,,,,,521,,,521,521,521,521,521,521,521,521,,521", "521,521,,521,521,521,521,521,,,,,,,,,,,,,,,,,,,,521,,,521,,,521,521", ",,521,,,,,,521,,,,,,,,,521,,,,,521,521,521,521,,521,521,521,521,,,,", "521,521,,,,520,520,520,521,520,521,521,521,520,520,521,521,,520,,520", "520,520,520,520,520,520,,,,,,520,520,520,520,520,520,520,,,520,,,,,", ",520,,,520,520,520,520,520,520,520,520,,520,520,520,,520,520,520,520", "520,,,,,,,,,,,,,,,,,,,,520,,,520,,,520,520,,,520,,,,,,520,,,,,,,,,520", ",,,,520,520,520,520,,520,520,520,520,,,,,520,520,,,,519,519,519,520", "519,520,520,520,519,519,520,520,,519,,519,519,519,519,519,519,519,,", ",,,519,519,519,519,519,519,519,,,519,,,,,,,519,,,519,519,519,519,519", "519,519,519,,519,519,519,,519,519,519,519,519,,,,,,,,,,,,,,,,,,,,519", ",,519,,,519,519,,,519,,,,,,519,,,,,,,,,519,,,,,519,519,519,519,,519", "519,519,519,,,,,519,519,,,,383,383,383,519,383,519,519,519,383,383,519", "519,,383,,383,383,383,383,383,383,383,,,,,,383,383,383,383,383,383,383", ",,383,,,,,,,383,,,383,383,383,383,383,383,383,383,,383,383,383,,383", "383,383,383,383,,,,,,,,,,,,,,,,,,,,383,,,383,,,383,383,,,383,,,,,,383", ",,,,,,,,383,,,,,383,383,383,383,,383,383,383,383,,,,,383,383,,,,517", "517,517,383,517,383,383,383,517,517,383,383,,517,,517,517,517,517,517", "517,517,,,,,,517,517,517,517,517,517,517,,,517,,,,,,,517,,,517,517,517", "517,517,517,517,517,517,517,517,517,,517,517,517,517,517,,,,,,,,,,,", ",,,,,,,,517,,,517,,,517,517,,,517,,517,,517,,517,,,517,,,,,,517,,,,", "517,517,517,517,,517,517,517,517,,,,,517,517,,,,507,507,507,517,507", "517,517,517,507,507,517,517,,507,,507,507,507,507,507,507,507,,,,,,507", "507,507,507,507,507,507,,,507,,,,,,,507,,,507,507,507,507,507,507,507", "507,,507,507,507,,507,507,507,507,507,,,,,,,,,,,,,,,,,,,,507,,,507,", ",507,507,,,507,,,,,,507,,,,,,,,,507,,,,,507,507,507,507,,507,507,507", "507,,,,,507,507,,,,357,357,357,507,357,507,507,507,357,357,507,507,", "357,,357,357,357,357,357,357,357,,,,,,357,357,357,357,357,357,357,,", "357,,,,,,,357,,,357,357,357,357,357,357,357,357,,357,357,357,,357,357", ",,357,,,,,,,,,,,,,,,,,,,,357,,,357,,,357,357,,,357,,,,,,,,,,,,,,,,,", ",,357,357,357,357,,357,357,357,357,,,,,357,357,,,,1011,1011,1011,357", "1011,357,357,357,1011,1011,,,,1011,,1011,1011,1011,1011,1011,1011,1011", ",,,,,1011,1011,1011,1011,1011,1011,1011,,,1011,,,,,,,1011,,,1011,1011", "1011,1011,1011,1011,1011,1011,,1011,1011,1011,,1011,1011,,,1011,,,,", ",,,,,,,,,,,,,,,1011,,,1011,,,1011,1011,,,1011,,,,,,,,,,,,,,,,,,,,1011", "1011,1011,1011,,1011,1011,1011,1011,,,,,1011,1011,,,,338,338,338,1011", "338,1011,1011,1011,338,338,,,,338,,338,338,338,338,338,338,338,,,,,", "338,338,338,338,338,338,338,,,338,,,,,,,338,,,338,338,338,338,338,338", "338,338,,338,338,338,,338,338,,,338,,,,,,,,,,,,,,,,,,,,338,,,338,,,338", "338,,,338,,,1133,,1133,1133,1133,1133,1133,,,,,,,,,1133,,338,338,338", "338,,338,338,338,338,,,,,338,338,,,,338,,1133,338,,338,338,338,76,76", "76,,76,1133,1133,,76,76,1133,,,76,,76,76,76,76,76,76,76,,,,,,76,76,76", "76,76,76,76,,,76,,,,,,,76,,,76,76,76,76,76,76,76,76,,76,76,76,,76,76", ",,76,,,,,,,,,,,,,,,,,,,,76,,,76,,,76,76,,,76,,76,,,,,,,,,,,,,,,,,,76", "76,76,76,,76,76,76,76,,,,,76,76,,,,1075,1075,1075,76,1075,76,76,76,1075", "1075,,,,1075,,1075,1075,1075,1075,1075,1075,1075,,,,,,1075,1075,1075", "1075,1075,1075,1075,,,1075,,,,,,,1075,,,1075,1075,1075,1075,1075,1075", "1075,1075,,1075,1075,1075,,1075,1075,,,1075,,,,,,,,,,,,,,,,,,,,1075", ",,1075,,,1075,1075,,,1075,,,,,,,,,,,,,,,,,,,,1075,1075,1075,1075,,1075", "1075,1075,1075,,,,,1075,1075,,,,585,585,585,1075,585,1075,1075,1075", "585,585,,,,585,,585,585,585,585,585,585,585,,,,,,585,585,585,585,585", "585,585,,,585,,,,,,,585,,,585,585,585,585,585,585,585,585,,585,585,585", ",585,585,,,585,,,,,,,,,,,,,,,,,,,,585,,,585,,,585,585,,,585,,,,,,,,", ",,,,,,,,,,,585,585,585,585,,585,585,585,585,,,,,585,585,,,,594,594,594", "585,594,585,585,585,594,594,,,,594,,594,594,594,594,594,594,594,,,,", ",594,594,594,594,594,594,594,,,594,,,,,,,594,,,594,594,594,594,594,594", "594,594,,594,594,594,,594,594,,,594,,,,,,,,,,,,,,,,,,,,594,,,594,,,594", "594,,,594,,,,,,,,,,,,,,,,,,,,594,594,594,594,,594,594,594,594,,,,,594", "594,,,,77,77,77,594,77,594,594,594,77,77,,,,77,,77,77,77,77,77,77,77", ",,,,,77,77,77,77,77,77,77,,,77,,,,,,,77,,,77,77,77,77,77,77,77,77,,77", "77,77,,77,77,,,77,,,,,,,,,,,,,,,,,77,,,77,,,77,,,77,77,,,77,,,,,,,,", ",,,,,,,,,,,77,77,77,77,,77,77,77,77,,,,,77,77,,,,78,78,78,77,78,77,77", "77,78,78,,,,78,,78,78,78,78,78,78,78,,,,,,78,78,78,78,78,78,78,,,78", ",,,,,,78,,,78,78,78,78,78,78,78,78,,78,78,78,,78,78,,,78,,,,,,,,,,,", ",,,,,,,,78,,,78,,,78,78,,,78,,,,,,,,,,,,,,,,,,,,78,78,78,78,,78,78,78", "78,,,,,78,78,,,,40,40,40,78,40,78,78,78,40,40,,,,40,,40,40,40,40,40", "40,40,,,,,,40,40,40,40,40,40,40,,,40,,,,,,,40,,,40,40,40,40,40,40,40", "40,,40,40,40,,40,40,,,40,,,,,,,,,,,,,,,,,,,,40,,,40,,,40,40,,,40,,,1207", ",1207,1207,1207,1207,1207,,,,,,,,,1207,,40,40,40,40,,40,40,40,40,,,", ",40,40,,,,40,,1207,40,,40,40,40,1137,1137,1137,,1137,1207,1207,,1137", "1137,1207,,,1137,,1137,1137,1137,1137,1137,1137,1137,,,,,,1137,1137", "1137,1137,1137,1137,1137,,,1137,,,,,,,1137,,,1137,1137,1137,1137,1137", "1137,1137,1137,,1137,1137,1137,,1137,1137,,,1137,,,,,,,,,,,,,,,,,,,", "1137,,,1137,,,1137,1137,,,1137,,,,,,,,,,,,,,,,,,,,1137,1137,1137,1137", ",1137,1137,1137,1137,,,,,1137,1137,,,,799,799,799,1137,799,1137,1137", "1137,799,799,,,,799,,799,799,799,799,799,799,799,,,,,,799,799,799,799", "799,799,799,,,799,,,,,,,799,,,799,799,799,799,799,799,799,799,,799,799", "799,,799,799,,,799,,,,,,,,,,,,,,,,,,,,799,,,799,,,799,799,,,799,,,,", ",,,,,,,,,,,,,,,799,799,799,799,,799,799,799,799,,,,,799,799,,,,810,810", "810,799,810,799,799,799,810,810,,,,810,,810,810,810,810,810,810,810", ",,,,,810,810,810,810,810,810,810,,,810,,,,,,,810,,,810,810,810,810,810", "810,810,810,,810,810,810,,810,810,,,810,,,,,,,,,,,,,,,,,,,,810,,,810", ",,810,810,,,810,,,,,,,,,,,,,,,,,,,,810,810,810,810,,810,810,810,810", ",,,,810,810,,,,39,39,39,810,39,810,810,810,39,39,,,,39,,39,39,39,39", "39,39,39,,,,,,39,39,39,39,39,39,39,,,39,,,,,,,39,,,39,39,39,39,39,39", "39,39,,39,39,39,,39,39,,,39,,,,,,,,,,,,,,,,,,,,39,,,39,,,39,39,,,39", ",39,,,,,,,,,,,,,,,,,,39,39,39,39,,39,39,39,39,,,,,39,39,,,,,,,39,,39", "39,39,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424", "424,424,424,424,424,424,424,424,,,,424,424,424,424,424,424,424,424,424", "424,,,,,,424,424,424,424,424,424,424,424,424,,,424,,,,,,,,424,424,,424", "424,424,424,424,424,424,,,424,424,,,,424,424,424,424,,,,,,,,,,,,,,424", "424,,424,424,424,424,424,424,424,424,424,424,424,424,,,424,424,,,,,", ",,,,,,,,424,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10", "10,10,10,10,10,,,,10,10,10,10,10,10,10,10,10,10,,,,,,10,10,10,10,10", "10,10,10,10,10,,10,,,,,,,,10,10,,10,10,10,10,10,10,10,,,10,10,,,,10", "10,10,10,,,,,,,,,,,,,,10,10,,10,10,10,10,10,10,10,10,10,10,10,10,,,10", "10,,,,,,,,,,,,,,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11", "11,11,11,11,11,11,11,,,,11,11,11,11,11,11,11,11,11,11,,,,,,11,11,11", "11,11,11,11,11,11,,,11,,,,,,,,11,11,,11,11,11,11,11,11,11,,,11,11,,", ",11,11,11,11,,,,,,,,,,,,,,11,11,,11,11,11,11,11,11,11,11,11,11,11,11", ",,11,11,,,,,,,,,,,,,,11,664,664,664,664,664,664,664,664,664,664,664", "664,664,664,664,664,664,664,664,664,664,664,664,664,,,,664,664,664,664", "664,664,664,664,664,664,,,,,,664,664,664,664,664,664,664,664,664,,,664", ",,,,,,,664,664,,664,664,664,664,664,664,664,,,664,664,,,,664,664,664", "664,,,,,,,,,,,,,,664,664,,664,664,664,664,664,664,664,664,664,664,664", "664,,,664,664,1118,1118,1118,1118,,,,,,,,,,664,,,1118,1118,1118,1118", ",,1201,1118,1201,1201,1201,1201,1201,1118,1118,,,1118,,,,1201,,,,,,", ",,,,,,,,,1118,,,1118,,,1201,1118,,,1118,,,,,1201,1201,1201,1201,,,,1201", ",,,1118,,,,1118,1118,1118,1118,,1118,1118,1118,1118,,,,,1118,1118,983", "983,983,983,,,1118,,1118,1118,1118,,,1118,1118,,983,983,983,983,,,,983", "983,,,,,983,983,,,983,983,,,,,,,,,,,,,,,,,,,983,,,983,,,,983,,,983,", "983,,,,,,,983,,,,,,,983,,,,983,983,983,983,,983,983,983,983,,,,,983", "983,937,937,937,937,,,983,,983,983,983,,,983,983,,937,937,937,937,,", "1128,937,1128,1128,1128,1128,1128,937,937,,,937,,,,1128,,,,,,,,,,,,", ",,,937,,,937,,,1128,937,,,937,,,,,1128,1128,1128,1128,,,,1128,,,,937", ",,,937,937,937,937,,937,937,937,937,,,,,937,937,936,936,936,936,,,937", ",937,937,937,,,937,937,,936,936,936,936,,,1205,936,1205,1205,1205,1205", "1205,936,936,,,936,,,,1205,,,,,,,,,,,,,,,,936,,,936,,,1205,936,,,936", ",,,,,,1205,1205,,,,1205,,,,936,,,,936,936,936,936,,936,936,936,936,", ",,,936,936,930,930,930,930,,,936,,936,936,936,,,936,936,,930,930,930", "930,,,1203,930,1203,1203,1203,1203,1203,930,930,,,930,,,,1203,,,,,,", ",,,,,,,,,930,,,930,,,1203,930,,,930,,930,,,,,1203,1203,,,,1203,,,,930", ",,,930,930,930,930,,930,930,930,930,,,,,930,930,1198,1198,1198,1198", ",,930,,930,930,930,,,930,930,,1198,1198,1198,1198,,,1224,1198,1224,1224", "1224,1224,1224,1198,1198,,,1198,,,,1224,,,,,,,,,,,,,,,,1198,,,1198,", ",1224,1198,,,1198,,,,,,,1224,1224,,,,1224,,,,1198,,,,1198,1198,1198", "1198,,1198,1198,1198,1198,,,,,1198,1198,924,924,924,924,,,1198,,1198", "1198,1198,,,1198,1198,,924,924,924,924,,,,924,924,,,,,924,924,,,924", "924,,,,,,,,,,,,,,,,,,,924,,,924,,,,924,,,924,,924,,,,,,,924,,,,,,,924", ",,,924,924,924,924,,924,924,924,924,,,,,924,924,923,923,923,923,,,924", ",924,924,924,,,924,924,,923,923,923,923,,,,923,923,,,,,923,923,,,923", "923,,,,,,,,,,,,,,,,,,,923,,,923,,,,923,,,923,,923,,,,,,,923,,,,,,,923", ",,,923,923,923,923,,923,923,923,923,,,,,923,923,920,920,920,920,,,923", ",923,923,923,,,923,923,,920,920,920,920,,,,920,,,,,,920,920,,,920,,", ",,,,,,,,,,,,,,,,,920,,,920,,,,920,,,920,,,,,,,,,,,,,,,,920,,,,920,920", "920,920,,920,920,920,920,,,,,920,920,918,918,918,918,,,920,,920,920", "920,,,920,920,,918,918,918,918,,,,918,,,,,,918,918,,,918,,,,,,,,,,,", ",,,,,,,,918,,,918,,,,918,,,918,,918,,,,,,,,,,,,,,918,,,,918,918,918", "918,,918,918,918,918,,,,,918,918,741,741,741,741,,,918,,918,918,918", ",,918,918,,741,741,741,741,,,,741,,,,,,741,741,,,741,,,,,,,,,,,,,,,", ",,,,741,,,741,,,,741,,,741,,741,,,,,,,,,,,,,,741,,,,741,741,741,741", ",741,741,741,741,,,,,741,741,741,,,,,,741,,741,741,741,,,741,741,26", "26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26", ",,,26,26,26,26,26,26,26,26,26,26,,,,,,26,26,26,26,26,26,26,26,26,26", "26,26,,26,,,,,,26,26,,26,26,26,26,26,26,26,,,26,26,,,,26,26,26,26,,", ",,,26,,,,,,,,26,26,,26,26,26,26,26,26,26,26,26,26,26,26,,,26,749,749", "749,749,,,702,,702,702,702,702,702,,,,749,749,749,749,,702,,749,,,,", ",749,749,,,749,,,,,,,,,,702,,,,,,,,,,749,702,702,749,,,702,749,,,749", ",,,,,,,,,,,,,,,749,,,,749,749,749,749,,749,749,749,749,,,,,749,749,", "702,,,,,749,,749,749,749,,,749,749,776,776,776,776,776,776,776,776,776", "776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,,,,776,776", "776,776,776,776,776,776,776,776,,,,,,776,776,776,776,776,776,776,776", "776,,,776,,,,,,,,776,776,,776,776,776,776,776,776,776,,,776,776,,,,776", "776,776,776,,,,,,,,,,,,,,776,776,,776,776,776,776,776,776,776,776,776", "776,776,776,,,776,525,525,525,525,,,,,,,,,,,,,525,525,525,525,,,,525", "525,,,,,525,525,,,525,525,,,,,,,,,,,,,,,,,,,525,,,525,,,,525,,,525,", "525,,,,,,,525,,,,,,,525,,,,525,525,525,525,,525,525,525,525,,,,,525", "525,524,524,524,524,,,525,,525,525,525,,,525,525,,524,524,524,524,,", ",524,524,,,,,524,524,,,524,524,,,,,,,,,,,,,,,,,,,524,,,524,,,,524,,", "524,,524,,,,,,,524,,,,,,,524,,,,524,524,524,524,,524,524,524,524,,,", ",524,524,1166,1166,1166,1166,,,524,,524,524,524,,,524,524,,1166,1166", "1166,1166,,,,1166,,,,,,1166,1166,,,1166,,,,,,,,,,,,,,,,,,,,1166,,,1166", ",,,1166,,,1166,,,,,,,,,,,,,,,,1166,,,,1166,1166,1166,1166,,1166,1166", "1166,1166,,,,,1166,1166,1109,1109,1109,1109,,,1166,,1166,1166,1166,", ",1166,1166,,1109,1109,1109,1109,,,,1109,,,,,,1109,1109,,,1109,,,,,,", ",,,,,,,,,,,,,1109,,,1109,,,,1109,,,1109,,,,,,,,,,,,,,,,1109,,,,1109", "1109,1109,1109,,1109,1109,1109,1109,,,,,1109,1109,1122,1122,1122,1122", ",,1109,,1109,1109,1109,,,1109,1109,,1122,1122,1122,1122,,,,1122,,,,", ",1122,1122,,,1122,,,,,,,,758,758,758,758,,,,,,,,,1122,,,1122,758,758", "758,1122,,,1122,,1122,,,,,758,758,,,758,,,,,1122,,,,1122,1122,1122,1122", ",1122,1122,1122,1122,,,,,1122,1122,,,,,,,1122,,1122,1122,1122,,,1122", "1122,,,,,,,,,,,,758,758,758,758,,758,758,758,758,,,,,758,758,945,945", "945,945,,,758,,758,758,758,,,,,,945,945,945,,,,,,,,,,,945,945,,,945", "944,944,944,944,,,,,,,,,,,,,944,944,944,,,,,,,,,,,944,944,,,944,,,,", ",,,,,,,,,,,945,945,945,945,,945,945,945,945,,,,,945,945,,,,,,,945,,945", "945,945,,,,,,,,,944,944,944,944,,944,944,944,944,,,,,944,944,759,759", "759,759,,,944,,944,944,944,,,,,,759,759,759,700,,700,700,700,700,700", ",,,759,759,,,759,700,,,,,,,,,,,1020,,1020,1020,1020,1020,1020,,,,,700", ",,,1020,,,,,700,700,700,700,,,,700,,,,,,,,,,1020,759,759,759,759,,759", "759,759,759,,1020,1020,,759,759,1020,,,,,,759,,759,759,759,,,698,700", "698,698,698,698,698,,230,,230,230,230,230,230,698,,,,,,,,230,,,1018", "1020,1018,1018,1018,1018,1018,,,,,698,,,,1018,,,,230,698,698,698,698", ",,,698,230,230,230,230,,,,230,1016,1018,1016,1016,1016,1016,1016,,,", ",,1018,1018,,1016,,1018,1014,,1014,1014,1014,1014,1014,,,,,,,698,,1014", ",,,1016,,230,,,,,,,,,1016,1016,,,,1016,,1014,,1018,,,,,,,1014,1014,1014", "1014,,,,1014,,,,,,,,,,,,1181,1181,,,1181,,,,,,1016,,1181,1181,,1181", "1181,1181,1181,1181,1181,1181,,,1181,1181,,,1014,1181,1181,1181,1181", ",,,,,1181,,,,,,,,1181,1181,,1181,1181,1181,1181,1181,1181,1181,1181", "1181,1181,1181,1181,299,299,1181,,299,,,,,,,,299,299,,299,299,299,299", "299,299,299,,,299,299,,,,299,299,299,299,,,,,,,,,,,,,,299,299,,299,299", "299,299,299,299,299,299,299,299,299,299,223,223,299,,223,,,,,,,,223", "223,,223,223,223,223,223,223,223,,,223,223,,,,223,223,223,223,,,,,,223", ",,,,,,,223,223,,223,223,223,223,223,223,223,223,223,223,223,223,1157", "1157,223,,1157,,,,,,,,1157,1157,,1157,1157,1157,1157,1157,1157,1157", ",,1157,1157,,,,1157,1157,1157,1157,,,,,,1157,,,,,,,,1157,1157,,1157", "1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,516,516,1157", ",516,,,,,,,,516,516,,516,516,516,516,516,516,516,,,516,516,,,,516,516", "516,516,,,,,,516,,,,,,,,516,516,,516,516,516,516,516,516,516,516,516", "516,516,516,1156,1156,516,,1156,,,,,,,,1156,1156,,1156,1156,1156,1156", "1156,1156,1156,,,1156,1156,,,,1156,1156,1156,1156,,,,,,1156,,,,,,,,1156", "1156,,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,672", "672,1156,,672,,,,,,,,672,672,,672,672,672,672,672,672,672,,,672,672", ",,,672,672,672,672,,,,,,672,,,,,,,,672,672,,672,672,672,672,672,672", "672,672,672,672,672,672,515,515,672,,515,,,,,,,,515,515,,515,515,515", "515,515,515,515,,,515,515,,,,515,515,515,515,,,,,,515,,,,,,,,515,515", ",515,515,515,515,515,515,515,515,515,515,515,515,222,222,515,,222,,", ",,,,,222,222,,222,222,222,222,222,222,222,,,222,222,,,,222,222,222,222", ",,,,,222,,,,,,,,222,222,,222,222,222,222,222,222,222,222,222,222,222", "222,588,588,222,,588,,,,,,,,588,588,,588,588,588,588,588,588,588,,,588", "588,,,,588,588,588,588,,,,,,588,,,,,,,,588,588,,588,588,588,588,588", "588,588,588,588,588,588,588,589,589,588,,589,,,,,,,,589,589,,589,589", "589,589,589,589,589,,,589,589,,,,589,589,589,589,,,,,,589,,,,,,,,589", "589,,589,589,589,589,589,589,589,589,589,589,589,589,626,626,589,,626", ",,,,,,,626,626,,626,626,626,626,626,626,626,,,626,626,,,,626,626,626", "626,,,,,,626,,,,,,,,626,626,,626,626,626,626,626,626,626,626,626,626", "626,626,671,671,626,,671,,,,,,,,671,671,,671,671,671,671,671,671,671", ",,671,671,,,,671,671,671,671,,,,,,671,,,,,,,,671,671,,671,671,671,671", "671,671,671,671,671,671,671,671,627,627,671,,627,,,,,,,,627,627,,627", "627,627,627,627,627,627,,,627,627,,,,627,627,627,627,,,,,,627,,,,,,", ",627,627,,627,627,627,627,627,627,627,627,627,627,627,627,634,634,627", ",634,,,,,,,,634,634,,634,634,634,634,634,634,634,,,634,634,,,,634,634", "634,634,,,,,,634,,,,,,,,634,634,,634,634,634,634,634,634,634,634,634", "634,634,634,633,633,634,,633,,,,,,,,633,633,,633,633,633,633,633,633", "633,,,633,633,,,,633,633,633,633,,,,,,633,,,,,,,,633,633,,633,633,633", "633,633,633,633,633,633,633,633,633,598,598,633,,598,,,,,,,,598,598", ",598,598,598,598,598,598,598,,,598,598,,,,598,598,598,598,,,,,,598,", ",,,,,,598,598,,598,598,598,598,598,598,598,598,598,598,598,598,599,599", "598,,599,,,,,,,,599,599,,599,599,599,599,599,599,599,,,599,599,,,,599", "599,599,599,,,,,,599,,,,,,,,599,599,,599,599,599,599,599,599,599,599", "599,599,599,599,,,599"]; - racc_action_check = (arr = $$$('Array').$new(28951, nil)); + clist = ["464,521,1016,837,1236,838,992,464,464,464,515,515,1053,464,464,289,464", "23,835,631,1087,1058,289,807,464,927,443,137,396,785,3,840,137,137,501", "31,464,464,1089,464,464,464,464,464,1104,1105,1108,384,385,392,850,622", "501,625,1092,932,1092,331,23,928,521,625,331,393,1058,927,464,464,464", "464,464,464,464,464,464,464,464,464,464,464,289,1165,464,464,464,443", "464,464,1200,807,464,1201,839,464,1053,928,840,9,464,31,464,932,464", "464,515,464,464,464,464,464,871,464,837,464,838,992,785,871,871,871", "1016,1202,31,871,871,1016,871,464,631,807,464,464,807,464,871,464,835", "396,1087,835,840,835,464,1087,807,464,871,871,1203,871,871,871,871,871", "1222,622,1089,839,392,850,622,1089,1104,1105,1108,384,385,1104,1105", "1108,384,385,393,981,981,12,871,871,871,871,871,871,871,871,871,871", "871,871,871,871,553,553,871,871,871,69,871,871,1202,1165,871,839,416", "871,1165,1127,1200,735,871,1201,871,1200,871,871,1201,871,871,871,871", "871,251,871,729,871,243,1203,244,641,641,729,729,729,358,358,729,729", "729,871,729,1202,871,871,802,871,1202,871,729,729,729,729,729,417,871", "735,802,871,14,808,729,729,246,729,729,729,729,729,1203,981,416,1127", "1127,1203,1222,810,979,15,251,1222,351,576,252,17,69,243,553,244,1127", "27,729,729,729,729,729,729,729,729,729,729,729,729,729,729,20,458,729", "729,729,656,729,729,358,358,729,48,48,729,729,417,729,246,729,641,729", "808,729,729,641,729,729,729,729,729,42,729,729,729,252,459,810,810,979", "947,351,576,576,576,658,45,414,729,458,413,729,729,729,729,53,729,20", "729,576,730,458,808,729,351,808,729,730,730,730,656,656,730,730,730", "1220,730,808,810,979,656,810,979,459,730,1220,730,730,730,1006,48,48", "727,810,979,459,730,730,216,730,730,730,730,730,947,947,947,756,229", "658,658,414,414,414,413,413,413,728,923,658,402,947,19,746,402,756,730", "730,730,730,730,730,730,730,730,730,730,730,730,730,746,44,730,730,730", "412,730,730,1006,231,730,727,291,730,730,418,730,288,730,291,730,235", "730,730,288,730,730,730,730,730,870,730,869,730,700,700,728,923,19,972", "415,972,972,972,972,972,245,730,44,290,730,730,730,730,972,730,290,730", "996,872,44,822,730,996,822,730,872,872,872,412,412,412,872,872,776,872", "972,291,776,418,418,418,288,872,872,972,972,972,972,870,931,869,972", "247,931,872,872,248,872,872,872,872,872,254,415,415,415,1022,634,1022", "1022,1022,1022,1022,290,634,362,914,972,914,914,914,1022,914,634,872", "872,872,872,872,872,872,872,872,872,872,872,872,872,305,43,872,872,872", "1022,872,872,319,389,872,411,320,872,389,914,1022,1022,872,323,872,1022", "872,872,362,872,872,872,872,872,108,872,872,872,634,5,362,108,108,108", "5,335,108,108,108,287,108,872,43,336,872,872,287,872,108,872,108,108", "108,744,43,1022,872,338,744,872,108,108,744,108,108,108,108,108,339", "411,411,411,340,347,286,294,295,29,759,759,347,286,294,295,29,376,346", "21,376,347,108,108,108,108,108,108,108,108,108,108,108,108,108,108,287", "345,108,108,108,1187,108,108,345,349,108,350,1187,108,108,352,108,345", "108,509,108,1187,108,108,509,108,108,108,108,108,21,108,111,108,347", "286,294,295,29,111,111,111,21,353,111,111,111,108,111,357,108,108,108", "108,359,108,111,108,111,111,111,377,108,366,377,108,345,368,111,111", "1187,111,111,111,111,111,371,442,374,404,378,54,293,292,442,379,404", "381,54,293,292,380,390,442,380,404,391,54,111,111,111,111,111,111,111", "111,111,111,111,111,111,111,395,939,111,111,111,394,111,111,1090,1090", "111,939,394,111,111,397,111,678,111,406,111,394,111,111,426,111,111", "111,111,111,442,111,404,111,54,293,292,432,1145,434,775,1157,775,775", "1157,1145,775,111,435,939,111,111,111,111,1145,111,437,111,440,465,444", "939,111,454,678,111,465,465,465,1132,394,456,465,465,811,465,678,775", "531,1132,457,811,466,465,465,472,811,823,823,473,811,762,762,762,762", "465,465,476,465,465,465,465,465,1145,383,383,477,762,762,762,531,478", "1132,1132,531,531,481,1132,482,532,762,762,16,16,762,465,465,465,465", "465,465,465,465,465,465,465,465,465,465,811,483,465,465,465,493,465", "465,1106,505,465,508,532,465,18,1106,532,532,465,511,465,18,465,465", "1106,465,465,465,465,465,18,465,465,465,517,762,762,762,762,525,762", "762,762,762,945,1190,1190,465,762,762,465,465,88,465,945,465,762,526", "762,762,762,533,465,534,88,465,387,387,387,387,387,387,535,1106,88,387", "387,536,561,18,387,842,387,387,387,387,387,387,387,562,563,567,945,583", "387,387,387,387,387,387,387,584,587,387,945,589,594,51,51,387,387,387", "387,387,387,387,387,387,387,387,387,598,387,387,387,843,387,387,387", "387,387,593,843,842,607,343,608,843,593,609,842,843,343,51,51,842,619", "593,623,842,387,343,624,387,626,653,387,387,363,661,387,663,387,670", "679,363,387,714,842,714,714,714,684,714,363,387,689,691,693,707,387", "387,387,387,712,387,387,387,387,713,843,715,722,387,387,731,593,740", "842,748,343,387,749,387,387,387,750,779,387,387,841,841,841,841,841", "841,782,784,790,841,841,791,792,363,841,400,841,841,841,841,841,841", "841,794,796,697,804,806,841,841,841,841,841,841,841,697,1099,841,1099", "1099,1099,809,1099,841,841,841,841,841,841,841,841,841,841,841,841,812", "841,841,841,242,841,841,841,841,841,344,242,400,697,697,813,816,344", "697,400,242,825,831,832,400,836,344,845,400,841,849,851,841,866,868", "841,841,877,890,841,1197,841,1197,1197,1197,841,1197,400,893,913,894", "913,913,913,841,913,897,899,902,841,841,841,841,903,841,841,841,841", "905,242,906,908,841,841,912,344,925,400,933,934,841,938,841,841,841", "941,913,841,841,236,236,236,236,236,236,913,649,649,236,236,649,649", "649,236,401,236,236,236,236,236,236,236,8,8,8,8,8,236,236,236,236,236", "236,236,946,494,236,494,494,494,965,494,236,236,236,236,236,236,236", "236,236,236,236,236,968,236,236,236,969,236,236,236,236,236,978,710", "401,710,710,710,983,710,494,401,986,993,995,1002,401,1003,1004,494,401", "236,1005,1031,236,1032,1037,236,236,1042,1043,236,1044,236,1045,1046", "1047,236,1051,401,710,1114,1052,1114,1114,1114,236,1114,1055,710,1059", "236,236,236,236,1066,236,236,236,236,1071,1072,1074,1075,236,236,1076", "1078,1079,401,1080,1096,236,1107,236,236,236,1110,1114,236,236,1103", "1103,1103,1103,1103,1103,1111,1112,1113,1103,1103,1124,1143,1146,1103", "1155,1103,1103,1103,1103,1103,1103,1103,25,1156,1161,1171,1172,1103", "1103,1103,1103,1103,1103,1103,1174,1177,1103,581,581,581,581,581,1103", "1103,1103,1103,1103,1103,1103,1103,1103,1103,1103,1103,1180,1103,1103", "1103,1181,1103,1103,1103,1103,1103,25,25,25,25,25,25,25,25,25,25,25", "1182,25,25,1183,1185,25,25,1199,1103,1204,25,1103,1206,1217,1103,1103", "1218,1224,1103,1225,1103,25,1226,25,1103,25,25,1227,25,25,25,25,25,1103", "25,1,,,1103,1103,1103,1103,,1103,1103,1103,1103,,,,,1103,1103,,25,,", ",,1103,,1103,1103,1103,,,1103,1103,997,997,997,997,997,997,,,,997,997", ",,,997,,997,997,997,997,997,997,997,373,373,373,373,373,997,997,997", "997,997,997,997,,,997,,,,,447,997,997,997,997,997,997,997,997,997,997", "997,997,,997,997,997,,997,997,997,997,997,447,447,447,447,447,447,447", "447,447,447,447,,447,447,,,447,447,,997,,,997,,,997,997,,,997,,997,447", ",447,997,447,447,,447,447,447,447,447,997,447,,,,997,997,997,997,,997", "997,997,997,,,,,997,997,,447,,447,,,997,,997,997,997,,,997,997,337,337", "337,337,337,337,,,,337,337,,,,337,,337,337,337,337,337,337,337,334,334", "334,334,334,337,337,337,337,337,337,337,,,337,,,,,692,337,337,337,337", "337,337,337,337,337,337,337,337,,337,337,337,,337,337,337,337,337,692", "692,692,692,692,692,692,692,692,692,692,,692,692,,,692,692,,337,,,337", ",,337,337,,,337,,337,692,,692,337,692,692,,692,692,692,692,692,337,692", ",,,337,337,337,337,,337,337,337,337,,,,,337,337,,692,,,,,337,,337,337", "337,,,337,337,38,38,38,38,38,38,,,,38,38,,,,38,,38,38,38,38,38,38,38", ",,,,,38,38,38,38,38,38,38,,,38,,,,,453,38,38,38,38,38,38,38,38,38,38", "38,38,,38,38,38,,38,38,38,38,38,453,453,453,453,453,453,453,453,453", "453,453,,453,453,,,453,453,,38,,,38,,,38,38,,,38,,38,453,,453,38,453", "453,,453,453,453,453,453,38,453,,,,38,38,38,38,,38,38,38,38,,,,,38,38", ",453,,,,,38,,38,38,38,,,38,38,642,642,642,642,642,642,,,,642,642,,,", "642,,642,642,642,642,642,642,642,,,,,,642,642,642,642,642,642,642,,", "642,,,,,723,642,642,642,642,642,642,642,642,642,642,642,642,,642,642", "642,,642,642,642,642,642,723,723,723,723,723,723,723,723,723,723,723", ",723,723,,,723,723,,642,,,642,,,642,642,,,642,,642,723,,723,642,723", "723,,723,723,723,723,723,642,723,,,,642,642,642,642,,642,642,642,642", ",,,,642,642,,723,,,,,642,,642,642,642,,,642,642,1068,1068,1068,1068", "1068,1068,,,,1068,1068,,,,1068,,1068,1068,1068,1068,1068,1068,1068,", ",,,,1068,1068,1068,1068,1068,1068,1068,,,1068,,,,,,1068,1068,1068,1068", "1068,1068,1068,1068,1068,1068,1068,1068,,1068,1068,1068,,1068,1068,1068", "1068,1068,817,817,817,817,817,817,817,817,817,817,817,,817,817,,,817", "817,,1068,,,1068,,,1068,1068,,,1068,,1068,817,,817,1068,817,817,,817", "817,817,817,817,1068,817,,,,1068,1068,1068,1068,,1068,1068,1068,1068", ",,,,1068,1068,,817,,,,,1068,,1068,1068,1068,,,1068,1068,372,372,372", "372,372,372,,,,372,372,,,,372,,372,372,372,372,372,372,372,,,,,,372", "372,372,372,372,372,372,,,372,,,,,,372,372,372,372,372,372,372,372,372", "372,372,372,,372,372,372,,372,372,372,372,372,874,874,874,874,874,874", "874,874,874,874,874,,874,874,,,874,874,,372,,,372,,,372,372,,,372,,372", "874,,874,372,874,874,,874,874,874,874,874,372,874,,,,372,372,372,372", ",372,372,372,372,,,,,372,372,,874,,,,,372,,372,372,372,,,372,372,973", "973,973,973,973,973,,,,973,973,,,,973,,973,973,973,973,973,973,973,", ",,,,973,973,973,973,973,973,973,,,973,,,,,,973,973,973,973,973,973,973", "973,973,973,973,973,,973,973,973,,973,973,973,973,973,317,317,317,317", "317,317,317,317,317,317,317,,317,317,,,317,317,,973,,,973,,,973,973", ",,973,,973,317,,317,973,317,317,,317,317,317,317,317,973,317,,,,973", "973,973,973,,973,973,973,973,,,,,973,973,,317,,,,,973,,973,973,973,", ",973,973,2,2,2,2,2,2,,,,2,2,,,,2,,2,2,2,2,2,2,2,,,,,,2,2,2,2,2,2,2,", ",2,,,,,,2,2,2,2,2,2,2,2,2,2,2,2,,2,2,2,,2,2,2,2,2,550,550,550,550,550", "550,550,550,550,550,550,,550,550,,,550,550,,2,,,2,,,2,2,,,2,,2,550,", "550,2,550,550,,550,550,550,550,550,2,550,,,,2,2,2,2,,2,2,2,2,,,,,2,2", "550,550,,,,,2,,2,2,2,,,2,2,230,230,230,230,230,230,,,,230,230,,,,230", ",230,230,230,230,230,230,230,,,,,,230,230,230,230,230,230,230,,,230", ",,,,,230,230,230,230,230,230,230,230,230,230,230,230,,230,230,230,,230", "230,230,230,230,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067", ",1067,1067,,,1067,1067,,230,,,230,,,230,230,,,230,,230,1067,,1067,230", "1067,1067,,1067,1067,1067,1067,1067,230,1067,,,,230,230,230,230,,230", "230,230,230,,,,,230,230,,1067,,,,,230,,230,230,230,,,230,230,342,342", "342,342,342,342,,,,342,342,,,,342,,342,342,342,342,342,342,342,,,,,", "342,342,342,342,342,342,342,,,342,,,,,,342,342,342,342,342,342,342,342", "342,342,342,342,,342,342,342,,342,342,342,342,342,1034,1034,1034,1034", "1034,1034,1034,1034,1034,1034,1034,,1034,1034,,,1034,1034,,342,,,342", ",,342,342,,,342,,342,1034,,1034,342,1034,1034,,1034,1034,1034,1034,1034", "342,1034,,,,342,342,342,342,,342,342,342,342,,,,,342,342,,1034,,,,,342", ",342,342,342,,,342,342,253,253,253,253,253,253,,,,253,253,,,,253,,253", "253,253,253,253,253,253,,,,,,253,253,253,253,253,253,253,,,253,,,,,", "253,253,253,253,253,253,253,253,253,253,253,253,,253,253,253,,253,253", "253,253,253,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,", "1033,1033,,,1033,1033,,253,,,253,,,253,253,,,253,,253,1033,,1033,253", "1033,1033,,1033,1033,1033,1033,1033,253,1033,,,,253,253,253,253,,253", "253,253,253,,,,,253,253,,1033,,,,,253,,253,253,253,,,253,253,1013,1013", "1013,1013,1013,1013,,,,1013,1013,,,,1013,,1013,1013,1013,1013,1013,1013", "1013,,,,,,1013,1013,1013,1013,1013,1013,1013,,,1013,,,,,,1013,1013,1013", "1013,1013,1013,1013,1013,1013,1013,1013,1013,,1013,1013,1013,,1013,1013", "1013,1013,1013,1011,1011,1011,1011,1011,1011,1011,1011,1011,1011,1011", ",1011,1011,,,1011,1011,,1013,,,1013,,,1013,1013,,,1013,,1013,1011,,1011", "1013,1011,1011,,1011,1011,1011,1011,1011,1013,1011,,,,1013,1013,1013", "1013,,1013,1013,1013,1013,,,,,1013,1013,,1011,,,,,1013,,1013,1013,1013", ",,1013,1013,1098,1098,1098,1098,1098,1098,,,,1098,1098,,,,1098,,1098", "1098,1098,1098,1098,1098,1098,,,,,,1098,1098,1098,1098,1098,1098,1098", ",,1098,,,,,,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098", ",1098,1098,1098,,1098,1098,1098,1098,1098,1010,1010,1010,1010,1010,1010", "1010,1010,1010,1010,1010,,1010,1010,,,1010,1010,,1098,,,1098,,,1098", "1098,,,1098,,1098,1010,,1010,1098,1010,1010,,1010,1010,1010,1010,1010", "1098,1010,,,,1098,1098,1098,1098,,1098,1098,1098,1098,,,,,1098,1098", ",1010,,,,,1098,,1098,1098,1098,,,1098,1098,1097,1097,1097,1097,1097", "1097,,,,1097,1097,,,,1097,,1097,1097,1097,1097,1097,1097,1097,,,,,,1097", "1097,1097,1097,1097,1097,1097,,,1097,,,,,,1097,1097,1097,1097,1097,1097", "1097,1097,1097,1097,1097,1097,,1097,1097,1097,,1097,1097,1097,1097,1097", "529,529,529,529,529,529,529,529,529,529,529,,529,529,,,529,529,,1097", ",,1097,,,1097,1097,,546,1097,,1097,529,,529,1097,529,529,,529,529,529", "529,529,1097,529,,,,1097,1097,1097,1097,,1097,1097,1097,1097,,,546,", "1097,1097,546,546,,546,546,,1097,,1097,1097,1097,,,1097,1097,1147,1147", "1147,1147,1147,1147,,,,1147,1147,,,,1147,,1147,1147,1147,1147,1147,1147", "1147,,,,,,1147,1147,1147,1147,1147,1147,1147,547,1115,1147,1115,1115", "1115,,1115,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147", ",1147,1147,1147,,1147,1147,1147,1147,1147,604,,547,,,,547,547,1115,547", "547,,,,,,604,604,,1147,,,1147,,,1147,1147,,,1147,,1147,604,,604,1147", "604,604,,604,604,,,604,1147,604,,,,1147,1147,1147,1147,,1147,1147,1147", "1147,,,,,1147,1147,,,,,,,1147,,1147,1147,1147,,,1147,1147,621,621,621", "621,621,621,,,,621,621,,,,621,,621,621,621,621,621,621,621,,,,,,621", "621,621,621,621,621,621,,,621,,,,,,621,621,621,621,621,621,621,621,621", "621,621,621,,621,621,621,,621,621,621,621,621,364,364,364,364,364,364", "364,364,364,364,364,,364,364,,,364,364,,621,,,621,,,621,621,,,621,,621", "364,,364,621,364,364,,364,364,364,364,364,621,364,,,,621,621,621,621", ",621,621,621,621,,,,,621,621,,,,,,,621,,621,621,621,,,621,621,892,892", "892,892,892,892,,,,892,892,,,,892,,892,892,892,892,892,892,892,,,,,", "892,892,892,892,892,892,892,,,892,,,,,,892,892,892,892,892,892,892,892", "892,892,892,892,,892,892,892,,892,892,892,892,892,365,365,365,365,365", "365,365,365,365,365,365,,365,365,,,365,365,,892,,,892,,,892,892,,,892", ",892,365,,365,892,365,365,,365,365,365,365,365,892,365,,,,892,892,892", "892,,892,892,892,892,,,,,892,892,,,,,,,892,,892,892,892,,,892,892,618", "618,618,618,618,618,,,,618,618,,,,618,,618,618,618,618,618,618,618,", ",,,,618,618,618,618,618,618,618,,,618,,,,,,618,618,618,618,618,618,618", "618,618,618,618,618,,618,618,618,,618,618,618,618,618,551,,,,,,,,,,", ",,,,,551,551,,618,,,618,,,618,618,,,618,,618,551,,551,618,551,551,,551", "551,,,551,618,551,,,,618,618,618,618,,618,618,618,618,,,,,618,618,,", ",,,,618,,618,618,618,,,618,618,1191,1191,1191,1191,1191,1191,,,,1191", "1191,,,,1191,,1191,1191,1191,1191,1191,1191,1191,,,,,,1191,1191,1191", "1191,1191,1191,1191,,,1191,,,,,,1191,1191,1191,1191,1191,1191,1191,1191", "1191,1191,1191,1191,,1191,1191,1191,,1191,1191,1191,1191,1191,549,549", "549,549,549,549,549,549,,549,549,,,,,,549,549,,1191,,,1191,,,1191,1191", ",,1191,,1191,549,,549,1191,549,549,,549,549,549,549,549,1191,549,,,", "1191,1191,1191,1191,,1191,1191,1191,1191,,,,,1191,1191,,,,,,,1191,,1191", "1191,1191,,,1191,1191,135,135,135,135,135,135,,,,135,135,,,,135,,135", "135,135,135,135,135,135,,,,,,135,135,135,135,135,135,135,,,135,,,,,", "135,135,135,135,135,135,135,135,135,135,135,135,,135,135,135,,135,135", "135,135,135,548,548,548,548,548,548,548,,,548,548,,,,,,548,548,,135", ",,135,,,135,135,,,135,,135,548,,548,135,548,548,,548,548,548,548,548", "135,548,,,,135,135,135,135,,135,135,135,135,,,,,135,135,,,,,,,135,,135", "135,135,,,135,135,218,218,218,218,218,218,,,,218,218,,,,218,,218,218", "218,218,218,218,218,,,,,,218,218,218,218,218,218,218,,,218,,,,,,218", "218,218,218,218,218,218,218,218,218,218,218,,218,218,218,,218,218,218", "218,218,545,545,545,545,545,545,545,,,545,545,,,,,,545,545,,218,,,218", ",,218,218,,,218,,218,545,,545,218,545,545,,545,545,545,545,545,218,545", ",,,218,218,218,218,,218,218,218,218,,,,,218,218,,,,,,,218,,218,218,218", ",,218,218,846,846,846,846,846,846,,,,846,846,,,,846,,846,846,846,846", "846,846,846,,,,,,846,846,846,846,846,846,846,,,846,,,,,,846,846,846", "846,846,846,846,846,846,846,846,846,,846,846,846,,846,846,846,846,846", "544,544,544,544,544,544,544,,,544,544,,,,,,544,544,,846,,,846,,,846", "846,,,846,,846,544,,544,846,544,544,,544,544,544,544,544,846,544,,,", "846,846,846,846,,846,846,846,846,,,,,846,846,,,,,,,846,,846,846,846", ",,846,846,857,857,857,857,857,857,,,,857,857,,,,857,,857,857,857,857", "857,857,857,,,,,,857,857,857,857,857,857,857,,,857,,,,,,857,857,857", "857,857,857,857,857,857,857,857,857,,857,857,857,,857,857,857,857,857", "543,543,543,543,543,543,543,,,543,543,,,,,,543,543,,857,,,857,,,857", "857,,,857,,857,543,,543,857,543,543,,543,543,543,543,543,857,543,,,", "857,857,857,857,,857,857,857,857,,,,,857,857,,,,,,,857,,857,857,857", ",,857,857,388,388,388,388,388,388,,,,388,388,,,,388,,388,388,388,388", "388,388,388,,,,,,388,388,388,388,388,388,388,,,388,,,,,,388,388,388", "388,388,388,388,388,388,388,388,388,,388,388,388,,388,388,388,388,388", "542,542,542,542,542,542,542,,,542,542,,,,,,542,542,,388,,,388,,,388", "388,,,388,,388,542,,542,388,542,542,,542,542,542,542,542,388,542,,,", "388,388,388,388,,388,388,388,388,,,,,388,388,,,,,,,388,,388,388,388", ",,388,388,991,991,991,991,991,991,,,,991,991,,,,991,,991,991,991,991", "991,991,991,,,,,,991,991,991,991,991,991,991,,,991,,,,,,991,991,991", "991,991,991,991,991,991,991,991,991,,991,991,991,,991,991,991,991,991", "541,541,541,541,541,541,541,,,541,541,,,,,,541,541,,991,,,991,,,991", "991,,,991,,991,541,,541,991,541,541,,541,541,541,541,541,991,541,,,", "991,991,991,991,,991,991,991,991,,,,,991,991,,,,920,920,920,991,920", "991,991,991,920,920,991,991,,920,,920,920,920,920,920,920,920,,,,,,920", "920,920,920,920,920,920,,,920,,,,,,,920,,,920,920,920,920,920,920,920", "920,,920,920,920,,920,920,920,920,920,540,540,540,540,540,540,540,,", "540,540,,,,,,540,540,,920,,,920,,,920,920,,,920,,,540,,540,920,540,540", ",540,540,540,540,540,920,540,,,,920,920,920,920,,920,920,920,920,,,", ",920,920,,,,921,921,921,920,921,920,920,920,921,921,920,920,,921,,921", "921,921,921,921,921,921,,,,,,921,921,921,921,921,921,921,,,921,,,,,", ",921,,,921,921,921,921,921,921,921,921,,921,921,921,,921,921,921,921", "921,530,530,530,530,530,530,530,530,530,530,530,,530,530,,,530,530,", "921,,,921,,,921,921,,,921,,,530,,530,921,530,530,,530,530,530,530,530", "921,530,,,,921,921,921,921,,921,921,921,921,,,,,921,921,,,,922,922,922", "921,922,921,921,921,922,922,921,921,,922,,922,922,922,922,922,922,922", ",,,,,922,922,922,922,922,922,922,,,922,,,,,,,922,,,922,922,922,922,922", "922,922,922,,922,922,922,,922,922,922,922,922,538,,,,,,,,,,,,,,,,538", "538,,922,,,922,,,922,922,,,922,,,538,,538,922,538,538,,538,538,,,,922", ",,,,922,922,922,922,,922,922,922,922,,,,,922,922,,,,733,733,733,922", "733,922,922,922,733,733,922,922,,733,,733,733,733,733,733,733,733,,", ",,,733,733,733,733,733,733,733,,,733,,,,,,,733,,,733,733,733,733,733", "733,733,733,,733,733,733,,733,733,733,733,733,539,,,,,,,,,,,,,,,,539", "539,,733,,,733,,,733,733,,,733,,,539,,,733,539,539,,539,539,,,,733,", ",,,733,733,733,733,,733,733,733,733,,,,,733,733,,,,732,732,732,733,732", "733,733,733,732,732,733,733,,732,,732,732,732,732,732,732,732,,,,,,732", "732,732,732,732,732,732,,,732,,,,,,,732,,,732,732,732,732,732,732,732", "732,,732,732,732,,732,732,732,732,732,537,,,,,,,,,,,,,,,,537,537,,732", ",,732,,,732,732,,,732,,,537,,537,732,537,537,,537,537,,,,732,,,,,732", "732,732,732,,732,732,732,732,,,,,732,732,,,,,,,732,,732,732,732,,,732", "732,333,333,333,333,333,,,,333,333,,,,333,,333,333,333,333,333,333,333", ",,,,,333,333,333,333,333,333,333,,,333,,,,,,333,333,,333,333,333,333", "333,333,333,333,333,,333,333,333,,333,333,333,333,333,,,,,,,,,,,,,,", ",,,,,333,,,333,,,333,333,,,333,,333,,,,333,,,,,,,,,333,,,,,333,333,333", "333,,333,333,333,333,,,,,333,333,,,,265,265,265,333,265,333,333,333", "265,265,333,333,,265,,265,265,265,265,265,265,265,,,,,,265,265,265,265", "265,265,265,,,265,,,,,,,265,,,265,265,265,265,265,265,265,265,,265,265", "265,,265,265,265,265,265,,,,,,,,,,,,,,,,,,,,265,,,265,,,265,265,,,265", ",,,,,265,,,,,,,,,265,,,,,265,265,265,265,,265,265,265,265,,,,,265,265", ",,,264,264,264,265,264,265,265,265,264,264,265,265,,264,,264,264,264", "264,264,264,264,,,,,,264,264,264,264,264,264,264,,,264,,,,,,,264,,,264", "264,264,264,264,264,264,264,,264,264,264,,264,264,264,264,264,,,,,,", ",,,,,,,,,,,,,264,,,264,,,264,264,,,264,,,,,,264,,,,,,,,,264,,,,,264", "264,264,264,,264,264,264,264,,,,,264,264,,,,263,263,263,264,263,264", "264,264,263,263,264,264,,263,,263,263,263,263,263,263,263,,,,,,263,263", "263,263,263,263,263,,,263,,,,,,,263,,,263,263,263,263,263,263,263,263", ",263,263,263,,263,263,263,263,263,,,,,,,,,,,,,,,,,,,,263,,,263,,,263", "263,,,263,,,,,,263,,,,,,,,,263,,,,,263,263,263,263,,263,263,263,263", ",,,,263,263,,,,262,262,262,263,262,263,263,263,262,262,263,263,,262", ",262,262,262,262,262,262,262,,,,,,262,262,262,262,262,262,262,,,262", ",,,,,,262,,,262,262,262,262,262,262,262,262,,262,262,262,,262,262,262", "262,262,,,,,,,,,,,,,,,,,,,,262,,,262,,,262,262,,,262,,,,,,262,,,,,,", ",,262,,,,,262,262,262,262,,262,262,262,262,,,,,262,262,,,,261,261,261", "262,261,262,262,262,261,261,262,262,,261,,261,261,261,261,261,261,261", ",,,,,261,261,261,261,261,261,261,,,261,,,,,,,261,,,261,261,261,261,261", "261,261,261,,261,261,261,,261,261,261,261,261,,,,,,,,,,,,,,,,,,,,261", ",,261,,,261,261,,,261,,,,,,261,,,,,,,,,261,,,,,261,261,261,261,,261", "261,261,261,,,,,261,261,,,,708,708,708,261,708,261,261,261,708,708,261", "261,,708,,708,708,708,708,708,708,708,,,,,,708,708,708,708,708,708,708", ",,708,,,,,,,708,,,708,708,708,708,708,708,708,708,,708,708,708,,708", "708,708,708,708,,,,,,,,,,,,,,,,,,,,708,,,708,,,708,708,,,708,,,,,,708", ",,,,,,,,708,,,,,708,708,708,708,,708,708,708,708,,,,,708,708,,,,260", "260,260,708,260,708,708,708,260,260,708,708,,260,,260,260,260,260,260", "260,260,,,,,,260,260,260,260,260,260,260,,,260,,,,,,,260,,,260,260,260", "260,260,260,260,260,,260,260,260,,260,260,260,260,260,,,,,,,,,,,,,,", ",,,,,260,,,260,,,260,260,,,260,,,,,,260,,,,,,,,,260,,,,,260,260,260", "260,,260,260,260,260,,,,,260,260,,,,694,694,694,260,694,260,260,260", "694,694,260,260,,694,,694,694,694,694,694,694,694,,,,,,694,694,694,694", "694,694,694,,,694,,,,,,,694,,,694,694,694,694,694,694,694,694,,694,694", "694,,694,694,694,694,694,,,,,,,,,,,,,,,,,,,,694,,,694,,,694,694,,,694", ",694,,,,694,,,,,,,,,694,,,,,694,694,694,694,,694,694,694,694,,,,,694", "694,,,,259,259,259,694,259,694,694,694,259,259,694,694,,259,,259,259", "259,259,259,259,259,,,,,,259,259,259,259,259,259,259,,,259,,,,,,,259", ",,259,259,259,259,259,259,259,259,,259,259,259,,259,259,259,259,259", ",,,,,,,,,,,,,,,,,,,259,,,259,,,259,259,,,259,,,,,,259,,,,,,,,,259,,", ",,259,259,259,259,,259,259,259,259,,,,,259,259,,,,258,258,258,259,258", "259,259,259,258,258,259,259,,258,,258,258,258,258,258,258,258,,,,,,258", "258,258,258,258,258,258,,,258,,,,,,,258,,,258,258,258,258,258,258,258", "258,,258,258,258,,258,258,258,258,258,,,,,,,,,,,,,,,,,,,,258,,,258,", ",258,258,,,258,,,,,,258,,,,,,,,,258,,,,,258,258,258,258,,258,258,258", "258,,,,,258,258,,,,257,257,257,258,257,258,258,258,257,257,258,258,", "257,,257,257,257,257,257,257,257,,,,,,257,257,257,257,257,257,257,,", "257,,,,,,,257,,,257,257,257,257,257,257,257,257,,257,257,257,,257,257", "257,257,257,,,,,,,,,,,,,,,,,,,,257,,,257,,,257,257,,,257,,,,,,257,,", ",,,,,,257,,,,,257,257,257,257,,257,257,257,257,,,,,257,257,,,,688,688", "688,257,688,257,257,257,688,688,257,257,,688,,688,688,688,688,688,688", "688,,,,,,688,688,688,688,688,688,688,,,688,,,,,,,688,,,688,688,688,688", "688,688,688,688,,688,688,688,,688,688,688,688,688,,,,,,,,,,,,,,,,,,", ",688,,,688,,,688,688,,,688,,,,,,688,,,,,,,,,688,,,,,688,688,688,688", ",688,688,688,688,,,,,688,688,,,,687,687,687,688,687,688,688,688,687", "687,688,688,,687,,687,687,687,687,687,687,687,,,,,,687,687,687,687,687", "687,687,,,687,,,,,,,687,,,687,687,687,687,687,687,687,687,,687,687,687", ",687,687,687,687,687,,,,,,,,,,,,,,,,,,,,687,,,687,,,687,687,,,687,,", ",,,687,,,,,,,,,687,,,,,687,687,687,687,,687,687,687,687,,,,,687,687", ",,,,,,687,,687,687,687,32,,687,687,,,,32,32,32,,,32,32,32,,32,,,,,,", ",32,32,32,32,,,,,,,,,32,32,,32,32,32,32,32,,,,,,,,,,,,,,,,,,,,,,,32", "32,32,32,32,32,32,32,32,32,32,32,32,32,,,32,32,32,,,32,,32,32,,,32,32", ",32,,32,,32,,32,32,,32,32,32,32,32,,32,32,32,,,,,,,,,,,,,,32,,,32,32", ",32,,32,683,683,683,,683,,32,,683,683,,,,683,,683,683,683,683,683,683", "683,,,,,,683,683,683,683,683,683,683,,,683,,,,,,,683,,,683,683,683,683", "683,683,683,683,,683,683,683,,683,683,683,683,683,,,,,,,,,,,,,,,,,,", ",683,,,683,,,683,683,,,683,,,,,,683,,,,,,,,,683,,,,,683,683,683,683", ",683,683,683,683,,,,,683,683,,,,682,682,682,683,682,683,683,683,682", "682,683,683,,682,,682,682,682,682,682,682,682,,,,,,682,682,682,682,682", "682,682,,,682,,,,,,,682,,,682,682,682,682,682,682,682,682,,682,682,682", ",682,682,682,682,682,,,,,,,,,,,,,,,,,,,,682,,,682,,,682,682,,,682,,", ",,,682,,,,,,,,,682,,,,,682,682,682,682,,682,682,682,682,,,,,682,682", ",,,681,681,681,682,681,682,682,682,681,681,682,682,,681,,681,681,681", "681,681,681,681,,,,,,681,681,681,681,681,681,681,,,681,,,,,,,681,,,681", "681,681,681,681,681,681,681,681,681,681,681,,681,681,681,681,681,,,", ",,,,,,,,,,,,,,,,681,,,681,,,681,681,,,681,,,,681,,681,,,681,,,,,,681", ",,,,681,681,681,681,,681,681,681,681,,,,,681,681,,,,956,956,956,681", "956,681,681,681,956,956,681,681,,956,,956,956,956,956,956,956,956,,", ",,,956,956,956,956,956,956,956,,,956,,,,,,,956,,,956,956,956,956,956", "956,956,956,,956,956,956,,956,956,956,956,956,,,,,,,,,,,,,,,,,,,,956", ",,956,,,956,956,,,956,,,,,,956,,,,,,,,,956,,,,,956,956,956,956,,956", "956,956,956,,,,,956,956,,,,962,962,962,956,962,956,956,956,962,962,956", "956,,962,,962,962,962,962,962,962,962,,,,,,962,962,962,962,962,962,962", ",,962,,,,,,,962,,,962,962,962,962,962,962,962,962,,962,962,962,,962", "962,962,962,962,,,,,,,,,,,,,,,,,,,,962,,,962,,,962,962,,,962,,,,,,962", ",,,,,,,,962,,,,,962,962,962,962,,962,962,962,962,,,,,962,962,,,,,,,962", ",962,962,962,33,,962,962,,,,33,33,33,,,33,33,33,,33,,,,,,,,33,,33,33", ",,,,,,,,33,33,,33,33,33,33,33,,,,,,,,,,,,,,,,,,,,,,,33,33,33,33,33,33", "33,33,33,33,33,33,33,33,,,33,33,33,,,33,,33,33,,,33,33,,33,,33,,33,", "33,33,,33,33,33,33,33,,33,,33,,,,,,,,,,,,,,33,,,33,33,,33,,33,34,34", "34,,34,,33,,34,34,,,,34,,34,34,34,34,34,34,34,,,,,,34,34,34,34,34,34", "34,,,34,,,,,,,34,,,34,34,34,34,34,34,34,34,34,34,34,34,,34,34,34,34", "34,,,,,,,,,,,,,,,,,,,,34,,,34,,,34,34,,,34,,34,,34,,34,,,34,,,,,,34", ",,,,34,34,34,34,,34,34,34,34,,,,,34,34,,,,680,680,680,34,680,34,34,34", "680,680,34,34,,680,,680,680,680,680,680,680,680,,,,,,680,680,680,680", "680,680,680,,,680,,,,,,,680,,,680,680,680,680,680,680,680,680,680,680", "680,680,,680,680,680,680,680,,,,,,,,,,,,,,,,,,,,680,,,680,,,680,680", ",,680,,680,,680,,680,,,680,,,,,,680,,,,,680,680,680,680,,680,680,680", "680,,,,,680,680,,,,677,677,677,680,677,680,680,680,677,677,680,680,", "677,,677,677,677,677,677,677,677,,,,,,677,677,677,677,677,677,677,,", "677,,,,,,,677,,,677,677,677,677,677,677,677,677,,677,677,677,,677,677", "677,677,677,,,,,,,,,,,,,,,,,,,,677,,,677,,,677,677,,,677,,,,,,677,,", ",,,,,,677,,,,,677,677,677,677,,677,677,677,677,,,,,677,677,,,,,,,677", ",677,677,677,,,677,677,676,676,676,676,676,,,,676,676,,,,676,,676,676", "676,676,676,676,676,,,,,,676,676,676,676,676,676,676,,,676,,,,,,676", "676,,676,676,676,676,676,676,676,676,676,,676,676,676,,676,676,676,676", "676,,,,,,,,,,,,,,,,,,,,676,,,676,,,676,676,,,676,,676,,,,676,,,,,,,", ",676,,,,,676,676,676,676,,676,676,676,676,,,,,676,676,,,,985,985,985", "676,985,676,676,676,985,985,676,676,,985,,985,985,985,985,985,985,985", ",,,,,985,985,985,985,985,985,985,,,985,,,,,,,985,,,985,985,985,985,985", "985,985,985,,985,985,985,,985,985,985,985,985,,,,,,,,,,,,,,,,,,,,985", ",,985,,,985,985,,,985,,,,,,985,,,,,,,,,985,,,,,985,985,985,985,,985", "985,985,985,,,,,985,985,,,,673,673,673,985,673,985,985,985,673,673,985", "985,,673,,673,673,673,673,673,673,673,,,,,,673,673,673,673,673,673,673", ",,673,,,,,,,673,,,673,673,673,673,673,673,673,673,673,673,673,673,,673", "673,673,673,673,,,,,,,,,,,,,,,,,,,,673,,,673,,,673,673,,,673,,673,,673", ",673,,,673,,,,,,673,,,,,673,673,673,673,,673,673,673,673,,,,,673,673", ",,,672,672,672,673,672,673,673,673,672,672,673,673,,672,,672,672,672", "672,672,672,672,,,,,,672,672,672,672,672,672,672,,,672,,,,,,,672,,,672", "672,672,672,672,672,672,672,,672,672,672,,672,672,672,672,672,,,,,,", ",,,,,,,,,,,,,672,,,672,,,672,672,,,672,,,,,,672,,,,,,,,,672,,,,,672", "672,672,672,,672,672,672,672,,,,,672,672,,,,990,990,990,672,990,672", "672,672,990,990,672,672,,990,,990,990,990,990,990,990,990,,,,,,990,990", "990,990,990,990,990,,,990,,,,,,,990,,,990,990,990,990,990,990,990,990", ",990,990,990,,990,990,990,990,990,,,,,,,,,,,,,,,,,,,,990,,,990,,,990", "990,,,990,,990,,,,990,,,,,,,,,990,,,,,990,990,990,990,,990,990,990,990", ",,,,990,990,,,,671,671,671,990,671,990,990,990,671,671,990,990,,671", ",671,671,671,671,671,671,671,,,,,,671,671,671,671,671,671,671,,,671", ",,,,,,671,,,671,671,671,671,671,671,671,671,,671,671,671,,671,671,671", "671,671,,,,,,,,,,,,,,,,,,,,671,,,671,,,671,671,,,671,,671,,,,671,,,", ",,,,,671,,,,,671,671,671,671,,671,671,671,671,,,,,671,671,,,,,,,671", ",671,671,671,,,671,671,669,669,669,669,669,,,,669,669,,,,669,,669,669", "669,669,669,669,669,,,,,,669,669,669,669,669,669,669,,,669,,,,,,669", "669,,669,669,669,669,669,669,669,669,669,,669,669,669,,669,669,669,669", "669,,,,,,,,,,,,,,,,,,,,669,,,669,,,669,669,,,669,,669,,,,669,,,,,,,", ",669,,,,,669,669,669,669,,669,669,669,669,,,,,669,669,,,,35,35,35,669", "35,669,669,669,35,35,669,669,,35,,35,35,35,35,35,35,35,,,,,,35,35,35", "35,35,35,35,,,35,,,,,,,35,,,35,35,35,35,35,35,35,35,35,35,35,35,,35", "35,35,35,35,,,,,,,,,,,,,,,,,,,,35,,,35,,,35,35,,,35,,35,,35,,35,,,35", ",,,,,35,,,,,35,35,35,35,,35,35,35,35,,,,,35,35,,,,250,250,250,35,250", "35,35,35,250,250,35,35,,250,,250,250,250,250,250,250,250,,,,,,250,250", "250,250,250,250,250,,,250,,,,,,,250,,,250,250,250,250,250,250,250,250", ",250,250,250,,250,250,250,250,250,,,,,,,,,,,,,,,,,,,,250,,,250,,,250", "250,,,250,,,,,,250,,,,,,,,,250,,,,,250,250,250,250,,250,250,250,250", ",,,,250,250,,,,36,36,36,250,36,250,250,250,36,36,250,250,,36,,36,36", "36,36,36,36,36,,,,,,36,36,36,36,36,36,36,,,36,,,,,,,36,,,36,36,36,36", "36,36,36,36,36,36,36,36,,36,36,36,36,36,,,,,,,,,,,,,,,,,,,,36,,,36,", ",36,36,,,36,,36,,36,,36,,,36,,,,,,36,,,,,36,36,36,36,,36,36,36,36,,", ",,36,36,,,,638,638,638,36,638,36,36,36,638,638,36,36,,638,,638,638,638", "638,638,638,638,,,,,,638,638,638,638,638,638,638,,,638,,,,,,,638,,,638", "638,638,638,638,638,638,638,638,638,638,638,,638,638,638,638,638,,,", ",,,,,,,,,,,,,,,,638,,,638,,,638,638,,,638,,638,,638,,638,,,638,,,,,", "638,,,,,638,638,638,638,,638,638,638,638,,,,,638,638,,,,1009,1009,1009", "638,1009,638,638,638,1009,1009,638,638,,1009,,1009,1009,1009,1009,1009", "1009,1009,,,,,,1009,1009,1009,1009,1009,1009,1009,,,1009,,,,,,,1009", ",,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,,1009", "1009,1009,1009,1009,,,,,,,,,,,,,,,,,,,,1009,,,1009,,,1009,1009,,,1009", ",,,1009,,1009,,,1009,,,,,,1009,,,,,1009,1009,1009,1009,,1009,1009,1009", "1009,,,,,1009,1009,,,,628,628,628,1009,628,1009,1009,1009,628,628,1009", "1009,,628,,628,628,628,628,628,628,628,,,,,,628,628,628,628,628,628", "628,,,628,,,,,,,628,,,628,628,628,628,628,628,628,628,628,628,628,628", ",628,628,628,628,628,,,,,,,,,,,,,,,,,,,,628,,,628,,,628,628,,,628,,628", ",628,,628,,,628,,,,,,628,,,,,628,628,628,628,,628,628,628,628,,,,,628", "628,,,,627,627,627,628,627,628,628,628,627,627,628,628,,627,,627,627", "627,627,627,627,627,,,,,,627,627,627,627,627,627,627,,,627,,,,,,,627", ",,627,627,627,627,627,627,627,627,,627,627,627,,627,627,627,627,627", ",,,,,,,,,,,,,,,,,,,627,,,627,,,627,627,,,627,,627,,,,627,,,,,,,,,627", ",,,,627,627,627,627,,627,627,627,627,,,,,627,627,,,,818,818,818,627", "818,627,627,627,818,818,627,627,,818,,818,818,818,818,818,818,818,,", ",,,818,818,818,818,818,818,818,,,818,,,,,,,818,,,818,818,818,818,818", "818,818,818,,818,818,818,,818,818,818,818,818,,,,,,,,,,,,,,,,,,,,818", ",,818,,,818,818,,,818,,,,,,818,,,,,,,,,818,,,,,818,818,818,818,,818", "818,818,818,,,,,818,818,,,,614,614,614,818,614,818,818,818,614,614,818", "818,,614,,614,614,614,614,614,614,614,,,,,,614,614,614,614,614,614,614", ",,614,,,,,,,614,,,614,614,614,614,614,614,614,614,614,614,614,614,,614", "614,614,614,614,,,,,,,,,,,,,,,,,,,,614,,,614,,,614,614,,,614,,,,,,614", ",,614,,,,,,614,,,,,614,614,614,614,,614,614,614,614,,,,,614,614,,,,611", "611,611,614,611,614,614,614,611,611,614,614,,611,,611,611,611,611,611", "611,611,,,,,,611,611,611,611,611,611,611,,,611,,,,,,,611,,,611,611,611", "611,611,611,611,611,611,611,611,611,,611,611,611,611,611,,,,,,,,,,,", ",,,,,,,,611,,,611,,,611,611,,,611,,611,,,,611,,,611,,,,,,611,,,,,611", "611,611,611,,611,611,611,611,,,,,611,611,,,,239,239,239,611,239,611", "611,611,239,239,611,611,,239,,239,239,239,239,239,239,239,,,,,,239,239", "239,239,239,239,239,,,239,,,,,,,239,,,239,239,239,239,239,239,239,239", ",239,239,239,,239,239,239,239,239,,,,,,,,,,,,,,,,,,,,239,,,239,,,239", "239,,,239,,,,,,239,,,,,,,,,239,,,,,239,239,239,239,,239,239,239,239", ",,,,239,239,239,,,605,605,605,239,605,239,239,239,605,605,239,239,,605", ",605,605,605,605,605,605,605,,,,,,605,605,605,605,605,605,605,,,605", ",,,,,,605,,,605,605,605,605,605,605,605,605,,605,605,605,,605,605,605", "605,605,,,,,,,,,,,,,,,,,,,,605,,,605,,,605,605,,,605,,,,,,605,,,,,,", ",,605,,,,,605,605,605,605,,605,605,605,605,,,,,605,605,,,,1035,1035", "1035,605,1035,605,605,605,1035,1035,605,605,,1035,,1035,1035,1035,1035", "1035,1035,1035,,,,,,1035,1035,1035,1035,1035,1035,1035,,,1035,,,,,,", "1035,,,1035,1035,1035,1035,1035,1035,1035,1035,,1035,1035,1035,,1035", "1035,1035,1035,1035,,,,,,,,,,,,,,,,,,,,1035,,,1035,,,1035,1035,,,1035", ",,,,,1035,,,,,,,,,1035,,,,,1035,1035,1035,1035,,1035,1035,1035,1035", ",,,,1035,1035,,,,603,603,603,1035,603,1035,1035,1035,603,603,1035,1035", ",603,,603,603,603,603,603,603,603,,,,,,603,603,603,603,603,603,603,", ",603,,,,,,,603,,,603,603,603,603,603,603,603,603,,603,603,603,,603,603", "603,603,603,,,,,,,,,,,,,,,,,,,,603,,,603,,,603,603,,,603,,,,,,603,,", ",,,,,,603,,,,,603,603,603,603,,603,603,603,603,,,,,603,603,,,,600,600", "600,603,600,603,603,603,600,600,603,603,,600,,600,600,600,600,600,600", "600,,,,,,600,600,600,600,600,600,600,,,600,,,,,,,600,,,600,600,600,600", "600,600,600,600,,600,600,600,,600,600,600,600,600,,,,,,,,,,,,,,,,,,", ",600,,,600,,,600,600,,,600,,,,,,600,,,,,,,,,600,,,,,600,600,600,600", ",600,600,600,600,,,,,600,600,,,,238,238,238,600,238,600,600,600,238", "238,600,600,,238,,238,238,238,238,238,238,238,,,,,,238,238,238,238,238", "238,238,,,238,,,,,,,238,,,238,238,238,238,238,238,238,238,,238,238,238", ",238,238,238,238,238,,,,,,,,,,,,,,,,,,,,238,,,238,,,238,238,,,238,,", ",,,238,,,,,,,,,238,,,,,238,238,238,238,,238,238,238,238,,,,,238,238", ",,,237,237,237,238,237,238,238,238,237,237,238,238,,237,,237,237,237", "237,237,237,237,,,,,,237,237,237,237,237,237,237,,,237,,,,,,,237,,,237", "237,237,237,237,237,237,237,,237,237,237,,237,237,237,237,237,,,,,,", ",,,,,,,,,,,,,237,,,237,,,237,237,,,237,,,,,,237,,,,,,,,,237,,,,,237", "237,237,237,,237,237,237,237,,,,,237,237,,,,590,590,590,237,590,237", "237,237,590,590,237,237,,590,,590,590,590,590,590,590,590,,,,,,590,590", "590,590,590,590,590,,,590,,,,,,,590,,,590,590,590,590,590,590,590,590", "590,590,590,590,,590,590,590,590,590,,,,,,,,,,,,,,,,,,,,590,,,590,,", "590,590,,,590,,590,,590,,590,,,590,,,,,,590,,,,,590,590,590,590,,590", "590,590,590,,,,,590,590,,,,,,,590,,590,590,590,,,590,590,580,580,580", "580,580,,,,580,580,,,,580,,580,580,580,580,580,580,580,,,,,,580,580", "580,580,580,580,580,,,580,,,,,,580,580,580,580,580,580,580,580,580,580", "580,580,,580,580,580,,580,580,580,580,580,,,,,,,,,,,,,,,,,,,,580,,,580", ",,580,580,,,580,,580,,,,580,,,,,,,,,580,,,,,580,580,580,580,,580,580", "580,580,,,,,580,580,,,,,,580,580,,580,580,580,,,580,580,574,574,574", ",574,,,,574,574,,,,574,,574,574,574,574,574,574,574,,,,,,574,574,574", "574,574,574,574,,,574,,,,,,,574,,,574,574,574,574,574,574,574,574,,574", "574,574,,574,574,574,574,574,,,,,,,,,,,,,,,,,,,,574,,,574,,,574,574", ",,574,,,,,,574,,,,,,,,,574,,,,,574,574,574,574,,574,574,574,574,,,,", "574,574,,,,369,369,369,574,369,574,574,574,369,369,574,574,,369,,369", "369,369,369,369,369,369,,,,,,369,369,369,369,369,369,369,,,369,,,,,", ",369,,,369,369,369,369,369,369,369,369,,369,369,369,,369,369,369,369", "369,,,,,,,,,,,,,,,,,,,,369,,,369,,,369,369,,,369,,,,,,369,,,,,,,,,369", ",,,,369,369,369,369,,369,369,369,369,,,,,369,369,,,,46,46,46,369,46", "369,369,369,46,46,369,369,,46,,46,46,46,46,46,46,46,,,,,,46,46,46,46", "46,46,46,,,46,,,,,,,46,,,46,46,46,46,46,46,46,46,,46,46,46,,46,46,46", "46,46,,,,,,,,,,,,,,,,,,,,46,,,46,,,46,46,,,46,,,,,,46,,,,,,,,,46,,,", ",46,46,46,46,,46,46,46,46,,,,,46,46,,,,572,572,572,46,572,46,46,46,572", "572,46,46,,572,,572,572,572,572,572,572,572,,,,,,572,572,572,572,572", "572,572,,,572,,,,,,,572,,,572,572,572,572,572,572,572,572,572,572,572", "572,,572,572,572,572,572,,,,,,,,,,,,,,,,,,,,572,,,572,,,572,572,,,572", ",,,572,,572,,,572,,,,,,572,,,,,572,572,572,572,,572,572,572,572,,,,", "572,572,,,,570,570,570,572,570,572,572,572,570,570,572,572,,570,,570", "570,570,570,570,570,570,,,,,,570,570,570,570,570,570,570,,,570,,,,,", ",570,,,570,570,570,570,570,570,570,570,570,570,570,570,,570,570,570", "570,570,,,,,,,,,,,,,,,,,,,,570,,,570,,,570,570,,,570,,570,,570,,570", ",,570,,,,,,570,,,,,570,570,570,570,,570,570,570,570,,,,,570,570,,,,47", "47,47,570,47,570,570,570,47,47,570,570,,47,,47,47,47,47,47,47,47,,,", ",,47,47,47,47,47,47,47,,,47,,,,,,,47,,,47,47,47,47,47,47,47,47,,47,47", "47,,47,47,47,47,47,,,,,,,,,,,,,,,,,,,,47,,,47,,,47,47,,,47,,,,,,47,", ",,,,,,,47,,,,,47,47,47,47,,47,47,47,47,,,,,47,47,,,,560,560,560,47,560", "47,47,47,560,560,47,47,,560,,560,560,560,560,560,560,560,,,,,,560,560", "560,560,560,560,560,,,560,,,,,,,560,,,560,560,560,560,560,560,560,560", ",560,560,560,,560,560,560,560,560,,,,,,,,,,,,,,,,,,,,560,,,560,,,560", "560,,,560,,,,,,560,,,,,,,,,560,,,,,560,560,560,560,,560,560,560,560", ",,,,560,560,,,,49,49,49,560,49,560,560,560,49,49,560,560,,49,,49,49", "49,49,49,49,49,,,,,,49,49,49,49,49,49,49,,,49,,,,,,,49,,,49,49,49,49", "49,49,49,49,,49,49,49,,49,49,49,49,49,,,,,,,,,,,,,,,,,,,,49,,,49,,,49", "49,,,49,,,,,,49,,,,,,,,,49,,,,,49,49,49,49,,49,49,49,49,,,,,49,49,,", ",,,,49,,49,49,49,555,,49,49,,,,555,555,555,,,555,555,555,703,555,703", "703,703,703,703,,,555,555,555,,,,703,,,,,,555,555,,555,555,555,555,555", ",701,,701,701,701,701,701,703,,,,,,,,701,703,703,703,703,,,,703,,1140", ",1140,1140,1140,1140,1140,555,,,,,701,,555,1140,,,,555,555,701,701,701", "701,,,,701,,,,,,,,,1140,703,,,,555,555,,,,,1140,1140,,,,1140,,,,555", ",,555,,283,283,283,555,283,,701,,283,283,555,,,283,,283,283,283,283", "283,283,283,,,,,,283,283,283,283,283,283,283,,,283,,,,,,,283,,,283,283", "283,283,283,283,283,283,,283,283,283,,283,283,283,283,283,,,,,,,,,,", ",,,,,,,,,283,,,283,,,283,283,,,283,,,,,,283,,,,,,,,,283,,,,,283,283", "283,283,,283,283,283,283,,,,,283,283,,,,224,224,224,283,224,283,283", "283,224,224,283,283,,224,,224,224,224,224,224,224,224,,,,,,224,224,224", "224,224,224,224,,,224,,,,,,,224,,,224,224,224,224,224,224,224,224,224", "224,224,224,,224,224,224,224,224,,,,,,,,,,,,,,,,,,,,224,,,224,,,224", "224,,,224,,224,,224,,224,,,224,,,,,,224,,,,,224,224,224,224,,224,224", "224,224,,,,,224,224,,,,223,223,223,224,223,224,224,224,223,223,224,224", ",223,,223,223,223,223,223,223,223,,,,,,223,223,223,223,223,223,223,", ",223,,,,,,,223,,,223,223,223,223,223,223,223,223,,223,223,223,,223,223", "223,223,223,,,,,,,,,,,,,,,,,,,,223,,,223,,,223,223,,,223,,,,,,223,,", ",,,,,,223,,,,,223,223,223,223,,223,223,223,223,,,,,223,223,,,,50,50", "50,223,50,223,223,223,50,50,223,223,,50,,50,50,50,50,50,50,50,,,,,,50", "50,50,50,50,50,50,,,50,,,,,,,50,,,50,50,50,50,50,50,50,50,,50,50,50", ",50,50,50,50,50,,,,,,,,,,,,,,,,,,,,50,,,50,,,50,50,,,50,,,,,,50,,,,", ",,,,50,,,,,50,50,50,50,,50,50,50,50,,,,,50,50,,,,222,222,222,50,222", "50,50,50,222,222,50,50,,222,,222,222,222,222,222,222,222,,,,,,222,222", "222,222,222,222,222,,,222,,,,,,,222,,,222,222,222,222,222,222,222,222", ",222,222,222,,222,222,222,222,222,,,,,,,,,,,,,,,,,,,,222,,,222,,,222", "222,,,222,,,,,,222,,,,,,,,,222,,,,,222,222,222,222,,222,222,222,222", ",,,,222,222,,,,72,72,72,222,72,222,222,222,72,72,222,222,,72,,72,72", "72,72,72,72,72,,,,,,72,72,72,72,72,72,72,,,72,,,,,,,72,,,72,72,72,72", "72,72,72,72,,72,72,72,,72,72,72,72,72,,,,,,,,,,,,,,,,,,,,72,,,72,,,72", "72,,,72,,,,,,72,,,,,,,,,72,,,,,72,72,72,72,,72,72,72,72,,,,,72,72,,", ",71,71,71,72,71,72,72,72,71,71,72,72,,71,,71,71,71,71,71,71,71,,,,,", "71,71,71,71,71,71,71,,,71,,,,,,,71,,,71,71,71,71,71,71,71,71,,71,71", "71,,71,71,71,71,71,,,,,,,,,,,,,,,,,,,,71,,,71,,,71,71,,,71,,,,,,71,", ",,,,,,,71,,,,,71,71,71,71,,71,71,71,71,,,,,71,71,,,,436,436,436,71,436", "71,71,71,436,436,71,71,,436,,436,436,436,436,436,436,436,,,,,,436,436", "436,436,436,436,436,,,436,,,,,,,436,,,436,436,436,436,436,436,436,436", ",436,436,436,,436,436,436,436,436,,,,,,,,,,,,,,,,,,,,436,,,436,,,436", "436,,,436,,,,,,436,,,,,,,,,436,,,,,436,436,436,436,,436,436,436,436", ",,,,436,436,,,,68,68,68,436,68,436,436,436,68,68,436,436,,68,,68,68", "68,68,68,68,68,,,,,,68,68,68,68,68,68,68,,,68,,,,,,,68,,,68,68,68,68", "68,68,68,68,68,68,68,68,,68,68,68,68,68,,,,,,,,,,,,,,,,,,,,68,,,68,", ",68,68,,,68,,,,,,68,,,68,,,,,,68,,,,,68,68,68,68,,68,68,68,68,,,,,68", "68,,,,407,407,407,68,407,68,68,68,407,407,68,68,,407,,407,407,407,407", "407,407,407,,,,,,407,407,407,407,407,407,407,,,407,,,,,,,407,,,407,407", "407,407,407,407,407,407,,407,407,407,,407,407,407,407,407,,,,,,,,,,", ",,,,,,,,,407,,,407,,,407,407,,,407,,,,,,407,,,,,,,,,407,,,,,407,407", "407,407,,407,407,407,407,,,,,407,407,,,,847,847,847,407,847,407,407", "407,847,847,407,407,,847,,847,847,847,847,847,847,847,,,,,,847,847,847", "847,847,847,847,,,847,,,,,,,847,,,847,847,847,847,847,847,847,847,,847", "847,847,,847,847,847,847,847,,,,,,,,,,,,,,,,,,,,847,,,847,,,847,847", ",,847,,,,,,847,,,,,,,,,847,,,,,847,847,847,847,,847,847,847,847,,,,", "847,847,,,,276,276,276,847,276,847,847,847,276,276,847,847,,276,,276", "276,276,276,276,276,276,,,,,,276,276,276,276,276,276,276,,,276,,,,,", ",276,,,276,276,276,276,276,276,276,276,,276,276,276,,276,276,276,276", "276,,,,,,,,,,,,,,,,,,,,276,,,276,,,276,276,,,276,,,,,,276,,,,,,,,,276", ",,,,276,276,276,276,,276,276,276,276,,,,,276,276,,,,275,275,275,276", "275,276,276,276,275,275,276,276,,275,,275,275,275,275,275,275,275,,", ",,,275,275,275,275,275,275,275,,,275,,,,,,,275,,,275,275,275,275,275", "275,275,275,,275,275,275,,275,275,275,275,275,,,,,,,,,,,,,,,,,,,,275", ",,275,,,275,275,,,275,,,,,,275,,,,,,,,,275,,,,,275,275,275,275,,275", "275,275,275,,,,,275,275,,,,67,67,67,275,67,275,275,275,67,67,275,275", ",67,,67,67,67,67,67,67,67,,,,,,67,67,67,67,67,67,67,,,67,,,,,,,67,,", "67,67,67,67,67,67,67,67,67,67,67,67,,67,67,67,67,67,,,,,,,,,,,,,,,,", ",,,67,,,67,,,67,67,,,67,,67,,,,67,,,67,,,,,,67,,,,,67,67,67,67,,67,67", "67,67,,,,,67,67,,,,,,,67,,67,67,67,,,67,67,66,66,66,66,66,,,,66,66,", ",,66,,66,66,66,66,66,66,66,,,,,,66,66,66,66,66,66,66,,,66,,,,,,66,66", ",66,66,66,66,66,66,66,66,66,,66,66,66,,66,66,66,66,66,,,,,,,,,,,,,,", ",,,,,66,,,66,,,66,66,,,66,,66,,,,66,,,,,,,,,66,,,,,66,66,66,66,,66,66", "66,66,,,,,66,66,,,,299,299,299,66,299,66,66,66,299,299,66,66,,299,,299", "299,299,299,299,299,299,,,,,,299,299,299,299,299,299,299,,,299,,,,,", ",299,,,299,299,299,299,299,299,299,299,,299,299,299,,299,299,299,299", "299,,,,,,,,,,,,,,,,,,,,299,,,299,,,299,299,,,299,,,,,,299,,,,,,,,,299", ",,,,299,299,299,299,,299,299,299,299,,,,,299,299,,,,274,274,274,299", "274,299,299,299,274,274,299,299,,274,,274,274,274,274,274,274,274,,", ",,,274,274,274,274,274,274,274,,,274,,,,,,,274,,,274,274,274,274,274", "274,274,274,,274,274,274,,274,274,274,274,274,,,,,,,,,,,,,,,,,,,,274", ",,274,,,274,274,,,274,,,,,,274,,,,,,,,,274,,,,,274,274,274,274,,274", "274,274,274,,,,,274,274,,,,867,867,867,274,867,274,274,274,867,867,274", "274,,867,,867,867,867,867,867,867,867,,,,,,867,867,867,867,867,867,867", ",,867,,,,,,,867,,,867,867,867,867,867,867,867,867,,867,867,867,,867", "867,867,867,867,,,,,,,,,,,,,,,,,,,,867,,,867,,,867,867,,,867,,,,,,867", ",,,,,,,,867,,,,,867,867,867,867,,867,867,867,867,,,,,867,867,,,,24,24", "24,867,24,867,867,867,24,24,867,867,,24,,24,24,24,24,24,24,24,,,,,,24", "24,24,24,24,24,24,,,24,,,,,,,24,,,24,24,24,24,24,24,24,24,,24,24,24", ",24,24,24,24,24,,,,,,,,,,,,,,,,,,,,24,,,24,,,24,24,,,24,,,,,,24,,,,", ",,,,24,,,,,24,24,24,24,,24,24,24,24,,,,,24,24,,,,273,273,273,24,273", "24,24,24,273,273,24,24,,273,,273,273,273,273,273,273,273,,,,,,273,273", "273,273,273,273,273,,,273,,,,,,,273,,,273,273,273,273,273,273,273,273", ",273,273,273,,273,273,273,273,273,,,,,,,,,,,,,,,,,,,,273,,,273,,,273", "273,,,273,,,,,,273,,,,,,,,,273,,,,,273,273,273,273,,273,273,273,273", ",,,,273,273,,,,788,788,788,273,788,273,273,273,788,788,273,273,,788", ",788,788,788,788,788,788,788,,,,,,788,788,788,788,788,788,788,,,788", ",,,,,,788,,,788,788,788,788,788,788,788,788,788,788,788,788,,788,788", "788,788,788,,,,,,,,,,,,,,,,,,,,788,,,788,,,788,788,,,788,,788,,788,", "788,,,788,,,,,,788,,,,,788,788,788,788,,788,788,788,788,,,,,788,788", ",,,272,272,272,788,272,788,788,788,272,272,788,788,,272,,272,272,272", "272,272,272,272,,,,,,272,272,272,272,272,272,272,,,272,,,,,,,272,,,272", "272,272,272,272,272,272,272,,272,272,272,,272,272,272,272,272,,,,,,", ",,,,,,,,,,,,,272,,,272,,,272,272,,,272,,,,,,272,,,,,,,,,272,,,,,272", "272,272,272,,272,272,272,272,,,,,272,272,,,,875,875,875,272,875,272", "272,272,875,875,272,272,,875,,875,875,875,875,875,875,875,,,,,,875,875", "875,875,875,875,875,,,875,,,,,,,875,,,875,875,875,875,875,875,875,875", ",875,875,875,,875,875,875,875,875,,,,,,,,,,,,,,,,,,,,875,,,875,,,875", "875,,,875,,,,,,875,,,,,,,,,875,,,,,875,875,875,875,,875,875,875,875", ",,,,875,875,,,,306,306,306,875,306,875,875,875,306,306,875,875,,306", ",306,306,306,306,306,306,306,,,,,,306,306,306,306,306,306,306,,,306", ",,,,,,306,,,306,306,306,306,306,306,306,306,306,306,306,306,,306,306", "306,306,306,,,,,,,,,,,,,,,,,,,,306,,,306,,,306,306,,,306,,306,,306,", "306,,,306,,,,,,306,,,,,306,306,306,306,,306,306,306,306,,,,,306,306", ",,,888,888,888,306,888,306,306,306,888,888,306,306,,888,,888,888,888", "888,888,888,888,,,,,,888,888,888,888,888,888,888,,,888,,,,,,,888,,,888", "888,888,888,888,888,888,888,,888,888,888,,888,888,888,888,888,,,,,,", ",,,,,,,,,,,,,888,,,888,,,888,888,,,888,,,,,,888,,,,,,,,,888,,,,,888", "888,888,888,,888,888,888,888,,,,,888,888,,,,889,889,889,888,889,888", "888,888,889,889,888,888,,889,,889,889,889,889,889,889,889,,,,,,889,889", "889,889,889,889,889,,,889,,,,,,,889,,,889,889,889,889,889,889,889,889", ",889,889,889,,889,889,889,889,889,,,,,,,,,,,,,,,,,,,,889,,,889,,,889", "889,,,889,,,,,,889,,,,,,,,,889,,,,,889,889,889,889,,889,889,889,889", ",,,,889,889,,,,307,307,307,889,307,889,889,889,307,307,889,889,,307", ",307,307,307,307,307,307,307,,,,,,307,307,307,307,307,307,307,,,307", ",,,,,,307,,,307,307,307,307,307,307,307,307,307,307,307,307,,307,307", "307,307,307,,,,,,,,,,,,,,,,,,,,307,,,307,,,307,307,,,307,,307,,307,", "307,,,307,,,,,,307,,,,,307,307,307,307,,307,307,307,307,,,,,307,307", ",,,315,315,315,307,315,307,307,307,315,315,307,307,,315,,315,315,315", "315,315,315,315,,,,,,315,315,315,315,315,315,315,,,315,,,,,,,315,,,315", "315,315,315,315,315,315,315,315,315,315,315,,315,315,315,315,315,,,", ",,,,,,,,,,,,,,,,315,,,315,,,315,315,,,315,,315,,315,,315,,,315,,,,,", "315,,,,,315,315,315,315,,315,315,315,315,,,,,315,315,315,,,271,271,271", "315,271,315,315,315,271,271,315,315,,271,,271,271,271,271,271,271,271", ",,,,,271,271,271,271,271,271,271,,,271,,,,,,,271,,,271,271,271,271,271", "271,271,271,,271,271,271,,271,271,271,271,271,,,,,,,,,,,,,,,,,,,,271", ",,271,,,271,271,,,271,,,,,,271,,,,,,,,,271,,,,,271,271,271,271,,271", "271,271,271,,,,,271,271,,,,270,270,270,271,270,271,271,271,270,270,271", "271,,270,,270,270,270,270,270,270,270,,,,,,270,270,270,270,270,270,270", ",,270,,,,,,,270,,,270,270,270,270,270,270,270,270,,270,270,270,,270", "270,270,270,270,,,,,,,,,,,,,,,,,,,,270,,,270,,,270,270,,,270,,,,,,270", ",,,,,,,,270,,,,,270,270,270,270,,270,270,270,270,,,,,270,270,,,,269", "269,269,270,269,270,270,270,269,269,270,270,,269,,269,269,269,269,269", "269,269,,,,,,269,269,269,269,269,269,269,,,269,,,,,,,269,,,269,269,269", "269,269,269,269,269,,269,269,269,,269,269,269,269,269,,,,,,,,,,,,,,", ",,,,,269,,,269,,,269,269,,,269,,,,,,269,,,,,,,,,269,,,,,269,269,269", "269,,269,269,269,269,,,,,269,269,,,,322,322,322,269,322,269,269,269", "322,322,269,269,,322,,322,322,322,322,322,322,322,,,,,,322,322,322,322", "322,322,322,,,322,,,,,,,322,,,322,322,322,322,322,322,322,322,,322,322", "322,,322,322,322,322,322,,,,,,,,,,,,,,,,,,,,322,,,322,,,322,322,,,322", ",,,,,322,,,,,,,,,322,,,,,322,322,322,322,,322,322,322,322,,,,,322,322", ",,,324,324,324,322,324,322,322,322,324,324,322,322,,324,,324,324,324", "324,324,324,324,,,,,,324,324,324,324,324,324,324,,,324,,,,,,,324,,,324", "324,324,324,324,324,324,324,,324,324,324,,324,324,324,324,324,,,,,,", ",,,,,,,,,,,,,324,,,324,,,324,324,,,324,,,,,,324,,,,,,,,,324,,,,,324", "324,324,324,,324,324,324,324,,,,,324,324,,,,327,327,327,324,327,324", "324,324,327,327,324,324,,327,,327,327,327,327,327,327,327,,,,,,327,327", "327,327,327,327,327,,,327,,,,,,,327,,,327,327,327,327,327,327,327,327", ",327,327,327,,327,327,327,327,327,,,,,,,,,,,,,,,,,,,,327,,,327,,,327", "327,,,327,,,,,,327,,,,,,,,,327,,,,,327,327,327,327,,327,327,327,327", ",,,,327,327,,,,328,328,328,327,328,327,327,327,328,328,327,327,,328", ",328,328,328,328,328,328,328,,,,,,328,328,328,328,328,328,328,,,328", ",,,,,,328,,,328,328,328,328,328,328,328,328,,328,328,328,,328,328,328", "328,328,,,,,,,,,,,,,,,,,,,,328,,,328,,,328,328,,,328,,,,,,328,,,,,,", ",,328,,,,,328,328,328,328,,328,328,328,328,,,,,328,328,,,,268,268,268", "328,268,328,328,328,268,268,328,328,,268,,268,268,268,268,268,268,268", ",,,,,268,268,268,268,268,268,268,,,268,,,,,,,268,,,268,268,268,268,268", "268,268,268,,268,268,268,,268,268,268,268,268,,,,,,,,,,,,,,,,,,,,268", ",,268,,,268,268,,,268,,,,,,268,,,,,,,,,268,,,,,268,268,268,268,,268", "268,268,268,,,,,268,268,,,,267,267,267,268,267,268,268,268,267,267,268", "268,,267,,267,267,267,267,267,267,267,,,,,,267,267,267,267,267,267,267", ",,267,,,,,,,267,,,267,267,267,267,267,267,267,267,,267,267,267,,267", "267,267,267,267,,,,,,,,,,,,,,,,,,,,267,,,267,,,267,267,,,267,,,,,,267", ",,,,,,,,267,,,,,267,267,267,267,,267,267,267,267,,,,,267,267,,,,266", "266,266,267,266,267,267,267,266,266,267,267,,266,,266,266,266,266,266", "266,266,,,,,,266,266,266,266,266,266,266,,,266,,,,,,,266,,,266,266,266", "266,266,266,266,266,,266,266,266,,266,266,266,266,266,,,,,,,,,,,,,,", ",,,,,266,,,266,,,266,266,,,266,,,,,,266,,,,,,,,,266,,,,,266,266,266", "266,,266,266,266,266,,,,,266,266,,,,917,917,917,266,917,266,266,266", "917,917,266,266,,917,,917,917,917,917,917,917,917,,,,,,917,917,917,917", "917,917,917,,,917,,,,,,,917,,,917,917,917,917,917,917,917,917,,917,917", "917,,917,917,917,917,917,,,,,,,,,,,,,,,,,,,,917,,,917,,,917,917,,,917", ",,,,,917,,,,,,,,,917,,,,,917,917,917,917,,917,917,917,917,,,,,917,917", ",,,918,918,918,917,918,917,917,917,918,918,917,917,,918,,918,918,918", "918,918,918,918,,,,,,918,918,918,918,918,918,918,,,918,,,,,,,918,,,918", "918,918,918,918,918,918,918,,918,918,918,,918,918,918,918,918,,,,,,", ",,,,,,,,,,,,,918,,,918,,,918,918,,,918,,,,,,918,,,,,,,,,918,,,,,918", "918,918,918,,918,918,918,918,,,,,918,918,,,,919,919,919,918,919,918", "918,918,919,919,918,918,,919,,919,919,919,919,919,919,919,,,,,,919,919", "919,919,919,919,919,,,919,,,,,,,919,,,919,919,919,919,919,919,919,919", ",919,919,919,,919,919,919,919,919,,,,,,,,,,,,,,,,,,,,919,,,919,,,919", "919,,,919,,,,,,919,,,,,,,,,919,,,,,919,919,919,919,,919,919,919,919", ",,,,919,919,,,,497,497,497,919,497,919,919,919,497,497,919,919,,497", ",497,497,497,497,497,497,497,,,,,,497,497,497,497,497,497,497,,,497", ",,,,,,497,,,497,497,497,497,497,497,497,497,,497,497,497,,497,497,497", "497,497,,,,,,,,,,,,,,,,,,,,497,,,497,,,497,497,,,497,,,,,,497,,,,,,", ",,497,,,,,497,497,497,497,,497,497,497,497,,,,,497,497,,,,,,,497,,497", "497,497,,,497,497,133,133,133,133,133,,,,133,133,,,,133,,133,133,133", "133,133,133,133,,,,,,133,133,133,133,133,133,133,,,133,,,,,,133,133", ",133,133,133,133,133,133,133,133,133,,133,133,133,,133,133,133,133,133", ",,,,,,,,,,,,,,,,,,,133,,,133,,,133,133,,,133,,133,,,,133,,,,,,,,,133", ",,,,133,133,133,133,,133,133,133,133,,,,,133,133,,,,132,132,132,133", "132,133,133,133,132,132,133,133,,132,,132,132,132,132,132,132,132,,", ",,,132,132,132,132,132,132,132,,,132,,,,,,,132,,,132,132,132,132,132", "132,132,132,,132,132,132,,132,132,132,132,132,,,,,,,,,,,,,,,,,,,,132", ",,132,,,132,132,,,132,,,,,,132,,,,,,,,,132,,,,,132,132,132,132,,132", "132,132,132,,,,,132,132,,,,131,131,131,132,131,132,132,132,131,131,132", "132,,131,,131,131,131,131,131,131,131,,,,,,131,131,131,131,131,131,131", ",,131,,,,,,,131,,,131,131,131,131,131,131,131,131,,131,131,131,,131", "131,131,131,131,,,,,,,,,,,,,,,,,,,,131,,,131,,,131,131,,,131,,,,,,131", ",,,,,,,,131,,,,,131,131,131,131,,131,131,131,131,,,,,131,131,,,,130", "130,130,131,130,131,131,131,130,130,131,131,,130,,130,130,130,130,130", "130,130,,,,,,130,130,130,130,130,130,130,,,130,,,,,,,130,,,130,130,130", "130,130,130,130,130,,130,130,130,,130,130,130,130,130,,,,,,,,,,,,,,", ",,,,,130,,,130,,,130,130,,,130,,,,,,130,,,,,,,,,130,,,,,130,130,130", "130,,130,130,130,130,,,,,130,130,,,,1149,1149,1149,130,1149,130,130", "130,1149,1149,130,130,,1149,,1149,1149,1149,1149,1149,1149,1149,,,,", ",1149,1149,1149,1149,1149,1149,1149,,,1149,,,,,,,1149,,,1149,1149,1149", "1149,1149,1149,1149,1149,,1149,1149,1149,,1149,1149,1149,1149,1149,", ",,,,,,,,,,,,,,,,,,1149,,,1149,,,1149,1149,,,1149,,,,,,1149,,,,,,,,,1149", ",,,,1149,1149,1149,1149,,1149,1149,1149,1149,,,,,1149,1149,,,,1150,1150", "1150,1149,1150,1149,1149,1149,1150,1150,1149,1149,,1150,,1150,1150,1150", "1150,1150,1150,1150,,,,,,1150,1150,1150,1150,1150,1150,1150,,,1150,", ",,,,,1150,,,1150,1150,1150,1150,1150,1150,1150,1150,,1150,1150,1150", ",1150,1150,1150,1150,1150,,,,,,,,,,,,,,,,,,,,1150,,,1150,,,1150,1150", ",,1150,,,,,,1150,,,,,,,,,1150,,,,,1150,1150,1150,1150,,1150,1150,1150", "1150,,,,,1150,1150,,,,52,52,52,1150,52,1150,1150,1150,52,52,1150,1150", ",52,,52,52,52,52,52,52,52,,,,,,52,52,52,52,52,52,52,,,52,,,,,,,52,,", "52,52,52,52,52,52,52,52,,52,52,52,,52,52,52,52,52,,,,,,,,,,,,,,,,,,", ",52,,,52,,,52,52,,,52,,,,,,52,,,,,,,,,52,,,,,52,52,52,52,,52,52,52,52", ",,,,52,52,,,,129,129,129,52,129,52,52,52,129,129,52,52,,129,,129,129", "129,129,129,129,129,,,,,,129,129,129,129,129,129,129,,,129,,,,,,,129", ",,129,129,129,129,129,129,129,129,,129,129,129,,129,129,129,129,129", ",,,,,,,,,,,,,,,,,,,129,,,129,,,129,129,,,129,,,,,,129,,,,,,,,,129,,", ",,129,129,129,129,,129,129,129,129,,,,,129,129,,,,,,,129,,129,129,129", ",,129,129,124,124,124,124,124,,,,124,124,,,,124,,124,124,124,124,124", "124,124,,,,,,124,124,124,124,124,124,124,,,124,,,,,,124,124,124,124", "124,124,124,124,124,124,124,124,,124,124,124,,124,124,124,124,124,,", ",,,,,,,,,,,,,,,,,124,,,124,,,124,124,,,124,,124,,,,124,,,,,,,,,124,", ",,,124,124,124,124,,124,124,124,124,,,,,124,124,,,,,,124,124,,124,124", "124,,,124,124,1162,1162,1162,,1162,,,,1162,1162,,,,1162,,1162,1162,1162", "1162,1162,1162,1162,,,,,,1162,1162,1162,1162,1162,1162,1162,,,1162,", ",,,,,1162,,,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162", ",1162,1162,1162,1162,1162,,,,,,,,,,,,,,,,,,,,1162,,,1162,,,1162,1162", ",,1162,,1162,,1162,,1162,,,1162,,,,,,1162,,,,,1162,1162,1162,1162,,1162", "1162,1162,1162,,,,,1162,1162,,,,471,471,471,1162,471,1162,1162,1162", "471,471,1162,1162,,471,,471,471,471,471,471,471,471,,,,,,471,471,471", "471,471,471,471,,,471,,,,,,,471,,,471,471,471,471,471,471,471,471,,471", "471,471,,471,471,471,471,471,,,,,,,,,,,,,,,,,,,,471,,,471,,,471,471", ",,471,,,,,,471,,,,,,,,,471,,,,,471,471,471,471,,471,471,471,471,,,,", "471,471,,,,277,277,277,471,277,471,471,471,277,277,471,471,,277,,277", "277,277,277,277,277,277,,,,,,277,277,277,277,277,277,277,,,277,,,,,", ",277,,,277,277,277,277,277,277,277,277,,277,277,277,,277,277,277,277", "277,,,,,,,,,,,,,,,,,,,,277,,,277,,,277,277,,,277,,,,,,277,,,,,,,,,277", ",,,,277,277,277,277,,277,277,277,277,,,,,277,277,,,,,,,277,,277,277", "277,470,,277,277,,,,470,470,470,,,470,470,470,,470,,,,,,,,470,470,470", "470,470,,,,,,,,470,470,,470,470,470,470,470,,,,,,,,,,,,,,,,,,,,,,,470", "470,470,470,470,470,470,470,470,470,470,470,470,470,,,470,470,470,,", "470,,,470,,,470,470,,470,,470,,470,,470,470,,470,470,470,470,470,,470", "470,470,,,,,,,,,,,,,,470,,,470,470,470,470,,470,469,470,,,,,470,469", "469,469,,,469,469,469,,469,,,,,,,,469,469,469,469,469,,,,951,951,951", "951,469,469,,469,469,469,469,469,,,,,951,951,951,,,,,,,,,,,951,951,", ",951,469,469,469,469,469,469,469,469,469,469,469,469,469,469,,,469,469", "469,,,469,,,469,,,469,469,,469,,469,,469,,469,469,,469,469,469,469,469", ",469,469,469,,951,951,951,951,,951,951,951,951,,,,469,951,951,469,469", "469,469,,469,951,469,951,951,951,460,469,7,7,7,7,7,460,460,460,7,7,460", "460,460,7,460,7,7,7,7,7,7,7,460,460,460,460,,7,7,7,7,7,7,7,460,460,7", "460,460,460,460,460,7,7,7,7,7,7,7,7,7,7,7,7,,7,7,7,,7,7,7,7,7,460,460", "460,460,460,460,460,460,460,460,460,460,460,460,,,460,460,460,7,,460", "7,460,460,7,7,460,460,7,460,7,460,,460,7,460,460,,460,460,460,460,460", "7,460,460,460,,7,7,7,7,,7,7,7,7,,,,460,7,7,460,460,,460,,460,7,,7,7", "7,,460,7,7,75,75,75,,75,,,,75,75,,,,75,,75,75,75,75,75,75,75,,,,,,75", "75,75,75,75,75,75,,,75,,,,,,,75,,,75,75,75,75,75,75,75,75,,75,75,75", ",75,75,75,75,75,,,,,,,,,,,,,,,,,,,,75,,,75,,,75,75,,,75,,,,,,75,,,,", ",,,,75,,,,,75,75,75,75,,75,75,75,75,,,,,75,75,75,,,,,75,75,,75,75,75", "64,,75,75,,,,64,64,64,,,64,64,64,,64,,,,,,,,64,,64,64,64,,,,,,,,64,64", ",64,64,64,64,64,,,,,,,,,,,,,,,,,,,,,,,64,64,64,64,64,64,64,64,64,64", "64,64,64,64,,,64,64,64,,,64,,,64,,,64,64,,64,,64,,64,,64,64,,64,64,64", "64,64,,64,,64,,,,,,,,,,,,,,64,,,64,64,64,64,,64,,64,,278,278,278,64", "278,,,,278,278,,,,278,,278,278,278,278,278,278,278,,,,,,278,278,278", "278,278,278,278,,,278,,,,,,,278,,,278,278,278,278,278,278,278,278,,278", "278,278,,278,278,278,278,278,,,,,,,,,,,,,,,,,,,,278,,,278,,,278,278", ",,278,,,,,,278,,,,,,,,,278,,,,,278,278,278,278,,278,278,278,278,,,,", "278,278,,,,221,221,221,278,221,278,278,278,221,221,278,278,,221,,221", "221,221,221,221,221,221,,,,,,221,221,221,221,221,221,221,,,221,,,,,", ",221,,,221,221,221,221,221,221,221,221,,221,221,221,,221,221,221,221", "221,,,,,,,,,,,,,,,,,,,,221,,,221,,,221,221,,,221,,,,,,221,,,,,,,,,221", ",,,,221,221,221,221,,221,221,221,221,,,,,221,221,,,,220,220,220,221", "220,221,221,221,220,220,221,221,,220,,220,220,220,220,220,220,220,,", ",,,220,220,220,220,220,220,220,,,220,,,,,,,220,,,220,220,220,220,220", "220,220,220,,220,220,220,,220,220,220,220,220,,,,,,,,,,,,,,,,,,,,220", ",,220,,,220,220,,,220,,220,,,,220,,,,,,,,,220,,,,,220,220,220,220,,220", "220,220,220,,,,,220,220,,,,800,800,800,220,800,220,220,220,800,800,220", "220,,800,,800,800,800,800,800,800,800,,,,,,800,800,800,800,800,800,800", ",,800,,,,,,,800,,,800,800,800,800,800,800,800,800,,800,800,800,,800", "800,800,800,800,,,,,,,,,,,,,,,,,,,,800,,,800,,,800,800,,,800,,,,,,800", ",,,,,,,,800,,,,,800,800,800,800,,800,800,800,800,,,,,800,800,,,,797", "797,797,800,797,800,800,800,797,797,800,800,,797,,797,797,797,797,797", "797,797,,,,,,797,797,797,797,797,797,797,,,797,,,,,,,797,,,797,797,797", "797,797,797,797,797,,797,797,797,,797,797,797,797,797,,,,,,,,,,,,,,", ",,,,,797,,,797,,,797,797,,,797,,,,,,797,,,,,,,,,797,,,,,797,797,797", "797,,797,797,797,797,,,,,797,797,,,,386,386,386,797,386,797,797,797", "386,386,797,797,,386,,386,386,386,386,386,386,386,,,,,,386,386,386,386", "386,386,386,,,386,,,,,,,386,,,386,386,386,386,386,386,386,386,,386,386", "386,,386,386,386,386,386,,,,,,,,,,,,,,,,,,,,386,,,386,,,386,386,,,386", ",,,,,386,,,,,,,,,386,,,,,386,386,386,386,,386,386,386,386,,,,,386,386", ",,,524,524,524,386,524,386,386,386,524,524,386,386,,524,,524,524,524", "524,524,524,524,,,,,,524,524,524,524,524,524,524,,,524,,,,,,,524,,,524", "524,524,524,524,524,524,524,,524,524,524,,524,524,524,524,524,,,,,,", ",,,,,,,,,,,,,524,,,524,,,524,524,,,524,,,,,,524,,,,,,,,,524,,,,,524", "524,524,524,,524,524,524,524,,,,,524,524,,,,523,523,523,524,523,524", "524,524,523,523,524,524,,523,,523,523,523,523,523,523,523,,,,,,523,523", "523,523,523,523,523,,,523,,,,,,,523,,,523,523,523,523,523,523,523,523", ",523,523,523,,523,523,523,523,523,,,,,,,,,,,,,,,,,,,,523,,,523,,,523", "523,,,523,,,,,,523,,,,,,,,,523,,,,,523,523,523,523,,523,523,523,523", ",,,,523,523,,,,522,522,522,523,522,523,523,523,522,522,523,523,,522", ",522,522,522,522,522,522,522,,,,,,522,522,522,522,522,522,522,,,522", ",,,,,,522,,,522,522,522,522,522,522,522,522,,522,522,522,,522,522,522", "522,522,,,,,,,,,,,,,,,,,,,,522,,,522,,,522,522,,,522,,,,,,522,,,,,,", ",,522,,,,,522,522,522,522,,522,522,522,522,,,,,522,522,,,,520,520,520", "522,520,522,522,522,520,520,522,522,,520,,520,520,520,520,520,520,520", ",,,,,520,520,520,520,520,520,520,,,520,,,,,,,520,,,520,520,520,520,520", "520,520,520,520,520,520,520,,520,520,520,520,520,,,,,,,,,,,,,,,,,,,", "520,,,520,,,520,520,,,520,,520,,520,,520,,,520,,,,,,520,,,,,520,520", "520,520,,520,520,520,520,,,,,520,520,,,,219,219,219,520,219,520,520", "520,219,219,520,520,,219,,219,219,219,219,219,219,219,,,,,,219,219,219", "219,219,219,219,,,219,,,,,,,219,,,219,219,219,219,219,219,219,219,,219", "219,219,,219,219,219,219,219,,,,,,,,,,,,,,,,,,,,219,,,219,,,219,219", ",,219,,219,,,,219,,,,,,,,,219,,,,,219,219,219,219,,219,219,219,219,", ",,,219,219,,,,510,510,510,219,510,219,219,219,510,510,219,219,,510,", "510,510,510,510,510,510,510,,,,,,510,510,510,510,510,510,510,,,510,", ",,,,,510,,,510,510,510,510,510,510,510,510,,510,510,510,,510,510,510", "510,510,,,,,,,,,,,,,,,,,,,,510,,,510,,,510,510,,,510,,,,,,510,,,,,,", ",,510,,,,,510,510,510,510,,510,510,510,510,,,,,510,510,,,,1017,1017", "1017,510,1017,510,510,510,1017,1017,510,510,,1017,,1017,1017,1017,1017", "1017,1017,1017,,,,,,1017,1017,1017,1017,1017,1017,1017,,,1017,,,,,,", "1017,,,1017,1017,1017,1017,1017,1017,1017,1017,,1017,1017,1017,,1017", "1017,,,1017,,,,,,,,,,,,,,,,,,,,1017,,,1017,,,1017,1017,,,1017,,,,,,", ",,,,,,,,,,,,,1017,1017,1017,1017,,1017,1017,1017,1017,,,,,1017,1017", ",,,1081,1081,1081,1017,1081,1017,1017,1017,1081,1081,,,,1081,,1081,1081", "1081,1081,1081,1081,1081,,,,,,1081,1081,1081,1081,1081,1081,1081,,,1081", ",,,,,,1081,,,1081,1081,1081,1081,1081,1081,1081,1081,,1081,1081,1081", ",1081,1081,,,1081,,,,,,,,,,,,,,,,,,,,1081,,,1081,,,1081,1081,,,1081", ",,,,,,,,,,,,,,,,,,,1081,1081,1081,1081,,1081,1081,1081,1081,,,,,1081", "1081,,,,341,341,341,1081,341,1081,1081,1081,341,341,,,,341,,341,341", "341,341,341,341,341,,,,,,341,341,341,341,341,341,341,,,341,,,,,,,341", ",,341,341,341,341,341,341,341,341,,341,341,341,,341,341,,,341,,,,,,", ",,,,,,,,,,,,,341,,,341,,,341,341,,,341,,,1214,,1214,1214,1214,1214,1214", ",,,,,,,,1214,,341,341,341,341,,341,341,341,341,,,,,341,341,,,,341,,1214", "341,,341,341,341,588,588,588,,588,1214,1214,,588,588,1214,,,588,,588", "588,588,588,588,588,588,,,,,,588,588,588,588,588,588,588,,,588,,,,,", ",588,,,588,588,588,588,588,588,588,588,,588,588,588,,588,588,,,588,", ",,,,,,,,,,,,,,,,,,588,,,588,,,588,588,,,588,,,,,,,,,,,,,,,,,,,,588,588", "588,588,,588,588,588,588,,,,,588,588,,,,40,40,40,588,40,588,588,588", "40,40,,,,40,,40,40,40,40,40,40,40,,,,,,40,40,40,40,40,40,40,,,40,,,", ",,,40,,,40,40,40,40,40,40,40,40,,40,40,40,,40,40,,,40,,,,,,,,,,,,,,", ",,,,,40,,,40,,,40,40,,,40,,,1210,,1210,1210,1210,1210,1210,,,,,,,,,1210", ",40,40,40,40,,40,40,40,40,,,,,40,40,,,,40,,1210,40,,40,40,40,803,803", "803,,803,1210,1210,,803,803,1210,,,803,,803,803,803,803,803,803,803", ",,,,,803,803,803,803,803,803,803,,,803,,,,,,,803,,,803,803,803,803,803", "803,803,803,,803,803,803,,803,803,,,803,,,,,,,,,,,,,,,,,,,,803,,,803", ",,803,803,,,803,,,,,,,,,,,,,,,,,,,,803,803,803,803,,803,803,803,803", ",,,,803,803,,,,360,360,360,803,360,803,803,803,360,360,,,,360,,360,360", "360,360,360,360,360,,,,,,360,360,360,360,360,360,360,,,360,,,,,,,360", ",,360,360,360,360,360,360,360,360,,360,360,360,,360,360,,,360,,,,,,", ",,,,,,,,,,,,,360,,,360,,,360,360,,,360,,,,,,,,,,,,,,,,,,,,360,360,360", "360,,360,360,360,360,,,,,360,360,,,,1144,1144,1144,360,1144,360,360", "360,1144,1144,,,,1144,,1144,1144,1144,1144,1144,1144,1144,,,,,,1144", "1144,1144,1144,1144,1144,1144,,,1144,,,,,,,1144,,,1144,1144,1144,1144", "1144,1144,1144,1144,,1144,1144,1144,,1144,1144,,,1144,,,,,,,,,,,,,,", ",,,,,1144,,,1144,,,1144,1144,,,1144,,,,,,,,,,,,,,,,,,,,1144,1144,1144", "1144,,1144,1144,1144,1144,,,,,1144,1144,,,,77,77,77,1144,77,1144,1144", "1144,77,77,,,,77,,77,77,77,77,77,77,77,,,,,,77,77,77,77,77,77,77,,,77", ",,,,,,77,,,77,77,77,77,77,77,77,77,,77,77,77,,77,77,,,77,,,,,,,,,,,", ",,,,,77,,,77,,,77,,,77,77,,,77,,,,,,,,,,,,,,,,,,,,77,77,77,77,,77,77", "77,77,,,,,77,77,,,,814,814,814,77,814,77,77,77,814,814,,,,814,,814,814", "814,814,814,814,814,,,,,,814,814,814,814,814,814,814,,,814,,,,,,,814", ",,814,814,814,814,814,814,814,814,,814,814,814,,814,814,,,814,,,,,,", ",,,,,,,,,,,,,814,,,814,,,814,814,,,814,,,,,,,,,,,,,,,,,,,,814,814,814", "814,,814,814,814,814,,,,,814,814,,,,597,597,597,814,597,814,814,814", "597,597,,,,597,,597,597,597,597,597,597,597,,,,,,597,597,597,597,597", "597,597,,,597,,,,,,,597,,,597,597,597,597,597,597,597,597,,597,597,597", ",597,597,,,597,,,,,,,,,,,,,,,,,,,,597,,,597,,,597,597,,,597,,,,,,,,", ",,,,,,,,,,,597,597,597,597,,597,597,597,597,,,,,597,597,,,,39,39,39", "597,39,597,597,597,39,39,,,,39,,39,39,39,39,39,39,39,,,,,,39,39,39,39", "39,39,39,,,39,,,,,,,39,,,39,39,39,39,39,39,39,39,,39,39,39,,39,39,,", "39,,,,,,,,,,,,,,,,,,,,39,,,39,,,39,39,,,39,,39,,,,,,,,,,,,,,,,,,39,39", "39,39,,39,39,39,39,,,,,39,39,,,,76,76,76,39,76,39,39,39,76,76,,,,76", ",76,76,76,76,76,76,76,,,,,,76,76,76,76,76,76,76,,,76,,,,,,,76,,,76,76", "76,76,76,76,76,76,,76,76,76,,76,76,,,76,,,,,,,,,,,,,,,,,,,,76,,,76,", ",76,76,,,76,,76,,,,,,,,,,,,,,,,,,76,76,76,76,,76,76,76,76,,,,,76,76", ",,,78,78,78,76,78,76,76,76,78,78,,,,78,,78,78,78,78,78,78,78,,,,,,78", "78,78,78,78,78,78,,,78,,,,,,,78,,,78,78,78,78,78,78,78,78,,78,78,78", ",78,78,,,78,,,,,,,,,,,,,,,,,,,,78,,,78,,,78,78,,,78,,,,,,,,,,,,,,,,", ",,,78,78,78,78,,78,78,78,78,,,,,78,78,,,,,,,78,,78,78,78,10,10,10,10", "10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,,,,10,10", "10,10,10,10,10,10,10,10,,,,,,10,10,10,10,10,10,10,10,10,10,,10,,,,,", ",,10,10,,10,10,10,10,10,10,10,,,10,10,,,,10,10,10,10,,,,,,,,,,,,,,10", "10,,10,10,10,10,10,10,10,10,10,10,10,10,,,10,10,,,,,,,,,,,,,,10,427", "427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427", "427,427,427,427,427,427,,,,427,427,427,427,427,427,427,427,427,427,", ",,,,427,427,427,427,427,427,427,427,427,,,427,,,,,,,,427,427,,427,427", "427,427,427,427,427,,,427,427,,,,427,427,427,427,,,,,,,,,,,,,,427,427", ",427,427,427,427,427,427,427,427,427,427,427,427,,,427,427,,,,,,,,,", ",,,,427,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667", "667,667,667,667,667,667,667,667,667,,,,667,667,667,667,667,667,667,667", "667,667,,,,,,667,667,667,667,667,667,667,667,667,,,667,,,,,,,,667,667", ",667,667,667,667,667,667,667,,,667,667,,,,667,667,667,667,,,,,,,,,,", ",,,667,667,,667,667,667,667,667,667,667,667,667,667,667,667,,,667,667", ",,,,,,,,,,,,,667,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11", "11,11,11,11,11,11,11,,,,11,11,11,11,11,11,11,11,11,11,,,,,,11,11,11", "11,11,11,11,11,11,,,11,,,,,,,,11,11,,11,11,11,11,11,11,11,,,11,11,,", ",11,11,11,11,,,,,,,,,,,,,,11,11,,11,11,11,11,11,11,11,11,11,11,11,11", ",,11,11,,,,,,,,,,,,,,11,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26", "26,26,26,26,26,26,26,26,26,,,,26,26,26,26,26,26,26,26,26,26,,,,,,26", "26,26,26,26,26,26,26,26,26,26,26,,26,,,,,,26,26,,26,26,26,26,26,26,26", ",,26,26,,,,26,26,26,26,,,,,,26,,,,,,,,26,26,,26,26,26,26,26,26,26,26", "26,26,26,26,,,26,753,753,753,753,,,,,,1026,,1026,1026,1026,1026,1026", "753,753,753,753,,,,753,1026,,,,,753,753,,,753,,,,,,,,,,,,,1026,,,,,", ",753,,,753,1026,1026,,753,,1026,753,,,,,,,,,,,,,,,,753,,,,753,753,753", "753,,753,753,753,753,,,,,753,753,1205,1205,1205,1205,1026,,753,,753", "753,753,,,753,753,,1205,1205,1205,1205,,,1208,1205,1208,1208,1208,1208", "1208,1205,1205,,,1205,,,,1208,,,,,,,,,,,,,,,,1205,,,1205,,,1208,1205", ",,1205,,,,,1208,1208,1208,1208,,,,1208,,,,1205,,,,1205,1205,1205,1205", ",1205,1205,1205,1205,,,,,1205,1205,1129,1129,1129,1129,,,1205,,1205", "1205,1205,,,1205,1205,,1129,1129,1129,1129,,,1138,1129,1138,1138,1138", "1138,1138,1129,1129,,,1129,,,,1138,,,,,,,,,,,,,,,,1129,,,1129,,,1138", "1129,,,1129,,1129,,,1138,1138,1138,1138,,,,1138,,,,1129,,,,1129,1129", "1129,1129,,1129,1129,1129,1129,,,,,1129,1129,989,989,989,989,,,1129", ",1129,1129,1129,,,1129,1129,,989,989,989,989,,,,989,989,,,,,989,989", ",,989,989,,,,,,,,,,,,,,,,,,,989,,,989,,,,989,,,989,,989,,,,,,,989,,", ",,,,989,,,,989,989,989,989,,989,989,989,989,,,,,989,989,942,942,942", "942,,,989,,989,989,989,,,989,989,,942,942,942,942,,,1135,942,1135,1135", "1135,1135,1135,942,942,,,942,,,,1135,,,,,,,,,,,,,,,,942,,,942,,,1135", "942,,,942,,,,,1135,1135,1135,1135,,,,1135,,,,942,,,,942,942,942,942", ",942,942,942,942,,,,,942,942,924,924,924,924,,,942,,942,942,942,,,942", "942,,924,924,924,924,,,1231,924,1231,1231,1231,1231,1231,924,924,,,924", ",,,1231,,,,,,,,,,,,,,,,924,,,924,,,1231,924,,,924,,924,,,,,1231,1231", ",,,1231,,,,924,,,,924,924,924,924,,924,924,924,924,,,,,924,924,745,745", "745,745,,,924,,924,924,924,,,924,924,,745,745,745,745,,,,745,,,,,,745", "745,,,745,,,,,,,,,,,,,,,,,,,,745,,,745,,,,745,,,745,,745,,,,,,,1166", ",1166,1166,1166,1166,1166,745,,,,745,745,745,745,1166,745,745,745,745", ",,,,745,745,745,943,943,943,943,,745,,745,745,745,1166,,745,745,,,943", "943,943,943,,1166,1166,943,,,1166,,,943,943,,,943,,,,,,,,,,,,,,,,,,", ",943,,,943,,,,943,,,943,,,1166,,,,,,,,,,,,,943,,,,943,943,943,943,,943", "943,943,943,,,,,943,943,930,930,930,930,,,943,,943,943,943,,,943,943", ",930,930,930,930,,,,930,930,,,,,930,930,,,930,930,,,,,,,,,,,,,,,,,,", "930,,,930,,,,930,,,930,,930,,,,,,,930,,,,,,,930,,,,930,930,930,930,", "930,930,930,930,,,,,930,930,929,929,929,929,,,930,,930,930,930,,,930", "930,,929,929,929,929,,,,929,929,,,,,929,929,,,929,929,,,,,,,,,,,,,,", ",,,,929,,,929,,,,929,,,929,,929,,,,,,,929,,,,,,,929,,,,929,929,929,929", ",929,929,929,929,,,,,929,929,,,,,,,929,,929,929,929,,,929,929,780,780", "780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780", "780,780,780,780,780,,,,780,780,780,780,780,780,780,780,780,780,,,,,", "780,780,780,780,780,780,780,780,780,,,780,,,,,,,,780,780,,780,780,780", "780,780,780,780,,,780,780,,,,780,780,780,780,,,,,,,,,,,,,,780,780,,780", "780,780,780,780,780,780,780,780,780,780,780,,,780,528,528,528,528,,", "1212,,1212,1212,1212,1212,1212,,,,528,528,528,528,,1212,,528,528,,,", ",528,528,,,528,528,,,,,,,,,1212,,,,,,,,,,528,1212,1212,528,,,1212,528", ",,528,,528,,,,,,,528,,,,,,,528,,,,528,528,528,528,,528,528,528,528,", ",,,528,528,527,527,527,527,,,528,,528,528,528,,,528,528,,527,527,527", "527,,,,527,527,,,,,527,527,,,527,527,,,,,,,,,,,,,,,,,,,527,,,527,,,", "527,,,527,,527,,,,,,,527,,,,,,,527,,,,527,527,527,527,,527,527,527,527", ",,,,527,527,1173,1173,1173,1173,,,527,,527,527,527,,,527,527,,1173,1173", "1173,1173,,,,1173,,,,,,1173,1173,,,1173,,,,,,,,,,,,,,,,,,,,1173,,,1173", ",,,1173,,,1173,,,,,,,,,,,,,,,,1173,,,,1173,1173,1173,1173,,1173,1173", "1173,1173,,,,,1173,1173,1116,1116,1116,1116,,,1173,,1173,1173,1173,", ",1173,1173,,1116,1116,1116,1116,,,,1116,,,,,,1116,1116,,,1116,,,,,,", ",,,,,,,,,,,,,1116,,,1116,,,,1116,,,1116,,,,,,,,,,,,,,,,1116,,,,1116", "1116,1116,1116,,1116,1116,1116,1116,,,,,1116,1116,926,926,926,926,,", "1116,,1116,1116,1116,,,1116,1116,,926,926,926,926,,,,926,,,,,,926,926", ",,926,,,,,,,,,,,,,,,,,,,,926,,,926,,,,926,,,926,,,,,,,,,,,,,,,,926,", ",,926,926,926,926,,926,926,926,926,,,,,926,926,1125,1125,1125,1125,", ",926,,926,926,926,,,926,926,,1125,1125,1125,1125,,,,1125,,,,,,1125,1125", ",,1125,,,,,,,,,,,,,,,,,,,,1125,,,1125,,,,1125,,,1125,,,,,,,,,,,,,,,", "1125,,,,1125,1125,1125,1125,,1125,1125,1125,1125,,,,,1125,1125,936,936", "936,936,,,1125,,1125,1125,1125,,,1125,1125,,936,936,936,936,,,,936,", ",,,,936,936,,,936,,,,,,,,763,763,763,763,,,,,,,,,936,,,936,763,763,763", "936,,,936,,936,,,,,763,763,,,763,,,,,936,,,,936,936,936,936,,936,936", "936,936,,,,,936,936,,,,,,,936,,936,936,936,,,936,936,233,,233,233,233", "233,233,,,,,763,763,763,763,233,763,763,763,763,,,,,763,763,950,950", "950,950,,,763,,763,763,763,233,,,,,950,950,950,,233,233,233,233,,,,233", ",950,950,,,950,,,,,,,,,,,,705,,705,705,705,705,705,,,,,,,,,705,,,,,", "234,233,234,234,234,234,234,,,,,,,,,234,705,950,950,950,950,,950,950", "950,950,,705,705,,950,950,705,,,,,234,950,,950,950,950,,,,234,234,234", "234,,,409,234,409,409,409,409,409,,1020,,1020,1020,1020,1020,1020,409", ",,,,705,,,1020,,644,,644,644,644,644,644,,,,,,409,409,,644,234,,,,1020", "409,409,409,409,,,,409,1020,1020,1020,1020,,,,1020,644,,,,,,,,,644,644", "644,644,,,1024,644,1024,1024,1024,1024,1024,,,,,,,,,1024,409,,,,,,,", "1020,,,,,,,,,,,,,1024,,,,644,,,,,,,1024,1024,675,675,,1024,675,,,,,", ",,675,675,,675,675,675,675,675,675,675,,,675,675,,,,675,675,675,675", ",,,,,675,,,,,1024,,,675,675,,675,675,675,675,675,675,675,675,675,675", "675,675,636,636,675,,636,,,,,,,,636,636,,636,636,636,636,636,636,636", ",,636,636,,,,636,636,636,636,,,,,,636,,,,,,,,636,636,,636,636,636,636", "636,636,636,636,636,636,636,636,629,629,636,,629,,,,,,,,629,629,,629", "629,629,629,629,629,629,,,629,629,,,,629,629,629,629,,,,,,629,,,,,,", ",629,629,,629,629,629,629,629,629,629,629,629,629,629,629,226,226,629", ",226,,,,,,,,226,226,,226,226,226,226,226,226,226,,,226,226,,,,226,226", "226,226,,,,,,226,,,,,,,,226,226,,226,226,226,226,226,226,226,226,226", "226,226,226,602,602,226,,602,,,,,,,,602,602,,602,602,602,602,602,602", "602,,,602,602,,,,602,602,602,602,,,,,,602,,,,,,,,602,602,,602,602,602", "602,602,602,602,602,602,602,602,602,637,637,602,,637,,,,,,,,637,637", ",637,637,637,637,637,637,637,,,637,637,,,,637,637,637,637,,,,,,637,", ",,,,,,637,637,,637,637,637,637,637,637,637,637,637,637,637,637,225,225", "637,,225,,,,,,,,225,225,,225,225,225,225,225,225,225,,,225,225,,,,225", "225,225,225,,,,,,225,,,,,,,,225,225,,225,225,225,225,225,225,225,225", "225,225,225,225,302,302,225,,302,,,,,,,,302,302,,302,302,302,302,302", "302,302,,,302,302,,,,302,302,302,302,,,,,,,,,,,,,,302,302,,302,302,302", "302,302,302,302,302,302,302,302,302,519,519,302,,519,,,,,,,,519,519", ",519,519,519,519,519,519,519,,,519,519,,,,519,519,519,519,,,,,,519,", ",,,,,,519,519,,519,519,519,519,519,519,519,519,519,519,519,519,518,518", "519,,518,,,,,,,,518,518,,518,518,518,518,518,518,518,,,518,518,,,,518", "518,518,518,,,,,,518,,,,,,,,518,518,,518,518,518,518,518,518,518,518", "518,518,518,518,591,591,518,,591,,,,,,,,591,591,,591,591,591,591,591", "591,591,,,591,591,,,,591,591,591,591,,,,,,591,,,,,,,,591,591,,591,591", "591,591,591,591,591,591,591,591,591,591,592,592,591,,592,,,,,,,,592", "592,,592,592,592,592,592,592,592,,,592,592,,,,592,592,592,592,,,,,,592", ",,,,,,,592,592,,592,592,592,592,592,592,592,592,592,592,592,592,1163", "1163,592,,1163,,,,,,,,1163,1163,,1163,1163,1163,1163,1163,1163,1163", ",,1163,1163,,,,1163,1163,1163,1163,,,,,,1163,,,,,,,,1163,1163,,1163", "1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,674,674,1163", ",674,,,,,,,,674,674,,674,674,674,674,674,674,674,,,674,674,,,,674,674", "674,674,,,,,,674,,,,,,,,674,674,,674,674,674,674,674,674,674,674,674", "674,674,674,1164,1164,674,,1164,,,,,,,,1164,1164,,1164,1164,1164,1164", "1164,1164,1164,,,1164,1164,,,,1164,1164,1164,1164,,,,,,1164,,,,,,,,1164", "1164,,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,630", "630,1164,,630,,,,,,,,630,630,,630,630,630,630,630,630,630,,,630,630", ",,,630,630,630,630,,,,,,630,,,,,,,,630,630,,630,630,630,630,630,630", "630,630,630,630,630,630,1188,1188,630,,1188,,,,,,,,1188,1188,,1188,1188", "1188,1188,1188,1188,1188,,,1188,1188,,,,1188,1188,1188,1188,,,,,,1188", ",,,,,,,1188,1188,,1188,1188,1188,1188,1188,1188,1188,1188,1188,1188", "1188,1188,601,601,1188,,601,,,,,,,,601,601,,601,601,601,601,601,601", "601,,,601,601,,,,601,601,601,601,,,,,,601,,,,,,,,601,601,,601,601,601", "601,601,601,601,601,601,601,601,601,,,601"]; + racc_action_check = (arr = $$$('Array').$new(28717, nil)); idx = 0; $send(clist, 'each', [], function $Ruby31$4(str){ @@ -20940,10 +20893,10 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ $writer[$rb_minus($writer["length"], 1)]; }; return (idx = $rb_plus(idx, 1));}, 1);}, 1); - racc_action_pointer = [nil, 1530, 1699, 101, nil, 482, nil, 20901, 1396, 63, 25127, 25255, 87, nil, 108, 123, 470, 190, 962, 122, 162, 700, nil, -35, 16902, 1267, 26590, 276, nil, 598, nil, 307, 8439, 8549, 8814, 10017, 10148, nil, 4147, 24860, 24328, nil, 206, 690, 444, 339, 12923, 13185, 283, 21962, 19796, 979, 20758, 303, 845, nil, nil, nil, nil, nil, nil, nil, nil, nil, 15455, nil, 15183, 15040, 14385, 148, nil, 14123, 21176, nil, nil, 13980, 23542, 24066, 24197, nil, nil, nil, nil, nil, nil, 584, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 110, nil, nil, 222, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 20070, nil, nil, nil, nil, 19927, 19665, 19272, 19141, 19010, nil, 4867, nil, 585, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 302, nil, 979, 22093, 21700, 21569, 21307, 13849, 13718, 28287, 27921, nil, nil, 315, 2707, 332, nil, 27662, 580, 338, 1267, 11851, 11196, 11065, nil, nil, 1106, 138, 142, 453, 193, 372, 446, nil, 9886, 386, 299, 2419, 449, nil, nil, 7250, 7119, 6583, 6452, 6321, 6190, 6059, 5535, 18343, 18212, 17688, 17557, 17426, 16509, 16116, 15985, 15592, 14909, 14778, 21831, 21438, 13447, nil, nil, nil, nil, 13316, nil, nil, 532, 308, 563, 587, 488, 673, 710, 747, 755, 354, nil, nil, nil, 15854, nil, nil, 27860, nil, nil, 472, 17033, 17164, nil, nil, nil, nil, nil, nil, nil, 17295, nil, 2131, nil, 478, 480, nil, 17819, 534, 17950, nil, nil, 18081, 5797, nil, nil, 563, nil, 6726, 1540, 517, 497, 5011, 533, 582, 554, 23403, 3859, 873, 879, 878, 644, 995, nil, 618, 585, -24, 628, 632, nil, nil, nil, 644, 275, 608, 23141, nil, 666, 972, 4435, 5273, 693, nil, 709, 12530, nil, 12661, 2275, 1684, 653, nil, 593, 597, 690, 692, 468, 725, nil, 719, 35, 36, 22748, 4723, 4579, 72, 797, 686, -18, -19, 411, 783, 25, 822, nil, nil, 1114, 802, 342, nil, 806, nil, 742, 15314, nil, 13552, nil, 399, 366, 402, 469, 410, -32, -34, 394, nil, nil, nil, nil, nil, nil, nil, 740, 24999, nil, nil, nil, nil, 742, nil, 813, 731, 14254, 733, nil, nil, 723, nil, 788, -56, 835, nil, nil, 1411, nil, nil, nil, nil, nil, 1699, 750, nil, 749, 751, 388, 425, 21042, nil, nil, nil, 0, 695, 796, nil, nil, 20621, 20485, 20344, 887, 887, nil, nil, 768, 782, 786, nil, nil, 790, 792, 793, nil, nil, nil, nil, nil, nil, nil, nil, nil, 783, 3269, nil, nil, 18867, nil, nil, nil, 0, nil, nil, nil, 880, nil, nil, 882, 571, 23010, 926, nil, nil, nil, -26, nil, 859, 28226, 28043, 22879, -82, 22617, 22486, 22355, 806, 807, 26997, 26899, 3859, 4867, 3322, 1018, 887, 888, 893, 894, 5404, 5535, 5666, 5142, 4723, 4579, 4291, 4147, 4003, 3455, 3311, 3715, 3427, 2275, 5011, nil, 44, nil, 13588, nil, nil, nil, nil, 13054, 843, 841, 845, nil, nil, nil, 848, nil, nil, 12792, nil, 12399, nil, 12268, nil, 327, nil, nil, nil, 12125, 1108, nil, 858, 858, nil, nil, 859, 23804, 863, 11982, 28348, 28409, 968, 914, nil, nil, 23935, 871, nil, 11720, 28775, 28836, 11589, 3571, 2707, 11327, 996, 877, 926, nil, 10934, nil, nil, 10803, nil, nil, nil, 3571, 1007, nil, 3427, 90, 1013, 1039, 11, 1044, 10672, 10541, 28470, 28592, 7, nil, nil, 893, nil, 28714, 28653, 10279, nil, nil, 60, 1843, nil, 692, nil, nil, nil, nil, 1177, nil, nil, nil, 938, nil, nil, 369, nil, 324, nil, nil, 924, nil, 926, nil, nil, nil, 25383, nil, 9755, 929, 9612, 9481, 9219, 28531, 28165, 8957, 8683, 724, 972, 8036, 7905, 7774, 7643, 972, nil, nil, 7512, 7381, 973, nil, 1030, 1555, 1061, 6988, nil, nil, 788, nil, nil, 269, 27654, nil, 27562, nil, 26660, nil, 6857, nil, 3298, nil, 944, 945, 1253, 951, nil, nil, nil, nil, nil, nil, 1040, 1843, nil, nil, nil, 339, 360, 473, 334, 955, 5928, 5666, nil, -72, nil, nil, nil, nil, 981, nil, nil, nil, -34, 26447, 189, nil, 958, 1041, 960, nil, nil, 26673, nil, nil, 1, nil, nil, 675, nil, nil, 27332, 27562, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 1447, 590, nil, nil, 966, 26816, nil, 1094, nil, 1078, -13, nil, nil, 16247, nil, 993, 1000, 1102, nil, 980, nil, 1043, 14647, nil, nil, 22224, nil, 429, 24598, 998, nil, 1002, 233, 250, 1046, 181, 1139, 1047, 1026, 24729, nil, 1099, 249, nil, nil, nil, 68, 614, nil, 1165, nil, nil, nil, nil, nil, 1183, 1185, nil, nil, 26, 1065, 8, -5, 232, -4, 1123, 970, 1112, nil, 1072, 2851, 14516, nil, 1195, -25, 1080, nil, nil, nil, nil, nil, 2563, nil, nil, nil, nil, nil, nil, nil, nil, 1079, 15723, 1083, 416, 392, 583, 834, nil, 1987, 16378, nil, 1084, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 16640, 16771, 1211, nil, 3715, 1088, 1135, nil, nil, 1092, nil, 1176, nil, nil, 1096, 1104, nil, 1109, 1114, nil, 1116, nil, nil, 1120, 1109, 3557, nil, nil, 18474, 18605, 18736, 5142, 5273, 5404, 377, 26349, 1202, 26251, -68, 97, 26153, 26055, 335, -69, 1125, 1127, nil, 25859, nil, 1127, 902, nil, 1151, 25761, 25663, nil, 498, 1178, 331, nil, nil, 27464, 27430, nil, nil, nil, nil, 8167, nil, nil, nil, nil, nil, 8298, nil, nil, 1165, nil, nil, 1162, 1146, nil, nil, 763, 2131, nil, nil, nil, nil, 1146, 136, nil, nil, nil, 1271, nil, 9088, 1274, nil, nil, 25565, 9350, 4291, -1, 1283, nil, 1284, -77, 1411, nil, nil, nil, nil, 1159, 1205, 1176, 1176, 227, nil, nil, 10410, 3139, 2563, nil, 2995, nil, nil, -10, 23272, nil, nil, 27734, nil, 27716, nil, 27680, nil, 27588, nil, nil, nil, nil, 1190, 1194, 2995, 2851, 11458, nil, 1211, nil, nil, nil, nil, 1217, 1218, 1221, 1223, 1227, 1230, nil, nil, nil, 1274, 1230, 121, nil, 1241, nil, nil, -70, 1246, nil, nil, nil, nil, nil, nil, 1290, 2419, 1987, nil, nil, 1248, 1253, nil, 1258, 1259, 1260, nil, 1285, 1267, 1256, 23673, nil, nil, nil, nil, 9, nil, 13, 17, nil, 268, nil, nil, nil, 1393, 4003, 3139, 2117, nil, nil, nil, 1555, 32, 33, 667, 1353, 34, nil, 1276, 1285, 1286, 1287, 3308, 3413, 27193, nil, nil, nil, nil, nil, nil, nil, 1290, 25467, nil, 257, nil, 27291, nil, nil, 1300, nil, nil, 25666, nil, nil, 13607, nil, 23450, nil, nil, 1315, 24467, 1116, 1370, 3283, nil, 19403, 19534, nil, nil, nil, nil, 1314, 1438, 609, nil, nil, nil, 1441, 20213, 28104, 27982, 79, 13581, nil, nil, nil, nil, 1317, 1318, 27095, 1319, nil, nil, 1320, nil, nil, 1334, 1338, 1355, 1358, nil, 1359, nil, 555, 27799, nil, 574, 4435, nil, nil, nil, nil, nil, 1973, nil, 1365, 109, 142, 143, 221, 1364, 25957, 1372, nil, 25470, nil, 25862, nil, 25764, nil, 24375, nil, nil, 1418, 1421, nil, 375, nil, 145, nil, 1382, 1390, 1391, 1392, nil, nil, nil, 25960, nil, nil, nil, nil, -104, nil]; - racc_action_default = [-1, -738, -4, -738, -2, -723, -5, -738, -8, -738, -738, -738, -738, -31, -738, -738, -36, -738, -738, -632, -632, -310, -52, -725, -738, -61, -738, -69, -70, -71, -75, -286, -286, -286, -323, -350, -351, -87, -13, -91, -99, -101, -738, -619, -620, -738, -738, -738, -738, -738, -738, -239, -738, -725, -257, -301, -302, -303, -304, -305, -306, -307, -308, -309, -711, -312, -316, -737, -700, -331, -333, -738, -738, -63, -63, -723, -738, -738, -738, -352, -353, -355, -412, -556, -557, -558, -559, -580, -562, -563, -582, -584, -567, -572, -576, -578, -594, -595, -596, -580, -598, -600, -601, -602, -603, -709, -608, -609, -710, -611, -612, -613, -614, -615, -616, -617, -618, -623, -624, 1231, -3, -724, -733, -734, -735, -7, -738, -738, -738, -738, -738, -9, -4, -19, -738, -130, -131, -132, -133, -134, -135, -136, -140, -141, -142, -143, -144, -145, -146, -147, -148, -149, -150, -151, -152, -153, -154, -155, -156, -157, -158, -159, -160, -161, -162, -163, -164, -165, -166, -167, -168, -169, -170, -171, -172, -173, -174, -175, -176, -177, -178, -179, -180, -181, -182, -183, -184, -185, -186, -187, -188, -189, -190, -191, -192, -193, -194, -195, -196, -197, -198, -199, -200, -201, -202, -203, -204, -205, -206, -207, -208, -209, -210, -24, -137, -13, -738, -738, -738, -738, -738, -276, -738, -738, -721, -722, -738, -13, -631, -629, -655, -655, -738, -13, -738, -738, -725, -726, -56, -738, -619, -620, -738, -310, -738, -738, -245, -738, -632, -632, -13, -738, -57, -59, -222, -223, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -258, -259, -260, -261, -738, -65, -66, -738, -130, -131, -170, -171, -172, -188, -193, -200, -203, -619, -620, -698, -738, -421, -423, -738, -719, -720, -76, -276, -738, -330, -427, -436, -438, -82, -433, -83, -725, -84, -264, -281, -291, -291, -285, -289, -292, -738, -580, -702, -706, -738, -85, -86, -723, -14, -738, -17, -738, -89, -13, -725, -738, -92, -95, -13, -107, -108, -738, -738, -115, -323, -326, -725, -738, -632, -632, -350, -351, -354, -434, -738, -97, -738, -103, -320, -738, -224, -225, -599, -233, -234, -738, -246, -738, -13, -314, -725, -265, -730, -730, -738, -738, -730, -738, -332, -62, -738, -738, -738, -13, -13, -723, -738, -724, -619, -620, -738, -738, -310, -738, -365, -366, -125, -126, -738, -128, -738, -310, -627, -738, -346, -655, -560, -738, -738, -738, -738, -738, -738, -738, -738, -6, -736, -25, -26, -27, -28, -29, -738, -738, -21, -22, -23, -138, -738, -32, -35, -297, -738, -738, -296, -33, -738, -37, -738, -310, -49, -51, -211, -269, -292, -53, -54, -38, -212, -269, -725, -277, -291, -291, -712, -713, -286, -431, -714, -715, -713, -712, -286, -430, -432, -714, -715, -738, -548, -738, -378, -379, -725, -697, -697, -637, -638, -640, -640, -640, -654, -656, -657, -658, -659, -660, -661, -662, -663, -664, -738, -666, -668, -670, -675, -677, -678, -681, -686, -688, -689, -691, -692, -693, -695, -738, -738, -738, -48, -219, -55, -725, -329, -738, -738, -738, -276, -320, -738, -738, -738, -738, -738, -738, -738, -220, -221, -226, -227, -228, -229, -230, -231, -235, -236, -237, -238, -240, -241, -242, -243, -244, -247, -248, -249, -250, -725, -262, -67, -725, -442, -286, -712, -713, -73, -77, -656, -725, -291, -725, -287, -440, -442, -725, -325, -282, -738, -283, -738, -288, -738, -293, -738, -705, -708, -12, -724, -16, -18, -725, -88, -318, -104, -93, -738, -725, -276, -738, -738, -114, -738, -631, -599, -738, -100, -105, -738, -738, -738, -738, -263, -251, -738, -738, -725, -738, -266, -732, -731, -268, -732, -321, -322, -701, -13, -356, -357, -13, -738, -738, -738, -738, -738, -738, -276, -738, -738, -320, -63, -125, -126, -127, -738, -738, -276, -342, -625, -738, -13, -413, -655, -416, -561, -581, -586, -738, -588, -564, -583, -738, -585, -566, -738, -569, -738, -571, -574, -738, -575, -738, -597, -10, -20, -738, -30, -738, -300, -738, -738, -276, -738, -738, -738, -738, -435, -738, -278, -280, -738, -738, -78, -275, -428, -738, -738, -80, -429, -44, -253, -737, -737, -348, -630, -738, -635, -636, -738, -738, -647, -738, -650, -738, -652, -738, -367, -738, -369, -371, -374, -377, -725, -669, -679, -680, -690, -694, -633, -46, -255, -349, -328, -727, -712, -713, -712, -713, -725, -738, -738, -58, -456, -459, -460, -461, -462, -464, -466, -469, -470, -527, -725, -482, -485, -497, -501, -506, -508, -509, -512, -513, -580, -516, -518, -519, -520, -525, -526, -738, -738, -530, -531, -532, -533, -534, -535, -536, -537, -538, -539, -540, -738, -738, -546, -60, -738, -738, -699, -738, -443, -72, -424, -440, -271, -278, -273, -738, -402, -738, -324, -291, -290, -294, -738, -703, -704, -738, -15, -90, -738, -96, -102, -725, -712, -713, -274, -716, -113, -738, -98, -738, -218, -232, -725, -313, -315, -317, -730, -737, -358, -737, -64, -359, -360, -336, -337, -738, -738, -448, -339, -738, -725, -712, -713, -716, -319, -13, -125, -126, -129, -725, -13, -738, -344, -738, -738, -725, -587, -590, -591, -592, -593, -13, -565, -568, -570, -573, -577, -579, -139, -34, -298, -738, -725, -712, -713, -713, -712, -50, -270, -738, -728, -291, -40, -214, -41, -215, -79, -42, -217, -43, -216, -81, -738, -738, -737, -363, -13, -549, -737, -550, -551, -697, -676, -681, -696, -639, -640, -640, -667, -640, -640, -687, -640, -664, -682, -725, -738, -738, -376, -665, -738, -738, -738, -738, -738, -738, -435, -457, -738, -738, -467, -468, -738, -738, -738, -487, -725, -725, -481, -488, -494, -738, -738, -484, -738, -738, -738, -500, -507, -511, -738, -515, -517, -523, -524, -528, -529, -541, -542, -738, -604, -605, -606, -126, -544, -738, -68, -422, -402, -426, -425, -738, -725, -437, -403, -725, -13, -439, -284, -295, -707, -94, -435, -106, -327, -267, -738, -361, -738, -738, -338, -340, -738, -738, -13, -435, -738, -435, -738, -738, -13, -347, -414, -417, -419, -406, -738, -738, -299, -435, -39, -213, -279, -45, -254, -11, -13, -555, -364, -738, -738, -553, -634, -738, -643, -738, -645, -738, -648, -738, -651, -653, -368, -370, -372, -375, -47, -256, -738, -458, -497, -463, -465, -474, -478, -725, -725, -725, -725, -725, -725, -545, -479, -480, -504, -489, -492, -495, -725, -580, -729, -725, -498, -502, -505, -510, -514, -521, -522, -738, -252, -13, -74, -272, -697, -697, -383, -385, -385, -385, -401, -738, -725, -664, -672, -673, -684, -441, -334, -738, -335, -738, -453, -294, -737, -341, -343, -626, -738, -13, -13, -738, -415, -589, -554, -13, -619, -620, -738, -738, -310, -552, -640, -640, -640, -640, -738, -738, -738, -471, -472, -473, -475, -476, -477, -496, -490, -738, -483, -738, -486, -738, -543, -444, -738, -381, -382, -386, -392, -394, -738, -397, -738, -399, -404, -738, -738, -671, -738, -13, -449, -738, -738, -445, -446, -447, -345, -738, -738, -725, -408, -410, -411, -548, -276, -738, -738, -320, -738, -641, -644, -646, -649, -373, -498, -738, -493, -499, -503, -697, -674, -384, -385, -385, -385, -385, -685, -385, -405, -683, -738, -320, -737, -13, -454, -455, -418, -420, -407, -738, -547, -725, -712, -713, -716, -319, -640, -738, -491, -380, -738, -389, -738, -391, -738, -395, -738, -398, -400, -319, -716, -362, -737, -409, -435, -642, -385, -385, -385, -385, -450, -451, -452, -738, -387, -390, -393, -396, -385, -388]; - clist = ["44,138,138,306,310,44,315,315,315,298,408,282,380,380,457,463,380,138", "222,281,690,379,415,451,294,15,827,141,141,300,15,560,632,675,229,229", "44,341,341,470,124,353,353,615,618,508,381,382,384,385,386,623,794,336", "568,899,337,133,214,238,595,15,885,791,44,791,233,380,380,380,380,977", "435,436,390,294,294,705,353,353,353,556,372,730,774,299,490,490,120", "15,902,552,733,733,794,892,699,701,703,395,121,418,419,420,421,558,1053", "235,607,610,124,131,614,448,481,481,317,317,317,44,1024,934,927,363", "333,695,696,509,44,997,44,302,309,311,356,711,1069,368,4,1031,752,752", "8,967,15,1026,335,8,928,374,377,473,506,15,1177,15,786,125,387,446,447", "794,1151,778,1010,946,947,2,313,326,327,403,405,791,791,788,511,512", "1006,1153,797,604,213,316,316,316,396,226,232,1038,1041,568,980,315", "458,592,592,653,655,1049,431,424,524,525,821,283,370,776,782,664,366", "375,781,44,467,442,373,295,442,376,394,636,1046,369,1177,44,605,371", "841,1054,429,44,442,991,639,1025,1071,550,15,515,437,1129,1073,437,1150", "573,640,993,44,1072,15,430,441,406,845,441,15,437,1090,1091,1214,8,490", "229,229,336,839,449,423,441,422,416,8,15,551,315,315,1153,1165,562,791", "510,563,300,315,959,826,1167,800,1144,481,1082,705,1221,983,233,909", "809,1173,1030,1184,1032,1033,923,1036,1039,924,457,463,917,894,933,936", "1055,1056,1062,949,889,1,727,306,1024,407,929,380,409,310,642,44,410", "1037,1040,44,411,412,1199,341,44,413,549,353,414,588,1168,1164,638,847", "852,842,336,906,1058,1059,15,336,341,1136,15,619,353,598,897,15,124", "893,434,434,44,649,651,654,654,1171,,596,,962,899,,,805,,44,44,973,", "317,,,802,805,626,15,,317,,233,,,620,621,1054,,,902,955,,15,15,,1054", "576,,986,1169,138,522,523,805,,333,124,988,577,,333,805,831,1119,682", "593,591,584,,579,687,1212,840,561,671,688,141,580,,,1000,564,586,,,", "844,559,316,,606,,1145,1054,,877,316,,457,463,882,,,,622,578,663,863", ",,,,,,718,,,,,,899,794,458,,315,1169,,985,705,705,,,490,,791,,,972,", "1035,,,467,,1043,1044,,963,,,1015,1017,,1019,1021,,1022,768,768,682", "481,1170,969,,,,,,731,731,676,,,,752,752,717,1083,1013,813,,898,890", "900,752,,733,976,,490,752,490,681,1042,315,458,,846,686,899,,510,,449", ",458,,873,875,,44,,878,880,,467,,,341,,1222,,353,,,467,,341,,,,353,315", "458,752,15,,596,,836,,458,315,,969,,596,855,44,855,,44,1223,467,,,1113", "1114,1115,467,,,,,,818,775,,820,,,,44,15,,,15,315,458,811,,,,,790,,", "780,989,822,138,,,,,,,15,467,44,34,,442,,,34,44,1096,843,941,,,442,442", ",,141,442,442,,,,34,,15,817,,437,705,705,,15,34,34,34,,34,437,437,441", "1191,891,437,437,,,859,,,441,441,1126,1127,,441,441,1160,1161,1162,1163", ",874,876,,34,,879,881,961,34,34,,,34,768,,894,1140,,1141,,,768,,1146", "926,,895,,,895,768,768,940,872,,957,960,1001,,,,138,,281,,,,830,1215", ",,682,,,687,,,380,34,,901,,903,34,34,34,34,34,,34,,341,,,,353,,1089", ",,860,,341,,,676,353,868,1070,1216,596,990,,,,1200,1074,,,676,935,974", ",1075,,,,,44,,,,,44,434,,,,,,,,,,44,987,,,,,,,,15,,,1103,,15,,872,998", "442,,490,1066,,,1124,15,,,34,34,34,34,34,34,34,44,676,,,,34,380,,437", ",,34,34,34,34,1008,,1009,1149,1012,441,,,,,15,,,34,,676,768,1002,768", ",380,768,768,,676,1060,,926,768,,996,,926,926,768,768,,,,,,,768,768", ",1052,,676,805,,,,,,1080,,,1192,,34,874,876,881,879,,44,34,34,,,,,,1120", ",34,1174,,,1175,,768,1078,44,1074,,,1074,1075,44,15,1075,731,34,1075", ",1075,34,,,1085,,34,,,44,676,,15,1098,,676,676,353,15,,,,,,,,1095,,1067", "1088,,,,,15,,34,1066,1102,,1066,,1066,,,,,,,,34,34,34,1217,996,,1068", ",,,,1074,,,44,,,,1075,,1075,34,1075,,1075,,,294,,,1002,353,,,,,,380", "380,15,,1075,44,44,,,,,44,,,,,1156,1104,,1105,,1106,1148,1066,768,1066", ",1066,1154,1066,15,15,,768,1185,1186,15,768,,,676,676,676,,315,458,1066", ",34,,935,,294,,,44,353,,,,,,31,,,467,,31,,,,,1183,,996,,,,,,15,768,", ",31,,,34,,467,,,,,31,31,31,34,31,44,895,,,1067,,,1067,,1067,,,,,768", ",,1213,,,,,,,,15,513,31,,,,,31,31,,1176,31,1178,,,,,,,,,,,,,378,,1189", ",,,,,34,,,,,1197,1130,1132,1134,,34,,,,,,,,,1067,,1067,,1067,31,1067", "34,,,31,31,31,31,31,,31,676,,34,,,34,1067,,565,,,1218,34,1219,,1220", ",,,,,,34,,,,34,,,,,581,,,1229,,,,,,,,,,,,,,,,,,,34,,,34,34,,,34,,,,", ",34,34,,,,34,34,,,1202,1204,1206,1208,,1209,,31,31,31,31,31,31,31,,", "18,,,31,,18,,,,31,31,31,31,432,445,,,,,,,,239,,,,31,,1225,1226,1227", "1228,239,239,239,,18,342,342,,1230,,,,,,,,,,,,,,,,,,,,,,,,18,,,,,239", "239,,31,239,391,401,401,,693,31,31,,,,,,,,31,,,,,,,,,,,,760,760,,,,", "31,,,,31,,,,,31,570,721,572,18,,574,575,,239,239,239,239,18,,18,,34", ",,,,34,34,,,,,,,31,,,34,,,,,,,777,,,,31,31,31,,783,,785,34,,,789,,,", ",,,,,,,31,,,34,,798,,,,,,801,,,,,,,,,,,,,,,,,,,815,,,18,239,439,239", "239,439,239,,,,,,18,,,,,667,18,439,239,239,,,,,,,,,,31,,34,,18,,,,,", ",,,,,,,,,34,,,,,,,,,,,,34,,,,,,34,,31,,,,34,,,,712,,31,239,,,,,,,239", "239,34,,,,,,,239,,,,,,910,760,,,,,,,17,760,,,18,17,,,18,,760,760,342", "18,,,,,,,,,,,,,,,,31,,342,,,34,,17,,,31,792,,378,18,795,,,,769,769,", ",,,,31,,239,18,18,,,34,34,17,,,31,34,,31,,,,,,,31,239,,,792,,,378,,", "31,,,,31,,,975,,,445,,,,,,,,,,,,,,,34,,34,34,,,31,17,,31,31,,,31,,34", "17,,17,31,31,,,,31,31,,,,861,239,,,,,,,,792,378,,,,,34,,,,,,,,888,,", ",,,760,,760,,,760,760,905,,,,239,760,,,,,1023,760,760,,239,,,,,760,760", ",,,,1034,,,,,,,,,,,17,,17,,,17,,,,,,,17,,,,,,17,17,,,760,,,,,,,,,1064", ",,,17,,,18,,,,,,792,,342,,239,,,,769,970,,342,971,,,,769,,,,239,,,,", "769,769,,,,,31,18,,,18,31,31,,,,,239,,,,,31,,,,,239,,,,18,,,,1110,1111", "1112,,,31,,,,,,17,,,,17,1121,,999,,17,,31,18,,,439,239,,,18,,,,,,439", "439,,,,439,439,43,760,763,763,,43,,17,,,760,,,,760,,,,,,,,17,17,293", ",,,,,,,,,,,43,340,340,,,,31,,,,,,,,,,,,,,,,760,31,,,,,43,,,,,,,31,,", "389,293,293,31,,,,,769,31,769,,,769,769,,760,,,,769,,,1084,,31,769,769", ",,,,,,769,769,,,,342,,,378,,,43,,,767,767,342,,,,43,,43,,,,,,,,,,,,", ",,,,769,,,18,,,,31,18,239,,,,,,,,,,18,,,,,,,,,,,,,,,,31,31,439,,,,31", ",,,,,,,,,,,,18,,,,,,,,,,,,43,,17,,,,763,,,,,,43,,763,,,,43,31,,31,31", "763,763,,,,,,,,,,31,43,,,,,17,,,17,,,,761,761,,,239,,,,,,,,,769,,,31", "17,,,,18,769,,,,769,,,,,,,239,,,,,,18,,,,,17,18,,17,,,,17,,,,,,17,17", ",,18,17,17,,1099,,,43,,769,,43,,,,340,43,,767,,,,,,,,767,,,,,,,19,340", "767,767,,19,,,769,,,,,43,,,,,,,,,18,,,,,,43,43,,,,,,1138,19,349,349", ",,,763,,763,,,763,763,,18,18,,,763,,18,,,,763,763,,,19,,,,763,763,,", ",,349,349,349,,,,,,,,,,,,,,,,,,,,,1180,,,18,,239,239,,,,763,,,,,,,,239", ",,,19,17,,,761,,17,,,19,,19,761,,,,,17,,,,761,761,,,18,,,,,,,,,,17,", ",,,,,,767,,767,,,767,767,,,17,,,767,,,,,,767,767,,,,,,,767,767,,,,,", ",,,,,,,,,,,,,,,,,,19,,19,,,19,,,43,,,,19,,767,,340,,19,19,763,,,,,340", ",21,,763,,,21,763,,19,,,17,,,,,,,,43,,,43,,,,,,,17,,,,,,17,21,344,344", ",,,,43,,,,,,,763,17,,,,,,,,,761,,761,,21,761,761,,762,762,43,,761,,393", "402,402,43,761,761,,,763,,,,761,761,19,,,,19,,,,349,19,,,,,,,,,17,,", ",,,,767,,349,20,,,21,,20,767,,,761,767,19,21,,21,,,,17,17,,,,,17,,19", "19,,,,,,,,,20,350,350,,,,,,,,,,,,,,,,767,,,,,,,,,,20,,,,17,,,,,,350", "350,350,,,,,,,,,,767,340,,,,,,,,,,21,340,440,,,440,,,,,,,21,,,17,,,21", "440,,,20,,,,,43,,,,20,43,20,,21,,,761,,,,,43,,,,761,,,,761,,,,,,,,,", ",,,,,,765,765,,,,762,,,,,,43,,762,,,,,,,,,762,762,,,,,761,,,,,,,,,,", ",,,,,,,,,21,20,,20,21,,20,19,344,21,,,761,20,,349,,,,20,20,,,,349,,", "344,,,,,,,,,20,,,21,,,,43,,19,,,19,,,,,,21,21,,,,,,43,,,,,,43,,19,,", ",,,,,,,,,,,43,,,,1097,,766,766,,,,,,19,,,19,,,,19,,,,,,19,19,,,,19,19", "20,,,,20,,,,350,20,,,,,,,,,762,,762,,43,762,762,,,350,,,762,,,,,293", "762,762,,20,,,,,762,762,,,,,43,43,,765,20,20,43,,,,,765,,,,,,,,,765", "765,,,,,,,,,,,,762,,,,,,,,,,,,,,293,,,43,,,,,,,,,,,,,349,,,,,,,,,,,349", ",,,,,,21,,,,,,,,344,,,,,43,,,,344,,19,,,,,19,,,,,,,,,,,19,,,21,,,21", ",,,,,,,,,764,764,19,,,,,,766,,,21,,,,,766,,851,19,,,,,,766,766,762,", ",,,,,,,762,,21,,762,440,,,,21,,,765,,765,440,440,765,765,,440,440,,", "765,,,,,20,765,765,,,,,,350,765,765,,,,,,,350,,762,,,,,,,,,,,,,,,19", ",,,20,,,20,,,,,,,765,,,762,19,,,,,,19,,,,20,,,,,,,,,,,,19,,,,349,,,", ",,,,,,,20,,,20,,,,20,,,,,,20,20,,,344,20,20,,,,,,,,,344,,,766,,766,", ",766,766,,,19,,,766,,,,,,766,766,,,349,21,,,766,766,21,,,,764,,,,,19", "19,21,764,,,19,,,,,,764,764,,,,765,,,440,,,,,,765,,766,,765,,,,,,,21", ",,,,,,,,,349,,,19,,,,,,,,,,,,,,,350,,,,,246,,,,765,,350,,,,314,314,314", ",,,,,,,,,361,362,19,364,365,,367,,,,20,,,,765,20,,,,,,314,314,,,21,20", ",,,,,,,,,,,,,,,,21,20,,,,,21,,,,,,,,,,,,20,766,,,21,,,,1101,,766,,,", "766,,,,,764,,764,,,764,764,,,,,,764,,,,,,764,764,,,,,,,764,764,,,,,", ",,,,,,766,21,,,,,,,,,,,,,402,,,,,,,,20,,,,764,,,21,21,,766,,,21,,,,", "20,,,,,,20,,,,,314,444,,,450,314,,,,,,20,,,,350,,,450,,,,,,,402,,,21", ",,246,,,,,,,526,527,528,529,530,531,532,533,534,535,536,537,538,539", "540,541,542,543,544,545,546,547,,,,,548,,20,,,,,,21,,,,,,,350,,,,,,", ",314,314,,,,,,20,20,314,,,,20,764,,314,,314,,,314,314,764,,,,764,,,", ",,,,,,,,,,,,,,,,,,,,,,,350,,,20,,,,,,601,,602,,,,,,764,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,20,,764,,,,,,,,,,,,,,,,,,,,,,,,,,,314,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,689,,,,,,,,,,,,,,,,,,,,,,,,,,314,,,,,,,,,,,,,719", ",,,,,,,,,314,,450,450,450,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,362,,,", ",,,,,,314,,314,,314,,,,,,,,,,,,,,,,314,,,,,,,,,,450,,,812,,,,,,,,314", ",,314,,,,,,,,,,,,,314,314,,,,,,,,,,314,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,314,450,314,,,,869,,,314,314,450,450,,,,450,450,,,,,,314,,,,,,,,", ",,,,314,,,,,,,,,,,,,,,,,,,,,,,,689,719,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,314,,,,,,,,,314,,,314,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,314,,,,,,,,450,,,,,,,,,", ",,,1004,1005,,,,,,,,,,,,,,,,,,,,,,,,,,,1027,1028,450,450,450,450,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1061,,,,,,,,,,,,,,,,,,,,,,,,,,,", "314,,,,,,,,,,,,,,,,,,,314,,,,,,,,,,,,,,,,,,,,,,,,,,450,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,314"]; - racc_goto_table = (arr = $$$('Array').$new(4695, nil)); + racc_action_pointer = [nil, 1550, 2590, 30, nil, 485, nil, 21057, 1279, -15, 24908, 25292, 63, nil, 111, 130, 888, 195, 878, 334, 213, 587, nil, -72, 16018, 1438, 25420, 260, nil, 586, nil, 10, 7680, 8479, 8613, 9947, 10209, nil, 1870, 24507, 23582, nil, 199, 495, 356, 292, 12722, 13115, 252, 13377, 14041, 977, 19960, 226, 694, nil, nil, nil, nil, nil, nil, nil, nil, nil, 21341, nil, 15494, 15351, 14696, 170, nil, 14434, 14303, nil, nil, 21200, 24638, 24114, 24769, nil, nil, nil, nil, nil, nil, nil, nil, nil, 877, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 610, nil, nil, 722, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 20234, nil, nil, nil, nil, 20091, 19567, 19436, 19305, 19174, nil, 4318, nil, -26, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 266, nil, 4462, 22788, 21740, 21609, 14172, 13910, 13779, 27931, 27748, nil, nil, 264, 2734, 305, nil, 27294, 27386, 317, 1294, 12043, 11912, 11257, nil, nil, 1133, 138, 140, 432, 174, 389, 452, nil, 10078, 131, 191, 3022, 455, nil, nil, 7277, 7146, 7015, 6753, 6491, 6360, 6229, 6098, 5967, 18507, 18376, 18245, 17590, 17459, 17328, 16411, 16149, 15756, 15220, 15089, 20639, 21478, nil, nil, nil, nil, 13648, nil, nil, 583, 548, 381, -62, 413, 376, 696, 695, 584, 585, nil, nil, nil, 15625, nil, nil, 27992, nil, nil, 484, 16673, 17066, nil, nil, nil, nil, nil, nil, nil, 17197, nil, 2446, nil, 455, 459, nil, 17721, 512, 17852, nil, nil, 17983, 18114, nil, nil, -73, nil, 5836, 1711, 509, 484, 1726, 513, 564, 525, 23312, 2878, 999, 1139, 614, 617, 582, nil, 610, 571, 253, 616, 644, nil, nil, nil, 650, 171, 611, 23852, nil, 471, 1022, 3742, 3886, 687, nil, 691, 12591, nil, 677, 2302, 1567, 638, nil, 541, 621, 676, 662, 651, 690, nil, 870, 35, 36, 22133, 1006, 4894, 459, 766, 651, 25, 39, 730, 747, 4, 793, nil, nil, 1141, 1285, 370, nil, 692, nil, 714, 14827, nil, 27438, nil, 531, 386, 291, 288, 421, 142, 191, 396, nil, nil, nil, nil, nil, nil, nil, 713, 25036, nil, nil, nil, nil, 726, nil, 798, 717, 14565, 725, nil, nil, 715, nil, 690, -60, 819, nil, nil, 1582, nil, nil, nil, nil, nil, 1870, 735, nil, 740, 749, 217, 251, 21057, nil, nil, nil, 0, 861, 795, nil, nil, 20916, 20780, 20508, 880, 882, nil, nil, 769, 775, 780, nil, nil, 785, 787, 809, nil, nil, nil, nil, nil, nil, nil, nil, nil, 801, 1280, nil, nil, 19031, nil, nil, nil, 1, nil, nil, nil, 899, nil, nil, 901, 579, 22919, 951, nil, nil, nil, -26, nil, 885, 28114, 28053, 22657, -85, 22526, 22395, 22264, 835, 853, 26710, 26612, 3454, 5300, 814, 855, 936, 938, 947, 952, 5693, 5431, 5562, 5169, 5038, 4894, 4750, 4606, 4462, 3482, 3568, 4318, 4174, 2590, 4030, nil, 154, nil, 13518, nil, nil, nil, nil, 13246, 889, 897, 901, nil, nil, nil, 902, nil, nil, 12984, nil, 12853, nil, 12460, nil, 219, nil, nil, nil, 12317, 1438, nil, 904, 909, nil, nil, 910, 23451, 916, 12174, 28175, 28236, 995, 958, nil, nil, 24376, 929, nil, 11781, 28602, 27809, 11650, 3598, 11388, nil, 1066, 947, 990, nil, 11126, nil, nil, 10995, nil, nil, nil, 4030, 1075, nil, 3742, 25, 1080, 1084, 37, 1086, 10733, 10602, 27687, 28480, -5, nil, nil, 472, nil, 27626, 27870, 10340, nil, nil, 191, 2014, nil, 27463, nil, nil, nil, nil, 1249, nil, nil, nil, 977, nil, nil, 247, nil, 286, nil, nil, 966, nil, 968, nil, nil, nil, 25164, nil, 9816, 971, 9673, 9411, 9280, 28358, 27565, 9018, 8875, 733, 1011, 8744, 8076, 7945, 7814, 1017, nil, nil, 7539, 7408, 1021, nil, 1075, 1726, 1105, 6884, nil, nil, 1120, nil, nil, 376, 13512, nil, 13482, nil, 27365, nil, 975, 6622, nil, 1310, nil, 992, 997, 1057, 1002, nil, nil, nil, nil, nil, nil, 1090, 2014, nil, nil, nil, 307, 332, 222, 361, 1006, 5693, 5562, nil, 120, nil, nil, nil, nil, 1029, nil, nil, nil, 555, 26091, 311, nil, 1007, 1092, 1014, nil, nil, 25503, nil, nil, 375, nil, nil, 586, nil, nil, 861, 27241, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 791, 464, nil, nil, 1016, 26529, nil, 1148, nil, 1131, 4, nil, nil, 16280, nil, 1046, 1053, 1154, nil, 1041, nil, 1088, 22002, nil, nil, 21871, nil, 109, 23721, 1044, nil, 1048, -1, 233, 1103, 249, 799, 1117, 1088, 24245, nil, 1156, 2158, 10864, nil, nil, nil, 372, 876, nil, 1213, nil, nil, nil, nil, nil, 1219, 1220, nil, nil, 6, 1101, -21, -19, 68, 7, 1150, 997, 989, nil, 1103, 4606, 14958, nil, 1227, 22, 1107, nil, nil, nil, nil, nil, 4750, nil, nil, nil, nil, nil, nil, nil, nil, 1106, 15887, 1110, 387, 385, 110, 500, nil, 2302, 16542, nil, 1110, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 16804, 16935, 1236, nil, 3886, 1121, 1169, nil, nil, 1129, nil, 1212, nil, nil, 1131, 1136, nil, 1141, 1143, nil, 1144, nil, nil, nil, 1150, 1204, 507, nil, nil, 18638, 18769, 18900, 5169, 5300, 5431, 333, 25993, 1231, 27004, -65, -35, 26386, 26288, 480, -32, 1154, 1155, nil, 27200, nil, 1154, 747, nil, 1178, 25895, 26190, nil, 929, 1243, 281, nil, nil, 27339, 20916, nil, nil, nil, nil, 8207, nil, nil, nil, nil, nil, 8338, nil, nil, 1227, nil, nil, 1237, 1224, nil, nil, 429, 2446, nil, nil, nil, nil, 1227, 250, nil, 137, nil, 1357, nil, 9149, 1361, nil, nil, 25797, 9542, 5038, -18, 1362, nil, 1363, 369, 1582, nil, nil, nil, nil, 1238, 1285, 1249, 1247, 304, nil, nil, 10471, 3310, 3166, nil, 3166, nil, nil, -10, 23050, nil, nil, 27446, nil, 497, nil, 27515, nil, 25493, nil, nil, nil, nil, 1248, 1250, 3022, 2878, 11519, nil, 1251, nil, nil, nil, nil, 1257, 1258, 1260, 1262, 1263, 1264, nil, nil, nil, 1309, 1267, -39, nil, 1276, nil, nil, -66, 1275, nil, nil, nil, nil, nil, nil, 1323, 2734, 2158, nil, nil, 1285, 1286, nil, 1287, 1288, 1291, nil, 1316, 1296, 1283, 23181, nil, nil, nil, nil, nil, 8, nil, 26, 771, nil, 40, nil, nil, nil, 1420, 3454, 3310, 1136, nil, nil, nil, 1438, 32, 33, 872, 1376, 34, nil, 1302, 1312, 1313, 1314, 1348, 3584, 26906, nil, nil, nil, nil, nil, nil, nil, 1317, 27102, nil, 145, nil, 25699, nil, nil, 815, nil, nil, 25898, nil, nil, 25702, nil, 13537, nil, nil, 1342, 23983, 763, 1397, 3598, nil, 19698, 19829, nil, nil, nil, nil, 1341, 1454, 713, nil, nil, nil, 1457, 20377, 28297, 28419, 69, 26144, nil, nil, nil, nil, 1332, 1333, 26808, 1341, nil, nil, 1342, nil, nil, 1361, 1365, 1382, 1385, nil, 1386, nil, 618, 28541, nil, 973, 4174, nil, nil, nil, nil, nil, 1195, nil, 1392, 76, 79, 109, 136, 1391, 25601, 1394, nil, 25604, nil, 23629, nil, 26599, nil, 23359, nil, nil, 1439, 1442, nil, 362, nil, 142, nil, 1399, 1401, 1404, 1409, nil, nil, nil, 25996, nil, nil, nil, nil, -129, nil]; + racc_action_default = [-1, -745, -4, -745, -2, -730, -5, -745, -8, -745, -745, -745, -745, -31, -745, -745, -36, -745, -745, -639, -639, -311, -52, -732, -745, -61, -745, -69, -70, -71, -75, -287, -287, -287, -324, -352, -353, -87, -13, -91, -99, -101, -745, -626, -627, -745, -745, -745, -745, -745, -745, -239, -745, -732, -258, -302, -303, -304, -305, -306, -307, -308, -309, -310, -718, -313, -317, -744, -707, -333, -335, -745, -745, -63, -63, -730, -745, -745, -745, -354, -355, -357, -358, -359, -360, -419, -563, -564, -565, -566, -587, -569, -570, -589, -591, -574, -579, -583, -585, -601, -602, -603, -587, -605, -607, -608, -609, -610, -716, -615, -616, -717, -618, -619, -620, -621, -622, -623, -624, -625, -630, -631, 1238, -3, -731, -740, -741, -742, -7, -745, -745, -745, -745, -745, -9, -4, -19, -745, -130, -131, -132, -133, -134, -135, -136, -140, -141, -142, -143, -144, -145, -146, -147, -148, -149, -150, -151, -152, -153, -154, -155, -156, -157, -158, -159, -160, -161, -162, -163, -164, -165, -166, -167, -168, -169, -170, -171, -172, -173, -174, -175, -176, -177, -178, -179, -180, -181, -182, -183, -184, -185, -186, -187, -188, -189, -190, -191, -192, -193, -194, -195, -196, -197, -198, -199, -200, -201, -202, -203, -204, -205, -206, -207, -208, -209, -210, -24, -137, -13, -745, -745, -745, -745, -745, -277, -745, -745, -728, -729, -745, -13, -638, -636, -662, -662, -745, -13, -745, -745, -732, -733, -56, -745, -626, -627, -745, -311, -745, -745, -245, -745, -639, -639, -13, -745, -57, -59, -222, -223, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -259, -260, -261, -262, -745, -65, -66, -745, -130, -131, -170, -171, -172, -188, -193, -200, -203, -626, -627, -705, -745, -428, -430, -745, -726, -727, -76, -277, -745, -332, -434, -443, -445, -82, -440, -83, -732, -84, -265, -282, -292, -292, -286, -290, -293, -745, -587, -709, -713, -745, -85, -86, -730, -14, -745, -17, -745, -89, -13, -732, -745, -92, -95, -13, -107, -108, -745, -745, -115, -324, -327, -732, -745, -639, -639, -352, -353, -356, -441, -745, -97, -745, -103, -321, -745, -224, -225, -606, -233, -234, -745, -246, -251, -13, -315, -732, -266, -737, -737, -745, -745, -737, -745, -334, -62, -745, -745, -745, -13, -13, -730, -745, -731, -626, -627, -745, -745, -311, -745, -370, -371, -125, -126, -745, -128, -745, -311, -634, -745, -348, -662, -567, -745, -745, -745, -745, -745, -745, -745, -745, -6, -743, -25, -26, -27, -28, -29, -745, -745, -21, -22, -23, -138, -745, -32, -35, -298, -745, -745, -297, -33, -745, -37, -745, -311, -49, -51, -211, -270, -293, -53, -54, -38, -212, -270, -732, -278, -292, -292, -719, -720, -287, -438, -721, -722, -720, -719, -287, -437, -439, -721, -722, -745, -555, -745, -383, -384, -732, -704, -704, -644, -645, -647, -647, -647, -661, -663, -664, -665, -666, -667, -668, -669, -670, -671, -745, -673, -675, -677, -682, -684, -685, -688, -693, -695, -696, -698, -699, -700, -702, -745, -745, -745, -48, -219, -55, -732, -331, -745, -745, -745, -277, -321, -745, -745, -745, -745, -745, -745, -745, -220, -221, -226, -227, -228, -229, -230, -231, -235, -236, -237, -238, -240, -241, -242, -243, -244, -247, -248, -249, -250, -732, -263, -67, -732, -449, -287, -719, -720, -73, -77, -663, -732, -292, -732, -288, -447, -449, -732, -326, -283, -745, -284, -745, -289, -745, -294, -745, -712, -715, -12, -731, -16, -18, -732, -88, -319, -104, -93, -745, -732, -277, -745, -745, -114, -745, -638, -606, -745, -100, -105, -745, -745, -745, -745, -264, -745, -328, -745, -732, -745, -267, -739, -738, -269, -739, -322, -323, -708, -13, -361, -362, -13, -745, -745, -745, -745, -745, -745, -277, -745, -745, -321, -63, -125, -126, -127, -745, -745, -277, -344, -632, -745, -13, -420, -662, -423, -568, -588, -593, -745, -595, -571, -590, -745, -592, -573, -745, -576, -745, -578, -581, -745, -582, -745, -604, -10, -20, -745, -30, -745, -301, -745, -745, -277, -745, -745, -745, -745, -442, -745, -279, -281, -745, -745, -78, -276, -435, -745, -745, -80, -436, -44, -254, -744, -744, -350, -637, -745, -642, -643, -745, -745, -654, -745, -657, -745, -659, -745, -745, -372, -745, -374, -376, -379, -382, -732, -676, -686, -687, -697, -701, -640, -46, -256, -351, -330, -734, -719, -720, -719, -720, -732, -745, -745, -58, -463, -466, -467, -468, -469, -471, -473, -476, -477, -534, -732, -489, -492, -504, -508, -513, -515, -516, -519, -520, -587, -523, -525, -526, -527, -532, -533, -745, -745, -537, -538, -539, -540, -541, -542, -543, -544, -545, -546, -547, -745, -745, -553, -60, -745, -745, -706, -745, -450, -72, -431, -447, -272, -279, -274, -745, -409, -745, -325, -292, -291, -295, -745, -710, -711, -745, -15, -90, -745, -96, -102, -732, -719, -720, -275, -723, -113, -745, -98, -745, -218, -232, -252, -745, -314, -316, -318, -737, -744, -363, -744, -64, -364, -365, -338, -339, -745, -745, -455, -341, -745, -732, -719, -720, -723, -320, -13, -125, -126, -129, -732, -13, -745, -346, -745, -745, -732, -594, -597, -598, -599, -600, -13, -572, -575, -577, -580, -584, -586, -139, -34, -299, -745, -732, -719, -720, -720, -719, -50, -271, -745, -735, -292, -40, -214, -41, -215, -79, -42, -217, -43, -216, -81, -745, -745, -744, -368, -13, -556, -744, -557, -558, -704, -683, -688, -703, -646, -647, -647, -674, -647, -647, -694, -647, -671, -386, -689, -732, -745, -745, -381, -672, -745, -745, -745, -745, -745, -745, -442, -464, -745, -745, -474, -475, -745, -745, -745, -494, -732, -732, -488, -495, -501, -745, -745, -491, -745, -745, -745, -507, -514, -518, -745, -522, -524, -530, -531, -535, -536, -548, -549, -745, -611, -612, -613, -126, -551, -745, -68, -429, -409, -433, -432, -745, -732, -444, -410, -732, -13, -446, -285, -296, -714, -94, -442, -106, -732, -268, -745, -366, -745, -745, -340, -342, -745, -745, -13, -442, -745, -442, -745, -745, -13, -349, -421, -424, -426, -413, -745, -745, -300, -442, -39, -213, -280, -45, -255, -11, -13, -562, -369, -745, -745, -560, -641, -745, -650, -745, -652, -745, -655, -745, -658, -660, -373, -375, -377, -380, -47, -257, -745, -465, -504, -470, -472, -481, -485, -732, -732, -732, -732, -732, -732, -552, -486, -487, -511, -496, -499, -502, -732, -587, -736, -732, -505, -509, -512, -517, -521, -528, -529, -745, -253, -13, -74, -273, -704, -704, -390, -392, -392, -392, -408, -745, -732, -671, -679, -680, -691, -448, -329, -336, -745, -337, -745, -460, -295, -744, -343, -345, -633, -745, -13, -13, -745, -422, -596, -561, -13, -626, -627, -745, -745, -311, -559, -647, -647, -647, -647, -745, -745, -745, -478, -479, -480, -482, -483, -484, -503, -497, -745, -490, -745, -493, -745, -550, -451, -745, -388, -389, -393, -399, -401, -745, -404, -745, -406, -411, -745, -745, -678, -745, -13, -456, -745, -745, -452, -453, -454, -347, -745, -745, -732, -415, -417, -418, -555, -277, -745, -745, -321, -745, -648, -651, -653, -656, -378, -505, -745, -500, -506, -510, -704, -681, -391, -392, -392, -392, -392, -692, -392, -412, -690, -745, -321, -744, -13, -461, -462, -425, -427, -414, -745, -554, -732, -719, -720, -723, -320, -647, -745, -498, -387, -745, -396, -745, -398, -745, -402, -745, -405, -407, -320, -723, -367, -744, -416, -442, -649, -392, -392, -392, -392, -457, -458, -459, -745, -394, -397, -400, -403, -392, -395]; + clist = ["44,411,301,309,313,44,141,141,318,318,318,340,285,418,454,493,493,284", "382,384,385,473,141,389,297,19,626,511,709,832,19,693,460,466,356,356", "44,344,344,635,127,698,699,571,225,618,621,339,563,702,704,706,144,144", "890,303,708,598,897,241,983,19,352,352,44,134,387,388,366,136,217,356", "356,356,393,297,297,421,422,423,424,798,232,232,305,312,314,907,8,19", "795,445,795,8,445,302,561,678,940,352,352,352,359,734,778,737,737,790", "445,555,127,124,438,439,1003,451,383,383,236,559,383,715,44,798,610", "613,1160,1059,617,512,375,44,904,44,1158,484,484,756,756,123,229,235", "336,1037,4,476,509,19,320,320,320,1030,373,973,1032,1184,19,1075,19", "1016,782,128,2,607,656,658,17,1012,338,1044,1047,17,792,801,383,383", "383,383,216,1055,571,377,380,933,595,595,986,399,516,434,798,493,934", "406,408,427,527,461,318,528,795,795,17,826,952,953,286,780,786,390,8", "667,652,654,657,657,44,369,605,425,378,8,470,785,1160,1184,298,432,44", "379,17,397,1221,639,44,1078,576,372,608,374,818,19,846,19,709,997,19", "642,915,1031,1077,44,1136,19,433,444,1079,1157,444,19,19,831,339,903", "568,905,449,450,518,319,319,319,444,844,643,999,19,426,419,409,318,318", "850,514,515,804,1097,584,17,318,1098,554,565,566,813,965,1151,17,1089", "17,1172,1228,376,989,1191,1038,1039,899,795,1174,731,484,303,929,232", "232,316,329,330,930,1180,645,939,309,942,460,466,1068,968,313,1061,44", "599,1062,622,44,356,912,955,344,44,894,1143,1,553,410,339,412,1175,413", "236,339,552,1030,1171,356,19,1206,344,414,19,415,1036,416,352,19,127", "1042,1045,417,44,591,525,526,923,852,1043,1046,596,857,806,847,17,352", "17,44,44,17,935,601,902,582,1064,1065,17,19,623,624,809,898,17,17,1178", "587,907,,,1126,809,,19,19,,961,,,,17,836,581,629,320,,141,127,696,493", "1219,845,320,,383,685,849,,,809,580,690,,,336,,,809,691,336,709,709", "979,,236,641,1152,437,437,860,904,860,,,1019,,868,725,579,,583,674,144", "1021,1023,589,1025,1027,,1028,,,992,,460,466,493,722,493,666,,994,,461", ",,1177,318,,991,17,882,,978,17,781,887,,,17,238,,,787,1006,789,684,452", "470,793,975,798,689,,,,625,,772,772,685,513,795,969,,802,,1076,,17,371", "805,756,756,562,319,445,721,,484,,,756,319,17,17,445,445,756,851,820", "445,445,599,735,735,461,318,1090,904,737,1048,599,982,1041,,461,878", "880,1049,1050,44,883,885,1229,1110,356,1052,,344,895,470,564,,1060,356", ",,344,,567,470,756,975,461,318,19,,,,,784,461,,352,318,,,,44,,,44,352", ",,,1230,841,470,823,,,825,,470,,,1133,1134,995,,,44,19,,1144,19,904", "461,318,709,709,,,,,,,,827,,,,,,141,916,19,947,44,,,900,470,,900,44", ",848,1103,1167,1168,1169,1170,,,794,,,,1120,1121,1122,,19,,,19,,1181", ",19,1182,,,,,19,19,444,,144,19,19,,,,,,444,444,,1198,,444,444,,822,864", ",1153,,,,,,967,,,,,,,1207,899,772,17,,445,,1147,,1148,772,,,1080,865", ",896,,966,772,772,873,,1060,,963,1007,,,1224,284,1223,1060,,599,141", "1176,,932,,685,17,,690,17,980,946,1096,,,,,,877,996,,,356,,,344,493", ",,,17,,,356,,,344,513,,452,,,,,,1060,,,,,352,,,,,1072,,17,594,,17,352", ",44,17,,1222,,44,,17,17,,,993,17,17,1176,,44,,,609,1131,,1029,835,981", "19,,1004,,,19,,,,,,,1040,,,,19,,,,,,,,,1156,44,815,383,,,,,,19,,,1015", "877,,1066,,,,,,444,,,,,19,,1080,1070,,1080,,772,,772,,,772,772,437,1085", ",,1087,772,,,,679,,772,772,,,,1073,,,772,772,,,1199,1014,,,,1018,932", ",,,,932,932,,,1127,,,809,44,,879,881,,1058,,884,886,,,1084,,,,,772,", "44,1080,1117,1118,1119,1072,44,19,1072,,1072,1092,383,,,,17,,1128,,", "17,44,356,,19,1105,,,,31,19,17,1102,735,31,,,,,,383,1095,,,779,,19,", ",17,352,31,,,,,,,,,,31,31,31,,31,17,,,,,,,,,,44,1072,,1072,,1072,,1072", ",,356,,,297,,,,31,,,,,31,31,1072,19,31,,,44,44,1192,1193,,,44,,,352", "900,1155,,1073,,,1073,1161,1073,772,,906,,908,,19,19,,772,,,19,772,", ",,,1163,,,461,318,17,,356,,31,297,765,765,44,31,31,31,31,31,,31,,,17", "1190,,,,470,17,,,,,1008,352,,,19,772,,,,,,17,,,,1073,,1073,470,1073", ",1073,,44,,,,,383,383,,,,,1220,,1081,772,1073,,,,,,879,881,886,884,19", "679,,,,,,,,,,,,,,679,941,,17,,,31,31,31,31,31,31,31,,,,,,31,,,,,,31", "31,31,31,,,,,17,17,381,18,,,17,,18,31,,,,,,,,,,,,,,,,242,,,,679,,,,", ",242,242,242,,18,345,345,,,,,,,,,17,,,,,31,,,,679,,,31,31,,1008,,18", "679,,,31,242,242,1002,,242,394,404,404,,,1137,1139,1141,,,,,31,,679", ",31,17,,,,31,,765,1081,,,1081,,,1081,765,1081,,,,,,764,764,765,765,", ",,,,1074,18,,,31,,242,242,242,242,18,,18,,,,,,31,31,31,,,,,,,679,,435", "448,,679,679,,,,,,31,,,,,,,,,1111,,1112,,1113,1081,,1081,,1081,,1081", ",,,,1209,1211,1213,1215,,1216,,1002,,,,,1081,,,,,,,,,,,,,,,,,,,18,242", "442,242,242,442,242,,31,,,,18,1232,1233,1234,1235,,18,442,242,242,,", ",1237,,,,,,,,,,18,,573,,575,,,577,578,,,,31,,679,679,679,,,,,,31,,941", "765,,765,,,765,765,,,,,1183,765,1185,,,,,765,765,,242,,1002,,,765,765", "242,242,,,,,,,,242,,1204,,,,,,,,,,,,,,,764,18,,31,,18,,,764,345,18,765", ",31,,,,764,764,,,,,,,,,1225,345,1226,,1227,,20,,,,670,20,,18,31,,,31", ",,1196,,,1236,31,,,242,18,18,,,,,31,,,,31,,,,20,353,353,,,,242,,,,,", ",,,,,,,,679,,,31,,,31,31,20,716,31,,,,,,31,31,353,353,353,31,31,,,,", ",,,,,,,,,,,,,,,,,,,,,,765,242,,,,,,,,765,,,,765,,,,20,,,,,,,,,20,,20", ",,,,796,,381,,799,,,242,764,,764,,,764,764,,,242,,,764,,,,765,,764,764", ",,,,,,764,764,,,,,,796,,,381,,,,,,,,,,,,765,448,,,,,,,,,,,,,31,,,764", ",,,18,20,,20,,,20,,345,,242,,,20,,,31,345,,20,20,31,31,,866,,,,,,,,31", "796,381,,20,,18,,,18,,,,,,893,242,,31,,,,,,,,242,,,911,18,,,,,31,,,", ",,,,,,,,,,,,,,,,,,18,,,442,242,,,18,,,,,,442,442,,,,442,442,,,,,,,,20", ",,,20,,,764,353,20,,,,,,31,764,,,,764,,,,,796,,353,,,,,31,,976,,,977", ",20,,,,,31,,,,,,31,,,,20,20,31,,,,,,,,764,,,,,,,,31,,,,,,,,,,,,,,,,", ",,,,,,,764,,,,,,,,1005,,,345,,,,,15,,,,,15,345,,,,242,,,,,31,,,,,,,", ",,,,,,,,,,18,,,15,,18,242,,,,,31,31,,,,18,31,,,21,,,,,21,,,,,,15,,,442", ",,,,,,398,773,773,,,,,,,,18,,,,,21,347,347,,,31,,31,31,,,,,,,,,,,,31", ",,,,,1091,,21,,,,,15,,,,,396,405,405,,15,,15,381,20,,,31,,,,,353,,,", ",242,,,,353,,,,,,,,,,,,,18,,,,,,,,20,,21,20,242,,,771,771,,18,21,,21", ",,18,,,,,,,,20,,,,,,,,18,,,,1106,,,,,,,15,,440,,,440,,,20,,,20,15,,", "20,,,15,440,,20,20,,,,20,20,,,,,,,,15,,,,,,,,,18,,,,,,,,,21,,443,,1145", "443,,,,,,,21,,,,,,21,443,18,18,,,773,,18,,,,,,773,,,21,,,,,,773,773", ",770,770,,,,,,,,,,,,,,,,,15,,,,15,1187,,,18,15,242,242,,,,,,,,,,,,242", ",,,353,,,,,,,,,,,353,15,,,,,,,,,,,,,18,21,15,15,,21,,,,347,21,,,20,", "771,,,20,,,,,771,,,,,347,20,,,771,771,,,,,,,21,,,,,,,20,43,,,,,43,,21", "21,,,,,,,,20,,,,,,,,296,,,,,,,,,,,,43,343,343,,,773,,773,,,773,773,", ",,,,773,,,,,,773,773,,,,43,,,773,773,,,,,,392,296,296,,,,,,,,,,,,,,", ",,,769,769,,20,,,770,,,,,,773,,770,,,,,,,20,,770,770,,,20,43,,,,,,,", ",43,,43,,,,20,,768,768,353,,,,,771,15,771,,,771,771,,,,,,771,,,,,,771", "771,,,,,,,771,771,,,,,,,,,,,,15,,,15,,,,20,,,,,,,,21,,,,,353,,,347,15", ",771,,,,,43,347,,,,20,20,,,,,20,43,767,767,,,773,43,,15,,21,440,,21", "773,15,,,773,,,440,440,43,,,440,440,,,,,,,21,,,,,,353,856,,20,,,,,,", ",770,,770,,,770,770,,,,21,773,770,443,,,,21,770,770,,,,443,443,,770", "770,443,443,,,,769,,,20,,,,,769,,773,,,,,,,769,769,43,,,,43,,,771,343", "43,,,,770,,,771,,,,771,,,,,,768,343,,,,,,,768,,,,,43,,,,768,768,,,,", ",,,,,43,43,,,,,,,,,771,,,,,,,,,,,,,15,,,,,15,,,,,,,,,,347,15,,,771,", ",,,,,347,,,,,,,,440,,,,,767,,,,,,,,767,,,,15,,21,,,767,767,21,,,,,770", ",,,,,21,,,770,,,,770,,,,,,,769,,769,,443,769,769,,,,,,769,,,,,,769,769", ",21,,,,,769,769,,,,,,,,,,770,,766,766,,,,,768,,768,,15,768,768,,,,,", "768,,,,,,768,768,769,,15,,770,,768,768,15,,,,,,,,,,,,,,43,,15,,,,1109", ",343,,,,,,,21,,343,,,,,,768,,,,,,,,,,21,,,,,43,21,,43,,,,,,,767,,767", ",,767,767,21,,15,,1108,767,,43,,,,767,767,34,,,,,34,767,767,,,,,,,,", ",,15,15,,43,34,,15,,,,43,,,,34,34,34,,34,769,,,,,21,,,767,769,,,,769", ",,,,405,,,,,,,,,34,,,,15,34,34,21,21,34,,,,21,,,,,768,,,,,,,,,768,,", "769,768,,,,,,,766,,,,,,,,766,,15,,,,,,405,766,766,21,34,,,,769,34,34", "34,34,34,,34,,,,,,768,,,,,,,,,,,,,,,,343,,,,,,,,,,21,343,,,,,768,767", ",,,,,,,,767,,,,767,,,,,,,,43,,,,,43,,,,,,,,,,,43,,,,,,,34,34,34,34,34", "34,34,,,,,,34,767,,,,,34,34,34,34,,,,,,,43,,,,,,,34,,,,,,,,,,767,,,", ",,,,,,,,,,,,,,,,766,,766,,,766,766,,,,,,766,,,,34,,766,766,,,,34,34", ",766,766,,,,,34,,,,,,,,,,,,43,,,,,,34,,,,34,,,,,34,,,43,,,766,,,43,", ",,,,,,,,,,,,,,43,,,,1104,34,,,,,,,,,,,,,,34,34,34,,,,,,,,,,,,,,,,,,", "34,,,,,,,,,,,,,,,43,,,,,,,,,,,,,296,,,,,,,,,,,,,,,,43,43,,,,,43,,,,", ",,,,,,249,,,34,,,,766,,,317,317,317,,,,766,,,,766,,364,365,,367,368", ",370,,296,,,43,,,,,,,,,34,317,317,,,,,,,,34,,,,,,,,,,,,766,,,,,,,,,", ",,,43,,,,,,,,,,,,,,,,,,,766,,,,,,,,,,,,,,,,34,,,,,,,,,,34,,,,,,,,,,", ",,,,,,,,,,,,,,,,,34,,,34,,,,,,,34,,,,,,,,,,34,,,,34,,,,,,,,,,,,,,,,", ",,,,317,447,,,453,317,34,,,34,34,,,34,,,,,453,34,34,,,,34,34,,,,,,249", ",,,,,,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544", "545,546,547,548,549,550,,,,,551,,,,,,,,,,,,,,,,,,,,,,,317,317,,,,,,", ",317,,,,,,,317,,317,,,317,317,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,604,,,,,34,,,,,,,,,,,,,,,,,,,,,,,34,,,,,34,34,,,,,,,,,,34,,,,,,,,", ",,,,,,,,,34,,,,,317,,,,,,,,,,,,34,,,,,,,,,,,,,,,,,,,,,,,692,,,,,,,,", ",,,,,,,,,,,,,,,,,317,,,,,,,,,,,,,723,,34,,,,,,,,317,,453,453,453,,,", ",34,,,,,,,,,,,,34,,,,,,34,,,,,,34,,,,,,,365,,,,,,,,,34,317,,317,,317", ",,,,,,,,,,,,,,,317,,,,,,,,,,453,,,816,,817,,,,,,317,,,317,,,,,,,,,,34", ",,317,317,,,,,,,,,,317,,,,,,,,,,,,,,,34,34,,,,,34,,,,,,,,,,,,317,453", "317,,,,874,,,317,317,453,453,,,,453,453,,,,,,317,,,,,,,,,34,,34,34,", "317,,,,,,,,,,34,,,,,,,,,,,,,,692,723,,,,,,,,,,,,,,34,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,317,,,,,,,,,317,,,317,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,317,,,,,,,,453,,,,,,,,", ",,,,1010,1011,,,,,,,,,,,,,,,,,,,,,,,,,,,,1033,1034,453,453,453,453,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1067,,,,,,,,,,,,,,,,,,,,,,,,,", ",,317,,,,,,,,,,,,,,,,,,,317,,,,,,,,,,,,,,,,,,,,,,,,,,453,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,317"]; + racc_goto_table = (arr = $$$('Array').$new(4752, nil)); idx = 0; $send(clist, 'each', [], function $Ruby31$6(str){ @@ -20961,8 +20914,8 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ $writer[$rb_minus($writer["length"], 1)]; }; return (idx = $rb_plus(idx, 1));}, 1);}, 1); - clist = ["71,74,74,89,89,71,36,36,36,151,191,46,26,26,54,54,26,74,33,48,12,105", "191,31,71,23,111,76,76,33,23,90,72,32,85,85,71,71,71,10,114,81,81,108", "108,10,19,19,44,44,19,110,232,11,92,224,67,17,17,22,69,23,13,93,71,93", "115,26,26,26,26,109,24,24,71,71,71,123,81,81,81,56,85,41,41,50,223,223", "5,23,228,54,170,170,232,128,221,221,221,23,7,19,19,19,19,31,185,40,87", "87,114,9,87,28,218,218,88,88,88,71,122,180,168,79,63,132,132,28,71,142", "71,55,55,55,68,124,138,40,2,186,193,193,8,140,23,125,64,8,169,88,88", "150,150,23,229,23,57,6,5,26,26,232,144,154,200,195,195,3,62,62,62,73", "73,93,93,154,26,26,14,145,16,10,18,86,86,86,21,35,35,171,171,92,13,36", "89,217,217,207,207,171,25,27,42,43,45,49,8,51,59,77,82,84,91,71,74,20", "86,103,20,104,112,113,184,116,229,71,117,118,119,184,11,71,20,120,121", "126,130,26,23,33,23,135,136,23,143,191,146,147,71,142,23,22,22,148,149", "22,23,23,152,153,144,8,223,85,85,11,72,78,2,22,8,6,8,23,155,36,36,145", "185,157,93,78,158,33,36,161,110,185,69,162,218,163,123,164,165,115,123", "69,138,168,166,173,175,176,168,168,177,54,54,32,193,181,182,188,189", "140,198,199,1,31,89,122,203,32,26,204,89,150,71,205,169,169,71,206,209", "185,71,71,210,50,81,211,33,186,125,26,212,213,216,11,124,195,195,23", "11,71,142,23,19,81,33,222,23,114,226,86,86,71,208,208,208,208,227,,67", ",57,224,,,54,,71,71,32,,88,,,31,54,33,23,,88,,115,,,11,11,184,,,228", "72,,23,23,,184,5,,32,184,74,35,35,54,,63,114,32,7,,63,54,31,180,89,79", "40,68,,9,89,109,31,62,33,36,76,64,,,32,62,64,,,,10,86,86,,40,,13,184", ",56,86,,54,54,56,,,,5,8,17,31,,,,,,,36,,,,,,224,232,89,,36,184,,108", "123,123,,,223,,93,,,69,,32,,,74,,32,32,,90,,,221,221,,221,221,,221,71", "71,89,218,128,92,,,,,,167,167,40,,,,193,193,114,41,132,26,,139,24,139", "193,,170,87,,223,193,223,55,72,36,89,,150,55,224,,78,,78,,89,,28,28", ",71,,28,28,,74,,,71,,13,,81,,,74,,71,,,,81,36,89,193,23,,67,,44,,89", "36,,92,,67,208,71,208,,71,111,74,,,32,32,32,74,,,,,,11,40,,11,,,,71", "23,,,23,36,89,78,,,,,88,,,55,10,114,74,,,,,,,23,74,71,61,,20,,,61,71", "108,114,191,,,20,20,,,76,20,20,,,,61,,23,88,,23,123,123,,23,61,61,61", ",61,23,23,22,12,85,23,23,,,17,,,22,22,132,132,,22,22,221,221,221,221", ",78,78,,61,,78,78,105,61,61,,,61,71,,193,108,,108,,,71,,110,167,,133", ",,133,71,71,167,88,,46,151,28,,,,74,,48,,,,86,32,,,89,,,89,,,26,61,", "137,,137,61,61,61,61,61,,61,,71,,,,81,,10,,,8,,71,,,40,81,8,139,221", "67,19,,,,132,223,,,40,40,67,,225,,,,,71,,,,,71,86,,,,,,,,,,71,11,,,", ",,,,23,,,139,,23,,88,11,20,,223,127,,,10,23,,,61,61,61,61,61,61,61,71", "40,,,,61,26,,23,,,61,61,61,61,85,,11,10,85,22,,,,,23,,,61,,40,71,78", "71,,26,71,71,,40,19,,167,71,,40,,167,167,71,71,,,,,,,71,71,,167,,40", "54,,,,,,19,,,31,,61,78,78,78,78,,71,61,61,,,,,,191,,61,139,,,139,,71", "11,71,223,,,223,225,71,23,225,167,61,225,,225,61,,,11,,61,,,71,40,,23", "71,,40,40,81,23,,,,,,,,11,,133,114,,,,,23,,61,127,23,,127,,127,,,,,", ",,61,61,61,139,40,,137,,,,,223,,,71,,,,225,,225,61,225,,225,,,71,,,78", "81,,,,,,26,26,23,,225,71,71,,,,,71,,,,,33,137,,137,,137,11,127,71,127", ",127,11,127,23,23,,71,19,19,23,71,,,40,40,40,,36,89,127,,61,,40,,71", ",,71,81,,,,,,58,,,74,,58,,,,,11,,40,,,,,,23,71,,,58,,,61,,74,,,,,58", "58,58,61,58,71,133,,,133,,,133,,133,,,,,71,,,11,,,,,,,,23,65,58,,,,", "58,58,,137,58,137,,,,,,,,,,,,,83,,40,,,,,,61,,,,,137,134,134,134,,61", ",,,,,,,,133,,133,,133,58,133,61,,,58,58,58,58,58,,58,40,,61,,,61,133", ",65,,,137,61,137,,137,,,,,,,61,,,,61,,,,,65,,,137,,,,,,,,,,,,,,,,,,", "61,,,61,61,,,61,,,,,,61,61,,,,61,61,,,134,134,134,134,,134,,58,58,58", "58,58,58,58,,,30,,,58,,30,,,,58,58,58,58,83,83,,,,,,,,30,,,,58,,134", "134,134,134,30,30,30,,30,30,30,,134,,,,,,,,,,,,,,,,,,,,,,,,30,,,,,30", "30,,58,30,30,30,30,,65,58,58,,,,,,,,58,,,,,,,,,,,,95,95,,,,,58,,,,58", ",,,,58,83,65,83,30,,83,83,,30,30,30,30,30,,30,,61,,,,,61,61,,,,,,,58", ",,61,,,,,,,65,,,,58,58,58,,65,,65,61,,,65,,,,,,,,,,,58,,,61,,65,,,,", ",65,,,,,,,,,,,,,,,,,,,65,,,30,30,30,30,30,30,30,,,,,,30,,,,,83,30,30", "30,30,,,,,,,,,,58,,61,,30,,,,,,,,,,,,,,,61,,,,,,,,,,,,61,,,,,,61,,58", ",,,61,,,,83,,58,30,,,,,,,30,30,61,,,,,,,30,,,,,,65,95,,,,,,,29,95,,", "30,29,,,30,,95,95,30,30,,,,,,,,,,,,,,,,58,,30,,,61,,29,,,58,83,,83,30", "83,,,,107,107,,,,,,58,,30,30,30,,,61,61,29,,,58,61,,58,,,,,,,58,30,", ",83,,,83,,,58,,,,58,,,65,,,83,,,,,,,,,,,,,,,61,,61,61,,,58,29,,58,58", ",,58,,61,29,,29,58,58,,,,58,58,,,,83,30,,,,,,,,83,83,,,,,61,,,,,,,,83", ",,,,,95,,95,,,95,95,83,,,,30,95,,,,,65,95,95,,30,,,,,95,95,,,,,65,,", ",,,,,,,,29,,29,,,29,,,,,,,29,,,,,,29,29,,,95,,,,,,,,,65,,,,29,,,30,", ",,,,83,,30,,30,,,,107,83,,30,83,,,,107,,,,30,,,,,107,107,,,,,58,30,", ",30,58,58,,,,,30,,,,,58,,,,,30,,,,30,,,,65,65,65,,,58,,,,,,29,,,,29", "65,,83,,29,,58,30,,,30,30,,,30,,,,,,30,30,,,,30,30,70,95,98,98,,70,", "29,,,95,,,,95,,,,,,,,29,29,70,,,,,,,,,,,,70,70,70,,,,58,,,,,,,,,,,,", ",,,95,58,,,,,70,,,,,,,58,,,70,70,70,58,,,,,107,58,107,,,107,107,,95", ",,,107,,,83,,58,107,107,,,,,,,107,107,,,,30,,,83,,,70,,,102,102,30,", ",,70,,70,,,,,,,,,,,,,,,,,107,,,30,,,,58,30,30,,,,,,,,,,30,,,,,,,,,,", ",,,,,58,58,30,,,,58,,,,,,,,,,,,,30,,,,,,,,,,,,70,,29,,,,98,,,,,,70,", "98,,,,70,58,,58,58,98,98,,,,,,,,,,58,70,,,,,29,,,29,,,,96,96,,,30,,", ",,,,,,107,,,58,29,,,,30,107,,,,107,,,,,,,30,,,,,,30,,,,,29,30,,29,,", ",29,,,,,,29,29,,,30,29,29,,30,,,70,,107,,70,,,,70,70,,102,,,,,,,,102", ",,,,,,34,70,102,102,,34,,,107,,,,,70,,,,,,,,,30,,,,,,70,70,,,,,,30,34", "34,34,,,,98,,98,,,98,98,,30,30,,,98,,30,,,,98,98,,,34,,,,98,98,,,,,34", "34,34,,,,,,,,,,,,,,,,,,,,,30,,,30,,30,30,,,,98,,,,,,,,30,,,,34,29,,", "96,,29,,,34,,34,96,,,,,29,,,,96,96,,,30,,,,,,,,,,29,,,,,,,,102,,102", ",,102,102,,,29,,,102,,,,,,102,102,,,,,,,102,102,,,,,,,,,,,,,,,,,,,,", ",,,34,,34,,,34,,,70,,,,34,,102,,70,,34,34,98,,,,,70,,39,,98,,,39,98", ",34,,,29,,,,,,,,70,,,70,,,,,,,29,,,,,,29,39,39,39,,,,,70,,,,,,,98,29", ",,,,,,,,96,,96,,39,96,96,,97,97,70,,96,,39,39,39,70,96,96,,,98,,,,96", "96,34,,,,34,,,,34,34,,,,,,,,,29,,,,,,,102,,34,38,,,39,,38,102,,,96,102", "34,39,,39,,,,29,29,,,,,29,,34,34,,,,,,,,,38,38,38,,,,,,,,,,,,,,,,102", ",,,,,,,,,38,,,,29,,,,,,38,38,38,,,,,,,,,,102,70,,,,,,,,,,39,70,39,,", "39,,,,,,,39,,,29,,,39,39,,,38,,,,,70,,,,38,70,38,,39,,,96,,,,,70,,,", "96,,,,96,,,,,,,,,,,,,,,,100,100,,,,97,,,,,,70,,97,,,,,,,,,97,97,,,,", "96,,,,,,,,,,,,,,,,,,,,39,38,,38,39,,38,34,39,39,,,96,38,,34,,,,38,38", ",,,34,,,39,,,,,,,,,38,,,39,,,,70,,34,,,34,,,,,,39,39,,,,,,70,,,,,,70", ",34,,,,,,,,,,,,,,70,,,,70,,101,101,,,,,,34,,,34,,,,34,,,,,,34,34,,,", "34,34,38,,,,38,,,,38,38,,,,,,,,,97,,97,,70,97,97,,,38,,,97,,,,,70,97", "97,,38,,,,,97,97,,,,,70,70,,100,38,38,70,,,,,100,,,,,,,,,100,100,,,", ",,,,,,,,97,,,,,,,,,,,,,,70,,,70,,,,,,,,,,,,,34,,,,,,,,,,,34,,,,,,,39", ",,,,,,,39,,,,,70,,,,39,,34,,,,,34,,,,,,,,,,,34,,,39,,,39,,,,,,,,,,99", "99,34,,,,,,101,,,39,,,,,101,,39,34,,,,,,101,101,97,,,,,,,,,97,,39,,97", "39,,,,39,,,100,,100,39,39,100,100,,39,39,,,100,,,,,38,100,100,,,,,,38", "100,100,,,,,,,38,,97,,,,,,,,,,,,,,,34,,,,38,,,38,,,,,,,100,,,97,34,", ",,,,34,,,,38,,,,,,,,,,,,34,,,,34,,,,,,,,,,,38,,,38,,,,38,,,,,,38,38", ",,39,38,38,,,,,,,,,39,,,101,,101,,,101,101,,,34,,,101,,,,,,101,101,", ",34,39,,,101,101,39,,,,99,,,,,34,34,39,99,,,34,,,,,,99,99,,,,100,,,39", ",,,,,100,,101,,100,,,,,,,39,,,,,,,,,,34,,,34,,,,,,,,,,,,,,,38,,,,,37", ",,,100,,38,,,,37,37,37,,,,,,,,,,37,37,34,37,37,,37,,,,38,,,,100,38,", ",,,,37,37,,,39,38,,,,,,,,,,,,,,,,,39,38,,,,,39,,,,,,,,,,,,38,101,,,39", ",,,39,,101,,,,101,,,,,99,,99,,,99,99,,,,,,99,,,,,,99,99,,,,,,,99,99", ",,,,,,,,,,,101,39,,,,,,,,,,,,,39,,,,,,,,38,,,,99,,,39,39,,101,,,39,", ",,,38,,,,,,38,,,,,37,37,,,37,37,,,,,,38,,,,38,,,37,,,,,,,39,,,39,,,37", ",,,,,,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37", "37,,,,,37,,38,,,,,,39,,,,,,,38,,,,,,,,37,37,,,,,,38,38,37,,,,38,99,", "37,,37,,,37,37,99,,,,99,,,,,,,,,,,,,,,,,,,,,,,,,,,38,,,38,,,,,,37,,37", ",,,,,99,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,38,,99,,,,,,,,,,,,,,,,,,,,,,,,", ",,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,37", ",,,,,,,,,,,,37,,,,,,,,,,37,,37,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,37,,,,,,,,,,37,,37,,37,,,,,,,,,,,,,,,,37,,,,,,,,,,37,,,37,,,,,,", ",37,,,37,,,,,,,,,,,,,37,37,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,37,37,37,,,,37,,,37,37,37,37,,,,37,37,,,,,,37,,,,,,,,,,,,,37,,,,", ",,,,,,,,,,,,,,,,,,,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,37,,,,,,,,,37,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,37,,,,,,,,,,,,,37,37,,,,,,,,,,", ",,,,,,,,,,,,,,,,37,37,37,37,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,37,,,,,,,,,", ",,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,37"]; - racc_goto_check = (arr = $$$('Array').$new(4695, nil)); + clist = ["72,198,158,91,91,72,75,75,36,36,36,68,46,198,31,230,230,48,107,19,19", "10,75,19,72,34,112,10,128,113,34,12,55,55,82,82,72,72,72,73,117,139", "139,94,33,110,110,11,92,228,228,228,77,77,13,33,135,70,133,22,111,34", "34,34,72,9,44,44,80,17,17,82,82,82,72,72,72,19,19,19,19,239,87,87,56", "56,56,235,8,34,95,20,95,8,20,51,31,32,187,34,34,34,69,41,41,177,177", "58,20,55,117,7,24,24,149,28,26,26,119,57,26,129,72,239,89,89,152,192", "89,28,87,72,231,72,151,225,225,200,200,5,35,35,64,193,2,157,157,34,90", "90,90,127,8,147,130,236,34,145,34,207,161,6,3,10,214,214,29,14,65,178", "178,29,161,16,26,26,26,26,18,178,94,90,90,175,224,224,13,21,66,25,239", "230,176,74,74,27,42,91,36,43,95,95,29,45,202,202,50,52,60,5,8,78,215", "215,215,215,72,83,84,8,86,8,75,93,152,236,105,11,72,106,29,114,151,116", "72,149,198,120,121,122,123,34,124,34,128,125,34,126,128,131,136,72,142", "34,22,22,143,150,22,34,34,112,11,146,66,146,26,26,33,88,88,88,22,73", "153,154,34,2,6,155,36,36,156,26,26,70,159,66,29,36,160,162,164,165,70", "168,169,29,170,29,192,171,88,172,173,180,182,200,95,192,31,225,33,183", "87,87,63,63,63,184,145,157,188,91,189,55,55,147,58,91,195,72,68,196", "19,72,82,129,205,72,72,206,149,1,26,210,11,211,193,212,119,11,51,127", "130,82,34,192,72,213,34,216,175,217,34,34,117,175,175,218,72,33,35,35", "32,219,176,176,80,220,31,223,29,34,29,72,72,29,32,33,229,9,202,202,29", "34,11,11,55,233,29,29,234,69,235,,,187,55,,34,34,,73,,,,29,31,8,33,90", ",75,117,66,230,111,31,90,,26,91,10,,,55,7,91,,,64,,,55,36,64,128,128", "32,,119,26,13,88,88,215,231,215,,,139,,31,66,5,,65,33,77,228,228,65", "228,228,,228,,,32,,55,55,230,36,230,17,,32,,91,,,133,36,,110,29,57,", "70,29,66,57,,,29,40,,,66,32,66,56,79,75,66,94,239,56,,,,5,,72,72,91", "79,95,92,,66,,146,,29,40,66,200,200,88,88,20,117,,225,,,200,88,29,29", "20,20,200,157,66,20,20,68,174,174,91,36,41,231,177,73,68,89,32,,91,28", "28,32,32,72,28,28,13,146,82,191,,72,24,75,63,,191,82,,,72,,63,75,200", "94,91,36,34,,,,,56,91,,34,36,,,,72,,,72,34,,,,113,44,75,11,,,11,,75", ",,139,139,10,,,72,34,,135,34,231,91,36,128,128,,,,,,,,117,,,,,,75,66", "34,198,72,,,140,75,,140,72,,117,110,228,228,228,228,,,90,,,,32,32,32", ",34,,,34,,146,,34,146,,,,,34,34,22,,77,34,34,,,,,,22,22,,12,,22,22,", "90,17,,112,,,,,,107,,,,,,,139,200,72,29,,20,,110,,110,72,,,230,8,,87", ",158,72,72,8,,191,,46,28,,,146,48,228,191,,68,75,191,,174,,91,29,,91", "29,68,174,10,,,,,,90,19,,,82,,,72,230,,,,29,,,82,,,72,79,,79,,,,,,191", ",,,,34,,,,,132,,29,40,,29,34,,72,29,,32,,72,,29,29,,,11,29,29,191,,72", ",,40,10,,66,88,26,34,,11,,,34,,,,,,,66,,,,34,,,,,,,,,10,72,79,26,,,", ",,34,,,11,90,,19,,,,,,22,,,,,34,,230,66,,230,,72,,72,,,72,72,88,66,", ",19,72,,,,40,,72,72,,,,140,,,72,72,,,31,87,,,,87,174,,,,,174,174,,,198", ",,55,72,,79,79,,174,,79,79,,,11,,,,,72,,72,230,66,66,66,132,72,34,132", ",132,11,26,,,,29,,66,,,29,72,82,,34,72,,,,59,34,29,11,174,59,,,,,,26", "117,,,40,,34,,,29,34,59,,,,,,,,,,59,59,59,,59,29,,,,,,,,,,72,132,,132", ",132,,132,,,82,,,72,,,,59,,,,,59,59,132,34,59,,,72,72,19,19,,,72,,,34", "140,11,,140,,,140,11,140,72,,144,,144,,34,34,,72,,,34,72,,,,,33,,,91", "36,29,,82,,59,72,98,98,72,59,59,59,59,59,,59,,,29,11,,,,75,29,,,,,79", "34,,,34,72,,,,,,29,,,,140,,140,75,140,,140,,72,,,,,26,26,,,,,11,,232", "72,140,,,,,,79,79,79,79,34,40,,,,,,,,,,,,,,40,40,,29,,,59,59,59,59,59", "59,59,,,,,,59,,,,,,59,59,59,59,,,,,29,29,85,30,,,29,,30,59,,,,,,,,,", ",,,,,,30,,,,40,,,,,,30,30,30,,30,30,30,,,,,,,,,29,,,,,59,,,,40,,,59", "59,,79,,30,40,,,59,30,30,40,,30,30,30,30,,,141,141,141,,,,,59,,40,,59", "29,,,,59,,98,232,,,232,,,232,98,232,,,,,,97,97,98,98,,,,,,144,30,,,59", ",30,30,30,30,30,,30,,,,,,59,59,59,,,,,,,40,,85,85,,40,40,,,,,,59,,,", ",,,,,144,,144,,144,232,,232,,232,,232,,,,,141,141,141,141,,141,,40,", ",,,232,,,,,,,,,,,,,,,,,,,30,30,30,30,30,30,30,,59,,,,30,141,141,141", "141,,30,30,30,30,,,,141,,,,,,,,,,30,,85,,85,,,85,85,,,,59,,40,40,40", ",,,,,59,,40,98,,98,,,98,98,,,,,144,98,144,,,,,98,98,,30,,40,,,98,98", "30,30,,,,,,,,30,,144,,,,,,,,,,,,,,,97,30,,59,,30,,,97,30,30,98,,59,", ",,97,97,,,,,,,,,144,30,144,,144,,38,,,,85,38,,30,59,,,59,,,40,,,144", "59,,,30,30,30,,,,,59,,,,59,,,,38,38,38,,,,30,,,,,,,,,,,,,,40,,,59,,", "59,59,38,85,59,,,,,,59,59,38,38,38,59,59,,,,,,,,,,,,,,,,,,,,,,,,,,,98", "30,,,,,,,,98,,,,98,,,,38,,,,,,,,,38,,38,,,,,85,,85,,85,,,30,97,,97,", ",97,97,,,30,,,97,,,,98,,97,97,,,,,,,97,97,,,,,,85,,,85,,,,,,,,,,,,98", "85,,,,,,,,,,,,,59,,,97,,,,30,38,,38,,,38,,30,,30,,,38,,,59,30,,38,38", "59,59,,85,,,,,,,,59,85,85,,38,,30,,,30,,,,,,85,30,,59,,,,,,,,30,,,85", "30,,,,,59,,,,,,,,,,,,,,,,,,,,,,30,,,30,30,,,30,,,,,,30,30,,,,30,30,", ",,,,,,38,,,,38,,,97,38,38,,,,,,59,97,,,,97,,,,,85,,38,,,,,59,,85,,,85", ",38,,,,,59,,,,,,59,,,,38,38,59,,,,,,,,97,,,,,,,,59,,,,,,,,,,,,,,,,,", ",,,,,,97,,,,,,,,85,,,30,,,,,23,,,,,23,30,,,,30,,,,,59,,,,,,,,,,,,,,", ",,,30,,,23,,30,30,,,,,59,59,,,,30,59,,,39,,,,,39,,,,,,23,,,30,,,,,,", "23,109,109,,,,,,,,30,,,,,39,39,39,,,59,,59,59,,,,,,,,,,,,59,,,,,,85", ",39,,,,,23,,,,,39,39,39,,23,,23,85,38,,,59,,,,,38,,,,,30,,,,38,,,,,", ",,,,,,,30,,,,,,,,38,,39,38,30,,,104,104,,30,39,,39,,,30,,,,,,,,38,,", ",,,,,30,,,,30,,,,,,,23,,23,,,23,,,38,,,38,23,,,38,,,23,23,,38,38,,,", "38,38,,,,,,,,23,,,,,,,,,30,,,,,,,,,39,,39,,30,39,,,,,,,39,,,,,,39,39", "30,30,,,109,,30,,,,,,109,,,39,,,,,,109,109,,103,103,,,,,,,,,,,,,,,,", "23,,,,23,30,,,30,23,30,30,,,,,,,,,,,,30,,,,38,,,,,,,,,,,38,23,,,,,,", ",,,,,,30,39,23,23,,39,,,,39,39,,,38,,104,,,38,,,,,104,,,,,39,38,,,104", "104,,,,,,,39,,,,,,,38,71,,,,,71,,39,39,,,,,,,,38,,,,,,,,71,,,,,,,,,", ",,71,71,71,,,109,,109,,,109,109,,,,,,109,,,,,,109,109,,,,71,,,109,109", ",,,,,71,71,71,,,,,,,,,,,,,,,,,,102,102,,38,,,103,,,,,,109,,103,,,,,", ",38,,103,103,,,38,71,,,,,,,,,71,,71,,,,38,,101,101,38,,,,,104,23,104", ",,104,104,,,,,,104,,,,,,104,104,,,,,,,104,104,,,,,,,,,,,,23,,,23,,,", "38,,,,,,,,39,,,,,38,,,39,23,,104,,,,,71,39,,,,38,38,,,,,38,71,100,100", ",,109,71,,23,,39,23,,39,109,23,,,109,,,23,23,71,,,23,23,,,,,,,39,,,", ",,38,39,,38,,,,,,,,103,,103,,,103,103,,,,39,109,103,39,,,,39,103,103", ",,,39,39,,103,103,39,39,,,,102,,,38,,,,,102,,109,,,,,,,102,102,71,,", ",71,,,104,71,71,,,,103,,,104,,,,104,,,,,,101,71,,,,,,,101,,,,,71,,,", "101,101,,,,,,,,,,71,71,,,,,,,,,104,,,,,,,,,,,,,23,,,,,23,,,,,,,,,,39", "23,,,104,,,,,,,39,,,,,,,,23,,,,,100,,,,,,,,100,,,,23,,39,,,100,100,39", ",,,,103,,,,,,39,,,103,,,,103,,,,,,,102,,102,,39,102,102,,,,,,102,,,", ",,102,102,,39,,,,,102,102,,,,,,,,,,103,,99,99,,,,,101,,101,,23,101,101", ",,,,,101,,,,,,101,101,102,,23,,103,,101,101,23,,,,,,,,,,,,,,71,,23,", ",,23,,71,,,,,,,39,,71,,,,,,101,,,,,,,,,,39,,,,,71,39,,71,,,,,,,100,", "100,,,100,100,39,,23,,39,100,,71,,,,100,100,62,,,,,62,100,100,,,,,,", ",,,,23,23,,71,62,,23,,,,71,,,,62,62,62,,62,102,,,,,39,,,100,102,,,,102", ",,,,39,,,,,,,,,62,,,,23,62,62,39,39,62,,,,39,,,,,101,,,,,,,,,101,,,102", "101,,,,,,,99,,,,,,,,99,,23,,,,,,39,99,99,39,62,,,,102,62,62,62,62,62", ",62,,,,,,101,,,,,,,,,,,,,,,,71,,,,,,,,,,39,71,,,,,101,100,,,,,,,,,100", ",,,100,,,,,,,,71,,,,,71,,,,,,,,,,,71,,,,,,,62,62,62,62,62,62,62,,,,", ",62,100,,,,,62,62,62,62,,,,,,,71,,,,,,,62,,,,,,,,,,100,,,,,,,,,,,,,", ",,,,,,99,,99,,,99,99,,,,,,99,,,,62,,99,99,,,,62,62,,99,99,,,,,62,,,", ",,,,,,,,71,,,,,,62,,,,62,,,,,62,,,71,,,99,,,71,,,,,,,,,,,,,,,,71,,,", "71,62,,,,,,,,,,,,,,62,62,62,,,,,,,,,,,,,,,,,,,62,,,,,,,,,,,,,,,71,,", ",,,,,,,,,,71,,,,,,,,,,,,,,,,71,71,,,,,71,,,,,,,,,,,37,,,62,,,,99,,,37", "37,37,,,,99,,,,99,,37,37,,37,37,,37,,71,,,71,,,,,,,,,62,37,37,,,,,,", ",62,,,,,,,,,,,,99,,,,,,,,,,,,,71,,,,,,,,,,,,,,,,,,,99,,,,,,,,,,,,,,", ",62,,,,,,,,,,62,,,,,,,,,,,,,,,,,,,,,,,,,,,,62,,,62,,,,,,,62,,,,,,,,", ",62,,,,62,,,,,,,,,,,,,,,,,,,,,37,37,,,37,37,62,,,62,62,,,62,,,,,37,62", "62,,,,62,62,,,,,,37,,,,,,,37,37,37,37,37,37,37,37,37,37,37,37,37,37", "37,37,37,37,37,37,37,37,,,,,37,,,,,,,,,,,,,,,,,,,,,,,37,37,,,,,,,,37", ",,,,,,37,,37,,,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,", "62,,,,,,,,,,,,,,,,,,,,,,,62,,,,,62,62,,,,,,,,,,62,,,,,,,,,,,,,,,,,,62", ",,,,37,,,,,,,,,,,,62,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,", ",,,37,,,,,,,,,,,,,37,,62,,,,,,,,37,,37,37,37,,,,,62,,,,,,,,,,,,62,,", ",,,62,,,,,,62,,,,,,,37,,,,,,,,,62,37,,37,,37,,,,,,,,,,,,,,,,37,,,,,", ",,,,37,,,37,,37,,,,,,37,,,37,,,,,,,,,,62,,,37,37,,,,,,,,,,37,,,,,,,", ",,,,,,,62,62,,,,,62,,,,,,,,,,,,37,37,37,,,,37,,,37,37,37,37,,,,37,37", ",,,,,37,,,,,,,,,62,,62,62,,37,,,,,,,,,,62,,,,,,,,,,,,,,37,37,,,,,,,", ",,,,,,62,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,37,,,37", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37", ",,,,,,,37,,,,,,,,,,,,,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,37,37,37,37", "37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,", ",,,,37,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37"]; + racc_goto_check = (arr = $$$('Array').$new(4752, nil)); idx = 0; $send(clist, 'each', [], function $Ruby31$8(str){ @@ -20980,16 +20933,16 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ $writer[$rb_minus($writer["length"], 1)]; }; return (idx = $rb_plus(idx, 1));}, 1);}, 1); - racc_goto_pointer = [nil, 318, 136, 167, nil, 83, 150, 95, 140, 102, -188, 15, -449, -628, -707, nil, -397, 47, 171, -25, -2, 110, 35, 23, -144, -16, -59, 68, -107, 1689, 1365, -198, -418, 0, 2403, 168, -28, 3539, 2759, 2643, 84, -441, -50, -50, -25, -415, -15, nil, -7, 179, 56, -342, nil, nil, -208, 100, -221, -406, 1143, -347, nil, 663, 134, 86, 108, 972, nil, 17, 94, -297, 2049, -2, -367, 94, -9, nil, 17, -219, 47, 75, nil, 2, 159, 1164, 144, 15, 149, -265, 82, -28, -272, -340, -263, -504, nil, 943, 1787, 2189, 1529, 2747, 2401, 2538, 1649, 191, 151, -48, nil, 1215, -338, -747, -336, -596, 144, -182, 35, 46, 158, -144, 161, -408, -610, -171, -787, -414, -356, -763, -672, -95, -599, nil, -730, nil, -349, 58, 178, -827, -724, 86, -830, -152, -644, nil, -717, -848, -930, -913, -160, -598, 171, -386, -79, -18, -736, -736, -388, -23, nil, -28, -26, nil, nil, -494, -796, -692, -920, -534, -841, 9, -619, -593, -432, -734, nil, -618, nil, -618, -437, -434, nil, nil, -621, -431, -431, nil, -708, -831, -779, nil, -626, -625, nil, -77, nil, -384, nil, -593, nil, nil, -455, -374, -725, nil, nil, 237, 235, 238, 241, -214, -41, 241, 244, 246, -300, -300, nil, nil, -289, -154, -116, nil, nil, -382, -337, -144, -643, -137, -330, -753, -610, -977, nil, nil, -517]; - racc_goto_default = [nil, nil, nil, nil, 5, nil, 6, 388, 331, nil, nil, 469, nil, 978, nil, 328, 329, nil, nil, nil, 13, 14, 22, 244, nil, nil, 16, nil, 438, 245, 360, nil, nil, 634, 248, nil, 27, 25, 249, 243, 514, nil, nil, nil, nil, nil, nil, 383, 140, nil, nil, nil, 28, 29, 808, nil, nil, nil, 348, nil, 30, 345, 452, 37, nil, nil, 39, 42, 41, nil, 240, 241, 400, nil, 460, 139, 84, nil, 443, 100, 51, 54, 280, 320, nil, 886, 453, nil, 454, 465, 477, 683, 566, 318, 304, 55, 56, 57, 58, 59, 60, 61, 62, 63, nil, 305, 69, 70, nil, nil, nil, nil, nil, nil, 616, 227, nil, nil, nil, nil, nil, nil, 707, 489, nil, 708, 709, 475, 471, 472, 1172, 1065, nil, 476, nil, nil, nil, 478, nil, 480, nil, 965, nil, nil, nil, 487, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 464, nil, nil, 787, 779, nil, nil, nil, nil, nil, nil, 1045, nil, 732, 931, 734, 735, 739, 736, 737, nil, nil, 738, 740, nil, nil, nil, 930, 932, nil, 744, 746, 747, 748, 749, nil, 753, 498, 754, 755, 756, 757, nil, nil, nil, 83, 85, 86, nil, nil, nil, nil, 644, nil, nil, nil, nil, nil, 96, 97, nil, 228, 896, 231, 474, nil, 479, 904, 492, 494, 495, 1076, 499, 1077, 502, 505, 323]; - racc_reduce_table = [0, 0, "racc_error", 0, 150, "_reduce_1", 2, 148, "_reduce_2", 2, 149, "_reduce_3", 0, 151, "_reduce_4", 1, 151, "_reduce_5", 3, 151, "_reduce_6", 2, 151, "_reduce_7", 1, 153, "_reduce_none", 2, 153, "_reduce_9", 3, 156, "_reduce_10", 4, 157, "_reduce_11", 2, 158, "_reduce_12", 0, 162, "_reduce_13", 1, 162, "_reduce_14", 3, 162, "_reduce_15", 2, 162, "_reduce_16", 1, 163, "_reduce_none", 2, 163, "_reduce_18", 0, 174, "_reduce_19", 4, 155, "_reduce_20", 3, 155, "_reduce_21", 3, 155, "_reduce_22", 3, 155, "_reduce_23", 2, 155, "_reduce_24", 3, 155, "_reduce_25", 3, 155, "_reduce_26", 3, 155, "_reduce_27", 3, 155, "_reduce_28", 3, 155, "_reduce_29", 4, 155, "_reduce_30", 1, 155, "_reduce_none", 3, 155, "_reduce_32", 3, 155, "_reduce_33", 5, 155, "_reduce_34", 3, 155, "_reduce_35", 1, 155, "_reduce_none", 3, 167, "_reduce_37", 3, 167, "_reduce_38", 6, 167, "_reduce_39", 5, 167, "_reduce_40", 5, 167, "_reduce_41", 5, 167, "_reduce_42", 5, 167, "_reduce_43", 4, 167, "_reduce_44", 6, 167, "_reduce_45", 4, 167, "_reduce_46", 6, 167, "_reduce_47", 3, 167, "_reduce_48", 1, 175, "_reduce_none", 3, 175, "_reduce_50", 1, 175, "_reduce_none", 1, 173, "_reduce_none", 3, 173, "_reduce_53", 3, 173, "_reduce_54", 3, 173, "_reduce_55", 2, 173, "_reduce_56", 0, 189, "_reduce_57", 4, 173, "_reduce_58", 0, 190, "_reduce_59", 4, 173, "_reduce_60", 1, 173, "_reduce_none", 1, 166, "_reduce_none", 0, 194, "_reduce_63", 3, 191, "_reduce_64", 1, 193, "_reduce_65", 2, 181, "_reduce_66", 0, 198, "_reduce_67", 5, 185, "_reduce_68", 1, 169, "_reduce_none", 1, 169, "_reduce_none", 1, 199, "_reduce_none", 4, 199, "_reduce_72", 0, 206, "_reduce_73", 4, 203, "_reduce_74", 1, 205, "_reduce_none", 2, 183, "_reduce_76", 3, 183, "_reduce_77", 4, 183, "_reduce_78", 5, 183, "_reduce_79", 4, 183, "_reduce_80", 5, 183, "_reduce_81", 2, 183, "_reduce_82", 2, 183, "_reduce_83", 2, 183, "_reduce_84", 2, 183, "_reduce_85", 2, 183, "_reduce_86", 1, 168, "_reduce_87", 3, 168, "_reduce_88", 1, 211, "_reduce_89", 3, 211, "_reduce_90", 1, 210, "_reduce_none", 2, 210, "_reduce_92", 3, 210, "_reduce_93", 5, 210, "_reduce_94", 2, 210, "_reduce_95", 4, 210, "_reduce_96", 2, 210, "_reduce_97", 4, 210, "_reduce_98", 1, 210, "_reduce_99", 3, 210, "_reduce_100", 1, 214, "_reduce_none", 3, 214, "_reduce_102", 2, 213, "_reduce_103", 3, 213, "_reduce_104", 1, 216, "_reduce_105", 3, 216, "_reduce_106", 1, 215, "_reduce_107", 1, 215, "_reduce_108", 4, 215, "_reduce_109", 3, 215, "_reduce_110", 3, 215, "_reduce_111", 3, 215, "_reduce_112", 3, 215, "_reduce_113", 2, 215, "_reduce_114", 1, 215, "_reduce_115", 1, 170, "_reduce_116", 1, 170, "_reduce_117", 4, 170, "_reduce_118", 3, 170, "_reduce_119", 3, 170, "_reduce_120", 3, 170, "_reduce_121", 3, 170, "_reduce_122", 2, 170, "_reduce_123", 1, 170, "_reduce_124", 1, 219, "_reduce_125", 1, 219, "_reduce_none", 2, 220, "_reduce_127", 1, 220, "_reduce_128", 3, 220, "_reduce_129", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 164, "_reduce_135", 1, 164, "_reduce_none", 1, 165, "_reduce_137", 0, 224, "_reduce_138", 4, 165, "_reduce_139", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 3, 184, "_reduce_211", 3, 184, "_reduce_212", 6, 184, "_reduce_213", 5, 184, "_reduce_214", 5, 184, "_reduce_215", 5, 184, "_reduce_216", 5, 184, "_reduce_217", 4, 184, "_reduce_218", 3, 184, "_reduce_219", 3, 184, "_reduce_220", 3, 184, "_reduce_221", 2, 184, "_reduce_222", 2, 184, "_reduce_223", 2, 184, "_reduce_224", 2, 184, "_reduce_225", 3, 184, "_reduce_226", 3, 184, "_reduce_227", 3, 184, "_reduce_228", 3, 184, "_reduce_229", 3, 184, "_reduce_230", 3, 184, "_reduce_231", 4, 184, "_reduce_232", 2, 184, "_reduce_233", 2, 184, "_reduce_234", 3, 184, "_reduce_235", 3, 184, "_reduce_236", 3, 184, "_reduce_237", 3, 184, "_reduce_238", 1, 184, "_reduce_none", 3, 184, "_reduce_240", 3, 184, "_reduce_241", 3, 184, "_reduce_242", 3, 184, "_reduce_243", 3, 184, "_reduce_244", 2, 184, "_reduce_245", 2, 184, "_reduce_246", 3, 184, "_reduce_247", 3, 184, "_reduce_248", 3, 184, "_reduce_249", 3, 184, "_reduce_250", 3, 184, "_reduce_251", 6, 184, "_reduce_252", 4, 184, "_reduce_253", 6, 184, "_reduce_254", 4, 184, "_reduce_255", 6, 184, "_reduce_256", 1, 184, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 3, 227, "_reduce_262", 3, 227, "_reduce_263", 1, 230, "_reduce_none", 1, 231, "_reduce_none", 2, 231, "_reduce_none", 4, 231, "_reduce_267", 2, 231, "_reduce_268", 1, 225, "_reduce_none", 3, 225, "_reduce_270", 3, 236, "_reduce_271", 5, 236, "_reduce_272", 3, 236, "_reduce_273", 0, 238, "_reduce_274", 1, 238, "_reduce_none", 0, 178, "_reduce_276", 1, 178, "_reduce_none", 2, 178, "_reduce_none", 4, 178, "_reduce_279", 2, 178, "_reduce_280", 1, 209, "_reduce_281", 2, 209, "_reduce_282", 2, 209, "_reduce_283", 4, 209, "_reduce_284", 1, 209, "_reduce_285", 0, 241, "_reduce_286", 2, 202, "_reduce_287", 2, 240, "_reduce_288", 1, 240, "_reduce_289", 2, 239, "_reduce_290", 0, 239, "_reduce_291", 1, 233, "_reduce_292", 2, 233, "_reduce_293", 3, 233, "_reduce_294", 4, 233, "_reduce_295", 1, 172, "_reduce_296", 1, 172, "_reduce_none", 3, 171, "_reduce_298", 4, 171, "_reduce_299", 2, 171, "_reduce_300", 1, 228, "_reduce_none", 1, 228, "_reduce_none", 1, 228, "_reduce_none", 1, 228, "_reduce_none", 1, 228, "_reduce_none", 1, 228, "_reduce_none", 1, 228, "_reduce_none", 1, 228, "_reduce_none", 1, 228, "_reduce_none", 1, 228, "_reduce_none", 1, 228, "_reduce_311", 0, 263, "_reduce_312", 4, 228, "_reduce_313", 0, 264, "_reduce_314", 4, 228, "_reduce_315", 0, 265, "_reduce_316", 4, 228, "_reduce_317", 3, 228, "_reduce_318", 3, 228, "_reduce_319", 2, 228, "_reduce_320", 3, 228, "_reduce_321", 3, 228, "_reduce_322", 1, 228, "_reduce_323", 4, 228, "_reduce_324", 3, 228, "_reduce_325", 1, 228, "_reduce_326", 5, 228, "_reduce_327", 4, 228, "_reduce_328", 3, 228, "_reduce_329", 2, 228, "_reduce_330", 1, 228, "_reduce_none", 2, 228, "_reduce_332", 1, 228, "_reduce_none", 6, 228, "_reduce_334", 6, 228, "_reduce_335", 4, 228, "_reduce_336", 4, 228, "_reduce_337", 5, 228, "_reduce_338", 4, 228, "_reduce_339", 5, 228, "_reduce_340", 6, 228, "_reduce_341", 0, 266, "_reduce_342", 6, 228, "_reduce_343", 0, 267, "_reduce_344", 7, 228, "_reduce_345", 0, 268, "_reduce_346", 5, 228, "_reduce_347", 4, 228, "_reduce_348", 4, 228, "_reduce_349", 1, 228, "_reduce_350", 1, 228, "_reduce_351", 1, 228, "_reduce_352", 1, 228, "_reduce_353", 1, 177, "_reduce_none", 1, 208, "_reduce_355", 1, 255, "_reduce_none", 1, 255, "_reduce_none", 2, 255, "_reduce_358", 1, 192, "_reduce_none", 1, 192, "_reduce_none", 1, 256, "_reduce_none", 5, 256, "_reduce_362", 1, 160, "_reduce_none", 2, 160, "_reduce_364", 1, 259, "_reduce_none", 1, 259, "_reduce_none", 1, 269, "_reduce_367", 3, 269, "_reduce_368", 1, 272, "_reduce_369", 3, 272, "_reduce_370", 1, 271, "_reduce_none", 3, 271, "_reduce_372", 5, 271, "_reduce_373", 1, 271, "_reduce_374", 3, 271, "_reduce_375", 2, 273, "_reduce_376", 1, 273, "_reduce_377", 1, 274, "_reduce_none", 1, 274, "_reduce_none", 4, 277, "_reduce_380", 2, 277, "_reduce_381", 2, 277, "_reduce_382", 1, 277, "_reduce_383", 2, 281, "_reduce_384", 0, 281, "_reduce_385", 1, 282, "_reduce_none", 6, 283, "_reduce_387", 8, 283, "_reduce_388", 4, 283, "_reduce_389", 6, 283, "_reduce_390", 4, 283, "_reduce_391", 2, 283, "_reduce_none", 6, 283, "_reduce_393", 2, 283, "_reduce_394", 4, 283, "_reduce_395", 6, 283, "_reduce_396", 2, 283, "_reduce_397", 4, 283, "_reduce_398", 2, 283, "_reduce_399", 4, 283, "_reduce_400", 1, 283, "_reduce_none", 0, 287, "_reduce_402", 1, 287, "_reduce_403", 3, 288, "_reduce_404", 4, 288, "_reduce_405", 1, 289, "_reduce_406", 4, 289, "_reduce_407", 1, 290, "_reduce_408", 3, 290, "_reduce_409", 1, 291, "_reduce_410", 1, 291, "_reduce_none", 0, 295, "_reduce_412", 0, 296, "_reduce_413", 5, 254, "_reduce_414", 4, 293, "_reduce_415", 1, 293, "_reduce_416", 0, 299, "_reduce_417", 4, 294, "_reduce_418", 0, 300, "_reduce_419", 4, 294, "_reduce_420", 0, 302, "_reduce_421", 4, 298, "_reduce_422", 2, 200, "_reduce_423", 4, 200, "_reduce_424", 5, 200, "_reduce_425", 5, 200, "_reduce_426", 2, 253, "_reduce_427", 4, 253, "_reduce_428", 4, 253, "_reduce_429", 3, 253, "_reduce_430", 3, 253, "_reduce_431", 3, 253, "_reduce_432", 2, 253, "_reduce_433", 1, 253, "_reduce_434", 4, 253, "_reduce_435", 0, 304, "_reduce_436", 4, 252, "_reduce_437", 0, 305, "_reduce_438", 4, 252, "_reduce_439", 0, 306, "_reduce_440", 3, 204, "_reduce_441", 0, 307, "_reduce_442", 0, 308, "_reduce_443", 4, 301, "_reduce_444", 5, 257, "_reduce_445", 1, 309, "_reduce_446", 1, 309, "_reduce_none", 0, 312, "_reduce_448", 0, 313, "_reduce_449", 7, 258, "_reduce_450", 1, 311, "_reduce_451", 1, 311, "_reduce_none", 1, 310, "_reduce_453", 3, 310, "_reduce_454", 3, 310, "_reduce_455", 1, 188, "_reduce_none", 2, 188, "_reduce_457", 3, 188, "_reduce_458", 1, 188, "_reduce_459", 1, 188, "_reduce_460", 1, 188, "_reduce_461", 1, 314, "_reduce_none", 3, 319, "_reduce_463", 1, 319, "_reduce_none", 3, 321, "_reduce_465", 1, 321, "_reduce_none", 1, 323, "_reduce_467", 1, 324, "_reduce_468", 1, 322, "_reduce_none", 1, 322, "_reduce_none", 4, 322, "_reduce_471", 4, 322, "_reduce_472", 4, 322, "_reduce_473", 3, 322, "_reduce_474", 4, 322, "_reduce_475", 4, 322, "_reduce_476", 4, 322, "_reduce_477", 3, 322, "_reduce_478", 3, 322, "_reduce_479", 3, 322, "_reduce_480", 2, 322, "_reduce_481", 0, 328, "_reduce_482", 4, 322, "_reduce_483", 2, 322, "_reduce_484", 0, 329, "_reduce_485", 4, 322, "_reduce_486", 1, 315, "_reduce_487", 1, 315, "_reduce_488", 2, 315, "_reduce_489", 3, 315, "_reduce_490", 5, 315, "_reduce_491", 2, 315, "_reduce_492", 4, 315, "_reduce_493", 1, 315, "_reduce_none", 2, 330, "_reduce_495", 3, 330, "_reduce_496", 1, 317, "_reduce_497", 3, 317, "_reduce_498", 5, 316, "_reduce_499", 2, 333, "_reduce_500", 1, 333, "_reduce_501", 1, 332, "_reduce_502", 3, 332, "_reduce_503", 1, 331, "_reduce_none", 3, 318, "_reduce_505", 1, 318, "_reduce_506", 2, 318, "_reduce_507", 1, 318, "_reduce_508", 1, 334, "_reduce_509", 3, 334, "_reduce_510", 2, 336, "_reduce_511", 1, 336, "_reduce_512", 1, 337, "_reduce_513", 3, 337, "_reduce_514", 2, 339, "_reduce_515", 1, 339, "_reduce_516", 2, 341, "_reduce_517", 1, 335, "_reduce_none", 1, 335, "_reduce_none", 1, 325, "_reduce_none", 3, 325, "_reduce_521", 3, 325, "_reduce_522", 2, 325, "_reduce_523", 2, 325, "_reduce_524", 1, 325, "_reduce_none", 1, 325, "_reduce_none", 1, 325, "_reduce_none", 2, 325, "_reduce_528", 2, 325, "_reduce_529", 1, 342, "_reduce_none", 1, 342, "_reduce_none", 1, 342, "_reduce_none", 1, 342, "_reduce_none", 1, 342, "_reduce_none", 1, 342, "_reduce_none", 1, 342, "_reduce_none", 1, 342, "_reduce_none", 1, 342, "_reduce_538", 1, 342, "_reduce_none", 1, 320, "_reduce_540", 2, 343, "_reduce_541", 2, 343, "_reduce_542", 4, 344, "_reduce_543", 2, 326, "_reduce_544", 3, 326, "_reduce_545", 1, 326, "_reduce_546", 6, 159, "_reduce_547", 0, 159, "_reduce_548", 1, 346, "_reduce_549", 1, 346, "_reduce_none", 1, 346, "_reduce_none", 2, 347, "_reduce_552", 1, 347, "_reduce_none", 2, 161, "_reduce_554", 1, 161, "_reduce_none", 1, 242, "_reduce_none", 1, 242, "_reduce_none", 1, 243, "_reduce_558", 1, 349, "_reduce_559", 2, 349, "_reduce_560", 3, 350, "_reduce_561", 1, 350, "_reduce_562", 1, 350, "_reduce_563", 3, 244, "_reduce_564", 4, 245, "_reduce_565", 3, 246, "_reduce_566", 0, 353, "_reduce_567", 3, 353, "_reduce_568", 1, 354, "_reduce_569", 2, 354, "_reduce_570", 3, 248, "_reduce_571", 0, 356, "_reduce_572", 3, 356, "_reduce_573", 3, 247, "_reduce_574", 3, 249, "_reduce_575", 0, 357, "_reduce_576", 3, 357, "_reduce_577", 0, 358, "_reduce_578", 3, 358, "_reduce_579", 0, 338, "_reduce_580", 2, 338, "_reduce_581", 0, 351, "_reduce_582", 2, 351, "_reduce_583", 0, 352, "_reduce_584", 2, 352, "_reduce_585", 1, 355, "_reduce_586", 2, 355, "_reduce_587", 0, 360, "_reduce_588", 4, 355, "_reduce_589", 1, 359, "_reduce_590", 1, 359, "_reduce_591", 1, 359, "_reduce_592", 1, 359, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 361, "_reduce_596", 3, 362, "_reduce_597", 1, 348, "_reduce_598", 2, 348, "_reduce_599", 1, 226, "_reduce_600", 1, 226, "_reduce_601", 1, 226, "_reduce_602", 1, 226, "_reduce_603", 1, 345, "_reduce_604", 1, 345, "_reduce_605", 1, 345, "_reduce_606", 1, 217, "_reduce_607", 1, 217, "_reduce_608", 1, 217, "_reduce_609", 1, 217, "_reduce_610", 1, 217, "_reduce_611", 1, 218, "_reduce_612", 1, 218, "_reduce_613", 1, 218, "_reduce_614", 1, 218, "_reduce_615", 1, 218, "_reduce_616", 1, 218, "_reduce_617", 1, 218, "_reduce_618", 1, 250, "_reduce_619", 1, 250, "_reduce_620", 1, 176, "_reduce_621", 1, 176, "_reduce_622", 1, 186, "_reduce_623", 1, 186, "_reduce_624", 0, 363, "_reduce_625", 4, 260, "_reduce_626", 0, 260, "_reduce_627", 1, 182, "_reduce_none", 1, 182, "_reduce_629", 3, 364, "_reduce_630", 1, 262, "_reduce_none", 0, 366, "_reduce_632", 3, 262, "_reduce_633", 4, 365, "_reduce_634", 2, 365, "_reduce_635", 2, 365, "_reduce_636", 1, 365, "_reduce_637", 1, 365, "_reduce_638", 2, 368, "_reduce_639", 0, 368, "_reduce_640", 6, 297, "_reduce_641", 8, 297, "_reduce_642", 4, 297, "_reduce_643", 6, 297, "_reduce_644", 4, 297, "_reduce_645", 6, 297, "_reduce_646", 2, 297, "_reduce_647", 4, 297, "_reduce_648", 6, 297, "_reduce_649", 2, 297, "_reduce_650", 4, 297, "_reduce_651", 2, 297, "_reduce_652", 4, 297, "_reduce_653", 1, 297, "_reduce_654", 0, 297, "_reduce_655", 1, 237, "_reduce_656", 1, 292, "_reduce_657", 1, 292, "_reduce_658", 1, 292, "_reduce_659", 1, 292, "_reduce_660", 1, 270, "_reduce_none", 1, 270, "_reduce_662", 1, 370, "_reduce_663", 1, 371, "_reduce_664", 3, 371, "_reduce_665", 1, 284, "_reduce_666", 3, 284, "_reduce_667", 1, 372, "_reduce_668", 2, 373, "_reduce_669", 1, 373, "_reduce_670", 2, 374, "_reduce_671", 1, 374, "_reduce_672", 1, 278, "_reduce_673", 3, 278, "_reduce_674", 1, 367, "_reduce_675", 3, 367, "_reduce_676", 1, 340, "_reduce_none", 1, 340, "_reduce_none", 2, 276, "_reduce_679", 2, 275, "_reduce_680", 1, 275, "_reduce_681", 3, 375, "_reduce_682", 3, 376, "_reduce_683", 1, 285, "_reduce_684", 3, 285, "_reduce_685", 1, 369, "_reduce_686", 3, 369, "_reduce_687", 1, 377, "_reduce_none", 1, 377, "_reduce_none", 2, 286, "_reduce_690", 1, 286, "_reduce_691", 1, 378, "_reduce_none", 1, 378, "_reduce_none", 2, 280, "_reduce_694", 1, 280, "_reduce_695", 2, 279, "_reduce_696", 0, 279, "_reduce_697", 1, 196, "_reduce_none", 3, 196, "_reduce_699", 0, 251, "_reduce_700", 2, 251, "_reduce_none", 1, 235, "_reduce_702", 3, 235, "_reduce_703", 3, 379, "_reduce_704", 2, 379, "_reduce_705", 1, 379, "_reduce_706", 4, 379, "_reduce_707", 2, 379, "_reduce_708", 1, 207, "_reduce_none", 1, 207, "_reduce_none", 1, 207, "_reduce_none", 1, 201, "_reduce_none", 1, 201, "_reduce_none", 1, 201, "_reduce_none", 1, 201, "_reduce_none", 1, 303, "_reduce_none", 1, 303, "_reduce_none", 1, 303, "_reduce_none", 1, 197, "_reduce_none", 1, 197, "_reduce_none", 1, 180, "_reduce_721", 1, 180, "_reduce_722", 0, 152, "_reduce_none", 1, 152, "_reduce_none", 0, 187, "_reduce_none", 1, 187, "_reduce_none", 2, 212, "_reduce_727", 2, 179, "_reduce_728", 2, 327, "_reduce_729", 0, 234, "_reduce_none", 1, 234, "_reduce_none", 1, 234, "_reduce_none", 1, 261, "_reduce_733", 1, 261, "_reduce_none", 1, 154, "_reduce_none", 2, 154, "_reduce_none", 0, 232, "_reduce_737"]; - racc_reduce_n = 738; - racc_shift_n = 1231; + racc_goto_pointer = [nil, 343, 142, 162, nil, 134, 154, 106, 86, 56, -209, 9, -441, -639, -723, nil, -407, 59, 167, -52, -129, 111, 35, 2068, -107, -30, 45, 59, -108, 164, 1262, -210, -357, 26, 23, 121, -26, 3589, 1625, 2121, 484, -424, -59, -57, -7, -419, -14, nil, -9, nil, 180, 66, -345, nil, nil, -193, 53, -186, -458, 1017, -350, nil, 3145, 282, 104, 130, -51, nil, -28, 62, -303, 2499, -2, -363, 116, -4, nil, 42, -220, 291, 20, nil, -5, 166, -153, 1195, 153, 63, 235, -252, 114, -28, -258, -332, -277, -480, nil, 849, 616, 2504, 2203, 2113, 2068, 1856, 1723, 200, 161, -51, nil, 1618, -339, -763, -364, -596, 155, nil, -173, 35, nil, 98, 172, -135, 173, -366, -397, -603, -161, -762, -466, -373, -760, -664, -141, -639, nil, -437, -722, nil, nil, -436, -27, 269, -822, -716, 413, -815, -438, -638, nil, -737, -842, -965, -973, -135, -575, 194, -361, -88, -25, -714, -711, -394, -9, nil, -18, -18, nil, nil, -488, -796, -691, -919, -530, -844, 34, -562, -553, -422, -760, nil, -620, nil, -620, -431, -425, nil, nil, -648, -424, -423, nil, -352, -816, -781, nil, -615, -612, nil, -89, nil, -390, nil, -558, nil, nil, -437, -353, -735, nil, nil, 257, 254, 255, 264, -250, -200, 265, 266, 271, -274, -271, nil, nil, -259, -168, -98, nil, nil, -432, -311, -218, -569, 230, -298, -730, -616, -983, nil, nil, -491]; + racc_goto_default = [nil, nil, nil, nil, 5, nil, 6, 391, 334, nil, nil, 472, nil, 984, nil, 331, 332, nil, nil, nil, 13, 14, 22, 247, nil, nil, 16, nil, 441, 248, 363, nil, nil, 637, 251, nil, 27, 25, 252, 246, 517, nil, nil, nil, nil, nil, nil, 386, 143, 26, nil, nil, nil, 28, 29, 812, nil, nil, nil, 351, nil, 30, 348, 455, 37, nil, nil, 39, 42, 41, nil, 243, 244, 403, nil, 463, 142, 87, nil, 446, 103, 51, 54, 283, nil, 323, nil, 891, 456, nil, 457, 468, 480, 686, 569, 321, 307, 55, 56, 57, 58, 59, 60, 61, 62, 63, nil, 308, 69, 70, nil, nil, nil, nil, nil, 77, nil, 619, 78, 230, nil, nil, nil, nil, nil, nil, nil, 711, 492, nil, 712, 713, 478, 474, 475, nil, 1179, 707, 1071, nil, 479, nil, nil, nil, 481, nil, 483, nil, 971, nil, nil, nil, 490, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 467, nil, nil, 791, 783, nil, nil, nil, nil, nil, nil, 1051, nil, 736, 937, 738, 739, 743, 740, 741, nil, nil, 742, 744, nil, nil, nil, 936, 938, nil, 748, 750, 751, 752, 753, nil, 757, 501, 758, 759, 760, 761, nil, nil, nil, 86, 88, 89, nil, nil, nil, nil, 647, nil, nil, nil, nil, nil, 99, 100, nil, 231, 901, 234, 477, nil, 482, 909, 495, 497, 498, 1082, 502, 1083, 505, 508, 326]; + racc_reduce_table = [0, 0, "racc_error", 0, 150, "_reduce_1", 2, 148, "_reduce_2", 2, 149, "_reduce_3", 0, 151, "_reduce_4", 1, 151, "_reduce_5", 3, 151, "_reduce_6", 2, 151, "_reduce_7", 1, 153, "_reduce_none", 2, 153, "_reduce_9", 3, 156, "_reduce_10", 4, 157, "_reduce_11", 2, 158, "_reduce_12", 0, 162, "_reduce_13", 1, 162, "_reduce_14", 3, 162, "_reduce_15", 2, 162, "_reduce_16", 1, 163, "_reduce_none", 2, 163, "_reduce_18", 0, 174, "_reduce_19", 4, 155, "_reduce_20", 3, 155, "_reduce_21", 3, 155, "_reduce_22", 3, 155, "_reduce_23", 2, 155, "_reduce_24", 3, 155, "_reduce_25", 3, 155, "_reduce_26", 3, 155, "_reduce_27", 3, 155, "_reduce_28", 3, 155, "_reduce_29", 4, 155, "_reduce_30", 1, 155, "_reduce_none", 3, 155, "_reduce_32", 3, 155, "_reduce_33", 5, 155, "_reduce_34", 3, 155, "_reduce_35", 1, 155, "_reduce_none", 3, 167, "_reduce_37", 3, 167, "_reduce_38", 6, 167, "_reduce_39", 5, 167, "_reduce_40", 5, 167, "_reduce_41", 5, 167, "_reduce_42", 5, 167, "_reduce_43", 4, 167, "_reduce_44", 6, 167, "_reduce_45", 4, 167, "_reduce_46", 6, 167, "_reduce_47", 3, 167, "_reduce_48", 1, 175, "_reduce_none", 3, 175, "_reduce_50", 1, 175, "_reduce_none", 1, 173, "_reduce_none", 3, 173, "_reduce_53", 3, 173, "_reduce_54", 3, 173, "_reduce_55", 2, 173, "_reduce_56", 0, 189, "_reduce_57", 4, 173, "_reduce_58", 0, 190, "_reduce_59", 4, 173, "_reduce_60", 1, 173, "_reduce_none", 1, 166, "_reduce_none", 0, 194, "_reduce_63", 3, 191, "_reduce_64", 1, 193, "_reduce_65", 2, 181, "_reduce_66", 0, 199, "_reduce_67", 5, 185, "_reduce_68", 1, 169, "_reduce_none", 1, 169, "_reduce_none", 1, 200, "_reduce_none", 4, 200, "_reduce_72", 0, 207, "_reduce_73", 4, 204, "_reduce_74", 1, 206, "_reduce_none", 2, 183, "_reduce_76", 3, 183, "_reduce_77", 4, 183, "_reduce_78", 5, 183, "_reduce_79", 4, 183, "_reduce_80", 5, 183, "_reduce_81", 2, 183, "_reduce_82", 2, 183, "_reduce_83", 2, 183, "_reduce_84", 2, 183, "_reduce_85", 2, 183, "_reduce_86", 1, 168, "_reduce_87", 3, 168, "_reduce_88", 1, 212, "_reduce_89", 3, 212, "_reduce_90", 1, 211, "_reduce_none", 2, 211, "_reduce_92", 3, 211, "_reduce_93", 5, 211, "_reduce_94", 2, 211, "_reduce_95", 4, 211, "_reduce_96", 2, 211, "_reduce_97", 4, 211, "_reduce_98", 1, 211, "_reduce_99", 3, 211, "_reduce_100", 1, 215, "_reduce_none", 3, 215, "_reduce_102", 2, 214, "_reduce_103", 3, 214, "_reduce_104", 1, 217, "_reduce_105", 3, 217, "_reduce_106", 1, 216, "_reduce_107", 1, 216, "_reduce_108", 4, 216, "_reduce_109", 3, 216, "_reduce_110", 3, 216, "_reduce_111", 3, 216, "_reduce_112", 3, 216, "_reduce_113", 2, 216, "_reduce_114", 1, 216, "_reduce_115", 1, 170, "_reduce_116", 1, 170, "_reduce_117", 4, 170, "_reduce_118", 3, 170, "_reduce_119", 3, 170, "_reduce_120", 3, 170, "_reduce_121", 3, 170, "_reduce_122", 2, 170, "_reduce_123", 1, 170, "_reduce_124", 1, 220, "_reduce_125", 1, 220, "_reduce_none", 2, 221, "_reduce_127", 1, 221, "_reduce_128", 3, 221, "_reduce_129", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 164, "_reduce_135", 1, 164, "_reduce_none", 1, 165, "_reduce_137", 0, 225, "_reduce_138", 4, 165, "_reduce_139", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 3, 184, "_reduce_211", 3, 184, "_reduce_212", 6, 184, "_reduce_213", 5, 184, "_reduce_214", 5, 184, "_reduce_215", 5, 184, "_reduce_216", 5, 184, "_reduce_217", 4, 184, "_reduce_218", 3, 184, "_reduce_219", 3, 184, "_reduce_220", 3, 184, "_reduce_221", 2, 184, "_reduce_222", 2, 184, "_reduce_223", 2, 184, "_reduce_224", 2, 184, "_reduce_225", 3, 184, "_reduce_226", 3, 184, "_reduce_227", 3, 184, "_reduce_228", 3, 184, "_reduce_229", 3, 184, "_reduce_230", 3, 184, "_reduce_231", 4, 184, "_reduce_232", 2, 184, "_reduce_233", 2, 184, "_reduce_234", 3, 184, "_reduce_235", 3, 184, "_reduce_236", 3, 184, "_reduce_237", 3, 184, "_reduce_238", 1, 184, "_reduce_none", 3, 184, "_reduce_240", 3, 184, "_reduce_241", 3, 184, "_reduce_242", 3, 184, "_reduce_243", 3, 184, "_reduce_244", 2, 184, "_reduce_245", 2, 184, "_reduce_246", 3, 184, "_reduce_247", 3, 184, "_reduce_248", 3, 184, "_reduce_249", 3, 184, "_reduce_250", 0, 231, "_reduce_251", 4, 184, "_reduce_252", 6, 184, "_reduce_253", 4, 184, "_reduce_254", 6, 184, "_reduce_255", 4, 184, "_reduce_256", 6, 184, "_reduce_257", 1, 184, "_reduce_none", 1, 230, "_reduce_none", 1, 230, "_reduce_none", 1, 230, "_reduce_none", 1, 230, "_reduce_none", 3, 228, "_reduce_263", 3, 228, "_reduce_264", 1, 232, "_reduce_none", 1, 233, "_reduce_none", 2, 233, "_reduce_none", 4, 233, "_reduce_268", 2, 233, "_reduce_269", 1, 226, "_reduce_none", 3, 226, "_reduce_271", 3, 238, "_reduce_272", 5, 238, "_reduce_273", 3, 238, "_reduce_274", 0, 240, "_reduce_275", 1, 240, "_reduce_none", 0, 178, "_reduce_277", 1, 178, "_reduce_none", 2, 178, "_reduce_none", 4, 178, "_reduce_280", 2, 178, "_reduce_281", 1, 210, "_reduce_282", 2, 210, "_reduce_283", 2, 210, "_reduce_284", 4, 210, "_reduce_285", 1, 210, "_reduce_286", 0, 243, "_reduce_287", 2, 203, "_reduce_288", 2, 242, "_reduce_289", 1, 242, "_reduce_290", 2, 241, "_reduce_291", 0, 241, "_reduce_292", 1, 235, "_reduce_293", 2, 235, "_reduce_294", 3, 235, "_reduce_295", 4, 235, "_reduce_296", 1, 172, "_reduce_297", 1, 172, "_reduce_none", 3, 171, "_reduce_299", 4, 171, "_reduce_300", 2, 171, "_reduce_301", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_312", 0, 267, "_reduce_313", 4, 229, "_reduce_314", 0, 268, "_reduce_315", 4, 229, "_reduce_316", 0, 269, "_reduce_317", 4, 229, "_reduce_318", 3, 229, "_reduce_319", 3, 229, "_reduce_320", 2, 229, "_reduce_321", 3, 229, "_reduce_322", 3, 229, "_reduce_323", 1, 229, "_reduce_324", 4, 229, "_reduce_325", 3, 229, "_reduce_326", 1, 229, "_reduce_327", 0, 270, "_reduce_328", 6, 229, "_reduce_329", 4, 229, "_reduce_330", 3, 229, "_reduce_331", 2, 229, "_reduce_332", 1, 229, "_reduce_none", 2, 229, "_reduce_334", 1, 229, "_reduce_none", 6, 229, "_reduce_336", 6, 229, "_reduce_337", 4, 229, "_reduce_338", 4, 229, "_reduce_339", 5, 229, "_reduce_340", 4, 229, "_reduce_341", 5, 229, "_reduce_342", 6, 229, "_reduce_343", 0, 271, "_reduce_344", 6, 229, "_reduce_345", 0, 272, "_reduce_346", 7, 229, "_reduce_347", 0, 273, "_reduce_348", 5, 229, "_reduce_349", 4, 229, "_reduce_350", 4, 229, "_reduce_351", 1, 229, "_reduce_352", 1, 229, "_reduce_353", 1, 229, "_reduce_354", 1, 229, "_reduce_355", 1, 177, "_reduce_none", 1, 262, "_reduce_357", 1, 265, "_reduce_358", 1, 196, "_reduce_359", 1, 209, "_reduce_360", 1, 257, "_reduce_none", 1, 257, "_reduce_none", 2, 257, "_reduce_363", 1, 192, "_reduce_none", 1, 192, "_reduce_none", 1, 258, "_reduce_none", 5, 258, "_reduce_367", 1, 160, "_reduce_none", 2, 160, "_reduce_369", 1, 261, "_reduce_none", 1, 261, "_reduce_none", 1, 274, "_reduce_372", 3, 274, "_reduce_373", 1, 277, "_reduce_374", 3, 277, "_reduce_375", 1, 276, "_reduce_none", 3, 276, "_reduce_377", 5, 276, "_reduce_378", 1, 276, "_reduce_379", 3, 276, "_reduce_380", 2, 278, "_reduce_381", 1, 278, "_reduce_382", 1, 279, "_reduce_none", 1, 279, "_reduce_none", 0, 284, "_reduce_385", 2, 282, "_reduce_386", 4, 283, "_reduce_387", 2, 283, "_reduce_388", 2, 283, "_reduce_389", 1, 283, "_reduce_390", 2, 288, "_reduce_391", 0, 288, "_reduce_392", 1, 289, "_reduce_none", 6, 290, "_reduce_394", 8, 290, "_reduce_395", 4, 290, "_reduce_396", 6, 290, "_reduce_397", 4, 290, "_reduce_398", 2, 290, "_reduce_none", 6, 290, "_reduce_400", 2, 290, "_reduce_401", 4, 290, "_reduce_402", 6, 290, "_reduce_403", 2, 290, "_reduce_404", 4, 290, "_reduce_405", 2, 290, "_reduce_406", 4, 290, "_reduce_407", 1, 290, "_reduce_none", 0, 294, "_reduce_409", 1, 294, "_reduce_410", 3, 295, "_reduce_411", 4, 295, "_reduce_412", 1, 296, "_reduce_413", 4, 296, "_reduce_414", 1, 297, "_reduce_415", 3, 297, "_reduce_416", 1, 298, "_reduce_417", 1, 298, "_reduce_none", 0, 302, "_reduce_419", 0, 303, "_reduce_420", 5, 256, "_reduce_421", 4, 300, "_reduce_422", 1, 300, "_reduce_423", 0, 306, "_reduce_424", 4, 301, "_reduce_425", 0, 307, "_reduce_426", 4, 301, "_reduce_427", 0, 309, "_reduce_428", 4, 305, "_reduce_429", 2, 201, "_reduce_430", 4, 201, "_reduce_431", 5, 201, "_reduce_432", 5, 201, "_reduce_433", 2, 255, "_reduce_434", 4, 255, "_reduce_435", 4, 255, "_reduce_436", 3, 255, "_reduce_437", 3, 255, "_reduce_438", 3, 255, "_reduce_439", 2, 255, "_reduce_440", 1, 255, "_reduce_441", 4, 255, "_reduce_442", 0, 311, "_reduce_443", 4, 254, "_reduce_444", 0, 312, "_reduce_445", 4, 254, "_reduce_446", 0, 313, "_reduce_447", 3, 205, "_reduce_448", 0, 314, "_reduce_449", 0, 315, "_reduce_450", 4, 308, "_reduce_451", 5, 259, "_reduce_452", 1, 316, "_reduce_453", 1, 316, "_reduce_none", 0, 319, "_reduce_455", 0, 320, "_reduce_456", 7, 260, "_reduce_457", 1, 318, "_reduce_458", 1, 318, "_reduce_none", 1, 317, "_reduce_460", 3, 317, "_reduce_461", 3, 317, "_reduce_462", 1, 188, "_reduce_none", 2, 188, "_reduce_464", 3, 188, "_reduce_465", 1, 188, "_reduce_466", 1, 188, "_reduce_467", 1, 188, "_reduce_468", 1, 321, "_reduce_none", 3, 326, "_reduce_470", 1, 326, "_reduce_none", 3, 328, "_reduce_472", 1, 328, "_reduce_none", 1, 330, "_reduce_474", 1, 331, "_reduce_475", 1, 329, "_reduce_none", 1, 329, "_reduce_none", 4, 329, "_reduce_478", 4, 329, "_reduce_479", 4, 329, "_reduce_480", 3, 329, "_reduce_481", 4, 329, "_reduce_482", 4, 329, "_reduce_483", 4, 329, "_reduce_484", 3, 329, "_reduce_485", 3, 329, "_reduce_486", 3, 329, "_reduce_487", 2, 329, "_reduce_488", 0, 335, "_reduce_489", 4, 329, "_reduce_490", 2, 329, "_reduce_491", 0, 336, "_reduce_492", 4, 329, "_reduce_493", 1, 322, "_reduce_494", 1, 322, "_reduce_495", 2, 322, "_reduce_496", 3, 322, "_reduce_497", 5, 322, "_reduce_498", 2, 322, "_reduce_499", 4, 322, "_reduce_500", 1, 322, "_reduce_none", 2, 337, "_reduce_502", 3, 337, "_reduce_503", 1, 324, "_reduce_504", 3, 324, "_reduce_505", 5, 323, "_reduce_506", 2, 340, "_reduce_507", 1, 340, "_reduce_508", 1, 339, "_reduce_509", 3, 339, "_reduce_510", 1, 338, "_reduce_none", 3, 325, "_reduce_512", 1, 325, "_reduce_513", 2, 325, "_reduce_514", 1, 325, "_reduce_515", 1, 341, "_reduce_516", 3, 341, "_reduce_517", 2, 343, "_reduce_518", 1, 343, "_reduce_519", 1, 344, "_reduce_520", 3, 344, "_reduce_521", 2, 346, "_reduce_522", 1, 346, "_reduce_523", 2, 348, "_reduce_524", 1, 342, "_reduce_none", 1, 342, "_reduce_none", 1, 332, "_reduce_none", 3, 332, "_reduce_528", 3, 332, "_reduce_529", 2, 332, "_reduce_530", 2, 332, "_reduce_531", 1, 332, "_reduce_none", 1, 332, "_reduce_none", 1, 332, "_reduce_none", 2, 332, "_reduce_535", 2, 332, "_reduce_536", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_545", 1, 349, "_reduce_none", 1, 327, "_reduce_547", 2, 350, "_reduce_548", 2, 350, "_reduce_549", 4, 351, "_reduce_550", 2, 333, "_reduce_551", 3, 333, "_reduce_552", 1, 333, "_reduce_553", 6, 159, "_reduce_554", 0, 159, "_reduce_555", 1, 353, "_reduce_556", 1, 353, "_reduce_none", 1, 353, "_reduce_none", 2, 354, "_reduce_559", 1, 354, "_reduce_none", 2, 161, "_reduce_561", 1, 161, "_reduce_none", 1, 244, "_reduce_none", 1, 244, "_reduce_none", 1, 245, "_reduce_565", 1, 356, "_reduce_566", 2, 356, "_reduce_567", 3, 357, "_reduce_568", 1, 357, "_reduce_569", 1, 357, "_reduce_570", 3, 246, "_reduce_571", 4, 247, "_reduce_572", 3, 248, "_reduce_573", 0, 360, "_reduce_574", 3, 360, "_reduce_575", 1, 361, "_reduce_576", 2, 361, "_reduce_577", 3, 250, "_reduce_578", 0, 363, "_reduce_579", 3, 363, "_reduce_580", 3, 249, "_reduce_581", 3, 251, "_reduce_582", 0, 364, "_reduce_583", 3, 364, "_reduce_584", 0, 365, "_reduce_585", 3, 365, "_reduce_586", 0, 345, "_reduce_587", 2, 345, "_reduce_588", 0, 358, "_reduce_589", 2, 358, "_reduce_590", 0, 359, "_reduce_591", 2, 359, "_reduce_592", 1, 362, "_reduce_593", 2, 362, "_reduce_594", 0, 367, "_reduce_595", 4, 362, "_reduce_596", 1, 366, "_reduce_597", 1, 366, "_reduce_598", 1, 366, "_reduce_599", 1, 366, "_reduce_none", 1, 224, "_reduce_none", 1, 224, "_reduce_none", 1, 368, "_reduce_603", 3, 369, "_reduce_604", 1, 355, "_reduce_605", 2, 355, "_reduce_606", 1, 227, "_reduce_607", 1, 227, "_reduce_608", 1, 227, "_reduce_609", 1, 227, "_reduce_610", 1, 352, "_reduce_611", 1, 352, "_reduce_612", 1, 352, "_reduce_613", 1, 218, "_reduce_614", 1, 218, "_reduce_615", 1, 218, "_reduce_616", 1, 218, "_reduce_617", 1, 218, "_reduce_618", 1, 219, "_reduce_619", 1, 219, "_reduce_620", 1, 219, "_reduce_621", 1, 219, "_reduce_622", 1, 219, "_reduce_623", 1, 219, "_reduce_624", 1, 219, "_reduce_625", 1, 252, "_reduce_626", 1, 252, "_reduce_627", 1, 176, "_reduce_628", 1, 176, "_reduce_629", 1, 186, "_reduce_630", 1, 186, "_reduce_631", 0, 370, "_reduce_632", 4, 263, "_reduce_633", 0, 263, "_reduce_634", 1, 182, "_reduce_none", 1, 182, "_reduce_636", 3, 371, "_reduce_637", 1, 266, "_reduce_none", 0, 373, "_reduce_639", 3, 266, "_reduce_640", 4, 372, "_reduce_641", 2, 372, "_reduce_642", 2, 372, "_reduce_643", 1, 372, "_reduce_644", 1, 372, "_reduce_645", 2, 375, "_reduce_646", 0, 375, "_reduce_647", 6, 304, "_reduce_648", 8, 304, "_reduce_649", 4, 304, "_reduce_650", 6, 304, "_reduce_651", 4, 304, "_reduce_652", 6, 304, "_reduce_653", 2, 304, "_reduce_654", 4, 304, "_reduce_655", 6, 304, "_reduce_656", 2, 304, "_reduce_657", 4, 304, "_reduce_658", 2, 304, "_reduce_659", 4, 304, "_reduce_660", 1, 304, "_reduce_661", 0, 304, "_reduce_662", 1, 239, "_reduce_663", 1, 299, "_reduce_664", 1, 299, "_reduce_665", 1, 299, "_reduce_666", 1, 299, "_reduce_667", 1, 275, "_reduce_none", 1, 275, "_reduce_669", 1, 377, "_reduce_670", 1, 378, "_reduce_671", 3, 378, "_reduce_672", 1, 291, "_reduce_673", 3, 291, "_reduce_674", 1, 379, "_reduce_675", 2, 380, "_reduce_676", 1, 380, "_reduce_677", 2, 381, "_reduce_678", 1, 381, "_reduce_679", 1, 285, "_reduce_680", 3, 285, "_reduce_681", 1, 374, "_reduce_682", 3, 374, "_reduce_683", 1, 347, "_reduce_none", 1, 347, "_reduce_none", 2, 281, "_reduce_686", 2, 280, "_reduce_687", 1, 280, "_reduce_688", 3, 382, "_reduce_689", 3, 383, "_reduce_690", 1, 292, "_reduce_691", 3, 292, "_reduce_692", 1, 376, "_reduce_693", 3, 376, "_reduce_694", 1, 384, "_reduce_none", 1, 384, "_reduce_none", 2, 293, "_reduce_697", 1, 293, "_reduce_698", 1, 385, "_reduce_none", 1, 385, "_reduce_none", 2, 287, "_reduce_701", 1, 287, "_reduce_702", 2, 286, "_reduce_703", 0, 286, "_reduce_704", 1, 197, "_reduce_none", 3, 197, "_reduce_706", 0, 253, "_reduce_707", 2, 253, "_reduce_none", 1, 237, "_reduce_709", 3, 237, "_reduce_710", 3, 386, "_reduce_711", 2, 386, "_reduce_712", 1, 386, "_reduce_713", 4, 386, "_reduce_714", 2, 386, "_reduce_715", 1, 208, "_reduce_none", 1, 208, "_reduce_none", 1, 208, "_reduce_none", 1, 202, "_reduce_none", 1, 202, "_reduce_none", 1, 202, "_reduce_none", 1, 202, "_reduce_none", 1, 310, "_reduce_none", 1, 310, "_reduce_none", 1, 310, "_reduce_none", 1, 198, "_reduce_none", 1, 198, "_reduce_none", 1, 180, "_reduce_728", 1, 180, "_reduce_729", 0, 152, "_reduce_none", 1, 152, "_reduce_none", 0, 187, "_reduce_none", 1, 187, "_reduce_none", 2, 213, "_reduce_734", 2, 179, "_reduce_735", 2, 334, "_reduce_736", 0, 236, "_reduce_none", 1, 236, "_reduce_none", 1, 236, "_reduce_none", 1, 264, "_reduce_740", 1, 264, "_reduce_none", 1, 154, "_reduce_none", 2, 154, "_reduce_none", 0, 234, "_reduce_744"]; + racc_reduce_n = 745; + racc_shift_n = 1238; racc_token_table = $hash(false, 0, "error", 1, "kCLASS", 2, "kMODULE", 3, "kDEF", 4, "kUNDEF", 5, "kBEGIN", 6, "kRESCUE", 7, "kENSURE", 8, "kEND", 9, "kIF", 10, "kUNLESS", 11, "kTHEN", 12, "kELSIF", 13, "kELSE", 14, "kCASE", 15, "kWHEN", 16, "kWHILE", 17, "kUNTIL", 18, "kFOR", 19, "kBREAK", 20, "kNEXT", 21, "kREDO", 22, "kRETRY", 23, "kIN", 24, "kDO", 25, "kDO_COND", 26, "kDO_BLOCK", 27, "kDO_LAMBDA", 28, "kRETURN", 29, "kYIELD", 30, "kSUPER", 31, "kSELF", 32, "kNIL", 33, "kTRUE", 34, "kFALSE", 35, "kAND", 36, "kOR", 37, "kNOT", 38, "kIF_MOD", 39, "kUNLESS_MOD", 40, "kWHILE_MOD", 41, "kUNTIL_MOD", 42, "kRESCUE_MOD", 43, "kALIAS", 44, "kDEFINED", 45, "klBEGIN", 46, "klEND", 47, "k__LINE__", 48, "k__FILE__", 49, "k__ENCODING__", 50, "tIDENTIFIER", 51, "tFID", 52, "tGVAR", 53, "tIVAR", 54, "tCONSTANT", 55, "tLABEL", 56, "tCVAR", 57, "tNTH_REF", 58, "tBACK_REF", 59, "tSTRING_CONTENT", 60, "tINTEGER", 61, "tFLOAT", 62, "tUPLUS", 63, "tUMINUS", 64, "tUNARY_NUM", 65, "tPOW", 66, "tCMP", 67, "tEQ", 68, "tEQQ", 69, "tNEQ", 70, "tGEQ", 71, "tLEQ", 72, "tANDOP", 73, "tOROP", 74, "tMATCH", 75, "tNMATCH", 76, "tDOT", 77, "tDOT2", 78, "tDOT3", 79, "tAREF", 80, "tASET", 81, "tLSHFT", 82, "tRSHFT", 83, "tCOLON2", 84, "tCOLON3", 85, "tOP_ASGN", 86, "tASSOC", 87, "tLPAREN", 88, "tLPAREN2", 89, "tRPAREN", 90, "tLPAREN_ARG", 91, "tLBRACK", 92, "tLBRACK2", 93, "tRBRACK", 94, "tLBRACE", 95, "tLBRACE_ARG", 96, "tSTAR", 97, "tSTAR2", 98, "tAMPER", 99, "tAMPER2", 100, "tTILDE", 101, "tPERCENT", 102, "tDIVIDE", 103, "tDSTAR", 104, "tPLUS", 105, "tMINUS", 106, "tLT", 107, "tGT", 108, "tPIPE", 109, "tBANG", 110, "tCARET", 111, "tLCURLY", 112, "tRCURLY", 113, "tBACK_REF2", 114, "tSYMBEG", 115, "tSTRING_BEG", 116, "tXSTRING_BEG", 117, "tREGEXP_BEG", 118, "tREGEXP_OPT", 119, "tWORDS_BEG", 120, "tQWORDS_BEG", 121, "tSYMBOLS_BEG", 122, "tQSYMBOLS_BEG", 123, "tSTRING_DBEG", 124, "tSTRING_DVAR", 125, "tSTRING_END", 126, "tSTRING_DEND", 127, "tSTRING", 128, "tSYMBOL", 129, "tNL", 130, "tEH", 131, "tCOLON", 132, "tCOMMA", 133, "tSPACE", 134, "tSEMI", 135, "tLAMBDA", 136, "tLAMBEG", 137, "tCHARACTER", 138, "tRATIONAL", 139, "tIMAGINARY", 140, "tLABEL_END", 141, "tANDDOT", 142, "tBDOT2", 143, "tBDOT3", 144, "tEQL", 145, "tLOWEST", 146); racc_nt_base = 147; racc_use_result_var = true; $const_set($nesting[0], 'Racc_arg', [racc_action_table, racc_action_check, racc_action_default, racc_action_pointer, racc_goto_table, racc_goto_check, racc_goto_default, racc_goto_pointer, racc_nt_base, racc_reduce_table, racc_token_table, racc_shift_n, racc_reduce_n, racc_use_result_var]); - $const_set($nesting[0], 'Racc_token_to_s_table', ["$end", "error", "kCLASS", "kMODULE", "kDEF", "kUNDEF", "kBEGIN", "kRESCUE", "kENSURE", "kEND", "kIF", "kUNLESS", "kTHEN", "kELSIF", "kELSE", "kCASE", "kWHEN", "kWHILE", "kUNTIL", "kFOR", "kBREAK", "kNEXT", "kREDO", "kRETRY", "kIN", "kDO", "kDO_COND", "kDO_BLOCK", "kDO_LAMBDA", "kRETURN", "kYIELD", "kSUPER", "kSELF", "kNIL", "kTRUE", "kFALSE", "kAND", "kOR", "kNOT", "kIF_MOD", "kUNLESS_MOD", "kWHILE_MOD", "kUNTIL_MOD", "kRESCUE_MOD", "kALIAS", "kDEFINED", "klBEGIN", "klEND", "k__LINE__", "k__FILE__", "k__ENCODING__", "tIDENTIFIER", "tFID", "tGVAR", "tIVAR", "tCONSTANT", "tLABEL", "tCVAR", "tNTH_REF", "tBACK_REF", "tSTRING_CONTENT", "tINTEGER", "tFLOAT", "tUPLUS", "tUMINUS", "tUNARY_NUM", "tPOW", "tCMP", "tEQ", "tEQQ", "tNEQ", "tGEQ", "tLEQ", "tANDOP", "tOROP", "tMATCH", "tNMATCH", "tDOT", "tDOT2", "tDOT3", "tAREF", "tASET", "tLSHFT", "tRSHFT", "tCOLON2", "tCOLON3", "tOP_ASGN", "tASSOC", "tLPAREN", "tLPAREN2", "tRPAREN", "tLPAREN_ARG", "tLBRACK", "tLBRACK2", "tRBRACK", "tLBRACE", "tLBRACE_ARG", "tSTAR", "tSTAR2", "tAMPER", "tAMPER2", "tTILDE", "tPERCENT", "tDIVIDE", "tDSTAR", "tPLUS", "tMINUS", "tLT", "tGT", "tPIPE", "tBANG", "tCARET", "tLCURLY", "tRCURLY", "tBACK_REF2", "tSYMBEG", "tSTRING_BEG", "tXSTRING_BEG", "tREGEXP_BEG", "tREGEXP_OPT", "tWORDS_BEG", "tQWORDS_BEG", "tSYMBOLS_BEG", "tQSYMBOLS_BEG", "tSTRING_DBEG", "tSTRING_DVAR", "tSTRING_END", "tSTRING_DEND", "tSTRING", "tSYMBOL", "tNL", "tEH", "tCOLON", "tCOMMA", "tSPACE", "tSEMI", "tLAMBDA", "tLAMBEG", "tCHARACTER", "tRATIONAL", "tIMAGINARY", "tLABEL_END", "tANDDOT", "tBDOT2", "tBDOT3", "tEQL", "tLOWEST", "$start", "program", "top_compstmt", "@1", "top_stmts", "opt_terms", "top_stmt", "terms", "stmt", "begin_block", "bodystmt", "compstmt", "opt_rescue", "opt_else", "opt_ensure", "stmts", "stmt_or_begin", "fitem", "undef_list", "expr_value", "command_asgn", "mlhs", "command_call", "lhs", "mrhs", "mrhs_arg", "expr", "@2", "command_rhs", "var_lhs", "primary_value", "opt_call_args", "rbracket", "call_op", "defn_head", "f_opt_paren_args", "command", "arg", "defs_head", "backref", "opt_nl", "p_top_expr_body", "@3", "@4", "expr_value_do", "do", "def_name", "@5", "fname", "singleton", "dot_or_colon", "@6", "block_command", "block_call", "operation2", "command_args", "cmd_brace_block", "brace_body", "fcall", "@7", "operation", "k_return", "call_args", "mlhs_basic", "mlhs_inner", "rparen", "mlhs_head", "mlhs_item", "mlhs_node", "mlhs_post", "user_variable", "keyword_variable", "cname", "cpath", "op", "reswords", "symbol", "@8", "arg_rhs", "simple_numeric", "rel_expr", "primary", "relop", "arg_value", "aref_args", "none", "args", "trailer", "assocs", "paren_args", "args_forward", "opt_paren_args", "opt_block_arg", "block_arg", "@9", "literal", "strings", "xstring", "regexp", "words", "qwords", "symbols", "qsymbols", "var_ref", "assoc_list", "brace_block", "method_call", "lambda", "then", "if_tail", "case_body", "p_case_body", "for_var", "superclass", "term", "f_arglist", "@10", "@11", "@12", "@13", "@14", "@15", "f_marg", "f_norm_arg", "f_margs", "f_marg_list", "f_rest_marg", "f_any_kwrest", "f_kwrest", "f_no_kwarg", "block_args_tail", "f_block_kwarg", "opt_f_block_arg", "f_block_arg", "opt_block_args_tail", "excessed_comma", "block_param", "f_arg", "f_block_optarg", "f_rest_arg", "opt_block_param", "block_param_def", "opt_bv_decl", "bv_decls", "bvar", "f_bad_arg", "f_larglist", "lambda_body", "@16", "@17", "f_args", "do_block", "@18", "@19", "do_body", "@20", "operation3", "@21", "@22", "@23", "@24", "@25", "cases", "p_top_expr", "p_cases", "@26", "@27", "p_expr", "p_args", "p_find", "p_args_tail", "p_kwargs", "p_as", "p_variable", "p_alt", "p_expr_basic", "p_lparen", "p_lbracket", "p_value", "p_const", "rbrace", "@28", "@29", "p_args_head", "p_arg", "p_args_post", "p_rest", "p_kwarg", "p_any_kwrest", "p_kw", "p_kw_label", "string_contents", "p_kwrest", "kwrest_mark", "p_kwnorest", "p_primitive", "p_var_ref", "p_expr_ref", "nonlocal_var", "exc_list", "exc_var", "numeric", "string", "string1", "xstring_contents", "regexp_contents", "word_list", "word", "string_content", "symbol_list", "qword_list", "qsym_list", "string_dvar", "@30", "ssym", "dsym", "@31", "f_paren_args", "args_tail", "@32", "f_kwarg", "opt_args_tail", "f_optarg", "f_arg_asgn", "f_arg_item", "f_label", "f_kw", "f_block_kw", "f_opt", "f_block_opt", "restarg_mark", "blkarg_mark", "assoc"]); + $const_set($nesting[0], 'Racc_token_to_s_table', ["$end", "error", "kCLASS", "kMODULE", "kDEF", "kUNDEF", "kBEGIN", "kRESCUE", "kENSURE", "kEND", "kIF", "kUNLESS", "kTHEN", "kELSIF", "kELSE", "kCASE", "kWHEN", "kWHILE", "kUNTIL", "kFOR", "kBREAK", "kNEXT", "kREDO", "kRETRY", "kIN", "kDO", "kDO_COND", "kDO_BLOCK", "kDO_LAMBDA", "kRETURN", "kYIELD", "kSUPER", "kSELF", "kNIL", "kTRUE", "kFALSE", "kAND", "kOR", "kNOT", "kIF_MOD", "kUNLESS_MOD", "kWHILE_MOD", "kUNTIL_MOD", "kRESCUE_MOD", "kALIAS", "kDEFINED", "klBEGIN", "klEND", "k__LINE__", "k__FILE__", "k__ENCODING__", "tIDENTIFIER", "tFID", "tGVAR", "tIVAR", "tCONSTANT", "tLABEL", "tCVAR", "tNTH_REF", "tBACK_REF", "tSTRING_CONTENT", "tINTEGER", "tFLOAT", "tUPLUS", "tUMINUS", "tUNARY_NUM", "tPOW", "tCMP", "tEQ", "tEQQ", "tNEQ", "tGEQ", "tLEQ", "tANDOP", "tOROP", "tMATCH", "tNMATCH", "tDOT", "tDOT2", "tDOT3", "tAREF", "tASET", "tLSHFT", "tRSHFT", "tCOLON2", "tCOLON3", "tOP_ASGN", "tASSOC", "tLPAREN", "tLPAREN2", "tRPAREN", "tLPAREN_ARG", "tLBRACK", "tLBRACK2", "tRBRACK", "tLBRACE", "tLBRACE_ARG", "tSTAR", "tSTAR2", "tAMPER", "tAMPER2", "tTILDE", "tPERCENT", "tDIVIDE", "tDSTAR", "tPLUS", "tMINUS", "tLT", "tGT", "tPIPE", "tBANG", "tCARET", "tLCURLY", "tRCURLY", "tBACK_REF2", "tSYMBEG", "tSTRING_BEG", "tXSTRING_BEG", "tREGEXP_BEG", "tREGEXP_OPT", "tWORDS_BEG", "tQWORDS_BEG", "tSYMBOLS_BEG", "tQSYMBOLS_BEG", "tSTRING_DBEG", "tSTRING_DVAR", "tSTRING_END", "tSTRING_DEND", "tSTRING", "tSYMBOL", "tNL", "tEH", "tCOLON", "tCOMMA", "tSPACE", "tSEMI", "tLAMBDA", "tLAMBEG", "tCHARACTER", "tRATIONAL", "tIMAGINARY", "tLABEL_END", "tANDDOT", "tBDOT2", "tBDOT3", "tEQL", "tLOWEST", "$start", "program", "top_compstmt", "@1", "top_stmts", "opt_terms", "top_stmt", "terms", "stmt", "begin_block", "bodystmt", "compstmt", "opt_rescue", "opt_else", "opt_ensure", "stmts", "stmt_or_begin", "fitem", "undef_list", "expr_value", "command_asgn", "mlhs", "command_call", "lhs", "mrhs", "mrhs_arg", "expr", "@2", "command_rhs", "var_lhs", "primary_value", "opt_call_args", "rbracket", "call_op", "defn_head", "f_opt_paren_args", "command", "arg", "defs_head", "backref", "opt_nl", "p_top_expr_body", "@3", "@4", "expr_value_do", "do", "def_name", "@5", "fname", "k_def", "singleton", "dot_or_colon", "@6", "block_command", "block_call", "operation2", "command_args", "cmd_brace_block", "brace_body", "fcall", "@7", "operation", "k_return", "call_args", "mlhs_basic", "mlhs_inner", "rparen", "mlhs_head", "mlhs_item", "mlhs_node", "mlhs_post", "user_variable", "keyword_variable", "cname", "cpath", "op", "reswords", "symbol", "@8", "arg_rhs", "simple_numeric", "rel_expr", "primary", "relop", "@9", "arg_value", "aref_args", "none", "args", "trailer", "assocs", "paren_args", "args_forward", "opt_paren_args", "opt_block_arg", "block_arg", "@10", "literal", "strings", "xstring", "regexp", "words", "qwords", "symbols", "qsymbols", "var_ref", "assoc_list", "brace_block", "method_call", "lambda", "then", "if_tail", "case_body", "p_case_body", "for_var", "k_class", "superclass", "term", "k_module", "f_arglist", "@11", "@12", "@13", "@14", "@15", "@16", "@17", "f_marg", "f_norm_arg", "f_margs", "f_marg_list", "f_rest_marg", "f_any_kwrest", "f_kwrest", "f_no_kwarg", "f_eq", "block_args_tail", "@18", "f_block_kwarg", "opt_f_block_arg", "f_block_arg", "opt_block_args_tail", "excessed_comma", "block_param", "f_arg", "f_block_optarg", "f_rest_arg", "opt_block_param", "block_param_def", "opt_bv_decl", "bv_decls", "bvar", "f_bad_arg", "f_larglist", "lambda_body", "@19", "@20", "f_args", "do_block", "@21", "@22", "do_body", "@23", "operation3", "@24", "@25", "@26", "@27", "@28", "cases", "p_top_expr", "p_cases", "@29", "@30", "p_expr", "p_args", "p_find", "p_args_tail", "p_kwargs", "p_as", "p_variable", "p_alt", "p_expr_basic", "p_lparen", "p_lbracket", "p_value", "p_const", "rbrace", "@31", "@32", "p_args_head", "p_arg", "p_args_post", "p_rest", "p_kwarg", "p_any_kwrest", "p_kw", "p_kw_label", "string_contents", "p_kwrest", "kwrest_mark", "p_kwnorest", "p_primitive", "p_var_ref", "p_expr_ref", "nonlocal_var", "exc_list", "exc_var", "numeric", "string", "string1", "xstring_contents", "regexp_contents", "word_list", "word", "string_content", "symbol_list", "qword_list", "qsym_list", "string_dvar", "@33", "ssym", "dsym", "@34", "f_paren_args", "args_tail", "@35", "f_kwarg", "opt_args_tail", "f_optarg", "f_arg_asgn", "f_arg_item", "f_label", "f_kw", "f_block_kw", "f_opt", "f_block_opt", "restarg_mark", "blkarg_mark", "assoc"]); $const_set($nesting[0], 'Racc_debug_parser', false); $def(self, '$_reduce_1', function $$_reduce_1(val, _values, result) { @@ -20997,7 +20950,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.current_arg_stack.$push(nil); - self.max_numparam_stack.$push(); + self.max_numparam_stack.$push($hash2(["static"], {"static": true})); return result; }, 3); @@ -21312,66 +21265,70 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ }, 3); $def(self, '$_reduce_44', function $$_reduce_44(val, _values, result) { - var $a, $b, self = this, _def_t = nil, name_t = nil; + var $a, $b, $c, self = this, def_t = nil, name_t = nil, ctx = nil, $writer = nil; - $b = val['$[]'](0), $a = $to_ary($b), (_def_t = ($a[0] == null ? nil : $a[0])), (name_t = ($a[1] == null ? nil : $a[1])), $b; + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), ($c = $to_ary(($a[1] == null ? nil : $a[1])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; self.$endless_method_name(name_t); - result = $send(self.builder, 'def_endless_method', $to_a(val['$[]'](0)).concat([val['$[]'](1), val['$[]'](2), val['$[]'](3)])); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + result = self.builder.$def_endless_method(def_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); $def(self, '$_reduce_45', function $$_reduce_45(val, _values, result) { - var $a, $b, self = this, _def_t = nil, name_t = nil, rescue_body = nil, method_body = nil; + var $a, $b, $c, self = this, def_t = nil, name_t = nil, ctx = nil, rescue_body = nil, method_body = nil, $writer = nil; - $b = val['$[]'](0), $a = $to_ary($b), (_def_t = ($a[0] == null ? nil : $a[0])), (name_t = ($a[1] == null ? nil : $a[1])), $b; + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), ($c = $to_ary(($a[1] == null ? nil : $a[1])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; self.$endless_method_name(name_t); rescue_body = self.builder.$rescue_body(val['$[]'](4), nil, nil, nil, nil, val['$[]'](5)); method_body = self.builder.$begin_body(val['$[]'](3), [rescue_body]); - result = $send(self.builder, 'def_endless_method', $to_a(val['$[]'](0)).concat([val['$[]'](1), val['$[]'](2), method_body])); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + result = self.builder.$def_endless_method(def_t, name_t, val['$[]'](1), val['$[]'](2), method_body); + self.$local_pop(); self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); $def(self, '$_reduce_46', function $$_reduce_46(val, _values, result) { - var $a, $b, self = this, _def_t = nil, _recv = nil, _dot_t = nil, name_t = nil; + var $a, $b, $c, self = this, def_t = nil, recv = nil, dot_t = nil, name_t = nil, ctx = nil, $writer = nil; - $b = val['$[]'](0), $a = $to_ary($b), (_def_t = ($a[0] == null ? nil : $a[0])), (_recv = ($a[1] == null ? nil : $a[1])), (_dot_t = ($a[2] == null ? nil : $a[2])), (name_t = ($a[3] == null ? nil : $a[3])), $b; + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), (recv = ($a[1] == null ? nil : $a[1])), (dot_t = ($a[2] == null ? nil : $a[2])), ($c = $to_ary(($a[3] == null ? nil : $a[3])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; self.$endless_method_name(name_t); - result = $send(self.builder, 'def_endless_singleton', $to_a(val['$[]'](0)).concat([val['$[]'](1), val['$[]'](2), val['$[]'](3)])); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + result = self.builder.$def_endless_singleton(def_t, recv, dot_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); $def(self, '$_reduce_47', function $$_reduce_47(val, _values, result) { - var $a, $b, self = this, _def_t = nil, _recv = nil, _dot_t = nil, name_t = nil, rescue_body = nil, method_body = nil; + var $a, $b, $c, self = this, def_t = nil, recv = nil, dot_t = nil, name_t = nil, ctx = nil, rescue_body = nil, method_body = nil, $writer = nil; - $b = val['$[]'](0), $a = $to_ary($b), (_def_t = ($a[0] == null ? nil : $a[0])), (_recv = ($a[1] == null ? nil : $a[1])), (_dot_t = ($a[2] == null ? nil : $a[2])), (name_t = ($a[3] == null ? nil : $a[3])), $b; + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), (recv = ($a[1] == null ? nil : $a[1])), (dot_t = ($a[2] == null ? nil : $a[2])), ($c = $to_ary(($a[3] == null ? nil : $a[3])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; self.$endless_method_name(name_t); rescue_body = self.builder.$rescue_body(val['$[]'](4), nil, nil, nil, nil, val['$[]'](5)); method_body = self.builder.$begin_body(val['$[]'](3), [rescue_body]); - result = $send(self.builder, 'def_endless_singleton', $to_a(val['$[]'](0)).concat([val['$[]'](1), val['$[]'](2), method_body])); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + result = self.builder.$def_endless_singleton(def_t, recv, dot_t, name_t, val['$[]'](1), val['$[]'](2), method_body); + self.$local_pop(); self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); @@ -21437,10 +21394,10 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.lexer, 'command_start=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.pattern_variables.$push(); - result = self.lexer.$in_kwarg(); + result = self.context.$in_kwarg(); $writer = [true]; - $send(self.lexer, 'in_kwarg=', $to_a($writer)); + $send(self.context, 'in_kwarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); @@ -21452,7 +21409,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.pattern_variables.$pop(); $writer = [val['$[]'](2)]; - $send(self.lexer, 'in_kwarg=', $to_a($writer)); + $send(self.context, 'in_kwarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$match_pattern(val['$[]'](0), val['$[]'](1), val['$[]'](3)); return result; @@ -21471,10 +21428,10 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.lexer, 'command_start=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.pattern_variables.$push(); - result = self.lexer.$in_kwarg(); + result = self.context.$in_kwarg(); $writer = [true]; - $send(self.lexer, 'in_kwarg=', $to_a($writer)); + $send(self.context, 'in_kwarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); @@ -21486,7 +21443,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.pattern_variables.$pop(); $writer = [val['$[]'](2)]; - $send(self.lexer, 'in_kwarg=', $to_a($writer)); + $send(self.context, 'in_kwarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$match_pattern_p(val['$[]'](0), val['$[]'](1), val['$[]'](3)); return result; @@ -21510,22 +21467,22 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ }, 3); $def(self, '$_reduce_65', function $$_reduce_65(val, _values, result) { - var self = this; + var self = this, $writer = nil; - self.static_env.$extend_static(); - self.lexer.$cmdarg().$push(false); - self.lexer.$cond().$push(false); + self.$local_push(); self.current_arg_stack.$push(nil); - result = val['$[]'](0); + result = [val['$[]'](0), self.context.$dup()]; + + $writer = [true]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); $def(self, '$_reduce_66', function $$_reduce_66(val, _values, result) { - var self = this; - - self.context.$push("def"); + result = [val['$[]'](0), val['$[]'](1)]; return result; }, 3); @@ -21538,14 +21495,16 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ $writer = ["expr_fname"]; $send(self.lexer, 'state=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); $def(self, '$_reduce_68', function $$_reduce_68(val, _values, result) { - var self = this; - - self.context.$push("defs"); + result = [val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](4)]; return result; }, 3); @@ -21559,19 +21518,26 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ }, 3); $def(self, '$_reduce_73', function $$_reduce_73(val, _values, result) { - var self = this; + var self = this, $writer = nil; - self.context.$push("block"); + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); $def(self, '$_reduce_74', function $$_reduce_74(val, _values, result) { - var self = this; + var self = this, $writer = nil; + + $writer = [val['$[]'](1).$in_block()]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](3)]); - self.context.$pop(); return result; }, 3); @@ -22338,14 +22304,29 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ }, 3); $def(self, '$_reduce_251', function $$_reduce_251(val, _values, result) { - var self = this; + var self = this, $writer = nil; - result = self.builder.$keyword_cmd("defined?", val['$[]'](0), nil, [val['$[]'](2)], nil); + + $writer = [true]; + $send(self.context, 'in_defined=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); $def(self, '$_reduce_252', function $$_reduce_252(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [false]; + $send(self.context, 'in_defined=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$keyword_cmd("defined?", val['$[]'](0), nil, [val['$[]'](3)], nil); + return result; + }, 3); + + $def(self, '$_reduce_253', function $$_reduce_253(val, _values, result) { var self = this; @@ -22353,71 +22334,75 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_253', function $$_reduce_253(val, _values, result) { - var $a, $b, self = this, _def_t = nil, name_t = nil; + $def(self, '$_reduce_254', function $$_reduce_254(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, name_t = nil, ctx = nil, $writer = nil; - $b = val['$[]'](0), $a = $to_ary($b), (_def_t = ($a[0] == null ? nil : $a[0])), (name_t = ($a[1] == null ? nil : $a[1])), $b; + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), ($c = $to_ary(($a[1] == null ? nil : $a[1])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; self.$endless_method_name(name_t); - result = $send(self.builder, 'def_endless_method', $to_a(val['$[]'](0)).concat([val['$[]'](1), val['$[]'](2), val['$[]'](3)])); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + result = self.builder.$def_endless_method(def_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_254', function $$_reduce_254(val, _values, result) { - var $a, $b, self = this, _def_t = nil, name_t = nil, rescue_body = nil, method_body = nil; + $def(self, '$_reduce_255', function $$_reduce_255(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, name_t = nil, ctx = nil, rescue_body = nil, method_body = nil, $writer = nil; - $b = val['$[]'](0), $a = $to_ary($b), (_def_t = ($a[0] == null ? nil : $a[0])), (name_t = ($a[1] == null ? nil : $a[1])), $b; + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), ($c = $to_ary(($a[1] == null ? nil : $a[1])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; self.$endless_method_name(name_t); rescue_body = self.builder.$rescue_body(val['$[]'](4), nil, nil, nil, nil, val['$[]'](5)); method_body = self.builder.$begin_body(val['$[]'](3), [rescue_body]); - result = $send(self.builder, 'def_endless_method', $to_a(val['$[]'](0)).concat([val['$[]'](1), val['$[]'](2), method_body])); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + result = self.builder.$def_endless_method(def_t, name_t, val['$[]'](1), val['$[]'](2), method_body); + self.$local_pop(); self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_255', function $$_reduce_255(val, _values, result) { - var $a, $b, self = this, _def_t = nil, _recv = nil, _dot_t = nil, name_t = nil; + $def(self, '$_reduce_256', function $$_reduce_256(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, recv = nil, dot_t = nil, name_t = nil, ctx = nil, $writer = nil; - $b = val['$[]'](0), $a = $to_ary($b), (_def_t = ($a[0] == null ? nil : $a[0])), (_recv = ($a[1] == null ? nil : $a[1])), (_dot_t = ($a[2] == null ? nil : $a[2])), (name_t = ($a[3] == null ? nil : $a[3])), $b; + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), (recv = ($a[1] == null ? nil : $a[1])), (dot_t = ($a[2] == null ? nil : $a[2])), ($c = $to_ary(($a[3] == null ? nil : $a[3])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; self.$endless_method_name(name_t); - result = $send(self.builder, 'def_endless_singleton', $to_a(val['$[]'](0)).concat([val['$[]'](1), val['$[]'](2), val['$[]'](3)])); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + result = self.builder.$def_endless_singleton(def_t, recv, dot_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_256', function $$_reduce_256(val, _values, result) { - var $a, $b, self = this, _def_t = nil, _recv = nil, _dot_t = nil, name_t = nil, rescue_body = nil, method_body = nil; + $def(self, '$_reduce_257', function $$_reduce_257(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, recv = nil, dot_t = nil, name_t = nil, ctx = nil, rescue_body = nil, method_body = nil, $writer = nil; - $b = val['$[]'](0), $a = $to_ary($b), (_def_t = ($a[0] == null ? nil : $a[0])), (_recv = ($a[1] == null ? nil : $a[1])), (_dot_t = ($a[2] == null ? nil : $a[2])), (name_t = ($a[3] == null ? nil : $a[3])), $b; + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), (recv = ($a[1] == null ? nil : $a[1])), (dot_t = ($a[2] == null ? nil : $a[2])), ($c = $to_ary(($a[3] == null ? nil : $a[3])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; self.$endless_method_name(name_t); rescue_body = self.builder.$rescue_body(val['$[]'](4), nil, nil, nil, nil, val['$[]'](5)); method_body = self.builder.$begin_body(val['$[]'](3), [rescue_body]); - result = $send(self.builder, 'def_endless_singleton', $to_a(val['$[]'](0)).concat([val['$[]'](1), val['$[]'](2), method_body])); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + result = self.builder.$def_endless_singleton(def_t, recv, dot_t, name_t, val['$[]'](1), val['$[]'](2), method_body); + self.$local_pop(); self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_262', function $$_reduce_262(val, _values, result) { + $def(self, '$_reduce_263', function $$_reduce_263(val, _values, result) { var self = this; @@ -22425,7 +22410,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_263', function $$_reduce_263(val, _values, result) { + $def(self, '$_reduce_264', function $$_reduce_264(val, _values, result) { var self = this; @@ -22433,7 +22418,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_267', function $$_reduce_267(val, _values, result) { + $def(self, '$_reduce_268', function $$_reduce_268(val, _values, result) { var self = this; @@ -22441,7 +22426,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_268', function $$_reduce_268(val, _values, result) { + $def(self, '$_reduce_269', function $$_reduce_269(val, _values, result) { var self = this; @@ -22449,7 +22434,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_270', function $$_reduce_270(val, _values, result) { + $def(self, '$_reduce_271', function $$_reduce_271(val, _values, result) { var self = this, rescue_body = nil; @@ -22458,14 +22443,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_271', function $$_reduce_271(val, _values, result) { + $def(self, '$_reduce_272', function $$_reduce_272(val, _values, result) { result = val; return result; }, 3); - $def(self, '$_reduce_272', function $$_reduce_272(val, _values, result) { + $def(self, '$_reduce_273', function $$_reduce_273(val, _values, result) { var self = this; @@ -22476,7 +22461,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_273', function $$_reduce_273(val, _values, result) { + $def(self, '$_reduce_274', function $$_reduce_274(val, _values, result) { var self = this; @@ -22487,21 +22472,21 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_274', function $$_reduce_274(val, _values, result) { + $def(self, '$_reduce_275', function $$_reduce_275(val, _values, result) { result = [nil, [], nil]; return result; }, 3); - $def(self, '$_reduce_276', function $$_reduce_276(val, _values, result) { + $def(self, '$_reduce_277', function $$_reduce_277(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_279', function $$_reduce_279(val, _values, result) { + $def(self, '$_reduce_280', function $$_reduce_280(val, _values, result) { var self = this; @@ -22509,7 +22494,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_280', function $$_reduce_280(val, _values, result) { + $def(self, '$_reduce_281', function $$_reduce_281(val, _values, result) { var self = this; @@ -22517,21 +22502,21 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_281', function $$_reduce_281(val, _values, result) { + $def(self, '$_reduce_282', function $$_reduce_282(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_282', function $$_reduce_282(val, _values, result) { + $def(self, '$_reduce_283', function $$_reduce_283(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_283', function $$_reduce_283(val, _values, result) { + $def(self, '$_reduce_284', function $$_reduce_284(val, _values, result) { var self = this; @@ -22540,7 +22525,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_284', function $$_reduce_284(val, _values, result) { + $def(self, '$_reduce_285', function $$_reduce_285(val, _values, result) { var self = this, assocs = nil; @@ -22550,14 +22535,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_285', function $$_reduce_285(val, _values, result) { + $def(self, '$_reduce_286', function $$_reduce_286(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_286', function $$_reduce_286(val, _values, result) { + $def(self, '$_reduce_287', function $$_reduce_287(val, _values, result) { var self = this, last_token = nil, lookahead = nil, $ret_or_1 = nil, top = nil; @@ -22574,7 +22559,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_287', function $$_reduce_287(val, _values, result) { + $def(self, '$_reduce_288', function $$_reduce_288(val, _values, result) { var self = this, last_token = nil, lookahead = nil, top = nil; @@ -22592,7 +22577,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_288', function $$_reduce_288(val, _values, result) { + $def(self, '$_reduce_289', function $$_reduce_289(val, _values, result) { var self = this; @@ -22600,7 +22585,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_289', function $$_reduce_289(val, _values, result) { + $def(self, '$_reduce_290', function $$_reduce_290(val, _values, result) { var self = this; @@ -22611,28 +22596,28 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_290', function $$_reduce_290(val, _values, result) { + $def(self, '$_reduce_291', function $$_reduce_291(val, _values, result) { result = [val['$[]'](1)]; return result; }, 3); - $def(self, '$_reduce_291', function $$_reduce_291(val, _values, result) { + $def(self, '$_reduce_292', function $$_reduce_292(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_292', function $$_reduce_292(val, _values, result) { + $def(self, '$_reduce_293', function $$_reduce_293(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_293', function $$_reduce_293(val, _values, result) { + $def(self, '$_reduce_294', function $$_reduce_294(val, _values, result) { var self = this; @@ -22640,14 +22625,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_294', function $$_reduce_294(val, _values, result) { + $def(self, '$_reduce_295', function $$_reduce_295(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_295', function $$_reduce_295(val, _values, result) { + $def(self, '$_reduce_296', function $$_reduce_296(val, _values, result) { var self = this; @@ -22655,7 +22640,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_296', function $$_reduce_296(val, _values, result) { + $def(self, '$_reduce_297', function $$_reduce_297(val, _values, result) { var self = this; @@ -22663,14 +22648,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_298', function $$_reduce_298(val, _values, result) { + $def(self, '$_reduce_299', function $$_reduce_299(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_299', function $$_reduce_299(val, _values, result) { + $def(self, '$_reduce_300', function $$_reduce_300(val, _values, result) { var self = this; @@ -22678,7 +22663,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_300', function $$_reduce_300(val, _values, result) { + $def(self, '$_reduce_301', function $$_reduce_301(val, _values, result) { var self = this; @@ -22686,7 +22671,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_311', function $$_reduce_311(val, _values, result) { + $def(self, '$_reduce_312', function $$_reduce_312(val, _values, result) { var self = this; @@ -22694,7 +22679,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_312', function $$_reduce_312(val, _values, result) { + $def(self, '$_reduce_313', function $$_reduce_313(val, _values, result) { var self = this; @@ -22702,7 +22687,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_313', function $$_reduce_313(val, _values, result) { + $def(self, '$_reduce_314', function $$_reduce_314(val, _values, result) { var self = this; @@ -22711,7 +22696,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_314', function $$_reduce_314(val, _values, result) { + $def(self, '$_reduce_315', function $$_reduce_315(val, _values, result) { var self = this, $writer = nil; @@ -22722,7 +22707,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_315', function $$_reduce_315(val, _values, result) { + $def(self, '$_reduce_316', function $$_reduce_316(val, _values, result) { var self = this; @@ -22730,7 +22715,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_316', function $$_reduce_316(val, _values, result) { + $def(self, '$_reduce_317', function $$_reduce_317(val, _values, result) { var self = this, $writer = nil; @@ -22741,7 +22726,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_317', function $$_reduce_317(val, _values, result) { + $def(self, '$_reduce_318', function $$_reduce_318(val, _values, result) { var self = this; @@ -22749,7 +22734,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_318', function $$_reduce_318(val, _values, result) { + $def(self, '$_reduce_319', function $$_reduce_319(val, _values, result) { var self = this; @@ -22757,7 +22742,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_319', function $$_reduce_319(val, _values, result) { + $def(self, '$_reduce_320', function $$_reduce_320(val, _values, result) { var self = this; @@ -22765,7 +22750,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_320', function $$_reduce_320(val, _values, result) { + $def(self, '$_reduce_321', function $$_reduce_321(val, _values, result) { var self = this; @@ -22773,7 +22758,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_321', function $$_reduce_321(val, _values, result) { + $def(self, '$_reduce_322', function $$_reduce_322(val, _values, result) { var self = this; @@ -22781,7 +22766,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_322', function $$_reduce_322(val, _values, result) { + $def(self, '$_reduce_323', function $$_reduce_323(val, _values, result) { var self = this; @@ -22789,7 +22774,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_323', function $$_reduce_323(val, _values, result) { + $def(self, '$_reduce_324', function $$_reduce_324(val, _values, result) { var self = this; @@ -22797,7 +22782,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_324', function $$_reduce_324(val, _values, result) { + $def(self, '$_reduce_325', function $$_reduce_325(val, _values, result) { var self = this; @@ -22805,7 +22790,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_325', function $$_reduce_325(val, _values, result) { + $def(self, '$_reduce_326', function $$_reduce_326(val, _values, result) { var self = this; @@ -22813,7 +22798,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_326', function $$_reduce_326(val, _values, result) { + $def(self, '$_reduce_327', function $$_reduce_327(val, _values, result) { var self = this; @@ -22821,15 +22806,30 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_327', function $$_reduce_327(val, _values, result) { - var self = this; + $def(self, '$_reduce_328', function $$_reduce_328(val, _values, result) { + var self = this, $writer = nil; - result = self.builder.$keyword_cmd("defined?", val['$[]'](0), val['$[]'](2), [val['$[]'](3)], val['$[]'](4)); + + $writer = [true]; + $send(self.context, 'in_defined=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_328', function $$_reduce_328(val, _values, result) { + $def(self, '$_reduce_329', function $$_reduce_329(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [false]; + $send(self.context, 'in_defined=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$keyword_cmd("defined?", val['$[]'](0), val['$[]'](2), [val['$[]'](4)], val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_330', function $$_reduce_330(val, _values, result) { var self = this; @@ -22837,7 +22837,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_329', function $$_reduce_329(val, _values, result) { + $def(self, '$_reduce_331', function $$_reduce_331(val, _values, result) { var self = this; @@ -22845,7 +22845,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_330', function $$_reduce_330(val, _values, result) { + $def(self, '$_reduce_332', function $$_reduce_332(val, _values, result) { var $a, $b, self = this, method_call = nil, begin_t = nil, args = nil, body = nil, end_t = nil; @@ -22855,7 +22855,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_332', function $$_reduce_332(val, _values, result) { + $def(self, '$_reduce_334', function $$_reduce_334(val, _values, result) { var $a, $b, self = this, begin_t = nil, args = nil, body = nil, end_t = nil; @@ -22864,7 +22864,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_334', function $$_reduce_334(val, _values, result) { + $def(self, '$_reduce_336', function $$_reduce_336(val, _values, result) { var $a, $b, self = this, else_t = nil, else_ = nil; @@ -22873,7 +22873,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_335', function $$_reduce_335(val, _values, result) { + $def(self, '$_reduce_337', function $$_reduce_337(val, _values, result) { var $a, $b, self = this, else_t = nil, else_ = nil; @@ -22882,7 +22882,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_336', function $$_reduce_336(val, _values, result) { + $def(self, '$_reduce_338', function $$_reduce_338(val, _values, result) { var self = this; @@ -22890,7 +22890,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_337', function $$_reduce_337(val, _values, result) { + $def(self, '$_reduce_339', function $$_reduce_339(val, _values, result) { var self = this; @@ -22898,7 +22898,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_338', function $$_reduce_338(val, _values, result) { + $def(self, '$_reduce_340', function $$_reduce_340(val, _values, result) { var $a, $b, $c, self = this, when_bodies = nil, else_t = nil, else_body = nil; @@ -22907,7 +22907,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_339', function $$_reduce_339(val, _values, result) { + $def(self, '$_reduce_341', function $$_reduce_341(val, _values, result) { var $a, $b, $c, self = this, when_bodies = nil, else_t = nil, else_body = nil; @@ -22916,7 +22916,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_340', function $$_reduce_340(val, _values, result) { + $def(self, '$_reduce_342', function $$_reduce_342(val, _values, result) { var $a, $b, $c, self = this, in_bodies = nil, else_t = nil, else_body = nil; @@ -22925,7 +22925,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_341', function $$_reduce_341(val, _values, result) { + $def(self, '$_reduce_343', function $$_reduce_343(val, _values, result) { var self = this; @@ -22933,107 +22933,130 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_342', function $$_reduce_342(val, _values, result) { - var self = this; + $def(self, '$_reduce_344', function $$_reduce_344(val, _values, result) { + var self = this, $writer = nil; - self.static_env.$extend_static(); - self.lexer.$cmdarg().$push(false); - self.lexer.$cond().$push(false); - self.context.$push("class"); + + $writer = [true]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.$local_push(); return result; }, 3); - $def(self, '$_reduce_343', function $$_reduce_343(val, _values, result) { - var $a, $b, self = this, lt_t = nil, superclass = nil; + $def(self, '$_reduce_345', function $$_reduce_345(val, _values, result) { + var $a, $b, self = this, k_class = nil, ctx = nil, lt_t = nil, superclass = nil, $writer = nil; - if (!$truthy(self.context['$class_definition_allowed?']())) { - self.$diagnostic("error", "class_in_def", nil, val['$[]'](0)) + $b = val['$[]'](0), $a = $to_ary($b), (k_class = ($a[0] == null ? nil : $a[0])), (ctx = ($a[1] == null ? nil : $a[1])), $b; + if ($truthy(self.context.$in_def())) { + self.$diagnostic("error", "class_in_def", nil, k_class) }; $b = val['$[]'](2), $a = $to_ary($b), (lt_t = ($a[0] == null ? nil : $a[0])), (superclass = ($a[1] == null ? nil : $a[1])), $b; - result = self.builder.$def_class(val['$[]'](0), val['$[]'](1), lt_t, superclass, val['$[]'](4), val['$[]'](5)); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + result = self.builder.$def_class(k_class, val['$[]'](1), lt_t, superclass, val['$[]'](4), val['$[]'](5)); + self.$local_pop(); + + $writer = [ctx.$in_class()]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_344', function $$_reduce_344(val, _values, result) { - var self = this; + $def(self, '$_reduce_346', function $$_reduce_346(val, _values, result) { + var self = this, $writer = nil; - self.static_env.$extend_static(); - self.lexer.$cmdarg().$push(false); - self.lexer.$cond().$push(false); - self.context.$push("sclass"); + + $writer = [false]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.$local_push(); return result; }, 3); - $def(self, '$_reduce_345', function $$_reduce_345(val, _values, result) { - var self = this; + $def(self, '$_reduce_347', function $$_reduce_347(val, _values, result) { + var $a, $b, self = this, k_class = nil, ctx = nil, $writer = nil; - result = self.builder.$def_sclass(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](5), val['$[]'](6)); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + $b = val['$[]'](0), $a = $to_ary($b), (k_class = ($a[0] == null ? nil : $a[0])), (ctx = ($a[1] == null ? nil : $a[1])), $b; + result = self.builder.$def_sclass(k_class, val['$[]'](1), val['$[]'](2), val['$[]'](5), val['$[]'](6)); + self.$local_pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [ctx.$in_class()]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_346', function $$_reduce_346(val, _values, result) { - var self = this; + $def(self, '$_reduce_348', function $$_reduce_348(val, _values, result) { + var self = this, $writer = nil; - self.static_env.$extend_static(); - self.lexer.$cmdarg().$push(false); - self.context.$push("module"); + + $writer = [true]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.$local_push(); return result; }, 3); - $def(self, '$_reduce_347', function $$_reduce_347(val, _values, result) { - var self = this; + $def(self, '$_reduce_349', function $$_reduce_349(val, _values, result) { + var $a, $b, self = this, k_mod = nil, ctx = nil, $writer = nil; - if (!$truthy(self.context['$module_definition_allowed?']())) { - self.$diagnostic("error", "module_in_def", nil, val['$[]'](0)) + $b = val['$[]'](0), $a = $to_ary($b), (k_mod = ($a[0] == null ? nil : $a[0])), (ctx = ($a[1] == null ? nil : $a[1])), $b; + if ($truthy(self.context.$in_def())) { + self.$diagnostic("error", "module_in_def", nil, k_mod) }; - result = self.builder.$def_module(val['$[]'](0), val['$[]'](1), val['$[]'](3), val['$[]'](4)); - self.lexer.$cmdarg().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + result = self.builder.$def_module(k_mod, val['$[]'](1), val['$[]'](3), val['$[]'](4)); + self.$local_pop(); + + $writer = [ctx.$in_class()]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_348', function $$_reduce_348(val, _values, result) { - var self = this; + $def(self, '$_reduce_350', function $$_reduce_350(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, name_t = nil, ctx = nil, $writer = nil; - result = $send(self.builder, 'def_method', $to_a(val['$[]'](0)).concat([val['$[]'](1), val['$[]'](2), val['$[]'](3)])); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), ($c = $to_ary(($a[1] == null ? nil : $a[1])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + result = self.builder.$def_method(def_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_349', function $$_reduce_349(val, _values, result) { - var self = this; + $def(self, '$_reduce_351', function $$_reduce_351(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, recv = nil, dot_t = nil, name_t = nil, ctx = nil, $writer = nil; - result = $send(self.builder, 'def_singleton', $to_a(val['$[]'](0)).concat([val['$[]'](1), val['$[]'](2), val['$[]'](3)])); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), (recv = ($a[1] == null ? nil : $a[1])), (dot_t = ($a[2] == null ? nil : $a[2])), ($c = $to_ary(($a[3] == null ? nil : $a[3])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + result = self.builder.$def_singleton(def_t, recv, dot_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_350', function $$_reduce_350(val, _values, result) { + $def(self, '$_reduce_352', function $$_reduce_352(val, _values, result) { var self = this; @@ -23041,7 +23064,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_351', function $$_reduce_351(val, _values, result) { + $def(self, '$_reduce_353', function $$_reduce_353(val, _values, result) { var self = this; @@ -23049,7 +23072,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_352', function $$_reduce_352(val, _values, result) { + $def(self, '$_reduce_354', function $$_reduce_354(val, _values, result) { var self = this; @@ -23057,7 +23080,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_353', function $$_reduce_353(val, _values, result) { + $def(self, '$_reduce_355', function $$_reduce_355(val, _values, result) { var self = this; @@ -23065,24 +23088,52 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_355', function $$_reduce_355(val, _values, result) { + $def(self, '$_reduce_357', function $$_reduce_357(val, _values, result) { var self = this; - if ($truthy(self.context['$in_class?']())) { + result = [val['$[]'](0), self.context.$dup()]; + return result; + }, 3); + + $def(self, '$_reduce_358', function $$_reduce_358(val, _values, result) { + var self = this; + + + result = [val['$[]'](0), self.context.$dup()]; + return result; + }, 3); + + $def(self, '$_reduce_359', function $$_reduce_359(val, _values, result) { + var self = this, $writer = nil; + + + result = val['$[]'](0); + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_360', function $$_reduce_360(val, _values, result) { + var self = this, $ret_or_1 = nil; + + + if ((($truthy(self.context.$in_class()) && ($not(self.context.$in_def()))) && ($not(($truthy(($ret_or_1 = self.$context().$in_block())) ? ($ret_or_1) : (self.$context().$in_lambda())))))) { self.$diagnostic("error", "invalid_return", nil, val['$[]'](0)) }; return result; }, 3); - $def(self, '$_reduce_358', function $$_reduce_358(val, _values, result) { + $def(self, '$_reduce_363', function $$_reduce_363(val, _values, result) { result = val['$[]'](1); return result; }, 3); - $def(self, '$_reduce_362', function $$_reduce_362(val, _values, result) { + $def(self, '$_reduce_367', function $$_reduce_367(val, _values, result) { var $a, $b, self = this, else_t = nil, else_ = nil; @@ -23091,14 +23142,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_364', function $$_reduce_364(val, _values, result) { + $def(self, '$_reduce_369', function $$_reduce_369(val, _values, result) { result = val; return result; }, 3); - $def(self, '$_reduce_367', function $$_reduce_367(val, _values, result) { + $def(self, '$_reduce_372', function $$_reduce_372(val, _values, result) { var self = this; @@ -23106,7 +23157,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_368', function $$_reduce_368(val, _values, result) { + $def(self, '$_reduce_373', function $$_reduce_373(val, _values, result) { var self = this; @@ -23114,49 +23165,49 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_369', function $$_reduce_369(val, _values, result) { + $def(self, '$_reduce_374', function $$_reduce_374(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_370', function $$_reduce_370(val, _values, result) { + $def(self, '$_reduce_375', function $$_reduce_375(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_372', function $$_reduce_372(val, _values, result) { + $def(self, '$_reduce_377', function $$_reduce_377(val, _values, result) { result = val['$[]'](0).$push(val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_373', function $$_reduce_373(val, _values, result) { + $def(self, '$_reduce_378', function $$_reduce_378(val, _values, result) { result = val['$[]'](0).$push(val['$[]'](2)).$concat(val['$[]'](4)); return result; }, 3); - $def(self, '$_reduce_374', function $$_reduce_374(val, _values, result) { + $def(self, '$_reduce_379', function $$_reduce_379(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_375', function $$_reduce_375(val, _values, result) { + $def(self, '$_reduce_380', function $$_reduce_380(val, _values, result) { result = [val['$[]'](0)].concat($to_a(val['$[]'](2))); return result; }, 3); - $def(self, '$_reduce_376', function $$_reduce_376(val, _values, result) { + $def(self, '$_reduce_381', function $$_reduce_381(val, _values, result) { var self = this; @@ -23164,7 +23215,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_377', function $$_reduce_377(val, _values, result) { + $def(self, '$_reduce_382', function $$_reduce_382(val, _values, result) { var self = this; @@ -23172,91 +23223,109 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_380', function $$_reduce_380(val, _values, result) { + $def(self, '$_reduce_385', function $$_reduce_385(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_386', function $$_reduce_386(val, _values, result) { + + + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_387', function $$_reduce_387(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_381', function $$_reduce_381(val, _values, result) { + $def(self, '$_reduce_388', function $$_reduce_388(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_382', function $$_reduce_382(val, _values, result) { + $def(self, '$_reduce_389', function $$_reduce_389(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_383', function $$_reduce_383(val, _values, result) { + $def(self, '$_reduce_390', function $$_reduce_390(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_384', function $$_reduce_384(val, _values, result) { + $def(self, '$_reduce_391', function $$_reduce_391(val, _values, result) { result = val['$[]'](1); return result; }, 3); - $def(self, '$_reduce_385', function $$_reduce_385(val, _values, result) { + $def(self, '$_reduce_392', function $$_reduce_392(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_387', function $$_reduce_387(val, _values, result) { + $def(self, '$_reduce_394', function $$_reduce_394(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; }, 3); - $def(self, '$_reduce_388', function $$_reduce_388(val, _values, result) { + $def(self, '$_reduce_395', function $$_reduce_395(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](6)).$concat(val['$[]'](7)); return result; }, 3); - $def(self, '$_reduce_389', function $$_reduce_389(val, _values, result) { + $def(self, '$_reduce_396', function $$_reduce_396(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_390', function $$_reduce_390(val, _values, result) { + $def(self, '$_reduce_397', function $$_reduce_397(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; }, 3); - $def(self, '$_reduce_391', function $$_reduce_391(val, _values, result) { + $def(self, '$_reduce_398', function $$_reduce_398(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_393', function $$_reduce_393(val, _values, result) { + $def(self, '$_reduce_400', function $$_reduce_400(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; }, 3); - $def(self, '$_reduce_394', function $$_reduce_394(val, _values, result) { + $def(self, '$_reduce_401', function $$_reduce_401(val, _values, result) { var self = this; @@ -23268,49 +23337,49 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_395', function $$_reduce_395(val, _values, result) { + $def(self, '$_reduce_402', function $$_reduce_402(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_396', function $$_reduce_396(val, _values, result) { + $def(self, '$_reduce_403', function $$_reduce_403(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; }, 3); - $def(self, '$_reduce_397', function $$_reduce_397(val, _values, result) { + $def(self, '$_reduce_404', function $$_reduce_404(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_398', function $$_reduce_398(val, _values, result) { + $def(self, '$_reduce_405', function $$_reduce_405(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_399', function $$_reduce_399(val, _values, result) { + $def(self, '$_reduce_406', function $$_reduce_406(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_400', function $$_reduce_400(val, _values, result) { + $def(self, '$_reduce_407', function $$_reduce_407(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_402', function $$_reduce_402(val, _values, result) { + $def(self, '$_reduce_409', function $$_reduce_409(val, _values, result) { var self = this; @@ -23318,7 +23387,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_403', function $$_reduce_403(val, _values, result) { + $def(self, '$_reduce_410', function $$_reduce_410(val, _values, result) { var self = this, $writer = nil; @@ -23329,55 +23398,63 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_404', function $$_reduce_404(val, _values, result) { - var self = this; + $def(self, '$_reduce_411', function $$_reduce_411(val, _values, result) { + var self = this, $writer = nil; self.max_numparam_stack['$has_ordinary_params!'](); self.current_arg_stack.$set(nil); + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$args(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_405', function $$_reduce_405(val, _values, result) { - var self = this; + $def(self, '$_reduce_412', function $$_reduce_412(val, _values, result) { + var self = this, $writer = nil; self.max_numparam_stack['$has_ordinary_params!'](); self.current_arg_stack.$set(nil); + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$args(val['$[]'](0), val['$[]'](1).$concat(val['$[]'](2)), val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_406', function $$_reduce_406(val, _values, result) { + $def(self, '$_reduce_413', function $$_reduce_413(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_407', function $$_reduce_407(val, _values, result) { + $def(self, '$_reduce_414', function $$_reduce_414(val, _values, result) { result = val['$[]'](2); return result; }, 3); - $def(self, '$_reduce_408', function $$_reduce_408(val, _values, result) { + $def(self, '$_reduce_415', function $$_reduce_415(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_409', function $$_reduce_409(val, _values, result) { + $def(self, '$_reduce_416', function $$_reduce_416(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_410', function $$_reduce_410(val, _values, result) { + $def(self, '$_reduce_417', function $$_reduce_417(val, _values, result) { var self = this; @@ -23386,27 +23463,30 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_412', function $$_reduce_412(val, _values, result) { - var self = this; + $def(self, '$_reduce_419', function $$_reduce_419(val, _values, result) { + var self = this, $writer = nil; self.static_env.$extend_dynamic(); - self.max_numparam_stack.$push(); - self.context.$push("lambda"); + self.max_numparam_stack.$push($hash2(["static"], {"static": false})); + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_413', function $$_reduce_413(val, _values, result) { + $def(self, '$_reduce_420', function $$_reduce_420(val, _values, result) { var self = this; - self.context.$pop(); self.lexer.$cmdarg().$push(false); return result; }, 3); - $def(self, '$_reduce_414', function $$_reduce_414(val, _values, result) { - var $a, $b, self = this, lambda_call = nil, args = nil, begin_t = nil, body = nil, end_t = nil; + $def(self, '$_reduce_421', function $$_reduce_421(val, _values, result) { + var $a, $b, self = this, lambda_call = nil, args = nil, begin_t = nil, body = nil, end_t = nil, $writer = nil; lambda_call = self.builder.$call_lambda(val['$[]'](0)); @@ -23415,23 +23495,35 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.max_numparam_stack.$pop(); self.static_env.$unextend(); self.lexer.$cmdarg().$pop(); + + $writer = [val['$[]'](1).$in_lambda()]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$block(lambda_call, begin_t, args, body, end_t); return result; }, 3); - $def(self, '$_reduce_415', function $$_reduce_415(val, _values, result) { - var self = this; + $def(self, '$_reduce_422', function $$_reduce_422(val, _values, result) { + var self = this, $writer = nil; + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; self.max_numparam_stack['$has_ordinary_params!'](); result = self.builder.$args(val['$[]'](0), val['$[]'](1).$concat(val['$[]'](2)), val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_416', function $$_reduce_416(val, _values, result) { - var self = this; + $def(self, '$_reduce_423', function $$_reduce_423(val, _values, result) { + var self = this, $writer = nil; + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; if ($truthy(val['$[]'](0)['$any?']())) { self.max_numparam_stack['$has_ordinary_params!']() }; @@ -23439,58 +23531,79 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_417', function $$_reduce_417(val, _values, result) { - var self = this; + $def(self, '$_reduce_424', function $$_reduce_424(val, _values, result) { + var self = this, $writer = nil; - self.context.$push("lambda"); + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_418', function $$_reduce_418(val, _values, result) { - var self = this; + $def(self, '$_reduce_425', function $$_reduce_425(val, _values, result) { + var self = this, $writer = nil; + + $writer = [val['$[]'](1).$in_lambda()]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = [val['$[]'](0), val['$[]'](2), val['$[]'](3)]; - self.context.$pop(); return result; }, 3); - $def(self, '$_reduce_419', function $$_reduce_419(val, _values, result) { - var self = this; + $def(self, '$_reduce_426', function $$_reduce_426(val, _values, result) { + var self = this, $writer = nil; - self.context.$push("lambda"); + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_420', function $$_reduce_420(val, _values, result) { - var self = this; + $def(self, '$_reduce_427', function $$_reduce_427(val, _values, result) { + var self = this, $writer = nil; + + $writer = [val['$[]'](1).$in_lambda()]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = [val['$[]'](0), val['$[]'](2), val['$[]'](3)]; - self.context.$pop(); return result; }, 3); - $def(self, '$_reduce_421', function $$_reduce_421(val, _values, result) { - var self = this; + $def(self, '$_reduce_428', function $$_reduce_428(val, _values, result) { + var self = this, $writer = nil; - self.context.$push("block"); + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_422', function $$_reduce_422(val, _values, result) { - var self = this; + $def(self, '$_reduce_429', function $$_reduce_429(val, _values, result) { + var self = this, $writer = nil; + + $writer = [val['$[]'](1).$in_block()]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](3)]); - self.context.$pop(); return result; }, 3); - $def(self, '$_reduce_423', function $$_reduce_423(val, _values, result) { + $def(self, '$_reduce_430', function $$_reduce_430(val, _values, result) { var $a, $b, self = this, begin_t = nil, block_args = nil, body = nil, end_t = nil; @@ -23499,7 +23612,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_424', function $$_reduce_424(val, _values, result) { + $def(self, '$_reduce_431', function $$_reduce_431(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; @@ -23508,7 +23621,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_425', function $$_reduce_425(val, _values, result) { + $def(self, '$_reduce_432', function $$_reduce_432(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil, method_call = nil, begin_t = nil, body = nil, end_t = nil; @@ -23519,7 +23632,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_426', function $$_reduce_426(val, _values, result) { + $def(self, '$_reduce_433', function $$_reduce_433(val, _values, result) { var $a, $b, self = this, method_call = nil, begin_t = nil, args = nil, body = nil, end_t = nil; @@ -23529,7 +23642,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_427', function $$_reduce_427(val, _values, result) { + $def(self, '$_reduce_434', function $$_reduce_434(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; @@ -23538,7 +23651,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_428', function $$_reduce_428(val, _values, result) { + $def(self, '$_reduce_435', function $$_reduce_435(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; @@ -23547,7 +23660,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_429', function $$_reduce_429(val, _values, result) { + $def(self, '$_reduce_436', function $$_reduce_436(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; @@ -23556,7 +23669,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_430', function $$_reduce_430(val, _values, result) { + $def(self, '$_reduce_437', function $$_reduce_437(val, _values, result) { var self = this; @@ -23564,7 +23677,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_431', function $$_reduce_431(val, _values, result) { + $def(self, '$_reduce_438', function $$_reduce_438(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; @@ -23573,7 +23686,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_432', function $$_reduce_432(val, _values, result) { + $def(self, '$_reduce_439', function $$_reduce_439(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; @@ -23582,7 +23695,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_433', function $$_reduce_433(val, _values, result) { + $def(self, '$_reduce_440', function $$_reduce_440(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; @@ -23591,7 +23704,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_434', function $$_reduce_434(val, _values, result) { + $def(self, '$_reduce_441', function $$_reduce_441(val, _values, result) { var self = this; @@ -23599,7 +23712,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_435', function $$_reduce_435(val, _values, result) { + $def(self, '$_reduce_442', function $$_reduce_442(val, _values, result) { var self = this; @@ -23607,50 +23720,64 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_436', function $$_reduce_436(val, _values, result) { - var self = this; + $def(self, '$_reduce_443', function $$_reduce_443(val, _values, result) { + var self = this, $writer = nil; - self.context.$push("block"); + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_437', function $$_reduce_437(val, _values, result) { - var self = this; + $def(self, '$_reduce_444', function $$_reduce_444(val, _values, result) { + var self = this, $writer = nil; + + $writer = [val['$[]'](1).$in_block()]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](3)]); - self.context.$pop(); return result; }, 3); - $def(self, '$_reduce_438', function $$_reduce_438(val, _values, result) { - var self = this; + $def(self, '$_reduce_445', function $$_reduce_445(val, _values, result) { + var self = this, $writer = nil; - self.context.$push("block"); + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_439', function $$_reduce_439(val, _values, result) { - var self = this; + $def(self, '$_reduce_446', function $$_reduce_446(val, _values, result) { + var self = this, $writer = nil; + + $writer = [val['$[]'](1).$in_block()]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](3)]); - self.context.$pop(); return result; }, 3); - $def(self, '$_reduce_440', function $$_reduce_440(val, _values, result) { + $def(self, '$_reduce_447', function $$_reduce_447(val, _values, result) { var self = this; self.static_env.$extend_dynamic(); - self.max_numparam_stack.$push(); + self.max_numparam_stack.$push($hash2(["static"], {"static": false})); return result; }, 3); - $def(self, '$_reduce_441', function $$_reduce_441(val, _values, result) { + $def(self, '$_reduce_448', function $$_reduce_448(val, _values, result) { var self = this, args = nil; @@ -23661,16 +23788,16 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_442', function $$_reduce_442(val, _values, result) { + $def(self, '$_reduce_449', function $$_reduce_449(val, _values, result) { var self = this; self.static_env.$extend_dynamic(); - self.max_numparam_stack.$push(); + self.max_numparam_stack.$push($hash2(["static"], {"static": false})); return result; }, 3); - $def(self, '$_reduce_443', function $$_reduce_443(val, _values, result) { + $def(self, '$_reduce_450', function $$_reduce_450(val, _values, result) { var self = this; @@ -23678,7 +23805,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_444', function $$_reduce_444(val, _values, result) { + $def(self, '$_reduce_451', function $$_reduce_451(val, _values, result) { var self = this, args = nil; @@ -23690,7 +23817,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_445', function $$_reduce_445(val, _values, result) { + $def(self, '$_reduce_452', function $$_reduce_452(val, _values, result) { var self = this; @@ -23698,14 +23825,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_446', function $$_reduce_446(val, _values, result) { + $def(self, '$_reduce_453', function $$_reduce_453(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_448', function $$_reduce_448(val, _values, result) { + $def(self, '$_reduce_455', function $$_reduce_455(val, _values, result) { var self = this, $writer = nil; @@ -23719,15 +23846,15 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ $writer[$rb_minus($writer["length"], 1)];; self.pattern_variables.$push(); self.pattern_hash_keys.$push(); - result = self.lexer.$in_kwarg(); + result = self.context.$in_kwarg(); $writer = [true]; - $send(self.lexer, 'in_kwarg=', $to_a($writer)); + $send(self.context, 'in_kwarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_449', function $$_reduce_449(val, _values, result) { + $def(self, '$_reduce_456', function $$_reduce_456(val, _values, result) { var self = this, $writer = nil; @@ -23735,12 +23862,12 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.pattern_hash_keys.$pop(); $writer = [val['$[]'](1)]; - $send(self.lexer, 'in_kwarg=', $to_a($writer)); + $send(self.context, 'in_kwarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_450', function $$_reduce_450(val, _values, result) { + $def(self, '$_reduce_457', function $$_reduce_457(val, _values, result) { var self = this; @@ -23748,21 +23875,21 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_451', function $$_reduce_451(val, _values, result) { + $def(self, '$_reduce_458', function $$_reduce_458(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_453', function $$_reduce_453(val, _values, result) { + $def(self, '$_reduce_460', function $$_reduce_460(val, _values, result) { result = [val['$[]'](0), nil]; return result; }, 3); - $def(self, '$_reduce_454', function $$_reduce_454(val, _values, result) { + $def(self, '$_reduce_461', function $$_reduce_461(val, _values, result) { var self = this; @@ -23770,7 +23897,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_455', function $$_reduce_455(val, _values, result) { + $def(self, '$_reduce_462', function $$_reduce_462(val, _values, result) { var self = this; @@ -23778,7 +23905,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_457', function $$_reduce_457(val, _values, result) { + $def(self, '$_reduce_464', function $$_reduce_464(val, _values, result) { var self = this, item = nil; @@ -23787,7 +23914,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_458', function $$_reduce_458(val, _values, result) { + $def(self, '$_reduce_465', function $$_reduce_465(val, _values, result) { var self = this; @@ -23795,7 +23922,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_459', function $$_reduce_459(val, _values, result) { + $def(self, '$_reduce_466', function $$_reduce_466(val, _values, result) { var self = this; @@ -23803,7 +23930,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_460', function $$_reduce_460(val, _values, result) { + $def(self, '$_reduce_467', function $$_reduce_467(val, _values, result) { var self = this; @@ -23811,7 +23938,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_461', function $$_reduce_461(val, _values, result) { + $def(self, '$_reduce_468', function $$_reduce_468(val, _values, result) { var self = this; @@ -23819,7 +23946,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_463', function $$_reduce_463(val, _values, result) { + $def(self, '$_reduce_470', function $$_reduce_470(val, _values, result) { var self = this; @@ -23827,7 +23954,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_465', function $$_reduce_465(val, _values, result) { + $def(self, '$_reduce_472', function $$_reduce_472(val, _values, result) { var self = this; @@ -23835,7 +23962,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_467', function $$_reduce_467(val, _values, result) { + $def(self, '$_reduce_474', function $$_reduce_474(val, _values, result) { var self = this; @@ -23844,7 +23971,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_468', function $$_reduce_468(val, _values, result) { + $def(self, '$_reduce_475', function $$_reduce_475(val, _values, result) { var self = this; @@ -23853,7 +23980,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_471', function $$_reduce_471(val, _values, result) { + $def(self, '$_reduce_478', function $$_reduce_478(val, _values, result) { var self = this, pattern = nil; @@ -23863,7 +23990,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_472', function $$_reduce_472(val, _values, result) { + $def(self, '$_reduce_479', function $$_reduce_479(val, _values, result) { var self = this, pattern = nil; @@ -23873,7 +24000,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_473', function $$_reduce_473(val, _values, result) { + $def(self, '$_reduce_480', function $$_reduce_480(val, _values, result) { var self = this, pattern = nil; @@ -23883,7 +24010,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_474', function $$_reduce_474(val, _values, result) { + $def(self, '$_reduce_481', function $$_reduce_481(val, _values, result) { var self = this, pattern = nil; @@ -23892,7 +24019,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_475', function $$_reduce_475(val, _values, result) { + $def(self, '$_reduce_482', function $$_reduce_482(val, _values, result) { var self = this, pattern = nil; @@ -23902,7 +24029,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_476', function $$_reduce_476(val, _values, result) { + $def(self, '$_reduce_483', function $$_reduce_483(val, _values, result) { var self = this, pattern = nil; @@ -23912,7 +24039,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_477', function $$_reduce_477(val, _values, result) { + $def(self, '$_reduce_484', function $$_reduce_484(val, _values, result) { var self = this, pattern = nil; @@ -23922,7 +24049,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_478', function $$_reduce_478(val, _values, result) { + $def(self, '$_reduce_485', function $$_reduce_485(val, _values, result) { var self = this, pattern = nil; @@ -23931,7 +24058,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_479', function $$_reduce_479(val, _values, result) { + $def(self, '$_reduce_486', function $$_reduce_486(val, _values, result) { var self = this; @@ -23939,7 +24066,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_480', function $$_reduce_480(val, _values, result) { + $def(self, '$_reduce_487', function $$_reduce_487(val, _values, result) { var self = this; @@ -23947,7 +24074,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_481', function $$_reduce_481(val, _values, result) { + $def(self, '$_reduce_488', function $$_reduce_488(val, _values, result) { var self = this; @@ -23955,33 +24082,33 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_482', function $$_reduce_482(val, _values, result) { + $def(self, '$_reduce_489', function $$_reduce_489(val, _values, result) { var self = this, $writer = nil; self.pattern_hash_keys.$push(); - result = self.lexer.$in_kwarg(); + result = self.context.$in_kwarg(); $writer = [false]; - $send(self.lexer, 'in_kwarg=', $to_a($writer)); + $send(self.context, 'in_kwarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_483', function $$_reduce_483(val, _values, result) { + $def(self, '$_reduce_490', function $$_reduce_490(val, _values, result) { var self = this, $writer = nil; self.pattern_hash_keys.$pop(); $writer = [val['$[]'](1)]; - $send(self.lexer, 'in_kwarg=', $to_a($writer)); + $send(self.context, 'in_kwarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$hash_pattern(val['$[]'](0), val['$[]'](2), val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_484', function $$_reduce_484(val, _values, result) { + $def(self, '$_reduce_491', function $$_reduce_491(val, _values, result) { var self = this; @@ -23989,7 +24116,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_485', function $$_reduce_485(val, _values, result) { + $def(self, '$_reduce_492', function $$_reduce_492(val, _values, result) { var self = this; @@ -23997,7 +24124,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_486', function $$_reduce_486(val, _values, result) { + $def(self, '$_reduce_493', function $$_reduce_493(val, _values, result) { var self = this; @@ -24006,28 +24133,28 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_487', function $$_reduce_487(val, _values, result) { + $def(self, '$_reduce_494', function $$_reduce_494(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_488', function $$_reduce_488(val, _values, result) { + $def(self, '$_reduce_495', function $$_reduce_495(val, _values, result) { result = val['$[]'](0); return result; }, 3); - $def(self, '$_reduce_489', function $$_reduce_489(val, _values, result) { + $def(self, '$_reduce_496', function $$_reduce_496(val, _values, result) { result = [].concat($to_a(val['$[]'](0))).concat([val['$[]'](1)]); return result; }, 3); - $def(self, '$_reduce_490', function $$_reduce_490(val, _values, result) { + $def(self, '$_reduce_497', function $$_reduce_497(val, _values, result) { var self = this, match_rest = nil; @@ -24036,7 +24163,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_491', function $$_reduce_491(val, _values, result) { + $def(self, '$_reduce_498', function $$_reduce_498(val, _values, result) { var self = this, match_rest = nil; @@ -24045,7 +24172,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_492', function $$_reduce_492(val, _values, result) { + $def(self, '$_reduce_499', function $$_reduce_499(val, _values, result) { var self = this; @@ -24053,7 +24180,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_493', function $$_reduce_493(val, _values, result) { + $def(self, '$_reduce_500', function $$_reduce_500(val, _values, result) { var self = this; @@ -24061,7 +24188,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_495', function $$_reduce_495(val, _values, result) { + $def(self, '$_reduce_502', function $$_reduce_502(val, _values, result) { var self = this, item = nil; @@ -24070,7 +24197,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_496', function $$_reduce_496(val, _values, result) { + $def(self, '$_reduce_503', function $$_reduce_503(val, _values, result) { var self = this, last_item = nil; @@ -24079,28 +24206,28 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_497', function $$_reduce_497(val, _values, result) { + $def(self, '$_reduce_504', function $$_reduce_504(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_498', function $$_reduce_498(val, _values, result) { + $def(self, '$_reduce_505', function $$_reduce_505(val, _values, result) { result = [val['$[]'](0)].concat($to_a(val['$[]'](2))); return result; }, 3); - $def(self, '$_reduce_499', function $$_reduce_499(val, _values, result) { + $def(self, '$_reduce_506', function $$_reduce_506(val, _values, result) { result = [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](4)]); return result; }, 3); - $def(self, '$_reduce_500', function $$_reduce_500(val, _values, result) { + $def(self, '$_reduce_507', function $$_reduce_507(val, _values, result) { var self = this; @@ -24108,7 +24235,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_501', function $$_reduce_501(val, _values, result) { + $def(self, '$_reduce_508', function $$_reduce_508(val, _values, result) { var self = this; @@ -24116,63 +24243,63 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_502', function $$_reduce_502(val, _values, result) { + $def(self, '$_reduce_509', function $$_reduce_509(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_503', function $$_reduce_503(val, _values, result) { + $def(self, '$_reduce_510', function $$_reduce_510(val, _values, result) { result = [].concat($to_a(val['$[]'](0))).concat([val['$[]'](2)]); return result; }, 3); - $def(self, '$_reduce_505', function $$_reduce_505(val, _values, result) { + $def(self, '$_reduce_512', function $$_reduce_512(val, _values, result) { result = [].concat($to_a(val['$[]'](0))).concat($to_a(val['$[]'](2))); return result; }, 3); - $def(self, '$_reduce_506', function $$_reduce_506(val, _values, result) { + $def(self, '$_reduce_513', function $$_reduce_513(val, _values, result) { result = val['$[]'](0); return result; }, 3); - $def(self, '$_reduce_507', function $$_reduce_507(val, _values, result) { + $def(self, '$_reduce_514', function $$_reduce_514(val, _values, result) { result = val['$[]'](0); return result; }, 3); - $def(self, '$_reduce_508', function $$_reduce_508(val, _values, result) { + $def(self, '$_reduce_515', function $$_reduce_515(val, _values, result) { result = val['$[]'](0); return result; }, 3); - $def(self, '$_reduce_509', function $$_reduce_509(val, _values, result) { + $def(self, '$_reduce_516', function $$_reduce_516(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_510', function $$_reduce_510(val, _values, result) { + $def(self, '$_reduce_517', function $$_reduce_517(val, _values, result) { result = [].concat($to_a(val['$[]'](0))).concat([val['$[]'](2)]); return result; }, 3); - $def(self, '$_reduce_511', function $$_reduce_511(val, _values, result) { + $def(self, '$_reduce_518', function $$_reduce_518(val, _values, result) { var self = this; @@ -24180,7 +24307,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_512', function $$_reduce_512(val, _values, result) { + $def(self, '$_reduce_519', function $$_reduce_519(val, _values, result) { var self = this; @@ -24188,21 +24315,21 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_513', function $$_reduce_513(val, _values, result) { + $def(self, '$_reduce_520', function $$_reduce_520(val, _values, result) { result = ["label", val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_514', function $$_reduce_514(val, _values, result) { + $def(self, '$_reduce_521', function $$_reduce_521(val, _values, result) { result = ["quoted", [val['$[]'](0), val['$[]'](1), val['$[]'](2)]]; return result; }, 3); - $def(self, '$_reduce_515', function $$_reduce_515(val, _values, result) { + $def(self, '$_reduce_522', function $$_reduce_522(val, _values, result) { var self = this; @@ -24210,7 +24337,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_516', function $$_reduce_516(val, _values, result) { + $def(self, '$_reduce_523', function $$_reduce_523(val, _values, result) { var self = this; @@ -24218,7 +24345,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_517', function $$_reduce_517(val, _values, result) { + $def(self, '$_reduce_524', function $$_reduce_524(val, _values, result) { var self = this; @@ -24226,7 +24353,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_521', function $$_reduce_521(val, _values, result) { + $def(self, '$_reduce_528', function $$_reduce_528(val, _values, result) { var self = this; @@ -24234,7 +24361,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_522', function $$_reduce_522(val, _values, result) { + $def(self, '$_reduce_529', function $$_reduce_529(val, _values, result) { var self = this; @@ -24242,7 +24369,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_523', function $$_reduce_523(val, _values, result) { + $def(self, '$_reduce_530', function $$_reduce_530(val, _values, result) { var self = this; @@ -24250,7 +24377,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_524', function $$_reduce_524(val, _values, result) { + $def(self, '$_reduce_531', function $$_reduce_531(val, _values, result) { var self = this; @@ -24258,7 +24385,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_528', function $$_reduce_528(val, _values, result) { + $def(self, '$_reduce_535', function $$_reduce_535(val, _values, result) { var self = this; @@ -24266,7 +24393,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_529', function $$_reduce_529(val, _values, result) { + $def(self, '$_reduce_536', function $$_reduce_536(val, _values, result) { var self = this; @@ -24274,7 +24401,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_538', function $$_reduce_538(val, _values, result) { + $def(self, '$_reduce_545', function $$_reduce_545(val, _values, result) { var self = this; @@ -24282,7 +24409,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_540', function $$_reduce_540(val, _values, result) { + $def(self, '$_reduce_547', function $$_reduce_547(val, _values, result) { var self = this; @@ -24290,7 +24417,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_541', function $$_reduce_541(val, _values, result) { + $def(self, '$_reduce_548', function $$_reduce_548(val, _values, result) { var self = this, name = nil, lvar = nil; @@ -24303,7 +24430,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_542', function $$_reduce_542(val, _values, result) { + $def(self, '$_reduce_549', function $$_reduce_549(val, _values, result) { var self = this, non_lvar = nil; @@ -24312,7 +24439,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_543', function $$_reduce_543(val, _values, result) { + $def(self, '$_reduce_550', function $$_reduce_550(val, _values, result) { var self = this, expr = nil; @@ -24321,7 +24448,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_544', function $$_reduce_544(val, _values, result) { + $def(self, '$_reduce_551', function $$_reduce_551(val, _values, result) { var self = this; @@ -24329,7 +24456,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_545', function $$_reduce_545(val, _values, result) { + $def(self, '$_reduce_552', function $$_reduce_552(val, _values, result) { var self = this; @@ -24337,7 +24464,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_546', function $$_reduce_546(val, _values, result) { + $def(self, '$_reduce_553', function $$_reduce_553(val, _values, result) { var self = this; @@ -24345,7 +24472,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_547', function $$_reduce_547(val, _values, result) { + $def(self, '$_reduce_554', function $$_reduce_554(val, _values, result) { var $a, $b, self = this, assoc_t = nil, exc_var = nil, exc_list = nil; @@ -24357,35 +24484,35 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_548', function $$_reduce_548(val, _values, result) { + $def(self, '$_reduce_555', function $$_reduce_555(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_549', function $$_reduce_549(val, _values, result) { + $def(self, '$_reduce_556', function $$_reduce_556(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_552', function $$_reduce_552(val, _values, result) { + $def(self, '$_reduce_559', function $$_reduce_559(val, _values, result) { result = [val['$[]'](0), val['$[]'](1)]; return result; }, 3); - $def(self, '$_reduce_554', function $$_reduce_554(val, _values, result) { + $def(self, '$_reduce_561', function $$_reduce_561(val, _values, result) { result = [val['$[]'](0), val['$[]'](1)]; return result; }, 3); - $def(self, '$_reduce_558', function $$_reduce_558(val, _values, result) { + $def(self, '$_reduce_565', function $$_reduce_565(val, _values, result) { var self = this; @@ -24393,21 +24520,21 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_559', function $$_reduce_559(val, _values, result) { + $def(self, '$_reduce_566', function $$_reduce_566(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_560', function $$_reduce_560(val, _values, result) { + $def(self, '$_reduce_567', function $$_reduce_567(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_561', function $$_reduce_561(val, _values, result) { + $def(self, '$_reduce_568', function $$_reduce_568(val, _values, result) { var self = this, string = nil; @@ -24416,7 +24543,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_562', function $$_reduce_562(val, _values, result) { + $def(self, '$_reduce_569', function $$_reduce_569(val, _values, result) { var self = this, string = nil; @@ -24425,7 +24552,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_563', function $$_reduce_563(val, _values, result) { + $def(self, '$_reduce_570', function $$_reduce_570(val, _values, result) { var self = this; @@ -24433,7 +24560,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_564', function $$_reduce_564(val, _values, result) { + $def(self, '$_reduce_571', function $$_reduce_571(val, _values, result) { var self = this, string = nil; @@ -24442,7 +24569,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_565', function $$_reduce_565(val, _values, result) { + $def(self, '$_reduce_572', function $$_reduce_572(val, _values, result) { var self = this, opts = nil; @@ -24451,7 +24578,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_566', function $$_reduce_566(val, _values, result) { + $def(self, '$_reduce_573', function $$_reduce_573(val, _values, result) { var self = this; @@ -24459,14 +24586,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_567', function $$_reduce_567(val, _values, result) { + $def(self, '$_reduce_574', function $$_reduce_574(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_568', function $$_reduce_568(val, _values, result) { + $def(self, '$_reduce_575', function $$_reduce_575(val, _values, result) { var self = this; @@ -24474,21 +24601,21 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_569', function $$_reduce_569(val, _values, result) { + $def(self, '$_reduce_576', function $$_reduce_576(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_570', function $$_reduce_570(val, _values, result) { + $def(self, '$_reduce_577', function $$_reduce_577(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_571', function $$_reduce_571(val, _values, result) { + $def(self, '$_reduce_578', function $$_reduce_578(val, _values, result) { var self = this; @@ -24496,14 +24623,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_572', function $$_reduce_572(val, _values, result) { + $def(self, '$_reduce_579', function $$_reduce_579(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_573', function $$_reduce_573(val, _values, result) { + $def(self, '$_reduce_580', function $$_reduce_580(val, _values, result) { var self = this; @@ -24511,7 +24638,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_574', function $$_reduce_574(val, _values, result) { + $def(self, '$_reduce_581', function $$_reduce_581(val, _values, result) { var self = this; @@ -24519,7 +24646,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_575', function $$_reduce_575(val, _values, result) { + $def(self, '$_reduce_582', function $$_reduce_582(val, _values, result) { var self = this; @@ -24527,14 +24654,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_576', function $$_reduce_576(val, _values, result) { + $def(self, '$_reduce_583', function $$_reduce_583(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_577', function $$_reduce_577(val, _values, result) { + $def(self, '$_reduce_584', function $$_reduce_584(val, _values, result) { var self = this; @@ -24542,14 +24669,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_578', function $$_reduce_578(val, _values, result) { + $def(self, '$_reduce_585', function $$_reduce_585(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_579', function $$_reduce_579(val, _values, result) { + $def(self, '$_reduce_586', function $$_reduce_586(val, _values, result) { var self = this; @@ -24557,49 +24684,49 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_580', function $$_reduce_580(val, _values, result) { + $def(self, '$_reduce_587', function $$_reduce_587(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_581', function $$_reduce_581(val, _values, result) { + $def(self, '$_reduce_588', function $$_reduce_588(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_582', function $$_reduce_582(val, _values, result) { + $def(self, '$_reduce_589', function $$_reduce_589(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_583', function $$_reduce_583(val, _values, result) { + $def(self, '$_reduce_590', function $$_reduce_590(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_584', function $$_reduce_584(val, _values, result) { + $def(self, '$_reduce_591', function $$_reduce_591(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_585', function $$_reduce_585(val, _values, result) { + $def(self, '$_reduce_592', function $$_reduce_592(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_586', function $$_reduce_586(val, _values, result) { + $def(self, '$_reduce_593', function $$_reduce_593(val, _values, result) { var self = this; @@ -24607,14 +24734,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_587', function $$_reduce_587(val, _values, result) { + $def(self, '$_reduce_594', function $$_reduce_594(val, _values, result) { result = val['$[]'](1); return result; }, 3); - $def(self, '$_reduce_588', function $$_reduce_588(val, _values, result) { + $def(self, '$_reduce_595', function $$_reduce_595(val, _values, result) { var self = this; @@ -24623,7 +24750,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_589', function $$_reduce_589(val, _values, result) { + $def(self, '$_reduce_596', function $$_reduce_596(val, _values, result) { var self = this; @@ -24633,7 +24760,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_590', function $$_reduce_590(val, _values, result) { + $def(self, '$_reduce_597', function $$_reduce_597(val, _values, result) { var self = this; @@ -24641,7 +24768,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_591', function $$_reduce_591(val, _values, result) { + $def(self, '$_reduce_598', function $$_reduce_598(val, _values, result) { var self = this; @@ -24649,7 +24776,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_592', function $$_reduce_592(val, _values, result) { + $def(self, '$_reduce_599', function $$_reduce_599(val, _values, result) { var self = this; @@ -24657,7 +24784,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_596', function $$_reduce_596(val, _values, result) { + $def(self, '$_reduce_603', function $$_reduce_603(val, _values, result) { var self = this, $writer = nil; @@ -24669,7 +24796,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_597', function $$_reduce_597(val, _values, result) { + $def(self, '$_reduce_604', function $$_reduce_604(val, _values, result) { var self = this, $writer = nil; @@ -24681,14 +24808,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_598', function $$_reduce_598(val, _values, result) { + $def(self, '$_reduce_605', function $$_reduce_605(val, _values, result) { result = val['$[]'](0); return result; }, 3); - $def(self, '$_reduce_599', function $$_reduce_599(val, _values, result) { + $def(self, '$_reduce_606', function $$_reduce_606(val, _values, result) { var self = this; @@ -24700,7 +24827,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_600', function $$_reduce_600(val, _values, result) { + $def(self, '$_reduce_607', function $$_reduce_607(val, _values, result) { var self = this, $writer = nil; @@ -24712,7 +24839,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_601', function $$_reduce_601(val, _values, result) { + $def(self, '$_reduce_608', function $$_reduce_608(val, _values, result) { var self = this, $writer = nil; @@ -24724,7 +24851,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_602', function $$_reduce_602(val, _values, result) { + $def(self, '$_reduce_609', function $$_reduce_609(val, _values, result) { var self = this, $writer = nil; @@ -24736,7 +24863,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_603', function $$_reduce_603(val, _values, result) { + $def(self, '$_reduce_610', function $$_reduce_610(val, _values, result) { var self = this, $writer = nil; @@ -24748,7 +24875,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_604', function $$_reduce_604(val, _values, result) { + $def(self, '$_reduce_611', function $$_reduce_611(val, _values, result) { var self = this; @@ -24756,7 +24883,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_605', function $$_reduce_605(val, _values, result) { + $def(self, '$_reduce_612', function $$_reduce_612(val, _values, result) { var self = this; @@ -24764,7 +24891,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_606', function $$_reduce_606(val, _values, result) { + $def(self, '$_reduce_613', function $$_reduce_613(val, _values, result) { var self = this; @@ -24772,7 +24899,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_607', function $$_reduce_607(val, _values, result) { + $def(self, '$_reduce_614', function $$_reduce_614(val, _values, result) { var self = this; @@ -24780,7 +24907,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_608', function $$_reduce_608(val, _values, result) { + $def(self, '$_reduce_615', function $$_reduce_615(val, _values, result) { var self = this; @@ -24788,7 +24915,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_609', function $$_reduce_609(val, _values, result) { + $def(self, '$_reduce_616', function $$_reduce_616(val, _values, result) { var self = this; @@ -24796,7 +24923,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_610', function $$_reduce_610(val, _values, result) { + $def(self, '$_reduce_617', function $$_reduce_617(val, _values, result) { var self = this; @@ -24804,7 +24931,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_611', function $$_reduce_611(val, _values, result) { + $def(self, '$_reduce_618', function $$_reduce_618(val, _values, result) { var self = this; @@ -24812,7 +24939,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_612', function $$_reduce_612(val, _values, result) { + $def(self, '$_reduce_619', function $$_reduce_619(val, _values, result) { var self = this; @@ -24820,7 +24947,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_613', function $$_reduce_613(val, _values, result) { + $def(self, '$_reduce_620', function $$_reduce_620(val, _values, result) { var self = this; @@ -24828,7 +24955,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_614', function $$_reduce_614(val, _values, result) { + $def(self, '$_reduce_621', function $$_reduce_621(val, _values, result) { var self = this; @@ -24836,7 +24963,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_615', function $$_reduce_615(val, _values, result) { + $def(self, '$_reduce_622', function $$_reduce_622(val, _values, result) { var self = this; @@ -24844,7 +24971,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_616', function $$_reduce_616(val, _values, result) { + $def(self, '$_reduce_623', function $$_reduce_623(val, _values, result) { var self = this; @@ -24852,7 +24979,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_617', function $$_reduce_617(val, _values, result) { + $def(self, '$_reduce_624', function $$_reduce_624(val, _values, result) { var self = this; @@ -24860,7 +24987,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_618', function $$_reduce_618(val, _values, result) { + $def(self, '$_reduce_625', function $$_reduce_625(val, _values, result) { var self = this; @@ -24868,7 +24995,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_619', function $$_reduce_619(val, _values, result) { + $def(self, '$_reduce_626', function $$_reduce_626(val, _values, result) { var self = this; @@ -24876,7 +25003,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_620', function $$_reduce_620(val, _values, result) { + $def(self, '$_reduce_627', function $$_reduce_627(val, _values, result) { var self = this; @@ -24884,7 +25011,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_621', function $$_reduce_621(val, _values, result) { + $def(self, '$_reduce_628', function $$_reduce_628(val, _values, result) { var self = this; @@ -24892,7 +25019,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_622', function $$_reduce_622(val, _values, result) { + $def(self, '$_reduce_629', function $$_reduce_629(val, _values, result) { var self = this; @@ -24900,7 +25027,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_623', function $$_reduce_623(val, _values, result) { + $def(self, '$_reduce_630', function $$_reduce_630(val, _values, result) { var self = this; @@ -24908,7 +25035,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_624', function $$_reduce_624(val, _values, result) { + $def(self, '$_reduce_631', function $$_reduce_631(val, _values, result) { var self = this; @@ -24916,7 +25043,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_625', function $$_reduce_625(val, _values, result) { + $def(self, '$_reduce_632', function $$_reduce_632(val, _values, result) { var self = this, $writer = nil; @@ -24927,29 +25054,33 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_626', function $$_reduce_626(val, _values, result) { + $def(self, '$_reduce_633', function $$_reduce_633(val, _values, result) { result = [val['$[]'](0), val['$[]'](2)]; return result; }, 3); - $def(self, '$_reduce_627', function $$_reduce_627(val, _values, result) { + $def(self, '$_reduce_634', function $$_reduce_634(val, _values, result) { result = nil; return result; }, 3); - $def(self, '$_reduce_629', function $$_reduce_629(val, _values, result) { - var self = this; + $def(self, '$_reduce_636', function $$_reduce_636(val, _values, result) { + var self = this, $writer = nil; + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$args(nil, [], nil); return result; }, 3); - $def(self, '$_reduce_630', function $$_reduce_630(val, _values, result) { + $def(self, '$_reduce_637', function $$_reduce_637(val, _values, result) { var self = this, $writer = nil; @@ -24958,64 +25089,74 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ $writer = ["expr_value"]; $send(self.lexer, 'state=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_632', function $$_reduce_632(val, _values, result) { + $def(self, '$_reduce_639', function $$_reduce_639(val, _values, result) { var self = this, $writer = nil; - result = self.lexer.$in_kwarg(); + result = self.context.$dup(); $writer = [true]; - $send(self.lexer, 'in_kwarg=', $to_a($writer)); + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; - self.context.$push("def_open_args"); return result; }, 3); - $def(self, '$_reduce_633', function $$_reduce_633(val, _values, result) { + $def(self, '$_reduce_640', function $$_reduce_640(val, _values, result) { var self = this, $writer = nil; - self.context.$pop(); - $writer = [val['$[]'](0)]; - $send(self.lexer, 'in_kwarg=', $to_a($writer)); + $writer = [val['$[]'](0).$in_kwarg()]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$args(nil, val['$[]'](1), nil); return result; }, 3); - $def(self, '$_reduce_634', function $$_reduce_634(val, _values, result) { + $def(self, '$_reduce_641', function $$_reduce_641(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_635', function $$_reduce_635(val, _values, result) { + $def(self, '$_reduce_642', function $$_reduce_642(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_636', function $$_reduce_636(val, _values, result) { + $def(self, '$_reduce_643', function $$_reduce_643(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_637', function $$_reduce_637(val, _values, result) { + $def(self, '$_reduce_644', function $$_reduce_644(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_638', function $$_reduce_638(val, _values, result) { + $def(self, '$_reduce_645', function $$_reduce_645(val, _values, result) { var self = this; @@ -25024,133 +25165,133 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_639', function $$_reduce_639(val, _values, result) { + $def(self, '$_reduce_646', function $$_reduce_646(val, _values, result) { result = val['$[]'](1); return result; }, 3); - $def(self, '$_reduce_640', function $$_reduce_640(val, _values, result) { + $def(self, '$_reduce_647', function $$_reduce_647(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_641', function $$_reduce_641(val, _values, result) { + $def(self, '$_reduce_648', function $$_reduce_648(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; }, 3); - $def(self, '$_reduce_642', function $$_reduce_642(val, _values, result) { + $def(self, '$_reduce_649', function $$_reduce_649(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](6)).$concat(val['$[]'](7)); return result; }, 3); - $def(self, '$_reduce_643', function $$_reduce_643(val, _values, result) { + $def(self, '$_reduce_650', function $$_reduce_650(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_644', function $$_reduce_644(val, _values, result) { + $def(self, '$_reduce_651', function $$_reduce_651(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; }, 3); - $def(self, '$_reduce_645', function $$_reduce_645(val, _values, result) { + $def(self, '$_reduce_652', function $$_reduce_652(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_646', function $$_reduce_646(val, _values, result) { + $def(self, '$_reduce_653', function $$_reduce_653(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; }, 3); - $def(self, '$_reduce_647', function $$_reduce_647(val, _values, result) { + $def(self, '$_reduce_654', function $$_reduce_654(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_648', function $$_reduce_648(val, _values, result) { + $def(self, '$_reduce_655', function $$_reduce_655(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_649', function $$_reduce_649(val, _values, result) { + $def(self, '$_reduce_656', function $$_reduce_656(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; }, 3); - $def(self, '$_reduce_650', function $$_reduce_650(val, _values, result) { + $def(self, '$_reduce_657', function $$_reduce_657(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_651', function $$_reduce_651(val, _values, result) { + $def(self, '$_reduce_658', function $$_reduce_658(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_652', function $$_reduce_652(val, _values, result) { + $def(self, '$_reduce_659', function $$_reduce_659(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_653', function $$_reduce_653(val, _values, result) { + $def(self, '$_reduce_660', function $$_reduce_660(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_654', function $$_reduce_654(val, _values, result) { + $def(self, '$_reduce_661', function $$_reduce_661(val, _values, result) { result = val['$[]'](0); return result; }, 3); - $def(self, '$_reduce_655', function $$_reduce_655(val, _values, result) { + $def(self, '$_reduce_662', function $$_reduce_662(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_656', function $$_reduce_656(val, _values, result) { + $def(self, '$_reduce_663', function $$_reduce_663(val, _values, result) { result = val['$[]'](0); return result; }, 3); - $def(self, '$_reduce_657', function $$_reduce_657(val, _values, result) { + $def(self, '$_reduce_664', function $$_reduce_664(val, _values, result) { var self = this; @@ -25158,7 +25299,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_658', function $$_reduce_658(val, _values, result) { + $def(self, '$_reduce_665', function $$_reduce_665(val, _values, result) { var self = this; @@ -25166,7 +25307,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_659', function $$_reduce_659(val, _values, result) { + $def(self, '$_reduce_666', function $$_reduce_666(val, _values, result) { var self = this; @@ -25174,7 +25315,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_660', function $$_reduce_660(val, _values, result) { + $def(self, '$_reduce_667', function $$_reduce_667(val, _values, result) { var self = this; @@ -25182,7 +25323,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_662', function $$_reduce_662(val, _values, result) { + $def(self, '$_reduce_669', function $$_reduce_669(val, _values, result) { var self = this; @@ -25192,7 +25333,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_663', function $$_reduce_663(val, _values, result) { + $def(self, '$_reduce_670', function $$_reduce_670(val, _values, result) { var self = this; @@ -25201,7 +25342,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_664', function $$_reduce_664(val, _values, result) { + $def(self, '$_reduce_671', function $$_reduce_671(val, _values, result) { var self = this; @@ -25210,7 +25351,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_665', function $$_reduce_665(val, _values, result) { + $def(self, '$_reduce_672', function $$_reduce_672(val, _values, result) { var self = this; @@ -25218,95 +25359,115 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_666', function $$_reduce_666(val, _values, result) { + $def(self, '$_reduce_673', function $$_reduce_673(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_667', function $$_reduce_667(val, _values, result) { + $def(self, '$_reduce_674', function $$_reduce_674(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_668', function $$_reduce_668(val, _values, result) { - var self = this; + $def(self, '$_reduce_675', function $$_reduce_675(val, _values, result) { + var self = this, $writer = nil; self.$check_kwarg_name(val['$[]'](0)); self.static_env.$declare(val['$[]'](0)['$[]'](0)); self.max_numparam_stack['$has_ordinary_params!'](); self.current_arg_stack.$set(val['$[]'](0)['$[]'](0)); + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = val['$[]'](0); return result; }, 3); - $def(self, '$_reduce_669', function $$_reduce_669(val, _values, result) { - var self = this; + $def(self, '$_reduce_676', function $$_reduce_676(val, _values, result) { + var self = this, $writer = nil; self.current_arg_stack.$set(nil); + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$kwoptarg(val['$[]'](0), val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_670', function $$_reduce_670(val, _values, result) { - var self = this; + $def(self, '$_reduce_677', function $$_reduce_677(val, _values, result) { + var self = this, $writer = nil; self.current_arg_stack.$set(nil); + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$kwarg(val['$[]'](0)); return result; }, 3); - $def(self, '$_reduce_671', function $$_reduce_671(val, _values, result) { - var self = this; + $def(self, '$_reduce_678', function $$_reduce_678(val, _values, result) { + var self = this, $writer = nil; + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$kwoptarg(val['$[]'](0), val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_672', function $$_reduce_672(val, _values, result) { - var self = this; + $def(self, '$_reduce_679', function $$_reduce_679(val, _values, result) { + var self = this, $writer = nil; + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$kwarg(val['$[]'](0)); return result; }, 3); - $def(self, '$_reduce_673', function $$_reduce_673(val, _values, result) { + $def(self, '$_reduce_680', function $$_reduce_680(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_674', function $$_reduce_674(val, _values, result) { + $def(self, '$_reduce_681', function $$_reduce_681(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_675', function $$_reduce_675(val, _values, result) { + $def(self, '$_reduce_682', function $$_reduce_682(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_676', function $$_reduce_676(val, _values, result) { + $def(self, '$_reduce_683', function $$_reduce_683(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_679', function $$_reduce_679(val, _values, result) { + $def(self, '$_reduce_686', function $$_reduce_686(val, _values, result) { var self = this; @@ -25314,7 +25475,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_680', function $$_reduce_680(val, _values, result) { + $def(self, '$_reduce_687', function $$_reduce_687(val, _values, result) { var self = this; @@ -25323,7 +25484,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_681', function $$_reduce_681(val, _values, result) { + $def(self, '$_reduce_688', function $$_reduce_688(val, _values, result) { var self = this; @@ -25331,53 +25492,61 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_682', function $$_reduce_682(val, _values, result) { - var self = this; + $def(self, '$_reduce_689', function $$_reduce_689(val, _values, result) { + var self = this, $writer = nil; self.current_arg_stack.$set(0); + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$optarg(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_683', function $$_reduce_683(val, _values, result) { - var self = this; + $def(self, '$_reduce_690', function $$_reduce_690(val, _values, result) { + var self = this, $writer = nil; self.current_arg_stack.$set(0); + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$optarg(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_684', function $$_reduce_684(val, _values, result) { + $def(self, '$_reduce_691', function $$_reduce_691(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_685', function $$_reduce_685(val, _values, result) { + $def(self, '$_reduce_692', function $$_reduce_692(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_686', function $$_reduce_686(val, _values, result) { + $def(self, '$_reduce_693', function $$_reduce_693(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_687', function $$_reduce_687(val, _values, result) { + $def(self, '$_reduce_694', function $$_reduce_694(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_690', function $$_reduce_690(val, _values, result) { + $def(self, '$_reduce_697', function $$_reduce_697(val, _values, result) { var self = this; @@ -25386,7 +25555,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_691', function $$_reduce_691(val, _values, result) { + $def(self, '$_reduce_698', function $$_reduce_698(val, _values, result) { var self = this; @@ -25394,7 +25563,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_694', function $$_reduce_694(val, _values, result) { + $def(self, '$_reduce_701', function $$_reduce_701(val, _values, result) { var self = this; @@ -25403,7 +25572,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_695', function $$_reduce_695(val, _values, result) { + $def(self, '$_reduce_702', function $$_reduce_702(val, _values, result) { var self = this; @@ -25412,49 +25581,49 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_696', function $$_reduce_696(val, _values, result) { + $def(self, '$_reduce_703', function $$_reduce_703(val, _values, result) { result = [val['$[]'](1)]; return result; }, 3); - $def(self, '$_reduce_697', function $$_reduce_697(val, _values, result) { + $def(self, '$_reduce_704', function $$_reduce_704(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_699', function $$_reduce_699(val, _values, result) { + $def(self, '$_reduce_706', function $$_reduce_706(val, _values, result) { result = val['$[]'](1); return result; }, 3); - $def(self, '$_reduce_700', function $$_reduce_700(val, _values, result) { + $def(self, '$_reduce_707', function $$_reduce_707(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_702', function $$_reduce_702(val, _values, result) { + $def(self, '$_reduce_709', function $$_reduce_709(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_703', function $$_reduce_703(val, _values, result) { + $def(self, '$_reduce_710', function $$_reduce_710(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_704', function $$_reduce_704(val, _values, result) { + $def(self, '$_reduce_711', function $$_reduce_711(val, _values, result) { var self = this; @@ -25462,7 +25631,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_705', function $$_reduce_705(val, _values, result) { + $def(self, '$_reduce_712', function $$_reduce_712(val, _values, result) { var self = this; @@ -25470,7 +25639,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_706', function $$_reduce_706(val, _values, result) { + $def(self, '$_reduce_713', function $$_reduce_713(val, _values, result) { var self = this; @@ -25478,7 +25647,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_707', function $$_reduce_707(val, _values, result) { + $def(self, '$_reduce_714', function $$_reduce_714(val, _values, result) { var self = this; @@ -25486,7 +25655,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_708', function $$_reduce_708(val, _values, result) { + $def(self, '$_reduce_715', function $$_reduce_715(val, _values, result) { var self = this; @@ -25494,42 +25663,42 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_721', function $$_reduce_721(val, _values, result) { + $def(self, '$_reduce_728', function $$_reduce_728(val, _values, result) { result = ["dot", val['$[]'](0)['$[]'](1)]; return result; }, 3); - $def(self, '$_reduce_722', function $$_reduce_722(val, _values, result) { + $def(self, '$_reduce_729', function $$_reduce_729(val, _values, result) { result = ["anddot", val['$[]'](0)['$[]'](1)]; return result; }, 3); - $def(self, '$_reduce_727', function $$_reduce_727(val, _values, result) { + $def(self, '$_reduce_734', function $$_reduce_734(val, _values, result) { result = val['$[]'](1); return result; }, 3); - $def(self, '$_reduce_728', function $$_reduce_728(val, _values, result) { + $def(self, '$_reduce_735', function $$_reduce_735(val, _values, result) { result = val['$[]'](1); return result; }, 3); - $def(self, '$_reduce_729', function $$_reduce_729(val, _values, result) { + $def(self, '$_reduce_736', function $$_reduce_736(val, _values, result) { result = val['$[]'](1); return result; }, 3); - $def(self, '$_reduce_733', function $$_reduce_733(val, _values, result) { + $def(self, '$_reduce_740', function $$_reduce_740(val, _values, result) { var self = this; @@ -25537,7 +25706,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_737', function $$_reduce_737(val, _values, result) { + $def(self, '$_reduce_744', function $$_reduce_744(val, _values, result) { result = nil; @@ -25551,7 +25720,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/ast/builder"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/ast/builder"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $Opal = Opal.Opal, $hash2 = Opal.hash2, $def = Opal.def; Opal.add_stubs('require,emit_lambda=,-,new'); @@ -25587,7 +25756,7 @@ Opal.modules["opal/ast/builder"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/base"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $const_set = Opal.const_set, $truthy = Opal.truthy, $Opal = Opal.Opal, $hash2 = Opal.hash2, $defs = Opal.defs, $alias = Opal.alias, $rb_plus = Opal.rb_plus, $eqeqeq = Opal.eqeqeq, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $send2 = Opal.send2, $find_super = Opal.find_super; Opal.add_stubs('require,new,current_node,loc,+,stmts_of,begin_with_stmts,nil?,include?,type,children,===,length,[],s,attr_accessor,current_node=,-,location=,raise'); @@ -25767,7 +25936,7 @@ Opal.modules["opal/rewriters/base"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/opal_engine_check"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/opal_engine_check"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_a = Opal.to_a, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $const_set = Opal.const_set; Opal.add_stubs('require,children,skip_check_present?,process,s,skip_check_present_not?,=='); @@ -25833,7 +26002,7 @@ Opal.modules["opal/rewriters/opal_engine_check"] = function(Opal) {/* Generated })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/for_rewriter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/for_rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $defs = Opal.defs, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $to_a = Opal.to_a, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super; Opal.add_stubs('require,+,find,map,s,next_tmp,class,===,type,updated,<<,prepend_to_body,process,attr_reader,new,to_a,result'); @@ -25926,7 +26095,7 @@ Opal.modules["opal/rewriters/for_rewriter"] = function(Opal) {/* Generated by Op })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/explicit_writer_return"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/explicit_writer_return"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $const_set = Opal.const_set, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $slice = Opal.slice, $eqeq = Opal.eqeq, $regexp = Opal.regexp, $send = Opal.send; Opal.add_stubs('require,s,==,to_s,=~,process_all,updated'); @@ -25991,7 +26160,7 @@ Opal.modules["opal/rewriters/explicit_writer_return"] = function(Opal) {/* Gener })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/js_reserved_words"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/js_reserved_words"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $regexp = Opal.regexp, $truthy = Opal.truthy, $defs = Opal.defs, $def = Opal.def, $range = Opal.range, $to_a = Opal.to_a, $send2 = Opal.send2, $find_super = Opal.find_super, $hash2 = Opal.hash2, $alias = Opal.alias; Opal.add_stubs('require,freeze,=~,!,valid_name?,class,to_sym,valid_ivar_name?,[],to_s,updated,fix_var_name,fix_ivar_name'); @@ -26123,7 +26292,7 @@ Opal.modules["opal/rewriters/js_reserved_words"] = function(Opal) {/* Generated })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/block_to_iter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/block_to_iter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_a = Opal.to_a, $rb_plus = Opal.rb_plus, $def = Opal.def; Opal.add_stubs('require,s,process,updated,+,children'); @@ -26156,7 +26325,7 @@ Opal.modules["opal/rewriters/block_to_iter"] = function(Opal) {/* Generated by O })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/dot_js_syntax"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/dot_js_syntax"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_a = Opal.to_a, $slice = Opal.slice, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $neqeq = Opal.neqeq, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $send = Opal.send; Opal.add_stubs('require,==,type,===,!=,size,error,first,to_js_attr_call,to_js_attr_assign_call,to_native_js_call,s'); @@ -26236,7 +26405,7 @@ Opal.modules["opal/rewriters/dot_js_syntax"] = function(Opal) {/* Generated by O })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/pattern_matching"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/pattern_matching"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $to_a = Opal.to_a, $rb_plus = Opal.rb_plus, $slice = Opal.slice, $truthy = Opal.truthy, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $not = Opal.not, $neqeq = Opal.neqeq, $eqeq = Opal.eqeq, $alias = Opal.alias, $Opal = Opal.Opal; Opal.add_stubs('require,s,convert_full_pattern,raise_no_matching_pattern_error,+,process,single_case_match,private,shift,===,type,!,empty?,!=,==,class,new,run!,variables,pattern,map,<<,array,on_literal,first,children,to_proc,method,each,to_ast,on_array_pattern,compact,[]'); @@ -26559,7 +26728,7 @@ Opal.modules["opal/rewriters/pattern_matching"] = function(Opal) {/* Generated b })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/logical_operator_assignment"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/logical_operator_assignment"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $class_variable_set = Opal.class_variable_set, $defs = Opal.defs, $truthy = Opal.truthy, $class_variable_get = Opal.class_variable_get, $rb_plus = Opal.rb_plus, $const_set = Opal.const_set, $lambda = Opal.lambda, $eqeq = Opal.eqeq, $to_a = Opal.to_a, $slice = Opal.slice, $hash2 = Opal.hash2, $send = Opal.send, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super; Opal.add_stubs('require,+,updated,s,==,include?,[],type,new_temp,freeze,call,fetch,error,process'); @@ -26708,7 +26877,7 @@ Opal.modules["opal/rewriters/logical_operator_assignment"] = function(Opal) {/* })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/binary_operator_assignment"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/binary_operator_assignment"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $class_variable_set = Opal.class_variable_set, $defs = Opal.defs, $truthy = Opal.truthy, $class_variable_get = Opal.class_variable_get, $rb_plus = Opal.rb_plus, $const_set = Opal.const_set, $lambda = Opal.lambda, $to_a = Opal.to_a, $slice = Opal.slice, $eqeq = Opal.eqeq, $hash2 = Opal.hash2, $send = Opal.send, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super; Opal.add_stubs('require,+,updated,[],==,type,new_temp,s,freeze,call,fetch,error,process'); @@ -26841,7 +27010,7 @@ Opal.modules["opal/rewriters/binary_operator_assignment"] = function(Opal) {/* G })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/hashes/key_duplicates_rewriter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/hashes/key_duplicates_rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $Opal = Opal.Opal; Opal.add_stubs('require,new,include?,type,<<,==,process_regular_node,updated,inspect,warn'); @@ -26944,7 +27113,7 @@ Opal.modules["opal/rewriters/hashes/key_duplicates_rewriter"] = function(Opal) { })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/dump_args"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/dump_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $hash2 = Opal.hash2, $def = Opal.def; Opal.add_stubs('require,updated'); @@ -26999,7 +27168,7 @@ Opal.modules["opal/rewriters/dump_args"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/mlhs_args"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/mlhs_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $truthy = Opal.truthy, $def = Opal.def, $rb_plus = Opal.rb_plus, $send = Opal.send, $eqeq = Opal.eqeq, $hash2 = Opal.hash2; Opal.add_stubs('require,new,updated,rewritten,initialization,s,prepend_to_body,attr_reader,split!,+,each,children,==,type,new_mlhs_tmp,process,<<,length,[],empty?'); @@ -27164,7 +27333,7 @@ Opal.modules["opal/rewriters/mlhs_args"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/arguments"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/arguments"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $def = Opal.def; Opal.add_stubs('attr_reader,each,===,type,<<,any?,raise,!,nil?,has_any_kwargs?,can_inline_kwargs?,empty?'); @@ -27274,7 +27443,7 @@ Opal.modules["opal/rewriters/arguments"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting) }; -Opal.modules["opal/rewriters/inline_args"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/inline_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $truthy = Opal.truthy, $hash2 = Opal.hash2, $def = Opal.def, $const_set = Opal.const_set, $send = Opal.send, $eqeq = Opal.eqeq, $Opal = Opal.Opal; Opal.add_stubs('require,s,new,updated,inline,prepend_to_body,initialization,attr_reader,freeze,children,each,send,any?,blockarg,<<,shadowargs,args,==,[],has_post_args?,length,has_any_kwargs?,can_inline_kwargs?,kwargs,kwoptargs,kwrestarg,postargs,optargs,args_to_keep,restarg'); @@ -27552,7 +27721,7 @@ Opal.modules["opal/rewriters/inline_args"] = function(Opal) {/* Generated by Opa })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/numblocks"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/numblocks"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_ary = Opal.to_ary, $send = Opal.send, $to_a = Opal.to_a, $def = Opal.def; Opal.add_stubs('require,children,s,gen_args,map'); @@ -27596,7 +27765,7 @@ Opal.modules["opal/rewriters/numblocks"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/returnable_logic"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/returnable_logic"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $def = Opal.def, $rb_minus = Opal.rb_minus, $to_a = Opal.to_a, $send = Opal.send, $send2 = Opal.send2, $find_super = Opal.find_super, $slice = Opal.slice, $eqeq = Opal.eqeq; Opal.add_stubs('require,+,-,children,[]=,meta,s,next_tmp,build_if_from_when,free_tmp,[],process,updated,==,count,first,delete,private,build_rule_from_parts,empty?,type'); @@ -27757,7 +27926,7 @@ Opal.modules["opal/rewriters/returnable_logic"] = function(Opal) {/* Generated b })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/forward_args"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/forward_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $range = Opal.range, $to_a = Opal.to_a, $send2 = Opal.send2, $find_super = Opal.find_super, $neqeq = Opal.neqeq; Opal.add_stubs('require,process,s,==,type,last,children,[],updated,!=,class'); @@ -27815,7 +27984,7 @@ Opal.modules["opal/rewriters/forward_args"] = function(Opal) {/* Generated by Op })($nesting[0], $nesting); }; -Opal.modules["opal/rewriter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $send = Opal.send; Opal.add_stubs('require,<<,list,delete,use,disabled?,class,each,new,process'); @@ -27937,7 +28106,7 @@ Opal.modules["opal/rewriter"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/parser/source_buffer"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/parser/source_buffer"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $defs = Opal.defs; return (function($base, $parent_nesting) { @@ -27970,7 +28139,7 @@ Opal.modules["opal/parser/source_buffer"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting) }; -Opal.modules["opal/parser/default_config"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/parser/default_config"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $send2 = Opal.send2, $find_super = Opal.find_super, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $lambda = Opal.lambda, $defs = Opal.defs; Opal.add_stubs('attr_accessor,all_errors_are_fatal=,diagnostics,-,ignore_warnings=,diagnostics_consumer,consumer=,extend,diagnostics_consumer=,new,rewrite,process,default_parser,default_parser_class'); @@ -28073,7 +28242,7 @@ Opal.modules["opal/parser/default_config"] = function(Opal) {/* Generated by Opa })($nesting[0], $nesting) }; -Opal.modules["opal/parser/with_ruby_lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/parser/with_ruby_lexer"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus; Opal.add_stubs('include,default_parser_class=,-'); @@ -28091,7 +28260,7 @@ Opal.modules["opal/parser/with_ruby_lexer"] = function(Opal) {/* Generated by Op })($$$($$('Opal'), 'Parser'), $$$($$('Parser'), 'Ruby31'), $nesting) }; -Opal.modules["opal/parser/patch"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/parser/patch"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $rb_plus = Opal.rb_plus, $send = Opal.send, $hash2 = Opal.hash2, $eqeqeq = Opal.eqeqeq, $eqeq = Opal.eqeq, $not = Opal.not, $rb_le = Opal.rb_le, $rb_minus = Opal.rb_minus, $rb_gt = Opal.rb_gt, $rb_times = Opal.rb_times, $rb_divide = Opal.rb_divide, $to_a = Opal.to_a, $module = Opal.module; Opal.add_stubs('source,unpack,+,to_a,lines,end_with?,<<,map,chomp,=~,diagnostic,nil?,new,===,type,updated,dedent,first,children,==,empty?,interrupt,compact,encoding,split,force_encoding,length,map!,each_with_index,!,each_char,<=,-,>,*,/,[],[]=,join,respond_to?,send,value'); @@ -28310,7 +28479,7 @@ Opal.modules["opal/parser/patch"] = function(Opal) {/* Generated by Opal 1.4.0 * })($$$($$('Parser'), 'Builders'), null); }; -Opal.modules["opal/parser"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, nil = Opal.nil; Opal.add_stubs('require'); @@ -28323,7 +28492,7 @@ Opal.modules["opal/parser"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$require("opal/parser/patch"); }; -Opal.modules["opal/fragment"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/fragment"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $rb_plus = Opal.rb_plus, $rb_gt = Opal.rb_gt, $to_a = Opal.to_a, $not = Opal.not, $send = Opal.send; Opal.add_stubs('attr_reader,to_s,inspect,===,type,[],meta,source_map_name_for,sexp,==,class,+,parent,>,!,first,children,loc,respond_to?,dot,selector,operator,begin,line,location,column'); @@ -28489,7 +28658,7 @@ Opal.modules["opal/fragment"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["opal/nodes/helpers"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/helpers"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $truthy = Opal.truthy, $def = Opal.def, $rb_plus = Opal.rb_plus, $send = Opal.send, $hash2 = Opal.hash2, $to_a = Opal.to_a, $eqeqeq = Opal.eqeqeq, $slice = Opal.slice, $eqeq = Opal.eqeq, $rb_minus = Opal.rb_minus; Opal.add_stubs('require,valid_name?,inspect,=~,to_s,+,indent,compiler,to_proc,parser_indent,push,fragment,current_indent,js_truthy_optimize,helper,expr,===,type,[],handlers,include?,truthy_optimize?,==,count,<<,method_calls,first,children,s,[]=,meta,-,new_temp,scope,wrap'); @@ -28667,7 +28836,7 @@ Opal.modules["opal/nodes/helpers"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/base"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $defs = Opal.defs, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $Opal = Opal.Opal, $rb_plus = Opal.rb_plus; Opal.add_stubs('require,include,each,[]=,handlers,-,each_with_index,define_method,[],children,attr_reader,type,top_scope,top_scope=,compile,raise,is_a?,fragment,<<,reverse_each,unshift,push,new,scope,error,loc,==,process,expr,add_scope_local,to_sym,add_scope_ivar,add_scope_gvar,add_scope_temp,helper,with_temp,to_proc,in_while?,instance_variable_get,has_rescue_else?,in_ensure,in_ensure?,in_resbody,in_resbody?,in_rescue,!,class_scope?,sclass?,+,parent,nesting,class_variable_owner_nesting_level,comments,compiler,name,source_buffer,expression,start_with?,end_with?,line'); @@ -29076,7 +29245,7 @@ Opal.modules["opal/nodes/base"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/literal"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/literal"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $eqeq = Opal.eqeq, $def = Opal.def, $defs = Opal.defs, $truthy = Opal.truthy, $const_set = Opal.const_set, $hash2 = Opal.hash2, $regexp = Opal.regexp, $send = Opal.send, $rb_plus = Opal.rb_plus, $lambda = Opal.lambda, $rb_le = Opal.rb_le, $rb_minus = Opal.rb_minus, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $eqeqeq = Opal.eqeqeq, $slice = Opal.slice, $Opal = Opal.Opal, $rb_gt = Opal.rb_gt; Opal.add_stubs('require,handle,==,type,push,self,scope,to_s,children,value,recv?,wrap,freeze,join,keys,gsub,even?,length,last_match,+,chop,[],inspect,to_i,to_utf16,translate_escape_chars,valid_encoding?,helper,upcase,<=,call,-,>>,&,attr_accessor,extract_flags_and_value,select!,flags,=~,warning,compiler,compile_static_regexp,compile_dynamic_regexp,each_with_index,zero?,expr,any?,===,new,map,to_proc,flags=,empty?,s,single_line?,value=,include?,is_a?,updated,delete,source,expression,loc,private,>,!=,!,regexp,first,each,compile_inline?,compile_inline,compile_range_initialize,start,finish,raise,expr_or_nil,numerator,denominator,real,imag'); @@ -29541,7 +29710,7 @@ Opal.modules["opal/nodes/literal"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/variables"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/variables"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $send = Opal.send, $range = Opal.range, $eqeqeq = Opal.eqeqeq, $send2 = Opal.send2, $find_super = Opal.find_super; Opal.add_stubs('require,handle,children,irb?,compiler,top?,scope,using_irb?,push,to_s,var_name,with_temp,property,wrap,add_local,expr,value,expr?,recv?,[],name,add_ivar,self,helper,add_gvar,===,handle_global_match,handle_post_match,handle_pre_match,raise,index,stmt?,class_variable_owner,inspect'); @@ -29859,7 +30028,7 @@ Opal.modules["opal/nodes/variables"] = function(Opal) {/* Generated by Opal 1.4. })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/constants"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/constants"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $def = Opal.def, $const_set = Opal.const_set; Opal.add_stubs('require,handle,children,magical_data_const?,push,optimized_access?,helper,name,==,const_scope,s,absolute_const,top_scope,recv,eval?,compiler,relative_access,scope,nil?,eof_content,freeze,include?,base,expr,value,nesting'); @@ -29960,7 +30129,7 @@ Opal.modules["opal/nodes/constants"] = function(Opal) {/* Generated by Opal 1.4. })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/break_finder"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/break_finder"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $alias = Opal.alias; Opal.add_stubs('require'); @@ -30019,7 +30188,7 @@ Opal.modules["opal/rewriters/break_finder"] = function(Opal) {/* Generated by Op })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/call"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/call"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $hash2 = Opal.hash2, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $defs = Opal.defs, $send2 = Opal.send2, $find_super = Opal.find_super, $slice = Opal.slice, $truthy = Opal.truthy, $def = Opal.def, $eqeq = Opal.eqeq, $rb_plus = Opal.rb_plus, $not = Opal.not, $neqeq = Opal.neqeq, $eqeqeq = Opal.eqeqeq, $to_ary = Opal.to_ary, $Opal = Opal.Opal, $range = Opal.range; Opal.add_stubs('require,handle,attr_reader,freeze,[]=,-,define_method,to_proc,include?,type,s,handle_special,record_method?,<<,method_calls,compiler,to_sym,meth,using_eval?,compile_eval_var,using_irb?,compile_irb_var,default_compile,private,iter,new,process,found_break?,splat?,!,empty?,collect_refinements_temps,scope,auto_await?,push,await_encountered=,invoke_using_refinement?,compile_using_refined_send,invoke_using_send?,compile_using_send,compile_simple_call_chain,compile_break_catcher,helper,compile_receiver,compile_method_name,compile_arguments,compile_block_pass,compile_refinements,recv,receiver_sexp,expr,arglist,children,map,iter_has_break?,unshift,line,method_jsid,any?,==,recvr,mid_to_jsid,to_s,with_temp,intern,irb?,top?,variable_like?,eval?,scope_variables,nil?,updated,async_await,!=,match?,method,arity,[],each,add_special,call,inline_operators?,fragment,resolve,requires,file,dirname,cleanpath,join,Pathname,self,inspect,length,warning,autoloads,required_trees,force_encoding,encoding,+,handle_block_given_call,def?,mid,module_name,count,accepts_using?,using_refinement,first,refinements_temp,arity_check?,defines_lambda,push_nesting?,nesting,new_temp,scope_locals,source_location,size,last,dynamic_require_severity,handle_part,===,is_a?,expand_path,split,error,each_with_object,pop'); @@ -30733,7 +30902,7 @@ Opal.modules["opal/nodes/call"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/csend"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/csend"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $def = Opal.def; Opal.add_stubs('require,handle,helper,conditional_send,recv,receiver_sexp,push,compile_method_name,compile_arguments,compile_block_pass'); @@ -30776,7 +30945,7 @@ Opal.modules["opal/nodes/csend"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/call_special"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/call_special"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $send = Opal.send; Opal.add_stubs('require,handle,children,push,recv,recvr,expr,property,value,<<,default_compile,meth,receiver_sexp,method_jsid,compile_arguments,iter,s,lhs,rhs,==,type,first,map,flatten,scan,to_proc,empty?,stmt?,process'); @@ -30909,7 +31078,7 @@ Opal.modules["opal/nodes/call_special"] = function(Opal) {/* Generated by Opal 1 })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/scope"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/scope"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $def = Opal.def, $send = Opal.send, $rb_minus = Opal.rb_minus, $truthy = Opal.truthy, $not = Opal.not, $rb_plus = Opal.rb_plus, $eqeq = Opal.eqeq, $hash2 = Opal.hash2; Opal.add_stubs('require,attr_accessor,attr_reader,indent,scope,compiler,scope=,-,==,iter?,!,class?,dup,push,map,ivars,gvars,empty?,<<,parser_indent,join,+,fragment,def_in_class?,add_proto_ivar,include?,has_local?,|,scope_locals,reject,start_with?,to_s,has_temp?,pop,next_temp,loop,succ,uses_block!,identify!,valid_name?,mid,compact,parent,name,scope_name,unique_temp,lambda?,def?,type,nil?,rescue_else_sexp,last,class,collect_refinements_temps,add_scope_local,new_refinements_temp,identity,block_name=,add_temp,block_name,line'); @@ -31518,7 +31687,7 @@ Opal.modules["opal/nodes/scope"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/module"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/module"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_ary = Opal.to_ary, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $def = Opal.def; Opal.add_stubs('require,handle,children,name_and_base,helper,nil?,body,stmt?,unshift,line,in_scope,name=,scope,-,compile_body,await_encountered,await_encountered=,parent,+,nesting,private,cid,expr,stmt,returns,compiler,empty_line,add_temp,to_vars'); @@ -31616,7 +31785,7 @@ Opal.modules["opal/nodes/module"] = function(Opal) {/* Generated by Opal 1.4.0 * })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/class"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/class"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_ary = Opal.to_ary, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $def = Opal.def; Opal.add_stubs('require,handle,children,name_and_base,helper,nil?,body,stmt?,unshift,super_code,line,in_scope,name=,scope,-,compile_body,await_encountered,await_encountered=,parent,+,nesting,sup,expr'); @@ -31695,7 +31864,7 @@ Opal.modules["opal/nodes/class"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/singleton_class"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/singleton_class"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $def = Opal.def; Opal.add_stubs('require,handle,children,push,in_scope,stmt,returns,compiler,body,add_temp,line,to_vars,scope,recv,object,nesting'); @@ -31744,7 +31913,7 @@ Opal.modules["opal/nodes/singleton_class"] = function(Opal) {/* Generated by Opa })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/arg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/arg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,handle,children,add_arg,scope,name,push,to_s'); @@ -31785,7 +31954,7 @@ Opal.modules["opal/nodes/args/arg"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/arity_check"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/arity_check"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $def = Opal.def, $send = Opal.send, $rb_minus = Opal.rb_minus, $truthy = Opal.truthy, $not = Opal.not, $rb_lt = Opal.rb_lt, $rb_plus = Opal.rb_plus, $rb_gt = Opal.rb_gt; Opal.add_stubs('require,handle,children,new,args_node,args,optargs,restarg,postargs,kwargs,kwoptargs,kwrestarg,kwnilarg,arity,arity=,scope,-,arity_check?,compiler,empty?,arity_checks,helper,inspect,to_s,mid,line,push,join,compact,size,all_args,!,-@,<,+,>,<<,has_only_optional_kwargs?,any?,negative_arity,positive_arity,select,include?,type,has_required_kwargs?,all?,==,def?,class_scope?,top?,parent,class?,name,module?,identity'); @@ -32001,7 +32170,7 @@ Opal.modules["opal/nodes/args/arity_check"] = function(Opal) {/* Generated by Op })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/ensure_kwargs_are_kwargs"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/ensure_kwargs_are_kwargs"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,handle,helper,line'); @@ -32045,7 +32214,7 @@ Opal.modules["opal/nodes/args/ensure_kwargs_are_kwargs"] = function(Opal) {/* Ge })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/extract_block_arg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/extract_block_arg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,handle,children,uses_block!,scope,add_arg,name,prepare_block'); @@ -32087,7 +32256,7 @@ Opal.modules["opal/nodes/args/extract_block_arg"] = function(Opal) {/* Generated })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/extract_kwarg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/extract_kwarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,handle,children,[],meta,<<,used_kwargs,scope,add_temp,lvar_name,line,inspect,to_s'); @@ -32135,7 +32304,7 @@ Opal.modules["opal/nodes/args/extract_kwarg"] = function(Opal) {/* Generated by })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/extract_kwargs"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/extract_kwargs"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,handle,add_temp,line'); @@ -32175,7 +32344,7 @@ Opal.modules["opal/nodes/args/extract_kwargs"] = function(Opal) {/* Generated by })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/extract_kwoptarg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/extract_kwoptarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $eqeq = Opal.eqeq, $def = Opal.def; Opal.add_stubs('require,handle,children,[],meta,<<,used_kwargs,scope,add_temp,lvar_name,line,inspect,to_s,==,default_value,expr'); @@ -32224,7 +32393,7 @@ Opal.modules["opal/nodes/args/extract_kwoptarg"] = function(Opal) {/* Generated })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/extract_kwrestarg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/extract_kwrestarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $send = Opal.send; Opal.add_stubs('require,handle,children,name,add_temp,line,used_kwargs,map,scope,join'); @@ -32278,7 +32447,7 @@ Opal.modules["opal/nodes/args/extract_kwrestarg"] = function(Opal) {/* Generated })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/extract_optarg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/extract_optarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $eqeq = Opal.eqeq, $def = Opal.def; Opal.add_stubs('require,handle,children,==,[],default_value,line,name,expr'); @@ -32321,7 +32490,7 @@ Opal.modules["opal/nodes/args/extract_optarg"] = function(Opal) {/* Generated by })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/extract_post_arg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/extract_post_arg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,handle,children,add_temp,name,line'); @@ -32363,7 +32532,7 @@ Opal.modules["opal/nodes/args/extract_post_arg"] = function(Opal) {/* Generated })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/extract_post_optarg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/extract_post_optarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $eqeq = Opal.eqeq, $def = Opal.def; Opal.add_stubs('require,handle,children,add_temp,name,line,args_to_keep,==,[],default_value,expr'); @@ -32408,7 +32577,7 @@ Opal.modules["opal/nodes/args/extract_post_optarg"] = function(Opal) {/* Generat })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/extract_restarg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/extract_restarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $def = Opal.def; Opal.add_stubs('require,handle,children,name,add_temp,==,args_to_keep,line'); @@ -32454,7 +32623,7 @@ Opal.modules["opal/nodes/args/extract_restarg"] = function(Opal) {/* Generated b })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/fake_arg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/fake_arg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,handle,next_temp,scope,add_arg,push'); @@ -32495,7 +32664,7 @@ Opal.modules["opal/nodes/args/fake_arg"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/initialize_iterarg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/initialize_iterarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,handle,children,line,name'); @@ -32534,7 +32703,7 @@ Opal.modules["opal/nodes/args/initialize_iterarg"] = function(Opal) {/* Generate })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/initialize_shadowarg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/initialize_shadowarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,handle,children,<<,locals,scope,name,add_arg,line'); @@ -32576,7 +32745,7 @@ Opal.modules["opal/nodes/args/initialize_shadowarg"] = function(Opal) {/* Genera })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/parameters"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/parameters"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $truthy = Opal.truthy, $eqeq = Opal.eqeq; Opal.add_stubs('children,map,public_send,type,join,compact,=='); @@ -32704,7 +32873,7 @@ Opal.modules["opal/nodes/args/parameters"] = function(Opal) {/* Generated by Opa })($nesting[0], $nesting) }; -Opal.modules["opal/nodes/args/prepare_post_args"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/prepare_post_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $eqeq = Opal.eqeq, $def = Opal.def; Opal.add_stubs('require,handle,children,add_temp,==,offset,line'); @@ -32749,7 +32918,7 @@ Opal.modules["opal/nodes/args/prepare_post_args"] = function(Opal) {/* Generated })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $send = Opal.send, $truthy = Opal.truthy, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $rb_gt = Opal.rb_gt, $neqeq = Opal.neqeq, $def = Opal.def; Opal.add_stubs('require,handle,each_with_index,children,multiple_underscore?,[],[]=,-,+,>,s,type,!=,push,process,==,count,start_with?,to_s,first'); @@ -32838,7 +33007,7 @@ Opal.modules["opal/nodes/args"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/node_with_args"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/node_with_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $def = Opal.def, $truthy = Opal.truthy; Opal.add_stubs('require,attr_reader,attr_accessor,[],meta,s,original_args,push,process,arity_check_node,uses_block?,scope,prepare_block,to_code,new'); @@ -32912,7 +33081,7 @@ Opal.modules["opal/nodes/node_with_args"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/iter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/iter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $eqeq = Opal.eqeq, $rb_gt = Opal.rb_gt, $def = Opal.def; Opal.add_stubs('require,handle,children,lambda_definition?,scope,is_lambda!,in_scope,identify!,process,inline_args,compile_arity_check,stmt,returned_body,add_temp,to_vars,line,catch_return,unshift,push,await_encountered,<<,arity,self,contains_break?,arity_check?,compiler,parameters_code,has_top_level_mlhs_arg?,has_trailing_comma_in_args?,==,length,>,join,nesting,relative_access,block_arg,prepare_block,each,args,first,updated,body,returns,s,any?,original_args,type,expression,loc,source,match,new,found_break?'); @@ -33090,7 +33259,7 @@ Opal.modules["opal/nodes/iter"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/def"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/def"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $def = Opal.def, $rb_plus = Opal.rb_plus; Opal.add_stubs('require,handle,children,in_scope,mid,mid=,scope,-,==,type,defs=,identify!,identity,block_name=,process,inline_args,stmt,returns,compiler,stmts,compile_block_arg,add_temp,compile_arity_check,unshift,current_indent,to_vars,line,catch_return,push,await_encountered,<<,arity,arity_check?,parameters_code,parse_comments?,comments_code,enable_source_location?,source_location,length,>,join,wrap_with_definition,nesting,relative_access,helper,wrap,self,expr?,+,map,comments,inspect,text'); @@ -33220,7 +33389,7 @@ Opal.modules["opal/nodes/def"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/defs"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/defs"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,handle,children,helper,unshift,expr,recvr,mid,push'); @@ -33256,7 +33425,7 @@ Opal.modules["opal/nodes/defs"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/if"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/if"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $def = Opal.def, $not = Opal.not, $send = Opal.send, $eqeqeq = Opal.eqeqeq; Opal.add_stubs('require,handle,children,should_compile_as_simple_expression?,==,true_body,s,compile_with_binary_or,false_body,compile_with_binary_and,compile_with_ternary,compile_with_if,truthy,falsy,!,push,js_truthy,test,indent,line,stmt,type,expects_expression?,await_encountered,scope,wrap,returnify,returns,compiler,expr?,recv?,simple?,expr,[],meta,sexp,===,single_line?,strip_empty_children,all?,helper,new_temp,top_scope,excl,from,to'); @@ -33504,7 +33673,7 @@ Opal.modules["opal/nodes/if"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/logic"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/logic"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_gt = Opal.rb_gt, $not = Opal.not; Opal.add_stubs('require,handle,in_while?,push,iter?,scope,expr_or_nil,value,error,===,size,children,s,first,compile_while,compile_iter,[],while_loop,stmt?,line,break_val,nil?,expr,[]=,-,helper,identity,==,empty_splat?,recv,>,find_parent_def,!,lambda?,def?,expr?,return_in_iter?,return_expr_in_def?,scope_to_catch_return,catch_return=,return_val,to_s'); @@ -33773,7 +33942,7 @@ Opal.modules["opal/nodes/logic"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/definitions"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/definitions"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $range = Opal.range, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $eqeq = Opal.eqeq, $to_a = Opal.to_a, $slice = Opal.slice, $rb_plus = Opal.rb_plus, $hash2 = Opal.hash2, $const_set = Opal.const_set; Opal.add_stubs('require,handle,children,each,line,self,scope,expr,===,type,new_name,helper,inspect,[],to_s,first,old_name,push,error,empty?,stmt?,compile_children,simple_children?,compile_inline_children,>,size,wrap,==,returned_children,await_encountered,parent,+,returns,compiler,s,process,fragment,freeze,none?,include?,map,each_with_index,reject,to_proc'); @@ -33932,7 +34101,7 @@ Opal.modules["opal/nodes/definitions"] = function(Opal) {/* Generated by Opal 1. })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/yield"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/yield"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def; Opal.add_stubs('require,find_yielding_scope,uses_block!,block_name,block_name=,-,yields_single_arg?,children,push,expr,first,wrap,s,uses_splat?,scope,def?,parent,!,==,size,any?,type,handle,compile_call'); @@ -34048,7 +34217,7 @@ Opal.modules["opal/nodes/yield"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/rescue"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/rescue"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $def = Opal.def, $range = Opal.range, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq; Opal.add_stubs('require,handle,children,push,in_ensure,line,stmt,body_sexp,indent,has_rescue_else?,unshift,rescue_else_code,process,compiler,ensr_sexp,wrap_in_closure?,await_encountered,scope,wrap,returns,begn,ensr,s,recv?,expr?,rescue_else_sexp,stmt?,detect,[],!=,type,rescue_else_sexp=,-,handle_rescue_else_manually?,in_rescue,body_code,each_with_index,==,retry_id,body,nil?,!,in_ensure?,gen_retry_id,attr_reader,expr,klasses,lvar,updated,in_resbody,rescue_body,klasses_sexp,in_resbody?,error,current_rescue'); @@ -34356,10 +34525,10 @@ Opal.modules["opal/nodes/rescue"] = function(Opal) {/* Generated by Opal 1.4.0 * })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/super"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/super"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $slice = Opal.slice, $truthy = Opal.truthy, $send = Opal.send, $def = Opal.def, $to_ary = Opal.to_ary, $eqeq = Opal.eqeq, $not = Opal.not, $eqeqeq = Opal.eqeqeq, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $rb_gt = Opal.rb_gt; - Opal.add_stubs('require,include?,type,s,helper,push,compile_receiver,compile_method_body,compile_method_name,compile_arguments,compile_block_pass,private,def?,scope,find_parent_def,to_s,mid,def_scope,identify!,self,method_id,def_scope_identity,defined_check_param,allow_stubs,super_chain,join,map,implicit_arguments_param,super_method_invocation,iter?,super_block_invocation,raise,handle,wrap,uses_block!,compile_using_send,==,iter,block_name,implicit_arglist,!,<<,new,each,children,original_args,[],meta,===,+,[]=,-,>,empty?'); + Opal.add_stubs('require,include?,type,s,helper,push,compile_receiver,compile_method_body,compile_method_name,compile_arguments,compile_block_pass,private,def?,scope,find_parent_def,to_s,mid,def_scope,identify!,self,method_id,def_scope_identity,defined_check_param,allow_stubs,super_chain,join,map,implicit_arguments_param,super_method_invocation,iter?,super_block_invocation,raise,handle,wrap,uses_block!,compile_using_send,==,iter,block_name,implicit_arglist,!,<<,new,each,children,original_args,[],===,+,[]=,-,>,meta,empty?'); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { @@ -34611,35 +34780,37 @@ Opal.modules["opal/nodes/super"] = function(Opal) {/* Generated by Opal 1.4.0 */ args = []; kwargs = []; same_arg_counter = $$('Hash').$new(0); - $send(self.$def_scope().$original_args().$children(), 'each', [], function $$2(sexp){var self = $$2.$$s == null ? this : $$2.$$s, arg_name = nil, $ret_or_1 = nil, arg_node = nil, $writer = nil; + $send(self.$def_scope().$original_args().$children(), 'each', [], function $$2(sexp){var self = $$2.$$s == null ? this : $$2.$$s, lvar_name = nil, $ret_or_1 = nil, arg_node = nil, $writer = nil, key_name = nil; if (sexp == null) sexp = nil;; - arg_name = sexp.$meta()['$[]']("arg_name"); + lvar_name = sexp.$children()['$[]'](0); if (($eqeqeq("arg", ($ret_or_1 = sexp.$type())) || ($eqeqeq("optarg", $ret_or_1)))) { - arg_node = self.$s("lvar", arg_name); - if ($eqeq(arg_name['$[]'](0), "_")) { + arg_node = self.$s("lvar", lvar_name); + if ($eqeq(lvar_name['$[]'](0), "_")) { - $writer = [arg_name, $rb_plus(same_arg_counter['$[]'](arg_name), 1)]; + $writer = [lvar_name, $rb_plus(same_arg_counter['$[]'](lvar_name), 1)]; $send(same_arg_counter, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; - if ($truthy($rb_gt(same_arg_counter['$[]'](arg_name), 1))) { - arg_node = self.$s("js_tmp", "" + (arg_name) + "_$" + (same_arg_counter['$[]'](arg_name))) + if ($truthy($rb_gt(same_arg_counter['$[]'](lvar_name), 1))) { + arg_node = self.$s("js_tmp", "" + (lvar_name) + "_$" + (same_arg_counter['$[]'](lvar_name))) }; }; return args['$<<'](arg_node); } else if ($eqeqeq("restarg", $ret_or_1)) { - arg_node = ($truthy(arg_name) ? (self.$s("lvar", arg_name)) : (self.$s("js_tmp", "$rest_arg"))); + arg_node = ($truthy(lvar_name) ? (self.$s("lvar", lvar_name)) : (self.$s("js_tmp", "$rest_arg"))); return args['$<<'](self.$s("splat", arg_node)); } else if (($eqeqeq("kwarg", $ret_or_1) || ($eqeqeq("kwoptarg", $ret_or_1)))) { - return kwargs['$<<'](self.$s("pair", self.$s("sym", arg_name), self.$s("lvar", arg_name))) + + key_name = sexp.$meta()['$[]']("arg_name"); + return kwargs['$<<'](self.$s("pair", self.$s("sym", key_name), self.$s("lvar", lvar_name))); } else if ($eqeqeq("kwrestarg", $ret_or_1)) { - arg_node = ($truthy(arg_name) ? (self.$s("lvar", arg_name)) : (self.$s("js_tmp", "$kw_rest_arg"))); + arg_node = ($truthy(lvar_name) ? (self.$s("lvar", lvar_name)) : (self.$s("js_tmp", "$kw_rest_arg"))); return kwargs['$<<'](self.$s("kwsplat", arg_node)); } else { return nil @@ -34665,7 +34836,7 @@ Opal.modules["opal/nodes/super"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/version"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/version"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set; return (function($base, $parent_nesting) { @@ -34673,11 +34844,11 @@ Opal.modules["opal/version"] = function(Opal) {/* Generated by Opal 1.4.0 */ var $nesting = [self].concat($parent_nesting); - return $const_set($nesting[0], 'VERSION', "1.4.0") + return $const_set($nesting[0], 'VERSION', "1.4.1") })($nesting[0], $nesting) }; -Opal.modules["opal/nodes/top"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/top"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $def = Opal.def; Opal.add_stubs('require,handle,children,top_scope=,compiler,-,push,version_comment,in_scope,==,body,s,line,use_strict?,stmt,stmts,is_a?,eval?,add_temp,add_used_helpers,to_vars,scope,compile_method_stubs,compile_irb_vars,compile_end_construct,opening,closing,await_encountered,requirable?,unshift,inspect,module_name,file,esm?,returns,irb?,each,to_a,helpers,method_missing?,method_calls,join,map,to_proc,empty?,eof_content'); @@ -34863,7 +35034,7 @@ Opal.modules["opal/nodes/top"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/while"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/while"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def; Opal.add_stubs('require,handle,children,js_truthy,test,with_temp,in_while,compiler,wrap_in_closure?,[]=,while_loop,-,indent,stmt,body,uses_redo?,compile_with_redo,compile_without_redo,await_encountered,scope,wrap,private,push,compile_while,while_open,while_close,line,[],expr?,recv?'); @@ -35042,7 +35213,7 @@ Opal.modules["opal/nodes/while"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/hash"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/hash"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $def = Opal.def, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $to_ary = Opal.to_ary, $hash2 = Opal.hash2, $rb_minus = Opal.rb_minus; Opal.add_stubs('require,handle,attr_accessor,each,children,===,type,<<,[],all?,keys,include?,has_kwsplat,compile_merge,simple_keys?,compile_hash2,compile_hash,helper,==,empty?,expr,s,each_with_index,push,wrap,times,size,inspect,to_s,values,[]=,-,join,value'); @@ -35228,7 +35399,7 @@ Opal.modules["opal/nodes/hash"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/array"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/array"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $def = Opal.def; Opal.add_stubs('require,handle,empty?,children,push,each,==,type,expr,<<,fragment'); @@ -35306,7 +35477,7 @@ Opal.modules["opal/nodes/array"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/defined"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/defined"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $eqeqeq = Opal.eqeqeq, $eqeq = Opal.eqeq, $def = Opal.def, $truthy = Opal.truthy, $to_a = Opal.to_a, $slice = Opal.slice, $send = Opal.send, $range = Opal.range; Opal.add_stubs('require,handle,children,===,type,value,push,inspect,to_s,==,[],size,compile_defined_send,wrap,compile_defined_ivar,compile_defined_super,compile_defined_yield,compile_defined_xstr,compile_defined_const,compile_defined_cvar,compile_defined_gvar,compile_defined_back_ref,compile_defined_nth_ref,compile_defined_array,respond_to?,__send__,new_temp,scope,expr,wrap_with_try_catch,mid_to_jsid,compile_defined,compile_send_recv_doesnt_raise,self,each,s,uses_block!,block_name,find_parent_def,nil?,relative_access,absolute_const,top_scope,class_variable_owner,helper,include?,each_with_index'); @@ -35583,7 +35754,7 @@ Opal.modules["opal/nodes/defined"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/masgn"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/masgn"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $send = Opal.send, $def = Opal.def, $rb_ge = Opal.rb_ge, $not = Opal.not, $rb_plus = Opal.rb_plus; Opal.add_stubs('require,freeze,handle,children,new_temp,scope,==,type,rhs,push,expr,any?,size,compile_masgn,lhs,helper,queue_temp,take_while,!=,drop,each_with_index,compile_assignment,empty?,shift,[],<<,dup,s,>=,!,updated,include?,+,last,raise'); @@ -35734,7 +35905,7 @@ Opal.modules["opal/nodes/masgn"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/arglist"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/arglist"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $to_a = Opal.to_a, $def = Opal.def; Opal.add_stubs('require,handle,each,children,==,type,expr,empty?,<<,fragment,push'); @@ -35809,7 +35980,7 @@ Opal.modules["opal/nodes/arglist"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/x_string"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/x_string"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $def = Opal.def, $defs = Opal.defs, $lambda = Opal.lambda, $eqeqeq = Opal.eqeqeq, $eqeq = Opal.eqeq, $not = Opal.not, $range = Opal.range; Opal.add_stubs('handle,unpack_return,children,strip_empty_children,single_line?,compile_single_line,each,compile_child,recv?,wrap,push,==,size,none?,type,end_with?,source,expression,loc,dup,nil?,empty?,rstrip,any?,[],first,shift,last,pop,private,===,include?,self,scope,new,expr,raise,s,strip,=~,!,extract_last_value,expr?,warning,compiler,line'); @@ -35997,7 +36168,7 @@ Opal.modules["opal/nodes/x_string"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting) }; -Opal.modules["opal/nodes/lambda"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/lambda"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $def = Opal.def; Opal.add_stubs('require,handle,children,helper,defines_lambda,scope,push,expr,iter'); @@ -36034,7 +36205,7 @@ Opal.modules["opal/nodes/lambda"] = function(Opal) {/* Generated by Opal 1.4.0 * })($nesting[0], $nesting); }; -Opal.modules["opal/nodes"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, nil = Opal.nil; Opal.add_stubs('require'); @@ -36071,7 +36242,7 @@ Opal.modules["opal/nodes"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$require("opal/nodes/lambda"); }; -Opal.modules["opal/eof_content"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/eof_content"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $eqeq = Opal.eqeq, $range = Opal.range, $to_ary = Opal.to_ary; Opal.add_stubs('empty?,[],last_token_position,drop_while,lines,==,join,private,last,end_pos'); @@ -36136,7 +36307,7 @@ Opal.modules["opal/eof_content"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["opal/errors"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/errors"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $defs = Opal.defs, $rb_plus = Opal.rb_plus, $alias = Opal.alias; Opal.add_stubs('attr_reader,attr_accessor,new,respond_to?,location,location=,-,diagnostic,diagnostic=,to_a,backtrace,unshift,to_s,set_backtrace,path,lineno,+,label,line,lineno=,source_line,label=,expression'); @@ -36283,7 +36454,7 @@ Opal.modules["opal/errors"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["opal/magic_comments"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/magic_comments"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send, $rb_ge = Opal.rb_ge, $eqeqeq = Opal.eqeqeq, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $defs = Opal.defs; Opal.add_stubs('freeze,line,loc,take,each,>=,any?,scan,text,to_sym,===,[]=,-'); @@ -36332,7 +36503,7 @@ Opal.modules["opal/magic_comments"] = function(Opal) {/* Generated by Opal 1.4.0 })($$('Opal'), $nesting) }; -Opal.modules["opal/compiler"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/compiler"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $hash2 = Opal.hash2, $defs = Opal.defs, $klass = Opal.klass, $const_set = Opal.const_set, $send = Opal.send, $truthy = Opal.truthy, $not = Opal.not, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $Opal = Opal.Opal, $to_ary = Opal.to_ary, $alias = Opal.alias, $eqeqeq = Opal.eqeqeq, $regexp = Opal.regexp, $rb_plus = Opal.rb_plus, $slice = Opal.slice, $eqeq = Opal.eqeq; Opal.add_stubs('require,compile,new,freeze,join,dirname,first,split,basename,to_s,cleanpath,Pathname,fetch,define_method,option_value,key?,[],!,include?,raise,inspect,[]=,-,compiler_option,attr_reader,attr_accessor,parse,re_raise_with_location,flatten,process,end_with?,code,last,<<,fragment,s,map,to_proc,file,source=,default_parser,tokenize,requirable?,eval?,tap,meta,associate_locations,eof,magic_comments,to_sym,strip,async_await_before_typecasting,===,async_await_set_to_regexp,to_a,gsub,escape,location=,opal_location_from_error,path=,label,lines,to_i,line,label=,message,set_backtrace,backtrace,add_opal_location_to_error,warn,empty?,+,start_with?,helpers,new_temp,queue_temp,push_while,pop_while,in_while?,nil?,scope,handlers,type,compile_to_fragments,error,returns,updated,children,==,uses_block!,block_name,find_parent_def,cache,source_map'); @@ -36830,7 +37001,7 @@ Opal.modules["opal/compiler"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/erb"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/erb"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $defs = Opal.defs, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $send = Opal.send, $regexp = Opal.regexp; Opal.add_stubs('require,compile,new,freeze,fix_quotes,find_contents,find_code,wrap_compiled,require_erb,prepared_source,gsub,+,last_match,=~,sub'); @@ -36927,7 +37098,7 @@ Opal.modules["opal/erb"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/builder_processors"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/builder_processors"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $send = Opal.send, $def = Opal.def, $eqeq = Opal.eqeq, $Opal = Opal.Opal, $const_set = Opal.const_set, $send2 = Opal.send2, $find_super = Opal.find_super, $defs = Opal.defs, $to_a = Opal.to_a; Opal.add_stubs('require,end_with?,+,dup,delete,cache,attr_reader,to_s,source,join,==,size,new,register_processor,is_a?,match,match_regexp,raise,inspect,handles,map,with_index,each_line,index,filename,mark_as_required,result,compiled,source_map,fetch,cache_key,compiler_for,compile,class,merge,requires,required_trees,autoloads,extname,prepare,private,prepared_source,module_name'); @@ -37187,7 +37358,7 @@ Opal.modules["opal/builder_processors"] = function(Opal) {/* Generated by Opal 1 })($nesting[0], $nesting); }; -Opal.modules["base64"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["base64"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $defs = Opal.defs, $hash2 = Opal.hash2, $truthy = Opal.truthy; Opal.add_stubs('raise,delete'); @@ -37294,7 +37465,7 @@ Opal.modules["base64"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["corelib/pack_unpack/format_string_parser"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/pack_unpack/format_string_parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $Kernel = Opal.Kernel; Opal.add_stubs('raise'); @@ -37438,7 +37609,7 @@ Opal.modules["corelib/pack_unpack/format_string_parser"] = function(Opal) {/* Ge })('::') }; -Opal.modules["corelib/string/unpack"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/string/unpack"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $Kernel = Opal.Kernel, $hash2 = Opal.hash2, $truthy = Opal.truthy, $rb_lt = Opal.rb_lt, $Opal = Opal.Opal, $rb_gt = Opal.rb_gt, $def = Opal.def; Opal.add_stubs('require,flatten,decode64,raise,<,delete,gsub,coerce_to!,>,length,inspect,[],unpack'); @@ -38237,7 +38408,7 @@ Opal.modules["corelib/string/unpack"] = function(Opal) {/* Generated by Opal 1.4 })('::', null, $nesting); }; -Opal.modules["opal-builder"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal-builder"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, nil = Opal.nil; Opal.add_stubs('require'); diff --git a/opal/current/opal-builder.min.js b/opal/current/opal-builder.min.js index 203da7a2..941dbd11 100644 --- a/opal/current/opal-builder.min.js +++ b/opal/current/opal-builder.min.js @@ -1 +1 @@ -Opal.modules["opal/regexp_anchors"]=function(Opal){var $nesting=[],$$$=(Opal.nil,Opal.$$$),$module=Opal.module,$const_set=Opal.const_set;return Opal.add_stubs("new"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set(self,"REGEXP_START","^"),$const_set(self,"REGEXP_END","$"),$const_set(self,"FORBIDDEN_STARTING_IDENTIFIER_CHARS","\\u0001-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"FORBIDDEN_ENDING_IDENTIFIER_CHARS","\\u0001-\\u0020\\u0022-\\u002F\\u003A-\\u003E\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"INLINE_IDENTIFIER_REGEXP",$$("Regexp").$new("[^"+$$$(self,"FORBIDDEN_STARTING_IDENTIFIER_CHARS")+"]*[^"+$$$(self,"FORBIDDEN_ENDING_IDENTIFIER_CHARS")+"]")),$const_set(self,"FORBIDDEN_CONST_NAME_CHARS","\\u0001-\\u0020\\u0021-\\u002F\\u003B-\\u003F\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"CONST_NAME_REGEXP",$$("Regexp").$new($$$(self,"REGEXP_START")+"(::)?[A-Z][^"+$$$(self,"FORBIDDEN_CONST_NAME_CHARS")+"]*"+$$$(self,"REGEXP_END")))}($nesting[0],$nesting)},Opal.modules["corelib/comparable"]=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$truthy=Opal.truthy,$module=Opal.module,$rb_gt=Opal.rb_gt,$rb_lt=Opal.rb_lt,$eqeqeq=Opal.eqeqeq,$Kernel=Opal.Kernel,$def=Opal.def;return Opal.add_stubs(">,<,===,raise,class,<=>,equal?"),function($base){var self=$module("::","Comparable"),$ret_or_1=nil;function normalize(what){return Opal.is_a(what,Opal.Integer)?what:$rb_gt(what,0)?1:$rb_lt(what,0)?-1:0}function cmp_or_fail(lhs,rhs){var cmp=lhs["$<=>"](rhs);return $truthy(cmp)||function(lhs,rhs){var class_name;class_name=$eqeqeq(nil,$ret_or_1=rhs)||$eqeqeq(!0,$ret_or_1)||$eqeqeq(!1,$ret_or_1)||$eqeqeq($$$("Integer"),$ret_or_1)||$eqeqeq($$$("Float"),$ret_or_1)?rhs.$inspect():rhs.$$class,$Kernel.$raise($$$("ArgumentError"),"comparison of "+lhs.$class()+" with "+class_name+" failed")}(lhs,rhs),normalize(cmp)}return $def(self,"$==",(function(other){var cmp;return!!$truthy(this["$equal?"](other))||this["$<=>"]!=Opal.Kernel["$<=>"]&&(this.$$comparable?(delete this.$$comparable,!1):!!$truthy(cmp=this["$<=>"](other))&&0==normalize(cmp))}),1),$def(self,"$>",(function(other){return cmp_or_fail(this,other)>0}),1),$def(self,"$>=",(function(other){return cmp_or_fail(this,other)>=0}),1),$def(self,"$<",(function(other){return cmp_or_fail(this,other)<0}),1),$def(self,"$<=",(function(other){return cmp_or_fail(this,other)<=0}),1),$def(self,"$between?",(function(min,max){return!$rb_lt(this,min)&&!$rb_gt(this,max)}),2),$def(self,"$clamp",(function(min,max){var c,excl;if(null==max&&(max=nil),max===nil&&(Opal.is_a(min,Opal.Range)||$Kernel.$raise($$$("TypeError"),"wrong argument type "+min.$class()+" (expected Range)"),excl=min.excl,max=min.end,min=min.begin,max!==nil&&excl&&$Kernel.$raise($$$("ArgumentError"),"cannot clamp with an exclusive range")),min!==nil&&max!==nil&&cmp_or_fail(min,max)>0&&$Kernel.$raise($$$("ArgumentError"),"min argument must be smaller than max argument"),min!==nil){if(0==(c=cmp_or_fail(this,min)))return this;if(c<0)return min}return max!==nil&&(c=cmp_or_fail(this,max))>0?max:this}),-2)}()},Opal.modules.pathname=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def,$defs=Opal.defs,$to_ary=Opal.to_ary,$send=Opal.send,$to_a=Opal.to_a,$neqeq=Opal.neqeq,$rb_plus=Opal.rb_plus,$not=Opal.not,$alias=Opal.alias,$module=Opal.module;return Opal.add_stubs("require,include,quote,===,to_s,path,respond_to?,to_path,is_a?,nil?,raise,class,==,new,pwd,attr_reader,!,relative?,chop_basename,basename,=~,source,[],rindex,sub,absolute?,expand_path,plus,unshift,length,!=,empty?,first,shift,+,join,dirname,pop,reverse_each,directory?,extname,<=>,nonzero?,proc,casecmp,cleanpath,inspect,include?,fill,map,entries"),self.$require("corelib/comparable"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Pathname"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.path=nil,self.$include($$("Comparable")),$const_set($nesting[0],"SEPARATOR_PAT",$regexp([$$("Regexp").$quote($$$($$("File"),"SEPARATOR"))])),$def(self,"$initialize",(function(path){return $eqeqeq($$("Pathname"),path)?this.path=path.$path().$to_s():$truthy(path["$respond_to?"]("to_path"))?this.path=path.$to_path():$truthy(path["$is_a?"]($$("String")))?this.path=path:$truthy(path["$nil?"]())?this.$raise($$("TypeError"),"no implicit conversion of nil into String"):this.$raise($$("TypeError"),"no implicit conversion of "+path.$class()+" into String"),$eqeq(this.path,"\0")?this.$raise($$("ArgumentError")):nil}),1),$defs(self,"$pwd",(function(){return this.$new($$("Dir").$pwd())}),0),self.$attr_reader("path"),$def(self,"$==",(function(other){return other.$path()["$=="](this.path)}),1),$def(self,"$absolute?",(function(){return this["$relative?"]()["$!"]()}),0),$def(self,"$relative?",(function(){var $b,path=nil,r=nil;for(path=this.path;$truthy(r=this.$chop_basename(path));)path=null==($b=$to_ary(r))[0]?nil:$b[0];return path["$=="]("")}),0),$def(self,"$chop_basename",(function(path){var base;return base=$$("File").$basename(path),$truthy($$("Regexp").$new("^"+$$$($$("Pathname"),"SEPARATOR_PAT").$source()+"?$")["$=~"](base))?nil:[path["$[]"](0,path.$rindex(base)),base]}),1),$def(self,"$root?",(function(){return this.path["$=="]("/")}),0),$def(self,"$parent",(function(){var new_path=nil;return new_path=this.path.$sub(/\/([^\/]+\/?$)/,""),$eqeq(new_path,"")&&(new_path=$truthy(this["$absolute?"]())?"/":"."),$$("Pathname").$new(new_path)}),0),$def(self,"$sub",(function($a){var args,self=this;return args=Opal.slice.call(arguments),$$("Pathname").$new($send(self.path,"sub",$to_a(args)))}),-1),$def(self,"$cleanpath",(function(){return Opal.normalize(this.path)}),0),$def(self,"$to_path",(function(){return this.path}),0),$def(self,"$hash",(function(){return this.path}),0),$def(self,"$expand_path",(function(){return $$("Pathname").$new($$("File").$expand_path(this.path))}),0),$def(self,"$+",(function(other){return $eqeqeq($$("Pathname"),other)||(other=$$("Pathname").$new(other)),$$("Pathname").$new(this.$plus(this.path,other.$to_s()))}),1),$def(self,"$plus",(function(path1,path2){var $b,prefix2=nil,index_list2=nil,basename_list2=nil,r2=nil,basename2=nil,prefix1=nil,$ret_or_1=nil,r1=nil,basename1=nil,suffix2=nil;for(prefix2=path2,index_list2=[],basename_list2=[];$truthy(r2=this.$chop_basename(prefix2));)prefix2=null==($b=$to_ary(r2))[0]?nil:$b[0],basename2=null==$b[1]?nil:$b[1],index_list2.$unshift(prefix2.$length()),basename_list2.$unshift(basename2);if($neqeq(prefix2,""))return path2;for(prefix1=path1;$truthy(!0);){for(;$truthy($truthy($ret_or_1=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="]("."):$ret_or_1);)index_list2.$shift(),basename_list2.$shift();if(!$truthy(r1=this.$chop_basename(prefix1)))break;if(prefix1=null==($b=$to_ary(r1))[0]?nil:$b[0],basename1=null==$b[1]?nil:$b[1],!$eqeq(basename1,".")){if($eqeq(basename1,"..")||$truthy(basename_list2["$empty?"]())||$neqeq(basename_list2.$first(),"..")){prefix1=$rb_plus(prefix1,basename1);break}index_list2.$shift(),basename_list2.$shift()}}if(r1=this.$chop_basename(prefix1),$not(r1)&&$truthy($regexp([$$("SEPARATOR_PAT")])["$=~"]($$("File").$basename(prefix1))))for(;$truthy($truthy($ret_or_1=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="](".."):$ret_or_1);)index_list2.$shift(),basename_list2.$shift();return $not(basename_list2["$empty?"]())?(suffix2=path2["$[]"](Opal.Range.$new(index_list2.$first(),-1,!1)),$truthy(r1)?$$("File").$join(prefix1,suffix2):$rb_plus(prefix1,suffix2)):$truthy(r1)?prefix1:$$("File").$dirname(prefix1)}),2),$def(self,"$join",(function($a){try{var $post_args,args,self=this,result=nil;return $post_args=Opal.slice.call(arguments),$truthy((args=$post_args)["$empty?"]())?self:(result=args.$pop(),$eqeqeq($$("Pathname"),result)||(result=$$("Pathname").$new(result)),$truthy(result["$absolute?"]())?result:($send(args,"reverse_each",[],(function(arg){if(null==arg&&(arg=nil),$eqeqeq($$("Pathname"),arg)||(arg=$$("Pathname").$new(arg)),result=$rb_plus(arg,result),!$truthy(result["$absolute?"]()))return nil;Opal.ret(result)}),1),$rb_plus(self,result)))}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$split",(function(){return[this.$dirname(),this.$basename()]}),0),$def(self,"$dirname",(function(){return $$("Pathname").$new($$("File").$dirname(this.path))}),0),$def(self,"$basename",(function(){return $$("Pathname").$new($$("File").$basename(this.path))}),0),$def(self,"$directory?",(function(){return $$("File")["$directory?"](this.path)}),0),$def(self,"$extname",(function(){return $$("File").$extname(this.path)}),0),$def(self,"$<=>",(function(other){return this.$path()["$<=>"](other.$path())}),1),$const_set($nesting[0],"SAME_PATHS",$truthy($$$($$("File"),"FNM_SYSCASE")["$nonzero?"]())?$send(self,"proc",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a.$casecmp(b)["$=="](0)}),2):$send(self,"proc",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a["$=="](b)}),2)),$def(self,"$relative_path_from",(function(base_directory){var $b,dest_directory,dest_prefix=nil,dest_names=nil,r=nil,basename=nil,base_prefix=nil,base_names=nil,$ret_or_1=nil,$ret_or_2=nil,relpath_names=nil;for(dest_directory=this.$cleanpath().$to_s(),base_directory=base_directory.$cleanpath().$to_s(),dest_prefix=dest_directory,dest_names=[];$truthy(r=this.$chop_basename(dest_prefix));)dest_prefix=null==($b=$to_ary(r))[0]?nil:$b[0],basename=null==$b[1]?nil:$b[1],$neqeq(basename,".")&&dest_names.$unshift(basename);for(base_prefix=base_directory,base_names=[];$truthy(r=this.$chop_basename(base_prefix));)base_prefix=null==($b=$to_ary(r))[0]?nil:$b[0],basename=null==$b[1]?nil:$b[1],$neqeq(basename,".")&&base_names.$unshift(basename);for($truthy($$("SAME_PATHS")["$[]"](dest_prefix,base_prefix))||this.$raise($$("ArgumentError"),"different prefix: "+dest_prefix.$inspect()+" and "+base_directory.$inspect());$truthy($truthy($ret_or_1=$truthy($ret_or_2=dest_names["$empty?"]()["$!"]())?base_names["$empty?"]()["$!"]():$ret_or_2)?$$("SAME_PATHS")["$[]"](dest_names.$first(),base_names.$first()):$ret_or_1);)dest_names.$shift(),base_names.$shift();return $truthy(base_names["$include?"](".."))&&this.$raise($$("ArgumentError"),"base_directory has ..: "+base_directory.$inspect()),base_names.$fill(".."),relpath_names=$rb_plus(base_names,dest_names),$truthy(relpath_names["$empty?"]())?$$("Pathname").$new("."):$$("Pathname").$new($send($$("File"),"join",$to_a(relpath_names)))}),1),$def(self,"$entries",(function(){return $send($$("Dir").$entries(this.path),"map",[],(function $$11(f){return null==f&&(f=nil),(null==$$11.$$s?this:$$11.$$s).$class().$new(f)}),{$$arity:1,$$s:this})}),0),$alias(self,"===","=="),$alias(self,"eql?","=="),$alias(self,"to_s","to_path"),$alias(self,"to_str","to_path")}($nesting[0],0,$nesting),function($base,$parent_nesting){var self=$module($base,"Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$Pathname",(function(path){return $$("Pathname").$new(path)}),1)}($nesting[0],$nesting)},Opal.modules["opal/hike"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$hash2=Opal.hash2,$def=Opal.def,$truthy=Opal.truthy,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$to_ary=Opal.to_ary,$regexp=Opal.regexp,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,attr_reader,freeze,dup,map,new,to_s,sub,=~,find_in_base_path,find_in_paths,[],directory?,sort,reject,entries,[]=,-,key?,exist?,stat,protected,is_a?,last,pop,split,each,match,join,to_proc,paths_contain?,pattern_for,select,sort_matches,file?,any?,paths,==,length,build_pattern_for,extensions,escape,sort_by,scan,inject,index,+,expand_path,concat,normalize_path,normalize_extension,find,root,private,start_with?,relative?"),self.$require("pathname"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Hike")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Index"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.root=$proto.entries=$proto.stats=$proto.pathnames=$proto.patterns=nil,self.$attr_reader("paths"),self.$attr_reader("extensions"),$def(self,"$initialize",(function(root,paths,extensions){return this.root=root,this.paths=paths.$dup().$freeze(),this.extensions=extensions.$dup().$freeze(),this.pathnames=$send(paths,"map",[],(function(path){return null==path&&(path=nil),$$("Pathname").$new(path)}),1),this.stats=$hash2([],{}),this.entries=$hash2([],{}),this.patterns=$hash2([],{})}),3),$def(self,"$root",(function(){return this.root.$to_s()}),0),$def(self,"$index",(function(){return this}),0),$def(self,"$find",(function(logical_path){try{var base_path;return base_path=$$("Pathname").$new(this.root),logical_path=$$("Pathname").$new(logical_path.$sub(/^\//,"")),$truthy(logical_path.$to_s()["$=~"](/^\.\.?\//))?$send(this,"find_in_base_path",[logical_path,base_path],(function(path){null==path&&(path=nil),Opal.ret(path)}),1):$send(this,"find_in_paths",[logical_path],(function(path){null==path&&(path=nil),Opal.ret(path)}),1),nil}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),1),$def(self,"$entries",(function(path){var $ret_or_1,$writer=nil,pathname=nil;return $truthy($ret_or_1=this.entries["$[]"](path.$to_s()))?$ret_or_1:($writer=[path.$to_s(),(pathname=$$("Pathname").$new(path),$truthy(pathname["$directory?"]())?$send(pathname.$entries(),"reject",[],(function(entry){return null==entry&&(entry=nil),entry.$to_s()["$=~"](/^\.|~$|^\#.*\#$/)}),1).$sort():[])],$send(this.entries,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),1),$def(self,"$stat",(function(path){var key,$writer=nil;return key=path.$to_s(),$truthy(this.stats["$key?"](key))?this.stats["$[]"](key):$truthy($$("File")["$exist?"](path))?($writer=[key,$$("File").$stat(path)],$send(this.stats,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):($writer=[key,nil],$send(this.stats,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),1),self.$protected(),$def(self,"$extract_options!",(function(arguments$){return $truthy(arguments$.$last()["$is_a?"]($$("Hash")))?arguments$.$pop().$dup():$hash2([],{})}),1),$def(self,"$find_in_paths",(function $$find_in_paths(logical_path){var $a,$b,dirname,basename,block=$$find_in_paths.$$p||nil;return delete $$find_in_paths.$$p,$b=logical_path.$split(),$a=$to_ary($b),dirname=null==$a[0]?nil:$a[0],basename=null==$a[1]?nil:$a[1],$send(this.pathnames,"each",[],(function $$6(base_path){return null==base_path&&(base_path=nil),$send(null==$$6.$$s?this:$$6.$$s,"match",[base_path.$join(dirname),basename],block.$to_proc())}),{$$arity:1,$$s:this})}),1),$def(self,"$find_in_base_path",(function $$find_in_base_path(logical_path,base_path){var $a,$b,dirname,basename,block=$$find_in_base_path.$$p||nil;return delete $$find_in_base_path.$$p,$b=base_path.$join(logical_path).$split(),dirname=null==($a=$to_ary($b))[0]?nil:$a[0],basename=null==$a[1]?nil:$a[1],$truthy(this["$paths_contain?"](dirname))?$send(this,"match",[dirname,basename],block.$to_proc()):nil}),2),$def(self,"$match",(function $$match(dirname,basename){var pattern,$yield=$$match.$$p||nil,matches=nil;return delete $$match.$$p,matches=this.$entries(dirname),pattern=this.$pattern_for(basename),matches=$send(matches,"select",[],(function(m){return null==m&&(m=nil),m.$to_s()["$=~"](pattern)}),1),$send(this.$sort_matches(matches,basename),"each",[],(function $$8(path){var self=null==$$8.$$s?this:$$8.$$s,pathname=nil,stat=nil;return null==path&&(path=nil),pathname=dirname.$join(path),stat=self.$stat(pathname),$truthy(stat)&&$truthy(stat["$file?"]())?Opal.yield1($yield,pathname.$to_s()):nil}),{$$arity:1,$$s:this})}),2),$def(self,"$paths_contain?",(function(dirname){return $send(this.$paths(),"any?",[],(function(path){return null==path&&(path=nil),dirname.$to_s()["$[]"](0,path.$length())["$=="](path)}),1)}),1),$def(self,"$pattern_for",(function(basename){var $ret_or_1,$writer=nil;return $truthy($ret_or_1=this.patterns["$[]"](basename))?$ret_or_1:($writer=[basename,this.$build_pattern_for(basename)],$send(this.patterns,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),1),$def(self,"$build_pattern_for",(function(basename){var extension_pattern;return extension_pattern=$send(this.$extensions(),"map",[],(function(e){return null==e&&(e=nil),$$("Regexp").$escape(e)}),1).$join("|"),$regexp(["^",basename,"(?:",extension_pattern,")*$"])}),1),$def(self,"$sort_matches",(function(matches,basename){return $send(matches,"sort_by",[],(function $$12(match){var extnames,self=null==$$12.$$s?this:$$12.$$s;return null==match&&(match=nil),extnames=match.$sub(basename.$to_s(),"").$to_s().$scan(/\.[^.]+/),$send(extnames,"inject",[0],(function $$13(sum,ext){var index;return null==sum&&(sum=nil),null==ext&&(ext=nil),index=(null==$$13.$$s?this:$$13.$$s).$extensions().$index(ext),$truthy(index)?$rb_plus($rb_plus(sum,index),1):sum}),{$$arity:2,$$s:self})}),{$$arity:1,$$s:this})}),2)}($nesting[0],0,$nesting),function($base,$super,$parent_nesting){var self=$klass($base,null,"Trail"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.root=$proto.paths=$proto.extensions=nil,self.$attr_reader("paths"),self.$attr_reader("extensions"),$def(self,"$initialize",(function(root){return null==root&&(root="."),this.root=$$("Pathname").$new(root).$expand_path(),this.paths=[],this.extensions=[]}),-1),$def(self,"$root",(function(){return this.root.$to_s()}),0),$def(self,"$append_paths",(function($a){var paths,self=this;return paths=Opal.slice.call(arguments),self.paths.$concat($send(paths,"map",[],(function $$14(p){return null==p&&(p=nil),(null==$$14.$$s?this:$$14.$$s).$normalize_path(p)}),{$$arity:1,$$s:self}))}),-1),$def(self,"$append_extensions",(function($a){var extensions,self=this;return extensions=Opal.slice.call(arguments),self.extensions.$concat($send(extensions,"map",[],(function $$15(e){return null==e&&(e=nil),(null==$$15.$$s?this:$$15.$$s).$normalize_extension(e)}),{$$arity:1,$$s:self}))}),-1),$def(self,"$find",(function $$find($a){var args,block=$$find.$$p||nil,self=this;return delete $$find.$$p,args=Opal.slice.call(arguments),$send(self.$index(),"find",$to_a(args),block.$to_proc())}),-1),$def(self,"$index",(function(){return $$("Index").$new(this.$root(),this.$paths(),this.$extensions())}),0),$def(self,"$entries",(function(path){var pathname=nil;return pathname=$$("Pathname").$new(path),$truthy(pathname["$directory?"]())?$send(pathname.$entries(),"reject",[],(function(entry){return null==entry&&(entry=nil),entry.$to_s()["$=~"](/^\.|~$|^\#.*\#$/)}),1).$sort():[]}),1),$def(self,"$stat",(function(path){return $truthy($$("File")["$exist?"](path))?$$("File").$stat(path.$to_s()):nil}),1),self.$private(),$def(self,"$normalize_extension",(function(ext){return $truthy(ext["$start_with?"]("."))?ext:"."+ext}),1),$def(self,"$normalize_path",(function(path){return path=$$("Pathname").$new(path),$truthy(path["$relative?"]())&&(path=this.root.$join(path)),path.$expand_path().$to_s()}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/path_reader"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$send=Opal.send,$to_a=Opal.to_a,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("require,freeze,quote,paths,new,append_paths,append_extensions,expand,nil?,exist?,open,to_proc,=~,absolute?,find_path,file_finder,extensions,private,Pathname,find,attr_reader"),self.$require("opal/regexp_anchors"),self.$require("opal/hike"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"PathReader"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.file_finder=nil,$const_set($nesting[0],"RELATIVE_PATH_REGEXP",$regexp([$$$($$("Opal"),"REGEXP_START"),"\\.?\\.",$$("Regexp").$quote($$$($$("File"),"SEPARATOR"))]).$freeze()),$const_set($nesting[0],"DEFAULT_EXTENSIONS",[".js",".js.rb",".rb",".opalerb"].$freeze()),$def(self,"$initialize",(function(paths,extensions){return null==paths&&(paths=$$("Opal").$paths()),null==extensions&&(extensions=$$("DEFAULT_EXTENSIONS")),this.file_finder=$$$($$("Hike"),"Trail").$new(),$send(this.file_finder,"append_paths",$to_a(paths)),$send(this.file_finder,"append_extensions",$to_a(extensions))}),-1),$def(self,"$read",(function(path){var full_path=nil;return full_path=this.$expand(path),$truthy(full_path["$nil?"]())?nil:$truthy($$("File")["$exist?"](full_path))?$send($$("File"),"open",[full_path,"rb:UTF-8"],"read".$to_proc()):nil}),1),$def(self,"$expand",(function(path){return $truthy($$("Pathname").$new(path)["$absolute?"]())||$truthy(path["$=~"]($$("RELATIVE_PATH_REGEXP")))?path:this.$find_path(path)}),1),$def(self,"$paths",(function(){return this.$file_finder().$paths()}),0),$def(self,"$extensions",(function(){return this.$file_finder().$extensions()}),0),$def(self,"$append_paths",(function($a){var paths,self=this;return paths=Opal.slice.call(arguments),$send(self.$file_finder(),"append_paths",$to_a(paths))}),-1),self.$private(),$def(self,"$find_path",(function(path){var pathname=nil;return pathname=this.$Pathname(path),$truthy(pathname["$absolute?"]())&&$truthy(pathname["$exist?"]())?path:this.$file_finder().$find(path)}),1),self.$attr_reader("file_finder")}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/paths"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$defs=Opal.defs,$send=Opal.send,$to_a=Opal.to_a,$def=Opal.def,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus;return Opal.add_stubs("expand_path,append_paths,concat,require_paths_for_gem,private,find_by_name,raise,each,runtime_dependencies,+,name,gem_dir,map,require_paths,<<,join,extend,freeze,core_dir,std_dir,reset_paths!"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$gem_dir",(function(){return $$("File").$expand_path("../..","opal/paths.rb")}),0),$defs(self,"$core_dir",(function(){return $$("File").$expand_path("../../../opal","opal/paths.rb")}),0),$defs(self,"$std_dir",(function(){return $$("File").$expand_path("../../../stdlib","opal/paths.rb")}),0),$defs(self,"$append_path",(function(path){return this.$append_paths(path)}),1),$defs(self,"$append_paths",(function($a){var paths,self=this;return null==self.paths&&(self.paths=nil),paths=Opal.slice.call(arguments),self.paths.$concat(paths),nil}),-1),function($base,$parent_nesting){var self=$module($base,"UseGem"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$use_gem",(function(gem_name,include_dependencies){return null==include_dependencies&&(include_dependencies=!0),$send(this,"append_paths",$to_a(this.$require_paths_for_gem(gem_name,include_dependencies)))}),-2),self.$private(),$def(self,"$require_paths_for_gem",(function(gem_name,include_dependencies){var gem_dir,paths=nil,spec=nil;return paths=[],spec=$$$($$("Gem"),"Specification").$find_by_name(gem_name),$truthy(spec)||this.$raise($$("GemNotFound"),gem_name),$truthy(include_dependencies)&&$send(spec.$runtime_dependencies(),"each",[],(function $$1(dependency){return null==dependency&&(dependency=nil),paths=$rb_plus(paths,(null==$$1.$$s?this:$$1.$$s).$require_paths_for_gem(dependency.$name(),include_dependencies))}),{$$arity:1,$$s:this}),gem_dir=spec.$gem_dir(),$send(spec.$require_paths(),"map",[],(function(path){return null==path&&(path=nil),paths["$<<"]($$("File").$join(gem_dir,path))}),1),paths}),2)}($nesting[0],$nesting),self.$extend($$("UseGem")),$defs(self,"$paths",(function(){return null==this.paths&&(this.paths=nil),this.paths.$freeze()}),0),$defs(self,"$reset_paths!",(function(){return this.paths=[this.$core_dir(),this.$std_dir(),this.$gem_dir()],nil}),0),self["$reset_paths!"]()}($nesting[0],$nesting)},Opal.modules.set=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$defs=Opal.defs,$hash2=Opal.hash2,$truthy=Opal.truthy,$eqeqeq=Opal.eqeqeq,$Kernel=Opal.Kernel,$send=Opal.send,$def=Opal.def,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_lt=Opal.rb_lt,$rb_le=Opal.rb_le,$alias=Opal.alias,$module=Opal.module;return Opal.add_stubs("include,new,nil?,===,raise,each,add,merge,class,respond_to?,subtract,dup,join,to_a,equal?,instance_of?,==,instance_variable_get,size,is_a?,all?,include?,[]=,-,enum_for,[],<<,replace,delete,select,reject,delete_if,to_proc,keep_if,each_key,empty?,eql?,instance_eval,clear,<,<=,any?,!,intersect?,keys"),function($base,$super){var self=$klass("::",null,"Set");function is_set(set){$truthy(set["$is_a?"]($$$("Set")))||$Kernel.$raise($$$("ArgumentError"),"value must be a set")}self.$$prototype.hash=nil,self.$include($$$("Enumerable")),$defs(self,"$[]",(function($a){var ary,self=this;return ary=Opal.slice.call(arguments),self.$new(ary)}),-1),$def(self,"$initialize",(function $$initialize(enum$){var block=$$initialize.$$p||nil;return delete $$initialize.$$p,null==enum$&&(enum$=nil),this.hash=$hash2([],{}),$truthy(enum$["$nil?"]())?nil:($eqeqeq($$$("Enumerable"),enum$)||$Kernel.$raise($$$("ArgumentError"),"value must be enumerable"),$truthy(block)?$send(enum$,"each",[],(function $$2(item){return null==item&&(item=nil),(null==$$2.$$s?this:$$2.$$s).$add(Opal.yield1(block,item))}),{$$arity:1,$$s:this}):this.$merge(enum$))}),-1),$def(self,"$dup",(function(){return this.$class().$new().$merge(this)}),0),$def(self,"$-",(function(enum$){return $truthy(enum$["$respond_to?"]("each"))||$Kernel.$raise($$$("ArgumentError"),"value must be enumerable"),this.$dup().$subtract(enum$)}),1),$def(self,"$inspect",(function(){return"#"}),0),$def(self,"$==",(function(other){return!!$truthy(this["$equal?"](other))||($truthy(other["$instance_of?"](this.$class()))?this.hash["$=="](other.$instance_variable_get("@hash")):!(!$truthy(other["$is_a?"]($$$("Set")))||!$eqeq(this.$size(),other.$size()))&&$send(other,"all?",[],(function $$5(o){var self=null==$$5.$$s?this:$$5.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash["$include?"](o)}),{$$arity:1,$$s:this}))}),1),$def(self,"$add",(function(o){var $writer;return $writer=[o,!0],$send(this.hash,"[]=",$to_a($writer)),$rb_minus($writer.length,1),this}),1),$def(self,"$classify",(function $$classify(){var block=$$classify.$$p||nil,result=nil;return delete $$classify.$$p,block===nil?this.$enum_for("classify"):(result=$send($$$("Hash"),"new",[],(function $$6(h,k){var $writer;return null==h&&(h=nil),null==k&&(k=nil),$writer=[k,(null==$$6.$$s?this:$$6.$$s).$class().$new()],$send(h,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:2,$$s:this}),$send(this,"each",[],(function(item){return null==item&&(item=nil),result["$[]"](Opal.yield1(block,item)).$add(item)}),1),result)}),0),$def(self,"$collect!",(function $Set_collect$excl$8(){var block=$Set_collect$excl$8.$$p||nil,result=nil;return delete $Set_collect$excl$8.$$p,block===nil?this.$enum_for("collect!"):(result=this.$class().$new(),$send(this,"each",[],(function(item){return null==item&&(item=nil),result["$<<"](Opal.yield1(block,item))}),1),this.$replace(result))}),0),$def(self,"$delete",(function(o){return this.hash.$delete(o),this}),1),$def(self,"$delete?",(function(o){return $truthy(this["$include?"](o))?(this.$delete(o),this):nil}),1),$def(self,"$delete_if",(function $$delete_if(){var $yield=$$delete_if.$$p||nil;return delete $$delete_if.$$p,$yield===nil?this.$enum_for("delete_if"):($send($send(this,"select",[],(function(o){return null==o&&(o=nil),Opal.yield1($yield,o)}),1),"each",[],(function $$13(o){var self=null==$$13.$$s?this:$$13.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash.$delete(o)}),{$$arity:1,$$s:this}),this)}),0),$def(self,"$keep_if",(function $$keep_if(){var $yield=$$keep_if.$$p||nil;return delete $$keep_if.$$p,$yield===nil?this.$enum_for("keep_if"):($send($send(this,"reject",[],(function(o){return null==o&&(o=nil),Opal.yield1($yield,o)}),1),"each",[],(function $$15(o){var self=null==$$15.$$s?this:$$15.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash.$delete(o)}),{$$arity:1,$$s:this}),this)}),0),$def(self,"$reject!",(function $Set_reject$excl$16(){var before,block=$Set_reject$excl$16.$$p||nil;return delete $Set_reject$excl$16.$$p,block===nil?this.$enum_for("reject!"):(before=this.$size(),$send(this,"delete_if",[],block.$to_proc()),$eqeq(this.$size(),before)?nil:this)}),0),$def(self,"$select!",(function $Set_select$excl$17(){var before,block=$Set_select$excl$17.$$p||nil;return delete $Set_select$excl$17.$$p,block===nil?this.$enum_for("select!"):(before=this.$size(),$send(this,"keep_if",[],block.$to_proc()),$eqeq(this.$size(),before)?nil:this)}),0),$def(self,"$add?",(function(o){return $truthy(this["$include?"](o))?nil:this.$add(o)}),1),$def(self,"$each",(function $$each(){var block=$$each.$$p||nil;return delete $$each.$$p,block===nil?this.$enum_for("each"):($send(this.hash,"each_key",[],block.$to_proc()),this)}),0),$def(self,"$empty?",(function(){return this.hash["$empty?"]()}),0),$def(self,"$eql?",(function(other){return this.hash["$eql?"]($send(other,"instance_eval",[],(function $$21(){var self=null==$$21.$$s?this:$$21.$$s;return null==self.hash&&(self.hash=nil),self.hash}),{$$arity:0,$$s:this}))}),1),$def(self,"$clear",(function(){return this.hash.$clear(),this}),0),$def(self,"$include?",(function(o){return this.hash["$include?"](o)}),1),$def(self,"$merge",(function(enum$){return $send(enum$,"each",[],(function $$23(item){return null==item&&(item=nil),(null==$$23.$$s?this:$$23.$$s).$add(item)}),{$$arity:1,$$s:this}),this}),1),$def(self,"$replace",(function(enum$){return this.$clear(),this.$merge(enum$),this}),1),$def(self,"$size",(function(){return this.hash.$size()}),0),$def(self,"$subtract",(function(enum$){return $send(enum$,"each",[],(function $$24(item){return null==item&&(item=nil),(null==$$24.$$s?this:$$24.$$s).$delete(item)}),{$$arity:1,$$s:this}),this}),1),$def(self,"$|",(function(enum$){return $truthy(enum$["$respond_to?"]("each"))||$Kernel.$raise($$$("ArgumentError"),"value must be enumerable"),this.$dup().$merge(enum$)}),1),$def(self,"$superset?",(function(set){return is_set(set),!$truthy($rb_lt(this.$size(),set.$size()))&&$send(set,"all?",[],(function $$27(o){return null==o&&(o=nil),(null==$$27.$$s?this:$$27.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$proper_superset?",(function(set){return is_set(set),!$truthy($rb_le(this.$size(),set.$size()))&&$send(set,"all?",[],(function $$29(o){return null==o&&(o=nil),(null==$$29.$$s?this:$$29.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$subset?",(function(set){return is_set(set),!$truthy($rb_lt(set.$size(),this.$size()))&&$send(this,"all?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1)}),1),$def(self,"$proper_subset?",(function(set){return is_set(set),!$truthy($rb_le(set.$size(),this.$size()))&&$send(this,"all?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1)}),1),$def(self,"$intersect?",(function(set){return is_set(set),$truthy($rb_lt(this.$size(),set.$size()))?$send(this,"any?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1):$send(set,"any?",[],(function $$36(o){return null==o&&(o=nil),(null==$$36.$$s?this:$$36.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$disjoint?",(function(set){return this["$intersect?"](set)["$!"]()}),1),$def(self,"$to_a",(function(){return this.hash.$keys()}),0),$alias(self,"+","|"),$alias(self,"<","proper_subset?"),$alias(self,"<<","add"),$alias(self,"<=","subset?"),$alias(self,">","proper_superset?"),$alias(self,">=","superset?"),$alias(self,"difference","-"),$alias(self,"filter!","select!"),$alias(self,"length","size"),$alias(self,"map!","collect!"),$alias(self,"member?","include?"),$alias(self,"union","|")}(),function($base,$parent_nesting){var self=$module("::","Enumerable"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$to_set",(function $$to_set($a,$b){var $post_args,klass,block=$$to_set.$$p||nil,self=this;return delete $$to_set.$$p,($post_args=Opal.slice.call(arguments)).length>0&&(klass=$post_args.shift()),null==klass&&(klass=$$("Set")),$send(klass,"new",[self].concat($to_a($post_args)),block.$to_proc())}),-1)}(0,[])},Opal.modules["opal/config"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$truthy=Opal.truthy,$hash2=Opal.hash2,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeqeq=Opal.eqeqeq,$lambda=Opal.lambda;return Opal.add_stubs("require,extend,private,fetch,[]=,config_options,-,define_singleton_method,config,any?,===,raise,inspect,public,each,call,default_config,config_option,new"),self.$require("set"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Config"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$extend(self),self.$private(),$def(self,"$config_options",(function(){var $ret_or_1;return null==this.config_options&&(this.config_options=nil),this.config_options=$truthy($ret_or_1=this.config_options)?$ret_or_1:$hash2([],{})}),0),$def(self,"$config_option",(function(name,default_value,options){var compiler,valid_values=nil,$writer=nil;return null==options&&(options=$hash2([],{})),compiler=options.$fetch("compiler_option",nil),valid_values=options.$fetch("valid_values",[!0,!1]),$writer=[name,$hash2(["default","compiler"],{default:default_value,compiler:compiler})],$send(this.$config_options(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$send(this,"define_singleton_method",[name],(function $$1(){return(null==$$1.$$s?this:$$1.$$s).$config().$fetch(name,default_value)}),{$$arity:0,$$s:this}),$send(this,"define_singleton_method",[name+"="],(function $$2(value){var self=null==$$2.$$s?this:$$2.$$s;return null==value&&(value=nil),$truthy($send(valid_values,"any?",[],(function(valid_value){return null==valid_value&&(valid_value=nil),valid_value["$==="](value)}),1))||self.$raise($$("ArgumentError"),"Not a valid value for option "+self+"."+name+", provided "+value.$inspect()+". Must be "+valid_values.$inspect()+" === "+value.$inspect()),$writer=[name,value],$send(self.$config(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this})}),-3),self.$public(),$def(self,"$default_config",(function(){var default_config;return default_config=$hash2([],{}),$send(this.$config_options(),"each",[],(function(name,options){var $writer,default_value=nil;return null==name&&(name=nil),null==options&&(options=nil),default_value=options.$fetch("default"),default_value=$eqeqeq($$("Proc"),default_value)?default_value.$call():default_value,$send(default_config,"[]=",$to_a($writer=[name,default_value])),$writer[$rb_minus($writer.length,1)]}),2),default_config}),0),$def(self,"$compiler_options",(function(){var compiler_options;return compiler_options=$hash2([],{}),$send(this.$config_options(),"each",[],(function $$5(name,options){var $writer,self=null==$$5.$$s?this:$$5.$$s;return null==name&&(name=nil),null==options&&(options=nil),$writer=[options.$fetch("compiler"),self.$config().$fetch(name)],$send(compiler_options,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:2,$$s:this}),compiler_options}),0),$def(self,"$config",(function(){var $ret_or_1;return null==this.config&&(this.config=nil),this.config=$truthy($ret_or_1=this.config)?$ret_or_1:this.$default_config()}),0),$def(self,"$reset!",(function(){return this.config=nil}),0),self.$config_option("method_missing_enabled",!0,$hash2(["compiler_option"],{compiler_option:"method_missing"})),self.$config_option("const_missing_enabled",!0,$hash2(["compiler_option"],{compiler_option:"const_missing"})),self.$config_option("arity_check_enabled",!1,$hash2(["compiler_option"],{compiler_option:"arity_check"})),self.$config_option("freezing_stubs_enabled",!0,$hash2(["compiler_option"],{compiler_option:"freezing"})),self.$config_option("esm",!1,$hash2(["compiler_option"],{compiler_option:"esm"})),self.$config_option("dynamic_require_severity","warning",$hash2(["compiler_option","valid_values"],{compiler_option:"dynamic_require_severity",valid_values:["error","warning","ignore"]})),self.$config_option("missing_require_severity","error",$hash2(["valid_values"],{valid_values:["error","warning","ignore"]})),self.$config_option("irb_enabled",!1,$hash2(["compiler_option"],{compiler_option:"irb"})),self.$config_option("inline_operators_enabled",!0,$hash2(["compiler_option"],{compiler_option:"inline_operators"})),self.$config_option("source_map_enabled",!0),self.$config_option("stubbed_files",$lambda((function(){return $$("Set").$new()}),0),$hash2(["valid_values"],{valid_values:[$$("Set")]}))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/cache"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$truthy=Opal.truthy,$not=Opal.not,$eqeq=Opal.eqeq,$defs=Opal.defs,$klass=Opal.klass,$def=Opal.def,$send=Opal.send,$rb_plus=Opal.rb_plus,$gvars=Opal.gvars,$range=Opal.range;return Opal.add_stubs("require,attr_writer,singleton_class,!,find_dir,[],==,new,module_function,respond_to?,fetch,to_proc,+,digest,join,runtime_key,get,set,expand_path,gem_dir,grep,map,sort,size,to_f,mtime,to_s,to_i,hexdigest"),self.$require("opal/paths"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$singleton_class().$attr_writer("cache"),$defs(self,"$cache",(function(){var $ret_or_1;return null==this.cache&&(this.cache=nil),this.cache=$truthy($ret_or_1=this.cache)?$ret_or_1:$eqeq($$("RUBY_ENGINE"),"opal")||$truthy($$("ENV")["$[]"]("OPAL_CACHE_DISABLE"))||$not($$$($$("Cache"),"FileCache").$find_dir())?$$$($$("Cache"),"NullCache").$new():$$$($$("Cache"),"FileCache").$new()}),0),function($base,$parent_nesting){var self=$module($base,"Cache"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,null,"NullCache");$def(self,"$fetch",(function $$fetch($a){var $yield=$$fetch.$$p||nil;return delete $$fetch.$$p,Opal.slice.call(arguments),Opal.yieldX($yield,[])}),-1)}($nesting[0]),self.$module_function(),$def(self,"$fetch",(function $$fetch(cache,key){var data,$ret_or_1,block=$$fetch.$$p||nil,compiler=nil;return delete $$fetch.$$p,$truthy(cache["$respond_to?"]("fetch"))?$send(cache,"fetch",[key],block.$to_proc()):(key=$rb_plus($rb_plus(this.$digest(key.$join("/")),"-"),this.$runtime_key()),data=cache.$get(key),$truthy($ret_or_1=data)?$ret_or_1:(compiler=Opal.yieldX(block,[]),cache.$set(key,compiler),compiler))}),2),$def(self,"$runtime_key",(function(){var $ret_or_1,opal_path=nil,files=nil;return null==this.runtime_key&&(this.runtime_key=nil),null==$gvars.LOADED_FEATURES&&($gvars.LOADED_FEATURES=nil),this.runtime_key=$truthy($ret_or_1=this.runtime_key)?$ret_or_1:(opal_path=$$("File").$expand_path("..",$$("Opal").$gem_dir()),files=$$("Dir")["$[]"](opal_path+"/{Gemfile*,*.gemspec,lib/**/*}"),files=$rb_plus(files,$gvars.LOADED_FEATURES.$grep(/lib\/(parser|ast)/)),this.$digest([$send(files.$sort(),"map",[],(function(f){return null==f&&(f=nil),f+":"+$$("File").$size(f)+":"+$$("File").$mtime(f).$to_f()}),1),$$("RUBY_VERSION"),$$("RUBY_PATCHLEVEL")].$join("/")))}),0),$def(self,"$digest",(function(string){return $$$($$$("Digest"),"SHA256").$hexdigest(string)["$[]"]($range(-32,-1,!1)).$to_i(16).$to_s(36)}),1)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/builder"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$defs=Opal.defs,$send=Opal.send,$hash2=Opal.hash2,$Opal=Opal.Opal,$def=Opal.def,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$send2=Opal.send2,$find_super=Opal.find_super,$not=Opal.not,$lambda=Opal.lambda,$eqeqeq=Opal.eqeqeq;return Opal.add_stubs("require,include?,processors,<<,each,extensions,each_pair,public_send,new,paths,flatten,map,compiler_options,missing_require_severity,cache,build,to_proc,build_str,source_for,read,nil?,expand_path,expand_ext,processor_for,+,preload,requires,tree_requires,process_require,autoloads,processed,raise,inspect,message,backtrace,dup,stubs,path_reader,prerequired,to_sym,join,append_paths,include,attr_reader,attr_accessor,private,empty?,to_s,pwd,dirname,Pathname,flat_map,required_trees,find,start_with?,glob,relative_path_from,match?,!,merge,[],===,warn,already_processed,stub?,process_requires,expand,basename"),self.$require("opal/path_reader"),self.$require("opal/paths"),self.$require("opal/config"),self.$require("opal/cache"),self.$require("set"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Builder"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.stubs=$proto.preload=$proto.processors=$proto.path_reader=$proto.prerequired=$proto.compiler_options=$proto.missing_require_severity=$proto.cache=$proto.already_processed=nil,$defs(self,"$processors",(function(){var $ret_or_1;return null==this.processors&&(this.processors=nil),this.processors=$truthy($ret_or_1=this.processors)?$ret_or_1:[]}),0),$defs(self,"$extensions",(function(){var $ret_or_1;return null==this.extensions&&(this.extensions=nil),this.extensions=$truthy($ret_or_1=this.extensions)?$ret_or_1:[]}),0),$defs(self,"$register_processor",(function(processor,processor_extensions){return $truthy(this.$processors()["$include?"](processor))?nil:(this.$processors()["$<<"](processor),$send(processor_extensions,"each",[],(function $$1(ext){return null==ext&&(ext=nil),(null==$$1.$$s?this:$$1.$$s).$extensions()["$<<"](ext)}),{$$arity:1,$$s:this}))}),2),$klass($nesting[0],$$("LoadError"),"MissingRequire"),$klass($nesting[0],$$("LoadError"),"ProcessorNotFound"),$def(self,"$initialize",(function(options){var $ret_or_1=nil;return null==options&&(options=nil),$send($truthy($ret_or_1=options)?$ret_or_1:$hash2([],{}),"each_pair",[],(function $$2(k,v){return null==k&&(k=nil),null==v&&(v=nil),(null==$$2.$$s?this:$$2.$$s).$public_send(k+"=",v)}),{$$arity:2,$$s:this}),this.stubs=$truthy($ret_or_1=this.stubs)?$ret_or_1:[],this.preload=$truthy($ret_or_1=this.preload)?$ret_or_1:[],this.processors=$truthy($ret_or_1=this.processors)?$ret_or_1:$$$($Opal,"Builder").$processors(),this.path_reader=$truthy($ret_or_1=this.path_reader)?$ret_or_1:$$("PathReader").$new($$("Opal").$paths(),$send(this.$extensions(),"map",[],(function(e){return null==e&&(e=nil),["."+e,".js."+e]}),1).$flatten()),this.prerequired=$truthy($ret_or_1=this.prerequired)?$ret_or_1:[],this.compiler_options=$truthy($ret_or_1=this.compiler_options)?$ret_or_1:$$$($$("Opal"),"Config").$compiler_options(),this.missing_require_severity=$truthy($ret_or_1=this.missing_require_severity)?$ret_or_1:$$$($$("Opal"),"Config").$missing_require_severity(),this.cache=$truthy($ret_or_1=this.cache)?$ret_or_1:$$("Opal").$cache(),this.processed=[]}),-1),$defs(self,"$build",(function $$build($a){var args,block=$$build.$$p||nil,self=this;return delete $$build.$$p,args=Opal.slice.call(arguments),$send(self.$new(),"build",$to_a(args),block.$to_proc())}),-1),$def(self,"$build",(function(path,options){return null==options&&(options=$hash2([],{})),this.$build_str(this.$source_for(path),path,options)}),-2),$def(self,"$source_for",(function(path){return this.$read(path,!1)}),1),$def(self,"$build_str",(function(source,rel_path,options){var abs_path=nil,asset=nil,requires=nil,error=nil;null==options&&(options=$hash2([],{}));try{return $truthy(source["$nil?"]())?nil:(abs_path=this.$expand_path(rel_path),rel_path=this.$expand_ext(rel_path),asset=this.$processor_for(source,rel_path,abs_path,!1,options),requires=$rb_plus($rb_plus(this.$preload(),asset.$requires()),this.$tree_requires(asset,abs_path)),$send(requires,"map",[],(function $$4(r){return null==r&&(r=nil),(null==$$4.$$s?this:$$4.$$s).$process_require(r,asset.$autoloads(),options)}),{$$arity:1,$$s:this}),this.$processed()["$<<"](asset),this)}catch($err){if(!Opal.rescue($err,[$$("MissingRequire")]))throw $err;error=$err;try{return this.$raise(error,"A file required by "+rel_path.$inspect()+" wasn't found.\n"+error.$message(),error.$backtrace())}finally{Opal.pop_exception()}}}),-3),$def(self,"$build_require",(function(path,options){return null==options&&(options=$hash2([],{})),this.$process_require(path,[],options)}),-2),$def(self,"$initialize_copy",(function $$initialize_copy(other){var $yield=$$initialize_copy.$$p||nil;return delete $$initialize_copy.$$p,$send2(this,$find_super(this,"initialize_copy",$$initialize_copy,!1,!0),"initialize_copy",[other],$yield),this.stubs=other.$stubs().$dup(),this.preload=other.$preload().$dup(),this.processors=other.$processors().$dup(),this.path_reader=other.$path_reader().$dup(),this.prerequired=other.$prerequired().$dup(),this.compiler_options=other.$compiler_options().$dup(),this.missing_require_severity=other.$missing_require_severity().$to_sym(),this.processed=other.$processed().$dup()}),1),$def(self,"$to_s",(function(){return $send(this.$processed(),"map",[],"to_s".$to_proc()).$join("\n")}),0),$def(self,"$source_map",(function(){return $$$($$$($Opal,"SourceMap"),"Index").$new($send(this.$processed(),"map",[],"source_map".$to_proc()),$hash2(["join"],{join:"\n"}))}),0),$def(self,"$append_paths",(function($a){var paths,self=this;return paths=Opal.slice.call(arguments),$send(self.$path_reader(),"append_paths",$to_a(paths))}),-1),self.$include($$("UseGem")),self.$attr_reader("processed"),self.$attr_accessor("processors","path_reader","stubs","prerequired","preload","compiler_options","missing_require_severity","cache"),self.$private(),$def(self,"$tree_requires",(function(asset,asset_path){var abs_base_paths,dirname=nil;return dirname=$truthy(asset_path.$to_s()["$empty?"]())?$$("Pathname").$pwd():this.$Pathname(asset_path).$expand_path().$dirname(),abs_base_paths=$send(this.$path_reader().$paths(),"map",[],(function(p){return null==p&&(p=nil),$$("File").$expand_path(p)}),1),$send(asset.$required_trees(),"flat_map",[],(function $$6(tree){var self=null==$$6.$$s?this:$$6.$$s,abs_tree_path=nil,abs_base_path=nil,entries_glob=nil;return null==tree&&(tree=nil),abs_tree_path=dirname.$join(tree).$expand_path().$to_s(),abs_base_path=$send(abs_base_paths,"find",[],(function(p){return null==p&&(p=nil),abs_tree_path["$start_with?"](p)}),1),$truthy(abs_base_path)?(abs_base_path=self.$Pathname(abs_base_path),entries_glob=self.$Pathname(abs_tree_path).$join("**","*{.js,}.{"+self.$extensions().$join(",")+"}"),$send($$("Pathname").$glob(entries_glob),"map",[],(function(file){return null==file&&(file=nil),file.$relative_path_from(abs_base_path).$to_s()}),1)):[]}),{$$arity:1,$$s:this})}),2),$def(self,"$processor_for",(function(source,rel_path,abs_path,autoload,options){var processor=nil;return processor=$send(this.$processors(),"find",[],(function(p){return null==p&&(p=nil),p["$match?"](abs_path)}),1),$not(processor)&&$not(autoload)&&this.$raise($$("ProcessorNotFound"),"can't find processor for rel_path: "+rel_path.$inspect()+", abs_path: "+abs_path.$inspect()+", source: "+source.$inspect()+", processors: "+this.$processors().$inspect()),options=options.$merge($hash2(["cache"],{cache:this.$cache()})),processor.$new(source,rel_path,this.compiler_options.$merge(options))}),5),$def(self,"$read",(function(path,autoload){var $ret_or_1,print_list=nil,message=nil,$ret_or_2=nil;return $truthy($ret_or_1=this.$path_reader().$read(path))?$ret_or_1:(print_list=$lambda((function(list){return null==list&&(list=nil),"- "+list.$join("\n- ")+"\n"}),1),message=$rb_plus($rb_plus($rb_plus($rb_plus($rb_plus("can't find file: "+path.$inspect()+" in:\n",print_list["$[]"](this.$path_reader().$paths())),"\nWith the following extensions:\n"),print_list["$[]"](this.$path_reader().$extensions())),"\nAnd the following processors:\n"),print_list["$[]"](this.$processors())),$truthy(autoload)||($eqeqeq("error",$ret_or_2=this.$missing_require_severity())?this.$raise($$("MissingRequire"),message):$eqeqeq("warning",$ret_or_2)?this.$warn(message):$eqeqeq("ignore",$ret_or_2)),nil)}),2),$def(self,"$process_require",(function(rel_path,autoloads,options){var autoload,abs_path,source=nil,asset=nil;return $truthy(this.$prerequired()["$include?"](rel_path))||$truthy(this.$already_processed()["$include?"](rel_path))?nil:(this.$already_processed()["$<<"](rel_path),autoload=autoloads["$include?"](rel_path),source=$truthy(this["$stub?"](rel_path))?"":this.$read(rel_path,autoload),$truthy(source["$nil?"]())?nil:(abs_path=this.$expand_path(rel_path),rel_path=this.$expand_ext(rel_path),asset=this.$processor_for(source,rel_path,abs_path,autoload,options.$merge($hash2(["requirable"],{requirable:!0}))),this.$process_requires(rel_path,$rb_plus(asset.$requires(),this.$tree_requires(asset,abs_path)),asset.$autoloads(),options),this.$processed()["$<<"](asset)))}),3),$def(self,"$expand_ext",(function(path){var abs_path;return abs_path=this.$path_reader().$expand(path),$truthy(abs_path)?$$("File").$join($$("File").$dirname(path),$$("File").$basename(abs_path)):path}),1),$def(self,"$expand_path",(function(path){var $ret_or_1;return $truthy(this["$stub?"](path))?nil:($truthy($ret_or_1=this.$path_reader().$expand(path))?$ret_or_1:$$("File").$expand_path(path)).$to_s()}),1),$def(self,"$process_requires",(function(rel_path,requires,autoloads,options){var error=nil;try{return $send(requires,"map",[],(function $$11(r){return null==r&&(r=nil),(null==$$11.$$s?this:$$11.$$s).$process_require(r,autoloads,options)}),{$$arity:1,$$s:this})}catch($err){if(!Opal.rescue($err,[$$("MissingRequire")]))throw $err;error=$err;try{return this.$raise(error,"A file required by "+rel_path.$inspect()+" wasn't found.\n"+error.$message(),error.$backtrace())}finally{Opal.pop_exception()}}}),4),$def(self,"$already_processed",(function(){var $ret_or_1;return this.already_processed=$truthy($ret_or_1=this.already_processed)?$ret_or_1:$$("Set").$new()}),0),$def(self,"$stub?",(function(path){return this.$stubs()["$include?"](path)}),1),$def(self,"$extensions",(function(){return $$$($Opal,"Builder").$extensions()}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/node"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$alias=Opal.alias,$hash2=Opal.hash2,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$rb_times=Opal.rb_times,$to_a=Opal.to_a;return Opal.add_stubs("attr_reader,to_sym,freeze,to_a,assign_properties,hash,class,eql?,type,children,each,instance_variable_set,protected,private,nil?,==,original_dup,send,equal?,respond_to?,to_ast,updated,+,*,fancy_type,is_a?,to_sexp,inspect,map,to_sexp_array,gsub,to_s"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Node"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.type=$proto.children=nil,self.$attr_reader("type"),self.$attr_reader("children"),$alias(self,"to_a","children"),self.$attr_reader("hash"),$def(self,"$initialize",(function(type,children,properties){var $a;return null==children&&(children=[]),null==properties&&(properties=$hash2([],{})),$a=[type.$to_sym(),children.$to_a().$freeze()],this.type=$a[0],this.children=$a[1],this.$assign_properties(properties),this.hash=[this.type,this.children,this.$class()].$hash(),this.$freeze()}),-2),$def(self,"$eql?",(function(other){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.$class()["$eql?"](other.$class()))?this.type["$eql?"](other.$type()):$ret_or_2)?this.children["$eql?"](other.$children()):$ret_or_1}),1),$def(self,"$assign_properties",(function(properties){return $send(properties,"each",[],(function $$2(name,value){return null==name&&(name=nil),null==value&&(value=nil),(null==$$2.$$s?this:$$2.$$s).$instance_variable_set("@"+name,value)}),{$$arity:2,$$s:this}),nil}),1),self.$protected("assign_properties"),$alias(self,"original_dup","dup"),self.$private("original_dup"),$def(self,"$dup",(function(){return this}),0),$alias(self,"clone","dup"),$def(self,"$updated",(function(type,children,properties){var new_type,new_children,new_properties,$ret_or_1=nil,copy=nil;return null==type&&(type=nil),null==children&&(children=nil),null==properties&&(properties=nil),new_type=$truthy($ret_or_1=type)?$ret_or_1:this.type,new_children=$truthy($ret_or_1=children)?$ret_or_1:this.children,new_properties=$truthy($ret_or_1=properties)?$ret_or_1:$hash2([],{}),$eqeq(this.type,new_type)&&$eqeq(this.children,new_children)&&$truthy(properties["$nil?"]())?this:((copy=this.$original_dup()).$send("initialize",new_type,new_children,new_properties),copy)}),-1),$def(self,"$==",(function(other){var $ret_or_1=nil;return!!$truthy(this["$equal?"](other))||!!$truthy(other["$respond_to?"]("to_ast"))&&(other=other.$to_ast(),$truthy($ret_or_1=other.$type()["$=="](this.$type()))?other.$children()["$=="](this.$children()):$ret_or_1)}),1),$def(self,"$concat",(function(array){return this.$updated(nil,$rb_plus(this.children,array.$to_a()))}),1),$alias(self,"+","concat"),$def(self,"$append",(function(element){return this.$updated(nil,$rb_plus(this.children,[element]))}),1),$alias(self,"<<","append"),$def(self,"$to_sexp",(function(indent){var indented,sexp=nil;return null==indent&&(indent=0),indented=$rb_times(" ",indent),sexp=indented+"("+this.$fancy_type(),$send(this.$children(),"each",[],(function(child){return null==child&&(child=nil),sexp=$truthy(child["$is_a?"]($$("Node")))?$rb_plus(sexp,"\n"+child.$to_sexp($rb_plus(indent,1))):$rb_plus(sexp," "+child.$inspect())}),1),sexp=$rb_plus(sexp,")")}),-1),$alias(self,"to_s","to_sexp"),$def(self,"$inspect",(function(indent){var indented,sexp=nil;return null==indent&&(indent=0),indented=$rb_times(" ",indent),sexp=indented+"s(:"+this.type,$send(this.$children(),"each",[],(function(child){return null==child&&(child=nil),sexp=$truthy(child["$is_a?"]($$("Node")))?$rb_plus(sexp,",\n"+child.$inspect($rb_plus(indent,1))):$rb_plus(sexp,", "+child.$inspect())}),1),sexp=$rb_plus(sexp,")")}),-1),$def(self,"$to_ast",(function(){return this}),0),$def(self,"$to_sexp_array",(function(){var children_sexp_arrs;return children_sexp_arrs=$send(this.$children(),"map",[],(function(child){return null==child&&(child=nil),$truthy(child["$is_a?"]($$("Node")))?child.$to_sexp_array():child}),1),[this.$type()].concat($to_a(children_sexp_arrs))}),0),$def(self,"$deconstruct",(function(){return[this.$type()].concat($to_a(this.$children()))}),0),self.$protected(),$def(self,"$fancy_type",(function(){return this.type.$to_s().$gsub("_","-")}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/processor/mixin"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("nil?,to_ast,type,respond_to?,send,handler_missing,map,to_a,process"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){return function($base){var self=$module($base,"Mixin");return $def(self,"$process",(function(node){var on_handler,new_node=nil;return $truthy(node["$nil?"]())?nil:(on_handler="on_"+(node=node.$to_ast()).$type(),new_node=$truthy(this["$respond_to?"](on_handler))?this.$send(on_handler,node):this.$handler_missing(node),$truthy(new_node)&&(node=new_node),node)}),1),$def(self,"$process_all",(function(nodes){return $send(nodes.$to_a(),"map",[],(function $$1(node){return null==node&&(node=nil),(null==$$1.$$s?this:$$1.$$s).$process(node)}),{$$arity:1,$$s:this})}),1),$def(self,"$handler_missing",(function(node){return nil}),1)}([$klass($base,null,"Processor")].concat($parent_nesting)[0])}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/processor"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass;return Opal.add_stubs("require,include"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Processor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$require("ast/processor/mixin"),self.$include($$("Mixin"))}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/sexp"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$def=Opal.def;return Opal.add_stubs("new"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Sexp"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$s",(function(type,$a){var children;return children=Opal.slice.call(arguments,1),$$("Node").$new(type,children)}),-2)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules.ast=function(Opal){Opal.nil;var self,$module=Opal.module;return Opal.add_stubs("require"),(self=$module([][0],"AST")).$require("ast/node"),self.$require("ast/processor"),self.$require("ast/sexp")},Opal.modules["parser/ast/node"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$alias=Opal.alias,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def;return Opal.add_stubs("attr_reader,[],frozen?,dup,node=,-"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,$super,"Node");return self.$attr_reader("location"),$alias(self,"loc","location"),$def(self,"$assign_properties",(function(properties){var location=nil,$writer=nil;return $truthy(location=properties["$[]"]("location"))?($truthy(location["$frozen?"]())&&(location=location.$dup()),$send(location,"node=",$to_a($writer=[this])),$writer[$rb_minus($writer.length,1)],this.location=location):nil}),1)}([$module($base,"AST")].concat($parent_nesting)[0],$$$($$$("AST"),"Node"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/ast/node"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("require,attr_reader,[],frozen?,dup,merge!,loc,line,column"),self.$require("ast"),self.$require("parser/ast/node"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,$super,"Node");return self.$$prototype.meta=nil,self.$attr_reader("meta"),$def(self,"$assign_properties",(function $$assign_properties(properties){var $yield=$$assign_properties.$$p||nil,meta=nil,$ret_or_1=nil;return delete $$assign_properties.$$p,$truthy(meta=properties["$[]"]("meta"))?($truthy(meta["$frozen?"]())&&(meta=meta.$dup()),this.meta["$merge!"](meta)):this.meta=$truthy($ret_or_1=this.meta)?$ret_or_1:$hash2([],{}),$send2(this,$find_super(this,"assign_properties",$$assign_properties,!1,!0),"assign_properties",[properties],$yield)}),1),$def(self,"$line",(function(){return $truthy(this.$loc())?this.$loc().$line():nil}),0),$def(self,"$column",(function(){return $truthy(this.$loc())?this.$loc().$column():nil}),0)}([$module($base,"AST")].concat($parent_nesting)[0],$$$($$$($$$("Parser"),"AST"),"Node"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["racc/parser"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$const_set=Opal.const_set,$defs=Opal.defs,$gvars=Opal.gvars,$rb_lt=Opal.rb_lt,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$to_ary=Opal.to_ary,$neqeq=Opal.neqeq,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$rb_ge=Opal.rb_ge,$rb_gt=Opal.rb_gt,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_times=Opal.rb_times;return Opal.add_stubs("[],class,<,size,[]=,-,__send__,_racc_setup,raise,_racc_init_sysvars,catch,!=,next_token,racc_read_token,+,==,>=,_racc_evalact,!,>,push,racc_shift,-@,_racc_do_reduce,===,racc_accept,throw,on_error,<=,pop,racc_e_pop,inspect,racc_next_state,*,racc_reduce,sprintf,token_to_str,print,racc_token2str,puts,racc_print_stacks,empty?,each,racc_print_states,each_index"),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);$klass($nesting[0],$$("StandardError"),"ParseError")}($nesting[0],$nesting),$truthy($$$("::","ParseError","skip_raise")?"constant":nil)||$const_set($nesting[0],"ParseError",$$$($$("Racc"),"ParseError")),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);return $truthy($$("Racc_No_Extensions","skip_raise")?"constant":nil)||$const_set($nesting[0],"Racc_No_Extensions",!1),function($base,$super,$parent_nesting){var self=$klass($base,null,"Parser"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.yydebug=$proto.racc_debug_out=$proto.racc_error_status=$proto.racc_t=$proto.racc_vstack=$proto.racc_val=$proto.racc_state=$proto.racc_tstack=nil,$const_set($nesting[0],"Racc_Runtime_Version","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Revision",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Runtime_Core_Version_R","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Core_Revision_R",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Main_Parsing_Routine","_racc_do_parse_rb"),$const_set($nesting[0],"Racc_YY_Parse_Method","_racc_yyparse_rb"),$const_set($nesting[0],"Racc_Runtime_Core_Version",$$("Racc_Runtime_Core_Version_R")),$const_set($nesting[0],"Racc_Runtime_Core_Revision",$$("Racc_Runtime_Core_Revision_R")),$const_set($nesting[0],"Racc_Runtime_Type","ruby"),$defs($$("Parser"),"$racc_runtime_type",(function(){return $$("Racc_Runtime_Type")}),0),$def(self,"$_racc_setup",(function(){var $a,$b,$ret_or_1=nil,arg=nil,$writer=nil;return null==$gvars.stderr&&($gvars.stderr=nil),$truthy($$$(this.$class(),"Racc_debug_parser"))||(this.yydebug=!1),$truthy(null!=($a=this.yydebug)&&$a!==nil?"instance-variable":nil)||(this.yydebug=!1),$truthy(this.yydebug)&&($truthy(null!=($b=this.racc_debug_out)&&$b!==nil?"instance-variable":nil)||(this.racc_debug_out=$gvars.stderr),this.racc_debug_out=$truthy($ret_or_1=this.racc_debug_out)?$ret_or_1:$gvars.stderr),arg=$$$(this.$class(),"Racc_arg"),$truthy($rb_lt(arg.$size(),14))&&($send(arg,"[]=",$to_a($writer=[13,!0])),$writer[$rb_minus($writer.length,1)]),arg}),0),$def(self,"$_racc_init_sysvars",(function(){return this.racc_state=[0],this.racc_tstack=[],this.racc_vstack=[],this.racc_t=nil,this.racc_val=nil,this.racc_read_next=!0,this.racc_user_yyerror=!1,this.racc_error_status=0}),0),$def(self,"$do_parse",(function(){return this.$__send__($$("Racc_Main_Parsing_Routine"),this.$_racc_setup(),!1)}),0),$def(self,"$next_token",(function(){return this.$raise($$("NotImplementedError"),this.$class()+"#next_token is not defined")}),0),$def(self,"$_racc_do_parse_rb",(function(arg,in_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,tok=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),tok=act=i=nil,$send(this,"catch",["racc_end_parse"],(function $$1(){var $d,$e,self=null==$$1.$$s?this:$$1.$$s,$ret_or_1=nil;for(null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==self.racc_t&&(self.racc_t=nil),null==self.yydebug&&(self.yydebug=nil),null==self.racc_val&&(self.racc_val=nil);$truthy(!0);)for($truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))?($truthy(self.racc_read_next)&&$neqeq(self.racc_t,0)&&($e=self.$next_token(),$d=$to_ary($e),tok=null==$d[0]?nil:$d[0],self.racc_val=null==$d[1]?nil:$d[1],$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,$truthy(self.yydebug)&&self.$racc_read_token(self.racc_t,tok,self.racc_val),self.racc_read_next=!1),i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)))):act=action_default["$[]"](self.racc_state["$[]"](-1));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:0,$$s:this})}),2),$def(self,"$yyparse",(function(recv,mid){return this.$__send__($$("Racc_YY_Parse_Method"),recv,mid,this.$_racc_setup(),!0)}),2),$def(self,"$_racc_yyparse_rb",(function(recv,mid,arg,c_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),act=nil,i=nil,$send(this,"catch",["racc_end_parse"],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;for(null==self.racc_state&&(self.racc_state=nil);!$truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)));)for(;$truthy(act=self.$_racc_evalact(action_default["$[]"](self.racc_state["$[]"](-1)),arg)););return $send(recv,"__send__",[mid],(function $$3(tok,val){var self=null==$$3.$$s?this:$$3.$$s,$ret_or_1=nil,$ret_or_2=nil;for(null==self.racc_t&&(self.racc_t=nil),null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==tok&&(tok=nil),null==val&&(val=nil),$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,self.racc_val=val,self.racc_read_next=!1,i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););for(;$truthy($truthy($ret_or_1=$truthy($ret_or_2=(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))["$!"]())?$ret_or_2:self.racc_read_next["$!"]())?$ret_or_1:self.racc_t["$=="](0));)for($truthy(i)&&$truthy(i=$rb_plus(i,self.racc_t))&&$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:2,$$s:self})}),{$$arity:0,$$s:this})}),4),$def(self,"$_racc_evalact",(function(act,arg){var $a,shift_n,action_table=nil,action_check=nil,action_pointer=nil,reduce_n=nil,code=nil,$ret_or_1=nil,i=nil;if(action_table=null==($a=$to_ary(arg))[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],shift_n=null==$a[11]?nil:$a[11],reduce_n=null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],null==$a[14]?nil:$a[14],$truthy($rb_gt(act,0))&&$truthy($rb_lt(act,shift_n)))$truthy($rb_gt(this.racc_error_status,0))&&($eqeq(this.racc_t,1)||(this.racc_error_status=$rb_minus(this.racc_error_status,1))),this.racc_vstack.$push(this.racc_val),this.racc_state.$push(act),this.racc_read_next=!0,$truthy(this.yydebug)&&(this.racc_tstack.$push(this.racc_t),this.$racc_shift(this.racc_t,this.racc_tstack,this.racc_vstack));else if($truthy($rb_lt(act,0))&&$truthy($rb_gt(act,reduce_n["$-@"]()))){if(code=$send(this,"catch",["racc_jump"],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s;return null==self.racc_state&&(self.racc_state=nil),self.racc_state.$push(self.$_racc_do_reduce(arg,act)),!1}),{$$arity:0,$$s:this}),$truthy(code)){if($eqeqeq(1,$ret_or_1=code))return this.racc_user_yyerror=!0,reduce_n["$-@"]();if($eqeqeq(2,$ret_or_1))return shift_n;this.$raise("[Racc Bug] unknown jump code")}}else if($eqeq(act,shift_n))$truthy(this.yydebug)&&this.$racc_accept(),this.$throw("racc_end_parse",this.racc_vstack["$[]"](0));else{if($eqeq(act,reduce_n["$-@"]())){for($eqeqeq(0,$ret_or_1=this.racc_error_status)?$truthy(arg["$[]"](21))||this.$on_error(this.racc_t,this.racc_val,this.racc_vstack):$eqeqeq(3,$ret_or_1)&&($eqeq(this.racc_t,0)&&this.$throw("racc_end_parse",nil),this.racc_read_next=!0),this.racc_user_yyerror=!1,this.racc_error_status=3;$truthy(!0)&&!($truthy(i=action_pointer["$[]"](this.racc_state["$[]"](-1)))&&(i=$rb_plus(i,1),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),this.racc_state["$[]"](-1))));)$truthy($rb_le(this.racc_state.$size(),1))&&this.$throw("racc_end_parse",nil),this.racc_state.$pop(),this.racc_vstack.$pop(),$truthy(this.yydebug)&&(this.racc_tstack.$pop(),this.$racc_e_pop(this.racc_state,this.racc_tstack,this.racc_vstack));return act}this.$raise("[Racc Bug] unknown action "+act.$inspect())}return $truthy(this.yydebug)&&this.$racc_next_state(this.racc_state["$[]"](-1),this.racc_state),nil}),2),$def(self,"$_racc_do_reduce",(function(arg,act){var $a,nt_base,use_result,reduce_to,method_id,void_array,k1,goto_table=nil,goto_check=nil,goto_default=nil,goto_pointer=nil,reduce_table=nil,state=nil,vstack=nil,tstack=nil,i=nil,len=nil,tmp_t=nil,tmp_v=nil,$writer=nil,curstate=nil;return null==($a=$to_ary(arg))[0]?nil:$a[0],null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],null==$a[3]?nil:$a[3],goto_table=null==$a[4]?nil:$a[4],goto_check=null==$a[5]?nil:$a[5],goto_default=null==$a[6]?nil:$a[6],goto_pointer=null==$a[7]?nil:$a[7],nt_base=null==$a[8]?nil:$a[8],reduce_table=null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],use_result=null==$a[13]?nil:$a[13],state=this.racc_state,vstack=this.racc_vstack,tstack=this.racc_tstack,i=$rb_times(act,-3),len=reduce_table["$[]"](i),reduce_to=reduce_table["$[]"]($rb_plus(i,1)),method_id=reduce_table["$[]"]($rb_plus(i,2)),void_array=[],$truthy(this.yydebug)&&(tmp_t=tstack["$[]"](len["$-@"](),len)),tmp_v=vstack["$[]"](len["$-@"](),len),$truthy(this.yydebug)&&($writer=[len["$-@"](),len,void_array],$send(tstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=[len["$-@"](),len,void_array],$send(vstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[len["$-@"](),len,void_array],$send(state,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(use_result)?vstack.$push(this.$__send__(method_id,tmp_v,vstack,tmp_v["$[]"](0))):vstack.$push(this.$__send__(method_id,tmp_v,vstack)),tstack.$push(reduce_to),$truthy(this.yydebug)&&this.$racc_reduce(tmp_t,reduce_to,tstack,vstack),k1=$rb_minus(reduce_to,nt_base),$truthy(i=goto_pointer["$[]"](k1))&&(i=$rb_plus(i,state["$[]"](-1)),$truthy($rb_ge(i,0))&&$truthy(curstate=goto_table["$[]"](i))&&$eqeq(goto_check["$[]"](i),k1))?curstate:goto_default["$[]"](k1)}),2),$def(self,"$on_error",(function(t,val,vstack){var $ret_or_1;return this.$raise($$("ParseError"),this.$sprintf("\nparse error on value %s (%s)",val.$inspect(),$truthy($ret_or_1=this.$token_to_str(t))?$ret_or_1:"?"))}),3),$def(self,"$yyerror",(function(){return this.$throw("racc_jump",1)}),0),$def(self,"$yyaccept",(function(){return this.$throw("racc_jump",2)}),0),$def(self,"$yyerrok",(function(){return this.racc_error_status=0}),0),$def(self,"$racc_read_token",(function(t,tok,val){return this.racc_debug_out.$print("read "),this.racc_debug_out.$print(tok.$inspect(),"(",this.$racc_token2str(t),") "),this.racc_debug_out.$puts(val.$inspect()),this.racc_debug_out.$puts()}),3),$def(self,"$racc_shift",(function(tok,tstack,vstack){return this.racc_debug_out.$puts("shift "+this.$racc_token2str(tok)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_reduce",(function(toks,sim,tstack,vstack){var out=nil;return(out=this.racc_debug_out).$print("reduce "),$truthy(toks["$empty?"]())?out.$print(" "):$send(toks,"each",[],(function $$5(t){var self=null==$$5.$$s?this:$$5.$$s;return null==t&&(t=nil),out.$print(" ",self.$racc_token2str(t))}),{$$arity:1,$$s:this}),out.$puts(" --\x3e "+this.$racc_token2str(sim)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),4),$def(self,"$racc_accept",(function(){return this.racc_debug_out.$puts("accept"),this.racc_debug_out.$puts()}),0),$def(self,"$racc_e_pop",(function(state,tstack,vstack){return this.racc_debug_out.$puts("error recovering mode: pop token"),this.$racc_print_states(state),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_next_state",(function(curstate,state){return this.racc_debug_out.$puts("goto "+curstate),this.$racc_print_states(state),this.racc_debug_out.$puts()}),2),$def(self,"$racc_print_stacks",(function(t,v){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(t,"each_index",[],(function $$6(i){var self=null==$$6.$$s?this:$$6.$$s;return null==i&&(i=nil),out.$print(" (",self.$racc_token2str(t["$[]"](i))," ",v["$[]"](i).$inspect(),")")}),{$$arity:1,$$s:this}),out.$puts(" ]")}),2),$def(self,"$racc_print_states",(function(s){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(s,"each",[],(function(st){return null==st&&(st=nil),out.$print(" ",st)}),1),out.$puts(" ]")}),1),$def(self,"$racc_token2str",(function(tok){var $ret_or_1;return $truthy($ret_or_1=$$$(this.$class(),"Racc_token_to_s_table")["$[]"](tok))?$ret_or_1:this.$raise("[Racc Bug] can't convert token "+tok+" to string")}),1),$def(self,"$token_to_str",(function(t){return $$$(this.$class(),"Racc_token_to_s_table")["$[]"](t)}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/version"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set;return function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return $const_set($nesting[0],"VERSION","3.0.3.2")}($nesting[0],$nesting)},Opal.modules["racc/parser"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$const_set=Opal.const_set,$defs=Opal.defs,$gvars=Opal.gvars,$rb_lt=Opal.rb_lt,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$to_ary=Opal.to_ary,$neqeq=Opal.neqeq,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$rb_ge=Opal.rb_ge,$rb_gt=Opal.rb_gt,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_times=Opal.rb_times;return Opal.add_stubs("[],class,<,size,[]=,-,__send__,_racc_setup,raise,_racc_init_sysvars,catch,!=,next_token,racc_read_token,+,==,>=,_racc_evalact,!,>,push,racc_shift,-@,_racc_do_reduce,===,racc_accept,throw,on_error,<=,pop,racc_e_pop,inspect,racc_next_state,*,racc_reduce,sprintf,token_to_str,print,racc_token2str,puts,racc_print_stacks,empty?,each,racc_print_states,each_index"),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);$klass($nesting[0],$$("StandardError"),"ParseError")}($nesting[0],$nesting),$truthy($$$("::","ParseError","skip_raise")?"constant":nil)||$const_set($nesting[0],"ParseError",$$$($$("Racc"),"ParseError")),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);return $truthy($$("Racc_No_Extensions","skip_raise")?"constant":nil)||$const_set($nesting[0],"Racc_No_Extensions",!1),function($base,$super,$parent_nesting){var self=$klass($base,null,"Parser"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.yydebug=$proto.racc_debug_out=$proto.racc_error_status=$proto.racc_t=$proto.racc_vstack=$proto.racc_val=$proto.racc_state=$proto.racc_tstack=nil,$const_set($nesting[0],"Racc_Runtime_Version","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Revision",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Runtime_Core_Version_R","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Core_Revision_R",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Main_Parsing_Routine","_racc_do_parse_rb"),$const_set($nesting[0],"Racc_YY_Parse_Method","_racc_yyparse_rb"),$const_set($nesting[0],"Racc_Runtime_Core_Version",$$("Racc_Runtime_Core_Version_R")),$const_set($nesting[0],"Racc_Runtime_Core_Revision",$$("Racc_Runtime_Core_Revision_R")),$const_set($nesting[0],"Racc_Runtime_Type","ruby"),$defs($$("Parser"),"$racc_runtime_type",(function(){return $$("Racc_Runtime_Type")}),0),$def(self,"$_racc_setup",(function(){var $a,$b,$ret_or_1=nil,arg=nil,$writer=nil;return null==$gvars.stderr&&($gvars.stderr=nil),$truthy($$$(this.$class(),"Racc_debug_parser"))||(this.yydebug=!1),$truthy(null!=($a=this.yydebug)&&$a!==nil?"instance-variable":nil)||(this.yydebug=!1),$truthy(this.yydebug)&&($truthy(null!=($b=this.racc_debug_out)&&$b!==nil?"instance-variable":nil)||(this.racc_debug_out=$gvars.stderr),this.racc_debug_out=$truthy($ret_or_1=this.racc_debug_out)?$ret_or_1:$gvars.stderr),arg=$$$(this.$class(),"Racc_arg"),$truthy($rb_lt(arg.$size(),14))&&($send(arg,"[]=",$to_a($writer=[13,!0])),$writer[$rb_minus($writer.length,1)]),arg}),0),$def(self,"$_racc_init_sysvars",(function(){return this.racc_state=[0],this.racc_tstack=[],this.racc_vstack=[],this.racc_t=nil,this.racc_val=nil,this.racc_read_next=!0,this.racc_user_yyerror=!1,this.racc_error_status=0}),0),$def(self,"$do_parse",(function(){return this.$__send__($$("Racc_Main_Parsing_Routine"),this.$_racc_setup(),!1)}),0),$def(self,"$next_token",(function(){return this.$raise($$("NotImplementedError"),this.$class()+"#next_token is not defined")}),0),$def(self,"$_racc_do_parse_rb",(function(arg,in_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,tok=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),tok=act=i=nil,$send(this,"catch",["racc_end_parse"],(function $$1(){var $d,$e,self=null==$$1.$$s?this:$$1.$$s,$ret_or_1=nil;for(null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==self.racc_t&&(self.racc_t=nil),null==self.yydebug&&(self.yydebug=nil),null==self.racc_val&&(self.racc_val=nil);$truthy(!0);)for($truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))?($truthy(self.racc_read_next)&&$neqeq(self.racc_t,0)&&($e=self.$next_token(),$d=$to_ary($e),tok=null==$d[0]?nil:$d[0],self.racc_val=null==$d[1]?nil:$d[1],$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,$truthy(self.yydebug)&&self.$racc_read_token(self.racc_t,tok,self.racc_val),self.racc_read_next=!1),i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)))):act=action_default["$[]"](self.racc_state["$[]"](-1));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:0,$$s:this})}),2),$def(self,"$yyparse",(function(recv,mid){return this.$__send__($$("Racc_YY_Parse_Method"),recv,mid,this.$_racc_setup(),!0)}),2),$def(self,"$_racc_yyparse_rb",(function(recv,mid,arg,c_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),act=nil,i=nil,$send(this,"catch",["racc_end_parse"],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;for(null==self.racc_state&&(self.racc_state=nil);!$truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)));)for(;$truthy(act=self.$_racc_evalact(action_default["$[]"](self.racc_state["$[]"](-1)),arg)););return $send(recv,"__send__",[mid],(function $$3(tok,val){var self=null==$$3.$$s?this:$$3.$$s,$ret_or_1=nil,$ret_or_2=nil;for(null==self.racc_t&&(self.racc_t=nil),null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==tok&&(tok=nil),null==val&&(val=nil),$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,self.racc_val=val,self.racc_read_next=!1,i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););for(;$truthy($truthy($ret_or_1=$truthy($ret_or_2=(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))["$!"]())?$ret_or_2:self.racc_read_next["$!"]())?$ret_or_1:self.racc_t["$=="](0));)for($truthy(i)&&$truthy(i=$rb_plus(i,self.racc_t))&&$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:2,$$s:self})}),{$$arity:0,$$s:this})}),4),$def(self,"$_racc_evalact",(function(act,arg){var $a,shift_n,action_table=nil,action_check=nil,action_pointer=nil,reduce_n=nil,code=nil,$ret_or_1=nil,i=nil;if(action_table=null==($a=$to_ary(arg))[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],shift_n=null==$a[11]?nil:$a[11],reduce_n=null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],null==$a[14]?nil:$a[14],$truthy($rb_gt(act,0))&&$truthy($rb_lt(act,shift_n)))$truthy($rb_gt(this.racc_error_status,0))&&($eqeq(this.racc_t,1)||(this.racc_error_status=$rb_minus(this.racc_error_status,1))),this.racc_vstack.$push(this.racc_val),this.racc_state.$push(act),this.racc_read_next=!0,$truthy(this.yydebug)&&(this.racc_tstack.$push(this.racc_t),this.$racc_shift(this.racc_t,this.racc_tstack,this.racc_vstack));else if($truthy($rb_lt(act,0))&&$truthy($rb_gt(act,reduce_n["$-@"]()))){if(code=$send(this,"catch",["racc_jump"],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s;return null==self.racc_state&&(self.racc_state=nil),self.racc_state.$push(self.$_racc_do_reduce(arg,act)),!1}),{$$arity:0,$$s:this}),$truthy(code)){if($eqeqeq(1,$ret_or_1=code))return this.racc_user_yyerror=!0,reduce_n["$-@"]();if($eqeqeq(2,$ret_or_1))return shift_n;this.$raise("[Racc Bug] unknown jump code")}}else if($eqeq(act,shift_n))$truthy(this.yydebug)&&this.$racc_accept(),this.$throw("racc_end_parse",this.racc_vstack["$[]"](0));else{if($eqeq(act,reduce_n["$-@"]())){for($eqeqeq(0,$ret_or_1=this.racc_error_status)?$truthy(arg["$[]"](21))||this.$on_error(this.racc_t,this.racc_val,this.racc_vstack):$eqeqeq(3,$ret_or_1)&&($eqeq(this.racc_t,0)&&this.$throw("racc_end_parse",nil),this.racc_read_next=!0),this.racc_user_yyerror=!1,this.racc_error_status=3;$truthy(!0)&&!($truthy(i=action_pointer["$[]"](this.racc_state["$[]"](-1)))&&(i=$rb_plus(i,1),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),this.racc_state["$[]"](-1))));)$truthy($rb_le(this.racc_state.$size(),1))&&this.$throw("racc_end_parse",nil),this.racc_state.$pop(),this.racc_vstack.$pop(),$truthy(this.yydebug)&&(this.racc_tstack.$pop(),this.$racc_e_pop(this.racc_state,this.racc_tstack,this.racc_vstack));return act}this.$raise("[Racc Bug] unknown action "+act.$inspect())}return $truthy(this.yydebug)&&this.$racc_next_state(this.racc_state["$[]"](-1),this.racc_state),nil}),2),$def(self,"$_racc_do_reduce",(function(arg,act){var $a,nt_base,use_result,reduce_to,method_id,void_array,k1,goto_table=nil,goto_check=nil,goto_default=nil,goto_pointer=nil,reduce_table=nil,state=nil,vstack=nil,tstack=nil,i=nil,len=nil,tmp_t=nil,tmp_v=nil,$writer=nil,curstate=nil;return null==($a=$to_ary(arg))[0]?nil:$a[0],null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],null==$a[3]?nil:$a[3],goto_table=null==$a[4]?nil:$a[4],goto_check=null==$a[5]?nil:$a[5],goto_default=null==$a[6]?nil:$a[6],goto_pointer=null==$a[7]?nil:$a[7],nt_base=null==$a[8]?nil:$a[8],reduce_table=null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],use_result=null==$a[13]?nil:$a[13],state=this.racc_state,vstack=this.racc_vstack,tstack=this.racc_tstack,i=$rb_times(act,-3),len=reduce_table["$[]"](i),reduce_to=reduce_table["$[]"]($rb_plus(i,1)),method_id=reduce_table["$[]"]($rb_plus(i,2)),void_array=[],$truthy(this.yydebug)&&(tmp_t=tstack["$[]"](len["$-@"](),len)),tmp_v=vstack["$[]"](len["$-@"](),len),$truthy(this.yydebug)&&($writer=[len["$-@"](),len,void_array],$send(tstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=[len["$-@"](),len,void_array],$send(vstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[len["$-@"](),len,void_array],$send(state,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(use_result)?vstack.$push(this.$__send__(method_id,tmp_v,vstack,tmp_v["$[]"](0))):vstack.$push(this.$__send__(method_id,tmp_v,vstack)),tstack.$push(reduce_to),$truthy(this.yydebug)&&this.$racc_reduce(tmp_t,reduce_to,tstack,vstack),k1=$rb_minus(reduce_to,nt_base),$truthy(i=goto_pointer["$[]"](k1))&&(i=$rb_plus(i,state["$[]"](-1)),$truthy($rb_ge(i,0))&&$truthy(curstate=goto_table["$[]"](i))&&$eqeq(goto_check["$[]"](i),k1))?curstate:goto_default["$[]"](k1)}),2),$def(self,"$on_error",(function(t,val,vstack){var $ret_or_1;return this.$raise($$("ParseError"),this.$sprintf("\nparse error on value %s (%s)",val.$inspect(),$truthy($ret_or_1=this.$token_to_str(t))?$ret_or_1:"?"))}),3),$def(self,"$yyerror",(function(){return this.$throw("racc_jump",1)}),0),$def(self,"$yyaccept",(function(){return this.$throw("racc_jump",2)}),0),$def(self,"$yyerrok",(function(){return this.racc_error_status=0}),0),$def(self,"$racc_read_token",(function(t,tok,val){return this.racc_debug_out.$print("read "),this.racc_debug_out.$print(tok.$inspect(),"(",this.$racc_token2str(t),") "),this.racc_debug_out.$puts(val.$inspect()),this.racc_debug_out.$puts()}),3),$def(self,"$racc_shift",(function(tok,tstack,vstack){return this.racc_debug_out.$puts("shift "+this.$racc_token2str(tok)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_reduce",(function(toks,sim,tstack,vstack){var out=nil;return(out=this.racc_debug_out).$print("reduce "),$truthy(toks["$empty?"]())?out.$print(" "):$send(toks,"each",[],(function $$5(t){var self=null==$$5.$$s?this:$$5.$$s;return null==t&&(t=nil),out.$print(" ",self.$racc_token2str(t))}),{$$arity:1,$$s:this}),out.$puts(" --\x3e "+this.$racc_token2str(sim)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),4),$def(self,"$racc_accept",(function(){return this.racc_debug_out.$puts("accept"),this.racc_debug_out.$puts()}),0),$def(self,"$racc_e_pop",(function(state,tstack,vstack){return this.racc_debug_out.$puts("error recovering mode: pop token"),this.$racc_print_states(state),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_next_state",(function(curstate,state){return this.racc_debug_out.$puts("goto "+curstate),this.$racc_print_states(state),this.racc_debug_out.$puts()}),2),$def(self,"$racc_print_stacks",(function(t,v){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(t,"each_index",[],(function $$6(i){var self=null==$$6.$$s?this:$$6.$$s;return null==i&&(i=nil),out.$print(" (",self.$racc_token2str(t["$[]"](i))," ",v["$[]"](i).$inspect(),")")}),{$$arity:1,$$s:this}),out.$puts(" ]")}),2),$def(self,"$racc_print_states",(function(s){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(s,"each",[],(function(st){return null==st&&(st=nil),out.$print(" ",st)}),1),out.$puts(" ]")}),1),$def(self,"$racc_token2str",(function(tok){var $ret_or_1;return $truthy($ret_or_1=$$$(this.$class(),"Racc_token_to_s_table")["$[]"](tok))?$ret_or_1:this.$raise("[Racc Bug] can't convert token "+tok+" to string")}),1),$def(self,"$token_to_str",(function(t){return $$$(this.$class(),"Racc_token_to_s_table")["$[]"](t)}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/messages"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set,$hash2=Opal.hash2,$truthy=Opal.truthy,$eqeqeq=Opal.eqeqeq,$defs=Opal.defs;return Opal.add_stubs("freeze,[],empty?,===,format"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return $const_set($nesting[0],"MESSAGES",$hash2(["unicode_point_too_large","invalid_escape","incomplete_escape","invalid_hex_escape","invalid_unicode_escape","unterminated_unicode","escape_eof","string_eof","regexp_options","cvar_name","ivar_name","trailing_in_number","empty_numeric","invalid_octal","no_dot_digit_literal","bare_backslash","unexpected","embedded_document","heredoc_id_has_newline","heredoc_id_ends_with_nl","unterminated_heredoc_id","invalid_escape_use","ambiguous_literal","ambiguous_regexp","ambiguous_prefix","triple_dot_at_eol","nth_ref_alias","begin_in_method","backref_assignment","invalid_assignment","module_name_const","unexpected_token","argument_const","argument_ivar","argument_gvar","argument_cvar","duplicate_argument","empty_symbol","odd_hash","singleton_literal","dynamic_const","const_reassignment","module_in_def","class_in_def","unexpected_percent_str","block_and_blockarg","masgn_as_condition","block_given_to_yield","invalid_regexp","invalid_return","csend_in_lhs_of_masgn","cant_assign_to_numparam","reserved_for_numparam","ordinary_param_defined","numparam_used_in_outer_scope","circular_argument_reference","pm_interp_in_var_name","lvar_name","undefined_lvar","duplicate_variable_name","duplicate_pattern_key","endless_setter","invalid_id_to_get","forward_arg_after_restarg","no_anonymous_blockarg","useless_else","duplicate_hash_key","invalid_encoding","invalid_action","clobbered","different_replacements","swallowed_insertions","swallowed_insertions_conflict","crossing_deletions","crossing_deletions_conflict","crossing_insertions","crossing_insertions_conflict"],{unicode_point_too_large:"invalid Unicode codepoint (too large)",invalid_escape:"invalid escape character syntax",incomplete_escape:"incomplete character syntax",invalid_hex_escape:"invalid hex escape",invalid_unicode_escape:"invalid Unicode escape",unterminated_unicode:"unterminated Unicode escape",escape_eof:"escape sequence meets end of file",string_eof:"unterminated string meets end of file",regexp_options:"unknown regexp options: %{options}",cvar_name:"`%{name}' is not allowed as a class variable name",ivar_name:"`%{name}' is not allowed as an instance variable name",trailing_in_number:"trailing `%{character}' in number",empty_numeric:"numeric literal without digits",invalid_octal:"invalid octal digit",no_dot_digit_literal:"no . floating literal anymore; put 0 before dot",bare_backslash:"bare backslash only allowed before newline",unexpected:"unexpected `%{character}'",embedded_document:"embedded document meets end of file (and they embark on a romantic journey)",heredoc_id_has_newline:"here document identifier across newlines, never match",heredoc_id_ends_with_nl:"here document identifier ends with a newline",unterminated_heredoc_id:"unterminated heredoc id",invalid_escape_use:"invalid character syntax; use ?%{escape}",ambiguous_literal:"ambiguous first argument; put parentheses or a space even after the operator",ambiguous_regexp:"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after `/' operator",ambiguous_prefix:"`%{prefix}' interpreted as argument prefix",triple_dot_at_eol:"... at EOL, should be parenthesized",nth_ref_alias:"cannot define an alias for a back-reference variable",begin_in_method:"BEGIN in method",backref_assignment:"cannot assign to a back-reference variable",invalid_assignment:"cannot assign to a keyword",module_name_const:"class or module name must be a constant literal",unexpected_token:"unexpected token %{token}",argument_const:"formal argument cannot be a constant",argument_ivar:"formal argument cannot be an instance variable",argument_gvar:"formal argument cannot be a global variable",argument_cvar:"formal argument cannot be a class variable",duplicate_argument:"duplicate argument name",empty_symbol:"empty symbol literal",odd_hash:"odd number of entries for a hash",singleton_literal:"cannot define a singleton method for a literal",dynamic_const:"dynamic constant assignment",const_reassignment:"constant re-assignment",module_in_def:"module definition in method body",class_in_def:"class definition in method body",unexpected_percent_str:"%{type}: unknown type of percent-literal",block_and_blockarg:"both block argument and literal block are passed",masgn_as_condition:"multiple assignment in conditional context",block_given_to_yield:"block given to yield",invalid_regexp:"%{message}",invalid_return:"Invalid return in class/module body",csend_in_lhs_of_masgn:"&. inside multiple assignment destination",cant_assign_to_numparam:"cannot assign to numbered parameter %{name}",reserved_for_numparam:"%{name} is reserved for numbered parameter",ordinary_param_defined:"ordinary parameter is defined",numparam_used_in_outer_scope:"numbered parameter is already used in an outer scope",circular_argument_reference:"circular argument reference %{var_name}",pm_interp_in_var_name:"symbol literal with interpolation is not allowed",lvar_name:"`%{name}' is not allowed as a local variable name",undefined_lvar:"no such local variable: `%{name}'",duplicate_variable_name:"duplicate variable name %{name}",duplicate_pattern_key:"duplicate hash pattern key %{name}",endless_setter:"setter method cannot be defined in an endless method definition",invalid_id_to_get:"identifier %{identifier} is not valid to get",forward_arg_after_restarg:"... after rest argument",no_anonymous_blockarg:"no anonymous block parameter",useless_else:"else without rescue is useless",duplicate_hash_key:"key is duplicated and overwritten",invalid_encoding:"literal contains escape sequences incompatible with UTF-8",invalid_action:"cannot %{action}",clobbered:"clobbered by: %{action}",different_replacements:"different replacements: %{replacement} vs %{other_replacement}",swallowed_insertions:"this replacement:",swallowed_insertions_conflict:"swallows some inner rewriting actions:",crossing_deletions:"the deletion of:",crossing_deletions_conflict:"is crossing:",crossing_insertions:"the rewriting action on:",crossing_insertions_conflict:"is crossing that on:"}).$freeze()),function($base,$parent_nesting){var self=$module($base,"Messages"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$compile",(function(reason,arguments$){var template;return template=$$("MESSAGES")["$[]"](reason),$eqeqeq($$("Hash"),arguments$)&&$truthy(arguments$["$empty?"]())?template:this.$format(template,arguments$)}),2)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/deprecation"]=function(Opal){var $base,$parent_nesting,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("attr_writer,warn"),$base=$nesting[0],$parent_nesting=$nesting,function($base){var self=$module($base,"Deprecation");return self.$attr_writer("warned_of_deprecation"),$def(self,"$warn_of_deprecation",(function(){var $ret_or_1,$ret_or_2=nil;return null==this.warned_of_deprecation&&(this.warned_of_deprecation=nil),this.warned_of_deprecation=$truthy($ret_or_1=this.warned_of_deprecation)?$ret_or_1:!$truthy($ret_or_2=this.$warn($$$(this,"DEPRECATION_WARNING")))||$ret_or_2}),0)}([$module($base,"Parser")].concat($parent_nesting)[0])},Opal.modules["parser/ast/processor"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$alias=Opal.alias,$to_a=Opal.to_a,$not=Opal.not,$truthy=Opal.truthy,$slice=Opal.slice;return Opal.add_stubs("updated,process_all,on_var,!,nil?,process,on_vasgn,on_argument,is_a?,[],children,process_regular_node,warn"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Processor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$process_regular_node",(function(node){return node.$updated(nil,this.$process_all(node))}),1),$alias(self,"on_dstr","process_regular_node"),$alias(self,"on_dsym","process_regular_node"),$alias(self,"on_regexp","process_regular_node"),$alias(self,"on_xstr","process_regular_node"),$alias(self,"on_splat","process_regular_node"),$alias(self,"on_kwsplat","process_regular_node"),$alias(self,"on_array","process_regular_node"),$alias(self,"on_pair","process_regular_node"),$alias(self,"on_hash","process_regular_node"),$alias(self,"on_kwargs","process_regular_node"),$alias(self,"on_irange","process_regular_node"),$alias(self,"on_erange","process_regular_node"),$def(self,"$on_var",(function(node){return node}),1),$def(self,"$process_variable_node",(function(node){return this.$on_var(node)}),1),$alias(self,"on_lvar","process_variable_node"),$alias(self,"on_ivar","process_variable_node"),$alias(self,"on_gvar","process_variable_node"),$alias(self,"on_cvar","process_variable_node"),$alias(self,"on_back_ref","process_variable_node"),$alias(self,"on_nth_ref","process_variable_node"),$def(self,"$on_vasgn",(function(node){var $a,name,value_node=nil;return name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value_node=null==$a[1]?nil:$a[1],$not(value_node["$nil?"]())?node.$updated(nil,[name,this.$process(value_node)]):node}),1),$def(self,"$process_var_asgn_node",(function(node){return this.$on_vasgn(node)}),1),$alias(self,"on_lvasgn","process_var_asgn_node"),$alias(self,"on_ivasgn","process_var_asgn_node"),$alias(self,"on_gvasgn","process_var_asgn_node"),$alias(self,"on_cvasgn","process_var_asgn_node"),$alias(self,"on_and_asgn","process_regular_node"),$alias(self,"on_or_asgn","process_regular_node"),$def(self,"$on_op_asgn",(function(node){var $a,var_node,method_name,value_node;return var_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],value_node=null==$a[2]?nil:$a[2],node.$updated(nil,[this.$process(var_node),method_name,this.$process(value_node)])}),1),$alias(self,"on_mlhs","process_regular_node"),$alias(self,"on_masgn","process_regular_node"),$def(self,"$on_const",(function(node){var $a,scope_node,name;return scope_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],node.$updated(nil,[this.$process(scope_node),name])}),1),$def(self,"$on_casgn",(function(node){var $a,scope_node,name,value_node=nil;return scope_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],value_node=null==$a[2]?nil:$a[2],$not(value_node["$nil?"]())?node.$updated(nil,[this.$process(scope_node),name,this.$process(value_node)]):node.$updated(nil,[this.$process(scope_node),name])}),1),$alias(self,"on_args","process_regular_node"),$def(self,"$on_argument",(function(node){var $a,arg_name,value_node=nil;return arg_name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value_node=null==$a[1]?nil:$a[1],$not(value_node["$nil?"]())?node.$updated(nil,[arg_name,this.$process(value_node)]):node}),1),$def(self,"$process_argument_node",(function(node){return this.$on_argument(node)}),1),$alias(self,"on_arg","process_argument_node"),$alias(self,"on_optarg","process_argument_node"),$alias(self,"on_restarg","process_argument_node"),$alias(self,"on_blockarg","process_argument_node"),$alias(self,"on_shadowarg","process_argument_node"),$alias(self,"on_kwarg","process_argument_node"),$alias(self,"on_kwoptarg","process_argument_node"),$alias(self,"on_kwrestarg","process_argument_node"),$alias(self,"on_forward_arg","process_argument_node"),$def(self,"$on_procarg0",(function(node){return $truthy(node.$children()["$[]"](0)["$is_a?"]($$("Symbol")))?this.$on_argument(node):this.$process_regular_node(node)}),1),$alias(self,"on_arg_expr","process_regular_node"),$alias(self,"on_restarg_expr","process_regular_node"),$alias(self,"on_blockarg_expr","process_regular_node"),$alias(self,"on_block_pass","process_regular_node"),$alias(self,"on_module","process_regular_node"),$alias(self,"on_class","process_regular_node"),$alias(self,"on_sclass","process_regular_node"),$def(self,"$on_def",(function(node){var $a,name,args_node,body_node;return name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args_node=null==$a[1]?nil:$a[1],body_node=null==$a[2]?nil:$a[2],node.$updated(nil,[name,this.$process(args_node),this.$process(body_node)])}),1),$def(self,"$on_defs",(function(node){var $a,definee_node,name,args_node,body_node;return definee_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],args_node=null==$a[2]?nil:$a[2],body_node=null==$a[3]?nil:$a[3],node.$updated(nil,[this.$process(definee_node),name,this.$process(args_node),this.$process(body_node)])}),1),$alias(self,"on_undef","process_regular_node"),$alias(self,"on_alias","process_regular_node"),$def(self,"$on_send",(function(node){var $a,arg_nodes,receiver_node=nil,method_name=nil;return receiver_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],arg_nodes=$slice.call($a,2),$truthy(receiver_node)&&(receiver_node=this.$process(receiver_node)),node.$updated(nil,[receiver_node,method_name].concat($to_a(this.$process_all(arg_nodes))))}),1),$alias(self,"on_csend","on_send"),$alias(self,"on_index","process_regular_node"),$alias(self,"on_indexasgn","process_regular_node"),$alias(self,"on_block","process_regular_node"),$alias(self,"on_lambda","process_regular_node"),$def(self,"$on_numblock",(function(node){var $a,method_call,max_numparam,body;return method_call=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],max_numparam=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],node.$updated(nil,[this.$process(method_call),max_numparam,this.$process(body)])}),1),$alias(self,"on_while","process_regular_node"),$alias(self,"on_while_post","process_regular_node"),$alias(self,"on_until","process_regular_node"),$alias(self,"on_until_post","process_regular_node"),$alias(self,"on_for","process_regular_node"),$alias(self,"on_return","process_regular_node"),$alias(self,"on_break","process_regular_node"),$alias(self,"on_next","process_regular_node"),$alias(self,"on_redo","process_regular_node"),$alias(self,"on_retry","process_regular_node"),$alias(self,"on_super","process_regular_node"),$alias(self,"on_yield","process_regular_node"),$alias(self,"on_defined?","process_regular_node"),$alias(self,"on_not","process_regular_node"),$alias(self,"on_and","process_regular_node"),$alias(self,"on_or","process_regular_node"),$alias(self,"on_if","process_regular_node"),$alias(self,"on_when","process_regular_node"),$alias(self,"on_case","process_regular_node"),$alias(self,"on_iflipflop","process_regular_node"),$alias(self,"on_eflipflop","process_regular_node"),$alias(self,"on_match_current_line","process_regular_node"),$alias(self,"on_match_with_lvasgn","process_regular_node"),$alias(self,"on_resbody","process_regular_node"),$alias(self,"on_rescue","process_regular_node"),$alias(self,"on_ensure","process_regular_node"),$alias(self,"on_begin","process_regular_node"),$alias(self,"on_kwbegin","process_regular_node"),$alias(self,"on_preexe","process_regular_node"),$alias(self,"on_postexe","process_regular_node"),$alias(self,"on_case_match","process_regular_node"),$alias(self,"on_in_match","process_regular_node"),$alias(self,"on_match_pattern","process_regular_node"),$alias(self,"on_match_pattern_p","process_regular_node"),$alias(self,"on_in_pattern","process_regular_node"),$alias(self,"on_if_guard","process_regular_node"),$alias(self,"on_unless_guard","process_regular_node"),$alias(self,"on_match_var","process_variable_node"),$alias(self,"on_match_rest","process_regular_node"),$alias(self,"on_pin","process_regular_node"),$alias(self,"on_match_alt","process_regular_node"),$alias(self,"on_match_as","process_regular_node"),$alias(self,"on_array_pattern","process_regular_node"),$alias(self,"on_array_pattern_with_tail","process_regular_node"),$alias(self,"on_hash_pattern","process_regular_node"),$alias(self,"on_const_pattern","process_regular_node"),$alias(self,"on_find_pattern","process_regular_node"),$def(self,"$process_variable_node",(function(node){return this.$warn("Parser::AST::Processor#process_variable_node is deprecated as a public API and will be removed. Please use Parser::AST::Processor#on_var instead."),this.$on_var(node)}),1),$def(self,"$process_var_asgn_node",(function(node){return this.$warn("Parser::AST::Processor#process_var_asgn_node is deprecated as a public API and will be removed. Please use Parser::AST::Processor#on_vasgn instead."),this.$on_vasgn(node)}),1),$def(self,"$process_argument_node",(function(node){return this.$warn("Parser::AST::Processor#process_argument_node is deprecated as a public API and will be removed. Please use Parser::AST::Processor#on_argument instead."),this.$on_argument(node)}),1),$def(self,"$on_empty_else",(function(node){return node}),1)}($nesting[0],$$$($$$("AST"),"Processor"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/meta"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set;return Opal.add_stubs("freeze,to_set"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Meta")].concat($parent_nesting);return $const_set($nesting[0],"NODE_TYPES",["true","false","nil","int","float","str","dstr","sym","dsym","xstr","regopt","regexp","array","splat","pair","kwsplat","hash","irange","erange","self","lvar","ivar","cvar","gvar","const","defined?","lvasgn","ivasgn","cvasgn","gvasgn","casgn","mlhs","masgn","op_asgn","and_asgn","ensure","rescue","arg_expr","or_asgn","back_ref","nth_ref","match_with_lvasgn","match_current_line","module","class","sclass","def","defs","undef","alias","args","cbase","arg","optarg","restarg","blockarg","block_pass","kwarg","kwoptarg","kwrestarg","kwnilarg","send","csend","super","zsuper","yield","block","and","not","or","if","when","case","while","until","while_post","until_post","for","break","next","redo","return","resbody","kwbegin","begin","retry","preexe","postexe","iflipflop","eflipflop","shadowarg","complex","rational","__FILE__","__LINE__","__ENCODING__","ident","lambda","indexasgn","index","procarg0","restarg_expr","blockarg_expr","objc_kwarg","objc_restarg","objc_varargs","numargs","numblock","forward_args","forwarded_args","forward_arg","case_match","in_match","in_pattern","match_var","pin","match_alt","match_as","match_rest","array_pattern","match_with_trailing_comma","array_pattern_with_tail","hash_pattern","const_pattern","if_guard","unless_guard","match_nil_pattern","empty_else","find_pattern","kwargs","match_pattern_p","match_pattern"].$to_set().$freeze())}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/buffer"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$enc=Opal.enc,$truthy=Opal.truthy,$gvars=Opal.gvars,$eqeq=Opal.eqeq,$neqeq=Opal.neqeq,$defs=Opal.defs,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$not=Opal.not,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$rb_lt=Opal.rb_lt,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("attr_reader,empty?,=~,start_with?,freeze,==,[],!=,nil?,match,find,encoding,recognize_encoding,force_encoding,encode,to_s,source=,-,open,read,raise,frozen?,dup,reencode_string,class,valid_encoding?,name,raw_source=,gsub,!,ascii_only?,line_index_for_position,line_begins,+,to_a,lines,end_with?,<<,each,chomp!,fetch,source_lines,>=,size,<,new,source,source_range,private,index,bsearch,[]=,method_defined?,bsearch_index"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Buffer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.name=$proto.source=$proto.slice_source=$proto.first_line=$proto.lines=$proto.source_range=$proto.line_begins=$proto.line_index_for_position=$proto.line_range=nil,self.$attr_reader("name","first_line"),$const_set($nesting[0],"ENCODING_RE",$regexp([$enc("[\\s#](en)?coding\\s*[:=]\\s*","ASCII-8BIT"),$enc("(","ASCII-8BIT"),$enc("","ASCII-8BIT"),$enc("(utf8-mac)","ASCII-8BIT"),$enc("|","ASCII-8BIT"),$enc("","ASCII-8BIT"),$enc("([A-Za-z0-9_-]+?)(-unix|-dos|-mac)","ASCII-8BIT"),$enc("|","ASCII-8BIT"),$enc("([A-Za-z0-9_-]+)","ASCII-8BIT"),$enc(")","ASCII-8BIT"),$enc("","ASCII-8BIT")])),$defs(self,"$recognize_encoding",(function(string){var $a,$b,second_line,first_line=nil,encoding_line=nil,result=nil,$ret_or_1=nil,$ret_or_2=nil;return $truthy(string["$empty?"]())?nil:(string["$=~"](/^(.*)\n?(.*\n)?/),second_line=($a=[($b=$gvars["~"])===nil?nil:$b["$[]"](1),($b=$gvars["~"])===nil?nil:$b["$[]"](2)])[1],$truthy((first_line=$a[0])["$start_with?"]($enc("","ASCII-8BIT").$freeze()))?$$$($$("Encoding"),"UTF_8"):(encoding_line=$eqeq(first_line["$[]"](0,2),$enc("#!","ASCII-8BIT").$freeze())?second_line:first_line,$truthy(encoding_line["$nil?"]())||$neqeq(encoding_line["$[]"](0),$enc("#","ASCII-8BIT"))?nil:$truthy(result=$$("ENCODING_RE").$match(encoding_line))?$$("Encoding").$find($truthy($ret_or_1=$truthy($ret_or_2=result["$[]"](3))?$ret_or_2:result["$[]"](4))?$ret_or_1:result["$[]"](6)):nil))}),1),$defs(self,"$reencode_string",(function(input){var original_encoding,detected_encoding=nil;return original_encoding=input.$encoding(),detected_encoding=this.$recognize_encoding(input.$force_encoding($$$($$("Encoding"),"BINARY"))),$truthy(detected_encoding["$nil?"]())?input.$force_encoding(original_encoding):$eqeq(detected_encoding,$$$($$("Encoding"),"BINARY"))?input:input.$force_encoding(detected_encoding).$encode($$$($$("Encoding"),"UTF_8"))}),1),$def(self,"$initialize",(function(name,$a,$b){var $post_args,$kwargs,first_line,source,self=this,$writer=nil;if($post_args=Opal.slice.call(arguments,1),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return $post_args.length>0&&(first_line=$post_args.shift()),null==first_line&&(first_line=1),null==(source=$kwargs.$$smap.source)&&(source=nil),self.name=name.$to_s(),self.source=nil,self.first_line=first_line,self.lines=nil,self.line_begins=nil,self.slice_source=nil,self.line_index_for_position=$hash2([],{}),$truthy(source)?($send(self,"source=",$to_a($writer=[source])),$writer[$rb_minus($writer.length,1)]):nil}),-2),$def(self,"$read",(function(){return $send($$("File"),"open",[this.name,$enc("rb","ASCII-8BIT")],(function $$1(io){var $writer,self=null==$$1.$$s?this:$$1.$$s;return null==io&&(io=nil),$writer=[io.$read()],$send(self,"source=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),this}),0),$def(self,"$source",(function(){return $truthy(this.source["$nil?"]())&&this.$raise($$("RuntimeError"),$enc("Cannot extract source from uninitialized Source::Buffer","ASCII-8BIT")),this.source}),0),$def(self,"$source=",(function(input){var $writer;return $truthy(input["$frozen?"]())&&(input=input.$dup()),input=this.$class().$reencode_string(input),$truthy(input["$valid_encoding?"]())||this.$raise($$("EncodingError"),$enc("invalid byte sequence in ","ASCII-8BIT")+input.$encoding().$name()),$send(this,"raw_source=",$to_a($writer=[input])),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$raw_source=",(function(input){return $truthy(this.source)&&this.$raise($$("ArgumentError"),$enc("Source::Buffer is immutable","ASCII-8BIT")),this.source=input.$gsub($enc("\r\n","ASCII-8BIT").$freeze(),$enc("\n","ASCII-8BIT").$freeze()).$freeze(),$not(this.source["$ascii_only?"]())&&$neqeq(this.source.$encoding(),$$$($$("Encoding"),"UTF_32LE"))&&$neqeq(this.source.$encoding(),$$$($$("Encoding"),"BINARY"))?this.slice_source=this.source.$encode($$$($$("Encoding"),"UTF_32LE")):nil}),1),$def(self,"$slice",(function(range){return $truthy(this.slice_source["$nil?"]())?this.source["$[]"](range):this.slice_source["$[]"](range).$encode(this.source.$encoding())}),1),$def(self,"$decompose_position",(function(position){var line_index,line_begin;return line_index=this.$line_index_for_position(position),line_begin=this.$line_begins()["$[]"](line_index),[$rb_plus(this.first_line,line_index),$rb_minus(position,line_begin)]}),1),$def(self,"$line_for_position",(function(position){return $rb_plus(this.$line_index_for_position(position),this.first_line)}),1),$def(self,"$column_for_position",(function(position){var line_index;return line_index=this.$line_index_for_position(position),$rb_minus(position,this.$line_begins()["$[]"](line_index))}),1),$def(self,"$source_lines",(function(){var $ret_or_1,lines=nil;return this.lines=$truthy($ret_or_1=this.lines)?$ret_or_1:(lines=this.source.$lines().$to_a(),$truthy(this.source["$end_with?"]($enc("\n","ASCII-8BIT").$freeze()))&&lines["$<<"]($enc("","ASCII-8BIT").$dup()),$send(lines,"each",[],(function(line){return null==line&&(line=nil),line["$chomp!"]($enc("\n","ASCII-8BIT").$freeze()),line.$freeze()}),1),lines.$freeze())}),0),$def(self,"$source_line",(function(lineno){return this.$source_lines().$fetch($rb_minus(lineno,this.first_line)).$dup()}),1),$def(self,"$line_range",(function(lineno){var index;return index=$rb_minus(lineno,this.first_line),$truthy($rb_lt(index,0))||$truthy($rb_ge($rb_plus(index,1),this.$line_begins().$size()))?this.$raise($$("IndexError"),$enc("Parser::Source::Buffer: range for line ","ASCII-8BIT")+""+lineno+$enc(" requested, valid line numbers are ","ASCII-8BIT")+this.first_line+$enc("..","ASCII-8BIT")+$rb_minus($rb_plus(this.first_line,this.$line_begins().$size()),2)):$$("Range").$new(this,this.$line_begins()["$[]"](index),$rb_minus(this.$line_begins()["$[]"]($rb_plus(index,1)),1))}),1),$def(self,"$source_range",(function(){var $ret_or_1;return this.source_range=$truthy($ret_or_1=this.source_range)?$ret_or_1:$$("Range").$new(this,0,this.$source().$size())}),0),$def(self,"$last_line",(function(){return $rb_minus($rb_plus(this.$line_begins().$size(),this.first_line),2)}),0),$def(self,"$freeze",(function $$freeze(){var $yield=$$freeze.$$p||nil;return delete $$freeze.$$p,this.$source_lines(),this.$line_begins(),this.$source_range(),$send2(this,$find_super(this,"freeze",$$freeze,!1,!0),"freeze",[],$yield)}),0),$def(self,"$inspect",(function(){return $enc("#<","ASCII-8BIT")+this.$class()+$enc(" ","ASCII-8BIT")+this.$name()+$enc(">","ASCII-8BIT")}),0),self.$private(),$def(self,"$line_begins",(function(){var $ret_or_1,self=this,begins=nil,index=nil;return self.line_begins=$truthy($ret_or_1=self.line_begins)?$ret_or_1:(begins=[0],index=0,function(){for(;$truthy(index=self.source.$index($enc("\n","ASCII-8BIT").$freeze(),index));)index=$rb_plus(index,1),begins["$<<"](index)}(),begins["$<<"]($rb_plus(self.source.$size(),1)),begins)}),0),$def(self,"$line_index_for_position",(function(position){var $ret_or_1,index=nil,$writer=nil;return $truthy($ret_or_1=this.line_index_for_position["$[]"](position))?$ret_or_1:(index=$rb_minus(this.$bsearch(this.$line_begins(),position),1),$truthy(this.line_index_for_position["$frozen?"]())||($writer=[position,index],$send(this.line_index_for_position,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),index)}),1),$truthy($$("Array")["$method_defined?"]("bsearch_index"))?$def(self,"$bsearch",(function(line_begins,position){var $ret_or_1;return $truthy($ret_or_1=$send(line_begins,"bsearch_index",[],(function(line_begin){return null==line_begin&&(line_begin=nil),$rb_lt(position,line_begin)}),1))?$ret_or_1:$rb_minus(line_begins.$size(),1)}),2):$def(self,"$bsearch",(function(line_begins,position){var $ret_or_1=nil;return this.line_range=$truthy($ret_or_1=this.line_range)?$ret_or_1:Opal.Range.$new(0,line_begins.$size(),!0),$truthy($ret_or_1=$send(this.line_range,"bsearch",[],(function(i){return null==i&&(i=nil),$rb_lt(position,line_begins["$[]"](i))}),1))?$ret_or_1:$rb_minus(line_begins.$size(),1)}),2)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/range"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$rb_lt=Opal.rb_lt,$def=Opal.def,$hash2=Opal.hash2,$rb_minus=Opal.rb_minus,$alias=Opal.alias,$neqeq=Opal.neqeq,$to_ary=Opal.to_ary,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$rb_times=Opal.rb_times,$eqeq=Opal.eqeq;return Opal.add_stubs("include,attr_reader,<,raise,nil?,freeze,with,-,line_for_position,alias_method,column_for_position,!=,line,last_line,inspect,column,last_column,source_line,slice,begin_pos,end_pos,include?,source,to_a,decompose_position,join,name,+,new,min,max,disjoint?,empty?,>=,!,<=>,contains?,overlaps?,==,*,source_buffer,is_a?,nonzero?,hash"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Range"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.begin_pos=$proto.end_pos=$proto.source_buffer=nil,self.$include($$("Comparable")),self.$attr_reader("source_buffer"),self.$attr_reader("begin_pos","end_pos"),$def(self,"$initialize",(function(source_buffer,begin_pos,end_pos){var $a;return $truthy($rb_lt(end_pos,begin_pos))&&this.$raise($$("ArgumentError"),"Parser::Source::Range: end_pos must not be less than begin_pos"),$truthy(source_buffer["$nil?"]())&&this.$raise($$("ArgumentError"),"Parser::Source::Range: source_buffer must not be nil"),this.source_buffer=source_buffer,$a=[begin_pos,end_pos],this.begin_pos=$a[0],this.end_pos=$a[1],this.$freeze()}),3),$def(self,"$begin",(function(){return this.$with($hash2(["end_pos"],{end_pos:this.begin_pos}))}),0),$def(self,"$end",(function(){return this.$with($hash2(["begin_pos"],{begin_pos:this.end_pos}))}),0),$def(self,"$size",(function(){return $rb_minus(this.end_pos,this.begin_pos)}),0),$alias(self,"length","size"),$def(self,"$line",(function(){return this.source_buffer.$line_for_position(this.begin_pos)}),0),self.$alias_method("first_line","line"),$def(self,"$column",(function(){return this.source_buffer.$column_for_position(this.begin_pos)}),0),$def(self,"$last_line",(function(){return this.source_buffer.$line_for_position(this.end_pos)}),0),$def(self,"$last_column",(function(){return this.source_buffer.$column_for_position(this.end_pos)}),0),$def(self,"$column_range",(function(){return $neqeq(this.$line(),this.$last_line())&&this.$raise($$("RangeError"),this.$inspect()+" spans more than one line"),Opal.Range.$new(this.$column(),this.$last_column(),!0)}),0),$def(self,"$source_line",(function(){return this.source_buffer.$source_line(this.$line())}),0),$def(self,"$source",(function(){return this.source_buffer.$slice(Opal.Range.$new(this.$begin_pos(),this.$end_pos(),!0))}),0),$def(self,"$is?",(function($a){var self=this;return Opal.slice.call(arguments)["$include?"](self.$source())}),-1),$def(self,"$to_a",(function(){return Opal.Range.$new(this.begin_pos,this.end_pos,!0).$to_a()}),0),$def(self,"$to_range",(function(){return Opal.Range.$new(this.$begin_pos(),this.$end_pos(),!0)}),0),$def(self,"$to_s",(function(){var $a,$b,column,line=nil;return $b=this.source_buffer.$decompose_position(this.begin_pos),line=null==($a=$to_ary($b))[0]?nil:$a[0],column=null==$a[1]?nil:$a[1],[this.source_buffer.$name(),line,$rb_plus(column,1)].$join(":")}),0),$def(self,"$with",(function($kwargs){var begin_pos,end_pos;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(begin_pos=$kwargs.$$smap.begin_pos)&&(begin_pos=this.begin_pos),null==(end_pos=$kwargs.$$smap.end_pos)&&(end_pos=this.end_pos),$$("Range").$new(this.source_buffer,begin_pos,end_pos)}),-1),$def(self,"$adjust",(function($kwargs){var begin_pos,end_pos;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(begin_pos=$kwargs.$$smap.begin_pos)&&(begin_pos=0),null==(end_pos=$kwargs.$$smap.end_pos)&&(end_pos=0),$$("Range").$new(this.source_buffer,$rb_plus(this.begin_pos,begin_pos),$rb_plus(this.end_pos,end_pos))}),-1),$def(self,"$resize",(function(new_size){return this.$with($hash2(["end_pos"],{end_pos:$rb_plus(this.begin_pos,new_size)}))}),1),$def(self,"$join",(function(other){return $$("Range").$new(this.source_buffer,[this.begin_pos,other.$begin_pos()].$min(),[this.end_pos,other.$end_pos()].$max())}),1),$def(self,"$intersect",(function(other){return $truthy(this["$disjoint?"](other))?nil:$$("Range").$new(this.source_buffer,[this.begin_pos,other.$begin_pos()].$max(),[this.end_pos,other.$end_pos()].$min())}),1),$def(self,"$disjoint?",(function(other){var $ret_or_1=nil;return $truthy(this["$empty?"]())&&$truthy(other["$empty?"]())?this.begin_pos["$!="](other.$begin_pos()):$truthy($ret_or_1=$rb_ge(this.begin_pos,other.$end_pos()))?$ret_or_1:$rb_ge(other.$begin_pos(),this.end_pos)}),1),$def(self,"$overlaps?",(function(other){return this["$disjoint?"](other)["$!"]()}),1),$def(self,"$contains?",(function(other){return $rb_ge($rb_plus(other.$begin_pos()["$<=>"](this.begin_pos),this.end_pos["$<=>"](other.$end_pos())),$truthy(other["$empty?"]())?2:1)}),1),$def(self,"$contained?",(function(other){return other["$contains?"](this)}),1),$def(self,"$crossing?",(function(other){return!!$truthy(this["$overlaps?"](other))&&$rb_times(this.begin_pos["$<=>"](other.$begin_pos()),this.end_pos["$<=>"](other.$end_pos()))["$=="](1)}),1),$def(self,"$empty?",(function(){return this.begin_pos["$=="](this.end_pos)}),0),$def(self,"$<=>",(function(other){var $ret_or_1;return $truthy(other["$is_a?"]($$$($$$($$$("Parser"),"Source"),"Range")))&&$eqeq(this.source_buffer,other.$source_buffer())?$truthy($ret_or_1=this.begin_pos["$<=>"](other.$begin_pos())["$nonzero?"]())?$ret_or_1:this.end_pos["$<=>"](other.$end_pos()):nil}),1),self.$alias_method("eql?","=="),$def(self,"$hash",(function(){return[this.source_buffer,this.begin_pos,this.end_pos].$hash()}),0),$def(self,"$inspect",(function(){return"#"}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/comment"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$defs=Opal.defs,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("attr_reader,alias_method,new,associate,associate_locations,associate_by_identity,freeze,source,start_with?,text,==,type,is_a?,location,to_s,expression,inspect"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Comment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.location=nil,self.$attr_reader("text"),self.$attr_reader("location"),self.$alias_method("loc","location"),$defs(self,"$associate",(function(ast,comments){return $$("Associator").$new(ast,comments).$associate()}),2),$defs(self,"$associate_locations",(function(ast,comments){return $$("Associator").$new(ast,comments).$associate_locations()}),2),$defs(self,"$associate_by_identity",(function(ast,comments){return $$("Associator").$new(ast,comments).$associate_by_identity()}),2),$def(self,"$initialize",(function(range){return this.location=$$$($$$($$("Parser"),"Source"),"Map").$new(range),this.text=range.$source().$freeze(),this.$freeze()}),1),$def(self,"$type",(function(){return $truthy(this.$text()["$start_with?"]("#".$freeze()))?"inline":$truthy(this.$text()["$start_with?"]("=begin".$freeze()))?"document":nil}),0),$def(self,"$inline?",(function(){return this.$type()["$=="]("inline")}),0),$def(self,"$document?",(function(){return this.$type()["$=="]("document")}),0),$def(self,"$==",(function(other){var $ret_or_1;return $truthy($ret_or_1=other["$is_a?"]($$$($$("Source"),"Comment")))?this.location["$=="](other.$location()):$ret_or_1}),1),$def(self,"$inspect",(function(){return"#"}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/comment/associator"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$rb_le=Opal.rb_le,$rb_plus=Opal.rb_plus,$not=Opal.not;return Opal.add_stubs("attr_accessor,do_associate,private,freeze,[],include?,type,sort_by,compact,children,begin_pos,expression,loc,select,is_a?,new,[]=,-,==,compare_by_identity,advance_comment,advance_through_directives,visit,process_leading_comments,location,<=,line,last_line,each,children_in_source_order,process_trailing_comments,current_comment_before?,associate_and_advance_comment,current_comment_before_end?,current_comment_decorates?,+,!,end_pos,<<,start_with?,text,=~"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Associator"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.map_using=$proto.mapping=$proto.skip_directives=$proto.ast=$proto.current_comment=$proto.comment_num=$proto.comments=nil,self.$attr_accessor("skip_directives"),$def(self,"$initialize",(function(ast,comments){return this.ast=ast,this.comments=comments,this.skip_directives=!0}),2),$def(self,"$associate",(function(){return this.map_using="eql",this.$do_associate()}),0),$def(self,"$associate_locations",(function(){return this.map_using="location",this.$do_associate()}),0),$def(self,"$associate_by_identity",(function(){return this.map_using="identity",this.$do_associate()}),0),self.$private(),$const_set($nesting[0],"POSTFIX_TYPES",$$("Set")["$[]"]("if","while","while_post","until","until_post","masgn").$freeze()),$def(self,"$children_in_source_order",(function(node){return $truthy($$("POSTFIX_TYPES")["$include?"](node.$type()))?$send(node.$children().$compact(),"sort_by",[],(function(child){return null==child&&(child=nil),child.$loc().$expression().$begin_pos()}),1):$send(node.$children(),"select",[],(function(child){var $ret_or_1,$ret_or_2;return null==child&&(child=nil),$truthy($ret_or_1=$truthy($ret_or_2=child["$is_a?"]($$$($$("AST"),"Node")))?child.$loc():$ret_or_2)?child.$loc().$expression():$ret_or_1}),1)}),1),$def(self,"$do_associate",(function(){return this.mapping=$send($$("Hash"),"new",[],(function(h,k){var $writer;return null==h&&(h=nil),null==k&&(k=nil),$send(h,"[]=",$to_a($writer=[k,[]])),$writer[$rb_minus($writer.length,1)]}),2),$eqeq(this.map_using,"identity")&&this.mapping.$compare_by_identity(),this.comment_num=-1,this.$advance_comment(),$truthy(this.skip_directives)&&this.$advance_through_directives(),$truthy(this.ast)&&this.$visit(this.ast),this.mapping}),0),$def(self,"$visit",(function(node){var node_loc=nil;return this.$process_leading_comments(node),$truthy(this.current_comment)?(node_loc=node.$location(),$truthy($rb_le(this.current_comment.$location().$line(),node_loc.$last_line()))||$truthy(node_loc["$is_a?"]($$$($$("Map"),"Heredoc")))?($send(this.$children_in_source_order(node),"each",[],(function $$4(child){return null==child&&(child=nil),(null==$$4.$$s?this:$$4.$$s).$visit(child)}),{$$arity:1,$$s:this}),this.$process_trailing_comments(node)):nil):nil}),1),$def(self,"$process_leading_comments",(function(node){if($eqeq(node.$type(),"begin"))return nil;for(;$truthy(this["$current_comment_before?"](node));)this.$associate_and_advance_comment(node)}),1),$def(self,"$process_trailing_comments",(function(node){for(;$truthy(this["$current_comment_before_end?"](node));)this.$associate_and_advance_comment(node);for(;$truthy(this["$current_comment_decorates?"](node));)this.$associate_and_advance_comment(node)}),1),$def(self,"$advance_comment",(function(){return this.comment_num=$rb_plus(this.comment_num,1),this.current_comment=this.comments["$[]"](this.comment_num)}),0),$def(self,"$current_comment_before?",(function(node){var comment_loc=nil,node_loc=nil;return!$not(this.current_comment)&&(comment_loc=this.current_comment.$location().$expression(),node_loc=node.$location().$expression(),$rb_le(comment_loc.$end_pos(),node_loc.$begin_pos()))}),1),$def(self,"$current_comment_before_end?",(function(node){var comment_loc=nil,node_loc=nil;return!$not(this.current_comment)&&(comment_loc=this.current_comment.$location().$expression(),node_loc=node.$location().$expression(),$rb_le(comment_loc.$end_pos(),node_loc.$end_pos()))}),1),$def(self,"$current_comment_decorates?",(function(node){return!$not(this.current_comment)&&this.current_comment.$location().$line()["$=="](node.$location().$last_line())}),1),$def(self,"$associate_and_advance_comment",(function(node){var key;return key=$eqeq(this.map_using,"location")?node.$location():node,this.mapping["$[]"](key)["$<<"](this.current_comment),this.$advance_comment()}),1),$const_set($nesting[0],"MAGIC_COMMENT_RE",/^#\s*(-\*-|)\s*(frozen_string_literal|warn_indent|warn_past_scope):.*\1$/),$def(self,"$advance_through_directives",(function(){return $truthy(this.current_comment)&&$truthy(this.current_comment.$text()["$start_with?"]("#!".$freeze()))&&this.$advance_comment(),$truthy(this.current_comment)&&$truthy(this.current_comment.$text()["$=~"]($$("MAGIC_COMMENT_RE")))&&this.$advance_comment(),$truthy(this.current_comment)&&$truthy(this.current_comment.$text()["$=~"]($$$($$("Buffer"),"ENCODING_RE")))?this.$advance_comment():nil}),0)}(Opal.$r($nesting)("Comment"),0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$gvars=Opal.gvars,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$rb_plus=Opal.rb_plus,$truthy=Opal.truthy,$not=Opal.not,$neqeq=Opal.neqeq,$rb_le=Opal.rb_le,$rb_ge=Opal.rb_ge,$rb_lt=Opal.rb_lt,$hash2=Opal.hash2,$const_set=Opal.const_set;return Opal.add_stubs("attr_reader,warn_of_deprecation,class,new,lambda,puts,render,consumer=,-,append,freeze,begin,end,+,in_transaction?,raise,dup,source,each,sort,begin_pos,range,length,replacement,[]=,private,empty?,clobbered_insertion?,!,allow_multiple_insertions?,raise_clobber_error,record_insertion,adjacent_updates?,find,overlaps?,replace_compatible_with_insertion?,merge_actions!,<<,active_queue,adjacent_insertions?,merge_actions,delete,can_merge?,record_replace,|,active_insertions,active_insertions=,active_clobber,clobbered_position_mask,active_clobber=,size,!=,&,<=,end_pos,adjacent_insertion_mask,select,adjacent?,adjacent_position_mask,>=,==,[],all?,intersect,nil?,max,sort_by,push,join,first,max_by,merge_replacements,replace_actions,disjoint?,<,process,extend"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Rewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.diagnostics=$proto.insert_before_multi_order=$proto.insert_after_multi_order=$proto.source_buffer=$proto.queue=$proto.clobber=$proto.insertions=$proto.pending_queue=$proto.pending_clobber=$proto.pending_insertions=nil,self.$attr_reader("source_buffer"),self.$attr_reader("diagnostics"),$def(self,"$initialize",(function(source_buffer){var $writer;return this.$class().$warn_of_deprecation(),this.diagnostics=$$$($$("Diagnostic"),"Engine").$new(),$writer=[$send(this,"lambda",[],(function(diag){return null==$gvars.stderr&&($gvars.stderr=nil),null==diag&&(diag=nil),$gvars.stderr.$puts(diag.$render())}),1)],$send(this.diagnostics,"consumer=",$to_a($writer)),$rb_minus($writer.length,1),this.source_buffer=source_buffer,this.queue=[],this.clobber=0,this.insertions=0,this.insert_before_multi_order=0,this.insert_after_multi_order=0,this.pending_queue=nil,this.pending_clobber=nil,this.pending_insertions=nil}),1),$def(self,"$remove",(function(range){return this.$append($$$($$("Rewriter"),"Action").$new(range,"".$freeze()))}),1),$def(self,"$insert_before",(function(range,content){return this.$append($$$($$("Rewriter"),"Action").$new(range.$begin(),content))}),2),$def(self,"$wrap",(function(range,before,after){return this.$append($$$($$("Rewriter"),"Action").$new(range.$begin(),before)),this.$append($$$($$("Rewriter"),"Action").$new(range.$end(),after))}),3),$def(self,"$insert_before_multi",(function(range,content){return this.insert_before_multi_order=$rb_minus(this.insert_before_multi_order,1),this.$append($$$($$("Rewriter"),"Action").$new(range.$begin(),content,!0,this.insert_before_multi_order))}),2),$def(self,"$insert_after",(function(range,content){return this.$append($$$($$("Rewriter"),"Action").$new(range.$end(),content))}),2),$def(self,"$insert_after_multi",(function(range,content){return this.insert_after_multi_order=$rb_plus(this.insert_after_multi_order,1),this.$append($$$($$("Rewriter"),"Action").$new(range.$end(),content,!0,this.insert_after_multi_order))}),2),$def(self,"$replace",(function(range,content){return this.$append($$$($$("Rewriter"),"Action").$new(range,content))}),2),$def(self,"$process",(function(){var source,adjustment=nil;return $truthy(this["$in_transaction?"]())&&this.$raise("Do not call "+this.$class()+"#process inside a transaction"),adjustment=0,source=this.source_buffer.$source().$dup(),$send(this.queue.$sort(),"each",[],(function(action){var begin_pos,end_pos,$writer;return null==action&&(action=nil),begin_pos=$rb_plus(action.$range().$begin_pos(),adjustment),end_pos=$rb_plus(begin_pos,action.$range().$length()),$writer=[Opal.Range.$new(begin_pos,end_pos,!0),action.$replacement()],$send(source,"[]=",$to_a($writer)),$rb_minus($writer.length,1),adjustment=$rb_plus(adjustment,$rb_minus(action.$replacement().$length(),action.$range().$length()))}),1),source}),0),$def(self,"$transaction",(function $$transaction(){var $yield=$$transaction.$$p||nil,self=this;return delete $$transaction.$$p,function(){try{return $yield===nil&&self.$raise(self.$class()+"#transaction requires block"),$truthy(self["$in_transaction?"]())&&self.$raise("Nested transaction is not supported"),self.pending_queue=self.queue.$dup(),self.pending_clobber=self.clobber,self.pending_insertions=self.insertions,Opal.yieldX($yield,[]),self.queue=self.pending_queue,self.clobber=self.pending_clobber,self.insertions=self.pending_insertions,self}finally{self.pending_queue=nil,self.pending_clobber=nil,self.pending_insertions=nil}}()}),0),self.$private(),$def(self,"$append",(function(action){var range=nil,conflicting=nil,adjacent=nil,insertions=nil;if(range=action.$range(),$truthy(range["$empty?"]())){if($truthy(action.$replacement()["$empty?"]()))return this;$not(action["$allow_multiple_insertions?"]())&&$truthy(conflicting=this["$clobbered_insertion?"](range))&&this.$raise_clobber_error(action,[conflicting]),this.$record_insertion(range),$truthy(adjacent=this["$adjacent_updates?"](range))?(conflicting=$send(adjacent,"find",[],(function $$3(a){var $ret_or_1,self=null==$$3.$$s?this:$$3.$$s;return null==a&&(a=nil),$truthy($ret_or_1=a.$range()["$overlaps?"](range))?self["$replace_compatible_with_insertion?"](a,action)["$!"]():$ret_or_1}),{$$arity:1,$$s:this}),$truthy(conflicting)&&this.$raise_clobber_error(action,[conflicting]),this["$merge_actions!"](action,adjacent)):this.$active_queue()["$<<"](action)}else $truthy(insertions=this["$adjacent_insertions?"](range))&&$send(insertions,"each",[],(function $$4(insertion){var self=null==$$4.$$s?this:$$4.$$s;return null==insertion&&(insertion=nil),$truthy(range["$overlaps?"](insertion.$range()))&&$not(self["$replace_compatible_with_insertion?"](action,insertion))?self.$raise_clobber_error(action,[insertion]):(action=self.$merge_actions(action,[insertion]),self.$active_queue().$delete(insertion))}),{$$arity:1,$$s:this}),$truthy(adjacent=this["$adjacent_updates?"](range))?$truthy(this["$can_merge?"](action,adjacent))?(this.$record_replace(range),this["$merge_actions!"](action,adjacent)):this.$raise_clobber_error(action,adjacent):(this.$record_replace(range),this.$active_queue()["$<<"](action));return this}),1),$def(self,"$record_insertion",(function(range){var $writer;return $writer=[this.$active_insertions()["$|"](1["$<<"](range.$begin_pos()))],$send(this,"active_insertions=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$record_replace",(function(range){var $writer;return $writer=[this.$active_clobber()["$|"](this.$clobbered_position_mask(range))],$send(this,"active_clobber=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$clobbered_position_mask",(function(range){return $rb_minus(1["$<<"](range.$size()),1)["$<<"](range.$begin_pos())}),1),$def(self,"$adjacent_position_mask",(function(range){return $rb_minus(1["$<<"]($rb_plus(range.$size(),2)),1)["$<<"]($rb_minus(range.$begin_pos(),1))}),1),$def(self,"$adjacent_insertion_mask",(function(range){return $rb_minus(1["$<<"]($rb_plus(range.$size(),1)),1)["$<<"](range.$begin_pos())}),1),$def(self,"$clobbered_insertion?",(function(insertion){var insertion_pos;return insertion_pos=insertion.$begin_pos(),$neqeq(this.$active_insertions()["$&"](1["$<<"](insertion_pos)),0)?$send(this.$active_queue(),"find",[],(function(a){var $ret_or_1;return null==a&&(a=nil),$truthy($ret_or_1=$rb_le(a.$range().$begin_pos(),insertion_pos))?$rb_le(insertion_pos,a.$range().$end_pos()):$ret_or_1}),1):nil}),1),$def(self,"$adjacent_insertions?",(function(range){var result=nil;return $neqeq(this.$active_insertions()["$&"](this.$adjacent_insertion_mask(range)),0)?(result=$send(this.$active_queue(),"select",[],(function $$8(a){var $ret_or_1,self=null==$$8.$$s?this:$$8.$$s;return null==a&&(a=nil),$truthy($ret_or_1=a.$range()["$empty?"]())?self["$adjacent?"](range,a.$range()):$ret_or_1}),{$$arity:1,$$s:this}),$truthy(result["$empty?"]())?nil:result):nil}),1),$def(self,"$adjacent_updates?",(function(range){return $neqeq(this.$active_clobber()["$&"](this.$adjacent_position_mask(range)),0)?$send(this.$active_queue(),"select",[],(function $$10(a){return null==a&&(a=nil),(null==$$10.$$s?this:$$10.$$s)["$adjacent?"](range,a.$range())}),{$$arity:1,$$s:this}):nil}),1),$def(self,"$replace_compatible_with_insertion?",(function(replace,insertion){var $ret_or_1,$ret_or_2,offset=nil;return $truthy($ret_or_1=$truthy($ret_or_2=$rb_ge($rb_minus(replace.$replacement().$length(),replace.$range().$size()),insertion.$range().$size()))?offset=$rb_minus(insertion.$range().$begin_pos(),replace.$range().$begin_pos()):$ret_or_2)?replace.$replacement()["$[]"](offset,insertion.$replacement().$length())["$=="](insertion.$replacement()):$ret_or_1}),2),$def(self,"$can_merge?",(function(action,existing){var range=nil;return range=action.$range(),$send(existing,"all?",[],(function(other){var repl1_offset,repl2_offset,repl1_length,repl2_length,replacement2,overlap=nil,replacement1=nil,$ret_or_1=nil;return null==other&&(other=nil),overlap=range.$intersect(other.$range()),!!$truthy(overlap["$nil?"]())||(repl1_offset=$rb_minus(overlap.$begin_pos(),range.$begin_pos()),repl2_offset=$rb_minus(overlap.$begin_pos(),other.$range().$begin_pos()),repl1_length=[$rb_minus(other.$range().$length(),repl2_offset),$rb_minus(other.$replacement().$length(),repl2_offset)].$max(),repl2_length=[$rb_minus(range.$length(),repl1_offset),$rb_minus(action.$replacement().$length(),repl1_offset)].$max(),replacement1=$truthy($ret_or_1=action.$replacement()["$[]"](repl1_offset,repl1_length))?$ret_or_1:"".$freeze(),replacement2=$truthy($ret_or_1=other.$replacement()["$[]"](repl2_offset,repl2_length))?$ret_or_1:"".$freeze(),replacement1["$=="](replacement2))}),1)}),2),$def(self,"$merge_actions",(function(action,existing){var range,actions=nil;return range=(actions=$send(existing.$push(action),"sort_by",[],(function(a){return null==a&&(a=nil),[a.$range().$begin_pos(),a.$range().$end_pos()]}),1)).$first().$range().$join($send(actions,"max_by",[],(function(a){return null==a&&(a=nil),a.$range().$end_pos()}),1).$range()),$$$($$("Rewriter"),"Action").$new(range,this.$merge_replacements(actions))}),2),$def(self,"$merge_actions!",(function(action,existing){var new_action;return new_action=this.$merge_actions(action,existing),this.$active_queue().$delete(action),this.$replace_actions(existing,new_action)}),2),$def(self,"$merge_replacements",(function(actions){var result=nil,prev_act=nil;return result="".$dup(),prev_act=nil,$send(actions,"each",[],(function(act){var prev_end=nil,offset=nil;return null==act&&(act=nil),$not(prev_act)||$truthy(act.$range()["$disjoint?"](prev_act.$range()))?result["$<<"](act.$replacement()):(prev_end=[$rb_plus(prev_act.$range().$begin_pos(),prev_act.$replacement().$length()),prev_act.$range().$end_pos()].$max(),offset=$rb_minus(prev_end,act.$range().$begin_pos()),$truthy($rb_lt(offset,act.$replacement().$size()))&&result["$<<"](act.$replacement()["$[]"](Opal.Range.$new(offset,-1,!1)))),prev_act=act}),1),result}),1),$def(self,"$replace_actions",(function(old,updated){return $send(old,"each",[],(function $$18(act){return null==act&&(act=nil),(null==$$18.$$s?this:$$18.$$s).$active_queue().$delete(act)}),{$$arity:1,$$s:this}),this.$active_queue()["$<<"](updated)}),2),$def(self,"$raise_clobber_error",(function(action,existing){var diagnostic=nil;return diagnostic=$$("Diagnostic").$new("error","invalid_action",$hash2(["action"],{action:action}),action.$range()),this.diagnostics.$process(diagnostic),diagnostic=$$("Diagnostic").$new("note","clobbered",$hash2(["action"],{action:existing["$[]"](0)}),existing["$[]"](0).$range()),this.diagnostics.$process(diagnostic),this.$raise($$("ClobberingError"),"Parser::Source::Rewriter detected clobbering")}),2),$def(self,"$in_transaction?",(function(){return this.pending_queue["$nil?"]()["$!"]()}),0),$def(self,"$active_queue",(function(){var $ret_or_1;return $truthy($ret_or_1=this.pending_queue)?$ret_or_1:this.queue}),0),$def(self,"$active_clobber",(function(){var $ret_or_1;return $truthy($ret_or_1=this.pending_clobber)?$ret_or_1:this.clobber}),0),$def(self,"$active_insertions",(function(){var $ret_or_1;return $truthy($ret_or_1=this.pending_insertions)?$ret_or_1:this.insertions}),0),$def(self,"$active_clobber=",(function(value){return $truthy(this.pending_clobber)?this.pending_clobber=value:this.clobber=value}),1),$def(self,"$active_insertions=",(function(value){return $truthy(this.pending_insertions)?this.pending_insertions=value:this.insertions=value}),1),$def(self,"$adjacent?",(function(range1,range2){var $ret_or_1;return $truthy($ret_or_1=$rb_le(range1.$begin_pos(),range2.$end_pos()))?$rb_le(range2.$begin_pos(),range1.$end_pos()):$ret_or_1}),2),$const_set($nesting[0],"DEPRECATION_WARNING",["Parser::Source::Rewriter is deprecated.","Please update your code to use Parser::Source::TreeRewriter instead"].$join("\n").$freeze()),self.$extend($$("Deprecation"))}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/rewriter/action"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$eqeq=Opal.eqeq;return Opal.add_stubs("include,attr_reader,alias_method,freeze,<=>,begin_pos,range,zero?,order,empty?,==,length,inspect"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Action"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.replacement=$proto.range=nil,self.$include($$("Comparable")),self.$attr_reader("range","replacement","allow_multiple_insertions","order"),self.$alias_method("allow_multiple_insertions?","allow_multiple_insertions"),$def(self,"$initialize",(function(range,replacement,allow_multiple_insertions,order){return null==replacement&&(replacement=""),null==allow_multiple_insertions&&(allow_multiple_insertions=!1),null==order&&(order=0),this.range=range,this.replacement=replacement,this.allow_multiple_insertions=allow_multiple_insertions,this.order=order,this.$freeze()}),-2),$def(self,"$<=>",(function(other){var result=nil;return result=this.$range().$begin_pos()["$<=>"](other.$range().$begin_pos()),$truthy(result["$zero?"]())?this.$order()["$<=>"](other.$order()):result}),1),$def(self,"$to_s",(function(){return $eqeq(this.range.$length(),0)&&$truthy(this.replacement["$empty?"]())?"do nothing":$eqeq(this.range.$length(),0)?"insert "+this.replacement.$inspect():$truthy(this.replacement["$empty?"]())?"remove "+this.range.$length()+" character(s)":"replace "+this.range.$length()+" character(s) with "+this.replacement.$inspect()}),0)}(Opal.$r($nesting)("Rewriter"),0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/tree_rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$lambda=Opal.lambda,$gvars=Opal.gvars,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$const_set=Opal.const_set,$eqeqeq=Opal.eqeqeq,$range=Opal.range,$to_ary=Opal.to_ary,$rb_gt=(Opal.hash,Opal.rb_gt),$rb_lt=Opal.rb_lt,$slice=Opal.slice;return Opal.add_stubs("attr_reader,new,puts,render,consumer=,-,freeze,check_policy_validity,method,adjust,source_range,empty?,==,source_buffer,raise,combine,action_root,merge!,dup,contract,+,begin_pos,range,end_pos,check_range_validity,moved,to_s,replace,wrap,source,each,ordered_replacements,<<,[],length,join,nested_actions,class,name,action_summary,warn_of_deprecation,insert_before,insert_after,extend,protected,private,as_replacements,===,size,first,map,to_range,inspect,values,>,<,trigger_policy,process"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"TreeRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.diagnostics=$proto.source_buffer=$proto.enforcer=$proto.action_root=$proto.in_transaction=$proto.policy=nil,self.$attr_reader("source_buffer"),self.$attr_reader("diagnostics"),$def(self,"$initialize",(function(source_buffer,$kwargs){var crossing_deletions,different_replacements,swallowed_insertions,$writer,all_encompassing_range;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(crossing_deletions=$kwargs.$$smap.crossing_deletions)&&(crossing_deletions="accept"),null==(different_replacements=$kwargs.$$smap.different_replacements)&&(different_replacements="accept"),null==(swallowed_insertions=$kwargs.$$smap.swallowed_insertions)&&(swallowed_insertions="accept"),this.diagnostics=$$$($$("Diagnostic"),"Engine").$new(),$writer=[$lambda((function(diag){return null==$gvars.stderr&&($gvars.stderr=nil),null==diag&&(diag=nil),$gvars.stderr.$puts(diag.$render())}),1)],$send(this.diagnostics,"consumer=",$to_a($writer)),$rb_minus($writer.length,1),this.source_buffer=source_buffer,this.in_transaction=!1,this.policy=$hash2(["crossing_deletions","different_replacements","swallowed_insertions"],{crossing_deletions:crossing_deletions,different_replacements:different_replacements,swallowed_insertions:swallowed_insertions}).$freeze(),this.$check_policy_validity(),this.enforcer=this.$method("enforce_policy"),all_encompassing_range=this.source_buffer.$source_range().$adjust($hash2(["begin_pos","end_pos"],{begin_pos:-1,end_pos:1})),this.action_root=$$$($$("TreeRewriter"),"Action").$new(all_encompassing_range,this.enforcer)}),-2),$def(self,"$empty?",(function(){return this.action_root["$empty?"]()}),0),$def(self,"$merge!",(function(with$){return $eqeq(this.$source_buffer(),with$.$source_buffer())||this.$raise("TreeRewriter are not for the same source_buffer"),this.action_root=this.action_root.$combine(with$.$action_root()),this}),1),$def(self,"$merge",(function(with$){return this.$dup()["$merge!"](with$)}),1),$def(self,"$import!",(function(foreign_rewriter,$kwargs){var offset,merge_effective_range,merge_with,contracted=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(offset=$kwargs.$$smap.offset)&&(offset=0),$truthy(foreign_rewriter["$empty?"]())||(contracted=foreign_rewriter.$action_root().$contract(),merge_effective_range=$$$($$$($$$("Parser"),"Source"),"Range").$new(this.source_buffer,$rb_plus(contracted.$range().$begin_pos(),offset),$rb_plus(contracted.$range().$end_pos(),offset)),this.$check_range_validity(merge_effective_range),merge_with=contracted.$moved(this.source_buffer,offset),this.action_root=this.action_root.$combine(merge_with)),this}),-2),$def(self,"$replace",(function(range,content){return this.$combine(range,$hash2(["replacement"],{replacement:content}))}),2),$def(self,"$wrap",(function(range,insert_before,insert_after){return this.$combine(range,$hash2(["insert_before","insert_after"],{insert_before:insert_before.$to_s(),insert_after:insert_after.$to_s()}))}),3),$def(self,"$remove",(function(range){return this.$replace(range,"".$freeze())}),1),$def(self,"$insert_before",(function(range,content){return this.$wrap(range,content,nil)}),2),$def(self,"$insert_after",(function(range,content){return this.$wrap(range,nil,content)}),2),$def(self,"$process",(function(){var source=nil,chunks=nil,last_end=nil;return source=this.source_buffer.$source(),chunks=[],last_end=0,$send(this.action_root.$ordered_replacements(),"each",[],(function(range,replacement){return null==range&&(range=nil),null==replacement&&(replacement=nil),chunks["$<<"](source["$[]"](Opal.Range.$new(last_end,range.$begin_pos(),!0)))["$<<"](replacement),last_end=range.$end_pos()}),2),chunks["$<<"](source["$[]"](Opal.Range.$new(last_end,source.$length(),!0))),chunks.$join()}),0),$def(self,"$as_replacements",(function(){return this.action_root.$ordered_replacements()}),0),$def(self,"$as_nested_actions",(function(){return this.action_root.$nested_actions()}),0),$def(self,"$transaction",(function $$transaction(){var $yield=$$transaction.$$p||nil,self=this,previous=nil,restore_root=nil;return delete $$transaction.$$p,function(){try{return $yield===nil&&self.$raise(self.$class()+"#transaction requires block"),previous=self.in_transaction,self.in_transaction=!0,restore_root=self.action_root,Opal.yieldX($yield,[]),restore_root=nil,self}finally{$truthy(restore_root)&&(self.action_root=restore_root),self.in_transaction=previous}}()}),0),$def(self,"$in_transaction?",(function(){return this.in_transaction}),0),$def(self,"$inspect",(function(){return"#<"+this.$class()+" "+this.$source_buffer().$name()+": "+this.$action_summary()+">"}),0),$def(self,"$insert_before_multi",(function(range,text){return this.$class().$warn_of_deprecation(),this.$insert_before(range,text)}),2),$def(self,"$insert_after_multi",(function(range,text){return this.$class().$warn_of_deprecation(),this.$insert_after(range,text)}),2),$const_set($nesting[0],"DEPRECATION_WARNING",["TreeRewriter#insert_before_multi and insert_before_multi exist only for legacy compatibility.","Please update your code to use `wrap`, `insert_before` or `insert_after` instead."].$join("\n").$freeze()),self.$extend($$("Deprecation")),self.$protected(),self.$attr_reader("action_root"),self.$private(),$def(self,"$action_summary",(function(){var $ret_or_1,replacements=nil,suffix=nil,parts=nil;return replacements=this.$as_replacements(),$eqeqeq(0,$ret_or_1=replacements.$size())?"empty":($eqeqeq($range(1,3,!1),$ret_or_1)||(replacements=replacements.$first(3),suffix="…"),parts=$send(replacements,"map",[],(function($mlhs_tmp1){var $a,range=nil,str=nil;return null==$mlhs_tmp1&&($mlhs_tmp1=nil),range=null==($a=$to_ary($mlhs_tmp1))[0]?nil:$a[0],str=null==$a[1]?nil:$a[1],$truthy(str["$empty?"]())?"-"+range.$to_range():$eqeq(range.$size(),0)?"+"+str.$inspect()+"@"+range.$begin_pos():"^"+str.$inspect()+"@"+range.$to_range()}),{$$arity:1,$$has_top_level_mlhs_arg:!0}),$truthy(suffix)&&parts["$<<"](suffix),parts.$join(", "))}),0),$const_set($nesting[0],"ACTIONS",["accept","warn","raise"].$freeze()),$def(self,"$check_policy_validity",(function(){var invalid=nil;return invalid=$rb_minus(this.policy.$values(),$$("ACTIONS")),$truthy(invalid["$empty?"]())?nil:this.$raise($$("ArgumentError"),"Invalid policy: "+invalid.$join(", "))}),0),$def(self,"$combine",(function(range,attributes){var action;return range=this.$check_range_validity(range),action=$$$($$("TreeRewriter"),"Action").$new(range,this.enforcer,Opal.to_hash(attributes)),this.action_root=this.action_root.$combine(action),this}),2),$def(self,"$check_range_validity",(function(range){return($truthy($rb_lt(range.$begin_pos(),0))||$truthy($rb_gt(range.$end_pos(),this.source_buffer.$source().$size())))&&this.$raise($$("IndexError"),"The range "+range.$to_range()+" is outside the bounds of the source"),range}),1),$def(self,"$enforce_policy",(function $$enforce_policy(event){var values,$yield=$$enforce_policy.$$p||nil;return delete $$enforce_policy.$$p,$eqeq(this.policy["$[]"](event),"accept")?nil:$truthy(values=Opal.yieldX($yield,[]))?this.$trigger_policy(event,Opal.to_hash(values)):nil}),1),$const_set($nesting[0],"POLICY_TO_LEVEL",$hash2(["warn","raise"],{warn:"warning",raise:"error"}).$freeze()),$def(self,"$trigger_policy",(function(event,$kwargs){var range,conflict,arguments$,$a,action,$ret_or_1,diag=nil,highlights=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(range=$kwargs.$$smap.range)&&(range=this.$raise()),null==(conflict=$kwargs.$$smap.conflict)&&(conflict=nil),arguments$=Opal.kwrestargs($kwargs,{range:!0,conflict:!0}),action=$truthy($ret_or_1=this.policy["$[]"](event))?$ret_or_1:"raise",diag=$$$($$("Parser"),"Diagnostic").$new($$("POLICY_TO_LEVEL")["$[]"](action),event,arguments$,range),this.diagnostics.$process(diag),$truthy(conflict)&&(range=null==($a=$to_ary(conflict))[0]?nil:$a[0],highlights=$slice.call($a,1),diag=$$$($$("Parser"),"Diagnostic").$new($$("POLICY_TO_LEVEL")["$[]"](action),event+"_conflict",arguments$,range,highlights),this.diagnostics.$process(diag)),$eqeq(action,"raise")?this.$raise($$$($$("Parser"),"ClobberingError"),"Parser::Source::TreeRewriter detected clobbering"):nil}),-2)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/tree_rewriter/action"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$not=Opal.not,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$rb_gt=Opal.rb_gt,$rb_minus=Opal.rb_minus,$rb_ge=Opal.rb_ge,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_lt=Opal.rb_lt,$neqeq=Opal.neqeq;return Opal.add_stubs("attr_reader,freeze,empty?,do_combine,==,<<,begin,concat,flat_map,to_proc,end,!,insert_before,insert_after,replacement,raise,insertion?,with,begin_pos,range,first,children,end_pos,last,new,+,map,moved,protected,swallow,class,merge,place_in_hierarchy,analyse_hierarchy,[],fuse_deletions,combine_children,inject,size,bsearch,bsearch_child_index,>,-,>=,===,<=>,<=,check_fusible,<,shift,pop,compact!,each,call,call_enforcer_for_merge,!=,select"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super){var self=$klass($base,null,"Action"),$proto=self.$$prototype;return $proto.insert_before=$proto.insert_after=$proto.children=$proto.replacement=$proto.range=$proto.enforcer=nil,self.$attr_reader("range","replacement","insert_before","insert_after"),$def(self,"$initialize",(function(range,enforcer,$kwargs){var insert_before,replacement,insert_after,children,$a;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(insert_before=$kwargs.$$smap.insert_before)&&(insert_before=""),null==(replacement=$kwargs.$$smap.replacement)&&(replacement=nil),null==(insert_after=$kwargs.$$smap.insert_after)&&(insert_after=""),null==(children=$kwargs.$$smap.children)&&(children=[]),$a=[range,enforcer,children.$freeze(),insert_before.$freeze(),replacement,insert_after.$freeze()],this.range=$a[0],this.enforcer=$a[1],this.children=$a[2],this.insert_before=$a[3],this.replacement=$a[4],this.insert_after=$a[5],this.$freeze()}),-3),$def(self,"$combine",(function(action){return $truthy(action["$empty?"]())?this:this.$do_combine(action)}),1),$def(self,"$empty?",(function(){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.insert_before["$empty?"]())?this.insert_after["$empty?"]():$ret_or_3)?this.children["$empty?"]():$ret_or_2)?$truthy($ret_or_2=this.replacement["$=="](nil))?$ret_or_2:$truthy($ret_or_3=this.replacement["$empty?"]())?this.range["$empty?"]():$ret_or_3:$ret_or_1}),0),$def(self,"$ordered_replacements",(function(){var reps=nil;return reps=[],$truthy(this.insert_before["$empty?"]())||reps["$<<"]([this.range.$begin(),this.insert_before]),$truthy(this.replacement)&&reps["$<<"]([this.range,this.replacement]),reps.$concat($send(this.children,"flat_map",[],"ordered_replacements".$to_proc())),$truthy(this.insert_after["$empty?"]())||reps["$<<"]([this.range.$end(),this.insert_after]),reps}),0),$def(self,"$nested_actions",(function(){var actions=nil;return actions=[],($not(this.insert_before["$empty?"]())||$not(this.insert_after["$empty?"]()))&&actions["$<<"](["wrap",this.range,this.insert_before,this.insert_after]),$truthy(this.replacement)&&actions["$<<"](["replace",this.range,this.replacement]),actions.$concat($send(this.children,"flat_map",[],"nested_actions".$to_proc()))}),0),$def(self,"$insertion?",(function(){var $ret_or_1,$ret_or_2=nil;return $truthy($ret_or_1=$truthy($ret_or_2=this.$insert_before()["$empty?"]()["$!"]())?$ret_or_2:this.$insert_after()["$empty?"]()["$!"]())?$ret_or_1:$truthy($ret_or_2=this.$replacement())?this.$replacement()["$empty?"]()["$!"]():$ret_or_2}),0),$def(self,"$contract",(function(){var range;return $truthy(this["$empty?"]())&&this.$raise("Empty actions can not be contracted"),$truthy(this["$insertion?"]())?this:(range=this.range.$with($hash2(["begin_pos","end_pos"],{begin_pos:this.$children().$first().$range().$begin_pos(),end_pos:this.$children().$last().$range().$end_pos()})),this.$with($hash2(["range"],{range:range})))}),0),$def(self,"$moved",(function(source_buffer,offset){var moved_range;return moved_range=$$$($$$($$$("Parser"),"Source"),"Range").$new(source_buffer,$rb_plus(this.range.$begin_pos(),offset),$rb_plus(this.range.$end_pos(),offset)),this.$with($hash2(["range","children"],{range:moved_range,children:$send(this.$children(),"map",[],(function(child){return null==child&&(child=nil),child.$moved(source_buffer,offset)}),1)}))}),2),self.$protected(),self.$attr_reader("children"),$def(self,"$with",(function($kwargs){var range,enforcer,children,insert_before,replacement,insert_after;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(range=$kwargs.$$smap.range)&&(range=this.range),null==(enforcer=$kwargs.$$smap.enforcer)&&(enforcer=this.enforcer),null==(children=$kwargs.$$smap.children)&&(children=this.children),null==(insert_before=$kwargs.$$smap.insert_before)&&(insert_before=this.insert_before),null==(replacement=$kwargs.$$smap.replacement)&&(replacement=this.replacement),null==(insert_after=$kwargs.$$smap.insert_after)&&(insert_after=this.insert_after),$truthy(replacement)&&(children=this.$swallow(children)),this.$class().$new(range,enforcer,$hash2(["children","insert_before","replacement","insert_after"],{children:children,insert_before:insert_before,replacement:replacement,insert_after:insert_after}))}),-1),$def(self,"$do_combine",(function(action){return $eqeq(action.$range(),this.range)?this.$merge(action):this.$place_in_hierarchy(action)}),1),$def(self,"$place_in_hierarchy",(function(action){var family=nil,extra_sibbling=nil;return family=this.$analyse_hierarchy(action),$truthy(family["$[]"]("fusible"))?this.$fuse_deletions(action,family["$[]"]("fusible"),[].concat($to_a(family["$[]"]("sibbling_left"))).concat($to_a(family["$[]"]("child"))).concat($to_a(family["$[]"]("sibbling_right")))):(extra_sibbling=$truthy(family["$[]"]("parent"))?family["$[]"]("parent").$do_combine(action):$truthy(family["$[]"]("child"))?action.$with($hash2(["children","enforcer"],{children:family["$[]"]("child"),enforcer:this.enforcer})).$combine_children(action.$children()):action,this.$with($hash2(["children"],{children:[].concat($to_a(family["$[]"]("sibbling_left"))).concat([extra_sibbling]).concat($to_a(family["$[]"]("sibbling_right")))})))}),1),$def(self,"$combine_children",(function(more_children){return $send(more_children,"inject",[this],(function(parent,new_child){return null==parent&&(parent=nil),null==new_child&&(new_child=nil),parent.$place_in_hierarchy(new_child)}),2)}),1),$def(self,"$fuse_deletions",(function(action,fusible,other_sibblings){var fused_range,fused_deletion,without_fusible=nil;return without_fusible=this.$with($hash2(["children"],{children:other_sibblings})),fused_range=$send([action].concat($to_a(fusible)),"map",[],"range".$to_proc()).$inject("join"),fused_deletion=action.$with($hash2(["range"],{range:fused_range})),without_fusible.$do_combine(fused_deletion)}),3),$def(self,"$bsearch_child_index",(function $$bsearch_child_index(from){var size,$ret_or_1,$yield=$$bsearch_child_index.$$p||nil;return delete $$bsearch_child_index.$$p,null==from&&(from=0),size=this.children.$size(),$truthy($ret_or_1=$send(Opal.Range.$new(from,size,!0),"bsearch",[],(function $$6(i){var self=null==$$6.$$s?this:$$6.$$s;return null==self.children&&(self.children=nil),null==i&&(i=nil),Opal.yield1($yield,self.children["$[]"](i))}),{$$arity:1,$$s:this}))?$ret_or_1:size}),-1),$def(self,"$analyse_hierarchy",(function(action){var start,center,$ret_or_1,r=nil,left_index=nil,right_index=nil,parent=nil,overlap_left=nil,overlap_right=nil,contained=nil,fusible=nil;return r=action.$range(),left_index=$send(this,"bsearch_child_index",[],(function(child){return null==child&&(child=nil),$rb_gt(child.$range().$end_pos(),r.$begin_pos())}),1),start=$eqeq(left_index,0)?0:$rb_minus(left_index,1),right_index=$send(this,"bsearch_child_index",[start],(function(child){return null==child&&(child=nil),$rb_ge(child.$range().$begin_pos(),r.$end_pos())}),1),center=$rb_minus(right_index,left_index),$eqeqeq(0,$ret_or_1=center)||($eqeqeq(-1,$ret_or_1)?(left_index=$rb_minus(left_index,1),right_index=$rb_plus(right_index,1),parent=this.children["$[]"](left_index)):(overlap_left=this.children["$[]"](left_index).$range().$begin_pos()["$<=>"](r.$begin_pos()),overlap_right=this.children["$[]"]($rb_minus(right_index,1)).$range().$end_pos()["$<=>"](r.$end_pos()),$eqeq(center,1)&&$truthy($rb_le(overlap_left,0))&&$truthy($rb_ge(overlap_right,0))?parent=this.children["$[]"](left_index):(contained=this.children["$[]"](Opal.Range.$new(left_index,right_index,!0)),fusible=this.$check_fusible(action,$truthy($rb_lt(overlap_left,0))?contained.$shift():nil,$truthy($rb_gt(overlap_right,0))?contained.$pop():nil)))),$hash2(["parent","sibbling_left","sibbling_right","fusible","child"],{parent:parent,sibbling_left:this.children["$[]"](Opal.Range.$new(0,left_index,!0)),sibbling_right:this.children["$[]"](Opal.Range.$new(right_index,this.children.$size(),!0)),fusible:fusible,child:contained})}),1),$def(self,"$check_fusible",(function(action,$a){var fusible,self=this;return(fusible=Opal.slice.call(arguments,1))["$compact!"](),$truthy(fusible["$empty?"]())?nil:($send(fusible,"each",[],(function $$9(child){var kind,self=null==$$9.$$s?this:$$9.$$s;return null==self.enforcer&&(self.enforcer=nil),null==child&&(child=nil),kind=$truthy(action["$insertion?"]())||$truthy(child["$insertion?"]())?"crossing_insertions":"crossing_deletions",$send(self.enforcer,"call",[kind],(function(){return $hash2(["range","conflict"],{range:action.$range(),conflict:child.$range()})}),0)}),{$$arity:1,$$s:self}),fusible)}),-2),$def(self,"$merge",(function(action){var $ret_or_1;return this.$call_enforcer_for_merge(action),this.$with($hash2(["insert_before","replacement","insert_after"],{insert_before:""+action.$insert_before()+this.$insert_before(),replacement:$truthy($ret_or_1=action.$replacement())?$ret_or_1:this.replacement,insert_after:""+this.$insert_after()+action.$insert_after()})).$combine_children(action.$children())}),1),$def(self,"$call_enforcer_for_merge",(function(action){return $send(this.enforcer,"call",["different_replacements"],(function $$11(){var self=null==$$11.$$s?this:$$11.$$s;return null==self.replacement&&(self.replacement=nil),null==self.range&&(self.range=nil),$truthy(self.replacement)&&$truthy(action.$replacement())&&$neqeq(self.replacement,action.$replacement())?$hash2(["range","replacement","other_replacement"],{range:self.range,replacement:action.$replacement(),other_replacement:self.replacement}):nil}),{$$arity:0,$$s:this})}),1),$def(self,"$swallow",(function(children){return $send(this.enforcer,"call",["swallowed_insertions"],(function $$12(){var self=null==$$12.$$s?this:$$12.$$s,insertions=nil;return null==self.range&&(self.range=nil),insertions=$send(children,"select",[],"insertion?".$to_proc()),$truthy(insertions["$empty?"]())?nil:$hash2(["range","conflict"],{range:self.range,conflict:$send(insertions,"map",[],"range".$to_proc())})}),{$$arity:0,$$s:this}),[]}),1)}(Opal.$r($nesting)("TreeRewriter"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super,$send=Opal.send,$truthy=Opal.truthy,$hash2=Opal.hash2,$eqeq=Opal.eqeq,$range=Opal.range,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus;return Opal.add_stubs("attr_reader,freeze,line,alias_method,column,last_line,last_column,with,update_expression,==,class,reduce,map,instance_variables,instance_variable_get,send,inject,to_sym,[],[]=,-,protected,tap,dup,to_proc"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,null,"Map"),$proto=self.$$prototype;return $proto.node=$proto.expression=nil,self.$attr_reader("node"),self.$attr_reader("expression"),$def(self,"$initialize",(function(expression){return this.expression=expression}),1),$def(self,"$initialize_copy",(function $$initialize_copy(other){var $yield=$$initialize_copy.$$p||nil;return delete $$initialize_copy.$$p,$send2(this,$find_super(this,"initialize_copy",$$initialize_copy,!1,!0),"initialize_copy",[other],$yield),this.node=nil}),1),$def(self,"$node=",(function(node){return this.node=node,this.$freeze(),this.node}),1),$def(self,"$line",(function(){return this.expression.$line()}),0),self.$alias_method("first_line","line"),$def(self,"$column",(function(){return this.expression.$column()}),0),$def(self,"$last_line",(function(){return this.expression.$last_line()}),0),$def(self,"$last_column",(function(){return this.expression.$last_column()}),0),$def(self,"$with_expression",(function(expression_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_expression(expression_l)}),1)}),1),$def(self,"$==",(function(other){var $ret_or_1;return $truthy($ret_or_1=other.$class()["$=="](this.$class()))?$send(this.$instance_variables(),"map",[],(function $$4(ivar){return null==ivar&&(ivar=nil),(null==$$4.$$s?this:$$4.$$s).$instance_variable_get(ivar)["$=="](other.$send("instance_variable_get",ivar))}),{$$arity:1,$$s:this}).$reduce("&"):$ret_or_1}),1),$def(self,"$to_hash",(function(){return $send(this.$instance_variables(),"inject",[$hash2([],{})],(function $$5(hash,ivar){var $writer,self=null==$$5.$$s?this:$$5.$$s;return null==hash&&(hash=nil),null==ivar&&(ivar=nil),$eqeq(ivar.$to_sym(),"@node")||($writer=[ivar["$[]"]($range(1,-1,!1)).$to_sym(),self.$instance_variable_get(ivar)],$send(hash,"[]=",$to_a($writer)),$rb_minus($writer.length,1)),hash}),{$$arity:2,$$s:this})}),0),self.$protected(),$def(self,"$with",(function $Map_with$6(){var block=$Map_with$6.$$p||nil;return delete $Map_with$6.$$p,$send(this.$dup(),"tap",[],block.$to_proc())}),0),$def(self,"$update_expression",(function(expression_l){return this.expression=expression_l}),1)}([$module($base,"Source")].concat($parent_nesting)[0])}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/operator"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Operator");return self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(operator,expression){return delete $$initialize.$$p,this.operator=operator,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression],null)}),2)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/collection"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Collection");return self.$attr_reader("begin"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),3)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/constant"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Constant");return self.$attr_reader("double_colon"),self.$attr_reader("name"),self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(double_colon,name,expression){var $a;return delete $$initialize.$$p,$a=[double_colon,name],this.double_colon=$a[0],this.name=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression],null)}),3),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/variable"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Variable");return self.$attr_reader("name"),self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(name_l,expression_l){return delete $$initialize.$$p,null==expression_l&&(expression_l=name_l),this.name=name_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),-2),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/keyword"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Keyword");return self.$attr_reader("keyword"),self.$attr_reader("begin"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(keyword_l,begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,this.keyword=keyword_l,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/definition"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader,join"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Definition"),$proto=self.$$prototype;return $proto.keyword=$proto.end=nil,self.$attr_reader("keyword"),self.$attr_reader("operator"),self.$attr_reader("name"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(keyword_l,operator_l,name_l,end_l){return delete $$initialize.$$p,this.keyword=keyword_l,this.operator=operator_l,this.name=name_l,this.end=end_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[this.keyword.$join(this.end)],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/method_definition"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("attr_reader,join"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"MethodDefinition");return self.$$prototype.keyword=nil,self.$attr_reader("keyword"),self.$attr_reader("operator"),self.$attr_reader("name"),self.$attr_reader("end"),self.$attr_reader("assignment"),$def(self,"$initialize",(function $$initialize(keyword_l,operator_l,name_l,end_l,assignment_l,body_l){var $ret_or_1;return delete $$initialize.$$p,this.keyword=keyword_l,this.operator=operator_l,this.name=name_l,this.end=end_l,this.assignment=assignment_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[this.keyword.$join($truthy($ret_or_1=end_l)?$ret_or_1:body_l)],null)}),6)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/send"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Send");return self.$attr_reader("dot"),self.$attr_reader("selector"),self.$attr_reader("operator"),self.$attr_reader("begin"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(dot_l,selector_l,begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,this.dot=dot_l,this.selector=selector_l,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),5),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/index"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Index");return self.$attr_reader("begin"),self.$attr_reader("end"),self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],this.operator=nil,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),3),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/condition"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Condition");return self.$attr_reader("keyword"),self.$attr_reader("begin"),self.$attr_reader("else"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(keyword_l,begin_l,else_l,end_l,expression_l){var $a;return delete $$initialize.$$p,this.keyword=keyword_l,$a=[begin_l,else_l,end_l],this.begin=$a[0],this.else=$a[1],this.end=$a[2],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),5)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/ternary"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Ternary");return self.$attr_reader("question"),self.$attr_reader("colon"),$def(self,"$initialize",(function $$initialize(question_l,colon_l,expression_l){var $a;return delete $$initialize.$$p,$a=[question_l,colon_l],this.question=$a[0],this.colon=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),3)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/for"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"For");return self.$attr_reader("keyword","in"),self.$attr_reader("begin","end"),$def(self,"$initialize",(function $$initialize(keyword_l,in_l,begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,$a=[keyword_l,in_l],this.keyword=$a[0],this.in=$a[1],$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),5)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/rescue_body"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"RescueBody");return self.$attr_reader("keyword"),self.$attr_reader("assoc"),self.$attr_reader("begin"),$def(self,"$initialize",(function $$initialize(keyword_l,assoc_l,begin_l,expression_l){return delete $$initialize.$$p,this.keyword=keyword_l,this.assoc=assoc_l,this.begin=begin_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/heredoc"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Heredoc");return self.$attr_reader("heredoc_body"),self.$attr_reader("heredoc_end"),$def(self,"$initialize",(function $$initialize(begin_l,body_l,end_l){return delete $$initialize.$$p,this.heredoc_body=body_l,this.heredoc_end=end_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[begin_l],null)}),3)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/objc_kwarg"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ObjcKwarg");return self.$attr_reader("keyword"),self.$attr_reader("operator"),self.$attr_reader("argument"),$def(self,"$initialize",(function $$initialize(keyword_l,operator_l,argument_l,expression_l){var $a;return delete $$initialize.$$p,$a=[keyword_l,operator_l,argument_l],this.keyword=$a[0],this.operator=$a[1],this.argument=$a[2],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/syntax_error"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader,message"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"SyntaxError");return self.$attr_reader("diagnostic"),$def(self,"$initialize",(function $$initialize(diagnostic){return delete $$initialize.$$p,this.diagnostic=diagnostic,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[diagnostic.$message()],null)}),1)}($nesting[0],$$("StandardError"))}($nesting[0],$nesting)},Opal.modules["parser/clobbering_error"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass;return function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return $klass($nesting[0],$$("RuntimeError"),"ClobberingError"),nil}($nesting[0],$nesting)},Opal.modules["parser/diagnostic"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$truthy=Opal.truthy,$hash2=Opal.hash2,$def=Opal.def,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$to_ary=Opal.to_ary,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$send=Opal.send,$to_a=Opal.to_a,$rb_ge=Opal.rb_ge,$not=Opal.not,$neqeq=Opal.neqeq;return Opal.add_stubs("freeze,attr_reader,include?,raise,join,inspect,dup,compile,is?,==,line,last_line,+,message,render_line,first_line_only,last_line_only,-,source_buffer,decompose_position,end_pos,>,private,source_line,*,length,each,line_range,intersect,column_range,size,[]=,>=,!,map,name,!=,resize,=~,source,adjust"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Diagnostic"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.reason=$proto.arguments=$proto.location=$proto.level=$proto.highlights=nil,$const_set($nesting[0],"LEVELS",["note","warning","error","fatal"].$freeze()),self.$attr_reader("level","reason","arguments"),self.$attr_reader("location","highlights"),$def(self,"$initialize",(function(level,reason,arguments$,location,highlights){var $ret_or_1;return null==highlights&&(highlights=[]),$truthy($$("LEVELS")["$include?"](level))||this.$raise($$("ArgumentError"),"Diagnostic#level must be one of "+$$("LEVELS").$join(", ")+"; "+level.$inspect()+" provided."),$truthy(location)||this.$raise("Expected a location"),this.level=level,this.reason=reason,this.arguments=($truthy($ret_or_1=arguments$)?$ret_or_1:$hash2([],{})).$dup().$freeze(),this.location=location,this.highlights=highlights.$dup().$freeze(),this.$freeze()}),-5),$def(self,"$message",(function(){return $$("Messages").$compile(this.reason,this.arguments)}),0),$def(self,"$render",(function(){var $a,$b,first_line=nil,last_line=nil,num_lines=nil,last_lineno=nil,last_column=nil;return $eqeq(this.location.$line(),this.location.$last_line())||$truthy(this.location["$is?"]("\n"))?$rb_plus([this.location+": "+this.level+": "+this.$message()],this.$render_line(this.location)):(first_line=this.$first_line_only(this.location),last_line=this.$last_line_only(this.location),num_lines=$rb_plus($rb_minus(this.location.$last_line(),this.location.$line()),1),$b=this.location.$source_buffer().$decompose_position(this.location.$end_pos()),last_lineno=null==($a=$to_ary($b))[0]?nil:$a[0],last_column=null==$a[1]?nil:$a[1],$rb_plus($rb_plus([this.location+"-"+last_lineno+":"+last_column+": "+this.level+": "+this.$message()],this.$render_line(first_line,$rb_gt(num_lines,2),!1)),this.$render_line(last_line,!1,!0)))}),0),self.$private(),$def(self,"$render_line",(function(range,ellipsis,range_end){var source_line=nil,highlight_line=nil,$writer=nil;return null==ellipsis&&(ellipsis=!1),null==range_end&&(range_end=!1),source_line=range.$source_line(),highlight_line=$rb_times(" ",source_line.$length()),$send(this.highlights,"each",[],(function(highlight){var line_range,$writer=nil;return null==highlight&&(highlight=nil),line_range=range.$source_buffer().$line_range(range.$line()),$truthy(highlight=highlight.$intersect(line_range))?($writer=[highlight.$column_range(),$rb_times("~",highlight.$size())],$send(highlight_line,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),1),$truthy(range["$is?"]("\n"))?highlight_line=$rb_plus(highlight_line,"^"):$not(range_end)&&$truthy($rb_ge(range.$size(),1))?($writer=[range.$column_range(),$rb_plus("^",$rb_times("~",$rb_minus(range.$size(),1)))],$send(highlight_line,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):($writer=[range.$column_range(),$rb_times("~",range.$size())],$send(highlight_line,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy(ellipsis)&&(highlight_line=$rb_plus(highlight_line,"...")),$send([source_line,highlight_line],"map",[],(function(line){return null==line&&(line=nil),range.$source_buffer().$name()+":"+range.$line()+": "+line}),1)}),-2),$def(self,"$first_line_only",(function(range){return $neqeq(range.$line(),range.$last_line())?range.$resize(range.$source()["$=~"](/\n/)):range}),1),$def(self,"$last_line_only",(function(range){return $neqeq(range.$line(),range.$last_line())?range.$adjust($hash2(["begin_pos"],{begin_pos:range.$source()["$=~"](/[^\n]*$/)})):range}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/diagnostic/engine"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("attr_accessor,ignore?,call,raise?,raise,protected,==,level"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Engine"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.consumer=$proto.ignore_warnings=$proto.all_errors_are_fatal=nil,self.$attr_accessor("consumer"),self.$attr_accessor("all_errors_are_fatal"),self.$attr_accessor("ignore_warnings"),$def(self,"$initialize",(function(consumer){return null==consumer&&(consumer=nil),this.consumer=consumer,this.all_errors_are_fatal=!1,this.ignore_warnings=!1}),-1),$def(self,"$process",(function(diagnostic){return $truthy(this["$ignore?"](diagnostic))||$truthy(this.consumer)&&this.consumer.$call(diagnostic),$truthy(this["$raise?"](diagnostic))&&this.$raise($$$($$("Parser"),"SyntaxError"),diagnostic),this}),1),self.$protected(),$def(self,"$ignore?",(function(diagnostic){var $ret_or_1;return $truthy($ret_or_1=this.ignore_warnings)?diagnostic.$level()["$=="]("warning"):$ret_or_1}),1),$def(self,"$raise?",(function(diagnostic){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.all_errors_are_fatal)?diagnostic.$level()["$=="]("error"):$ret_or_2)?$ret_or_1:diagnostic.$level()["$=="]("fatal")}),1)}(Opal.$r($nesting)("Diagnostic"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/static_environment"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def;return Opal.add_stubs("reset,[],push,dup,pop,add,to_sym,include?,declare,declared?,empty?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"StaticEnvironment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.stack=$proto.variables=nil,$const_set($nesting[0],"FORWARD_ARGS","FORWARD_ARGS"),$const_set($nesting[0],"ANONYMOUS_BLOCKARG","ANONYMOUS_BLOCKARG"),$def(self,"$initialize",(function(){return this.$reset()}),0),$def(self,"$reset",(function(){return this.variables=$$("Set")["$[]"](),this.stack=[]}),0),$def(self,"$extend_static",(function(){return this.stack.$push(this.variables),this.variables=$$("Set")["$[]"](),this}),0),$def(self,"$extend_dynamic",(function(){return this.stack.$push(this.variables),this.variables=this.variables.$dup(),this}),0),$def(self,"$unextend",(function(){return this.variables=this.stack.$pop(),this}),0),$def(self,"$declare",(function(name){return this.variables.$add(name.$to_sym()),this}),1),$def(self,"$declared?",(function(name){return this.variables["$include?"](name.$to_sym())}),1),$def(self,"$declare_forward_args",(function(){return this.$declare($$("FORWARD_ARGS"))}),0),$def(self,"$declared_forward_args?",(function(){return this["$declared?"]($$("FORWARD_ARGS"))}),0),$def(self,"$declare_anonymous_blockarg",(function(){return this.$declare($$("ANONYMOUS_BLOCKARG"))}),0),$def(self,"$declared_anonymous_blockarg?",(function(){return this["$declared?"]($$("ANONYMOUS_BLOCKARG"))}),0),$def(self,"$empty?",(function(){return this.stack["$empty?"]()}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/lexer"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$const_set=Opal.const_set,$hash=Opal.hash,$def=Opal.def,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$hash2=Opal.hash2,$rb_plus=Opal.rb_plus,$to_ary=Opal.to_ary,$rb_le=Opal.rb_le,$eqeqeq=Opal.eqeqeq,$rb_gt=Opal.rb_gt,$neqeq=Opal.neqeq,$not=Opal.not,$rb_ge=Opal.rb_ge,$range=Opal.range,$rb_lt=Opal.rb_lt,$gvars=Opal.gvars;return Opal.add_stubs("attr_accessor,private,_lex_trans_keys=,-,_lex_key_spans=,_lex_index_offsets=,_lex_indicies=,_lex_trans_targs=,_lex_trans_actions=,_lex_to_state_actions=,_lex_from_state_actions=,_lex_eof_trans=,lex_start=,lex_error=,lex_en_interp_words=,lex_en_interp_string=,lex_en_plain_words=,lex_en_plain_string=,lex_en_interp_backslash_delimited=,lex_en_plain_backslash_delimited=,lex_en_interp_backslash_delimited_words=,lex_en_plain_backslash_delimited_words=,lex_en_regexp_modifiers=,lex_en_expr_variable=,lex_en_expr_fname=,lex_en_expr_endfn=,lex_en_expr_dot=,lex_en_expr_arg=,lex_en_expr_cmdarg=,lex_en_expr_endarg=,lex_en_expr_mid=,lex_en_expr_beg=,lex_en_expr_labelarg=,lex_en_expr_value=,lex_en_expr_end=,lex_en_leading_dot=,lex_en_line_comment=,lex_en_line_begin=,freeze,ord,union,chars,attr_reader,reset,lex_en_line_begin,class,new,source,==,encoding,unpack,[],lex_en_expr_dot,lex_en_expr_fname,lex_en_expr_value,lex_en_expr_beg,lex_en_expr_mid,lex_en_expr_arg,lex_en_expr_cmdarg,lex_en_expr_end,lex_en_expr_endarg,lex_en_expr_endfn,lex_en_expr_labelarg,lex_en_interp_string,lex_en_interp_words,lex_en_plain_string,fetch,invert,push,count,pop,any?,shift,send,+,size,<=,===,<<,>,!=,emit_comment,tok,literal,flush_string,extend_content,emit,heredoc?,saved_herebody_s=,start_interp_brace,[]=,diagnostic,range,str_s,gsub,version?,nest_and_try_closing,heredoc_e,pop_literal,infer_indent_level,!,eof_codepoint?,words?,extend_space,extend_string,active?,>=,slice,start_with?,chr,munge_escape?,match,regexp?,squiggly_heredoc?,supports_line_continuation_via_slash?,include?,scan,join,=~,to_i,stack_pop,emit_table,push_literal,arg_or_cmdarg,<,emit_do,declared?,nil?,last,in_def_open_args?,getbyte,inspect,end_with?,empty?,index,call,Float,to_f,length,lambda,Rational,Complex,each,encode_escape,%,end_interp_brace_and_try_closing,lexpop,saved_herebody_s,next_state_for_literal,rstrip,&,|,lex_error,protected,force_encoding,process,backslash_delimited?,interpolate?,lex_en_interp_backslash_delimited_words,lex_en_plain_backslash_delimited_words,lex_en_plain_words,lex_en_interp_backslash_delimited,lex_en_plain_backslash_delimited,dedent_level,type,lex_en_regexp_modifiers,upcase"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Lexer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$writer=nil,$proto=self.$$prototype;return $proto.source_buffer=$proto.source_pts=$proto.cs=$proto.cmdarg_stack=$proto.cmdarg=$proto.cond_stack=$proto.cond=$proto.dedent_level=$proto.token_queue=$proto.p=$proto.command_start=$proto.herebody_s=$proto.sharp_s=$proto.ts=$proto.te=$proto.top=$proto.stack=$proto.version=$proto.escape_s=$proto.escape=$proto.act=$proto.static_env=$proto.newline_s=$proto.lambda_stack=$proto.paren_nest=$proto.context=$proto.num_digits_s=$proto.num_suffix_s=$proto.num_base=$proto.num_xfrm=$proto.eq_begin_s=$proto.cs_before_block_comment=$proto.in_kwarg=$proto.tokens=$proto.comments=$proto.diagnostics=$proto.literal_stack=nil,function(self,$parent_nesting){self.$attr_accessor("_lex_trans_keys"),self.$private("_lex_trans_keys","_lex_trans_keys=")}(Opal.get_singleton_class(self)),$send(self,"_lex_trans_keys=",$to_a($writer=[[0,0,101,101,103,103,105,105,110,110,69,69,78,78,68,68,95,95,95,95,0,26,0,127,0,127,0,127,0,127,0,45,0,120,0,120,0,92,0,120,0,120,0,45,0,120,0,120,67,99,45,45,0,92,0,120,0,102,0,127,0,127,0,127,0,127,0,45,0,120,0,120,0,92,0,120,0,120,0,45,0,120,0,120,67,99,45,45,0,92,0,120,0,102,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,58,58,58,58,46,46,10,10,0,127,58,58,60,60,62,62,10,10,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,115,115,99,99,117,117,101,101,108,116,101,101,115,115,115,115,105,105,108,108,105,105,108,108,58,58,0,127,10,10,0,127,9,92,10,10,9,92,58,58,98,98,101,101,103,103,105,105,110,110,0,127,61,61,9,92,9,92,9,92,9,92,9,92,10,10,0,127,0,127,61,126,93,93,0,127,0,127,10,10,34,34,10,10,39,39,0,127,10,96,96,96,0,45,0,120,0,120,0,92,0,120,0,120,0,45,0,120,0,120,67,99,45,45,0,92,0,120,0,102,0,127,0,127,0,127,0,127,0,127,0,127,58,58,58,58,0,127,43,57,48,57,48,57,48,57,48,57,115,115,99,99,117,117,101,101,99,99,117,117,101,101,0,127,58,58,9,92,9,92,9,92,9,92,9,92,9,92,60,60,10,10,9,92,9,92,10,10,10,10,10,10,10,10,46,46,0,95,9,32,0,0,10,10,10,10,98,98,9,32,10,10,95,95,0,92,9,32,36,123,0,127,48,57,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,48,102,48,102,0,0,48,102,48,102,0,0,0,45,0,92,0,92,0,0,0,0,0,92,48,102,48,102,0,0,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,92,36,123,0,127,48,57,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,48,102,48,102,0,0,48,102,48,102,0,0,0,45,0,92,0,92,0,0,0,0,0,92,48,102,48,102,0,0,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,92,9,32,0,26,0,92,0,26,0,35,36,123,0,127,48,57,0,127,0,26,0,35,9,32,36,123,0,127,48,57,0,127,0,32,9,32,65,122,65,122,36,64,0,127,48,57,0,127,0,127,0,127,0,127,9,32,0,0,61,126,10,10,10,10,0,127,0,127,48,57,115,115,38,38,42,42,64,64,58,58,60,61,62,62,61,126,61,61,61,62,0,127,0,127,0,127,0,127,0,127,0,127,0,127,93,93,10,10,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,124,124,0,127,0,127,9,32,10,10,10,10,46,46,10,10,0,0,0,127,0,127,61,61,0,0,9,32,0,0,61,126,10,10,10,10,38,38,42,42,64,64,60,61,62,62,61,126,61,61,61,62,0,127,93,93,10,10,124,124,0,126,0,127,0,61,9,61,9,61,0,0,9,61,9,62,46,46,46,46,58,58,9,32,0,0,0,127,0,0,9,124,0,0,10,10,10,10,0,0,9,61,58,58,60,60,62,62,9,32,10,10,0,127,102,102,101,101,110,110,104,104,0,127,0,127,0,127,0,0,0,127,10,10,0,123,9,32,10,10,10,10,10,10,0,0,111,111,0,0,0,127,0,127,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,58,61,0,0,61,126,61,61,0,0,0,0,0,0,9,32,61,61,9,32,61,126,10,10,10,10,0,127,38,61,0,0,42,61,61,61,9,92,9,92,9,92,46,46,46,46,10,10,0,26,0,127,0,127,61,61,0,0,61,126,61,62,0,0,0,0,0,0,0,0,61,126,0,127,48,57,38,38,42,42,64,64,60,61,62,62,61,61,61,62,0,127,48,57,0,127,124,124,64,64,60,61,0,0,10,34,10,39,96,96,62,62,61,126,61,62,0,122,0,0,0,127,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,48,102,48,102,0,0,48,102,48,102,0,0,0,45,0,92,0,92,0,0,0,0,0,92,48,102,48,102,0,0,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,127,0,127,0,127,0,0,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,61,126,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,0,61,124,0,92,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,61,61,0,0,9,32,0,0,61,126,10,10,10,10,0,127,0,127,48,57,61,61,38,61,0,0,0,0,42,61,61,62,46,57,46,46,10,10,48,101,48,95,46,120,48,114,43,57,48,105,102,102,0,0,101,105,0,0,0,0,48,114,48,114,48,114,48,114,105,114,102,102,0,0,101,105,115,115,0,0,0,0,48,114,48,114,48,114,48,114,48,114,48,114,48,114,48,114,46,114,48,114,46,114,48,114,58,58,60,61,62,62,61,126,61,61,61,62,0,127,0,127,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,0,10,10,0,0,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,9,92,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,0,61,124,0,0,9,92,9,92,9,92,46,46,46,46,10,10,46,46,10,10,10,61,10,10,10,101,10,110,10,100,10,10,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_key_spans"),self.$private("_lex_key_spans","_lex_key_spans=")}(Opal.get_singleton_class(self)),$send(self,"_lex_key_spans=",$to_a($writer=[[0,1,1,1,1,1,1,1,1,1,27,128,128,128,128,46,121,121,93,121,121,46,121,121,33,1,93,121,103,128,128,128,128,46,121,121,93,121,121,46,121,121,33,1,93,121,103,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,1,1,1,128,1,1,1,1,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,1,1,1,9,1,1,1,1,1,1,1,1,128,1,128,84,1,84,1,1,1,1,1,1,128,1,84,84,84,84,84,1,128,128,66,1,128,128,1,1,1,1,128,87,1,46,121,121,93,121,121,46,121,121,33,1,93,121,103,128,128,128,128,128,128,1,1,128,15,10,10,10,10,1,1,1,1,1,1,1,128,1,84,84,84,84,84,84,1,1,84,84,1,1,1,1,1,96,24,0,1,1,1,24,1,1,93,24,88,128,10,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,55,55,0,55,55,0,46,93,93,0,0,93,55,55,0,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,0,0,55,0,93,88,128,10,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,55,55,0,55,55,0,46,93,93,0,0,93,55,55,0,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,0,0,55,0,93,24,27,93,27,36,88,128,10,128,27,36,24,88,128,10,128,33,24,58,58,29,128,10,128,128,128,128,24,0,66,1,1,128,128,10,1,1,1,1,1,2,1,66,1,2,128,128,128,128,128,128,128,1,1,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,128,128,24,1,1,1,1,0,128,128,1,0,24,0,66,1,1,1,1,1,2,1,66,1,2,128,1,1,1,127,128,62,53,53,0,53,54,1,1,1,24,0,128,0,116,0,1,1,0,53,1,1,1,24,1,128,1,1,1,1,128,128,128,0,128,1,124,24,1,1,1,0,1,0,128,128,24,0,1,1,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,4,0,66,1,0,0,0,24,1,24,66,1,1,128,24,0,20,1,84,84,84,1,1,1,27,128,128,1,0,66,2,0,0,0,0,66,128,10,1,1,1,2,1,1,2,128,10,128,1,1,2,0,25,30,1,1,66,2,123,0,128,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,55,55,0,55,55,0,46,93,93,0,0,93,55,55,0,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,0,0,55,0,128,128,128,0,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,66,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,64,93,24,0,1,1,1,0,128,128,24,0,1,1,1,0,128,128,1,0,24,0,66,1,1,128,128,10,1,24,0,0,20,2,12,1,1,54,48,75,67,15,58,1,0,5,0,0,67,67,67,67,10,1,0,5,1,0,0,67,67,67,67,67,67,67,67,69,67,69,67,1,2,1,66,1,2,128,128,0,128,128,128,128,128,128,0,1,0,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,84,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,64,0,84,84,84,1,1,1,1,1,52,1,92,101,91,1]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_index_offsets"),self.$private("_lex_index_offsets","_lex_index_offsets=")}(Opal.get_singleton_class(self)),$send(self,"_lex_index_offsets=",$to_a($writer=[[0,0,2,4,6,8,10,12,14,16,18,46,175,304,433,562,609,731,853,947,1069,1191,1238,1360,1482,1516,1518,1612,1734,1838,1967,2096,2225,2354,2401,2523,2645,2739,2861,2983,3030,3152,3274,3308,3310,3404,3526,3630,3759,3888,4017,4146,4275,4404,4533,4662,4791,4920,5049,5178,5307,5436,5565,5567,5569,5571,5573,5702,5704,5706,5708,5710,5839,5968,6097,6226,6355,6484,6613,6742,6871,7e3,7129,7258,7387,7516,7645,7774,7903,8032,8034,8036,8038,8040,8050,8052,8054,8056,8058,8060,8062,8064,8066,8195,8197,8326,8411,8413,8498,8500,8502,8504,8506,8508,8510,8639,8641,8726,8811,8896,8981,9066,9068,9197,9326,9393,9395,9524,9653,9655,9657,9659,9661,9790,9878,9880,9927,10049,10171,10265,10387,10509,10556,10678,10800,10834,10836,10930,11052,11156,11285,11414,11543,11672,11801,11930,11932,11934,12063,12079,12090,12101,12112,12123,12125,12127,12129,12131,12133,12135,12137,12266,12268,12353,12438,12523,12608,12693,12778,12780,12782,12867,12952,12954,12956,12958,12960,12962,13059,13084,13085,13087,13089,13091,13116,13118,13120,13214,13239,13328,13457,13468,13597,13719,13720,13721,13730,13739,13740,13741,13835,13836,13837,13838,13932,13934,13935,13936,13937,14031,14087,14143,14144,14200,14256,14257,14304,14398,14492,14493,14494,14588,14644,14700,14701,14748,14750,14844,14921,14977,15033,15089,15090,15217,15344,15345,15472,15473,15600,15727,15854,15981,15982,16109,16236,16363,16490,16617,16744,16745,16746,16802,16803,16897,16986,17115,17126,17255,17377,17378,17379,17388,17397,17398,17399,17493,17494,17495,17496,17590,17592,17593,17594,17595,17689,17745,17801,17802,17858,17914,17915,17962,18056,18150,18151,18152,18246,18302,18358,18359,18406,18408,18502,18579,18635,18691,18747,18748,18875,19002,19003,19130,19131,19258,19385,19512,19639,19640,19767,19894,20021,20148,20275,20402,20403,20404,20460,20461,20555,20580,20608,20702,20730,20767,20856,20985,20996,21125,21153,21190,21215,21304,21433,21444,21573,21607,21632,21691,21750,21780,21909,21920,22049,22178,22307,22436,22461,22462,22529,22531,22533,22662,22791,22802,22804,22806,22808,22810,22812,22815,22817,22884,22886,22889,23018,23147,23276,23405,23534,23663,23792,23794,23796,23925,24054,24183,24312,24441,24570,24699,24828,24957,25086,25215,25344,25473,25602,25731,25860,25989,26118,26247,26376,26505,26634,26763,26892,27021,27150,27279,27408,27537,27666,27795,27924,28053,28182,28311,28440,28569,28698,28827,28956,29085,29214,29343,29472,29601,29730,29859,29988,30117,30246,30375,30504,30633,30762,30891,31020,31149,31278,31407,31536,31665,31794,31923,32052,32181,32310,32439,32568,32697,32826,32955,33084,33213,33342,33471,33600,33729,33858,33987,34116,34245,34374,34503,34505,34634,34763,34788,34790,34792,34794,34796,34797,34926,35055,35057,35058,35083,35084,35151,35153,35155,35157,35159,35161,35164,35166,35233,35235,35238,35367,35369,35371,35373,35501,35630,35693,35747,35801,35802,35856,35911,35913,35915,35917,35942,35943,36072,36073,36190,36191,36193,36195,36196,36250,36252,36254,36256,36281,36283,36412,36414,36416,36418,36420,36549,36678,36807,36808,36937,36939,37064,37089,37091,37093,37095,37096,37098,37099,37228,37357,37382,37383,37385,37387,37389,37390,37519,37648,37777,37906,38035,38164,38293,38422,38551,38680,38809,38938,39067,39196,39325,39454,39583,39712,39717,39718,39785,39787,39788,39789,39790,39815,39817,39842,39909,39911,39913,40042,40067,40068,40089,40091,40176,40261,40346,40348,40350,40352,40380,40509,40638,40640,40641,40708,40711,40712,40713,40714,40715,40782,40911,40922,40924,40926,40928,40931,40933,40935,40938,41067,41078,41207,41209,41211,41214,41215,41241,41272,41274,41276,41343,41346,41470,41471,41600,41729,41851,41852,41853,41862,41871,41872,41873,41967,41968,41969,41970,42064,42066,42067,42068,42069,42163,42219,42275,42276,42332,42388,42389,42436,42530,42624,42625,42626,42720,42776,42832,42833,42880,42882,42976,43053,43109,43165,43221,43222,43349,43476,43477,43604,43605,43732,43859,43986,44113,44114,44241,44368,44495,44622,44749,44876,45003,45130,45257,45384,45511,45638,45765,45892,46019,46146,46273,46400,46527,46528,46529,46585,46586,46715,46844,46973,46974,46976,46977,47106,47235,47364,47493,47622,47751,47880,48009,48138,48267,48396,48525,48654,48783,48912,49041,49170,49299,49428,49557,49686,49815,49944,50073,50202,50331,50460,50589,50718,50847,50976,51105,51234,51363,51492,51621,51750,51879,52008,52137,52266,52395,52524,52653,52782,52911,53040,53169,53298,53427,53556,53685,53814,53943,54072,54201,54330,54459,54588,54717,54846,54913,55042,55171,55300,55429,55558,55687,55816,55945,56074,56203,56332,56461,56590,56719,56848,56977,57106,57235,57364,57493,57622,57751,57880,58009,58138,58139,58204,58298,58323,58324,58326,58328,58330,58331,58460,58589,58614,58615,58617,58619,58621,58622,58751,58880,58882,58883,58908,58909,58976,58978,58980,59109,59238,59249,59251,59276,59277,59278,59299,59302,59315,59317,59319,59374,59423,59499,59567,59583,59642,59644,59645,59651,59652,59653,59721,59789,59857,59925,59936,59938,59939,59945,59947,59948,59949,60017,60085,60153,60221,60289,60357,60425,60493,60563,60631,60701,60769,60771,60774,60776,60843,60845,60848,60977,61106,61107,61236,61365,61494,61623,61752,61881,61882,61884,61885,61886,62015,62144,62273,62402,62531,62660,62789,62918,63047,63176,63305,63434,63563,63692,63821,63950,64079,64208,64337,64466,64595,64724,64853,64982,65111,65240,65369,65498,65627,65756,65885,66014,66143,66272,66401,66530,66659,66744,66873,67002,67131,67260,67389,67518,67647,67776,67905,68034,68163,68292,68421,68550,68679,68808,68937,69066,69195,69324,69453,69582,69711,69840,69969,70098,70227,70356,70485,70614,70743,70872,71001,71130,71259,71388,71517,71646,71775,71904,72033,72162,72291,72420,72549,72678,72807,72936,73065,73194,73323,73452,73581,73710,73839,73968,74097,74226,74355,74484,74613,74742,74871,75e3,75129,75130,75195,75196,75281,75366,75451,75453,75455,75457,75459,75461,75514,75516,75609,75711,75803]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_indicies"),self.$private("_lex_indicies","_lex_indicies=")}(Opal.get_singleton_class(self)),$send(self,"_lex_indicies=",$to_a($writer=[[1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,0,0,10,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,12,14,12,14,14,12,12,14,14,14,15,14,14,16,16,16,16,16,16,16,16,16,16,14,14,14,14,14,14,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,14,12,12,13,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,14,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,14,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,17,17,17,17,17,17,17,17,17,12,12,12,12,12,12,18,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,17,17,17,17,17,17,17,17,17,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,13,19,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,20,19,22,22,22,19,22,22,22,22,22,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,24,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,25,22,19,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,26,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,25,22,19,27,27,27,19,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,19,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,29,27,19,30,30,30,19,30,30,30,30,30,31,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,19,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,19,30,30,30,19,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,19,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,19,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,33,20,19,34,34,34,19,34,34,34,34,34,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,19,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,36,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,37,34,34,34,34,34,34,38,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,39,34,19,34,34,34,19,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,19,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,39,34,40,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,41,19,41,19,19,42,42,42,19,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,19,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,44,42,19,22,22,22,19,22,22,22,22,22,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,26,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,25,22,19,45,45,45,19,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,19,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,46,46,46,46,46,46,46,46,46,46,45,45,45,45,45,45,45,46,46,46,46,46,46,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,46,46,46,46,46,46,45,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,49,49,47,49,47,49,49,47,47,49,49,49,50,49,49,51,51,51,51,51,51,51,51,51,51,49,49,49,49,49,49,49,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,49,47,47,48,49,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,49,47,48,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,49,49,49,49,49,49,49,49,49,49,47,47,47,47,47,47,47,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,47,47,47,47,49,47,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,47,47,47,47,47,49,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,52,52,52,52,52,52,52,52,52,52,47,47,47,47,47,47,53,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,48,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,47,48,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,52,52,52,52,52,52,52,52,52,52,47,47,47,47,47,47,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,48,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,47,48,54,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,56,55,54,57,57,57,54,57,57,57,57,57,58,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,59,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,60,57,54,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,61,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,60,57,54,62,62,62,54,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,54,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,54,65,65,65,54,65,65,65,65,65,66,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,54,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,67,65,54,65,65,65,54,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,54,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,67,65,54,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,68,55,54,69,69,69,54,69,69,69,69,69,70,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,54,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,71,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,72,69,69,69,69,69,69,73,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,74,69,54,69,69,69,54,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,54,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,74,69,75,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,76,54,76,54,54,77,77,77,54,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,54,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,79,77,54,57,57,57,54,57,57,57,57,57,58,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,61,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,60,57,54,80,80,80,54,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,54,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,80,80,80,80,80,80,80,81,81,81,81,81,81,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,80,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,84,84,82,84,82,84,84,82,82,84,84,84,85,84,84,86,86,86,86,86,86,86,86,86,86,84,84,84,84,84,84,84,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,84,82,82,83,84,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,84,82,83,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,84,84,84,84,84,84,84,84,84,84,82,82,82,82,82,82,82,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,82,82,82,82,84,82,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,82,82,82,82,82,84,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,87,87,87,87,87,87,87,87,87,87,82,82,82,82,82,82,88,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,83,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,82,83,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,87,87,87,87,87,87,87,87,87,87,82,82,82,82,82,82,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,83,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,82,83,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,91,91,89,91,89,91,91,89,89,91,91,91,92,91,91,93,93,93,93,93,93,93,93,93,93,91,91,91,91,91,91,91,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,91,89,89,90,91,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,91,89,90,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,91,91,91,91,91,91,91,91,91,91,89,89,89,89,89,89,89,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,89,89,89,89,91,89,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,89,89,89,89,89,91,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,94,94,94,94,94,94,94,94,94,94,89,89,89,89,89,89,95,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,90,89,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,89,90,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,94,94,94,94,94,94,94,94,94,94,89,89,89,89,89,89,89,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,90,89,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,89,90,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,97,97,98,97,98,97,97,98,98,97,97,97,99,97,97,100,100,100,100,100,100,100,100,100,100,97,97,97,97,97,97,97,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,98,97,98,98,96,97,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,98,98,98,97,98,96,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,97,97,97,97,97,97,97,97,97,97,98,98,98,98,98,98,98,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,98,98,98,98,97,98,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,98,98,98,98,98,97,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,101,101,101,101,101,101,101,101,101,101,98,98,98,98,98,98,102,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,98,98,98,98,101,98,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,98,98,98,98,98,101,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,103,103,103,103,103,103,103,103,103,103,98,98,98,98,98,98,98,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,98,98,98,98,103,98,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,98,98,98,98,98,103,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,105,105,105,105,105,105,105,105,105,105,104,104,104,104,104,104,104,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,104,104,104,104,105,104,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,104,104,104,104,104,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,106,106,106,106,106,106,106,106,106,106,107,107,107,107,107,107,107,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,107,107,107,107,107,107,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,107,107,107,107,107,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,110,108,108,108,108,108,108,108,108,108,108,108,108,108,108,109,109,109,109,109,109,109,109,109,109,111,108,108,108,108,110,108,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,108,108,108,108,109,108,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,108,108,108,108,108,109,111,108,108,112,113,108,114,108,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,117,115,115,115,115,115,115,115,115,115,115,115,115,115,115,116,116,116,116,116,116,116,116,116,116,118,115,115,115,115,117,115,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,115,115,115,115,116,115,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,115,115,115,115,115,116,118,115,120,119,121,119,122,119,119,119,119,119,119,119,119,119,119,124,119,124,124,124,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,124,119,119,119,119,125,126,119,127,119,128,129,130,131,132,125,119,119,119,119,119,119,119,119,119,119,133,119,134,130,135,136,119,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,137,138,130,139,123,119,123,123,123,123,123,123,123,123,140,123,123,123,123,123,123,123,123,141,123,123,142,123,143,123,123,123,144,145,119,139,119,123,119,119,119,119,119,119,119,119,119,146,119,146,146,146,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,146,119,119,119,119,147,148,119,149,119,150,151,152,153,154,147,119,119,119,119,119,119,119,119,119,119,155,119,156,152,157,158,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,159,160,152,121,116,119,116,116,116,116,116,116,116,116,161,116,116,116,116,116,116,116,116,162,116,116,163,116,164,116,116,116,165,166,119,121,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,167,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,168,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,169,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,170,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,171,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,167,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,116,116,116,116,116,116,172,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,116,116,116,116,173,116,116,116,116,116,116,116,174,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,175,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,176,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,167,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,116,177,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,116,116,116,116,167,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,178,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,116,179,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,116,116,116,116,171,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,181,180,182,180,183,180,152,180,184,180,180,180,180,180,180,180,185,180,186,180,187,180,152,180,188,180,152,180,189,180,183,180,191,190,192,192,192,192,192,192,192,192,192,194,192,194,194,194,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,194,192,192,192,192,192,192,192,195,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,192,196,192,192,193,192,193,193,193,197,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,192,192,192,192,192,193,198,192,192,192,192,192,192,192,192,192,192,200,192,200,200,200,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,200,192,192,192,192,192,192,192,201,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,192,202,192,192,199,192,199,199,199,203,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,192,192,192,192,192,199,205,204,205,205,205,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,205,204,204,204,204,204,204,204,206,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,207,204,208,204,209,204,209,209,209,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,209,204,204,204,204,204,204,204,210,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,211,204,212,213,215,214,216,214,217,214,218,214,219,214,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,220,220,220,220,220,220,220,220,220,220,221,221,221,221,221,221,221,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,221,221,221,221,221,221,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,221,221,221,221,221,220,222,212,223,224,223,223,223,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,223,212,212,225,212,212,212,212,212,212,212,212,212,212,212,212,226,226,226,226,226,226,226,226,226,226,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,227,212,228,229,228,228,228,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,228,212,212,230,212,212,212,212,212,212,212,212,212,212,212,212,231,231,231,231,231,231,231,231,231,231,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,232,212,234,235,234,234,234,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,234,233,233,236,233,233,233,233,233,233,233,233,233,233,233,233,237,237,237,237,237,237,237,237,237,237,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,238,233,240,241,240,240,240,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,240,239,239,242,239,239,239,239,239,239,239,239,239,239,239,239,243,243,243,243,243,243,243,243,243,243,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,244,239,240,245,240,240,240,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,240,239,239,242,239,239,239,239,239,239,239,239,239,239,239,239,243,243,243,243,243,243,243,243,243,243,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,244,239,224,212,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,248,248,246,248,246,248,248,246,246,248,248,248,249,248,248,250,250,250,250,250,250,250,250,250,250,248,248,248,248,248,248,248,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,246,248,246,246,247,248,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,246,246,246,248,246,247,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,248,248,248,248,248,248,248,248,248,248,246,246,246,246,246,246,246,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,246,246,246,246,248,246,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,246,246,246,246,246,248,251,248,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,248,246,251,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,253,246,246,246,246,254,246,246,246,246,246,255,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,222,246,246,246,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,246,246,246,246,252,256,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,246,246,246,255,246,252,258,258,258,258,258,258,258,258,258,258,259,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,257,257,257,257,257,257,257,257,257,257,258,258,258,258,258,258,258,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,258,258,258,258,257,258,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,258,258,258,258,258,257,261,260,264,263,259,258,264,265,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,253,246,246,246,246,254,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,246,246,246,246,252,256,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,246,246,246,246,246,252,267,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,264,266,264,267,268,269,269,269,268,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,268,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,270,269,268,271,271,271,268,271,271,271,271,271,272,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,268,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,273,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,274,271,268,271,271,271,268,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,268,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,275,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,274,271,268,276,276,276,268,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,268,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,277,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,278,276,268,279,279,279,268,279,279,279,279,279,280,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,268,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,281,279,268,279,279,279,268,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,268,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,281,279,268,269,269,269,268,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,268,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,282,269,268,283,283,283,268,283,283,283,283,283,284,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,268,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,285,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,286,283,283,283,283,283,283,287,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,288,283,268,283,283,283,268,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,268,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,288,283,289,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,290,268,290,268,268,291,291,291,268,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,268,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,292,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,293,291,268,271,271,271,268,271,271,271,271,271,272,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,268,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,275,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,274,271,268,294,294,294,268,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,268,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,295,295,295,295,295,295,295,295,295,295,294,294,294,294,294,294,294,295,295,295,295,295,295,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,295,295,295,295,295,295,294,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,297,212,212,212,212,212,212,212,212,212,212,212,212,212,212,296,296,296,296,296,296,296,296,296,296,298,212,212,299,212,297,212,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,212,212,212,212,296,212,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,212,212,212,212,212,296,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,297,246,246,246,246,246,246,246,246,246,246,246,246,246,246,296,296,296,296,296,296,296,296,296,296,298,246,246,299,246,297,246,296,296,296,296,296,296,300,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,246,246,246,246,296,246,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,246,246,246,246,246,296,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,297,246,246,246,246,246,246,246,246,246,246,246,246,246,246,296,296,296,296,296,296,296,296,296,296,298,246,246,299,246,297,246,296,296,296,296,296,296,296,296,301,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,246,246,246,246,296,246,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,246,246,246,246,246,296,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,297,246,246,246,246,246,246,246,246,246,246,246,246,246,246,296,296,296,296,296,296,296,296,296,296,298,246,246,299,246,297,246,296,296,296,296,296,296,296,296,296,296,296,296,296,302,296,296,296,296,296,296,296,296,296,296,296,296,246,246,246,246,296,246,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,246,246,246,246,246,296,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,297,246,246,246,246,246,246,246,246,246,246,246,246,246,246,296,296,296,296,296,296,296,296,296,296,298,246,246,299,246,297,246,296,296,296,302,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,246,246,246,246,296,246,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,246,246,246,246,246,296,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,305,303,303,303,303,303,303,303,303,303,303,303,303,303,303,304,304,304,304,304,304,304,304,304,304,306,303,303,303,303,305,303,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,303,303,303,303,304,303,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,303,303,303,303,303,304,306,303,303,307,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,309,309,309,309,309,309,309,309,309,309,308,308,308,308,308,308,308,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,308,308,308,308,309,308,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,308,308,308,308,308,309,311,310,311,310,310,312,312,312,312,312,312,312,312,312,312,310,312,312,312,312,312,312,312,312,312,312,310,313,313,313,313,313,313,313,313,313,313,310,315,315,315,315,315,315,315,315,315,315,314,316,316,316,316,316,316,316,316,316,316,314,318,317,319,317,320,317,321,317,323,322,324,322,325,322,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,326,326,326,326,326,326,326,326,326,326,308,308,308,308,308,308,308,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,308,308,308,308,326,308,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,308,308,308,308,308,326,327,314,328,329,328,328,328,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,328,314,314,330,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,331,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,332,314,333,334,333,333,333,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,333,314,314,335,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,336,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,337,314,339,340,339,339,339,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,339,338,338,341,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,342,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,343,338,345,346,345,345,345,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,345,344,344,347,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,348,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,349,344,345,346,345,345,345,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,345,344,344,347,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,350,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,349,344,345,351,345,345,345,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,345,344,344,347,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,348,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,349,344,352,314,329,314,354,355,354,354,354,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,354,353,353,356,353,353,357,353,353,353,353,353,353,353,358,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,359,353,361,355,361,361,361,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,361,360,360,356,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,359,360,364,363,366,365,367,362,368,362,369,353,371,370,370,370,371,370,370,370,370,372,373,372,372,372,370,370,370,370,370,370,370,370,370,370,370,370,371,370,370,370,370,370,372,370,370,374,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,375,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,376,370,370,377,370,372,378,372,372,372,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,372,378,379,380,381,382,383,385,384,387,388,387,387,387,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,387,386,373,384,389,384,391,390,390,390,391,390,390,390,390,392,393,392,392,392,390,390,390,390,390,390,390,390,390,390,390,390,391,390,390,390,390,390,392,390,390,394,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,395,390,392,396,392,392,392,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,392,396,398,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,399,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,400,397,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,13,13,13,13,13,13,13,13,13,13,401,401,401,401,401,401,401,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,401,401,401,401,13,401,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,401,401,401,401,401,13,16,16,16,16,16,16,16,16,16,16,401,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,13,13,13,13,13,13,13,13,13,13,402,402,402,402,402,402,402,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,402,402,402,402,17,402,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,402,402,402,402,402,17,405,404,404,404,405,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,405,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,406,406,406,406,406,406,406,406,404,404,404,404,404,404,404,404,404,404,404,407,404,404,404,404,404,404,404,404,404,408,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,409,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,410,404,404,411,404,412,413,415,415,415,415,415,415,415,415,414,416,416,416,416,416,416,416,416,414,414,417,417,42,42,42,417,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,417,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,418,42,419,420,421,421,42,42,42,421,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,421,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,422,42,41,421,423,424,425,425,27,27,27,425,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,425,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,426,27,427,427,427,427,427,427,427,427,427,427,425,425,425,425,425,425,425,427,427,427,427,427,427,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,427,427,427,427,427,427,425,429,429,429,429,429,429,429,429,429,429,428,428,428,428,428,428,428,429,429,429,429,429,429,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,429,429,429,429,429,429,428,428,430,430,430,430,430,430,430,430,430,430,421,421,421,421,421,421,421,430,430,430,430,430,430,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,430,430,430,430,430,430,421,432,432,432,432,432,432,432,432,432,432,431,431,431,431,431,431,431,432,432,432,432,432,432,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,432,432,432,432,432,432,431,431,421,20,20,20,421,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,421,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,433,20,417,27,27,27,417,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,417,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,29,27,417,434,434,434,417,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,417,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,435,434,436,437,437,434,434,434,437,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,437,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,438,434,439,439,439,439,439,439,439,439,439,439,437,437,437,437,437,437,437,439,439,439,439,439,439,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,439,439,439,439,439,439,437,441,441,441,441,441,441,441,441,441,441,440,440,440,440,440,440,440,441,441,441,441,441,441,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,441,441,441,441,441,441,440,440,437,20,20,20,437,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,437,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,433,20,442,437,437,27,27,27,437,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,437,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,29,27,444,444,444,444,444,444,444,444,444,444,443,443,443,443,443,443,443,444,444,444,444,444,444,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,444,444,444,444,444,444,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,445,443,446,446,446,446,446,446,446,446,446,446,443,443,443,443,443,443,443,446,446,446,446,446,446,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,446,446,446,446,446,446,443,447,447,447,447,447,447,447,447,447,447,443,443,443,443,443,443,443,447,447,447,447,447,447,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,447,447,447,447,447,447,443,448,448,448,448,448,448,448,448,448,448,443,443,443,443,443,443,443,448,448,448,448,448,448,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,448,448,448,448,448,448,443,449,452,451,451,451,452,451,451,451,451,453,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,452,451,451,451,451,451,453,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,454,454,454,454,454,454,454,454,454,454,451,451,451,451,451,451,451,454,454,454,454,454,454,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,454,454,454,454,454,454,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,455,451,452,451,451,451,452,451,451,451,451,450,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,452,451,451,451,451,451,450,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,456,456,456,456,456,456,456,456,456,456,451,451,451,451,451,451,451,456,456,456,456,456,456,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,456,456,456,456,456,456,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,457,451,450,452,456,456,456,452,456,456,456,456,450,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,452,456,456,456,456,456,450,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,450,456,458,452,459,459,459,452,459,459,459,459,453,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,459,459,459,459,453,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,454,454,454,454,454,454,454,454,454,454,459,459,459,459,459,459,459,454,454,454,454,454,454,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,454,454,454,454,454,454,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,450,459,452,459,459,459,452,459,459,459,459,450,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,459,459,459,459,450,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,456,456,456,456,456,456,456,456,456,456,459,459,459,459,459,459,459,456,456,456,456,456,456,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,456,456,456,456,456,456,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,452,459,459,459,452,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,461,461,461,461,461,461,461,461,461,461,459,459,459,459,459,459,459,461,461,461,461,461,461,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,461,461,461,461,461,461,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,462,459,452,459,459,459,452,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,454,454,454,454,454,454,454,454,454,454,459,459,459,459,459,459,459,454,454,454,454,454,454,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,454,454,454,454,454,454,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,462,459,463,452,459,459,459,452,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,464,464,464,464,464,464,464,464,464,464,459,459,459,459,459,459,459,464,464,464,464,464,464,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,464,464,464,464,464,464,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,462,459,452,459,459,459,452,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,465,465,465,465,465,465,465,465,465,465,459,459,459,459,459,459,459,465,465,465,465,465,465,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,465,465,465,465,465,465,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,462,459,452,459,459,459,452,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,466,466,466,466,466,466,466,466,466,466,459,459,459,459,459,459,459,466,466,466,466,466,466,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,466,466,466,466,466,466,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,462,459,452,459,459,459,452,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,467,467,467,467,467,467,467,467,467,467,459,459,459,459,459,459,459,467,467,467,467,467,467,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,467,467,467,467,467,467,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,462,459,452,459,459,459,452,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,468,468,468,468,468,468,468,468,468,468,459,459,459,459,459,459,459,468,468,468,468,468,468,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,468,468,468,468,468,468,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,462,459,452,459,459,459,452,459,459,459,459,450,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,459,459,459,459,450,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,468,468,468,468,468,468,468,468,468,468,459,459,459,459,459,459,459,468,468,468,468,468,468,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,468,468,468,468,468,468,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,450,459,469,470,472,472,472,472,472,472,472,472,472,472,471,471,471,471,471,471,471,472,472,472,472,472,472,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,472,472,472,472,472,472,471,471,474,473,473,473,474,473,473,473,473,473,475,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,474,473,473,473,473,473,473,473,473,476,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,477,473,479,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,480,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,481,478,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,48,48,48,48,48,48,48,48,48,48,482,482,482,482,482,482,482,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,482,482,482,482,48,482,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,482,482,482,482,482,48,51,51,51,51,51,51,51,51,51,51,482,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,48,48,48,48,48,48,48,48,48,48,483,483,483,483,483,483,483,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,483,483,483,483,52,483,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,483,483,483,483,483,52,486,485,485,485,486,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,486,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,487,487,487,487,487,487,487,487,485,485,485,485,485,485,485,485,485,485,485,488,485,485,485,485,485,485,485,485,485,489,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,490,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,491,485,485,492,485,493,494,496,496,496,496,496,496,496,496,495,497,497,497,497,497,497,497,497,495,495,498,498,77,77,77,498,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,498,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,499,77,500,501,502,502,77,77,77,502,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,502,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,503,77,76,502,504,505,506,506,62,62,62,506,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,506,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,507,62,508,508,508,508,508,508,508,508,508,508,506,506,506,506,506,506,506,508,508,508,508,508,508,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,508,508,508,508,508,508,506,510,510,510,510,510,510,510,510,510,510,509,509,509,509,509,509,509,510,510,510,510,510,510,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,510,510,510,510,510,510,509,509,511,511,511,511,511,511,511,511,511,511,502,502,502,502,502,502,502,511,511,511,511,511,511,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,511,511,511,511,511,511,502,513,513,513,513,513,513,513,513,513,513,512,512,512,512,512,512,512,513,513,513,513,513,513,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,513,513,513,513,513,513,512,512,502,55,55,55,502,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,502,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,514,55,498,62,62,62,498,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,498,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,498,515,515,515,498,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,498,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,516,515,517,518,518,515,515,515,518,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,518,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,519,515,520,520,520,520,520,520,520,520,520,520,518,518,518,518,518,518,518,520,520,520,520,520,520,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,520,520,520,520,520,520,518,522,522,522,522,522,522,522,522,522,522,521,521,521,521,521,521,521,522,522,522,522,522,522,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,522,522,522,522,522,522,521,521,518,55,55,55,518,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,518,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,514,55,523,518,518,62,62,62,518,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,518,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,525,525,525,525,525,525,525,525,525,525,524,524,524,524,524,524,524,525,525,525,525,525,525,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,525,525,525,525,525,525,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,526,524,527,527,527,527,527,527,527,527,527,527,524,524,524,524,524,524,524,527,527,527,527,527,527,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,527,527,527,527,527,527,524,528,528,528,528,528,528,528,528,528,528,524,524,524,524,524,524,524,528,528,528,528,528,528,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,528,528,528,528,528,528,524,529,529,529,529,529,529,529,529,529,529,524,524,524,524,524,524,524,529,529,529,529,529,529,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,529,529,529,529,529,529,524,530,533,532,532,532,533,532,532,532,532,534,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,533,532,532,532,532,532,534,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,535,535,535,535,535,535,535,535,535,535,532,532,532,532,532,532,532,535,535,535,535,535,535,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,535,535,535,535,535,535,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,536,532,533,532,532,532,533,532,532,532,532,531,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,533,532,532,532,532,532,531,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,537,537,537,537,537,537,537,537,537,537,532,532,532,532,532,532,532,537,537,537,537,537,537,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,537,537,537,537,537,537,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,538,532,531,533,537,537,537,533,537,537,537,537,531,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,533,537,537,537,537,537,531,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,531,537,539,533,540,540,540,533,540,540,540,540,534,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,540,540,540,540,534,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,535,535,535,535,535,535,535,535,535,535,540,540,540,540,540,540,540,535,535,535,535,535,535,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,535,535,535,535,535,535,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,531,540,533,540,540,540,533,540,540,540,540,531,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,540,540,540,540,531,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,537,537,537,537,537,537,537,537,537,537,540,540,540,540,540,540,540,537,537,537,537,537,537,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,537,537,537,537,537,537,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,533,540,540,540,533,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,542,542,542,542,542,542,542,542,542,542,540,540,540,540,540,540,540,542,542,542,542,542,542,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,542,542,542,542,542,542,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,543,540,533,540,540,540,533,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,535,535,535,535,535,535,535,535,535,535,540,540,540,540,540,540,540,535,535,535,535,535,535,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,535,535,535,535,535,535,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,543,540,544,533,540,540,540,533,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,545,545,545,545,545,545,545,545,545,545,540,540,540,540,540,540,540,545,545,545,545,545,545,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,545,545,545,545,545,545,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,543,540,533,540,540,540,533,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,546,546,546,546,546,546,546,546,546,546,540,540,540,540,540,540,540,546,546,546,546,546,546,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,546,546,546,546,546,546,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,543,540,533,540,540,540,533,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,547,547,547,547,547,547,547,547,547,547,540,540,540,540,540,540,540,547,547,547,547,547,547,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,547,547,547,547,547,547,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,543,540,533,540,540,540,533,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,548,548,548,548,548,548,548,548,548,548,540,540,540,540,540,540,540,548,548,548,548,548,548,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,548,548,548,548,548,548,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,543,540,533,540,540,540,533,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,549,549,549,549,549,549,549,549,549,549,540,540,540,540,540,540,540,549,549,549,549,549,549,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,549,549,549,549,549,549,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,543,540,533,540,540,540,533,540,540,540,540,531,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,540,540,540,540,531,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,549,549,549,549,549,549,549,549,549,549,540,540,540,540,540,540,540,549,549,549,549,549,549,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,549,549,549,549,549,549,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,531,540,550,551,553,553,553,553,553,553,553,553,553,553,552,552,552,552,552,552,552,553,553,553,553,553,553,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,553,553,553,553,553,553,552,552,555,554,554,554,555,554,554,554,554,556,557,556,556,556,554,554,554,554,554,554,554,554,554,554,554,554,555,554,554,554,554,554,556,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,558,554,556,559,556,556,556,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,556,559,560,561,561,561,560,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,560,561,563,562,562,562,563,562,562,562,562,562,564,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,563,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,565,562,566,567,567,567,566,567,567,567,567,567,568,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567,566,567,570,569,569,569,570,569,569,569,569,569,571,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,570,569,569,569,569,569,569,569,569,572,569,574,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,575,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,576,573,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,83,83,83,83,83,83,83,83,83,83,577,577,577,577,577,577,577,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,577,577,577,577,83,577,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,577,577,577,577,577,83,86,86,86,86,86,86,86,86,86,86,577,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,83,83,83,83,83,83,83,83,83,83,578,578,578,578,578,578,578,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,578,578,578,578,87,578,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,578,578,578,578,578,87,580,579,579,579,580,579,579,579,579,579,581,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,580,579,583,582,582,582,583,582,582,582,582,584,585,584,584,584,582,582,582,582,582,582,582,582,582,582,582,582,583,582,582,582,582,582,584,582,582,586,582,584,587,584,584,584,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,584,587,589,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,590,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,591,588,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,90,90,90,90,90,90,90,90,90,90,592,592,592,592,592,592,592,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,592,592,592,592,90,592,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,592,592,592,592,592,90,93,93,93,93,93,93,93,93,93,93,592,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,90,90,90,90,90,90,90,90,90,90,593,593,593,593,593,593,593,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,593,593,593,593,94,593,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,593,593,593,593,593,94,595,594,594,594,595,594,594,594,594,596,597,596,596,596,594,594,594,594,594,594,594,594,594,594,594,594,595,594,594,594,594,594,596,594,596,598,596,596,596,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,596,598,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,599,599,599,599,599,599,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,599,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,601,601,601,601,601,601,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,601,602,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,603,98,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,96,96,96,96,96,96,96,96,96,96,604,604,604,604,604,604,604,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,604,604,604,604,96,604,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,604,604,604,604,604,96,100,100,100,100,100,100,100,100,100,100,604,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,101,101,101,101,101,101,101,101,101,101,605,605,605,605,605,605,605,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,605,605,605,605,101,605,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,605,605,605,605,605,101,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,103,103,103,103,103,103,103,103,103,103,606,606,606,606,606,606,606,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,606,606,606,606,103,606,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,606,606,606,606,606,103,608,609,609,609,608,609,609,609,609,610,611,610,610,610,609,609,609,609,609,609,609,609,609,609,609,609,608,609,609,609,609,609,610,612,609,613,614,615,616,609,609,609,617,618,609,618,609,619,609,609,609,609,609,609,609,609,609,609,620,609,621,622,623,609,609,624,625,624,624,626,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,627,628,609,619,629,619,630,631,632,633,634,635,607,607,636,607,607,607,637,638,639,607,607,640,641,642,643,607,644,607,645,607,609,646,609,618,609,607,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,648,647,647,647,647,647,647,647,647,647,647,647,647,647,647,607,607,607,607,607,607,607,607,607,607,647,647,647,648,647,648,647,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,647,647,647,647,607,647,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,647,647,647,647,647,607,610,649,610,610,610,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,610,649,650,619,651,651,619,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,619,651,652,653,654,655,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,105,105,656,105,656,105,105,656,656,105,105,105,658,105,105,659,659,659,659,659,659,659,659,659,659,105,105,105,105,105,105,105,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,656,105,656,656,657,105,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,656,656,656,105,656,657,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,657,657,657,657,657,657,657,657,657,657,660,660,660,660,660,660,660,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,660,660,660,660,657,660,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,660,660,660,660,660,657,659,659,659,659,659,659,659,659,659,659,660,661,651,619,651,619,651,619,651,663,662,619,664,651,619,651,665,619,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,619,656,619,651,619,619,651,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,648,647,647,647,647,647,647,647,647,647,647,647,647,647,647,624,624,624,624,624,624,624,624,624,624,647,647,647,648,647,648,647,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,647,647,647,647,624,647,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,647,647,647,647,647,624,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,648,666,666,666,666,666,666,666,666,666,666,666,666,666,666,624,624,624,624,624,624,624,624,624,624,666,666,666,648,666,648,666,624,624,624,624,667,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,624,666,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,666,624,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,648,666,666,666,666,666,666,666,666,666,666,666,666,666,666,624,624,624,624,624,624,624,624,624,624,666,666,666,648,666,648,666,624,624,624,624,624,624,668,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,624,666,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,666,624,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,648,666,666,666,666,666,666,666,666,666,666,666,666,666,666,624,624,624,624,624,624,624,624,624,624,666,666,666,648,666,648,666,624,624,624,624,624,624,624,624,669,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,624,666,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,666,624,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,648,666,666,666,666,666,666,666,666,666,666,666,666,666,666,624,624,624,624,624,624,624,624,624,624,666,666,666,648,666,648,666,624,624,624,624,624,624,624,624,624,624,624,624,624,670,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,624,666,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,666,624,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,648,666,666,666,666,666,666,666,666,666,666,666,666,666,666,624,624,624,624,624,624,624,624,624,624,666,666,666,648,666,648,666,624,624,624,624,624,624,624,624,624,624,624,624,624,671,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,624,666,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,666,624,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,648,666,666,666,666,666,666,666,666,666,666,666,666,666,666,624,624,624,624,624,624,624,624,624,624,666,666,666,648,666,648,666,624,624,624,670,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,624,666,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,666,624,665,656,611,656,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,673,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,674,675,607,607,607,607,607,676,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,677,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,678,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,679,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,680,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,681,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,682,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,683,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,684,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,685,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,686,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,687,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,683,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,688,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,687,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,689,607,690,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,691,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,692,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,685,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,685,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,693,607,607,607,607,607,607,607,607,607,607,607,607,694,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,695,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,696,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,685,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,697,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,698,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,685,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,699,607,607,607,607,607,607,607,607,607,607,700,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,701,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,685,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,702,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,692,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,703,607,607,607,607,607,607,607,607,607,685,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,704,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,648,705,705,705,705,705,705,705,705,705,705,705,705,705,705,607,607,607,607,607,607,607,607,607,607,705,705,705,648,705,648,705,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,705,705,705,705,607,705,607,607,607,607,607,607,607,607,706,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,705,705,705,705,705,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,707,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,708,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,709,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,710,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,711,607,712,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,713,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,685,607,607,607,714,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,685,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,685,607,607,607,607,607,607,607,607,607,607,607,607,607,607,715,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,716,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,701,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,717,607,607,607,607,607,607,607,607,607,607,607,607,607,639,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,699,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,685,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,685,607,607,607,607,607,607,607,685,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,718,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,719,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,720,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,701,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,721,607,607,607,722,607,607,607,607,607,723,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,723,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,685,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,685,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,724,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,725,607,607,607,607,607,607,607,607,607,607,607,607,607,607,726,727,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,685,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,728,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,701,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,729,607,607,730,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,685,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,696,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,731,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,732,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,714,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,733,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,639,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,734,607,607,607,607,607,607,607,607,607,728,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,696,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,735,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,736,607,607,607,607,607,607,607,737,607,607,607,607,607,607,607,738,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,714,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,702,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,722,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,739,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,696,607,607,607,720,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,740,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,741,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,690,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,619,651,743,744,744,744,743,744,744,744,744,745,744,745,745,745,744,744,744,744,744,744,744,744,744,744,744,744,743,744,744,744,744,744,745,744,744,746,744,744,744,744,744,744,744,744,744,744,747,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,744,748,744,744,742,744,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,744,744,744,744,744,742,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,110,749,749,749,749,749,749,749,749,749,749,749,749,749,749,109,109,109,109,109,109,109,109,109,109,111,749,749,749,749,110,749,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,749,749,749,749,109,749,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,749,749,749,749,749,109,745,750,745,745,745,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,745,750,751,752,753,754,755,749,756,749,757,759,760,760,760,759,760,760,760,760,761,762,761,761,761,760,760,760,760,760,760,760,760,760,760,760,760,759,760,760,760,760,760,761,763,760,764,760,765,766,760,760,760,767,768,760,768,760,765,760,760,760,760,760,760,760,760,760,760,760,760,769,770,771,760,760,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,773,774,760,765,758,765,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,760,775,760,768,760,758,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,777,776,776,776,776,776,776,776,776,776,776,776,776,776,776,758,758,758,758,758,758,758,758,758,758,776,776,776,776,776,777,776,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,776,776,776,776,758,776,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,776,776,776,776,776,758,779,778,780,761,781,761,761,761,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,761,781,782,765,783,783,765,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,765,783,784,785,786,787,765,783,765,783,765,783,765,788,783,765,783,790,765,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,765,789,765,783,765,765,783,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,777,791,791,791,791,791,791,791,791,791,791,791,791,791,791,772,772,772,772,772,772,772,772,772,772,791,791,791,791,791,777,791,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,791,791,791,791,772,791,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,791,791,791,791,791,772,790,789,762,789,765,783,793,792,792,792,793,792,792,792,792,794,795,794,794,794,792,792,792,792,792,792,792,792,792,792,792,792,793,792,792,792,792,792,794,792,792,796,792,121,797,792,798,792,799,121,152,800,154,121,792,792,792,792,792,792,792,792,792,792,801,792,802,152,803,804,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,152,805,152,121,792,792,792,792,792,792,792,792,792,792,806,792,792,792,792,792,792,792,792,807,792,792,808,792,809,792,792,792,165,166,792,121,792,810,810,810,810,810,810,810,810,810,794,810,794,794,794,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,794,810,810,810,810,147,148,810,149,810,150,151,152,153,154,147,810,810,810,810,810,810,810,810,810,810,155,810,156,152,157,158,810,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,159,160,152,121,116,810,116,116,116,116,116,116,116,116,161,116,116,116,116,116,116,116,116,162,116,116,163,116,164,116,116,116,165,166,810,121,810,116,811,812,812,812,811,812,812,812,812,152,813,152,152,152,812,812,812,812,812,812,812,812,812,812,812,812,811,812,812,812,812,812,152,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,152,812,152,813,152,152,152,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,152,115,115,115,115,115,121,115,115,115,115,115,115,115,152,115,115,115,115,115,115,115,115,115,115,115,115,115,115,152,115,152,813,152,152,152,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,152,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,152,115,814,152,813,152,152,152,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,152,815,815,815,815,815,815,815,815,815,816,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,152,815,152,813,152,152,152,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,152,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,152,152,115,817,811,152,811,819,818,821,822,821,821,821,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,821,820,823,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,117,811,811,811,811,811,811,811,811,811,811,811,811,811,811,116,116,116,116,116,116,116,116,116,116,118,811,811,811,811,117,811,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,811,811,811,811,116,811,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,811,811,811,811,811,116,824,152,813,152,152,152,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,152,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,152,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,121,811,825,826,827,828,829,830,152,813,152,152,152,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,152,811,811,811,811,811,811,811,811,811,121,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,152,811,152,818,121,831,121,831,832,833,832,832,832,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,832,820,834,831,835,835,835,835,835,835,835,835,835,124,835,124,124,124,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,124,835,835,835,835,125,126,835,127,835,128,129,130,131,132,125,835,835,835,835,835,835,835,835,835,835,133,835,134,130,135,136,835,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,137,138,130,139,123,835,123,123,123,123,123,123,123,123,140,123,123,123,123,123,123,123,123,141,123,123,142,123,143,123,123,123,144,145,835,139,835,123,152,831,836,831,837,831,838,831,839,191,191,191,839,191,191,191,191,840,191,840,840,840,191,191,191,191,191,191,191,191,191,191,191,191,839,191,191,191,191,191,840,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,191,841,191,191,193,191,193,193,193,197,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,191,191,191,191,191,193,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,842,190,190,190,190,190,190,190,190,190,190,190,190,190,190,193,193,193,193,193,193,193,193,193,193,191,190,190,190,190,842,190,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,190,190,190,190,193,190,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,190,190,190,190,190,193,843,843,843,843,843,843,843,843,843,194,843,194,194,194,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,194,843,843,843,843,843,843,843,195,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,843,196,843,843,193,843,193,193,193,197,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,843,843,843,843,843,193,844,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,842,843,843,843,843,843,843,843,843,843,843,843,843,843,843,193,193,193,193,193,193,193,193,193,193,191,843,843,843,843,842,843,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,843,843,843,843,193,843,193,193,193,193,193,193,193,193,193,193,193,193,193,193,845,193,193,193,193,193,193,193,193,193,193,193,843,843,843,843,843,193,198,843,847,846,846,846,847,846,846,846,846,848,846,848,848,848,846,846,846,846,846,846,846,846,846,846,846,846,847,846,846,846,846,846,848,846,846,849,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,850,846,846,846,846,846,846,846,851,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,852,846,848,853,848,848,848,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,848,853,854,855,856,857,859,858,860,861,858,862,864,865,865,865,864,865,865,865,865,866,867,866,866,866,865,865,865,865,865,865,865,865,865,865,865,865,864,865,865,865,865,865,866,865,865,868,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,865,869,865,865,863,865,863,863,863,863,863,863,863,863,870,863,863,863,863,863,863,863,863,871,863,863,872,863,873,863,863,863,865,865,865,865,865,863,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,863,863,863,863,863,863,863,863,863,863,874,874,874,874,874,874,874,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,874,874,874,874,863,874,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,874,874,874,874,874,863,866,875,866,866,866,875,875,875,875,875,875,875,875,875,875,875,875,875,875,875,875,875,875,866,875,876,877,878,879,880,882,881,883,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,885,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,886,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,887,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,888,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,889,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,885,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,863,863,863,863,863,863,890,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,863,863,863,863,891,863,863,863,863,863,863,863,892,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,893,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,894,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,885,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,863,895,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,863,863,863,863,885,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,896,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,863,897,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,863,863,863,863,889,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,899,222,222,222,899,222,222,222,222,900,901,900,900,900,222,222,222,222,222,222,222,222,222,222,222,222,899,222,222,222,222,222,900,902,222,903,222,904,905,222,906,222,907,908,222,909,910,911,222,222,222,222,222,222,222,222,222,222,912,222,913,914,915,916,222,917,918,917,917,919,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,920,921,222,922,923,222,924,925,926,927,928,929,898,898,930,898,898,898,931,932,933,898,898,934,935,936,937,898,938,898,939,898,940,941,222,922,222,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,946,945,945,947,945,948,950,951,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,952,949,954,953,955,956,957,900,958,900,900,900,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,900,958,960,959,962,963,962,962,962,961,961,961,961,961,961,961,961,961,961,961,961,961,961,961,961,961,961,962,961,222,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,222,964,965,966,967,968,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,969,969,969,969,969,969,969,969,969,969,970,970,970,970,970,970,970,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,970,970,970,970,970,970,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,970,970,970,970,970,969,973,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,222,972,974,976,975,975,975,975,975,975,975,975,975,975,975,975,975,975,975,975,975,975,222,975,222,212,223,224,223,223,223,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,223,972,972,225,972,972,972,972,972,972,972,972,972,972,972,972,226,226,226,226,226,226,226,226,226,226,972,972,972,222,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,227,972,240,241,240,240,240,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,240,239,239,242,239,239,239,239,239,239,239,239,239,239,239,239,243,243,243,243,243,243,243,243,243,243,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,244,239,223,224,223,223,223,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,223,972,972,225,972,972,972,972,972,972,972,972,972,972,972,972,226,226,226,226,226,226,226,226,226,226,972,972,972,222,222,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,227,972,978,964,980,979,982,981,964,983,983,983,964,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,964,983,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,985,986,964,987,248,988,986,964,964,989,990,964,990,964,248,964,964,964,964,964,964,964,964,964,964,991,964,992,993,994,964,995,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,996,964,964,248,984,248,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,964,997,964,998,964,984,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,1e3,999,999,999,999,999,999,999,999,999,999,999,999,999,999,984,984,984,984,984,984,984,984,984,984,999,999,999,1001,999,1e3,999,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,999,999,999,999,984,999,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,999,999,999,999,999,984,1003,1002,1004,1006,1007,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1008,1005,1010,1011,1009,1012,1013,1014,1015,248,999,999,1016,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,248,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,247,247,247,247,247,247,247,247,247,247,999,999,999,999,999,999,999,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,999,999,999,999,247,999,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,999,999,999,999,999,247,250,250,250,250,250,250,250,250,250,250,999,1017,999,248,999,248,999,248,1018,999,248,999,248,999,248,248,999,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1021,1021,1021,1021,1021,1021,1021,1021,1021,1021,1019,1019,1019,1019,1019,1019,1022,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1019,1019,1019,1019,1020,1019,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1019,1019,1019,1019,1019,1020,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1023,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1027,1027,1027,1027,1027,1027,1027,1027,1027,1027,1025,1025,1025,1025,1025,1025,1025,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1026,1025,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1025,1026,1017,999,1016,999,1028,1029,964,1030,263,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,264,253,265,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,264,254,264,267,222,964,922,222,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,222,964,222,973,964,1034,1033,1033,1033,1034,1033,1033,1033,1033,1035,1036,1035,1035,1035,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1034,1033,1033,1033,1033,1033,1035,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1033,1038,1033,1033,1037,1033,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1033,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1039,1039,1039,1039,1040,1039,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1039,1039,1039,1039,1039,1040,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1041,1041,1041,1041,1041,1041,1041,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1041,1041,1041,1041,1042,1041,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1041,1041,1041,1041,1041,1042,1045,1044,1044,1044,1045,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1045,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1046,1046,1046,1046,1046,1046,1046,1046,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1047,1044,1044,1044,1044,1044,1044,1044,1044,1044,1048,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1049,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1050,1044,1044,1051,1044,1052,1053,1055,1055,1055,1055,1055,1055,1055,1055,1054,1056,1056,1056,1056,1056,1056,1056,1056,1054,1054,1057,1057,291,291,291,1057,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,1057,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,292,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,1058,291,1059,1060,1061,1061,291,291,291,1061,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,1061,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,292,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,1062,291,290,1061,1063,1064,1065,1065,276,276,276,1065,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,1065,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,277,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,1066,276,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1065,1065,1065,1065,1065,1065,1065,1067,1067,1067,1067,1067,1067,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1067,1067,1067,1067,1067,1067,1065,1069,1069,1069,1069,1069,1069,1069,1069,1069,1069,1068,1068,1068,1068,1068,1068,1068,1069,1069,1069,1069,1069,1069,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1069,1069,1069,1069,1069,1069,1068,1068,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1061,1061,1061,1061,1061,1061,1061,1070,1070,1070,1070,1070,1070,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1070,1070,1070,1070,1070,1070,1061,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1071,1071,1071,1071,1071,1071,1071,1072,1072,1072,1072,1072,1072,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1072,1072,1072,1072,1072,1072,1071,1071,1061,269,269,269,1061,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,1061,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,1073,269,1057,276,276,276,1057,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,1057,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,277,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,278,276,1057,1074,1074,1074,1057,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1057,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1075,1074,1076,1077,1077,1074,1074,1074,1077,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1077,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1078,1074,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1077,1077,1077,1077,1077,1077,1077,1079,1079,1079,1079,1079,1079,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1079,1079,1079,1079,1079,1079,1077,1081,1081,1081,1081,1081,1081,1081,1081,1081,1081,1080,1080,1080,1080,1080,1080,1080,1081,1081,1081,1081,1081,1081,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1081,1081,1081,1081,1081,1081,1080,1080,1077,269,269,269,1077,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,1077,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,1073,269,1082,1077,1077,276,276,276,1077,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,1077,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,277,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,278,276,1084,1084,1084,1084,1084,1084,1084,1084,1084,1084,1083,1083,1083,1083,1083,1083,1083,1084,1084,1084,1084,1084,1084,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1084,1084,1084,1084,1084,1084,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1085,1083,1086,1086,1086,1086,1086,1086,1086,1086,1086,1086,1083,1083,1083,1083,1083,1083,1083,1086,1086,1086,1086,1086,1086,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1086,1086,1086,1086,1086,1086,1083,1087,1087,1087,1087,1087,1087,1087,1087,1087,1087,1083,1083,1083,1083,1083,1083,1083,1087,1087,1087,1087,1087,1087,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1087,1087,1087,1087,1087,1087,1083,1088,1088,1088,1088,1088,1088,1088,1088,1088,1088,1083,1083,1083,1083,1083,1083,1083,1088,1088,1088,1088,1088,1088,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1088,1088,1088,1088,1088,1088,1083,1089,1092,1091,1091,1091,1092,1091,1091,1091,1091,1093,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1092,1091,1091,1091,1091,1091,1093,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1094,1094,1094,1094,1094,1094,1094,1094,1094,1094,1091,1091,1091,1091,1091,1091,1091,1094,1094,1094,1094,1094,1094,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1094,1094,1094,1094,1094,1094,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1095,1091,1092,1091,1091,1091,1092,1091,1091,1091,1091,1090,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1092,1091,1091,1091,1091,1091,1090,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1091,1091,1091,1091,1091,1091,1091,1096,1096,1096,1096,1096,1096,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1096,1096,1096,1096,1096,1096,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1097,1091,1090,1092,1096,1096,1096,1092,1096,1096,1096,1096,1090,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1092,1096,1096,1096,1096,1096,1090,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1090,1096,1098,1092,1099,1099,1099,1092,1099,1099,1099,1099,1093,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1093,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1100,1100,1100,1100,1100,1100,1100,1100,1100,1100,1099,1099,1099,1099,1099,1099,1099,1100,1100,1100,1100,1100,1100,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1100,1100,1100,1100,1100,1100,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1090,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1090,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1090,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1099,1099,1099,1099,1099,1099,1099,1096,1096,1096,1096,1096,1096,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1096,1096,1096,1096,1096,1096,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1102,1102,1102,1102,1102,1102,1102,1102,1102,1102,1099,1099,1099,1099,1099,1099,1099,1102,1102,1102,1102,1102,1102,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1102,1102,1102,1102,1102,1102,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1100,1100,1100,1100,1100,1100,1100,1100,1100,1100,1099,1099,1099,1099,1099,1099,1099,1100,1100,1100,1100,1100,1100,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1100,1100,1100,1100,1100,1100,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1104,1092,1099,1099,1099,1092,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1105,1105,1105,1105,1105,1105,1105,1105,1105,1105,1099,1099,1099,1099,1099,1099,1099,1105,1105,1105,1105,1105,1105,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1105,1105,1105,1105,1105,1105,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1106,1106,1106,1106,1106,1106,1106,1106,1106,1106,1099,1099,1099,1099,1099,1099,1099,1106,1106,1106,1106,1106,1106,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1106,1106,1106,1106,1106,1106,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1099,1099,1099,1099,1099,1099,1099,1107,1107,1107,1107,1107,1107,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1107,1107,1107,1107,1107,1107,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1108,1108,1108,1108,1108,1108,1108,1108,1108,1108,1099,1099,1099,1099,1099,1099,1099,1108,1108,1108,1108,1108,1108,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1108,1108,1108,1108,1108,1108,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1090,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1090,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1090,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1111,1111,1111,1111,1111,1111,1111,1111,1111,1111,1099,1099,1099,1099,1099,1099,1099,1111,1111,1111,1111,1111,1111,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1111,1111,1111,1111,1111,1111,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1112,1112,1112,1112,1112,1112,1112,1112,1112,1112,1099,1099,1099,1099,1099,1099,1099,1112,1112,1112,1112,1112,1112,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1112,1112,1112,1112,1112,1112,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1099,1099,1099,1099,1099,1099,1099,1113,1113,1113,1113,1113,1113,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1113,1113,1113,1113,1113,1113,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1090,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1114,1114,1114,1114,1114,1114,1114,1114,1114,1114,1099,1099,1099,1099,1099,1099,1099,1114,1114,1114,1114,1114,1114,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1114,1114,1114,1114,1114,1114,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1090,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1115,1115,1115,1115,1115,1115,1115,1115,1115,1115,1099,1099,1099,1099,1099,1099,1099,1115,1115,1115,1115,1115,1115,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1115,1115,1115,1115,1115,1115,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1090,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1099,1099,1099,1099,1099,1099,1099,1116,1116,1116,1116,1116,1116,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1116,1116,1116,1116,1116,1116,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1090,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1099,1099,1099,1099,1099,1099,1099,1117,1117,1117,1117,1117,1117,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1117,1117,1117,1117,1117,1117,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1090,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1090,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1099,1099,1099,1099,1099,1099,1099,1118,1118,1118,1118,1118,1118,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1118,1118,1118,1118,1118,1118,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1119,1119,1119,1119,1119,1119,1119,1119,1119,1119,1099,1099,1099,1099,1099,1099,1099,1119,1119,1119,1119,1119,1119,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1119,1119,1119,1119,1119,1119,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1120,1120,1120,1120,1120,1120,1120,1120,1120,1120,1099,1099,1099,1099,1099,1099,1099,1120,1120,1120,1120,1120,1120,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1120,1120,1120,1120,1120,1120,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1121,1121,1121,1121,1121,1121,1121,1121,1121,1121,1099,1099,1099,1099,1099,1099,1099,1121,1121,1121,1121,1121,1121,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1121,1121,1121,1121,1121,1121,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1122,1123,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1124,1124,1124,1124,1124,1124,1124,1125,1125,1125,1125,1125,1125,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1125,1125,1125,1125,1125,1125,1124,1124,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,297,212,212,212,212,212,212,212,212,212,212,212,212,212,212,296,296,296,296,296,296,296,296,296,296,298,212,212,299,212,297,212,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,212,212,212,212,296,212,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,212,212,212,212,212,296,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,297,964,964,964,964,964,964,964,964,964,964,964,964,964,964,296,296,296,296,296,296,296,296,296,296,298,964,964,299,964,297,964,296,296,296,296,1126,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,964,964,964,964,296,964,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,964,964,964,964,964,296,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,297,964,964,964,964,964,964,964,964,964,964,964,964,964,964,296,296,296,296,296,296,296,296,296,296,298,964,964,299,964,297,964,296,296,296,296,296,296,296,296,296,296,296,296,296,1127,296,296,296,296,296,296,296,296,296,296,296,296,964,964,964,964,296,964,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,964,964,964,964,964,296,1128,1129,964,959,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,1130,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,1131,1132,898,898,898,898,898,1133,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,1134,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,1135,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1136,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,1137,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,1138,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,1139,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,1140,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,1141,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,1142,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,297,212,212,212,212,212,212,212,212,212,212,212,212,212,212,898,898,898,898,898,898,898,898,898,898,298,212,212,299,212,297,212,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,212,212,212,212,898,212,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,212,212,212,212,212,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,1143,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,1144,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,1140,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,1145,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,1144,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,1146,898,1147,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,1148,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,1149,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1142,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,1142,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1150,898,898,898,898,898,898,898,898,898,898,898,898,1151,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,1152,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,1153,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,1142,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1154,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,1155,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,1142,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,1156,898,898,898,898,898,898,898,898,898,898,1157,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1158,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1142,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,1159,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1149,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1160,898,898,898,898,898,898,898,898,898,1142,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,1142,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,1161,898,1162,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1163,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1142,898,898,898,1160,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,1142,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1164,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1165,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1158,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,1166,898,898,898,898,898,898,898,898,898,898,898,898,898,933,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,1156,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1142,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,1167,898,898,898,898,898,898,898,1142,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1168,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,1169,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1170,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,1158,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1171,898,898,898,1172,898,898,898,898,898,1173,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1173,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1142,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,1142,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1174,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,1175,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1176,1177,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1142,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,1178,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1179,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1180,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1183,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1184,1181,1181,1185,1181,1183,1181,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1181,1181,1181,1181,1182,1181,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1181,1181,1181,1181,1181,1182,950,1186,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,952,949,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1187,898,898,1188,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1142,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1153,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1189,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1190,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,1160,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1191,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,933,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,1192,898,898,898,898,898,898,898,898,898,1193,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1153,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1158,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,1194,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,1195,898,898,898,898,898,898,898,1196,898,898,898,898,898,898,898,1197,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1160,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1198,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1199,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1167,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,1200,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,1167,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,1201,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1153,898,898,898,1202,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,1203,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1167,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,1204,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1205,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,1147,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,1206,222,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,1207,964,1209,1208,1208,1208,1209,1208,1208,1208,1208,1210,1211,1210,1210,1210,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1209,1208,1208,1208,1208,1208,1210,1208,1208,1212,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1213,1208,1210,1214,1210,1210,1210,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1210,1214,1215,1216,1217,1218,1219,1221,1220,1222,1224,1225,1225,1225,1224,1225,1225,1225,1225,1226,1227,1226,1226,1226,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1224,1225,1225,1225,1225,1225,1226,1225,1228,1229,1225,1225,1225,1228,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1225,1230,1225,1225,1223,1225,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1225,1225,1225,1225,1225,1223,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,305,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,304,304,304,304,304,304,304,304,304,304,306,1231,1231,1231,1231,305,1231,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,1231,1231,1231,1231,304,1231,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,1231,1231,1231,1231,1231,304,1226,1232,1226,1226,1226,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1226,1232,1233,1234,1235,1236,1237,1238,1231,1239,1241,1242,1242,1242,1241,1242,1242,1242,1242,1243,1244,1243,1243,1243,1242,1242,1242,1242,1242,1242,1242,1242,1242,1242,1242,1242,1241,1242,1242,1242,1242,1242,1243,1245,1246,1247,1248,1249,1250,1246,1251,1252,1253,1249,1254,1255,1256,1249,1257,1258,1258,1258,1258,1258,1258,1258,1258,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1266,1266,1268,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1269,1270,1271,1249,1272,1246,1273,1274,1275,1276,1277,1278,1240,1240,1279,1240,1240,1240,1280,1281,1282,1240,1240,1283,1284,1285,1286,1240,1287,1240,1288,1240,1289,1290,1291,1292,1242,1240,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,1293,314,314,314,314,314,314,314,314,314,314,314,314,314,314,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,314,314,314,314,314,1293,314,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,314,314,314,314,1240,314,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,314,314,314,314,314,1240,1295,1294,1296,1243,1297,1243,1243,1243,1297,1297,1297,1297,1297,1297,1297,1297,1297,1297,1297,1297,1297,1297,1297,1297,1297,1297,1243,1297,1298,1300,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1300,1299,1301,1302,1303,1304,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,309,309,1305,309,1305,309,309,1305,1305,309,309,309,1306,309,309,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,309,309,309,309,309,309,309,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,1305,309,1305,1305,326,309,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,1305,1305,1305,309,1305,326,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,326,326,326,326,326,326,326,326,326,326,1308,1308,1308,1308,1308,1308,1308,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,1308,1308,1308,1308,326,1308,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,1308,1308,1308,1308,1308,326,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1308,1309,314,1249,1310,1310,1310,1310,1310,1310,1310,1311,1310,1310,1310,1310,1310,1310,1310,1310,1310,1310,1310,1310,1310,1310,1309,1310,1312,1313,1249,1314,1314,1314,1314,1314,1314,1314,1314,1314,1314,1314,1314,1314,1314,1314,1314,1314,1314,1309,1314,1309,1315,1310,1317,1316,313,313,313,313,313,313,313,313,313,313,1316,1319,1318,1320,1318,313,313,313,313,313,313,313,313,313,313,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1322,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1323,1321,1321,1321,1321,1321,1322,1321,312,312,312,312,312,312,312,312,312,312,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,311,1321,1325,1324,1326,1326,1326,1326,1326,1326,1326,1326,1326,1326,1324,1324,1324,1324,1324,1324,1324,1324,1327,1324,1328,1329,1324,1324,1324,1324,1324,1324,1324,1324,1324,1330,1324,1324,1324,1324,1324,1324,1324,1324,1331,1324,1324,1324,1324,1324,1324,1332,1324,1324,1327,1324,1328,1329,1324,1324,1324,1333,1324,1324,1324,1324,1324,1330,1324,1324,1334,1324,1324,1324,1324,1324,1331,1324,315,315,315,315,315,315,315,315,315,315,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1336,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1337,1335,1335,1335,1335,1335,1336,1335,1335,1335,1338,1335,1335,1335,1335,1335,1335,1335,1335,1339,1335,1340,314,1340,314,314,316,316,316,316,316,316,316,316,316,316,314,316,316,316,316,316,316,316,316,316,316,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1340,1341,1341,1341,1341,1341,1341,1341,1341,1341,1342,1341,1344,1343,1345,1347,1346,1346,1346,1348,1346,1349,1350,1326,1326,1326,1326,1326,1326,1326,1326,1326,1326,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1332,1324,1324,1324,1324,1324,1324,1324,1324,1324,1333,1324,1324,1324,1324,1324,1324,1324,1324,1334,1324,1351,1351,1351,1351,1351,1351,1351,1351,1351,1351,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1352,1324,1324,1324,1324,1324,1324,1324,1324,1324,1333,1324,1324,1324,1324,1324,1324,1324,1324,1334,1324,1354,1354,1354,1354,1354,1354,1354,1354,1354,1354,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1355,1353,1353,1353,1353,1353,1353,1353,1353,1353,1356,1353,1353,1353,1353,1353,1353,1353,1353,1357,1353,1354,1354,1354,1354,1354,1354,1354,1354,1354,1354,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1358,1353,1353,1353,1353,1353,1353,1353,1353,1353,1356,1353,1353,1353,1353,1353,1353,1353,1353,1357,1353,1356,1353,1353,1353,1353,1353,1353,1353,1353,1357,1353,1360,1359,1361,1363,1362,1362,1362,1364,1362,1366,1365,1367,1368,1370,1370,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1371,1369,1369,1369,1369,1369,1369,1369,1369,1369,1372,1369,1369,1369,1369,1369,1369,1369,1369,1373,1369,1374,1374,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1375,1353,1353,1353,1353,1353,1353,1353,1353,1353,1356,1353,1353,1353,1353,1353,1353,1353,1353,1357,1353,1374,1374,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1358,1353,1353,1353,1353,1353,1353,1353,1353,1353,1356,1353,1353,1353,1353,1353,1353,1353,1353,1357,1353,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1378,1376,1376,1376,1376,1376,1376,1376,1376,1376,1379,1376,1376,1376,1376,1376,1376,1376,1376,1380,1376,1382,1382,1382,1382,1382,1382,1382,1382,1382,1382,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1383,1381,1381,1381,1381,1381,1381,1381,1381,1381,1384,1381,1381,1381,1381,1381,1381,1381,1381,1385,1381,1387,1387,1387,1387,1387,1387,1387,1387,1387,1387,1386,1386,1386,1386,1386,1386,1386,1387,1387,1387,1387,1387,1387,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1388,1386,1387,1387,1387,1387,1387,1387,1386,1386,1389,1386,1386,1386,1386,1386,1386,1386,1386,1390,1386,1391,1391,1391,1391,1391,1391,1391,1391,1391,1391,1353,1353,1353,1353,1353,1353,1353,1391,1391,1391,1391,1391,1391,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1392,1353,1391,1391,1391,1391,1391,1391,1353,1353,1356,1353,1353,1353,1353,1353,1353,1353,1353,1357,1353,1391,1391,1391,1391,1391,1391,1391,1391,1391,1391,1353,1353,1353,1353,1353,1353,1353,1391,1391,1391,1391,1391,1391,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1358,1353,1391,1391,1391,1391,1391,1391,1353,1353,1356,1353,1353,1353,1353,1353,1353,1353,1353,1357,1353,1394,1393,1395,1395,1395,1395,1395,1395,1395,1395,1395,1395,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1396,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1397,1393,1393,1393,1393,1393,1396,1393,1393,1393,1398,1393,1393,1393,1393,1393,1393,1393,1393,1399,1393,1400,1400,1400,1400,1400,1400,1400,1400,1400,1400,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1401,1393,1393,1393,1393,1393,1393,1393,1393,1393,1398,1393,1393,1393,1393,1393,1393,1393,1393,1399,1393,1402,1353,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1404,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1405,1353,1353,1353,1353,1353,1404,1353,1353,1353,1356,1353,1353,1353,1353,1353,1353,1353,1353,1357,1353,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1358,1353,1353,1353,1353,1353,1353,1353,1353,1353,1356,1353,1353,1353,1353,1353,1353,1353,1353,1357,1353,1311,1318,1249,1406,1310,1300,1310,1407,1408,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1300,1318,1300,1310,1300,1249,1310,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,326,326,326,326,326,326,326,326,326,326,1305,1305,1305,1305,1305,1305,1409,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,1305,1305,1305,1305,326,1305,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,1305,1305,1305,1305,1305,326,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,1293,314,314,314,314,314,314,314,314,314,314,314,314,314,314,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1410,314,314,314,314,1293,314,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,314,314,314,314,1266,314,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,314,314,314,314,314,1266,1411,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1293,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1410,1412,1412,1412,1412,1293,1412,1266,1266,1266,1266,1413,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1266,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1412,1266,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1293,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1410,1412,1412,1412,1412,1293,1412,1266,1266,1266,1266,1266,1266,1414,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1266,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1412,1266,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1293,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1410,1412,1412,1412,1412,1293,1412,1266,1266,1266,1266,1266,1266,1266,1266,1415,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1266,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1412,1266,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1293,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1410,1412,1412,1412,1412,1293,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1416,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1266,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1412,1266,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1293,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1410,1412,1412,1412,1412,1293,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1417,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1266,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1412,1266,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1293,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1410,1412,1412,1412,1412,1293,1412,1266,1266,1266,1416,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1266,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1412,1266,1418,1420,1419,1421,1422,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1424,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1425,1426,1240,1240,1240,1240,1240,1427,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1428,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1429,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1430,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1431,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1432,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1433,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1434,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1435,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1436,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1437,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1438,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1439,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1440,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1441,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1442,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1438,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1443,1240,1444,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1445,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1446,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1447,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1448,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1449,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1450,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1451,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1452,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1448,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1453,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1454,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1455,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1456,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1457,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1458,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1448,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1459,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1460,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1461,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1462,1462,1462,1462,1462,1462,1462,1462,1462,328,329,328,328,328,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,328,1293,1462,330,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1462,1462,331,1462,1462,1293,1462,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1462,332,1462,1462,1240,1462,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1462,1462,1462,1462,1462,1240,345,346,345,345,345,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,345,344,344,347,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,350,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,349,344,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1464,1240,1240,1240,1240,1240,1240,1240,1240,1240,1465,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1466,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1293,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1467,1467,1467,1467,1467,1293,1467,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1467,1467,1467,1467,1240,1467,1240,1240,1240,1240,1240,1240,1240,1240,1468,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1467,1467,1467,1467,1467,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1469,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1470,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1471,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1472,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1473,1240,1474,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1475,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1448,1240,1240,1240,1476,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1448,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1441,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1477,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1478,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1458,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1479,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1282,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1480,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1481,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1441,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1448,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1482,1240,1240,1240,1240,1240,1240,1240,1448,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1483,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1484,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1485,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1458,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1486,1240,1240,1240,1487,1240,1240,1240,1240,1240,1488,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1489,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1455,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1441,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1490,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1491,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1492,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1493,1494,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1441,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1495,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1496,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1482,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1497,1240,1240,1498,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1441,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1499,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1455,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1500,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1501,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1502,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1441,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1503,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1504,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1490,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1505,1240,1240,1240,1240,1240,1240,1240,1240,1240,1506,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1452,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1481,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1507,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1508,1240,1240,1240,1240,1240,1240,1240,1509,1240,1240,1240,1240,1240,1240,1240,1510,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1511,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1447,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1512,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1513,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1482,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1514,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1482,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1515,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1452,1240,1240,1240,1516,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1517,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1482,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1518,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1519,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1520,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1490,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1521,1309,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1249,1299,1522,1524,1523,1524,1524,1524,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1524,1523,1523,1525,1523,1523,1526,1523,1523,1523,1523,1523,1523,1523,358,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1527,1523,354,355,354,354,354,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,354,1528,1528,356,1528,1528,357,1528,1528,1528,1528,1528,1528,1528,358,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,359,1528,361,1529,361,361,361,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,361,1529,1529,356,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,359,1529,1531,1530,1533,1532,364,363,369,1528,367,1528,1535,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1536,1534,1535,1534,1535,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1538,1534,1535,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1539,1534,1535,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1540,1534,1542,1540,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_trans_targs"),self.$private("_lex_trans_targs","_lex_trans_targs=")}(Opal.get_singleton_class(self)),$send(self,"_lex_trans_targs=",$to_a($writer=[[187,2,3,4,193,6,7,8,9,10,187,187,196,199,196,12,200,201,14,196,208,209,212,213,225,222,214,215,216,19,217,218,219,227,229,230,234,235,236,231,25,18,210,211,27,259,260,262,264,262,30,265,266,32,262,273,274,277,278,290,287,279,280,281,37,282,283,284,292,294,295,299,300,301,296,43,36,275,276,45,324,325,332,334,332,48,335,336,50,338,341,338,52,342,343,54,349,348,0,56,350,351,58,352,353,353,353,353,466,61,62,63,466,65,466,495,66,67,495,495,499,499,71,66,72,497,498,500,501,499,495,502,503,505,68,69,506,507,70,499,73,74,79,86,509,510,72,497,498,500,501,499,495,502,503,505,68,69,506,507,70,73,74,79,86,509,510,508,75,76,77,78,80,81,84,82,83,85,87,88,495,90,91,92,94,97,95,96,98,100,526,526,526,527,102,529,103,530,104,527,102,529,103,530,564,105,564,106,107,105,564,106,564,564,564,110,111,112,113,575,564,564,564,116,117,118,564,121,116,117,118,564,121,119,119,117,118,585,120,119,119,117,118,585,120,117,564,602,564,123,603,609,127,618,619,132,133,127,128,617,128,617,564,129,130,131,620,134,564,634,635,638,639,651,648,640,641,642,139,643,644,645,653,655,656,660,661,662,657,145,138,636,637,147,698,699,149,566,108,568,151,152,701,803,154,155,156,803,811,811,811,159,833,832,811,835,837,811,164,165,166,841,811,168,169,852,821,874,172,173,174,178,179,172,173,174,178,179,175,175,173,174,176,177,175,175,173,174,176,177,922,173,811,991,180,993,182,186,994,184,991,181,991,183,993,183,993,185,993,991,187,187,188,189,190,192,194,195,187,187,187,191,187,191,187,1,187,187,187,5,196,196,197,196,198,202,196,196,11,13,196,196,196,196,203,204,205,15,21,26,237,28,196,196,196,206,207,196,16,196,196,196,17,196,196,196,20,220,196,221,223,196,224,226,228,22,196,196,23,232,196,233,24,196,238,242,239,240,241,196,196,243,244,247,249,258,245,246,196,248,250,252,251,196,253,254,255,256,257,196,196,196,261,262,262,262,263,267,262,29,31,262,262,262,262,268,269,270,33,39,44,302,46,262,262,262,271,272,262,34,262,262,262,35,262,262,262,38,285,262,286,288,262,289,291,293,40,262,262,41,297,262,298,42,262,303,307,304,305,306,262,262,308,309,312,314,323,310,311,262,313,315,317,316,262,318,319,320,321,322,262,262,262,326,327,327,328,327,329,327,327,327,330,330,330,331,330,330,330,332,332,332,333,332,47,49,332,332,332,337,337,337,338,338,339,338,340,338,338,51,53,338,338,338,344,344,345,344,344,346,347,346,55,57,348,348,348,354,353,353,355,356,357,358,360,363,364,365,366,353,367,368,370,372,373,374,378,380,381,382,398,403,410,415,422,429,432,433,437,431,441,449,453,455,460,462,465,353,353,353,353,353,353,359,353,359,353,361,59,362,353,60,353,353,369,371,353,375,376,377,373,379,353,383,384,393,396,385,386,387,388,389,390,391,392,354,394,395,397,399,402,400,401,404,407,405,406,408,409,411,413,412,414,416,417,353,418,419,420,421,353,423,426,424,425,427,428,430,434,435,436,438,440,439,442,443,444,446,445,447,448,450,451,452,454,456,457,458,459,461,463,464,467,466,466,468,469,471,472,466,466,466,470,466,470,64,473,466,475,474,474,478,479,480,481,474,483,484,485,486,488,490,491,492,493,494,474,476,474,477,474,474,474,474,474,482,474,482,487,474,489,474,495,495,496,511,512,498,514,515,502,516,517,518,519,520,522,523,524,525,495,495,495,495,495,495,499,504,495,495,495,495,495,495,495,495,495,513,495,513,495,495,495,495,521,495,89,93,99,526,528,531,101,526,526,527,532,532,533,534,536,538,539,532,532,535,532,535,532,537,532,532,532,541,540,540,542,543,544,546,548,549,554,561,540,540,540,540,545,540,545,540,547,540,540,541,550,551,552,553,555,556,559,557,558,560,562,563,565,564,573,574,576,577,579,580,581,582,584,586,587,590,591,616,622,623,624,701,702,703,704,705,583,707,724,729,736,741,743,749,752,753,757,751,761,772,776,779,787,791,794,795,564,105,106,564,108,567,564,564,569,571,572,564,570,564,564,564,564,564,109,564,564,564,564,564,578,564,578,564,564,114,564,115,564,564,583,564,588,564,589,564,564,564,592,601,564,122,604,605,606,564,607,124,610,611,125,614,615,564,593,595,564,594,564,564,596,599,600,564,597,598,564,564,564,564,564,564,608,564,602,612,613,564,612,564,602,612,126,621,564,564,564,625,564,564,564,626,628,564,627,564,627,564,629,630,631,135,141,146,663,148,564,564,564,632,633,564,136,564,564,564,137,564,564,564,140,646,564,647,649,564,650,652,654,142,564,564,143,658,564,659,144,564,664,668,665,666,667,564,564,669,670,673,684,697,671,672,564,674,675,676,678,677,564,679,680,681,682,683,685,692,686,687,688,689,690,691,693,694,695,696,564,564,564,700,150,153,564,706,708,709,719,722,710,711,712,713,714,715,716,717,718,720,721,723,725,728,726,727,730,733,731,732,734,735,737,739,738,740,742,744,746,745,747,748,750,718,754,755,756,758,760,759,762,763,764,769,765,766,767,564,565,566,108,768,571,770,771,773,774,775,777,778,780,781,782,785,783,784,786,788,789,790,792,793,564,583,796,796,797,798,799,801,796,796,796,800,796,800,796,802,796,804,803,803,805,806,803,807,809,803,803,803,803,808,803,808,810,803,812,811,811,815,816,817,811,818,820,823,824,825,826,827,811,828,829,834,862,866,811,867,869,871,811,872,873,875,879,881,882,884,885,903,908,915,923,930,937,942,943,947,941,952,962,968,971,980,984,988,989,990,823,813,811,814,811,811,811,811,811,811,819,811,819,811,157,822,811,811,811,811,811,811,811,811,811,830,811,831,811,811,158,160,811,161,843,854,857,836,858,859,844,848,850,811,836,161,838,840,162,811,838,811,839,811,811,163,842,811,811,845,847,811,845,846,848,850,847,811,849,811,811,851,853,811,167,811,811,811,855,847,848,850,855,856,811,845,847,848,850,811,845,847,848,850,811,860,847,848,850,860,861,811,161,862,836,863,848,850,864,847,161,864,836,865,868,870,811,170,171,811,811,876,877,878,873,880,811,811,883,811,811,811,886,887,896,901,888,889,890,891,892,893,894,895,812,897,898,899,900,812,902,904,907,905,906,812,812,909,912,910,911,913,914,812,916,918,917,919,920,921,811,811,924,812,925,811,926,927,928,929,813,931,934,932,933,935,936,938,939,940,812,944,945,946,948,950,951,949,812,953,954,955,958,956,957,959,960,961,963,965,964,966,967,969,970,972,973,975,978,974,976,977,979,981,982,983,985,986,987,811,811,991,992,996,997,998,991,991,991,995,991,991,1e3,999,1001,999,1002,1003,1004,999,999]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_trans_actions"),self.$private("_lex_trans_actions","_lex_trans_actions=")}(Opal.get_singleton_class(self)),$send(self,"_lex_trans_actions=",$to_a($writer=[[1,0,0,0,0,0,0,0,0,0,2,3,4,0,5,0,0,0,0,6,0,7,0,8,0,0,7,0,0,0,0,8,0,7,0,8,0,7,7,0,0,0,0,0,0,0,0,9,0,10,0,0,0,0,11,0,7,0,8,0,0,7,0,0,0,0,8,0,7,0,8,0,7,7,0,0,0,0,0,0,0,0,12,0,13,0,0,0,0,14,0,15,0,0,0,0,0,16,0,0,0,0,0,0,17,18,19,20,21,0,0,0,22,0,23,24,0,0,25,26,27,28,29,30,30,31,32,30,33,32,34,32,30,30,31,30,35,30,30,36,30,30,30,30,30,30,0,37,38,0,39,38,40,38,0,0,37,0,41,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,43,44,45,46,0,0,0,46,29,47,30,30,30,47,48,0,49,0,29,30,50,30,51,52,53,0,0,0,0,0,54,55,56,0,29,0,57,0,30,58,30,59,30,60,61,62,61,63,61,0,64,65,64,66,64,67,68,0,69,0,0,0,0,70,70,0,0,71,71,72,0,29,73,0,0,0,70,0,74,0,7,0,8,0,0,7,0,0,0,0,8,0,7,0,8,0,7,7,0,0,0,0,0,0,0,0,0,75,0,0,0,0,75,76,0,0,0,77,78,79,80,0,7,7,81,82,82,83,0,0,0,0,84,0,0,0,0,0,0,29,0,0,0,30,58,30,30,30,60,61,62,61,61,61,0,64,65,64,64,64,85,67,86,87,0,88,0,89,89,0,90,0,91,60,92,0,93,29,94,95,98,99,0,29,0,7,0,7,100,101,102,60,103,0,104,0,105,106,107,0,108,109,0,110,7,7,111,112,0,0,113,114,115,116,117,117,117,117,117,117,117,117,118,119,120,0,0,121,0,122,123,124,0,125,126,127,0,0,128,0,0,129,0,7,0,0,130,131,0,0,132,0,29,133,0,0,0,0,0,134,135,0,0,0,0,0,0,0,136,0,0,0,0,137,0,0,0,0,0,138,139,140,0,141,142,143,7,7,144,0,0,145,146,147,148,117,117,117,117,117,117,117,117,149,150,151,0,0,152,0,153,154,155,0,156,157,158,0,0,159,0,0,160,0,7,0,0,161,162,0,0,163,0,29,164,0,0,0,0,0,165,166,0,0,0,0,0,0,0,167,0,0,0,0,168,0,0,0,0,0,169,170,171,0,172,173,0,174,0,175,176,177,178,179,180,0,181,182,183,184,185,186,7,187,0,0,188,189,190,191,192,193,194,195,0,196,7,197,198,0,0,199,200,201,202,203,0,204,205,206,0,207,0,0,208,209,210,211,212,213,0,29,0,0,7,7,0,0,0,214,0,0,0,0,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,217,218,219,220,221,60,222,0,223,0,0,0,224,0,225,226,0,0,227,0,0,0,228,0,229,0,0,0,0,0,0,0,0,0,0,0,0,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,0,0,0,0,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,232,233,0,0,7,0,234,235,236,60,237,0,0,29,238,0,239,240,0,29,0,0,241,0,0,0,0,0,0,0,0,0,0,242,0,243,0,244,245,246,247,248,60,249,0,0,250,0,251,252,253,254,29,0,28,0,0,28,0,0,0,0,0,0,7,7,7,255,256,257,258,259,260,261,0,262,263,264,265,266,267,268,269,270,60,271,0,272,273,274,275,276,277,0,0,0,278,7,7,0,279,280,281,282,283,0,0,0,0,0,284,285,60,286,0,287,29,288,289,290,291,292,293,0,29,0,0,0,0,0,0,294,295,296,297,60,298,0,299,29,300,301,302,0,0,0,0,0,0,0,0,0,0,0,0,303,304,0,8,0,0,7,305,0,0,305,305,0,0,7,306,0,306,0,306,306,306,0,0,306,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,0,0,307,308,308,309,310,0,311,312,0,75,0,313,0,314,315,316,317,318,30,319,320,321,322,323,60,324,0,325,326,0,327,0,328,329,305,330,0,331,0,332,333,334,0,0,335,0,0,0,0,336,0,0,0,0,0,0,0,337,0,0,338,0,339,340,0,0,0,341,0,0,342,343,344,345,346,347,0,348,349,349,0,350,0,351,352,352,0,0,353,354,355,0,356,357,358,0,7,359,360,361,0,362,117,117,117,117,117,117,117,117,363,364,365,0,0,366,0,367,368,369,0,370,371,372,0,0,373,0,0,374,0,7,0,0,375,376,0,0,377,0,29,378,0,0,0,0,0,379,380,0,0,0,0,0,0,0,381,0,0,0,0,0,382,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,383,384,385,0,0,0,386,29,303,303,303,303,303,303,303,303,303,303,303,303,75,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,387,303,303,303,303,303,303,303,303,303,303,303,303,388,389,390,391,392,392,388,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,393,394,395,396,0,29,0,0,397,398,399,60,400,0,401,29,402,7,403,404,0,29,405,0,0,406,407,408,409,60,410,0,29,411,412,413,414,0,29,0,415,0,7,416,0,0,0,0,417,0,0,418,418,0,419,0,0,0,420,7,421,421,421,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,422,423,424,0,425,426,427,428,429,430,60,431,0,432,0,0,433,434,435,436,437,438,439,440,441,0,442,0,443,444,0,0,445,446,447,0,0,448,0,0,447,449,449,450,451,0,452,453,0,454,455,456,0,457,458,0,0,459,460,447,447,461,0,0,462,462,0,463,0,464,465,7,0,466,0,467,468,469,470,470,471,471,0,0,472,473,473,474,474,475,476,476,477,477,478,479,479,480,480,0,0,481,482,483,484,485,486,486,483,485,487,418,488,0,0,0,489,0,0,490,491,421,421,421,492,421,493,494,29,495,496,497,0,0,0,0,0,0,0,0,0,0,0,0,498,0,0,0,0,492,0,0,0,0,0,499,500,0,0,0,0,0,0,501,0,0,0,0,0,500,502,503,0,504,0,505,0,0,0,0,506,0,0,0,0,0,0,0,0,0,507,0,0,0,0,0,0,0,506,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,508,509,510,511,511,89,511,512,513,514,0,515,516,0,517,0,518,0,0,0,519,520]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_to_state_actions"),self.$private("_lex_to_state_actions","_lex_to_state_actions=")}(Opal.get_singleton_class(self)),$send(self,"_lex_to_state_actions=",$to_a($writer=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,96,0,96,0,0,0,0,96,96,0,0,0,0,0,96,0,96,0,96,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_from_state_actions"),self.$private("_lex_from_state_actions","_lex_from_state_actions=")}(Opal.get_singleton_class(self)),$send(self,"_lex_from_state_actions=",$to_a($writer=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,97,0,97,0,0,0,0,97,97,0,0,0,0,0,97,0,97,0,97,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_eof_trans"),self.$private("_lex_eof_trans","_lex_eof_trans=")}(Opal.get_singleton_class(self)),$send(self,"_lex_eof_trans=",$to_a($writer=[[0,1,1,1,1,1,1,1,1,1,1,13,13,13,13,20,20,20,20,20,20,20,20,20,20,20,20,20,20,48,48,48,48,55,55,55,55,55,55,55,55,55,55,55,55,55,55,83,83,83,83,90,90,90,90,0,0,0,0,105,107,109,109,109,109,109,116,116,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,181,181,181,181,181,181,181,181,181,181,181,181,191,193,193,193,205,205,205,213,215,215,215,215,215,221,213,213,213,213,213,213,213,247,247,247,247,247,247,213,263,213,263,247,247,213,269,269,269,269,269,269,269,269,269,269,269,269,269,269,213,247,247,247,247,304,304,304,309,311,311,311,315,315,318,318,318,318,323,323,323,309,315,315,315,315,315,315,315,315,315,354,361,363,363,363,363,354,0,379,380,381,383,385,387,385,385,0,397,398,402,402,403,404,413,414,415,415,415,418,418,420,421,422,422,422,424,425,426,426,426,429,429,422,432,432,422,418,418,437,438,438,438,441,441,438,438,438,444,444,444,444,450,451,451,451,451,459,451,451,451,451,464,451,451,451,451,451,451,470,471,472,472,0,479,483,483,484,485,494,495,496,496,496,499,499,501,502,503,503,503,505,506,507,507,507,510,510,503,513,513,503,499,499,518,519,519,519,522,522,519,519,519,525,525,525,525,531,532,532,532,532,540,532,532,532,532,545,532,532,532,532,532,532,551,552,553,553,0,560,561,0,567,0,574,578,578,579,0,0,588,589,593,593,594,0,599,0,602,0,605,605,606,607,0,648,650,651,652,653,655,657,661,661,652,652,652,652,663,652,652,657,652,652,648,667,667,667,667,667,667,657,657,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,706,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,652,0,750,751,752,754,750,750,758,0,777,779,781,782,783,784,785,787,784,784,784,784,784,790,784,784,792,790,790,784,0,811,812,116,116,815,816,116,812,812,819,821,824,812,825,812,826,827,829,831,812,819,832,832,821,832,836,832,832,832,832,0,191,844,845,844,844,0,854,855,857,859,861,859,863,0,875,876,877,878,880,882,884,885,885,885,885,885,885,885,885,885,885,885,885,885,885,885,885,0,943,946,949,950,954,956,957,958,959,960,962,965,966,968,970,973,975,976,213,973,978,973,965,980,982,965,965,1e3,1003,1005,1006,1010,1013,1014,1015,1016,1e3,1e3,1e3,1e3,1e3,1e3,1e3,1e3,1e3,1e3,1020,1024,1026,1e3,1e3,965,1031,1032,1032,1032,965,965,965,1033,1040,1040,1042,1044,1053,1054,1055,1055,1055,1058,1058,1060,1061,1062,1062,1062,1064,1065,1066,1066,1066,1069,1069,1062,1072,1072,1062,1058,1058,1077,1078,1078,1078,1081,1081,1078,1078,1078,1084,1084,1084,1084,1090,1091,1091,1091,1091,1099,1091,1091,1091,1091,1105,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1123,1124,1125,1125,213,965,965,1129,965,960,943,943,943,943,943,943,943,943,943,943,943,213,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,1182,950,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,1207,965,0,1215,1216,1217,1219,1221,1223,0,1232,1233,1234,1235,1237,1232,1240,0,315,1295,1297,1298,1299,1300,1302,1304,1306,1309,1309,315,1311,1313,1314,1315,1311,1317,1319,1319,1322,1322,1325,1336,315,1342,1344,1346,1347,1350,1351,1325,1325,1354,1354,1354,1360,1362,1363,1366,1368,1369,1370,1354,1354,1377,1382,1387,1354,1354,1394,1394,1354,1354,1319,1311,1311,1319,1311,1311,1306,315,1412,1413,1413,1413,1413,1413,1413,1419,1306,1422,1423,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1463,1464,1424,1424,1468,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1522,1300,1523,0,1529,1530,1531,1533,1529,1529,1529,0,1538,1538,1538,1538,1542]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_start")}(Opal.get_singleton_class(self)),$send(self,"lex_start=",$to_a($writer=[187])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_error")}(Opal.get_singleton_class(self)),$send(self,"lex_error=",$to_a($writer=[0])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_words=",$to_a($writer=[196])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_string")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_string=",$to_a($writer=[262])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_words=",$to_a($writer=[327])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_string")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_string=",$to_a($writer=[330])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_backslash_delimited")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_backslash_delimited=",$to_a($writer=[332])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_backslash_delimited")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_backslash_delimited=",$to_a($writer=[337])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_backslash_delimited_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_backslash_delimited_words=",$to_a($writer=[338])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_backslash_delimited_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_backslash_delimited_words=",$to_a($writer=[344])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_regexp_modifiers")}(Opal.get_singleton_class(self)),$send(self,"lex_en_regexp_modifiers=",$to_a($writer=[346])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_variable")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_variable=",$to_a($writer=[348])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_fname")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_fname=",$to_a($writer=[353])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_endfn")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_endfn=",$to_a($writer=[466])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_dot")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_dot=",$to_a($writer=[474])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_arg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_arg=",$to_a($writer=[495])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_cmdarg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_cmdarg=",$to_a($writer=[526])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_endarg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_endarg=",$to_a($writer=[532])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_mid")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_mid=",$to_a($writer=[540])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_beg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_beg=",$to_a($writer=[564])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_labelarg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_labelarg=",$to_a($writer=[796])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_value")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_value=",$to_a($writer=[803])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_end")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_end=",$to_a($writer=[811])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_leading_dot")}(Opal.get_singleton_class(self)),$send(self,"lex_en_leading_dot=",$to_a($writer=[991])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_line_comment")}(Opal.get_singleton_class(self)),$send(self,"lex_en_line_comment=",$to_a($writer=[999])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_line_begin")}(Opal.get_singleton_class(self)),$send(self,"lex_en_line_begin=",$to_a($writer=[187])),$writer[$rb_minus($writer.length,1)],$const_set($nesting[0],"ESCAPES",$hash("a".$ord(),"","b".$ord(),"\b","e".$ord(),"","f".$ord(),"\f","n".$ord(),"\n","r".$ord(),"\r","s".$ord()," ","t".$ord(),"\t","v".$ord(),"\v","\\".$ord(),"\\").$freeze()),$const_set($nesting[0],"REGEXP_META_CHARACTERS",$send($$("Regexp"),"union",$to_a("\\$()*+.<>?[]^{|}".$chars())).$freeze()),self.$attr_reader("source_buffer"),self.$attr_accessor("diagnostics"),self.$attr_accessor("static_env"),self.$attr_accessor("force_utf32"),self.$attr_accessor("cond","cmdarg","in_kwarg","context","command_start"),self.$attr_accessor("tokens","comments"),self.$attr_reader("paren_nest","cmdarg_stack","cond_stack","lambda_stack"),$def(self,"$initialize",(function(version){return this.version=version,this.static_env=nil,this.context=nil,this.tokens=nil,this.comments=nil,this.$reset()}),1),$def(self,"$reset",(function(reset_state){return null==reset_state&&(reset_state=!0),$truthy(reset_state)&&(this.cs=this.$class().$lex_en_line_begin(),this.cond=$$("StackState").$new("cond"),this.cmdarg=$$("StackState").$new("cmdarg"),this.cond_stack=[],this.cmdarg_stack=[]),this.force_utf32=!1,this.source_pts=nil,this.p=0,this.ts=nil,this.te=nil,this.act=0,this.stack=[],this.top=0,this.token_queue=[],this.literal_stack=[],this.eq_begin_s=nil,this.sharp_s=nil,this.newline_s=nil,this.num_base=nil,this.num_digits_s=nil,this.num_suffix_s=nil,this.num_xfrm=nil,this.escape_s=nil,this.escape=nil,this.herebody_s=nil,this.paren_nest=0,this.lambda_stack=[],this.dedent_level=nil,this.command_start=!0,this.in_kwarg=!1,this.cs_before_block_comment=this.$class().$lex_en_line_begin()}),-1),$def(self,"$source_buffer=",(function(source_buffer){var source=nil;return this.source_buffer=source_buffer,$truthy(this.source_buffer)?(source=this.source_buffer.$source(),$eqeq(source.$encoding(),$$$($$("Encoding"),"UTF_8"))?this.source_pts=source.$unpack("U*"):this.source_pts=source.$unpack("C*"),$eqeq(this.source_pts["$[]"](0),65279)?this.p=1:nil):this.source_pts=nil}),1),$def(self,"$encoding",(function(){return this.source_buffer.$source().$encoding()}),0),$const_set($nesting[0],"LEX_STATES",$hash2(["line_begin","expr_dot","expr_fname","expr_value","expr_beg","expr_mid","expr_arg","expr_cmdarg","expr_end","expr_endarg","expr_endfn","expr_labelarg","interp_string","interp_words","plain_string","plain_words"],{line_begin:self.$lex_en_line_begin(),expr_dot:self.$lex_en_expr_dot(),expr_fname:self.$lex_en_expr_fname(),expr_value:self.$lex_en_expr_value(),expr_beg:self.$lex_en_expr_beg(),expr_mid:self.$lex_en_expr_mid(),expr_arg:self.$lex_en_expr_arg(),expr_cmdarg:self.$lex_en_expr_cmdarg(),expr_end:self.$lex_en_expr_end(),expr_endarg:self.$lex_en_expr_endarg(),expr_endfn:self.$lex_en_expr_endfn(),expr_labelarg:self.$lex_en_expr_labelarg(),interp_string:self.$lex_en_interp_string(),interp_words:self.$lex_en_interp_words(),plain_string:self.$lex_en_plain_string(),plain_words:self.$lex_en_plain_string()})),$def(self,"$state",(function(){return $$("LEX_STATES").$invert().$fetch(this.cs,this.cs)}),0),$def(self,"$state=",(function(state){return this.cs=$$("LEX_STATES").$fetch(state)}),1),$def(self,"$push_cmdarg",(function(){return this.cmdarg_stack.$push(this.cmdarg),this.cmdarg=$$("StackState").$new("cmdarg."+this.cmdarg_stack.$count())}),0),$def(self,"$pop_cmdarg",(function(){return this.cmdarg=this.cmdarg_stack.$pop()}),0),$def(self,"$push_cond",(function(){return this.cond_stack.$push(this.cond),this.cond=$$("StackState").$new("cond."+this.cond_stack.$count())}),0),$def(self,"$pop_cond",(function(){return this.cond=this.cond_stack.$pop()}),0),$def(self,"$dedent_level",(function(){var $a,dedent_level;return dedent_level=($a=[this.dedent_level,nil])[0],this.dedent_level=$a[1],dedent_level}),0),$def(self,"$advance",(function(){var $a,$b,pe,self=this,klass=nil,_lex_trans_keys=nil,_lex_key_spans=nil,_lex_index_offsets=nil,_lex_indicies=nil,_lex_trans_targs=nil,_lex_trans_actions=nil,_lex_to_state_actions=nil,_lex_from_state_actions=nil,_lex_eof_trans=nil,p=nil,eof=nil,cmd_state=nil,_slen=nil,_trans=nil,_keys=nil,_inds=nil,_goto_level=nil,$ret_or_1=nil,_wide=nil,tm=nil,heredoc_e=nil,diag_msg=nil,ident_tok=nil,ident_ts=nil,ident_te=nil,current_literal=nil,$writer=nil,line=nil,string=nil,lookahead=nil,token=nil,message=nil,escaped_char=nil,$ret_or_2=nil,unknown_options=nil,type=nil,delimiter=nil,escape=nil,ident=nil,followed_by_nl=nil,nl_emitted=nil,dots_te=nil,value=nil,digits=nil,invalid_idx=nil,invalid_s=nil,codepoints=nil,codepoint_s=nil,spaces_p=nil,codepoint=nil,new_herebody_s=nil,indent=nil,dedent_body=nil;if($truthy(self.token_queue["$any?"]()))return self.token_queue.$shift();for(_lex_trans_keys=(klass=self.$class()).$send("_lex_trans_keys"),_lex_key_spans=klass.$send("_lex_key_spans"),_lex_index_offsets=klass.$send("_lex_index_offsets"),_lex_indicies=klass.$send("_lex_indicies"),_lex_trans_targs=klass.$send("_lex_trans_targs"),_lex_trans_actions=klass.$send("_lex_trans_actions"),_lex_to_state_actions=klass.$send("_lex_to_state_actions"),_lex_from_state_actions=klass.$send("_lex_from_state_actions"),_lex_eof_trans=klass.$send("_lex_eof_trans"),pe=$rb_plus(self.source_pts.$size(),2),$a=[self.p,pe],p=$a[0],eof=$a[1],cmd_state=self.command_start,self.command_start=!1,!1,_slen=null==($a=$to_ary($b=nil))[0]?nil:$a[0],_trans=null==$a[1]?nil:$a[1],_keys=null==$a[2]?nil:$a[2],_inds=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],_goto_level=0,10,15,20,30,40;$truthy(!0);){if($truthy($rb_le(_goto_level,0))){if($eqeq(p,pe)){_goto_level=30;continue}if($eqeq(self.cs,0)){_goto_level=40;continue}}if($truthy($rb_le(_goto_level,10))&&($eqeqeq(97,$ret_or_1=_lex_from_state_actions["$[]"](self.cs))&&(self.ts=p),_keys=self.cs["$<<"](1),_inds=_lex_index_offsets["$[]"](self.cs),_slen=_lex_key_spans["$[]"](self.cs),_wide=$truthy($ret_or_1=self.source_pts["$[]"](p))?$ret_or_1:0,_trans=$truthy($rb_gt(_slen,0))&&$truthy($rb_le(_lex_trans_keys["$[]"](_keys),_wide))&&$truthy($rb_le(_wide,_lex_trans_keys["$[]"]($rb_plus(_keys,1))))?_lex_indicies["$[]"]($rb_minus($rb_plus(_inds,_wide),_lex_trans_keys["$[]"](_keys))):_lex_indicies["$[]"]($rb_plus(_inds,_slen))),$truthy($rb_le(_goto_level,15))&&(self.cs=_lex_trans_targs["$[]"](_trans),$neqeq(_lex_trans_actions["$[]"](_trans),0)))if($eqeqeq(29,$ret_or_1=_lex_trans_actions["$[]"](_trans)))self.newline_s=p;else if($eqeqeq(117,$ret_or_1))self.escape_s=p,self.escape=nil;else if($eqeqeq(30,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil);else if($eqeqeq(60,$ret_or_1))self.sharp_s=$rb_minus(p,1);else if($eqeqeq(64,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p);else if($eqeqeq(310,$ret_or_1))tm=p;else if($eqeqeq(37,$ret_or_1))tm=p;else if($eqeqeq(39,$ret_or_1))tm=p;else if($eqeqeq(41,$ret_or_1))tm=p;else if($eqeqeq(71,$ret_or_1))heredoc_e=p;else if($eqeqeq(349,$ret_or_1))tm=$rb_minus(p,1),diag_msg="ivar_name";else if($eqeqeq(352,$ret_or_1))tm=$rb_minus(p,2),diag_msg="cvar_name";else if($eqeqeq(360,$ret_or_1))self.escape=nil;else if($eqeqeq(392,$ret_or_1))tm=p;else if($eqeqeq(308,$ret_or_1))ident_tok=self.$tok(),ident_ts=self.ts,ident_te=self.te;else if($eqeqeq(479,$ret_or_1))self.num_base=16,self.num_digits_s=p;else if($eqeqeq(473,$ret_or_1))self.num_base=10,self.num_digits_s=p;else if($eqeqeq(476,$ret_or_1))self.num_base=8,self.num_digits_s=p;else if($eqeqeq(470,$ret_or_1))self.num_base=2,self.num_digits_s=p;else if($eqeqeq(485,$ret_or_1))self.num_base=10,self.num_digits_s=self.ts;else if($eqeqeq(447,$ret_or_1))self.num_base=8,self.num_digits_s=self.ts;else if($eqeqeq(462,$ret_or_1))self.num_suffix_s=p;else if($eqeqeq(455,$ret_or_1))self.num_suffix_s=p;else if($eqeqeq(452,$ret_or_1))self.num_suffix_s=p;else if($eqeqeq(89,$ret_or_1))tm=p;else if($eqeqeq(7,$ret_or_1))self.te=$rb_plus(p,1);else{if($eqeqeq(113,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(5,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(109,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(108,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(115,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(114,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(111,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else if($eqeqeq(112,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(6,$ret_or_1))p=$rb_minus(self.te,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(4,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else{if($eqeqeq(145,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(10,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(142,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(141,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(147,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(146,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(144,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(11,$ret_or_1))p=$rb_minus(self.te,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(9,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(173,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(172,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(175,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else if($eqeqeq(176,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(179,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(178,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(181,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else{if($eqeqeq(188,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(13,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(185,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(184,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(190,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(189,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(187,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(12,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(192,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(191,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else{if($eqeqeq(199,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(15,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(195,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(194,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(201,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(200,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(197,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else if($eqeqeq(198,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(14,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(203,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(202,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(205,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else{if($eqeqeq(206,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tREGEXP_OPT",self.$tok(self.ts,$rb_minus(self.te,1)),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(207,$ret_or_1)){self.te=p,p=$rb_minus(p,1),unknown_options=self.$tok().$scan(/[^imxouesn]/),$truthy(unknown_options["$any?"]())&&self.$diagnostic("error","regexp_options",$hash2(["options"],{options:unknown_options.$join()})),self.$emit("tREGEXP_OPT"),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(16,$ret_or_1)){self.te=$rb_plus(p,1),$truthy(self.$tok()["$=~"](/^\$([1-9][0-9]*)$/))?self.$emit("tNTH_REF",self.$tok($rb_plus(self.ts,1)).$to_i()):$truthy(self.$tok()["$=~"](/^\$([&`'+])$/))?self.$emit("tBACK_REF"):self.$emit("tGVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(208,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy(self.$tok()["$=~"](/^\$([1-9][0-9]*)$/))?self.$emit("tNTH_REF",self.$tok($rb_plus(self.ts,1)).$to_i()):$truthy(self.$tok()["$=~"](/^\$([&`'+])$/))?self.$emit("tBACK_REF"):self.$emit("tGVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(210,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy(self.$tok()["$=~"](/^@@[0-9]/))&&self.$diagnostic("error","cvar_name",$hash2(["name"],{name:self.$tok()})),self.$emit("tCVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(209,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy(self.$tok()["$=~"](/^@[0-9]/))&&self.$diagnostic("error","ivar_name",$hash2(["name"],{name:self.$tok()})),self.$emit("tIVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(231,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(217,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tIDENTIFIER"),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(18,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=811,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(214,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(226,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(20,$ret_or_1)){if(self.te=$rb_plus(p,1),$truthy(self["$version?"](23))){type=($b=[self.$tok()["$[]"]($range(0,-2,!1)),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(213,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(212,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(230,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(227,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT"),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(229,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(224,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=811,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(220,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(225,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(218,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(223,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(19,$ret_or_1)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(17,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(216,$ret_or_1)){if($eqeqeq(43,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(44,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tCONSTANT"),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(45,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(22,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tLABEL",self.$tok(self.ts,$rb_minus(self.te,2)),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),self.cs=796,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(233,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(232,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(235,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(234,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(21,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(241,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=495,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(240,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(239,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(251,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(242,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(247,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=495,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(245,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(250,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(274,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(257,$ret_or_1)){self.te=$rb_plus(p,1),$eqeq(self.$tok(tm,$rb_plus(tm,1)),"/".$freeze())&&($truthy($rb_lt(self.version,30))?self.$diagnostic("warning","ambiguous_literal",nil,self.$range(tm,$rb_plus(tm,1))):self.$diagnostic("warning","ambiguous_regexp",nil,self.$range(tm,$rb_plus(tm,1)))),p=$rb_minus(tm,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(263,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(25,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(265,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(tm,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(40,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(252,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(253,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(264,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(260,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$diagnostic("warning","ambiguous_prefix",$hash2(["prefix"],{prefix:self.$tok(tm,self.te)}),self.$range(tm,self.te)),p=$rb_minus(tm,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(262,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(256,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(255,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(273,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(26,$ret_or_1))p=$rb_minus(self.te,1);else{if($eqeqeq(42,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(24,$ret_or_1)){if($eqeqeq(72,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$eqeq(self.$tok(tm,$rb_plus(tm,1)),"/".$freeze())&&($truthy($rb_lt(self.version,30))?self.$diagnostic("warning","ambiguous_literal",nil,self.$range(tm,$rb_plus(tm,1))):self.$diagnostic("warning","ambiguous_regexp",nil,self.$range(tm,$rb_plus(tm,1)))),p=$rb_minus(tm,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(73,$ret_or_2)){p=$rb_minus(self.te,1),self.$diagnostic("warning","ambiguous_prefix",$hash2(["prefix"],{prefix:self.$tok(tm,self.te)}),self.$range(tm,self.te)),p=$rb_minus(tm,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(78,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}p=$rb_minus(self.te,1)}else{if($eqeqeq(44,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=495,_goto_level=20;continue}if($eqeqeq(278,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(279,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=495,_goto_level=20;continue}if($eqeqeq(45,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=495,_goto_level=20;continue}if($eqeqeq(43,$ret_or_1)){if($eqeqeq(85,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$truthy(self.cond["$active?"]())?self.$emit("kDO_COND","do".$freeze(),$rb_minus(self.te,2),self.te):self.$emit("kDO","do".$freeze(),$rb_minus(self.te,2),self.te),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(86,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=495,_goto_level=20;continue}}else{if($eqeqeq(289,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_do(!0),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(282,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(283,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(284,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(287,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(293,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(292,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(301,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(295,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(299,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(294,$ret_or_1)){if($eqeqeq(93,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(94,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=564,_goto_level=20;continue}}else{if($eqeqeq(57,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(334,$ret_or_1)){self.te=$rb_plus(p,1),type=delimiter=self.$tok()["$[]"](0).$chr(),p=$rb_minus(p,1),self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(326,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.source_buffer.$slice(self.ts).$chr(),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(55,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.$tok()["$[]"]($range(0,-2,!1)),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(347,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_minus(p,1),self.$emit("tSYMBEG",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),self.cs=353,_goto_level=20;continue}if($eqeqeq(335,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.$tok(),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(346,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),$rb_plus(self.ts,2))),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(69,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1)),self.ts),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(357,$ret_or_1)){self.te=$rb_plus(p,1),escape=$hash2([" ","\r","\n","\t","\v","\f"],{" ":"\\s","\r":"\\r","\n":"\\n","\t":"\\t","\v":"\\v","\f":"\\f"})["$[]"](self.source_buffer.$slice($rb_plus(self.ts,1))),self.$diagnostic("warning","invalid_escape_use",$hash2(["escape"],{escape:escape}),self.$range()),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(356,$ret_or_1))self.te=$rb_plus(p,1),self.$diagnostic("fatal","incomplete_escape",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(336,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(52,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),$truthy(self["$version?"](18))?(ident=self.$tok(self.ts,$rb_minus(self.te,2)),self.$emit($truthy(self.source_buffer.$slice(self.ts)["$=~"](/[A-Z]/))?"tCONSTANT":"tIDENTIFIER",ident,self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,1),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](ident))?self.cs=811:self.cs=self.$arg_or_cmdarg(cmd_state)):(self.$emit("tLABEL",self.$tok(self.ts,$rb_minus(self.te,2)),self.ts,$rb_minus(self.te,1)),self.cs=796),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(49,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tIDENTIFIER",ident_tok,ident_ts,ident_te),p=$rb_minus(ident_te,1),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](ident_tok))&&$truthy($rb_lt(self.version,25))?self.cs=466:self.cs=526,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(320,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs_before_block_comment=self.cs,self.cs=187,_goto_level=20;continue}if($eqeqeq(56,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(304,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(330,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(329,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tSTAR","*".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(325,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","string_eof",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else if($eqeqeq(354,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(337,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1)),self.ts),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(350,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te)):(self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=self.ts),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(355,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","incomplete_escape",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(361,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(327,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(331,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$emit("tBDOT2"):self.$emit("tDOT2"),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(332,$ret_or_1)){self.te=p,p=$rb_minus(p,1),followed_by_nl=$rb_minus(self.te,1)["$=="](self.newline_s),nl_emitted=!1,dots_te=$truthy(followed_by_nl)?$rb_minus(self.te,1):self.te,$truthy($rb_ge(self.version,30))?$truthy(self.lambda_stack["$any?"]())&&$eqeq($rb_plus(self.lambda_stack.$last(),1),self.paren_nest)?self.$emit("tDOT3","...".$freeze(),self.ts,dots_te):(self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te),$truthy($rb_ge(self.version,31))&&$truthy(followed_by_nl)&&$truthy(self.context["$in_def_open_args?"]())&&(self.$emit("tNL",$rb_minus(self.te,1),self.te),nl_emitted=!0)):$truthy($rb_ge(self.version,27))?self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te):self.$emit("tDOT3","...".$freeze(),self.ts,dots_te),$truthy(followed_by_nl)&&$not(nl_emitted)&&(p=$rb_minus(p,1)),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(307,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(317,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(319,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs_before_block_comment=self.cs,self.cs=187,_goto_level=20;continue}if($eqeqeq(322,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(54,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("fatal","string_eof",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else if($eqeqeq(73,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(74,$ret_or_1)){p=$rb_minus(self.te,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(48,$ret_or_1)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(53,$ret_or_1))p=$rb_minus(self.te,1);else{if($eqeqeq(68,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(51,$ret_or_1)){if($eqeqeq(99,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(106,$ret_or_2))p=$rb_minus(self.te,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(117,$ret_or_2)){if(p=$rb_minus(self.te,1),$truthy($rb_ge(self.version,27))){self.$emit("tPIPE",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}p=$rb_minus(p,2),self.cs=811,_goto_level=20;continue}if($eqeqeq(121,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(122,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm),p=$rb_minus(tm,1),self.cs=540,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(123,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(127,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(128,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(132,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}}}else{if($eqeqeq(395,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(396,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(397,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(401,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(77,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(405,$ret_or_1)){self.te=$rb_plus(p,1),self.cs=self.$push_literal(self.$tok(),self.$tok(),self.ts),_goto_level=20;continue}if($eqeqeq(404,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(403,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(407,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(406,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(76,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(440,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tLAMBDA","->".$freeze(),self.ts,$rb_plus(self.ts,2)),self.lambda_stack.$push(self.paren_nest),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(86,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(415,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.$tok(),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts,nil,!1,!1,!0),_goto_level=20;continue}if($eqeqeq(79,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(436,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=474,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(489,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(429,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(434,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tOP_ASGN",self.$tok(self.ts,$rb_minus(self.te,1))),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(420,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tEH","?".$freeze()),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(417,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(419,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tSEMI",";".$freeze()),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(494,$ret_or_1))self.te=$rb_plus(p,1),self.$diagnostic("error","bare_backslash",nil,self.$range(self.ts,$rb_plus(self.ts,1))),p=$rb_minus(p,1);else if($eqeqeq(414,$ret_or_1))self.te=$rb_plus(p,1),self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,!1))}));else{if($eqeqeq(413,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(505,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("KEYWORDS")),self.cs=353,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(503,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(502,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("KEYWORDS")),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(444,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("error","no_dot_digit_literal");else{if($eqeqeq(491,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(433,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(441,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=474,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(497,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(439,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(435,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(428,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(442,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(426,$ret_or_1))self.te=p,p=$rb_minus(p,1);else if($eqeqeq(432,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,!1))}));else{if($eqeqeq(84,$ret_or_1)){p=$rb_minus(self.te,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(80,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("error","no_dot_digit_literal");else{if($eqeqeq(83,$ret_or_1)){p=$rb_minus(self.te,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(78,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,!1))}));else if($eqeqeq(81,$ret_or_1)){if($eqeqeq(145,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLAMBEG","{".$freeze()):self.$emit("kDO_LAMBDA","do".$freeze())):$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLCURLY","{".$freeze()):self.$emit_do(),$eqeq(self.$tok(),"{".$freeze())&&(self.paren_nest=$rb_plus(self.paren_nest,1)),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(146,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=353,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(147,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(148,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(149,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(150,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=540,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(151,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),$truthy(self["$version?"](18))&&$eqeq(self.$tok(),"not".$freeze())){self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=495,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(152,$ret_or_2)){p=$rb_minus(self.te,1),$truthy(self["$version?"](18))?(self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))||(self.cs=self.$arg_or_cmdarg(cmd_state))):self.$emit("k__ENCODING__","__ENCODING__".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(153,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(154,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(156,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",self.$tok(self.ts,$rb_minus(self.te,1)).$to_i(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else if($eqeqeq(157,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$tok(self.ts,$rb_minus(self.te,1)).$to_f(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{if($eqeqeq(158,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(160,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(164,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(165,$ret_or_2)){p=$rb_minus(self.te,1),$eqeq(tm,self.te)?self.$emit("tFID"):(self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1)),self.cs=495,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(167,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(168,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}}}else{if($eqeqeq(516,$ret_or_1)){if(self.te=$rb_plus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),$truthy($rb_lt(self.version,27))){p=$rb_minus(p,1),self.cs=187,p=$rb_plus(p,1),_goto_level=40;continue}self.$emit("tBDOT3"),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(95,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(tm,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(510,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=187,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(513,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),$truthy($rb_lt(self.version,27))){self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=187,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(515,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),$truthy($rb_lt(self.version,27))){p=$rb_minus(p,1),self.cs=187,p=$rb_plus(p,1),_goto_level=40;continue}self.$emit("tBDOT2"),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(514,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(tm,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(512,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=187,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(90,$ret_or_1)){if(p=$rb_minus(self.te,1),$truthy($rb_lt(self.version,27))){self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=187,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(87,$ret_or_1)){p=$rb_minus(self.te,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=187,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(91,$ret_or_1)){if($eqeqeq(181,$ret_or_2=self.act)){if(p=$rb_minus(self.te,1),$truthy($rb_lt(self.version,27))){self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=187,p=$rb_plus(p,1),_goto_level=40;continue}}else if($eqeqeq(185,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=187,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(519,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_comment(self.eq_begin_s,self.te),self.cs=self.cs_before_block_comment,_goto_level=20;continue}if($eqeqeq(518,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","embedded_document",nil,self.$range(self.eq_begin_s,$rb_plus(self.eq_begin_s,"=begin".$length())));else{if($eqeqeq(106,$ret_or_1)){self.te=$rb_plus(p,1),self.eq_begin_s=self.ts,self.cs=999,_goto_level=20;continue}if($eqeqeq(2,$ret_or_1))self.te=$rb_plus(p,1),p=$rb_minus(pe,3);else{if($eqeqeq(98,$ret_or_1)){self.te=$rb_plus(p,1),cmd_state=!0,p=$rb_minus(p,1),self.cs=803,_goto_level=20;continue}if($eqeqeq(99,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(100,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(105,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.eq_begin_s=self.ts,self.cs=999,_goto_level=20;continue}if($eqeqeq(104,$ret_or_1)){self.te=p,p=$rb_minus(p,1),cmd_state=!0,p=$rb_minus(p,1),self.cs=803,_goto_level=20;continue}if($eqeqeq(1,$ret_or_1)){p=$rb_minus(self.te,1),cmd_state=!0,p=$rb_minus(p,1),self.cs=803,_goto_level=20;continue}if($eqeqeq(67,$ret_or_1))self.newline_s=p,self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p);else if($eqeqeq(110,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(143,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(174,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(180,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(186,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(193,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(196,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(204,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else{if($eqeqeq(23,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),$truthy($rb_ge(self.version,31))){self.$emit("tBDOT3","...".$freeze(),self.ts,$rb_minus(self.te,1)),self.$emit("tNL","\n".$freeze(),$rb_minus(self.te,1),self.te),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}p=$rb_minus(p,4),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(275,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(266,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(tm,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(258,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(358,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),escape=$hash2([" ","\r","\n","\t","\v","\f"],{" ":"\\s","\r":"\\r","\n":"\\n","\t":"\\t","\v":"\\v","\f":"\\f"})["$[]"](self.source_buffer.$slice($rb_plus(self.ts,1))),self.$diagnostic("warning","invalid_escape_use",$hash2(["escape"],{escape:escape}),self.$range()),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(333,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),followed_by_nl=$rb_minus(self.te,1)["$=="](self.newline_s),nl_emitted=!1,dots_te=$truthy(followed_by_nl)?$rb_minus(self.te,1):self.te,$truthy($rb_ge(self.version,30))?$truthy(self.lambda_stack["$any?"]())&&$eqeq($rb_plus(self.lambda_stack.$last(),1),self.paren_nest)?self.$emit("tDOT3","...".$freeze(),self.ts,dots_te):(self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te),$truthy($rb_ge(self.version,31))&&$truthy(followed_by_nl)&&$truthy(self.context["$in_def_open_args?"]())&&(self.$emit("tNL",$rb_minus(self.te,1),self.te),nl_emitted=!0)):$truthy($rb_ge(self.version,27))?self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te):self.$emit("tDOT3","...".$freeze(),self.ts,dots_te),$truthy(followed_by_nl)&&$not(nl_emitted)&&(p=$rb_minus(p,1)),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(321,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs_before_block_comment=self.cs,self.cs=187,_goto_level=20;continue}if($eqeqeq(443,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),$eqeq(self.paren_nest,0)&&self.$diagnostic("warning","triple_dot_at_eol",nil,self.$range(self.ts,$rb_minus(self.te,1))),self.$emit("tDOT3","...".$freeze(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(520,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),self.$emit_comment(self.eq_begin_s,self.te),self.cs=self.cs_before_block_comment,_goto_level=20;continue}if($eqeqeq(517,$ret_or_1))self.newline_s=p,self.te=$rb_plus(p,1);else{if($eqeqeq(107,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),self.eq_begin_s=self.ts,self.cs=999,_goto_level=20;continue}if($eqeqeq(3,$ret_or_1))self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(pe,3);else{if($eqeqeq(465,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$3(chars){var self=null==$$3.$$s?this:$$3.$$s;return null==chars&&(chars=nil),self.$emit("tRATIONAL",self.$Rational(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(463,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$4(chars){var self=null==$$4.$$s?this:$$4.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(468,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$5(chars){var self=null==$$5.$$s?this:$$5.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,self.$Rational(chars)))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(466,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$6(chars){var self=null==$$6.$$s?this:$$6.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,2)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(464,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$7(chars){var self=null==$$7.$$s?this:$$7.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,2)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(467,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$8(chars){var self=null==$$8.$$s?this:$$8.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,6)),p=$rb_minus(p,6)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(456,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$9(chars){var self=null==$$9.$$s?this:$$9.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,self.$Float(chars)))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(457,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$10(chars){var self=null==$$10.$$s?this:$$10.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars),self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,2)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(458,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$11(chars){var self=null==$$11.$$s?this:$$11.$$s;return null==chars&&(chars=nil),self.$emit("tRATIONAL",self.$Rational(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(460,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$12(chars){var self=null==$$12.$$s?this:$$12.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,self.$Rational(chars)))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(459,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$13(chars){var self=null==$$13.$$s?this:$$13.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars),self.ts,$rb_minus(self.te,6)),p=$rb_minus(p,6)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(137,$ret_or_1))self.escape="",codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1)),codepoint_s=$rb_plus(self.escape_s,2),$truthy($rb_lt(self.version,24))&&(($truthy(codepoints["$start_with?"](" "))||$truthy(codepoints["$start_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3))),$truthy(spaces_p=codepoints.$index(/[ \t]{2}/))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2))),($truthy(codepoints["$end_with?"](" "))||$truthy(codepoints["$end_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))),function(){var $brk=Opal.new_brk();try{$send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],(function $$14($mlhs_tmp1){var $c,self=null==$$14.$$s?this:$$14.$$s,codepoint_str=nil,spaces=nil,codepoint=nil;return null==self.escape&&(self.escape=nil),null==$mlhs_tmp1&&($mlhs_tmp1=nil),codepoint_str=null==($c=$to_ary($mlhs_tmp1))[0]?nil:$c[0],spaces=null==$c[1]?nil:$c[1],$truthy(spaces)?codepoint_s=$rb_plus(codepoint_s,spaces.$length()):(codepoint=codepoint_str.$to_i(16),$truthy($rb_ge(codepoint,1114112))&&(self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length()))),Opal.brk(nil,$brk)),self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$("Encoding"),"UTF_8"))),codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length()))}),{$$arity:1,$$s:self,$$brk:$brk,$$has_top_level_mlhs_arg:!0})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(168,$ret_or_1))self.escape="",codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1)),codepoint_s=$rb_plus(self.escape_s,2),$truthy($rb_lt(self.version,24))&&(($truthy(codepoints["$start_with?"](" "))||$truthy(codepoints["$start_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3))),$truthy(spaces_p=codepoints.$index(/[ \t]{2}/))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2))),($truthy(codepoints["$end_with?"](" "))||$truthy(codepoints["$end_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))),function(){var $brk=Opal.new_brk();try{$send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],(function $$15($mlhs_tmp1){var $c,self=null==$$15.$$s?this:$$15.$$s,codepoint_str=nil,spaces=nil,codepoint=nil;return null==self.escape&&(self.escape=nil),null==$mlhs_tmp1&&($mlhs_tmp1=nil),codepoint_str=null==($c=$to_ary($mlhs_tmp1))[0]?nil:$c[0],spaces=null==$c[1]?nil:$c[1],$truthy(spaces)?codepoint_s=$rb_plus(codepoint_s,spaces.$length()):(codepoint=codepoint_str.$to_i(16),$truthy($rb_ge(codepoint,1114112))&&(self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length()))),Opal.brk(nil,$brk)),self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$("Encoding"),"UTF_8"))),codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length()))}),{$$arity:1,$$s:self,$$brk:$brk,$$has_top_level_mlhs_arg:!0})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(382,$ret_or_1)){self.escape="",codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1)),codepoint_s=$rb_plus(self.escape_s,2),$truthy($rb_lt(self.version,24))&&(($truthy(codepoints["$start_with?"](" "))||$truthy(codepoints["$start_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3))),$truthy(spaces_p=codepoints.$index(/[ \t]{2}/))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2))),($truthy(codepoints["$end_with?"](" "))||$truthy(codepoints["$end_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))),function(){var $brk=Opal.new_brk();try{$send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],(function $$16($mlhs_tmp1){var $c,self=null==$$16.$$s?this:$$16.$$s,codepoint_str=nil,spaces=nil,codepoint=nil;return null==self.escape&&(self.escape=nil),null==$mlhs_tmp1&&($mlhs_tmp1=nil),codepoint_str=null==($c=$to_ary($mlhs_tmp1))[0]?nil:$c[0],spaces=null==$c[1]?nil:$c[1],$truthy(spaces)?codepoint_s=$rb_plus(codepoint_s,spaces.$length()):(codepoint=codepoint_str.$to_i(16),$truthy($rb_ge(codepoint,1114112))&&(self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length()))),Opal.brk(nil,$brk)),self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$("Encoding"),"UTF_8"))),codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length()))}),{$$arity:1,$$s:self,$$brk:$brk,$$has_top_level_mlhs_arg:!0})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(118,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(149,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(363,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(121,$ret_or_1))self.$diagnostic("fatal","invalid_escape"),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(152,$ret_or_1))self.$diagnostic("fatal","invalid_escape"),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(366,$ret_or_1)){self.$diagnostic("fatal","invalid_escape"),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(123,$ret_or_1))self.escape="",self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(154,$ret_or_1))self.escape="",self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(368,$ret_or_1)){self.escape="",self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(120,$ret_or_1))self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(151,$ret_or_1))self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(365,$ret_or_1)){self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(140,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(171,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(385,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(139,$ret_or_1))self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(170,$ret_or_1))self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(384,$ret_or_1)){self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2))),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(134,$ret_or_1))self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$("Encoding"),"UTF_8")),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(165,$ret_or_1))self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$("Encoding"),"UTF_8")),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(379,$ret_or_1)){self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$("Encoding"),"UTF_8")),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(133,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(164,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(378,$ret_or_1)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(138,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(169,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(383,$ret_or_1)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(135,$ret_or_1))self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(166,$ret_or_1))self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(380,$ret_or_1)){self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(119,$ret_or_1))self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(150,$ret_or_1))self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(364,$ret_or_1)){self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(177,$ret_or_1))self.escape_s=p,self.escape=nil,self.te=$rb_plus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(182,$ret_or_1))self.escape_s=p,self.escape=nil,self.te=$rb_plus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(58,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.newline_s=p;else if($eqeqeq(31,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p;else if($eqeqeq(33,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p;else if($eqeqeq(35,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p;else if($eqeqeq(219,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(238,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(246,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(34,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(277,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(269,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(288,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(300,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(296,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(59,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=$rb_plus(p,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(50,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=$rb_plus(p,1),self.$emit("tIDENTIFIER",ident_tok,ident_ts,ident_te),p=$rb_minus(ident_te,1),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](ident_tok))&&$truthy($rb_lt(self.version,25))?self.cs=466:self.cs=526,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(318,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(402,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(398,$ret_or_1)){if($truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),$truthy(self.in_kwarg)){p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}self.cs=187,_goto_level=20;continue}if($eqeqeq(411,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(408,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),self.cs=187,_goto_level=20;continue}if($eqeqeq(495,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(427,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),self.cs=991,_goto_level=20;continue}if($eqeqeq(101,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(268,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),self.$emit("tLAMBEG","{".$freeze(),$rb_minus(self.te,1),self.te)):self.$emit("tLCURLY","{".$freeze(),$rb_minus(self.te,1),self.te),self.command_start=!0,self.paren_nest=$rb_plus(self.paren_nest,1),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(290,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),self.$emit("tLAMBEG","{".$freeze())):self.$emit("tLBRACE_ARG","{".$freeze()),self.paren_nest=$rb_plus(self.paren_nest,1),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(393,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),self.command_start=!0,self.$emit("tLAMBEG","{".$freeze())):self.$emit("tLBRACE","{".$freeze()),self.paren_nest=$rb_plus(self.paren_nest,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(508,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLAMBEG","{".$freeze()):self.$emit("kDO_LAMBDA","do".$freeze())):$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLCURLY","{".$freeze()):self.$emit_do(),$eqeq(self.$tok(),"{".$freeze())&&(self.paren_nest=$rb_plus(self.paren_nest,1)),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(509,$ret_or_1)){if(current_literal=self.$literal(),$truthy(current_literal)&&$truthy(current_literal.$end_interp_brace_and_try_closing())){$truthy(self["$version?"](18,19))?(self.$emit("tRCURLY","}".$freeze(),$rb_minus(p,1),p),self.cond.$lexpop(),self.cmdarg.$lexpop()):self.$emit("tSTRING_DEND","}".$freeze(),$rb_minus(p,1),p),$truthy(current_literal.$saved_herebody_s())&&(self.herebody_s=current_literal.$saved_herebody_s()),p=$rb_minus(p,1),self.cs=self.$next_state_for_literal(current_literal),p=$rb_plus(p,1),_goto_level=40;continue}self.paren_nest=$rb_minus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),$truthy($rb_lt(self.version,24))?(self.cond.$lexpop(),self.cmdarg.$lexpop()):(self.cond.$pop(),self.cmdarg.$pop()),($eqeq(self.$tok(),"}".$freeze())||$eqeq(self.$tok(),"]".$freeze()))&&($truthy($rb_ge(self.version,25))?self.cs=811:self.cs=532),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(61,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p);else if($eqeqeq(65,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.newline_s=p;else if($eqeqeq(222,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(237,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(249,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(271,$ret_or_1)){self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(286,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(298,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(324,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(400,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(410,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(431,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(103,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(243,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("tFID",self.$tok(self.ts,tm),self.ts,tm),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_minus(tm,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(338,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(309,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(424,$ret_or_1)){if(tm=p,$eqeqeq(145,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLAMBEG","{".$freeze()):self.$emit("kDO_LAMBDA","do".$freeze())):$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLCURLY","{".$freeze()):self.$emit_do(),$eqeq(self.$tok(),"{".$freeze())&&(self.paren_nest=$rb_plus(self.paren_nest,1)),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(146,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=353,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(147,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(148,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(149,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(150,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=540,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(151,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),$truthy(self["$version?"](18))&&$eqeq(self.$tok(),"not".$freeze())){self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=495,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(152,$ret_or_2)){p=$rb_minus(self.te,1),$truthy(self["$version?"](18))?(self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))||(self.cs=self.$arg_or_cmdarg(cmd_state))):self.$emit("k__ENCODING__","__ENCODING__".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(153,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(154,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(156,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",self.$tok(self.ts,$rb_minus(self.te,1)).$to_i(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else if($eqeqeq(157,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$tok(self.ts,$rb_minus(self.te,1)).$to_f(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{if($eqeqeq(158,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(160,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(164,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(165,$ret_or_2)){p=$rb_minus(self.te,1),$eqeq(tm,self.te)?self.$emit("tFID"):(self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1)),self.cs=495,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(167,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(168,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}}}else{if($eqeqeq(244,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tFID",self.$tok(self.ts,tm),self.ts,tm),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_minus(tm,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(339,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(311,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(425,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),$eqeq(tm,self.te)?self.$emit("tFID"):(self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1)),self.cs=495,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(340,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(312,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(341,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(313,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(345,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(316,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(344,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(315,$ret_or_1)){if(tm=$rb_minus(p,2),$eqeqeq(99,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(106,$ret_or_2))p=$rb_minus(self.te,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(117,$ret_or_2)){if(p=$rb_minus(self.te,1),$truthy($rb_ge(self.version,27))){self.$emit("tPIPE",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}p=$rb_minus(p,2),self.cs=811,_goto_level=20;continue}if($eqeqeq(121,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(122,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm),p=$rb_minus(tm,1),self.cs=540,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(123,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(127,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(128,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(132,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}}}else{if($eqeqeq(342,$ret_or_1)){tm=$rb_minus(p,3),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(314,$ret_or_1)){tm=$rb_minus(p,3),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(343,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(490,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(267,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit("tLBRACK","[".$freeze(),$rb_minus(self.te,1),self.te),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(386,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit("tLBRACK","[".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(493,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit("tLBRACK2","[".$freeze()),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(496,$ret_or_1)){self.paren_nest=$rb_minus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),$truthy($rb_lt(self.version,24))?(self.cond.$lexpop(),self.cmdarg.$lexpop()):(self.cond.$pop(),self.cmdarg.$pop()),($eqeq(self.$tok(),"}".$freeze())||$eqeq(self.$tok(),"]".$freeze()))&&($truthy($rb_ge(self.version,25))?self.cs=811:self.cs=532),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(259,$ret_or_1)){if(self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),$truthy(self["$version?"](18))){self.$emit("tLPAREN2","(".$freeze(),$rb_minus(self.te,1),self.te),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}self.$emit("tLPAREN_ARG","(".$freeze(),$rb_minus(self.te,1),self.te),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(272,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit("tLPAREN2","(".$freeze()),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(280,$ret_or_1)){if(self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit("tLPAREN_ARG","(".$freeze(),$rb_minus(self.te,1),self.te),$truthy(self["$version?"](18))){self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(328,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit("tLPAREN","(".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(437,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(438,$ret_or_1)){self.paren_nest=$rb_minus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),$truthy($rb_lt(self.version,24))?(self.cond.$lexpop(),self.cmdarg.$lexpop()):(self.cond.$pop(),self.cmdarg.$pop()),($eqeq(self.$tok(),"}".$freeze())||$eqeq(self.$tok(),"]".$freeze()))&&($truthy($rb_ge(self.version,25))?self.cs=811:self.cs=532),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(72,$ret_or_1))heredoc_e=p,self.newline_s=p;else if($eqeqeq(353,$ret_or_1)){if(new_herebody_s=p,self.te=p,p=$rb_minus(p,1),self.$tok(self.ts,heredoc_e)["$=~"](/^<<(-?)(~?)(["'`]?)(.*)\3$/m),indent=$truthy($ret_or_2=(($b=$gvars["~"])===nil?nil:$b["$[]"](1))["$empty?"]()["$!"]())?$ret_or_2:(($b=$gvars["~"])===nil?nil:$b["$[]"](2))["$empty?"]()["$!"](),dedent_body=(($b=$gvars["~"])===nil?nil:$b["$[]"](2))["$empty?"]()["$!"](),type=$truthy((($b=$gvars["~"])===nil?nil:$b["$[]"](3))["$empty?"]())?'<<"'.$freeze():$rb_plus("<<".$freeze(),($b=$gvars["~"])===nil?nil:$b["$[]"](3)),delimiter=($b=$gvars["~"])===nil?nil:$b["$[]"](4),$truthy($rb_ge(self.version,27))?($truthy($rb_gt(delimiter.$count("\n"),0))||$truthy($rb_gt(delimiter.$count("\r"),0)))&&self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1))):$truthy($rb_ge(self.version,24))&&$truthy($rb_gt(delimiter.$count("\n"),0))&&($truthy(delimiter["$end_with?"]("\n"))?(self.$diagnostic("warning","heredoc_id_ends_with_nl",nil,self.$range(self.ts,$rb_plus(self.ts,1))),delimiter=delimiter.$rstrip()):self.$diagnostic("fatal","heredoc_id_has_newline",nil,self.$range(self.ts,$rb_plus(self.ts,1)))),$truthy(dedent_body)&&$truthy(self["$version?"](18,19,20,21,22))){self.$emit("tLSHFT","<<".$freeze(),self.ts,$rb_plus(self.ts,2)),p=$rb_plus(self.ts,1),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$push_literal(type,delimiter,self.ts,heredoc_e,indent,dedent_body),self.herebody_s=$truthy($ret_or_2=self.herebody_s)?$ret_or_2:new_herebody_s,p=$rb_minus(self.herebody_s,1)}else{if($eqeqeq(348,$ret_or_1)){tm=$rb_minus(p,1),diag_msg="ivar_name",self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te)):(self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=self.ts),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(351,$ret_or_1)){tm=$rb_minus(p,2),diag_msg="cvar_name",self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te)):(self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=self.ts),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(359,$ret_or_1)){self.escape=nil,self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(389,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm),p=$rb_minus(tm,1),self.cs=540,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(480,$ret_or_1))self.num_base=16,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(474,$ret_or_1))self.num_base=10,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(477,$ret_or_1))self.num_base=8,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(471,$ret_or_1))self.num_base=2,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(486,$ret_or_1))self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p;else if($eqeqeq(449,$ret_or_1))self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p;else if($eqeqeq(487,$ret_or_1))self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$17(chars){return null==chars&&(chars=nil),(null==$$17.$$s?this:$$17.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self});else if($eqeqeq(8,$ret_or_1))self.te=$rb_plus(p,1),self.newline_s=p;else if($eqeqeq(453,$ret_or_1))self.te=$rb_plus(p,1),self.num_suffix_s=p;else if($eqeqeq(228,$ret_or_1))self.te=$rb_plus(p,1),self.act=43;else if($eqeqeq(215,$ret_or_1))self.te=$rb_plus(p,1),self.act=44;else if($eqeqeq(211,$ret_or_1))self.te=$rb_plus(p,1),self.act=45;else if($eqeqeq(27,$ret_or_1))self.te=$rb_plus(p,1),self.act=72;else if($eqeqeq(261,$ret_or_1))self.te=$rb_plus(p,1),self.act=73;else if($eqeqeq(28,$ret_or_1))self.te=$rb_plus(p,1),self.act=78;else if($eqeqeq(254,$ret_or_1))self.te=$rb_plus(p,1),self.act=79;else if($eqeqeq(281,$ret_or_1))self.te=$rb_plus(p,1),self.act=85;else if($eqeqeq(46,$ret_or_1))self.te=$rb_plus(p,1),self.act=86;else if($eqeqeq(302,$ret_or_1))self.te=$rb_plus(p,1),self.act=93;else if($eqeqeq(291,$ret_or_1))self.te=$rb_plus(p,1),self.act=94;else if($eqeqeq(70,$ret_or_1))self.te=$rb_plus(p,1),self.act=106;else if($eqeqeq(394,$ret_or_1))self.te=$rb_plus(p,1),self.act=117;else if($eqeqeq(305,$ret_or_1))self.te=$rb_plus(p,1),self.act=121;else if($eqeqeq(388,$ret_or_1))self.te=$rb_plus(p,1),self.act=122;else if($eqeqeq(387,$ret_or_1))self.te=$rb_plus(p,1),self.act=123;else if($eqeqeq(75,$ret_or_1))self.te=$rb_plus(p,1),self.act=127;else if($eqeqeq(303,$ret_or_1))self.te=$rb_plus(p,1),self.act=128;else if($eqeqeq(306,$ret_or_1))self.te=$rb_plus(p,1),self.act=132;else if($eqeqeq(504,$ret_or_1))self.te=$rb_plus(p,1),self.act=145;else if($eqeqeq(499,$ret_or_1))self.te=$rb_plus(p,1),self.act=146;else if($eqeqeq(507,$ret_or_1))self.te=$rb_plus(p,1),self.act=148;else if($eqeqeq(500,$ret_or_1))self.te=$rb_plus(p,1),self.act=149;else if($eqeqeq(501,$ret_or_1))self.te=$rb_plus(p,1),self.act=150;else if($eqeqeq(506,$ret_or_1))self.te=$rb_plus(p,1),self.act=151;else if($eqeqeq(498,$ret_or_1))self.te=$rb_plus(p,1),self.act=152;else if($eqeqeq(492,$ret_or_1))self.te=$rb_plus(p,1),self.act=153;else if($eqeqeq(418,$ret_or_1))self.te=$rb_plus(p,1),self.act=154;else if($eqeqeq(451,$ret_or_1))self.te=$rb_plus(p,1),self.act=157;else if($eqeqeq(82,$ret_or_1))self.te=$rb_plus(p,1),self.act=158;else if($eqeqeq(421,$ret_or_1))self.te=$rb_plus(p,1),self.act=160;else if($eqeqeq(412,$ret_or_1))self.te=$rb_plus(p,1),self.act=164;else if($eqeqeq(423,$ret_or_1))self.te=$rb_plus(p,1),self.act=165;else if($eqeqeq(416,$ret_or_1))self.te=$rb_plus(p,1),self.act=167;else if($eqeqeq(422,$ret_or_1))self.te=$rb_plus(p,1),self.act=168;else if($eqeqeq(88,$ret_or_1))self.te=$rb_plus(p,1),self.act=181;else if($eqeqeq(511,$ret_or_1))self.te=$rb_plus(p,1),self.act=185;else if($eqeqeq(183,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string()),self.escape_s=p,self.escape=nil}else if($eqeqeq(124,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(155,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(369,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(131,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(162,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(376,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(122,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(153,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(367,$ret_or_1)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(130,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(161,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(375,$ret_or_1)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(126,$ret_or_1))self.escape="",self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(157,$ret_or_1))self.escape="",self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(371,$ret_or_1)){self.escape="",self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(129,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(160,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(374,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(136,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(167,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(381,$ret_or_1)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(116,$ret_or_1))self.escape_s=p,self.escape=nil,self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(148,$ret_or_1))self.escape_s=p,self.escape=nil,self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(362,$ret_or_1)){self.escape_s=p,self.escape=nil,self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(62,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.newline_s=p;else if($eqeqeq(221,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(236,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(248,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(270,$ret_or_1)){self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(285,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(297,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(323,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(399,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(409,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(430,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(102,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(482,$ret_or_1))self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$18(chars){return null==chars&&(chars=nil),(null==$$18.$$s?this:$$18.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self});else if($eqeqeq(446,$ret_or_1))self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$19(chars){return null==chars&&(chars=nil),(null==$$19.$$s?this:$$19.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self});else{if($eqeqeq(461,$ret_or_1)){self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$20(chars){return null==chars&&(chars=nil),(null==$$20.$$s?this:$$20.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(454,$ret_or_1)){self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$21(chars){var self=null==$$21.$$s?this:$$21.$$s;return null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(450,$ret_or_1)){self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$22(chars){var self=null==$$22.$$s?this:$$22.$$s;return null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(276,$ret_or_1))self.te=$rb_plus(p,1),self.newline_s=p,self.act=79;else if($eqeqeq(36,$ret_or_1))self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.act=78;else if($eqeqeq(47,$ret_or_1))self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.act=86;else if($eqeqeq(94,$ret_or_1))self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.act=181;else if($eqeqeq(66,$ret_or_1))self.te=$rb_plus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=99;else if($eqeqeq(85,$ret_or_1))self.te=$rb_plus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=147;else if($eqeqeq(93,$ret_or_1))self.te=$rb_plus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=181;else if($eqeqeq(38,$ret_or_1))self.te=$rb_plus(p,1),tm=p,self.act=73;else if($eqeqeq(391,$ret_or_1))self.te=$rb_plus(p,1),tm=p,self.act=127;else if($eqeqeq(390,$ret_or_1))self.te=$rb_plus(p,1),tm=p,self.act=128;else if($eqeqeq(483,$ret_or_1))self.te=$rb_plus(p,1),self.num_base=10,self.num_digits_s=self.ts,self.act=154;else if($eqeqeq(127,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(158,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(372,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(125,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(156,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(370,$ret_or_1)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(132,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(163,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(377,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(128,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(159,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(373,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(478,$ret_or_1)){self.num_base=16,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$23(chars){return null==chars&&(chars=nil),(null==$$23.$$s?this:$$23.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(472,$ret_or_1)){self.num_base=10,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$24(chars){return null==chars&&(chars=nil),(null==$$24.$$s?this:$$24.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(475,$ret_or_1)){self.num_base=8,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$25(chars){return null==chars&&(chars=nil),(null==$$25.$$s?this:$$25.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(469,$ret_or_1)){self.num_base=2,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$26(chars){return null==chars&&(chars=nil),(null==$$26.$$s?this:$$26.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(481,$ret_or_1)){self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$27(chars){return null==chars&&(chars=nil),(null==$$27.$$s?this:$$27.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(445,$ret_or_1)){self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$28(chars){return null==chars&&(chars=nil),(null==$$28.$$s?this:$$28.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}$eqeqeq(32,$ret_or_1)?(self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p,self.act=73):$eqeqeq(63,$ret_or_1)?(self.te=$rb_plus(p,1),self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=99):$eqeqeq(92,$ret_or_1)?(self.te=$rb_plus(p,1),self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=181):$eqeqeq(488,$ret_or_1)?(self.te=$rb_plus(p,1),self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$29(chars){return null==chars&&(chars=nil),(null==$$29.$$s?this:$$29.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.act=156):$eqeqeq(484,$ret_or_1)?(self.te=$rb_plus(p,1),self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$30(chars){return null==chars&&(chars=nil),(null==$$30.$$s?this:$$30.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.act=156):$eqeqeq(448,$ret_or_1)&&(self.te=$rb_plus(p,1),self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$31(chars){return null==chars&&(chars=nil),(null==$$31.$$s?this:$$31.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.act=156)}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}if($truthy($rb_le(_goto_level,20))){if($eqeqeq(96,$ret_or_1=_lex_to_state_actions["$[]"](self.cs))&&(self.ts=nil),$eqeq(self.cs,0)){_goto_level=40;continue}if(p=$rb_plus(p,1),$neqeq(p,pe)){_goto_level=10;continue}}if($truthy($rb_le(_goto_level,30))&&$eqeq(p,eof)&&$truthy($rb_gt(_lex_eof_trans["$[]"](self.cs),0)))_trans=$rb_minus(_lex_eof_trans["$[]"](self.cs),1),_goto_level=15;else if($truthy($rb_le(_goto_level,40)))break}return $truthy(!1),self.p=p,$truthy(self.token_queue["$any?"]())?self.token_queue.$shift():$eqeq(self.cs,klass.$lex_error())?[!1,["$error".$freeze(),self.$range($rb_minus(p,1),p)]]:(eof=self.source_pts.$size(),[!1,["$eof".$freeze(),self.$range(eof,eof)]])}),0),self.$protected(),$def(self,"$eof_codepoint?",(function(point){return[4,26,0]["$include?"](point)}),1),$def(self,"$version?",(function($a){var self=this;return Opal.slice.call(arguments)["$include?"](self.version)}),-1),$def(self,"$stack_pop",(function(){return this.top=$rb_minus(this.top,1),this.stack["$[]"](this.top)}),0),$def(self,"$encode_escape",(function(ord){return ord.$chr().$force_encoding(this.source_buffer.$source().$encoding())}),1),$def(self,"$tok",(function(s,e){return null==s&&(s=this.ts),null==e&&(e=this.te),this.source_buffer.$slice(Opal.Range.$new(s,e,!0))}),-1),$def(self,"$range",(function(s,e){return null==s&&(s=this.ts),null==e&&(e=this.te),$$$($$$($$("Parser"),"Source"),"Range").$new(this.source_buffer,s,e)}),-1),$def(self,"$emit",(function(type,value,s,e){var token;return null==value&&(value=this.$tok()),null==s&&(s=this.ts),null==e&&(e=this.te),token=[type,[value,this.$range(s,e)]],this.token_queue.$push(token),$truthy(this.tokens)&&this.tokens.$push(token),token}),-2),$def(self,"$emit_table",(function(table,s,e){var value;return null==s&&(s=this.ts),null==e&&(e=this.te),value=this.$tok(s,e),this.$emit(table["$[]"](value),value,s,e)}),-2),$def(self,"$emit_do",(function(do_block){return null==do_block&&(do_block=!1),$truthy(this.cond["$active?"]())?this.$emit("kDO_COND","do".$freeze()):$truthy(this.cmdarg["$active?"]())||$truthy(do_block)?this.$emit("kDO_BLOCK","do".$freeze()):this.$emit("kDO","do".$freeze())}),-1),$def(self,"$arg_or_cmdarg",(function(cmd_state){return $truthy(cmd_state)?this.$class().$lex_en_expr_cmdarg():this.$class().$lex_en_expr_arg()}),1),$def(self,"$emit_comment",(function(s,e){return null==s&&(s=this.ts),null==e&&(e=this.te),$truthy(this.comments)&&this.comments.$push($$$($$$($$("Parser"),"Source"),"Comment").$new(this.$range(s,e))),$truthy(this.tokens)&&this.tokens.$push(["tCOMMENT",[this.$tok(s,e),this.$range(s,e)]]),nil}),-1),$def(self,"$diagnostic",(function(type,reason,arguments$,location,highlights){return null==arguments$&&(arguments$=nil),null==location&&(location=this.$range()),null==highlights&&(highlights=[]),this.diagnostics.$process($$$($$("Parser"),"Diagnostic").$new(type,reason,arguments$,location,highlights))}),-3),$def(self,"$push_literal",(function($a){var args,self=this,new_literal=nil;return args=Opal.slice.call(arguments),new_literal=$send($$("Literal"),"new",[self].concat($to_a(args))),self.literal_stack.$push(new_literal),self.$next_state_for_literal(new_literal)}),-1),$def(self,"$next_state_for_literal",(function(literal){return $truthy(literal["$words?"]())&&$truthy(literal["$backslash_delimited?"]())?$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_backslash_delimited_words():this.$class().$lex_en_plain_backslash_delimited_words():$truthy(literal["$words?"]())&&$not(literal["$backslash_delimited?"]())?$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_words():this.$class().$lex_en_plain_words():$not(literal["$words?"]())&&$truthy(literal["$backslash_delimited?"]())?$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_backslash_delimited():this.$class().$lex_en_plain_backslash_delimited():$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_string():this.$class().$lex_en_plain_string()}),1),$def(self,"$literal",(function(){return this.literal_stack.$last()}),0),$def(self,"$pop_literal",(function(){var old_literal=nil;return old_literal=this.literal_stack.$pop(),this.dedent_level=old_literal.$dedent_level(),$eqeq(old_literal.$type(),"tREGEXP_BEG")?this.$class().$lex_en_regexp_modifiers():this.$class().$lex_en_expr_end()}),0),$const_set($nesting[0],"PUNCTUATION",$hash2(["=","&","|","!","^","+","-","*","/","%","~",",",";",".","..","...","[","]","(",")","?",":","&&","||","-@","+@","~@","**","->","=~","!~","==","!=",">",">>",">=","<","<<","<=","=>","::","===","<=>","[]","[]=","{","}","`","!@","&."],{"=":"tEQL","&":"tAMPER2","|":"tPIPE","!":"tBANG","^":"tCARET","+":"tPLUS","-":"tMINUS","*":"tSTAR2","/":"tDIVIDE","%":"tPERCENT","~":"tTILDE",",":"tCOMMA",";":"tSEMI",".":"tDOT","..":"tDOT2","...":"tDOT3","[":"tLBRACK2","]":"tRBRACK","(":"tLPAREN2",")":"tRPAREN","?":"tEH",":":"tCOLON","&&":"tANDOP","||":"tOROP","-@":"tUMINUS","+@":"tUPLUS","~@":"tTILDE","**":"tPOW","->":"tLAMBDA","=~":"tMATCH","!~":"tNMATCH","==":"tEQ","!=":"tNEQ",">":"tGT",">>":"tRSHFT",">=":"tGEQ","<":"tLT","<<":"tLSHFT","<=":"tLEQ","=>":"tASSOC","::":"tCOLON2","===":"tEQQ","<=>":"tCMP","[]":"tAREF","[]=":"tASET","{":"tLCURLY","}":"tRCURLY","`":"tBACK_REF2","!@":"tBANG","&.":"tANDDOT"})),$const_set($nesting[0],"PUNCTUATION_BEGIN",$hash2(["&","*","**","+","-","::","(","{","["],{"&":"tAMPER","*":"tSTAR","**":"tDSTAR","+":"tUPLUS","-":"tUMINUS","::":"tCOLON3","(":"tLPAREN","{":"tLBRACE","[":"tLBRACK"})),$const_set($nesting[0],"KEYWORDS",$hash2(["if","unless","while","until","rescue","defined?","BEGIN","END"],{if:"kIF_MOD",unless:"kUNLESS_MOD",while:"kWHILE_MOD",until:"kUNTIL_MOD",rescue:"kRESCUE_MOD","defined?":"kDEFINED",BEGIN:"klBEGIN",END:"klEND"})),$const_set($nesting[0],"KEYWORDS_BEGIN",$hash2(["if","unless","while","until","rescue","defined?","BEGIN","END"],{if:"kIF",unless:"kUNLESS",while:"kWHILE",until:"kUNTIL",rescue:"kRESCUE","defined?":"kDEFINED",BEGIN:"klBEGIN",END:"klEND"})),$send(["class","module","def","undef","begin","end","then","elsif","else","ensure","case","when","for","break","next","redo","retry","in","do","return","yield","super","self","nil","true","false","and","or","not","alias","__FILE__","__LINE__","__ENCODING__"],"each",[],(function(keyword){return null==keyword&&(keyword=nil),$writer=[keyword,($writer=[keyword,"k"+keyword.$upcase()],$send($$("KEYWORDS"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])],$send($$("KEYWORDS_BEGIN"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1)}($$("Parser"),0,$nesting)},Opal.modules["parser/lexer/literal"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$hash2=Opal.hash2,$enc=Opal.enc,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$to_ary=Opal.to_ary,$def=Opal.def,$eqeq=Opal.eqeq,$rb_minus=Opal.rb_minus,$neqeq=Opal.neqeq,$not=Opal.not,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$rb_gt=Opal.rb_gt;return Opal.add_stubs("attr_reader,attr_accessor,coerce_encoding,include?,send,+,[],fetch,==,!,heredoc?,start_with?,freeze,clear_buffer,emit_start_tok,type,=~,words?,delimiter?,-,extend_space,!=,flush_string,emit,each_char,===,%,>,nil?,<<,empty?,extend_content,protected,lstrip,b,dup,force_encoding,encoding,source,source_buffer,length"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Literal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.lexer=$proto.start_tok=$proto.str_type=$proto.monolithic=$proto.interpolate=$proto.heredoc_e=$proto.dedent_body=$proto.end_delim=$proto.start_delim=$proto.nesting=$proto.label_allowed=$proto.buffer=$proto.str_s=$proto.interp_braces=$proto.buffer_s=$proto.buffer_e=$proto.space_emitted=$proto.indent=nil,$const_set($nesting[0],"DELIMITERS",$hash2(["(","[","{","<"],{"(":$enc(")","ASCII-8BIT"),"[":$enc("]","ASCII-8BIT"),"{":$enc("}","ASCII-8BIT"),"<":$enc(">","ASCII-8BIT")})),$const_set($nesting[0],"TYPES",$hash2(["'","<<'","%q",'"','<<"',"%","%Q","%w","%W","%i","%I",":'","%s",':"',"/","%r","%x","`","<<`"],{"'":["tSTRING_BEG",!1],"<<'":["tSTRING_BEG",!1],"%q":["tSTRING_BEG",!1],'"':["tSTRING_BEG",!0],'<<"':["tSTRING_BEG",!0],"%":["tSTRING_BEG",!0],"%Q":["tSTRING_BEG",!0],"%w":["tQWORDS_BEG",!1],"%W":["tWORDS_BEG",!0],"%i":["tQSYMBOLS_BEG",!1],"%I":["tSYMBOLS_BEG",!0],":'":["tSYMBEG",!1],"%s":["tSYMBEG",!1],':"':["tSYMBEG",!0],"/":["tREGEXP_BEG",!0],"%r":["tREGEXP_BEG",!0],"%x":["tXSTRING_BEG",!0],"`":["tXSTRING_BEG",!0],"<<`":["tXSTRING_BEG",!0]})),self.$attr_reader("heredoc_e","str_s","dedent_level"),self.$attr_accessor("saved_herebody_s"),$def(self,"$initialize",(function(lexer,str_type,delimiter,str_s,heredoc_e,indent,dedent_body,label_allowed){var $a,$b,$ret_or_1,$ret_or_2;return null==heredoc_e&&(heredoc_e=nil),null==indent&&(indent=!1),null==dedent_body&&(dedent_body=!1),null==label_allowed&&(label_allowed=!1),this.lexer=lexer,this.nesting=1,str_type=this.$coerce_encoding(str_type),delimiter=this.$coerce_encoding(delimiter),$truthy($$("TYPES")["$include?"](str_type))||lexer.$send("diagnostic","error","unexpected_percent_str",$hash2(["type"],{type:str_type}),this.lexer.$send("range",str_s,$rb_plus(str_s,2))),this.str_type=str_type,this.str_s=str_s,$b=$$("TYPES")["$[]"](str_type),$a=$to_ary($b),this.start_tok=null==$a[0]?nil:$a[0],this.interpolate=null==$a[1]?nil:$a[1],this.start_delim=$truthy($$("DELIMITERS")["$include?"](delimiter))?delimiter:nil,this.end_delim=$$("DELIMITERS").$fetch(delimiter,delimiter),this.heredoc_e=heredoc_e,this.indent=indent,this.label_allowed=label_allowed,this.dedent_body=dedent_body,this.dedent_level=nil,this.interp_braces=0,this.space_emitted=!0,this.monolithic=$truthy($ret_or_1=$truthy($ret_or_2=this.start_tok["$=="]("tSTRING_BEG"))?[$enc("'","ASCII-8BIT"),$enc('"',"ASCII-8BIT")]["$include?"](str_type):$ret_or_2)?this["$heredoc?"]()["$!"]():$ret_or_1,$truthy(this.str_type["$start_with?"]($enc("%","ASCII-8BIT").$freeze()))&&(this.str_type=$rb_plus(this.str_type,delimiter)),this.$clear_buffer(),$truthy(this.monolithic)?nil:this.$emit_start_tok()}),-5),$def(self,"$interpolate?",(function(){return this.interpolate}),0),$def(self,"$words?",(function(){var $ret_or_1,$ret_or_2,$ret_or_3;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.$type()["$=="]("tWORDS_BEG"))?$ret_or_3:this.$type()["$=="]("tQWORDS_BEG"))?$ret_or_2:this.$type()["$=="]("tSYMBOLS_BEG"))?$ret_or_1:this.$type()["$=="]("tQSYMBOLS_BEG")}),0),$def(self,"$regexp?",(function(){return this.$type()["$=="]("tREGEXP_BEG")}),0),$def(self,"$heredoc?",(function(){return this.heredoc_e["$!"]()["$!"]()}),0),$def(self,"$plain_heredoc?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$heredoc?"]())?this.dedent_body["$!"]():$ret_or_1}),0),$def(self,"$squiggly_heredoc?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$heredoc?"]())?this.dedent_body:$ret_or_1}),0),$def(self,"$backslash_delimited?",(function(){return this.end_delim["$=="]($enc("\\","ASCII-8BIT").$freeze())}),0),$def(self,"$type",(function(){return this.start_tok}),0),$def(self,"$munge_escape?",(function(character){return character=this.$coerce_encoding(character),!(!$truthy(this["$words?"]())||!$truthy(character["$=~"](/[ \t\v\r\f\n]/)))||[$enc("\\","ASCII-8BIT").$freeze(),this.start_delim,this.end_delim]["$include?"](character)}),1),$def(self,"$nest_and_try_closing",(function(delimiter,ts,te,lookahead){return null==lookahead&&(lookahead=nil),delimiter=this.$coerce_encoding(delimiter),$truthy(this.start_delim)&&$eqeq(this.start_delim,delimiter)?this.nesting=$rb_plus(this.nesting,1):$truthy(this["$delimiter?"](delimiter))&&(this.nesting=$rb_minus(this.nesting,1)),$eqeq(this.nesting,0)?($truthy(this["$words?"]())&&this.$extend_space(ts,ts),$truthy(lookahead)&&$truthy(this.label_allowed)&&$eqeq(lookahead["$[]"](0),$enc(":","ASCII-8BIT"))&&$neqeq(lookahead["$[]"](1),$enc(":","ASCII-8BIT"))&&$eqeq(this.start_tok,"tSTRING_BEG")?(this.$flush_string(),this.$emit("tLABEL_END",this.end_delim,ts,$rb_plus(te,1))):$truthy(this.monolithic)?this.$emit("tSTRING",this.buffer,this.str_s,te):($truthy(this["$heredoc?"]())||this.$flush_string(),this.$emit("tSTRING_END",this.end_delim,ts,te))):nil}),-4),$def(self,"$infer_indent_level",(function(line){var self=this,indent_level=nil;return $not(self.dedent_body)?nil:(indent_level=0,function(){var $brk=Opal.new_brk();try{return $send(line,"each_char",[],(function $$9(char$){var $ret_or_1,self=null==$$9.$$s?this:$$9.$$s;return null==self.dedent_level&&(self.dedent_level=nil),null==char$&&(char$=nil),$eqeqeq(" ",$ret_or_1=char$)?indent_level=$rb_plus(indent_level,1):$eqeqeq("\t",$ret_or_1)?indent_level=$rb_plus(indent_level,$rb_minus(8,indent_level["$%"](8))):(($truthy(self.dedent_level["$nil?"]())||$truthy($rb_gt(self.dedent_level,indent_level)))&&(self.dedent_level=indent_level),void Opal.brk(nil,$brk))}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}())}),1),$def(self,"$start_interp_brace",(function(){return this.interp_braces=$rb_plus(this.interp_braces,1)}),0),$def(self,"$end_interp_brace_and_try_closing",(function(){return this.interp_braces=$rb_minus(this.interp_braces,1),this.interp_braces["$=="](0)}),0),$def(self,"$extend_string",(function(string,ts,te){var $ret_or_1;return this.buffer_s=$truthy($ret_or_1=this.buffer_s)?$ret_or_1:ts,this.buffer_e=te,this.buffer["$<<"](string)}),3),$def(self,"$flush_string",(function(){return $truthy(this.monolithic)&&(this.$emit_start_tok(),this.monolithic=!1),$truthy(this.buffer["$empty?"]())?nil:(this.$emit("tSTRING_CONTENT",this.buffer,this.buffer_s,this.buffer_e),this.$clear_buffer(),this.$extend_content())}),0),$def(self,"$extend_content",(function(){return this.space_emitted=!1}),0),$def(self,"$extend_space",(function(ts,te){return this.$flush_string(),$truthy(this.space_emitted)?nil:(this.$emit("tSPACE",nil,ts,te),this.space_emitted=!0)}),2),$def(self,"$supports_line_continuation_via_slash?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$words?"]()["$!"]())?this.interpolate:$ret_or_1}),0),self.$protected(),$def(self,"$delimiter?",(function(delimiter){return $truthy(this.indent)?this.end_delim["$=="](delimiter.$lstrip()):this.end_delim["$=="](delimiter)}),1),$def(self,"$coerce_encoding",(function(string){return string.$b()}),1),$def(self,"$clear_buffer",(function(){return this.buffer=$enc("","ASCII-8BIT").$dup(),this.buffer.$force_encoding(this.lexer.$source_buffer().$source().$encoding()),this.buffer_s=nil,this.buffer_e=nil}),0),$def(self,"$emit_start_tok",(function(){var str_e,$ret_or_1;return str_e=$truthy($ret_or_1=this.heredoc_e)?$ret_or_1:$rb_plus(this.str_s,this.str_type.$length()),this.$emit(this.start_tok,this.str_type,this.str_s,str_e)}),0),$def(self,"$emit",(function(token,type,s,e){return this.lexer.$send("emit",token,type,s,e)}),4)}(Opal.$r($nesting)("Lexer"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/lexer/stack_state"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$alias=Opal.alias;return Opal.add_stubs("freeze,clear,|,<<,&,>>,==,[],to_s"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super){var self=$klass($base,null,"StackState"),$proto=self.$$prototype;return $proto.stack=$proto.name=nil,$def(self,"$initialize",(function(name){return this.name=name.$freeze(),this.$clear()}),1),$def(self,"$clear",(function(){return this.stack=0}),0),$def(self,"$push",(function(bit){var bit_value;return bit_value=$truthy(bit)?1:0,this.stack=this.stack["$<<"](1)["$|"](bit_value),bit}),1),$def(self,"$pop",(function(){var bit_value=nil;return bit_value=this.stack["$&"](1),this.stack=this.stack["$>>"](1),bit_value["$=="](1)}),0),$def(self,"$lexpop",(function(){return this.stack=this.stack["$>>"](1)["$|"](this.stack["$&"](1)),this.stack["$[]"](0)["$=="](1)}),0),$def(self,"$active?",(function(){return this.stack["$[]"](0)["$=="](1)}),0),$def(self,"$empty?",(function(){return this.stack["$=="](0)}),0),$def(self,"$to_s",(function(){return"["+this.stack.$to_s(2)+" <= "+this.name+"]"}),0),$alias(self,"inspect","to_s")}(Opal.$r($nesting)("Lexer"))}($nesting[0],$nesting)},Opal.modules["parser/lexer/dedenter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$eqeq=Opal.eqeq,$send=Opal.send,$truthy=Opal.truthy,$to_ary=Opal.to_ary,$slice=Opal.slice,$rb_le=Opal.rb_le,$eqeqeq=Opal.eqeqeq,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$rb_divide=Opal.rb_divide;return Opal.add_stubs("encoding,split,force_encoding,==,length,map!,each,each_char,<=,===,+,-,>,*,/,slice!,replace,join,end_with?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Dedenter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.at_line_begin=nil,$const_set($nesting[0],"TAB_WIDTH",8),$def(self,"$initialize",(function(dedent_level){return this.dedent_level=dedent_level,this.at_line_begin=!0,this.indent_level=0}),1),$def(self,"$dedent",(function(string){var $a,original_encoding,self=this,lines=nil,lines_to_dedent=nil;return original_encoding=string.$encoding(),lines=string.$force_encoding($$$($$("Encoding"),"BINARY")).$split("\\\n"),$eqeq(lines.$length(),1)?lines=[string.$force_encoding(original_encoding)]:$send(lines,"map!",[],(function(s){return null==s&&(s=nil),s.$force_encoding(original_encoding)}),1),$truthy(self.at_line_begin)?lines_to_dedent=lines:(null==($a=$to_ary(lines))[0]?nil:$a[0],lines_to_dedent=$slice.call($a,1)),function(){var $brk=Opal.new_brk();try{$send(lines_to_dedent,"each",[],(function $$2(line){var self=null==$$2.$$s?this:$$2.$$s,left_to_remove=nil,remove=nil;return null==self.dedent_level&&(self.dedent_level=nil),null==line&&(line=nil),left_to_remove=self.dedent_level,remove=0,function(){var $brk=Opal.new_brk();try{$send(line,"each_char",[],(function $$3(char$){var $ret_or_1,self=null==$$3.$$s?this:$$3.$$s;return null==self.dedent_level&&(self.dedent_level=nil),null==char$&&(char$=nil),$truthy($rb_le(left_to_remove,0))&&Opal.brk(nil,$brk),$eqeqeq(" ",$ret_or_1=char$)?(remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,1)):$eqeqeq("\t",$ret_or_1)?($truthy($rb_gt($rb_times($$("TAB_WIDTH"),$rb_plus($rb_divide(remove,$$("TAB_WIDTH")),1)),self.dedent_level))&&Opal.brk(nil,$brk),remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,$$("TAB_WIDTH"))):void Opal.brk(nil,$brk)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),line["$slice!"](0,remove)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),string.$replace(lines.$join()),self.at_line_begin=string["$end_with?"]("\n")}),1),$def(self,"$interrupt",(function(){return this.at_line_begin=!1}),0)}(Opal.$r($nesting)("Lexer"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/builders/default"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$hash2=Opal.hash2,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$not=Opal.not,$send=Opal.send,$neqeq=Opal.neqeq,$to_ary=Opal.to_ary,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$range=Opal.range,$slice=Opal.slice,$rb_gt=Opal.rb_gt,$rb_le=Opal.rb_le,$rb_lt=Opal.rb_lt;return Opal.add_stubs("attr_accessor,n0,token_map,numeric,n,value,new,loc,private,===,+@,-@,updated,join,expression,string_value,delimited_string_map,unquoted_map,collapse_string_parts?,nil?,first,children,string_map,prefix_string_map,to_sym,collection_map,empty?,==,version,diagnostic,!,type,dedent,map,interrupt,compact,uniq,sort,each_char,to_proc,static_regexp,message,<<,regexp_map,unary_op_map,binary_op_map,!=,%,size,last,each_slice,pair_keyword_map,pair_quoted_map,symbol_compose,adjust,=~,pair_keyword,accessible,upto,-,length,+,[],>=,range_map,variable_map,name,source_buffer,dup,line,emit_encoding,class,any?,end_with?,to_s,try_declare_numparam,declared?,static_env,var_send_map,top,current_arg_stack,parser,constant_map,dynamic_const_definition_allowed?,context,check_assignment_to_numparam,check_reserved_for_numparam,declare,with_expression,with_operator,join_exprs,module_definition_map,definition_map,endless_definition_map,validate_definee,keyword_map,check_duplicate_args,validate_no_forward_arg_after_restarg,emit_forward_arg,forward_arg,arg_prefix_map,kwarg_map,emit_procarg0,emit_arg_inside_procarg0,location,resize,end,call_type_for_dot,emit_kwargs,rewrite_hash_args_to_kwargs,send_map,emit_lambda,expr_map,keyword,include?,block_map,array,emit_index,index_map,send_index_map,send_binary_op_map,static_regexp_node,each,names,send_unary_op_map,check_condition,condition_map,keyword_mod_map,ternary_map,for_map,>,count,rescue_body_map,eh_keyword_map,push,none?,one?,begin,guard_map,check_lvar_name,check_duplicate_pattern_variable,match_hash_var_from_str,match_var,check_duplicate_pattern_key,static_string,pair_quoted,match_hash_var,<=,check_duplicate_arg,is_a?,[]=,arg_name_collides?,<,in_dynamic_block?,has_numparams?,max_numparam_stack,start_with?,pattern_variables,pattern_hash_keys,with,begin_pos,end_pos,encode,valid_encoding?,process,diagnostics,send,kwargs?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Default"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.parser=$proto.emit_file_line_as_literals=nil,function(self,$parent_nesting){self.$attr_accessor("emit_lambda")}(Opal.get_singleton_class(self)),self.emit_lambda=!1,function(self,$parent_nesting){self.$attr_accessor("emit_procarg0")}(Opal.get_singleton_class(self)),self.emit_procarg0=!1,function(self,$parent_nesting){self.$attr_accessor("emit_encoding")}(Opal.get_singleton_class(self)),self.emit_encoding=!1,function(self,$parent_nesting){self.$attr_accessor("emit_index")}(Opal.get_singleton_class(self)),self.emit_index=!1,function(self,$parent_nesting){self.$attr_accessor("emit_arg_inside_procarg0")}(Opal.get_singleton_class(self)),self.emit_arg_inside_procarg0=!1,function(self,$parent_nesting){self.$attr_accessor("emit_forward_arg")}(Opal.get_singleton_class(self)),self.emit_forward_arg=!1,function(self,$parent_nesting){self.$attr_accessor("emit_kwargs")}(Opal.get_singleton_class(self)),self.emit_kwargs=!1,function(self,$parent_nesting){self.$attr_accessor("emit_match_pattern")}(Opal.get_singleton_class(self)),self.emit_match_pattern=!1,function(self,$parent_nesting){$def(self,"$modernize",(function(){return this.emit_lambda=!0,this.emit_procarg0=!0,this.emit_encoding=!0,this.emit_index=!0,this.emit_arg_inside_procarg0=!0,this.emit_forward_arg=!0,this.emit_kwargs=!0,this.emit_match_pattern=!0}),0)}(Opal.get_singleton_class(self)),self.$attr_accessor("parser"),self.$attr_accessor("emit_file_line_as_literals"),$def(self,"$initialize",(function(){return this.emit_file_line_as_literals=!0}),0),$def(self,"$nil",(function(nil_t){return this.$n0("nil",this.$token_map(nil_t))}),1),$def(self,"$true",(function(true_t){return this.$n0("true",this.$token_map(true_t))}),1),$def(self,"$false",(function(false_t){return this.$n0("false",this.$token_map(false_t))}),1),$def(self,"$integer",(function(integer_t){return this.$numeric("int",integer_t)}),1),$def(self,"$float",(function(float_t){return this.$numeric("float",float_t)}),1),$def(self,"$rational",(function(rational_t){return this.$numeric("rational",rational_t)}),1),$def(self,"$complex",(function(complex_t){return this.$numeric("complex",complex_t)}),1),$def(self,"$numeric",(function(kind,token){return this.$n(kind,[this.$value(token)],$$$($$$($$("Source"),"Map"),"Operator").$new(nil,this.$loc(token)))}),2),self.$private("numeric"),$def(self,"$unary_num",(function(unary_t,numeric){var $a,$ret_or_1,value=nil,operator_loc=nil;return value=null==($a=[].concat($to_a(numeric)))[0]?nil:$a[0],operator_loc=this.$loc(unary_t),$eqeqeq("+",$ret_or_1=this.$value(unary_t))?value=value["$+@"]():$eqeqeq("-",$ret_or_1)&&(value=value["$-@"]()),numeric.$updated(nil,[value],$hash2(["location"],{location:$$$($$$($$("Source"),"Map"),"Operator").$new(operator_loc,operator_loc.$join(numeric.$loc().$expression()))}))}),2),$def(self,"$__LINE__",(function(__LINE__t){return this.$n0("__LINE__",this.$token_map(__LINE__t))}),1),$def(self,"$string",(function(string_t){return this.$n("str",[this.$string_value(string_t)],this.$delimited_string_map(string_t))}),1),$def(self,"$string_internal",(function(string_t){return this.$n("str",[this.$string_value(string_t)],this.$unquoted_map(string_t))}),1),$def(self,"$string_compose",(function(begin_t,parts,end_t){return $truthy(this["$collapse_string_parts?"](parts))?$truthy(begin_t["$nil?"]())&&$truthy(end_t["$nil?"]())?parts.$first():this.$n("str",parts.$first().$children(),this.$string_map(begin_t,parts,end_t)):this.$n("dstr",[].concat($to_a(parts)),this.$string_map(begin_t,parts,end_t))}),3),$def(self,"$character",(function(char_t){return this.$n("str",[this.$string_value(char_t)],this.$prefix_string_map(char_t))}),1),$def(self,"$__FILE__",(function(__FILE__t){return this.$n0("__FILE__",this.$token_map(__FILE__t))}),1),$def(self,"$symbol",(function(symbol_t){return this.$n("sym",[this.$string_value(symbol_t).$to_sym()],this.$prefix_string_map(symbol_t))}),1),$def(self,"$symbol_internal",(function(symbol_t){return this.$n("sym",[this.$string_value(symbol_t).$to_sym()],this.$unquoted_map(symbol_t))}),1),$def(self,"$symbol_compose",(function(begin_t,parts,end_t){var str=nil;return $truthy(this["$collapse_string_parts?"](parts))?(str=parts.$first(),this.$n("sym",[str.$children().$first().$to_sym()],this.$collection_map(begin_t,str.$loc().$expression(),end_t))):$eqeq(this.parser.$version(),18)&&$truthy(parts["$empty?"]())?this.$diagnostic("error","empty_symbol",nil,this.$loc(begin_t).$join(this.$loc(end_t))):this.$n("dsym",[].concat($to_a(parts)),this.$collection_map(begin_t,parts,end_t))}),3),$def(self,"$xstring_compose",(function(begin_t,parts,end_t){return this.$n("xstr",[].concat($to_a(parts)),this.$string_map(begin_t,parts,end_t))}),3),$def(self,"$dedent_string",(function(node,dedent_level){var dedenter=nil,$ret_or_1=nil,str=nil,children=nil;return $not(dedent_level["$nil?"]())&&(dedenter=$$$($$("Lexer"),"Dedenter").$new(dedent_level),$eqeqeq("str",$ret_or_1=node.$type())?(str=node.$children().$first(),dedenter.$dedent(str)):($eqeqeq("dstr",$ret_or_1)||$eqeqeq("xstr",$ret_or_1))&&(children=$send(node.$children(),"map",[],(function(str_node){if(null==str_node&&(str_node=nil),$eqeq(str_node.$type(),"str")){if(str=str_node.$children().$first(),dedenter.$dedent(str),$truthy(str["$empty?"]()))return nil}else dedenter.$interrupt();return str_node}),1),node=node.$updated(nil,children.$compact()))),node}),2),$def(self,"$regexp_options",(function(regopt_t){var options;return options=$send(this.$value(regopt_t).$each_char().$sort().$uniq(),"map",[],"to_sym".$to_proc()),this.$n("regopt",options,this.$token_map(regopt_t))}),1),$def(self,"$regexp_compose",(function(begin_t,parts,end_t,options){var e=nil;try{this.$static_regexp(parts,options)}catch($err){if(!Opal.rescue($err,[$$("RegexpError")]))throw $err;e=$err;try{this.$diagnostic("error","invalid_regexp",$hash2(["message"],{message:e.$message()}),this.$loc(begin_t).$join(this.$loc(end_t)))}finally{Opal.pop_exception()}}return this.$n("regexp",parts["$<<"](options),this.$regexp_map(begin_t,end_t,options))}),4),$def(self,"$array",(function(begin_t,elements,end_t){return this.$n("array",elements,this.$collection_map(begin_t,elements,end_t))}),3),$def(self,"$splat",(function(star_t,arg){return null==arg&&(arg=nil),$truthy(arg["$nil?"]())?this.$n0("splat",this.$unary_op_map(star_t)):this.$n("splat",[arg],this.$unary_op_map(star_t,arg))}),-2),$def(self,"$word",(function(parts){return $truthy(this["$collapse_string_parts?"](parts))?parts.$first():this.$n("dstr",[].concat($to_a(parts)),this.$collection_map(nil,parts,nil))}),1),$def(self,"$words_compose",(function(begin_t,parts,end_t){return this.$n("array",[].concat($to_a(parts)),this.$collection_map(begin_t,parts,end_t))}),3),$def(self,"$symbols_compose",(function(begin_t,parts,end_t){return parts=$send(parts,"map",[],(function(part){var $a,$ret_or_1,value=nil;return null==part&&(part=nil),$eqeqeq("str",$ret_or_1=part.$type())?(value=null==($a=[].concat($to_a(part)))[0]?nil:$a[0],part.$updated("sym",[value.$to_sym()])):$eqeqeq("dstr",$ret_or_1)?part.$updated("dsym"):part}),1),this.$n("array",[].concat($to_a(parts)),this.$collection_map(begin_t,parts,end_t))}),3),$def(self,"$pair",(function(key,assoc_t,value){return this.$n("pair",[key,value],this.$binary_op_map(key,assoc_t,value))}),3),$def(self,"$pair_list_18",(function(list){return $neqeq(list.$size()["$%"](2),0)?this.$diagnostic("error","odd_hash",nil,list.$last().$loc().$expression()):$send(list.$each_slice(2),"map",[],(function $$6(key,value){var self=null==$$6.$$s?this:$$6.$$s;return null==key&&(key=nil),null==value&&(value=nil),self.$n("pair",[key,value],self.$binary_op_map(key,nil,value))}),{$$arity:2,$$s:this})}),1),$def(self,"$pair_keyword",(function(key_t,value){var $a,$b,key_map,pair_map,key;return $b=this.$pair_keyword_map(key_t,value),key_map=null==($a=$to_ary($b))[0]?nil:$a[0],pair_map=null==$a[1]?nil:$a[1],key=this.$n("sym",[this.$value(key_t).$to_sym()],key_map),this.$n("pair",[key,value],pair_map)}),2),$def(self,"$pair_quoted",(function(begin_t,parts,end_t,value){var $a,$b,pair_map,key;return $b=this.$pair_quoted_map(begin_t,end_t,value),end_t=null==($a=$to_ary($b))[0]?nil:$a[0],pair_map=null==$a[1]?nil:$a[1],key=this.$symbol_compose(begin_t,parts,end_t),this.$n("pair",[key,value],pair_map)}),4),$def(self,"$pair_label",(function(key_t){var value_l,value,label=nil;return value_l=this.$loc(key_t).$adjust($hash2(["end_pos"],{end_pos:-1})),label=this.$value(key_t),value=$truthy(label["$=~"](/^[[:lower:]]/))?this.$n("ident",[label.$to_sym()],$$$($$$($$("Source"),"Map"),"Variable").$new(value_l)):this.$n("const",[nil,label.$to_sym()],$$$($$$($$("Source"),"Map"),"Constant").$new(nil,value_l,value_l)),this.$pair_keyword(key_t,this.$accessible(value))}),1),$def(self,"$kwsplat",(function(dstar_t,arg){return this.$n("kwsplat",[arg],this.$unary_op_map(dstar_t,arg))}),2),$def(self,"$associate",(function(begin_t,pairs,end_t){return $send(0,"upto",[$rb_minus(pairs.$length(),1)],(function $$7(i){var self=null==$$7.$$s?this:$$7.$$s;return null==i&&(i=nil),$send($rb_plus(i,1),"upto",[$rb_minus(pairs.$length(),1)],(function $$8(j){var $a,$ret_or_1,self=null==$$8.$$s?this:$$8.$$s,key1=nil,key2=nil,do_warn=nil;return null==self.parser&&(self.parser=nil),null==j&&(j=nil),key1=null==($a=[].concat($to_a(pairs["$[]"](i))))[0]?nil:$a[0],key2=null==($a=[].concat($to_a(pairs["$[]"](j))))[0]?nil:$a[0],do_warn=!1,$eqeqeq("sym",$ret_or_1=key1.$type())||$eqeqeq("str",$ret_or_1)||$eqeqeq("int",$ret_or_1)||$eqeqeq("float",$ret_or_1)?$eqeq(key1,key2)&&(do_warn=!0):($eqeqeq("rational",$ret_or_1)||$eqeqeq("complex",$ret_or_1)||$eqeqeq("regexp",$ret_or_1))&&$truthy($rb_ge(self.parser.$version(),31))&&$eqeq(key1,key2)&&(do_warn=!0),$truthy(do_warn)?self.$diagnostic("warning","duplicate_hash_key",nil,key2.$loc().$expression()):nil}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:this}),this.$n("hash",[].concat($to_a(pairs)),this.$collection_map(begin_t,pairs,end_t))}),3),$def(self,"$range_inclusive",(function(lhs,dot2_t,rhs){return this.$n("irange",[lhs,rhs],this.$range_map(lhs,dot2_t,rhs))}),3),$def(self,"$range_exclusive",(function(lhs,dot3_t,rhs){return this.$n("erange",[lhs,rhs],this.$range_map(lhs,dot3_t,rhs))}),3),$def(self,"$self",(function(token){return this.$n0("self",this.$token_map(token))}),1),$def(self,"$ident",(function(token){return this.$n("ident",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$ivar",(function(token){return this.$n("ivar",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$gvar",(function(token){return this.$n("gvar",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$cvar",(function(token){return this.$n("cvar",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$back_ref",(function(token){return this.$n("back_ref",[this.$value(token).$to_sym()],this.$token_map(token))}),1),$def(self,"$nth_ref",(function(token){return this.$n("nth_ref",[this.$value(token)],this.$token_map(token))}),1),$def(self,"$accessible",(function(node){var $a,$ret_or_1,name=nil;return $eqeqeq("__FILE__",$ret_or_1=node.$type())?$truthy(this.emit_file_line_as_literals)?this.$n("str",[node.$loc().$expression().$source_buffer().$name()],node.$loc().$dup()):node:$eqeqeq("__LINE__",$ret_or_1)?$truthy(this.emit_file_line_as_literals)?this.$n("int",[node.$loc().$expression().$line()],node.$loc().$dup()):node:$eqeqeq("__ENCODING__",$ret_or_1)?$not(this.$class().$emit_encoding())?this.$n("const",[this.$n("const",[nil,"Encoding"],nil),"UTF_8"],node.$loc().$dup()):node:$eqeqeq("ident",$ret_or_1)?($a=[].concat($to_a(node)),name=null==$a[0]?nil:$a[0],$truthy($send(["?","!"],"any?",[],(function(c){return null==c&&(c=nil),name.$to_s()["$end_with?"](c)}),1))&&this.$diagnostic("error","invalid_id_to_get",$hash2(["identifier"],{identifier:name.$to_s()}),node.$loc().$expression()),$truthy($rb_ge(this.parser.$version(),27))&&$truthy(this.parser.$try_declare_numparam(node))?node.$updated("lvar"):$truthy(this.parser.$static_env()["$declared?"](name))?($eqeq(name.$to_s(),this.$parser().$current_arg_stack().$top())&&this.$diagnostic("error","circular_argument_reference",$hash2(["var_name"],{var_name:name.$to_s()}),node.$loc().$expression()),node.$updated("lvar")):this.$n("send",[nil,name],this.$var_send_map(node))):node}),1),$def(self,"$const",(function(name_t){return this.$n("const",[nil,this.$value(name_t).$to_sym()],this.$constant_map(nil,nil,name_t))}),1),$def(self,"$const_global",(function(t_colon3,name_t){var cbase;return cbase=this.$n0("cbase",this.$token_map(t_colon3)),this.$n("const",[cbase,this.$value(name_t).$to_sym()],this.$constant_map(cbase,t_colon3,name_t))}),2),$def(self,"$const_fetch",(function(scope,t_colon2,name_t){return this.$n("const",[scope,this.$value(name_t).$to_sym()],this.$constant_map(scope,t_colon2,name_t))}),3),$def(self,"$__ENCODING__",(function(__ENCODING__t){return this.$n0("__ENCODING__",this.$token_map(__ENCODING__t))}),1),$def(self,"$assignable",(function(node){var $a,$ret_or_1,name=nil,var_name=nil,name_loc=nil;return $eqeqeq("cvar",$ret_or_1=node.$type())?node.$updated("cvasgn"):$eqeqeq("ivar",$ret_or_1)?node.$updated("ivasgn"):$eqeqeq("gvar",$ret_or_1)?node.$updated("gvasgn"):$eqeqeq("const",$ret_or_1)?($truthy(this.parser.$context()["$dynamic_const_definition_allowed?"]())||this.$diagnostic("error","dynamic_const",nil,node.$loc().$expression()),node.$updated("casgn")):$eqeqeq("ident",$ret_or_1)?(name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],var_name=node.$children()["$[]"](0).$to_s(),name_loc=node.$loc().$expression(),this.$check_assignment_to_numparam(var_name,name_loc),this.$check_reserved_for_numparam(var_name,name_loc),this.parser.$static_env().$declare(name),node.$updated("lvasgn")):$eqeqeq("match_var",$ret_or_1)?(name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],var_name=node.$children()["$[]"](0).$to_s(),name_loc=node.$loc().$expression(),this.$check_assignment_to_numparam(var_name,name_loc),this.$check_reserved_for_numparam(var_name,name_loc),node):$eqeqeq("nil",$ret_or_1)||$eqeqeq("self",$ret_or_1)||$eqeqeq("true",$ret_or_1)||$eqeqeq("false",$ret_or_1)||$eqeqeq("__FILE__",$ret_or_1)||$eqeqeq("__LINE__",$ret_or_1)||$eqeqeq("__ENCODING__",$ret_or_1)?this.$diagnostic("error","invalid_assignment",nil,node.$loc().$expression()):$eqeqeq("back_ref",$ret_or_1)||$eqeqeq("nth_ref",$ret_or_1)?this.$diagnostic("error","backref_assignment",nil,node.$loc().$expression()):nil}),1),$def(self,"$const_op_assignable",(function(node){return node.$updated("casgn")}),1),$def(self,"$assign",(function(lhs,eql_t,rhs){return lhs["$<<"](rhs).$updated(nil,nil,$hash2(["location"],{location:lhs.$loc().$with_operator(this.$loc(eql_t)).$with_expression(this.$join_exprs(lhs,rhs))}))}),3),$def(self,"$op_assign",(function(lhs,op_t,rhs){var $ret_or_1,operator=nil,source_map=nil,$ret_or_2=nil;return $eqeqeq("gvasgn",$ret_or_1=lhs.$type())||$eqeqeq("ivasgn",$ret_or_1)||$eqeqeq("lvasgn",$ret_or_1)||$eqeqeq("cvasgn",$ret_or_1)||$eqeqeq("casgn",$ret_or_1)||$eqeqeq("send",$ret_or_1)||$eqeqeq("csend",$ret_or_1)||$eqeqeq("index",$ret_or_1)?(operator=this.$value(op_t)["$[]"]($range(0,-1,!1)).$to_sym(),source_map=lhs.$loc().$with_operator(this.$loc(op_t)).$with_expression(this.$join_exprs(lhs,rhs)),$eqeq(lhs.$type(),"index")&&(lhs=lhs.$updated("indexasgn")),$eqeqeq("&&",$ret_or_2=operator)?this.$n("and_asgn",[lhs,rhs],source_map):$eqeqeq("||",$ret_or_2)?this.$n("or_asgn",[lhs,rhs],source_map):this.$n("op_asgn",[lhs,operator,rhs],source_map)):$eqeqeq("back_ref",$ret_or_1)||$eqeqeq("nth_ref",$ret_or_1)?this.$diagnostic("error","backref_assignment",nil,lhs.$loc().$expression()):nil}),3),$def(self,"$multi_lhs",(function(begin_t,items,end_t){return this.$n("mlhs",[].concat($to_a(items)),this.$collection_map(begin_t,items,end_t))}),3),$def(self,"$multi_assign",(function(lhs,eql_t,rhs){return this.$n("masgn",[lhs,rhs],this.$binary_op_map(lhs,eql_t,rhs))}),3),$def(self,"$def_class",(function(class_t,name,lt_t,superclass,body,end_t){return this.$n("class",[name,superclass,body],this.$module_definition_map(class_t,name,lt_t,end_t))}),6),$def(self,"$def_sclass",(function(class_t,lshft_t,expr,body,end_t){return this.$n("sclass",[expr,body],this.$module_definition_map(class_t,nil,lshft_t,end_t))}),5),$def(self,"$def_module",(function(module_t,name,body,end_t){return this.$n("module",[name,body],this.$module_definition_map(module_t,name,nil,end_t))}),4),$def(self,"$def_method",(function(def_t,name_t,args,body,end_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("def",[this.$value(name_t).$to_sym(),args,body],this.$definition_map(def_t,nil,name_t,end_t))}),5),$def(self,"$def_endless_method",(function(def_t,name_t,args,assignment_t,body){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("def",[this.$value(name_t).$to_sym(),args,body],this.$endless_definition_map(def_t,nil,name_t,assignment_t,body))}),5),$def(self,"$def_singleton",(function(def_t,definee,dot_t,name_t,args,body,end_t){return this.$validate_definee(definee),this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("defs",[definee,this.$value(name_t).$to_sym(),args,body],this.$definition_map(def_t,dot_t,name_t,end_t))}),7),$def(self,"$def_endless_singleton",(function(def_t,definee,dot_t,name_t,args,assignment_t,body){return this.$validate_definee(definee),this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("defs",[definee,this.$value(name_t).$to_sym(),args,body],this.$endless_definition_map(def_t,dot_t,name_t,assignment_t,body))}),7),$def(self,"$undef_method",(function(undef_t,names){return this.$n("undef",[].concat($to_a(names)),this.$keyword_map(undef_t,nil,names,nil))}),2),$def(self,"$alias",(function(alias_t,to,from){return this.$n("alias",[to,from],this.$keyword_map(alias_t,nil,[to,from],nil))}),3),$def(self,"$args",(function(begin_t,args,end_t,check_args){var map;return null==check_args&&(check_args=!0),$truthy(check_args)&&(args=this.$check_duplicate_args(args)),this.$validate_no_forward_arg_after_restarg(args),map=this.$collection_map(begin_t,args,end_t),$not(this.$class().$emit_forward_arg())&&$eqeq(args.$length(),1)&&$eqeq(args["$[]"](0).$type(),"forward_arg")?this.$n("forward_args",[],map):this.$n("args",args,map)}),-4),$def(self,"$numargs",(function(max_numparam){return this.$n("numargs",[max_numparam],nil)}),1),$def(self,"$forward_only_args",(function(begin_t,dots_t,end_t){var arg=nil;return $truthy(this.$class().$emit_forward_arg())?(arg=this.$forward_arg(dots_t),this.$n("args",[arg],this.$collection_map(begin_t,[arg],end_t))):this.$n("forward_args",[],this.$collection_map(begin_t,this.$token_map(dots_t),end_t))}),3),$def(self,"$forward_arg",(function(dots_t){return this.$n("forward_arg",[],this.$token_map(dots_t))}),1),$def(self,"$arg",(function(name_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("arg",[this.$value(name_t).$to_sym()],this.$variable_map(name_t))}),1),$def(self,"$optarg",(function(name_t,eql_t,value){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("optarg",[this.$value(name_t).$to_sym(),value],this.$variable_map(name_t).$with_operator(this.$loc(eql_t)).$with_expression(this.$loc(name_t).$join(value.$loc().$expression())))}),3),$def(self,"$restarg",(function(star_t,name_t){return null==name_t&&(name_t=nil),$truthy(name_t)?(this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("restarg",[this.$value(name_t).$to_sym()],this.$arg_prefix_map(star_t,name_t))):this.$n0("restarg",this.$arg_prefix_map(star_t))}),-2),$def(self,"$kwarg",(function(name_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("kwarg",[this.$value(name_t).$to_sym()],this.$kwarg_map(name_t))}),1),$def(self,"$kwoptarg",(function(name_t,value){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("kwoptarg",[this.$value(name_t).$to_sym(),value],this.$kwarg_map(name_t,value))}),2),$def(self,"$kwrestarg",(function(dstar_t,name_t){return null==name_t&&(name_t=nil),$truthy(name_t)?(this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("kwrestarg",[this.$value(name_t).$to_sym()],this.$arg_prefix_map(dstar_t,name_t))):this.$n0("kwrestarg",this.$arg_prefix_map(dstar_t))}),-2),$def(self,"$kwnilarg",(function(dstar_t,nil_t){return this.$n0("kwnilarg",this.$arg_prefix_map(dstar_t,nil_t))}),2),$def(self,"$shadowarg",(function(name_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("shadowarg",[this.$value(name_t).$to_sym()],this.$variable_map(name_t))}),1),$def(self,"$blockarg",(function(amper_t,name_t){var arg_name;return $not(name_t["$nil?"]())&&this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),arg_name=$truthy(name_t)?this.$value(name_t).$to_sym():nil,this.$n("blockarg",[arg_name],this.$arg_prefix_map(amper_t,name_t))}),2),$def(self,"$procarg0",(function(arg){return $truthy(this.$class().$emit_procarg0())?$eqeq(arg.$type(),"arg")&&$truthy(this.$class().$emit_arg_inside_procarg0())?this.$n("procarg0",[arg],$$$($$$($$("Source"),"Map"),"Collection").$new(nil,nil,arg.$location().$expression())):arg.$updated("procarg0"):arg}),1),$def(self,"$arg_expr",(function(expr){return $eqeq(expr.$type(),"lvasgn")?expr.$updated("arg"):this.$n("arg_expr",[expr],expr.$loc().$dup())}),1),$def(self,"$restarg_expr",(function(star_t,expr){return null==expr&&(expr=nil),$truthy(expr["$nil?"]())?this.$n0("restarg",this.$token_map(star_t)):$eqeq(expr.$type(),"lvasgn")?expr.$updated("restarg"):this.$n("restarg_expr",[expr],expr.$loc().$dup())}),-2),$def(self,"$blockarg_expr",(function(amper_t,expr){return $eqeq(expr.$type(),"lvasgn")?expr.$updated("blockarg"):this.$n("blockarg_expr",[expr],expr.$loc().$dup())}),2),$def(self,"$objc_kwarg",(function(kwname_t,assoc_t,name_t){var kwname_l=nil,operator_l=nil;return kwname_l=this.$loc(kwname_t),operator_l=$truthy(assoc_t["$nil?"]())?(kwname_l=kwname_l.$resize($rb_minus(kwname_l.$size(),1))).$end().$resize(1):this.$loc(assoc_t),this.$n("objc_kwarg",[this.$value(kwname_t).$to_sym(),this.$value(name_t).$to_sym()],$$$($$$($$("Source"),"Map"),"ObjcKwarg").$new(kwname_l,operator_l,this.$loc(name_t),kwname_l.$join(this.$loc(name_t))))}),3),$def(self,"$objc_restarg",(function(star_t,name){return null==name&&(name=nil),$truthy(name["$nil?"]())?this.$n0("restarg",this.$arg_prefix_map(star_t)):$eqeq(name.$type(),"arg")?name.$updated("restarg",nil,$hash2(["location"],{location:name.$loc().$with_operator(this.$loc(star_t))})):this.$n("objc_restarg",[name],this.$unary_op_map(star_t,name))}),-2),$def(self,"$call_type_for_dot",(function(dot_t){return $not(dot_t["$nil?"]())&&$eqeq(this.$value(dot_t),"anddot")?"csend":"send"}),1),$def(self,"$forwarded_args",(function(dots_t){return this.$n("forwarded_args",[],this.$token_map(dots_t))}),1),$def(self,"$call_method",(function(receiver,dot_t,selector_t,lparen_t,args,rparen_t){var type;return null==lparen_t&&(lparen_t=nil),null==args&&(args=[]),null==rparen_t&&(rparen_t=nil),type=this.$call_type_for_dot(dot_t),$truthy(this.$class().$emit_kwargs())&&this.$rewrite_hash_args_to_kwargs(args),$truthy(selector_t["$nil?"]())?this.$n(type,[receiver,"call"].concat($to_a(args)),this.$send_map(receiver,dot_t,nil,lparen_t,args,rparen_t)):this.$n(type,[receiver,this.$value(selector_t).$to_sym()].concat($to_a(args)),this.$send_map(receiver,dot_t,selector_t,lparen_t,args,rparen_t))}),-4),$def(self,"$call_lambda",(function(lambda_t){return $truthy(this.$class().$emit_lambda())?this.$n0("lambda",this.$expr_map(this.$loc(lambda_t))):this.$n("send",[nil,"lambda"],this.$send_map(nil,nil,lambda_t))}),1),$def(self,"$block",(function(method_call,begin_t,args,body,end_t){var $a,call_args=nil,last_arg=nil,block_type=nil,actual_send=nil,block=nil;return null==($a=[].concat($to_a(method_call)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],call_args=$slice.call($a,2),$eqeq(method_call.$type(),"yield")&&this.$diagnostic("error","block_given_to_yield",nil,method_call.$loc().$keyword(),[this.$loc(begin_t)]),last_arg=call_args.$last(),$truthy(last_arg)&&($eqeq(last_arg.$type(),"block_pass")||$eqeq(last_arg.$type(),"forwarded_args"))&&this.$diagnostic("error","block_and_blockarg",nil,last_arg.$loc().$expression(),[this.$loc(begin_t)]),$eqeq(args.$type(),"numargs")?(block_type="numblock",args=args.$children()["$[]"](0)):block_type="block",$truthy(["send","csend","index","super","zsuper","lambda"]["$include?"](method_call.$type()))?this.$n(block_type,[method_call,args,body],this.$block_map(method_call.$loc().$expression(),begin_t,end_t)):(actual_send=null==($a=[].concat($to_a(method_call)))[0]?nil:$a[0],block=this.$n(block_type,[actual_send,args,body],this.$block_map(actual_send.$loc().$expression(),begin_t,end_t)),this.$n(method_call.$type(),[block],method_call.$loc().$with_expression(this.$join_exprs(method_call,block))))}),5),$def(self,"$block_pass",(function(amper_t,arg){return this.$n("block_pass",[arg],this.$unary_op_map(amper_t,arg))}),2),$def(self,"$objc_varargs",(function(pair,rest_of_varargs){var $a,value,first_vararg=nil,vararg_array=nil;return value=null==($a=[].concat($to_a(pair)))[0]?nil:$a[0],first_vararg=null==$a[1]?nil:$a[1],vararg_array=this.$array(nil,[first_vararg].concat($to_a(rest_of_varargs)),nil).$updated("objc_varargs"),pair.$updated(nil,[value,vararg_array],$hash2(["location"],{location:pair.$loc().$with_expression(pair.$loc().$expression().$join(vararg_array.$loc().$expression()))}))}),2),$def(self,"$attr_asgn",(function(receiver,dot_t,selector_t){var method_name,type;return method_name=$rb_plus(this.$value(selector_t),"=").$to_sym(),type=this.$call_type_for_dot(dot_t),this.$n(type,[receiver,method_name],this.$send_map(receiver,dot_t,selector_t))}),3),$def(self,"$index",(function(receiver,lbrack_t,indexes,rbrack_t){return $truthy(this.$class().$emit_kwargs())&&this.$rewrite_hash_args_to_kwargs(indexes),$truthy(this.$class().$emit_index())?this.$n("index",[receiver].concat($to_a(indexes)),this.$index_map(receiver,lbrack_t,rbrack_t)):this.$n("send",[receiver,"[]"].concat($to_a(indexes)),this.$send_index_map(receiver,lbrack_t,rbrack_t))}),4),$def(self,"$index_asgn",(function(receiver,lbrack_t,indexes,rbrack_t){return $truthy(this.$class().$emit_index())?this.$n("indexasgn",[receiver].concat($to_a(indexes)),this.$index_map(receiver,lbrack_t,rbrack_t)):this.$n("send",[receiver,"[]="].concat($to_a(indexes)),this.$send_index_map(receiver,lbrack_t,rbrack_t))}),4),$def(self,"$binary_op",(function(receiver,operator_t,arg){var source_map=nil,operator=nil,method_call=nil;return source_map=this.$send_binary_op_map(receiver,operator_t,arg),$eqeq(this.parser.$version(),18)&&(operator=this.$value(operator_t),$eqeq(operator,"!=")?method_call=this.$n("send",[receiver,"==",arg],source_map):$eqeq(operator,"!~")&&(method_call=this.$n("send",[receiver,"=~",arg],source_map)),$truthy(["!=","!~"]["$include?"](operator)))?this.$n("not",[method_call],this.$expr_map(source_map.$expression())):this.$n("send",[receiver,this.$value(operator_t).$to_sym(),arg],source_map)}),3),$def(self,"$match_op",(function(receiver,match_t,arg){var source_map,regexp=nil;return source_map=this.$send_binary_op_map(receiver,match_t,arg),$truthy(regexp=this.$static_regexp_node(receiver))?($send(regexp.$names(),"each",[],(function $$11(name){var self=null==$$11.$$s?this:$$11.$$s;return null==self.parser&&(self.parser=nil),null==name&&(name=nil),self.parser.$static_env().$declare(name)}),{$$arity:1,$$s:this}),this.$n("match_with_lvasgn",[receiver,arg],source_map)):this.$n("send",[receiver,"=~",arg],source_map)}),3),$def(self,"$unary_op",(function(op_t,receiver){var $ret_or_1,method=nil;return method=$eqeqeq("+",$ret_or_1=this.$value(op_t))||$eqeqeq("-",$ret_or_1)?$rb_plus(this.$value(op_t),"@"):this.$value(op_t),this.$n("send",[receiver,method.$to_sym()],this.$send_unary_op_map(op_t,receiver))}),2),$def(self,"$not_op",(function(not_t,begin_t,receiver,end_t){var nil_node=nil;return null==begin_t&&(begin_t=nil),null==receiver&&(receiver=nil),null==end_t&&(end_t=nil),$eqeq(this.parser.$version(),18)?this.$n("not",[this.$check_condition(receiver)],this.$unary_op_map(not_t,receiver)):$truthy(receiver["$nil?"]())?(nil_node=this.$n0("begin",this.$collection_map(begin_t,nil,end_t)),this.$n("send",[nil_node,"!"],this.$send_unary_op_map(not_t,nil_node))):this.$n("send",[this.$check_condition(receiver),"!"],this.$send_map(nil,nil,not_t,begin_t,[receiver],end_t))}),-2),$def(self,"$logical_op",(function(type,lhs,op_t,rhs){return this.$n(type,[lhs,rhs],this.$binary_op_map(lhs,op_t,rhs))}),4),$def(self,"$condition",(function(cond_t,cond,then_t,if_true,else_t,if_false,end_t){return this.$n("if",[this.$check_condition(cond),if_true,if_false],this.$condition_map(cond_t,cond,then_t,if_true,else_t,if_false,end_t))}),7),$def(self,"$condition_mod",(function(if_true,if_false,cond_t,cond){var $ret_or_1;return this.$n("if",[this.$check_condition(cond),if_true,if_false],this.$keyword_mod_map($truthy($ret_or_1=if_true)?$ret_or_1:if_false,cond_t,cond))}),4),$def(self,"$ternary",(function(cond,question_t,if_true,colon_t,if_false){return this.$n("if",[this.$check_condition(cond),if_true,if_false],this.$ternary_map(cond,question_t,if_true,colon_t,if_false))}),5),$def(self,"$when",(function(when_t,patterns,then_t,body){var children;return children=patterns["$<<"](body),this.$n("when",children,this.$keyword_map(when_t,then_t,children,nil))}),4),$def(self,"$case",(function(case_t,expr,when_bodies,else_t,else_body,end_t){return this.$n("case",[expr].concat($to_a(when_bodies["$<<"](else_body))),this.$condition_map(case_t,expr,nil,nil,else_t,else_body,end_t))}),6),$def(self,"$loop",(function(type,keyword_t,cond,do_t,body,end_t){return this.$n(type,[this.$check_condition(cond),body],this.$keyword_map(keyword_t,do_t,nil,end_t))}),6),$def(self,"$loop_mod",(function(type,body,keyword_t,cond){return $eqeq(body.$type(),"kwbegin")&&(type+="_post"),this.$n(type,[this.$check_condition(cond),body],this.$keyword_mod_map(body,keyword_t,cond))}),4),$def(self,"$for",(function(for_t,iterator,in_t,iteratee,do_t,body,end_t){return this.$n("for",[iterator,iteratee,body],this.$for_map(for_t,in_t,do_t,end_t))}),7),$def(self,"$keyword_cmd",(function(type,keyword_t,lparen_t,args,rparen_t){var last_arg=nil;return null==lparen_t&&(lparen_t=nil),null==args&&(args=[]),null==rparen_t&&(rparen_t=nil),$eqeq(type,"yield")&&$truthy($rb_gt(args.$count(),0))&&(last_arg=args.$last(),$eqeq(last_arg.$type(),"block_pass")&&this.$diagnostic("error","block_given_to_yield",nil,this.$loc(keyword_t),[last_arg.$loc().$expression()])),$truthy(["yield","super"]["$include?"](type))&&$truthy(this.$class().$emit_kwargs())&&this.$rewrite_hash_args_to_kwargs(args),this.$n(type,args,this.$keyword_map(keyword_t,lparen_t,args,rparen_t))}),-3),$def(self,"$preexe",(function(preexe_t,lbrace_t,compstmt,rbrace_t){return this.$n("preexe",[compstmt],this.$keyword_map(preexe_t,lbrace_t,[],rbrace_t))}),4),$def(self,"$postexe",(function(postexe_t,lbrace_t,compstmt,rbrace_t){return this.$n("postexe",[compstmt],this.$keyword_map(postexe_t,lbrace_t,[],rbrace_t))}),4),$def(self,"$rescue_body",(function(rescue_t,exc_list,assoc_t,exc_var,then_t,compound_stmt){return this.$n("resbody",[exc_list,exc_var,compound_stmt],this.$rescue_body_map(rescue_t,exc_list,assoc_t,exc_var,then_t,compound_stmt))}),6),$def(self,"$begin_body",(function(compound_stmt,rescue_bodies,else_t,else_,ensure_t,ensure_){var statements=nil;return null==rescue_bodies&&(rescue_bodies=[]),null==else_t&&(else_t=nil),null==else_&&(else_=nil),null==ensure_t&&(ensure_t=nil),null==ensure_&&(ensure_=nil),$truthy(rescue_bodies["$any?"]())?compound_stmt=$truthy(else_t)?this.$n("rescue",[compound_stmt].concat($to_a($rb_plus(rescue_bodies,[else_]))),this.$eh_keyword_map(compound_stmt,nil,rescue_bodies,else_t,else_)):this.$n("rescue",[compound_stmt].concat($to_a($rb_plus(rescue_bodies,[nil]))),this.$eh_keyword_map(compound_stmt,nil,rescue_bodies,nil,nil)):$truthy(else_t)&&(statements=[],$not(compound_stmt["$nil?"]())&&($eqeq(compound_stmt.$type(),"begin")?statements=$rb_plus(statements,compound_stmt.$children()):statements.$push(compound_stmt)),statements.$push(this.$n("begin",[else_],this.$collection_map(else_t,[else_],nil))),compound_stmt=this.$n("begin",statements,this.$collection_map(nil,statements,nil))),$truthy(ensure_t)&&(compound_stmt=this.$n("ensure",[compound_stmt,ensure_],this.$eh_keyword_map(compound_stmt,ensure_t,[ensure_],nil,nil))),compound_stmt}),-2),$def(self,"$compstmt",(function(statements){return $truthy(statements["$none?"]())?nil:$truthy(statements["$one?"]())?statements.$first():this.$n("begin",statements,this.$collection_map(nil,statements,nil))}),1),$def(self,"$begin",(function(begin_t,body,end_t){return $truthy(body["$nil?"]())?this.$n0("begin",this.$collection_map(begin_t,nil,end_t)):$eqeq(body.$type(),"mlhs")||$eqeq(body.$type(),"begin")&&$truthy(body.$loc().$begin()["$nil?"]())&&$truthy(body.$loc().$end()["$nil?"]())?this.$n(body.$type(),body.$children(),this.$collection_map(begin_t,body.$children(),end_t)):this.$n("begin",[body],this.$collection_map(begin_t,[body],end_t))}),3),$def(self,"$begin_keyword",(function(begin_t,body,end_t){return $truthy(body["$nil?"]())?this.$n0("kwbegin",this.$collection_map(begin_t,nil,end_t)):$eqeq(body.$type(),"begin")&&$truthy(body.$loc().$begin()["$nil?"]())&&$truthy(body.$loc().$end()["$nil?"]())?this.$n("kwbegin",body.$children(),this.$collection_map(begin_t,body.$children(),end_t)):this.$n("kwbegin",[body],this.$collection_map(begin_t,[body],end_t))}),3),$def(self,"$case_match",(function(case_t,expr,in_bodies,else_t,else_body,end_t){return $truthy(else_t)&&$not(else_body)&&(else_body=this.$n("empty_else",nil,this.$token_map(else_t))),this.$n("case_match",[expr].concat($to_a(in_bodies["$<<"](else_body))),this.$condition_map(case_t,expr,nil,nil,else_t,else_body,end_t))}),6),$def(self,"$in_match",(function(lhs,in_t,rhs){return this.$n("in_match",[lhs,rhs],this.$binary_op_map(lhs,in_t,rhs))}),3),$def(self,"$match_pattern",(function(lhs,match_t,rhs){return this.$n("match_pattern",[lhs,rhs],this.$binary_op_map(lhs,match_t,rhs))}),3),$def(self,"$match_pattern_p",(function(lhs,match_t,rhs){return this.$n("match_pattern_p",[lhs,rhs],this.$binary_op_map(lhs,match_t,rhs))}),3),$def(self,"$in_pattern",(function(in_t,pattern,guard,then_t,body){var children=nil;return children=[pattern,guard,body],this.$n("in_pattern",children,this.$keyword_map(in_t,then_t,children.$compact(),nil))}),5),$def(self,"$if_guard",(function(if_t,if_body){return this.$n("if_guard",[if_body],this.$guard_map(if_t,if_body))}),2),$def(self,"$unless_guard",(function(unless_t,unless_body){return this.$n("unless_guard",[unless_body],this.$guard_map(unless_t,unless_body))}),2),$def(self,"$match_var",(function(name_t){var name,name_l;return name=this.$value(name_t).$to_sym(),name_l=this.$loc(name_t),this.$check_lvar_name(name,name_l),this.$check_duplicate_pattern_variable(name,name_l),this.parser.$static_env().$declare(name),this.$n("match_var",[name],this.$variable_map(name_t))}),1),$def(self,"$match_hash_var",(function(name_t){var name,name_l,expr_l=nil;return name=this.$value(name_t).$to_sym(),name_l=(expr_l=this.$loc(name_t)).$adjust($hash2(["end_pos"],{end_pos:-1})),this.$check_lvar_name(name,name_l),this.$check_duplicate_pattern_variable(name,name_l),this.parser.$static_env().$declare(name),this.$n("match_var",[name],$$$($$$($$("Source"),"Map"),"Variable").$new(name_l,expr_l))}),1),$def(self,"$match_hash_var_from_str",(function(begin_t,strings,end_t){var $a,$ret_or_1,string=nil,name=nil,name_l=nil,begin_l=nil,end_l=nil,expr_l=nil;return $truthy($rb_gt(strings.$length(),1))&&this.$diagnostic("error","pm_interp_in_var_name",nil,this.$loc(begin_t).$join(this.$loc(end_t))),string=strings["$[]"](0),$eqeqeq("str",$ret_or_1=string.$type())?(name=null==($a=[].concat($to_a(string)))[0]?nil:$a[0],name_l=string.$loc().$expression(),this.$check_lvar_name(name,name_l),this.$check_duplicate_pattern_variable(name,name_l),this.parser.$static_env().$declare(name),$truthy(begin_l=string.$loc().$begin())&&(name_l=name_l.$adjust($hash2(["begin_pos"],{begin_pos:begin_l.$length()}))),$truthy(end_l=string.$loc().$end())&&(name_l=name_l.$adjust($hash2(["end_pos"],{end_pos:end_l.$length()["$-@"]()}))),expr_l=this.$loc(begin_t).$join(string.$loc().$expression()).$join(this.$loc(end_t)),this.$n("match_var",[name.$to_sym()],$$$($$$($$("Source"),"Map"),"Variable").$new(name_l,expr_l))):$eqeqeq("begin",$ret_or_1)?this.$match_hash_var_from_str(begin_t,string.$children(),end_t):this.$diagnostic("error","pm_interp_in_var_name",nil,this.$loc(begin_t).$join(this.$loc(end_t)))}),3),$def(self,"$match_rest",(function(star_t,name_t){var name=nil;return null==name_t&&(name_t=nil),$truthy(name_t["$nil?"]())?this.$n0("match_rest",this.$unary_op_map(star_t)):(name=this.$match_var(name_t),this.$n("match_rest",[name],this.$unary_op_map(star_t,name)))}),-2),$def(self,"$hash_pattern",(function(lbrace_t,kwargs,rbrace_t){var args;return args=this.$check_duplicate_args(kwargs),this.$n("hash_pattern",args,this.$collection_map(lbrace_t,args,rbrace_t))}),3),$def(self,"$array_pattern",(function(lbrack_t,elements,rbrack_t){var node_elements,node_type,trailing_comma=nil;return $truthy(elements["$nil?"]())?this.$n("array_pattern",nil,this.$collection_map(lbrack_t,[],rbrack_t)):(trailing_comma=!1,node_elements=$send(elements,"map",[],(function(element){return null==element&&(element=nil),$eqeq(element.$type(),"match_with_trailing_comma")?(trailing_comma=!0,element.$children().$first()):(trailing_comma=!1,element)}),1),node_type=$truthy(trailing_comma)?"array_pattern_with_tail":"array_pattern",this.$n(node_type,node_elements,this.$collection_map(lbrack_t,elements,rbrack_t)))}),3),$def(self,"$find_pattern",(function(lbrack_t,elements,rbrack_t){return this.$n("find_pattern",elements,this.$collection_map(lbrack_t,elements,rbrack_t))}),3),$def(self,"$match_with_trailing_comma",(function(match,comma_t){return this.$n("match_with_trailing_comma",[match],this.$expr_map(match.$loc().$expression().$join(this.$loc(comma_t))))}),2),$def(self,"$const_pattern",(function(const$,ldelim_t,pattern,rdelim_t){return this.$n("const_pattern",[const$,pattern],$$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(ldelim_t),this.$loc(rdelim_t),const$.$loc().$expression().$join(this.$loc(rdelim_t))))}),4),$def(self,"$pin",(function(pin_t,var$){return this.$n("pin",[var$],this.$send_unary_op_map(pin_t,var$))}),2),$def(self,"$match_alt",(function(left,pipe_t,right){var source_map;return source_map=this.$binary_op_map(left,pipe_t,right),this.$n("match_alt",[left,right],source_map)}),3),$def(self,"$match_as",(function(value,assoc_t,as){var source_map;return source_map=this.$binary_op_map(value,assoc_t,as),this.$n("match_as",[value,as],source_map)}),3),$def(self,"$match_nil_pattern",(function(dstar_t,nil_t){return this.$n0("match_nil_pattern",this.$arg_prefix_map(dstar_t,nil_t))}),2),$def(self,"$match_pair",(function(label_type,label,value){var $a,begin_t=nil,parts=nil,end_t=nil,label_loc=nil,var_name=nil;return $eqeq(label_type,"label")?(this.$check_duplicate_pattern_key(label["$[]"](0),label["$[]"](1)),this.$pair_keyword(label,value)):(begin_t=null==($a=$to_ary(label))[0]?nil:$a[0],parts=null==$a[1]?nil:$a[1],end_t=null==$a[2]?nil:$a[2],label_loc=this.$loc(begin_t).$join(this.$loc(end_t)),$truthy(var_name=this.$static_string(parts))?this.$check_duplicate_pattern_key(var_name,label_loc):this.$diagnostic("error","pm_interp_in_var_name",nil,label_loc),this.$pair_quoted(begin_t,parts,end_t,value))}),3),$def(self,"$match_label",(function(label_type,label){var $a,begin_t=nil,strings=nil,end_t=nil;return $eqeq(label_type,"label")?this.$match_hash_var(label):(begin_t=null==($a=$to_ary(label))[0]?nil:$a[0],strings=null==$a[1]?nil:$a[1],end_t=null==$a[2]?nil:$a[2],this.$match_hash_var_from_str(begin_t,strings,end_t))}),2),self.$private(),$def(self,"$check_condition",(function(cond){var $a,$ret_or_1,lhs=nil,rhs=nil,type=nil,$ret_or_2=nil;return $eqeqeq("masgn",$ret_or_1=cond.$type())?$truthy($rb_le(this.parser.$version(),23))?this.$diagnostic("error","masgn_as_condition",nil,cond.$loc().$expression()):cond:$eqeqeq("begin",$ret_or_1)?$eqeq(cond.$children().$count(),1)?cond.$updated(nil,[this.$check_condition(cond.$children().$last())]):cond:$eqeqeq("and",$ret_or_1)||$eqeqeq("or",$ret_or_1)||$eqeqeq("irange",$ret_or_1)||$eqeqeq("erange",$ret_or_1)?(lhs=null==($a=[].concat($to_a(cond)))[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],type=$eqeqeq("irange",$ret_or_2=cond.$type())?"iflipflop":$eqeqeq("erange",$ret_or_2)?"eflipflop":nil,$truthy(["and","or"]["$include?"](cond.$type()))&&$eqeq(this.parser.$version(),18)?cond:cond.$updated(type,[this.$check_condition(lhs),this.$check_condition(rhs)])):$eqeqeq("regexp",$ret_or_1)?this.$n("match_current_line",[cond],this.$expr_map(cond.$loc().$expression())):cond}),1),$def(self,"$check_duplicate_args",(function(args,map){return null==map&&(map=$hash2([],{})),$send(args,"each",[],(function $$15(this_arg){var $ret_or_1,self=null==$$15.$$s?this:$$15.$$s;return null==this_arg&&(this_arg=nil),$eqeqeq("arg",$ret_or_1=this_arg.$type())||$eqeqeq("optarg",$ret_or_1)||$eqeqeq("restarg",$ret_or_1)||$eqeqeq("blockarg",$ret_or_1)||$eqeqeq("kwarg",$ret_or_1)||$eqeqeq("kwoptarg",$ret_or_1)||$eqeqeq("kwrestarg",$ret_or_1)||$eqeqeq("shadowarg",$ret_or_1)?self.$check_duplicate_arg(this_arg,map):$eqeqeq("procarg0",$ret_or_1)?$truthy(this_arg.$children()["$[]"](0)["$is_a?"]($$("Symbol")))?self.$check_duplicate_arg(this_arg,map):self.$check_duplicate_args(this_arg.$children(),map):$eqeqeq("mlhs",$ret_or_1)?self.$check_duplicate_args(this_arg.$children(),map):nil}),{$$arity:1,$$s:this})}),-2),$def(self,"$check_duplicate_arg",(function(this_arg,map){var $a,this_name,that_name,that_arg=nil,$writer=nil;return null==map&&(map=$hash2([],{})),this_name=null==($a=[].concat($to_a(this_arg)))[0]?nil:$a[0],that_arg=map["$[]"](this_name),that_name=null==($a=[].concat($to_a(that_arg)))[0]?nil:$a[0],$truthy(that_arg["$nil?"]())?($send(map,"[]=",$to_a($writer=[this_name,this_arg])),$writer[$rb_minus($writer.length,1)]):$truthy(this["$arg_name_collides?"](this_name,that_name))?this.$diagnostic("error","duplicate_argument",nil,this_arg.$loc().$name(),[that_arg.$loc().$name()]):nil}),-2),$def(self,"$validate_no_forward_arg_after_restarg",(function(args){var restarg=nil,forward_arg=nil;return restarg=nil,forward_arg=nil,$send(args,"each",[],(function(arg){var $ret_or_1;return null==arg&&(arg=nil),$eqeqeq("restarg",$ret_or_1=arg.$type())?restarg=arg:$eqeqeq("forward_arg",$ret_or_1)?forward_arg=arg:nil}),1),$not(forward_arg["$nil?"]())&&$not(restarg["$nil?"]())?this.$diagnostic("error","forward_arg_after_restarg",nil,forward_arg.$loc().$expression(),[restarg.$loc().$expression()]):nil}),1),$def(self,"$check_assignment_to_numparam",(function(name,loc){var assigning_to_numparam,$ret_or_1,$ret_or_2;return $truthy($rb_lt(this.parser.$version(),27))?nil:(assigning_to_numparam=$truthy($ret_or_1=$truthy($ret_or_2=this.parser.$context()["$in_dynamic_block?"]())?name["$=~"](/^_([1-9])$/):$ret_or_2)?this.parser.$max_numparam_stack()["$has_numparams?"]():$ret_or_1,$truthy(assigning_to_numparam)?this.$diagnostic("error","cant_assign_to_numparam",$hash2(["name"],{name:name}),loc):nil)}),2),$def(self,"$check_reserved_for_numparam",(function(name,loc){return $truthy($rb_lt(this.parser.$version(),30))?nil:$truthy(name["$=~"](/^_([1-9])$/))?this.$diagnostic("error","reserved_for_numparam",$hash2(["name"],{name:name}),loc):nil}),2),$def(self,"$arg_name_collides?",(function(this_name,that_name){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $eqeqeq(18,$ret_or_1=this.parser.$version())?this_name["$=="](that_name):$eqeqeq(19,$ret_or_1)?$truthy($ret_or_2=this_name["$!="]("_"))?this_name["$=="](that_name):$ret_or_2:$truthy($ret_or_2=$truthy($ret_or_3=this_name)?this_name["$[]"](0)["$!="]("_"):$ret_or_3)?this_name["$=="](that_name):$ret_or_2}),2),$def(self,"$check_lvar_name",(function(name,loc){return $truthy(name["$=~"](/^[[[:lower:]]_][[[:alnum:]]_]*$/))?nil:this.$diagnostic("error","lvar_name",$hash2(["name"],{name:name}),loc)}),2),$def(self,"$check_duplicate_pattern_variable",(function(name,loc){return $truthy(name.$to_s()["$start_with?"]("_"))?nil:($truthy(this.parser.$pattern_variables()["$declared?"](name))&&this.$diagnostic("error","duplicate_variable_name",$hash2(["name"],{name:name.$to_s()}),loc),this.parser.$pattern_variables().$declare(name))}),2),$def(self,"$check_duplicate_pattern_key",(function(name,loc){return $truthy(this.parser.$pattern_hash_keys()["$declared?"](name))&&this.$diagnostic("error","duplicate_pattern_key",$hash2(["name"],{name:name.$to_s()}),loc),this.parser.$pattern_hash_keys().$declare(name)}),2),$def(self,"$n",(function(type,children,source_map){return $$$($$("AST"),"Node").$new(type,children,$hash2(["location"],{location:source_map}))}),3),$def(self,"$n0",(function(type,source_map){return this.$n(type,[],source_map)}),2),$def(self,"$join_exprs",(function(left_expr,right_expr){return left_expr.$loc().$expression().$join(right_expr.$loc().$expression())}),2),$def(self,"$token_map",(function(token){return $$$($$("Source"),"Map").$new(this.$loc(token))}),1),$def(self,"$delimited_string_map",(function(string_t){var begin_l,end_l,str_range=nil;return begin_l=(str_range=this.$loc(string_t)).$with($hash2(["end_pos"],{end_pos:$rb_plus(str_range.$begin_pos(),1)})),end_l=str_range.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(str_range.$end_pos(),1)})),$$$($$$($$("Source"),"Map"),"Collection").$new(begin_l,end_l,this.$loc(string_t))}),1),$def(self,"$prefix_string_map",(function(symbol){var begin_l,str_range=nil;return begin_l=(str_range=this.$loc(symbol)).$with($hash2(["end_pos"],{end_pos:$rb_plus(str_range.$begin_pos(),1)})),$$$($$$($$("Source"),"Map"),"Collection").$new(begin_l,nil,this.$loc(symbol))}),1),$def(self,"$unquoted_map",(function(token){return $$$($$$($$("Source"),"Map"),"Collection").$new(nil,nil,this.$loc(token))}),1),$def(self,"$pair_keyword_map",(function(key_t,value_e){var key_l,colon_l,key_range=nil;return key_l=(key_range=this.$loc(key_t)).$adjust($hash2(["end_pos"],{end_pos:-1})),colon_l=key_range.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(key_range.$end_pos(),1)})),[$$$($$$($$("Source"),"Map"),"Collection").$new(nil,nil,key_l),$$$($$$($$("Source"),"Map"),"Operator").$new(colon_l,key_range.$join(value_e.$loc().$expression()))]}),2),$def(self,"$pair_quoted_map",(function(begin_t,end_t,value_e){var quote_l,colon_l,end_l=nil;return quote_l=(end_l=this.$loc(end_t)).$with($hash2(["begin_pos","end_pos"],{begin_pos:$rb_minus(end_l.$end_pos(),2),end_pos:$rb_minus(end_l.$end_pos(),1)})),colon_l=end_l.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(end_l.$end_pos(),1)})),[[this.$value(end_t),quote_l],$$$($$$($$("Source"),"Map"),"Operator").$new(colon_l,this.$loc(begin_t).$join(value_e.$loc().$expression()))]}),3),$def(self,"$expr_map",(function(loc){return $$$($$("Source"),"Map").$new(loc)}),1),$def(self,"$collection_map",(function(begin_t,parts,end_t){var expr_l=nil;return $truthy(begin_t["$nil?"]())||$truthy(end_t["$nil?"]())?$truthy(parts["$any?"]())?expr_l=this.$join_exprs(parts.$first(),parts.$last()):$not(begin_t["$nil?"]())?expr_l=this.$loc(begin_t):$not(end_t["$nil?"]())&&(expr_l=this.$loc(end_t)):expr_l=this.$loc(begin_t).$join(this.$loc(end_t)),$$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(begin_t),this.$loc(end_t),expr_l)}),3),$def(self,"$string_map",(function(begin_t,parts,end_t){var expr_l=nil;return $truthy(begin_t)&&$truthy(this.$value(begin_t)["$start_with?"]("<<"))?(expr_l=$truthy(parts["$any?"]())?this.$join_exprs(parts.$first(),parts.$last()):this.$loc(end_t).$begin(),$$$($$$($$("Source"),"Map"),"Heredoc").$new(this.$loc(begin_t),expr_l,this.$loc(end_t))):this.$collection_map(begin_t,parts,end_t)}),3),$def(self,"$regexp_map",(function(begin_t,end_t,options_e){return $$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(begin_t),this.$loc(end_t),this.$loc(begin_t).$join(options_e.$loc().$expression()))}),3),$def(self,"$constant_map",(function(scope,colon2_t,name_t){var expr_l=nil;return expr_l=$truthy(scope["$nil?"]())?this.$loc(name_t):scope.$loc().$expression().$join(this.$loc(name_t)),$$$($$$($$("Source"),"Map"),"Constant").$new(this.$loc(colon2_t),this.$loc(name_t),expr_l)}),3),$def(self,"$variable_map",(function(name_t){return $$$($$$($$("Source"),"Map"),"Variable").$new(this.$loc(name_t))}),1),$def(self,"$binary_op_map",(function(left_e,op_t,right_e){return $$$($$$($$("Source"),"Map"),"Operator").$new(this.$loc(op_t),this.$join_exprs(left_e,right_e))}),3),$def(self,"$unary_op_map",(function(op_t,arg_e){var expr_l=nil;return null==arg_e&&(arg_e=nil),expr_l=$truthy(arg_e["$nil?"]())?this.$loc(op_t):this.$loc(op_t).$join(arg_e.$loc().$expression()),$$$($$$($$("Source"),"Map"),"Operator").$new(this.$loc(op_t),expr_l)}),-2),$def(self,"$range_map",(function(start_e,op_t,end_e){var expr_l=nil;return $truthy(start_e)&&$truthy(end_e)?expr_l=this.$join_exprs(start_e,end_e):$truthy(start_e)?expr_l=start_e.$loc().$expression().$join(this.$loc(op_t)):$truthy(end_e)&&(expr_l=this.$loc(op_t).$join(end_e.$loc().$expression())),$$$($$$($$("Source"),"Map"),"Operator").$new(this.$loc(op_t),expr_l)}),3),$def(self,"$arg_prefix_map",(function(op_t,name_t){var expr_l=nil;return null==name_t&&(name_t=nil),expr_l=$truthy(name_t["$nil?"]())?this.$loc(op_t):this.$loc(op_t).$join(this.$loc(name_t)),$$$($$$($$("Source"),"Map"),"Variable").$new(this.$loc(name_t),expr_l)}),-2),$def(self,"$kwarg_map",(function(name_t,value_e){var name_range,expr_l=nil;return null==value_e&&(value_e=nil),name_range=this.$loc(name_t).$adjust($hash2(["end_pos"],{end_pos:-1})),expr_l=$truthy(value_e)?this.$loc(name_t).$join(value_e.$loc().$expression()):this.$loc(name_t),$$$($$$($$("Source"),"Map"),"Variable").$new(name_range,expr_l)}),-2),$def(self,"$module_definition_map",(function(keyword_t,name_e,operator_t,end_t){var name_l=nil;return $truthy(name_e)&&(name_l=name_e.$loc().$expression()),$$$($$$($$("Source"),"Map"),"Definition").$new(this.$loc(keyword_t),this.$loc(operator_t),name_l,this.$loc(end_t))}),4),$def(self,"$definition_map",(function(keyword_t,operator_t,name_t,end_t){return $$$($$$($$("Source"),"Map"),"MethodDefinition").$new(this.$loc(keyword_t),this.$loc(operator_t),this.$loc(name_t),this.$loc(end_t),nil,nil)}),4),$def(self,"$endless_definition_map",(function(keyword_t,operator_t,name_t,assignment_t,body_e){var body_l;return body_l=body_e.$loc().$expression(),$$$($$$($$("Source"),"Map"),"MethodDefinition").$new(this.$loc(keyword_t),this.$loc(operator_t),this.$loc(name_t),nil,this.$loc(assignment_t),body_l)}),5),$def(self,"$send_map",(function(receiver_e,dot_t,selector_t,begin_t,args,end_t){var begin_l=nil,end_l=nil;return null==begin_t&&(begin_t=nil),null==args&&(args=[]),null==end_t&&(end_t=nil),$truthy(receiver_e)?begin_l=receiver_e.$loc().$expression():$truthy(selector_t)&&(begin_l=this.$loc(selector_t)),$truthy(end_t)?end_l=this.$loc(end_t):$truthy(args["$any?"]())?end_l=args.$last().$loc().$expression():$truthy(selector_t)&&(end_l=this.$loc(selector_t)),$$$($$$($$("Source"),"Map"),"Send").$new(this.$loc(dot_t),this.$loc(selector_t),this.$loc(begin_t),this.$loc(end_t),begin_l.$join(end_l))}),-4),$def(self,"$var_send_map",(function(variable_e){return $$$($$$($$("Source"),"Map"),"Send").$new(nil,variable_e.$loc().$expression(),nil,nil,variable_e.$loc().$expression())}),1),$def(self,"$send_binary_op_map",(function(lhs_e,selector_t,rhs_e){return $$$($$$($$("Source"),"Map"),"Send").$new(nil,this.$loc(selector_t),nil,nil,this.$join_exprs(lhs_e,rhs_e))}),3),$def(self,"$send_unary_op_map",(function(selector_t,arg_e){var expr_l=nil;return expr_l=$truthy(arg_e["$nil?"]())?this.$loc(selector_t):this.$loc(selector_t).$join(arg_e.$loc().$expression()),$$$($$$($$("Source"),"Map"),"Send").$new(nil,this.$loc(selector_t),nil,nil,expr_l)}),2),$def(self,"$index_map",(function(receiver_e,lbrack_t,rbrack_t){return $$$($$$($$("Source"),"Map"),"Index").$new(this.$loc(lbrack_t),this.$loc(rbrack_t),receiver_e.$loc().$expression().$join(this.$loc(rbrack_t)))}),3),$def(self,"$send_index_map",(function(receiver_e,lbrack_t,rbrack_t){return $$$($$$($$("Source"),"Map"),"Send").$new(nil,this.$loc(lbrack_t).$join(this.$loc(rbrack_t)),nil,nil,receiver_e.$loc().$expression().$join(this.$loc(rbrack_t)))}),3),$def(self,"$block_map",(function(receiver_l,begin_t,end_t){return $$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(begin_t),this.$loc(end_t),receiver_l.$join(this.$loc(end_t)))}),3),$def(self,"$keyword_map",(function(keyword_t,begin_t,args,end_t){var $ret_or_1,end_l=nil;return args=$truthy($ret_or_1=args)?$ret_or_1:[],end_l=$truthy(end_t)?this.$loc(end_t):$truthy(args["$any?"]())&&$not(args.$last()["$nil?"]())?args.$last().$loc().$expression():$truthy(args["$any?"]())&&$truthy($rb_gt(args.$count(),1))?args["$[]"](-2).$loc().$expression():this.$loc(keyword_t),$$$($$$($$("Source"),"Map"),"Keyword").$new(this.$loc(keyword_t),this.$loc(begin_t),this.$loc(end_t),this.$loc(keyword_t).$join(end_l))}),4),$def(self,"$keyword_mod_map",(function(pre_e,keyword_t,post_e){return $$$($$$($$("Source"),"Map"),"Keyword").$new(this.$loc(keyword_t),nil,nil,this.$join_exprs(pre_e,post_e))}),3),$def(self,"$condition_map",(function(keyword_t,cond_e,begin_t,body_e,else_t,else_e,end_t){var end_l=nil;return end_l=$truthy(end_t)?this.$loc(end_t):$truthy(else_e)&&$truthy(else_e.$loc().$expression())?else_e.$loc().$expression():$truthy(this.$loc(else_t))?this.$loc(else_t):$truthy(body_e)&&$truthy(body_e.$loc().$expression())?body_e.$loc().$expression():$truthy(this.$loc(begin_t))?this.$loc(begin_t):cond_e.$loc().$expression(),$$$($$$($$("Source"),"Map"),"Condition").$new(this.$loc(keyword_t),this.$loc(begin_t),this.$loc(else_t),this.$loc(end_t),this.$loc(keyword_t).$join(end_l))}),7),$def(self,"$ternary_map",(function(begin_e,question_t,mid_e,colon_t,end_e){return $$$($$$($$("Source"),"Map"),"Ternary").$new(this.$loc(question_t),this.$loc(colon_t),this.$join_exprs(begin_e,end_e))}),5),$def(self,"$for_map",(function(keyword_t,in_t,begin_t,end_t){return $$$($$$($$("Source"),"Map"),"For").$new(this.$loc(keyword_t),this.$loc(in_t),this.$loc(begin_t),this.$loc(end_t),this.$loc(keyword_t).$join(this.$loc(end_t)))}),4),$def(self,"$rescue_body_map",(function(keyword_t,exc_list_e,assoc_t,exc_var_e,then_t,compstmt_e){var end_l=nil;return $truthy(compstmt_e)&&(end_l=compstmt_e.$loc().$expression()),$truthy(end_l["$nil?"]())&&$truthy(then_t)&&(end_l=this.$loc(then_t)),$truthy(end_l["$nil?"]())&&$truthy(exc_var_e)&&(end_l=exc_var_e.$loc().$expression()),$truthy(end_l["$nil?"]())&&$truthy(exc_list_e)&&(end_l=exc_list_e.$loc().$expression()),$truthy(end_l["$nil?"]())&&(end_l=this.$loc(keyword_t)),$$$($$$($$("Source"),"Map"),"RescueBody").$new(this.$loc(keyword_t),this.$loc(assoc_t),this.$loc(then_t),this.$loc(keyword_t).$join(end_l))}),6),$def(self,"$eh_keyword_map",(function(compstmt_e,keyword_t,body_es,else_t,else_e){var begin_l=nil,end_l=nil;return begin_l=$truthy(compstmt_e["$nil?"]())?$truthy(keyword_t["$nil?"]())?body_es.$first().$loc().$expression():this.$loc(keyword_t):compstmt_e.$loc().$expression(),end_l=$truthy(else_t)?$truthy(else_e["$nil?"]())?this.$loc(else_t):else_e.$loc().$expression():$not(body_es.$last()["$nil?"]())?body_es.$last().$loc().$expression():this.$loc(keyword_t),$$$($$$($$("Source"),"Map"),"Condition").$new(this.$loc(keyword_t),nil,this.$loc(else_t),nil,begin_l.$join(end_l))}),5),$def(self,"$guard_map",(function(keyword_t,guard_body_e){var guard_body_l,keyword_l=nil;return keyword_l=this.$loc(keyword_t),guard_body_l=guard_body_e.$loc().$expression(),$$$($$$($$("Source"),"Map"),"Keyword").$new(keyword_l,nil,nil,keyword_l.$join(guard_body_l))}),2),$def(self,"$static_string",(function(nodes){try{return $send(nodes,"map",[],(function $$18(node){var $ret_or_1,self=null==$$18.$$s?this:$$18.$$s,string=nil;if(null==node&&(node=nil),$eqeqeq("str",$ret_or_1=node.$type()))return node.$children()["$[]"](0);if($eqeqeq("begin",$ret_or_1)){if($truthy(string=self.$static_string(node.$children())))return string;Opal.ret(nil)}else Opal.ret(nil)}),{$$arity:1,$$s:this}).$join()}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),1),$def(self,"$static_regexp",(function(parts,options){var source=nil;return source=this.$static_string(parts),$truthy(source["$nil?"]())?nil:(source=$truthy(options.$children()["$include?"]("u"))?source.$encode($$$($$("Encoding"),"UTF_8")):$truthy(options.$children()["$include?"]("e"))?source.$encode($$$($$("Encoding"),"EUC_JP")):$truthy(options.$children()["$include?"]("s"))?source.$encode($$$($$("Encoding"),"WINDOWS_31J")):$truthy(options.$children()["$include?"]("n"))?source.$encode($$$($$("Encoding"),"BINARY")):source,$$("Regexp").$new(source,$truthy(options.$children()["$include?"]("x"))?$$$($$("Regexp"),"EXTENDED"):nil))}),2),$def(self,"$static_regexp_node",(function(node){var $a,parts=nil,options=nil;return $eqeq(node.$type(),"regexp")?(parts=($a=[node.$children()["$[]"]($range(0,-2,!1)),node.$children()["$[]"](-1)])[0],options=$a[1],this.$static_regexp(parts,options)):nil}),1),$def(self,"$collapse_string_parts?",(function(parts){var $ret_or_1;return $truthy($ret_or_1=parts["$one?"]())?["str","dstr"]["$include?"](parts.$first().$type()):$ret_or_1}),1),$def(self,"$value",(function(token){return token["$[]"](0)}),1),$def(self,"$string_value",(function(token){return $truthy(token["$[]"](0)["$valid_encoding?"]())||this.$diagnostic("error","invalid_encoding",nil,token["$[]"](1)),token["$[]"](0)}),1),$def(self,"$loc",(function(token){return $truthy(token)&&$truthy(token["$[]"](0))?token["$[]"](1):nil}),1),$def(self,"$diagnostic",(function(type,reason,arguments$,location,highlights){return null==highlights&&(highlights=[]),this.parser.$diagnostics().$process($$("Diagnostic").$new(type,reason,arguments$,location,highlights)),$eqeq(type,"error")?this.parser.$send("yyerror"):nil}),-5),$def(self,"$validate_definee",(function(definee){var $ret_or_1;return!($eqeqeq("int",$ret_or_1=definee.$type())||$eqeqeq("str",$ret_or_1)||$eqeqeq("dstr",$ret_or_1)||$eqeqeq("sym",$ret_or_1)||$eqeqeq("dsym",$ret_or_1)||$eqeqeq("regexp",$ret_or_1)||$eqeqeq("array",$ret_or_1)||$eqeqeq("hash",$ret_or_1))||(this.$diagnostic("error","singleton_literal",nil,definee.$loc().$expression()),!1)}),1),$def(self,"$rewrite_hash_args_to_kwargs",(function(args){var $writer=nil;return $truthy(args["$any?"]())&&$truthy(this["$kwargs?"](args.$last()))?($writer=[$rb_minus(args.$length(),1),args["$[]"]($rb_minus(args.$length(),1)).$updated("kwargs")],$send(args,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):$truthy($rb_gt(args.$length(),1))&&$eqeq(args.$last().$type(),"block_pass")&&$truthy(this["$kwargs?"](args["$[]"]($rb_minus(args.$length(),2))))?($writer=[$rb_minus(args.$length(),2),args["$[]"]($rb_minus(args.$length(),2)).$updated("kwargs")],$send(args,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),1),$def(self,"$kwargs?",(function(node){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=node.$type()["$=="]("hash"))?node.$loc().$begin()["$nil?"]():$ret_or_2)?node.$loc().$end()["$nil?"]():$ret_or_1}),1)}(Opal.$r($nesting)("Builders"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/context"]=function(Opal){var $base,$parent_nesting,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$rb_gt=Opal.rb_gt,$alias=Opal.alias;return Opal.add_stubs("attr_reader,freeze,<<,pop,clear,empty?,==,last,include?,rindex,stack,nil?,!,>,in_block?,in_lambda?"),$base=$nesting[0],$parent_nesting=$nesting,function($base,$super){var self=$klass($base,null,"Context");return self.$$prototype.stack=nil,self.$attr_reader("stack"),$def(self,"$initialize",(function(){return this.stack=[],this.$freeze()}),0),$def(self,"$push",(function(state){return this.stack["$<<"](state)}),1),$def(self,"$pop",(function(){return this.stack.$pop()}),0),$def(self,"$reset",(function(){return this.stack.$clear()}),0),$def(self,"$empty?",(function(){return this.stack["$empty?"]()}),0),$def(self,"$in_class?",(function(){return this.stack.$last()["$=="]("class")}),0),$def(self,"$indirectly_in_def?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.stack["$include?"]("def"))?$ret_or_1:this.stack["$include?"]("defs")}),0),$def(self,"$class_definition_allowed?",(function(){var $ret_or_1,def_index=nil,sclass_index=nil,$ret_or_2=nil;return def_index=$send(this.$stack(),"rindex",[],(function(item){return null==item&&(item=nil),["def","defs"]["$include?"](item)}),1),sclass_index=this.$stack().$rindex("sclass"),$truthy($ret_or_1=def_index["$nil?"]())?$ret_or_1:$truthy($ret_or_2=sclass_index["$nil?"]()["$!"]())?$rb_gt(sclass_index,def_index):$ret_or_2}),0),$alias(self,"module_definition_allowed?","class_definition_allowed?"),$alias(self,"dynamic_const_definition_allowed?","class_definition_allowed?"),$def(self,"$in_block?",(function(){return this.stack.$last()["$=="]("block")}),0),$def(self,"$in_lambda?",(function(){return this.stack.$last()["$=="]("lambda")}),0),$def(self,"$in_dynamic_block?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$in_block?"]())?$ret_or_1:this["$in_lambda?"]()}),0),$def(self,"$in_def_open_args?",(function(){return this.stack.$last()["$=="]("def_open_args")}),0)}([$module($base,"Parser")].concat($parent_nesting)[0])},Opal.modules["parser/max_numparam_stack"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$rb_minus=Opal.rb_minus,$send=Opal.send,$to_a=Opal.to_a;return Opal.add_stubs("attr_reader,==,size,set,top,>,max,last,push,pop,private,-,length,[]="),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"MaxNumparamStack"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.stack=nil,self.$attr_reader("stack"),$const_set($nesting[0],"ORDINARY_PARAMS",-1),$def(self,"$initialize",(function(){return this.stack=[]}),0),$def(self,"$empty?",(function(){return this.stack.$size()["$=="](0)}),0),$def(self,"$has_ordinary_params!",(function(){return this.$set($$("ORDINARY_PARAMS"))}),0),$def(self,"$has_ordinary_params?",(function(){return this.$top()["$=="]($$("ORDINARY_PARAMS"))}),0),$def(self,"$has_numparams?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$top())?$rb_gt(this.$top(),0):$ret_or_1}),0),$def(self,"$register",(function(numparam){return this.$set([this.$top(),numparam].$max())}),1),$def(self,"$top",(function(){return this.stack.$last()}),0),$def(self,"$push",(function(){return this.stack.$push(0)}),0),$def(self,"$pop",(function(){return this.stack.$pop()}),0),self.$private(),$def(self,"$set",(function(value){var $writer;return $writer=[$rb_minus(this.stack.$length(),1),value],$send(this.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/current_arg_stack"]=function(Opal){var $base,$parent_nesting,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$rb_minus=Opal.rb_minus,$send=Opal.send,$to_a=Opal.to_a;return Opal.add_stubs("attr_reader,freeze,==,size,<<,-,length,[]=,pop,clear,last"),$base=$nesting[0],$parent_nesting=$nesting,function($base,$super){var self=$klass($base,null,"CurrentArgStack");return self.$$prototype.stack=nil,self.$attr_reader("stack"),$def(self,"$initialize",(function(){return this.stack=[],this.$freeze()}),0),$def(self,"$empty?",(function(){return this.stack.$size()["$=="](0)}),0),$def(self,"$push",(function(value){return this.stack["$<<"](value)}),1),$def(self,"$set",(function(value){var $writer;return $writer=[$rb_minus(this.stack.$length(),1),value],$send(this.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$pop",(function(){return this.stack.$pop()}),0),$def(self,"$reset",(function(){return this.stack.$clear()}),0),$def(self,"$top",(function(){return this.stack.$last()}),0)}([$module($base,"Parser")].concat($parent_nesting)[0])},Opal.modules["parser/variables_stack"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("push,empty?,<<,new,pop,clear,last,to_sym,include?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"VariablesStack"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.stack=nil,$def(self,"$initialize",(function(){return this.stack=[],this.$push()}),0),$def(self,"$empty?",(function(){return this.stack["$empty?"]()}),0),$def(self,"$push",(function(){return this.stack["$<<"]($$("Set").$new())}),0),$def(self,"$pop",(function(){return this.stack.$pop()}),0),$def(self,"$reset",(function(){return this.stack.$clear()}),0),$def(self,"$declare",(function(name){return this.stack.$last()["$<<"](name.$to_sym())}),1),$def(self,"$declared?",(function(name){return this.stack.$last()["$include?"](name.$to_sym())}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/base"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$defs=Opal.defs,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$gvars=Opal.gvars,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$def=Opal.def,$not=Opal.not,$eqeqeq=Opal.eqeqeq,$to_ary=Opal.to_ary,$hash2=Opal.hash2;return Opal.add_stubs("default_parser,setup_source_buffer,default_encoding,parse,parse_with_comments,read,new,all_errors_are_fatal=,diagnostics,-,ignore_warnings=,lambda,puts,render,consumer=,force_encoding,dup,==,name,raw_source=,source=,private_class_method,attr_reader,version,diagnostics=,static_env=,context=,parser=,[],class,reset,source_buffer=,do_parse,comments=,comments,tokens=,!,raise,tokens,private,advance,===,diagnostic,map,process,yyerror,token_to_str"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Base"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.diagnostics=$proto.lexer=$proto.static_env=$proto.context=$proto.builder=$proto.current_arg_stack=$proto.pattern_variables=$proto.pattern_hash_keys=nil,$defs(self,"$parse",(function(string,file,line){var source_buffer,parser=nil;return null==file&&(file="(string)"),null==line&&(line=1),parser=this.$default_parser(),source_buffer=this.$setup_source_buffer(file,line,string,parser.$default_encoding()),parser.$parse(source_buffer)}),-2),$defs(self,"$parse_with_comments",(function(string,file,line){var source_buffer,parser=nil;return null==file&&(file="(string)"),null==line&&(line=1),parser=this.$default_parser(),source_buffer=this.$setup_source_buffer(file,line,string,parser.$default_encoding()),parser.$parse_with_comments(source_buffer)}),-2),$defs(self,"$parse_file",(function(filename){return this.$parse($$("File").$read(filename),filename)}),1),$defs(self,"$parse_file_with_comments",(function(filename){return this.$parse_with_comments($$("File").$read(filename),filename)}),1),$defs(self,"$default_parser",(function(){var parser=nil,$writer=nil;return parser=this.$new(),$writer=[!0],$send(parser.$diagnostics(),"all_errors_are_fatal=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!0],$send(parser.$diagnostics(),"ignore_warnings=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[$send(this,"lambda",[],(function(diagnostic){return null==$gvars.stderr&&($gvars.stderr=nil),null==diagnostic&&(diagnostic=nil),$gvars.stderr.$puts(diagnostic.$render())}),1)],$send(parser.$diagnostics(),"consumer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],parser}),0),$defs(self,"$setup_source_buffer",(function(file,line,string,encoding){var source_buffer,$writer=nil;return string=string.$dup().$force_encoding(encoding),source_buffer=$$$($$("Source"),"Buffer").$new(file,line),$eqeq(this.$name(),"Parser::Ruby18")?($send(source_buffer,"raw_source=",$to_a($writer=[string])),$writer[$rb_minus($writer.length,1)]):($send(source_buffer,"source=",$to_a($writer=[string])),$writer[$rb_minus($writer.length,1)]),source_buffer}),4),self.$private_class_method("setup_source_buffer"),self.$attr_reader("lexer"),self.$attr_reader("diagnostics"),self.$attr_reader("builder"),self.$attr_reader("static_env"),self.$attr_reader("source_buffer"),self.$attr_reader("context"),self.$attr_reader("max_numparam_stack"),self.$attr_reader("current_arg_stack"),self.$attr_reader("pattern_variables"),self.$attr_reader("pattern_hash_keys"),$def(self,"$initialize",(function(builder){var $writer=nil;return null==builder&&(builder=$$$($$$($$("Parser"),"Builders"),"Default").$new()),this.diagnostics=$$$($$("Diagnostic"),"Engine").$new(),this.static_env=$$("StaticEnvironment").$new(),this.context=$$("Context").$new(),this.max_numparam_stack=$$("MaxNumparamStack").$new(),this.current_arg_stack=$$("CurrentArgStack").$new(),this.pattern_variables=$$("VariablesStack").$new(),this.pattern_hash_keys=$$("VariablesStack").$new(),this.lexer=$$("Lexer").$new(this.$version()),$writer=[this.diagnostics],$send(this.lexer,"diagnostics=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[this.static_env],$send(this.lexer,"static_env=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[this.context],$send(this.lexer,"context=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.builder=builder,$writer=[this],$send(this.builder,"parser=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.last_token=nil,$truthy($$$(this.$class(),"Racc_debug_parser"))&&$truthy($$("ENV")["$[]"]("RACC_DEBUG"))&&(this.yydebug=!0),this.$reset()}),-1),$def(self,"$reset",(function(){return this.source_buffer=nil,this.lexer.$reset(),this.static_env.$reset(),this.context.$reset(),this.current_arg_stack.$reset(),this.pattern_variables.$reset(),this.pattern_hash_keys.$reset(),this}),0),$def(self,"$parse",(function(source_buffer){var self=this,$writer=nil,$ret_or_1=nil;return function(){try{return $writer=[source_buffer],$send(self.lexer,"source_buffer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.source_buffer=source_buffer,$truthy($ret_or_1=self.$do_parse())?$ret_or_1:nil}finally{self.source_buffer=nil,$writer=[nil],$send(self.lexer,"source_buffer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}}()}),1),$def(self,"$parse_with_comments",(function(source_buffer){var self=this,$writer=nil;return function(){try{return $writer=[[]],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],[self.$parse(source_buffer),self.lexer.$comments()]}finally{$writer=[nil],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}}()}),1),$def(self,"$tokenize",(function(source_buffer,recover){var self=this,$writer=nil,ast=nil;return null==recover&&(recover=!1),function(){try{$writer=[[]],$send(self.lexer,"tokens=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[[]],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)];try{ast=self.$parse(source_buffer)}catch($err){if(!Opal.rescue($err,[$$$($$("Parser"),"SyntaxError")]))throw $err;try{$not(recover)&&self.$raise()}finally{Opal.pop_exception()}}return[ast,self.lexer.$comments(),self.lexer.$tokens()]}finally{$writer=[nil],$send(self.lexer,"tokens=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[nil],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}}()}),-2),self.$private(),$def(self,"$next_token",(function(){var token;return token=this.lexer.$advance(),this.last_token=token,token}),0),$def(self,"$check_kwarg_name",(function(name_t){var $ret_or_1;return $eqeqeq(/^[a-z_]/,$ret_or_1=name_t["$[]"](0))?nil:$eqeqeq(/^[A-Z]/,$ret_or_1)?this.$diagnostic("error","argument_const",nil,name_t):nil}),1),$def(self,"$diagnostic",(function(level,reason,arguments$,location_t,highlights_ts){var $a,location,highlights;return null==highlights_ts&&(highlights_ts=[]),$a=$to_ary(location_t),null==$a[0]?nil:$a[0],location=null==$a[1]?nil:$a[1],highlights=$send(highlights_ts,"map",[],(function(token){var $c;return null==token&&(token=nil),$c=$to_ary(token),null==$c[0]?nil:$c[0],null==$c[1]?nil:$c[1]}),1),this.diagnostics.$process($$("Diagnostic").$new(level,reason,arguments$,location,highlights)),$eqeq(level,"error")?this.$yyerror():nil}),-5),$def(self,"$on_error",(function(error_token_id,error_value,value_stack){var $a,token_name,location;return token_name=this.$token_to_str(error_token_id),null==($a=$to_ary(error_value))[0]?nil:$a[0],location=null==$a[1]?nil:$a[1],this.diagnostics.$process($$("Diagnostic").$new("error","unexpected_token",$hash2(["token"],{token:token_name}),location))}),3)}($nesting[0],$$$($$("Racc"),"Parser"),$nesting)}($nesting[0],$nesting)},Opal.modules["parser/rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("new,process,include?,type,remove,wrap,insert_before,insert_after,replace,freeze,join,extend,warn_of_deprecation,class,warned_of_deprecation=,-"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Rewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.source_rewriter=nil,$def(self,"$rewrite",(function(source_buffer,ast){return this.source_rewriter=$$$($$("Source"),"Rewriter").$new(source_buffer),this.$process(ast),this.source_rewriter.$process()}),2),$def(self,"$assignment?",(function(node){return["lvasgn","ivasgn","gvasgn","cvasgn","casgn"]["$include?"](node.$type())}),1),$def(self,"$remove",(function(range){return this.source_rewriter.$remove(range)}),1),$def(self,"$wrap",(function(range,before,after){return this.source_rewriter.$wrap(range,before,after)}),3),$def(self,"$insert_before",(function(range,content){return this.source_rewriter.$insert_before(range,content)}),2),$def(self,"$insert_after",(function(range,content){return this.source_rewriter.$insert_after(range,content)}),2),$def(self,"$replace",(function(range,content){return this.source_rewriter.$replace(range,content)}),2),$const_set($nesting[0],"DEPRECATION_WARNING",["Parser::Rewriter is deprecated.","Please update your code to use Parser::TreeRewriter instead"].$join("\n").$freeze()),self.$extend($$("Deprecation")),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this,$writer=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),self.$class().$warn_of_deprecation(),$writer=[!0],$send($$$($$("Source"),"Rewriter"),"warned_of_deprecation=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield)}),-1)}($nesting[0],$$$($$$($$("Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)},Opal.modules["parser/tree_rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$def=(Opal.hash,Opal.def);return Opal.add_stubs("new,process,include?,type,remove,wrap,insert_before,insert_after,replace"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"TreeRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.source_rewriter=nil,$def(self,"$rewrite",(function(source_buffer,ast,$kwargs){var policy;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return policy=Opal.kwrestargs($kwargs,{}),this.source_rewriter=$$$($$$($$("Parser"),"Source"),"TreeRewriter").$new(source_buffer,Opal.to_hash(policy)),this.$process(ast),this.source_rewriter.$process()}),-3),$def(self,"$assignment?",(function(node){return["lvasgn","ivasgn","gvasgn","cvasgn","casgn"]["$include?"](node.$type())}),1),$def(self,"$remove",(function(range){return this.source_rewriter.$remove(range)}),1),$def(self,"$wrap",(function(range,before,after){return this.source_rewriter.$wrap(range,before,after)}),3),$def(self,"$insert_before",(function(range,content){return this.source_rewriter.$insert_before(range,content)}),2),$def(self,"$insert_after",(function(range,content){return this.source_rewriter.$insert_after(range,content)}),2),$def(self,"$replace",(function(range,content){return this.source_rewriter.$replace(range,content)}),2)}($nesting[0],$$$($$$($$("Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)},Opal.modules.parser=function(Opal){var self=Opal.top,$nesting=[],$$=Opal.$r($nesting),$$$=(Opal.nil,Opal.$$$),$truthy=Opal.truthy,$module=Opal.module;return Opal.add_stubs("=~,require,raise"),$truthy($$("RUBY_VERSION")["$=~"](/^1\.[89]\./))&&(self.$require("parser/version"),self.$raise($$("LoadError"),"parser v"+$$$($$("Parser"),"VERSION")+" cannot run on Ruby "+$$("RUBY_VERSION")+".\nPlease upgrade to Ruby 2.0.0 or higher, or use an older version of the parser gem.\n")),self.$require("set"),self.$require("racc/parser"),self.$require("ast"),function($base,$parent_nesting){var self=$module($base,"Parser"),$nesting=[self].concat($parent_nesting);return self.$require("parser/version"),self.$require("parser/messages"),self.$require("parser/deprecation"),function($base){var self=$module($base,"AST");self.$require("parser/ast/node"),self.$require("parser/ast/processor"),self.$require("parser/meta")}($nesting[0]),function($base){var self=$module($base,"Source");self.$require("parser/source/buffer"),self.$require("parser/source/range"),self.$require("parser/source/comment"),self.$require("parser/source/comment/associator"),self.$require("parser/source/rewriter"),self.$require("parser/source/rewriter/action"),self.$require("parser/source/tree_rewriter"),self.$require("parser/source/tree_rewriter/action"),self.$require("parser/source/map"),self.$require("parser/source/map/operator"),self.$require("parser/source/map/collection"),self.$require("parser/source/map/constant"),self.$require("parser/source/map/variable"),self.$require("parser/source/map/keyword"),self.$require("parser/source/map/definition"),self.$require("parser/source/map/method_definition"),self.$require("parser/source/map/send"),self.$require("parser/source/map/index"),self.$require("parser/source/map/condition"),self.$require("parser/source/map/ternary"),self.$require("parser/source/map/for"),self.$require("parser/source/map/rescue_body"),self.$require("parser/source/map/heredoc"),self.$require("parser/source/map/objc_kwarg")}($nesting[0]),self.$require("parser/syntax_error"),self.$require("parser/clobbering_error"),self.$require("parser/diagnostic"),self.$require("parser/diagnostic/engine"),self.$require("parser/static_environment"),self.$require("parser/lexer"),self.$require("parser/lexer/literal"),self.$require("parser/lexer/stack_state"),self.$require("parser/lexer/dedenter"),function($base){$module($base,"Builders").$require("parser/builders/default")}($nesting[0]),self.$require("parser/context"),self.$require("parser/max_numparam_stack"),self.$require("parser/current_arg_stack"),self.$require("parser/variables_stack"),self.$require("parser/base"),self.$require("parser/rewriter"),self.$require("parser/tree_rewriter")}($nesting[0],$nesting)},Opal.modules["parser/ruby31"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$not=Opal.not,$send=Opal.send,$eqeq=Opal.eqeq,$rb_gt=Opal.rb_gt,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$hash=Opal.hash,$const_set=Opal.const_set,$to_ary=Opal.to_ary,$hash2=Opal.hash2,$slice=Opal.slice;return Opal.add_stubs("require,end_with?,[],!,include?,diagnostic,children,in_dynamic_block?,context,declared?,static_env,=~,expression,loc,has_ordinary_params?,max_numparam_stack,dup,stack,pop,reverse_each,==,>,declare,register,to_i,new,each,split,empty?,[]=,-,+,push,compstmt,<<,preexe,nil?,begin_body,state=,alias,gvar,back_ref,undef_method,condition_mod,loop_mod,rescue_body,postexe,multi_assign,assign,array,op_assign,index,call_method,const_op_assignable,const_fetch,endless_method_name,def_endless_method,cmdarg,cond,unextend,def_endless_singleton,logical_op,not_op,command_start=,in_kwarg,in_kwarg=,match_pattern,match_pattern_p,extend_static,block,keyword_cmd,multi_lhs,begin,splat,concat,assignable,index_asgn,attr_asgn,const_global,const,symbol_internal,range_inclusive,range_exclusive,binary_op,unary_op,match_op,ternary,associate,declared_forward_args?,forwarded_args,block_pass,declared_anonymous_blockarg?,begin_keyword,condition,loop,case,case_match,for,class_definition_allowed?,def_class,def_sclass,module_definition_allowed?,def_module,def_method,def_singleton,in_class?,arg,restarg,size,procarg0,args,has_ordinary_params!,set,shadowarg,extend_dynamic,call_lambda,has_numparams?,numargs,top,any?,when,in_pattern,if_guard,unless_guard,match_with_trailing_comma,array_pattern,find_pattern,hash_pattern,match_as,match_alt,const_pattern,match_rest,match_pair,match_label,match_nil_pattern,accessible,match_var,ident,pin,string_compose,dedent_string,dedent_level,string,character,xstring_compose,regexp_options,regexp_compose,words_compose,word,symbols_compose,string_internal,ivar,cvar,symbol,symbol_compose,respond_to?,negate,unary_num,integer,float,rational,complex,nil,self,true,false,__FILE__,__LINE__,__ENCODING__,nth_ref,declare_forward_args,forward_arg,check_kwarg_name,kwoptarg,kwarg,kwnilarg,kwrestarg,optarg,blockarg,declare_anonymous_blockarg,pair,pair_keyword,pair_label,pair_quoted,kwsplat,yyerrok"),self.$require("racc/parser.rb"),self.$require("parser"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var racc_action_table,racc_action_check,racc_action_pointer,racc_action_default,racc_goto_table,racc_goto_check,racc_goto_pointer,racc_goto_default,racc_reduce_table,racc_token_table,self=$klass($base,$super,"Ruby31"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),clist=nil,arr=nil,idx=nil,$proto=self.$$prototype;return $proto.current_arg_stack=$proto.max_numparam_stack=$proto.builder=$proto.lexer=$proto.static_env=$proto.context=$proto.pattern_variables=$proto.last_token=$proto.pattern_hash_keys=nil,$def(self,"$version",(function(){return 31}),0),$def(self,"$default_encoding",(function(){return $$$($$("Encoding"),"UTF_8")}),0),$def(self,"$endless_method_name",(function(name_t){return $not(["===","==","!=","<=",">="]["$include?"](name_t["$[]"](0)))&&$truthy(name_t["$[]"](0)["$end_with?"]("="))?this.$diagnostic("error","endless_setter",nil,name_t):nil}),1),$def(self,"$try_declare_numparam",(function(node){var self=this,name=nil,location=nil,raw_context=nil,raw_max_numparam_stack=nil;return name=node.$children()["$[]"](0),!!($truthy(name["$=~"](/^_[1-9]$/))&&$not(self.$static_env()["$declared?"](name))&&$truthy(self.$context()["$in_dynamic_block?"]()))&&(location=node.$loc().$expression(),$truthy(self.$max_numparam_stack()["$has_ordinary_params?"]())&&self.$diagnostic("error","ordinary_param_defined",nil,[nil,location]),raw_context=self.$context().$stack().$dup(),raw_max_numparam_stack=self.$max_numparam_stack().$stack().$dup(),raw_context.$pop(),raw_max_numparam_stack.$pop(),function(){var $brk=Opal.new_brk();try{$send(raw_context,"reverse_each",[],(function $$1(outer_scope){var self=null==$$1.$$s?this:$$1.$$s,outer_scope_has_numparams=nil;if(null==outer_scope&&(outer_scope=nil),$eqeq(outer_scope,"block")||$eqeq(outer_scope,"lambda"))return outer_scope_has_numparams=$rb_gt(raw_max_numparam_stack.$pop(),0),$truthy(outer_scope_has_numparams)?self.$diagnostic("error","numparam_used_in_outer_scope",nil,[nil,location]):nil;Opal.brk(nil,$brk)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.$static_env().$declare(name),self.$max_numparam_stack().$register(name["$[]"](1).$to_i()),!0)}),1),clist=["-319,308,617,995,597,-117,-116,-319,-319,-319,218,219,308,-319,-319","919,-319,919,919,-121,-122,617,-725,-118,-319,617,660,624,658,1207,234","-123,-119,713,943,828,-319,-319,617,-319,-319,-319,-319,-319,-116,-117","-124,617,617,-124,925,714,942,123,236,921,1142,1143,122,922,237,918","237,-123,-504,303,-319,-319,-319,-319,-319,-319,-319,-319,-319,-319","-319,-319,-319,-319,218,219,-319,-319,-319,-713,684,-319,307,-124,-319","-123,659,-319,657,237,218,219,-319,307,-319,119,-319,-319,237,-319,-319","-319,-319,-319,-607,-319,994,-319,-108,-107,823,-607,-607,-607,123,-119","-607,-607,-607,122,-607,-319,-112,-113,-319,-319,-109,-113,-607,-319","-607,-607,-607,123,-114,-110,-319,123,122,-122,-607,-607,122,-607,-607","-607,-607,-607,-121,-120,123,-118,-115,984,-109,122,-116,-117,-124,123","123,-116,-117,-124,122,122,1117,308,237,132,-607,-607,-607,-607,-607","-607,-607,-607,-607,-607,-607,-607,-607,-607,123,-725,-607,-607,-607","122,-607,-607,609,215,-607,611,123,-607,-607,-111,-607,122,-607,-123","-607,230,-607,-607,-123,-607,-607,-607,-607,-607,123,-607,-610,-607","-621,122,-109,237,-622,-610,-610,-610,-712,-122,-610,-610,-610,-607","-610,-119,-607,-607,-607,-607,-119,-607,-610,-607,-610,-610,-610,230","-607,216,1118,-607,-120,-110,-610,-610,307,-610,-610,-610,-610,-610","-109,-737,217,-109,-712,-111,-121,-120,-112,-118,220,-121,-120,519,-118","-109,887,-116,624,218,219,-117,-610,-610,-610,-610,-610,-610,-610,-610","-610,-610,-610,-610,-610,-610,-725,297,-610,-610,-610,-737,-610,-610","-713,-111,-610,870,-111,-610,-610,645,-610,237,-610,-712,-610,-110,-610","-610,-111,-610,-610,-610,-610,-610,308,-610,-319,-610,101,102,-124,358","-112,-319,-319,-319,101,102,-319,-319,-319,-610,-319,-122,-610,-610","-610,-610,-122,-610,-319,-610,-319,-319,-319,-110,-610,-111,-110,-610","504,503,-319,-319,-118,-319,-319,-319,-319,-319,-110,237,-112,647,646","-112,645,-607,630,645,230,887,954,645,-607,630,359,-112,303,631,1057","828,-319,-319,-319,-319,-319,-319,-319,-319,-319,-319,-319,-319,-319","-319,103,104,-319,-319,-319,307,916,-319,103,104,-319,913,645,-319,-319","645,-319,-614,-319,237,-319,428,-319,-319,-614,-319,-319,-319,-319,-319","-737,-319,914,-319,647,646,-607,647,646,643,645,647,646,643,856,645","468,-319,645,1029,-319,-319,-319,-319,796,-319,645,-319,1057,-716,679","230,-319,-628,680,-122,-716,-716,-716,507,-119,-716,-716,-716,224,-716","647,646,648,647,646,627,-614,-716,-716,-716,-716,-716,679,854,625,-121","218,219,518,-716,-716,680,-716,-716,-716,-716,-716,520,647,646,661,-110","-118,647,646,643,647,646,650,645,-622,-737,521,-119,647,646,656,-121","236,-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,-716","-716,225,750,-716,-716,-716,-112,915,-716,-119,-102,-716,496,-616,-716","-716,555,-716,-121,-716,-616,-716,-88,-716,-716,-108,-716,-716,-716","-716,-716,-319,-716,-716,-716,979,887,-117,-319,-319,-319,647,646,652","-319,-319,609,-319,-716,611,497,-716,-716,-716,-716,-319,-716,224,-716","567,123,569,1050,-716,301,122,-120,-319,-319,571,-319,-319,-319,-319","-319,979,887,132,-616,488,224,485,484,483,493,486,425,1181,-610,630","-87,427,426,954,496,-610,635,-319,-319,-319,-319,-319,-319,-319,-319","-319,-319,-319,-319,-319,-319,237,-617,-319,-319,-319,491,684,-319,-617","582,-319,225,224,-319,501,500,504,503,-319,301,-319,497,-319,-319,583","-319,-319,-319,-319,-319,123,-319,-716,-319,225,122,590,87,123,-716","-716,-716,-610,122,312,-716,-716,-319,-716,88,-319,-319,237,-319,230","-319,-716,-716,230,89,609,482,-319,608,609,-122,-617,611,-716,-716,303","-716,-716,-716,-716,-716,237,225,594,1190,488,224,485,484,483,493,486","-618,1157,597,944,945,218,219,-618,496,600,1155,-716,-716,-716,-716","-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,261,-621,-716,-716","-716,491,685,-716,237,612,-716,234,-615,-716,501,500,504,503,-716,-615","-716,497,-716,-716,-114,-716,-716,-716,-716,-716,613,-716,-716,-716","225,870,-123,571,624,488,-618,485,484,483,493,486,417,-716,-107,-612","-716,-716,-710,-111,496,-716,-612,-613,-115,-716,-116,482,-716,628,-613","-120,-716,-716,-716,493,-124,629,-716,-716,637,-716,491,-615,662,496","665,666,-109,-716,-716,501,500,504,503,-292,224,668,497,669,-118,-716","-716,672,-716,-716,-716,-716,-716,673,-610,237,670,677,224,678,303,-610","504,503,-612,633,-710,497,237,691,-610,692,-613,237,635,-716,-716,-716","-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,-710,694,-716","-716,-716,697,685,-716,-354,698,-716,700,702,-716,704,-354,225,715,-716","716,-716,720,-716,-716,-354,-716,-716,-716,-716,-716,-610,-716,-716","-716,225,722,-619,728,729,261,261,224,-620,-619,750,261,261,-716,589","-620,-716,-716,-619,-716,496,-716,-320,587,-620,237,784,237,-716,-320","237,-120,330,77,78,26,11,65,-320,-354,237,71,72,-102,799,237,75,-716","73,74,76,35,36,79,80,603,810,814,497,237,81,33,32,111,110,112,113,-619","816,23,1050,819,225,-620,824,10,53,332,12,115,114,116,105,64,107,106","108,-320,109,117,118,224,101,102,49,50,48,-320,223,-716,825,224,278","279,-320,829,-716,221,599,853,857,-712,858,-320,-293,-716,45,517,871","38,555,555,66,67,-310,883,68,887,40,907,908,-310,52,237,-716,911,261","237,277,276,-310,24,920,937,938,939,99,87,90,91,956,92,94,93,95,958","225,297,964,88,98,966,-320,968,-716,569,225,82,258,89,103,104,260,259","46,47,330,77,78,26,11,65,571,810,237,71,72,303,303,-310,75,-709,73,74","76,35,36,79,80,126,127,128,129,130,81,33,32,111,110,112,113,810,488","23,485,484,483,261,486,10,53,332,12,115,114,116,105,64,107,106,108,887","109,117,118,224,101,102,49,50,48,-319,516,-607,981,224,982,237,-319","706,-607,517,1181,-713,237,-709,992,-319,710,-607,45,635,237,38,-294","237,66,67,-319,1003,68,1007,40,-292,1011,-319,52,697,-709,714,-713,1014","848,849,-319,24,850,117,118,1016,99,87,90,91,1018,92,94,93,95,1020,225","1020,237,88,98,770,-319,237,-607,237,225,82,1048,89,103,104,1051,919","46,47,330,77,78,26,11,65,966,1063,237,71,72,810,1079,-319,75,1081,73","74,76,35,36,79,80,253,1086,1087,1092,1093,81,33,32,111,110,112,113,1094","488,23,485,484,483,-295,486,10,53,332,12,115,114,116,105,64,107,106","108,1107,109,117,118,1108,101,102,49,50,48,261,265,266,267,268,278,279","273,274,269,270,1109,254,255,237,237,271,272,237,45,237,252,38,493,237","66,67,237,919,68,1116,40,258,496,264,52,260,259,237,256,257,277,276","262,24,263,1122,1123,1125,99,87,90,91,697,92,94,93,95,1128,1131,1133","1135,88,98,237,275,504,503,1137,1147,82,497,89,103,104,1158,1159,46","47,330,77,78,26,11,65,1020,1020,1020,71,72,1166,1179,1182,75,1187,73","74,76,35,36,79,80,126,127,128,129,130,81,33,32,111,110,112,113,1188","691,23,1108,1198,1198,697,674,10,53,332,12,115,114,116,105,64,107,106","108,1201,109,117,118,1203,101,102,49,50,48,261,265,266,267,268,278,279","273,274,269,270,1205,254,255,1207,1207,271,272,237,45,1020,948,38,952","951,66,67,953,1198,68,-713,40,258,-712,264,52,260,259,1224,256,257,277","276,262,24,263,1207,1207,1207,99,87,90,91,3,92,94,93,95,950,,,,88,98",",275,,-264,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75",",73,74,76,35,36,79,80,126,127,128,129,130,81,33,32,111,110,112,113,",",23,,,,,884,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118",",101,102,49,50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255",",,271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277","276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89","103,104,,,46,47,7,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80","126,127,128,129,130,81,33,32,111,110,112,113,,,23,,,,,674,10,53,9,12","115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265","266,267,268,278,279,273,274,269,270,,254,255,,,271,272,,45,,,38,,,66","67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87","90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89,103,104,,,46,47,330,77","78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110","112,113,,,23,,,,,912,10,53,332,12,115,114,116,105,64,107,106,108,,109","117,118,,101,102,49,50,48,261,265,266,267,268,278,279,273,274,269,270",",254,255,,,271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256","257,277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,",",,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76","35,36,79,80,,,,,,81,33,32,111,110,112,113,,1152,23,485,484,483,,486","10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49","50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255,,,271,272",",45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24","263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89,103,104,,","46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81","33,32,111,110,112,113,,1152,23,485,484,483,,486,10,53,332,12,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267","268,278,279,273,274,269,270,,254,255,,,271,272,,45,,,38,,,66,67,,,68",",40,258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,","92,94,93,95,,,,,88,98,,275,,,,,82,,89,103,104,,,46,47,330,77,78,26,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113",",,23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,","101,102,49,50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255",",,271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277","276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,237,275,,,,,82",",89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36","79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116","105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267,268","278,279,273,274,269,270,,254,255,,,271,272,,45,,,38,,,66,67,,,68,,40","258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,,92,94","93,95,,,,,88,98,,275,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,",",,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,","23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255,,","271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276","262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89,103","104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80",",,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267,268,278","279,273,274,269,270,,254,255,,,271,272,,45,,,38,,,66,67,,,68,,40,258",",264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,,92,94,93","95,,,,,88,98,,275,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71","72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,",",,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102","49,50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255,,,271","272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262","24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89,103,104",",,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,",",81,33,32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116,105,64","107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267,268,278,279","273,274,269,270,,254,255,,,271,272,,45,,,38,,,66,67,,,68,,40,258,,264","52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,",",,,88,98,,275,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72",",,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,","10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49","50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255,,,271,272",",45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24","263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89,103,104,,","46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81","33,32,111,110,112,113,,488,23,485,484,483,,486,10,53,332,12,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,488,,485,484,483",",486,,706,,488,,485,484,483,,486,710,,45,,,38,,,66,67,,261,68,,40,,",",52,,706,,261,,,,,24,,710,706,,99,87,90,91,,92,94,93,95,,,258,,88,98","260,259,,256,257,,82,258,89,103,104,260,259,46,47,330,77,78,26,11,65",",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,","488,23,485,484,483,,486,10,53,332,12,115,114,116,105,64,107,106,108",",109,117,118,,101,102,49,50,48,261,265,266,267,268,278,279,273,706,269","270,,,,,,271,272,,45,,,38,,,66,67,,261,68,,40,258,,264,52,260,259,,256","257,277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,258,,88,98,260","259,,256,257,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,","75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,488,23,485,484","483,,486,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,261,,,,,,,,706,,,,,,,,271,272,,45,,,38,,,66,67,,,68,,40","258,,264,52,260,259,,256,257,,,262,24,263,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72,",",,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10","53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50","48,261,265,266,267,268,278,279,,,269,270,,,,,,271,272,,45,,,38,,,66","67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87","90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,330,77,78","26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110","112,113,,,23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117","118,,101,102,49,50,48,261,265,266,267,268,278,279,273,274,269,270,,-738","-738,,,271,272,,45,,,334,,,66,67,,,68,,40,258,,264,52,260,259,,256,257","277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89","103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79","80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116","105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,-738,-738,-738","-738,278,279,,,-738,-738,,,,,,271,272,,45,,,38,,,66,67,,,68,,40,258",",264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,,92,94,93","95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72",",,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,","10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49","50,48,261,-738,-738,-738,-738,278,279,,,-738,-738,,,,,,271,272,,45,",",334,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24,263",",,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,330","77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111","110,112,113,,,23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109","117,118,,101,102,49,50,48,261,-738,-738,-738,-738,278,279,,,-738,-738",",,,,,271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257","277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89","103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79","80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116","105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267,268","278,279,273,274,269,270,,-738,-738,,,271,272,,45,,,38,,,66,67,,,68,","40,258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,,92","94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,",",,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,","23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,261,-738,-738,-738,-738,278,279,,,-738,-738,,,,,,271,272",",45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24","263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46","47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33","32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116,105,64,107,106","108,,109,117,118,,101,102,49,50,48,261,-738,-738,-738,-738,278,279,",",-738,-738,,,,,,271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259",",256,257,277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,",",,,,82,,89,103,104,,,46,47,7,77,78,26,11,65,,,,71,72,,,,75,,73,74,76","35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,9,12,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267","268,278,279,273,274,269,270,,-738,-738,,,271,272,,45,,,38,,,66,67,,","68,,40,258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91",",92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,330,77,78,26,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113",",,23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,","101,102,49,50,48,261,,,,,,,,,,,,,,,,271,272,,45,,,334,,,66,67,,,68,","40,258,,264,52,260,259,,256,257,,,262,24,263,,,,99,87,90,91,,92,94,93","95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76","351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,-738,-738","-738,-738,278,279,,,-738,-738,,,,,,271,272,,242,,,250,,,66,67,,,68,",",258,,264,52,260,259,,256,257,277,276,262,247,263,,,,99,87,90,91,,92","94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73","74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,",",115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265","266,267,268,278,279,273,274,269,270,,-738,-738,,,271,272,,242,,,250",",,66,67,,,68,,,258,,264,52,260,259,,256,257,277,276,262,247,263,,,,99","87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46","47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251",",,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50","48,261,,,,,,,,,,,,,,,,271,272,,242,,,250,,,66,67,,,68,,,258,,264,52","260,259,,256,257,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77","78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,","81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106","108,,109,117,118,,101,102,49,50,48,261,,,,,,,,,,,,,,,,271,272,,242,",",250,,,66,67,,,68,,,258,,264,52,260,259,,256,257,,,,247,,,,,99,87,90","91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,","75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,",",,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48","261,,,,,,,,,,,,,,,,271,272,,242,,,250,,,66,67,,,68,,,258,,,52,260,259",",256,257,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82","65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354","111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109","117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68",",,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78","26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81","346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106","108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66","67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,",",,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80",",,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64","107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,","250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,",",,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352","79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351","352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116","105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,",",242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93","95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76","351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92","94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73","74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,",",115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,",",,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90","91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,77,78,26,11,65",",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,",",23,,,,,,10,53,,12,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,",",,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103","104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110","112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118",",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52",",,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65","89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111","110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117","118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,433",",,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26","82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346","354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108",",109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67",",,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77","78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,","81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106","108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66","67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,",",,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,",",,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107","106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250",",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88","98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80",",,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107","106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250",",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88","98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80",",,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107","106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250",",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88","98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80",",,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107","106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250",",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88","98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79","80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,","242,,,250,,,66,67,,,68,,,,319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92","94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73","74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,",",115,114,116,105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,",",,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,793,,319,,52,,,325,,,,,,247",",,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104","71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113",",,23,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102","49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24",",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104","71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112","113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,",",,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,-434",",46,47,,,,-434,-434,-434,,,-434,-434,-434,,-434,,,,,,,,-434,-434,-434","-434,,,,,,,,,-434,-434,,-434,-434,-434,-434,-434,,,,,,,,,,,,,,,,,,,",",,,-434,-434,-434,-434,-434,-434,-434,-434,-434,-434,-434,-434,-434","-434,,,-434,-434,-434,,,-434,,303,-434,,,-434,-434,,-434,,-434,,-434",",-434,-434,,-434,-434,-434,-434,-434,-326,-434,-434,-434,,,,-326,-326","-326,,,-326,-326,-326,,-326,-434,,,-434,-434,,-434,-326,-434,-326,-326",",,,,-434,,,,-326,-326,,-326,-326,-326,-326,-326,,,,,,,,,,,,,,,,,,,,",",,-326,-326,-326,-326,-326,-326,-326,-326,-326,-326,-326,-326,-326,-326",",,-326,-326,-326,,,-326,,312,-326,,,-326,-326,,-326,,-326,,-326,,-326","-326,,-326,-326,-326,-326,-326,,-326,,-326,,,,,,,,,,,,,,-326,,,-326","-326,,-326,,-326,77,78,26,,65,,-326,,71,72,,,,75,,73,74,76,351,352,79","80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35","36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116","105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,",",,,,242,,,250,,,66,67,,,68,,321,,319,,52,,,325,,,,,,247,,,,,99,322,90","91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,77,78,26,11,65",",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,",",23,,,,,,10,53,,12,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,",",,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103","104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112","113,,,23,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,",",,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103","104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112","113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118",",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319",",52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78","26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81","346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106","108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66","67,,,68,,793,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98",",,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,",",,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107","106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250",",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88","98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79","80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,862,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93","95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,77,78,26,11,65,,,,71,72,,",",75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10","53,,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48",",,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,99","87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46","47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251",",,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50","48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,",",99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251",",,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118,,101,102,49","50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52,,,325",",,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89","103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110","112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117","118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321",",319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77","78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81","33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108","324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66","67,,,68,,321,,319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,",",,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351","352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116","105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,",",,,,242,,,250,,,66,67,,,68,,,,319,,52,,,325,,,,,,247,,,,,99,322,90,91",",92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75",",73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,",",115,114,116,105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,",",,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52,,,325,,,,,,247",",,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104","71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112","113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,,,52,,",",,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89","103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111","110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109","117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68",",,,,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77","78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,","81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106","108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,",",66,67,,,68,,793,,,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35","36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,",",,,88,98,237,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35","36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,",",,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36","79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,",",,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351","352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116","105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,",",242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93","95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76","351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92","94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73","74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,",",115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,",",,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90","91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,","75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53",",,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,",",,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87","90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47",",75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,","53,,,115,114,116,105,64,107,106,108,324,109,117,118,,101,102,49,50,48",",,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52,,,325,,,,,,247",",,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47","77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111","110,112,113,,,23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109","117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40",",,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,417,82",",89,103,104,,,46,47,77,78,26,,65,,,,71,72,,,,75,,73,74,76,351,352,79","80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351","352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116","105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,",",,,,242,,,250,,,66,67,,,68,,,,319,,52,,,325,,,,,,247,,,,,99,322,90,91",",92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75",",73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,","53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,",",,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99","87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46","47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251",",,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50","48,,,,,,,,,,,,,,,,,,,,242,,,250,603,,66,67,,,68,,,,,,52,,,,,,,,,247",",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104","71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112","113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118",",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,793,,319",",52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78","26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81","346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106","108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66","67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,",",,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80",",,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64","107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,","250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,",",,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352","79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351","352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116","105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,",",242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93","95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76","351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92","94,93,95,,,,,88,98,,,,,,,82,,89,103,104,-274,,46,47,,,,-274,-274,-274",",,-274,-274,-274,488,-274,485,484,483,493,486,,,-274,-274,-274,,,,496",",,,,,-274,-274,,-274,-274,-274,-274,-274,488,,485,484,483,493,486,,491","641,,,,,,496,,501,500,504,503,,,,497,,488,,485,484,483,493,486,-274",",,,491,,,-274,496,,,,303,-274,,504,503,,,,497,,,,,,,,,,491,482,,,,-274","-274,,,501,500,504,503,,,,497,,,,-274,,,-274,,77,78,26,-274,65,482,",",71,72,-274,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113",",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52",",,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82","65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111","110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117","118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,",",52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82","65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111","110,112,113,,,23,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117","118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,",",52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,123,,,,,122,82",",89,103,104,,,46,47,77,78,26,,65,,,,71,72,,,,75,,73,74,76,35,36,79,80",",,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105,64,107","106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250",",,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88","98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79","80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351","352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116","105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,",",,,,242,,,250,,,66,67,,,68,,,,,,52,,,325,,,,,,247,,,,,99,322,90,91,","92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,","73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115","114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,",",,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,","92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,","73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53",",,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,",",,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87","90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47",",75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,",",,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50","48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,",",99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71","72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113",",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102","49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247",",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104","71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112","113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118",",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,,","52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,","89,103,104,,,46,47,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79","80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,,12,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,45",",,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35","36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,",",,,88,98,,,,,,,82,,89,103,104,-311,,46,47,,,,-311,-311,-311,,,-311,-311","-311,,-311,,,,,,,,-311,,-311,-311,-311,,,,,,,,-311,-311,,-311,-311,-311","-311,-311,,,,,,,,,,,,,,,,,,,,,,,-311,-311,-311,-311,-311,-311,-311,-311","-311,-311,-311,-311,-311,-311,,,-311,-311,-311,,,-311,,,-311,,,-311","-311,,-311,,-311,,-311,,-311,-311,,-311,-311,-311,-311,-311,,-311,,-311",",,,,,,,,,,,,,-311,,,-311,-311,-311,-311,,-311,,-311,,77,78,26,-311,65",",,,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113",",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102","49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247",",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104","71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112","113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,",",,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103","104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112","113,,,23,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,",",,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103","104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110","112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118",",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52",",,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65","89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111","110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117","118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,",",52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82","65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354","111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324","109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,",",68,,793,,319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88","98,,,,77,78,26,82,65,89,103,104,71,72,46,557,,75,,73,74,76,35,36,79","80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64","107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,","250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,",",,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352","79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351","352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116","105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,",",242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93","95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76","351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92","94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73","74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115","114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,",",,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91",",92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75",",73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,",",115,114,116,105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,",",,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52,,,325,,,,,,247",",,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104","71,72,46,557,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113",",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52",",,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82","65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111","110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109","117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68",",321,,319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98","237,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79","80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351","352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116","105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,",",242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93","95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76","351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92","94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73","74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,",",115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,",",,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90","91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,","75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,",",,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48",",,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99","87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46","47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251",",,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50","48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,",",99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71","72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113",",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102","49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247",",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104","71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112","113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,",",,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103","104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110","112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118",",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52",",,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65","89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111","110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117","118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,",",52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82","65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354","111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109","117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68",",,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78","26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81","346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106","108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66","67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,",",,,,,82,,89,103,104,,,46,47,77,78,26,11,65,,,,71,72,,,,75,,73,74,76","35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,,12,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94","93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74","76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94","93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74","76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94","93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74","76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94","93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74","76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94","93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74","76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94","93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74","76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115","114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,",",,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91",",92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75",",73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,","115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,",",,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90","91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,77,78,26,11,65",",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,",",23,,,,,,10,53,9,12,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,",",,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,417,82,,89,103,104",",,46,47,77,78,26,,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33","32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324","109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,",",68,,321,,319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88","98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80",",,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107","106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250",",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88","98,,,,,,,82,,89,103,104,-718,,46,47,,,,-718,-718,-718,,,-718,-718,-718",",-718,,,,,,,,-718,-718,-718,-718,-718,,,,,,,,-718,-718,,-718,-718,-718","-718,-718,,,,,,,,,,,,,,,,,,,,,,,-718,-718,-718,-718,-718,-718,-718,-718","-718,-718,-718,-718,-718,-718,,,-718,-718,-718,,,-718,,,-718,,,-718","-718,,-718,,-718,,-718,,-718,-718,,-718,-718,-718,-718,-718,,-718,-718","-718,,,,,,,,,,,,,,-718,,,-718,-718,-718,-718,,-718,-717,-718,,,,,-718","-717,-717,-717,,,-717,-717,-717,,-717,,,,,,,,-717,-717,-717,-717,-717",",,,,,,,-717,-717,,-717,-717,-717,-717,-717,,,,,,,,,,,,,,,,,,,,,,,-717","-717,-717,-717,-717,-717,-717,-717,-717,-717,-717,-717,-717,-717,,,-717","-717,-717,,,-717,,,-717,,,-717,-717,,-717,,-717,,-717,,-717,-717,,-717","-717,-717,-717,-717,,-717,-717,-717,,,,,,,,,,,,,,-717,,,-717,-717,-717","-717,,-717,,-717,,77,78,26,-717,65,,,,71,72,,,,75,,73,74,76,351,352","79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,,,,82,,89,103,104,,,46,47,77,78,26,11,65,,,,71,72,,,,75",",73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53","9,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,",",,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,99,87","90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,-274,,46,47,,,,-274","-274,-274,,,-274,-274,-274,,-274,,,,,,,,-274,-274,-274,-274,,,,,,,,","-274,-274,,-274,-274,-274,-274,-274,,,,,,,,,,,,,,,,,,,,,,,-274,-274","-274,-274,-274,-274,-274,-274,-274,-274,-274,-274,-274,-274,,,-274,-274","-274,,,-274,,303,-274,,,-274,-274,,-274,,-274,,-274,,-274,-274,,-274","-274,-274,-274,-274,,-274,-274,-274,,,,,,,,,,,,,,-274,,,-274,-274,,-274",",-274,77,78,26,,65,,-274,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81","33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105,64,107,106,108",",109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67",",,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77","78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81","33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105,64,107,106,108",",109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67",",,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77","78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,","81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106","108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66","67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,",",,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,",",,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105,64,107,106","108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66","67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,",",77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,",",,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106","108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66","67,,,68,,433,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98",",,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80",",,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64","107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,","250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,",",,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352","79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35","36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116","105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,",",242,,,250,,,66,67,,,68,,433,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94","93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74","76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115","114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,",",,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91",",92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75",",73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,","53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,",",,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99","87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46","47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251",",,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50","48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,",",99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71","72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113",",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102","49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247",",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104","71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113",",,23,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102","49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24",",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104","71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113",",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52",",,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82","65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111","110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117","118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,",",52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82","65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354","111,110,112,113,,,251,,,,,,,347,,,115,114,116,105,64,107,106,108,,109","117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,343,,,339,,,66,67,,,68,,,",",,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65","89,103,104,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110","112,113,,,251,,,,,,,347,,,115,114,116,105,64,107,106,108,,109,117,118",",101,102,,,355,,,,,,,,,,,,,,,,,,,,1100,,,250,,,66,67,,,68,,,,,,,,,,",",,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103","104,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112","113,,,251,,,,,,,347,,,115,114,116,105,64,107,106,108,,109,117,118,,101","102,,,355,,,,,,,,,,,,,,,,,,,,343,,,250,,,66,67,,,68,,,488,,485,484,483","493,486,,,,,,,,,496,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,585,,491","82,,89,103,104,77,78,26,,65,504,503,,71,72,497,,,75,,73,74,76,351,352","79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114,116","105,64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,392",",,38,,,66,67,,,68,,40,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,","88,98,,,,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352,79","80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,1139,",",250,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88","98,,,,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352,79,80",",,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114,116,105,64","107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,343,,,339",",,66,67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,",",,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352,79,80,,,,",",81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114,116,105,64,107","106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,343,,,339,,,66","67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77","78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346","354,111,110,112,113,,,251,,,,,,,347,,,115,114,116,397,64,107,106,398",",109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,404,,,399,,,250,,,66,67",",,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78","26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346","354,111,110,112,113,,,251,,,,,,,347,,,115,114,116,397,64,107,106,398",",109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,399,,,250,,,66,67,,,68",",,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82","65,89,103,104,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111","110,112,113,,,251,,,,,,,347,,,115,114,116,105,64,107,106,108,,109,117","118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,343,,,250,,,66,67,,,68,,,488,","485,484,483,493,486,,,,,,,,,496,,99,87,90,91,,92,94,93,95,,,,,88,98",",,,357,,491,82,,89,103,104,77,78,26,,65,504,503,,71,72,497,,,75,,73","74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347",",,115,114,116,105,64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,",",,,,,,,,,,,,1139,,,250,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,","92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74","76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115","114,116,105,64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,",",,,,,,343,,,339,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93","95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351","352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,",",,343,,,339,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352","79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114,116","105,64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,343",",,339,,,66,67,,,68,,338,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,",",,88,98,,,,,,,82,,89,103,104,182,193,183,206,179,199,189,188,209,210","204,187,186,181,207,211,212,191,180,194,198,200,192,185,,,,201,208,203","202,195,205,190,178,197,196,,,,,,177,184,175,176,172,173,174,135,137",",,136,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169","155,156,,,,,,,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142","164,143,,,171,99,,,,,,,,,,,,,,98,182,193,183,206,179,199,189,188,209","210,204,187,186,181,207,211,212,191,180,194,198,200,192,185,,,,201,208","203,202,195,205,190,178,197,196,,,,,,177,184,175,176,172,173,174,135","137,134,,136,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,",",,168,169,155,156,,,,,,,,,,,,,,160,159,,144,165,162,161,170,157,158","152,150,142,164,143,,,171,99,,,,,,,,,,,,,,98,182,193,183,206,179,199","189,188,209,210,204,187,186,181,207,211,212,191,180,194,198,200,192","185,,,,201,208,203,202,195,205,190,178,197,196,,,,,,177,184,175,176","172,173,174,135,137,,,136,,,,,,,,166,167,,163,145,146,147,154,151,153",",,148,149,,,,168,169,155,156,,,,,,,,,,,,,,160,159,,144,165,162,161,170","157,158,152,150,142,164,143,,,171,99,,,,,,,,,,,,,,98,182,193,183,206","179,199,189,188,209,210,204,187,186,181,207,211,212,191,180,194,198","200,192,185,,,,201,208,203,202,195,205,190,178,197,196,,,,,,177,184","175,176,172,173,174,135,137,,,136,,,,,,,,166,167,,163,145,146,147,154","151,153,,,148,149,,,,168,169,155,156,,,,,,,,,,,,,,160,159,,144,165,162","161,170,157,158,152,150,142,164,143,,,171,99,111,110,112,113,,,,,,,",",,98,,,115,114,116,770,,,488,773,485,484,483,493,486,101,102,,,355,",",,496,,,,,,,,,,,,,,,,772,,,743,,,491,741,,,742,,,,,501,500,504,503,",",,497,,,,771,,,,99,87,90,91,,92,94,93,95,,,,,88,98,111,110,112,113,",",82,,89,103,104,,,758,759,,115,114,116,770,,,,773,750,,,,,101,102,,","355,496,,,,,,,,,,,,,,,,,,,772,,,743,,,,741,,,742,,745,,,,,,,497,,,,",",,771,,,,99,751,90,91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89","103,104,,,758,759,,115,114,116,770,,,488,773,485,484,483,493,486,101","102,,,355,,,,496,,,,,,,,,,,,,,,,772,,,743,,,491,741,,,742,,,,,501,500","504,503,,,,497,,,,771,,,,99,87,90,91,,92,94,93,95,,,,,88,98,111,110","112,113,,,82,,89,103,104,,,758,759,,115,114,116,770,,,488,773,485,484","483,493,486,101,102,,,355,,,,496,,,,,,,,,,,,,,,,772,,,743,,,491,741",",,742,,,,,,,504,503,,,,497,,,,771,,,,99,87,90,91,,92,94,93,95,,,,,88","98,111,110,112,113,,,82,,89,103,104,,,758,759,,115,114,116,770,,,488","773,485,484,483,493,486,101,102,,,355,,,,496,,,,,,,,,,,,,,,,772,,,743",",,491,741,,,742,,1047,,,,,504,503,,,,497,,,,771,,,,99,87,90,91,,92,94","93,95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,758,759,,115,114","116,770,,,488,773,485,484,483,493,486,101,102,,,355,,,,496,,,,,,,,,",",,,,,,772,,,743,,,491,741,,,742,,,,,,,504,503,,,,497,,,,771,,,,99,87","90,91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,758","759,,115,114,116,770,,,,773,750,,,,,101,102,,,355,496,,,,,,,,,,,,,,",",,,,772,,,743,,,,741,,,742,,745,,,,,,,497,,,,,,,771,,,,99,751,90,91",",92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,758,759,,115","114,116,770,,,,773,750,,,,,101,102,,,355,496,,,,,,,,,,,,,,,,,,,772,",",743,,,,741,,,742,,745,,,,,,,497,,,,,,,771,,,,99,751,90,91,,92,94,93","95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,758,759,,115,114,116","770,,,,773,,,,,,101,102,,,355,,,,,,,,,,,,,,,,,,,,772,,,743,,,,741,,","742,,,,,,,,,,,,,,,,771,,,,99,87,90,91,,92,94,93,95,,,,,88,98,111,110","112,113,,,82,,89,103,104,,,758,759,,115,114,116,770,,,,773,,,,,,101","102,,,355,,,,,,,,,,,,,,,,,,,,772,,,743,,,,741,,,742,,745,,,,,,,,,,,",",,771,,,,99,87,90,91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89","103,104,,,758,759,,115,114,116,770,,,,773,,,,,,101,102,,,355,,,,,,,",",,,,,,,,,,,,772,,,743,,,,741,,,742,,745,,,,,,,,,,,,,,771,,,,99,87,90","91,,92,94,93,95,,,,,88,98,237,,,,,,82,,89,103,104,,,758,759,182,193","183,206,179,199,189,188,209,210,204,187,186,181,207,211,212,191,180","194,198,200,192,185,,,,201,208,203,291,290,292,289,178,197,196,,,,,","177,184,175,176,286,287,288,284,137,107,106,285,,109,,,,,,166,167,,163","145,146,147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,296,,,,,,",",160,159,,144,165,162,161,170,157,158,152,150,142,164,143,,,171,111","110,112,113,,,488,,485,484,483,493,486,,,,115,114,116,770,,496,,773",",,,,,101,102,,,355,,,,,,,,,,491,,,,,,,,,,772,504,503,743,,,497,741,",",742,,,,,,,,,,,,,,,,771,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,482,",",,,82,,89,103,104,,,758,759,182,193,183,206,179,199,189,188,209,210","204,187,186,181,207,211,212,191,180,194,198,200,192,185,,,,201,208,203","202,195,205,190,178,197,196,,,,,,177,184,175,176,172,173,174,135,137",",,136,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169","155,156,,,,,,,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142","164,143,,,171,111,110,112,113,,,,,,,,,,,,,115,114,116,770,,,,773,750",",,,,101,102,,,355,496,,,,,,,,,,,,,,,,,,,772,,,743,,,,741,,,742,,745",",,,,,,497,,,,,,,771,,,,99,751,90,91,,92,94,93,95,,,,,88,98,111,110,112","113,,,82,,89,103,104,,,758,759,,115,114,116,770,,,,773,750,,,,,101,102",",,355,496,,,,,,,,,,,,,,,,,,,772,,,743,,,,741,,,742,,745,,,,,,,497,,",",,,,771,,,,99,751,90,91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82",",89,103,104,,,758,759,,115,114,116,770,,,,773,,,,,,101,102,,,355,,,",",,,,,,,,,,,,,,,,772,,,743,,,,741,,,742,,,,,,,,,,,,,,,,771,,,,99,87,90","91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,758,759",",115,114,116,770,,,,773,,,,,,101,102,,,355,,,,,,,,,,,,,,,,,,,,772,,","743,,,,741,,,742,,,,,,,,,,,,,,,,771,,,,99,87,90,91,,92,94,93,95,,,,","88,98,111,110,112,113,,,82,,89,103,104,,,758,759,,115,114,116,770,,",",773,,,,,,101,102,,,355,,,,,,,,111,110,112,113,,,,,,,,,772,,,743,115","114,116,741,,,742,,745,,,,,101,102,,,355,,,,,771,,,,99,87,90,91,,92","94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,758,759,,,,,,,,,,,,99,87,90","91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,,,,115","114,116,,,,,,,,,,,101,102,,,355,111,110,112,113,,,,,,,,,,,,,115,114","116,,,,,,,,,,,101,102,,,355,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,,,,82,,89,103,104,,,,,,,,,99,87,90,91,,92,94,93,95,,,,","88,98,111,110,112,113,,,82,,89,103,104,,,,,,115,114,116,488,,485,484","483,493,486,,,,101,102,,,355,496,,,,,,,,,,,488,,485,484,483,493,486",",,,,491,,,,496,,,,,501,500,504,503,,,,497,,,,,,,,,,491,99,87,90,91,","92,94,93,95,,504,503,,88,98,497,,,,,,82,,89,103,104,,,488,482,485,484","483,493,486,,488,,485,484,483,493,486,496,,,,,,,,496,,,488,482,485,484","483,493,486,,,,,491,,,,496,,,,491,501,500,504,503,,,,497,501,500,504","503,,,,497,488,491,485,484,483,493,486,,,,,,504,503,,496,,497,488,,485","484,483,493,486,,,,,,,482,,496,,,,491,,482,,,,,,,,,504,503,,,,497,,491",",482,,,,,,,501,500,504,503,,,,497,,,,,,,,,,,,1211,466,,,1210,,,,,,482",",166,167,,163,145,146,147,154,151,153,,,148,149,,,482,168,169,155,156",",,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142,164","143,553,459,171,,554,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148","149,,,,168,169,155,156,,,,,,,,,,,,,,160,159,,144,165,162,161,170,157","158,152,150,142,164,143,462,466,171,,461,,,,,,,,166,167,,163,145,146","147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159",",144,165,162,161,170,157,158,152,150,142,164,143,1195,466,171,,1196",",,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169,155","156,,,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142","164,143,725,466,171,,726,,,,,,,,166,167,,163,145,146,147,154,151,153",",,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159,,144,165,162,161","170,157,158,152,150,142,164,143,1193,459,171,,1194,,,,,,,,166,167,,163","145,146,147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,",",160,159,,144,165,162,161,170,157,158,152,150,142,164,143,867,466,171",",866,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169","155,156,,,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150","142,164,143,723,459,171,,724,,,,,,,,166,167,,163,145,146,147,154,151","153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159,,144,165,162","161,170,157,158,152,150,142,164,143,455,459,171,,456,,,,,,,,166,167",",163,145,146,147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,303,",",,,,,,160,159,,144,165,162,161,170,157,158,152,150,142,164,143,803,459","171,,804,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168","169,155,156,,,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152","150,142,164,143,806,466,171,,807,,,,,,,,166,167,,163,145,146,147,154","151,153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159,,144,165","162,161,170,157,158,152,150,142,164,143,832,459,171,,833,,,,,,,,166","167,,163,145,146,147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,303",",,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142,164,143,864","459,171,,865,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,",",,168,169,155,156,,,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158","152,150,142,164,143,834,466,171,,835,,,,,,,,166,167,,163,145,146,147","154,151,153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159,,144","165,162,161,170,157,158,152,150,142,164,143,553,459,171,,554,,,,,,,","166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169,155,156,,",",,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142,164,143","837,466,171,,838,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149",",,,168,169,155,156,,,,,,303,,,,,,,,160,159,,144,165,162,161,170,157","158,152,150,142,164,143,723,459,171,,724,,,,,,,,166,167,,163,145,146","147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159",",144,165,162,161,170,157,158,152,150,142,164,143,725,466,171,,726,,",",,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169,155,156",",,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142,164","143,,,171"],racc_action_table=arr=$$$("Array").$new(28951,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),clist=["461,348,1010,845,518,390,389,461,461,461,512,512,781,461,461,731,461","1052,926,833,835,1080,921,986,461,1082,414,622,413,1229,440,628,832","498,752,622,461,461,830,461,461,461,461,461,1097,1098,1101,381,382,393","740,498,752,990,23,740,1083,1083,990,740,1052,731,921,518,926,348,461","461,461,461,461,461,461,461,461,461,461,461,461,461,550,550,461,461","461,835,461,461,348,440,461,1158,414,461,413,23,638,638,461,781,461","3,461,461,512,461,461,461,461,461,105,461,845,461,390,389,619,105,105","105,1010,1193,105,105,105,1010,105,461,833,835,461,461,986,461,105,461","105,105,105,1080,628,832,461,1082,1080,461,105,105,1082,105,105,105","105,105,1194,1195,830,1215,393,830,973,830,1097,1098,1101,381,382,1097","1098,1101,381,382,1047,69,550,9,105,105,105,105,105,105,105,105,105","105,105,105,105,105,638,922,105,105,105,638,105,105,817,12,105,817,386","105,105,806,105,386,105,1158,105,19,105,105,1158,105,105,105,105,105","619,105,108,105,240,619,973,922,241,108,108,108,1195,1196,108,108,108","105,108,1193,105,105,105,105,1193,105,108,105,108,108,108,20,105,14","1047,105,834,803,108,108,69,108,108,108,108,108,973,19,15,973,806,806","1194,1195,804,1215,17,1194,1195,243,1215,973,1085,240,1085,813,813,241","108,108,108,108,108,108,108,108,108,108,108,108,108,108,742,27,108,108","108,20,108,108,1196,806,108,1000,806,108,108,1120,108,742,108,834,108","803,108,108,806,108,108,108,108,108,31,108,726,108,355,355,243,42,804","726,726,726,48,48,726,726,726,108,726,1196,108,108,108,108,1196,108","726,108,726,726,726,803,108,834,803,108,697,697,726,726,1000,726,726","726,726,726,803,813,804,1120,1120,804,655,284,925,573,249,1213,925,941","284,399,45,804,31,399,1120,1213,726,726,726,726,726,726,726,726,726","726,726,726,726,726,355,355,726,726,726,31,726,726,48,48,726,723,409","726,726,653,726,292,726,53,726,213,726,726,292,726,726,726,726,726,249","726,724,726,655,655,284,573,573,573,415,941,941,941,655,408,226,726","410,917,726,726,726,726,573,726,412,726,941,725,455,248,726,228,865","726,725,725,725,232,723,725,725,725,391,725,409,409,409,653,653,391","292,725,725,725,725,725,864,653,391,724,16,16,242,725,725,456,725,725","725,725,725,244,415,415,415,455,917,408,408,408,410,410,410,411,44,248","245,455,412,412,412,865,251,725,725,725,725,725,725,725,725,725,725","725,725,725,725,391,939,725,725,725,456,725,725,864,798,725,939,287","725,725,302,725,456,725,287,725,798,725,725,44,725,725,725,725,725,866","725,725,725,1183,1183,44,866,866,866,411,411,411,866,866,377,866,725","377,939,725,725,725,725,866,725,283,725,316,5,317,939,725,283,5,725","866,866,320,866,866,866,866,866,818,818,332,287,231,1180,231,231,231","231,231,134,1180,285,772,333,134,134,772,231,285,1180,866,866,866,866","866,866,866,866,866,866,866,866,866,866,335,286,866,866,866,231,866","866,286,336,866,283,29,866,231,231,231,231,866,29,866,231,866,866,337","866,866,866,866,866,328,866,462,866,1180,328,343,85,506,462,462,462","285,506,346,462,462,866,462,85,866,866,347,866,349,866,462,462,350,85","373,231,866,373,374,866,286,374,462,462,354,462,462,462,462,462,1150","29,356,1150,641,1099,641,641,641,641,641,288,1099,359,755,755,380,380","288,641,363,1099,462,462,462,462,462,462,462,462,462,462,462,462,462","462,365,43,462,462,462,641,462,462,371,375,462,21,289,462,641,641,641","641,462,289,462,641,462,462,359,462,462,462,462,462,376,462,462,462","1099,675,359,378,387,966,288,966,966,966,966,966,388,462,43,290,462","462,398,462,966,462,290,291,21,867,43,641,462,392,291,462,867,867,867","694,21,394,867,867,403,867,966,289,423,694,429,431,675,867,867,966,966","966,966,432,439,434,966,437,675,867,867,439,867,867,867,867,867,441","398,451,439,453,401,454,463,398,694,694,290,401,398,694,966,469,398","470,291,473,401,867,867,867,867,867,867,867,867,867,867,867,867,867","867,398,474,867,867,867,475,867,867,54,478,867,479,480,867,490,54,439","502,867,505,867,508,867,867,54,867,867,867,867,867,398,867,867,867,401","514,340,522,523,530,531,342,341,340,933,532,533,867,342,341,867,867","340,867,933,867,631,342,341,558,559,560,867,631,564,867,215,215,215","215,215,215,631,54,580,215,215,581,584,586,215,837,215,215,215,215,215","215,215,591,595,604,933,605,215,215,215,215,215,215,215,340,606,215","933,616,342,341,620,215,215,215,215,215,215,215,215,215,215,215,215","631,215,215,215,18,215,215,215,215,215,590,18,837,621,360,51,51,590","623,837,18,360,650,658,837,660,590,667,837,215,360,676,215,681,686,215","215,344,688,215,690,215,708,709,344,215,711,837,718,529,727,51,51,344","215,736,744,745,746,215,215,215,215,775,215,215,215,215,778,18,780,786","215,215,787,590,788,837,790,360,215,529,215,215,215,529,529,215,215","836,836,836,836,836,836,792,800,802,836,836,805,808,344,836,397,836","836,836,836,836,836,836,578,578,578,578,578,836,836,836,836,836,836","836,809,907,836,907,907,907,812,907,836,836,836,836,836,836,836,836","836,836,836,836,820,836,836,836,239,836,836,836,836,836,838,239,397","826,1138,827,831,838,907,397,239,1138,838,840,397,844,838,907,397,836","1138,846,836,861,863,836,836,807,872,836,885,836,888,889,807,836,892","397,894,807,897,646,646,807,836,646,646,646,898,836,836,836,836,900","836,836,836,836,901,239,903,906,836,836,919,838,927,397,928,1138,836","932,836,836,836,935,940,836,836,233,233,233,233,233,233,959,962,963","233,233,972,977,807,233,980,233,233,233,233,233,233,233,25,987,989,996","997,233,233,233,233,233,233,233,998,710,233,710,710,710,999,710,233","233,233,233,233,233,233,233,233,233,233,233,1025,233,233,233,1026,233","233,233,233,233,25,25,25,25,25,25,25,25,25,25,25,1031,25,25,1036,1037","25,25,1038,233,1039,25,233,1125,1040,233,233,1041,1045,233,1046,233","25,1125,25,233,25,25,1049,25,25,25,25,25,233,25,1053,1060,1065,233,233","233,233,1066,233,233,233,233,1068,1069,1070,1072,233,233,1073,25,1125","1125,1074,1089,233,1125,233,233,233,1100,1103,233,233,991,991,991,991","991,991,1104,1105,1106,991,991,1117,1136,1139,991,1148,991,991,991,991","991,991,991,8,8,8,8,8,991,991,991,991,991,991,991,1149,1154,991,1164","1165,1167,1170,444,991,991,991,991,991,991,991,991,991,991,991,991,1173","991,991,991,1174,991,991,991,991,991,444,444,444,444,444,444,444,444","444,444,444,1175,444,444,1176,1178,444,444,1192,991,1197,771,991,771","771,991,991,771,1199,991,1210,991,444,1211,444,991,444,444,1217,444","444,444,444,444,991,444,1218,1219,1220,991,991,991,991,1,991,991,991","991,771,,,,991,991,,444,,444,,,991,,991,991,991,,,991,991,1096,1096","1096,1096,1096,1096,,,,1096,1096,,,,1096,,1096,1096,1096,1096,1096,1096","1096,331,331,331,331,331,1096,1096,1096,1096,1096,1096,1096,,,1096,",",,,689,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,","1096,1096,1096,,1096,1096,1096,1096,1096,689,689,689,689,689,689,689","689,689,689,689,,689,689,,,689,689,,1096,,,1096,,,1096,1096,,,1096,","1096,689,,689,1096,689,689,,689,689,689,689,689,1096,689,,,,1096,1096","1096,1096,,1096,1096,1096,1096,,,,,1096,1096,,689,,,,,1096,,1096,1096","1096,,,1096,1096,2,2,2,2,2,2,,,,2,2,,,,2,,2,2,2,2,2,2,2,370,370,370","370,370,2,2,2,2,2,2,2,,,2,,,,,450,2,2,2,2,2,2,2,2,2,2,2,2,,2,2,2,,2","2,2,2,2,450,450,450,450,450,450,450,450,450,450,450,,450,450,,,450,450",",2,,,2,,,2,2,,,2,,2,450,,450,2,450,450,,450,450,450,450,450,2,450,,",",2,2,2,2,,2,2,2,2,,,,,2,2,,450,,,,,2,,2,2,2,,,2,2,639,639,639,639,639","639,,,,639,639,,,,639,,639,639,639,639,639,639,639,,,,,,639,639,639","639,639,639,639,,,639,,,,,719,639,639,639,639,639,639,639,639,639,639","639,639,,639,639,639,,639,639,639,639,639,719,719,719,719,719,719,719","719,719,719,719,,719,719,,,719,719,,639,,,639,,,639,639,,,639,,639,719",",719,639,719,719,,719,719,719,719,719,639,719,,,,639,639,639,639,,639","639,639,639,,,,,639,639,,719,,,,,639,,639,639,639,,,639,639,1062,1062","1062,1062,1062,1062,,,,1062,1062,,,,1062,,1062,1062,1062,1062,1062,1062","1062,,,,,,1062,1062,1062,1062,1062,1062,1062,,1190,1062,1190,1190,1190",",1190,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,,1062","1062,1062,,1062,1062,1062,1062,1062,869,869,869,869,869,869,869,869","869,869,869,,869,869,,,869,869,,1062,,,1062,,,1062,1062,,,1062,,1062","869,,869,1062,869,869,,869,869,869,869,869,1062,869,,,,1062,1062,1062","1062,,1062,1062,1062,1062,,,,,1062,1062,,869,,,,,1062,,1062,1062,1062",",,1062,1062,967,967,967,967,967,967,,,,967,967,,,,967,,967,967,967,967","967,967,967,,,,,,967,967,967,967,967,967,967,,1092,967,1092,1092,1092",",1092,967,967,967,967,967,967,967,967,967,967,967,967,,967,967,967,","967,967,967,967,967,314,314,314,314,314,314,314,314,314,314,314,,314","314,,,314,314,,967,,,967,,,967,967,,,967,,967,314,,314,967,314,314,","314,314,314,314,314,967,314,,,,967,967,967,967,,967,967,967,967,,,,","967,967,,314,,,,,967,,967,967,967,,,967,967,369,369,369,369,369,369",",,,369,369,,,,369,,369,369,369,369,369,369,369,,,,,,369,369,369,369","369,369,369,,,369,,,,,,369,369,369,369,369,369,369,369,369,369,369,369",",369,369,369,,369,369,369,369,369,547,547,547,547,547,547,547,547,547","547,547,,547,547,,,547,547,,369,,,369,,,369,369,,,369,,369,547,,547","369,547,547,,547,547,547,547,547,369,547,,,,369,369,369,369,,369,369","369,369,,,,,369,369,547,547,,,,,369,,369,369,369,,,369,369,250,250,250","250,250,250,,,,250,250,,,,250,,250,250,250,250,250,250,250,,,,,,250","250,250,250,250,250,250,,,250,,,,,,250,250,250,250,250,250,250,250,250","250,250,250,,250,250,250,,250,250,250,250,250,1061,1061,1061,1061,1061","1061,1061,1061,1061,1061,1061,,1061,1061,,,1061,1061,,250,,,250,,,250","250,,,250,,250,1061,,1061,250,1061,1061,,1061,1061,1061,1061,1061,250","1061,,,,250,250,250,250,,250,250,250,250,,,,,250,250,,1061,,,,,250,","250,250,250,,,250,250,852,852,852,852,852,852,,,,852,852,,,,852,,852","852,852,852,852,852,852,,,,,,852,852,852,852,852,852,852,,,852,,,,,","852,852,852,852,852,852,852,852,852,852,852,852,,852,852,852,,852,852","852,852,852,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,","1005,1005,,,1005,1005,,852,,,852,,,852,852,,,852,,852,1005,,1005,852","1005,1005,,1005,1005,1005,1005,1005,852,1005,,,,852,852,852,852,,852","852,852,852,,,,,852,852,,1005,,,,,852,,852,852,852,,,852,852,227,227","227,227,227,227,,,,227,227,,,,227,,227,227,227,227,227,227,227,,,,,","227,227,227,227,227,227,227,,,227,,,,,,227,227,227,227,227,227,227,227","227,227,227,227,,227,227,227,,227,227,227,227,227,602,602,602,602,602","602,602,602,602,602,602,,602,602,,,602,602,,227,,,227,,,227,227,,,227",",227,602,,602,227,602,602,,602,602,602,602,602,227,602,,,,227,227,227","227,,227,227,227,227,,,,,227,227,,602,,,,,227,,227,227,227,,,227,227","841,841,841,841,841,841,,,,841,841,,,,841,,841,841,841,841,841,841,841",",,,,,841,841,841,841,841,841,841,,,841,,,,,,841,841,841,841,841,841","841,841,841,841,841,841,,841,841,841,,841,841,841,841,841,1028,1028","1028,1028,1028,1028,1028,1028,1028,1028,1028,,1028,1028,,,1028,1028",",841,,,841,,,841,841,,,841,,841,1028,,1028,841,1028,1028,,1028,1028","1028,1028,1028,841,1028,,,,841,841,841,841,,841,841,841,841,,,,,841","841,,1028,,,,,841,,841,841,841,,,841,841,1007,1007,1007,1007,1007,1007",",,,1007,1007,,,,1007,,1007,1007,1007,1007,1007,1007,1007,,,,,,1007,1007","1007,1007,1007,1007,1007,,,1007,,,,,,1007,1007,1007,1007,1007,1007,1007","1007,1007,1007,1007,1007,,1007,1007,1007,,1007,1007,1007,1007,1007,1027","1027,1027,1027,1027,1027,1027,1027,1027,1027,1027,,1027,1027,,,1027","1027,,1007,,,1007,,,1007,1007,,,1007,,1007,1027,,1027,1007,1027,1027",",1027,1027,1027,1027,1027,1007,1027,,,,1007,1007,1007,1007,,1007,1007","1007,1007,,,,,1007,1007,,1027,,,,,1007,,1007,1007,1007,,,1007,1007,1091","1091,1091,1091,1091,1091,,,,1091,1091,,,,1091,,1091,1091,1091,1091,1091","1091,1091,,,,,,1091,1091,1091,1091,1091,1091,1091,,,1091,,,,,,1091,1091","1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,,1091,1091,1091,,1091","1091,1091,1091,1091,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004","1004,,1004,1004,,,1004,1004,,1091,,,1091,,,1091,1091,,,1091,,1091,1004",",1004,1091,1004,1004,,1004,1004,1004,1004,1004,1091,1004,,,,1091,1091","1091,1091,,1091,1091,1091,1091,,,,,1091,1091,,1004,,,,,1091,,1091,1091","1091,,,1091,1091,1140,1140,1140,1140,1140,1140,,,,1140,1140,,,,1140",",1140,1140,1140,1140,1140,1140,1140,,,,,,1140,1140,1140,1140,1140,1140","1140,,491,1140,491,491,491,,491,1140,1140,1140,1140,1140,1140,1140,1140","1140,1140,1140,1140,,1140,1140,1140,,1140,1140,1140,1140,1140,706,,706","706,706,,706,,491,,1107,,1107,1107,1107,,1107,491,,1140,,,1140,,,1140","1140,,544,1140,,1140,,,,1140,,706,,528,,,,,1140,,706,1107,,1140,1140","1140,1140,,1140,1140,1140,1140,,,544,,1140,1140,544,544,,544,544,,1140","528,1140,1140,1140,528,528,1140,1140,618,618,618,618,618,618,,,,618","618,,,,618,,618,618,618,618,618,618,618,,,,,,618,618,618,618,618,618","618,,1108,618,1108,1108,1108,,1108,618,618,618,618,618,618,618,618,618","618,618,618,,618,618,618,,618,618,618,618,618,546,546,546,546,546,546","546,546,1108,546,546,,,,,,546,546,,618,,,618,,,618,618,,543,618,,618","546,,546,618,546,546,,546,546,546,546,546,618,546,,,,618,618,618,618",",618,618,618,618,,,543,,618,618,543,543,,543,543,,618,,618,618,618,",",618,618,615,615,615,615,615,615,,,,615,615,,,,615,,615,615,615,615","615,615,615,,,,,,615,615,615,615,615,615,615,,908,615,908,908,908,,908","615,615,615,615,615,615,615,615,615,615,615,615,,615,615,615,,615,615","615,615,615,601,,,,,,,,908,,,,,,,,601,601,,615,,,615,,,615,615,,,615",",615,601,,601,615,601,601,,601,601,,,601,615,601,,,,615,615,615,615",",615,615,615,615,,,,,615,615,,,,,,,615,,615,615,615,,,615,615,887,887","887,887,887,887,,,,887,887,,,,887,,887,887,887,887,887,887,887,,,,,","887,887,887,887,887,887,887,,,887,,,,,,887,887,887,887,887,887,887,887","887,887,887,887,,887,887,887,,887,887,887,887,887,545,545,545,545,545","545,545,,,545,545,,,,,,545,545,,887,,,887,,,887,887,,,887,,887,545,","545,887,545,545,,545,545,545,545,545,887,545,,,,887,887,887,887,,887","887,887,887,,,,,887,887,,,,,,,887,,887,887,887,,,887,887,339,339,339","339,339,339,,,,339,339,,,,339,,339,339,339,339,339,339,339,,,,,,339","339,339,339,339,339,339,,,339,,,,,,339,339,339,339,339,339,339,339,339","339,339,339,,339,339,339,,339,339,339,339,339,526,526,526,526,526,526","526,526,526,526,526,,526,526,,,526,526,,339,,,339,,,339,339,,,339,,339","526,,526,339,526,526,,526,526,526,526,526,339,526,,,,339,339,339,339",",339,339,339,339,,,,,339,339,,,,,,,339,,339,339,339,,,339,339,1090,1090","1090,1090,1090,1090,,,,1090,1090,,,,1090,,1090,1090,1090,1090,1090,1090","1090,,,,,,1090,1090,1090,1090,1090,1090,1090,,,1090,,,,,,1090,1090,1090","1090,1090,1090,1090,1090,1090,1090,1090,1090,,1090,1090,1090,,1090,1090","1090,1090,1090,542,542,542,542,542,542,542,,,542,542,,,,,,542,542,,1090",",,1090,,,1090,1090,,,1090,,1090,542,,542,1090,542,542,,542,542,542,542","542,1090,542,,,,1090,1090,1090,1090,,1090,1090,1090,1090,,,,,1090,1090",",,,,,,1090,,1090,1090,1090,,,1090,1090,38,38,38,38,38,38,,,,38,38,,",",38,,38,38,38,38,38,38,38,,,,,,38,38,38,38,38,38,38,,,38,,,,,,38,38","38,38,38,38,38,38,38,38,38,38,,38,38,38,,38,38,38,38,38,541,541,541","541,541,541,541,,,541,541,,,,,,541,541,,38,,,38,,,38,38,,,38,,38,541",",541,38,541,541,,541,541,541,541,541,38,541,,,,38,38,38,38,,38,38,38","38,,,,,38,38,,,,,,,38,,38,38,38,,,38,38,985,985,985,985,985,985,,,,985","985,,,,985,,985,985,985,985,985,985,985,,,,,,985,985,985,985,985,985","985,,,985,,,,,,985,985,985,985,985,985,985,985,985,985,985,985,,985","985,985,,985,985,985,985,985,540,540,540,540,540,540,540,,,540,540,",",,,,540,540,,985,,,985,,,985,985,,,985,,985,540,,540,985,540,540,,540","540,540,540,540,985,540,,,,985,985,985,985,,985,985,985,985,,,,,985","985,,,,,,,985,,985,985,985,,,985,985,1184,1184,1184,1184,1184,1184,",",,1184,1184,,,,1184,,1184,1184,1184,1184,1184,1184,1184,,,,,,1184,1184","1184,1184,1184,1184,1184,,,1184,,,,,,1184,1184,1184,1184,1184,1184,1184","1184,1184,1184,1184,1184,,1184,1184,1184,,1184,1184,1184,1184,1184,361","361,361,361,361,361,361,361,361,361,361,,361,361,,,361,361,,1184,,,1184",",,1184,1184,,,1184,,1184,361,,361,1184,361,361,,361,361,361,361,361","1184,361,,,,1184,1184,1184,1184,,1184,1184,1184,1184,,,,,1184,1184,",",,,,,1184,,1184,1184,1184,,,1184,1184,385,385,385,385,385,385,,,,385","385,,,,385,,385,385,385,385,385,385,385,,,,,,385,385,385,385,385,385","385,,,385,,,,,,385,385,385,385,385,385,385,385,385,385,385,385,,385","385,385,,385,385,385,385,385,539,539,539,539,539,539,539,,,539,539,",",,,,539,539,,385,,,385,,,385,385,,,385,,385,539,,539,385,539,539,,539","539,539,539,539,385,539,,,,385,385,385,385,,385,385,385,385,,,,,385","385,,,,,,,385,,385,385,385,,,385,385,384,384,384,384,384,384,,,,384","384,,,,384,,384,384,384,384,384,384,384,,,,,,384,384,384,384,384,384","384,,,384,,,,,,384,384,384,384,384,384,384,384,384,384,384,384,,384","384,384,,384,384,384,384,384,538,538,538,538,538,538,538,,,538,538,",",,,,538,538,,384,,,384,,,384,384,,,384,,384,538,,538,384,538,538,,538","538,538,538,538,384,538,,,,384,384,384,384,,384,384,384,384,,,,,384","384,,,,,,,384,,384,384,384,,,384,384,132,132,132,132,132,132,,,,132","132,,,,132,,132,132,132,132,132,132,132,,,,,,132,132,132,132,132,132","132,,,132,,,,,,132,132,132,132,132,132,132,132,132,132,132,132,,132","132,132,,132,132,132,132,132,527,527,527,527,527,527,527,527,527,527","527,,527,527,,,527,527,,132,,,132,,,132,132,,,132,,132,527,,527,132","527,527,,527,527,527,527,527,132,527,,,,132,132,132,132,,132,132,132","132,,,,,132,132,,,,,,,132,,132,132,132,,,132,132,334,334,334,334,334","334,,,,334,334,,,,334,,334,334,334,334,334,334,334,,,,,,334,334,334","334,334,334,334,,,334,,,,,,334,334,334,334,334,334,334,334,334,334,334","334,,334,334,334,,334,334,334,334,334,548,,,,,,,,,,,,,,,,548,548,,334",",,334,,,334,334,,,334,,334,548,,548,334,548,548,,548,548,,,548,334,548",",,,334,334,334,334,,334,334,334,334,,,,,334,334,,,,914,914,914,334,914","334,334,334,914,914,334,334,,914,,914,914,914,914,914,914,914,,,,,,914","914,914,914,914,914,914,,,914,,,,,,,914,,,914,914,914,914,914,914,914","914,,914,914,914,,914,914,914,914,914,537,537,537,537,537,537,537,,","537,537,,,,,,537,537,,914,,,914,,,914,914,,,914,,,537,,537,914,537,537",",537,537,537,537,537,914,537,,,,914,914,914,914,,914,914,914,914,,,",",914,914,,,,915,915,915,914,915,914,914,914,915,915,914,914,,915,,915","915,915,915,915,915,915,,,,,,915,915,915,915,915,915,915,,,915,,,,,",",915,,,915,915,915,915,915,915,915,915,,915,915,915,,915,915,915,915","915,362,362,362,362,362,362,362,362,362,362,362,,362,362,,,362,362,","915,,,915,,,915,915,,,915,,,362,,362,915,362,362,,362,362,362,362,362","915,362,,,,915,915,915,915,,915,915,915,915,,,,,915,915,,,,916,916,916","915,916,915,915,915,916,916,915,915,,916,,916,916,916,916,916,916,916",",,,,,916,916,916,916,916,916,916,,,916,,,,,,,916,,,916,916,916,916,916","916,916,916,,916,916,916,,916,916,916,916,916,534,,,,,,,,,,,,,,,,534","534,,916,,,916,,,916,916,,,916,,,534,,534,916,534,534,,534,534,,,,916",",,,,916,916,916,916,,916,916,916,916,,,,,916,916,,,,261,261,261,916","261,916,916,916,261,261,916,916,,261,,261,261,261,261,261,261,261,,",",,,261,261,261,261,261,261,261,,,261,,,,,,,261,,,261,261,261,261,261","261,261,261,,261,261,261,,261,261,261,261,261,535,,,,,,,,,,,,,,,,535","535,,261,,,261,,,261,261,,,261,,,535,,535,261,535,535,,535,535,,,,261",",,,,261,261,261,261,,261,261,261,261,,,,,261,261,,,,729,729,729,261","729,261,261,261,729,729,261,261,,729,,729,729,729,729,729,729,729,,",",,,729,729,729,729,729,729,729,,,729,,,,,,,729,,,729,729,729,729,729","729,729,729,,729,729,729,,729,729,729,729,729,536,,,,,,,,,,,,,,,,536","536,,729,,,729,,,729,729,,,729,,,536,,,729,536,536,,536,536,,,,729,",",,,729,729,729,729,,729,729,729,729,,,,,729,729,,,,325,325,325,729,325","729,729,729,325,325,729,729,,325,,325,325,325,325,325,325,325,,,,,,325","325,325,325,325,325,325,,,325,,,,,,,325,,,325,325,325,325,325,325,325","325,,325,325,325,,325,325,325,325,325,,,,,,,,,,,,,,,,,,,,325,,,325,",",325,325,,,325,,,,,,325,,,,,,,,,325,,,,,325,325,325,325,,325,325,325","325,,,,,325,325,,,,728,728,728,325,728,325,325,325,728,728,325,325,","728,,728,728,728,728,728,728,728,,,,,,728,728,728,728,728,728,728,,","728,,,,,,,728,,,728,728,728,728,728,728,728,728,,728,728,728,,728,728","728,728,728,,,,,,,,,,,,,,,,,,,,728,,,728,,,728,728,,,728,,,,,,728,,",",,,,,,728,,,,,728,728,728,728,,728,728,728,728,,,,,728,728,,,,260,260","260,728,260,728,728,728,260,260,728,728,,260,,260,260,260,260,260,260","260,,,,,,260,260,260,260,260,260,260,,,260,,,,,,,260,,,260,260,260,260","260,260,260,260,,260,260,260,,260,260,260,260,260,,,,,,,,,,,,,,,,,,",",260,,,260,,,260,260,,,260,,,,,,260,,,,,,,,,260,,,,,260,260,260,260",",260,260,260,260,,,,,260,260,,,,259,259,259,260,259,260,260,260,259","259,260,260,,259,,259,259,259,259,259,259,259,,,,,,259,259,259,259,259","259,259,,,259,,,,,,,259,,,259,259,259,259,259,259,259,259,,259,259,259",",259,259,259,259,259,,,,,,,,,,,,,,,,,,,,259,,,259,,,259,259,,,259,,",",,,259,,,,,,,,,259,,,,,259,259,259,259,,259,259,259,259,,,,,259,259",",,,258,258,258,259,258,259,259,259,258,258,259,259,,258,,258,258,258","258,258,258,258,,,,,,258,258,258,258,258,258,258,,,258,,,,,,,258,,,258","258,258,258,258,258,258,258,,258,258,258,,258,258,258,258,258,,,,,,",",,,,,,,,,,,,,258,,,258,,,258,258,,,258,,,,,,258,,,,,,,,,258,,,,,258","258,258,258,,258,258,258,258,,,,,258,258,,,,257,257,257,258,257,258","258,258,257,257,258,258,,257,,257,257,257,257,257,257,257,,,,,,257,257","257,257,257,257,257,,,257,,,,,,,257,,,257,257,257,257,257,257,257,257",",257,257,257,,257,257,257,257,257,,,,,,,,,,,,,,,,,,,,257,,,257,,,257","257,,,257,,,,,,257,,,,,,,,,257,,,,,257,257,257,257,,257,257,257,257",",,,,257,257,,,,256,256,256,257,256,257,257,257,256,256,257,257,,256",",256,256,256,256,256,256,256,,,,,,256,256,256,256,256,256,256,,,256",",,,,,,256,,,256,256,256,256,256,256,256,256,,256,256,256,,256,256,256","256,256,,,,,,,,,,,,,,,,,,,,256,,,256,,,256,256,,,256,,,,,,256,,,,,,",",,256,,,,,256,256,256,256,,256,256,256,256,,,,,256,256,,,,,,,256,,256","256,256,,,256,256,330,330,330,330,330,,,,330,330,,,,330,,330,330,330","330,330,330,330,,,,,,330,330,330,330,330,330,330,,,330,,,,,,330,330",",330,330,330,330,330,330,330,330,330,,330,330,330,,330,330,330,330,330",",,,,,,,,,,,,,,,,,,,330,,,330,,,330,330,,,330,,330,,,,330,,,,,,,,,330",",,,,330,330,330,330,,330,330,330,330,,,,,330,330,,,,704,704,704,330","704,330,330,330,704,704,330,330,,704,,704,704,704,704,704,704,704,,",",,,704,704,704,704,704,704,704,,,704,,,,,,,704,,,704,704,704,704,704","704,704,704,,704,704,704,,704,704,704,704,704,,,,,,,,,,,,,,,,,,,,704",",,704,,,704,704,,,704,,,,,,704,,,,,,,,,704,,,,,704,704,704,704,,704","704,704,704,,,,,704,704,,,,691,691,691,704,691,704,704,704,691,691,704","704,,691,,691,691,691,691,691,691,691,,,,,,691,691,691,691,691,691,691",",,691,,,,,,,691,,,691,691,691,691,691,691,691,691,,691,691,691,,691","691,691,691,691,,,,,,,,,,,,,,,,,,,,691,,,691,,,691,691,,,691,,691,,",",691,,,,,,,,,691,,,,,691,691,691,691,,691,691,691,691,,,,,691,691,,",",255,255,255,691,255,691,691,691,255,255,691,691,,255,,255,255,255,255","255,255,255,,,,,,255,255,255,255,255,255,255,,,255,,,,,,,255,,,255,255","255,255,255,255,255,255,,255,255,255,,255,255,255,255,255,,,,,,,,,,",",,,,,,,,,255,,,255,,,255,255,,,255,,,,,,255,,,,,,,,,255,,,,,255,255","255,255,,255,255,255,255,,,,,255,255,,,,254,254,254,255,254,255,255","255,254,254,255,255,,254,,254,254,254,254,254,254,254,,,,,,254,254,254","254,254,254,254,,,254,,,,,,,254,,,254,254,254,254,254,254,254,254,,254","254,254,,254,254,254,254,254,,,,,,,,,,,,,,,,,,,,254,,,254,,,254,254",",,254,,,,,,254,,,,,,,,,254,,,,,254,254,254,254,,254,254,254,254,,,,","254,254,,,,685,685,685,254,685,254,254,254,685,685,254,254,,685,,685","685,685,685,685,685,685,,,,,,685,685,685,685,685,685,685,,,685,,,,,",",685,,,685,685,685,685,685,685,685,685,,685,685,685,,685,685,685,685","685,,,,,,,,,,,,,,,,,,,,685,,,685,,,685,685,,,685,,,,,,685,,,,,,,,,685",",,,,685,685,685,685,,685,685,685,685,,,,,685,685,,,,684,684,684,685","684,685,685,685,684,684,685,685,,684,,684,684,684,684,684,684,684,,",",,,684,684,684,684,684,684,684,,,684,,,,,,,684,,,684,684,684,684,684","684,684,684,,684,684,684,,684,684,684,684,684,,,,,,,,,,,,,,,,,,,,684",",,684,,,684,684,,,684,,,,,,684,,,,,,,,,684,,,,,684,684,684,684,,684","684,684,684,,,,,684,684,,,,680,680,680,684,680,684,684,684,680,680,684","684,,680,,680,680,680,680,680,680,680,,,,,,680,680,680,680,680,680,680",",,680,,,,,,,680,,,680,680,680,680,680,680,680,680,,680,680,680,,680","680,680,680,680,,,,,,,,,,,,,,,,,,,,680,,,680,,,680,680,,,680,,,,,,680",",,,,,,,,680,,,,,680,680,680,680,,680,680,680,680,,,,,680,680,,,,679","679,679,680,679,680,680,680,679,679,680,680,,679,,679,679,679,679,679","679,679,,,,,,679,679,679,679,679,679,679,,,679,,,,,,,679,,,679,679,679","679,679,679,679,679,,679,679,679,,679,679,679,679,679,,,,,,,,,,,,,,",",,,,,679,,,679,,,679,679,,,679,,,,,,679,,,,,,,,,679,,,,,679,679,679","679,,679,679,679,679,,,,,679,679,,,,678,678,678,679,678,679,679,679","678,678,679,679,,678,,678,678,678,678,678,678,678,,,,,,678,678,678,678","678,678,678,,,678,,,,,,,678,,,678,678,678,678,678,678,678,678,678,678","678,678,,678,678,678,678,678,,,,,,,,,,,,,,,,,,,,678,,,678,,,678,678",",,678,,,,678,,678,,,678,,,,,,678,,,,,678,678,678,678,,678,678,678,678",",,,,678,678,,,,677,677,677,678,677,678,678,678,677,677,678,678,,677",",677,677,677,677,677,677,677,,,,,,677,677,677,677,677,677,677,,,677",",,,,,,677,,,677,677,677,677,677,677,677,677,677,677,677,677,,677,677","677,677,677,,,,,,,,,,,,,,,,,,,,677,,,677,,,677,677,,,677,,677,,677,","677,,,677,,,,,,677,,,,,677,677,677,677,,677,677,677,677,,,,,677,677",",,,950,950,950,677,950,677,677,677,950,950,677,677,,950,,950,950,950","950,950,950,950,,,,,,950,950,950,950,950,950,950,,,950,,,,,,,950,,,950","950,950,950,950,950,950,950,,950,950,950,,950,950,950,950,950,,,,,,",",,,,,,,,,,,,,950,,,950,,,950,950,,,950,,,,,,950,,,,,,,,,950,,,,,950","950,950,950,,950,950,950,950,,,,,950,950,,,,956,956,956,950,956,950","950,950,956,956,950,950,,956,,956,956,956,956,956,956,956,,,,,,956,956","956,956,956,956,956,,,956,,,,,,,956,,,956,956,956,956,956,956,956,956",",956,956,956,,956,956,956,956,956,,,,,,,,,,,,,,,,,,,,956,,,956,,,956","956,,,956,,,,,,956,,,,,,,,,956,,,,,956,956,956,956,,956,956,956,956",",,,,956,956,,,,,,,956,,956,956,956,32,,956,956,,,,32,32,32,,,32,32,32",",32,,,,,,,,32,32,32,32,,,,,,,,,32,32,,32,32,32,32,32,,,,,,,,,,,,,,,",",,,,,,,32,32,32,32,32,32,32,32,32,32,32,32,32,32,,,32,32,32,,,32,,32","32,,,32,32,,32,,32,,32,,32,32,,32,32,32,32,32,33,32,32,32,,,,33,33,33",",,33,33,33,,33,32,,,32,32,,32,33,32,33,33,,,,,32,,,,33,33,,33,33,33","33,33,,,,,,,,,,,,,,,,,,,,,,,33,33,33,33,33,33,33,33,33,33,33,33,33,33",",,33,33,33,,,33,,33,33,,,33,33,,33,,33,,33,,33,33,,33,33,33,33,33,,33",",33,,,,,,,,,,,,,,33,,,33,33,,33,,33,674,674,674,,674,,33,,674,674,,",",674,,674,674,674,674,674,674,674,,,,,,674,674,674,674,674,674,674,",",674,,,,,,,674,,,674,674,674,674,674,674,674,674,,674,674,674,,674,674","674,674,674,,,,,,,,,,,,,,,,,,,,674,,,674,,,674,674,,,674,,,,,,674,,",",,,,,,674,,,,,674,674,674,674,,674,674,674,674,,,,,674,674,,,,34,34","34,674,34,674,674,674,34,34,674,674,,34,,34,34,34,34,34,34,34,,,,,,34","34,34,34,34,34,34,,,34,,,,,,,34,,,34,34,34,34,34,34,34,34,34,34,34,34",",34,34,34,34,34,,,,,,,,,,,,,,,,,,,,34,,,34,,,34,34,,,34,,34,,34,,34",",,34,,,,,,34,,,,,34,34,34,34,,34,34,34,34,,,,,34,34,,,,,,,34,,34,34","34,,,34,34,673,673,673,673,673,,,,673,673,,,,673,,673,673,673,673,673","673,673,,,,,,673,673,673,673,673,673,673,,,673,,,,,,673,673,,673,673","673,673,673,673,673,673,673,,673,673,673,,673,673,673,673,673,,,,,,",",,,,,,,,,,,,,673,,,673,,,673,673,,,673,,673,,,,673,,,,,,,,,673,,,,,673","673,673,673,,673,673,673,673,,,,,673,673,,,,979,979,979,673,979,673","673,673,979,979,673,673,,979,,979,979,979,979,979,979,979,,,,,,979,979","979,979,979,979,979,,,979,,,,,,,979,,,979,979,979,979,979,979,979,979",",979,979,979,,979,979,979,979,979,,,,,,,,,,,,,,,,,,,,979,,,979,,,979","979,,,979,,,,,,979,,,,,,,,,979,,,,,979,979,979,979,,979,979,979,979",",,,,979,979,,,,670,670,670,979,670,979,979,979,670,670,979,979,,670",",670,670,670,670,670,670,670,,,,,,670,670,670,670,670,670,670,,,670",",,,,,,670,,,670,670,670,670,670,670,670,670,670,670,670,670,,670,670","670,670,670,,,,,,,,,,,,,,,,,,,,670,,,670,,,670,670,,,670,,670,,670,","670,,,670,,,,,,670,,,,,670,670,670,670,,670,670,670,670,,,,,670,670",",,,984,984,984,670,984,670,670,670,984,984,670,670,,984,,984,984,984","984,984,984,984,,,,,,984,984,984,984,984,984,984,,,984,,,,,,,984,,,984","984,984,984,984,984,984,984,,984,984,984,,984,984,984,984,984,,,,,,",",,,,,,,,,,,,,984,,,984,,,984,984,,,984,,984,,,,984,,,,,,,,,984,,,,,984","984,984,984,,984,984,984,984,,,,,984,984,,,,669,669,669,984,669,984","984,984,669,669,984,984,,669,,669,669,669,669,669,669,669,,,,,,669,669","669,669,669,669,669,,,669,,,,,,,669,,,669,669,669,669,669,669,669,669",",669,669,669,,669,669,669,669,669,,,,,,,,,,,,,,,,,,,,669,,,669,,,669","669,,,669,,,,,,669,,,,,,,,,669,,,,,669,669,669,669,,669,669,669,669",",,,,669,669,,,,668,668,668,669,668,669,669,669,668,668,669,669,,668",",668,668,668,668,668,668,668,,,,,,668,668,668,668,668,668,668,,,668",",,,,,,668,,,668,668,668,668,668,668,668,668,,668,668,668,,668,668,668","668,668,,,,,,,,,,,,,,,,,,,,668,,,668,,,668,668,,,668,,668,,,,668,,,",",,,,,668,,,,,668,668,668,668,,668,668,668,668,,,,,668,668,,,,,,,668",",668,668,668,,,668,668,666,666,666,666,666,,,,666,666,,,,666,,666,666","666,666,666,666,666,,,,,,666,666,666,666,666,666,666,,,666,,,,,,666","666,,666,666,666,666,666,666,666,666,666,,666,666,666,,666,666,666,666","666,,,,,,,,,,,,,,,,,,,,666,,,666,,,666,666,,,666,,666,,,,666,,,,,,,",",666,,,,,666,666,666,666,,666,666,666,666,,,,,666,666,,,,247,247,247","666,247,666,666,666,247,247,666,666,,247,,247,247,247,247,247,247,247",",,,,,247,247,247,247,247,247,247,,,247,,,,,,,247,,,247,247,247,247,247","247,247,247,,247,247,247,,247,247,247,247,247,,,,,,,,,,,,,,,,,,,,247",",,247,,,247,247,,,247,,,,,,247,,,,,,,,,247,,,,,247,247,247,247,,247","247,247,247,,,,,247,247,,,,35,35,35,247,35,247,247,247,35,35,247,247",",35,,35,35,35,35,35,35,35,,,,,,35,35,35,35,35,35,35,,,35,,,,,,,35,,","35,35,35,35,35,35,35,35,35,35,35,35,,35,35,35,35,35,,,,,,,,,,,,,,,,",",,,35,,,35,,,35,35,,,35,,35,,35,,35,,,35,,,,,,35,,,,,35,35,35,35,,35","35,35,35,,,,,35,35,,,,36,36,36,35,36,35,35,35,36,36,35,35,,36,,36,36","36,36,36,36,36,,,,,,36,36,36,36,36,36,36,,,36,,,,,,,36,,,36,36,36,36","36,36,36,36,36,36,36,36,,36,36,36,36,36,,,,,,,,,,,,,,,,,,,,36,,,36,",",36,36,,,36,,36,,36,,36,,,36,,,,,,36,,,,,36,36,36,36,,36,36,36,36,,",",,36,36,,,,635,635,635,36,635,36,36,36,635,635,36,36,,635,,635,635,635","635,635,635,635,,,,,,635,635,635,635,635,635,635,,,635,,,,,,,635,,,635","635,635,635,635,635,635,635,635,635,635,635,,635,635,635,635,635,,,",",,,,,,,,,,,,,,,,635,,,635,,,635,635,,,635,,635,,635,,635,,,635,,,,,","635,,,,,635,635,635,635,,635,635,635,635,,,,,635,635,,,,1003,1003,1003","635,1003,635,635,635,1003,1003,635,635,,1003,,1003,1003,1003,1003,1003","1003,1003,,,,,,1003,1003,1003,1003,1003,1003,1003,,,1003,,,,,,,1003",",,1003,1003,1003,1003,1003,1003,1003,1003,1003,1003,1003,1003,,1003","1003,1003,1003,1003,,,,,,,,,,,,,,,,,,,,1003,,,1003,,,1003,1003,,,1003",",,,1003,,1003,,,1003,,,,,,1003,,,,,1003,1003,1003,1003,,1003,1003,1003","1003,,,,,1003,1003,,,,625,625,625,1003,625,1003,1003,1003,625,625,1003","1003,,625,,625,625,625,625,625,625,625,,,,,,625,625,625,625,625,625","625,,,625,,,,,,,625,,,625,625,625,625,625,625,625,625,625,625,625,625",",625,625,625,625,625,,,,,,,,,,,,,,,,,,,,625,,,625,,,625,625,,,625,,625",",625,,625,,,625,,,,,,625,,,,,625,625,625,625,,625,625,625,625,,,,,625","625,,,,624,624,624,625,624,625,625,625,624,624,625,625,,624,,624,624","624,624,624,624,624,,,,,,624,624,624,624,624,624,624,,,624,,,,,,,624",",,624,624,624,624,624,624,624,624,,624,624,624,,624,624,624,624,624",",,,,,,,,,,,,,,,,,,,624,,,624,,,624,624,,,624,,624,,,,624,,,,,,,,,624",",,,,624,624,624,624,,624,624,624,624,,,,,624,624,,,,611,611,611,624","611,624,624,624,611,611,624,624,,611,,611,611,611,611,611,611,611,,",",,,611,611,611,611,611,611,611,,,611,,,,,,,611,,,611,611,611,611,611","611,611,611,611,611,611,611,,611,611,611,611,611,,,,,,,,,,,,,,,,,,,","611,,,611,,,611,611,,,611,,,,,,611,,,611,,,,,,611,,,,,611,611,611,611",",611,611,611,611,,,,,611,611,,,,608,608,608,611,608,611,611,611,608","608,611,611,,608,,608,608,608,608,608,608,608,,,,,,608,608,608,608,608","608,608,,,608,,,,,,,608,,,608,608,608,608,608,608,608,608,608,608,608","608,,608,608,608,608,608,,,,,,,,,,,,,,,,,,,,608,,,608,,,608,608,,,608",",608,,,,608,,,608,,,,,,608,,,,,608,608,608,608,,608,608,608,608,,,,","608,608,,,,236,236,236,608,236,608,608,608,236,236,608,608,,236,,236","236,236,236,236,236,236,,,,,,236,236,236,236,236,236,236,,,236,,,,,",",236,,,236,236,236,236,236,236,236,236,,236,236,236,,236,236,236,236","236,,,,,,,,,,,,,,,,,,,,236,,,236,,,236,236,,,236,,,,,,236,,,,,,,,,236",",,,,236,236,236,236,,236,236,236,236,,,,,236,236,236,,,235,235,235,236","235,236,236,236,235,235,236,236,,235,,235,235,235,235,235,235,235,,",",,,235,235,235,235,235,235,235,,,235,,,,,,,235,,,235,235,235,235,235","235,235,235,,235,235,235,,235,235,235,235,235,,,,,,,,,,,,,,,,,,,,235",",,235,,,235,235,,,235,,,,,,235,,,,,,,,,235,,,,,235,235,235,235,,235","235,235,235,,,,,235,235,,,,603,603,603,235,603,235,235,235,603,603,235","235,,603,,603,603,603,603,603,603,603,,,,,,603,603,603,603,603,603,603",",,603,,,,,,,603,,,603,603,603,603,603,603,603,603,,603,603,603,,603","603,603,603,603,,,,,,,,,,,,,,,,,,,,603,,,603,,,603,603,,,603,,,,,,603",",,,,,,,,603,,,,,603,603,603,603,,603,603,603,603,,,,,603,603,,,,1029","1029,1029,603,1029,603,603,603,1029,1029,603,603,,1029,,1029,1029,1029","1029,1029,1029,1029,,,,,,1029,1029,1029,1029,1029,1029,1029,,,1029,",",,,,,1029,,,1029,1029,1029,1029,1029,1029,1029,1029,,1029,1029,1029",",1029,1029,1029,1029,1029,,,,,,,,,,,,,,,,,,,,1029,,,1029,,,1029,1029",",,1029,,,,,,1029,,,,,,,,,1029,,,,,1029,1029,1029,1029,,1029,1029,1029","1029,,,,,1029,1029,,,,600,600,600,1029,600,1029,1029,1029,600,600,1029","1029,,600,,600,600,600,600,600,600,600,,,,,,600,600,600,600,600,600","600,,,600,,,,,,,600,,,600,600,600,600,600,600,600,600,,600,600,600,","600,600,600,600,600,,,,,,,,,,,,,,,,,,,,600,,,600,,,600,600,,,600,,,",",,600,,,,,,,,,600,,,,,600,600,600,600,,600,600,600,600,,,,,600,600,",",,597,597,597,600,597,600,600,600,597,597,600,600,,597,,597,597,597","597,597,597,597,,,,,,597,597,597,597,597,597,597,,,597,,,,,,,597,,,597","597,597,597,597,597,597,597,,597,597,597,,597,597,597,597,597,,,,,,",",,,,,,,,,,,,,597,,,597,,,597,597,,,597,,,,,,597,,,,,,,,,597,,,,,597","597,597,597,,597,597,597,597,,,,,597,597,,,,234,234,234,597,234,597","597,597,234,234,597,597,,234,,234,234,234,234,234,234,234,,,,,,234,234","234,234,234,234,234,,,234,,,,,,,234,,,234,234,234,234,234,234,234,234",",234,234,234,,234,234,234,234,234,,,,,,,,,,,,,,,,,,,,234,,,234,,,234","234,,,234,,,,,,234,,,,,,,,,234,,,,,234,234,234,234,,234,234,234,234",",,,,234,234,,,,587,587,587,234,587,234,234,234,587,587,234,234,,587",",587,587,587,587,587,587,587,,,,,,587,587,587,587,587,587,587,,,587",",,,,,,587,,,587,587,587,587,587,587,587,587,587,587,587,587,,587,587","587,587,587,,,,,,,,,,,,,,,,,,,,587,,,587,,,587,587,,,587,,587,,587,","587,,,587,,,,,,587,,,,,587,587,587,587,,587,587,587,587,,,,,587,587",",,,,,,587,,587,587,587,,,587,587,577,577,577,577,577,,,,577,577,,,,577",",577,577,577,577,577,577,577,,,,,,577,577,577,577,577,577,577,,,577",",,,,,577,577,577,577,577,577,577,577,577,577,577,577,,577,577,577,,577","577,577,577,577,,,,,,,,,,,,,,,,,,,,577,,,577,,,577,577,,,577,,577,,",",577,,,,,,,,,577,,,,,577,577,577,577,,577,577,577,577,,,,,577,577,,",",,,577,577,,577,577,577,,,577,577,571,571,571,,571,,,,571,571,,,,571",",571,571,571,571,571,571,571,,,,,,571,571,571,571,571,571,571,,,571",",,,,,,571,,,571,571,571,571,571,571,571,571,,571,571,571,,571,571,571","571,571,,,,,,,,,,,,,,,,,,,,571,,,571,,,571,571,,,571,,,,,,571,,,,,,",",,571,,,,,571,571,571,571,,571,571,571,571,,,,,571,571,,,,569,569,569","571,569,571,571,571,569,569,571,571,,569,,569,569,569,569,569,569,569",",,,,,569,569,569,569,569,569,569,,,569,,,,,,,569,,,569,569,569,569,569","569,569,569,569,569,569,569,,569,569,569,569,569,,,,,,,,,,,,,,,,,,,","569,,,569,,,569,569,,,569,,,,569,,569,,,569,,,,,,569,,,,,569,569,569","569,,569,569,569,569,,,,,569,569,,,,366,366,366,569,366,569,569,569","366,366,569,569,,366,,366,366,366,366,366,366,366,,,,,,366,366,366,366","366,366,366,,,366,,,,,,,366,,,366,366,366,366,366,366,366,366,,366,366","366,,366,366,366,366,366,,,,,,,,,,,,,,,,,,,,366,,,366,,,366,366,,,366",",,,,,366,,,,,,,,,366,,,,,366,366,366,366,,366,366,366,366,,,,,366,366",",,,368,368,368,366,368,366,366,366,368,368,366,366,,368,,368,368,368","368,368,368,368,,,,,,368,368,368,368,368,368,368,,,368,,,,,,,368,,,368","368,368,368,368,368,368,368,,368,368,368,,368,368,368,368,368,,,,,,",",,,,,,,,,,,,,368,,,368,368,,368,368,,,368,,,,,,368,,,,,,,,,368,,,,,368","368,368,368,,368,368,368,368,,,,,368,368,,,,567,567,567,368,567,368","368,368,567,567,368,368,,567,,567,567,567,567,567,567,567,,,,,,567,567","567,567,567,567,567,,,567,,,,,,,567,,,567,567,567,567,567,567,567,567","567,567,567,567,,567,567,567,567,567,,,,,,,,,,,,,,,,,,,,567,,,567,,","567,567,,,567,,567,,567,,567,,,567,,,,,,567,,,,,567,567,567,567,,567","567,567,567,,,,,567,567,,,,46,46,46,567,46,567,567,567,46,46,567,567",",46,,46,46,46,46,46,46,46,,,,,,46,46,46,46,46,46,46,,,46,,,,,,,46,,","46,46,46,46,46,46,46,46,,46,46,46,,46,46,46,46,46,,,,,,,,,,,,,,,,,,",",46,,,46,,,46,46,,,46,,,,,,46,,,,,,,,,46,,,,,46,46,46,46,,46,46,46,46",",,,,46,46,,,,557,557,557,46,557,46,46,46,557,557,46,46,,557,,557,557","557,557,557,557,557,,,,,,557,557,557,557,557,557,557,,,557,,,,,,,557",",,557,557,557,557,557,557,557,557,,557,557,557,,557,557,557,557,557",",,,,,,,,,,,,,,,,,,,557,,,557,,,557,557,,,557,,,,,,557,,,,,,,,,557,,",",,557,557,557,557,,557,557,557,557,,,,,557,557,,,,47,47,47,557,47,557","557,557,47,47,557,557,,47,,47,47,47,47,47,47,47,,,,,,47,47,47,47,47","47,47,,,47,,,,,,,47,,,47,47,47,47,47,47,47,47,,47,47,47,,47,47,47,47","47,,,,,,,,,,,,,,,,,,,,47,,,47,,,47,47,,,47,,,,,,47,,,,,,,,,47,,,,,47","47,47,47,,47,47,47,47,,,,,47,47,,,,280,280,280,47,280,47,47,47,280,280","47,47,,280,,280,280,280,280,280,280,280,,,,,,280,280,280,280,280,280","280,,,280,,,,,,,280,,,280,280,280,280,280,280,280,280,,280,280,280,","280,280,280,280,280,,,,,,,,,,,,,,,,,,,,280,,,280,,,280,280,,,280,,,",",,280,,,,,,,,,280,,,,,280,280,280,280,,280,280,280,280,,,,,280,280,",",,275,275,275,280,275,280,280,280,275,275,280,280,,275,,275,275,275","275,275,275,275,,,,,,275,275,275,275,275,275,275,,,275,,,,,,,275,,,275","275,275,275,275,275,275,275,,275,275,275,,275,275,275,275,275,,,,,,",",,,,,,,,,,,,,275,,,275,,,275,275,,,275,,,,,,275,,,,,,,,,275,,,,,275","275,275,275,,275,275,275,275,,,,,275,275,,,,,,,275,,275,275,275,552",",275,275,,,,552,552,552,,,552,552,552,406,552,406,406,406,406,406,,","552,552,552,,,,406,,,,,,552,552,,552,552,552,552,552,1159,,1159,1159","1159,1159,1159,,406,406,,,,,,1159,,406,406,406,406,,,,406,,1131,,1131","1131,1131,1131,1131,552,,,,1159,,,552,1131,,,,552,552,,1159,1159,,,","1159,,,,,,,,,,1131,406,,,,552,552,,,1131,1131,1131,1131,,,,1131,,,,552",",,552,,221,221,221,552,221,1159,,,221,221,552,,,221,,221,221,221,221","221,221,221,,,,,,221,221,221,221,221,221,221,,,221,,,,,,,221,,,221,221","221,221,221,221,221,221,221,221,221,221,,221,221,221,221,221,,,,,,,",",,,,,,,,,,,,221,,,221,,,221,221,,,221,,221,,221,,221,,,221,,,,,,221",",,,,221,221,221,221,,221,221,221,221,,,,,221,221,,,,220,220,220,221","220,221,221,221,220,220,221,221,,220,,220,220,220,220,220,220,220,,",",,,220,220,220,220,220,220,220,,,220,,,,,,,220,,,220,220,220,220,220","220,220,220,,220,220,220,,220,220,220,220,220,,,,,,,,,,,,,,,,,,,,220",",,220,,,220,220,,,220,,,,,,220,,,,,,,,,220,,,,,220,220,220,220,,220","220,220,220,,,,,220,220,,,,75,75,75,220,75,220,220,220,75,75,220,220",",75,,75,75,75,75,75,75,75,,,,,,75,75,75,75,75,75,75,,,75,,,,,,,75,,","75,75,75,75,75,75,75,75,,75,75,75,,75,75,75,75,75,,,,,,,,,,,,,,,,,,",",75,,,75,,,75,75,,,75,,,,,,75,,,,,,,,,75,,,,,75,75,75,75,,75,75,75,75",",,,,75,75,75,,,,,75,75,,75,75,75,,,75,75,71,71,71,,71,,,,71,71,,,,71",",71,71,71,71,71,71,71,,,,,,71,71,71,71,71,71,71,,,71,,,,,,,71,,,71,71","71,71,71,71,71,71,,71,71,71,,71,71,71,71,71,,,,,,,,,,,,,,,,,,,,71,,","71,,,71,71,,,71,,,,,,71,,,,,,,,,71,,,,,71,71,71,71,,71,71,71,71,,,,","71,71,,,,433,433,433,71,433,71,71,71,433,433,71,71,,433,,433,433,433","433,433,433,433,,,,,,433,433,433,433,433,433,433,,,433,,,,,,,433,,,433","433,433,433,433,433,433,433,,433,433,433,,433,433,433,433,433,,,,,,",",,,,,,,,,,,,,433,,,433,,,433,433,,,433,,,,,,433,,,,,,,,,433,,,,,433","433,433,433,,433,433,433,433,,,,,433,433,,,,68,68,68,433,68,433,433","433,68,68,433,433,,68,,68,68,68,68,68,68,68,,,,,,68,68,68,68,68,68,68",",,68,,,,,,,68,,,68,68,68,68,68,68,68,68,68,68,68,68,,68,68,68,68,68",",,,,,,,,,,,,,,,,,,,68,,,68,,,68,68,,,68,,,,,,68,,,68,,,,,,68,,,,,68","68,68,68,,68,68,68,68,,,,,68,68,,,,842,842,842,68,842,68,68,68,842,842","68,68,,842,,842,842,842,842,842,842,842,,,,,,842,842,842,842,842,842","842,,,842,,,,,,,842,,,842,842,842,842,842,842,842,842,,842,842,842,","842,842,842,842,842,,,,,,,,,,,,,,,,,,,,842,,,842,,,842,842,,,842,,,",",,842,,,,,,,,,842,,,,,842,842,842,842,,842,842,842,842,,,,,842,842,",",,793,793,793,842,793,842,842,842,793,793,842,842,,793,,793,793,793","793,793,793,793,,,,,,793,793,793,793,793,793,793,,,793,,,,,,,793,,,793","793,793,793,793,793,793,793,,793,793,793,,793,793,793,793,793,,,,,,",",,,,,,,,,,,,,793,,,793,,,793,793,,,793,,,,,,793,,,,,,,,,793,,,,,793","793,793,793,,793,793,793,793,,,,,793,793,,,,272,272,272,793,272,793","793,793,272,272,793,793,,272,,272,272,272,272,272,272,272,,,,,,272,272","272,272,272,272,272,,,272,,,,,,,272,,,272,272,272,272,272,272,272,272",",272,272,272,,272,272,272,272,272,,,,,,,,,,,,,,,,,,,,272,,,272,,,272","272,,,272,,,,,,272,,,,,,,,,272,,,,,272,272,272,272,,272,272,272,272",",,,,272,272,,,,271,271,271,272,271,272,272,272,271,271,272,272,,271",",271,271,271,271,271,271,271,,,,,,271,271,271,271,271,271,271,,,271",",,,,,,271,,,271,271,271,271,271,271,271,271,,271,271,271,,271,271,271","271,271,,,,,,,,,,,,,,,,,,,,271,,,271,,,271,271,,,271,,,,,,271,,,,,,",",,271,,,,,271,271,271,271,,271,271,271,271,,,,,271,271,,,,67,67,67,271","67,271,271,271,67,67,271,271,,67,,67,67,67,67,67,67,67,,,,,,67,67,67","67,67,67,67,,,67,,,,,,,67,,,67,67,67,67,67,67,67,67,67,67,67,67,,67","67,67,67,67,,,,,,,,,,,,,,,,,,,,67,,,67,,,67,67,,,67,,67,,,,67,,,67,",",,,,67,,,,,67,67,67,67,,67,67,67,67,,,,,67,67,,,,,,,67,,67,67,67,,,67","67,66,66,66,66,66,,,,66,66,,,,66,,66,66,66,66,66,66,66,,,,,,66,66,66","66,66,66,66,,,66,,,,,,66,66,,66,66,66,66,66,66,66,66,66,,66,66,66,,66","66,66,66,66,,,,,,,,,,,,,,,,,,,,66,,,66,,,66,66,,,66,,66,,,,66,,,,,,",",,66,,,,,66,66,66,66,,66,66,66,66,,,,,66,66,,,,404,404,404,66,404,66","66,66,404,404,66,66,,404,,404,404,404,404,404,404,404,,,,,,404,404,404","404,404,404,404,,,404,,,,,,,404,,,404,404,404,404,404,404,404,404,,404","404,404,,404,404,404,404,404,,,,,,,,,,,,,,,,,,,,404,,,404,,,404,404",",,404,,,,,,404,,,,,,,,,404,,,,,404,404,404,404,,404,404,404,404,,,,","404,404,,,,,,,404,,404,404,404,64,,404,404,,,,64,64,64,,,64,64,64,,64",",,,,,,,64,,64,64,64,,,,,,,,64,64,,64,64,64,64,64,,,,,,,,,,,,,,,,,,,",",,,64,64,64,64,64,64,64,64,64,64,64,64,64,64,,,64,64,64,,,64,,,64,,","64,64,,64,,64,,64,,64,64,,64,64,64,64,64,,64,,64,,,,,,,,,,,,,,64,,,64","64,64,64,,64,,64,,270,270,270,64,270,,,,270,270,,,,270,,270,270,270","270,270,270,270,,,,,,270,270,270,270,270,270,270,,,270,,,,,,,270,,,270","270,270,270,270,270,270,270,,270,270,270,,270,270,270,270,270,,,,,,",",,,,,,,,,,,,,270,,,270,,,270,270,,,270,,,,,,270,,,,,,,,,270,,,,,270","270,270,270,,270,270,270,270,,,,,270,270,,,,862,862,862,270,862,270","270,270,862,862,270,270,,862,,862,862,862,862,862,862,862,,,,,,862,862","862,862,862,862,862,,,862,,,,,,,862,,,862,862,862,862,862,862,862,862",",862,862,862,,862,862,862,862,862,,,,,,,,,,,,,,,,,,,,862,,,862,,,862","862,,,862,,,,,,862,,,,,,,,,862,,,,,862,862,862,862,,862,862,862,862",",,,,862,862,,,,296,296,296,862,296,862,862,862,296,296,862,862,,296",",296,296,296,296,296,296,296,,,,,,296,296,296,296,296,296,296,,,296",",,,,,,296,,,296,296,296,296,296,296,296,296,,296,296,296,,296,296,296","296,296,,,,,,,,,,,,,,,,,,,,296,,,296,,,296,296,,,296,,,,,,296,,,,,,",",,296,,,,,296,296,296,296,,296,296,296,296,,,,,296,296,,,,269,269,269","296,269,296,296,296,269,269,296,296,,269,,269,269,269,269,269,269,269",",,,,,269,269,269,269,269,269,269,,,269,,,,,,,269,,,269,269,269,269,269","269,269,269,,269,269,269,,269,269,269,269,269,,,,,,,,,,,,,,,,,,,,269",",,269,,,269,269,,,269,,,,,,269,,,,,,,,,269,,,,,269,269,269,269,,269","269,269,269,,,,,269,269,,,,268,268,268,269,268,269,269,269,268,268,269","269,,268,,268,268,268,268,268,268,268,,,,,,268,268,268,268,268,268,268",",,268,,,,,,,268,,,268,268,268,268,268,268,268,268,,268,268,268,,268","268,268,268,268,,,,,,,,,,,,,,,,,,,,268,,,268,,,268,268,,,268,,,,,,268",",,,,,,,,268,,,,,268,268,268,268,,268,268,268,268,,,,,268,268,,,,784","784,784,268,784,268,268,268,784,784,268,268,,784,,784,784,784,784,784","784,784,,,,,,784,784,784,784,784,784,784,,,784,,,,,,,784,,,784,784,784","784,784,784,784,784,784,784,784,784,,784,784,784,784,784,,,,,,,,,,,",",,,,,,,,784,,,784,,,784,784,,,784,,784,,784,,784,,,784,,,,,,784,,,,","784,784,784,784,,784,784,784,784,,,,,784,784,,,,870,870,870,784,870","784,784,784,870,870,784,784,,870,,870,870,870,870,870,870,870,,,,,,870","870,870,870,870,870,870,,,870,,,,,,,870,,,870,870,870,870,870,870,870","870,,870,870,870,,870,870,870,870,870,,,,,,,,,,,,,,,,,,,,870,,,870,",",870,870,,,870,,,,,,870,,,,,,,,,870,,,,,870,870,870,870,,870,870,870","870,,,,,870,870,,,,267,267,267,870,267,870,870,870,267,267,870,870,","267,,267,267,267,267,267,267,267,,,,,,267,267,267,267,267,267,267,,","267,,,,,,,267,,,267,267,267,267,267,267,267,267,,267,267,267,,267,267","267,267,267,,,,,,,,,,,,,,,,,,,,267,,,267,,,267,267,,,267,,,,,,267,,",",,,,,,267,,,,,267,267,267,267,,267,267,267,267,,,,,267,267,,,,883,883","883,267,883,267,267,267,883,883,267,267,,883,,883,883,883,883,883,883","883,,,,,,883,883,883,883,883,883,883,,,883,,,,,,,883,,,883,883,883,883","883,883,883,883,,883,883,883,,883,883,883,883,883,,,,,,,,,,,,,,,,,,",",883,,,883,,,883,883,,,883,,,,,,883,,,,,,,,,883,,,,,883,883,883,883",",883,883,883,883,,,,,883,883,,,,884,884,884,883,884,883,883,883,884","884,883,883,,884,,884,884,884,884,884,884,884,,,,,,884,884,884,884,884","884,884,,,884,,,,,,,884,,,884,884,884,884,884,884,884,884,,884,884,884",",884,884,884,884,884,,,,,,,,,,,,,,,,,,,,884,,,884,,,884,884,,,884,,",",,,884,,,,,,,,,884,,,,,884,884,884,884,,884,884,884,884,,,,,884,884",",,,24,24,24,884,24,884,884,884,24,24,884,884,,24,,24,24,24,24,24,24","24,,,,,,24,24,24,24,24,24,24,,,24,,,,,,,24,,,24,24,24,24,24,24,24,24",",24,24,24,,24,24,24,24,24,,,,,,,,,,,,,,,,,,,,24,,,24,,,24,24,,,24,,",",,,24,,,,,,,,,24,,,,,24,24,24,24,,24,24,24,24,,,,,24,24,,,,303,303,303","24,303,24,24,24,303,303,24,24,,303,,303,303,303,303,303,303,303,,,,",",303,303,303,303,303,303,303,,,303,,,,,,,303,,,303,303,303,303,303,303","303,303,303,303,303,303,,303,303,303,303,303,,,,,,,,,,,,,,,,,,,,303",",,303,,,303,303,,,303,,303,,303,,303,,,303,,,,,,303,,,,,303,303,303","303,,303,303,303,303,,,,,303,303,,,,304,304,304,303,304,303,303,303","304,304,303,303,,304,,304,304,304,304,304,304,304,,,,,,304,304,304,304","304,304,304,,,304,,,,,,,304,,,304,304,304,304,304,304,304,304,304,304","304,304,,304,304,304,304,304,,,,,,,,,,,,,,,,,,,,304,,,304,,,304,304",",,304,,304,,304,,304,,,304,,,,,,304,,,,,304,304,304,304,,304,304,304","304,,,,,304,304,,,,312,312,312,304,312,304,304,304,312,312,304,304,","312,,312,312,312,312,312,312,312,,,,,,312,312,312,312,312,312,312,,","312,,,,,,,312,,,312,312,312,312,312,312,312,312,312,312,312,312,,312","312,312,312,312,,,,,,,,,,,,,,,,,,,,312,,,312,,,312,312,,,312,,312,,312",",312,,,312,,,,,,312,,,,,312,312,312,312,,312,312,312,312,,,,,312,312","312,,,266,266,266,312,266,312,312,312,266,266,312,312,,266,,266,266","266,266,266,266,266,,,,,,266,266,266,266,266,266,266,,,266,,,,,,,266",",,266,266,266,266,266,266,266,266,,266,266,266,,266,266,266,266,266",",,,,,,,,,,,,,,,,,,,266,,,266,,,266,266,,,266,,,,,,266,,,,,,,,,266,,",",,266,266,266,266,,266,266,266,266,,,,,266,266,,,,265,265,265,266,265","266,266,266,265,265,266,266,,265,,265,265,265,265,265,265,265,,,,,,265","265,265,265,265,265,265,,,265,,,,,,,265,,,265,265,265,265,265,265,265","265,,265,265,265,,265,265,265,265,265,,,,,,,,,,,,,,,,,,,,265,,,265,",",265,265,,,265,,,,,,265,,,,,,,,,265,,,,,265,265,265,265,,265,265,265","265,,,,,265,265,,,,264,264,264,265,264,265,265,265,264,264,265,265,","264,,264,264,264,264,264,264,264,,,,,,264,264,264,264,264,264,264,,","264,,,,,,,264,,,264,264,264,264,264,264,264,264,,264,264,264,,264,264","264,264,264,,,,,,,,,,,,,,,,,,,,264,,,264,,,264,264,,,264,,,,,,264,,",",,,,,,264,,,,,264,264,264,264,,264,264,264,264,,,,,264,264,,,,319,319","319,264,319,264,264,264,319,319,264,264,,319,,319,319,319,319,319,319","319,,,,,,319,319,319,319,319,319,319,,,319,,,,,,,319,,,319,319,319,319","319,319,319,319,,319,319,319,,319,319,319,319,319,,,,,,,,,,,,,,,,,,",",319,,,319,,,319,319,,,319,,,,,,319,,,,,,,,,319,,,,,319,319,319,319",",319,319,319,319,,,,,319,319,,,,321,321,321,319,321,319,319,319,321","321,319,319,,321,,321,321,321,321,321,321,321,,,,,,321,321,321,321,321","321,321,,,321,,,,,,,321,,,321,321,321,321,321,321,321,321,,321,321,321",",321,321,321,321,321,,,,,,,,,,,,,,,,,,,,321,,,321,,,321,321,,,321,,",",,,321,,,,,,,,,321,,,,,321,321,321,321,,321,321,321,321,,,,,321,321",",,,324,324,324,321,324,321,321,321,324,324,321,321,,324,,324,324,324","324,324,324,324,,,,,,324,324,324,324,324,324,324,,,324,,,,,,,324,,,324","324,324,324,324,324,324,324,,324,324,324,,324,324,324,324,324,,,,,,",",,,,,,,,,,,,,324,,,324,,,324,324,,,324,,,,,,324,,,,,,,,,324,,,,,324","324,324,324,,324,324,324,324,,,,,324,324,,,,263,263,263,324,263,324","324,324,263,263,324,324,,263,,263,263,263,263,263,263,263,,,,,,263,263","263,263,263,263,263,,,263,,,,,,,263,,,263,263,263,263,263,263,263,263",",263,263,263,,263,263,263,263,263,,,,,,,,,,,,,,,,,,,,263,,,263,,,263","263,,,263,,,,,,263,,,,,,,,,263,,,,,263,263,263,263,,263,263,263,263",",,,,263,263,,,,262,262,262,263,262,263,263,263,262,262,263,263,,262",",262,262,262,262,262,262,262,,,,,,262,262,262,262,262,262,262,,,262",",,,,,,262,,,262,262,262,262,262,262,262,262,,262,262,262,,262,262,262","262,262,,,,,,,,,,,,,,,,,,,,262,,,262,,,262,262,,,262,,,,,,262,,,,,,",",,262,,,,,262,262,262,262,,262,262,262,262,,,,,262,262,,,,911,911,911","262,911,262,262,262,911,911,262,262,,911,,911,911,911,911,911,911,911",",,,,,911,911,911,911,911,911,911,,,911,,,,,,,911,,,911,911,911,911,911","911,911,911,,911,911,911,,911,911,911,911,911,,,,,,,,,,,,,,,,,,,,911",",,911,,,911,911,,,911,,,,,,911,,,,,,,,,911,,,,,911,911,911,911,,911","911,911,911,,,,,911,911,,,,912,912,912,911,912,911,911,911,912,912,911","911,,912,,912,912,912,912,912,912,912,,,,,,912,912,912,912,912,912,912",",,912,,,,,,,912,,,912,912,912,912,912,912,912,912,,912,912,912,,912","912,912,912,912,,,,,,,,,,,,,,,,,,,,912,,,912,,,912,912,,,912,,,,,,912",",,,,,,,,912,,,,,912,912,912,912,,912,912,912,912,,,,,912,912,,,,913","913,913,912,913,912,912,912,913,913,912,912,,913,,913,913,913,913,913","913,913,,,,,,913,913,913,913,913,913,913,,,913,,,,,,,913,,,913,913,913","913,913,913,913,913,,913,913,913,,913,913,913,913,913,,,,,,,,,,,,,,",",,,,,913,,,913,,,913,913,,,913,,,,,,913,,,,,,,,,913,,,,,913,913,913","913,,913,913,913,913,,,,,913,913,,,,494,494,494,913,494,913,913,913","494,494,913,913,,494,,494,494,494,494,494,494,494,,,,,,494,494,494,494","494,494,494,,,494,,,,,,,494,,,494,494,494,494,494,494,494,494,,494,494","494,,494,494,494,494,494,,,,,,,,,,,,,,,,,,,,494,,,494,,,494,494,,,494",",,,,,494,,,,,,,,,494,,,,,494,494,494,494,,494,494,494,494,,,,,494,494",",,,,,,494,,494,494,494,,,494,494,130,130,130,130,130,,,,130,130,,,,130",",130,130,130,130,130,130,130,,,,,,130,130,130,130,130,130,130,,,130",",,,,,130,130,,130,130,130,130,130,130,130,130,130,,130,130,130,,130","130,130,130,130,,,,,,,,,,,,,,,,,,,,130,,,130,,,130,130,,,130,,130,,",",130,,,,,,,,,130,,,,,130,130,130,130,,130,130,130,130,,,,,130,130,,",",129,129,129,130,129,130,130,130,129,129,130,130,,129,,129,129,129,129","129,129,129,,,,,,129,129,129,129,129,129,129,,,129,,,,,,,129,,,129,129","129,129,129,129,129,129,,129,129,129,,129,129,129,129,129,,,,,,,,,,",",,,,,,,,,129,,,129,,,129,129,,,129,,,,,,129,,,,,,,,,129,,,,,129,129","129,129,,129,129,129,129,,,,,129,129,,,,128,128,128,129,128,129,129","129,128,128,129,129,,128,,128,128,128,128,128,128,128,,,,,,128,128,128","128,128,128,128,,,128,,,,,,,128,,,128,128,128,128,128,128,128,128,,128","128,128,,128,128,128,128,128,,,,,,,,,,,,,,,,,,,,128,,,128,,,128,128",",,128,,,,,,128,,,,,,,,,128,,,,,128,128,128,128,,128,128,128,128,,,,","128,128,,,,1142,1142,1142,128,1142,128,128,128,1142,1142,128,128,,1142",",1142,1142,1142,1142,1142,1142,1142,,,,,,1142,1142,1142,1142,1142,1142","1142,,,1142,,,,,,,1142,,,1142,1142,1142,1142,1142,1142,1142,1142,,1142","1142,1142,,1142,1142,1142,1142,1142,,,,,,,,,,,,,,,,,,,,1142,,,1142,",",1142,1142,,,1142,,,,,,1142,,,,,,,,,1142,,,,,1142,1142,1142,1142,,1142","1142,1142,1142,,,,,1142,1142,,,,1143,1143,1143,1142,1143,1142,1142,1142","1143,1143,1142,1142,,1143,,1143,1143,1143,1143,1143,1143,1143,,,,,,1143","1143,1143,1143,1143,1143,1143,,,1143,,,,,,,1143,,,1143,1143,1143,1143","1143,1143,1143,1143,,1143,1143,1143,,1143,1143,1143,1143,1143,,,,,,",",,,,,,,,,,,,,1143,,,1143,,,1143,1143,,,1143,,,,,,1143,,,,,,,,,1143,",",,,1143,1143,1143,1143,,1143,1143,1143,1143,,,,,1143,1143,,,,127,127","127,1143,127,1143,1143,1143,127,127,1143,1143,,127,,127,127,127,127","127,127,127,,,,,,127,127,127,127,127,127,127,,,127,,,,,,,127,,,127,127","127,127,127,127,127,127,,127,127,127,,127,127,127,127,127,,,,,,,,,,",",,,,,,,,,127,,,127,,,127,127,,,127,,,,,,127,,,,,,,,,127,,,,,127,127","127,127,,127,127,127,127,,,,,127,127,,,,50,50,50,127,50,127,127,127","50,50,127,127,,50,,50,50,50,50,50,50,50,,,,,,50,50,50,50,50,50,50,,","50,,,,,,,50,,,50,50,50,50,50,50,50,50,,50,50,50,,50,50,50,50,50,,,,",",,,,,,,,,,,,,,,50,,,50,,,50,50,,,50,,,,,,50,,,,,,,,,50,,,,,50,50,50","50,,50,50,50,50,,,,,50,50,,,,126,126,126,50,126,50,50,50,126,126,50","50,,126,,126,126,126,126,126,126,126,,,,,,126,126,126,126,126,126,126",",,126,,,,,,,126,,,126,126,126,126,126,126,126,126,,126,126,126,,126","126,126,126,126,,,,,,,,,,,,,,,,,,,,126,,,126,,,126,126,,,126,,,,,,126",",,,,,,,,126,,,,,126,126,126,126,,126,126,126,126,,,,,126,126,,,,,,,126",",126,126,126,,,126,126,121,121,121,121,121,,,,121,121,,,,121,,121,121","121,121,121,121,121,,,,,,121,121,121,121,121,121,121,,,121,,,,,,121","121,121,121,121,121,121,121,121,121,121,121,,121,121,121,,121,121,121","121,121,,,,,,,,,,,,,,,,,,,,121,,,121,,,121,121,,,121,,121,,,,121,,,",",,,,,121,,,,,121,121,121,121,,121,121,121,121,,,,,121,121,,,,,,121,121",",121,121,121,,,121,121,1155,1155,1155,,1155,,,,1155,1155,,,,1155,,1155","1155,1155,1155,1155,1155,1155,,,,,,1155,1155,1155,1155,1155,1155,1155",",,1155,,,,,,,1155,,,1155,1155,1155,1155,1155,1155,1155,1155,1155,1155","1155,1155,,1155,1155,1155,1155,1155,,,,,,,,,,,,,,,,,,,,1155,,,1155,",",1155,1155,,,1155,,1155,,1155,,1155,,,1155,,,,,,1155,,,,,1155,1155,1155","1155,,1155,1155,1155,1155,,,,,1155,1155,,,,468,468,468,1155,468,1155","1155,1155,468,468,1155,1155,,468,,468,468,468,468,468,468,468,,,,,,468","468,468,468,468,468,468,,,468,,,,,,,468,,,468,468,468,468,468,468,468","468,,468,468,468,,468,468,468,468,468,,,,,,,,,,,,,,,,,,,,468,,,468,",",468,468,,,468,,,,,,468,,,,,,,,,468,,,,,468,468,468,468,,468,468,468","468,,,,,468,468,,,,,,,468,,468,468,468,467,,468,468,,,,467,467,467,",",467,467,467,,467,,,,,,,,467,467,467,467,467,,,,,,,,467,467,,467,467","467,467,467,,,,,,,,,,,,,,,,,,,,,,,467,467,467,467,467,467,467,467,467","467,467,467,467,467,,,467,467,467,,,467,,,467,,,467,467,,467,,467,,467",",467,467,,467,467,467,467,467,,467,467,467,,,,,,,,,,,,,,467,,,467,467","467,467,,467,466,467,,,,,467,466,466,466,,,466,466,466,,466,,,,,,,,466","466,466,466,466,,,,,,,,466,466,,466,466,466,466,466,,,,,,,,,,,,,,,,",",,,,,,466,466,466,466,466,466,466,466,466,466,466,466,466,466,,,466","466,466,,,466,,,466,,,466,466,,466,,466,,466,,466,466,,466,466,466,466","466,,466,466,466,,,,,,,,,,,,,,466,,,466,466,466,466,,466,,466,,52,52","52,466,52,,,,52,52,,,,52,,52,52,52,52,52,52,52,,,,,,52,52,52,52,52,52","52,,,52,,,,,,,52,,,52,52,52,52,52,52,52,52,,52,52,52,,52,52,52,52,52",",,,,,,,,,,,,,,,,,,,52,,,52,,,52,52,,,52,,,,,,52,,,,,,,,,52,,,,,52,52","52,52,,52,52,52,52,,,,,52,52,,,,,,,52,,52,52,52,,,52,52,7,7,7,7,7,,",",7,7,,,,7,,7,7,7,7,7,7,7,,,,,,7,7,7,7,7,7,7,,,7,,,,,,7,7,7,7,7,7,7,7","7,7,7,7,,7,7,7,,7,7,7,7,7,,,,,,,,,,,,,,,,,,,,7,,,7,,,7,7,,,7,,7,,,,7",",,,,,,,,7,,,,,7,7,7,7,,7,7,7,7,,,,,7,7,,,,,,,7,,7,7,7,457,,7,7,,,,457","457,457,,,457,457,457,,457,,,,,,,,457,457,457,457,,,,,,,,,457,457,,457","457,457,457,457,,,,,,,,,,,,,,,,,,,,,,,457,457,457,457,457,457,457,457","457,457,457,457,457,457,,,457,457,457,,,457,,457,457,,,457,457,,457",",457,,457,,457,457,,457,457,457,457,457,,457,457,457,,,,,,,,,,,,,,457",",,457,457,,457,,457,72,72,72,,72,,457,,72,72,,,,72,,72,72,72,72,72,72","72,,,,,,72,72,72,72,72,72,72,,,72,,,,,,,72,,,72,72,72,72,72,72,72,72",",72,72,72,,72,72,72,72,72,,,,,,,,,,,,,,,,,,,,72,,,72,,,72,72,,,72,,",",,,72,,,,,,,,,72,,,,,72,72,72,72,,72,72,72,72,,,,,72,72,,,,219,219,219","72,219,72,72,72,219,219,72,72,,219,,219,219,219,219,219,219,219,,,,",",219,219,219,219,219,219,219,,,219,,,,,,,219,,,219,219,219,219,219,219","219,219,,219,219,219,,219,219,219,219,219,,,,,,,,,,,,,,,,,,,,219,,,219",",,219,219,,,219,,,,,,219,,,,,,,,,219,,,,,219,219,219,219,,219,219,219","219,,,,,219,219,,,,274,274,274,219,274,219,219,219,274,274,219,219,","274,,274,274,274,274,274,274,274,,,,,,274,274,274,274,274,274,274,,","274,,,,,,,274,,,274,274,274,274,274,274,274,274,,274,274,274,,274,274","274,274,274,,,,,,,,,,,,,,,,,,,,274,,,274,,,274,274,,,274,,,,,,274,,",",,,,,,274,,,,,274,274,274,274,,274,274,274,274,,,,,274,274,,,,218,218","218,274,218,274,274,274,218,218,274,274,,218,,218,218,218,218,218,218","218,,,,,,218,218,218,218,218,218,218,,,218,,,,,,,218,,,218,218,218,218","218,218,218,218,,218,218,218,,218,218,218,218,218,,,,,,,,,,,,,,,,,,",",218,,,218,,,218,218,,,218,,,,,,218,,,,,,,,,218,,,,,218,218,218,218",",218,218,218,218,,,,,218,218,,,,217,217,217,218,217,218,218,218,217","217,218,218,,217,,217,217,217,217,217,217,217,,,,,,217,217,217,217,217","217,217,,,217,,,,,,,217,,,217,217,217,217,217,217,217,217,,217,217,217",",217,217,217,217,217,,,,,,,,,,,,,,,,,,,,217,,,217,,,217,217,,,217,,217",",,,217,,,,,,,,,217,,,,,217,217,217,217,,217,217,217,217,,,,,217,217",",,,273,273,273,217,273,217,217,217,273,273,217,217,,273,,273,273,273","273,273,273,273,,,,,,273,273,273,273,273,273,273,,,273,,,,,,,273,,,273","273,273,273,273,273,273,273,,273,273,273,,273,273,273,273,273,,,,,,",",,,,,,,,,,,,,273,,,273,,,273,273,,,273,,,,,,273,,,,,,,,,273,,,,,273","273,273,273,,273,273,273,273,,,,,273,273,,,,49,49,49,273,49,273,273","273,49,49,273,273,,49,,49,49,49,49,49,49,49,,,,,,49,49,49,49,49,49,49",",,49,,,,,,,49,,,49,49,49,49,49,49,49,49,,49,49,49,,49,49,49,49,49,,",",,,,,,,,,,,,,,,,,49,,,49,,,49,49,,,49,,,,,,49,,,,,,,,,49,,,,,49,49,49","49,,49,49,49,49,,,,,49,49,,,,216,216,216,49,216,49,49,49,216,216,49","49,,216,,216,216,216,216,216,216,216,,,,,,216,216,216,216,216,216,216",",,216,,,,,,,216,,,216,216,216,216,216,216,216,216,,216,216,216,,216","216,216,216,216,,,,,,,,,,,,,,,,,,,,216,,,216,,,216,216,,,216,,216,,",",216,,,,,,,,,216,,,,,216,216,216,216,,216,216,216,216,,,,,216,216,,",",796,796,796,216,796,216,216,216,796,796,216,216,,796,,796,796,796,796","796,796,796,,,,,,796,796,796,796,796,796,796,,,796,,,,,,,796,,,796,796","796,796,796,796,796,796,,796,796,796,,796,796,796,796,796,,,,,,,,,,",",,,,,,,,,796,,,796,,,796,796,,,796,,,,,,796,,,,,,,,,796,,,,,796,796","796,796,,796,796,796,796,,,,,796,796,,,,521,521,521,796,521,796,796","796,521,521,796,796,,521,,521,521,521,521,521,521,521,,,,,,521,521,521","521,521,521,521,,,521,,,,,,,521,,,521,521,521,521,521,521,521,521,,521","521,521,,521,521,521,521,521,,,,,,,,,,,,,,,,,,,,521,,,521,,,521,521",",,521,,,,,,521,,,,,,,,,521,,,,,521,521,521,521,,521,521,521,521,,,,","521,521,,,,520,520,520,521,520,521,521,521,520,520,521,521,,520,,520","520,520,520,520,520,520,,,,,,520,520,520,520,520,520,520,,,520,,,,,",",520,,,520,520,520,520,520,520,520,520,,520,520,520,,520,520,520,520","520,,,,,,,,,,,,,,,,,,,,520,,,520,,,520,520,,,520,,,,,,520,,,,,,,,,520",",,,,520,520,520,520,,520,520,520,520,,,,,520,520,,,,519,519,519,520","519,520,520,520,519,519,520,520,,519,,519,519,519,519,519,519,519,,",",,,519,519,519,519,519,519,519,,,519,,,,,,,519,,,519,519,519,519,519","519,519,519,,519,519,519,,519,519,519,519,519,,,,,,,,,,,,,,,,,,,,519",",,519,,,519,519,,,519,,,,,,519,,,,,,,,,519,,,,,519,519,519,519,,519","519,519,519,,,,,519,519,,,,383,383,383,519,383,519,519,519,383,383,519","519,,383,,383,383,383,383,383,383,383,,,,,,383,383,383,383,383,383,383",",,383,,,,,,,383,,,383,383,383,383,383,383,383,383,,383,383,383,,383","383,383,383,383,,,,,,,,,,,,,,,,,,,,383,,,383,,,383,383,,,383,,,,,,383",",,,,,,,,383,,,,,383,383,383,383,,383,383,383,383,,,,,383,383,,,,517","517,517,383,517,383,383,383,517,517,383,383,,517,,517,517,517,517,517","517,517,,,,,,517,517,517,517,517,517,517,,,517,,,,,,,517,,,517,517,517","517,517,517,517,517,517,517,517,517,,517,517,517,517,517,,,,,,,,,,,",",,,,,,,,517,,,517,,,517,517,,,517,,517,,517,,517,,,517,,,,,,517,,,,","517,517,517,517,,517,517,517,517,,,,,517,517,,,,507,507,507,517,507","517,517,517,507,507,517,517,,507,,507,507,507,507,507,507,507,,,,,,507","507,507,507,507,507,507,,,507,,,,,,,507,,,507,507,507,507,507,507,507","507,,507,507,507,,507,507,507,507,507,,,,,,,,,,,,,,,,,,,,507,,,507,",",507,507,,,507,,,,,,507,,,,,,,,,507,,,,,507,507,507,507,,507,507,507","507,,,,,507,507,,,,357,357,357,507,357,507,507,507,357,357,507,507,","357,,357,357,357,357,357,357,357,,,,,,357,357,357,357,357,357,357,,","357,,,,,,,357,,,357,357,357,357,357,357,357,357,,357,357,357,,357,357",",,357,,,,,,,,,,,,,,,,,,,,357,,,357,,,357,357,,,357,,,,,,,,,,,,,,,,,",",,357,357,357,357,,357,357,357,357,,,,,357,357,,,,1011,1011,1011,357","1011,357,357,357,1011,1011,,,,1011,,1011,1011,1011,1011,1011,1011,1011",",,,,,1011,1011,1011,1011,1011,1011,1011,,,1011,,,,,,,1011,,,1011,1011","1011,1011,1011,1011,1011,1011,,1011,1011,1011,,1011,1011,,,1011,,,,",",,,,,,,,,,,,,,,1011,,,1011,,,1011,1011,,,1011,,,,,,,,,,,,,,,,,,,,1011","1011,1011,1011,,1011,1011,1011,1011,,,,,1011,1011,,,,338,338,338,1011","338,1011,1011,1011,338,338,,,,338,,338,338,338,338,338,338,338,,,,,","338,338,338,338,338,338,338,,,338,,,,,,,338,,,338,338,338,338,338,338","338,338,,338,338,338,,338,338,,,338,,,,,,,,,,,,,,,,,,,,338,,,338,,,338","338,,,338,,,1133,,1133,1133,1133,1133,1133,,,,,,,,,1133,,338,338,338","338,,338,338,338,338,,,,,338,338,,,,338,,1133,338,,338,338,338,76,76","76,,76,1133,1133,,76,76,1133,,,76,,76,76,76,76,76,76,76,,,,,,76,76,76","76,76,76,76,,,76,,,,,,,76,,,76,76,76,76,76,76,76,76,,76,76,76,,76,76",",,76,,,,,,,,,,,,,,,,,,,,76,,,76,,,76,76,,,76,,76,,,,,,,,,,,,,,,,,,76","76,76,76,,76,76,76,76,,,,,76,76,,,,1075,1075,1075,76,1075,76,76,76,1075","1075,,,,1075,,1075,1075,1075,1075,1075,1075,1075,,,,,,1075,1075,1075","1075,1075,1075,1075,,,1075,,,,,,,1075,,,1075,1075,1075,1075,1075,1075","1075,1075,,1075,1075,1075,,1075,1075,,,1075,,,,,,,,,,,,,,,,,,,,1075",",,1075,,,1075,1075,,,1075,,,,,,,,,,,,,,,,,,,,1075,1075,1075,1075,,1075","1075,1075,1075,,,,,1075,1075,,,,585,585,585,1075,585,1075,1075,1075","585,585,,,,585,,585,585,585,585,585,585,585,,,,,,585,585,585,585,585","585,585,,,585,,,,,,,585,,,585,585,585,585,585,585,585,585,,585,585,585",",585,585,,,585,,,,,,,,,,,,,,,,,,,,585,,,585,,,585,585,,,585,,,,,,,,",",,,,,,,,,,,585,585,585,585,,585,585,585,585,,,,,585,585,,,,594,594,594","585,594,585,585,585,594,594,,,,594,,594,594,594,594,594,594,594,,,,",",594,594,594,594,594,594,594,,,594,,,,,,,594,,,594,594,594,594,594,594","594,594,,594,594,594,,594,594,,,594,,,,,,,,,,,,,,,,,,,,594,,,594,,,594","594,,,594,,,,,,,,,,,,,,,,,,,,594,594,594,594,,594,594,594,594,,,,,594","594,,,,77,77,77,594,77,594,594,594,77,77,,,,77,,77,77,77,77,77,77,77",",,,,,77,77,77,77,77,77,77,,,77,,,,,,,77,,,77,77,77,77,77,77,77,77,,77","77,77,,77,77,,,77,,,,,,,,,,,,,,,,,77,,,77,,,77,,,77,77,,,77,,,,,,,,",",,,,,,,,,,,77,77,77,77,,77,77,77,77,,,,,77,77,,,,78,78,78,77,78,77,77","77,78,78,,,,78,,78,78,78,78,78,78,78,,,,,,78,78,78,78,78,78,78,,,78",",,,,,,78,,,78,78,78,78,78,78,78,78,,78,78,78,,78,78,,,78,,,,,,,,,,,",",,,,,,,,78,,,78,,,78,78,,,78,,,,,,,,,,,,,,,,,,,,78,78,78,78,,78,78,78","78,,,,,78,78,,,,40,40,40,78,40,78,78,78,40,40,,,,40,,40,40,40,40,40","40,40,,,,,,40,40,40,40,40,40,40,,,40,,,,,,,40,,,40,40,40,40,40,40,40","40,,40,40,40,,40,40,,,40,,,,,,,,,,,,,,,,,,,,40,,,40,,,40,40,,,40,,,1207",",1207,1207,1207,1207,1207,,,,,,,,,1207,,40,40,40,40,,40,40,40,40,,,",",40,40,,,,40,,1207,40,,40,40,40,1137,1137,1137,,1137,1207,1207,,1137","1137,1207,,,1137,,1137,1137,1137,1137,1137,1137,1137,,,,,,1137,1137","1137,1137,1137,1137,1137,,,1137,,,,,,,1137,,,1137,1137,1137,1137,1137","1137,1137,1137,,1137,1137,1137,,1137,1137,,,1137,,,,,,,,,,,,,,,,,,,","1137,,,1137,,,1137,1137,,,1137,,,,,,,,,,,,,,,,,,,,1137,1137,1137,1137",",1137,1137,1137,1137,,,,,1137,1137,,,,799,799,799,1137,799,1137,1137","1137,799,799,,,,799,,799,799,799,799,799,799,799,,,,,,799,799,799,799","799,799,799,,,799,,,,,,,799,,,799,799,799,799,799,799,799,799,,799,799","799,,799,799,,,799,,,,,,,,,,,,,,,,,,,,799,,,799,,,799,799,,,799,,,,",",,,,,,,,,,,,,,,799,799,799,799,,799,799,799,799,,,,,799,799,,,,810,810","810,799,810,799,799,799,810,810,,,,810,,810,810,810,810,810,810,810",",,,,,810,810,810,810,810,810,810,,,810,,,,,,,810,,,810,810,810,810,810","810,810,810,,810,810,810,,810,810,,,810,,,,,,,,,,,,,,,,,,,,810,,,810",",,810,810,,,810,,,,,,,,,,,,,,,,,,,,810,810,810,810,,810,810,810,810",",,,,810,810,,,,39,39,39,810,39,810,810,810,39,39,,,,39,,39,39,39,39","39,39,39,,,,,,39,39,39,39,39,39,39,,,39,,,,,,,39,,,39,39,39,39,39,39","39,39,,39,39,39,,39,39,,,39,,,,,,,,,,,,,,,,,,,,39,,,39,,,39,39,,,39",",39,,,,,,,,,,,,,,,,,,39,39,39,39,,39,39,39,39,,,,,39,39,,,,,,,39,,39","39,39,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424","424,424,424,424,424,424,424,424,,,,424,424,424,424,424,424,424,424,424","424,,,,,,424,424,424,424,424,424,424,424,424,,,424,,,,,,,,424,424,,424","424,424,424,424,424,424,,,424,424,,,,424,424,424,424,,,,,,,,,,,,,,424","424,,424,424,424,424,424,424,424,424,424,424,424,424,,,424,424,,,,,",",,,,,,,,424,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10","10,10,10,10,10,,,,10,10,10,10,10,10,10,10,10,10,,,,,,10,10,10,10,10","10,10,10,10,10,,10,,,,,,,,10,10,,10,10,10,10,10,10,10,,,10,10,,,,10","10,10,10,,,,,,,,,,,,,,10,10,,10,10,10,10,10,10,10,10,10,10,10,10,,,10","10,,,,,,,,,,,,,,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11","11,11,11,11,11,11,11,,,,11,11,11,11,11,11,11,11,11,11,,,,,,11,11,11","11,11,11,11,11,11,,,11,,,,,,,,11,11,,11,11,11,11,11,11,11,,,11,11,,",",11,11,11,11,,,,,,,,,,,,,,11,11,,11,11,11,11,11,11,11,11,11,11,11,11",",,11,11,,,,,,,,,,,,,,11,664,664,664,664,664,664,664,664,664,664,664","664,664,664,664,664,664,664,664,664,664,664,664,664,,,,664,664,664,664","664,664,664,664,664,664,,,,,,664,664,664,664,664,664,664,664,664,,,664",",,,,,,,664,664,,664,664,664,664,664,664,664,,,664,664,,,,664,664,664","664,,,,,,,,,,,,,,664,664,,664,664,664,664,664,664,664,664,664,664,664","664,,,664,664,1118,1118,1118,1118,,,,,,,,,,664,,,1118,1118,1118,1118",",,1201,1118,1201,1201,1201,1201,1201,1118,1118,,,1118,,,,1201,,,,,,",",,,,,,,,,1118,,,1118,,,1201,1118,,,1118,,,,,1201,1201,1201,1201,,,,1201",",,,1118,,,,1118,1118,1118,1118,,1118,1118,1118,1118,,,,,1118,1118,983","983,983,983,,,1118,,1118,1118,1118,,,1118,1118,,983,983,983,983,,,,983","983,,,,,983,983,,,983,983,,,,,,,,,,,,,,,,,,,983,,,983,,,,983,,,983,","983,,,,,,,983,,,,,,,983,,,,983,983,983,983,,983,983,983,983,,,,,983","983,937,937,937,937,,,983,,983,983,983,,,983,983,,937,937,937,937,,","1128,937,1128,1128,1128,1128,1128,937,937,,,937,,,,1128,,,,,,,,,,,,",",,,937,,,937,,,1128,937,,,937,,,,,1128,1128,1128,1128,,,,1128,,,,937",",,,937,937,937,937,,937,937,937,937,,,,,937,937,936,936,936,936,,,937",",937,937,937,,,937,937,,936,936,936,936,,,1205,936,1205,1205,1205,1205","1205,936,936,,,936,,,,1205,,,,,,,,,,,,,,,,936,,,936,,,1205,936,,,936",",,,,,,1205,1205,,,,1205,,,,936,,,,936,936,936,936,,936,936,936,936,",",,,936,936,930,930,930,930,,,936,,936,936,936,,,936,936,,930,930,930","930,,,1203,930,1203,1203,1203,1203,1203,930,930,,,930,,,,1203,,,,,,",",,,,,,,,,930,,,930,,,1203,930,,,930,,930,,,,,1203,1203,,,,1203,,,,930",",,,930,930,930,930,,930,930,930,930,,,,,930,930,1198,1198,1198,1198",",,930,,930,930,930,,,930,930,,1198,1198,1198,1198,,,1224,1198,1224,1224","1224,1224,1224,1198,1198,,,1198,,,,1224,,,,,,,,,,,,,,,,1198,,,1198,",",1224,1198,,,1198,,,,,,,1224,1224,,,,1224,,,,1198,,,,1198,1198,1198","1198,,1198,1198,1198,1198,,,,,1198,1198,924,924,924,924,,,1198,,1198","1198,1198,,,1198,1198,,924,924,924,924,,,,924,924,,,,,924,924,,,924","924,,,,,,,,,,,,,,,,,,,924,,,924,,,,924,,,924,,924,,,,,,,924,,,,,,,924",",,,924,924,924,924,,924,924,924,924,,,,,924,924,923,923,923,923,,,924",",924,924,924,,,924,924,,923,923,923,923,,,,923,923,,,,,923,923,,,923","923,,,,,,,,,,,,,,,,,,,923,,,923,,,,923,,,923,,923,,,,,,,923,,,,,,,923",",,,923,923,923,923,,923,923,923,923,,,,,923,923,920,920,920,920,,,923",",923,923,923,,,923,923,,920,920,920,920,,,,920,,,,,,920,920,,,920,,",",,,,,,,,,,,,,,,,,920,,,920,,,,920,,,920,,,,,,,,,,,,,,,,920,,,,920,920","920,920,,920,920,920,920,,,,,920,920,918,918,918,918,,,920,,920,920","920,,,920,920,,918,918,918,918,,,,918,,,,,,918,918,,,918,,,,,,,,,,,",",,,,,,,,918,,,918,,,,918,,,918,,918,,,,,,,,,,,,,,918,,,,918,918,918","918,,918,918,918,918,,,,,918,918,741,741,741,741,,,918,,918,918,918",",,918,918,,741,741,741,741,,,,741,,,,,,741,741,,,741,,,,,,,,,,,,,,,",",,,,741,,,741,,,,741,,,741,,741,,,,,,,,,,,,,,741,,,,741,741,741,741",",741,741,741,741,,,,,741,741,741,,,,,,741,,741,741,741,,,741,741,26","26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26",",,,26,26,26,26,26,26,26,26,26,26,,,,,,26,26,26,26,26,26,26,26,26,26","26,26,,26,,,,,,26,26,,26,26,26,26,26,26,26,,,26,26,,,,26,26,26,26,,",",,,26,,,,,,,,26,26,,26,26,26,26,26,26,26,26,26,26,26,26,,,26,749,749","749,749,,,702,,702,702,702,702,702,,,,749,749,749,749,,702,,749,,,,",",749,749,,,749,,,,,,,,,,702,,,,,,,,,,749,702,702,749,,,702,749,,,749",",,,,,,,,,,,,,,,749,,,,749,749,749,749,,749,749,749,749,,,,,749,749,","702,,,,,749,,749,749,749,,,749,749,776,776,776,776,776,776,776,776,776","776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,,,,776,776","776,776,776,776,776,776,776,776,,,,,,776,776,776,776,776,776,776,776","776,,,776,,,,,,,,776,776,,776,776,776,776,776,776,776,,,776,776,,,,776","776,776,776,,,,,,,,,,,,,,776,776,,776,776,776,776,776,776,776,776,776","776,776,776,,,776,525,525,525,525,,,,,,,,,,,,,525,525,525,525,,,,525","525,,,,,525,525,,,525,525,,,,,,,,,,,,,,,,,,,525,,,525,,,,525,,,525,","525,,,,,,,525,,,,,,,525,,,,525,525,525,525,,525,525,525,525,,,,,525","525,524,524,524,524,,,525,,525,525,525,,,525,525,,524,524,524,524,,",",524,524,,,,,524,524,,,524,524,,,,,,,,,,,,,,,,,,,524,,,524,,,,524,,","524,,524,,,,,,,524,,,,,,,524,,,,524,524,524,524,,524,524,524,524,,,",",524,524,1166,1166,1166,1166,,,524,,524,524,524,,,524,524,,1166,1166","1166,1166,,,,1166,,,,,,1166,1166,,,1166,,,,,,,,,,,,,,,,,,,,1166,,,1166",",,,1166,,,1166,,,,,,,,,,,,,,,,1166,,,,1166,1166,1166,1166,,1166,1166","1166,1166,,,,,1166,1166,1109,1109,1109,1109,,,1166,,1166,1166,1166,",",1166,1166,,1109,1109,1109,1109,,,,1109,,,,,,1109,1109,,,1109,,,,,,",",,,,,,,,,,,,,1109,,,1109,,,,1109,,,1109,,,,,,,,,,,,,,,,1109,,,,1109","1109,1109,1109,,1109,1109,1109,1109,,,,,1109,1109,1122,1122,1122,1122",",,1109,,1109,1109,1109,,,1109,1109,,1122,1122,1122,1122,,,,1122,,,,",",1122,1122,,,1122,,,,,,,,758,758,758,758,,,,,,,,,1122,,,1122,758,758","758,1122,,,1122,,1122,,,,,758,758,,,758,,,,,1122,,,,1122,1122,1122,1122",",1122,1122,1122,1122,,,,,1122,1122,,,,,,,1122,,1122,1122,1122,,,1122","1122,,,,,,,,,,,,758,758,758,758,,758,758,758,758,,,,,758,758,945,945","945,945,,,758,,758,758,758,,,,,,945,945,945,,,,,,,,,,,945,945,,,945","944,944,944,944,,,,,,,,,,,,,944,944,944,,,,,,,,,,,944,944,,,944,,,,",",,,,,,,,,,,945,945,945,945,,945,945,945,945,,,,,945,945,,,,,,,945,,945","945,945,,,,,,,,,944,944,944,944,,944,944,944,944,,,,,944,944,759,759","759,759,,,944,,944,944,944,,,,,,759,759,759,700,,700,700,700,700,700",",,,759,759,,,759,700,,,,,,,,,,,1020,,1020,1020,1020,1020,1020,,,,,700",",,,1020,,,,,700,700,700,700,,,,700,,,,,,,,,,1020,759,759,759,759,,759","759,759,759,,1020,1020,,759,759,1020,,,,,,759,,759,759,759,,,698,700","698,698,698,698,698,,230,,230,230,230,230,230,698,,,,,,,,230,,,1018","1020,1018,1018,1018,1018,1018,,,,,698,,,,1018,,,,230,698,698,698,698",",,,698,230,230,230,230,,,,230,1016,1018,1016,1016,1016,1016,1016,,,",",,1018,1018,,1016,,1018,1014,,1014,1014,1014,1014,1014,,,,,,,698,,1014",",,,1016,,230,,,,,,,,,1016,1016,,,,1016,,1014,,1018,,,,,,,1014,1014,1014","1014,,,,1014,,,,,,,,,,,,1181,1181,,,1181,,,,,,1016,,1181,1181,,1181","1181,1181,1181,1181,1181,1181,,,1181,1181,,,1014,1181,1181,1181,1181",",,,,,1181,,,,,,,,1181,1181,,1181,1181,1181,1181,1181,1181,1181,1181","1181,1181,1181,1181,299,299,1181,,299,,,,,,,,299,299,,299,299,299,299","299,299,299,,,299,299,,,,299,299,299,299,,,,,,,,,,,,,,299,299,,299,299","299,299,299,299,299,299,299,299,299,299,223,223,299,,223,,,,,,,,223","223,,223,223,223,223,223,223,223,,,223,223,,,,223,223,223,223,,,,,,223",",,,,,,,223,223,,223,223,223,223,223,223,223,223,223,223,223,223,1157","1157,223,,1157,,,,,,,,1157,1157,,1157,1157,1157,1157,1157,1157,1157",",,1157,1157,,,,1157,1157,1157,1157,,,,,,1157,,,,,,,,1157,1157,,1157","1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,516,516,1157",",516,,,,,,,,516,516,,516,516,516,516,516,516,516,,,516,516,,,,516,516","516,516,,,,,,516,,,,,,,,516,516,,516,516,516,516,516,516,516,516,516","516,516,516,1156,1156,516,,1156,,,,,,,,1156,1156,,1156,1156,1156,1156","1156,1156,1156,,,1156,1156,,,,1156,1156,1156,1156,,,,,,1156,,,,,,,,1156","1156,,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,672","672,1156,,672,,,,,,,,672,672,,672,672,672,672,672,672,672,,,672,672",",,,672,672,672,672,,,,,,672,,,,,,,,672,672,,672,672,672,672,672,672","672,672,672,672,672,672,515,515,672,,515,,,,,,,,515,515,,515,515,515","515,515,515,515,,,515,515,,,,515,515,515,515,,,,,,515,,,,,,,,515,515",",515,515,515,515,515,515,515,515,515,515,515,515,222,222,515,,222,,",",,,,,222,222,,222,222,222,222,222,222,222,,,222,222,,,,222,222,222,222",",,,,,222,,,,,,,,222,222,,222,222,222,222,222,222,222,222,222,222,222","222,588,588,222,,588,,,,,,,,588,588,,588,588,588,588,588,588,588,,,588","588,,,,588,588,588,588,,,,,,588,,,,,,,,588,588,,588,588,588,588,588","588,588,588,588,588,588,588,589,589,588,,589,,,,,,,,589,589,,589,589","589,589,589,589,589,,,589,589,,,,589,589,589,589,,,,,,589,,,,,,,,589","589,,589,589,589,589,589,589,589,589,589,589,589,589,626,626,589,,626",",,,,,,,626,626,,626,626,626,626,626,626,626,,,626,626,,,,626,626,626","626,,,,,,626,,,,,,,,626,626,,626,626,626,626,626,626,626,626,626,626","626,626,671,671,626,,671,,,,,,,,671,671,,671,671,671,671,671,671,671",",,671,671,,,,671,671,671,671,,,,,,671,,,,,,,,671,671,,671,671,671,671","671,671,671,671,671,671,671,671,627,627,671,,627,,,,,,,,627,627,,627","627,627,627,627,627,627,,,627,627,,,,627,627,627,627,,,,,,627,,,,,,",",627,627,,627,627,627,627,627,627,627,627,627,627,627,627,634,634,627",",634,,,,,,,,634,634,,634,634,634,634,634,634,634,,,634,634,,,,634,634","634,634,,,,,,634,,,,,,,,634,634,,634,634,634,634,634,634,634,634,634","634,634,634,633,633,634,,633,,,,,,,,633,633,,633,633,633,633,633,633","633,,,633,633,,,,633,633,633,633,,,,,,633,,,,,,,,633,633,,633,633,633","633,633,633,633,633,633,633,633,633,598,598,633,,598,,,,,,,,598,598",",598,598,598,598,598,598,598,,,598,598,,,,598,598,598,598,,,,,,598,",",,,,,,598,598,,598,598,598,598,598,598,598,598,598,598,598,598,599,599","598,,599,,,,,,,,599,599,,599,599,599,599,599,599,599,,,599,599,,,,599","599,599,599,,,,,,599,,,,,,,,599,599,,599,599,599,599,599,599,599,599","599,599,599,599,,,599"],racc_action_check=arr=$$$("Array").$new(28951,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),racc_action_pointer=[nil,1530,1699,101,nil,482,nil,20901,1396,63,25127,25255,87,nil,108,123,470,190,962,122,162,700,nil,-35,16902,1267,26590,276,nil,598,nil,307,8439,8549,8814,10017,10148,nil,4147,24860,24328,nil,206,690,444,339,12923,13185,283,21962,19796,979,20758,303,845,nil,nil,nil,nil,nil,nil,nil,nil,nil,15455,nil,15183,15040,14385,148,nil,14123,21176,nil,nil,13980,23542,24066,24197,nil,nil,nil,nil,nil,nil,584,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,110,nil,nil,222,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,20070,nil,nil,nil,nil,19927,19665,19272,19141,19010,nil,4867,nil,585,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,302,nil,979,22093,21700,21569,21307,13849,13718,28287,27921,nil,nil,315,2707,332,nil,27662,580,338,1267,11851,11196,11065,nil,nil,1106,138,142,453,193,372,446,nil,9886,386,299,2419,449,nil,nil,7250,7119,6583,6452,6321,6190,6059,5535,18343,18212,17688,17557,17426,16509,16116,15985,15592,14909,14778,21831,21438,13447,nil,nil,nil,nil,13316,nil,nil,532,308,563,587,488,673,710,747,755,354,nil,nil,nil,15854,nil,nil,27860,nil,nil,472,17033,17164,nil,nil,nil,nil,nil,nil,nil,17295,nil,2131,nil,478,480,nil,17819,534,17950,nil,nil,18081,5797,nil,nil,563,nil,6726,1540,517,497,5011,533,582,554,23403,3859,873,879,878,644,995,nil,618,585,-24,628,632,nil,nil,nil,644,275,608,23141,nil,666,972,4435,5273,693,nil,709,12530,nil,12661,2275,1684,653,nil,593,597,690,692,468,725,nil,719,35,36,22748,4723,4579,72,797,686,-18,-19,411,783,25,822,nil,nil,1114,802,342,nil,806,nil,742,15314,nil,13552,nil,399,366,402,469,410,-32,-34,394,nil,nil,nil,nil,nil,nil,nil,740,24999,nil,nil,nil,nil,742,nil,813,731,14254,733,nil,nil,723,nil,788,-56,835,nil,nil,1411,nil,nil,nil,nil,nil,1699,750,nil,749,751,388,425,21042,nil,nil,nil,0,695,796,nil,nil,20621,20485,20344,887,887,nil,nil,768,782,786,nil,nil,790,792,793,nil,nil,nil,nil,nil,nil,nil,nil,nil,783,3269,nil,nil,18867,nil,nil,nil,0,nil,nil,nil,880,nil,nil,882,571,23010,926,nil,nil,nil,-26,nil,859,28226,28043,22879,-82,22617,22486,22355,806,807,26997,26899,3859,4867,3322,1018,887,888,893,894,5404,5535,5666,5142,4723,4579,4291,4147,4003,3455,3311,3715,3427,2275,5011,nil,44,nil,13588,nil,nil,nil,nil,13054,843,841,845,nil,nil,nil,848,nil,nil,12792,nil,12399,nil,12268,nil,327,nil,nil,nil,12125,1108,nil,858,858,nil,nil,859,23804,863,11982,28348,28409,968,914,nil,nil,23935,871,nil,11720,28775,28836,11589,3571,2707,11327,996,877,926,nil,10934,nil,nil,10803,nil,nil,nil,3571,1007,nil,3427,90,1013,1039,11,1044,10672,10541,28470,28592,7,nil,nil,893,nil,28714,28653,10279,nil,nil,60,1843,nil,692,nil,nil,nil,nil,1177,nil,nil,nil,938,nil,nil,369,nil,324,nil,nil,924,nil,926,nil,nil,nil,25383,nil,9755,929,9612,9481,9219,28531,28165,8957,8683,724,972,8036,7905,7774,7643,972,nil,nil,7512,7381,973,nil,1030,1555,1061,6988,nil,nil,788,nil,nil,269,27654,nil,27562,nil,26660,nil,6857,nil,3298,nil,944,945,1253,951,nil,nil,nil,nil,nil,nil,1040,1843,nil,nil,nil,339,360,473,334,955,5928,5666,nil,-72,nil,nil,nil,nil,981,nil,nil,nil,-34,26447,189,nil,958,1041,960,nil,nil,26673,nil,nil,1,nil,nil,675,nil,nil,27332,27562,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,1447,590,nil,nil,966,26816,nil,1094,nil,1078,-13,nil,nil,16247,nil,993,1e3,1102,nil,980,nil,1043,14647,nil,nil,22224,nil,429,24598,998,nil,1002,233,250,1046,181,1139,1047,1026,24729,nil,1099,249,nil,nil,nil,68,614,nil,1165,nil,nil,nil,nil,nil,1183,1185,nil,nil,26,1065,8,-5,232,-4,1123,970,1112,nil,1072,2851,14516,nil,1195,-25,1080,nil,nil,nil,nil,nil,2563,nil,nil,nil,nil,nil,nil,nil,nil,1079,15723,1083,416,392,583,834,nil,1987,16378,nil,1084,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,16640,16771,1211,nil,3715,1088,1135,nil,nil,1092,nil,1176,nil,nil,1096,1104,nil,1109,1114,nil,1116,nil,nil,1120,1109,3557,nil,nil,18474,18605,18736,5142,5273,5404,377,26349,1202,26251,-68,97,26153,26055,335,-69,1125,1127,nil,25859,nil,1127,902,nil,1151,25761,25663,nil,498,1178,331,nil,nil,27464,27430,nil,nil,nil,nil,8167,nil,nil,nil,nil,nil,8298,nil,nil,1165,nil,nil,1162,1146,nil,nil,763,2131,nil,nil,nil,nil,1146,136,nil,nil,nil,1271,nil,9088,1274,nil,nil,25565,9350,4291,-1,1283,nil,1284,-77,1411,nil,nil,nil,nil,1159,1205,1176,1176,227,nil,nil,10410,3139,2563,nil,2995,nil,nil,-10,23272,nil,nil,27734,nil,27716,nil,27680,nil,27588,nil,nil,nil,nil,1190,1194,2995,2851,11458,nil,1211,nil,nil,nil,nil,1217,1218,1221,1223,1227,1230,nil,nil,nil,1274,1230,121,nil,1241,nil,nil,-70,1246,nil,nil,nil,nil,nil,nil,1290,2419,1987,nil,nil,1248,1253,nil,1258,1259,1260,nil,1285,1267,1256,23673,nil,nil,nil,nil,9,nil,13,17,nil,268,nil,nil,nil,1393,4003,3139,2117,nil,nil,nil,1555,32,33,667,1353,34,nil,1276,1285,1286,1287,3308,3413,27193,nil,nil,nil,nil,nil,nil,nil,1290,25467,nil,257,nil,27291,nil,nil,1300,nil,nil,25666,nil,nil,13607,nil,23450,nil,nil,1315,24467,1116,1370,3283,nil,19403,19534,nil,nil,nil,nil,1314,1438,609,nil,nil,nil,1441,20213,28104,27982,79,13581,nil,nil,nil,nil,1317,1318,27095,1319,nil,nil,1320,nil,nil,1334,1338,1355,1358,nil,1359,nil,555,27799,nil,574,4435,nil,nil,nil,nil,nil,1973,nil,1365,109,142,143,221,1364,25957,1372,nil,25470,nil,25862,nil,25764,nil,24375,nil,nil,1418,1421,nil,375,nil,145,nil,1382,1390,1391,1392,nil,nil,nil,25960,nil,nil,nil,nil,-104,nil],racc_action_default=[-1,-738,-4,-738,-2,-723,-5,-738,-8,-738,-738,-738,-738,-31,-738,-738,-36,-738,-738,-632,-632,-310,-52,-725,-738,-61,-738,-69,-70,-71,-75,-286,-286,-286,-323,-350,-351,-87,-13,-91,-99,-101,-738,-619,-620,-738,-738,-738,-738,-738,-738,-239,-738,-725,-257,-301,-302,-303,-304,-305,-306,-307,-308,-309,-711,-312,-316,-737,-700,-331,-333,-738,-738,-63,-63,-723,-738,-738,-738,-352,-353,-355,-412,-556,-557,-558,-559,-580,-562,-563,-582,-584,-567,-572,-576,-578,-594,-595,-596,-580,-598,-600,-601,-602,-603,-709,-608,-609,-710,-611,-612,-613,-614,-615,-616,-617,-618,-623,-624,1231,-3,-724,-733,-734,-735,-7,-738,-738,-738,-738,-738,-9,-4,-19,-738,-130,-131,-132,-133,-134,-135,-136,-140,-141,-142,-143,-144,-145,-146,-147,-148,-149,-150,-151,-152,-153,-154,-155,-156,-157,-158,-159,-160,-161,-162,-163,-164,-165,-166,-167,-168,-169,-170,-171,-172,-173,-174,-175,-176,-177,-178,-179,-180,-181,-182,-183,-184,-185,-186,-187,-188,-189,-190,-191,-192,-193,-194,-195,-196,-197,-198,-199,-200,-201,-202,-203,-204,-205,-206,-207,-208,-209,-210,-24,-137,-13,-738,-738,-738,-738,-738,-276,-738,-738,-721,-722,-738,-13,-631,-629,-655,-655,-738,-13,-738,-738,-725,-726,-56,-738,-619,-620,-738,-310,-738,-738,-245,-738,-632,-632,-13,-738,-57,-59,-222,-223,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-258,-259,-260,-261,-738,-65,-66,-738,-130,-131,-170,-171,-172,-188,-193,-200,-203,-619,-620,-698,-738,-421,-423,-738,-719,-720,-76,-276,-738,-330,-427,-436,-438,-82,-433,-83,-725,-84,-264,-281,-291,-291,-285,-289,-292,-738,-580,-702,-706,-738,-85,-86,-723,-14,-738,-17,-738,-89,-13,-725,-738,-92,-95,-13,-107,-108,-738,-738,-115,-323,-326,-725,-738,-632,-632,-350,-351,-354,-434,-738,-97,-738,-103,-320,-738,-224,-225,-599,-233,-234,-738,-246,-738,-13,-314,-725,-265,-730,-730,-738,-738,-730,-738,-332,-62,-738,-738,-738,-13,-13,-723,-738,-724,-619,-620,-738,-738,-310,-738,-365,-366,-125,-126,-738,-128,-738,-310,-627,-738,-346,-655,-560,-738,-738,-738,-738,-738,-738,-738,-738,-6,-736,-25,-26,-27,-28,-29,-738,-738,-21,-22,-23,-138,-738,-32,-35,-297,-738,-738,-296,-33,-738,-37,-738,-310,-49,-51,-211,-269,-292,-53,-54,-38,-212,-269,-725,-277,-291,-291,-712,-713,-286,-431,-714,-715,-713,-712,-286,-430,-432,-714,-715,-738,-548,-738,-378,-379,-725,-697,-697,-637,-638,-640,-640,-640,-654,-656,-657,-658,-659,-660,-661,-662,-663,-664,-738,-666,-668,-670,-675,-677,-678,-681,-686,-688,-689,-691,-692,-693,-695,-738,-738,-738,-48,-219,-55,-725,-329,-738,-738,-738,-276,-320,-738,-738,-738,-738,-738,-738,-738,-220,-221,-226,-227,-228,-229,-230,-231,-235,-236,-237,-238,-240,-241,-242,-243,-244,-247,-248,-249,-250,-725,-262,-67,-725,-442,-286,-712,-713,-73,-77,-656,-725,-291,-725,-287,-440,-442,-725,-325,-282,-738,-283,-738,-288,-738,-293,-738,-705,-708,-12,-724,-16,-18,-725,-88,-318,-104,-93,-738,-725,-276,-738,-738,-114,-738,-631,-599,-738,-100,-105,-738,-738,-738,-738,-263,-251,-738,-738,-725,-738,-266,-732,-731,-268,-732,-321,-322,-701,-13,-356,-357,-13,-738,-738,-738,-738,-738,-738,-276,-738,-738,-320,-63,-125,-126,-127,-738,-738,-276,-342,-625,-738,-13,-413,-655,-416,-561,-581,-586,-738,-588,-564,-583,-738,-585,-566,-738,-569,-738,-571,-574,-738,-575,-738,-597,-10,-20,-738,-30,-738,-300,-738,-738,-276,-738,-738,-738,-738,-435,-738,-278,-280,-738,-738,-78,-275,-428,-738,-738,-80,-429,-44,-253,-737,-737,-348,-630,-738,-635,-636,-738,-738,-647,-738,-650,-738,-652,-738,-367,-738,-369,-371,-374,-377,-725,-669,-679,-680,-690,-694,-633,-46,-255,-349,-328,-727,-712,-713,-712,-713,-725,-738,-738,-58,-456,-459,-460,-461,-462,-464,-466,-469,-470,-527,-725,-482,-485,-497,-501,-506,-508,-509,-512,-513,-580,-516,-518,-519,-520,-525,-526,-738,-738,-530,-531,-532,-533,-534,-535,-536,-537,-538,-539,-540,-738,-738,-546,-60,-738,-738,-699,-738,-443,-72,-424,-440,-271,-278,-273,-738,-402,-738,-324,-291,-290,-294,-738,-703,-704,-738,-15,-90,-738,-96,-102,-725,-712,-713,-274,-716,-113,-738,-98,-738,-218,-232,-725,-313,-315,-317,-730,-737,-358,-737,-64,-359,-360,-336,-337,-738,-738,-448,-339,-738,-725,-712,-713,-716,-319,-13,-125,-126,-129,-725,-13,-738,-344,-738,-738,-725,-587,-590,-591,-592,-593,-13,-565,-568,-570,-573,-577,-579,-139,-34,-298,-738,-725,-712,-713,-713,-712,-50,-270,-738,-728,-291,-40,-214,-41,-215,-79,-42,-217,-43,-216,-81,-738,-738,-737,-363,-13,-549,-737,-550,-551,-697,-676,-681,-696,-639,-640,-640,-667,-640,-640,-687,-640,-664,-682,-725,-738,-738,-376,-665,-738,-738,-738,-738,-738,-738,-435,-457,-738,-738,-467,-468,-738,-738,-738,-487,-725,-725,-481,-488,-494,-738,-738,-484,-738,-738,-738,-500,-507,-511,-738,-515,-517,-523,-524,-528,-529,-541,-542,-738,-604,-605,-606,-126,-544,-738,-68,-422,-402,-426,-425,-738,-725,-437,-403,-725,-13,-439,-284,-295,-707,-94,-435,-106,-327,-267,-738,-361,-738,-738,-338,-340,-738,-738,-13,-435,-738,-435,-738,-738,-13,-347,-414,-417,-419,-406,-738,-738,-299,-435,-39,-213,-279,-45,-254,-11,-13,-555,-364,-738,-738,-553,-634,-738,-643,-738,-645,-738,-648,-738,-651,-653,-368,-370,-372,-375,-47,-256,-738,-458,-497,-463,-465,-474,-478,-725,-725,-725,-725,-725,-725,-545,-479,-480,-504,-489,-492,-495,-725,-580,-729,-725,-498,-502,-505,-510,-514,-521,-522,-738,-252,-13,-74,-272,-697,-697,-383,-385,-385,-385,-401,-738,-725,-664,-672,-673,-684,-441,-334,-738,-335,-738,-453,-294,-737,-341,-343,-626,-738,-13,-13,-738,-415,-589,-554,-13,-619,-620,-738,-738,-310,-552,-640,-640,-640,-640,-738,-738,-738,-471,-472,-473,-475,-476,-477,-496,-490,-738,-483,-738,-486,-738,-543,-444,-738,-381,-382,-386,-392,-394,-738,-397,-738,-399,-404,-738,-738,-671,-738,-13,-449,-738,-738,-445,-446,-447,-345,-738,-738,-725,-408,-410,-411,-548,-276,-738,-738,-320,-738,-641,-644,-646,-649,-373,-498,-738,-493,-499,-503,-697,-674,-384,-385,-385,-385,-385,-685,-385,-405,-683,-738,-320,-737,-13,-454,-455,-418,-420,-407,-738,-547,-725,-712,-713,-716,-319,-640,-738,-491,-380,-738,-389,-738,-391,-738,-395,-738,-398,-400,-319,-716,-362,-737,-409,-435,-642,-385,-385,-385,-385,-450,-451,-452,-738,-387,-390,-393,-396,-385,-388],clist=["44,138,138,306,310,44,315,315,315,298,408,282,380,380,457,463,380,138","222,281,690,379,415,451,294,15,827,141,141,300,15,560,632,675,229,229","44,341,341,470,124,353,353,615,618,508,381,382,384,385,386,623,794,336","568,899,337,133,214,238,595,15,885,791,44,791,233,380,380,380,380,977","435,436,390,294,294,705,353,353,353,556,372,730,774,299,490,490,120","15,902,552,733,733,794,892,699,701,703,395,121,418,419,420,421,558,1053","235,607,610,124,131,614,448,481,481,317,317,317,44,1024,934,927,363","333,695,696,509,44,997,44,302,309,311,356,711,1069,368,4,1031,752,752","8,967,15,1026,335,8,928,374,377,473,506,15,1177,15,786,125,387,446,447","794,1151,778,1010,946,947,2,313,326,327,403,405,791,791,788,511,512","1006,1153,797,604,213,316,316,316,396,226,232,1038,1041,568,980,315","458,592,592,653,655,1049,431,424,524,525,821,283,370,776,782,664,366","375,781,44,467,442,373,295,442,376,394,636,1046,369,1177,44,605,371","841,1054,429,44,442,991,639,1025,1071,550,15,515,437,1129,1073,437,1150","573,640,993,44,1072,15,430,441,406,845,441,15,437,1090,1091,1214,8,490","229,229,336,839,449,423,441,422,416,8,15,551,315,315,1153,1165,562,791","510,563,300,315,959,826,1167,800,1144,481,1082,705,1221,983,233,909","809,1173,1030,1184,1032,1033,923,1036,1039,924,457,463,917,894,933,936","1055,1056,1062,949,889,1,727,306,1024,407,929,380,409,310,642,44,410","1037,1040,44,411,412,1199,341,44,413,549,353,414,588,1168,1164,638,847","852,842,336,906,1058,1059,15,336,341,1136,15,619,353,598,897,15,124","893,434,434,44,649,651,654,654,1171,,596,,962,899,,,805,,44,44,973,","317,,,802,805,626,15,,317,,233,,,620,621,1054,,,902,955,,15,15,,1054","576,,986,1169,138,522,523,805,,333,124,988,577,,333,805,831,1119,682","593,591,584,,579,687,1212,840,561,671,688,141,580,,,1000,564,586,,,","844,559,316,,606,,1145,1054,,877,316,,457,463,882,,,,622,578,663,863",",,,,,,718,,,,,,899,794,458,,315,1169,,985,705,705,,,490,,791,,,972,","1035,,,467,,1043,1044,,963,,,1015,1017,,1019,1021,,1022,768,768,682","481,1170,969,,,,,,731,731,676,,,,752,752,717,1083,1013,813,,898,890","900,752,,733,976,,490,752,490,681,1042,315,458,,846,686,899,,510,,449",",458,,873,875,,44,,878,880,,467,,,341,,1222,,353,,,467,,341,,,,353,315","458,752,15,,596,,836,,458,315,,969,,596,855,44,855,,44,1223,467,,,1113","1114,1115,467,,,,,,818,775,,820,,,,44,15,,,15,315,458,811,,,,,790,,","780,989,822,138,,,,,,,15,467,44,34,,442,,,34,44,1096,843,941,,,442,442",",,141,442,442,,,,34,,15,817,,437,705,705,,15,34,34,34,,34,437,437,441","1191,891,437,437,,,859,,,441,441,1126,1127,,441,441,1160,1161,1162,1163",",874,876,,34,,879,881,961,34,34,,,34,768,,894,1140,,1141,,,768,,1146","926,,895,,,895,768,768,940,872,,957,960,1001,,,,138,,281,,,,830,1215",",,682,,,687,,,380,34,,901,,903,34,34,34,34,34,,34,,341,,,,353,,1089",",,860,,341,,,676,353,868,1070,1216,596,990,,,,1200,1074,,,676,935,974",",1075,,,,,44,,,,,44,434,,,,,,,,,,44,987,,,,,,,,15,,,1103,,15,,872,998","442,,490,1066,,,1124,15,,,34,34,34,34,34,34,34,44,676,,,,34,380,,437",",,34,34,34,34,1008,,1009,1149,1012,441,,,,,15,,,34,,676,768,1002,768",",380,768,768,,676,1060,,926,768,,996,,926,926,768,768,,,,,,,768,768",",1052,,676,805,,,,,,1080,,,1192,,34,874,876,881,879,,44,34,34,,,,,,1120",",34,1174,,,1175,,768,1078,44,1074,,,1074,1075,44,15,1075,731,34,1075",",1075,34,,,1085,,34,,,44,676,,15,1098,,676,676,353,15,,,,,,,,1095,,1067","1088,,,,,15,,34,1066,1102,,1066,,1066,,,,,,,,34,34,34,1217,996,,1068",",,,,1074,,,44,,,,1075,,1075,34,1075,,1075,,,294,,,1002,353,,,,,,380","380,15,,1075,44,44,,,,,44,,,,,1156,1104,,1105,,1106,1148,1066,768,1066",",1066,1154,1066,15,15,,768,1185,1186,15,768,,,676,676,676,,315,458,1066",",34,,935,,294,,,44,353,,,,,,31,,,467,,31,,,,,1183,,996,,,,,,15,768,",",31,,,34,,467,,,,,31,31,31,34,31,44,895,,,1067,,,1067,,1067,,,,,768",",,1213,,,,,,,,15,513,31,,,,,31,31,,1176,31,1178,,,,,,,,,,,,,378,,1189",",,,,,34,,,,,1197,1130,1132,1134,,34,,,,,,,,,1067,,1067,,1067,31,1067","34,,,31,31,31,31,31,,31,676,,34,,,34,1067,,565,,,1218,34,1219,,1220",",,,,,,34,,,,34,,,,,581,,,1229,,,,,,,,,,,,,,,,,,,34,,,34,34,,,34,,,,",",34,34,,,,34,34,,,1202,1204,1206,1208,,1209,,31,31,31,31,31,31,31,,","18,,,31,,18,,,,31,31,31,31,432,445,,,,,,,,239,,,,31,,1225,1226,1227","1228,239,239,239,,18,342,342,,1230,,,,,,,,,,,,,,,,,,,,,,,,18,,,,,239","239,,31,239,391,401,401,,693,31,31,,,,,,,,31,,,,,,,,,,,,760,760,,,,","31,,,,31,,,,,31,570,721,572,18,,574,575,,239,239,239,239,18,,18,,34",",,,,34,34,,,,,,,31,,,34,,,,,,,777,,,,31,31,31,,783,,785,34,,,789,,,",",,,,,,,31,,,34,,798,,,,,,801,,,,,,,,,,,,,,,,,,,815,,,18,239,439,239","239,439,239,,,,,,18,,,,,667,18,439,239,239,,,,,,,,,,31,,34,,18,,,,,",",,,,,,,,,34,,,,,,,,,,,,34,,,,,,34,,31,,,,34,,,,712,,31,239,,,,,,,239","239,34,,,,,,,239,,,,,,910,760,,,,,,,17,760,,,18,17,,,18,,760,760,342","18,,,,,,,,,,,,,,,,31,,342,,,34,,17,,,31,792,,378,18,795,,,,769,769,",",,,,31,,239,18,18,,,34,34,17,,,31,34,,31,,,,,,,31,239,,,792,,,378,,","31,,,,31,,,975,,,445,,,,,,,,,,,,,,,34,,34,34,,,31,17,,31,31,,,31,,34","17,,17,31,31,,,,31,31,,,,861,239,,,,,,,,792,378,,,,,34,,,,,,,,888,,",",,,760,,760,,,760,760,905,,,,239,760,,,,,1023,760,760,,239,,,,,760,760",",,,,1034,,,,,,,,,,,17,,17,,,17,,,,,,,17,,,,,,17,17,,,760,,,,,,,,,1064",",,,17,,,18,,,,,,792,,342,,239,,,,769,970,,342,971,,,,769,,,,239,,,,","769,769,,,,,31,18,,,18,31,31,,,,,239,,,,,31,,,,,239,,,,18,,,,1110,1111","1112,,,31,,,,,,17,,,,17,1121,,999,,17,,31,18,,,439,239,,,18,,,,,,439","439,,,,439,439,43,760,763,763,,43,,17,,,760,,,,760,,,,,,,,17,17,293",",,,,,,,,,,,43,340,340,,,,31,,,,,,,,,,,,,,,,760,31,,,,,43,,,,,,,31,,","389,293,293,31,,,,,769,31,769,,,769,769,,760,,,,769,,,1084,,31,769,769",",,,,,,769,769,,,,342,,,378,,,43,,,767,767,342,,,,43,,43,,,,,,,,,,,,",",,,,769,,,18,,,,31,18,239,,,,,,,,,,18,,,,,,,,,,,,,,,,31,31,439,,,,31",",,,,,,,,,,,,18,,,,,,,,,,,,43,,17,,,,763,,,,,,43,,763,,,,43,31,,31,31","763,763,,,,,,,,,,31,43,,,,,17,,,17,,,,761,761,,,239,,,,,,,,,769,,,31","17,,,,18,769,,,,769,,,,,,,239,,,,,,18,,,,,17,18,,17,,,,17,,,,,,17,17",",,18,17,17,,1099,,,43,,769,,43,,,,340,43,,767,,,,,,,,767,,,,,,,19,340","767,767,,19,,,769,,,,,43,,,,,,,,,18,,,,,,43,43,,,,,,1138,19,349,349",",,,763,,763,,,763,763,,18,18,,,763,,18,,,,763,763,,,19,,,,763,763,,",",,349,349,349,,,,,,,,,,,,,,,,,,,,,1180,,,18,,239,239,,,,763,,,,,,,,239",",,,19,17,,,761,,17,,,19,,19,761,,,,,17,,,,761,761,,,18,,,,,,,,,,17,",",,,,,,767,,767,,,767,767,,,17,,,767,,,,,,767,767,,,,,,,767,767,,,,,",",,,,,,,,,,,,,,,,,,19,,19,,,19,,,43,,,,19,,767,,340,,19,19,763,,,,,340",",21,,763,,,21,763,,19,,,17,,,,,,,,43,,,43,,,,,,,17,,,,,,17,21,344,344",",,,,43,,,,,,,763,17,,,,,,,,,761,,761,,21,761,761,,762,762,43,,761,,393","402,402,43,761,761,,,763,,,,761,761,19,,,,19,,,,349,19,,,,,,,,,17,,",",,,,767,,349,20,,,21,,20,767,,,761,767,19,21,,21,,,,17,17,,,,,17,,19","19,,,,,,,,,20,350,350,,,,,,,,,,,,,,,,767,,,,,,,,,,20,,,,17,,,,,,350","350,350,,,,,,,,,,767,340,,,,,,,,,,21,340,440,,,440,,,,,,,21,,,17,,,21","440,,,20,,,,,43,,,,20,43,20,,21,,,761,,,,,43,,,,761,,,,761,,,,,,,,,",",,,,,,765,765,,,,762,,,,,,43,,762,,,,,,,,,762,762,,,,,761,,,,,,,,,,",",,,,,,,,,21,20,,20,21,,20,19,344,21,,,761,20,,349,,,,20,20,,,,349,,","344,,,,,,,,,20,,,21,,,,43,,19,,,19,,,,,,21,21,,,,,,43,,,,,,43,,19,,",",,,,,,,,,,,43,,,,1097,,766,766,,,,,,19,,,19,,,,19,,,,,,19,19,,,,19,19","20,,,,20,,,,350,20,,,,,,,,,762,,762,,43,762,762,,,350,,,762,,,,,293","762,762,,20,,,,,762,762,,,,,43,43,,765,20,20,43,,,,,765,,,,,,,,,765","765,,,,,,,,,,,,762,,,,,,,,,,,,,,293,,,43,,,,,,,,,,,,,349,,,,,,,,,,,349",",,,,,,21,,,,,,,,344,,,,,43,,,,344,,19,,,,,19,,,,,,,,,,,19,,,21,,,21",",,,,,,,,,764,764,19,,,,,,766,,,21,,,,,766,,851,19,,,,,,766,766,762,",",,,,,,,762,,21,,762,440,,,,21,,,765,,765,440,440,765,765,,440,440,,","765,,,,,20,765,765,,,,,,350,765,765,,,,,,,350,,762,,,,,,,,,,,,,,,19",",,,20,,,20,,,,,,,765,,,762,19,,,,,,19,,,,20,,,,,,,,,,,,19,,,,349,,,",",,,,,,,20,,,20,,,,20,,,,,,20,20,,,344,20,20,,,,,,,,,344,,,766,,766,",",766,766,,,19,,,766,,,,,,766,766,,,349,21,,,766,766,21,,,,764,,,,,19","19,21,764,,,19,,,,,,764,764,,,,765,,,440,,,,,,765,,766,,765,,,,,,,21",",,,,,,,,,349,,,19,,,,,,,,,,,,,,,350,,,,,246,,,,765,,350,,,,314,314,314",",,,,,,,,,361,362,19,364,365,,367,,,,20,,,,765,20,,,,,,314,314,,,21,20",",,,,,,,,,,,,,,,,21,20,,,,,21,,,,,,,,,,,,20,766,,,21,,,,1101,,766,,,","766,,,,,764,,764,,,764,764,,,,,,764,,,,,,764,764,,,,,,,764,764,,,,,",",,,,,,766,21,,,,,,,,,,,,,402,,,,,,,,20,,,,764,,,21,21,,766,,,21,,,,","20,,,,,,20,,,,,314,444,,,450,314,,,,,,20,,,,350,,,450,,,,,,,402,,,21",",,246,,,,,,,526,527,528,529,530,531,532,533,534,535,536,537,538,539","540,541,542,543,544,545,546,547,,,,,548,,20,,,,,,21,,,,,,,350,,,,,,",",314,314,,,,,,20,20,314,,,,20,764,,314,,314,,,314,314,764,,,,764,,,",",,,,,,,,,,,,,,,,,,,,,,,350,,,20,,,,,,601,,602,,,,,,764,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,20,,764,,,,,,,,,,,,,,,,,,,,,,,,,,,314,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,689,,,,,,,,,,,,,,,,,,,,,,,,,,314,,,,,,,,,,,,,719",",,,,,,,,,314,,450,450,450,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,362,,,",",,,,,,314,,314,,314,,,,,,,,,,,,,,,,314,,,,,,,,,,450,,,812,,,,,,,,314",",,314,,,,,,,,,,,,,314,314,,,,,,,,,,314,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,314,450,314,,,,869,,,314,314,450,450,,,,450,450,,,,,,314,,,,,,,,",",,,,314,,,,,,,,,,,,,,,,,,,,,,,,689,719,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,314,,,,,,,,,314,,,314,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,314,,,,,,,,450,,,,,,,,,",",,,1004,1005,,,,,,,,,,,,,,,,,,,,,,,,,,,1027,1028,450,450,450,450,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1061,,,,,,,,,,,,,,,,,,,,,,,,,,,","314,,,,,,,,,,,,,,,,,,,314,,,,,,,,,,,,,,,,,,,,,,,,,,450,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,314"],racc_goto_table=arr=$$$("Array").$new(4695,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),clist=["71,74,74,89,89,71,36,36,36,151,191,46,26,26,54,54,26,74,33,48,12,105","191,31,71,23,111,76,76,33,23,90,72,32,85,85,71,71,71,10,114,81,81,108","108,10,19,19,44,44,19,110,232,11,92,224,67,17,17,22,69,23,13,93,71,93","115,26,26,26,26,109,24,24,71,71,71,123,81,81,81,56,85,41,41,50,223,223","5,23,228,54,170,170,232,128,221,221,221,23,7,19,19,19,19,31,185,40,87","87,114,9,87,28,218,218,88,88,88,71,122,180,168,79,63,132,132,28,71,142","71,55,55,55,68,124,138,40,2,186,193,193,8,140,23,125,64,8,169,88,88","150,150,23,229,23,57,6,5,26,26,232,144,154,200,195,195,3,62,62,62,73","73,93,93,154,26,26,14,145,16,10,18,86,86,86,21,35,35,171,171,92,13,36","89,217,217,207,207,171,25,27,42,43,45,49,8,51,59,77,82,84,91,71,74,20","86,103,20,104,112,113,184,116,229,71,117,118,119,184,11,71,20,120,121","126,130,26,23,33,23,135,136,23,143,191,146,147,71,142,23,22,22,148,149","22,23,23,152,153,144,8,223,85,85,11,72,78,2,22,8,6,8,23,155,36,36,145","185,157,93,78,158,33,36,161,110,185,69,162,218,163,123,164,165,115,123","69,138,168,166,173,175,176,168,168,177,54,54,32,193,181,182,188,189","140,198,199,1,31,89,122,203,32,26,204,89,150,71,205,169,169,71,206,209","185,71,71,210,50,81,211,33,186,125,26,212,213,216,11,124,195,195,23","11,71,142,23,19,81,33,222,23,114,226,86,86,71,208,208,208,208,227,,67",",57,224,,,54,,71,71,32,,88,,,31,54,33,23,,88,,115,,,11,11,184,,,228","72,,23,23,,184,5,,32,184,74,35,35,54,,63,114,32,7,,63,54,31,180,89,79","40,68,,9,89,109,31,62,33,36,76,64,,,32,62,64,,,,10,86,86,,40,,13,184",",56,86,,54,54,56,,,,5,8,17,31,,,,,,,36,,,,,,224,232,89,,36,184,,108","123,123,,,223,,93,,,69,,32,,,74,,32,32,,90,,,221,221,,221,221,,221,71","71,89,218,128,92,,,,,,167,167,40,,,,193,193,114,41,132,26,,139,24,139","193,,170,87,,223,193,223,55,72,36,89,,150,55,224,,78,,78,,89,,28,28",",71,,28,28,,74,,,71,,13,,81,,,74,,71,,,,81,36,89,193,23,,67,,44,,89","36,,92,,67,208,71,208,,71,111,74,,,32,32,32,74,,,,,,11,40,,11,,,,71","23,,,23,36,89,78,,,,,88,,,55,10,114,74,,,,,,,23,74,71,61,,20,,,61,71","108,114,191,,,20,20,,,76,20,20,,,,61,,23,88,,23,123,123,,23,61,61,61",",61,23,23,22,12,85,23,23,,,17,,,22,22,132,132,,22,22,221,221,221,221",",78,78,,61,,78,78,105,61,61,,,61,71,,193,108,,108,,,71,,110,167,,133",",,133,71,71,167,88,,46,151,28,,,,74,,48,,,,86,32,,,89,,,89,,,26,61,","137,,137,61,61,61,61,61,,61,,71,,,,81,,10,,,8,,71,,,40,81,8,139,221","67,19,,,,132,223,,,40,40,67,,225,,,,,71,,,,,71,86,,,,,,,,,,71,11,,,",",,,,23,,,139,,23,,88,11,20,,223,127,,,10,23,,,61,61,61,61,61,61,61,71","40,,,,61,26,,23,,,61,61,61,61,85,,11,10,85,22,,,,,23,,,61,,40,71,78","71,,26,71,71,,40,19,,167,71,,40,,167,167,71,71,,,,,,,71,71,,167,,40","54,,,,,,19,,,31,,61,78,78,78,78,,71,61,61,,,,,,191,,61,139,,,139,,71","11,71,223,,,223,225,71,23,225,167,61,225,,225,61,,,11,,61,,,71,40,,23","71,,40,40,81,23,,,,,,,,11,,133,114,,,,,23,,61,127,23,,127,,127,,,,,",",,61,61,61,139,40,,137,,,,,223,,,71,,,,225,,225,61,225,,225,,,71,,,78","81,,,,,,26,26,23,,225,71,71,,,,,71,,,,,33,137,,137,,137,11,127,71,127",",127,11,127,23,23,,71,19,19,23,71,,,40,40,40,,36,89,127,,61,,40,,71",",,71,81,,,,,,58,,,74,,58,,,,,11,,40,,,,,,23,71,,,58,,,61,,74,,,,,58","58,58,61,58,71,133,,,133,,,133,,133,,,,,71,,,11,,,,,,,,23,65,58,,,,","58,58,,137,58,137,,,,,,,,,,,,,83,,40,,,,,,61,,,,,137,134,134,134,,61",",,,,,,,,133,,133,,133,58,133,61,,,58,58,58,58,58,,58,40,,61,,,61,133",",65,,,137,61,137,,137,,,,,,,61,,,,61,,,,,65,,,137,,,,,,,,,,,,,,,,,,","61,,,61,61,,,61,,,,,,61,61,,,,61,61,,,134,134,134,134,,134,,58,58,58","58,58,58,58,,,30,,,58,,30,,,,58,58,58,58,83,83,,,,,,,,30,,,,58,,134","134,134,134,30,30,30,,30,30,30,,134,,,,,,,,,,,,,,,,,,,,,,,,30,,,,,30","30,,58,30,30,30,30,,65,58,58,,,,,,,,58,,,,,,,,,,,,95,95,,,,,58,,,,58",",,,,58,83,65,83,30,,83,83,,30,30,30,30,30,,30,,61,,,,,61,61,,,,,,,58",",,61,,,,,,,65,,,,58,58,58,,65,,65,61,,,65,,,,,,,,,,,58,,,61,,65,,,,",",65,,,,,,,,,,,,,,,,,,,65,,,30,30,30,30,30,30,30,,,,,,30,,,,,83,30,30","30,30,,,,,,,,,,58,,61,,30,,,,,,,,,,,,,,,61,,,,,,,,,,,,61,,,,,,61,,58",",,,61,,,,83,,58,30,,,,,,,30,30,61,,,,,,,30,,,,,,65,95,,,,,,,29,95,,","30,29,,,30,,95,95,30,30,,,,,,,,,,,,,,,,58,,30,,,61,,29,,,58,83,,83,30","83,,,,107,107,,,,,,58,,30,30,30,,,61,61,29,,,58,61,,58,,,,,,,58,30,",",83,,,83,,,58,,,,58,,,65,,,83,,,,,,,,,,,,,,,61,,61,61,,,58,29,,58,58",",,58,,61,29,,29,58,58,,,,58,58,,,,83,30,,,,,,,,83,83,,,,,61,,,,,,,,83",",,,,,95,,95,,,95,95,83,,,,30,95,,,,,65,95,95,,30,,,,,95,95,,,,,65,,",",,,,,,,,29,,29,,,29,,,,,,,29,,,,,,29,29,,,95,,,,,,,,,65,,,,29,,,30,",",,,,83,,30,,30,,,,107,83,,30,83,,,,107,,,,30,,,,,107,107,,,,,58,30,",",30,58,58,,,,,30,,,,,58,,,,,30,,,,30,,,,65,65,65,,,58,,,,,,29,,,,29","65,,83,,29,,58,30,,,30,30,,,30,,,,,,30,30,,,,30,30,70,95,98,98,,70,","29,,,95,,,,95,,,,,,,,29,29,70,,,,,,,,,,,,70,70,70,,,,58,,,,,,,,,,,,",",,,95,58,,,,,70,,,,,,,58,,,70,70,70,58,,,,,107,58,107,,,107,107,,95",",,,107,,,83,,58,107,107,,,,,,,107,107,,,,30,,,83,,,70,,,102,102,30,",",,70,,70,,,,,,,,,,,,,,,,,107,,,30,,,,58,30,30,,,,,,,,,,30,,,,,,,,,,",",,,,,58,58,30,,,,58,,,,,,,,,,,,,30,,,,,,,,,,,,70,,29,,,,98,,,,,,70,","98,,,,70,58,,58,58,98,98,,,,,,,,,,58,70,,,,,29,,,29,,,,96,96,,,30,,",",,,,,,107,,,58,29,,,,30,107,,,,107,,,,,,,30,,,,,,30,,,,,29,30,,29,,",",29,,,,,,29,29,,,30,29,29,,30,,,70,,107,,70,,,,70,70,,102,,,,,,,,102",",,,,,,34,70,102,102,,34,,,107,,,,,70,,,,,,,,,30,,,,,,70,70,,,,,,30,34","34,34,,,,98,,98,,,98,98,,30,30,,,98,,30,,,,98,98,,,34,,,,98,98,,,,,34","34,34,,,,,,,,,,,,,,,,,,,,,30,,,30,,30,30,,,,98,,,,,,,,30,,,,34,29,,","96,,29,,,34,,34,96,,,,,29,,,,96,96,,,30,,,,,,,,,,29,,,,,,,,102,,102",",,102,102,,,29,,,102,,,,,,102,102,,,,,,,102,102,,,,,,,,,,,,,,,,,,,,",",,,34,,34,,,34,,,70,,,,34,,102,,70,,34,34,98,,,,,70,,39,,98,,,39,98",",34,,,29,,,,,,,,70,,,70,,,,,,,29,,,,,,29,39,39,39,,,,,70,,,,,,,98,29",",,,,,,,,96,,96,,39,96,96,,97,97,70,,96,,39,39,39,70,96,96,,,98,,,,96","96,34,,,,34,,,,34,34,,,,,,,,,29,,,,,,,102,,34,38,,,39,,38,102,,,96,102","34,39,,39,,,,29,29,,,,,29,,34,34,,,,,,,,,38,38,38,,,,,,,,,,,,,,,,102",",,,,,,,,,38,,,,29,,,,,,38,38,38,,,,,,,,,,102,70,,,,,,,,,,39,70,39,,","39,,,,,,,39,,,29,,,39,39,,,38,,,,,70,,,,38,70,38,,39,,,96,,,,,70,,,","96,,,,96,,,,,,,,,,,,,,,,100,100,,,,97,,,,,,70,,97,,,,,,,,,97,97,,,,","96,,,,,,,,,,,,,,,,,,,,39,38,,38,39,,38,34,39,39,,,96,38,,34,,,,38,38",",,,34,,,39,,,,,,,,,38,,,39,,,,70,,34,,,34,,,,,,39,39,,,,,,70,,,,,,70",",34,,,,,,,,,,,,,,70,,,,70,,101,101,,,,,,34,,,34,,,,34,,,,,,34,34,,,","34,34,38,,,,38,,,,38,38,,,,,,,,,97,,97,,70,97,97,,,38,,,97,,,,,70,97","97,,38,,,,,97,97,,,,,70,70,,100,38,38,70,,,,,100,,,,,,,,,100,100,,,",",,,,,,,,97,,,,,,,,,,,,,,70,,,70,,,,,,,,,,,,,34,,,,,,,,,,,34,,,,,,,39",",,,,,,,39,,,,,70,,,,39,,34,,,,,34,,,,,,,,,,,34,,,39,,,39,,,,,,,,,,99","99,34,,,,,,101,,,39,,,,,101,,39,34,,,,,,101,101,97,,,,,,,,,97,,39,,97","39,,,,39,,,100,,100,39,39,100,100,,39,39,,,100,,,,,38,100,100,,,,,,38","100,100,,,,,,,38,,97,,,,,,,,,,,,,,,34,,,,38,,,38,,,,,,,100,,,97,34,",",,,,34,,,,38,,,,,,,,,,,,34,,,,34,,,,,,,,,,,38,,,38,,,,38,,,,,,38,38",",,39,38,38,,,,,,,,,39,,,101,,101,,,101,101,,,34,,,101,,,,,,101,101,",",34,39,,,101,101,39,,,,99,,,,,34,34,39,99,,,34,,,,,,99,99,,,,100,,,39",",,,,,100,,101,,100,,,,,,,39,,,,,,,,,,34,,,34,,,,,,,,,,,,,,,38,,,,,37",",,,100,,38,,,,37,37,37,,,,,,,,,,37,37,34,37,37,,37,,,,38,,,,100,38,",",,,,37,37,,,39,38,,,,,,,,,,,,,,,,,39,38,,,,,39,,,,,,,,,,,,38,101,,,39",",,,39,,101,,,,101,,,,,99,,99,,,99,99,,,,,,99,,,,,,99,99,,,,,,,99,99",",,,,,,,,,,,101,39,,,,,,,,,,,,,39,,,,,,,,38,,,,99,,,39,39,,101,,,39,",",,,38,,,,,,38,,,,,37,37,,,37,37,,,,,,38,,,,38,,,37,,,,,,,39,,,39,,,37",",,,,,,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37","37,,,,,37,,38,,,,,,39,,,,,,,38,,,,,,,,37,37,,,,,,38,38,37,,,,38,99,","37,,37,,,37,37,99,,,,99,,,,,,,,,,,,,,,,,,,,,,,,,,,38,,,38,,,,,,37,,37",",,,,,99,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,38,,99,,,,,,,,,,,,,,,,,,,,,,,,",",,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,37",",,,,,,,,,,,,37,,,,,,,,,,37,,37,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,37,,,,,,,,,,37,,37,,37,,,,,,,,,,,,,,,,37,,,,,,,,,,37,,,37,,,,,,",",37,,,37,,,,,,,,,,,,,37,37,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,37,37,37,,,,37,,,37,37,37,37,,,,37,37,,,,,,37,,,,,,,,,,,,,37,,,,",",,,,,,,,,,,,,,,,,,,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,37,,,,,,,,,37,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,37,,,,,,,,,,,,,37,37,,,,,,,,,,",",,,,,,,,,,,,,,,,37,37,37,37,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,37,,,,,,,,,",",,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,37"],racc_goto_check=arr=$$$("Array").$new(4695,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),racc_goto_pointer=[nil,318,136,167,nil,83,150,95,140,102,-188,15,-449,-628,-707,nil,-397,47,171,-25,-2,110,35,23,-144,-16,-59,68,-107,1689,1365,-198,-418,0,2403,168,-28,3539,2759,2643,84,-441,-50,-50,-25,-415,-15,nil,-7,179,56,-342,nil,nil,-208,100,-221,-406,1143,-347,nil,663,134,86,108,972,nil,17,94,-297,2049,-2,-367,94,-9,nil,17,-219,47,75,nil,2,159,1164,144,15,149,-265,82,-28,-272,-340,-263,-504,nil,943,1787,2189,1529,2747,2401,2538,1649,191,151,-48,nil,1215,-338,-747,-336,-596,144,-182,35,46,158,-144,161,-408,-610,-171,-787,-414,-356,-763,-672,-95,-599,nil,-730,nil,-349,58,178,-827,-724,86,-830,-152,-644,nil,-717,-848,-930,-913,-160,-598,171,-386,-79,-18,-736,-736,-388,-23,nil,-28,-26,nil,nil,-494,-796,-692,-920,-534,-841,9,-619,-593,-432,-734,nil,-618,nil,-618,-437,-434,nil,nil,-621,-431,-431,nil,-708,-831,-779,nil,-626,-625,nil,-77,nil,-384,nil,-593,nil,nil,-455,-374,-725,nil,nil,237,235,238,241,-214,-41,241,244,246,-300,-300,nil,nil,-289,-154,-116,nil,nil,-382,-337,-144,-643,-137,-330,-753,-610,-977,nil,nil,-517],racc_goto_default=[nil,nil,nil,nil,5,nil,6,388,331,nil,nil,469,nil,978,nil,328,329,nil,nil,nil,13,14,22,244,nil,nil,16,nil,438,245,360,nil,nil,634,248,nil,27,25,249,243,514,nil,nil,nil,nil,nil,nil,383,140,nil,nil,nil,28,29,808,nil,nil,nil,348,nil,30,345,452,37,nil,nil,39,42,41,nil,240,241,400,nil,460,139,84,nil,443,100,51,54,280,320,nil,886,453,nil,454,465,477,683,566,318,304,55,56,57,58,59,60,61,62,63,nil,305,69,70,nil,nil,nil,nil,nil,nil,616,227,nil,nil,nil,nil,nil,nil,707,489,nil,708,709,475,471,472,1172,1065,nil,476,nil,nil,nil,478,nil,480,nil,965,nil,nil,nil,487,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,464,nil,nil,787,779,nil,nil,nil,nil,nil,nil,1045,nil,732,931,734,735,739,736,737,nil,nil,738,740,nil,nil,nil,930,932,nil,744,746,747,748,749,nil,753,498,754,755,756,757,nil,nil,nil,83,85,86,nil,nil,nil,nil,644,nil,nil,nil,nil,nil,96,97,nil,228,896,231,474,nil,479,904,492,494,495,1076,499,1077,502,505,323],racc_reduce_table=[0,0,"racc_error",0,150,"_reduce_1",2,148,"_reduce_2",2,149,"_reduce_3",0,151,"_reduce_4",1,151,"_reduce_5",3,151,"_reduce_6",2,151,"_reduce_7",1,153,"_reduce_none",2,153,"_reduce_9",3,156,"_reduce_10",4,157,"_reduce_11",2,158,"_reduce_12",0,162,"_reduce_13",1,162,"_reduce_14",3,162,"_reduce_15",2,162,"_reduce_16",1,163,"_reduce_none",2,163,"_reduce_18",0,174,"_reduce_19",4,155,"_reduce_20",3,155,"_reduce_21",3,155,"_reduce_22",3,155,"_reduce_23",2,155,"_reduce_24",3,155,"_reduce_25",3,155,"_reduce_26",3,155,"_reduce_27",3,155,"_reduce_28",3,155,"_reduce_29",4,155,"_reduce_30",1,155,"_reduce_none",3,155,"_reduce_32",3,155,"_reduce_33",5,155,"_reduce_34",3,155,"_reduce_35",1,155,"_reduce_none",3,167,"_reduce_37",3,167,"_reduce_38",6,167,"_reduce_39",5,167,"_reduce_40",5,167,"_reduce_41",5,167,"_reduce_42",5,167,"_reduce_43",4,167,"_reduce_44",6,167,"_reduce_45",4,167,"_reduce_46",6,167,"_reduce_47",3,167,"_reduce_48",1,175,"_reduce_none",3,175,"_reduce_50",1,175,"_reduce_none",1,173,"_reduce_none",3,173,"_reduce_53",3,173,"_reduce_54",3,173,"_reduce_55",2,173,"_reduce_56",0,189,"_reduce_57",4,173,"_reduce_58",0,190,"_reduce_59",4,173,"_reduce_60",1,173,"_reduce_none",1,166,"_reduce_none",0,194,"_reduce_63",3,191,"_reduce_64",1,193,"_reduce_65",2,181,"_reduce_66",0,198,"_reduce_67",5,185,"_reduce_68",1,169,"_reduce_none",1,169,"_reduce_none",1,199,"_reduce_none",4,199,"_reduce_72",0,206,"_reduce_73",4,203,"_reduce_74",1,205,"_reduce_none",2,183,"_reduce_76",3,183,"_reduce_77",4,183,"_reduce_78",5,183,"_reduce_79",4,183,"_reduce_80",5,183,"_reduce_81",2,183,"_reduce_82",2,183,"_reduce_83",2,183,"_reduce_84",2,183,"_reduce_85",2,183,"_reduce_86",1,168,"_reduce_87",3,168,"_reduce_88",1,211,"_reduce_89",3,211,"_reduce_90",1,210,"_reduce_none",2,210,"_reduce_92",3,210,"_reduce_93",5,210,"_reduce_94",2,210,"_reduce_95",4,210,"_reduce_96",2,210,"_reduce_97",4,210,"_reduce_98",1,210,"_reduce_99",3,210,"_reduce_100",1,214,"_reduce_none",3,214,"_reduce_102",2,213,"_reduce_103",3,213,"_reduce_104",1,216,"_reduce_105",3,216,"_reduce_106",1,215,"_reduce_107",1,215,"_reduce_108",4,215,"_reduce_109",3,215,"_reduce_110",3,215,"_reduce_111",3,215,"_reduce_112",3,215,"_reduce_113",2,215,"_reduce_114",1,215,"_reduce_115",1,170,"_reduce_116",1,170,"_reduce_117",4,170,"_reduce_118",3,170,"_reduce_119",3,170,"_reduce_120",3,170,"_reduce_121",3,170,"_reduce_122",2,170,"_reduce_123",1,170,"_reduce_124",1,219,"_reduce_125",1,219,"_reduce_none",2,220,"_reduce_127",1,220,"_reduce_128",3,220,"_reduce_129",1,195,"_reduce_none",1,195,"_reduce_none",1,195,"_reduce_none",1,195,"_reduce_none",1,195,"_reduce_none",1,164,"_reduce_135",1,164,"_reduce_none",1,165,"_reduce_137",0,224,"_reduce_138",4,165,"_reduce_139",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",3,184,"_reduce_211",3,184,"_reduce_212",6,184,"_reduce_213",5,184,"_reduce_214",5,184,"_reduce_215",5,184,"_reduce_216",5,184,"_reduce_217",4,184,"_reduce_218",3,184,"_reduce_219",3,184,"_reduce_220",3,184,"_reduce_221",2,184,"_reduce_222",2,184,"_reduce_223",2,184,"_reduce_224",2,184,"_reduce_225",3,184,"_reduce_226",3,184,"_reduce_227",3,184,"_reduce_228",3,184,"_reduce_229",3,184,"_reduce_230",3,184,"_reduce_231",4,184,"_reduce_232",2,184,"_reduce_233",2,184,"_reduce_234",3,184,"_reduce_235",3,184,"_reduce_236",3,184,"_reduce_237",3,184,"_reduce_238",1,184,"_reduce_none",3,184,"_reduce_240",3,184,"_reduce_241",3,184,"_reduce_242",3,184,"_reduce_243",3,184,"_reduce_244",2,184,"_reduce_245",2,184,"_reduce_246",3,184,"_reduce_247",3,184,"_reduce_248",3,184,"_reduce_249",3,184,"_reduce_250",3,184,"_reduce_251",6,184,"_reduce_252",4,184,"_reduce_253",6,184,"_reduce_254",4,184,"_reduce_255",6,184,"_reduce_256",1,184,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",3,227,"_reduce_262",3,227,"_reduce_263",1,230,"_reduce_none",1,231,"_reduce_none",2,231,"_reduce_none",4,231,"_reduce_267",2,231,"_reduce_268",1,225,"_reduce_none",3,225,"_reduce_270",3,236,"_reduce_271",5,236,"_reduce_272",3,236,"_reduce_273",0,238,"_reduce_274",1,238,"_reduce_none",0,178,"_reduce_276",1,178,"_reduce_none",2,178,"_reduce_none",4,178,"_reduce_279",2,178,"_reduce_280",1,209,"_reduce_281",2,209,"_reduce_282",2,209,"_reduce_283",4,209,"_reduce_284",1,209,"_reduce_285",0,241,"_reduce_286",2,202,"_reduce_287",2,240,"_reduce_288",1,240,"_reduce_289",2,239,"_reduce_290",0,239,"_reduce_291",1,233,"_reduce_292",2,233,"_reduce_293",3,233,"_reduce_294",4,233,"_reduce_295",1,172,"_reduce_296",1,172,"_reduce_none",3,171,"_reduce_298",4,171,"_reduce_299",2,171,"_reduce_300",1,228,"_reduce_none",1,228,"_reduce_none",1,228,"_reduce_none",1,228,"_reduce_none",1,228,"_reduce_none",1,228,"_reduce_none",1,228,"_reduce_none",1,228,"_reduce_none",1,228,"_reduce_none",1,228,"_reduce_none",1,228,"_reduce_311",0,263,"_reduce_312",4,228,"_reduce_313",0,264,"_reduce_314",4,228,"_reduce_315",0,265,"_reduce_316",4,228,"_reduce_317",3,228,"_reduce_318",3,228,"_reduce_319",2,228,"_reduce_320",3,228,"_reduce_321",3,228,"_reduce_322",1,228,"_reduce_323",4,228,"_reduce_324",3,228,"_reduce_325",1,228,"_reduce_326",5,228,"_reduce_327",4,228,"_reduce_328",3,228,"_reduce_329",2,228,"_reduce_330",1,228,"_reduce_none",2,228,"_reduce_332",1,228,"_reduce_none",6,228,"_reduce_334",6,228,"_reduce_335",4,228,"_reduce_336",4,228,"_reduce_337",5,228,"_reduce_338",4,228,"_reduce_339",5,228,"_reduce_340",6,228,"_reduce_341",0,266,"_reduce_342",6,228,"_reduce_343",0,267,"_reduce_344",7,228,"_reduce_345",0,268,"_reduce_346",5,228,"_reduce_347",4,228,"_reduce_348",4,228,"_reduce_349",1,228,"_reduce_350",1,228,"_reduce_351",1,228,"_reduce_352",1,228,"_reduce_353",1,177,"_reduce_none",1,208,"_reduce_355",1,255,"_reduce_none",1,255,"_reduce_none",2,255,"_reduce_358",1,192,"_reduce_none",1,192,"_reduce_none",1,256,"_reduce_none",5,256,"_reduce_362",1,160,"_reduce_none",2,160,"_reduce_364",1,259,"_reduce_none",1,259,"_reduce_none",1,269,"_reduce_367",3,269,"_reduce_368",1,272,"_reduce_369",3,272,"_reduce_370",1,271,"_reduce_none",3,271,"_reduce_372",5,271,"_reduce_373",1,271,"_reduce_374",3,271,"_reduce_375",2,273,"_reduce_376",1,273,"_reduce_377",1,274,"_reduce_none",1,274,"_reduce_none",4,277,"_reduce_380",2,277,"_reduce_381",2,277,"_reduce_382",1,277,"_reduce_383",2,281,"_reduce_384",0,281,"_reduce_385",1,282,"_reduce_none",6,283,"_reduce_387",8,283,"_reduce_388",4,283,"_reduce_389",6,283,"_reduce_390",4,283,"_reduce_391",2,283,"_reduce_none",6,283,"_reduce_393",2,283,"_reduce_394",4,283,"_reduce_395",6,283,"_reduce_396",2,283,"_reduce_397",4,283,"_reduce_398",2,283,"_reduce_399",4,283,"_reduce_400",1,283,"_reduce_none",0,287,"_reduce_402",1,287,"_reduce_403",3,288,"_reduce_404",4,288,"_reduce_405",1,289,"_reduce_406",4,289,"_reduce_407",1,290,"_reduce_408",3,290,"_reduce_409",1,291,"_reduce_410",1,291,"_reduce_none",0,295,"_reduce_412",0,296,"_reduce_413",5,254,"_reduce_414",4,293,"_reduce_415",1,293,"_reduce_416",0,299,"_reduce_417",4,294,"_reduce_418",0,300,"_reduce_419",4,294,"_reduce_420",0,302,"_reduce_421",4,298,"_reduce_422",2,200,"_reduce_423",4,200,"_reduce_424",5,200,"_reduce_425",5,200,"_reduce_426",2,253,"_reduce_427",4,253,"_reduce_428",4,253,"_reduce_429",3,253,"_reduce_430",3,253,"_reduce_431",3,253,"_reduce_432",2,253,"_reduce_433",1,253,"_reduce_434",4,253,"_reduce_435",0,304,"_reduce_436",4,252,"_reduce_437",0,305,"_reduce_438",4,252,"_reduce_439",0,306,"_reduce_440",3,204,"_reduce_441",0,307,"_reduce_442",0,308,"_reduce_443",4,301,"_reduce_444",5,257,"_reduce_445",1,309,"_reduce_446",1,309,"_reduce_none",0,312,"_reduce_448",0,313,"_reduce_449",7,258,"_reduce_450",1,311,"_reduce_451",1,311,"_reduce_none",1,310,"_reduce_453",3,310,"_reduce_454",3,310,"_reduce_455",1,188,"_reduce_none",2,188,"_reduce_457",3,188,"_reduce_458",1,188,"_reduce_459",1,188,"_reduce_460",1,188,"_reduce_461",1,314,"_reduce_none",3,319,"_reduce_463",1,319,"_reduce_none",3,321,"_reduce_465",1,321,"_reduce_none",1,323,"_reduce_467",1,324,"_reduce_468",1,322,"_reduce_none",1,322,"_reduce_none",4,322,"_reduce_471",4,322,"_reduce_472",4,322,"_reduce_473",3,322,"_reduce_474",4,322,"_reduce_475",4,322,"_reduce_476",4,322,"_reduce_477",3,322,"_reduce_478",3,322,"_reduce_479",3,322,"_reduce_480",2,322,"_reduce_481",0,328,"_reduce_482",4,322,"_reduce_483",2,322,"_reduce_484",0,329,"_reduce_485",4,322,"_reduce_486",1,315,"_reduce_487",1,315,"_reduce_488",2,315,"_reduce_489",3,315,"_reduce_490",5,315,"_reduce_491",2,315,"_reduce_492",4,315,"_reduce_493",1,315,"_reduce_none",2,330,"_reduce_495",3,330,"_reduce_496",1,317,"_reduce_497",3,317,"_reduce_498",5,316,"_reduce_499",2,333,"_reduce_500",1,333,"_reduce_501",1,332,"_reduce_502",3,332,"_reduce_503",1,331,"_reduce_none",3,318,"_reduce_505",1,318,"_reduce_506",2,318,"_reduce_507",1,318,"_reduce_508",1,334,"_reduce_509",3,334,"_reduce_510",2,336,"_reduce_511",1,336,"_reduce_512",1,337,"_reduce_513",3,337,"_reduce_514",2,339,"_reduce_515",1,339,"_reduce_516",2,341,"_reduce_517",1,335,"_reduce_none",1,335,"_reduce_none",1,325,"_reduce_none",3,325,"_reduce_521",3,325,"_reduce_522",2,325,"_reduce_523",2,325,"_reduce_524",1,325,"_reduce_none",1,325,"_reduce_none",1,325,"_reduce_none",2,325,"_reduce_528",2,325,"_reduce_529",1,342,"_reduce_none",1,342,"_reduce_none",1,342,"_reduce_none",1,342,"_reduce_none",1,342,"_reduce_none",1,342,"_reduce_none",1,342,"_reduce_none",1,342,"_reduce_none",1,342,"_reduce_538",1,342,"_reduce_none",1,320,"_reduce_540",2,343,"_reduce_541",2,343,"_reduce_542",4,344,"_reduce_543",2,326,"_reduce_544",3,326,"_reduce_545",1,326,"_reduce_546",6,159,"_reduce_547",0,159,"_reduce_548",1,346,"_reduce_549",1,346,"_reduce_none",1,346,"_reduce_none",2,347,"_reduce_552",1,347,"_reduce_none",2,161,"_reduce_554",1,161,"_reduce_none",1,242,"_reduce_none",1,242,"_reduce_none",1,243,"_reduce_558",1,349,"_reduce_559",2,349,"_reduce_560",3,350,"_reduce_561",1,350,"_reduce_562",1,350,"_reduce_563",3,244,"_reduce_564",4,245,"_reduce_565",3,246,"_reduce_566",0,353,"_reduce_567",3,353,"_reduce_568",1,354,"_reduce_569",2,354,"_reduce_570",3,248,"_reduce_571",0,356,"_reduce_572",3,356,"_reduce_573",3,247,"_reduce_574",3,249,"_reduce_575",0,357,"_reduce_576",3,357,"_reduce_577",0,358,"_reduce_578",3,358,"_reduce_579",0,338,"_reduce_580",2,338,"_reduce_581",0,351,"_reduce_582",2,351,"_reduce_583",0,352,"_reduce_584",2,352,"_reduce_585",1,355,"_reduce_586",2,355,"_reduce_587",0,360,"_reduce_588",4,355,"_reduce_589",1,359,"_reduce_590",1,359,"_reduce_591",1,359,"_reduce_592",1,359,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,361,"_reduce_596",3,362,"_reduce_597",1,348,"_reduce_598",2,348,"_reduce_599",1,226,"_reduce_600",1,226,"_reduce_601",1,226,"_reduce_602",1,226,"_reduce_603",1,345,"_reduce_604",1,345,"_reduce_605",1,345,"_reduce_606",1,217,"_reduce_607",1,217,"_reduce_608",1,217,"_reduce_609",1,217,"_reduce_610",1,217,"_reduce_611",1,218,"_reduce_612",1,218,"_reduce_613",1,218,"_reduce_614",1,218,"_reduce_615",1,218,"_reduce_616",1,218,"_reduce_617",1,218,"_reduce_618",1,250,"_reduce_619",1,250,"_reduce_620",1,176,"_reduce_621",1,176,"_reduce_622",1,186,"_reduce_623",1,186,"_reduce_624",0,363,"_reduce_625",4,260,"_reduce_626",0,260,"_reduce_627",1,182,"_reduce_none",1,182,"_reduce_629",3,364,"_reduce_630",1,262,"_reduce_none",0,366,"_reduce_632",3,262,"_reduce_633",4,365,"_reduce_634",2,365,"_reduce_635",2,365,"_reduce_636",1,365,"_reduce_637",1,365,"_reduce_638",2,368,"_reduce_639",0,368,"_reduce_640",6,297,"_reduce_641",8,297,"_reduce_642",4,297,"_reduce_643",6,297,"_reduce_644",4,297,"_reduce_645",6,297,"_reduce_646",2,297,"_reduce_647",4,297,"_reduce_648",6,297,"_reduce_649",2,297,"_reduce_650",4,297,"_reduce_651",2,297,"_reduce_652",4,297,"_reduce_653",1,297,"_reduce_654",0,297,"_reduce_655",1,237,"_reduce_656",1,292,"_reduce_657",1,292,"_reduce_658",1,292,"_reduce_659",1,292,"_reduce_660",1,270,"_reduce_none",1,270,"_reduce_662",1,370,"_reduce_663",1,371,"_reduce_664",3,371,"_reduce_665",1,284,"_reduce_666",3,284,"_reduce_667",1,372,"_reduce_668",2,373,"_reduce_669",1,373,"_reduce_670",2,374,"_reduce_671",1,374,"_reduce_672",1,278,"_reduce_673",3,278,"_reduce_674",1,367,"_reduce_675",3,367,"_reduce_676",1,340,"_reduce_none",1,340,"_reduce_none",2,276,"_reduce_679",2,275,"_reduce_680",1,275,"_reduce_681",3,375,"_reduce_682",3,376,"_reduce_683",1,285,"_reduce_684",3,285,"_reduce_685",1,369,"_reduce_686",3,369,"_reduce_687",1,377,"_reduce_none",1,377,"_reduce_none",2,286,"_reduce_690",1,286,"_reduce_691",1,378,"_reduce_none",1,378,"_reduce_none",2,280,"_reduce_694",1,280,"_reduce_695",2,279,"_reduce_696",0,279,"_reduce_697",1,196,"_reduce_none",3,196,"_reduce_699",0,251,"_reduce_700",2,251,"_reduce_none",1,235,"_reduce_702",3,235,"_reduce_703",3,379,"_reduce_704",2,379,"_reduce_705",1,379,"_reduce_706",4,379,"_reduce_707",2,379,"_reduce_708",1,207,"_reduce_none",1,207,"_reduce_none",1,207,"_reduce_none",1,201,"_reduce_none",1,201,"_reduce_none",1,201,"_reduce_none",1,201,"_reduce_none",1,303,"_reduce_none",1,303,"_reduce_none",1,303,"_reduce_none",1,197,"_reduce_none",1,197,"_reduce_none",1,180,"_reduce_721",1,180,"_reduce_722",0,152,"_reduce_none",1,152,"_reduce_none",0,187,"_reduce_none",1,187,"_reduce_none",2,212,"_reduce_727",2,179,"_reduce_728",2,327,"_reduce_729",0,234,"_reduce_none",1,234,"_reduce_none",1,234,"_reduce_none",1,261,"_reduce_733",1,261,"_reduce_none",1,154,"_reduce_none",2,154,"_reduce_none",0,232,"_reduce_737"],738,1231,racc_token_table=$hash(!1,0,"error",1,"kCLASS",2,"kMODULE",3,"kDEF",4,"kUNDEF",5,"kBEGIN",6,"kRESCUE",7,"kENSURE",8,"kEND",9,"kIF",10,"kUNLESS",11,"kTHEN",12,"kELSIF",13,"kELSE",14,"kCASE",15,"kWHEN",16,"kWHILE",17,"kUNTIL",18,"kFOR",19,"kBREAK",20,"kNEXT",21,"kREDO",22,"kRETRY",23,"kIN",24,"kDO",25,"kDO_COND",26,"kDO_BLOCK",27,"kDO_LAMBDA",28,"kRETURN",29,"kYIELD",30,"kSUPER",31,"kSELF",32,"kNIL",33,"kTRUE",34,"kFALSE",35,"kAND",36,"kOR",37,"kNOT",38,"kIF_MOD",39,"kUNLESS_MOD",40,"kWHILE_MOD",41,"kUNTIL_MOD",42,"kRESCUE_MOD",43,"kALIAS",44,"kDEFINED",45,"klBEGIN",46,"klEND",47,"k__LINE__",48,"k__FILE__",49,"k__ENCODING__",50,"tIDENTIFIER",51,"tFID",52,"tGVAR",53,"tIVAR",54,"tCONSTANT",55,"tLABEL",56,"tCVAR",57,"tNTH_REF",58,"tBACK_REF",59,"tSTRING_CONTENT",60,"tINTEGER",61,"tFLOAT",62,"tUPLUS",63,"tUMINUS",64,"tUNARY_NUM",65,"tPOW",66,"tCMP",67,"tEQ",68,"tEQQ",69,"tNEQ",70,"tGEQ",71,"tLEQ",72,"tANDOP",73,"tOROP",74,"tMATCH",75,"tNMATCH",76,"tDOT",77,"tDOT2",78,"tDOT3",79,"tAREF",80,"tASET",81,"tLSHFT",82,"tRSHFT",83,"tCOLON2",84,"tCOLON3",85,"tOP_ASGN",86,"tASSOC",87,"tLPAREN",88,"tLPAREN2",89,"tRPAREN",90,"tLPAREN_ARG",91,"tLBRACK",92,"tLBRACK2",93,"tRBRACK",94,"tLBRACE",95,"tLBRACE_ARG",96,"tSTAR",97,"tSTAR2",98,"tAMPER",99,"tAMPER2",100,"tTILDE",101,"tPERCENT",102,"tDIVIDE",103,"tDSTAR",104,"tPLUS",105,"tMINUS",106,"tLT",107,"tGT",108,"tPIPE",109,"tBANG",110,"tCARET",111,"tLCURLY",112,"tRCURLY",113,"tBACK_REF2",114,"tSYMBEG",115,"tSTRING_BEG",116,"tXSTRING_BEG",117,"tREGEXP_BEG",118,"tREGEXP_OPT",119,"tWORDS_BEG",120,"tQWORDS_BEG",121,"tSYMBOLS_BEG",122,"tQSYMBOLS_BEG",123,"tSTRING_DBEG",124,"tSTRING_DVAR",125,"tSTRING_END",126,"tSTRING_DEND",127,"tSTRING",128,"tSYMBOL",129,"tNL",130,"tEH",131,"tCOLON",132,"tCOMMA",133,"tSPACE",134,"tSEMI",135,"tLAMBDA",136,"tLAMBEG",137,"tCHARACTER",138,"tRATIONAL",139,"tIMAGINARY",140,"tLABEL_END",141,"tANDDOT",142,"tBDOT2",143,"tBDOT3",144,"tEQL",145,"tLOWEST",146),147,!0,$const_set($nesting[0],"Racc_arg",[racc_action_table,racc_action_check,racc_action_default,racc_action_pointer,racc_goto_table,racc_goto_check,racc_goto_default,racc_goto_pointer,147,racc_reduce_table,racc_token_table,1231,738,true]),$const_set($nesting[0],"Racc_token_to_s_table",["$end","error","kCLASS","kMODULE","kDEF","kUNDEF","kBEGIN","kRESCUE","kENSURE","kEND","kIF","kUNLESS","kTHEN","kELSIF","kELSE","kCASE","kWHEN","kWHILE","kUNTIL","kFOR","kBREAK","kNEXT","kREDO","kRETRY","kIN","kDO","kDO_COND","kDO_BLOCK","kDO_LAMBDA","kRETURN","kYIELD","kSUPER","kSELF","kNIL","kTRUE","kFALSE","kAND","kOR","kNOT","kIF_MOD","kUNLESS_MOD","kWHILE_MOD","kUNTIL_MOD","kRESCUE_MOD","kALIAS","kDEFINED","klBEGIN","klEND","k__LINE__","k__FILE__","k__ENCODING__","tIDENTIFIER","tFID","tGVAR","tIVAR","tCONSTANT","tLABEL","tCVAR","tNTH_REF","tBACK_REF","tSTRING_CONTENT","tINTEGER","tFLOAT","tUPLUS","tUMINUS","tUNARY_NUM","tPOW","tCMP","tEQ","tEQQ","tNEQ","tGEQ","tLEQ","tANDOP","tOROP","tMATCH","tNMATCH","tDOT","tDOT2","tDOT3","tAREF","tASET","tLSHFT","tRSHFT","tCOLON2","tCOLON3","tOP_ASGN","tASSOC","tLPAREN","tLPAREN2","tRPAREN","tLPAREN_ARG","tLBRACK","tLBRACK2","tRBRACK","tLBRACE","tLBRACE_ARG","tSTAR","tSTAR2","tAMPER","tAMPER2","tTILDE","tPERCENT","tDIVIDE","tDSTAR","tPLUS","tMINUS","tLT","tGT","tPIPE","tBANG","tCARET","tLCURLY","tRCURLY","tBACK_REF2","tSYMBEG","tSTRING_BEG","tXSTRING_BEG","tREGEXP_BEG","tREGEXP_OPT","tWORDS_BEG","tQWORDS_BEG","tSYMBOLS_BEG","tQSYMBOLS_BEG","tSTRING_DBEG","tSTRING_DVAR","tSTRING_END","tSTRING_DEND","tSTRING","tSYMBOL","tNL","tEH","tCOLON","tCOMMA","tSPACE","tSEMI","tLAMBDA","tLAMBEG","tCHARACTER","tRATIONAL","tIMAGINARY","tLABEL_END","tANDDOT","tBDOT2","tBDOT3","tEQL","tLOWEST","$start","program","top_compstmt","@1","top_stmts","opt_terms","top_stmt","terms","stmt","begin_block","bodystmt","compstmt","opt_rescue","opt_else","opt_ensure","stmts","stmt_or_begin","fitem","undef_list","expr_value","command_asgn","mlhs","command_call","lhs","mrhs","mrhs_arg","expr","@2","command_rhs","var_lhs","primary_value","opt_call_args","rbracket","call_op","defn_head","f_opt_paren_args","command","arg","defs_head","backref","opt_nl","p_top_expr_body","@3","@4","expr_value_do","do","def_name","@5","fname","singleton","dot_or_colon","@6","block_command","block_call","operation2","command_args","cmd_brace_block","brace_body","fcall","@7","operation","k_return","call_args","mlhs_basic","mlhs_inner","rparen","mlhs_head","mlhs_item","mlhs_node","mlhs_post","user_variable","keyword_variable","cname","cpath","op","reswords","symbol","@8","arg_rhs","simple_numeric","rel_expr","primary","relop","arg_value","aref_args","none","args","trailer","assocs","paren_args","args_forward","opt_paren_args","opt_block_arg","block_arg","@9","literal","strings","xstring","regexp","words","qwords","symbols","qsymbols","var_ref","assoc_list","brace_block","method_call","lambda","then","if_tail","case_body","p_case_body","for_var","superclass","term","f_arglist","@10","@11","@12","@13","@14","@15","f_marg","f_norm_arg","f_margs","f_marg_list","f_rest_marg","f_any_kwrest","f_kwrest","f_no_kwarg","block_args_tail","f_block_kwarg","opt_f_block_arg","f_block_arg","opt_block_args_tail","excessed_comma","block_param","f_arg","f_block_optarg","f_rest_arg","opt_block_param","block_param_def","opt_bv_decl","bv_decls","bvar","f_bad_arg","f_larglist","lambda_body","@16","@17","f_args","do_block","@18","@19","do_body","@20","operation3","@21","@22","@23","@24","@25","cases","p_top_expr","p_cases","@26","@27","p_expr","p_args","p_find","p_args_tail","p_kwargs","p_as","p_variable","p_alt","p_expr_basic","p_lparen","p_lbracket","p_value","p_const","rbrace","@28","@29","p_args_head","p_arg","p_args_post","p_rest","p_kwarg","p_any_kwrest","p_kw","p_kw_label","string_contents","p_kwrest","kwrest_mark","p_kwnorest","p_primitive","p_var_ref","p_expr_ref","nonlocal_var","exc_list","exc_var","numeric","string","string1","xstring_contents","regexp_contents","word_list","word","string_content","symbol_list","qword_list","qsym_list","string_dvar","@30","ssym","dsym","@31","f_paren_args","args_tail","@32","f_kwarg","opt_args_tail","f_optarg","f_arg_asgn","f_arg_item","f_label","f_kw","f_block_kw","f_opt","f_block_opt","restarg_mark","blkarg_mark","assoc"]),$const_set($nesting[0],"Racc_debug_parser",!1),$def(self,"$_reduce_1",(function(val,_values,result){return this.current_arg_stack.$push(nil),this.max_numparam_stack.$push(),result}),3),$def(self,"$_reduce_2",(function(val,_values,result){return result=val["$[]"](1),this.current_arg_stack.$pop(),this.max_numparam_stack.$pop(),result}),3),$def(self,"$_reduce_3",(function(val,_values,result){return this.builder.$compstmt(val["$[]"](0))}),3),$def(self,"$_reduce_4",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_5",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_6",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_7",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_9",(function(val,_values,result){return $send(this.builder,"preexe",[val["$[]"](0)].concat($to_a(val["$[]"](1))))}),3),$def(self,"$_reduce_10",(function(val,_values,result){return val}),3),$def(self,"$_reduce_11",(function(val,_values,result){var $a,$b,else_,ensure_t,ensure_,rescue_bodies=nil,else_t=nil;return rescue_bodies=val["$[]"](1),$b=val["$[]"](2),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],$b=val["$[]"](3),ensure_t=null==($a=$to_ary($b))[0]?nil:$a[0],ensure_=null==$a[1]?nil:$a[1],$truthy(rescue_bodies["$empty?"]())&&$not(else_t["$nil?"]())&&this.$diagnostic("error","useless_else",nil,else_t),this.builder.$begin_body(val["$[]"](0),rescue_bodies,else_t,else_,ensure_t,ensure_)}),3),$def(self,"$_reduce_12",(function(val,_values,result){return this.builder.$compstmt(val["$[]"](0))}),3),$def(self,"$_reduce_13",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_14",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_15",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_16",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_18",(function(val,_values,result){return this.$diagnostic("error","begin_in_method",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_19",(function(val,_values,result){var $writer;return $writer=["expr_fname"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_20",(function(val,_values,result){return this.builder.$alias(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_21",(function(val,_values,result){return this.builder.$alias(val["$[]"](0),this.builder.$gvar(val["$[]"](1)),this.builder.$gvar(val["$[]"](2)))}),3),$def(self,"$_reduce_22",(function(val,_values,result){return this.builder.$alias(val["$[]"](0),this.builder.$gvar(val["$[]"](1)),this.builder.$back_ref(val["$[]"](2)))}),3),$def(self,"$_reduce_23",(function(val,_values,result){return this.$diagnostic("error","nth_ref_alias",nil,val["$[]"](2)),result}),3),$def(self,"$_reduce_24",(function(val,_values,result){return this.builder.$undef_method(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_25",(function(val,_values,result){return this.builder.$condition_mod(val["$[]"](0),nil,val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_26",(function(val,_values,result){return this.builder.$condition_mod(nil,val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_27",(function(val,_values,result){return this.builder.$loop_mod("while",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_28",(function(val,_values,result){return this.builder.$loop_mod("until",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_29",(function(val,_values,result){var rescue_body;return rescue_body=this.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2)),this.builder.$begin_body(val["$[]"](0),[rescue_body])}),3),$def(self,"$_reduce_30",(function(val,_values,result){return this.builder.$postexe(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_32",(function(val,_values,result){return this.builder.$multi_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_33",(function(val,_values,result){return this.builder.$assign(val["$[]"](0),val["$[]"](1),this.builder.$array(nil,val["$[]"](2),nil))}),3),$def(self,"$_reduce_34",(function(val,_values,result){var rescue_body,begin_body;return rescue_body=this.builder.$rescue_body(val["$[]"](3),nil,nil,nil,nil,val["$[]"](4)),begin_body=this.builder.$begin_body(val["$[]"](2),[rescue_body]),this.builder.$multi_assign(val["$[]"](0),val["$[]"](1),begin_body)}),3),$def(self,"$_reduce_35",(function(val,_values,result){return this.builder.$multi_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_37",(function(val,_values,result){return this.builder.$assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_38",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_39",(function(val,_values,result){return this.builder.$op_assign(this.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3)),val["$[]"](4),val["$[]"](5))}),3),$def(self,"$_reduce_40",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_41",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_42",(function(val,_values,result){var const$;return const$=this.builder.$const_op_assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))),this.builder.$op_assign(const$,val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_43",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_44",(function(val,_values,result){var $a,$b,name_t;return $b=val["$[]"](0),null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==$a[1]?nil:$a[1],this.$endless_method_name(name_t),result=$send(this.builder,"def_endless_method",$to_a(val["$[]"](0)).concat([val["$[]"](1),val["$[]"](2),val["$[]"](3)])),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),this.current_arg_stack.$pop(),result}),3),$def(self,"$_reduce_45",(function(val,_values,result){var $a,$b,name_t,rescue_body,method_body;return $b=val["$[]"](0),null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==$a[1]?nil:$a[1],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=$send(this.builder,"def_endless_method",$to_a(val["$[]"](0)).concat([val["$[]"](1),val["$[]"](2),method_body])),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),this.current_arg_stack.$pop(),result}),3),$def(self,"$_reduce_46",(function(val,_values,result){var $a,$b,name_t;return $b=val["$[]"](0),null==($a=$to_ary($b))[0]?nil:$a[0],null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],name_t=null==$a[3]?nil:$a[3],this.$endless_method_name(name_t),result=$send(this.builder,"def_endless_singleton",$to_a(val["$[]"](0)).concat([val["$[]"](1),val["$[]"](2),val["$[]"](3)])),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),this.current_arg_stack.$pop(),result}),3),$def(self,"$_reduce_47",(function(val,_values,result){var $a,$b,name_t,rescue_body,method_body;return $b=val["$[]"](0),null==($a=$to_ary($b))[0]?nil:$a[0],null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],name_t=null==$a[3]?nil:$a[3],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=$send(this.builder,"def_endless_singleton",$to_a(val["$[]"](0)).concat([val["$[]"](1),val["$[]"](2),method_body])),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),this.current_arg_stack.$pop(),result}),3),$def(self,"$_reduce_48",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2)),result}),3),$def(self,"$_reduce_50",(function(val,_values,result){var rescue_body;return rescue_body=this.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2)),this.builder.$begin_body(val["$[]"](0),[rescue_body])}),3),$def(self,"$_reduce_53",(function(val,_values,result){return this.builder.$logical_op("and",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_54",(function(val,_values,result){return this.builder.$logical_op("or",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_55",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),nil,val["$[]"](2),nil)}),3),$def(self,"$_reduce_56",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_57",(function(val,_values,result){var $writer=nil;return $writer=["expr_beg"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.lexer,"command_start=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.pattern_variables.$push(),result=this.lexer.$in_kwarg(),$writer=[!0],$send(this.lexer,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_58",(function(val,_values,result){var $writer;return this.pattern_variables.$pop(),$writer=[val["$[]"](2)],$send(this.lexer,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$match_pattern(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_59",(function(val,_values,result){var $writer=nil;return $writer=["expr_beg"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.lexer,"command_start=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.pattern_variables.$push(),result=this.lexer.$in_kwarg(),$writer=[!0],$send(this.lexer,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_60",(function(val,_values,result){var $writer;return this.pattern_variables.$pop(),$writer=[val["$[]"](2)],$send(this.lexer,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$match_pattern_p(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_63",(function(val,_values,result){return this.lexer.$cond().$push(!0),result}),3),$def(self,"$_reduce_64",(function(val,_values,result){return this.lexer.$cond().$pop(),[val["$[]"](1),val["$[]"](2)]}),3),$def(self,"$_reduce_65",(function(val,_values,result){return this.static_env.$extend_static(),this.lexer.$cmdarg().$push(!1),this.lexer.$cond().$push(!1),this.current_arg_stack.$push(nil),val["$[]"](0)}),3),$def(self,"$_reduce_66",(function(val,_values,result){return this.context.$push("def"),[val["$[]"](0),val["$[]"](1)]}),3),$def(self,"$_reduce_67",(function(val,_values,result){var $writer;return $writer=["expr_fname"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_68",(function(val,_values,result){return this.context.$push("defs"),[val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](4)]}),3),$def(self,"$_reduce_72",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil)}),3),$def(self,"$_reduce_73",(function(val,_values,result){return this.context.$push("block"),result}),3),$def(self,"$_reduce_74",(function(val,_values,result){return result=[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)]),this.context.$pop(),result}),3),$def(self,"$_reduce_76",(function(val,_values,result){return this.builder.$call_method(nil,nil,val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_77",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(nil,nil,val["$[]"](0),nil,val["$[]"](1),nil),$b=val["$[]"](2),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_78",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil)}),3),$def(self,"$_reduce_79",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_80",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil)}),3),$def(self,"$_reduce_81",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_82",(function(val,_values,result){return this.builder.$keyword_cmd("super",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_83",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_84",(function(val,_values,result){return this.builder.$keyword_cmd("return",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_85",(function(val,_values,result){return this.builder.$keyword_cmd("break",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_86",(function(val,_values,result){return this.builder.$keyword_cmd("next",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_87",(function(val,_values,result){return this.builder.$multi_lhs(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_88",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_89",(function(val,_values,result){return this.builder.$multi_lhs(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_90",(function(val,_values,result){return this.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_92",(function(val,_values,result){return val["$[]"](0).$push(val["$[]"](1))}),3),$def(self,"$_reduce_93",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1),val["$[]"](2)))}),3),$def(self,"$_reduce_94",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1),val["$[]"](2))).$concat(val["$[]"](4))}),3),$def(self,"$_reduce_95",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1)))}),3),$def(self,"$_reduce_96",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1))).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_97",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_98",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))].concat($to_a(val["$[]"](3)))}),3),$def(self,"$_reduce_99",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0))]}),3),$def(self,"$_reduce_100",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0))].concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_102",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_103",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_104",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_105",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_106",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_107",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_108",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_109",(function(val,_values,result){return this.builder.$index_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_110",(function(val,_values,result){return $eqeq(val["$[]"](1)["$[]"](0),"anddot")&&this.$diagnostic("error","csend_in_lhs_of_masgn",nil,val["$[]"](1)),this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_111",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_112",(function(val,_values,result){return $eqeq(val["$[]"](1)["$[]"](0),"anddot")&&this.$diagnostic("error","csend_in_lhs_of_masgn",nil,val["$[]"](1)),this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_113",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2)))}),3),$def(self,"$_reduce_114",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_global(val["$[]"](0),val["$[]"](1)))}),3),$def(self,"$_reduce_115",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_116",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_117",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_118",(function(val,_values,result){return this.builder.$index_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_119",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_120",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_121",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_122",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2)))}),3),$def(self,"$_reduce_123",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_global(val["$[]"](0),val["$[]"](1)))}),3),$def(self,"$_reduce_124",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_125",(function(val,_values,result){return this.$diagnostic("error","module_name_const",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_127",(function(val,_values,result){return this.builder.$const_global(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_128",(function(val,_values,result){return this.builder.$const(val["$[]"](0))}),3),$def(self,"$_reduce_129",(function(val,_values,result){return this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_135",(function(val,_values,result){return this.builder.$symbol_internal(val["$[]"](0))}),3),$def(self,"$_reduce_137",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_138",(function(val,_values,result){var $writer;return $writer=["expr_fname"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_139",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](3))}),3),$def(self,"$_reduce_211",(function(val,_values,result){return this.builder.$assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_212",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_213",(function(val,_values,result){return this.builder.$op_assign(this.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3)),val["$[]"](4),val["$[]"](5))}),3),$def(self,"$_reduce_214",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_215",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_216",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_217",(function(val,_values,result){var const$;return const$=this.builder.$const_op_assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))),this.builder.$op_assign(const$,val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_218",(function(val,_values,result){var const$;return const$=this.builder.$const_op_assignable(this.builder.$const_global(val["$[]"](0),val["$[]"](1))),this.builder.$op_assign(const$,val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_219",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_220",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_221",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_222",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_223",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_224",(function(val,_values,result){return this.builder.$range_inclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_225",(function(val,_values,result){return this.builder.$range_exclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_226",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_227",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_228",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_229",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_230",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_231",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_232",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),this.builder.$binary_op(val["$[]"](1),val["$[]"](2),val["$[]"](3)))}),3),$def(self,"$_reduce_233",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_234",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_235",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_236",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_237",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_238",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_240",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_241",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_242",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_243",(function(val,_values,result){return this.builder.$match_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_244",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_245",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_246",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_247",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_248",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_249",(function(val,_values,result){return this.builder.$logical_op("and",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_250",(function(val,_values,result){return this.builder.$logical_op("or",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_251",(function(val,_values,result){return this.builder.$keyword_cmd("defined?",val["$[]"](0),nil,[val["$[]"](2)],nil)}),3),$def(self,"$_reduce_252",(function(val,_values,result){return this.builder.$ternary(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](4),val["$[]"](5))}),3),$def(self,"$_reduce_253",(function(val,_values,result){var $a,$b,name_t;return $b=val["$[]"](0),null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==$a[1]?nil:$a[1],this.$endless_method_name(name_t),result=$send(this.builder,"def_endless_method",$to_a(val["$[]"](0)).concat([val["$[]"](1),val["$[]"](2),val["$[]"](3)])),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),this.current_arg_stack.$pop(),result}),3),$def(self,"$_reduce_254",(function(val,_values,result){var $a,$b,name_t,rescue_body,method_body;return $b=val["$[]"](0),null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==$a[1]?nil:$a[1],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=$send(this.builder,"def_endless_method",$to_a(val["$[]"](0)).concat([val["$[]"](1),val["$[]"](2),method_body])),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),this.current_arg_stack.$pop(),result}),3),$def(self,"$_reduce_255",(function(val,_values,result){var $a,$b,name_t;return $b=val["$[]"](0),null==($a=$to_ary($b))[0]?nil:$a[0],null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],name_t=null==$a[3]?nil:$a[3],this.$endless_method_name(name_t),result=$send(this.builder,"def_endless_singleton",$to_a(val["$[]"](0)).concat([val["$[]"](1),val["$[]"](2),val["$[]"](3)])),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),this.current_arg_stack.$pop(),result}),3),$def(self,"$_reduce_256",(function(val,_values,result){var $a,$b,name_t,rescue_body,method_body;return $b=val["$[]"](0),null==($a=$to_ary($b))[0]?nil:$a[0],null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],name_t=null==$a[3]?nil:$a[3],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=$send(this.builder,"def_endless_singleton",$to_a(val["$[]"](0)).concat([val["$[]"](1),val["$[]"](2),method_body])),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),this.current_arg_stack.$pop(),result}),3),$def(self,"$_reduce_262",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_263",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_267",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$associate(nil,val["$[]"](2),nil))}),3),$def(self,"$_reduce_268",(function(val,_values,result){return[this.builder.$associate(nil,val["$[]"](0),nil)]}),3),$def(self,"$_reduce_270",(function(val,_values,result){var rescue_body;return rescue_body=this.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2)),this.builder.$begin_body(val["$[]"](0),[rescue_body])}),3),$def(self,"$_reduce_271",(function(val,_values,result){return val}),3),$def(self,"$_reduce_272",(function(val,_values,result){return $truthy(this.static_env["$declared_forward_args?"]())||this.$diagnostic("error","unexpected_token",$hash2(["token"],{token:"tBDOT3"}),val["$[]"](3)),[val["$[]"](0),[].concat($to_a(val["$[]"](1))).concat([this.builder.$forwarded_args(val["$[]"](3))]),val["$[]"](4)]}),3),$def(self,"$_reduce_273",(function(val,_values,result){return $truthy(this.static_env["$declared_forward_args?"]())||this.$diagnostic("error","unexpected_token",$hash2(["token"],{token:"tBDOT3"}),val["$[]"](1)),[val["$[]"](0),[this.builder.$forwarded_args(val["$[]"](1))],val["$[]"](2)]}),3),$def(self,"$_reduce_274",(function(val,_values,result){return[nil,[],nil]}),3),$def(self,"$_reduce_276",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_279",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$associate(nil,val["$[]"](2),nil))}),3),$def(self,"$_reduce_280",(function(val,_values,result){return[this.builder.$associate(nil,val["$[]"](0),nil)]}),3),$def(self,"$_reduce_281",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_282",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_283",(function(val,_values,result){return(result=[this.builder.$associate(nil,val["$[]"](0),nil)]).$concat(val["$[]"](1)),result}),3),$def(self,"$_reduce_284",(function(val,_values,result){var assocs;return assocs=this.builder.$associate(nil,val["$[]"](2),nil),(result=val["$[]"](0)["$<<"](assocs)).$concat(val["$[]"](3)),result}),3),$def(self,"$_reduce_285",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_286",(function(val,_values,result){var lookahead,$ret_or_1,last_token=nil,top=nil;return last_token=this.last_token["$[]"](0),lookahead=$truthy($ret_or_1=last_token["$=="]("tLBRACK"))?$ret_or_1:last_token["$=="]("tLPAREN_ARG"),$truthy(lookahead)?(top=this.lexer.$cmdarg().$pop(),this.lexer.$cmdarg().$push(!0),this.lexer.$cmdarg().$push(top)):this.lexer.$cmdarg().$push(!0),result}),3),$def(self,"$_reduce_287",(function(val,_values,result){var lookahead,top=nil;return lookahead=this.last_token["$[]"](0)["$=="]("tLBRACE_ARG"),$truthy(lookahead)?(top=this.lexer.$cmdarg().$pop(),this.lexer.$cmdarg().$pop(),this.lexer.$cmdarg().$push(top)):this.lexer.$cmdarg().$pop(),val["$[]"](1)}),3),$def(self,"$_reduce_288",(function(val,_values,result){return this.builder.$block_pass(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_289",(function(val,_values,result){return $not(this.static_env["$declared_anonymous_blockarg?"]())&&this.$diagnostic("error","no_anonymous_blockarg",nil,val["$[]"](0)),this.builder.$block_pass(val["$[]"](0),nil)}),3),$def(self,"$_reduce_290",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_291",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_292",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_293",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_294",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_295",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$splat(val["$[]"](2),val["$[]"](3)))}),3),$def(self,"$_reduce_296",(function(val,_values,result){return this.builder.$array(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_298",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_299",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$splat(val["$[]"](2),val["$[]"](3)))}),3),$def(self,"$_reduce_300",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_311",(function(val,_values,result){return this.builder.$call_method(nil,nil,val["$[]"](0))}),3),$def(self,"$_reduce_312",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),result}),3),$def(self,"$_reduce_313",(function(val,_values,result){return this.lexer.$cmdarg().$pop(),this.builder.$begin_keyword(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_314",(function(val,_values,result){var $writer;return $writer=["expr_endarg"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_315",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_316",(function(val,_values,result){var $writer;return $writer=["expr_endarg"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_317",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),nil,val["$[]"](3))}),3),$def(self,"$_reduce_318",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_319",(function(val,_values,result){return this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_320",(function(val,_values,result){return this.builder.$const_global(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_321",(function(val,_values,result){return this.builder.$array(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_322",(function(val,_values,result){return this.builder.$associate(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_323",(function(val,_values,result){return this.builder.$keyword_cmd("return",val["$[]"](0))}),3),$def(self,"$_reduce_324",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_325",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0),val["$[]"](1),[],val["$[]"](2))}),3),$def(self,"$_reduce_326",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0))}),3),$def(self,"$_reduce_327",(function(val,_values,result){return this.builder.$keyword_cmd("defined?",val["$[]"](0),val["$[]"](2),[val["$[]"](3)],val["$[]"](4))}),3),$def(self,"$_reduce_328",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_329",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),val["$[]"](1),nil,val["$[]"](2))}),3),$def(self,"$_reduce_330",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(nil,nil,val["$[]"](0)),$b=val["$[]"](1),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_332",(function(val,_values,result){var $a,$b,begin_t,args,body,end_t;return $b=val["$[]"](1),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(val["$[]"](0),begin_t,args,body,end_t)}),3),$def(self,"$_reduce_334",(function(val,_values,result){var $a,$b,else_t,else_;return $b=val["$[]"](4),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],this.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3),else_t,else_,val["$[]"](5))}),3),$def(self,"$_reduce_335",(function(val,_values,result){var $a,$b,else_t,else_;return $b=val["$[]"](4),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],this.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),else_,else_t,val["$[]"](3),val["$[]"](5))}),3),$def(self,"$_reduce_336",(function(val,_values,result){return $send(this.builder,"loop",["while",val["$[]"](0)].concat($to_a(val["$[]"](1))).concat([val["$[]"](2),val["$[]"](3)]))}),3),$def(self,"$_reduce_337",(function(val,_values,result){return $send(this.builder,"loop",["until",val["$[]"](0)].concat($to_a(val["$[]"](1))).concat([val["$[]"](2),val["$[]"](3)]))}),3),$def(self,"$_reduce_338",(function(val,_values,result){var $a,$b,$c,when_bodies,else_t,else_body;return $b=($b=($a=[].concat($to_a(val["$[]"](3)))).length-1)<0?0:$b,when_bodies=$slice.call($a,0,$b),else_t=null==($c=$to_ary(null==$a[$b]?nil:$a[$b]))[0]?nil:$c[0],else_body=null==$c[1]?nil:$c[1],this.builder.$case(val["$[]"](0),val["$[]"](1),when_bodies,else_t,else_body,val["$[]"](4))}),3),$def(self,"$_reduce_339",(function(val,_values,result){var $a,$b,$c,when_bodies,else_t,else_body;return $b=($b=($a=[].concat($to_a(val["$[]"](2)))).length-1)<0?0:$b,when_bodies=$slice.call($a,0,$b),else_t=null==($c=$to_ary(null==$a[$b]?nil:$a[$b]))[0]?nil:$c[0],else_body=null==$c[1]?nil:$c[1],this.builder.$case(val["$[]"](0),nil,when_bodies,else_t,else_body,val["$[]"](3))}),3),$def(self,"$_reduce_340",(function(val,_values,result){var $a,$b,$c,in_bodies,else_t,else_body;return $b=($b=($a=[].concat($to_a(val["$[]"](3)))).length-1)<0?0:$b,in_bodies=$slice.call($a,0,$b),else_t=null==($c=$to_ary(null==$a[$b]?nil:$a[$b]))[0]?nil:$c[0],else_body=null==$c[1]?nil:$c[1],this.builder.$case_match(val["$[]"](0),val["$[]"](1),in_bodies,else_t,else_body,val["$[]"](4))}),3),$def(self,"$_reduce_341",(function(val,_values,result){return $send(this.builder,"for",[val["$[]"](0),val["$[]"](1),val["$[]"](2)].concat($to_a(val["$[]"](3))).concat([val["$[]"](4),val["$[]"](5)]))}),3),$def(self,"$_reduce_342",(function(val,_values,result){return this.static_env.$extend_static(),this.lexer.$cmdarg().$push(!1),this.lexer.$cond().$push(!1),this.context.$push("class"),result}),3),$def(self,"$_reduce_343",(function(val,_values,result){var $a,$b,lt_t,superclass;return $truthy(this.context["$class_definition_allowed?"]())||this.$diagnostic("error","class_in_def",nil,val["$[]"](0)),$b=val["$[]"](2),lt_t=null==($a=$to_ary($b))[0]?nil:$a[0],superclass=null==$a[1]?nil:$a[1],result=this.builder.$def_class(val["$[]"](0),val["$[]"](1),lt_t,superclass,val["$[]"](4),val["$[]"](5)),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),result}),3),$def(self,"$_reduce_344",(function(val,_values,result){return this.static_env.$extend_static(),this.lexer.$cmdarg().$push(!1),this.lexer.$cond().$push(!1),this.context.$push("sclass"),result}),3),$def(self,"$_reduce_345",(function(val,_values,result){return result=this.builder.$def_sclass(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](5),val["$[]"](6)),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),result}),3),$def(self,"$_reduce_346",(function(val,_values,result){return this.static_env.$extend_static(),this.lexer.$cmdarg().$push(!1),this.context.$push("module"),result}),3),$def(self,"$_reduce_347",(function(val,_values,result){return $truthy(this.context["$module_definition_allowed?"]())||this.$diagnostic("error","module_in_def",nil,val["$[]"](0)),result=this.builder.$def_module(val["$[]"](0),val["$[]"](1),val["$[]"](3),val["$[]"](4)),this.lexer.$cmdarg().$pop(),this.static_env.$unextend(),this.context.$pop(),result}),3),$def(self,"$_reduce_348",(function(val,_values,result){return result=$send(this.builder,"def_method",$to_a(val["$[]"](0)).concat([val["$[]"](1),val["$[]"](2),val["$[]"](3)])),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),this.current_arg_stack.$pop(),result}),3),$def(self,"$_reduce_349",(function(val,_values,result){return result=$send(this.builder,"def_singleton",$to_a(val["$[]"](0)).concat([val["$[]"](1),val["$[]"](2),val["$[]"](3)])),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),this.current_arg_stack.$pop(),result}),3),$def(self,"$_reduce_350",(function(val,_values,result){return this.builder.$keyword_cmd("break",val["$[]"](0))}),3),$def(self,"$_reduce_351",(function(val,_values,result){return this.builder.$keyword_cmd("next",val["$[]"](0))}),3),$def(self,"$_reduce_352",(function(val,_values,result){return this.builder.$keyword_cmd("redo",val["$[]"](0))}),3),$def(self,"$_reduce_353",(function(val,_values,result){return this.builder.$keyword_cmd("retry",val["$[]"](0))}),3),$def(self,"$_reduce_355",(function(val,_values,result){return $truthy(this.context["$in_class?"]())&&this.$diagnostic("error","invalid_return",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_358",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_362",(function(val,_values,result){var $a,$b,else_t,else_;return $b=val["$[]"](4),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],[val["$[]"](0),this.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3),else_t,else_,nil)]}),3),$def(self,"$_reduce_364",(function(val,_values,result){return val}),3),$def(self,"$_reduce_367",(function(val,_values,result){return this.builder.$arg(val["$[]"](0))}),3),$def(self,"$_reduce_368",(function(val,_values,result){return this.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_369",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_370",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_372",(function(val,_values,result){return val["$[]"](0).$push(val["$[]"](2))}),3),$def(self,"$_reduce_373",(function(val,_values,result){return val["$[]"](0).$push(val["$[]"](2)).$concat(val["$[]"](4))}),3),$def(self,"$_reduce_374",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_375",(function(val,_values,result){return[val["$[]"](0)].concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_376",(function(val,_values,result){return this.builder.$restarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_377",(function(val,_values,result){return this.builder.$restarg(val["$[]"](0))}),3),$def(self,"$_reduce_380",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_381",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_382",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_383",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_384",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_385",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_387",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_388",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](6)).$concat(val["$[]"](7))}),3),$def(self,"$_reduce_389",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_390",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_391",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_393",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_394",(function(val,_values,result){return $truthy(val["$[]"](1)["$empty?"]())&&$eqeq(val["$[]"](0).$size(),1)?[this.builder.$procarg0(val["$[]"](0)["$[]"](0))]:val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_395",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_396",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_397",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_398",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_399",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_400",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_402",(function(val,_values,result){return this.builder.$args(nil,[],nil)}),3),$def(self,"$_reduce_403",(function(val,_values,result){var $writer;return $writer=["expr_value"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_404",(function(val,_values,result){return this.max_numparam_stack["$has_ordinary_params!"](),this.current_arg_stack.$set(nil),this.builder.$args(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_405",(function(val,_values,result){return this.max_numparam_stack["$has_ordinary_params!"](),this.current_arg_stack.$set(nil),this.builder.$args(val["$[]"](0),val["$[]"](1).$concat(val["$[]"](2)),val["$[]"](3))}),3),$def(self,"$_reduce_406",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_407",(function(val,_values,result){return val["$[]"](2)}),3),$def(self,"$_reduce_408",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_409",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_410",(function(val,_values,result){return this.static_env.$declare(val["$[]"](0)["$[]"](0)),this.builder.$shadowarg(val["$[]"](0))}),3),$def(self,"$_reduce_412",(function(val,_values,result){return this.static_env.$extend_dynamic(),this.max_numparam_stack.$push(),this.context.$push("lambda"),result}),3),$def(self,"$_reduce_413",(function(val,_values,result){return this.context.$pop(),this.lexer.$cmdarg().$push(!1),result}),3),$def(self,"$_reduce_414",(function(val,_values,result){var $a,$b,lambda_call,args,begin_t,body,end_t;return lambda_call=this.builder.$call_lambda(val["$[]"](0)),args=$truthy(this.max_numparam_stack["$has_numparams?"]())?this.builder.$numargs(this.max_numparam_stack.$top()):val["$[]"](2),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],body=null==$a[1]?nil:$a[1],end_t=null==$a[2]?nil:$a[2],this.max_numparam_stack.$pop(),this.static_env.$unextend(),this.lexer.$cmdarg().$pop(),this.builder.$block(lambda_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_415",(function(val,_values,result){return this.max_numparam_stack["$has_ordinary_params!"](),this.builder.$args(val["$[]"](0),val["$[]"](1).$concat(val["$[]"](2)),val["$[]"](3))}),3),$def(self,"$_reduce_416",(function(val,_values,result){return $truthy(val["$[]"](0)["$any?"]())&&this.max_numparam_stack["$has_ordinary_params!"](),this.builder.$args(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_417",(function(val,_values,result){return this.context.$push("lambda"),result}),3),$def(self,"$_reduce_418",(function(val,_values,result){return result=[val["$[]"](0),val["$[]"](2),val["$[]"](3)],this.context.$pop(),result}),3),$def(self,"$_reduce_419",(function(val,_values,result){return this.context.$push("lambda"),result}),3),$def(self,"$_reduce_420",(function(val,_values,result){return result=[val["$[]"](0),val["$[]"](2),val["$[]"](3)],this.context.$pop(),result}),3),$def(self,"$_reduce_421",(function(val,_values,result){return this.context.$push("block"),result}),3),$def(self,"$_reduce_422",(function(val,_values,result){return result=[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)]),this.context.$pop(),result}),3),$def(self,"$_reduce_423",(function(val,_values,result){var $a,$b,begin_t,block_args,body,end_t;return $b=val["$[]"](1),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],block_args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(val["$[]"](0),begin_t,block_args,body,end_t)}),3),$def(self,"$_reduce_424",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_425",(function(val,_values,result){var $a,$b,lparen_t,rparen_t,method_call,begin_t,body,end_t,args=nil;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_426",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_427",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](1),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(nil,nil,val["$[]"](0),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_428",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_429",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_430",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_431",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](2),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),nil,lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_432",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](2),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),nil,lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_433",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](1),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$keyword_cmd("super",val["$[]"](0),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_434",(function(val,_values,result){return this.builder.$keyword_cmd("zsuper",val["$[]"](0))}),3),$def(self,"$_reduce_435",(function(val,_values,result){return this.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_436",(function(val,_values,result){return this.context.$push("block"),result}),3),$def(self,"$_reduce_437",(function(val,_values,result){return result=[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)]),this.context.$pop(),result}),3),$def(self,"$_reduce_438",(function(val,_values,result){return this.context.$push("block"),result}),3),$def(self,"$_reduce_439",(function(val,_values,result){return result=[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)]),this.context.$pop(),result}),3),$def(self,"$_reduce_440",(function(val,_values,result){return this.static_env.$extend_dynamic(),this.max_numparam_stack.$push(),result}),3),$def(self,"$_reduce_441",(function(val,_values,result){return result=[$truthy(this.max_numparam_stack["$has_numparams?"]())?this.builder.$numargs(this.max_numparam_stack.$top()):val["$[]"](1),val["$[]"](2)],this.max_numparam_stack.$pop(),this.static_env.$unextend(),result}),3),$def(self,"$_reduce_442",(function(val,_values,result){return this.static_env.$extend_dynamic(),this.max_numparam_stack.$push(),result}),3),$def(self,"$_reduce_443",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),result}),3),$def(self,"$_reduce_444",(function(val,_values,result){return result=[$truthy(this.max_numparam_stack["$has_numparams?"]())?this.builder.$numargs(this.max_numparam_stack.$top()):val["$[]"](2),val["$[]"](3)],this.max_numparam_stack.$pop(),this.static_env.$unextend(),this.lexer.$cmdarg().$pop(),result}),3),$def(self,"$_reduce_445",(function(val,_values,result){return[this.builder.$when(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))].concat($to_a(val["$[]"](4)))}),3),$def(self,"$_reduce_446",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_448",(function(val,_values,result){var $writer=nil;return $writer=["expr_beg"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.lexer,"command_start=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.pattern_variables.$push(),this.pattern_hash_keys.$push(),result=this.lexer.$in_kwarg(),$writer=[!0],$send(this.lexer,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_449",(function(val,_values,result){var $writer;return this.pattern_variables.$pop(),this.pattern_hash_keys.$pop(),$writer=[val["$[]"](1)],$send(this.lexer,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_450",(function(val,_values,result){return[$send(this.builder,"in_pattern",[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3),val["$[]"](5)]))].concat($to_a(val["$[]"](6)))}),3),$def(self,"$_reduce_451",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_453",(function(val,_values,result){return[val["$[]"](0),nil]}),3),$def(self,"$_reduce_454",(function(val,_values,result){return[val["$[]"](0),this.builder.$if_guard(val["$[]"](1),val["$[]"](2))]}),3),$def(self,"$_reduce_455",(function(val,_values,result){return[val["$[]"](0),this.builder.$unless_guard(val["$[]"](1),val["$[]"](2))]}),3),$def(self,"$_reduce_457",(function(val,_values,result){var item;return item=this.builder.$match_with_trailing_comma(val["$[]"](0),val["$[]"](1)),this.builder.$array_pattern(nil,[item],nil)}),3),$def(self,"$_reduce_458",(function(val,_values,result){return this.builder.$array_pattern(nil,[val["$[]"](0)].$concat(val["$[]"](2)),nil)}),3),$def(self,"$_reduce_459",(function(val,_values,result){return this.builder.$find_pattern(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_460",(function(val,_values,result){return this.builder.$array_pattern(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_461",(function(val,_values,result){return this.builder.$hash_pattern(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_463",(function(val,_values,result){return this.builder.$match_as(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_465",(function(val,_values,result){return this.builder.$match_alt(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_467",(function(val,_values,result){return result=val["$[]"](0),this.pattern_hash_keys.$push(),result}),3),$def(self,"$_reduce_468",(function(val,_values,result){return result=val["$[]"](0),this.pattern_hash_keys.$push(),result}),3),$def(self,"$_reduce_471",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$array_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_472",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$find_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_473",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$hash_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_474",(function(val,_values,result){var pattern;return pattern=this.builder.$array_pattern(val["$[]"](1),nil,val["$[]"](2)),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](2))}),3),$def(self,"$_reduce_475",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$array_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_476",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$find_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_477",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$hash_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_478",(function(val,_values,result){var pattern;return pattern=this.builder.$array_pattern(val["$[]"](1),nil,val["$[]"](2)),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](2))}),3),$def(self,"$_reduce_479",(function(val,_values,result){return this.builder.$array_pattern(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_480",(function(val,_values,result){return this.builder.$find_pattern(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_481",(function(val,_values,result){return this.builder.$array_pattern(val["$[]"](0),[],val["$[]"](1))}),3),$def(self,"$_reduce_482",(function(val,_values,result){var $writer;return this.pattern_hash_keys.$push(),result=this.lexer.$in_kwarg(),$writer=[!1],$send(this.lexer,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_483",(function(val,_values,result){var $writer;return this.pattern_hash_keys.$pop(),$writer=[val["$[]"](1)],$send(this.lexer,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$hash_pattern(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_484",(function(val,_values,result){return this.builder.$hash_pattern(val["$[]"](0),[],val["$[]"](1))}),3),$def(self,"$_reduce_485",(function(val,_values,result){return this.pattern_hash_keys.$push(),result}),3),$def(self,"$_reduce_486",(function(val,_values,result){return this.pattern_hash_keys.$pop(),this.builder.$begin(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_487",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_488",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_489",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([val["$[]"](1)])}),3),$def(self,"$_reduce_490",(function(val,_values,result){var match_rest;return match_rest=this.builder.$match_rest(val["$[]"](1),val["$[]"](2)),[].concat($to_a(val["$[]"](0))).concat([match_rest])}),3),$def(self,"$_reduce_491",(function(val,_values,result){var match_rest;return match_rest=this.builder.$match_rest(val["$[]"](1),val["$[]"](2)),[].concat($to_a(val["$[]"](0))).concat([match_rest]).concat($to_a(val["$[]"](4)))}),3),$def(self,"$_reduce_492",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([this.builder.$match_rest(val["$[]"](1))])}),3),$def(self,"$_reduce_493",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([this.builder.$match_rest(val["$[]"](1))]).concat($to_a(val["$[]"](3)))}),3),$def(self,"$_reduce_495",(function(val,_values,result){return[this.builder.$match_with_trailing_comma(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_496",(function(val,_values,result){var last_item;return last_item=this.builder.$match_with_trailing_comma(val["$[]"](1),val["$[]"](2)),[].concat($to_a(val["$[]"](0))).concat([last_item])}),3),$def(self,"$_reduce_497",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_498",(function(val,_values,result){return[val["$[]"](0)].concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_499",(function(val,_values,result){return[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](4)])}),3),$def(self,"$_reduce_500",(function(val,_values,result){return this.builder.$match_rest(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_501",(function(val,_values,result){return this.builder.$match_rest(val["$[]"](0))}),3),$def(self,"$_reduce_502",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_503",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([val["$[]"](2)])}),3),$def(self,"$_reduce_505",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_506",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_507",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_508",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_509",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_510",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([val["$[]"](2)])}),3),$def(self,"$_reduce_511",(function(val,_values,result){return $send(this.builder,"match_pair",$to_a(val["$[]"](0)).concat([val["$[]"](1)]))}),3),$def(self,"$_reduce_512",(function(val,_values,result){return $send(this.builder,"match_label",$to_a(val["$[]"](0)))}),3),$def(self,"$_reduce_513",(function(val,_values,result){return["label",val["$[]"](0)]}),3),$def(self,"$_reduce_514",(function(val,_values,result){return["quoted",[val["$[]"](0),val["$[]"](1),val["$[]"](2)]]}),3),$def(self,"$_reduce_515",(function(val,_values,result){return[this.builder.$match_rest(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_516",(function(val,_values,result){return[this.builder.$match_rest(val["$[]"](0),nil)]}),3),$def(self,"$_reduce_517",(function(val,_values,result){return[this.builder.$match_nil_pattern(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_521",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_522",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_523",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_524",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_528",(function(val,_values,result){return this.builder.$range_inclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_529",(function(val,_values,result){return this.builder.$range_exclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_538",(function(val,_values,result){return this.builder.$accessible(val["$[]"](0))}),3),$def(self,"$_reduce_540",(function(val,_values,result){return this.builder.$assignable(this.builder.$match_var(val["$[]"](0)))}),3),$def(self,"$_reduce_541",(function(val,_values,result){var name,lvar;return name=val["$[]"](1)["$[]"](0),$truthy(this.$static_env()["$declared?"](name))||this.$diagnostic("error","undefined_lvar",$hash2(["name"],{name:name}),val["$[]"](1)),lvar=this.builder.$accessible(this.builder.$ident(val["$[]"](1))),this.builder.$pin(val["$[]"](0),lvar)}),3),$def(self,"$_reduce_542",(function(val,_values,result){var non_lvar;return non_lvar=this.builder.$accessible(val["$[]"](1)),this.builder.$pin(val["$[]"](0),non_lvar)}),3),$def(self,"$_reduce_543",(function(val,_values,result){var expr;return expr=this.builder.$begin(val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.builder.$pin(val["$[]"](0),expr)}),3),$def(self,"$_reduce_544",(function(val,_values,result){return this.builder.$const_global(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_545",(function(val,_values,result){return this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_546",(function(val,_values,result){return this.builder.$const(val["$[]"](0))}),3),$def(self,"$_reduce_547",(function(val,_values,result){var $a,$b,assoc_t,exc_var,exc_list=nil;return $b=val["$[]"](2),assoc_t=null==($a=$to_ary($b))[0]?nil:$a[0],exc_var=null==$a[1]?nil:$a[1],$truthy(val["$[]"](1))&&(exc_list=this.builder.$array(nil,val["$[]"](1),nil)),[this.builder.$rescue_body(val["$[]"](0),exc_list,assoc_t,exc_var,val["$[]"](3),val["$[]"](4))].concat($to_a(val["$[]"](5)))}),3),$def(self,"$_reduce_548",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_549",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_552",(function(val,_values,result){return[val["$[]"](0),val["$[]"](1)]}),3),$def(self,"$_reduce_554",(function(val,_values,result){return[val["$[]"](0),val["$[]"](1)]}),3),$def(self,"$_reduce_558",(function(val,_values,result){return this.builder.$string_compose(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_559",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_560",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_561",(function(val,_values,result){var string;return string=this.builder.$string_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2)),this.builder.$dedent_string(string,this.lexer.$dedent_level())}),3),$def(self,"$_reduce_562",(function(val,_values,result){var string;return string=this.builder.$string(val["$[]"](0)),this.builder.$dedent_string(string,this.lexer.$dedent_level())}),3),$def(self,"$_reduce_563",(function(val,_values,result){return this.builder.$character(val["$[]"](0))}),3),$def(self,"$_reduce_564",(function(val,_values,result){var string;return string=this.builder.$xstring_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2)),this.builder.$dedent_string(string,this.lexer.$dedent_level())}),3),$def(self,"$_reduce_565",(function(val,_values,result){var opts;return opts=this.builder.$regexp_options(val["$[]"](3)),this.builder.$regexp_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2),opts)}),3),$def(self,"$_reduce_566",(function(val,_values,result){return this.builder.$words_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_567",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_568",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$word(val["$[]"](1)))}),3),$def(self,"$_reduce_569",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_570",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_571",(function(val,_values,result){return this.builder.$symbols_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_572",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_573",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$word(val["$[]"](1)))}),3),$def(self,"$_reduce_574",(function(val,_values,result){return this.builder.$words_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_575",(function(val,_values,result){return this.builder.$symbols_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_576",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_577",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$string_internal(val["$[]"](1)))}),3),$def(self,"$_reduce_578",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_579",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$symbol_internal(val["$[]"](1)))}),3),$def(self,"$_reduce_580",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_581",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_582",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_583",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_584",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_585",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_586",(function(val,_values,result){return this.builder.$string_internal(val["$[]"](0))}),3),$def(self,"$_reduce_587",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_588",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),this.lexer.$cond().$push(!1),result}),3),$def(self,"$_reduce_589",(function(val,_values,result){return this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.builder.$begin(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_590",(function(val,_values,result){return this.builder.$gvar(val["$[]"](0))}),3),$def(self,"$_reduce_591",(function(val,_values,result){return this.builder.$ivar(val["$[]"](0))}),3),$def(self,"$_reduce_592",(function(val,_values,result){return this.builder.$cvar(val["$[]"](0))}),3),$def(self,"$_reduce_596",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$symbol(val["$[]"](0))}),3),$def(self,"$_reduce_597",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$symbol_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_598",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_599",(function(val,_values,result){return $truthy(this.builder["$respond_to?"]("negate"))?this.builder.$negate(val["$[]"](0),val["$[]"](1)):this.builder.$unary_num(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_600",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$integer(val["$[]"](0))}),3),$def(self,"$_reduce_601",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$float(val["$[]"](0))}),3),$def(self,"$_reduce_602",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$rational(val["$[]"](0))}),3),$def(self,"$_reduce_603",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$complex(val["$[]"](0))}),3),$def(self,"$_reduce_604",(function(val,_values,result){return this.builder.$ivar(val["$[]"](0))}),3),$def(self,"$_reduce_605",(function(val,_values,result){return this.builder.$gvar(val["$[]"](0))}),3),$def(self,"$_reduce_606",(function(val,_values,result){return this.builder.$cvar(val["$[]"](0))}),3),$def(self,"$_reduce_607",(function(val,_values,result){return this.builder.$ident(val["$[]"](0))}),3),$def(self,"$_reduce_608",(function(val,_values,result){return this.builder.$ivar(val["$[]"](0))}),3),$def(self,"$_reduce_609",(function(val,_values,result){return this.builder.$gvar(val["$[]"](0))}),3),$def(self,"$_reduce_610",(function(val,_values,result){return this.builder.$const(val["$[]"](0))}),3),$def(self,"$_reduce_611",(function(val,_values,result){return this.builder.$cvar(val["$[]"](0))}),3),$def(self,"$_reduce_612",(function(val,_values,result){return this.builder.$nil(val["$[]"](0))}),3),$def(self,"$_reduce_613",(function(val,_values,result){return this.builder.$self(val["$[]"](0))}),3),$def(self,"$_reduce_614",(function(val,_values,result){return this.builder.$true(val["$[]"](0))}),3),$def(self,"$_reduce_615",(function(val,_values,result){return this.builder.$false(val["$[]"](0))}),3),$def(self,"$_reduce_616",(function(val,_values,result){return this.builder.$__FILE__(val["$[]"](0))}),3),$def(self,"$_reduce_617",(function(val,_values,result){return this.builder.$__LINE__(val["$[]"](0))}),3),$def(self,"$_reduce_618",(function(val,_values,result){return this.builder.$__ENCODING__(val["$[]"](0))}),3),$def(self,"$_reduce_619",(function(val,_values,result){return this.builder.$accessible(val["$[]"](0))}),3),$def(self,"$_reduce_620",(function(val,_values,result){return this.builder.$accessible(val["$[]"](0))}),3),$def(self,"$_reduce_621",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_622",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_623",(function(val,_values,result){return this.builder.$nth_ref(val["$[]"](0))}),3),$def(self,"$_reduce_624",(function(val,_values,result){return this.builder.$back_ref(val["$[]"](0))}),3),$def(self,"$_reduce_625",(function(val,_values,result){var $writer;return $writer=["expr_value"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_626",(function(val,_values,result){return[val["$[]"](0),val["$[]"](2)]}),3),$def(self,"$_reduce_627",(function(val,_values,result){return nil}),3),$def(self,"$_reduce_629",(function(val,_values,result){return this.builder.$args(nil,[],nil)}),3),$def(self,"$_reduce_630",(function(val,_values,result){var $writer;return result=this.builder.$args(val["$[]"](0),val["$[]"](1),val["$[]"](2)),$writer=["expr_value"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_632",(function(val,_values,result){var $writer;return result=this.lexer.$in_kwarg(),$writer=[!0],$send(this.lexer,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.context.$push("def_open_args"),result}),3),$def(self,"$_reduce_633",(function(val,_values,result){var $writer;return this.context.$pop(),$writer=[val["$[]"](0)],$send(this.lexer,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$args(nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_634",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_635",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_636",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_637",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_638",(function(val,_values,result){return this.static_env.$declare_forward_args(),[this.builder.$forward_arg(val["$[]"](0))]}),3),$def(self,"$_reduce_639",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_640",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_641",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_642",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](6)).$concat(val["$[]"](7))}),3),$def(self,"$_reduce_643",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_644",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_645",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_646",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_647",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_648",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_649",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_650",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_651",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_652",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_653",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_654",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_655",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_656",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_657",(function(val,_values,result){return this.$diagnostic("error","argument_const",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_658",(function(val,_values,result){return this.$diagnostic("error","argument_ivar",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_659",(function(val,_values,result){return this.$diagnostic("error","argument_gvar",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_660",(function(val,_values,result){return this.$diagnostic("error","argument_cvar",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_662",(function(val,_values,result){return this.static_env.$declare(val["$[]"](0)["$[]"](0)),this.max_numparam_stack["$has_ordinary_params!"](),val["$[]"](0)}),3),$def(self,"$_reduce_663",(function(val,_values,result){return this.current_arg_stack.$set(val["$[]"](0)["$[]"](0)),val["$[]"](0)}),3),$def(self,"$_reduce_664",(function(val,_values,result){return this.current_arg_stack.$set(0),this.builder.$arg(val["$[]"](0))}),3),$def(self,"$_reduce_665",(function(val,_values,result){return this.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_666",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_667",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_668",(function(val,_values,result){return this.$check_kwarg_name(val["$[]"](0)),this.static_env.$declare(val["$[]"](0)["$[]"](0)),this.max_numparam_stack["$has_ordinary_params!"](),this.current_arg_stack.$set(val["$[]"](0)["$[]"](0)),val["$[]"](0)}),3),$def(self,"$_reduce_669",(function(val,_values,result){return this.current_arg_stack.$set(nil),this.builder.$kwoptarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_670",(function(val,_values,result){return this.current_arg_stack.$set(nil),this.builder.$kwarg(val["$[]"](0))}),3),$def(self,"$_reduce_671",(function(val,_values,result){return this.builder.$kwoptarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_672",(function(val,_values,result){return this.builder.$kwarg(val["$[]"](0))}),3),$def(self,"$_reduce_673",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_674",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_675",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_676",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_679",(function(val,_values,result){return[this.builder.$kwnilarg(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_680",(function(val,_values,result){return this.static_env.$declare(val["$[]"](1)["$[]"](0)),[this.builder.$kwrestarg(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_681",(function(val,_values,result){return[this.builder.$kwrestarg(val["$[]"](0))]}),3),$def(self,"$_reduce_682",(function(val,_values,result){return this.current_arg_stack.$set(0),this.builder.$optarg(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_683",(function(val,_values,result){return this.current_arg_stack.$set(0),this.builder.$optarg(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_684",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_685",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_686",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_687",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_690",(function(val,_values,result){return this.static_env.$declare(val["$[]"](1)["$[]"](0)),[this.builder.$restarg(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_691",(function(val,_values,result){return[this.builder.$restarg(val["$[]"](0))]}),3),$def(self,"$_reduce_694",(function(val,_values,result){return this.static_env.$declare(val["$[]"](1)["$[]"](0)),this.builder.$blockarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_695",(function(val,_values,result){return this.static_env.$declare_anonymous_blockarg(),this.builder.$blockarg(val["$[]"](0),nil)}),3),$def(self,"$_reduce_696",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_697",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_699",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_700",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_702",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_703",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_704",(function(val,_values,result){return this.builder.$pair(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_705",(function(val,_values,result){return this.builder.$pair_keyword(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_706",(function(val,_values,result){return this.builder.$pair_label(val["$[]"](0))}),3),$def(self,"$_reduce_707",(function(val,_values,result){return this.builder.$pair_quoted(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_708",(function(val,_values,result){return this.builder.$kwsplat(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_721",(function(val,_values,result){return["dot",val["$[]"](0)["$[]"](1)]}),3),$def(self,"$_reduce_722",(function(val,_values,result){return["anddot",val["$[]"](0)["$[]"](1)]}),3),$def(self,"$_reduce_727",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_728",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_729",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_733",(function(val,_values,result){return this.$yyerrok(),result}),3),$def(self,"$_reduce_737",(function(val,_values,result){return nil}),3),$def(self,"$_reduce_none",(function(val,_values,result){return val["$[]"](0)}),3)}($nesting[0],$$$($$("Parser"),"Base"),$nesting)}($nesting[0],$nesting)},Opal.modules["opal/ast/builder"]=function(Opal){var self=Opal.top,$nesting=[],$$$=(Opal.nil,Opal.$$$),$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$Opal=Opal.Opal,$hash2=Opal.hash2,$def=Opal.def;return Opal.add_stubs("require,emit_lambda=,-,new"),self.$require("opal/ast/node"),self.$require("parser/ruby31"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var $writer,self=$klass($base,$super,"Builder");return $send(self,"emit_lambda=",$to_a($writer=[!0])),$rb_minus($writer.length,1),$def(self,"$n",(function(type,children,location){return $$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:location}))}),3)}([$module($base,"AST")].concat($parent_nesting)[0],$$$($$$($$$("Parser"),"Builders"),"Default"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/base"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$truthy=Opal.truthy,$Opal=Opal.Opal,$hash2=Opal.hash2,$defs=Opal.defs,$alias=Opal.alias,$rb_plus=Opal.rb_plus,$eqeqeq=Opal.eqeqeq,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,new,current_node,loc,+,stmts_of,begin_with_stmts,nil?,include?,type,children,===,length,[],s,attr_accessor,current_node=,-,location=,raise"),self.$require("parser"),self.$require("opal/ast/node"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Base"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"DummyLocation"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$node=",(function($a){return Opal.slice.call(arguments),nil}),-1),$def(self,"$expression",(function(){return this}),0),$def(self,"$begin_pos",(function(){return 0}),0),$def(self,"$end_pos",(function(){return 0}),0),$def(self,"$source",(function(){return""}),0),$def(self,"$line",(function(){return 0}),0),$def(self,"$column",(function(){return 0}),0),$def(self,"$last_line",(function(){return $$$($$("Float"),"INFINITY")}),0)}($nesting[0],0,$nesting),$const_set($nesting[0],"DUMMY_LOCATION",$$("DummyLocation").$new()),$def(self,"$s",(function(type,$a){var children,self=this,loc=nil;return children=Opal.slice.call(arguments,1),loc=$truthy(self.$current_node())?self.$current_node().$loc():$$("DUMMY_LOCATION"),$$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:loc}))}),-2),$defs(self,"$s",(function(type,$a){var children;return children=Opal.slice.call(arguments,1),$$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:$$("DUMMY_LOCATION")}))}),-2),$alias(self,"on_iter","process_regular_node"),$alias(self,"on_top","process_regular_node"),$alias(self,"on_zsuper","process_regular_node"),$alias(self,"on_jscall","on_send"),$alias(self,"on_jsattr","process_regular_node"),$alias(self,"on_jsattrasgn","process_regular_node"),$alias(self,"on_kwsplat","process_regular_node"),$def(self,"$prepend_to_body",(function(body,node){var stmts;return stmts=$rb_plus(this.$stmts_of(node),this.$stmts_of(body)),this.$begin_with_stmts(stmts)}),2),$def(self,"$append_to_body",(function(body,node){var stmts;return stmts=$rb_plus(this.$stmts_of(body),this.$stmts_of(node)),this.$begin_with_stmts(stmts)}),2),$def(self,"$stmts_of",(function(node){return $truthy(node["$nil?"]())?[]:$truthy(["begin","kwbegin"]["$include?"](node.$type()))?node.$children():[node]}),1),$def(self,"$begin_with_stmts",(function(stmts){var $ret_or_1;return $eqeqeq(0,$ret_or_1=stmts.$length())?nil:$eqeqeq(1,$ret_or_1)?stmts["$[]"](0):$send(this,"s",["begin"].concat($to_a(stmts)))}),1),self.$attr_accessor("current_node"),$def(self,"$process",(function $$process(node){var $yield=$$process.$$p||nil,self=this,$writer=nil;return delete $$process.$$p,function(){try{return $send(self,"current_node=",$to_a($writer=[node])),$writer[$rb_minus($writer.length,1)],$send2(self,$find_super(self,"process",$$process,!1,!0),"process",[node],$yield)}finally{$send(self,"current_node=",$to_a($writer=[nil])),$writer[$rb_minus($writer.length,1)]}}()}),1),$def(self,"$error",(function(msg){var error,$writer=nil;return error=$$$($Opal,"RewritingError").$new(msg),$truthy(this.$current_node())&&($writer=[this.$current_node().$loc()],$send(error,"location=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),this.$raise(error)}),1)}($nesting[0],$$$($$$($$$("Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/opal_engine_check"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_a=Opal.to_a,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$const_set=Opal.const_set;return Opal.add_stubs("require,children,skip_check_present?,process,s,skip_check_present_not?,=="),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"OpalEngineCheck"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_if",(function $$on_if(node){var $a,test,true_body,false_body,$yield=$$on_if.$$p||nil,$ret_or_1=nil;return delete $$on_if.$$p,test=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],true_body=null==$a[1]?nil:$a[1],false_body=null==$a[2]?nil:$a[2],$truthy(this["$skip_check_present?"](test))?this.$process($truthy($ret_or_1=true_body)?$ret_or_1:this.$s("nil")):$truthy(this["$skip_check_present_not?"](test))?this.$process($truthy($ret_or_1=false_body)?$ret_or_1:this.$s("nil")):$send2(this,$find_super(this,"on_if",$$on_if,!1,!0),"on_if",[node],$yield)}),1),$def(self,"$skip_check_present?",(function(test){var $ret_or_1;return $truthy($ret_or_1=test["$=="]($$("RUBY_ENGINE_CHECK")))?$ret_or_1:test["$=="]($$("RUBY_PLATFORM_CHECK"))}),1),$def(self,"$skip_check_present_not?",(function(test){var $ret_or_1;return $truthy($ret_or_1=test["$=="]($$("RUBY_ENGINE_CHECK_NOT")))?$ret_or_1:test["$=="]($$("RUBY_PLATFORM_CHECK_NOT"))}),1),$const_set($nesting[0],"RUBY_ENGINE_CHECK",self.$s("send",self.$s("const",nil,"RUBY_ENGINE"),"==",self.$s("str","opal"))),$const_set($nesting[0],"RUBY_ENGINE_CHECK_NOT",self.$s("send",self.$s("const",nil,"RUBY_ENGINE"),"!=",self.$s("str","opal"))),$const_set($nesting[0],"RUBY_PLATFORM_CHECK",self.$s("send",self.$s("const",nil,"RUBY_PLATFORM"),"==",self.$s("str","opal"))),$const_set($nesting[0],"RUBY_PLATFORM_CHECK_NOT",self.$s("send",self.$s("const",nil,"RUBY_PLATFORM"),"!=",self.$s("str","opal")))}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/for_rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$defs=Opal.defs,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$to_a=Opal.to_a,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,+,find,map,s,next_tmp,class,===,type,updated,<<,prepend_to_body,process,attr_reader,new,to_a,result"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ForRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$reset_tmp_counter!",(function(){return this.counter=0}),0),$defs(self,"$next_tmp",(function(){var $ret_or_1;return null==this.counter&&(this.counter=nil),this.counter=$truthy($ret_or_1=this.counter)?$ret_or_1:0,this.counter=$rb_plus(this.counter,1),"$for_tmp"+this.counter}),0),$def(self,"$on_for",(function(node){var $a,iterating_value,iterating_lvars,lvars_declared_in_body,outer_assigns,tmp_loop_variable,get_tmp_loop_variable,loop_variable_assignment,loop_variable=nil,loop_body=nil;return loop_variable=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],iterating_value=null==$a[1]?nil:$a[1],loop_body=null==$a[2]?nil:$a[2],iterating_lvars=$$("LocalVariableAssigns").$find(loop_variable),lvars_declared_in_body=$$("LocalVariableAssigns").$find(loop_body),outer_assigns=$send($rb_plus(iterating_lvars,lvars_declared_in_body),"map",[],(function $$2(lvar_name){return null==lvar_name&&(lvar_name=nil),(null==$$2.$$s?this:$$2.$$s).$s("lvdeclare",lvar_name)}),{$$arity:1,$$s:this}),tmp_loop_variable=this.$class().$next_tmp(),get_tmp_loop_variable=this.$s("js_tmp",tmp_loop_variable),loop_variable_assignment=$eqeqeq("mlhs",loop_variable.$type())?loop_variable.$updated("masgn",[loop_variable,get_tmp_loop_variable]):loop_variable["$<<"](get_tmp_loop_variable),loop_body=this.$prepend_to_body(loop_body,loop_variable_assignment),(node=node.$updated("send",[iterating_value,"each",node.$updated("iter",[this.$s("args",this.$s("arg",tmp_loop_variable)),this.$process(loop_body)])])).$updated("begin",[].concat($to_a(outer_assigns)).concat([node]))}),1),function($base,$super,$parent_nesting){var self=$klass($base,$super,"LocalVariableAssigns"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$attr_reader("result"),$defs(self,"$find",(function(node){var processor=nil;return(processor=this.$new()).$process(node),processor.$result().$to_a()}),1),$def(self,"$initialize",(function(){return this.result=$$("Set").$new()}),0),$def(self,"$on_lvasgn",(function $$on_lvasgn(node){var $a,name,$yield=$$on_lvasgn.$$p||nil;return delete $$on_lvasgn.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],this.$result()["$<<"](name),$send2(this,$find_super(this,"on_lvasgn",$$on_lvasgn,!1,!0),"on_lvasgn",[node],$yield)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/explicit_writer_return"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$slice=Opal.slice,$eqeq=Opal.eqeq,$regexp=Opal.regexp,$send=Opal.send;return Opal.add_stubs("require,s,==,to_s,=~,process_all,updated"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ExplicitWriterReturn"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.in_masgn=nil,$def(self,"$initialize",(function(){return this.in_masgn=!1}),0),$const_set($nesting[0],"TMP_NAME","$writer"),$const_set($nesting[0],"GET_ARGS_NODE",self.$s("lvar",$$("TMP_NAME"))),$const_set($nesting[0],"RETURN_ARGS_NODE",self.$s("jsattr",$$("GET_ARGS_NODE"),self.$s("send",self.$s("jsattr",$$("GET_ARGS_NODE"),self.$s("str","length")),"-",self.$s("int",1)))),$def(self,"$on_send",(function $$on_send(node){var $a,recv,args,$yield=$$on_send.$$p||nil,method_name=nil,set_args_node=nil;return delete $$on_send.$$p,$truthy(this.in_masgn)?$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield):(recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(method_name.$to_s()["$=~"]($regexp([$$("REGEXP_START"),"\\w+=",$$("REGEXP_END")])))||$eqeq(method_name.$to_s(),"[]=")?(set_args_node=this.$s("lvasgn",$$("TMP_NAME"),$send(this,"s",["array"].concat($to_a(this.$process_all(args))))),this.$s("begin",set_args_node,node.$updated(nil,[recv,method_name,this.$s("splat",$$("GET_ARGS_NODE"))]),$$("RETURN_ARGS_NODE"))):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield))}),1),$def(self,"$on_masgn",(function $$on_masgn(node){var result,$yield=$$on_masgn.$$p||nil;return delete $$on_masgn.$$p,this.in_masgn=!0,result=$send2(this,$find_super(this,"on_masgn",$$on_masgn,!1,!0),"on_masgn",[node],$yield),this.in_masgn=!1,result}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/js_reserved_words"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$truthy=Opal.truthy,$defs=Opal.defs,$def=Opal.def,$range=Opal.range,$to_a=Opal.to_a,$send2=Opal.send2,$find_super=Opal.find_super,$hash2=Opal.hash2,$alias=Opal.alias;return Opal.add_stubs("require,freeze,=~,!,valid_name?,class,to_sym,valid_ivar_name?,[],to_s,updated,fix_var_name,fix_ivar_name"),self.$require("opal/rewriters/base"),self.$require("opal/regexp_anchors"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"JsReservedWords"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"ES51_RESERVED_WORD",$regexp([$$("REGEXP_START"),"(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"ES3_RESERVED_WORD_EXCLUSIVE",$regexp([$$("REGEXP_START"),"(?:int|byte|char|goto|long|final|float|short|double|native|throws|boolean|abstract|volatile|transient|synchronized)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"PROTO_SPECIAL_PROPS",$regexp([$$("REGEXP_START"),"(?:constructor|displayName|__proto__|__parent__|__noSuchMethod__|__count__)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"PROTO_SPECIAL_METHODS",$regexp([$$("REGEXP_START"),"(?:hasOwnProperty|valueOf)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"IMMUTABLE_PROPS",$regexp([$$("REGEXP_START"),"(?:NaN|Infinity|undefined)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"BASIC_IDENTIFIER_RULES",$regexp([$$("REGEXP_START"),"[$_a-z][$_a-z\\d]*",$$("REGEXP_END")],"i").$freeze()),$const_set($nesting[0],"RESERVED_FUNCTION_NAMES",$regexp([$$("REGEXP_START"),"(?:Array)",$$("REGEXP_END")]).$freeze()),$defs(self,"$valid_name?",(function(name){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $truthy($ret_or_1=$$("BASIC_IDENTIFIER_RULES")["$=~"](name))?($truthy($ret_or_2=$truthy($ret_or_3=$$("ES51_RESERVED_WORD")["$=~"](name))?$ret_or_3:$$("ES3_RESERVED_WORD_EXCLUSIVE")["$=~"](name))?$ret_or_2:$$("IMMUTABLE_PROPS")["$=~"](name))["$!"]():$ret_or_1}),1),$defs(self,"$valid_ivar_name?",(function(name){var $ret_or_1;return($truthy($ret_or_1=$$("PROTO_SPECIAL_PROPS")["$=~"](name))?$ret_or_1:$$("PROTO_SPECIAL_METHODS")["$=~"](name))["$!"]()}),1),$def(self,"$fix_var_name",(function(name){return $truthy(this.$class()["$valid_name?"](name))?name:(name+"$").$to_sym()}),1),$def(self,"$fix_ivar_name",(function(name){return $truthy(this.$class()["$valid_ivar_name?"](name.$to_s()["$[]"]($range(1,-1,!1))))?name:(name+"$").$to_sym()}),1),$def(self,"$on_lvar",(function $$on_lvar(node){var $a,name;return delete $$on_lvar.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],node=node.$updated(nil,[this.$fix_var_name(name)]),$send2(this,$find_super(this,"on_lvar",$$on_lvar,!1,!0),"on_lvar",[node],null)}),1),$def(self,"$on_lvasgn",(function $$on_lvasgn(node){var $a,name,value;return delete $$on_lvasgn.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],node=$truthy(value)?node.$updated(nil,[this.$fix_var_name(name),value]):node.$updated(nil,[this.$fix_var_name(name)]),$send2(this,$find_super(this,"on_lvasgn",$$on_lvasgn,!1,!0),"on_lvasgn",[node],null)}),1),$def(self,"$on_ivar",(function $$on_ivar(node){var $a,name;return delete $$on_ivar.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],node=node.$updated(nil,[this.$fix_ivar_name(name)]),$send2(this,$find_super(this,"on_ivar",$$on_ivar,!1,!0),"on_ivar",[node],null)}),1),$def(self,"$on_ivasgn",(function $$on_ivasgn(node){var $a,name,value;return delete $$on_ivasgn.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],node=$truthy(value)?node.$updated(nil,[this.$fix_ivar_name(name),value]):node.$updated(nil,[this.$fix_ivar_name(name)]),$send2(this,$find_super(this,"on_ivasgn",$$on_ivasgn,!1,!0),"on_ivasgn",[node],null)}),1),$def(self,"$on_restarg",(function(node){var $a,name;return name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$truthy(name)&&(node=node.$updated(nil,[this.$fix_var_name(name)],$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:name})}))),node}),1),$alias(self,"on_kwrestarg","on_restarg"),$def(self,"$on_argument",(function $$on_argument(node){var $a,name,value,fixed_name,new_children;return delete $$on_argument.$$p,node=$send2(this,$find_super(this,"on_argument",$$on_argument,!1,!0),"on_argument",[node],null),name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],fixed_name=this.$fix_var_name(name),new_children=$truthy(value)?[fixed_name,value]:[fixed_name],node.$updated(nil,new_children,$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:name})}))}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/block_to_iter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$def=Opal.def;return Opal.add_stubs("require,s,process,updated,+,children"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BlockToIter");return $def(self,"$on_block",(function(node){var $a,args,body,iter_node,recvr=nil;return recvr=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],iter_node=this.$s("iter",args,body),this.$process(recvr.$updated(nil,$rb_plus(recvr.$children(),[iter_node])))}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/dot_js_syntax"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_a=Opal.to_a,$slice=Opal.slice,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$eqeqeq=Opal.eqeqeq,$neqeq=Opal.neqeq,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("require,==,type,===,!=,size,error,first,to_js_attr_call,to_js_attr_assign_call,to_native_js_call,s"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DotJsSyntax");return $def(self,"$on_send",(function $$on_send(node){var $a,meth,$yield=$$on_send.$$p||nil,recv=nil,args=nil,recv_of_recv=nil,meth_of_recv=nil,$ret_or_1=nil,property=nil,value=nil;return delete $$on_send.$$p,recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(recv)&&$eqeq(recv.$type(),"send")?(recv_of_recv=null==($a=[].concat($to_a(recv)))[0]?nil:$a[0],meth_of_recv=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],$eqeq(meth_of_recv,"JS")?($eqeqeq("[]",$ret_or_1=meth)?($neqeq(args.$size(),1)&&this.$error(".JS[:property] syntax supports only one argument"),property=args.$first(),node=this.$to_js_attr_call(recv_of_recv,property)):$eqeqeq("[]=",$ret_or_1)?($neqeq(args.$size(),2)&&this.$error(".JS[:property]= syntax supports only two arguments"),property=null==($a=[].concat($to_a(args)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],node=this.$to_js_attr_assign_call(recv_of_recv,property,value)):node=this.$to_native_js_call(recv_of_recv,meth,args),$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],null)):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield)):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield)}),1),$def(self,"$to_native_js_call",(function(recv,meth,args){return $send(this,"s",["jscall",recv,meth].concat($to_a(args)))}),3),$def(self,"$to_js_attr_call",(function(recv,property){return this.$s("jsattr",recv,property)}),2),$def(self,"$to_js_attr_assign_call",(function(recv,property,value){return this.$s("jsattrasgn",recv,property,value)}),3)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/pattern_matching"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$slice=Opal.slice,$truthy=Opal.truthy,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$not=Opal.not,$neqeq=Opal.neqeq,$eqeq=Opal.eqeq,$alias=Opal.alias,$Opal=Opal.Opal;return Opal.add_stubs("require,s,convert_full_pattern,raise_no_matching_pattern_error,+,process,single_case_match,private,shift,===,type,!,empty?,!=,==,class,new,run!,variables,pattern,map,<<,array,on_literal,first,children,to_proc,method,each,to_ast,on_array_pattern,compact,[]"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"PatternMatching"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.depth=nil,$def(self,"$initialize",(function $$initialize(){var $yield=$$initialize.$$p||nil;return delete $$initialize.$$p,this.depth=0,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[],$yield)}),0),$def(self,"$on_match_pattern",(function(node){var $a,from,pat;return from=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],pat=null==$a[1]?nil:$a[1],this.$s("begin",this.$s("lvasgn","$pmvar",from),this.$s("if",this.$convert_full_pattern(from,pat),nil,this.$raise_no_matching_pattern_error("$pmvar")))}),1),$def(self,"$on_match_pattern_p",(function(node){var $a,from,pat;return from=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],pat=null==$a[1]?nil:$a[1],this.$s("if",this.$convert_full_pattern(from,pat),this.$s("true"),this.$s("false"))}),1),$def(self,"$on_case_match",(function(node){var $a,$b,from,cases,cmvar=nil,els=nil;return this.depth=$rb_plus(this.depth,1),cmvar="$cmvar"+this.depth,from=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],$b=($b=$a.length-1)<1?1:$b,cases=$slice.call($a,1,$b),els=null==$a[$b]?nil:$a[$b],$truthy(els)?this.$process(els):els=this.$raise_no_matching_pattern_error(cmvar),this.$s("begin",this.$s("lvasgn",cmvar,from),$send(this,"single_case_match",[cmvar].concat($to_a(cases)).concat([els])))}),1),self.$private(),$def(self,"$raise_no_matching_pattern_error",(function(from){return this.$s("send",nil,"raise",this.$s("const",this.$s("cbase"),"NoMatchingPatternError"),this.$s("lvar",from))}),1),$def(self,"$single_case_match",(function(from,$a,$b){var $post_args,cases,els,$c,self=this,cas=nil,pat=nil,if_guard=nil,body=nil,guard=nil,$ret_or_1=nil;return cases=($post_args=Opal.slice.call(arguments,1)).splice(0,$post_args.length-1),null==(els=$post_args.shift())&&(els=nil),cas=cases.$shift(),pat=null==($c=[].concat($to_a(cas)))[0]?nil:$c[0],if_guard=null==$c[1]?nil:$c[1],body=null==$c[2]?nil:$c[2],pat=self.$convert_full_pattern(from,pat),$truthy(if_guard)&&(guard=null==($c=[].concat($to_a(if_guard)))[0]?nil:$c[0],$eqeqeq("if_guard",$ret_or_1=if_guard.$type())?pat=self.$s("and",pat,guard):$eqeqeq("unless_guard",$ret_or_1)&&(pat=self.$s("and",pat,self.$s("send",guard,"!")))),self.$s("if",pat,self.$process(body),$not(cases["$empty?"]())?$send(self,"single_case_match",[from].concat($to_a(cases)).concat([els])):$neqeq(els,self.$s("empty_else"))?els:nil)}),-3),$def(self,"$convert_full_pattern",(function(from,pat){var converter=nil;return $eqeq(from.$class(),$$("Symbol"))&&(from=this.$s("lvar",from)),(converter=$$("PatternConverter").$new(pat))["$run!"](),this.$s("masgn",$send(this,"s",["mlhs"].concat($to_a(converter.$variables()))),this.$s("send",this.$s("const",this.$s("cbase"),"PatternMatching"),"call",from,converter.$pattern()))}),2),function($base,$super,$parent_nesting){var self=$klass($base,$super,"PatternConverter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.pat=$proto.outpat=$proto.variables=nil,$def(self,"$initialize",(function(pat){return this.pat=pat,this.variables=[]}),1),$def(self,"$run!",(function(){return this.outpat=this.$process(this.pat)}),0),$def(self,"$pattern",(function(){return this.outpat}),0),$def(self,"$variables",(function(){return $send(this.variables,"map",[],(function $$2(i){return null==i&&(i=nil),(null==$$2.$$s?this:$$2.$$s).$s("lvasgn",i)}),{$$arity:1,$$s:this})}),0),$def(self,"$on_match_var",(function(node){var $a,var$;return var$=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],this.variables["$<<"](var$),this.$s("sym","var")}),1),$def(self,"$on_match_as",(function(node){var $a,pat,save;return pat=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],save=null==$a[1]?nil:$a[1],this.$process(save),this.$array(this.$s("sym","save"),this.$process(pat))}),1),$def(self,"$on_literal",(function(node){return this.$array(this.$s("sym","lit"),node)}),1),$alias(self,"on_int","on_literal"),$alias(self,"on_float","on_literal"),$alias(self,"on_complex","on_literal"),$alias(self,"on_rational","on_literal"),$alias(self,"on_array","on_literal"),$alias(self,"on_str","on_literal"),$alias(self,"on_dstr","on_literal"),$alias(self,"on_xstr","on_literal"),$alias(self,"on_sym","on_literal"),$alias(self,"on_irange","on_literal"),$alias(self,"on_erange","on_literal"),$alias(self,"on_const","on_literal"),$alias(self,"on_regexp","on_literal"),$alias(self,"on_lambda","on_literal"),$alias(self,"on_begin","on_literal"),$def(self,"$on_pin",(function(node){return this.$on_literal(node.$children().$first())}),1),$def(self,"$on_match_rest",(function(node){return $truthy(node.$children()["$empty?"]())?this.$array(this.$s("sym","rest")):this.$array(this.$s("sym","rest"),this.$process(node.$children().$first()))}),1),$def(self,"$on_match_alt",(function(node){return $send(this,"array",[this.$s("sym","any")].concat($to_a($send(node.$children(),"map",[],this.$method("process").$to_proc()))))}),1),$def(self,"$on_const_pattern",(function(node){return $send(this,"array",[this.$s("sym","all")].concat($to_a($send(node.$children(),"map",[],this.$method("process").$to_proc()))))}),1),$def(self,"$on_array_pattern",(function(node,tail){var children=nil,fixed_size=nil,array_size=nil;return null==tail&&(tail=!1),children=[].concat($to_a(node)),$truthy(tail)&&children["$<<"](this.$s("match_rest")),fixed_size=!0,array_size=0,children=$send(children,"each",[],(function(i){return null==i&&(i=nil),$eqeqeq("match_rest",i.$type())?fixed_size=!1:array_size=$rb_plus(array_size,1)}),1),this.$array(this.$s("sym","array"),this.$to_ast(fixed_size),this.$to_ast(array_size),this.$to_ast($send(children,"map",[],this.$method("process").$to_proc())))}),-2),$def(self,"$on_array_pattern_with_tail",(function(node){return this.$on_array_pattern(node,!0)}),1),$def(self,"$on_hash_pattern",(function(node){var children=nil,any_size=nil;return children=[].concat($to_a(node)),any_size=$truthy(children["$empty?"]())?this.$to_ast(!1):this.$to_ast(!0),children=$send(children,"map",[],(function $$4(i){var $ret_or_1,self=null==$$4.$$s?this:$$4.$$s;return null==i&&(i=nil),$eqeqeq("pair",$ret_or_1=i.$type())?self.$array(i.$children()["$[]"](0),self.$process(i.$children()["$[]"](1))):$eqeqeq("match_var",$ret_or_1)?self.$array(self.$s("sym",i.$children()["$[]"](0)),self.$process(i)):$eqeqeq("match_nil_pattern",$ret_or_1)?(any_size=self.$to_ast(!1),nil):$eqeqeq("match_rest",$ret_or_1)?(any_size=$truthy(i.$children().$first())?self.$process(i.$children().$first()):self.$to_ast(!0),nil):nil}),{$$arity:1,$$s:this}).$compact(),this.$array(this.$s("sym","hash"),any_size,$send(this,"array",$to_a(children)))}),1),$def(self,"$on_find_pattern",(function(node){var children=nil;return children=[].concat($to_a(node)),children=$send(children,"map",[],this.$method("process").$to_proc()),this.$array(this.$s("sym","find"),$send(this,"array",$to_a(children)))}),1),self.$private(),$def(self,"$array",(function($a){var args,self=this;return args=Opal.slice.call(arguments),self.$to_ast(args)}),-1),$def(self,"$to_ast",(function(val){var $ret_or_1;return $eqeqeq($$("Array"),$ret_or_1=val)?$send(this,"s",["array"].concat($to_a(val))):$eqeqeq($$("Integer"),$ret_or_1)?this.$s("int",val):$eqeqeq(!0,$ret_or_1)?this.$s("true"):$eqeqeq(!1,$ret_or_1)?this.$s("false"):$eqeqeq(nil,$ret_or_1)?this.$s("nil"):nil}),1)}($nesting[0],$$$($$$($Opal,"Rewriters"),"Base"),$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/logical_operator_assignment"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$class_variable_set=Opal.class_variable_set,$defs=Opal.defs,$truthy=Opal.truthy,$class_variable_get=Opal.class_variable_get,$rb_plus=Opal.rb_plus,$const_set=Opal.const_set,$lambda=Opal.lambda,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$slice=Opal.slice,$hash2=Opal.hash2,$send=Opal.send,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,+,updated,s,==,include?,[],type,new_temp,freeze,call,fetch,error,process"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"LogicalOperatorAssignment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$reset_tmp_counter!",(function(){return $class_variable_set($nesting[0],"@@counter",0)}),0),$defs(self,"$new_temp",(function(){var $ret_or_1=nil;return $class_variable_set($nesting[0],"@@counter",$truthy(null!=$nesting[0].$$cvars["@@counter"]?"class variable":nil)&&$truthy($ret_or_1=$class_variable_get($nesting[0],"@@counter",!1))?$ret_or_1:0),$class_variable_set($nesting[0],"@@counter",$rb_plus($class_variable_get($nesting[0],"@@counter",!1),1)),"$logical_op_recvr_tmp_"+$class_variable_get($nesting[0],"@@counter",!1)}),0),$const_set($nesting[0],"GET_SET",$lambda((function $LogicalOperatorAssignment$2(get_type,set_type){return null==get_type&&(get_type=nil),null==set_type&&(set_type=nil),$lambda((function $$3(lhs,rhs,root_type){var get_node,self=null==$$3.$$s?this:$$3.$$s,condition_node=nil,defined_node=nil;return null==lhs&&(lhs=nil),null==rhs&&(rhs=nil),null==root_type&&(root_type=nil),get_node=lhs.$updated(get_type),condition_node=self.$s(root_type,get_node,rhs),$truthy(["const","cvar"]["$include?"](get_type))&&$eqeq(root_type,"or")&&(defined_node=self.$s("defined?",get_node),condition_node=self.$s("if",defined_node,self.$s("begin",condition_node),rhs)),lhs.$updated(set_type,[].concat($to_a(lhs)).concat([condition_node]))}),{$$arity:3,$$s:null==$LogicalOperatorAssignment$2.$$s?this:$LogicalOperatorAssignment$2.$$s})}),{$$arity:2,$$s:self})),$const_set($nesting[0],"LocalVariableHandler",$$("GET_SET")["$[]"]("lvar","lvasgn")),$const_set($nesting[0],"InstanceVariableHandler",$$("GET_SET")["$[]"]("ivar","ivasgn")),$const_set($nesting[0],"ConstantHandler",$$("GET_SET")["$[]"]("const","casgn")),$const_set($nesting[0],"GlobalVariableHandler",$$("GET_SET")["$[]"]("gvar","gvasgn")),$const_set($nesting[0],"ClassVariableHandler",$$("GET_SET")["$[]"]("cvar","cvasgn")),function($base,$super){var self=$klass($base,$super,"SendHandler");$defs(self,"$call",(function(lhs,rhs,root_type){var $a,args,call_reader,call_writer,get_or_set,recvr=nil,reader_method=nil,recvr_tmp=nil,cache_recvr=nil,writer_method=nil;return recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],reader_method=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(recvr)&&$eqeq(recvr.$type(),"send")&&(recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp)),writer_method=reader_method+"=",call_reader=lhs.$updated("send",[recvr,reader_method].concat($to_a(args))),call_writer=lhs.$updated("send",[recvr,writer_method].concat($to_a(args)).concat([rhs])),get_or_set=this.$s(root_type,call_reader,call_writer),$truthy(cache_recvr)?this.$s("begin",cache_recvr,get_or_set):get_or_set}),3)}($nesting[0],self),function($base,$super){var self=$klass($base,$super,"ConditionalSendHandler");$defs(self,"$call",(function(lhs,rhs,root_type){var $a,args,recvr_tmp,cache_recvr,recvr_is_nil,plain_send,plain_or_asgn,recvr=nil,meth=nil;return root_type+="_asgn",recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp),recvr_is_nil=this.$s("send",recvr,"nil?"),plain_send=lhs.$updated("send",[recvr,meth].concat($to_a(args))),plain_or_asgn=this.$s(root_type,plain_send,rhs),this.$s("begin",cache_recvr,this.$s("if",recvr_is_nil,this.$s("nil"),plain_or_asgn))}),3)}($nesting[0],self),$const_set($nesting[0],"HANDLERS",$hash2(["lvasgn","ivasgn","casgn","gvasgn","cvasgn","send","csend"],{lvasgn:$$("LocalVariableHandler"),ivasgn:$$("InstanceVariableHandler"),casgn:$$("ConstantHandler"),gvasgn:$$("GlobalVariableHandler"),cvasgn:$$("ClassVariableHandler"),send:$$("SendHandler"),csend:$$("ConditionalSendHandler")}).$freeze()),$def(self,"$on_or_asgn",(function(node){var $a,rhs,result,lhs=nil;return $a=[].concat($to_a(node)),lhs=null==$a[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],result=$send($$("HANDLERS"),"fetch",[lhs.$type()],(function $$4(){return(null==$$4.$$s?this:$$4.$$s).$error("cannot handle LHS type: "+lhs.$type())}),{$$arity:0,$$s:this}).$call(lhs,rhs,"or"),this.$process(result)}),1),$def(self,"$on_and_asgn",(function(node){var $a,rhs,result,lhs=nil;return $a=[].concat($to_a(node)),lhs=null==$a[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],result=$send($$("HANDLERS"),"fetch",[lhs.$type()],(function $$5(){return(null==$$5.$$s?this:$$5.$$s).$error("cannot handle LHS type: "+lhs.$type())}),{$$arity:0,$$s:this}).$call(lhs,rhs,"and"),this.$process(result)}),1),$const_set($nesting[0],"ASSIGNMENT_STRING_NODE",self.$s("str","assignment")),$def(self,"$on_defined?",(function $LogicalOperatorAssignment_on_defined$ques$6(node){var $a,inner=nil;return delete $LogicalOperatorAssignment_on_defined$ques$6.$$p,inner=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$truthy(["or_asgn","and_asgn"]["$include?"](inner.$type()))?$$("ASSIGNMENT_STRING_NODE"):$send2(this,$find_super(this,"on_defined?",$LogicalOperatorAssignment_on_defined$ques$6,!1,!0),"on_defined?",[node],null)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/binary_operator_assignment"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$class_variable_set=Opal.class_variable_set,$defs=Opal.defs,$truthy=Opal.truthy,$class_variable_get=Opal.class_variable_get,$rb_plus=Opal.rb_plus,$const_set=Opal.const_set,$lambda=Opal.lambda,$to_a=Opal.to_a,$slice=Opal.slice,$eqeq=Opal.eqeq,$hash2=Opal.hash2,$send=Opal.send,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,+,updated,[],==,type,new_temp,s,freeze,call,fetch,error,process"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"BinaryOperatorAssignment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$reset_tmp_counter!",(function(){return $class_variable_set($nesting[0],"@@counter",0)}),0),$defs(self,"$new_temp",(function(){var $ret_or_1=nil;return $class_variable_set($nesting[0],"@@counter",$truthy(null!=$nesting[0].$$cvars["@@counter"]?"class variable":nil)&&$truthy($ret_or_1=$class_variable_get($nesting[0],"@@counter",!1))?$ret_or_1:0),$class_variable_set($nesting[0],"@@counter",$rb_plus($class_variable_get($nesting[0],"@@counter",!1),1)),"$binary_op_recvr_tmp_"+$class_variable_get($nesting[0],"@@counter",!1)}),0),$const_set($nesting[0],"GET_SET",$lambda((function(get_type,set_type){return null==get_type&&(get_type=nil),null==set_type&&(set_type=nil),$lambda((function(node,lhs,operation,rhs){var get_node,set_node;return null==node&&(node=nil),null==lhs&&(lhs=nil),null==operation&&(operation=nil),null==rhs&&(rhs=nil),get_node=lhs.$updated(get_type),set_node=node.$updated("send",[get_node,operation,rhs]),lhs.$updated(set_type,[].concat($to_a(lhs)).concat([set_node]))}),4)}),2)),$const_set($nesting[0],"LocalVariableHandler",$$("GET_SET")["$[]"]("lvar","lvasgn")),$const_set($nesting[0],"InstanceVariableHandler",$$("GET_SET")["$[]"]("ivar","ivasgn")),$const_set($nesting[0],"ConstantHandler",$$("GET_SET")["$[]"]("const","casgn")),$const_set($nesting[0],"GlobalVariableHandler",$$("GET_SET")["$[]"]("gvar","gvasgn")),$const_set($nesting[0],"ClassVariableHandler",$$("GET_SET")["$[]"]("cvar","cvasgn")),function($base,$super){var self=$klass($base,$super,"SendHandler");$defs(self,"$call",(function(node,lhs,operation,rhs){var $a,args,call_reader,call_op,call_writer,recvr=nil,reader_method=nil,recvr_tmp=nil,cache_recvr=nil,writer_method=nil;return recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],reader_method=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(recvr)&&$eqeq(recvr.$type(),"send")&&(recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp)),writer_method=reader_method+"=",call_reader=lhs.$updated("send",[recvr,reader_method].concat($to_a(args))),call_op=node.$updated("send",[call_reader,operation,rhs]),call_writer=lhs.$updated("send",[recvr,writer_method].concat($to_a(args)).concat([call_op])),$truthy(cache_recvr)?node.$updated("begin",[cache_recvr,call_writer]):call_writer}),4)}($nesting[0],self),function($base,$super){var self=$klass($base,$super,"ConditionalSendHandler");$defs(self,"$call",(function(node,lhs,operation,rhs){var $a,args,recvr_tmp,cache_recvr,recvr_is_nil,plain_send,plain_op_asgn,recvr=nil,meth=nil;return recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp),recvr_is_nil=this.$s("send",recvr,"nil?"),plain_send=lhs.$updated("send",[recvr,meth].concat($to_a(args))),plain_op_asgn=node.$updated("op_asgn",[plain_send,operation,rhs]),this.$s("begin",cache_recvr,this.$s("if",recvr_is_nil,this.$s("nil"),plain_op_asgn))}),4)}($nesting[0],self),$const_set($nesting[0],"HANDLERS",$hash2(["lvasgn","ivasgn","casgn","gvasgn","cvasgn","send","csend"],{lvasgn:$$("LocalVariableHandler"),ivasgn:$$("InstanceVariableHandler"),casgn:$$("ConstantHandler"),gvasgn:$$("GlobalVariableHandler"),cvasgn:$$("ClassVariableHandler"),send:$$("SendHandler"),csend:$$("ConditionalSendHandler")}).$freeze()),$def(self,"$on_op_asgn",(function(node){var $a,op,rhs,result,lhs=nil;return $a=[].concat($to_a(node)),lhs=null==$a[0]?nil:$a[0],op=null==$a[1]?nil:$a[1],rhs=null==$a[2]?nil:$a[2],result=$send($$("HANDLERS"),"fetch",[lhs.$type()],(function $$4(){return(null==$$4.$$s?this:$$4.$$s).$error("cannot handle LHS type: "+lhs.$type())}),{$$arity:0,$$s:this}).$call(node,lhs,op,rhs),this.$process(result)}),1),$const_set($nesting[0],"ASSIGNMENT_STRING_NODE",self.$s("str","assignment")),$def(self,"$on_defined?",(function $BinaryOperatorAssignment_on_defined$ques$5(node){var $a,inner=nil;return delete $BinaryOperatorAssignment_on_defined$ques$5.$$p,inner=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$eqeq(inner.$type(),"op_asgn")?$$("ASSIGNMENT_STRING_NODE"):$send2(this,$find_super(this,"on_defined?",$BinaryOperatorAssignment_on_defined$ques$5,!1,!0),"on_defined?",[node],null)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/hashes/key_duplicates_rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$Opal=Opal.Opal;return Opal.add_stubs("require,new,include?,type,<<,==,process_regular_node,updated,inspect,warn"),self.$require("opal/rewriters/base"),self.$require("set"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Hashes")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"KeyDuplicatesRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.keys=nil,$def(self,"$initialize",(function(){return this.keys=$$("UniqKeysSet").$new()}),0),$def(self,"$on_hash",(function $$on_hash(node){var $a,self=this,previous_keys=nil;return delete $$on_hash.$$p,function(){try{return $a=[self.keys,$$("UniqKeysSet").$new()],previous_keys=$a[0],self.keys=$a[1],$send2(self,$find_super(self,"on_hash",$$on_hash,!1,!0),"on_hash",[node],null)}finally{self.keys=previous_keys}}()}),1),$def(self,"$on_pair",(function $$on_pair(node){var $a,key=nil;return delete $$on_pair.$$p,key=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$truthy(["str","sym"]["$include?"](key.$type()))&&this.keys["$<<"](key),$send2(this,$find_super(this,"on_pair",$$on_pair,!1,!0),"on_pair",[node],null)}),1),$def(self,"$on_kwsplat",(function(node){var $a,hash=nil;return hash=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$eqeq(hash.$type(),"hash")&&(hash=this.$process_regular_node(hash)),node.$updated(nil,[hash])}),1),function($base,$super,$parent_nesting){var self=$klass($base,null,"UniqKeysSet"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.set=nil,$def(self,"$initialize",(function(){return this.set=$$("Set").$new()}),0),$def(self,"$<<",(function(element){var $a,key=nil;return $truthy(this.set["$include?"](element))?(key=null==($a=[].concat($to_a(element)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],key=$eqeq(element.$type(),"str")?key.$inspect():":"+key,$$("Kernel").$warn("warning: key "+key+" is duplicated and overwritten")):this.set["$<<"](element)}),1)}($nesting[0],0,$nesting)}($nesting[0],$$$($$$($Opal,"Rewriters"),"Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/dump_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$hash2=Opal.hash2,$def=Opal.def;return Opal.add_stubs("require,updated"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DumpArgs");return $def(self,"$on_def",(function $$on_def(node){var $a,args;return delete $$on_def.$$p,node=$send2(this,$find_super(this,"on_def",$$on_def,!1,!0),"on_def",[node],null),null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))}),1),$def(self,"$on_defs",(function $$on_defs(node){var $a,args;return delete $$on_defs.$$p,node=$send2(this,$find_super(this,"on_defs",$$on_defs,!1,!0),"on_defs",[node],null),null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],args=null==$a[2]?nil:$a[2],null==$a[3]?nil:$a[3],node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))}),1),$def(self,"$on_iter",(function $$on_iter(node){var $a,args;return delete $$on_iter.$$p,node=$send2(this,$find_super(this,"on_iter",$$on_iter,!1,!0),"on_iter",[node],null),args=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/mlhs_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$def=Opal.def,$rb_plus=Opal.rb_plus,$send=Opal.send,$eqeq=Opal.eqeq,$hash2=Opal.hash2;return Opal.add_stubs("require,new,updated,rewritten,initialization,s,prepend_to_body,attr_reader,split!,+,each,children,==,type,new_mlhs_tmp,process,<<,length,[],empty?"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"MlhsArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_def",(function $$on_def(node){var $a,mid,args=nil,body=nil,arguments$=nil,$ret_or_1=nil;return delete $$on_def.$$p,node=$send2(this,$find_super(this,"on_def",$$on_def,!1,!0),"on_def",[node],null),mid=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],arguments$=$$("Arguments").$new(args),args=args.$updated(nil,arguments$.$rewritten()),$truthy(arguments$.$initialization())&&(body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),body=this.$prepend_to_body(body,arguments$.$initialization())),node.$updated(nil,[mid,args,body])}),1),$def(self,"$on_defs",(function $$on_defs(node){var $a,recv,mid,args=nil,body=nil,arguments$=nil,$ret_or_1=nil;return delete $$on_defs.$$p,node=$send2(this,$find_super(this,"on_defs",$$on_defs,!1,!0),"on_defs",[node],null),recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],mid=null==$a[1]?nil:$a[1],args=null==$a[2]?nil:$a[2],body=null==$a[3]?nil:$a[3],arguments$=$$("Arguments").$new(args),args=args.$updated(nil,arguments$.$rewritten()),$truthy(arguments$.$initialization())&&(body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),body=this.$prepend_to_body(body,arguments$.$initialization())),node.$updated(nil,[recv,mid,args,body])}),1),$def(self,"$on_iter",(function $$on_iter(node){var $a,args=nil,body=nil,arguments$=nil,$ret_or_1=nil;return delete $$on_iter.$$p,node=$send2(this,$find_super(this,"on_iter",$$on_iter,!1,!0),"on_iter",[node],null),args=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],body=null==$a[1]?nil:$a[1],arguments$=$$("Arguments").$new(args),args=args.$updated(nil,arguments$.$rewritten()),$truthy(arguments$.$initialization())&&(body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),body=this.$prepend_to_body(body,arguments$.$initialization())),node.$updated(nil,[args,body])}),1),function($base,$super,$parent_nesting){var self=$klass($base,$super,"Arguments"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.counter=$proto.args=$proto.initialization=nil,self.$attr_reader("rewritten","initialization"),$def(self,"$initialize",(function(args){return this.args=args,this.rewritten=[],this.initialization=[],this.rewriter=$$("MlhsRewriter").$new(),this["$split!"]()}),1),$def(self,"$reset_tmp_counter!",(function(){return this.counter=0}),0),$def(self,"$new_mlhs_tmp",(function(){var $ret_or_1;return this.counter=$truthy($ret_or_1=this.counter)?$ret_or_1:0,this.counter=$rb_plus(this.counter,1),"$mlhs_tmp"+this.counter}),0),$def(self,"$split!",(function(){return $send(this.args.$children(),"each",[],(function $$3(arg){var self=null==$$3.$$s?this:$$3.$$s,var_name=nil,rhs=nil,mlhs=nil;return null==self.rewriter&&(self.rewriter=nil),null==self.initialization&&(self.initialization=nil),null==self.rewritten&&(self.rewritten=nil),null==arg&&(arg=nil),$eqeq(arg.$type(),"mlhs")?(var_name=self.$new_mlhs_tmp(),rhs=self.$s("lvar",var_name),mlhs=self.rewriter.$process(arg),self.initialization["$<<"](self.$s("masgn",mlhs,rhs)),self.rewritten["$<<"](self.$s("arg",var_name).$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:var_name})})))):self.rewritten["$<<"](arg)}),{$$arity:1,$$s:this}),$eqeq(this.initialization.$length(),1)?this.initialization=this.initialization["$[]"](0):$truthy(this.initialization["$empty?"]())?this.initialization=nil:this.initialization=$send(this,"s",["begin"].concat($to_a(this.initialization)))}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"MlhsRewriter");return $def(self,"$on_arg",(function(node){return node.$updated("lvasgn")}),1),$def(self,"$on_restarg",(function(node){var name;return name=node.$children()["$[]"](0),$truthy(name)?this.$s("splat",node.$updated("lvasgn")):this.$s("splat")}),1)}($nesting[0],$$("Base"))}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/arguments"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("attr_reader,each,===,type,<<,any?,raise,!,nil?,has_any_kwargs?,can_inline_kwargs?,empty?"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,null,"Arguments"),$proto=self.$$prototype;return $proto.restarg=$proto.postargs=$proto.kwargs=$proto.kwoptargs=$proto.kwrestarg=$proto.optargs=nil,self.$attr_reader("args","optargs","restarg","postargs","kwargs","kwoptargs","kwrestarg","kwnilarg","shadowargs","blockarg"),$def(self,"$initialize",(function(args){return this.args=[],this.optargs=[],this.restarg=nil,this.postargs=[],this.kwargs=[],this.kwoptargs=[],this.kwrestarg=nil,this.kwnilarg=!1,this.shadowargs=[],this.blockarg=nil,$send(args,"each",[],(function $$1(arg){var $ret_or_1,self=null==$$1.$$s?this:$$1.$$s;return null==self.optargs&&(self.optargs=nil),null==self.restarg&&(self.restarg=nil),null==self.postargs&&(self.postargs=nil),null==self.args&&(self.args=nil),null==self.kwargs&&(self.kwargs=nil),null==self.kwoptargs&&(self.kwoptargs=nil),null==self.shadowargs&&(self.shadowargs=nil),null==arg&&(arg=nil),$eqeqeq("arg",$ret_or_1=arg.$type())||$eqeqeq("mlhs",$ret_or_1)?($truthy(self.restarg)||$truthy(self.optargs["$any?"]())?self.postargs:self.args)["$<<"](arg):$eqeqeq("optarg",$ret_or_1)?self.optargs["$<<"](arg):$eqeqeq("restarg",$ret_or_1)?self.restarg=arg:$eqeqeq("kwarg",$ret_or_1)?self.kwargs["$<<"](arg):$eqeqeq("kwoptarg",$ret_or_1)?self.kwoptargs["$<<"](arg):$eqeqeq("kwnilarg",$ret_or_1)?self.kwnilarg=!0:$eqeqeq("kwrestarg",$ret_or_1)?self.kwrestarg=arg:$eqeqeq("shadowarg",$ret_or_1)?self.shadowargs["$<<"](arg):$eqeqeq("blockarg",$ret_or_1)?self.blockarg=arg:self.$raise("Unsupported arg type "+arg.$type())}),{$$arity:1,$$s:this})}),1),$def(self,"$has_post_args?",(function(){var $ret_or_1,$ret_or_2=nil;return $truthy($ret_or_1=$truthy($ret_or_2=this.restarg["$nil?"]()["$!"]())?$ret_or_2:this.postargs["$any?"]())?$ret_or_1:$truthy($ret_or_2=this["$has_any_kwargs?"]())?this["$can_inline_kwargs?"]()["$!"]():$ret_or_2}),0),$def(self,"$has_any_kwargs?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.kwargs["$any?"]())?$ret_or_2:this.kwoptargs["$any?"]())?$ret_or_1:this.kwrestarg["$nil?"]()["$!"]()}),0),$def(self,"$can_inline_kwargs?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.optargs["$empty?"]())?this.restarg["$nil?"]():$ret_or_2)?this.postargs["$empty?"]():$ret_or_1}),0)}([$module($base,"Rewriters")].concat($parent_nesting)[0])}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/inline_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$hash2=Opal.hash2,$def=Opal.def,$const_set=Opal.const_set,$send=Opal.send,$eqeq=Opal.eqeq,$Opal=Opal.Opal;return Opal.add_stubs("require,s,new,updated,inline,prepend_to_body,initialization,attr_reader,freeze,children,each,send,any?,blockarg,<<,shadowargs,args,==,[],has_post_args?,length,has_any_kwargs?,can_inline_kwargs?,kwargs,kwoptargs,kwrestarg,postargs,optargs,args_to_keep,restarg"),self.$require("opal/rewriters/base"),self.$require("opal/rewriters/arguments"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"InlineArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_def",(function $$on_def(node){var $a,mid,$ret_or_1,inline_args,args=nil,body=nil,initializer=nil;return delete $$on_def.$$p,node=$send2(this,$find_super(this,"on_def",$$on_def,!1,!0),"on_def",[node],null),mid=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),initializer=$$("Initializer").$new(args,$hash2(["type"],{type:"def"})),inline_args=args.$updated(nil,initializer.$inline()),body=this.$prepend_to_body(body,initializer.$initialization()),node.$updated(nil,[mid,inline_args,body])}),1),$def(self,"$on_defs",(function $$on_defs(node){var $a,recv,mid,$ret_or_1,inline_args,args=nil,body=nil,initializer=nil;return delete $$on_defs.$$p,node=$send2(this,$find_super(this,"on_defs",$$on_defs,!1,!0),"on_defs",[node],null),recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],mid=null==$a[1]?nil:$a[1],args=null==$a[2]?nil:$a[2],body=null==$a[3]?nil:$a[3],body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),initializer=$$("Initializer").$new(args,$hash2(["type"],{type:"defs"})),inline_args=args.$updated(nil,initializer.$inline()),body=this.$prepend_to_body(body,initializer.$initialization()),node.$updated(nil,[recv,mid,inline_args,body])}),1),$def(self,"$on_iter",(function $$on_iter(node){var $a,$ret_or_1,inline_args,args=nil,body=nil,initializer=nil;return delete $$on_iter.$$p,node=$send2(this,$find_super(this,"on_iter",$$on_iter,!1,!0),"on_iter",[node],null),args=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],body=null==$a[1]?nil:$a[1],body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),initializer=$$("Initializer").$new(args,$hash2(["type"],{type:"iter"})),inline_args=args.$updated(nil,initializer.$inline()),body=this.$prepend_to_body(body,initializer.$initialization()),node.$updated(nil,[inline_args,body])}),1),function($base,$super,$parent_nesting){var self=$klass($base,$super,"Initializer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.initialization=$proto.args=$proto.inline=nil,self.$attr_reader("inline","initialization"),$const_set($nesting[0],"STEPS",["extract_blockarg","initialize_shadowargs","extract_args","prepare_post_args","prepare_kwargs","extract_optargs","extract_restarg","extract_post_args","extract_kwargs","extract_kwoptargs","extract_kwrestarg"].$freeze()),$def(self,"$initialize",(function(args,$kwargs){var type;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");if(!Opal.hasOwnProperty.call($kwargs.$$smap,"type"))throw Opal.ArgumentError.$new("missing keyword: type");return type=$kwargs.$$smap.type,this.args=$$("Arguments").$new(args.$children()),this.inline=[],this.initialization=[],this.type=type,this.underscore_found=!1,$send($$("STEPS"),"each",[],(function $$1(step){return null==step&&(step=nil),(null==$$1.$$s?this:$$1.$$s).$send(step)}),{$$arity:1,$$s:this}),$truthy(this.initialization["$any?"]())?this.initialization=$send(this,"s",["begin"].concat($to_a(this.initialization))):this.initialization=nil}),2),$def(self,"$extract_blockarg",(function(){var arg=nil;return $truthy(arg=this.args.$blockarg())?this.initialization["$<<"](arg.$updated("extract_blockarg")):nil}),0),$def(self,"$initialize_shadowargs",(function(){return $send(this.args.$shadowargs(),"each",[],(function $$2(arg){var self=null==$$2.$$s?this:$$2.$$s;return null==self.initialization&&(self.initialization=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("initialize_shadowarg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_args",(function(){return $send(this.args.$args(),"each",[],(function $$3(arg){var self=null==$$3.$$s?this:$$3.$$s;return null==self.type&&(self.type=nil),null==self.initialization&&(self.initialization=nil),null==self.underscore_found&&(self.underscore_found=nil),null==self.inline&&(self.inline=nil),null==arg&&(arg=nil),$eqeq(self.type,"iter")&&(self.initialization["$<<"](arg.$updated("initialize_iter_arg")),$eqeq(arg.$children()["$[]"](0),"_")&&($truthy(self.underscore_found)&&(arg=self.$s("fake_arg")),self.underscore_found=!0)),self.inline["$<<"](arg)}),{$$arity:1,$$s:this})}),0),$def(self,"$prepare_post_args",(function(){return $truthy(this.args["$has_post_args?"]())?this.initialization["$<<"](this.$s("prepare_post_args",this.args.$args().$length())):nil}),0),$def(self,"$prepare_kwargs",(function(){return $truthy(this.args["$has_any_kwargs?"]())?($truthy(this.args["$can_inline_kwargs?"]())?this.inline["$<<"](this.$s("arg","$kwargs")):(this.initialization["$<<"](this.$s("extract_kwargs")),this.inline["$<<"](this.$s("fake_arg"))),this.initialization["$<<"](this.$s("ensure_kwargs_are_kwargs"))):nil}),0),$def(self,"$extract_kwargs",(function(){return $send(this.args.$kwargs(),"each",[],(function $$4(arg){var self=null==$$4.$$s?this:$$4.$$s;return null==self.initialization&&(self.initialization=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("extract_kwarg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_kwoptargs",(function(){return $send(this.args.$kwoptargs(),"each",[],(function $$5(arg){var self=null==$$5.$$s?this:$$5.$$s;return null==self.initialization&&(self.initialization=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("extract_kwoptarg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_kwrestarg",(function(){var arg=nil;return $truthy(arg=this.args.$kwrestarg())?this.initialization["$<<"](arg.$updated("extract_kwrestarg")):nil}),0),$def(self,"$extract_post_args",(function(){return $send(this.args.$postargs(),"each",[],(function $$6(arg){var self=null==$$6.$$s?this:$$6.$$s;return null==self.initialization&&(self.initialization=nil),null==self.inline&&(self.inline=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("extract_post_arg")),self.inline["$<<"](self.$s("fake_arg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_optargs",(function(){var has_post_args;return has_post_args=this.args["$has_post_args?"](),$send(this.args.$optargs(),"each",[],(function $$7(arg){var $a,self=null==$$7.$$s?this:$$7.$$s,arg_name=nil,default_value=nil;return null==self.initialization&&(self.initialization=nil),null==self.inline&&(self.inline=nil),null==arg&&(arg=nil),$truthy(has_post_args)?(arg_name=null==($a=[].concat($to_a(arg)))[0]?nil:$a[0],default_value=null==$a[1]?nil:$a[1],self.initialization["$<<"](arg.$updated("extract_post_optarg",[arg_name,default_value,self.$args_to_keep()])),self.inline["$<<"](self.$s("fake_arg"))):(self.inline["$<<"](arg.$updated("arg")),self.initialization["$<<"](arg.$updated("extract_optarg")))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_restarg",(function(){var arg=nil,arg_name=nil;return $truthy(arg=this.args.$restarg())?(arg_name=arg.$children()["$[]"](0),this.initialization["$<<"](arg.$updated("extract_restarg",[arg_name,this.$args_to_keep()])),this.inline["$<<"](this.$s("fake_arg"))):nil}),0),$def(self,"$args_to_keep",(function(){return this.args.$postargs().$length()}),0)}($nesting[0],$$$($$$($Opal,"Rewriters"),"Base"),$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/numblocks"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_ary=Opal.to_ary,$send=Opal.send,$to_a=Opal.to_a,$def=Opal.def;return Opal.add_stubs("require,children,s,gen_args,map"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Numblocks");return $def(self,"$on_numblock",(function(node){var $a,$b,left,arg_count,right;return $b=node.$children(),left=null==($a=$to_ary($b))[0]?nil:$a[0],arg_count=null==$a[1]?nil:$a[1],right=null==$a[2]?nil:$a[2],this.$s("block",left,$send(this,"s",["args"].concat($to_a(this.$gen_args(arg_count)))),right)}),1),$def(self,"$gen_args",(function(arg_count){return $send(Opal.Range.$new(1,arg_count,!1),"map",[],(function $$1(i){return null==i&&(i=nil),(null==$$1.$$s?this:$$1.$$s).$s("arg","_"+i)}),{$$arity:1,$$s:this})}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/returnable_logic"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$def=Opal.def,$rb_minus=Opal.rb_minus,$to_a=Opal.to_a,$send=Opal.send,$send2=Opal.send2,$find_super=Opal.find_super,$slice=Opal.slice,$eqeq=Opal.eqeq;return Opal.add_stubs("require,+,-,children,[]=,meta,s,next_tmp,build_if_from_when,free_tmp,[],process,updated,==,count,first,delete,private,build_rule_from_parts,empty?,type"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ReturnableLogic");return self.$$prototype.counter=nil,$def(self,"$next_tmp",(function(){var $ret_or_1;return this.counter=$truthy($ret_or_1=this.counter)?$ret_or_1:0,this.counter=$rb_plus(this.counter,1),"$ret_or_"+this.counter}),0),$def(self,"$free_tmp",(function(){return this.counter=$rb_minus(this.counter,1)}),0),$def(self,"$reset_tmp_counter!",(function(){return this.counter=nil}),0),$def(self,"$on_if",(function $$on_if(node){var $a,$yield=$$on_if.$$p||nil,test=nil,$writer=nil;return delete $$on_if.$$p,test=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],$truthy(test)&&($writer=["if_test",!0],$send(test.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$send2(this,$find_super(this,"on_if",$$on_if,!1,!0),"on_if",[node],$yield)}),1),$def(self,"$on_case",(function(node){var $a,$b,lhs,whens,$ret_or_1,out,els=nil,lhs_tmp=nil;return lhs=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],$b=($b=$a.length-1)<1?1:$b,whens=$slice.call($a,1,$b),els=null==$a[$b]?nil:$a[$b],els=$truthy($ret_or_1=els)?$ret_or_1:this.$s("nil"),$truthy(lhs)&&(lhs_tmp=this.$next_tmp()),out=this.$build_if_from_when(node,lhs,lhs_tmp,whens,els),$truthy(lhs)&&this.$free_tmp(),out}),1),$def(self,"$on_or",(function(node){var $a,lhs=nil,rhs=nil,$writer=nil,out=nil,lhs_tmp=nil;return lhs=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],$truthy(node.$meta()["$[]"]("if_test"))?($writer=["if_test",($writer=["if_test",!0],$send(rhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])],$send(lhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],out=this.$process(node.$updated("if",[lhs,this.$s("true"),rhs]))):(lhs_tmp=this.$next_tmp(),out=this.$process(node.$updated("if",[this.$s("lvasgn",lhs_tmp,lhs),this.$s("js_tmp",lhs_tmp),rhs])),this.$free_tmp()),out}),1),$def(self,"$on_and",(function(node){var $a,lhs=nil,rhs=nil,$writer=nil,out=nil,lhs_tmp=nil;return lhs=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],$truthy(node.$meta()["$[]"]("if_test"))?($writer=["if_test",($writer=["if_test",!0],$send(rhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])],$send(lhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],out=this.$process(node.$updated("if",[lhs,rhs,this.$s("false")]))):(lhs_tmp=this.$next_tmp(),out=this.$process(node.$updated("if",[this.$s("lvasgn",lhs_tmp,lhs),rhs,this.$s("js_tmp",lhs_tmp)])),this.$free_tmp()),out}),1),$def(self,"$on_begin",(function $$on_begin(node){var $yield=$$on_begin.$$p||nil,$writer=nil;return delete $$on_begin.$$p,$truthy(node.$meta()["$[]"]("if_test"))&&$eqeq(node.$children().$count(),1)&&($writer=["if_test",!0],$send(node.$children().$first().$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),node.$meta().$delete("if_test"),$send2(this,$find_super(this,"on_begin",$$on_begin,!1,!0),"on_begin",[node],$yield)}),1),self.$private(),$def(self,"$build_if_from_when",(function(node,lhs,lhs_tmp,whens,els){var $a,$b,parts,expr,rule,first_when=nil,next_whens=nil;return first_when=null==($a=[].concat($to_a(whens)))[0]?nil:$a[0],next_whens=$slice.call($a,1),$b=($b=($a=[].concat($to_a(first_when.$children()))).length-1)<0?0:$b,parts=$slice.call($a,0,$b),expr=null==$a[$b]?nil:$a[$b],rule=this.$build_rule_from_parts(node,lhs,lhs_tmp,parts),first_when.$updated("if",[rule,this.$process(expr),$truthy(next_whens["$empty?"]())?this.$process(els):this.$build_if_from_when(nil,nil,lhs_tmp,next_whens,els)])}),5),$def(self,"$build_rule_from_parts",(function(node,lhs,lhs_tmp,parts){var $a,subrule,first_part=nil,next_parts=nil,splat_on=nil,iter_val=nil,block=nil;return lhs=$truthy(node)&&$truthy(lhs_tmp)?node.$updated("lvasgn",[lhs_tmp,this.$process(lhs)]):this.$s("js_tmp",lhs_tmp),first_part=null==($a=[].concat($to_a(parts)))[0]?nil:$a[0],next_parts=$slice.call($a,1),subrule=$eqeq(first_part.$type(),"splat")?(splat_on=first_part.$children().$first(),iter_val=this.$next_tmp(),block=this.$s("send",this.$process(splat_on),"any?",this.$s("iter",this.$s("args",this.$s("arg",iter_val)),this.$build_rule_from_parts(nil,nil,lhs_tmp,[this.$s("lvar",iter_val)]))),$truthy(node)&&$truthy(lhs_tmp)?this.$s("begin",lhs,block):block):$truthy(lhs_tmp)?this.$s("send",this.$process(first_part),"===",lhs):this.$process(first_part),$truthy(next_parts["$empty?"]())?subrule:this.$s("if",subrule,this.$s("true"),this.$build_rule_from_parts(nil,nil,lhs_tmp,next_parts))}),4)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/forward_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$range=Opal.range,$to_a=Opal.to_a,$send2=Opal.send2,$find_super=Opal.find_super,$neqeq=Opal.neqeq;return Opal.add_stubs("require,process,s,==,type,last,children,[],updated,!=,class"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ForwardArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_forward_args",(function(_node){return this.$process(this.$s("args",this.$s("forward_arg","$")))}),1),$def(self,"$on_args",(function $$on_args(node){var $yield=$$on_args.$$p||nil,prev_children=nil;return delete $$on_args.$$p,$truthy(node.$children().$last())&&$eqeq(node.$children().$last().$type(),"forward_arg")?(prev_children=node.$children()["$[]"]($range(0,-2,!1)),node.$updated(nil,[].concat($to_a(prev_children)).concat([this.$s("restarg","$fwd_rest"),this.$s("blockarg","$fwd_block")]))):$send2(this,$find_super(this,"on_args",$$on_args,!1,!0),"on_args",[node],$yield)}),1),$def(self,"$on_send",(function $$on_send(node){var $yield=$$on_send.$$p||nil,prev_children=nil;return delete $$on_send.$$p,$truthy(node.$children().$last())&&$neqeq(node.$children().$last().$class(),$$("Symbol"))&&$eqeq(node.$children().$last().$type(),"forwarded_args")?(prev_children=node.$children()["$[]"]($range(0,-2,!1)),node.$updated(nil,[].concat($to_a(prev_children)).concat([this.$s("splat",this.$s("lvar","$fwd_rest")),this.$s("block_pass",this.$s("lvar","$fwd_block"))]))):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("require,<<,list,delete,use,disabled?,class,each,new,process"),self.$require("opal/rewriters/opal_engine_check"),self.$require("opal/rewriters/for_rewriter"),self.$require("opal/rewriters/explicit_writer_return"),self.$require("opal/rewriters/js_reserved_words"),self.$require("opal/rewriters/block_to_iter"),self.$require("opal/rewriters/dot_js_syntax"),self.$require("opal/rewriters/pattern_matching"),self.$require("opal/rewriters/logical_operator_assignment"),self.$require("opal/rewriters/binary_operator_assignment"),self.$require("opal/rewriters/hashes/key_duplicates_rewriter"),self.$require("opal/rewriters/dump_args"),self.$require("opal/rewriters/mlhs_args"),self.$require("opal/rewriters/inline_args"),self.$require("opal/rewriters/numblocks"),self.$require("opal/rewriters/returnable_logic"),self.$require("opal/rewriters/forward_args"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Rewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.sexp=nil,function(self,$parent_nesting){$def(self,"$list",(function(){var $ret_or_1;return null==this.list&&(this.list=nil),this.list=$truthy($ret_or_1=this.list)?$ret_or_1:[]}),0),$def(self,"$use",(function(rewriter){return this.$list()["$<<"](rewriter)}),1),$def(self,"$delete",(function(rewriter){return this.$list().$delete(rewriter)}),1),$def(self,"$disable",(function $$disable(){var $yield=$$disable.$$p||nil,self=this;return delete $$disable.$$p,function(){try{return self.disabled=!0,Opal.yieldX($yield,[])}finally{self.disabled=!1}}()}),0),$def(self,"$disabled?",(function(){var $a;return null==this.disabled&&(this.disabled=nil),$truthy(null!=($a=this.disabled)&&$a!==nil?"instance-variable":nil)?this.disabled:nil}),0)}(Opal.get_singleton_class(self)),self.$use($$$($$("Rewriters"),"OpalEngineCheck")),self.$use($$$($$("Rewriters"),"ForRewriter")),self.$use($$$($$("Rewriters"),"Numblocks")),self.$use($$$($$("Rewriters"),"ForwardArgs")),self.$use($$$($$("Rewriters"),"BlockToIter")),self.$use($$$($$("Rewriters"),"DotJsSyntax")),self.$use($$$($$("Rewriters"),"PatternMatching")),self.$use($$$($$("Rewriters"),"JsReservedWords")),self.$use($$$($$("Rewriters"),"LogicalOperatorAssignment")),self.$use($$$($$("Rewriters"),"BinaryOperatorAssignment")),self.$use($$$($$("Rewriters"),"ExplicitWriterReturn")),self.$use($$$($$$($$("Rewriters"),"Hashes"),"KeyDuplicatesRewriter")),self.$use($$$($$("Rewriters"),"ReturnableLogic")),self.$use($$$($$("Rewriters"),"DumpArgs")),self.$use($$$($$("Rewriters"),"MlhsArgs")),self.$use($$$($$("Rewriters"),"InlineArgs")),$def(self,"$initialize",(function(sexp){return this.sexp=sexp}),1),$def(self,"$process",(function(){return $truthy(this.$class()["$disabled?"]())||$send(this.$class().$list(),"each",[],(function $$3(rewriter_class){var self=null==$$3.$$s?this:$$3.$$s,rewriter=nil;return null==self.sexp&&(self.sexp=nil),null==rewriter_class&&(rewriter_class=nil),rewriter=rewriter_class.$new(),self.sexp=rewriter.$process(self.sexp)}),{$$arity:1,$$s:this}),this.sexp}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/parser/source_buffer"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$defs=Opal.defs;return function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"SourceBuffer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$recognize_encoding",(function $$recognize_encoding(string){var $ret_or_1,$yield=$$recognize_encoding.$$p||nil;return delete $$recognize_encoding.$$p,$truthy($ret_or_1=$send2(this,$find_super(this,"recognize_encoding",$$recognize_encoding,!1,!0),"recognize_encoding",[string],$yield))?$ret_or_1:$$$($$("Encoding"),"UTF_8")}),1)}($nesting[0],$$$($$$($$$("Parser"),"Source"),"Buffer"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/parser/default_config"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$send2=Opal.send2,$find_super=Opal.find_super,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$lambda=Opal.lambda,$defs=Opal.defs;return Opal.add_stubs("attr_accessor,all_errors_are_fatal=,diagnostics,-,ignore_warnings=,diagnostics_consumer,consumer=,extend,diagnostics_consumer=,new,rewrite,process,default_parser,default_parser_class"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Parser"),$nesting=[self].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"DefaultConfig"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);(function($base){var self=$module($base,"ClassMethods");self.$attr_accessor("diagnostics_consumer"),$def(self,"$default_parser",(function $$default_parser(){var $yield=$$default_parser.$$p||nil,parser=nil,$writer=nil;return delete $$default_parser.$$p,parser=$send2(this,$find_super(this,"default_parser",$$default_parser,!1,!0),"default_parser",[],$yield),$writer=[!0],$send(parser.$diagnostics(),"all_errors_are_fatal=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(parser.$diagnostics(),"ignore_warnings=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[this.$diagnostics_consumer()],$send(parser.$diagnostics(),"consumer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],parser}),0)})($nesting[0]),$defs(self,"$included",(function(klass){var $writer;return klass.$extend($$("ClassMethods")),$writer=[$lambda((function(diagnostic){return null==diagnostic&&(diagnostic=nil),nil}),1)],$send(klass,"diagnostics_consumer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$initialize",(function $$initialize($a){var self=this;return delete $$initialize.$$p,Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",[$$$($$$($$("Opal"),"AST"),"Builder").$new()],null)}),-1),$def(self,"$parse",(function $$parse(source_buffer){var parsed,$yield=$$parse.$$p||nil;return delete $$parse.$$p,parsed=$send2(this,$find_super(this,"parse",$$parse,!1,!0),"parse",[source_buffer],$yield),this.$rewrite(parsed)}),1),$def(self,"$rewrite",(function(node){return $$$($$("Opal"),"Rewriter").$new(node).$process()}),1)}($nesting[0],$nesting),function(self,$parent_nesting){return self.$attr_accessor("default_parser_class"),$def(self,"$default_parser",(function(){return this.$default_parser_class().$default_parser()}),0)}(Opal.get_singleton_class(self))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/parser/with_ruby_lexer"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),$$$=(Opal.nil,Opal.$$$),$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus;return Opal.add_stubs("include,default_parser_class=,-"),function($base,$super,$parent_nesting){var $writer,self=$klass($base,$super,"WithRubyLexer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$include($$$($$$($$("Opal"),"Parser"),"DefaultConfig")),$writer=[self],$send($$$($$("Opal"),"Parser"),"default_parser_class=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}($$$($$("Opal"),"Parser"),$$$($$("Parser"),"Ruby31"),$nesting)},Opal.modules["opal/parser/patch"]=function(Opal){var $base,self,$nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$rb_plus=Opal.rb_plus,$send=Opal.send,$hash2=Opal.hash2,$eqeqeq=Opal.eqeqeq,$eqeq=Opal.eqeq,$not=Opal.not,$rb_le=Opal.rb_le,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$rb_divide=Opal.rb_divide,$to_a=Opal.to_a,$module=Opal.module;return Opal.add_stubs("source,unpack,+,to_a,lines,end_with?,<<,map,chomp,=~,diagnostic,nil?,new,===,type,updated,dedent,first,children,==,empty?,interrupt,compact,encoding,split,force_encoding,length,map!,each_with_index,!,each_char,<=,-,>,*,/,[],[]=,join,respond_to?,send,value"),$base=$$("Parser"),(self=$klass($base,null,"Lexer")).$$prototype.source_buffer=nil,$def(self,"$source_buffer=",(function(source_buffer){var source=nil;return this.source_buffer=source_buffer,$truthy(this.source_buffer)?(source=this.source_buffer.$source(),this.source_pts=source.$unpack("U*")):this.source_pts=nil}),1),function($base,$super){var self=$klass($base,null,"Literal"),$proto=self.$$prototype;$proto.buffer_s=$proto.buffer=nil,Opal.udef(self,"$extend_string"),$def(self,"$extend_string",(function(string,ts,te){var $ret_or_1;return this.buffer_s=$truthy($ret_or_1=this.buffer_s)?$ret_or_1:ts,this.buffer_e=te,this.buffer=$rb_plus(this.buffer,string)}),3)}($$$($$("Parser"),"Lexer")),function($base,$super){var self=$klass($base,null,"Buffer"),$proto=self.$$prototype;$proto.lines=$proto.source=nil,$def(self,"$source_lines",(function(){var $ret_or_1,lines=nil;return this.lines=$truthy($ret_or_1=this.lines)?$ret_or_1:(lines=this.source.$lines().$to_a(),$truthy(this.source["$end_with?"]("\n"))&&lines["$<<"](""),$send(lines,"map",[],(function(line){return null==line&&(line=nil),line.$chomp("\n")}),1))}),0)}($$$($$("Parser"),"Source")),function($base,$super){var self=$klass($base,null,"Default");$def(self,"$check_lvar_name",(function(name,loc){return $truthy(name["$=~"](new RegExp("^[\\p{Ll}|_][\\p{L}\\p{Nl}\\p{Nd}_]*$","u")))?nil:this.$diagnostic("error","lvar_name",$hash2(["name"],{name:name}),loc)}),2),$def(self,"$dedent_string",(function(node,dedent_level){var dedenter=nil,$ret_or_1=nil,children=nil;return $truthy(dedent_level["$nil?"]())||(dedenter=$$$($$$($$$("Parser"),"Lexer"),"Dedenter").$new(dedent_level),$eqeqeq("str",$ret_or_1=node.$type())?node=node.$updated(nil,[dedenter.$dedent(node.$children().$first())]):($eqeqeq("dstr",$ret_or_1)||$eqeqeq("xstr",$ret_or_1))&&(children=$send(node.$children(),"map",[],(function(str_node){if(null==str_node&&(str_node=nil),$eqeq(str_node.$type(),"str")){if(str_node=str_node.$updated(nil,[dedenter.$dedent(str_node.$children().$first())]),$truthy(str_node.$children().$first()["$empty?"]()))return nil}else dedenter.$interrupt();return str_node}),1),node=node.$updated(nil,children.$compact()))),node}),2)}($$$($$("Parser"),"Builders")),function($base,$super,$parent_nesting){var self=$klass($base,null,"Dedenter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$dedent",(function(string){var original_encoding,self=this,lines=nil;return original_encoding=string.$encoding(),lines=string.$force_encoding($$$($$("Encoding"),"BINARY")).$split("\\\n"),$eqeq(lines.$length(),1)?lines=[string.$force_encoding(original_encoding)]:$send(lines,"map!",[],(function(s){return null==s&&(s=nil),s.$force_encoding(original_encoding)}),1),function(){var $brk=Opal.new_brk();try{$send(lines,"each_with_index",[],(function $$5(line,index){var $writer,self=null==$$5.$$s?this:$$5.$$s,left_to_remove=nil,remove=nil;return null==self.at_line_begin&&(self.at_line_begin=nil),null==self.dedent_level&&(self.dedent_level=nil),null==line&&(line=nil),null==index&&(index=nil),$eqeq(index,0)&&$not(self.at_line_begin)?nil:(left_to_remove=self.dedent_level,remove=0,function(){var $brk=Opal.new_brk();try{$send(line,"each_char",[],(function $$6(char$){var $ret_or_1,self=null==$$6.$$s?this:$$6.$$s;return null==self.dedent_level&&(self.dedent_level=nil),null==char$&&(char$=nil),$truthy($rb_le(left_to_remove,0))&&Opal.brk(nil,$brk),$eqeqeq(" ",$ret_or_1=char$)?(remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,1)):$eqeqeq("\t",$ret_or_1)?($truthy($rb_gt($rb_times($$("TAB_WIDTH"),$rb_plus($rb_divide(remove,$$("TAB_WIDTH")),1)),self.dedent_level))&&Opal.brk(nil,$brk),remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,$$("TAB_WIDTH"))):void Opal.brk(nil,$brk)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),$writer=[index,line["$[]"](Opal.Range.$new(remove,-1,!1))],$send(lines,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),{$$arity:2,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),string=lines.$join(),self.at_line_begin=string["$end_with?"]("\n"),string}),1)}($$$($$("Parser"),"Lexer"),0,$nesting),function($base){var self=$module($base,"Mixin");Opal.udef(self,"$process"),$def(self,"$process",(function(node){var type,on_handler,$ret_or_1=nil,$writer=nil,handler=nil;return null==this._on_handler_cache&&(this._on_handler_cache=nil),$truthy(node["$nil?"]())?nil:(this._on_handler_cache=$truthy($ret_or_1=this._on_handler_cache)?$ret_or_1:$hash2([],{}),type=node.$type(),on_handler=$truthy($ret_or_1=this._on_handler_cache["$[]"](type))?$ret_or_1:($writer=[type,(handler="on_"+type,$truthy(this["$respond_to?"](handler))||(handler="handler_missing"),handler)],$send(this._on_handler_cache,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy($ret_or_1=this.$send(on_handler,node))?$ret_or_1:node)}),1)}($$$($$("AST"),"Processor")),function($base,$super){var self=$klass($base,null,"Default");return Opal.udef(self,"$string_value"),$def(self,"$string_value",(function(token){return this.$value(token)}),1)}($$$($$("Parser"),"Builders"))},Opal.modules["opal/parser"]=function(Opal){var self=Opal.top;Opal.nil;return Opal.add_stubs("require"),self.$require("opal/ast/builder"),self.$require("opal/rewriter"),self.$require("opal/parser/source_buffer"),self.$require("opal/parser/default_config"),self.$require("opal/parser/with_ruby_lexer"),self.$require("opal/parser/patch")},Opal.modules["opal/fragment"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt,$to_a=Opal.to_a,$not=Opal.not,$send=Opal.send;return Opal.add_stubs("attr_reader,to_s,inspect,===,type,[],meta,source_map_name_for,sexp,==,class,+,parent,>,!,first,children,loc,respond_to?,dot,selector,operator,begin,line,location,column"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Fragment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.code=$proto.scope=$proto.sexp=nil,self.$attr_reader("code"),$def(self,"$initialize",(function(code,scope,sexp){return null==sexp&&(sexp=nil),this.code=code.$to_s(),this.sexp=sexp,this.scope=scope}),-3),$def(self,"$inspect",(function(){return"f("+this.code.$inspect()+")"}),0),$def(self,"$source_map_name_for",(function(sexp){var $a,$ret_or_1,$ret_or_2=nil,scope=nil,iters=nil,level=nil,const$=nil,name=nil;if($eqeqeq("top",$ret_or_1=sexp.$type()))return $eqeqeq("require",$ret_or_2=sexp.$meta()["$[]"]("kind"))?"":$eqeqeq("eval",$ret_or_2)?"(eval)":$eqeqeq("main",$ret_or_2)?"
      ":nil;if($eqeqeq("begin",$ret_or_1)||$eqeqeq("newline",$ret_or_1)||$eqeqeq("js_return",$ret_or_1))return $truthy(this.scope)?this.$source_map_name_for(this.scope.$sexp()):nil;if($eqeqeq("iter",$ret_or_1)){for(scope=this.scope,iters=1;$truthy(scope)&&$eqeq(scope.$class(),$$$($$("Nodes"),"IterNode"));)iters=$rb_plus(iters,1),scope=scope.$parent();return $truthy($rb_gt(iters,1))&&(level=" ("+iters+" levels)"),"block"+level+" in "+this.$source_map_name_for(scope.$sexp())}return $eqeqeq("self",$ret_or_1)?"self":$eqeqeq("module",$ret_or_1)?(const$=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],""):$eqeqeq("class",$ret_or_1)?(const$=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],""):$eqeqeq("const",$ret_or_1)?(scope=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],$not(scope)||$eqeq(scope.$type(),"cbase")?name.$to_s():this.$source_map_name_for(scope)+"::"+name):$eqeqeq("int",$ret_or_1)||$eqeqeq("def",$ret_or_1)?sexp.$children().$first():$eqeqeq("defs",$ret_or_1)||$eqeqeq("send",$ret_or_1)?sexp.$children()["$[]"](1):$eqeqeq("lvar",$ret_or_1)||$eqeqeq("lvasgn",$ret_or_1)||$eqeqeq("lvdeclare",$ret_or_1)||$eqeqeq("ivar",$ret_or_1)||$eqeqeq("ivasgn",$ret_or_1)||$eqeqeq("gvar",$ret_or_1)||$eqeqeq("cvar",$ret_or_1)||$eqeqeq("cvasgn",$ret_or_1)||$eqeqeq("gvars",$ret_or_1)||$eqeqeq("gvasgn",$ret_or_1)||$eqeqeq("arg",$ret_or_1)?sexp.$children().$first():$eqeqeq("str",$ret_or_1)||$eqeqeq("xstr",$ret_or_1)?this.$source_map_name_for(this.scope.$sexp()):nil}),1),$def(self,"$source_map_name",(function(){return $truthy(this.sexp)?this.$source_map_name_for(this.sexp):nil}),0),$def(self,"$location",(function(){var loc=nil,$ret_or_1=nil;return $not(this.sexp)?nil:$eqeq(this.sexp.$type(),"send")?(loc=this.sexp.$loc(),$truthy(loc["$respond_to?"]("dot"))?$truthy($ret_or_1=loc.$dot())?$ret_or_1:loc.$selector():$truthy(loc["$respond_to?"]("operator"))?loc.$operator():this.sexp):$eqeq(this.sexp.$type(),"iter")&&$truthy(loc["$respond_to?"]("begin"))?this.sexp.$loc().$begin():this.sexp}),0),$def(self,"$line",(function(){var $a;return($a=this.$location())===nil||null==$a?nil:$send($a,"line",[])}),0),$def(self,"$column",(function(){var $a;return($a=this.$location())===nil||null==$a?nil:$send($a,"column",[])}),0),$def(self,"$skip_source_map?",(function(){return this.sexp["$=="](!1)}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/helpers"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$truthy=Opal.truthy,$def=Opal.def,$rb_plus=Opal.rb_plus,$send=Opal.send,$hash2=Opal.hash2,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$slice=Opal.slice,$eqeq=Opal.eqeq,$rb_minus=Opal.rb_minus;return Opal.add_stubs("require,valid_name?,inspect,=~,to_s,+,indent,compiler,to_proc,parser_indent,push,fragment,current_indent,js_truthy_optimize,helper,expr,===,type,[],handlers,include?,truthy_optimize?,==,count,<<,method_calls,first,children,s,[]=,meta,-,new_temp,scope,wrap"),self.$require("opal/regexp_anchors"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Helpers"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$property",(function(name){return $truthy(this["$valid_name?"](name))?"."+name:"["+name.$inspect()+"]"}),1),$def(self,"$valid_name?",(function(name){return $$$($$$($$("Opal"),"Rewriters"),"JsReservedWords")["$valid_name?"](name)}),1),$def(self,"$mid_to_jsid",(function(mid){return $truthy(/\=|\+|\-|\*|\/|\!|\?|<|\>|\&|\||\^|\%|\~|\[|`/["$=~"](mid.$to_s()))?"['$"+mid+"']":$rb_plus(".$",mid)}),1),$def(self,"$indent",(function $$indent(){var block=$$indent.$$p||nil;return delete $$indent.$$p,$send(this.$compiler(),"indent",[],block.$to_proc())}),0),$def(self,"$current_indent",(function(){return this.$compiler().$parser_indent()}),0),$def(self,"$line",(function($a){var strs,self=this;return strs=Opal.slice.call(arguments),self.$push(self.$fragment("\n"+self.$current_indent(),$hash2(["loc"],{loc:!1}))),$send(self,"push",$to_a(strs))}),-1),$def(self,"$empty_line",(function(){return this.$push(this.$fragment("\n",$hash2(["loc"],{loc:!1})))}),0),$def(self,"$js_truthy",(function(sexp){var optimize;return $truthy(optimize=this.$js_truthy_optimize(sexp))?optimize:(this.$helper("truthy"),[this.$fragment("$truthy("),this.$expr(sexp),this.$fragment(")")])}),1),$def(self,"$js_truthy_optimize",(function(sexp){var $a,$ret_or_1,receiver=nil,mid=nil,args=nil,receiver_handler_class=nil,$ret_or_2=nil,allow_optimization_on_type=nil,$ret_or_3=nil,true_body=nil,false_body=nil,$writer=nil;return $eqeqeq("send",$ret_or_1=sexp.$type())?(receiver=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],mid=null==$a[1]?nil:$a[1],args=$slice.call($a,2),receiver_handler_class=$truthy($ret_or_2=receiver)?this.$compiler().$handlers()["$[]"](receiver.$type()):$ret_or_2,allow_optimization_on_type=$truthy($ret_or_2=$truthy($ret_or_3=$$$($$("Compiler"),"COMPARE")["$include?"](mid.$to_s()))?receiver_handler_class:$ret_or_3)?receiver_handler_class["$truthy_optimize?"]():$ret_or_2,$truthy(allow_optimization_on_type)||$eqeq(mid,"block_given?")?this.$expr(sexp):$eqeq(args.$count(),1)?$eqeqeq("==",$ret_or_2=mid)?(this.$helper("eqeq"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$eqeq("),this.$expr(receiver),this.$fragment(", "),this.$expr(args.$first()),this.$fragment(")")]):$eqeqeq("===",$ret_or_2)?(this.$helper("eqeqeq"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$eqeqeq("),this.$expr(receiver),this.$fragment(", "),this.$expr(args.$first()),this.$fragment(")")]):$eqeqeq("!=",$ret_or_2)?(this.$helper("neqeq"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$neqeq("),this.$expr(receiver),this.$fragment(", "),this.$expr(args.$first()),this.$fragment(")")]):nil:$eqeq(args.$count(),0)&&$eqeqeq("!",$ret_or_2=mid)?(this.$helper("not"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$not("),this.$expr(receiver),this.$fragment(")")]):nil):$eqeqeq("begin",$ret_or_1)?$eqeq(sexp.$children().$count(),1)?this.$js_truthy_optimize(sexp.$children().$first()):nil:$eqeqeq("if",$ret_or_1)?(null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],true_body=null==$a[1]?nil:$a[1],false_body=null==$a[2]?nil:$a[2],$eqeq(true_body,this.$s("true"))?($writer=["do_js_truthy_on_false_body",!0],$send(sexp.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$expr(sexp)):$eqeq(false_body,this.$s("false"))?($writer=["do_js_truthy_on_true_body",!0],$send(sexp.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$expr(sexp)):nil):nil}),1),$def(self,"$conditional_send",(function $$conditional_send(recvr){var receiver_temp,$yield=$$conditional_send.$$p||nil;return delete $$conditional_send.$$p,receiver_temp=this.$scope().$new_temp(),this.$push(receiver_temp+" = ",recvr),this.$push(", ("+receiver_temp+" === nil || "+receiver_temp+" == null) ? nil : "),Opal.yield1($yield,receiver_temp),this.$wrap("(",")")}),1)}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/base"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$defs=Opal.defs,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$Opal=Opal.Opal,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,include,each,[]=,handlers,-,each_with_index,define_method,[],children,attr_reader,type,top_scope,top_scope=,compile,raise,is_a?,fragment,<<,reverse_each,unshift,push,new,scope,error,loc,==,process,expr,add_scope_local,to_sym,add_scope_ivar,add_scope_gvar,add_scope_temp,helper,with_temp,to_proc,in_while?,instance_variable_get,has_rescue_else?,in_ensure,in_ensure?,in_resbody,in_resbody?,in_rescue,!,class_scope?,sclass?,+,parent,nesting,class_variable_owner_nesting_level,comments,compiler,name,source_buffer,expression,start_with?,end_with?,line"),self.$require("opal/nodes/helpers"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Base"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.compiler=$proto.sexp=$proto.fragments=$proto.level=nil,self.$include($$("Helpers")),$defs(self,"$handlers",(function(){var $ret_or_1;return null==this.handlers&&(this.handlers=nil),this.handlers=$truthy($ret_or_1=this.handlers)?$ret_or_1:$hash2([],{})}),0),$defs(self,"$handle",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each",[],(function $$1(type){var $writer;return null==type&&(type=nil),$writer=[type,null==$$1.$$s?this:$$1.$$s],$send($$("Base").$handlers(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})}),-1),$defs(self,"$children",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each_with_index",[],(function $$2(name,idx){var self=null==$$2.$$s?this:$$2.$$s;return null==name&&(name=nil),null==idx&&(idx=nil),$send(self,"define_method",[name],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return null==self.sexp&&(self.sexp=nil),self.sexp.$children()["$[]"](idx)}),{$$arity:0,$$s:self})}),{$$arity:2,$$s:self})}),-1),$defs(self,"$truthy_optimize?",(function(){return!1}),0),self.$attr_reader("compiler","type","sexp"),$def(self,"$initialize",(function(sexp,level,compiler){var $ret_or_1,$writer=nil;return this.sexp=sexp,this.type=sexp.$type(),this.level=level,this.compiler=compiler,$truthy($ret_or_1=this.compiler.$top_scope())?$ret_or_1:($writer=[this],$send(this.compiler,"top_scope=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),3),$def(self,"$children",(function(){return this.sexp.$children()}),0),$def(self,"$compile_to_fragments",(function(){var $a;return $truthy(null!=($a=this.fragments)&&$a!==nil?"instance-variable":nil)||(this.fragments=[],this.$compile()),this.fragments}),0),$def(self,"$compile",(function(){return this.$raise("Not Implemented")}),0),$def(self,"$push",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each",[],(function $$5(str){var self=null==$$5.$$s?this:$$5.$$s;return null==self.fragments&&(self.fragments=nil),null==str&&(str=nil),$truthy(str["$is_a?"]($$("String")))&&(str=self.$fragment(str)),self.fragments["$<<"](str)}),{$$arity:1,$$s:self})}),-1),$def(self,"$unshift",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"reverse_each",[],(function $$6(str){var self=null==$$6.$$s?this:$$6.$$s;return null==self.fragments&&(self.fragments=nil),null==str&&(str=nil),$truthy(str["$is_a?"]($$("String")))&&(str=self.$fragment(str)),self.fragments.$unshift(str)}),{$$arity:1,$$s:self})}),-1),$def(self,"$wrap",(function(pre,post){return this.$unshift(pre),this.$push(post)}),2),$def(self,"$fragment",(function(str,$kwargs){var loc,$ret_or_1;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(loc=$kwargs.$$smap.loc)&&(loc=!0),$$$($$("Opal"),"Fragment").$new(str,this.$scope(),$truthy($ret_or_1=loc)?this.sexp:$ret_or_1)}),-2),$def(self,"$error",(function(msg){return this.compiler.$error(msg)}),1),$def(self,"$scope",(function(){return this.compiler.$scope()}),0),$def(self,"$top_scope",(function(){return this.compiler.$top_scope()}),0),$def(self,"$s",(function(type,$a){var children,self=this;return children=Opal.slice.call(arguments,1),$$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:self.sexp.$loc()}))}),-2),$def(self,"$expr?",(function(){return this.level["$=="]("expr")}),0),$def(self,"$recv?",(function(){return this.level["$=="]("recv")}),0),$def(self,"$stmt?",(function(){return this.level["$=="]("stmt")}),0),$def(self,"$process",(function(sexp,level){return null==level&&(level="expr"),this.compiler.$process(sexp,level)}),-2),$def(self,"$expr",(function(sexp){return this.compiler.$process(sexp,"expr")}),1),$def(self,"$recv",(function(sexp){return this.compiler.$process(sexp,"recv")}),1),$def(self,"$stmt",(function(sexp){return this.compiler.$process(sexp,"stmt")}),1),$def(self,"$expr_or_nil",(function(sexp){return $truthy(sexp)?this.$expr(sexp):"nil"}),1),$def(self,"$add_local",(function(name){return this.$scope().$add_scope_local(name.$to_sym())}),1),$def(self,"$add_ivar",(function(name){return this.$scope().$add_scope_ivar(name)}),1),$def(self,"$add_gvar",(function(name){return this.$scope().$add_scope_gvar(name)}),1),$def(self,"$add_temp",(function(temp){return this.$scope().$add_scope_temp(temp)}),1),$def(self,"$helper",(function(name){return this.compiler.$helper(name)}),1),$def(self,"$with_temp",(function $$with_temp(){var block=$$with_temp.$$p||nil;return delete $$with_temp.$$p,$send(this.compiler,"with_temp",[],block.$to_proc())}),0),$def(self,"$in_while?",(function(){return this.compiler["$in_while?"]()}),0),$def(self,"$while_loop",(function(){return this.compiler.$instance_variable_get("@while_loop")}),0),$def(self,"$has_rescue_else?",(function(){return this.$scope()["$has_rescue_else?"]()}),0),$def(self,"$in_ensure",(function $$in_ensure(){var block=$$in_ensure.$$p||nil;return delete $$in_ensure.$$p,$send(this.$scope(),"in_ensure",[],block.$to_proc())}),0),$def(self,"$in_ensure?",(function(){return this.$scope()["$in_ensure?"]()}),0),$def(self,"$in_resbody",(function $$in_resbody(){var block=$$in_resbody.$$p||nil;return delete $$in_resbody.$$p,$send(this.$scope(),"in_resbody",[],block.$to_proc())}),0),$def(self,"$in_resbody?",(function(){return this.$scope()["$in_resbody?"]()}),0),$def(self,"$in_rescue",(function $$in_rescue(node){var block=$$in_rescue.$$p||nil;return delete $$in_rescue.$$p,$send(this.$scope(),"in_rescue",[node],block.$to_proc())}),1),$def(self,"$class_variable_owner_nesting_level",(function(){var cvar_scope=nil,nesting_level=nil,$ret_or_1=nil;for(cvar_scope=this.$scope(),nesting_level=0;$truthy($truthy($ret_or_1=cvar_scope)?cvar_scope["$class_scope?"]()["$!"]():$ret_or_1);)$truthy(cvar_scope["$sclass?"]())&&(nesting_level=$rb_plus(nesting_level,1)),cvar_scope=cvar_scope.$parent();return nesting_level}),0),$def(self,"$class_variable_owner",(function(){return $truthy(this.$scope())?this.$scope().$nesting()+"["+this.$class_variable_owner_nesting_level()+"]":"Opal.Object"}),0),$def(self,"$comments",(function(){return this.$compiler().$comments()["$[]"](this.sexp.$loc())}),0),$def(self,"$source_location",(function(){var file=nil;return file=this.sexp.$loc().$expression().$source_buffer().$name(),$truthy(file["$start_with?"]("corelib/"))&&(file=""),$truthy(file["$end_with?"](".js"))&&(file=""),"['"+file+"', "+this.sexp.$loc().$line()+"]"}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/literal"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def,$defs=Opal.defs,$truthy=Opal.truthy,$const_set=Opal.const_set,$hash2=Opal.hash2,$regexp=Opal.regexp,$send=Opal.send,$rb_plus=Opal.rb_plus,$lambda=Opal.lambda,$rb_le=Opal.rb_le,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$slice=Opal.slice,$Opal=Opal.Opal,$rb_gt=Opal.rb_gt;return Opal.add_stubs("require,handle,==,type,push,self,scope,to_s,children,value,recv?,wrap,freeze,join,keys,gsub,even?,length,last_match,+,chop,[],inspect,to_i,to_utf16,translate_escape_chars,valid_encoding?,helper,upcase,<=,call,-,>>,&,attr_accessor,extract_flags_and_value,select!,flags,=~,warning,compiler,compile_static_regexp,compile_dynamic_regexp,each_with_index,zero?,expr,any?,===,new,map,to_proc,flags=,empty?,s,single_line?,value=,include?,is_a?,updated,delete,source,expression,loc,private,>,!=,!,regexp,first,each,compile_inline?,compile_inline,compile_range_initialize,start,finish,raise,expr_or_nil,numerator,denominator,real,imag"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ValueNode");self.$handle("true","false","self","nil"),$def(self,"$compile",(function(){return $eqeq(this.$type(),"self")?this.$push(this.$scope().$self()):this.$push(this.$type().$to_s())}),0),$defs(self,"$truthy_optimize?",(function(){return!0}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"NumericNode");self.$handle("int","float"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$value().$to_s()),$truthy(this["$recv?"]())?this.$wrap("(",")"):nil}),0),$defs(self,"$truthy_optimize?",(function(){return!0}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"StringNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("str"),self.$children("value"),$const_set($nesting[0],"ESCAPE_CHARS",$hash2(["a","e"],{a:"\\u0007",e:"\\u001b"}).$freeze()),$const_set($nesting[0],"ESCAPE_REGEX",$regexp(["(\\\\+)([",$$("ESCAPE_CHARS").$keys().$join(""),"])"]).$freeze()),$def(self,"$translate_escape_chars",(function(inspect_string){return $send(inspect_string,"gsub",[$$("ESCAPE_REGEX")],(function(original){return null==original&&(original=nil),$truthy($$("Regexp").$last_match(1).$length()["$even?"]())?original:$rb_plus($$("Regexp").$last_match(1).$chop(),$$("ESCAPE_CHARS")["$[]"]($$("Regexp").$last_match(2)))}),1)}),1),$def(self,"$compile",(function(){var sanitized_value,string_value=nil;return string_value=this.$value(),sanitized_value=$send(string_value.$inspect(),"gsub",[/\\u\{([0-9a-f]+)\}/],(function $$4(){var code_point,self=null==$$4.$$s?this:$$4.$$s;return code_point=$$("Regexp").$last_match(1).$to_i(16),self.$to_utf16(code_point)}),{$$arity:0,$$s:this}),this.$push(this.$translate_escape_chars(sanitized_value)),$truthy(this.$value()["$valid_encoding?"]())?nil:(this.$helper("binary"),this.$wrap("$binary(",")"))}),0),$def(self,"$to_utf16",(function(code_point){var lead_surrogate,tail_surrogate,u=nil;return 1023,u=$lambda((function(code_unit){return null==code_unit&&(code_unit=nil),$rb_plus("\\u",code_unit.$to_s(16).$upcase())}),1),$truthy($rb_le(code_point,65535))?u.$call(code_point):(code_point=$rb_minus(code_point,65536),lead_surrogate=$rb_plus(55296,code_point["$>>"](10)),tail_surrogate=$rb_plus(56320,code_point["$&"](1023)),$rb_plus(u.$call(lead_surrogate),u.$call(tail_surrogate)))}),1)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"SymbolNode");self.$handle("sym"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$value().$to_s().$inspect())}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"RegexpNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.sexp=nil,self.$handle("regexp"),self.$attr_accessor("value","flags"),$const_set($nesting[0],"SUPPORTED_FLAGS",/[gimuy]/.$freeze()),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.$extract_flags_and_value()}),-1),$def(self,"$compile",(function(){return $send(this.$flags(),"select!",[],(function $$6(flag){var self=null==$$6.$$s?this:$$6.$$s;return null==flag&&(flag=nil),!!$truthy($$("SUPPORTED_FLAGS")["$=~"](flag))||(self.$compiler().$warning("Skipping the '"+flag+"' Regexp flag as it's not widely supported by JavaScript vendors."),!1)}),{$$arity:1,$$s:this}),$eqeq(this.$value().$type(),"str")?this.$compile_static_regexp():this.$compile_dynamic_regexp()}),0),$def(self,"$compile_dynamic_regexp",(function(){return this.$helper("regexp"),this.$push("$regexp(["),$send(this.$value().$children(),"each_with_index",[],(function $$7(v,index){var self=null==$$7.$$s?this:$$7.$$s;return null==v&&(v=nil),null==index&&(index=nil),$truthy(index["$zero?"]())||self.$push(", "),self.$push(self.$expr(v))}),{$$arity:2,$$s:this}),this.$push("]"),$truthy(this.$flags()["$any?"]())&&this.$push(", '"+this.$flags().$join()+"'"),this.$push(")")}),0),$def(self,"$compile_static_regexp",(function(){var value;return value=this.$value().$children()["$[]"](0),$eqeqeq("",value)?this.$push("/(?:)/"):this.$push(""+$$("Regexp").$new(value).$inspect()+this.$flags().$join())}),0),$def(self,"$extract_flags_and_value",(function(){var $a,$b,values=nil,flags_sexp=nil,$writer=nil,parts=nil;return $b=($b=($a=[].concat($to_a(this.$children()))).length-1)<0?0:$b,values=$slice.call($a,0,$b),flags_sexp=null==$a[$b]?nil:$a[$b],$writer=[$send(flags_sexp.$children(),"map",[],"to_s".$to_proc())],$send(this,"flags=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[$truthy(values["$empty?"]())?this.$s("str",""):$truthy(this["$single_line?"](values))?values["$[]"](0):$send(this,"s",["dstr"].concat($to_a(values)))],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(this.$flags()["$include?"]("x"))&&(parts=$send(this.$value().$children(),"map",[],(function $$8(part){var self=null==$$8.$$s?this:$$8.$$s,trimmed_value=nil;return null==part&&(part=nil),$truthy(part["$is_a?"]($$$($$$($Opal,"AST"),"Node")))&&$eqeq(part.$type(),"str")?(trimmed_value=part.$children()["$[]"](0).$gsub(/^\s*\#.*/,"").$gsub(/\s/,""),self.$s("str",trimmed_value)):part}),{$$arity:1,$$s:this}),$writer=[this.$value().$updated(nil,parts)],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$flags().$delete("x")),$eqeq(this.$value().$type(),"str")?($writer=[this.$s("str",this.$value().$children()["$[]"](0).$gsub("\\A","^").$gsub("\\z","$"))],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),0),$def(self,"$raw_value",(function(){var $writer;return $writer=[this.sexp.$loc().$expression().$source()],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),0),self.$private(),$def(self,"$single_line?",(function(values){var $ret_or_1,value=nil;return!$truthy($rb_gt(values.$length(),1))&&(value=values["$[]"](0),$truthy($ret_or_1=value.$type()["$!="]("str"))?$ret_or_1:value.$children()["$[]"](0)["$include?"]("\n")["$!"]())}),1)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"MatchCurrentLineNode");self.$handle("match_current_line"),self.$children("regexp"),$def(self,"$compile",(function(){var gvar_sexp,send_node;return gvar_sexp=this.$s("gvar","$_"),send_node=this.$s("send",gvar_sexp,"=~",this.$regexp()),this.$push(this.$expr(send_node))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"DynamicStringNode");self.$handle("dstr"),$def(self,"$compile",(function(){var skip_empty=nil;return $truthy($rb_gt(this.$children().$length(),1))&&$eqeq(this.$children().$first().$type(),"str")?skip_empty=!0:this.$push('""'),$send(this.$children(),"each",[],(function $$10(part){var self=null==$$10.$$s?this:$$10.$$s;return null==part&&(part=nil),$truthy(skip_empty)?skip_empty=!1:self.$push(" + "),$eqeq(part.$type(),"str")?self.$push(self.$expr(part)):self.$push("(",self.$expr(part),")"),$truthy(self["$recv?"]())?self.$wrap("(",")"):nil}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("Base")),function($base,$super){$klass($base,$super,"DynamicSymbolNode").$handle("dsym")}($nesting[0],$$("DynamicStringNode")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"RangeNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$children("start","finish"),$const_set($nesting[0],"SIMPLE_CHILDREN_TYPES",["int","float","str","sym"].$freeze()),$def(self,"$compile",(function(){return $truthy(this["$compile_inline?"]())?(this.$helper("range"),this.$compile_inline()):this.$compile_range_initialize()}),0),$def(self,"$compile_inline?",(function(){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $truthy($ret_or_1=$truthy($ret_or_2=this.$start()["$!"]())?$ret_or_2:$truthy($ret_or_3=this.$start().$type())?$$("SIMPLE_CHILDREN_TYPES")["$include?"](this.$start().$type()):$ret_or_3)?$truthy($ret_or_2=this.$finish()["$!"]())?$ret_or_2:$truthy($ret_or_3=this.$finish().$type())?$$("SIMPLE_CHILDREN_TYPES")["$include?"](this.$finish().$type()):$ret_or_3:$ret_or_1}),0),$def(self,"$compile_inline",(function(){return this.$raise($$("NotImplementedError"))}),0),$def(self,"$compile_range_initialize",(function(){return this.$raise($$("NotImplementedError"))}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"InclusiveRangeNode");self.$handle("irange"),$def(self,"$compile_inline",(function(){return this.$push("$range(",this.$expr_or_nil(this.$start()),", ",this.$expr_or_nil(this.$finish()),", false)")}),0),$def(self,"$compile_range_initialize",(function(){return this.$push("Opal.Range.$new(",this.$expr_or_nil(this.$start()),", ",this.$expr_or_nil(this.$finish()),", false)")}),0)}($nesting[0],$$("RangeNode")),function($base,$super){var self=$klass($base,$super,"ExclusiveRangeNode");self.$handle("erange"),$def(self,"$compile_inline",(function(){return this.$push("$range(",this.$expr_or_nil(this.$start()),", ",this.$expr_or_nil(this.$finish()),", true)")}),0),$def(self,"$compile_range_initialize",(function(){return this.$push("Opal.Range.$new(",this.$expr_or_nil(this.$start()),",",this.$expr_or_nil(this.$finish()),", true)")}),0)}($nesting[0],$$("RangeNode")),function($base,$super){var self=$klass($base,$super,"RationalNode");self.$handle("rational"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("Opal.Rational.$new("+this.$value().$numerator()+", "+this.$value().$denominator()+")")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ComplexNode");return self.$handle("complex"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("Opal.Complex.$new("+this.$value().$real()+", "+this.$value().$imag()+")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/variables"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send,$range=Opal.range,$eqeqeq=Opal.eqeqeq,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,handle,children,irb?,compiler,top?,scope,using_irb?,push,to_s,var_name,with_temp,property,wrap,add_local,expr,value,expr?,recv?,[],name,add_ivar,self,helper,add_gvar,===,handle_global_match,handle_post_match,handle_pre_match,raise,index,stmt?,class_variable_owner,inspect"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"LocalVariableNode");self.$handle("lvar"),self.$children("var_name"),$def(self,"$using_irb?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$compiler()["$irb?"]())?this.$scope()["$top?"]():$ret_or_1}),0),$def(self,"$compile",(function(){return $truthy(this["$using_irb?"]())?$send(this,"with_temp",[],(function $$2(tmp){var self=null==$$2.$$s?this:$$2.$$s;return null==tmp&&(tmp=nil),self.$push(self.$property(self.$var_name().$to_s())),self.$wrap("(("+tmp+" = Opal.irb_vars",") == null ? nil : "+tmp+")")}),{$$arity:1,$$s:this}):this.$push(this.$var_name().$to_s())}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"LocalAssignNode");self.$handle("lvasgn"),self.$children("var_name","value"),$def(self,"$using_irb?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$compiler()["$irb?"]())?this.$scope()["$top?"]():$ret_or_1}),0),$def(self,"$compile",(function(){return $truthy(this["$using_irb?"]())?this.$push("Opal.irb_vars"+this.$property(this.$var_name().$to_s())+" = "):(this.$add_local(this.$var_name().$to_s()),this.$push(this.$var_name()+" = ")),this.$push(this.$expr(this.$value())),($truthy(this["$recv?"]())||$truthy(this["$expr?"]()))&&$truthy(this.$value())?this.$wrap("(",")"):nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"LocalDeclareNode");self.$handle("lvdeclare"),self.$children("var_name"),$def(self,"$compile",(function(){return this.$add_local(this.$var_name().$to_s()),nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"InstanceVariableNode");self.$handle("ivar"),self.$children("name"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return name=this.$property(this.$var_name()),this.$add_ivar(name),this.$push(""+this.$scope().$self()+name)}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"InstanceAssignNode");self.$handle("ivasgn"),self.$children("name","value"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return name=this.$property(this.$var_name()),this.$push(""+this.$scope().$self()+name+" = "),this.$push(this.$expr(this.$value())),($truthy(this["$recv?"]())||$truthy(this["$expr?"]()))&&$truthy(this.$value())?this.$wrap("(",")"):nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"GlobalVariableNode");self.$handle("gvar"),self.$children("name"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return this.$helper("gvars"),name=this.$property(this.$var_name()),this.$add_gvar(name),this.$push("$gvars"+name)}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"BackRefNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("back_ref"),$def(self,"$compile",(function $$compile(){var $ret_or_1,$yield=$$compile.$$p||nil;return delete $$compile.$$p,this.$helper("gvars"),$eqeqeq("&",$ret_or_1=this.$var_name())?this.$handle_global_match():$eqeqeq("'",$ret_or_1)?this.$handle_post_match():$eqeqeq("`",$ret_or_1)?this.$handle_pre_match():$eqeqeq("+",$ret_or_1)?$send2(this,$find_super(this,"compile",$$compile,!1,!0),"compile",[],$yield):this.$raise($$("NotImplementedError"))}),0),$def(self,"$handle_global_match",(function(){return $send(this,"with_temp",[],(function $$4(tmp){return null==tmp&&(tmp=nil),(null==$$4.$$s?this:$$4.$$s).$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+"['$[]'](0))")}),{$$arity:1,$$s:this})}),0),$def(self,"$handle_pre_match",(function(){return $send(this,"with_temp",[],(function $$5(tmp){return null==tmp&&(tmp=nil),(null==$$5.$$s?this:$$5.$$s).$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+".$pre_match())")}),{$$arity:1,$$s:this})}),0),$def(self,"$handle_post_match",(function(){return $send(this,"with_temp",[],(function $$6(tmp){return null==tmp&&(tmp=nil),(null==$$6.$$s?this:$$6.$$s).$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+".$post_match())")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("GlobalVariableNode"),$nesting),function($base,$super){var self=$klass($base,$super,"GlobalAssignNode");self.$handle("gvasgn"),self.$children("name","value"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return this.$helper("gvars"),name=this.$property(this.$var_name()),this.$push("$gvars"+name+" = "),this.$push(this.$expr(this.$value())),($truthy(this["$recv?"]())||$truthy(this["$expr?"]()))&&$truthy(this.$value())?this.$wrap("(",")"):nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"NthrefNode");self.$handle("nth_ref"),self.$children("index"),$def(self,"$compile",(function(){return this.$helper("gvars"),$send(this,"with_temp",[],(function $$7(tmp){var self=null==$$7.$$s?this:$$7.$$s;return null==tmp&&(tmp=nil),self.$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+"['$[]']("+self.$index()+"))")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ClassVariableNode");self.$handle("cvar"),self.$children("name"),$def(self,"$compile",(function(){var tolerant=nil;return this.$helper("class_variable_get"),tolerant=!1,$truthy(this["$stmt?"]())&&(tolerant=!0),this.$push("$class_variable_get("+this.$class_variable_owner()+", '"+this.$name()+"', "+tolerant.$inspect()+")")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ClassVarAssignNode");return self.$handle("cvasgn"),self.$children("name","value"),$def(self,"$compile",(function(){return this.$helper("class_variable_set"),this.$push("$class_variable_set("+this.$class_variable_owner()+", '"+this.$name()+"', ",this.$expr(this.$value()),")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/constants"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def,$const_set=Opal.const_set;return Opal.add_stubs("require,handle,children,magical_data_const?,push,optimized_access?,helper,name,==,const_scope,s,absolute_const,top_scope,recv,eval?,compiler,relative_access,scope,nil?,eof_content,freeze,include?,base,expr,value,nesting"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ConstNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("const"),self.$children("const_scope","name"),$def(self,"$compile",(function(){return $truthy(this["$magical_data_const?"]())?this.$push("$__END__"):$truthy(this["$optimized_access?"]())?(this.$helper(""+this.$name()),this.$push("$"+this.$name())):$eqeq(this.$const_scope(),this.$s("cbase"))?this.$push(this.$top_scope().$absolute_const()+"('"+this.$name()+"')"):$truthy(this.$const_scope())?this.$push(this.$top_scope().$absolute_const()+"(",this.$recv(this.$const_scope()),", '"+this.$name()+"')"):($truthy(this.$compiler()["$eval?"]()),this.$push(this.$scope().$relative_access()+"('"+this.$name()+"')"))}),0),$def(self,"$magical_data_const?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.$const_scope()["$nil?"]())?this.$name()["$=="]("DATA"):$ret_or_2)?this.$compiler().$eof_content():$ret_or_1}),0),$const_set($nesting[0],"OPTIMIZED_ACCESS_CONSTS",["BasicObject","Object","Module","Class","Opal","Kernel","NilClass"].$freeze()),$def(self,"$optimized_access?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$const_scope()["$=="](this.$s("cbase")))?$$("OPTIMIZED_ACCESS_CONSTS")["$include?"](this.$name()):$ret_or_1}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"CbaseNode");self.$handle("cbase"),$def(self,"$compile",(function(){return this.$push("'::'")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ConstAssignNode");return self.$handle("casgn"),self.$children("base","name","value"),$def(self,"$compile",(function(){return this.$helper("const_set"),$truthy(this.$base())?this.$push("$const_set(",this.$expr(this.$base()),", '"+this.$name()+"', ",this.$expr(this.$value()),")"):this.$push("$const_set("+this.$scope().$nesting()+"[0], '"+this.$name()+"', ",this.$expr(this.$value()),")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/break_finder"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$alias=Opal.alias;return Opal.add_stubs("require"),self.$require("opal/rewriter"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BreakFinder");return self.$$prototype.found_break=nil,$def(self,"$initialize",(function(){return this.found_break=!1}),0),$def(self,"$found_break?",(function(){return this.found_break}),0),$def(self,"$on_break",(function(node){return this.found_break=!0,node}),1),$def(self,"$stop_lookup",(function(node){return nil}),1),$alias(self,"on_for","stop_lookup"),$alias(self,"on_while","stop_lookup"),$alias(self,"on_while_post","stop_lookup"),$alias(self,"on_until","stop_lookup"),$alias(self,"on_until_post","stop_lookup"),$alias(self,"on_block","stop_lookup")}($nesting[0],$$$($$$($$("Opal"),"Rewriters"),"Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/call"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$defs=Opal.defs,$send2=Opal.send2,$find_super=Opal.find_super,$slice=Opal.slice,$truthy=Opal.truthy,$def=Opal.def,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$not=Opal.not,$neqeq=Opal.neqeq,$eqeqeq=Opal.eqeqeq,$to_ary=Opal.to_ary,$Opal=Opal.Opal,$range=Opal.range;return Opal.add_stubs("require,handle,attr_reader,freeze,[]=,-,define_method,to_proc,include?,type,s,handle_special,record_method?,<<,method_calls,compiler,to_sym,meth,using_eval?,compile_eval_var,using_irb?,compile_irb_var,default_compile,private,iter,new,process,found_break?,splat?,!,empty?,collect_refinements_temps,scope,auto_await?,push,await_encountered=,invoke_using_refinement?,compile_using_refined_send,invoke_using_send?,compile_using_send,compile_simple_call_chain,compile_break_catcher,helper,compile_receiver,compile_method_name,compile_arguments,compile_block_pass,compile_refinements,recv,receiver_sexp,expr,arglist,children,map,iter_has_break?,unshift,line,method_jsid,any?,==,recvr,mid_to_jsid,to_s,with_temp,intern,irb?,top?,variable_like?,eval?,scope_variables,nil?,updated,async_await,!=,match?,method,arity,[],each,add_special,call,inline_operators?,fragment,resolve,requires,file,dirname,cleanpath,join,Pathname,self,inspect,length,warning,autoloads,required_trees,force_encoding,encoding,+,handle_block_given_call,def?,mid,module_name,count,accepts_using?,using_refinement,first,refinements_temp,arity_check?,defines_lambda,push_nesting?,nesting,new_temp,scope_locals,source_location,size,last,dynamic_require_severity,handle_part,===,is_a?,expand_path,split,error,each_with_object,pop"),self.$require("set"),self.$require("pathname"),self.$require("opal/nodes/base"),self.$require("opal/rewriters/break_finder"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"CallNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.sexp=$proto.compiler=nil,self.$handle("send"),self.$attr_reader("recvr","meth","arglist","iter"),$const_set($nesting[0],"SPECIALS",$hash2([],{})),$const_set($nesting[0],"OPERATORS",$hash2(["+","-","*","/","<","<=",">",">="],{"+":"plus","-":"minus","*":"times","/":"divide","<":"lt","<=":"le",">":"gt",">=":"ge"}).$freeze()),$defs(self,"$add_special",(function $$add_special(name,options){var $writer,handler=$$add_special.$$p||nil;return delete $$add_special.$$p,null==options&&(options=$hash2([],{})),$writer=[name,options],$send($$("SPECIALS"),"[]=",$to_a($writer)),$rb_minus($writer.length,1),$send(this,"define_method",["handle_"+name],handler.$to_proc())}),-2),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$b,$c,$yield=$$initialize.$$p||nil,self=this,args=nil,rest=nil,last_arg=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$b=[].concat($to_a(self.sexp)),self.recvr=null==$b[0]?nil:$b[0],self.meth=null==$b[1]?nil:$b[1],args=$slice.call($b,2),$c=($c=($b=[].concat($to_a(args))).length-1)<0?0:$c,rest=$slice.call($b,0,$c),last_arg=null==$b[$c]?nil:$b[$c],$truthy(last_arg)&&$truthy(["iter","block_pass"]["$include?"](last_arg.$type()))?(self.iter=last_arg,args=rest):self.iter=nil,self.arglist=$send(self,"s",["arglist"].concat($to_a(args)))}),-1),$def(self,"$compile",(function(){try{return $send(this,"handle_special",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return $truthy(self["$record_method?"]())&&self.$compiler().$method_calls()["$<<"](self.$meth().$to_sym()),$truthy(self["$using_eval?"]())&&Opal.ret(self.$compile_eval_var()),$truthy(self["$using_irb?"]())&&Opal.ret(self.$compile_irb_var()),self.$default_compile()}),{$$arity:0,$$s:this})}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),0),self.$private(),$def(self,"$iter_has_break?",(function(){var finder=nil;return!!$truthy(this.$iter())&&((finder=$$$($$$($$("Opal"),"Rewriters"),"BreakFinder").$new()).$process(this.$iter()),finder["$found_break?"]())}),0),$def(self,"$invoke_using_send?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$iter())?$ret_or_1:this["$splat?"]()}),0),$def(self,"$invoke_using_refinement?",(function(){return this.$scope().$scope().$collect_refinements_temps()["$empty?"]()["$!"]()}),0),$def(self,"$default_compile",(function(){var $writer=nil;return $truthy(this["$auto_await?"]())&&(this.$push("await "),$writer=[!0],$send(this.$scope(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy(this["$invoke_using_refinement?"]())?this.$compile_using_refined_send():$truthy(this["$invoke_using_send?"]())?this.$compile_using_send():this.$compile_simple_call_chain(),this.$compile_break_catcher()}),0),$def(self,"$compile_using_send",(function(){return this.$helper("send"),this.$push("$send("),this.$compile_receiver(),this.$compile_method_name(),this.$compile_arguments(),this.$compile_block_pass(),this.$push(")")}),0),$def(self,"$compile_using_refined_send",(function(){return this.$helper("refined_send"),this.$push("$refined_send("),this.$compile_refinements(),this.$compile_receiver(),this.$compile_method_name(),this.$compile_arguments(),this.$compile_block_pass(),this.$push(")")}),0),$def(self,"$compile_receiver",(function(){return this.$push(this.$recv(this.$receiver_sexp()))}),0),$def(self,"$compile_method_name",(function(){return this.$push(", '"+this.$meth()+"'")}),0),$def(self,"$compile_arguments",(function(){return this.$push(", "),$truthy(this["$splat?"]())?this.$push(this.$expr(this.$arglist())):$truthy(this.$arglist().$children()["$empty?"]())?this.$push("[]"):this.$push("[",this.$expr(this.$arglist()),"]")}),0),$def(self,"$compile_block_pass",(function(){return $truthy(this.$iter())?this.$push(", ",this.$expr(this.$iter())):nil}),0),$def(self,"$compile_refinements",(function(){var refinements;return refinements=$send(this.$scope().$collect_refinements_temps(),"map",[],(function $$5(i){return null==i&&(i=nil),(null==$$5.$$s?this:$$5.$$s).$s("js_tmp",i)}),{$$arity:1,$$s:this}),this.$push(this.$expr($send(this,"s",["array"].concat($to_a(refinements)))),", ")}),0),$def(self,"$compile_break_catcher",(function(){return $truthy(this["$iter_has_break?"]())?(this.$unshift("return "),this.$unshift("(function(){var $brk = Opal.new_brk(); try {"),this.$line("} catch (err) { if (err === $brk) { return err.$v } else { throw err } }})()")):nil}),0),$def(self,"$compile_simple_call_chain",(function(){return this.$push(this.$recv(this.$receiver_sexp()),this.$method_jsid(),"(",this.$expr(this.$arglist()),")")}),0),$def(self,"$splat?",(function(){return $send(this.$arglist().$children(),"any?",[],(function(a){return null==a&&(a=nil),a.$type()["$=="]("splat")}),1)}),0),$def(self,"$receiver_sexp",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$recvr())?$ret_or_1:this.$s("self")}),0),$def(self,"$method_jsid",(function(){return this.$mid_to_jsid(this.$meth().$to_s())}),0),$def(self,"$record_method?",(function(){return!0}),0),$def(self,"$compile_irb_var",(function(){return $send(this,"with_temp",[],(function $$9(tmp){var lvar,call,self=null==$$9.$$s?this:$$9.$$s;return null==tmp&&(tmp=nil),lvar=self.$meth(),call=self.$s("send",self.$s("self"),self.$meth().$intern(),self.$s("arglist")),self.$push("(("+tmp+" = Opal.irb_vars."+lvar+") == null ? ",self.$expr(call)," : "+tmp+")")}),{$$arity:1,$$s:this})}),0),$def(self,"$compile_eval_var",(function(){return this.$push(this.$meth().$to_s())}),0),$def(self,"$using_irb?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.compiler["$irb?"]())?this.$scope()["$top?"]():$ret_or_2)?this["$variable_like?"]():$ret_or_1}),0),$def(self,"$using_eval?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.compiler["$eval?"]())?this.$scope()["$top?"]():$ret_or_2)?this.compiler.$scope_variables()["$include?"](this.$meth()):$ret_or_1}),0),$def(self,"$variable_like?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.$arglist()["$=="](this.$s("arglist")))?this.$recvr()["$nil?"]():$ret_or_2)?this.$iter()["$nil?"]():$ret_or_1}),0),$def(self,"$sexp_with_arglist",(function(){return this.sexp.$updated(nil,[this.$recvr(),this.$meth(),this.$arglist()])}),0),$def(self,"$auto_await?",(function(){var $ret_or_1,$ret_or_2,awaited_set=nil;return awaited_set=this.$compiler().$async_await(),$truthy($ret_or_1=$truthy($ret_or_2=awaited_set)?awaited_set["$!="](!0):$ret_or_2)?awaited_set["$match?"](this.$meth().$to_s()):$ret_or_1}),0),$def(self,"$handle_special",(function $$handle_special(){var compile_default=$$handle_special.$$p||nil,method=nil;return delete $$handle_special.$$p,$truthy($$("SPECIALS")["$include?"](this.$meth()))?(method=this.$method("handle_"+this.$meth()),$eqeq(method.$arity(),1)?method["$[]"](compile_default):method["$[]"]()):Opal.yieldX(compile_default,[])}),0),$send($$("OPERATORS"),"each",[],(function $CallNode$14(operator,name){var self=null==$CallNode$14.$$s?this:$CallNode$14.$$s;return null==operator&&(operator=nil),null==name&&(name=nil),$send(self,"add_special",[operator.$to_sym()],(function $$15(compile_default){var $a,self=null==$$15.$$s?this:$$15.$$s,lhs=nil,rhs=nil;return null==compile_default&&(compile_default=nil),$truthy(self["$invoke_using_refinement?"]())?compile_default.$call():$truthy(self.$compiler()["$inline_operators?"]())?($truthy(self["$record_method?"]())&&self.$compiler().$method_calls()["$<<"](operator.$to_sym()),self.$helper("rb_"+name),lhs=($a=[self.$expr(self.$recvr()),self.$expr(self.$arglist())])[0],rhs=$a[1],self.$push(self.$fragment("$rb_"+name+"(")),self.$push(lhs),self.$push(self.$fragment(", ")),self.$push(rhs),self.$push(self.$fragment(")"))):compile_default.$call()}),{$$arity:1,$$s:self})}),{$$arity:2,$$s:self}),$send(self,"add_special",["require"],(function $CallNode$16(compile_default){var self=null==$CallNode$16.$$s?this:$CallNode$16.$$s,str=nil;return null==compile_default&&(compile_default=nil),str=$$("DependencyResolver").$new(self.$compiler(),self.$arglist().$children()["$[]"](0)).$resolve(),$truthy(str["$nil?"]())||self.$compiler().$requires()["$<<"](str),compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["require_relative"],(function $CallNode$17(){var self=null==$CallNode$17.$$s?this:$CallNode$17.$$s,arg=nil,file=nil,dir=nil;return arg=self.$arglist().$children()["$[]"](0),file=self.$compiler().$file(),$eqeq(arg.$type(),"str")&&(dir=$$("File").$dirname(file),self.$compiler().$requires()["$<<"](self.$Pathname(dir).$join(arg.$children()["$[]"](0)).$cleanpath().$to_s())),self.$push(self.$fragment(self.$scope().$self()+".$require("+file.$inspect()+"+ '/../' + ")),self.$push(self.$process(self.$arglist())),self.$push(self.$fragment(")"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["autoload"],(function $CallNode$18(compile_default){var self=null==$CallNode$18.$$s?this:$CallNode$18.$$s,args=nil,str=nil;return null==compile_default&&(compile_default=nil),args=self.$arglist().$children(),$eqeq(args.$length(),2)&&$eqeq(args["$[]"](0).$type(),"sym")&&(str=$$("DependencyResolver").$new(self.$compiler(),args["$[]"](1),"ignore").$resolve(),$truthy(str["$nil?"]())?self.$compiler().$warning("File for autoload of constant '"+args["$[]"](0).$children()["$[]"](0)+"' could not be bundled!"):(self.$compiler().$requires()["$<<"](str),self.$compiler().$autoloads()["$<<"](str))),compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["require_tree"],(function $CallNode$19(compile_default){var $a,rest,self=null==$CallNode$19.$$s?this:$CallNode$19.$$s,first_arg=nil,relative_path=nil,dir=nil,full_path=nil;return null==compile_default&&(compile_default=nil),first_arg=null==($a=[].concat($to_a(self.$arglist().$children())))[0]?nil:$a[0],rest=$slice.call($a,1),$eqeq(first_arg.$type(),"str")&&(relative_path=first_arg.$children()["$[]"](0),self.$compiler().$required_trees()["$<<"](relative_path),dir=$$("File").$dirname(self.$compiler().$file()),(full_path=self.$Pathname(dir).$join(relative_path).$cleanpath().$to_s()).$force_encoding(relative_path.$encoding()),first_arg=first_arg.$updated(nil,[full_path])),self.arglist=self.$arglist().$updated(nil,$rb_plus([first_arg],rest)),compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["block_given?"],(function $CallNode$20(){var self=null==$CallNode$20.$$s?this:$CallNode$20.$$s;return null==self.sexp&&(self.sexp=nil),self.$push(self.$compiler().$handle_block_given_call(self.sexp))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__callee__"],(function $CallNode$21(){var self=null==$CallNode$21.$$s?this:$CallNode$21.$$s;return $truthy(self.$scope()["$def?"]())?self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect())):self.$push(self.$fragment("nil"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__method__"],(function $CallNode$22(){var self=null==$CallNode$22.$$s?this:$CallNode$22.$$s;return $truthy(self.$scope()["$def?"]())?self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect())):self.$push(self.$fragment("nil"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__dir__"],(function $CallNode$23(){var self=null==$CallNode$23.$$s?this:$CallNode$23.$$s;return self.$push($$("File").$dirname($$$($$("Opal"),"Compiler").$module_name(self.$compiler().$file())).$inspect())}),{$$arity:0,$$s:self}),$send(self,"add_special",["using"],(function $CallNode$24(compile_default){var self=null==$CallNode$24.$$s?this:$CallNode$24.$$s;return null==compile_default&&(compile_default=nil),$truthy(self.$scope()["$accepts_using?"]())&&$eqeq(self.$arglist().$children().$count(),1)?self.$using_refinement(self.$arglist().$children().$first()):compile_default.$call()}),{$$arity:1,$$s:self}),$def(self,"$using_refinement",(function(arg){var $a,prev,curr;return prev=null==($a=[].concat($to_a(this.$scope().$refinements_temp())))[0]?nil:$a[0],curr=null==$a[1]?nil:$a[1],$truthy(prev)?this.$push("("+curr+" = "+prev+".slice(), "+curr+".push(",this.$expr(arg),"), "+this.$scope().$self()+")"):this.$push("("+curr+" = [",this.$expr(arg),"], "+this.$scope().$self()+")")}),1),$send(self,"add_special",["debugger"],(function $CallNode$25(){var self=null==$CallNode$25.$$s?this:$CallNode$25.$$s;return self.$push(self.$fragment("debugger"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__OPAL_COMPILER_CONFIG__"],(function $CallNode$26(){var self=null==$CallNode$26.$$s?this:$CallNode$26.$$s;return self.$push(self.$fragment("Opal.hash({ arity_check: "+self.$compiler()["$arity_check?"]()+" })"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["lambda"],(function $CallNode$27(compile_default){return null==compile_default&&(compile_default=nil),$send((null==$CallNode$27.$$s?this:$CallNode$27.$$s).$scope(),"defines_lambda",[],(function(){return compile_default.$call()}),0)}),{$$arity:1,$$s:self}),$send(self,"add_special",["nesting"],(function $CallNode$29(compile_default){var push_nesting,self=null==$CallNode$29.$$s?this:$CallNode$29.$$s;return null==compile_default&&(compile_default=nil),push_nesting=self["$push_nesting?"](),$truthy(push_nesting)&&self.$push("(Opal.Module.$$nesting = "+self.$scope().$nesting()+", "),compile_default.$call(),$truthy(push_nesting)?self.$push(")"):nil}),{$$arity:1,$$s:self}),$send(self,"add_special",["constants"],(function $CallNode$30(compile_default){var push_nesting,self=null==$CallNode$30.$$s?this:$CallNode$30.$$s;return null==compile_default&&(compile_default=nil),push_nesting=self["$push_nesting?"](),$truthy(push_nesting)&&self.$push("(Opal.Module.$$nesting = "+self.$scope().$nesting()+", "),compile_default.$call(),$truthy(push_nesting)?self.$push(")"):nil}),{$$arity:1,$$s:self}),$send(self,"add_special",["eval"],(function $CallNode$31(compile_default){var temp,scope_variables,self=null==$CallNode$31.$$s?this:$CallNode$31.$$s;return null==compile_default&&(compile_default=nil),$neqeq(self.$arglist().$children().$length(),1)||$not([self.$s("self"),nil]["$include?"](self.$recvr()))?compile_default.$call():(self.$scope().$nesting(),temp=self.$scope().$new_temp(),scope_variables=$send(self.$scope().$scope_locals(),"map",[],"to_s".$to_proc()).$inspect(),self.$push("("+temp+" = ",self.$expr(self.$arglist())),self.$push(", typeof Opal.compile === 'function' ? eval(Opal.compile("+temp),self.$push(", {scope_variables: ",scope_variables),self.$push(", arity_check: "+self.$compiler()["$arity_check?"]()+", file: '(eval)', eval: true})) : "),self.$push(self.$scope().$self()+".$eval("+temp+"))"))}),{$$arity:1,$$s:self}),$send(self,"add_special",["local_variables"],(function $CallNode$32(compile_default){var scope_variables,self=null==$CallNode$32.$$s?this:$CallNode$32.$$s;return null==compile_default&&(compile_default=nil),$truthy([self.$s("self"),nil]["$include?"](self.$recvr()))?(scope_variables=$send(self.$scope().$scope_locals(),"map",[],"to_s".$to_proc()).$inspect(),self.$push(scope_variables)):compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["binding"],(function $CallNode$33(compile_default){var self=null==$CallNode$33.$$s?this:$CallNode$33.$$s;return null==compile_default&&(compile_default=nil),$truthy(self.$recvr()["$nil?"]())?(self.$scope().$nesting(),self.$push("Opal.Binding.$new("),self.$push(" function($code, $value) {"),self.$push(" if (typeof $value === 'undefined') {"),self.$push(" return eval($code);"),self.$push(" }"),self.$push(" else {"),self.$push(" return eval($code + ' = $value');"),self.$push(" }"),self.$push(" },"),self.$push(" ",$send(self.$scope().$scope_locals(),"map",[],"to_s".$to_proc()).$inspect(),","),self.$push(" ",self.$scope().$self(),","),self.$push(" ",self.$source_location()),self.$push(")")):compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["__await__"],(function $CallNode$34(compile_default){var self=null==$CallNode$34.$$s?this:$CallNode$34.$$s,$writer=nil;return null==compile_default&&(compile_default=nil),$truthy(self.$compiler().$async_await())?(self.$push(self.$fragment("(await (")),self.$push(self.$process(self.$recvr())),self.$push(self.$fragment("))")),$writer=[!0],$send(self.$scope(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):compile_default.$call()}),{$$arity:1,$$s:self}),$def(self,"$push_nesting?",(function(){var $ret_or_1,recv=nil,$ret_or_2=nil,$ret_or_3=nil;return recv=this.$children().$first(),$truthy($ret_or_1=this.$children().$size()["$=="](2))?$truthy($ret_or_2=recv["$nil?"]())?$ret_or_2:$truthy($ret_or_3=recv.$type()["$=="]("const"))?recv.$children().$last()["$=="]("Module"):$ret_or_3:$ret_or_1}),0),function($base,$super,$parent_nesting){var self=$klass($base,null,"DependencyResolver"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.compiler=$proto.sexp=$proto.missing_dynamic_require=nil,$def(self,"$initialize",(function(compiler,sexp,missing_dynamic_require){var $ret_or_1;return null==missing_dynamic_require&&(missing_dynamic_require=nil),this.compiler=compiler,this.sexp=sexp,this.missing_dynamic_require=$truthy($ret_or_1=missing_dynamic_require)?$ret_or_1:this.compiler.$dynamic_require_severity()}),-3),$def(self,"$resolve",(function(){return this.$handle_part(this.sexp)}),0),$def(self,"$handle_part",(function(sexp,missing_dynamic_require){var $a,$b,$ret_or_1=nil,recv=nil,meth=nil,args=nil,parts=nil;if(null==missing_dynamic_require&&(missing_dynamic_require=this.missing_dynamic_require),$truthy(sexp)){if($eqeqeq("str",$ret_or_1=sexp.$type()))return sexp.$children()["$[]"](0);if($eqeqeq("dstr",$ret_or_1))return $send(sexp.$children(),"map",[],(function $$36(i){return null==i&&(i=nil),(null==$$36.$$s?this:$$36.$$s).$handle_part(i)}),{$$arity:1,$$s:this}).$join();if($eqeqeq("begin",$ret_or_1)){if($eqeq(sexp.$children().$length(),1))return this.$handle_part(sexp.$children()["$[]"](0))}else if($eqeqeq("send",$ret_or_1)){if($b=sexp.$children(),recv=null==($a=$to_ary($b))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),parts=$send(args,"map",[],(function $$37(s){return null==s&&(s=nil),(null==$$37.$$s?this:$$37.$$s).$handle_part(s,"ignore")}),{$$arity:1,$$s:this}),$truthy(parts["$include?"](nil)))return nil;if($truthy(recv["$is_a?"]($$$($$$($Opal,"AST"),"Node")))&&$eqeq(recv.$type(),"const")&&$eqeq(recv.$children().$last(),"File")){if($eqeq(meth,"expand_path"))return $send(this,"expand_path",$to_a(parts));if($eqeq(meth,"join"))return this.$expand_path(parts.$join("/"));if($eqeq(meth,"dirname"))return this.$expand_path(parts["$[]"](0).$split("/")["$[]"]($range(0,-1,!0)).$join("/"))}else if($eqeq(meth,"__dir__"))return $$("File").$dirname($$$($$("Opal"),"Compiler").$module_name(this.compiler.$file()))}}return $eqeqeq("error",$ret_or_1=missing_dynamic_require)?this.compiler.$error("Cannot handle dynamic require",this.sexp.$line()):$eqeqeq("warning",$ret_or_1)?this.compiler.$warning("Cannot handle dynamic require",this.sexp.$line()):nil}),-2),$def(self,"$expand_path",(function(path,base){return null==base&&(base=""),$send((base+"/"+path).$split("/"),"each_with_object",[[]],(function(part,p){return null==part&&(part=nil),null==p&&(p=nil),$eqeq(part,"")?nil:$eqeq(part,"..")?p.$pop():p["$<<"](part)}),2).$join("/")}),-2)}($nesting[0],0,$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/csend"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$def=Opal.def;return Opal.add_stubs("require,handle,helper,conditional_send,recv,receiver_sexp,push,compile_method_name,compile_arguments,compile_block_pass"),self.$require("opal/nodes/call"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"CSendNode");return self.$handle("csend"),$def(self,"$default_compile",(function(){return this.$helper("send"),$send(this,"conditional_send",[this.$recv(this.$receiver_sexp())],(function $$1(receiver_temp){var self=null==$$1.$$s?this:$$1.$$s;return null==receiver_temp&&(receiver_temp=nil),self.$push("$send(",receiver_temp),self.$compile_method_name(),self.$compile_arguments(),self.$compile_block_pass(),self.$push(")")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("CallNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/call_special"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$send=Opal.send;return Opal.add_stubs("require,handle,children,push,recv,recvr,expr,property,value,<<,default_compile,meth,receiver_sexp,method_jsid,compile_arguments,iter,s,lhs,rhs,==,type,first,map,flatten,scan,to_proc,empty?,stmt?,process"),self.$require("opal/nodes/base"),self.$require("opal/nodes/call"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"JsAttrNode");self.$handle("jsattr"),self.$children("recvr","property"),$def(self,"$compile",(function(){return this.$push(this.$recv(this.$recvr()),"[",this.$expr(this.$property()),"]")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JsAttrAsgnNode");self.$handle("jsattrasgn"),self.$children("recvr","property","value"),$def(self,"$compile",(function(){return this.$push(this.$recv(this.$recvr()),"[",this.$expr(this.$property()),"] = ",this.$expr(this.$value()))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JsCallNode"),$proto=self.$$prototype;$proto.iter=$proto.arglist=nil,self.$handle("jscall"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$truthy(self.iter)&&(self.arglist=self.arglist["$<<"](self.iter)),self.iter=nil}),-1),$def(self,"$compile",(function(){return this.$default_compile()}),0),$def(self,"$method_jsid",(function(){return"."+this.$meth()}),0),$def(self,"$compile_using_send",(function(){return this.$push(this.$recv(this.$receiver_sexp()),this.$method_jsid(),".apply(null"),this.$compile_arguments(),$truthy(this.$iter())&&this.$push(".concat(",this.$expr(this.$iter()),")"),this.$push(")")}),0)}($nesting[0],$$("CallNode")),function($base,$super){var self=$klass($base,$super,"Match3Node");return self.$$prototype.level=nil,self.$handle("match_with_lvasgn"),self.$children("lhs","rhs"),$def(self,"$compile",(function(){var sexp=nil,re=nil,names=nil,names_def=nil;return sexp=this.$s("send",this.$lhs(),"=~",this.$rhs()),$eqeq(this.$lhs().$type(),"regexp")&&$eqeq(this.$lhs().$children().$first().$type(),"str")&&(re=this.$lhs().$children().$first().$children().$first(),names=$send(re.$scan(/\(\?<([^>]*)>/).$flatten(),"map",[],"to_sym".$to_proc()),$truthy(names["$empty?"]())||(names_def=this.$s("lvasgn","$m3names",this.$s("if",this.$s("gvar","$~"),this.$s("send",this.$s("gvar","$~"),"named_captures"),this.$s("hash"))),names=$send(names,"map",[],(function $$1(name){var self=null==$$1.$$s?this:$$1.$$s;return null==name&&(name=nil),self.$s("lvasgn",name,self.$s("send",self.$s("lvar","$m3names"),"[]",self.$s("sym",name)))}),{$$arity:1,$$s:this}),sexp=$truthy(this["$stmt?"]())?$send(this,"s",["begin",sexp,names_def].concat($to_a(names))):$send(this,"s",["begin",this.$s("lvasgn","$m3tmp",sexp),names_def].concat($to_a(names)).concat([this.$s("lvar","$m3tmp")])))),this.$push(this.$process(sexp,this.level))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/scope"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$def=Opal.def,$send=Opal.send,$rb_minus=Opal.rb_minus,$truthy=Opal.truthy,$not=Opal.not,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$hash2=Opal.hash2;return Opal.add_stubs("require,attr_accessor,attr_reader,indent,scope,compiler,scope=,-,==,iter?,!,class?,dup,push,map,ivars,gvars,empty?,<<,parser_indent,join,+,fragment,def_in_class?,add_proto_ivar,include?,has_local?,|,scope_locals,reject,start_with?,to_s,has_temp?,pop,next_temp,loop,succ,uses_block!,identify!,valid_name?,mid,compact,parent,name,scope_name,unique_temp,lambda?,def?,type,nil?,rescue_else_sexp,last,class,collect_refinements_temps,add_scope_local,new_refinements_temp,identity,block_name=,add_temp,block_name,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ScopeNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.type=$proto.is_lambda=$proto.lambda_definition=$proto.defs=$proto.parent=$proto.temps=$proto.locals=$proto.proto_ivars=$proto.compiler=$proto.ivars=$proto.gvars=$proto.args=$proto.queue=$proto.while_stack=$proto.identity=$proto.uses_block=$proto.rescues=$proto.in_resbody=$proto.in_ensure=$proto.next_retry_id=$proto.refinements_temp=$proto.block_prepared=nil,self.$attr_accessor("parent"),self.$attr_accessor("name"),self.$attr_accessor("block_name"),self.$attr_reader("scope_name"),self.$attr_reader("locals"),self.$attr_reader("ivars"),self.$attr_reader("gvars"),self.$attr_accessor("mid"),self.$attr_accessor("defs"),self.$attr_reader("methods"),self.$attr_accessor("catch_return","has_break","has_retry"),self.$attr_accessor("rescue_else_sexp"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.locals=[],self.temps=[],self.args=[],self.ivars=[],self.gvars=[],self.parent=nil,self.queue=[],self.unique="a",self.while_stack=[],self.identity=nil,self.defs=nil,self.methods=[],self.uses_block=!1,self.in_ensure=!1,self.proto_ivars=[]}),-1),$def(self,"$in_scope",(function $$in_scope(){var $yield=$$in_scope.$$p||nil;return delete $$in_scope.$$p,$send(this,"indent",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s,$writer=nil;return null==self.parent&&(self.parent=nil),self.parent=self.$compiler().$scope(),$writer=[self],$send(self.$compiler(),"scope=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],Opal.yield1($yield,self),$writer=[self.parent],$send(self.$compiler(),"scope=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:0,$$s:this})}),0),$def(self,"$class_scope?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.type["$=="]("class"))?$ret_or_1:this.type["$=="]("module")}),0),$def(self,"$class?",(function(){return this.type["$=="]("class")}),0),$def(self,"$module?",(function(){return this.type["$=="]("module")}),0),$def(self,"$sclass?",(function(){return this.type["$=="]("sclass")}),0),$def(self,"$top?",(function(){return this.type["$=="]("top")}),0),$def(self,"$iter?",(function(){return this.type["$=="]("iter")}),0),$def(self,"$def?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.type["$=="]("def"))?$ret_or_1:this.type["$=="]("defs")}),0),$def(self,"$lambda?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$iter?"]())?this.is_lambda:$ret_or_1}),0),$def(self,"$is_lambda!",(function(){return this.is_lambda=!0}),0),$def(self,"$defines_lambda",(function $$defines_lambda(){var $yield=$$defines_lambda.$$p||nil;return delete $$defines_lambda.$$p,this.lambda_definition=!0,Opal.yieldX($yield,[]),this.lambda_definition=!1}),0),$def(self,"$lambda_definition?",(function(){return this.lambda_definition}),0),$def(self,"$def_in_class?",(function(){var $ret_or_1,$ret_or_2,$ret_or_3;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.defs["$!"]())?this.type["$=="]("def"):$ret_or_3)?this.parent:$ret_or_2)?this.parent["$class?"]():$ret_or_1}),0),$def(self,"$to_vars",(function(){var indent,vars=nil,iv=nil,gv=nil,str=nil;return vars=this.temps.$dup(),$send(vars,"push",$to_a($send(this.locals,"map",[],(function(l){return null==l&&(l=nil),l+" = nil"}),1))),iv=$send(this.$ivars(),"map",[],(function(ivar){return null==ivar&&(ivar=nil),"if (self"+ivar+" == null) self"+ivar+" = nil;\n"}),1),gv=$send(this.$gvars(),"map",[],(function(gvar){return null==gvar&&(gvar=nil),"if ($gvars"+gvar+" == null) $gvars"+gvar+" = nil;\n"}),1),$truthy(this["$class?"]())&&$not(this.proto_ivars["$empty?"]())&&vars["$<<"]("$proto = self.$$prototype"),indent=this.compiler.$parser_indent(),str=$truthy(vars["$empty?"]())?"":"var "+vars.$join(", ")+";\n",$truthy(this.$ivars()["$empty?"]())||(str=$rb_plus(str,""+indent+iv.$join(indent))),$truthy(this.$gvars()["$empty?"]())||(str=$rb_plus(str,""+indent+gv.$join(indent))),$truthy(this["$class?"]())&&$not(this.proto_ivars["$empty?"]())&&(str=str+"\n"+indent+$send(this.proto_ivars,"map",[],(function(i){return null==i&&(i=nil),"$proto"+i}),1).$join(" = ")+" = nil;"),this.$fragment(str)}),0),$def(self,"$add_scope_ivar",(function(ivar){return $truthy(this["$def_in_class?"]())?this.parent.$add_proto_ivar(ivar):$truthy(this.ivars["$include?"](ivar))?nil:this.ivars["$<<"](ivar)}),1),$def(self,"$add_scope_gvar",(function(gvar){return $truthy(this.gvars["$include?"](gvar))?nil:this.gvars["$<<"](gvar)}),1),$def(self,"$add_proto_ivar",(function(ivar){return $truthy(this.proto_ivars["$include?"](ivar))?nil:this.proto_ivars["$<<"](ivar)}),1),$def(self,"$add_arg",(function(arg){return $truthy(this.args["$include?"](arg))||this.args["$<<"](arg),arg}),1),$def(self,"$add_scope_local",(function(local){return $truthy(this["$has_local?"](local))?nil:this.locals["$<<"](local)}),1),$def(self,"$has_local?",(function(local){return!!($truthy(this.locals["$include?"](local))||$truthy(this.args["$include?"](local))||$truthy(this.temps["$include?"](local)))||!(!$truthy(this.parent)||!$eqeq(this.type,"iter"))&&this.parent["$has_local?"](local)}),1),$def(self,"$scope_locals",(function(){var locals;return locals=this.locals["$|"](this.args)["$|"]($truthy(this.parent)&&$eqeq(this.type,"iter")?this.parent.$scope_locals():[]),$send(locals,"reject",[],(function(i){return null==i&&(i=nil),i.$to_s()["$start_with?"]("$")}),1)}),0),$def(self,"$add_scope_temp",(function(tmp){return $truthy(this["$has_temp?"](tmp))?nil:this.temps.$push(tmp)}),1),$def(self,"$has_temp?",(function(tmp){return this.temps["$include?"](tmp)}),1),$def(self,"$new_temp",(function(){var tmp;return $truthy(this.queue["$empty?"]())?(tmp=this.$next_temp(),this.temps["$<<"](tmp),tmp):this.queue.$pop()}),0),$def(self,"$next_temp",(function(){var self=this,tmp=nil;return tmp=nil,function(){var $brk=Opal.new_brk();try{$send(self,"loop",[],(function $$20(){var self=null==$$20.$$s?this:$$20.$$s;if(null==self.unique&&(self.unique=nil),tmp="$"+self.unique,self.unique=self.unique.$succ(),$truthy(self["$has_local?"](tmp)))return nil;Opal.brk(nil,$brk)}),{$$arity:0,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),tmp}),0),$def(self,"$queue_temp",(function(name){return this.queue["$<<"](name)}),1),$def(self,"$push_while",(function(){var info;return info=$hash2([],{}),this.while_stack.$push(info),info}),0),$def(self,"$pop_while",(function(){return this.while_stack.$pop()}),0),$def(self,"$in_while?",(function(){return this.while_stack["$empty?"]()["$!"]()}),0),$def(self,"$uses_block!",(function(){return $eqeq(this.type,"iter")&&$truthy(this.parent)?this.parent["$uses_block!"]():(this.uses_block=!0,this["$identify!"]())}),0),$def(self,"$identify!",(function(name){var $ret_or_1=nil,$ret_or_2=nil,$ret_or_3=nil;return null==name&&(name=nil),$truthy(this.identity)||($truthy(this["$valid_name?"](this.$mid()))?this.identity="$$"+this.$mid():(name=$truthy($ret_or_1=name)?$ret_or_1:[$truthy($ret_or_2=this.$parent())?$truthy($ret_or_3=this.$parent().$name())?$ret_or_3:this.$parent().$scope_name():$ret_or_2,this.$mid()].$compact().$join("_"),this.identity=this.compiler.$unique_temp(name))),this.identity}),-1),self.$attr_reader("identity"),$def(self,"$find_parent_def",(function(){var scope=nil;for(scope=this;$truthy(scope=scope.$parent());)if($truthy(scope["$def?"]())||$truthy(scope["$lambda?"]()))return scope;return nil}),0),$def(self,"$super_chain",(function(){var $a,chain=nil,scope=nil,defn=nil,mid=nil;for(chain=($a=[[],this,"null","null"])[0],scope=$a[1],defn=$a[2],mid=$a[3];$truthy(scope);){if(!$eqeq(scope.$type(),"iter")){if($truthy(["def","defs"]["$include?"](scope.$type()))){defn=scope["$identify!"](),mid="'"+scope.$mid()+"'";break}break}chain["$<<"](scope["$identify!"]()),$truthy(scope.$parent())&&(scope=scope.$parent())}return[chain,defn,mid]}),0),$def(self,"$uses_block?",(function(){return this.uses_block}),0),$def(self,"$has_rescue_else?",(function(){return this.$rescue_else_sexp()["$nil?"]()["$!"]()}),0),$def(self,"$in_rescue",(function $$in_rescue(node){var $ret_or_1,result,$yield=$$in_rescue.$$p||nil;return delete $$in_rescue.$$p,this.rescues=$truthy($ret_or_1=this.rescues)?$ret_or_1:[],this.rescues.$push(node),result=Opal.yieldX($yield,[]),this.rescues.$pop(),result}),1),$def(self,"$current_rescue",(function(){return this.rescues.$last()}),0),$def(self,"$in_resbody",(function $$in_resbody(){var result,$yield=$$in_resbody.$$p||nil;return delete $$in_resbody.$$p,$yield===nil?nil:(this.in_resbody=!0,result=Opal.yieldX($yield,[]),this.in_resbody=!1,result)}),0),$def(self,"$in_resbody?",(function(){return this.in_resbody}),0),$def(self,"$in_ensure",(function $$in_ensure(){var result,$yield=$$in_ensure.$$p||nil;return delete $$in_ensure.$$p,$yield===nil?nil:(this.in_ensure=!0,result=Opal.yieldX($yield,[]),this.in_ensure=!1,result)}),0),$def(self,"$in_ensure?",(function(){return this.in_ensure}),0),$def(self,"$gen_retry_id",(function(){var $ret_or_1;return this.next_retry_id=$truthy($ret_or_1=this.next_retry_id)?$ret_or_1:"retry_0",this.next_retry_id=this.next_retry_id.$succ()}),0),$def(self,"$accepts_using?",(function(){return[$$("TopNode"),$$("ModuleNode"),$$("ClassNode"),$$("IterNode")]["$include?"](this.$class())}),0),$def(self,"$collect_refinements_temps",(function(temps){return null==temps&&(temps=[]),$truthy(this.refinements_temp)&&temps["$<<"](this.refinements_temp),$truthy(this.$parent())?this.$parent().$collect_refinements_temps(temps):temps}),-1),$def(self,"$new_refinements_temp",(function(){var var$;return var$=this.$compiler().$unique_temp("$refn"),this.$add_scope_local(var$),var$}),0),$def(self,"$refinements_temp",(function(){var $a,prev,curr;return prev=($a=[this.refinements_temp,this.$new_refinements_temp()])[0],curr=$a[1],this.refinements_temp=curr,[prev,curr]}),0),$def(self,"$self",(function(){return this.define_self=!0,"self"}),0),$def(self,"$nesting",(function(){return this.define_nesting=!0,"$nesting"}),0),$def(self,"$relative_access",(function(){return this.define_relative_access=this.define_nesting=!0,"$$"}),0),$def(self,"$prepare_block",(function(block_name){var scope_name,$writer=nil;return null==block_name&&(block_name=nil),scope_name=this.$scope().$identity(),$truthy(block_name)&&($send(this,"block_name=",$to_a($writer=[block_name])),$writer[$rb_minus($writer.length,1)]),this.$add_temp(this.$block_name()+" = "+scope_name+".$$p || nil"),$truthy(this.block_prepared)?nil:(this.$line("delete "+scope_name+".$$p;"),this.block_prepared=!0)}),-1),self.$attr_accessor("await_encountered")}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/module"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_ary=Opal.to_ary,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$def=Opal.def;return Opal.add_stubs("require,handle,children,name_and_base,helper,nil?,body,stmt?,unshift,line,in_scope,name=,scope,-,compile_body,await_encountered,await_encountered=,parent,+,nesting,private,cid,expr,stmt,returns,compiler,empty_line,add_temp,to_vars"),self.$require("opal/nodes/scope"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ModuleNode"),$proto=self.$$prototype;return $proto.define_nesting=$proto.define_relative_access=nil,self.$handle("module"),self.$children("cid","body"),$def(self,"$compile",(function(){var $a,$b,name,base,await_begin=nil,await_end=nil,async=nil,$writer=nil;return $b=this.$name_and_base(),$a=$to_ary($b),name=null==$a[0]?nil:$a[0],base=null==$a[1]?nil:$a[1],this.$helper("module"),$truthy(this.$body()["$nil?"]())?$truthy(this["$stmt?"]())?this.$unshift("$module(",base,", '"+name+"')"):this.$unshift("($module(",base,", '"+name+"'), nil)"):(this.$line(" var self = $module($base, '"+name+"');"),$send(this,"in_scope",[],(function $$1(){var $writer,self=null==$$1.$$s?this:$$1.$$s;return $writer=[name],$send(self.$scope(),"name=",$to_a($writer)),$rb_minus($writer.length,1),self.$compile_body()}),{$$arity:0,$$s:this}),$truthy(this.$await_encountered())?(await_begin="(await ",await_end=")",async="async ",$writer=[!0],$send(this.$parent(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):(await_begin=($a=["","",""])[0],await_end=$a[1],async=$a[2]),this.$unshift(await_begin+"("+async+"function($base"+($truthy(this.define_nesting)?", $parent_nesting":nil)+") {"),this.$line("})(",base,($truthy(this.define_nesting)?$rb_plus(", ",this.$scope().$nesting()):nil)+")"+await_end))}),0),self.$private(),$def(self,"$name_and_base",(function(){var $a,$b,name,base=nil;return $b=this.$cid().$children(),base=null==($a=$to_ary($b))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],$truthy(base["$nil?"]())?[name,this.$scope().$nesting()+"[0]"]:[name,this.$expr(base)]}),0),$def(self,"$compile_body",(function(){var body_code;return body_code=this.$stmt(this.$compiler().$returns(this.$body())),this.$empty_line(),$truthy(this.define_nesting)&&this.$add_temp("$nesting = [self].concat($parent_nesting)"),$truthy(this.define_relative_access)&&this.$add_temp("$$ = Opal.$r($nesting)"),this.$line(this.$scope().$to_vars()),this.$line(body_code)}),0)}($nesting[0],$$("ScopeNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/class"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_ary=Opal.to_ary,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$def=Opal.def;return Opal.add_stubs("require,handle,children,name_and_base,helper,nil?,body,stmt?,unshift,super_code,line,in_scope,name=,scope,-,compile_body,await_encountered,await_encountered=,parent,+,nesting,sup,expr"),self.$require("opal/nodes/module"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ClassNode");return self.$$prototype.define_nesting=nil,self.$handle("class"),self.$children("cid","sup","body"),$def(self,"$compile",(function(){var $a,$b,name,base,await_begin=nil,await_end=nil,async=nil,$writer=nil;return $b=this.$name_and_base(),$a=$to_ary($b),name=null==$a[0]?nil:$a[0],base=null==$a[1]?nil:$a[1],this.$helper("klass"),$truthy(this.$body()["$nil?"]())?$truthy(this["$stmt?"]())?this.$unshift("$klass(",base,", ",this.$super_code(),", '"+name+"')"):this.$unshift("($klass(",base,", ",this.$super_code(),", '"+name+"'), nil)"):(this.$line(" var self = $klass($base, $super, '"+name+"');"),$send(this,"in_scope",[],(function $$1(){var $writer,self=null==$$1.$$s?this:$$1.$$s;return $writer=[name],$send(self.$scope(),"name=",$to_a($writer)),$rb_minus($writer.length,1),self.$compile_body()}),{$$arity:0,$$s:this}),$truthy(this.$await_encountered())?(await_begin="(await ",await_end=")",async="async ",$writer=[!0],$send(this.$parent(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):(await_begin=($a=["","",""])[0],await_end=$a[1],async=$a[2]),this.$unshift(await_begin+"("+async+"function($base, $super"+($truthy(this.define_nesting)?", $parent_nesting":nil)+") {"),this.$line("})(",base,", ",this.$super_code(),($truthy(this.define_nesting)?$rb_plus(", ",this.$scope().$nesting()):nil)+")"+await_end))}),0),$def(self,"$super_code",(function(){return $truthy(this.$sup())?this.$expr(this.$sup()):"null"}),0)}($nesting[0],$$("ModuleNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/singleton_class"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("require,handle,children,push,in_scope,stmt,returns,compiler,body,add_temp,line,to_vars,scope,recv,object,nesting"),self.$require("opal/nodes/scope"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"SingletonClassNode");return self.$handle("sclass"),self.$children("object","body"),$def(self,"$compile",(function(){return this.$push("(function(self, $parent_nesting) {"),$send(this,"in_scope",[],(function $$1(){var body_stmt,self=null==$$1.$$s?this:$$1.$$s;return null==self.define_nesting&&(self.define_nesting=nil),null==self.define_relative_access&&(self.define_relative_access=nil),body_stmt=self.$stmt(self.$compiler().$returns(self.$body())),$truthy(self.define_nesting)&&self.$add_temp("$nesting = [self].concat($parent_nesting)"),$truthy(self.define_relative_access)&&self.$add_temp("$$ = Opal.$r($nesting)"),self.$line(self.$scope().$to_vars()),self.$line(body_stmt)}),{$$arity:0,$$s:this}),this.$line("})(Opal.get_singleton_class(",this.$recv(this.$object()),"), "+this.$scope().$nesting()+")")}),0)}($nesting[0],$$("ScopeNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_arg,scope,name,push,to_s"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArgNode");return self.$handle("arg"),self.$children("name"),$def(self,"$compile",(function(){return this.$scope().$add_arg(this.$name()),this.$push(this.$name().$to_s())}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/arity_check"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$def=Opal.def,$send=Opal.send,$rb_minus=Opal.rb_minus,$truthy=Opal.truthy,$not=Opal.not,$rb_lt=Opal.rb_lt,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt;return Opal.add_stubs("require,handle,children,new,args_node,args,optargs,restarg,postargs,kwargs,kwoptargs,kwrestarg,kwnilarg,arity,arity=,scope,-,arity_check?,compiler,empty?,arity_checks,helper,inspect,to_s,mid,line,push,join,compact,size,all_args,!,-@,<,+,>,<<,has_only_optional_kwargs?,any?,negative_arity,positive_arity,select,include?,type,has_required_kwargs?,all?,==,def?,class_scope?,top?,parent,class?,name,module?,identity"),self.$require("opal/nodes/base"),self.$require("opal/rewriters/arguments"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ArityCheckNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.kwargs=$proto.kwoptargs=$proto.kwrestarg=$proto.all_args=$proto.args=$proto.optargs=$proto.restarg=$proto.postargs=$proto.arity_checks=nil,self.$handle("arity_check"),self.$children("args_node"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this,arguments$=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),arguments$=$$$($$("Rewriters"),"Arguments").$new(self.$args_node().$children()),self.args=arguments$.$args(),self.optargs=arguments$.$optargs(),self.restarg=arguments$.$restarg(),self.postargs=arguments$.$postargs(),self.kwargs=arguments$.$kwargs(),self.kwoptargs=arguments$.$kwoptargs(),self.kwrestarg=arguments$.$kwrestarg(),self.kwnilarg=arguments$.$kwnilarg()}),-1),$def(self,"$compile",(function(){var $writer,meth=nil;return $writer=[this.$arity()],$send(this.$scope(),"arity=",$to_a($writer)),$rb_minus($writer.length,1),$truthy(this.$compiler()["$arity_check?"]())?$truthy(this.$arity_checks()["$empty?"]())?nil:(this.$helper("ac"),meth=this.$scope().$mid().$to_s().$inspect(),this.$line("var $arity = arguments.length;"),this.$push(" if ("+this.$arity_checks().$join(" || ")+") { $ac($arity, "+this.$arity()+", this, "+meth+"); }")):nil}),0),$def(self,"$kwargs",(function(){return[].concat($to_a(this.kwargs)).concat($to_a(this.kwoptargs)).concat([this.kwrestarg]).$compact()}),0),$def(self,"$all_args",(function(){var $ret_or_1;return this.all_args=$truthy($ret_or_1=this.all_args)?$ret_or_1:[].concat($to_a(this.args)).concat($to_a(this.optargs)).concat([this.restarg]).concat($to_a(this.postargs)).concat($to_a(this.$kwargs())).$compact()}),0),$def(self,"$arity_checks",(function(){var $a,arity=nil,min_arity=nil,max_arity=nil;return $truthy(null!=($a=this.arity_checks)&&$a!==nil?"instance-variable":nil)||(arity=this.$all_args().$size(),arity=$rb_minus(arity,this.optargs.$size()),$truthy(this.restarg)&&(arity=$rb_minus(arity,1)),arity=$rb_minus(arity,this.$kwargs().$size()),($not(this.optargs["$empty?"]())||$not(this.$kwargs()["$empty?"]())||$truthy(this.restarg))&&(arity=$rb_minus(arity["$-@"](),1)),this.arity_checks=[],$truthy($rb_lt(arity,0))?(min_arity=$rb_plus(arity,1)["$-@"](),max_arity=this.$all_args().$size(),$truthy($rb_gt(min_arity,0))&&this.arity_checks["$<<"]("$arity < "+min_arity),$truthy(this.restarg)||this.arity_checks["$<<"]("$arity > "+max_arity)):this.arity_checks["$<<"]("$arity !== "+arity)),this.arity_checks}),0),$def(self,"$arity",(function(){return $truthy(this.restarg)||$truthy(this.optargs["$any?"]())||$truthy(this["$has_only_optional_kwargs?"]())?this.$negative_arity():this.$positive_arity()}),0),$def(self,"$negative_arity",(function(){var result=nil;return result=$send(this.$all_args(),"select",[],(function(arg){return null==arg&&(arg=nil),["arg","mlhs"]["$include?"](arg.$type())}),1).$size(),$truthy(this["$has_required_kwargs?"]())&&(result=$rb_plus(result,1)),result=$rb_minus(result["$-@"](),1)}),0),$def(self,"$positive_arity",(function(){var result=nil;return result=this.$all_args().$size(),result=$rb_minus(result,this.$kwargs().$size()),$truthy(this.$kwargs()["$any?"]())&&(result=$rb_plus(result,1)),result}),0),$def(self,"$has_only_optional_kwargs?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$kwargs()["$any?"]())?$send(this.$kwargs(),"all?",[],(function(arg){return null==arg&&(arg=nil),["kwoptarg","kwrestarg"]["$include?"](arg.$type())}),1):$ret_or_1}),0),$def(self,"$has_required_kwargs?",(function(){return $send(this.$kwargs(),"any?",[],(function(arg){return null==arg&&(arg=nil),arg.$type()["$=="]("kwarg")}),1)}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"IterArityCheckNode");return self.$handle("iter_arity_check"),$def(self,"$compile",(function(){var $writer,parent_scope=nil,$ret_or_1=nil,$ret_or_2=nil,context=nil,identity=nil;if($writer=[this.$arity()],$send(this.$scope(),"arity=",$to_a($writer)),$rb_minus($writer.length,1),!$truthy(this.$compiler()["$arity_check?"]()))return nil;if($truthy(this.$arity_checks()["$empty?"]()))return nil;for(parent_scope=this.$scope();!$truthy($truthy($ret_or_1=$truthy($ret_or_2=parent_scope["$def?"]())?$ret_or_2:parent_scope["$class_scope?"]())?$ret_or_1:parent_scope["$top?"]());)parent_scope=parent_scope.$parent();return context=$truthy(parent_scope["$top?"]())?"'
      '":$truthy(parent_scope["$def?"]())?"'"+parent_scope.$mid()+"'":$truthy(parent_scope["$class?"]())?"''":$truthy(parent_scope["$module?"]())?"''":nil,identity=this.$scope().$identity(),this.$line("if ("+identity+".$$is_lambda || "+identity+".$$define_meth) {"),this.$line(" var $arity = arguments.length;"),this.$line(" if ("+this.$arity_checks().$join(" || ")+") { Opal.block_ac($arity, "+this.$arity()+", "+context+"); }"),this.$line("}")}),0)}($nesting[0],$$("ArityCheckNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/ensure_kwargs_are_kwargs"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,helper,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"EnsureKwargsAreKwargs");return self.$handle("ensure_kwargs_are_kwargs"),$def(self,"$compile",(function(){return this.$helper("hash2"),this.$line("if ($kwargs == null) {"),this.$line(" $kwargs = $hash2([], {});"),this.$line("} else if (!$kwargs.$$is_hash) {"),this.$line(" throw Opal.ArgumentError.$new('expected kwargs');"),this.$line("}")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_block_arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,uses_block!,scope,add_arg,name,prepare_block"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractBlockarg");return self.$handle("extract_blockarg"),self.$children("name"),$def(self,"$compile",(function(){return this.$scope()["$uses_block!"](),this.$scope().$add_arg(this.$name()),this.$scope().$prepare_block(this.$name())}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,[],meta,<<,used_kwargs,scope,add_temp,lvar_name,line,inspect,to_s"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwarg");return self.$$prototype.sexp=nil,self.$handle("extract_kwarg"),self.$children("lvar_name"),$def(self,"$compile",(function(){var key_name=nil;return key_name=this.sexp.$meta()["$[]"]("arg_name"),this.$scope().$used_kwargs()["$<<"](key_name),this.$add_temp(this.$lvar_name()),this.$line("if (!Opal.hasOwnProperty.call($kwargs.$$smap, '"+key_name+"')) {"),this.$line(" throw Opal.ArgumentError.$new('missing keyword: "+key_name+"');"),this.$line("}"),this.$line(this.$lvar_name()+" = $kwargs.$$smap["+key_name.$to_s().$inspect()+"];")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwargs"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,add_temp,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwargs");return self.$handle("extract_kwargs"),$def(self,"$compile",(function(){return this.$add_temp("$kwargs"),this.$line("$kwargs = Opal.extract_kwargs($post_args)")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwoptarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,[],meta,<<,used_kwargs,scope,add_temp,lvar_name,line,inspect,to_s,==,default_value,expr"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwoptarg");return self.$$prototype.sexp=nil,self.$handle("extract_kwoptarg"),self.$children("lvar_name","default_value"),$def(self,"$compile",(function(){var key_name=nil;return key_name=this.sexp.$meta()["$[]"]("arg_name"),this.$scope().$used_kwargs()["$<<"](key_name),this.$add_temp(this.$lvar_name()),this.$line(this.$lvar_name()+" = $kwargs.$$smap["+key_name.$to_s().$inspect()+"];"),$eqeq(this.$default_value().$children()["$[]"](1),"undefined")?nil:this.$line("if ("+this.$lvar_name()+" == null) "+this.$lvar_name()+" = ",this.$expr(this.$default_value()))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwrestarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("require,handle,children,name,add_temp,line,used_kwargs,map,scope,join"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwrestarg");return self.$handle("extract_kwrestarg"),self.$children("name"),$def(self,"$compile",(function(){var name,$ret_or_1;return name=$truthy($ret_or_1=this.$name())?$ret_or_1:"$kw_rest_arg",this.$add_temp(name),this.$line(name+" = Opal.kwrestargs($kwargs, "+this.$used_kwargs()+");")}),0),$def(self,"$used_kwargs",(function(){return"{"+$send(this.$scope().$used_kwargs(),"map",[],(function(arg_name){return null==arg_name&&(arg_name=nil),"'"+arg_name+"': true"}),1).$join(",")+"}"}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_optarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,==,[],default_value,line,name,expr"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractOptargNode");return self.$handle("extract_optarg"),self.$children("name","default_value"),$def(self,"$compile",(function(){return $eqeq(this.$default_value().$children()["$[]"](1),"undefined")?nil:this.$line("if ("+this.$name()+" == null) "+this.$name()+" = ",this.$expr(this.$default_value()),";")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_post_arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_temp,name,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractPostArg");return self.$handle("extract_post_arg"),self.$children("name"),$def(self,"$compile",(function(){return this.$add_temp(this.$name()),this.$line(this.$name()+" = $post_args.shift();"),this.$line("if ("+this.$name()+" == null) "+this.$name()+" = nil;")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_post_optarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_temp,name,line,args_to_keep,==,[],default_value,expr"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractPostOptarg");return self.$handle("extract_post_optarg"),self.$children("name","default_value","args_to_keep"),$def(self,"$compile",(function(){return this.$add_temp(this.$name()),this.$line("if ($post_args.length > "+this.$args_to_keep()+") "+this.$name()+" = $post_args.shift();"),$eqeq(this.$default_value().$children()["$[]"](1),"undefined")?nil:this.$line("if ("+this.$name()+" == null) "+this.$name()+" = ",this.$expr(this.$default_value()),";")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_restarg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,name,add_temp,==,args_to_keep,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractRestarg");return self.$handle("extract_restarg"),self.$children("name","args_to_keep"),$def(self,"$compile",(function(){var name,$ret_or_1;return name=$truthy($ret_or_1=this.$name())?$ret_or_1:"$rest_arg",this.$add_temp(name),$eqeq(this.$args_to_keep(),0)?this.$line(name+" = $post_args;"):this.$line(name+" = $post_args.splice(0, $post_args.length - "+this.$args_to_keep()+");")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/fake_arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,next_temp,scope,add_arg,push"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"FakeArgNode");return self.$handle("fake_arg"),$def(self,"$compile",(function(){var name;return name=this.$scope().$next_temp(),this.$scope().$add_arg(name),this.$push(name)}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/initialize_iterarg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,line,name"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"InitializeIterarg");return self.$handle("initialize_iter_arg"),self.$children("name"),$def(self,"$compile",(function(){return this.$line("if ("+this.$name()+" == null) "+this.$name()+" = nil;")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/initialize_shadowarg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,<<,locals,scope,name,add_arg,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"InitializeShadowarg");return self.$handle("initialize_shadowarg"),self.$children("name"),$def(self,"$compile",(function(){return this.$scope().$locals()["$<<"](this.$name()),this.$scope().$add_arg(this.$name()),this.$line(this.$name()+" = nil;")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/parameters"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a,$truthy=Opal.truthy,$eqeq=Opal.eqeq;return Opal.add_stubs("children,map,public_send,type,join,compact,=="),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,null,"Parameters");return self.$$prototype.args=nil,$def(self,"$initialize",(function(args){return this.args=args.$children()}),1),$def(self,"$to_code",(function(){return"["+$send(this.args,"map",[],(function $$1(arg){return null==arg&&(arg=nil),$send(null==$$1.$$s?this:$$1.$$s,"public_send",["on_"+arg.$type()].concat($to_a(arg)))}),{$$arity:1,$$s:this}).$compact().$join(", ")+"]"}),0),$def(self,"$on_arg",(function(arg_name){return"['req', '"+arg_name+"']"}),1),$def(self,"$on_mlhs",(function($a){return Opal.slice.call(arguments),"['req']"}),-1),$def(self,"$on_optarg",(function(arg_name,_default_value){return"['opt', '"+arg_name+"']"}),2),$def(self,"$on_restarg",(function(arg_name){return null==arg_name&&(arg_name=nil),$truthy(arg_name)?($eqeq(arg_name,"fwd_rest_arg")&&(arg_name="*"),"['rest', '"+arg_name+"']"):"['rest']"}),-1),$def(self,"$on_kwarg",(function(arg_name){return"['keyreq', '"+arg_name+"']"}),1),$def(self,"$on_kwoptarg",(function(arg_name,_default_value){return"['key', '"+arg_name+"']"}),2),$def(self,"$on_kwrestarg",(function(arg_name){return null==arg_name&&(arg_name=nil),$truthy(arg_name)?"['keyrest', '"+arg_name+"']":"['keyrest']"}),-1),$def(self,"$on_blockarg",(function(arg_name){return $eqeq(arg_name,"fwd_block_arg")&&(arg_name="&"),"['block', '"+arg_name+"']"}),1),$def(self,"$on_kwnilarg",(function(){return"['nokey']"}),0),$def(self,"$on_shadowarg",(function(_arg_name){return nil}),1)}([$module($base,"Args")].concat($parent_nesting)[0])}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/prepare_post_args"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_temp,==,offset,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"PreparePostArgs");return self.$handle("prepare_post_args"),self.$children("offset"),$def(self,"$compile",(function(){return this.$add_temp("$post_args"),$eqeq(this.$offset(),0)?this.$line("$post_args = Opal.slice.call(arguments)"):this.$line("$post_args = Opal.slice.call(arguments, "+this.$offset()+")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$send=Opal.send,$truthy=Opal.truthy,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt,$neqeq=Opal.neqeq,$def=Opal.def;return Opal.add_stubs("require,handle,each_with_index,children,multiple_underscore?,[],[]=,-,+,>,s,type,!=,push,process,==,count,start_with?,to_s,first"),self.$require("opal/nodes/base"),self.$require("opal/nodes/args/arg"),self.$require("opal/nodes/args/arity_check"),self.$require("opal/nodes/args/ensure_kwargs_are_kwargs"),self.$require("opal/nodes/args/extract_block_arg"),self.$require("opal/nodes/args/extract_kwarg"),self.$require("opal/nodes/args/extract_kwargs"),self.$require("opal/nodes/args/extract_kwoptarg"),self.$require("opal/nodes/args/extract_kwrestarg"),self.$require("opal/nodes/args/extract_optarg"),self.$require("opal/nodes/args/extract_post_arg"),self.$require("opal/nodes/args/extract_post_optarg"),self.$require("opal/nodes/args/extract_restarg"),self.$require("opal/nodes/args/fake_arg"),self.$require("opal/nodes/args/initialize_iterarg"),self.$require("opal/nodes/args/initialize_shadowarg"),self.$require("opal/nodes/args/parameters"),self.$require("opal/nodes/args/prepare_post_args"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArgsNode");return self.$handle("args"),$def(self,"$compile",(function(){var same_arg_counter=nil;return same_arg_counter=$hash2([],{}),$send(this.$children(),"each_with_index",[],(function $$1(arg,idx){var self=null==$$1.$$s?this:$$1.$$s,$writer=nil;return null==arg&&(arg=nil),null==idx&&(idx=nil),$truthy(self["$multiple_underscore?"](arg))&&($truthy(same_arg_counter["$[]"](arg))||($send(same_arg_counter,"[]=",$to_a($writer=[arg,0])),$writer[$rb_minus($writer.length,1)]),$writer=[arg,$rb_plus(same_arg_counter["$[]"](arg),1)],$send(same_arg_counter,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy($rb_gt(same_arg_counter["$[]"](arg),1))&&(arg=self.$s(arg.$type(),arg.$children()["$[]"](0)+"_$"+same_arg_counter["$[]"](arg)))),$neqeq(idx,0)&&self.$push(", "),self.$push(self.$process(arg))}),{$$arity:2,$$s:this})}),0),$def(self,"$multiple_underscore?",(function(arg){var $ret_or_1,$ret_or_2,$ret_or_3;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=arg.$type()["$=="]("arg"))?arg.$children().$count()["$=="](1):$ret_or_3)?arg.$children().$first().$to_s()["$start_with?"]("_"):$ret_or_2)?$rb_gt(this.$children().$count(arg),1):$ret_or_1}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/node_with_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("require,attr_reader,attr_accessor,[],meta,s,original_args,push,process,arity_check_node,uses_block?,scope,prepare_block,to_code,new"),self.$require("opal/nodes/scope"),self.$require("opal/nodes/args/parameters"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"NodeWithArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.sexp=nil,self.$attr_reader("used_kwargs"),self.$attr_accessor("arity"),self.$attr_reader("original_args"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.original_args=self.sexp.$meta()["$[]"]("original_args"),self.used_kwargs=[],self.arity=0}),-1),$def(self,"$arity_check_node",(function(){return this.$s("arity_check",this.$original_args())}),0),$def(self,"$compile_arity_check",(function(){return this.$push(this.$process(this.$arity_check_node()))}),0),$def(self,"$compile_block_arg",(function(){return $truthy(this.$scope()["$uses_block?"]())?this.$scope().$prepare_block():nil}),0),$def(self,"$parameters_code",(function(){return $$$($$("Args"),"Parameters").$new(this.$original_args()).$to_code()}),0)}($nesting[0],$$("ScopeNode"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/iter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$eqeq=Opal.eqeq,$rb_gt=Opal.rb_gt,$def=Opal.def;return Opal.add_stubs("require,handle,children,lambda_definition?,scope,is_lambda!,in_scope,identify!,process,inline_args,compile_arity_check,stmt,returned_body,add_temp,to_vars,line,catch_return,unshift,push,await_encountered,<<,arity,self,contains_break?,arity_check?,compiler,parameters_code,has_top_level_mlhs_arg?,has_trailing_comma_in_args?,==,length,>,join,nesting,relative_access,block_arg,prepare_block,each,args,first,updated,body,returns,s,any?,original_args,type,expression,loc,source,match,new,found_break?"),self.$require("opal/nodes/node_with_args"),self.$require("opal/rewriters/break_finder"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"IterNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.define_self=$proto.define_nesting=$proto.define_relative_access=$proto.sexp=nil,self.$handle("iter"),self.$children("inline_args","body"),$def(self,"$compile",(function(){var inline_params=nil,to_vars=nil,identity=nil,body_code=nil,blockopts=nil;return $truthy(this.$scope()["$lambda_definition?"]())&&this["$is_lambda!"](),inline_params=nil,to_vars=identity=body_code=nil,$send(this,"in_scope",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return null==self.define_self&&(self.define_self=nil),identity=self.$scope()["$identify!"](),inline_params=self.$process(self.$inline_args()),self.$compile_arity_check(),body_code=self.$stmt(self.$returned_body()),$truthy(self.define_self)&&self.$add_temp("self = "+identity+".$$s == null ? this : "+identity+".$$s"),to_vars=self.$scope().$to_vars(),self.$line(body_code),$truthy(self.$scope().$catch_return())?(self.$unshift("try {\n"),self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }"),self.$push(" throw $returner; }")):nil}),{$$arity:0,$$s:this}),this.$unshift(to_vars),$truthy(this.$await_encountered())?this.$unshift("async function "+identity+"(",inline_params,"){"):this.$unshift("function "+identity+"(",inline_params,"){"),this.$push("}"),(blockopts=[])["$<<"]("$$arity: "+this.$arity()),$truthy(this.define_self)&&blockopts["$<<"]("$$s: "+this.$scope().$self()),$truthy(this["$contains_break?"]())&&blockopts["$<<"]("$$brk: $brk"),$truthy(this.$compiler()["$arity_check?"]())&&blockopts["$<<"]("$$parameters: "+this.$parameters_code()),$truthy(this["$has_top_level_mlhs_arg?"]())&&blockopts["$<<"]("$$has_top_level_mlhs_arg: true"),$truthy(this["$has_trailing_comma_in_args?"]())&&blockopts["$<<"]("$$has_trailing_comma_in_args: true"),$eqeq(blockopts.$length(),1)?this.$push(", "+this.$arity()):$truthy($rb_gt(blockopts.$length(),1))&&this.$push(", {",blockopts.$join(", "),"}"),$truthy(this.define_nesting)&&this.$scope().$nesting(),$truthy(this.define_relative_access)?this.$scope().$relative_access():nil}),0),$def(self,"$compile_block_arg",(function(){return $truthy(this.$block_arg())?this.$scope().$prepare_block():nil}),0),$def(self,"$extract_underscore_args",(function(){var valid_args=nil,caught_blank_argument=nil;return valid_args=[],caught_blank_argument=!1,$send(this.$args().$children(),"each",[],(function(arg){var arg_name;return null==arg&&(arg=nil),arg_name=arg.$children().$first(),$eqeq(arg_name,"_")?$truthy(caught_blank_argument)?nil:(caught_blank_argument=!0,valid_args["$<<"](arg)):valid_args["$<<"](arg)}),1),this.sexp=this.sexp.$updated(nil,[this.$args().$updated(nil,valid_args),this.$body()])}),0),$def(self,"$returned_body",(function(){var $ret_or_1;return this.$compiler().$returns($truthy($ret_or_1=this.$body())?$ret_or_1:this.$s("nil"))}),0),$def(self,"$has_top_level_mlhs_arg?",(function(){return $send(this.$original_args().$children(),"any?",[],(function(arg){return null==arg&&(arg=nil),arg.$type()["$=="]("mlhs")}),1)}),0),$def(self,"$has_trailing_comma_in_args?",(function(){return $truthy(this.$original_args().$loc())&&$truthy(this.$original_args().$loc().$expression())?this.$original_args().$loc().$expression().$source().$match(/,\s*\|/):nil}),0),$def(self,"$arity_check_node",(function(){return this.$s("iter_arity_check",this.$original_args())}),0),$def(self,"$contains_break?",(function(){var finder=nil;return(finder=$$$($$$($$("Opal"),"Rewriters"),"BreakFinder").$new()).$process(this.sexp),finder["$found_break?"]()}),0)}($nesting[0],$$("NodeWithArgs"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/def"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$def=Opal.def,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,handle,children,in_scope,mid,mid=,scope,-,==,type,defs=,identify!,identity,block_name=,process,inline_args,stmt,returns,compiler,stmts,compile_block_arg,add_temp,compile_arity_check,unshift,current_indent,to_vars,line,catch_return,push,await_encountered,<<,arity,arity_check?,parameters_code,parse_comments?,comments_code,enable_source_location?,source_location,length,>,join,wrap_with_definition,nesting,relative_access,helper,wrap,self,expr?,+,map,comments,inspect,text"),self.$require("opal/nodes/node_with_args"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DefNode"),$proto=self.$$prototype;return $proto.define_nesting=$proto.define_relative_access=nil,self.$handle("def"),self.$children("mid","inline_args","stmts"),$def(self,"$compile",(function(){var inline_params=nil,scope_name=nil,blockopts=nil;return inline_params=nil,scope_name=nil,$send(this,"in_scope",[],(function $$1(){var stmt_code,self=null==$$1.$$s?this:$$1.$$s,$writer=nil;return null==self.sexp&&(self.sexp=nil),null==self.define_self&&(self.define_self=nil),$writer=[self.$mid()],$send(self.$scope(),"mid=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$eqeq(self.sexp.$type(),"defs")&&($writer=[!0],$send(self.$scope(),"defs=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),self.$scope()["$identify!"](),scope_name=self.$scope().$identity(),$writer=["$yield"],$send(self.$scope(),"block_name=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],inline_params=self.$process(self.$inline_args()),stmt_code=self.$stmt(self.$compiler().$returns(self.$stmts())),self.$compile_block_arg(),$truthy(self.define_self)&&self.$add_temp("self = this"),self.$compile_arity_check(),self.$unshift("\n"+self.$current_indent(),self.$scope().$to_vars()),self.$line(stmt_code),$truthy(self.$scope().$catch_return())?(self.$unshift("try {\n"),self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }"),self.$push(" throw $returner; }")):nil}),{$$arity:0,$$s:this}),this.$unshift(") {"),this.$unshift(inline_params),this.$unshift("function "+scope_name+"("),$truthy(this.$await_encountered())&&this.$unshift("async "),this.$line("}"),(blockopts=[])["$<<"]("$$arity: "+this.$arity()),$truthy(this.$compiler()["$arity_check?"]())&&blockopts["$<<"]("$$parameters: "+this.$parameters_code()),$truthy(this.$compiler()["$parse_comments?"]())&&blockopts["$<<"]("$$comments: "+this.$comments_code()),$truthy(this.$compiler()["$enable_source_location?"]())&&blockopts["$<<"]("$$source_location: "+this.$source_location()),$eqeq(blockopts.$length(),1)?this.$push(", "+this.$arity()):$truthy($rb_gt(blockopts.$length(),1))&&this.$push(", {",blockopts.$join(", "),"}"),this.$wrap_with_definition(),$truthy(this.define_nesting)&&this.$scope().$nesting(),$truthy(this.define_relative_access)?this.$scope().$relative_access():nil}),0),$def(self,"$wrap_with_definition",(function(){return this.$helper("def"),this.$wrap("$def("+this.$scope().$self()+", '$"+this.$mid()+"', ",")"),$truthy(this["$expr?"]())?nil:this.$unshift("\n"+this.$current_indent())}),0),$def(self,"$comments_code",(function(){return $rb_plus($rb_plus("[",$send(this.$comments(),"map",[],(function(comment){return null==comment&&(comment=nil),comment.$text().$inspect()}),1).$join(", ")),"]")}),0)}($nesting[0],$$("NodeWithArgs"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/defs"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,helper,unshift,expr,recvr,mid,push"),self.$require("opal/nodes/def"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DefsNode");return self.$handle("defs"),self.$children("recvr","mid","inline_args","stmts"),$def(self,"$wrap_with_definition",(function(){return this.$helper("defs"),this.$unshift("$defs(",this.$expr(this.$recvr()),", '$"+this.$mid()+"', "),this.$push(")")}),0)}($nesting[0],$$("DefNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/if"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def,$not=Opal.not,$send=Opal.send,$eqeqeq=Opal.eqeqeq;return Opal.add_stubs("require,handle,children,should_compile_as_simple_expression?,==,true_body,s,compile_with_binary_or,false_body,compile_with_binary_and,compile_with_ternary,compile_with_if,truthy,falsy,!,push,js_truthy,test,indent,line,stmt,type,expects_expression?,await_encountered,scope,wrap,returnify,returns,compiler,expr?,recv?,simple?,expr,[],meta,sexp,===,single_line?,strip_empty_children,all?,helper,new_temp,top_scope,excl,from,to"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"IfNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("if"),self.$children("test","true_body","false_body"),$def(self,"$compile",(function(){return $truthy(this["$should_compile_as_simple_expression?"]())?$eqeq(this.$true_body(),this.$s("true"))?this.$compile_with_binary_or():$eqeq(this.$false_body(),this.$s("false"))?this.$compile_with_binary_and():this.$compile_with_ternary():this.$compile_with_if()}),0),$def(self,"$compile_with_if",(function(){var $a,truthy=nil,falsy=nil;return truthy=this.$truthy(),falsy=this.$falsy(),$truthy(falsy)&&$not(truthy)?(this.$push("if (!",this.$js_truthy(this.$test()),") {"),falsy=($a=[truthy,falsy])[0],truthy=$a[1]):this.$push("if (",this.$js_truthy(this.$test()),") {"),$truthy(truthy)&&$send(this,"indent",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return self.$line(self.$stmt(truthy))}),{$$arity:0,$$s:this}),$truthy(falsy)?$eqeq(falsy.$type(),"if")?this.$line("} else ",this.$stmt(falsy)):(this.$line("} else {"),$send(this,"indent",[],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;return self.$line(self.$stmt(falsy))}),{$$arity:0,$$s:this}),this.$line("}")):(this.$line("}"),$truthy(this["$expects_expression?"]())&&this.$line("return nil;")),$truthy(this["$expects_expression?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() {","})())"):this.$wrap("(function() {","})()"):nil}),0),$def(self,"$truthy",(function(){return this.$returnify(this.$true_body())}),0),$def(self,"$falsy",(function(){return this.$returnify(this.$false_body())}),0),$def(self,"$returnify",(function(body){return $truthy(this["$expects_expression?"]())&&$truthy(body)?this.$compiler().$returns(body):body}),1),$def(self,"$expects_expression?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$expr?"]())?$ret_or_1:this["$recv?"]()}),0),$def(self,"$should_compile_as_simple_expression?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this["$expects_expression?"]())?this["$simple?"](this.$true_body()):$ret_or_2)?this["$simple?"](this.$false_body()):$ret_or_1}),0),$def(self,"$compile_with_ternary",(function(){var truthy,falsy=nil,$ret_or_1=nil;return truthy=this.$true_body(),falsy=this.$false_body(),this.$push("("),this.$push(this.$js_truthy(this.$test())," ? "),this.$push("(",this.$expr($truthy($ret_or_1=truthy)?$ret_or_1:this.$s("nil")),") : "),$not(falsy)||$eqeq(falsy.$type(),"if")?this.$push(this.$expr($truthy($ret_or_1=falsy)?$ret_or_1:this.$s("nil"))):this.$push("(",this.$expr($truthy($ret_or_1=falsy)?$ret_or_1:this.$s("nil")),")"),this.$push(")")}),0),$def(self,"$compile_with_binary_and",(function(){var truthy=nil,$ret_or_1=nil;return truthy=$truthy(this.$sexp().$meta()["$[]"]("do_js_truthy_on_true_body"))?this.$js_truthy($truthy($ret_or_1=this.$true_body())?$ret_or_1:this.$s("nil")):this.$expr($truthy($ret_or_1=this.$true_body())?$ret_or_1:this.$s("nil")),this.$push("("),this.$push(this.$js_truthy(this.$test())," && "),this.$push("(",truthy,")"),this.$push(")")}),0),$def(self,"$compile_with_binary_or",(function(){var falsy=nil,$ret_or_1=nil;return falsy=$truthy(this.$sexp().$meta()["$[]"]("do_js_truthy_on_false_body"))?this.$js_truthy($truthy($ret_or_1=this.$false_body())?$ret_or_1:this.$s("nil")):this.$expr($truthy($ret_or_1=this.$false_body())?$ret_or_1:this.$s("nil")),this.$push("("),this.$push(this.$js_truthy(this.$test())," || "),this.$push("(",falsy,")"),this.$push(")")}),0),$def(self,"$simple?",(function(body){var $ret_or_2=nil;return!$eqeqeq($$$($$("AST"),"Node"),body)||!($eqeqeq("return",$ret_or_2=body.$type())||$eqeqeq("js_return",$ret_or_2)||$eqeqeq("break",$ret_or_2)||$eqeqeq("next",$ret_or_2)||$eqeqeq("redo",$ret_or_2)||$eqeqeq("retry",$ret_or_2))&&($eqeqeq("xstr",$ret_or_2)?$$("XStringNode")["$single_line?"]($$("XStringNode").$strip_empty_children(body.$children())):$send(body.$children(),"all?",[],(function $$6(i){return null==i&&(i=nil),(null==$$6.$$s?this:$$6.$$s)["$simple?"](i)}),{$$arity:1,$$s:this}))}),1)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"IFlipFlop");self.$handle("iflipflop"),self.$children("from","to"),$def(self,"$excl",(function(){return""}),0),$def(self,"$compile",(function(){var fun_name,ff;return this.$helper("truthy"),ff=(fun_name=this.$top_scope().$new_temp())+".$$ff",this.$push("(typeof "+fun_name+" === 'undefined' ? ("+fun_name+" = function(from, to){"),this.$push(" if (typeof "+ff+" === 'undefined') "+ff+" = false;"),this.$push(" var retval = "+ff+";"),this.$push(" if (!"+ff+") {"),this.$push(" "+ff+" = retval = $truthy(from());"),this.$push(" }"),this.$push(" "+this.$excl()+"if ("+ff+") {"),this.$push(" if ($truthy(to())) "+ff+" = false;"),this.$push(" }"),this.$push(" return retval;"),this.$push("}) : "+fun_name+")("),this.$push(" function() { ",this.$stmt(this.$compiler().$returns(this.$from()))," },"),this.$push(" function() { ",this.$stmt(this.$compiler().$returns(this.$to()))," }"),this.$push(")")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"EFlipFlop");return self.$handle("eflipflop"),$def(self,"$excl",(function(){return"else "}),0)}($nesting[0],$$("IFlipFlop"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/logic"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt,$not=Opal.not;return Opal.add_stubs("require,handle,in_while?,push,iter?,scope,expr_or_nil,value,error,===,size,children,s,first,compile_while,compile_iter,[],while_loop,stmt?,line,break_val,nil?,expr,[]=,-,helper,identity,==,empty_splat?,recv,>,find_parent_def,!,lambda?,def?,expr?,return_in_iter?,return_expr_in_def?,scope_to_catch_return,catch_return=,return_val,to_s"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"NextNode");self.$handle("next"),$def(self,"$compile",(function(){return $truthy(this["$in_while?"]())?this.$push("continue;"):$truthy(this.$scope()["$iter?"]())?this.$push("return ",this.$expr_or_nil(this.$value()),";"):this.$error("Invalid next")}),0),$def(self,"$value",(function(){var $ret_or_1;return $eqeqeq(0,$ret_or_1=this.$children().$size())?this.$s("nil"):$eqeqeq(1,$ret_or_1)?this.$children().$first():$send(this,"s",["array"].concat($to_a(this.$children())))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"BreakNode");self.$handle("break"),self.$children("value"),$def(self,"$compile",(function(){return $truthy(this["$in_while?"]())?this.$compile_while():$truthy(this.$scope()["$iter?"]())?this.$compile_iter():this.$error("void value expression: cannot use break outside of iter/while")}),0),$def(self,"$compile_while",(function(){return $truthy(this.$while_loop()["$[]"]("closure"))?this.$push("return ",this.$expr_or_nil(this.$value())):this.$push("break;")}),0),$def(self,"$compile_iter",(function(){return $truthy(this["$stmt?"]())||this.$error("break must be used as a statement"),this.$line("Opal.brk(",this.$break_val(),", $brk)")}),0),$def(self,"$break_val",(function(){return $truthy(this.$value()["$nil?"]())?this.$expr(this.$s("nil")):this.$expr(this.$value())}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"RedoNode");self.$handle("redo"),$def(self,"$compile",(function(){return $truthy(this["$in_while?"]())?this.$compile_while():$truthy(this.$scope()["$iter?"]())?this.$compile_iter():this.$push("REDO()")}),0),$def(self,"$compile_while",(function(){var $writer;return $writer=["use_redo",!0],$send(this.$while_loop(),"[]=",$to_a($writer)),$rb_minus($writer.length,1),this.$push(this.$while_loop()["$[]"]("redo_var")+" = true; continue;")}),0),$def(self,"$compile_iter",(function(){return this.$helper("slice"),this.$push("return "+this.$scope().$identity()+".apply(null, $slice.call(arguments))")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"SplatNode");self.$handle("splat"),self.$children("value"),$def(self,"$empty_splat?",(function(){return this.$value()["$=="](this.$s("array"))}),0),$def(self,"$compile",(function(){return $truthy(this["$empty_splat?"]())?this.$push("[]"):(this.$helper("to_a"),this.$push("$to_a(",this.$recv(this.$value()),")"))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ReturnNode");self.$handle("return"),self.$children("value"),$def(self,"$return_val",(function(){return $truthy(this.$value()["$nil?"]())?this.$expr(this.$s("nil")):$truthy($rb_gt(this.$children().$size(),1))?this.$expr($send(this,"s",["array"].concat($to_a(this.$children())))):this.$expr(this.$value())}),0),$def(self,"$return_in_iter?",(function(){var parent_def=nil;return $truthy(this.$scope()["$iter?"]())&&$not(this.$scope()["$lambda?"]())&&$truthy(parent_def=this.$scope().$find_parent_def())?parent_def:nil}),0),$def(self,"$return_expr_in_def?",(function(){return $truthy(this["$expr?"]())&&($truthy(this.$scope()["$def?"]())||$truthy(this.$scope()["$lambda?"]()))?this.$scope():nil}),0),$def(self,"$scope_to_catch_return",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$return_in_iter?"]())?$ret_or_1:this["$return_expr_in_def?"]()}),0),$def(self,"$compile",(function(){var def_scope,$writer=nil;return $truthy(def_scope=this.$scope_to_catch_return())?($send(def_scope,"catch_return=",$to_a($writer=[!0])),$writer[$rb_minus($writer.length,1)],this.$push("Opal.ret(",this.$return_val(),")")):$truthy(this["$stmt?"]())?this.$push("return ",this.$return_val()):this.$error("void value expression: cannot return as an expression")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JSReturnNode");self.$handle("js_return"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("return "),this.$push(this.$expr(this.$value()))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JSTempNode");self.$handle("js_tmp"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$value().$to_s())}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"BlockPassNode");return self.$handle("block_pass"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$expr(this.$s("send",this.$value(),"to_proc",this.$s("arglist"))))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/definitions"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$range=Opal.range,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$slice=Opal.slice,$rb_plus=Opal.rb_plus,$hash2=Opal.hash2,$const_set=Opal.const_set;return Opal.add_stubs("require,handle,children,each,line,self,scope,expr,===,type,new_name,helper,inspect,[],to_s,first,old_name,push,error,empty?,stmt?,compile_children,simple_children?,compile_inline_children,>,size,wrap,==,returned_children,await_encountered,parent,+,returns,compiler,s,process,fragment,freeze,none?,include?,map,each_with_index,reject,to_proc"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"UndefNode");self.$handle("undef"),self.$children("value"),$def(self,"$compile",(function(){return $send(this.$children(),"each",[],(function $$1(child){var self=null==$$1.$$s?this:$$1.$$s;return null==child&&(child=nil),self.$line("Opal.udef("+self.$scope().$self()+", '$' + ",self.$expr(child),");")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"AliasNode");self.$handle("alias"),self.$children("new_name","old_name"),$def(self,"$compile",(function(){var $ret_or_1,new_name_str=nil,old_name_str=nil;return $eqeqeq("gvar",$ret_or_1=this.$new_name().$type())?(this.$helper("alias_gvar"),new_name_str=this.$new_name().$children().$first().$to_s()["$[]"]($range(1,-1,!1)).$inspect(),old_name_str=this.$old_name().$children().$first().$to_s()["$[]"]($range(1,-1,!1)).$inspect(),this.$push("$alias_gvar(",new_name_str,", ",old_name_str,")")):$eqeqeq("dsym",$ret_or_1)||$eqeqeq("sym",$ret_or_1)?(this.$helper("alias"),this.$push("$alias("+this.$scope().$self()+", ",this.$expr(this.$new_name()),", ",this.$expr(this.$old_name()),")")):this.$error("Opal doesn't know yet how to alias with "+this.$new_name().$type())}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"BeginNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.level=$proto.returned_children=nil,self.$handle("begin"),$def(self,"$compile",(function(){return $truthy(this.$children()["$empty?"]())?this.$push("nil"):$truthy(this["$stmt?"]())?this.$compile_children(this.$children(),this.level):$truthy(this["$simple_children?"]())?(this.$compile_inline_children(this.$children(),this.level),$truthy($rb_gt(this.$children().$size(),1))?this.$wrap("(",")"):nil):$eqeq(this.$children().$size(),1)?this.$compile_inline_children(this.$returned_children(),this.level):(this.$compile_children(this.$returned_children(),this.level),$truthy(this.$scope().$parent().$await_encountered())?this.$wrap("(await (async function() {","})())"):this.$wrap("(function() {","})()"))}),0),$def(self,"$returned_children",(function(){var $a,$b,$ret_or_1,rest=nil,last_child=nil;return this.returned_children=$truthy($ret_or_1=this.returned_children)?$ret_or_1:($b=($b=($a=[].concat($to_a(this.$children()))).length-1)<0?0:$b,rest=$slice.call($a,0,$b),last_child=null==$a[$b]?nil:$a[$b],$truthy(last_child)?$rb_plus(rest,[this.$compiler().$returns(last_child)]):[this.$s("nil")])}),0),$def(self,"$compile_children",(function(children,level){return $send(children,"each",[],(function $$2(child){var self=null==$$2.$$s?this:$$2.$$s;return null==child&&(child=nil),self.$line(self.$process(child,level),self.$fragment(";",$hash2(["loc"],{loc:!1})))}),{$$arity:1,$$s:this})}),2),$const_set($nesting[0],"COMPLEX_CHILDREN",["while","while_post","until","until_post","js_return"].$freeze()),$def(self,"$simple_children?",(function(){return $send(this.$children(),"none?",[],(function(child){return null==child&&(child=nil),$$("COMPLEX_CHILDREN")["$include?"](child.$type())}),1)}),0),$def(self,"$compile_inline_children",(function(children,level){var processed_children;return processed_children=$send(children,"map",[],(function $$5(child){return null==child&&(child=nil),(null==$$5.$$s?this:$$5.$$s).$process(child,level)}),{$$arity:1,$$s:this}),$send($send(processed_children,"reject",[],"empty?".$to_proc()),"each_with_index",[],(function $$6(child,idx){var self=null==$$6.$$s?this:$$6.$$s;return null==child&&(child=nil),null==idx&&(idx=nil),$eqeq(idx,0)||self.$push(self.$fragment(", ",$hash2(["loc"],{loc:!1}))),self.$push(child)}),{$$arity:2,$$s:this})}),2)}($nesting[0],$$("ScopeNode"),$nesting),function($base,$super){return $klass($base,$super,"KwBeginNode").$handle("kwbegin")}($nesting[0],$$("BeginNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/yield"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def;return Opal.add_stubs("require,find_yielding_scope,uses_block!,block_name,block_name=,-,yields_single_arg?,children,push,expr,first,wrap,s,uses_splat?,scope,def?,parent,!,==,size,any?,type,handle,compile_call"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BaseYieldNode");$def(self,"$compile_call",(function(){var block_name,yielding_scope=nil,$writer=nil;return(yielding_scope=this.$find_yielding_scope())["$uses_block!"](),$truthy(yielding_scope.$block_name())||($send(yielding_scope,"block_name=",$to_a($writer=["$yield"])),$writer[$rb_minus($writer.length,1)]),block_name=yielding_scope.$block_name(),$truthy(this["$yields_single_arg?"](this.$children()))?(this.$push(this.$expr(this.$children().$first())),this.$wrap("Opal.yield1("+block_name+", ",")")):(this.$push(this.$expr($send(this,"s",["arglist"].concat($to_a(this.$children()))))),$truthy(this["$uses_splat?"](this.$children()))?this.$wrap("Opal.yieldX("+block_name+", ",")"):this.$wrap("Opal.yieldX("+block_name+", [","])"))}),0),$def(self,"$find_yielding_scope",(function(){var working=nil;for(working=this.$scope();$truthy(working)&&!$truthy(working.$block_name())&&!$truthy(working["$def?"]());)working=working.$parent();return working}),0),$def(self,"$yields_single_arg?",(function(children){var $ret_or_1;return $truthy($ret_or_1=this["$uses_splat?"](children)["$!"]())?children.$size()["$=="](1):$ret_or_1}),1),$def(self,"$uses_splat?",(function(children){return $send(children,"any?",[],(function(child){return null==child&&(child=nil),child.$type()["$=="]("splat")}),1)}),1)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"YieldNode");self.$handle("yield"),$def(self,"$compile",(function(){return this.$compile_call()}),0)}($nesting[0],$$("BaseYieldNode")),function($base,$super){var self=$klass($base,$super,"ReturnableYieldNode");return self.$handle("returnable_yield"),$def(self,"$compile",(function(){return this.$compile_call(),this.$wrap("return ",";")}),0)}($nesting[0],$$("BaseYieldNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/rescue"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$def=Opal.def,$range=Opal.range,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq;return Opal.add_stubs("require,handle,children,push,in_ensure,line,stmt,body_sexp,indent,has_rescue_else?,unshift,rescue_else_code,process,compiler,ensr_sexp,wrap_in_closure?,await_encountered,scope,wrap,returns,begn,ensr,s,recv?,expr?,rescue_else_sexp,stmt?,detect,[],!=,type,rescue_else_sexp=,-,handle_rescue_else_manually?,in_rescue,body_code,each_with_index,==,retry_id,body,nil?,!,in_ensure?,gen_retry_id,attr_reader,expr,klasses,lvar,updated,in_resbody,rescue_body,klasses_sexp,in_resbody?,error,current_rescue"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"EnsureNode");self.$handle("ensure"),self.$children("begn","ensr"),$def(self,"$compile",(function(){return this.$push("try {"),$send(this,"in_ensure",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return self.$line(self.$stmt(self.$body_sexp()))}),{$$arity:0,$$s:this}),this.$line("} finally {"),$send(this,"indent",[],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;return null==self.level&&(self.level=nil),$truthy(self["$has_rescue_else?"]())?(self.$unshift("var $no_errors = true; "),self.$line("var $rescue_else_result;"),self.$line("if ($no_errors) { "),$send(self,"indent",[],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return self.$line("$rescue_else_result = (function() {"),$send(self,"indent",[],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s;return self.$line(self.$stmt(self.$rescue_else_code()))}),{$$arity:0,$$s:self}),self.$line("})();")}),{$$arity:0,$$s:self}),self.$line("}"),self.$line(self.$compiler().$process(self.$ensr_sexp(),self.level)),self.$line("if ($no_errors) { return $rescue_else_result; }")):self.$line(self.$compiler().$process(self.$ensr_sexp(),self.level))}),{$$arity:0,$$s:this}),this.$line("}"),$truthy(this["$wrap_in_closure?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() { ","; })())"):this.$wrap("(function() { ","; })()"):nil}),0),$def(self,"$body_sexp",(function(){return $truthy(this["$wrap_in_closure?"]())?this.$compiler().$returns(this.$begn()):this.$begn()}),0),$def(self,"$ensr_sexp",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$ensr())?$ret_or_1:this.$s("nil")}),0),$def(self,"$wrap_in_closure?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this["$recv?"]())?$ret_or_2:this["$expr?"]())?$ret_or_1:this["$has_rescue_else?"]()}),0),$def(self,"$rescue_else_code",(function(){var rescue_else_code=nil;return rescue_else_code=this.$scope().$rescue_else_sexp(),$truthy(this["$stmt?"]())||(rescue_else_code=this.$compiler().$returns(rescue_else_code)),rescue_else_code}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"RescueNode");self.$$prototype.retry_id=nil,self.$handle("rescue"),self.$children("body"),$def(self,"$compile",(function(){var $writer;return $writer=[$send(this.$children()["$[]"]($range(1,-1,!1)),"detect",[],(function(sexp){var $ret_or_1;return null==sexp&&(sexp=nil),$truthy($ret_or_1=sexp)?sexp.$type()["$!="]("resbody"):$ret_or_1}),1)],$send(this.$scope(),"rescue_else_sexp=",$to_a($writer)),$rb_minus($writer.length,1),!1,$truthy(this["$handle_rescue_else_manually?"]())&&this.$line("var $no_errors = true;"),$send(this,"in_rescue",[this],(function $$7(){var self=null==$$7.$$s?this:$$7.$$s;return self.$push("try {"),$send(self,"indent",[],(function $$8(){var self=null==$$8.$$s?this:$$8.$$s;return self.$line(self.$stmt(self.$body_code()))}),{$$arity:0,$$s:self}),self.$line("} catch ($err) {"),$send(self,"indent",[],(function $$9(){var self=null==$$9.$$s?this:$$9.$$s;return $truthy(self["$has_rescue_else?"]())&&self.$line("$no_errors = false;"),$send(self.$children()["$[]"]($range(1,-1,!1)),"each_with_index",[],(function $$10(child,idx){var self=null==$$10.$$s?this:$$10.$$s;return null==self.level&&(self.level=nil),null==child&&(child=nil),null==idx&&(idx=nil),$truthy(child)&&$eqeq(child.$type(),"resbody")?(!0,$eqeq(idx,0)||self.$push(" else "),self.$line(self.$process(child,self.level))):nil}),{$$arity:2,$$s:self}),self.$push(" else { throw $err; }")}),{$$arity:0,$$s:self}),self.$line("}"),$truthy(self["$handle_rescue_else_manually?"]())&&(self.$push("finally {"),$send(self,"indent",[],(function $$11(){var self=null==$$11.$$s?this:$$11.$$s;return self.$line("if ($no_errors) { "),$send(self,"indent",[],(function $$12(){var self=null==$$12.$$s?this:$$12.$$s;return self.$line(self.$stmt(self.$rescue_else_code()))}),{$$arity:0,$$s:self}),self.$line("}")}),{$$arity:0,$$s:self}),self.$push("}")),$truthy(self.$retry_id())?self.$wrap(self.$retry_id()+": do { "," break; } while(1)"):nil}),{$$arity:0,$$s:this}),$truthy(this["$expr?"]())||$truthy(this["$recv?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() { ","})())"):this.$wrap("(function() { ","})()"):nil}),0),$def(self,"$body_code",(function(){var body_code=nil;return body_code=$truthy(this.$body()["$nil?"]())||$eqeq(this.$body().$type(),"resbody")?this.$s("nil"):this.$body(),$truthy(this["$stmt?"]())||(body_code=this.$compiler().$returns(body_code)),body_code}),0),$def(self,"$rescue_else_code",(function(){var rescue_else_code=nil;return rescue_else_code=this.$scope().$rescue_else_sexp(),$truthy(this["$stmt?"]())||(rescue_else_code=this.$compiler().$returns(rescue_else_code)),rescue_else_code}),0),$def(self,"$handle_rescue_else_manually?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$in_ensure?"]()["$!"]())?this["$has_rescue_else?"]():$ret_or_1}),0),$def(self,"$gen_retry_id",(function(){var $ret_or_1;return this.retry_id=$truthy($ret_or_1=this.retry_id)?$ret_or_1:this.$scope().$gen_retry_id()}),0),self.$attr_reader("retry_id")}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ResBodyNode");self.$handle("resbody"),self.$children("klasses_sexp","lvar","body"),$def(self,"$compile",(function(){return this.$push("if (Opal.rescue($err, ",this.$expr(this.$klasses()),")) {"),$send(this,"indent",[],(function $$14(){var self=null==$$14.$$s?this:$$14.$$s;return $truthy(self.$lvar())&&self.$push(self.$expr(self.$lvar().$updated(nil,[].concat($to_a(self.$lvar().$children())).concat([self.$s("js_tmp","$err")])))),self.$line("try {"),$send(self,"indent",[],(function $$15(){var self=null==$$15.$$s?this:$$15.$$s;return $send(self,"in_resbody",[],(function $$16(){var self=null==$$16.$$s?this:$$16.$$s;return self.$line(self.$stmt(self.$rescue_body()))}),{$$arity:0,$$s:self})}),{$$arity:0,$$s:self}),self.$line("} finally { Opal.pop_exception(); }")}),{$$arity:0,$$s:this}),this.$line("}")}),0),$def(self,"$klasses",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$klasses_sexp())?$ret_or_1:this.$s("array",this.$s("const",nil,"StandardError"))}),0),$def(self,"$rescue_body",(function(){var $ret_or_1,body_code=nil;return body_code=$truthy($ret_or_1=this.$body())?$ret_or_1:this.$s("nil"),$truthy(this["$stmt?"]())||(body_code=this.$compiler().$returns(body_code)),body_code}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"RetryNode");return self.$handle("retry"),$def(self,"$compile",(function(){return $truthy(this["$in_resbody?"]())||this.$error("Invalid retry"),this.$push("continue "+this.$scope().$current_rescue().$gen_retry_id())}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/super"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$slice=Opal.slice,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def,$to_ary=Opal.to_ary,$eqeq=Opal.eqeq,$not=Opal.not,$eqeqeq=Opal.eqeqeq,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt;return Opal.add_stubs("require,include?,type,s,helper,push,compile_receiver,compile_method_body,compile_method_name,compile_arguments,compile_block_pass,private,def?,scope,find_parent_def,to_s,mid,def_scope,identify!,self,method_id,def_scope_identity,defined_check_param,allow_stubs,super_chain,join,map,implicit_arguments_param,super_method_invocation,iter?,super_block_invocation,raise,handle,wrap,uses_block!,compile_using_send,==,iter,block_name,implicit_arglist,!,<<,new,each,children,original_args,[],meta,===,+,[]=,-,>,empty?"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BaseSuperNode"),$proto=self.$$prototype;$proto.sexp=$proto.def_scope=nil,$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$b,$c,$yield=$$initialize.$$p||nil,self=this,args=nil,rest=nil,last_child=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),args=[].concat($to_a(self.sexp)),$c=($c=($b=[].concat($to_a(args))).length-1)<0?0:$c,rest=$slice.call($b,0,$c),last_child=null==$b[$c]?nil:$b[$c],$truthy(last_child)&&$truthy(["iter","block_pass"]["$include?"](last_child.$type()))?(self.iter=last_child,args=rest):self.iter=self.$s("js_tmp","null"),self.arglist=$send(self,"s",["arglist"].concat($to_a(args))),self.recvr=self.$s("self")}),-1),$def(self,"$compile_using_send",(function(){return this.$helper("send2"),this.$push("$send2("),this.$compile_receiver(),this.$compile_method_body(),this.$compile_method_name(),this.$compile_arguments(),this.$compile_block_pass(),this.$push(")")}),0),self.$private(),$def(self,"$def_scope",(function(){var $ret_or_1;return this.def_scope=$truthy($ret_or_1=this.def_scope)?$ret_or_1:$truthy(this.$scope()["$def?"]())?this.$scope():this.$scope().$find_parent_def()}),0),$def(self,"$defined_check_param",(function(){return"false"}),0),$def(self,"$implicit_arguments_param",(function(){return"false"}),0),$def(self,"$method_id",(function(){return this.$def_scope().$mid().$to_s()}),0),$def(self,"$def_scope_identity",(function(){return this.$def_scope()["$identify!"](this.$def_scope().$mid())}),0),$def(self,"$allow_stubs",(function(){return"true"}),0),$def(self,"$super_method_invocation",(function(){return this.$helper("find_super"),"$find_super("+this.$scope().$self()+", '"+this.$method_id()+"', "+this.$def_scope_identity()+", "+this.$defined_check_param()+", "+this.$allow_stubs()+")"}),0),$def(self,"$super_block_invocation",(function(){var $a,$b,chain,cur_defn,mid,trys;return this.$helper("find_block_super"),$b=this.$scope().$super_chain(),chain=null==($a=$to_ary($b))[0]?nil:$a[0],cur_defn=null==$a[1]?nil:$a[1],mid=null==$a[2]?nil:$a[2],trys=$send(chain,"map",[],(function(c){return null==c&&(c=nil),c+".$$def"}),1).$join(" || "),"$find_block_super("+this.$scope().$self()+", "+mid+", ("+trys+" || "+cur_defn+"), "+this.$defined_check_param()+", "+this.$implicit_arguments_param()+")"}),0),$def(self,"$compile_method_body",(function(){return this.$push(", "),$truthy(this.$scope()["$def?"]())?this.$push(this.$super_method_invocation()):$truthy(this.$scope()["$iter?"]())?this.$push(this.$super_block_invocation()):this.$raise("super must be called from method body or block")}),0),$def(self,"$compile_method_name",(function(){var $a,$b,mid=nil;return $truthy(this.$scope()["$def?"]())?this.$push(", '"+this.$method_id()+"'"):$truthy(this.$scope()["$iter?"]())?($b=this.$scope().$super_chain(),null==($a=$to_ary($b))[0]?nil:$a[0],null==$a[1]?nil:$a[1],mid=null==$a[2]?nil:$a[2],this.$push(", "+mid)):nil}),0)}($nesting[0],$$("CallNode")),function($base,$super){var self=$klass($base,$super,"DefinedSuperNode");self.$handle("defined_super"),$def(self,"$allow_stubs",(function(){return"false"}),0),$def(self,"$defined_check_param",(function(){return"true"}),0),$def(self,"$compile",(function(){return this.$compile_receiver(),this.$compile_method_body(),this.$wrap("((",') != null ? "super" : nil)')}),0)}($nesting[0],$$("BaseSuperNode")),function($base,$super){var self=$klass($base,$super,"SuperNode");self.$handle("super"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$truthy(self.$scope()["$def?"]())?self.$scope()["$uses_block!"]():nil}),-1),$def(self,"$compile",(function(){return this.$compile_using_send()}),0)}($nesting[0],$$("BaseSuperNode")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"ZsuperNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$handle("zsuper"),$def(self,"$implicit_arguments_param",(function(){return"true"}),0),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this,$ret_or_1=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$eqeq(self.$iter().$type(),"iter")?nil:(self.$scope()["$uses_block!"](),self.iter=self.$s("js_tmp",$truthy($ret_or_1=self.$scope().$block_name())?$ret_or_1:"$yield"))}),-1),$def(self,"$compile",(function(){var implicit_args=nil,block_pass=nil;return $truthy(this.$def_scope())&&(implicit_args=this.$implicit_arglist(),$truthy(this.$block_name())&&$not(this.$iter())&&(block_pass=this.$s("block_pass",this.$s("lvar",this.$block_name())),implicit_args["$<<"](block_pass)),this.arglist=$send(this,"s",["arglist"].concat($to_a(implicit_args)))),this.$compile_using_send()}),0),$def(self,"$implicit_arglist",(function(){var args=nil,kwargs=nil,same_arg_counter=nil;return args=[],kwargs=[],same_arg_counter=$$("Hash").$new(0),$send(this.$def_scope().$original_args().$children(),"each",[],(function $$2(sexp){var $ret_or_1,self=null==$$2.$$s?this:$$2.$$s,arg_name=nil,arg_node=nil,$writer=nil;return null==sexp&&(sexp=nil),arg_name=sexp.$meta()["$[]"]("arg_name"),$eqeqeq("arg",$ret_or_1=sexp.$type())||$eqeqeq("optarg",$ret_or_1)?(arg_node=self.$s("lvar",arg_name),$eqeq(arg_name["$[]"](0),"_")&&($writer=[arg_name,$rb_plus(same_arg_counter["$[]"](arg_name),1)],$send(same_arg_counter,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy($rb_gt(same_arg_counter["$[]"](arg_name),1))&&(arg_node=self.$s("js_tmp",arg_name+"_$"+same_arg_counter["$[]"](arg_name)))),args["$<<"](arg_node)):$eqeqeq("restarg",$ret_or_1)?(arg_node=$truthy(arg_name)?self.$s("lvar",arg_name):self.$s("js_tmp","$rest_arg"),args["$<<"](self.$s("splat",arg_node))):$eqeqeq("kwarg",$ret_or_1)||$eqeqeq("kwoptarg",$ret_or_1)?kwargs["$<<"](self.$s("pair",self.$s("sym",arg_name),self.$s("lvar",arg_name))):$eqeqeq("kwrestarg",$ret_or_1)?(arg_node=$truthy(arg_name)?self.$s("lvar",arg_name):self.$s("js_tmp","$kw_rest_arg"),kwargs["$<<"](self.$s("kwsplat",arg_node))):nil}),{$$arity:1,$$s:this}),$truthy(kwargs["$empty?"]())||args["$<<"]($send(this,"s",["hash"].concat($to_a(kwargs)))),args}),0),$def(self,"$block_name",(function(){var $ret_or_1;return $eqeqeq($$$($$$($$("Opal"),"Nodes"),"IterNode"),$ret_or_1=this.$def_scope())||$eqeqeq($$$($$$($$("Opal"),"Nodes"),"DefNode"),$ret_or_1)?this.$def_scope().$block_name():this.$raise("Don't know what to do with super in the scope "+this.$def_scope())}),0)}($nesting[0],$$("SuperNode"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/version"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set;return function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return $const_set($nesting[0],"VERSION","1.4.0")}($nesting[0],$nesting)},Opal.modules["opal/nodes/top"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("require,handle,children,top_scope=,compiler,-,push,version_comment,in_scope,==,body,s,line,use_strict?,stmt,stmts,is_a?,eval?,add_temp,add_used_helpers,to_vars,scope,compile_method_stubs,compile_irb_vars,compile_end_construct,opening,closing,await_encountered,requirable?,unshift,inspect,module_name,file,esm?,returns,irb?,each,to_a,helpers,method_missing?,method_calls,join,map,to_proc,empty?,eof_content"),self.$require("pathname"),self.$require("opal/version"),self.$require("opal/nodes/scope"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"TopNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$handle("top"),self.$children("body"),$def(self,"$compile",(function(){var $writer;return $writer=[this],$send(this.$compiler(),"top_scope=",$to_a($writer)),$rb_minus($writer.length,1),this.$push(this.$version_comment()),$send(this,"in_scope",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s,body_code=nil;return null==self.define_nesting&&(self.define_nesting=nil),null==self.define_self&&(self.define_self=nil),null==self.define_relative_access&&(self.define_relative_access=nil),null==self.define_absolute_const&&(self.define_absolute_const=nil),$eqeq(self.$body(),self.$s("nil"))?self.$line("return Opal.nil;"):($truthy(self.$compiler()["$use_strict?"]())&&self.$line('"use strict";'),body_code=self.$stmt(self.$stmts()),$truthy(body_code["$is_a?"]($$("Array")))||(body_code=[body_code]),$truthy(self.$compiler()["$eval?"]())?$truthy(self.define_nesting)&&self.$add_temp("$nesting = self.$$is_a_module ? [self] : [self.$$class]"):($truthy(self.define_self)&&self.$add_temp("self = Opal.top"),$truthy(self.define_nesting)&&self.$add_temp("$nesting = []")),$truthy(self.define_relative_access)&&self.$add_temp("$$ = Opal.$r($nesting)"),self.$add_temp("nil = Opal.nil"),$truthy(self.define_absolute_const)&&self.$add_temp("$$$ = Opal.$$$"),self.$add_used_helpers(),self.$line(self.$scope().$to_vars()),self.$compile_method_stubs(),self.$compile_irb_vars(),self.$compile_end_construct(),self.$line(body_code))}),{$$arity:0,$$s:this}),this.$opening(),this.$closing()}),0),$def(self,"$opening",(function(){var async_prefix=nil;return $truthy(this.$await_encountered())&&(async_prefix="async "),$truthy(this.$compiler()["$requirable?"]())?this.$unshift("Opal.modules["+$$$($$("Opal"),"Compiler").$module_name(this.$compiler().$file()).$inspect()+"] = "+async_prefix+"function(Opal) {"):$truthy(this.$compiler()["$eval?"]())?this.$unshift("("+async_prefix+"function(Opal, self) {"):$truthy(this.$compiler()["$esm?"]())?this.$unshift("export default Opal.queue("+async_prefix+"function(Opal) {"):this.$unshift("Opal.queue("+async_prefix+"function(Opal) {")}),0),$def(self,"$closing",(function(){return $truthy(this.$compiler()["$requirable?"]())?this.$line("};\n"):$truthy(this.$compiler()["$eval?"]())?this.$line("})(Opal, self);"):this.$line("});\n")}),0),$def(self,"$stmts",(function(){return this.$compiler().$returns(this.$body())}),0),$def(self,"$absolute_const",(function(){return this.define_absolute_const=!0,"$$$"}),0),$def(self,"$compile_irb_vars",(function(){return $truthy(this.$compiler()["$irb?"]())?this.$line("if (!Opal.irb_vars) { Opal.irb_vars = {}; }"):nil}),0),$def(self,"$add_used_helpers",(function(){return $send(this.$compiler().$helpers().$to_a(),"each",[],(function $$2(h){return null==h&&(h=nil),(null==$$2.$$s?this:$$2.$$s).$add_temp("$"+h+" = Opal."+h)}),{$$arity:1,$$s:this})}),0),$def(self,"$compile_method_stubs",(function(){var calls=nil,stubs=nil;return $truthy(this.$compiler()["$method_missing?"]())?(calls=this.$compiler().$method_calls(),stubs=$send(calls.$to_a(),"map",[],"to_s".$to_proc()).$join(","),$truthy(stubs["$empty?"]())?nil:this.$line("Opal.add_stubs('"+stubs+"');")):nil}),0),$def(self,"$compile_end_construct",(function(){var content=nil;return $truthy(content=this.$compiler().$eof_content())?(this.$line("var $__END__ = Opal.Object.$new();"),this.$line("$__END__.$read = function() { return "+content.$inspect()+"; };")):nil}),0),$def(self,"$version_comment",(function(){return"/* Generated by Opal "+$$$($$("Opal"),"VERSION")+" */"}),0)}($nesting[0],$$("ScopeNode"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/while"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def;return Opal.add_stubs("require,handle,children,js_truthy,test,with_temp,in_while,compiler,wrap_in_closure?,[]=,while_loop,-,indent,stmt,body,uses_redo?,compile_with_redo,compile_without_redo,await_encountered,scope,wrap,private,push,compile_while,while_open,while_close,line,[],expr?,recv?"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"WhileNode");self.$handle("while"),self.$children("test","body"),$def(self,"$compile",(function(){var test_code;return test_code=this.$js_truthy(this.$test()),$send(this,"with_temp",[],(function $$1(redo_var){var self=null==$$1.$$s?this:$$1.$$s;return null==redo_var&&(redo_var=nil),$send(self.$compiler(),"in_while",[],(function $$2(){var body_code,self=null==$$2.$$s?this:$$2.$$s,$writer=nil;return $truthy(self["$wrap_in_closure?"]())&&($writer=["closure",!0],$send(self.$while_loop(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=["redo_var",redo_var],$send(self.$while_loop(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],body_code=$send(self,"indent",[],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return self.$stmt(self.$body())}),{$$arity:0,$$s:self}),$truthy(self["$uses_redo?"]())?self.$compile_with_redo(test_code,body_code,redo_var):self.$compile_without_redo(test_code,body_code)}),{$$arity:0,$$s:self})}),{$$arity:1,$$s:this}),$truthy(this["$wrap_in_closure?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() {","; return nil; })())"):this.$wrap("(function() {","; return nil; })()"):nil}),0),self.$private(),$def(self,"$compile_with_redo",(function(test_code,body_code,redo_var){return this.$push(redo_var+" = false; "),this.$compile_while([redo_var," || ",test_code],[redo_var+" = false;",body_code])}),3),$def(self,"$compile_without_redo",(function(test_code,body_code){return this.$compile_while([test_code],[body_code])}),2),$def(self,"$compile_while",(function(test_code,body_code){return $send(this,"push",[this.$while_open()].concat($to_a(test_code)).concat([this.$while_close()])),$send(this,"indent",[],(function $$4(){return $send(null==$$4.$$s?this:$$4.$$s,"line",$to_a(body_code))}),{$$arity:0,$$s:this}),this.$line("}")}),2),$def(self,"$while_open",(function(){return"while ("}),0),$def(self,"$while_close",(function(){return") {"}),0),$def(self,"$uses_redo?",(function(){return this.$while_loop()["$[]"]("use_redo")}),0),$def(self,"$wrap_in_closure?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$expr?"]())?$ret_or_1:this["$recv?"]()}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"UntilNode");self.$handle("until"),self.$private(),$def(self,"$while_open",(function(){return"while (!("}),0),$def(self,"$while_close",(function(){return")) {"}),0)}($nesting[0],$$("WhileNode")),function($base,$super){var self=$klass($base,$super,"WhilePostNode");self.$handle("while_post"),self.$private(),$def(self,"$compile_while",(function(test_code,body_code){return this.$push("do {"),$send(this,"indent",[],(function $$7(){return $send(null==$$7.$$s?this:$$7.$$s,"line",$to_a(body_code))}),{$$arity:0,$$s:this}),$send(this,"line",["} ",this.$while_open()].concat($to_a(test_code)).concat([this.$while_close()]))}),2),$def(self,"$while_close",(function(){return");"}),0)}($nesting[0],$$("WhileNode")),function($base,$super){var self=$klass($base,$super,"UntilPostNode");return self.$handle("until_post"),self.$private(),$def(self,"$while_open",(function(){return"while(!("}),0),$def(self,"$while_close",(function(){return"));"}),0)}($nesting[0],$$("WhilePostNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/hash"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$def=Opal.def,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$to_ary=Opal.to_ary,$hash2=Opal.hash2,$rb_minus=Opal.rb_minus;return Opal.add_stubs("require,handle,attr_accessor,each,children,===,type,<<,[],all?,keys,include?,has_kwsplat,compile_merge,simple_keys?,compile_hash2,compile_hash,helper,==,empty?,expr,s,each_with_index,push,wrap,times,size,inspect,to_s,values,[]=,-,join,value"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"HashNode");self.$handle("hash"),self.$attr_accessor("has_kwsplat","keys","values"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.has_kwsplat=!1,self.keys=[],self.values=[],$send(self.$children(),"each",[],(function $$1(child){var $ret_or_1,self=null==$$1.$$s?this:$$1.$$s;return null==self.keys&&(self.keys=nil),null==self.values&&(self.values=nil),null==child&&(child=nil),$eqeqeq("kwsplat",$ret_or_1=child.$type())?self.has_kwsplat=!0:$eqeqeq("pair",$ret_or_1)?(self.keys["$<<"](child.$children()["$[]"](0)),self.values["$<<"](child.$children()["$[]"](1))):nil}),{$$arity:1,$$s:self})}),-1),$def(self,"$simple_keys?",(function(){return $send(this.$keys(),"all?",[],(function(key){return null==key&&(key=nil),["sym","str"]["$include?"](key.$type())}),1)}),0),$def(self,"$compile",(function(){return $truthy(this.$has_kwsplat())?this.$compile_merge():$truthy(this["$simple_keys?"]())?this.$compile_hash2():this.$compile_hash()}),0),$def(self,"$compile_merge",(function(){var $a,result=nil,seq=nil;return this.$helper("hash"),result=($a=[[],[]])[0],seq=$a[1],$send(this.$children(),"each",[],(function $$4(child){var self=null==$$4.$$s?this:$$4.$$s;return null==child&&(child=nil),$eqeq(child.$type(),"kwsplat")?($truthy(seq["$empty?"]())||result["$<<"](self.$expr($send(self,"s",["hash"].concat($to_a(seq))))),result["$<<"](self.$expr(child)),seq=[]):seq["$<<"](child)}),{$$arity:1,$$s:this}),$truthy(seq["$empty?"]())||result["$<<"](this.$expr($send(this,"s",["hash"].concat($to_a(seq))))),$send(result,"each_with_index",[],(function $$5(fragment,idx){var self=null==$$5.$$s?this:$$5.$$s;return null==fragment&&(fragment=nil),null==idx&&(idx=nil),$eqeq(idx,0)?self.$push(fragment):self.$push(".$merge(",fragment,")")}),{$$arity:2,$$s:this})}),0),$def(self,"$compile_hash",(function(){return this.$helper("hash"),$send(this.$children(),"each_with_index",[],(function $$6(pair,idx){var $a,$b,key,value,self=null==$$6.$$s?this:$$6.$$s;return null==pair&&(pair=nil),null==idx&&(idx=nil),$b=pair.$children(),key=null==($a=$to_ary($b))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],$eqeq(idx,0)||self.$push(", "),self.$push(self.$expr(key),", ",self.$expr(value))}),{$$arity:2,$$s:this}),this.$wrap("$hash(",")")}),0),$def(self,"$compile_hash2",(function(){var $a,hash_obj=nil,hash_keys=nil;return $a=[$hash2([],{}),[]],hash_obj=$a[0],hash_keys=$a[1],this.$helper("hash2"),$send(this.$keys().$size(),"times",[],(function $$7(idx){var key,$writer,self=null==$$7.$$s?this:$$7.$$s;return null==idx&&(idx=nil),key=self.$keys()["$[]"](idx).$children()["$[]"](0).$to_s().$inspect(),$truthy(hash_obj["$include?"](key))||hash_keys["$<<"](key),$writer=[key,self.$expr(self.$values()["$[]"](idx))],$send(hash_obj,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),$send(hash_keys,"each_with_index",[],(function $$8(key,idx){var self=null==$$8.$$s?this:$$8.$$s;return null==key&&(key=nil),null==idx&&(idx=nil),$eqeq(idx,0)||self.$push(", "),self.$push(key+": "),self.$push(hash_obj["$[]"](key))}),{$$arity:2,$$s:this}),this.$wrap("$hash2(["+hash_keys.$join(", ")+"], {","})")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"KwSplatNode");return self.$handle("kwsplat"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("Opal.to_hash(",this.$expr(this.$value()),")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/array"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def;return Opal.add_stubs("require,handle,empty?,children,push,each,==,type,expr,<<,fragment"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArrayNode");return self.$handle("array"),$def(self,"$compile",(function(){var $a,code=nil,work=nil,join=nil;return $truthy(this.$children()["$empty?"]())?this.$push("[]"):(code=($a=[[],[]])[0],work=$a[1],$send(this.$children(),"each",[],(function $$1(child){var splat,part,self=null==$$1.$$s?this:$$1.$$s;return null==child&&(child=nil),splat=child.$type()["$=="]("splat"),part=self.$expr(child),$truthy(splat)?($truthy(work["$empty?"]())?$truthy(code["$empty?"]())?code["$<<"](self.$fragment("[].concat("))["$<<"](part)["$<<"](self.$fragment(")")):code["$<<"](self.$fragment(".concat("))["$<<"](part)["$<<"](self.$fragment(")")):($truthy(code["$empty?"]())?code["$<<"](self.$fragment("["))["$<<"](work)["$<<"](self.$fragment("]")):code["$<<"](self.$fragment(".concat(["))["$<<"](work)["$<<"](self.$fragment("])")),code["$<<"](self.$fragment(".concat("))["$<<"](part)["$<<"](self.$fragment(")"))),work=[]):($truthy(work["$empty?"]())||work["$<<"](self.$fragment(", ")),work["$<<"](part))}),{$$arity:1,$$s:this}),$truthy(work["$empty?"]())||(join=[this.$fragment("["),work,this.$fragment("]")],$truthy(code["$empty?"]())?code=join:code.$push([this.$fragment(".concat("),join,this.$fragment(")")])),this.$push(code))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/defined"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeqeq=Opal.eqeqeq,$eqeq=Opal.eqeq,$def=Opal.def,$truthy=Opal.truthy,$to_a=Opal.to_a,$slice=Opal.slice,$send=Opal.send,$range=Opal.range;return Opal.add_stubs("require,handle,children,===,type,value,push,inspect,to_s,==,[],size,compile_defined_send,wrap,compile_defined_ivar,compile_defined_super,compile_defined_yield,compile_defined_xstr,compile_defined_const,compile_defined_cvar,compile_defined_gvar,compile_defined_back_ref,compile_defined_nth_ref,compile_defined_array,respond_to?,__send__,new_temp,scope,expr,wrap_with_try_catch,mid_to_jsid,compile_defined,compile_send_recv_doesnt_raise,self,each,s,uses_block!,block_name,find_parent_def,nil?,relative_access,absolute_const,top_scope,class_variable_owner,helper,include?,each_with_index"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DefinedNode");return self.$handle("defined?"),self.$children("value"),$def(self,"$compile",(function(){var $ret_or_1;return $eqeqeq("self",$ret_or_1=this.$value().$type())||$eqeqeq("nil",$ret_or_1)||$eqeqeq("false",$ret_or_1)||$eqeqeq("true",$ret_or_1)?this.$push(this.$value().$type().$to_s().$inspect()):$eqeqeq("lvasgn",$ret_or_1)||$eqeqeq("ivasgn",$ret_or_1)||$eqeqeq("gvasgn",$ret_or_1)||$eqeqeq("cvasgn",$ret_or_1)||$eqeqeq("casgn",$ret_or_1)||$eqeqeq("op_asgn",$ret_or_1)||$eqeqeq("or_asgn",$ret_or_1)||$eqeqeq("and_asgn",$ret_or_1)?this.$push("'assignment'"):$eqeqeq("lvar",$ret_or_1)?this.$push("'local-variable'"):$eqeqeq("begin",$ret_or_1)?$eqeq(this.$value().$children().$size(),1)&&$eqeq(this.$value().$children()["$[]"](0).$type(),"masgn")?this.$push("'assignment'"):this.$push("'expression'"):$eqeqeq("send",$ret_or_1)?(this.$compile_defined_send(this.$value()),this.$wrap("("," ? 'method' : nil)")):$eqeqeq("ivar",$ret_or_1)?(this.$compile_defined_ivar(this.$value()),this.$wrap("("," ? 'instance-variable' : nil)")):$eqeqeq("zsuper",$ret_or_1)||$eqeqeq("super",$ret_or_1)?this.$compile_defined_super():$eqeqeq("yield",$ret_or_1)?(this.$compile_defined_yield(),this.$wrap("("," ? 'yield' : nil)")):$eqeqeq("xstr",$ret_or_1)?this.$compile_defined_xstr(this.$value()):$eqeqeq("const",$ret_or_1)?(this.$compile_defined_const(this.$value()),this.$wrap("("," ? 'constant' : nil)")):$eqeqeq("cvar",$ret_or_1)?(this.$compile_defined_cvar(this.$value()),this.$wrap("("," ? 'class variable' : nil)")):$eqeqeq("gvar",$ret_or_1)?(this.$compile_defined_gvar(this.$value()),this.$wrap("("," ? 'global-variable' : nil)")):$eqeqeq("back_ref",$ret_or_1)?(this.$compile_defined_back_ref(),this.$wrap("("," ? 'global-variable' : nil)")):$eqeqeq("nth_ref",$ret_or_1)?(this.$compile_defined_nth_ref(),this.$wrap("("," ? 'global-variable' : nil)")):$eqeqeq("array",$ret_or_1)?(this.$compile_defined_array(this.$value()),this.$wrap("("," ? 'expression' : nil)")):this.$push("'expression'")}),0),$def(self,"$compile_defined",(function(node){var type,node_tmp=nil;return type=node.$type(),$truthy(this["$respond_to?"]("compile_defined_"+type))?this.$__send__("compile_defined_"+type,node):(node_tmp=this.$scope().$new_temp(),this.$push("("+node_tmp+" = ",this.$expr(node),")"),node_tmp)}),1),$def(self,"$wrap_with_try_catch",(function(code){var returning_tmp;return returning_tmp=this.$scope().$new_temp(),this.$push("("+returning_tmp+" = (function() { try {"),this.$push(" return "+code+";"),this.$push("} catch ($err) {"),this.$push(" if (Opal.rescue($err, [Opal.Exception])) {"),this.$push(" try {"),this.$push(" return false;"),this.$push(" } finally { Opal.pop_exception() }"),this.$push(" } else { throw $err; }"),this.$push("}})())"),returning_tmp}),1),$def(self,"$compile_send_recv_doesnt_raise",(function(recv_code){return this.$wrap_with_try_catch(recv_code)}),1),$def(self,"$compile_defined_send",(function(node){var $a,args,mid,recv_value_tmp,meth_tmp,recv=nil,method_name=nil,recv_code=nil,recv_tmp=nil;return recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],args=$slice.call($a,2),mid=this.$mid_to_jsid(method_name.$to_s()),$truthy(recv)?(recv_code=this.$compile_defined(recv),this.$push(" && "),$eqeq(recv.$type(),"send")&&(recv_code=this.$compile_send_recv_doesnt_raise(recv_code),this.$push(" && ")),recv_tmp=this.$scope().$new_temp(),this.$push("("+recv_tmp+" = ",recv_code,", "+recv_tmp+") && ")):recv_tmp=this.$scope().$self(),recv_value_tmp=this.$scope().$new_temp(),this.$push("("+recv_value_tmp+" = "+recv_tmp+") && "),meth_tmp=this.$scope().$new_temp(),this.$push("((("+meth_tmp+" = "+recv_value_tmp+mid+") && !"+meth_tmp+".$$stub)"),this.$push(" || "+recv_value_tmp+"['$respond_to_missing?']('"+method_name+"'))"),$send(args,"each",[],(function $$1(arg){var self=null==$$1.$$s?this:$$1.$$s;return null==arg&&(arg=nil),$eqeqeq("block_pass",arg.$type())?nil:(self.$push(" && "),self.$compile_defined(arg))}),{$$arity:1,$$s:this}),this.$wrap("(",")"),meth_tmp+"()"}),1),$def(self,"$compile_defined_ivar",(function(node){var name,tmp;return name=node.$children()["$[]"](0).$to_s()["$[]"]($range(1,-1,!1)),tmp=this.$scope().$new_temp(),this.$push("("+tmp+" = "+this.$scope().$self()+"['"+name+"'], "+tmp+" != null && "+tmp+" !== nil)"),tmp}),1),$def(self,"$compile_defined_super",(function(){return this.$push(this.$expr(this.$s("defined_super")))}),0),$def(self,"$compile_defined_yield",(function(){var block_name,$ret_or_1;return this.$scope()["$uses_block!"](),block_name=$truthy($ret_or_1=this.$scope().$block_name())?$ret_or_1:this.$scope().$find_parent_def().$block_name(),this.$push("("+block_name+" != null && "+block_name+" !== nil)"),block_name}),0),$def(self,"$compile_defined_xstr",(function(node){return this.$push("(typeof(",this.$expr(node),') !== "undefined")')}),1),$def(self,"$compile_defined_const",(function(node){var $a,const_name,const_tmp,const_scope=nil,const_scope_tmp=nil;return const_scope=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],const_name=null==$a[1]?nil:$a[1],const_tmp=this.$scope().$new_temp(),$truthy(const_scope["$nil?"]())?this.$push("("+const_tmp+" = "+this.$scope().$relative_access()+"('"+const_name+"', 'skip_raise'))"):$eqeq(const_scope,this.$s("cbase"))?this.$push("("+const_tmp+" = "+this.$top_scope().$absolute_const()+"('::', '"+const_name+"', 'skip_raise'))"):(const_scope_tmp=this.$compile_defined(const_scope),this.$push(" && ("+const_tmp+" = "+this.$top_scope().$absolute_const()+"("+const_scope_tmp+", '"+const_name+"', 'skip_raise'))")),const_tmp}),1),$def(self,"$compile_defined_cvar",(function(node){var $a,cvar_name,cvar_tmp;return cvar_name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],cvar_tmp=this.$scope().$new_temp(),this.$push("("+cvar_tmp+" = "+this.$class_variable_owner()+".$$cvars['"+cvar_name+"'], "+cvar_tmp+" != null)"),cvar_tmp}),1),$def(self,"$compile_defined_gvar",(function(node){var gvar_temp,name=nil;return this.$helper("gvars"),name=node.$children()["$[]"](0).$to_s()["$[]"]($range(1,-1,!1)),gvar_temp=this.$scope().$new_temp(),$truthy(["~","!"]["$include?"](name))?this.$push("("+gvar_temp+" = ",this.$expr(node)," || true)"):this.$push("("+gvar_temp+" = $gvars["+name.$inspect()+"], "+gvar_temp+" != null)"),gvar_temp}),1),$def(self,"$compile_defined_back_ref",(function(){var back_ref_temp;return this.$helper("gvars"),back_ref_temp=this.$scope().$new_temp(),this.$push("("+back_ref_temp+" = $gvars['~'], "+back_ref_temp+" != null && "+back_ref_temp+" !== nil)"),back_ref_temp}),0),$def(self,"$compile_defined_nth_ref",(function(){var nth_ref_tmp;return this.$helper("gvars"),nth_ref_tmp=this.$scope().$new_temp(),this.$push("("+nth_ref_tmp+" = $gvars['~'], "+nth_ref_tmp+" != null && "+nth_ref_tmp+" != nil)"),nth_ref_tmp}),0),$def(self,"$compile_defined_array",(function(node){return $send(node.$children(),"each_with_index",[],(function $$2(child,idx){var self=null==$$2.$$s?this:$$2.$$s;return null==child&&(child=nil),null==idx&&(idx=nil),$eqeq(idx,0)||self.$push(" && "),self.$compile_defined(child)}),{$$arity:2,$$s:this})}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/masgn"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def,$rb_ge=Opal.rb_ge,$not=Opal.not,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,freeze,handle,children,new_temp,scope,==,type,rhs,push,expr,any?,size,compile_masgn,lhs,helper,queue_temp,take_while,!=,drop,each_with_index,compile_assignment,empty?,shift,[],<<,dup,s,>=,!,updated,include?,+,last,raise"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"MassAssignNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"SIMPLE_ASSIGNMENT",["lvasgn","ivasgn","lvar","gvasgn","cdecl","casgn"].$freeze()),self.$handle("masgn"),self.$children("lhs","rhs"),$def(self,"$compile",(function(){var array,rhs_len=nil,retval=nil;return array=this.$scope().$new_temp(),$eqeq(this.$rhs().$type(),"array")?(this.$push(array+" = ",this.$expr(this.$rhs())),rhs_len=$truthy($send(this.$rhs().$children(),"any?",[],(function(c){return null==c&&(c=nil),c.$type()["$=="]("splat")}),1))?nil:this.$rhs().$children().$size(),this.$compile_masgn(this.$lhs().$children(),array,rhs_len),this.$push(", "+array)):(this.$helper("to_ary"),retval=this.$scope().$new_temp(),this.$push(retval+" = ",this.$expr(this.$rhs())),this.$push(", "+array+" = $to_ary("+retval+")"),this.$compile_masgn(this.$lhs().$children(),array),this.$push(", "+retval),this.$scope().$queue_temp(retval)),this.$scope().$queue_temp(array)}),0),$def(self,"$compile_masgn",(function(lhs_items,array,len){var pre_splat=nil,post_splat=nil,splat=nil,part=nil,tmp=nil;return null==len&&(len=nil),pre_splat=$send(lhs_items,"take_while",[],(function(child){return null==child&&(child=nil),child.$type()["$!="]("splat")}),1),post_splat=lhs_items.$drop(pre_splat.$size()),$send(pre_splat,"each_with_index",[],(function $$3(child,idx){return null==child&&(child=nil),null==idx&&(idx=nil),(null==$$3.$$s?this:$$3.$$s).$compile_assignment(child,array,idx,len)}),{$$arity:2,$$s:this}),$truthy(post_splat["$empty?"]())?nil:(splat=post_splat.$shift(),$truthy(post_splat["$empty?"]())?$truthy(part=splat.$children()["$[]"](0))?(this.$helper("slice"),part=part.$dup()["$<<"](this.$s("js_tmp","$slice.call("+array+", "+pre_splat.$size()+")")),this.$push(", "),this.$push(this.$expr(part))):nil:(tmp=this.$scope().$new_temp(),this.$push(", "+tmp+" = "+array+".length - "+post_splat.$size()),this.$push(", "+tmp+" = ("+tmp+" < "+pre_splat.$size()+") ? "+pre_splat.$size()+" : "+tmp),$truthy(part=splat.$children()["$[]"](0))&&(this.$helper("slice"),part=part.$dup()["$<<"](this.$s("js_tmp","$slice.call("+array+", "+pre_splat.$size()+", "+tmp+")")),this.$push(", "),this.$push(this.$expr(part))),$send(post_splat,"each_with_index",[],(function $$4(child,idx){var self=null==$$4.$$s?this:$$4.$$s;return null==child&&(child=nil),null==idx&&(idx=nil),$eqeq(idx,0)?self.$compile_assignment(child,array,tmp):self.$compile_assignment(child,array,tmp+" + "+idx)}),{$$arity:2,$$s:this}),this.$scope().$queue_temp(tmp)))}),-3),$def(self,"$compile_assignment",(function(child,array,idx,len){var assign=nil,part=nil,tmp=nil;if(null==len&&(len=nil),assign=$not(len)||$truthy($rb_ge(idx,len))?this.$s("js_tmp","("+array+"["+idx+"] == null ? nil : "+array+"["+idx+"])"):this.$s("js_tmp",array+"["+idx+"]"),part=child.$updated(),$truthy($$("SIMPLE_ASSIGNMENT")["$include?"](child.$type())))part=part.$updated(nil,$rb_plus(part.$children(),[assign]));else if($eqeq(child.$type(),"send"))part=part.$updated(nil,$rb_plus(part.$children(),[assign]));else if($eqeq(child.$type(),"attrasgn"))part.$last()["$<<"](assign);else{if($eqeq(child.$type(),"mlhs"))return this.$helper("to_ary"),tmp=this.$scope().$new_temp(),this.$push(", ("+tmp+" = $to_ary("+assign.$children()["$[]"](0)+")"),this.$compile_masgn(child.$children(),tmp),this.$push(")"),this.$scope().$queue_temp(tmp),nil;this.$raise("Bad child node in masgn LHS: "+child+". LHS: "+this.$lhs())}return this.$push(", "),this.$push(this.$expr(part))}),-4)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/arglist"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$to_a=Opal.to_a,$def=Opal.def;return Opal.add_stubs("require,handle,each,children,==,type,expr,empty?,<<,fragment,push"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArglistNode");return self.$handle("arglist"),$def(self,"$compile",(function(){var $a,code=nil,work=nil,join=nil;return code=($a=[[],[]])[0],work=$a[1],$send(this.$children(),"each",[],(function $$1(current){var splat,arg,self=null==$$1.$$s?this:$$1.$$s;return null==current&&(current=nil),splat=current.$type()["$=="]("splat"),arg=self.$expr(current),$truthy(splat)?($truthy(work["$empty?"]())?$truthy(code["$empty?"]())?code["$<<"](arg):code["$<<"](self.$fragment(".concat("))["$<<"](arg)["$<<"](self.$fragment(")")):($truthy(code["$empty?"]())?code["$<<"](self.$fragment("["))["$<<"](work)["$<<"](self.$fragment("]")):code["$<<"](self.$fragment(".concat(["))["$<<"](work)["$<<"](self.$fragment("])")),code["$<<"](self.$fragment(".concat("))["$<<"](arg)["$<<"](self.$fragment(")"))),work=[]):($truthy(work["$empty?"]())||work["$<<"](self.$fragment(", ")),work["$<<"](arg))}),{$$arity:1,$$s:this}),$truthy(work["$empty?"]())||(join=work,$truthy(code["$empty?"]())?code=join:code["$<<"](this.$fragment(".concat(["))["$<<"](join)["$<<"](this.$fragment("])"))),$send(this,"push",$to_a(code))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/x_string"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def,$defs=Opal.defs,$lambda=Opal.lambda,$eqeqeq=Opal.eqeqeq,$eqeq=Opal.eqeq,$not=Opal.not,$range=Opal.range;return Opal.add_stubs("handle,unpack_return,children,strip_empty_children,single_line?,compile_single_line,each,compile_child,recv?,wrap,push,==,size,none?,type,end_with?,source,expression,loc,dup,nil?,empty?,rstrip,any?,[],first,shift,last,pop,private,===,include?,self,scope,new,expr,raise,s,strip,=~,!,extract_last_value,expr?,warning,compiler,line"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"XStringNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.should_add_semicolon=$proto.returning=nil,self.$handle("xstr"),$def(self,"$compile",(function(){var unpacked_children,stripped_children;return this.should_add_semicolon=!1,unpacked_children=this.$unpack_return(this.$children()),stripped_children=$$("XStringNode").$strip_empty_children(unpacked_children),$truthy($$("XStringNode")["$single_line?"](stripped_children))?this.$compile_single_line(stripped_children):$send(unpacked_children,"each",[],(function $$1(c){return null==c&&(c=nil),(null==$$1.$$s?this:$$1.$$s).$compile_child(c)}),{$$arity:1,$$s:this}),$truthy(this["$recv?"]())&&this.$wrap("(",")"),$truthy(this.should_add_semicolon)?this.$push(";"):nil}),0),$defs(self,"$single_line?",(function(children){var $ret_or_1;return $truthy($ret_or_1=children.$size()["$=="](1))?$ret_or_1:$send(children,"none?",[],(function(c){var $ret_or_2;return null==c&&(c=nil),$truthy($ret_or_2=c.$type()["$=="]("str"))?c.$loc().$expression().$source()["$end_with?"]("\n"):$ret_or_2}),1)}),1),$defs(self,"$strip_empty_children",(function(children){var empty_line=nil,$ret_or_1=nil;for(children=children.$dup(),empty_line=$lambda((function(child){var $ret_or_1,$ret_or_2=nil;return null==child&&(child=nil),$truthy($ret_or_1=child["$nil?"]())?$ret_or_1:$truthy($ret_or_2=child.$type()["$=="]("str"))?child.$loc().$expression().$source().$rstrip()["$empty?"]():$ret_or_2}),1);$truthy($truthy($ret_or_1=children["$any?"]())?empty_line["$[]"](children.$first()):$ret_or_1);)children.$shift();for(;$truthy($truthy($ret_or_1=children["$any?"]())?empty_line["$[]"](children.$last()):$ret_or_1);)children.$pop();return children}),1),self.$private(),$def(self,"$compile_child",(function(child){var $ret_or_1,value=nil;return $eqeqeq("str",$ret_or_1=child.$type())?(value=child.$loc().$expression().$source(),$truthy(value["$include?"]("self"))&&this.$scope().$self(),this.$push($$("Fragment").$new(value,this.$scope(),child))):$eqeqeq("begin",$ret_or_1)||$eqeqeq("gvar",$ret_or_1)||$eqeqeq("ivar",$ret_or_1)||$eqeqeq("nil",$ret_or_1)?this.$push(this.$expr(child)):this.$raise("Unsupported xstr part: "+child.$type())}),1),$def(self,"$compile_single_line",(function(children){var single_child,has_embeded_return=nil,first_child=nil,$ret_or_1=nil,last_child=nil,last_value=nil;return has_embeded_return=!1,first_child=children.$shift(),single_child=children["$empty?"](),first_child=$truthy($ret_or_1=first_child)?$ret_or_1:this.$s("nil"),$eqeq(first_child.$type(),"str")&&(has_embeded_return=first_child.$loc().$expression().$source().$strip()["$=~"](/^return\b/)),$truthy(this.returning)&&$not(has_embeded_return)&&this.$push("return "),last_child=$truthy($ret_or_1=children.$pop())?$ret_or_1:first_child,$eqeq(last_child.$type(),"str")&&(last_value=this.$extract_last_value(last_child)),$truthy(single_child)||(this.should_add_semicolon=!1,this.$compile_child(first_child),$send(children,"each",[],(function $$5(c){return null==c&&(c=nil),(null==$$5.$$s?this:$$5.$$s).$compile_child(c)}),{$$arity:1,$$s:this})),$eqeq(last_child.$type(),"str")?this.$push($$("Fragment").$new(last_value,this.$scope(),last_child)):this.$compile_child(last_child)}),1),$def(self,"$extract_last_value",(function(last_child){var last_value=nil;return last_value=last_child.$loc().$expression().$source().$rstrip(),$truthy(last_value["$include?"]("self"))&&this.$scope().$self(),($truthy(this.returning)||$truthy(this["$expr?"]()))&&$truthy(last_value["$end_with?"](";"))&&(this.$compiler().$warning("Removed semicolon ending x-string expression, interpreted as unintentional",last_child.$line()),last_value=last_value["$[]"]($range(0,-2,!1))),$truthy(this.returning)&&(this.should_add_semicolon=!0),last_value}),1),$def(self,"$unpack_return",(function(children){var first_child=nil;return first_child=children.$first(),this.returning=!1,$eqeq(first_child.$type(),"js_return")&&(this.returning=!0,children=first_child.$children()),children}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/lambda"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send=Opal.send,$def=Opal.def;return Opal.add_stubs("require,handle,children,helper,defines_lambda,scope,push,expr,iter"),self.$require("opal/nodes/call"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"LambdaNode");return self.$handle("lambda"),self.$children("iter"),$def(self,"$compile",(function(){return this.$helper("lambda"),$send(this.$scope(),"defines_lambda",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return self.$push("$lambda(",self.$expr(self.$iter()),")")}),{$$arity:0,$$s:this})}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes"]=function(Opal){var self=Opal.top;Opal.nil;return Opal.add_stubs("require"),self.$require("opal/nodes/base"),self.$require("opal/nodes/literal"),self.$require("opal/nodes/variables"),self.$require("opal/nodes/constants"),self.$require("opal/nodes/call"),self.$require("opal/nodes/csend"),self.$require("opal/nodes/call_special"),self.$require("opal/nodes/module"),self.$require("opal/nodes/class"),self.$require("opal/nodes/singleton_class"),self.$require("opal/nodes/args"),self.$require("opal/nodes/args/arity_check"),self.$require("opal/nodes/iter"),self.$require("opal/nodes/def"),self.$require("opal/nodes/defs"),self.$require("opal/nodes/if"),self.$require("opal/nodes/logic"),self.$require("opal/nodes/definitions"),self.$require("opal/nodes/yield"),self.$require("opal/nodes/rescue"),self.$require("opal/nodes/super"),self.$require("opal/nodes/top"),self.$require("opal/nodes/while"),self.$require("opal/nodes/hash"),self.$require("opal/nodes/array"),self.$require("opal/nodes/defined"),self.$require("opal/nodes/masgn"),self.$require("opal/nodes/arglist"),self.$require("opal/nodes/x_string"),self.$require("opal/nodes/lambda")},Opal.modules["opal/eof_content"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$eqeq=Opal.eqeq,$range=Opal.range,$to_ary=Opal.to_ary;return Opal.add_stubs("empty?,[],last_token_position,drop_while,lines,==,join,private,last,end_pos"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"EofContent"),$nesting=[self].concat($parent_nesting),$proto=self.$$prototype;return $proto.tokens=$proto.source=nil,$const_set($nesting[0],"DATA_SEPARATOR","__END__\n"),$def(self,"$initialize",(function(tokens,source){return this.tokens=tokens,this.source=source}),2),$def(self,"$eof",(function(){var eof_content=nil,$ret_or_1=nil;return $truthy(this.tokens["$empty?"]())?nil:(eof_content=this.source["$[]"](Opal.Range.$new(this.$last_token_position(),-1,!1)),$truthy(eof_content)?(eof_content=$send(eof_content.$lines(),"drop_while",[],(function(line){return null==line&&(line=nil),line["$=="]("\n")}),1),$eqeq(eof_content["$[]"](0),"__END__\n")?(eof_content=$truthy($ret_or_1=eof_content["$[]"]($range(1,-1,!1)))?$ret_or_1:[]).$join():$eqeq(eof_content,["__END__"])?"":nil):nil)}),0),self.$private(),$def(self,"$last_token_position",(function(){var $a,$b,last_token_info;return $b=this.tokens.$last(),null==($a=$to_ary($b))[0]?nil:$a[0],last_token_info=null==$a[1]?nil:$a[1],null==($a=$to_ary($b=last_token_info))[0]?nil:$a[0],(null==$a[1]?nil:$a[1]).$end_pos()}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/errors"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$defs=Opal.defs,$rb_plus=Opal.rb_plus,$alias=Opal.alias;return Opal.add_stubs("attr_reader,attr_accessor,new,respond_to?,location,location=,-,diagnostic,diagnostic=,to_a,backtrace,unshift,to_s,set_backtrace,path,lineno,+,label,line,lineno=,source_line,label=,expression"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $klass($nesting[0],$$("StandardError"),"Error"),function($base,$super){var self=$klass($base,$super,"GemNotFound");self.$attr_reader("gem_name"),$def(self,"$initialize",(function $$initialize(gem_name){return delete $$initialize.$$p,this.gem_name=gem_name,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",["can't find gem "+gem_name],null)}),1)}($nesting[0],$$("Error")),function($base,$super){$klass($base,$super,"CompilationError").$attr_accessor("location")}($nesting[0],$$("Error")),$klass($nesting[0],$$("CompilationError"),"ParsingError"),$klass($nesting[0],$$("ParsingError"),"RewritingError"),function($base,$super){$klass($base,$super,"SyntaxError").$attr_accessor("location")}($nesting[0],$$$("SyntaxError")),$defs(self,"$opal_location_from_error",(function(error){var opal_location,$writer=nil;return opal_location=$$("OpalBacktraceLocation").$new(),$truthy(error["$respond_to?"]("location"))&&($writer=[error.$location()],$send(opal_location,"location=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy(error["$respond_to?"]("diagnostic"))&&($writer=[error.$diagnostic()],$send(opal_location,"diagnostic=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),opal_location}),1),$defs(self,"$add_opal_location_to_error",(function(opal_location,error){var backtrace=nil;return(backtrace=error.$backtrace().$to_a()).$unshift(opal_location.$to_s()),error.$set_backtrace(backtrace),error}),2),function($base,$super){var self=$klass($base,null,"OpalBacktraceLocation");return self.$attr_accessor("path","lineno","label"),$def(self,"$initialize",(function(path,lineno,label){var $a;return null==path&&(path=nil),null==lineno&&(lineno=nil),null==label&&(label=nil),$a=[path,lineno,label],this.path=$a[0],this.lineno=$a[1],this.label=$a[2],$a}),-1),$def(self,"$to_s",(function(){var string=nil;return string=this.$path(),$truthy(this.$lineno())&&(string=$rb_plus(string,":"+this.$lineno())),string=$rb_plus(string,":in "),string=$truthy(this.$label())?$rb_plus(string,"`"+this.$label()+"'"):$rb_plus(string,"unknown")}),0),$alias(self,"line","lineno"),$def(self,"$diagnostic=",(function(diagnostic){var $writer;return $truthy(diagnostic)?($writer=[diagnostic.$location()],$send(this,"location=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),1),$def(self,"$location=",(function(location){var $writer=nil;return $truthy(location)?($writer=[location.$line()],$send(this,"lineno=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(location["$respond_to?"]("source_line"))?($writer=[location.$source_line()],$send(this,"label=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):$truthy(location["$respond_to?"]("expression"))?($writer=[location.$expression().$source_line()],$send(this,"label=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil):nil}),1)}($nesting[0])}($nesting[0],$nesting)},Opal.modules["opal/magic_comments"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$module=Opal.module,$const_set=Opal.const_set,$hash2=Opal.hash2,$truthy=Opal.truthy,$send=Opal.send,$rb_ge=Opal.rb_ge,$eqeqeq=Opal.eqeqeq,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$defs=Opal.defs;return Opal.add_stubs("freeze,line,loc,take,each,>=,any?,scan,text,to_sym,===,[]=,-"),function($base,$parent_nesting){var self=$module($base,"MagicComments"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"MAGIC_COMMENT_RE",/^# *(\w+) *: *(\S+.*?) *$/.$freeze()),$const_set($nesting[0],"EMACS_MAGIC_COMMENT_RE",/^# *-\*- *(\w+) *: *(\S+.*?) *-\*- *$/.$freeze()),$defs(self,"$parse",(function(sexp,comments){var flags,first_line=nil;return flags=$hash2([],{}),$truthy(sexp)&&(first_line=sexp.$loc().$line(),comments=comments.$take(first_line)),$send(comments,"each",[],(function(comment){var parts=nil;return null==comment&&(comment=nil),$truthy(first_line)&&$truthy($rb_ge(comment.$loc().$line(),first_line))?nil:$truthy((parts=comment.$text().$scan($$("MAGIC_COMMENT_RE")))["$any?"]())||$truthy((parts=comment.$text().$scan($$("EMACS_MAGIC_COMMENT_RE")))["$any?"]())?$send(parts,"each",[],(function(key,value){var $writer,$ret_or_1;return null==key&&(key=nil),null==value&&(value=nil),$writer=[key.$to_sym(),$eqeqeq("true",$ret_or_1=value)||!$eqeqeq("false",$ret_or_1)&&value],$send(flags,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),2):nil}),1),flags}),2)}($$("Opal"),$nesting)},Opal.modules["opal/compiler"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$hash2=Opal.hash2,$defs=Opal.defs,$klass=Opal.klass,$const_set=Opal.const_set,$send=Opal.send,$truthy=Opal.truthy,$not=Opal.not,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$Opal=Opal.Opal,$to_ary=Opal.to_ary,$alias=Opal.alias,$eqeqeq=Opal.eqeqeq,$regexp=Opal.regexp,$rb_plus=Opal.rb_plus,$slice=Opal.slice,$eqeq=Opal.eqeq;return Opal.add_stubs("require,compile,new,freeze,join,dirname,first,split,basename,to_s,cleanpath,Pathname,fetch,define_method,option_value,key?,[],!,include?,raise,inspect,[]=,-,compiler_option,attr_reader,attr_accessor,parse,re_raise_with_location,flatten,process,end_with?,code,last,<<,fragment,s,map,to_proc,file,source=,default_parser,tokenize,requirable?,eval?,tap,meta,associate_locations,eof,magic_comments,to_sym,strip,async_await_before_typecasting,===,async_await_set_to_regexp,to_a,gsub,escape,location=,opal_location_from_error,path=,label,lines,to_i,line,label=,message,set_backtrace,backtrace,add_opal_location_to_error,warn,empty?,+,start_with?,helpers,new_temp,queue_temp,push_while,pop_while,in_while?,nil?,scope,handlers,type,compile_to_fragments,error,returns,updated,children,==,uses_block!,block_name,find_parent_def,cache,source_map"),self.$require("set"),self.$require("opal/parser"),self.$require("opal/fragment"),self.$require("opal/nodes"),self.$require("opal/eof_content"),self.$require("opal/errors"),self.$require("opal/magic_comments"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$compile",(function(source,options){return null==options&&(options=$hash2([],{})),$$("Compiler").$new(source,options).$compile()}),-2),function($base,$super,$parent_nesting){var self=$klass($base,null,"Compiler"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.option_values=$proto.options=$proto.magic_comments=$proto.fragments=$proto.source=$proto.buffer=$proto.source_map=$proto.result=$proto.helpers=$proto.method_calls=$proto.async_await=$proto.indent=$proto.unique=$proto.scope=$proto.case_stmt=$proto.handlers=$proto.requires=$proto.required_trees=$proto.autoloads=nil,$const_set($nesting[0],"INDENT"," "),$const_set($nesting[0],"COMPARE",["<",">","<=",">="].$freeze()),$defs(self,"$module_name",(function(path){return path=$$("File").$join($$("File").$dirname(path),$$("File").$basename(path).$split(".").$first()),this.$Pathname(path).$cleanpath().$to_s()}),1),$defs(self,"$compiler_option",(function(name,config){var method_name;return null==config&&(config=$hash2([],{})),method_name=config.$fetch("as",name),$send(this,"define_method",[method_name],(function $$1(){return(null==$$1.$$s?this:$$1.$$s).$option_value(name,config)}),{$$arity:0,$$s:this})}),-2),$def(self,"$option_value",(function(name,config){var default_value,magic_comment,$writer,valid_values=nil,value=nil;return $truthy(this.option_values["$key?"](name))?this.option_values["$[]"](name):(default_value=config["$[]"]("default"),valid_values=config["$[]"]("valid_values"),magic_comment=config["$[]"]("magic_comment"),value=this.options.$fetch(name,default_value),$truthy(magic_comment)&&$truthy(this.magic_comments["$key?"](name))&&(value=this.magic_comments.$fetch(name)),$truthy(valid_values)&&$not(valid_values["$include?"](value))&&this.$raise($$("ArgumentError"),"invalid value "+value.$inspect()+" for option "+name.$inspect()+" (valid values: "+valid_values.$inspect()+")"),$writer=[name,value],$send(this.option_values,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),2),self.$compiler_option("file",$hash2(["default"],{default:"(file)"})),self.$compiler_option("method_missing",$hash2(["default","as"],{default:!0,as:"method_missing?"})),self.$compiler_option("arity_check",$hash2(["default","as"],{default:!1,as:"arity_check?"})),self.$compiler_option("freezing",$hash2(["default","as"],{default:!0,as:"freezing?"})),self.$compiler_option("irb",$hash2(["default","as"],{default:!1,as:"irb?"})),self.$compiler_option("dynamic_require_severity",$hash2(["default","valid_values"],{default:"ignore",valid_values:["error","warning","ignore"]})),self.$compiler_option("requirable",$hash2(["default","as"],{default:!1,as:"requirable?"})),self.$compiler_option("esm",$hash2(["default","as"],{default:!1,as:"esm?"})),self.$compiler_option("inline_operators",$hash2(["default","as"],{default:!0,as:"inline_operators?"})),self.$compiler_option("eval",$hash2(["default","as"],{default:!1,as:"eval?"})),self.$compiler_option("enable_source_location",$hash2(["default","as"],{default:!1,as:"enable_source_location?"})),self.$compiler_option("use_strict",$hash2(["default","as","magic_comment"],{default:!1,as:"use_strict?",magic_comment:!0})),self.$compiler_option("parse_comments",$hash2(["default","as"],{default:!1,as:"parse_comments?"})),self.$compiler_option("scope_variables",$hash2(["default"],{default:[]})),self.$compiler_option("await",$hash2(["default","as","magic_comment"],{default:!1,as:"async_await",magic_comment:!0})),self.$attr_reader("result"),self.$attr_reader("fragments"),self.$attr_accessor("scope"),self.$attr_accessor("top_scope"),self.$attr_reader("case_stmt"),self.$attr_reader("eof_content"),self.$attr_reader("comments"),self.$attr_reader("magic_comments"),$def(self,"$initialize",(function(source,options){return null==options&&(options=$hash2([],{})),this.source=source,this.indent="",this.unique=0,this.options=options,this.comments=$$("Hash").$new([]),this.case_stmt=nil,this.option_values=$hash2([],{}),this.magic_comments=$hash2([],{})}),-2),$def(self,"$compile",(function(){return this.$parse(),this.fragments=$send(this,"re_raise_with_location",[],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;return null==self.sexp&&(self.sexp=nil),self.$process(self.sexp).$flatten()}),{$$arity:0,$$s:this}),$truthy(this.fragments.$last().$code()["$end_with?"]("\n"))||this.fragments["$<<"](this.$fragment("\n",nil,this.$s("newline"))),this.result=$send(this.fragments,"map",[],"code".$to_proc()).$join("")}),0),$def(self,"$parse",(function(){var $a,$b,sexp,comments,tokens,kind,$ret_or_1,$writer=nil;return this.buffer=$$$($$$($Opal,"Parser"),"SourceBuffer").$new(this.$file(),1),$writer=[this.source],$send(this.buffer,"source=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.parser=$$$($$("Opal"),"Parser").$default_parser(),$b=$send(this,"re_raise_with_location",[],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return null==self.parser&&(self.parser=nil),null==self.buffer&&(self.buffer=nil),self.parser.$tokenize(self.buffer)}),{$$arity:0,$$s:this}),sexp=null==($a=$to_ary($b))[0]?nil:$a[0],comments=null==$a[1]?nil:$a[1],tokens=null==$a[2]?nil:$a[2],kind=$truthy(this["$requirable?"]())?"require":$truthy(this["$eval?"]())?"eval":"main",this.sexp=$send(this.$s("top",$truthy($ret_or_1=sexp)?$ret_or_1:this.$s("nil")),"tap",[],(function(i){return null==i&&(i=nil),$writer=["kind",kind],$send(i.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),this.comments=$$$($$$($$$("Parser"),"Source"),"Comment").$associate_locations(sexp,comments),this.magic_comments=$$("MagicComments").$parse(sexp,comments),this.eof_content=$$("EofContent").$new(tokens,this.source).$eof()}),0),$def(self,"$source_map",(function(){var $ret_or_1;return $truthy($ret_or_1=this.source_map)?$ret_or_1:$$$($$$($Opal,"SourceMap"),"File").$new(this.fragments,this.$file(),this.source,this.result)}),0),$def(self,"$helpers",(function(){var $ret_or_1;return this.helpers=$truthy($ret_or_1=this.helpers)?$ret_or_1:$$("Set").$new($send(this.$magic_comments()["$[]"]("helpers").$to_s().$split(","),"map",[],(function(h){return null==h&&(h=nil),h.$strip().$to_sym()}),1))}),0),$def(self,"$method_calls",(function(){var $ret_or_1;return this.method_calls=$truthy($ret_or_1=this.method_calls)?$ret_or_1:$$("Set").$new()}),0),$alias(self,"async_await_before_typecasting","async_await"),$def(self,"$async_await",(function(){var $a,original=nil,$ret_or_1=nil;return $truthy(null!=($a=this.async_await)&&$a!==nil?"instance-variable":nil)?this.async_await:(original=this.$async_await_before_typecasting(),this.async_await=$eqeqeq($$("String"),$ret_or_1=original)?this.$async_await_set_to_regexp($send(original.$split(","),"map",[],(function(h){return null==h&&(h=nil),h.$strip().$to_sym()}),1)):$eqeqeq($$("Array"),$ret_or_1)||$eqeqeq($$("Set"),$ret_or_1)?this.$async_await_set_to_regexp($send(original.$to_a(),"map",[],"to_sym".$to_proc())):$eqeqeq($$("Regexp"),$ret_or_1)||$eqeqeq(!0,$ret_or_1)||$eqeqeq(!1,$ret_or_1)?original:this.$raise("A value of await compiler option can be either a Set, an Array, a String or a Boolean."))}),0),$def(self,"$async_await_set_to_regexp",(function(set){return set=(set=$send(set,"map",[],(function(name){return null==name&&(name=nil),$$("Regexp").$escape(name.$to_s()).$gsub("\\*",".*?")}),1)).$join("|"),$regexp(["^(",set,")$"])}),1),$def(self,"$error",(function(msg,line){var error,$writer;return null==line&&(line=nil),error=$$$($Opal,"SyntaxError").$new(msg),$writer=[$$$($$("Opal"),"OpalBacktraceLocation").$new(this.$file(),line)],$send(error,"location=",$to_a($writer)),$rb_minus($writer.length,1),this.$raise(error)}),-2),$def(self,"$re_raise_with_location",(function $$re_raise_with_location(){var $yield=$$re_raise_with_location.$$p||nil,error=nil,opal_location=nil,$writer=nil,new_error=nil;delete $$re_raise_with_location.$$p;try{return Opal.yieldX($yield,[])}catch($err){if(!Opal.rescue($err,[$$("StandardError"),$$$($Opal,"SyntaxError")]))throw $err;error=$err;try{return opal_location=$Opal.$opal_location_from_error(error),$writer=[this.$file()],$send(opal_location,"path=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(opal_location.$label())||($writer=[this.source.$lines()["$[]"]($rb_minus(opal_location.$line().$to_i(),1)).$strip()],$send(opal_location,"label=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),(new_error=$$$($Opal,"SyntaxError").$new(error.$message())).$set_backtrace(error.$backtrace()),$Opal.$add_opal_location_to_error(opal_location,new_error),this.$raise(new_error)}finally{Opal.pop_exception()}}}),0),$def(self,"$warning",(function(msg,line){return null==line&&(line=nil),this.$warn("warning: "+msg+" -- "+this.$file()+":"+line)}),-2),$def(self,"$parser_indent",(function(){return this.indent}),0),$def(self,"$s",(function(type,$a){var children;return children=Opal.slice.call(arguments,1),$$$($$$($Opal,"AST"),"Node").$new(type,children)}),-2),$def(self,"$fragment",(function(str,scope,sexp){return null==sexp&&(sexp=nil),$$("Fragment").$new(str,scope,sexp)}),-3),$def(self,"$unique_temp",(function(name){var unique;return name=name.$to_s(),$truthy(name)&&$not(name["$empty?"]())&&(name=name.$to_s().$gsub("<=>","$lt_eq_gt").$gsub("===","$eq_eq_eq").$gsub("==","$eq_eq").$gsub("=~","$eq_tilde").$gsub("!~","$excl_tilde").$gsub("!=","$not_eq").$gsub("<=","$lt_eq").$gsub(">=","$gt_eq").$gsub("=","$eq").$gsub("?","$ques").$gsub("!","$excl").$gsub("/","$slash").$gsub("%","$percent").$gsub("+","$plus").$gsub("-","$minus").$gsub("<","$lt").$gsub(">","$gt").$gsub(/[^\w\$]/,"$")),unique=this.unique=$rb_plus(this.unique,1),""+($truthy(name["$start_with?"]("$"))?nil:"$")+name+"$"+unique}),1),$def(self,"$helper",(function(name){return this.$helpers()["$<<"](name)}),1),$def(self,"$indent",(function $$indent(){var indent,res,$yield=$$indent.$$p||nil;return delete $$indent.$$p,indent=this.indent,this.indent=$rb_plus(this.indent,$$("INDENT")),this.space="\n"+this.indent,res=Opal.yieldX($yield,[]),this.indent=indent,this.space="\n"+this.indent,res}),0),$def(self,"$with_temp",(function $$with_temp(){var tmp,res,$yield=$$with_temp.$$p||nil;return delete $$with_temp.$$p,tmp=this.scope.$new_temp(),res=Opal.yield1($yield,tmp),this.scope.$queue_temp(tmp),res}),0),$def(self,"$in_while",(function $$in_while(){var result,$yield=$$in_while.$$p||nil;return delete $$in_while.$$p,$yield===nil?nil:(this.while_loop=this.scope.$push_while(),result=Opal.yieldX($yield,[]),this.scope.$pop_while(),result)}),0),$def(self,"$in_case",(function $$in_case(){var old,$yield=$$in_case.$$p||nil;return delete $$in_case.$$p,$yield===nil?nil:(old=this.case_stmt,this.case_stmt=$hash2([],{}),Opal.yieldX($yield,[]),this.case_stmt=old)}),0),$def(self,"$in_while?",(function(){return this.scope["$in_while?"]()}),0),$def(self,"$process",(function(sexp,level){var handler=nil;return null==level&&(level="expr"),$truthy(sexp["$nil?"]())?this.$fragment("",this.$scope()):$truthy(handler=this.$handlers()["$[]"](sexp.$type()))?handler.$new(sexp,level,this).$compile_to_fragments():this.$error("Unsupported sexp: "+sexp.$type())}),-2),$def(self,"$handlers",(function(){var $ret_or_1;return this.handlers=$truthy($ret_or_1=this.handlers)?$ret_or_1:$$$($$$($$("Opal"),"Nodes"),"Base").$handlers()}),0),$def(self,"$requires",(function(){var $ret_or_1;return this.requires=$truthy($ret_or_1=this.requires)?$ret_or_1:[]}),0),$def(self,"$required_trees",(function(){var $ret_or_1;return this.required_trees=$truthy($ret_or_1=this.required_trees)?$ret_or_1:[]}),0),$def(self,"$autoloads",(function(){var $ret_or_1;return this.autoloads=$truthy($ret_or_1=this.autoloads)?$ret_or_1:[]}),0),$def(self,"$returns",(function(sexp){var $a,$b,$ret_or_1,when_sexp=nil,then_sexp=nil,body_sexp=nil,resbodies=nil,else_sexp=nil,klass=nil,lvar=nil,body=nil,rescue_sexp=nil,ensure_body=nil,rest=nil,last=nil,cond=nil,true_body=nil,false_body=nil;return $truthy(sexp)?$eqeqeq("undef",$ret_or_1=sexp.$type())?this.$returns(sexp.$updated("begin",[sexp,this.$s("nil")])):$eqeqeq("break",$ret_or_1)||$eqeqeq("next",$ret_or_1)||$eqeqeq("redo",$ret_or_1)||$eqeqeq("retry",$ret_or_1)?sexp:$eqeqeq("yield",$ret_or_1)?sexp.$updated("returnable_yield",nil):$eqeqeq("when",$ret_or_1)?($b=($b=($a=[].concat($to_a(sexp))).length-1)<0?0:$b,when_sexp=$slice.call($a,0,$b),then_sexp=null==$a[$b]?nil:$a[$b],sexp.$updated(nil,[].concat($to_a(when_sexp)).concat([this.$returns(then_sexp)]))):$eqeqeq("rescue",$ret_or_1)?(body_sexp=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],$b=($b=$a.length-1)<1?1:$b,resbodies=$slice.call($a,1,$b),else_sexp=null==$a[$b]?nil:$a[$b],resbodies=$send(resbodies,"map",[],(function $$9(resbody){return null==resbody&&(resbody=nil),(null==$$9.$$s?this:$$9.$$s).$returns(resbody)}),{$$arity:1,$$s:this}),$truthy(else_sexp)&&(else_sexp=this.$returns(else_sexp)),sexp.$updated(nil,[this.$returns(body_sexp)].concat($to_a(resbodies)).concat([else_sexp]))):$eqeqeq("resbody",$ret_or_1)?(klass=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],lvar=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],sexp.$updated(nil,[klass,lvar,this.$returns(body)])):$eqeqeq("ensure",$ret_or_1)?(rescue_sexp=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],ensure_body=null==$a[1]?nil:$a[1],(sexp=sexp.$updated(nil,[this.$returns(rescue_sexp),ensure_body])).$updated("js_return",[sexp])):$eqeqeq("begin",$ret_or_1)||$eqeqeq("kwbegin",$ret_or_1)?($b=($b=($a=[].concat($to_a(sexp))).length-1)<0?0:$b,rest=$slice.call($a,0,$b),last=null==$a[$b]?nil:$a[$b],sexp.$updated(nil,[].concat($to_a(rest)).concat([this.$returns(last)]))):$eqeqeq("while",$ret_or_1)||$eqeqeq("until",$ret_or_1)||$eqeqeq("while_post",$ret_or_1)||$eqeqeq("until_post",$ret_or_1)||$eqeqeq("return",$ret_or_1)||$eqeqeq("js_return",$ret_or_1)||$eqeqeq("returnable_yield",$ret_or_1)?sexp:$eqeqeq("xstr",$ret_or_1)?sexp.$updated(nil,[$send(this,"s",["js_return"].concat($to_a(sexp.$children())))]):$eqeqeq("if",$ret_or_1)?(cond=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],true_body=null==$a[1]?nil:$a[1],false_body=null==$a[2]?nil:$a[2],sexp.$updated(nil,[cond,this.$returns(true_body),this.$returns(false_body)])):$eqeq(sexp.$type(),"send")&&$eqeq(sexp.$children()["$[]"](1),"debugger")?sexp.$updated("begin",[sexp,this.$s("js_return",this.$s("nil"))]):sexp.$updated("js_return",[sexp]):this.$returns(this.$s("nil"))}),1),$def(self,"$handle_block_given_call",(function(sexp){var scope=nil;return this.scope["$uses_block!"](),$truthy(this.scope.$block_name())?this.$fragment("("+this.scope.$block_name()+" !== nil)",this.$scope(),sexp):$truthy(scope=this.scope.$find_parent_def())&&$truthy(scope.$block_name())?this.$fragment("("+scope.$block_name()+" !== nil)",scope,sexp):this.$fragment("false",scope,sexp)}),1),$def(self,"$marshal_dump",(function(){var $ret_or_1;return[this.options,this.option_values,this.source_map=$truthy($ret_or_1=this.source_map)?$ret_or_1:this.$source_map().$cache(),this.magic_comments,this.result,this.required_trees,this.requires,this.autoloads]}),0),$def(self,"$marshal_load",(function(src){var $a,$b;return $a=$to_ary($b=src),this.options=null==$a[0]?nil:$a[0],this.option_values=null==$a[1]?nil:$a[1],this.source_map=null==$a[2]?nil:$a[2],this.magic_comments=null==$a[3]?nil:$a[3],this.result=null==$a[4]?nil:$a[4],this.required_trees=null==$a[5]?nil:$a[5],this.requires=null==$a[6]?nil:$a[6],this.autoloads=null==$a[7]?nil:$a[7],$b}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/erb"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$defs=Opal.defs,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$send=Opal.send,$regexp=Opal.regexp;return Opal.add_stubs("require,compile,new,freeze,fix_quotes,find_contents,find_code,wrap_compiled,require_erb,prepared_source,gsub,+,last_match,=~,sub"),self.$require("opal/compiler"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"ERB"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$compile",(function(source,file_name){return null==file_name&&(file_name="(erb)"),$$("Compiler").$new(source,file_name).$compile()}),-2),function($base,$super,$parent_nesting){var self=$klass($base,null,"Compiler"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.prepared_source=$proto.source=$proto.file_name=nil,$const_set($nesting[0],"BLOCK_EXPR",/\s+(do|\{)(\s*\|[^|]*\|)?\s*\Z/.$freeze()),$def(self,"$initialize",(function(source,file_name){var $a;return null==file_name&&(file_name="(erb)"),$a=[source,file_name,source],this.source=$a[0],this.file_name=$a[1],this.result=$a[2],$a}),-2),$def(self,"$prepared_source",(function(){var $ret_or_1,source=nil;return this.prepared_source=$truthy($ret_or_1=this.prepared_source)?$ret_or_1:(source=this.source,source=this.$fix_quotes(source),source=this.$find_contents(source),source=this.$find_code(source),source=this.$wrap_compiled(source),source=this.$require_erb(source))}),0),$def(self,"$compile",(function(){return $$("Opal").$compile(this.$prepared_source())}),0),$def(self,"$fix_quotes",(function(result){return result.$gsub('"','\\"')}),1),$def(self,"$require_erb",(function(result){return $rb_plus('require "erb";',result)}),1),$def(self,"$find_contents",(function(result){return $send(result,"gsub",[/<%=([\s\S]+?)%>/],(function(){var inner=nil;return inner=$$("Regexp").$last_match(1).$gsub(/\\'/,"'").$gsub(/\\"/,'"'),$truthy(inner["$=~"]($$("BLOCK_EXPR")))?'")\noutput_buffer.append= '+inner+'\noutput_buffer.append("':'")\noutput_buffer.append=('+inner+')\noutput_buffer.append("'}),0)}),1),$def(self,"$find_code",(function(result){return $send(result,"gsub",[/<%([\s\S]+?)%>/],(function(){return'")\n'+$$("Regexp").$last_match(1).$gsub(/\\"/,'"')+'\noutput_buffer.append("'}),0)}),1),$def(self,"$wrap_compiled",(function(result){return"Template.new('"+this.file_name.$sub($regexp(["\\.opalerb",$$("REGEXP_END")]),"")+"') do |output_buffer|\noutput_buffer.append(\""+result+'")\noutput_buffer.join\nend\n'}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/builder_processors"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$send=Opal.send,$def=Opal.def,$eqeq=Opal.eqeq,$Opal=Opal.Opal,$const_set=Opal.const_set,$send2=Opal.send2,$find_super=Opal.find_super,$defs=Opal.defs,$to_a=Opal.to_a;return Opal.add_stubs("require,end_with?,+,dup,delete,cache,attr_reader,to_s,source,join,==,size,new,register_processor,is_a?,match,match_regexp,raise,inspect,handles,map,with_index,each_line,index,filename,mark_as_required,result,compiled,source_map,fetch,cache_key,compiler_for,compile,class,merge,requires,required_trees,autoloads,extname,prepare,private,prepared_source,module_name"),self.$require("opal/compiler"),self.$require("opal/erb"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"BuilderProcessors")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Processor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.options=nil,$def(self,"$initialize",(function(source,filename,options){var $a;return null==options&&(options=$hash2([],{})),$truthy(source["$end_with?"]("\n"))||(source=$rb_plus(source,"\n")),$a=[source,filename,options.$dup()],this.source=$a[0],this.filename=$a[1],this.options=$a[2],this.cache=$send(this.options,"delete",["cache"],(function(){return $$("Opal").$cache()}),0),this.requires=[],this.required_trees=[],this.autoloads=[]}),-3),self.$attr_reader("source","filename","options","requires","required_trees","autoloads"),$def(self,"$to_s",(function(){return this.$source().$to_s()}),0),function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$attr_reader("extensions"),$def(self,"$handles",(function($a){var extensions,self=this,matches=nil;return extensions=Opal.slice.call(arguments),self.extensions=extensions,matches=extensions.$join("|"),$eqeq(extensions.$size(),1)||(matches="("+matches+")"),self.match_regexp=$$("Regexp").$new("\\."+matches+$$("REGEXP_END")),$$$($Opal,"Builder").$register_processor(self,extensions),nil}),-1),$def(self,"$match?",(function(other){var $ret_or_1;return $truthy($ret_or_1=other["$is_a?"]($$("String")))?other.$match(this.$match_regexp()):$ret_or_1}),1),$def(self,"$match_regexp",(function(){var $ret_or_1;return null==this.match_regexp&&(this.match_regexp=nil),$truthy($ret_or_1=this.match_regexp)?$ret_or_1:this.$raise($$("NotImplementedError"))}),0)}(Opal.get_singleton_class(self),$nesting),$def(self,"$mark_as_required",(function(filename){return"Opal.loaded(["+filename.$to_s().$inspect()+"]);"}),1)}($nesting[0],0,$nesting),function($base,$super,$parent_nesting){var self=$klass($base,$super,"JsProcessor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.source_map=$proto.source=$proto.filename=nil,self.$handles("js"),$const_set($nesting[0],"ManualFragment",$$("Struct").$new("line","column","code","source_map_name")),$def(self,"$source_map",(function(){var $ret_or_1,manual_fragments=nil;return this.source_map=$truthy($ret_or_1=this.source_map)?$ret_or_1:(manual_fragments=$send(this.$source().$each_line().$with_index(),"map",[],(function(line_source,index){var column,line;return null==line_source&&(line_source=nil),null==index&&(index=nil),column=line_source.$index(/\S/),line=$rb_plus(index,1),$$("ManualFragment").$new(line,column,line_source,nil)}),2),$$$($$$($Opal,"SourceMap"),"File").$new(manual_fragments,this.$filename(),this.$source()))}),0),$def(self,"$source",(function(){return $rb_plus(this.source.$to_s(),this.$mark_as_required(this.filename))}),0)}($nesting[0],$$("Processor"),$nesting),function($base,$super,$parent_nesting){var self=$klass($base,$super,"RubyProcessor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.compiled=$proto.cache=$proto.filename=$proto.source=$proto.options=nil,self.$handles("rb","opal"),$def(self,"$source",(function(){return this.$compiled().$result()}),0),$def(self,"$source_map",(function(){return this.$compiled().$source_map()}),0),$def(self,"$compiled",(function(){var $ret_or_1;return this.compiled=$truthy($ret_or_1=this.compiled)?$ret_or_1:$send($$$($$("Opal"),"Cache"),"fetch",[this.cache,this.$cache_key()],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s,compiler=nil;return null==self.source&&(self.source=nil),null==self.filename&&(self.filename=nil),(compiler=self.$compiler_for(self.source,$hash2(["file"],{file:self.filename}))).$compile(),compiler}),{$$arity:0,$$s:this})}),0),$def(self,"$cache_key",(function(){return[this.$class(),this.filename,this.source,this.options]}),0),$def(self,"$compiler_for",(function(source,options){return null==options&&(options=$hash2([],{})),$$$($Opal,"Compiler").$new(source,this.options.$merge(options))}),-2),$def(self,"$requires",(function(){return this.$compiled().$requires()}),0),$def(self,"$required_trees",(function(){return this.$compiled().$required_trees()}),0),$def(self,"$autoloads",(function(){return this.$compiled().$autoloads()}),0),$defs(self,"$match?",(function $RubyProcessor_match$ques$5(other){var $ret_or_1,$yield=$RubyProcessor_match$ques$5.$$p||nil;return delete $RubyProcessor_match$ques$5.$$p,$truthy($ret_or_1=$send2(this,$find_super(this,"match?",$RubyProcessor_match$ques$5,!1,!0),"match?",[other],$yield))?$ret_or_1:$$("File").$extname(other.$to_s())["$=="]("")}),1)}($nesting[0],$$("Processor"),$nesting),function($base,$super){var self=$klass($base,$super,"OpalERBProcessor"),$proto=self.$$prototype;$proto.source=$proto.filename=nil,self.$handles("opalerb"),$def(self,"$initialize",(function $$initialize($a){var args,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,args=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a(args),$yield),self.source=self.$prepare(self.source,self.filename)}),-1),$def(self,"$requires",(function $$requires(){var $yield=$$requires.$$p||nil;return delete $$requires.$$p,$rb_plus(["erb"],$send2(this,$find_super(this,"requires",$$requires,!1,!0),"requires",[],$yield))}),0),self.$private(),$def(self,"$prepare",(function(source,path){return $$$($$$($Opal,"ERB"),"Compiler").$new(source,path).$prepared_source()}),2)}($nesting[0],$$("RubyProcessor")),function($base,$super){var self=$klass($base,$super,"ERBProcessor"),$proto=self.$$prototype;return $proto.source=$proto.filename=nil,self.$handles("erb"),$def(self,"$source",(function(){var result;return result=$$$("ERB").$new(this.source.$to_s()).$result(),"Opal.modules["+$$$($Opal,"Compiler").$module_name(this.filename).$inspect()+"] = function() {"+result+"};"}),0)}($nesting[0],$$("Processor"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules.base64=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$defs=Opal.defs,$hash2=Opal.hash2,$truthy=Opal.truthy;return Opal.add_stubs("raise,delete"),function($base,$parent_nesting){var encode,decode,self=$module($base,"Base64"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";return encode=function(input){for(var block,charCode,str=String(input),idx=0,map=chars,output="";str.charAt(0|idx)||(map="=",idx%1);output+=map.charAt(63&block>>8-idx%1*8))(charCode=str.charCodeAt(idx+=3/4))>255&&self.$raise($$("ArgumentError"),"invalid character (failed: The string to be encoded contains characters outside of the Latin1 range.)"),block=block<<8|charCode;return output},decode=function(input){var str=String(input).replace(/=+$/,"");str.length%4==1&&self.$raise($$("ArgumentError"),"invalid base64 (failed: The string to be decoded is not correctly encoded.)");for(var bs,buffer,bc=0,idx=0,output="";buffer=str.charAt(idx++);~buffer&&(bs=bc%4?64*bs+buffer:buffer,bc++%4)?output+=String.fromCharCode(255&bs>>(-2*bc&6)):0)buffer=chars.indexOf(buffer);return output},$defs(self,"$decode64",(function(string){return decode(string.replace(/\r?\n/g,""))}),1),$defs(self,"$encode64",(function(string){return encode(string).replace(/(.{60})/g,"$1\n").replace(/([^\n])$/g,"$1\n")}),1),$defs(self,"$strict_decode64",(function(string){return decode(string)}),1),$defs(self,"$strict_encode64",(function(string){return encode(string)}),1),$defs(self,"$urlsafe_decode64",(function(string){return decode(string.replace(/\-/g,"+").replace(/_/g,"/"))}),1),$defs(self,"$urlsafe_encode64",(function(string,$kwargs){var padding,str=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(padding=$kwargs.$$smap.padding)&&(padding=!0),str=encode(string).replace(/\+/g,"-").replace(/\//g,"_"),$truthy(padding)||(str=str.$delete("=")),str}),-2)}($nesting[0],$nesting)},Opal.modules["corelib/pack_unpack/format_string_parser"]=function(Opal){Opal.nil;var self,directives,modifiers,$$$=Opal.$$$,$module=Opal.module,$Kernel=Opal.Kernel;return Opal.add_stubs("raise"),self=$module("::","PackUnpack"),directives=["C","S","L","Q","J","c","s","l","q","j","n","N","v","V","U","w","D","d","F","f","E","e","G","g","A","a","Z","B","b","H","h","u","M","m","P","p","@","X","x"],modifiers=["!","_",">","<"],void(self.eachDirectiveAndCount=function(format,callback){var currentDirective,currentCount,currentModifiers,countSpecified;function reset(){currentDirective=null,currentCount=0,currentModifiers=[],countSpecified=!1}function yieldAndReset(){null!=currentDirective?(!/[sSiIlLqQjJ]/.test(currentDirective)&¤tModifiers.length>0&&$Kernel.$raise($$$("ArgumentError"),"'"+currentModifiers[0]+"' allowed only after types sSiIlLqQjJ"),-1!==currentModifiers.indexOf("<")&&-1!==currentModifiers.indexOf(">")&&$Kernel.$raise($$$("RangeError"),"Can't use both '<' and '>'"),countSpecified||(currentCount=1),-1!==currentModifiers.indexOf(">")&&(currentDirective+=">"),callback(currentDirective,currentCount),reset()):reset()}reset();for(var i=0;i,length,inspect,[],unpack"),self.$require("base64"),self.$require("corelib/pack_unpack/format_string_parser"),function($base,$super,$parent_nesting){var self=$klass("::",null,"String"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),expected=nil,given=nil,eachDirectiveAndCount=Opal.PackUnpack.eachDirectiveAndCount;function mapChunksToWords(callback){return function(data){return callback(data).map((function(chunk){return chunk.reverse().reduce((function(result,singleByte){return 256*result+singleByte}),0)}))}}function chunkBy(chunkSize,callback){return function(data){for(var array=callback(data),chunks=[],chunksCount=array.length/chunkSize,i=0;i=limit/2&&(n-=limit),n}))}}function bytesToAsciiChars(callback){return function(data){return callback(data).map((function(singleByte){return String.fromCharCode(singleByte)}))}}function joinChars(callback){return function(data){return callback(data).join("")}}function wrapIntoArray(callback){return function(data){return[callback(data)]}}var charCodesToFilter,filterTrailingZerosAndSpaces=(charCodesToFilter=["\0"," "].map((function(s){return s.charCodeAt(0)})),function(callback){return function(data){for(var charCodes=callback(data);-1!==charCodesToFilter.indexOf(charCodes[charCodes.length-1]);)charCodes=charCodes.slice(0,charCodes.length-1);return charCodes}});function invertChunks(callback){return function(data){return callback(data).map((function(chunk){return chunk.reverse()}))}}function identityFunction(value){return value}var callback,handlers={C:identityFunction,S:mapChunksToWords(chunkBy(2,identityFunction)),L:mapChunksToWords(chunkBy(4,identityFunction)),Q:mapChunksToWords(chunkBy(8,identityFunction)),J:null,"S>":mapChunksToWords(invertChunks(chunkBy(2,identityFunction))),"L>":mapChunksToWords(invertChunks(chunkBy(4,identityFunction))),"Q>":mapChunksToWords(invertChunks(chunkBy(8,identityFunction))),c:toNByteSigned(1,identityFunction),s:toNByteSigned(2,mapChunksToWords(chunkBy(2,identityFunction))),l:toNByteSigned(4,mapChunksToWords(chunkBy(4,identityFunction))),q:toNByteSigned(8,mapChunksToWords(chunkBy(8,identityFunction))),j:null,"s>":toNByteSigned(2,mapChunksToWords(invertChunks(chunkBy(2,identityFunction)))),"l>":toNByteSigned(4,mapChunksToWords(invertChunks(chunkBy(4,identityFunction)))),"q>":toNByteSigned(8,mapChunksToWords(invertChunks(chunkBy(8,identityFunction)))),n:null,N:null,v:null,V:null,U:identityFunction,w:(callback=identityFunction,function(data){for(var bytes=callback(data),result=[],buffer="",i=0;i45)return"";for(length+=n;n>0;){var c1=bytes[i],c2=bytes[i+1],c3=bytes[i+2],b1=(c1-32&63)<<2|(c2-32&63)>>4,b2=(c2-32&63)<<4|(c3-32&63)>>2,b3=(c3-32&63)<<6|bytes[i+3]-32&63;result.push(255&b1),result.push(255&b2),result.push(255&b3),i+=4,n-=3}++i}}return result.slice(0,length)}}(identityFunction))),M:function(callback){return function(data){return callback(data).replace(/[\t\x20]$/gm,"").replace(/=(?:\r\n?|\n|$)/g,"").replace(/=([a-fA-F0-9]{2})/g,(function($0,$1){var codePoint=parseInt($1,16);return String.fromCharCode(codePoint)}))}}(joinChars(bytesToAsciiChars(identityFunction))),m:function(callback){return function(data){return $$("Base64").$decode64(callback(data))}}(joinChars(bytesToAsciiChars(identityFunction))),P:null,p:null};function readBytes(n){return function(bytes){return{chunk:bytes.slice(0,n),rest:bytes=bytes.slice(n,bytes.length)}}}function readNTimesAndMerge(callback){return function(buffer,count){var chunkData,chunk=[];if(count===1/0)for(;buffer.length>0;)buffer=(chunkData=callback(buffer)).rest,chunk=chunk.concat(chunkData.chunk);else for(var i=0;i":readNTimesAndMerge(readBytes(2)),"L>":readNTimesAndMerge(readBytes(4)),"Q>":readNTimesAndMerge(readBytes(8)),c:readNTimesAndMerge(readBytes(1)),s:readNTimesAndMerge(readBytes(2)),l:readNTimesAndMerge(readBytes(4)),q:readNTimesAndMerge(readBytes(8)),j:null,"s>":readNTimesAndMerge(readBytes(2)),"l>":readNTimesAndMerge(readBytes(4)),"q>":readNTimesAndMerge(readBytes(8)),n:null,N:null,v:null,V:null,U:readNTimesAndMerge((function(bytes){var currentByteIndex=0,bytesLength=bytes.length;function readByte(){var result=bytes[currentByteIndex++];return bytesLength=bytes.length-currentByteIndex,result}var extraLength,c=readByte();if(c>>7==0)return{chunk:[c],rest:bytes.slice(currentByteIndex)};c>>6==2&&$Kernel.$raise($$$("ArgumentError"),"malformed UTF-8 character"),c>>5==6?extraLength=1:c>>4==14?extraLength=2:c>>3==30?extraLength=3:c>>2==62?extraLength=4:c>>1==126?extraLength=5:$Kernel.$raise("malformed UTF-8 character"),extraLength>bytesLength&&(expected=extraLength+1,given=bytesLength+1,$Kernel.$raise($$$("ArgumentError"),"malformed UTF-8 character (expected "+expected+" bytes, given "+given+" bytes)"));for(var result=c&(1<<8-extraLength-1)-1,i=0;i>6!=2&&$Kernel.$raise("Invalid multibyte sequence"),result=result<<6|63&c;return result<=65535?{chunk:[result],rest:bytes.slice(currentByteIndex)}:{chunk:[55296+((result-=65536)>>10&1023),56320+(1023&result)],rest:bytes.slice(currentByteIndex)}})),w:readNTimesAndMerge((function(buffer){for(var result=[],i=0;i0&&buffer.length>0;){var singleByte=buffer[0],bitsToTake=Math.min(count,8);Math.ceil(bitsToTake/8);if(buffer=buffer.slice(1,buffer.length),null!=singleByte){var bits=singleByte.toString(2);bits=Array(8-bits.length+1).join("0").concat(bits);for(var j=0;j0&&buffer.length>0;){var singleByte=buffer[0],bitsToTake=Math.min(count,8);Math.ceil(bitsToTake/8);if(buffer=buffer.slice(1,buffer.length),null!=singleByte){var bits=singleByte.toString(2);bits=Array(8-bits.length+1).join("0").concat(bits).split("").reverse().join("");for(var j=0;j0&&buffer.length>0;){var hex=buffer[0].toString(16);buffer=buffer.slice(1,buffer.length),hex=Array(2-hex.length+1).join("0").concat(hex),1===count?(result.push(hex[0]),count--):(result.push(hex[0],hex[1]),count-=2)}return{chunk:result,rest:buffer}},h:function(buffer,count){for(var result=[];count>0&&buffer.length>0;){var hex=buffer[0].toString(16);buffer=buffer.slice(1,buffer.length),hex=Array(2-hex.length+1).join("0").concat(hex),1===count?(result.push(hex[1]),count--):(result.push(hex[1],hex[0]),count-=2)}return{chunk:result,rest:buffer}},u:readNTimesAndMerge((function(buffer){var length=buffer.indexOf(32);return-1===length?{chunk:buffer,rest:[]}:{chunk:buffer.slice(0,length),rest:buffer.slice(length,buffer.length)}})),M:readAll,m:readAll,P:null,p:null},autocompletion={C:!0,S:!0,L:!0,Q:!0,J:null,"S>":!0,"L>":!0,"Q>":!0,c:!0,s:!0,l:!0,q:!0,j:null,"s>":!0,"l>":!0,"q>":!0,n:null,N:null,v:null,V:null,U:!1,w:!1,D:null,d:null,F:null,f:null,E:null,e:null,G:null,g:null,A:!1,a:!1,Z:!1,B:!1,b:!1,H:!1,h:!1,u:!1,M:!1,m:!1,P:null,p:null},optimized={"C*":handlers.C,"c*":handlers.c,"A*":handlers.A,"a*":handlers.a,"M*":wrapIntoArray(handlers.M),"m*":wrapIntoArray(handlers.m),"S*":handlers.S,"s*":handlers.s,"L*":handlers.L,"l*":handlers.l,"Q*":handlers.Q,"q*":handlers.q,"S>*":handlers["S>"],"s>*":handlers["s>"],"L>*":handlers["L>"],"l>*":handlers["l>"],"Q>*":handlers["Q>"],"q>*":handlers["q>"]};function alias(existingDirective,newDirective){readChunk[newDirective]=readChunk[existingDirective],handlers[newDirective]=handlers[existingDirective],autocompletion[newDirective]=autocompletion[existingDirective]}return alias("S>","n"),alias("L>","N"),alias("S","v"),alias("L","V"),$def(self,"$unpack",(function(format,$kwargs){var offset;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");null==(offset=$kwargs.$$smap.offset)&&(offset=0),$truthy($rb_lt(offset,0))&&$Kernel.$raise($$$("ArgumentError"),"offset can't be negative"),format=$Opal["$coerce_to!"](format,$$$("String"),"to_str").$gsub(/\s/,"").$delete("\0");var output=[];if("U*"==format&&"UTF-8"===this.internal_encoding.name&&"function"==typeof this.codePointAt){var j=0;output=new Array(this.length);for(var i=offset;i65535&&i++;return output.slice(0,j)}var buffer=this.$bytes();$truthy($rb_gt(offset,buffer.$length()))&&$Kernel.$raise($$$("ArgumentError"),"offset outside of string"),buffer=buffer.slice(offset);var optimizedHandler=optimized[format];if(optimizedHandler)return optimizedHandler(buffer);return eachDirectiveAndCount(format,(function(directive,count){var part=function(directive,count){var chunk,chunkReader=readChunk[directive];null==chunkReader&&$Kernel.$raise("Unsupported unpack directive "+directive.$inspect()+" (no chunk reader defined)");var chunkData=chunkReader(buffer,count);chunk=chunkData.chunk,buffer=chunkData.rest;var handler=handlers[directive];return null==handler&&$Kernel.$raise("Unsupported unpack directive "+directive.$inspect()+" (no handler defined)"),handler(chunk)}(directive,count);if(count!==1/0){var shouldAutocomplete=autocompletion[directive];null==shouldAutocomplete&&$Kernel.$raise("Unsupported unpack directive "+directive.$inspect()+" (no autocompletion rule defined)"),shouldAutocomplete&&function(array,size){for(;array.length,<,===,raise,class,<=>,equal?"),function($base){var self=$module("::","Comparable"),$ret_or_1=nil;function normalize(what){return Opal.is_a(what,Opal.Integer)?what:$rb_gt(what,0)?1:$rb_lt(what,0)?-1:0}function cmp_or_fail(lhs,rhs){var cmp=lhs["$<=>"](rhs);return $truthy(cmp)||function(lhs,rhs){var class_name;class_name=$eqeqeq(nil,$ret_or_1=rhs)||$eqeqeq(!0,$ret_or_1)||$eqeqeq(!1,$ret_or_1)||$eqeqeq($$$("Integer"),$ret_or_1)||$eqeqeq($$$("Float"),$ret_or_1)?rhs.$inspect():rhs.$$class,$Kernel.$raise($$$("ArgumentError"),"comparison of "+lhs.$class()+" with "+class_name+" failed")}(lhs,rhs),normalize(cmp)}return $def(self,"$==",(function(other){var cmp;return!!$truthy(this["$equal?"](other))||this["$<=>"]!=Opal.Kernel["$<=>"]&&(this.$$comparable?(delete this.$$comparable,!1):!!$truthy(cmp=this["$<=>"](other))&&0==normalize(cmp))}),1),$def(self,"$>",(function(other){return cmp_or_fail(this,other)>0}),1),$def(self,"$>=",(function(other){return cmp_or_fail(this,other)>=0}),1),$def(self,"$<",(function(other){return cmp_or_fail(this,other)<0}),1),$def(self,"$<=",(function(other){return cmp_or_fail(this,other)<=0}),1),$def(self,"$between?",(function(min,max){return!$rb_lt(this,min)&&!$rb_gt(this,max)}),2),$def(self,"$clamp",(function(min,max){var c,excl;if(null==max&&(max=nil),max===nil&&(Opal.is_a(min,Opal.Range)||$Kernel.$raise($$$("TypeError"),"wrong argument type "+min.$class()+" (expected Range)"),excl=min.excl,max=min.end,min=min.begin,max!==nil&&excl&&$Kernel.$raise($$$("ArgumentError"),"cannot clamp with an exclusive range")),min!==nil&&max!==nil&&cmp_or_fail(min,max)>0&&$Kernel.$raise($$$("ArgumentError"),"min argument must be smaller than max argument"),min!==nil){if(0==(c=cmp_or_fail(this,min)))return this;if(c<0)return min}return max!==nil&&(c=cmp_or_fail(this,max))>0?max:this}),-2)}()},Opal.modules.pathname=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def,$defs=Opal.defs,$to_ary=Opal.to_ary,$send=Opal.send,$to_a=Opal.to_a,$neqeq=Opal.neqeq,$rb_plus=Opal.rb_plus,$not=Opal.not,$alias=Opal.alias,$module=Opal.module;return Opal.add_stubs("require,include,quote,===,to_s,path,respond_to?,to_path,is_a?,nil?,raise,class,==,new,pwd,attr_reader,!,relative?,chop_basename,basename,=~,source,[],rindex,sub,absolute?,expand_path,plus,unshift,length,!=,empty?,first,shift,+,join,dirname,pop,reverse_each,directory?,extname,<=>,nonzero?,proc,casecmp,cleanpath,inspect,include?,fill,map,entries"),self.$require("corelib/comparable"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Pathname"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.path=nil,self.$include($$("Comparable")),$const_set($nesting[0],"SEPARATOR_PAT",$regexp([$$("Regexp").$quote($$$($$("File"),"SEPARATOR"))])),$def(self,"$initialize",(function(path){return $eqeqeq($$("Pathname"),path)?this.path=path.$path().$to_s():$truthy(path["$respond_to?"]("to_path"))?this.path=path.$to_path():$truthy(path["$is_a?"]($$("String")))?this.path=path:$truthy(path["$nil?"]())?this.$raise($$("TypeError"),"no implicit conversion of nil into String"):this.$raise($$("TypeError"),"no implicit conversion of "+path.$class()+" into String"),$eqeq(this.path,"\0")?this.$raise($$("ArgumentError")):nil}),1),$defs(self,"$pwd",(function(){return this.$new($$("Dir").$pwd())}),0),self.$attr_reader("path"),$def(self,"$==",(function(other){return other.$path()["$=="](this.path)}),1),$def(self,"$absolute?",(function(){return this["$relative?"]()["$!"]()}),0),$def(self,"$relative?",(function(){var $b,path=nil,r=nil;for(path=this.path;$truthy(r=this.$chop_basename(path));)path=null==($b=$to_ary(r))[0]?nil:$b[0];return path["$=="]("")}),0),$def(self,"$chop_basename",(function(path){var base;return base=$$("File").$basename(path),$truthy($$("Regexp").$new("^"+$$$($$("Pathname"),"SEPARATOR_PAT").$source()+"?$")["$=~"](base))?nil:[path["$[]"](0,path.$rindex(base)),base]}),1),$def(self,"$root?",(function(){return this.path["$=="]("/")}),0),$def(self,"$parent",(function(){var new_path=nil;return new_path=this.path.$sub(/\/([^\/]+\/?$)/,""),$eqeq(new_path,"")&&(new_path=$truthy(this["$absolute?"]())?"/":"."),$$("Pathname").$new(new_path)}),0),$def(self,"$sub",(function($a){var args,self=this;return args=Opal.slice.call(arguments),$$("Pathname").$new($send(self.path,"sub",$to_a(args)))}),-1),$def(self,"$cleanpath",(function(){return Opal.normalize(this.path)}),0),$def(self,"$to_path",(function(){return this.path}),0),$def(self,"$hash",(function(){return this.path}),0),$def(self,"$expand_path",(function(){return $$("Pathname").$new($$("File").$expand_path(this.path))}),0),$def(self,"$+",(function(other){return $eqeqeq($$("Pathname"),other)||(other=$$("Pathname").$new(other)),$$("Pathname").$new(this.$plus(this.path,other.$to_s()))}),1),$def(self,"$plus",(function(path1,path2){var $b,prefix2=nil,index_list2=nil,basename_list2=nil,r2=nil,basename2=nil,prefix1=nil,$ret_or_1=nil,r1=nil,basename1=nil,suffix2=nil;for(prefix2=path2,index_list2=[],basename_list2=[];$truthy(r2=this.$chop_basename(prefix2));)prefix2=null==($b=$to_ary(r2))[0]?nil:$b[0],basename2=null==$b[1]?nil:$b[1],index_list2.$unshift(prefix2.$length()),basename_list2.$unshift(basename2);if($neqeq(prefix2,""))return path2;for(prefix1=path1;$truthy(!0);){for(;$truthy($truthy($ret_or_1=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="]("."):$ret_or_1);)index_list2.$shift(),basename_list2.$shift();if(!$truthy(r1=this.$chop_basename(prefix1)))break;if(prefix1=null==($b=$to_ary(r1))[0]?nil:$b[0],basename1=null==$b[1]?nil:$b[1],!$eqeq(basename1,".")){if($eqeq(basename1,"..")||$truthy(basename_list2["$empty?"]())||$neqeq(basename_list2.$first(),"..")){prefix1=$rb_plus(prefix1,basename1);break}index_list2.$shift(),basename_list2.$shift()}}if(r1=this.$chop_basename(prefix1),$not(r1)&&$truthy($regexp([$$("SEPARATOR_PAT")])["$=~"]($$("File").$basename(prefix1))))for(;$truthy($truthy($ret_or_1=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="](".."):$ret_or_1);)index_list2.$shift(),basename_list2.$shift();return $not(basename_list2["$empty?"]())?(suffix2=path2["$[]"](Opal.Range.$new(index_list2.$first(),-1,!1)),$truthy(r1)?$$("File").$join(prefix1,suffix2):$rb_plus(prefix1,suffix2)):$truthy(r1)?prefix1:$$("File").$dirname(prefix1)}),2),$def(self,"$join",(function($a){try{var $post_args,args,self=this,result=nil;return $post_args=Opal.slice.call(arguments),$truthy((args=$post_args)["$empty?"]())?self:(result=args.$pop(),$eqeqeq($$("Pathname"),result)||(result=$$("Pathname").$new(result)),$truthy(result["$absolute?"]())?result:($send(args,"reverse_each",[],(function(arg){if(null==arg&&(arg=nil),$eqeqeq($$("Pathname"),arg)||(arg=$$("Pathname").$new(arg)),result=$rb_plus(arg,result),!$truthy(result["$absolute?"]()))return nil;Opal.ret(result)}),1),$rb_plus(self,result)))}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$split",(function(){return[this.$dirname(),this.$basename()]}),0),$def(self,"$dirname",(function(){return $$("Pathname").$new($$("File").$dirname(this.path))}),0),$def(self,"$basename",(function(){return $$("Pathname").$new($$("File").$basename(this.path))}),0),$def(self,"$directory?",(function(){return $$("File")["$directory?"](this.path)}),0),$def(self,"$extname",(function(){return $$("File").$extname(this.path)}),0),$def(self,"$<=>",(function(other){return this.$path()["$<=>"](other.$path())}),1),$const_set($nesting[0],"SAME_PATHS",$truthy($$$($$("File"),"FNM_SYSCASE")["$nonzero?"]())?$send(self,"proc",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a.$casecmp(b)["$=="](0)}),2):$send(self,"proc",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a["$=="](b)}),2)),$def(self,"$relative_path_from",(function(base_directory){var $b,dest_directory,dest_prefix=nil,dest_names=nil,r=nil,basename=nil,base_prefix=nil,base_names=nil,$ret_or_1=nil,$ret_or_2=nil,relpath_names=nil;for(dest_directory=this.$cleanpath().$to_s(),base_directory=base_directory.$cleanpath().$to_s(),dest_prefix=dest_directory,dest_names=[];$truthy(r=this.$chop_basename(dest_prefix));)dest_prefix=null==($b=$to_ary(r))[0]?nil:$b[0],basename=null==$b[1]?nil:$b[1],$neqeq(basename,".")&&dest_names.$unshift(basename);for(base_prefix=base_directory,base_names=[];$truthy(r=this.$chop_basename(base_prefix));)base_prefix=null==($b=$to_ary(r))[0]?nil:$b[0],basename=null==$b[1]?nil:$b[1],$neqeq(basename,".")&&base_names.$unshift(basename);for($truthy($$("SAME_PATHS")["$[]"](dest_prefix,base_prefix))||this.$raise($$("ArgumentError"),"different prefix: "+dest_prefix.$inspect()+" and "+base_directory.$inspect());$truthy($truthy($ret_or_1=$truthy($ret_or_2=dest_names["$empty?"]()["$!"]())?base_names["$empty?"]()["$!"]():$ret_or_2)?$$("SAME_PATHS")["$[]"](dest_names.$first(),base_names.$first()):$ret_or_1);)dest_names.$shift(),base_names.$shift();return $truthy(base_names["$include?"](".."))&&this.$raise($$("ArgumentError"),"base_directory has ..: "+base_directory.$inspect()),base_names.$fill(".."),relpath_names=$rb_plus(base_names,dest_names),$truthy(relpath_names["$empty?"]())?$$("Pathname").$new("."):$$("Pathname").$new($send($$("File"),"join",$to_a(relpath_names)))}),1),$def(self,"$entries",(function(){return $send($$("Dir").$entries(this.path),"map",[],(function $$11(f){return null==f&&(f=nil),(null==$$11.$$s?this:$$11.$$s).$class().$new(f)}),{$$arity:1,$$s:this})}),0),$alias(self,"===","=="),$alias(self,"eql?","=="),$alias(self,"to_s","to_path"),$alias(self,"to_str","to_path")}($nesting[0],0,$nesting),function($base,$parent_nesting){var self=$module($base,"Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$Pathname",(function(path){return $$("Pathname").$new(path)}),1)}($nesting[0],$nesting)},Opal.modules["opal/hike"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$hash2=Opal.hash2,$def=Opal.def,$truthy=Opal.truthy,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$to_ary=Opal.to_ary,$regexp=Opal.regexp,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,attr_reader,freeze,dup,map,new,to_s,sub,=~,find_in_base_path,find_in_paths,[],directory?,sort,reject,entries,[]=,-,key?,exist?,stat,protected,is_a?,last,pop,split,each,match,join,to_proc,paths_contain?,pattern_for,select,sort_matches,file?,any?,paths,==,length,build_pattern_for,extensions,escape,sort_by,scan,inject,index,+,expand_path,concat,normalize_path,normalize_extension,find,root,private,start_with?,relative?"),self.$require("pathname"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Hike")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Index"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.root=$proto.entries=$proto.stats=$proto.pathnames=$proto.patterns=nil,self.$attr_reader("paths"),self.$attr_reader("extensions"),$def(self,"$initialize",(function(root,paths,extensions){return this.root=root,this.paths=paths.$dup().$freeze(),this.extensions=extensions.$dup().$freeze(),this.pathnames=$send(paths,"map",[],(function(path){return null==path&&(path=nil),$$("Pathname").$new(path)}),1),this.stats=$hash2([],{}),this.entries=$hash2([],{}),this.patterns=$hash2([],{})}),3),$def(self,"$root",(function(){return this.root.$to_s()}),0),$def(self,"$index",(function(){return this}),0),$def(self,"$find",(function(logical_path){try{var base_path;return base_path=$$("Pathname").$new(this.root),logical_path=$$("Pathname").$new(logical_path.$sub(/^\//,"")),$truthy(logical_path.$to_s()["$=~"](/^\.\.?\//))?$send(this,"find_in_base_path",[logical_path,base_path],(function(path){null==path&&(path=nil),Opal.ret(path)}),1):$send(this,"find_in_paths",[logical_path],(function(path){null==path&&(path=nil),Opal.ret(path)}),1),nil}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),1),$def(self,"$entries",(function(path){var $ret_or_1,$writer=nil,pathname=nil;return $truthy($ret_or_1=this.entries["$[]"](path.$to_s()))?$ret_or_1:($writer=[path.$to_s(),(pathname=$$("Pathname").$new(path),$truthy(pathname["$directory?"]())?$send(pathname.$entries(),"reject",[],(function(entry){return null==entry&&(entry=nil),entry.$to_s()["$=~"](/^\.|~$|^\#.*\#$/)}),1).$sort():[])],$send(this.entries,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),1),$def(self,"$stat",(function(path){var key,$writer=nil;return key=path.$to_s(),$truthy(this.stats["$key?"](key))?this.stats["$[]"](key):$truthy($$("File")["$exist?"](path))?($writer=[key,$$("File").$stat(path)],$send(this.stats,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):($writer=[key,nil],$send(this.stats,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),1),self.$protected(),$def(self,"$extract_options!",(function(arguments$){return $truthy(arguments$.$last()["$is_a?"]($$("Hash")))?arguments$.$pop().$dup():$hash2([],{})}),1),$def(self,"$find_in_paths",(function $$find_in_paths(logical_path){var $a,$b,dirname,basename,block=$$find_in_paths.$$p||nil;return delete $$find_in_paths.$$p,$b=logical_path.$split(),$a=$to_ary($b),dirname=null==$a[0]?nil:$a[0],basename=null==$a[1]?nil:$a[1],$send(this.pathnames,"each",[],(function $$6(base_path){return null==base_path&&(base_path=nil),$send(null==$$6.$$s?this:$$6.$$s,"match",[base_path.$join(dirname),basename],block.$to_proc())}),{$$arity:1,$$s:this})}),1),$def(self,"$find_in_base_path",(function $$find_in_base_path(logical_path,base_path){var $a,$b,dirname,basename,block=$$find_in_base_path.$$p||nil;return delete $$find_in_base_path.$$p,$b=base_path.$join(logical_path).$split(),dirname=null==($a=$to_ary($b))[0]?nil:$a[0],basename=null==$a[1]?nil:$a[1],$truthy(this["$paths_contain?"](dirname))?$send(this,"match",[dirname,basename],block.$to_proc()):nil}),2),$def(self,"$match",(function $$match(dirname,basename){var pattern,$yield=$$match.$$p||nil,matches=nil;return delete $$match.$$p,matches=this.$entries(dirname),pattern=this.$pattern_for(basename),matches=$send(matches,"select",[],(function(m){return null==m&&(m=nil),m.$to_s()["$=~"](pattern)}),1),$send(this.$sort_matches(matches,basename),"each",[],(function $$8(path){var self=null==$$8.$$s?this:$$8.$$s,pathname=nil,stat=nil;return null==path&&(path=nil),pathname=dirname.$join(path),stat=self.$stat(pathname),$truthy(stat)&&$truthy(stat["$file?"]())?Opal.yield1($yield,pathname.$to_s()):nil}),{$$arity:1,$$s:this})}),2),$def(self,"$paths_contain?",(function(dirname){return $send(this.$paths(),"any?",[],(function(path){return null==path&&(path=nil),dirname.$to_s()["$[]"](0,path.$length())["$=="](path)}),1)}),1),$def(self,"$pattern_for",(function(basename){var $ret_or_1,$writer=nil;return $truthy($ret_or_1=this.patterns["$[]"](basename))?$ret_or_1:($writer=[basename,this.$build_pattern_for(basename)],$send(this.patterns,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),1),$def(self,"$build_pattern_for",(function(basename){var extension_pattern;return extension_pattern=$send(this.$extensions(),"map",[],(function(e){return null==e&&(e=nil),$$("Regexp").$escape(e)}),1).$join("|"),$regexp(["^",basename,"(?:",extension_pattern,")*$"])}),1),$def(self,"$sort_matches",(function(matches,basename){return $send(matches,"sort_by",[],(function $$12(match){var extnames,self=null==$$12.$$s?this:$$12.$$s;return null==match&&(match=nil),extnames=match.$sub(basename.$to_s(),"").$to_s().$scan(/\.[^.]+/),$send(extnames,"inject",[0],(function $$13(sum,ext){var index;return null==sum&&(sum=nil),null==ext&&(ext=nil),index=(null==$$13.$$s?this:$$13.$$s).$extensions().$index(ext),$truthy(index)?$rb_plus($rb_plus(sum,index),1):sum}),{$$arity:2,$$s:self})}),{$$arity:1,$$s:this})}),2)}($nesting[0],0,$nesting),function($base,$super,$parent_nesting){var self=$klass($base,null,"Trail"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.root=$proto.paths=$proto.extensions=nil,self.$attr_reader("paths"),self.$attr_reader("extensions"),$def(self,"$initialize",(function(root){return null==root&&(root="."),this.root=$$("Pathname").$new(root).$expand_path(),this.paths=[],this.extensions=[]}),-1),$def(self,"$root",(function(){return this.root.$to_s()}),0),$def(self,"$append_paths",(function($a){var paths,self=this;return paths=Opal.slice.call(arguments),self.paths.$concat($send(paths,"map",[],(function $$14(p){return null==p&&(p=nil),(null==$$14.$$s?this:$$14.$$s).$normalize_path(p)}),{$$arity:1,$$s:self}))}),-1),$def(self,"$append_extensions",(function($a){var extensions,self=this;return extensions=Opal.slice.call(arguments),self.extensions.$concat($send(extensions,"map",[],(function $$15(e){return null==e&&(e=nil),(null==$$15.$$s?this:$$15.$$s).$normalize_extension(e)}),{$$arity:1,$$s:self}))}),-1),$def(self,"$find",(function $$find($a){var args,block=$$find.$$p||nil,self=this;return delete $$find.$$p,args=Opal.slice.call(arguments),$send(self.$index(),"find",$to_a(args),block.$to_proc())}),-1),$def(self,"$index",(function(){return $$("Index").$new(this.$root(),this.$paths(),this.$extensions())}),0),$def(self,"$entries",(function(path){var pathname=nil;return pathname=$$("Pathname").$new(path),$truthy(pathname["$directory?"]())?$send(pathname.$entries(),"reject",[],(function(entry){return null==entry&&(entry=nil),entry.$to_s()["$=~"](/^\.|~$|^\#.*\#$/)}),1).$sort():[]}),1),$def(self,"$stat",(function(path){return $truthy($$("File")["$exist?"](path))?$$("File").$stat(path.$to_s()):nil}),1),self.$private(),$def(self,"$normalize_extension",(function(ext){return $truthy(ext["$start_with?"]("."))?ext:"."+ext}),1),$def(self,"$normalize_path",(function(path){return path=$$("Pathname").$new(path),$truthy(path["$relative?"]())&&(path=this.root.$join(path)),path.$expand_path().$to_s()}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/path_reader"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$send=Opal.send,$to_a=Opal.to_a,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("require,freeze,quote,paths,new,append_paths,append_extensions,expand,nil?,exist?,open,to_proc,=~,absolute?,find_path,file_finder,extensions,private,Pathname,find,attr_reader"),self.$require("opal/regexp_anchors"),self.$require("opal/hike"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"PathReader"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.file_finder=nil,$const_set($nesting[0],"RELATIVE_PATH_REGEXP",$regexp([$$$($$("Opal"),"REGEXP_START"),"\\.?\\.",$$("Regexp").$quote($$$($$("File"),"SEPARATOR"))]).$freeze()),$const_set($nesting[0],"DEFAULT_EXTENSIONS",[".js",".js.rb",".rb",".opalerb"].$freeze()),$def(self,"$initialize",(function(paths,extensions){return null==paths&&(paths=$$("Opal").$paths()),null==extensions&&(extensions=$$("DEFAULT_EXTENSIONS")),this.file_finder=$$$($$("Hike"),"Trail").$new(),$send(this.file_finder,"append_paths",$to_a(paths)),$send(this.file_finder,"append_extensions",$to_a(extensions))}),-1),$def(self,"$read",(function(path){var full_path=nil;return full_path=this.$expand(path),$truthy(full_path["$nil?"]())?nil:$truthy($$("File")["$exist?"](full_path))?$send($$("File"),"open",[full_path,"rb:UTF-8"],"read".$to_proc()):nil}),1),$def(self,"$expand",(function(path){return $truthy($$("Pathname").$new(path)["$absolute?"]())||$truthy(path["$=~"]($$("RELATIVE_PATH_REGEXP")))?path:this.$find_path(path)}),1),$def(self,"$paths",(function(){return this.$file_finder().$paths()}),0),$def(self,"$extensions",(function(){return this.$file_finder().$extensions()}),0),$def(self,"$append_paths",(function($a){var paths,self=this;return paths=Opal.slice.call(arguments),$send(self.$file_finder(),"append_paths",$to_a(paths))}),-1),self.$private(),$def(self,"$find_path",(function(path){var pathname=nil;return pathname=this.$Pathname(path),$truthy(pathname["$absolute?"]())&&$truthy(pathname["$exist?"]())?path:this.$file_finder().$find(path)}),1),self.$attr_reader("file_finder")}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/paths"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$defs=Opal.defs,$send=Opal.send,$to_a=Opal.to_a,$def=Opal.def,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus;return Opal.add_stubs("expand_path,append_paths,concat,require_paths_for_gem,private,find_by_name,raise,each,runtime_dependencies,+,name,gem_dir,map,require_paths,<<,join,extend,freeze,core_dir,std_dir,reset_paths!"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$gem_dir",(function(){return $$("File").$expand_path("../..","opal/paths.rb")}),0),$defs(self,"$core_dir",(function(){return $$("File").$expand_path("../../../opal","opal/paths.rb")}),0),$defs(self,"$std_dir",(function(){return $$("File").$expand_path("../../../stdlib","opal/paths.rb")}),0),$defs(self,"$append_path",(function(path){return this.$append_paths(path)}),1),$defs(self,"$append_paths",(function($a){var paths,self=this;return null==self.paths&&(self.paths=nil),paths=Opal.slice.call(arguments),self.paths.$concat(paths),nil}),-1),function($base,$parent_nesting){var self=$module($base,"UseGem"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$use_gem",(function(gem_name,include_dependencies){return null==include_dependencies&&(include_dependencies=!0),$send(this,"append_paths",$to_a(this.$require_paths_for_gem(gem_name,include_dependencies)))}),-2),self.$private(),$def(self,"$require_paths_for_gem",(function(gem_name,include_dependencies){var gem_dir,paths=nil,spec=nil;return paths=[],spec=$$$($$("Gem"),"Specification").$find_by_name(gem_name),$truthy(spec)||this.$raise($$("GemNotFound"),gem_name),$truthy(include_dependencies)&&$send(spec.$runtime_dependencies(),"each",[],(function $$1(dependency){return null==dependency&&(dependency=nil),paths=$rb_plus(paths,(null==$$1.$$s?this:$$1.$$s).$require_paths_for_gem(dependency.$name(),include_dependencies))}),{$$arity:1,$$s:this}),gem_dir=spec.$gem_dir(),$send(spec.$require_paths(),"map",[],(function(path){return null==path&&(path=nil),paths["$<<"]($$("File").$join(gem_dir,path))}),1),paths}),2)}($nesting[0],$nesting),self.$extend($$("UseGem")),$defs(self,"$paths",(function(){return null==this.paths&&(this.paths=nil),this.paths.$freeze()}),0),$defs(self,"$reset_paths!",(function(){return this.paths=[this.$core_dir(),this.$std_dir(),this.$gem_dir()],nil}),0),self["$reset_paths!"]()}($nesting[0],$nesting)},Opal.modules.set=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$defs=Opal.defs,$hash2=Opal.hash2,$truthy=Opal.truthy,$eqeqeq=Opal.eqeqeq,$Kernel=Opal.Kernel,$send=Opal.send,$def=Opal.def,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_lt=Opal.rb_lt,$rb_le=Opal.rb_le,$alias=Opal.alias,$module=Opal.module;return Opal.add_stubs("include,new,nil?,===,raise,each,add,merge,class,respond_to?,subtract,dup,join,to_a,equal?,instance_of?,==,instance_variable_get,size,is_a?,all?,include?,[]=,-,enum_for,[],<<,replace,delete,select,reject,delete_if,to_proc,keep_if,each_key,empty?,eql?,instance_eval,clear,<,<=,any?,!,intersect?,keys"),function($base,$super){var self=$klass("::",null,"Set");function is_set(set){$truthy(set["$is_a?"]($$$("Set")))||$Kernel.$raise($$$("ArgumentError"),"value must be a set")}self.$$prototype.hash=nil,self.$include($$$("Enumerable")),$defs(self,"$[]",(function($a){var ary,self=this;return ary=Opal.slice.call(arguments),self.$new(ary)}),-1),$def(self,"$initialize",(function $$initialize(enum$){var block=$$initialize.$$p||nil;return delete $$initialize.$$p,null==enum$&&(enum$=nil),this.hash=$hash2([],{}),$truthy(enum$["$nil?"]())?nil:($eqeqeq($$$("Enumerable"),enum$)||$Kernel.$raise($$$("ArgumentError"),"value must be enumerable"),$truthy(block)?$send(enum$,"each",[],(function $$2(item){return null==item&&(item=nil),(null==$$2.$$s?this:$$2.$$s).$add(Opal.yield1(block,item))}),{$$arity:1,$$s:this}):this.$merge(enum$))}),-1),$def(self,"$dup",(function(){return this.$class().$new().$merge(this)}),0),$def(self,"$-",(function(enum$){return $truthy(enum$["$respond_to?"]("each"))||$Kernel.$raise($$$("ArgumentError"),"value must be enumerable"),this.$dup().$subtract(enum$)}),1),$def(self,"$inspect",(function(){return"#"}),0),$def(self,"$==",(function(other){return!!$truthy(this["$equal?"](other))||($truthy(other["$instance_of?"](this.$class()))?this.hash["$=="](other.$instance_variable_get("@hash")):!(!$truthy(other["$is_a?"]($$$("Set")))||!$eqeq(this.$size(),other.$size()))&&$send(other,"all?",[],(function $$5(o){var self=null==$$5.$$s?this:$$5.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash["$include?"](o)}),{$$arity:1,$$s:this}))}),1),$def(self,"$add",(function(o){var $writer;return $writer=[o,!0],$send(this.hash,"[]=",$to_a($writer)),$rb_minus($writer.length,1),this}),1),$def(self,"$classify",(function $$classify(){var block=$$classify.$$p||nil,result=nil;return delete $$classify.$$p,block===nil?this.$enum_for("classify"):(result=$send($$$("Hash"),"new",[],(function $$6(h,k){var $writer;return null==h&&(h=nil),null==k&&(k=nil),$writer=[k,(null==$$6.$$s?this:$$6.$$s).$class().$new()],$send(h,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:2,$$s:this}),$send(this,"each",[],(function(item){return null==item&&(item=nil),result["$[]"](Opal.yield1(block,item)).$add(item)}),1),result)}),0),$def(self,"$collect!",(function $Set_collect$excl$8(){var block=$Set_collect$excl$8.$$p||nil,result=nil;return delete $Set_collect$excl$8.$$p,block===nil?this.$enum_for("collect!"):(result=this.$class().$new(),$send(this,"each",[],(function(item){return null==item&&(item=nil),result["$<<"](Opal.yield1(block,item))}),1),this.$replace(result))}),0),$def(self,"$delete",(function(o){return this.hash.$delete(o),this}),1),$def(self,"$delete?",(function(o){return $truthy(this["$include?"](o))?(this.$delete(o),this):nil}),1),$def(self,"$delete_if",(function $$delete_if(){var $yield=$$delete_if.$$p||nil;return delete $$delete_if.$$p,$yield===nil?this.$enum_for("delete_if"):($send($send(this,"select",[],(function(o){return null==o&&(o=nil),Opal.yield1($yield,o)}),1),"each",[],(function $$13(o){var self=null==$$13.$$s?this:$$13.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash.$delete(o)}),{$$arity:1,$$s:this}),this)}),0),$def(self,"$keep_if",(function $$keep_if(){var $yield=$$keep_if.$$p||nil;return delete $$keep_if.$$p,$yield===nil?this.$enum_for("keep_if"):($send($send(this,"reject",[],(function(o){return null==o&&(o=nil),Opal.yield1($yield,o)}),1),"each",[],(function $$15(o){var self=null==$$15.$$s?this:$$15.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash.$delete(o)}),{$$arity:1,$$s:this}),this)}),0),$def(self,"$reject!",(function $Set_reject$excl$16(){var before,block=$Set_reject$excl$16.$$p||nil;return delete $Set_reject$excl$16.$$p,block===nil?this.$enum_for("reject!"):(before=this.$size(),$send(this,"delete_if",[],block.$to_proc()),$eqeq(this.$size(),before)?nil:this)}),0),$def(self,"$select!",(function $Set_select$excl$17(){var before,block=$Set_select$excl$17.$$p||nil;return delete $Set_select$excl$17.$$p,block===nil?this.$enum_for("select!"):(before=this.$size(),$send(this,"keep_if",[],block.$to_proc()),$eqeq(this.$size(),before)?nil:this)}),0),$def(self,"$add?",(function(o){return $truthy(this["$include?"](o))?nil:this.$add(o)}),1),$def(self,"$each",(function $$each(){var block=$$each.$$p||nil;return delete $$each.$$p,block===nil?this.$enum_for("each"):($send(this.hash,"each_key",[],block.$to_proc()),this)}),0),$def(self,"$empty?",(function(){return this.hash["$empty?"]()}),0),$def(self,"$eql?",(function(other){return this.hash["$eql?"]($send(other,"instance_eval",[],(function $$21(){var self=null==$$21.$$s?this:$$21.$$s;return null==self.hash&&(self.hash=nil),self.hash}),{$$arity:0,$$s:this}))}),1),$def(self,"$clear",(function(){return this.hash.$clear(),this}),0),$def(self,"$include?",(function(o){return this.hash["$include?"](o)}),1),$def(self,"$merge",(function(enum$){return $send(enum$,"each",[],(function $$23(item){return null==item&&(item=nil),(null==$$23.$$s?this:$$23.$$s).$add(item)}),{$$arity:1,$$s:this}),this}),1),$def(self,"$replace",(function(enum$){return this.$clear(),this.$merge(enum$),this}),1),$def(self,"$size",(function(){return this.hash.$size()}),0),$def(self,"$subtract",(function(enum$){return $send(enum$,"each",[],(function $$24(item){return null==item&&(item=nil),(null==$$24.$$s?this:$$24.$$s).$delete(item)}),{$$arity:1,$$s:this}),this}),1),$def(self,"$|",(function(enum$){return $truthy(enum$["$respond_to?"]("each"))||$Kernel.$raise($$$("ArgumentError"),"value must be enumerable"),this.$dup().$merge(enum$)}),1),$def(self,"$superset?",(function(set){return is_set(set),!$truthy($rb_lt(this.$size(),set.$size()))&&$send(set,"all?",[],(function $$27(o){return null==o&&(o=nil),(null==$$27.$$s?this:$$27.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$proper_superset?",(function(set){return is_set(set),!$truthy($rb_le(this.$size(),set.$size()))&&$send(set,"all?",[],(function $$29(o){return null==o&&(o=nil),(null==$$29.$$s?this:$$29.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$subset?",(function(set){return is_set(set),!$truthy($rb_lt(set.$size(),this.$size()))&&$send(this,"all?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1)}),1),$def(self,"$proper_subset?",(function(set){return is_set(set),!$truthy($rb_le(set.$size(),this.$size()))&&$send(this,"all?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1)}),1),$def(self,"$intersect?",(function(set){return is_set(set),$truthy($rb_lt(this.$size(),set.$size()))?$send(this,"any?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1):$send(set,"any?",[],(function $$36(o){return null==o&&(o=nil),(null==$$36.$$s?this:$$36.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$disjoint?",(function(set){return this["$intersect?"](set)["$!"]()}),1),$def(self,"$to_a",(function(){return this.hash.$keys()}),0),$alias(self,"+","|"),$alias(self,"<","proper_subset?"),$alias(self,"<<","add"),$alias(self,"<=","subset?"),$alias(self,">","proper_superset?"),$alias(self,">=","superset?"),$alias(self,"difference","-"),$alias(self,"filter!","select!"),$alias(self,"length","size"),$alias(self,"map!","collect!"),$alias(self,"member?","include?"),$alias(self,"union","|")}(),function($base,$parent_nesting){var self=$module("::","Enumerable"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$to_set",(function $$to_set($a,$b){var $post_args,klass,block=$$to_set.$$p||nil,self=this;return delete $$to_set.$$p,($post_args=Opal.slice.call(arguments)).length>0&&(klass=$post_args.shift()),null==klass&&(klass=$$("Set")),$send(klass,"new",[self].concat($to_a($post_args)),block.$to_proc())}),-1)}(0,[])},Opal.modules["opal/config"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$truthy=Opal.truthy,$hash2=Opal.hash2,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeqeq=Opal.eqeqeq,$lambda=Opal.lambda;return Opal.add_stubs("require,extend,private,fetch,[]=,config_options,-,define_singleton_method,config,any?,===,raise,inspect,public,each,call,default_config,config_option,new"),self.$require("set"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Config"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$extend(self),self.$private(),$def(self,"$config_options",(function(){var $ret_or_1;return null==this.config_options&&(this.config_options=nil),this.config_options=$truthy($ret_or_1=this.config_options)?$ret_or_1:$hash2([],{})}),0),$def(self,"$config_option",(function(name,default_value,options){var compiler,valid_values=nil,$writer=nil;return null==options&&(options=$hash2([],{})),compiler=options.$fetch("compiler_option",nil),valid_values=options.$fetch("valid_values",[!0,!1]),$writer=[name,$hash2(["default","compiler"],{default:default_value,compiler:compiler})],$send(this.$config_options(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$send(this,"define_singleton_method",[name],(function $$1(){return(null==$$1.$$s?this:$$1.$$s).$config().$fetch(name,default_value)}),{$$arity:0,$$s:this}),$send(this,"define_singleton_method",[name+"="],(function $$2(value){var self=null==$$2.$$s?this:$$2.$$s;return null==value&&(value=nil),$truthy($send(valid_values,"any?",[],(function(valid_value){return null==valid_value&&(valid_value=nil),valid_value["$==="](value)}),1))||self.$raise($$("ArgumentError"),"Not a valid value for option "+self+"."+name+", provided "+value.$inspect()+". Must be "+valid_values.$inspect()+" === "+value.$inspect()),$writer=[name,value],$send(self.$config(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this})}),-3),self.$public(),$def(self,"$default_config",(function(){var default_config;return default_config=$hash2([],{}),$send(this.$config_options(),"each",[],(function(name,options){var $writer,default_value=nil;return null==name&&(name=nil),null==options&&(options=nil),default_value=options.$fetch("default"),default_value=$eqeqeq($$("Proc"),default_value)?default_value.$call():default_value,$send(default_config,"[]=",$to_a($writer=[name,default_value])),$writer[$rb_minus($writer.length,1)]}),2),default_config}),0),$def(self,"$compiler_options",(function(){var compiler_options;return compiler_options=$hash2([],{}),$send(this.$config_options(),"each",[],(function $$5(name,options){var $writer,self=null==$$5.$$s?this:$$5.$$s;return null==name&&(name=nil),null==options&&(options=nil),$writer=[options.$fetch("compiler"),self.$config().$fetch(name)],$send(compiler_options,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:2,$$s:this}),compiler_options}),0),$def(self,"$config",(function(){var $ret_or_1;return null==this.config&&(this.config=nil),this.config=$truthy($ret_or_1=this.config)?$ret_or_1:this.$default_config()}),0),$def(self,"$reset!",(function(){return this.config=nil}),0),self.$config_option("method_missing_enabled",!0,$hash2(["compiler_option"],{compiler_option:"method_missing"})),self.$config_option("const_missing_enabled",!0,$hash2(["compiler_option"],{compiler_option:"const_missing"})),self.$config_option("arity_check_enabled",!1,$hash2(["compiler_option"],{compiler_option:"arity_check"})),self.$config_option("freezing_stubs_enabled",!0,$hash2(["compiler_option"],{compiler_option:"freezing"})),self.$config_option("esm",!1,$hash2(["compiler_option"],{compiler_option:"esm"})),self.$config_option("dynamic_require_severity","warning",$hash2(["compiler_option","valid_values"],{compiler_option:"dynamic_require_severity",valid_values:["error","warning","ignore"]})),self.$config_option("missing_require_severity","error",$hash2(["valid_values"],{valid_values:["error","warning","ignore"]})),self.$config_option("irb_enabled",!1,$hash2(["compiler_option"],{compiler_option:"irb"})),self.$config_option("inline_operators_enabled",!0,$hash2(["compiler_option"],{compiler_option:"inline_operators"})),self.$config_option("source_map_enabled",!0),self.$config_option("stubbed_files",$lambda((function(){return $$("Set").$new()}),0),$hash2(["valid_values"],{valid_values:[$$("Set")]}))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/cache"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$truthy=Opal.truthy,$not=Opal.not,$eqeq=Opal.eqeq,$defs=Opal.defs,$klass=Opal.klass,$def=Opal.def,$send=Opal.send,$rb_plus=Opal.rb_plus,$gvars=Opal.gvars,$range=Opal.range;return Opal.add_stubs("require,attr_writer,singleton_class,!,find_dir,[],==,new,module_function,respond_to?,fetch,to_proc,+,digest,join,runtime_key,get,set,expand_path,gem_dir,grep,map,sort,size,to_f,mtime,to_s,to_i,hexdigest"),self.$require("opal/paths"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$singleton_class().$attr_writer("cache"),$defs(self,"$cache",(function(){var $ret_or_1;return null==this.cache&&(this.cache=nil),this.cache=$truthy($ret_or_1=this.cache)?$ret_or_1:$eqeq($$("RUBY_ENGINE"),"opal")||$truthy($$("ENV")["$[]"]("OPAL_CACHE_DISABLE"))||$not($$$($$("Cache"),"FileCache").$find_dir())?$$$($$("Cache"),"NullCache").$new():$$$($$("Cache"),"FileCache").$new()}),0),function($base,$parent_nesting){var self=$module($base,"Cache"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,null,"NullCache");$def(self,"$fetch",(function $$fetch($a){var $yield=$$fetch.$$p||nil;return delete $$fetch.$$p,Opal.slice.call(arguments),Opal.yieldX($yield,[])}),-1)}($nesting[0]),self.$module_function(),$def(self,"$fetch",(function $$fetch(cache,key){var data,$ret_or_1,block=$$fetch.$$p||nil,compiler=nil;return delete $$fetch.$$p,$truthy(cache["$respond_to?"]("fetch"))?$send(cache,"fetch",[key],block.$to_proc()):(key=$rb_plus($rb_plus(this.$digest(key.$join("/")),"-"),this.$runtime_key()),data=cache.$get(key),$truthy($ret_or_1=data)?$ret_or_1:(compiler=Opal.yieldX(block,[]),cache.$set(key,compiler),compiler))}),2),$def(self,"$runtime_key",(function(){var $ret_or_1,opal_path=nil,files=nil;return null==this.runtime_key&&(this.runtime_key=nil),null==$gvars.LOADED_FEATURES&&($gvars.LOADED_FEATURES=nil),this.runtime_key=$truthy($ret_or_1=this.runtime_key)?$ret_or_1:(opal_path=$$("File").$expand_path("..",$$("Opal").$gem_dir()),files=$$("Dir")["$[]"](opal_path+"/{Gemfile*,*.gemspec,lib/**/*}"),files=$rb_plus(files,$gvars.LOADED_FEATURES.$grep(/lib\/(parser|ast)/)),this.$digest([$send(files.$sort(),"map",[],(function(f){return null==f&&(f=nil),f+":"+$$("File").$size(f)+":"+$$("File").$mtime(f).$to_f()}),1),$$("RUBY_VERSION"),$$("RUBY_PATCHLEVEL")].$join("/")))}),0),$def(self,"$digest",(function(string){return $$$($$$("Digest"),"SHA256").$hexdigest(string)["$[]"]($range(-32,-1,!1)).$to_i(16).$to_s(36)}),1)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/builder"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$defs=Opal.defs,$send=Opal.send,$hash2=Opal.hash2,$Opal=Opal.Opal,$def=Opal.def,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$send2=Opal.send2,$find_super=Opal.find_super,$not=Opal.not,$lambda=Opal.lambda,$eqeqeq=Opal.eqeqeq;return Opal.add_stubs("require,include?,processors,<<,each,extensions,each_pair,public_send,new,paths,flatten,map,compiler_options,missing_require_severity,cache,build,to_proc,build_str,source_for,read,nil?,expand_path,expand_ext,processor_for,+,preload,requires,tree_requires,process_require,autoloads,processed,raise,inspect,message,backtrace,dup,stubs,path_reader,prerequired,to_sym,join,append_paths,include,attr_reader,attr_accessor,private,empty?,to_s,pwd,dirname,Pathname,flat_map,required_trees,find,start_with?,glob,relative_path_from,match?,!,merge,[],===,warn,already_processed,stub?,process_requires,expand,basename"),self.$require("opal/path_reader"),self.$require("opal/paths"),self.$require("opal/config"),self.$require("opal/cache"),self.$require("set"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Builder"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.stubs=$proto.preload=$proto.processors=$proto.path_reader=$proto.prerequired=$proto.compiler_options=$proto.missing_require_severity=$proto.cache=$proto.already_processed=nil,$defs(self,"$processors",(function(){var $ret_or_1;return null==this.processors&&(this.processors=nil),this.processors=$truthy($ret_or_1=this.processors)?$ret_or_1:[]}),0),$defs(self,"$extensions",(function(){var $ret_or_1;return null==this.extensions&&(this.extensions=nil),this.extensions=$truthy($ret_or_1=this.extensions)?$ret_or_1:[]}),0),$defs(self,"$register_processor",(function(processor,processor_extensions){return $truthy(this.$processors()["$include?"](processor))?nil:(this.$processors()["$<<"](processor),$send(processor_extensions,"each",[],(function $$1(ext){return null==ext&&(ext=nil),(null==$$1.$$s?this:$$1.$$s).$extensions()["$<<"](ext)}),{$$arity:1,$$s:this}))}),2),$klass($nesting[0],$$("LoadError"),"MissingRequire"),$klass($nesting[0],$$("LoadError"),"ProcessorNotFound"),$def(self,"$initialize",(function(options){var $ret_or_1=nil;return null==options&&(options=nil),$send($truthy($ret_or_1=options)?$ret_or_1:$hash2([],{}),"each_pair",[],(function $$2(k,v){return null==k&&(k=nil),null==v&&(v=nil),(null==$$2.$$s?this:$$2.$$s).$public_send(k+"=",v)}),{$$arity:2,$$s:this}),this.stubs=$truthy($ret_or_1=this.stubs)?$ret_or_1:[],this.preload=$truthy($ret_or_1=this.preload)?$ret_or_1:[],this.processors=$truthy($ret_or_1=this.processors)?$ret_or_1:$$$($Opal,"Builder").$processors(),this.path_reader=$truthy($ret_or_1=this.path_reader)?$ret_or_1:$$("PathReader").$new($$("Opal").$paths(),$send(this.$extensions(),"map",[],(function(e){return null==e&&(e=nil),["."+e,".js."+e]}),1).$flatten()),this.prerequired=$truthy($ret_or_1=this.prerequired)?$ret_or_1:[],this.compiler_options=$truthy($ret_or_1=this.compiler_options)?$ret_or_1:$$$($$("Opal"),"Config").$compiler_options(),this.missing_require_severity=$truthy($ret_or_1=this.missing_require_severity)?$ret_or_1:$$$($$("Opal"),"Config").$missing_require_severity(),this.cache=$truthy($ret_or_1=this.cache)?$ret_or_1:$$("Opal").$cache(),this.processed=[]}),-1),$defs(self,"$build",(function $$build($a){var args,block=$$build.$$p||nil,self=this;return delete $$build.$$p,args=Opal.slice.call(arguments),$send(self.$new(),"build",$to_a(args),block.$to_proc())}),-1),$def(self,"$build",(function(path,options){return null==options&&(options=$hash2([],{})),this.$build_str(this.$source_for(path),path,options)}),-2),$def(self,"$source_for",(function(path){return this.$read(path,!1)}),1),$def(self,"$build_str",(function(source,rel_path,options){var abs_path=nil,asset=nil,requires=nil,error=nil;null==options&&(options=$hash2([],{}));try{return $truthy(source["$nil?"]())?nil:(abs_path=this.$expand_path(rel_path),rel_path=this.$expand_ext(rel_path),asset=this.$processor_for(source,rel_path,abs_path,!1,options),requires=$rb_plus($rb_plus(this.$preload(),asset.$requires()),this.$tree_requires(asset,abs_path)),$send(requires,"map",[],(function $$4(r){return null==r&&(r=nil),(null==$$4.$$s?this:$$4.$$s).$process_require(r,asset.$autoloads(),options)}),{$$arity:1,$$s:this}),this.$processed()["$<<"](asset),this)}catch($err){if(!Opal.rescue($err,[$$("MissingRequire")]))throw $err;error=$err;try{return this.$raise(error,"A file required by "+rel_path.$inspect()+" wasn't found.\n"+error.$message(),error.$backtrace())}finally{Opal.pop_exception()}}}),-3),$def(self,"$build_require",(function(path,options){return null==options&&(options=$hash2([],{})),this.$process_require(path,[],options)}),-2),$def(self,"$initialize_copy",(function $$initialize_copy(other){var $yield=$$initialize_copy.$$p||nil;return delete $$initialize_copy.$$p,$send2(this,$find_super(this,"initialize_copy",$$initialize_copy,!1,!0),"initialize_copy",[other],$yield),this.stubs=other.$stubs().$dup(),this.preload=other.$preload().$dup(),this.processors=other.$processors().$dup(),this.path_reader=other.$path_reader().$dup(),this.prerequired=other.$prerequired().$dup(),this.compiler_options=other.$compiler_options().$dup(),this.missing_require_severity=other.$missing_require_severity().$to_sym(),this.processed=other.$processed().$dup()}),1),$def(self,"$to_s",(function(){return $send(this.$processed(),"map",[],"to_s".$to_proc()).$join("\n")}),0),$def(self,"$source_map",(function(){return $$$($$$($Opal,"SourceMap"),"Index").$new($send(this.$processed(),"map",[],"source_map".$to_proc()),$hash2(["join"],{join:"\n"}))}),0),$def(self,"$append_paths",(function($a){var paths,self=this;return paths=Opal.slice.call(arguments),$send(self.$path_reader(),"append_paths",$to_a(paths))}),-1),self.$include($$("UseGem")),self.$attr_reader("processed"),self.$attr_accessor("processors","path_reader","stubs","prerequired","preload","compiler_options","missing_require_severity","cache"),self.$private(),$def(self,"$tree_requires",(function(asset,asset_path){var abs_base_paths,dirname=nil;return dirname=$truthy(asset_path.$to_s()["$empty?"]())?$$("Pathname").$pwd():this.$Pathname(asset_path).$expand_path().$dirname(),abs_base_paths=$send(this.$path_reader().$paths(),"map",[],(function(p){return null==p&&(p=nil),$$("File").$expand_path(p)}),1),$send(asset.$required_trees(),"flat_map",[],(function $$6(tree){var self=null==$$6.$$s?this:$$6.$$s,abs_tree_path=nil,abs_base_path=nil,entries_glob=nil;return null==tree&&(tree=nil),abs_tree_path=dirname.$join(tree).$expand_path().$to_s(),abs_base_path=$send(abs_base_paths,"find",[],(function(p){return null==p&&(p=nil),abs_tree_path["$start_with?"](p)}),1),$truthy(abs_base_path)?(abs_base_path=self.$Pathname(abs_base_path),entries_glob=self.$Pathname(abs_tree_path).$join("**","*{.js,}.{"+self.$extensions().$join(",")+"}"),$send($$("Pathname").$glob(entries_glob),"map",[],(function(file){return null==file&&(file=nil),file.$relative_path_from(abs_base_path).$to_s()}),1)):[]}),{$$arity:1,$$s:this})}),2),$def(self,"$processor_for",(function(source,rel_path,abs_path,autoload,options){var processor=nil;return processor=$send(this.$processors(),"find",[],(function(p){return null==p&&(p=nil),p["$match?"](abs_path)}),1),$not(processor)&&$not(autoload)&&this.$raise($$("ProcessorNotFound"),"can't find processor for rel_path: "+rel_path.$inspect()+", abs_path: "+abs_path.$inspect()+", source: "+source.$inspect()+", processors: "+this.$processors().$inspect()),options=options.$merge($hash2(["cache"],{cache:this.$cache()})),processor.$new(source,rel_path,this.compiler_options.$merge(options))}),5),$def(self,"$read",(function(path,autoload){var $ret_or_1,print_list=nil,message=nil,$ret_or_2=nil;return $truthy($ret_or_1=this.$path_reader().$read(path))?$ret_or_1:(print_list=$lambda((function(list){return null==list&&(list=nil),"- "+list.$join("\n- ")+"\n"}),1),message=$rb_plus($rb_plus($rb_plus($rb_plus($rb_plus("can't find file: "+path.$inspect()+" in:\n",print_list["$[]"](this.$path_reader().$paths())),"\nWith the following extensions:\n"),print_list["$[]"](this.$path_reader().$extensions())),"\nAnd the following processors:\n"),print_list["$[]"](this.$processors())),$truthy(autoload)||($eqeqeq("error",$ret_or_2=this.$missing_require_severity())?this.$raise($$("MissingRequire"),message):$eqeqeq("warning",$ret_or_2)?this.$warn(message):$eqeqeq("ignore",$ret_or_2)),nil)}),2),$def(self,"$process_require",(function(rel_path,autoloads,options){var autoload,abs_path,source=nil,asset=nil;return $truthy(this.$prerequired()["$include?"](rel_path))||$truthy(this.$already_processed()["$include?"](rel_path))?nil:(this.$already_processed()["$<<"](rel_path),autoload=autoloads["$include?"](rel_path),source=$truthy(this["$stub?"](rel_path))?"":this.$read(rel_path,autoload),$truthy(source["$nil?"]())?nil:(abs_path=this.$expand_path(rel_path),rel_path=this.$expand_ext(rel_path),asset=this.$processor_for(source,rel_path,abs_path,autoload,options.$merge($hash2(["requirable"],{requirable:!0}))),this.$process_requires(rel_path,$rb_plus(asset.$requires(),this.$tree_requires(asset,abs_path)),asset.$autoloads(),options),this.$processed()["$<<"](asset)))}),3),$def(self,"$expand_ext",(function(path){var abs_path;return abs_path=this.$path_reader().$expand(path),$truthy(abs_path)?$$("File").$join($$("File").$dirname(path),$$("File").$basename(abs_path)):path}),1),$def(self,"$expand_path",(function(path){var $ret_or_1;return $truthy(this["$stub?"](path))?nil:($truthy($ret_or_1=this.$path_reader().$expand(path))?$ret_or_1:$$("File").$expand_path(path)).$to_s()}),1),$def(self,"$process_requires",(function(rel_path,requires,autoloads,options){var error=nil;try{return $send(requires,"map",[],(function $$11(r){return null==r&&(r=nil),(null==$$11.$$s?this:$$11.$$s).$process_require(r,autoloads,options)}),{$$arity:1,$$s:this})}catch($err){if(!Opal.rescue($err,[$$("MissingRequire")]))throw $err;error=$err;try{return this.$raise(error,"A file required by "+rel_path.$inspect()+" wasn't found.\n"+error.$message(),error.$backtrace())}finally{Opal.pop_exception()}}}),4),$def(self,"$already_processed",(function(){var $ret_or_1;return this.already_processed=$truthy($ret_or_1=this.already_processed)?$ret_or_1:$$("Set").$new()}),0),$def(self,"$stub?",(function(path){return this.$stubs()["$include?"](path)}),1),$def(self,"$extensions",(function(){return $$$($Opal,"Builder").$extensions()}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/node"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$alias=Opal.alias,$hash2=Opal.hash2,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$rb_times=Opal.rb_times,$to_a=Opal.to_a;return Opal.add_stubs("attr_reader,to_sym,freeze,to_a,assign_properties,hash,class,eql?,type,children,each,instance_variable_set,protected,private,nil?,==,original_dup,send,equal?,respond_to?,to_ast,updated,+,*,fancy_type,is_a?,to_sexp,inspect,map,to_sexp_array,gsub,to_s"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Node"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.type=$proto.children=nil,self.$attr_reader("type"),self.$attr_reader("children"),$alias(self,"to_a","children"),self.$attr_reader("hash"),$def(self,"$initialize",(function(type,children,properties){var $a;return null==children&&(children=[]),null==properties&&(properties=$hash2([],{})),$a=[type.$to_sym(),children.$to_a().$freeze()],this.type=$a[0],this.children=$a[1],this.$assign_properties(properties),this.hash=[this.type,this.children,this.$class()].$hash(),this.$freeze()}),-2),$def(self,"$eql?",(function(other){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.$class()["$eql?"](other.$class()))?this.type["$eql?"](other.$type()):$ret_or_2)?this.children["$eql?"](other.$children()):$ret_or_1}),1),$def(self,"$assign_properties",(function(properties){return $send(properties,"each",[],(function $$2(name,value){return null==name&&(name=nil),null==value&&(value=nil),(null==$$2.$$s?this:$$2.$$s).$instance_variable_set("@"+name,value)}),{$$arity:2,$$s:this}),nil}),1),self.$protected("assign_properties"),$alias(self,"original_dup","dup"),self.$private("original_dup"),$def(self,"$dup",(function(){return this}),0),$alias(self,"clone","dup"),$def(self,"$updated",(function(type,children,properties){var new_type,new_children,new_properties,$ret_or_1=nil,copy=nil;return null==type&&(type=nil),null==children&&(children=nil),null==properties&&(properties=nil),new_type=$truthy($ret_or_1=type)?$ret_or_1:this.type,new_children=$truthy($ret_or_1=children)?$ret_or_1:this.children,new_properties=$truthy($ret_or_1=properties)?$ret_or_1:$hash2([],{}),$eqeq(this.type,new_type)&&$eqeq(this.children,new_children)&&$truthy(properties["$nil?"]())?this:((copy=this.$original_dup()).$send("initialize",new_type,new_children,new_properties),copy)}),-1),$def(self,"$==",(function(other){var $ret_or_1=nil;return!!$truthy(this["$equal?"](other))||!!$truthy(other["$respond_to?"]("to_ast"))&&(other=other.$to_ast(),$truthy($ret_or_1=other.$type()["$=="](this.$type()))?other.$children()["$=="](this.$children()):$ret_or_1)}),1),$def(self,"$concat",(function(array){return this.$updated(nil,$rb_plus(this.children,array.$to_a()))}),1),$alias(self,"+","concat"),$def(self,"$append",(function(element){return this.$updated(nil,$rb_plus(this.children,[element]))}),1),$alias(self,"<<","append"),$def(self,"$to_sexp",(function(indent){var indented,sexp=nil;return null==indent&&(indent=0),indented=$rb_times(" ",indent),sexp=indented+"("+this.$fancy_type(),$send(this.$children(),"each",[],(function(child){return null==child&&(child=nil),sexp=$truthy(child["$is_a?"]($$("Node")))?$rb_plus(sexp,"\n"+child.$to_sexp($rb_plus(indent,1))):$rb_plus(sexp," "+child.$inspect())}),1),sexp=$rb_plus(sexp,")")}),-1),$alias(self,"to_s","to_sexp"),$def(self,"$inspect",(function(indent){var indented,sexp=nil;return null==indent&&(indent=0),indented=$rb_times(" ",indent),sexp=indented+"s(:"+this.type,$send(this.$children(),"each",[],(function(child){return null==child&&(child=nil),sexp=$truthy(child["$is_a?"]($$("Node")))?$rb_plus(sexp,",\n"+child.$inspect($rb_plus(indent,1))):$rb_plus(sexp,", "+child.$inspect())}),1),sexp=$rb_plus(sexp,")")}),-1),$def(self,"$to_ast",(function(){return this}),0),$def(self,"$to_sexp_array",(function(){var children_sexp_arrs;return children_sexp_arrs=$send(this.$children(),"map",[],(function(child){return null==child&&(child=nil),$truthy(child["$is_a?"]($$("Node")))?child.$to_sexp_array():child}),1),[this.$type()].concat($to_a(children_sexp_arrs))}),0),$def(self,"$deconstruct",(function(){return[this.$type()].concat($to_a(this.$children()))}),0),self.$protected(),$def(self,"$fancy_type",(function(){return this.type.$to_s().$gsub("_","-")}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/processor/mixin"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("nil?,to_ast,type,respond_to?,send,handler_missing,map,to_a,process"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){return function($base){var self=$module($base,"Mixin");return $def(self,"$process",(function(node){var on_handler,new_node=nil;return $truthy(node["$nil?"]())?nil:(on_handler="on_"+(node=node.$to_ast()).$type(),new_node=$truthy(this["$respond_to?"](on_handler))?this.$send(on_handler,node):this.$handler_missing(node),$truthy(new_node)&&(node=new_node),node)}),1),$def(self,"$process_all",(function(nodes){return $send(nodes.$to_a(),"map",[],(function $$1(node){return null==node&&(node=nil),(null==$$1.$$s?this:$$1.$$s).$process(node)}),{$$arity:1,$$s:this})}),1),$def(self,"$handler_missing",(function(node){return nil}),1)}([$klass($base,null,"Processor")].concat($parent_nesting)[0])}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/processor"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass;return Opal.add_stubs("require,include"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Processor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$require("ast/processor/mixin"),self.$include($$("Mixin"))}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/sexp"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$def=Opal.def;return Opal.add_stubs("new"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Sexp"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$s",(function(type,$a){var children;return children=Opal.slice.call(arguments,1),$$("Node").$new(type,children)}),-2)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules.ast=function(Opal){Opal.nil;var self,$module=Opal.module;return Opal.add_stubs("require"),(self=$module([][0],"AST")).$require("ast/node"),self.$require("ast/processor"),self.$require("ast/sexp")},Opal.modules["parser/ast/node"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$alias=Opal.alias,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def;return Opal.add_stubs("attr_reader,[],frozen?,dup,node=,-"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,$super,"Node");return self.$attr_reader("location"),$alias(self,"loc","location"),$def(self,"$assign_properties",(function(properties){var location=nil,$writer=nil;return $truthy(location=properties["$[]"]("location"))?($truthy(location["$frozen?"]())&&(location=location.$dup()),$send(location,"node=",$to_a($writer=[this])),$writer[$rb_minus($writer.length,1)],this.location=location):nil}),1)}([$module($base,"AST")].concat($parent_nesting)[0],$$$($$$("AST"),"Node"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/ast/node"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("require,attr_reader,[],frozen?,dup,merge!,loc,line,column"),self.$require("ast"),self.$require("parser/ast/node"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,$super,"Node");return self.$$prototype.meta=nil,self.$attr_reader("meta"),$def(self,"$assign_properties",(function $$assign_properties(properties){var $yield=$$assign_properties.$$p||nil,meta=nil,$ret_or_1=nil;return delete $$assign_properties.$$p,$truthy(meta=properties["$[]"]("meta"))?($truthy(meta["$frozen?"]())&&(meta=meta.$dup()),this.meta["$merge!"](meta)):this.meta=$truthy($ret_or_1=this.meta)?$ret_or_1:$hash2([],{}),$send2(this,$find_super(this,"assign_properties",$$assign_properties,!1,!0),"assign_properties",[properties],$yield)}),1),$def(self,"$line",(function(){return $truthy(this.$loc())?this.$loc().$line():nil}),0),$def(self,"$column",(function(){return $truthy(this.$loc())?this.$loc().$column():nil}),0)}([$module($base,"AST")].concat($parent_nesting)[0],$$$($$$($$$("Parser"),"AST"),"Node"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["racc/parser"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$const_set=Opal.const_set,$defs=Opal.defs,$gvars=Opal.gvars,$rb_lt=Opal.rb_lt,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$to_ary=Opal.to_ary,$neqeq=Opal.neqeq,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$rb_ge=Opal.rb_ge,$rb_gt=Opal.rb_gt,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_times=Opal.rb_times;return Opal.add_stubs("[],class,<,size,[]=,-,__send__,_racc_setup,raise,_racc_init_sysvars,catch,!=,next_token,racc_read_token,+,==,>=,_racc_evalact,!,>,push,racc_shift,-@,_racc_do_reduce,===,racc_accept,throw,on_error,<=,pop,racc_e_pop,inspect,racc_next_state,*,racc_reduce,sprintf,token_to_str,print,racc_token2str,puts,racc_print_stacks,empty?,each,racc_print_states,each_index"),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);$klass($nesting[0],$$("StandardError"),"ParseError")}($nesting[0],$nesting),$truthy($$$("::","ParseError","skip_raise")?"constant":nil)||$const_set($nesting[0],"ParseError",$$$($$("Racc"),"ParseError")),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);return $truthy($$("Racc_No_Extensions","skip_raise")?"constant":nil)||$const_set($nesting[0],"Racc_No_Extensions",!1),function($base,$super,$parent_nesting){var self=$klass($base,null,"Parser"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.yydebug=$proto.racc_debug_out=$proto.racc_error_status=$proto.racc_t=$proto.racc_vstack=$proto.racc_val=$proto.racc_state=$proto.racc_tstack=nil,$const_set($nesting[0],"Racc_Runtime_Version","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Revision",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Runtime_Core_Version_R","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Core_Revision_R",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Main_Parsing_Routine","_racc_do_parse_rb"),$const_set($nesting[0],"Racc_YY_Parse_Method","_racc_yyparse_rb"),$const_set($nesting[0],"Racc_Runtime_Core_Version",$$("Racc_Runtime_Core_Version_R")),$const_set($nesting[0],"Racc_Runtime_Core_Revision",$$("Racc_Runtime_Core_Revision_R")),$const_set($nesting[0],"Racc_Runtime_Type","ruby"),$defs($$("Parser"),"$racc_runtime_type",(function(){return $$("Racc_Runtime_Type")}),0),$def(self,"$_racc_setup",(function(){var $a,$b,$ret_or_1=nil,arg=nil,$writer=nil;return null==$gvars.stderr&&($gvars.stderr=nil),$truthy($$$(this.$class(),"Racc_debug_parser"))||(this.yydebug=!1),$truthy(null!=($a=this.yydebug)&&$a!==nil?"instance-variable":nil)||(this.yydebug=!1),$truthy(this.yydebug)&&($truthy(null!=($b=this.racc_debug_out)&&$b!==nil?"instance-variable":nil)||(this.racc_debug_out=$gvars.stderr),this.racc_debug_out=$truthy($ret_or_1=this.racc_debug_out)?$ret_or_1:$gvars.stderr),arg=$$$(this.$class(),"Racc_arg"),$truthy($rb_lt(arg.$size(),14))&&($send(arg,"[]=",$to_a($writer=[13,!0])),$writer[$rb_minus($writer.length,1)]),arg}),0),$def(self,"$_racc_init_sysvars",(function(){return this.racc_state=[0],this.racc_tstack=[],this.racc_vstack=[],this.racc_t=nil,this.racc_val=nil,this.racc_read_next=!0,this.racc_user_yyerror=!1,this.racc_error_status=0}),0),$def(self,"$do_parse",(function(){return this.$__send__($$("Racc_Main_Parsing_Routine"),this.$_racc_setup(),!1)}),0),$def(self,"$next_token",(function(){return this.$raise($$("NotImplementedError"),this.$class()+"#next_token is not defined")}),0),$def(self,"$_racc_do_parse_rb",(function(arg,in_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,tok=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),tok=act=i=nil,$send(this,"catch",["racc_end_parse"],(function $$1(){var $d,$e,self=null==$$1.$$s?this:$$1.$$s,$ret_or_1=nil;for(null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==self.racc_t&&(self.racc_t=nil),null==self.yydebug&&(self.yydebug=nil),null==self.racc_val&&(self.racc_val=nil);$truthy(!0);)for($truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))?($truthy(self.racc_read_next)&&$neqeq(self.racc_t,0)&&($e=self.$next_token(),$d=$to_ary($e),tok=null==$d[0]?nil:$d[0],self.racc_val=null==$d[1]?nil:$d[1],$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,$truthy(self.yydebug)&&self.$racc_read_token(self.racc_t,tok,self.racc_val),self.racc_read_next=!1),i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)))):act=action_default["$[]"](self.racc_state["$[]"](-1));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:0,$$s:this})}),2),$def(self,"$yyparse",(function(recv,mid){return this.$__send__($$("Racc_YY_Parse_Method"),recv,mid,this.$_racc_setup(),!0)}),2),$def(self,"$_racc_yyparse_rb",(function(recv,mid,arg,c_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),act=nil,i=nil,$send(this,"catch",["racc_end_parse"],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;for(null==self.racc_state&&(self.racc_state=nil);!$truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)));)for(;$truthy(act=self.$_racc_evalact(action_default["$[]"](self.racc_state["$[]"](-1)),arg)););return $send(recv,"__send__",[mid],(function $$3(tok,val){var self=null==$$3.$$s?this:$$3.$$s,$ret_or_1=nil,$ret_or_2=nil;for(null==self.racc_t&&(self.racc_t=nil),null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==tok&&(tok=nil),null==val&&(val=nil),$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,self.racc_val=val,self.racc_read_next=!1,i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););for(;$truthy($truthy($ret_or_1=$truthy($ret_or_2=(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))["$!"]())?$ret_or_2:self.racc_read_next["$!"]())?$ret_or_1:self.racc_t["$=="](0));)for($truthy(i)&&$truthy(i=$rb_plus(i,self.racc_t))&&$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:2,$$s:self})}),{$$arity:0,$$s:this})}),4),$def(self,"$_racc_evalact",(function(act,arg){var $a,shift_n,action_table=nil,action_check=nil,action_pointer=nil,reduce_n=nil,code=nil,$ret_or_1=nil,i=nil;if(action_table=null==($a=$to_ary(arg))[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],shift_n=null==$a[11]?nil:$a[11],reduce_n=null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],null==$a[14]?nil:$a[14],$truthy($rb_gt(act,0))&&$truthy($rb_lt(act,shift_n)))$truthy($rb_gt(this.racc_error_status,0))&&($eqeq(this.racc_t,1)||(this.racc_error_status=$rb_minus(this.racc_error_status,1))),this.racc_vstack.$push(this.racc_val),this.racc_state.$push(act),this.racc_read_next=!0,$truthy(this.yydebug)&&(this.racc_tstack.$push(this.racc_t),this.$racc_shift(this.racc_t,this.racc_tstack,this.racc_vstack));else if($truthy($rb_lt(act,0))&&$truthy($rb_gt(act,reduce_n["$-@"]()))){if(code=$send(this,"catch",["racc_jump"],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s;return null==self.racc_state&&(self.racc_state=nil),self.racc_state.$push(self.$_racc_do_reduce(arg,act)),!1}),{$$arity:0,$$s:this}),$truthy(code)){if($eqeqeq(1,$ret_or_1=code))return this.racc_user_yyerror=!0,reduce_n["$-@"]();if($eqeqeq(2,$ret_or_1))return shift_n;this.$raise("[Racc Bug] unknown jump code")}}else if($eqeq(act,shift_n))$truthy(this.yydebug)&&this.$racc_accept(),this.$throw("racc_end_parse",this.racc_vstack["$[]"](0));else{if($eqeq(act,reduce_n["$-@"]())){for($eqeqeq(0,$ret_or_1=this.racc_error_status)?$truthy(arg["$[]"](21))||this.$on_error(this.racc_t,this.racc_val,this.racc_vstack):$eqeqeq(3,$ret_or_1)&&($eqeq(this.racc_t,0)&&this.$throw("racc_end_parse",nil),this.racc_read_next=!0),this.racc_user_yyerror=!1,this.racc_error_status=3;$truthy(!0)&&!($truthy(i=action_pointer["$[]"](this.racc_state["$[]"](-1)))&&(i=$rb_plus(i,1),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),this.racc_state["$[]"](-1))));)$truthy($rb_le(this.racc_state.$size(),1))&&this.$throw("racc_end_parse",nil),this.racc_state.$pop(),this.racc_vstack.$pop(),$truthy(this.yydebug)&&(this.racc_tstack.$pop(),this.$racc_e_pop(this.racc_state,this.racc_tstack,this.racc_vstack));return act}this.$raise("[Racc Bug] unknown action "+act.$inspect())}return $truthy(this.yydebug)&&this.$racc_next_state(this.racc_state["$[]"](-1),this.racc_state),nil}),2),$def(self,"$_racc_do_reduce",(function(arg,act){var $a,nt_base,use_result,reduce_to,method_id,void_array,k1,goto_table=nil,goto_check=nil,goto_default=nil,goto_pointer=nil,reduce_table=nil,state=nil,vstack=nil,tstack=nil,i=nil,len=nil,tmp_t=nil,tmp_v=nil,$writer=nil,curstate=nil;return null==($a=$to_ary(arg))[0]?nil:$a[0],null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],null==$a[3]?nil:$a[3],goto_table=null==$a[4]?nil:$a[4],goto_check=null==$a[5]?nil:$a[5],goto_default=null==$a[6]?nil:$a[6],goto_pointer=null==$a[7]?nil:$a[7],nt_base=null==$a[8]?nil:$a[8],reduce_table=null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],use_result=null==$a[13]?nil:$a[13],state=this.racc_state,vstack=this.racc_vstack,tstack=this.racc_tstack,i=$rb_times(act,-3),len=reduce_table["$[]"](i),reduce_to=reduce_table["$[]"]($rb_plus(i,1)),method_id=reduce_table["$[]"]($rb_plus(i,2)),void_array=[],$truthy(this.yydebug)&&(tmp_t=tstack["$[]"](len["$-@"](),len)),tmp_v=vstack["$[]"](len["$-@"](),len),$truthy(this.yydebug)&&($writer=[len["$-@"](),len,void_array],$send(tstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=[len["$-@"](),len,void_array],$send(vstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[len["$-@"](),len,void_array],$send(state,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(use_result)?vstack.$push(this.$__send__(method_id,tmp_v,vstack,tmp_v["$[]"](0))):vstack.$push(this.$__send__(method_id,tmp_v,vstack)),tstack.$push(reduce_to),$truthy(this.yydebug)&&this.$racc_reduce(tmp_t,reduce_to,tstack,vstack),k1=$rb_minus(reduce_to,nt_base),$truthy(i=goto_pointer["$[]"](k1))&&(i=$rb_plus(i,state["$[]"](-1)),$truthy($rb_ge(i,0))&&$truthy(curstate=goto_table["$[]"](i))&&$eqeq(goto_check["$[]"](i),k1))?curstate:goto_default["$[]"](k1)}),2),$def(self,"$on_error",(function(t,val,vstack){var $ret_or_1;return this.$raise($$("ParseError"),this.$sprintf("\nparse error on value %s (%s)",val.$inspect(),$truthy($ret_or_1=this.$token_to_str(t))?$ret_or_1:"?"))}),3),$def(self,"$yyerror",(function(){return this.$throw("racc_jump",1)}),0),$def(self,"$yyaccept",(function(){return this.$throw("racc_jump",2)}),0),$def(self,"$yyerrok",(function(){return this.racc_error_status=0}),0),$def(self,"$racc_read_token",(function(t,tok,val){return this.racc_debug_out.$print("read "),this.racc_debug_out.$print(tok.$inspect(),"(",this.$racc_token2str(t),") "),this.racc_debug_out.$puts(val.$inspect()),this.racc_debug_out.$puts()}),3),$def(self,"$racc_shift",(function(tok,tstack,vstack){return this.racc_debug_out.$puts("shift "+this.$racc_token2str(tok)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_reduce",(function(toks,sim,tstack,vstack){var out=nil;return(out=this.racc_debug_out).$print("reduce "),$truthy(toks["$empty?"]())?out.$print(" "):$send(toks,"each",[],(function $$5(t){var self=null==$$5.$$s?this:$$5.$$s;return null==t&&(t=nil),out.$print(" ",self.$racc_token2str(t))}),{$$arity:1,$$s:this}),out.$puts(" --\x3e "+this.$racc_token2str(sim)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),4),$def(self,"$racc_accept",(function(){return this.racc_debug_out.$puts("accept"),this.racc_debug_out.$puts()}),0),$def(self,"$racc_e_pop",(function(state,tstack,vstack){return this.racc_debug_out.$puts("error recovering mode: pop token"),this.$racc_print_states(state),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_next_state",(function(curstate,state){return this.racc_debug_out.$puts("goto "+curstate),this.$racc_print_states(state),this.racc_debug_out.$puts()}),2),$def(self,"$racc_print_stacks",(function(t,v){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(t,"each_index",[],(function $$6(i){var self=null==$$6.$$s?this:$$6.$$s;return null==i&&(i=nil),out.$print(" (",self.$racc_token2str(t["$[]"](i))," ",v["$[]"](i).$inspect(),")")}),{$$arity:1,$$s:this}),out.$puts(" ]")}),2),$def(self,"$racc_print_states",(function(s){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(s,"each",[],(function(st){return null==st&&(st=nil),out.$print(" ",st)}),1),out.$puts(" ]")}),1),$def(self,"$racc_token2str",(function(tok){var $ret_or_1;return $truthy($ret_or_1=$$$(this.$class(),"Racc_token_to_s_table")["$[]"](tok))?$ret_or_1:this.$raise("[Racc Bug] can't convert token "+tok+" to string")}),1),$def(self,"$token_to_str",(function(t){return $$$(this.$class(),"Racc_token_to_s_table")["$[]"](t)}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/version"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set;return function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return $const_set($nesting[0],"VERSION","3.1.0.0")}($nesting[0],$nesting)},Opal.modules["racc/parser"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$const_set=Opal.const_set,$defs=Opal.defs,$gvars=Opal.gvars,$rb_lt=Opal.rb_lt,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$to_ary=Opal.to_ary,$neqeq=Opal.neqeq,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$rb_ge=Opal.rb_ge,$rb_gt=Opal.rb_gt,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_times=Opal.rb_times;return Opal.add_stubs("[],class,<,size,[]=,-,__send__,_racc_setup,raise,_racc_init_sysvars,catch,!=,next_token,racc_read_token,+,==,>=,_racc_evalact,!,>,push,racc_shift,-@,_racc_do_reduce,===,racc_accept,throw,on_error,<=,pop,racc_e_pop,inspect,racc_next_state,*,racc_reduce,sprintf,token_to_str,print,racc_token2str,puts,racc_print_stacks,empty?,each,racc_print_states,each_index"),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);$klass($nesting[0],$$("StandardError"),"ParseError")}($nesting[0],$nesting),$truthy($$$("::","ParseError","skip_raise")?"constant":nil)||$const_set($nesting[0],"ParseError",$$$($$("Racc"),"ParseError")),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);return $truthy($$("Racc_No_Extensions","skip_raise")?"constant":nil)||$const_set($nesting[0],"Racc_No_Extensions",!1),function($base,$super,$parent_nesting){var self=$klass($base,null,"Parser"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.yydebug=$proto.racc_debug_out=$proto.racc_error_status=$proto.racc_t=$proto.racc_vstack=$proto.racc_val=$proto.racc_state=$proto.racc_tstack=nil,$const_set($nesting[0],"Racc_Runtime_Version","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Revision",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Runtime_Core_Version_R","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Core_Revision_R",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Main_Parsing_Routine","_racc_do_parse_rb"),$const_set($nesting[0],"Racc_YY_Parse_Method","_racc_yyparse_rb"),$const_set($nesting[0],"Racc_Runtime_Core_Version",$$("Racc_Runtime_Core_Version_R")),$const_set($nesting[0],"Racc_Runtime_Core_Revision",$$("Racc_Runtime_Core_Revision_R")),$const_set($nesting[0],"Racc_Runtime_Type","ruby"),$defs($$("Parser"),"$racc_runtime_type",(function(){return $$("Racc_Runtime_Type")}),0),$def(self,"$_racc_setup",(function(){var $a,$b,$ret_or_1=nil,arg=nil,$writer=nil;return null==$gvars.stderr&&($gvars.stderr=nil),$truthy($$$(this.$class(),"Racc_debug_parser"))||(this.yydebug=!1),$truthy(null!=($a=this.yydebug)&&$a!==nil?"instance-variable":nil)||(this.yydebug=!1),$truthy(this.yydebug)&&($truthy(null!=($b=this.racc_debug_out)&&$b!==nil?"instance-variable":nil)||(this.racc_debug_out=$gvars.stderr),this.racc_debug_out=$truthy($ret_or_1=this.racc_debug_out)?$ret_or_1:$gvars.stderr),arg=$$$(this.$class(),"Racc_arg"),$truthy($rb_lt(arg.$size(),14))&&($send(arg,"[]=",$to_a($writer=[13,!0])),$writer[$rb_minus($writer.length,1)]),arg}),0),$def(self,"$_racc_init_sysvars",(function(){return this.racc_state=[0],this.racc_tstack=[],this.racc_vstack=[],this.racc_t=nil,this.racc_val=nil,this.racc_read_next=!0,this.racc_user_yyerror=!1,this.racc_error_status=0}),0),$def(self,"$do_parse",(function(){return this.$__send__($$("Racc_Main_Parsing_Routine"),this.$_racc_setup(),!1)}),0),$def(self,"$next_token",(function(){return this.$raise($$("NotImplementedError"),this.$class()+"#next_token is not defined")}),0),$def(self,"$_racc_do_parse_rb",(function(arg,in_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,tok=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),tok=act=i=nil,$send(this,"catch",["racc_end_parse"],(function $$1(){var $d,$e,self=null==$$1.$$s?this:$$1.$$s,$ret_or_1=nil;for(null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==self.racc_t&&(self.racc_t=nil),null==self.yydebug&&(self.yydebug=nil),null==self.racc_val&&(self.racc_val=nil);$truthy(!0);)for($truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))?($truthy(self.racc_read_next)&&$neqeq(self.racc_t,0)&&($e=self.$next_token(),$d=$to_ary($e),tok=null==$d[0]?nil:$d[0],self.racc_val=null==$d[1]?nil:$d[1],$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,$truthy(self.yydebug)&&self.$racc_read_token(self.racc_t,tok,self.racc_val),self.racc_read_next=!1),i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)))):act=action_default["$[]"](self.racc_state["$[]"](-1));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:0,$$s:this})}),2),$def(self,"$yyparse",(function(recv,mid){return this.$__send__($$("Racc_YY_Parse_Method"),recv,mid,this.$_racc_setup(),!0)}),2),$def(self,"$_racc_yyparse_rb",(function(recv,mid,arg,c_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),act=nil,i=nil,$send(this,"catch",["racc_end_parse"],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;for(null==self.racc_state&&(self.racc_state=nil);!$truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)));)for(;$truthy(act=self.$_racc_evalact(action_default["$[]"](self.racc_state["$[]"](-1)),arg)););return $send(recv,"__send__",[mid],(function $$3(tok,val){var self=null==$$3.$$s?this:$$3.$$s,$ret_or_1=nil,$ret_or_2=nil;for(null==self.racc_t&&(self.racc_t=nil),null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==tok&&(tok=nil),null==val&&(val=nil),$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,self.racc_val=val,self.racc_read_next=!1,i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););for(;$truthy($truthy($ret_or_1=$truthy($ret_or_2=(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))["$!"]())?$ret_or_2:self.racc_read_next["$!"]())?$ret_or_1:self.racc_t["$=="](0));)for($truthy(i)&&$truthy(i=$rb_plus(i,self.racc_t))&&$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:2,$$s:self})}),{$$arity:0,$$s:this})}),4),$def(self,"$_racc_evalact",(function(act,arg){var $a,shift_n,action_table=nil,action_check=nil,action_pointer=nil,reduce_n=nil,code=nil,$ret_or_1=nil,i=nil;if(action_table=null==($a=$to_ary(arg))[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],shift_n=null==$a[11]?nil:$a[11],reduce_n=null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],null==$a[14]?nil:$a[14],$truthy($rb_gt(act,0))&&$truthy($rb_lt(act,shift_n)))$truthy($rb_gt(this.racc_error_status,0))&&($eqeq(this.racc_t,1)||(this.racc_error_status=$rb_minus(this.racc_error_status,1))),this.racc_vstack.$push(this.racc_val),this.racc_state.$push(act),this.racc_read_next=!0,$truthy(this.yydebug)&&(this.racc_tstack.$push(this.racc_t),this.$racc_shift(this.racc_t,this.racc_tstack,this.racc_vstack));else if($truthy($rb_lt(act,0))&&$truthy($rb_gt(act,reduce_n["$-@"]()))){if(code=$send(this,"catch",["racc_jump"],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s;return null==self.racc_state&&(self.racc_state=nil),self.racc_state.$push(self.$_racc_do_reduce(arg,act)),!1}),{$$arity:0,$$s:this}),$truthy(code)){if($eqeqeq(1,$ret_or_1=code))return this.racc_user_yyerror=!0,reduce_n["$-@"]();if($eqeqeq(2,$ret_or_1))return shift_n;this.$raise("[Racc Bug] unknown jump code")}}else if($eqeq(act,shift_n))$truthy(this.yydebug)&&this.$racc_accept(),this.$throw("racc_end_parse",this.racc_vstack["$[]"](0));else{if($eqeq(act,reduce_n["$-@"]())){for($eqeqeq(0,$ret_or_1=this.racc_error_status)?$truthy(arg["$[]"](21))||this.$on_error(this.racc_t,this.racc_val,this.racc_vstack):$eqeqeq(3,$ret_or_1)&&($eqeq(this.racc_t,0)&&this.$throw("racc_end_parse",nil),this.racc_read_next=!0),this.racc_user_yyerror=!1,this.racc_error_status=3;$truthy(!0)&&!($truthy(i=action_pointer["$[]"](this.racc_state["$[]"](-1)))&&(i=$rb_plus(i,1),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),this.racc_state["$[]"](-1))));)$truthy($rb_le(this.racc_state.$size(),1))&&this.$throw("racc_end_parse",nil),this.racc_state.$pop(),this.racc_vstack.$pop(),$truthy(this.yydebug)&&(this.racc_tstack.$pop(),this.$racc_e_pop(this.racc_state,this.racc_tstack,this.racc_vstack));return act}this.$raise("[Racc Bug] unknown action "+act.$inspect())}return $truthy(this.yydebug)&&this.$racc_next_state(this.racc_state["$[]"](-1),this.racc_state),nil}),2),$def(self,"$_racc_do_reduce",(function(arg,act){var $a,nt_base,use_result,reduce_to,method_id,void_array,k1,goto_table=nil,goto_check=nil,goto_default=nil,goto_pointer=nil,reduce_table=nil,state=nil,vstack=nil,tstack=nil,i=nil,len=nil,tmp_t=nil,tmp_v=nil,$writer=nil,curstate=nil;return null==($a=$to_ary(arg))[0]?nil:$a[0],null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],null==$a[3]?nil:$a[3],goto_table=null==$a[4]?nil:$a[4],goto_check=null==$a[5]?nil:$a[5],goto_default=null==$a[6]?nil:$a[6],goto_pointer=null==$a[7]?nil:$a[7],nt_base=null==$a[8]?nil:$a[8],reduce_table=null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],use_result=null==$a[13]?nil:$a[13],state=this.racc_state,vstack=this.racc_vstack,tstack=this.racc_tstack,i=$rb_times(act,-3),len=reduce_table["$[]"](i),reduce_to=reduce_table["$[]"]($rb_plus(i,1)),method_id=reduce_table["$[]"]($rb_plus(i,2)),void_array=[],$truthy(this.yydebug)&&(tmp_t=tstack["$[]"](len["$-@"](),len)),tmp_v=vstack["$[]"](len["$-@"](),len),$truthy(this.yydebug)&&($writer=[len["$-@"](),len,void_array],$send(tstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=[len["$-@"](),len,void_array],$send(vstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[len["$-@"](),len,void_array],$send(state,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(use_result)?vstack.$push(this.$__send__(method_id,tmp_v,vstack,tmp_v["$[]"](0))):vstack.$push(this.$__send__(method_id,tmp_v,vstack)),tstack.$push(reduce_to),$truthy(this.yydebug)&&this.$racc_reduce(tmp_t,reduce_to,tstack,vstack),k1=$rb_minus(reduce_to,nt_base),$truthy(i=goto_pointer["$[]"](k1))&&(i=$rb_plus(i,state["$[]"](-1)),$truthy($rb_ge(i,0))&&$truthy(curstate=goto_table["$[]"](i))&&$eqeq(goto_check["$[]"](i),k1))?curstate:goto_default["$[]"](k1)}),2),$def(self,"$on_error",(function(t,val,vstack){var $ret_or_1;return this.$raise($$("ParseError"),this.$sprintf("\nparse error on value %s (%s)",val.$inspect(),$truthy($ret_or_1=this.$token_to_str(t))?$ret_or_1:"?"))}),3),$def(self,"$yyerror",(function(){return this.$throw("racc_jump",1)}),0),$def(self,"$yyaccept",(function(){return this.$throw("racc_jump",2)}),0),$def(self,"$yyerrok",(function(){return this.racc_error_status=0}),0),$def(self,"$racc_read_token",(function(t,tok,val){return this.racc_debug_out.$print("read "),this.racc_debug_out.$print(tok.$inspect(),"(",this.$racc_token2str(t),") "),this.racc_debug_out.$puts(val.$inspect()),this.racc_debug_out.$puts()}),3),$def(self,"$racc_shift",(function(tok,tstack,vstack){return this.racc_debug_out.$puts("shift "+this.$racc_token2str(tok)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_reduce",(function(toks,sim,tstack,vstack){var out=nil;return(out=this.racc_debug_out).$print("reduce "),$truthy(toks["$empty?"]())?out.$print(" "):$send(toks,"each",[],(function $$5(t){var self=null==$$5.$$s?this:$$5.$$s;return null==t&&(t=nil),out.$print(" ",self.$racc_token2str(t))}),{$$arity:1,$$s:this}),out.$puts(" --\x3e "+this.$racc_token2str(sim)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),4),$def(self,"$racc_accept",(function(){return this.racc_debug_out.$puts("accept"),this.racc_debug_out.$puts()}),0),$def(self,"$racc_e_pop",(function(state,tstack,vstack){return this.racc_debug_out.$puts("error recovering mode: pop token"),this.$racc_print_states(state),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_next_state",(function(curstate,state){return this.racc_debug_out.$puts("goto "+curstate),this.$racc_print_states(state),this.racc_debug_out.$puts()}),2),$def(self,"$racc_print_stacks",(function(t,v){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(t,"each_index",[],(function $$6(i){var self=null==$$6.$$s?this:$$6.$$s;return null==i&&(i=nil),out.$print(" (",self.$racc_token2str(t["$[]"](i))," ",v["$[]"](i).$inspect(),")")}),{$$arity:1,$$s:this}),out.$puts(" ]")}),2),$def(self,"$racc_print_states",(function(s){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(s,"each",[],(function(st){return null==st&&(st=nil),out.$print(" ",st)}),1),out.$puts(" ]")}),1),$def(self,"$racc_token2str",(function(tok){var $ret_or_1;return $truthy($ret_or_1=$$$(this.$class(),"Racc_token_to_s_table")["$[]"](tok))?$ret_or_1:this.$raise("[Racc Bug] can't convert token "+tok+" to string")}),1),$def(self,"$token_to_str",(function(t){return $$$(this.$class(),"Racc_token_to_s_table")["$[]"](t)}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/messages"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set,$hash2=Opal.hash2,$truthy=Opal.truthy,$eqeqeq=Opal.eqeqeq,$defs=Opal.defs;return Opal.add_stubs("freeze,[],empty?,===,format"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return $const_set($nesting[0],"MESSAGES",$hash2(["unicode_point_too_large","invalid_escape","incomplete_escape","invalid_hex_escape","invalid_unicode_escape","unterminated_unicode","escape_eof","string_eof","regexp_options","cvar_name","ivar_name","trailing_in_number","empty_numeric","invalid_octal","no_dot_digit_literal","bare_backslash","unexpected","embedded_document","heredoc_id_has_newline","heredoc_id_ends_with_nl","unterminated_heredoc_id","invalid_escape_use","ambiguous_literal","ambiguous_regexp","ambiguous_prefix","triple_dot_at_eol","nth_ref_alias","begin_in_method","backref_assignment","invalid_assignment","module_name_const","unexpected_token","argument_const","argument_ivar","argument_gvar","argument_cvar","duplicate_argument","empty_symbol","odd_hash","singleton_literal","dynamic_const","const_reassignment","module_in_def","class_in_def","unexpected_percent_str","block_and_blockarg","masgn_as_condition","block_given_to_yield","invalid_regexp","invalid_return","csend_in_lhs_of_masgn","cant_assign_to_numparam","reserved_for_numparam","ordinary_param_defined","numparam_used_in_outer_scope","circular_argument_reference","pm_interp_in_var_name","lvar_name","undefined_lvar","duplicate_variable_name","duplicate_pattern_key","endless_setter","invalid_id_to_get","forward_arg_after_restarg","no_anonymous_blockarg","useless_else","duplicate_hash_key","invalid_encoding","invalid_action","clobbered","different_replacements","swallowed_insertions","swallowed_insertions_conflict","crossing_deletions","crossing_deletions_conflict","crossing_insertions","crossing_insertions_conflict"],{unicode_point_too_large:"invalid Unicode codepoint (too large)",invalid_escape:"invalid escape character syntax",incomplete_escape:"incomplete character syntax",invalid_hex_escape:"invalid hex escape",invalid_unicode_escape:"invalid Unicode escape",unterminated_unicode:"unterminated Unicode escape",escape_eof:"escape sequence meets end of file",string_eof:"unterminated string meets end of file",regexp_options:"unknown regexp options: %{options}",cvar_name:"`%{name}' is not allowed as a class variable name",ivar_name:"`%{name}' is not allowed as an instance variable name",trailing_in_number:"trailing `%{character}' in number",empty_numeric:"numeric literal without digits",invalid_octal:"invalid octal digit",no_dot_digit_literal:"no . floating literal anymore; put 0 before dot",bare_backslash:"bare backslash only allowed before newline",unexpected:"unexpected `%{character}'",embedded_document:"embedded document meets end of file (and they embark on a romantic journey)",heredoc_id_has_newline:"here document identifier across newlines, never match",heredoc_id_ends_with_nl:"here document identifier ends with a newline",unterminated_heredoc_id:"unterminated heredoc id",invalid_escape_use:"invalid character syntax; use ?%{escape}",ambiguous_literal:"ambiguous first argument; put parentheses or a space even after the operator",ambiguous_regexp:"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after `/' operator",ambiguous_prefix:"`%{prefix}' interpreted as argument prefix",triple_dot_at_eol:"... at EOL, should be parenthesized",nth_ref_alias:"cannot define an alias for a back-reference variable",begin_in_method:"BEGIN in method",backref_assignment:"cannot assign to a back-reference variable",invalid_assignment:"cannot assign to a keyword",module_name_const:"class or module name must be a constant literal",unexpected_token:"unexpected token %{token}",argument_const:"formal argument cannot be a constant",argument_ivar:"formal argument cannot be an instance variable",argument_gvar:"formal argument cannot be a global variable",argument_cvar:"formal argument cannot be a class variable",duplicate_argument:"duplicate argument name",empty_symbol:"empty symbol literal",odd_hash:"odd number of entries for a hash",singleton_literal:"cannot define a singleton method for a literal",dynamic_const:"dynamic constant assignment",const_reassignment:"constant re-assignment",module_in_def:"module definition in method body",class_in_def:"class definition in method body",unexpected_percent_str:"%{type}: unknown type of percent-literal",block_and_blockarg:"both block argument and literal block are passed",masgn_as_condition:"multiple assignment in conditional context",block_given_to_yield:"block given to yield",invalid_regexp:"%{message}",invalid_return:"Invalid return in class/module body",csend_in_lhs_of_masgn:"&. inside multiple assignment destination",cant_assign_to_numparam:"cannot assign to numbered parameter %{name}",reserved_for_numparam:"%{name} is reserved for numbered parameter",ordinary_param_defined:"ordinary parameter is defined",numparam_used_in_outer_scope:"numbered parameter is already used in an outer scope",circular_argument_reference:"circular argument reference %{var_name}",pm_interp_in_var_name:"symbol literal with interpolation is not allowed",lvar_name:"`%{name}' is not allowed as a local variable name",undefined_lvar:"no such local variable: `%{name}'",duplicate_variable_name:"duplicate variable name %{name}",duplicate_pattern_key:"duplicate hash pattern key %{name}",endless_setter:"setter method cannot be defined in an endless method definition",invalid_id_to_get:"identifier %{identifier} is not valid to get",forward_arg_after_restarg:"... after rest argument",no_anonymous_blockarg:"no anonymous block parameter",useless_else:"else without rescue is useless",duplicate_hash_key:"key is duplicated and overwritten",invalid_encoding:"literal contains escape sequences incompatible with UTF-8",invalid_action:"cannot %{action}",clobbered:"clobbered by: %{action}",different_replacements:"different replacements: %{replacement} vs %{other_replacement}",swallowed_insertions:"this replacement:",swallowed_insertions_conflict:"swallows some inner rewriting actions:",crossing_deletions:"the deletion of:",crossing_deletions_conflict:"is crossing:",crossing_insertions:"the rewriting action on:",crossing_insertions_conflict:"is crossing that on:"}).$freeze()),function($base,$parent_nesting){var self=$module($base,"Messages"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$compile",(function(reason,arguments$){var template;return template=$$("MESSAGES")["$[]"](reason),$eqeqeq($$("Hash"),arguments$)&&$truthy(arguments$["$empty?"]())?template:this.$format(template,arguments$)}),2)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/deprecation"]=function(Opal){var $base,$parent_nesting,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("attr_writer,warn"),$base=$nesting[0],$parent_nesting=$nesting,function($base){var self=$module($base,"Deprecation");return self.$attr_writer("warned_of_deprecation"),$def(self,"$warn_of_deprecation",(function(){var $ret_or_1,$ret_or_2=nil;return null==this.warned_of_deprecation&&(this.warned_of_deprecation=nil),this.warned_of_deprecation=$truthy($ret_or_1=this.warned_of_deprecation)?$ret_or_1:!$truthy($ret_or_2=this.$warn($$$(this,"DEPRECATION_WARNING")))||$ret_or_2}),0)}([$module($base,"Parser")].concat($parent_nesting)[0])},Opal.modules["parser/ast/processor"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$alias=Opal.alias,$to_a=Opal.to_a,$not=Opal.not,$truthy=Opal.truthy,$slice=Opal.slice;return Opal.add_stubs("updated,process_all,on_var,!,nil?,process,on_vasgn,on_argument,is_a?,[],children,process_regular_node,warn"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Processor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$process_regular_node",(function(node){return node.$updated(nil,this.$process_all(node))}),1),$alias(self,"on_dstr","process_regular_node"),$alias(self,"on_dsym","process_regular_node"),$alias(self,"on_regexp","process_regular_node"),$alias(self,"on_xstr","process_regular_node"),$alias(self,"on_splat","process_regular_node"),$alias(self,"on_kwsplat","process_regular_node"),$alias(self,"on_array","process_regular_node"),$alias(self,"on_pair","process_regular_node"),$alias(self,"on_hash","process_regular_node"),$alias(self,"on_kwargs","process_regular_node"),$alias(self,"on_irange","process_regular_node"),$alias(self,"on_erange","process_regular_node"),$def(self,"$on_var",(function(node){return node}),1),$def(self,"$process_variable_node",(function(node){return this.$on_var(node)}),1),$alias(self,"on_lvar","process_variable_node"),$alias(self,"on_ivar","process_variable_node"),$alias(self,"on_gvar","process_variable_node"),$alias(self,"on_cvar","process_variable_node"),$alias(self,"on_back_ref","process_variable_node"),$alias(self,"on_nth_ref","process_variable_node"),$def(self,"$on_vasgn",(function(node){var $a,name,value_node=nil;return name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value_node=null==$a[1]?nil:$a[1],$not(value_node["$nil?"]())?node.$updated(nil,[name,this.$process(value_node)]):node}),1),$def(self,"$process_var_asgn_node",(function(node){return this.$on_vasgn(node)}),1),$alias(self,"on_lvasgn","process_var_asgn_node"),$alias(self,"on_ivasgn","process_var_asgn_node"),$alias(self,"on_gvasgn","process_var_asgn_node"),$alias(self,"on_cvasgn","process_var_asgn_node"),$alias(self,"on_and_asgn","process_regular_node"),$alias(self,"on_or_asgn","process_regular_node"),$def(self,"$on_op_asgn",(function(node){var $a,var_node,method_name,value_node;return var_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],value_node=null==$a[2]?nil:$a[2],node.$updated(nil,[this.$process(var_node),method_name,this.$process(value_node)])}),1),$alias(self,"on_mlhs","process_regular_node"),$alias(self,"on_masgn","process_regular_node"),$def(self,"$on_const",(function(node){var $a,scope_node,name;return scope_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],node.$updated(nil,[this.$process(scope_node),name])}),1),$def(self,"$on_casgn",(function(node){var $a,scope_node,name,value_node=nil;return scope_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],value_node=null==$a[2]?nil:$a[2],$not(value_node["$nil?"]())?node.$updated(nil,[this.$process(scope_node),name,this.$process(value_node)]):node.$updated(nil,[this.$process(scope_node),name])}),1),$alias(self,"on_args","process_regular_node"),$def(self,"$on_argument",(function(node){var $a,arg_name,value_node=nil;return arg_name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value_node=null==$a[1]?nil:$a[1],$not(value_node["$nil?"]())?node.$updated(nil,[arg_name,this.$process(value_node)]):node}),1),$def(self,"$process_argument_node",(function(node){return this.$on_argument(node)}),1),$alias(self,"on_arg","process_argument_node"),$alias(self,"on_optarg","process_argument_node"),$alias(self,"on_restarg","process_argument_node"),$alias(self,"on_blockarg","process_argument_node"),$alias(self,"on_shadowarg","process_argument_node"),$alias(self,"on_kwarg","process_argument_node"),$alias(self,"on_kwoptarg","process_argument_node"),$alias(self,"on_kwrestarg","process_argument_node"),$alias(self,"on_forward_arg","process_argument_node"),$def(self,"$on_procarg0",(function(node){return $truthy(node.$children()["$[]"](0)["$is_a?"]($$("Symbol")))?this.$on_argument(node):this.$process_regular_node(node)}),1),$alias(self,"on_arg_expr","process_regular_node"),$alias(self,"on_restarg_expr","process_regular_node"),$alias(self,"on_blockarg_expr","process_regular_node"),$alias(self,"on_block_pass","process_regular_node"),$alias(self,"on_module","process_regular_node"),$alias(self,"on_class","process_regular_node"),$alias(self,"on_sclass","process_regular_node"),$def(self,"$on_def",(function(node){var $a,name,args_node,body_node;return name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args_node=null==$a[1]?nil:$a[1],body_node=null==$a[2]?nil:$a[2],node.$updated(nil,[name,this.$process(args_node),this.$process(body_node)])}),1),$def(self,"$on_defs",(function(node){var $a,definee_node,name,args_node,body_node;return definee_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],args_node=null==$a[2]?nil:$a[2],body_node=null==$a[3]?nil:$a[3],node.$updated(nil,[this.$process(definee_node),name,this.$process(args_node),this.$process(body_node)])}),1),$alias(self,"on_undef","process_regular_node"),$alias(self,"on_alias","process_regular_node"),$def(self,"$on_send",(function(node){var $a,arg_nodes,receiver_node=nil,method_name=nil;return receiver_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],arg_nodes=$slice.call($a,2),$truthy(receiver_node)&&(receiver_node=this.$process(receiver_node)),node.$updated(nil,[receiver_node,method_name].concat($to_a(this.$process_all(arg_nodes))))}),1),$alias(self,"on_csend","on_send"),$alias(self,"on_index","process_regular_node"),$alias(self,"on_indexasgn","process_regular_node"),$alias(self,"on_block","process_regular_node"),$alias(self,"on_lambda","process_regular_node"),$def(self,"$on_numblock",(function(node){var $a,method_call,max_numparam,body;return method_call=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],max_numparam=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],node.$updated(nil,[this.$process(method_call),max_numparam,this.$process(body)])}),1),$alias(self,"on_while","process_regular_node"),$alias(self,"on_while_post","process_regular_node"),$alias(self,"on_until","process_regular_node"),$alias(self,"on_until_post","process_regular_node"),$alias(self,"on_for","process_regular_node"),$alias(self,"on_return","process_regular_node"),$alias(self,"on_break","process_regular_node"),$alias(self,"on_next","process_regular_node"),$alias(self,"on_redo","process_regular_node"),$alias(self,"on_retry","process_regular_node"),$alias(self,"on_super","process_regular_node"),$alias(self,"on_yield","process_regular_node"),$alias(self,"on_defined?","process_regular_node"),$alias(self,"on_not","process_regular_node"),$alias(self,"on_and","process_regular_node"),$alias(self,"on_or","process_regular_node"),$alias(self,"on_if","process_regular_node"),$alias(self,"on_when","process_regular_node"),$alias(self,"on_case","process_regular_node"),$alias(self,"on_iflipflop","process_regular_node"),$alias(self,"on_eflipflop","process_regular_node"),$alias(self,"on_match_current_line","process_regular_node"),$alias(self,"on_match_with_lvasgn","process_regular_node"),$alias(self,"on_resbody","process_regular_node"),$alias(self,"on_rescue","process_regular_node"),$alias(self,"on_ensure","process_regular_node"),$alias(self,"on_begin","process_regular_node"),$alias(self,"on_kwbegin","process_regular_node"),$alias(self,"on_preexe","process_regular_node"),$alias(self,"on_postexe","process_regular_node"),$alias(self,"on_case_match","process_regular_node"),$alias(self,"on_in_match","process_regular_node"),$alias(self,"on_match_pattern","process_regular_node"),$alias(self,"on_match_pattern_p","process_regular_node"),$alias(self,"on_in_pattern","process_regular_node"),$alias(self,"on_if_guard","process_regular_node"),$alias(self,"on_unless_guard","process_regular_node"),$alias(self,"on_match_var","process_variable_node"),$alias(self,"on_match_rest","process_regular_node"),$alias(self,"on_pin","process_regular_node"),$alias(self,"on_match_alt","process_regular_node"),$alias(self,"on_match_as","process_regular_node"),$alias(self,"on_array_pattern","process_regular_node"),$alias(self,"on_array_pattern_with_tail","process_regular_node"),$alias(self,"on_hash_pattern","process_regular_node"),$alias(self,"on_const_pattern","process_regular_node"),$alias(self,"on_find_pattern","process_regular_node"),$def(self,"$process_variable_node",(function(node){return this.$warn("Parser::AST::Processor#process_variable_node is deprecated as a public API and will be removed. Please use Parser::AST::Processor#on_var instead."),this.$on_var(node)}),1),$def(self,"$process_var_asgn_node",(function(node){return this.$warn("Parser::AST::Processor#process_var_asgn_node is deprecated as a public API and will be removed. Please use Parser::AST::Processor#on_vasgn instead."),this.$on_vasgn(node)}),1),$def(self,"$process_argument_node",(function(node){return this.$warn("Parser::AST::Processor#process_argument_node is deprecated as a public API and will be removed. Please use Parser::AST::Processor#on_argument instead."),this.$on_argument(node)}),1),$def(self,"$on_empty_else",(function(node){return node}),1)}($nesting[0],$$$($$$("AST"),"Processor"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/meta"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set;return Opal.add_stubs("freeze,to_set"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Meta")].concat($parent_nesting);return $const_set($nesting[0],"NODE_TYPES",["true","false","nil","int","float","str","dstr","sym","dsym","xstr","regopt","regexp","array","splat","pair","kwsplat","hash","irange","erange","self","lvar","ivar","cvar","gvar","const","defined?","lvasgn","ivasgn","cvasgn","gvasgn","casgn","mlhs","masgn","op_asgn","and_asgn","ensure","rescue","arg_expr","or_asgn","back_ref","nth_ref","match_with_lvasgn","match_current_line","module","class","sclass","def","defs","undef","alias","args","cbase","arg","optarg","restarg","blockarg","block_pass","kwarg","kwoptarg","kwrestarg","kwnilarg","send","csend","super","zsuper","yield","block","and","not","or","if","when","case","while","until","while_post","until_post","for","break","next","redo","return","resbody","kwbegin","begin","retry","preexe","postexe","iflipflop","eflipflop","shadowarg","complex","rational","__FILE__","__LINE__","__ENCODING__","ident","lambda","indexasgn","index","procarg0","restarg_expr","blockarg_expr","objc_kwarg","objc_restarg","objc_varargs","numargs","numblock","forward_args","forwarded_args","forward_arg","case_match","in_match","in_pattern","match_var","pin","match_alt","match_as","match_rest","array_pattern","match_with_trailing_comma","array_pattern_with_tail","hash_pattern","const_pattern","if_guard","unless_guard","match_nil_pattern","empty_else","find_pattern","kwargs","match_pattern_p","match_pattern"].$to_set().$freeze())}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/buffer"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$enc=Opal.enc,$truthy=Opal.truthy,$gvars=Opal.gvars,$eqeq=Opal.eqeq,$neqeq=Opal.neqeq,$defs=Opal.defs,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$not=Opal.not,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$rb_lt=Opal.rb_lt,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("attr_reader,empty?,=~,start_with?,freeze,==,[],!=,nil?,match,find,encoding,recognize_encoding,force_encoding,encode,to_s,source=,-,open,read,raise,frozen?,dup,reencode_string,class,valid_encoding?,name,raw_source=,gsub,!,ascii_only?,line_index_for_position,line_begins,+,to_a,lines,end_with?,<<,each,chomp!,fetch,source_lines,>=,size,<,new,source,source_range,private,index,bsearch,[]=,method_defined?,bsearch_index"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Buffer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.name=$proto.source=$proto.slice_source=$proto.first_line=$proto.lines=$proto.source_range=$proto.line_begins=$proto.line_index_for_position=$proto.line_range=nil,self.$attr_reader("name","first_line"),$const_set($nesting[0],"ENCODING_RE",$regexp([$enc("[\\s#](en)?coding\\s*[:=]\\s*","ASCII-8BIT"),$enc("(","ASCII-8BIT"),$enc("","ASCII-8BIT"),$enc("(utf8-mac)","ASCII-8BIT"),$enc("|","ASCII-8BIT"),$enc("","ASCII-8BIT"),$enc("([A-Za-z0-9_-]+?)(-unix|-dos|-mac)","ASCII-8BIT"),$enc("|","ASCII-8BIT"),$enc("([A-Za-z0-9_-]+)","ASCII-8BIT"),$enc(")","ASCII-8BIT"),$enc("","ASCII-8BIT")])),$defs(self,"$recognize_encoding",(function(string){var $a,$b,second_line,first_line=nil,encoding_line=nil,result=nil,$ret_or_1=nil,$ret_or_2=nil;return $truthy(string["$empty?"]())?nil:(string["$=~"](/^(.*)\n?(.*\n)?/),second_line=($a=[($b=$gvars["~"])===nil?nil:$b["$[]"](1),($b=$gvars["~"])===nil?nil:$b["$[]"](2)])[1],$truthy((first_line=$a[0])["$start_with?"]($enc("","ASCII-8BIT").$freeze()))?$$$($$("Encoding"),"UTF_8"):(encoding_line=$eqeq(first_line["$[]"](0,2),$enc("#!","ASCII-8BIT").$freeze())?second_line:first_line,$truthy(encoding_line["$nil?"]())||$neqeq(encoding_line["$[]"](0),$enc("#","ASCII-8BIT"))?nil:$truthy(result=$$("ENCODING_RE").$match(encoding_line))?$$("Encoding").$find($truthy($ret_or_1=$truthy($ret_or_2=result["$[]"](3))?$ret_or_2:result["$[]"](4))?$ret_or_1:result["$[]"](6)):nil))}),1),$defs(self,"$reencode_string",(function(input){var original_encoding,detected_encoding=nil;return original_encoding=input.$encoding(),detected_encoding=this.$recognize_encoding(input.$force_encoding($$$($$("Encoding"),"BINARY"))),$truthy(detected_encoding["$nil?"]())?input.$force_encoding(original_encoding):$eqeq(detected_encoding,$$$($$("Encoding"),"BINARY"))?input:input.$force_encoding(detected_encoding).$encode($$$($$("Encoding"),"UTF_8"))}),1),$def(self,"$initialize",(function(name,$a,$b){var $post_args,$kwargs,first_line,source,self=this,$writer=nil;if($post_args=Opal.slice.call(arguments,1),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return $post_args.length>0&&(first_line=$post_args.shift()),null==first_line&&(first_line=1),null==(source=$kwargs.$$smap.source)&&(source=nil),self.name=name.$to_s(),self.source=nil,self.first_line=first_line,self.lines=nil,self.line_begins=nil,self.slice_source=nil,self.line_index_for_position=$hash2([],{}),$truthy(source)?($send(self,"source=",$to_a($writer=[source])),$writer[$rb_minus($writer.length,1)]):nil}),-2),$def(self,"$read",(function(){return $send($$("File"),"open",[this.name,$enc("rb","ASCII-8BIT")],(function $$1(io){var $writer,self=null==$$1.$$s?this:$$1.$$s;return null==io&&(io=nil),$writer=[io.$read()],$send(self,"source=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),this}),0),$def(self,"$source",(function(){return $truthy(this.source["$nil?"]())&&this.$raise($$("RuntimeError"),$enc("Cannot extract source from uninitialized Source::Buffer","ASCII-8BIT")),this.source}),0),$def(self,"$source=",(function(input){var $writer;return $truthy(input["$frozen?"]())&&(input=input.$dup()),input=this.$class().$reencode_string(input),$truthy(input["$valid_encoding?"]())||this.$raise($$("EncodingError"),$enc("invalid byte sequence in ","ASCII-8BIT")+input.$encoding().$name()),$send(this,"raw_source=",$to_a($writer=[input])),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$raw_source=",(function(input){return $truthy(this.source)&&this.$raise($$("ArgumentError"),$enc("Source::Buffer is immutable","ASCII-8BIT")),this.source=input.$gsub($enc("\r\n","ASCII-8BIT").$freeze(),$enc("\n","ASCII-8BIT").$freeze()).$freeze(),$not(this.source["$ascii_only?"]())&&$neqeq(this.source.$encoding(),$$$($$("Encoding"),"UTF_32LE"))&&$neqeq(this.source.$encoding(),$$$($$("Encoding"),"BINARY"))?this.slice_source=this.source.$encode($$$($$("Encoding"),"UTF_32LE")):nil}),1),$def(self,"$slice",(function(range){return $truthy(this.slice_source["$nil?"]())?this.source["$[]"](range):this.slice_source["$[]"](range).$encode(this.source.$encoding())}),1),$def(self,"$decompose_position",(function(position){var line_index,line_begin;return line_index=this.$line_index_for_position(position),line_begin=this.$line_begins()["$[]"](line_index),[$rb_plus(this.first_line,line_index),$rb_minus(position,line_begin)]}),1),$def(self,"$line_for_position",(function(position){return $rb_plus(this.$line_index_for_position(position),this.first_line)}),1),$def(self,"$column_for_position",(function(position){var line_index;return line_index=this.$line_index_for_position(position),$rb_minus(position,this.$line_begins()["$[]"](line_index))}),1),$def(self,"$source_lines",(function(){var $ret_or_1,lines=nil;return this.lines=$truthy($ret_or_1=this.lines)?$ret_or_1:(lines=this.source.$lines().$to_a(),$truthy(this.source["$end_with?"]($enc("\n","ASCII-8BIT").$freeze()))&&lines["$<<"]($enc("","ASCII-8BIT").$dup()),$send(lines,"each",[],(function(line){return null==line&&(line=nil),line["$chomp!"]($enc("\n","ASCII-8BIT").$freeze()),line.$freeze()}),1),lines.$freeze())}),0),$def(self,"$source_line",(function(lineno){return this.$source_lines().$fetch($rb_minus(lineno,this.first_line)).$dup()}),1),$def(self,"$line_range",(function(lineno){var index;return index=$rb_minus(lineno,this.first_line),$truthy($rb_lt(index,0))||$truthy($rb_ge($rb_plus(index,1),this.$line_begins().$size()))?this.$raise($$("IndexError"),$enc("Parser::Source::Buffer: range for line ","ASCII-8BIT")+""+lineno+$enc(" requested, valid line numbers are ","ASCII-8BIT")+this.first_line+$enc("..","ASCII-8BIT")+$rb_minus($rb_plus(this.first_line,this.$line_begins().$size()),2)):$$("Range").$new(this,this.$line_begins()["$[]"](index),$rb_minus(this.$line_begins()["$[]"]($rb_plus(index,1)),1))}),1),$def(self,"$source_range",(function(){var $ret_or_1;return this.source_range=$truthy($ret_or_1=this.source_range)?$ret_or_1:$$("Range").$new(this,0,this.$source().$size())}),0),$def(self,"$last_line",(function(){return $rb_minus($rb_plus(this.$line_begins().$size(),this.first_line),2)}),0),$def(self,"$freeze",(function $$freeze(){var $yield=$$freeze.$$p||nil;return delete $$freeze.$$p,this.$source_lines(),this.$line_begins(),this.$source_range(),$send2(this,$find_super(this,"freeze",$$freeze,!1,!0),"freeze",[],$yield)}),0),$def(self,"$inspect",(function(){return $enc("#<","ASCII-8BIT")+this.$class()+$enc(" ","ASCII-8BIT")+this.$name()+$enc(">","ASCII-8BIT")}),0),self.$private(),$def(self,"$line_begins",(function(){var $ret_or_1,self=this,begins=nil,index=nil;return self.line_begins=$truthy($ret_or_1=self.line_begins)?$ret_or_1:(begins=[0],index=0,function(){for(;$truthy(index=self.source.$index($enc("\n","ASCII-8BIT").$freeze(),index));)index=$rb_plus(index,1),begins["$<<"](index)}(),begins["$<<"]($rb_plus(self.source.$size(),1)),begins)}),0),$def(self,"$line_index_for_position",(function(position){var $ret_or_1,index=nil,$writer=nil;return $truthy($ret_or_1=this.line_index_for_position["$[]"](position))?$ret_or_1:(index=$rb_minus(this.$bsearch(this.$line_begins(),position),1),$truthy(this.line_index_for_position["$frozen?"]())||($writer=[position,index],$send(this.line_index_for_position,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),index)}),1),$truthy($$("Array")["$method_defined?"]("bsearch_index"))?$def(self,"$bsearch",(function(line_begins,position){var $ret_or_1;return $truthy($ret_or_1=$send(line_begins,"bsearch_index",[],(function(line_begin){return null==line_begin&&(line_begin=nil),$rb_lt(position,line_begin)}),1))?$ret_or_1:$rb_minus(line_begins.$size(),1)}),2):$def(self,"$bsearch",(function(line_begins,position){var $ret_or_1=nil;return this.line_range=$truthy($ret_or_1=this.line_range)?$ret_or_1:Opal.Range.$new(0,line_begins.$size(),!0),$truthy($ret_or_1=$send(this.line_range,"bsearch",[],(function(i){return null==i&&(i=nil),$rb_lt(position,line_begins["$[]"](i))}),1))?$ret_or_1:$rb_minus(line_begins.$size(),1)}),2)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/range"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$rb_lt=Opal.rb_lt,$def=Opal.def,$hash2=Opal.hash2,$rb_minus=Opal.rb_minus,$alias=Opal.alias,$neqeq=Opal.neqeq,$to_ary=Opal.to_ary,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$rb_times=Opal.rb_times,$eqeq=Opal.eqeq;return Opal.add_stubs("include,attr_reader,<,raise,nil?,freeze,with,-,line_for_position,alias_method,column_for_position,!=,line,last_line,inspect,column,last_column,source_line,slice,begin_pos,end_pos,include?,source,to_a,decompose_position,join,name,+,new,min,max,disjoint?,empty?,>=,!,<=>,contains?,overlaps?,==,*,source_buffer,is_a?,nonzero?,hash"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Range"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.begin_pos=$proto.end_pos=$proto.source_buffer=nil,self.$include($$("Comparable")),self.$attr_reader("source_buffer"),self.$attr_reader("begin_pos","end_pos"),$def(self,"$initialize",(function(source_buffer,begin_pos,end_pos){var $a;return $truthy($rb_lt(end_pos,begin_pos))&&this.$raise($$("ArgumentError"),"Parser::Source::Range: end_pos must not be less than begin_pos"),$truthy(source_buffer["$nil?"]())&&this.$raise($$("ArgumentError"),"Parser::Source::Range: source_buffer must not be nil"),this.source_buffer=source_buffer,$a=[begin_pos,end_pos],this.begin_pos=$a[0],this.end_pos=$a[1],this.$freeze()}),3),$def(self,"$begin",(function(){return this.$with($hash2(["end_pos"],{end_pos:this.begin_pos}))}),0),$def(self,"$end",(function(){return this.$with($hash2(["begin_pos"],{begin_pos:this.end_pos}))}),0),$def(self,"$size",(function(){return $rb_minus(this.end_pos,this.begin_pos)}),0),$alias(self,"length","size"),$def(self,"$line",(function(){return this.source_buffer.$line_for_position(this.begin_pos)}),0),self.$alias_method("first_line","line"),$def(self,"$column",(function(){return this.source_buffer.$column_for_position(this.begin_pos)}),0),$def(self,"$last_line",(function(){return this.source_buffer.$line_for_position(this.end_pos)}),0),$def(self,"$last_column",(function(){return this.source_buffer.$column_for_position(this.end_pos)}),0),$def(self,"$column_range",(function(){return $neqeq(this.$line(),this.$last_line())&&this.$raise($$("RangeError"),this.$inspect()+" spans more than one line"),Opal.Range.$new(this.$column(),this.$last_column(),!0)}),0),$def(self,"$source_line",(function(){return this.source_buffer.$source_line(this.$line())}),0),$def(self,"$source",(function(){return this.source_buffer.$slice(Opal.Range.$new(this.$begin_pos(),this.$end_pos(),!0))}),0),$def(self,"$is?",(function($a){var self=this;return Opal.slice.call(arguments)["$include?"](self.$source())}),-1),$def(self,"$to_a",(function(){return Opal.Range.$new(this.begin_pos,this.end_pos,!0).$to_a()}),0),$def(self,"$to_range",(function(){return Opal.Range.$new(this.$begin_pos(),this.$end_pos(),!0)}),0),$def(self,"$to_s",(function(){var $a,$b,column,line=nil;return $b=this.source_buffer.$decompose_position(this.begin_pos),line=null==($a=$to_ary($b))[0]?nil:$a[0],column=null==$a[1]?nil:$a[1],[this.source_buffer.$name(),line,$rb_plus(column,1)].$join(":")}),0),$def(self,"$with",(function($kwargs){var begin_pos,end_pos;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(begin_pos=$kwargs.$$smap.begin_pos)&&(begin_pos=this.begin_pos),null==(end_pos=$kwargs.$$smap.end_pos)&&(end_pos=this.end_pos),$$("Range").$new(this.source_buffer,begin_pos,end_pos)}),-1),$def(self,"$adjust",(function($kwargs){var begin_pos,end_pos;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(begin_pos=$kwargs.$$smap.begin_pos)&&(begin_pos=0),null==(end_pos=$kwargs.$$smap.end_pos)&&(end_pos=0),$$("Range").$new(this.source_buffer,$rb_plus(this.begin_pos,begin_pos),$rb_plus(this.end_pos,end_pos))}),-1),$def(self,"$resize",(function(new_size){return this.$with($hash2(["end_pos"],{end_pos:$rb_plus(this.begin_pos,new_size)}))}),1),$def(self,"$join",(function(other){return $$("Range").$new(this.source_buffer,[this.begin_pos,other.$begin_pos()].$min(),[this.end_pos,other.$end_pos()].$max())}),1),$def(self,"$intersect",(function(other){return $truthy(this["$disjoint?"](other))?nil:$$("Range").$new(this.source_buffer,[this.begin_pos,other.$begin_pos()].$max(),[this.end_pos,other.$end_pos()].$min())}),1),$def(self,"$disjoint?",(function(other){var $ret_or_1=nil;return $truthy(this["$empty?"]())&&$truthy(other["$empty?"]())?this.begin_pos["$!="](other.$begin_pos()):$truthy($ret_or_1=$rb_ge(this.begin_pos,other.$end_pos()))?$ret_or_1:$rb_ge(other.$begin_pos(),this.end_pos)}),1),$def(self,"$overlaps?",(function(other){return this["$disjoint?"](other)["$!"]()}),1),$def(self,"$contains?",(function(other){return $rb_ge($rb_plus(other.$begin_pos()["$<=>"](this.begin_pos),this.end_pos["$<=>"](other.$end_pos())),$truthy(other["$empty?"]())?2:1)}),1),$def(self,"$contained?",(function(other){return other["$contains?"](this)}),1),$def(self,"$crossing?",(function(other){return!!$truthy(this["$overlaps?"](other))&&$rb_times(this.begin_pos["$<=>"](other.$begin_pos()),this.end_pos["$<=>"](other.$end_pos()))["$=="](1)}),1),$def(self,"$empty?",(function(){return this.begin_pos["$=="](this.end_pos)}),0),$def(self,"$<=>",(function(other){var $ret_or_1;return $truthy(other["$is_a?"]($$$($$$($$$("Parser"),"Source"),"Range")))&&$eqeq(this.source_buffer,other.$source_buffer())?$truthy($ret_or_1=this.begin_pos["$<=>"](other.$begin_pos())["$nonzero?"]())?$ret_or_1:this.end_pos["$<=>"](other.$end_pos()):nil}),1),self.$alias_method("eql?","=="),$def(self,"$hash",(function(){return[this.source_buffer,this.begin_pos,this.end_pos].$hash()}),0),$def(self,"$inspect",(function(){return"#"}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/comment"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$defs=Opal.defs,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("attr_reader,alias_method,new,associate,associate_locations,associate_by_identity,freeze,source,start_with?,text,==,type,is_a?,location,to_s,expression,inspect"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Comment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.location=nil,self.$attr_reader("text"),self.$attr_reader("location"),self.$alias_method("loc","location"),$defs(self,"$associate",(function(ast,comments){return $$("Associator").$new(ast,comments).$associate()}),2),$defs(self,"$associate_locations",(function(ast,comments){return $$("Associator").$new(ast,comments).$associate_locations()}),2),$defs(self,"$associate_by_identity",(function(ast,comments){return $$("Associator").$new(ast,comments).$associate_by_identity()}),2),$def(self,"$initialize",(function(range){return this.location=$$$($$$($$("Parser"),"Source"),"Map").$new(range),this.text=range.$source().$freeze(),this.$freeze()}),1),$def(self,"$type",(function(){return $truthy(this.$text()["$start_with?"]("#".$freeze()))?"inline":$truthy(this.$text()["$start_with?"]("=begin".$freeze()))?"document":nil}),0),$def(self,"$inline?",(function(){return this.$type()["$=="]("inline")}),0),$def(self,"$document?",(function(){return this.$type()["$=="]("document")}),0),$def(self,"$==",(function(other){var $ret_or_1;return $truthy($ret_or_1=other["$is_a?"]($$$($$("Source"),"Comment")))?this.location["$=="](other.$location()):$ret_or_1}),1),$def(self,"$inspect",(function(){return"#"}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/comment/associator"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$rb_le=Opal.rb_le,$rb_plus=Opal.rb_plus,$not=Opal.not;return Opal.add_stubs("attr_accessor,do_associate,private,freeze,[],include?,type,sort_by,compact,children,begin_pos,expression,loc,select,is_a?,new,[]=,-,==,compare_by_identity,advance_comment,advance_through_directives,visit,process_leading_comments,location,<=,line,last_line,each,children_in_source_order,process_trailing_comments,current_comment_before?,associate_and_advance_comment,current_comment_before_end?,current_comment_decorates?,+,!,end_pos,<<,start_with?,text,=~"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Associator"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.map_using=$proto.mapping=$proto.skip_directives=$proto.ast=$proto.current_comment=$proto.comment_num=$proto.comments=nil,self.$attr_accessor("skip_directives"),$def(self,"$initialize",(function(ast,comments){return this.ast=ast,this.comments=comments,this.skip_directives=!0}),2),$def(self,"$associate",(function(){return this.map_using="eql",this.$do_associate()}),0),$def(self,"$associate_locations",(function(){return this.map_using="location",this.$do_associate()}),0),$def(self,"$associate_by_identity",(function(){return this.map_using="identity",this.$do_associate()}),0),self.$private(),$const_set($nesting[0],"POSTFIX_TYPES",$$("Set")["$[]"]("if","while","while_post","until","until_post","masgn").$freeze()),$def(self,"$children_in_source_order",(function(node){return $truthy($$("POSTFIX_TYPES")["$include?"](node.$type()))?$send(node.$children().$compact(),"sort_by",[],(function(child){return null==child&&(child=nil),child.$loc().$expression().$begin_pos()}),1):$send(node.$children(),"select",[],(function(child){var $ret_or_1,$ret_or_2;return null==child&&(child=nil),$truthy($ret_or_1=$truthy($ret_or_2=child["$is_a?"]($$$($$("AST"),"Node")))?child.$loc():$ret_or_2)?child.$loc().$expression():$ret_or_1}),1)}),1),$def(self,"$do_associate",(function(){return this.mapping=$send($$("Hash"),"new",[],(function(h,k){var $writer;return null==h&&(h=nil),null==k&&(k=nil),$send(h,"[]=",$to_a($writer=[k,[]])),$writer[$rb_minus($writer.length,1)]}),2),$eqeq(this.map_using,"identity")&&this.mapping.$compare_by_identity(),this.comment_num=-1,this.$advance_comment(),$truthy(this.skip_directives)&&this.$advance_through_directives(),$truthy(this.ast)&&this.$visit(this.ast),this.mapping}),0),$def(self,"$visit",(function(node){var node_loc=nil;return this.$process_leading_comments(node),$truthy(this.current_comment)?(node_loc=node.$location(),$truthy($rb_le(this.current_comment.$location().$line(),node_loc.$last_line()))||$truthy(node_loc["$is_a?"]($$$($$("Map"),"Heredoc")))?($send(this.$children_in_source_order(node),"each",[],(function $$4(child){return null==child&&(child=nil),(null==$$4.$$s?this:$$4.$$s).$visit(child)}),{$$arity:1,$$s:this}),this.$process_trailing_comments(node)):nil):nil}),1),$def(self,"$process_leading_comments",(function(node){if($eqeq(node.$type(),"begin"))return nil;for(;$truthy(this["$current_comment_before?"](node));)this.$associate_and_advance_comment(node)}),1),$def(self,"$process_trailing_comments",(function(node){for(;$truthy(this["$current_comment_before_end?"](node));)this.$associate_and_advance_comment(node);for(;$truthy(this["$current_comment_decorates?"](node));)this.$associate_and_advance_comment(node)}),1),$def(self,"$advance_comment",(function(){return this.comment_num=$rb_plus(this.comment_num,1),this.current_comment=this.comments["$[]"](this.comment_num)}),0),$def(self,"$current_comment_before?",(function(node){var comment_loc=nil,node_loc=nil;return!$not(this.current_comment)&&(comment_loc=this.current_comment.$location().$expression(),node_loc=node.$location().$expression(),$rb_le(comment_loc.$end_pos(),node_loc.$begin_pos()))}),1),$def(self,"$current_comment_before_end?",(function(node){var comment_loc=nil,node_loc=nil;return!$not(this.current_comment)&&(comment_loc=this.current_comment.$location().$expression(),node_loc=node.$location().$expression(),$rb_le(comment_loc.$end_pos(),node_loc.$end_pos()))}),1),$def(self,"$current_comment_decorates?",(function(node){return!$not(this.current_comment)&&this.current_comment.$location().$line()["$=="](node.$location().$last_line())}),1),$def(self,"$associate_and_advance_comment",(function(node){var key;return key=$eqeq(this.map_using,"location")?node.$location():node,this.mapping["$[]"](key)["$<<"](this.current_comment),this.$advance_comment()}),1),$const_set($nesting[0],"MAGIC_COMMENT_RE",/^#\s*(-\*-|)\s*(frozen_string_literal|warn_indent|warn_past_scope):.*\1$/),$def(self,"$advance_through_directives",(function(){return $truthy(this.current_comment)&&$truthy(this.current_comment.$text()["$start_with?"]("#!".$freeze()))&&this.$advance_comment(),$truthy(this.current_comment)&&$truthy(this.current_comment.$text()["$=~"]($$("MAGIC_COMMENT_RE")))&&this.$advance_comment(),$truthy(this.current_comment)&&$truthy(this.current_comment.$text()["$=~"]($$$($$("Buffer"),"ENCODING_RE")))?this.$advance_comment():nil}),0)}(Opal.$r($nesting)("Comment"),0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$gvars=Opal.gvars,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$rb_plus=Opal.rb_plus,$truthy=Opal.truthy,$not=Opal.not,$neqeq=Opal.neqeq,$rb_le=Opal.rb_le,$rb_ge=Opal.rb_ge,$rb_lt=Opal.rb_lt,$hash2=Opal.hash2,$const_set=Opal.const_set;return Opal.add_stubs("attr_reader,warn_of_deprecation,class,new,lambda,puts,render,consumer=,-,append,freeze,begin,end,+,in_transaction?,raise,dup,source,each,sort,begin_pos,range,length,replacement,[]=,private,empty?,clobbered_insertion?,!,allow_multiple_insertions?,raise_clobber_error,record_insertion,adjacent_updates?,find,overlaps?,replace_compatible_with_insertion?,merge_actions!,<<,active_queue,adjacent_insertions?,merge_actions,delete,can_merge?,record_replace,|,active_insertions,active_insertions=,active_clobber,clobbered_position_mask,active_clobber=,size,!=,&,<=,end_pos,adjacent_insertion_mask,select,adjacent?,adjacent_position_mask,>=,==,[],all?,intersect,nil?,max,sort_by,push,join,first,max_by,merge_replacements,replace_actions,disjoint?,<,process,extend"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Rewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.diagnostics=$proto.insert_before_multi_order=$proto.insert_after_multi_order=$proto.source_buffer=$proto.queue=$proto.clobber=$proto.insertions=$proto.pending_queue=$proto.pending_clobber=$proto.pending_insertions=nil,self.$attr_reader("source_buffer"),self.$attr_reader("diagnostics"),$def(self,"$initialize",(function(source_buffer){var $writer;return this.$class().$warn_of_deprecation(),this.diagnostics=$$$($$("Diagnostic"),"Engine").$new(),$writer=[$send(this,"lambda",[],(function(diag){return null==$gvars.stderr&&($gvars.stderr=nil),null==diag&&(diag=nil),$gvars.stderr.$puts(diag.$render())}),1)],$send(this.diagnostics,"consumer=",$to_a($writer)),$rb_minus($writer.length,1),this.source_buffer=source_buffer,this.queue=[],this.clobber=0,this.insertions=0,this.insert_before_multi_order=0,this.insert_after_multi_order=0,this.pending_queue=nil,this.pending_clobber=nil,this.pending_insertions=nil}),1),$def(self,"$remove",(function(range){return this.$append($$$($$("Rewriter"),"Action").$new(range,"".$freeze()))}),1),$def(self,"$insert_before",(function(range,content){return this.$append($$$($$("Rewriter"),"Action").$new(range.$begin(),content))}),2),$def(self,"$wrap",(function(range,before,after){return this.$append($$$($$("Rewriter"),"Action").$new(range.$begin(),before)),this.$append($$$($$("Rewriter"),"Action").$new(range.$end(),after))}),3),$def(self,"$insert_before_multi",(function(range,content){return this.insert_before_multi_order=$rb_minus(this.insert_before_multi_order,1),this.$append($$$($$("Rewriter"),"Action").$new(range.$begin(),content,!0,this.insert_before_multi_order))}),2),$def(self,"$insert_after",(function(range,content){return this.$append($$$($$("Rewriter"),"Action").$new(range.$end(),content))}),2),$def(self,"$insert_after_multi",(function(range,content){return this.insert_after_multi_order=$rb_plus(this.insert_after_multi_order,1),this.$append($$$($$("Rewriter"),"Action").$new(range.$end(),content,!0,this.insert_after_multi_order))}),2),$def(self,"$replace",(function(range,content){return this.$append($$$($$("Rewriter"),"Action").$new(range,content))}),2),$def(self,"$process",(function(){var source,adjustment=nil;return $truthy(this["$in_transaction?"]())&&this.$raise("Do not call "+this.$class()+"#process inside a transaction"),adjustment=0,source=this.source_buffer.$source().$dup(),$send(this.queue.$sort(),"each",[],(function(action){var begin_pos,end_pos,$writer;return null==action&&(action=nil),begin_pos=$rb_plus(action.$range().$begin_pos(),adjustment),end_pos=$rb_plus(begin_pos,action.$range().$length()),$writer=[Opal.Range.$new(begin_pos,end_pos,!0),action.$replacement()],$send(source,"[]=",$to_a($writer)),$rb_minus($writer.length,1),adjustment=$rb_plus(adjustment,$rb_minus(action.$replacement().$length(),action.$range().$length()))}),1),source}),0),$def(self,"$transaction",(function $$transaction(){var $yield=$$transaction.$$p||nil,self=this;return delete $$transaction.$$p,function(){try{return $yield===nil&&self.$raise(self.$class()+"#transaction requires block"),$truthy(self["$in_transaction?"]())&&self.$raise("Nested transaction is not supported"),self.pending_queue=self.queue.$dup(),self.pending_clobber=self.clobber,self.pending_insertions=self.insertions,Opal.yieldX($yield,[]),self.queue=self.pending_queue,self.clobber=self.pending_clobber,self.insertions=self.pending_insertions,self}finally{self.pending_queue=nil,self.pending_clobber=nil,self.pending_insertions=nil}}()}),0),self.$private(),$def(self,"$append",(function(action){var range=nil,conflicting=nil,adjacent=nil,insertions=nil;if(range=action.$range(),$truthy(range["$empty?"]())){if($truthy(action.$replacement()["$empty?"]()))return this;$not(action["$allow_multiple_insertions?"]())&&$truthy(conflicting=this["$clobbered_insertion?"](range))&&this.$raise_clobber_error(action,[conflicting]),this.$record_insertion(range),$truthy(adjacent=this["$adjacent_updates?"](range))?(conflicting=$send(adjacent,"find",[],(function $$3(a){var $ret_or_1,self=null==$$3.$$s?this:$$3.$$s;return null==a&&(a=nil),$truthy($ret_or_1=a.$range()["$overlaps?"](range))?self["$replace_compatible_with_insertion?"](a,action)["$!"]():$ret_or_1}),{$$arity:1,$$s:this}),$truthy(conflicting)&&this.$raise_clobber_error(action,[conflicting]),this["$merge_actions!"](action,adjacent)):this.$active_queue()["$<<"](action)}else $truthy(insertions=this["$adjacent_insertions?"](range))&&$send(insertions,"each",[],(function $$4(insertion){var self=null==$$4.$$s?this:$$4.$$s;return null==insertion&&(insertion=nil),$truthy(range["$overlaps?"](insertion.$range()))&&$not(self["$replace_compatible_with_insertion?"](action,insertion))?self.$raise_clobber_error(action,[insertion]):(action=self.$merge_actions(action,[insertion]),self.$active_queue().$delete(insertion))}),{$$arity:1,$$s:this}),$truthy(adjacent=this["$adjacent_updates?"](range))?$truthy(this["$can_merge?"](action,adjacent))?(this.$record_replace(range),this["$merge_actions!"](action,adjacent)):this.$raise_clobber_error(action,adjacent):(this.$record_replace(range),this.$active_queue()["$<<"](action));return this}),1),$def(self,"$record_insertion",(function(range){var $writer;return $writer=[this.$active_insertions()["$|"](1["$<<"](range.$begin_pos()))],$send(this,"active_insertions=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$record_replace",(function(range){var $writer;return $writer=[this.$active_clobber()["$|"](this.$clobbered_position_mask(range))],$send(this,"active_clobber=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$clobbered_position_mask",(function(range){return $rb_minus(1["$<<"](range.$size()),1)["$<<"](range.$begin_pos())}),1),$def(self,"$adjacent_position_mask",(function(range){return $rb_minus(1["$<<"]($rb_plus(range.$size(),2)),1)["$<<"]($rb_minus(range.$begin_pos(),1))}),1),$def(self,"$adjacent_insertion_mask",(function(range){return $rb_minus(1["$<<"]($rb_plus(range.$size(),1)),1)["$<<"](range.$begin_pos())}),1),$def(self,"$clobbered_insertion?",(function(insertion){var insertion_pos;return insertion_pos=insertion.$begin_pos(),$neqeq(this.$active_insertions()["$&"](1["$<<"](insertion_pos)),0)?$send(this.$active_queue(),"find",[],(function(a){var $ret_or_1;return null==a&&(a=nil),$truthy($ret_or_1=$rb_le(a.$range().$begin_pos(),insertion_pos))?$rb_le(insertion_pos,a.$range().$end_pos()):$ret_or_1}),1):nil}),1),$def(self,"$adjacent_insertions?",(function(range){var result=nil;return $neqeq(this.$active_insertions()["$&"](this.$adjacent_insertion_mask(range)),0)?(result=$send(this.$active_queue(),"select",[],(function $$8(a){var $ret_or_1,self=null==$$8.$$s?this:$$8.$$s;return null==a&&(a=nil),$truthy($ret_or_1=a.$range()["$empty?"]())?self["$adjacent?"](range,a.$range()):$ret_or_1}),{$$arity:1,$$s:this}),$truthy(result["$empty?"]())?nil:result):nil}),1),$def(self,"$adjacent_updates?",(function(range){return $neqeq(this.$active_clobber()["$&"](this.$adjacent_position_mask(range)),0)?$send(this.$active_queue(),"select",[],(function $$10(a){return null==a&&(a=nil),(null==$$10.$$s?this:$$10.$$s)["$adjacent?"](range,a.$range())}),{$$arity:1,$$s:this}):nil}),1),$def(self,"$replace_compatible_with_insertion?",(function(replace,insertion){var $ret_or_1,$ret_or_2,offset=nil;return $truthy($ret_or_1=$truthy($ret_or_2=$rb_ge($rb_minus(replace.$replacement().$length(),replace.$range().$size()),insertion.$range().$size()))?offset=$rb_minus(insertion.$range().$begin_pos(),replace.$range().$begin_pos()):$ret_or_2)?replace.$replacement()["$[]"](offset,insertion.$replacement().$length())["$=="](insertion.$replacement()):$ret_or_1}),2),$def(self,"$can_merge?",(function(action,existing){var range=nil;return range=action.$range(),$send(existing,"all?",[],(function(other){var repl1_offset,repl2_offset,repl1_length,repl2_length,replacement2,overlap=nil,replacement1=nil,$ret_or_1=nil;return null==other&&(other=nil),overlap=range.$intersect(other.$range()),!!$truthy(overlap["$nil?"]())||(repl1_offset=$rb_minus(overlap.$begin_pos(),range.$begin_pos()),repl2_offset=$rb_minus(overlap.$begin_pos(),other.$range().$begin_pos()),repl1_length=[$rb_minus(other.$range().$length(),repl2_offset),$rb_minus(other.$replacement().$length(),repl2_offset)].$max(),repl2_length=[$rb_minus(range.$length(),repl1_offset),$rb_minus(action.$replacement().$length(),repl1_offset)].$max(),replacement1=$truthy($ret_or_1=action.$replacement()["$[]"](repl1_offset,repl1_length))?$ret_or_1:"".$freeze(),replacement2=$truthy($ret_or_1=other.$replacement()["$[]"](repl2_offset,repl2_length))?$ret_or_1:"".$freeze(),replacement1["$=="](replacement2))}),1)}),2),$def(self,"$merge_actions",(function(action,existing){var range,actions=nil;return range=(actions=$send(existing.$push(action),"sort_by",[],(function(a){return null==a&&(a=nil),[a.$range().$begin_pos(),a.$range().$end_pos()]}),1)).$first().$range().$join($send(actions,"max_by",[],(function(a){return null==a&&(a=nil),a.$range().$end_pos()}),1).$range()),$$$($$("Rewriter"),"Action").$new(range,this.$merge_replacements(actions))}),2),$def(self,"$merge_actions!",(function(action,existing){var new_action;return new_action=this.$merge_actions(action,existing),this.$active_queue().$delete(action),this.$replace_actions(existing,new_action)}),2),$def(self,"$merge_replacements",(function(actions){var result=nil,prev_act=nil;return result="".$dup(),prev_act=nil,$send(actions,"each",[],(function(act){var prev_end=nil,offset=nil;return null==act&&(act=nil),$not(prev_act)||$truthy(act.$range()["$disjoint?"](prev_act.$range()))?result["$<<"](act.$replacement()):(prev_end=[$rb_plus(prev_act.$range().$begin_pos(),prev_act.$replacement().$length()),prev_act.$range().$end_pos()].$max(),offset=$rb_minus(prev_end,act.$range().$begin_pos()),$truthy($rb_lt(offset,act.$replacement().$size()))&&result["$<<"](act.$replacement()["$[]"](Opal.Range.$new(offset,-1,!1)))),prev_act=act}),1),result}),1),$def(self,"$replace_actions",(function(old,updated){return $send(old,"each",[],(function $$18(act){return null==act&&(act=nil),(null==$$18.$$s?this:$$18.$$s).$active_queue().$delete(act)}),{$$arity:1,$$s:this}),this.$active_queue()["$<<"](updated)}),2),$def(self,"$raise_clobber_error",(function(action,existing){var diagnostic=nil;return diagnostic=$$("Diagnostic").$new("error","invalid_action",$hash2(["action"],{action:action}),action.$range()),this.diagnostics.$process(diagnostic),diagnostic=$$("Diagnostic").$new("note","clobbered",$hash2(["action"],{action:existing["$[]"](0)}),existing["$[]"](0).$range()),this.diagnostics.$process(diagnostic),this.$raise($$("ClobberingError"),"Parser::Source::Rewriter detected clobbering")}),2),$def(self,"$in_transaction?",(function(){return this.pending_queue["$nil?"]()["$!"]()}),0),$def(self,"$active_queue",(function(){var $ret_or_1;return $truthy($ret_or_1=this.pending_queue)?$ret_or_1:this.queue}),0),$def(self,"$active_clobber",(function(){var $ret_or_1;return $truthy($ret_or_1=this.pending_clobber)?$ret_or_1:this.clobber}),0),$def(self,"$active_insertions",(function(){var $ret_or_1;return $truthy($ret_or_1=this.pending_insertions)?$ret_or_1:this.insertions}),0),$def(self,"$active_clobber=",(function(value){return $truthy(this.pending_clobber)?this.pending_clobber=value:this.clobber=value}),1),$def(self,"$active_insertions=",(function(value){return $truthy(this.pending_insertions)?this.pending_insertions=value:this.insertions=value}),1),$def(self,"$adjacent?",(function(range1,range2){var $ret_or_1;return $truthy($ret_or_1=$rb_le(range1.$begin_pos(),range2.$end_pos()))?$rb_le(range2.$begin_pos(),range1.$end_pos()):$ret_or_1}),2),$const_set($nesting[0],"DEPRECATION_WARNING",["Parser::Source::Rewriter is deprecated.","Please update your code to use Parser::Source::TreeRewriter instead"].$join("\n").$freeze()),self.$extend($$("Deprecation"))}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/rewriter/action"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$eqeq=Opal.eqeq;return Opal.add_stubs("include,attr_reader,alias_method,freeze,<=>,begin_pos,range,zero?,order,empty?,==,length,inspect"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Action"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.replacement=$proto.range=nil,self.$include($$("Comparable")),self.$attr_reader("range","replacement","allow_multiple_insertions","order"),self.$alias_method("allow_multiple_insertions?","allow_multiple_insertions"),$def(self,"$initialize",(function(range,replacement,allow_multiple_insertions,order){return null==replacement&&(replacement=""),null==allow_multiple_insertions&&(allow_multiple_insertions=!1),null==order&&(order=0),this.range=range,this.replacement=replacement,this.allow_multiple_insertions=allow_multiple_insertions,this.order=order,this.$freeze()}),-2),$def(self,"$<=>",(function(other){var result=nil;return result=this.$range().$begin_pos()["$<=>"](other.$range().$begin_pos()),$truthy(result["$zero?"]())?this.$order()["$<=>"](other.$order()):result}),1),$def(self,"$to_s",(function(){return $eqeq(this.range.$length(),0)&&$truthy(this.replacement["$empty?"]())?"do nothing":$eqeq(this.range.$length(),0)?"insert "+this.replacement.$inspect():$truthy(this.replacement["$empty?"]())?"remove "+this.range.$length()+" character(s)":"replace "+this.range.$length()+" character(s) with "+this.replacement.$inspect()}),0)}(Opal.$r($nesting)("Rewriter"),0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/tree_rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$lambda=Opal.lambda,$gvars=Opal.gvars,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$const_set=Opal.const_set,$eqeqeq=Opal.eqeqeq,$range=Opal.range,$to_ary=Opal.to_ary,$rb_gt=(Opal.hash,Opal.rb_gt),$rb_lt=Opal.rb_lt,$slice=Opal.slice;return Opal.add_stubs("attr_reader,new,puts,render,consumer=,-,freeze,check_policy_validity,method,adjust,source_range,empty?,==,source_buffer,raise,combine,action_root,merge!,dup,contract,+,begin_pos,range,end_pos,check_range_validity,moved,to_s,replace,wrap,source,each,ordered_replacements,<<,[],length,join,nested_actions,class,name,action_summary,warn_of_deprecation,insert_before,insert_after,extend,protected,private,as_replacements,===,size,first,map,to_range,inspect,values,>,<,trigger_policy,process"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"TreeRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.diagnostics=$proto.source_buffer=$proto.enforcer=$proto.action_root=$proto.in_transaction=$proto.policy=nil,self.$attr_reader("source_buffer"),self.$attr_reader("diagnostics"),$def(self,"$initialize",(function(source_buffer,$kwargs){var crossing_deletions,different_replacements,swallowed_insertions,$writer,all_encompassing_range;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(crossing_deletions=$kwargs.$$smap.crossing_deletions)&&(crossing_deletions="accept"),null==(different_replacements=$kwargs.$$smap.different_replacements)&&(different_replacements="accept"),null==(swallowed_insertions=$kwargs.$$smap.swallowed_insertions)&&(swallowed_insertions="accept"),this.diagnostics=$$$($$("Diagnostic"),"Engine").$new(),$writer=[$lambda((function(diag){return null==$gvars.stderr&&($gvars.stderr=nil),null==diag&&(diag=nil),$gvars.stderr.$puts(diag.$render())}),1)],$send(this.diagnostics,"consumer=",$to_a($writer)),$rb_minus($writer.length,1),this.source_buffer=source_buffer,this.in_transaction=!1,this.policy=$hash2(["crossing_deletions","different_replacements","swallowed_insertions"],{crossing_deletions:crossing_deletions,different_replacements:different_replacements,swallowed_insertions:swallowed_insertions}).$freeze(),this.$check_policy_validity(),this.enforcer=this.$method("enforce_policy"),all_encompassing_range=this.source_buffer.$source_range().$adjust($hash2(["begin_pos","end_pos"],{begin_pos:-1,end_pos:1})),this.action_root=$$$($$("TreeRewriter"),"Action").$new(all_encompassing_range,this.enforcer)}),-2),$def(self,"$empty?",(function(){return this.action_root["$empty?"]()}),0),$def(self,"$merge!",(function(with$){return $eqeq(this.$source_buffer(),with$.$source_buffer())||this.$raise("TreeRewriter are not for the same source_buffer"),this.action_root=this.action_root.$combine(with$.$action_root()),this}),1),$def(self,"$merge",(function(with$){return this.$dup()["$merge!"](with$)}),1),$def(self,"$import!",(function(foreign_rewriter,$kwargs){var offset,merge_effective_range,merge_with,contracted=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(offset=$kwargs.$$smap.offset)&&(offset=0),$truthy(foreign_rewriter["$empty?"]())||(contracted=foreign_rewriter.$action_root().$contract(),merge_effective_range=$$$($$$($$$("Parser"),"Source"),"Range").$new(this.source_buffer,$rb_plus(contracted.$range().$begin_pos(),offset),$rb_plus(contracted.$range().$end_pos(),offset)),this.$check_range_validity(merge_effective_range),merge_with=contracted.$moved(this.source_buffer,offset),this.action_root=this.action_root.$combine(merge_with)),this}),-2),$def(self,"$replace",(function(range,content){return this.$combine(range,$hash2(["replacement"],{replacement:content}))}),2),$def(self,"$wrap",(function(range,insert_before,insert_after){return this.$combine(range,$hash2(["insert_before","insert_after"],{insert_before:insert_before.$to_s(),insert_after:insert_after.$to_s()}))}),3),$def(self,"$remove",(function(range){return this.$replace(range,"".$freeze())}),1),$def(self,"$insert_before",(function(range,content){return this.$wrap(range,content,nil)}),2),$def(self,"$insert_after",(function(range,content){return this.$wrap(range,nil,content)}),2),$def(self,"$process",(function(){var source=nil,chunks=nil,last_end=nil;return source=this.source_buffer.$source(),chunks=[],last_end=0,$send(this.action_root.$ordered_replacements(),"each",[],(function(range,replacement){return null==range&&(range=nil),null==replacement&&(replacement=nil),chunks["$<<"](source["$[]"](Opal.Range.$new(last_end,range.$begin_pos(),!0)))["$<<"](replacement),last_end=range.$end_pos()}),2),chunks["$<<"](source["$[]"](Opal.Range.$new(last_end,source.$length(),!0))),chunks.$join()}),0),$def(self,"$as_replacements",(function(){return this.action_root.$ordered_replacements()}),0),$def(self,"$as_nested_actions",(function(){return this.action_root.$nested_actions()}),0),$def(self,"$transaction",(function $$transaction(){var $yield=$$transaction.$$p||nil,self=this,previous=nil,restore_root=nil;return delete $$transaction.$$p,function(){try{return $yield===nil&&self.$raise(self.$class()+"#transaction requires block"),previous=self.in_transaction,self.in_transaction=!0,restore_root=self.action_root,Opal.yieldX($yield,[]),restore_root=nil,self}finally{$truthy(restore_root)&&(self.action_root=restore_root),self.in_transaction=previous}}()}),0),$def(self,"$in_transaction?",(function(){return this.in_transaction}),0),$def(self,"$inspect",(function(){return"#<"+this.$class()+" "+this.$source_buffer().$name()+": "+this.$action_summary()+">"}),0),$def(self,"$insert_before_multi",(function(range,text){return this.$class().$warn_of_deprecation(),this.$insert_before(range,text)}),2),$def(self,"$insert_after_multi",(function(range,text){return this.$class().$warn_of_deprecation(),this.$insert_after(range,text)}),2),$const_set($nesting[0],"DEPRECATION_WARNING",["TreeRewriter#insert_before_multi and insert_before_multi exist only for legacy compatibility.","Please update your code to use `wrap`, `insert_before` or `insert_after` instead."].$join("\n").$freeze()),self.$extend($$("Deprecation")),self.$protected(),self.$attr_reader("action_root"),self.$private(),$def(self,"$action_summary",(function(){var $ret_or_1,replacements=nil,suffix=nil,parts=nil;return replacements=this.$as_replacements(),$eqeqeq(0,$ret_or_1=replacements.$size())?"empty":($eqeqeq($range(1,3,!1),$ret_or_1)||(replacements=replacements.$first(3),suffix="…"),parts=$send(replacements,"map",[],(function($mlhs_tmp1){var $a,range=nil,str=nil;return null==$mlhs_tmp1&&($mlhs_tmp1=nil),range=null==($a=$to_ary($mlhs_tmp1))[0]?nil:$a[0],str=null==$a[1]?nil:$a[1],$truthy(str["$empty?"]())?"-"+range.$to_range():$eqeq(range.$size(),0)?"+"+str.$inspect()+"@"+range.$begin_pos():"^"+str.$inspect()+"@"+range.$to_range()}),{$$arity:1,$$has_top_level_mlhs_arg:!0}),$truthy(suffix)&&parts["$<<"](suffix),parts.$join(", "))}),0),$const_set($nesting[0],"ACTIONS",["accept","warn","raise"].$freeze()),$def(self,"$check_policy_validity",(function(){var invalid=nil;return invalid=$rb_minus(this.policy.$values(),$$("ACTIONS")),$truthy(invalid["$empty?"]())?nil:this.$raise($$("ArgumentError"),"Invalid policy: "+invalid.$join(", "))}),0),$def(self,"$combine",(function(range,attributes){var action;return range=this.$check_range_validity(range),action=$$$($$("TreeRewriter"),"Action").$new(range,this.enforcer,Opal.to_hash(attributes)),this.action_root=this.action_root.$combine(action),this}),2),$def(self,"$check_range_validity",(function(range){return($truthy($rb_lt(range.$begin_pos(),0))||$truthy($rb_gt(range.$end_pos(),this.source_buffer.$source().$size())))&&this.$raise($$("IndexError"),"The range "+range.$to_range()+" is outside the bounds of the source"),range}),1),$def(self,"$enforce_policy",(function $$enforce_policy(event){var values,$yield=$$enforce_policy.$$p||nil;return delete $$enforce_policy.$$p,$eqeq(this.policy["$[]"](event),"accept")?nil:$truthy(values=Opal.yieldX($yield,[]))?this.$trigger_policy(event,Opal.to_hash(values)):nil}),1),$const_set($nesting[0],"POLICY_TO_LEVEL",$hash2(["warn","raise"],{warn:"warning",raise:"error"}).$freeze()),$def(self,"$trigger_policy",(function(event,$kwargs){var range,conflict,arguments$,$a,action,$ret_or_1,diag=nil,highlights=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(range=$kwargs.$$smap.range)&&(range=this.$raise()),null==(conflict=$kwargs.$$smap.conflict)&&(conflict=nil),arguments$=Opal.kwrestargs($kwargs,{range:!0,conflict:!0}),action=$truthy($ret_or_1=this.policy["$[]"](event))?$ret_or_1:"raise",diag=$$$($$("Parser"),"Diagnostic").$new($$("POLICY_TO_LEVEL")["$[]"](action),event,arguments$,range),this.diagnostics.$process(diag),$truthy(conflict)&&(range=null==($a=$to_ary(conflict))[0]?nil:$a[0],highlights=$slice.call($a,1),diag=$$$($$("Parser"),"Diagnostic").$new($$("POLICY_TO_LEVEL")["$[]"](action),event+"_conflict",arguments$,range,highlights),this.diagnostics.$process(diag)),$eqeq(action,"raise")?this.$raise($$$($$("Parser"),"ClobberingError"),"Parser::Source::TreeRewriter detected clobbering"):nil}),-2)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/tree_rewriter/action"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$not=Opal.not,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$rb_gt=Opal.rb_gt,$rb_minus=Opal.rb_minus,$rb_ge=Opal.rb_ge,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_lt=Opal.rb_lt,$neqeq=Opal.neqeq;return Opal.add_stubs("attr_reader,freeze,empty?,do_combine,==,<<,begin,concat,flat_map,to_proc,end,!,insert_before,insert_after,replacement,raise,insertion?,with,begin_pos,range,first,children,end_pos,last,new,+,map,moved,protected,swallow,class,merge,place_in_hierarchy,analyse_hierarchy,[],fuse_deletions,combine_children,inject,size,bsearch,bsearch_child_index,>,-,>=,===,<=>,<=,check_fusible,<,shift,pop,compact!,each,call,call_enforcer_for_merge,!=,select"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super){var self=$klass($base,null,"Action"),$proto=self.$$prototype;return $proto.insert_before=$proto.insert_after=$proto.children=$proto.replacement=$proto.range=$proto.enforcer=nil,self.$attr_reader("range","replacement","insert_before","insert_after"),$def(self,"$initialize",(function(range,enforcer,$kwargs){var insert_before,replacement,insert_after,children,$a;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(insert_before=$kwargs.$$smap.insert_before)&&(insert_before=""),null==(replacement=$kwargs.$$smap.replacement)&&(replacement=nil),null==(insert_after=$kwargs.$$smap.insert_after)&&(insert_after=""),null==(children=$kwargs.$$smap.children)&&(children=[]),$a=[range,enforcer,children.$freeze(),insert_before.$freeze(),replacement,insert_after.$freeze()],this.range=$a[0],this.enforcer=$a[1],this.children=$a[2],this.insert_before=$a[3],this.replacement=$a[4],this.insert_after=$a[5],this.$freeze()}),-3),$def(self,"$combine",(function(action){return $truthy(action["$empty?"]())?this:this.$do_combine(action)}),1),$def(self,"$empty?",(function(){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.insert_before["$empty?"]())?this.insert_after["$empty?"]():$ret_or_3)?this.children["$empty?"]():$ret_or_2)?$truthy($ret_or_2=this.replacement["$=="](nil))?$ret_or_2:$truthy($ret_or_3=this.replacement["$empty?"]())?this.range["$empty?"]():$ret_or_3:$ret_or_1}),0),$def(self,"$ordered_replacements",(function(){var reps=nil;return reps=[],$truthy(this.insert_before["$empty?"]())||reps["$<<"]([this.range.$begin(),this.insert_before]),$truthy(this.replacement)&&reps["$<<"]([this.range,this.replacement]),reps.$concat($send(this.children,"flat_map",[],"ordered_replacements".$to_proc())),$truthy(this.insert_after["$empty?"]())||reps["$<<"]([this.range.$end(),this.insert_after]),reps}),0),$def(self,"$nested_actions",(function(){var actions=nil;return actions=[],($not(this.insert_before["$empty?"]())||$not(this.insert_after["$empty?"]()))&&actions["$<<"](["wrap",this.range,this.insert_before,this.insert_after]),$truthy(this.replacement)&&actions["$<<"](["replace",this.range,this.replacement]),actions.$concat($send(this.children,"flat_map",[],"nested_actions".$to_proc()))}),0),$def(self,"$insertion?",(function(){var $ret_or_1,$ret_or_2=nil;return $truthy($ret_or_1=$truthy($ret_or_2=this.$insert_before()["$empty?"]()["$!"]())?$ret_or_2:this.$insert_after()["$empty?"]()["$!"]())?$ret_or_1:$truthy($ret_or_2=this.$replacement())?this.$replacement()["$empty?"]()["$!"]():$ret_or_2}),0),$def(self,"$contract",(function(){var range;return $truthy(this["$empty?"]())&&this.$raise("Empty actions can not be contracted"),$truthy(this["$insertion?"]())?this:(range=this.range.$with($hash2(["begin_pos","end_pos"],{begin_pos:this.$children().$first().$range().$begin_pos(),end_pos:this.$children().$last().$range().$end_pos()})),this.$with($hash2(["range"],{range:range})))}),0),$def(self,"$moved",(function(source_buffer,offset){var moved_range;return moved_range=$$$($$$($$$("Parser"),"Source"),"Range").$new(source_buffer,$rb_plus(this.range.$begin_pos(),offset),$rb_plus(this.range.$end_pos(),offset)),this.$with($hash2(["range","children"],{range:moved_range,children:$send(this.$children(),"map",[],(function(child){return null==child&&(child=nil),child.$moved(source_buffer,offset)}),1)}))}),2),self.$protected(),self.$attr_reader("children"),$def(self,"$with",(function($kwargs){var range,enforcer,children,insert_before,replacement,insert_after;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(range=$kwargs.$$smap.range)&&(range=this.range),null==(enforcer=$kwargs.$$smap.enforcer)&&(enforcer=this.enforcer),null==(children=$kwargs.$$smap.children)&&(children=this.children),null==(insert_before=$kwargs.$$smap.insert_before)&&(insert_before=this.insert_before),null==(replacement=$kwargs.$$smap.replacement)&&(replacement=this.replacement),null==(insert_after=$kwargs.$$smap.insert_after)&&(insert_after=this.insert_after),$truthy(replacement)&&(children=this.$swallow(children)),this.$class().$new(range,enforcer,$hash2(["children","insert_before","replacement","insert_after"],{children:children,insert_before:insert_before,replacement:replacement,insert_after:insert_after}))}),-1),$def(self,"$do_combine",(function(action){return $eqeq(action.$range(),this.range)?this.$merge(action):this.$place_in_hierarchy(action)}),1),$def(self,"$place_in_hierarchy",(function(action){var family=nil,extra_sibbling=nil;return family=this.$analyse_hierarchy(action),$truthy(family["$[]"]("fusible"))?this.$fuse_deletions(action,family["$[]"]("fusible"),[].concat($to_a(family["$[]"]("sibbling_left"))).concat($to_a(family["$[]"]("child"))).concat($to_a(family["$[]"]("sibbling_right")))):(extra_sibbling=$truthy(family["$[]"]("parent"))?family["$[]"]("parent").$do_combine(action):$truthy(family["$[]"]("child"))?action.$with($hash2(["children","enforcer"],{children:family["$[]"]("child"),enforcer:this.enforcer})).$combine_children(action.$children()):action,this.$with($hash2(["children"],{children:[].concat($to_a(family["$[]"]("sibbling_left"))).concat([extra_sibbling]).concat($to_a(family["$[]"]("sibbling_right")))})))}),1),$def(self,"$combine_children",(function(more_children){return $send(more_children,"inject",[this],(function(parent,new_child){return null==parent&&(parent=nil),null==new_child&&(new_child=nil),parent.$place_in_hierarchy(new_child)}),2)}),1),$def(self,"$fuse_deletions",(function(action,fusible,other_sibblings){var fused_range,fused_deletion,without_fusible=nil;return without_fusible=this.$with($hash2(["children"],{children:other_sibblings})),fused_range=$send([action].concat($to_a(fusible)),"map",[],"range".$to_proc()).$inject("join"),fused_deletion=action.$with($hash2(["range"],{range:fused_range})),without_fusible.$do_combine(fused_deletion)}),3),$def(self,"$bsearch_child_index",(function $$bsearch_child_index(from){var size,$ret_or_1,$yield=$$bsearch_child_index.$$p||nil;return delete $$bsearch_child_index.$$p,null==from&&(from=0),size=this.children.$size(),$truthy($ret_or_1=$send(Opal.Range.$new(from,size,!0),"bsearch",[],(function $$6(i){var self=null==$$6.$$s?this:$$6.$$s;return null==self.children&&(self.children=nil),null==i&&(i=nil),Opal.yield1($yield,self.children["$[]"](i))}),{$$arity:1,$$s:this}))?$ret_or_1:size}),-1),$def(self,"$analyse_hierarchy",(function(action){var start,center,$ret_or_1,r=nil,left_index=nil,right_index=nil,parent=nil,overlap_left=nil,overlap_right=nil,contained=nil,fusible=nil;return r=action.$range(),left_index=$send(this,"bsearch_child_index",[],(function(child){return null==child&&(child=nil),$rb_gt(child.$range().$end_pos(),r.$begin_pos())}),1),start=$eqeq(left_index,0)?0:$rb_minus(left_index,1),right_index=$send(this,"bsearch_child_index",[start],(function(child){return null==child&&(child=nil),$rb_ge(child.$range().$begin_pos(),r.$end_pos())}),1),center=$rb_minus(right_index,left_index),$eqeqeq(0,$ret_or_1=center)||($eqeqeq(-1,$ret_or_1)?(left_index=$rb_minus(left_index,1),right_index=$rb_plus(right_index,1),parent=this.children["$[]"](left_index)):(overlap_left=this.children["$[]"](left_index).$range().$begin_pos()["$<=>"](r.$begin_pos()),overlap_right=this.children["$[]"]($rb_minus(right_index,1)).$range().$end_pos()["$<=>"](r.$end_pos()),$eqeq(center,1)&&$truthy($rb_le(overlap_left,0))&&$truthy($rb_ge(overlap_right,0))?parent=this.children["$[]"](left_index):(contained=this.children["$[]"](Opal.Range.$new(left_index,right_index,!0)),fusible=this.$check_fusible(action,$truthy($rb_lt(overlap_left,0))?contained.$shift():nil,$truthy($rb_gt(overlap_right,0))?contained.$pop():nil)))),$hash2(["parent","sibbling_left","sibbling_right","fusible","child"],{parent:parent,sibbling_left:this.children["$[]"](Opal.Range.$new(0,left_index,!0)),sibbling_right:this.children["$[]"](Opal.Range.$new(right_index,this.children.$size(),!0)),fusible:fusible,child:contained})}),1),$def(self,"$check_fusible",(function(action,$a){var fusible,self=this;return(fusible=Opal.slice.call(arguments,1))["$compact!"](),$truthy(fusible["$empty?"]())?nil:($send(fusible,"each",[],(function $$9(child){var kind,self=null==$$9.$$s?this:$$9.$$s;return null==self.enforcer&&(self.enforcer=nil),null==child&&(child=nil),kind=$truthy(action["$insertion?"]())||$truthy(child["$insertion?"]())?"crossing_insertions":"crossing_deletions",$send(self.enforcer,"call",[kind],(function(){return $hash2(["range","conflict"],{range:action.$range(),conflict:child.$range()})}),0)}),{$$arity:1,$$s:self}),fusible)}),-2),$def(self,"$merge",(function(action){var $ret_or_1;return this.$call_enforcer_for_merge(action),this.$with($hash2(["insert_before","replacement","insert_after"],{insert_before:""+action.$insert_before()+this.$insert_before(),replacement:$truthy($ret_or_1=action.$replacement())?$ret_or_1:this.replacement,insert_after:""+this.$insert_after()+action.$insert_after()})).$combine_children(action.$children())}),1),$def(self,"$call_enforcer_for_merge",(function(action){return $send(this.enforcer,"call",["different_replacements"],(function $$11(){var self=null==$$11.$$s?this:$$11.$$s;return null==self.replacement&&(self.replacement=nil),null==self.range&&(self.range=nil),$truthy(self.replacement)&&$truthy(action.$replacement())&&$neqeq(self.replacement,action.$replacement())?$hash2(["range","replacement","other_replacement"],{range:self.range,replacement:action.$replacement(),other_replacement:self.replacement}):nil}),{$$arity:0,$$s:this})}),1),$def(self,"$swallow",(function(children){return $send(this.enforcer,"call",["swallowed_insertions"],(function $$12(){var self=null==$$12.$$s?this:$$12.$$s,insertions=nil;return null==self.range&&(self.range=nil),insertions=$send(children,"select",[],"insertion?".$to_proc()),$truthy(insertions["$empty?"]())?nil:$hash2(["range","conflict"],{range:self.range,conflict:$send(insertions,"map",[],"range".$to_proc())})}),{$$arity:0,$$s:this}),[]}),1)}(Opal.$r($nesting)("TreeRewriter"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super,$send=Opal.send,$truthy=Opal.truthy,$hash2=Opal.hash2,$eqeq=Opal.eqeq,$range=Opal.range,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus;return Opal.add_stubs("attr_reader,freeze,line,alias_method,column,last_line,last_column,with,update_expression,==,class,reduce,map,instance_variables,instance_variable_get,send,inject,to_sym,[],[]=,-,protected,tap,dup,to_proc"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,null,"Map"),$proto=self.$$prototype;return $proto.node=$proto.expression=nil,self.$attr_reader("node"),self.$attr_reader("expression"),$def(self,"$initialize",(function(expression){return this.expression=expression}),1),$def(self,"$initialize_copy",(function $$initialize_copy(other){var $yield=$$initialize_copy.$$p||nil;return delete $$initialize_copy.$$p,$send2(this,$find_super(this,"initialize_copy",$$initialize_copy,!1,!0),"initialize_copy",[other],$yield),this.node=nil}),1),$def(self,"$node=",(function(node){return this.node=node,this.$freeze(),this.node}),1),$def(self,"$line",(function(){return this.expression.$line()}),0),self.$alias_method("first_line","line"),$def(self,"$column",(function(){return this.expression.$column()}),0),$def(self,"$last_line",(function(){return this.expression.$last_line()}),0),$def(self,"$last_column",(function(){return this.expression.$last_column()}),0),$def(self,"$with_expression",(function(expression_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_expression(expression_l)}),1)}),1),$def(self,"$==",(function(other){var $ret_or_1;return $truthy($ret_or_1=other.$class()["$=="](this.$class()))?$send(this.$instance_variables(),"map",[],(function $$4(ivar){return null==ivar&&(ivar=nil),(null==$$4.$$s?this:$$4.$$s).$instance_variable_get(ivar)["$=="](other.$send("instance_variable_get",ivar))}),{$$arity:1,$$s:this}).$reduce("&"):$ret_or_1}),1),$def(self,"$to_hash",(function(){return $send(this.$instance_variables(),"inject",[$hash2([],{})],(function $$5(hash,ivar){var $writer,self=null==$$5.$$s?this:$$5.$$s;return null==hash&&(hash=nil),null==ivar&&(ivar=nil),$eqeq(ivar.$to_sym(),"@node")||($writer=[ivar["$[]"]($range(1,-1,!1)).$to_sym(),self.$instance_variable_get(ivar)],$send(hash,"[]=",$to_a($writer)),$rb_minus($writer.length,1)),hash}),{$$arity:2,$$s:this})}),0),self.$protected(),$def(self,"$with",(function $Map_with$6(){var block=$Map_with$6.$$p||nil;return delete $Map_with$6.$$p,$send(this.$dup(),"tap",[],block.$to_proc())}),0),$def(self,"$update_expression",(function(expression_l){return this.expression=expression_l}),1)}([$module($base,"Source")].concat($parent_nesting)[0])}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/operator"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Operator");return self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(operator,expression){return delete $$initialize.$$p,this.operator=operator,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression],null)}),2)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/collection"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Collection");return self.$attr_reader("begin"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),3)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/constant"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Constant");return self.$attr_reader("double_colon"),self.$attr_reader("name"),self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(double_colon,name,expression){var $a;return delete $$initialize.$$p,$a=[double_colon,name],this.double_colon=$a[0],this.name=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression],null)}),3),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/variable"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Variable");return self.$attr_reader("name"),self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(name_l,expression_l){return delete $$initialize.$$p,null==expression_l&&(expression_l=name_l),this.name=name_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),-2),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/keyword"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Keyword");return self.$attr_reader("keyword"),self.$attr_reader("begin"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(keyword_l,begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,this.keyword=keyword_l,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/definition"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader,join"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Definition"),$proto=self.$$prototype;return $proto.keyword=$proto.end=nil,self.$attr_reader("keyword"),self.$attr_reader("operator"),self.$attr_reader("name"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(keyword_l,operator_l,name_l,end_l){return delete $$initialize.$$p,this.keyword=keyword_l,this.operator=operator_l,this.name=name_l,this.end=end_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[this.keyword.$join(this.end)],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/method_definition"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("attr_reader,join"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"MethodDefinition");return self.$$prototype.keyword=nil,self.$attr_reader("keyword"),self.$attr_reader("operator"),self.$attr_reader("name"),self.$attr_reader("end"),self.$attr_reader("assignment"),$def(self,"$initialize",(function $$initialize(keyword_l,operator_l,name_l,end_l,assignment_l,body_l){var $ret_or_1;return delete $$initialize.$$p,this.keyword=keyword_l,this.operator=operator_l,this.name=name_l,this.end=end_l,this.assignment=assignment_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[this.keyword.$join($truthy($ret_or_1=end_l)?$ret_or_1:body_l)],null)}),6)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/send"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Send");return self.$attr_reader("dot"),self.$attr_reader("selector"),self.$attr_reader("operator"),self.$attr_reader("begin"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(dot_l,selector_l,begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,this.dot=dot_l,this.selector=selector_l,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),5),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/index"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Index");return self.$attr_reader("begin"),self.$attr_reader("end"),self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],this.operator=nil,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),3),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/condition"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Condition");return self.$attr_reader("keyword"),self.$attr_reader("begin"),self.$attr_reader("else"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(keyword_l,begin_l,else_l,end_l,expression_l){var $a;return delete $$initialize.$$p,this.keyword=keyword_l,$a=[begin_l,else_l,end_l],this.begin=$a[0],this.else=$a[1],this.end=$a[2],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),5)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/ternary"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Ternary");return self.$attr_reader("question"),self.$attr_reader("colon"),$def(self,"$initialize",(function $$initialize(question_l,colon_l,expression_l){var $a;return delete $$initialize.$$p,$a=[question_l,colon_l],this.question=$a[0],this.colon=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),3)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/for"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"For");return self.$attr_reader("keyword","in"),self.$attr_reader("begin","end"),$def(self,"$initialize",(function $$initialize(keyword_l,in_l,begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,$a=[keyword_l,in_l],this.keyword=$a[0],this.in=$a[1],$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),5)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/rescue_body"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"RescueBody");return self.$attr_reader("keyword"),self.$attr_reader("assoc"),self.$attr_reader("begin"),$def(self,"$initialize",(function $$initialize(keyword_l,assoc_l,begin_l,expression_l){return delete $$initialize.$$p,this.keyword=keyword_l,this.assoc=assoc_l,this.begin=begin_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/heredoc"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Heredoc");return self.$attr_reader("heredoc_body"),self.$attr_reader("heredoc_end"),$def(self,"$initialize",(function $$initialize(begin_l,body_l,end_l){return delete $$initialize.$$p,this.heredoc_body=body_l,this.heredoc_end=end_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[begin_l],null)}),3)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/objc_kwarg"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ObjcKwarg");return self.$attr_reader("keyword"),self.$attr_reader("operator"),self.$attr_reader("argument"),$def(self,"$initialize",(function $$initialize(keyword_l,operator_l,argument_l,expression_l){var $a;return delete $$initialize.$$p,$a=[keyword_l,operator_l,argument_l],this.keyword=$a[0],this.operator=$a[1],this.argument=$a[2],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/syntax_error"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader,message"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"SyntaxError");return self.$attr_reader("diagnostic"),$def(self,"$initialize",(function $$initialize(diagnostic){return delete $$initialize.$$p,this.diagnostic=diagnostic,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[diagnostic.$message()],null)}),1)}($nesting[0],$$("StandardError"))}($nesting[0],$nesting)},Opal.modules["parser/clobbering_error"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass;return function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return $klass($nesting[0],$$("RuntimeError"),"ClobberingError"),nil}($nesting[0],$nesting)},Opal.modules["parser/diagnostic"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$truthy=Opal.truthy,$hash2=Opal.hash2,$def=Opal.def,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$to_ary=Opal.to_ary,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$send=Opal.send,$to_a=Opal.to_a,$rb_ge=Opal.rb_ge,$not=Opal.not,$neqeq=Opal.neqeq;return Opal.add_stubs("freeze,attr_reader,include?,raise,join,inspect,dup,compile,is?,==,line,last_line,+,message,render_line,first_line_only,last_line_only,-,source_buffer,decompose_position,end_pos,>,private,source_line,*,length,each,line_range,intersect,column_range,size,[]=,>=,!,map,name,!=,resize,=~,source,adjust"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Diagnostic"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.reason=$proto.arguments=$proto.location=$proto.level=$proto.highlights=nil,$const_set($nesting[0],"LEVELS",["note","warning","error","fatal"].$freeze()),self.$attr_reader("level","reason","arguments"),self.$attr_reader("location","highlights"),$def(self,"$initialize",(function(level,reason,arguments$,location,highlights){var $ret_or_1;return null==highlights&&(highlights=[]),$truthy($$("LEVELS")["$include?"](level))||this.$raise($$("ArgumentError"),"Diagnostic#level must be one of "+$$("LEVELS").$join(", ")+"; "+level.$inspect()+" provided."),$truthy(location)||this.$raise("Expected a location"),this.level=level,this.reason=reason,this.arguments=($truthy($ret_or_1=arguments$)?$ret_or_1:$hash2([],{})).$dup().$freeze(),this.location=location,this.highlights=highlights.$dup().$freeze(),this.$freeze()}),-5),$def(self,"$message",(function(){return $$("Messages").$compile(this.reason,this.arguments)}),0),$def(self,"$render",(function(){var $a,$b,first_line=nil,last_line=nil,num_lines=nil,last_lineno=nil,last_column=nil;return $eqeq(this.location.$line(),this.location.$last_line())||$truthy(this.location["$is?"]("\n"))?$rb_plus([this.location+": "+this.level+": "+this.$message()],this.$render_line(this.location)):(first_line=this.$first_line_only(this.location),last_line=this.$last_line_only(this.location),num_lines=$rb_plus($rb_minus(this.location.$last_line(),this.location.$line()),1),$b=this.location.$source_buffer().$decompose_position(this.location.$end_pos()),last_lineno=null==($a=$to_ary($b))[0]?nil:$a[0],last_column=null==$a[1]?nil:$a[1],$rb_plus($rb_plus([this.location+"-"+last_lineno+":"+last_column+": "+this.level+": "+this.$message()],this.$render_line(first_line,$rb_gt(num_lines,2),!1)),this.$render_line(last_line,!1,!0)))}),0),self.$private(),$def(self,"$render_line",(function(range,ellipsis,range_end){var source_line=nil,highlight_line=nil,$writer=nil;return null==ellipsis&&(ellipsis=!1),null==range_end&&(range_end=!1),source_line=range.$source_line(),highlight_line=$rb_times(" ",source_line.$length()),$send(this.highlights,"each",[],(function(highlight){var line_range,$writer=nil;return null==highlight&&(highlight=nil),line_range=range.$source_buffer().$line_range(range.$line()),$truthy(highlight=highlight.$intersect(line_range))?($writer=[highlight.$column_range(),$rb_times("~",highlight.$size())],$send(highlight_line,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),1),$truthy(range["$is?"]("\n"))?highlight_line=$rb_plus(highlight_line,"^"):$not(range_end)&&$truthy($rb_ge(range.$size(),1))?($writer=[range.$column_range(),$rb_plus("^",$rb_times("~",$rb_minus(range.$size(),1)))],$send(highlight_line,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):($writer=[range.$column_range(),$rb_times("~",range.$size())],$send(highlight_line,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy(ellipsis)&&(highlight_line=$rb_plus(highlight_line,"...")),$send([source_line,highlight_line],"map",[],(function(line){return null==line&&(line=nil),range.$source_buffer().$name()+":"+range.$line()+": "+line}),1)}),-2),$def(self,"$first_line_only",(function(range){return $neqeq(range.$line(),range.$last_line())?range.$resize(range.$source()["$=~"](/\n/)):range}),1),$def(self,"$last_line_only",(function(range){return $neqeq(range.$line(),range.$last_line())?range.$adjust($hash2(["begin_pos"],{begin_pos:range.$source()["$=~"](/[^\n]*$/)})):range}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/diagnostic/engine"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("attr_accessor,ignore?,call,raise?,raise,protected,==,level"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Engine"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.consumer=$proto.ignore_warnings=$proto.all_errors_are_fatal=nil,self.$attr_accessor("consumer"),self.$attr_accessor("all_errors_are_fatal"),self.$attr_accessor("ignore_warnings"),$def(self,"$initialize",(function(consumer){return null==consumer&&(consumer=nil),this.consumer=consumer,this.all_errors_are_fatal=!1,this.ignore_warnings=!1}),-1),$def(self,"$process",(function(diagnostic){return $truthy(this["$ignore?"](diagnostic))||$truthy(this.consumer)&&this.consumer.$call(diagnostic),$truthy(this["$raise?"](diagnostic))&&this.$raise($$$($$("Parser"),"SyntaxError"),diagnostic),this}),1),self.$protected(),$def(self,"$ignore?",(function(diagnostic){var $ret_or_1;return $truthy($ret_or_1=this.ignore_warnings)?diagnostic.$level()["$=="]("warning"):$ret_or_1}),1),$def(self,"$raise?",(function(diagnostic){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.all_errors_are_fatal)?diagnostic.$level()["$=="]("error"):$ret_or_2)?$ret_or_1:diagnostic.$level()["$=="]("fatal")}),1)}(Opal.$r($nesting)("Diagnostic"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/static_environment"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def;return Opal.add_stubs("reset,[],push,dup,pop,add,to_sym,include?,declare,declared?,empty?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"StaticEnvironment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.stack=$proto.variables=nil,$const_set($nesting[0],"FORWARD_ARGS","FORWARD_ARGS"),$const_set($nesting[0],"ANONYMOUS_BLOCKARG","ANONYMOUS_BLOCKARG"),$def(self,"$initialize",(function(){return this.$reset()}),0),$def(self,"$reset",(function(){return this.variables=$$("Set")["$[]"](),this.stack=[]}),0),$def(self,"$extend_static",(function(){return this.stack.$push(this.variables),this.variables=$$("Set")["$[]"](),this}),0),$def(self,"$extend_dynamic",(function(){return this.stack.$push(this.variables),this.variables=this.variables.$dup(),this}),0),$def(self,"$unextend",(function(){return this.variables=this.stack.$pop(),this}),0),$def(self,"$declare",(function(name){return this.variables.$add(name.$to_sym()),this}),1),$def(self,"$declared?",(function(name){return this.variables["$include?"](name.$to_sym())}),1),$def(self,"$declare_forward_args",(function(){return this.$declare($$("FORWARD_ARGS"))}),0),$def(self,"$declared_forward_args?",(function(){return this["$declared?"]($$("FORWARD_ARGS"))}),0),$def(self,"$declare_anonymous_blockarg",(function(){return this.$declare($$("ANONYMOUS_BLOCKARG"))}),0),$def(self,"$declared_anonymous_blockarg?",(function(){return this["$declared?"]($$("ANONYMOUS_BLOCKARG"))}),0),$def(self,"$empty?",(function(){return this.stack["$empty?"]()}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/lexer"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$const_set=Opal.const_set,$hash=Opal.hash,$def=Opal.def,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$hash2=Opal.hash2,$rb_plus=Opal.rb_plus,$to_ary=Opal.to_ary,$rb_le=Opal.rb_le,$eqeqeq=Opal.eqeqeq,$rb_gt=Opal.rb_gt,$neqeq=Opal.neqeq,$not=Opal.not,$rb_ge=Opal.rb_ge,$range=Opal.range,$rb_lt=Opal.rb_lt,$gvars=Opal.gvars;return Opal.add_stubs("attr_accessor,private,_lex_trans_keys=,-,_lex_key_spans=,_lex_index_offsets=,_lex_indicies=,_lex_trans_targs=,_lex_trans_actions=,_lex_to_state_actions=,_lex_from_state_actions=,_lex_eof_trans=,lex_start=,lex_error=,lex_en_interp_words=,lex_en_interp_string=,lex_en_plain_words=,lex_en_plain_string=,lex_en_interp_backslash_delimited=,lex_en_plain_backslash_delimited=,lex_en_interp_backslash_delimited_words=,lex_en_plain_backslash_delimited_words=,lex_en_regexp_modifiers=,lex_en_expr_variable=,lex_en_expr_fname=,lex_en_expr_endfn=,lex_en_expr_dot=,lex_en_expr_arg=,lex_en_expr_cmdarg=,lex_en_expr_endarg=,lex_en_expr_mid=,lex_en_expr_beg=,lex_en_expr_labelarg=,lex_en_expr_value=,lex_en_expr_end=,lex_en_leading_dot=,lex_en_line_comment=,lex_en_line_begin=,freeze,ord,union,chars,attr_reader,reset,lex_en_line_begin,class,new,source,==,encoding,unpack,[],lex_en_expr_dot,lex_en_expr_fname,lex_en_expr_value,lex_en_expr_beg,lex_en_expr_mid,lex_en_expr_arg,lex_en_expr_cmdarg,lex_en_expr_end,lex_en_expr_endarg,lex_en_expr_endfn,lex_en_expr_labelarg,lex_en_interp_string,lex_en_interp_words,lex_en_plain_string,fetch,invert,push,count,pop,any?,shift,send,+,size,<=,===,<<,>,!=,emit_comment,tok,literal,flush_string,extend_content,emit,heredoc?,saved_herebody_s=,start_interp_brace,[]=,diagnostic,range,str_s,gsub,version?,nest_and_try_closing,heredoc_e,pop_literal,infer_indent_level,!,eof_codepoint?,words?,extend_space,extend_string,active?,>=,slice,start_with?,chr,munge_escape?,match,regexp?,squiggly_heredoc?,supports_line_continuation_via_slash?,include?,scan,join,=~,to_i,stack_pop,emit_table,push_literal,in_argdef,arg_or_cmdarg,<,emit_do,declared?,nil?,last,getbyte,inspect,end_with?,empty?,index,call,Float,to_f,length,lambda,Rational,Complex,each,encode_escape,%,in_kwarg,end_interp_brace_and_try_closing,lexpop,saved_herebody_s,next_state_for_literal,rstrip,&,|,lex_error,protected,force_encoding,process,backslash_delimited?,interpolate?,lex_en_interp_backslash_delimited_words,lex_en_plain_backslash_delimited_words,lex_en_plain_words,lex_en_interp_backslash_delimited,lex_en_plain_backslash_delimited,dedent_level,type,lex_en_regexp_modifiers,upcase"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Lexer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$writer=nil,$proto=self.$$prototype;return $proto.source_buffer=$proto.source_pts=$proto.cs=$proto.cmdarg_stack=$proto.cmdarg=$proto.cond_stack=$proto.cond=$proto.dedent_level=$proto.token_queue=$proto.p=$proto.command_start=$proto.herebody_s=$proto.sharp_s=$proto.ts=$proto.te=$proto.top=$proto.stack=$proto.version=$proto.escape_s=$proto.escape=$proto.act=$proto.context=$proto.static_env=$proto.newline_s=$proto.lambda_stack=$proto.paren_nest=$proto.num_digits_s=$proto.num_suffix_s=$proto.num_base=$proto.num_xfrm=$proto.eq_begin_s=$proto.cs_before_block_comment=$proto.tokens=$proto.comments=$proto.diagnostics=$proto.literal_stack=nil,function(self,$parent_nesting){self.$attr_accessor("_lex_trans_keys"),self.$private("_lex_trans_keys","_lex_trans_keys=")}(Opal.get_singleton_class(self)),$send(self,"_lex_trans_keys=",$to_a($writer=[[0,0,101,101,103,103,105,105,110,110,69,69,78,78,68,68,95,95,95,95,0,26,0,127,0,127,0,127,0,127,0,45,0,120,0,120,0,92,0,120,0,120,0,45,0,120,0,120,67,99,45,45,0,92,0,120,0,102,0,127,0,127,0,127,0,127,0,45,0,120,0,120,0,92,0,120,0,120,0,45,0,120,0,120,67,99,45,45,0,92,0,120,0,102,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,58,58,58,58,46,46,0,127,58,58,60,60,62,62,10,10,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,115,115,99,99,117,117,101,101,108,116,101,101,115,115,115,115,105,105,108,108,105,105,108,108,58,58,0,127,10,10,0,127,9,92,10,10,9,92,58,58,98,98,101,101,103,103,105,105,110,110,0,127,61,61,9,92,9,92,9,92,9,92,9,92,10,10,0,127,0,127,61,126,93,93,0,127,0,127,10,10,34,34,10,10,39,39,0,127,10,96,96,96,0,45,0,120,0,120,0,92,0,120,0,120,0,45,0,120,0,120,67,99,45,45,0,92,0,120,0,102,0,127,0,127,0,127,0,127,0,127,0,127,58,58,58,58,0,127,43,57,48,57,48,57,48,57,48,57,115,115,99,99,117,117,101,101,99,99,117,117,101,101,0,127,58,58,9,92,9,92,9,92,9,92,9,92,9,92,60,60,10,10,9,92,9,92,10,10,10,10,10,10,10,10,46,46,0,95,9,32,0,0,10,10,10,10,98,98,9,32,10,10,95,95,0,92,9,32,36,123,0,127,48,57,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,48,102,48,102,0,0,48,102,48,102,0,0,0,45,0,92,0,92,0,0,0,0,0,92,48,102,48,102,0,0,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,92,36,123,0,127,48,57,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,48,102,48,102,0,0,48,102,48,102,0,0,0,45,0,92,0,92,0,0,0,0,0,92,48,102,48,102,0,0,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,92,9,32,0,26,0,92,0,26,0,35,36,123,0,127,48,57,0,127,0,26,0,35,9,32,36,123,0,127,48,57,0,127,0,32,9,32,65,122,65,122,36,64,0,127,48,57,0,127,0,127,0,127,0,127,9,32,0,0,61,126,10,10,10,10,0,127,0,127,48,57,115,115,38,38,42,42,64,64,58,58,60,61,62,62,61,126,61,61,61,62,0,127,0,127,0,127,0,127,0,127,0,127,0,127,93,93,10,10,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,124,124,0,127,0,127,9,32,10,10,10,10,46,46,10,10,0,0,0,127,0,127,61,61,0,0,9,32,0,0,61,126,10,10,10,10,38,38,42,42,64,64,60,61,62,62,61,126,61,61,61,62,0,127,93,93,10,10,124,124,0,126,0,127,0,61,9,61,9,61,0,0,9,61,9,62,46,46,46,46,58,58,9,32,0,0,0,127,0,0,9,124,0,0,10,10,10,10,0,0,9,61,58,58,60,60,62,62,9,32,10,10,0,127,102,102,101,101,110,110,104,104,0,127,0,127,0,127,0,0,0,127,10,10,0,123,9,32,10,10,10,10,10,10,0,0,111,111,0,0,0,127,0,127,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,58,61,0,0,61,126,61,61,0,0,0,0,0,0,9,32,61,61,9,32,61,126,10,10,10,10,0,127,38,61,0,0,42,61,61,61,9,92,9,92,9,92,46,46,46,46,10,10,0,26,0,127,0,127,61,61,0,0,61,126,61,62,0,0,0,0,0,0,0,0,61,126,0,127,48,57,38,38,42,42,64,64,60,61,62,62,61,61,61,62,0,127,48,57,0,127,124,124,64,64,60,61,0,0,10,34,10,39,96,96,62,62,61,126,61,62,0,122,0,0,0,127,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,48,102,48,102,0,0,48,102,48,102,0,0,0,45,0,92,0,92,0,0,0,0,0,92,48,102,48,102,0,0,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,127,0,127,0,127,0,0,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,61,126,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,0,61,124,0,92,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,61,61,0,0,9,32,0,0,61,126,10,10,10,10,0,127,0,127,48,57,61,61,38,61,0,0,0,0,42,61,61,62,46,57,46,46,10,10,48,101,48,95,46,120,48,114,43,57,48,105,102,102,0,0,101,105,0,0,0,0,48,114,48,114,48,114,48,114,105,114,102,102,0,0,101,105,115,115,0,0,0,0,48,114,48,114,48,114,48,114,48,114,48,114,48,114,48,114,46,114,48,114,46,114,48,114,58,58,60,61,62,62,61,126,61,61,61,62,0,127,0,127,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,0,10,10,0,0,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,9,92,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,0,61,124,0,0,9,92,9,92,9,92,46,46,46,46,10,10,46,46,10,10,10,61,10,10,10,101,10,110,10,100,10,10,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_key_spans"),self.$private("_lex_key_spans","_lex_key_spans=")}(Opal.get_singleton_class(self)),$send(self,"_lex_key_spans=",$to_a($writer=[[0,1,1,1,1,1,1,1,1,1,27,128,128,128,128,46,121,121,93,121,121,46,121,121,33,1,93,121,103,128,128,128,128,46,121,121,93,121,121,46,121,121,33,1,93,121,103,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,1,1,128,1,1,1,1,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,1,1,1,9,1,1,1,1,1,1,1,1,128,1,128,84,1,84,1,1,1,1,1,1,128,1,84,84,84,84,84,1,128,128,66,1,128,128,1,1,1,1,128,87,1,46,121,121,93,121,121,46,121,121,33,1,93,121,103,128,128,128,128,128,128,1,1,128,15,10,10,10,10,1,1,1,1,1,1,1,128,1,84,84,84,84,84,84,1,1,84,84,1,1,1,1,1,96,24,0,1,1,1,24,1,1,93,24,88,128,10,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,55,55,0,55,55,0,46,93,93,0,0,93,55,55,0,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,0,0,55,0,93,88,128,10,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,55,55,0,55,55,0,46,93,93,0,0,93,55,55,0,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,0,0,55,0,93,24,27,93,27,36,88,128,10,128,27,36,24,88,128,10,128,33,24,58,58,29,128,10,128,128,128,128,24,0,66,1,1,128,128,10,1,1,1,1,1,2,1,66,1,2,128,128,128,128,128,128,128,1,1,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,128,128,24,1,1,1,1,0,128,128,1,0,24,0,66,1,1,1,1,1,2,1,66,1,2,128,1,1,1,127,128,62,53,53,0,53,54,1,1,1,24,0,128,0,116,0,1,1,0,53,1,1,1,24,1,128,1,1,1,1,128,128,128,0,128,1,124,24,1,1,1,0,1,0,128,128,24,0,1,1,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,4,0,66,1,0,0,0,24,1,24,66,1,1,128,24,0,20,1,84,84,84,1,1,1,27,128,128,1,0,66,2,0,0,0,0,66,128,10,1,1,1,2,1,1,2,128,10,128,1,1,2,0,25,30,1,1,66,2,123,0,128,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,55,55,0,55,55,0,46,93,93,0,0,93,55,55,0,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,0,0,55,0,128,128,128,0,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,66,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,64,93,24,0,1,1,1,0,128,128,24,0,1,1,1,0,128,128,1,0,24,0,66,1,1,128,128,10,1,24,0,0,20,2,12,1,1,54,48,75,67,15,58,1,0,5,0,0,67,67,67,67,10,1,0,5,1,0,0,67,67,67,67,67,67,67,67,69,67,69,67,1,2,1,66,1,2,128,128,0,128,128,128,128,128,128,0,1,0,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,84,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,64,0,84,84,84,1,1,1,1,1,52,1,92,101,91,1]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_index_offsets"),self.$private("_lex_index_offsets","_lex_index_offsets=")}(Opal.get_singleton_class(self)),$send(self,"_lex_index_offsets=",$to_a($writer=[[0,0,2,4,6,8,10,12,14,16,18,46,175,304,433,562,609,731,853,947,1069,1191,1238,1360,1482,1516,1518,1612,1734,1838,1967,2096,2225,2354,2401,2523,2645,2739,2861,2983,3030,3152,3274,3308,3310,3404,3526,3630,3759,3888,4017,4146,4275,4404,4533,4662,4791,4920,5049,5178,5307,5436,5565,5567,5569,5571,5700,5702,5704,5706,5708,5837,5966,6095,6224,6353,6482,6611,6740,6869,6998,7127,7256,7385,7514,7643,7772,7901,8030,8032,8034,8036,8038,8048,8050,8052,8054,8056,8058,8060,8062,8064,8193,8195,8324,8409,8411,8496,8498,8500,8502,8504,8506,8508,8637,8639,8724,8809,8894,8979,9064,9066,9195,9324,9391,9393,9522,9651,9653,9655,9657,9659,9788,9876,9878,9925,10047,10169,10263,10385,10507,10554,10676,10798,10832,10834,10928,11050,11154,11283,11412,11541,11670,11799,11928,11930,11932,12061,12077,12088,12099,12110,12121,12123,12125,12127,12129,12131,12133,12135,12264,12266,12351,12436,12521,12606,12691,12776,12778,12780,12865,12950,12952,12954,12956,12958,12960,13057,13082,13083,13085,13087,13089,13114,13116,13118,13212,13237,13326,13455,13466,13595,13717,13718,13719,13728,13737,13738,13739,13833,13834,13835,13836,13930,13932,13933,13934,13935,14029,14085,14141,14142,14198,14254,14255,14302,14396,14490,14491,14492,14586,14642,14698,14699,14746,14748,14842,14919,14975,15031,15087,15088,15215,15342,15343,15470,15471,15598,15725,15852,15979,15980,16107,16234,16361,16488,16615,16742,16743,16744,16800,16801,16895,16984,17113,17124,17253,17375,17376,17377,17386,17395,17396,17397,17491,17492,17493,17494,17588,17590,17591,17592,17593,17687,17743,17799,17800,17856,17912,17913,17960,18054,18148,18149,18150,18244,18300,18356,18357,18404,18406,18500,18577,18633,18689,18745,18746,18873,19e3,19001,19128,19129,19256,19383,19510,19637,19638,19765,19892,20019,20146,20273,20400,20401,20402,20458,20459,20553,20578,20606,20700,20728,20765,20854,20983,20994,21123,21151,21188,21213,21302,21431,21442,21571,21605,21630,21689,21748,21778,21907,21918,22047,22176,22305,22434,22459,22460,22527,22529,22531,22660,22789,22800,22802,22804,22806,22808,22810,22813,22815,22882,22884,22887,23016,23145,23274,23403,23532,23661,23790,23792,23794,23923,24052,24181,24310,24439,24568,24697,24826,24955,25084,25213,25342,25471,25600,25729,25858,25987,26116,26245,26374,26503,26632,26761,26890,27019,27148,27277,27406,27535,27664,27793,27922,28051,28180,28309,28438,28567,28696,28825,28954,29083,29212,29341,29470,29599,29728,29857,29986,30115,30244,30373,30502,30631,30760,30889,31018,31147,31276,31405,31534,31663,31792,31921,32050,32179,32308,32437,32566,32695,32824,32953,33082,33211,33340,33469,33598,33727,33856,33985,34114,34243,34372,34501,34503,34632,34761,34786,34788,34790,34792,34794,34795,34924,35053,35055,35056,35081,35082,35149,35151,35153,35155,35157,35159,35162,35164,35231,35233,35236,35365,35367,35369,35371,35499,35628,35691,35745,35799,35800,35854,35909,35911,35913,35915,35940,35941,36070,36071,36188,36189,36191,36193,36194,36248,36250,36252,36254,36279,36281,36410,36412,36414,36416,36418,36547,36676,36805,36806,36935,36937,37062,37087,37089,37091,37093,37094,37096,37097,37226,37355,37380,37381,37383,37385,37387,37388,37517,37646,37775,37904,38033,38162,38291,38420,38549,38678,38807,38936,39065,39194,39323,39452,39581,39710,39715,39716,39783,39785,39786,39787,39788,39813,39815,39840,39907,39909,39911,40040,40065,40066,40087,40089,40174,40259,40344,40346,40348,40350,40378,40507,40636,40638,40639,40706,40709,40710,40711,40712,40713,40780,40909,40920,40922,40924,40926,40929,40931,40933,40936,41065,41076,41205,41207,41209,41212,41213,41239,41270,41272,41274,41341,41344,41468,41469,41598,41727,41849,41850,41851,41860,41869,41870,41871,41965,41966,41967,41968,42062,42064,42065,42066,42067,42161,42217,42273,42274,42330,42386,42387,42434,42528,42622,42623,42624,42718,42774,42830,42831,42878,42880,42974,43051,43107,43163,43219,43220,43347,43474,43475,43602,43603,43730,43857,43984,44111,44112,44239,44366,44493,44620,44747,44874,45001,45128,45255,45382,45509,45636,45763,45890,46017,46144,46271,46398,46525,46526,46527,46583,46584,46713,46842,46971,46972,46974,46975,47104,47233,47362,47491,47620,47749,47878,48007,48136,48265,48394,48523,48652,48781,48910,49039,49168,49297,49426,49555,49684,49813,49942,50071,50200,50329,50458,50587,50716,50845,50974,51103,51232,51361,51490,51619,51748,51877,52006,52135,52264,52393,52522,52651,52780,52909,53038,53167,53296,53425,53554,53683,53812,53941,54070,54199,54328,54457,54586,54715,54844,54911,55040,55169,55298,55427,55556,55685,55814,55943,56072,56201,56330,56459,56588,56717,56846,56975,57104,57233,57362,57491,57620,57749,57878,58007,58136,58137,58202,58296,58321,58322,58324,58326,58328,58329,58458,58587,58612,58613,58615,58617,58619,58620,58749,58878,58880,58881,58906,58907,58974,58976,58978,59107,59236,59247,59249,59274,59275,59276,59297,59300,59313,59315,59317,59372,59421,59497,59565,59581,59640,59642,59643,59649,59650,59651,59719,59787,59855,59923,59934,59936,59937,59943,59945,59946,59947,60015,60083,60151,60219,60287,60355,60423,60491,60561,60629,60699,60767,60769,60772,60774,60841,60843,60846,60975,61104,61105,61234,61363,61492,61621,61750,61879,61880,61882,61883,61884,62013,62142,62271,62400,62529,62658,62787,62916,63045,63174,63303,63432,63561,63690,63819,63948,64077,64206,64335,64464,64593,64722,64851,64980,65109,65238,65367,65496,65625,65754,65883,66012,66141,66270,66399,66528,66657,66742,66871,67e3,67129,67258,67387,67516,67645,67774,67903,68032,68161,68290,68419,68548,68677,68806,68935,69064,69193,69322,69451,69580,69709,69838,69967,70096,70225,70354,70483,70612,70741,70870,70999,71128,71257,71386,71515,71644,71773,71902,72031,72160,72289,72418,72547,72676,72805,72934,73063,73192,73321,73450,73579,73708,73837,73966,74095,74224,74353,74482,74611,74740,74869,74998,75127,75128,75193,75194,75279,75364,75449,75451,75453,75455,75457,75459,75512,75514,75607,75709,75801]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_indicies"),self.$private("_lex_indicies","_lex_indicies=")}(Opal.get_singleton_class(self)),$send(self,"_lex_indicies=",$to_a($writer=[[1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,0,0,10,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,12,14,12,14,14,12,12,14,14,14,15,14,14,16,16,16,16,16,16,16,16,16,16,14,14,14,14,14,14,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,14,12,12,13,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,14,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,14,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,17,17,17,17,17,17,17,17,17,12,12,12,12,12,12,18,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,17,17,17,17,17,17,17,17,17,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,13,19,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,20,19,22,22,22,19,22,22,22,22,22,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,24,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,25,22,19,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,26,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,25,22,19,27,27,27,19,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,19,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,29,27,19,30,30,30,19,30,30,30,30,30,31,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,19,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,19,30,30,30,19,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,19,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,19,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,33,20,19,34,34,34,19,34,34,34,34,34,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,19,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,36,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,37,34,34,34,34,34,34,38,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,39,34,19,34,34,34,19,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,19,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,39,34,40,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,41,19,41,19,19,42,42,42,19,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,19,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,44,42,19,22,22,22,19,22,22,22,22,22,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,26,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,25,22,19,45,45,45,19,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,19,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,46,46,46,46,46,46,46,46,46,46,45,45,45,45,45,45,45,46,46,46,46,46,46,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,46,46,46,46,46,46,45,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,49,49,47,49,47,49,49,47,47,49,49,49,50,49,49,51,51,51,51,51,51,51,51,51,51,49,49,49,49,49,49,49,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,49,47,47,48,49,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,49,47,48,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,49,49,49,49,49,49,49,49,49,49,47,47,47,47,47,47,47,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,47,47,47,47,49,47,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,47,47,47,47,47,49,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,52,52,52,52,52,52,52,52,52,52,47,47,47,47,47,47,53,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,48,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,47,48,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,52,52,52,52,52,52,52,52,52,52,47,47,47,47,47,47,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,48,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,47,48,54,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,56,55,54,57,57,57,54,57,57,57,57,57,58,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,59,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,60,57,54,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,61,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,60,57,54,62,62,62,54,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,54,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,54,65,65,65,54,65,65,65,65,65,66,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,54,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,67,65,54,65,65,65,54,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,54,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,67,65,54,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,68,55,54,69,69,69,54,69,69,69,69,69,70,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,54,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,71,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,72,69,69,69,69,69,69,73,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,74,69,54,69,69,69,54,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,54,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,74,69,75,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,76,54,76,54,54,77,77,77,54,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,54,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,79,77,54,57,57,57,54,57,57,57,57,57,58,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,61,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,60,57,54,80,80,80,54,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,54,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,80,80,80,80,80,80,80,81,81,81,81,81,81,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,80,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,84,84,82,84,82,84,84,82,82,84,84,84,85,84,84,86,86,86,86,86,86,86,86,86,86,84,84,84,84,84,84,84,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,84,82,82,83,84,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,84,82,83,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,84,84,84,84,84,84,84,84,84,84,82,82,82,82,82,82,82,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,82,82,82,82,84,82,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,82,82,82,82,82,84,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,87,87,87,87,87,87,87,87,87,87,82,82,82,82,82,82,88,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,83,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,82,83,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,87,87,87,87,87,87,87,87,87,87,82,82,82,82,82,82,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,83,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,82,83,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,91,91,89,91,89,91,91,89,89,91,91,91,92,91,91,93,93,93,93,93,93,93,93,93,93,91,91,91,91,91,91,91,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,91,89,89,90,91,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,91,89,90,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,91,91,91,91,91,91,91,91,91,91,89,89,89,89,89,89,89,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,89,89,89,89,91,89,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,89,89,89,89,89,91,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,94,94,94,94,94,94,94,94,94,94,89,89,89,89,89,89,95,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,90,89,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,89,90,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,94,94,94,94,94,94,94,94,94,94,89,89,89,89,89,89,89,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,90,89,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,89,90,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,97,97,98,97,98,97,97,98,98,97,97,97,99,97,97,100,100,100,100,100,100,100,100,100,100,97,97,97,97,97,97,97,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,98,97,98,98,96,97,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,98,98,98,97,98,96,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,97,97,97,97,97,97,97,97,97,97,98,98,98,98,98,98,98,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,98,98,98,98,97,98,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,98,98,98,98,98,97,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,101,101,101,101,101,101,101,101,101,101,98,98,98,98,98,98,102,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,98,98,98,98,101,98,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,98,98,98,98,98,101,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,103,103,103,103,103,103,103,103,103,103,98,98,98,98,98,98,98,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,98,98,98,98,103,98,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,98,98,98,98,98,103,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,105,105,105,105,105,105,105,105,105,105,104,104,104,104,104,104,104,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,104,104,104,104,105,104,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,104,104,104,104,104,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,106,106,106,106,106,106,106,106,106,106,107,107,107,107,107,107,107,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,107,107,107,107,107,107,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,107,107,107,107,107,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,110,108,108,108,108,108,108,108,108,108,108,108,108,108,108,109,109,109,109,109,109,109,109,109,109,111,108,108,108,108,110,108,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,108,108,108,108,109,108,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,108,108,108,108,108,109,111,108,108,112,113,108,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,116,114,114,114,114,114,114,114,114,114,114,114,114,114,114,115,115,115,115,115,115,115,115,115,115,117,114,114,114,114,116,114,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,114,114,114,114,115,114,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,114,114,114,114,114,115,117,114,119,118,120,118,121,118,118,118,118,118,118,118,118,118,118,123,118,123,123,123,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,123,118,118,118,118,124,125,118,126,118,127,128,129,130,131,124,118,118,118,118,118,118,118,118,118,118,132,118,133,129,134,135,118,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,136,137,129,138,122,118,122,122,122,122,122,122,122,122,139,122,122,122,122,122,122,122,122,140,122,122,141,122,142,122,122,122,143,144,118,138,118,122,118,118,118,118,118,118,118,118,118,145,118,145,145,145,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,145,118,118,118,118,146,147,118,148,118,149,150,151,152,153,146,118,118,118,118,118,118,118,118,118,118,154,118,155,151,156,157,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,158,159,151,120,115,118,115,115,115,115,115,115,115,115,160,115,115,115,115,115,115,115,115,161,115,115,162,115,163,115,115,115,164,165,118,120,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,166,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,167,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,168,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,169,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,170,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,166,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,115,115,171,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,172,115,115,115,115,115,115,115,173,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,174,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,175,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,166,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,176,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,166,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,177,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,178,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,170,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,180,179,181,179,182,179,151,179,183,179,179,179,179,179,179,179,184,179,185,179,186,179,151,179,187,179,151,179,188,179,182,179,190,189,191,191,191,191,191,191,191,191,191,193,191,193,193,193,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,193,191,191,191,191,191,191,191,194,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,191,195,191,191,192,191,192,192,192,196,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,191,191,191,191,191,192,197,191,191,191,191,191,191,191,191,191,191,199,191,199,199,199,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,199,191,191,191,191,191,191,191,200,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,191,201,191,191,198,191,198,198,198,202,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,191,191,191,191,191,198,204,203,204,204,204,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,204,203,203,203,203,203,203,203,205,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,206,203,207,203,208,203,208,208,208,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,208,203,203,203,203,203,203,203,209,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,210,203,211,212,214,213,215,213,216,213,217,213,218,213,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,219,219,219,219,219,219,219,219,219,219,220,220,220,220,220,220,220,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,220,220,220,220,220,220,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,220,220,220,220,220,219,221,211,222,223,222,222,222,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,222,211,211,224,211,211,211,211,211,211,211,211,211,211,211,211,225,225,225,225,225,225,225,225,225,225,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,226,211,227,228,227,227,227,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,227,211,211,229,211,211,211,211,211,211,211,211,211,211,211,211,230,230,230,230,230,230,230,230,230,230,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,231,211,233,234,233,233,233,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,233,232,232,235,232,232,232,232,232,232,232,232,232,232,232,232,236,236,236,236,236,236,236,236,236,236,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,237,232,239,240,239,239,239,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,239,238,238,241,238,238,238,238,238,238,238,238,238,238,238,238,242,242,242,242,242,242,242,242,242,242,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,243,238,239,244,239,239,239,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,239,238,238,241,238,238,238,238,238,238,238,238,238,238,238,238,242,242,242,242,242,242,242,242,242,242,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,243,238,223,211,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,247,247,245,247,245,247,247,245,245,247,247,247,248,247,247,249,249,249,249,249,249,249,249,249,249,247,247,247,247,247,247,247,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,245,247,245,245,246,247,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,245,245,245,247,245,246,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,247,247,247,247,247,247,247,247,247,247,245,245,245,245,245,245,245,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,245,245,245,245,247,245,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,245,245,245,245,245,247,250,247,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,247,245,250,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,252,245,245,245,245,253,245,245,245,245,245,254,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,221,245,245,245,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,245,245,245,245,251,255,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,245,245,245,254,245,251,257,257,257,257,257,257,257,257,257,257,258,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,256,256,256,256,256,256,256,256,256,256,257,257,257,257,257,257,257,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,257,257,257,257,256,257,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,257,257,257,257,257,256,260,259,263,262,258,257,263,264,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,252,245,245,245,245,253,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,245,245,245,245,251,255,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,245,245,245,245,245,251,266,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,263,265,263,266,267,268,268,268,267,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,267,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,269,268,267,270,270,270,267,270,270,270,270,270,271,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,267,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,272,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,273,270,267,270,270,270,267,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,267,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,274,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,273,270,267,275,275,275,267,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,267,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,276,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,277,275,267,278,278,278,267,278,278,278,278,278,279,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,267,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,280,278,267,278,278,278,267,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,267,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,280,278,267,268,268,268,267,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,267,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,281,268,267,282,282,282,267,282,282,282,282,282,283,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,267,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,284,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,285,282,282,282,282,282,282,286,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,287,282,267,282,282,282,267,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,267,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,287,282,288,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,289,267,289,267,267,290,290,290,267,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,267,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,291,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,292,290,267,270,270,270,267,270,270,270,270,270,271,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,267,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,274,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,273,270,267,293,293,293,267,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,267,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,294,294,294,294,294,294,294,294,294,294,293,293,293,293,293,293,293,294,294,294,294,294,294,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,294,294,294,294,294,294,293,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,296,211,211,211,211,211,211,211,211,211,211,211,211,211,211,295,295,295,295,295,295,295,295,295,295,297,211,211,298,211,296,211,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,211,211,211,211,295,211,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,211,211,211,211,211,295,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,296,245,245,245,245,245,245,245,245,245,245,245,245,245,245,295,295,295,295,295,295,295,295,295,295,297,245,245,298,245,296,245,295,295,295,295,295,295,299,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,295,245,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,245,295,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,296,245,245,245,245,245,245,245,245,245,245,245,245,245,245,295,295,295,295,295,295,295,295,295,295,297,245,245,298,245,296,245,295,295,295,295,295,295,295,295,300,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,295,245,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,245,295,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,296,245,245,245,245,245,245,245,245,245,245,245,245,245,245,295,295,295,295,295,295,295,295,295,295,297,245,245,298,245,296,245,295,295,295,295,295,295,295,295,295,295,295,295,295,301,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,295,245,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,245,295,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,296,245,245,245,245,245,245,245,245,245,245,245,245,245,245,295,295,295,295,295,295,295,295,295,295,297,245,245,298,245,296,245,295,295,295,301,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,295,245,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,245,295,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,304,302,302,302,302,302,302,302,302,302,302,302,302,302,302,303,303,303,303,303,303,303,303,303,303,305,302,302,302,302,304,302,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,302,302,302,302,303,302,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,302,302,302,302,302,303,305,302,302,306,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,308,308,308,308,308,308,308,308,308,308,307,307,307,307,307,307,307,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,307,307,307,307,308,307,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,307,307,307,307,307,308,310,309,310,309,309,311,311,311,311,311,311,311,311,311,311,309,311,311,311,311,311,311,311,311,311,311,309,312,312,312,312,312,312,312,312,312,312,309,314,314,314,314,314,314,314,314,314,314,313,315,315,315,315,315,315,315,315,315,315,313,317,316,318,316,319,316,320,316,322,321,323,321,324,321,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,325,325,325,325,325,325,325,325,325,325,307,307,307,307,307,307,307,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,307,307,307,307,325,307,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,307,307,307,307,307,325,326,313,327,328,327,327,327,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,327,313,313,329,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,330,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,331,313,332,333,332,332,332,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,332,313,313,334,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,335,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,336,313,338,339,338,338,338,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,338,337,337,340,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,341,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,342,337,344,345,344,344,344,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,343,343,346,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,347,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,348,343,344,345,344,344,344,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,343,343,346,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,349,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,348,343,344,350,344,344,344,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,343,343,346,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,347,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,348,343,351,313,328,313,353,354,353,353,353,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,353,352,352,355,352,352,356,352,352,352,352,352,352,352,357,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,358,352,360,354,360,360,360,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,360,359,359,355,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,358,359,363,362,365,364,366,361,367,361,368,352,370,369,369,369,370,369,369,369,369,371,372,371,371,371,369,369,369,369,369,369,369,369,369,369,369,369,370,369,369,369,369,369,371,369,369,373,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,374,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,375,369,369,376,369,371,377,371,371,371,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,371,377,378,379,380,381,382,384,383,386,387,386,386,386,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,386,385,372,383,388,383,390,389,389,389,390,389,389,389,389,391,392,391,391,391,389,389,389,389,389,389,389,389,389,389,389,389,390,389,389,389,389,389,391,389,389,393,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,394,389,391,395,391,391,391,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,391,395,397,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,398,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,399,396,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,13,13,13,13,13,13,13,13,13,13,400,400,400,400,400,400,400,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,400,400,400,400,13,400,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,400,400,400,400,400,13,16,16,16,16,16,16,16,16,16,16,400,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,13,13,13,13,13,13,13,13,13,13,401,401,401,401,401,401,401,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,401,401,401,401,17,401,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,401,401,401,401,401,17,404,403,403,403,404,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,404,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,405,405,405,405,405,405,405,405,403,403,403,403,403,403,403,403,403,403,403,406,403,403,403,403,403,403,403,403,403,407,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,408,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,409,403,403,410,403,411,412,414,414,414,414,414,414,414,414,413,415,415,415,415,415,415,415,415,413,413,416,416,42,42,42,416,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,416,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,417,42,418,419,420,420,42,42,42,420,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,420,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,421,42,41,420,422,423,424,424,27,27,27,424,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,424,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,425,27,426,426,426,426,426,426,426,426,426,426,424,424,424,424,424,424,424,426,426,426,426,426,426,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,426,426,426,426,426,426,424,428,428,428,428,428,428,428,428,428,428,427,427,427,427,427,427,427,428,428,428,428,428,428,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,428,428,428,428,428,428,427,427,429,429,429,429,429,429,429,429,429,429,420,420,420,420,420,420,420,429,429,429,429,429,429,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,429,429,429,429,429,429,420,431,431,431,431,431,431,431,431,431,431,430,430,430,430,430,430,430,431,431,431,431,431,431,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,431,431,431,431,431,431,430,430,420,20,20,20,420,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,420,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,432,20,416,27,27,27,416,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,416,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,29,27,416,433,433,433,416,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,416,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,434,433,435,436,436,433,433,433,436,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,436,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,437,433,438,438,438,438,438,438,438,438,438,438,436,436,436,436,436,436,436,438,438,438,438,438,438,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,438,438,438,438,438,438,436,440,440,440,440,440,440,440,440,440,440,439,439,439,439,439,439,439,440,440,440,440,440,440,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,440,440,440,440,440,440,439,439,436,20,20,20,436,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,436,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,432,20,441,436,436,27,27,27,436,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,436,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,29,27,443,443,443,443,443,443,443,443,443,443,442,442,442,442,442,442,442,443,443,443,443,443,443,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,443,443,443,443,443,443,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,444,442,445,445,445,445,445,445,445,445,445,445,442,442,442,442,442,442,442,445,445,445,445,445,445,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,445,445,445,445,445,445,442,446,446,446,446,446,446,446,446,446,446,442,442,442,442,442,442,442,446,446,446,446,446,446,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,446,446,446,446,446,446,442,447,447,447,447,447,447,447,447,447,447,442,442,442,442,442,442,442,447,447,447,447,447,447,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,447,447,447,447,447,447,442,448,451,450,450,450,451,450,450,450,450,452,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,451,450,450,450,450,450,452,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,453,453,453,453,453,453,453,453,453,453,450,450,450,450,450,450,450,453,453,453,453,453,453,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,453,453,453,453,453,453,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,454,450,451,450,450,450,451,450,450,450,450,449,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,451,450,450,450,450,450,449,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,455,455,455,455,455,455,455,455,455,455,450,450,450,450,450,450,450,455,455,455,455,455,455,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,455,455,455,455,455,455,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,456,450,449,451,455,455,455,451,455,455,455,455,449,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,451,455,455,455,455,455,449,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,449,455,457,451,458,458,458,451,458,458,458,458,452,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,452,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,453,453,453,453,453,453,453,453,453,453,458,458,458,458,458,458,458,453,453,453,453,453,453,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,453,453,453,453,453,453,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,449,458,451,458,458,458,451,458,458,458,458,449,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,449,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,455,455,455,455,455,455,455,455,455,455,458,458,458,458,458,458,458,455,455,455,455,455,455,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,455,455,455,455,455,455,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,460,460,460,460,460,460,460,460,460,460,458,458,458,458,458,458,458,460,460,460,460,460,460,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,460,460,460,460,460,460,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,453,453,453,453,453,453,453,453,453,453,458,458,458,458,458,458,458,453,453,453,453,453,453,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,453,453,453,453,453,453,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,462,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,463,463,463,463,463,463,463,463,463,463,458,458,458,458,458,458,458,463,463,463,463,463,463,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,463,463,463,463,463,463,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,464,464,464,464,464,464,464,464,464,464,458,458,458,458,458,458,458,464,464,464,464,464,464,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,464,464,464,464,464,464,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,465,465,465,465,465,465,465,465,465,465,458,458,458,458,458,458,458,465,465,465,465,465,465,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,465,465,465,465,465,465,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,466,466,466,466,466,466,466,466,466,466,458,458,458,458,458,458,458,466,466,466,466,466,466,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,466,466,466,466,466,466,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,467,467,467,467,467,467,467,467,467,467,458,458,458,458,458,458,458,467,467,467,467,467,467,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,467,467,467,467,467,467,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,449,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,449,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,467,467,467,467,467,467,467,467,467,467,458,458,458,458,458,458,458,467,467,467,467,467,467,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,467,467,467,467,467,467,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,449,458,468,469,471,471,471,471,471,471,471,471,471,471,470,470,470,470,470,470,470,471,471,471,471,471,471,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,471,471,471,471,471,471,470,470,473,472,472,472,473,472,472,472,472,472,474,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,473,472,472,472,472,472,472,472,472,475,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,476,472,478,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,479,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,480,477,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,48,48,48,48,48,48,48,48,48,48,481,481,481,481,481,481,481,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,481,481,481,481,48,481,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,481,481,481,481,481,48,51,51,51,51,51,51,51,51,51,51,481,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,48,48,48,48,48,48,48,48,48,48,482,482,482,482,482,482,482,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,482,482,482,482,52,482,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,482,482,482,482,482,52,485,484,484,484,485,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,485,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,486,486,486,486,486,486,486,486,484,484,484,484,484,484,484,484,484,484,484,487,484,484,484,484,484,484,484,484,484,488,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,489,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,490,484,484,491,484,492,493,495,495,495,495,495,495,495,495,494,496,496,496,496,496,496,496,496,494,494,497,497,77,77,77,497,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,497,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,498,77,499,500,501,501,77,77,77,501,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,501,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,502,77,76,501,503,504,505,505,62,62,62,505,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,505,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,506,62,507,507,507,507,507,507,507,507,507,507,505,505,505,505,505,505,505,507,507,507,507,507,507,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,507,507,507,507,507,507,505,509,509,509,509,509,509,509,509,509,509,508,508,508,508,508,508,508,509,509,509,509,509,509,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,509,509,509,509,509,509,508,508,510,510,510,510,510,510,510,510,510,510,501,501,501,501,501,501,501,510,510,510,510,510,510,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,510,510,510,510,510,510,501,512,512,512,512,512,512,512,512,512,512,511,511,511,511,511,511,511,512,512,512,512,512,512,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,512,512,512,512,512,512,511,511,501,55,55,55,501,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,501,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,513,55,497,62,62,62,497,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,497,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,497,514,514,514,497,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,497,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,515,514,516,517,517,514,514,514,517,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,517,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,518,514,519,519,519,519,519,519,519,519,519,519,517,517,517,517,517,517,517,519,519,519,519,519,519,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,519,519,519,519,519,519,517,521,521,521,521,521,521,521,521,521,521,520,520,520,520,520,520,520,521,521,521,521,521,521,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,521,521,521,521,521,521,520,520,517,55,55,55,517,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,517,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,513,55,522,517,517,62,62,62,517,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,517,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,524,524,524,524,524,524,524,524,524,524,523,523,523,523,523,523,523,524,524,524,524,524,524,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,524,524,524,524,524,524,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,525,523,526,526,526,526,526,526,526,526,526,526,523,523,523,523,523,523,523,526,526,526,526,526,526,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,526,526,526,526,526,526,523,527,527,527,527,527,527,527,527,527,527,523,523,523,523,523,523,523,527,527,527,527,527,527,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,527,527,527,527,527,527,523,528,528,528,528,528,528,528,528,528,528,523,523,523,523,523,523,523,528,528,528,528,528,528,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,528,528,528,528,528,528,523,529,532,531,531,531,532,531,531,531,531,533,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,532,531,531,531,531,531,533,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,534,534,534,534,534,534,534,534,534,534,531,531,531,531,531,531,531,534,534,534,534,534,534,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,534,534,534,534,534,534,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,535,531,532,531,531,531,532,531,531,531,531,530,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,532,531,531,531,531,531,530,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,536,536,536,536,536,536,536,536,536,536,531,531,531,531,531,531,531,536,536,536,536,536,536,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,536,536,536,536,536,536,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,537,531,530,532,536,536,536,532,536,536,536,536,530,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,532,536,536,536,536,536,530,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,530,536,538,532,539,539,539,532,539,539,539,539,533,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,533,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,534,534,534,534,534,534,534,534,534,534,539,539,539,539,539,539,539,534,534,534,534,534,534,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,534,534,534,534,534,534,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,530,539,532,539,539,539,532,539,539,539,539,530,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,530,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,536,536,536,536,536,536,536,536,536,536,539,539,539,539,539,539,539,536,536,536,536,536,536,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,536,536,536,536,536,536,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,541,541,541,541,541,541,541,541,541,541,539,539,539,539,539,539,539,541,541,541,541,541,541,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,541,541,541,541,541,541,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,534,534,534,534,534,534,534,534,534,534,539,539,539,539,539,539,539,534,534,534,534,534,534,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,534,534,534,534,534,534,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,543,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,544,544,544,544,544,544,544,544,544,544,539,539,539,539,539,539,539,544,544,544,544,544,544,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,544,544,544,544,544,544,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,545,545,545,545,545,545,545,545,545,545,539,539,539,539,539,539,539,545,545,545,545,545,545,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,545,545,545,545,545,545,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,546,546,546,546,546,546,546,546,546,546,539,539,539,539,539,539,539,546,546,546,546,546,546,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,546,546,546,546,546,546,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,547,547,547,547,547,547,547,547,547,547,539,539,539,539,539,539,539,547,547,547,547,547,547,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,547,547,547,547,547,547,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,548,548,548,548,548,548,548,548,548,548,539,539,539,539,539,539,539,548,548,548,548,548,548,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,548,548,548,548,548,548,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,530,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,530,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,548,548,548,548,548,548,548,548,548,548,539,539,539,539,539,539,539,548,548,548,548,548,548,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,548,548,548,548,548,548,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,530,539,549,550,552,552,552,552,552,552,552,552,552,552,551,551,551,551,551,551,551,552,552,552,552,552,552,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,552,552,552,552,552,552,551,551,554,553,553,553,554,553,553,553,553,555,556,555,555,555,553,553,553,553,553,553,553,553,553,553,553,553,554,553,553,553,553,553,555,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,557,553,555,558,555,555,555,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,555,558,559,560,560,560,559,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,559,560,562,561,561,561,562,561,561,561,561,561,563,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,562,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,564,561,565,566,566,566,565,566,566,566,566,566,567,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,565,566,569,568,568,568,569,568,568,568,568,568,570,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,569,568,568,568,568,568,568,568,568,571,568,573,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,574,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,575,572,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,83,83,83,83,83,83,83,83,83,83,576,576,576,576,576,576,576,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,576,576,576,576,83,576,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,576,576,576,576,576,83,86,86,86,86,86,86,86,86,86,86,576,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,83,83,83,83,83,83,83,83,83,83,577,577,577,577,577,577,577,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,577,577,577,577,87,577,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,577,577,577,577,577,87,579,578,578,578,579,578,578,578,578,578,580,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,579,578,582,581,581,581,582,581,581,581,581,583,584,583,583,583,581,581,581,581,581,581,581,581,581,581,581,581,582,581,581,581,581,581,583,581,581,585,581,583,586,583,583,583,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,583,586,588,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,589,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,590,587,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,90,90,90,90,90,90,90,90,90,90,591,591,591,591,591,591,591,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,591,591,591,591,90,591,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,591,591,591,591,591,90,93,93,93,93,93,93,93,93,93,93,591,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,90,90,90,90,90,90,90,90,90,90,592,592,592,592,592,592,592,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,592,592,592,592,94,592,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,592,592,592,592,592,94,594,593,593,593,594,593,593,593,593,595,596,595,595,595,593,593,593,593,593,593,593,593,593,593,593,593,594,593,593,593,593,593,595,593,595,597,595,595,595,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,595,597,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,598,598,598,598,598,598,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,598,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,600,600,600,600,600,600,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,600,601,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,602,98,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,96,96,96,96,96,96,96,96,96,96,603,603,603,603,603,603,603,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,603,603,603,603,96,603,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,603,603,603,603,603,96,100,100,100,100,100,100,100,100,100,100,603,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,101,101,101,101,101,101,101,101,101,101,604,604,604,604,604,604,604,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,604,604,604,604,101,604,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,604,604,604,604,604,101,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,103,103,103,103,103,103,103,103,103,103,605,605,605,605,605,605,605,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,605,605,605,605,103,605,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,605,605,605,605,605,103,607,608,608,608,607,608,608,608,608,609,610,609,609,609,608,608,608,608,608,608,608,608,608,608,608,608,607,608,608,608,608,608,609,611,608,612,613,614,615,608,608,608,616,617,608,617,608,618,608,608,608,608,608,608,608,608,608,608,619,608,620,621,622,608,608,623,624,623,623,625,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,626,627,608,618,628,618,629,630,631,632,633,634,606,606,635,606,606,606,636,637,638,606,606,639,640,641,642,606,643,606,644,606,608,645,608,617,608,606,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,647,646,646,646,646,646,646,646,646,646,646,646,646,646,646,606,606,606,606,606,606,606,606,606,606,646,646,646,647,646,647,646,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,646,646,646,646,606,646,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,646,646,646,646,646,606,609,648,609,609,609,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,609,648,649,618,650,650,618,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,618,650,651,652,653,654,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,105,105,655,105,655,105,105,655,655,105,105,105,657,105,105,658,658,658,658,658,658,658,658,658,658,105,105,105,105,105,105,105,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,655,105,655,655,656,105,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,655,655,655,105,655,656,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,656,656,656,656,656,656,656,656,656,656,659,659,659,659,659,659,659,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,659,659,659,659,656,659,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,659,659,659,659,659,656,658,658,658,658,658,658,658,658,658,658,659,660,650,618,650,618,650,618,650,662,661,618,663,650,618,650,664,618,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,618,655,618,650,618,618,650,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,647,646,646,646,646,646,646,646,646,646,646,646,646,646,646,623,623,623,623,623,623,623,623,623,623,646,646,646,647,646,647,646,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,646,646,646,646,623,646,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,646,646,646,646,646,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,623,666,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,623,623,623,667,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,623,623,623,623,623,668,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,623,623,623,623,623,623,623,623,623,623,669,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,623,623,623,623,623,623,623,623,623,623,670,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,669,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,664,655,610,655,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,672,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,673,674,606,606,606,606,606,675,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,676,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,677,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,678,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,679,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,680,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,681,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,682,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,683,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,684,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,685,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,686,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,682,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,687,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,686,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,688,606,689,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,690,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,691,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,692,606,606,606,606,606,606,606,606,606,606,606,606,693,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,694,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,695,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,696,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,697,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,698,606,606,606,606,606,606,606,606,606,606,699,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,700,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,701,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,691,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,702,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,703,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,647,704,704,704,704,704,704,704,704,704,704,704,704,704,704,606,606,606,606,606,606,606,606,606,606,704,704,704,647,704,647,704,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,704,704,704,704,606,704,606,606,606,606,606,606,606,606,705,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,704,704,704,704,704,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,706,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,707,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,708,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,709,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,710,606,711,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,712,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,684,606,606,606,713,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,714,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,715,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,700,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,716,606,606,606,606,606,606,606,606,606,606,606,606,606,638,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,698,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,684,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,717,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,718,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,719,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,700,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,720,606,606,606,721,606,606,606,606,606,722,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,722,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,723,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,724,606,606,606,606,606,606,606,606,606,606,606,606,606,606,725,726,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,727,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,700,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,728,606,606,729,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,695,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,730,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,731,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,713,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,732,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,638,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,733,606,606,606,606,606,606,606,606,606,727,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,695,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,734,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,735,606,606,606,606,606,606,606,736,606,606,606,606,606,606,606,737,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,713,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,701,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,721,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,738,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,695,606,606,606,719,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,739,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,740,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,689,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,618,650,742,743,743,743,742,743,743,743,743,744,743,744,744,744,743,743,743,743,743,743,743,743,743,743,743,743,742,743,743,743,743,743,744,743,743,745,743,743,743,743,743,743,743,743,743,743,746,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,743,747,743,743,741,743,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,743,743,743,743,743,741,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,110,748,748,748,748,748,748,748,748,748,748,748,748,748,748,109,109,109,109,109,109,109,109,109,109,111,748,748,748,748,110,748,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,748,748,748,748,109,748,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,748,748,748,748,748,109,744,749,744,744,744,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,744,749,750,751,752,753,754,748,755,748,756,758,759,759,759,758,759,759,759,759,760,761,760,760,760,759,759,759,759,759,759,759,759,759,759,759,759,758,759,759,759,759,759,760,762,759,763,759,764,765,759,759,759,766,767,759,767,759,764,759,759,759,759,759,759,759,759,759,759,759,759,768,769,770,759,759,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,772,773,759,764,757,764,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,759,774,759,767,759,757,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,776,775,775,775,775,775,775,775,775,775,775,775,775,775,775,757,757,757,757,757,757,757,757,757,757,775,775,775,775,775,776,775,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,775,775,775,775,757,775,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,775,775,775,775,775,757,778,777,779,760,780,760,760,760,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,760,780,781,764,782,782,764,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,764,782,783,784,785,786,764,782,764,782,764,782,764,787,782,764,782,789,764,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,764,788,764,782,764,764,782,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,776,790,790,790,790,790,790,790,790,790,790,790,790,790,790,771,771,771,771,771,771,771,771,771,771,790,790,790,790,790,776,790,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,790,790,790,790,771,790,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,790,790,790,790,790,771,789,788,761,788,764,782,792,791,791,791,792,791,791,791,791,793,794,793,793,793,791,791,791,791,791,791,791,791,791,791,791,791,792,791,791,791,791,791,793,791,791,795,791,120,796,791,797,791,798,120,151,799,153,120,791,791,791,791,791,791,791,791,791,791,800,791,801,151,802,803,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,151,804,151,120,791,791,791,791,791,791,791,791,791,791,805,791,791,791,791,791,791,791,791,806,791,791,807,791,808,791,791,791,164,165,791,120,791,809,809,809,809,809,809,809,809,809,793,809,793,793,793,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,793,809,809,809,809,146,147,809,148,809,149,150,151,152,153,146,809,809,809,809,809,809,809,809,809,809,154,809,155,151,156,157,809,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,158,159,151,120,115,809,115,115,115,115,115,115,115,115,160,115,115,115,115,115,115,115,115,161,115,115,162,115,163,115,115,115,164,165,809,120,809,115,810,811,811,811,810,811,811,811,811,151,812,151,151,151,811,811,811,811,811,811,811,811,811,811,811,811,810,811,811,811,811,811,151,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,151,811,151,812,151,151,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,114,114,114,114,114,120,114,114,114,114,114,114,114,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,114,151,812,151,151,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,114,813,151,812,151,151,151,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,151,814,814,814,814,814,814,814,814,814,815,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,151,814,151,812,151,151,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,151,114,816,810,151,810,818,817,820,821,820,820,820,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,820,819,822,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,116,810,810,810,810,810,810,810,810,810,810,810,810,810,810,115,115,115,115,115,115,115,115,115,115,117,810,810,810,810,116,810,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,810,810,810,810,115,810,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,810,810,810,810,810,115,823,151,812,151,151,151,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,151,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,151,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,120,810,824,825,826,827,828,829,151,812,151,151,151,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,151,810,810,810,810,810,810,810,810,810,120,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,151,810,151,817,120,830,120,830,831,832,831,831,831,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,831,819,833,830,834,834,834,834,834,834,834,834,834,123,834,123,123,123,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,123,834,834,834,834,124,125,834,126,834,127,128,129,130,131,124,834,834,834,834,834,834,834,834,834,834,132,834,133,129,134,135,834,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,136,137,129,138,122,834,122,122,122,122,122,122,122,122,139,122,122,122,122,122,122,122,122,140,122,122,141,122,142,122,122,122,143,144,834,138,834,122,151,830,835,830,836,830,837,830,838,190,190,190,838,190,190,190,190,839,190,839,839,839,190,190,190,190,190,190,190,190,190,190,190,190,838,190,190,190,190,190,839,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,190,840,190,190,192,190,192,192,192,196,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,190,190,190,190,190,192,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,841,189,189,189,189,189,189,189,189,189,189,189,189,189,189,192,192,192,192,192,192,192,192,192,192,190,189,189,189,189,841,189,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,189,189,189,189,192,189,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,189,189,189,189,189,192,842,842,842,842,842,842,842,842,842,193,842,193,193,193,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,193,842,842,842,842,842,842,842,194,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,842,195,842,842,192,842,192,192,192,196,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,842,842,842,842,842,192,843,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,841,842,842,842,842,842,842,842,842,842,842,842,842,842,842,192,192,192,192,192,192,192,192,192,192,190,842,842,842,842,841,842,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,842,842,842,842,192,842,192,192,192,192,192,192,192,192,192,192,192,192,192,192,844,192,192,192,192,192,192,192,192,192,192,192,842,842,842,842,842,192,197,842,846,845,845,845,846,845,845,845,845,847,845,847,847,847,845,845,845,845,845,845,845,845,845,845,845,845,846,845,845,845,845,845,847,845,845,848,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,849,845,845,845,845,845,845,845,850,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,851,845,847,852,847,847,847,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,847,852,853,854,855,856,858,857,859,860,857,861,863,864,864,864,863,864,864,864,864,865,866,865,865,865,864,864,864,864,864,864,864,864,864,864,864,864,863,864,864,864,864,864,865,864,864,867,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,864,868,864,864,862,864,862,862,862,862,862,862,862,862,869,862,862,862,862,862,862,862,862,870,862,862,871,862,872,862,862,862,864,864,864,864,864,862,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,862,862,862,862,862,862,862,862,862,862,873,873,873,873,873,873,873,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,873,873,873,873,862,873,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,873,873,873,873,873,862,865,874,865,865,865,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,865,874,875,876,877,878,879,881,880,882,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,884,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,885,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,886,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,887,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,888,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,884,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,862,862,889,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,890,862,862,862,862,862,862,862,891,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,892,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,893,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,884,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,894,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,884,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,895,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,896,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,888,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,898,221,221,221,898,221,221,221,221,899,900,899,899,899,221,221,221,221,221,221,221,221,221,221,221,221,898,221,221,221,221,221,899,901,221,902,221,903,904,221,905,221,906,907,221,908,909,910,221,221,221,221,221,221,221,221,221,221,911,221,912,913,914,915,221,916,917,916,916,918,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,919,920,221,921,922,221,923,924,925,926,927,928,897,897,929,897,897,897,930,931,932,897,897,933,934,935,936,897,937,897,938,897,939,940,221,921,221,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,945,944,944,946,944,947,949,950,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,951,948,953,952,954,955,956,899,957,899,899,899,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,899,957,959,958,961,962,961,961,961,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,961,960,221,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,221,963,964,965,966,967,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,968,968,968,968,968,968,968,968,968,968,969,969,969,969,969,969,969,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,969,969,969,969,969,969,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,969,969,969,969,969,968,972,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,221,971,973,975,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,221,974,221,211,222,223,222,222,222,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,222,971,971,224,971,971,971,971,971,971,971,971,971,971,971,971,225,225,225,225,225,225,225,225,225,225,971,971,971,221,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,226,971,239,240,239,239,239,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,239,238,238,241,238,238,238,238,238,238,238,238,238,238,238,238,242,242,242,242,242,242,242,242,242,242,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,243,238,222,223,222,222,222,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,222,971,971,224,971,971,971,971,971,971,971,971,971,971,971,971,225,225,225,225,225,225,225,225,225,225,971,971,971,221,221,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,226,971,977,963,979,978,981,980,963,982,982,982,963,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,963,982,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,984,985,963,986,247,987,985,963,963,988,989,963,989,963,247,963,963,963,963,963,963,963,963,963,963,990,963,991,992,993,963,994,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,995,963,963,247,983,247,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,963,996,963,997,963,983,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,999,998,998,998,998,998,998,998,998,998,998,998,998,998,998,983,983,983,983,983,983,983,983,983,983,998,998,998,1e3,998,999,998,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,998,998,998,998,983,998,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,998,998,998,998,998,983,1002,1001,1003,1005,1006,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1007,1004,1009,1010,1008,1011,1012,1013,1014,247,998,998,1015,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,247,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,246,246,246,246,246,246,246,246,246,246,998,998,998,998,998,998,998,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,998,998,998,998,246,998,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,998,998,998,998,998,246,249,249,249,249,249,249,249,249,249,249,998,1016,998,247,998,247,998,247,1017,998,247,998,247,998,247,247,998,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1018,1018,1018,1018,1018,1018,1021,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1018,1018,1018,1018,1019,1018,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1018,1018,1018,1018,1018,1019,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1022,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1024,1024,1024,1024,1024,1024,1024,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1024,1024,1024,1024,1025,1024,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1024,1024,1024,1024,1024,1025,1016,998,1015,998,1027,1028,963,1029,262,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,263,252,264,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,263,253,263,266,221,963,921,221,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,221,963,221,972,963,1033,1032,1032,1032,1033,1032,1032,1032,1032,1034,1035,1034,1034,1034,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1033,1032,1032,1032,1032,1032,1034,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1032,1037,1032,1032,1036,1032,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1032,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1038,1038,1038,1038,1039,1038,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1038,1038,1038,1038,1038,1039,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1040,1040,1040,1040,1040,1040,1040,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1040,1040,1040,1040,1041,1040,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1040,1040,1040,1040,1040,1041,1044,1043,1043,1043,1044,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1044,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1045,1045,1045,1045,1045,1045,1045,1045,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1046,1043,1043,1043,1043,1043,1043,1043,1043,1043,1047,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1048,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1049,1043,1043,1050,1043,1051,1052,1054,1054,1054,1054,1054,1054,1054,1054,1053,1055,1055,1055,1055,1055,1055,1055,1055,1053,1053,1056,1056,290,290,290,1056,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,1056,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,291,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,1057,290,1058,1059,1060,1060,290,290,290,1060,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,1060,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,291,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,1061,290,289,1060,1062,1063,1064,1064,275,275,275,1064,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,1064,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,276,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,1065,275,1066,1066,1066,1066,1066,1066,1066,1066,1066,1066,1064,1064,1064,1064,1064,1064,1064,1066,1066,1066,1066,1066,1066,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1066,1066,1066,1066,1066,1066,1064,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1067,1067,1067,1067,1067,1067,1067,1068,1068,1068,1068,1068,1068,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1068,1068,1068,1068,1068,1068,1067,1067,1069,1069,1069,1069,1069,1069,1069,1069,1069,1069,1060,1060,1060,1060,1060,1060,1060,1069,1069,1069,1069,1069,1069,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1069,1069,1069,1069,1069,1069,1060,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1070,1070,1070,1070,1070,1070,1070,1071,1071,1071,1071,1071,1071,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1071,1071,1071,1071,1071,1071,1070,1070,1060,268,268,268,1060,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1060,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1072,268,1056,275,275,275,1056,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,1056,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,276,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,277,275,1056,1073,1073,1073,1056,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1056,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1074,1073,1075,1076,1076,1073,1073,1073,1076,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1076,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1077,1073,1078,1078,1078,1078,1078,1078,1078,1078,1078,1078,1076,1076,1076,1076,1076,1076,1076,1078,1078,1078,1078,1078,1078,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1078,1078,1078,1078,1078,1078,1076,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1079,1079,1079,1079,1079,1079,1079,1080,1080,1080,1080,1080,1080,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1080,1080,1080,1080,1080,1080,1079,1079,1076,268,268,268,1076,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1076,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1072,268,1081,1076,1076,275,275,275,1076,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,1076,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,276,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,277,275,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1082,1082,1082,1082,1082,1082,1082,1083,1083,1083,1083,1083,1083,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1083,1083,1083,1083,1083,1083,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1084,1082,1085,1085,1085,1085,1085,1085,1085,1085,1085,1085,1082,1082,1082,1082,1082,1082,1082,1085,1085,1085,1085,1085,1085,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1085,1085,1085,1085,1085,1085,1082,1086,1086,1086,1086,1086,1086,1086,1086,1086,1086,1082,1082,1082,1082,1082,1082,1082,1086,1086,1086,1086,1086,1086,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1086,1086,1086,1086,1086,1086,1082,1087,1087,1087,1087,1087,1087,1087,1087,1087,1087,1082,1082,1082,1082,1082,1082,1082,1087,1087,1087,1087,1087,1087,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1087,1087,1087,1087,1087,1087,1082,1088,1091,1090,1090,1090,1091,1090,1090,1090,1090,1092,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1091,1090,1090,1090,1090,1090,1092,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1093,1093,1093,1093,1093,1093,1093,1093,1093,1093,1090,1090,1090,1090,1090,1090,1090,1093,1093,1093,1093,1093,1093,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1093,1093,1093,1093,1093,1093,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1094,1090,1091,1090,1090,1090,1091,1090,1090,1090,1090,1089,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1091,1090,1090,1090,1090,1090,1089,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1090,1090,1090,1090,1090,1090,1090,1095,1095,1095,1095,1095,1095,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1095,1095,1095,1095,1095,1095,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1096,1090,1089,1091,1095,1095,1095,1091,1095,1095,1095,1095,1089,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1091,1095,1095,1095,1095,1095,1089,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1089,1095,1097,1091,1098,1098,1098,1091,1098,1098,1098,1098,1092,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1092,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1089,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1089,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1098,1098,1098,1098,1098,1098,1098,1095,1095,1095,1095,1095,1095,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1095,1095,1095,1095,1095,1095,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1098,1098,1098,1098,1098,1098,1098,1101,1101,1101,1101,1101,1101,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1101,1101,1101,1101,1101,1101,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1103,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1098,1098,1098,1098,1098,1098,1098,1104,1104,1104,1104,1104,1104,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1104,1104,1104,1104,1104,1104,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1105,1105,1105,1105,1105,1105,1105,1105,1105,1105,1098,1098,1098,1098,1098,1098,1098,1105,1105,1105,1105,1105,1105,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1105,1105,1105,1105,1105,1105,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1106,1106,1106,1106,1106,1106,1106,1106,1106,1106,1098,1098,1098,1098,1098,1098,1098,1106,1106,1106,1106,1106,1106,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1106,1106,1106,1106,1106,1106,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1098,1098,1098,1098,1098,1098,1098,1107,1107,1107,1107,1107,1107,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1107,1107,1107,1107,1107,1107,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1089,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1089,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1110,1110,1110,1110,1110,1110,1110,1110,1110,1110,1098,1098,1098,1098,1098,1098,1098,1110,1110,1110,1110,1110,1110,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1110,1110,1110,1110,1110,1110,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1111,1111,1111,1111,1111,1111,1111,1111,1111,1111,1098,1098,1098,1098,1098,1098,1098,1111,1111,1111,1111,1111,1111,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1111,1111,1111,1111,1111,1111,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1112,1112,1112,1112,1112,1112,1112,1112,1112,1112,1098,1098,1098,1098,1098,1098,1098,1112,1112,1112,1112,1112,1112,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1112,1112,1112,1112,1112,1112,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1098,1098,1098,1098,1098,1098,1098,1113,1113,1113,1113,1113,1113,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1113,1113,1113,1113,1113,1113,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1114,1114,1114,1114,1114,1114,1114,1114,1114,1114,1098,1098,1098,1098,1098,1098,1098,1114,1114,1114,1114,1114,1114,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1114,1114,1114,1114,1114,1114,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1115,1115,1115,1115,1115,1115,1115,1115,1115,1115,1098,1098,1098,1098,1098,1098,1098,1115,1115,1115,1115,1115,1115,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1115,1115,1115,1115,1115,1115,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1098,1098,1098,1098,1098,1098,1098,1116,1116,1116,1116,1116,1116,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1116,1116,1116,1116,1116,1116,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1098,1098,1098,1098,1098,1098,1098,1117,1117,1117,1117,1117,1117,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1117,1117,1117,1117,1117,1117,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1098,1098,1098,1098,1098,1098,1098,1118,1118,1118,1118,1118,1118,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1118,1118,1118,1118,1118,1118,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1119,1119,1119,1119,1119,1119,1119,1119,1119,1119,1098,1098,1098,1098,1098,1098,1098,1119,1119,1119,1119,1119,1119,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1119,1119,1119,1119,1119,1119,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1120,1120,1120,1120,1120,1120,1120,1120,1120,1120,1098,1098,1098,1098,1098,1098,1098,1120,1120,1120,1120,1120,1120,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1120,1120,1120,1120,1120,1120,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1121,1122,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1123,1123,1123,1123,1123,1123,1123,1124,1124,1124,1124,1124,1124,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1124,1124,1124,1124,1124,1124,1123,1123,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,296,211,211,211,211,211,211,211,211,211,211,211,211,211,211,295,295,295,295,295,295,295,295,295,295,297,211,211,298,211,296,211,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,211,211,211,211,295,211,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,211,211,211,211,211,295,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,296,963,963,963,963,963,963,963,963,963,963,963,963,963,963,295,295,295,295,295,295,295,295,295,295,297,963,963,298,963,296,963,295,295,295,295,1125,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,963,963,963,963,295,963,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,963,963,963,963,963,295,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,296,963,963,963,963,963,963,963,963,963,963,963,963,963,963,295,295,295,295,295,295,295,295,295,295,297,963,963,298,963,296,963,295,295,295,295,295,295,295,295,295,295,295,295,295,1126,295,295,295,295,295,295,295,295,295,295,295,295,963,963,963,963,295,963,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,963,963,963,963,963,295,1127,1128,963,958,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,1129,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,1130,1131,897,897,897,897,897,1132,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,1133,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,1134,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1135,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,1136,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,1137,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,1138,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,1139,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,1140,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,1141,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,296,211,211,211,211,211,211,211,211,211,211,211,211,211,211,897,897,897,897,897,897,897,897,897,897,297,211,211,298,211,296,211,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,211,211,211,211,897,211,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,211,211,211,211,211,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,1142,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,1143,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,1139,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,1144,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,1143,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1145,897,1146,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,1147,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,1148,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1149,897,897,897,897,897,897,897,897,897,897,897,897,1150,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,1151,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,1152,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1153,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,1154,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,1155,897,897,897,897,897,897,897,897,897,897,1156,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1157,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,1158,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1148,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1159,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1160,897,1161,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1162,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1141,897,897,897,1159,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1163,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1164,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1157,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,1165,897,897,897,897,897,897,897,897,897,897,897,897,897,932,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1155,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,1166,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1167,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,1168,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1169,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1157,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1170,897,897,897,1171,897,897,897,897,897,1172,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1172,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1173,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,1174,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1175,1176,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,1177,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1178,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1179,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1182,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1183,1180,1180,1184,1180,1182,1180,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1180,1180,1180,1180,1181,1180,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1180,1180,1180,1180,1180,1181,949,1185,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,951,948,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1186,897,897,1187,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1152,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1188,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1189,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1159,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1190,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,932,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,1191,897,897,897,897,897,897,897,897,897,1192,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1152,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1157,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,1193,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,1194,897,897,897,897,897,897,897,1195,897,897,897,897,897,897,897,1196,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1159,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1197,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1198,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1166,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,1199,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1166,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,1200,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1152,897,897,897,1201,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1202,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1166,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,1203,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1204,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1146,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,1205,221,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,1206,963,1208,1207,1207,1207,1208,1207,1207,1207,1207,1209,1210,1209,1209,1209,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1208,1207,1207,1207,1207,1207,1209,1207,1207,1211,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1212,1207,1209,1213,1209,1209,1209,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1209,1213,1214,1215,1216,1217,1218,1220,1219,1221,1223,1224,1224,1224,1223,1224,1224,1224,1224,1225,1226,1225,1225,1225,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1223,1224,1224,1224,1224,1224,1225,1224,1227,1228,1224,1224,1224,1227,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1224,1229,1224,1224,1222,1224,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1224,1224,1224,1224,1224,1222,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,304,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,303,303,303,303,303,303,303,303,303,303,305,1230,1230,1230,1230,304,1230,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,1230,1230,1230,1230,303,1230,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,1230,1230,1230,1230,1230,303,1225,1231,1225,1225,1225,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1225,1231,1232,1233,1234,1235,1236,1237,1230,1238,1240,1241,1241,1241,1240,1241,1241,1241,1241,1242,1243,1242,1242,1242,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1240,1241,1241,1241,1241,1241,1242,1244,1245,1246,1247,1248,1249,1245,1250,1251,1252,1248,1253,1254,1255,1248,1256,1257,1257,1257,1257,1257,1257,1257,1257,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1265,1265,1267,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1268,1269,1270,1248,1271,1245,1272,1273,1274,1275,1276,1277,1239,1239,1278,1239,1239,1239,1279,1280,1281,1239,1239,1282,1283,1284,1285,1239,1286,1239,1287,1239,1288,1289,1290,1291,1241,1239,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,1292,313,313,313,313,313,313,313,313,313,313,313,313,313,313,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,313,313,313,313,313,1292,313,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,313,313,313,313,1239,313,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,313,313,313,313,313,1239,1294,1293,1295,1242,1296,1242,1242,1242,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1242,1296,1297,1299,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1299,1298,1300,1301,1302,1303,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,308,308,1304,308,1304,308,308,1304,1304,308,308,308,1305,308,308,1306,1306,1306,1306,1306,1306,1306,1306,1306,1306,308,308,308,308,308,308,308,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1304,308,1304,1304,325,308,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1304,1304,1304,308,1304,325,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,325,325,325,325,325,325,325,325,325,325,1307,1307,1307,1307,1307,1307,1307,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1307,1307,1307,1307,325,1307,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1307,1307,1307,1307,1307,325,1306,1306,1306,1306,1306,1306,1306,1306,1306,1306,1307,1308,313,1248,1309,1309,1309,1309,1309,1309,1309,1310,1309,1309,1309,1309,1309,1309,1309,1309,1309,1309,1309,1309,1309,1309,1308,1309,1311,1312,1248,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1308,1313,1308,1314,1309,1316,1315,312,312,312,312,312,312,312,312,312,312,1315,1318,1317,1319,1317,312,312,312,312,312,312,312,312,312,312,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1321,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1322,1320,1320,1320,1320,1320,1321,1320,311,311,311,311,311,311,311,311,311,311,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,310,1320,1324,1323,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1323,1323,1323,1323,1323,1323,1323,1323,1326,1323,1327,1328,1323,1323,1323,1323,1323,1323,1323,1323,1323,1329,1323,1323,1323,1323,1323,1323,1323,1323,1330,1323,1323,1323,1323,1323,1323,1331,1323,1323,1326,1323,1327,1328,1323,1323,1323,1332,1323,1323,1323,1323,1323,1329,1323,1323,1333,1323,1323,1323,1323,1323,1330,1323,314,314,314,314,314,314,314,314,314,314,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1335,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1336,1334,1334,1334,1334,1334,1335,1334,1334,1334,1337,1334,1334,1334,1334,1334,1334,1334,1334,1338,1334,1339,313,1339,313,313,315,315,315,315,315,315,315,315,315,315,313,315,315,315,315,315,315,315,315,315,315,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1339,1340,1340,1340,1340,1340,1340,1340,1340,1340,1341,1340,1343,1342,1344,1346,1345,1345,1345,1347,1345,1348,1349,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1331,1323,1323,1323,1323,1323,1323,1323,1323,1323,1332,1323,1323,1323,1323,1323,1323,1323,1323,1333,1323,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1351,1323,1323,1323,1323,1323,1323,1323,1323,1323,1332,1323,1323,1323,1323,1323,1323,1323,1323,1333,1323,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1354,1352,1352,1352,1352,1352,1352,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1357,1352,1352,1352,1352,1352,1352,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1359,1358,1360,1362,1361,1361,1361,1363,1361,1365,1364,1366,1367,1369,1369,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1370,1368,1368,1368,1368,1368,1368,1368,1368,1368,1371,1368,1368,1368,1368,1368,1368,1368,1368,1372,1368,1373,1373,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1374,1352,1352,1352,1352,1352,1352,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1373,1373,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1357,1352,1352,1352,1352,1352,1352,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1377,1375,1375,1375,1375,1375,1375,1375,1375,1375,1378,1375,1375,1375,1375,1375,1375,1375,1375,1379,1375,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1382,1380,1380,1380,1380,1380,1380,1380,1380,1380,1383,1380,1380,1380,1380,1380,1380,1380,1380,1384,1380,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1385,1385,1385,1385,1385,1385,1385,1386,1386,1386,1386,1386,1386,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1387,1385,1386,1386,1386,1386,1386,1386,1385,1385,1388,1385,1385,1385,1385,1385,1385,1385,1385,1389,1385,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1352,1352,1352,1352,1352,1352,1352,1390,1390,1390,1390,1390,1390,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1391,1352,1390,1390,1390,1390,1390,1390,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1352,1352,1352,1352,1352,1352,1352,1390,1390,1390,1390,1390,1390,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1357,1352,1390,1390,1390,1390,1390,1390,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1393,1392,1394,1394,1394,1394,1394,1394,1394,1394,1394,1394,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1395,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1396,1392,1392,1392,1392,1392,1395,1392,1392,1392,1397,1392,1392,1392,1392,1392,1392,1392,1392,1398,1392,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1400,1392,1392,1392,1392,1392,1392,1392,1392,1392,1397,1392,1392,1392,1392,1392,1392,1392,1392,1398,1392,1401,1352,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1403,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1404,1352,1352,1352,1352,1352,1403,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1357,1352,1352,1352,1352,1352,1352,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1310,1317,1248,1405,1309,1299,1309,1406,1407,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1299,1317,1299,1309,1299,1248,1309,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,325,325,325,325,325,325,325,325,325,325,1304,1304,1304,1304,1304,1304,1408,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1304,1304,1304,1304,325,1304,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1304,1304,1304,1304,1304,325,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,1292,313,313,313,313,313,313,313,313,313,313,313,313,313,313,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,313,313,313,313,1292,313,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,313,313,313,313,1265,313,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,313,313,313,313,313,1265,1410,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1265,1412,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1265,1265,1265,1413,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1265,1265,1265,1265,1265,1414,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1415,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1416,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1415,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1417,1419,1418,1420,1421,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1423,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1424,1425,1239,1239,1239,1239,1239,1426,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1427,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1428,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1429,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1430,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1431,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1432,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1433,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1434,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1435,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1436,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1437,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1438,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1439,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1440,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1441,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1437,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1442,1239,1443,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1444,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1445,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1446,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1448,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1449,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1450,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1451,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1452,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1453,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1454,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1455,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1456,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1457,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1458,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1459,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1460,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1461,1461,1461,1461,1461,1461,1461,1461,1461,327,328,327,327,327,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,327,1292,1461,329,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1461,1461,330,1461,1461,1292,1461,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1461,331,1461,1461,1239,1461,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1461,1461,1461,1461,1461,1239,344,345,344,344,344,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,343,343,346,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,349,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,348,343,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1463,1239,1239,1239,1239,1239,1239,1239,1239,1239,1464,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1465,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1292,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1466,1466,1466,1466,1466,1292,1466,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1466,1466,1466,1466,1239,1466,1239,1239,1239,1239,1239,1239,1239,1239,1467,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1466,1466,1466,1466,1466,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1468,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1469,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1470,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1471,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1472,1239,1473,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1474,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1447,1239,1239,1239,1475,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1440,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1476,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1477,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1457,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1478,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1281,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1479,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1480,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1440,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1481,1239,1239,1239,1239,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1482,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1483,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1484,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1457,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1485,1239,1239,1239,1486,1239,1239,1239,1239,1239,1487,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1488,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1454,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1440,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1489,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1490,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1491,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1492,1493,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1440,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1494,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1495,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1481,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1496,1239,1239,1497,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1440,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1498,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1454,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1499,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1500,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1501,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1440,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1502,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1503,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1489,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1504,1239,1239,1239,1239,1239,1239,1239,1239,1239,1505,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1451,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1480,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1506,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1507,1239,1239,1239,1239,1239,1239,1239,1508,1239,1239,1239,1239,1239,1239,1239,1509,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1510,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1446,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1511,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1512,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1481,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1513,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1481,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1514,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1451,1239,1239,1239,1515,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1516,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1481,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1517,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1518,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1519,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1489,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1520,1308,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1248,1298,1521,1523,1522,1523,1523,1523,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1523,1522,1522,1524,1522,1522,1525,1522,1522,1522,1522,1522,1522,1522,357,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1526,1522,353,354,353,353,353,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,353,1527,1527,355,1527,1527,356,1527,1527,1527,1527,1527,1527,1527,357,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,358,1527,360,1528,360,360,360,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,360,1528,1528,355,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,358,1528,1530,1529,1532,1531,363,362,368,1527,366,1527,1534,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1535,1533,1534,1533,1534,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1537,1533,1534,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1538,1533,1534,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1539,1533,1541,1539,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_trans_targs"),self.$private("_lex_trans_targs","_lex_trans_targs=")}(Opal.get_singleton_class(self)),$send(self,"_lex_trans_targs=",$to_a($writer=[[186,2,3,4,192,6,7,8,9,10,186,186,195,198,195,12,199,200,14,195,207,208,211,212,224,221,213,214,215,19,216,217,218,226,228,229,233,234,235,230,25,18,209,210,27,258,259,261,263,261,30,264,265,32,261,272,273,276,277,289,286,278,279,280,37,281,282,283,291,293,294,298,299,300,295,43,36,274,275,45,323,324,331,333,331,48,334,335,50,337,340,337,52,341,342,54,348,347,0,56,349,350,58,351,352,352,352,352,465,61,62,63,465,465,494,65,66,494,494,498,498,70,65,71,496,497,499,500,498,494,501,502,504,67,68,505,506,69,498,72,73,78,85,508,509,71,496,497,499,500,498,494,501,502,504,67,68,505,506,69,72,73,78,85,508,509,507,74,75,76,77,79,80,83,81,82,84,86,87,494,89,90,91,93,96,94,95,97,99,525,525,525,526,101,528,102,529,103,526,101,528,102,529,563,104,563,105,106,104,563,105,563,563,563,109,110,111,112,574,563,563,563,115,116,117,563,120,115,116,117,563,120,118,118,116,117,584,119,118,118,116,117,584,119,116,563,601,563,122,602,608,126,617,618,131,132,126,127,616,127,616,563,128,129,130,619,133,563,633,634,637,638,650,647,639,640,641,138,642,643,644,652,654,655,659,660,661,656,144,137,635,636,146,697,698,148,565,107,567,150,151,700,802,153,154,155,802,810,810,810,158,832,831,810,834,836,810,163,164,165,840,810,167,168,851,820,873,171,172,173,177,178,171,172,173,177,178,174,174,172,173,175,176,174,174,172,173,175,176,921,172,810,990,179,992,181,185,993,183,990,180,990,182,992,182,992,184,992,990,186,186,187,188,189,191,193,194,186,186,186,190,186,190,186,1,186,186,186,5,195,195,196,195,197,201,195,195,11,13,195,195,195,195,202,203,204,15,21,26,236,28,195,195,195,205,206,195,16,195,195,195,17,195,195,195,20,219,195,220,222,195,223,225,227,22,195,195,23,231,195,232,24,195,237,241,238,239,240,195,195,242,243,246,248,257,244,245,195,247,249,251,250,195,252,253,254,255,256,195,195,195,260,261,261,261,262,266,261,29,31,261,261,261,261,267,268,269,33,39,44,301,46,261,261,261,270,271,261,34,261,261,261,35,261,261,261,38,284,261,285,287,261,288,290,292,40,261,261,41,296,261,297,42,261,302,306,303,304,305,261,261,307,308,311,313,322,309,310,261,312,314,316,315,261,317,318,319,320,321,261,261,261,325,326,326,327,326,328,326,326,326,329,329,329,330,329,329,329,331,331,331,332,331,47,49,331,331,331,336,336,336,337,337,338,337,339,337,337,51,53,337,337,337,343,343,344,343,343,345,346,345,55,57,347,347,347,353,352,352,354,355,356,357,359,362,363,364,365,352,366,367,369,371,372,373,377,379,380,381,397,402,409,414,421,428,431,432,436,430,440,448,452,454,459,461,464,352,352,352,352,352,352,358,352,358,352,360,59,361,352,60,352,352,368,370,352,374,375,376,372,378,352,382,383,392,395,384,385,386,387,388,389,390,391,353,393,394,396,398,401,399,400,403,406,404,405,407,408,410,412,411,413,415,416,352,417,418,419,420,352,422,425,423,424,426,427,429,433,434,435,437,439,438,441,442,443,445,444,446,447,449,450,451,453,455,456,457,458,460,462,463,466,465,465,467,468,470,471,465,465,465,469,465,469,64,472,465,474,473,473,477,478,479,480,473,482,483,484,485,487,489,490,491,492,493,473,475,473,476,473,473,473,473,473,481,473,481,486,473,488,473,494,494,495,510,511,497,513,514,501,515,516,517,518,519,521,522,523,524,494,494,494,494,494,494,498,503,494,494,494,494,494,494,494,494,494,512,494,512,494,494,494,494,520,494,88,92,98,525,527,530,100,525,525,526,531,531,532,533,535,537,538,531,531,534,531,534,531,536,531,531,531,540,539,539,541,542,543,545,547,548,553,560,539,539,539,539,544,539,544,539,546,539,539,540,549,550,551,552,554,555,558,556,557,559,561,562,564,563,572,573,575,576,578,579,580,581,583,585,586,589,590,615,621,622,623,700,701,702,703,704,582,706,723,728,735,740,742,748,751,752,756,750,760,771,775,778,786,790,793,794,563,104,105,563,107,566,563,563,568,570,571,563,569,563,563,563,563,563,108,563,563,563,563,563,577,563,577,563,563,113,563,114,563,563,582,563,587,563,588,563,563,563,591,600,563,121,603,604,605,563,606,123,609,610,124,613,614,563,592,594,563,593,563,563,595,598,599,563,596,597,563,563,563,563,563,563,607,563,601,611,612,563,611,563,601,611,125,620,563,563,563,624,563,563,563,625,627,563,626,563,626,563,628,629,630,134,140,145,662,147,563,563,563,631,632,563,135,563,563,563,136,563,563,563,139,645,563,646,648,563,649,651,653,141,563,563,142,657,563,658,143,563,663,667,664,665,666,563,563,668,669,672,683,696,670,671,563,673,674,675,677,676,563,678,679,680,681,682,684,691,685,686,687,688,689,690,692,693,694,695,563,563,563,699,149,152,563,705,707,708,718,721,709,710,711,712,713,714,715,716,717,719,720,722,724,727,725,726,729,732,730,731,733,734,736,738,737,739,741,743,745,744,746,747,749,717,753,754,755,757,759,758,761,762,763,768,764,765,766,563,564,565,107,767,570,769,770,772,773,774,776,777,779,780,781,784,782,783,785,787,788,789,791,792,563,582,795,795,796,797,798,800,795,795,795,799,795,799,795,801,795,803,802,802,804,805,802,806,808,802,802,802,802,807,802,807,809,802,811,810,810,814,815,816,810,817,819,822,823,824,825,826,810,827,828,833,861,865,810,866,868,870,810,871,872,874,878,880,881,883,884,902,907,914,922,929,936,941,942,946,940,951,961,967,970,979,983,987,988,989,822,812,810,813,810,810,810,810,810,810,818,810,818,810,156,821,810,810,810,810,810,810,810,810,810,829,810,830,810,810,157,159,810,160,842,853,856,835,857,858,843,847,849,810,835,160,837,839,161,810,837,810,838,810,810,162,841,810,810,844,846,810,844,845,847,849,846,810,848,810,810,850,852,810,166,810,810,810,854,846,847,849,854,855,810,844,846,847,849,810,844,846,847,849,810,859,846,847,849,859,860,810,160,861,835,862,847,849,863,846,160,863,835,864,867,869,810,169,170,810,810,875,876,877,872,879,810,810,882,810,810,810,885,886,895,900,887,888,889,890,891,892,893,894,811,896,897,898,899,811,901,903,906,904,905,811,811,908,911,909,910,912,913,811,915,917,916,918,919,920,810,810,923,811,924,810,925,926,927,928,812,930,933,931,932,934,935,937,938,939,811,943,944,945,947,949,950,948,811,952,953,954,957,955,956,958,959,960,962,964,963,965,966,968,969,971,972,974,977,973,975,976,978,980,981,982,984,985,986,810,810,990,991,995,996,997,990,990,990,994,990,990,999,998,1e3,998,1001,1002,1003,998,998]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_trans_actions"),self.$private("_lex_trans_actions","_lex_trans_actions=")}(Opal.get_singleton_class(self)),$send(self,"_lex_trans_actions=",$to_a($writer=[[1,0,0,0,0,0,0,0,0,0,2,3,4,0,5,0,0,0,0,6,0,7,0,8,0,0,7,0,0,0,0,8,0,7,0,8,0,7,7,0,0,0,0,0,0,0,0,9,0,10,0,0,0,0,11,0,7,0,8,0,0,7,0,0,0,0,8,0,7,0,8,0,7,7,0,0,0,0,0,0,0,0,12,0,13,0,0,0,0,14,0,15,0,0,0,0,0,16,0,0,0,0,0,0,17,18,19,20,21,0,0,0,22,23,24,0,0,25,26,27,28,29,30,30,31,32,30,33,32,34,32,30,30,31,30,35,30,30,36,30,30,30,30,30,30,0,37,38,0,39,38,40,38,0,0,37,0,41,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,43,44,45,46,0,0,0,46,29,47,30,30,30,47,48,0,49,0,29,30,50,30,51,52,53,0,0,0,0,0,54,55,56,0,29,0,57,0,30,58,30,59,30,60,61,62,61,63,61,0,64,65,64,66,64,67,68,0,69,0,0,0,0,70,70,0,0,71,71,72,0,29,73,0,0,0,70,0,74,0,7,0,8,0,0,7,0,0,0,0,8,0,7,0,8,0,7,7,0,0,0,0,0,0,0,0,0,75,0,0,0,0,75,76,0,0,0,77,78,79,80,0,7,7,81,82,82,83,0,0,0,0,84,0,0,0,0,0,0,29,0,0,0,30,58,30,30,30,60,61,62,61,61,61,0,64,65,64,64,64,85,67,86,87,0,88,0,89,89,0,90,0,91,60,92,0,93,29,94,95,98,99,0,29,0,7,0,7,100,101,102,60,103,0,104,0,105,106,107,0,108,109,0,110,7,7,111,112,0,0,113,114,115,116,117,117,117,117,117,117,117,117,118,119,120,0,0,121,0,122,123,124,0,125,126,127,0,0,128,0,0,129,0,7,0,0,130,131,0,0,132,0,29,133,0,0,0,0,0,134,135,0,0,0,0,0,0,0,136,0,0,0,0,137,0,0,0,0,0,138,139,140,0,141,142,143,7,7,144,0,0,145,146,147,148,117,117,117,117,117,117,117,117,149,150,151,0,0,152,0,153,154,155,0,156,157,158,0,0,159,0,0,160,0,7,0,0,161,162,0,0,163,0,29,164,0,0,0,0,0,165,166,0,0,0,0,0,0,0,167,0,0,0,0,168,0,0,0,0,0,169,170,171,0,172,173,0,174,0,175,176,177,178,179,180,0,181,182,183,184,185,186,7,187,0,0,188,189,190,191,192,193,194,195,0,196,7,197,198,0,0,199,200,201,202,203,0,204,205,206,0,207,0,0,208,209,210,211,212,213,0,29,0,0,7,7,0,0,0,214,0,0,0,0,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,217,218,219,220,221,60,222,0,223,0,0,0,224,0,225,226,0,0,227,0,0,0,228,0,229,0,0,0,0,0,0,0,0,0,0,0,0,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,0,0,0,0,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,232,233,0,0,7,0,234,235,236,60,237,0,0,29,238,0,239,240,0,29,0,0,241,0,0,0,0,0,0,0,0,0,0,242,0,243,0,244,245,246,247,248,60,249,0,0,250,0,251,252,253,254,29,0,28,0,0,28,0,0,0,0,0,0,7,7,7,255,256,257,258,259,260,261,0,262,263,264,265,266,267,268,269,270,60,271,0,272,273,274,275,276,277,0,0,0,278,7,7,0,279,280,281,282,283,0,0,0,0,0,284,285,60,286,0,287,29,288,289,290,291,292,293,0,29,0,0,0,0,0,0,294,295,296,297,60,298,0,299,29,300,301,302,0,0,0,0,0,0,0,0,0,0,0,0,303,304,0,8,0,0,7,305,0,0,305,305,0,0,7,306,0,306,0,306,306,306,0,0,306,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,0,0,307,308,308,309,310,0,311,312,0,75,0,313,0,314,315,316,317,318,30,319,320,321,322,323,60,324,0,325,326,0,327,0,328,329,305,330,0,331,0,332,333,334,0,0,335,0,0,0,0,336,0,0,0,0,0,0,0,337,0,0,338,0,339,340,0,0,0,341,0,0,342,343,344,345,346,347,0,348,349,349,0,350,0,351,352,352,0,0,353,354,355,0,356,357,358,0,7,359,360,361,0,362,117,117,117,117,117,117,117,117,363,364,365,0,0,366,0,367,368,369,0,370,371,372,0,0,373,0,0,374,0,7,0,0,375,376,0,0,377,0,29,378,0,0,0,0,0,379,380,0,0,0,0,0,0,0,381,0,0,0,0,0,382,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,383,384,385,0,0,0,386,29,303,303,303,303,303,303,303,303,303,303,303,303,75,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,387,303,303,303,303,303,303,303,303,303,303,303,303,388,389,390,391,392,392,388,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,393,394,395,396,0,29,0,0,397,398,399,60,400,0,401,29,402,7,403,404,0,29,405,0,0,406,407,408,409,60,410,0,29,411,412,413,414,0,29,0,415,0,7,416,0,0,0,0,417,0,0,418,418,0,419,0,0,0,420,7,421,421,421,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,422,423,424,0,425,426,427,428,429,430,60,431,0,432,0,0,433,434,435,436,437,438,439,440,441,0,442,0,443,444,0,0,445,446,447,0,0,448,0,0,447,449,449,450,451,0,452,453,0,454,455,456,0,457,458,0,0,459,460,447,447,461,0,0,462,462,0,463,0,464,465,7,0,466,0,467,468,469,470,470,471,471,0,0,472,473,473,474,474,475,476,476,477,477,478,479,479,480,480,0,0,481,482,483,484,485,486,486,483,485,487,418,488,0,0,0,489,0,0,490,491,421,421,421,492,421,493,494,29,495,496,497,0,0,0,0,0,0,0,0,0,0,0,0,498,0,0,0,0,492,0,0,0,0,0,499,500,0,0,0,0,0,0,501,0,0,0,0,0,500,502,503,0,504,0,505,0,0,0,0,506,0,0,0,0,0,0,0,0,0,507,0,0,0,0,0,0,0,506,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,508,509,510,511,511,89,511,512,513,514,0,515,516,0,517,0,518,0,0,0,519,520]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_to_state_actions"),self.$private("_lex_to_state_actions","_lex_to_state_actions=")}(Opal.get_singleton_class(self)),$send(self,"_lex_to_state_actions=",$to_a($writer=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,96,0,96,0,0,0,0,96,96,0,0,0,0,0,96,0,96,0,96,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_from_state_actions"),self.$private("_lex_from_state_actions","_lex_from_state_actions=")}(Opal.get_singleton_class(self)),$send(self,"_lex_from_state_actions=",$to_a($writer=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,97,0,97,0,0,0,0,97,97,0,0,0,0,0,97,0,97,0,97,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_eof_trans"),self.$private("_lex_eof_trans","_lex_eof_trans=")}(Opal.get_singleton_class(self)),$send(self,"_lex_eof_trans=",$to_a($writer=[[0,1,1,1,1,1,1,1,1,1,1,13,13,13,13,20,20,20,20,20,20,20,20,20,20,20,20,20,20,48,48,48,48,55,55,55,55,55,55,55,55,55,55,55,55,55,55,83,83,83,83,90,90,90,90,0,0,0,0,105,107,109,109,109,109,115,115,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,180,180,180,180,180,180,180,180,180,180,180,180,190,192,192,192,204,204,204,212,214,214,214,214,214,220,212,212,212,212,212,212,212,246,246,246,246,246,246,212,262,212,262,246,246,212,268,268,268,268,268,268,268,268,268,268,268,268,268,268,212,246,246,246,246,303,303,303,308,310,310,310,314,314,317,317,317,317,322,322,322,308,314,314,314,314,314,314,314,314,314,353,360,362,362,362,362,353,0,378,379,380,382,384,386,384,384,0,396,397,401,401,402,403,412,413,414,414,414,417,417,419,420,421,421,421,423,424,425,425,425,428,428,421,431,431,421,417,417,436,437,437,437,440,440,437,437,437,443,443,443,443,449,450,450,450,450,458,450,450,450,450,463,450,450,450,450,450,450,469,470,471,471,0,478,482,482,483,484,493,494,495,495,495,498,498,500,501,502,502,502,504,505,506,506,506,509,509,502,512,512,502,498,498,517,518,518,518,521,521,518,518,518,524,524,524,524,530,531,531,531,531,539,531,531,531,531,544,531,531,531,531,531,531,550,551,552,552,0,559,560,0,566,0,573,577,577,578,0,0,587,588,592,592,593,0,598,0,601,0,604,604,605,606,0,647,649,650,651,652,654,656,660,660,651,651,651,651,662,651,651,656,651,651,647,666,666,666,666,666,666,656,656,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,705,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,651,0,749,750,751,753,749,749,757,0,776,778,780,781,782,783,784,786,783,783,783,783,783,789,783,783,791,789,789,783,0,810,811,115,115,814,815,115,811,811,818,820,823,811,824,811,825,826,828,830,811,818,831,831,820,831,835,831,831,831,831,0,190,843,844,843,843,0,853,854,856,858,860,858,862,0,874,875,876,877,879,881,883,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,0,942,945,948,949,953,955,956,957,958,959,961,964,965,967,969,972,974,975,212,972,977,972,964,979,981,964,964,999,1002,1004,1005,1009,1012,1013,1014,1015,999,999,999,999,999,999,999,999,999,999,1019,1023,1025,999,999,964,1030,1031,1031,1031,964,964,964,1032,1039,1039,1041,1043,1052,1053,1054,1054,1054,1057,1057,1059,1060,1061,1061,1061,1063,1064,1065,1065,1065,1068,1068,1061,1071,1071,1061,1057,1057,1076,1077,1077,1077,1080,1080,1077,1077,1077,1083,1083,1083,1083,1089,1090,1090,1090,1090,1098,1090,1090,1090,1090,1104,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1122,1123,1124,1124,212,964,964,1128,964,959,942,942,942,942,942,942,942,942,942,942,942,212,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,1181,949,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,1206,964,0,1214,1215,1216,1218,1220,1222,0,1231,1232,1233,1234,1236,1231,1239,0,314,1294,1296,1297,1298,1299,1301,1303,1305,1308,1308,314,1310,1312,1313,1314,1310,1316,1318,1318,1321,1321,1324,1335,314,1341,1343,1345,1346,1349,1350,1324,1324,1353,1353,1353,1359,1361,1362,1365,1367,1368,1369,1353,1353,1376,1381,1386,1353,1353,1393,1393,1353,1353,1318,1310,1310,1318,1310,1310,1305,314,1411,1412,1412,1412,1412,1412,1412,1418,1305,1421,1422,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1462,1463,1423,1423,1467,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1521,1299,1522,0,1528,1529,1530,1532,1528,1528,1528,0,1537,1537,1537,1537,1541]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_start")}(Opal.get_singleton_class(self)),$send(self,"lex_start=",$to_a($writer=[186])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_error")}(Opal.get_singleton_class(self)),$send(self,"lex_error=",$to_a($writer=[0])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_words=",$to_a($writer=[195])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_string")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_string=",$to_a($writer=[261])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_words=",$to_a($writer=[326])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_string")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_string=",$to_a($writer=[329])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_backslash_delimited")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_backslash_delimited=",$to_a($writer=[331])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_backslash_delimited")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_backslash_delimited=",$to_a($writer=[336])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_backslash_delimited_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_backslash_delimited_words=",$to_a($writer=[337])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_backslash_delimited_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_backslash_delimited_words=",$to_a($writer=[343])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_regexp_modifiers")}(Opal.get_singleton_class(self)),$send(self,"lex_en_regexp_modifiers=",$to_a($writer=[345])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_variable")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_variable=",$to_a($writer=[347])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_fname")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_fname=",$to_a($writer=[352])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_endfn")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_endfn=",$to_a($writer=[465])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_dot")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_dot=",$to_a($writer=[473])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_arg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_arg=",$to_a($writer=[494])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_cmdarg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_cmdarg=",$to_a($writer=[525])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_endarg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_endarg=",$to_a($writer=[531])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_mid")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_mid=",$to_a($writer=[539])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_beg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_beg=",$to_a($writer=[563])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_labelarg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_labelarg=",$to_a($writer=[795])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_value")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_value=",$to_a($writer=[802])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_end")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_end=",$to_a($writer=[810])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_leading_dot")}(Opal.get_singleton_class(self)),$send(self,"lex_en_leading_dot=",$to_a($writer=[990])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_line_comment")}(Opal.get_singleton_class(self)),$send(self,"lex_en_line_comment=",$to_a($writer=[998])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_line_begin")}(Opal.get_singleton_class(self)),$send(self,"lex_en_line_begin=",$to_a($writer=[186])),$writer[$rb_minus($writer.length,1)],$const_set($nesting[0],"ESCAPES",$hash("a".$ord(),"","b".$ord(),"\b","e".$ord(),"","f".$ord(),"\f","n".$ord(),"\n","r".$ord(),"\r","s".$ord()," ","t".$ord(),"\t","v".$ord(),"\v","\\".$ord(),"\\").$freeze()),$const_set($nesting[0],"REGEXP_META_CHARACTERS",$send($$("Regexp"),"union",$to_a("\\$()*+.<>?[]^{|}".$chars())).$freeze()),self.$attr_reader("source_buffer"),self.$attr_accessor("diagnostics"),self.$attr_accessor("static_env"),self.$attr_accessor("force_utf32"),self.$attr_accessor("cond","cmdarg","context","command_start"),self.$attr_accessor("tokens","comments"),self.$attr_reader("paren_nest","cmdarg_stack","cond_stack","lambda_stack"),$def(self,"$initialize",(function(version){return this.version=version,this.static_env=nil,this.context=nil,this.tokens=nil,this.comments=nil,this.$reset()}),1),$def(self,"$reset",(function(reset_state){return null==reset_state&&(reset_state=!0),$truthy(reset_state)&&(this.cs=this.$class().$lex_en_line_begin(),this.cond=$$("StackState").$new("cond"),this.cmdarg=$$("StackState").$new("cmdarg"),this.cond_stack=[],this.cmdarg_stack=[]),this.force_utf32=!1,this.source_pts=nil,this.p=0,this.ts=nil,this.te=nil,this.act=0,this.stack=[],this.top=0,this.token_queue=[],this.literal_stack=[],this.eq_begin_s=nil,this.sharp_s=nil,this.newline_s=nil,this.num_base=nil,this.num_digits_s=nil,this.num_suffix_s=nil,this.num_xfrm=nil,this.escape_s=nil,this.escape=nil,this.herebody_s=nil,this.paren_nest=0,this.lambda_stack=[],this.dedent_level=nil,this.command_start=!0,this.cs_before_block_comment=this.$class().$lex_en_line_begin()}),-1),$def(self,"$source_buffer=",(function(source_buffer){var source=nil;return this.source_buffer=source_buffer,$truthy(this.source_buffer)?(source=this.source_buffer.$source(),$eqeq(source.$encoding(),$$$($$("Encoding"),"UTF_8"))?this.source_pts=source.$unpack("U*"):this.source_pts=source.$unpack("C*"),$eqeq(this.source_pts["$[]"](0),65279)?this.p=1:nil):this.source_pts=nil}),1),$def(self,"$encoding",(function(){return this.source_buffer.$source().$encoding()}),0),$const_set($nesting[0],"LEX_STATES",$hash2(["line_begin","expr_dot","expr_fname","expr_value","expr_beg","expr_mid","expr_arg","expr_cmdarg","expr_end","expr_endarg","expr_endfn","expr_labelarg","interp_string","interp_words","plain_string","plain_words"],{line_begin:self.$lex_en_line_begin(),expr_dot:self.$lex_en_expr_dot(),expr_fname:self.$lex_en_expr_fname(),expr_value:self.$lex_en_expr_value(),expr_beg:self.$lex_en_expr_beg(),expr_mid:self.$lex_en_expr_mid(),expr_arg:self.$lex_en_expr_arg(),expr_cmdarg:self.$lex_en_expr_cmdarg(),expr_end:self.$lex_en_expr_end(),expr_endarg:self.$lex_en_expr_endarg(),expr_endfn:self.$lex_en_expr_endfn(),expr_labelarg:self.$lex_en_expr_labelarg(),interp_string:self.$lex_en_interp_string(),interp_words:self.$lex_en_interp_words(),plain_string:self.$lex_en_plain_string(),plain_words:self.$lex_en_plain_string()})),$def(self,"$state",(function(){return $$("LEX_STATES").$invert().$fetch(this.cs,this.cs)}),0),$def(self,"$state=",(function(state){return this.cs=$$("LEX_STATES").$fetch(state)}),1),$def(self,"$push_cmdarg",(function(){return this.cmdarg_stack.$push(this.cmdarg),this.cmdarg=$$("StackState").$new("cmdarg."+this.cmdarg_stack.$count())}),0),$def(self,"$pop_cmdarg",(function(){return this.cmdarg=this.cmdarg_stack.$pop()}),0),$def(self,"$push_cond",(function(){return this.cond_stack.$push(this.cond),this.cond=$$("StackState").$new("cond."+this.cond_stack.$count())}),0),$def(self,"$pop_cond",(function(){return this.cond=this.cond_stack.$pop()}),0),$def(self,"$dedent_level",(function(){var $a,dedent_level;return dedent_level=($a=[this.dedent_level,nil])[0],this.dedent_level=$a[1],dedent_level}),0),$def(self,"$advance",(function(){var $a,$b,pe,self=this,klass=nil,_lex_trans_keys=nil,_lex_key_spans=nil,_lex_index_offsets=nil,_lex_indicies=nil,_lex_trans_targs=nil,_lex_trans_actions=nil,_lex_to_state_actions=nil,_lex_from_state_actions=nil,_lex_eof_trans=nil,p=nil,eof=nil,cmd_state=nil,_slen=nil,_trans=nil,_keys=nil,_inds=nil,_goto_level=nil,$ret_or_1=nil,_wide=nil,tm=nil,heredoc_e=nil,diag_msg=nil,ident_tok=nil,ident_ts=nil,ident_te=nil,current_literal=nil,$writer=nil,line=nil,string=nil,lookahead=nil,token=nil,message=nil,escaped_char=nil,$ret_or_2=nil,unknown_options=nil,type=nil,delimiter=nil,escape=nil,ident=nil,followed_by_nl=nil,nl_emitted=nil,dots_te=nil,value=nil,digits=nil,invalid_idx=nil,invalid_s=nil,codepoints=nil,codepoint_s=nil,spaces_p=nil,codepoint=nil,new_herebody_s=nil,indent=nil,dedent_body=nil;if($truthy(self.token_queue["$any?"]()))return self.token_queue.$shift();for(_lex_trans_keys=(klass=self.$class()).$send("_lex_trans_keys"),_lex_key_spans=klass.$send("_lex_key_spans"),_lex_index_offsets=klass.$send("_lex_index_offsets"),_lex_indicies=klass.$send("_lex_indicies"),_lex_trans_targs=klass.$send("_lex_trans_targs"),_lex_trans_actions=klass.$send("_lex_trans_actions"),_lex_to_state_actions=klass.$send("_lex_to_state_actions"),_lex_from_state_actions=klass.$send("_lex_from_state_actions"),_lex_eof_trans=klass.$send("_lex_eof_trans"),pe=$rb_plus(self.source_pts.$size(),2),$a=[self.p,pe],p=$a[0],eof=$a[1],cmd_state=self.command_start,self.command_start=!1,!1,_slen=null==($a=$to_ary($b=nil))[0]?nil:$a[0],_trans=null==$a[1]?nil:$a[1],_keys=null==$a[2]?nil:$a[2],_inds=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],_goto_level=0,10,15,20,30,40;$truthy(!0);){if($truthy($rb_le(_goto_level,0))){if($eqeq(p,pe)){_goto_level=30;continue}if($eqeq(self.cs,0)){_goto_level=40;continue}}if($truthy($rb_le(_goto_level,10))&&($eqeqeq(97,$ret_or_1=_lex_from_state_actions["$[]"](self.cs))&&(self.ts=p),_keys=self.cs["$<<"](1),_inds=_lex_index_offsets["$[]"](self.cs),_slen=_lex_key_spans["$[]"](self.cs),_wide=$truthy($ret_or_1=self.source_pts["$[]"](p))?$ret_or_1:0,_trans=$truthy($rb_gt(_slen,0))&&$truthy($rb_le(_lex_trans_keys["$[]"](_keys),_wide))&&$truthy($rb_le(_wide,_lex_trans_keys["$[]"]($rb_plus(_keys,1))))?_lex_indicies["$[]"]($rb_minus($rb_plus(_inds,_wide),_lex_trans_keys["$[]"](_keys))):_lex_indicies["$[]"]($rb_plus(_inds,_slen))),$truthy($rb_le(_goto_level,15))&&(self.cs=_lex_trans_targs["$[]"](_trans),$neqeq(_lex_trans_actions["$[]"](_trans),0)))if($eqeqeq(29,$ret_or_1=_lex_trans_actions["$[]"](_trans)))self.newline_s=p;else if($eqeqeq(117,$ret_or_1))self.escape_s=p,self.escape=nil;else if($eqeqeq(30,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil);else if($eqeqeq(60,$ret_or_1))self.sharp_s=$rb_minus(p,1);else if($eqeqeq(64,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p);else if($eqeqeq(310,$ret_or_1))tm=p;else if($eqeqeq(37,$ret_or_1))tm=p;else if($eqeqeq(39,$ret_or_1))tm=p;else if($eqeqeq(41,$ret_or_1))tm=p;else if($eqeqeq(71,$ret_or_1))heredoc_e=p;else if($eqeqeq(349,$ret_or_1))tm=$rb_minus(p,1),diag_msg="ivar_name";else if($eqeqeq(352,$ret_or_1))tm=$rb_minus(p,2),diag_msg="cvar_name";else if($eqeqeq(360,$ret_or_1))self.escape=nil;else if($eqeqeq(392,$ret_or_1))tm=p;else if($eqeqeq(308,$ret_or_1))ident_tok=self.$tok(),ident_ts=self.ts,ident_te=self.te;else if($eqeqeq(479,$ret_or_1))self.num_base=16,self.num_digits_s=p;else if($eqeqeq(473,$ret_or_1))self.num_base=10,self.num_digits_s=p;else if($eqeqeq(476,$ret_or_1))self.num_base=8,self.num_digits_s=p;else if($eqeqeq(470,$ret_or_1))self.num_base=2,self.num_digits_s=p;else if($eqeqeq(485,$ret_or_1))self.num_base=10,self.num_digits_s=self.ts;else if($eqeqeq(447,$ret_or_1))self.num_base=8,self.num_digits_s=self.ts;else if($eqeqeq(462,$ret_or_1))self.num_suffix_s=p;else if($eqeqeq(455,$ret_or_1))self.num_suffix_s=p;else if($eqeqeq(452,$ret_or_1))self.num_suffix_s=p;else if($eqeqeq(89,$ret_or_1))tm=p;else if($eqeqeq(7,$ret_or_1))self.te=$rb_plus(p,1);else{if($eqeqeq(113,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(5,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(109,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(108,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(115,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(114,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(111,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else if($eqeqeq(112,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(6,$ret_or_1))p=$rb_minus(self.te,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(4,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else{if($eqeqeq(145,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(10,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(142,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(141,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(147,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(146,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(144,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(11,$ret_or_1))p=$rb_minus(self.te,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(9,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(173,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(172,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(175,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else if($eqeqeq(176,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(179,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(178,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(181,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else{if($eqeqeq(188,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(13,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(185,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(184,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(190,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(189,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(187,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(12,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(192,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(191,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else{if($eqeqeq(199,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(15,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(195,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(194,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(201,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(200,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(197,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else if($eqeqeq(198,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(14,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(203,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(202,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(205,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else{if($eqeqeq(206,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tREGEXP_OPT",self.$tok(self.ts,$rb_minus(self.te,1)),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(207,$ret_or_1)){self.te=p,p=$rb_minus(p,1),unknown_options=self.$tok().$scan(/[^imxouesn]/),$truthy(unknown_options["$any?"]())&&self.$diagnostic("error","regexp_options",$hash2(["options"],{options:unknown_options.$join()})),self.$emit("tREGEXP_OPT"),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(16,$ret_or_1)){self.te=$rb_plus(p,1),$truthy(self.$tok()["$=~"](/^\$([1-9][0-9]*)$/))?self.$emit("tNTH_REF",self.$tok($rb_plus(self.ts,1)).$to_i()):$truthy(self.$tok()["$=~"](/^\$([&`'+])$/))?self.$emit("tBACK_REF"):self.$emit("tGVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(208,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy(self.$tok()["$=~"](/^\$([1-9][0-9]*)$/))?self.$emit("tNTH_REF",self.$tok($rb_plus(self.ts,1)).$to_i()):$truthy(self.$tok()["$=~"](/^\$([&`'+])$/))?self.$emit("tBACK_REF"):self.$emit("tGVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(210,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy(self.$tok()["$=~"](/^@@[0-9]/))&&self.$diagnostic("error","cvar_name",$hash2(["name"],{name:self.$tok()})),self.$emit("tCVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(209,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy(self.$tok()["$=~"](/^@[0-9]/))&&self.$diagnostic("error","ivar_name",$hash2(["name"],{name:self.$tok()})),self.$emit("tIVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(231,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(217,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tIDENTIFIER"),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(18,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(214,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(226,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(20,$ret_or_1)){if(self.te=$rb_plus(p,1),$truthy(self["$version?"](23))){type=($b=[self.$tok()["$[]"]($range(0,-2,!1)),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(213,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(212,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(230,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(227,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT"),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(229,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(224,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(220,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(225,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(218,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(223,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(19,$ret_or_1)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(17,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(216,$ret_or_1)){if($eqeqeq(43,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(44,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tCONSTANT"),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(45,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(22,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tLABEL",self.$tok(self.ts,$rb_minus(self.te,2)),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),self.cs=795,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(23,$ret_or_1)){if(self.te=$rb_plus(p,1),$truthy($rb_ge(self.version,31))&&$truthy(self.context.$in_argdef())){self.$emit("tBDOT3","...".$freeze()),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}p=$rb_minus(p,3),self.cs=810,_goto_level=20;continue}if($eqeqeq(233,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(232,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(235,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(234,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(21,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(241,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(240,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(239,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(251,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(242,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(247,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(245,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(250,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(274,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(257,$ret_or_1)){self.te=$rb_plus(p,1),$eqeq(self.$tok(tm,$rb_plus(tm,1)),"/".$freeze())&&($truthy($rb_lt(self.version,30))?self.$diagnostic("warning","ambiguous_literal",nil,self.$range(tm,$rb_plus(tm,1))):self.$diagnostic("warning","ambiguous_regexp",nil,self.$range(tm,$rb_plus(tm,1)))),p=$rb_minus(tm,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(263,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(25,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(265,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(tm,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(40,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(252,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(253,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(264,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(260,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$diagnostic("warning","ambiguous_prefix",$hash2(["prefix"],{prefix:self.$tok(tm,self.te)}),self.$range(tm,self.te)),p=$rb_minus(tm,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(262,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(256,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(255,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(273,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(26,$ret_or_1))p=$rb_minus(self.te,1);else{if($eqeqeq(42,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(24,$ret_or_1)){if($eqeqeq(72,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$eqeq(self.$tok(tm,$rb_plus(tm,1)),"/".$freeze())&&($truthy($rb_lt(self.version,30))?self.$diagnostic("warning","ambiguous_literal",nil,self.$range(tm,$rb_plus(tm,1))):self.$diagnostic("warning","ambiguous_regexp",nil,self.$range(tm,$rb_plus(tm,1)))),p=$rb_minus(tm,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(73,$ret_or_2)){p=$rb_minus(self.te,1),self.$diagnostic("warning","ambiguous_prefix",$hash2(["prefix"],{prefix:self.$tok(tm,self.te)}),self.$range(tm,self.te)),p=$rb_minus(tm,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(78,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}p=$rb_minus(self.te,1)}else{if($eqeqeq(44,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=494,_goto_level=20;continue}if($eqeqeq(278,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(279,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=494,_goto_level=20;continue}if($eqeqeq(45,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=494,_goto_level=20;continue}if($eqeqeq(43,$ret_or_1)){if($eqeqeq(85,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$truthy(self.cond["$active?"]())?self.$emit("kDO_COND","do".$freeze(),$rb_minus(self.te,2),self.te):self.$emit("kDO","do".$freeze(),$rb_minus(self.te,2),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(86,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=494,_goto_level=20;continue}}else{if($eqeqeq(289,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_do(!0),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(282,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(283,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(284,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(287,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(293,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(292,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(301,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(295,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(299,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(294,$ret_or_1)){if($eqeqeq(93,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(94,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=563,_goto_level=20;continue}}else{if($eqeqeq(57,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(334,$ret_or_1)){self.te=$rb_plus(p,1),type=delimiter=self.$tok()["$[]"](0).$chr(),p=$rb_minus(p,1),self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(326,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.source_buffer.$slice(self.ts).$chr(),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(55,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.$tok()["$[]"]($range(0,-2,!1)),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(347,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_minus(p,1),self.$emit("tSYMBEG",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),self.cs=352,_goto_level=20;continue}if($eqeqeq(335,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.$tok(),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(346,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),$rb_plus(self.ts,2))),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(69,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1)),self.ts),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(357,$ret_or_1)){self.te=$rb_plus(p,1),escape=$hash2([" ","\r","\n","\t","\v","\f"],{" ":"\\s","\r":"\\r","\n":"\\n","\t":"\\t","\v":"\\v","\f":"\\f"})["$[]"](self.source_buffer.$slice($rb_plus(self.ts,1))),self.$diagnostic("warning","invalid_escape_use",$hash2(["escape"],{escape:escape}),self.$range()),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(356,$ret_or_1))self.te=$rb_plus(p,1),self.$diagnostic("fatal","incomplete_escape",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(336,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(52,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),$truthy(self["$version?"](18))?(ident=self.$tok(self.ts,$rb_minus(self.te,2)),self.$emit($truthy(self.source_buffer.$slice(self.ts)["$=~"](/[A-Z]/))?"tCONSTANT":"tIDENTIFIER",ident,self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,1),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](ident))?self.cs=810:self.cs=self.$arg_or_cmdarg(cmd_state)):(self.$emit("tLABEL",self.$tok(self.ts,$rb_minus(self.te,2)),self.ts,$rb_minus(self.te,1)),self.cs=795),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(49,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tIDENTIFIER",ident_tok,ident_ts,ident_te),p=$rb_minus(ident_te,1),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](ident_tok))&&$truthy($rb_lt(self.version,25))?self.cs=465:self.cs=525,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(320,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs_before_block_comment=self.cs,self.cs=186,_goto_level=20;continue}if($eqeqeq(56,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(304,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(330,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(329,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tSTAR","*".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(325,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","string_eof",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else if($eqeqeq(354,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(337,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1)),self.ts),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(350,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te)):(self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=self.ts),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(355,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","incomplete_escape",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(361,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(327,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(331,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$emit("tBDOT2"):self.$emit("tDOT2"),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(332,$ret_or_1)){self.te=p,p=$rb_minus(p,1),followed_by_nl=$rb_minus(self.te,1)["$=="](self.newline_s),nl_emitted=!1,dots_te=$truthy(followed_by_nl)?$rb_minus(self.te,1):self.te,$truthy($rb_ge(self.version,30))?$truthy(self.lambda_stack["$any?"]())&&$eqeq($rb_plus(self.lambda_stack.$last(),1),self.paren_nest)?self.$emit("tDOT3","...".$freeze(),self.ts,dots_te):(self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te),$truthy($rb_ge(self.version,31))&&$truthy(followed_by_nl)&&$truthy(self.context.$in_argdef())&&(self.$emit("tNL",$rb_minus(self.te,1),self.te),nl_emitted=!0)):$truthy($rb_ge(self.version,27))?self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te):self.$emit("tDOT3","...".$freeze(),self.ts,dots_te),$truthy(followed_by_nl)&&$not(nl_emitted)&&(p=$rb_minus(p,1)),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(307,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(317,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(319,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs_before_block_comment=self.cs,self.cs=186,_goto_level=20;continue}if($eqeqeq(322,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(54,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("fatal","string_eof",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else if($eqeqeq(73,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(74,$ret_or_1)){p=$rb_minus(self.te,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(48,$ret_or_1)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(53,$ret_or_1))p=$rb_minus(self.te,1);else{if($eqeqeq(68,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(51,$ret_or_1)){if($eqeqeq(99,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(106,$ret_or_2))p=$rb_minus(self.te,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(117,$ret_or_2)){if(p=$rb_minus(self.te,1),$truthy($rb_ge(self.version,27))){self.$emit("tPIPE",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}p=$rb_minus(p,2),self.cs=810,_goto_level=20;continue}if($eqeqeq(121,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(122,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm),p=$rb_minus(tm,1),self.cs=539,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(123,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(127,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(128,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(132,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}}}else{if($eqeqeq(395,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(396,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(397,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(401,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(77,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(405,$ret_or_1)){self.te=$rb_plus(p,1),self.cs=self.$push_literal(self.$tok(),self.$tok(),self.ts),_goto_level=20;continue}if($eqeqeq(404,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(403,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(407,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(406,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(76,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(440,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tLAMBDA","->".$freeze(),self.ts,$rb_plus(self.ts,2)),self.lambda_stack.$push(self.paren_nest),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(86,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(415,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.$tok(),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts,nil,!1,!1,!0),_goto_level=20;continue}if($eqeqeq(79,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(436,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=473,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(489,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(429,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(434,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tOP_ASGN",self.$tok(self.ts,$rb_minus(self.te,1))),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(420,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tEH","?".$freeze()),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(417,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(419,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tSEMI",";".$freeze()),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(494,$ret_or_1))self.te=$rb_plus(p,1),self.$diagnostic("error","bare_backslash",nil,self.$range(self.ts,$rb_plus(self.ts,1))),p=$rb_minus(p,1);else if($eqeqeq(414,$ret_or_1))self.te=$rb_plus(p,1),self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,!1))}));else{if($eqeqeq(413,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(505,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("KEYWORDS")),self.cs=352,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(503,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(502,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("KEYWORDS")),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(444,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("error","no_dot_digit_literal");else{if($eqeqeq(491,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(433,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(441,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=473,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(497,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(439,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(435,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(428,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(442,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(426,$ret_or_1))self.te=p,p=$rb_minus(p,1);else if($eqeqeq(432,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,!1))}));else{if($eqeqeq(84,$ret_or_1)){p=$rb_minus(self.te,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(80,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("error","no_dot_digit_literal");else{if($eqeqeq(83,$ret_or_1)){p=$rb_minus(self.te,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(78,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,!1))}));else if($eqeqeq(81,$ret_or_1)){if($eqeqeq(145,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLAMBEG","{".$freeze()):self.$emit("kDO_LAMBDA","do".$freeze())):$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLCURLY","{".$freeze()):self.$emit_do(),$eqeq(self.$tok(),"{".$freeze())&&(self.paren_nest=$rb_plus(self.paren_nest,1)),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(146,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=352,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(147,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(148,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(149,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(150,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=539,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(151,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),$truthy(self["$version?"](18))&&$eqeq(self.$tok(),"not".$freeze())){self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(152,$ret_or_2)){p=$rb_minus(self.te,1),$truthy(self["$version?"](18))?(self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))||(self.cs=self.$arg_or_cmdarg(cmd_state))):self.$emit("k__ENCODING__","__ENCODING__".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(153,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(154,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(156,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",self.$tok(self.ts,$rb_minus(self.te,1)).$to_i(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else if($eqeqeq(157,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$tok(self.ts,$rb_minus(self.te,1)).$to_f(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{if($eqeqeq(158,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(160,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(164,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(165,$ret_or_2)){p=$rb_minus(self.te,1),$eqeq(tm,self.te)?self.$emit("tFID"):(self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1)),self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(167,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(168,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}}}else{if($eqeqeq(516,$ret_or_1)){if(self.te=$rb_plus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),$truthy($rb_lt(self.version,27))){p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}self.$emit("tBDOT3"),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(95,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(tm,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(510,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(513,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),$truthy($rb_lt(self.version,27))){self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(515,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),$truthy($rb_lt(self.version,27))){p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}self.$emit("tBDOT2"),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(514,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(tm,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(512,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(90,$ret_or_1)){if(p=$rb_minus(self.te,1),$truthy($rb_lt(self.version,27))){self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(87,$ret_or_1)){p=$rb_minus(self.te,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(91,$ret_or_1)){if($eqeqeq(181,$ret_or_2=self.act)){if(p=$rb_minus(self.te,1),$truthy($rb_lt(self.version,27))){self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}}else if($eqeqeq(185,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(519,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_comment(self.eq_begin_s,self.te),self.cs=self.cs_before_block_comment,_goto_level=20;continue}if($eqeqeq(518,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","embedded_document",nil,self.$range(self.eq_begin_s,$rb_plus(self.eq_begin_s,"=begin".$length())));else{if($eqeqeq(106,$ret_or_1)){self.te=$rb_plus(p,1),self.eq_begin_s=self.ts,self.cs=998,_goto_level=20;continue}if($eqeqeq(2,$ret_or_1))self.te=$rb_plus(p,1),p=$rb_minus(pe,3);else{if($eqeqeq(98,$ret_or_1)){self.te=$rb_plus(p,1),cmd_state=!0,p=$rb_minus(p,1),self.cs=802,_goto_level=20;continue}if($eqeqeq(99,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(100,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(105,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.eq_begin_s=self.ts,self.cs=998,_goto_level=20;continue}if($eqeqeq(104,$ret_or_1)){self.te=p,p=$rb_minus(p,1),cmd_state=!0,p=$rb_minus(p,1),self.cs=802,_goto_level=20;continue}if($eqeqeq(1,$ret_or_1)){p=$rb_minus(self.te,1),cmd_state=!0,p=$rb_minus(p,1),self.cs=802,_goto_level=20;continue}if($eqeqeq(67,$ret_or_1))self.newline_s=p,self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p);else if($eqeqeq(110,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(143,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(174,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(180,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(186,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(193,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(196,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(204,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else{if($eqeqeq(275,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(266,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(tm,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(258,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(358,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),escape=$hash2([" ","\r","\n","\t","\v","\f"],{" ":"\\s","\r":"\\r","\n":"\\n","\t":"\\t","\v":"\\v","\f":"\\f"})["$[]"](self.source_buffer.$slice($rb_plus(self.ts,1))),self.$diagnostic("warning","invalid_escape_use",$hash2(["escape"],{escape:escape}),self.$range()),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(333,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),followed_by_nl=$rb_minus(self.te,1)["$=="](self.newline_s),nl_emitted=!1,dots_te=$truthy(followed_by_nl)?$rb_minus(self.te,1):self.te,$truthy($rb_ge(self.version,30))?$truthy(self.lambda_stack["$any?"]())&&$eqeq($rb_plus(self.lambda_stack.$last(),1),self.paren_nest)?self.$emit("tDOT3","...".$freeze(),self.ts,dots_te):(self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te),$truthy($rb_ge(self.version,31))&&$truthy(followed_by_nl)&&$truthy(self.context.$in_argdef())&&(self.$emit("tNL",$rb_minus(self.te,1),self.te),nl_emitted=!0)):$truthy($rb_ge(self.version,27))?self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te):self.$emit("tDOT3","...".$freeze(),self.ts,dots_te),$truthy(followed_by_nl)&&$not(nl_emitted)&&(p=$rb_minus(p,1)),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(321,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs_before_block_comment=self.cs,self.cs=186,_goto_level=20;continue}if($eqeqeq(443,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),$eqeq(self.paren_nest,0)&&self.$diagnostic("warning","triple_dot_at_eol",nil,self.$range(self.ts,$rb_minus(self.te,1))),self.$emit("tDOT3","...".$freeze(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(520,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),self.$emit_comment(self.eq_begin_s,self.te),self.cs=self.cs_before_block_comment,_goto_level=20;continue}if($eqeqeq(517,$ret_or_1))self.newline_s=p,self.te=$rb_plus(p,1);else{if($eqeqeq(107,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),self.eq_begin_s=self.ts,self.cs=998,_goto_level=20;continue}if($eqeqeq(3,$ret_or_1))self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(pe,3);else{if($eqeqeq(465,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$3(chars){var self=null==$$3.$$s?this:$$3.$$s;return null==chars&&(chars=nil),self.$emit("tRATIONAL",self.$Rational(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(463,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$4(chars){var self=null==$$4.$$s?this:$$4.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(468,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$5(chars){var self=null==$$5.$$s?this:$$5.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,self.$Rational(chars)))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(466,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$6(chars){var self=null==$$6.$$s?this:$$6.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,2)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(464,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$7(chars){var self=null==$$7.$$s?this:$$7.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,2)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(467,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$8(chars){var self=null==$$8.$$s?this:$$8.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,6)),p=$rb_minus(p,6)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(456,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$9(chars){var self=null==$$9.$$s?this:$$9.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,self.$Float(chars)))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(457,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$10(chars){var self=null==$$10.$$s?this:$$10.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars),self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,2)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(458,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$11(chars){var self=null==$$11.$$s?this:$$11.$$s;return null==chars&&(chars=nil),self.$emit("tRATIONAL",self.$Rational(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(460,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$12(chars){var self=null==$$12.$$s?this:$$12.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,self.$Rational(chars)))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(459,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$13(chars){var self=null==$$13.$$s?this:$$13.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars),self.ts,$rb_minus(self.te,6)),p=$rb_minus(p,6)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(137,$ret_or_1))self.escape="",codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1)),codepoint_s=$rb_plus(self.escape_s,2),$truthy($rb_lt(self.version,24))&&(($truthy(codepoints["$start_with?"](" "))||$truthy(codepoints["$start_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3))),$truthy(spaces_p=codepoints.$index(/[ \t]{2}/))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2))),($truthy(codepoints["$end_with?"](" "))||$truthy(codepoints["$end_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))),function(){var $brk=Opal.new_brk();try{$send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],(function $$14($mlhs_tmp1){var $c,self=null==$$14.$$s?this:$$14.$$s,codepoint_str=nil,spaces=nil,codepoint=nil;return null==self.escape&&(self.escape=nil),null==$mlhs_tmp1&&($mlhs_tmp1=nil),codepoint_str=null==($c=$to_ary($mlhs_tmp1))[0]?nil:$c[0],spaces=null==$c[1]?nil:$c[1],$truthy(spaces)?codepoint_s=$rb_plus(codepoint_s,spaces.$length()):(codepoint=codepoint_str.$to_i(16),$truthy($rb_ge(codepoint,1114112))&&(self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length()))),Opal.brk(nil,$brk)),self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$("Encoding"),"UTF_8"))),codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length()))}),{$$arity:1,$$s:self,$$brk:$brk,$$has_top_level_mlhs_arg:!0})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(168,$ret_or_1))self.escape="",codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1)),codepoint_s=$rb_plus(self.escape_s,2),$truthy($rb_lt(self.version,24))&&(($truthy(codepoints["$start_with?"](" "))||$truthy(codepoints["$start_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3))),$truthy(spaces_p=codepoints.$index(/[ \t]{2}/))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2))),($truthy(codepoints["$end_with?"](" "))||$truthy(codepoints["$end_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))),function(){var $brk=Opal.new_brk();try{$send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],(function $$15($mlhs_tmp1){var $c,self=null==$$15.$$s?this:$$15.$$s,codepoint_str=nil,spaces=nil,codepoint=nil;return null==self.escape&&(self.escape=nil),null==$mlhs_tmp1&&($mlhs_tmp1=nil),codepoint_str=null==($c=$to_ary($mlhs_tmp1))[0]?nil:$c[0],spaces=null==$c[1]?nil:$c[1],$truthy(spaces)?codepoint_s=$rb_plus(codepoint_s,spaces.$length()):(codepoint=codepoint_str.$to_i(16),$truthy($rb_ge(codepoint,1114112))&&(self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length()))),Opal.brk(nil,$brk)),self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$("Encoding"),"UTF_8"))),codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length()))}),{$$arity:1,$$s:self,$$brk:$brk,$$has_top_level_mlhs_arg:!0})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(382,$ret_or_1)){self.escape="",codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1)),codepoint_s=$rb_plus(self.escape_s,2),$truthy($rb_lt(self.version,24))&&(($truthy(codepoints["$start_with?"](" "))||$truthy(codepoints["$start_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3))),$truthy(spaces_p=codepoints.$index(/[ \t]{2}/))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2))),($truthy(codepoints["$end_with?"](" "))||$truthy(codepoints["$end_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))),function(){var $brk=Opal.new_brk();try{$send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],(function $$16($mlhs_tmp1){var $c,self=null==$$16.$$s?this:$$16.$$s,codepoint_str=nil,spaces=nil,codepoint=nil;return null==self.escape&&(self.escape=nil),null==$mlhs_tmp1&&($mlhs_tmp1=nil),codepoint_str=null==($c=$to_ary($mlhs_tmp1))[0]?nil:$c[0],spaces=null==$c[1]?nil:$c[1],$truthy(spaces)?codepoint_s=$rb_plus(codepoint_s,spaces.$length()):(codepoint=codepoint_str.$to_i(16),$truthy($rb_ge(codepoint,1114112))&&(self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length()))),Opal.brk(nil,$brk)),self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$("Encoding"),"UTF_8"))),codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length()))}),{$$arity:1,$$s:self,$$brk:$brk,$$has_top_level_mlhs_arg:!0})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(118,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(149,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(363,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(121,$ret_or_1))self.$diagnostic("fatal","invalid_escape"),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(152,$ret_or_1))self.$diagnostic("fatal","invalid_escape"),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(366,$ret_or_1)){self.$diagnostic("fatal","invalid_escape"),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(123,$ret_or_1))self.escape="",self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(154,$ret_or_1))self.escape="",self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(368,$ret_or_1)){self.escape="",self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(120,$ret_or_1))self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(151,$ret_or_1))self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(365,$ret_or_1)){self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(140,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(171,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(385,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(139,$ret_or_1))self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(170,$ret_or_1))self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(384,$ret_or_1)){self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2))),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(134,$ret_or_1))self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$("Encoding"),"UTF_8")),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(165,$ret_or_1))self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$("Encoding"),"UTF_8")),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(379,$ret_or_1)){self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$("Encoding"),"UTF_8")),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(133,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(164,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(378,$ret_or_1)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(138,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(169,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(383,$ret_or_1)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(135,$ret_or_1))self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(166,$ret_or_1))self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(380,$ret_or_1)){self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(119,$ret_or_1))self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(150,$ret_or_1))self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(364,$ret_or_1)){self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(177,$ret_or_1))self.escape_s=p,self.escape=nil,self.te=$rb_plus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(182,$ret_or_1))self.escape_s=p,self.escape=nil,self.te=$rb_plus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(58,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.newline_s=p;else if($eqeqeq(31,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p;else if($eqeqeq(33,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p;else if($eqeqeq(35,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p;else if($eqeqeq(219,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(238,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(246,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(34,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(277,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(269,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(288,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(300,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(296,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(59,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=$rb_plus(p,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(50,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=$rb_plus(p,1),self.$emit("tIDENTIFIER",ident_tok,ident_ts,ident_te),p=$rb_minus(ident_te,1),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](ident_tok))&&$truthy($rb_lt(self.version,25))?self.cs=465:self.cs=525,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(318,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(402,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(398,$ret_or_1)){if($truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),$truthy(self.context.$in_kwarg())){p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}self.cs=186,_goto_level=20;continue}if($eqeqeq(411,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(408,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),self.cs=186,_goto_level=20;continue}if($eqeqeq(495,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(427,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),self.cs=990,_goto_level=20;continue}if($eqeqeq(101,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(268,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),self.$emit("tLAMBEG","{".$freeze(),$rb_minus(self.te,1),self.te)):self.$emit("tLCURLY","{".$freeze(),$rb_minus(self.te,1),self.te),self.command_start=!0,self.paren_nest=$rb_plus(self.paren_nest,1),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(290,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),self.$emit("tLAMBEG","{".$freeze())):self.$emit("tLBRACE_ARG","{".$freeze()),self.paren_nest=$rb_plus(self.paren_nest,1),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(393,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),self.command_start=!0,self.$emit("tLAMBEG","{".$freeze())):self.$emit("tLBRACE","{".$freeze()),self.paren_nest=$rb_plus(self.paren_nest,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(508,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLAMBEG","{".$freeze()):self.$emit("kDO_LAMBDA","do".$freeze())):$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLCURLY","{".$freeze()):self.$emit_do(),$eqeq(self.$tok(),"{".$freeze())&&(self.paren_nest=$rb_plus(self.paren_nest,1)),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(509,$ret_or_1)){if(current_literal=self.$literal(),$truthy(current_literal)&&$truthy(current_literal.$end_interp_brace_and_try_closing())){$truthy(self["$version?"](18,19))?(self.$emit("tRCURLY","}".$freeze(),$rb_minus(p,1),p),self.cond.$lexpop(),self.cmdarg.$lexpop()):self.$emit("tSTRING_DEND","}".$freeze(),$rb_minus(p,1),p),$truthy(current_literal.$saved_herebody_s())&&(self.herebody_s=current_literal.$saved_herebody_s()),p=$rb_minus(p,1),self.cs=self.$next_state_for_literal(current_literal),p=$rb_plus(p,1),_goto_level=40;continue}self.paren_nest=$rb_minus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),$truthy($rb_lt(self.version,24))?(self.cond.$lexpop(),self.cmdarg.$lexpop()):(self.cond.$pop(),self.cmdarg.$pop()),($eqeq(self.$tok(),"}".$freeze())||$eqeq(self.$tok(),"]".$freeze()))&&($truthy($rb_ge(self.version,25))?self.cs=810:self.cs=531),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(61,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p);else if($eqeqeq(65,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.newline_s=p;else if($eqeqeq(222,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(237,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(249,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(271,$ret_or_1)){self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(286,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(298,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(324,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(400,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(410,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(431,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(103,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(243,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("tFID",self.$tok(self.ts,tm),self.ts,tm),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_minus(tm,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(338,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(309,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(424,$ret_or_1)){if(tm=p,$eqeqeq(145,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLAMBEG","{".$freeze()):self.$emit("kDO_LAMBDA","do".$freeze())):$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLCURLY","{".$freeze()):self.$emit_do(),$eqeq(self.$tok(),"{".$freeze())&&(self.paren_nest=$rb_plus(self.paren_nest,1)),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(146,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=352,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(147,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(148,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(149,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(150,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=539,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(151,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),$truthy(self["$version?"](18))&&$eqeq(self.$tok(),"not".$freeze())){self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(152,$ret_or_2)){p=$rb_minus(self.te,1),$truthy(self["$version?"](18))?(self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))||(self.cs=self.$arg_or_cmdarg(cmd_state))):self.$emit("k__ENCODING__","__ENCODING__".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(153,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(154,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(156,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",self.$tok(self.ts,$rb_minus(self.te,1)).$to_i(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else if($eqeqeq(157,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$tok(self.ts,$rb_minus(self.te,1)).$to_f(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{if($eqeqeq(158,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(160,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(164,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(165,$ret_or_2)){p=$rb_minus(self.te,1),$eqeq(tm,self.te)?self.$emit("tFID"):(self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1)),self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(167,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(168,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}}}else{if($eqeqeq(244,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tFID",self.$tok(self.ts,tm),self.ts,tm),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_minus(tm,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(339,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(311,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(425,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),$eqeq(tm,self.te)?self.$emit("tFID"):(self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1)),self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(340,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(312,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(341,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(313,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(345,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(316,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(344,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(315,$ret_or_1)){if(tm=$rb_minus(p,2),$eqeqeq(99,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(106,$ret_or_2))p=$rb_minus(self.te,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(117,$ret_or_2)){if(p=$rb_minus(self.te,1),$truthy($rb_ge(self.version,27))){self.$emit("tPIPE",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}p=$rb_minus(p,2),self.cs=810,_goto_level=20;continue}if($eqeqeq(121,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(122,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm),p=$rb_minus(tm,1),self.cs=539,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(123,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(127,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(128,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(132,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}}}else{if($eqeqeq(342,$ret_or_1)){tm=$rb_minus(p,3),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(314,$ret_or_1)){tm=$rb_minus(p,3),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(343,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(490,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(267,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit("tLBRACK","[".$freeze(),$rb_minus(self.te,1),self.te),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(386,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit("tLBRACK","[".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(493,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit("tLBRACK2","[".$freeze()),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(496,$ret_or_1)){self.paren_nest=$rb_minus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),$truthy($rb_lt(self.version,24))?(self.cond.$lexpop(),self.cmdarg.$lexpop()):(self.cond.$pop(),self.cmdarg.$pop()),($eqeq(self.$tok(),"}".$freeze())||$eqeq(self.$tok(),"]".$freeze()))&&($truthy($rb_ge(self.version,25))?self.cs=810:self.cs=531),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(259,$ret_or_1)){if(self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),$truthy(self["$version?"](18))){self.$emit("tLPAREN2","(".$freeze(),$rb_minus(self.te,1),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}self.$emit("tLPAREN_ARG","(".$freeze(),$rb_minus(self.te,1),self.te),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(272,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit("tLPAREN2","(".$freeze()),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(280,$ret_or_1)){if(self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit("tLPAREN_ARG","(".$freeze(),$rb_minus(self.te,1),self.te),$truthy(self["$version?"](18))){self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(328,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit("tLPAREN","(".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(437,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(438,$ret_or_1)){self.paren_nest=$rb_minus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),$truthy($rb_lt(self.version,24))?(self.cond.$lexpop(),self.cmdarg.$lexpop()):(self.cond.$pop(),self.cmdarg.$pop()),($eqeq(self.$tok(),"}".$freeze())||$eqeq(self.$tok(),"]".$freeze()))&&($truthy($rb_ge(self.version,25))?self.cs=810:self.cs=531),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(72,$ret_or_1))heredoc_e=p,self.newline_s=p;else if($eqeqeq(353,$ret_or_1)){if(new_herebody_s=p,self.te=p,p=$rb_minus(p,1),self.$tok(self.ts,heredoc_e)["$=~"](/^<<(-?)(~?)(["'`]?)(.*)\3$/m),indent=$truthy($ret_or_2=(($b=$gvars["~"])===nil?nil:$b["$[]"](1))["$empty?"]()["$!"]())?$ret_or_2:(($b=$gvars["~"])===nil?nil:$b["$[]"](2))["$empty?"]()["$!"](),dedent_body=(($b=$gvars["~"])===nil?nil:$b["$[]"](2))["$empty?"]()["$!"](),type=$truthy((($b=$gvars["~"])===nil?nil:$b["$[]"](3))["$empty?"]())?'<<"'.$freeze():$rb_plus("<<".$freeze(),($b=$gvars["~"])===nil?nil:$b["$[]"](3)),delimiter=($b=$gvars["~"])===nil?nil:$b["$[]"](4),$truthy($rb_ge(self.version,27))?($truthy($rb_gt(delimiter.$count("\n"),0))||$truthy($rb_gt(delimiter.$count("\r"),0)))&&self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1))):$truthy($rb_ge(self.version,24))&&$truthy($rb_gt(delimiter.$count("\n"),0))&&($truthy(delimiter["$end_with?"]("\n"))?(self.$diagnostic("warning","heredoc_id_ends_with_nl",nil,self.$range(self.ts,$rb_plus(self.ts,1))),delimiter=delimiter.$rstrip()):self.$diagnostic("fatal","heredoc_id_has_newline",nil,self.$range(self.ts,$rb_plus(self.ts,1)))),$truthy(dedent_body)&&$truthy(self["$version?"](18,19,20,21,22))){self.$emit("tLSHFT","<<".$freeze(),self.ts,$rb_plus(self.ts,2)),p=$rb_plus(self.ts,1),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$push_literal(type,delimiter,self.ts,heredoc_e,indent,dedent_body),self.herebody_s=$truthy($ret_or_2=self.herebody_s)?$ret_or_2:new_herebody_s,p=$rb_minus(self.herebody_s,1)}else{if($eqeqeq(348,$ret_or_1)){tm=$rb_minus(p,1),diag_msg="ivar_name",self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te)):(self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=self.ts),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(351,$ret_or_1)){tm=$rb_minus(p,2),diag_msg="cvar_name",self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te)):(self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=self.ts),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(359,$ret_or_1)){self.escape=nil,self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(389,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm),p=$rb_minus(tm,1),self.cs=539,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(480,$ret_or_1))self.num_base=16,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(474,$ret_or_1))self.num_base=10,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(477,$ret_or_1))self.num_base=8,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(471,$ret_or_1))self.num_base=2,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(486,$ret_or_1))self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p;else if($eqeqeq(449,$ret_or_1))self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p;else if($eqeqeq(487,$ret_or_1))self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$17(chars){return null==chars&&(chars=nil),(null==$$17.$$s?this:$$17.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self});else if($eqeqeq(8,$ret_or_1))self.te=$rb_plus(p,1),self.newline_s=p;else if($eqeqeq(453,$ret_or_1))self.te=$rb_plus(p,1),self.num_suffix_s=p;else if($eqeqeq(228,$ret_or_1))self.te=$rb_plus(p,1),self.act=43;else if($eqeqeq(215,$ret_or_1))self.te=$rb_plus(p,1),self.act=44;else if($eqeqeq(211,$ret_or_1))self.te=$rb_plus(p,1),self.act=45;else if($eqeqeq(27,$ret_or_1))self.te=$rb_plus(p,1),self.act=72;else if($eqeqeq(261,$ret_or_1))self.te=$rb_plus(p,1),self.act=73;else if($eqeqeq(28,$ret_or_1))self.te=$rb_plus(p,1),self.act=78;else if($eqeqeq(254,$ret_or_1))self.te=$rb_plus(p,1),self.act=79;else if($eqeqeq(281,$ret_or_1))self.te=$rb_plus(p,1),self.act=85;else if($eqeqeq(46,$ret_or_1))self.te=$rb_plus(p,1),self.act=86;else if($eqeqeq(302,$ret_or_1))self.te=$rb_plus(p,1),self.act=93;else if($eqeqeq(291,$ret_or_1))self.te=$rb_plus(p,1),self.act=94;else if($eqeqeq(70,$ret_or_1))self.te=$rb_plus(p,1),self.act=106;else if($eqeqeq(394,$ret_or_1))self.te=$rb_plus(p,1),self.act=117;else if($eqeqeq(305,$ret_or_1))self.te=$rb_plus(p,1),self.act=121;else if($eqeqeq(388,$ret_or_1))self.te=$rb_plus(p,1),self.act=122;else if($eqeqeq(387,$ret_or_1))self.te=$rb_plus(p,1),self.act=123;else if($eqeqeq(75,$ret_or_1))self.te=$rb_plus(p,1),self.act=127;else if($eqeqeq(303,$ret_or_1))self.te=$rb_plus(p,1),self.act=128;else if($eqeqeq(306,$ret_or_1))self.te=$rb_plus(p,1),self.act=132;else if($eqeqeq(504,$ret_or_1))self.te=$rb_plus(p,1),self.act=145;else if($eqeqeq(499,$ret_or_1))self.te=$rb_plus(p,1),self.act=146;else if($eqeqeq(507,$ret_or_1))self.te=$rb_plus(p,1),self.act=148;else if($eqeqeq(500,$ret_or_1))self.te=$rb_plus(p,1),self.act=149;else if($eqeqeq(501,$ret_or_1))self.te=$rb_plus(p,1),self.act=150;else if($eqeqeq(506,$ret_or_1))self.te=$rb_plus(p,1),self.act=151;else if($eqeqeq(498,$ret_or_1))self.te=$rb_plus(p,1),self.act=152;else if($eqeqeq(492,$ret_or_1))self.te=$rb_plus(p,1),self.act=153;else if($eqeqeq(418,$ret_or_1))self.te=$rb_plus(p,1),self.act=154;else if($eqeqeq(451,$ret_or_1))self.te=$rb_plus(p,1),self.act=157;else if($eqeqeq(82,$ret_or_1))self.te=$rb_plus(p,1),self.act=158;else if($eqeqeq(421,$ret_or_1))self.te=$rb_plus(p,1),self.act=160;else if($eqeqeq(412,$ret_or_1))self.te=$rb_plus(p,1),self.act=164;else if($eqeqeq(423,$ret_or_1))self.te=$rb_plus(p,1),self.act=165;else if($eqeqeq(416,$ret_or_1))self.te=$rb_plus(p,1),self.act=167;else if($eqeqeq(422,$ret_or_1))self.te=$rb_plus(p,1),self.act=168;else if($eqeqeq(88,$ret_or_1))self.te=$rb_plus(p,1),self.act=181;else if($eqeqeq(511,$ret_or_1))self.te=$rb_plus(p,1),self.act=185;else if($eqeqeq(183,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string()),self.escape_s=p,self.escape=nil}else if($eqeqeq(124,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(155,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(369,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(131,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(162,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(376,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(122,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(153,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(367,$ret_or_1)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(130,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(161,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(375,$ret_or_1)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(126,$ret_or_1))self.escape="",self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(157,$ret_or_1))self.escape="",self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(371,$ret_or_1)){self.escape="",self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(129,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(160,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(374,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(136,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(167,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(381,$ret_or_1)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(116,$ret_or_1))self.escape_s=p,self.escape=nil,self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(148,$ret_or_1))self.escape_s=p,self.escape=nil,self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(362,$ret_or_1)){self.escape_s=p,self.escape=nil,self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(62,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.newline_s=p;else if($eqeqeq(221,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(236,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(248,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(270,$ret_or_1)){self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(285,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(297,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(323,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(399,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(409,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(430,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(102,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(482,$ret_or_1))self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$18(chars){return null==chars&&(chars=nil),(null==$$18.$$s?this:$$18.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self});else if($eqeqeq(446,$ret_or_1))self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$19(chars){return null==chars&&(chars=nil),(null==$$19.$$s?this:$$19.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self});else{if($eqeqeq(461,$ret_or_1)){self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$20(chars){return null==chars&&(chars=nil),(null==$$20.$$s?this:$$20.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(454,$ret_or_1)){self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$21(chars){var self=null==$$21.$$s?this:$$21.$$s;return null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(450,$ret_or_1)){self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$22(chars){var self=null==$$22.$$s?this:$$22.$$s;return null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(276,$ret_or_1))self.te=$rb_plus(p,1),self.newline_s=p,self.act=79;else if($eqeqeq(36,$ret_or_1))self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.act=78;else if($eqeqeq(47,$ret_or_1))self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.act=86;else if($eqeqeq(94,$ret_or_1))self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.act=181;else if($eqeqeq(66,$ret_or_1))self.te=$rb_plus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=99;else if($eqeqeq(85,$ret_or_1))self.te=$rb_plus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=147;else if($eqeqeq(93,$ret_or_1))self.te=$rb_plus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=181;else if($eqeqeq(38,$ret_or_1))self.te=$rb_plus(p,1),tm=p,self.act=73;else if($eqeqeq(391,$ret_or_1))self.te=$rb_plus(p,1),tm=p,self.act=127;else if($eqeqeq(390,$ret_or_1))self.te=$rb_plus(p,1),tm=p,self.act=128;else if($eqeqeq(483,$ret_or_1))self.te=$rb_plus(p,1),self.num_base=10,self.num_digits_s=self.ts,self.act=154;else if($eqeqeq(127,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(158,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(372,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(125,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(156,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(370,$ret_or_1)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(132,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(163,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(377,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(128,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(159,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(373,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(478,$ret_or_1)){self.num_base=16,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$23(chars){return null==chars&&(chars=nil),(null==$$23.$$s?this:$$23.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(472,$ret_or_1)){self.num_base=10,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$24(chars){return null==chars&&(chars=nil),(null==$$24.$$s?this:$$24.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(475,$ret_or_1)){self.num_base=8,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$25(chars){return null==chars&&(chars=nil),(null==$$25.$$s?this:$$25.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(469,$ret_or_1)){self.num_base=2,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$26(chars){return null==chars&&(chars=nil),(null==$$26.$$s?this:$$26.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(481,$ret_or_1)){self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$27(chars){return null==chars&&(chars=nil),(null==$$27.$$s?this:$$27.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(445,$ret_or_1)){self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$28(chars){return null==chars&&(chars=nil),(null==$$28.$$s?this:$$28.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}$eqeqeq(32,$ret_or_1)?(self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p,self.act=73):$eqeqeq(63,$ret_or_1)?(self.te=$rb_plus(p,1),self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=99):$eqeqeq(92,$ret_or_1)?(self.te=$rb_plus(p,1),self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=181):$eqeqeq(488,$ret_or_1)?(self.te=$rb_plus(p,1),self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$29(chars){return null==chars&&(chars=nil),(null==$$29.$$s?this:$$29.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.act=156):$eqeqeq(484,$ret_or_1)?(self.te=$rb_plus(p,1),self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$30(chars){return null==chars&&(chars=nil),(null==$$30.$$s?this:$$30.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.act=156):$eqeqeq(448,$ret_or_1)&&(self.te=$rb_plus(p,1),self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$31(chars){return null==chars&&(chars=nil),(null==$$31.$$s?this:$$31.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.act=156)}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}if($truthy($rb_le(_goto_level,20))){if($eqeqeq(96,$ret_or_1=_lex_to_state_actions["$[]"](self.cs))&&(self.ts=nil),$eqeq(self.cs,0)){_goto_level=40;continue}if(p=$rb_plus(p,1),$neqeq(p,pe)){_goto_level=10;continue}}if($truthy($rb_le(_goto_level,30))&&$eqeq(p,eof)&&$truthy($rb_gt(_lex_eof_trans["$[]"](self.cs),0)))_trans=$rb_minus(_lex_eof_trans["$[]"](self.cs),1),_goto_level=15;else if($truthy($rb_le(_goto_level,40)))break}return $truthy(!1),self.p=p,$truthy(self.token_queue["$any?"]())?self.token_queue.$shift():$eqeq(self.cs,klass.$lex_error())?[!1,["$error".$freeze(),self.$range($rb_minus(p,1),p)]]:(eof=self.source_pts.$size(),[!1,["$eof".$freeze(),self.$range(eof,eof)]])}),0),self.$protected(),$def(self,"$eof_codepoint?",(function(point){return[4,26,0]["$include?"](point)}),1),$def(self,"$version?",(function($a){var self=this;return Opal.slice.call(arguments)["$include?"](self.version)}),-1),$def(self,"$stack_pop",(function(){return this.top=$rb_minus(this.top,1),this.stack["$[]"](this.top)}),0),$def(self,"$encode_escape",(function(ord){return ord.$chr().$force_encoding(this.source_buffer.$source().$encoding())}),1),$def(self,"$tok",(function(s,e){return null==s&&(s=this.ts),null==e&&(e=this.te),this.source_buffer.$slice(Opal.Range.$new(s,e,!0))}),-1),$def(self,"$range",(function(s,e){return null==s&&(s=this.ts),null==e&&(e=this.te),$$$($$$($$("Parser"),"Source"),"Range").$new(this.source_buffer,s,e)}),-1),$def(self,"$emit",(function(type,value,s,e){var token;return null==value&&(value=this.$tok()),null==s&&(s=this.ts),null==e&&(e=this.te),token=[type,[value,this.$range(s,e)]],this.token_queue.$push(token),$truthy(this.tokens)&&this.tokens.$push(token),token}),-2),$def(self,"$emit_table",(function(table,s,e){var value;return null==s&&(s=this.ts),null==e&&(e=this.te),value=this.$tok(s,e),this.$emit(table["$[]"](value),value,s,e)}),-2),$def(self,"$emit_do",(function(do_block){return null==do_block&&(do_block=!1),$truthy(this.cond["$active?"]())?this.$emit("kDO_COND","do".$freeze()):$truthy(this.cmdarg["$active?"]())||$truthy(do_block)?this.$emit("kDO_BLOCK","do".$freeze()):this.$emit("kDO","do".$freeze())}),-1),$def(self,"$arg_or_cmdarg",(function(cmd_state){return $truthy(cmd_state)?this.$class().$lex_en_expr_cmdarg():this.$class().$lex_en_expr_arg()}),1),$def(self,"$emit_comment",(function(s,e){return null==s&&(s=this.ts),null==e&&(e=this.te),$truthy(this.comments)&&this.comments.$push($$$($$$($$("Parser"),"Source"),"Comment").$new(this.$range(s,e))),$truthy(this.tokens)&&this.tokens.$push(["tCOMMENT",[this.$tok(s,e),this.$range(s,e)]]),nil}),-1),$def(self,"$diagnostic",(function(type,reason,arguments$,location,highlights){return null==arguments$&&(arguments$=nil),null==location&&(location=this.$range()),null==highlights&&(highlights=[]),this.diagnostics.$process($$$($$("Parser"),"Diagnostic").$new(type,reason,arguments$,location,highlights))}),-3),$def(self,"$push_literal",(function($a){var args,self=this,new_literal=nil;return args=Opal.slice.call(arguments),new_literal=$send($$("Literal"),"new",[self].concat($to_a(args))),self.literal_stack.$push(new_literal),self.$next_state_for_literal(new_literal)}),-1),$def(self,"$next_state_for_literal",(function(literal){return $truthy(literal["$words?"]())&&$truthy(literal["$backslash_delimited?"]())?$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_backslash_delimited_words():this.$class().$lex_en_plain_backslash_delimited_words():$truthy(literal["$words?"]())&&$not(literal["$backslash_delimited?"]())?$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_words():this.$class().$lex_en_plain_words():$not(literal["$words?"]())&&$truthy(literal["$backslash_delimited?"]())?$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_backslash_delimited():this.$class().$lex_en_plain_backslash_delimited():$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_string():this.$class().$lex_en_plain_string()}),1),$def(self,"$literal",(function(){return this.literal_stack.$last()}),0),$def(self,"$pop_literal",(function(){var old_literal=nil;return old_literal=this.literal_stack.$pop(),this.dedent_level=old_literal.$dedent_level(),$eqeq(old_literal.$type(),"tREGEXP_BEG")?this.$class().$lex_en_regexp_modifiers():this.$class().$lex_en_expr_end()}),0),$const_set($nesting[0],"PUNCTUATION",$hash2(["=","&","|","!","^","+","-","*","/","%","~",",",";",".","..","...","[","]","(",")","?",":","&&","||","-@","+@","~@","**","->","=~","!~","==","!=",">",">>",">=","<","<<","<=","=>","::","===","<=>","[]","[]=","{","}","`","!@","&."],{"=":"tEQL","&":"tAMPER2","|":"tPIPE","!":"tBANG","^":"tCARET","+":"tPLUS","-":"tMINUS","*":"tSTAR2","/":"tDIVIDE","%":"tPERCENT","~":"tTILDE",",":"tCOMMA",";":"tSEMI",".":"tDOT","..":"tDOT2","...":"tDOT3","[":"tLBRACK2","]":"tRBRACK","(":"tLPAREN2",")":"tRPAREN","?":"tEH",":":"tCOLON","&&":"tANDOP","||":"tOROP","-@":"tUMINUS","+@":"tUPLUS","~@":"tTILDE","**":"tPOW","->":"tLAMBDA","=~":"tMATCH","!~":"tNMATCH","==":"tEQ","!=":"tNEQ",">":"tGT",">>":"tRSHFT",">=":"tGEQ","<":"tLT","<<":"tLSHFT","<=":"tLEQ","=>":"tASSOC","::":"tCOLON2","===":"tEQQ","<=>":"tCMP","[]":"tAREF","[]=":"tASET","{":"tLCURLY","}":"tRCURLY","`":"tBACK_REF2","!@":"tBANG","&.":"tANDDOT"})),$const_set($nesting[0],"PUNCTUATION_BEGIN",$hash2(["&","*","**","+","-","::","(","{","["],{"&":"tAMPER","*":"tSTAR","**":"tDSTAR","+":"tUPLUS","-":"tUMINUS","::":"tCOLON3","(":"tLPAREN","{":"tLBRACE","[":"tLBRACK"})),$const_set($nesting[0],"KEYWORDS",$hash2(["if","unless","while","until","rescue","defined?","BEGIN","END"],{if:"kIF_MOD",unless:"kUNLESS_MOD",while:"kWHILE_MOD",until:"kUNTIL_MOD",rescue:"kRESCUE_MOD","defined?":"kDEFINED",BEGIN:"klBEGIN",END:"klEND"})),$const_set($nesting[0],"KEYWORDS_BEGIN",$hash2(["if","unless","while","until","rescue","defined?","BEGIN","END"],{if:"kIF",unless:"kUNLESS",while:"kWHILE",until:"kUNTIL",rescue:"kRESCUE","defined?":"kDEFINED",BEGIN:"klBEGIN",END:"klEND"})),$send(["class","module","def","undef","begin","end","then","elsif","else","ensure","case","when","for","break","next","redo","retry","in","do","return","yield","super","self","nil","true","false","and","or","not","alias","__FILE__","__LINE__","__ENCODING__"],"each",[],(function(keyword){return null==keyword&&(keyword=nil),$writer=[keyword,($writer=[keyword,"k"+keyword.$upcase()],$send($$("KEYWORDS"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])],$send($$("KEYWORDS_BEGIN"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1)}($$("Parser"),0,$nesting)},Opal.modules["parser/lexer/literal"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$hash2=Opal.hash2,$enc=Opal.enc,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$to_ary=Opal.to_ary,$def=Opal.def,$eqeq=Opal.eqeq,$rb_minus=Opal.rb_minus,$neqeq=Opal.neqeq,$not=Opal.not,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$rb_gt=Opal.rb_gt;return Opal.add_stubs("attr_reader,attr_accessor,coerce_encoding,include?,send,+,[],fetch,==,!,heredoc?,start_with?,freeze,clear_buffer,emit_start_tok,type,=~,words?,delimiter?,-,extend_space,!=,flush_string,emit,each_char,===,%,>,nil?,<<,empty?,extend_content,protected,lstrip,b,dup,force_encoding,encoding,source,source_buffer,length"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Literal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.lexer=$proto.start_tok=$proto.str_type=$proto.monolithic=$proto.interpolate=$proto.heredoc_e=$proto.dedent_body=$proto.end_delim=$proto.start_delim=$proto.nesting=$proto.label_allowed=$proto.buffer=$proto.str_s=$proto.interp_braces=$proto.buffer_s=$proto.buffer_e=$proto.space_emitted=$proto.indent=nil,$const_set($nesting[0],"DELIMITERS",$hash2(["(","[","{","<"],{"(":$enc(")","ASCII-8BIT"),"[":$enc("]","ASCII-8BIT"),"{":$enc("}","ASCII-8BIT"),"<":$enc(">","ASCII-8BIT")})),$const_set($nesting[0],"TYPES",$hash2(["'","<<'","%q",'"','<<"',"%","%Q","%w","%W","%i","%I",":'","%s",':"',"/","%r","%x","`","<<`"],{"'":["tSTRING_BEG",!1],"<<'":["tSTRING_BEG",!1],"%q":["tSTRING_BEG",!1],'"':["tSTRING_BEG",!0],'<<"':["tSTRING_BEG",!0],"%":["tSTRING_BEG",!0],"%Q":["tSTRING_BEG",!0],"%w":["tQWORDS_BEG",!1],"%W":["tWORDS_BEG",!0],"%i":["tQSYMBOLS_BEG",!1],"%I":["tSYMBOLS_BEG",!0],":'":["tSYMBEG",!1],"%s":["tSYMBEG",!1],':"':["tSYMBEG",!0],"/":["tREGEXP_BEG",!0],"%r":["tREGEXP_BEG",!0],"%x":["tXSTRING_BEG",!0],"`":["tXSTRING_BEG",!0],"<<`":["tXSTRING_BEG",!0]})),self.$attr_reader("heredoc_e","str_s","dedent_level"),self.$attr_accessor("saved_herebody_s"),$def(self,"$initialize",(function(lexer,str_type,delimiter,str_s,heredoc_e,indent,dedent_body,label_allowed){var $a,$b,$ret_or_1,$ret_or_2;return null==heredoc_e&&(heredoc_e=nil),null==indent&&(indent=!1),null==dedent_body&&(dedent_body=!1),null==label_allowed&&(label_allowed=!1),this.lexer=lexer,this.nesting=1,str_type=this.$coerce_encoding(str_type),delimiter=this.$coerce_encoding(delimiter),$truthy($$("TYPES")["$include?"](str_type))||lexer.$send("diagnostic","error","unexpected_percent_str",$hash2(["type"],{type:str_type}),this.lexer.$send("range",str_s,$rb_plus(str_s,2))),this.str_type=str_type,this.str_s=str_s,$b=$$("TYPES")["$[]"](str_type),$a=$to_ary($b),this.start_tok=null==$a[0]?nil:$a[0],this.interpolate=null==$a[1]?nil:$a[1],this.start_delim=$truthy($$("DELIMITERS")["$include?"](delimiter))?delimiter:nil,this.end_delim=$$("DELIMITERS").$fetch(delimiter,delimiter),this.heredoc_e=heredoc_e,this.indent=indent,this.label_allowed=label_allowed,this.dedent_body=dedent_body,this.dedent_level=nil,this.interp_braces=0,this.space_emitted=!0,this.monolithic=$truthy($ret_or_1=$truthy($ret_or_2=this.start_tok["$=="]("tSTRING_BEG"))?[$enc("'","ASCII-8BIT"),$enc('"',"ASCII-8BIT")]["$include?"](str_type):$ret_or_2)?this["$heredoc?"]()["$!"]():$ret_or_1,$truthy(this.str_type["$start_with?"]($enc("%","ASCII-8BIT").$freeze()))&&(this.str_type=$rb_plus(this.str_type,delimiter)),this.$clear_buffer(),$truthy(this.monolithic)?nil:this.$emit_start_tok()}),-5),$def(self,"$interpolate?",(function(){return this.interpolate}),0),$def(self,"$words?",(function(){var $ret_or_1,$ret_or_2,$ret_or_3;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.$type()["$=="]("tWORDS_BEG"))?$ret_or_3:this.$type()["$=="]("tQWORDS_BEG"))?$ret_or_2:this.$type()["$=="]("tSYMBOLS_BEG"))?$ret_or_1:this.$type()["$=="]("tQSYMBOLS_BEG")}),0),$def(self,"$regexp?",(function(){return this.$type()["$=="]("tREGEXP_BEG")}),0),$def(self,"$heredoc?",(function(){return this.heredoc_e["$!"]()["$!"]()}),0),$def(self,"$plain_heredoc?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$heredoc?"]())?this.dedent_body["$!"]():$ret_or_1}),0),$def(self,"$squiggly_heredoc?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$heredoc?"]())?this.dedent_body:$ret_or_1}),0),$def(self,"$backslash_delimited?",(function(){return this.end_delim["$=="]($enc("\\","ASCII-8BIT").$freeze())}),0),$def(self,"$type",(function(){return this.start_tok}),0),$def(self,"$munge_escape?",(function(character){return character=this.$coerce_encoding(character),!(!$truthy(this["$words?"]())||!$truthy(character["$=~"](/[ \t\v\r\f\n]/)))||[$enc("\\","ASCII-8BIT").$freeze(),this.start_delim,this.end_delim]["$include?"](character)}),1),$def(self,"$nest_and_try_closing",(function(delimiter,ts,te,lookahead){return null==lookahead&&(lookahead=nil),delimiter=this.$coerce_encoding(delimiter),$truthy(this.start_delim)&&$eqeq(this.start_delim,delimiter)?this.nesting=$rb_plus(this.nesting,1):$truthy(this["$delimiter?"](delimiter))&&(this.nesting=$rb_minus(this.nesting,1)),$eqeq(this.nesting,0)?($truthy(this["$words?"]())&&this.$extend_space(ts,ts),$truthy(lookahead)&&$truthy(this.label_allowed)&&$eqeq(lookahead["$[]"](0),$enc(":","ASCII-8BIT"))&&$neqeq(lookahead["$[]"](1),$enc(":","ASCII-8BIT"))&&$eqeq(this.start_tok,"tSTRING_BEG")?(this.$flush_string(),this.$emit("tLABEL_END",this.end_delim,ts,$rb_plus(te,1))):$truthy(this.monolithic)?this.$emit("tSTRING",this.buffer,this.str_s,te):($truthy(this["$heredoc?"]())||this.$flush_string(),this.$emit("tSTRING_END",this.end_delim,ts,te))):nil}),-4),$def(self,"$infer_indent_level",(function(line){var self=this,indent_level=nil;return $not(self.dedent_body)?nil:(indent_level=0,function(){var $brk=Opal.new_brk();try{return $send(line,"each_char",[],(function $$9(char$){var $ret_or_1,self=null==$$9.$$s?this:$$9.$$s;return null==self.dedent_level&&(self.dedent_level=nil),null==char$&&(char$=nil),$eqeqeq(" ",$ret_or_1=char$)?indent_level=$rb_plus(indent_level,1):$eqeqeq("\t",$ret_or_1)?indent_level=$rb_plus(indent_level,$rb_minus(8,indent_level["$%"](8))):(($truthy(self.dedent_level["$nil?"]())||$truthy($rb_gt(self.dedent_level,indent_level)))&&(self.dedent_level=indent_level),void Opal.brk(nil,$brk))}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}())}),1),$def(self,"$start_interp_brace",(function(){return this.interp_braces=$rb_plus(this.interp_braces,1)}),0),$def(self,"$end_interp_brace_and_try_closing",(function(){return this.interp_braces=$rb_minus(this.interp_braces,1),this.interp_braces["$=="](0)}),0),$def(self,"$extend_string",(function(string,ts,te){var $ret_or_1;return this.buffer_s=$truthy($ret_or_1=this.buffer_s)?$ret_or_1:ts,this.buffer_e=te,this.buffer["$<<"](string)}),3),$def(self,"$flush_string",(function(){return $truthy(this.monolithic)&&(this.$emit_start_tok(),this.monolithic=!1),$truthy(this.buffer["$empty?"]())?nil:(this.$emit("tSTRING_CONTENT",this.buffer,this.buffer_s,this.buffer_e),this.$clear_buffer(),this.$extend_content())}),0),$def(self,"$extend_content",(function(){return this.space_emitted=!1}),0),$def(self,"$extend_space",(function(ts,te){return this.$flush_string(),$truthy(this.space_emitted)?nil:(this.$emit("tSPACE",nil,ts,te),this.space_emitted=!0)}),2),$def(self,"$supports_line_continuation_via_slash?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$words?"]()["$!"]())?this.interpolate:$ret_or_1}),0),self.$protected(),$def(self,"$delimiter?",(function(delimiter){return $truthy(this.indent)?this.end_delim["$=="](delimiter.$lstrip()):this.end_delim["$=="](delimiter)}),1),$def(self,"$coerce_encoding",(function(string){return string.$b()}),1),$def(self,"$clear_buffer",(function(){return this.buffer=$enc("","ASCII-8BIT").$dup(),this.buffer.$force_encoding(this.lexer.$source_buffer().$source().$encoding()),this.buffer_s=nil,this.buffer_e=nil}),0),$def(self,"$emit_start_tok",(function(){var str_e,$ret_or_1;return str_e=$truthy($ret_or_1=this.heredoc_e)?$ret_or_1:$rb_plus(this.str_s,this.str_type.$length()),this.$emit(this.start_tok,this.str_type,this.str_s,str_e)}),0),$def(self,"$emit",(function(token,type,s,e){return this.lexer.$send("emit",token,type,s,e)}),4)}(Opal.$r($nesting)("Lexer"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/lexer/stack_state"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$alias=Opal.alias;return Opal.add_stubs("freeze,clear,|,<<,&,>>,==,[],to_s"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super){var self=$klass($base,null,"StackState"),$proto=self.$$prototype;return $proto.stack=$proto.name=nil,$def(self,"$initialize",(function(name){return this.name=name.$freeze(),this.$clear()}),1),$def(self,"$clear",(function(){return this.stack=0}),0),$def(self,"$push",(function(bit){var bit_value;return bit_value=$truthy(bit)?1:0,this.stack=this.stack["$<<"](1)["$|"](bit_value),bit}),1),$def(self,"$pop",(function(){var bit_value=nil;return bit_value=this.stack["$&"](1),this.stack=this.stack["$>>"](1),bit_value["$=="](1)}),0),$def(self,"$lexpop",(function(){return this.stack=this.stack["$>>"](1)["$|"](this.stack["$&"](1)),this.stack["$[]"](0)["$=="](1)}),0),$def(self,"$active?",(function(){return this.stack["$[]"](0)["$=="](1)}),0),$def(self,"$empty?",(function(){return this.stack["$=="](0)}),0),$def(self,"$to_s",(function(){return"["+this.stack.$to_s(2)+" <= "+this.name+"]"}),0),$alias(self,"inspect","to_s")}(Opal.$r($nesting)("Lexer"))}($nesting[0],$nesting)},Opal.modules["parser/lexer/dedenter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$eqeq=Opal.eqeq,$send=Opal.send,$truthy=Opal.truthy,$to_ary=Opal.to_ary,$slice=Opal.slice,$rb_le=Opal.rb_le,$eqeqeq=Opal.eqeqeq,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$rb_divide=Opal.rb_divide;return Opal.add_stubs("encoding,split,force_encoding,==,length,map!,each,each_char,<=,===,+,-,>,*,/,slice!,replace,join,end_with?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Dedenter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.at_line_begin=nil,$const_set($nesting[0],"TAB_WIDTH",8),$def(self,"$initialize",(function(dedent_level){return this.dedent_level=dedent_level,this.at_line_begin=!0,this.indent_level=0}),1),$def(self,"$dedent",(function(string){var $a,original_encoding,self=this,lines=nil,lines_to_dedent=nil;return original_encoding=string.$encoding(),lines=string.$force_encoding($$$($$("Encoding"),"BINARY")).$split("\\\n"),$eqeq(lines.$length(),1)?lines=[string.$force_encoding(original_encoding)]:$send(lines,"map!",[],(function(s){return null==s&&(s=nil),s.$force_encoding(original_encoding)}),1),$truthy(self.at_line_begin)?lines_to_dedent=lines:(null==($a=$to_ary(lines))[0]?nil:$a[0],lines_to_dedent=$slice.call($a,1)),function(){var $brk=Opal.new_brk();try{$send(lines_to_dedent,"each",[],(function $$2(line){var self=null==$$2.$$s?this:$$2.$$s,left_to_remove=nil,remove=nil;return null==self.dedent_level&&(self.dedent_level=nil),null==line&&(line=nil),left_to_remove=self.dedent_level,remove=0,function(){var $brk=Opal.new_brk();try{$send(line,"each_char",[],(function $$3(char$){var $ret_or_1,self=null==$$3.$$s?this:$$3.$$s;return null==self.dedent_level&&(self.dedent_level=nil),null==char$&&(char$=nil),$truthy($rb_le(left_to_remove,0))&&Opal.brk(nil,$brk),$eqeqeq(" ",$ret_or_1=char$)?(remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,1)):$eqeqeq("\t",$ret_or_1)?($truthy($rb_gt($rb_times($$("TAB_WIDTH"),$rb_plus($rb_divide(remove,$$("TAB_WIDTH")),1)),self.dedent_level))&&Opal.brk(nil,$brk),remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,$$("TAB_WIDTH"))):void Opal.brk(nil,$brk)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),line["$slice!"](0,remove)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),string.$replace(lines.$join()),self.at_line_begin=string["$end_with?"]("\n")}),1),$def(self,"$interrupt",(function(){return this.at_line_begin=!1}),0)}(Opal.$r($nesting)("Lexer"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/builders/default"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$hash2=Opal.hash2,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$not=Opal.not,$send=Opal.send,$neqeq=Opal.neqeq,$to_ary=Opal.to_ary,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$range=Opal.range,$slice=Opal.slice,$rb_gt=Opal.rb_gt,$rb_le=Opal.rb_le,$rb_lt=Opal.rb_lt;return Opal.add_stubs("attr_accessor,n0,token_map,numeric,n,value,new,loc,private,===,+@,-@,updated,join,expression,string_value,delimited_string_map,unquoted_map,collapse_string_parts?,nil?,first,children,string_map,prefix_string_map,to_sym,collection_map,empty?,==,version,diagnostic,!,type,dedent,map,interrupt,compact,uniq,sort,each_char,to_proc,static_regexp,message,<<,regexp_map,unary_op_map,binary_op_map,!=,%,size,last,each_slice,pair_keyword_map,pair_quoted_map,symbol_compose,adjust,=~,pair_keyword,accessible,upto,-,length,+,[],>=,range_map,variable_map,name,source_buffer,dup,line,emit_encoding,class,any?,end_with?,to_s,try_declare_numparam,declared?,static_env,var_send_map,top,current_arg_stack,parser,constant_map,in_def,context,check_assignment_to_numparam,check_reserved_for_numparam,declare,with_expression,with_operator,join_exprs,module_definition_map,definition_map,endless_definition_map,validate_definee,keyword_map,check_duplicate_args,validate_no_forward_arg_after_restarg,emit_forward_arg,forward_arg,arg_prefix_map,kwarg_map,emit_procarg0,emit_arg_inside_procarg0,location,resize,end,call_type_for_dot,emit_kwargs,rewrite_hash_args_to_kwargs,send_map,emit_lambda,expr_map,keyword,include?,block_map,array,emit_index,index_map,send_index_map,send_binary_op_map,static_regexp_node,each,names,send_unary_op_map,check_condition,condition_map,keyword_mod_map,ternary_map,for_map,>,count,rescue_body_map,eh_keyword_map,push,none?,one?,begin,guard_map,check_lvar_name,check_duplicate_pattern_variable,match_hash_var_from_str,match_var,check_duplicate_pattern_key,static_string,pair_quoted,match_hash_var,<=,check_duplicate_arg,is_a?,[]=,arg_name_collides?,<,in_dynamic_block?,has_numparams?,max_numparam_stack,start_with?,pattern_variables,pattern_hash_keys,with,begin_pos,end_pos,encode,valid_encoding?,process,diagnostics,send,kwargs?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Default"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.parser=$proto.emit_file_line_as_literals=nil,function(self,$parent_nesting){self.$attr_accessor("emit_lambda")}(Opal.get_singleton_class(self)),self.emit_lambda=!1,function(self,$parent_nesting){self.$attr_accessor("emit_procarg0")}(Opal.get_singleton_class(self)),self.emit_procarg0=!1,function(self,$parent_nesting){self.$attr_accessor("emit_encoding")}(Opal.get_singleton_class(self)),self.emit_encoding=!1,function(self,$parent_nesting){self.$attr_accessor("emit_index")}(Opal.get_singleton_class(self)),self.emit_index=!1,function(self,$parent_nesting){self.$attr_accessor("emit_arg_inside_procarg0")}(Opal.get_singleton_class(self)),self.emit_arg_inside_procarg0=!1,function(self,$parent_nesting){self.$attr_accessor("emit_forward_arg")}(Opal.get_singleton_class(self)),self.emit_forward_arg=!1,function(self,$parent_nesting){self.$attr_accessor("emit_kwargs")}(Opal.get_singleton_class(self)),self.emit_kwargs=!1,function(self,$parent_nesting){self.$attr_accessor("emit_match_pattern")}(Opal.get_singleton_class(self)),self.emit_match_pattern=!1,function(self,$parent_nesting){$def(self,"$modernize",(function(){return this.emit_lambda=!0,this.emit_procarg0=!0,this.emit_encoding=!0,this.emit_index=!0,this.emit_arg_inside_procarg0=!0,this.emit_forward_arg=!0,this.emit_kwargs=!0,this.emit_match_pattern=!0}),0)}(Opal.get_singleton_class(self)),self.$attr_accessor("parser"),self.$attr_accessor("emit_file_line_as_literals"),$def(self,"$initialize",(function(){return this.emit_file_line_as_literals=!0}),0),$def(self,"$nil",(function(nil_t){return this.$n0("nil",this.$token_map(nil_t))}),1),$def(self,"$true",(function(true_t){return this.$n0("true",this.$token_map(true_t))}),1),$def(self,"$false",(function(false_t){return this.$n0("false",this.$token_map(false_t))}),1),$def(self,"$integer",(function(integer_t){return this.$numeric("int",integer_t)}),1),$def(self,"$float",(function(float_t){return this.$numeric("float",float_t)}),1),$def(self,"$rational",(function(rational_t){return this.$numeric("rational",rational_t)}),1),$def(self,"$complex",(function(complex_t){return this.$numeric("complex",complex_t)}),1),$def(self,"$numeric",(function(kind,token){return this.$n(kind,[this.$value(token)],$$$($$$($$("Source"),"Map"),"Operator").$new(nil,this.$loc(token)))}),2),self.$private("numeric"),$def(self,"$unary_num",(function(unary_t,numeric){var $a,$ret_or_1,value=nil,operator_loc=nil;return value=null==($a=[].concat($to_a(numeric)))[0]?nil:$a[0],operator_loc=this.$loc(unary_t),$eqeqeq("+",$ret_or_1=this.$value(unary_t))?value=value["$+@"]():$eqeqeq("-",$ret_or_1)&&(value=value["$-@"]()),numeric.$updated(nil,[value],$hash2(["location"],{location:$$$($$$($$("Source"),"Map"),"Operator").$new(operator_loc,operator_loc.$join(numeric.$loc().$expression()))}))}),2),$def(self,"$__LINE__",(function(__LINE__t){return this.$n0("__LINE__",this.$token_map(__LINE__t))}),1),$def(self,"$string",(function(string_t){return this.$n("str",[this.$string_value(string_t)],this.$delimited_string_map(string_t))}),1),$def(self,"$string_internal",(function(string_t){return this.$n("str",[this.$string_value(string_t)],this.$unquoted_map(string_t))}),1),$def(self,"$string_compose",(function(begin_t,parts,end_t){return $truthy(this["$collapse_string_parts?"](parts))?$truthy(begin_t["$nil?"]())&&$truthy(end_t["$nil?"]())?parts.$first():this.$n("str",parts.$first().$children(),this.$string_map(begin_t,parts,end_t)):this.$n("dstr",[].concat($to_a(parts)),this.$string_map(begin_t,parts,end_t))}),3),$def(self,"$character",(function(char_t){return this.$n("str",[this.$string_value(char_t)],this.$prefix_string_map(char_t))}),1),$def(self,"$__FILE__",(function(__FILE__t){return this.$n0("__FILE__",this.$token_map(__FILE__t))}),1),$def(self,"$symbol",(function(symbol_t){return this.$n("sym",[this.$string_value(symbol_t).$to_sym()],this.$prefix_string_map(symbol_t))}),1),$def(self,"$symbol_internal",(function(symbol_t){return this.$n("sym",[this.$string_value(symbol_t).$to_sym()],this.$unquoted_map(symbol_t))}),1),$def(self,"$symbol_compose",(function(begin_t,parts,end_t){var str=nil;return $truthy(this["$collapse_string_parts?"](parts))?(str=parts.$first(),this.$n("sym",[str.$children().$first().$to_sym()],this.$collection_map(begin_t,str.$loc().$expression(),end_t))):$eqeq(this.parser.$version(),18)&&$truthy(parts["$empty?"]())?this.$diagnostic("error","empty_symbol",nil,this.$loc(begin_t).$join(this.$loc(end_t))):this.$n("dsym",[].concat($to_a(parts)),this.$collection_map(begin_t,parts,end_t))}),3),$def(self,"$xstring_compose",(function(begin_t,parts,end_t){return this.$n("xstr",[].concat($to_a(parts)),this.$string_map(begin_t,parts,end_t))}),3),$def(self,"$dedent_string",(function(node,dedent_level){var dedenter=nil,$ret_or_1=nil,str=nil,children=nil;return $not(dedent_level["$nil?"]())&&(dedenter=$$$($$("Lexer"),"Dedenter").$new(dedent_level),$eqeqeq("str",$ret_or_1=node.$type())?(str=node.$children().$first(),dedenter.$dedent(str)):($eqeqeq("dstr",$ret_or_1)||$eqeqeq("xstr",$ret_or_1))&&(children=$send(node.$children(),"map",[],(function(str_node){if(null==str_node&&(str_node=nil),$eqeq(str_node.$type(),"str")){if(str=str_node.$children().$first(),dedenter.$dedent(str),$truthy(str["$empty?"]()))return nil}else dedenter.$interrupt();return str_node}),1),node=node.$updated(nil,children.$compact()))),node}),2),$def(self,"$regexp_options",(function(regopt_t){var options;return options=$send(this.$value(regopt_t).$each_char().$sort().$uniq(),"map",[],"to_sym".$to_proc()),this.$n("regopt",options,this.$token_map(regopt_t))}),1),$def(self,"$regexp_compose",(function(begin_t,parts,end_t,options){var e=nil;try{this.$static_regexp(parts,options)}catch($err){if(!Opal.rescue($err,[$$("RegexpError")]))throw $err;e=$err;try{this.$diagnostic("error","invalid_regexp",$hash2(["message"],{message:e.$message()}),this.$loc(begin_t).$join(this.$loc(end_t)))}finally{Opal.pop_exception()}}return this.$n("regexp",parts["$<<"](options),this.$regexp_map(begin_t,end_t,options))}),4),$def(self,"$array",(function(begin_t,elements,end_t){return this.$n("array",elements,this.$collection_map(begin_t,elements,end_t))}),3),$def(self,"$splat",(function(star_t,arg){return null==arg&&(arg=nil),$truthy(arg["$nil?"]())?this.$n0("splat",this.$unary_op_map(star_t)):this.$n("splat",[arg],this.$unary_op_map(star_t,arg))}),-2),$def(self,"$word",(function(parts){return $truthy(this["$collapse_string_parts?"](parts))?parts.$first():this.$n("dstr",[].concat($to_a(parts)),this.$collection_map(nil,parts,nil))}),1),$def(self,"$words_compose",(function(begin_t,parts,end_t){return this.$n("array",[].concat($to_a(parts)),this.$collection_map(begin_t,parts,end_t))}),3),$def(self,"$symbols_compose",(function(begin_t,parts,end_t){return parts=$send(parts,"map",[],(function(part){var $a,$ret_or_1,value=nil;return null==part&&(part=nil),$eqeqeq("str",$ret_or_1=part.$type())?(value=null==($a=[].concat($to_a(part)))[0]?nil:$a[0],part.$updated("sym",[value.$to_sym()])):$eqeqeq("dstr",$ret_or_1)?part.$updated("dsym"):part}),1),this.$n("array",[].concat($to_a(parts)),this.$collection_map(begin_t,parts,end_t))}),3),$def(self,"$pair",(function(key,assoc_t,value){return this.$n("pair",[key,value],this.$binary_op_map(key,assoc_t,value))}),3),$def(self,"$pair_list_18",(function(list){return $neqeq(list.$size()["$%"](2),0)?this.$diagnostic("error","odd_hash",nil,list.$last().$loc().$expression()):$send(list.$each_slice(2),"map",[],(function $$6(key,value){var self=null==$$6.$$s?this:$$6.$$s;return null==key&&(key=nil),null==value&&(value=nil),self.$n("pair",[key,value],self.$binary_op_map(key,nil,value))}),{$$arity:2,$$s:this})}),1),$def(self,"$pair_keyword",(function(key_t,value){var $a,$b,key_map,pair_map,key;return $b=this.$pair_keyword_map(key_t,value),key_map=null==($a=$to_ary($b))[0]?nil:$a[0],pair_map=null==$a[1]?nil:$a[1],key=this.$n("sym",[this.$value(key_t).$to_sym()],key_map),this.$n("pair",[key,value],pair_map)}),2),$def(self,"$pair_quoted",(function(begin_t,parts,end_t,value){var $a,$b,pair_map,key;return $b=this.$pair_quoted_map(begin_t,end_t,value),end_t=null==($a=$to_ary($b))[0]?nil:$a[0],pair_map=null==$a[1]?nil:$a[1],key=this.$symbol_compose(begin_t,parts,end_t),this.$n("pair",[key,value],pair_map)}),4),$def(self,"$pair_label",(function(key_t){var value_l,value,label=nil;return value_l=this.$loc(key_t).$adjust($hash2(["end_pos"],{end_pos:-1})),label=this.$value(key_t),value=$truthy(label["$=~"](/^[[:lower:]]/))?this.$n("ident",[label.$to_sym()],$$$($$$($$("Source"),"Map"),"Variable").$new(value_l)):this.$n("const",[nil,label.$to_sym()],$$$($$$($$("Source"),"Map"),"Constant").$new(nil,value_l,value_l)),this.$pair_keyword(key_t,this.$accessible(value))}),1),$def(self,"$kwsplat",(function(dstar_t,arg){return this.$n("kwsplat",[arg],this.$unary_op_map(dstar_t,arg))}),2),$def(self,"$associate",(function(begin_t,pairs,end_t){return $send(0,"upto",[$rb_minus(pairs.$length(),1)],(function $$7(i){var self=null==$$7.$$s?this:$$7.$$s;return null==i&&(i=nil),$send($rb_plus(i,1),"upto",[$rb_minus(pairs.$length(),1)],(function $$8(j){var $a,$ret_or_1,self=null==$$8.$$s?this:$$8.$$s,key1=nil,key2=nil,do_warn=nil;return null==self.parser&&(self.parser=nil),null==j&&(j=nil),key1=null==($a=[].concat($to_a(pairs["$[]"](i))))[0]?nil:$a[0],key2=null==($a=[].concat($to_a(pairs["$[]"](j))))[0]?nil:$a[0],do_warn=!1,$eqeqeq("sym",$ret_or_1=key1.$type())||$eqeqeq("str",$ret_or_1)||$eqeqeq("int",$ret_or_1)||$eqeqeq("float",$ret_or_1)?$eqeq(key1,key2)&&(do_warn=!0):($eqeqeq("rational",$ret_or_1)||$eqeqeq("complex",$ret_or_1)||$eqeqeq("regexp",$ret_or_1))&&$truthy($rb_ge(self.parser.$version(),31))&&$eqeq(key1,key2)&&(do_warn=!0),$truthy(do_warn)?self.$diagnostic("warning","duplicate_hash_key",nil,key2.$loc().$expression()):nil}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:this}),this.$n("hash",[].concat($to_a(pairs)),this.$collection_map(begin_t,pairs,end_t))}),3),$def(self,"$range_inclusive",(function(lhs,dot2_t,rhs){return this.$n("irange",[lhs,rhs],this.$range_map(lhs,dot2_t,rhs))}),3),$def(self,"$range_exclusive",(function(lhs,dot3_t,rhs){return this.$n("erange",[lhs,rhs],this.$range_map(lhs,dot3_t,rhs))}),3),$def(self,"$self",(function(token){return this.$n0("self",this.$token_map(token))}),1),$def(self,"$ident",(function(token){return this.$n("ident",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$ivar",(function(token){return this.$n("ivar",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$gvar",(function(token){return this.$n("gvar",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$cvar",(function(token){return this.$n("cvar",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$back_ref",(function(token){return this.$n("back_ref",[this.$value(token).$to_sym()],this.$token_map(token))}),1),$def(self,"$nth_ref",(function(token){return this.$n("nth_ref",[this.$value(token)],this.$token_map(token))}),1),$def(self,"$accessible",(function(node){var $a,$ret_or_1,name=nil;return $eqeqeq("__FILE__",$ret_or_1=node.$type())?$truthy(this.emit_file_line_as_literals)?this.$n("str",[node.$loc().$expression().$source_buffer().$name()],node.$loc().$dup()):node:$eqeqeq("__LINE__",$ret_or_1)?$truthy(this.emit_file_line_as_literals)?this.$n("int",[node.$loc().$expression().$line()],node.$loc().$dup()):node:$eqeqeq("__ENCODING__",$ret_or_1)?$not(this.$class().$emit_encoding())?this.$n("const",[this.$n("const",[nil,"Encoding"],nil),"UTF_8"],node.$loc().$dup()):node:$eqeqeq("ident",$ret_or_1)?($a=[].concat($to_a(node)),name=null==$a[0]?nil:$a[0],$truthy($send(["?","!"],"any?",[],(function(c){return null==c&&(c=nil),name.$to_s()["$end_with?"](c)}),1))&&this.$diagnostic("error","invalid_id_to_get",$hash2(["identifier"],{identifier:name.$to_s()}),node.$loc().$expression()),$truthy($rb_ge(this.parser.$version(),27))&&$truthy(this.parser.$try_declare_numparam(node))?node.$updated("lvar"):$truthy(this.parser.$static_env()["$declared?"](name))?($eqeq(name.$to_s(),this.$parser().$current_arg_stack().$top())&&this.$diagnostic("error","circular_argument_reference",$hash2(["var_name"],{var_name:name.$to_s()}),node.$loc().$expression()),node.$updated("lvar")):this.$n("send",[nil,name],this.$var_send_map(node))):node}),1),$def(self,"$const",(function(name_t){return this.$n("const",[nil,this.$value(name_t).$to_sym()],this.$constant_map(nil,nil,name_t))}),1),$def(self,"$const_global",(function(t_colon3,name_t){var cbase;return cbase=this.$n0("cbase",this.$token_map(t_colon3)),this.$n("const",[cbase,this.$value(name_t).$to_sym()],this.$constant_map(cbase,t_colon3,name_t))}),2),$def(self,"$const_fetch",(function(scope,t_colon2,name_t){return this.$n("const",[scope,this.$value(name_t).$to_sym()],this.$constant_map(scope,t_colon2,name_t))}),3),$def(self,"$__ENCODING__",(function(__ENCODING__t){return this.$n0("__ENCODING__",this.$token_map(__ENCODING__t))}),1),$def(self,"$assignable",(function(node){var $a,$ret_or_1,name=nil,var_name=nil,name_loc=nil;return $eqeqeq("cvar",$ret_or_1=node.$type())?node.$updated("cvasgn"):$eqeqeq("ivar",$ret_or_1)?node.$updated("ivasgn"):$eqeqeq("gvar",$ret_or_1)?node.$updated("gvasgn"):$eqeqeq("const",$ret_or_1)?($truthy(this.parser.$context().$in_def())&&this.$diagnostic("error","dynamic_const",nil,node.$loc().$expression()),node.$updated("casgn")):$eqeqeq("ident",$ret_or_1)?(name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],var_name=node.$children()["$[]"](0).$to_s(),name_loc=node.$loc().$expression(),this.$check_assignment_to_numparam(var_name,name_loc),this.$check_reserved_for_numparam(var_name,name_loc),this.parser.$static_env().$declare(name),node.$updated("lvasgn")):$eqeqeq("match_var",$ret_or_1)?(name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],var_name=node.$children()["$[]"](0).$to_s(),name_loc=node.$loc().$expression(),this.$check_assignment_to_numparam(var_name,name_loc),this.$check_reserved_for_numparam(var_name,name_loc),node):$eqeqeq("nil",$ret_or_1)||$eqeqeq("self",$ret_or_1)||$eqeqeq("true",$ret_or_1)||$eqeqeq("false",$ret_or_1)||$eqeqeq("__FILE__",$ret_or_1)||$eqeqeq("__LINE__",$ret_or_1)||$eqeqeq("__ENCODING__",$ret_or_1)?this.$diagnostic("error","invalid_assignment",nil,node.$loc().$expression()):$eqeqeq("back_ref",$ret_or_1)||$eqeqeq("nth_ref",$ret_or_1)?this.$diagnostic("error","backref_assignment",nil,node.$loc().$expression()):nil}),1),$def(self,"$const_op_assignable",(function(node){return node.$updated("casgn")}),1),$def(self,"$assign",(function(lhs,eql_t,rhs){return lhs["$<<"](rhs).$updated(nil,nil,$hash2(["location"],{location:lhs.$loc().$with_operator(this.$loc(eql_t)).$with_expression(this.$join_exprs(lhs,rhs))}))}),3),$def(self,"$op_assign",(function(lhs,op_t,rhs){var $ret_or_1,operator=nil,source_map=nil,$ret_or_2=nil;return $eqeqeq("gvasgn",$ret_or_1=lhs.$type())||$eqeqeq("ivasgn",$ret_or_1)||$eqeqeq("lvasgn",$ret_or_1)||$eqeqeq("cvasgn",$ret_or_1)||$eqeqeq("casgn",$ret_or_1)||$eqeqeq("send",$ret_or_1)||$eqeqeq("csend",$ret_or_1)||$eqeqeq("index",$ret_or_1)?(operator=this.$value(op_t)["$[]"]($range(0,-1,!1)).$to_sym(),source_map=lhs.$loc().$with_operator(this.$loc(op_t)).$with_expression(this.$join_exprs(lhs,rhs)),$eqeq(lhs.$type(),"index")&&(lhs=lhs.$updated("indexasgn")),$eqeqeq("&&",$ret_or_2=operator)?this.$n("and_asgn",[lhs,rhs],source_map):$eqeqeq("||",$ret_or_2)?this.$n("or_asgn",[lhs,rhs],source_map):this.$n("op_asgn",[lhs,operator,rhs],source_map)):$eqeqeq("back_ref",$ret_or_1)||$eqeqeq("nth_ref",$ret_or_1)?this.$diagnostic("error","backref_assignment",nil,lhs.$loc().$expression()):nil}),3),$def(self,"$multi_lhs",(function(begin_t,items,end_t){return this.$n("mlhs",[].concat($to_a(items)),this.$collection_map(begin_t,items,end_t))}),3),$def(self,"$multi_assign",(function(lhs,eql_t,rhs){return this.$n("masgn",[lhs,rhs],this.$binary_op_map(lhs,eql_t,rhs))}),3),$def(self,"$def_class",(function(class_t,name,lt_t,superclass,body,end_t){return this.$n("class",[name,superclass,body],this.$module_definition_map(class_t,name,lt_t,end_t))}),6),$def(self,"$def_sclass",(function(class_t,lshft_t,expr,body,end_t){return this.$n("sclass",[expr,body],this.$module_definition_map(class_t,nil,lshft_t,end_t))}),5),$def(self,"$def_module",(function(module_t,name,body,end_t){return this.$n("module",[name,body],this.$module_definition_map(module_t,name,nil,end_t))}),4),$def(self,"$def_method",(function(def_t,name_t,args,body,end_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("def",[this.$value(name_t).$to_sym(),args,body],this.$definition_map(def_t,nil,name_t,end_t))}),5),$def(self,"$def_endless_method",(function(def_t,name_t,args,assignment_t,body){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("def",[this.$value(name_t).$to_sym(),args,body],this.$endless_definition_map(def_t,nil,name_t,assignment_t,body))}),5),$def(self,"$def_singleton",(function(def_t,definee,dot_t,name_t,args,body,end_t){return this.$validate_definee(definee),this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("defs",[definee,this.$value(name_t).$to_sym(),args,body],this.$definition_map(def_t,dot_t,name_t,end_t))}),7),$def(self,"$def_endless_singleton",(function(def_t,definee,dot_t,name_t,args,assignment_t,body){return this.$validate_definee(definee),this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("defs",[definee,this.$value(name_t).$to_sym(),args,body],this.$endless_definition_map(def_t,dot_t,name_t,assignment_t,body))}),7),$def(self,"$undef_method",(function(undef_t,names){return this.$n("undef",[].concat($to_a(names)),this.$keyword_map(undef_t,nil,names,nil))}),2),$def(self,"$alias",(function(alias_t,to,from){return this.$n("alias",[to,from],this.$keyword_map(alias_t,nil,[to,from],nil))}),3),$def(self,"$args",(function(begin_t,args,end_t,check_args){var map;return null==check_args&&(check_args=!0),$truthy(check_args)&&(args=this.$check_duplicate_args(args)),this.$validate_no_forward_arg_after_restarg(args),map=this.$collection_map(begin_t,args,end_t),$not(this.$class().$emit_forward_arg())&&$eqeq(args.$length(),1)&&$eqeq(args["$[]"](0).$type(),"forward_arg")?this.$n("forward_args",[],map):this.$n("args",args,map)}),-4),$def(self,"$numargs",(function(max_numparam){return this.$n("numargs",[max_numparam],nil)}),1),$def(self,"$forward_only_args",(function(begin_t,dots_t,end_t){var arg=nil;return $truthy(this.$class().$emit_forward_arg())?(arg=this.$forward_arg(dots_t),this.$n("args",[arg],this.$collection_map(begin_t,[arg],end_t))):this.$n("forward_args",[],this.$collection_map(begin_t,this.$token_map(dots_t),end_t))}),3),$def(self,"$forward_arg",(function(dots_t){return this.$n("forward_arg",[],this.$token_map(dots_t))}),1),$def(self,"$arg",(function(name_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("arg",[this.$value(name_t).$to_sym()],this.$variable_map(name_t))}),1),$def(self,"$optarg",(function(name_t,eql_t,value){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("optarg",[this.$value(name_t).$to_sym(),value],this.$variable_map(name_t).$with_operator(this.$loc(eql_t)).$with_expression(this.$loc(name_t).$join(value.$loc().$expression())))}),3),$def(self,"$restarg",(function(star_t,name_t){return null==name_t&&(name_t=nil),$truthy(name_t)?(this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("restarg",[this.$value(name_t).$to_sym()],this.$arg_prefix_map(star_t,name_t))):this.$n0("restarg",this.$arg_prefix_map(star_t))}),-2),$def(self,"$kwarg",(function(name_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("kwarg",[this.$value(name_t).$to_sym()],this.$kwarg_map(name_t))}),1),$def(self,"$kwoptarg",(function(name_t,value){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("kwoptarg",[this.$value(name_t).$to_sym(),value],this.$kwarg_map(name_t,value))}),2),$def(self,"$kwrestarg",(function(dstar_t,name_t){return null==name_t&&(name_t=nil),$truthy(name_t)?(this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("kwrestarg",[this.$value(name_t).$to_sym()],this.$arg_prefix_map(dstar_t,name_t))):this.$n0("kwrestarg",this.$arg_prefix_map(dstar_t))}),-2),$def(self,"$kwnilarg",(function(dstar_t,nil_t){return this.$n0("kwnilarg",this.$arg_prefix_map(dstar_t,nil_t))}),2),$def(self,"$shadowarg",(function(name_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("shadowarg",[this.$value(name_t).$to_sym()],this.$variable_map(name_t))}),1),$def(self,"$blockarg",(function(amper_t,name_t){var arg_name;return $not(name_t["$nil?"]())&&this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),arg_name=$truthy(name_t)?this.$value(name_t).$to_sym():nil,this.$n("blockarg",[arg_name],this.$arg_prefix_map(amper_t,name_t))}),2),$def(self,"$procarg0",(function(arg){return $truthy(this.$class().$emit_procarg0())?$eqeq(arg.$type(),"arg")&&$truthy(this.$class().$emit_arg_inside_procarg0())?this.$n("procarg0",[arg],$$$($$$($$("Source"),"Map"),"Collection").$new(nil,nil,arg.$location().$expression())):arg.$updated("procarg0"):arg}),1),$def(self,"$arg_expr",(function(expr){return $eqeq(expr.$type(),"lvasgn")?expr.$updated("arg"):this.$n("arg_expr",[expr],expr.$loc().$dup())}),1),$def(self,"$restarg_expr",(function(star_t,expr){return null==expr&&(expr=nil),$truthy(expr["$nil?"]())?this.$n0("restarg",this.$token_map(star_t)):$eqeq(expr.$type(),"lvasgn")?expr.$updated("restarg"):this.$n("restarg_expr",[expr],expr.$loc().$dup())}),-2),$def(self,"$blockarg_expr",(function(amper_t,expr){return $eqeq(expr.$type(),"lvasgn")?expr.$updated("blockarg"):this.$n("blockarg_expr",[expr],expr.$loc().$dup())}),2),$def(self,"$objc_kwarg",(function(kwname_t,assoc_t,name_t){var kwname_l=nil,operator_l=nil;return kwname_l=this.$loc(kwname_t),operator_l=$truthy(assoc_t["$nil?"]())?(kwname_l=kwname_l.$resize($rb_minus(kwname_l.$size(),1))).$end().$resize(1):this.$loc(assoc_t),this.$n("objc_kwarg",[this.$value(kwname_t).$to_sym(),this.$value(name_t).$to_sym()],$$$($$$($$("Source"),"Map"),"ObjcKwarg").$new(kwname_l,operator_l,this.$loc(name_t),kwname_l.$join(this.$loc(name_t))))}),3),$def(self,"$objc_restarg",(function(star_t,name){return null==name&&(name=nil),$truthy(name["$nil?"]())?this.$n0("restarg",this.$arg_prefix_map(star_t)):$eqeq(name.$type(),"arg")?name.$updated("restarg",nil,$hash2(["location"],{location:name.$loc().$with_operator(this.$loc(star_t))})):this.$n("objc_restarg",[name],this.$unary_op_map(star_t,name))}),-2),$def(self,"$call_type_for_dot",(function(dot_t){return $not(dot_t["$nil?"]())&&$eqeq(this.$value(dot_t),"anddot")?"csend":"send"}),1),$def(self,"$forwarded_args",(function(dots_t){return this.$n("forwarded_args",[],this.$token_map(dots_t))}),1),$def(self,"$call_method",(function(receiver,dot_t,selector_t,lparen_t,args,rparen_t){var type;return null==lparen_t&&(lparen_t=nil),null==args&&(args=[]),null==rparen_t&&(rparen_t=nil),type=this.$call_type_for_dot(dot_t),$truthy(this.$class().$emit_kwargs())&&this.$rewrite_hash_args_to_kwargs(args),$truthy(selector_t["$nil?"]())?this.$n(type,[receiver,"call"].concat($to_a(args)),this.$send_map(receiver,dot_t,nil,lparen_t,args,rparen_t)):this.$n(type,[receiver,this.$value(selector_t).$to_sym()].concat($to_a(args)),this.$send_map(receiver,dot_t,selector_t,lparen_t,args,rparen_t))}),-4),$def(self,"$call_lambda",(function(lambda_t){return $truthy(this.$class().$emit_lambda())?this.$n0("lambda",this.$expr_map(this.$loc(lambda_t))):this.$n("send",[nil,"lambda"],this.$send_map(nil,nil,lambda_t))}),1),$def(self,"$block",(function(method_call,begin_t,args,body,end_t){var $a,call_args=nil,last_arg=nil,block_type=nil,actual_send=nil,block=nil;return null==($a=[].concat($to_a(method_call)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],call_args=$slice.call($a,2),$eqeq(method_call.$type(),"yield")&&this.$diagnostic("error","block_given_to_yield",nil,method_call.$loc().$keyword(),[this.$loc(begin_t)]),last_arg=call_args.$last(),$truthy(last_arg)&&($eqeq(last_arg.$type(),"block_pass")||$eqeq(last_arg.$type(),"forwarded_args"))&&this.$diagnostic("error","block_and_blockarg",nil,last_arg.$loc().$expression(),[this.$loc(begin_t)]),$eqeq(args.$type(),"numargs")?(block_type="numblock",args=args.$children()["$[]"](0)):block_type="block",$truthy(["send","csend","index","super","zsuper","lambda"]["$include?"](method_call.$type()))?this.$n(block_type,[method_call,args,body],this.$block_map(method_call.$loc().$expression(),begin_t,end_t)):(actual_send=null==($a=[].concat($to_a(method_call)))[0]?nil:$a[0],block=this.$n(block_type,[actual_send,args,body],this.$block_map(actual_send.$loc().$expression(),begin_t,end_t)),this.$n(method_call.$type(),[block],method_call.$loc().$with_expression(this.$join_exprs(method_call,block))))}),5),$def(self,"$block_pass",(function(amper_t,arg){return this.$n("block_pass",[arg],this.$unary_op_map(amper_t,arg))}),2),$def(self,"$objc_varargs",(function(pair,rest_of_varargs){var $a,value,first_vararg=nil,vararg_array=nil;return value=null==($a=[].concat($to_a(pair)))[0]?nil:$a[0],first_vararg=null==$a[1]?nil:$a[1],vararg_array=this.$array(nil,[first_vararg].concat($to_a(rest_of_varargs)),nil).$updated("objc_varargs"),pair.$updated(nil,[value,vararg_array],$hash2(["location"],{location:pair.$loc().$with_expression(pair.$loc().$expression().$join(vararg_array.$loc().$expression()))}))}),2),$def(self,"$attr_asgn",(function(receiver,dot_t,selector_t){var method_name,type;return method_name=$rb_plus(this.$value(selector_t),"=").$to_sym(),type=this.$call_type_for_dot(dot_t),this.$n(type,[receiver,method_name],this.$send_map(receiver,dot_t,selector_t))}),3),$def(self,"$index",(function(receiver,lbrack_t,indexes,rbrack_t){return $truthy(this.$class().$emit_kwargs())&&this.$rewrite_hash_args_to_kwargs(indexes),$truthy(this.$class().$emit_index())?this.$n("index",[receiver].concat($to_a(indexes)),this.$index_map(receiver,lbrack_t,rbrack_t)):this.$n("send",[receiver,"[]"].concat($to_a(indexes)),this.$send_index_map(receiver,lbrack_t,rbrack_t))}),4),$def(self,"$index_asgn",(function(receiver,lbrack_t,indexes,rbrack_t){return $truthy(this.$class().$emit_index())?this.$n("indexasgn",[receiver].concat($to_a(indexes)),this.$index_map(receiver,lbrack_t,rbrack_t)):this.$n("send",[receiver,"[]="].concat($to_a(indexes)),this.$send_index_map(receiver,lbrack_t,rbrack_t))}),4),$def(self,"$binary_op",(function(receiver,operator_t,arg){var source_map=nil,operator=nil,method_call=nil;return source_map=this.$send_binary_op_map(receiver,operator_t,arg),$eqeq(this.parser.$version(),18)&&(operator=this.$value(operator_t),$eqeq(operator,"!=")?method_call=this.$n("send",[receiver,"==",arg],source_map):$eqeq(operator,"!~")&&(method_call=this.$n("send",[receiver,"=~",arg],source_map)),$truthy(["!=","!~"]["$include?"](operator)))?this.$n("not",[method_call],this.$expr_map(source_map.$expression())):this.$n("send",[receiver,this.$value(operator_t).$to_sym(),arg],source_map)}),3),$def(self,"$match_op",(function(receiver,match_t,arg){var source_map,regexp=nil;return source_map=this.$send_binary_op_map(receiver,match_t,arg),$truthy(regexp=this.$static_regexp_node(receiver))?($send(regexp.$names(),"each",[],(function $$11(name){var self=null==$$11.$$s?this:$$11.$$s;return null==self.parser&&(self.parser=nil),null==name&&(name=nil),self.parser.$static_env().$declare(name)}),{$$arity:1,$$s:this}),this.$n("match_with_lvasgn",[receiver,arg],source_map)):this.$n("send",[receiver,"=~",arg],source_map)}),3),$def(self,"$unary_op",(function(op_t,receiver){var $ret_or_1,method=nil;return method=$eqeqeq("+",$ret_or_1=this.$value(op_t))||$eqeqeq("-",$ret_or_1)?$rb_plus(this.$value(op_t),"@"):this.$value(op_t),this.$n("send",[receiver,method.$to_sym()],this.$send_unary_op_map(op_t,receiver))}),2),$def(self,"$not_op",(function(not_t,begin_t,receiver,end_t){var nil_node=nil;return null==begin_t&&(begin_t=nil),null==receiver&&(receiver=nil),null==end_t&&(end_t=nil),$eqeq(this.parser.$version(),18)?this.$n("not",[this.$check_condition(receiver)],this.$unary_op_map(not_t,receiver)):$truthy(receiver["$nil?"]())?(nil_node=this.$n0("begin",this.$collection_map(begin_t,nil,end_t)),this.$n("send",[nil_node,"!"],this.$send_unary_op_map(not_t,nil_node))):this.$n("send",[this.$check_condition(receiver),"!"],this.$send_map(nil,nil,not_t,begin_t,[receiver],end_t))}),-2),$def(self,"$logical_op",(function(type,lhs,op_t,rhs){return this.$n(type,[lhs,rhs],this.$binary_op_map(lhs,op_t,rhs))}),4),$def(self,"$condition",(function(cond_t,cond,then_t,if_true,else_t,if_false,end_t){return this.$n("if",[this.$check_condition(cond),if_true,if_false],this.$condition_map(cond_t,cond,then_t,if_true,else_t,if_false,end_t))}),7),$def(self,"$condition_mod",(function(if_true,if_false,cond_t,cond){var $ret_or_1;return this.$n("if",[this.$check_condition(cond),if_true,if_false],this.$keyword_mod_map($truthy($ret_or_1=if_true)?$ret_or_1:if_false,cond_t,cond))}),4),$def(self,"$ternary",(function(cond,question_t,if_true,colon_t,if_false){return this.$n("if",[this.$check_condition(cond),if_true,if_false],this.$ternary_map(cond,question_t,if_true,colon_t,if_false))}),5),$def(self,"$when",(function(when_t,patterns,then_t,body){var children;return children=patterns["$<<"](body),this.$n("when",children,this.$keyword_map(when_t,then_t,children,nil))}),4),$def(self,"$case",(function(case_t,expr,when_bodies,else_t,else_body,end_t){return this.$n("case",[expr].concat($to_a(when_bodies["$<<"](else_body))),this.$condition_map(case_t,expr,nil,nil,else_t,else_body,end_t))}),6),$def(self,"$loop",(function(type,keyword_t,cond,do_t,body,end_t){return this.$n(type,[this.$check_condition(cond),body],this.$keyword_map(keyword_t,do_t,nil,end_t))}),6),$def(self,"$loop_mod",(function(type,body,keyword_t,cond){return $eqeq(body.$type(),"kwbegin")&&(type+="_post"),this.$n(type,[this.$check_condition(cond),body],this.$keyword_mod_map(body,keyword_t,cond))}),4),$def(self,"$for",(function(for_t,iterator,in_t,iteratee,do_t,body,end_t){return this.$n("for",[iterator,iteratee,body],this.$for_map(for_t,in_t,do_t,end_t))}),7),$def(self,"$keyword_cmd",(function(type,keyword_t,lparen_t,args,rparen_t){var last_arg=nil;return null==lparen_t&&(lparen_t=nil),null==args&&(args=[]),null==rparen_t&&(rparen_t=nil),$eqeq(type,"yield")&&$truthy($rb_gt(args.$count(),0))&&(last_arg=args.$last(),$eqeq(last_arg.$type(),"block_pass")&&this.$diagnostic("error","block_given_to_yield",nil,this.$loc(keyword_t),[last_arg.$loc().$expression()])),$truthy(["yield","super"]["$include?"](type))&&$truthy(this.$class().$emit_kwargs())&&this.$rewrite_hash_args_to_kwargs(args),this.$n(type,args,this.$keyword_map(keyword_t,lparen_t,args,rparen_t))}),-3),$def(self,"$preexe",(function(preexe_t,lbrace_t,compstmt,rbrace_t){return this.$n("preexe",[compstmt],this.$keyword_map(preexe_t,lbrace_t,[],rbrace_t))}),4),$def(self,"$postexe",(function(postexe_t,lbrace_t,compstmt,rbrace_t){return this.$n("postexe",[compstmt],this.$keyword_map(postexe_t,lbrace_t,[],rbrace_t))}),4),$def(self,"$rescue_body",(function(rescue_t,exc_list,assoc_t,exc_var,then_t,compound_stmt){return this.$n("resbody",[exc_list,exc_var,compound_stmt],this.$rescue_body_map(rescue_t,exc_list,assoc_t,exc_var,then_t,compound_stmt))}),6),$def(self,"$begin_body",(function(compound_stmt,rescue_bodies,else_t,else_,ensure_t,ensure_){var statements=nil;return null==rescue_bodies&&(rescue_bodies=[]),null==else_t&&(else_t=nil),null==else_&&(else_=nil),null==ensure_t&&(ensure_t=nil),null==ensure_&&(ensure_=nil),$truthy(rescue_bodies["$any?"]())?compound_stmt=$truthy(else_t)?this.$n("rescue",[compound_stmt].concat($to_a($rb_plus(rescue_bodies,[else_]))),this.$eh_keyword_map(compound_stmt,nil,rescue_bodies,else_t,else_)):this.$n("rescue",[compound_stmt].concat($to_a($rb_plus(rescue_bodies,[nil]))),this.$eh_keyword_map(compound_stmt,nil,rescue_bodies,nil,nil)):$truthy(else_t)&&(statements=[],$not(compound_stmt["$nil?"]())&&($eqeq(compound_stmt.$type(),"begin")?statements=$rb_plus(statements,compound_stmt.$children()):statements.$push(compound_stmt)),statements.$push(this.$n("begin",[else_],this.$collection_map(else_t,[else_],nil))),compound_stmt=this.$n("begin",statements,this.$collection_map(nil,statements,nil))),$truthy(ensure_t)&&(compound_stmt=this.$n("ensure",[compound_stmt,ensure_],this.$eh_keyword_map(compound_stmt,ensure_t,[ensure_],nil,nil))),compound_stmt}),-2),$def(self,"$compstmt",(function(statements){return $truthy(statements["$none?"]())?nil:$truthy(statements["$one?"]())?statements.$first():this.$n("begin",statements,this.$collection_map(nil,statements,nil))}),1),$def(self,"$begin",(function(begin_t,body,end_t){return $truthy(body["$nil?"]())?this.$n0("begin",this.$collection_map(begin_t,nil,end_t)):$eqeq(body.$type(),"mlhs")||$eqeq(body.$type(),"begin")&&$truthy(body.$loc().$begin()["$nil?"]())&&$truthy(body.$loc().$end()["$nil?"]())?this.$n(body.$type(),body.$children(),this.$collection_map(begin_t,body.$children(),end_t)):this.$n("begin",[body],this.$collection_map(begin_t,[body],end_t))}),3),$def(self,"$begin_keyword",(function(begin_t,body,end_t){return $truthy(body["$nil?"]())?this.$n0("kwbegin",this.$collection_map(begin_t,nil,end_t)):$eqeq(body.$type(),"begin")&&$truthy(body.$loc().$begin()["$nil?"]())&&$truthy(body.$loc().$end()["$nil?"]())?this.$n("kwbegin",body.$children(),this.$collection_map(begin_t,body.$children(),end_t)):this.$n("kwbegin",[body],this.$collection_map(begin_t,[body],end_t))}),3),$def(self,"$case_match",(function(case_t,expr,in_bodies,else_t,else_body,end_t){return $truthy(else_t)&&$not(else_body)&&(else_body=this.$n("empty_else",nil,this.$token_map(else_t))),this.$n("case_match",[expr].concat($to_a(in_bodies["$<<"](else_body))),this.$condition_map(case_t,expr,nil,nil,else_t,else_body,end_t))}),6),$def(self,"$in_match",(function(lhs,in_t,rhs){return this.$n("in_match",[lhs,rhs],this.$binary_op_map(lhs,in_t,rhs))}),3),$def(self,"$match_pattern",(function(lhs,match_t,rhs){return this.$n("match_pattern",[lhs,rhs],this.$binary_op_map(lhs,match_t,rhs))}),3),$def(self,"$match_pattern_p",(function(lhs,match_t,rhs){return this.$n("match_pattern_p",[lhs,rhs],this.$binary_op_map(lhs,match_t,rhs))}),3),$def(self,"$in_pattern",(function(in_t,pattern,guard,then_t,body){var children=nil;return children=[pattern,guard,body],this.$n("in_pattern",children,this.$keyword_map(in_t,then_t,children.$compact(),nil))}),5),$def(self,"$if_guard",(function(if_t,if_body){return this.$n("if_guard",[if_body],this.$guard_map(if_t,if_body))}),2),$def(self,"$unless_guard",(function(unless_t,unless_body){return this.$n("unless_guard",[unless_body],this.$guard_map(unless_t,unless_body))}),2),$def(self,"$match_var",(function(name_t){var name,name_l;return name=this.$value(name_t).$to_sym(),name_l=this.$loc(name_t),this.$check_lvar_name(name,name_l),this.$check_duplicate_pattern_variable(name,name_l),this.parser.$static_env().$declare(name),this.$n("match_var",[name],this.$variable_map(name_t))}),1),$def(self,"$match_hash_var",(function(name_t){var name,name_l,expr_l=nil;return name=this.$value(name_t).$to_sym(),name_l=(expr_l=this.$loc(name_t)).$adjust($hash2(["end_pos"],{end_pos:-1})),this.$check_lvar_name(name,name_l),this.$check_duplicate_pattern_variable(name,name_l),this.parser.$static_env().$declare(name),this.$n("match_var",[name],$$$($$$($$("Source"),"Map"),"Variable").$new(name_l,expr_l))}),1),$def(self,"$match_hash_var_from_str",(function(begin_t,strings,end_t){var $a,$ret_or_1,string=nil,name=nil,name_l=nil,begin_l=nil,end_l=nil,expr_l=nil;return $truthy($rb_gt(strings.$length(),1))&&this.$diagnostic("error","pm_interp_in_var_name",nil,this.$loc(begin_t).$join(this.$loc(end_t))),string=strings["$[]"](0),$eqeqeq("str",$ret_or_1=string.$type())?(name=null==($a=[].concat($to_a(string)))[0]?nil:$a[0],name_l=string.$loc().$expression(),this.$check_lvar_name(name,name_l),this.$check_duplicate_pattern_variable(name,name_l),this.parser.$static_env().$declare(name),$truthy(begin_l=string.$loc().$begin())&&(name_l=name_l.$adjust($hash2(["begin_pos"],{begin_pos:begin_l.$length()}))),$truthy(end_l=string.$loc().$end())&&(name_l=name_l.$adjust($hash2(["end_pos"],{end_pos:end_l.$length()["$-@"]()}))),expr_l=this.$loc(begin_t).$join(string.$loc().$expression()).$join(this.$loc(end_t)),this.$n("match_var",[name.$to_sym()],$$$($$$($$("Source"),"Map"),"Variable").$new(name_l,expr_l))):$eqeqeq("begin",$ret_or_1)?this.$match_hash_var_from_str(begin_t,string.$children(),end_t):this.$diagnostic("error","pm_interp_in_var_name",nil,this.$loc(begin_t).$join(this.$loc(end_t)))}),3),$def(self,"$match_rest",(function(star_t,name_t){var name=nil;return null==name_t&&(name_t=nil),$truthy(name_t["$nil?"]())?this.$n0("match_rest",this.$unary_op_map(star_t)):(name=this.$match_var(name_t),this.$n("match_rest",[name],this.$unary_op_map(star_t,name)))}),-2),$def(self,"$hash_pattern",(function(lbrace_t,kwargs,rbrace_t){var args;return args=this.$check_duplicate_args(kwargs),this.$n("hash_pattern",args,this.$collection_map(lbrace_t,args,rbrace_t))}),3),$def(self,"$array_pattern",(function(lbrack_t,elements,rbrack_t){var node_elements,node_type,trailing_comma=nil;return $truthy(elements["$nil?"]())?this.$n("array_pattern",nil,this.$collection_map(lbrack_t,[],rbrack_t)):(trailing_comma=!1,node_elements=$send(elements,"map",[],(function(element){return null==element&&(element=nil),$eqeq(element.$type(),"match_with_trailing_comma")?(trailing_comma=!0,element.$children().$first()):(trailing_comma=!1,element)}),1),node_type=$truthy(trailing_comma)?"array_pattern_with_tail":"array_pattern",this.$n(node_type,node_elements,this.$collection_map(lbrack_t,elements,rbrack_t)))}),3),$def(self,"$find_pattern",(function(lbrack_t,elements,rbrack_t){return this.$n("find_pattern",elements,this.$collection_map(lbrack_t,elements,rbrack_t))}),3),$def(self,"$match_with_trailing_comma",(function(match,comma_t){return this.$n("match_with_trailing_comma",[match],this.$expr_map(match.$loc().$expression().$join(this.$loc(comma_t))))}),2),$def(self,"$const_pattern",(function(const$,ldelim_t,pattern,rdelim_t){return this.$n("const_pattern",[const$,pattern],$$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(ldelim_t),this.$loc(rdelim_t),const$.$loc().$expression().$join(this.$loc(rdelim_t))))}),4),$def(self,"$pin",(function(pin_t,var$){return this.$n("pin",[var$],this.$send_unary_op_map(pin_t,var$))}),2),$def(self,"$match_alt",(function(left,pipe_t,right){var source_map;return source_map=this.$binary_op_map(left,pipe_t,right),this.$n("match_alt",[left,right],source_map)}),3),$def(self,"$match_as",(function(value,assoc_t,as){var source_map;return source_map=this.$binary_op_map(value,assoc_t,as),this.$n("match_as",[value,as],source_map)}),3),$def(self,"$match_nil_pattern",(function(dstar_t,nil_t){return this.$n0("match_nil_pattern",this.$arg_prefix_map(dstar_t,nil_t))}),2),$def(self,"$match_pair",(function(label_type,label,value){var $a,begin_t=nil,parts=nil,end_t=nil,label_loc=nil,var_name=nil;return $eqeq(label_type,"label")?(this.$check_duplicate_pattern_key(label["$[]"](0),label["$[]"](1)),this.$pair_keyword(label,value)):(begin_t=null==($a=$to_ary(label))[0]?nil:$a[0],parts=null==$a[1]?nil:$a[1],end_t=null==$a[2]?nil:$a[2],label_loc=this.$loc(begin_t).$join(this.$loc(end_t)),$truthy(var_name=this.$static_string(parts))?this.$check_duplicate_pattern_key(var_name,label_loc):this.$diagnostic("error","pm_interp_in_var_name",nil,label_loc),this.$pair_quoted(begin_t,parts,end_t,value))}),3),$def(self,"$match_label",(function(label_type,label){var $a,begin_t=nil,strings=nil,end_t=nil;return $eqeq(label_type,"label")?this.$match_hash_var(label):(begin_t=null==($a=$to_ary(label))[0]?nil:$a[0],strings=null==$a[1]?nil:$a[1],end_t=null==$a[2]?nil:$a[2],this.$match_hash_var_from_str(begin_t,strings,end_t))}),2),self.$private(),$def(self,"$check_condition",(function(cond){var $a,$ret_or_1,lhs=nil,rhs=nil,type=nil,$ret_or_2=nil;return $eqeqeq("masgn",$ret_or_1=cond.$type())?$truthy($rb_le(this.parser.$version(),23))?this.$diagnostic("error","masgn_as_condition",nil,cond.$loc().$expression()):cond:$eqeqeq("begin",$ret_or_1)?$eqeq(cond.$children().$count(),1)?cond.$updated(nil,[this.$check_condition(cond.$children().$last())]):cond:$eqeqeq("and",$ret_or_1)||$eqeqeq("or",$ret_or_1)||$eqeqeq("irange",$ret_or_1)||$eqeqeq("erange",$ret_or_1)?(lhs=null==($a=[].concat($to_a(cond)))[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],type=$eqeqeq("irange",$ret_or_2=cond.$type())?"iflipflop":$eqeqeq("erange",$ret_or_2)?"eflipflop":nil,$truthy(["and","or"]["$include?"](cond.$type()))&&$eqeq(this.parser.$version(),18)?cond:cond.$updated(type,[this.$check_condition(lhs),this.$check_condition(rhs)])):$eqeqeq("regexp",$ret_or_1)?this.$n("match_current_line",[cond],this.$expr_map(cond.$loc().$expression())):cond}),1),$def(self,"$check_duplicate_args",(function(args,map){return null==map&&(map=$hash2([],{})),$send(args,"each",[],(function $$15(this_arg){var $ret_or_1,self=null==$$15.$$s?this:$$15.$$s;return null==this_arg&&(this_arg=nil),$eqeqeq("arg",$ret_or_1=this_arg.$type())||$eqeqeq("optarg",$ret_or_1)||$eqeqeq("restarg",$ret_or_1)||$eqeqeq("blockarg",$ret_or_1)||$eqeqeq("kwarg",$ret_or_1)||$eqeqeq("kwoptarg",$ret_or_1)||$eqeqeq("kwrestarg",$ret_or_1)||$eqeqeq("shadowarg",$ret_or_1)?self.$check_duplicate_arg(this_arg,map):$eqeqeq("procarg0",$ret_or_1)?$truthy(this_arg.$children()["$[]"](0)["$is_a?"]($$("Symbol")))?self.$check_duplicate_arg(this_arg,map):self.$check_duplicate_args(this_arg.$children(),map):$eqeqeq("mlhs",$ret_or_1)?self.$check_duplicate_args(this_arg.$children(),map):nil}),{$$arity:1,$$s:this})}),-2),$def(self,"$check_duplicate_arg",(function(this_arg,map){var $a,this_name,that_name,that_arg=nil,$writer=nil;return null==map&&(map=$hash2([],{})),this_name=null==($a=[].concat($to_a(this_arg)))[0]?nil:$a[0],that_arg=map["$[]"](this_name),that_name=null==($a=[].concat($to_a(that_arg)))[0]?nil:$a[0],$truthy(that_arg["$nil?"]())?($send(map,"[]=",$to_a($writer=[this_name,this_arg])),$writer[$rb_minus($writer.length,1)]):$truthy(this["$arg_name_collides?"](this_name,that_name))?this.$diagnostic("error","duplicate_argument",nil,this_arg.$loc().$name(),[that_arg.$loc().$name()]):nil}),-2),$def(self,"$validate_no_forward_arg_after_restarg",(function(args){var restarg=nil,forward_arg=nil;return restarg=nil,forward_arg=nil,$send(args,"each",[],(function(arg){var $ret_or_1;return null==arg&&(arg=nil),$eqeqeq("restarg",$ret_or_1=arg.$type())?restarg=arg:$eqeqeq("forward_arg",$ret_or_1)?forward_arg=arg:nil}),1),$not(forward_arg["$nil?"]())&&$not(restarg["$nil?"]())?this.$diagnostic("error","forward_arg_after_restarg",nil,forward_arg.$loc().$expression(),[restarg.$loc().$expression()]):nil}),1),$def(self,"$check_assignment_to_numparam",(function(name,loc){var assigning_to_numparam,$ret_or_1,$ret_or_2;return $truthy($rb_lt(this.parser.$version(),27))?nil:(assigning_to_numparam=$truthy($ret_or_1=$truthy($ret_or_2=this.parser.$context()["$in_dynamic_block?"]())?name["$=~"](/^_([1-9])$/):$ret_or_2)?this.parser.$max_numparam_stack()["$has_numparams?"]():$ret_or_1,$truthy(assigning_to_numparam)?this.$diagnostic("error","cant_assign_to_numparam",$hash2(["name"],{name:name}),loc):nil)}),2),$def(self,"$check_reserved_for_numparam",(function(name,loc){return $truthy($rb_lt(this.parser.$version(),30))?nil:$truthy(name["$=~"](/^_([1-9])$/))?this.$diagnostic("error","reserved_for_numparam",$hash2(["name"],{name:name}),loc):nil}),2),$def(self,"$arg_name_collides?",(function(this_name,that_name){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $eqeqeq(18,$ret_or_1=this.parser.$version())?this_name["$=="](that_name):$eqeqeq(19,$ret_or_1)?$truthy($ret_or_2=this_name["$!="]("_"))?this_name["$=="](that_name):$ret_or_2:$truthy($ret_or_2=$truthy($ret_or_3=this_name)?this_name["$[]"](0)["$!="]("_"):$ret_or_3)?this_name["$=="](that_name):$ret_or_2}),2),$def(self,"$check_lvar_name",(function(name,loc){return $truthy(name["$=~"](/^[[[:lower:]]_][[[:alnum:]]_]*$/))?nil:this.$diagnostic("error","lvar_name",$hash2(["name"],{name:name}),loc)}),2),$def(self,"$check_duplicate_pattern_variable",(function(name,loc){return $truthy(name.$to_s()["$start_with?"]("_"))?nil:($truthy(this.parser.$pattern_variables()["$declared?"](name))&&this.$diagnostic("error","duplicate_variable_name",$hash2(["name"],{name:name.$to_s()}),loc),this.parser.$pattern_variables().$declare(name))}),2),$def(self,"$check_duplicate_pattern_key",(function(name,loc){return $truthy(this.parser.$pattern_hash_keys()["$declared?"](name))&&this.$diagnostic("error","duplicate_pattern_key",$hash2(["name"],{name:name.$to_s()}),loc),this.parser.$pattern_hash_keys().$declare(name)}),2),$def(self,"$n",(function(type,children,source_map){return $$$($$("AST"),"Node").$new(type,children,$hash2(["location"],{location:source_map}))}),3),$def(self,"$n0",(function(type,source_map){return this.$n(type,[],source_map)}),2),$def(self,"$join_exprs",(function(left_expr,right_expr){return left_expr.$loc().$expression().$join(right_expr.$loc().$expression())}),2),$def(self,"$token_map",(function(token){return $$$($$("Source"),"Map").$new(this.$loc(token))}),1),$def(self,"$delimited_string_map",(function(string_t){var begin_l,end_l,str_range=nil;return begin_l=(str_range=this.$loc(string_t)).$with($hash2(["end_pos"],{end_pos:$rb_plus(str_range.$begin_pos(),1)})),end_l=str_range.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(str_range.$end_pos(),1)})),$$$($$$($$("Source"),"Map"),"Collection").$new(begin_l,end_l,this.$loc(string_t))}),1),$def(self,"$prefix_string_map",(function(symbol){var begin_l,str_range=nil;return begin_l=(str_range=this.$loc(symbol)).$with($hash2(["end_pos"],{end_pos:$rb_plus(str_range.$begin_pos(),1)})),$$$($$$($$("Source"),"Map"),"Collection").$new(begin_l,nil,this.$loc(symbol))}),1),$def(self,"$unquoted_map",(function(token){return $$$($$$($$("Source"),"Map"),"Collection").$new(nil,nil,this.$loc(token))}),1),$def(self,"$pair_keyword_map",(function(key_t,value_e){var key_l,colon_l,key_range=nil;return key_l=(key_range=this.$loc(key_t)).$adjust($hash2(["end_pos"],{end_pos:-1})),colon_l=key_range.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(key_range.$end_pos(),1)})),[$$$($$$($$("Source"),"Map"),"Collection").$new(nil,nil,key_l),$$$($$$($$("Source"),"Map"),"Operator").$new(colon_l,key_range.$join(value_e.$loc().$expression()))]}),2),$def(self,"$pair_quoted_map",(function(begin_t,end_t,value_e){var quote_l,colon_l,end_l=nil;return quote_l=(end_l=this.$loc(end_t)).$with($hash2(["begin_pos","end_pos"],{begin_pos:$rb_minus(end_l.$end_pos(),2),end_pos:$rb_minus(end_l.$end_pos(),1)})),colon_l=end_l.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(end_l.$end_pos(),1)})),[[this.$value(end_t),quote_l],$$$($$$($$("Source"),"Map"),"Operator").$new(colon_l,this.$loc(begin_t).$join(value_e.$loc().$expression()))]}),3),$def(self,"$expr_map",(function(loc){return $$$($$("Source"),"Map").$new(loc)}),1),$def(self,"$collection_map",(function(begin_t,parts,end_t){var expr_l=nil;return $truthy(begin_t["$nil?"]())||$truthy(end_t["$nil?"]())?$truthy(parts["$any?"]())?expr_l=this.$join_exprs(parts.$first(),parts.$last()):$not(begin_t["$nil?"]())?expr_l=this.$loc(begin_t):$not(end_t["$nil?"]())&&(expr_l=this.$loc(end_t)):expr_l=this.$loc(begin_t).$join(this.$loc(end_t)),$$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(begin_t),this.$loc(end_t),expr_l)}),3),$def(self,"$string_map",(function(begin_t,parts,end_t){var expr_l=nil;return $truthy(begin_t)&&$truthy(this.$value(begin_t)["$start_with?"]("<<"))?(expr_l=$truthy(parts["$any?"]())?this.$join_exprs(parts.$first(),parts.$last()):this.$loc(end_t).$begin(),$$$($$$($$("Source"),"Map"),"Heredoc").$new(this.$loc(begin_t),expr_l,this.$loc(end_t))):this.$collection_map(begin_t,parts,end_t)}),3),$def(self,"$regexp_map",(function(begin_t,end_t,options_e){return $$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(begin_t),this.$loc(end_t),this.$loc(begin_t).$join(options_e.$loc().$expression()))}),3),$def(self,"$constant_map",(function(scope,colon2_t,name_t){var expr_l=nil;return expr_l=$truthy(scope["$nil?"]())?this.$loc(name_t):scope.$loc().$expression().$join(this.$loc(name_t)),$$$($$$($$("Source"),"Map"),"Constant").$new(this.$loc(colon2_t),this.$loc(name_t),expr_l)}),3),$def(self,"$variable_map",(function(name_t){return $$$($$$($$("Source"),"Map"),"Variable").$new(this.$loc(name_t))}),1),$def(self,"$binary_op_map",(function(left_e,op_t,right_e){return $$$($$$($$("Source"),"Map"),"Operator").$new(this.$loc(op_t),this.$join_exprs(left_e,right_e))}),3),$def(self,"$unary_op_map",(function(op_t,arg_e){var expr_l=nil;return null==arg_e&&(arg_e=nil),expr_l=$truthy(arg_e["$nil?"]())?this.$loc(op_t):this.$loc(op_t).$join(arg_e.$loc().$expression()),$$$($$$($$("Source"),"Map"),"Operator").$new(this.$loc(op_t),expr_l)}),-2),$def(self,"$range_map",(function(start_e,op_t,end_e){var expr_l=nil;return $truthy(start_e)&&$truthy(end_e)?expr_l=this.$join_exprs(start_e,end_e):$truthy(start_e)?expr_l=start_e.$loc().$expression().$join(this.$loc(op_t)):$truthy(end_e)&&(expr_l=this.$loc(op_t).$join(end_e.$loc().$expression())),$$$($$$($$("Source"),"Map"),"Operator").$new(this.$loc(op_t),expr_l)}),3),$def(self,"$arg_prefix_map",(function(op_t,name_t){var expr_l=nil;return null==name_t&&(name_t=nil),expr_l=$truthy(name_t["$nil?"]())?this.$loc(op_t):this.$loc(op_t).$join(this.$loc(name_t)),$$$($$$($$("Source"),"Map"),"Variable").$new(this.$loc(name_t),expr_l)}),-2),$def(self,"$kwarg_map",(function(name_t,value_e){var name_range,expr_l=nil;return null==value_e&&(value_e=nil),name_range=this.$loc(name_t).$adjust($hash2(["end_pos"],{end_pos:-1})),expr_l=$truthy(value_e)?this.$loc(name_t).$join(value_e.$loc().$expression()):this.$loc(name_t),$$$($$$($$("Source"),"Map"),"Variable").$new(name_range,expr_l)}),-2),$def(self,"$module_definition_map",(function(keyword_t,name_e,operator_t,end_t){var name_l=nil;return $truthy(name_e)&&(name_l=name_e.$loc().$expression()),$$$($$$($$("Source"),"Map"),"Definition").$new(this.$loc(keyword_t),this.$loc(operator_t),name_l,this.$loc(end_t))}),4),$def(self,"$definition_map",(function(keyword_t,operator_t,name_t,end_t){return $$$($$$($$("Source"),"Map"),"MethodDefinition").$new(this.$loc(keyword_t),this.$loc(operator_t),this.$loc(name_t),this.$loc(end_t),nil,nil)}),4),$def(self,"$endless_definition_map",(function(keyword_t,operator_t,name_t,assignment_t,body_e){var body_l;return body_l=body_e.$loc().$expression(),$$$($$$($$("Source"),"Map"),"MethodDefinition").$new(this.$loc(keyword_t),this.$loc(operator_t),this.$loc(name_t),nil,this.$loc(assignment_t),body_l)}),5),$def(self,"$send_map",(function(receiver_e,dot_t,selector_t,begin_t,args,end_t){var begin_l=nil,end_l=nil;return null==begin_t&&(begin_t=nil),null==args&&(args=[]),null==end_t&&(end_t=nil),$truthy(receiver_e)?begin_l=receiver_e.$loc().$expression():$truthy(selector_t)&&(begin_l=this.$loc(selector_t)),$truthy(end_t)?end_l=this.$loc(end_t):$truthy(args["$any?"]())?end_l=args.$last().$loc().$expression():$truthy(selector_t)&&(end_l=this.$loc(selector_t)),$$$($$$($$("Source"),"Map"),"Send").$new(this.$loc(dot_t),this.$loc(selector_t),this.$loc(begin_t),this.$loc(end_t),begin_l.$join(end_l))}),-4),$def(self,"$var_send_map",(function(variable_e){return $$$($$$($$("Source"),"Map"),"Send").$new(nil,variable_e.$loc().$expression(),nil,nil,variable_e.$loc().$expression())}),1),$def(self,"$send_binary_op_map",(function(lhs_e,selector_t,rhs_e){return $$$($$$($$("Source"),"Map"),"Send").$new(nil,this.$loc(selector_t),nil,nil,this.$join_exprs(lhs_e,rhs_e))}),3),$def(self,"$send_unary_op_map",(function(selector_t,arg_e){var expr_l=nil;return expr_l=$truthy(arg_e["$nil?"]())?this.$loc(selector_t):this.$loc(selector_t).$join(arg_e.$loc().$expression()),$$$($$$($$("Source"),"Map"),"Send").$new(nil,this.$loc(selector_t),nil,nil,expr_l)}),2),$def(self,"$index_map",(function(receiver_e,lbrack_t,rbrack_t){return $$$($$$($$("Source"),"Map"),"Index").$new(this.$loc(lbrack_t),this.$loc(rbrack_t),receiver_e.$loc().$expression().$join(this.$loc(rbrack_t)))}),3),$def(self,"$send_index_map",(function(receiver_e,lbrack_t,rbrack_t){return $$$($$$($$("Source"),"Map"),"Send").$new(nil,this.$loc(lbrack_t).$join(this.$loc(rbrack_t)),nil,nil,receiver_e.$loc().$expression().$join(this.$loc(rbrack_t)))}),3),$def(self,"$block_map",(function(receiver_l,begin_t,end_t){return $$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(begin_t),this.$loc(end_t),receiver_l.$join(this.$loc(end_t)))}),3),$def(self,"$keyword_map",(function(keyword_t,begin_t,args,end_t){var $ret_or_1,end_l=nil;return args=$truthy($ret_or_1=args)?$ret_or_1:[],end_l=$truthy(end_t)?this.$loc(end_t):$truthy(args["$any?"]())&&$not(args.$last()["$nil?"]())?args.$last().$loc().$expression():$truthy(args["$any?"]())&&$truthy($rb_gt(args.$count(),1))?args["$[]"](-2).$loc().$expression():this.$loc(keyword_t),$$$($$$($$("Source"),"Map"),"Keyword").$new(this.$loc(keyword_t),this.$loc(begin_t),this.$loc(end_t),this.$loc(keyword_t).$join(end_l))}),4),$def(self,"$keyword_mod_map",(function(pre_e,keyword_t,post_e){return $$$($$$($$("Source"),"Map"),"Keyword").$new(this.$loc(keyword_t),nil,nil,this.$join_exprs(pre_e,post_e))}),3),$def(self,"$condition_map",(function(keyword_t,cond_e,begin_t,body_e,else_t,else_e,end_t){var end_l=nil;return end_l=$truthy(end_t)?this.$loc(end_t):$truthy(else_e)&&$truthy(else_e.$loc().$expression())?else_e.$loc().$expression():$truthy(this.$loc(else_t))?this.$loc(else_t):$truthy(body_e)&&$truthy(body_e.$loc().$expression())?body_e.$loc().$expression():$truthy(this.$loc(begin_t))?this.$loc(begin_t):cond_e.$loc().$expression(),$$$($$$($$("Source"),"Map"),"Condition").$new(this.$loc(keyword_t),this.$loc(begin_t),this.$loc(else_t),this.$loc(end_t),this.$loc(keyword_t).$join(end_l))}),7),$def(self,"$ternary_map",(function(begin_e,question_t,mid_e,colon_t,end_e){return $$$($$$($$("Source"),"Map"),"Ternary").$new(this.$loc(question_t),this.$loc(colon_t),this.$join_exprs(begin_e,end_e))}),5),$def(self,"$for_map",(function(keyword_t,in_t,begin_t,end_t){return $$$($$$($$("Source"),"Map"),"For").$new(this.$loc(keyword_t),this.$loc(in_t),this.$loc(begin_t),this.$loc(end_t),this.$loc(keyword_t).$join(this.$loc(end_t)))}),4),$def(self,"$rescue_body_map",(function(keyword_t,exc_list_e,assoc_t,exc_var_e,then_t,compstmt_e){var end_l=nil;return $truthy(compstmt_e)&&(end_l=compstmt_e.$loc().$expression()),$truthy(end_l["$nil?"]())&&$truthy(then_t)&&(end_l=this.$loc(then_t)),$truthy(end_l["$nil?"]())&&$truthy(exc_var_e)&&(end_l=exc_var_e.$loc().$expression()),$truthy(end_l["$nil?"]())&&$truthy(exc_list_e)&&(end_l=exc_list_e.$loc().$expression()),$truthy(end_l["$nil?"]())&&(end_l=this.$loc(keyword_t)),$$$($$$($$("Source"),"Map"),"RescueBody").$new(this.$loc(keyword_t),this.$loc(assoc_t),this.$loc(then_t),this.$loc(keyword_t).$join(end_l))}),6),$def(self,"$eh_keyword_map",(function(compstmt_e,keyword_t,body_es,else_t,else_e){var begin_l=nil,end_l=nil;return begin_l=$truthy(compstmt_e["$nil?"]())?$truthy(keyword_t["$nil?"]())?body_es.$first().$loc().$expression():this.$loc(keyword_t):compstmt_e.$loc().$expression(),end_l=$truthy(else_t)?$truthy(else_e["$nil?"]())?this.$loc(else_t):else_e.$loc().$expression():$not(body_es.$last()["$nil?"]())?body_es.$last().$loc().$expression():this.$loc(keyword_t),$$$($$$($$("Source"),"Map"),"Condition").$new(this.$loc(keyword_t),nil,this.$loc(else_t),nil,begin_l.$join(end_l))}),5),$def(self,"$guard_map",(function(keyword_t,guard_body_e){var guard_body_l,keyword_l=nil;return keyword_l=this.$loc(keyword_t),guard_body_l=guard_body_e.$loc().$expression(),$$$($$$($$("Source"),"Map"),"Keyword").$new(keyword_l,nil,nil,keyword_l.$join(guard_body_l))}),2),$def(self,"$static_string",(function(nodes){try{return $send(nodes,"map",[],(function $$18(node){var $ret_or_1,self=null==$$18.$$s?this:$$18.$$s,string=nil;if(null==node&&(node=nil),$eqeqeq("str",$ret_or_1=node.$type()))return node.$children()["$[]"](0);if($eqeqeq("begin",$ret_or_1)){if($truthy(string=self.$static_string(node.$children())))return string;Opal.ret(nil)}else Opal.ret(nil)}),{$$arity:1,$$s:this}).$join()}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),1),$def(self,"$static_regexp",(function(parts,options){var source=nil;return source=this.$static_string(parts),$truthy(source["$nil?"]())?nil:(source=$truthy(options.$children()["$include?"]("u"))?source.$encode($$$($$("Encoding"),"UTF_8")):$truthy(options.$children()["$include?"]("e"))?source.$encode($$$($$("Encoding"),"EUC_JP")):$truthy(options.$children()["$include?"]("s"))?source.$encode($$$($$("Encoding"),"WINDOWS_31J")):$truthy(options.$children()["$include?"]("n"))?source.$encode($$$($$("Encoding"),"BINARY")):source,$$("Regexp").$new(source,$truthy(options.$children()["$include?"]("x"))?$$$($$("Regexp"),"EXTENDED"):nil))}),2),$def(self,"$static_regexp_node",(function(node){var $a,parts=nil,options=nil;return $eqeq(node.$type(),"regexp")?(parts=($a=[node.$children()["$[]"]($range(0,-2,!1)),node.$children()["$[]"](-1)])[0],options=$a[1],this.$static_regexp(parts,options)):nil}),1),$def(self,"$collapse_string_parts?",(function(parts){var $ret_or_1;return $truthy($ret_or_1=parts["$one?"]())?["str","dstr"]["$include?"](parts.$first().$type()):$ret_or_1}),1),$def(self,"$value",(function(token){return token["$[]"](0)}),1),$def(self,"$string_value",(function(token){return $truthy(token["$[]"](0)["$valid_encoding?"]())||this.$diagnostic("error","invalid_encoding",nil,token["$[]"](1)),token["$[]"](0)}),1),$def(self,"$loc",(function(token){return $truthy(token)&&$truthy(token["$[]"](0))?token["$[]"](1):nil}),1),$def(self,"$diagnostic",(function(type,reason,arguments$,location,highlights){return null==highlights&&(highlights=[]),this.parser.$diagnostics().$process($$("Diagnostic").$new(type,reason,arguments$,location,highlights)),$eqeq(type,"error")?this.parser.$send("yyerror"):nil}),-5),$def(self,"$validate_definee",(function(definee){var $ret_or_1;return!($eqeqeq("int",$ret_or_1=definee.$type())||$eqeqeq("str",$ret_or_1)||$eqeqeq("dstr",$ret_or_1)||$eqeqeq("sym",$ret_or_1)||$eqeqeq("dsym",$ret_or_1)||$eqeqeq("regexp",$ret_or_1)||$eqeqeq("array",$ret_or_1)||$eqeqeq("hash",$ret_or_1))||(this.$diagnostic("error","singleton_literal",nil,definee.$loc().$expression()),!1)}),1),$def(self,"$rewrite_hash_args_to_kwargs",(function(args){var $writer=nil;return $truthy(args["$any?"]())&&$truthy(this["$kwargs?"](args.$last()))?($writer=[$rb_minus(args.$length(),1),args["$[]"]($rb_minus(args.$length(),1)).$updated("kwargs")],$send(args,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):$truthy($rb_gt(args.$length(),1))&&$eqeq(args.$last().$type(),"block_pass")&&$truthy(this["$kwargs?"](args["$[]"]($rb_minus(args.$length(),2))))?($writer=[$rb_minus(args.$length(),2),args["$[]"]($rb_minus(args.$length(),2)).$updated("kwargs")],$send(args,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),1),$def(self,"$kwargs?",(function(node){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=node.$type()["$=="]("hash"))?node.$loc().$begin()["$nil?"]():$ret_or_2)?node.$loc().$end()["$nil?"]():$ret_or_1}),1)}(Opal.$r($nesting)("Builders"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/context"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a,$truthy=Opal.truthy;return Opal.add_stubs("reset,attr_accessor,in_block,in_lambda"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Context"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"FLAGS",["in_defined","in_kwarg","in_argdef","in_def","in_class","in_block","in_lambda"]),$def(self,"$initialize",(function(){return this.$reset()}),0),$def(self,"$reset",(function(){return this.in_defined=!1,this.in_kwarg=!1,this.in_argdef=!1,this.in_def=!1,this.in_class=!1,this.in_block=!1,this.in_lambda=!1}),0),$send(self,"attr_accessor",$to_a($$("FLAGS"))),$def(self,"$in_dynamic_block?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$in_block())?$ret_or_1:this.$in_lambda()}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/max_numparam_stack"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus;return Opal.add_stubs("attr_reader,==,size,set,top,>,max,[],last,push,pop,private,[]=,-"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"MaxNumparamStack"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.stack=nil,self.$attr_reader("stack"),$const_set($nesting[0],"ORDINARY_PARAMS",-1),$def(self,"$initialize",(function(){return this.stack=[]}),0),$def(self,"$empty?",(function(){return this.stack.$size()["$=="](0)}),0),$def(self,"$has_ordinary_params!",(function(){return this.$set($$("ORDINARY_PARAMS"))}),0),$def(self,"$has_ordinary_params?",(function(){return this.$top()["$=="]($$("ORDINARY_PARAMS"))}),0),$def(self,"$has_numparams?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$top())?$rb_gt(this.$top(),0):$ret_or_1}),0),$def(self,"$register",(function(numparam){return this.$set([this.$top(),numparam].$max())}),1),$def(self,"$top",(function(){return this.stack.$last()["$[]"]("value")}),0),$def(self,"$push",(function($kwargs){var static$;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");if(!Opal.hasOwnProperty.call($kwargs.$$smap,"static"))throw Opal.ArgumentError.$new("missing keyword: static");return static$=$kwargs.$$smap.static,this.stack.$push($hash2(["value","static"],{value:0,static:static$}))}),1),$def(self,"$pop",(function(){return this.stack.$pop()["$[]"]("value")}),0),self.$private(),$def(self,"$set",(function(value){var $writer;return $writer=["value",value],$send(this.stack.$last(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/current_arg_stack"]=function(Opal){var $base,$parent_nesting,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$rb_minus=Opal.rb_minus,$send=Opal.send,$to_a=Opal.to_a;return Opal.add_stubs("attr_reader,freeze,==,size,<<,-,length,[]=,pop,clear,last"),$base=$nesting[0],$parent_nesting=$nesting,function($base,$super){var self=$klass($base,null,"CurrentArgStack");return self.$$prototype.stack=nil,self.$attr_reader("stack"),$def(self,"$initialize",(function(){return this.stack=[],this.$freeze()}),0),$def(self,"$empty?",(function(){return this.stack.$size()["$=="](0)}),0),$def(self,"$push",(function(value){return this.stack["$<<"](value)}),1),$def(self,"$set",(function(value){var $writer;return $writer=[$rb_minus(this.stack.$length(),1),value],$send(this.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$pop",(function(){return this.stack.$pop()}),0),$def(self,"$reset",(function(){return this.stack.$clear()}),0),$def(self,"$top",(function(){return this.stack.$last()}),0)}([$module($base,"Parser")].concat($parent_nesting)[0])},Opal.modules["parser/variables_stack"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("push,empty?,<<,new,pop,clear,last,to_sym,include?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"VariablesStack"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.stack=nil,$def(self,"$initialize",(function(){return this.stack=[],this.$push()}),0),$def(self,"$empty?",(function(){return this.stack["$empty?"]()}),0),$def(self,"$push",(function(){return this.stack["$<<"]($$("Set").$new())}),0),$def(self,"$pop",(function(){return this.stack.$pop()}),0),$def(self,"$reset",(function(){return this.stack.$clear()}),0),$def(self,"$declare",(function(name){return this.stack.$last()["$<<"](name.$to_sym())}),1),$def(self,"$declared?",(function(name){return this.stack.$last()["$include?"](name.$to_sym())}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/base"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$defs=Opal.defs,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$gvars=Opal.gvars,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$def=Opal.def,$not=Opal.not,$eqeqeq=Opal.eqeqeq,$to_ary=Opal.to_ary,$hash2=Opal.hash2;return Opal.add_stubs("default_parser,setup_source_buffer,default_encoding,parse,parse_with_comments,read,new,all_errors_are_fatal=,diagnostics,-,ignore_warnings=,lambda,puts,render,consumer=,force_encoding,dup,==,name,raw_source=,source=,private_class_method,attr_reader,version,diagnostics=,static_env=,context=,parser=,[],class,reset,source_buffer=,do_parse,comments=,comments,tokens=,!,raise,tokens,private,advance,===,diagnostic,map,process,yyerror,token_to_str"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Base"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.diagnostics=$proto.lexer=$proto.static_env=$proto.context=$proto.builder=$proto.current_arg_stack=$proto.pattern_variables=$proto.pattern_hash_keys=nil,$defs(self,"$parse",(function(string,file,line){var source_buffer,parser=nil;return null==file&&(file="(string)"),null==line&&(line=1),parser=this.$default_parser(),source_buffer=this.$setup_source_buffer(file,line,string,parser.$default_encoding()),parser.$parse(source_buffer)}),-2),$defs(self,"$parse_with_comments",(function(string,file,line){var source_buffer,parser=nil;return null==file&&(file="(string)"),null==line&&(line=1),parser=this.$default_parser(),source_buffer=this.$setup_source_buffer(file,line,string,parser.$default_encoding()),parser.$parse_with_comments(source_buffer)}),-2),$defs(self,"$parse_file",(function(filename){return this.$parse($$("File").$read(filename),filename)}),1),$defs(self,"$parse_file_with_comments",(function(filename){return this.$parse_with_comments($$("File").$read(filename),filename)}),1),$defs(self,"$default_parser",(function(){var parser=nil,$writer=nil;return parser=this.$new(),$writer=[!0],$send(parser.$diagnostics(),"all_errors_are_fatal=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!0],$send(parser.$diagnostics(),"ignore_warnings=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[$send(this,"lambda",[],(function(diagnostic){return null==$gvars.stderr&&($gvars.stderr=nil),null==diagnostic&&(diagnostic=nil),$gvars.stderr.$puts(diagnostic.$render())}),1)],$send(parser.$diagnostics(),"consumer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],parser}),0),$defs(self,"$setup_source_buffer",(function(file,line,string,encoding){var source_buffer,$writer=nil;return string=string.$dup().$force_encoding(encoding),source_buffer=$$$($$("Source"),"Buffer").$new(file,line),$eqeq(this.$name(),"Parser::Ruby18")?($send(source_buffer,"raw_source=",$to_a($writer=[string])),$writer[$rb_minus($writer.length,1)]):($send(source_buffer,"source=",$to_a($writer=[string])),$writer[$rb_minus($writer.length,1)]),source_buffer}),4),self.$private_class_method("setup_source_buffer"),self.$attr_reader("lexer"),self.$attr_reader("diagnostics"),self.$attr_reader("builder"),self.$attr_reader("static_env"),self.$attr_reader("source_buffer"),self.$attr_reader("context"),self.$attr_reader("max_numparam_stack"),self.$attr_reader("current_arg_stack"),self.$attr_reader("pattern_variables"),self.$attr_reader("pattern_hash_keys"),$def(self,"$initialize",(function(builder){var $writer=nil;return null==builder&&(builder=$$$($$$($$("Parser"),"Builders"),"Default").$new()),this.diagnostics=$$$($$("Diagnostic"),"Engine").$new(),this.static_env=$$("StaticEnvironment").$new(),this.context=$$("Context").$new(),this.max_numparam_stack=$$("MaxNumparamStack").$new(),this.current_arg_stack=$$("CurrentArgStack").$new(),this.pattern_variables=$$("VariablesStack").$new(),this.pattern_hash_keys=$$("VariablesStack").$new(),this.lexer=$$("Lexer").$new(this.$version()),$writer=[this.diagnostics],$send(this.lexer,"diagnostics=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[this.static_env],$send(this.lexer,"static_env=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[this.context],$send(this.lexer,"context=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.builder=builder,$writer=[this],$send(this.builder,"parser=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.last_token=nil,$truthy($$$(this.$class(),"Racc_debug_parser"))&&$truthy($$("ENV")["$[]"]("RACC_DEBUG"))&&(this.yydebug=!0),this.$reset()}),-1),$def(self,"$reset",(function(){return this.source_buffer=nil,this.lexer.$reset(),this.static_env.$reset(),this.context.$reset(),this.current_arg_stack.$reset(),this.pattern_variables.$reset(),this.pattern_hash_keys.$reset(),this}),0),$def(self,"$parse",(function(source_buffer){var self=this,$writer=nil,$ret_or_1=nil;return function(){try{return $writer=[source_buffer],$send(self.lexer,"source_buffer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.source_buffer=source_buffer,$truthy($ret_or_1=self.$do_parse())?$ret_or_1:nil}finally{self.source_buffer=nil,$writer=[nil],$send(self.lexer,"source_buffer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}}()}),1),$def(self,"$parse_with_comments",(function(source_buffer){var self=this,$writer=nil;return function(){try{return $writer=[[]],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],[self.$parse(source_buffer),self.lexer.$comments()]}finally{$writer=[nil],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}}()}),1),$def(self,"$tokenize",(function(source_buffer,recover){var self=this,$writer=nil,ast=nil;return null==recover&&(recover=!1),function(){try{$writer=[[]],$send(self.lexer,"tokens=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[[]],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)];try{ast=self.$parse(source_buffer)}catch($err){if(!Opal.rescue($err,[$$$($$("Parser"),"SyntaxError")]))throw $err;try{$not(recover)&&self.$raise()}finally{Opal.pop_exception()}}return[ast,self.lexer.$comments(),self.lexer.$tokens()]}finally{$writer=[nil],$send(self.lexer,"tokens=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[nil],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}}()}),-2),self.$private(),$def(self,"$next_token",(function(){var token;return token=this.lexer.$advance(),this.last_token=token,token}),0),$def(self,"$check_kwarg_name",(function(name_t){var $ret_or_1;return $eqeqeq(/^[a-z_]/,$ret_or_1=name_t["$[]"](0))?nil:$eqeqeq(/^[A-Z]/,$ret_or_1)?this.$diagnostic("error","argument_const",nil,name_t):nil}),1),$def(self,"$diagnostic",(function(level,reason,arguments$,location_t,highlights_ts){var $a,location,highlights;return null==highlights_ts&&(highlights_ts=[]),$a=$to_ary(location_t),null==$a[0]?nil:$a[0],location=null==$a[1]?nil:$a[1],highlights=$send(highlights_ts,"map",[],(function(token){var $c;return null==token&&(token=nil),$c=$to_ary(token),null==$c[0]?nil:$c[0],null==$c[1]?nil:$c[1]}),1),this.diagnostics.$process($$("Diagnostic").$new(level,reason,arguments$,location,highlights)),$eqeq(level,"error")?this.$yyerror():nil}),-5),$def(self,"$on_error",(function(error_token_id,error_value,value_stack){var $a,token_name,location;return token_name=this.$token_to_str(error_token_id),null==($a=$to_ary(error_value))[0]?nil:$a[0],location=null==$a[1]?nil:$a[1],this.diagnostics.$process($$("Diagnostic").$new("error","unexpected_token",$hash2(["token"],{token:token_name}),location))}),3)}($nesting[0],$$$($$("Racc"),"Parser"),$nesting)}($nesting[0],$nesting)},Opal.modules["parser/rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("new,process,include?,type,remove,wrap,insert_before,insert_after,replace,freeze,join,extend,warn_of_deprecation,class,warned_of_deprecation=,-"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Rewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.source_rewriter=nil,$def(self,"$rewrite",(function(source_buffer,ast){return this.source_rewriter=$$$($$("Source"),"Rewriter").$new(source_buffer),this.$process(ast),this.source_rewriter.$process()}),2),$def(self,"$assignment?",(function(node){return["lvasgn","ivasgn","gvasgn","cvasgn","casgn"]["$include?"](node.$type())}),1),$def(self,"$remove",(function(range){return this.source_rewriter.$remove(range)}),1),$def(self,"$wrap",(function(range,before,after){return this.source_rewriter.$wrap(range,before,after)}),3),$def(self,"$insert_before",(function(range,content){return this.source_rewriter.$insert_before(range,content)}),2),$def(self,"$insert_after",(function(range,content){return this.source_rewriter.$insert_after(range,content)}),2),$def(self,"$replace",(function(range,content){return this.source_rewriter.$replace(range,content)}),2),$const_set($nesting[0],"DEPRECATION_WARNING",["Parser::Rewriter is deprecated.","Please update your code to use Parser::TreeRewriter instead"].$join("\n").$freeze()),self.$extend($$("Deprecation")),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this,$writer=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),self.$class().$warn_of_deprecation(),$writer=[!0],$send($$$($$("Source"),"Rewriter"),"warned_of_deprecation=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield)}),-1)}($nesting[0],$$$($$$($$("Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)},Opal.modules["parser/tree_rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$def=(Opal.hash,Opal.def);return Opal.add_stubs("new,process,include?,type,remove,wrap,insert_before,insert_after,replace"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"TreeRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.source_rewriter=nil,$def(self,"$rewrite",(function(source_buffer,ast,$kwargs){var policy;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return policy=Opal.kwrestargs($kwargs,{}),this.source_rewriter=$$$($$$($$("Parser"),"Source"),"TreeRewriter").$new(source_buffer,Opal.to_hash(policy)),this.$process(ast),this.source_rewriter.$process()}),-3),$def(self,"$assignment?",(function(node){return["lvasgn","ivasgn","gvasgn","cvasgn","casgn"]["$include?"](node.$type())}),1),$def(self,"$remove",(function(range){return this.source_rewriter.$remove(range)}),1),$def(self,"$wrap",(function(range,before,after){return this.source_rewriter.$wrap(range,before,after)}),3),$def(self,"$insert_before",(function(range,content){return this.source_rewriter.$insert_before(range,content)}),2),$def(self,"$insert_after",(function(range,content){return this.source_rewriter.$insert_after(range,content)}),2),$def(self,"$replace",(function(range,content){return this.source_rewriter.$replace(range,content)}),2)}($nesting[0],$$$($$$($$("Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)},Opal.modules.parser=function(Opal){var self=Opal.top,$nesting=[],$$=Opal.$r($nesting),$$$=(Opal.nil,Opal.$$$),$truthy=Opal.truthy,$module=Opal.module;return Opal.add_stubs("=~,require,raise"),$truthy($$("RUBY_VERSION")["$=~"](/^1\.[89]\./))&&(self.$require("parser/version"),self.$raise($$("LoadError"),"parser v"+$$$($$("Parser"),"VERSION")+" cannot run on Ruby "+$$("RUBY_VERSION")+".\nPlease upgrade to Ruby 2.0.0 or higher, or use an older version of the parser gem.\n")),self.$require("set"),self.$require("racc/parser"),self.$require("ast"),function($base,$parent_nesting){var self=$module($base,"Parser"),$nesting=[self].concat($parent_nesting);return self.$require("parser/version"),self.$require("parser/messages"),self.$require("parser/deprecation"),function($base){var self=$module($base,"AST");self.$require("parser/ast/node"),self.$require("parser/ast/processor"),self.$require("parser/meta")}($nesting[0]),function($base){var self=$module($base,"Source");self.$require("parser/source/buffer"),self.$require("parser/source/range"),self.$require("parser/source/comment"),self.$require("parser/source/comment/associator"),self.$require("parser/source/rewriter"),self.$require("parser/source/rewriter/action"),self.$require("parser/source/tree_rewriter"),self.$require("parser/source/tree_rewriter/action"),self.$require("parser/source/map"),self.$require("parser/source/map/operator"),self.$require("parser/source/map/collection"),self.$require("parser/source/map/constant"),self.$require("parser/source/map/variable"),self.$require("parser/source/map/keyword"),self.$require("parser/source/map/definition"),self.$require("parser/source/map/method_definition"),self.$require("parser/source/map/send"),self.$require("parser/source/map/index"),self.$require("parser/source/map/condition"),self.$require("parser/source/map/ternary"),self.$require("parser/source/map/for"),self.$require("parser/source/map/rescue_body"),self.$require("parser/source/map/heredoc"),self.$require("parser/source/map/objc_kwarg")}($nesting[0]),self.$require("parser/syntax_error"),self.$require("parser/clobbering_error"),self.$require("parser/diagnostic"),self.$require("parser/diagnostic/engine"),self.$require("parser/static_environment"),self.$require("parser/lexer"),self.$require("parser/lexer/literal"),self.$require("parser/lexer/stack_state"),self.$require("parser/lexer/dedenter"),function($base){$module($base,"Builders").$require("parser/builders/default")}($nesting[0]),self.$require("parser/context"),self.$require("parser/max_numparam_stack"),self.$require("parser/current_arg_stack"),self.$require("parser/variables_stack"),self.$require("parser/base"),self.$require("parser/rewriter"),self.$require("parser/tree_rewriter")}($nesting[0],$nesting)},Opal.modules["parser/ruby31"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$not=Opal.not,$hash2=Opal.hash2,$send=Opal.send,$rb_gt=Opal.rb_gt,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$hash=Opal.hash,$const_set=Opal.const_set,$to_ary=Opal.to_ary,$eqeq=Opal.eqeq,$slice=Opal.slice;return Opal.add_stubs("require,end_with?,[],!,include?,diagnostic,extend_static,push,cmdarg,cond,unextend,pop,children,in_dynamic_block?,declared?,static_env,=~,expression,loc,has_ordinary_params?,max_numparam_stack,dup,stack,reverse_each,>,declare,register,to_i,new,each,split,empty?,[]=,-,+,compstmt,<<,preexe,nil?,begin_body,state=,alias,gvar,back_ref,undef_method,condition_mod,loop_mod,rescue_body,postexe,multi_assign,assign,array,op_assign,index,call_method,const_op_assignable,const_fetch,endless_method_name,def_endless_method,local_pop,in_def,in_def=,def_endless_singleton,logical_op,not_op,command_start=,in_kwarg,in_kwarg=,match_pattern,match_pattern_p,local_push,in_argdef=,in_block=,in_block,block,keyword_cmd,multi_lhs,begin,splat,concat,assignable,index_asgn,==,attr_asgn,const_global,const,symbol_internal,range_inclusive,range_exclusive,binary_op,unary_op,match_op,in_defined=,ternary,associate,declared_forward_args?,forwarded_args,block_pass,declared_anonymous_blockarg?,begin_keyword,condition,loop,case,case_match,for,in_class=,def_class,in_class,def_sclass,def_module,def_method,def_singleton,context,in_lambda,arg,restarg,size,procarg0,args,has_ordinary_params!,set,shadowarg,extend_dynamic,in_lambda=,call_lambda,has_numparams?,numargs,top,any?,when,in_pattern,if_guard,unless_guard,match_with_trailing_comma,array_pattern,find_pattern,hash_pattern,match_as,match_alt,const_pattern,match_rest,match_pair,match_label,match_nil_pattern,accessible,match_var,ident,pin,string_compose,dedent_string,dedent_level,string,character,xstring_compose,regexp_options,regexp_compose,words_compose,word,symbols_compose,string_internal,ivar,cvar,symbol,symbol_compose,respond_to?,negate,unary_num,integer,float,rational,complex,nil,self,true,false,__FILE__,__LINE__,__ENCODING__,nth_ref,declare_forward_args,forward_arg,check_kwarg_name,kwoptarg,kwarg,kwnilarg,kwrestarg,optarg,blockarg,declare_anonymous_blockarg,pair,pair_keyword,pair_label,pair_quoted,kwsplat,yyerrok"),self.$require("racc/parser.rb"),self.$require("parser"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var racc_action_table,racc_action_check,racc_action_pointer,racc_action_default,racc_goto_table,racc_goto_check,racc_goto_pointer,racc_goto_default,racc_reduce_table,racc_token_table,self=$klass($base,$super,"Ruby31"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),clist=nil,arr=nil,idx=nil,$proto=self.$$prototype;return $proto.static_env=$proto.lexer=$proto.max_numparam_stack=$proto.context=$proto.current_arg_stack=$proto.builder=$proto.pattern_variables=$proto.last_token=$proto.pattern_hash_keys=nil,$def(self,"$version",(function(){return 31}),0),$def(self,"$default_encoding",(function(){return $$$($$("Encoding"),"UTF_8")}),0),$def(self,"$endless_method_name",(function(name_t){return $not(["===","==","!=","<=",">="]["$include?"](name_t["$[]"](0)))&&$truthy(name_t["$[]"](0)["$end_with?"]("="))?this.$diagnostic("error","endless_setter",nil,name_t):nil}),1),$def(self,"$local_push",(function(){return this.static_env.$extend_static(),this.lexer.$cmdarg().$push(!1),this.lexer.$cond().$push(!1),this.max_numparam_stack.$push($hash2(["static"],{static:!0}))}),0),$def(self,"$local_pop",(function(){return this.static_env.$unextend(),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.max_numparam_stack.$pop()}),0),$def(self,"$try_declare_numparam",(function(node){var self=this,name=nil,location=nil,raw_max_numparam_stack=nil;return name=node.$children()["$[]"](0),!!($truthy(name["$=~"](/^_[1-9]$/))&&$not(self.$static_env()["$declared?"](name))&&$truthy(self.context["$in_dynamic_block?"]()))&&(location=node.$loc().$expression(),$truthy(self.$max_numparam_stack()["$has_ordinary_params?"]())&&self.$diagnostic("error","ordinary_param_defined",nil,[nil,location]),(raw_max_numparam_stack=self.$max_numparam_stack().$stack().$dup()).$pop(),function(){var $brk=Opal.new_brk();try{$send(raw_max_numparam_stack,"reverse_each",[],(function $$1(outer_scope){var self=null==$$1.$$s?this:$$1.$$s,outer_scope_has_numparams=nil;if(null==outer_scope&&(outer_scope=nil),!$truthy(outer_scope["$[]"]("static")))return outer_scope_has_numparams=$rb_gt(outer_scope["$[]"]("value"),0),$truthy(outer_scope_has_numparams)?self.$diagnostic("error","numparam_used_in_outer_scope",nil,[nil,location]):nil;Opal.brk(nil,$brk)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.$static_env().$declare(name),self.$max_numparam_stack().$register(name["$[]"](1).$to_i()),!0)}),1),clist=["-320,600,620,-119,1214,-121,-118,-320,-320,-320,221,222,1124,-320,-320","-624,-320,239,620,-123,620,925,-624,-110,-320,-732,237,428,-124,311","122,-122,430,429,717,311,-320,-320,620,-320,-320,-320,-320,-320,-116","-117,-124,620,620,-116,1001,828,718,627,892,925,627,126,240,-732,-123","833,125,-117,240,240,-320,-320,-320,-320,-320,-320,-320,-320,-320,-320","-320,-320,-320,-320,-624,-123,-320,-320,-320,-124,687,-320,-119,-110","-320,-121,-120,-320,1125,240,-720,135,-320,306,-320,-511,-320,-320,240","-320,-320,-320,-320,-320,-320,-320,-110,-320,-112,-109,310,-320,-320","-320,126,-120,310,-320,-320,125,-320,-320,-114,-110,-320,-320,-110,-113","-320,-320,126,-115,126,990,-113,125,-320,125,-110,-122,-320,-320,-122","-320,-320,-320,-320,-320,-118,126,126,-719,-107,1000,125,125,-116,-117","-124,126,126,-116,-117,-124,125,125,-108,221,222,218,-320,-320,-320","-320,-320,-320,-320,-320,-320,-320,-320,-320,-320,-320,221,222,-320","-320,-320,311,687,-320,-719,-123,-320,-111,661,-320,-123,648,-119,925","-320,-121,-320,-119,-320,-320,-121,-320,-320,-320,-320,-320,233,-320","-723,-320,-628,-720,-629,221,222,-723,-723,-723,104,105,-723,-723,-723","-320,-723,-120,-320,-320,-102,-320,-120,-320,-723,-723,-723,-723,-723","663,-320,924,-88,-122,219,-112,-723,-723,522,-723,-723,-723,-723,-723","-122,240,660,650,649,-122,-118,-111,-109,220,-744,-118,311,648,233,223","310,-116,240,-117,1063,300,-723,-723,-723,-723,-723,-723,-723,-723,-723","-723,-723,-723,-723,-723,233,682,-723,-723,-723,648,921,-723,106,107","-723,104,105,-723,-723,662,-723,-124,-723,126,-723,-112,-723,-723,125","-723,-723,-723,-723,-723,361,-723,-723,-723,-744,683,-719,-111,-109","648,306,650,649,646,648,362,648,-723,-110,648,-723,-723,-723,-723,240","-723,-744,-723,800,-320,-119,-112,-723,310,-112,-120,-320,-320,-320","650,649,-320,-320,-320,892,-320,-112,-111,-109,859,-111,-109,-112,-320","833,-320,-320,-320,875,106,107,919,-111,-109,-121,-320,-320,431,-320","-320,-320,-320,-320,650,649,646,949,471,650,649,650,649,655,650,649","653,920,1035,861,633,1063,233,-732,634,948,-320,-320,-320,-320,-320","-320,-320,-320,-320,-320,-320,-320,-320,-320,240,-629,-320,-320,-320","648,922,-320,-118,-635,-320,-119,-625,-320,-320,648,-320,-617,-320,-625","-320,510,-320,-320,-617,-320,-320,-320,-320,-320,683,-320,682,-320,507","506,-121,-118,-744,491,648,488,487,486,496,489,521,-320,-108,-623,-320","-320,-320,-320,499,-320,-623,-320,126,-723,-117,612,-320,125,614,-122","-723,-723,-723,650,649,651,-723,-723,633,-723,494,-625,960,650,649,664","-617,-723,-723,504,503,507,506,-121,633,-119,500,523,960,-723,-723,524","-723,-723,-723,-723,-723,239,650,649,659,491,-321,488,487,486,496,489","-623,-321,600,491,240,488,487,486,499,489,-321,-723,-723,-723,-723,-723","-723,-723,-723,-723,-723,-723,-723,-723,-723,558,-628,-723,-723,-723","494,688,-723,570,126,-723,648,572,-723,125,710,507,506,-723,574,-723","500,-723,-723,-114,-723,-723,-723,-723,-723,-614,-723,-723,-723,-321","126,-123,-614,-614,-614,125,135,-614,-614,-614,-614,-614,-723,-107,-87","-723,-723,-614,-723,-614,-723,-614,-614,-614,931,-116,485,-723,240,927","-120,-614,-614,928,-614,-614,-614,-614,-614,585,650,649,646,586,-311","227,-620,-621,227,950,951,-311,304,-620,-621,304,612,593,237,611,-311","-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614","-614,227,-614,-614,-614,227,-614,-614,592,315,-614,240,1188,-614,-614","233,-614,590,-614,126,-614,638,-614,-614,125,-614,-614,-614,-614,-614","-115,-614,-617,-614,-311,228,-620,-621,228,-617,-617,-617,-124,233,-617","-617,-617,-614,-617,306,-614,-614,-614,-614,597,-614,-617,-614,-617","-617,-617,612,-614,603,614,-614,228,264,-617,-617,228,-617,-617,-617","-617,-617,606,227,240,227,615,-356,-619,-622,675,616,636,574,-356,-619","-622,612,627,673,614,638,420,-356,-617,-617,-617,-617,-617,-617,-617","-617,-617,-617,-617,-617,-617,-617,631,754,-617,-617,-617,227,-617,-617","1149,1150,-617,499,630,-617,-617,632,-617,875,-617,640,-617,628,-617","-617,665,-617,-617,-617,-617,-617,228,-617,228,-617,-356,-619,-622,668","227,669,954,240,958,957,1197,1188,959,-617,-293,500,-617,-617,-617,-617","638,-617,671,-617,672,-723,676,1056,-617,240,-109,-617,-723,-723,-723","496,228,680,-723,-723,-320,-723,-118,956,264,499,681,-320,306,-723,-723","694,-720,985,892,695,-320,114,113,115,116,-723,-723,240,-723,-723,-723","-723,-723,228,221,222,697,118,117,119,261,700,507,506,263,262,701,500","703,264,104,105,221,222,358,-723,-723,-723,-723,-723,-723,-723,-723","-723,-723,-723,-723,-723,-723,-320,705,-723,-723,-723,-385,688,-723","227,719,-723,720,261,-723,227,1164,263,262,-723,724,-723,226,-723,-723","1162,-723,-723,-723,-723,-723,224,-723,-723,-723,726,102,90,93,94,732","95,97,96,98,754,985,892,-723,91,101,-723,-723,90,-111,499,-723,85,733","92,106,107,264,-723,264,91,-120,333,81,82,83,11,65,264,228,92,71,72","264,240,228,75,-723,73,74,76,35,36,79,80,788,240,240,500,240,84,33,32","114,113,115,116,-102,803,23,1056,240,606,281,282,10,53,335,12,118,117","119,108,64,110,109,111,814,112,120,121,-320,104,105,49,50,48,-321,-320","-723,819,-626,240,-720,-321,821,-723,-320,-626,280,279,-719,824,-321","829,-723,45,-626,830,38,834,858,66,67,227,862,68,863,40,-294,876,602","52,491,-723,488,487,486,558,489,520,24,558,888,892,910,102,90,93,94","913,95,97,96,98,914,-320,240,917,91,101,240,-321,926,-723,943,-626,85","944,92,106,107,945,962,46,47,333,81,82,83,11,65,964,300,970,71,72,972","974,228,75,-716,73,74,76,35,36,79,80,572,574,496,814,240,84,33,32,114","113,115,116,499,1159,23,488,487,486,306,489,10,53,335,12,118,117,119","108,64,110,109,111,306,112,120,121,227,104,105,49,50,48,-627,519,-614","507,506,814,264,-627,500,-614,520,892,987,988,-716,240,-627,240,-614","45,998,240,38,-295,240,66,67,1009,1013,68,1159,40,488,487,486,52,489","-716,-293,491,1017,488,487,486,24,489,700,718,1020,102,90,93,94,1022","95,97,96,98,1024,228,1026,1026,91,101,240,-627,774,-614,240,240,85,1054","92,106,107,1057,710,46,47,333,81,82,83,11,65,714,853,854,71,72,855,120","121,75,-717,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32,114,113","115,116,925,491,23,488,487,486,972,489,10,53,335,12,118,117,119,108","64,110,109,111,1069,112,120,121,240,104,105,49,50,48,814,491,-617,488","487,486,1086,489,710,-617,1088,1093,1094,1099,-717,1100,1101,714,-617","45,-296,1114,38,1115,1116,66,67,240,240,68,240,40,240,240,240,52,925","-717,710,491,1123,488,487,486,24,489,240,714,1129,102,90,93,94,1130","95,97,96,98,1132,700,1135,1138,91,101,1140,1142,240,-617,-385,1154,85","1165,92,106,107,1166,710,46,47,333,81,82,83,11,65,1026,1026,1026,71","72,1173,1186,1189,75,1194,73,74,76,35,36,79,80,256,1195,694,1115,1205","84,33,32,114,113,115,116,1205,700,23,129,130,131,132,133,10,53,335,12","118,117,119,108,64,110,109,111,1208,112,120,121,1210,104,105,49,50,48","264,268,269,270,271,281,282,276,277,272,273,1212,257,258,1214,1214,274","275,240,45,1026,255,38,1205,-720,66,67,-719,1231,68,1214,40,261,1214","267,52,263,262,1214,259,260,280,279,265,24,266,3,,,102,90,93,94,,95","97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32","114,113,115,116,,,23,,,,,677,10,53,335,12,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277","272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263","262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,278,,-265,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72",",,,75,,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32,114,113,115","116,,,23,,,,,889,10,53,335,12,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257","258,,,274,275,,45,,,337,,,66,67,,,68,,40,261,,267,52,263,262,,259,260","280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,","85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35","36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,677,10,53,335,12,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269","270,271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,337,,,66,67",",,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82","83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,918,10,53,335,12,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273",",257,258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259","260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278",",,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74","76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12","118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268","269,270,271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66","67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81","82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257","258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260","280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,","85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35","36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117","119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270","271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68",",40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,7,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258,,","274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279","265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,240,278,,,,,85,,92","106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79","80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271","281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40","261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,","104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258",",,274,275,,45,,,337,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280","279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,","92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36","79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271","281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40","261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,","104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258",",,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280","279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,","92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36","79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271","281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40","261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,","104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745,-745",",,274,275,,45,,,38,,,66,67,,264,68,,40,261,,267,52,263,262,,259,260","280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,261,,91,101,263,262",",259,260,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,","73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,264,491,23,488,487","486,,489,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,264,,261,,,,263,262,710,259,260,,,,,,274,275,,45,,,38,",",66,67,,,68,,40,261,,267,52,263,262,,259,260,,,265,24,266,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82","83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745","-745,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260","280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85",",92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36","79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271","281,282,276,277,272,273,,-745,-745,,,274,275,,45,,,38,,,66,67,,,68,","40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,","95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,","104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,45,,,38,,,66,67,,,68,,40","261,,267,52,263,262,,259,260,,,265,24,266,,,,102,90,93,94,,95,97,96","98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71","72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,",",,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,264,268,269,270,271,281,282,276,,272,273,,,,,,274,275,,45,",",38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266",",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47","7,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,264,268,269,270,271,281,282,,,272,273",",,,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260","280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85",",92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36","79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,-745,-745,-745","-745,281,282,,,-745,-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40,261",",267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95,97,96","98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71","72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,",",,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274,275,,45",",,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266",",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47","333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745","-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259","260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,",",85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76","35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,-745,-745","-745,-745,281,282,,,-745,-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40","261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65",",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,",",23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274,275",",45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24","266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106","107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113","115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121",",104,105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274","275,,245,,,253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,280,279,265","250,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745","-745,,,274,275,,245,,,253,,,66,67,,,68,,,261,,267,52,263,262,,259,260","280,279,265,250,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84","349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,245,",",253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,,,,250,,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47",",75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,",",,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,264,,,,,,,,,,,,,,,,274,275,,245,,,253,,,66,67,,,68,,,261,,,52,263","262,,259,260,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84","349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,245,",",253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,,,,250,,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,",",,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,",",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79","80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108","64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98",",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,","53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,",",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,","254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,436,,,,52,,,,,,",",,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,",",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79","80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,",",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35","36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,,,,85,,92,106,107,-441,,46,47,,,,-441,-441,-441",",,-441,-441,-441,,-441,,,,,,,,-441,-441,-441,-441,,,,,,,,,-441,-441",",-441,-441,-441,-441,-441,,,,,,,,,,,,,,,,,,,,,,,-441,-441,-441,-441","-441,-441,-441,-441,-441,-441,-441,-441,-441,-441,,,-441,-441,-441,",",-441,,306,-441,,,-441,-441,,-441,,-441,,-441,,-441,-441,,-441,-441","-441,-441,-441,,-441,-441,-441,,,,,,,,,,,,,,-441,,,-441,-441,,-441,","-441,81,82,83,,65,,-441,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33","32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,","112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,",",68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,","81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,",",84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66","67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117","119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,",",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73","74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,",",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,",",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-327,,46,47,,,,-327","-327,-327,,,-327,-327,-327,,-327,,,,,,,,-327,,-327,-327,,,,,,,,,-327","-327,,-327,-327,-327,-327,-327,,,,,,,,,,,,,,,,,,,,,,,-327,-327,-327","-327,-327,-327,-327,-327,-327,-327,-327,-327,-327,-327,,,-327,-327,-327",",,-327,,315,-327,,,-327,-327,,-327,,-327,,-327,,-327,-327,,-327,-327","-327,-327,-327,,-327,,-327,,,,,,,,,,,,,,-327,,,-327,-327,,-327,,-327","81,82,83,,65,,-327,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327","112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,",",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,","91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355","79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108","64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,","245,,,253,,,66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,","53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,",",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82","83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,",",52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33","32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327","112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,",",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,","91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36","79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108","64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98",",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,797,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73","74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,",",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,",",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,867,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82","83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,",",52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327","112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,",",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,","91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355","79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108","64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98",",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35","36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,",",,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,",",,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,",",,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,",",,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96","98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76","354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117","119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,",",,,,,245,,,253,,,66,67,,,68,,324,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,","118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,",",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47",",75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,",",,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49","50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,328,,,,,,250",",,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121",",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,797,,,","52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33","32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,240,,,81","82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,","84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66","67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,",",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,","118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,",",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47",",75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,","53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,",",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49","50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328",",,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106","107,,,46,47,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,",",84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38",",,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,","91,101,,,,,,420,85,,92,106,107,,,46,47,81,82,83,,65,,,,71,72,,,,75,","73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53",",,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,",",,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,",",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116",",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121",",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,322,","52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84","349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,",",66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96","98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76","354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117","119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,",",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73","74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,",",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,",",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,",",102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-275,,46","47,,,,-275,-275,-275,,,-275,-275,-275,491,-275,488,487,486,496,489,",",-275,-275,-275,,,,499,,,,,,-275,-275,,-275,-275,-275,-275,-275,,491",",488,487,486,496,489,494,,,,,,,,499,504,503,507,506,,,,500,,491,,488","487,486,496,489,-275,,,,,494,,-275,499,,,,306,-275,504,503,507,506,",",,500,,,,,,,,,494,485,,,,-275,-275,,,,,507,506,,,,500,,,,-275,,,-275",",81,82,83,-275,65,,485,,71,72,-275,,,75,,73,74,76,354,355,79,80,,,,",",84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79","80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95","97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73","74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,","53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,",",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,",",,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,","102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,","102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,","102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116",",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121",",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52",",,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33","32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84","349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66","67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,",",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,",",,,,245,,,253,,,66,67,,,68,,324,,,,52,,,328,,,,,,250,,,,,102,325,93","94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,",",,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121",",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52",",,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65","92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,",",,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66","67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,",",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,",",,,,245,,,253,,,66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","560,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,",",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,",",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49","50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328",",,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65","92,106,107,71,72,46,560,,75,,73,74,76,354,355,79,80,,,,,,84,349,357","114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84","349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66","67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,",",,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96","98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76","35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,",",,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325","93,94,,95,97,96,98,,,,,91,101,240,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,","254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,",",,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,",",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79","80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108","64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98",",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,","53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,",",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,","254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,",",,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,",",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11,65,,,,71,72,,,,75,,73,74","76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,,12,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,","118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,",",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47",",75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53",",,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,",",,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,",",,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48",",,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,",",,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,","102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,","102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116",",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47","81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114","113,115,116,,,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40",",,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,420,85",",92,106,107,,,46,47,81,82,83,,65,,,,71,72,,,,75,,73,74,76,35,36,79,80",",,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96","98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76","35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-725,,46,47,,,,-725,-725","-725,,,-725,-725,-725,,-725,,,,,,,,-725,-725,-725,-725,-725,,,,,,,,-725","-725,,-725,-725,-725,-725,-725,,,,,,,,,,,,,,,,,,,,,,,-725,-725,-725","-725,-725,-725,-725,-725,-725,-725,-725,-725,-725,-725,,,-725,-725,-725",",,-725,,,-725,,,-725,-725,,-725,,-725,,-725,,-725,-725,,-725,-725,-725","-725,-725,,-725,-725,-725,,,,,,,,,,,,,,-725,,,-725,-725,-725,-725,,-725","-724,-725,,,,,-725,-724,-724,-724,,,-724,-724,-724,,-724,,,,,,,,-724","-724,-724,-724,-724,,,,114,113,115,116,-724,-724,,-724,-724,-724,-724","-724,,,,,118,117,119,,,,,,,,,,,104,105,,,358,-724,-724,-724,-724,-724","-724,-724,-724,-724,-724,-724,-724,-724,-724,,,-724,-724,-724,,,-724",",,-724,,,-724,-724,,-724,,-724,,-724,,-724,-724,,-724,-724,-724,-724","-724,,-724,-724,-724,,102,90,93,94,,95,97,96,98,,,,-724,91,101,-724","-724,-724,-724,,-724,85,-724,92,106,107,-275,-724,81,82,83,11,65,-275","-275,-275,71,72,-275,-275,-275,75,-275,73,74,76,35,36,79,80,-275,-275","-275,-275,,84,33,32,114,113,115,116,-275,-275,23,-275,-275,-275,-275","-275,10,53,9,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275","-275,-275,,,-275,-275,-275,45,,-275,38,306,-275,66,67,-275,-275,68,-275","40,-275,,-275,52,-275,-275,,-275,-275,-275,-275,-275,24,-275,-275,-275",",102,90,93,94,,95,97,96,98,,,,-275,91,101,-275,-275,,-275,,-275,85,","92,106,107,,-275,46,47,81,82,83,,65,,,,71,72,,,,75,,73,74,76,35,36,79","80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,",",,91,101,126,,,,,125,85,,92,106,107,-312,,46,47,,,,-312,-312,-312,,","-312,-312,-312,,-312,,,,,,,,-312,,-312,-312,-312,,,,,,,,-312,-312,,-312","-312,-312,-312,-312,,,,,,,,,,,,,,,,,,,,,,,-312,-312,-312,-312,-312,-312","-312,-312,-312,-312,-312,-312,-312,-312,,,-312,-312,-312,,,-312,,,-312",",,-312,-312,,-312,,-312,,-312,,-312,-312,,-312,-312,-312,-312,-312,","-312,,-312,,,,,,,,,,,,,,-312,,,-312,-312,-312,-312,,-312,,-312,,81,82","83,-312,65,,,,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33","32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,","112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,",",68,,436,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,",",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117","119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,",",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73","74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,",",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,",",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,",",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116",",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104","105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52",",,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",436,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81","82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84","33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,",",,,,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1107,,,253",",,66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,",",,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1146,,,253,,","66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,",",,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,",",84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,253,,,66","67,,,68,,,491,,488,487,486,496,489,,,,,,,,,499,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,588,,494,85,,92,106,107,81,82,83,,65,507,506,,71","72,500,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116",",,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105",",,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72",",,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254",",,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,,,358",",,,,,,,,,,,,,,,,,,,346,,,253,,,66,67,,,68,,,491,,488,487,486,496,489",",,,,,,,,499,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,360,,494,85,,92","106,107,81,82,83,,65,507,506,,71,72,500,,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342",",,66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,",",,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66","67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81","82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1146,,,253,,,66,67,,","68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,400,64,110,109,401",",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,407,,,402,,,253,,,66,67",",,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68",",,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357","114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,,",",,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85","65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,341,,",",,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65","92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113","115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121",",104,105,,,358,,,,,,,,,,,,,,,,,,,,395,,,38,,,66,67,,,68,,40,,,,,,,,",",,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106","107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,350,,,118,117,119,400,64,110,109,401,,112,120,121,,104","105,,,358,,,,,,,,,,,,,,,,,,,,402,,,253,,,66,67,,,68,,,,,,,,,,,,,,,,",",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,185,196","186,209,182,202,192,191,212,213,207,190,189,184,210,214,215,194,183","197,201,203,195,188,,,,204,211,206,205,198,208,193,181,200,199,,,,,","180,187,178,179,175,176,177,138,140,137,,139,,,,,,,,169,170,,166,148","149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,,,,,,,,,163,162",",147,168,165,164,173,160,161,155,153,145,167,146,,,174,102,,,,,,,,,",",,,,101,185,196,186,209,182,202,192,191,212,213,207,190,189,184,210","214,215,194,183,197,201,203,195,188,,,,204,211,206,205,198,208,193,181","200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139,,,,,,,,169,170",",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,,,,,",",,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,,,174,102",",,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213,207,190,189","184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206,205,198,208","193,181,200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139,,,,,",",,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159",",,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146",",,174,102,,,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213,207","190,189,184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206,205","198,208,193,181,200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139",",,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158","159,,,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167","146,,,174,102,,,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213","207,190,189,184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206","294,293,295,292,181,200,199,,,,,,180,187,178,179,289,290,291,287,140","110,109,288,,112,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152",",,,171,172,158,159,,,,,,299,,,,,,,,163,162,,147,168,165,164,173,160","161,155,153,145,167,146,,,174,114,113,115,116,,,,,,491,,488,487,486","496,489,118,117,119,774,,,,777,499,,,,,104,105,,,358,,,,,,,,,,,,,494",",,,,,,776,,,747,507,506,,745,,500,746,,,,,,,,,,,,,,,,775,,,,102,90,93","94,,95,97,96,98,,,,,91,101,114,113,115,116,485,,85,,92,106,107,,,762","763,,118,117,119,774,,,491,777,488,487,486,496,489,104,105,,,358,,,","499,,,,,,,,,,,,,,,,776,,,747,,,494,745,,,746,,,,,504,503,507,506,,,","500,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,",",85,,92,106,107,,,762,763,,118,117,119,774,,,491,777,488,487,486,496","489,104,105,,,358,,,,499,,,,,,,,,,,,,,,,776,,,747,,,494,745,,,746,,749",",,504,503,507,506,,,,500,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91","101,114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,,777","754,,,,,104,105,,,358,499,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,","749,,,,,,,500,,,,,,,775,,,,102,755,93,94,,95,97,96,98,,,,,91,101,114","113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,491,777,488","487,486,496,489,104,105,,,358,,,,499,,,,,,,,,,,,,,,,776,,,747,,,494","745,,,746,,,,,504,503,507,506,,,,500,,,,775,,,,102,90,93,94,,95,97,96","98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119","774,,,491,777,488,487,486,496,489,104,105,,,358,,,,499,,,,,,,,,,,,,",",,776,,,747,,,494,745,,,746,,749,,,,,507,506,,,,500,,,,775,,,,102,90","93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762","763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776",",,747,,,,745,,,746,,749,,,,,,,491,,488,487,486,496,489,775,,,,102,90","93,94,499,95,97,96,98,,,,,91,101,240,114,113,115,116,,85,,92,106,107","494,,762,763,,,118,117,119,774,,507,506,777,,,500,,,104,105,,,358,,",",,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,485,,,,,,,,,,,,,775,,,,102","90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,","762,763,,118,117,119,774,,,,777,754,,,,,104,105,,,358,499,,,,,,,,,,",",,,,,,,,776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775,,,,102,755,93","94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763",",118,117,119,774,,,,777,754,,,,,104,105,,,358,499,,,,,,,,,,,,,,,,,,","776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775,,,,102,755,93,94,,95","97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,762,763,185,196,186,209,182","202,192,191,212,213,207,190,189,184,210,214,215,194,183,197,201,203","195,188,,,,204,211,206,205,198,208,193,181,200,199,,,,,,180,187,178","179,175,176,177,138,140,,,139,,,,,,,,169,170,,166,148,149,150,157,154","156,,,151,152,,,,171,172,158,159,,,,,,,,,,,,,,163,162,,147,168,165,164","173,160,161,155,153,145,167,146,,,174,114,113,115,116,,,491,,488,487","486,496,489,,,,118,117,119,774,,499,,777,754,,,,,104,105,,,358,499,",",,,,,,,494,,,,,,,,,,776,507,506,747,,,500,745,,,746,,749,,,,,,,500,",",,,,,775,,,,102,755,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,","85,,92,106,107,,,762,763,,118,117,119,774,,,,777,754,,,,,104,105,,,358","499,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775",",,,102,755,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106","107,,,762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,",",,,,,,,,776,,,747,,,,745,,,746,,,,,,,,,,,,,,,,775,,,,102,90,93,94,,95","97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763,,118","117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776,,,747,",",,745,,,746,,,,,,,,,,,,,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101","114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,,777,",",,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,,,,,,",",,,,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,",",85,,92,106,107,,,762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358",",,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,,,,,,,,,,,,,,775,,,,102","90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,","762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,114,113,115","116,,,,,,,,,776,,,747,118,117,119,745,,,746,,1053,,,,,104,105,,,358",",,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107",",,762,763,491,,488,487,486,496,489,,,,,102,90,93,94,499,95,97,96,98",",,,,91,101,114,113,115,116,,,85,,92,106,107,494,,,,,118,117,119,,504","503,507,506,,,,500,,104,105,,,358,,,,,,,,,,,,491,,488,487,486,496,489",",,,,,,,,499,,,,,,491,485,488,487,486,496,489,,,,,,,,,499,494,102,90","93,94,,95,97,96,98,,507,506,,91,101,500,,,,,494,85,,92,106,107,,,,504","503,507,506,,,491,500,488,487,486,496,489,,491,,488,487,486,496,489","499,,,,,485,,,499,,491,,488,487,486,496,489,,,,,,494,644,,499,485,,",",494,504,503,507,506,,,,500,504,503,507,506,,,,500,494,,,,,,,,,504,503","507,506,,,491,500,488,487,486,496,489,,,,,,,,,499,485,,,,,,,,485,,,",",,,,,,,,,494,,,,485,,,,,,,507,506,872,469,,500,871,,,,,,,,169,170,,166","148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,485",",,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,842,469,174",",843,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172","158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153","145,167,146,837,462,174,,838,,,,,,,,169,170,,166,148,149,150,157,154","156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165","164,173,160,161,155,153,145,167,146,465,469,174,,464,,,,,,,,169,170",",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,",",,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,729,469","174,,730,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171","172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155","153,145,167,146,556,462,174,,557,,,,,,,,169,170,,166,148,149,150,157","154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168","165,164,173,160,161,155,153,145,167,146,458,462,174,,459,,,,,,,,169","170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306",",,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,556","462,174,,557,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,",",,171,172,158,159,,,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161","155,153,145,167,146,729,469,174,,730,,,,,,,,169,170,,166,148,149,150","157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147","168,165,164,173,160,161,155,153,145,167,146,727,462,174,,728,,,,,,,","169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,",",,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146","807,462,174,,808,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152",",,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160","161,155,153,145,167,146,810,469,174,,811,,,,,,,,169,170,,166,148,149","150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162",",147,168,165,164,173,160,161,155,153,145,167,146,1200,462,174,,1201",",,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158","159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145","167,146,869,462,174,,870,,,,,,,,169,170,,166,148,149,150,157,154,156",",,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164","173,160,161,155,153,145,167,146,1202,469,174,,1203,,,,,,,,169,170,,166","148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,",",163,162,,147,168,165,164,173,160,161,155,153,145,167,146,839,469,174",",840,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172","158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153","145,167,146,1218,469,174,,1217,,,,,,,,169,170,,166,148,149,150,157,154","156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165","164,173,160,161,155,153,145,167,146,727,462,174,,728,,,,,,,,169,170",",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,",",,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,,,174"],racc_action_table=arr=$$$("Array").$new(28717,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),clist=["464,521,1016,837,1236,838,992,464,464,464,515,515,1053,464,464,289,464","23,835,631,1087,1058,289,807,464,927,443,137,396,785,3,840,137,137,501","31,464,464,1089,464,464,464,464,464,1104,1105,1108,384,385,392,850,622","501,625,1092,932,1092,331,23,928,521,625,331,393,1058,927,464,464,464","464,464,464,464,464,464,464,464,464,464,464,289,1165,464,464,464,443","464,464,1200,807,464,1201,839,464,1053,928,840,9,464,31,464,932,464","464,515,464,464,464,464,464,871,464,837,464,838,992,785,871,871,871","1016,1202,31,871,871,1016,871,464,631,807,464,464,807,464,871,464,835","396,1087,835,840,835,464,1087,807,464,871,871,1203,871,871,871,871,871","1222,622,1089,839,392,850,622,1089,1104,1105,1108,384,385,1104,1105","1108,384,385,393,981,981,12,871,871,871,871,871,871,871,871,871,871","871,871,871,871,553,553,871,871,871,69,871,871,1202,1165,871,839,416","871,1165,1127,1200,735,871,1201,871,1200,871,871,1201,871,871,871,871","871,251,871,729,871,243,1203,244,641,641,729,729,729,358,358,729,729","729,871,729,1202,871,871,802,871,1202,871,729,729,729,729,729,417,871","735,802,871,14,808,729,729,246,729,729,729,729,729,1203,981,416,1127","1127,1203,1222,810,979,15,251,1222,351,576,252,17,69,243,553,244,1127","27,729,729,729,729,729,729,729,729,729,729,729,729,729,729,20,458,729","729,729,656,729,729,358,358,729,48,48,729,729,417,729,246,729,641,729","808,729,729,641,729,729,729,729,729,42,729,729,729,252,459,810,810,979","947,351,576,576,576,658,45,414,729,458,413,729,729,729,729,53,729,20","729,576,730,458,808,729,351,808,729,730,730,730,656,656,730,730,730","1220,730,808,810,979,656,810,979,459,730,1220,730,730,730,1006,48,48","727,810,979,459,730,730,216,730,730,730,730,730,947,947,947,756,229","658,658,414,414,414,413,413,413,728,923,658,402,947,19,746,402,756,730","730,730,730,730,730,730,730,730,730,730,730,730,730,746,44,730,730,730","412,730,730,1006,231,730,727,291,730,730,418,730,288,730,291,730,235","730,730,288,730,730,730,730,730,870,730,869,730,700,700,728,923,19,972","415,972,972,972,972,972,245,730,44,290,730,730,730,730,972,730,290,730","996,872,44,822,730,996,822,730,872,872,872,412,412,412,872,872,776,872","972,291,776,418,418,418,288,872,872,972,972,972,972,870,931,869,972","247,931,872,872,248,872,872,872,872,872,254,415,415,415,1022,634,1022","1022,1022,1022,1022,290,634,362,914,972,914,914,914,1022,914,634,872","872,872,872,872,872,872,872,872,872,872,872,872,872,305,43,872,872,872","1022,872,872,319,389,872,411,320,872,389,914,1022,1022,872,323,872,1022","872,872,362,872,872,872,872,872,108,872,872,872,634,5,362,108,108,108","5,335,108,108,108,287,108,872,43,336,872,872,287,872,108,872,108,108","108,744,43,1022,872,338,744,872,108,108,744,108,108,108,108,108,339","411,411,411,340,347,286,294,295,29,759,759,347,286,294,295,29,376,346","21,376,347,108,108,108,108,108,108,108,108,108,108,108,108,108,108,287","345,108,108,108,1187,108,108,345,349,108,350,1187,108,108,352,108,345","108,509,108,1187,108,108,509,108,108,108,108,108,21,108,111,108,347","286,294,295,29,111,111,111,21,353,111,111,111,108,111,357,108,108,108","108,359,108,111,108,111,111,111,377,108,366,377,108,345,368,111,111","1187,111,111,111,111,111,371,442,374,404,378,54,293,292,442,379,404","381,54,293,292,380,390,442,380,404,391,54,111,111,111,111,111,111,111","111,111,111,111,111,111,111,395,939,111,111,111,394,111,111,1090,1090","111,939,394,111,111,397,111,678,111,406,111,394,111,111,426,111,111","111,111,111,442,111,404,111,54,293,292,432,1145,434,775,1157,775,775","1157,1145,775,111,435,939,111,111,111,111,1145,111,437,111,440,465,444","939,111,454,678,111,465,465,465,1132,394,456,465,465,811,465,678,775","531,1132,457,811,466,465,465,472,811,823,823,473,811,762,762,762,762","465,465,476,465,465,465,465,465,1145,383,383,477,762,762,762,531,478","1132,1132,531,531,481,1132,482,532,762,762,16,16,762,465,465,465,465","465,465,465,465,465,465,465,465,465,465,811,483,465,465,465,493,465","465,1106,505,465,508,532,465,18,1106,532,532,465,511,465,18,465,465","1106,465,465,465,465,465,18,465,465,465,517,762,762,762,762,525,762","762,762,762,945,1190,1190,465,762,762,465,465,88,465,945,465,762,526","762,762,762,533,465,534,88,465,387,387,387,387,387,387,535,1106,88,387","387,536,561,18,387,842,387,387,387,387,387,387,387,562,563,567,945,583","387,387,387,387,387,387,387,584,587,387,945,589,594,51,51,387,387,387","387,387,387,387,387,387,387,387,387,598,387,387,387,843,387,387,387","387,387,593,843,842,607,343,608,843,593,609,842,843,343,51,51,842,619","593,623,842,387,343,624,387,626,653,387,387,363,661,387,663,387,670","679,363,387,714,842,714,714,714,684,714,363,387,689,691,693,707,387","387,387,387,712,387,387,387,387,713,843,715,722,387,387,731,593,740","842,748,343,387,749,387,387,387,750,779,387,387,841,841,841,841,841","841,782,784,790,841,841,791,792,363,841,400,841,841,841,841,841,841","841,794,796,697,804,806,841,841,841,841,841,841,841,697,1099,841,1099","1099,1099,809,1099,841,841,841,841,841,841,841,841,841,841,841,841,812","841,841,841,242,841,841,841,841,841,344,242,400,697,697,813,816,344","697,400,242,825,831,832,400,836,344,845,400,841,849,851,841,866,868","841,841,877,890,841,1197,841,1197,1197,1197,841,1197,400,893,913,894","913,913,913,841,913,897,899,902,841,841,841,841,903,841,841,841,841","905,242,906,908,841,841,912,344,925,400,933,934,841,938,841,841,841","941,913,841,841,236,236,236,236,236,236,913,649,649,236,236,649,649","649,236,401,236,236,236,236,236,236,236,8,8,8,8,8,236,236,236,236,236","236,236,946,494,236,494,494,494,965,494,236,236,236,236,236,236,236","236,236,236,236,236,968,236,236,236,969,236,236,236,236,236,978,710","401,710,710,710,983,710,494,401,986,993,995,1002,401,1003,1004,494,401","236,1005,1031,236,1032,1037,236,236,1042,1043,236,1044,236,1045,1046","1047,236,1051,401,710,1114,1052,1114,1114,1114,236,1114,1055,710,1059","236,236,236,236,1066,236,236,236,236,1071,1072,1074,1075,236,236,1076","1078,1079,401,1080,1096,236,1107,236,236,236,1110,1114,236,236,1103","1103,1103,1103,1103,1103,1111,1112,1113,1103,1103,1124,1143,1146,1103","1155,1103,1103,1103,1103,1103,1103,1103,25,1156,1161,1171,1172,1103","1103,1103,1103,1103,1103,1103,1174,1177,1103,581,581,581,581,581,1103","1103,1103,1103,1103,1103,1103,1103,1103,1103,1103,1103,1180,1103,1103","1103,1181,1103,1103,1103,1103,1103,25,25,25,25,25,25,25,25,25,25,25","1182,25,25,1183,1185,25,25,1199,1103,1204,25,1103,1206,1217,1103,1103","1218,1224,1103,1225,1103,25,1226,25,1103,25,25,1227,25,25,25,25,25,1103","25,1,,,1103,1103,1103,1103,,1103,1103,1103,1103,,,,,1103,1103,,25,,",",,1103,,1103,1103,1103,,,1103,1103,997,997,997,997,997,997,,,,997,997",",,,997,,997,997,997,997,997,997,997,373,373,373,373,373,997,997,997","997,997,997,997,,,997,,,,,447,997,997,997,997,997,997,997,997,997,997","997,997,,997,997,997,,997,997,997,997,997,447,447,447,447,447,447,447","447,447,447,447,,447,447,,,447,447,,997,,,997,,,997,997,,,997,,997,447",",447,997,447,447,,447,447,447,447,447,997,447,,,,997,997,997,997,,997","997,997,997,,,,,997,997,,447,,447,,,997,,997,997,997,,,997,997,337,337","337,337,337,337,,,,337,337,,,,337,,337,337,337,337,337,337,337,334,334","334,334,334,337,337,337,337,337,337,337,,,337,,,,,692,337,337,337,337","337,337,337,337,337,337,337,337,,337,337,337,,337,337,337,337,337,692","692,692,692,692,692,692,692,692,692,692,,692,692,,,692,692,,337,,,337",",,337,337,,,337,,337,692,,692,337,692,692,,692,692,692,692,692,337,692",",,,337,337,337,337,,337,337,337,337,,,,,337,337,,692,,,,,337,,337,337","337,,,337,337,38,38,38,38,38,38,,,,38,38,,,,38,,38,38,38,38,38,38,38",",,,,,38,38,38,38,38,38,38,,,38,,,,,453,38,38,38,38,38,38,38,38,38,38","38,38,,38,38,38,,38,38,38,38,38,453,453,453,453,453,453,453,453,453","453,453,,453,453,,,453,453,,38,,,38,,,38,38,,,38,,38,453,,453,38,453","453,,453,453,453,453,453,38,453,,,,38,38,38,38,,38,38,38,38,,,,,38,38",",453,,,,,38,,38,38,38,,,38,38,642,642,642,642,642,642,,,,642,642,,,","642,,642,642,642,642,642,642,642,,,,,,642,642,642,642,642,642,642,,","642,,,,,723,642,642,642,642,642,642,642,642,642,642,642,642,,642,642","642,,642,642,642,642,642,723,723,723,723,723,723,723,723,723,723,723",",723,723,,,723,723,,642,,,642,,,642,642,,,642,,642,723,,723,642,723","723,,723,723,723,723,723,642,723,,,,642,642,642,642,,642,642,642,642",",,,,642,642,,723,,,,,642,,642,642,642,,,642,642,1068,1068,1068,1068","1068,1068,,,,1068,1068,,,,1068,,1068,1068,1068,1068,1068,1068,1068,",",,,,1068,1068,1068,1068,1068,1068,1068,,,1068,,,,,,1068,1068,1068,1068","1068,1068,1068,1068,1068,1068,1068,1068,,1068,1068,1068,,1068,1068,1068","1068,1068,817,817,817,817,817,817,817,817,817,817,817,,817,817,,,817","817,,1068,,,1068,,,1068,1068,,,1068,,1068,817,,817,1068,817,817,,817","817,817,817,817,1068,817,,,,1068,1068,1068,1068,,1068,1068,1068,1068",",,,,1068,1068,,817,,,,,1068,,1068,1068,1068,,,1068,1068,372,372,372","372,372,372,,,,372,372,,,,372,,372,372,372,372,372,372,372,,,,,,372","372,372,372,372,372,372,,,372,,,,,,372,372,372,372,372,372,372,372,372","372,372,372,,372,372,372,,372,372,372,372,372,874,874,874,874,874,874","874,874,874,874,874,,874,874,,,874,874,,372,,,372,,,372,372,,,372,,372","874,,874,372,874,874,,874,874,874,874,874,372,874,,,,372,372,372,372",",372,372,372,372,,,,,372,372,,874,,,,,372,,372,372,372,,,372,372,973","973,973,973,973,973,,,,973,973,,,,973,,973,973,973,973,973,973,973,",",,,,973,973,973,973,973,973,973,,,973,,,,,,973,973,973,973,973,973,973","973,973,973,973,973,,973,973,973,,973,973,973,973,973,317,317,317,317","317,317,317,317,317,317,317,,317,317,,,317,317,,973,,,973,,,973,973",",,973,,973,317,,317,973,317,317,,317,317,317,317,317,973,317,,,,973","973,973,973,,973,973,973,973,,,,,973,973,,317,,,,,973,,973,973,973,",",973,973,2,2,2,2,2,2,,,,2,2,,,,2,,2,2,2,2,2,2,2,,,,,,2,2,2,2,2,2,2,",",2,,,,,,2,2,2,2,2,2,2,2,2,2,2,2,,2,2,2,,2,2,2,2,2,550,550,550,550,550","550,550,550,550,550,550,,550,550,,,550,550,,2,,,2,,,2,2,,,2,,2,550,","550,2,550,550,,550,550,550,550,550,2,550,,,,2,2,2,2,,2,2,2,2,,,,,2,2","550,550,,,,,2,,2,2,2,,,2,2,230,230,230,230,230,230,,,,230,230,,,,230",",230,230,230,230,230,230,230,,,,,,230,230,230,230,230,230,230,,,230",",,,,,230,230,230,230,230,230,230,230,230,230,230,230,,230,230,230,,230","230,230,230,230,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067",",1067,1067,,,1067,1067,,230,,,230,,,230,230,,,230,,230,1067,,1067,230","1067,1067,,1067,1067,1067,1067,1067,230,1067,,,,230,230,230,230,,230","230,230,230,,,,,230,230,,1067,,,,,230,,230,230,230,,,230,230,342,342","342,342,342,342,,,,342,342,,,,342,,342,342,342,342,342,342,342,,,,,","342,342,342,342,342,342,342,,,342,,,,,,342,342,342,342,342,342,342,342","342,342,342,342,,342,342,342,,342,342,342,342,342,1034,1034,1034,1034","1034,1034,1034,1034,1034,1034,1034,,1034,1034,,,1034,1034,,342,,,342",",,342,342,,,342,,342,1034,,1034,342,1034,1034,,1034,1034,1034,1034,1034","342,1034,,,,342,342,342,342,,342,342,342,342,,,,,342,342,,1034,,,,,342",",342,342,342,,,342,342,253,253,253,253,253,253,,,,253,253,,,,253,,253","253,253,253,253,253,253,,,,,,253,253,253,253,253,253,253,,,253,,,,,","253,253,253,253,253,253,253,253,253,253,253,253,,253,253,253,,253,253","253,253,253,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,","1033,1033,,,1033,1033,,253,,,253,,,253,253,,,253,,253,1033,,1033,253","1033,1033,,1033,1033,1033,1033,1033,253,1033,,,,253,253,253,253,,253","253,253,253,,,,,253,253,,1033,,,,,253,,253,253,253,,,253,253,1013,1013","1013,1013,1013,1013,,,,1013,1013,,,,1013,,1013,1013,1013,1013,1013,1013","1013,,,,,,1013,1013,1013,1013,1013,1013,1013,,,1013,,,,,,1013,1013,1013","1013,1013,1013,1013,1013,1013,1013,1013,1013,,1013,1013,1013,,1013,1013","1013,1013,1013,1011,1011,1011,1011,1011,1011,1011,1011,1011,1011,1011",",1011,1011,,,1011,1011,,1013,,,1013,,,1013,1013,,,1013,,1013,1011,,1011","1013,1011,1011,,1011,1011,1011,1011,1011,1013,1011,,,,1013,1013,1013","1013,,1013,1013,1013,1013,,,,,1013,1013,,1011,,,,,1013,,1013,1013,1013",",,1013,1013,1098,1098,1098,1098,1098,1098,,,,1098,1098,,,,1098,,1098","1098,1098,1098,1098,1098,1098,,,,,,1098,1098,1098,1098,1098,1098,1098",",,1098,,,,,,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098",",1098,1098,1098,,1098,1098,1098,1098,1098,1010,1010,1010,1010,1010,1010","1010,1010,1010,1010,1010,,1010,1010,,,1010,1010,,1098,,,1098,,,1098","1098,,,1098,,1098,1010,,1010,1098,1010,1010,,1010,1010,1010,1010,1010","1098,1010,,,,1098,1098,1098,1098,,1098,1098,1098,1098,,,,,1098,1098",",1010,,,,,1098,,1098,1098,1098,,,1098,1098,1097,1097,1097,1097,1097","1097,,,,1097,1097,,,,1097,,1097,1097,1097,1097,1097,1097,1097,,,,,,1097","1097,1097,1097,1097,1097,1097,,,1097,,,,,,1097,1097,1097,1097,1097,1097","1097,1097,1097,1097,1097,1097,,1097,1097,1097,,1097,1097,1097,1097,1097","529,529,529,529,529,529,529,529,529,529,529,,529,529,,,529,529,,1097",",,1097,,,1097,1097,,546,1097,,1097,529,,529,1097,529,529,,529,529,529","529,529,1097,529,,,,1097,1097,1097,1097,,1097,1097,1097,1097,,,546,","1097,1097,546,546,,546,546,,1097,,1097,1097,1097,,,1097,1097,1147,1147","1147,1147,1147,1147,,,,1147,1147,,,,1147,,1147,1147,1147,1147,1147,1147","1147,,,,,,1147,1147,1147,1147,1147,1147,1147,547,1115,1147,1115,1115","1115,,1115,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147",",1147,1147,1147,,1147,1147,1147,1147,1147,604,,547,,,,547,547,1115,547","547,,,,,,604,604,,1147,,,1147,,,1147,1147,,,1147,,1147,604,,604,1147","604,604,,604,604,,,604,1147,604,,,,1147,1147,1147,1147,,1147,1147,1147","1147,,,,,1147,1147,,,,,,,1147,,1147,1147,1147,,,1147,1147,621,621,621","621,621,621,,,,621,621,,,,621,,621,621,621,621,621,621,621,,,,,,621","621,621,621,621,621,621,,,621,,,,,,621,621,621,621,621,621,621,621,621","621,621,621,,621,621,621,,621,621,621,621,621,364,364,364,364,364,364","364,364,364,364,364,,364,364,,,364,364,,621,,,621,,,621,621,,,621,,621","364,,364,621,364,364,,364,364,364,364,364,621,364,,,,621,621,621,621",",621,621,621,621,,,,,621,621,,,,,,,621,,621,621,621,,,621,621,892,892","892,892,892,892,,,,892,892,,,,892,,892,892,892,892,892,892,892,,,,,","892,892,892,892,892,892,892,,,892,,,,,,892,892,892,892,892,892,892,892","892,892,892,892,,892,892,892,,892,892,892,892,892,365,365,365,365,365","365,365,365,365,365,365,,365,365,,,365,365,,892,,,892,,,892,892,,,892",",892,365,,365,892,365,365,,365,365,365,365,365,892,365,,,,892,892,892","892,,892,892,892,892,,,,,892,892,,,,,,,892,,892,892,892,,,892,892,618","618,618,618,618,618,,,,618,618,,,,618,,618,618,618,618,618,618,618,",",,,,618,618,618,618,618,618,618,,,618,,,,,,618,618,618,618,618,618,618","618,618,618,618,618,,618,618,618,,618,618,618,618,618,551,,,,,,,,,,",",,,,,551,551,,618,,,618,,,618,618,,,618,,618,551,,551,618,551,551,,551","551,,,551,618,551,,,,618,618,618,618,,618,618,618,618,,,,,618,618,,",",,,,618,,618,618,618,,,618,618,1191,1191,1191,1191,1191,1191,,,,1191","1191,,,,1191,,1191,1191,1191,1191,1191,1191,1191,,,,,,1191,1191,1191","1191,1191,1191,1191,,,1191,,,,,,1191,1191,1191,1191,1191,1191,1191,1191","1191,1191,1191,1191,,1191,1191,1191,,1191,1191,1191,1191,1191,549,549","549,549,549,549,549,549,,549,549,,,,,,549,549,,1191,,,1191,,,1191,1191",",,1191,,1191,549,,549,1191,549,549,,549,549,549,549,549,1191,549,,,","1191,1191,1191,1191,,1191,1191,1191,1191,,,,,1191,1191,,,,,,,1191,,1191","1191,1191,,,1191,1191,135,135,135,135,135,135,,,,135,135,,,,135,,135","135,135,135,135,135,135,,,,,,135,135,135,135,135,135,135,,,135,,,,,","135,135,135,135,135,135,135,135,135,135,135,135,,135,135,135,,135,135","135,135,135,548,548,548,548,548,548,548,,,548,548,,,,,,548,548,,135",",,135,,,135,135,,,135,,135,548,,548,135,548,548,,548,548,548,548,548","135,548,,,,135,135,135,135,,135,135,135,135,,,,,135,135,,,,,,,135,,135","135,135,,,135,135,218,218,218,218,218,218,,,,218,218,,,,218,,218,218","218,218,218,218,218,,,,,,218,218,218,218,218,218,218,,,218,,,,,,218","218,218,218,218,218,218,218,218,218,218,218,,218,218,218,,218,218,218","218,218,545,545,545,545,545,545,545,,,545,545,,,,,,545,545,,218,,,218",",,218,218,,,218,,218,545,,545,218,545,545,,545,545,545,545,545,218,545",",,,218,218,218,218,,218,218,218,218,,,,,218,218,,,,,,,218,,218,218,218",",,218,218,846,846,846,846,846,846,,,,846,846,,,,846,,846,846,846,846","846,846,846,,,,,,846,846,846,846,846,846,846,,,846,,,,,,846,846,846","846,846,846,846,846,846,846,846,846,,846,846,846,,846,846,846,846,846","544,544,544,544,544,544,544,,,544,544,,,,,,544,544,,846,,,846,,,846","846,,,846,,846,544,,544,846,544,544,,544,544,544,544,544,846,544,,,","846,846,846,846,,846,846,846,846,,,,,846,846,,,,,,,846,,846,846,846",",,846,846,857,857,857,857,857,857,,,,857,857,,,,857,,857,857,857,857","857,857,857,,,,,,857,857,857,857,857,857,857,,,857,,,,,,857,857,857","857,857,857,857,857,857,857,857,857,,857,857,857,,857,857,857,857,857","543,543,543,543,543,543,543,,,543,543,,,,,,543,543,,857,,,857,,,857","857,,,857,,857,543,,543,857,543,543,,543,543,543,543,543,857,543,,,","857,857,857,857,,857,857,857,857,,,,,857,857,,,,,,,857,,857,857,857",",,857,857,388,388,388,388,388,388,,,,388,388,,,,388,,388,388,388,388","388,388,388,,,,,,388,388,388,388,388,388,388,,,388,,,,,,388,388,388","388,388,388,388,388,388,388,388,388,,388,388,388,,388,388,388,388,388","542,542,542,542,542,542,542,,,542,542,,,,,,542,542,,388,,,388,,,388","388,,,388,,388,542,,542,388,542,542,,542,542,542,542,542,388,542,,,","388,388,388,388,,388,388,388,388,,,,,388,388,,,,,,,388,,388,388,388",",,388,388,991,991,991,991,991,991,,,,991,991,,,,991,,991,991,991,991","991,991,991,,,,,,991,991,991,991,991,991,991,,,991,,,,,,991,991,991","991,991,991,991,991,991,991,991,991,,991,991,991,,991,991,991,991,991","541,541,541,541,541,541,541,,,541,541,,,,,,541,541,,991,,,991,,,991","991,,,991,,991,541,,541,991,541,541,,541,541,541,541,541,991,541,,,","991,991,991,991,,991,991,991,991,,,,,991,991,,,,920,920,920,991,920","991,991,991,920,920,991,991,,920,,920,920,920,920,920,920,920,,,,,,920","920,920,920,920,920,920,,,920,,,,,,,920,,,920,920,920,920,920,920,920","920,,920,920,920,,920,920,920,920,920,540,540,540,540,540,540,540,,","540,540,,,,,,540,540,,920,,,920,,,920,920,,,920,,,540,,540,920,540,540",",540,540,540,540,540,920,540,,,,920,920,920,920,,920,920,920,920,,,",",920,920,,,,921,921,921,920,921,920,920,920,921,921,920,920,,921,,921","921,921,921,921,921,921,,,,,,921,921,921,921,921,921,921,,,921,,,,,",",921,,,921,921,921,921,921,921,921,921,,921,921,921,,921,921,921,921","921,530,530,530,530,530,530,530,530,530,530,530,,530,530,,,530,530,","921,,,921,,,921,921,,,921,,,530,,530,921,530,530,,530,530,530,530,530","921,530,,,,921,921,921,921,,921,921,921,921,,,,,921,921,,,,922,922,922","921,922,921,921,921,922,922,921,921,,922,,922,922,922,922,922,922,922",",,,,,922,922,922,922,922,922,922,,,922,,,,,,,922,,,922,922,922,922,922","922,922,922,,922,922,922,,922,922,922,922,922,538,,,,,,,,,,,,,,,,538","538,,922,,,922,,,922,922,,,922,,,538,,538,922,538,538,,538,538,,,,922",",,,,922,922,922,922,,922,922,922,922,,,,,922,922,,,,733,733,733,922","733,922,922,922,733,733,922,922,,733,,733,733,733,733,733,733,733,,",",,,733,733,733,733,733,733,733,,,733,,,,,,,733,,,733,733,733,733,733","733,733,733,,733,733,733,,733,733,733,733,733,539,,,,,,,,,,,,,,,,539","539,,733,,,733,,,733,733,,,733,,,539,,,733,539,539,,539,539,,,,733,",",,,733,733,733,733,,733,733,733,733,,,,,733,733,,,,732,732,732,733,732","733,733,733,732,732,733,733,,732,,732,732,732,732,732,732,732,,,,,,732","732,732,732,732,732,732,,,732,,,,,,,732,,,732,732,732,732,732,732,732","732,,732,732,732,,732,732,732,732,732,537,,,,,,,,,,,,,,,,537,537,,732",",,732,,,732,732,,,732,,,537,,537,732,537,537,,537,537,,,,732,,,,,732","732,732,732,,732,732,732,732,,,,,732,732,,,,,,,732,,732,732,732,,,732","732,333,333,333,333,333,,,,333,333,,,,333,,333,333,333,333,333,333,333",",,,,,333,333,333,333,333,333,333,,,333,,,,,,333,333,,333,333,333,333","333,333,333,333,333,,333,333,333,,333,333,333,333,333,,,,,,,,,,,,,,",",,,,,333,,,333,,,333,333,,,333,,333,,,,333,,,,,,,,,333,,,,,333,333,333","333,,333,333,333,333,,,,,333,333,,,,265,265,265,333,265,333,333,333","265,265,333,333,,265,,265,265,265,265,265,265,265,,,,,,265,265,265,265","265,265,265,,,265,,,,,,,265,,,265,265,265,265,265,265,265,265,,265,265","265,,265,265,265,265,265,,,,,,,,,,,,,,,,,,,,265,,,265,,,265,265,,,265",",,,,,265,,,,,,,,,265,,,,,265,265,265,265,,265,265,265,265,,,,,265,265",",,,264,264,264,265,264,265,265,265,264,264,265,265,,264,,264,264,264","264,264,264,264,,,,,,264,264,264,264,264,264,264,,,264,,,,,,,264,,,264","264,264,264,264,264,264,264,,264,264,264,,264,264,264,264,264,,,,,,",",,,,,,,,,,,,,264,,,264,,,264,264,,,264,,,,,,264,,,,,,,,,264,,,,,264","264,264,264,,264,264,264,264,,,,,264,264,,,,263,263,263,264,263,264","264,264,263,263,264,264,,263,,263,263,263,263,263,263,263,,,,,,263,263","263,263,263,263,263,,,263,,,,,,,263,,,263,263,263,263,263,263,263,263",",263,263,263,,263,263,263,263,263,,,,,,,,,,,,,,,,,,,,263,,,263,,,263","263,,,263,,,,,,263,,,,,,,,,263,,,,,263,263,263,263,,263,263,263,263",",,,,263,263,,,,262,262,262,263,262,263,263,263,262,262,263,263,,262",",262,262,262,262,262,262,262,,,,,,262,262,262,262,262,262,262,,,262",",,,,,,262,,,262,262,262,262,262,262,262,262,,262,262,262,,262,262,262","262,262,,,,,,,,,,,,,,,,,,,,262,,,262,,,262,262,,,262,,,,,,262,,,,,,",",,262,,,,,262,262,262,262,,262,262,262,262,,,,,262,262,,,,261,261,261","262,261,262,262,262,261,261,262,262,,261,,261,261,261,261,261,261,261",",,,,,261,261,261,261,261,261,261,,,261,,,,,,,261,,,261,261,261,261,261","261,261,261,,261,261,261,,261,261,261,261,261,,,,,,,,,,,,,,,,,,,,261",",,261,,,261,261,,,261,,,,,,261,,,,,,,,,261,,,,,261,261,261,261,,261","261,261,261,,,,,261,261,,,,708,708,708,261,708,261,261,261,708,708,261","261,,708,,708,708,708,708,708,708,708,,,,,,708,708,708,708,708,708,708",",,708,,,,,,,708,,,708,708,708,708,708,708,708,708,,708,708,708,,708","708,708,708,708,,,,,,,,,,,,,,,,,,,,708,,,708,,,708,708,,,708,,,,,,708",",,,,,,,,708,,,,,708,708,708,708,,708,708,708,708,,,,,708,708,,,,260","260,260,708,260,708,708,708,260,260,708,708,,260,,260,260,260,260,260","260,260,,,,,,260,260,260,260,260,260,260,,,260,,,,,,,260,,,260,260,260","260,260,260,260,260,,260,260,260,,260,260,260,260,260,,,,,,,,,,,,,,",",,,,,260,,,260,,,260,260,,,260,,,,,,260,,,,,,,,,260,,,,,260,260,260","260,,260,260,260,260,,,,,260,260,,,,694,694,694,260,694,260,260,260","694,694,260,260,,694,,694,694,694,694,694,694,694,,,,,,694,694,694,694","694,694,694,,,694,,,,,,,694,,,694,694,694,694,694,694,694,694,,694,694","694,,694,694,694,694,694,,,,,,,,,,,,,,,,,,,,694,,,694,,,694,694,,,694",",694,,,,694,,,,,,,,,694,,,,,694,694,694,694,,694,694,694,694,,,,,694","694,,,,259,259,259,694,259,694,694,694,259,259,694,694,,259,,259,259","259,259,259,259,259,,,,,,259,259,259,259,259,259,259,,,259,,,,,,,259",",,259,259,259,259,259,259,259,259,,259,259,259,,259,259,259,259,259",",,,,,,,,,,,,,,,,,,,259,,,259,,,259,259,,,259,,,,,,259,,,,,,,,,259,,",",,259,259,259,259,,259,259,259,259,,,,,259,259,,,,258,258,258,259,258","259,259,259,258,258,259,259,,258,,258,258,258,258,258,258,258,,,,,,258","258,258,258,258,258,258,,,258,,,,,,,258,,,258,258,258,258,258,258,258","258,,258,258,258,,258,258,258,258,258,,,,,,,,,,,,,,,,,,,,258,,,258,",",258,258,,,258,,,,,,258,,,,,,,,,258,,,,,258,258,258,258,,258,258,258","258,,,,,258,258,,,,257,257,257,258,257,258,258,258,257,257,258,258,","257,,257,257,257,257,257,257,257,,,,,,257,257,257,257,257,257,257,,","257,,,,,,,257,,,257,257,257,257,257,257,257,257,,257,257,257,,257,257","257,257,257,,,,,,,,,,,,,,,,,,,,257,,,257,,,257,257,,,257,,,,,,257,,",",,,,,,257,,,,,257,257,257,257,,257,257,257,257,,,,,257,257,,,,688,688","688,257,688,257,257,257,688,688,257,257,,688,,688,688,688,688,688,688","688,,,,,,688,688,688,688,688,688,688,,,688,,,,,,,688,,,688,688,688,688","688,688,688,688,,688,688,688,,688,688,688,688,688,,,,,,,,,,,,,,,,,,",",688,,,688,,,688,688,,,688,,,,,,688,,,,,,,,,688,,,,,688,688,688,688",",688,688,688,688,,,,,688,688,,,,687,687,687,688,687,688,688,688,687","687,688,688,,687,,687,687,687,687,687,687,687,,,,,,687,687,687,687,687","687,687,,,687,,,,,,,687,,,687,687,687,687,687,687,687,687,,687,687,687",",687,687,687,687,687,,,,,,,,,,,,,,,,,,,,687,,,687,,,687,687,,,687,,",",,,687,,,,,,,,,687,,,,,687,687,687,687,,687,687,687,687,,,,,687,687",",,,,,,687,,687,687,687,32,,687,687,,,,32,32,32,,,32,32,32,,32,,,,,,",",32,32,32,32,,,,,,,,,32,32,,32,32,32,32,32,,,,,,,,,,,,,,,,,,,,,,,32","32,32,32,32,32,32,32,32,32,32,32,32,32,,,32,32,32,,,32,,32,32,,,32,32",",32,,32,,32,,32,32,,32,32,32,32,32,,32,32,32,,,,,,,,,,,,,,32,,,32,32",",32,,32,683,683,683,,683,,32,,683,683,,,,683,,683,683,683,683,683,683","683,,,,,,683,683,683,683,683,683,683,,,683,,,,,,,683,,,683,683,683,683","683,683,683,683,,683,683,683,,683,683,683,683,683,,,,,,,,,,,,,,,,,,",",683,,,683,,,683,683,,,683,,,,,,683,,,,,,,,,683,,,,,683,683,683,683",",683,683,683,683,,,,,683,683,,,,682,682,682,683,682,683,683,683,682","682,683,683,,682,,682,682,682,682,682,682,682,,,,,,682,682,682,682,682","682,682,,,682,,,,,,,682,,,682,682,682,682,682,682,682,682,,682,682,682",",682,682,682,682,682,,,,,,,,,,,,,,,,,,,,682,,,682,,,682,682,,,682,,",",,,682,,,,,,,,,682,,,,,682,682,682,682,,682,682,682,682,,,,,682,682",",,,681,681,681,682,681,682,682,682,681,681,682,682,,681,,681,681,681","681,681,681,681,,,,,,681,681,681,681,681,681,681,,,681,,,,,,,681,,,681","681,681,681,681,681,681,681,681,681,681,681,,681,681,681,681,681,,,",",,,,,,,,,,,,,,,,681,,,681,,,681,681,,,681,,,,681,,681,,,681,,,,,,681",",,,,681,681,681,681,,681,681,681,681,,,,,681,681,,,,956,956,956,681","956,681,681,681,956,956,681,681,,956,,956,956,956,956,956,956,956,,",",,,956,956,956,956,956,956,956,,,956,,,,,,,956,,,956,956,956,956,956","956,956,956,,956,956,956,,956,956,956,956,956,,,,,,,,,,,,,,,,,,,,956",",,956,,,956,956,,,956,,,,,,956,,,,,,,,,956,,,,,956,956,956,956,,956","956,956,956,,,,,956,956,,,,962,962,962,956,962,956,956,956,962,962,956","956,,962,,962,962,962,962,962,962,962,,,,,,962,962,962,962,962,962,962",",,962,,,,,,,962,,,962,962,962,962,962,962,962,962,,962,962,962,,962","962,962,962,962,,,,,,,,,,,,,,,,,,,,962,,,962,,,962,962,,,962,,,,,,962",",,,,,,,,962,,,,,962,962,962,962,,962,962,962,962,,,,,962,962,,,,,,,962",",962,962,962,33,,962,962,,,,33,33,33,,,33,33,33,,33,,,,,,,,33,,33,33",",,,,,,,,33,33,,33,33,33,33,33,,,,,,,,,,,,,,,,,,,,,,,33,33,33,33,33,33","33,33,33,33,33,33,33,33,,,33,33,33,,,33,,33,33,,,33,33,,33,,33,,33,","33,33,,33,33,33,33,33,,33,,33,,,,,,,,,,,,,,33,,,33,33,,33,,33,34,34","34,,34,,33,,34,34,,,,34,,34,34,34,34,34,34,34,,,,,,34,34,34,34,34,34","34,,,34,,,,,,,34,,,34,34,34,34,34,34,34,34,34,34,34,34,,34,34,34,34","34,,,,,,,,,,,,,,,,,,,,34,,,34,,,34,34,,,34,,34,,34,,34,,,34,,,,,,34",",,,,34,34,34,34,,34,34,34,34,,,,,34,34,,,,680,680,680,34,680,34,34,34","680,680,34,34,,680,,680,680,680,680,680,680,680,,,,,,680,680,680,680","680,680,680,,,680,,,,,,,680,,,680,680,680,680,680,680,680,680,680,680","680,680,,680,680,680,680,680,,,,,,,,,,,,,,,,,,,,680,,,680,,,680,680",",,680,,680,,680,,680,,,680,,,,,,680,,,,,680,680,680,680,,680,680,680","680,,,,,680,680,,,,677,677,677,680,677,680,680,680,677,677,680,680,","677,,677,677,677,677,677,677,677,,,,,,677,677,677,677,677,677,677,,","677,,,,,,,677,,,677,677,677,677,677,677,677,677,,677,677,677,,677,677","677,677,677,,,,,,,,,,,,,,,,,,,,677,,,677,,,677,677,,,677,,,,,,677,,",",,,,,,677,,,,,677,677,677,677,,677,677,677,677,,,,,677,677,,,,,,,677",",677,677,677,,,677,677,676,676,676,676,676,,,,676,676,,,,676,,676,676","676,676,676,676,676,,,,,,676,676,676,676,676,676,676,,,676,,,,,,676","676,,676,676,676,676,676,676,676,676,676,,676,676,676,,676,676,676,676","676,,,,,,,,,,,,,,,,,,,,676,,,676,,,676,676,,,676,,676,,,,676,,,,,,,",",676,,,,,676,676,676,676,,676,676,676,676,,,,,676,676,,,,985,985,985","676,985,676,676,676,985,985,676,676,,985,,985,985,985,985,985,985,985",",,,,,985,985,985,985,985,985,985,,,985,,,,,,,985,,,985,985,985,985,985","985,985,985,,985,985,985,,985,985,985,985,985,,,,,,,,,,,,,,,,,,,,985",",,985,,,985,985,,,985,,,,,,985,,,,,,,,,985,,,,,985,985,985,985,,985","985,985,985,,,,,985,985,,,,673,673,673,985,673,985,985,985,673,673,985","985,,673,,673,673,673,673,673,673,673,,,,,,673,673,673,673,673,673,673",",,673,,,,,,,673,,,673,673,673,673,673,673,673,673,673,673,673,673,,673","673,673,673,673,,,,,,,,,,,,,,,,,,,,673,,,673,,,673,673,,,673,,673,,673",",673,,,673,,,,,,673,,,,,673,673,673,673,,673,673,673,673,,,,,673,673",",,,672,672,672,673,672,673,673,673,672,672,673,673,,672,,672,672,672","672,672,672,672,,,,,,672,672,672,672,672,672,672,,,672,,,,,,,672,,,672","672,672,672,672,672,672,672,,672,672,672,,672,672,672,672,672,,,,,,",",,,,,,,,,,,,,672,,,672,,,672,672,,,672,,,,,,672,,,,,,,,,672,,,,,672","672,672,672,,672,672,672,672,,,,,672,672,,,,990,990,990,672,990,672","672,672,990,990,672,672,,990,,990,990,990,990,990,990,990,,,,,,990,990","990,990,990,990,990,,,990,,,,,,,990,,,990,990,990,990,990,990,990,990",",990,990,990,,990,990,990,990,990,,,,,,,,,,,,,,,,,,,,990,,,990,,,990","990,,,990,,990,,,,990,,,,,,,,,990,,,,,990,990,990,990,,990,990,990,990",",,,,990,990,,,,671,671,671,990,671,990,990,990,671,671,990,990,,671",",671,671,671,671,671,671,671,,,,,,671,671,671,671,671,671,671,,,671",",,,,,,671,,,671,671,671,671,671,671,671,671,,671,671,671,,671,671,671","671,671,,,,,,,,,,,,,,,,,,,,671,,,671,,,671,671,,,671,,671,,,,671,,,",",,,,,671,,,,,671,671,671,671,,671,671,671,671,,,,,671,671,,,,,,,671",",671,671,671,,,671,671,669,669,669,669,669,,,,669,669,,,,669,,669,669","669,669,669,669,669,,,,,,669,669,669,669,669,669,669,,,669,,,,,,669","669,,669,669,669,669,669,669,669,669,669,,669,669,669,,669,669,669,669","669,,,,,,,,,,,,,,,,,,,,669,,,669,,,669,669,,,669,,669,,,,669,,,,,,,",",669,,,,,669,669,669,669,,669,669,669,669,,,,,669,669,,,,35,35,35,669","35,669,669,669,35,35,669,669,,35,,35,35,35,35,35,35,35,,,,,,35,35,35","35,35,35,35,,,35,,,,,,,35,,,35,35,35,35,35,35,35,35,35,35,35,35,,35","35,35,35,35,,,,,,,,,,,,,,,,,,,,35,,,35,,,35,35,,,35,,35,,35,,35,,,35",",,,,,35,,,,,35,35,35,35,,35,35,35,35,,,,,35,35,,,,250,250,250,35,250","35,35,35,250,250,35,35,,250,,250,250,250,250,250,250,250,,,,,,250,250","250,250,250,250,250,,,250,,,,,,,250,,,250,250,250,250,250,250,250,250",",250,250,250,,250,250,250,250,250,,,,,,,,,,,,,,,,,,,,250,,,250,,,250","250,,,250,,,,,,250,,,,,,,,,250,,,,,250,250,250,250,,250,250,250,250",",,,,250,250,,,,36,36,36,250,36,250,250,250,36,36,250,250,,36,,36,36","36,36,36,36,36,,,,,,36,36,36,36,36,36,36,,,36,,,,,,,36,,,36,36,36,36","36,36,36,36,36,36,36,36,,36,36,36,36,36,,,,,,,,,,,,,,,,,,,,36,,,36,",",36,36,,,36,,36,,36,,36,,,36,,,,,,36,,,,,36,36,36,36,,36,36,36,36,,",",,36,36,,,,638,638,638,36,638,36,36,36,638,638,36,36,,638,,638,638,638","638,638,638,638,,,,,,638,638,638,638,638,638,638,,,638,,,,,,,638,,,638","638,638,638,638,638,638,638,638,638,638,638,,638,638,638,638,638,,,",",,,,,,,,,,,,,,,,638,,,638,,,638,638,,,638,,638,,638,,638,,,638,,,,,","638,,,,,638,638,638,638,,638,638,638,638,,,,,638,638,,,,1009,1009,1009","638,1009,638,638,638,1009,1009,638,638,,1009,,1009,1009,1009,1009,1009","1009,1009,,,,,,1009,1009,1009,1009,1009,1009,1009,,,1009,,,,,,,1009",",,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,,1009","1009,1009,1009,1009,,,,,,,,,,,,,,,,,,,,1009,,,1009,,,1009,1009,,,1009",",,,1009,,1009,,,1009,,,,,,1009,,,,,1009,1009,1009,1009,,1009,1009,1009","1009,,,,,1009,1009,,,,628,628,628,1009,628,1009,1009,1009,628,628,1009","1009,,628,,628,628,628,628,628,628,628,,,,,,628,628,628,628,628,628","628,,,628,,,,,,,628,,,628,628,628,628,628,628,628,628,628,628,628,628",",628,628,628,628,628,,,,,,,,,,,,,,,,,,,,628,,,628,,,628,628,,,628,,628",",628,,628,,,628,,,,,,628,,,,,628,628,628,628,,628,628,628,628,,,,,628","628,,,,627,627,627,628,627,628,628,628,627,627,628,628,,627,,627,627","627,627,627,627,627,,,,,,627,627,627,627,627,627,627,,,627,,,,,,,627",",,627,627,627,627,627,627,627,627,,627,627,627,,627,627,627,627,627",",,,,,,,,,,,,,,,,,,,627,,,627,,,627,627,,,627,,627,,,,627,,,,,,,,,627",",,,,627,627,627,627,,627,627,627,627,,,,,627,627,,,,818,818,818,627","818,627,627,627,818,818,627,627,,818,,818,818,818,818,818,818,818,,",",,,818,818,818,818,818,818,818,,,818,,,,,,,818,,,818,818,818,818,818","818,818,818,,818,818,818,,818,818,818,818,818,,,,,,,,,,,,,,,,,,,,818",",,818,,,818,818,,,818,,,,,,818,,,,,,,,,818,,,,,818,818,818,818,,818","818,818,818,,,,,818,818,,,,614,614,614,818,614,818,818,818,614,614,818","818,,614,,614,614,614,614,614,614,614,,,,,,614,614,614,614,614,614,614",",,614,,,,,,,614,,,614,614,614,614,614,614,614,614,614,614,614,614,,614","614,614,614,614,,,,,,,,,,,,,,,,,,,,614,,,614,,,614,614,,,614,,,,,,614",",,614,,,,,,614,,,,,614,614,614,614,,614,614,614,614,,,,,614,614,,,,611","611,611,614,611,614,614,614,611,611,614,614,,611,,611,611,611,611,611","611,611,,,,,,611,611,611,611,611,611,611,,,611,,,,,,,611,,,611,611,611","611,611,611,611,611,611,611,611,611,,611,611,611,611,611,,,,,,,,,,,",",,,,,,,,611,,,611,,,611,611,,,611,,611,,,,611,,,611,,,,,,611,,,,,611","611,611,611,,611,611,611,611,,,,,611,611,,,,239,239,239,611,239,611","611,611,239,239,611,611,,239,,239,239,239,239,239,239,239,,,,,,239,239","239,239,239,239,239,,,239,,,,,,,239,,,239,239,239,239,239,239,239,239",",239,239,239,,239,239,239,239,239,,,,,,,,,,,,,,,,,,,,239,,,239,,,239","239,,,239,,,,,,239,,,,,,,,,239,,,,,239,239,239,239,,239,239,239,239",",,,,239,239,239,,,605,605,605,239,605,239,239,239,605,605,239,239,,605",",605,605,605,605,605,605,605,,,,,,605,605,605,605,605,605,605,,,605",",,,,,,605,,,605,605,605,605,605,605,605,605,,605,605,605,,605,605,605","605,605,,,,,,,,,,,,,,,,,,,,605,,,605,,,605,605,,,605,,,,,,605,,,,,,",",,605,,,,,605,605,605,605,,605,605,605,605,,,,,605,605,,,,1035,1035","1035,605,1035,605,605,605,1035,1035,605,605,,1035,,1035,1035,1035,1035","1035,1035,1035,,,,,,1035,1035,1035,1035,1035,1035,1035,,,1035,,,,,,","1035,,,1035,1035,1035,1035,1035,1035,1035,1035,,1035,1035,1035,,1035","1035,1035,1035,1035,,,,,,,,,,,,,,,,,,,,1035,,,1035,,,1035,1035,,,1035",",,,,,1035,,,,,,,,,1035,,,,,1035,1035,1035,1035,,1035,1035,1035,1035",",,,,1035,1035,,,,603,603,603,1035,603,1035,1035,1035,603,603,1035,1035",",603,,603,603,603,603,603,603,603,,,,,,603,603,603,603,603,603,603,",",603,,,,,,,603,,,603,603,603,603,603,603,603,603,,603,603,603,,603,603","603,603,603,,,,,,,,,,,,,,,,,,,,603,,,603,,,603,603,,,603,,,,,,603,,",",,,,,,603,,,,,603,603,603,603,,603,603,603,603,,,,,603,603,,,,600,600","600,603,600,603,603,603,600,600,603,603,,600,,600,600,600,600,600,600","600,,,,,,600,600,600,600,600,600,600,,,600,,,,,,,600,,,600,600,600,600","600,600,600,600,,600,600,600,,600,600,600,600,600,,,,,,,,,,,,,,,,,,",",600,,,600,,,600,600,,,600,,,,,,600,,,,,,,,,600,,,,,600,600,600,600",",600,600,600,600,,,,,600,600,,,,238,238,238,600,238,600,600,600,238","238,600,600,,238,,238,238,238,238,238,238,238,,,,,,238,238,238,238,238","238,238,,,238,,,,,,,238,,,238,238,238,238,238,238,238,238,,238,238,238",",238,238,238,238,238,,,,,,,,,,,,,,,,,,,,238,,,238,,,238,238,,,238,,",",,,238,,,,,,,,,238,,,,,238,238,238,238,,238,238,238,238,,,,,238,238",",,,237,237,237,238,237,238,238,238,237,237,238,238,,237,,237,237,237","237,237,237,237,,,,,,237,237,237,237,237,237,237,,,237,,,,,,,237,,,237","237,237,237,237,237,237,237,,237,237,237,,237,237,237,237,237,,,,,,",",,,,,,,,,,,,,237,,,237,,,237,237,,,237,,,,,,237,,,,,,,,,237,,,,,237","237,237,237,,237,237,237,237,,,,,237,237,,,,590,590,590,237,590,237","237,237,590,590,237,237,,590,,590,590,590,590,590,590,590,,,,,,590,590","590,590,590,590,590,,,590,,,,,,,590,,,590,590,590,590,590,590,590,590","590,590,590,590,,590,590,590,590,590,,,,,,,,,,,,,,,,,,,,590,,,590,,","590,590,,,590,,590,,590,,590,,,590,,,,,,590,,,,,590,590,590,590,,590","590,590,590,,,,,590,590,,,,,,,590,,590,590,590,,,590,590,580,580,580","580,580,,,,580,580,,,,580,,580,580,580,580,580,580,580,,,,,,580,580","580,580,580,580,580,,,580,,,,,,580,580,580,580,580,580,580,580,580,580","580,580,,580,580,580,,580,580,580,580,580,,,,,,,,,,,,,,,,,,,,580,,,580",",,580,580,,,580,,580,,,,580,,,,,,,,,580,,,,,580,580,580,580,,580,580","580,580,,,,,580,580,,,,,,580,580,,580,580,580,,,580,580,574,574,574",",574,,,,574,574,,,,574,,574,574,574,574,574,574,574,,,,,,574,574,574","574,574,574,574,,,574,,,,,,,574,,,574,574,574,574,574,574,574,574,,574","574,574,,574,574,574,574,574,,,,,,,,,,,,,,,,,,,,574,,,574,,,574,574",",,574,,,,,,574,,,,,,,,,574,,,,,574,574,574,574,,574,574,574,574,,,,","574,574,,,,369,369,369,574,369,574,574,574,369,369,574,574,,369,,369","369,369,369,369,369,369,,,,,,369,369,369,369,369,369,369,,,369,,,,,",",369,,,369,369,369,369,369,369,369,369,,369,369,369,,369,369,369,369","369,,,,,,,,,,,,,,,,,,,,369,,,369,,,369,369,,,369,,,,,,369,,,,,,,,,369",",,,,369,369,369,369,,369,369,369,369,,,,,369,369,,,,46,46,46,369,46","369,369,369,46,46,369,369,,46,,46,46,46,46,46,46,46,,,,,,46,46,46,46","46,46,46,,,46,,,,,,,46,,,46,46,46,46,46,46,46,46,,46,46,46,,46,46,46","46,46,,,,,,,,,,,,,,,,,,,,46,,,46,,,46,46,,,46,,,,,,46,,,,,,,,,46,,,",",46,46,46,46,,46,46,46,46,,,,,46,46,,,,572,572,572,46,572,46,46,46,572","572,46,46,,572,,572,572,572,572,572,572,572,,,,,,572,572,572,572,572","572,572,,,572,,,,,,,572,,,572,572,572,572,572,572,572,572,572,572,572","572,,572,572,572,572,572,,,,,,,,,,,,,,,,,,,,572,,,572,,,572,572,,,572",",,,572,,572,,,572,,,,,,572,,,,,572,572,572,572,,572,572,572,572,,,,","572,572,,,,570,570,570,572,570,572,572,572,570,570,572,572,,570,,570","570,570,570,570,570,570,,,,,,570,570,570,570,570,570,570,,,570,,,,,",",570,,,570,570,570,570,570,570,570,570,570,570,570,570,,570,570,570","570,570,,,,,,,,,,,,,,,,,,,,570,,,570,,,570,570,,,570,,570,,570,,570",",,570,,,,,,570,,,,,570,570,570,570,,570,570,570,570,,,,,570,570,,,,47","47,47,570,47,570,570,570,47,47,570,570,,47,,47,47,47,47,47,47,47,,,",",,47,47,47,47,47,47,47,,,47,,,,,,,47,,,47,47,47,47,47,47,47,47,,47,47","47,,47,47,47,47,47,,,,,,,,,,,,,,,,,,,,47,,,47,,,47,47,,,47,,,,,,47,",",,,,,,,47,,,,,47,47,47,47,,47,47,47,47,,,,,47,47,,,,560,560,560,47,560","47,47,47,560,560,47,47,,560,,560,560,560,560,560,560,560,,,,,,560,560","560,560,560,560,560,,,560,,,,,,,560,,,560,560,560,560,560,560,560,560",",560,560,560,,560,560,560,560,560,,,,,,,,,,,,,,,,,,,,560,,,560,,,560","560,,,560,,,,,,560,,,,,,,,,560,,,,,560,560,560,560,,560,560,560,560",",,,,560,560,,,,49,49,49,560,49,560,560,560,49,49,560,560,,49,,49,49","49,49,49,49,49,,,,,,49,49,49,49,49,49,49,,,49,,,,,,,49,,,49,49,49,49","49,49,49,49,,49,49,49,,49,49,49,49,49,,,,,,,,,,,,,,,,,,,,49,,,49,,,49","49,,,49,,,,,,49,,,,,,,,,49,,,,,49,49,49,49,,49,49,49,49,,,,,49,49,,",",,,,49,,49,49,49,555,,49,49,,,,555,555,555,,,555,555,555,703,555,703","703,703,703,703,,,555,555,555,,,,703,,,,,,555,555,,555,555,555,555,555",",701,,701,701,701,701,701,703,,,,,,,,701,703,703,703,703,,,,703,,1140",",1140,1140,1140,1140,1140,555,,,,,701,,555,1140,,,,555,555,701,701,701","701,,,,701,,,,,,,,,1140,703,,,,555,555,,,,,1140,1140,,,,1140,,,,555",",,555,,283,283,283,555,283,,701,,283,283,555,,,283,,283,283,283,283","283,283,283,,,,,,283,283,283,283,283,283,283,,,283,,,,,,,283,,,283,283","283,283,283,283,283,283,,283,283,283,,283,283,283,283,283,,,,,,,,,,",",,,,,,,,,283,,,283,,,283,283,,,283,,,,,,283,,,,,,,,,283,,,,,283,283","283,283,,283,283,283,283,,,,,283,283,,,,224,224,224,283,224,283,283","283,224,224,283,283,,224,,224,224,224,224,224,224,224,,,,,,224,224,224","224,224,224,224,,,224,,,,,,,224,,,224,224,224,224,224,224,224,224,224","224,224,224,,224,224,224,224,224,,,,,,,,,,,,,,,,,,,,224,,,224,,,224","224,,,224,,224,,224,,224,,,224,,,,,,224,,,,,224,224,224,224,,224,224","224,224,,,,,224,224,,,,223,223,223,224,223,224,224,224,223,223,224,224",",223,,223,223,223,223,223,223,223,,,,,,223,223,223,223,223,223,223,",",223,,,,,,,223,,,223,223,223,223,223,223,223,223,,223,223,223,,223,223","223,223,223,,,,,,,,,,,,,,,,,,,,223,,,223,,,223,223,,,223,,,,,,223,,",",,,,,,223,,,,,223,223,223,223,,223,223,223,223,,,,,223,223,,,,50,50","50,223,50,223,223,223,50,50,223,223,,50,,50,50,50,50,50,50,50,,,,,,50","50,50,50,50,50,50,,,50,,,,,,,50,,,50,50,50,50,50,50,50,50,,50,50,50",",50,50,50,50,50,,,,,,,,,,,,,,,,,,,,50,,,50,,,50,50,,,50,,,,,,50,,,,",",,,,50,,,,,50,50,50,50,,50,50,50,50,,,,,50,50,,,,222,222,222,50,222","50,50,50,222,222,50,50,,222,,222,222,222,222,222,222,222,,,,,,222,222","222,222,222,222,222,,,222,,,,,,,222,,,222,222,222,222,222,222,222,222",",222,222,222,,222,222,222,222,222,,,,,,,,,,,,,,,,,,,,222,,,222,,,222","222,,,222,,,,,,222,,,,,,,,,222,,,,,222,222,222,222,,222,222,222,222",",,,,222,222,,,,72,72,72,222,72,222,222,222,72,72,222,222,,72,,72,72","72,72,72,72,72,,,,,,72,72,72,72,72,72,72,,,72,,,,,,,72,,,72,72,72,72","72,72,72,72,,72,72,72,,72,72,72,72,72,,,,,,,,,,,,,,,,,,,,72,,,72,,,72","72,,,72,,,,,,72,,,,,,,,,72,,,,,72,72,72,72,,72,72,72,72,,,,,72,72,,",",71,71,71,72,71,72,72,72,71,71,72,72,,71,,71,71,71,71,71,71,71,,,,,","71,71,71,71,71,71,71,,,71,,,,,,,71,,,71,71,71,71,71,71,71,71,,71,71","71,,71,71,71,71,71,,,,,,,,,,,,,,,,,,,,71,,,71,,,71,71,,,71,,,,,,71,",",,,,,,,71,,,,,71,71,71,71,,71,71,71,71,,,,,71,71,,,,436,436,436,71,436","71,71,71,436,436,71,71,,436,,436,436,436,436,436,436,436,,,,,,436,436","436,436,436,436,436,,,436,,,,,,,436,,,436,436,436,436,436,436,436,436",",436,436,436,,436,436,436,436,436,,,,,,,,,,,,,,,,,,,,436,,,436,,,436","436,,,436,,,,,,436,,,,,,,,,436,,,,,436,436,436,436,,436,436,436,436",",,,,436,436,,,,68,68,68,436,68,436,436,436,68,68,436,436,,68,,68,68","68,68,68,68,68,,,,,,68,68,68,68,68,68,68,,,68,,,,,,,68,,,68,68,68,68","68,68,68,68,68,68,68,68,,68,68,68,68,68,,,,,,,,,,,,,,,,,,,,68,,,68,",",68,68,,,68,,,,,,68,,,68,,,,,,68,,,,,68,68,68,68,,68,68,68,68,,,,,68","68,,,,407,407,407,68,407,68,68,68,407,407,68,68,,407,,407,407,407,407","407,407,407,,,,,,407,407,407,407,407,407,407,,,407,,,,,,,407,,,407,407","407,407,407,407,407,407,,407,407,407,,407,407,407,407,407,,,,,,,,,,",",,,,,,,,,407,,,407,,,407,407,,,407,,,,,,407,,,,,,,,,407,,,,,407,407","407,407,,407,407,407,407,,,,,407,407,,,,847,847,847,407,847,407,407","407,847,847,407,407,,847,,847,847,847,847,847,847,847,,,,,,847,847,847","847,847,847,847,,,847,,,,,,,847,,,847,847,847,847,847,847,847,847,,847","847,847,,847,847,847,847,847,,,,,,,,,,,,,,,,,,,,847,,,847,,,847,847",",,847,,,,,,847,,,,,,,,,847,,,,,847,847,847,847,,847,847,847,847,,,,","847,847,,,,276,276,276,847,276,847,847,847,276,276,847,847,,276,,276","276,276,276,276,276,276,,,,,,276,276,276,276,276,276,276,,,276,,,,,",",276,,,276,276,276,276,276,276,276,276,,276,276,276,,276,276,276,276","276,,,,,,,,,,,,,,,,,,,,276,,,276,,,276,276,,,276,,,,,,276,,,,,,,,,276",",,,,276,276,276,276,,276,276,276,276,,,,,276,276,,,,275,275,275,276","275,276,276,276,275,275,276,276,,275,,275,275,275,275,275,275,275,,",",,,275,275,275,275,275,275,275,,,275,,,,,,,275,,,275,275,275,275,275","275,275,275,,275,275,275,,275,275,275,275,275,,,,,,,,,,,,,,,,,,,,275",",,275,,,275,275,,,275,,,,,,275,,,,,,,,,275,,,,,275,275,275,275,,275","275,275,275,,,,,275,275,,,,67,67,67,275,67,275,275,275,67,67,275,275",",67,,67,67,67,67,67,67,67,,,,,,67,67,67,67,67,67,67,,,67,,,,,,,67,,","67,67,67,67,67,67,67,67,67,67,67,67,,67,67,67,67,67,,,,,,,,,,,,,,,,",",,,67,,,67,,,67,67,,,67,,67,,,,67,,,67,,,,,,67,,,,,67,67,67,67,,67,67","67,67,,,,,67,67,,,,,,,67,,67,67,67,,,67,67,66,66,66,66,66,,,,66,66,",",,66,,66,66,66,66,66,66,66,,,,,,66,66,66,66,66,66,66,,,66,,,,,,66,66",",66,66,66,66,66,66,66,66,66,,66,66,66,,66,66,66,66,66,,,,,,,,,,,,,,",",,,,,66,,,66,,,66,66,,,66,,66,,,,66,,,,,,,,,66,,,,,66,66,66,66,,66,66","66,66,,,,,66,66,,,,299,299,299,66,299,66,66,66,299,299,66,66,,299,,299","299,299,299,299,299,299,,,,,,299,299,299,299,299,299,299,,,299,,,,,",",299,,,299,299,299,299,299,299,299,299,,299,299,299,,299,299,299,299","299,,,,,,,,,,,,,,,,,,,,299,,,299,,,299,299,,,299,,,,,,299,,,,,,,,,299",",,,,299,299,299,299,,299,299,299,299,,,,,299,299,,,,274,274,274,299","274,299,299,299,274,274,299,299,,274,,274,274,274,274,274,274,274,,",",,,274,274,274,274,274,274,274,,,274,,,,,,,274,,,274,274,274,274,274","274,274,274,,274,274,274,,274,274,274,274,274,,,,,,,,,,,,,,,,,,,,274",",,274,,,274,274,,,274,,,,,,274,,,,,,,,,274,,,,,274,274,274,274,,274","274,274,274,,,,,274,274,,,,867,867,867,274,867,274,274,274,867,867,274","274,,867,,867,867,867,867,867,867,867,,,,,,867,867,867,867,867,867,867",",,867,,,,,,,867,,,867,867,867,867,867,867,867,867,,867,867,867,,867","867,867,867,867,,,,,,,,,,,,,,,,,,,,867,,,867,,,867,867,,,867,,,,,,867",",,,,,,,,867,,,,,867,867,867,867,,867,867,867,867,,,,,867,867,,,,24,24","24,867,24,867,867,867,24,24,867,867,,24,,24,24,24,24,24,24,24,,,,,,24","24,24,24,24,24,24,,,24,,,,,,,24,,,24,24,24,24,24,24,24,24,,24,24,24",",24,24,24,24,24,,,,,,,,,,,,,,,,,,,,24,,,24,,,24,24,,,24,,,,,,24,,,,",",,,,24,,,,,24,24,24,24,,24,24,24,24,,,,,24,24,,,,273,273,273,24,273","24,24,24,273,273,24,24,,273,,273,273,273,273,273,273,273,,,,,,273,273","273,273,273,273,273,,,273,,,,,,,273,,,273,273,273,273,273,273,273,273",",273,273,273,,273,273,273,273,273,,,,,,,,,,,,,,,,,,,,273,,,273,,,273","273,,,273,,,,,,273,,,,,,,,,273,,,,,273,273,273,273,,273,273,273,273",",,,,273,273,,,,788,788,788,273,788,273,273,273,788,788,273,273,,788",",788,788,788,788,788,788,788,,,,,,788,788,788,788,788,788,788,,,788",",,,,,,788,,,788,788,788,788,788,788,788,788,788,788,788,788,,788,788","788,788,788,,,,,,,,,,,,,,,,,,,,788,,,788,,,788,788,,,788,,788,,788,","788,,,788,,,,,,788,,,,,788,788,788,788,,788,788,788,788,,,,,788,788",",,,272,272,272,788,272,788,788,788,272,272,788,788,,272,,272,272,272","272,272,272,272,,,,,,272,272,272,272,272,272,272,,,272,,,,,,,272,,,272","272,272,272,272,272,272,272,,272,272,272,,272,272,272,272,272,,,,,,",",,,,,,,,,,,,,272,,,272,,,272,272,,,272,,,,,,272,,,,,,,,,272,,,,,272","272,272,272,,272,272,272,272,,,,,272,272,,,,875,875,875,272,875,272","272,272,875,875,272,272,,875,,875,875,875,875,875,875,875,,,,,,875,875","875,875,875,875,875,,,875,,,,,,,875,,,875,875,875,875,875,875,875,875",",875,875,875,,875,875,875,875,875,,,,,,,,,,,,,,,,,,,,875,,,875,,,875","875,,,875,,,,,,875,,,,,,,,,875,,,,,875,875,875,875,,875,875,875,875",",,,,875,875,,,,306,306,306,875,306,875,875,875,306,306,875,875,,306",",306,306,306,306,306,306,306,,,,,,306,306,306,306,306,306,306,,,306",",,,,,,306,,,306,306,306,306,306,306,306,306,306,306,306,306,,306,306","306,306,306,,,,,,,,,,,,,,,,,,,,306,,,306,,,306,306,,,306,,306,,306,","306,,,306,,,,,,306,,,,,306,306,306,306,,306,306,306,306,,,,,306,306",",,,888,888,888,306,888,306,306,306,888,888,306,306,,888,,888,888,888","888,888,888,888,,,,,,888,888,888,888,888,888,888,,,888,,,,,,,888,,,888","888,888,888,888,888,888,888,,888,888,888,,888,888,888,888,888,,,,,,",",,,,,,,,,,,,,888,,,888,,,888,888,,,888,,,,,,888,,,,,,,,,888,,,,,888","888,888,888,,888,888,888,888,,,,,888,888,,,,889,889,889,888,889,888","888,888,889,889,888,888,,889,,889,889,889,889,889,889,889,,,,,,889,889","889,889,889,889,889,,,889,,,,,,,889,,,889,889,889,889,889,889,889,889",",889,889,889,,889,889,889,889,889,,,,,,,,,,,,,,,,,,,,889,,,889,,,889","889,,,889,,,,,,889,,,,,,,,,889,,,,,889,889,889,889,,889,889,889,889",",,,,889,889,,,,307,307,307,889,307,889,889,889,307,307,889,889,,307",",307,307,307,307,307,307,307,,,,,,307,307,307,307,307,307,307,,,307",",,,,,,307,,,307,307,307,307,307,307,307,307,307,307,307,307,,307,307","307,307,307,,,,,,,,,,,,,,,,,,,,307,,,307,,,307,307,,,307,,307,,307,","307,,,307,,,,,,307,,,,,307,307,307,307,,307,307,307,307,,,,,307,307",",,,315,315,315,307,315,307,307,307,315,315,307,307,,315,,315,315,315","315,315,315,315,,,,,,315,315,315,315,315,315,315,,,315,,,,,,,315,,,315","315,315,315,315,315,315,315,315,315,315,315,,315,315,315,315,315,,,",",,,,,,,,,,,,,,,,315,,,315,,,315,315,,,315,,315,,315,,315,,,315,,,,,","315,,,,,315,315,315,315,,315,315,315,315,,,,,315,315,315,,,271,271,271","315,271,315,315,315,271,271,315,315,,271,,271,271,271,271,271,271,271",",,,,,271,271,271,271,271,271,271,,,271,,,,,,,271,,,271,271,271,271,271","271,271,271,,271,271,271,,271,271,271,271,271,,,,,,,,,,,,,,,,,,,,271",",,271,,,271,271,,,271,,,,,,271,,,,,,,,,271,,,,,271,271,271,271,,271","271,271,271,,,,,271,271,,,,270,270,270,271,270,271,271,271,270,270,271","271,,270,,270,270,270,270,270,270,270,,,,,,270,270,270,270,270,270,270",",,270,,,,,,,270,,,270,270,270,270,270,270,270,270,,270,270,270,,270","270,270,270,270,,,,,,,,,,,,,,,,,,,,270,,,270,,,270,270,,,270,,,,,,270",",,,,,,,,270,,,,,270,270,270,270,,270,270,270,270,,,,,270,270,,,,269","269,269,270,269,270,270,270,269,269,270,270,,269,,269,269,269,269,269","269,269,,,,,,269,269,269,269,269,269,269,,,269,,,,,,,269,,,269,269,269","269,269,269,269,269,,269,269,269,,269,269,269,269,269,,,,,,,,,,,,,,",",,,,,269,,,269,,,269,269,,,269,,,,,,269,,,,,,,,,269,,,,,269,269,269","269,,269,269,269,269,,,,,269,269,,,,322,322,322,269,322,269,269,269","322,322,269,269,,322,,322,322,322,322,322,322,322,,,,,,322,322,322,322","322,322,322,,,322,,,,,,,322,,,322,322,322,322,322,322,322,322,,322,322","322,,322,322,322,322,322,,,,,,,,,,,,,,,,,,,,322,,,322,,,322,322,,,322",",,,,,322,,,,,,,,,322,,,,,322,322,322,322,,322,322,322,322,,,,,322,322",",,,324,324,324,322,324,322,322,322,324,324,322,322,,324,,324,324,324","324,324,324,324,,,,,,324,324,324,324,324,324,324,,,324,,,,,,,324,,,324","324,324,324,324,324,324,324,,324,324,324,,324,324,324,324,324,,,,,,",",,,,,,,,,,,,,324,,,324,,,324,324,,,324,,,,,,324,,,,,,,,,324,,,,,324","324,324,324,,324,324,324,324,,,,,324,324,,,,327,327,327,324,327,324","324,324,327,327,324,324,,327,,327,327,327,327,327,327,327,,,,,,327,327","327,327,327,327,327,,,327,,,,,,,327,,,327,327,327,327,327,327,327,327",",327,327,327,,327,327,327,327,327,,,,,,,,,,,,,,,,,,,,327,,,327,,,327","327,,,327,,,,,,327,,,,,,,,,327,,,,,327,327,327,327,,327,327,327,327",",,,,327,327,,,,328,328,328,327,328,327,327,327,328,328,327,327,,328",",328,328,328,328,328,328,328,,,,,,328,328,328,328,328,328,328,,,328",",,,,,,328,,,328,328,328,328,328,328,328,328,,328,328,328,,328,328,328","328,328,,,,,,,,,,,,,,,,,,,,328,,,328,,,328,328,,,328,,,,,,328,,,,,,",",,328,,,,,328,328,328,328,,328,328,328,328,,,,,328,328,,,,268,268,268","328,268,328,328,328,268,268,328,328,,268,,268,268,268,268,268,268,268",",,,,,268,268,268,268,268,268,268,,,268,,,,,,,268,,,268,268,268,268,268","268,268,268,,268,268,268,,268,268,268,268,268,,,,,,,,,,,,,,,,,,,,268",",,268,,,268,268,,,268,,,,,,268,,,,,,,,,268,,,,,268,268,268,268,,268","268,268,268,,,,,268,268,,,,267,267,267,268,267,268,268,268,267,267,268","268,,267,,267,267,267,267,267,267,267,,,,,,267,267,267,267,267,267,267",",,267,,,,,,,267,,,267,267,267,267,267,267,267,267,,267,267,267,,267","267,267,267,267,,,,,,,,,,,,,,,,,,,,267,,,267,,,267,267,,,267,,,,,,267",",,,,,,,,267,,,,,267,267,267,267,,267,267,267,267,,,,,267,267,,,,266","266,266,267,266,267,267,267,266,266,267,267,,266,,266,266,266,266,266","266,266,,,,,,266,266,266,266,266,266,266,,,266,,,,,,,266,,,266,266,266","266,266,266,266,266,,266,266,266,,266,266,266,266,266,,,,,,,,,,,,,,",",,,,,266,,,266,,,266,266,,,266,,,,,,266,,,,,,,,,266,,,,,266,266,266","266,,266,266,266,266,,,,,266,266,,,,917,917,917,266,917,266,266,266","917,917,266,266,,917,,917,917,917,917,917,917,917,,,,,,917,917,917,917","917,917,917,,,917,,,,,,,917,,,917,917,917,917,917,917,917,917,,917,917","917,,917,917,917,917,917,,,,,,,,,,,,,,,,,,,,917,,,917,,,917,917,,,917",",,,,,917,,,,,,,,,917,,,,,917,917,917,917,,917,917,917,917,,,,,917,917",",,,918,918,918,917,918,917,917,917,918,918,917,917,,918,,918,918,918","918,918,918,918,,,,,,918,918,918,918,918,918,918,,,918,,,,,,,918,,,918","918,918,918,918,918,918,918,,918,918,918,,918,918,918,918,918,,,,,,",",,,,,,,,,,,,,918,,,918,,,918,918,,,918,,,,,,918,,,,,,,,,918,,,,,918","918,918,918,,918,918,918,918,,,,,918,918,,,,919,919,919,918,919,918","918,918,919,919,918,918,,919,,919,919,919,919,919,919,919,,,,,,919,919","919,919,919,919,919,,,919,,,,,,,919,,,919,919,919,919,919,919,919,919",",919,919,919,,919,919,919,919,919,,,,,,,,,,,,,,,,,,,,919,,,919,,,919","919,,,919,,,,,,919,,,,,,,,,919,,,,,919,919,919,919,,919,919,919,919",",,,,919,919,,,,497,497,497,919,497,919,919,919,497,497,919,919,,497",",497,497,497,497,497,497,497,,,,,,497,497,497,497,497,497,497,,,497",",,,,,,497,,,497,497,497,497,497,497,497,497,,497,497,497,,497,497,497","497,497,,,,,,,,,,,,,,,,,,,,497,,,497,,,497,497,,,497,,,,,,497,,,,,,",",,497,,,,,497,497,497,497,,497,497,497,497,,,,,497,497,,,,,,,497,,497","497,497,,,497,497,133,133,133,133,133,,,,133,133,,,,133,,133,133,133","133,133,133,133,,,,,,133,133,133,133,133,133,133,,,133,,,,,,133,133",",133,133,133,133,133,133,133,133,133,,133,133,133,,133,133,133,133,133",",,,,,,,,,,,,,,,,,,,133,,,133,,,133,133,,,133,,133,,,,133,,,,,,,,,133",",,,,133,133,133,133,,133,133,133,133,,,,,133,133,,,,132,132,132,133","132,133,133,133,132,132,133,133,,132,,132,132,132,132,132,132,132,,",",,,132,132,132,132,132,132,132,,,132,,,,,,,132,,,132,132,132,132,132","132,132,132,,132,132,132,,132,132,132,132,132,,,,,,,,,,,,,,,,,,,,132",",,132,,,132,132,,,132,,,,,,132,,,,,,,,,132,,,,,132,132,132,132,,132","132,132,132,,,,,132,132,,,,131,131,131,132,131,132,132,132,131,131,132","132,,131,,131,131,131,131,131,131,131,,,,,,131,131,131,131,131,131,131",",,131,,,,,,,131,,,131,131,131,131,131,131,131,131,,131,131,131,,131","131,131,131,131,,,,,,,,,,,,,,,,,,,,131,,,131,,,131,131,,,131,,,,,,131",",,,,,,,,131,,,,,131,131,131,131,,131,131,131,131,,,,,131,131,,,,130","130,130,131,130,131,131,131,130,130,131,131,,130,,130,130,130,130,130","130,130,,,,,,130,130,130,130,130,130,130,,,130,,,,,,,130,,,130,130,130","130,130,130,130,130,,130,130,130,,130,130,130,130,130,,,,,,,,,,,,,,",",,,,,130,,,130,,,130,130,,,130,,,,,,130,,,,,,,,,130,,,,,130,130,130","130,,130,130,130,130,,,,,130,130,,,,1149,1149,1149,130,1149,130,130","130,1149,1149,130,130,,1149,,1149,1149,1149,1149,1149,1149,1149,,,,",",1149,1149,1149,1149,1149,1149,1149,,,1149,,,,,,,1149,,,1149,1149,1149","1149,1149,1149,1149,1149,,1149,1149,1149,,1149,1149,1149,1149,1149,",",,,,,,,,,,,,,,,,,,1149,,,1149,,,1149,1149,,,1149,,,,,,1149,,,,,,,,,1149",",,,,1149,1149,1149,1149,,1149,1149,1149,1149,,,,,1149,1149,,,,1150,1150","1150,1149,1150,1149,1149,1149,1150,1150,1149,1149,,1150,,1150,1150,1150","1150,1150,1150,1150,,,,,,1150,1150,1150,1150,1150,1150,1150,,,1150,",",,,,,1150,,,1150,1150,1150,1150,1150,1150,1150,1150,,1150,1150,1150",",1150,1150,1150,1150,1150,,,,,,,,,,,,,,,,,,,,1150,,,1150,,,1150,1150",",,1150,,,,,,1150,,,,,,,,,1150,,,,,1150,1150,1150,1150,,1150,1150,1150","1150,,,,,1150,1150,,,,52,52,52,1150,52,1150,1150,1150,52,52,1150,1150",",52,,52,52,52,52,52,52,52,,,,,,52,52,52,52,52,52,52,,,52,,,,,,,52,,","52,52,52,52,52,52,52,52,,52,52,52,,52,52,52,52,52,,,,,,,,,,,,,,,,,,",",52,,,52,,,52,52,,,52,,,,,,52,,,,,,,,,52,,,,,52,52,52,52,,52,52,52,52",",,,,52,52,,,,129,129,129,52,129,52,52,52,129,129,52,52,,129,,129,129","129,129,129,129,129,,,,,,129,129,129,129,129,129,129,,,129,,,,,,,129",",,129,129,129,129,129,129,129,129,,129,129,129,,129,129,129,129,129",",,,,,,,,,,,,,,,,,,,129,,,129,,,129,129,,,129,,,,,,129,,,,,,,,,129,,",",,129,129,129,129,,129,129,129,129,,,,,129,129,,,,,,,129,,129,129,129",",,129,129,124,124,124,124,124,,,,124,124,,,,124,,124,124,124,124,124","124,124,,,,,,124,124,124,124,124,124,124,,,124,,,,,,124,124,124,124","124,124,124,124,124,124,124,124,,124,124,124,,124,124,124,124,124,,",",,,,,,,,,,,,,,,,,124,,,124,,,124,124,,,124,,124,,,,124,,,,,,,,,124,",",,,124,124,124,124,,124,124,124,124,,,,,124,124,,,,,,124,124,,124,124","124,,,124,124,1162,1162,1162,,1162,,,,1162,1162,,,,1162,,1162,1162,1162","1162,1162,1162,1162,,,,,,1162,1162,1162,1162,1162,1162,1162,,,1162,",",,,,,1162,,,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162",",1162,1162,1162,1162,1162,,,,,,,,,,,,,,,,,,,,1162,,,1162,,,1162,1162",",,1162,,1162,,1162,,1162,,,1162,,,,,,1162,,,,,1162,1162,1162,1162,,1162","1162,1162,1162,,,,,1162,1162,,,,471,471,471,1162,471,1162,1162,1162","471,471,1162,1162,,471,,471,471,471,471,471,471,471,,,,,,471,471,471","471,471,471,471,,,471,,,,,,,471,,,471,471,471,471,471,471,471,471,,471","471,471,,471,471,471,471,471,,,,,,,,,,,,,,,,,,,,471,,,471,,,471,471",",,471,,,,,,471,,,,,,,,,471,,,,,471,471,471,471,,471,471,471,471,,,,","471,471,,,,277,277,277,471,277,471,471,471,277,277,471,471,,277,,277","277,277,277,277,277,277,,,,,,277,277,277,277,277,277,277,,,277,,,,,",",277,,,277,277,277,277,277,277,277,277,,277,277,277,,277,277,277,277","277,,,,,,,,,,,,,,,,,,,,277,,,277,,,277,277,,,277,,,,,,277,,,,,,,,,277",",,,,277,277,277,277,,277,277,277,277,,,,,277,277,,,,,,,277,,277,277","277,470,,277,277,,,,470,470,470,,,470,470,470,,470,,,,,,,,470,470,470","470,470,,,,,,,,470,470,,470,470,470,470,470,,,,,,,,,,,,,,,,,,,,,,,470","470,470,470,470,470,470,470,470,470,470,470,470,470,,,470,470,470,,","470,,,470,,,470,470,,470,,470,,470,,470,470,,470,470,470,470,470,,470","470,470,,,,,,,,,,,,,,470,,,470,470,470,470,,470,469,470,,,,,470,469","469,469,,,469,469,469,,469,,,,,,,,469,469,469,469,469,,,,951,951,951","951,469,469,,469,469,469,469,469,,,,,951,951,951,,,,,,,,,,,951,951,",",951,469,469,469,469,469,469,469,469,469,469,469,469,469,469,,,469,469","469,,,469,,,469,,,469,469,,469,,469,,469,,469,469,,469,469,469,469,469",",469,469,469,,951,951,951,951,,951,951,951,951,,,,469,951,951,469,469","469,469,,469,951,469,951,951,951,460,469,7,7,7,7,7,460,460,460,7,7,460","460,460,7,460,7,7,7,7,7,7,7,460,460,460,460,,7,7,7,7,7,7,7,460,460,7","460,460,460,460,460,7,7,7,7,7,7,7,7,7,7,7,7,,7,7,7,,7,7,7,7,7,460,460","460,460,460,460,460,460,460,460,460,460,460,460,,,460,460,460,7,,460","7,460,460,7,7,460,460,7,460,7,460,,460,7,460,460,,460,460,460,460,460","7,460,460,460,,7,7,7,7,,7,7,7,7,,,,460,7,7,460,460,,460,,460,7,,7,7","7,,460,7,7,75,75,75,,75,,,,75,75,,,,75,,75,75,75,75,75,75,75,,,,,,75","75,75,75,75,75,75,,,75,,,,,,,75,,,75,75,75,75,75,75,75,75,,75,75,75",",75,75,75,75,75,,,,,,,,,,,,,,,,,,,,75,,,75,,,75,75,,,75,,,,,,75,,,,",",,,,75,,,,,75,75,75,75,,75,75,75,75,,,,,75,75,75,,,,,75,75,,75,75,75","64,,75,75,,,,64,64,64,,,64,64,64,,64,,,,,,,,64,,64,64,64,,,,,,,,64,64",",64,64,64,64,64,,,,,,,,,,,,,,,,,,,,,,,64,64,64,64,64,64,64,64,64,64","64,64,64,64,,,64,64,64,,,64,,,64,,,64,64,,64,,64,,64,,64,64,,64,64,64","64,64,,64,,64,,,,,,,,,,,,,,64,,,64,64,64,64,,64,,64,,278,278,278,64","278,,,,278,278,,,,278,,278,278,278,278,278,278,278,,,,,,278,278,278","278,278,278,278,,,278,,,,,,,278,,,278,278,278,278,278,278,278,278,,278","278,278,,278,278,278,278,278,,,,,,,,,,,,,,,,,,,,278,,,278,,,278,278",",,278,,,,,,278,,,,,,,,,278,,,,,278,278,278,278,,278,278,278,278,,,,","278,278,,,,221,221,221,278,221,278,278,278,221,221,278,278,,221,,221","221,221,221,221,221,221,,,,,,221,221,221,221,221,221,221,,,221,,,,,",",221,,,221,221,221,221,221,221,221,221,,221,221,221,,221,221,221,221","221,,,,,,,,,,,,,,,,,,,,221,,,221,,,221,221,,,221,,,,,,221,,,,,,,,,221",",,,,221,221,221,221,,221,221,221,221,,,,,221,221,,,,220,220,220,221","220,221,221,221,220,220,221,221,,220,,220,220,220,220,220,220,220,,",",,,220,220,220,220,220,220,220,,,220,,,,,,,220,,,220,220,220,220,220","220,220,220,,220,220,220,,220,220,220,220,220,,,,,,,,,,,,,,,,,,,,220",",,220,,,220,220,,,220,,220,,,,220,,,,,,,,,220,,,,,220,220,220,220,,220","220,220,220,,,,,220,220,,,,800,800,800,220,800,220,220,220,800,800,220","220,,800,,800,800,800,800,800,800,800,,,,,,800,800,800,800,800,800,800",",,800,,,,,,,800,,,800,800,800,800,800,800,800,800,,800,800,800,,800","800,800,800,800,,,,,,,,,,,,,,,,,,,,800,,,800,,,800,800,,,800,,,,,,800",",,,,,,,,800,,,,,800,800,800,800,,800,800,800,800,,,,,800,800,,,,797","797,797,800,797,800,800,800,797,797,800,800,,797,,797,797,797,797,797","797,797,,,,,,797,797,797,797,797,797,797,,,797,,,,,,,797,,,797,797,797","797,797,797,797,797,,797,797,797,,797,797,797,797,797,,,,,,,,,,,,,,",",,,,,797,,,797,,,797,797,,,797,,,,,,797,,,,,,,,,797,,,,,797,797,797","797,,797,797,797,797,,,,,797,797,,,,386,386,386,797,386,797,797,797","386,386,797,797,,386,,386,386,386,386,386,386,386,,,,,,386,386,386,386","386,386,386,,,386,,,,,,,386,,,386,386,386,386,386,386,386,386,,386,386","386,,386,386,386,386,386,,,,,,,,,,,,,,,,,,,,386,,,386,,,386,386,,,386",",,,,,386,,,,,,,,,386,,,,,386,386,386,386,,386,386,386,386,,,,,386,386",",,,524,524,524,386,524,386,386,386,524,524,386,386,,524,,524,524,524","524,524,524,524,,,,,,524,524,524,524,524,524,524,,,524,,,,,,,524,,,524","524,524,524,524,524,524,524,,524,524,524,,524,524,524,524,524,,,,,,",",,,,,,,,,,,,,524,,,524,,,524,524,,,524,,,,,,524,,,,,,,,,524,,,,,524","524,524,524,,524,524,524,524,,,,,524,524,,,,523,523,523,524,523,524","524,524,523,523,524,524,,523,,523,523,523,523,523,523,523,,,,,,523,523","523,523,523,523,523,,,523,,,,,,,523,,,523,523,523,523,523,523,523,523",",523,523,523,,523,523,523,523,523,,,,,,,,,,,,,,,,,,,,523,,,523,,,523","523,,,523,,,,,,523,,,,,,,,,523,,,,,523,523,523,523,,523,523,523,523",",,,,523,523,,,,522,522,522,523,522,523,523,523,522,522,523,523,,522",",522,522,522,522,522,522,522,,,,,,522,522,522,522,522,522,522,,,522",",,,,,,522,,,522,522,522,522,522,522,522,522,,522,522,522,,522,522,522","522,522,,,,,,,,,,,,,,,,,,,,522,,,522,,,522,522,,,522,,,,,,522,,,,,,",",,522,,,,,522,522,522,522,,522,522,522,522,,,,,522,522,,,,520,520,520","522,520,522,522,522,520,520,522,522,,520,,520,520,520,520,520,520,520",",,,,,520,520,520,520,520,520,520,,,520,,,,,,,520,,,520,520,520,520,520","520,520,520,520,520,520,520,,520,520,520,520,520,,,,,,,,,,,,,,,,,,,","520,,,520,,,520,520,,,520,,520,,520,,520,,,520,,,,,,520,,,,,520,520","520,520,,520,520,520,520,,,,,520,520,,,,219,219,219,520,219,520,520","520,219,219,520,520,,219,,219,219,219,219,219,219,219,,,,,,219,219,219","219,219,219,219,,,219,,,,,,,219,,,219,219,219,219,219,219,219,219,,219","219,219,,219,219,219,219,219,,,,,,,,,,,,,,,,,,,,219,,,219,,,219,219",",,219,,219,,,,219,,,,,,,,,219,,,,,219,219,219,219,,219,219,219,219,",",,,219,219,,,,510,510,510,219,510,219,219,219,510,510,219,219,,510,","510,510,510,510,510,510,510,,,,,,510,510,510,510,510,510,510,,,510,",",,,,,510,,,510,510,510,510,510,510,510,510,,510,510,510,,510,510,510","510,510,,,,,,,,,,,,,,,,,,,,510,,,510,,,510,510,,,510,,,,,,510,,,,,,",",,510,,,,,510,510,510,510,,510,510,510,510,,,,,510,510,,,,1017,1017","1017,510,1017,510,510,510,1017,1017,510,510,,1017,,1017,1017,1017,1017","1017,1017,1017,,,,,,1017,1017,1017,1017,1017,1017,1017,,,1017,,,,,,","1017,,,1017,1017,1017,1017,1017,1017,1017,1017,,1017,1017,1017,,1017","1017,,,1017,,,,,,,,,,,,,,,,,,,,1017,,,1017,,,1017,1017,,,1017,,,,,,",",,,,,,,,,,,,,1017,1017,1017,1017,,1017,1017,1017,1017,,,,,1017,1017",",,,1081,1081,1081,1017,1081,1017,1017,1017,1081,1081,,,,1081,,1081,1081","1081,1081,1081,1081,1081,,,,,,1081,1081,1081,1081,1081,1081,1081,,,1081",",,,,,,1081,,,1081,1081,1081,1081,1081,1081,1081,1081,,1081,1081,1081",",1081,1081,,,1081,,,,,,,,,,,,,,,,,,,,1081,,,1081,,,1081,1081,,,1081",",,,,,,,,,,,,,,,,,,,1081,1081,1081,1081,,1081,1081,1081,1081,,,,,1081","1081,,,,341,341,341,1081,341,1081,1081,1081,341,341,,,,341,,341,341","341,341,341,341,341,,,,,,341,341,341,341,341,341,341,,,341,,,,,,,341",",,341,341,341,341,341,341,341,341,,341,341,341,,341,341,,,341,,,,,,",",,,,,,,,,,,,,341,,,341,,,341,341,,,341,,,1214,,1214,1214,1214,1214,1214",",,,,,,,,1214,,341,341,341,341,,341,341,341,341,,,,,341,341,,,,341,,1214","341,,341,341,341,588,588,588,,588,1214,1214,,588,588,1214,,,588,,588","588,588,588,588,588,588,,,,,,588,588,588,588,588,588,588,,,588,,,,,",",588,,,588,588,588,588,588,588,588,588,,588,588,588,,588,588,,,588,",",,,,,,,,,,,,,,,,,,588,,,588,,,588,588,,,588,,,,,,,,,,,,,,,,,,,,588,588","588,588,,588,588,588,588,,,,,588,588,,,,40,40,40,588,40,588,588,588","40,40,,,,40,,40,40,40,40,40,40,40,,,,,,40,40,40,40,40,40,40,,,40,,,",",,,40,,,40,40,40,40,40,40,40,40,,40,40,40,,40,40,,,40,,,,,,,,,,,,,,",",,,,,40,,,40,,,40,40,,,40,,,1210,,1210,1210,1210,1210,1210,,,,,,,,,1210",",40,40,40,40,,40,40,40,40,,,,,40,40,,,,40,,1210,40,,40,40,40,803,803","803,,803,1210,1210,,803,803,1210,,,803,,803,803,803,803,803,803,803",",,,,,803,803,803,803,803,803,803,,,803,,,,,,,803,,,803,803,803,803,803","803,803,803,,803,803,803,,803,803,,,803,,,,,,,,,,,,,,,,,,,,803,,,803",",,803,803,,,803,,,,,,,,,,,,,,,,,,,,803,803,803,803,,803,803,803,803",",,,,803,803,,,,360,360,360,803,360,803,803,803,360,360,,,,360,,360,360","360,360,360,360,360,,,,,,360,360,360,360,360,360,360,,,360,,,,,,,360",",,360,360,360,360,360,360,360,360,,360,360,360,,360,360,,,360,,,,,,",",,,,,,,,,,,,,360,,,360,,,360,360,,,360,,,,,,,,,,,,,,,,,,,,360,360,360","360,,360,360,360,360,,,,,360,360,,,,1144,1144,1144,360,1144,360,360","360,1144,1144,,,,1144,,1144,1144,1144,1144,1144,1144,1144,,,,,,1144","1144,1144,1144,1144,1144,1144,,,1144,,,,,,,1144,,,1144,1144,1144,1144","1144,1144,1144,1144,,1144,1144,1144,,1144,1144,,,1144,,,,,,,,,,,,,,",",,,,,1144,,,1144,,,1144,1144,,,1144,,,,,,,,,,,,,,,,,,,,1144,1144,1144","1144,,1144,1144,1144,1144,,,,,1144,1144,,,,77,77,77,1144,77,1144,1144","1144,77,77,,,,77,,77,77,77,77,77,77,77,,,,,,77,77,77,77,77,77,77,,,77",",,,,,,77,,,77,77,77,77,77,77,77,77,,77,77,77,,77,77,,,77,,,,,,,,,,,",",,,,,77,,,77,,,77,,,77,77,,,77,,,,,,,,,,,,,,,,,,,,77,77,77,77,,77,77","77,77,,,,,77,77,,,,814,814,814,77,814,77,77,77,814,814,,,,814,,814,814","814,814,814,814,814,,,,,,814,814,814,814,814,814,814,,,814,,,,,,,814",",,814,814,814,814,814,814,814,814,,814,814,814,,814,814,,,814,,,,,,",",,,,,,,,,,,,,814,,,814,,,814,814,,,814,,,,,,,,,,,,,,,,,,,,814,814,814","814,,814,814,814,814,,,,,814,814,,,,597,597,597,814,597,814,814,814","597,597,,,,597,,597,597,597,597,597,597,597,,,,,,597,597,597,597,597","597,597,,,597,,,,,,,597,,,597,597,597,597,597,597,597,597,,597,597,597",",597,597,,,597,,,,,,,,,,,,,,,,,,,,597,,,597,,,597,597,,,597,,,,,,,,",",,,,,,,,,,,597,597,597,597,,597,597,597,597,,,,,597,597,,,,39,39,39","597,39,597,597,597,39,39,,,,39,,39,39,39,39,39,39,39,,,,,,39,39,39,39","39,39,39,,,39,,,,,,,39,,,39,39,39,39,39,39,39,39,,39,39,39,,39,39,,","39,,,,,,,,,,,,,,,,,,,,39,,,39,,,39,39,,,39,,39,,,,,,,,,,,,,,,,,,39,39","39,39,,39,39,39,39,,,,,39,39,,,,76,76,76,39,76,39,39,39,76,76,,,,76",",76,76,76,76,76,76,76,,,,,,76,76,76,76,76,76,76,,,76,,,,,,,76,,,76,76","76,76,76,76,76,76,,76,76,76,,76,76,,,76,,,,,,,,,,,,,,,,,,,,76,,,76,",",76,76,,,76,,76,,,,,,,,,,,,,,,,,,76,76,76,76,,76,76,76,76,,,,,76,76",",,,78,78,78,76,78,76,76,76,78,78,,,,78,,78,78,78,78,78,78,78,,,,,,78","78,78,78,78,78,78,,,78,,,,,,,78,,,78,78,78,78,78,78,78,78,,78,78,78",",78,78,,,78,,,,,,,,,,,,,,,,,,,,78,,,78,,,78,78,,,78,,,,,,,,,,,,,,,,",",,,78,78,78,78,,78,78,78,78,,,,,78,78,,,,,,,78,,78,78,78,10,10,10,10","10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,,,,10,10","10,10,10,10,10,10,10,10,,,,,,10,10,10,10,10,10,10,10,10,10,,10,,,,,",",,10,10,,10,10,10,10,10,10,10,,,10,10,,,,10,10,10,10,,,,,,,,,,,,,,10","10,,10,10,10,10,10,10,10,10,10,10,10,10,,,10,10,,,,,,,,,,,,,,10,427","427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427","427,427,427,427,427,427,,,,427,427,427,427,427,427,427,427,427,427,",",,,,427,427,427,427,427,427,427,427,427,,,427,,,,,,,,427,427,,427,427","427,427,427,427,427,,,427,427,,,,427,427,427,427,,,,,,,,,,,,,,427,427",",427,427,427,427,427,427,427,427,427,427,427,427,,,427,427,,,,,,,,,",",,,,427,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667","667,667,667,667,667,667,667,667,667,,,,667,667,667,667,667,667,667,667","667,667,,,,,,667,667,667,667,667,667,667,667,667,,,667,,,,,,,,667,667",",667,667,667,667,667,667,667,,,667,667,,,,667,667,667,667,,,,,,,,,,",",,,667,667,,667,667,667,667,667,667,667,667,667,667,667,667,,,667,667",",,,,,,,,,,,,,667,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11","11,11,11,11,11,11,11,,,,11,11,11,11,11,11,11,11,11,11,,,,,,11,11,11","11,11,11,11,11,11,,,11,,,,,,,,11,11,,11,11,11,11,11,11,11,,,11,11,,",",11,11,11,11,,,,,,,,,,,,,,11,11,,11,11,11,11,11,11,11,11,11,11,11,11",",,11,11,,,,,,,,,,,,,,11,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26","26,26,26,26,26,26,26,26,26,,,,26,26,26,26,26,26,26,26,26,26,,,,,,26","26,26,26,26,26,26,26,26,26,26,26,,26,,,,,,26,26,,26,26,26,26,26,26,26",",,26,26,,,,26,26,26,26,,,,,,26,,,,,,,,26,26,,26,26,26,26,26,26,26,26","26,26,26,26,,,26,753,753,753,753,,,,,,1026,,1026,1026,1026,1026,1026","753,753,753,753,,,,753,1026,,,,,753,753,,,753,,,,,,,,,,,,,1026,,,,,",",753,,,753,1026,1026,,753,,1026,753,,,,,,,,,,,,,,,,753,,,,753,753,753","753,,753,753,753,753,,,,,753,753,1205,1205,1205,1205,1026,,753,,753","753,753,,,753,753,,1205,1205,1205,1205,,,1208,1205,1208,1208,1208,1208","1208,1205,1205,,,1205,,,,1208,,,,,,,,,,,,,,,,1205,,,1205,,,1208,1205",",,1205,,,,,1208,1208,1208,1208,,,,1208,,,,1205,,,,1205,1205,1205,1205",",1205,1205,1205,1205,,,,,1205,1205,1129,1129,1129,1129,,,1205,,1205","1205,1205,,,1205,1205,,1129,1129,1129,1129,,,1138,1129,1138,1138,1138","1138,1138,1129,1129,,,1129,,,,1138,,,,,,,,,,,,,,,,1129,,,1129,,,1138","1129,,,1129,,1129,,,1138,1138,1138,1138,,,,1138,,,,1129,,,,1129,1129","1129,1129,,1129,1129,1129,1129,,,,,1129,1129,989,989,989,989,,,1129",",1129,1129,1129,,,1129,1129,,989,989,989,989,,,,989,989,,,,,989,989",",,989,989,,,,,,,,,,,,,,,,,,,989,,,989,,,,989,,,989,,989,,,,,,,989,,",",,,,989,,,,989,989,989,989,,989,989,989,989,,,,,989,989,942,942,942","942,,,989,,989,989,989,,,989,989,,942,942,942,942,,,1135,942,1135,1135","1135,1135,1135,942,942,,,942,,,,1135,,,,,,,,,,,,,,,,942,,,942,,,1135","942,,,942,,,,,1135,1135,1135,1135,,,,1135,,,,942,,,,942,942,942,942",",942,942,942,942,,,,,942,942,924,924,924,924,,,942,,942,942,942,,,942","942,,924,924,924,924,,,1231,924,1231,1231,1231,1231,1231,924,924,,,924",",,,1231,,,,,,,,,,,,,,,,924,,,924,,,1231,924,,,924,,924,,,,,1231,1231",",,,1231,,,,924,,,,924,924,924,924,,924,924,924,924,,,,,924,924,745,745","745,745,,,924,,924,924,924,,,924,924,,745,745,745,745,,,,745,,,,,,745","745,,,745,,,,,,,,,,,,,,,,,,,,745,,,745,,,,745,,,745,,745,,,,,,,1166",",1166,1166,1166,1166,1166,745,,,,745,745,745,745,1166,745,745,745,745",",,,,745,745,745,943,943,943,943,,745,,745,745,745,1166,,745,745,,,943","943,943,943,,1166,1166,943,,,1166,,,943,943,,,943,,,,,,,,,,,,,,,,,,",",943,,,943,,,,943,,,943,,,1166,,,,,,,,,,,,,943,,,,943,943,943,943,,943","943,943,943,,,,,943,943,930,930,930,930,,,943,,943,943,943,,,943,943",",930,930,930,930,,,,930,930,,,,,930,930,,,930,930,,,,,,,,,,,,,,,,,,","930,,,930,,,,930,,,930,,930,,,,,,,930,,,,,,,930,,,,930,930,930,930,","930,930,930,930,,,,,930,930,929,929,929,929,,,930,,930,930,930,,,930","930,,929,929,929,929,,,,929,929,,,,,929,929,,,929,929,,,,,,,,,,,,,,",",,,,929,,,929,,,,929,,,929,,929,,,,,,,929,,,,,,,929,,,,929,929,929,929",",929,929,929,929,,,,,929,929,,,,,,,929,,929,929,929,,,929,929,780,780","780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780","780,780,780,780,780,,,,780,780,780,780,780,780,780,780,780,780,,,,,","780,780,780,780,780,780,780,780,780,,,780,,,,,,,,780,780,,780,780,780","780,780,780,780,,,780,780,,,,780,780,780,780,,,,,,,,,,,,,,780,780,,780","780,780,780,780,780,780,780,780,780,780,780,,,780,528,528,528,528,,","1212,,1212,1212,1212,1212,1212,,,,528,528,528,528,,1212,,528,528,,,",",528,528,,,528,528,,,,,,,,,1212,,,,,,,,,,528,1212,1212,528,,,1212,528",",,528,,528,,,,,,,528,,,,,,,528,,,,528,528,528,528,,528,528,528,528,",",,,528,528,527,527,527,527,,,528,,528,528,528,,,528,528,,527,527,527","527,,,,527,527,,,,,527,527,,,527,527,,,,,,,,,,,,,,,,,,,527,,,527,,,","527,,,527,,527,,,,,,,527,,,,,,,527,,,,527,527,527,527,,527,527,527,527",",,,,527,527,1173,1173,1173,1173,,,527,,527,527,527,,,527,527,,1173,1173","1173,1173,,,,1173,,,,,,1173,1173,,,1173,,,,,,,,,,,,,,,,,,,,1173,,,1173",",,,1173,,,1173,,,,,,,,,,,,,,,,1173,,,,1173,1173,1173,1173,,1173,1173","1173,1173,,,,,1173,1173,1116,1116,1116,1116,,,1173,,1173,1173,1173,",",1173,1173,,1116,1116,1116,1116,,,,1116,,,,,,1116,1116,,,1116,,,,,,",",,,,,,,,,,,,,1116,,,1116,,,,1116,,,1116,,,,,,,,,,,,,,,,1116,,,,1116","1116,1116,1116,,1116,1116,1116,1116,,,,,1116,1116,926,926,926,926,,","1116,,1116,1116,1116,,,1116,1116,,926,926,926,926,,,,926,,,,,,926,926",",,926,,,,,,,,,,,,,,,,,,,,926,,,926,,,,926,,,926,,,,,,,,,,,,,,,,926,",",,926,926,926,926,,926,926,926,926,,,,,926,926,1125,1125,1125,1125,",",926,,926,926,926,,,926,926,,1125,1125,1125,1125,,,,1125,,,,,,1125,1125",",,1125,,,,,,,,,,,,,,,,,,,,1125,,,1125,,,,1125,,,1125,,,,,,,,,,,,,,,","1125,,,,1125,1125,1125,1125,,1125,1125,1125,1125,,,,,1125,1125,936,936","936,936,,,1125,,1125,1125,1125,,,1125,1125,,936,936,936,936,,,,936,",",,,,936,936,,,936,,,,,,,,763,763,763,763,,,,,,,,,936,,,936,763,763,763","936,,,936,,936,,,,,763,763,,,763,,,,,936,,,,936,936,936,936,,936,936","936,936,,,,,936,936,,,,,,,936,,936,936,936,,,936,936,233,,233,233,233","233,233,,,,,763,763,763,763,233,763,763,763,763,,,,,763,763,950,950","950,950,,,763,,763,763,763,233,,,,,950,950,950,,233,233,233,233,,,,233",",950,950,,,950,,,,,,,,,,,,705,,705,705,705,705,705,,,,,,,,,705,,,,,","234,233,234,234,234,234,234,,,,,,,,,234,705,950,950,950,950,,950,950","950,950,,705,705,,950,950,705,,,,,234,950,,950,950,950,,,,234,234,234","234,,,409,234,409,409,409,409,409,,1020,,1020,1020,1020,1020,1020,409",",,,,705,,,1020,,644,,644,644,644,644,644,,,,,,409,409,,644,234,,,,1020","409,409,409,409,,,,409,1020,1020,1020,1020,,,,1020,644,,,,,,,,,644,644","644,644,,,1024,644,1024,1024,1024,1024,1024,,,,,,,,,1024,409,,,,,,,","1020,,,,,,,,,,,,,1024,,,,644,,,,,,,1024,1024,675,675,,1024,675,,,,,",",,675,675,,675,675,675,675,675,675,675,,,675,675,,,,675,675,675,675",",,,,,675,,,,,1024,,,675,675,,675,675,675,675,675,675,675,675,675,675","675,675,636,636,675,,636,,,,,,,,636,636,,636,636,636,636,636,636,636",",,636,636,,,,636,636,636,636,,,,,,636,,,,,,,,636,636,,636,636,636,636","636,636,636,636,636,636,636,636,629,629,636,,629,,,,,,,,629,629,,629","629,629,629,629,629,629,,,629,629,,,,629,629,629,629,,,,,,629,,,,,,",",629,629,,629,629,629,629,629,629,629,629,629,629,629,629,226,226,629",",226,,,,,,,,226,226,,226,226,226,226,226,226,226,,,226,226,,,,226,226","226,226,,,,,,226,,,,,,,,226,226,,226,226,226,226,226,226,226,226,226","226,226,226,602,602,226,,602,,,,,,,,602,602,,602,602,602,602,602,602","602,,,602,602,,,,602,602,602,602,,,,,,602,,,,,,,,602,602,,602,602,602","602,602,602,602,602,602,602,602,602,637,637,602,,637,,,,,,,,637,637",",637,637,637,637,637,637,637,,,637,637,,,,637,637,637,637,,,,,,637,",",,,,,,637,637,,637,637,637,637,637,637,637,637,637,637,637,637,225,225","637,,225,,,,,,,,225,225,,225,225,225,225,225,225,225,,,225,225,,,,225","225,225,225,,,,,,225,,,,,,,,225,225,,225,225,225,225,225,225,225,225","225,225,225,225,302,302,225,,302,,,,,,,,302,302,,302,302,302,302,302","302,302,,,302,302,,,,302,302,302,302,,,,,,,,,,,,,,302,302,,302,302,302","302,302,302,302,302,302,302,302,302,519,519,302,,519,,,,,,,,519,519",",519,519,519,519,519,519,519,,,519,519,,,,519,519,519,519,,,,,,519,",",,,,,,519,519,,519,519,519,519,519,519,519,519,519,519,519,519,518,518","519,,518,,,,,,,,518,518,,518,518,518,518,518,518,518,,,518,518,,,,518","518,518,518,,,,,,518,,,,,,,,518,518,,518,518,518,518,518,518,518,518","518,518,518,518,591,591,518,,591,,,,,,,,591,591,,591,591,591,591,591","591,591,,,591,591,,,,591,591,591,591,,,,,,591,,,,,,,,591,591,,591,591","591,591,591,591,591,591,591,591,591,591,592,592,591,,592,,,,,,,,592","592,,592,592,592,592,592,592,592,,,592,592,,,,592,592,592,592,,,,,,592",",,,,,,,592,592,,592,592,592,592,592,592,592,592,592,592,592,592,1163","1163,592,,1163,,,,,,,,1163,1163,,1163,1163,1163,1163,1163,1163,1163",",,1163,1163,,,,1163,1163,1163,1163,,,,,,1163,,,,,,,,1163,1163,,1163","1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,674,674,1163",",674,,,,,,,,674,674,,674,674,674,674,674,674,674,,,674,674,,,,674,674","674,674,,,,,,674,,,,,,,,674,674,,674,674,674,674,674,674,674,674,674","674,674,674,1164,1164,674,,1164,,,,,,,,1164,1164,,1164,1164,1164,1164","1164,1164,1164,,,1164,1164,,,,1164,1164,1164,1164,,,,,,1164,,,,,,,,1164","1164,,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,630","630,1164,,630,,,,,,,,630,630,,630,630,630,630,630,630,630,,,630,630",",,,630,630,630,630,,,,,,630,,,,,,,,630,630,,630,630,630,630,630,630","630,630,630,630,630,630,1188,1188,630,,1188,,,,,,,,1188,1188,,1188,1188","1188,1188,1188,1188,1188,,,1188,1188,,,,1188,1188,1188,1188,,,,,,1188",",,,,,,,1188,1188,,1188,1188,1188,1188,1188,1188,1188,1188,1188,1188","1188,1188,601,601,1188,,601,,,,,,,,601,601,,601,601,601,601,601,601","601,,,601,601,,,,601,601,601,601,,,,,,601,,,,,,,,601,601,,601,601,601","601,601,601,601,601,601,601,601,601,,,601"],racc_action_check=arr=$$$("Array").$new(28717,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),racc_action_pointer=[nil,1550,2590,30,nil,485,nil,21057,1279,-15,24908,25292,63,nil,111,130,888,195,878,334,213,587,nil,-72,16018,1438,25420,260,nil,586,nil,10,7680,8479,8613,9947,10209,nil,1870,24507,23582,nil,199,495,356,292,12722,13115,252,13377,14041,977,19960,226,694,nil,nil,nil,nil,nil,nil,nil,nil,nil,21341,nil,15494,15351,14696,170,nil,14434,14303,nil,nil,21200,24638,24114,24769,nil,nil,nil,nil,nil,nil,nil,nil,nil,877,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,610,nil,nil,722,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,20234,nil,nil,nil,nil,20091,19567,19436,19305,19174,nil,4318,nil,-26,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,266,nil,4462,22788,21740,21609,14172,13910,13779,27931,27748,nil,nil,264,2734,305,nil,27294,27386,317,1294,12043,11912,11257,nil,nil,1133,138,140,432,174,389,452,nil,10078,131,191,3022,455,nil,nil,7277,7146,7015,6753,6491,6360,6229,6098,5967,18507,18376,18245,17590,17459,17328,16411,16149,15756,15220,15089,20639,21478,nil,nil,nil,nil,13648,nil,nil,583,548,381,-62,413,376,696,695,584,585,nil,nil,nil,15625,nil,nil,27992,nil,nil,484,16673,17066,nil,nil,nil,nil,nil,nil,nil,17197,nil,2446,nil,455,459,nil,17721,512,17852,nil,nil,17983,18114,nil,nil,-73,nil,5836,1711,509,484,1726,513,564,525,23312,2878,999,1139,614,617,582,nil,610,571,253,616,644,nil,nil,nil,650,171,611,23852,nil,471,1022,3742,3886,687,nil,691,12591,nil,677,2302,1567,638,nil,541,621,676,662,651,690,nil,870,35,36,22133,1006,4894,459,766,651,25,39,730,747,4,793,nil,nil,1141,1285,370,nil,692,nil,714,14827,nil,27438,nil,531,386,291,288,421,142,191,396,nil,nil,nil,nil,nil,nil,nil,713,25036,nil,nil,nil,nil,726,nil,798,717,14565,725,nil,nil,715,nil,690,-60,819,nil,nil,1582,nil,nil,nil,nil,nil,1870,735,nil,740,749,217,251,21057,nil,nil,nil,0,861,795,nil,nil,20916,20780,20508,880,882,nil,nil,769,775,780,nil,nil,785,787,809,nil,nil,nil,nil,nil,nil,nil,nil,nil,801,1280,nil,nil,19031,nil,nil,nil,1,nil,nil,nil,899,nil,nil,901,579,22919,951,nil,nil,nil,-26,nil,885,28114,28053,22657,-85,22526,22395,22264,835,853,26710,26612,3454,5300,814,855,936,938,947,952,5693,5431,5562,5169,5038,4894,4750,4606,4462,3482,3568,4318,4174,2590,4030,nil,154,nil,13518,nil,nil,nil,nil,13246,889,897,901,nil,nil,nil,902,nil,nil,12984,nil,12853,nil,12460,nil,219,nil,nil,nil,12317,1438,nil,904,909,nil,nil,910,23451,916,12174,28175,28236,995,958,nil,nil,24376,929,nil,11781,28602,27809,11650,3598,11388,nil,1066,947,990,nil,11126,nil,nil,10995,nil,nil,nil,4030,1075,nil,3742,25,1080,1084,37,1086,10733,10602,27687,28480,-5,nil,nil,472,nil,27626,27870,10340,nil,nil,191,2014,nil,27463,nil,nil,nil,nil,1249,nil,nil,nil,977,nil,nil,247,nil,286,nil,nil,966,nil,968,nil,nil,nil,25164,nil,9816,971,9673,9411,9280,28358,27565,9018,8875,733,1011,8744,8076,7945,7814,1017,nil,nil,7539,7408,1021,nil,1075,1726,1105,6884,nil,nil,1120,nil,nil,376,13512,nil,13482,nil,27365,nil,975,6622,nil,1310,nil,992,997,1057,1002,nil,nil,nil,nil,nil,nil,1090,2014,nil,nil,nil,307,332,222,361,1006,5693,5562,nil,120,nil,nil,nil,nil,1029,nil,nil,nil,555,26091,311,nil,1007,1092,1014,nil,nil,25503,nil,nil,375,nil,nil,586,nil,nil,861,27241,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,791,464,nil,nil,1016,26529,nil,1148,nil,1131,4,nil,nil,16280,nil,1046,1053,1154,nil,1041,nil,1088,22002,nil,nil,21871,nil,109,23721,1044,nil,1048,-1,233,1103,249,799,1117,1088,24245,nil,1156,2158,10864,nil,nil,nil,372,876,nil,1213,nil,nil,nil,nil,nil,1219,1220,nil,nil,6,1101,-21,-19,68,7,1150,997,989,nil,1103,4606,14958,nil,1227,22,1107,nil,nil,nil,nil,nil,4750,nil,nil,nil,nil,nil,nil,nil,nil,1106,15887,1110,387,385,110,500,nil,2302,16542,nil,1110,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,16804,16935,1236,nil,3886,1121,1169,nil,nil,1129,nil,1212,nil,nil,1131,1136,nil,1141,1143,nil,1144,nil,nil,nil,1150,1204,507,nil,nil,18638,18769,18900,5169,5300,5431,333,25993,1231,27004,-65,-35,26386,26288,480,-32,1154,1155,nil,27200,nil,1154,747,nil,1178,25895,26190,nil,929,1243,281,nil,nil,27339,20916,nil,nil,nil,nil,8207,nil,nil,nil,nil,nil,8338,nil,nil,1227,nil,nil,1237,1224,nil,nil,429,2446,nil,nil,nil,nil,1227,250,nil,137,nil,1357,nil,9149,1361,nil,nil,25797,9542,5038,-18,1362,nil,1363,369,1582,nil,nil,nil,nil,1238,1285,1249,1247,304,nil,nil,10471,3310,3166,nil,3166,nil,nil,-10,23050,nil,nil,27446,nil,497,nil,27515,nil,25493,nil,nil,nil,nil,1248,1250,3022,2878,11519,nil,1251,nil,nil,nil,nil,1257,1258,1260,1262,1263,1264,nil,nil,nil,1309,1267,-39,nil,1276,nil,nil,-66,1275,nil,nil,nil,nil,nil,nil,1323,2734,2158,nil,nil,1285,1286,nil,1287,1288,1291,nil,1316,1296,1283,23181,nil,nil,nil,nil,nil,8,nil,26,771,nil,40,nil,nil,nil,1420,3454,3310,1136,nil,nil,nil,1438,32,33,872,1376,34,nil,1302,1312,1313,1314,1348,3584,26906,nil,nil,nil,nil,nil,nil,nil,1317,27102,nil,145,nil,25699,nil,nil,815,nil,nil,25898,nil,nil,25702,nil,13537,nil,nil,1342,23983,763,1397,3598,nil,19698,19829,nil,nil,nil,nil,1341,1454,713,nil,nil,nil,1457,20377,28297,28419,69,26144,nil,nil,nil,nil,1332,1333,26808,1341,nil,nil,1342,nil,nil,1361,1365,1382,1385,nil,1386,nil,618,28541,nil,973,4174,nil,nil,nil,nil,nil,1195,nil,1392,76,79,109,136,1391,25601,1394,nil,25604,nil,23629,nil,26599,nil,23359,nil,nil,1439,1442,nil,362,nil,142,nil,1399,1401,1404,1409,nil,nil,nil,25996,nil,nil,nil,nil,-129,nil],racc_action_default=[-1,-745,-4,-745,-2,-730,-5,-745,-8,-745,-745,-745,-745,-31,-745,-745,-36,-745,-745,-639,-639,-311,-52,-732,-745,-61,-745,-69,-70,-71,-75,-287,-287,-287,-324,-352,-353,-87,-13,-91,-99,-101,-745,-626,-627,-745,-745,-745,-745,-745,-745,-239,-745,-732,-258,-302,-303,-304,-305,-306,-307,-308,-309,-310,-718,-313,-317,-744,-707,-333,-335,-745,-745,-63,-63,-730,-745,-745,-745,-354,-355,-357,-358,-359,-360,-419,-563,-564,-565,-566,-587,-569,-570,-589,-591,-574,-579,-583,-585,-601,-602,-603,-587,-605,-607,-608,-609,-610,-716,-615,-616,-717,-618,-619,-620,-621,-622,-623,-624,-625,-630,-631,1238,-3,-731,-740,-741,-742,-7,-745,-745,-745,-745,-745,-9,-4,-19,-745,-130,-131,-132,-133,-134,-135,-136,-140,-141,-142,-143,-144,-145,-146,-147,-148,-149,-150,-151,-152,-153,-154,-155,-156,-157,-158,-159,-160,-161,-162,-163,-164,-165,-166,-167,-168,-169,-170,-171,-172,-173,-174,-175,-176,-177,-178,-179,-180,-181,-182,-183,-184,-185,-186,-187,-188,-189,-190,-191,-192,-193,-194,-195,-196,-197,-198,-199,-200,-201,-202,-203,-204,-205,-206,-207,-208,-209,-210,-24,-137,-13,-745,-745,-745,-745,-745,-277,-745,-745,-728,-729,-745,-13,-638,-636,-662,-662,-745,-13,-745,-745,-732,-733,-56,-745,-626,-627,-745,-311,-745,-745,-245,-745,-639,-639,-13,-745,-57,-59,-222,-223,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-259,-260,-261,-262,-745,-65,-66,-745,-130,-131,-170,-171,-172,-188,-193,-200,-203,-626,-627,-705,-745,-428,-430,-745,-726,-727,-76,-277,-745,-332,-434,-443,-445,-82,-440,-83,-732,-84,-265,-282,-292,-292,-286,-290,-293,-745,-587,-709,-713,-745,-85,-86,-730,-14,-745,-17,-745,-89,-13,-732,-745,-92,-95,-13,-107,-108,-745,-745,-115,-324,-327,-732,-745,-639,-639,-352,-353,-356,-441,-745,-97,-745,-103,-321,-745,-224,-225,-606,-233,-234,-745,-246,-251,-13,-315,-732,-266,-737,-737,-745,-745,-737,-745,-334,-62,-745,-745,-745,-13,-13,-730,-745,-731,-626,-627,-745,-745,-311,-745,-370,-371,-125,-126,-745,-128,-745,-311,-634,-745,-348,-662,-567,-745,-745,-745,-745,-745,-745,-745,-745,-6,-743,-25,-26,-27,-28,-29,-745,-745,-21,-22,-23,-138,-745,-32,-35,-298,-745,-745,-297,-33,-745,-37,-745,-311,-49,-51,-211,-270,-293,-53,-54,-38,-212,-270,-732,-278,-292,-292,-719,-720,-287,-438,-721,-722,-720,-719,-287,-437,-439,-721,-722,-745,-555,-745,-383,-384,-732,-704,-704,-644,-645,-647,-647,-647,-661,-663,-664,-665,-666,-667,-668,-669,-670,-671,-745,-673,-675,-677,-682,-684,-685,-688,-693,-695,-696,-698,-699,-700,-702,-745,-745,-745,-48,-219,-55,-732,-331,-745,-745,-745,-277,-321,-745,-745,-745,-745,-745,-745,-745,-220,-221,-226,-227,-228,-229,-230,-231,-235,-236,-237,-238,-240,-241,-242,-243,-244,-247,-248,-249,-250,-732,-263,-67,-732,-449,-287,-719,-720,-73,-77,-663,-732,-292,-732,-288,-447,-449,-732,-326,-283,-745,-284,-745,-289,-745,-294,-745,-712,-715,-12,-731,-16,-18,-732,-88,-319,-104,-93,-745,-732,-277,-745,-745,-114,-745,-638,-606,-745,-100,-105,-745,-745,-745,-745,-264,-745,-328,-745,-732,-745,-267,-739,-738,-269,-739,-322,-323,-708,-13,-361,-362,-13,-745,-745,-745,-745,-745,-745,-277,-745,-745,-321,-63,-125,-126,-127,-745,-745,-277,-344,-632,-745,-13,-420,-662,-423,-568,-588,-593,-745,-595,-571,-590,-745,-592,-573,-745,-576,-745,-578,-581,-745,-582,-745,-604,-10,-20,-745,-30,-745,-301,-745,-745,-277,-745,-745,-745,-745,-442,-745,-279,-281,-745,-745,-78,-276,-435,-745,-745,-80,-436,-44,-254,-744,-744,-350,-637,-745,-642,-643,-745,-745,-654,-745,-657,-745,-659,-745,-745,-372,-745,-374,-376,-379,-382,-732,-676,-686,-687,-697,-701,-640,-46,-256,-351,-330,-734,-719,-720,-719,-720,-732,-745,-745,-58,-463,-466,-467,-468,-469,-471,-473,-476,-477,-534,-732,-489,-492,-504,-508,-513,-515,-516,-519,-520,-587,-523,-525,-526,-527,-532,-533,-745,-745,-537,-538,-539,-540,-541,-542,-543,-544,-545,-546,-547,-745,-745,-553,-60,-745,-745,-706,-745,-450,-72,-431,-447,-272,-279,-274,-745,-409,-745,-325,-292,-291,-295,-745,-710,-711,-745,-15,-90,-745,-96,-102,-732,-719,-720,-275,-723,-113,-745,-98,-745,-218,-232,-252,-745,-314,-316,-318,-737,-744,-363,-744,-64,-364,-365,-338,-339,-745,-745,-455,-341,-745,-732,-719,-720,-723,-320,-13,-125,-126,-129,-732,-13,-745,-346,-745,-745,-732,-594,-597,-598,-599,-600,-13,-572,-575,-577,-580,-584,-586,-139,-34,-299,-745,-732,-719,-720,-720,-719,-50,-271,-745,-735,-292,-40,-214,-41,-215,-79,-42,-217,-43,-216,-81,-745,-745,-744,-368,-13,-556,-744,-557,-558,-704,-683,-688,-703,-646,-647,-647,-674,-647,-647,-694,-647,-671,-386,-689,-732,-745,-745,-381,-672,-745,-745,-745,-745,-745,-745,-442,-464,-745,-745,-474,-475,-745,-745,-745,-494,-732,-732,-488,-495,-501,-745,-745,-491,-745,-745,-745,-507,-514,-518,-745,-522,-524,-530,-531,-535,-536,-548,-549,-745,-611,-612,-613,-126,-551,-745,-68,-429,-409,-433,-432,-745,-732,-444,-410,-732,-13,-446,-285,-296,-714,-94,-442,-106,-732,-268,-745,-366,-745,-745,-340,-342,-745,-745,-13,-442,-745,-442,-745,-745,-13,-349,-421,-424,-426,-413,-745,-745,-300,-442,-39,-213,-280,-45,-255,-11,-13,-562,-369,-745,-745,-560,-641,-745,-650,-745,-652,-745,-655,-745,-658,-660,-373,-375,-377,-380,-47,-257,-745,-465,-504,-470,-472,-481,-485,-732,-732,-732,-732,-732,-732,-552,-486,-487,-511,-496,-499,-502,-732,-587,-736,-732,-505,-509,-512,-517,-521,-528,-529,-745,-253,-13,-74,-273,-704,-704,-390,-392,-392,-392,-408,-745,-732,-671,-679,-680,-691,-448,-329,-336,-745,-337,-745,-460,-295,-744,-343,-345,-633,-745,-13,-13,-745,-422,-596,-561,-13,-626,-627,-745,-745,-311,-559,-647,-647,-647,-647,-745,-745,-745,-478,-479,-480,-482,-483,-484,-503,-497,-745,-490,-745,-493,-745,-550,-451,-745,-388,-389,-393,-399,-401,-745,-404,-745,-406,-411,-745,-745,-678,-745,-13,-456,-745,-745,-452,-453,-454,-347,-745,-745,-732,-415,-417,-418,-555,-277,-745,-745,-321,-745,-648,-651,-653,-656,-378,-505,-745,-500,-506,-510,-704,-681,-391,-392,-392,-392,-392,-692,-392,-412,-690,-745,-321,-744,-13,-461,-462,-425,-427,-414,-745,-554,-732,-719,-720,-723,-320,-647,-745,-498,-387,-745,-396,-745,-398,-745,-402,-745,-405,-407,-320,-723,-367,-744,-416,-442,-649,-392,-392,-392,-392,-457,-458,-459,-745,-394,-397,-400,-403,-392,-395],clist=["44,411,301,309,313,44,141,141,318,318,318,340,285,418,454,493,493,284","382,384,385,473,141,389,297,19,626,511,709,832,19,693,460,466,356,356","44,344,344,635,127,698,699,571,225,618,621,339,563,702,704,706,144,144","890,303,708,598,897,241,983,19,352,352,44,134,387,388,366,136,217,356","356,356,393,297,297,421,422,423,424,798,232,232,305,312,314,907,8,19","795,445,795,8,445,302,561,678,940,352,352,352,359,734,778,737,737,790","445,555,127,124,438,439,1003,451,383,383,236,559,383,715,44,798,610","613,1160,1059,617,512,375,44,904,44,1158,484,484,756,756,123,229,235","336,1037,4,476,509,19,320,320,320,1030,373,973,1032,1184,19,1075,19","1016,782,128,2,607,656,658,17,1012,338,1044,1047,17,792,801,383,383","383,383,216,1055,571,377,380,933,595,595,986,399,516,434,798,493,934","406,408,427,527,461,318,528,795,795,17,826,952,953,286,780,786,390,8","667,652,654,657,657,44,369,605,425,378,8,470,785,1160,1184,298,432,44","379,17,397,1221,639,44,1078,576,372,608,374,818,19,846,19,709,997,19","642,915,1031,1077,44,1136,19,433,444,1079,1157,444,19,19,831,339,903","568,905,449,450,518,319,319,319,444,844,643,999,19,426,419,409,318,318","850,514,515,804,1097,584,17,318,1098,554,565,566,813,965,1151,17,1089","17,1172,1228,376,989,1191,1038,1039,899,795,1174,731,484,303,929,232","232,316,329,330,930,1180,645,939,309,942,460,466,1068,968,313,1061,44","599,1062,622,44,356,912,955,344,44,894,1143,1,553,410,339,412,1175,413","236,339,552,1030,1171,356,19,1206,344,414,19,415,1036,416,352,19,127","1042,1045,417,44,591,525,526,923,852,1043,1046,596,857,806,847,17,352","17,44,44,17,935,601,902,582,1064,1065,17,19,623,624,809,898,17,17,1178","587,907,,,1126,809,,19,19,,961,,,,17,836,581,629,320,,141,127,696,493","1219,845,320,,383,685,849,,,809,580,690,,,336,,,809,691,336,709,709","979,,236,641,1152,437,437,860,904,860,,,1019,,868,725,579,,583,674,144","1021,1023,589,1025,1027,,1028,,,992,,460,466,493,722,493,666,,994,,461",",,1177,318,,991,17,882,,978,17,781,887,,,17,238,,,787,1006,789,684,452","470,793,975,798,689,,,,625,,772,772,685,513,795,969,,802,,1076,,17,371","805,756,756,562,319,445,721,,484,,,756,319,17,17,445,445,756,851,820","445,445,599,735,735,461,318,1090,904,737,1048,599,982,1041,,461,878","880,1049,1050,44,883,885,1229,1110,356,1052,,344,895,470,564,,1060,356",",,344,,567,470,756,975,461,318,19,,,,,784,461,,352,318,,,,44,,,44,352",",,,1230,841,470,823,,,825,,470,,,1133,1134,995,,,44,19,,1144,19,904","461,318,709,709,,,,,,,,827,,,,,,141,916,19,947,44,,,900,470,,900,44",",848,1103,1167,1168,1169,1170,,,794,,,,1120,1121,1122,,19,,,19,,1181",",19,1182,,,,,19,19,444,,144,19,19,,,,,,444,444,,1198,,444,444,,822,864",",1153,,,,,,967,,,,,,,1207,899,772,17,,445,,1147,,1148,772,,,1080,865",",896,,966,772,772,873,,1060,,963,1007,,,1224,284,1223,1060,,599,141","1176,,932,,685,17,,690,17,980,946,1096,,,,,,877,996,,,356,,,344,493",",,,17,,,356,,,344,513,,452,,,,,,1060,,,,,352,,,,,1072,,17,594,,17,352",",44,17,,1222,,44,,17,17,,,993,17,17,1176,,44,,,609,1131,,1029,835,981","19,,1004,,,19,,,,,,,1040,,,,19,,,,,,,,,1156,44,815,383,,,,,,19,,,1015","877,,1066,,,,,,444,,,,,19,,1080,1070,,1080,,772,,772,,,772,772,437,1085",",,1087,772,,,,679,,772,772,,,,1073,,,772,772,,,1199,1014,,,,1018,932",",,,,932,932,,,1127,,,809,44,,879,881,,1058,,884,886,,,1084,,,,,772,","44,1080,1117,1118,1119,1072,44,19,1072,,1072,1092,383,,,,17,,1128,,","17,44,356,,19,1105,,,,31,19,17,1102,735,31,,,,,,383,1095,,,779,,19,",",17,352,31,,,,,,,,,,31,31,31,,31,17,,,,,,,,,,44,1072,,1072,,1072,,1072",",,356,,,297,,,,31,,,,,31,31,1072,19,31,,,44,44,1192,1193,,,44,,,352","900,1155,,1073,,,1073,1161,1073,772,,906,,908,,19,19,,772,,,19,772,",",,,1163,,,461,318,17,,356,,31,297,765,765,44,31,31,31,31,31,,31,,,17","1190,,,,470,17,,,,,1008,352,,,19,772,,,,,,17,,,,1073,,1073,470,1073",",1073,,44,,,,,383,383,,,,,1220,,1081,772,1073,,,,,,879,881,886,884,19","679,,,,,,,,,,,,,,679,941,,17,,,31,31,31,31,31,31,31,,,,,,31,,,,,,31","31,31,31,,,,,17,17,381,18,,,17,,18,31,,,,,,,,,,,,,,,,242,,,,679,,,,",",242,242,242,,18,345,345,,,,,,,,,17,,,,,31,,,,679,,,31,31,,1008,,18","679,,,31,242,242,1002,,242,394,404,404,,,1137,1139,1141,,,,,31,,679",",31,17,,,,31,,765,1081,,,1081,,,1081,765,1081,,,,,,764,764,765,765,",",,,,1074,18,,,31,,242,242,242,242,18,,18,,,,,,31,31,31,,,,,,,679,,435","448,,679,679,,,,,,31,,,,,,,,,1111,,1112,,1113,1081,,1081,,1081,,1081",",,,,1209,1211,1213,1215,,1216,,1002,,,,,1081,,,,,,,,,,,,,,,,,,,18,242","442,242,242,442,242,,31,,,,18,1232,1233,1234,1235,,18,442,242,242,,",",1237,,,,,,,,,,18,,573,,575,,,577,578,,,,31,,679,679,679,,,,,,31,,941","765,,765,,,765,765,,,,,1183,765,1185,,,,,765,765,,242,,1002,,,765,765","242,242,,,,,,,,242,,1204,,,,,,,,,,,,,,,764,18,,31,,18,,,764,345,18,765",",31,,,,764,764,,,,,,,,,1225,345,1226,,1227,,20,,,,670,20,,18,31,,,31",",,1196,,,1236,31,,,242,18,18,,,,,31,,,,31,,,,20,353,353,,,,242,,,,,",",,,,,,,,679,,,31,,,31,31,20,716,31,,,,,,31,31,353,353,353,31,31,,,,",",,,,,,,,,,,,,,,,,,,,,,765,242,,,,,,,,765,,,,765,,,,20,,,,,,,,,20,,20",",,,,796,,381,,799,,,242,764,,764,,,764,764,,,242,,,764,,,,765,,764,764",",,,,,,764,764,,,,,,796,,,381,,,,,,,,,,,,765,448,,,,,,,,,,,,,31,,,764",",,,18,20,,20,,,20,,345,,242,,,20,,,31,345,,20,20,31,31,,866,,,,,,,,31","796,381,,20,,18,,,18,,,,,,893,242,,31,,,,,,,,242,,,911,18,,,,,31,,,",",,,,,,,,,,,,,,,,,,18,,,442,242,,,18,,,,,,442,442,,,,442,442,,,,,,,,20",",,,20,,,764,353,20,,,,,,31,764,,,,764,,,,,796,,353,,,,,31,,976,,,977",",20,,,,,31,,,,,,31,,,,20,20,31,,,,,,,,764,,,,,,,,31,,,,,,,,,,,,,,,,",",,,,,,,764,,,,,,,,1005,,,345,,,,,15,,,,,15,345,,,,242,,,,,31,,,,,,,",",,,,,,,,,,18,,,15,,18,242,,,,,31,31,,,,18,31,,,21,,,,,21,,,,,,15,,,442",",,,,,,398,773,773,,,,,,,,18,,,,,21,347,347,,,31,,31,31,,,,,,,,,,,,31",",,,,,1091,,21,,,,,15,,,,,396,405,405,,15,,15,381,20,,,31,,,,,353,,,",",242,,,,353,,,,,,,,,,,,,18,,,,,,,,20,,21,20,242,,,771,771,,18,21,,21",",,18,,,,,,,,20,,,,,,,,18,,,,1106,,,,,,,15,,440,,,440,,,20,,,20,15,,","20,,,15,440,,20,20,,,,20,20,,,,,,,,15,,,,,,,,,18,,,,,,,,,21,,443,,1145","443,,,,,,,21,,,,,,21,443,18,18,,,773,,18,,,,,,773,,,21,,,,,,773,773",",770,770,,,,,,,,,,,,,,,,,15,,,,15,1187,,,18,15,242,242,,,,,,,,,,,,242",",,,353,,,,,,,,,,,353,15,,,,,,,,,,,,,18,21,15,15,,21,,,,347,21,,,20,","771,,,20,,,,,771,,,,,347,20,,,771,771,,,,,,,21,,,,,,,20,43,,,,,43,,21","21,,,,,,,,20,,,,,,,,296,,,,,,,,,,,,43,343,343,,,773,,773,,,773,773,",",,,,773,,,,,,773,773,,,,43,,,773,773,,,,,,392,296,296,,,,,,,,,,,,,,",",,,769,769,,20,,,770,,,,,,773,,770,,,,,,,20,,770,770,,,20,43,,,,,,,",",43,,43,,,,20,,768,768,353,,,,,771,15,771,,,771,771,,,,,,771,,,,,,771","771,,,,,,,771,771,,,,,,,,,,,,15,,,15,,,,20,,,,,,,,21,,,,,353,,,347,15",",771,,,,,43,347,,,,20,20,,,,,20,43,767,767,,,773,43,,15,,21,440,,21","773,15,,,773,,,440,440,43,,,440,440,,,,,,,21,,,,,,353,856,,20,,,,,,",",770,,770,,,770,770,,,,21,773,770,443,,,,21,770,770,,,,443,443,,770","770,443,443,,,,769,,,20,,,,,769,,773,,,,,,,769,769,43,,,,43,,,771,343","43,,,,770,,,771,,,,771,,,,,,768,343,,,,,,,768,,,,,43,,,,768,768,,,,",",,,,,43,43,,,,,,,,,771,,,,,,,,,,,,,15,,,,,15,,,,,,,,,,347,15,,,771,",",,,,,347,,,,,,,,440,,,,,767,,,,,,,,767,,,,15,,21,,,767,767,21,,,,,770",",,,,,21,,,770,,,,770,,,,,,,769,,769,,443,769,769,,,,,,769,,,,,,769,769",",21,,,,,769,769,,,,,,,,,,770,,766,766,,,,,768,,768,,15,768,768,,,,,","768,,,,,,768,768,769,,15,,770,,768,768,15,,,,,,,,,,,,,,43,,15,,,,1109",",343,,,,,,,21,,343,,,,,,768,,,,,,,,,,21,,,,,43,21,,43,,,,,,,767,,767",",,767,767,21,,15,,1108,767,,43,,,,767,767,34,,,,,34,767,767,,,,,,,,",",,15,15,,43,34,,15,,,,43,,,,34,34,34,,34,769,,,,,21,,,767,769,,,,769",",,,,405,,,,,,,,,34,,,,15,34,34,21,21,34,,,,21,,,,,768,,,,,,,,,768,,","769,768,,,,,,,766,,,,,,,,766,,15,,,,,,405,766,766,21,34,,,,769,34,34","34,34,34,,34,,,,,,768,,,,,,,,,,,,,,,,343,,,,,,,,,,21,343,,,,,768,767",",,,,,,,,767,,,,767,,,,,,,,43,,,,,43,,,,,,,,,,,43,,,,,,,34,34,34,34,34","34,34,,,,,,34,767,,,,,34,34,34,34,,,,,,,43,,,,,,,34,,,,,,,,,,767,,,",",,,,,,,,,,,,,,,,766,,766,,,766,766,,,,,,766,,,,34,,766,766,,,,34,34",",766,766,,,,,34,,,,,,,,,,,,43,,,,,,34,,,,34,,,,,34,,,43,,,766,,,43,",",,,,,,,,,,,,,,43,,,,1104,34,,,,,,,,,,,,,,34,34,34,,,,,,,,,,,,,,,,,,","34,,,,,,,,,,,,,,,43,,,,,,,,,,,,,296,,,,,,,,,,,,,,,,43,43,,,,,43,,,,",",,,,,,249,,,34,,,,766,,,317,317,317,,,,766,,,,766,,364,365,,367,368",",370,,296,,,43,,,,,,,,,34,317,317,,,,,,,,34,,,,,,,,,,,,766,,,,,,,,,",",,,43,,,,,,,,,,,,,,,,,,,766,,,,,,,,,,,,,,,,34,,,,,,,,,,34,,,,,,,,,,",",,,,,,,,,,,,,,,,,34,,,34,,,,,,,34,,,,,,,,,,34,,,,34,,,,,,,,,,,,,,,,",",,,,317,447,,,453,317,34,,,34,34,,,34,,,,,453,34,34,,,,34,34,,,,,,249",",,,,,,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544","545,546,547,548,549,550,,,,,551,,,,,,,,,,,,,,,,,,,,,,,317,317,,,,,,",",317,,,,,,,317,,317,,,317,317,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,604,,,,,34,,,,,,,,,,,,,,,,,,,,,,,34,,,,,34,34,,,,,,,,,,34,,,,,,,,",",,,,,,,,,34,,,,,317,,,,,,,,,,,,34,,,,,,,,,,,,,,,,,,,,,,,692,,,,,,,,",",,,,,,,,,,,,,,,,,317,,,,,,,,,,,,,723,,34,,,,,,,,317,,453,453,453,,,",",34,,,,,,,,,,,,34,,,,,,34,,,,,,34,,,,,,,365,,,,,,,,,34,317,,317,,317",",,,,,,,,,,,,,,,317,,,,,,,,,,453,,,816,,817,,,,,,317,,,317,,,,,,,,,,34",",,317,317,,,,,,,,,,317,,,,,,,,,,,,,,,34,34,,,,,34,,,,,,,,,,,,317,453","317,,,,874,,,317,317,453,453,,,,453,453,,,,,,317,,,,,,,,,34,,34,34,","317,,,,,,,,,,34,,,,,,,,,,,,,,692,723,,,,,,,,,,,,,,34,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,317,,,,,,,,,317,,,317,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,317,,,,,,,,453,,,,,,,,",",,,,1010,1011,,,,,,,,,,,,,,,,,,,,,,,,,,,,1033,1034,453,453,453,453,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1067,,,,,,,,,,,,,,,,,,,,,,,,,",",,317,,,,,,,,,,,,,,,,,,,317,,,,,,,,,,,,,,,,,,,,,,,,,,453,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,317"],racc_goto_table=arr=$$$("Array").$new(4752,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),clist=["72,198,158,91,91,72,75,75,36,36,36,68,46,198,31,230,230,48,107,19,19","10,75,19,72,34,112,10,128,113,34,12,55,55,82,82,72,72,72,73,117,139","139,94,33,110,110,11,92,228,228,228,77,77,13,33,135,70,133,22,111,34","34,34,72,9,44,44,80,17,17,82,82,82,72,72,72,19,19,19,19,239,87,87,56","56,56,235,8,34,95,20,95,8,20,51,31,32,187,34,34,34,69,41,41,177,177","58,20,55,117,7,24,24,149,28,26,26,119,57,26,129,72,239,89,89,152,192","89,28,87,72,231,72,151,225,225,200,200,5,35,35,64,193,2,157,157,34,90","90,90,127,8,147,130,236,34,145,34,207,161,6,3,10,214,214,29,14,65,178","178,29,161,16,26,26,26,26,18,178,94,90,90,175,224,224,13,21,66,25,239","230,176,74,74,27,42,91,36,43,95,95,29,45,202,202,50,52,60,5,8,78,215","215,215,215,72,83,84,8,86,8,75,93,152,236,105,11,72,106,29,114,151,116","72,149,198,120,121,122,123,34,124,34,128,125,34,126,128,131,136,72,142","34,22,22,143,150,22,34,34,112,11,146,66,146,26,26,33,88,88,88,22,73","153,154,34,2,6,155,36,36,156,26,26,70,159,66,29,36,160,162,164,165,70","168,169,29,170,29,192,171,88,172,173,180,182,200,95,192,31,225,33,183","87,87,63,63,63,184,145,157,188,91,189,55,55,147,58,91,195,72,68,196","19,72,82,129,205,72,72,206,149,1,26,210,11,211,193,212,119,11,51,127","130,82,34,192,72,213,34,216,175,217,34,34,117,175,175,218,72,33,35,35","32,219,176,176,80,220,31,223,29,34,29,72,72,29,32,33,229,9,202,202,29","34,11,11,55,233,29,29,234,69,235,,,187,55,,34,34,,73,,,,29,31,8,33,90",",75,117,66,230,111,31,90,,26,91,10,,,55,7,91,,,64,,,55,36,64,128,128","32,,119,26,13,88,88,215,231,215,,,139,,31,66,5,,65,33,77,228,228,65","228,228,,228,,,32,,55,55,230,36,230,17,,32,,91,,,133,36,,110,29,57,","70,29,66,57,,,29,40,,,66,32,66,56,79,75,66,94,239,56,,,,5,,72,72,91","79,95,92,,66,,146,,29,40,66,200,200,88,88,20,117,,225,,,200,88,29,29","20,20,200,157,66,20,20,68,174,174,91,36,41,231,177,73,68,89,32,,91,28","28,32,32,72,28,28,13,146,82,191,,72,24,75,63,,191,82,,,72,,63,75,200","94,91,36,34,,,,,56,91,,34,36,,,,72,,,72,34,,,,113,44,75,11,,,11,,75",",,139,139,10,,,72,34,,135,34,231,91,36,128,128,,,,,,,,117,,,,,,75,66","34,198,72,,,140,75,,140,72,,117,110,228,228,228,228,,,90,,,,32,32,32",",34,,,34,,146,,34,146,,,,,34,34,22,,77,34,34,,,,,,22,22,,12,,22,22,","90,17,,112,,,,,,107,,,,,,,139,200,72,29,,20,,110,,110,72,,,230,8,,87",",158,72,72,8,,191,,46,28,,,146,48,228,191,,68,75,191,,174,,91,29,,91","29,68,174,10,,,,,,90,19,,,82,,,72,230,,,,29,,,82,,,72,79,,79,,,,,,191",",,,,34,,,,,132,,29,40,,29,34,,72,29,,32,,72,,29,29,,,11,29,29,191,,72",",,40,10,,66,88,26,34,,11,,,34,,,,,,,66,,,,34,,,,,,,,,10,72,79,26,,,",",,34,,,11,90,,19,,,,,,22,,,,,34,,230,66,,230,,72,,72,,,72,72,88,66,",",19,72,,,,40,,72,72,,,,140,,,72,72,,,31,87,,,,87,174,,,,,174,174,,,198",",,55,72,,79,79,,174,,79,79,,,11,,,,,72,,72,230,66,66,66,132,72,34,132",",132,11,26,,,,29,,66,,,29,72,82,,34,72,,,,59,34,29,11,174,59,,,,,,26","117,,,40,,34,,,29,34,59,,,,,,,,,,59,59,59,,59,29,,,,,,,,,,72,132,,132",",132,,132,,,82,,,72,,,,59,,,,,59,59,132,34,59,,,72,72,19,19,,,72,,,34","140,11,,140,,,140,11,140,72,,144,,144,,34,34,,72,,,34,72,,,,,33,,,91","36,29,,82,,59,72,98,98,72,59,59,59,59,59,,59,,,29,11,,,,75,29,,,,,79","34,,,34,72,,,,,,29,,,,140,,140,75,140,,140,,72,,,,,26,26,,,,,11,,232","72,140,,,,,,79,79,79,79,34,40,,,,,,,,,,,,,,40,40,,29,,,59,59,59,59,59","59,59,,,,,,59,,,,,,59,59,59,59,,,,,29,29,85,30,,,29,,30,59,,,,,,,,,",",,,,,,30,,,,40,,,,,,30,30,30,,30,30,30,,,,,,,,,29,,,,,59,,,,40,,,59","59,,79,,30,40,,,59,30,30,40,,30,30,30,30,,,141,141,141,,,,,59,,40,,59","29,,,,59,,98,232,,,232,,,232,98,232,,,,,,97,97,98,98,,,,,,144,30,,,59",",30,30,30,30,30,,30,,,,,,59,59,59,,,,,,,40,,85,85,,40,40,,,,,,59,,,",",,,,,144,,144,,144,232,,232,,232,,232,,,,,141,141,141,141,,141,,40,",",,,232,,,,,,,,,,,,,,,,,,,30,30,30,30,30,30,30,,59,,,,30,141,141,141","141,,30,30,30,30,,,,141,,,,,,,,,,30,,85,,85,,,85,85,,,,59,,40,40,40",",,,,,59,,40,98,,98,,,98,98,,,,,144,98,144,,,,,98,98,,30,,40,,,98,98","30,30,,,,,,,,30,,144,,,,,,,,,,,,,,,97,30,,59,,30,,,97,30,30,98,,59,",",,97,97,,,,,,,,,144,30,144,,144,,38,,,,85,38,,30,59,,,59,,,40,,,144","59,,,30,30,30,,,,,59,,,,59,,,,38,38,38,,,,30,,,,,,,,,,,,,,40,,,59,,","59,59,38,85,59,,,,,,59,59,38,38,38,59,59,,,,,,,,,,,,,,,,,,,,,,,,,,,98","30,,,,,,,,98,,,,98,,,,38,,,,,,,,,38,,38,,,,,85,,85,,85,,,30,97,,97,",",97,97,,,30,,,97,,,,98,,97,97,,,,,,,97,97,,,,,,85,,,85,,,,,,,,,,,,98","85,,,,,,,,,,,,,59,,,97,,,,30,38,,38,,,38,,30,,30,,,38,,,59,30,,38,38","59,59,,85,,,,,,,,59,85,85,,38,,30,,,30,,,,,,85,30,,59,,,,,,,,30,,,85","30,,,,,59,,,,,,,,,,,,,,,,,,,,,,30,,,30,30,,,30,,,,,,30,30,,,,30,30,",",,,,,,38,,,,38,,,97,38,38,,,,,,59,97,,,,97,,,,,85,,38,,,,,59,,85,,,85",",38,,,,,59,,,,,,59,,,,38,38,59,,,,,,,,97,,,,,,,,59,,,,,,,,,,,,,,,,,",",,,,,,97,,,,,,,,85,,,30,,,,,23,,,,,23,30,,,,30,,,,,59,,,,,,,,,,,,,,",",,,30,,,23,,30,30,,,,,59,59,,,,30,59,,,39,,,,,39,,,,,,23,,,30,,,,,,","23,109,109,,,,,,,,30,,,,,39,39,39,,,59,,59,59,,,,,,,,,,,,59,,,,,,85",",39,,,,,23,,,,,39,39,39,,23,,23,85,38,,,59,,,,,38,,,,,30,,,,38,,,,,",",,,,,,,30,,,,,,,,38,,39,38,30,,,104,104,,30,39,,39,,,30,,,,,,,,38,,",",,,,,30,,,,30,,,,,,,23,,23,,,23,,,38,,,38,23,,,38,,,23,23,,38,38,,,","38,38,,,,,,,,23,,,,,,,,,30,,,,,,,,,39,,39,,30,39,,,,,,,39,,,,,,39,39","30,30,,,109,,30,,,,,,109,,,39,,,,,,109,109,,103,103,,,,,,,,,,,,,,,,","23,,,,23,30,,,30,23,30,30,,,,,,,,,,,,30,,,,38,,,,,,,,,,,38,23,,,,,,",",,,,,,30,39,23,23,,39,,,,39,39,,,38,,104,,,38,,,,,104,,,,,39,38,,,104","104,,,,,,,39,,,,,,,38,71,,,,,71,,39,39,,,,,,,,38,,,,,,,,71,,,,,,,,,",",,71,71,71,,,109,,109,,,109,109,,,,,,109,,,,,,109,109,,,,71,,,109,109",",,,,,71,71,71,,,,,,,,,,,,,,,,,,102,102,,38,,,103,,,,,,109,,103,,,,,",",38,,103,103,,,38,71,,,,,,,,,71,,71,,,,38,,101,101,38,,,,,104,23,104",",,104,104,,,,,,104,,,,,,104,104,,,,,,,104,104,,,,,,,,,,,,23,,,23,,,","38,,,,,,,,39,,,,,38,,,39,23,,104,,,,,71,39,,,,38,38,,,,,38,71,100,100",",,109,71,,23,,39,23,,39,109,23,,,109,,,23,23,71,,,23,23,,,,,,,39,,,",",,38,39,,38,,,,,,,,103,,103,,,103,103,,,,39,109,103,39,,,,39,103,103",",,,39,39,,103,103,39,39,,,,102,,,38,,,,,102,,109,,,,,,,102,102,71,,",",71,,,104,71,71,,,,103,,,104,,,,104,,,,,,101,71,,,,,,,101,,,,,71,,,","101,101,,,,,,,,,,71,71,,,,,,,,,104,,,,,,,,,,,,,23,,,,,23,,,,,,,,,,39","23,,,104,,,,,,,39,,,,,,,,23,,,,,100,,,,,,,,100,,,,23,,39,,,100,100,39",",,,,103,,,,,,39,,,103,,,,103,,,,,,,102,,102,,39,102,102,,,,,,102,,,",",,102,102,,39,,,,,102,102,,,,,,,,,,103,,99,99,,,,,101,,101,,23,101,101",",,,,,101,,,,,,101,101,102,,23,,103,,101,101,23,,,,,,,,,,,,,,71,,23,",",,23,,71,,,,,,,39,,71,,,,,,101,,,,,,,,,,39,,,,,71,39,,71,,,,,,,100,","100,,,100,100,39,,23,,39,100,,71,,,,100,100,62,,,,,62,100,100,,,,,,",",,,,23,23,,71,62,,23,,,,71,,,,62,62,62,,62,102,,,,,39,,,100,102,,,,102",",,,,39,,,,,,,,,62,,,,23,62,62,39,39,62,,,,39,,,,,101,,,,,,,,,101,,,102","101,,,,,,,99,,,,,,,,99,,23,,,,,,39,99,99,39,62,,,,102,62,62,62,62,62",",62,,,,,,101,,,,,,,,,,,,,,,,71,,,,,,,,,,39,71,,,,,101,100,,,,,,,,,100",",,,100,,,,,,,,71,,,,,71,,,,,,,,,,,71,,,,,,,62,62,62,62,62,62,62,,,,",",62,100,,,,,62,62,62,62,,,,,,,71,,,,,,,62,,,,,,,,,,100,,,,,,,,,,,,,",",,,,,,99,,99,,,99,99,,,,,,99,,,,62,,99,99,,,,62,62,,99,99,,,,,62,,,",",,,,,,,,71,,,,,,62,,,,62,,,,,62,,,71,,,99,,,71,,,,,,,,,,,,,,,,71,,,","71,62,,,,,,,,,,,,,,62,62,62,,,,,,,,,,,,,,,,,,,62,,,,,,,,,,,,,,,71,,",",,,,,,,,,,71,,,,,,,,,,,,,,,,71,71,,,,,71,,,,,,,,,,,37,,,62,,,,99,,,37","37,37,,,,99,,,,99,,37,37,,37,37,,37,,71,,,71,,,,,,,,,62,37,37,,,,,,",",62,,,,,,,,,,,,99,,,,,,,,,,,,,71,,,,,,,,,,,,,,,,,,,99,,,,,,,,,,,,,,",",62,,,,,,,,,,62,,,,,,,,,,,,,,,,,,,,,,,,,,,,62,,,62,,,,,,,62,,,,,,,,",",62,,,,62,,,,,,,,,,,,,,,,,,,,,37,37,,,37,37,62,,,62,62,,,62,,,,,37,62","62,,,,62,62,,,,,,37,,,,,,,37,37,37,37,37,37,37,37,37,37,37,37,37,37","37,37,37,37,37,37,37,37,,,,,37,,,,,,,,,,,,,,,,,,,,,,,37,37,,,,,,,,37",",,,,,,37,,37,,,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,","62,,,,,,,,,,,,,,,,,,,,,,,62,,,,,62,62,,,,,,,,,,62,,,,,,,,,,,,,,,,,,62",",,,,37,,,,,,,,,,,,62,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,",",,,37,,,,,,,,,,,,,37,,62,,,,,,,,37,,37,37,37,,,,,62,,,,,,,,,,,,62,,",",,,62,,,,,,62,,,,,,,37,,,,,,,,,62,37,,37,,37,,,,,,,,,,,,,,,,37,,,,,",",,,,37,,,37,,37,,,,,,37,,,37,,,,,,,,,,62,,,37,37,,,,,,,,,,37,,,,,,,",",,,,,,,62,62,,,,,62,,,,,,,,,,,,37,37,37,,,,37,,,37,37,37,37,,,,37,37",",,,,,37,,,,,,,,,62,,62,62,,37,,,,,,,,,,62,,,,,,,,,,,,,,37,37,,,,,,,",",,,,,,62,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,37,,,37",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37",",,,,,,,37,,,,,,,,,,,,,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,37,37,37,37","37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,",",,,,37,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37"],racc_goto_check=arr=$$$("Array").$new(4752,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),racc_goto_pointer=[nil,343,142,162,nil,134,154,106,86,56,-209,9,-441,-639,-723,nil,-407,59,167,-52,-129,111,35,2068,-107,-30,45,59,-108,164,1262,-210,-357,26,23,121,-26,3589,1625,2121,484,-424,-59,-57,-7,-419,-14,nil,-9,nil,180,66,-345,nil,nil,-193,53,-186,-458,1017,-350,nil,3145,282,104,130,-51,nil,-28,62,-303,2499,-2,-363,116,-4,nil,42,-220,291,20,nil,-5,166,-153,1195,153,63,235,-252,114,-28,-258,-332,-277,-480,nil,849,616,2504,2203,2113,2068,1856,1723,200,161,-51,nil,1618,-339,-763,-364,-596,155,nil,-173,35,nil,98,172,-135,173,-366,-397,-603,-161,-762,-466,-373,-760,-664,-141,-639,nil,-437,-722,nil,nil,-436,-27,269,-822,-716,413,-815,-438,-638,nil,-737,-842,-965,-973,-135,-575,194,-361,-88,-25,-714,-711,-394,-9,nil,-18,-18,nil,nil,-488,-796,-691,-919,-530,-844,34,-562,-553,-422,-760,nil,-620,nil,-620,-431,-425,nil,nil,-648,-424,-423,nil,-352,-816,-781,nil,-615,-612,nil,-89,nil,-390,nil,-558,nil,nil,-437,-353,-735,nil,nil,257,254,255,264,-250,-200,265,266,271,-274,-271,nil,nil,-259,-168,-98,nil,nil,-432,-311,-218,-569,230,-298,-730,-616,-983,nil,nil,-491],racc_goto_default=[nil,nil,nil,nil,5,nil,6,391,334,nil,nil,472,nil,984,nil,331,332,nil,nil,nil,13,14,22,247,nil,nil,16,nil,441,248,363,nil,nil,637,251,nil,27,25,252,246,517,nil,nil,nil,nil,nil,nil,386,143,26,nil,nil,nil,28,29,812,nil,nil,nil,351,nil,30,348,455,37,nil,nil,39,42,41,nil,243,244,403,nil,463,142,87,nil,446,103,51,54,283,nil,323,nil,891,456,nil,457,468,480,686,569,321,307,55,56,57,58,59,60,61,62,63,nil,308,69,70,nil,nil,nil,nil,nil,77,nil,619,78,230,nil,nil,nil,nil,nil,nil,nil,711,492,nil,712,713,478,474,475,nil,1179,707,1071,nil,479,nil,nil,nil,481,nil,483,nil,971,nil,nil,nil,490,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,467,nil,nil,791,783,nil,nil,nil,nil,nil,nil,1051,nil,736,937,738,739,743,740,741,nil,nil,742,744,nil,nil,nil,936,938,nil,748,750,751,752,753,nil,757,501,758,759,760,761,nil,nil,nil,86,88,89,nil,nil,nil,nil,647,nil,nil,nil,nil,nil,99,100,nil,231,901,234,477,nil,482,909,495,497,498,1082,502,1083,505,508,326],racc_reduce_table=[0,0,"racc_error",0,150,"_reduce_1",2,148,"_reduce_2",2,149,"_reduce_3",0,151,"_reduce_4",1,151,"_reduce_5",3,151,"_reduce_6",2,151,"_reduce_7",1,153,"_reduce_none",2,153,"_reduce_9",3,156,"_reduce_10",4,157,"_reduce_11",2,158,"_reduce_12",0,162,"_reduce_13",1,162,"_reduce_14",3,162,"_reduce_15",2,162,"_reduce_16",1,163,"_reduce_none",2,163,"_reduce_18",0,174,"_reduce_19",4,155,"_reduce_20",3,155,"_reduce_21",3,155,"_reduce_22",3,155,"_reduce_23",2,155,"_reduce_24",3,155,"_reduce_25",3,155,"_reduce_26",3,155,"_reduce_27",3,155,"_reduce_28",3,155,"_reduce_29",4,155,"_reduce_30",1,155,"_reduce_none",3,155,"_reduce_32",3,155,"_reduce_33",5,155,"_reduce_34",3,155,"_reduce_35",1,155,"_reduce_none",3,167,"_reduce_37",3,167,"_reduce_38",6,167,"_reduce_39",5,167,"_reduce_40",5,167,"_reduce_41",5,167,"_reduce_42",5,167,"_reduce_43",4,167,"_reduce_44",6,167,"_reduce_45",4,167,"_reduce_46",6,167,"_reduce_47",3,167,"_reduce_48",1,175,"_reduce_none",3,175,"_reduce_50",1,175,"_reduce_none",1,173,"_reduce_none",3,173,"_reduce_53",3,173,"_reduce_54",3,173,"_reduce_55",2,173,"_reduce_56",0,189,"_reduce_57",4,173,"_reduce_58",0,190,"_reduce_59",4,173,"_reduce_60",1,173,"_reduce_none",1,166,"_reduce_none",0,194,"_reduce_63",3,191,"_reduce_64",1,193,"_reduce_65",2,181,"_reduce_66",0,199,"_reduce_67",5,185,"_reduce_68",1,169,"_reduce_none",1,169,"_reduce_none",1,200,"_reduce_none",4,200,"_reduce_72",0,207,"_reduce_73",4,204,"_reduce_74",1,206,"_reduce_none",2,183,"_reduce_76",3,183,"_reduce_77",4,183,"_reduce_78",5,183,"_reduce_79",4,183,"_reduce_80",5,183,"_reduce_81",2,183,"_reduce_82",2,183,"_reduce_83",2,183,"_reduce_84",2,183,"_reduce_85",2,183,"_reduce_86",1,168,"_reduce_87",3,168,"_reduce_88",1,212,"_reduce_89",3,212,"_reduce_90",1,211,"_reduce_none",2,211,"_reduce_92",3,211,"_reduce_93",5,211,"_reduce_94",2,211,"_reduce_95",4,211,"_reduce_96",2,211,"_reduce_97",4,211,"_reduce_98",1,211,"_reduce_99",3,211,"_reduce_100",1,215,"_reduce_none",3,215,"_reduce_102",2,214,"_reduce_103",3,214,"_reduce_104",1,217,"_reduce_105",3,217,"_reduce_106",1,216,"_reduce_107",1,216,"_reduce_108",4,216,"_reduce_109",3,216,"_reduce_110",3,216,"_reduce_111",3,216,"_reduce_112",3,216,"_reduce_113",2,216,"_reduce_114",1,216,"_reduce_115",1,170,"_reduce_116",1,170,"_reduce_117",4,170,"_reduce_118",3,170,"_reduce_119",3,170,"_reduce_120",3,170,"_reduce_121",3,170,"_reduce_122",2,170,"_reduce_123",1,170,"_reduce_124",1,220,"_reduce_125",1,220,"_reduce_none",2,221,"_reduce_127",1,221,"_reduce_128",3,221,"_reduce_129",1,195,"_reduce_none",1,195,"_reduce_none",1,195,"_reduce_none",1,195,"_reduce_none",1,195,"_reduce_none",1,164,"_reduce_135",1,164,"_reduce_none",1,165,"_reduce_137",0,225,"_reduce_138",4,165,"_reduce_139",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",3,184,"_reduce_211",3,184,"_reduce_212",6,184,"_reduce_213",5,184,"_reduce_214",5,184,"_reduce_215",5,184,"_reduce_216",5,184,"_reduce_217",4,184,"_reduce_218",3,184,"_reduce_219",3,184,"_reduce_220",3,184,"_reduce_221",2,184,"_reduce_222",2,184,"_reduce_223",2,184,"_reduce_224",2,184,"_reduce_225",3,184,"_reduce_226",3,184,"_reduce_227",3,184,"_reduce_228",3,184,"_reduce_229",3,184,"_reduce_230",3,184,"_reduce_231",4,184,"_reduce_232",2,184,"_reduce_233",2,184,"_reduce_234",3,184,"_reduce_235",3,184,"_reduce_236",3,184,"_reduce_237",3,184,"_reduce_238",1,184,"_reduce_none",3,184,"_reduce_240",3,184,"_reduce_241",3,184,"_reduce_242",3,184,"_reduce_243",3,184,"_reduce_244",2,184,"_reduce_245",2,184,"_reduce_246",3,184,"_reduce_247",3,184,"_reduce_248",3,184,"_reduce_249",3,184,"_reduce_250",0,231,"_reduce_251",4,184,"_reduce_252",6,184,"_reduce_253",4,184,"_reduce_254",6,184,"_reduce_255",4,184,"_reduce_256",6,184,"_reduce_257",1,184,"_reduce_none",1,230,"_reduce_none",1,230,"_reduce_none",1,230,"_reduce_none",1,230,"_reduce_none",3,228,"_reduce_263",3,228,"_reduce_264",1,232,"_reduce_none",1,233,"_reduce_none",2,233,"_reduce_none",4,233,"_reduce_268",2,233,"_reduce_269",1,226,"_reduce_none",3,226,"_reduce_271",3,238,"_reduce_272",5,238,"_reduce_273",3,238,"_reduce_274",0,240,"_reduce_275",1,240,"_reduce_none",0,178,"_reduce_277",1,178,"_reduce_none",2,178,"_reduce_none",4,178,"_reduce_280",2,178,"_reduce_281",1,210,"_reduce_282",2,210,"_reduce_283",2,210,"_reduce_284",4,210,"_reduce_285",1,210,"_reduce_286",0,243,"_reduce_287",2,203,"_reduce_288",2,242,"_reduce_289",1,242,"_reduce_290",2,241,"_reduce_291",0,241,"_reduce_292",1,235,"_reduce_293",2,235,"_reduce_294",3,235,"_reduce_295",4,235,"_reduce_296",1,172,"_reduce_297",1,172,"_reduce_none",3,171,"_reduce_299",4,171,"_reduce_300",2,171,"_reduce_301",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_312",0,267,"_reduce_313",4,229,"_reduce_314",0,268,"_reduce_315",4,229,"_reduce_316",0,269,"_reduce_317",4,229,"_reduce_318",3,229,"_reduce_319",3,229,"_reduce_320",2,229,"_reduce_321",3,229,"_reduce_322",3,229,"_reduce_323",1,229,"_reduce_324",4,229,"_reduce_325",3,229,"_reduce_326",1,229,"_reduce_327",0,270,"_reduce_328",6,229,"_reduce_329",4,229,"_reduce_330",3,229,"_reduce_331",2,229,"_reduce_332",1,229,"_reduce_none",2,229,"_reduce_334",1,229,"_reduce_none",6,229,"_reduce_336",6,229,"_reduce_337",4,229,"_reduce_338",4,229,"_reduce_339",5,229,"_reduce_340",4,229,"_reduce_341",5,229,"_reduce_342",6,229,"_reduce_343",0,271,"_reduce_344",6,229,"_reduce_345",0,272,"_reduce_346",7,229,"_reduce_347",0,273,"_reduce_348",5,229,"_reduce_349",4,229,"_reduce_350",4,229,"_reduce_351",1,229,"_reduce_352",1,229,"_reduce_353",1,229,"_reduce_354",1,229,"_reduce_355",1,177,"_reduce_none",1,262,"_reduce_357",1,265,"_reduce_358",1,196,"_reduce_359",1,209,"_reduce_360",1,257,"_reduce_none",1,257,"_reduce_none",2,257,"_reduce_363",1,192,"_reduce_none",1,192,"_reduce_none",1,258,"_reduce_none",5,258,"_reduce_367",1,160,"_reduce_none",2,160,"_reduce_369",1,261,"_reduce_none",1,261,"_reduce_none",1,274,"_reduce_372",3,274,"_reduce_373",1,277,"_reduce_374",3,277,"_reduce_375",1,276,"_reduce_none",3,276,"_reduce_377",5,276,"_reduce_378",1,276,"_reduce_379",3,276,"_reduce_380",2,278,"_reduce_381",1,278,"_reduce_382",1,279,"_reduce_none",1,279,"_reduce_none",0,284,"_reduce_385",2,282,"_reduce_386",4,283,"_reduce_387",2,283,"_reduce_388",2,283,"_reduce_389",1,283,"_reduce_390",2,288,"_reduce_391",0,288,"_reduce_392",1,289,"_reduce_none",6,290,"_reduce_394",8,290,"_reduce_395",4,290,"_reduce_396",6,290,"_reduce_397",4,290,"_reduce_398",2,290,"_reduce_none",6,290,"_reduce_400",2,290,"_reduce_401",4,290,"_reduce_402",6,290,"_reduce_403",2,290,"_reduce_404",4,290,"_reduce_405",2,290,"_reduce_406",4,290,"_reduce_407",1,290,"_reduce_none",0,294,"_reduce_409",1,294,"_reduce_410",3,295,"_reduce_411",4,295,"_reduce_412",1,296,"_reduce_413",4,296,"_reduce_414",1,297,"_reduce_415",3,297,"_reduce_416",1,298,"_reduce_417",1,298,"_reduce_none",0,302,"_reduce_419",0,303,"_reduce_420",5,256,"_reduce_421",4,300,"_reduce_422",1,300,"_reduce_423",0,306,"_reduce_424",4,301,"_reduce_425",0,307,"_reduce_426",4,301,"_reduce_427",0,309,"_reduce_428",4,305,"_reduce_429",2,201,"_reduce_430",4,201,"_reduce_431",5,201,"_reduce_432",5,201,"_reduce_433",2,255,"_reduce_434",4,255,"_reduce_435",4,255,"_reduce_436",3,255,"_reduce_437",3,255,"_reduce_438",3,255,"_reduce_439",2,255,"_reduce_440",1,255,"_reduce_441",4,255,"_reduce_442",0,311,"_reduce_443",4,254,"_reduce_444",0,312,"_reduce_445",4,254,"_reduce_446",0,313,"_reduce_447",3,205,"_reduce_448",0,314,"_reduce_449",0,315,"_reduce_450",4,308,"_reduce_451",5,259,"_reduce_452",1,316,"_reduce_453",1,316,"_reduce_none",0,319,"_reduce_455",0,320,"_reduce_456",7,260,"_reduce_457",1,318,"_reduce_458",1,318,"_reduce_none",1,317,"_reduce_460",3,317,"_reduce_461",3,317,"_reduce_462",1,188,"_reduce_none",2,188,"_reduce_464",3,188,"_reduce_465",1,188,"_reduce_466",1,188,"_reduce_467",1,188,"_reduce_468",1,321,"_reduce_none",3,326,"_reduce_470",1,326,"_reduce_none",3,328,"_reduce_472",1,328,"_reduce_none",1,330,"_reduce_474",1,331,"_reduce_475",1,329,"_reduce_none",1,329,"_reduce_none",4,329,"_reduce_478",4,329,"_reduce_479",4,329,"_reduce_480",3,329,"_reduce_481",4,329,"_reduce_482",4,329,"_reduce_483",4,329,"_reduce_484",3,329,"_reduce_485",3,329,"_reduce_486",3,329,"_reduce_487",2,329,"_reduce_488",0,335,"_reduce_489",4,329,"_reduce_490",2,329,"_reduce_491",0,336,"_reduce_492",4,329,"_reduce_493",1,322,"_reduce_494",1,322,"_reduce_495",2,322,"_reduce_496",3,322,"_reduce_497",5,322,"_reduce_498",2,322,"_reduce_499",4,322,"_reduce_500",1,322,"_reduce_none",2,337,"_reduce_502",3,337,"_reduce_503",1,324,"_reduce_504",3,324,"_reduce_505",5,323,"_reduce_506",2,340,"_reduce_507",1,340,"_reduce_508",1,339,"_reduce_509",3,339,"_reduce_510",1,338,"_reduce_none",3,325,"_reduce_512",1,325,"_reduce_513",2,325,"_reduce_514",1,325,"_reduce_515",1,341,"_reduce_516",3,341,"_reduce_517",2,343,"_reduce_518",1,343,"_reduce_519",1,344,"_reduce_520",3,344,"_reduce_521",2,346,"_reduce_522",1,346,"_reduce_523",2,348,"_reduce_524",1,342,"_reduce_none",1,342,"_reduce_none",1,332,"_reduce_none",3,332,"_reduce_528",3,332,"_reduce_529",2,332,"_reduce_530",2,332,"_reduce_531",1,332,"_reduce_none",1,332,"_reduce_none",1,332,"_reduce_none",2,332,"_reduce_535",2,332,"_reduce_536",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_545",1,349,"_reduce_none",1,327,"_reduce_547",2,350,"_reduce_548",2,350,"_reduce_549",4,351,"_reduce_550",2,333,"_reduce_551",3,333,"_reduce_552",1,333,"_reduce_553",6,159,"_reduce_554",0,159,"_reduce_555",1,353,"_reduce_556",1,353,"_reduce_none",1,353,"_reduce_none",2,354,"_reduce_559",1,354,"_reduce_none",2,161,"_reduce_561",1,161,"_reduce_none",1,244,"_reduce_none",1,244,"_reduce_none",1,245,"_reduce_565",1,356,"_reduce_566",2,356,"_reduce_567",3,357,"_reduce_568",1,357,"_reduce_569",1,357,"_reduce_570",3,246,"_reduce_571",4,247,"_reduce_572",3,248,"_reduce_573",0,360,"_reduce_574",3,360,"_reduce_575",1,361,"_reduce_576",2,361,"_reduce_577",3,250,"_reduce_578",0,363,"_reduce_579",3,363,"_reduce_580",3,249,"_reduce_581",3,251,"_reduce_582",0,364,"_reduce_583",3,364,"_reduce_584",0,365,"_reduce_585",3,365,"_reduce_586",0,345,"_reduce_587",2,345,"_reduce_588",0,358,"_reduce_589",2,358,"_reduce_590",0,359,"_reduce_591",2,359,"_reduce_592",1,362,"_reduce_593",2,362,"_reduce_594",0,367,"_reduce_595",4,362,"_reduce_596",1,366,"_reduce_597",1,366,"_reduce_598",1,366,"_reduce_599",1,366,"_reduce_none",1,224,"_reduce_none",1,224,"_reduce_none",1,368,"_reduce_603",3,369,"_reduce_604",1,355,"_reduce_605",2,355,"_reduce_606",1,227,"_reduce_607",1,227,"_reduce_608",1,227,"_reduce_609",1,227,"_reduce_610",1,352,"_reduce_611",1,352,"_reduce_612",1,352,"_reduce_613",1,218,"_reduce_614",1,218,"_reduce_615",1,218,"_reduce_616",1,218,"_reduce_617",1,218,"_reduce_618",1,219,"_reduce_619",1,219,"_reduce_620",1,219,"_reduce_621",1,219,"_reduce_622",1,219,"_reduce_623",1,219,"_reduce_624",1,219,"_reduce_625",1,252,"_reduce_626",1,252,"_reduce_627",1,176,"_reduce_628",1,176,"_reduce_629",1,186,"_reduce_630",1,186,"_reduce_631",0,370,"_reduce_632",4,263,"_reduce_633",0,263,"_reduce_634",1,182,"_reduce_none",1,182,"_reduce_636",3,371,"_reduce_637",1,266,"_reduce_none",0,373,"_reduce_639",3,266,"_reduce_640",4,372,"_reduce_641",2,372,"_reduce_642",2,372,"_reduce_643",1,372,"_reduce_644",1,372,"_reduce_645",2,375,"_reduce_646",0,375,"_reduce_647",6,304,"_reduce_648",8,304,"_reduce_649",4,304,"_reduce_650",6,304,"_reduce_651",4,304,"_reduce_652",6,304,"_reduce_653",2,304,"_reduce_654",4,304,"_reduce_655",6,304,"_reduce_656",2,304,"_reduce_657",4,304,"_reduce_658",2,304,"_reduce_659",4,304,"_reduce_660",1,304,"_reduce_661",0,304,"_reduce_662",1,239,"_reduce_663",1,299,"_reduce_664",1,299,"_reduce_665",1,299,"_reduce_666",1,299,"_reduce_667",1,275,"_reduce_none",1,275,"_reduce_669",1,377,"_reduce_670",1,378,"_reduce_671",3,378,"_reduce_672",1,291,"_reduce_673",3,291,"_reduce_674",1,379,"_reduce_675",2,380,"_reduce_676",1,380,"_reduce_677",2,381,"_reduce_678",1,381,"_reduce_679",1,285,"_reduce_680",3,285,"_reduce_681",1,374,"_reduce_682",3,374,"_reduce_683",1,347,"_reduce_none",1,347,"_reduce_none",2,281,"_reduce_686",2,280,"_reduce_687",1,280,"_reduce_688",3,382,"_reduce_689",3,383,"_reduce_690",1,292,"_reduce_691",3,292,"_reduce_692",1,376,"_reduce_693",3,376,"_reduce_694",1,384,"_reduce_none",1,384,"_reduce_none",2,293,"_reduce_697",1,293,"_reduce_698",1,385,"_reduce_none",1,385,"_reduce_none",2,287,"_reduce_701",1,287,"_reduce_702",2,286,"_reduce_703",0,286,"_reduce_704",1,197,"_reduce_none",3,197,"_reduce_706",0,253,"_reduce_707",2,253,"_reduce_none",1,237,"_reduce_709",3,237,"_reduce_710",3,386,"_reduce_711",2,386,"_reduce_712",1,386,"_reduce_713",4,386,"_reduce_714",2,386,"_reduce_715",1,208,"_reduce_none",1,208,"_reduce_none",1,208,"_reduce_none",1,202,"_reduce_none",1,202,"_reduce_none",1,202,"_reduce_none",1,202,"_reduce_none",1,310,"_reduce_none",1,310,"_reduce_none",1,310,"_reduce_none",1,198,"_reduce_none",1,198,"_reduce_none",1,180,"_reduce_728",1,180,"_reduce_729",0,152,"_reduce_none",1,152,"_reduce_none",0,187,"_reduce_none",1,187,"_reduce_none",2,213,"_reduce_734",2,179,"_reduce_735",2,334,"_reduce_736",0,236,"_reduce_none",1,236,"_reduce_none",1,236,"_reduce_none",1,264,"_reduce_740",1,264,"_reduce_none",1,154,"_reduce_none",2,154,"_reduce_none",0,234,"_reduce_744"],745,1238,racc_token_table=$hash(!1,0,"error",1,"kCLASS",2,"kMODULE",3,"kDEF",4,"kUNDEF",5,"kBEGIN",6,"kRESCUE",7,"kENSURE",8,"kEND",9,"kIF",10,"kUNLESS",11,"kTHEN",12,"kELSIF",13,"kELSE",14,"kCASE",15,"kWHEN",16,"kWHILE",17,"kUNTIL",18,"kFOR",19,"kBREAK",20,"kNEXT",21,"kREDO",22,"kRETRY",23,"kIN",24,"kDO",25,"kDO_COND",26,"kDO_BLOCK",27,"kDO_LAMBDA",28,"kRETURN",29,"kYIELD",30,"kSUPER",31,"kSELF",32,"kNIL",33,"kTRUE",34,"kFALSE",35,"kAND",36,"kOR",37,"kNOT",38,"kIF_MOD",39,"kUNLESS_MOD",40,"kWHILE_MOD",41,"kUNTIL_MOD",42,"kRESCUE_MOD",43,"kALIAS",44,"kDEFINED",45,"klBEGIN",46,"klEND",47,"k__LINE__",48,"k__FILE__",49,"k__ENCODING__",50,"tIDENTIFIER",51,"tFID",52,"tGVAR",53,"tIVAR",54,"tCONSTANT",55,"tLABEL",56,"tCVAR",57,"tNTH_REF",58,"tBACK_REF",59,"tSTRING_CONTENT",60,"tINTEGER",61,"tFLOAT",62,"tUPLUS",63,"tUMINUS",64,"tUNARY_NUM",65,"tPOW",66,"tCMP",67,"tEQ",68,"tEQQ",69,"tNEQ",70,"tGEQ",71,"tLEQ",72,"tANDOP",73,"tOROP",74,"tMATCH",75,"tNMATCH",76,"tDOT",77,"tDOT2",78,"tDOT3",79,"tAREF",80,"tASET",81,"tLSHFT",82,"tRSHFT",83,"tCOLON2",84,"tCOLON3",85,"tOP_ASGN",86,"tASSOC",87,"tLPAREN",88,"tLPAREN2",89,"tRPAREN",90,"tLPAREN_ARG",91,"tLBRACK",92,"tLBRACK2",93,"tRBRACK",94,"tLBRACE",95,"tLBRACE_ARG",96,"tSTAR",97,"tSTAR2",98,"tAMPER",99,"tAMPER2",100,"tTILDE",101,"tPERCENT",102,"tDIVIDE",103,"tDSTAR",104,"tPLUS",105,"tMINUS",106,"tLT",107,"tGT",108,"tPIPE",109,"tBANG",110,"tCARET",111,"tLCURLY",112,"tRCURLY",113,"tBACK_REF2",114,"tSYMBEG",115,"tSTRING_BEG",116,"tXSTRING_BEG",117,"tREGEXP_BEG",118,"tREGEXP_OPT",119,"tWORDS_BEG",120,"tQWORDS_BEG",121,"tSYMBOLS_BEG",122,"tQSYMBOLS_BEG",123,"tSTRING_DBEG",124,"tSTRING_DVAR",125,"tSTRING_END",126,"tSTRING_DEND",127,"tSTRING",128,"tSYMBOL",129,"tNL",130,"tEH",131,"tCOLON",132,"tCOMMA",133,"tSPACE",134,"tSEMI",135,"tLAMBDA",136,"tLAMBEG",137,"tCHARACTER",138,"tRATIONAL",139,"tIMAGINARY",140,"tLABEL_END",141,"tANDDOT",142,"tBDOT2",143,"tBDOT3",144,"tEQL",145,"tLOWEST",146),147,!0,$const_set($nesting[0],"Racc_arg",[racc_action_table,racc_action_check,racc_action_default,racc_action_pointer,racc_goto_table,racc_goto_check,racc_goto_default,racc_goto_pointer,147,racc_reduce_table,racc_token_table,1238,745,true]),$const_set($nesting[0],"Racc_token_to_s_table",["$end","error","kCLASS","kMODULE","kDEF","kUNDEF","kBEGIN","kRESCUE","kENSURE","kEND","kIF","kUNLESS","kTHEN","kELSIF","kELSE","kCASE","kWHEN","kWHILE","kUNTIL","kFOR","kBREAK","kNEXT","kREDO","kRETRY","kIN","kDO","kDO_COND","kDO_BLOCK","kDO_LAMBDA","kRETURN","kYIELD","kSUPER","kSELF","kNIL","kTRUE","kFALSE","kAND","kOR","kNOT","kIF_MOD","kUNLESS_MOD","kWHILE_MOD","kUNTIL_MOD","kRESCUE_MOD","kALIAS","kDEFINED","klBEGIN","klEND","k__LINE__","k__FILE__","k__ENCODING__","tIDENTIFIER","tFID","tGVAR","tIVAR","tCONSTANT","tLABEL","tCVAR","tNTH_REF","tBACK_REF","tSTRING_CONTENT","tINTEGER","tFLOAT","tUPLUS","tUMINUS","tUNARY_NUM","tPOW","tCMP","tEQ","tEQQ","tNEQ","tGEQ","tLEQ","tANDOP","tOROP","tMATCH","tNMATCH","tDOT","tDOT2","tDOT3","tAREF","tASET","tLSHFT","tRSHFT","tCOLON2","tCOLON3","tOP_ASGN","tASSOC","tLPAREN","tLPAREN2","tRPAREN","tLPAREN_ARG","tLBRACK","tLBRACK2","tRBRACK","tLBRACE","tLBRACE_ARG","tSTAR","tSTAR2","tAMPER","tAMPER2","tTILDE","tPERCENT","tDIVIDE","tDSTAR","tPLUS","tMINUS","tLT","tGT","tPIPE","tBANG","tCARET","tLCURLY","tRCURLY","tBACK_REF2","tSYMBEG","tSTRING_BEG","tXSTRING_BEG","tREGEXP_BEG","tREGEXP_OPT","tWORDS_BEG","tQWORDS_BEG","tSYMBOLS_BEG","tQSYMBOLS_BEG","tSTRING_DBEG","tSTRING_DVAR","tSTRING_END","tSTRING_DEND","tSTRING","tSYMBOL","tNL","tEH","tCOLON","tCOMMA","tSPACE","tSEMI","tLAMBDA","tLAMBEG","tCHARACTER","tRATIONAL","tIMAGINARY","tLABEL_END","tANDDOT","tBDOT2","tBDOT3","tEQL","tLOWEST","$start","program","top_compstmt","@1","top_stmts","opt_terms","top_stmt","terms","stmt","begin_block","bodystmt","compstmt","opt_rescue","opt_else","opt_ensure","stmts","stmt_or_begin","fitem","undef_list","expr_value","command_asgn","mlhs","command_call","lhs","mrhs","mrhs_arg","expr","@2","command_rhs","var_lhs","primary_value","opt_call_args","rbracket","call_op","defn_head","f_opt_paren_args","command","arg","defs_head","backref","opt_nl","p_top_expr_body","@3","@4","expr_value_do","do","def_name","@5","fname","k_def","singleton","dot_or_colon","@6","block_command","block_call","operation2","command_args","cmd_brace_block","brace_body","fcall","@7","operation","k_return","call_args","mlhs_basic","mlhs_inner","rparen","mlhs_head","mlhs_item","mlhs_node","mlhs_post","user_variable","keyword_variable","cname","cpath","op","reswords","symbol","@8","arg_rhs","simple_numeric","rel_expr","primary","relop","@9","arg_value","aref_args","none","args","trailer","assocs","paren_args","args_forward","opt_paren_args","opt_block_arg","block_arg","@10","literal","strings","xstring","regexp","words","qwords","symbols","qsymbols","var_ref","assoc_list","brace_block","method_call","lambda","then","if_tail","case_body","p_case_body","for_var","k_class","superclass","term","k_module","f_arglist","@11","@12","@13","@14","@15","@16","@17","f_marg","f_norm_arg","f_margs","f_marg_list","f_rest_marg","f_any_kwrest","f_kwrest","f_no_kwarg","f_eq","block_args_tail","@18","f_block_kwarg","opt_f_block_arg","f_block_arg","opt_block_args_tail","excessed_comma","block_param","f_arg","f_block_optarg","f_rest_arg","opt_block_param","block_param_def","opt_bv_decl","bv_decls","bvar","f_bad_arg","f_larglist","lambda_body","@19","@20","f_args","do_block","@21","@22","do_body","@23","operation3","@24","@25","@26","@27","@28","cases","p_top_expr","p_cases","@29","@30","p_expr","p_args","p_find","p_args_tail","p_kwargs","p_as","p_variable","p_alt","p_expr_basic","p_lparen","p_lbracket","p_value","p_const","rbrace","@31","@32","p_args_head","p_arg","p_args_post","p_rest","p_kwarg","p_any_kwrest","p_kw","p_kw_label","string_contents","p_kwrest","kwrest_mark","p_kwnorest","p_primitive","p_var_ref","p_expr_ref","nonlocal_var","exc_list","exc_var","numeric","string","string1","xstring_contents","regexp_contents","word_list","word","string_content","symbol_list","qword_list","qsym_list","string_dvar","@33","ssym","dsym","@34","f_paren_args","args_tail","@35","f_kwarg","opt_args_tail","f_optarg","f_arg_asgn","f_arg_item","f_label","f_kw","f_block_kw","f_opt","f_block_opt","restarg_mark","blkarg_mark","assoc"]),$const_set($nesting[0],"Racc_debug_parser",!1),$def(self,"$_reduce_1",(function(val,_values,result){return this.current_arg_stack.$push(nil),this.max_numparam_stack.$push($hash2(["static"],{static:!0})),result}),3),$def(self,"$_reduce_2",(function(val,_values,result){return result=val["$[]"](1),this.current_arg_stack.$pop(),this.max_numparam_stack.$pop(),result}),3),$def(self,"$_reduce_3",(function(val,_values,result){return this.builder.$compstmt(val["$[]"](0))}),3),$def(self,"$_reduce_4",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_5",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_6",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_7",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_9",(function(val,_values,result){return $send(this.builder,"preexe",[val["$[]"](0)].concat($to_a(val["$[]"](1))))}),3),$def(self,"$_reduce_10",(function(val,_values,result){return val}),3),$def(self,"$_reduce_11",(function(val,_values,result){var $a,$b,else_,ensure_t,ensure_,rescue_bodies=nil,else_t=nil;return rescue_bodies=val["$[]"](1),$b=val["$[]"](2),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],$b=val["$[]"](3),ensure_t=null==($a=$to_ary($b))[0]?nil:$a[0],ensure_=null==$a[1]?nil:$a[1],$truthy(rescue_bodies["$empty?"]())&&$not(else_t["$nil?"]())&&this.$diagnostic("error","useless_else",nil,else_t),this.builder.$begin_body(val["$[]"](0),rescue_bodies,else_t,else_,ensure_t,ensure_)}),3),$def(self,"$_reduce_12",(function(val,_values,result){return this.builder.$compstmt(val["$[]"](0))}),3),$def(self,"$_reduce_13",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_14",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_15",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_16",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_18",(function(val,_values,result){return this.$diagnostic("error","begin_in_method",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_19",(function(val,_values,result){var $writer;return $writer=["expr_fname"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_20",(function(val,_values,result){return this.builder.$alias(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_21",(function(val,_values,result){return this.builder.$alias(val["$[]"](0),this.builder.$gvar(val["$[]"](1)),this.builder.$gvar(val["$[]"](2)))}),3),$def(self,"$_reduce_22",(function(val,_values,result){return this.builder.$alias(val["$[]"](0),this.builder.$gvar(val["$[]"](1)),this.builder.$back_ref(val["$[]"](2)))}),3),$def(self,"$_reduce_23",(function(val,_values,result){return this.$diagnostic("error","nth_ref_alias",nil,val["$[]"](2)),result}),3),$def(self,"$_reduce_24",(function(val,_values,result){return this.builder.$undef_method(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_25",(function(val,_values,result){return this.builder.$condition_mod(val["$[]"](0),nil,val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_26",(function(val,_values,result){return this.builder.$condition_mod(nil,val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_27",(function(val,_values,result){return this.builder.$loop_mod("while",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_28",(function(val,_values,result){return this.builder.$loop_mod("until",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_29",(function(val,_values,result){var rescue_body;return rescue_body=this.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2)),this.builder.$begin_body(val["$[]"](0),[rescue_body])}),3),$def(self,"$_reduce_30",(function(val,_values,result){return this.builder.$postexe(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_32",(function(val,_values,result){return this.builder.$multi_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_33",(function(val,_values,result){return this.builder.$assign(val["$[]"](0),val["$[]"](1),this.builder.$array(nil,val["$[]"](2),nil))}),3),$def(self,"$_reduce_34",(function(val,_values,result){var rescue_body,begin_body;return rescue_body=this.builder.$rescue_body(val["$[]"](3),nil,nil,nil,nil,val["$[]"](4)),begin_body=this.builder.$begin_body(val["$[]"](2),[rescue_body]),this.builder.$multi_assign(val["$[]"](0),val["$[]"](1),begin_body)}),3),$def(self,"$_reduce_35",(function(val,_values,result){return this.builder.$multi_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_37",(function(val,_values,result){return this.builder.$assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_38",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_39",(function(val,_values,result){return this.builder.$op_assign(this.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3)),val["$[]"](4),val["$[]"](5))}),3),$def(self,"$_reduce_40",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_41",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_42",(function(val,_values,result){var const$;return const$=this.builder.$const_op_assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))),this.builder.$op_assign(const$,val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_43",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_44",(function(val,_values,result){var $a,$b,$c,def_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==($c=$to_ary(null==$a[1]?nil:$a[1]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),result=this.builder.$def_endless_method(def_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_45",(function(val,_values,result){var $a,$b,$c,def_t,name_t,rescue_body,method_body,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==($c=$to_ary(null==$a[1]?nil:$a[1]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=this.builder.$def_endless_method(def_t,name_t,val["$[]"](1),val["$[]"](2),method_body),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_46",(function(val,_values,result){var $a,$b,$c,def_t,recv,dot_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],recv=null==$a[1]?nil:$a[1],dot_t=null==$a[2]?nil:$a[2],name_t=null==($c=$to_ary(null==$a[3]?nil:$a[3]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),result=this.builder.$def_endless_singleton(def_t,recv,dot_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_47",(function(val,_values,result){var $a,$b,$c,def_t,recv,dot_t,name_t,rescue_body,method_body,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],recv=null==$a[1]?nil:$a[1],dot_t=null==$a[2]?nil:$a[2],name_t=null==($c=$to_ary(null==$a[3]?nil:$a[3]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=this.builder.$def_endless_singleton(def_t,recv,dot_t,name_t,val["$[]"](1),val["$[]"](2),method_body),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_48",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2)),result}),3),$def(self,"$_reduce_50",(function(val,_values,result){var rescue_body;return rescue_body=this.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2)),this.builder.$begin_body(val["$[]"](0),[rescue_body])}),3),$def(self,"$_reduce_53",(function(val,_values,result){return this.builder.$logical_op("and",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_54",(function(val,_values,result){return this.builder.$logical_op("or",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_55",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),nil,val["$[]"](2),nil)}),3),$def(self,"$_reduce_56",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_57",(function(val,_values,result){var $writer=nil;return $writer=["expr_beg"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.lexer,"command_start=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.pattern_variables.$push(),result=this.context.$in_kwarg(),$writer=[!0],$send(this.context,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_58",(function(val,_values,result){var $writer;return this.pattern_variables.$pop(),$writer=[val["$[]"](2)],$send(this.context,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$match_pattern(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_59",(function(val,_values,result){var $writer=nil;return $writer=["expr_beg"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.lexer,"command_start=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.pattern_variables.$push(),result=this.context.$in_kwarg(),$writer=[!0],$send(this.context,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_60",(function(val,_values,result){var $writer;return this.pattern_variables.$pop(),$writer=[val["$[]"](2)],$send(this.context,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$match_pattern_p(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_63",(function(val,_values,result){return this.lexer.$cond().$push(!0),result}),3),$def(self,"$_reduce_64",(function(val,_values,result){return this.lexer.$cond().$pop(),[val["$[]"](1),val["$[]"](2)]}),3),$def(self,"$_reduce_65",(function(val,_values,result){var $writer;return this.$local_push(),this.current_arg_stack.$push(nil),result=[val["$[]"](0),this.context.$dup()],$writer=[!0],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_66",(function(val,_values,result){return[val["$[]"](0),val["$[]"](1)]}),3),$def(self,"$_reduce_67",(function(val,_values,result){var $writer=nil;return $writer=["expr_fname"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_68",(function(val,_values,result){return[val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](4)]}),3),$def(self,"$_reduce_72",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil)}),3),$def(self,"$_reduce_73",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_74",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_block()],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)])}),3),$def(self,"$_reduce_76",(function(val,_values,result){return this.builder.$call_method(nil,nil,val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_77",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(nil,nil,val["$[]"](0),nil,val["$[]"](1),nil),$b=val["$[]"](2),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_78",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil)}),3),$def(self,"$_reduce_79",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_80",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil)}),3),$def(self,"$_reduce_81",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_82",(function(val,_values,result){return this.builder.$keyword_cmd("super",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_83",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_84",(function(val,_values,result){return this.builder.$keyword_cmd("return",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_85",(function(val,_values,result){return this.builder.$keyword_cmd("break",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_86",(function(val,_values,result){return this.builder.$keyword_cmd("next",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_87",(function(val,_values,result){return this.builder.$multi_lhs(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_88",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_89",(function(val,_values,result){return this.builder.$multi_lhs(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_90",(function(val,_values,result){return this.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_92",(function(val,_values,result){return val["$[]"](0).$push(val["$[]"](1))}),3),$def(self,"$_reduce_93",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1),val["$[]"](2)))}),3),$def(self,"$_reduce_94",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1),val["$[]"](2))).$concat(val["$[]"](4))}),3),$def(self,"$_reduce_95",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1)))}),3),$def(self,"$_reduce_96",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1))).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_97",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_98",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))].concat($to_a(val["$[]"](3)))}),3),$def(self,"$_reduce_99",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0))]}),3),$def(self,"$_reduce_100",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0))].concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_102",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_103",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_104",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_105",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_106",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_107",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_108",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_109",(function(val,_values,result){return this.builder.$index_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_110",(function(val,_values,result){return $eqeq(val["$[]"](1)["$[]"](0),"anddot")&&this.$diagnostic("error","csend_in_lhs_of_masgn",nil,val["$[]"](1)),this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_111",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_112",(function(val,_values,result){return $eqeq(val["$[]"](1)["$[]"](0),"anddot")&&this.$diagnostic("error","csend_in_lhs_of_masgn",nil,val["$[]"](1)),this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_113",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2)))}),3),$def(self,"$_reduce_114",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_global(val["$[]"](0),val["$[]"](1)))}),3),$def(self,"$_reduce_115",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_116",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_117",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_118",(function(val,_values,result){return this.builder.$index_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_119",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_120",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_121",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_122",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2)))}),3),$def(self,"$_reduce_123",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_global(val["$[]"](0),val["$[]"](1)))}),3),$def(self,"$_reduce_124",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_125",(function(val,_values,result){return this.$diagnostic("error","module_name_const",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_127",(function(val,_values,result){return this.builder.$const_global(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_128",(function(val,_values,result){return this.builder.$const(val["$[]"](0))}),3),$def(self,"$_reduce_129",(function(val,_values,result){return this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_135",(function(val,_values,result){return this.builder.$symbol_internal(val["$[]"](0))}),3),$def(self,"$_reduce_137",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_138",(function(val,_values,result){var $writer;return $writer=["expr_fname"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_139",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](3))}),3),$def(self,"$_reduce_211",(function(val,_values,result){return this.builder.$assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_212",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_213",(function(val,_values,result){return this.builder.$op_assign(this.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3)),val["$[]"](4),val["$[]"](5))}),3),$def(self,"$_reduce_214",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_215",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_216",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_217",(function(val,_values,result){var const$;return const$=this.builder.$const_op_assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))),this.builder.$op_assign(const$,val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_218",(function(val,_values,result){var const$;return const$=this.builder.$const_op_assignable(this.builder.$const_global(val["$[]"](0),val["$[]"](1))),this.builder.$op_assign(const$,val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_219",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_220",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_221",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_222",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_223",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_224",(function(val,_values,result){return this.builder.$range_inclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_225",(function(val,_values,result){return this.builder.$range_exclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_226",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_227",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_228",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_229",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_230",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_231",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_232",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),this.builder.$binary_op(val["$[]"](1),val["$[]"](2),val["$[]"](3)))}),3),$def(self,"$_reduce_233",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_234",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_235",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_236",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_237",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_238",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_240",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_241",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_242",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_243",(function(val,_values,result){return this.builder.$match_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_244",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_245",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_246",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_247",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_248",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_249",(function(val,_values,result){return this.builder.$logical_op("and",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_250",(function(val,_values,result){return this.builder.$logical_op("or",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_251",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_defined=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_252",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_defined=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$keyword_cmd("defined?",val["$[]"](0),nil,[val["$[]"](3)],nil)}),3),$def(self,"$_reduce_253",(function(val,_values,result){return this.builder.$ternary(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](4),val["$[]"](5))}),3),$def(self,"$_reduce_254",(function(val,_values,result){var $a,$b,$c,def_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==($c=$to_ary(null==$a[1]?nil:$a[1]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),result=this.builder.$def_endless_method(def_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_255",(function(val,_values,result){var $a,$b,$c,def_t,name_t,rescue_body,method_body,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==($c=$to_ary(null==$a[1]?nil:$a[1]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=this.builder.$def_endless_method(def_t,name_t,val["$[]"](1),val["$[]"](2),method_body),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_256",(function(val,_values,result){var $a,$b,$c,def_t,recv,dot_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],recv=null==$a[1]?nil:$a[1],dot_t=null==$a[2]?nil:$a[2],name_t=null==($c=$to_ary(null==$a[3]?nil:$a[3]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),result=this.builder.$def_endless_singleton(def_t,recv,dot_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_257",(function(val,_values,result){var $a,$b,$c,def_t,recv,dot_t,name_t,rescue_body,method_body,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],recv=null==$a[1]?nil:$a[1],dot_t=null==$a[2]?nil:$a[2],name_t=null==($c=$to_ary(null==$a[3]?nil:$a[3]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=this.builder.$def_endless_singleton(def_t,recv,dot_t,name_t,val["$[]"](1),val["$[]"](2),method_body),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_263",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_264",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_268",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$associate(nil,val["$[]"](2),nil))}),3),$def(self,"$_reduce_269",(function(val,_values,result){return[this.builder.$associate(nil,val["$[]"](0),nil)]}),3),$def(self,"$_reduce_271",(function(val,_values,result){var rescue_body;return rescue_body=this.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2)),this.builder.$begin_body(val["$[]"](0),[rescue_body])}),3),$def(self,"$_reduce_272",(function(val,_values,result){return val}),3),$def(self,"$_reduce_273",(function(val,_values,result){return $truthy(this.static_env["$declared_forward_args?"]())||this.$diagnostic("error","unexpected_token",$hash2(["token"],{token:"tBDOT3"}),val["$[]"](3)),[val["$[]"](0),[].concat($to_a(val["$[]"](1))).concat([this.builder.$forwarded_args(val["$[]"](3))]),val["$[]"](4)]}),3),$def(self,"$_reduce_274",(function(val,_values,result){return $truthy(this.static_env["$declared_forward_args?"]())||this.$diagnostic("error","unexpected_token",$hash2(["token"],{token:"tBDOT3"}),val["$[]"](1)),[val["$[]"](0),[this.builder.$forwarded_args(val["$[]"](1))],val["$[]"](2)]}),3),$def(self,"$_reduce_275",(function(val,_values,result){return[nil,[],nil]}),3),$def(self,"$_reduce_277",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_280",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$associate(nil,val["$[]"](2),nil))}),3),$def(self,"$_reduce_281",(function(val,_values,result){return[this.builder.$associate(nil,val["$[]"](0),nil)]}),3),$def(self,"$_reduce_282",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_283",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_284",(function(val,_values,result){return(result=[this.builder.$associate(nil,val["$[]"](0),nil)]).$concat(val["$[]"](1)),result}),3),$def(self,"$_reduce_285",(function(val,_values,result){var assocs;return assocs=this.builder.$associate(nil,val["$[]"](2),nil),(result=val["$[]"](0)["$<<"](assocs)).$concat(val["$[]"](3)),result}),3),$def(self,"$_reduce_286",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_287",(function(val,_values,result){var lookahead,$ret_or_1,last_token=nil,top=nil;return last_token=this.last_token["$[]"](0),lookahead=$truthy($ret_or_1=last_token["$=="]("tLBRACK"))?$ret_or_1:last_token["$=="]("tLPAREN_ARG"),$truthy(lookahead)?(top=this.lexer.$cmdarg().$pop(),this.lexer.$cmdarg().$push(!0),this.lexer.$cmdarg().$push(top)):this.lexer.$cmdarg().$push(!0),result}),3),$def(self,"$_reduce_288",(function(val,_values,result){var lookahead,top=nil;return lookahead=this.last_token["$[]"](0)["$=="]("tLBRACE_ARG"),$truthy(lookahead)?(top=this.lexer.$cmdarg().$pop(),this.lexer.$cmdarg().$pop(),this.lexer.$cmdarg().$push(top)):this.lexer.$cmdarg().$pop(),val["$[]"](1)}),3),$def(self,"$_reduce_289",(function(val,_values,result){return this.builder.$block_pass(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_290",(function(val,_values,result){return $not(this.static_env["$declared_anonymous_blockarg?"]())&&this.$diagnostic("error","no_anonymous_blockarg",nil,val["$[]"](0)),this.builder.$block_pass(val["$[]"](0),nil)}),3),$def(self,"$_reduce_291",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_292",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_293",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_294",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_295",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_296",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$splat(val["$[]"](2),val["$[]"](3)))}),3),$def(self,"$_reduce_297",(function(val,_values,result){return this.builder.$array(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_299",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_300",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$splat(val["$[]"](2),val["$[]"](3)))}),3),$def(self,"$_reduce_301",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_312",(function(val,_values,result){return this.builder.$call_method(nil,nil,val["$[]"](0))}),3),$def(self,"$_reduce_313",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),result}),3),$def(self,"$_reduce_314",(function(val,_values,result){return this.lexer.$cmdarg().$pop(),this.builder.$begin_keyword(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_315",(function(val,_values,result){var $writer;return $writer=["expr_endarg"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_316",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_317",(function(val,_values,result){var $writer;return $writer=["expr_endarg"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_318",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),nil,val["$[]"](3))}),3),$def(self,"$_reduce_319",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_320",(function(val,_values,result){return this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_321",(function(val,_values,result){return this.builder.$const_global(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_322",(function(val,_values,result){return this.builder.$array(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_323",(function(val,_values,result){return this.builder.$associate(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_324",(function(val,_values,result){return this.builder.$keyword_cmd("return",val["$[]"](0))}),3),$def(self,"$_reduce_325",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_326",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0),val["$[]"](1),[],val["$[]"](2))}),3),$def(self,"$_reduce_327",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0))}),3),$def(self,"$_reduce_328",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_defined=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_329",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_defined=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$keyword_cmd("defined?",val["$[]"](0),val["$[]"](2),[val["$[]"](4)],val["$[]"](5))}),3),$def(self,"$_reduce_330",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_331",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),val["$[]"](1),nil,val["$[]"](2))}),3),$def(self,"$_reduce_332",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(nil,nil,val["$[]"](0)),$b=val["$[]"](1),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_334",(function(val,_values,result){var $a,$b,begin_t,args,body,end_t;return $b=val["$[]"](1),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(val["$[]"](0),begin_t,args,body,end_t)}),3),$def(self,"$_reduce_336",(function(val,_values,result){var $a,$b,else_t,else_;return $b=val["$[]"](4),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],this.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3),else_t,else_,val["$[]"](5))}),3),$def(self,"$_reduce_337",(function(val,_values,result){var $a,$b,else_t,else_;return $b=val["$[]"](4),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],this.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),else_,else_t,val["$[]"](3),val["$[]"](5))}),3),$def(self,"$_reduce_338",(function(val,_values,result){return $send(this.builder,"loop",["while",val["$[]"](0)].concat($to_a(val["$[]"](1))).concat([val["$[]"](2),val["$[]"](3)]))}),3),$def(self,"$_reduce_339",(function(val,_values,result){return $send(this.builder,"loop",["until",val["$[]"](0)].concat($to_a(val["$[]"](1))).concat([val["$[]"](2),val["$[]"](3)]))}),3),$def(self,"$_reduce_340",(function(val,_values,result){var $a,$b,$c,when_bodies,else_t,else_body;return $b=($b=($a=[].concat($to_a(val["$[]"](3)))).length-1)<0?0:$b,when_bodies=$slice.call($a,0,$b),else_t=null==($c=$to_ary(null==$a[$b]?nil:$a[$b]))[0]?nil:$c[0],else_body=null==$c[1]?nil:$c[1],this.builder.$case(val["$[]"](0),val["$[]"](1),when_bodies,else_t,else_body,val["$[]"](4))}),3),$def(self,"$_reduce_341",(function(val,_values,result){var $a,$b,$c,when_bodies,else_t,else_body;return $b=($b=($a=[].concat($to_a(val["$[]"](2)))).length-1)<0?0:$b,when_bodies=$slice.call($a,0,$b),else_t=null==($c=$to_ary(null==$a[$b]?nil:$a[$b]))[0]?nil:$c[0],else_body=null==$c[1]?nil:$c[1],this.builder.$case(val["$[]"](0),nil,when_bodies,else_t,else_body,val["$[]"](3))}),3),$def(self,"$_reduce_342",(function(val,_values,result){var $a,$b,$c,in_bodies,else_t,else_body;return $b=($b=($a=[].concat($to_a(val["$[]"](3)))).length-1)<0?0:$b,in_bodies=$slice.call($a,0,$b),else_t=null==($c=$to_ary(null==$a[$b]?nil:$a[$b]))[0]?nil:$c[0],else_body=null==$c[1]?nil:$c[1],this.builder.$case_match(val["$[]"](0),val["$[]"](1),in_bodies,else_t,else_body,val["$[]"](4))}),3),$def(self,"$_reduce_343",(function(val,_values,result){return $send(this.builder,"for",[val["$[]"](0),val["$[]"](1),val["$[]"](2)].concat($to_a(val["$[]"](3))).concat([val["$[]"](4),val["$[]"](5)]))}),3),$def(self,"$_reduce_344",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_class=",$to_a($writer)),$rb_minus($writer.length,1),this.$local_push(),result}),3),$def(self,"$_reduce_345",(function(val,_values,result){var $a,$b,k_class,lt_t,superclass,$writer,ctx=nil;return $b=val["$[]"](0),k_class=null==($a=$to_ary($b))[0]?nil:$a[0],ctx=null==$a[1]?nil:$a[1],$truthy(this.context.$in_def())&&this.$diagnostic("error","class_in_def",nil,k_class),$b=val["$[]"](2),lt_t=null==($a=$to_ary($b))[0]?nil:$a[0],superclass=null==$a[1]?nil:$a[1],result=this.builder.$def_class(k_class,val["$[]"](1),lt_t,superclass,val["$[]"](4),val["$[]"](5)),this.$local_pop(),$writer=[ctx.$in_class()],$send(this.context,"in_class=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_346",(function(val,_values,result){var $writer=nil;return $writer=[!1],$send(this.context,"in_def=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.context,"in_class=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$local_push(),result}),3),$def(self,"$_reduce_347",(function(val,_values,result){var $a,$b,k_class,ctx=nil,$writer=nil;return $b=val["$[]"](0),k_class=null==($a=$to_ary($b))[0]?nil:$a[0],ctx=null==$a[1]?nil:$a[1],result=this.builder.$def_sclass(k_class,val["$[]"](1),val["$[]"](2),val["$[]"](5),val["$[]"](6)),this.$local_pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[ctx.$in_class()],$send(this.context,"in_class=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_348",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_class=",$to_a($writer)),$rb_minus($writer.length,1),this.$local_push(),result}),3),$def(self,"$_reduce_349",(function(val,_values,result){var $a,$b,k_mod,$writer,ctx=nil;return $b=val["$[]"](0),k_mod=null==($a=$to_ary($b))[0]?nil:$a[0],ctx=null==$a[1]?nil:$a[1],$truthy(this.context.$in_def())&&this.$diagnostic("error","module_in_def",nil,k_mod),result=this.builder.$def_module(k_mod,val["$[]"](1),val["$[]"](3),val["$[]"](4)),this.$local_pop(),$writer=[ctx.$in_class()],$send(this.context,"in_class=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_350",(function(val,_values,result){var $a,$b,$c,def_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==($c=$to_ary(null==$a[1]?nil:$a[1]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],result=this.builder.$def_method(def_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_351",(function(val,_values,result){var $a,$b,$c,def_t,recv,dot_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],recv=null==$a[1]?nil:$a[1],dot_t=null==$a[2]?nil:$a[2],name_t=null==($c=$to_ary(null==$a[3]?nil:$a[3]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],result=this.builder.$def_singleton(def_t,recv,dot_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_352",(function(val,_values,result){return this.builder.$keyword_cmd("break",val["$[]"](0))}),3),$def(self,"$_reduce_353",(function(val,_values,result){return this.builder.$keyword_cmd("next",val["$[]"](0))}),3),$def(self,"$_reduce_354",(function(val,_values,result){return this.builder.$keyword_cmd("redo",val["$[]"](0))}),3),$def(self,"$_reduce_355",(function(val,_values,result){return this.builder.$keyword_cmd("retry",val["$[]"](0))}),3),$def(self,"$_reduce_357",(function(val,_values,result){return[val["$[]"](0),this.context.$dup()]}),3),$def(self,"$_reduce_358",(function(val,_values,result){return[val["$[]"](0),this.context.$dup()]}),3),$def(self,"$_reduce_359",(function(val,_values,result){var $writer;return result=val["$[]"](0),$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_360",(function(val,_values,result){var $ret_or_1=nil;return $truthy(this.context.$in_class())&&$not(this.context.$in_def())&&$not($truthy($ret_or_1=this.$context().$in_block())?$ret_or_1:this.$context().$in_lambda())&&this.$diagnostic("error","invalid_return",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_363",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_367",(function(val,_values,result){var $a,$b,else_t,else_;return $b=val["$[]"](4),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],[val["$[]"](0),this.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3),else_t,else_,nil)]}),3),$def(self,"$_reduce_369",(function(val,_values,result){return val}),3),$def(self,"$_reduce_372",(function(val,_values,result){return this.builder.$arg(val["$[]"](0))}),3),$def(self,"$_reduce_373",(function(val,_values,result){return this.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_374",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_375",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_377",(function(val,_values,result){return val["$[]"](0).$push(val["$[]"](2))}),3),$def(self,"$_reduce_378",(function(val,_values,result){return val["$[]"](0).$push(val["$[]"](2)).$concat(val["$[]"](4))}),3),$def(self,"$_reduce_379",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_380",(function(val,_values,result){return[val["$[]"](0)].concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_381",(function(val,_values,result){return this.builder.$restarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_382",(function(val,_values,result){return this.builder.$restarg(val["$[]"](0))}),3),$def(self,"$_reduce_385",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_386",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_387",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_388",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_389",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_390",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_391",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_392",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_394",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_395",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](6)).$concat(val["$[]"](7))}),3),$def(self,"$_reduce_396",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_397",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_398",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_400",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_401",(function(val,_values,result){return $truthy(val["$[]"](1)["$empty?"]())&&$eqeq(val["$[]"](0).$size(),1)?[this.builder.$procarg0(val["$[]"](0)["$[]"](0))]:val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_402",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_403",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_404",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_405",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_406",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_407",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_409",(function(val,_values,result){return this.builder.$args(nil,[],nil)}),3),$def(self,"$_reduce_410",(function(val,_values,result){var $writer;return $writer=["expr_value"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_411",(function(val,_values,result){var $writer;return this.max_numparam_stack["$has_ordinary_params!"](),this.current_arg_stack.$set(nil),$writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$args(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_412",(function(val,_values,result){var $writer;return this.max_numparam_stack["$has_ordinary_params!"](),this.current_arg_stack.$set(nil),$writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$args(val["$[]"](0),val["$[]"](1).$concat(val["$[]"](2)),val["$[]"](3))}),3),$def(self,"$_reduce_413",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_414",(function(val,_values,result){return val["$[]"](2)}),3),$def(self,"$_reduce_415",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_416",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_417",(function(val,_values,result){return this.static_env.$declare(val["$[]"](0)["$[]"](0)),this.builder.$shadowarg(val["$[]"](0))}),3),$def(self,"$_reduce_419",(function(val,_values,result){var $writer;return this.static_env.$extend_dynamic(),this.max_numparam_stack.$push($hash2(["static"],{static:!1})),result=this.context.$dup(),$writer=[!0],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_420",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),result}),3),$def(self,"$_reduce_421",(function(val,_values,result){var $a,$b,lambda_call,args,begin_t,body,end_t,$writer;return lambda_call=this.builder.$call_lambda(val["$[]"](0)),args=$truthy(this.max_numparam_stack["$has_numparams?"]())?this.builder.$numargs(this.max_numparam_stack.$top()):val["$[]"](2),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],body=null==$a[1]?nil:$a[1],end_t=null==$a[2]?nil:$a[2],this.max_numparam_stack.$pop(),this.static_env.$unextend(),this.lexer.$cmdarg().$pop(),$writer=[val["$[]"](1).$in_lambda()],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$block(lambda_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_422",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.max_numparam_stack["$has_ordinary_params!"](),this.builder.$args(val["$[]"](0),val["$[]"](1).$concat(val["$[]"](2)),val["$[]"](3))}),3),$def(self,"$_reduce_423",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),$truthy(val["$[]"](0)["$any?"]())&&this.max_numparam_stack["$has_ordinary_params!"](),this.builder.$args(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_424",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_425",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_lambda()],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0),val["$[]"](2),val["$[]"](3)]}),3),$def(self,"$_reduce_426",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_427",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_lambda()],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0),val["$[]"](2),val["$[]"](3)]}),3),$def(self,"$_reduce_428",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_429",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_block()],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)])}),3),$def(self,"$_reduce_430",(function(val,_values,result){var $a,$b,begin_t,block_args,body,end_t;return $b=val["$[]"](1),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],block_args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(val["$[]"](0),begin_t,block_args,body,end_t)}),3),$def(self,"$_reduce_431",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_432",(function(val,_values,result){var $a,$b,lparen_t,rparen_t,method_call,begin_t,body,end_t,args=nil;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_433",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_434",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](1),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(nil,nil,val["$[]"](0),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_435",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_436",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_437",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_438",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](2),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),nil,lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_439",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](2),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),nil,lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_440",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](1),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$keyword_cmd("super",val["$[]"](0),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_441",(function(val,_values,result){return this.builder.$keyword_cmd("zsuper",val["$[]"](0))}),3),$def(self,"$_reduce_442",(function(val,_values,result){return this.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_443",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_444",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_block()],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)])}),3),$def(self,"$_reduce_445",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_446",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_block()],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)])}),3),$def(self,"$_reduce_447",(function(val,_values,result){return this.static_env.$extend_dynamic(),this.max_numparam_stack.$push($hash2(["static"],{static:!1})),result}),3),$def(self,"$_reduce_448",(function(val,_values,result){return result=[$truthy(this.max_numparam_stack["$has_numparams?"]())?this.builder.$numargs(this.max_numparam_stack.$top()):val["$[]"](1),val["$[]"](2)],this.max_numparam_stack.$pop(),this.static_env.$unextend(),result}),3),$def(self,"$_reduce_449",(function(val,_values,result){return this.static_env.$extend_dynamic(),this.max_numparam_stack.$push($hash2(["static"],{static:!1})),result}),3),$def(self,"$_reduce_450",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),result}),3),$def(self,"$_reduce_451",(function(val,_values,result){return result=[$truthy(this.max_numparam_stack["$has_numparams?"]())?this.builder.$numargs(this.max_numparam_stack.$top()):val["$[]"](2),val["$[]"](3)],this.max_numparam_stack.$pop(),this.static_env.$unextend(),this.lexer.$cmdarg().$pop(),result}),3),$def(self,"$_reduce_452",(function(val,_values,result){return[this.builder.$when(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))].concat($to_a(val["$[]"](4)))}),3),$def(self,"$_reduce_453",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_455",(function(val,_values,result){var $writer=nil;return $writer=["expr_beg"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.lexer,"command_start=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.pattern_variables.$push(),this.pattern_hash_keys.$push(),result=this.context.$in_kwarg(),$writer=[!0],$send(this.context,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_456",(function(val,_values,result){var $writer;return this.pattern_variables.$pop(),this.pattern_hash_keys.$pop(),$writer=[val["$[]"](1)],$send(this.context,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_457",(function(val,_values,result){return[$send(this.builder,"in_pattern",[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3),val["$[]"](5)]))].concat($to_a(val["$[]"](6)))}),3),$def(self,"$_reduce_458",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_460",(function(val,_values,result){return[val["$[]"](0),nil]}),3),$def(self,"$_reduce_461",(function(val,_values,result){return[val["$[]"](0),this.builder.$if_guard(val["$[]"](1),val["$[]"](2))]}),3),$def(self,"$_reduce_462",(function(val,_values,result){return[val["$[]"](0),this.builder.$unless_guard(val["$[]"](1),val["$[]"](2))]}),3),$def(self,"$_reduce_464",(function(val,_values,result){var item;return item=this.builder.$match_with_trailing_comma(val["$[]"](0),val["$[]"](1)),this.builder.$array_pattern(nil,[item],nil)}),3),$def(self,"$_reduce_465",(function(val,_values,result){return this.builder.$array_pattern(nil,[val["$[]"](0)].$concat(val["$[]"](2)),nil)}),3),$def(self,"$_reduce_466",(function(val,_values,result){return this.builder.$find_pattern(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_467",(function(val,_values,result){return this.builder.$array_pattern(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_468",(function(val,_values,result){return this.builder.$hash_pattern(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_470",(function(val,_values,result){return this.builder.$match_as(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_472",(function(val,_values,result){return this.builder.$match_alt(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_474",(function(val,_values,result){return result=val["$[]"](0),this.pattern_hash_keys.$push(),result}),3),$def(self,"$_reduce_475",(function(val,_values,result){return result=val["$[]"](0),this.pattern_hash_keys.$push(),result}),3),$def(self,"$_reduce_478",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$array_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_479",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$find_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_480",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$hash_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_481",(function(val,_values,result){var pattern;return pattern=this.builder.$array_pattern(val["$[]"](1),nil,val["$[]"](2)),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](2))}),3),$def(self,"$_reduce_482",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$array_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_483",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$find_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_484",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$hash_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_485",(function(val,_values,result){var pattern;return pattern=this.builder.$array_pattern(val["$[]"](1),nil,val["$[]"](2)),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](2))}),3),$def(self,"$_reduce_486",(function(val,_values,result){return this.builder.$array_pattern(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_487",(function(val,_values,result){return this.builder.$find_pattern(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_488",(function(val,_values,result){return this.builder.$array_pattern(val["$[]"](0),[],val["$[]"](1))}),3),$def(self,"$_reduce_489",(function(val,_values,result){var $writer;return this.pattern_hash_keys.$push(),result=this.context.$in_kwarg(),$writer=[!1],$send(this.context,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_490",(function(val,_values,result){var $writer;return this.pattern_hash_keys.$pop(),$writer=[val["$[]"](1)],$send(this.context,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$hash_pattern(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_491",(function(val,_values,result){return this.builder.$hash_pattern(val["$[]"](0),[],val["$[]"](1))}),3),$def(self,"$_reduce_492",(function(val,_values,result){return this.pattern_hash_keys.$push(),result}),3),$def(self,"$_reduce_493",(function(val,_values,result){return this.pattern_hash_keys.$pop(),this.builder.$begin(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_494",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_495",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_496",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([val["$[]"](1)])}),3),$def(self,"$_reduce_497",(function(val,_values,result){var match_rest;return match_rest=this.builder.$match_rest(val["$[]"](1),val["$[]"](2)),[].concat($to_a(val["$[]"](0))).concat([match_rest])}),3),$def(self,"$_reduce_498",(function(val,_values,result){var match_rest;return match_rest=this.builder.$match_rest(val["$[]"](1),val["$[]"](2)),[].concat($to_a(val["$[]"](0))).concat([match_rest]).concat($to_a(val["$[]"](4)))}),3),$def(self,"$_reduce_499",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([this.builder.$match_rest(val["$[]"](1))])}),3),$def(self,"$_reduce_500",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([this.builder.$match_rest(val["$[]"](1))]).concat($to_a(val["$[]"](3)))}),3),$def(self,"$_reduce_502",(function(val,_values,result){return[this.builder.$match_with_trailing_comma(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_503",(function(val,_values,result){var last_item;return last_item=this.builder.$match_with_trailing_comma(val["$[]"](1),val["$[]"](2)),[].concat($to_a(val["$[]"](0))).concat([last_item])}),3),$def(self,"$_reduce_504",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_505",(function(val,_values,result){return[val["$[]"](0)].concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_506",(function(val,_values,result){return[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](4)])}),3),$def(self,"$_reduce_507",(function(val,_values,result){return this.builder.$match_rest(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_508",(function(val,_values,result){return this.builder.$match_rest(val["$[]"](0))}),3),$def(self,"$_reduce_509",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_510",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([val["$[]"](2)])}),3),$def(self,"$_reduce_512",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_513",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_514",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_515",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_516",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_517",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([val["$[]"](2)])}),3),$def(self,"$_reduce_518",(function(val,_values,result){return $send(this.builder,"match_pair",$to_a(val["$[]"](0)).concat([val["$[]"](1)]))}),3),$def(self,"$_reduce_519",(function(val,_values,result){return $send(this.builder,"match_label",$to_a(val["$[]"](0)))}),3),$def(self,"$_reduce_520",(function(val,_values,result){return["label",val["$[]"](0)]}),3),$def(self,"$_reduce_521",(function(val,_values,result){return["quoted",[val["$[]"](0),val["$[]"](1),val["$[]"](2)]]}),3),$def(self,"$_reduce_522",(function(val,_values,result){return[this.builder.$match_rest(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_523",(function(val,_values,result){return[this.builder.$match_rest(val["$[]"](0),nil)]}),3),$def(self,"$_reduce_524",(function(val,_values,result){return[this.builder.$match_nil_pattern(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_528",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_529",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_530",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_531",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_535",(function(val,_values,result){return this.builder.$range_inclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_536",(function(val,_values,result){return this.builder.$range_exclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_545",(function(val,_values,result){return this.builder.$accessible(val["$[]"](0))}),3),$def(self,"$_reduce_547",(function(val,_values,result){return this.builder.$assignable(this.builder.$match_var(val["$[]"](0)))}),3),$def(self,"$_reduce_548",(function(val,_values,result){var name,lvar;return name=val["$[]"](1)["$[]"](0),$truthy(this.$static_env()["$declared?"](name))||this.$diagnostic("error","undefined_lvar",$hash2(["name"],{name:name}),val["$[]"](1)),lvar=this.builder.$accessible(this.builder.$ident(val["$[]"](1))),this.builder.$pin(val["$[]"](0),lvar)}),3),$def(self,"$_reduce_549",(function(val,_values,result){var non_lvar;return non_lvar=this.builder.$accessible(val["$[]"](1)),this.builder.$pin(val["$[]"](0),non_lvar)}),3),$def(self,"$_reduce_550",(function(val,_values,result){var expr;return expr=this.builder.$begin(val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.builder.$pin(val["$[]"](0),expr)}),3),$def(self,"$_reduce_551",(function(val,_values,result){return this.builder.$const_global(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_552",(function(val,_values,result){return this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_553",(function(val,_values,result){return this.builder.$const(val["$[]"](0))}),3),$def(self,"$_reduce_554",(function(val,_values,result){var $a,$b,assoc_t,exc_var,exc_list=nil;return $b=val["$[]"](2),assoc_t=null==($a=$to_ary($b))[0]?nil:$a[0],exc_var=null==$a[1]?nil:$a[1],$truthy(val["$[]"](1))&&(exc_list=this.builder.$array(nil,val["$[]"](1),nil)),[this.builder.$rescue_body(val["$[]"](0),exc_list,assoc_t,exc_var,val["$[]"](3),val["$[]"](4))].concat($to_a(val["$[]"](5)))}),3),$def(self,"$_reduce_555",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_556",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_559",(function(val,_values,result){return[val["$[]"](0),val["$[]"](1)]}),3),$def(self,"$_reduce_561",(function(val,_values,result){return[val["$[]"](0),val["$[]"](1)]}),3),$def(self,"$_reduce_565",(function(val,_values,result){return this.builder.$string_compose(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_566",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_567",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_568",(function(val,_values,result){var string;return string=this.builder.$string_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2)),this.builder.$dedent_string(string,this.lexer.$dedent_level())}),3),$def(self,"$_reduce_569",(function(val,_values,result){var string;return string=this.builder.$string(val["$[]"](0)),this.builder.$dedent_string(string,this.lexer.$dedent_level())}),3),$def(self,"$_reduce_570",(function(val,_values,result){return this.builder.$character(val["$[]"](0))}),3),$def(self,"$_reduce_571",(function(val,_values,result){var string;return string=this.builder.$xstring_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2)),this.builder.$dedent_string(string,this.lexer.$dedent_level())}),3),$def(self,"$_reduce_572",(function(val,_values,result){var opts;return opts=this.builder.$regexp_options(val["$[]"](3)),this.builder.$regexp_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2),opts)}),3),$def(self,"$_reduce_573",(function(val,_values,result){return this.builder.$words_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_574",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_575",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$word(val["$[]"](1)))}),3),$def(self,"$_reduce_576",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_577",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_578",(function(val,_values,result){return this.builder.$symbols_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_579",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_580",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$word(val["$[]"](1)))}),3),$def(self,"$_reduce_581",(function(val,_values,result){return this.builder.$words_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_582",(function(val,_values,result){return this.builder.$symbols_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_583",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_584",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$string_internal(val["$[]"](1)))}),3),$def(self,"$_reduce_585",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_586",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$symbol_internal(val["$[]"](1)))}),3),$def(self,"$_reduce_587",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_588",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_589",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_590",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_591",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_592",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_593",(function(val,_values,result){return this.builder.$string_internal(val["$[]"](0))}),3),$def(self,"$_reduce_594",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_595",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),this.lexer.$cond().$push(!1),result}),3),$def(self,"$_reduce_596",(function(val,_values,result){return this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.builder.$begin(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_597",(function(val,_values,result){return this.builder.$gvar(val["$[]"](0))}),3),$def(self,"$_reduce_598",(function(val,_values,result){return this.builder.$ivar(val["$[]"](0))}),3),$def(self,"$_reduce_599",(function(val,_values,result){return this.builder.$cvar(val["$[]"](0))}),3),$def(self,"$_reduce_603",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$symbol(val["$[]"](0))}),3),$def(self,"$_reduce_604",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$symbol_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_605",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_606",(function(val,_values,result){return $truthy(this.builder["$respond_to?"]("negate"))?this.builder.$negate(val["$[]"](0),val["$[]"](1)):this.builder.$unary_num(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_607",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$integer(val["$[]"](0))}),3),$def(self,"$_reduce_608",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$float(val["$[]"](0))}),3),$def(self,"$_reduce_609",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$rational(val["$[]"](0))}),3),$def(self,"$_reduce_610",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$complex(val["$[]"](0))}),3),$def(self,"$_reduce_611",(function(val,_values,result){return this.builder.$ivar(val["$[]"](0))}),3),$def(self,"$_reduce_612",(function(val,_values,result){return this.builder.$gvar(val["$[]"](0))}),3),$def(self,"$_reduce_613",(function(val,_values,result){return this.builder.$cvar(val["$[]"](0))}),3),$def(self,"$_reduce_614",(function(val,_values,result){return this.builder.$ident(val["$[]"](0))}),3),$def(self,"$_reduce_615",(function(val,_values,result){return this.builder.$ivar(val["$[]"](0))}),3),$def(self,"$_reduce_616",(function(val,_values,result){return this.builder.$gvar(val["$[]"](0))}),3),$def(self,"$_reduce_617",(function(val,_values,result){return this.builder.$const(val["$[]"](0))}),3),$def(self,"$_reduce_618",(function(val,_values,result){return this.builder.$cvar(val["$[]"](0))}),3),$def(self,"$_reduce_619",(function(val,_values,result){return this.builder.$nil(val["$[]"](0))}),3),$def(self,"$_reduce_620",(function(val,_values,result){return this.builder.$self(val["$[]"](0))}),3),$def(self,"$_reduce_621",(function(val,_values,result){return this.builder.$true(val["$[]"](0))}),3),$def(self,"$_reduce_622",(function(val,_values,result){return this.builder.$false(val["$[]"](0))}),3),$def(self,"$_reduce_623",(function(val,_values,result){return this.builder.$__FILE__(val["$[]"](0))}),3),$def(self,"$_reduce_624",(function(val,_values,result){return this.builder.$__LINE__(val["$[]"](0))}),3),$def(self,"$_reduce_625",(function(val,_values,result){return this.builder.$__ENCODING__(val["$[]"](0))}),3),$def(self,"$_reduce_626",(function(val,_values,result){return this.builder.$accessible(val["$[]"](0))}),3),$def(self,"$_reduce_627",(function(val,_values,result){return this.builder.$accessible(val["$[]"](0))}),3),$def(self,"$_reduce_628",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_629",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_630",(function(val,_values,result){return this.builder.$nth_ref(val["$[]"](0))}),3),$def(self,"$_reduce_631",(function(val,_values,result){return this.builder.$back_ref(val["$[]"](0))}),3),$def(self,"$_reduce_632",(function(val,_values,result){var $writer;return $writer=["expr_value"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_633",(function(val,_values,result){return[val["$[]"](0),val["$[]"](2)]}),3),$def(self,"$_reduce_634",(function(val,_values,result){return nil}),3),$def(self,"$_reduce_636",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$args(nil,[],nil)}),3),$def(self,"$_reduce_637",(function(val,_values,result){var $writer=nil;return result=this.builder.$args(val["$[]"](0),val["$[]"](1),val["$[]"](2)),$writer=["expr_value"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_639",(function(val,_values,result){var $writer=nil;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_640",(function(val,_values,result){var $writer=nil;return $writer=[val["$[]"](0).$in_kwarg()],$send(this.context,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.builder.$args(nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_641",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_642",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_643",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_644",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_645",(function(val,_values,result){return this.static_env.$declare_forward_args(),[this.builder.$forward_arg(val["$[]"](0))]}),3),$def(self,"$_reduce_646",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_647",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_648",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_649",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](6)).$concat(val["$[]"](7))}),3),$def(self,"$_reduce_650",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_651",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_652",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_653",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_654",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_655",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_656",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_657",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_658",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_659",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_660",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_661",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_662",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_663",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_664",(function(val,_values,result){return this.$diagnostic("error","argument_const",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_665",(function(val,_values,result){return this.$diagnostic("error","argument_ivar",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_666",(function(val,_values,result){return this.$diagnostic("error","argument_gvar",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_667",(function(val,_values,result){return this.$diagnostic("error","argument_cvar",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_669",(function(val,_values,result){return this.static_env.$declare(val["$[]"](0)["$[]"](0)),this.max_numparam_stack["$has_ordinary_params!"](),val["$[]"](0)}),3),$def(self,"$_reduce_670",(function(val,_values,result){return this.current_arg_stack.$set(val["$[]"](0)["$[]"](0)),val["$[]"](0)}),3),$def(self,"$_reduce_671",(function(val,_values,result){return this.current_arg_stack.$set(0),this.builder.$arg(val["$[]"](0))}),3),$def(self,"$_reduce_672",(function(val,_values,result){return this.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_673",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_674",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_675",(function(val,_values,result){var $writer;return this.$check_kwarg_name(val["$[]"](0)),this.static_env.$declare(val["$[]"](0)["$[]"](0)),this.max_numparam_stack["$has_ordinary_params!"](),this.current_arg_stack.$set(val["$[]"](0)["$[]"](0)),$writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),val["$[]"](0)}),3),$def(self,"$_reduce_676",(function(val,_values,result){var $writer;return this.current_arg_stack.$set(nil),$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$kwoptarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_677",(function(val,_values,result){var $writer;return this.current_arg_stack.$set(nil),$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$kwarg(val["$[]"](0))}),3),$def(self,"$_reduce_678",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$kwoptarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_679",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$kwarg(val["$[]"](0))}),3),$def(self,"$_reduce_680",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_681",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_682",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_683",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_686",(function(val,_values,result){return[this.builder.$kwnilarg(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_687",(function(val,_values,result){return this.static_env.$declare(val["$[]"](1)["$[]"](0)),[this.builder.$kwrestarg(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_688",(function(val,_values,result){return[this.builder.$kwrestarg(val["$[]"](0))]}),3),$def(self,"$_reduce_689",(function(val,_values,result){var $writer;return this.current_arg_stack.$set(0),$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$optarg(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_690",(function(val,_values,result){var $writer;return this.current_arg_stack.$set(0),$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$optarg(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_691",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_692",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_693",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_694",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_697",(function(val,_values,result){return this.static_env.$declare(val["$[]"](1)["$[]"](0)),[this.builder.$restarg(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_698",(function(val,_values,result){return[this.builder.$restarg(val["$[]"](0))]}),3),$def(self,"$_reduce_701",(function(val,_values,result){return this.static_env.$declare(val["$[]"](1)["$[]"](0)),this.builder.$blockarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_702",(function(val,_values,result){return this.static_env.$declare_anonymous_blockarg(),this.builder.$blockarg(val["$[]"](0),nil)}),3),$def(self,"$_reduce_703",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_704",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_706",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_707",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_709",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_710",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_711",(function(val,_values,result){return this.builder.$pair(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_712",(function(val,_values,result){return this.builder.$pair_keyword(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_713",(function(val,_values,result){return this.builder.$pair_label(val["$[]"](0))}),3),$def(self,"$_reduce_714",(function(val,_values,result){return this.builder.$pair_quoted(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_715",(function(val,_values,result){return this.builder.$kwsplat(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_728",(function(val,_values,result){return["dot",val["$[]"](0)["$[]"](1)]}),3),$def(self,"$_reduce_729",(function(val,_values,result){return["anddot",val["$[]"](0)["$[]"](1)]}),3),$def(self,"$_reduce_734",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_735",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_736",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_740",(function(val,_values,result){return this.$yyerrok(),result}),3),$def(self,"$_reduce_744",(function(val,_values,result){return nil}),3),$def(self,"$_reduce_none",(function(val,_values,result){return val["$[]"](0)}),3)}($nesting[0],$$$($$("Parser"),"Base"),$nesting)}($nesting[0],$nesting)},Opal.modules["opal/ast/builder"]=function(Opal){var self=Opal.top,$nesting=[],$$$=(Opal.nil,Opal.$$$),$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$Opal=Opal.Opal,$hash2=Opal.hash2,$def=Opal.def;return Opal.add_stubs("require,emit_lambda=,-,new"),self.$require("opal/ast/node"),self.$require("parser/ruby31"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var $writer,self=$klass($base,$super,"Builder");return $send(self,"emit_lambda=",$to_a($writer=[!0])),$rb_minus($writer.length,1),$def(self,"$n",(function(type,children,location){return $$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:location}))}),3)}([$module($base,"AST")].concat($parent_nesting)[0],$$$($$$($$$("Parser"),"Builders"),"Default"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/base"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$truthy=Opal.truthy,$Opal=Opal.Opal,$hash2=Opal.hash2,$defs=Opal.defs,$alias=Opal.alias,$rb_plus=Opal.rb_plus,$eqeqeq=Opal.eqeqeq,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,new,current_node,loc,+,stmts_of,begin_with_stmts,nil?,include?,type,children,===,length,[],s,attr_accessor,current_node=,-,location=,raise"),self.$require("parser"),self.$require("opal/ast/node"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Base"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"DummyLocation"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$node=",(function($a){return Opal.slice.call(arguments),nil}),-1),$def(self,"$expression",(function(){return this}),0),$def(self,"$begin_pos",(function(){return 0}),0),$def(self,"$end_pos",(function(){return 0}),0),$def(self,"$source",(function(){return""}),0),$def(self,"$line",(function(){return 0}),0),$def(self,"$column",(function(){return 0}),0),$def(self,"$last_line",(function(){return $$$($$("Float"),"INFINITY")}),0)}($nesting[0],0,$nesting),$const_set($nesting[0],"DUMMY_LOCATION",$$("DummyLocation").$new()),$def(self,"$s",(function(type,$a){var children,self=this,loc=nil;return children=Opal.slice.call(arguments,1),loc=$truthy(self.$current_node())?self.$current_node().$loc():$$("DUMMY_LOCATION"),$$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:loc}))}),-2),$defs(self,"$s",(function(type,$a){var children;return children=Opal.slice.call(arguments,1),$$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:$$("DUMMY_LOCATION")}))}),-2),$alias(self,"on_iter","process_regular_node"),$alias(self,"on_top","process_regular_node"),$alias(self,"on_zsuper","process_regular_node"),$alias(self,"on_jscall","on_send"),$alias(self,"on_jsattr","process_regular_node"),$alias(self,"on_jsattrasgn","process_regular_node"),$alias(self,"on_kwsplat","process_regular_node"),$def(self,"$prepend_to_body",(function(body,node){var stmts;return stmts=$rb_plus(this.$stmts_of(node),this.$stmts_of(body)),this.$begin_with_stmts(stmts)}),2),$def(self,"$append_to_body",(function(body,node){var stmts;return stmts=$rb_plus(this.$stmts_of(body),this.$stmts_of(node)),this.$begin_with_stmts(stmts)}),2),$def(self,"$stmts_of",(function(node){return $truthy(node["$nil?"]())?[]:$truthy(["begin","kwbegin"]["$include?"](node.$type()))?node.$children():[node]}),1),$def(self,"$begin_with_stmts",(function(stmts){var $ret_or_1;return $eqeqeq(0,$ret_or_1=stmts.$length())?nil:$eqeqeq(1,$ret_or_1)?stmts["$[]"](0):$send(this,"s",["begin"].concat($to_a(stmts)))}),1),self.$attr_accessor("current_node"),$def(self,"$process",(function $$process(node){var $yield=$$process.$$p||nil,self=this,$writer=nil;return delete $$process.$$p,function(){try{return $send(self,"current_node=",$to_a($writer=[node])),$writer[$rb_minus($writer.length,1)],$send2(self,$find_super(self,"process",$$process,!1,!0),"process",[node],$yield)}finally{$send(self,"current_node=",$to_a($writer=[nil])),$writer[$rb_minus($writer.length,1)]}}()}),1),$def(self,"$error",(function(msg){var error,$writer=nil;return error=$$$($Opal,"RewritingError").$new(msg),$truthy(this.$current_node())&&($writer=[this.$current_node().$loc()],$send(error,"location=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),this.$raise(error)}),1)}($nesting[0],$$$($$$($$$("Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/opal_engine_check"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_a=Opal.to_a,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$const_set=Opal.const_set;return Opal.add_stubs("require,children,skip_check_present?,process,s,skip_check_present_not?,=="),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"OpalEngineCheck"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_if",(function $$on_if(node){var $a,test,true_body,false_body,$yield=$$on_if.$$p||nil,$ret_or_1=nil;return delete $$on_if.$$p,test=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],true_body=null==$a[1]?nil:$a[1],false_body=null==$a[2]?nil:$a[2],$truthy(this["$skip_check_present?"](test))?this.$process($truthy($ret_or_1=true_body)?$ret_or_1:this.$s("nil")):$truthy(this["$skip_check_present_not?"](test))?this.$process($truthy($ret_or_1=false_body)?$ret_or_1:this.$s("nil")):$send2(this,$find_super(this,"on_if",$$on_if,!1,!0),"on_if",[node],$yield)}),1),$def(self,"$skip_check_present?",(function(test){var $ret_or_1;return $truthy($ret_or_1=test["$=="]($$("RUBY_ENGINE_CHECK")))?$ret_or_1:test["$=="]($$("RUBY_PLATFORM_CHECK"))}),1),$def(self,"$skip_check_present_not?",(function(test){var $ret_or_1;return $truthy($ret_or_1=test["$=="]($$("RUBY_ENGINE_CHECK_NOT")))?$ret_or_1:test["$=="]($$("RUBY_PLATFORM_CHECK_NOT"))}),1),$const_set($nesting[0],"RUBY_ENGINE_CHECK",self.$s("send",self.$s("const",nil,"RUBY_ENGINE"),"==",self.$s("str","opal"))),$const_set($nesting[0],"RUBY_ENGINE_CHECK_NOT",self.$s("send",self.$s("const",nil,"RUBY_ENGINE"),"!=",self.$s("str","opal"))),$const_set($nesting[0],"RUBY_PLATFORM_CHECK",self.$s("send",self.$s("const",nil,"RUBY_PLATFORM"),"==",self.$s("str","opal"))),$const_set($nesting[0],"RUBY_PLATFORM_CHECK_NOT",self.$s("send",self.$s("const",nil,"RUBY_PLATFORM"),"!=",self.$s("str","opal")))}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/for_rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$defs=Opal.defs,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$to_a=Opal.to_a,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,+,find,map,s,next_tmp,class,===,type,updated,<<,prepend_to_body,process,attr_reader,new,to_a,result"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ForRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$reset_tmp_counter!",(function(){return this.counter=0}),0),$defs(self,"$next_tmp",(function(){var $ret_or_1;return null==this.counter&&(this.counter=nil),this.counter=$truthy($ret_or_1=this.counter)?$ret_or_1:0,this.counter=$rb_plus(this.counter,1),"$for_tmp"+this.counter}),0),$def(self,"$on_for",(function(node){var $a,iterating_value,iterating_lvars,lvars_declared_in_body,outer_assigns,tmp_loop_variable,get_tmp_loop_variable,loop_variable_assignment,loop_variable=nil,loop_body=nil;return loop_variable=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],iterating_value=null==$a[1]?nil:$a[1],loop_body=null==$a[2]?nil:$a[2],iterating_lvars=$$("LocalVariableAssigns").$find(loop_variable),lvars_declared_in_body=$$("LocalVariableAssigns").$find(loop_body),outer_assigns=$send($rb_plus(iterating_lvars,lvars_declared_in_body),"map",[],(function $$2(lvar_name){return null==lvar_name&&(lvar_name=nil),(null==$$2.$$s?this:$$2.$$s).$s("lvdeclare",lvar_name)}),{$$arity:1,$$s:this}),tmp_loop_variable=this.$class().$next_tmp(),get_tmp_loop_variable=this.$s("js_tmp",tmp_loop_variable),loop_variable_assignment=$eqeqeq("mlhs",loop_variable.$type())?loop_variable.$updated("masgn",[loop_variable,get_tmp_loop_variable]):loop_variable["$<<"](get_tmp_loop_variable),loop_body=this.$prepend_to_body(loop_body,loop_variable_assignment),(node=node.$updated("send",[iterating_value,"each",node.$updated("iter",[this.$s("args",this.$s("arg",tmp_loop_variable)),this.$process(loop_body)])])).$updated("begin",[].concat($to_a(outer_assigns)).concat([node]))}),1),function($base,$super,$parent_nesting){var self=$klass($base,$super,"LocalVariableAssigns"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$attr_reader("result"),$defs(self,"$find",(function(node){var processor=nil;return(processor=this.$new()).$process(node),processor.$result().$to_a()}),1),$def(self,"$initialize",(function(){return this.result=$$("Set").$new()}),0),$def(self,"$on_lvasgn",(function $$on_lvasgn(node){var $a,name,$yield=$$on_lvasgn.$$p||nil;return delete $$on_lvasgn.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],this.$result()["$<<"](name),$send2(this,$find_super(this,"on_lvasgn",$$on_lvasgn,!1,!0),"on_lvasgn",[node],$yield)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/explicit_writer_return"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$slice=Opal.slice,$eqeq=Opal.eqeq,$regexp=Opal.regexp,$send=Opal.send;return Opal.add_stubs("require,s,==,to_s,=~,process_all,updated"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ExplicitWriterReturn"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.in_masgn=nil,$def(self,"$initialize",(function(){return this.in_masgn=!1}),0),$const_set($nesting[0],"TMP_NAME","$writer"),$const_set($nesting[0],"GET_ARGS_NODE",self.$s("lvar",$$("TMP_NAME"))),$const_set($nesting[0],"RETURN_ARGS_NODE",self.$s("jsattr",$$("GET_ARGS_NODE"),self.$s("send",self.$s("jsattr",$$("GET_ARGS_NODE"),self.$s("str","length")),"-",self.$s("int",1)))),$def(self,"$on_send",(function $$on_send(node){var $a,recv,args,$yield=$$on_send.$$p||nil,method_name=nil,set_args_node=nil;return delete $$on_send.$$p,$truthy(this.in_masgn)?$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield):(recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(method_name.$to_s()["$=~"]($regexp([$$("REGEXP_START"),"\\w+=",$$("REGEXP_END")])))||$eqeq(method_name.$to_s(),"[]=")?(set_args_node=this.$s("lvasgn",$$("TMP_NAME"),$send(this,"s",["array"].concat($to_a(this.$process_all(args))))),this.$s("begin",set_args_node,node.$updated(nil,[recv,method_name,this.$s("splat",$$("GET_ARGS_NODE"))]),$$("RETURN_ARGS_NODE"))):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield))}),1),$def(self,"$on_masgn",(function $$on_masgn(node){var result,$yield=$$on_masgn.$$p||nil;return delete $$on_masgn.$$p,this.in_masgn=!0,result=$send2(this,$find_super(this,"on_masgn",$$on_masgn,!1,!0),"on_masgn",[node],$yield),this.in_masgn=!1,result}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/js_reserved_words"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$truthy=Opal.truthy,$defs=Opal.defs,$def=Opal.def,$range=Opal.range,$to_a=Opal.to_a,$send2=Opal.send2,$find_super=Opal.find_super,$hash2=Opal.hash2,$alias=Opal.alias;return Opal.add_stubs("require,freeze,=~,!,valid_name?,class,to_sym,valid_ivar_name?,[],to_s,updated,fix_var_name,fix_ivar_name"),self.$require("opal/rewriters/base"),self.$require("opal/regexp_anchors"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"JsReservedWords"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"ES51_RESERVED_WORD",$regexp([$$("REGEXP_START"),"(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"ES3_RESERVED_WORD_EXCLUSIVE",$regexp([$$("REGEXP_START"),"(?:int|byte|char|goto|long|final|float|short|double|native|throws|boolean|abstract|volatile|transient|synchronized)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"PROTO_SPECIAL_PROPS",$regexp([$$("REGEXP_START"),"(?:constructor|displayName|__proto__|__parent__|__noSuchMethod__|__count__)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"PROTO_SPECIAL_METHODS",$regexp([$$("REGEXP_START"),"(?:hasOwnProperty|valueOf)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"IMMUTABLE_PROPS",$regexp([$$("REGEXP_START"),"(?:NaN|Infinity|undefined)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"BASIC_IDENTIFIER_RULES",$regexp([$$("REGEXP_START"),"[$_a-z][$_a-z\\d]*",$$("REGEXP_END")],"i").$freeze()),$const_set($nesting[0],"RESERVED_FUNCTION_NAMES",$regexp([$$("REGEXP_START"),"(?:Array)",$$("REGEXP_END")]).$freeze()),$defs(self,"$valid_name?",(function(name){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $truthy($ret_or_1=$$("BASIC_IDENTIFIER_RULES")["$=~"](name))?($truthy($ret_or_2=$truthy($ret_or_3=$$("ES51_RESERVED_WORD")["$=~"](name))?$ret_or_3:$$("ES3_RESERVED_WORD_EXCLUSIVE")["$=~"](name))?$ret_or_2:$$("IMMUTABLE_PROPS")["$=~"](name))["$!"]():$ret_or_1}),1),$defs(self,"$valid_ivar_name?",(function(name){var $ret_or_1;return($truthy($ret_or_1=$$("PROTO_SPECIAL_PROPS")["$=~"](name))?$ret_or_1:$$("PROTO_SPECIAL_METHODS")["$=~"](name))["$!"]()}),1),$def(self,"$fix_var_name",(function(name){return $truthy(this.$class()["$valid_name?"](name))?name:(name+"$").$to_sym()}),1),$def(self,"$fix_ivar_name",(function(name){return $truthy(this.$class()["$valid_ivar_name?"](name.$to_s()["$[]"]($range(1,-1,!1))))?name:(name+"$").$to_sym()}),1),$def(self,"$on_lvar",(function $$on_lvar(node){var $a,name;return delete $$on_lvar.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],node=node.$updated(nil,[this.$fix_var_name(name)]),$send2(this,$find_super(this,"on_lvar",$$on_lvar,!1,!0),"on_lvar",[node],null)}),1),$def(self,"$on_lvasgn",(function $$on_lvasgn(node){var $a,name,value;return delete $$on_lvasgn.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],node=$truthy(value)?node.$updated(nil,[this.$fix_var_name(name),value]):node.$updated(nil,[this.$fix_var_name(name)]),$send2(this,$find_super(this,"on_lvasgn",$$on_lvasgn,!1,!0),"on_lvasgn",[node],null)}),1),$def(self,"$on_ivar",(function $$on_ivar(node){var $a,name;return delete $$on_ivar.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],node=node.$updated(nil,[this.$fix_ivar_name(name)]),$send2(this,$find_super(this,"on_ivar",$$on_ivar,!1,!0),"on_ivar",[node],null)}),1),$def(self,"$on_ivasgn",(function $$on_ivasgn(node){var $a,name,value;return delete $$on_ivasgn.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],node=$truthy(value)?node.$updated(nil,[this.$fix_ivar_name(name),value]):node.$updated(nil,[this.$fix_ivar_name(name)]),$send2(this,$find_super(this,"on_ivasgn",$$on_ivasgn,!1,!0),"on_ivasgn",[node],null)}),1),$def(self,"$on_restarg",(function(node){var $a,name;return name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$truthy(name)&&(node=node.$updated(nil,[this.$fix_var_name(name)],$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:name})}))),node}),1),$alias(self,"on_kwrestarg","on_restarg"),$def(self,"$on_argument",(function $$on_argument(node){var $a,name,value,fixed_name,new_children;return delete $$on_argument.$$p,node=$send2(this,$find_super(this,"on_argument",$$on_argument,!1,!0),"on_argument",[node],null),name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],fixed_name=this.$fix_var_name(name),new_children=$truthy(value)?[fixed_name,value]:[fixed_name],node.$updated(nil,new_children,$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:name})}))}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/block_to_iter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$def=Opal.def;return Opal.add_stubs("require,s,process,updated,+,children"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BlockToIter");return $def(self,"$on_block",(function(node){var $a,args,body,iter_node,recvr=nil;return recvr=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],iter_node=this.$s("iter",args,body),this.$process(recvr.$updated(nil,$rb_plus(recvr.$children(),[iter_node])))}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/dot_js_syntax"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_a=Opal.to_a,$slice=Opal.slice,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$eqeqeq=Opal.eqeqeq,$neqeq=Opal.neqeq,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("require,==,type,===,!=,size,error,first,to_js_attr_call,to_js_attr_assign_call,to_native_js_call,s"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DotJsSyntax");return $def(self,"$on_send",(function $$on_send(node){var $a,meth,$yield=$$on_send.$$p||nil,recv=nil,args=nil,recv_of_recv=nil,meth_of_recv=nil,$ret_or_1=nil,property=nil,value=nil;return delete $$on_send.$$p,recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(recv)&&$eqeq(recv.$type(),"send")?(recv_of_recv=null==($a=[].concat($to_a(recv)))[0]?nil:$a[0],meth_of_recv=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],$eqeq(meth_of_recv,"JS")?($eqeqeq("[]",$ret_or_1=meth)?($neqeq(args.$size(),1)&&this.$error(".JS[:property] syntax supports only one argument"),property=args.$first(),node=this.$to_js_attr_call(recv_of_recv,property)):$eqeqeq("[]=",$ret_or_1)?($neqeq(args.$size(),2)&&this.$error(".JS[:property]= syntax supports only two arguments"),property=null==($a=[].concat($to_a(args)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],node=this.$to_js_attr_assign_call(recv_of_recv,property,value)):node=this.$to_native_js_call(recv_of_recv,meth,args),$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],null)):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield)):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield)}),1),$def(self,"$to_native_js_call",(function(recv,meth,args){return $send(this,"s",["jscall",recv,meth].concat($to_a(args)))}),3),$def(self,"$to_js_attr_call",(function(recv,property){return this.$s("jsattr",recv,property)}),2),$def(self,"$to_js_attr_assign_call",(function(recv,property,value){return this.$s("jsattrasgn",recv,property,value)}),3)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/pattern_matching"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$slice=Opal.slice,$truthy=Opal.truthy,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$not=Opal.not,$neqeq=Opal.neqeq,$eqeq=Opal.eqeq,$alias=Opal.alias,$Opal=Opal.Opal;return Opal.add_stubs("require,s,convert_full_pattern,raise_no_matching_pattern_error,+,process,single_case_match,private,shift,===,type,!,empty?,!=,==,class,new,run!,variables,pattern,map,<<,array,on_literal,first,children,to_proc,method,each,to_ast,on_array_pattern,compact,[]"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"PatternMatching"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.depth=nil,$def(self,"$initialize",(function $$initialize(){var $yield=$$initialize.$$p||nil;return delete $$initialize.$$p,this.depth=0,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[],$yield)}),0),$def(self,"$on_match_pattern",(function(node){var $a,from,pat;return from=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],pat=null==$a[1]?nil:$a[1],this.$s("begin",this.$s("lvasgn","$pmvar",from),this.$s("if",this.$convert_full_pattern(from,pat),nil,this.$raise_no_matching_pattern_error("$pmvar")))}),1),$def(self,"$on_match_pattern_p",(function(node){var $a,from,pat;return from=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],pat=null==$a[1]?nil:$a[1],this.$s("if",this.$convert_full_pattern(from,pat),this.$s("true"),this.$s("false"))}),1),$def(self,"$on_case_match",(function(node){var $a,$b,from,cases,cmvar=nil,els=nil;return this.depth=$rb_plus(this.depth,1),cmvar="$cmvar"+this.depth,from=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],$b=($b=$a.length-1)<1?1:$b,cases=$slice.call($a,1,$b),els=null==$a[$b]?nil:$a[$b],$truthy(els)?this.$process(els):els=this.$raise_no_matching_pattern_error(cmvar),this.$s("begin",this.$s("lvasgn",cmvar,from),$send(this,"single_case_match",[cmvar].concat($to_a(cases)).concat([els])))}),1),self.$private(),$def(self,"$raise_no_matching_pattern_error",(function(from){return this.$s("send",nil,"raise",this.$s("const",this.$s("cbase"),"NoMatchingPatternError"),this.$s("lvar",from))}),1),$def(self,"$single_case_match",(function(from,$a,$b){var $post_args,cases,els,$c,self=this,cas=nil,pat=nil,if_guard=nil,body=nil,guard=nil,$ret_or_1=nil;return cases=($post_args=Opal.slice.call(arguments,1)).splice(0,$post_args.length-1),null==(els=$post_args.shift())&&(els=nil),cas=cases.$shift(),pat=null==($c=[].concat($to_a(cas)))[0]?nil:$c[0],if_guard=null==$c[1]?nil:$c[1],body=null==$c[2]?nil:$c[2],pat=self.$convert_full_pattern(from,pat),$truthy(if_guard)&&(guard=null==($c=[].concat($to_a(if_guard)))[0]?nil:$c[0],$eqeqeq("if_guard",$ret_or_1=if_guard.$type())?pat=self.$s("and",pat,guard):$eqeqeq("unless_guard",$ret_or_1)&&(pat=self.$s("and",pat,self.$s("send",guard,"!")))),self.$s("if",pat,self.$process(body),$not(cases["$empty?"]())?$send(self,"single_case_match",[from].concat($to_a(cases)).concat([els])):$neqeq(els,self.$s("empty_else"))?els:nil)}),-3),$def(self,"$convert_full_pattern",(function(from,pat){var converter=nil;return $eqeq(from.$class(),$$("Symbol"))&&(from=this.$s("lvar",from)),(converter=$$("PatternConverter").$new(pat))["$run!"](),this.$s("masgn",$send(this,"s",["mlhs"].concat($to_a(converter.$variables()))),this.$s("send",this.$s("const",this.$s("cbase"),"PatternMatching"),"call",from,converter.$pattern()))}),2),function($base,$super,$parent_nesting){var self=$klass($base,$super,"PatternConverter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.pat=$proto.outpat=$proto.variables=nil,$def(self,"$initialize",(function(pat){return this.pat=pat,this.variables=[]}),1),$def(self,"$run!",(function(){return this.outpat=this.$process(this.pat)}),0),$def(self,"$pattern",(function(){return this.outpat}),0),$def(self,"$variables",(function(){return $send(this.variables,"map",[],(function $$2(i){return null==i&&(i=nil),(null==$$2.$$s?this:$$2.$$s).$s("lvasgn",i)}),{$$arity:1,$$s:this})}),0),$def(self,"$on_match_var",(function(node){var $a,var$;return var$=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],this.variables["$<<"](var$),this.$s("sym","var")}),1),$def(self,"$on_match_as",(function(node){var $a,pat,save;return pat=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],save=null==$a[1]?nil:$a[1],this.$process(save),this.$array(this.$s("sym","save"),this.$process(pat))}),1),$def(self,"$on_literal",(function(node){return this.$array(this.$s("sym","lit"),node)}),1),$alias(self,"on_int","on_literal"),$alias(self,"on_float","on_literal"),$alias(self,"on_complex","on_literal"),$alias(self,"on_rational","on_literal"),$alias(self,"on_array","on_literal"),$alias(self,"on_str","on_literal"),$alias(self,"on_dstr","on_literal"),$alias(self,"on_xstr","on_literal"),$alias(self,"on_sym","on_literal"),$alias(self,"on_irange","on_literal"),$alias(self,"on_erange","on_literal"),$alias(self,"on_const","on_literal"),$alias(self,"on_regexp","on_literal"),$alias(self,"on_lambda","on_literal"),$alias(self,"on_begin","on_literal"),$def(self,"$on_pin",(function(node){return this.$on_literal(node.$children().$first())}),1),$def(self,"$on_match_rest",(function(node){return $truthy(node.$children()["$empty?"]())?this.$array(this.$s("sym","rest")):this.$array(this.$s("sym","rest"),this.$process(node.$children().$first()))}),1),$def(self,"$on_match_alt",(function(node){return $send(this,"array",[this.$s("sym","any")].concat($to_a($send(node.$children(),"map",[],this.$method("process").$to_proc()))))}),1),$def(self,"$on_const_pattern",(function(node){return $send(this,"array",[this.$s("sym","all")].concat($to_a($send(node.$children(),"map",[],this.$method("process").$to_proc()))))}),1),$def(self,"$on_array_pattern",(function(node,tail){var children=nil,fixed_size=nil,array_size=nil;return null==tail&&(tail=!1),children=[].concat($to_a(node)),$truthy(tail)&&children["$<<"](this.$s("match_rest")),fixed_size=!0,array_size=0,children=$send(children,"each",[],(function(i){return null==i&&(i=nil),$eqeqeq("match_rest",i.$type())?fixed_size=!1:array_size=$rb_plus(array_size,1)}),1),this.$array(this.$s("sym","array"),this.$to_ast(fixed_size),this.$to_ast(array_size),this.$to_ast($send(children,"map",[],this.$method("process").$to_proc())))}),-2),$def(self,"$on_array_pattern_with_tail",(function(node){return this.$on_array_pattern(node,!0)}),1),$def(self,"$on_hash_pattern",(function(node){var children=nil,any_size=nil;return children=[].concat($to_a(node)),any_size=$truthy(children["$empty?"]())?this.$to_ast(!1):this.$to_ast(!0),children=$send(children,"map",[],(function $$4(i){var $ret_or_1,self=null==$$4.$$s?this:$$4.$$s;return null==i&&(i=nil),$eqeqeq("pair",$ret_or_1=i.$type())?self.$array(i.$children()["$[]"](0),self.$process(i.$children()["$[]"](1))):$eqeqeq("match_var",$ret_or_1)?self.$array(self.$s("sym",i.$children()["$[]"](0)),self.$process(i)):$eqeqeq("match_nil_pattern",$ret_or_1)?(any_size=self.$to_ast(!1),nil):$eqeqeq("match_rest",$ret_or_1)?(any_size=$truthy(i.$children().$first())?self.$process(i.$children().$first()):self.$to_ast(!0),nil):nil}),{$$arity:1,$$s:this}).$compact(),this.$array(this.$s("sym","hash"),any_size,$send(this,"array",$to_a(children)))}),1),$def(self,"$on_find_pattern",(function(node){var children=nil;return children=[].concat($to_a(node)),children=$send(children,"map",[],this.$method("process").$to_proc()),this.$array(this.$s("sym","find"),$send(this,"array",$to_a(children)))}),1),self.$private(),$def(self,"$array",(function($a){var args,self=this;return args=Opal.slice.call(arguments),self.$to_ast(args)}),-1),$def(self,"$to_ast",(function(val){var $ret_or_1;return $eqeqeq($$("Array"),$ret_or_1=val)?$send(this,"s",["array"].concat($to_a(val))):$eqeqeq($$("Integer"),$ret_or_1)?this.$s("int",val):$eqeqeq(!0,$ret_or_1)?this.$s("true"):$eqeqeq(!1,$ret_or_1)?this.$s("false"):$eqeqeq(nil,$ret_or_1)?this.$s("nil"):nil}),1)}($nesting[0],$$$($$$($Opal,"Rewriters"),"Base"),$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/logical_operator_assignment"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$class_variable_set=Opal.class_variable_set,$defs=Opal.defs,$truthy=Opal.truthy,$class_variable_get=Opal.class_variable_get,$rb_plus=Opal.rb_plus,$const_set=Opal.const_set,$lambda=Opal.lambda,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$slice=Opal.slice,$hash2=Opal.hash2,$send=Opal.send,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,+,updated,s,==,include?,[],type,new_temp,freeze,call,fetch,error,process"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"LogicalOperatorAssignment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$reset_tmp_counter!",(function(){return $class_variable_set($nesting[0],"@@counter",0)}),0),$defs(self,"$new_temp",(function(){var $ret_or_1=nil;return $class_variable_set($nesting[0],"@@counter",$truthy(null!=$nesting[0].$$cvars["@@counter"]?"class variable":nil)&&$truthy($ret_or_1=$class_variable_get($nesting[0],"@@counter",!1))?$ret_or_1:0),$class_variable_set($nesting[0],"@@counter",$rb_plus($class_variable_get($nesting[0],"@@counter",!1),1)),"$logical_op_recvr_tmp_"+$class_variable_get($nesting[0],"@@counter",!1)}),0),$const_set($nesting[0],"GET_SET",$lambda((function $LogicalOperatorAssignment$2(get_type,set_type){return null==get_type&&(get_type=nil),null==set_type&&(set_type=nil),$lambda((function $$3(lhs,rhs,root_type){var get_node,self=null==$$3.$$s?this:$$3.$$s,condition_node=nil,defined_node=nil;return null==lhs&&(lhs=nil),null==rhs&&(rhs=nil),null==root_type&&(root_type=nil),get_node=lhs.$updated(get_type),condition_node=self.$s(root_type,get_node,rhs),$truthy(["const","cvar"]["$include?"](get_type))&&$eqeq(root_type,"or")&&(defined_node=self.$s("defined?",get_node),condition_node=self.$s("if",defined_node,self.$s("begin",condition_node),rhs)),lhs.$updated(set_type,[].concat($to_a(lhs)).concat([condition_node]))}),{$$arity:3,$$s:null==$LogicalOperatorAssignment$2.$$s?this:$LogicalOperatorAssignment$2.$$s})}),{$$arity:2,$$s:self})),$const_set($nesting[0],"LocalVariableHandler",$$("GET_SET")["$[]"]("lvar","lvasgn")),$const_set($nesting[0],"InstanceVariableHandler",$$("GET_SET")["$[]"]("ivar","ivasgn")),$const_set($nesting[0],"ConstantHandler",$$("GET_SET")["$[]"]("const","casgn")),$const_set($nesting[0],"GlobalVariableHandler",$$("GET_SET")["$[]"]("gvar","gvasgn")),$const_set($nesting[0],"ClassVariableHandler",$$("GET_SET")["$[]"]("cvar","cvasgn")),function($base,$super){var self=$klass($base,$super,"SendHandler");$defs(self,"$call",(function(lhs,rhs,root_type){var $a,args,call_reader,call_writer,get_or_set,recvr=nil,reader_method=nil,recvr_tmp=nil,cache_recvr=nil,writer_method=nil;return recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],reader_method=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(recvr)&&$eqeq(recvr.$type(),"send")&&(recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp)),writer_method=reader_method+"=",call_reader=lhs.$updated("send",[recvr,reader_method].concat($to_a(args))),call_writer=lhs.$updated("send",[recvr,writer_method].concat($to_a(args)).concat([rhs])),get_or_set=this.$s(root_type,call_reader,call_writer),$truthy(cache_recvr)?this.$s("begin",cache_recvr,get_or_set):get_or_set}),3)}($nesting[0],self),function($base,$super){var self=$klass($base,$super,"ConditionalSendHandler");$defs(self,"$call",(function(lhs,rhs,root_type){var $a,args,recvr_tmp,cache_recvr,recvr_is_nil,plain_send,plain_or_asgn,recvr=nil,meth=nil;return root_type+="_asgn",recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp),recvr_is_nil=this.$s("send",recvr,"nil?"),plain_send=lhs.$updated("send",[recvr,meth].concat($to_a(args))),plain_or_asgn=this.$s(root_type,plain_send,rhs),this.$s("begin",cache_recvr,this.$s("if",recvr_is_nil,this.$s("nil"),plain_or_asgn))}),3)}($nesting[0],self),$const_set($nesting[0],"HANDLERS",$hash2(["lvasgn","ivasgn","casgn","gvasgn","cvasgn","send","csend"],{lvasgn:$$("LocalVariableHandler"),ivasgn:$$("InstanceVariableHandler"),casgn:$$("ConstantHandler"),gvasgn:$$("GlobalVariableHandler"),cvasgn:$$("ClassVariableHandler"),send:$$("SendHandler"),csend:$$("ConditionalSendHandler")}).$freeze()),$def(self,"$on_or_asgn",(function(node){var $a,rhs,result,lhs=nil;return $a=[].concat($to_a(node)),lhs=null==$a[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],result=$send($$("HANDLERS"),"fetch",[lhs.$type()],(function $$4(){return(null==$$4.$$s?this:$$4.$$s).$error("cannot handle LHS type: "+lhs.$type())}),{$$arity:0,$$s:this}).$call(lhs,rhs,"or"),this.$process(result)}),1),$def(self,"$on_and_asgn",(function(node){var $a,rhs,result,lhs=nil;return $a=[].concat($to_a(node)),lhs=null==$a[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],result=$send($$("HANDLERS"),"fetch",[lhs.$type()],(function $$5(){return(null==$$5.$$s?this:$$5.$$s).$error("cannot handle LHS type: "+lhs.$type())}),{$$arity:0,$$s:this}).$call(lhs,rhs,"and"),this.$process(result)}),1),$const_set($nesting[0],"ASSIGNMENT_STRING_NODE",self.$s("str","assignment")),$def(self,"$on_defined?",(function $LogicalOperatorAssignment_on_defined$ques$6(node){var $a,inner=nil;return delete $LogicalOperatorAssignment_on_defined$ques$6.$$p,inner=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$truthy(["or_asgn","and_asgn"]["$include?"](inner.$type()))?$$("ASSIGNMENT_STRING_NODE"):$send2(this,$find_super(this,"on_defined?",$LogicalOperatorAssignment_on_defined$ques$6,!1,!0),"on_defined?",[node],null)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/binary_operator_assignment"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$class_variable_set=Opal.class_variable_set,$defs=Opal.defs,$truthy=Opal.truthy,$class_variable_get=Opal.class_variable_get,$rb_plus=Opal.rb_plus,$const_set=Opal.const_set,$lambda=Opal.lambda,$to_a=Opal.to_a,$slice=Opal.slice,$eqeq=Opal.eqeq,$hash2=Opal.hash2,$send=Opal.send,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,+,updated,[],==,type,new_temp,s,freeze,call,fetch,error,process"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"BinaryOperatorAssignment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$reset_tmp_counter!",(function(){return $class_variable_set($nesting[0],"@@counter",0)}),0),$defs(self,"$new_temp",(function(){var $ret_or_1=nil;return $class_variable_set($nesting[0],"@@counter",$truthy(null!=$nesting[0].$$cvars["@@counter"]?"class variable":nil)&&$truthy($ret_or_1=$class_variable_get($nesting[0],"@@counter",!1))?$ret_or_1:0),$class_variable_set($nesting[0],"@@counter",$rb_plus($class_variable_get($nesting[0],"@@counter",!1),1)),"$binary_op_recvr_tmp_"+$class_variable_get($nesting[0],"@@counter",!1)}),0),$const_set($nesting[0],"GET_SET",$lambda((function(get_type,set_type){return null==get_type&&(get_type=nil),null==set_type&&(set_type=nil),$lambda((function(node,lhs,operation,rhs){var get_node,set_node;return null==node&&(node=nil),null==lhs&&(lhs=nil),null==operation&&(operation=nil),null==rhs&&(rhs=nil),get_node=lhs.$updated(get_type),set_node=node.$updated("send",[get_node,operation,rhs]),lhs.$updated(set_type,[].concat($to_a(lhs)).concat([set_node]))}),4)}),2)),$const_set($nesting[0],"LocalVariableHandler",$$("GET_SET")["$[]"]("lvar","lvasgn")),$const_set($nesting[0],"InstanceVariableHandler",$$("GET_SET")["$[]"]("ivar","ivasgn")),$const_set($nesting[0],"ConstantHandler",$$("GET_SET")["$[]"]("const","casgn")),$const_set($nesting[0],"GlobalVariableHandler",$$("GET_SET")["$[]"]("gvar","gvasgn")),$const_set($nesting[0],"ClassVariableHandler",$$("GET_SET")["$[]"]("cvar","cvasgn")),function($base,$super){var self=$klass($base,$super,"SendHandler");$defs(self,"$call",(function(node,lhs,operation,rhs){var $a,args,call_reader,call_op,call_writer,recvr=nil,reader_method=nil,recvr_tmp=nil,cache_recvr=nil,writer_method=nil;return recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],reader_method=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(recvr)&&$eqeq(recvr.$type(),"send")&&(recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp)),writer_method=reader_method+"=",call_reader=lhs.$updated("send",[recvr,reader_method].concat($to_a(args))),call_op=node.$updated("send",[call_reader,operation,rhs]),call_writer=lhs.$updated("send",[recvr,writer_method].concat($to_a(args)).concat([call_op])),$truthy(cache_recvr)?node.$updated("begin",[cache_recvr,call_writer]):call_writer}),4)}($nesting[0],self),function($base,$super){var self=$klass($base,$super,"ConditionalSendHandler");$defs(self,"$call",(function(node,lhs,operation,rhs){var $a,args,recvr_tmp,cache_recvr,recvr_is_nil,plain_send,plain_op_asgn,recvr=nil,meth=nil;return recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp),recvr_is_nil=this.$s("send",recvr,"nil?"),plain_send=lhs.$updated("send",[recvr,meth].concat($to_a(args))),plain_op_asgn=node.$updated("op_asgn",[plain_send,operation,rhs]),this.$s("begin",cache_recvr,this.$s("if",recvr_is_nil,this.$s("nil"),plain_op_asgn))}),4)}($nesting[0],self),$const_set($nesting[0],"HANDLERS",$hash2(["lvasgn","ivasgn","casgn","gvasgn","cvasgn","send","csend"],{lvasgn:$$("LocalVariableHandler"),ivasgn:$$("InstanceVariableHandler"),casgn:$$("ConstantHandler"),gvasgn:$$("GlobalVariableHandler"),cvasgn:$$("ClassVariableHandler"),send:$$("SendHandler"),csend:$$("ConditionalSendHandler")}).$freeze()),$def(self,"$on_op_asgn",(function(node){var $a,op,rhs,result,lhs=nil;return $a=[].concat($to_a(node)),lhs=null==$a[0]?nil:$a[0],op=null==$a[1]?nil:$a[1],rhs=null==$a[2]?nil:$a[2],result=$send($$("HANDLERS"),"fetch",[lhs.$type()],(function $$4(){return(null==$$4.$$s?this:$$4.$$s).$error("cannot handle LHS type: "+lhs.$type())}),{$$arity:0,$$s:this}).$call(node,lhs,op,rhs),this.$process(result)}),1),$const_set($nesting[0],"ASSIGNMENT_STRING_NODE",self.$s("str","assignment")),$def(self,"$on_defined?",(function $BinaryOperatorAssignment_on_defined$ques$5(node){var $a,inner=nil;return delete $BinaryOperatorAssignment_on_defined$ques$5.$$p,inner=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$eqeq(inner.$type(),"op_asgn")?$$("ASSIGNMENT_STRING_NODE"):$send2(this,$find_super(this,"on_defined?",$BinaryOperatorAssignment_on_defined$ques$5,!1,!0),"on_defined?",[node],null)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/hashes/key_duplicates_rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$Opal=Opal.Opal;return Opal.add_stubs("require,new,include?,type,<<,==,process_regular_node,updated,inspect,warn"),self.$require("opal/rewriters/base"),self.$require("set"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Hashes")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"KeyDuplicatesRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.keys=nil,$def(self,"$initialize",(function(){return this.keys=$$("UniqKeysSet").$new()}),0),$def(self,"$on_hash",(function $$on_hash(node){var $a,self=this,previous_keys=nil;return delete $$on_hash.$$p,function(){try{return $a=[self.keys,$$("UniqKeysSet").$new()],previous_keys=$a[0],self.keys=$a[1],$send2(self,$find_super(self,"on_hash",$$on_hash,!1,!0),"on_hash",[node],null)}finally{self.keys=previous_keys}}()}),1),$def(self,"$on_pair",(function $$on_pair(node){var $a,key=nil;return delete $$on_pair.$$p,key=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$truthy(["str","sym"]["$include?"](key.$type()))&&this.keys["$<<"](key),$send2(this,$find_super(this,"on_pair",$$on_pair,!1,!0),"on_pair",[node],null)}),1),$def(self,"$on_kwsplat",(function(node){var $a,hash=nil;return hash=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$eqeq(hash.$type(),"hash")&&(hash=this.$process_regular_node(hash)),node.$updated(nil,[hash])}),1),function($base,$super,$parent_nesting){var self=$klass($base,null,"UniqKeysSet"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.set=nil,$def(self,"$initialize",(function(){return this.set=$$("Set").$new()}),0),$def(self,"$<<",(function(element){var $a,key=nil;return $truthy(this.set["$include?"](element))?(key=null==($a=[].concat($to_a(element)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],key=$eqeq(element.$type(),"str")?key.$inspect():":"+key,$$("Kernel").$warn("warning: key "+key+" is duplicated and overwritten")):this.set["$<<"](element)}),1)}($nesting[0],0,$nesting)}($nesting[0],$$$($$$($Opal,"Rewriters"),"Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/dump_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$hash2=Opal.hash2,$def=Opal.def;return Opal.add_stubs("require,updated"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DumpArgs");return $def(self,"$on_def",(function $$on_def(node){var $a,args;return delete $$on_def.$$p,node=$send2(this,$find_super(this,"on_def",$$on_def,!1,!0),"on_def",[node],null),null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))}),1),$def(self,"$on_defs",(function $$on_defs(node){var $a,args;return delete $$on_defs.$$p,node=$send2(this,$find_super(this,"on_defs",$$on_defs,!1,!0),"on_defs",[node],null),null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],args=null==$a[2]?nil:$a[2],null==$a[3]?nil:$a[3],node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))}),1),$def(self,"$on_iter",(function $$on_iter(node){var $a,args;return delete $$on_iter.$$p,node=$send2(this,$find_super(this,"on_iter",$$on_iter,!1,!0),"on_iter",[node],null),args=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/mlhs_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$def=Opal.def,$rb_plus=Opal.rb_plus,$send=Opal.send,$eqeq=Opal.eqeq,$hash2=Opal.hash2;return Opal.add_stubs("require,new,updated,rewritten,initialization,s,prepend_to_body,attr_reader,split!,+,each,children,==,type,new_mlhs_tmp,process,<<,length,[],empty?"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"MlhsArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_def",(function $$on_def(node){var $a,mid,args=nil,body=nil,arguments$=nil,$ret_or_1=nil;return delete $$on_def.$$p,node=$send2(this,$find_super(this,"on_def",$$on_def,!1,!0),"on_def",[node],null),mid=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],arguments$=$$("Arguments").$new(args),args=args.$updated(nil,arguments$.$rewritten()),$truthy(arguments$.$initialization())&&(body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),body=this.$prepend_to_body(body,arguments$.$initialization())),node.$updated(nil,[mid,args,body])}),1),$def(self,"$on_defs",(function $$on_defs(node){var $a,recv,mid,args=nil,body=nil,arguments$=nil,$ret_or_1=nil;return delete $$on_defs.$$p,node=$send2(this,$find_super(this,"on_defs",$$on_defs,!1,!0),"on_defs",[node],null),recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],mid=null==$a[1]?nil:$a[1],args=null==$a[2]?nil:$a[2],body=null==$a[3]?nil:$a[3],arguments$=$$("Arguments").$new(args),args=args.$updated(nil,arguments$.$rewritten()),$truthy(arguments$.$initialization())&&(body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),body=this.$prepend_to_body(body,arguments$.$initialization())),node.$updated(nil,[recv,mid,args,body])}),1),$def(self,"$on_iter",(function $$on_iter(node){var $a,args=nil,body=nil,arguments$=nil,$ret_or_1=nil;return delete $$on_iter.$$p,node=$send2(this,$find_super(this,"on_iter",$$on_iter,!1,!0),"on_iter",[node],null),args=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],body=null==$a[1]?nil:$a[1],arguments$=$$("Arguments").$new(args),args=args.$updated(nil,arguments$.$rewritten()),$truthy(arguments$.$initialization())&&(body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),body=this.$prepend_to_body(body,arguments$.$initialization())),node.$updated(nil,[args,body])}),1),function($base,$super,$parent_nesting){var self=$klass($base,$super,"Arguments"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.counter=$proto.args=$proto.initialization=nil,self.$attr_reader("rewritten","initialization"),$def(self,"$initialize",(function(args){return this.args=args,this.rewritten=[],this.initialization=[],this.rewriter=$$("MlhsRewriter").$new(),this["$split!"]()}),1),$def(self,"$reset_tmp_counter!",(function(){return this.counter=0}),0),$def(self,"$new_mlhs_tmp",(function(){var $ret_or_1;return this.counter=$truthy($ret_or_1=this.counter)?$ret_or_1:0,this.counter=$rb_plus(this.counter,1),"$mlhs_tmp"+this.counter}),0),$def(self,"$split!",(function(){return $send(this.args.$children(),"each",[],(function $$3(arg){var self=null==$$3.$$s?this:$$3.$$s,var_name=nil,rhs=nil,mlhs=nil;return null==self.rewriter&&(self.rewriter=nil),null==self.initialization&&(self.initialization=nil),null==self.rewritten&&(self.rewritten=nil),null==arg&&(arg=nil),$eqeq(arg.$type(),"mlhs")?(var_name=self.$new_mlhs_tmp(),rhs=self.$s("lvar",var_name),mlhs=self.rewriter.$process(arg),self.initialization["$<<"](self.$s("masgn",mlhs,rhs)),self.rewritten["$<<"](self.$s("arg",var_name).$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:var_name})})))):self.rewritten["$<<"](arg)}),{$$arity:1,$$s:this}),$eqeq(this.initialization.$length(),1)?this.initialization=this.initialization["$[]"](0):$truthy(this.initialization["$empty?"]())?this.initialization=nil:this.initialization=$send(this,"s",["begin"].concat($to_a(this.initialization)))}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"MlhsRewriter");return $def(self,"$on_arg",(function(node){return node.$updated("lvasgn")}),1),$def(self,"$on_restarg",(function(node){var name;return name=node.$children()["$[]"](0),$truthy(name)?this.$s("splat",node.$updated("lvasgn")):this.$s("splat")}),1)}($nesting[0],$$("Base"))}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/arguments"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("attr_reader,each,===,type,<<,any?,raise,!,nil?,has_any_kwargs?,can_inline_kwargs?,empty?"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,null,"Arguments"),$proto=self.$$prototype;return $proto.restarg=$proto.postargs=$proto.kwargs=$proto.kwoptargs=$proto.kwrestarg=$proto.optargs=nil,self.$attr_reader("args","optargs","restarg","postargs","kwargs","kwoptargs","kwrestarg","kwnilarg","shadowargs","blockarg"),$def(self,"$initialize",(function(args){return this.args=[],this.optargs=[],this.restarg=nil,this.postargs=[],this.kwargs=[],this.kwoptargs=[],this.kwrestarg=nil,this.kwnilarg=!1,this.shadowargs=[],this.blockarg=nil,$send(args,"each",[],(function $$1(arg){var $ret_or_1,self=null==$$1.$$s?this:$$1.$$s;return null==self.optargs&&(self.optargs=nil),null==self.restarg&&(self.restarg=nil),null==self.postargs&&(self.postargs=nil),null==self.args&&(self.args=nil),null==self.kwargs&&(self.kwargs=nil),null==self.kwoptargs&&(self.kwoptargs=nil),null==self.shadowargs&&(self.shadowargs=nil),null==arg&&(arg=nil),$eqeqeq("arg",$ret_or_1=arg.$type())||$eqeqeq("mlhs",$ret_or_1)?($truthy(self.restarg)||$truthy(self.optargs["$any?"]())?self.postargs:self.args)["$<<"](arg):$eqeqeq("optarg",$ret_or_1)?self.optargs["$<<"](arg):$eqeqeq("restarg",$ret_or_1)?self.restarg=arg:$eqeqeq("kwarg",$ret_or_1)?self.kwargs["$<<"](arg):$eqeqeq("kwoptarg",$ret_or_1)?self.kwoptargs["$<<"](arg):$eqeqeq("kwnilarg",$ret_or_1)?self.kwnilarg=!0:$eqeqeq("kwrestarg",$ret_or_1)?self.kwrestarg=arg:$eqeqeq("shadowarg",$ret_or_1)?self.shadowargs["$<<"](arg):$eqeqeq("blockarg",$ret_or_1)?self.blockarg=arg:self.$raise("Unsupported arg type "+arg.$type())}),{$$arity:1,$$s:this})}),1),$def(self,"$has_post_args?",(function(){var $ret_or_1,$ret_or_2=nil;return $truthy($ret_or_1=$truthy($ret_or_2=this.restarg["$nil?"]()["$!"]())?$ret_or_2:this.postargs["$any?"]())?$ret_or_1:$truthy($ret_or_2=this["$has_any_kwargs?"]())?this["$can_inline_kwargs?"]()["$!"]():$ret_or_2}),0),$def(self,"$has_any_kwargs?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.kwargs["$any?"]())?$ret_or_2:this.kwoptargs["$any?"]())?$ret_or_1:this.kwrestarg["$nil?"]()["$!"]()}),0),$def(self,"$can_inline_kwargs?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.optargs["$empty?"]())?this.restarg["$nil?"]():$ret_or_2)?this.postargs["$empty?"]():$ret_or_1}),0)}([$module($base,"Rewriters")].concat($parent_nesting)[0])}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/inline_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$hash2=Opal.hash2,$def=Opal.def,$const_set=Opal.const_set,$send=Opal.send,$eqeq=Opal.eqeq,$Opal=Opal.Opal;return Opal.add_stubs("require,s,new,updated,inline,prepend_to_body,initialization,attr_reader,freeze,children,each,send,any?,blockarg,<<,shadowargs,args,==,[],has_post_args?,length,has_any_kwargs?,can_inline_kwargs?,kwargs,kwoptargs,kwrestarg,postargs,optargs,args_to_keep,restarg"),self.$require("opal/rewriters/base"),self.$require("opal/rewriters/arguments"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"InlineArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_def",(function $$on_def(node){var $a,mid,$ret_or_1,inline_args,args=nil,body=nil,initializer=nil;return delete $$on_def.$$p,node=$send2(this,$find_super(this,"on_def",$$on_def,!1,!0),"on_def",[node],null),mid=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),initializer=$$("Initializer").$new(args,$hash2(["type"],{type:"def"})),inline_args=args.$updated(nil,initializer.$inline()),body=this.$prepend_to_body(body,initializer.$initialization()),node.$updated(nil,[mid,inline_args,body])}),1),$def(self,"$on_defs",(function $$on_defs(node){var $a,recv,mid,$ret_or_1,inline_args,args=nil,body=nil,initializer=nil;return delete $$on_defs.$$p,node=$send2(this,$find_super(this,"on_defs",$$on_defs,!1,!0),"on_defs",[node],null),recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],mid=null==$a[1]?nil:$a[1],args=null==$a[2]?nil:$a[2],body=null==$a[3]?nil:$a[3],body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),initializer=$$("Initializer").$new(args,$hash2(["type"],{type:"defs"})),inline_args=args.$updated(nil,initializer.$inline()),body=this.$prepend_to_body(body,initializer.$initialization()),node.$updated(nil,[recv,mid,inline_args,body])}),1),$def(self,"$on_iter",(function $$on_iter(node){var $a,$ret_or_1,inline_args,args=nil,body=nil,initializer=nil;return delete $$on_iter.$$p,node=$send2(this,$find_super(this,"on_iter",$$on_iter,!1,!0),"on_iter",[node],null),args=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],body=null==$a[1]?nil:$a[1],body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),initializer=$$("Initializer").$new(args,$hash2(["type"],{type:"iter"})),inline_args=args.$updated(nil,initializer.$inline()),body=this.$prepend_to_body(body,initializer.$initialization()),node.$updated(nil,[inline_args,body])}),1),function($base,$super,$parent_nesting){var self=$klass($base,$super,"Initializer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.initialization=$proto.args=$proto.inline=nil,self.$attr_reader("inline","initialization"),$const_set($nesting[0],"STEPS",["extract_blockarg","initialize_shadowargs","extract_args","prepare_post_args","prepare_kwargs","extract_optargs","extract_restarg","extract_post_args","extract_kwargs","extract_kwoptargs","extract_kwrestarg"].$freeze()),$def(self,"$initialize",(function(args,$kwargs){var type;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");if(!Opal.hasOwnProperty.call($kwargs.$$smap,"type"))throw Opal.ArgumentError.$new("missing keyword: type");return type=$kwargs.$$smap.type,this.args=$$("Arguments").$new(args.$children()),this.inline=[],this.initialization=[],this.type=type,this.underscore_found=!1,$send($$("STEPS"),"each",[],(function $$1(step){return null==step&&(step=nil),(null==$$1.$$s?this:$$1.$$s).$send(step)}),{$$arity:1,$$s:this}),$truthy(this.initialization["$any?"]())?this.initialization=$send(this,"s",["begin"].concat($to_a(this.initialization))):this.initialization=nil}),2),$def(self,"$extract_blockarg",(function(){var arg=nil;return $truthy(arg=this.args.$blockarg())?this.initialization["$<<"](arg.$updated("extract_blockarg")):nil}),0),$def(self,"$initialize_shadowargs",(function(){return $send(this.args.$shadowargs(),"each",[],(function $$2(arg){var self=null==$$2.$$s?this:$$2.$$s;return null==self.initialization&&(self.initialization=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("initialize_shadowarg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_args",(function(){return $send(this.args.$args(),"each",[],(function $$3(arg){var self=null==$$3.$$s?this:$$3.$$s;return null==self.type&&(self.type=nil),null==self.initialization&&(self.initialization=nil),null==self.underscore_found&&(self.underscore_found=nil),null==self.inline&&(self.inline=nil),null==arg&&(arg=nil),$eqeq(self.type,"iter")&&(self.initialization["$<<"](arg.$updated("initialize_iter_arg")),$eqeq(arg.$children()["$[]"](0),"_")&&($truthy(self.underscore_found)&&(arg=self.$s("fake_arg")),self.underscore_found=!0)),self.inline["$<<"](arg)}),{$$arity:1,$$s:this})}),0),$def(self,"$prepare_post_args",(function(){return $truthy(this.args["$has_post_args?"]())?this.initialization["$<<"](this.$s("prepare_post_args",this.args.$args().$length())):nil}),0),$def(self,"$prepare_kwargs",(function(){return $truthy(this.args["$has_any_kwargs?"]())?($truthy(this.args["$can_inline_kwargs?"]())?this.inline["$<<"](this.$s("arg","$kwargs")):(this.initialization["$<<"](this.$s("extract_kwargs")),this.inline["$<<"](this.$s("fake_arg"))),this.initialization["$<<"](this.$s("ensure_kwargs_are_kwargs"))):nil}),0),$def(self,"$extract_kwargs",(function(){return $send(this.args.$kwargs(),"each",[],(function $$4(arg){var self=null==$$4.$$s?this:$$4.$$s;return null==self.initialization&&(self.initialization=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("extract_kwarg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_kwoptargs",(function(){return $send(this.args.$kwoptargs(),"each",[],(function $$5(arg){var self=null==$$5.$$s?this:$$5.$$s;return null==self.initialization&&(self.initialization=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("extract_kwoptarg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_kwrestarg",(function(){var arg=nil;return $truthy(arg=this.args.$kwrestarg())?this.initialization["$<<"](arg.$updated("extract_kwrestarg")):nil}),0),$def(self,"$extract_post_args",(function(){return $send(this.args.$postargs(),"each",[],(function $$6(arg){var self=null==$$6.$$s?this:$$6.$$s;return null==self.initialization&&(self.initialization=nil),null==self.inline&&(self.inline=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("extract_post_arg")),self.inline["$<<"](self.$s("fake_arg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_optargs",(function(){var has_post_args;return has_post_args=this.args["$has_post_args?"](),$send(this.args.$optargs(),"each",[],(function $$7(arg){var $a,self=null==$$7.$$s?this:$$7.$$s,arg_name=nil,default_value=nil;return null==self.initialization&&(self.initialization=nil),null==self.inline&&(self.inline=nil),null==arg&&(arg=nil),$truthy(has_post_args)?(arg_name=null==($a=[].concat($to_a(arg)))[0]?nil:$a[0],default_value=null==$a[1]?nil:$a[1],self.initialization["$<<"](arg.$updated("extract_post_optarg",[arg_name,default_value,self.$args_to_keep()])),self.inline["$<<"](self.$s("fake_arg"))):(self.inline["$<<"](arg.$updated("arg")),self.initialization["$<<"](arg.$updated("extract_optarg")))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_restarg",(function(){var arg=nil,arg_name=nil;return $truthy(arg=this.args.$restarg())?(arg_name=arg.$children()["$[]"](0),this.initialization["$<<"](arg.$updated("extract_restarg",[arg_name,this.$args_to_keep()])),this.inline["$<<"](this.$s("fake_arg"))):nil}),0),$def(self,"$args_to_keep",(function(){return this.args.$postargs().$length()}),0)}($nesting[0],$$$($$$($Opal,"Rewriters"),"Base"),$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/numblocks"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_ary=Opal.to_ary,$send=Opal.send,$to_a=Opal.to_a,$def=Opal.def;return Opal.add_stubs("require,children,s,gen_args,map"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Numblocks");return $def(self,"$on_numblock",(function(node){var $a,$b,left,arg_count,right;return $b=node.$children(),left=null==($a=$to_ary($b))[0]?nil:$a[0],arg_count=null==$a[1]?nil:$a[1],right=null==$a[2]?nil:$a[2],this.$s("block",left,$send(this,"s",["args"].concat($to_a(this.$gen_args(arg_count)))),right)}),1),$def(self,"$gen_args",(function(arg_count){return $send(Opal.Range.$new(1,arg_count,!1),"map",[],(function $$1(i){return null==i&&(i=nil),(null==$$1.$$s?this:$$1.$$s).$s("arg","_"+i)}),{$$arity:1,$$s:this})}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/returnable_logic"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$def=Opal.def,$rb_minus=Opal.rb_minus,$to_a=Opal.to_a,$send=Opal.send,$send2=Opal.send2,$find_super=Opal.find_super,$slice=Opal.slice,$eqeq=Opal.eqeq;return Opal.add_stubs("require,+,-,children,[]=,meta,s,next_tmp,build_if_from_when,free_tmp,[],process,updated,==,count,first,delete,private,build_rule_from_parts,empty?,type"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ReturnableLogic");return self.$$prototype.counter=nil,$def(self,"$next_tmp",(function(){var $ret_or_1;return this.counter=$truthy($ret_or_1=this.counter)?$ret_or_1:0,this.counter=$rb_plus(this.counter,1),"$ret_or_"+this.counter}),0),$def(self,"$free_tmp",(function(){return this.counter=$rb_minus(this.counter,1)}),0),$def(self,"$reset_tmp_counter!",(function(){return this.counter=nil}),0),$def(self,"$on_if",(function $$on_if(node){var $a,$yield=$$on_if.$$p||nil,test=nil,$writer=nil;return delete $$on_if.$$p,test=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],$truthy(test)&&($writer=["if_test",!0],$send(test.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$send2(this,$find_super(this,"on_if",$$on_if,!1,!0),"on_if",[node],$yield)}),1),$def(self,"$on_case",(function(node){var $a,$b,lhs,whens,$ret_or_1,out,els=nil,lhs_tmp=nil;return lhs=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],$b=($b=$a.length-1)<1?1:$b,whens=$slice.call($a,1,$b),els=null==$a[$b]?nil:$a[$b],els=$truthy($ret_or_1=els)?$ret_or_1:this.$s("nil"),$truthy(lhs)&&(lhs_tmp=this.$next_tmp()),out=this.$build_if_from_when(node,lhs,lhs_tmp,whens,els),$truthy(lhs)&&this.$free_tmp(),out}),1),$def(self,"$on_or",(function(node){var $a,lhs=nil,rhs=nil,$writer=nil,out=nil,lhs_tmp=nil;return lhs=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],$truthy(node.$meta()["$[]"]("if_test"))?($writer=["if_test",($writer=["if_test",!0],$send(rhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])],$send(lhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],out=this.$process(node.$updated("if",[lhs,this.$s("true"),rhs]))):(lhs_tmp=this.$next_tmp(),out=this.$process(node.$updated("if",[this.$s("lvasgn",lhs_tmp,lhs),this.$s("js_tmp",lhs_tmp),rhs])),this.$free_tmp()),out}),1),$def(self,"$on_and",(function(node){var $a,lhs=nil,rhs=nil,$writer=nil,out=nil,lhs_tmp=nil;return lhs=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],$truthy(node.$meta()["$[]"]("if_test"))?($writer=["if_test",($writer=["if_test",!0],$send(rhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])],$send(lhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],out=this.$process(node.$updated("if",[lhs,rhs,this.$s("false")]))):(lhs_tmp=this.$next_tmp(),out=this.$process(node.$updated("if",[this.$s("lvasgn",lhs_tmp,lhs),rhs,this.$s("js_tmp",lhs_tmp)])),this.$free_tmp()),out}),1),$def(self,"$on_begin",(function $$on_begin(node){var $yield=$$on_begin.$$p||nil,$writer=nil;return delete $$on_begin.$$p,$truthy(node.$meta()["$[]"]("if_test"))&&$eqeq(node.$children().$count(),1)&&($writer=["if_test",!0],$send(node.$children().$first().$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),node.$meta().$delete("if_test"),$send2(this,$find_super(this,"on_begin",$$on_begin,!1,!0),"on_begin",[node],$yield)}),1),self.$private(),$def(self,"$build_if_from_when",(function(node,lhs,lhs_tmp,whens,els){var $a,$b,parts,expr,rule,first_when=nil,next_whens=nil;return first_when=null==($a=[].concat($to_a(whens)))[0]?nil:$a[0],next_whens=$slice.call($a,1),$b=($b=($a=[].concat($to_a(first_when.$children()))).length-1)<0?0:$b,parts=$slice.call($a,0,$b),expr=null==$a[$b]?nil:$a[$b],rule=this.$build_rule_from_parts(node,lhs,lhs_tmp,parts),first_when.$updated("if",[rule,this.$process(expr),$truthy(next_whens["$empty?"]())?this.$process(els):this.$build_if_from_when(nil,nil,lhs_tmp,next_whens,els)])}),5),$def(self,"$build_rule_from_parts",(function(node,lhs,lhs_tmp,parts){var $a,subrule,first_part=nil,next_parts=nil,splat_on=nil,iter_val=nil,block=nil;return lhs=$truthy(node)&&$truthy(lhs_tmp)?node.$updated("lvasgn",[lhs_tmp,this.$process(lhs)]):this.$s("js_tmp",lhs_tmp),first_part=null==($a=[].concat($to_a(parts)))[0]?nil:$a[0],next_parts=$slice.call($a,1),subrule=$eqeq(first_part.$type(),"splat")?(splat_on=first_part.$children().$first(),iter_val=this.$next_tmp(),block=this.$s("send",this.$process(splat_on),"any?",this.$s("iter",this.$s("args",this.$s("arg",iter_val)),this.$build_rule_from_parts(nil,nil,lhs_tmp,[this.$s("lvar",iter_val)]))),$truthy(node)&&$truthy(lhs_tmp)?this.$s("begin",lhs,block):block):$truthy(lhs_tmp)?this.$s("send",this.$process(first_part),"===",lhs):this.$process(first_part),$truthy(next_parts["$empty?"]())?subrule:this.$s("if",subrule,this.$s("true"),this.$build_rule_from_parts(nil,nil,lhs_tmp,next_parts))}),4)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/forward_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$range=Opal.range,$to_a=Opal.to_a,$send2=Opal.send2,$find_super=Opal.find_super,$neqeq=Opal.neqeq;return Opal.add_stubs("require,process,s,==,type,last,children,[],updated,!=,class"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ForwardArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_forward_args",(function(_node){return this.$process(this.$s("args",this.$s("forward_arg","$")))}),1),$def(self,"$on_args",(function $$on_args(node){var $yield=$$on_args.$$p||nil,prev_children=nil;return delete $$on_args.$$p,$truthy(node.$children().$last())&&$eqeq(node.$children().$last().$type(),"forward_arg")?(prev_children=node.$children()["$[]"]($range(0,-2,!1)),node.$updated(nil,[].concat($to_a(prev_children)).concat([this.$s("restarg","$fwd_rest"),this.$s("blockarg","$fwd_block")]))):$send2(this,$find_super(this,"on_args",$$on_args,!1,!0),"on_args",[node],$yield)}),1),$def(self,"$on_send",(function $$on_send(node){var $yield=$$on_send.$$p||nil,prev_children=nil;return delete $$on_send.$$p,$truthy(node.$children().$last())&&$neqeq(node.$children().$last().$class(),$$("Symbol"))&&$eqeq(node.$children().$last().$type(),"forwarded_args")?(prev_children=node.$children()["$[]"]($range(0,-2,!1)),node.$updated(nil,[].concat($to_a(prev_children)).concat([this.$s("splat",this.$s("lvar","$fwd_rest")),this.$s("block_pass",this.$s("lvar","$fwd_block"))]))):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("require,<<,list,delete,use,disabled?,class,each,new,process"),self.$require("opal/rewriters/opal_engine_check"),self.$require("opal/rewriters/for_rewriter"),self.$require("opal/rewriters/explicit_writer_return"),self.$require("opal/rewriters/js_reserved_words"),self.$require("opal/rewriters/block_to_iter"),self.$require("opal/rewriters/dot_js_syntax"),self.$require("opal/rewriters/pattern_matching"),self.$require("opal/rewriters/logical_operator_assignment"),self.$require("opal/rewriters/binary_operator_assignment"),self.$require("opal/rewriters/hashes/key_duplicates_rewriter"),self.$require("opal/rewriters/dump_args"),self.$require("opal/rewriters/mlhs_args"),self.$require("opal/rewriters/inline_args"),self.$require("opal/rewriters/numblocks"),self.$require("opal/rewriters/returnable_logic"),self.$require("opal/rewriters/forward_args"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Rewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.sexp=nil,function(self,$parent_nesting){$def(self,"$list",(function(){var $ret_or_1;return null==this.list&&(this.list=nil),this.list=$truthy($ret_or_1=this.list)?$ret_or_1:[]}),0),$def(self,"$use",(function(rewriter){return this.$list()["$<<"](rewriter)}),1),$def(self,"$delete",(function(rewriter){return this.$list().$delete(rewriter)}),1),$def(self,"$disable",(function $$disable(){var $yield=$$disable.$$p||nil,self=this;return delete $$disable.$$p,function(){try{return self.disabled=!0,Opal.yieldX($yield,[])}finally{self.disabled=!1}}()}),0),$def(self,"$disabled?",(function(){var $a;return null==this.disabled&&(this.disabled=nil),$truthy(null!=($a=this.disabled)&&$a!==nil?"instance-variable":nil)?this.disabled:nil}),0)}(Opal.get_singleton_class(self)),self.$use($$$($$("Rewriters"),"OpalEngineCheck")),self.$use($$$($$("Rewriters"),"ForRewriter")),self.$use($$$($$("Rewriters"),"Numblocks")),self.$use($$$($$("Rewriters"),"ForwardArgs")),self.$use($$$($$("Rewriters"),"BlockToIter")),self.$use($$$($$("Rewriters"),"DotJsSyntax")),self.$use($$$($$("Rewriters"),"PatternMatching")),self.$use($$$($$("Rewriters"),"JsReservedWords")),self.$use($$$($$("Rewriters"),"LogicalOperatorAssignment")),self.$use($$$($$("Rewriters"),"BinaryOperatorAssignment")),self.$use($$$($$("Rewriters"),"ExplicitWriterReturn")),self.$use($$$($$$($$("Rewriters"),"Hashes"),"KeyDuplicatesRewriter")),self.$use($$$($$("Rewriters"),"ReturnableLogic")),self.$use($$$($$("Rewriters"),"DumpArgs")),self.$use($$$($$("Rewriters"),"MlhsArgs")),self.$use($$$($$("Rewriters"),"InlineArgs")),$def(self,"$initialize",(function(sexp){return this.sexp=sexp}),1),$def(self,"$process",(function(){return $truthy(this.$class()["$disabled?"]())||$send(this.$class().$list(),"each",[],(function $$3(rewriter_class){var self=null==$$3.$$s?this:$$3.$$s,rewriter=nil;return null==self.sexp&&(self.sexp=nil),null==rewriter_class&&(rewriter_class=nil),rewriter=rewriter_class.$new(),self.sexp=rewriter.$process(self.sexp)}),{$$arity:1,$$s:this}),this.sexp}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/parser/source_buffer"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$defs=Opal.defs;return function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"SourceBuffer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$recognize_encoding",(function $$recognize_encoding(string){var $ret_or_1,$yield=$$recognize_encoding.$$p||nil;return delete $$recognize_encoding.$$p,$truthy($ret_or_1=$send2(this,$find_super(this,"recognize_encoding",$$recognize_encoding,!1,!0),"recognize_encoding",[string],$yield))?$ret_or_1:$$$($$("Encoding"),"UTF_8")}),1)}($nesting[0],$$$($$$($$$("Parser"),"Source"),"Buffer"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/parser/default_config"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$send2=Opal.send2,$find_super=Opal.find_super,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$lambda=Opal.lambda,$defs=Opal.defs;return Opal.add_stubs("attr_accessor,all_errors_are_fatal=,diagnostics,-,ignore_warnings=,diagnostics_consumer,consumer=,extend,diagnostics_consumer=,new,rewrite,process,default_parser,default_parser_class"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Parser"),$nesting=[self].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"DefaultConfig"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);(function($base){var self=$module($base,"ClassMethods");self.$attr_accessor("diagnostics_consumer"),$def(self,"$default_parser",(function $$default_parser(){var $yield=$$default_parser.$$p||nil,parser=nil,$writer=nil;return delete $$default_parser.$$p,parser=$send2(this,$find_super(this,"default_parser",$$default_parser,!1,!0),"default_parser",[],$yield),$writer=[!0],$send(parser.$diagnostics(),"all_errors_are_fatal=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(parser.$diagnostics(),"ignore_warnings=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[this.$diagnostics_consumer()],$send(parser.$diagnostics(),"consumer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],parser}),0)})($nesting[0]),$defs(self,"$included",(function(klass){var $writer;return klass.$extend($$("ClassMethods")),$writer=[$lambda((function(diagnostic){return null==diagnostic&&(diagnostic=nil),nil}),1)],$send(klass,"diagnostics_consumer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$initialize",(function $$initialize($a){var self=this;return delete $$initialize.$$p,Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",[$$$($$$($$("Opal"),"AST"),"Builder").$new()],null)}),-1),$def(self,"$parse",(function $$parse(source_buffer){var parsed,$yield=$$parse.$$p||nil;return delete $$parse.$$p,parsed=$send2(this,$find_super(this,"parse",$$parse,!1,!0),"parse",[source_buffer],$yield),this.$rewrite(parsed)}),1),$def(self,"$rewrite",(function(node){return $$$($$("Opal"),"Rewriter").$new(node).$process()}),1)}($nesting[0],$nesting),function(self,$parent_nesting){return self.$attr_accessor("default_parser_class"),$def(self,"$default_parser",(function(){return this.$default_parser_class().$default_parser()}),0)}(Opal.get_singleton_class(self))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/parser/with_ruby_lexer"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),$$$=(Opal.nil,Opal.$$$),$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus;return Opal.add_stubs("include,default_parser_class=,-"),function($base,$super,$parent_nesting){var $writer,self=$klass($base,$super,"WithRubyLexer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$include($$$($$$($$("Opal"),"Parser"),"DefaultConfig")),$writer=[self],$send($$$($$("Opal"),"Parser"),"default_parser_class=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}($$$($$("Opal"),"Parser"),$$$($$("Parser"),"Ruby31"),$nesting)},Opal.modules["opal/parser/patch"]=function(Opal){var $base,self,$nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$rb_plus=Opal.rb_plus,$send=Opal.send,$hash2=Opal.hash2,$eqeqeq=Opal.eqeqeq,$eqeq=Opal.eqeq,$not=Opal.not,$rb_le=Opal.rb_le,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$rb_divide=Opal.rb_divide,$to_a=Opal.to_a,$module=Opal.module;return Opal.add_stubs("source,unpack,+,to_a,lines,end_with?,<<,map,chomp,=~,diagnostic,nil?,new,===,type,updated,dedent,first,children,==,empty?,interrupt,compact,encoding,split,force_encoding,length,map!,each_with_index,!,each_char,<=,-,>,*,/,[],[]=,join,respond_to?,send,value"),$base=$$("Parser"),(self=$klass($base,null,"Lexer")).$$prototype.source_buffer=nil,$def(self,"$source_buffer=",(function(source_buffer){var source=nil;return this.source_buffer=source_buffer,$truthy(this.source_buffer)?(source=this.source_buffer.$source(),this.source_pts=source.$unpack("U*")):this.source_pts=nil}),1),function($base,$super){var self=$klass($base,null,"Literal"),$proto=self.$$prototype;$proto.buffer_s=$proto.buffer=nil,Opal.udef(self,"$extend_string"),$def(self,"$extend_string",(function(string,ts,te){var $ret_or_1;return this.buffer_s=$truthy($ret_or_1=this.buffer_s)?$ret_or_1:ts,this.buffer_e=te,this.buffer=$rb_plus(this.buffer,string)}),3)}($$$($$("Parser"),"Lexer")),function($base,$super){var self=$klass($base,null,"Buffer"),$proto=self.$$prototype;$proto.lines=$proto.source=nil,$def(self,"$source_lines",(function(){var $ret_or_1,lines=nil;return this.lines=$truthy($ret_or_1=this.lines)?$ret_or_1:(lines=this.source.$lines().$to_a(),$truthy(this.source["$end_with?"]("\n"))&&lines["$<<"](""),$send(lines,"map",[],(function(line){return null==line&&(line=nil),line.$chomp("\n")}),1))}),0)}($$$($$("Parser"),"Source")),function($base,$super){var self=$klass($base,null,"Default");$def(self,"$check_lvar_name",(function(name,loc){return $truthy(name["$=~"](new RegExp("^[\\p{Ll}|_][\\p{L}\\p{Nl}\\p{Nd}_]*$","u")))?nil:this.$diagnostic("error","lvar_name",$hash2(["name"],{name:name}),loc)}),2),$def(self,"$dedent_string",(function(node,dedent_level){var dedenter=nil,$ret_or_1=nil,children=nil;return $truthy(dedent_level["$nil?"]())||(dedenter=$$$($$$($$$("Parser"),"Lexer"),"Dedenter").$new(dedent_level),$eqeqeq("str",$ret_or_1=node.$type())?node=node.$updated(nil,[dedenter.$dedent(node.$children().$first())]):($eqeqeq("dstr",$ret_or_1)||$eqeqeq("xstr",$ret_or_1))&&(children=$send(node.$children(),"map",[],(function(str_node){if(null==str_node&&(str_node=nil),$eqeq(str_node.$type(),"str")){if(str_node=str_node.$updated(nil,[dedenter.$dedent(str_node.$children().$first())]),$truthy(str_node.$children().$first()["$empty?"]()))return nil}else dedenter.$interrupt();return str_node}),1),node=node.$updated(nil,children.$compact()))),node}),2)}($$$($$("Parser"),"Builders")),function($base,$super,$parent_nesting){var self=$klass($base,null,"Dedenter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$dedent",(function(string){var original_encoding,self=this,lines=nil;return original_encoding=string.$encoding(),lines=string.$force_encoding($$$($$("Encoding"),"BINARY")).$split("\\\n"),$eqeq(lines.$length(),1)?lines=[string.$force_encoding(original_encoding)]:$send(lines,"map!",[],(function(s){return null==s&&(s=nil),s.$force_encoding(original_encoding)}),1),function(){var $brk=Opal.new_brk();try{$send(lines,"each_with_index",[],(function $$5(line,index){var $writer,self=null==$$5.$$s?this:$$5.$$s,left_to_remove=nil,remove=nil;return null==self.at_line_begin&&(self.at_line_begin=nil),null==self.dedent_level&&(self.dedent_level=nil),null==line&&(line=nil),null==index&&(index=nil),$eqeq(index,0)&&$not(self.at_line_begin)?nil:(left_to_remove=self.dedent_level,remove=0,function(){var $brk=Opal.new_brk();try{$send(line,"each_char",[],(function $$6(char$){var $ret_or_1,self=null==$$6.$$s?this:$$6.$$s;return null==self.dedent_level&&(self.dedent_level=nil),null==char$&&(char$=nil),$truthy($rb_le(left_to_remove,0))&&Opal.brk(nil,$brk),$eqeqeq(" ",$ret_or_1=char$)?(remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,1)):$eqeqeq("\t",$ret_or_1)?($truthy($rb_gt($rb_times($$("TAB_WIDTH"),$rb_plus($rb_divide(remove,$$("TAB_WIDTH")),1)),self.dedent_level))&&Opal.brk(nil,$brk),remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,$$("TAB_WIDTH"))):void Opal.brk(nil,$brk)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),$writer=[index,line["$[]"](Opal.Range.$new(remove,-1,!1))],$send(lines,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),{$$arity:2,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),string=lines.$join(),self.at_line_begin=string["$end_with?"]("\n"),string}),1)}($$$($$("Parser"),"Lexer"),0,$nesting),function($base){var self=$module($base,"Mixin");Opal.udef(self,"$process"),$def(self,"$process",(function(node){var type,on_handler,$ret_or_1=nil,$writer=nil,handler=nil;return null==this._on_handler_cache&&(this._on_handler_cache=nil),$truthy(node["$nil?"]())?nil:(this._on_handler_cache=$truthy($ret_or_1=this._on_handler_cache)?$ret_or_1:$hash2([],{}),type=node.$type(),on_handler=$truthy($ret_or_1=this._on_handler_cache["$[]"](type))?$ret_or_1:($writer=[type,(handler="on_"+type,$truthy(this["$respond_to?"](handler))||(handler="handler_missing"),handler)],$send(this._on_handler_cache,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy($ret_or_1=this.$send(on_handler,node))?$ret_or_1:node)}),1)}($$$($$("AST"),"Processor")),function($base,$super){var self=$klass($base,null,"Default");return Opal.udef(self,"$string_value"),$def(self,"$string_value",(function(token){return this.$value(token)}),1)}($$$($$("Parser"),"Builders"))},Opal.modules["opal/parser"]=function(Opal){var self=Opal.top;Opal.nil;return Opal.add_stubs("require"),self.$require("opal/ast/builder"),self.$require("opal/rewriter"),self.$require("opal/parser/source_buffer"),self.$require("opal/parser/default_config"),self.$require("opal/parser/with_ruby_lexer"),self.$require("opal/parser/patch")},Opal.modules["opal/fragment"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt,$to_a=Opal.to_a,$not=Opal.not,$send=Opal.send;return Opal.add_stubs("attr_reader,to_s,inspect,===,type,[],meta,source_map_name_for,sexp,==,class,+,parent,>,!,first,children,loc,respond_to?,dot,selector,operator,begin,line,location,column"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Fragment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.code=$proto.scope=$proto.sexp=nil,self.$attr_reader("code"),$def(self,"$initialize",(function(code,scope,sexp){return null==sexp&&(sexp=nil),this.code=code.$to_s(),this.sexp=sexp,this.scope=scope}),-3),$def(self,"$inspect",(function(){return"f("+this.code.$inspect()+")"}),0),$def(self,"$source_map_name_for",(function(sexp){var $a,$ret_or_1,$ret_or_2=nil,scope=nil,iters=nil,level=nil,const$=nil,name=nil;if($eqeqeq("top",$ret_or_1=sexp.$type()))return $eqeqeq("require",$ret_or_2=sexp.$meta()["$[]"]("kind"))?"":$eqeqeq("eval",$ret_or_2)?"(eval)":$eqeqeq("main",$ret_or_2)?"
      ":nil;if($eqeqeq("begin",$ret_or_1)||$eqeqeq("newline",$ret_or_1)||$eqeqeq("js_return",$ret_or_1))return $truthy(this.scope)?this.$source_map_name_for(this.scope.$sexp()):nil;if($eqeqeq("iter",$ret_or_1)){for(scope=this.scope,iters=1;$truthy(scope)&&$eqeq(scope.$class(),$$$($$("Nodes"),"IterNode"));)iters=$rb_plus(iters,1),scope=scope.$parent();return $truthy($rb_gt(iters,1))&&(level=" ("+iters+" levels)"),"block"+level+" in "+this.$source_map_name_for(scope.$sexp())}return $eqeqeq("self",$ret_or_1)?"self":$eqeqeq("module",$ret_or_1)?(const$=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],""):$eqeqeq("class",$ret_or_1)?(const$=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],""):$eqeqeq("const",$ret_or_1)?(scope=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],$not(scope)||$eqeq(scope.$type(),"cbase")?name.$to_s():this.$source_map_name_for(scope)+"::"+name):$eqeqeq("int",$ret_or_1)||$eqeqeq("def",$ret_or_1)?sexp.$children().$first():$eqeqeq("defs",$ret_or_1)||$eqeqeq("send",$ret_or_1)?sexp.$children()["$[]"](1):$eqeqeq("lvar",$ret_or_1)||$eqeqeq("lvasgn",$ret_or_1)||$eqeqeq("lvdeclare",$ret_or_1)||$eqeqeq("ivar",$ret_or_1)||$eqeqeq("ivasgn",$ret_or_1)||$eqeqeq("gvar",$ret_or_1)||$eqeqeq("cvar",$ret_or_1)||$eqeqeq("cvasgn",$ret_or_1)||$eqeqeq("gvars",$ret_or_1)||$eqeqeq("gvasgn",$ret_or_1)||$eqeqeq("arg",$ret_or_1)?sexp.$children().$first():$eqeqeq("str",$ret_or_1)||$eqeqeq("xstr",$ret_or_1)?this.$source_map_name_for(this.scope.$sexp()):nil}),1),$def(self,"$source_map_name",(function(){return $truthy(this.sexp)?this.$source_map_name_for(this.sexp):nil}),0),$def(self,"$location",(function(){var loc=nil,$ret_or_1=nil;return $not(this.sexp)?nil:$eqeq(this.sexp.$type(),"send")?(loc=this.sexp.$loc(),$truthy(loc["$respond_to?"]("dot"))?$truthy($ret_or_1=loc.$dot())?$ret_or_1:loc.$selector():$truthy(loc["$respond_to?"]("operator"))?loc.$operator():this.sexp):$eqeq(this.sexp.$type(),"iter")&&$truthy(loc["$respond_to?"]("begin"))?this.sexp.$loc().$begin():this.sexp}),0),$def(self,"$line",(function(){var $a;return($a=this.$location())===nil||null==$a?nil:$send($a,"line",[])}),0),$def(self,"$column",(function(){var $a;return($a=this.$location())===nil||null==$a?nil:$send($a,"column",[])}),0),$def(self,"$skip_source_map?",(function(){return this.sexp["$=="](!1)}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/helpers"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$truthy=Opal.truthy,$def=Opal.def,$rb_plus=Opal.rb_plus,$send=Opal.send,$hash2=Opal.hash2,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$slice=Opal.slice,$eqeq=Opal.eqeq,$rb_minus=Opal.rb_minus;return Opal.add_stubs("require,valid_name?,inspect,=~,to_s,+,indent,compiler,to_proc,parser_indent,push,fragment,current_indent,js_truthy_optimize,helper,expr,===,type,[],handlers,include?,truthy_optimize?,==,count,<<,method_calls,first,children,s,[]=,meta,-,new_temp,scope,wrap"),self.$require("opal/regexp_anchors"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Helpers"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$property",(function(name){return $truthy(this["$valid_name?"](name))?"."+name:"["+name.$inspect()+"]"}),1),$def(self,"$valid_name?",(function(name){return $$$($$$($$("Opal"),"Rewriters"),"JsReservedWords")["$valid_name?"](name)}),1),$def(self,"$mid_to_jsid",(function(mid){return $truthy(/\=|\+|\-|\*|\/|\!|\?|<|\>|\&|\||\^|\%|\~|\[|`/["$=~"](mid.$to_s()))?"['$"+mid+"']":$rb_plus(".$",mid)}),1),$def(self,"$indent",(function $$indent(){var block=$$indent.$$p||nil;return delete $$indent.$$p,$send(this.$compiler(),"indent",[],block.$to_proc())}),0),$def(self,"$current_indent",(function(){return this.$compiler().$parser_indent()}),0),$def(self,"$line",(function($a){var strs,self=this;return strs=Opal.slice.call(arguments),self.$push(self.$fragment("\n"+self.$current_indent(),$hash2(["loc"],{loc:!1}))),$send(self,"push",$to_a(strs))}),-1),$def(self,"$empty_line",(function(){return this.$push(this.$fragment("\n",$hash2(["loc"],{loc:!1})))}),0),$def(self,"$js_truthy",(function(sexp){var optimize;return $truthy(optimize=this.$js_truthy_optimize(sexp))?optimize:(this.$helper("truthy"),[this.$fragment("$truthy("),this.$expr(sexp),this.$fragment(")")])}),1),$def(self,"$js_truthy_optimize",(function(sexp){var $a,$ret_or_1,receiver=nil,mid=nil,args=nil,receiver_handler_class=nil,$ret_or_2=nil,allow_optimization_on_type=nil,$ret_or_3=nil,true_body=nil,false_body=nil,$writer=nil;return $eqeqeq("send",$ret_or_1=sexp.$type())?(receiver=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],mid=null==$a[1]?nil:$a[1],args=$slice.call($a,2),receiver_handler_class=$truthy($ret_or_2=receiver)?this.$compiler().$handlers()["$[]"](receiver.$type()):$ret_or_2,allow_optimization_on_type=$truthy($ret_or_2=$truthy($ret_or_3=$$$($$("Compiler"),"COMPARE")["$include?"](mid.$to_s()))?receiver_handler_class:$ret_or_3)?receiver_handler_class["$truthy_optimize?"]():$ret_or_2,$truthy(allow_optimization_on_type)||$eqeq(mid,"block_given?")?this.$expr(sexp):$eqeq(args.$count(),1)?$eqeqeq("==",$ret_or_2=mid)?(this.$helper("eqeq"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$eqeq("),this.$expr(receiver),this.$fragment(", "),this.$expr(args.$first()),this.$fragment(")")]):$eqeqeq("===",$ret_or_2)?(this.$helper("eqeqeq"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$eqeqeq("),this.$expr(receiver),this.$fragment(", "),this.$expr(args.$first()),this.$fragment(")")]):$eqeqeq("!=",$ret_or_2)?(this.$helper("neqeq"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$neqeq("),this.$expr(receiver),this.$fragment(", "),this.$expr(args.$first()),this.$fragment(")")]):nil:$eqeq(args.$count(),0)&&$eqeqeq("!",$ret_or_2=mid)?(this.$helper("not"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$not("),this.$expr(receiver),this.$fragment(")")]):nil):$eqeqeq("begin",$ret_or_1)?$eqeq(sexp.$children().$count(),1)?this.$js_truthy_optimize(sexp.$children().$first()):nil:$eqeqeq("if",$ret_or_1)?(null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],true_body=null==$a[1]?nil:$a[1],false_body=null==$a[2]?nil:$a[2],$eqeq(true_body,this.$s("true"))?($writer=["do_js_truthy_on_false_body",!0],$send(sexp.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$expr(sexp)):$eqeq(false_body,this.$s("false"))?($writer=["do_js_truthy_on_true_body",!0],$send(sexp.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$expr(sexp)):nil):nil}),1),$def(self,"$conditional_send",(function $$conditional_send(recvr){var receiver_temp,$yield=$$conditional_send.$$p||nil;return delete $$conditional_send.$$p,receiver_temp=this.$scope().$new_temp(),this.$push(receiver_temp+" = ",recvr),this.$push(", ("+receiver_temp+" === nil || "+receiver_temp+" == null) ? nil : "),Opal.yield1($yield,receiver_temp),this.$wrap("(",")")}),1)}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/base"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$defs=Opal.defs,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$Opal=Opal.Opal,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,include,each,[]=,handlers,-,each_with_index,define_method,[],children,attr_reader,type,top_scope,top_scope=,compile,raise,is_a?,fragment,<<,reverse_each,unshift,push,new,scope,error,loc,==,process,expr,add_scope_local,to_sym,add_scope_ivar,add_scope_gvar,add_scope_temp,helper,with_temp,to_proc,in_while?,instance_variable_get,has_rescue_else?,in_ensure,in_ensure?,in_resbody,in_resbody?,in_rescue,!,class_scope?,sclass?,+,parent,nesting,class_variable_owner_nesting_level,comments,compiler,name,source_buffer,expression,start_with?,end_with?,line"),self.$require("opal/nodes/helpers"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Base"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.compiler=$proto.sexp=$proto.fragments=$proto.level=nil,self.$include($$("Helpers")),$defs(self,"$handlers",(function(){var $ret_or_1;return null==this.handlers&&(this.handlers=nil),this.handlers=$truthy($ret_or_1=this.handlers)?$ret_or_1:$hash2([],{})}),0),$defs(self,"$handle",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each",[],(function $$1(type){var $writer;return null==type&&(type=nil),$writer=[type,null==$$1.$$s?this:$$1.$$s],$send($$("Base").$handlers(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})}),-1),$defs(self,"$children",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each_with_index",[],(function $$2(name,idx){var self=null==$$2.$$s?this:$$2.$$s;return null==name&&(name=nil),null==idx&&(idx=nil),$send(self,"define_method",[name],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return null==self.sexp&&(self.sexp=nil),self.sexp.$children()["$[]"](idx)}),{$$arity:0,$$s:self})}),{$$arity:2,$$s:self})}),-1),$defs(self,"$truthy_optimize?",(function(){return!1}),0),self.$attr_reader("compiler","type","sexp"),$def(self,"$initialize",(function(sexp,level,compiler){var $ret_or_1,$writer=nil;return this.sexp=sexp,this.type=sexp.$type(),this.level=level,this.compiler=compiler,$truthy($ret_or_1=this.compiler.$top_scope())?$ret_or_1:($writer=[this],$send(this.compiler,"top_scope=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),3),$def(self,"$children",(function(){return this.sexp.$children()}),0),$def(self,"$compile_to_fragments",(function(){var $a;return $truthy(null!=($a=this.fragments)&&$a!==nil?"instance-variable":nil)||(this.fragments=[],this.$compile()),this.fragments}),0),$def(self,"$compile",(function(){return this.$raise("Not Implemented")}),0),$def(self,"$push",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each",[],(function $$5(str){var self=null==$$5.$$s?this:$$5.$$s;return null==self.fragments&&(self.fragments=nil),null==str&&(str=nil),$truthy(str["$is_a?"]($$("String")))&&(str=self.$fragment(str)),self.fragments["$<<"](str)}),{$$arity:1,$$s:self})}),-1),$def(self,"$unshift",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"reverse_each",[],(function $$6(str){var self=null==$$6.$$s?this:$$6.$$s;return null==self.fragments&&(self.fragments=nil),null==str&&(str=nil),$truthy(str["$is_a?"]($$("String")))&&(str=self.$fragment(str)),self.fragments.$unshift(str)}),{$$arity:1,$$s:self})}),-1),$def(self,"$wrap",(function(pre,post){return this.$unshift(pre),this.$push(post)}),2),$def(self,"$fragment",(function(str,$kwargs){var loc,$ret_or_1;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(loc=$kwargs.$$smap.loc)&&(loc=!0),$$$($$("Opal"),"Fragment").$new(str,this.$scope(),$truthy($ret_or_1=loc)?this.sexp:$ret_or_1)}),-2),$def(self,"$error",(function(msg){return this.compiler.$error(msg)}),1),$def(self,"$scope",(function(){return this.compiler.$scope()}),0),$def(self,"$top_scope",(function(){return this.compiler.$top_scope()}),0),$def(self,"$s",(function(type,$a){var children,self=this;return children=Opal.slice.call(arguments,1),$$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:self.sexp.$loc()}))}),-2),$def(self,"$expr?",(function(){return this.level["$=="]("expr")}),0),$def(self,"$recv?",(function(){return this.level["$=="]("recv")}),0),$def(self,"$stmt?",(function(){return this.level["$=="]("stmt")}),0),$def(self,"$process",(function(sexp,level){return null==level&&(level="expr"),this.compiler.$process(sexp,level)}),-2),$def(self,"$expr",(function(sexp){return this.compiler.$process(sexp,"expr")}),1),$def(self,"$recv",(function(sexp){return this.compiler.$process(sexp,"recv")}),1),$def(self,"$stmt",(function(sexp){return this.compiler.$process(sexp,"stmt")}),1),$def(self,"$expr_or_nil",(function(sexp){return $truthy(sexp)?this.$expr(sexp):"nil"}),1),$def(self,"$add_local",(function(name){return this.$scope().$add_scope_local(name.$to_sym())}),1),$def(self,"$add_ivar",(function(name){return this.$scope().$add_scope_ivar(name)}),1),$def(self,"$add_gvar",(function(name){return this.$scope().$add_scope_gvar(name)}),1),$def(self,"$add_temp",(function(temp){return this.$scope().$add_scope_temp(temp)}),1),$def(self,"$helper",(function(name){return this.compiler.$helper(name)}),1),$def(self,"$with_temp",(function $$with_temp(){var block=$$with_temp.$$p||nil;return delete $$with_temp.$$p,$send(this.compiler,"with_temp",[],block.$to_proc())}),0),$def(self,"$in_while?",(function(){return this.compiler["$in_while?"]()}),0),$def(self,"$while_loop",(function(){return this.compiler.$instance_variable_get("@while_loop")}),0),$def(self,"$has_rescue_else?",(function(){return this.$scope()["$has_rescue_else?"]()}),0),$def(self,"$in_ensure",(function $$in_ensure(){var block=$$in_ensure.$$p||nil;return delete $$in_ensure.$$p,$send(this.$scope(),"in_ensure",[],block.$to_proc())}),0),$def(self,"$in_ensure?",(function(){return this.$scope()["$in_ensure?"]()}),0),$def(self,"$in_resbody",(function $$in_resbody(){var block=$$in_resbody.$$p||nil;return delete $$in_resbody.$$p,$send(this.$scope(),"in_resbody",[],block.$to_proc())}),0),$def(self,"$in_resbody?",(function(){return this.$scope()["$in_resbody?"]()}),0),$def(self,"$in_rescue",(function $$in_rescue(node){var block=$$in_rescue.$$p||nil;return delete $$in_rescue.$$p,$send(this.$scope(),"in_rescue",[node],block.$to_proc())}),1),$def(self,"$class_variable_owner_nesting_level",(function(){var cvar_scope=nil,nesting_level=nil,$ret_or_1=nil;for(cvar_scope=this.$scope(),nesting_level=0;$truthy($truthy($ret_or_1=cvar_scope)?cvar_scope["$class_scope?"]()["$!"]():$ret_or_1);)$truthy(cvar_scope["$sclass?"]())&&(nesting_level=$rb_plus(nesting_level,1)),cvar_scope=cvar_scope.$parent();return nesting_level}),0),$def(self,"$class_variable_owner",(function(){return $truthy(this.$scope())?this.$scope().$nesting()+"["+this.$class_variable_owner_nesting_level()+"]":"Opal.Object"}),0),$def(self,"$comments",(function(){return this.$compiler().$comments()["$[]"](this.sexp.$loc())}),0),$def(self,"$source_location",(function(){var file=nil;return file=this.sexp.$loc().$expression().$source_buffer().$name(),$truthy(file["$start_with?"]("corelib/"))&&(file=""),$truthy(file["$end_with?"](".js"))&&(file=""),"['"+file+"', "+this.sexp.$loc().$line()+"]"}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/literal"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def,$defs=Opal.defs,$truthy=Opal.truthy,$const_set=Opal.const_set,$hash2=Opal.hash2,$regexp=Opal.regexp,$send=Opal.send,$rb_plus=Opal.rb_plus,$lambda=Opal.lambda,$rb_le=Opal.rb_le,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$slice=Opal.slice,$Opal=Opal.Opal,$rb_gt=Opal.rb_gt;return Opal.add_stubs("require,handle,==,type,push,self,scope,to_s,children,value,recv?,wrap,freeze,join,keys,gsub,even?,length,last_match,+,chop,[],inspect,to_i,to_utf16,translate_escape_chars,valid_encoding?,helper,upcase,<=,call,-,>>,&,attr_accessor,extract_flags_and_value,select!,flags,=~,warning,compiler,compile_static_regexp,compile_dynamic_regexp,each_with_index,zero?,expr,any?,===,new,map,to_proc,flags=,empty?,s,single_line?,value=,include?,is_a?,updated,delete,source,expression,loc,private,>,!=,!,regexp,first,each,compile_inline?,compile_inline,compile_range_initialize,start,finish,raise,expr_or_nil,numerator,denominator,real,imag"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ValueNode");self.$handle("true","false","self","nil"),$def(self,"$compile",(function(){return $eqeq(this.$type(),"self")?this.$push(this.$scope().$self()):this.$push(this.$type().$to_s())}),0),$defs(self,"$truthy_optimize?",(function(){return!0}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"NumericNode");self.$handle("int","float"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$value().$to_s()),$truthy(this["$recv?"]())?this.$wrap("(",")"):nil}),0),$defs(self,"$truthy_optimize?",(function(){return!0}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"StringNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("str"),self.$children("value"),$const_set($nesting[0],"ESCAPE_CHARS",$hash2(["a","e"],{a:"\\u0007",e:"\\u001b"}).$freeze()),$const_set($nesting[0],"ESCAPE_REGEX",$regexp(["(\\\\+)([",$$("ESCAPE_CHARS").$keys().$join(""),"])"]).$freeze()),$def(self,"$translate_escape_chars",(function(inspect_string){return $send(inspect_string,"gsub",[$$("ESCAPE_REGEX")],(function(original){return null==original&&(original=nil),$truthy($$("Regexp").$last_match(1).$length()["$even?"]())?original:$rb_plus($$("Regexp").$last_match(1).$chop(),$$("ESCAPE_CHARS")["$[]"]($$("Regexp").$last_match(2)))}),1)}),1),$def(self,"$compile",(function(){var sanitized_value,string_value=nil;return string_value=this.$value(),sanitized_value=$send(string_value.$inspect(),"gsub",[/\\u\{([0-9a-f]+)\}/],(function $$4(){var code_point,self=null==$$4.$$s?this:$$4.$$s;return code_point=$$("Regexp").$last_match(1).$to_i(16),self.$to_utf16(code_point)}),{$$arity:0,$$s:this}),this.$push(this.$translate_escape_chars(sanitized_value)),$truthy(this.$value()["$valid_encoding?"]())?nil:(this.$helper("binary"),this.$wrap("$binary(",")"))}),0),$def(self,"$to_utf16",(function(code_point){var lead_surrogate,tail_surrogate,u=nil;return 1023,u=$lambda((function(code_unit){return null==code_unit&&(code_unit=nil),$rb_plus("\\u",code_unit.$to_s(16).$upcase())}),1),$truthy($rb_le(code_point,65535))?u.$call(code_point):(code_point=$rb_minus(code_point,65536),lead_surrogate=$rb_plus(55296,code_point["$>>"](10)),tail_surrogate=$rb_plus(56320,code_point["$&"](1023)),$rb_plus(u.$call(lead_surrogate),u.$call(tail_surrogate)))}),1)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"SymbolNode");self.$handle("sym"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$value().$to_s().$inspect())}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"RegexpNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.sexp=nil,self.$handle("regexp"),self.$attr_accessor("value","flags"),$const_set($nesting[0],"SUPPORTED_FLAGS",/[gimuy]/.$freeze()),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.$extract_flags_and_value()}),-1),$def(self,"$compile",(function(){return $send(this.$flags(),"select!",[],(function $$6(flag){var self=null==$$6.$$s?this:$$6.$$s;return null==flag&&(flag=nil),!!$truthy($$("SUPPORTED_FLAGS")["$=~"](flag))||(self.$compiler().$warning("Skipping the '"+flag+"' Regexp flag as it's not widely supported by JavaScript vendors."),!1)}),{$$arity:1,$$s:this}),$eqeq(this.$value().$type(),"str")?this.$compile_static_regexp():this.$compile_dynamic_regexp()}),0),$def(self,"$compile_dynamic_regexp",(function(){return this.$helper("regexp"),this.$push("$regexp(["),$send(this.$value().$children(),"each_with_index",[],(function $$7(v,index){var self=null==$$7.$$s?this:$$7.$$s;return null==v&&(v=nil),null==index&&(index=nil),$truthy(index["$zero?"]())||self.$push(", "),self.$push(self.$expr(v))}),{$$arity:2,$$s:this}),this.$push("]"),$truthy(this.$flags()["$any?"]())&&this.$push(", '"+this.$flags().$join()+"'"),this.$push(")")}),0),$def(self,"$compile_static_regexp",(function(){var value;return value=this.$value().$children()["$[]"](0),$eqeqeq("",value)?this.$push("/(?:)/"):this.$push(""+$$("Regexp").$new(value).$inspect()+this.$flags().$join())}),0),$def(self,"$extract_flags_and_value",(function(){var $a,$b,values=nil,flags_sexp=nil,$writer=nil,parts=nil;return $b=($b=($a=[].concat($to_a(this.$children()))).length-1)<0?0:$b,values=$slice.call($a,0,$b),flags_sexp=null==$a[$b]?nil:$a[$b],$writer=[$send(flags_sexp.$children(),"map",[],"to_s".$to_proc())],$send(this,"flags=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[$truthy(values["$empty?"]())?this.$s("str",""):$truthy(this["$single_line?"](values))?values["$[]"](0):$send(this,"s",["dstr"].concat($to_a(values)))],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(this.$flags()["$include?"]("x"))&&(parts=$send(this.$value().$children(),"map",[],(function $$8(part){var self=null==$$8.$$s?this:$$8.$$s,trimmed_value=nil;return null==part&&(part=nil),$truthy(part["$is_a?"]($$$($$$($Opal,"AST"),"Node")))&&$eqeq(part.$type(),"str")?(trimmed_value=part.$children()["$[]"](0).$gsub(/^\s*\#.*/,"").$gsub(/\s/,""),self.$s("str",trimmed_value)):part}),{$$arity:1,$$s:this}),$writer=[this.$value().$updated(nil,parts)],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$flags().$delete("x")),$eqeq(this.$value().$type(),"str")?($writer=[this.$s("str",this.$value().$children()["$[]"](0).$gsub("\\A","^").$gsub("\\z","$"))],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),0),$def(self,"$raw_value",(function(){var $writer;return $writer=[this.sexp.$loc().$expression().$source()],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),0),self.$private(),$def(self,"$single_line?",(function(values){var $ret_or_1,value=nil;return!$truthy($rb_gt(values.$length(),1))&&(value=values["$[]"](0),$truthy($ret_or_1=value.$type()["$!="]("str"))?$ret_or_1:value.$children()["$[]"](0)["$include?"]("\n")["$!"]())}),1)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"MatchCurrentLineNode");self.$handle("match_current_line"),self.$children("regexp"),$def(self,"$compile",(function(){var gvar_sexp,send_node;return gvar_sexp=this.$s("gvar","$_"),send_node=this.$s("send",gvar_sexp,"=~",this.$regexp()),this.$push(this.$expr(send_node))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"DynamicStringNode");self.$handle("dstr"),$def(self,"$compile",(function(){var skip_empty=nil;return $truthy($rb_gt(this.$children().$length(),1))&&$eqeq(this.$children().$first().$type(),"str")?skip_empty=!0:this.$push('""'),$send(this.$children(),"each",[],(function $$10(part){var self=null==$$10.$$s?this:$$10.$$s;return null==part&&(part=nil),$truthy(skip_empty)?skip_empty=!1:self.$push(" + "),$eqeq(part.$type(),"str")?self.$push(self.$expr(part)):self.$push("(",self.$expr(part),")"),$truthy(self["$recv?"]())?self.$wrap("(",")"):nil}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("Base")),function($base,$super){$klass($base,$super,"DynamicSymbolNode").$handle("dsym")}($nesting[0],$$("DynamicStringNode")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"RangeNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$children("start","finish"),$const_set($nesting[0],"SIMPLE_CHILDREN_TYPES",["int","float","str","sym"].$freeze()),$def(self,"$compile",(function(){return $truthy(this["$compile_inline?"]())?(this.$helper("range"),this.$compile_inline()):this.$compile_range_initialize()}),0),$def(self,"$compile_inline?",(function(){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $truthy($ret_or_1=$truthy($ret_or_2=this.$start()["$!"]())?$ret_or_2:$truthy($ret_or_3=this.$start().$type())?$$("SIMPLE_CHILDREN_TYPES")["$include?"](this.$start().$type()):$ret_or_3)?$truthy($ret_or_2=this.$finish()["$!"]())?$ret_or_2:$truthy($ret_or_3=this.$finish().$type())?$$("SIMPLE_CHILDREN_TYPES")["$include?"](this.$finish().$type()):$ret_or_3:$ret_or_1}),0),$def(self,"$compile_inline",(function(){return this.$raise($$("NotImplementedError"))}),0),$def(self,"$compile_range_initialize",(function(){return this.$raise($$("NotImplementedError"))}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"InclusiveRangeNode");self.$handle("irange"),$def(self,"$compile_inline",(function(){return this.$push("$range(",this.$expr_or_nil(this.$start()),", ",this.$expr_or_nil(this.$finish()),", false)")}),0),$def(self,"$compile_range_initialize",(function(){return this.$push("Opal.Range.$new(",this.$expr_or_nil(this.$start()),", ",this.$expr_or_nil(this.$finish()),", false)")}),0)}($nesting[0],$$("RangeNode")),function($base,$super){var self=$klass($base,$super,"ExclusiveRangeNode");self.$handle("erange"),$def(self,"$compile_inline",(function(){return this.$push("$range(",this.$expr_or_nil(this.$start()),", ",this.$expr_or_nil(this.$finish()),", true)")}),0),$def(self,"$compile_range_initialize",(function(){return this.$push("Opal.Range.$new(",this.$expr_or_nil(this.$start()),",",this.$expr_or_nil(this.$finish()),", true)")}),0)}($nesting[0],$$("RangeNode")),function($base,$super){var self=$klass($base,$super,"RationalNode");self.$handle("rational"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("Opal.Rational.$new("+this.$value().$numerator()+", "+this.$value().$denominator()+")")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ComplexNode");return self.$handle("complex"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("Opal.Complex.$new("+this.$value().$real()+", "+this.$value().$imag()+")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/variables"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send,$range=Opal.range,$eqeqeq=Opal.eqeqeq,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,handle,children,irb?,compiler,top?,scope,using_irb?,push,to_s,var_name,with_temp,property,wrap,add_local,expr,value,expr?,recv?,[],name,add_ivar,self,helper,add_gvar,===,handle_global_match,handle_post_match,handle_pre_match,raise,index,stmt?,class_variable_owner,inspect"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"LocalVariableNode");self.$handle("lvar"),self.$children("var_name"),$def(self,"$using_irb?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$compiler()["$irb?"]())?this.$scope()["$top?"]():$ret_or_1}),0),$def(self,"$compile",(function(){return $truthy(this["$using_irb?"]())?$send(this,"with_temp",[],(function $$2(tmp){var self=null==$$2.$$s?this:$$2.$$s;return null==tmp&&(tmp=nil),self.$push(self.$property(self.$var_name().$to_s())),self.$wrap("(("+tmp+" = Opal.irb_vars",") == null ? nil : "+tmp+")")}),{$$arity:1,$$s:this}):this.$push(this.$var_name().$to_s())}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"LocalAssignNode");self.$handle("lvasgn"),self.$children("var_name","value"),$def(self,"$using_irb?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$compiler()["$irb?"]())?this.$scope()["$top?"]():$ret_or_1}),0),$def(self,"$compile",(function(){return $truthy(this["$using_irb?"]())?this.$push("Opal.irb_vars"+this.$property(this.$var_name().$to_s())+" = "):(this.$add_local(this.$var_name().$to_s()),this.$push(this.$var_name()+" = ")),this.$push(this.$expr(this.$value())),($truthy(this["$recv?"]())||$truthy(this["$expr?"]()))&&$truthy(this.$value())?this.$wrap("(",")"):nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"LocalDeclareNode");self.$handle("lvdeclare"),self.$children("var_name"),$def(self,"$compile",(function(){return this.$add_local(this.$var_name().$to_s()),nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"InstanceVariableNode");self.$handle("ivar"),self.$children("name"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return name=this.$property(this.$var_name()),this.$add_ivar(name),this.$push(""+this.$scope().$self()+name)}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"InstanceAssignNode");self.$handle("ivasgn"),self.$children("name","value"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return name=this.$property(this.$var_name()),this.$push(""+this.$scope().$self()+name+" = "),this.$push(this.$expr(this.$value())),($truthy(this["$recv?"]())||$truthy(this["$expr?"]()))&&$truthy(this.$value())?this.$wrap("(",")"):nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"GlobalVariableNode");self.$handle("gvar"),self.$children("name"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return this.$helper("gvars"),name=this.$property(this.$var_name()),this.$add_gvar(name),this.$push("$gvars"+name)}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"BackRefNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("back_ref"),$def(self,"$compile",(function $$compile(){var $ret_or_1,$yield=$$compile.$$p||nil;return delete $$compile.$$p,this.$helper("gvars"),$eqeqeq("&",$ret_or_1=this.$var_name())?this.$handle_global_match():$eqeqeq("'",$ret_or_1)?this.$handle_post_match():$eqeqeq("`",$ret_or_1)?this.$handle_pre_match():$eqeqeq("+",$ret_or_1)?$send2(this,$find_super(this,"compile",$$compile,!1,!0),"compile",[],$yield):this.$raise($$("NotImplementedError"))}),0),$def(self,"$handle_global_match",(function(){return $send(this,"with_temp",[],(function $$4(tmp){return null==tmp&&(tmp=nil),(null==$$4.$$s?this:$$4.$$s).$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+"['$[]'](0))")}),{$$arity:1,$$s:this})}),0),$def(self,"$handle_pre_match",(function(){return $send(this,"with_temp",[],(function $$5(tmp){return null==tmp&&(tmp=nil),(null==$$5.$$s?this:$$5.$$s).$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+".$pre_match())")}),{$$arity:1,$$s:this})}),0),$def(self,"$handle_post_match",(function(){return $send(this,"with_temp",[],(function $$6(tmp){return null==tmp&&(tmp=nil),(null==$$6.$$s?this:$$6.$$s).$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+".$post_match())")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("GlobalVariableNode"),$nesting),function($base,$super){var self=$klass($base,$super,"GlobalAssignNode");self.$handle("gvasgn"),self.$children("name","value"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return this.$helper("gvars"),name=this.$property(this.$var_name()),this.$push("$gvars"+name+" = "),this.$push(this.$expr(this.$value())),($truthy(this["$recv?"]())||$truthy(this["$expr?"]()))&&$truthy(this.$value())?this.$wrap("(",")"):nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"NthrefNode");self.$handle("nth_ref"),self.$children("index"),$def(self,"$compile",(function(){return this.$helper("gvars"),$send(this,"with_temp",[],(function $$7(tmp){var self=null==$$7.$$s?this:$$7.$$s;return null==tmp&&(tmp=nil),self.$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+"['$[]']("+self.$index()+"))")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ClassVariableNode");self.$handle("cvar"),self.$children("name"),$def(self,"$compile",(function(){var tolerant=nil;return this.$helper("class_variable_get"),tolerant=!1,$truthy(this["$stmt?"]())&&(tolerant=!0),this.$push("$class_variable_get("+this.$class_variable_owner()+", '"+this.$name()+"', "+tolerant.$inspect()+")")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ClassVarAssignNode");return self.$handle("cvasgn"),self.$children("name","value"),$def(self,"$compile",(function(){return this.$helper("class_variable_set"),this.$push("$class_variable_set("+this.$class_variable_owner()+", '"+this.$name()+"', ",this.$expr(this.$value()),")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/constants"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def,$const_set=Opal.const_set;return Opal.add_stubs("require,handle,children,magical_data_const?,push,optimized_access?,helper,name,==,const_scope,s,absolute_const,top_scope,recv,eval?,compiler,relative_access,scope,nil?,eof_content,freeze,include?,base,expr,value,nesting"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ConstNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("const"),self.$children("const_scope","name"),$def(self,"$compile",(function(){return $truthy(this["$magical_data_const?"]())?this.$push("$__END__"):$truthy(this["$optimized_access?"]())?(this.$helper(""+this.$name()),this.$push("$"+this.$name())):$eqeq(this.$const_scope(),this.$s("cbase"))?this.$push(this.$top_scope().$absolute_const()+"('"+this.$name()+"')"):$truthy(this.$const_scope())?this.$push(this.$top_scope().$absolute_const()+"(",this.$recv(this.$const_scope()),", '"+this.$name()+"')"):($truthy(this.$compiler()["$eval?"]()),this.$push(this.$scope().$relative_access()+"('"+this.$name()+"')"))}),0),$def(self,"$magical_data_const?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.$const_scope()["$nil?"]())?this.$name()["$=="]("DATA"):$ret_or_2)?this.$compiler().$eof_content():$ret_or_1}),0),$const_set($nesting[0],"OPTIMIZED_ACCESS_CONSTS",["BasicObject","Object","Module","Class","Opal","Kernel","NilClass"].$freeze()),$def(self,"$optimized_access?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$const_scope()["$=="](this.$s("cbase")))?$$("OPTIMIZED_ACCESS_CONSTS")["$include?"](this.$name()):$ret_or_1}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"CbaseNode");self.$handle("cbase"),$def(self,"$compile",(function(){return this.$push("'::'")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ConstAssignNode");return self.$handle("casgn"),self.$children("base","name","value"),$def(self,"$compile",(function(){return this.$helper("const_set"),$truthy(this.$base())?this.$push("$const_set(",this.$expr(this.$base()),", '"+this.$name()+"', ",this.$expr(this.$value()),")"):this.$push("$const_set("+this.$scope().$nesting()+"[0], '"+this.$name()+"', ",this.$expr(this.$value()),")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/break_finder"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$alias=Opal.alias;return Opal.add_stubs("require"),self.$require("opal/rewriter"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BreakFinder");return self.$$prototype.found_break=nil,$def(self,"$initialize",(function(){return this.found_break=!1}),0),$def(self,"$found_break?",(function(){return this.found_break}),0),$def(self,"$on_break",(function(node){return this.found_break=!0,node}),1),$def(self,"$stop_lookup",(function(node){return nil}),1),$alias(self,"on_for","stop_lookup"),$alias(self,"on_while","stop_lookup"),$alias(self,"on_while_post","stop_lookup"),$alias(self,"on_until","stop_lookup"),$alias(self,"on_until_post","stop_lookup"),$alias(self,"on_block","stop_lookup")}($nesting[0],$$$($$$($$("Opal"),"Rewriters"),"Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/call"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$defs=Opal.defs,$send2=Opal.send2,$find_super=Opal.find_super,$slice=Opal.slice,$truthy=Opal.truthy,$def=Opal.def,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$not=Opal.not,$neqeq=Opal.neqeq,$eqeqeq=Opal.eqeqeq,$to_ary=Opal.to_ary,$Opal=Opal.Opal,$range=Opal.range;return Opal.add_stubs("require,handle,attr_reader,freeze,[]=,-,define_method,to_proc,include?,type,s,handle_special,record_method?,<<,method_calls,compiler,to_sym,meth,using_eval?,compile_eval_var,using_irb?,compile_irb_var,default_compile,private,iter,new,process,found_break?,splat?,!,empty?,collect_refinements_temps,scope,auto_await?,push,await_encountered=,invoke_using_refinement?,compile_using_refined_send,invoke_using_send?,compile_using_send,compile_simple_call_chain,compile_break_catcher,helper,compile_receiver,compile_method_name,compile_arguments,compile_block_pass,compile_refinements,recv,receiver_sexp,expr,arglist,children,map,iter_has_break?,unshift,line,method_jsid,any?,==,recvr,mid_to_jsid,to_s,with_temp,intern,irb?,top?,variable_like?,eval?,scope_variables,nil?,updated,async_await,!=,match?,method,arity,[],each,add_special,call,inline_operators?,fragment,resolve,requires,file,dirname,cleanpath,join,Pathname,self,inspect,length,warning,autoloads,required_trees,force_encoding,encoding,+,handle_block_given_call,def?,mid,module_name,count,accepts_using?,using_refinement,first,refinements_temp,arity_check?,defines_lambda,push_nesting?,nesting,new_temp,scope_locals,source_location,size,last,dynamic_require_severity,handle_part,===,is_a?,expand_path,split,error,each_with_object,pop"),self.$require("set"),self.$require("pathname"),self.$require("opal/nodes/base"),self.$require("opal/rewriters/break_finder"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"CallNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.sexp=$proto.compiler=nil,self.$handle("send"),self.$attr_reader("recvr","meth","arglist","iter"),$const_set($nesting[0],"SPECIALS",$hash2([],{})),$const_set($nesting[0],"OPERATORS",$hash2(["+","-","*","/","<","<=",">",">="],{"+":"plus","-":"minus","*":"times","/":"divide","<":"lt","<=":"le",">":"gt",">=":"ge"}).$freeze()),$defs(self,"$add_special",(function $$add_special(name,options){var $writer,handler=$$add_special.$$p||nil;return delete $$add_special.$$p,null==options&&(options=$hash2([],{})),$writer=[name,options],$send($$("SPECIALS"),"[]=",$to_a($writer)),$rb_minus($writer.length,1),$send(this,"define_method",["handle_"+name],handler.$to_proc())}),-2),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$b,$c,$yield=$$initialize.$$p||nil,self=this,args=nil,rest=nil,last_arg=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$b=[].concat($to_a(self.sexp)),self.recvr=null==$b[0]?nil:$b[0],self.meth=null==$b[1]?nil:$b[1],args=$slice.call($b,2),$c=($c=($b=[].concat($to_a(args))).length-1)<0?0:$c,rest=$slice.call($b,0,$c),last_arg=null==$b[$c]?nil:$b[$c],$truthy(last_arg)&&$truthy(["iter","block_pass"]["$include?"](last_arg.$type()))?(self.iter=last_arg,args=rest):self.iter=nil,self.arglist=$send(self,"s",["arglist"].concat($to_a(args)))}),-1),$def(self,"$compile",(function(){try{return $send(this,"handle_special",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return $truthy(self["$record_method?"]())&&self.$compiler().$method_calls()["$<<"](self.$meth().$to_sym()),$truthy(self["$using_eval?"]())&&Opal.ret(self.$compile_eval_var()),$truthy(self["$using_irb?"]())&&Opal.ret(self.$compile_irb_var()),self.$default_compile()}),{$$arity:0,$$s:this})}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),0),self.$private(),$def(self,"$iter_has_break?",(function(){var finder=nil;return!!$truthy(this.$iter())&&((finder=$$$($$$($$("Opal"),"Rewriters"),"BreakFinder").$new()).$process(this.$iter()),finder["$found_break?"]())}),0),$def(self,"$invoke_using_send?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$iter())?$ret_or_1:this["$splat?"]()}),0),$def(self,"$invoke_using_refinement?",(function(){return this.$scope().$scope().$collect_refinements_temps()["$empty?"]()["$!"]()}),0),$def(self,"$default_compile",(function(){var $writer=nil;return $truthy(this["$auto_await?"]())&&(this.$push("await "),$writer=[!0],$send(this.$scope(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy(this["$invoke_using_refinement?"]())?this.$compile_using_refined_send():$truthy(this["$invoke_using_send?"]())?this.$compile_using_send():this.$compile_simple_call_chain(),this.$compile_break_catcher()}),0),$def(self,"$compile_using_send",(function(){return this.$helper("send"),this.$push("$send("),this.$compile_receiver(),this.$compile_method_name(),this.$compile_arguments(),this.$compile_block_pass(),this.$push(")")}),0),$def(self,"$compile_using_refined_send",(function(){return this.$helper("refined_send"),this.$push("$refined_send("),this.$compile_refinements(),this.$compile_receiver(),this.$compile_method_name(),this.$compile_arguments(),this.$compile_block_pass(),this.$push(")")}),0),$def(self,"$compile_receiver",(function(){return this.$push(this.$recv(this.$receiver_sexp()))}),0),$def(self,"$compile_method_name",(function(){return this.$push(", '"+this.$meth()+"'")}),0),$def(self,"$compile_arguments",(function(){return this.$push(", "),$truthy(this["$splat?"]())?this.$push(this.$expr(this.$arglist())):$truthy(this.$arglist().$children()["$empty?"]())?this.$push("[]"):this.$push("[",this.$expr(this.$arglist()),"]")}),0),$def(self,"$compile_block_pass",(function(){return $truthy(this.$iter())?this.$push(", ",this.$expr(this.$iter())):nil}),0),$def(self,"$compile_refinements",(function(){var refinements;return refinements=$send(this.$scope().$collect_refinements_temps(),"map",[],(function $$5(i){return null==i&&(i=nil),(null==$$5.$$s?this:$$5.$$s).$s("js_tmp",i)}),{$$arity:1,$$s:this}),this.$push(this.$expr($send(this,"s",["array"].concat($to_a(refinements)))),", ")}),0),$def(self,"$compile_break_catcher",(function(){return $truthy(this["$iter_has_break?"]())?(this.$unshift("return "),this.$unshift("(function(){var $brk = Opal.new_brk(); try {"),this.$line("} catch (err) { if (err === $brk) { return err.$v } else { throw err } }})()")):nil}),0),$def(self,"$compile_simple_call_chain",(function(){return this.$push(this.$recv(this.$receiver_sexp()),this.$method_jsid(),"(",this.$expr(this.$arglist()),")")}),0),$def(self,"$splat?",(function(){return $send(this.$arglist().$children(),"any?",[],(function(a){return null==a&&(a=nil),a.$type()["$=="]("splat")}),1)}),0),$def(self,"$receiver_sexp",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$recvr())?$ret_or_1:this.$s("self")}),0),$def(self,"$method_jsid",(function(){return this.$mid_to_jsid(this.$meth().$to_s())}),0),$def(self,"$record_method?",(function(){return!0}),0),$def(self,"$compile_irb_var",(function(){return $send(this,"with_temp",[],(function $$9(tmp){var lvar,call,self=null==$$9.$$s?this:$$9.$$s;return null==tmp&&(tmp=nil),lvar=self.$meth(),call=self.$s("send",self.$s("self"),self.$meth().$intern(),self.$s("arglist")),self.$push("(("+tmp+" = Opal.irb_vars."+lvar+") == null ? ",self.$expr(call)," : "+tmp+")")}),{$$arity:1,$$s:this})}),0),$def(self,"$compile_eval_var",(function(){return this.$push(this.$meth().$to_s())}),0),$def(self,"$using_irb?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.compiler["$irb?"]())?this.$scope()["$top?"]():$ret_or_2)?this["$variable_like?"]():$ret_or_1}),0),$def(self,"$using_eval?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.compiler["$eval?"]())?this.$scope()["$top?"]():$ret_or_2)?this.compiler.$scope_variables()["$include?"](this.$meth()):$ret_or_1}),0),$def(self,"$variable_like?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.$arglist()["$=="](this.$s("arglist")))?this.$recvr()["$nil?"]():$ret_or_2)?this.$iter()["$nil?"]():$ret_or_1}),0),$def(self,"$sexp_with_arglist",(function(){return this.sexp.$updated(nil,[this.$recvr(),this.$meth(),this.$arglist()])}),0),$def(self,"$auto_await?",(function(){var $ret_or_1,$ret_or_2,awaited_set=nil;return awaited_set=this.$compiler().$async_await(),$truthy($ret_or_1=$truthy($ret_or_2=awaited_set)?awaited_set["$!="](!0):$ret_or_2)?awaited_set["$match?"](this.$meth().$to_s()):$ret_or_1}),0),$def(self,"$handle_special",(function $$handle_special(){var compile_default=$$handle_special.$$p||nil,method=nil;return delete $$handle_special.$$p,$truthy($$("SPECIALS")["$include?"](this.$meth()))?(method=this.$method("handle_"+this.$meth()),$eqeq(method.$arity(),1)?method["$[]"](compile_default):method["$[]"]()):Opal.yieldX(compile_default,[])}),0),$send($$("OPERATORS"),"each",[],(function $CallNode$14(operator,name){var self=null==$CallNode$14.$$s?this:$CallNode$14.$$s;return null==operator&&(operator=nil),null==name&&(name=nil),$send(self,"add_special",[operator.$to_sym()],(function $$15(compile_default){var $a,self=null==$$15.$$s?this:$$15.$$s,lhs=nil,rhs=nil;return null==compile_default&&(compile_default=nil),$truthy(self["$invoke_using_refinement?"]())?compile_default.$call():$truthy(self.$compiler()["$inline_operators?"]())?($truthy(self["$record_method?"]())&&self.$compiler().$method_calls()["$<<"](operator.$to_sym()),self.$helper("rb_"+name),lhs=($a=[self.$expr(self.$recvr()),self.$expr(self.$arglist())])[0],rhs=$a[1],self.$push(self.$fragment("$rb_"+name+"(")),self.$push(lhs),self.$push(self.$fragment(", ")),self.$push(rhs),self.$push(self.$fragment(")"))):compile_default.$call()}),{$$arity:1,$$s:self})}),{$$arity:2,$$s:self}),$send(self,"add_special",["require"],(function $CallNode$16(compile_default){var self=null==$CallNode$16.$$s?this:$CallNode$16.$$s,str=nil;return null==compile_default&&(compile_default=nil),str=$$("DependencyResolver").$new(self.$compiler(),self.$arglist().$children()["$[]"](0)).$resolve(),$truthy(str["$nil?"]())||self.$compiler().$requires()["$<<"](str),compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["require_relative"],(function $CallNode$17(){var self=null==$CallNode$17.$$s?this:$CallNode$17.$$s,arg=nil,file=nil,dir=nil;return arg=self.$arglist().$children()["$[]"](0),file=self.$compiler().$file(),$eqeq(arg.$type(),"str")&&(dir=$$("File").$dirname(file),self.$compiler().$requires()["$<<"](self.$Pathname(dir).$join(arg.$children()["$[]"](0)).$cleanpath().$to_s())),self.$push(self.$fragment(self.$scope().$self()+".$require("+file.$inspect()+"+ '/../' + ")),self.$push(self.$process(self.$arglist())),self.$push(self.$fragment(")"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["autoload"],(function $CallNode$18(compile_default){var self=null==$CallNode$18.$$s?this:$CallNode$18.$$s,args=nil,str=nil;return null==compile_default&&(compile_default=nil),args=self.$arglist().$children(),$eqeq(args.$length(),2)&&$eqeq(args["$[]"](0).$type(),"sym")&&(str=$$("DependencyResolver").$new(self.$compiler(),args["$[]"](1),"ignore").$resolve(),$truthy(str["$nil?"]())?self.$compiler().$warning("File for autoload of constant '"+args["$[]"](0).$children()["$[]"](0)+"' could not be bundled!"):(self.$compiler().$requires()["$<<"](str),self.$compiler().$autoloads()["$<<"](str))),compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["require_tree"],(function $CallNode$19(compile_default){var $a,rest,self=null==$CallNode$19.$$s?this:$CallNode$19.$$s,first_arg=nil,relative_path=nil,dir=nil,full_path=nil;return null==compile_default&&(compile_default=nil),first_arg=null==($a=[].concat($to_a(self.$arglist().$children())))[0]?nil:$a[0],rest=$slice.call($a,1),$eqeq(first_arg.$type(),"str")&&(relative_path=first_arg.$children()["$[]"](0),self.$compiler().$required_trees()["$<<"](relative_path),dir=$$("File").$dirname(self.$compiler().$file()),(full_path=self.$Pathname(dir).$join(relative_path).$cleanpath().$to_s()).$force_encoding(relative_path.$encoding()),first_arg=first_arg.$updated(nil,[full_path])),self.arglist=self.$arglist().$updated(nil,$rb_plus([first_arg],rest)),compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["block_given?"],(function $CallNode$20(){var self=null==$CallNode$20.$$s?this:$CallNode$20.$$s;return null==self.sexp&&(self.sexp=nil),self.$push(self.$compiler().$handle_block_given_call(self.sexp))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__callee__"],(function $CallNode$21(){var self=null==$CallNode$21.$$s?this:$CallNode$21.$$s;return $truthy(self.$scope()["$def?"]())?self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect())):self.$push(self.$fragment("nil"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__method__"],(function $CallNode$22(){var self=null==$CallNode$22.$$s?this:$CallNode$22.$$s;return $truthy(self.$scope()["$def?"]())?self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect())):self.$push(self.$fragment("nil"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__dir__"],(function $CallNode$23(){var self=null==$CallNode$23.$$s?this:$CallNode$23.$$s;return self.$push($$("File").$dirname($$$($$("Opal"),"Compiler").$module_name(self.$compiler().$file())).$inspect())}),{$$arity:0,$$s:self}),$send(self,"add_special",["using"],(function $CallNode$24(compile_default){var self=null==$CallNode$24.$$s?this:$CallNode$24.$$s;return null==compile_default&&(compile_default=nil),$truthy(self.$scope()["$accepts_using?"]())&&$eqeq(self.$arglist().$children().$count(),1)?self.$using_refinement(self.$arglist().$children().$first()):compile_default.$call()}),{$$arity:1,$$s:self}),$def(self,"$using_refinement",(function(arg){var $a,prev,curr;return prev=null==($a=[].concat($to_a(this.$scope().$refinements_temp())))[0]?nil:$a[0],curr=null==$a[1]?nil:$a[1],$truthy(prev)?this.$push("("+curr+" = "+prev+".slice(), "+curr+".push(",this.$expr(arg),"), "+this.$scope().$self()+")"):this.$push("("+curr+" = [",this.$expr(arg),"], "+this.$scope().$self()+")")}),1),$send(self,"add_special",["debugger"],(function $CallNode$25(){var self=null==$CallNode$25.$$s?this:$CallNode$25.$$s;return self.$push(self.$fragment("debugger"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__OPAL_COMPILER_CONFIG__"],(function $CallNode$26(){var self=null==$CallNode$26.$$s?this:$CallNode$26.$$s;return self.$push(self.$fragment("Opal.hash({ arity_check: "+self.$compiler()["$arity_check?"]()+" })"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["lambda"],(function $CallNode$27(compile_default){return null==compile_default&&(compile_default=nil),$send((null==$CallNode$27.$$s?this:$CallNode$27.$$s).$scope(),"defines_lambda",[],(function(){return compile_default.$call()}),0)}),{$$arity:1,$$s:self}),$send(self,"add_special",["nesting"],(function $CallNode$29(compile_default){var push_nesting,self=null==$CallNode$29.$$s?this:$CallNode$29.$$s;return null==compile_default&&(compile_default=nil),push_nesting=self["$push_nesting?"](),$truthy(push_nesting)&&self.$push("(Opal.Module.$$nesting = "+self.$scope().$nesting()+", "),compile_default.$call(),$truthy(push_nesting)?self.$push(")"):nil}),{$$arity:1,$$s:self}),$send(self,"add_special",["constants"],(function $CallNode$30(compile_default){var push_nesting,self=null==$CallNode$30.$$s?this:$CallNode$30.$$s;return null==compile_default&&(compile_default=nil),push_nesting=self["$push_nesting?"](),$truthy(push_nesting)&&self.$push("(Opal.Module.$$nesting = "+self.$scope().$nesting()+", "),compile_default.$call(),$truthy(push_nesting)?self.$push(")"):nil}),{$$arity:1,$$s:self}),$send(self,"add_special",["eval"],(function $CallNode$31(compile_default){var temp,scope_variables,self=null==$CallNode$31.$$s?this:$CallNode$31.$$s;return null==compile_default&&(compile_default=nil),$neqeq(self.$arglist().$children().$length(),1)||$not([self.$s("self"),nil]["$include?"](self.$recvr()))?compile_default.$call():(self.$scope().$nesting(),temp=self.$scope().$new_temp(),scope_variables=$send(self.$scope().$scope_locals(),"map",[],"to_s".$to_proc()).$inspect(),self.$push("("+temp+" = ",self.$expr(self.$arglist())),self.$push(", typeof Opal.compile === 'function' ? eval(Opal.compile("+temp),self.$push(", {scope_variables: ",scope_variables),self.$push(", arity_check: "+self.$compiler()["$arity_check?"]()+", file: '(eval)', eval: true})) : "),self.$push(self.$scope().$self()+".$eval("+temp+"))"))}),{$$arity:1,$$s:self}),$send(self,"add_special",["local_variables"],(function $CallNode$32(compile_default){var scope_variables,self=null==$CallNode$32.$$s?this:$CallNode$32.$$s;return null==compile_default&&(compile_default=nil),$truthy([self.$s("self"),nil]["$include?"](self.$recvr()))?(scope_variables=$send(self.$scope().$scope_locals(),"map",[],"to_s".$to_proc()).$inspect(),self.$push(scope_variables)):compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["binding"],(function $CallNode$33(compile_default){var self=null==$CallNode$33.$$s?this:$CallNode$33.$$s;return null==compile_default&&(compile_default=nil),$truthy(self.$recvr()["$nil?"]())?(self.$scope().$nesting(),self.$push("Opal.Binding.$new("),self.$push(" function($code, $value) {"),self.$push(" if (typeof $value === 'undefined') {"),self.$push(" return eval($code);"),self.$push(" }"),self.$push(" else {"),self.$push(" return eval($code + ' = $value');"),self.$push(" }"),self.$push(" },"),self.$push(" ",$send(self.$scope().$scope_locals(),"map",[],"to_s".$to_proc()).$inspect(),","),self.$push(" ",self.$scope().$self(),","),self.$push(" ",self.$source_location()),self.$push(")")):compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["__await__"],(function $CallNode$34(compile_default){var self=null==$CallNode$34.$$s?this:$CallNode$34.$$s,$writer=nil;return null==compile_default&&(compile_default=nil),$truthy(self.$compiler().$async_await())?(self.$push(self.$fragment("(await (")),self.$push(self.$process(self.$recvr())),self.$push(self.$fragment("))")),$writer=[!0],$send(self.$scope(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):compile_default.$call()}),{$$arity:1,$$s:self}),$def(self,"$push_nesting?",(function(){var $ret_or_1,recv=nil,$ret_or_2=nil,$ret_or_3=nil;return recv=this.$children().$first(),$truthy($ret_or_1=this.$children().$size()["$=="](2))?$truthy($ret_or_2=recv["$nil?"]())?$ret_or_2:$truthy($ret_or_3=recv.$type()["$=="]("const"))?recv.$children().$last()["$=="]("Module"):$ret_or_3:$ret_or_1}),0),function($base,$super,$parent_nesting){var self=$klass($base,null,"DependencyResolver"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.compiler=$proto.sexp=$proto.missing_dynamic_require=nil,$def(self,"$initialize",(function(compiler,sexp,missing_dynamic_require){var $ret_or_1;return null==missing_dynamic_require&&(missing_dynamic_require=nil),this.compiler=compiler,this.sexp=sexp,this.missing_dynamic_require=$truthy($ret_or_1=missing_dynamic_require)?$ret_or_1:this.compiler.$dynamic_require_severity()}),-3),$def(self,"$resolve",(function(){return this.$handle_part(this.sexp)}),0),$def(self,"$handle_part",(function(sexp,missing_dynamic_require){var $a,$b,$ret_or_1=nil,recv=nil,meth=nil,args=nil,parts=nil;if(null==missing_dynamic_require&&(missing_dynamic_require=this.missing_dynamic_require),$truthy(sexp)){if($eqeqeq("str",$ret_or_1=sexp.$type()))return sexp.$children()["$[]"](0);if($eqeqeq("dstr",$ret_or_1))return $send(sexp.$children(),"map",[],(function $$36(i){return null==i&&(i=nil),(null==$$36.$$s?this:$$36.$$s).$handle_part(i)}),{$$arity:1,$$s:this}).$join();if($eqeqeq("begin",$ret_or_1)){if($eqeq(sexp.$children().$length(),1))return this.$handle_part(sexp.$children()["$[]"](0))}else if($eqeqeq("send",$ret_or_1)){if($b=sexp.$children(),recv=null==($a=$to_ary($b))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),parts=$send(args,"map",[],(function $$37(s){return null==s&&(s=nil),(null==$$37.$$s?this:$$37.$$s).$handle_part(s,"ignore")}),{$$arity:1,$$s:this}),$truthy(parts["$include?"](nil)))return nil;if($truthy(recv["$is_a?"]($$$($$$($Opal,"AST"),"Node")))&&$eqeq(recv.$type(),"const")&&$eqeq(recv.$children().$last(),"File")){if($eqeq(meth,"expand_path"))return $send(this,"expand_path",$to_a(parts));if($eqeq(meth,"join"))return this.$expand_path(parts.$join("/"));if($eqeq(meth,"dirname"))return this.$expand_path(parts["$[]"](0).$split("/")["$[]"]($range(0,-1,!0)).$join("/"))}else if($eqeq(meth,"__dir__"))return $$("File").$dirname($$$($$("Opal"),"Compiler").$module_name(this.compiler.$file()))}}return $eqeqeq("error",$ret_or_1=missing_dynamic_require)?this.compiler.$error("Cannot handle dynamic require",this.sexp.$line()):$eqeqeq("warning",$ret_or_1)?this.compiler.$warning("Cannot handle dynamic require",this.sexp.$line()):nil}),-2),$def(self,"$expand_path",(function(path,base){return null==base&&(base=""),$send((base+"/"+path).$split("/"),"each_with_object",[[]],(function(part,p){return null==part&&(part=nil),null==p&&(p=nil),$eqeq(part,"")?nil:$eqeq(part,"..")?p.$pop():p["$<<"](part)}),2).$join("/")}),-2)}($nesting[0],0,$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/csend"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$def=Opal.def;return Opal.add_stubs("require,handle,helper,conditional_send,recv,receiver_sexp,push,compile_method_name,compile_arguments,compile_block_pass"),self.$require("opal/nodes/call"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"CSendNode");return self.$handle("csend"),$def(self,"$default_compile",(function(){return this.$helper("send"),$send(this,"conditional_send",[this.$recv(this.$receiver_sexp())],(function $$1(receiver_temp){var self=null==$$1.$$s?this:$$1.$$s;return null==receiver_temp&&(receiver_temp=nil),self.$push("$send(",receiver_temp),self.$compile_method_name(),self.$compile_arguments(),self.$compile_block_pass(),self.$push(")")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("CallNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/call_special"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$send=Opal.send;return Opal.add_stubs("require,handle,children,push,recv,recvr,expr,property,value,<<,default_compile,meth,receiver_sexp,method_jsid,compile_arguments,iter,s,lhs,rhs,==,type,first,map,flatten,scan,to_proc,empty?,stmt?,process"),self.$require("opal/nodes/base"),self.$require("opal/nodes/call"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"JsAttrNode");self.$handle("jsattr"),self.$children("recvr","property"),$def(self,"$compile",(function(){return this.$push(this.$recv(this.$recvr()),"[",this.$expr(this.$property()),"]")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JsAttrAsgnNode");self.$handle("jsattrasgn"),self.$children("recvr","property","value"),$def(self,"$compile",(function(){return this.$push(this.$recv(this.$recvr()),"[",this.$expr(this.$property()),"] = ",this.$expr(this.$value()))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JsCallNode"),$proto=self.$$prototype;$proto.iter=$proto.arglist=nil,self.$handle("jscall"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$truthy(self.iter)&&(self.arglist=self.arglist["$<<"](self.iter)),self.iter=nil}),-1),$def(self,"$compile",(function(){return this.$default_compile()}),0),$def(self,"$method_jsid",(function(){return"."+this.$meth()}),0),$def(self,"$compile_using_send",(function(){return this.$push(this.$recv(this.$receiver_sexp()),this.$method_jsid(),".apply(null"),this.$compile_arguments(),$truthy(this.$iter())&&this.$push(".concat(",this.$expr(this.$iter()),")"),this.$push(")")}),0)}($nesting[0],$$("CallNode")),function($base,$super){var self=$klass($base,$super,"Match3Node");return self.$$prototype.level=nil,self.$handle("match_with_lvasgn"),self.$children("lhs","rhs"),$def(self,"$compile",(function(){var sexp=nil,re=nil,names=nil,names_def=nil;return sexp=this.$s("send",this.$lhs(),"=~",this.$rhs()),$eqeq(this.$lhs().$type(),"regexp")&&$eqeq(this.$lhs().$children().$first().$type(),"str")&&(re=this.$lhs().$children().$first().$children().$first(),names=$send(re.$scan(/\(\?<([^>]*)>/).$flatten(),"map",[],"to_sym".$to_proc()),$truthy(names["$empty?"]())||(names_def=this.$s("lvasgn","$m3names",this.$s("if",this.$s("gvar","$~"),this.$s("send",this.$s("gvar","$~"),"named_captures"),this.$s("hash"))),names=$send(names,"map",[],(function $$1(name){var self=null==$$1.$$s?this:$$1.$$s;return null==name&&(name=nil),self.$s("lvasgn",name,self.$s("send",self.$s("lvar","$m3names"),"[]",self.$s("sym",name)))}),{$$arity:1,$$s:this}),sexp=$truthy(this["$stmt?"]())?$send(this,"s",["begin",sexp,names_def].concat($to_a(names))):$send(this,"s",["begin",this.$s("lvasgn","$m3tmp",sexp),names_def].concat($to_a(names)).concat([this.$s("lvar","$m3tmp")])))),this.$push(this.$process(sexp,this.level))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/scope"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$def=Opal.def,$send=Opal.send,$rb_minus=Opal.rb_minus,$truthy=Opal.truthy,$not=Opal.not,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$hash2=Opal.hash2;return Opal.add_stubs("require,attr_accessor,attr_reader,indent,scope,compiler,scope=,-,==,iter?,!,class?,dup,push,map,ivars,gvars,empty?,<<,parser_indent,join,+,fragment,def_in_class?,add_proto_ivar,include?,has_local?,|,scope_locals,reject,start_with?,to_s,has_temp?,pop,next_temp,loop,succ,uses_block!,identify!,valid_name?,mid,compact,parent,name,scope_name,unique_temp,lambda?,def?,type,nil?,rescue_else_sexp,last,class,collect_refinements_temps,add_scope_local,new_refinements_temp,identity,block_name=,add_temp,block_name,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ScopeNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.type=$proto.is_lambda=$proto.lambda_definition=$proto.defs=$proto.parent=$proto.temps=$proto.locals=$proto.proto_ivars=$proto.compiler=$proto.ivars=$proto.gvars=$proto.args=$proto.queue=$proto.while_stack=$proto.identity=$proto.uses_block=$proto.rescues=$proto.in_resbody=$proto.in_ensure=$proto.next_retry_id=$proto.refinements_temp=$proto.block_prepared=nil,self.$attr_accessor("parent"),self.$attr_accessor("name"),self.$attr_accessor("block_name"),self.$attr_reader("scope_name"),self.$attr_reader("locals"),self.$attr_reader("ivars"),self.$attr_reader("gvars"),self.$attr_accessor("mid"),self.$attr_accessor("defs"),self.$attr_reader("methods"),self.$attr_accessor("catch_return","has_break","has_retry"),self.$attr_accessor("rescue_else_sexp"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.locals=[],self.temps=[],self.args=[],self.ivars=[],self.gvars=[],self.parent=nil,self.queue=[],self.unique="a",self.while_stack=[],self.identity=nil,self.defs=nil,self.methods=[],self.uses_block=!1,self.in_ensure=!1,self.proto_ivars=[]}),-1),$def(self,"$in_scope",(function $$in_scope(){var $yield=$$in_scope.$$p||nil;return delete $$in_scope.$$p,$send(this,"indent",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s,$writer=nil;return null==self.parent&&(self.parent=nil),self.parent=self.$compiler().$scope(),$writer=[self],$send(self.$compiler(),"scope=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],Opal.yield1($yield,self),$writer=[self.parent],$send(self.$compiler(),"scope=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:0,$$s:this})}),0),$def(self,"$class_scope?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.type["$=="]("class"))?$ret_or_1:this.type["$=="]("module")}),0),$def(self,"$class?",(function(){return this.type["$=="]("class")}),0),$def(self,"$module?",(function(){return this.type["$=="]("module")}),0),$def(self,"$sclass?",(function(){return this.type["$=="]("sclass")}),0),$def(self,"$top?",(function(){return this.type["$=="]("top")}),0),$def(self,"$iter?",(function(){return this.type["$=="]("iter")}),0),$def(self,"$def?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.type["$=="]("def"))?$ret_or_1:this.type["$=="]("defs")}),0),$def(self,"$lambda?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$iter?"]())?this.is_lambda:$ret_or_1}),0),$def(self,"$is_lambda!",(function(){return this.is_lambda=!0}),0),$def(self,"$defines_lambda",(function $$defines_lambda(){var $yield=$$defines_lambda.$$p||nil;return delete $$defines_lambda.$$p,this.lambda_definition=!0,Opal.yieldX($yield,[]),this.lambda_definition=!1}),0),$def(self,"$lambda_definition?",(function(){return this.lambda_definition}),0),$def(self,"$def_in_class?",(function(){var $ret_or_1,$ret_or_2,$ret_or_3;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.defs["$!"]())?this.type["$=="]("def"):$ret_or_3)?this.parent:$ret_or_2)?this.parent["$class?"]():$ret_or_1}),0),$def(self,"$to_vars",(function(){var indent,vars=nil,iv=nil,gv=nil,str=nil;return vars=this.temps.$dup(),$send(vars,"push",$to_a($send(this.locals,"map",[],(function(l){return null==l&&(l=nil),l+" = nil"}),1))),iv=$send(this.$ivars(),"map",[],(function(ivar){return null==ivar&&(ivar=nil),"if (self"+ivar+" == null) self"+ivar+" = nil;\n"}),1),gv=$send(this.$gvars(),"map",[],(function(gvar){return null==gvar&&(gvar=nil),"if ($gvars"+gvar+" == null) $gvars"+gvar+" = nil;\n"}),1),$truthy(this["$class?"]())&&$not(this.proto_ivars["$empty?"]())&&vars["$<<"]("$proto = self.$$prototype"),indent=this.compiler.$parser_indent(),str=$truthy(vars["$empty?"]())?"":"var "+vars.$join(", ")+";\n",$truthy(this.$ivars()["$empty?"]())||(str=$rb_plus(str,""+indent+iv.$join(indent))),$truthy(this.$gvars()["$empty?"]())||(str=$rb_plus(str,""+indent+gv.$join(indent))),$truthy(this["$class?"]())&&$not(this.proto_ivars["$empty?"]())&&(str=str+"\n"+indent+$send(this.proto_ivars,"map",[],(function(i){return null==i&&(i=nil),"$proto"+i}),1).$join(" = ")+" = nil;"),this.$fragment(str)}),0),$def(self,"$add_scope_ivar",(function(ivar){return $truthy(this["$def_in_class?"]())?this.parent.$add_proto_ivar(ivar):$truthy(this.ivars["$include?"](ivar))?nil:this.ivars["$<<"](ivar)}),1),$def(self,"$add_scope_gvar",(function(gvar){return $truthy(this.gvars["$include?"](gvar))?nil:this.gvars["$<<"](gvar)}),1),$def(self,"$add_proto_ivar",(function(ivar){return $truthy(this.proto_ivars["$include?"](ivar))?nil:this.proto_ivars["$<<"](ivar)}),1),$def(self,"$add_arg",(function(arg){return $truthy(this.args["$include?"](arg))||this.args["$<<"](arg),arg}),1),$def(self,"$add_scope_local",(function(local){return $truthy(this["$has_local?"](local))?nil:this.locals["$<<"](local)}),1),$def(self,"$has_local?",(function(local){return!!($truthy(this.locals["$include?"](local))||$truthy(this.args["$include?"](local))||$truthy(this.temps["$include?"](local)))||!(!$truthy(this.parent)||!$eqeq(this.type,"iter"))&&this.parent["$has_local?"](local)}),1),$def(self,"$scope_locals",(function(){var locals;return locals=this.locals["$|"](this.args)["$|"]($truthy(this.parent)&&$eqeq(this.type,"iter")?this.parent.$scope_locals():[]),$send(locals,"reject",[],(function(i){return null==i&&(i=nil),i.$to_s()["$start_with?"]("$")}),1)}),0),$def(self,"$add_scope_temp",(function(tmp){return $truthy(this["$has_temp?"](tmp))?nil:this.temps.$push(tmp)}),1),$def(self,"$has_temp?",(function(tmp){return this.temps["$include?"](tmp)}),1),$def(self,"$new_temp",(function(){var tmp;return $truthy(this.queue["$empty?"]())?(tmp=this.$next_temp(),this.temps["$<<"](tmp),tmp):this.queue.$pop()}),0),$def(self,"$next_temp",(function(){var self=this,tmp=nil;return tmp=nil,function(){var $brk=Opal.new_brk();try{$send(self,"loop",[],(function $$20(){var self=null==$$20.$$s?this:$$20.$$s;if(null==self.unique&&(self.unique=nil),tmp="$"+self.unique,self.unique=self.unique.$succ(),$truthy(self["$has_local?"](tmp)))return nil;Opal.brk(nil,$brk)}),{$$arity:0,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),tmp}),0),$def(self,"$queue_temp",(function(name){return this.queue["$<<"](name)}),1),$def(self,"$push_while",(function(){var info;return info=$hash2([],{}),this.while_stack.$push(info),info}),0),$def(self,"$pop_while",(function(){return this.while_stack.$pop()}),0),$def(self,"$in_while?",(function(){return this.while_stack["$empty?"]()["$!"]()}),0),$def(self,"$uses_block!",(function(){return $eqeq(this.type,"iter")&&$truthy(this.parent)?this.parent["$uses_block!"]():(this.uses_block=!0,this["$identify!"]())}),0),$def(self,"$identify!",(function(name){var $ret_or_1=nil,$ret_or_2=nil,$ret_or_3=nil;return null==name&&(name=nil),$truthy(this.identity)||($truthy(this["$valid_name?"](this.$mid()))?this.identity="$$"+this.$mid():(name=$truthy($ret_or_1=name)?$ret_or_1:[$truthy($ret_or_2=this.$parent())?$truthy($ret_or_3=this.$parent().$name())?$ret_or_3:this.$parent().$scope_name():$ret_or_2,this.$mid()].$compact().$join("_"),this.identity=this.compiler.$unique_temp(name))),this.identity}),-1),self.$attr_reader("identity"),$def(self,"$find_parent_def",(function(){var scope=nil;for(scope=this;$truthy(scope=scope.$parent());)if($truthy(scope["$def?"]())||$truthy(scope["$lambda?"]()))return scope;return nil}),0),$def(self,"$super_chain",(function(){var $a,chain=nil,scope=nil,defn=nil,mid=nil;for(chain=($a=[[],this,"null","null"])[0],scope=$a[1],defn=$a[2],mid=$a[3];$truthy(scope);){if(!$eqeq(scope.$type(),"iter")){if($truthy(["def","defs"]["$include?"](scope.$type()))){defn=scope["$identify!"](),mid="'"+scope.$mid()+"'";break}break}chain["$<<"](scope["$identify!"]()),$truthy(scope.$parent())&&(scope=scope.$parent())}return[chain,defn,mid]}),0),$def(self,"$uses_block?",(function(){return this.uses_block}),0),$def(self,"$has_rescue_else?",(function(){return this.$rescue_else_sexp()["$nil?"]()["$!"]()}),0),$def(self,"$in_rescue",(function $$in_rescue(node){var $ret_or_1,result,$yield=$$in_rescue.$$p||nil;return delete $$in_rescue.$$p,this.rescues=$truthy($ret_or_1=this.rescues)?$ret_or_1:[],this.rescues.$push(node),result=Opal.yieldX($yield,[]),this.rescues.$pop(),result}),1),$def(self,"$current_rescue",(function(){return this.rescues.$last()}),0),$def(self,"$in_resbody",(function $$in_resbody(){var result,$yield=$$in_resbody.$$p||nil;return delete $$in_resbody.$$p,$yield===nil?nil:(this.in_resbody=!0,result=Opal.yieldX($yield,[]),this.in_resbody=!1,result)}),0),$def(self,"$in_resbody?",(function(){return this.in_resbody}),0),$def(self,"$in_ensure",(function $$in_ensure(){var result,$yield=$$in_ensure.$$p||nil;return delete $$in_ensure.$$p,$yield===nil?nil:(this.in_ensure=!0,result=Opal.yieldX($yield,[]),this.in_ensure=!1,result)}),0),$def(self,"$in_ensure?",(function(){return this.in_ensure}),0),$def(self,"$gen_retry_id",(function(){var $ret_or_1;return this.next_retry_id=$truthy($ret_or_1=this.next_retry_id)?$ret_or_1:"retry_0",this.next_retry_id=this.next_retry_id.$succ()}),0),$def(self,"$accepts_using?",(function(){return[$$("TopNode"),$$("ModuleNode"),$$("ClassNode"),$$("IterNode")]["$include?"](this.$class())}),0),$def(self,"$collect_refinements_temps",(function(temps){return null==temps&&(temps=[]),$truthy(this.refinements_temp)&&temps["$<<"](this.refinements_temp),$truthy(this.$parent())?this.$parent().$collect_refinements_temps(temps):temps}),-1),$def(self,"$new_refinements_temp",(function(){var var$;return var$=this.$compiler().$unique_temp("$refn"),this.$add_scope_local(var$),var$}),0),$def(self,"$refinements_temp",(function(){var $a,prev,curr;return prev=($a=[this.refinements_temp,this.$new_refinements_temp()])[0],curr=$a[1],this.refinements_temp=curr,[prev,curr]}),0),$def(self,"$self",(function(){return this.define_self=!0,"self"}),0),$def(self,"$nesting",(function(){return this.define_nesting=!0,"$nesting"}),0),$def(self,"$relative_access",(function(){return this.define_relative_access=this.define_nesting=!0,"$$"}),0),$def(self,"$prepare_block",(function(block_name){var scope_name,$writer=nil;return null==block_name&&(block_name=nil),scope_name=this.$scope().$identity(),$truthy(block_name)&&($send(this,"block_name=",$to_a($writer=[block_name])),$writer[$rb_minus($writer.length,1)]),this.$add_temp(this.$block_name()+" = "+scope_name+".$$p || nil"),$truthy(this.block_prepared)?nil:(this.$line("delete "+scope_name+".$$p;"),this.block_prepared=!0)}),-1),self.$attr_accessor("await_encountered")}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/module"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_ary=Opal.to_ary,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$def=Opal.def;return Opal.add_stubs("require,handle,children,name_and_base,helper,nil?,body,stmt?,unshift,line,in_scope,name=,scope,-,compile_body,await_encountered,await_encountered=,parent,+,nesting,private,cid,expr,stmt,returns,compiler,empty_line,add_temp,to_vars"),self.$require("opal/nodes/scope"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ModuleNode"),$proto=self.$$prototype;return $proto.define_nesting=$proto.define_relative_access=nil,self.$handle("module"),self.$children("cid","body"),$def(self,"$compile",(function(){var $a,$b,name,base,await_begin=nil,await_end=nil,async=nil,$writer=nil;return $b=this.$name_and_base(),$a=$to_ary($b),name=null==$a[0]?nil:$a[0],base=null==$a[1]?nil:$a[1],this.$helper("module"),$truthy(this.$body()["$nil?"]())?$truthy(this["$stmt?"]())?this.$unshift("$module(",base,", '"+name+"')"):this.$unshift("($module(",base,", '"+name+"'), nil)"):(this.$line(" var self = $module($base, '"+name+"');"),$send(this,"in_scope",[],(function $$1(){var $writer,self=null==$$1.$$s?this:$$1.$$s;return $writer=[name],$send(self.$scope(),"name=",$to_a($writer)),$rb_minus($writer.length,1),self.$compile_body()}),{$$arity:0,$$s:this}),$truthy(this.$await_encountered())?(await_begin="(await ",await_end=")",async="async ",$writer=[!0],$send(this.$parent(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):(await_begin=($a=["","",""])[0],await_end=$a[1],async=$a[2]),this.$unshift(await_begin+"("+async+"function($base"+($truthy(this.define_nesting)?", $parent_nesting":nil)+") {"),this.$line("})(",base,($truthy(this.define_nesting)?$rb_plus(", ",this.$scope().$nesting()):nil)+")"+await_end))}),0),self.$private(),$def(self,"$name_and_base",(function(){var $a,$b,name,base=nil;return $b=this.$cid().$children(),base=null==($a=$to_ary($b))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],$truthy(base["$nil?"]())?[name,this.$scope().$nesting()+"[0]"]:[name,this.$expr(base)]}),0),$def(self,"$compile_body",(function(){var body_code;return body_code=this.$stmt(this.$compiler().$returns(this.$body())),this.$empty_line(),$truthy(this.define_nesting)&&this.$add_temp("$nesting = [self].concat($parent_nesting)"),$truthy(this.define_relative_access)&&this.$add_temp("$$ = Opal.$r($nesting)"),this.$line(this.$scope().$to_vars()),this.$line(body_code)}),0)}($nesting[0],$$("ScopeNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/class"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_ary=Opal.to_ary,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$def=Opal.def;return Opal.add_stubs("require,handle,children,name_and_base,helper,nil?,body,stmt?,unshift,super_code,line,in_scope,name=,scope,-,compile_body,await_encountered,await_encountered=,parent,+,nesting,sup,expr"),self.$require("opal/nodes/module"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ClassNode");return self.$$prototype.define_nesting=nil,self.$handle("class"),self.$children("cid","sup","body"),$def(self,"$compile",(function(){var $a,$b,name,base,await_begin=nil,await_end=nil,async=nil,$writer=nil;return $b=this.$name_and_base(),$a=$to_ary($b),name=null==$a[0]?nil:$a[0],base=null==$a[1]?nil:$a[1],this.$helper("klass"),$truthy(this.$body()["$nil?"]())?$truthy(this["$stmt?"]())?this.$unshift("$klass(",base,", ",this.$super_code(),", '"+name+"')"):this.$unshift("($klass(",base,", ",this.$super_code(),", '"+name+"'), nil)"):(this.$line(" var self = $klass($base, $super, '"+name+"');"),$send(this,"in_scope",[],(function $$1(){var $writer,self=null==$$1.$$s?this:$$1.$$s;return $writer=[name],$send(self.$scope(),"name=",$to_a($writer)),$rb_minus($writer.length,1),self.$compile_body()}),{$$arity:0,$$s:this}),$truthy(this.$await_encountered())?(await_begin="(await ",await_end=")",async="async ",$writer=[!0],$send(this.$parent(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):(await_begin=($a=["","",""])[0],await_end=$a[1],async=$a[2]),this.$unshift(await_begin+"("+async+"function($base, $super"+($truthy(this.define_nesting)?", $parent_nesting":nil)+") {"),this.$line("})(",base,", ",this.$super_code(),($truthy(this.define_nesting)?$rb_plus(", ",this.$scope().$nesting()):nil)+")"+await_end))}),0),$def(self,"$super_code",(function(){return $truthy(this.$sup())?this.$expr(this.$sup()):"null"}),0)}($nesting[0],$$("ModuleNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/singleton_class"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("require,handle,children,push,in_scope,stmt,returns,compiler,body,add_temp,line,to_vars,scope,recv,object,nesting"),self.$require("opal/nodes/scope"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"SingletonClassNode");return self.$handle("sclass"),self.$children("object","body"),$def(self,"$compile",(function(){return this.$push("(function(self, $parent_nesting) {"),$send(this,"in_scope",[],(function $$1(){var body_stmt,self=null==$$1.$$s?this:$$1.$$s;return null==self.define_nesting&&(self.define_nesting=nil),null==self.define_relative_access&&(self.define_relative_access=nil),body_stmt=self.$stmt(self.$compiler().$returns(self.$body())),$truthy(self.define_nesting)&&self.$add_temp("$nesting = [self].concat($parent_nesting)"),$truthy(self.define_relative_access)&&self.$add_temp("$$ = Opal.$r($nesting)"),self.$line(self.$scope().$to_vars()),self.$line(body_stmt)}),{$$arity:0,$$s:this}),this.$line("})(Opal.get_singleton_class(",this.$recv(this.$object()),"), "+this.$scope().$nesting()+")")}),0)}($nesting[0],$$("ScopeNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_arg,scope,name,push,to_s"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArgNode");return self.$handle("arg"),self.$children("name"),$def(self,"$compile",(function(){return this.$scope().$add_arg(this.$name()),this.$push(this.$name().$to_s())}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/arity_check"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$def=Opal.def,$send=Opal.send,$rb_minus=Opal.rb_minus,$truthy=Opal.truthy,$not=Opal.not,$rb_lt=Opal.rb_lt,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt;return Opal.add_stubs("require,handle,children,new,args_node,args,optargs,restarg,postargs,kwargs,kwoptargs,kwrestarg,kwnilarg,arity,arity=,scope,-,arity_check?,compiler,empty?,arity_checks,helper,inspect,to_s,mid,line,push,join,compact,size,all_args,!,-@,<,+,>,<<,has_only_optional_kwargs?,any?,negative_arity,positive_arity,select,include?,type,has_required_kwargs?,all?,==,def?,class_scope?,top?,parent,class?,name,module?,identity"),self.$require("opal/nodes/base"),self.$require("opal/rewriters/arguments"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ArityCheckNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.kwargs=$proto.kwoptargs=$proto.kwrestarg=$proto.all_args=$proto.args=$proto.optargs=$proto.restarg=$proto.postargs=$proto.arity_checks=nil,self.$handle("arity_check"),self.$children("args_node"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this,arguments$=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),arguments$=$$$($$("Rewriters"),"Arguments").$new(self.$args_node().$children()),self.args=arguments$.$args(),self.optargs=arguments$.$optargs(),self.restarg=arguments$.$restarg(),self.postargs=arguments$.$postargs(),self.kwargs=arguments$.$kwargs(),self.kwoptargs=arguments$.$kwoptargs(),self.kwrestarg=arguments$.$kwrestarg(),self.kwnilarg=arguments$.$kwnilarg()}),-1),$def(self,"$compile",(function(){var $writer,meth=nil;return $writer=[this.$arity()],$send(this.$scope(),"arity=",$to_a($writer)),$rb_minus($writer.length,1),$truthy(this.$compiler()["$arity_check?"]())?$truthy(this.$arity_checks()["$empty?"]())?nil:(this.$helper("ac"),meth=this.$scope().$mid().$to_s().$inspect(),this.$line("var $arity = arguments.length;"),this.$push(" if ("+this.$arity_checks().$join(" || ")+") { $ac($arity, "+this.$arity()+", this, "+meth+"); }")):nil}),0),$def(self,"$kwargs",(function(){return[].concat($to_a(this.kwargs)).concat($to_a(this.kwoptargs)).concat([this.kwrestarg]).$compact()}),0),$def(self,"$all_args",(function(){var $ret_or_1;return this.all_args=$truthy($ret_or_1=this.all_args)?$ret_or_1:[].concat($to_a(this.args)).concat($to_a(this.optargs)).concat([this.restarg]).concat($to_a(this.postargs)).concat($to_a(this.$kwargs())).$compact()}),0),$def(self,"$arity_checks",(function(){var $a,arity=nil,min_arity=nil,max_arity=nil;return $truthy(null!=($a=this.arity_checks)&&$a!==nil?"instance-variable":nil)||(arity=this.$all_args().$size(),arity=$rb_minus(arity,this.optargs.$size()),$truthy(this.restarg)&&(arity=$rb_minus(arity,1)),arity=$rb_minus(arity,this.$kwargs().$size()),($not(this.optargs["$empty?"]())||$not(this.$kwargs()["$empty?"]())||$truthy(this.restarg))&&(arity=$rb_minus(arity["$-@"](),1)),this.arity_checks=[],$truthy($rb_lt(arity,0))?(min_arity=$rb_plus(arity,1)["$-@"](),max_arity=this.$all_args().$size(),$truthy($rb_gt(min_arity,0))&&this.arity_checks["$<<"]("$arity < "+min_arity),$truthy(this.restarg)||this.arity_checks["$<<"]("$arity > "+max_arity)):this.arity_checks["$<<"]("$arity !== "+arity)),this.arity_checks}),0),$def(self,"$arity",(function(){return $truthy(this.restarg)||$truthy(this.optargs["$any?"]())||$truthy(this["$has_only_optional_kwargs?"]())?this.$negative_arity():this.$positive_arity()}),0),$def(self,"$negative_arity",(function(){var result=nil;return result=$send(this.$all_args(),"select",[],(function(arg){return null==arg&&(arg=nil),["arg","mlhs"]["$include?"](arg.$type())}),1).$size(),$truthy(this["$has_required_kwargs?"]())&&(result=$rb_plus(result,1)),result=$rb_minus(result["$-@"](),1)}),0),$def(self,"$positive_arity",(function(){var result=nil;return result=this.$all_args().$size(),result=$rb_minus(result,this.$kwargs().$size()),$truthy(this.$kwargs()["$any?"]())&&(result=$rb_plus(result,1)),result}),0),$def(self,"$has_only_optional_kwargs?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$kwargs()["$any?"]())?$send(this.$kwargs(),"all?",[],(function(arg){return null==arg&&(arg=nil),["kwoptarg","kwrestarg"]["$include?"](arg.$type())}),1):$ret_or_1}),0),$def(self,"$has_required_kwargs?",(function(){return $send(this.$kwargs(),"any?",[],(function(arg){return null==arg&&(arg=nil),arg.$type()["$=="]("kwarg")}),1)}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"IterArityCheckNode");return self.$handle("iter_arity_check"),$def(self,"$compile",(function(){var $writer,parent_scope=nil,$ret_or_1=nil,$ret_or_2=nil,context=nil,identity=nil;if($writer=[this.$arity()],$send(this.$scope(),"arity=",$to_a($writer)),$rb_minus($writer.length,1),!$truthy(this.$compiler()["$arity_check?"]()))return nil;if($truthy(this.$arity_checks()["$empty?"]()))return nil;for(parent_scope=this.$scope();!$truthy($truthy($ret_or_1=$truthy($ret_or_2=parent_scope["$def?"]())?$ret_or_2:parent_scope["$class_scope?"]())?$ret_or_1:parent_scope["$top?"]());)parent_scope=parent_scope.$parent();return context=$truthy(parent_scope["$top?"]())?"'
      '":$truthy(parent_scope["$def?"]())?"'"+parent_scope.$mid()+"'":$truthy(parent_scope["$class?"]())?"''":$truthy(parent_scope["$module?"]())?"''":nil,identity=this.$scope().$identity(),this.$line("if ("+identity+".$$is_lambda || "+identity+".$$define_meth) {"),this.$line(" var $arity = arguments.length;"),this.$line(" if ("+this.$arity_checks().$join(" || ")+") { Opal.block_ac($arity, "+this.$arity()+", "+context+"); }"),this.$line("}")}),0)}($nesting[0],$$("ArityCheckNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/ensure_kwargs_are_kwargs"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,helper,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"EnsureKwargsAreKwargs");return self.$handle("ensure_kwargs_are_kwargs"),$def(self,"$compile",(function(){return this.$helper("hash2"),this.$line("if ($kwargs == null) {"),this.$line(" $kwargs = $hash2([], {});"),this.$line("} else if (!$kwargs.$$is_hash) {"),this.$line(" throw Opal.ArgumentError.$new('expected kwargs');"),this.$line("}")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_block_arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,uses_block!,scope,add_arg,name,prepare_block"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractBlockarg");return self.$handle("extract_blockarg"),self.$children("name"),$def(self,"$compile",(function(){return this.$scope()["$uses_block!"](),this.$scope().$add_arg(this.$name()),this.$scope().$prepare_block(this.$name())}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,[],meta,<<,used_kwargs,scope,add_temp,lvar_name,line,inspect,to_s"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwarg");return self.$$prototype.sexp=nil,self.$handle("extract_kwarg"),self.$children("lvar_name"),$def(self,"$compile",(function(){var key_name=nil;return key_name=this.sexp.$meta()["$[]"]("arg_name"),this.$scope().$used_kwargs()["$<<"](key_name),this.$add_temp(this.$lvar_name()),this.$line("if (!Opal.hasOwnProperty.call($kwargs.$$smap, '"+key_name+"')) {"),this.$line(" throw Opal.ArgumentError.$new('missing keyword: "+key_name+"');"),this.$line("}"),this.$line(this.$lvar_name()+" = $kwargs.$$smap["+key_name.$to_s().$inspect()+"];")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwargs"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,add_temp,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwargs");return self.$handle("extract_kwargs"),$def(self,"$compile",(function(){return this.$add_temp("$kwargs"),this.$line("$kwargs = Opal.extract_kwargs($post_args)")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwoptarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,[],meta,<<,used_kwargs,scope,add_temp,lvar_name,line,inspect,to_s,==,default_value,expr"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwoptarg");return self.$$prototype.sexp=nil,self.$handle("extract_kwoptarg"),self.$children("lvar_name","default_value"),$def(self,"$compile",(function(){var key_name=nil;return key_name=this.sexp.$meta()["$[]"]("arg_name"),this.$scope().$used_kwargs()["$<<"](key_name),this.$add_temp(this.$lvar_name()),this.$line(this.$lvar_name()+" = $kwargs.$$smap["+key_name.$to_s().$inspect()+"];"),$eqeq(this.$default_value().$children()["$[]"](1),"undefined")?nil:this.$line("if ("+this.$lvar_name()+" == null) "+this.$lvar_name()+" = ",this.$expr(this.$default_value()))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwrestarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("require,handle,children,name,add_temp,line,used_kwargs,map,scope,join"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwrestarg");return self.$handle("extract_kwrestarg"),self.$children("name"),$def(self,"$compile",(function(){var name,$ret_or_1;return name=$truthy($ret_or_1=this.$name())?$ret_or_1:"$kw_rest_arg",this.$add_temp(name),this.$line(name+" = Opal.kwrestargs($kwargs, "+this.$used_kwargs()+");")}),0),$def(self,"$used_kwargs",(function(){return"{"+$send(this.$scope().$used_kwargs(),"map",[],(function(arg_name){return null==arg_name&&(arg_name=nil),"'"+arg_name+"': true"}),1).$join(",")+"}"}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_optarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,==,[],default_value,line,name,expr"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractOptargNode");return self.$handle("extract_optarg"),self.$children("name","default_value"),$def(self,"$compile",(function(){return $eqeq(this.$default_value().$children()["$[]"](1),"undefined")?nil:this.$line("if ("+this.$name()+" == null) "+this.$name()+" = ",this.$expr(this.$default_value()),";")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_post_arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_temp,name,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractPostArg");return self.$handle("extract_post_arg"),self.$children("name"),$def(self,"$compile",(function(){return this.$add_temp(this.$name()),this.$line(this.$name()+" = $post_args.shift();"),this.$line("if ("+this.$name()+" == null) "+this.$name()+" = nil;")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_post_optarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_temp,name,line,args_to_keep,==,[],default_value,expr"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractPostOptarg");return self.$handle("extract_post_optarg"),self.$children("name","default_value","args_to_keep"),$def(self,"$compile",(function(){return this.$add_temp(this.$name()),this.$line("if ($post_args.length > "+this.$args_to_keep()+") "+this.$name()+" = $post_args.shift();"),$eqeq(this.$default_value().$children()["$[]"](1),"undefined")?nil:this.$line("if ("+this.$name()+" == null) "+this.$name()+" = ",this.$expr(this.$default_value()),";")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_restarg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,name,add_temp,==,args_to_keep,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractRestarg");return self.$handle("extract_restarg"),self.$children("name","args_to_keep"),$def(self,"$compile",(function(){var name,$ret_or_1;return name=$truthy($ret_or_1=this.$name())?$ret_or_1:"$rest_arg",this.$add_temp(name),$eqeq(this.$args_to_keep(),0)?this.$line(name+" = $post_args;"):this.$line(name+" = $post_args.splice(0, $post_args.length - "+this.$args_to_keep()+");")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/fake_arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,next_temp,scope,add_arg,push"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"FakeArgNode");return self.$handle("fake_arg"),$def(self,"$compile",(function(){var name;return name=this.$scope().$next_temp(),this.$scope().$add_arg(name),this.$push(name)}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/initialize_iterarg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,line,name"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"InitializeIterarg");return self.$handle("initialize_iter_arg"),self.$children("name"),$def(self,"$compile",(function(){return this.$line("if ("+this.$name()+" == null) "+this.$name()+" = nil;")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/initialize_shadowarg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,<<,locals,scope,name,add_arg,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"InitializeShadowarg");return self.$handle("initialize_shadowarg"),self.$children("name"),$def(self,"$compile",(function(){return this.$scope().$locals()["$<<"](this.$name()),this.$scope().$add_arg(this.$name()),this.$line(this.$name()+" = nil;")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/parameters"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a,$truthy=Opal.truthy,$eqeq=Opal.eqeq;return Opal.add_stubs("children,map,public_send,type,join,compact,=="),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,null,"Parameters");return self.$$prototype.args=nil,$def(self,"$initialize",(function(args){return this.args=args.$children()}),1),$def(self,"$to_code",(function(){return"["+$send(this.args,"map",[],(function $$1(arg){return null==arg&&(arg=nil),$send(null==$$1.$$s?this:$$1.$$s,"public_send",["on_"+arg.$type()].concat($to_a(arg)))}),{$$arity:1,$$s:this}).$compact().$join(", ")+"]"}),0),$def(self,"$on_arg",(function(arg_name){return"['req', '"+arg_name+"']"}),1),$def(self,"$on_mlhs",(function($a){return Opal.slice.call(arguments),"['req']"}),-1),$def(self,"$on_optarg",(function(arg_name,_default_value){return"['opt', '"+arg_name+"']"}),2),$def(self,"$on_restarg",(function(arg_name){return null==arg_name&&(arg_name=nil),$truthy(arg_name)?($eqeq(arg_name,"fwd_rest_arg")&&(arg_name="*"),"['rest', '"+arg_name+"']"):"['rest']"}),-1),$def(self,"$on_kwarg",(function(arg_name){return"['keyreq', '"+arg_name+"']"}),1),$def(self,"$on_kwoptarg",(function(arg_name,_default_value){return"['key', '"+arg_name+"']"}),2),$def(self,"$on_kwrestarg",(function(arg_name){return null==arg_name&&(arg_name=nil),$truthy(arg_name)?"['keyrest', '"+arg_name+"']":"['keyrest']"}),-1),$def(self,"$on_blockarg",(function(arg_name){return $eqeq(arg_name,"fwd_block_arg")&&(arg_name="&"),"['block', '"+arg_name+"']"}),1),$def(self,"$on_kwnilarg",(function(){return"['nokey']"}),0),$def(self,"$on_shadowarg",(function(_arg_name){return nil}),1)}([$module($base,"Args")].concat($parent_nesting)[0])}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/prepare_post_args"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_temp,==,offset,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"PreparePostArgs");return self.$handle("prepare_post_args"),self.$children("offset"),$def(self,"$compile",(function(){return this.$add_temp("$post_args"),$eqeq(this.$offset(),0)?this.$line("$post_args = Opal.slice.call(arguments)"):this.$line("$post_args = Opal.slice.call(arguments, "+this.$offset()+")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$send=Opal.send,$truthy=Opal.truthy,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt,$neqeq=Opal.neqeq,$def=Opal.def;return Opal.add_stubs("require,handle,each_with_index,children,multiple_underscore?,[],[]=,-,+,>,s,type,!=,push,process,==,count,start_with?,to_s,first"),self.$require("opal/nodes/base"),self.$require("opal/nodes/args/arg"),self.$require("opal/nodes/args/arity_check"),self.$require("opal/nodes/args/ensure_kwargs_are_kwargs"),self.$require("opal/nodes/args/extract_block_arg"),self.$require("opal/nodes/args/extract_kwarg"),self.$require("opal/nodes/args/extract_kwargs"),self.$require("opal/nodes/args/extract_kwoptarg"),self.$require("opal/nodes/args/extract_kwrestarg"),self.$require("opal/nodes/args/extract_optarg"),self.$require("opal/nodes/args/extract_post_arg"),self.$require("opal/nodes/args/extract_post_optarg"),self.$require("opal/nodes/args/extract_restarg"),self.$require("opal/nodes/args/fake_arg"),self.$require("opal/nodes/args/initialize_iterarg"),self.$require("opal/nodes/args/initialize_shadowarg"),self.$require("opal/nodes/args/parameters"),self.$require("opal/nodes/args/prepare_post_args"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArgsNode");return self.$handle("args"),$def(self,"$compile",(function(){var same_arg_counter=nil;return same_arg_counter=$hash2([],{}),$send(this.$children(),"each_with_index",[],(function $$1(arg,idx){var self=null==$$1.$$s?this:$$1.$$s,$writer=nil;return null==arg&&(arg=nil),null==idx&&(idx=nil),$truthy(self["$multiple_underscore?"](arg))&&($truthy(same_arg_counter["$[]"](arg))||($send(same_arg_counter,"[]=",$to_a($writer=[arg,0])),$writer[$rb_minus($writer.length,1)]),$writer=[arg,$rb_plus(same_arg_counter["$[]"](arg),1)],$send(same_arg_counter,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy($rb_gt(same_arg_counter["$[]"](arg),1))&&(arg=self.$s(arg.$type(),arg.$children()["$[]"](0)+"_$"+same_arg_counter["$[]"](arg)))),$neqeq(idx,0)&&self.$push(", "),self.$push(self.$process(arg))}),{$$arity:2,$$s:this})}),0),$def(self,"$multiple_underscore?",(function(arg){var $ret_or_1,$ret_or_2,$ret_or_3;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=arg.$type()["$=="]("arg"))?arg.$children().$count()["$=="](1):$ret_or_3)?arg.$children().$first().$to_s()["$start_with?"]("_"):$ret_or_2)?$rb_gt(this.$children().$count(arg),1):$ret_or_1}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/node_with_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("require,attr_reader,attr_accessor,[],meta,s,original_args,push,process,arity_check_node,uses_block?,scope,prepare_block,to_code,new"),self.$require("opal/nodes/scope"),self.$require("opal/nodes/args/parameters"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"NodeWithArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.sexp=nil,self.$attr_reader("used_kwargs"),self.$attr_accessor("arity"),self.$attr_reader("original_args"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.original_args=self.sexp.$meta()["$[]"]("original_args"),self.used_kwargs=[],self.arity=0}),-1),$def(self,"$arity_check_node",(function(){return this.$s("arity_check",this.$original_args())}),0),$def(self,"$compile_arity_check",(function(){return this.$push(this.$process(this.$arity_check_node()))}),0),$def(self,"$compile_block_arg",(function(){return $truthy(this.$scope()["$uses_block?"]())?this.$scope().$prepare_block():nil}),0),$def(self,"$parameters_code",(function(){return $$$($$("Args"),"Parameters").$new(this.$original_args()).$to_code()}),0)}($nesting[0],$$("ScopeNode"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/iter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$eqeq=Opal.eqeq,$rb_gt=Opal.rb_gt,$def=Opal.def;return Opal.add_stubs("require,handle,children,lambda_definition?,scope,is_lambda!,in_scope,identify!,process,inline_args,compile_arity_check,stmt,returned_body,add_temp,to_vars,line,catch_return,unshift,push,await_encountered,<<,arity,self,contains_break?,arity_check?,compiler,parameters_code,has_top_level_mlhs_arg?,has_trailing_comma_in_args?,==,length,>,join,nesting,relative_access,block_arg,prepare_block,each,args,first,updated,body,returns,s,any?,original_args,type,expression,loc,source,match,new,found_break?"),self.$require("opal/nodes/node_with_args"),self.$require("opal/rewriters/break_finder"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"IterNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.define_self=$proto.define_nesting=$proto.define_relative_access=$proto.sexp=nil,self.$handle("iter"),self.$children("inline_args","body"),$def(self,"$compile",(function(){var inline_params=nil,to_vars=nil,identity=nil,body_code=nil,blockopts=nil;return $truthy(this.$scope()["$lambda_definition?"]())&&this["$is_lambda!"](),inline_params=nil,to_vars=identity=body_code=nil,$send(this,"in_scope",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return null==self.define_self&&(self.define_self=nil),identity=self.$scope()["$identify!"](),inline_params=self.$process(self.$inline_args()),self.$compile_arity_check(),body_code=self.$stmt(self.$returned_body()),$truthy(self.define_self)&&self.$add_temp("self = "+identity+".$$s == null ? this : "+identity+".$$s"),to_vars=self.$scope().$to_vars(),self.$line(body_code),$truthy(self.$scope().$catch_return())?(self.$unshift("try {\n"),self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }"),self.$push(" throw $returner; }")):nil}),{$$arity:0,$$s:this}),this.$unshift(to_vars),$truthy(this.$await_encountered())?this.$unshift("async function "+identity+"(",inline_params,"){"):this.$unshift("function "+identity+"(",inline_params,"){"),this.$push("}"),(blockopts=[])["$<<"]("$$arity: "+this.$arity()),$truthy(this.define_self)&&blockopts["$<<"]("$$s: "+this.$scope().$self()),$truthy(this["$contains_break?"]())&&blockopts["$<<"]("$$brk: $brk"),$truthy(this.$compiler()["$arity_check?"]())&&blockopts["$<<"]("$$parameters: "+this.$parameters_code()),$truthy(this["$has_top_level_mlhs_arg?"]())&&blockopts["$<<"]("$$has_top_level_mlhs_arg: true"),$truthy(this["$has_trailing_comma_in_args?"]())&&blockopts["$<<"]("$$has_trailing_comma_in_args: true"),$eqeq(blockopts.$length(),1)?this.$push(", "+this.$arity()):$truthy($rb_gt(blockopts.$length(),1))&&this.$push(", {",blockopts.$join(", "),"}"),$truthy(this.define_nesting)&&this.$scope().$nesting(),$truthy(this.define_relative_access)?this.$scope().$relative_access():nil}),0),$def(self,"$compile_block_arg",(function(){return $truthy(this.$block_arg())?this.$scope().$prepare_block():nil}),0),$def(self,"$extract_underscore_args",(function(){var valid_args=nil,caught_blank_argument=nil;return valid_args=[],caught_blank_argument=!1,$send(this.$args().$children(),"each",[],(function(arg){var arg_name;return null==arg&&(arg=nil),arg_name=arg.$children().$first(),$eqeq(arg_name,"_")?$truthy(caught_blank_argument)?nil:(caught_blank_argument=!0,valid_args["$<<"](arg)):valid_args["$<<"](arg)}),1),this.sexp=this.sexp.$updated(nil,[this.$args().$updated(nil,valid_args),this.$body()])}),0),$def(self,"$returned_body",(function(){var $ret_or_1;return this.$compiler().$returns($truthy($ret_or_1=this.$body())?$ret_or_1:this.$s("nil"))}),0),$def(self,"$has_top_level_mlhs_arg?",(function(){return $send(this.$original_args().$children(),"any?",[],(function(arg){return null==arg&&(arg=nil),arg.$type()["$=="]("mlhs")}),1)}),0),$def(self,"$has_trailing_comma_in_args?",(function(){return $truthy(this.$original_args().$loc())&&$truthy(this.$original_args().$loc().$expression())?this.$original_args().$loc().$expression().$source().$match(/,\s*\|/):nil}),0),$def(self,"$arity_check_node",(function(){return this.$s("iter_arity_check",this.$original_args())}),0),$def(self,"$contains_break?",(function(){var finder=nil;return(finder=$$$($$$($$("Opal"),"Rewriters"),"BreakFinder").$new()).$process(this.sexp),finder["$found_break?"]()}),0)}($nesting[0],$$("NodeWithArgs"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/def"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$def=Opal.def,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,handle,children,in_scope,mid,mid=,scope,-,==,type,defs=,identify!,identity,block_name=,process,inline_args,stmt,returns,compiler,stmts,compile_block_arg,add_temp,compile_arity_check,unshift,current_indent,to_vars,line,catch_return,push,await_encountered,<<,arity,arity_check?,parameters_code,parse_comments?,comments_code,enable_source_location?,source_location,length,>,join,wrap_with_definition,nesting,relative_access,helper,wrap,self,expr?,+,map,comments,inspect,text"),self.$require("opal/nodes/node_with_args"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DefNode"),$proto=self.$$prototype;return $proto.define_nesting=$proto.define_relative_access=nil,self.$handle("def"),self.$children("mid","inline_args","stmts"),$def(self,"$compile",(function(){var inline_params=nil,scope_name=nil,blockopts=nil;return inline_params=nil,scope_name=nil,$send(this,"in_scope",[],(function $$1(){var stmt_code,self=null==$$1.$$s?this:$$1.$$s,$writer=nil;return null==self.sexp&&(self.sexp=nil),null==self.define_self&&(self.define_self=nil),$writer=[self.$mid()],$send(self.$scope(),"mid=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$eqeq(self.sexp.$type(),"defs")&&($writer=[!0],$send(self.$scope(),"defs=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),self.$scope()["$identify!"](),scope_name=self.$scope().$identity(),$writer=["$yield"],$send(self.$scope(),"block_name=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],inline_params=self.$process(self.$inline_args()),stmt_code=self.$stmt(self.$compiler().$returns(self.$stmts())),self.$compile_block_arg(),$truthy(self.define_self)&&self.$add_temp("self = this"),self.$compile_arity_check(),self.$unshift("\n"+self.$current_indent(),self.$scope().$to_vars()),self.$line(stmt_code),$truthy(self.$scope().$catch_return())?(self.$unshift("try {\n"),self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }"),self.$push(" throw $returner; }")):nil}),{$$arity:0,$$s:this}),this.$unshift(") {"),this.$unshift(inline_params),this.$unshift("function "+scope_name+"("),$truthy(this.$await_encountered())&&this.$unshift("async "),this.$line("}"),(blockopts=[])["$<<"]("$$arity: "+this.$arity()),$truthy(this.$compiler()["$arity_check?"]())&&blockopts["$<<"]("$$parameters: "+this.$parameters_code()),$truthy(this.$compiler()["$parse_comments?"]())&&blockopts["$<<"]("$$comments: "+this.$comments_code()),$truthy(this.$compiler()["$enable_source_location?"]())&&blockopts["$<<"]("$$source_location: "+this.$source_location()),$eqeq(blockopts.$length(),1)?this.$push(", "+this.$arity()):$truthy($rb_gt(blockopts.$length(),1))&&this.$push(", {",blockopts.$join(", "),"}"),this.$wrap_with_definition(),$truthy(this.define_nesting)&&this.$scope().$nesting(),$truthy(this.define_relative_access)?this.$scope().$relative_access():nil}),0),$def(self,"$wrap_with_definition",(function(){return this.$helper("def"),this.$wrap("$def("+this.$scope().$self()+", '$"+this.$mid()+"', ",")"),$truthy(this["$expr?"]())?nil:this.$unshift("\n"+this.$current_indent())}),0),$def(self,"$comments_code",(function(){return $rb_plus($rb_plus("[",$send(this.$comments(),"map",[],(function(comment){return null==comment&&(comment=nil),comment.$text().$inspect()}),1).$join(", ")),"]")}),0)}($nesting[0],$$("NodeWithArgs"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/defs"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,helper,unshift,expr,recvr,mid,push"),self.$require("opal/nodes/def"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DefsNode");return self.$handle("defs"),self.$children("recvr","mid","inline_args","stmts"),$def(self,"$wrap_with_definition",(function(){return this.$helper("defs"),this.$unshift("$defs(",this.$expr(this.$recvr()),", '$"+this.$mid()+"', "),this.$push(")")}),0)}($nesting[0],$$("DefNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/if"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def,$not=Opal.not,$send=Opal.send,$eqeqeq=Opal.eqeqeq;return Opal.add_stubs("require,handle,children,should_compile_as_simple_expression?,==,true_body,s,compile_with_binary_or,false_body,compile_with_binary_and,compile_with_ternary,compile_with_if,truthy,falsy,!,push,js_truthy,test,indent,line,stmt,type,expects_expression?,await_encountered,scope,wrap,returnify,returns,compiler,expr?,recv?,simple?,expr,[],meta,sexp,===,single_line?,strip_empty_children,all?,helper,new_temp,top_scope,excl,from,to"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"IfNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("if"),self.$children("test","true_body","false_body"),$def(self,"$compile",(function(){return $truthy(this["$should_compile_as_simple_expression?"]())?$eqeq(this.$true_body(),this.$s("true"))?this.$compile_with_binary_or():$eqeq(this.$false_body(),this.$s("false"))?this.$compile_with_binary_and():this.$compile_with_ternary():this.$compile_with_if()}),0),$def(self,"$compile_with_if",(function(){var $a,truthy=nil,falsy=nil;return truthy=this.$truthy(),falsy=this.$falsy(),$truthy(falsy)&&$not(truthy)?(this.$push("if (!",this.$js_truthy(this.$test()),") {"),falsy=($a=[truthy,falsy])[0],truthy=$a[1]):this.$push("if (",this.$js_truthy(this.$test()),") {"),$truthy(truthy)&&$send(this,"indent",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return self.$line(self.$stmt(truthy))}),{$$arity:0,$$s:this}),$truthy(falsy)?$eqeq(falsy.$type(),"if")?this.$line("} else ",this.$stmt(falsy)):(this.$line("} else {"),$send(this,"indent",[],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;return self.$line(self.$stmt(falsy))}),{$$arity:0,$$s:this}),this.$line("}")):(this.$line("}"),$truthy(this["$expects_expression?"]())&&this.$line("return nil;")),$truthy(this["$expects_expression?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() {","})())"):this.$wrap("(function() {","})()"):nil}),0),$def(self,"$truthy",(function(){return this.$returnify(this.$true_body())}),0),$def(self,"$falsy",(function(){return this.$returnify(this.$false_body())}),0),$def(self,"$returnify",(function(body){return $truthy(this["$expects_expression?"]())&&$truthy(body)?this.$compiler().$returns(body):body}),1),$def(self,"$expects_expression?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$expr?"]())?$ret_or_1:this["$recv?"]()}),0),$def(self,"$should_compile_as_simple_expression?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this["$expects_expression?"]())?this["$simple?"](this.$true_body()):$ret_or_2)?this["$simple?"](this.$false_body()):$ret_or_1}),0),$def(self,"$compile_with_ternary",(function(){var truthy,falsy=nil,$ret_or_1=nil;return truthy=this.$true_body(),falsy=this.$false_body(),this.$push("("),this.$push(this.$js_truthy(this.$test())," ? "),this.$push("(",this.$expr($truthy($ret_or_1=truthy)?$ret_or_1:this.$s("nil")),") : "),$not(falsy)||$eqeq(falsy.$type(),"if")?this.$push(this.$expr($truthy($ret_or_1=falsy)?$ret_or_1:this.$s("nil"))):this.$push("(",this.$expr($truthy($ret_or_1=falsy)?$ret_or_1:this.$s("nil")),")"),this.$push(")")}),0),$def(self,"$compile_with_binary_and",(function(){var truthy=nil,$ret_or_1=nil;return truthy=$truthy(this.$sexp().$meta()["$[]"]("do_js_truthy_on_true_body"))?this.$js_truthy($truthy($ret_or_1=this.$true_body())?$ret_or_1:this.$s("nil")):this.$expr($truthy($ret_or_1=this.$true_body())?$ret_or_1:this.$s("nil")),this.$push("("),this.$push(this.$js_truthy(this.$test())," && "),this.$push("(",truthy,")"),this.$push(")")}),0),$def(self,"$compile_with_binary_or",(function(){var falsy=nil,$ret_or_1=nil;return falsy=$truthy(this.$sexp().$meta()["$[]"]("do_js_truthy_on_false_body"))?this.$js_truthy($truthy($ret_or_1=this.$false_body())?$ret_or_1:this.$s("nil")):this.$expr($truthy($ret_or_1=this.$false_body())?$ret_or_1:this.$s("nil")),this.$push("("),this.$push(this.$js_truthy(this.$test())," || "),this.$push("(",falsy,")"),this.$push(")")}),0),$def(self,"$simple?",(function(body){var $ret_or_2=nil;return!$eqeqeq($$$($$("AST"),"Node"),body)||!($eqeqeq("return",$ret_or_2=body.$type())||$eqeqeq("js_return",$ret_or_2)||$eqeqeq("break",$ret_or_2)||$eqeqeq("next",$ret_or_2)||$eqeqeq("redo",$ret_or_2)||$eqeqeq("retry",$ret_or_2))&&($eqeqeq("xstr",$ret_or_2)?$$("XStringNode")["$single_line?"]($$("XStringNode").$strip_empty_children(body.$children())):$send(body.$children(),"all?",[],(function $$6(i){return null==i&&(i=nil),(null==$$6.$$s?this:$$6.$$s)["$simple?"](i)}),{$$arity:1,$$s:this}))}),1)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"IFlipFlop");self.$handle("iflipflop"),self.$children("from","to"),$def(self,"$excl",(function(){return""}),0),$def(self,"$compile",(function(){var fun_name,ff;return this.$helper("truthy"),ff=(fun_name=this.$top_scope().$new_temp())+".$$ff",this.$push("(typeof "+fun_name+" === 'undefined' ? ("+fun_name+" = function(from, to){"),this.$push(" if (typeof "+ff+" === 'undefined') "+ff+" = false;"),this.$push(" var retval = "+ff+";"),this.$push(" if (!"+ff+") {"),this.$push(" "+ff+" = retval = $truthy(from());"),this.$push(" }"),this.$push(" "+this.$excl()+"if ("+ff+") {"),this.$push(" if ($truthy(to())) "+ff+" = false;"),this.$push(" }"),this.$push(" return retval;"),this.$push("}) : "+fun_name+")("),this.$push(" function() { ",this.$stmt(this.$compiler().$returns(this.$from()))," },"),this.$push(" function() { ",this.$stmt(this.$compiler().$returns(this.$to()))," }"),this.$push(")")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"EFlipFlop");return self.$handle("eflipflop"),$def(self,"$excl",(function(){return"else "}),0)}($nesting[0],$$("IFlipFlop"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/logic"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt,$not=Opal.not;return Opal.add_stubs("require,handle,in_while?,push,iter?,scope,expr_or_nil,value,error,===,size,children,s,first,compile_while,compile_iter,[],while_loop,stmt?,line,break_val,nil?,expr,[]=,-,helper,identity,==,empty_splat?,recv,>,find_parent_def,!,lambda?,def?,expr?,return_in_iter?,return_expr_in_def?,scope_to_catch_return,catch_return=,return_val,to_s"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"NextNode");self.$handle("next"),$def(self,"$compile",(function(){return $truthy(this["$in_while?"]())?this.$push("continue;"):$truthy(this.$scope()["$iter?"]())?this.$push("return ",this.$expr_or_nil(this.$value()),";"):this.$error("Invalid next")}),0),$def(self,"$value",(function(){var $ret_or_1;return $eqeqeq(0,$ret_or_1=this.$children().$size())?this.$s("nil"):$eqeqeq(1,$ret_or_1)?this.$children().$first():$send(this,"s",["array"].concat($to_a(this.$children())))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"BreakNode");self.$handle("break"),self.$children("value"),$def(self,"$compile",(function(){return $truthy(this["$in_while?"]())?this.$compile_while():$truthy(this.$scope()["$iter?"]())?this.$compile_iter():this.$error("void value expression: cannot use break outside of iter/while")}),0),$def(self,"$compile_while",(function(){return $truthy(this.$while_loop()["$[]"]("closure"))?this.$push("return ",this.$expr_or_nil(this.$value())):this.$push("break;")}),0),$def(self,"$compile_iter",(function(){return $truthy(this["$stmt?"]())||this.$error("break must be used as a statement"),this.$line("Opal.brk(",this.$break_val(),", $brk)")}),0),$def(self,"$break_val",(function(){return $truthy(this.$value()["$nil?"]())?this.$expr(this.$s("nil")):this.$expr(this.$value())}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"RedoNode");self.$handle("redo"),$def(self,"$compile",(function(){return $truthy(this["$in_while?"]())?this.$compile_while():$truthy(this.$scope()["$iter?"]())?this.$compile_iter():this.$push("REDO()")}),0),$def(self,"$compile_while",(function(){var $writer;return $writer=["use_redo",!0],$send(this.$while_loop(),"[]=",$to_a($writer)),$rb_minus($writer.length,1),this.$push(this.$while_loop()["$[]"]("redo_var")+" = true; continue;")}),0),$def(self,"$compile_iter",(function(){return this.$helper("slice"),this.$push("return "+this.$scope().$identity()+".apply(null, $slice.call(arguments))")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"SplatNode");self.$handle("splat"),self.$children("value"),$def(self,"$empty_splat?",(function(){return this.$value()["$=="](this.$s("array"))}),0),$def(self,"$compile",(function(){return $truthy(this["$empty_splat?"]())?this.$push("[]"):(this.$helper("to_a"),this.$push("$to_a(",this.$recv(this.$value()),")"))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ReturnNode");self.$handle("return"),self.$children("value"),$def(self,"$return_val",(function(){return $truthy(this.$value()["$nil?"]())?this.$expr(this.$s("nil")):$truthy($rb_gt(this.$children().$size(),1))?this.$expr($send(this,"s",["array"].concat($to_a(this.$children())))):this.$expr(this.$value())}),0),$def(self,"$return_in_iter?",(function(){var parent_def=nil;return $truthy(this.$scope()["$iter?"]())&&$not(this.$scope()["$lambda?"]())&&$truthy(parent_def=this.$scope().$find_parent_def())?parent_def:nil}),0),$def(self,"$return_expr_in_def?",(function(){return $truthy(this["$expr?"]())&&($truthy(this.$scope()["$def?"]())||$truthy(this.$scope()["$lambda?"]()))?this.$scope():nil}),0),$def(self,"$scope_to_catch_return",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$return_in_iter?"]())?$ret_or_1:this["$return_expr_in_def?"]()}),0),$def(self,"$compile",(function(){var def_scope,$writer=nil;return $truthy(def_scope=this.$scope_to_catch_return())?($send(def_scope,"catch_return=",$to_a($writer=[!0])),$writer[$rb_minus($writer.length,1)],this.$push("Opal.ret(",this.$return_val(),")")):$truthy(this["$stmt?"]())?this.$push("return ",this.$return_val()):this.$error("void value expression: cannot return as an expression")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JSReturnNode");self.$handle("js_return"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("return "),this.$push(this.$expr(this.$value()))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JSTempNode");self.$handle("js_tmp"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$value().$to_s())}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"BlockPassNode");return self.$handle("block_pass"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$expr(this.$s("send",this.$value(),"to_proc",this.$s("arglist"))))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/definitions"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$range=Opal.range,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$slice=Opal.slice,$rb_plus=Opal.rb_plus,$hash2=Opal.hash2,$const_set=Opal.const_set;return Opal.add_stubs("require,handle,children,each,line,self,scope,expr,===,type,new_name,helper,inspect,[],to_s,first,old_name,push,error,empty?,stmt?,compile_children,simple_children?,compile_inline_children,>,size,wrap,==,returned_children,await_encountered,parent,+,returns,compiler,s,process,fragment,freeze,none?,include?,map,each_with_index,reject,to_proc"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"UndefNode");self.$handle("undef"),self.$children("value"),$def(self,"$compile",(function(){return $send(this.$children(),"each",[],(function $$1(child){var self=null==$$1.$$s?this:$$1.$$s;return null==child&&(child=nil),self.$line("Opal.udef("+self.$scope().$self()+", '$' + ",self.$expr(child),");")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"AliasNode");self.$handle("alias"),self.$children("new_name","old_name"),$def(self,"$compile",(function(){var $ret_or_1,new_name_str=nil,old_name_str=nil;return $eqeqeq("gvar",$ret_or_1=this.$new_name().$type())?(this.$helper("alias_gvar"),new_name_str=this.$new_name().$children().$first().$to_s()["$[]"]($range(1,-1,!1)).$inspect(),old_name_str=this.$old_name().$children().$first().$to_s()["$[]"]($range(1,-1,!1)).$inspect(),this.$push("$alias_gvar(",new_name_str,", ",old_name_str,")")):$eqeqeq("dsym",$ret_or_1)||$eqeqeq("sym",$ret_or_1)?(this.$helper("alias"),this.$push("$alias("+this.$scope().$self()+", ",this.$expr(this.$new_name()),", ",this.$expr(this.$old_name()),")")):this.$error("Opal doesn't know yet how to alias with "+this.$new_name().$type())}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"BeginNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.level=$proto.returned_children=nil,self.$handle("begin"),$def(self,"$compile",(function(){return $truthy(this.$children()["$empty?"]())?this.$push("nil"):$truthy(this["$stmt?"]())?this.$compile_children(this.$children(),this.level):$truthy(this["$simple_children?"]())?(this.$compile_inline_children(this.$children(),this.level),$truthy($rb_gt(this.$children().$size(),1))?this.$wrap("(",")"):nil):$eqeq(this.$children().$size(),1)?this.$compile_inline_children(this.$returned_children(),this.level):(this.$compile_children(this.$returned_children(),this.level),$truthy(this.$scope().$parent().$await_encountered())?this.$wrap("(await (async function() {","})())"):this.$wrap("(function() {","})()"))}),0),$def(self,"$returned_children",(function(){var $a,$b,$ret_or_1,rest=nil,last_child=nil;return this.returned_children=$truthy($ret_or_1=this.returned_children)?$ret_or_1:($b=($b=($a=[].concat($to_a(this.$children()))).length-1)<0?0:$b,rest=$slice.call($a,0,$b),last_child=null==$a[$b]?nil:$a[$b],$truthy(last_child)?$rb_plus(rest,[this.$compiler().$returns(last_child)]):[this.$s("nil")])}),0),$def(self,"$compile_children",(function(children,level){return $send(children,"each",[],(function $$2(child){var self=null==$$2.$$s?this:$$2.$$s;return null==child&&(child=nil),self.$line(self.$process(child,level),self.$fragment(";",$hash2(["loc"],{loc:!1})))}),{$$arity:1,$$s:this})}),2),$const_set($nesting[0],"COMPLEX_CHILDREN",["while","while_post","until","until_post","js_return"].$freeze()),$def(self,"$simple_children?",(function(){return $send(this.$children(),"none?",[],(function(child){return null==child&&(child=nil),$$("COMPLEX_CHILDREN")["$include?"](child.$type())}),1)}),0),$def(self,"$compile_inline_children",(function(children,level){var processed_children;return processed_children=$send(children,"map",[],(function $$5(child){return null==child&&(child=nil),(null==$$5.$$s?this:$$5.$$s).$process(child,level)}),{$$arity:1,$$s:this}),$send($send(processed_children,"reject",[],"empty?".$to_proc()),"each_with_index",[],(function $$6(child,idx){var self=null==$$6.$$s?this:$$6.$$s;return null==child&&(child=nil),null==idx&&(idx=nil),$eqeq(idx,0)||self.$push(self.$fragment(", ",$hash2(["loc"],{loc:!1}))),self.$push(child)}),{$$arity:2,$$s:this})}),2)}($nesting[0],$$("ScopeNode"),$nesting),function($base,$super){return $klass($base,$super,"KwBeginNode").$handle("kwbegin")}($nesting[0],$$("BeginNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/yield"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def;return Opal.add_stubs("require,find_yielding_scope,uses_block!,block_name,block_name=,-,yields_single_arg?,children,push,expr,first,wrap,s,uses_splat?,scope,def?,parent,!,==,size,any?,type,handle,compile_call"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BaseYieldNode");$def(self,"$compile_call",(function(){var block_name,yielding_scope=nil,$writer=nil;return(yielding_scope=this.$find_yielding_scope())["$uses_block!"](),$truthy(yielding_scope.$block_name())||($send(yielding_scope,"block_name=",$to_a($writer=["$yield"])),$writer[$rb_minus($writer.length,1)]),block_name=yielding_scope.$block_name(),$truthy(this["$yields_single_arg?"](this.$children()))?(this.$push(this.$expr(this.$children().$first())),this.$wrap("Opal.yield1("+block_name+", ",")")):(this.$push(this.$expr($send(this,"s",["arglist"].concat($to_a(this.$children()))))),$truthy(this["$uses_splat?"](this.$children()))?this.$wrap("Opal.yieldX("+block_name+", ",")"):this.$wrap("Opal.yieldX("+block_name+", [","])"))}),0),$def(self,"$find_yielding_scope",(function(){var working=nil;for(working=this.$scope();$truthy(working)&&!$truthy(working.$block_name())&&!$truthy(working["$def?"]());)working=working.$parent();return working}),0),$def(self,"$yields_single_arg?",(function(children){var $ret_or_1;return $truthy($ret_or_1=this["$uses_splat?"](children)["$!"]())?children.$size()["$=="](1):$ret_or_1}),1),$def(self,"$uses_splat?",(function(children){return $send(children,"any?",[],(function(child){return null==child&&(child=nil),child.$type()["$=="]("splat")}),1)}),1)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"YieldNode");self.$handle("yield"),$def(self,"$compile",(function(){return this.$compile_call()}),0)}($nesting[0],$$("BaseYieldNode")),function($base,$super){var self=$klass($base,$super,"ReturnableYieldNode");return self.$handle("returnable_yield"),$def(self,"$compile",(function(){return this.$compile_call(),this.$wrap("return ",";")}),0)}($nesting[0],$$("BaseYieldNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/rescue"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$def=Opal.def,$range=Opal.range,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq;return Opal.add_stubs("require,handle,children,push,in_ensure,line,stmt,body_sexp,indent,has_rescue_else?,unshift,rescue_else_code,process,compiler,ensr_sexp,wrap_in_closure?,await_encountered,scope,wrap,returns,begn,ensr,s,recv?,expr?,rescue_else_sexp,stmt?,detect,[],!=,type,rescue_else_sexp=,-,handle_rescue_else_manually?,in_rescue,body_code,each_with_index,==,retry_id,body,nil?,!,in_ensure?,gen_retry_id,attr_reader,expr,klasses,lvar,updated,in_resbody,rescue_body,klasses_sexp,in_resbody?,error,current_rescue"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"EnsureNode");self.$handle("ensure"),self.$children("begn","ensr"),$def(self,"$compile",(function(){return this.$push("try {"),$send(this,"in_ensure",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return self.$line(self.$stmt(self.$body_sexp()))}),{$$arity:0,$$s:this}),this.$line("} finally {"),$send(this,"indent",[],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;return null==self.level&&(self.level=nil),$truthy(self["$has_rescue_else?"]())?(self.$unshift("var $no_errors = true; "),self.$line("var $rescue_else_result;"),self.$line("if ($no_errors) { "),$send(self,"indent",[],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return self.$line("$rescue_else_result = (function() {"),$send(self,"indent",[],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s;return self.$line(self.$stmt(self.$rescue_else_code()))}),{$$arity:0,$$s:self}),self.$line("})();")}),{$$arity:0,$$s:self}),self.$line("}"),self.$line(self.$compiler().$process(self.$ensr_sexp(),self.level)),self.$line("if ($no_errors) { return $rescue_else_result; }")):self.$line(self.$compiler().$process(self.$ensr_sexp(),self.level))}),{$$arity:0,$$s:this}),this.$line("}"),$truthy(this["$wrap_in_closure?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() { ","; })())"):this.$wrap("(function() { ","; })()"):nil}),0),$def(self,"$body_sexp",(function(){return $truthy(this["$wrap_in_closure?"]())?this.$compiler().$returns(this.$begn()):this.$begn()}),0),$def(self,"$ensr_sexp",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$ensr())?$ret_or_1:this.$s("nil")}),0),$def(self,"$wrap_in_closure?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this["$recv?"]())?$ret_or_2:this["$expr?"]())?$ret_or_1:this["$has_rescue_else?"]()}),0),$def(self,"$rescue_else_code",(function(){var rescue_else_code=nil;return rescue_else_code=this.$scope().$rescue_else_sexp(),$truthy(this["$stmt?"]())||(rescue_else_code=this.$compiler().$returns(rescue_else_code)),rescue_else_code}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"RescueNode");self.$$prototype.retry_id=nil,self.$handle("rescue"),self.$children("body"),$def(self,"$compile",(function(){var $writer;return $writer=[$send(this.$children()["$[]"]($range(1,-1,!1)),"detect",[],(function(sexp){var $ret_or_1;return null==sexp&&(sexp=nil),$truthy($ret_or_1=sexp)?sexp.$type()["$!="]("resbody"):$ret_or_1}),1)],$send(this.$scope(),"rescue_else_sexp=",$to_a($writer)),$rb_minus($writer.length,1),!1,$truthy(this["$handle_rescue_else_manually?"]())&&this.$line("var $no_errors = true;"),$send(this,"in_rescue",[this],(function $$7(){var self=null==$$7.$$s?this:$$7.$$s;return self.$push("try {"),$send(self,"indent",[],(function $$8(){var self=null==$$8.$$s?this:$$8.$$s;return self.$line(self.$stmt(self.$body_code()))}),{$$arity:0,$$s:self}),self.$line("} catch ($err) {"),$send(self,"indent",[],(function $$9(){var self=null==$$9.$$s?this:$$9.$$s;return $truthy(self["$has_rescue_else?"]())&&self.$line("$no_errors = false;"),$send(self.$children()["$[]"]($range(1,-1,!1)),"each_with_index",[],(function $$10(child,idx){var self=null==$$10.$$s?this:$$10.$$s;return null==self.level&&(self.level=nil),null==child&&(child=nil),null==idx&&(idx=nil),$truthy(child)&&$eqeq(child.$type(),"resbody")?(!0,$eqeq(idx,0)||self.$push(" else "),self.$line(self.$process(child,self.level))):nil}),{$$arity:2,$$s:self}),self.$push(" else { throw $err; }")}),{$$arity:0,$$s:self}),self.$line("}"),$truthy(self["$handle_rescue_else_manually?"]())&&(self.$push("finally {"),$send(self,"indent",[],(function $$11(){var self=null==$$11.$$s?this:$$11.$$s;return self.$line("if ($no_errors) { "),$send(self,"indent",[],(function $$12(){var self=null==$$12.$$s?this:$$12.$$s;return self.$line(self.$stmt(self.$rescue_else_code()))}),{$$arity:0,$$s:self}),self.$line("}")}),{$$arity:0,$$s:self}),self.$push("}")),$truthy(self.$retry_id())?self.$wrap(self.$retry_id()+": do { "," break; } while(1)"):nil}),{$$arity:0,$$s:this}),$truthy(this["$expr?"]())||$truthy(this["$recv?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() { ","})())"):this.$wrap("(function() { ","})()"):nil}),0),$def(self,"$body_code",(function(){var body_code=nil;return body_code=$truthy(this.$body()["$nil?"]())||$eqeq(this.$body().$type(),"resbody")?this.$s("nil"):this.$body(),$truthy(this["$stmt?"]())||(body_code=this.$compiler().$returns(body_code)),body_code}),0),$def(self,"$rescue_else_code",(function(){var rescue_else_code=nil;return rescue_else_code=this.$scope().$rescue_else_sexp(),$truthy(this["$stmt?"]())||(rescue_else_code=this.$compiler().$returns(rescue_else_code)),rescue_else_code}),0),$def(self,"$handle_rescue_else_manually?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$in_ensure?"]()["$!"]())?this["$has_rescue_else?"]():$ret_or_1}),0),$def(self,"$gen_retry_id",(function(){var $ret_or_1;return this.retry_id=$truthy($ret_or_1=this.retry_id)?$ret_or_1:this.$scope().$gen_retry_id()}),0),self.$attr_reader("retry_id")}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ResBodyNode");self.$handle("resbody"),self.$children("klasses_sexp","lvar","body"),$def(self,"$compile",(function(){return this.$push("if (Opal.rescue($err, ",this.$expr(this.$klasses()),")) {"),$send(this,"indent",[],(function $$14(){var self=null==$$14.$$s?this:$$14.$$s;return $truthy(self.$lvar())&&self.$push(self.$expr(self.$lvar().$updated(nil,[].concat($to_a(self.$lvar().$children())).concat([self.$s("js_tmp","$err")])))),self.$line("try {"),$send(self,"indent",[],(function $$15(){var self=null==$$15.$$s?this:$$15.$$s;return $send(self,"in_resbody",[],(function $$16(){var self=null==$$16.$$s?this:$$16.$$s;return self.$line(self.$stmt(self.$rescue_body()))}),{$$arity:0,$$s:self})}),{$$arity:0,$$s:self}),self.$line("} finally { Opal.pop_exception(); }")}),{$$arity:0,$$s:this}),this.$line("}")}),0),$def(self,"$klasses",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$klasses_sexp())?$ret_or_1:this.$s("array",this.$s("const",nil,"StandardError"))}),0),$def(self,"$rescue_body",(function(){var $ret_or_1,body_code=nil;return body_code=$truthy($ret_or_1=this.$body())?$ret_or_1:this.$s("nil"),$truthy(this["$stmt?"]())||(body_code=this.$compiler().$returns(body_code)),body_code}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"RetryNode");return self.$handle("retry"),$def(self,"$compile",(function(){return $truthy(this["$in_resbody?"]())||this.$error("Invalid retry"),this.$push("continue "+this.$scope().$current_rescue().$gen_retry_id())}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/super"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$slice=Opal.slice,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def,$to_ary=Opal.to_ary,$eqeq=Opal.eqeq,$not=Opal.not,$eqeqeq=Opal.eqeqeq,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt;return Opal.add_stubs("require,include?,type,s,helper,push,compile_receiver,compile_method_body,compile_method_name,compile_arguments,compile_block_pass,private,def?,scope,find_parent_def,to_s,mid,def_scope,identify!,self,method_id,def_scope_identity,defined_check_param,allow_stubs,super_chain,join,map,implicit_arguments_param,super_method_invocation,iter?,super_block_invocation,raise,handle,wrap,uses_block!,compile_using_send,==,iter,block_name,implicit_arglist,!,<<,new,each,children,original_args,[],===,+,[]=,-,>,meta,empty?"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BaseSuperNode"),$proto=self.$$prototype;$proto.sexp=$proto.def_scope=nil,$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$b,$c,$yield=$$initialize.$$p||nil,self=this,args=nil,rest=nil,last_child=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),args=[].concat($to_a(self.sexp)),$c=($c=($b=[].concat($to_a(args))).length-1)<0?0:$c,rest=$slice.call($b,0,$c),last_child=null==$b[$c]?nil:$b[$c],$truthy(last_child)&&$truthy(["iter","block_pass"]["$include?"](last_child.$type()))?(self.iter=last_child,args=rest):self.iter=self.$s("js_tmp","null"),self.arglist=$send(self,"s",["arglist"].concat($to_a(args))),self.recvr=self.$s("self")}),-1),$def(self,"$compile_using_send",(function(){return this.$helper("send2"),this.$push("$send2("),this.$compile_receiver(),this.$compile_method_body(),this.$compile_method_name(),this.$compile_arguments(),this.$compile_block_pass(),this.$push(")")}),0),self.$private(),$def(self,"$def_scope",(function(){var $ret_or_1;return this.def_scope=$truthy($ret_or_1=this.def_scope)?$ret_or_1:$truthy(this.$scope()["$def?"]())?this.$scope():this.$scope().$find_parent_def()}),0),$def(self,"$defined_check_param",(function(){return"false"}),0),$def(self,"$implicit_arguments_param",(function(){return"false"}),0),$def(self,"$method_id",(function(){return this.$def_scope().$mid().$to_s()}),0),$def(self,"$def_scope_identity",(function(){return this.$def_scope()["$identify!"](this.$def_scope().$mid())}),0),$def(self,"$allow_stubs",(function(){return"true"}),0),$def(self,"$super_method_invocation",(function(){return this.$helper("find_super"),"$find_super("+this.$scope().$self()+", '"+this.$method_id()+"', "+this.$def_scope_identity()+", "+this.$defined_check_param()+", "+this.$allow_stubs()+")"}),0),$def(self,"$super_block_invocation",(function(){var $a,$b,chain,cur_defn,mid,trys;return this.$helper("find_block_super"),$b=this.$scope().$super_chain(),chain=null==($a=$to_ary($b))[0]?nil:$a[0],cur_defn=null==$a[1]?nil:$a[1],mid=null==$a[2]?nil:$a[2],trys=$send(chain,"map",[],(function(c){return null==c&&(c=nil),c+".$$def"}),1).$join(" || "),"$find_block_super("+this.$scope().$self()+", "+mid+", ("+trys+" || "+cur_defn+"), "+this.$defined_check_param()+", "+this.$implicit_arguments_param()+")"}),0),$def(self,"$compile_method_body",(function(){return this.$push(", "),$truthy(this.$scope()["$def?"]())?this.$push(this.$super_method_invocation()):$truthy(this.$scope()["$iter?"]())?this.$push(this.$super_block_invocation()):this.$raise("super must be called from method body or block")}),0),$def(self,"$compile_method_name",(function(){var $a,$b,mid=nil;return $truthy(this.$scope()["$def?"]())?this.$push(", '"+this.$method_id()+"'"):$truthy(this.$scope()["$iter?"]())?($b=this.$scope().$super_chain(),null==($a=$to_ary($b))[0]?nil:$a[0],null==$a[1]?nil:$a[1],mid=null==$a[2]?nil:$a[2],this.$push(", "+mid)):nil}),0)}($nesting[0],$$("CallNode")),function($base,$super){var self=$klass($base,$super,"DefinedSuperNode");self.$handle("defined_super"),$def(self,"$allow_stubs",(function(){return"false"}),0),$def(self,"$defined_check_param",(function(){return"true"}),0),$def(self,"$compile",(function(){return this.$compile_receiver(),this.$compile_method_body(),this.$wrap("((",') != null ? "super" : nil)')}),0)}($nesting[0],$$("BaseSuperNode")),function($base,$super){var self=$klass($base,$super,"SuperNode");self.$handle("super"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$truthy(self.$scope()["$def?"]())?self.$scope()["$uses_block!"]():nil}),-1),$def(self,"$compile",(function(){return this.$compile_using_send()}),0)}($nesting[0],$$("BaseSuperNode")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"ZsuperNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$handle("zsuper"),$def(self,"$implicit_arguments_param",(function(){return"true"}),0),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this,$ret_or_1=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$eqeq(self.$iter().$type(),"iter")?nil:(self.$scope()["$uses_block!"](),self.iter=self.$s("js_tmp",$truthy($ret_or_1=self.$scope().$block_name())?$ret_or_1:"$yield"))}),-1),$def(self,"$compile",(function(){var implicit_args=nil,block_pass=nil;return $truthy(this.$def_scope())&&(implicit_args=this.$implicit_arglist(),$truthy(this.$block_name())&&$not(this.$iter())&&(block_pass=this.$s("block_pass",this.$s("lvar",this.$block_name())),implicit_args["$<<"](block_pass)),this.arglist=$send(this,"s",["arglist"].concat($to_a(implicit_args)))),this.$compile_using_send()}),0),$def(self,"$implicit_arglist",(function(){var args=nil,kwargs=nil,same_arg_counter=nil;return args=[],kwargs=[],same_arg_counter=$$("Hash").$new(0),$send(this.$def_scope().$original_args().$children(),"each",[],(function $$2(sexp){var $ret_or_1,self=null==$$2.$$s?this:$$2.$$s,lvar_name=nil,arg_node=nil,$writer=nil,key_name=nil;return null==sexp&&(sexp=nil),lvar_name=sexp.$children()["$[]"](0),$eqeqeq("arg",$ret_or_1=sexp.$type())||$eqeqeq("optarg",$ret_or_1)?(arg_node=self.$s("lvar",lvar_name),$eqeq(lvar_name["$[]"](0),"_")&&($writer=[lvar_name,$rb_plus(same_arg_counter["$[]"](lvar_name),1)],$send(same_arg_counter,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy($rb_gt(same_arg_counter["$[]"](lvar_name),1))&&(arg_node=self.$s("js_tmp",lvar_name+"_$"+same_arg_counter["$[]"](lvar_name)))),args["$<<"](arg_node)):$eqeqeq("restarg",$ret_or_1)?(arg_node=$truthy(lvar_name)?self.$s("lvar",lvar_name):self.$s("js_tmp","$rest_arg"),args["$<<"](self.$s("splat",arg_node))):$eqeqeq("kwarg",$ret_or_1)||$eqeqeq("kwoptarg",$ret_or_1)?(key_name=sexp.$meta()["$[]"]("arg_name"),kwargs["$<<"](self.$s("pair",self.$s("sym",key_name),self.$s("lvar",lvar_name)))):$eqeqeq("kwrestarg",$ret_or_1)?(arg_node=$truthy(lvar_name)?self.$s("lvar",lvar_name):self.$s("js_tmp","$kw_rest_arg"),kwargs["$<<"](self.$s("kwsplat",arg_node))):nil}),{$$arity:1,$$s:this}),$truthy(kwargs["$empty?"]())||args["$<<"]($send(this,"s",["hash"].concat($to_a(kwargs)))),args}),0),$def(self,"$block_name",(function(){var $ret_or_1;return $eqeqeq($$$($$$($$("Opal"),"Nodes"),"IterNode"),$ret_or_1=this.$def_scope())||$eqeqeq($$$($$$($$("Opal"),"Nodes"),"DefNode"),$ret_or_1)?this.$def_scope().$block_name():this.$raise("Don't know what to do with super in the scope "+this.$def_scope())}),0)}($nesting[0],$$("SuperNode"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/version"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set;return function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return $const_set($nesting[0],"VERSION","1.4.1")}($nesting[0],$nesting)},Opal.modules["opal/nodes/top"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("require,handle,children,top_scope=,compiler,-,push,version_comment,in_scope,==,body,s,line,use_strict?,stmt,stmts,is_a?,eval?,add_temp,add_used_helpers,to_vars,scope,compile_method_stubs,compile_irb_vars,compile_end_construct,opening,closing,await_encountered,requirable?,unshift,inspect,module_name,file,esm?,returns,irb?,each,to_a,helpers,method_missing?,method_calls,join,map,to_proc,empty?,eof_content"),self.$require("pathname"),self.$require("opal/version"),self.$require("opal/nodes/scope"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"TopNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$handle("top"),self.$children("body"),$def(self,"$compile",(function(){var $writer;return $writer=[this],$send(this.$compiler(),"top_scope=",$to_a($writer)),$rb_minus($writer.length,1),this.$push(this.$version_comment()),$send(this,"in_scope",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s,body_code=nil;return null==self.define_nesting&&(self.define_nesting=nil),null==self.define_self&&(self.define_self=nil),null==self.define_relative_access&&(self.define_relative_access=nil),null==self.define_absolute_const&&(self.define_absolute_const=nil),$eqeq(self.$body(),self.$s("nil"))?self.$line("return Opal.nil;"):($truthy(self.$compiler()["$use_strict?"]())&&self.$line('"use strict";'),body_code=self.$stmt(self.$stmts()),$truthy(body_code["$is_a?"]($$("Array")))||(body_code=[body_code]),$truthy(self.$compiler()["$eval?"]())?$truthy(self.define_nesting)&&self.$add_temp("$nesting = self.$$is_a_module ? [self] : [self.$$class]"):($truthy(self.define_self)&&self.$add_temp("self = Opal.top"),$truthy(self.define_nesting)&&self.$add_temp("$nesting = []")),$truthy(self.define_relative_access)&&self.$add_temp("$$ = Opal.$r($nesting)"),self.$add_temp("nil = Opal.nil"),$truthy(self.define_absolute_const)&&self.$add_temp("$$$ = Opal.$$$"),self.$add_used_helpers(),self.$line(self.$scope().$to_vars()),self.$compile_method_stubs(),self.$compile_irb_vars(),self.$compile_end_construct(),self.$line(body_code))}),{$$arity:0,$$s:this}),this.$opening(),this.$closing()}),0),$def(self,"$opening",(function(){var async_prefix=nil;return $truthy(this.$await_encountered())&&(async_prefix="async "),$truthy(this.$compiler()["$requirable?"]())?this.$unshift("Opal.modules["+$$$($$("Opal"),"Compiler").$module_name(this.$compiler().$file()).$inspect()+"] = "+async_prefix+"function(Opal) {"):$truthy(this.$compiler()["$eval?"]())?this.$unshift("("+async_prefix+"function(Opal, self) {"):$truthy(this.$compiler()["$esm?"]())?this.$unshift("export default Opal.queue("+async_prefix+"function(Opal) {"):this.$unshift("Opal.queue("+async_prefix+"function(Opal) {")}),0),$def(self,"$closing",(function(){return $truthy(this.$compiler()["$requirable?"]())?this.$line("};\n"):$truthy(this.$compiler()["$eval?"]())?this.$line("})(Opal, self);"):this.$line("});\n")}),0),$def(self,"$stmts",(function(){return this.$compiler().$returns(this.$body())}),0),$def(self,"$absolute_const",(function(){return this.define_absolute_const=!0,"$$$"}),0),$def(self,"$compile_irb_vars",(function(){return $truthy(this.$compiler()["$irb?"]())?this.$line("if (!Opal.irb_vars) { Opal.irb_vars = {}; }"):nil}),0),$def(self,"$add_used_helpers",(function(){return $send(this.$compiler().$helpers().$to_a(),"each",[],(function $$2(h){return null==h&&(h=nil),(null==$$2.$$s?this:$$2.$$s).$add_temp("$"+h+" = Opal."+h)}),{$$arity:1,$$s:this})}),0),$def(self,"$compile_method_stubs",(function(){var calls=nil,stubs=nil;return $truthy(this.$compiler()["$method_missing?"]())?(calls=this.$compiler().$method_calls(),stubs=$send(calls.$to_a(),"map",[],"to_s".$to_proc()).$join(","),$truthy(stubs["$empty?"]())?nil:this.$line("Opal.add_stubs('"+stubs+"');")):nil}),0),$def(self,"$compile_end_construct",(function(){var content=nil;return $truthy(content=this.$compiler().$eof_content())?(this.$line("var $__END__ = Opal.Object.$new();"),this.$line("$__END__.$read = function() { return "+content.$inspect()+"; };")):nil}),0),$def(self,"$version_comment",(function(){return"/* Generated by Opal "+$$$($$("Opal"),"VERSION")+" */"}),0)}($nesting[0],$$("ScopeNode"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/while"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def;return Opal.add_stubs("require,handle,children,js_truthy,test,with_temp,in_while,compiler,wrap_in_closure?,[]=,while_loop,-,indent,stmt,body,uses_redo?,compile_with_redo,compile_without_redo,await_encountered,scope,wrap,private,push,compile_while,while_open,while_close,line,[],expr?,recv?"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"WhileNode");self.$handle("while"),self.$children("test","body"),$def(self,"$compile",(function(){var test_code;return test_code=this.$js_truthy(this.$test()),$send(this,"with_temp",[],(function $$1(redo_var){var self=null==$$1.$$s?this:$$1.$$s;return null==redo_var&&(redo_var=nil),$send(self.$compiler(),"in_while",[],(function $$2(){var body_code,self=null==$$2.$$s?this:$$2.$$s,$writer=nil;return $truthy(self["$wrap_in_closure?"]())&&($writer=["closure",!0],$send(self.$while_loop(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=["redo_var",redo_var],$send(self.$while_loop(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],body_code=$send(self,"indent",[],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return self.$stmt(self.$body())}),{$$arity:0,$$s:self}),$truthy(self["$uses_redo?"]())?self.$compile_with_redo(test_code,body_code,redo_var):self.$compile_without_redo(test_code,body_code)}),{$$arity:0,$$s:self})}),{$$arity:1,$$s:this}),$truthy(this["$wrap_in_closure?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() {","; return nil; })())"):this.$wrap("(function() {","; return nil; })()"):nil}),0),self.$private(),$def(self,"$compile_with_redo",(function(test_code,body_code,redo_var){return this.$push(redo_var+" = false; "),this.$compile_while([redo_var," || ",test_code],[redo_var+" = false;",body_code])}),3),$def(self,"$compile_without_redo",(function(test_code,body_code){return this.$compile_while([test_code],[body_code])}),2),$def(self,"$compile_while",(function(test_code,body_code){return $send(this,"push",[this.$while_open()].concat($to_a(test_code)).concat([this.$while_close()])),$send(this,"indent",[],(function $$4(){return $send(null==$$4.$$s?this:$$4.$$s,"line",$to_a(body_code))}),{$$arity:0,$$s:this}),this.$line("}")}),2),$def(self,"$while_open",(function(){return"while ("}),0),$def(self,"$while_close",(function(){return") {"}),0),$def(self,"$uses_redo?",(function(){return this.$while_loop()["$[]"]("use_redo")}),0),$def(self,"$wrap_in_closure?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$expr?"]())?$ret_or_1:this["$recv?"]()}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"UntilNode");self.$handle("until"),self.$private(),$def(self,"$while_open",(function(){return"while (!("}),0),$def(self,"$while_close",(function(){return")) {"}),0)}($nesting[0],$$("WhileNode")),function($base,$super){var self=$klass($base,$super,"WhilePostNode");self.$handle("while_post"),self.$private(),$def(self,"$compile_while",(function(test_code,body_code){return this.$push("do {"),$send(this,"indent",[],(function $$7(){return $send(null==$$7.$$s?this:$$7.$$s,"line",$to_a(body_code))}),{$$arity:0,$$s:this}),$send(this,"line",["} ",this.$while_open()].concat($to_a(test_code)).concat([this.$while_close()]))}),2),$def(self,"$while_close",(function(){return");"}),0)}($nesting[0],$$("WhileNode")),function($base,$super){var self=$klass($base,$super,"UntilPostNode");return self.$handle("until_post"),self.$private(),$def(self,"$while_open",(function(){return"while(!("}),0),$def(self,"$while_close",(function(){return"));"}),0)}($nesting[0],$$("WhilePostNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/hash"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$def=Opal.def,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$to_ary=Opal.to_ary,$hash2=Opal.hash2,$rb_minus=Opal.rb_minus;return Opal.add_stubs("require,handle,attr_accessor,each,children,===,type,<<,[],all?,keys,include?,has_kwsplat,compile_merge,simple_keys?,compile_hash2,compile_hash,helper,==,empty?,expr,s,each_with_index,push,wrap,times,size,inspect,to_s,values,[]=,-,join,value"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"HashNode");self.$handle("hash"),self.$attr_accessor("has_kwsplat","keys","values"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.has_kwsplat=!1,self.keys=[],self.values=[],$send(self.$children(),"each",[],(function $$1(child){var $ret_or_1,self=null==$$1.$$s?this:$$1.$$s;return null==self.keys&&(self.keys=nil),null==self.values&&(self.values=nil),null==child&&(child=nil),$eqeqeq("kwsplat",$ret_or_1=child.$type())?self.has_kwsplat=!0:$eqeqeq("pair",$ret_or_1)?(self.keys["$<<"](child.$children()["$[]"](0)),self.values["$<<"](child.$children()["$[]"](1))):nil}),{$$arity:1,$$s:self})}),-1),$def(self,"$simple_keys?",(function(){return $send(this.$keys(),"all?",[],(function(key){return null==key&&(key=nil),["sym","str"]["$include?"](key.$type())}),1)}),0),$def(self,"$compile",(function(){return $truthy(this.$has_kwsplat())?this.$compile_merge():$truthy(this["$simple_keys?"]())?this.$compile_hash2():this.$compile_hash()}),0),$def(self,"$compile_merge",(function(){var $a,result=nil,seq=nil;return this.$helper("hash"),result=($a=[[],[]])[0],seq=$a[1],$send(this.$children(),"each",[],(function $$4(child){var self=null==$$4.$$s?this:$$4.$$s;return null==child&&(child=nil),$eqeq(child.$type(),"kwsplat")?($truthy(seq["$empty?"]())||result["$<<"](self.$expr($send(self,"s",["hash"].concat($to_a(seq))))),result["$<<"](self.$expr(child)),seq=[]):seq["$<<"](child)}),{$$arity:1,$$s:this}),$truthy(seq["$empty?"]())||result["$<<"](this.$expr($send(this,"s",["hash"].concat($to_a(seq))))),$send(result,"each_with_index",[],(function $$5(fragment,idx){var self=null==$$5.$$s?this:$$5.$$s;return null==fragment&&(fragment=nil),null==idx&&(idx=nil),$eqeq(idx,0)?self.$push(fragment):self.$push(".$merge(",fragment,")")}),{$$arity:2,$$s:this})}),0),$def(self,"$compile_hash",(function(){return this.$helper("hash"),$send(this.$children(),"each_with_index",[],(function $$6(pair,idx){var $a,$b,key,value,self=null==$$6.$$s?this:$$6.$$s;return null==pair&&(pair=nil),null==idx&&(idx=nil),$b=pair.$children(),key=null==($a=$to_ary($b))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],$eqeq(idx,0)||self.$push(", "),self.$push(self.$expr(key),", ",self.$expr(value))}),{$$arity:2,$$s:this}),this.$wrap("$hash(",")")}),0),$def(self,"$compile_hash2",(function(){var $a,hash_obj=nil,hash_keys=nil;return $a=[$hash2([],{}),[]],hash_obj=$a[0],hash_keys=$a[1],this.$helper("hash2"),$send(this.$keys().$size(),"times",[],(function $$7(idx){var key,$writer,self=null==$$7.$$s?this:$$7.$$s;return null==idx&&(idx=nil),key=self.$keys()["$[]"](idx).$children()["$[]"](0).$to_s().$inspect(),$truthy(hash_obj["$include?"](key))||hash_keys["$<<"](key),$writer=[key,self.$expr(self.$values()["$[]"](idx))],$send(hash_obj,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),$send(hash_keys,"each_with_index",[],(function $$8(key,idx){var self=null==$$8.$$s?this:$$8.$$s;return null==key&&(key=nil),null==idx&&(idx=nil),$eqeq(idx,0)||self.$push(", "),self.$push(key+": "),self.$push(hash_obj["$[]"](key))}),{$$arity:2,$$s:this}),this.$wrap("$hash2(["+hash_keys.$join(", ")+"], {","})")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"KwSplatNode");return self.$handle("kwsplat"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("Opal.to_hash(",this.$expr(this.$value()),")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/array"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def;return Opal.add_stubs("require,handle,empty?,children,push,each,==,type,expr,<<,fragment"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArrayNode");return self.$handle("array"),$def(self,"$compile",(function(){var $a,code=nil,work=nil,join=nil;return $truthy(this.$children()["$empty?"]())?this.$push("[]"):(code=($a=[[],[]])[0],work=$a[1],$send(this.$children(),"each",[],(function $$1(child){var splat,part,self=null==$$1.$$s?this:$$1.$$s;return null==child&&(child=nil),splat=child.$type()["$=="]("splat"),part=self.$expr(child),$truthy(splat)?($truthy(work["$empty?"]())?$truthy(code["$empty?"]())?code["$<<"](self.$fragment("[].concat("))["$<<"](part)["$<<"](self.$fragment(")")):code["$<<"](self.$fragment(".concat("))["$<<"](part)["$<<"](self.$fragment(")")):($truthy(code["$empty?"]())?code["$<<"](self.$fragment("["))["$<<"](work)["$<<"](self.$fragment("]")):code["$<<"](self.$fragment(".concat(["))["$<<"](work)["$<<"](self.$fragment("])")),code["$<<"](self.$fragment(".concat("))["$<<"](part)["$<<"](self.$fragment(")"))),work=[]):($truthy(work["$empty?"]())||work["$<<"](self.$fragment(", ")),work["$<<"](part))}),{$$arity:1,$$s:this}),$truthy(work["$empty?"]())||(join=[this.$fragment("["),work,this.$fragment("]")],$truthy(code["$empty?"]())?code=join:code.$push([this.$fragment(".concat("),join,this.$fragment(")")])),this.$push(code))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/defined"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeqeq=Opal.eqeqeq,$eqeq=Opal.eqeq,$def=Opal.def,$truthy=Opal.truthy,$to_a=Opal.to_a,$slice=Opal.slice,$send=Opal.send,$range=Opal.range;return Opal.add_stubs("require,handle,children,===,type,value,push,inspect,to_s,==,[],size,compile_defined_send,wrap,compile_defined_ivar,compile_defined_super,compile_defined_yield,compile_defined_xstr,compile_defined_const,compile_defined_cvar,compile_defined_gvar,compile_defined_back_ref,compile_defined_nth_ref,compile_defined_array,respond_to?,__send__,new_temp,scope,expr,wrap_with_try_catch,mid_to_jsid,compile_defined,compile_send_recv_doesnt_raise,self,each,s,uses_block!,block_name,find_parent_def,nil?,relative_access,absolute_const,top_scope,class_variable_owner,helper,include?,each_with_index"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DefinedNode");return self.$handle("defined?"),self.$children("value"),$def(self,"$compile",(function(){var $ret_or_1;return $eqeqeq("self",$ret_or_1=this.$value().$type())||$eqeqeq("nil",$ret_or_1)||$eqeqeq("false",$ret_or_1)||$eqeqeq("true",$ret_or_1)?this.$push(this.$value().$type().$to_s().$inspect()):$eqeqeq("lvasgn",$ret_or_1)||$eqeqeq("ivasgn",$ret_or_1)||$eqeqeq("gvasgn",$ret_or_1)||$eqeqeq("cvasgn",$ret_or_1)||$eqeqeq("casgn",$ret_or_1)||$eqeqeq("op_asgn",$ret_or_1)||$eqeqeq("or_asgn",$ret_or_1)||$eqeqeq("and_asgn",$ret_or_1)?this.$push("'assignment'"):$eqeqeq("lvar",$ret_or_1)?this.$push("'local-variable'"):$eqeqeq("begin",$ret_or_1)?$eqeq(this.$value().$children().$size(),1)&&$eqeq(this.$value().$children()["$[]"](0).$type(),"masgn")?this.$push("'assignment'"):this.$push("'expression'"):$eqeqeq("send",$ret_or_1)?(this.$compile_defined_send(this.$value()),this.$wrap("("," ? 'method' : nil)")):$eqeqeq("ivar",$ret_or_1)?(this.$compile_defined_ivar(this.$value()),this.$wrap("("," ? 'instance-variable' : nil)")):$eqeqeq("zsuper",$ret_or_1)||$eqeqeq("super",$ret_or_1)?this.$compile_defined_super():$eqeqeq("yield",$ret_or_1)?(this.$compile_defined_yield(),this.$wrap("("," ? 'yield' : nil)")):$eqeqeq("xstr",$ret_or_1)?this.$compile_defined_xstr(this.$value()):$eqeqeq("const",$ret_or_1)?(this.$compile_defined_const(this.$value()),this.$wrap("("," ? 'constant' : nil)")):$eqeqeq("cvar",$ret_or_1)?(this.$compile_defined_cvar(this.$value()),this.$wrap("("," ? 'class variable' : nil)")):$eqeqeq("gvar",$ret_or_1)?(this.$compile_defined_gvar(this.$value()),this.$wrap("("," ? 'global-variable' : nil)")):$eqeqeq("back_ref",$ret_or_1)?(this.$compile_defined_back_ref(),this.$wrap("("," ? 'global-variable' : nil)")):$eqeqeq("nth_ref",$ret_or_1)?(this.$compile_defined_nth_ref(),this.$wrap("("," ? 'global-variable' : nil)")):$eqeqeq("array",$ret_or_1)?(this.$compile_defined_array(this.$value()),this.$wrap("("," ? 'expression' : nil)")):this.$push("'expression'")}),0),$def(self,"$compile_defined",(function(node){var type,node_tmp=nil;return type=node.$type(),$truthy(this["$respond_to?"]("compile_defined_"+type))?this.$__send__("compile_defined_"+type,node):(node_tmp=this.$scope().$new_temp(),this.$push("("+node_tmp+" = ",this.$expr(node),")"),node_tmp)}),1),$def(self,"$wrap_with_try_catch",(function(code){var returning_tmp;return returning_tmp=this.$scope().$new_temp(),this.$push("("+returning_tmp+" = (function() { try {"),this.$push(" return "+code+";"),this.$push("} catch ($err) {"),this.$push(" if (Opal.rescue($err, [Opal.Exception])) {"),this.$push(" try {"),this.$push(" return false;"),this.$push(" } finally { Opal.pop_exception() }"),this.$push(" } else { throw $err; }"),this.$push("}})())"),returning_tmp}),1),$def(self,"$compile_send_recv_doesnt_raise",(function(recv_code){return this.$wrap_with_try_catch(recv_code)}),1),$def(self,"$compile_defined_send",(function(node){var $a,args,mid,recv_value_tmp,meth_tmp,recv=nil,method_name=nil,recv_code=nil,recv_tmp=nil;return recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],args=$slice.call($a,2),mid=this.$mid_to_jsid(method_name.$to_s()),$truthy(recv)?(recv_code=this.$compile_defined(recv),this.$push(" && "),$eqeq(recv.$type(),"send")&&(recv_code=this.$compile_send_recv_doesnt_raise(recv_code),this.$push(" && ")),recv_tmp=this.$scope().$new_temp(),this.$push("("+recv_tmp+" = ",recv_code,", "+recv_tmp+") && ")):recv_tmp=this.$scope().$self(),recv_value_tmp=this.$scope().$new_temp(),this.$push("("+recv_value_tmp+" = "+recv_tmp+") && "),meth_tmp=this.$scope().$new_temp(),this.$push("((("+meth_tmp+" = "+recv_value_tmp+mid+") && !"+meth_tmp+".$$stub)"),this.$push(" || "+recv_value_tmp+"['$respond_to_missing?']('"+method_name+"'))"),$send(args,"each",[],(function $$1(arg){var self=null==$$1.$$s?this:$$1.$$s;return null==arg&&(arg=nil),$eqeqeq("block_pass",arg.$type())?nil:(self.$push(" && "),self.$compile_defined(arg))}),{$$arity:1,$$s:this}),this.$wrap("(",")"),meth_tmp+"()"}),1),$def(self,"$compile_defined_ivar",(function(node){var name,tmp;return name=node.$children()["$[]"](0).$to_s()["$[]"]($range(1,-1,!1)),tmp=this.$scope().$new_temp(),this.$push("("+tmp+" = "+this.$scope().$self()+"['"+name+"'], "+tmp+" != null && "+tmp+" !== nil)"),tmp}),1),$def(self,"$compile_defined_super",(function(){return this.$push(this.$expr(this.$s("defined_super")))}),0),$def(self,"$compile_defined_yield",(function(){var block_name,$ret_or_1;return this.$scope()["$uses_block!"](),block_name=$truthy($ret_or_1=this.$scope().$block_name())?$ret_or_1:this.$scope().$find_parent_def().$block_name(),this.$push("("+block_name+" != null && "+block_name+" !== nil)"),block_name}),0),$def(self,"$compile_defined_xstr",(function(node){return this.$push("(typeof(",this.$expr(node),') !== "undefined")')}),1),$def(self,"$compile_defined_const",(function(node){var $a,const_name,const_tmp,const_scope=nil,const_scope_tmp=nil;return const_scope=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],const_name=null==$a[1]?nil:$a[1],const_tmp=this.$scope().$new_temp(),$truthy(const_scope["$nil?"]())?this.$push("("+const_tmp+" = "+this.$scope().$relative_access()+"('"+const_name+"', 'skip_raise'))"):$eqeq(const_scope,this.$s("cbase"))?this.$push("("+const_tmp+" = "+this.$top_scope().$absolute_const()+"('::', '"+const_name+"', 'skip_raise'))"):(const_scope_tmp=this.$compile_defined(const_scope),this.$push(" && ("+const_tmp+" = "+this.$top_scope().$absolute_const()+"("+const_scope_tmp+", '"+const_name+"', 'skip_raise'))")),const_tmp}),1),$def(self,"$compile_defined_cvar",(function(node){var $a,cvar_name,cvar_tmp;return cvar_name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],cvar_tmp=this.$scope().$new_temp(),this.$push("("+cvar_tmp+" = "+this.$class_variable_owner()+".$$cvars['"+cvar_name+"'], "+cvar_tmp+" != null)"),cvar_tmp}),1),$def(self,"$compile_defined_gvar",(function(node){var gvar_temp,name=nil;return this.$helper("gvars"),name=node.$children()["$[]"](0).$to_s()["$[]"]($range(1,-1,!1)),gvar_temp=this.$scope().$new_temp(),$truthy(["~","!"]["$include?"](name))?this.$push("("+gvar_temp+" = ",this.$expr(node)," || true)"):this.$push("("+gvar_temp+" = $gvars["+name.$inspect()+"], "+gvar_temp+" != null)"),gvar_temp}),1),$def(self,"$compile_defined_back_ref",(function(){var back_ref_temp;return this.$helper("gvars"),back_ref_temp=this.$scope().$new_temp(),this.$push("("+back_ref_temp+" = $gvars['~'], "+back_ref_temp+" != null && "+back_ref_temp+" !== nil)"),back_ref_temp}),0),$def(self,"$compile_defined_nth_ref",(function(){var nth_ref_tmp;return this.$helper("gvars"),nth_ref_tmp=this.$scope().$new_temp(),this.$push("("+nth_ref_tmp+" = $gvars['~'], "+nth_ref_tmp+" != null && "+nth_ref_tmp+" != nil)"),nth_ref_tmp}),0),$def(self,"$compile_defined_array",(function(node){return $send(node.$children(),"each_with_index",[],(function $$2(child,idx){var self=null==$$2.$$s?this:$$2.$$s;return null==child&&(child=nil),null==idx&&(idx=nil),$eqeq(idx,0)||self.$push(" && "),self.$compile_defined(child)}),{$$arity:2,$$s:this})}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/masgn"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def,$rb_ge=Opal.rb_ge,$not=Opal.not,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,freeze,handle,children,new_temp,scope,==,type,rhs,push,expr,any?,size,compile_masgn,lhs,helper,queue_temp,take_while,!=,drop,each_with_index,compile_assignment,empty?,shift,[],<<,dup,s,>=,!,updated,include?,+,last,raise"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"MassAssignNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"SIMPLE_ASSIGNMENT",["lvasgn","ivasgn","lvar","gvasgn","cdecl","casgn"].$freeze()),self.$handle("masgn"),self.$children("lhs","rhs"),$def(self,"$compile",(function(){var array,rhs_len=nil,retval=nil;return array=this.$scope().$new_temp(),$eqeq(this.$rhs().$type(),"array")?(this.$push(array+" = ",this.$expr(this.$rhs())),rhs_len=$truthy($send(this.$rhs().$children(),"any?",[],(function(c){return null==c&&(c=nil),c.$type()["$=="]("splat")}),1))?nil:this.$rhs().$children().$size(),this.$compile_masgn(this.$lhs().$children(),array,rhs_len),this.$push(", "+array)):(this.$helper("to_ary"),retval=this.$scope().$new_temp(),this.$push(retval+" = ",this.$expr(this.$rhs())),this.$push(", "+array+" = $to_ary("+retval+")"),this.$compile_masgn(this.$lhs().$children(),array),this.$push(", "+retval),this.$scope().$queue_temp(retval)),this.$scope().$queue_temp(array)}),0),$def(self,"$compile_masgn",(function(lhs_items,array,len){var pre_splat=nil,post_splat=nil,splat=nil,part=nil,tmp=nil;return null==len&&(len=nil),pre_splat=$send(lhs_items,"take_while",[],(function(child){return null==child&&(child=nil),child.$type()["$!="]("splat")}),1),post_splat=lhs_items.$drop(pre_splat.$size()),$send(pre_splat,"each_with_index",[],(function $$3(child,idx){return null==child&&(child=nil),null==idx&&(idx=nil),(null==$$3.$$s?this:$$3.$$s).$compile_assignment(child,array,idx,len)}),{$$arity:2,$$s:this}),$truthy(post_splat["$empty?"]())?nil:(splat=post_splat.$shift(),$truthy(post_splat["$empty?"]())?$truthy(part=splat.$children()["$[]"](0))?(this.$helper("slice"),part=part.$dup()["$<<"](this.$s("js_tmp","$slice.call("+array+", "+pre_splat.$size()+")")),this.$push(", "),this.$push(this.$expr(part))):nil:(tmp=this.$scope().$new_temp(),this.$push(", "+tmp+" = "+array+".length - "+post_splat.$size()),this.$push(", "+tmp+" = ("+tmp+" < "+pre_splat.$size()+") ? "+pre_splat.$size()+" : "+tmp),$truthy(part=splat.$children()["$[]"](0))&&(this.$helper("slice"),part=part.$dup()["$<<"](this.$s("js_tmp","$slice.call("+array+", "+pre_splat.$size()+", "+tmp+")")),this.$push(", "),this.$push(this.$expr(part))),$send(post_splat,"each_with_index",[],(function $$4(child,idx){var self=null==$$4.$$s?this:$$4.$$s;return null==child&&(child=nil),null==idx&&(idx=nil),$eqeq(idx,0)?self.$compile_assignment(child,array,tmp):self.$compile_assignment(child,array,tmp+" + "+idx)}),{$$arity:2,$$s:this}),this.$scope().$queue_temp(tmp)))}),-3),$def(self,"$compile_assignment",(function(child,array,idx,len){var assign=nil,part=nil,tmp=nil;if(null==len&&(len=nil),assign=$not(len)||$truthy($rb_ge(idx,len))?this.$s("js_tmp","("+array+"["+idx+"] == null ? nil : "+array+"["+idx+"])"):this.$s("js_tmp",array+"["+idx+"]"),part=child.$updated(),$truthy($$("SIMPLE_ASSIGNMENT")["$include?"](child.$type())))part=part.$updated(nil,$rb_plus(part.$children(),[assign]));else if($eqeq(child.$type(),"send"))part=part.$updated(nil,$rb_plus(part.$children(),[assign]));else if($eqeq(child.$type(),"attrasgn"))part.$last()["$<<"](assign);else{if($eqeq(child.$type(),"mlhs"))return this.$helper("to_ary"),tmp=this.$scope().$new_temp(),this.$push(", ("+tmp+" = $to_ary("+assign.$children()["$[]"](0)+")"),this.$compile_masgn(child.$children(),tmp),this.$push(")"),this.$scope().$queue_temp(tmp),nil;this.$raise("Bad child node in masgn LHS: "+child+". LHS: "+this.$lhs())}return this.$push(", "),this.$push(this.$expr(part))}),-4)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/arglist"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$to_a=Opal.to_a,$def=Opal.def;return Opal.add_stubs("require,handle,each,children,==,type,expr,empty?,<<,fragment,push"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArglistNode");return self.$handle("arglist"),$def(self,"$compile",(function(){var $a,code=nil,work=nil,join=nil;return code=($a=[[],[]])[0],work=$a[1],$send(this.$children(),"each",[],(function $$1(current){var splat,arg,self=null==$$1.$$s?this:$$1.$$s;return null==current&&(current=nil),splat=current.$type()["$=="]("splat"),arg=self.$expr(current),$truthy(splat)?($truthy(work["$empty?"]())?$truthy(code["$empty?"]())?code["$<<"](arg):code["$<<"](self.$fragment(".concat("))["$<<"](arg)["$<<"](self.$fragment(")")):($truthy(code["$empty?"]())?code["$<<"](self.$fragment("["))["$<<"](work)["$<<"](self.$fragment("]")):code["$<<"](self.$fragment(".concat(["))["$<<"](work)["$<<"](self.$fragment("])")),code["$<<"](self.$fragment(".concat("))["$<<"](arg)["$<<"](self.$fragment(")"))),work=[]):($truthy(work["$empty?"]())||work["$<<"](self.$fragment(", ")),work["$<<"](arg))}),{$$arity:1,$$s:this}),$truthy(work["$empty?"]())||(join=work,$truthy(code["$empty?"]())?code=join:code["$<<"](this.$fragment(".concat(["))["$<<"](join)["$<<"](this.$fragment("])"))),$send(this,"push",$to_a(code))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/x_string"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def,$defs=Opal.defs,$lambda=Opal.lambda,$eqeqeq=Opal.eqeqeq,$eqeq=Opal.eqeq,$not=Opal.not,$range=Opal.range;return Opal.add_stubs("handle,unpack_return,children,strip_empty_children,single_line?,compile_single_line,each,compile_child,recv?,wrap,push,==,size,none?,type,end_with?,source,expression,loc,dup,nil?,empty?,rstrip,any?,[],first,shift,last,pop,private,===,include?,self,scope,new,expr,raise,s,strip,=~,!,extract_last_value,expr?,warning,compiler,line"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"XStringNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.should_add_semicolon=$proto.returning=nil,self.$handle("xstr"),$def(self,"$compile",(function(){var unpacked_children,stripped_children;return this.should_add_semicolon=!1,unpacked_children=this.$unpack_return(this.$children()),stripped_children=$$("XStringNode").$strip_empty_children(unpacked_children),$truthy($$("XStringNode")["$single_line?"](stripped_children))?this.$compile_single_line(stripped_children):$send(unpacked_children,"each",[],(function $$1(c){return null==c&&(c=nil),(null==$$1.$$s?this:$$1.$$s).$compile_child(c)}),{$$arity:1,$$s:this}),$truthy(this["$recv?"]())&&this.$wrap("(",")"),$truthy(this.should_add_semicolon)?this.$push(";"):nil}),0),$defs(self,"$single_line?",(function(children){var $ret_or_1;return $truthy($ret_or_1=children.$size()["$=="](1))?$ret_or_1:$send(children,"none?",[],(function(c){var $ret_or_2;return null==c&&(c=nil),$truthy($ret_or_2=c.$type()["$=="]("str"))?c.$loc().$expression().$source()["$end_with?"]("\n"):$ret_or_2}),1)}),1),$defs(self,"$strip_empty_children",(function(children){var empty_line=nil,$ret_or_1=nil;for(children=children.$dup(),empty_line=$lambda((function(child){var $ret_or_1,$ret_or_2=nil;return null==child&&(child=nil),$truthy($ret_or_1=child["$nil?"]())?$ret_or_1:$truthy($ret_or_2=child.$type()["$=="]("str"))?child.$loc().$expression().$source().$rstrip()["$empty?"]():$ret_or_2}),1);$truthy($truthy($ret_or_1=children["$any?"]())?empty_line["$[]"](children.$first()):$ret_or_1);)children.$shift();for(;$truthy($truthy($ret_or_1=children["$any?"]())?empty_line["$[]"](children.$last()):$ret_or_1);)children.$pop();return children}),1),self.$private(),$def(self,"$compile_child",(function(child){var $ret_or_1,value=nil;return $eqeqeq("str",$ret_or_1=child.$type())?(value=child.$loc().$expression().$source(),$truthy(value["$include?"]("self"))&&this.$scope().$self(),this.$push($$("Fragment").$new(value,this.$scope(),child))):$eqeqeq("begin",$ret_or_1)||$eqeqeq("gvar",$ret_or_1)||$eqeqeq("ivar",$ret_or_1)||$eqeqeq("nil",$ret_or_1)?this.$push(this.$expr(child)):this.$raise("Unsupported xstr part: "+child.$type())}),1),$def(self,"$compile_single_line",(function(children){var single_child,has_embeded_return=nil,first_child=nil,$ret_or_1=nil,last_child=nil,last_value=nil;return has_embeded_return=!1,first_child=children.$shift(),single_child=children["$empty?"](),first_child=$truthy($ret_or_1=first_child)?$ret_or_1:this.$s("nil"),$eqeq(first_child.$type(),"str")&&(has_embeded_return=first_child.$loc().$expression().$source().$strip()["$=~"](/^return\b/)),$truthy(this.returning)&&$not(has_embeded_return)&&this.$push("return "),last_child=$truthy($ret_or_1=children.$pop())?$ret_or_1:first_child,$eqeq(last_child.$type(),"str")&&(last_value=this.$extract_last_value(last_child)),$truthy(single_child)||(this.should_add_semicolon=!1,this.$compile_child(first_child),$send(children,"each",[],(function $$5(c){return null==c&&(c=nil),(null==$$5.$$s?this:$$5.$$s).$compile_child(c)}),{$$arity:1,$$s:this})),$eqeq(last_child.$type(),"str")?this.$push($$("Fragment").$new(last_value,this.$scope(),last_child)):this.$compile_child(last_child)}),1),$def(self,"$extract_last_value",(function(last_child){var last_value=nil;return last_value=last_child.$loc().$expression().$source().$rstrip(),$truthy(last_value["$include?"]("self"))&&this.$scope().$self(),($truthy(this.returning)||$truthy(this["$expr?"]()))&&$truthy(last_value["$end_with?"](";"))&&(this.$compiler().$warning("Removed semicolon ending x-string expression, interpreted as unintentional",last_child.$line()),last_value=last_value["$[]"]($range(0,-2,!1))),$truthy(this.returning)&&(this.should_add_semicolon=!0),last_value}),1),$def(self,"$unpack_return",(function(children){var first_child=nil;return first_child=children.$first(),this.returning=!1,$eqeq(first_child.$type(),"js_return")&&(this.returning=!0,children=first_child.$children()),children}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/lambda"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send=Opal.send,$def=Opal.def;return Opal.add_stubs("require,handle,children,helper,defines_lambda,scope,push,expr,iter"),self.$require("opal/nodes/call"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"LambdaNode");return self.$handle("lambda"),self.$children("iter"),$def(self,"$compile",(function(){return this.$helper("lambda"),$send(this.$scope(),"defines_lambda",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return self.$push("$lambda(",self.$expr(self.$iter()),")")}),{$$arity:0,$$s:this})}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes"]=function(Opal){var self=Opal.top;Opal.nil;return Opal.add_stubs("require"),self.$require("opal/nodes/base"),self.$require("opal/nodes/literal"),self.$require("opal/nodes/variables"),self.$require("opal/nodes/constants"),self.$require("opal/nodes/call"),self.$require("opal/nodes/csend"),self.$require("opal/nodes/call_special"),self.$require("opal/nodes/module"),self.$require("opal/nodes/class"),self.$require("opal/nodes/singleton_class"),self.$require("opal/nodes/args"),self.$require("opal/nodes/args/arity_check"),self.$require("opal/nodes/iter"),self.$require("opal/nodes/def"),self.$require("opal/nodes/defs"),self.$require("opal/nodes/if"),self.$require("opal/nodes/logic"),self.$require("opal/nodes/definitions"),self.$require("opal/nodes/yield"),self.$require("opal/nodes/rescue"),self.$require("opal/nodes/super"),self.$require("opal/nodes/top"),self.$require("opal/nodes/while"),self.$require("opal/nodes/hash"),self.$require("opal/nodes/array"),self.$require("opal/nodes/defined"),self.$require("opal/nodes/masgn"),self.$require("opal/nodes/arglist"),self.$require("opal/nodes/x_string"),self.$require("opal/nodes/lambda")},Opal.modules["opal/eof_content"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$eqeq=Opal.eqeq,$range=Opal.range,$to_ary=Opal.to_ary;return Opal.add_stubs("empty?,[],last_token_position,drop_while,lines,==,join,private,last,end_pos"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"EofContent"),$nesting=[self].concat($parent_nesting),$proto=self.$$prototype;return $proto.tokens=$proto.source=nil,$const_set($nesting[0],"DATA_SEPARATOR","__END__\n"),$def(self,"$initialize",(function(tokens,source){return this.tokens=tokens,this.source=source}),2),$def(self,"$eof",(function(){var eof_content=nil,$ret_or_1=nil;return $truthy(this.tokens["$empty?"]())?nil:(eof_content=this.source["$[]"](Opal.Range.$new(this.$last_token_position(),-1,!1)),$truthy(eof_content)?(eof_content=$send(eof_content.$lines(),"drop_while",[],(function(line){return null==line&&(line=nil),line["$=="]("\n")}),1),$eqeq(eof_content["$[]"](0),"__END__\n")?(eof_content=$truthy($ret_or_1=eof_content["$[]"]($range(1,-1,!1)))?$ret_or_1:[]).$join():$eqeq(eof_content,["__END__"])?"":nil):nil)}),0),self.$private(),$def(self,"$last_token_position",(function(){var $a,$b,last_token_info;return $b=this.tokens.$last(),null==($a=$to_ary($b))[0]?nil:$a[0],last_token_info=null==$a[1]?nil:$a[1],null==($a=$to_ary($b=last_token_info))[0]?nil:$a[0],(null==$a[1]?nil:$a[1]).$end_pos()}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/errors"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$defs=Opal.defs,$rb_plus=Opal.rb_plus,$alias=Opal.alias;return Opal.add_stubs("attr_reader,attr_accessor,new,respond_to?,location,location=,-,diagnostic,diagnostic=,to_a,backtrace,unshift,to_s,set_backtrace,path,lineno,+,label,line,lineno=,source_line,label=,expression"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $klass($nesting[0],$$("StandardError"),"Error"),function($base,$super){var self=$klass($base,$super,"GemNotFound");self.$attr_reader("gem_name"),$def(self,"$initialize",(function $$initialize(gem_name){return delete $$initialize.$$p,this.gem_name=gem_name,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",["can't find gem "+gem_name],null)}),1)}($nesting[0],$$("Error")),function($base,$super){$klass($base,$super,"CompilationError").$attr_accessor("location")}($nesting[0],$$("Error")),$klass($nesting[0],$$("CompilationError"),"ParsingError"),$klass($nesting[0],$$("ParsingError"),"RewritingError"),function($base,$super){$klass($base,$super,"SyntaxError").$attr_accessor("location")}($nesting[0],$$$("SyntaxError")),$defs(self,"$opal_location_from_error",(function(error){var opal_location,$writer=nil;return opal_location=$$("OpalBacktraceLocation").$new(),$truthy(error["$respond_to?"]("location"))&&($writer=[error.$location()],$send(opal_location,"location=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy(error["$respond_to?"]("diagnostic"))&&($writer=[error.$diagnostic()],$send(opal_location,"diagnostic=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),opal_location}),1),$defs(self,"$add_opal_location_to_error",(function(opal_location,error){var backtrace=nil;return(backtrace=error.$backtrace().$to_a()).$unshift(opal_location.$to_s()),error.$set_backtrace(backtrace),error}),2),function($base,$super){var self=$klass($base,null,"OpalBacktraceLocation");return self.$attr_accessor("path","lineno","label"),$def(self,"$initialize",(function(path,lineno,label){var $a;return null==path&&(path=nil),null==lineno&&(lineno=nil),null==label&&(label=nil),$a=[path,lineno,label],this.path=$a[0],this.lineno=$a[1],this.label=$a[2],$a}),-1),$def(self,"$to_s",(function(){var string=nil;return string=this.$path(),$truthy(this.$lineno())&&(string=$rb_plus(string,":"+this.$lineno())),string=$rb_plus(string,":in "),string=$truthy(this.$label())?$rb_plus(string,"`"+this.$label()+"'"):$rb_plus(string,"unknown")}),0),$alias(self,"line","lineno"),$def(self,"$diagnostic=",(function(diagnostic){var $writer;return $truthy(diagnostic)?($writer=[diagnostic.$location()],$send(this,"location=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),1),$def(self,"$location=",(function(location){var $writer=nil;return $truthy(location)?($writer=[location.$line()],$send(this,"lineno=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(location["$respond_to?"]("source_line"))?($writer=[location.$source_line()],$send(this,"label=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):$truthy(location["$respond_to?"]("expression"))?($writer=[location.$expression().$source_line()],$send(this,"label=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil):nil}),1)}($nesting[0])}($nesting[0],$nesting)},Opal.modules["opal/magic_comments"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$module=Opal.module,$const_set=Opal.const_set,$hash2=Opal.hash2,$truthy=Opal.truthy,$send=Opal.send,$rb_ge=Opal.rb_ge,$eqeqeq=Opal.eqeqeq,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$defs=Opal.defs;return Opal.add_stubs("freeze,line,loc,take,each,>=,any?,scan,text,to_sym,===,[]=,-"),function($base,$parent_nesting){var self=$module($base,"MagicComments"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"MAGIC_COMMENT_RE",/^# *(\w+) *: *(\S+.*?) *$/.$freeze()),$const_set($nesting[0],"EMACS_MAGIC_COMMENT_RE",/^# *-\*- *(\w+) *: *(\S+.*?) *-\*- *$/.$freeze()),$defs(self,"$parse",(function(sexp,comments){var flags,first_line=nil;return flags=$hash2([],{}),$truthy(sexp)&&(first_line=sexp.$loc().$line(),comments=comments.$take(first_line)),$send(comments,"each",[],(function(comment){var parts=nil;return null==comment&&(comment=nil),$truthy(first_line)&&$truthy($rb_ge(comment.$loc().$line(),first_line))?nil:$truthy((parts=comment.$text().$scan($$("MAGIC_COMMENT_RE")))["$any?"]())||$truthy((parts=comment.$text().$scan($$("EMACS_MAGIC_COMMENT_RE")))["$any?"]())?$send(parts,"each",[],(function(key,value){var $writer,$ret_or_1;return null==key&&(key=nil),null==value&&(value=nil),$writer=[key.$to_sym(),$eqeqeq("true",$ret_or_1=value)||!$eqeqeq("false",$ret_or_1)&&value],$send(flags,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),2):nil}),1),flags}),2)}($$("Opal"),$nesting)},Opal.modules["opal/compiler"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$hash2=Opal.hash2,$defs=Opal.defs,$klass=Opal.klass,$const_set=Opal.const_set,$send=Opal.send,$truthy=Opal.truthy,$not=Opal.not,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$Opal=Opal.Opal,$to_ary=Opal.to_ary,$alias=Opal.alias,$eqeqeq=Opal.eqeqeq,$regexp=Opal.regexp,$rb_plus=Opal.rb_plus,$slice=Opal.slice,$eqeq=Opal.eqeq;return Opal.add_stubs("require,compile,new,freeze,join,dirname,first,split,basename,to_s,cleanpath,Pathname,fetch,define_method,option_value,key?,[],!,include?,raise,inspect,[]=,-,compiler_option,attr_reader,attr_accessor,parse,re_raise_with_location,flatten,process,end_with?,code,last,<<,fragment,s,map,to_proc,file,source=,default_parser,tokenize,requirable?,eval?,tap,meta,associate_locations,eof,magic_comments,to_sym,strip,async_await_before_typecasting,===,async_await_set_to_regexp,to_a,gsub,escape,location=,opal_location_from_error,path=,label,lines,to_i,line,label=,message,set_backtrace,backtrace,add_opal_location_to_error,warn,empty?,+,start_with?,helpers,new_temp,queue_temp,push_while,pop_while,in_while?,nil?,scope,handlers,type,compile_to_fragments,error,returns,updated,children,==,uses_block!,block_name,find_parent_def,cache,source_map"),self.$require("set"),self.$require("opal/parser"),self.$require("opal/fragment"),self.$require("opal/nodes"),self.$require("opal/eof_content"),self.$require("opal/errors"),self.$require("opal/magic_comments"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$compile",(function(source,options){return null==options&&(options=$hash2([],{})),$$("Compiler").$new(source,options).$compile()}),-2),function($base,$super,$parent_nesting){var self=$klass($base,null,"Compiler"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.option_values=$proto.options=$proto.magic_comments=$proto.fragments=$proto.source=$proto.buffer=$proto.source_map=$proto.result=$proto.helpers=$proto.method_calls=$proto.async_await=$proto.indent=$proto.unique=$proto.scope=$proto.case_stmt=$proto.handlers=$proto.requires=$proto.required_trees=$proto.autoloads=nil,$const_set($nesting[0],"INDENT"," "),$const_set($nesting[0],"COMPARE",["<",">","<=",">="].$freeze()),$defs(self,"$module_name",(function(path){return path=$$("File").$join($$("File").$dirname(path),$$("File").$basename(path).$split(".").$first()),this.$Pathname(path).$cleanpath().$to_s()}),1),$defs(self,"$compiler_option",(function(name,config){var method_name;return null==config&&(config=$hash2([],{})),method_name=config.$fetch("as",name),$send(this,"define_method",[method_name],(function $$1(){return(null==$$1.$$s?this:$$1.$$s).$option_value(name,config)}),{$$arity:0,$$s:this})}),-2),$def(self,"$option_value",(function(name,config){var default_value,magic_comment,$writer,valid_values=nil,value=nil;return $truthy(this.option_values["$key?"](name))?this.option_values["$[]"](name):(default_value=config["$[]"]("default"),valid_values=config["$[]"]("valid_values"),magic_comment=config["$[]"]("magic_comment"),value=this.options.$fetch(name,default_value),$truthy(magic_comment)&&$truthy(this.magic_comments["$key?"](name))&&(value=this.magic_comments.$fetch(name)),$truthy(valid_values)&&$not(valid_values["$include?"](value))&&this.$raise($$("ArgumentError"),"invalid value "+value.$inspect()+" for option "+name.$inspect()+" (valid values: "+valid_values.$inspect()+")"),$writer=[name,value],$send(this.option_values,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),2),self.$compiler_option("file",$hash2(["default"],{default:"(file)"})),self.$compiler_option("method_missing",$hash2(["default","as"],{default:!0,as:"method_missing?"})),self.$compiler_option("arity_check",$hash2(["default","as"],{default:!1,as:"arity_check?"})),self.$compiler_option("freezing",$hash2(["default","as"],{default:!0,as:"freezing?"})),self.$compiler_option("irb",$hash2(["default","as"],{default:!1,as:"irb?"})),self.$compiler_option("dynamic_require_severity",$hash2(["default","valid_values"],{default:"ignore",valid_values:["error","warning","ignore"]})),self.$compiler_option("requirable",$hash2(["default","as"],{default:!1,as:"requirable?"})),self.$compiler_option("esm",$hash2(["default","as"],{default:!1,as:"esm?"})),self.$compiler_option("inline_operators",$hash2(["default","as"],{default:!0,as:"inline_operators?"})),self.$compiler_option("eval",$hash2(["default","as"],{default:!1,as:"eval?"})),self.$compiler_option("enable_source_location",$hash2(["default","as"],{default:!1,as:"enable_source_location?"})),self.$compiler_option("use_strict",$hash2(["default","as","magic_comment"],{default:!1,as:"use_strict?",magic_comment:!0})),self.$compiler_option("parse_comments",$hash2(["default","as"],{default:!1,as:"parse_comments?"})),self.$compiler_option("scope_variables",$hash2(["default"],{default:[]})),self.$compiler_option("await",$hash2(["default","as","magic_comment"],{default:!1,as:"async_await",magic_comment:!0})),self.$attr_reader("result"),self.$attr_reader("fragments"),self.$attr_accessor("scope"),self.$attr_accessor("top_scope"),self.$attr_reader("case_stmt"),self.$attr_reader("eof_content"),self.$attr_reader("comments"),self.$attr_reader("magic_comments"),$def(self,"$initialize",(function(source,options){return null==options&&(options=$hash2([],{})),this.source=source,this.indent="",this.unique=0,this.options=options,this.comments=$$("Hash").$new([]),this.case_stmt=nil,this.option_values=$hash2([],{}),this.magic_comments=$hash2([],{})}),-2),$def(self,"$compile",(function(){return this.$parse(),this.fragments=$send(this,"re_raise_with_location",[],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;return null==self.sexp&&(self.sexp=nil),self.$process(self.sexp).$flatten()}),{$$arity:0,$$s:this}),$truthy(this.fragments.$last().$code()["$end_with?"]("\n"))||this.fragments["$<<"](this.$fragment("\n",nil,this.$s("newline"))),this.result=$send(this.fragments,"map",[],"code".$to_proc()).$join("")}),0),$def(self,"$parse",(function(){var $a,$b,sexp,comments,tokens,kind,$ret_or_1,$writer=nil;return this.buffer=$$$($$$($Opal,"Parser"),"SourceBuffer").$new(this.$file(),1),$writer=[this.source],$send(this.buffer,"source=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.parser=$$$($$("Opal"),"Parser").$default_parser(),$b=$send(this,"re_raise_with_location",[],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return null==self.parser&&(self.parser=nil),null==self.buffer&&(self.buffer=nil),self.parser.$tokenize(self.buffer)}),{$$arity:0,$$s:this}),sexp=null==($a=$to_ary($b))[0]?nil:$a[0],comments=null==$a[1]?nil:$a[1],tokens=null==$a[2]?nil:$a[2],kind=$truthy(this["$requirable?"]())?"require":$truthy(this["$eval?"]())?"eval":"main",this.sexp=$send(this.$s("top",$truthy($ret_or_1=sexp)?$ret_or_1:this.$s("nil")),"tap",[],(function(i){return null==i&&(i=nil),$writer=["kind",kind],$send(i.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),this.comments=$$$($$$($$$("Parser"),"Source"),"Comment").$associate_locations(sexp,comments),this.magic_comments=$$("MagicComments").$parse(sexp,comments),this.eof_content=$$("EofContent").$new(tokens,this.source).$eof()}),0),$def(self,"$source_map",(function(){var $ret_or_1;return $truthy($ret_or_1=this.source_map)?$ret_or_1:$$$($$$($Opal,"SourceMap"),"File").$new(this.fragments,this.$file(),this.source,this.result)}),0),$def(self,"$helpers",(function(){var $ret_or_1;return this.helpers=$truthy($ret_or_1=this.helpers)?$ret_or_1:$$("Set").$new($send(this.$magic_comments()["$[]"]("helpers").$to_s().$split(","),"map",[],(function(h){return null==h&&(h=nil),h.$strip().$to_sym()}),1))}),0),$def(self,"$method_calls",(function(){var $ret_or_1;return this.method_calls=$truthy($ret_or_1=this.method_calls)?$ret_or_1:$$("Set").$new()}),0),$alias(self,"async_await_before_typecasting","async_await"),$def(self,"$async_await",(function(){var $a,original=nil,$ret_or_1=nil;return $truthy(null!=($a=this.async_await)&&$a!==nil?"instance-variable":nil)?this.async_await:(original=this.$async_await_before_typecasting(),this.async_await=$eqeqeq($$("String"),$ret_or_1=original)?this.$async_await_set_to_regexp($send(original.$split(","),"map",[],(function(h){return null==h&&(h=nil),h.$strip().$to_sym()}),1)):$eqeqeq($$("Array"),$ret_or_1)||$eqeqeq($$("Set"),$ret_or_1)?this.$async_await_set_to_regexp($send(original.$to_a(),"map",[],"to_sym".$to_proc())):$eqeqeq($$("Regexp"),$ret_or_1)||$eqeqeq(!0,$ret_or_1)||$eqeqeq(!1,$ret_or_1)?original:this.$raise("A value of await compiler option can be either a Set, an Array, a String or a Boolean."))}),0),$def(self,"$async_await_set_to_regexp",(function(set){return set=(set=$send(set,"map",[],(function(name){return null==name&&(name=nil),$$("Regexp").$escape(name.$to_s()).$gsub("\\*",".*?")}),1)).$join("|"),$regexp(["^(",set,")$"])}),1),$def(self,"$error",(function(msg,line){var error,$writer;return null==line&&(line=nil),error=$$$($Opal,"SyntaxError").$new(msg),$writer=[$$$($$("Opal"),"OpalBacktraceLocation").$new(this.$file(),line)],$send(error,"location=",$to_a($writer)),$rb_minus($writer.length,1),this.$raise(error)}),-2),$def(self,"$re_raise_with_location",(function $$re_raise_with_location(){var $yield=$$re_raise_with_location.$$p||nil,error=nil,opal_location=nil,$writer=nil,new_error=nil;delete $$re_raise_with_location.$$p;try{return Opal.yieldX($yield,[])}catch($err){if(!Opal.rescue($err,[$$("StandardError"),$$$($Opal,"SyntaxError")]))throw $err;error=$err;try{return opal_location=$Opal.$opal_location_from_error(error),$writer=[this.$file()],$send(opal_location,"path=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(opal_location.$label())||($writer=[this.source.$lines()["$[]"]($rb_minus(opal_location.$line().$to_i(),1)).$strip()],$send(opal_location,"label=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),(new_error=$$$($Opal,"SyntaxError").$new(error.$message())).$set_backtrace(error.$backtrace()),$Opal.$add_opal_location_to_error(opal_location,new_error),this.$raise(new_error)}finally{Opal.pop_exception()}}}),0),$def(self,"$warning",(function(msg,line){return null==line&&(line=nil),this.$warn("warning: "+msg+" -- "+this.$file()+":"+line)}),-2),$def(self,"$parser_indent",(function(){return this.indent}),0),$def(self,"$s",(function(type,$a){var children;return children=Opal.slice.call(arguments,1),$$$($$$($Opal,"AST"),"Node").$new(type,children)}),-2),$def(self,"$fragment",(function(str,scope,sexp){return null==sexp&&(sexp=nil),$$("Fragment").$new(str,scope,sexp)}),-3),$def(self,"$unique_temp",(function(name){var unique;return name=name.$to_s(),$truthy(name)&&$not(name["$empty?"]())&&(name=name.$to_s().$gsub("<=>","$lt_eq_gt").$gsub("===","$eq_eq_eq").$gsub("==","$eq_eq").$gsub("=~","$eq_tilde").$gsub("!~","$excl_tilde").$gsub("!=","$not_eq").$gsub("<=","$lt_eq").$gsub(">=","$gt_eq").$gsub("=","$eq").$gsub("?","$ques").$gsub("!","$excl").$gsub("/","$slash").$gsub("%","$percent").$gsub("+","$plus").$gsub("-","$minus").$gsub("<","$lt").$gsub(">","$gt").$gsub(/[^\w\$]/,"$")),unique=this.unique=$rb_plus(this.unique,1),""+($truthy(name["$start_with?"]("$"))?nil:"$")+name+"$"+unique}),1),$def(self,"$helper",(function(name){return this.$helpers()["$<<"](name)}),1),$def(self,"$indent",(function $$indent(){var indent,res,$yield=$$indent.$$p||nil;return delete $$indent.$$p,indent=this.indent,this.indent=$rb_plus(this.indent,$$("INDENT")),this.space="\n"+this.indent,res=Opal.yieldX($yield,[]),this.indent=indent,this.space="\n"+this.indent,res}),0),$def(self,"$with_temp",(function $$with_temp(){var tmp,res,$yield=$$with_temp.$$p||nil;return delete $$with_temp.$$p,tmp=this.scope.$new_temp(),res=Opal.yield1($yield,tmp),this.scope.$queue_temp(tmp),res}),0),$def(self,"$in_while",(function $$in_while(){var result,$yield=$$in_while.$$p||nil;return delete $$in_while.$$p,$yield===nil?nil:(this.while_loop=this.scope.$push_while(),result=Opal.yieldX($yield,[]),this.scope.$pop_while(),result)}),0),$def(self,"$in_case",(function $$in_case(){var old,$yield=$$in_case.$$p||nil;return delete $$in_case.$$p,$yield===nil?nil:(old=this.case_stmt,this.case_stmt=$hash2([],{}),Opal.yieldX($yield,[]),this.case_stmt=old)}),0),$def(self,"$in_while?",(function(){return this.scope["$in_while?"]()}),0),$def(self,"$process",(function(sexp,level){var handler=nil;return null==level&&(level="expr"),$truthy(sexp["$nil?"]())?this.$fragment("",this.$scope()):$truthy(handler=this.$handlers()["$[]"](sexp.$type()))?handler.$new(sexp,level,this).$compile_to_fragments():this.$error("Unsupported sexp: "+sexp.$type())}),-2),$def(self,"$handlers",(function(){var $ret_or_1;return this.handlers=$truthy($ret_or_1=this.handlers)?$ret_or_1:$$$($$$($$("Opal"),"Nodes"),"Base").$handlers()}),0),$def(self,"$requires",(function(){var $ret_or_1;return this.requires=$truthy($ret_or_1=this.requires)?$ret_or_1:[]}),0),$def(self,"$required_trees",(function(){var $ret_or_1;return this.required_trees=$truthy($ret_or_1=this.required_trees)?$ret_or_1:[]}),0),$def(self,"$autoloads",(function(){var $ret_or_1;return this.autoloads=$truthy($ret_or_1=this.autoloads)?$ret_or_1:[]}),0),$def(self,"$returns",(function(sexp){var $a,$b,$ret_or_1,when_sexp=nil,then_sexp=nil,body_sexp=nil,resbodies=nil,else_sexp=nil,klass=nil,lvar=nil,body=nil,rescue_sexp=nil,ensure_body=nil,rest=nil,last=nil,cond=nil,true_body=nil,false_body=nil;return $truthy(sexp)?$eqeqeq("undef",$ret_or_1=sexp.$type())?this.$returns(sexp.$updated("begin",[sexp,this.$s("nil")])):$eqeqeq("break",$ret_or_1)||$eqeqeq("next",$ret_or_1)||$eqeqeq("redo",$ret_or_1)||$eqeqeq("retry",$ret_or_1)?sexp:$eqeqeq("yield",$ret_or_1)?sexp.$updated("returnable_yield",nil):$eqeqeq("when",$ret_or_1)?($b=($b=($a=[].concat($to_a(sexp))).length-1)<0?0:$b,when_sexp=$slice.call($a,0,$b),then_sexp=null==$a[$b]?nil:$a[$b],sexp.$updated(nil,[].concat($to_a(when_sexp)).concat([this.$returns(then_sexp)]))):$eqeqeq("rescue",$ret_or_1)?(body_sexp=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],$b=($b=$a.length-1)<1?1:$b,resbodies=$slice.call($a,1,$b),else_sexp=null==$a[$b]?nil:$a[$b],resbodies=$send(resbodies,"map",[],(function $$9(resbody){return null==resbody&&(resbody=nil),(null==$$9.$$s?this:$$9.$$s).$returns(resbody)}),{$$arity:1,$$s:this}),$truthy(else_sexp)&&(else_sexp=this.$returns(else_sexp)),sexp.$updated(nil,[this.$returns(body_sexp)].concat($to_a(resbodies)).concat([else_sexp]))):$eqeqeq("resbody",$ret_or_1)?(klass=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],lvar=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],sexp.$updated(nil,[klass,lvar,this.$returns(body)])):$eqeqeq("ensure",$ret_or_1)?(rescue_sexp=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],ensure_body=null==$a[1]?nil:$a[1],(sexp=sexp.$updated(nil,[this.$returns(rescue_sexp),ensure_body])).$updated("js_return",[sexp])):$eqeqeq("begin",$ret_or_1)||$eqeqeq("kwbegin",$ret_or_1)?($b=($b=($a=[].concat($to_a(sexp))).length-1)<0?0:$b,rest=$slice.call($a,0,$b),last=null==$a[$b]?nil:$a[$b],sexp.$updated(nil,[].concat($to_a(rest)).concat([this.$returns(last)]))):$eqeqeq("while",$ret_or_1)||$eqeqeq("until",$ret_or_1)||$eqeqeq("while_post",$ret_or_1)||$eqeqeq("until_post",$ret_or_1)||$eqeqeq("return",$ret_or_1)||$eqeqeq("js_return",$ret_or_1)||$eqeqeq("returnable_yield",$ret_or_1)?sexp:$eqeqeq("xstr",$ret_or_1)?sexp.$updated(nil,[$send(this,"s",["js_return"].concat($to_a(sexp.$children())))]):$eqeqeq("if",$ret_or_1)?(cond=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],true_body=null==$a[1]?nil:$a[1],false_body=null==$a[2]?nil:$a[2],sexp.$updated(nil,[cond,this.$returns(true_body),this.$returns(false_body)])):$eqeq(sexp.$type(),"send")&&$eqeq(sexp.$children()["$[]"](1),"debugger")?sexp.$updated("begin",[sexp,this.$s("js_return",this.$s("nil"))]):sexp.$updated("js_return",[sexp]):this.$returns(this.$s("nil"))}),1),$def(self,"$handle_block_given_call",(function(sexp){var scope=nil;return this.scope["$uses_block!"](),$truthy(this.scope.$block_name())?this.$fragment("("+this.scope.$block_name()+" !== nil)",this.$scope(),sexp):$truthy(scope=this.scope.$find_parent_def())&&$truthy(scope.$block_name())?this.$fragment("("+scope.$block_name()+" !== nil)",scope,sexp):this.$fragment("false",scope,sexp)}),1),$def(self,"$marshal_dump",(function(){var $ret_or_1;return[this.options,this.option_values,this.source_map=$truthy($ret_or_1=this.source_map)?$ret_or_1:this.$source_map().$cache(),this.magic_comments,this.result,this.required_trees,this.requires,this.autoloads]}),0),$def(self,"$marshal_load",(function(src){var $a,$b;return $a=$to_ary($b=src),this.options=null==$a[0]?nil:$a[0],this.option_values=null==$a[1]?nil:$a[1],this.source_map=null==$a[2]?nil:$a[2],this.magic_comments=null==$a[3]?nil:$a[3],this.result=null==$a[4]?nil:$a[4],this.required_trees=null==$a[5]?nil:$a[5],this.requires=null==$a[6]?nil:$a[6],this.autoloads=null==$a[7]?nil:$a[7],$b}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/erb"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$defs=Opal.defs,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$send=Opal.send,$regexp=Opal.regexp;return Opal.add_stubs("require,compile,new,freeze,fix_quotes,find_contents,find_code,wrap_compiled,require_erb,prepared_source,gsub,+,last_match,=~,sub"),self.$require("opal/compiler"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"ERB"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$compile",(function(source,file_name){return null==file_name&&(file_name="(erb)"),$$("Compiler").$new(source,file_name).$compile()}),-2),function($base,$super,$parent_nesting){var self=$klass($base,null,"Compiler"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.prepared_source=$proto.source=$proto.file_name=nil,$const_set($nesting[0],"BLOCK_EXPR",/\s+(do|\{)(\s*\|[^|]*\|)?\s*\Z/.$freeze()),$def(self,"$initialize",(function(source,file_name){var $a;return null==file_name&&(file_name="(erb)"),$a=[source,file_name,source],this.source=$a[0],this.file_name=$a[1],this.result=$a[2],$a}),-2),$def(self,"$prepared_source",(function(){var $ret_or_1,source=nil;return this.prepared_source=$truthy($ret_or_1=this.prepared_source)?$ret_or_1:(source=this.source,source=this.$fix_quotes(source),source=this.$find_contents(source),source=this.$find_code(source),source=this.$wrap_compiled(source),source=this.$require_erb(source))}),0),$def(self,"$compile",(function(){return $$("Opal").$compile(this.$prepared_source())}),0),$def(self,"$fix_quotes",(function(result){return result.$gsub('"','\\"')}),1),$def(self,"$require_erb",(function(result){return $rb_plus('require "erb";',result)}),1),$def(self,"$find_contents",(function(result){return $send(result,"gsub",[/<%=([\s\S]+?)%>/],(function(){var inner=nil;return inner=$$("Regexp").$last_match(1).$gsub(/\\'/,"'").$gsub(/\\"/,'"'),$truthy(inner["$=~"]($$("BLOCK_EXPR")))?'")\noutput_buffer.append= '+inner+'\noutput_buffer.append("':'")\noutput_buffer.append=('+inner+')\noutput_buffer.append("'}),0)}),1),$def(self,"$find_code",(function(result){return $send(result,"gsub",[/<%([\s\S]+?)%>/],(function(){return'")\n'+$$("Regexp").$last_match(1).$gsub(/\\"/,'"')+'\noutput_buffer.append("'}),0)}),1),$def(self,"$wrap_compiled",(function(result){return"Template.new('"+this.file_name.$sub($regexp(["\\.opalerb",$$("REGEXP_END")]),"")+"') do |output_buffer|\noutput_buffer.append(\""+result+'")\noutput_buffer.join\nend\n'}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/builder_processors"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$send=Opal.send,$def=Opal.def,$eqeq=Opal.eqeq,$Opal=Opal.Opal,$const_set=Opal.const_set,$send2=Opal.send2,$find_super=Opal.find_super,$defs=Opal.defs,$to_a=Opal.to_a;return Opal.add_stubs("require,end_with?,+,dup,delete,cache,attr_reader,to_s,source,join,==,size,new,register_processor,is_a?,match,match_regexp,raise,inspect,handles,map,with_index,each_line,index,filename,mark_as_required,result,compiled,source_map,fetch,cache_key,compiler_for,compile,class,merge,requires,required_trees,autoloads,extname,prepare,private,prepared_source,module_name"),self.$require("opal/compiler"),self.$require("opal/erb"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"BuilderProcessors")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Processor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.options=nil,$def(self,"$initialize",(function(source,filename,options){var $a;return null==options&&(options=$hash2([],{})),$truthy(source["$end_with?"]("\n"))||(source=$rb_plus(source,"\n")),$a=[source,filename,options.$dup()],this.source=$a[0],this.filename=$a[1],this.options=$a[2],this.cache=$send(this.options,"delete",["cache"],(function(){return $$("Opal").$cache()}),0),this.requires=[],this.required_trees=[],this.autoloads=[]}),-3),self.$attr_reader("source","filename","options","requires","required_trees","autoloads"),$def(self,"$to_s",(function(){return this.$source().$to_s()}),0),function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$attr_reader("extensions"),$def(self,"$handles",(function($a){var extensions,self=this,matches=nil;return extensions=Opal.slice.call(arguments),self.extensions=extensions,matches=extensions.$join("|"),$eqeq(extensions.$size(),1)||(matches="("+matches+")"),self.match_regexp=$$("Regexp").$new("\\."+matches+$$("REGEXP_END")),$$$($Opal,"Builder").$register_processor(self,extensions),nil}),-1),$def(self,"$match?",(function(other){var $ret_or_1;return $truthy($ret_or_1=other["$is_a?"]($$("String")))?other.$match(this.$match_regexp()):$ret_or_1}),1),$def(self,"$match_regexp",(function(){var $ret_or_1;return null==this.match_regexp&&(this.match_regexp=nil),$truthy($ret_or_1=this.match_regexp)?$ret_or_1:this.$raise($$("NotImplementedError"))}),0)}(Opal.get_singleton_class(self),$nesting),$def(self,"$mark_as_required",(function(filename){return"Opal.loaded(["+filename.$to_s().$inspect()+"]);"}),1)}($nesting[0],0,$nesting),function($base,$super,$parent_nesting){var self=$klass($base,$super,"JsProcessor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.source_map=$proto.source=$proto.filename=nil,self.$handles("js"),$const_set($nesting[0],"ManualFragment",$$("Struct").$new("line","column","code","source_map_name")),$def(self,"$source_map",(function(){var $ret_or_1,manual_fragments=nil;return this.source_map=$truthy($ret_or_1=this.source_map)?$ret_or_1:(manual_fragments=$send(this.$source().$each_line().$with_index(),"map",[],(function(line_source,index){var column,line;return null==line_source&&(line_source=nil),null==index&&(index=nil),column=line_source.$index(/\S/),line=$rb_plus(index,1),$$("ManualFragment").$new(line,column,line_source,nil)}),2),$$$($$$($Opal,"SourceMap"),"File").$new(manual_fragments,this.$filename(),this.$source()))}),0),$def(self,"$source",(function(){return $rb_plus(this.source.$to_s(),this.$mark_as_required(this.filename))}),0)}($nesting[0],$$("Processor"),$nesting),function($base,$super,$parent_nesting){var self=$klass($base,$super,"RubyProcessor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.compiled=$proto.cache=$proto.filename=$proto.source=$proto.options=nil,self.$handles("rb","opal"),$def(self,"$source",(function(){return this.$compiled().$result()}),0),$def(self,"$source_map",(function(){return this.$compiled().$source_map()}),0),$def(self,"$compiled",(function(){var $ret_or_1;return this.compiled=$truthy($ret_or_1=this.compiled)?$ret_or_1:$send($$$($$("Opal"),"Cache"),"fetch",[this.cache,this.$cache_key()],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s,compiler=nil;return null==self.source&&(self.source=nil),null==self.filename&&(self.filename=nil),(compiler=self.$compiler_for(self.source,$hash2(["file"],{file:self.filename}))).$compile(),compiler}),{$$arity:0,$$s:this})}),0),$def(self,"$cache_key",(function(){return[this.$class(),this.filename,this.source,this.options]}),0),$def(self,"$compiler_for",(function(source,options){return null==options&&(options=$hash2([],{})),$$$($Opal,"Compiler").$new(source,this.options.$merge(options))}),-2),$def(self,"$requires",(function(){return this.$compiled().$requires()}),0),$def(self,"$required_trees",(function(){return this.$compiled().$required_trees()}),0),$def(self,"$autoloads",(function(){return this.$compiled().$autoloads()}),0),$defs(self,"$match?",(function $RubyProcessor_match$ques$5(other){var $ret_or_1,$yield=$RubyProcessor_match$ques$5.$$p||nil;return delete $RubyProcessor_match$ques$5.$$p,$truthy($ret_or_1=$send2(this,$find_super(this,"match?",$RubyProcessor_match$ques$5,!1,!0),"match?",[other],$yield))?$ret_or_1:$$("File").$extname(other.$to_s())["$=="]("")}),1)}($nesting[0],$$("Processor"),$nesting),function($base,$super){var self=$klass($base,$super,"OpalERBProcessor"),$proto=self.$$prototype;$proto.source=$proto.filename=nil,self.$handles("opalerb"),$def(self,"$initialize",(function $$initialize($a){var args,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,args=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a(args),$yield),self.source=self.$prepare(self.source,self.filename)}),-1),$def(self,"$requires",(function $$requires(){var $yield=$$requires.$$p||nil;return delete $$requires.$$p,$rb_plus(["erb"],$send2(this,$find_super(this,"requires",$$requires,!1,!0),"requires",[],$yield))}),0),self.$private(),$def(self,"$prepare",(function(source,path){return $$$($$$($Opal,"ERB"),"Compiler").$new(source,path).$prepared_source()}),2)}($nesting[0],$$("RubyProcessor")),function($base,$super){var self=$klass($base,$super,"ERBProcessor"),$proto=self.$$prototype;return $proto.source=$proto.filename=nil,self.$handles("erb"),$def(self,"$source",(function(){var result;return result=$$$("ERB").$new(this.source.$to_s()).$result(),"Opal.modules["+$$$($Opal,"Compiler").$module_name(this.filename).$inspect()+"] = function() {"+result+"};"}),0)}($nesting[0],$$("Processor"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules.base64=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$defs=Opal.defs,$hash2=Opal.hash2,$truthy=Opal.truthy;return Opal.add_stubs("raise,delete"),function($base,$parent_nesting){var encode,decode,self=$module($base,"Base64"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";return encode=function(input){for(var block,charCode,str=String(input),idx=0,map=chars,output="";str.charAt(0|idx)||(map="=",idx%1);output+=map.charAt(63&block>>8-idx%1*8))(charCode=str.charCodeAt(idx+=3/4))>255&&self.$raise($$("ArgumentError"),"invalid character (failed: The string to be encoded contains characters outside of the Latin1 range.)"),block=block<<8|charCode;return output},decode=function(input){var str=String(input).replace(/=+$/,"");str.length%4==1&&self.$raise($$("ArgumentError"),"invalid base64 (failed: The string to be decoded is not correctly encoded.)");for(var bs,buffer,bc=0,idx=0,output="";buffer=str.charAt(idx++);~buffer&&(bs=bc%4?64*bs+buffer:buffer,bc++%4)?output+=String.fromCharCode(255&bs>>(-2*bc&6)):0)buffer=chars.indexOf(buffer);return output},$defs(self,"$decode64",(function(string){return decode(string.replace(/\r?\n/g,""))}),1),$defs(self,"$encode64",(function(string){return encode(string).replace(/(.{60})/g,"$1\n").replace(/([^\n])$/g,"$1\n")}),1),$defs(self,"$strict_decode64",(function(string){return decode(string)}),1),$defs(self,"$strict_encode64",(function(string){return encode(string)}),1),$defs(self,"$urlsafe_decode64",(function(string){return decode(string.replace(/\-/g,"+").replace(/_/g,"/"))}),1),$defs(self,"$urlsafe_encode64",(function(string,$kwargs){var padding,str=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(padding=$kwargs.$$smap.padding)&&(padding=!0),str=encode(string).replace(/\+/g,"-").replace(/\//g,"_"),$truthy(padding)||(str=str.$delete("=")),str}),-2)}($nesting[0],$nesting)},Opal.modules["corelib/pack_unpack/format_string_parser"]=function(Opal){Opal.nil;var self,directives,modifiers,$$$=Opal.$$$,$module=Opal.module,$Kernel=Opal.Kernel;return Opal.add_stubs("raise"),self=$module("::","PackUnpack"),directives=["C","S","L","Q","J","c","s","l","q","j","n","N","v","V","U","w","D","d","F","f","E","e","G","g","A","a","Z","B","b","H","h","u","M","m","P","p","@","X","x"],modifiers=["!","_",">","<"],void(self.eachDirectiveAndCount=function(format,callback){var currentDirective,currentCount,currentModifiers,countSpecified;function reset(){currentDirective=null,currentCount=0,currentModifiers=[],countSpecified=!1}function yieldAndReset(){null!=currentDirective?(!/[sSiIlLqQjJ]/.test(currentDirective)&¤tModifiers.length>0&&$Kernel.$raise($$$("ArgumentError"),"'"+currentModifiers[0]+"' allowed only after types sSiIlLqQjJ"),-1!==currentModifiers.indexOf("<")&&-1!==currentModifiers.indexOf(">")&&$Kernel.$raise($$$("RangeError"),"Can't use both '<' and '>'"),countSpecified||(currentCount=1),-1!==currentModifiers.indexOf(">")&&(currentDirective+=">"),callback(currentDirective,currentCount),reset()):reset()}reset();for(var i=0;i,length,inspect,[],unpack"),self.$require("base64"),self.$require("corelib/pack_unpack/format_string_parser"),function($base,$super,$parent_nesting){var self=$klass("::",null,"String"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),expected=nil,given=nil,eachDirectiveAndCount=Opal.PackUnpack.eachDirectiveAndCount;function mapChunksToWords(callback){return function(data){return callback(data).map((function(chunk){return chunk.reverse().reduce((function(result,singleByte){return 256*result+singleByte}),0)}))}}function chunkBy(chunkSize,callback){return function(data){for(var array=callback(data),chunks=[],chunksCount=array.length/chunkSize,i=0;i=limit/2&&(n-=limit),n}))}}function bytesToAsciiChars(callback){return function(data){return callback(data).map((function(singleByte){return String.fromCharCode(singleByte)}))}}function joinChars(callback){return function(data){return callback(data).join("")}}function wrapIntoArray(callback){return function(data){return[callback(data)]}}var charCodesToFilter,filterTrailingZerosAndSpaces=(charCodesToFilter=["\0"," "].map((function(s){return s.charCodeAt(0)})),function(callback){return function(data){for(var charCodes=callback(data);-1!==charCodesToFilter.indexOf(charCodes[charCodes.length-1]);)charCodes=charCodes.slice(0,charCodes.length-1);return charCodes}});function invertChunks(callback){return function(data){return callback(data).map((function(chunk){return chunk.reverse()}))}}function identityFunction(value){return value}var callback,handlers={C:identityFunction,S:mapChunksToWords(chunkBy(2,identityFunction)),L:mapChunksToWords(chunkBy(4,identityFunction)),Q:mapChunksToWords(chunkBy(8,identityFunction)),J:null,"S>":mapChunksToWords(invertChunks(chunkBy(2,identityFunction))),"L>":mapChunksToWords(invertChunks(chunkBy(4,identityFunction))),"Q>":mapChunksToWords(invertChunks(chunkBy(8,identityFunction))),c:toNByteSigned(1,identityFunction),s:toNByteSigned(2,mapChunksToWords(chunkBy(2,identityFunction))),l:toNByteSigned(4,mapChunksToWords(chunkBy(4,identityFunction))),q:toNByteSigned(8,mapChunksToWords(chunkBy(8,identityFunction))),j:null,"s>":toNByteSigned(2,mapChunksToWords(invertChunks(chunkBy(2,identityFunction)))),"l>":toNByteSigned(4,mapChunksToWords(invertChunks(chunkBy(4,identityFunction)))),"q>":toNByteSigned(8,mapChunksToWords(invertChunks(chunkBy(8,identityFunction)))),n:null,N:null,v:null,V:null,U:identityFunction,w:(callback=identityFunction,function(data){for(var bytes=callback(data),result=[],buffer="",i=0;i45)return"";for(length+=n;n>0;){var c1=bytes[i],c2=bytes[i+1],c3=bytes[i+2],b1=(c1-32&63)<<2|(c2-32&63)>>4,b2=(c2-32&63)<<4|(c3-32&63)>>2,b3=(c3-32&63)<<6|bytes[i+3]-32&63;result.push(255&b1),result.push(255&b2),result.push(255&b3),i+=4,n-=3}++i}}return result.slice(0,length)}}(identityFunction))),M:function(callback){return function(data){return callback(data).replace(/[\t\x20]$/gm,"").replace(/=(?:\r\n?|\n|$)/g,"").replace(/=([a-fA-F0-9]{2})/g,(function($0,$1){var codePoint=parseInt($1,16);return String.fromCharCode(codePoint)}))}}(joinChars(bytesToAsciiChars(identityFunction))),m:function(callback){return function(data){return $$("Base64").$decode64(callback(data))}}(joinChars(bytesToAsciiChars(identityFunction))),P:null,p:null};function readBytes(n){return function(bytes){return{chunk:bytes.slice(0,n),rest:bytes=bytes.slice(n,bytes.length)}}}function readNTimesAndMerge(callback){return function(buffer,count){var chunkData,chunk=[];if(count===1/0)for(;buffer.length>0;)buffer=(chunkData=callback(buffer)).rest,chunk=chunk.concat(chunkData.chunk);else for(var i=0;i":readNTimesAndMerge(readBytes(2)),"L>":readNTimesAndMerge(readBytes(4)),"Q>":readNTimesAndMerge(readBytes(8)),c:readNTimesAndMerge(readBytes(1)),s:readNTimesAndMerge(readBytes(2)),l:readNTimesAndMerge(readBytes(4)),q:readNTimesAndMerge(readBytes(8)),j:null,"s>":readNTimesAndMerge(readBytes(2)),"l>":readNTimesAndMerge(readBytes(4)),"q>":readNTimesAndMerge(readBytes(8)),n:null,N:null,v:null,V:null,U:readNTimesAndMerge((function(bytes){var currentByteIndex=0,bytesLength=bytes.length;function readByte(){var result=bytes[currentByteIndex++];return bytesLength=bytes.length-currentByteIndex,result}var extraLength,c=readByte();if(c>>7==0)return{chunk:[c],rest:bytes.slice(currentByteIndex)};c>>6==2&&$Kernel.$raise($$$("ArgumentError"),"malformed UTF-8 character"),c>>5==6?extraLength=1:c>>4==14?extraLength=2:c>>3==30?extraLength=3:c>>2==62?extraLength=4:c>>1==126?extraLength=5:$Kernel.$raise("malformed UTF-8 character"),extraLength>bytesLength&&(expected=extraLength+1,given=bytesLength+1,$Kernel.$raise($$$("ArgumentError"),"malformed UTF-8 character (expected "+expected+" bytes, given "+given+" bytes)"));for(var result=c&(1<<8-extraLength-1)-1,i=0;i>6!=2&&$Kernel.$raise("Invalid multibyte sequence"),result=result<<6|63&c;return result<=65535?{chunk:[result],rest:bytes.slice(currentByteIndex)}:{chunk:[55296+((result-=65536)>>10&1023),56320+(1023&result)],rest:bytes.slice(currentByteIndex)}})),w:readNTimesAndMerge((function(buffer){for(var result=[],i=0;i0&&buffer.length>0;){var singleByte=buffer[0],bitsToTake=Math.min(count,8);Math.ceil(bitsToTake/8);if(buffer=buffer.slice(1,buffer.length),null!=singleByte){var bits=singleByte.toString(2);bits=Array(8-bits.length+1).join("0").concat(bits);for(var j=0;j0&&buffer.length>0;){var singleByte=buffer[0],bitsToTake=Math.min(count,8);Math.ceil(bitsToTake/8);if(buffer=buffer.slice(1,buffer.length),null!=singleByte){var bits=singleByte.toString(2);bits=Array(8-bits.length+1).join("0").concat(bits).split("").reverse().join("");for(var j=0;j0&&buffer.length>0;){var hex=buffer[0].toString(16);buffer=buffer.slice(1,buffer.length),hex=Array(2-hex.length+1).join("0").concat(hex),1===count?(result.push(hex[0]),count--):(result.push(hex[0],hex[1]),count-=2)}return{chunk:result,rest:buffer}},h:function(buffer,count){for(var result=[];count>0&&buffer.length>0;){var hex=buffer[0].toString(16);buffer=buffer.slice(1,buffer.length),hex=Array(2-hex.length+1).join("0").concat(hex),1===count?(result.push(hex[1]),count--):(result.push(hex[1],hex[0]),count-=2)}return{chunk:result,rest:buffer}},u:readNTimesAndMerge((function(buffer){var length=buffer.indexOf(32);return-1===length?{chunk:buffer,rest:[]}:{chunk:buffer.slice(0,length),rest:buffer.slice(length,buffer.length)}})),M:readAll,m:readAll,P:null,p:null},autocompletion={C:!0,S:!0,L:!0,Q:!0,J:null,"S>":!0,"L>":!0,"Q>":!0,c:!0,s:!0,l:!0,q:!0,j:null,"s>":!0,"l>":!0,"q>":!0,n:null,N:null,v:null,V:null,U:!1,w:!1,D:null,d:null,F:null,f:null,E:null,e:null,G:null,g:null,A:!1,a:!1,Z:!1,B:!1,b:!1,H:!1,h:!1,u:!1,M:!1,m:!1,P:null,p:null},optimized={"C*":handlers.C,"c*":handlers.c,"A*":handlers.A,"a*":handlers.a,"M*":wrapIntoArray(handlers.M),"m*":wrapIntoArray(handlers.m),"S*":handlers.S,"s*":handlers.s,"L*":handlers.L,"l*":handlers.l,"Q*":handlers.Q,"q*":handlers.q,"S>*":handlers["S>"],"s>*":handlers["s>"],"L>*":handlers["L>"],"l>*":handlers["l>"],"Q>*":handlers["Q>"],"q>*":handlers["q>"]};function alias(existingDirective,newDirective){readChunk[newDirective]=readChunk[existingDirective],handlers[newDirective]=handlers[existingDirective],autocompletion[newDirective]=autocompletion[existingDirective]}return alias("S>","n"),alias("L>","N"),alias("S","v"),alias("L","V"),$def(self,"$unpack",(function(format,$kwargs){var offset;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");null==(offset=$kwargs.$$smap.offset)&&(offset=0),$truthy($rb_lt(offset,0))&&$Kernel.$raise($$$("ArgumentError"),"offset can't be negative"),format=$Opal["$coerce_to!"](format,$$$("String"),"to_str").$gsub(/\s/,"").$delete("\0");var output=[];if("U*"==format&&"UTF-8"===this.internal_encoding.name&&"function"==typeof this.codePointAt){var j=0;output=new Array(this.length);for(var i=offset;i65535&&i++;return output.slice(0,j)}var buffer=this.$bytes();$truthy($rb_gt(offset,buffer.$length()))&&$Kernel.$raise($$$("ArgumentError"),"offset outside of string"),buffer=buffer.slice(offset);var optimizedHandler=optimized[format];if(optimizedHandler)return optimizedHandler(buffer);return eachDirectiveAndCount(format,(function(directive,count){var part=function(directive,count){var chunk,chunkReader=readChunk[directive];null==chunkReader&&$Kernel.$raise("Unsupported unpack directive "+directive.$inspect()+" (no chunk reader defined)");var chunkData=chunkReader(buffer,count);chunk=chunkData.chunk,buffer=chunkData.rest;var handler=handlers[directive];return null==handler&&$Kernel.$raise("Unsupported unpack directive "+directive.$inspect()+" (no handler defined)"),handler(chunk)}(directive,count);if(count!==1/0){var shouldAutocomplete=autocompletion[directive];null==shouldAutocomplete&&$Kernel.$raise("Unsupported unpack directive "+directive.$inspect()+" (no autocompletion rule defined)"),shouldAutocomplete&&function(array,size){for(;array.length,length,inspect,[],unpack'); @@ -1048,7 +1048,7 @@ Opal.modules["corelib/string/unpack"] = function(Opal) {/* Generated by Opal 1.4 })('::', null, $nesting); }; -Opal.modules["set"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["set"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $defs = Opal.defs, $hash2 = Opal.hash2, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $send = Opal.send, $def = Opal.def, $eqeq = Opal.eqeq, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_lt = Opal.rb_lt, $rb_le = Opal.rb_le, $alias = Opal.alias, $module = Opal.module; Opal.add_stubs('include,new,nil?,===,raise,each,add,merge,class,respond_to?,subtract,dup,join,to_a,equal?,instance_of?,==,instance_variable_get,size,is_a?,all?,include?,[]=,-,enum_for,[],<<,replace,delete,select,reject,delete_if,to_proc,keep_if,each_key,empty?,eql?,instance_eval,clear,<,<=,any?,!,intersect?,keys'); @@ -1537,7 +1537,7 @@ Opal.modules["set"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', $nesting); }; -Opal.modules["ast/node"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["ast/node"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $alias = Opal.alias, $hash2 = Opal.hash2, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $eqeq = Opal.eqeq, $rb_plus = Opal.rb_plus, $rb_times = Opal.rb_times, $to_a = Opal.to_a; Opal.add_stubs('attr_reader,to_sym,freeze,to_a,assign_properties,hash,class,eql?,type,children,each,instance_variable_set,protected,private,nil?,==,original_dup,send,equal?,respond_to?,to_ast,updated,+,*,fancy_type,is_a?,to_sexp,inspect,map,to_sexp_array,gsub,to_s'); @@ -1742,7 +1742,7 @@ Opal.modules["ast/node"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["ast/processor/mixin"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["ast/processor/mixin"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $send = Opal.send; Opal.add_stubs('nil?,to_ast,type,respond_to?,send,handler_missing,map,to_a,process'); @@ -1801,7 +1801,7 @@ Opal.modules["ast/processor/mixin"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting) }; -Opal.modules["ast/processor"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["ast/processor"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass; Opal.add_stubs('require,include'); @@ -1822,7 +1822,7 @@ Opal.modules["ast/processor"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["ast/sexp"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["ast/sexp"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $def = Opal.def; Opal.add_stubs('new'); @@ -1850,7 +1850,7 @@ Opal.modules["ast/sexp"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["ast"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["ast"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module; Opal.add_stubs('require'); @@ -1865,7 +1865,7 @@ Opal.modules["ast"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0]) }; -Opal.modules["parser/ast/node"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/ast/node"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $alias = Opal.alias, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def; Opal.add_stubs('attr_reader,[],frozen?,dup,node=,-'); @@ -1908,7 +1908,7 @@ Opal.modules["parser/ast/node"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["opal/ast/node"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/ast/node"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('require,attr_reader,[],frozen?,dup,merge!,loc,line,column'); @@ -1974,7 +1974,7 @@ Opal.modules["opal/ast/node"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["racc/parser"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["racc/parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $a, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $const_set = Opal.const_set, $defs = Opal.defs, $gvars = Opal.gvars, $rb_lt = Opal.rb_lt, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $to_ary = Opal.to_ary, $neqeq = Opal.neqeq, $rb_plus = Opal.rb_plus, $eqeq = Opal.eqeq, $rb_ge = Opal.rb_ge, $rb_gt = Opal.rb_gt, $eqeqeq = Opal.eqeqeq, $rb_le = Opal.rb_le, $rb_times = Opal.rb_times; Opal.add_stubs('[],class,<,size,[]=,-,__send__,_racc_setup,raise,_racc_init_sysvars,catch,!=,next_token,racc_read_token,+,==,>=,_racc_evalact,!,>,push,racc_shift,-@,_racc_do_reduce,===,racc_accept,throw,on_error,<=,pop,racc_e_pop,inspect,racc_next_state,*,racc_reduce,sprintf,token_to_str,print,racc_token2str,puts,racc_print_stacks,empty?,each,racc_print_states,each_index'); @@ -2458,7 +2458,7 @@ Opal.modules["racc/parser"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["parser/version"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/version"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set; return (function($base, $parent_nesting) { @@ -2466,11 +2466,11 @@ Opal.modules["parser/version"] = function(Opal) {/* Generated by Opal 1.4.0 */ var $nesting = [self].concat($parent_nesting); - return $const_set($nesting[0], 'VERSION', "3.0.3.2") + return $const_set($nesting[0], 'VERSION', "3.1.0.0") })($nesting[0], $nesting) }; -Opal.modules["racc/parser"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["racc/parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $a, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $const_set = Opal.const_set, $defs = Opal.defs, $gvars = Opal.gvars, $rb_lt = Opal.rb_lt, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $to_ary = Opal.to_ary, $neqeq = Opal.neqeq, $rb_plus = Opal.rb_plus, $eqeq = Opal.eqeq, $rb_ge = Opal.rb_ge, $rb_gt = Opal.rb_gt, $eqeqeq = Opal.eqeqeq, $rb_le = Opal.rb_le, $rb_times = Opal.rb_times; Opal.add_stubs('[],class,<,size,[]=,-,__send__,_racc_setup,raise,_racc_init_sysvars,catch,!=,next_token,racc_read_token,+,==,>=,_racc_evalact,!,>,push,racc_shift,-@,_racc_do_reduce,===,racc_accept,throw,on_error,<=,pop,racc_e_pop,inspect,racc_next_state,*,racc_reduce,sprintf,token_to_str,print,racc_token2str,puts,racc_print_stacks,empty?,each,racc_print_states,each_index'); @@ -2954,7 +2954,7 @@ Opal.modules["racc/parser"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["parser/messages"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/messages"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set, $hash2 = Opal.hash2, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $defs = Opal.defs; Opal.add_stubs('freeze,[],empty?,===,format'); @@ -2984,7 +2984,7 @@ Opal.modules["parser/messages"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["parser/deprecation"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/deprecation"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $truthy = Opal.truthy, $def = Opal.def; Opal.add_stubs('attr_writer,warn'); @@ -3009,7 +3009,7 @@ Opal.modules["parser/deprecation"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting) }; -Opal.modules["parser/ast/processor"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/ast/processor"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $alias = Opal.alias, $to_a = Opal.to_a, $not = Opal.not, $truthy = Opal.truthy, $slice = Opal.slice; Opal.add_stubs('updated,process_all,on_var,!,nil?,process,on_vasgn,on_argument,is_a?,[],children,process_regular_node,warn'); @@ -3285,7 +3285,7 @@ Opal.modules["parser/ast/processor"] = function(Opal) {/* Generated by Opal 1.4. })($nesting[0], $nesting) }; -Opal.modules["parser/meta"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/meta"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set; Opal.add_stubs('freeze,to_set'); @@ -3304,7 +3304,7 @@ Opal.modules["parser/meta"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["parser/source/buffer"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/buffer"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $regexp = Opal.regexp, $enc = Opal.enc, $truthy = Opal.truthy, $gvars = Opal.gvars, $eqeq = Opal.eqeq, $neqeq = Opal.neqeq, $defs = Opal.defs, $hash2 = Opal.hash2, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $not = Opal.not, $rb_plus = Opal.rb_plus, $rb_ge = Opal.rb_ge, $rb_lt = Opal.rb_lt, $send2 = Opal.send2, $find_super = Opal.find_super; Opal.add_stubs('attr_reader,empty?,=~,start_with?,freeze,==,[],!=,nil?,match,find,encoding,recognize_encoding,force_encoding,encode,to_s,source=,-,open,read,raise,frozen?,dup,reencode_string,class,valid_encoding?,name,raw_source=,gsub,!,ascii_only?,line_index_for_position,line_begins,+,to_a,lines,end_with?,<<,each,chomp!,fetch,source_lines,>=,size,<,new,source,source_range,private,index,bsearch,[]=,method_defined?,bsearch_index'); @@ -3621,7 +3621,7 @@ Opal.modules["parser/source/buffer"] = function(Opal) {/* Generated by Opal 1.4. })($nesting[0], $nesting) }; -Opal.modules["parser/source/range"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/range"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $rb_lt = Opal.rb_lt, $def = Opal.def, $hash2 = Opal.hash2, $rb_minus = Opal.rb_minus, $alias = Opal.alias, $neqeq = Opal.neqeq, $to_ary = Opal.to_ary, $rb_plus = Opal.rb_plus, $rb_ge = Opal.rb_ge, $rb_times = Opal.rb_times, $eqeq = Opal.eqeq; Opal.add_stubs('include,attr_reader,<,raise,nil?,freeze,with,-,line_for_position,alias_method,column_for_position,!=,line,last_line,inspect,column,last_column,source_line,slice,begin_pos,end_pos,include?,source,to_a,decompose_position,join,name,+,new,min,max,disjoint?,empty?,>=,!,<=>,contains?,overlaps?,==,*,source_buffer,is_a?,nonzero?,hash'); @@ -3895,7 +3895,7 @@ Opal.modules["parser/source/range"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting) }; -Opal.modules["parser/source/comment"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/comment"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $defs = Opal.defs, $def = Opal.def, $truthy = Opal.truthy; Opal.add_stubs('attr_reader,alias_method,new,associate,associate_locations,associate_by_identity,freeze,source,start_with?,text,==,type,is_a?,location,to_s,expression,inspect'); @@ -3993,7 +3993,7 @@ Opal.modules["parser/source/comment"] = function(Opal) {/* Generated by Opal 1.4 })($nesting[0], $nesting) }; -Opal.modules["parser/source/comment/associator"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/comment/associator"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $const_set = Opal.const_set, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq, $rb_le = Opal.rb_le, $rb_plus = Opal.rb_plus, $not = Opal.not; Opal.add_stubs('attr_accessor,do_associate,private,freeze,[],include?,type,sort_by,compact,children,begin_pos,expression,loc,select,is_a?,new,[]=,-,==,compare_by_identity,advance_comment,advance_through_directives,visit,process_leading_comments,location,<=,line,last_line,each,children_in_source_order,process_trailing_comments,current_comment_before?,associate_and_advance_comment,current_comment_before_end?,current_comment_decorates?,+,!,end_pos,<<,start_with?,text,=~'); @@ -4220,7 +4220,7 @@ Opal.modules["parser/source/comment/associator"] = function(Opal) {/* Generated })($nesting[0], $nesting) }; -Opal.modules["parser/source/rewriter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $gvars = Opal.gvars, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $rb_plus = Opal.rb_plus, $truthy = Opal.truthy, $not = Opal.not, $neqeq = Opal.neqeq, $rb_le = Opal.rb_le, $rb_ge = Opal.rb_ge, $rb_lt = Opal.rb_lt, $hash2 = Opal.hash2, $const_set = Opal.const_set; Opal.add_stubs('attr_reader,warn_of_deprecation,class,new,lambda,puts,render,consumer=,-,append,freeze,begin,end,+,in_transaction?,raise,dup,source,each,sort,begin_pos,range,length,replacement,[]=,private,empty?,clobbered_insertion?,!,allow_multiple_insertions?,raise_clobber_error,record_insertion,adjacent_updates?,find,overlaps?,replace_compatible_with_insertion?,merge_actions!,<<,active_queue,adjacent_insertions?,merge_actions,delete,can_merge?,record_replace,|,active_insertions,active_insertions=,active_clobber,clobbered_position_mask,active_clobber=,size,!=,&,<=,end_pos,adjacent_insertion_mask,select,adjacent?,adjacent_position_mask,>=,==,[],all?,intersect,nil?,max,sort_by,push,join,first,max_by,merge_replacements,replace_actions,disjoint?,<,process,extend'); @@ -4708,7 +4708,7 @@ Opal.modules["parser/source/rewriter"] = function(Opal) {/* Generated by Opal 1. })($nesting[0], $nesting) }; -Opal.modules["parser/source/rewriter/action"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/rewriter/action"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $eqeq = Opal.eqeq; Opal.add_stubs('include,attr_reader,alias_method,freeze,<=>,begin_pos,range,zero?,order,empty?,==,length,inspect'); @@ -4778,7 +4778,7 @@ Opal.modules["parser/source/rewriter/action"] = function(Opal) {/* Generated by })($nesting[0], $nesting) }; -Opal.modules["parser/source/tree_rewriter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/tree_rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $lambda = Opal.lambda, $gvars = Opal.gvars, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $const_set = Opal.const_set, $eqeqeq = Opal.eqeqeq, $range = Opal.range, $to_ary = Opal.to_ary, $hash = Opal.hash, $rb_gt = Opal.rb_gt, $rb_lt = Opal.rb_lt, $slice = Opal.slice; Opal.add_stubs('attr_reader,new,puts,render,consumer=,-,freeze,check_policy_validity,method,adjust,source_range,empty?,==,source_buffer,raise,combine,action_root,merge!,dup,contract,+,begin_pos,range,end_pos,check_range_validity,moved,to_s,replace,wrap,source,each,ordered_replacements,<<,[],length,join,nested_actions,class,name,action_summary,warn_of_deprecation,insert_before,insert_after,extend,protected,private,as_replacements,===,size,first,map,to_range,inspect,values,>,<,trigger_policy,process'); @@ -5117,7 +5117,7 @@ Opal.modules["parser/source/tree_rewriter"] = function(Opal) {/* Generated by Op })($nesting[0], $nesting) }; -Opal.modules["parser/source/tree_rewriter/action"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/tree_rewriter/action"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $not = Opal.not, $rb_plus = Opal.rb_plus, $eqeq = Opal.eqeq, $to_a = Opal.to_a, $rb_gt = Opal.rb_gt, $rb_minus = Opal.rb_minus, $rb_ge = Opal.rb_ge, $eqeqeq = Opal.eqeqeq, $rb_le = Opal.rb_le, $rb_lt = Opal.rb_lt, $neqeq = Opal.neqeq; Opal.add_stubs('attr_reader,freeze,empty?,do_combine,==,<<,begin,concat,flat_map,to_proc,end,!,insert_before,insert_after,replacement,raise,insertion?,with,begin_pos,range,first,children,end_pos,last,new,+,map,moved,protected,swallow,class,merge,place_in_hierarchy,analyse_hierarchy,[],fuse_deletions,combine_children,inject,size,bsearch,bsearch_child_index,>,-,>=,===,<=>,<=,check_fusible,<,shift,pop,compact!,each,call,call_enforcer_for_merge,!=,select'); @@ -5477,7 +5477,7 @@ Opal.modules["parser/source/tree_rewriter/action"] = function(Opal) {/* Generate })($nesting[0], $nesting) }; -Opal.modules["parser/source/map"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2, $eqeq = Opal.eqeq, $range = Opal.range, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus; Opal.add_stubs('attr_reader,freeze,line,alias_method,column,last_line,last_column,with,update_expression,==,class,reduce,map,instance_variables,instance_variable_get,send,inject,to_sym,[],[]=,-,protected,tap,dup,to_proc'); @@ -5614,7 +5614,7 @@ Opal.modules["parser/source/map"] = function(Opal) {/* Generated by Opal 1.4.0 * })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/operator"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/operator"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader'); @@ -5647,7 +5647,7 @@ Opal.modules["parser/source/map/operator"] = function(Opal) {/* Generated by Opa })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/collection"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/collection"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader'); @@ -5681,7 +5681,7 @@ Opal.modules["parser/source/map/collection"] = function(Opal) {/* Generated by O })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/constant"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/constant"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $send = Opal.send; Opal.add_stubs('attr_reader,with,update_operator,protected'); @@ -5733,7 +5733,7 @@ Opal.modules["parser/source/map/constant"] = function(Opal) {/* Generated by Opa })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/variable"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/variable"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $send = Opal.send; Opal.add_stubs('attr_reader,with,update_operator,protected'); @@ -5786,7 +5786,7 @@ Opal.modules["parser/source/map/variable"] = function(Opal) {/* Generated by Opa })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/keyword"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/keyword"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader'); @@ -5822,7 +5822,7 @@ Opal.modules["parser/source/map/keyword"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/definition"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/definition"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader,join'); @@ -5863,7 +5863,7 @@ Opal.modules["parser/source/map/definition"] = function(Opal) {/* Generated by O })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/method_definition"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/method_definition"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $truthy = Opal.truthy, $def = Opal.def; Opal.add_stubs('attr_reader,join'); @@ -5906,7 +5906,7 @@ Opal.modules["parser/source/map/method_definition"] = function(Opal) {/* Generat })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/send"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/send"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $send = Opal.send; Opal.add_stubs('attr_reader,with,update_operator,protected'); @@ -5962,7 +5962,7 @@ Opal.modules["parser/source/map/send"] = function(Opal) {/* Generated by Opal 1. })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/index"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/index"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $send = Opal.send; Opal.add_stubs('attr_reader,with,update_operator,protected'); @@ -6015,7 +6015,7 @@ Opal.modules["parser/source/map/index"] = function(Opal) {/* Generated by Opal 1 })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/condition"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/condition"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader'); @@ -6052,7 +6052,7 @@ Opal.modules["parser/source/map/condition"] = function(Opal) {/* Generated by Op })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/ternary"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/ternary"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader'); @@ -6086,7 +6086,7 @@ Opal.modules["parser/source/map/ternary"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/for"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/for"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader'); @@ -6121,7 +6121,7 @@ Opal.modules["parser/source/map/for"] = function(Opal) {/* Generated by Opal 1.4 })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/rescue_body"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/rescue_body"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader'); @@ -6158,7 +6158,7 @@ Opal.modules["parser/source/map/rescue_body"] = function(Opal) {/* Generated by })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/heredoc"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/heredoc"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader'); @@ -6193,7 +6193,7 @@ Opal.modules["parser/source/map/heredoc"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting) }; -Opal.modules["parser/source/map/objc_kwarg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/source/map/objc_kwarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader'); @@ -6228,7 +6228,7 @@ Opal.modules["parser/source/map/objc_kwarg"] = function(Opal) {/* Generated by O })($nesting[0], $nesting) }; -Opal.modules["parser/syntax_error"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/syntax_error"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def; Opal.add_stubs('attr_reader,message'); @@ -6255,7 +6255,7 @@ Opal.modules["parser/syntax_error"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting) }; -Opal.modules["parser/clobbering_error"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/clobbering_error"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass; return (function($base, $parent_nesting) { @@ -6267,7 +6267,7 @@ Opal.modules["parser/clobbering_error"] = function(Opal) {/* Generated by Opal 1 })($nesting[0], $nesting) }; -Opal.modules["parser/diagnostic"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/diagnostic"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $truthy = Opal.truthy, $hash2 = Opal.hash2, $def = Opal.def, $eqeq = Opal.eqeq, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $to_ary = Opal.to_ary, $rb_gt = Opal.rb_gt, $rb_times = Opal.rb_times, $send = Opal.send, $to_a = Opal.to_a, $rb_ge = Opal.rb_ge, $not = Opal.not, $neqeq = Opal.neqeq; Opal.add_stubs('freeze,attr_reader,include?,raise,join,inspect,dup,compile,is?,==,line,last_line,+,message,render_line,first_line_only,last_line_only,-,source_buffer,decompose_position,end_pos,>,private,source_line,*,length,each,line_range,intersect,column_range,size,[]=,>=,!,map,name,!=,resize,=~,source,adjust'); @@ -6397,7 +6397,7 @@ Opal.modules["parser/diagnostic"] = function(Opal) {/* Generated by Opal 1.4.0 * })($nesting[0], $nesting) }; -Opal.modules["parser/diagnostic/engine"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/diagnostic/engine"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy; Opal.add_stubs('attr_accessor,ignore?,call,raise?,raise,protected,==,level'); @@ -6466,7 +6466,7 @@ Opal.modules["parser/diagnostic/engine"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting) }; -Opal.modules["parser/static_environment"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/static_environment"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def; Opal.add_stubs('reset,[],push,dup,pop,add,to_sym,include?,declare,declared?,empty?'); @@ -6571,16 +6571,16 @@ Opal.modules["parser/static_environment"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting) }; -Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $const_set = Opal.const_set, $hash = Opal.hash, $def = Opal.def, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $hash2 = Opal.hash2, $rb_plus = Opal.rb_plus, $to_ary = Opal.to_ary, $rb_le = Opal.rb_le, $eqeqeq = Opal.eqeqeq, $rb_gt = Opal.rb_gt, $neqeq = Opal.neqeq, $not = Opal.not, $rb_ge = Opal.rb_ge, $range = Opal.range, $rb_lt = Opal.rb_lt, $gvars = Opal.gvars; - Opal.add_stubs('attr_accessor,private,_lex_trans_keys=,-,_lex_key_spans=,_lex_index_offsets=,_lex_indicies=,_lex_trans_targs=,_lex_trans_actions=,_lex_to_state_actions=,_lex_from_state_actions=,_lex_eof_trans=,lex_start=,lex_error=,lex_en_interp_words=,lex_en_interp_string=,lex_en_plain_words=,lex_en_plain_string=,lex_en_interp_backslash_delimited=,lex_en_plain_backslash_delimited=,lex_en_interp_backslash_delimited_words=,lex_en_plain_backslash_delimited_words=,lex_en_regexp_modifiers=,lex_en_expr_variable=,lex_en_expr_fname=,lex_en_expr_endfn=,lex_en_expr_dot=,lex_en_expr_arg=,lex_en_expr_cmdarg=,lex_en_expr_endarg=,lex_en_expr_mid=,lex_en_expr_beg=,lex_en_expr_labelarg=,lex_en_expr_value=,lex_en_expr_end=,lex_en_leading_dot=,lex_en_line_comment=,lex_en_line_begin=,freeze,ord,union,chars,attr_reader,reset,lex_en_line_begin,class,new,source,==,encoding,unpack,[],lex_en_expr_dot,lex_en_expr_fname,lex_en_expr_value,lex_en_expr_beg,lex_en_expr_mid,lex_en_expr_arg,lex_en_expr_cmdarg,lex_en_expr_end,lex_en_expr_endarg,lex_en_expr_endfn,lex_en_expr_labelarg,lex_en_interp_string,lex_en_interp_words,lex_en_plain_string,fetch,invert,push,count,pop,any?,shift,send,+,size,<=,===,<<,>,!=,emit_comment,tok,literal,flush_string,extend_content,emit,heredoc?,saved_herebody_s=,start_interp_brace,[]=,diagnostic,range,str_s,gsub,version?,nest_and_try_closing,heredoc_e,pop_literal,infer_indent_level,!,eof_codepoint?,words?,extend_space,extend_string,active?,>=,slice,start_with?,chr,munge_escape?,match,regexp?,squiggly_heredoc?,supports_line_continuation_via_slash?,include?,scan,join,=~,to_i,stack_pop,emit_table,push_literal,arg_or_cmdarg,<,emit_do,declared?,nil?,last,in_def_open_args?,getbyte,inspect,end_with?,empty?,index,call,Float,to_f,length,lambda,Rational,Complex,each,encode_escape,%,end_interp_brace_and_try_closing,lexpop,saved_herebody_s,next_state_for_literal,rstrip,&,|,lex_error,protected,force_encoding,process,backslash_delimited?,interpolate?,lex_en_interp_backslash_delimited_words,lex_en_plain_backslash_delimited_words,lex_en_plain_words,lex_en_interp_backslash_delimited,lex_en_plain_backslash_delimited,dedent_level,type,lex_en_regexp_modifiers,upcase'); + Opal.add_stubs('attr_accessor,private,_lex_trans_keys=,-,_lex_key_spans=,_lex_index_offsets=,_lex_indicies=,_lex_trans_targs=,_lex_trans_actions=,_lex_to_state_actions=,_lex_from_state_actions=,_lex_eof_trans=,lex_start=,lex_error=,lex_en_interp_words=,lex_en_interp_string=,lex_en_plain_words=,lex_en_plain_string=,lex_en_interp_backslash_delimited=,lex_en_plain_backslash_delimited=,lex_en_interp_backslash_delimited_words=,lex_en_plain_backslash_delimited_words=,lex_en_regexp_modifiers=,lex_en_expr_variable=,lex_en_expr_fname=,lex_en_expr_endfn=,lex_en_expr_dot=,lex_en_expr_arg=,lex_en_expr_cmdarg=,lex_en_expr_endarg=,lex_en_expr_mid=,lex_en_expr_beg=,lex_en_expr_labelarg=,lex_en_expr_value=,lex_en_expr_end=,lex_en_leading_dot=,lex_en_line_comment=,lex_en_line_begin=,freeze,ord,union,chars,attr_reader,reset,lex_en_line_begin,class,new,source,==,encoding,unpack,[],lex_en_expr_dot,lex_en_expr_fname,lex_en_expr_value,lex_en_expr_beg,lex_en_expr_mid,lex_en_expr_arg,lex_en_expr_cmdarg,lex_en_expr_end,lex_en_expr_endarg,lex_en_expr_endfn,lex_en_expr_labelarg,lex_en_interp_string,lex_en_interp_words,lex_en_plain_string,fetch,invert,push,count,pop,any?,shift,send,+,size,<=,===,<<,>,!=,emit_comment,tok,literal,flush_string,extend_content,emit,heredoc?,saved_herebody_s=,start_interp_brace,[]=,diagnostic,range,str_s,gsub,version?,nest_and_try_closing,heredoc_e,pop_literal,infer_indent_level,!,eof_codepoint?,words?,extend_space,extend_string,active?,>=,slice,start_with?,chr,munge_escape?,match,regexp?,squiggly_heredoc?,supports_line_continuation_via_slash?,include?,scan,join,=~,to_i,stack_pop,emit_table,push_literal,in_argdef,arg_or_cmdarg,<,emit_do,declared?,nil?,last,getbyte,inspect,end_with?,empty?,index,call,Float,to_f,length,lambda,Rational,Complex,each,encode_escape,%,in_kwarg,end_interp_brace_and_try_closing,lexpop,saved_herebody_s,next_state_for_literal,rstrip,&,|,lex_error,protected,force_encoding,process,backslash_delimited?,interpolate?,lex_en_interp_backslash_delimited_words,lex_en_plain_backslash_delimited_words,lex_en_plain_words,lex_en_interp_backslash_delimited,lex_en_plain_backslash_delimited,dedent_level,type,lex_en_regexp_modifiers,upcase'); return (function($base, $super, $parent_nesting) { var self = $klass($base, $super, 'Lexer'); var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), $writer = nil, $proto = self.$$prototype; - $proto.source_buffer = $proto.source_pts = $proto.cs = $proto.cmdarg_stack = $proto.cmdarg = $proto.cond_stack = $proto.cond = $proto.dedent_level = $proto.token_queue = $proto.p = $proto.command_start = $proto.herebody_s = $proto.sharp_s = $proto.ts = $proto.te = $proto.top = $proto.stack = $proto.version = $proto.escape_s = $proto.escape = $proto.act = $proto.static_env = $proto.newline_s = $proto.lambda_stack = $proto.paren_nest = $proto.context = $proto.num_digits_s = $proto.num_suffix_s = $proto.num_base = $proto.num_xfrm = $proto.eq_begin_s = $proto.cs_before_block_comment = $proto.in_kwarg = $proto.tokens = $proto.comments = $proto.diagnostics = $proto.literal_stack = nil; + $proto.source_buffer = $proto.source_pts = $proto.cs = $proto.cmdarg_stack = $proto.cmdarg = $proto.cond_stack = $proto.cond = $proto.dedent_level = $proto.token_queue = $proto.p = $proto.command_start = $proto.herebody_s = $proto.sharp_s = $proto.ts = $proto.te = $proto.top = $proto.stack = $proto.version = $proto.escape_s = $proto.escape = $proto.act = $proto.context = $proto.static_env = $proto.newline_s = $proto.lambda_stack = $proto.paren_nest = $proto.num_digits_s = $proto.num_suffix_s = $proto.num_base = $proto.num_xfrm = $proto.eq_begin_s = $proto.cs_before_block_comment = $proto.tokens = $proto.comments = $proto.diagnostics = $proto.literal_stack = nil; (function(self, $parent_nesting) { @@ -6589,7 +6589,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$private("_lex_trans_keys", "_lex_trans_keys="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[0, 0, 101, 101, 103, 103, 105, 105, 110, 110, 69, 69, 78, 78, 68, 68, 95, 95, 95, 95, 0, 26, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 120, 0, 120, 0, 92, 0, 120, 0, 120, 0, 45, 0, 120, 0, 120, 67, 99, 45, 45, 0, 92, 0, 120, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 120, 0, 120, 0, 92, 0, 120, 0, 120, 0, 45, 0, 120, 0, 120, 67, 99, 45, 45, 0, 92, 0, 120, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 58, 58, 58, 46, 46, 10, 10, 0, 127, 58, 58, 60, 60, 62, 62, 10, 10, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 115, 115, 99, 99, 117, 117, 101, 101, 108, 116, 101, 101, 115, 115, 115, 115, 105, 105, 108, 108, 105, 105, 108, 108, 58, 58, 0, 127, 10, 10, 0, 127, 9, 92, 10, 10, 9, 92, 58, 58, 98, 98, 101, 101, 103, 103, 105, 105, 110, 110, 0, 127, 61, 61, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 10, 10, 0, 127, 0, 127, 61, 126, 93, 93, 0, 127, 0, 127, 10, 10, 34, 34, 10, 10, 39, 39, 0, 127, 10, 96, 96, 96, 0, 45, 0, 120, 0, 120, 0, 92, 0, 120, 0, 120, 0, 45, 0, 120, 0, 120, 67, 99, 45, 45, 0, 92, 0, 120, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 58, 58, 58, 0, 127, 43, 57, 48, 57, 48, 57, 48, 57, 48, 57, 115, 115, 99, 99, 117, 117, 101, 101, 99, 99, 117, 117, 101, 101, 0, 127, 58, 58, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 60, 60, 10, 10, 9, 92, 9, 92, 10, 10, 10, 10, 10, 10, 10, 10, 46, 46, 0, 95, 9, 32, 0, 0, 10, 10, 10, 10, 98, 98, 9, 32, 10, 10, 95, 95, 0, 92, 9, 32, 36, 123, 0, 127, 48, 57, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 48, 102, 48, 102, 0, 0, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 92, 36, 123, 0, 127, 48, 57, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 48, 102, 48, 102, 0, 0, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 92, 9, 32, 0, 26, 0, 92, 0, 26, 0, 35, 36, 123, 0, 127, 48, 57, 0, 127, 0, 26, 0, 35, 9, 32, 36, 123, 0, 127, 48, 57, 0, 127, 0, 32, 9, 32, 65, 122, 65, 122, 36, 64, 0, 127, 48, 57, 0, 127, 0, 127, 0, 127, 0, 127, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 115, 115, 38, 38, 42, 42, 64, 64, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 93, 93, 10, 10, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 124, 124, 0, 127, 0, 127, 9, 32, 10, 10, 10, 10, 46, 46, 10, 10, 0, 0, 0, 127, 0, 127, 61, 61, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 93, 93, 10, 10, 124, 124, 0, 126, 0, 127, 0, 61, 9, 61, 9, 61, 0, 0, 9, 61, 9, 62, 46, 46, 46, 46, 58, 58, 9, 32, 0, 0, 0, 127, 0, 0, 9, 124, 0, 0, 10, 10, 10, 10, 0, 0, 9, 61, 58, 58, 60, 60, 62, 62, 9, 32, 10, 10, 0, 127, 102, 102, 101, 101, 110, 110, 104, 104, 0, 127, 0, 127, 0, 127, 0, 0, 0, 127, 10, 10, 0, 123, 9, 32, 10, 10, 10, 10, 10, 10, 0, 0, 111, 111, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 61, 0, 0, 61, 126, 61, 61, 0, 0, 0, 0, 0, 0, 9, 32, 61, 61, 9, 32, 61, 126, 10, 10, 10, 10, 0, 127, 38, 61, 0, 0, 42, 61, 61, 61, 9, 92, 9, 92, 9, 92, 46, 46, 46, 46, 10, 10, 0, 26, 0, 127, 0, 127, 61, 61, 0, 0, 61, 126, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 61, 126, 0, 127, 48, 57, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 61, 61, 62, 0, 127, 48, 57, 0, 127, 124, 124, 64, 64, 60, 61, 0, 0, 10, 34, 10, 39, 96, 96, 62, 62, 61, 126, 61, 62, 0, 122, 0, 0, 0, 127, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 48, 102, 48, 102, 0, 0, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 61, 126, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 92, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 61, 61, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 61, 61, 38, 61, 0, 0, 0, 0, 42, 61, 61, 62, 46, 57, 46, 46, 10, 10, 48, 101, 48, 95, 46, 120, 48, 114, 43, 57, 48, 105, 102, 102, 0, 0, 101, 105, 0, 0, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 105, 114, 102, 102, 0, 0, 101, 105, 115, 115, 0, 0, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 46, 114, 48, 114, 46, 114, 48, 114, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 9, 92, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 0, 9, 92, 9, 92, 9, 92, 46, 46, 46, 46, 10, 10, 46, 46, 10, 10, 10, 61, 10, 10, 10, 101, 10, 110, 10, 100, 10, 10, 0]]; + $writer = [[0, 0, 101, 101, 103, 103, 105, 105, 110, 110, 69, 69, 78, 78, 68, 68, 95, 95, 95, 95, 0, 26, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 120, 0, 120, 0, 92, 0, 120, 0, 120, 0, 45, 0, 120, 0, 120, 67, 99, 45, 45, 0, 92, 0, 120, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 120, 0, 120, 0, 92, 0, 120, 0, 120, 0, 45, 0, 120, 0, 120, 67, 99, 45, 45, 0, 92, 0, 120, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 58, 58, 58, 46, 46, 0, 127, 58, 58, 60, 60, 62, 62, 10, 10, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 115, 115, 99, 99, 117, 117, 101, 101, 108, 116, 101, 101, 115, 115, 115, 115, 105, 105, 108, 108, 105, 105, 108, 108, 58, 58, 0, 127, 10, 10, 0, 127, 9, 92, 10, 10, 9, 92, 58, 58, 98, 98, 101, 101, 103, 103, 105, 105, 110, 110, 0, 127, 61, 61, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 10, 10, 0, 127, 0, 127, 61, 126, 93, 93, 0, 127, 0, 127, 10, 10, 34, 34, 10, 10, 39, 39, 0, 127, 10, 96, 96, 96, 0, 45, 0, 120, 0, 120, 0, 92, 0, 120, 0, 120, 0, 45, 0, 120, 0, 120, 67, 99, 45, 45, 0, 92, 0, 120, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 58, 58, 58, 0, 127, 43, 57, 48, 57, 48, 57, 48, 57, 48, 57, 115, 115, 99, 99, 117, 117, 101, 101, 99, 99, 117, 117, 101, 101, 0, 127, 58, 58, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 60, 60, 10, 10, 9, 92, 9, 92, 10, 10, 10, 10, 10, 10, 10, 10, 46, 46, 0, 95, 9, 32, 0, 0, 10, 10, 10, 10, 98, 98, 9, 32, 10, 10, 95, 95, 0, 92, 9, 32, 36, 123, 0, 127, 48, 57, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 48, 102, 48, 102, 0, 0, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 92, 36, 123, 0, 127, 48, 57, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 48, 102, 48, 102, 0, 0, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 92, 9, 32, 0, 26, 0, 92, 0, 26, 0, 35, 36, 123, 0, 127, 48, 57, 0, 127, 0, 26, 0, 35, 9, 32, 36, 123, 0, 127, 48, 57, 0, 127, 0, 32, 9, 32, 65, 122, 65, 122, 36, 64, 0, 127, 48, 57, 0, 127, 0, 127, 0, 127, 0, 127, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 115, 115, 38, 38, 42, 42, 64, 64, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 93, 93, 10, 10, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 124, 124, 0, 127, 0, 127, 9, 32, 10, 10, 10, 10, 46, 46, 10, 10, 0, 0, 0, 127, 0, 127, 61, 61, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 93, 93, 10, 10, 124, 124, 0, 126, 0, 127, 0, 61, 9, 61, 9, 61, 0, 0, 9, 61, 9, 62, 46, 46, 46, 46, 58, 58, 9, 32, 0, 0, 0, 127, 0, 0, 9, 124, 0, 0, 10, 10, 10, 10, 0, 0, 9, 61, 58, 58, 60, 60, 62, 62, 9, 32, 10, 10, 0, 127, 102, 102, 101, 101, 110, 110, 104, 104, 0, 127, 0, 127, 0, 127, 0, 0, 0, 127, 10, 10, 0, 123, 9, 32, 10, 10, 10, 10, 10, 10, 0, 0, 111, 111, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 61, 0, 0, 61, 126, 61, 61, 0, 0, 0, 0, 0, 0, 9, 32, 61, 61, 9, 32, 61, 126, 10, 10, 10, 10, 0, 127, 38, 61, 0, 0, 42, 61, 61, 61, 9, 92, 9, 92, 9, 92, 46, 46, 46, 46, 10, 10, 0, 26, 0, 127, 0, 127, 61, 61, 0, 0, 61, 126, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 61, 126, 0, 127, 48, 57, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 61, 61, 62, 0, 127, 48, 57, 0, 127, 124, 124, 64, 64, 60, 61, 0, 0, 10, 34, 10, 39, 96, 96, 62, 62, 61, 126, 61, 62, 0, 122, 0, 0, 0, 127, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 48, 102, 48, 102, 0, 0, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 48, 102, 48, 102, 0, 0, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 61, 126, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 92, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 61, 61, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 61, 61, 38, 61, 0, 0, 0, 0, 42, 61, 61, 62, 46, 57, 46, 46, 10, 10, 48, 101, 48, 95, 46, 120, 48, 114, 43, 57, 48, 105, 102, 102, 0, 0, 101, 105, 0, 0, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 105, 114, 102, 102, 0, 0, 101, 105, 115, 115, 0, 0, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 46, 114, 48, 114, 46, 114, 48, 114, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 9, 92, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 0, 9, 92, 9, 92, 9, 92, 46, 46, 46, 46, 10, 10, 46, 46, 10, 10, 10, 61, 10, 10, 10, 101, 10, 110, 10, 100, 10, 10, 0]]; $send(self, '_lex_trans_keys=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6599,7 +6599,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$private("_lex_key_spans", "_lex_key_spans="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 128, 128, 128, 128, 46, 121, 121, 93, 121, 121, 46, 121, 121, 33, 1, 93, 121, 103, 128, 128, 128, 128, 46, 121, 121, 93, 121, 121, 46, 121, 121, 33, 1, 93, 121, 103, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 1, 1, 1, 128, 1, 1, 1, 1, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 128, 1, 128, 84, 1, 84, 1, 1, 1, 1, 1, 1, 128, 1, 84, 84, 84, 84, 84, 1, 128, 128, 66, 1, 128, 128, 1, 1, 1, 1, 128, 87, 1, 46, 121, 121, 93, 121, 121, 46, 121, 121, 33, 1, 93, 121, 103, 128, 128, 128, 128, 128, 128, 1, 1, 128, 15, 10, 10, 10, 10, 1, 1, 1, 1, 1, 1, 1, 128, 1, 84, 84, 84, 84, 84, 84, 1, 1, 84, 84, 1, 1, 1, 1, 1, 96, 24, 0, 1, 1, 1, 24, 1, 1, 93, 24, 88, 128, 10, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 55, 55, 0, 55, 55, 0, 46, 93, 93, 0, 0, 93, 55, 55, 0, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 93, 88, 128, 10, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 55, 55, 0, 55, 55, 0, 46, 93, 93, 0, 0, 93, 55, 55, 0, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 93, 24, 27, 93, 27, 36, 88, 128, 10, 128, 27, 36, 24, 88, 128, 10, 128, 33, 24, 58, 58, 29, 128, 10, 128, 128, 128, 128, 24, 0, 66, 1, 1, 128, 128, 10, 1, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 128, 128, 128, 128, 128, 128, 1, 1, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 128, 128, 24, 1, 1, 1, 1, 0, 128, 128, 1, 0, 24, 0, 66, 1, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 1, 1, 1, 127, 128, 62, 53, 53, 0, 53, 54, 1, 1, 1, 24, 0, 128, 0, 116, 0, 1, 1, 0, 53, 1, 1, 1, 24, 1, 128, 1, 1, 1, 1, 128, 128, 128, 0, 128, 1, 124, 24, 1, 1, 1, 0, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 4, 0, 66, 1, 0, 0, 0, 24, 1, 24, 66, 1, 1, 128, 24, 0, 20, 1, 84, 84, 84, 1, 1, 1, 27, 128, 128, 1, 0, 66, 2, 0, 0, 0, 0, 66, 128, 10, 1, 1, 1, 2, 1, 1, 2, 128, 10, 128, 1, 1, 2, 0, 25, 30, 1, 1, 66, 2, 123, 0, 128, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 55, 55, 0, 55, 55, 0, 46, 93, 93, 0, 0, 93, 55, 55, 0, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 128, 128, 128, 0, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 66, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 93, 24, 0, 1, 1, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 1, 0, 24, 0, 66, 1, 1, 128, 128, 10, 1, 24, 0, 0, 20, 2, 12, 1, 1, 54, 48, 75, 67, 15, 58, 1, 0, 5, 0, 0, 67, 67, 67, 67, 10, 1, 0, 5, 1, 0, 0, 67, 67, 67, 67, 67, 67, 67, 67, 69, 67, 69, 67, 1, 2, 1, 66, 1, 2, 128, 128, 0, 128, 128, 128, 128, 128, 128, 0, 1, 0, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 84, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 0, 84, 84, 84, 1, 1, 1, 1, 1, 52, 1, 92, 101, 91, 1]]; + $writer = [[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 128, 128, 128, 128, 46, 121, 121, 93, 121, 121, 46, 121, 121, 33, 1, 93, 121, 103, 128, 128, 128, 128, 46, 121, 121, 93, 121, 121, 46, 121, 121, 33, 1, 93, 121, 103, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 1, 1, 128, 1, 1, 1, 1, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 128, 1, 128, 84, 1, 84, 1, 1, 1, 1, 1, 1, 128, 1, 84, 84, 84, 84, 84, 1, 128, 128, 66, 1, 128, 128, 1, 1, 1, 1, 128, 87, 1, 46, 121, 121, 93, 121, 121, 46, 121, 121, 33, 1, 93, 121, 103, 128, 128, 128, 128, 128, 128, 1, 1, 128, 15, 10, 10, 10, 10, 1, 1, 1, 1, 1, 1, 1, 128, 1, 84, 84, 84, 84, 84, 84, 1, 1, 84, 84, 1, 1, 1, 1, 1, 96, 24, 0, 1, 1, 1, 24, 1, 1, 93, 24, 88, 128, 10, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 55, 55, 0, 55, 55, 0, 46, 93, 93, 0, 0, 93, 55, 55, 0, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 93, 88, 128, 10, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 55, 55, 0, 55, 55, 0, 46, 93, 93, 0, 0, 93, 55, 55, 0, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 93, 24, 27, 93, 27, 36, 88, 128, 10, 128, 27, 36, 24, 88, 128, 10, 128, 33, 24, 58, 58, 29, 128, 10, 128, 128, 128, 128, 24, 0, 66, 1, 1, 128, 128, 10, 1, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 128, 128, 128, 128, 128, 128, 1, 1, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 128, 128, 24, 1, 1, 1, 1, 0, 128, 128, 1, 0, 24, 0, 66, 1, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 1, 1, 1, 127, 128, 62, 53, 53, 0, 53, 54, 1, 1, 1, 24, 0, 128, 0, 116, 0, 1, 1, 0, 53, 1, 1, 1, 24, 1, 128, 1, 1, 1, 1, 128, 128, 128, 0, 128, 1, 124, 24, 1, 1, 1, 0, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 4, 0, 66, 1, 0, 0, 0, 24, 1, 24, 66, 1, 1, 128, 24, 0, 20, 1, 84, 84, 84, 1, 1, 1, 27, 128, 128, 1, 0, 66, 2, 0, 0, 0, 0, 66, 128, 10, 1, 1, 1, 2, 1, 1, 2, 128, 10, 128, 1, 1, 2, 0, 25, 30, 1, 1, 66, 2, 123, 0, 128, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 55, 55, 0, 55, 55, 0, 46, 93, 93, 0, 0, 93, 55, 55, 0, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 128, 128, 128, 0, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 66, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 93, 24, 0, 1, 1, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 1, 0, 24, 0, 66, 1, 1, 128, 128, 10, 1, 24, 0, 0, 20, 2, 12, 1, 1, 54, 48, 75, 67, 15, 58, 1, 0, 5, 0, 0, 67, 67, 67, 67, 10, 1, 0, 5, 1, 0, 0, 67, 67, 67, 67, 67, 67, 67, 67, 69, 67, 69, 67, 1, 2, 1, 66, 1, 2, 128, 128, 0, 128, 128, 128, 128, 128, 128, 0, 1, 0, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 84, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 0, 84, 84, 84, 1, 1, 1, 1, 1, 52, 1, 92, 101, 91, 1]]; $send(self, '_lex_key_spans=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6609,7 +6609,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$private("_lex_index_offsets", "_lex_index_offsets="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 46, 175, 304, 433, 562, 609, 731, 853, 947, 1069, 1191, 1238, 1360, 1482, 1516, 1518, 1612, 1734, 1838, 1967, 2096, 2225, 2354, 2401, 2523, 2645, 2739, 2861, 2983, 3030, 3152, 3274, 3308, 3310, 3404, 3526, 3630, 3759, 3888, 4017, 4146, 4275, 4404, 4533, 4662, 4791, 4920, 5049, 5178, 5307, 5436, 5565, 5567, 5569, 5571, 5573, 5702, 5704, 5706, 5708, 5710, 5839, 5968, 6097, 6226, 6355, 6484, 6613, 6742, 6871, 7000, 7129, 7258, 7387, 7516, 7645, 7774, 7903, 8032, 8034, 8036, 8038, 8040, 8050, 8052, 8054, 8056, 8058, 8060, 8062, 8064, 8066, 8195, 8197, 8326, 8411, 8413, 8498, 8500, 8502, 8504, 8506, 8508, 8510, 8639, 8641, 8726, 8811, 8896, 8981, 9066, 9068, 9197, 9326, 9393, 9395, 9524, 9653, 9655, 9657, 9659, 9661, 9790, 9878, 9880, 9927, 10049, 10171, 10265, 10387, 10509, 10556, 10678, 10800, 10834, 10836, 10930, 11052, 11156, 11285, 11414, 11543, 11672, 11801, 11930, 11932, 11934, 12063, 12079, 12090, 12101, 12112, 12123, 12125, 12127, 12129, 12131, 12133, 12135, 12137, 12266, 12268, 12353, 12438, 12523, 12608, 12693, 12778, 12780, 12782, 12867, 12952, 12954, 12956, 12958, 12960, 12962, 13059, 13084, 13085, 13087, 13089, 13091, 13116, 13118, 13120, 13214, 13239, 13328, 13457, 13468, 13597, 13719, 13720, 13721, 13730, 13739, 13740, 13741, 13835, 13836, 13837, 13838, 13932, 13934, 13935, 13936, 13937, 14031, 14087, 14143, 14144, 14200, 14256, 14257, 14304, 14398, 14492, 14493, 14494, 14588, 14644, 14700, 14701, 14748, 14750, 14844, 14921, 14977, 15033, 15089, 15090, 15217, 15344, 15345, 15472, 15473, 15600, 15727, 15854, 15981, 15982, 16109, 16236, 16363, 16490, 16617, 16744, 16745, 16746, 16802, 16803, 16897, 16986, 17115, 17126, 17255, 17377, 17378, 17379, 17388, 17397, 17398, 17399, 17493, 17494, 17495, 17496, 17590, 17592, 17593, 17594, 17595, 17689, 17745, 17801, 17802, 17858, 17914, 17915, 17962, 18056, 18150, 18151, 18152, 18246, 18302, 18358, 18359, 18406, 18408, 18502, 18579, 18635, 18691, 18747, 18748, 18875, 19002, 19003, 19130, 19131, 19258, 19385, 19512, 19639, 19640, 19767, 19894, 20021, 20148, 20275, 20402, 20403, 20404, 20460, 20461, 20555, 20580, 20608, 20702, 20730, 20767, 20856, 20985, 20996, 21125, 21153, 21190, 21215, 21304, 21433, 21444, 21573, 21607, 21632, 21691, 21750, 21780, 21909, 21920, 22049, 22178, 22307, 22436, 22461, 22462, 22529, 22531, 22533, 22662, 22791, 22802, 22804, 22806, 22808, 22810, 22812, 22815, 22817, 22884, 22886, 22889, 23018, 23147, 23276, 23405, 23534, 23663, 23792, 23794, 23796, 23925, 24054, 24183, 24312, 24441, 24570, 24699, 24828, 24957, 25086, 25215, 25344, 25473, 25602, 25731, 25860, 25989, 26118, 26247, 26376, 26505, 26634, 26763, 26892, 27021, 27150, 27279, 27408, 27537, 27666, 27795, 27924, 28053, 28182, 28311, 28440, 28569, 28698, 28827, 28956, 29085, 29214, 29343, 29472, 29601, 29730, 29859, 29988, 30117, 30246, 30375, 30504, 30633, 30762, 30891, 31020, 31149, 31278, 31407, 31536, 31665, 31794, 31923, 32052, 32181, 32310, 32439, 32568, 32697, 32826, 32955, 33084, 33213, 33342, 33471, 33600, 33729, 33858, 33987, 34116, 34245, 34374, 34503, 34505, 34634, 34763, 34788, 34790, 34792, 34794, 34796, 34797, 34926, 35055, 35057, 35058, 35083, 35084, 35151, 35153, 35155, 35157, 35159, 35161, 35164, 35166, 35233, 35235, 35238, 35367, 35369, 35371, 35373, 35501, 35630, 35693, 35747, 35801, 35802, 35856, 35911, 35913, 35915, 35917, 35942, 35943, 36072, 36073, 36190, 36191, 36193, 36195, 36196, 36250, 36252, 36254, 36256, 36281, 36283, 36412, 36414, 36416, 36418, 36420, 36549, 36678, 36807, 36808, 36937, 36939, 37064, 37089, 37091, 37093, 37095, 37096, 37098, 37099, 37228, 37357, 37382, 37383, 37385, 37387, 37389, 37390, 37519, 37648, 37777, 37906, 38035, 38164, 38293, 38422, 38551, 38680, 38809, 38938, 39067, 39196, 39325, 39454, 39583, 39712, 39717, 39718, 39785, 39787, 39788, 39789, 39790, 39815, 39817, 39842, 39909, 39911, 39913, 40042, 40067, 40068, 40089, 40091, 40176, 40261, 40346, 40348, 40350, 40352, 40380, 40509, 40638, 40640, 40641, 40708, 40711, 40712, 40713, 40714, 40715, 40782, 40911, 40922, 40924, 40926, 40928, 40931, 40933, 40935, 40938, 41067, 41078, 41207, 41209, 41211, 41214, 41215, 41241, 41272, 41274, 41276, 41343, 41346, 41470, 41471, 41600, 41729, 41851, 41852, 41853, 41862, 41871, 41872, 41873, 41967, 41968, 41969, 41970, 42064, 42066, 42067, 42068, 42069, 42163, 42219, 42275, 42276, 42332, 42388, 42389, 42436, 42530, 42624, 42625, 42626, 42720, 42776, 42832, 42833, 42880, 42882, 42976, 43053, 43109, 43165, 43221, 43222, 43349, 43476, 43477, 43604, 43605, 43732, 43859, 43986, 44113, 44114, 44241, 44368, 44495, 44622, 44749, 44876, 45003, 45130, 45257, 45384, 45511, 45638, 45765, 45892, 46019, 46146, 46273, 46400, 46527, 46528, 46529, 46585, 46586, 46715, 46844, 46973, 46974, 46976, 46977, 47106, 47235, 47364, 47493, 47622, 47751, 47880, 48009, 48138, 48267, 48396, 48525, 48654, 48783, 48912, 49041, 49170, 49299, 49428, 49557, 49686, 49815, 49944, 50073, 50202, 50331, 50460, 50589, 50718, 50847, 50976, 51105, 51234, 51363, 51492, 51621, 51750, 51879, 52008, 52137, 52266, 52395, 52524, 52653, 52782, 52911, 53040, 53169, 53298, 53427, 53556, 53685, 53814, 53943, 54072, 54201, 54330, 54459, 54588, 54717, 54846, 54913, 55042, 55171, 55300, 55429, 55558, 55687, 55816, 55945, 56074, 56203, 56332, 56461, 56590, 56719, 56848, 56977, 57106, 57235, 57364, 57493, 57622, 57751, 57880, 58009, 58138, 58139, 58204, 58298, 58323, 58324, 58326, 58328, 58330, 58331, 58460, 58589, 58614, 58615, 58617, 58619, 58621, 58622, 58751, 58880, 58882, 58883, 58908, 58909, 58976, 58978, 58980, 59109, 59238, 59249, 59251, 59276, 59277, 59278, 59299, 59302, 59315, 59317, 59319, 59374, 59423, 59499, 59567, 59583, 59642, 59644, 59645, 59651, 59652, 59653, 59721, 59789, 59857, 59925, 59936, 59938, 59939, 59945, 59947, 59948, 59949, 60017, 60085, 60153, 60221, 60289, 60357, 60425, 60493, 60563, 60631, 60701, 60769, 60771, 60774, 60776, 60843, 60845, 60848, 60977, 61106, 61107, 61236, 61365, 61494, 61623, 61752, 61881, 61882, 61884, 61885, 61886, 62015, 62144, 62273, 62402, 62531, 62660, 62789, 62918, 63047, 63176, 63305, 63434, 63563, 63692, 63821, 63950, 64079, 64208, 64337, 64466, 64595, 64724, 64853, 64982, 65111, 65240, 65369, 65498, 65627, 65756, 65885, 66014, 66143, 66272, 66401, 66530, 66659, 66744, 66873, 67002, 67131, 67260, 67389, 67518, 67647, 67776, 67905, 68034, 68163, 68292, 68421, 68550, 68679, 68808, 68937, 69066, 69195, 69324, 69453, 69582, 69711, 69840, 69969, 70098, 70227, 70356, 70485, 70614, 70743, 70872, 71001, 71130, 71259, 71388, 71517, 71646, 71775, 71904, 72033, 72162, 72291, 72420, 72549, 72678, 72807, 72936, 73065, 73194, 73323, 73452, 73581, 73710, 73839, 73968, 74097, 74226, 74355, 74484, 74613, 74742, 74871, 75000, 75129, 75130, 75195, 75196, 75281, 75366, 75451, 75453, 75455, 75457, 75459, 75461, 75514, 75516, 75609, 75711, 75803]]; + $writer = [[0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 46, 175, 304, 433, 562, 609, 731, 853, 947, 1069, 1191, 1238, 1360, 1482, 1516, 1518, 1612, 1734, 1838, 1967, 2096, 2225, 2354, 2401, 2523, 2645, 2739, 2861, 2983, 3030, 3152, 3274, 3308, 3310, 3404, 3526, 3630, 3759, 3888, 4017, 4146, 4275, 4404, 4533, 4662, 4791, 4920, 5049, 5178, 5307, 5436, 5565, 5567, 5569, 5571, 5700, 5702, 5704, 5706, 5708, 5837, 5966, 6095, 6224, 6353, 6482, 6611, 6740, 6869, 6998, 7127, 7256, 7385, 7514, 7643, 7772, 7901, 8030, 8032, 8034, 8036, 8038, 8048, 8050, 8052, 8054, 8056, 8058, 8060, 8062, 8064, 8193, 8195, 8324, 8409, 8411, 8496, 8498, 8500, 8502, 8504, 8506, 8508, 8637, 8639, 8724, 8809, 8894, 8979, 9064, 9066, 9195, 9324, 9391, 9393, 9522, 9651, 9653, 9655, 9657, 9659, 9788, 9876, 9878, 9925, 10047, 10169, 10263, 10385, 10507, 10554, 10676, 10798, 10832, 10834, 10928, 11050, 11154, 11283, 11412, 11541, 11670, 11799, 11928, 11930, 11932, 12061, 12077, 12088, 12099, 12110, 12121, 12123, 12125, 12127, 12129, 12131, 12133, 12135, 12264, 12266, 12351, 12436, 12521, 12606, 12691, 12776, 12778, 12780, 12865, 12950, 12952, 12954, 12956, 12958, 12960, 13057, 13082, 13083, 13085, 13087, 13089, 13114, 13116, 13118, 13212, 13237, 13326, 13455, 13466, 13595, 13717, 13718, 13719, 13728, 13737, 13738, 13739, 13833, 13834, 13835, 13836, 13930, 13932, 13933, 13934, 13935, 14029, 14085, 14141, 14142, 14198, 14254, 14255, 14302, 14396, 14490, 14491, 14492, 14586, 14642, 14698, 14699, 14746, 14748, 14842, 14919, 14975, 15031, 15087, 15088, 15215, 15342, 15343, 15470, 15471, 15598, 15725, 15852, 15979, 15980, 16107, 16234, 16361, 16488, 16615, 16742, 16743, 16744, 16800, 16801, 16895, 16984, 17113, 17124, 17253, 17375, 17376, 17377, 17386, 17395, 17396, 17397, 17491, 17492, 17493, 17494, 17588, 17590, 17591, 17592, 17593, 17687, 17743, 17799, 17800, 17856, 17912, 17913, 17960, 18054, 18148, 18149, 18150, 18244, 18300, 18356, 18357, 18404, 18406, 18500, 18577, 18633, 18689, 18745, 18746, 18873, 19000, 19001, 19128, 19129, 19256, 19383, 19510, 19637, 19638, 19765, 19892, 20019, 20146, 20273, 20400, 20401, 20402, 20458, 20459, 20553, 20578, 20606, 20700, 20728, 20765, 20854, 20983, 20994, 21123, 21151, 21188, 21213, 21302, 21431, 21442, 21571, 21605, 21630, 21689, 21748, 21778, 21907, 21918, 22047, 22176, 22305, 22434, 22459, 22460, 22527, 22529, 22531, 22660, 22789, 22800, 22802, 22804, 22806, 22808, 22810, 22813, 22815, 22882, 22884, 22887, 23016, 23145, 23274, 23403, 23532, 23661, 23790, 23792, 23794, 23923, 24052, 24181, 24310, 24439, 24568, 24697, 24826, 24955, 25084, 25213, 25342, 25471, 25600, 25729, 25858, 25987, 26116, 26245, 26374, 26503, 26632, 26761, 26890, 27019, 27148, 27277, 27406, 27535, 27664, 27793, 27922, 28051, 28180, 28309, 28438, 28567, 28696, 28825, 28954, 29083, 29212, 29341, 29470, 29599, 29728, 29857, 29986, 30115, 30244, 30373, 30502, 30631, 30760, 30889, 31018, 31147, 31276, 31405, 31534, 31663, 31792, 31921, 32050, 32179, 32308, 32437, 32566, 32695, 32824, 32953, 33082, 33211, 33340, 33469, 33598, 33727, 33856, 33985, 34114, 34243, 34372, 34501, 34503, 34632, 34761, 34786, 34788, 34790, 34792, 34794, 34795, 34924, 35053, 35055, 35056, 35081, 35082, 35149, 35151, 35153, 35155, 35157, 35159, 35162, 35164, 35231, 35233, 35236, 35365, 35367, 35369, 35371, 35499, 35628, 35691, 35745, 35799, 35800, 35854, 35909, 35911, 35913, 35915, 35940, 35941, 36070, 36071, 36188, 36189, 36191, 36193, 36194, 36248, 36250, 36252, 36254, 36279, 36281, 36410, 36412, 36414, 36416, 36418, 36547, 36676, 36805, 36806, 36935, 36937, 37062, 37087, 37089, 37091, 37093, 37094, 37096, 37097, 37226, 37355, 37380, 37381, 37383, 37385, 37387, 37388, 37517, 37646, 37775, 37904, 38033, 38162, 38291, 38420, 38549, 38678, 38807, 38936, 39065, 39194, 39323, 39452, 39581, 39710, 39715, 39716, 39783, 39785, 39786, 39787, 39788, 39813, 39815, 39840, 39907, 39909, 39911, 40040, 40065, 40066, 40087, 40089, 40174, 40259, 40344, 40346, 40348, 40350, 40378, 40507, 40636, 40638, 40639, 40706, 40709, 40710, 40711, 40712, 40713, 40780, 40909, 40920, 40922, 40924, 40926, 40929, 40931, 40933, 40936, 41065, 41076, 41205, 41207, 41209, 41212, 41213, 41239, 41270, 41272, 41274, 41341, 41344, 41468, 41469, 41598, 41727, 41849, 41850, 41851, 41860, 41869, 41870, 41871, 41965, 41966, 41967, 41968, 42062, 42064, 42065, 42066, 42067, 42161, 42217, 42273, 42274, 42330, 42386, 42387, 42434, 42528, 42622, 42623, 42624, 42718, 42774, 42830, 42831, 42878, 42880, 42974, 43051, 43107, 43163, 43219, 43220, 43347, 43474, 43475, 43602, 43603, 43730, 43857, 43984, 44111, 44112, 44239, 44366, 44493, 44620, 44747, 44874, 45001, 45128, 45255, 45382, 45509, 45636, 45763, 45890, 46017, 46144, 46271, 46398, 46525, 46526, 46527, 46583, 46584, 46713, 46842, 46971, 46972, 46974, 46975, 47104, 47233, 47362, 47491, 47620, 47749, 47878, 48007, 48136, 48265, 48394, 48523, 48652, 48781, 48910, 49039, 49168, 49297, 49426, 49555, 49684, 49813, 49942, 50071, 50200, 50329, 50458, 50587, 50716, 50845, 50974, 51103, 51232, 51361, 51490, 51619, 51748, 51877, 52006, 52135, 52264, 52393, 52522, 52651, 52780, 52909, 53038, 53167, 53296, 53425, 53554, 53683, 53812, 53941, 54070, 54199, 54328, 54457, 54586, 54715, 54844, 54911, 55040, 55169, 55298, 55427, 55556, 55685, 55814, 55943, 56072, 56201, 56330, 56459, 56588, 56717, 56846, 56975, 57104, 57233, 57362, 57491, 57620, 57749, 57878, 58007, 58136, 58137, 58202, 58296, 58321, 58322, 58324, 58326, 58328, 58329, 58458, 58587, 58612, 58613, 58615, 58617, 58619, 58620, 58749, 58878, 58880, 58881, 58906, 58907, 58974, 58976, 58978, 59107, 59236, 59247, 59249, 59274, 59275, 59276, 59297, 59300, 59313, 59315, 59317, 59372, 59421, 59497, 59565, 59581, 59640, 59642, 59643, 59649, 59650, 59651, 59719, 59787, 59855, 59923, 59934, 59936, 59937, 59943, 59945, 59946, 59947, 60015, 60083, 60151, 60219, 60287, 60355, 60423, 60491, 60561, 60629, 60699, 60767, 60769, 60772, 60774, 60841, 60843, 60846, 60975, 61104, 61105, 61234, 61363, 61492, 61621, 61750, 61879, 61880, 61882, 61883, 61884, 62013, 62142, 62271, 62400, 62529, 62658, 62787, 62916, 63045, 63174, 63303, 63432, 63561, 63690, 63819, 63948, 64077, 64206, 64335, 64464, 64593, 64722, 64851, 64980, 65109, 65238, 65367, 65496, 65625, 65754, 65883, 66012, 66141, 66270, 66399, 66528, 66657, 66742, 66871, 67000, 67129, 67258, 67387, 67516, 67645, 67774, 67903, 68032, 68161, 68290, 68419, 68548, 68677, 68806, 68935, 69064, 69193, 69322, 69451, 69580, 69709, 69838, 69967, 70096, 70225, 70354, 70483, 70612, 70741, 70870, 70999, 71128, 71257, 71386, 71515, 71644, 71773, 71902, 72031, 72160, 72289, 72418, 72547, 72676, 72805, 72934, 73063, 73192, 73321, 73450, 73579, 73708, 73837, 73966, 74095, 74224, 74353, 74482, 74611, 74740, 74869, 74998, 75127, 75128, 75193, 75194, 75279, 75364, 75449, 75451, 75453, 75455, 75457, 75459, 75512, 75514, 75607, 75709, 75801]]; $send(self, '_lex_index_offsets=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6619,7 +6619,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$private("_lex_indicies", "_lex_indicies="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 12, 14, 12, 14, 14, 12, 12, 14, 14, 14, 15, 14, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 14, 12, 12, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 14, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 14, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 12, 12, 12, 12, 12, 12, 18, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 19, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 20, 19, 22, 22, 22, 19, 22, 22, 22, 22, 22, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 24, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 25, 22, 19, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 25, 22, 19, 27, 27, 27, 19, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 19, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 29, 27, 19, 30, 30, 30, 19, 30, 30, 30, 30, 30, 31, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 19, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 32, 30, 19, 30, 30, 30, 19, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 19, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 32, 30, 19, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 33, 20, 19, 34, 34, 34, 19, 34, 34, 34, 34, 34, 35, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 19, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 36, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 37, 34, 34, 34, 34, 34, 34, 38, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 39, 34, 19, 34, 34, 34, 19, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 19, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 39, 34, 40, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 41, 19, 41, 19, 19, 42, 42, 42, 19, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 19, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 44, 42, 19, 22, 22, 22, 19, 22, 22, 22, 22, 22, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 25, 22, 19, 45, 45, 45, 19, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 19, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 45, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 49, 49, 47, 49, 47, 49, 49, 47, 47, 49, 49, 49, 50, 49, 49, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 49, 49, 49, 49, 49, 49, 49, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 49, 47, 47, 48, 49, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 49, 47, 48, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 47, 47, 47, 47, 47, 47, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 47, 47, 47, 47, 49, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 47, 47, 47, 47, 47, 49, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 47, 47, 47, 47, 47, 47, 53, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 48, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 47, 48, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 47, 47, 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 48, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 47, 48, 54, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 55, 54, 57, 57, 57, 54, 57, 57, 57, 57, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 59, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 60, 57, 54, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 61, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 60, 57, 54, 62, 62, 62, 54, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 54, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 54, 65, 65, 65, 54, 65, 65, 65, 65, 65, 66, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 54, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 67, 65, 54, 65, 65, 65, 54, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 54, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 67, 65, 54, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 68, 55, 54, 69, 69, 69, 54, 69, 69, 69, 69, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 54, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 71, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 72, 69, 69, 69, 69, 69, 69, 73, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 74, 69, 54, 69, 69, 69, 54, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 54, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 74, 69, 75, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 76, 54, 76, 54, 54, 77, 77, 77, 54, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 54, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 79, 77, 54, 57, 57, 57, 54, 57, 57, 57, 57, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 61, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 60, 57, 54, 80, 80, 80, 54, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 54, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 80, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 84, 84, 82, 84, 82, 84, 84, 82, 82, 84, 84, 84, 85, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 84, 84, 84, 84, 84, 84, 84, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 84, 82, 82, 83, 84, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 84, 82, 83, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 82, 82, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 84, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 82, 84, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 82, 82, 82, 82, 82, 82, 88, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 83, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 82, 83, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 83, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 82, 83, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 91, 89, 91, 89, 91, 91, 89, 89, 91, 91, 91, 92, 91, 91, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 91, 91, 91, 91, 91, 91, 91, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 91, 89, 89, 90, 91, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 91, 89, 90, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 89, 89, 89, 89, 89, 89, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 89, 89, 89, 89, 91, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 89, 89, 89, 89, 89, 91, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 89, 89, 89, 89, 89, 89, 95, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 90, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 89, 90, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 89, 89, 89, 89, 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 90, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 89, 90, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 97, 97, 98, 97, 98, 97, 97, 98, 98, 97, 97, 97, 99, 97, 97, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 97, 97, 97, 97, 97, 97, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 98, 97, 98, 98, 96, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 98, 98, 98, 97, 98, 96, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 98, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 97, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 102, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 98, 98, 98, 98, 98, 98, 98, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 98, 98, 98, 98, 103, 98, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 98, 98, 98, 98, 98, 103, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104, 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104, 104, 105, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104, 104, 104, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 110, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 111, 108, 108, 108, 108, 110, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 108, 108, 108, 108, 109, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 108, 108, 108, 108, 108, 109, 111, 108, 108, 112, 113, 108, 114, 108, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 115, 115, 115, 115, 117, 115, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 115, 115, 115, 115, 116, 115, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 115, 115, 115, 115, 115, 116, 118, 115, 120, 119, 121, 119, 122, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 124, 119, 124, 124, 124, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 124, 119, 119, 119, 119, 125, 126, 119, 127, 119, 128, 129, 130, 131, 132, 125, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 133, 119, 134, 130, 135, 136, 119, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 137, 138, 130, 139, 123, 119, 123, 123, 123, 123, 123, 123, 123, 123, 140, 123, 123, 123, 123, 123, 123, 123, 123, 141, 123, 123, 142, 123, 143, 123, 123, 123, 144, 145, 119, 139, 119, 123, 119, 119, 119, 119, 119, 119, 119, 119, 119, 146, 119, 146, 146, 146, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 146, 119, 119, 119, 119, 147, 148, 119, 149, 119, 150, 151, 152, 153, 154, 147, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 155, 119, 156, 152, 157, 158, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 159, 160, 152, 121, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 161, 116, 116, 116, 116, 116, 116, 116, 116, 162, 116, 116, 163, 116, 164, 116, 116, 116, 165, 166, 119, 121, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 167, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 168, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 169, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 170, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 171, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 167, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 172, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 173, 116, 116, 116, 116, 116, 116, 116, 174, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 175, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 176, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 167, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 177, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 167, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 178, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 179, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 117, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 119, 119, 119, 119, 117, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 116, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 171, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, 119, 116, 181, 180, 182, 180, 183, 180, 152, 180, 184, 180, 180, 180, 180, 180, 180, 180, 185, 180, 186, 180, 187, 180, 152, 180, 188, 180, 152, 180, 189, 180, 183, 180, 191, 190, 192, 192, 192, 192, 192, 192, 192, 192, 192, 194, 192, 194, 194, 194, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 194, 192, 192, 192, 192, 192, 192, 192, 195, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 192, 196, 192, 192, 193, 192, 193, 193, 193, 197, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 192, 192, 192, 192, 192, 193, 198, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 200, 192, 200, 200, 200, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 200, 192, 192, 192, 192, 192, 192, 192, 201, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 192, 202, 192, 192, 199, 192, 199, 199, 199, 203, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 192, 192, 192, 192, 192, 199, 205, 204, 205, 205, 205, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 205, 204, 204, 204, 204, 204, 204, 204, 206, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 207, 204, 208, 204, 209, 204, 209, 209, 209, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 209, 204, 204, 204, 204, 204, 204, 204, 210, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 211, 204, 212, 213, 215, 214, 216, 214, 217, 214, 218, 214, 219, 214, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 221, 221, 221, 221, 221, 221, 221, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 221, 221, 221, 221, 221, 221, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 221, 221, 221, 221, 221, 220, 222, 212, 223, 224, 223, 223, 223, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 223, 212, 212, 225, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 227, 212, 228, 229, 228, 228, 228, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 228, 212, 212, 230, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 232, 212, 234, 235, 234, 234, 234, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 234, 233, 233, 236, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 238, 233, 240, 241, 240, 240, 240, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, 239, 239, 242, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 244, 239, 240, 245, 240, 240, 240, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, 239, 239, 242, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 244, 239, 224, 212, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 248, 248, 246, 248, 246, 248, 248, 246, 246, 248, 248, 248, 249, 248, 248, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 248, 248, 248, 248, 248, 248, 248, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 248, 246, 246, 247, 248, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 246, 246, 248, 246, 247, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 246, 246, 246, 246, 246, 246, 246, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 246, 246, 246, 246, 248, 246, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 246, 246, 246, 246, 246, 248, 251, 248, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 248, 246, 251, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 253, 246, 246, 246, 246, 254, 246, 246, 246, 246, 246, 255, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 222, 246, 246, 246, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 246, 246, 246, 246, 252, 256, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 246, 246, 246, 255, 246, 252, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 259, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 258, 258, 258, 258, 258, 258, 258, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 258, 258, 258, 258, 257, 258, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 258, 258, 258, 258, 258, 257, 261, 260, 264, 263, 259, 258, 264, 265, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 253, 246, 246, 246, 246, 254, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 246, 246, 246, 246, 252, 256, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 246, 246, 246, 246, 246, 252, 267, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 264, 266, 264, 267, 268, 269, 269, 269, 268, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 268, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 270, 269, 268, 271, 271, 271, 268, 271, 271, 271, 271, 271, 272, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 268, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 273, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 274, 271, 268, 271, 271, 271, 268, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 268, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 275, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 274, 271, 268, 276, 276, 276, 268, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 268, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 277, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 278, 276, 268, 279, 279, 279, 268, 279, 279, 279, 279, 279, 280, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 268, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 281, 279, 268, 279, 279, 279, 268, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 268, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 281, 279, 268, 269, 269, 269, 268, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 268, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 282, 269, 268, 283, 283, 283, 268, 283, 283, 283, 283, 283, 284, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 268, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 285, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 286, 283, 283, 283, 283, 283, 283, 287, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 288, 283, 268, 283, 283, 283, 268, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 268, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 288, 283, 289, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 290, 268, 290, 268, 268, 291, 291, 291, 268, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 268, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 292, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 293, 291, 268, 271, 271, 271, 268, 271, 271, 271, 271, 271, 272, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 268, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 275, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 274, 271, 268, 294, 294, 294, 268, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 268, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 294, 294, 294, 294, 294, 294, 294, 295, 295, 295, 295, 295, 295, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 295, 295, 295, 295, 295, 295, 294, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 297, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 298, 212, 212, 299, 212, 297, 212, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 212, 212, 212, 212, 296, 212, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 212, 212, 212, 212, 212, 296, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 297, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 298, 246, 246, 299, 246, 297, 246, 296, 296, 296, 296, 296, 296, 300, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 246, 246, 246, 246, 296, 246, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 246, 246, 246, 246, 246, 296, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 297, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 298, 246, 246, 299, 246, 297, 246, 296, 296, 296, 296, 296, 296, 296, 296, 301, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 246, 246, 246, 246, 296, 246, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 246, 246, 246, 246, 246, 296, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 297, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 298, 246, 246, 299, 246, 297, 246, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 302, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 246, 246, 246, 246, 296, 246, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 246, 246, 246, 246, 246, 296, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 297, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 298, 246, 246, 299, 246, 297, 246, 296, 296, 296, 302, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 246, 246, 246, 246, 296, 246, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 246, 246, 246, 246, 246, 296, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 305, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 306, 303, 303, 303, 303, 305, 303, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 303, 303, 303, 303, 304, 303, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 303, 303, 303, 303, 303, 304, 306, 303, 303, 307, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 308, 308, 308, 308, 308, 308, 308, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 308, 308, 308, 308, 309, 308, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 308, 308, 308, 308, 308, 309, 311, 310, 311, 310, 310, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 310, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 310, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 310, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 314, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 314, 318, 317, 319, 317, 320, 317, 321, 317, 323, 322, 324, 322, 325, 322, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 308, 308, 308, 308, 308, 308, 308, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 308, 308, 308, 308, 326, 308, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 308, 308, 308, 308, 308, 326, 327, 314, 328, 329, 328, 328, 328, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 328, 314, 314, 330, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 331, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 332, 314, 333, 334, 333, 333, 333, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 333, 314, 314, 335, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 336, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 337, 314, 339, 340, 339, 339, 339, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 339, 338, 338, 341, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 342, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 343, 338, 345, 346, 345, 345, 345, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 345, 344, 344, 347, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 348, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 349, 344, 345, 346, 345, 345, 345, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 345, 344, 344, 347, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 350, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 349, 344, 345, 351, 345, 345, 345, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 345, 344, 344, 347, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 348, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 349, 344, 352, 314, 329, 314, 354, 355, 354, 354, 354, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 354, 353, 353, 356, 353, 353, 357, 353, 353, 353, 353, 353, 353, 353, 358, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 359, 353, 361, 355, 361, 361, 361, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 361, 360, 360, 356, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 359, 360, 364, 363, 366, 365, 367, 362, 368, 362, 369, 353, 371, 370, 370, 370, 371, 370, 370, 370, 370, 372, 373, 372, 372, 372, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 371, 370, 370, 370, 370, 370, 372, 370, 370, 374, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 375, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 376, 370, 370, 377, 370, 372, 378, 372, 372, 372, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 372, 378, 379, 380, 381, 382, 383, 385, 384, 387, 388, 387, 387, 387, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 387, 386, 373, 384, 389, 384, 391, 390, 390, 390, 391, 390, 390, 390, 390, 392, 393, 392, 392, 392, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 391, 390, 390, 390, 390, 390, 392, 390, 390, 394, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 395, 390, 392, 396, 392, 392, 392, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 392, 396, 398, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 399, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 400, 397, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 401, 401, 401, 401, 401, 401, 401, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 401, 401, 401, 401, 13, 401, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 401, 401, 401, 401, 401, 13, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 401, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 402, 402, 402, 402, 402, 402, 402, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 402, 402, 402, 402, 17, 402, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 402, 402, 402, 402, 402, 17, 405, 404, 404, 404, 405, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 405, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 406, 406, 406, 406, 406, 406, 406, 406, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 407, 404, 404, 404, 404, 404, 404, 404, 404, 404, 408, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 409, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 410, 404, 404, 411, 404, 412, 413, 415, 415, 415, 415, 415, 415, 415, 415, 414, 416, 416, 416, 416, 416, 416, 416, 416, 414, 414, 417, 417, 42, 42, 42, 417, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 417, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 418, 42, 419, 420, 421, 421, 42, 42, 42, 421, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 421, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 422, 42, 41, 421, 423, 424, 425, 425, 27, 27, 27, 425, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 425, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 426, 27, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 425, 425, 425, 425, 425, 425, 425, 427, 427, 427, 427, 427, 427, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 427, 427, 427, 427, 427, 427, 425, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 428, 428, 428, 428, 428, 428, 428, 429, 429, 429, 429, 429, 429, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 429, 429, 429, 429, 429, 429, 428, 428, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 421, 421, 421, 421, 421, 421, 421, 430, 430, 430, 430, 430, 430, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 430, 430, 430, 430, 430, 430, 421, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 431, 431, 431, 431, 431, 431, 431, 432, 432, 432, 432, 432, 432, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 432, 432, 432, 432, 432, 432, 431, 431, 421, 20, 20, 20, 421, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 421, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 433, 20, 417, 27, 27, 27, 417, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 417, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 29, 27, 417, 434, 434, 434, 417, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 417, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 435, 434, 436, 437, 437, 434, 434, 434, 437, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 437, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 438, 434, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 437, 437, 437, 437, 437, 437, 437, 439, 439, 439, 439, 439, 439, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 439, 439, 439, 439, 439, 439, 437, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 440, 440, 440, 440, 440, 440, 440, 441, 441, 441, 441, 441, 441, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 441, 441, 441, 441, 441, 441, 440, 440, 437, 20, 20, 20, 437, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 437, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 433, 20, 442, 437, 437, 27, 27, 27, 437, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 437, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 29, 27, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 443, 443, 443, 443, 443, 443, 443, 444, 444, 444, 444, 444, 444, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 444, 444, 444, 444, 444, 444, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 445, 443, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 443, 443, 443, 443, 443, 443, 443, 446, 446, 446, 446, 446, 446, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 446, 446, 446, 446, 446, 446, 443, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 443, 443, 443, 443, 443, 443, 443, 447, 447, 447, 447, 447, 447, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 447, 447, 447, 447, 447, 447, 443, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 443, 443, 443, 443, 443, 443, 443, 448, 448, 448, 448, 448, 448, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 448, 448, 448, 448, 448, 448, 443, 449, 452, 451, 451, 451, 452, 451, 451, 451, 451, 453, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 452, 451, 451, 451, 451, 451, 453, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 451, 451, 451, 451, 451, 451, 451, 454, 454, 454, 454, 454, 454, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 454, 454, 454, 454, 454, 454, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 455, 451, 452, 451, 451, 451, 452, 451, 451, 451, 451, 450, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 452, 451, 451, 451, 451, 451, 450, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 451, 451, 451, 451, 451, 451, 451, 456, 456, 456, 456, 456, 456, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 456, 456, 456, 456, 456, 456, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 457, 451, 450, 452, 456, 456, 456, 452, 456, 456, 456, 456, 450, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 452, 456, 456, 456, 456, 456, 450, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 450, 456, 458, 452, 459, 459, 459, 452, 459, 459, 459, 459, 453, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 459, 459, 459, 459, 453, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 459, 459, 459, 459, 459, 459, 459, 454, 454, 454, 454, 454, 454, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 454, 454, 454, 454, 454, 454, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 450, 459, 452, 459, 459, 459, 452, 459, 459, 459, 459, 450, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 459, 459, 459, 459, 450, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 459, 459, 459, 459, 459, 459, 459, 456, 456, 456, 456, 456, 456, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 456, 456, 456, 456, 456, 456, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 452, 459, 459, 459, 452, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 459, 459, 459, 459, 459, 459, 459, 461, 461, 461, 461, 461, 461, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 461, 461, 461, 461, 461, 461, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 462, 459, 452, 459, 459, 459, 452, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 459, 459, 459, 459, 459, 459, 459, 454, 454, 454, 454, 454, 454, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 454, 454, 454, 454, 454, 454, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 462, 459, 463, 452, 459, 459, 459, 452, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 459, 459, 459, 459, 459, 459, 459, 464, 464, 464, 464, 464, 464, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 464, 464, 464, 464, 464, 464, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 462, 459, 452, 459, 459, 459, 452, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 459, 459, 459, 459, 459, 459, 459, 465, 465, 465, 465, 465, 465, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 465, 465, 465, 465, 465, 465, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 462, 459, 452, 459, 459, 459, 452, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 459, 459, 459, 459, 459, 459, 459, 466, 466, 466, 466, 466, 466, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 466, 466, 466, 466, 466, 466, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 462, 459, 452, 459, 459, 459, 452, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 459, 459, 459, 459, 459, 459, 459, 467, 467, 467, 467, 467, 467, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 467, 467, 467, 467, 467, 467, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 462, 459, 452, 459, 459, 459, 452, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 459, 459, 459, 459, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 459, 459, 459, 459, 459, 459, 459, 468, 468, 468, 468, 468, 468, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 468, 468, 468, 468, 468, 468, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 462, 459, 452, 459, 459, 459, 452, 459, 459, 459, 459, 450, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 452, 459, 459, 459, 459, 459, 450, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 459, 459, 459, 459, 459, 459, 459, 468, 468, 468, 468, 468, 468, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 468, 468, 468, 468, 468, 468, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 450, 459, 469, 470, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 471, 471, 471, 471, 471, 471, 471, 472, 472, 472, 472, 472, 472, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 472, 472, 472, 472, 472, 472, 471, 471, 474, 473, 473, 473, 474, 473, 473, 473, 473, 473, 475, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 474, 473, 473, 473, 473, 473, 473, 473, 473, 476, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 477, 473, 479, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 480, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 481, 478, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 482, 482, 482, 482, 482, 482, 482, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 482, 482, 482, 482, 48, 482, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 482, 482, 482, 482, 482, 48, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 482, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 483, 483, 483, 483, 483, 483, 483, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 483, 483, 483, 483, 52, 483, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 483, 483, 483, 483, 483, 52, 486, 485, 485, 485, 486, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 486, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 487, 487, 487, 487, 487, 487, 487, 487, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 488, 485, 485, 485, 485, 485, 485, 485, 485, 485, 489, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 490, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 491, 485, 485, 492, 485, 493, 494, 496, 496, 496, 496, 496, 496, 496, 496, 495, 497, 497, 497, 497, 497, 497, 497, 497, 495, 495, 498, 498, 77, 77, 77, 498, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 498, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 499, 77, 500, 501, 502, 502, 77, 77, 77, 502, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 502, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 503, 77, 76, 502, 504, 505, 506, 506, 62, 62, 62, 506, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 506, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 507, 62, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 506, 506, 506, 506, 506, 506, 506, 508, 508, 508, 508, 508, 508, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 508, 508, 508, 508, 508, 508, 506, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 509, 509, 509, 509, 509, 509, 509, 510, 510, 510, 510, 510, 510, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 510, 510, 510, 510, 510, 510, 509, 509, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 502, 502, 502, 502, 502, 502, 502, 511, 511, 511, 511, 511, 511, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 511, 511, 511, 511, 511, 511, 502, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 512, 512, 512, 512, 512, 512, 512, 513, 513, 513, 513, 513, 513, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 513, 513, 513, 513, 513, 513, 512, 512, 502, 55, 55, 55, 502, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 502, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 514, 55, 498, 62, 62, 62, 498, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 498, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 498, 515, 515, 515, 498, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 498, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 516, 515, 517, 518, 518, 515, 515, 515, 518, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 518, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 519, 515, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 518, 518, 518, 518, 518, 518, 518, 520, 520, 520, 520, 520, 520, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 520, 520, 520, 520, 520, 520, 518, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 521, 521, 521, 521, 521, 521, 521, 522, 522, 522, 522, 522, 522, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 522, 522, 522, 522, 522, 522, 521, 521, 518, 55, 55, 55, 518, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 518, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 514, 55, 523, 518, 518, 62, 62, 62, 518, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 518, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 524, 524, 524, 524, 524, 524, 524, 525, 525, 525, 525, 525, 525, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 525, 525, 525, 525, 525, 525, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 526, 524, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 524, 524, 524, 524, 524, 524, 524, 527, 527, 527, 527, 527, 527, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 527, 527, 527, 527, 527, 527, 524, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 524, 524, 524, 524, 524, 524, 524, 528, 528, 528, 528, 528, 528, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 528, 528, 528, 528, 528, 528, 524, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 524, 524, 524, 524, 524, 524, 524, 529, 529, 529, 529, 529, 529, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 529, 529, 529, 529, 529, 529, 524, 530, 533, 532, 532, 532, 533, 532, 532, 532, 532, 534, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 533, 532, 532, 532, 532, 532, 534, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 532, 532, 532, 532, 532, 532, 532, 535, 535, 535, 535, 535, 535, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 535, 535, 535, 535, 535, 535, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 536, 532, 533, 532, 532, 532, 533, 532, 532, 532, 532, 531, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 533, 532, 532, 532, 532, 532, 531, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 532, 532, 532, 532, 532, 532, 532, 537, 537, 537, 537, 537, 537, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 537, 537, 537, 537, 537, 537, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 538, 532, 531, 533, 537, 537, 537, 533, 537, 537, 537, 537, 531, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 533, 537, 537, 537, 537, 537, 531, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 531, 537, 539, 533, 540, 540, 540, 533, 540, 540, 540, 540, 534, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 540, 540, 540, 540, 534, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 540, 540, 540, 540, 540, 540, 540, 535, 535, 535, 535, 535, 535, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 535, 535, 535, 535, 535, 535, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 531, 540, 533, 540, 540, 540, 533, 540, 540, 540, 540, 531, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 540, 540, 540, 540, 531, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 540, 540, 540, 540, 540, 540, 540, 537, 537, 537, 537, 537, 537, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 537, 537, 537, 537, 537, 537, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 533, 540, 540, 540, 533, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 540, 540, 540, 540, 540, 540, 540, 542, 542, 542, 542, 542, 542, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 542, 542, 542, 542, 542, 542, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 543, 540, 533, 540, 540, 540, 533, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 540, 540, 540, 540, 540, 540, 540, 535, 535, 535, 535, 535, 535, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 535, 535, 535, 535, 535, 535, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 543, 540, 544, 533, 540, 540, 540, 533, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 540, 540, 540, 540, 540, 540, 540, 545, 545, 545, 545, 545, 545, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 545, 545, 545, 545, 545, 545, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 543, 540, 533, 540, 540, 540, 533, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 540, 540, 540, 540, 540, 540, 540, 546, 546, 546, 546, 546, 546, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 546, 546, 546, 546, 546, 546, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 543, 540, 533, 540, 540, 540, 533, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 540, 540, 540, 540, 540, 540, 540, 547, 547, 547, 547, 547, 547, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 547, 547, 547, 547, 547, 547, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 543, 540, 533, 540, 540, 540, 533, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 540, 540, 540, 540, 540, 540, 540, 548, 548, 548, 548, 548, 548, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 548, 548, 548, 548, 548, 548, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 543, 540, 533, 540, 540, 540, 533, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 540, 540, 540, 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 540, 540, 540, 540, 540, 540, 540, 549, 549, 549, 549, 549, 549, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 549, 549, 549, 549, 549, 549, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 543, 540, 533, 540, 540, 540, 533, 540, 540, 540, 540, 531, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 533, 540, 540, 540, 540, 540, 531, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 540, 540, 540, 540, 540, 540, 540, 549, 549, 549, 549, 549, 549, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 549, 549, 549, 549, 549, 549, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 531, 540, 550, 551, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 552, 552, 552, 552, 552, 552, 552, 553, 553, 553, 553, 553, 553, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 553, 553, 553, 553, 553, 553, 552, 552, 555, 554, 554, 554, 555, 554, 554, 554, 554, 556, 557, 556, 556, 556, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 555, 554, 554, 554, 554, 554, 556, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 558, 554, 556, 559, 556, 556, 556, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 556, 559, 560, 561, 561, 561, 560, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 560, 561, 563, 562, 562, 562, 563, 562, 562, 562, 562, 562, 564, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 563, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 565, 562, 566, 567, 567, 567, 566, 567, 567, 567, 567, 567, 568, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 566, 567, 570, 569, 569, 569, 570, 569, 569, 569, 569, 569, 571, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 570, 569, 569, 569, 569, 569, 569, 569, 569, 572, 569, 574, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 575, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 576, 573, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 577, 577, 577, 577, 577, 577, 577, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 577, 577, 577, 577, 83, 577, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 577, 577, 577, 577, 577, 83, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 577, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 578, 578, 578, 578, 578, 578, 578, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 578, 578, 578, 578, 87, 578, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 578, 578, 578, 578, 578, 87, 580, 579, 579, 579, 580, 579, 579, 579, 579, 579, 581, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 580, 579, 583, 582, 582, 582, 583, 582, 582, 582, 582, 584, 585, 584, 584, 584, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 583, 582, 582, 582, 582, 582, 584, 582, 582, 586, 582, 584, 587, 584, 584, 584, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 584, 587, 589, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 590, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 591, 588, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 592, 592, 592, 592, 592, 592, 592, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 592, 592, 592, 592, 90, 592, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 592, 592, 592, 592, 592, 90, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 592, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 593, 593, 593, 593, 593, 593, 593, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 593, 593, 593, 593, 94, 593, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 593, 593, 593, 593, 593, 94, 595, 594, 594, 594, 595, 594, 594, 594, 594, 596, 597, 596, 596, 596, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 595, 594, 594, 594, 594, 594, 596, 594, 596, 598, 596, 596, 596, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 596, 598, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 599, 599, 599, 599, 599, 599, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 599, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 601, 601, 601, 601, 601, 601, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 601, 602, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 603, 98, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 604, 604, 604, 604, 604, 604, 604, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 604, 604, 604, 604, 96, 604, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 604, 604, 604, 604, 604, 96, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 604, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 605, 605, 605, 605, 605, 605, 605, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 605, 605, 605, 605, 101, 605, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 605, 605, 605, 605, 605, 101, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 606, 606, 606, 606, 606, 606, 606, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 606, 606, 606, 606, 103, 606, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 606, 606, 606, 606, 606, 103, 608, 609, 609, 609, 608, 609, 609, 609, 609, 610, 611, 610, 610, 610, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 608, 609, 609, 609, 609, 609, 610, 612, 609, 613, 614, 615, 616, 609, 609, 609, 617, 618, 609, 618, 609, 619, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 620, 609, 621, 622, 623, 609, 609, 624, 625, 624, 624, 626, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 627, 628, 609, 619, 629, 619, 630, 631, 632, 633, 634, 635, 607, 607, 636, 607, 607, 607, 637, 638, 639, 607, 607, 640, 641, 642, 643, 607, 644, 607, 645, 607, 609, 646, 609, 618, 609, 607, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 648, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 647, 647, 647, 648, 647, 648, 647, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 647, 647, 647, 647, 607, 647, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 647, 647, 647, 647, 647, 607, 610, 649, 610, 610, 610, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 610, 649, 650, 619, 651, 651, 619, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 619, 651, 652, 653, 654, 655, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 105, 105, 656, 105, 656, 105, 105, 656, 656, 105, 105, 105, 658, 105, 105, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 105, 105, 105, 105, 105, 105, 105, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 656, 105, 656, 656, 657, 105, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 656, 656, 656, 105, 656, 657, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 660, 660, 660, 660, 660, 660, 660, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 660, 660, 660, 660, 657, 660, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 660, 660, 660, 660, 660, 657, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 660, 661, 651, 619, 651, 619, 651, 619, 651, 663, 662, 619, 664, 651, 619, 651, 665, 619, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 619, 656, 619, 651, 619, 619, 651, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 648, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 647, 647, 647, 648, 647, 648, 647, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 647, 647, 647, 647, 624, 647, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 647, 647, 647, 647, 647, 624, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 648, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 648, 666, 648, 666, 624, 624, 624, 624, 667, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 624, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 666, 624, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 648, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 648, 666, 648, 666, 624, 624, 624, 624, 624, 624, 668, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 624, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 666, 624, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 648, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 648, 666, 648, 666, 624, 624, 624, 624, 624, 624, 624, 624, 669, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 624, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 666, 624, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 648, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 648, 666, 648, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 670, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 624, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 666, 624, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 648, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 648, 666, 648, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 671, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 624, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 666, 624, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 648, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 648, 666, 648, 666, 624, 624, 624, 670, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 624, 666, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 666, 666, 666, 666, 666, 624, 665, 656, 611, 656, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 673, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 674, 675, 607, 607, 607, 607, 607, 676, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 677, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 678, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 679, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 680, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 681, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 682, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 683, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 684, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 685, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 686, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 687, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 683, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 688, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 687, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 689, 607, 690, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 691, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 692, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 693, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 694, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 695, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 696, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 697, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 698, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 699, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 700, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 701, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 702, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 692, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 703, 607, 607, 607, 607, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 704, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 648, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 705, 705, 705, 648, 705, 648, 705, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 705, 705, 705, 705, 607, 705, 607, 607, 607, 607, 607, 607, 607, 607, 706, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 705, 705, 705, 705, 705, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 707, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 708, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 709, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 710, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 711, 607, 712, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 713, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 685, 607, 607, 607, 714, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 715, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 716, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 701, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 717, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 639, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 699, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 718, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 719, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 720, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 701, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 721, 607, 607, 607, 722, 607, 607, 607, 607, 607, 723, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 723, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 724, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 725, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 726, 727, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 685, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 728, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 701, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 729, 607, 607, 730, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 685, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 696, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 731, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 732, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 714, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 733, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 639, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 734, 607, 607, 607, 607, 607, 607, 607, 607, 607, 728, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 696, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 735, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 736, 607, 607, 607, 607, 607, 607, 607, 737, 607, 607, 607, 607, 607, 607, 607, 738, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 714, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 702, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 722, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 739, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 696, 607, 607, 607, 720, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 740, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 741, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 648, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 648, 672, 648, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 607, 672, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 690, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 672, 672, 672, 672, 672, 607, 619, 651, 743, 744, 744, 744, 743, 744, 744, 744, 744, 745, 744, 745, 745, 745, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 743, 744, 744, 744, 744, 744, 745, 744, 744, 746, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 747, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 744, 748, 744, 744, 742, 744, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 744, 744, 744, 744, 744, 742, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 110, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 111, 749, 749, 749, 749, 110, 749, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 749, 749, 749, 749, 109, 749, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 749, 749, 749, 749, 749, 109, 745, 750, 745, 745, 745, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 745, 750, 751, 752, 753, 754, 755, 749, 756, 749, 757, 759, 760, 760, 760, 759, 760, 760, 760, 760, 761, 762, 761, 761, 761, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 759, 760, 760, 760, 760, 760, 761, 763, 760, 764, 760, 765, 766, 760, 760, 760, 767, 768, 760, 768, 760, 765, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 769, 770, 771, 760, 760, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 773, 774, 760, 765, 758, 765, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 760, 775, 760, 768, 760, 758, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 777, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 776, 776, 776, 776, 776, 777, 776, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 776, 776, 776, 776, 758, 776, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 776, 776, 776, 776, 776, 758, 779, 778, 780, 761, 781, 761, 761, 761, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 761, 781, 782, 765, 783, 783, 765, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 765, 783, 784, 785, 786, 787, 765, 783, 765, 783, 765, 783, 765, 788, 783, 765, 783, 790, 765, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 765, 789, 765, 783, 765, 765, 783, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 777, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 791, 791, 791, 791, 791, 777, 791, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 791, 791, 791, 791, 772, 791, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 791, 791, 791, 791, 791, 772, 790, 789, 762, 789, 765, 783, 793, 792, 792, 792, 793, 792, 792, 792, 792, 794, 795, 794, 794, 794, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 793, 792, 792, 792, 792, 792, 794, 792, 792, 796, 792, 121, 797, 792, 798, 792, 799, 121, 152, 800, 154, 121, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 801, 792, 802, 152, 803, 804, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 152, 805, 152, 121, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 806, 792, 792, 792, 792, 792, 792, 792, 792, 807, 792, 792, 808, 792, 809, 792, 792, 792, 165, 166, 792, 121, 792, 810, 810, 810, 810, 810, 810, 810, 810, 810, 794, 810, 794, 794, 794, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 794, 810, 810, 810, 810, 147, 148, 810, 149, 810, 150, 151, 152, 153, 154, 147, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 155, 810, 156, 152, 157, 158, 810, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 159, 160, 152, 121, 116, 810, 116, 116, 116, 116, 116, 116, 116, 116, 161, 116, 116, 116, 116, 116, 116, 116, 116, 162, 116, 116, 163, 116, 164, 116, 116, 116, 165, 166, 810, 121, 810, 116, 811, 812, 812, 812, 811, 812, 812, 812, 812, 152, 813, 152, 152, 152, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 811, 812, 812, 812, 812, 812, 152, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 152, 812, 152, 813, 152, 152, 152, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 152, 115, 115, 115, 115, 115, 121, 115, 115, 115, 115, 115, 115, 115, 152, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 152, 115, 152, 813, 152, 152, 152, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 152, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 152, 115, 814, 152, 813, 152, 152, 152, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 152, 815, 815, 815, 815, 815, 815, 815, 815, 815, 816, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 152, 815, 152, 813, 152, 152, 152, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 152, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 152, 152, 115, 817, 811, 152, 811, 819, 818, 821, 822, 821, 821, 821, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 821, 820, 823, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 117, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 118, 811, 811, 811, 811, 117, 811, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 811, 811, 811, 811, 116, 811, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 811, 811, 811, 811, 811, 116, 824, 152, 813, 152, 152, 152, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 152, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 152, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 121, 811, 825, 826, 827, 828, 829, 830, 152, 813, 152, 152, 152, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 152, 811, 811, 811, 811, 811, 811, 811, 811, 811, 121, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 152, 811, 152, 818, 121, 831, 121, 831, 832, 833, 832, 832, 832, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 832, 820, 834, 831, 835, 835, 835, 835, 835, 835, 835, 835, 835, 124, 835, 124, 124, 124, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 124, 835, 835, 835, 835, 125, 126, 835, 127, 835, 128, 129, 130, 131, 132, 125, 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, 133, 835, 134, 130, 135, 136, 835, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 137, 138, 130, 139, 123, 835, 123, 123, 123, 123, 123, 123, 123, 123, 140, 123, 123, 123, 123, 123, 123, 123, 123, 141, 123, 123, 142, 123, 143, 123, 123, 123, 144, 145, 835, 139, 835, 123, 152, 831, 836, 831, 837, 831, 838, 831, 839, 191, 191, 191, 839, 191, 191, 191, 191, 840, 191, 840, 840, 840, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 839, 191, 191, 191, 191, 191, 840, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 191, 841, 191, 191, 193, 191, 193, 193, 193, 197, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 191, 191, 191, 191, 191, 193, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 842, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 191, 190, 190, 190, 190, 842, 190, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 190, 190, 190, 190, 193, 190, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 190, 190, 190, 190, 190, 193, 843, 843, 843, 843, 843, 843, 843, 843, 843, 194, 843, 194, 194, 194, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 194, 843, 843, 843, 843, 843, 843, 843, 195, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 843, 196, 843, 843, 193, 843, 193, 193, 193, 197, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 843, 843, 843, 843, 843, 193, 844, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 842, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 191, 843, 843, 843, 843, 842, 843, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 843, 843, 843, 843, 193, 843, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 845, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 843, 843, 843, 843, 843, 193, 198, 843, 847, 846, 846, 846, 847, 846, 846, 846, 846, 848, 846, 848, 848, 848, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 847, 846, 846, 846, 846, 846, 848, 846, 846, 849, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 850, 846, 846, 846, 846, 846, 846, 846, 851, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 852, 846, 848, 853, 848, 848, 848, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 848, 853, 854, 855, 856, 857, 859, 858, 860, 861, 858, 862, 864, 865, 865, 865, 864, 865, 865, 865, 865, 866, 867, 866, 866, 866, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 864, 865, 865, 865, 865, 865, 866, 865, 865, 868, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 865, 869, 865, 865, 863, 865, 863, 863, 863, 863, 863, 863, 863, 863, 870, 863, 863, 863, 863, 863, 863, 863, 863, 871, 863, 863, 872, 863, 873, 863, 863, 863, 865, 865, 865, 865, 865, 863, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 874, 874, 874, 874, 874, 874, 874, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 874, 874, 874, 874, 863, 874, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 874, 874, 874, 874, 874, 863, 866, 875, 866, 866, 866, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 866, 875, 876, 877, 878, 879, 880, 882, 881, 883, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 885, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 886, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 887, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 888, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 889, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 885, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 890, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 891, 863, 863, 863, 863, 863, 863, 863, 892, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 893, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 894, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 885, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 863, 895, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 885, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 896, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 863, 897, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 884, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 863, 884, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 889, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 884, 884, 884, 884, 884, 863, 899, 222, 222, 222, 899, 222, 222, 222, 222, 900, 901, 900, 900, 900, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 899, 222, 222, 222, 222, 222, 900, 902, 222, 903, 222, 904, 905, 222, 906, 222, 907, 908, 222, 909, 910, 911, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 912, 222, 913, 914, 915, 916, 222, 917, 918, 917, 917, 919, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 920, 921, 222, 922, 923, 222, 924, 925, 926, 927, 928, 929, 898, 898, 930, 898, 898, 898, 931, 932, 933, 898, 898, 934, 935, 936, 937, 898, 938, 898, 939, 898, 940, 941, 222, 922, 222, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 946, 945, 945, 947, 945, 948, 950, 951, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 952, 949, 954, 953, 955, 956, 957, 900, 958, 900, 900, 900, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 900, 958, 960, 959, 962, 963, 962, 962, 962, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 962, 961, 222, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 222, 964, 965, 966, 967, 968, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 970, 970, 970, 970, 970, 970, 970, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 970, 970, 970, 970, 970, 970, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 970, 970, 970, 970, 970, 969, 973, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 222, 972, 974, 976, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 222, 975, 222, 212, 223, 224, 223, 223, 223, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 223, 972, 972, 225, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 972, 972, 972, 222, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 227, 972, 240, 241, 240, 240, 240, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, 239, 239, 242, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 244, 239, 223, 224, 223, 223, 223, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 223, 972, 972, 225, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 972, 972, 972, 222, 222, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 227, 972, 978, 964, 980, 979, 982, 981, 964, 983, 983, 983, 964, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 964, 983, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 985, 986, 964, 987, 248, 988, 986, 964, 964, 989, 990, 964, 990, 964, 248, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 991, 964, 992, 993, 994, 964, 995, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 996, 964, 964, 248, 984, 248, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 964, 997, 964, 998, 964, 984, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 1000, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 999, 999, 999, 1001, 999, 1000, 999, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 999, 999, 999, 999, 984, 999, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 999, 999, 999, 999, 999, 984, 1003, 1002, 1004, 1006, 1007, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1008, 1005, 1010, 1011, 1009, 1012, 1013, 1014, 1015, 248, 999, 999, 1016, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 248, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 999, 999, 999, 999, 999, 999, 999, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 999, 999, 999, 999, 247, 999, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 999, 999, 999, 999, 999, 247, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 999, 1017, 999, 248, 999, 248, 999, 248, 1018, 999, 248, 999, 248, 999, 248, 248, 999, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1019, 1019, 1019, 1019, 1019, 1019, 1022, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1019, 1019, 1019, 1019, 1020, 1019, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1019, 1019, 1019, 1019, 1019, 1020, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1023, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1025, 1025, 1025, 1025, 1026, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1025, 1025, 1025, 1025, 1025, 1026, 1017, 999, 1016, 999, 1028, 1029, 964, 1030, 263, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 264, 253, 265, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 264, 254, 264, 267, 222, 964, 922, 222, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 222, 964, 222, 973, 964, 1034, 1033, 1033, 1033, 1034, 1033, 1033, 1033, 1033, 1035, 1036, 1035, 1035, 1035, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1034, 1033, 1033, 1033, 1033, 1033, 1035, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1033, 1038, 1033, 1033, 1037, 1033, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1033, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1039, 1039, 1039, 1039, 1040, 1039, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1039, 1039, 1039, 1039, 1039, 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1041, 1041, 1041, 1041, 1042, 1041, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1041, 1041, 1041, 1041, 1041, 1042, 1045, 1044, 1044, 1044, 1045, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1045, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1047, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1048, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1049, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1050, 1044, 1044, 1051, 1044, 1052, 1053, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1054, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1054, 1054, 1057, 1057, 291, 291, 291, 1057, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 1057, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 292, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 1058, 291, 1059, 1060, 1061, 1061, 291, 291, 291, 1061, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 1061, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 292, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 1062, 291, 290, 1061, 1063, 1064, 1065, 1065, 276, 276, 276, 1065, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 1065, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 277, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 1066, 276, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1067, 1067, 1067, 1067, 1067, 1067, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1067, 1067, 1067, 1067, 1067, 1067, 1065, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1069, 1069, 1069, 1069, 1069, 1069, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1069, 1069, 1069, 1069, 1069, 1069, 1068, 1068, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1070, 1070, 1070, 1070, 1070, 1070, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1070, 1070, 1070, 1070, 1070, 1070, 1061, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1072, 1072, 1072, 1072, 1072, 1072, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1072, 1072, 1072, 1072, 1072, 1072, 1071, 1071, 1061, 269, 269, 269, 1061, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 1061, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 1073, 269, 1057, 276, 276, 276, 1057, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 1057, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 277, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 278, 276, 1057, 1074, 1074, 1074, 1057, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1057, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1075, 1074, 1076, 1077, 1077, 1074, 1074, 1074, 1077, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1077, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1078, 1074, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1079, 1079, 1079, 1079, 1079, 1079, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1079, 1079, 1079, 1079, 1079, 1079, 1077, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1081, 1081, 1081, 1081, 1081, 1081, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1081, 1081, 1081, 1081, 1081, 1081, 1080, 1080, 1077, 269, 269, 269, 1077, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 1077, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 1073, 269, 1082, 1077, 1077, 276, 276, 276, 1077, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 1077, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 277, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 278, 276, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1084, 1084, 1084, 1084, 1084, 1084, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1084, 1084, 1084, 1084, 1084, 1084, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1085, 1083, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1086, 1086, 1086, 1086, 1086, 1086, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1086, 1086, 1086, 1086, 1086, 1086, 1083, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1087, 1087, 1087, 1087, 1087, 1087, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1087, 1087, 1087, 1087, 1087, 1087, 1083, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1088, 1088, 1088, 1088, 1088, 1088, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1088, 1088, 1088, 1088, 1088, 1088, 1083, 1089, 1092, 1091, 1091, 1091, 1092, 1091, 1091, 1091, 1091, 1093, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1092, 1091, 1091, 1091, 1091, 1091, 1093, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1094, 1094, 1094, 1094, 1094, 1094, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1094, 1094, 1094, 1094, 1094, 1094, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1095, 1091, 1092, 1091, 1091, 1091, 1092, 1091, 1091, 1091, 1091, 1090, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1092, 1091, 1091, 1091, 1091, 1091, 1090, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1096, 1096, 1096, 1096, 1096, 1096, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1096, 1096, 1096, 1096, 1096, 1096, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1097, 1091, 1090, 1092, 1096, 1096, 1096, 1092, 1096, 1096, 1096, 1096, 1090, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1092, 1096, 1096, 1096, 1096, 1096, 1090, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1090, 1096, 1098, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1093, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1093, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1100, 1100, 1100, 1100, 1100, 1100, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1100, 1100, 1100, 1100, 1100, 1100, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1090, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1090, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1090, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1096, 1096, 1096, 1096, 1096, 1096, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1096, 1096, 1096, 1096, 1096, 1096, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1102, 1102, 1102, 1102, 1102, 1102, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1102, 1102, 1102, 1102, 1102, 1102, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1100, 1100, 1100, 1100, 1100, 1100, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1100, 1100, 1100, 1100, 1100, 1100, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1104, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1105, 1105, 1105, 1105, 1105, 1105, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1105, 1105, 1105, 1105, 1105, 1105, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1106, 1106, 1106, 1106, 1106, 1106, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1106, 1106, 1106, 1106, 1106, 1106, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1107, 1107, 1107, 1107, 1107, 1107, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1107, 1107, 1107, 1107, 1107, 1107, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1108, 1108, 1108, 1108, 1108, 1108, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1108, 1108, 1108, 1108, 1108, 1108, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1101, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1090, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1090, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1090, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1111, 1111, 1111, 1111, 1111, 1111, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1111, 1111, 1111, 1111, 1111, 1111, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1112, 1112, 1112, 1112, 1112, 1112, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1112, 1112, 1112, 1112, 1112, 1112, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1113, 1113, 1113, 1113, 1113, 1113, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1113, 1113, 1113, 1113, 1113, 1113, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1090, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1114, 1114, 1114, 1114, 1114, 1114, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1114, 1114, 1114, 1114, 1114, 1114, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1090, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1115, 1115, 1115, 1115, 1115, 1115, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1115, 1115, 1115, 1115, 1115, 1115, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1090, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1116, 1116, 1116, 1116, 1116, 1116, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1116, 1116, 1116, 1116, 1116, 1116, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1090, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1117, 1117, 1117, 1117, 1117, 1117, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1117, 1117, 1117, 1117, 1117, 1117, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1090, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1090, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1118, 1118, 1118, 1118, 1118, 1118, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1118, 1118, 1118, 1118, 1118, 1118, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1119, 1119, 1119, 1119, 1119, 1119, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1119, 1119, 1119, 1119, 1119, 1119, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1120, 1120, 1120, 1120, 1120, 1120, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1120, 1120, 1120, 1120, 1120, 1120, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1121, 1121, 1121, 1121, 1121, 1121, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1121, 1121, 1121, 1121, 1121, 1121, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1092, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1092, 1099, 1099, 1099, 1099, 1099, 1110, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1109, 1109, 1109, 1109, 1109, 1109, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1103, 1099, 1122, 1123, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1125, 1125, 1125, 1125, 1125, 1125, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1125, 1125, 1125, 1125, 1125, 1125, 1124, 1124, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 297, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 298, 212, 212, 299, 212, 297, 212, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 212, 212, 212, 212, 296, 212, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 212, 212, 212, 212, 212, 296, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 297, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 298, 964, 964, 299, 964, 297, 964, 296, 296, 296, 296, 1126, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 964, 964, 964, 964, 296, 964, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 964, 964, 964, 964, 964, 296, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 297, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 298, 964, 964, 299, 964, 297, 964, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 1127, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 964, 964, 964, 964, 296, 964, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 964, 964, 964, 964, 964, 296, 1128, 1129, 964, 959, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 1130, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 1131, 1132, 898, 898, 898, 898, 898, 1133, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1134, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 1135, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1136, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 1137, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 1138, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1139, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 1140, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 1141, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 1142, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 297, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 212, 212, 299, 212, 297, 212, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 212, 212, 212, 212, 898, 212, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 212, 212, 212, 212, 212, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 1143, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1144, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 1140, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 1145, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1144, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1146, 898, 1147, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 1148, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 1149, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1150, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1151, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 1152, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 1153, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1154, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 1155, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 1156, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1157, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1158, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 1159, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1149, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1160, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1161, 898, 1162, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1163, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1142, 898, 898, 898, 1160, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1164, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1165, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1158, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 1166, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 933, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1156, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 1167, 898, 898, 898, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1168, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 1169, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1170, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1158, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1171, 898, 898, 898, 1172, 898, 898, 898, 898, 898, 1173, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1173, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1174, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 1175, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1176, 1177, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1142, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 1178, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1179, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1180, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1183, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1184, 1181, 1181, 1185, 1181, 1183, 1181, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1181, 1181, 1181, 1181, 1182, 1181, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1181, 1181, 1181, 1181, 1181, 1182, 950, 1186, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 952, 949, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1187, 898, 898, 1188, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1142, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1153, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1189, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1190, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1160, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1191, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 933, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 1192, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1193, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1153, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1158, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1194, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 1195, 898, 898, 898, 898, 898, 898, 898, 1196, 898, 898, 898, 898, 898, 898, 898, 1197, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1160, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1198, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1199, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1167, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 1200, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1167, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 1201, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1153, 898, 898, 898, 1202, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1203, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1167, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 1204, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 1205, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 942, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 297, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 298, 942, 942, 299, 942, 297, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 944, 942, 942, 898, 942, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 1147, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 942, 942, 942, 942, 942, 898, 1206, 222, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 1207, 964, 1209, 1208, 1208, 1208, 1209, 1208, 1208, 1208, 1208, 1210, 1211, 1210, 1210, 1210, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1209, 1208, 1208, 1208, 1208, 1208, 1210, 1208, 1208, 1212, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1213, 1208, 1210, 1214, 1210, 1210, 1210, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1210, 1214, 1215, 1216, 1217, 1218, 1219, 1221, 1220, 1222, 1224, 1225, 1225, 1225, 1224, 1225, 1225, 1225, 1225, 1226, 1227, 1226, 1226, 1226, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1224, 1225, 1225, 1225, 1225, 1225, 1226, 1225, 1228, 1229, 1225, 1225, 1225, 1228, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1225, 1230, 1225, 1225, 1223, 1225, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1225, 1225, 1225, 1225, 1225, 1223, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 305, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 306, 1231, 1231, 1231, 1231, 305, 1231, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 1231, 1231, 1231, 1231, 304, 1231, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 1231, 1231, 1231, 1231, 1231, 304, 1226, 1232, 1226, 1226, 1226, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1226, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1231, 1239, 1241, 1242, 1242, 1242, 1241, 1242, 1242, 1242, 1242, 1243, 1244, 1243, 1243, 1243, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1241, 1242, 1242, 1242, 1242, 1242, 1243, 1245, 1246, 1247, 1248, 1249, 1250, 1246, 1251, 1252, 1253, 1249, 1254, 1255, 1256, 1249, 1257, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1266, 1266, 1268, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1269, 1270, 1271, 1249, 1272, 1246, 1273, 1274, 1275, 1276, 1277, 1278, 1240, 1240, 1279, 1240, 1240, 1240, 1280, 1281, 1282, 1240, 1240, 1283, 1284, 1285, 1286, 1240, 1287, 1240, 1288, 1240, 1289, 1290, 1291, 1292, 1242, 1240, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 1293, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 314, 314, 314, 314, 314, 1293, 314, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 314, 314, 314, 314, 1240, 314, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 314, 314, 314, 314, 314, 1240, 1295, 1294, 1296, 1243, 1297, 1243, 1243, 1243, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1243, 1297, 1298, 1300, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1300, 1299, 1301, 1302, 1303, 1304, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 309, 309, 1305, 309, 1305, 309, 309, 1305, 1305, 309, 309, 309, 1306, 309, 309, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 309, 309, 309, 309, 309, 309, 309, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 1305, 309, 1305, 1305, 326, 309, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 1305, 1305, 1305, 309, 1305, 326, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 1308, 1308, 1308, 1308, 326, 1308, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 1308, 1308, 1308, 1308, 1308, 326, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1308, 1309, 314, 1249, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1311, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1309, 1310, 1312, 1313, 1249, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1309, 1314, 1309, 1315, 1310, 1317, 1316, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1316, 1319, 1318, 1320, 1318, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1322, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1323, 1321, 1321, 1321, 1321, 1321, 1322, 1321, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 311, 1321, 1325, 1324, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1327, 1324, 1328, 1329, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1330, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1331, 1324, 1324, 1324, 1324, 1324, 1324, 1332, 1324, 1324, 1327, 1324, 1328, 1329, 1324, 1324, 1324, 1333, 1324, 1324, 1324, 1324, 1324, 1330, 1324, 1324, 1334, 1324, 1324, 1324, 1324, 1324, 1331, 1324, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1336, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1337, 1335, 1335, 1335, 1335, 1335, 1336, 1335, 1335, 1335, 1338, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1339, 1335, 1340, 314, 1340, 314, 314, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 314, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1340, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1342, 1341, 1344, 1343, 1345, 1347, 1346, 1346, 1346, 1348, 1346, 1349, 1350, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1332, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1333, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1334, 1324, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1352, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1333, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1334, 1324, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1355, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1356, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1357, 1353, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1358, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1356, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1357, 1353, 1356, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1357, 1353, 1360, 1359, 1361, 1363, 1362, 1362, 1362, 1364, 1362, 1366, 1365, 1367, 1368, 1370, 1370, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1371, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1372, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1373, 1369, 1374, 1374, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1375, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1356, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1357, 1353, 1374, 1374, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1358, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1356, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1357, 1353, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1378, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1379, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1380, 1376, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1383, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1384, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1385, 1381, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1387, 1387, 1387, 1387, 1387, 1387, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1388, 1386, 1387, 1387, 1387, 1387, 1387, 1387, 1386, 1386, 1389, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1390, 1386, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1391, 1391, 1391, 1391, 1391, 1391, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1392, 1353, 1391, 1391, 1391, 1391, 1391, 1391, 1353, 1353, 1356, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1357, 1353, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1391, 1391, 1391, 1391, 1391, 1391, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1358, 1353, 1391, 1391, 1391, 1391, 1391, 1391, 1353, 1353, 1356, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1357, 1353, 1394, 1393, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1396, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1397, 1393, 1393, 1393, 1393, 1393, 1396, 1393, 1393, 1393, 1398, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1399, 1393, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1401, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1398, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1399, 1393, 1402, 1353, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1404, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1405, 1353, 1353, 1353, 1353, 1353, 1404, 1353, 1353, 1353, 1356, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1357, 1353, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1358, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1356, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1357, 1353, 1311, 1318, 1249, 1406, 1310, 1300, 1310, 1407, 1408, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1300, 1318, 1300, 1310, 1300, 1249, 1310, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 1305, 1305, 1305, 1305, 1305, 1305, 1409, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 1305, 1305, 1305, 1305, 326, 1305, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 1305, 1305, 1305, 1305, 1305, 326, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 1293, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1410, 314, 314, 314, 314, 1293, 314, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 314, 314, 314, 314, 1266, 314, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 314, 314, 314, 314, 314, 1266, 1411, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1293, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1410, 1412, 1412, 1412, 1412, 1293, 1412, 1266, 1266, 1266, 1266, 1413, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1266, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1412, 1266, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1293, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1410, 1412, 1412, 1412, 1412, 1293, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1414, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1266, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1412, 1266, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1293, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1410, 1412, 1412, 1412, 1412, 1293, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1415, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1266, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1412, 1266, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1293, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1410, 1412, 1412, 1412, 1412, 1293, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1416, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1266, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1412, 1266, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1293, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1410, 1412, 1412, 1412, 1412, 1293, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1417, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1266, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1412, 1266, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1293, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1410, 1412, 1412, 1412, 1412, 1293, 1412, 1266, 1266, 1266, 1416, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1266, 1412, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1412, 1412, 1412, 1412, 1412, 1266, 1418, 1420, 1419, 1421, 1422, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1424, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1425, 1426, 1240, 1240, 1240, 1240, 1240, 1427, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1428, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1429, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1430, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1431, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1432, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1433, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1434, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1435, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1436, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1437, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1438, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1439, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1440, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1441, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1442, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1438, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1443, 1240, 1444, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1445, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1446, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1447, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1448, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1449, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1450, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1451, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1452, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1448, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1453, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1454, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1455, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1456, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1457, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1458, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1448, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1459, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1460, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1461, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 328, 329, 328, 328, 328, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 328, 1293, 1462, 330, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1462, 1462, 331, 1462, 1462, 1293, 1462, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1462, 332, 1462, 1462, 1240, 1462, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1462, 1462, 1462, 1462, 1462, 1240, 345, 346, 345, 345, 345, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 345, 344, 344, 347, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 350, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 349, 344, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1464, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1465, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1466, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1293, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1467, 1467, 1467, 1467, 1467, 1293, 1467, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1467, 1467, 1467, 1467, 1240, 1467, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1468, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1467, 1467, 1467, 1467, 1467, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1469, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1470, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1471, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1472, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1473, 1240, 1474, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1475, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1448, 1240, 1240, 1240, 1476, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1448, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1441, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1477, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1478, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1458, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1479, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1282, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1480, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1481, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1441, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1448, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1482, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1448, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1483, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1484, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1485, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1458, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1486, 1240, 1240, 1240, 1487, 1240, 1240, 1240, 1240, 1240, 1488, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1489, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1455, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1441, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1490, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1491, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1492, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1493, 1494, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1441, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1495, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1496, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1482, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1497, 1240, 1240, 1498, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1441, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1499, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1455, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1500, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1501, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1502, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1441, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1503, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1504, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1490, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1505, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1506, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1452, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1481, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1507, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1508, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1509, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1510, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1511, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1447, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1512, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1513, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1482, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1514, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1482, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1515, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1452, 1240, 1240, 1240, 1516, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1517, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1482, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1518, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1519, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1520, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1293, 1423, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1240, 1423, 1240, 1240, 1240, 1490, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1423, 1423, 1423, 1423, 1423, 1240, 1521, 1309, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1249, 1299, 1522, 1524, 1523, 1524, 1524, 1524, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1524, 1523, 1523, 1525, 1523, 1523, 1526, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 358, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1527, 1523, 354, 355, 354, 354, 354, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 354, 1528, 1528, 356, 1528, 1528, 357, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 358, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 359, 1528, 361, 1529, 361, 361, 361, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 361, 1529, 1529, 356, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 359, 1529, 1531, 1530, 1533, 1532, 364, 363, 369, 1528, 367, 1528, 1535, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1536, 1534, 1535, 1534, 1535, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1538, 1534, 1535, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1539, 1534, 1535, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1540, 1534, 1542, 1540, 0]]; + $writer = [[1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 12, 14, 12, 14, 14, 12, 12, 14, 14, 14, 15, 14, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 14, 12, 12, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 14, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 14, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 12, 12, 12, 12, 12, 12, 18, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 19, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 20, 19, 22, 22, 22, 19, 22, 22, 22, 22, 22, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 24, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 25, 22, 19, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 25, 22, 19, 27, 27, 27, 19, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 19, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 29, 27, 19, 30, 30, 30, 19, 30, 30, 30, 30, 30, 31, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 19, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 32, 30, 19, 30, 30, 30, 19, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 19, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 32, 30, 19, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 33, 20, 19, 34, 34, 34, 19, 34, 34, 34, 34, 34, 35, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 19, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 36, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 37, 34, 34, 34, 34, 34, 34, 38, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 39, 34, 19, 34, 34, 34, 19, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 19, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 39, 34, 40, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 41, 19, 41, 19, 19, 42, 42, 42, 19, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 19, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 44, 42, 19, 22, 22, 22, 19, 22, 22, 22, 22, 22, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 25, 22, 19, 45, 45, 45, 19, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 19, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 45, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 49, 49, 47, 49, 47, 49, 49, 47, 47, 49, 49, 49, 50, 49, 49, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 49, 49, 49, 49, 49, 49, 49, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 49, 47, 47, 48, 49, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 49, 47, 48, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 47, 47, 47, 47, 47, 47, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 47, 47, 47, 47, 49, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 47, 47, 47, 47, 47, 49, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 47, 47, 47, 47, 47, 47, 53, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 48, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 47, 48, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 47, 47, 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 48, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 47, 47, 47, 47, 48, 54, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 55, 54, 57, 57, 57, 54, 57, 57, 57, 57, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 59, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 60, 57, 54, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 61, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 60, 57, 54, 62, 62, 62, 54, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 54, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 54, 65, 65, 65, 54, 65, 65, 65, 65, 65, 66, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 54, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 67, 65, 54, 65, 65, 65, 54, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 54, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 67, 65, 54, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 68, 55, 54, 69, 69, 69, 54, 69, 69, 69, 69, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 54, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 71, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 72, 69, 69, 69, 69, 69, 69, 73, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 74, 69, 54, 69, 69, 69, 54, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 54, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 74, 69, 75, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 76, 54, 76, 54, 54, 77, 77, 77, 54, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 54, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 79, 77, 54, 57, 57, 57, 54, 57, 57, 57, 57, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 61, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 60, 57, 54, 80, 80, 80, 54, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 54, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 80, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 84, 84, 82, 84, 82, 84, 84, 82, 82, 84, 84, 84, 85, 84, 84, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 84, 84, 84, 84, 84, 84, 84, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 84, 82, 82, 83, 84, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 84, 82, 83, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 82, 82, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 84, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 82, 84, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 82, 82, 82, 82, 82, 82, 88, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 83, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 82, 83, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 83, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 82, 83, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 91, 89, 91, 89, 91, 91, 89, 89, 91, 91, 91, 92, 91, 91, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 91, 91, 91, 91, 91, 91, 91, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 91, 89, 89, 90, 91, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 91, 89, 90, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 89, 89, 89, 89, 89, 89, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 89, 89, 89, 89, 91, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 89, 89, 89, 89, 89, 91, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 89, 89, 89, 89, 89, 89, 95, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 90, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 89, 90, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 89, 89, 89, 89, 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 90, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 89, 89, 89, 90, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 97, 97, 98, 97, 98, 97, 97, 98, 98, 97, 97, 97, 99, 97, 97, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 97, 97, 97, 97, 97, 97, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 98, 97, 98, 98, 96, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 98, 98, 98, 97, 98, 96, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 98, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 97, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 102, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 98, 98, 98, 98, 98, 98, 98, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 98, 98, 98, 98, 103, 98, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 98, 98, 98, 98, 98, 103, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104, 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104, 104, 105, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104, 104, 104, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 106, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 110, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 111, 108, 108, 108, 108, 110, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 108, 108, 108, 108, 109, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 108, 108, 108, 108, 108, 109, 111, 108, 108, 112, 113, 108, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 116, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 114, 114, 114, 114, 116, 114, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 114, 114, 114, 114, 115, 114, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 114, 114, 114, 114, 114, 115, 117, 114, 119, 118, 120, 118, 121, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 123, 118, 123, 123, 123, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 123, 118, 118, 118, 118, 124, 125, 118, 126, 118, 127, 128, 129, 130, 131, 124, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 132, 118, 133, 129, 134, 135, 118, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 136, 137, 129, 138, 122, 118, 122, 122, 122, 122, 122, 122, 122, 122, 139, 122, 122, 122, 122, 122, 122, 122, 122, 140, 122, 122, 141, 122, 142, 122, 122, 122, 143, 144, 118, 138, 118, 122, 118, 118, 118, 118, 118, 118, 118, 118, 118, 145, 118, 145, 145, 145, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 145, 118, 118, 118, 118, 146, 147, 118, 148, 118, 149, 150, 151, 152, 153, 146, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 154, 118, 155, 151, 156, 157, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 158, 159, 151, 120, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 160, 115, 115, 115, 115, 115, 115, 115, 115, 161, 115, 115, 162, 115, 163, 115, 115, 115, 164, 165, 118, 120, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 166, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 167, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 168, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 169, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 170, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 166, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 171, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 172, 115, 115, 115, 115, 115, 115, 115, 173, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 174, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 175, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 166, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 176, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 166, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 177, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 178, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 116, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 118, 118, 118, 118, 116, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 115, 118, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 170, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, 118, 118, 118, 115, 180, 179, 181, 179, 182, 179, 151, 179, 183, 179, 179, 179, 179, 179, 179, 179, 184, 179, 185, 179, 186, 179, 151, 179, 187, 179, 151, 179, 188, 179, 182, 179, 190, 189, 191, 191, 191, 191, 191, 191, 191, 191, 191, 193, 191, 193, 193, 193, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 193, 191, 191, 191, 191, 191, 191, 191, 194, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 191, 195, 191, 191, 192, 191, 192, 192, 192, 196, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 191, 191, 191, 191, 191, 192, 197, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 199, 191, 199, 199, 199, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 199, 191, 191, 191, 191, 191, 191, 191, 200, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 191, 201, 191, 191, 198, 191, 198, 198, 198, 202, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 191, 191, 191, 191, 191, 198, 204, 203, 204, 204, 204, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 204, 203, 203, 203, 203, 203, 203, 203, 205, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 206, 203, 207, 203, 208, 203, 208, 208, 208, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 208, 203, 203, 203, 203, 203, 203, 203, 209, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 210, 203, 211, 212, 214, 213, 215, 213, 216, 213, 217, 213, 218, 213, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 220, 220, 220, 220, 220, 220, 220, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 220, 220, 220, 220, 220, 220, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 220, 220, 220, 220, 220, 219, 221, 211, 222, 223, 222, 222, 222, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 222, 211, 211, 224, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 226, 211, 227, 228, 227, 227, 227, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 227, 211, 211, 229, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 231, 211, 233, 234, 233, 233, 233, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 233, 232, 232, 235, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 237, 232, 239, 240, 239, 239, 239, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 238, 238, 241, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 243, 238, 239, 244, 239, 239, 239, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 238, 238, 241, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 243, 238, 223, 211, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 247, 247, 245, 247, 245, 247, 247, 245, 245, 247, 247, 247, 248, 247, 247, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 247, 247, 247, 247, 247, 247, 247, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 245, 247, 245, 245, 246, 247, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 245, 245, 245, 247, 245, 246, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 245, 245, 245, 245, 245, 245, 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 245, 245, 245, 245, 247, 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 245, 245, 245, 245, 245, 247, 250, 247, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 247, 245, 250, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 252, 245, 245, 245, 245, 253, 245, 245, 245, 245, 245, 254, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 221, 245, 245, 245, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 245, 245, 245, 245, 251, 255, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 245, 245, 245, 254, 245, 251, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 258, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 257, 257, 257, 257, 257, 257, 257, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 257, 257, 257, 257, 256, 257, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 257, 257, 257, 257, 257, 256, 260, 259, 263, 262, 258, 257, 263, 264, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 252, 245, 245, 245, 245, 253, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 245, 245, 245, 245, 251, 255, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 245, 245, 245, 245, 245, 251, 266, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 263, 265, 263, 266, 267, 268, 268, 268, 267, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 267, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 269, 268, 267, 270, 270, 270, 267, 270, 270, 270, 270, 270, 271, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 267, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 272, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 273, 270, 267, 270, 270, 270, 267, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 267, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 274, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 273, 270, 267, 275, 275, 275, 267, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 267, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 277, 275, 267, 278, 278, 278, 267, 278, 278, 278, 278, 278, 279, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 267, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 280, 278, 267, 278, 278, 278, 267, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 267, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 280, 278, 267, 268, 268, 268, 267, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 267, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 281, 268, 267, 282, 282, 282, 267, 282, 282, 282, 282, 282, 283, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 267, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 284, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 285, 282, 282, 282, 282, 282, 282, 286, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 287, 282, 267, 282, 282, 282, 267, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 267, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 287, 282, 288, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 289, 267, 289, 267, 267, 290, 290, 290, 267, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 267, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 292, 290, 267, 270, 270, 270, 267, 270, 270, 270, 270, 270, 271, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 267, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 274, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 273, 270, 267, 293, 293, 293, 267, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 267, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 293, 293, 293, 293, 293, 293, 293, 294, 294, 294, 294, 294, 294, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 294, 294, 294, 294, 294, 294, 293, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 296, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 211, 211, 298, 211, 296, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 211, 211, 211, 211, 295, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 211, 211, 211, 211, 211, 295, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 296, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 245, 245, 298, 245, 296, 245, 295, 295, 295, 295, 295, 295, 299, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 295, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 245, 295, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 296, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 245, 245, 298, 245, 296, 245, 295, 295, 295, 295, 295, 295, 295, 295, 300, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 295, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 245, 295, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 296, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 245, 245, 298, 245, 296, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 301, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 295, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 245, 295, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 296, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 245, 245, 298, 245, 296, 245, 295, 295, 295, 301, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 295, 245, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 245, 245, 245, 245, 245, 295, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 304, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 305, 302, 302, 302, 302, 304, 302, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 302, 302, 302, 302, 303, 302, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 302, 302, 302, 302, 302, 303, 305, 302, 302, 306, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 307, 307, 307, 307, 307, 307, 307, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 307, 307, 307, 307, 308, 307, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 307, 307, 307, 307, 307, 308, 310, 309, 310, 309, 309, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 309, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 309, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 309, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 313, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 313, 317, 316, 318, 316, 319, 316, 320, 316, 322, 321, 323, 321, 324, 321, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 307, 307, 307, 307, 307, 307, 307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 307, 307, 307, 307, 325, 307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 307, 307, 307, 307, 307, 325, 326, 313, 327, 328, 327, 327, 327, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 327, 313, 313, 329, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 330, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 331, 313, 332, 333, 332, 332, 332, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 332, 313, 313, 334, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 335, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 336, 313, 338, 339, 338, 338, 338, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 338, 337, 337, 340, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 341, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 342, 337, 344, 345, 344, 344, 344, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 343, 343, 346, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 347, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 348, 343, 344, 345, 344, 344, 344, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 343, 343, 346, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 349, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 348, 343, 344, 350, 344, 344, 344, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 343, 343, 346, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 347, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 348, 343, 351, 313, 328, 313, 353, 354, 353, 353, 353, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 353, 352, 352, 355, 352, 352, 356, 352, 352, 352, 352, 352, 352, 352, 357, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 358, 352, 360, 354, 360, 360, 360, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 360, 359, 359, 355, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 358, 359, 363, 362, 365, 364, 366, 361, 367, 361, 368, 352, 370, 369, 369, 369, 370, 369, 369, 369, 369, 371, 372, 371, 371, 371, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 370, 369, 369, 369, 369, 369, 371, 369, 369, 373, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 374, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 375, 369, 369, 376, 369, 371, 377, 371, 371, 371, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 371, 377, 378, 379, 380, 381, 382, 384, 383, 386, 387, 386, 386, 386, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 386, 385, 372, 383, 388, 383, 390, 389, 389, 389, 390, 389, 389, 389, 389, 391, 392, 391, 391, 391, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 390, 389, 389, 389, 389, 389, 391, 389, 389, 393, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 394, 389, 391, 395, 391, 391, 391, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 391, 395, 397, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 398, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 399, 396, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 400, 400, 400, 400, 400, 400, 400, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 400, 400, 400, 400, 13, 400, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 400, 400, 400, 400, 400, 13, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 400, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 401, 401, 401, 401, 401, 401, 401, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 401, 401, 401, 401, 17, 401, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 401, 401, 401, 401, 401, 17, 404, 403, 403, 403, 404, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 404, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 405, 405, 405, 405, 405, 405, 405, 405, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 406, 403, 403, 403, 403, 403, 403, 403, 403, 403, 407, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 408, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 409, 403, 403, 410, 403, 411, 412, 414, 414, 414, 414, 414, 414, 414, 414, 413, 415, 415, 415, 415, 415, 415, 415, 415, 413, 413, 416, 416, 42, 42, 42, 416, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 416, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 417, 42, 418, 419, 420, 420, 42, 42, 42, 420, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 420, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 421, 42, 41, 420, 422, 423, 424, 424, 27, 27, 27, 424, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 424, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 425, 27, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 424, 424, 424, 424, 424, 424, 424, 426, 426, 426, 426, 426, 426, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, 426, 426, 426, 426, 426, 426, 424, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 427, 427, 427, 427, 427, 427, 427, 428, 428, 428, 428, 428, 428, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 428, 428, 428, 428, 428, 428, 427, 427, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 420, 420, 420, 420, 420, 420, 420, 429, 429, 429, 429, 429, 429, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 429, 429, 429, 429, 429, 429, 420, 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, 430, 430, 430, 430, 430, 430, 430, 431, 431, 431, 431, 431, 431, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 431, 431, 431, 431, 431, 431, 430, 430, 420, 20, 20, 20, 420, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 420, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 432, 20, 416, 27, 27, 27, 416, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 416, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 29, 27, 416, 433, 433, 433, 416, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 416, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 434, 433, 435, 436, 436, 433, 433, 433, 436, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 436, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 437, 433, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 436, 436, 436, 436, 436, 436, 436, 438, 438, 438, 438, 438, 438, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 438, 438, 438, 438, 438, 438, 436, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 439, 439, 439, 439, 439, 439, 439, 440, 440, 440, 440, 440, 440, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 440, 440, 440, 440, 440, 440, 439, 439, 436, 20, 20, 20, 436, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 436, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 432, 20, 441, 436, 436, 27, 27, 27, 436, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 436, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 29, 27, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 442, 442, 442, 442, 442, 442, 442, 443, 443, 443, 443, 443, 443, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 443, 443, 443, 443, 443, 443, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 444, 442, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 442, 442, 442, 442, 442, 442, 442, 445, 445, 445, 445, 445, 445, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 445, 445, 445, 445, 445, 445, 442, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 442, 442, 442, 442, 442, 442, 442, 446, 446, 446, 446, 446, 446, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 446, 446, 446, 446, 446, 446, 442, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 442, 442, 442, 442, 442, 442, 442, 447, 447, 447, 447, 447, 447, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 447, 447, 447, 447, 447, 447, 442, 448, 451, 450, 450, 450, 451, 450, 450, 450, 450, 452, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 451, 450, 450, 450, 450, 450, 452, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 450, 450, 450, 450, 450, 450, 450, 453, 453, 453, 453, 453, 453, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 453, 453, 453, 453, 453, 453, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 454, 450, 451, 450, 450, 450, 451, 450, 450, 450, 450, 449, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 451, 450, 450, 450, 450, 450, 449, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 450, 450, 450, 450, 450, 450, 450, 455, 455, 455, 455, 455, 455, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 455, 455, 455, 455, 455, 455, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 456, 450, 449, 451, 455, 455, 455, 451, 455, 455, 455, 455, 449, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 451, 455, 455, 455, 455, 455, 449, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 449, 455, 457, 451, 458, 458, 458, 451, 458, 458, 458, 458, 452, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 452, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 449, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 458, 458, 458, 458, 458, 458, 458, 455, 455, 455, 455, 455, 455, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 455, 455, 455, 455, 455, 455, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 458, 458, 458, 458, 458, 458, 458, 460, 460, 460, 460, 460, 460, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 460, 460, 460, 460, 460, 460, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 462, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 458, 458, 458, 458, 458, 458, 458, 463, 463, 463, 463, 463, 463, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 463, 463, 463, 463, 463, 463, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 458, 458, 458, 458, 458, 458, 458, 464, 464, 464, 464, 464, 464, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 464, 464, 464, 464, 464, 464, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 458, 458, 458, 458, 458, 458, 458, 465, 465, 465, 465, 465, 465, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 465, 465, 465, 465, 465, 465, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 458, 458, 458, 458, 458, 458, 458, 466, 466, 466, 466, 466, 466, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 466, 466, 466, 466, 466, 466, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 459, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 461, 458, 451, 458, 458, 458, 451, 458, 458, 458, 458, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 451, 458, 458, 458, 458, 458, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 467, 467, 467, 467, 467, 467, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 449, 458, 468, 469, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 470, 470, 470, 470, 470, 470, 470, 471, 471, 471, 471, 471, 471, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 471, 471, 471, 471, 471, 471, 470, 470, 473, 472, 472, 472, 473, 472, 472, 472, 472, 472, 474, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 473, 472, 472, 472, 472, 472, 472, 472, 472, 475, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 476, 472, 478, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 479, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 480, 477, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 481, 481, 481, 481, 481, 481, 481, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 481, 481, 481, 481, 48, 481, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 481, 481, 481, 481, 481, 48, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 481, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 482, 482, 482, 482, 482, 482, 482, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 482, 482, 482, 482, 52, 482, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 482, 482, 482, 482, 482, 52, 485, 484, 484, 484, 485, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 485, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 486, 486, 486, 486, 486, 486, 486, 486, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 487, 484, 484, 484, 484, 484, 484, 484, 484, 484, 488, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 489, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 490, 484, 484, 491, 484, 492, 493, 495, 495, 495, 495, 495, 495, 495, 495, 494, 496, 496, 496, 496, 496, 496, 496, 496, 494, 494, 497, 497, 77, 77, 77, 497, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 497, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 498, 77, 499, 500, 501, 501, 77, 77, 77, 501, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 501, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 502, 77, 76, 501, 503, 504, 505, 505, 62, 62, 62, 505, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 505, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 506, 62, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 505, 505, 505, 505, 505, 505, 505, 507, 507, 507, 507, 507, 507, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 507, 507, 507, 507, 507, 507, 505, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 508, 508, 508, 508, 508, 508, 508, 509, 509, 509, 509, 509, 509, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 509, 509, 509, 509, 509, 509, 508, 508, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 501, 501, 501, 501, 501, 501, 501, 510, 510, 510, 510, 510, 510, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 510, 510, 510, 510, 510, 510, 501, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 511, 511, 511, 511, 511, 511, 511, 512, 512, 512, 512, 512, 512, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 512, 512, 512, 512, 512, 512, 511, 511, 501, 55, 55, 55, 501, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 501, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 513, 55, 497, 62, 62, 62, 497, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 497, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 497, 514, 514, 514, 497, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 497, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 515, 514, 516, 517, 517, 514, 514, 514, 517, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 517, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 518, 514, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 517, 517, 517, 517, 517, 517, 517, 519, 519, 519, 519, 519, 519, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 519, 519, 519, 519, 519, 519, 517, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 520, 520, 520, 520, 520, 520, 520, 521, 521, 521, 521, 521, 521, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 521, 521, 521, 521, 521, 521, 520, 520, 517, 55, 55, 55, 517, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 517, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 513, 55, 522, 517, 517, 62, 62, 62, 517, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 517, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 523, 523, 523, 523, 523, 523, 523, 524, 524, 524, 524, 524, 524, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 524, 524, 524, 524, 524, 524, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 525, 523, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 523, 523, 523, 523, 523, 523, 523, 526, 526, 526, 526, 526, 526, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 526, 526, 526, 526, 526, 526, 523, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 523, 523, 523, 523, 523, 523, 523, 527, 527, 527, 527, 527, 527, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 527, 527, 527, 527, 527, 527, 523, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 523, 523, 523, 523, 523, 523, 523, 528, 528, 528, 528, 528, 528, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 528, 528, 528, 528, 528, 528, 523, 529, 532, 531, 531, 531, 532, 531, 531, 531, 531, 533, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 532, 531, 531, 531, 531, 531, 533, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 531, 531, 531, 531, 531, 531, 531, 534, 534, 534, 534, 534, 534, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 534, 534, 534, 534, 534, 534, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 535, 531, 532, 531, 531, 531, 532, 531, 531, 531, 531, 530, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 532, 531, 531, 531, 531, 531, 530, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 531, 531, 531, 531, 531, 531, 531, 536, 536, 536, 536, 536, 536, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 536, 536, 536, 536, 536, 536, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 537, 531, 530, 532, 536, 536, 536, 532, 536, 536, 536, 536, 530, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 532, 536, 536, 536, 536, 536, 530, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 530, 536, 538, 532, 539, 539, 539, 532, 539, 539, 539, 539, 533, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 533, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 530, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 530, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 530, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 539, 539, 539, 539, 539, 539, 539, 536, 536, 536, 536, 536, 536, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 536, 536, 536, 536, 536, 536, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 539, 539, 539, 539, 539, 539, 539, 541, 541, 541, 541, 541, 541, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 541, 541, 541, 541, 541, 541, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 534, 534, 534, 534, 534, 534, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 543, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 539, 539, 539, 539, 539, 539, 539, 544, 544, 544, 544, 544, 544, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 544, 544, 544, 544, 544, 544, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 539, 539, 539, 539, 539, 539, 539, 545, 545, 545, 545, 545, 545, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 545, 545, 545, 545, 545, 545, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 539, 539, 539, 539, 539, 539, 539, 546, 546, 546, 546, 546, 546, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 546, 546, 546, 546, 546, 546, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 539, 539, 539, 539, 539, 539, 539, 547, 547, 547, 547, 547, 547, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 547, 547, 547, 547, 547, 547, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 532, 539, 539, 539, 532, 539, 539, 539, 539, 530, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 532, 539, 539, 539, 539, 539, 530, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 548, 548, 548, 548, 548, 548, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 530, 539, 549, 550, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 551, 551, 551, 551, 551, 551, 551, 552, 552, 552, 552, 552, 552, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 552, 552, 552, 552, 552, 552, 551, 551, 554, 553, 553, 553, 554, 553, 553, 553, 553, 555, 556, 555, 555, 555, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 554, 553, 553, 553, 553, 553, 555, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 557, 553, 555, 558, 555, 555, 555, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 555, 558, 559, 560, 560, 560, 559, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 559, 560, 562, 561, 561, 561, 562, 561, 561, 561, 561, 561, 563, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 562, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 564, 561, 565, 566, 566, 566, 565, 566, 566, 566, 566, 566, 567, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 565, 566, 569, 568, 568, 568, 569, 568, 568, 568, 568, 568, 570, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 569, 568, 568, 568, 568, 568, 568, 568, 568, 571, 568, 573, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 574, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 575, 572, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 576, 576, 576, 576, 576, 576, 576, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 576, 576, 576, 576, 83, 576, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 576, 576, 576, 576, 576, 83, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 576, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 577, 577, 577, 577, 577, 577, 577, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 577, 577, 577, 577, 87, 577, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 577, 577, 577, 577, 577, 87, 579, 578, 578, 578, 579, 578, 578, 578, 578, 578, 580, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 579, 578, 582, 581, 581, 581, 582, 581, 581, 581, 581, 583, 584, 583, 583, 583, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 582, 581, 581, 581, 581, 581, 583, 581, 581, 585, 581, 583, 586, 583, 583, 583, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 583, 586, 588, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 589, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 590, 587, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 591, 591, 591, 591, 591, 591, 591, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 591, 591, 591, 591, 90, 591, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 591, 591, 591, 591, 591, 90, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 591, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 592, 592, 592, 592, 592, 592, 592, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 592, 592, 592, 592, 94, 592, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 592, 592, 592, 592, 592, 94, 594, 593, 593, 593, 594, 593, 593, 593, 593, 595, 596, 595, 595, 595, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 594, 593, 593, 593, 593, 593, 595, 593, 595, 597, 595, 595, 595, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 595, 597, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 598, 598, 598, 598, 598, 598, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 598, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 600, 600, 600, 600, 600, 600, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 600, 601, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 602, 98, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 603, 603, 603, 603, 603, 603, 603, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 603, 603, 603, 603, 96, 603, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 603, 603, 603, 603, 603, 96, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 603, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 604, 604, 604, 604, 604, 604, 604, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 604, 604, 604, 604, 101, 604, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 604, 604, 604, 604, 604, 101, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 605, 605, 605, 605, 605, 605, 605, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 605, 605, 605, 605, 103, 605, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 605, 605, 605, 605, 605, 103, 607, 608, 608, 608, 607, 608, 608, 608, 608, 609, 610, 609, 609, 609, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 607, 608, 608, 608, 608, 608, 609, 611, 608, 612, 613, 614, 615, 608, 608, 608, 616, 617, 608, 617, 608, 618, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 619, 608, 620, 621, 622, 608, 608, 623, 624, 623, 623, 625, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 626, 627, 608, 618, 628, 618, 629, 630, 631, 632, 633, 634, 606, 606, 635, 606, 606, 606, 636, 637, 638, 606, 606, 639, 640, 641, 642, 606, 643, 606, 644, 606, 608, 645, 608, 617, 608, 606, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 647, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 646, 646, 646, 647, 646, 647, 646, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 646, 646, 646, 646, 606, 646, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 646, 646, 646, 646, 646, 606, 609, 648, 609, 609, 609, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 609, 648, 649, 618, 650, 650, 618, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 618, 650, 651, 652, 653, 654, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 105, 105, 655, 105, 655, 105, 105, 655, 655, 105, 105, 105, 657, 105, 105, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 105, 105, 105, 105, 105, 105, 105, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 655, 105, 655, 655, 656, 105, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 655, 655, 655, 105, 655, 656, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 659, 659, 659, 659, 659, 659, 659, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 659, 659, 659, 659, 656, 659, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 659, 659, 659, 659, 659, 656, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 659, 660, 650, 618, 650, 618, 650, 618, 650, 662, 661, 618, 663, 650, 618, 650, 664, 618, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 618, 655, 618, 650, 618, 618, 650, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 647, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 646, 646, 646, 647, 646, 647, 646, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 646, 646, 646, 646, 623, 646, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 646, 646, 646, 646, 646, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 623, 666, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 623, 623, 623, 667, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 623, 623, 623, 623, 623, 668, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 669, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 670, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 647, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 647, 665, 647, 665, 623, 623, 623, 669, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 623, 665, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 665, 665, 665, 665, 665, 623, 664, 655, 610, 655, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 672, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 673, 674, 606, 606, 606, 606, 606, 675, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 676, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 677, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 678, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 679, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 680, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 681, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 682, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 683, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 684, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 685, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 686, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 682, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 687, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 686, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 688, 606, 689, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 690, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 691, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 692, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 693, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 694, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 695, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 696, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 697, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 698, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 699, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 700, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 701, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 691, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 702, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 703, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 647, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 704, 704, 704, 647, 704, 647, 704, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 704, 704, 704, 704, 606, 704, 606, 606, 606, 606, 606, 606, 606, 606, 705, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 704, 704, 704, 704, 704, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 706, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 707, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 708, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 709, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 710, 606, 711, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 712, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 684, 606, 606, 606, 713, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 714, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 715, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 700, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 716, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 638, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 698, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 717, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 718, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 719, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 700, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 720, 606, 606, 606, 721, 606, 606, 606, 606, 606, 722, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 722, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 723, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 724, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 725, 726, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 727, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 700, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 728, 606, 606, 729, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 684, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 695, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 730, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 731, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 713, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 732, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 638, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 733, 606, 606, 606, 606, 606, 606, 606, 606, 606, 727, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 695, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 734, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 735, 606, 606, 606, 606, 606, 606, 606, 736, 606, 606, 606, 606, 606, 606, 606, 737, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 713, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 701, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 721, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 738, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 695, 606, 606, 606, 719, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 739, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 740, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 647, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 647, 671, 647, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 606, 671, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 689, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 671, 671, 671, 671, 671, 606, 618, 650, 742, 743, 743, 743, 742, 743, 743, 743, 743, 744, 743, 744, 744, 744, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 742, 743, 743, 743, 743, 743, 744, 743, 743, 745, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 746, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 743, 747, 743, 743, 741, 743, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 743, 743, 743, 743, 743, 741, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 110, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 111, 748, 748, 748, 748, 110, 748, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 748, 748, 748, 748, 109, 748, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 748, 748, 748, 748, 748, 109, 744, 749, 744, 744, 744, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 744, 749, 750, 751, 752, 753, 754, 748, 755, 748, 756, 758, 759, 759, 759, 758, 759, 759, 759, 759, 760, 761, 760, 760, 760, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 758, 759, 759, 759, 759, 759, 760, 762, 759, 763, 759, 764, 765, 759, 759, 759, 766, 767, 759, 767, 759, 764, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 768, 769, 770, 759, 759, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 772, 773, 759, 764, 757, 764, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 759, 774, 759, 767, 759, 757, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 776, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 775, 775, 775, 775, 775, 776, 775, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 775, 775, 775, 775, 757, 775, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 775, 775, 775, 775, 775, 757, 778, 777, 779, 760, 780, 760, 760, 760, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 760, 780, 781, 764, 782, 782, 764, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 764, 782, 783, 784, 785, 786, 764, 782, 764, 782, 764, 782, 764, 787, 782, 764, 782, 789, 764, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 764, 788, 764, 782, 764, 764, 782, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 776, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 790, 790, 790, 790, 790, 776, 790, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 790, 790, 790, 790, 771, 790, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 790, 790, 790, 790, 790, 771, 789, 788, 761, 788, 764, 782, 792, 791, 791, 791, 792, 791, 791, 791, 791, 793, 794, 793, 793, 793, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 792, 791, 791, 791, 791, 791, 793, 791, 791, 795, 791, 120, 796, 791, 797, 791, 798, 120, 151, 799, 153, 120, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 800, 791, 801, 151, 802, 803, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 151, 804, 151, 120, 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, 805, 791, 791, 791, 791, 791, 791, 791, 791, 806, 791, 791, 807, 791, 808, 791, 791, 791, 164, 165, 791, 120, 791, 809, 809, 809, 809, 809, 809, 809, 809, 809, 793, 809, 793, 793, 793, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 793, 809, 809, 809, 809, 146, 147, 809, 148, 809, 149, 150, 151, 152, 153, 146, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 154, 809, 155, 151, 156, 157, 809, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 158, 159, 151, 120, 115, 809, 115, 115, 115, 115, 115, 115, 115, 115, 160, 115, 115, 115, 115, 115, 115, 115, 115, 161, 115, 115, 162, 115, 163, 115, 115, 115, 164, 165, 809, 120, 809, 115, 810, 811, 811, 811, 810, 811, 811, 811, 811, 151, 812, 151, 151, 151, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 810, 811, 811, 811, 811, 811, 151, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 811, 151, 811, 151, 812, 151, 151, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 114, 114, 114, 114, 114, 120, 114, 114, 114, 114, 114, 114, 114, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 114, 151, 812, 151, 151, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 114, 813, 151, 812, 151, 151, 151, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 151, 814, 814, 814, 814, 814, 814, 814, 814, 814, 815, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 151, 814, 151, 812, 151, 151, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 151, 151, 114, 816, 810, 151, 810, 818, 817, 820, 821, 820, 820, 820, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 820, 819, 822, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 116, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 117, 810, 810, 810, 810, 116, 810, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 810, 810, 810, 810, 115, 810, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 810, 810, 810, 810, 810, 115, 823, 151, 812, 151, 151, 151, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 151, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 151, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 120, 810, 824, 825, 826, 827, 828, 829, 151, 812, 151, 151, 151, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 151, 810, 810, 810, 810, 810, 810, 810, 810, 810, 120, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 151, 810, 151, 817, 120, 830, 120, 830, 831, 832, 831, 831, 831, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, 831, 819, 833, 830, 834, 834, 834, 834, 834, 834, 834, 834, 834, 123, 834, 123, 123, 123, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 123, 834, 834, 834, 834, 124, 125, 834, 126, 834, 127, 128, 129, 130, 131, 124, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 132, 834, 133, 129, 134, 135, 834, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 136, 137, 129, 138, 122, 834, 122, 122, 122, 122, 122, 122, 122, 122, 139, 122, 122, 122, 122, 122, 122, 122, 122, 140, 122, 122, 141, 122, 142, 122, 122, 122, 143, 144, 834, 138, 834, 122, 151, 830, 835, 830, 836, 830, 837, 830, 838, 190, 190, 190, 838, 190, 190, 190, 190, 839, 190, 839, 839, 839, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 838, 190, 190, 190, 190, 190, 839, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 190, 840, 190, 190, 192, 190, 192, 192, 192, 196, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 190, 190, 190, 190, 190, 192, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 841, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 190, 189, 189, 189, 189, 841, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 189, 189, 189, 189, 192, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 189, 189, 189, 189, 189, 192, 842, 842, 842, 842, 842, 842, 842, 842, 842, 193, 842, 193, 193, 193, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 193, 842, 842, 842, 842, 842, 842, 842, 194, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 842, 195, 842, 842, 192, 842, 192, 192, 192, 196, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 842, 842, 842, 842, 842, 192, 843, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 841, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 190, 842, 842, 842, 842, 841, 842, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 842, 842, 842, 842, 192, 842, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 844, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 842, 842, 842, 842, 842, 192, 197, 842, 846, 845, 845, 845, 846, 845, 845, 845, 845, 847, 845, 847, 847, 847, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 846, 845, 845, 845, 845, 845, 847, 845, 845, 848, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 849, 845, 845, 845, 845, 845, 845, 845, 850, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 851, 845, 847, 852, 847, 847, 847, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 847, 852, 853, 854, 855, 856, 858, 857, 859, 860, 857, 861, 863, 864, 864, 864, 863, 864, 864, 864, 864, 865, 866, 865, 865, 865, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 863, 864, 864, 864, 864, 864, 865, 864, 864, 867, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 864, 868, 864, 864, 862, 864, 862, 862, 862, 862, 862, 862, 862, 862, 869, 862, 862, 862, 862, 862, 862, 862, 862, 870, 862, 862, 871, 862, 872, 862, 862, 862, 864, 864, 864, 864, 864, 862, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 873, 873, 873, 873, 873, 873, 873, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 873, 873, 873, 873, 862, 873, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 873, 873, 873, 873, 873, 862, 865, 874, 865, 865, 865, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, 865, 874, 875, 876, 877, 878, 879, 881, 880, 882, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 884, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 885, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 886, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 887, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 888, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 884, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 889, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 890, 862, 862, 862, 862, 862, 862, 862, 891, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 892, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 893, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 884, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 894, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 884, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 895, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 896, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 883, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 862, 883, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 888, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 883, 883, 883, 883, 883, 862, 898, 221, 221, 221, 898, 221, 221, 221, 221, 899, 900, 899, 899, 899, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 898, 221, 221, 221, 221, 221, 899, 901, 221, 902, 221, 903, 904, 221, 905, 221, 906, 907, 221, 908, 909, 910, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 911, 221, 912, 913, 914, 915, 221, 916, 917, 916, 916, 918, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 919, 920, 221, 921, 922, 221, 923, 924, 925, 926, 927, 928, 897, 897, 929, 897, 897, 897, 930, 931, 932, 897, 897, 933, 934, 935, 936, 897, 937, 897, 938, 897, 939, 940, 221, 921, 221, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 945, 944, 944, 946, 944, 947, 949, 950, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 951, 948, 953, 952, 954, 955, 956, 899, 957, 899, 899, 899, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 899, 957, 959, 958, 961, 962, 961, 961, 961, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 961, 960, 221, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 221, 963, 964, 965, 966, 967, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 969, 969, 969, 969, 969, 969, 969, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 969, 969, 969, 969, 969, 969, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 969, 969, 969, 969, 969, 968, 972, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 221, 971, 973, 975, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 221, 974, 221, 211, 222, 223, 222, 222, 222, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 222, 971, 971, 224, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 971, 971, 971, 221, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 226, 971, 239, 240, 239, 239, 239, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 238, 238, 241, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 243, 238, 222, 223, 222, 222, 222, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 222, 971, 971, 224, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 971, 971, 971, 221, 221, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 226, 971, 977, 963, 979, 978, 981, 980, 963, 982, 982, 982, 963, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 963, 982, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 984, 985, 963, 986, 247, 987, 985, 963, 963, 988, 989, 963, 989, 963, 247, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 990, 963, 991, 992, 993, 963, 994, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 995, 963, 963, 247, 983, 247, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 963, 996, 963, 997, 963, 983, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 999, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 998, 998, 998, 1000, 998, 999, 998, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 998, 998, 998, 998, 983, 998, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 998, 998, 998, 998, 998, 983, 1002, 1001, 1003, 1005, 1006, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1007, 1004, 1009, 1010, 1008, 1011, 1012, 1013, 1014, 247, 998, 998, 1015, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 247, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 998, 998, 998, 998, 998, 998, 998, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 998, 998, 998, 998, 246, 998, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 998, 998, 998, 998, 998, 246, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 998, 1016, 998, 247, 998, 247, 998, 247, 1017, 998, 247, 998, 247, 998, 247, 247, 998, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1018, 1018, 1018, 1018, 1018, 1018, 1021, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1018, 1018, 1018, 1018, 1019, 1018, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1018, 1018, 1018, 1018, 1018, 1019, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1022, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1024, 1024, 1024, 1024, 1025, 1024, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1024, 1024, 1024, 1024, 1024, 1025, 1016, 998, 1015, 998, 1027, 1028, 963, 1029, 262, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 263, 252, 264, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 263, 253, 263, 266, 221, 963, 921, 221, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 221, 963, 221, 972, 963, 1033, 1032, 1032, 1032, 1033, 1032, 1032, 1032, 1032, 1034, 1035, 1034, 1034, 1034, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1033, 1032, 1032, 1032, 1032, 1032, 1034, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1032, 1037, 1032, 1032, 1036, 1032, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1032, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1038, 1038, 1038, 1038, 1039, 1038, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1038, 1038, 1038, 1038, 1038, 1039, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1040, 1040, 1040, 1040, 1041, 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1040, 1040, 1040, 1040, 1040, 1041, 1044, 1043, 1043, 1043, 1044, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1044, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1046, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1047, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1048, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1049, 1043, 1043, 1050, 1043, 1051, 1052, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1053, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1053, 1053, 1056, 1056, 290, 290, 290, 1056, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 1056, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 1057, 290, 1058, 1059, 1060, 1060, 290, 290, 290, 1060, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 1060, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 1061, 290, 289, 1060, 1062, 1063, 1064, 1064, 275, 275, 275, 1064, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 1064, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 1065, 275, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1066, 1066, 1066, 1066, 1066, 1066, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1066, 1066, 1066, 1066, 1066, 1066, 1064, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1068, 1068, 1068, 1068, 1068, 1068, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1068, 1068, 1068, 1068, 1068, 1068, 1067, 1067, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1069, 1069, 1069, 1069, 1069, 1069, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1069, 1069, 1069, 1069, 1069, 1069, 1060, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071, 1071, 1071, 1071, 1071, 1071, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071, 1071, 1071, 1071, 1071, 1071, 1070, 1070, 1060, 268, 268, 268, 1060, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1060, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1072, 268, 1056, 275, 275, 275, 1056, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 1056, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 277, 275, 1056, 1073, 1073, 1073, 1056, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1056, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1074, 1073, 1075, 1076, 1076, 1073, 1073, 1073, 1076, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1076, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1077, 1073, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1078, 1078, 1078, 1078, 1078, 1078, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1078, 1078, 1078, 1078, 1078, 1078, 1076, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1080, 1080, 1080, 1080, 1080, 1080, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1080, 1080, 1080, 1080, 1080, 1080, 1079, 1079, 1076, 268, 268, 268, 1076, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1076, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1072, 268, 1081, 1076, 1076, 275, 275, 275, 1076, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 1076, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 277, 275, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1083, 1083, 1083, 1083, 1083, 1083, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1083, 1083, 1083, 1083, 1083, 1083, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1084, 1082, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1085, 1085, 1085, 1085, 1085, 1085, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1085, 1085, 1085, 1085, 1085, 1085, 1082, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1086, 1086, 1086, 1086, 1086, 1086, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1086, 1086, 1086, 1086, 1086, 1086, 1082, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1087, 1087, 1087, 1087, 1087, 1087, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1087, 1087, 1087, 1087, 1087, 1087, 1082, 1088, 1091, 1090, 1090, 1090, 1091, 1090, 1090, 1090, 1090, 1092, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1091, 1090, 1090, 1090, 1090, 1090, 1092, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1093, 1093, 1093, 1093, 1093, 1093, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1093, 1093, 1093, 1093, 1093, 1093, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1094, 1090, 1091, 1090, 1090, 1090, 1091, 1090, 1090, 1090, 1090, 1089, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1091, 1090, 1090, 1090, 1090, 1090, 1089, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1095, 1095, 1095, 1095, 1095, 1095, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1095, 1095, 1095, 1095, 1095, 1095, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1096, 1090, 1089, 1091, 1095, 1095, 1095, 1091, 1095, 1095, 1095, 1095, 1089, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1091, 1095, 1095, 1095, 1095, 1095, 1089, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1089, 1095, 1097, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1092, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1092, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1089, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1095, 1095, 1095, 1095, 1095, 1095, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1095, 1095, 1095, 1095, 1095, 1095, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1101, 1101, 1101, 1101, 1101, 1101, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1101, 1101, 1101, 1101, 1101, 1101, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1103, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1104, 1104, 1104, 1104, 1104, 1104, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1104, 1104, 1104, 1104, 1104, 1104, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1105, 1105, 1105, 1105, 1105, 1105, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1105, 1105, 1105, 1105, 1105, 1105, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1106, 1106, 1106, 1106, 1106, 1106, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1106, 1106, 1106, 1106, 1106, 1106, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1107, 1107, 1107, 1107, 1107, 1107, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1107, 1107, 1107, 1107, 1107, 1107, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1100, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1089, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1110, 1110, 1110, 1110, 1110, 1110, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1110, 1110, 1110, 1110, 1110, 1110, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1111, 1111, 1111, 1111, 1111, 1111, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1111, 1111, 1111, 1111, 1111, 1111, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1112, 1112, 1112, 1112, 1112, 1112, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1112, 1112, 1112, 1112, 1112, 1112, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1113, 1113, 1113, 1113, 1113, 1113, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1113, 1113, 1113, 1113, 1113, 1113, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1114, 1114, 1114, 1114, 1114, 1114, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1114, 1114, 1114, 1114, 1114, 1114, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1115, 1115, 1115, 1115, 1115, 1115, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1115, 1115, 1115, 1115, 1115, 1115, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1116, 1116, 1116, 1116, 1116, 1116, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1116, 1116, 1116, 1116, 1116, 1116, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1089, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1117, 1117, 1117, 1117, 1117, 1117, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1117, 1117, 1117, 1117, 1117, 1117, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1118, 1118, 1118, 1118, 1118, 1118, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1118, 1118, 1118, 1118, 1118, 1118, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1119, 1119, 1119, 1119, 1119, 1119, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1119, 1119, 1119, 1119, 1119, 1119, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1120, 1120, 1120, 1120, 1120, 1120, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1120, 1120, 1120, 1120, 1120, 1120, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1091, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1091, 1098, 1098, 1098, 1098, 1098, 1109, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1108, 1108, 1108, 1108, 1108, 1108, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1102, 1098, 1121, 1122, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1124, 1124, 1124, 1124, 1124, 1124, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1124, 1124, 1124, 1124, 1124, 1124, 1123, 1123, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 296, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 211, 211, 298, 211, 296, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 211, 211, 211, 211, 295, 211, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 211, 211, 211, 211, 211, 295, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 296, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 963, 963, 298, 963, 296, 963, 295, 295, 295, 295, 1125, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 963, 963, 963, 963, 295, 963, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 963, 963, 963, 963, 963, 295, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 296, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 297, 963, 963, 298, 963, 296, 963, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 1126, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 963, 963, 963, 963, 295, 963, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 963, 963, 963, 963, 963, 295, 1127, 1128, 963, 958, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 1129, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 1130, 1131, 897, 897, 897, 897, 897, 1132, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1133, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 1134, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1135, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 1136, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1137, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1138, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 1139, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 1140, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 1141, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 296, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 211, 211, 298, 211, 296, 211, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 211, 211, 211, 211, 897, 211, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 211, 211, 211, 211, 211, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1142, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1143, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 1139, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1144, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1143, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1145, 897, 1146, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1147, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 1148, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1149, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1150, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 1151, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1152, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1153, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 1154, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 1155, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1156, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1157, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 1158, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1148, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1159, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1160, 897, 1161, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1162, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1141, 897, 897, 897, 1159, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1163, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1164, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1157, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 1165, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 932, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1155, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 1166, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1167, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 1168, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1169, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1157, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1170, 897, 897, 897, 1171, 897, 897, 897, 897, 897, 1172, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1172, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1173, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 1174, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1175, 1176, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 1177, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1178, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1179, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1182, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1183, 1180, 1180, 1184, 1180, 1182, 1180, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1180, 1180, 1180, 1180, 1181, 1180, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1180, 1180, 1180, 1180, 1180, 1181, 949, 1185, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 951, 948, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1186, 897, 897, 1187, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1141, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1152, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1188, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1189, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1159, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1190, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 932, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 1191, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1192, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1152, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1157, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1193, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 1194, 897, 897, 897, 897, 897, 897, 897, 1195, 897, 897, 897, 897, 897, 897, 897, 1196, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1159, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1197, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1198, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1166, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1199, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1166, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 1200, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1152, 897, 897, 897, 1201, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1202, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1166, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 1203, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 1204, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 941, 942, 942, 942, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 296, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 297, 941, 941, 298, 941, 296, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 943, 941, 941, 897, 941, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1146, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 941, 941, 941, 941, 941, 897, 1205, 221, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 1206, 963, 1208, 1207, 1207, 1207, 1208, 1207, 1207, 1207, 1207, 1209, 1210, 1209, 1209, 1209, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1208, 1207, 1207, 1207, 1207, 1207, 1209, 1207, 1207, 1211, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1212, 1207, 1209, 1213, 1209, 1209, 1209, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1209, 1213, 1214, 1215, 1216, 1217, 1218, 1220, 1219, 1221, 1223, 1224, 1224, 1224, 1223, 1224, 1224, 1224, 1224, 1225, 1226, 1225, 1225, 1225, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1223, 1224, 1224, 1224, 1224, 1224, 1225, 1224, 1227, 1228, 1224, 1224, 1224, 1227, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1224, 1229, 1224, 1224, 1222, 1224, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1224, 1224, 1224, 1224, 1224, 1222, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 304, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 305, 1230, 1230, 1230, 1230, 304, 1230, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 1230, 1230, 1230, 1230, 303, 1230, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 1230, 1230, 1230, 1230, 1230, 303, 1225, 1231, 1225, 1225, 1225, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1225, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1230, 1238, 1240, 1241, 1241, 1241, 1240, 1241, 1241, 1241, 1241, 1242, 1243, 1242, 1242, 1242, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1240, 1241, 1241, 1241, 1241, 1241, 1242, 1244, 1245, 1246, 1247, 1248, 1249, 1245, 1250, 1251, 1252, 1248, 1253, 1254, 1255, 1248, 1256, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1265, 1265, 1267, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1268, 1269, 1270, 1248, 1271, 1245, 1272, 1273, 1274, 1275, 1276, 1277, 1239, 1239, 1278, 1239, 1239, 1239, 1279, 1280, 1281, 1239, 1239, 1282, 1283, 1284, 1285, 1239, 1286, 1239, 1287, 1239, 1288, 1289, 1290, 1291, 1241, 1239, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1292, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 313, 313, 313, 313, 313, 1292, 313, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 313, 313, 313, 313, 1239, 313, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 313, 313, 313, 313, 313, 1239, 1294, 1293, 1295, 1242, 1296, 1242, 1242, 1242, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1242, 1296, 1297, 1299, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1299, 1298, 1300, 1301, 1302, 1303, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 308, 308, 1304, 308, 1304, 308, 308, 1304, 1304, 308, 308, 308, 1305, 308, 308, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 308, 308, 308, 308, 308, 308, 308, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1304, 308, 1304, 1304, 325, 308, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1304, 1304, 1304, 308, 1304, 325, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1307, 1307, 1307, 1307, 325, 1307, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1307, 1307, 1307, 1307, 1307, 325, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1307, 1308, 313, 1248, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1310, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1308, 1309, 1311, 1312, 1248, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1308, 1313, 1308, 1314, 1309, 1316, 1315, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 1315, 1318, 1317, 1319, 1317, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1321, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1322, 1320, 1320, 1320, 1320, 1320, 1321, 1320, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 310, 1320, 1324, 1323, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1326, 1323, 1327, 1328, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1329, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1330, 1323, 1323, 1323, 1323, 1323, 1323, 1331, 1323, 1323, 1326, 1323, 1327, 1328, 1323, 1323, 1323, 1332, 1323, 1323, 1323, 1323, 1323, 1329, 1323, 1323, 1333, 1323, 1323, 1323, 1323, 1323, 1330, 1323, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1335, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1336, 1334, 1334, 1334, 1334, 1334, 1335, 1334, 1334, 1334, 1337, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1338, 1334, 1339, 313, 1339, 313, 313, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 313, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1339, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1341, 1340, 1343, 1342, 1344, 1346, 1345, 1345, 1345, 1347, 1345, 1348, 1349, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1331, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1332, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1333, 1323, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1351, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1332, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1333, 1323, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1354, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1357, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1359, 1358, 1360, 1362, 1361, 1361, 1361, 1363, 1361, 1365, 1364, 1366, 1367, 1369, 1369, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1370, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1371, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1372, 1368, 1373, 1373, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1374, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1373, 1373, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1357, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1377, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1378, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1379, 1375, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1382, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1383, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1384, 1380, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1386, 1386, 1386, 1386, 1386, 1386, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1387, 1385, 1386, 1386, 1386, 1386, 1386, 1386, 1385, 1385, 1388, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1389, 1385, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1391, 1352, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1357, 1352, 1390, 1390, 1390, 1390, 1390, 1390, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1393, 1392, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1395, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1396, 1392, 1392, 1392, 1392, 1392, 1395, 1392, 1392, 1392, 1397, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1398, 1392, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1400, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1397, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1398, 1392, 1401, 1352, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1403, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1404, 1352, 1352, 1352, 1352, 1352, 1403, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1357, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1355, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1356, 1352, 1310, 1317, 1248, 1405, 1309, 1299, 1309, 1406, 1407, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1299, 1317, 1299, 1309, 1299, 1248, 1309, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1304, 1304, 1304, 1304, 1304, 1304, 1408, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1304, 1304, 1304, 1304, 325, 1304, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1304, 1304, 1304, 1304, 1304, 325, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1292, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 313, 313, 313, 313, 1292, 313, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 313, 313, 313, 313, 1265, 313, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 313, 313, 313, 313, 313, 1265, 1410, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1265, 1412, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1413, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1414, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1415, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1416, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1292, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1409, 1411, 1411, 1411, 1411, 1292, 1411, 1265, 1265, 1265, 1415, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1265, 1411, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1411, 1411, 1411, 1411, 1411, 1265, 1417, 1419, 1418, 1420, 1421, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1423, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1424, 1425, 1239, 1239, 1239, 1239, 1239, 1426, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1427, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1428, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1429, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1430, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1431, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1432, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1433, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1434, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1435, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1436, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1437, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1438, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1439, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1440, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1441, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1437, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1442, 1239, 1443, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1444, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1445, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1446, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1448, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1449, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1450, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1451, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1452, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1453, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1454, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1455, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1456, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1457, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1458, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1459, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1460, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 327, 328, 327, 327, 327, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 327, 1292, 1461, 329, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1461, 1461, 330, 1461, 1461, 1292, 1461, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1461, 331, 1461, 1461, 1239, 1461, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1461, 1461, 1461, 1461, 1461, 1239, 344, 345, 344, 344, 344, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 343, 343, 346, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 349, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 348, 343, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1463, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1464, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1465, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1292, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1466, 1466, 1466, 1466, 1466, 1292, 1466, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1466, 1466, 1466, 1466, 1239, 1466, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1467, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1466, 1466, 1466, 1466, 1466, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1468, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1469, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1470, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1471, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1472, 1239, 1473, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1474, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1475, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1440, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1476, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1477, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1457, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1478, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1281, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1479, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1480, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1440, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1481, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1447, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1482, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1483, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1484, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1457, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1485, 1239, 1239, 1239, 1486, 1239, 1239, 1239, 1239, 1239, 1487, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1488, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1454, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1440, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1489, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1490, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1491, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1492, 1493, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1440, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1494, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1495, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1481, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1496, 1239, 1239, 1497, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1440, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1498, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1454, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1499, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1500, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1501, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1440, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1502, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1503, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1489, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1504, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1505, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1451, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1480, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1506, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1507, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1508, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1509, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1510, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1446, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1511, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1512, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1481, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1513, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1481, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1514, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1451, 1239, 1239, 1239, 1515, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1516, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1481, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1517, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1518, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1519, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1292, 1422, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1239, 1422, 1239, 1239, 1239, 1489, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1422, 1422, 1422, 1422, 1422, 1239, 1520, 1308, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1248, 1298, 1521, 1523, 1522, 1523, 1523, 1523, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1523, 1522, 1522, 1524, 1522, 1522, 1525, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 357, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1526, 1522, 353, 354, 353, 353, 353, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 353, 1527, 1527, 355, 1527, 1527, 356, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 357, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 358, 1527, 360, 1528, 360, 360, 360, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 360, 1528, 1528, 355, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 358, 1528, 1530, 1529, 1532, 1531, 363, 362, 368, 1527, 366, 1527, 1534, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1535, 1533, 1534, 1533, 1534, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1537, 1533, 1534, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1538, 1533, 1534, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1539, 1533, 1541, 1539, 0]]; $send(self, '_lex_indicies=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6629,7 +6629,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$private("_lex_trans_targs", "_lex_trans_targs="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[187, 2, 3, 4, 193, 6, 7, 8, 9, 10, 187, 187, 196, 199, 196, 12, 200, 201, 14, 196, 208, 209, 212, 213, 225, 222, 214, 215, 216, 19, 217, 218, 219, 227, 229, 230, 234, 235, 236, 231, 25, 18, 210, 211, 27, 259, 260, 262, 264, 262, 30, 265, 266, 32, 262, 273, 274, 277, 278, 290, 287, 279, 280, 281, 37, 282, 283, 284, 292, 294, 295, 299, 300, 301, 296, 43, 36, 275, 276, 45, 324, 325, 332, 334, 332, 48, 335, 336, 50, 338, 341, 338, 52, 342, 343, 54, 349, 348, 0, 56, 350, 351, 58, 352, 353, 353, 353, 353, 466, 61, 62, 63, 466, 65, 466, 495, 66, 67, 495, 495, 499, 499, 71, 66, 72, 497, 498, 500, 501, 499, 495, 502, 503, 505, 68, 69, 506, 507, 70, 499, 73, 74, 79, 86, 509, 510, 72, 497, 498, 500, 501, 499, 495, 502, 503, 505, 68, 69, 506, 507, 70, 73, 74, 79, 86, 509, 510, 508, 75, 76, 77, 78, 80, 81, 84, 82, 83, 85, 87, 88, 495, 90, 91, 92, 94, 97, 95, 96, 98, 100, 526, 526, 526, 527, 102, 529, 103, 530, 104, 527, 102, 529, 103, 530, 564, 105, 564, 106, 107, 105, 564, 106, 564, 564, 564, 110, 111, 112, 113, 575, 564, 564, 564, 116, 117, 118, 564, 121, 116, 117, 118, 564, 121, 119, 119, 117, 118, 585, 120, 119, 119, 117, 118, 585, 120, 117, 564, 602, 564, 123, 603, 609, 127, 618, 619, 132, 133, 127, 128, 617, 128, 617, 564, 129, 130, 131, 620, 134, 564, 634, 635, 638, 639, 651, 648, 640, 641, 642, 139, 643, 644, 645, 653, 655, 656, 660, 661, 662, 657, 145, 138, 636, 637, 147, 698, 699, 149, 566, 108, 568, 151, 152, 701, 803, 154, 155, 156, 803, 811, 811, 811, 159, 833, 832, 811, 835, 837, 811, 164, 165, 166, 841, 811, 168, 169, 852, 821, 874, 172, 173, 174, 178, 179, 172, 173, 174, 178, 179, 175, 175, 173, 174, 176, 177, 175, 175, 173, 174, 176, 177, 922, 173, 811, 991, 180, 993, 182, 186, 994, 184, 991, 181, 991, 183, 993, 183, 993, 185, 993, 991, 187, 187, 188, 189, 190, 192, 194, 195, 187, 187, 187, 191, 187, 191, 187, 1, 187, 187, 187, 5, 196, 196, 197, 196, 198, 202, 196, 196, 11, 13, 196, 196, 196, 196, 203, 204, 205, 15, 21, 26, 237, 28, 196, 196, 196, 206, 207, 196, 16, 196, 196, 196, 17, 196, 196, 196, 20, 220, 196, 221, 223, 196, 224, 226, 228, 22, 196, 196, 23, 232, 196, 233, 24, 196, 238, 242, 239, 240, 241, 196, 196, 243, 244, 247, 249, 258, 245, 246, 196, 248, 250, 252, 251, 196, 253, 254, 255, 256, 257, 196, 196, 196, 261, 262, 262, 262, 263, 267, 262, 29, 31, 262, 262, 262, 262, 268, 269, 270, 33, 39, 44, 302, 46, 262, 262, 262, 271, 272, 262, 34, 262, 262, 262, 35, 262, 262, 262, 38, 285, 262, 286, 288, 262, 289, 291, 293, 40, 262, 262, 41, 297, 262, 298, 42, 262, 303, 307, 304, 305, 306, 262, 262, 308, 309, 312, 314, 323, 310, 311, 262, 313, 315, 317, 316, 262, 318, 319, 320, 321, 322, 262, 262, 262, 326, 327, 327, 328, 327, 329, 327, 327, 327, 330, 330, 330, 331, 330, 330, 330, 332, 332, 332, 333, 332, 47, 49, 332, 332, 332, 337, 337, 337, 338, 338, 339, 338, 340, 338, 338, 51, 53, 338, 338, 338, 344, 344, 345, 344, 344, 346, 347, 346, 55, 57, 348, 348, 348, 354, 353, 353, 355, 356, 357, 358, 360, 363, 364, 365, 366, 353, 367, 368, 370, 372, 373, 374, 378, 380, 381, 382, 398, 403, 410, 415, 422, 429, 432, 433, 437, 431, 441, 449, 453, 455, 460, 462, 465, 353, 353, 353, 353, 353, 353, 359, 353, 359, 353, 361, 59, 362, 353, 60, 353, 353, 369, 371, 353, 375, 376, 377, 373, 379, 353, 383, 384, 393, 396, 385, 386, 387, 388, 389, 390, 391, 392, 354, 394, 395, 397, 399, 402, 400, 401, 404, 407, 405, 406, 408, 409, 411, 413, 412, 414, 416, 417, 353, 418, 419, 420, 421, 353, 423, 426, 424, 425, 427, 428, 430, 434, 435, 436, 438, 440, 439, 442, 443, 444, 446, 445, 447, 448, 450, 451, 452, 454, 456, 457, 458, 459, 461, 463, 464, 467, 466, 466, 468, 469, 471, 472, 466, 466, 466, 470, 466, 470, 64, 473, 466, 475, 474, 474, 478, 479, 480, 481, 474, 483, 484, 485, 486, 488, 490, 491, 492, 493, 494, 474, 476, 474, 477, 474, 474, 474, 474, 474, 482, 474, 482, 487, 474, 489, 474, 495, 495, 496, 511, 512, 498, 514, 515, 502, 516, 517, 518, 519, 520, 522, 523, 524, 525, 495, 495, 495, 495, 495, 495, 499, 504, 495, 495, 495, 495, 495, 495, 495, 495, 495, 513, 495, 513, 495, 495, 495, 495, 521, 495, 89, 93, 99, 526, 528, 531, 101, 526, 526, 527, 532, 532, 533, 534, 536, 538, 539, 532, 532, 535, 532, 535, 532, 537, 532, 532, 532, 541, 540, 540, 542, 543, 544, 546, 548, 549, 554, 561, 540, 540, 540, 540, 545, 540, 545, 540, 547, 540, 540, 541, 550, 551, 552, 553, 555, 556, 559, 557, 558, 560, 562, 563, 565, 564, 573, 574, 576, 577, 579, 580, 581, 582, 584, 586, 587, 590, 591, 616, 622, 623, 624, 701, 702, 703, 704, 705, 583, 707, 724, 729, 736, 741, 743, 749, 752, 753, 757, 751, 761, 772, 776, 779, 787, 791, 794, 795, 564, 105, 106, 564, 108, 567, 564, 564, 569, 571, 572, 564, 570, 564, 564, 564, 564, 564, 109, 564, 564, 564, 564, 564, 578, 564, 578, 564, 564, 114, 564, 115, 564, 564, 583, 564, 588, 564, 589, 564, 564, 564, 592, 601, 564, 122, 604, 605, 606, 564, 607, 124, 610, 611, 125, 614, 615, 564, 593, 595, 564, 594, 564, 564, 596, 599, 600, 564, 597, 598, 564, 564, 564, 564, 564, 564, 608, 564, 602, 612, 613, 564, 612, 564, 602, 612, 126, 621, 564, 564, 564, 625, 564, 564, 564, 626, 628, 564, 627, 564, 627, 564, 629, 630, 631, 135, 141, 146, 663, 148, 564, 564, 564, 632, 633, 564, 136, 564, 564, 564, 137, 564, 564, 564, 140, 646, 564, 647, 649, 564, 650, 652, 654, 142, 564, 564, 143, 658, 564, 659, 144, 564, 664, 668, 665, 666, 667, 564, 564, 669, 670, 673, 684, 697, 671, 672, 564, 674, 675, 676, 678, 677, 564, 679, 680, 681, 682, 683, 685, 692, 686, 687, 688, 689, 690, 691, 693, 694, 695, 696, 564, 564, 564, 700, 150, 153, 564, 706, 708, 709, 719, 722, 710, 711, 712, 713, 714, 715, 716, 717, 718, 720, 721, 723, 725, 728, 726, 727, 730, 733, 731, 732, 734, 735, 737, 739, 738, 740, 742, 744, 746, 745, 747, 748, 750, 718, 754, 755, 756, 758, 760, 759, 762, 763, 764, 769, 765, 766, 767, 564, 565, 566, 108, 768, 571, 770, 771, 773, 774, 775, 777, 778, 780, 781, 782, 785, 783, 784, 786, 788, 789, 790, 792, 793, 564, 583, 796, 796, 797, 798, 799, 801, 796, 796, 796, 800, 796, 800, 796, 802, 796, 804, 803, 803, 805, 806, 803, 807, 809, 803, 803, 803, 803, 808, 803, 808, 810, 803, 812, 811, 811, 815, 816, 817, 811, 818, 820, 823, 824, 825, 826, 827, 811, 828, 829, 834, 862, 866, 811, 867, 869, 871, 811, 872, 873, 875, 879, 881, 882, 884, 885, 903, 908, 915, 923, 930, 937, 942, 943, 947, 941, 952, 962, 968, 971, 980, 984, 988, 989, 990, 823, 813, 811, 814, 811, 811, 811, 811, 811, 811, 819, 811, 819, 811, 157, 822, 811, 811, 811, 811, 811, 811, 811, 811, 811, 830, 811, 831, 811, 811, 158, 160, 811, 161, 843, 854, 857, 836, 858, 859, 844, 848, 850, 811, 836, 161, 838, 840, 162, 811, 838, 811, 839, 811, 811, 163, 842, 811, 811, 845, 847, 811, 845, 846, 848, 850, 847, 811, 849, 811, 811, 851, 853, 811, 167, 811, 811, 811, 855, 847, 848, 850, 855, 856, 811, 845, 847, 848, 850, 811, 845, 847, 848, 850, 811, 860, 847, 848, 850, 860, 861, 811, 161, 862, 836, 863, 848, 850, 864, 847, 161, 864, 836, 865, 868, 870, 811, 170, 171, 811, 811, 876, 877, 878, 873, 880, 811, 811, 883, 811, 811, 811, 886, 887, 896, 901, 888, 889, 890, 891, 892, 893, 894, 895, 812, 897, 898, 899, 900, 812, 902, 904, 907, 905, 906, 812, 812, 909, 912, 910, 911, 913, 914, 812, 916, 918, 917, 919, 920, 921, 811, 811, 924, 812, 925, 811, 926, 927, 928, 929, 813, 931, 934, 932, 933, 935, 936, 938, 939, 940, 812, 944, 945, 946, 948, 950, 951, 949, 812, 953, 954, 955, 958, 956, 957, 959, 960, 961, 963, 965, 964, 966, 967, 969, 970, 972, 973, 975, 978, 974, 976, 977, 979, 981, 982, 983, 985, 986, 987, 811, 811, 991, 992, 996, 997, 998, 991, 991, 991, 995, 991, 991, 1000, 999, 1001, 999, 1002, 1003, 1004, 999, 999]]; + $writer = [[186, 2, 3, 4, 192, 6, 7, 8, 9, 10, 186, 186, 195, 198, 195, 12, 199, 200, 14, 195, 207, 208, 211, 212, 224, 221, 213, 214, 215, 19, 216, 217, 218, 226, 228, 229, 233, 234, 235, 230, 25, 18, 209, 210, 27, 258, 259, 261, 263, 261, 30, 264, 265, 32, 261, 272, 273, 276, 277, 289, 286, 278, 279, 280, 37, 281, 282, 283, 291, 293, 294, 298, 299, 300, 295, 43, 36, 274, 275, 45, 323, 324, 331, 333, 331, 48, 334, 335, 50, 337, 340, 337, 52, 341, 342, 54, 348, 347, 0, 56, 349, 350, 58, 351, 352, 352, 352, 352, 465, 61, 62, 63, 465, 465, 494, 65, 66, 494, 494, 498, 498, 70, 65, 71, 496, 497, 499, 500, 498, 494, 501, 502, 504, 67, 68, 505, 506, 69, 498, 72, 73, 78, 85, 508, 509, 71, 496, 497, 499, 500, 498, 494, 501, 502, 504, 67, 68, 505, 506, 69, 72, 73, 78, 85, 508, 509, 507, 74, 75, 76, 77, 79, 80, 83, 81, 82, 84, 86, 87, 494, 89, 90, 91, 93, 96, 94, 95, 97, 99, 525, 525, 525, 526, 101, 528, 102, 529, 103, 526, 101, 528, 102, 529, 563, 104, 563, 105, 106, 104, 563, 105, 563, 563, 563, 109, 110, 111, 112, 574, 563, 563, 563, 115, 116, 117, 563, 120, 115, 116, 117, 563, 120, 118, 118, 116, 117, 584, 119, 118, 118, 116, 117, 584, 119, 116, 563, 601, 563, 122, 602, 608, 126, 617, 618, 131, 132, 126, 127, 616, 127, 616, 563, 128, 129, 130, 619, 133, 563, 633, 634, 637, 638, 650, 647, 639, 640, 641, 138, 642, 643, 644, 652, 654, 655, 659, 660, 661, 656, 144, 137, 635, 636, 146, 697, 698, 148, 565, 107, 567, 150, 151, 700, 802, 153, 154, 155, 802, 810, 810, 810, 158, 832, 831, 810, 834, 836, 810, 163, 164, 165, 840, 810, 167, 168, 851, 820, 873, 171, 172, 173, 177, 178, 171, 172, 173, 177, 178, 174, 174, 172, 173, 175, 176, 174, 174, 172, 173, 175, 176, 921, 172, 810, 990, 179, 992, 181, 185, 993, 183, 990, 180, 990, 182, 992, 182, 992, 184, 992, 990, 186, 186, 187, 188, 189, 191, 193, 194, 186, 186, 186, 190, 186, 190, 186, 1, 186, 186, 186, 5, 195, 195, 196, 195, 197, 201, 195, 195, 11, 13, 195, 195, 195, 195, 202, 203, 204, 15, 21, 26, 236, 28, 195, 195, 195, 205, 206, 195, 16, 195, 195, 195, 17, 195, 195, 195, 20, 219, 195, 220, 222, 195, 223, 225, 227, 22, 195, 195, 23, 231, 195, 232, 24, 195, 237, 241, 238, 239, 240, 195, 195, 242, 243, 246, 248, 257, 244, 245, 195, 247, 249, 251, 250, 195, 252, 253, 254, 255, 256, 195, 195, 195, 260, 261, 261, 261, 262, 266, 261, 29, 31, 261, 261, 261, 261, 267, 268, 269, 33, 39, 44, 301, 46, 261, 261, 261, 270, 271, 261, 34, 261, 261, 261, 35, 261, 261, 261, 38, 284, 261, 285, 287, 261, 288, 290, 292, 40, 261, 261, 41, 296, 261, 297, 42, 261, 302, 306, 303, 304, 305, 261, 261, 307, 308, 311, 313, 322, 309, 310, 261, 312, 314, 316, 315, 261, 317, 318, 319, 320, 321, 261, 261, 261, 325, 326, 326, 327, 326, 328, 326, 326, 326, 329, 329, 329, 330, 329, 329, 329, 331, 331, 331, 332, 331, 47, 49, 331, 331, 331, 336, 336, 336, 337, 337, 338, 337, 339, 337, 337, 51, 53, 337, 337, 337, 343, 343, 344, 343, 343, 345, 346, 345, 55, 57, 347, 347, 347, 353, 352, 352, 354, 355, 356, 357, 359, 362, 363, 364, 365, 352, 366, 367, 369, 371, 372, 373, 377, 379, 380, 381, 397, 402, 409, 414, 421, 428, 431, 432, 436, 430, 440, 448, 452, 454, 459, 461, 464, 352, 352, 352, 352, 352, 352, 358, 352, 358, 352, 360, 59, 361, 352, 60, 352, 352, 368, 370, 352, 374, 375, 376, 372, 378, 352, 382, 383, 392, 395, 384, 385, 386, 387, 388, 389, 390, 391, 353, 393, 394, 396, 398, 401, 399, 400, 403, 406, 404, 405, 407, 408, 410, 412, 411, 413, 415, 416, 352, 417, 418, 419, 420, 352, 422, 425, 423, 424, 426, 427, 429, 433, 434, 435, 437, 439, 438, 441, 442, 443, 445, 444, 446, 447, 449, 450, 451, 453, 455, 456, 457, 458, 460, 462, 463, 466, 465, 465, 467, 468, 470, 471, 465, 465, 465, 469, 465, 469, 64, 472, 465, 474, 473, 473, 477, 478, 479, 480, 473, 482, 483, 484, 485, 487, 489, 490, 491, 492, 493, 473, 475, 473, 476, 473, 473, 473, 473, 473, 481, 473, 481, 486, 473, 488, 473, 494, 494, 495, 510, 511, 497, 513, 514, 501, 515, 516, 517, 518, 519, 521, 522, 523, 524, 494, 494, 494, 494, 494, 494, 498, 503, 494, 494, 494, 494, 494, 494, 494, 494, 494, 512, 494, 512, 494, 494, 494, 494, 520, 494, 88, 92, 98, 525, 527, 530, 100, 525, 525, 526, 531, 531, 532, 533, 535, 537, 538, 531, 531, 534, 531, 534, 531, 536, 531, 531, 531, 540, 539, 539, 541, 542, 543, 545, 547, 548, 553, 560, 539, 539, 539, 539, 544, 539, 544, 539, 546, 539, 539, 540, 549, 550, 551, 552, 554, 555, 558, 556, 557, 559, 561, 562, 564, 563, 572, 573, 575, 576, 578, 579, 580, 581, 583, 585, 586, 589, 590, 615, 621, 622, 623, 700, 701, 702, 703, 704, 582, 706, 723, 728, 735, 740, 742, 748, 751, 752, 756, 750, 760, 771, 775, 778, 786, 790, 793, 794, 563, 104, 105, 563, 107, 566, 563, 563, 568, 570, 571, 563, 569, 563, 563, 563, 563, 563, 108, 563, 563, 563, 563, 563, 577, 563, 577, 563, 563, 113, 563, 114, 563, 563, 582, 563, 587, 563, 588, 563, 563, 563, 591, 600, 563, 121, 603, 604, 605, 563, 606, 123, 609, 610, 124, 613, 614, 563, 592, 594, 563, 593, 563, 563, 595, 598, 599, 563, 596, 597, 563, 563, 563, 563, 563, 563, 607, 563, 601, 611, 612, 563, 611, 563, 601, 611, 125, 620, 563, 563, 563, 624, 563, 563, 563, 625, 627, 563, 626, 563, 626, 563, 628, 629, 630, 134, 140, 145, 662, 147, 563, 563, 563, 631, 632, 563, 135, 563, 563, 563, 136, 563, 563, 563, 139, 645, 563, 646, 648, 563, 649, 651, 653, 141, 563, 563, 142, 657, 563, 658, 143, 563, 663, 667, 664, 665, 666, 563, 563, 668, 669, 672, 683, 696, 670, 671, 563, 673, 674, 675, 677, 676, 563, 678, 679, 680, 681, 682, 684, 691, 685, 686, 687, 688, 689, 690, 692, 693, 694, 695, 563, 563, 563, 699, 149, 152, 563, 705, 707, 708, 718, 721, 709, 710, 711, 712, 713, 714, 715, 716, 717, 719, 720, 722, 724, 727, 725, 726, 729, 732, 730, 731, 733, 734, 736, 738, 737, 739, 741, 743, 745, 744, 746, 747, 749, 717, 753, 754, 755, 757, 759, 758, 761, 762, 763, 768, 764, 765, 766, 563, 564, 565, 107, 767, 570, 769, 770, 772, 773, 774, 776, 777, 779, 780, 781, 784, 782, 783, 785, 787, 788, 789, 791, 792, 563, 582, 795, 795, 796, 797, 798, 800, 795, 795, 795, 799, 795, 799, 795, 801, 795, 803, 802, 802, 804, 805, 802, 806, 808, 802, 802, 802, 802, 807, 802, 807, 809, 802, 811, 810, 810, 814, 815, 816, 810, 817, 819, 822, 823, 824, 825, 826, 810, 827, 828, 833, 861, 865, 810, 866, 868, 870, 810, 871, 872, 874, 878, 880, 881, 883, 884, 902, 907, 914, 922, 929, 936, 941, 942, 946, 940, 951, 961, 967, 970, 979, 983, 987, 988, 989, 822, 812, 810, 813, 810, 810, 810, 810, 810, 810, 818, 810, 818, 810, 156, 821, 810, 810, 810, 810, 810, 810, 810, 810, 810, 829, 810, 830, 810, 810, 157, 159, 810, 160, 842, 853, 856, 835, 857, 858, 843, 847, 849, 810, 835, 160, 837, 839, 161, 810, 837, 810, 838, 810, 810, 162, 841, 810, 810, 844, 846, 810, 844, 845, 847, 849, 846, 810, 848, 810, 810, 850, 852, 810, 166, 810, 810, 810, 854, 846, 847, 849, 854, 855, 810, 844, 846, 847, 849, 810, 844, 846, 847, 849, 810, 859, 846, 847, 849, 859, 860, 810, 160, 861, 835, 862, 847, 849, 863, 846, 160, 863, 835, 864, 867, 869, 810, 169, 170, 810, 810, 875, 876, 877, 872, 879, 810, 810, 882, 810, 810, 810, 885, 886, 895, 900, 887, 888, 889, 890, 891, 892, 893, 894, 811, 896, 897, 898, 899, 811, 901, 903, 906, 904, 905, 811, 811, 908, 911, 909, 910, 912, 913, 811, 915, 917, 916, 918, 919, 920, 810, 810, 923, 811, 924, 810, 925, 926, 927, 928, 812, 930, 933, 931, 932, 934, 935, 937, 938, 939, 811, 943, 944, 945, 947, 949, 950, 948, 811, 952, 953, 954, 957, 955, 956, 958, 959, 960, 962, 964, 963, 965, 966, 968, 969, 971, 972, 974, 977, 973, 975, 976, 978, 980, 981, 982, 984, 985, 986, 810, 810, 990, 991, 995, 996, 997, 990, 990, 990, 994, 990, 990, 999, 998, 1000, 998, 1001, 1002, 1003, 998, 998]]; $send(self, '_lex_trans_targs=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6639,7 +6639,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$private("_lex_trans_actions", "_lex_trans_actions="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 0, 0, 0, 0, 6, 0, 7, 0, 8, 0, 0, 7, 0, 0, 0, 0, 8, 0, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 10, 0, 0, 0, 0, 11, 0, 7, 0, 8, 0, 0, 7, 0, 0, 0, 0, 8, 0, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 13, 0, 0, 0, 0, 14, 0, 15, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 17, 18, 19, 20, 21, 0, 0, 0, 22, 0, 23, 24, 0, 0, 25, 26, 27, 28, 29, 30, 30, 31, 32, 30, 33, 32, 34, 32, 30, 30, 31, 30, 35, 30, 30, 36, 30, 30, 30, 30, 30, 30, 0, 37, 38, 0, 39, 38, 40, 38, 0, 0, 37, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 46, 0, 0, 0, 46, 29, 47, 30, 30, 30, 47, 48, 0, 49, 0, 29, 30, 50, 30, 51, 52, 53, 0, 0, 0, 0, 0, 54, 55, 56, 0, 29, 0, 57, 0, 30, 58, 30, 59, 30, 60, 61, 62, 61, 63, 61, 0, 64, 65, 64, 66, 64, 67, 68, 0, 69, 0, 0, 0, 0, 70, 70, 0, 0, 71, 71, 72, 0, 29, 73, 0, 0, 0, 70, 0, 74, 0, 7, 0, 8, 0, 0, 7, 0, 0, 0, 0, 8, 0, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 75, 76, 0, 0, 0, 77, 78, 79, 80, 0, 7, 7, 81, 82, 82, 83, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 30, 58, 30, 30, 30, 60, 61, 62, 61, 61, 61, 0, 64, 65, 64, 64, 64, 85, 67, 86, 87, 0, 88, 0, 89, 89, 0, 90, 0, 91, 60, 92, 0, 93, 29, 94, 95, 98, 99, 0, 29, 0, 7, 0, 7, 100, 101, 102, 60, 103, 0, 104, 0, 105, 106, 107, 0, 108, 109, 0, 110, 7, 7, 111, 112, 0, 0, 113, 114, 115, 116, 117, 117, 117, 117, 117, 117, 117, 117, 118, 119, 120, 0, 0, 121, 0, 122, 123, 124, 0, 125, 126, 127, 0, 0, 128, 0, 0, 129, 0, 7, 0, 0, 130, 131, 0, 0, 132, 0, 29, 133, 0, 0, 0, 0, 0, 134, 135, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 138, 139, 140, 0, 141, 142, 143, 7, 7, 144, 0, 0, 145, 146, 147, 148, 117, 117, 117, 117, 117, 117, 117, 117, 149, 150, 151, 0, 0, 152, 0, 153, 154, 155, 0, 156, 157, 158, 0, 0, 159, 0, 0, 160, 0, 7, 0, 0, 161, 162, 0, 0, 163, 0, 29, 164, 0, 0, 0, 0, 0, 165, 166, 0, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 169, 170, 171, 0, 172, 173, 0, 174, 0, 175, 176, 177, 178, 179, 180, 0, 181, 182, 183, 184, 185, 186, 7, 187, 0, 0, 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, 7, 197, 198, 0, 0, 199, 200, 201, 202, 203, 0, 204, 205, 206, 0, 207, 0, 0, 208, 209, 210, 211, 212, 213, 0, 29, 0, 0, 7, 7, 0, 0, 0, 214, 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 217, 218, 219, 220, 221, 60, 222, 0, 223, 0, 0, 0, 224, 0, 225, 226, 0, 0, 227, 0, 0, 0, 228, 0, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 232, 233, 0, 0, 7, 0, 234, 235, 236, 60, 237, 0, 0, 29, 238, 0, 239, 240, 0, 29, 0, 0, 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 242, 0, 243, 0, 244, 245, 246, 247, 248, 60, 249, 0, 0, 250, 0, 251, 252, 253, 254, 29, 0, 28, 0, 0, 28, 0, 0, 0, 0, 0, 0, 7, 7, 7, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 269, 270, 60, 271, 0, 272, 273, 274, 275, 276, 277, 0, 0, 0, 278, 7, 7, 0, 279, 280, 281, 282, 283, 0, 0, 0, 0, 0, 284, 285, 60, 286, 0, 287, 29, 288, 289, 290, 291, 292, 293, 0, 29, 0, 0, 0, 0, 0, 0, 294, 295, 296, 297, 60, 298, 0, 299, 29, 300, 301, 302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 303, 304, 0, 8, 0, 0, 7, 305, 0, 0, 305, 305, 0, 0, 7, 306, 0, 306, 0, 306, 306, 306, 0, 0, 306, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 0, 0, 307, 308, 308, 309, 310, 0, 311, 312, 0, 75, 0, 313, 0, 314, 315, 316, 317, 318, 30, 319, 320, 321, 322, 323, 60, 324, 0, 325, 326, 0, 327, 0, 328, 329, 305, 330, 0, 331, 0, 332, 333, 334, 0, 0, 335, 0, 0, 0, 0, 336, 0, 0, 0, 0, 0, 0, 0, 337, 0, 0, 338, 0, 339, 340, 0, 0, 0, 341, 0, 0, 342, 343, 344, 345, 346, 347, 0, 348, 349, 349, 0, 350, 0, 351, 352, 352, 0, 0, 353, 354, 355, 0, 356, 357, 358, 0, 7, 359, 360, 361, 0, 362, 117, 117, 117, 117, 117, 117, 117, 117, 363, 364, 365, 0, 0, 366, 0, 367, 368, 369, 0, 370, 371, 372, 0, 0, 373, 0, 0, 374, 0, 7, 0, 0, 375, 376, 0, 0, 377, 0, 29, 378, 0, 0, 0, 0, 0, 379, 380, 0, 0, 0, 0, 0, 0, 0, 381, 0, 0, 0, 0, 0, 382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 383, 384, 385, 0, 0, 0, 386, 29, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 75, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 387, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 388, 389, 390, 391, 392, 392, 388, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 393, 394, 395, 396, 0, 29, 0, 0, 397, 398, 399, 60, 400, 0, 401, 29, 402, 7, 403, 404, 0, 29, 405, 0, 0, 406, 407, 408, 409, 60, 410, 0, 29, 411, 412, 413, 414, 0, 29, 0, 415, 0, 7, 416, 0, 0, 0, 0, 417, 0, 0, 418, 418, 0, 419, 0, 0, 0, 420, 7, 421, 421, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 422, 423, 424, 0, 425, 426, 427, 428, 429, 430, 60, 431, 0, 432, 0, 0, 433, 434, 435, 436, 437, 438, 439, 440, 441, 0, 442, 0, 443, 444, 0, 0, 445, 446, 447, 0, 0, 448, 0, 0, 447, 449, 449, 450, 451, 0, 452, 453, 0, 454, 455, 456, 0, 457, 458, 0, 0, 459, 460, 447, 447, 461, 0, 0, 462, 462, 0, 463, 0, 464, 465, 7, 0, 466, 0, 467, 468, 469, 470, 470, 471, 471, 0, 0, 472, 473, 473, 474, 474, 475, 476, 476, 477, 477, 478, 479, 479, 480, 480, 0, 0, 481, 482, 483, 484, 485, 486, 486, 483, 485, 487, 418, 488, 0, 0, 0, 489, 0, 0, 490, 491, 421, 421, 421, 492, 421, 493, 494, 29, 495, 496, 497, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 498, 0, 0, 0, 0, 492, 0, 0, 0, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 501, 0, 0, 0, 0, 0, 500, 502, 503, 0, 504, 0, 505, 0, 0, 0, 0, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 507, 0, 0, 0, 0, 0, 0, 0, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 508, 509, 510, 511, 511, 89, 511, 512, 513, 514, 0, 515, 516, 0, 517, 0, 518, 0, 0, 0, 519, 520]]; + $writer = [[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 0, 0, 0, 0, 6, 0, 7, 0, 8, 0, 0, 7, 0, 0, 0, 0, 8, 0, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 10, 0, 0, 0, 0, 11, 0, 7, 0, 8, 0, 0, 7, 0, 0, 0, 0, 8, 0, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 13, 0, 0, 0, 0, 14, 0, 15, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 17, 18, 19, 20, 21, 0, 0, 0, 22, 23, 24, 0, 0, 25, 26, 27, 28, 29, 30, 30, 31, 32, 30, 33, 32, 34, 32, 30, 30, 31, 30, 35, 30, 30, 36, 30, 30, 30, 30, 30, 30, 0, 37, 38, 0, 39, 38, 40, 38, 0, 0, 37, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 46, 0, 0, 0, 46, 29, 47, 30, 30, 30, 47, 48, 0, 49, 0, 29, 30, 50, 30, 51, 52, 53, 0, 0, 0, 0, 0, 54, 55, 56, 0, 29, 0, 57, 0, 30, 58, 30, 59, 30, 60, 61, 62, 61, 63, 61, 0, 64, 65, 64, 66, 64, 67, 68, 0, 69, 0, 0, 0, 0, 70, 70, 0, 0, 71, 71, 72, 0, 29, 73, 0, 0, 0, 70, 0, 74, 0, 7, 0, 8, 0, 0, 7, 0, 0, 0, 0, 8, 0, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 75, 76, 0, 0, 0, 77, 78, 79, 80, 0, 7, 7, 81, 82, 82, 83, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 30, 58, 30, 30, 30, 60, 61, 62, 61, 61, 61, 0, 64, 65, 64, 64, 64, 85, 67, 86, 87, 0, 88, 0, 89, 89, 0, 90, 0, 91, 60, 92, 0, 93, 29, 94, 95, 98, 99, 0, 29, 0, 7, 0, 7, 100, 101, 102, 60, 103, 0, 104, 0, 105, 106, 107, 0, 108, 109, 0, 110, 7, 7, 111, 112, 0, 0, 113, 114, 115, 116, 117, 117, 117, 117, 117, 117, 117, 117, 118, 119, 120, 0, 0, 121, 0, 122, 123, 124, 0, 125, 126, 127, 0, 0, 128, 0, 0, 129, 0, 7, 0, 0, 130, 131, 0, 0, 132, 0, 29, 133, 0, 0, 0, 0, 0, 134, 135, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 138, 139, 140, 0, 141, 142, 143, 7, 7, 144, 0, 0, 145, 146, 147, 148, 117, 117, 117, 117, 117, 117, 117, 117, 149, 150, 151, 0, 0, 152, 0, 153, 154, 155, 0, 156, 157, 158, 0, 0, 159, 0, 0, 160, 0, 7, 0, 0, 161, 162, 0, 0, 163, 0, 29, 164, 0, 0, 0, 0, 0, 165, 166, 0, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 169, 170, 171, 0, 172, 173, 0, 174, 0, 175, 176, 177, 178, 179, 180, 0, 181, 182, 183, 184, 185, 186, 7, 187, 0, 0, 188, 189, 190, 191, 192, 193, 194, 195, 0, 196, 7, 197, 198, 0, 0, 199, 200, 201, 202, 203, 0, 204, 205, 206, 0, 207, 0, 0, 208, 209, 210, 211, 212, 213, 0, 29, 0, 0, 7, 7, 0, 0, 0, 214, 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 217, 218, 219, 220, 221, 60, 222, 0, 223, 0, 0, 0, 224, 0, 225, 226, 0, 0, 227, 0, 0, 0, 228, 0, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 232, 233, 0, 0, 7, 0, 234, 235, 236, 60, 237, 0, 0, 29, 238, 0, 239, 240, 0, 29, 0, 0, 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 242, 0, 243, 0, 244, 245, 246, 247, 248, 60, 249, 0, 0, 250, 0, 251, 252, 253, 254, 29, 0, 28, 0, 0, 28, 0, 0, 0, 0, 0, 0, 7, 7, 7, 255, 256, 257, 258, 259, 260, 261, 0, 262, 263, 264, 265, 266, 267, 268, 269, 270, 60, 271, 0, 272, 273, 274, 275, 276, 277, 0, 0, 0, 278, 7, 7, 0, 279, 280, 281, 282, 283, 0, 0, 0, 0, 0, 284, 285, 60, 286, 0, 287, 29, 288, 289, 290, 291, 292, 293, 0, 29, 0, 0, 0, 0, 0, 0, 294, 295, 296, 297, 60, 298, 0, 299, 29, 300, 301, 302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 303, 304, 0, 8, 0, 0, 7, 305, 0, 0, 305, 305, 0, 0, 7, 306, 0, 306, 0, 306, 306, 306, 0, 0, 306, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 0, 0, 307, 308, 308, 309, 310, 0, 311, 312, 0, 75, 0, 313, 0, 314, 315, 316, 317, 318, 30, 319, 320, 321, 322, 323, 60, 324, 0, 325, 326, 0, 327, 0, 328, 329, 305, 330, 0, 331, 0, 332, 333, 334, 0, 0, 335, 0, 0, 0, 0, 336, 0, 0, 0, 0, 0, 0, 0, 337, 0, 0, 338, 0, 339, 340, 0, 0, 0, 341, 0, 0, 342, 343, 344, 345, 346, 347, 0, 348, 349, 349, 0, 350, 0, 351, 352, 352, 0, 0, 353, 354, 355, 0, 356, 357, 358, 0, 7, 359, 360, 361, 0, 362, 117, 117, 117, 117, 117, 117, 117, 117, 363, 364, 365, 0, 0, 366, 0, 367, 368, 369, 0, 370, 371, 372, 0, 0, 373, 0, 0, 374, 0, 7, 0, 0, 375, 376, 0, 0, 377, 0, 29, 378, 0, 0, 0, 0, 0, 379, 380, 0, 0, 0, 0, 0, 0, 0, 381, 0, 0, 0, 0, 0, 382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 383, 384, 385, 0, 0, 0, 386, 29, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 75, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 387, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 388, 389, 390, 391, 392, 392, 388, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 393, 394, 395, 396, 0, 29, 0, 0, 397, 398, 399, 60, 400, 0, 401, 29, 402, 7, 403, 404, 0, 29, 405, 0, 0, 406, 407, 408, 409, 60, 410, 0, 29, 411, 412, 413, 414, 0, 29, 0, 415, 0, 7, 416, 0, 0, 0, 0, 417, 0, 0, 418, 418, 0, 419, 0, 0, 0, 420, 7, 421, 421, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 422, 423, 424, 0, 425, 426, 427, 428, 429, 430, 60, 431, 0, 432, 0, 0, 433, 434, 435, 436, 437, 438, 439, 440, 441, 0, 442, 0, 443, 444, 0, 0, 445, 446, 447, 0, 0, 448, 0, 0, 447, 449, 449, 450, 451, 0, 452, 453, 0, 454, 455, 456, 0, 457, 458, 0, 0, 459, 460, 447, 447, 461, 0, 0, 462, 462, 0, 463, 0, 464, 465, 7, 0, 466, 0, 467, 468, 469, 470, 470, 471, 471, 0, 0, 472, 473, 473, 474, 474, 475, 476, 476, 477, 477, 478, 479, 479, 480, 480, 0, 0, 481, 482, 483, 484, 485, 486, 486, 483, 485, 487, 418, 488, 0, 0, 0, 489, 0, 0, 490, 491, 421, 421, 421, 492, 421, 493, 494, 29, 495, 496, 497, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 498, 0, 0, 0, 0, 492, 0, 0, 0, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 501, 0, 0, 0, 0, 0, 500, 502, 503, 0, 504, 0, 505, 0, 0, 0, 0, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 507, 0, 0, 0, 0, 0, 0, 0, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 508, 509, 510, 511, 511, 89, 511, 512, 513, 514, 0, 515, 516, 0, 517, 0, 518, 0, 0, 0, 519, 520]]; $send(self, '_lex_trans_actions=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6649,7 +6649,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$private("_lex_to_state_actions", "_lex_to_state_actions="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 96, 0, 96, 0, 0, 0, 0, 96, 96, 0, 0, 0, 0, 0, 96, 0, 96, 0, 96, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0]]; + $writer = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 96, 0, 96, 0, 0, 0, 0, 96, 96, 0, 0, 0, 0, 0, 96, 0, 96, 0, 96, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0]]; $send(self, '_lex_to_state_actions=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6659,7 +6659,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$private("_lex_from_state_actions", "_lex_from_state_actions="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 97, 0, 97, 0, 0, 0, 0, 97, 97, 0, 0, 0, 0, 0, 97, 0, 97, 0, 97, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0]]; + $writer = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 97, 0, 97, 0, 0, 0, 0, 97, 97, 0, 0, 0, 0, 0, 97, 0, 97, 0, 97, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0]]; $send(self, '_lex_from_state_actions=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6669,7 +6669,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$private("_lex_eof_trans", "_lex_eof_trans="); })(Opal.get_singleton_class(self), $nesting); - $writer = [[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 48, 48, 48, 48, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 83, 83, 83, 83, 90, 90, 90, 90, 0, 0, 0, 0, 105, 107, 109, 109, 109, 109, 109, 116, 116, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 191, 193, 193, 193, 205, 205, 205, 213, 215, 215, 215, 215, 215, 221, 213, 213, 213, 213, 213, 213, 213, 247, 247, 247, 247, 247, 247, 213, 263, 213, 263, 247, 247, 213, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 213, 247, 247, 247, 247, 304, 304, 304, 309, 311, 311, 311, 315, 315, 318, 318, 318, 318, 323, 323, 323, 309, 315, 315, 315, 315, 315, 315, 315, 315, 315, 354, 361, 363, 363, 363, 363, 354, 0, 379, 380, 381, 383, 385, 387, 385, 385, 0, 397, 398, 402, 402, 403, 404, 413, 414, 415, 415, 415, 418, 418, 420, 421, 422, 422, 422, 424, 425, 426, 426, 426, 429, 429, 422, 432, 432, 422, 418, 418, 437, 438, 438, 438, 441, 441, 438, 438, 438, 444, 444, 444, 444, 450, 451, 451, 451, 451, 459, 451, 451, 451, 451, 464, 451, 451, 451, 451, 451, 451, 470, 471, 472, 472, 0, 479, 483, 483, 484, 485, 494, 495, 496, 496, 496, 499, 499, 501, 502, 503, 503, 503, 505, 506, 507, 507, 507, 510, 510, 503, 513, 513, 503, 499, 499, 518, 519, 519, 519, 522, 522, 519, 519, 519, 525, 525, 525, 525, 531, 532, 532, 532, 532, 540, 532, 532, 532, 532, 545, 532, 532, 532, 532, 532, 532, 551, 552, 553, 553, 0, 560, 561, 0, 567, 0, 574, 578, 578, 579, 0, 0, 588, 589, 593, 593, 594, 0, 599, 0, 602, 0, 605, 605, 606, 607, 0, 648, 650, 651, 652, 653, 655, 657, 661, 661, 652, 652, 652, 652, 663, 652, 652, 657, 652, 652, 648, 667, 667, 667, 667, 667, 667, 657, 657, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 706, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 652, 0, 750, 751, 752, 754, 750, 750, 758, 0, 777, 779, 781, 782, 783, 784, 785, 787, 784, 784, 784, 784, 784, 790, 784, 784, 792, 790, 790, 784, 0, 811, 812, 116, 116, 815, 816, 116, 812, 812, 819, 821, 824, 812, 825, 812, 826, 827, 829, 831, 812, 819, 832, 832, 821, 832, 836, 832, 832, 832, 832, 0, 191, 844, 845, 844, 844, 0, 854, 855, 857, 859, 861, 859, 863, 0, 875, 876, 877, 878, 880, 882, 884, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 0, 943, 946, 949, 950, 954, 956, 957, 958, 959, 960, 962, 965, 966, 968, 970, 973, 975, 976, 213, 973, 978, 973, 965, 980, 982, 965, 965, 1000, 1003, 1005, 1006, 1010, 1013, 1014, 1015, 1016, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1020, 1024, 1026, 1000, 1000, 965, 1031, 1032, 1032, 1032, 965, 965, 965, 1033, 1040, 1040, 1042, 1044, 1053, 1054, 1055, 1055, 1055, 1058, 1058, 1060, 1061, 1062, 1062, 1062, 1064, 1065, 1066, 1066, 1066, 1069, 1069, 1062, 1072, 1072, 1062, 1058, 1058, 1077, 1078, 1078, 1078, 1081, 1081, 1078, 1078, 1078, 1084, 1084, 1084, 1084, 1090, 1091, 1091, 1091, 1091, 1099, 1091, 1091, 1091, 1091, 1105, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1123, 1124, 1125, 1125, 213, 965, 965, 1129, 965, 960, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 213, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 1182, 950, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 1207, 965, 0, 1215, 1216, 1217, 1219, 1221, 1223, 0, 1232, 1233, 1234, 1235, 1237, 1232, 1240, 0, 315, 1295, 1297, 1298, 1299, 1300, 1302, 1304, 1306, 1309, 1309, 315, 1311, 1313, 1314, 1315, 1311, 1317, 1319, 1319, 1322, 1322, 1325, 1336, 315, 1342, 1344, 1346, 1347, 1350, 1351, 1325, 1325, 1354, 1354, 1354, 1360, 1362, 1363, 1366, 1368, 1369, 1370, 1354, 1354, 1377, 1382, 1387, 1354, 1354, 1394, 1394, 1354, 1354, 1319, 1311, 1311, 1319, 1311, 1311, 1306, 315, 1412, 1413, 1413, 1413, 1413, 1413, 1413, 1419, 1306, 1422, 1423, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1463, 1464, 1424, 1424, 1468, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1522, 1300, 1523, 0, 1529, 1530, 1531, 1533, 1529, 1529, 1529, 0, 1538, 1538, 1538, 1538, 1542]]; + $writer = [[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 48, 48, 48, 48, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 83, 83, 83, 83, 90, 90, 90, 90, 0, 0, 0, 0, 105, 107, 109, 109, 109, 109, 115, 115, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 190, 192, 192, 192, 204, 204, 204, 212, 214, 214, 214, 214, 214, 220, 212, 212, 212, 212, 212, 212, 212, 246, 246, 246, 246, 246, 246, 212, 262, 212, 262, 246, 246, 212, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 212, 246, 246, 246, 246, 303, 303, 303, 308, 310, 310, 310, 314, 314, 317, 317, 317, 317, 322, 322, 322, 308, 314, 314, 314, 314, 314, 314, 314, 314, 314, 353, 360, 362, 362, 362, 362, 353, 0, 378, 379, 380, 382, 384, 386, 384, 384, 0, 396, 397, 401, 401, 402, 403, 412, 413, 414, 414, 414, 417, 417, 419, 420, 421, 421, 421, 423, 424, 425, 425, 425, 428, 428, 421, 431, 431, 421, 417, 417, 436, 437, 437, 437, 440, 440, 437, 437, 437, 443, 443, 443, 443, 449, 450, 450, 450, 450, 458, 450, 450, 450, 450, 463, 450, 450, 450, 450, 450, 450, 469, 470, 471, 471, 0, 478, 482, 482, 483, 484, 493, 494, 495, 495, 495, 498, 498, 500, 501, 502, 502, 502, 504, 505, 506, 506, 506, 509, 509, 502, 512, 512, 502, 498, 498, 517, 518, 518, 518, 521, 521, 518, 518, 518, 524, 524, 524, 524, 530, 531, 531, 531, 531, 539, 531, 531, 531, 531, 544, 531, 531, 531, 531, 531, 531, 550, 551, 552, 552, 0, 559, 560, 0, 566, 0, 573, 577, 577, 578, 0, 0, 587, 588, 592, 592, 593, 0, 598, 0, 601, 0, 604, 604, 605, 606, 0, 647, 649, 650, 651, 652, 654, 656, 660, 660, 651, 651, 651, 651, 662, 651, 651, 656, 651, 651, 647, 666, 666, 666, 666, 666, 666, 656, 656, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 705, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 651, 0, 749, 750, 751, 753, 749, 749, 757, 0, 776, 778, 780, 781, 782, 783, 784, 786, 783, 783, 783, 783, 783, 789, 783, 783, 791, 789, 789, 783, 0, 810, 811, 115, 115, 814, 815, 115, 811, 811, 818, 820, 823, 811, 824, 811, 825, 826, 828, 830, 811, 818, 831, 831, 820, 831, 835, 831, 831, 831, 831, 0, 190, 843, 844, 843, 843, 0, 853, 854, 856, 858, 860, 858, 862, 0, 874, 875, 876, 877, 879, 881, 883, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 0, 942, 945, 948, 949, 953, 955, 956, 957, 958, 959, 961, 964, 965, 967, 969, 972, 974, 975, 212, 972, 977, 972, 964, 979, 981, 964, 964, 999, 1002, 1004, 1005, 1009, 1012, 1013, 1014, 1015, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 1019, 1023, 1025, 999, 999, 964, 1030, 1031, 1031, 1031, 964, 964, 964, 1032, 1039, 1039, 1041, 1043, 1052, 1053, 1054, 1054, 1054, 1057, 1057, 1059, 1060, 1061, 1061, 1061, 1063, 1064, 1065, 1065, 1065, 1068, 1068, 1061, 1071, 1071, 1061, 1057, 1057, 1076, 1077, 1077, 1077, 1080, 1080, 1077, 1077, 1077, 1083, 1083, 1083, 1083, 1089, 1090, 1090, 1090, 1090, 1098, 1090, 1090, 1090, 1090, 1104, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1122, 1123, 1124, 1124, 212, 964, 964, 1128, 964, 959, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 212, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 1181, 949, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 1206, 964, 0, 1214, 1215, 1216, 1218, 1220, 1222, 0, 1231, 1232, 1233, 1234, 1236, 1231, 1239, 0, 314, 1294, 1296, 1297, 1298, 1299, 1301, 1303, 1305, 1308, 1308, 314, 1310, 1312, 1313, 1314, 1310, 1316, 1318, 1318, 1321, 1321, 1324, 1335, 314, 1341, 1343, 1345, 1346, 1349, 1350, 1324, 1324, 1353, 1353, 1353, 1359, 1361, 1362, 1365, 1367, 1368, 1369, 1353, 1353, 1376, 1381, 1386, 1353, 1353, 1393, 1393, 1353, 1353, 1318, 1310, 1310, 1318, 1310, 1310, 1305, 314, 1411, 1412, 1412, 1412, 1412, 1412, 1412, 1418, 1305, 1421, 1422, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1462, 1463, 1423, 1423, 1467, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1521, 1299, 1522, 0, 1528, 1529, 1530, 1532, 1528, 1528, 1528, 0, 1537, 1537, 1537, 1537, 1541]]; $send(self, '_lex_eof_trans=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6677,7 +6677,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_start") })(Opal.get_singleton_class(self), $nesting); - $writer = [187]; + $writer = [186]; $send(self, 'lex_start=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6693,7 +6693,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_interp_words") })(Opal.get_singleton_class(self), $nesting); - $writer = [196]; + $writer = [195]; $send(self, 'lex_en_interp_words=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6701,7 +6701,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_interp_string") })(Opal.get_singleton_class(self), $nesting); - $writer = [262]; + $writer = [261]; $send(self, 'lex_en_interp_string=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6709,7 +6709,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_plain_words") })(Opal.get_singleton_class(self), $nesting); - $writer = [327]; + $writer = [326]; $send(self, 'lex_en_plain_words=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6717,7 +6717,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_plain_string") })(Opal.get_singleton_class(self), $nesting); - $writer = [330]; + $writer = [329]; $send(self, 'lex_en_plain_string=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6725,7 +6725,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_interp_backslash_delimited") })(Opal.get_singleton_class(self), $nesting); - $writer = [332]; + $writer = [331]; $send(self, 'lex_en_interp_backslash_delimited=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6733,7 +6733,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_plain_backslash_delimited") })(Opal.get_singleton_class(self), $nesting); - $writer = [337]; + $writer = [336]; $send(self, 'lex_en_plain_backslash_delimited=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6741,7 +6741,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_interp_backslash_delimited_words") })(Opal.get_singleton_class(self), $nesting); - $writer = [338]; + $writer = [337]; $send(self, 'lex_en_interp_backslash_delimited_words=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6749,7 +6749,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_plain_backslash_delimited_words") })(Opal.get_singleton_class(self), $nesting); - $writer = [344]; + $writer = [343]; $send(self, 'lex_en_plain_backslash_delimited_words=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6757,7 +6757,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_regexp_modifiers") })(Opal.get_singleton_class(self), $nesting); - $writer = [346]; + $writer = [345]; $send(self, 'lex_en_regexp_modifiers=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6765,7 +6765,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_variable") })(Opal.get_singleton_class(self), $nesting); - $writer = [348]; + $writer = [347]; $send(self, 'lex_en_expr_variable=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6773,7 +6773,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_fname") })(Opal.get_singleton_class(self), $nesting); - $writer = [353]; + $writer = [352]; $send(self, 'lex_en_expr_fname=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6781,7 +6781,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_endfn") })(Opal.get_singleton_class(self), $nesting); - $writer = [466]; + $writer = [465]; $send(self, 'lex_en_expr_endfn=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6789,7 +6789,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_dot") })(Opal.get_singleton_class(self), $nesting); - $writer = [474]; + $writer = [473]; $send(self, 'lex_en_expr_dot=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6797,7 +6797,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_arg") })(Opal.get_singleton_class(self), $nesting); - $writer = [495]; + $writer = [494]; $send(self, 'lex_en_expr_arg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6805,7 +6805,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_cmdarg") })(Opal.get_singleton_class(self), $nesting); - $writer = [526]; + $writer = [525]; $send(self, 'lex_en_expr_cmdarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6813,7 +6813,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_endarg") })(Opal.get_singleton_class(self), $nesting); - $writer = [532]; + $writer = [531]; $send(self, 'lex_en_expr_endarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6821,7 +6821,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_mid") })(Opal.get_singleton_class(self), $nesting); - $writer = [540]; + $writer = [539]; $send(self, 'lex_en_expr_mid=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6829,7 +6829,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_beg") })(Opal.get_singleton_class(self), $nesting); - $writer = [564]; + $writer = [563]; $send(self, 'lex_en_expr_beg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6837,7 +6837,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_labelarg") })(Opal.get_singleton_class(self), $nesting); - $writer = [796]; + $writer = [795]; $send(self, 'lex_en_expr_labelarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6845,7 +6845,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_value") })(Opal.get_singleton_class(self), $nesting); - $writer = [803]; + $writer = [802]; $send(self, 'lex_en_expr_value=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6853,7 +6853,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_expr_end") })(Opal.get_singleton_class(self), $nesting); - $writer = [811]; + $writer = [810]; $send(self, 'lex_en_expr_end=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6861,7 +6861,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_leading_dot") })(Opal.get_singleton_class(self), $nesting); - $writer = [991]; + $writer = [990]; $send(self, 'lex_en_leading_dot=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6869,7 +6869,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_line_comment") })(Opal.get_singleton_class(self), $nesting); - $writer = [999]; + $writer = [998]; $send(self, 'lex_en_line_comment=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; (function(self, $parent_nesting) { @@ -6877,7 +6877,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$attr_accessor("lex_en_line_begin") })(Opal.get_singleton_class(self), $nesting); - $writer = [187]; + $writer = [186]; $send(self, 'lex_en_line_begin=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; $const_set($nesting[0], 'ESCAPES', $hash("a".$ord(), "\u0007", "b".$ord(), "\b", "e".$ord(), "\u001b", "f".$ord(), "\f", "n".$ord(), "\n", "r".$ord(), "\r", "s".$ord(), " ", "t".$ord(), "\t", "v".$ord(), "\v", "\\".$ord(), "\\").$freeze()); @@ -6886,7 +6886,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$attr_accessor("diagnostics"); self.$attr_accessor("static_env"); self.$attr_accessor("force_utf32"); - self.$attr_accessor("cond", "cmdarg", "in_kwarg", "context", "command_start"); + self.$attr_accessor("cond", "cmdarg", "context", "command_start"); self.$attr_accessor("tokens", "comments"); self.$attr_reader("paren_nest", "cmdarg_stack", "cond_stack", "lambda_stack"); @@ -6940,7 +6940,6 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.lambda_stack = []; self.dedent_level = nil; self.command_start = true; - self.in_kwarg = false; return (self.cs_before_block_comment = self.$class().$lex_en_line_begin()); }, -1); @@ -7196,7 +7195,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; current_literal.$start_interp_brace(); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -7216,7 +7215,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(109, $ret_or_1)) { @@ -7285,7 +7284,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -7324,7 +7323,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(111, $ret_or_1)) { @@ -7349,7 +7348,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -7400,7 +7399,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -7429,7 +7428,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; current_literal.$start_interp_brace(); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -7449,7 +7448,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(142, $ret_or_1)) { @@ -7518,7 +7517,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -7557,7 +7556,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(144, $ret_or_1)) { @@ -7576,7 +7575,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -7627,7 +7626,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -7704,7 +7703,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -7737,7 +7736,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -7814,7 +7813,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -7841,7 +7840,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -7870,7 +7869,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; current_literal.$start_interp_brace(); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -7890,7 +7889,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(185, $ret_or_1)) { @@ -7959,7 +7958,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -7998,7 +7997,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(187, $ret_or_1)) { @@ -8017,7 +8016,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8044,7 +8043,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8121,7 +8120,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8150,7 +8149,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; current_literal.$start_interp_brace(); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -8170,7 +8169,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(195, $ret_or_1)) { @@ -8239,7 +8238,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8278,7 +8277,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(197, $ret_or_1)) { @@ -8303,7 +8302,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8330,7 +8329,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8407,7 +8406,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_plus(p, 1); self.$pop_literal(); - self.cs = 796; + self.cs = 795; } else { self.cs = self.$pop_literal() }; @@ -8431,7 +8430,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tREGEXP_OPT", self.$tok(self.ts, $rb_minus(self.te, 1)), self.ts, $rb_minus(self.te, 1)); p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(207, $ret_or_1)) { @@ -8444,7 +8443,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$diagnostic("error", "regexp_options", $hash2(["options"], {"options": unknown_options.$join()})) }; self.$emit("tREGEXP_OPT"); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -8515,7 +8514,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit_table($$('KEYWORDS_BEGIN')); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -8525,7 +8524,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit("tIDENTIFIER"); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -8535,14 +8534,14 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; $writer = [self.top, self.cs]; $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(214, $ret_or_1)) { @@ -8550,7 +8549,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -8562,7 +8561,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(20, $ret_or_1)) { @@ -8580,7 +8579,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;; };; @@ -8590,7 +8589,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(212, $ret_or_1)) { @@ -8608,7 +8607,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit_table($$('KEYWORDS_BEGIN')); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -8619,7 +8618,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit("tCONSTANT"); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -8630,7 +8629,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit("tIDENTIFIER"); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -8641,14 +8640,14 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; $writer = [self.top, self.cs]; $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(220, $ret_or_1)) { @@ -8657,7 +8656,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -8669,7 +8668,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(218, $ret_or_1)) { @@ -8683,7 +8682,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(19, $ret_or_1)) { @@ -8692,7 +8691,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('PUNCTUATION')); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -8704,7 +8703,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(216, $ret_or_1)) { @@ -8714,7 +8713,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS_BEGIN')); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -8724,7 +8723,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit("tCONSTANT"); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -8734,7 +8733,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit("tIDENTIFIER"); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -8748,18 +8747,38 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tLABEL", self.$tok(self.ts, $rb_minus(self.te, 2)), self.ts, $rb_minus(self.te, 1)); p = $rb_minus(p, 1); - self.cs = 796; + self.cs = 795; p = $rb_plus(p, 1); _goto_level = _out; continue;;;; + } else if ($eqeqeq(23, $ret_or_1)) { + + self.te = $rb_plus(p, 1); + + if (($truthy($rb_ge(self.version, 31)) && ($truthy(self.context.$in_argdef())))) { + + self.$emit("tBDOT3", "...".$freeze()); + self.cs = 810; + + p = $rb_plus(p, 1); + _goto_level = _out; + continue;;; + } else { + + p = $rb_minus(p, 3); + + self.cs = 810; + _goto_level = _again; + continue;;; + };; } else if ($eqeqeq(233, $ret_or_1)) { self.te = $rb_plus(p, 1); p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(232, $ret_or_1)) { @@ -8782,7 +8801,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(21, $ret_or_1)) { @@ -8792,7 +8811,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(241, $ret_or_1)) { @@ -8800,7 +8819,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 495; + self.cs = 494; p = $rb_plus(p, 1); _goto_level = _out; @@ -8811,7 +8830,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(239, $ret_or_1)) { @@ -8851,7 +8870,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 495; + self.cs = 494; p = $rb_plus(p, 1); _goto_level = _out; @@ -8867,7 +8886,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(274, $ret_or_1)) { @@ -8876,7 +8895,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(257, $ret_or_1)) { @@ -8892,7 +8911,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; p = $rb_minus(tm, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(263, $ret_or_1)) { @@ -8902,7 +8921,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(25, $ret_or_1)) { @@ -8911,7 +8930,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(265, $ret_or_1)) { @@ -8920,7 +8939,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(40, $ret_or_1)) { @@ -8929,7 +8948,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(252, $ret_or_1)) { @@ -8938,7 +8957,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(253, $ret_or_1)) { @@ -8957,7 +8976,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(260, $ret_or_1)) { @@ -8968,7 +8987,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$diagnostic("warning", "ambiguous_prefix", $hash2(["prefix"], {"prefix": self.$tok(tm, self.te)}), self.$range(tm, self.te)); p = $rb_minus(tm, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(262, $ret_or_1)) { @@ -8978,7 +8997,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(256, $ret_or_1)) { @@ -8988,7 +9007,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(255, $ret_or_1)) { @@ -9002,7 +9021,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(26, $ret_or_1)) { @@ -9016,7 +9035,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(24, $ret_or_1)) { @@ -9034,7 +9053,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; p = $rb_minus(tm, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;; } else if ($eqeqeq(73, $ret_or_2)) { @@ -9044,7 +9063,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$diagnostic("warning", "ambiguous_prefix", $hash2(["prefix"], {"prefix": self.$tok(tm, self.te)}), self.$range(tm, self.te)); p = $rb_minus(tm, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;; } else if ($eqeqeq(78, $ret_or_2)) { @@ -9053,7 +9072,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;; } else { @@ -9067,7 +9086,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 495; + self.cs = 494; _goto_level = _again; continue;;;; } else if ($eqeqeq(278, $ret_or_1)) { @@ -9086,7 +9105,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 495; + self.cs = 494; _goto_level = _again; continue;;;; } else if ($eqeqeq(45, $ret_or_1)) { @@ -9096,7 +9115,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 495; + self.cs = 494; _goto_level = _again; continue;;;; } else if ($eqeqeq(43, $ret_or_1)) { @@ -9110,7 +9129,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("kDO", "do".$freeze(), $rb_minus(self.te, 2), self.te) }; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -9121,7 +9140,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 495; + self.cs = 494; _goto_level = _again; continue;;; } else { @@ -9132,7 +9151,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit_do(true); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -9143,7 +9162,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(283, $ret_or_1)) { @@ -9166,7 +9185,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(293, $ret_or_1)) { @@ -9175,7 +9194,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(292, $ret_or_1)) { @@ -9194,7 +9213,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(295, $ret_or_1)) { @@ -9208,7 +9227,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(294, $ret_or_1)) { @@ -9218,7 +9237,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS')); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -9229,7 +9248,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;; } else { @@ -9241,7 +9260,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -9282,7 +9301,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit("tSYMBEG", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); - self.cs = 353; + self.cs = 352; _goto_level = _again; continue;;;; } else if ($eqeqeq(335, $ret_or_1)) { @@ -9299,7 +9318,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), $rb_plus(self.ts, 2))); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -9309,7 +9328,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1)), self.ts); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -9322,7 +9341,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$diagnostic("warning", "invalid_escape_use", $hash2(["escape"], {"escape": escape}), self.$range()); p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(356, $ret_or_1)) { @@ -9350,14 +9369,14 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit(($truthy(self.source_buffer.$slice(self.ts)['$=~'](/[A-Z]/)) ? ("tCONSTANT") : ("tIDENTIFIER")), ident, self.ts, $rb_minus(self.te, 2)); p = $rb_minus(p, 1); if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](ident))))) { - self.cs = 811 + self.cs = 810 } else { self.cs = self.$arg_or_cmdarg(cmd_state) }; } else { self.$emit("tLABEL", self.$tok(self.ts, $rb_minus(self.te, 2)), self.ts, $rb_minus(self.te, 1)); - self.cs = 796; + self.cs = 795; }; p = $rb_plus(p, 1); @@ -9370,9 +9389,9 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER", ident_tok, ident_ts, ident_te); p = $rb_minus(ident_te, 1); if ((($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](ident_tok)))) && ($truthy($rb_lt(self.version, 25))))) { - self.cs = 466 + self.cs = 465 } else { - self.cs = 526 + self.cs = 525 }; p = $rb_plus(p, 1); @@ -9385,7 +9404,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); self.cs_before_block_comment = self.cs; - self.cs = 187; + self.cs = 186; _goto_level = _again; continue;;;; } else if ($eqeqeq(56, $ret_or_1)) { @@ -9394,7 +9413,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(304, $ret_or_1)) { @@ -9413,7 +9432,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -9446,7 +9465,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1)), self.ts); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -9463,7 +9482,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tCOLON", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = self.ts; }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -9481,7 +9500,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(327, $ret_or_1)) { @@ -9504,7 +9523,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tDOT2") }; - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -9523,7 +9542,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tBDOT3", "...".$freeze(), self.ts, dots_te); - if ((($truthy($rb_ge(self.version, 31)) && ($truthy(followed_by_nl))) && ($truthy(self.context['$in_def_open_args?']())))) { + if ((($truthy($rb_ge(self.version, 31)) && ($truthy(followed_by_nl))) && ($truthy(self.context.$in_argdef())))) { self.$emit("tNL", $rb_minus(self.te, 1), self.te); nl_emitted = true; @@ -9537,7 +9556,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ if (($truthy(followed_by_nl) && ($not(nl_emitted)))) { p = $rb_minus(p, 1) }; - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -9550,7 +9569,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER"); if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -9575,7 +9594,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); self.cs_before_block_comment = self.cs; - self.cs = 187; + self.cs = 186; _goto_level = _again; continue;;;; } else if ($eqeqeq(322, $ret_or_1)) { @@ -9585,7 +9604,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(54, $ret_or_1)) { @@ -9611,7 +9630,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -9624,7 +9643,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER"); if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -9648,7 +9667,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(51, $ret_or_1)) { @@ -9659,7 +9678,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -9677,7 +9696,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tPIPE", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -9686,7 +9705,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 2); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;; }; @@ -9705,7 +9724,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit("kRESCUE", "rescue".$freeze(), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 540; + self.cs = 539; p = $rb_plus(p, 1); _goto_level = _out; @@ -9716,7 +9735,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS_BEGIN')); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -9727,7 +9746,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;; } else if ($eqeqeq(128, $ret_or_2)) { @@ -9737,7 +9756,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER"); if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -9756,7 +9775,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;; } else { @@ -9768,7 +9787,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(396, $ret_or_1)) { @@ -9791,7 +9810,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(77, $ret_or_1)) { @@ -9800,7 +9819,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(405, $ret_or_1)) { @@ -9817,7 +9836,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(403, $ret_or_1)) { @@ -9840,7 +9859,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(76, $ret_or_1)) { @@ -9850,7 +9869,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; _goto_level = _again; continue;;;; } else if ($eqeqeq(440, $ret_or_1)) { @@ -9859,7 +9878,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tLAMBDA", "->".$freeze(), self.ts, $rb_plus(self.ts, 2)); self.lambda_stack.$push(self.paren_nest); - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -9870,7 +9889,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("kCLASS", "class".$freeze(), self.ts, $rb_plus(self.ts, 5)); self.$emit("tLSHFT", "<<".$freeze(), $rb_minus(self.te, 2), self.te); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -9895,7 +9914,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(436, $ret_or_1)) { @@ -9903,7 +9922,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 474; + self.cs = 473; p = $rb_plus(p, 1); _goto_level = _out; @@ -9913,7 +9932,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -9923,7 +9942,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -9933,7 +9952,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit("tOP_ASGN", self.$tok(self.ts, $rb_minus(self.te, 1))); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -9943,7 +9962,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit("tEH", "?".$freeze()); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -9953,7 +9972,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = $rb_plus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -9964,7 +9983,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tSEMI", ";".$freeze()); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -9995,7 +10014,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit_table($$('KEYWORDS')); - self.cs = 353; + self.cs = 352; p = $rb_plus(p, 1); _goto_level = _out; @@ -10007,7 +10026,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("kCLASS", "class".$freeze(), self.ts, $rb_plus(self.ts, 5)); self.$emit("tLSHFT", "<<".$freeze(), $rb_minus(self.te, 2), self.te); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10019,7 +10038,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit_table($$('KEYWORDS')); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10053,7 +10072,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.stack, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.top = $rb_plus(self.top, 1); - self.cs = 348; + self.cs = 347; _goto_level = _again; continue;;;; } else if ($eqeqeq(441, $ret_or_1)) { @@ -10062,7 +10081,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 474; + self.cs = 473; p = $rb_plus(p, 1); _goto_level = _out; @@ -10075,7 +10094,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER"); if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -10094,7 +10113,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10105,7 +10124,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10116,7 +10135,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -10127,7 +10146,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -10222,7 +10241,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.paren_nest = $rb_plus(self.paren_nest, 1) }; self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10232,7 +10251,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS')); - self.cs = 353; + self.cs = 352; p = $rb_plus(p, 1); _goto_level = _out; @@ -10243,7 +10262,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit("kCLASS", "class".$freeze(), self.ts, $rb_plus(self.ts, 5)); self.$emit("tLSHFT", "<<".$freeze(), $rb_minus(self.te, 2), self.te); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10253,7 +10272,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS')); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -10264,7 +10283,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS')); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10274,7 +10293,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS')); - self.cs = 540; + self.cs = 539; p = $rb_plus(p, 1); _goto_level = _out; @@ -10286,14 +10305,14 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit_table($$('KEYWORDS')); if (($truthy(self['$version?'](18)) && ($eqeq(self.$tok(), "not".$freeze())))) { - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; continue;;; } else { - self.cs = 495; + self.cs = 494; p = $rb_plus(p, 1); _goto_level = _out; @@ -10415,7 +10434,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER"); if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -10439,7 +10458,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER", self.$tok(self.ts, tm), self.ts, tm); p = $rb_minus(tm, 1); }; - self.cs = 495; + self.cs = 494; p = $rb_plus(p, 1); _goto_level = _out; @@ -10449,7 +10468,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('PUNCTUATION')); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -10459,7 +10478,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('PUNCTUATION')); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -10475,7 +10494,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ if ($truthy($rb_lt(self.version, 27))) { p = $rb_minus(p, 1); - self.cs = 187; + self.cs = 186; p = $rb_plus(p, 1); _goto_level = _out; @@ -10483,7 +10502,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tBDOT3"); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -10495,7 +10514,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(510, $ret_or_1)) { @@ -10504,7 +10523,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); p = $rb_minus(p, 1); - self.cs = 187; + self.cs = 186; p = $rb_plus(p, 1); _goto_level = _out; @@ -10518,7 +10537,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); p = $rb_minus(p, 1); - self.cs = 187; + self.cs = 186; p = $rb_plus(p, 1); _goto_level = _out; @@ -10533,7 +10552,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ if ($truthy($rb_lt(self.version, 27))) { p = $rb_minus(p, 1); - self.cs = 187; + self.cs = 186; p = $rb_plus(p, 1); _goto_level = _out; @@ -10541,7 +10560,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tBDOT2"); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -10554,7 +10573,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;; } else if ($eqeqeq(512, $ret_or_1)) { @@ -10564,7 +10583,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); p = $rb_minus(p, 1); - self.cs = 187; + self.cs = 186; p = $rb_plus(p, 1); _goto_level = _out; @@ -10578,7 +10597,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); p = $rb_minus(p, 1); - self.cs = 187; + self.cs = 186; p = $rb_plus(p, 1); _goto_level = _out; @@ -10591,7 +10610,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); p = $rb_minus(p, 1); - self.cs = 187; + self.cs = 186; p = $rb_plus(p, 1); _goto_level = _out; @@ -10606,7 +10625,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); p = $rb_minus(p, 1); - self.cs = 187; + self.cs = 186; p = $rb_plus(p, 1); _goto_level = _out; @@ -10618,7 +10637,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit("tNL", nil, self.newline_s, $rb_plus(self.newline_s, 1)); p = $rb_minus(p, 1); - self.cs = 187; + self.cs = 186; p = $rb_plus(p, 1); _goto_level = _out; @@ -10648,7 +10667,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.eq_begin_s = self.ts; - self.cs = 999; + self.cs = 998; _goto_level = _again; continue;;;; } else if ($eqeqeq(2, $ret_or_1)) { @@ -10663,7 +10682,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ cmd_state = true; p = $rb_minus(p, 1); - self.cs = 803; + self.cs = 802; _goto_level = _again; continue;;;; } else if ($eqeqeq(99, $ret_or_1)) { @@ -10686,7 +10705,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.eq_begin_s = self.ts; - self.cs = 999; + self.cs = 998; _goto_level = _again; continue;;;; } else if ($eqeqeq(104, $ret_or_1)) { @@ -10697,7 +10716,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ cmd_state = true; p = $rb_minus(p, 1); - self.cs = 803; + self.cs = 802; _goto_level = _again; continue;;;; } else if ($eqeqeq(1, $ret_or_1)) { @@ -10708,7 +10727,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ cmd_state = true; p = $rb_minus(p, 1); - self.cs = 803; + self.cs = 802; _goto_level = _again; continue;;;; } else if ($eqeqeq(67, $ret_or_1)) { @@ -11149,31 +11168,6 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ current_literal.$extend_string(self.$tok(), self.ts, self.te); current_literal.$flush_string(); };;; - } else if ($eqeqeq(23, $ret_or_1)) { - - - self.newline_s = p;; - - self.te = $rb_plus(p, 1); - - if ($truthy($rb_ge(self.version, 31))) { - - self.$emit("tBDOT3", "...".$freeze(), self.ts, $rb_minus(self.te, 1)); - self.$emit("tNL", "\n".$freeze(), $rb_minus(self.te, 1), self.te); - self.cs = 811; - - p = $rb_plus(p, 1); - _goto_level = _out; - continue;;; - } else { - - p = $rb_minus(p, 4); - p = $rb_minus(p, 1); - - self.cs = 811; - _goto_level = _again; - continue;;; - };;; } else if ($eqeqeq(275, $ret_or_1)) { @@ -11183,7 +11177,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(266, $ret_or_1)) { @@ -11195,7 +11189,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(258, $ret_or_1)) { @@ -11207,7 +11201,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(358, $ret_or_1)) { @@ -11221,7 +11215,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$diagnostic("warning", "invalid_escape_use", $hash2(["escape"], {"escape": escape}), self.$range()); p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(333, $ret_or_1)) { @@ -11240,7 +11234,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tBDOT3", "...".$freeze(), self.ts, dots_te); - if ((($truthy($rb_ge(self.version, 31)) && ($truthy(followed_by_nl))) && ($truthy(self.context['$in_def_open_args?']())))) { + if ((($truthy($rb_ge(self.version, 31)) && ($truthy(followed_by_nl))) && ($truthy(self.context.$in_argdef())))) { self.$emit("tNL", $rb_minus(self.te, 1), self.te); nl_emitted = true; @@ -11254,7 +11248,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ if (($truthy(followed_by_nl) && ($not(nl_emitted)))) { p = $rb_minus(p, 1) }; - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -11269,7 +11263,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); self.cs_before_block_comment = self.cs; - self.cs = 187; + self.cs = 186; _goto_level = _again; continue;;;;; } else if ($eqeqeq(443, $ret_or_1)) { @@ -11284,7 +11278,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; self.$emit("tDOT3", "...".$freeze(), self.ts, $rb_minus(self.te, 1)); p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -11316,7 +11310,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.eq_begin_s = self.ts; - self.cs = 999; + self.cs = 998; _goto_level = _again; continue;;;;; } else if ($eqeqeq(3, $ret_or_1)) { @@ -11859,7 +11853,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -11950,7 +11944,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -12023,7 +12017,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -12096,7 +12090,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -12169,7 +12163,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -12242,7 +12236,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -12315,7 +12309,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -12388,7 +12382,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -12461,7 +12455,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -12534,7 +12528,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -12607,7 +12601,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -12680,7 +12674,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -12825,7 +12819,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(277, $ret_or_1)) { @@ -12853,7 +12847,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(288, $ret_or_1)) { @@ -12892,7 +12886,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(59, $ret_or_1)) { @@ -12908,7 +12902,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -12927,9 +12921,9 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER", ident_tok, ident_ts, ident_te); p = $rb_minus(ident_te, 1); if ((($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](ident_tok)))) && ($truthy($rb_lt(self.version, 25))))) { - self.cs = 466 + self.cs = 465 } else { - self.cs = 526 + self.cs = 525 }; p = $rb_plus(p, 1); @@ -12969,16 +12963,16 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.te = p; p = $rb_minus(p, 1); - if ($truthy(self.in_kwarg)) { + if ($truthy(self.context.$in_kwarg())) { p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;; } else { - self.cs = 187; + self.cs = 186; _goto_level = _again; continue;; };;; @@ -13006,7 +13000,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 187; + self.cs = 186; _goto_level = _again; continue;;;;; } else if ($eqeqeq(495, $ret_or_1)) { @@ -13033,7 +13027,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 991; + self.cs = 990; _goto_level = _again; continue;;;;; } else if ($eqeqeq(101, $ret_or_1)) { @@ -13069,7 +13063,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; self.command_start = true; self.paren_nest = $rb_plus(self.paren_nest, 1); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -13096,7 +13090,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; self.paren_nest = $rb_plus(self.paren_nest, 1); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -13157,7 +13151,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.paren_nest = $rb_plus(self.paren_nest, 1) }; self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -13205,9 +13199,9 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; if (($eqeq(self.$tok(), "}".$freeze()) || ($eqeq(self.$tok(), "]".$freeze())))) { if ($truthy($rb_ge(self.version, 25))) { - self.cs = 811 + self.cs = 810 } else { - self.cs = 532 + self.cs = 531 } }; @@ -13256,7 +13250,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(286, $ret_or_1)) { @@ -13333,7 +13327,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -13348,7 +13342,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(424, $ret_or_1)) { @@ -13377,7 +13371,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.paren_nest = $rb_plus(self.paren_nest, 1) }; self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -13387,7 +13381,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS')); - self.cs = 353; + self.cs = 352; p = $rb_plus(p, 1); _goto_level = _out; @@ -13398,7 +13392,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit("kCLASS", "class".$freeze(), self.ts, $rb_plus(self.ts, 5)); self.$emit("tLSHFT", "<<".$freeze(), $rb_minus(self.te, 2), self.te); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -13408,7 +13402,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS')); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -13419,7 +13413,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS')); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -13429,7 +13423,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS')); - self.cs = 540; + self.cs = 539; p = $rb_plus(p, 1); _goto_level = _out; @@ -13441,14 +13435,14 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit_table($$('KEYWORDS')); if (($truthy(self['$version?'](18)) && ($eqeq(self.$tok(), "not".$freeze())))) { - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; continue;;; } else { - self.cs = 495; + self.cs = 494; p = $rb_plus(p, 1); _goto_level = _out; @@ -13570,7 +13564,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER"); if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -13594,7 +13588,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER", self.$tok(self.ts, tm), self.ts, tm); p = $rb_minus(tm, 1); }; - self.cs = 495; + self.cs = 494; p = $rb_plus(p, 1); _goto_level = _out; @@ -13604,7 +13598,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('PUNCTUATION')); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -13614,7 +13608,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('PUNCTUATION')); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -13647,7 +13641,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -13662,7 +13656,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(425, $ret_or_1)) { @@ -13680,7 +13674,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER", self.$tok(self.ts, tm), self.ts, tm); p = $rb_minus(tm, 1); }; - self.cs = 495; + self.cs = 494; p = $rb_plus(p, 1); _goto_level = _out; @@ -13695,7 +13689,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -13710,7 +13704,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(341, $ret_or_1)) { @@ -13723,7 +13717,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -13738,7 +13732,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(345, $ret_or_1)) { @@ -13751,7 +13745,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -13766,7 +13760,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(344, $ret_or_1)) { @@ -13779,7 +13773,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -13795,7 +13789,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit("tUNARY_NUM", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -13813,7 +13807,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tPIPE", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = $rb_minus(p, 1); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -13822,7 +13816,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 2); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;; }; @@ -13841,7 +13835,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit("kRESCUE", "rescue".$freeze(), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 540; + self.cs = 539; p = $rb_plus(p, 1); _goto_level = _out; @@ -13852,7 +13846,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; self.$emit_table($$('KEYWORDS_BEGIN')); self.command_start = true; - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -13863,7 +13857,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;; } else if ($eqeqeq(128, $ret_or_2)) { @@ -13873,7 +13867,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tIDENTIFIER"); if (($not(self.static_env['$nil?']()) && ($truthy(self.static_env['$declared?'](self.$tok()))))) { - self.cs = 466; + self.cs = 465; p = $rb_plus(p, 1); _goto_level = _out; @@ -13892,7 +13886,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.te, 1);; p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;; } else { @@ -13908,7 +13902,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -13923,7 +13917,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(self.ts, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(343, $ret_or_1)) { @@ -13936,7 +13930,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tSYMBOL", self.$tok($rb_plus(self.ts, 1), tm), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -13966,7 +13960,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit("tLBRACK", "[".$freeze(), $rb_minus(self.te, 1), self.te); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -13997,7 +13991,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit("tLBRACK2", "[".$freeze()); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -14022,9 +14016,9 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; if (($eqeq(self.$tok(), "}".$freeze()) || ($eqeq(self.$tok(), "]".$freeze())))) { if ($truthy($rb_ge(self.version, 25))) { - self.cs = 811 + self.cs = 810 } else { - self.cs = 532 + self.cs = 531 } }; @@ -14047,7 +14041,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ if ($truthy(self['$version?'](18))) { self.$emit("tLPAREN2", "(".$freeze(), $rb_minus(self.te, 1), self.te); - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; @@ -14055,7 +14049,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tLPAREN_ARG", "(".$freeze(), $rb_minus(self.te, 1), self.te); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -14075,7 +14069,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit("tLPAREN2", "(".$freeze()); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -14096,14 +14090,14 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tLPAREN_ARG", "(".$freeze(), $rb_minus(self.te, 1), self.te); if ($truthy(self['$version?'](18))) { - self.cs = 803; + self.cs = 802; p = $rb_plus(p, 1); _goto_level = _out; continue;;; } else { - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -14141,7 +14135,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); self.$emit_table($$('PUNCTUATION')); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -14166,9 +14160,9 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; if (($eqeq(self.$tok(), "}".$freeze()) || ($eqeq(self.$tok(), "]".$freeze())))) { if ($truthy($rb_ge(self.version, 25))) { - self.cs = 811 + self.cs = 810 } else { - self.cs = 532 + self.cs = 531 } }; @@ -14213,7 +14207,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tLSHFT", "<<".$freeze(), self.ts, $rb_plus(self.ts, 2)); p = $rb_plus(self.ts, 1); - self.cs = 564; + self.cs = 563; p = $rb_plus(p, 1); _goto_level = _out; @@ -14240,7 +14234,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tCOLON", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = self.ts; }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -14261,7 +14255,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("tCOLON", self.$tok(self.ts, $rb_plus(self.ts, 1)), self.ts, $rb_plus(self.ts, 1)); p = self.ts; }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -14280,7 +14274,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -14295,7 +14289,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.$emit("kRESCUE", "rescue".$freeze(), self.ts, tm); p = $rb_minus(tm, 1); - self.cs = 540; + self.cs = 539; p = $rb_plus(p, 1); _goto_level = _out; @@ -14736,7 +14730,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -14833,7 +14827,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -14921,7 +14915,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -15009,7 +15003,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -15088,7 +15082,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -15167,7 +15161,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -15246,7 +15240,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -15328,7 +15322,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -15379,7 +15373,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ p = $rb_minus(p, 1); - self.cs = 811; + self.cs = 810; _goto_level = _again; continue;;;;; } else if ($eqeqeq(285, $ret_or_1)) { @@ -15764,7 +15758,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -15858,7 +15852,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -15943,7 +15937,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -16028,7 +16022,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ } else { self.$emit("tCHARACTER", value) }; - self.cs = 811; + self.cs = 810; p = $rb_plus(p, 1); _goto_level = _out; @@ -16629,7 +16623,7 @@ Opal.modules["parser/lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($$('Parser'), null, $nesting) }; -Opal.modules["parser/lexer/literal"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/lexer/literal"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $hash2 = Opal.hash2, $enc = Opal.enc, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $to_ary = Opal.to_ary, $def = Opal.def, $eqeq = Opal.eqeq, $rb_minus = Opal.rb_minus, $neqeq = Opal.neqeq, $not = Opal.not, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $rb_gt = Opal.rb_gt; Opal.add_stubs('attr_reader,attr_accessor,coerce_encoding,include?,send,+,[],fetch,==,!,heredoc?,start_with?,freeze,clear_buffer,emit_start_tok,type,=~,words?,delimiter?,-,extend_space,!=,flush_string,emit,each_char,===,%,>,nil?,<<,empty?,extend_content,protected,lstrip,b,dup,force_encoding,encoding,source,source_buffer,length'); @@ -16944,7 +16938,7 @@ Opal.modules["parser/lexer/literal"] = function(Opal) {/* Generated by Opal 1.4. })($nesting[0], $nesting) }; -Opal.modules["parser/lexer/stack_state"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/lexer/stack_state"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $alias = Opal.alias; Opal.add_stubs('freeze,clear,|,<<,&,>>,==,[],to_s'); @@ -17023,7 +17017,7 @@ Opal.modules["parser/lexer/stack_state"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting) }; -Opal.modules["parser/lexer/dedenter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/lexer/dedenter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $eqeq = Opal.eqeq, $send = Opal.send, $truthy = Opal.truthy, $to_ary = Opal.to_ary, $slice = Opal.slice, $rb_le = Opal.rb_le, $eqeqeq = Opal.eqeqeq, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $rb_gt = Opal.rb_gt, $rb_times = Opal.rb_times, $rb_divide = Opal.rb_divide; Opal.add_stubs('encoding,split,force_encoding,==,length,map!,each,each_char,<=,===,+,-,>,*,/,slice!,replace,join,end_with?'); @@ -17119,10 +17113,10 @@ Opal.modules["parser/lexer/dedenter"] = function(Opal) {/* Generated by Opal 1.4 })($nesting[0], $nesting) }; -Opal.modules["parser/builders/default"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/builders/default"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $to_a = Opal.to_a, $eqeqeq = Opal.eqeqeq, $hash2 = Opal.hash2, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $not = Opal.not, $send = Opal.send, $neqeq = Opal.neqeq, $to_ary = Opal.to_ary, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $rb_ge = Opal.rb_ge, $range = Opal.range, $slice = Opal.slice, $rb_gt = Opal.rb_gt, $rb_le = Opal.rb_le, $rb_lt = Opal.rb_lt; - Opal.add_stubs('attr_accessor,n0,token_map,numeric,n,value,new,loc,private,===,+@,-@,updated,join,expression,string_value,delimited_string_map,unquoted_map,collapse_string_parts?,nil?,first,children,string_map,prefix_string_map,to_sym,collection_map,empty?,==,version,diagnostic,!,type,dedent,map,interrupt,compact,uniq,sort,each_char,to_proc,static_regexp,message,<<,regexp_map,unary_op_map,binary_op_map,!=,%,size,last,each_slice,pair_keyword_map,pair_quoted_map,symbol_compose,adjust,=~,pair_keyword,accessible,upto,-,length,+,[],>=,range_map,variable_map,name,source_buffer,dup,line,emit_encoding,class,any?,end_with?,to_s,try_declare_numparam,declared?,static_env,var_send_map,top,current_arg_stack,parser,constant_map,dynamic_const_definition_allowed?,context,check_assignment_to_numparam,check_reserved_for_numparam,declare,with_expression,with_operator,join_exprs,module_definition_map,definition_map,endless_definition_map,validate_definee,keyword_map,check_duplicate_args,validate_no_forward_arg_after_restarg,emit_forward_arg,forward_arg,arg_prefix_map,kwarg_map,emit_procarg0,emit_arg_inside_procarg0,location,resize,end,call_type_for_dot,emit_kwargs,rewrite_hash_args_to_kwargs,send_map,emit_lambda,expr_map,keyword,include?,block_map,array,emit_index,index_map,send_index_map,send_binary_op_map,static_regexp_node,each,names,send_unary_op_map,check_condition,condition_map,keyword_mod_map,ternary_map,for_map,>,count,rescue_body_map,eh_keyword_map,push,none?,one?,begin,guard_map,check_lvar_name,check_duplicate_pattern_variable,match_hash_var_from_str,match_var,check_duplicate_pattern_key,static_string,pair_quoted,match_hash_var,<=,check_duplicate_arg,is_a?,[]=,arg_name_collides?,<,in_dynamic_block?,has_numparams?,max_numparam_stack,start_with?,pattern_variables,pattern_hash_keys,with,begin_pos,end_pos,encode,valid_encoding?,process,diagnostics,send,kwargs?'); + Opal.add_stubs('attr_accessor,n0,token_map,numeric,n,value,new,loc,private,===,+@,-@,updated,join,expression,string_value,delimited_string_map,unquoted_map,collapse_string_parts?,nil?,first,children,string_map,prefix_string_map,to_sym,collection_map,empty?,==,version,diagnostic,!,type,dedent,map,interrupt,compact,uniq,sort,each_char,to_proc,static_regexp,message,<<,regexp_map,unary_op_map,binary_op_map,!=,%,size,last,each_slice,pair_keyword_map,pair_quoted_map,symbol_compose,adjust,=~,pair_keyword,accessible,upto,-,length,+,[],>=,range_map,variable_map,name,source_buffer,dup,line,emit_encoding,class,any?,end_with?,to_s,try_declare_numparam,declared?,static_env,var_send_map,top,current_arg_stack,parser,constant_map,in_def,context,check_assignment_to_numparam,check_reserved_for_numparam,declare,with_expression,with_operator,join_exprs,module_definition_map,definition_map,endless_definition_map,validate_definee,keyword_map,check_duplicate_args,validate_no_forward_arg_after_restarg,emit_forward_arg,forward_arg,arg_prefix_map,kwarg_map,emit_procarg0,emit_arg_inside_procarg0,location,resize,end,call_type_for_dot,emit_kwargs,rewrite_hash_args_to_kwargs,send_map,emit_lambda,expr_map,keyword,include?,block_map,array,emit_index,index_map,send_index_map,send_binary_op_map,static_regexp_node,each,names,send_unary_op_map,check_condition,condition_map,keyword_mod_map,ternary_map,for_map,>,count,rescue_body_map,eh_keyword_map,push,none?,one?,begin,guard_map,check_lvar_name,check_duplicate_pattern_variable,match_hash_var_from_str,match_var,check_duplicate_pattern_key,static_string,pair_quoted,match_hash_var,<=,check_duplicate_arg,is_a?,[]=,arg_name_collides?,<,in_dynamic_block?,has_numparams?,max_numparam_stack,start_with?,pattern_variables,pattern_hash_keys,with,begin_pos,end_pos,encode,valid_encoding?,process,diagnostics,send,kwargs?'); return (function($base, $parent_nesting) { var self = $module($base, 'Parser'); @@ -17690,7 +17684,7 @@ Opal.modules["parser/builders/default"] = function(Opal) {/* Generated by Opal 1 return node.$updated("gvasgn") } else if ($eqeqeq("const", $ret_or_1)) { - if (!$truthy(self.parser.$context()['$dynamic_const_definition_allowed?']())) { + if ($truthy(self.parser.$context().$in_def())) { self.$diagnostic("error", "dynamic_const", nil, node.$loc().$expression()) }; return node.$updated("casgn"); @@ -19359,130 +19353,59 @@ Opal.modules["parser/builders/default"] = function(Opal) {/* Generated by Opal 1 })($nesting[0], $nesting) }; -Opal.modules["parser/context"] = function(Opal) {/* Generated by Opal 1.4.0 */ - var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $rb_gt = Opal.rb_gt, $alias = Opal.alias; +Opal.modules["parser/context"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $truthy = Opal.truthy; - Opal.add_stubs('attr_reader,freeze,<<,pop,clear,empty?,==,last,include?,rindex,stack,nil?,!,>,in_block?,in_lambda?'); + Opal.add_stubs('reset,attr_accessor,in_block,in_lambda'); return (function($base, $parent_nesting) { var self = $module($base, 'Parser'); var $nesting = [self].concat($parent_nesting); - return (function($base, $super) { + return (function($base, $super, $parent_nesting) { var self = $klass($base, $super, 'Context'); - var $proto = self.$$prototype; + var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting); - $proto.stack = nil; - self.$attr_reader("stack"); + $const_set($nesting[0], 'FLAGS', ["in_defined", "in_kwarg", "in_argdef", "in_def", "in_class", "in_block", "in_lambda"]); $def(self, '$initialize', function $$initialize() { var self = this; - - self.stack = []; - return self.$freeze(); - }, 0); - - $def(self, '$push', function $$push(state) { - var self = this; - - return self.stack['$<<'](state) - }, 1); - - $def(self, '$pop', function $$pop() { - var self = this; - - return self.stack.$pop() + return self.$reset() }, 0); $def(self, '$reset', function $$reset() { var self = this; - return self.stack.$clear() - }, 0); - - $def(self, '$empty?', function $Context_empty$ques$1() { - var self = this; - - return self.stack['$empty?']() - }, 0); - - $def(self, '$in_class?', function $Context_in_class$ques$2() { - var self = this; - - return self.stack.$last()['$==']("class") - }, 0); - - $def(self, '$indirectly_in_def?', function $Context_indirectly_in_def$ques$3() { - var self = this, $ret_or_1 = nil; - - if ($truthy(($ret_or_1 = self.stack['$include?']("def")))) { - return $ret_or_1 - } else { - return self.stack['$include?']("defs") - } - }, 0); - - $def(self, '$class_definition_allowed?', function $Context_class_definition_allowed$ques$4() { - var self = this, def_index = nil, sclass_index = nil, $ret_or_1 = nil, $ret_or_2 = nil; - - def_index = $send(self.$stack(), 'rindex', [], function $$5(item){ - - - if (item == null) item = nil;; - return ["def", "defs"]['$include?'](item);}, 1); - sclass_index = self.$stack().$rindex("sclass"); - if ($truthy(($ret_or_1 = def_index['$nil?']()))) { - return $ret_or_1 - } else { - - if ($truthy(($ret_or_2 = sclass_index['$nil?']()['$!']()))) { - return $rb_gt(sclass_index, def_index) - } else { - return $ret_or_2 - }; - }; - }, 0); - $alias(self, "module_definition_allowed?", "class_definition_allowed?"); - $alias(self, "dynamic_const_definition_allowed?", "class_definition_allowed?"); - - $def(self, '$in_block?', function $Context_in_block$ques$6() { - var self = this; - - return self.stack.$last()['$==']("block") - }, 0); - - $def(self, '$in_lambda?', function $Context_in_lambda$ques$7() { - var self = this; - - return self.stack.$last()['$==']("lambda") + self.in_defined = false; + self.in_kwarg = false; + self.in_argdef = false; + self.in_def = false; + self.in_class = false; + self.in_block = false; + return (self.in_lambda = false); }, 0); - - $def(self, '$in_dynamic_block?', function $Context_in_dynamic_block$ques$8() { + $send(self, 'attr_accessor', $to_a($$('FLAGS'))); + return $def(self, '$in_dynamic_block?', function $Context_in_dynamic_block$ques$1() { var self = this, $ret_or_1 = nil; - if ($truthy(($ret_or_1 = self['$in_block?']()))) { + if ($truthy(($ret_or_1 = self.$in_block()))) { return $ret_or_1 } else { - return self['$in_lambda?']() + return self.$in_lambda() } }, 0); - return $def(self, '$in_def_open_args?', function $Context_in_def_open_args$ques$9() { - var self = this; - - return self.stack.$last()['$==']("def_open_args") - }, 0); - })($nesting[0], null) + })($nesting[0], null, $nesting) })($nesting[0], $nesting) }; -Opal.modules["parser/max_numparam_stack"] = function(Opal) {/* Generated by Opal 1.4.0 */ - var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $rb_minus = Opal.rb_minus, $send = Opal.send, $to_a = Opal.to_a; +Opal.modules["parser/max_numparam_stack"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $hash2 = Opal.hash2, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus; - Opal.add_stubs('attr_reader,==,size,set,top,>,max,last,push,pop,private,-,length,[]='); + Opal.add_stubs('attr_reader,==,size,set,top,>,max,[],last,push,pop,private,[]=,-'); return (function($base, $parent_nesting) { var self = $module($base, 'Parser'); @@ -19541,34 +19464,46 @@ Opal.modules["parser/max_numparam_stack"] = function(Opal) {/* Generated by Opal $def(self, '$top', function $$top() { var self = this; - return self.stack.$last() + return self.stack.$last()['$[]']("value") }, 0); - $def(self, '$push', function $$push() { - var self = this; + $def(self, '$push', function $$push($kwargs) { + var static$, self = this; - return self.stack.$push(0) - }, 0); + + + if ($kwargs == null) { + $kwargs = $hash2([], {}); + } else if (!$kwargs.$$is_hash) { + throw Opal.ArgumentError.$new('expected kwargs'); + }; + + if (!Opal.hasOwnProperty.call($kwargs.$$smap, 'static')) { + throw Opal.ArgumentError.$new('missing keyword: static'); + } + static$ = $kwargs.$$smap["static"];; + return self.stack.$push($hash2(["value", "static"], {"value": 0, "static": static$})); + }, 1); $def(self, '$pop', function $$pop() { var self = this; - return self.stack.$pop() + return self.stack.$pop()['$[]']("value") }, 0); self.$private(); return $def(self, '$set', function $$set(value) { var self = this, $writer = nil; - $writer = [$rb_minus(self.stack.$length(), 1), value]; - $send(self.stack, '[]=', $to_a($writer)); + $writer = ["value", value]; + $send(self.stack.$last(), '[]=', $to_a($writer)); return $writer[$rb_minus($writer["length"], 1)]; }, 1); })($nesting[0], null, $nesting) })($nesting[0], $nesting) }; -Opal.modules["parser/current_arg_stack"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/current_arg_stack"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $rb_minus = Opal.rb_minus, $send = Opal.send, $to_a = Opal.to_a; Opal.add_stubs('attr_reader,freeze,==,size,<<,-,length,[]=,pop,clear,last'); @@ -19635,7 +19570,7 @@ Opal.modules["parser/current_arg_stack"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting) }; -Opal.modules["parser/variables_stack"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/variables_stack"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('push,empty?,<<,new,pop,clear,last,to_sym,include?'); @@ -19698,7 +19633,7 @@ Opal.modules["parser/variables_stack"] = function(Opal) {/* Generated by Opal 1. })($nesting[0], $nesting) }; -Opal.modules["parser/base"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $defs = Opal.defs, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $gvars = Opal.gvars, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $def = Opal.def, $not = Opal.not, $eqeqeq = Opal.eqeqeq, $to_ary = Opal.to_ary, $hash2 = Opal.hash2; Opal.add_stubs('default_parser,setup_source_buffer,default_encoding,parse,parse_with_comments,read,new,all_errors_are_fatal=,diagnostics,-,ignore_warnings=,lambda,puts,render,consumer=,force_encoding,dup,==,name,raw_source=,source=,private_class_method,attr_reader,version,diagnostics=,static_env=,context=,parser=,[],class,reset,source_buffer=,do_parse,comments=,comments,tokens=,!,raise,tokens,private,advance,===,diagnostic,map,process,yyerror,token_to_str'); @@ -19979,7 +19914,7 @@ Opal.modules["parser/base"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["parser/rewriter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $const_set = Opal.const_set, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $send2 = Opal.send2, $find_super = Opal.find_super; Opal.add_stubs('new,process,include?,type,remove,wrap,insert_before,insert_after,replace,freeze,join,extend,warn_of_deprecation,class,warned_of_deprecation=,-'); @@ -20061,7 +19996,7 @@ Opal.modules["parser/rewriter"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["parser/tree_rewriter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser/tree_rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $hash = Opal.hash, $def = Opal.def; Opal.add_stubs('new,process,include?,type,remove,wrap,insert_before,insert_after,replace'); @@ -20132,7 +20067,7 @@ Opal.modules["parser/tree_rewriter"] = function(Opal) {/* Generated by Opal 1.4. })($nesting[0], $nesting) }; -Opal.modules["parser"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $module = Opal.module; Opal.add_stubs('=~,require,raise'); @@ -20218,10 +20153,10 @@ Opal.modules["parser"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ - var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $not = Opal.not, $send = Opal.send, $eqeq = Opal.eqeq, $rb_gt = Opal.rb_gt, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $hash = Opal.hash, $const_set = Opal.const_set, $to_ary = Opal.to_ary, $hash2 = Opal.hash2, $slice = Opal.slice; +Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.1 */ + var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $not = Opal.not, $hash2 = Opal.hash2, $send = Opal.send, $rb_gt = Opal.rb_gt, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $hash = Opal.hash, $const_set = Opal.const_set, $to_ary = Opal.to_ary, $eqeq = Opal.eqeq, $slice = Opal.slice; - Opal.add_stubs('require,end_with?,[],!,include?,diagnostic,children,in_dynamic_block?,context,declared?,static_env,=~,expression,loc,has_ordinary_params?,max_numparam_stack,dup,stack,pop,reverse_each,==,>,declare,register,to_i,new,each,split,empty?,[]=,-,+,push,compstmt,<<,preexe,nil?,begin_body,state=,alias,gvar,back_ref,undef_method,condition_mod,loop_mod,rescue_body,postexe,multi_assign,assign,array,op_assign,index,call_method,const_op_assignable,const_fetch,endless_method_name,def_endless_method,cmdarg,cond,unextend,def_endless_singleton,logical_op,not_op,command_start=,in_kwarg,in_kwarg=,match_pattern,match_pattern_p,extend_static,block,keyword_cmd,multi_lhs,begin,splat,concat,assignable,index_asgn,attr_asgn,const_global,const,symbol_internal,range_inclusive,range_exclusive,binary_op,unary_op,match_op,ternary,associate,declared_forward_args?,forwarded_args,block_pass,declared_anonymous_blockarg?,begin_keyword,condition,loop,case,case_match,for,class_definition_allowed?,def_class,def_sclass,module_definition_allowed?,def_module,def_method,def_singleton,in_class?,arg,restarg,size,procarg0,args,has_ordinary_params!,set,shadowarg,extend_dynamic,call_lambda,has_numparams?,numargs,top,any?,when,in_pattern,if_guard,unless_guard,match_with_trailing_comma,array_pattern,find_pattern,hash_pattern,match_as,match_alt,const_pattern,match_rest,match_pair,match_label,match_nil_pattern,accessible,match_var,ident,pin,string_compose,dedent_string,dedent_level,string,character,xstring_compose,regexp_options,regexp_compose,words_compose,word,symbols_compose,string_internal,ivar,cvar,symbol,symbol_compose,respond_to?,negate,unary_num,integer,float,rational,complex,nil,self,true,false,__FILE__,__LINE__,__ENCODING__,nth_ref,declare_forward_args,forward_arg,check_kwarg_name,kwoptarg,kwarg,kwnilarg,kwrestarg,optarg,blockarg,declare_anonymous_blockarg,pair,pair_keyword,pair_label,pair_quoted,kwsplat,yyerrok'); + Opal.add_stubs('require,end_with?,[],!,include?,diagnostic,extend_static,push,cmdarg,cond,unextend,pop,children,in_dynamic_block?,declared?,static_env,=~,expression,loc,has_ordinary_params?,max_numparam_stack,dup,stack,reverse_each,>,declare,register,to_i,new,each,split,empty?,[]=,-,+,compstmt,<<,preexe,nil?,begin_body,state=,alias,gvar,back_ref,undef_method,condition_mod,loop_mod,rescue_body,postexe,multi_assign,assign,array,op_assign,index,call_method,const_op_assignable,const_fetch,endless_method_name,def_endless_method,local_pop,in_def,in_def=,def_endless_singleton,logical_op,not_op,command_start=,in_kwarg,in_kwarg=,match_pattern,match_pattern_p,local_push,in_argdef=,in_block=,in_block,block,keyword_cmd,multi_lhs,begin,splat,concat,assignable,index_asgn,==,attr_asgn,const_global,const,symbol_internal,range_inclusive,range_exclusive,binary_op,unary_op,match_op,in_defined=,ternary,associate,declared_forward_args?,forwarded_args,block_pass,declared_anonymous_blockarg?,begin_keyword,condition,loop,case,case_match,for,in_class=,def_class,in_class,def_sclass,def_module,def_method,def_singleton,context,in_lambda,arg,restarg,size,procarg0,args,has_ordinary_params!,set,shadowarg,extend_dynamic,in_lambda=,call_lambda,has_numparams?,numargs,top,any?,when,in_pattern,if_guard,unless_guard,match_with_trailing_comma,array_pattern,find_pattern,hash_pattern,match_as,match_alt,const_pattern,match_rest,match_pair,match_label,match_nil_pattern,accessible,match_var,ident,pin,string_compose,dedent_string,dedent_level,string,character,xstring_compose,regexp_options,regexp_compose,words_compose,word,symbols_compose,string_internal,ivar,cvar,symbol,symbol_compose,respond_to?,negate,unary_num,integer,float,rational,complex,nil,self,true,false,__FILE__,__LINE__,__ENCODING__,nth_ref,declare_forward_args,forward_arg,check_kwarg_name,kwoptarg,kwarg,kwnilarg,kwrestarg,optarg,blockarg,declare_anonymous_blockarg,pair,pair_keyword,pair_label,pair_quoted,kwsplat,yyerrok'); self.$require("racc/parser.rb"); self.$require("parser"); @@ -20235,7 +20170,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ var $nesting = [self].concat($parent_nesting), $$ = Opal.$r($nesting), clist = nil, racc_action_table = nil, arr = nil, idx = nil, racc_action_check = nil, racc_action_pointer = nil, racc_action_default = nil, racc_goto_table = nil, racc_goto_check = nil, racc_goto_pointer = nil, racc_goto_default = nil, racc_reduce_table = nil, racc_reduce_n = nil, racc_shift_n = nil, racc_token_table = nil, racc_nt_base = nil, racc_use_result_var = nil, $proto = self.$$prototype; - $proto.current_arg_stack = $proto.max_numparam_stack = $proto.builder = $proto.lexer = $proto.static_env = $proto.context = $proto.pattern_variables = $proto.last_token = $proto.pattern_hash_keys = nil; + $proto.static_env = $proto.lexer = $proto.max_numparam_stack = $proto.context = $proto.current_arg_stack = $proto.builder = $proto.pattern_variables = $proto.last_token = $proto.pattern_hash_keys = nil; $def(self, '$version', function $$version() { @@ -20258,37 +20193,55 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ } }, 1); + $def(self, '$local_push', function $$local_push() { + var self = this; + + + self.static_env.$extend_static(); + self.lexer.$cmdarg().$push(false); + self.lexer.$cond().$push(false); + return self.max_numparam_stack.$push($hash2(["static"], {"static": true})); + }, 0); + + $def(self, '$local_pop', function $$local_pop() { + var self = this; + + + self.static_env.$unextend(); + self.lexer.$cmdarg().$pop(); + self.lexer.$cond().$pop(); + return self.max_numparam_stack.$pop(); + }, 0); + $def(self, '$try_declare_numparam', function $$try_declare_numparam(node) { - var self = this, name = nil, location = nil, raw_context = nil, raw_max_numparam_stack = nil; + var self = this, name = nil, location = nil, raw_max_numparam_stack = nil; name = node.$children()['$[]'](0); - if ((($truthy(name['$=~'](/^_[1-9]$/)) && ($not(self.$static_env()['$declared?'](name)))) && ($truthy(self.$context()['$in_dynamic_block?']())))) { + if ((($truthy(name['$=~'](/^_[1-9]$/)) && ($not(self.$static_env()['$declared?'](name)))) && ($truthy(self.context['$in_dynamic_block?']())))) { location = node.$loc().$expression(); if ($truthy(self.$max_numparam_stack()['$has_ordinary_params?']())) { self.$diagnostic("error", "ordinary_param_defined", nil, [nil, location]) }; - raw_context = self.$context().$stack().$dup(); raw_max_numparam_stack = self.$max_numparam_stack().$stack().$dup(); - raw_context.$pop(); raw_max_numparam_stack.$pop(); - (function(){var $brk = Opal.new_brk(); try {return $send(raw_context, 'reverse_each', [], function $$1(outer_scope){var self = $$1.$$s == null ? this : $$1.$$s, outer_scope_has_numparams = nil; + (function(){var $brk = Opal.new_brk(); try {return $send(raw_max_numparam_stack, 'reverse_each', [], function $$1(outer_scope){var self = $$1.$$s == null ? this : $$1.$$s, outer_scope_has_numparams = nil; if (outer_scope == null) outer_scope = nil;; - if (($eqeq(outer_scope, "block") || ($eqeq(outer_scope, "lambda")))) { + if ($truthy(outer_scope['$[]']("static"))) { + + Opal.brk(nil, $brk) + } else { - outer_scope_has_numparams = $rb_gt(raw_max_numparam_stack.$pop(), 0); + outer_scope_has_numparams = $rb_gt(outer_scope['$[]']("value"), 0); if ($truthy(outer_scope_has_numparams)) { return self.$diagnostic("error", "numparam_used_in_outer_scope", nil, [nil, location]) } else { return nil }; - } else { - - Opal.brk(nil, $brk) };}, {$$arity: 1, $$s: self, $$brk: $brk}) } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})(); self.$static_env().$declare(name); @@ -20298,8 +20251,8 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return false }; }, 1); - clist = ["-319,308,617,995,597,-117,-116,-319,-319,-319,218,219,308,-319,-319", "919,-319,919,919,-121,-122,617,-725,-118,-319,617,660,624,658,1207,234", "-123,-119,713,943,828,-319,-319,617,-319,-319,-319,-319,-319,-116,-117", "-124,617,617,-124,925,714,942,123,236,921,1142,1143,122,922,237,918", "237,-123,-504,303,-319,-319,-319,-319,-319,-319,-319,-319,-319,-319", "-319,-319,-319,-319,218,219,-319,-319,-319,-713,684,-319,307,-124,-319", "-123,659,-319,657,237,218,219,-319,307,-319,119,-319,-319,237,-319,-319", "-319,-319,-319,-607,-319,994,-319,-108,-107,823,-607,-607,-607,123,-119", "-607,-607,-607,122,-607,-319,-112,-113,-319,-319,-109,-113,-607,-319", "-607,-607,-607,123,-114,-110,-319,123,122,-122,-607,-607,122,-607,-607", "-607,-607,-607,-121,-120,123,-118,-115,984,-109,122,-116,-117,-124,123", "123,-116,-117,-124,122,122,1117,308,237,132,-607,-607,-607,-607,-607", "-607,-607,-607,-607,-607,-607,-607,-607,-607,123,-725,-607,-607,-607", "122,-607,-607,609,215,-607,611,123,-607,-607,-111,-607,122,-607,-123", "-607,230,-607,-607,-123,-607,-607,-607,-607,-607,123,-607,-610,-607", "-621,122,-109,237,-622,-610,-610,-610,-712,-122,-610,-610,-610,-607", "-610,-119,-607,-607,-607,-607,-119,-607,-610,-607,-610,-610,-610,230", "-607,216,1118,-607,-120,-110,-610,-610,307,-610,-610,-610,-610,-610", "-109,-737,217,-109,-712,-111,-121,-120,-112,-118,220,-121,-120,519,-118", "-109,887,-116,624,218,219,-117,-610,-610,-610,-610,-610,-610,-610,-610", "-610,-610,-610,-610,-610,-610,-725,297,-610,-610,-610,-737,-610,-610", "-713,-111,-610,870,-111,-610,-610,645,-610,237,-610,-712,-610,-110,-610", "-610,-111,-610,-610,-610,-610,-610,308,-610,-319,-610,101,102,-124,358", "-112,-319,-319,-319,101,102,-319,-319,-319,-610,-319,-122,-610,-610", "-610,-610,-122,-610,-319,-610,-319,-319,-319,-110,-610,-111,-110,-610", "504,503,-319,-319,-118,-319,-319,-319,-319,-319,-110,237,-112,647,646", "-112,645,-607,630,645,230,887,954,645,-607,630,359,-112,303,631,1057", "828,-319,-319,-319,-319,-319,-319,-319,-319,-319,-319,-319,-319,-319", "-319,103,104,-319,-319,-319,307,916,-319,103,104,-319,913,645,-319,-319", "645,-319,-614,-319,237,-319,428,-319,-319,-614,-319,-319,-319,-319,-319", "-737,-319,914,-319,647,646,-607,647,646,643,645,647,646,643,856,645", "468,-319,645,1029,-319,-319,-319,-319,796,-319,645,-319,1057,-716,679", "230,-319,-628,680,-122,-716,-716,-716,507,-119,-716,-716,-716,224,-716", "647,646,648,647,646,627,-614,-716,-716,-716,-716,-716,679,854,625,-121", "218,219,518,-716,-716,680,-716,-716,-716,-716,-716,520,647,646,661,-110", "-118,647,646,643,647,646,650,645,-622,-737,521,-119,647,646,656,-121", "236,-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,-716", "-716,225,750,-716,-716,-716,-112,915,-716,-119,-102,-716,496,-616,-716", "-716,555,-716,-121,-716,-616,-716,-88,-716,-716,-108,-716,-716,-716", "-716,-716,-319,-716,-716,-716,979,887,-117,-319,-319,-319,647,646,652", "-319,-319,609,-319,-716,611,497,-716,-716,-716,-716,-319,-716,224,-716", "567,123,569,1050,-716,301,122,-120,-319,-319,571,-319,-319,-319,-319", "-319,979,887,132,-616,488,224,485,484,483,493,486,425,1181,-610,630", "-87,427,426,954,496,-610,635,-319,-319,-319,-319,-319,-319,-319,-319", "-319,-319,-319,-319,-319,-319,237,-617,-319,-319,-319,491,684,-319,-617", "582,-319,225,224,-319,501,500,504,503,-319,301,-319,497,-319,-319,583", "-319,-319,-319,-319,-319,123,-319,-716,-319,225,122,590,87,123,-716", "-716,-716,-610,122,312,-716,-716,-319,-716,88,-319,-319,237,-319,230", "-319,-716,-716,230,89,609,482,-319,608,609,-122,-617,611,-716,-716,303", "-716,-716,-716,-716,-716,237,225,594,1190,488,224,485,484,483,493,486", "-618,1157,597,944,945,218,219,-618,496,600,1155,-716,-716,-716,-716", "-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,261,-621,-716,-716", "-716,491,685,-716,237,612,-716,234,-615,-716,501,500,504,503,-716,-615", "-716,497,-716,-716,-114,-716,-716,-716,-716,-716,613,-716,-716,-716", "225,870,-123,571,624,488,-618,485,484,483,493,486,417,-716,-107,-612", "-716,-716,-710,-111,496,-716,-612,-613,-115,-716,-116,482,-716,628,-613", "-120,-716,-716,-716,493,-124,629,-716,-716,637,-716,491,-615,662,496", "665,666,-109,-716,-716,501,500,504,503,-292,224,668,497,669,-118,-716", "-716,672,-716,-716,-716,-716,-716,673,-610,237,670,677,224,678,303,-610", "504,503,-612,633,-710,497,237,691,-610,692,-613,237,635,-716,-716,-716", "-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,-710,694,-716", "-716,-716,697,685,-716,-354,698,-716,700,702,-716,704,-354,225,715,-716", "716,-716,720,-716,-716,-354,-716,-716,-716,-716,-716,-610,-716,-716", "-716,225,722,-619,728,729,261,261,224,-620,-619,750,261,261,-716,589", "-620,-716,-716,-619,-716,496,-716,-320,587,-620,237,784,237,-716,-320", "237,-120,330,77,78,26,11,65,-320,-354,237,71,72,-102,799,237,75,-716", "73,74,76,35,36,79,80,603,810,814,497,237,81,33,32,111,110,112,113,-619", "816,23,1050,819,225,-620,824,10,53,332,12,115,114,116,105,64,107,106", "108,-320,109,117,118,224,101,102,49,50,48,-320,223,-716,825,224,278", "279,-320,829,-716,221,599,853,857,-712,858,-320,-293,-716,45,517,871", "38,555,555,66,67,-310,883,68,887,40,907,908,-310,52,237,-716,911,261", "237,277,276,-310,24,920,937,938,939,99,87,90,91,956,92,94,93,95,958", "225,297,964,88,98,966,-320,968,-716,569,225,82,258,89,103,104,260,259", "46,47,330,77,78,26,11,65,571,810,237,71,72,303,303,-310,75,-709,73,74", "76,35,36,79,80,126,127,128,129,130,81,33,32,111,110,112,113,810,488", "23,485,484,483,261,486,10,53,332,12,115,114,116,105,64,107,106,108,887", "109,117,118,224,101,102,49,50,48,-319,516,-607,981,224,982,237,-319", "706,-607,517,1181,-713,237,-709,992,-319,710,-607,45,635,237,38,-294", "237,66,67,-319,1003,68,1007,40,-292,1011,-319,52,697,-709,714,-713,1014", "848,849,-319,24,850,117,118,1016,99,87,90,91,1018,92,94,93,95,1020,225", "1020,237,88,98,770,-319,237,-607,237,225,82,1048,89,103,104,1051,919", "46,47,330,77,78,26,11,65,966,1063,237,71,72,810,1079,-319,75,1081,73", "74,76,35,36,79,80,253,1086,1087,1092,1093,81,33,32,111,110,112,113,1094", "488,23,485,484,483,-295,486,10,53,332,12,115,114,116,105,64,107,106", "108,1107,109,117,118,1108,101,102,49,50,48,261,265,266,267,268,278,279", "273,274,269,270,1109,254,255,237,237,271,272,237,45,237,252,38,493,237", "66,67,237,919,68,1116,40,258,496,264,52,260,259,237,256,257,277,276", "262,24,263,1122,1123,1125,99,87,90,91,697,92,94,93,95,1128,1131,1133", "1135,88,98,237,275,504,503,1137,1147,82,497,89,103,104,1158,1159,46", "47,330,77,78,26,11,65,1020,1020,1020,71,72,1166,1179,1182,75,1187,73", "74,76,35,36,79,80,126,127,128,129,130,81,33,32,111,110,112,113,1188", "691,23,1108,1198,1198,697,674,10,53,332,12,115,114,116,105,64,107,106", "108,1201,109,117,118,1203,101,102,49,50,48,261,265,266,267,268,278,279", "273,274,269,270,1205,254,255,1207,1207,271,272,237,45,1020,948,38,952", "951,66,67,953,1198,68,-713,40,258,-712,264,52,260,259,1224,256,257,277", "276,262,24,263,1207,1207,1207,99,87,90,91,3,92,94,93,95,950,,,,88,98", ",275,,-264,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75", ",73,74,76,35,36,79,80,126,127,128,129,130,81,33,32,111,110,112,113,", ",23,,,,,884,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118", ",101,102,49,50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255", ",,271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277", "276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89", "103,104,,,46,47,7,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80", "126,127,128,129,130,81,33,32,111,110,112,113,,,23,,,,,674,10,53,9,12", "115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265", "266,267,268,278,279,273,274,269,270,,254,255,,,271,272,,45,,,38,,,66", "67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87", "90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89,103,104,,,46,47,330,77", "78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110", "112,113,,,23,,,,,912,10,53,332,12,115,114,116,105,64,107,106,108,,109", "117,118,,101,102,49,50,48,261,265,266,267,268,278,279,273,274,269,270", ",254,255,,,271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256", "257,277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,", ",,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76", "35,36,79,80,,,,,,81,33,32,111,110,112,113,,1152,23,485,484,483,,486", "10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49", "50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255,,,271,272", ",45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24", "263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89,103,104,,", "46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81", "33,32,111,110,112,113,,1152,23,485,484,483,,486,10,53,332,12,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267", "268,278,279,273,274,269,270,,254,255,,,271,272,,45,,,38,,,66,67,,,68", ",40,258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,", "92,94,93,95,,,,,88,98,,275,,,,,82,,89,103,104,,,46,47,330,77,78,26,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113", ",,23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,", "101,102,49,50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255", ",,271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277", "276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,237,275,,,,,82", ",89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36", "79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267,268", "278,279,273,274,269,270,,254,255,,,271,272,,45,,,38,,,66,67,,,68,,40", "258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,,92,94", "93,95,,,,,88,98,,275,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,", ",,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,", "23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255,,", "271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276", "262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89,103", "104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80", ",,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267,268,278", "279,273,274,269,270,,254,255,,,271,272,,45,,,38,,,66,67,,,68,,40,258", ",264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,,92,94,93", "95,,,,,88,98,,275,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71", "72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,", ",,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102", "49,50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255,,,271", "272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262", "24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89,103,104", ",,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,", ",81,33,32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116,105,64", "107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267,268,278,279", "273,274,269,270,,254,255,,,271,272,,45,,,38,,,66,67,,,68,,40,258,,264", "52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,", ",,,88,98,,275,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72", ",,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,", "10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49", "50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255,,,271,272", ",45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24", "263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89,103,104,,", "46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81", "33,32,111,110,112,113,,488,23,485,484,483,,486,10,53,332,12,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,488,,485,484,483", ",486,,706,,488,,485,484,483,,486,710,,45,,,38,,,66,67,,261,68,,40,,", ",52,,706,,261,,,,,24,,710,706,,99,87,90,91,,92,94,93,95,,,258,,88,98", "260,259,,256,257,,82,258,89,103,104,260,259,46,47,330,77,78,26,11,65", ",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,", "488,23,485,484,483,,486,10,53,332,12,115,114,116,105,64,107,106,108", ",109,117,118,,101,102,49,50,48,261,265,266,267,268,278,279,273,706,269", "270,,,,,,271,272,,45,,,38,,,66,67,,261,68,,40,258,,264,52,260,259,,256", "257,277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,258,,88,98,260", "259,,256,257,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,", "75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,488,23,485,484", "483,,486,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,261,,,,,,,,706,,,,,,,,271,272,,45,,,38,,,66,67,,,68,,40", "258,,264,52,260,259,,256,257,,,262,24,263,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72,", ",,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10", "53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50", "48,261,265,266,267,268,278,279,,,269,270,,,,,,271,272,,45,,,38,,,66", "67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87", "90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,330,77,78", "26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110", "112,113,,,23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117", "118,,101,102,49,50,48,261,265,266,267,268,278,279,273,274,269,270,,-738", "-738,,,271,272,,45,,,334,,,66,67,,,68,,40,258,,264,52,260,259,,256,257", "277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89", "103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79", "80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,-738,-738,-738", "-738,278,279,,,-738,-738,,,,,,271,272,,45,,,38,,,66,67,,,68,,40,258", ",264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,,92,94,93", "95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72", ",,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,", "10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49", "50,48,261,-738,-738,-738,-738,278,279,,,-738,-738,,,,,,271,272,,45,", ",334,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24,263", ",,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,330", "77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111", "110,112,113,,,23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109", "117,118,,101,102,49,50,48,261,-738,-738,-738,-738,278,279,,,-738,-738", ",,,,,271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257", "277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89", "103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79", "80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267,268", "278,279,273,274,269,270,,-738,-738,,,271,272,,45,,,38,,,66,67,,,68,", "40,258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,,92", "94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,", ",,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,", "23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,261,-738,-738,-738,-738,278,279,,,-738,-738,,,,,,271,272", ",45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24", "263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46", "47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33", "32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116,105,64,107,106", "108,,109,117,118,,101,102,49,50,48,261,-738,-738,-738,-738,278,279,", ",-738,-738,,,,,,271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259", ",256,257,277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,", ",,,,82,,89,103,104,,,46,47,7,77,78,26,11,65,,,,71,72,,,,75,,73,74,76", "35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,9,12,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267", "268,278,279,273,274,269,270,,-738,-738,,,271,272,,45,,,38,,,66,67,,", "68,,40,258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91", ",92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,330,77,78,26,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113", ",,23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,", "101,102,49,50,48,261,,,,,,,,,,,,,,,,271,272,,45,,,334,,,66,67,,,68,", "40,258,,264,52,260,259,,256,257,,,262,24,263,,,,99,87,90,91,,92,94,93", "95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76", "351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,-738,-738", "-738,-738,278,279,,,-738,-738,,,,,,271,272,,242,,,250,,,66,67,,,68,", ",258,,264,52,260,259,,256,257,277,276,262,247,263,,,,99,87,90,91,,92", "94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73", "74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,", ",115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265", "266,267,268,278,279,273,274,269,270,,-738,-738,,,271,272,,242,,,250", ",,66,67,,,68,,,258,,264,52,260,259,,256,257,277,276,262,247,263,,,,99", "87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46", "47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251", ",,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50", "48,261,,,,,,,,,,,,,,,,271,272,,242,,,250,,,66,67,,,68,,,258,,264,52", "260,259,,256,257,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77", "78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,", "81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106", "108,,109,117,118,,101,102,49,50,48,261,,,,,,,,,,,,,,,,271,272,,242,", ",250,,,66,67,,,68,,,258,,264,52,260,259,,256,257,,,,247,,,,,99,87,90", "91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,", "75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,", ",,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48", "261,,,,,,,,,,,,,,,,271,272,,242,,,250,,,66,67,,,68,,,258,,,52,260,259", ",256,257,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82", "65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354", "111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109", "117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68", ",,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78", "26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81", "346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106", "108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66", "67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,", ",,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80", ",,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64", "107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,", "250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,", ",,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352", "79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351", "352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,", ",242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93", "95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76", "351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92", "94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73", "74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,", ",115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,", ",,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90", "91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,77,78,26,11,65", ",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,", ",23,,,,,,10,53,,12,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,", ",,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103", "104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110", "112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118", ",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52", ",,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65", "89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111", "110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117", "118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,433", ",,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26", "82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346", "354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108", ",109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67", ",,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77", "78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,", "81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106", "108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66", "67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,", ",,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,", ",,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107", "106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250", ",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88", "98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80", ",,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107", "106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250", ",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88", "98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80", ",,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107", "106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250", ",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88", "98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80", ",,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107", "106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250", ",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88", "98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79", "80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,", "242,,,250,,,66,67,,,68,,,,319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92", "94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73", "74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,", ",115,114,116,105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,", ",,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,793,,319,,52,,,325,,,,,,247", ",,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104", "71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113", ",,23,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102", "49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24", ",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104", "71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112", "113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,", ",,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,-434", ",46,47,,,,-434,-434,-434,,,-434,-434,-434,,-434,,,,,,,,-434,-434,-434", "-434,,,,,,,,,-434,-434,,-434,-434,-434,-434,-434,,,,,,,,,,,,,,,,,,,", ",,,-434,-434,-434,-434,-434,-434,-434,-434,-434,-434,-434,-434,-434", "-434,,,-434,-434,-434,,,-434,,303,-434,,,-434,-434,,-434,,-434,,-434", ",-434,-434,,-434,-434,-434,-434,-434,-326,-434,-434,-434,,,,-326,-326", "-326,,,-326,-326,-326,,-326,-434,,,-434,-434,,-434,-326,-434,-326,-326", ",,,,-434,,,,-326,-326,,-326,-326,-326,-326,-326,,,,,,,,,,,,,,,,,,,,", ",,-326,-326,-326,-326,-326,-326,-326,-326,-326,-326,-326,-326,-326,-326", ",,-326,-326,-326,,,-326,,312,-326,,,-326,-326,,-326,,-326,,-326,,-326", "-326,,-326,-326,-326,-326,-326,,-326,,-326,,,,,,,,,,,,,,-326,,,-326", "-326,,-326,,-326,77,78,26,,65,,-326,,71,72,,,,75,,73,74,76,351,352,79", "80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35", "36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116", "105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,", ",,,,242,,,250,,,66,67,,,68,,321,,319,,52,,,325,,,,,,247,,,,,99,322,90", "91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,77,78,26,11,65", ",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,", ",23,,,,,,10,53,,12,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,", ",,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103", "104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112", "113,,,23,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,", ",,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103", "104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112", "113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118", ",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319", ",52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78", "26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81", "346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106", "108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66", "67,,,68,,793,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98", ",,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,", ",,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107", "106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250", ",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88", "98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79", "80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,862,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93", "95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,77,78,26,11,65,,,,71,72,,", ",75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10", "53,,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48", ",,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,99", "87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46", "47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251", ",,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50", "48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,", ",99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251", ",,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118,,101,102,49", "50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52,,,325", ",,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89", "103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110", "112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117", "118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321", ",319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77", "78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81", "33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108", "324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66", "67,,,68,,321,,319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,", ",,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351", "352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116", "105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,", ",,,,242,,,250,,,66,67,,,68,,,,319,,52,,,325,,,,,,247,,,,,99,322,90,91", ",92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75", ",73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,", ",115,114,116,105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,", ",,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52,,,325,,,,,,247", ",,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104", "71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112", "113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,,,52,,", ",,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89", "103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111", "110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109", "117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68", ",,,,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77", "78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,", "81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106", "108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,", ",66,67,,,68,,793,,,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35", "36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,", ",,,88,98,237,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35", "36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,", ",,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36", "79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,", ",,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351", "352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,", ",242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93", "95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76", "351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92", "94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73", "74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,", ",115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,", ",,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90", "91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,", "75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53", ",,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,", ",,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87", "90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47", ",75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,", "53,,,115,114,116,105,64,107,106,108,324,109,117,118,,101,102,49,50,48", ",,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52,,,325,,,,,,247", ",,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47", "77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111", "110,112,113,,,23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109", "117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40", ",,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,417,82", ",89,103,104,,,46,47,77,78,26,,65,,,,71,72,,,,75,,73,74,76,351,352,79", "80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351", "352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116", "105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,", ",,,,242,,,250,,,66,67,,,68,,,,319,,52,,,325,,,,,,247,,,,,99,322,90,91", ",92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75", ",73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,", "53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,", ",,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99", "87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46", "47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251", ",,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50", "48,,,,,,,,,,,,,,,,,,,,242,,,250,603,,66,67,,,68,,,,,,52,,,,,,,,,247", ",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104", "71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112", "113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118", ",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,793,,319", ",52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78", "26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81", "346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106", "108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66", "67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,", ",,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80", ",,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64", "107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,", "250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,", ",,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352", "79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351", "352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,", ",242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93", "95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76", "351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92", "94,93,95,,,,,88,98,,,,,,,82,,89,103,104,-274,,46,47,,,,-274,-274,-274", ",,-274,-274,-274,488,-274,485,484,483,493,486,,,-274,-274,-274,,,,496", ",,,,,-274,-274,,-274,-274,-274,-274,-274,488,,485,484,483,493,486,,491", "641,,,,,,496,,501,500,504,503,,,,497,,488,,485,484,483,493,486,-274", ",,,491,,,-274,496,,,,303,-274,,504,503,,,,497,,,,,,,,,,491,482,,,,-274", "-274,,,501,500,504,503,,,,497,,,,-274,,,-274,,77,78,26,-274,65,482,", ",71,72,-274,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113", ",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52", ",,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82", "65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111", "110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117", "118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,", ",52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82", "65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111", "110,112,113,,,23,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117", "118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,", ",52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,123,,,,,122,82", ",89,103,104,,,46,47,77,78,26,,65,,,,71,72,,,,75,,73,74,76,35,36,79,80", ",,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105,64,107", "106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250", ",,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88", "98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79", "80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351", "352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116", "105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,", ",,,,242,,,250,,,66,67,,,68,,,,,,52,,,325,,,,,,247,,,,,99,322,90,91,", "92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,", "73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115", "114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,", ",,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,", "92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,", "73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53", ",,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,", ",,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87", "90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47", ",75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,", ",,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50", "48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,", ",99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71", "72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113", ",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102", "49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247", ",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104", "71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112", "113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118", ",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,,", "52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,", "89,103,104,,,46,47,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79", "80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,,12,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,45", ",,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35", "36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,", ",,,88,98,,,,,,,82,,89,103,104,-311,,46,47,,,,-311,-311,-311,,,-311,-311", "-311,,-311,,,,,,,,-311,,-311,-311,-311,,,,,,,,-311,-311,,-311,-311,-311", "-311,-311,,,,,,,,,,,,,,,,,,,,,,,-311,-311,-311,-311,-311,-311,-311,-311", "-311,-311,-311,-311,-311,-311,,,-311,-311,-311,,,-311,,,-311,,,-311", "-311,,-311,,-311,,-311,,-311,-311,,-311,-311,-311,-311,-311,,-311,,-311", ",,,,,,,,,,,,,-311,,,-311,-311,-311,-311,,-311,,-311,,77,78,26,-311,65", ",,,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113", ",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102", "49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247", ",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104", "71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112", "113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,", ",,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103", "104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112", "113,,,23,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,", ",,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103", "104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110", "112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118", ",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52", ",,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65", "89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111", "110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117", "118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,", ",52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82", "65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354", "111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324", "109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,", ",68,,793,,319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88", "98,,,,77,78,26,82,65,89,103,104,71,72,46,557,,75,,73,74,76,35,36,79", "80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64", "107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,", "250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,", ",,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352", "79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351", "352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,", ",242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93", "95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76", "351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92", "94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73", "74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115", "114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,", ",,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91", ",92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75", ",73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,", ",115,114,116,105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,", ",,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52,,,325,,,,,,247", ",,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104", "71,72,46,557,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113", ",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52", ",,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82", "65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111", "110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109", "117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68", ",321,,319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98", "237,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79", "80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351", "352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,", ",242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93", "95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76", "351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92", "94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73", "74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,", ",115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,", ",,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90", "91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,", "75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,", ",,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48", ",,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99", "87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46", "47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251", ",,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50", "48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,", ",99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71", "72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113", ",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102", "49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247", ",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104", "71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112", "113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,", ",,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103", "104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110", "112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118", ",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52", ",,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65", "89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111", "110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117", "118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,", ",52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82", "65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354", "111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109", "117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68", ",,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78", "26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81", "346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106", "108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66", "67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,", ",,,,,82,,89,103,104,,,46,47,77,78,26,11,65,,,,71,72,,,,75,,73,74,76", "35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,,12,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94", "93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74", "76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94", "93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74", "76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94", "93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74", "76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94", "93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74", "76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94", "93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74", "76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,", ",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94", "93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74", "76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115", "114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,", ",,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91", ",92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75", ",73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,", "115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,", ",,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90", "91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,77,78,26,11,65", ",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,", ",23,,,,,,10,53,9,12,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,", ",,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,417,82,,89,103,104", ",,46,47,77,78,26,,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33", "32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324", "109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,", ",68,,321,,319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88", "98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80", ",,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107", "106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250", ",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88", "98,,,,,,,82,,89,103,104,-718,,46,47,,,,-718,-718,-718,,,-718,-718,-718", ",-718,,,,,,,,-718,-718,-718,-718,-718,,,,,,,,-718,-718,,-718,-718,-718", "-718,-718,,,,,,,,,,,,,,,,,,,,,,,-718,-718,-718,-718,-718,-718,-718,-718", "-718,-718,-718,-718,-718,-718,,,-718,-718,-718,,,-718,,,-718,,,-718", "-718,,-718,,-718,,-718,,-718,-718,,-718,-718,-718,-718,-718,,-718,-718", "-718,,,,,,,,,,,,,,-718,,,-718,-718,-718,-718,,-718,-717,-718,,,,,-718", "-717,-717,-717,,,-717,-717,-717,,-717,,,,,,,,-717,-717,-717,-717,-717", ",,,,,,,-717,-717,,-717,-717,-717,-717,-717,,,,,,,,,,,,,,,,,,,,,,,-717", "-717,-717,-717,-717,-717,-717,-717,-717,-717,-717,-717,-717,-717,,,-717", "-717,-717,,,-717,,,-717,,,-717,-717,,-717,,-717,,-717,,-717,-717,,-717", "-717,-717,-717,-717,,-717,-717,-717,,,,,,,,,,,,,,-717,,,-717,-717,-717", "-717,,-717,,-717,,77,78,26,-717,65,,,,71,72,,,,75,,73,74,76,351,352", "79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,,,,82,,89,103,104,,,46,47,77,78,26,11,65,,,,71,72,,,,75", ",73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53", "9,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,", ",,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,99,87", "90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,-274,,46,47,,,,-274", "-274,-274,,,-274,-274,-274,,-274,,,,,,,,-274,-274,-274,-274,,,,,,,,", "-274,-274,,-274,-274,-274,-274,-274,,,,,,,,,,,,,,,,,,,,,,,-274,-274", "-274,-274,-274,-274,-274,-274,-274,-274,-274,-274,-274,-274,,,-274,-274", "-274,,,-274,,303,-274,,,-274,-274,,-274,,-274,,-274,,-274,-274,,-274", "-274,-274,-274,-274,,-274,-274,-274,,,,,,,,,,,,,,-274,,,-274,-274,,-274", ",-274,77,78,26,,65,,-274,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81", "33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105,64,107,106,108", ",109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67", ",,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77", "78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81", "33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105,64,107,106,108", ",109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67", ",,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77", "78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,", "81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106", "108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66", "67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,", ",,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,", ",,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105,64,107,106", "108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66", "67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,", ",77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,", ",,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106", "108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66", "67,,,68,,433,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98", ",,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80", ",,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64", "107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,", "250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,", ",,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352", "79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242", ",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35", "36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,", ",242,,,250,,,66,67,,,68,,433,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94", "93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74", "76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115", "114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,", ",,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91", ",92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75", ",73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,", "53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,", ",,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99", "87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46", "47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251", ",,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50", "48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,", ",99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71", "72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113", ",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102", "49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247", ",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104", "71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113", ",,23,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102", "49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24", ",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104", "71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113", ",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118,,101", "102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52", ",,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82", "65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111", "110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117", "118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,", ",52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82", "65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354", "111,110,112,113,,,251,,,,,,,347,,,115,114,116,105,64,107,106,108,,109", "117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,343,,,339,,,66,67,,,68,,,", ",,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65", "89,103,104,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110", "112,113,,,251,,,,,,,347,,,115,114,116,105,64,107,106,108,,109,117,118", ",101,102,,,355,,,,,,,,,,,,,,,,,,,,1100,,,250,,,66,67,,,68,,,,,,,,,,", ",,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103", "104,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112", "113,,,251,,,,,,,347,,,115,114,116,105,64,107,106,108,,109,117,118,,101", "102,,,355,,,,,,,,,,,,,,,,,,,,343,,,250,,,66,67,,,68,,,488,,485,484,483", "493,486,,,,,,,,,496,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,585,,491", "82,,89,103,104,77,78,26,,65,504,503,,71,72,497,,,75,,73,74,76,351,352", "79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,392", ",,38,,,66,67,,,68,,40,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,", "88,98,,,,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352,79", "80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114,116,105", "64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,1139,", ",250,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88", "98,,,,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352,79,80", ",,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114,116,105,64", "107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,343,,,339", ",,66,67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,", ",,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352,79,80,,,,", ",81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114,116,105,64,107", "106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,343,,,339,,,66", "67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77", "78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346", "354,111,110,112,113,,,251,,,,,,,347,,,115,114,116,397,64,107,106,398", ",109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,404,,,399,,,250,,,66,67", ",,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78", "26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346", "354,111,110,112,113,,,251,,,,,,,347,,,115,114,116,397,64,107,106,398", ",109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,399,,,250,,,66,67,,,68", ",,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82", "65,89,103,104,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111", "110,112,113,,,251,,,,,,,347,,,115,114,116,105,64,107,106,108,,109,117", "118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,343,,,250,,,66,67,,,68,,,488,", "485,484,483,493,486,,,,,,,,,496,,99,87,90,91,,92,94,93,95,,,,,88,98", ",,,357,,491,82,,89,103,104,77,78,26,,65,504,503,,71,72,497,,,75,,73", "74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347", ",,115,114,116,105,64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,", ",,,,,,,,,,,,1139,,,250,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,", "92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74", "76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115", "114,116,105,64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,", ",,,,,,343,,,339,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93", "95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351", "352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114", "116,105,64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,", ",,343,,,339,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352", "79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114,116", "105,64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,343", ",,339,,,66,67,,,68,,338,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,", ",,88,98,,,,,,,82,,89,103,104,182,193,183,206,179,199,189,188,209,210", "204,187,186,181,207,211,212,191,180,194,198,200,192,185,,,,201,208,203", "202,195,205,190,178,197,196,,,,,,177,184,175,176,172,173,174,135,137", ",,136,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169", "155,156,,,,,,,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142", "164,143,,,171,99,,,,,,,,,,,,,,98,182,193,183,206,179,199,189,188,209", "210,204,187,186,181,207,211,212,191,180,194,198,200,192,185,,,,201,208", "203,202,195,205,190,178,197,196,,,,,,177,184,175,176,172,173,174,135", "137,134,,136,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,", ",,168,169,155,156,,,,,,,,,,,,,,160,159,,144,165,162,161,170,157,158", "152,150,142,164,143,,,171,99,,,,,,,,,,,,,,98,182,193,183,206,179,199", "189,188,209,210,204,187,186,181,207,211,212,191,180,194,198,200,192", "185,,,,201,208,203,202,195,205,190,178,197,196,,,,,,177,184,175,176", "172,173,174,135,137,,,136,,,,,,,,166,167,,163,145,146,147,154,151,153", ",,148,149,,,,168,169,155,156,,,,,,,,,,,,,,160,159,,144,165,162,161,170", "157,158,152,150,142,164,143,,,171,99,,,,,,,,,,,,,,98,182,193,183,206", "179,199,189,188,209,210,204,187,186,181,207,211,212,191,180,194,198", "200,192,185,,,,201,208,203,202,195,205,190,178,197,196,,,,,,177,184", "175,176,172,173,174,135,137,,,136,,,,,,,,166,167,,163,145,146,147,154", "151,153,,,148,149,,,,168,169,155,156,,,,,,,,,,,,,,160,159,,144,165,162", "161,170,157,158,152,150,142,164,143,,,171,99,111,110,112,113,,,,,,,", ",,98,,,115,114,116,770,,,488,773,485,484,483,493,486,101,102,,,355,", ",,496,,,,,,,,,,,,,,,,772,,,743,,,491,741,,,742,,,,,501,500,504,503,", ",,497,,,,771,,,,99,87,90,91,,92,94,93,95,,,,,88,98,111,110,112,113,", ",82,,89,103,104,,,758,759,,115,114,116,770,,,,773,750,,,,,101,102,,", "355,496,,,,,,,,,,,,,,,,,,,772,,,743,,,,741,,,742,,745,,,,,,,497,,,,", ",,771,,,,99,751,90,91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89", "103,104,,,758,759,,115,114,116,770,,,488,773,485,484,483,493,486,101", "102,,,355,,,,496,,,,,,,,,,,,,,,,772,,,743,,,491,741,,,742,,,,,501,500", "504,503,,,,497,,,,771,,,,99,87,90,91,,92,94,93,95,,,,,88,98,111,110", "112,113,,,82,,89,103,104,,,758,759,,115,114,116,770,,,488,773,485,484", "483,493,486,101,102,,,355,,,,496,,,,,,,,,,,,,,,,772,,,743,,,491,741", ",,742,,,,,,,504,503,,,,497,,,,771,,,,99,87,90,91,,92,94,93,95,,,,,88", "98,111,110,112,113,,,82,,89,103,104,,,758,759,,115,114,116,770,,,488", "773,485,484,483,493,486,101,102,,,355,,,,496,,,,,,,,,,,,,,,,772,,,743", ",,491,741,,,742,,1047,,,,,504,503,,,,497,,,,771,,,,99,87,90,91,,92,94", "93,95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,758,759,,115,114", "116,770,,,488,773,485,484,483,493,486,101,102,,,355,,,,496,,,,,,,,,", ",,,,,,772,,,743,,,491,741,,,742,,,,,,,504,503,,,,497,,,,771,,,,99,87", "90,91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,758", "759,,115,114,116,770,,,,773,750,,,,,101,102,,,355,496,,,,,,,,,,,,,,", ",,,,772,,,743,,,,741,,,742,,745,,,,,,,497,,,,,,,771,,,,99,751,90,91", ",92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,758,759,,115", "114,116,770,,,,773,750,,,,,101,102,,,355,496,,,,,,,,,,,,,,,,,,,772,", ",743,,,,741,,,742,,745,,,,,,,497,,,,,,,771,,,,99,751,90,91,,92,94,93", "95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,758,759,,115,114,116", "770,,,,773,,,,,,101,102,,,355,,,,,,,,,,,,,,,,,,,,772,,,743,,,,741,,", "742,,,,,,,,,,,,,,,,771,,,,99,87,90,91,,92,94,93,95,,,,,88,98,111,110", "112,113,,,82,,89,103,104,,,758,759,,115,114,116,770,,,,773,,,,,,101", "102,,,355,,,,,,,,,,,,,,,,,,,,772,,,743,,,,741,,,742,,745,,,,,,,,,,,", ",,771,,,,99,87,90,91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89", "103,104,,,758,759,,115,114,116,770,,,,773,,,,,,101,102,,,355,,,,,,,", ",,,,,,,,,,,,772,,,743,,,,741,,,742,,745,,,,,,,,,,,,,,771,,,,99,87,90", "91,,92,94,93,95,,,,,88,98,237,,,,,,82,,89,103,104,,,758,759,182,193", "183,206,179,199,189,188,209,210,204,187,186,181,207,211,212,191,180", "194,198,200,192,185,,,,201,208,203,291,290,292,289,178,197,196,,,,,", "177,184,175,176,286,287,288,284,137,107,106,285,,109,,,,,,166,167,,163", "145,146,147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,296,,,,,,", ",160,159,,144,165,162,161,170,157,158,152,150,142,164,143,,,171,111", "110,112,113,,,488,,485,484,483,493,486,,,,115,114,116,770,,496,,773", ",,,,,101,102,,,355,,,,,,,,,,491,,,,,,,,,,772,504,503,743,,,497,741,", ",742,,,,,,,,,,,,,,,,771,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,482,", ",,,82,,89,103,104,,,758,759,182,193,183,206,179,199,189,188,209,210", "204,187,186,181,207,211,212,191,180,194,198,200,192,185,,,,201,208,203", "202,195,205,190,178,197,196,,,,,,177,184,175,176,172,173,174,135,137", ",,136,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169", "155,156,,,,,,,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142", "164,143,,,171,111,110,112,113,,,,,,,,,,,,,115,114,116,770,,,,773,750", ",,,,101,102,,,355,496,,,,,,,,,,,,,,,,,,,772,,,743,,,,741,,,742,,745", ",,,,,,497,,,,,,,771,,,,99,751,90,91,,92,94,93,95,,,,,88,98,111,110,112", "113,,,82,,89,103,104,,,758,759,,115,114,116,770,,,,773,750,,,,,101,102", ",,355,496,,,,,,,,,,,,,,,,,,,772,,,743,,,,741,,,742,,745,,,,,,,497,,", ",,,,771,,,,99,751,90,91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82", ",89,103,104,,,758,759,,115,114,116,770,,,,773,,,,,,101,102,,,355,,,", ",,,,,,,,,,,,,,,,772,,,743,,,,741,,,742,,,,,,,,,,,,,,,,771,,,,99,87,90", "91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,758,759", ",115,114,116,770,,,,773,,,,,,101,102,,,355,,,,,,,,,,,,,,,,,,,,772,,", "743,,,,741,,,742,,,,,,,,,,,,,,,,771,,,,99,87,90,91,,92,94,93,95,,,,", "88,98,111,110,112,113,,,82,,89,103,104,,,758,759,,115,114,116,770,,", ",773,,,,,,101,102,,,355,,,,,,,,111,110,112,113,,,,,,,,,772,,,743,115", "114,116,741,,,742,,745,,,,,101,102,,,355,,,,,771,,,,99,87,90,91,,92", "94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,758,759,,,,,,,,,,,,99,87,90", "91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,,,,115", "114,116,,,,,,,,,,,101,102,,,355,111,110,112,113,,,,,,,,,,,,,115,114", "116,,,,,,,,,,,101,102,,,355,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95", ",,,,88,98,,,,,,,82,,89,103,104,,,,,,,,,99,87,90,91,,92,94,93,95,,,,", "88,98,111,110,112,113,,,82,,89,103,104,,,,,,115,114,116,488,,485,484", "483,493,486,,,,101,102,,,355,496,,,,,,,,,,,488,,485,484,483,493,486", ",,,,491,,,,496,,,,,501,500,504,503,,,,497,,,,,,,,,,491,99,87,90,91,", "92,94,93,95,,504,503,,88,98,497,,,,,,82,,89,103,104,,,488,482,485,484", "483,493,486,,488,,485,484,483,493,486,496,,,,,,,,496,,,488,482,485,484", "483,493,486,,,,,491,,,,496,,,,491,501,500,504,503,,,,497,501,500,504", "503,,,,497,488,491,485,484,483,493,486,,,,,,504,503,,496,,497,488,,485", "484,483,493,486,,,,,,,482,,496,,,,491,,482,,,,,,,,,504,503,,,,497,,491", ",482,,,,,,,501,500,504,503,,,,497,,,,,,,,,,,,1211,466,,,1210,,,,,,482", ",166,167,,163,145,146,147,154,151,153,,,148,149,,,482,168,169,155,156", ",,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142,164", "143,553,459,171,,554,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148", "149,,,,168,169,155,156,,,,,,,,,,,,,,160,159,,144,165,162,161,170,157", "158,152,150,142,164,143,462,466,171,,461,,,,,,,,166,167,,163,145,146", "147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159", ",144,165,162,161,170,157,158,152,150,142,164,143,1195,466,171,,1196", ",,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169,155", "156,,,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142", "164,143,725,466,171,,726,,,,,,,,166,167,,163,145,146,147,154,151,153", ",,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159,,144,165,162,161", "170,157,158,152,150,142,164,143,1193,459,171,,1194,,,,,,,,166,167,,163", "145,146,147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,", ",160,159,,144,165,162,161,170,157,158,152,150,142,164,143,867,466,171", ",866,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169", "155,156,,,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150", "142,164,143,723,459,171,,724,,,,,,,,166,167,,163,145,146,147,154,151", "153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159,,144,165,162", "161,170,157,158,152,150,142,164,143,455,459,171,,456,,,,,,,,166,167", ",163,145,146,147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,303,", ",,,,,,160,159,,144,165,162,161,170,157,158,152,150,142,164,143,803,459", "171,,804,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168", "169,155,156,,,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152", "150,142,164,143,806,466,171,,807,,,,,,,,166,167,,163,145,146,147,154", "151,153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159,,144,165", "162,161,170,157,158,152,150,142,164,143,832,459,171,,833,,,,,,,,166", "167,,163,145,146,147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,303", ",,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142,164,143,864", "459,171,,865,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,", ",,168,169,155,156,,,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158", "152,150,142,164,143,834,466,171,,835,,,,,,,,166,167,,163,145,146,147", "154,151,153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159,,144", "165,162,161,170,157,158,152,150,142,164,143,553,459,171,,554,,,,,,,", "166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169,155,156,,", ",,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142,164,143", "837,466,171,,838,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149", ",,,168,169,155,156,,,,,,303,,,,,,,,160,159,,144,165,162,161,170,157", "158,152,150,142,164,143,723,459,171,,724,,,,,,,,166,167,,163,145,146", "147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159", ",144,165,162,161,170,157,158,152,150,142,164,143,725,466,171,,726,,", ",,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169,155,156", ",,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142,164", "143,,,171"]; - racc_action_table = (arr = $$$('Array').$new(28951, nil)); + clist = ["-320,600,620,-119,1214,-121,-118,-320,-320,-320,221,222,1124,-320,-320", "-624,-320,239,620,-123,620,925,-624,-110,-320,-732,237,428,-124,311", "122,-122,430,429,717,311,-320,-320,620,-320,-320,-320,-320,-320,-116", "-117,-124,620,620,-116,1001,828,718,627,892,925,627,126,240,-732,-123", "833,125,-117,240,240,-320,-320,-320,-320,-320,-320,-320,-320,-320,-320", "-320,-320,-320,-320,-624,-123,-320,-320,-320,-124,687,-320,-119,-110", "-320,-121,-120,-320,1125,240,-720,135,-320,306,-320,-511,-320,-320,240", "-320,-320,-320,-320,-320,-320,-320,-110,-320,-112,-109,310,-320,-320", "-320,126,-120,310,-320,-320,125,-320,-320,-114,-110,-320,-320,-110,-113", "-320,-320,126,-115,126,990,-113,125,-320,125,-110,-122,-320,-320,-122", "-320,-320,-320,-320,-320,-118,126,126,-719,-107,1000,125,125,-116,-117", "-124,126,126,-116,-117,-124,125,125,-108,221,222,218,-320,-320,-320", "-320,-320,-320,-320,-320,-320,-320,-320,-320,-320,-320,221,222,-320", "-320,-320,311,687,-320,-719,-123,-320,-111,661,-320,-123,648,-119,925", "-320,-121,-320,-119,-320,-320,-121,-320,-320,-320,-320,-320,233,-320", "-723,-320,-628,-720,-629,221,222,-723,-723,-723,104,105,-723,-723,-723", "-320,-723,-120,-320,-320,-102,-320,-120,-320,-723,-723,-723,-723,-723", "663,-320,924,-88,-122,219,-112,-723,-723,522,-723,-723,-723,-723,-723", "-122,240,660,650,649,-122,-118,-111,-109,220,-744,-118,311,648,233,223", "310,-116,240,-117,1063,300,-723,-723,-723,-723,-723,-723,-723,-723,-723", "-723,-723,-723,-723,-723,233,682,-723,-723,-723,648,921,-723,106,107", "-723,104,105,-723,-723,662,-723,-124,-723,126,-723,-112,-723,-723,125", "-723,-723,-723,-723,-723,361,-723,-723,-723,-744,683,-719,-111,-109", "648,306,650,649,646,648,362,648,-723,-110,648,-723,-723,-723,-723,240", "-723,-744,-723,800,-320,-119,-112,-723,310,-112,-120,-320,-320,-320", "650,649,-320,-320,-320,892,-320,-112,-111,-109,859,-111,-109,-112,-320", "833,-320,-320,-320,875,106,107,919,-111,-109,-121,-320,-320,431,-320", "-320,-320,-320,-320,650,649,646,949,471,650,649,650,649,655,650,649", "653,920,1035,861,633,1063,233,-732,634,948,-320,-320,-320,-320,-320", "-320,-320,-320,-320,-320,-320,-320,-320,-320,240,-629,-320,-320,-320", "648,922,-320,-118,-635,-320,-119,-625,-320,-320,648,-320,-617,-320,-625", "-320,510,-320,-320,-617,-320,-320,-320,-320,-320,683,-320,682,-320,507", "506,-121,-118,-744,491,648,488,487,486,496,489,521,-320,-108,-623,-320", "-320,-320,-320,499,-320,-623,-320,126,-723,-117,612,-320,125,614,-122", "-723,-723,-723,650,649,651,-723,-723,633,-723,494,-625,960,650,649,664", "-617,-723,-723,504,503,507,506,-121,633,-119,500,523,960,-723,-723,524", "-723,-723,-723,-723,-723,239,650,649,659,491,-321,488,487,486,496,489", "-623,-321,600,491,240,488,487,486,499,489,-321,-723,-723,-723,-723,-723", "-723,-723,-723,-723,-723,-723,-723,-723,-723,558,-628,-723,-723,-723", "494,688,-723,570,126,-723,648,572,-723,125,710,507,506,-723,574,-723", "500,-723,-723,-114,-723,-723,-723,-723,-723,-614,-723,-723,-723,-321", "126,-123,-614,-614,-614,125,135,-614,-614,-614,-614,-614,-723,-107,-87", "-723,-723,-614,-723,-614,-723,-614,-614,-614,931,-116,485,-723,240,927", "-120,-614,-614,928,-614,-614,-614,-614,-614,585,650,649,646,586,-311", "227,-620,-621,227,950,951,-311,304,-620,-621,304,612,593,237,611,-311", "-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614", "-614,227,-614,-614,-614,227,-614,-614,592,315,-614,240,1188,-614,-614", "233,-614,590,-614,126,-614,638,-614,-614,125,-614,-614,-614,-614,-614", "-115,-614,-617,-614,-311,228,-620,-621,228,-617,-617,-617,-124,233,-617", "-617,-617,-614,-617,306,-614,-614,-614,-614,597,-614,-617,-614,-617", "-617,-617,612,-614,603,614,-614,228,264,-617,-617,228,-617,-617,-617", "-617,-617,606,227,240,227,615,-356,-619,-622,675,616,636,574,-356,-619", "-622,612,627,673,614,638,420,-356,-617,-617,-617,-617,-617,-617,-617", "-617,-617,-617,-617,-617,-617,-617,631,754,-617,-617,-617,227,-617,-617", "1149,1150,-617,499,630,-617,-617,632,-617,875,-617,640,-617,628,-617", "-617,665,-617,-617,-617,-617,-617,228,-617,228,-617,-356,-619,-622,668", "227,669,954,240,958,957,1197,1188,959,-617,-293,500,-617,-617,-617,-617", "638,-617,671,-617,672,-723,676,1056,-617,240,-109,-617,-723,-723,-723", "496,228,680,-723,-723,-320,-723,-118,956,264,499,681,-320,306,-723,-723", "694,-720,985,892,695,-320,114,113,115,116,-723,-723,240,-723,-723,-723", "-723,-723,228,221,222,697,118,117,119,261,700,507,506,263,262,701,500", "703,264,104,105,221,222,358,-723,-723,-723,-723,-723,-723,-723,-723", "-723,-723,-723,-723,-723,-723,-320,705,-723,-723,-723,-385,688,-723", "227,719,-723,720,261,-723,227,1164,263,262,-723,724,-723,226,-723,-723", "1162,-723,-723,-723,-723,-723,224,-723,-723,-723,726,102,90,93,94,732", "95,97,96,98,754,985,892,-723,91,101,-723,-723,90,-111,499,-723,85,733", "92,106,107,264,-723,264,91,-120,333,81,82,83,11,65,264,228,92,71,72", "264,240,228,75,-723,73,74,76,35,36,79,80,788,240,240,500,240,84,33,32", "114,113,115,116,-102,803,23,1056,240,606,281,282,10,53,335,12,118,117", "119,108,64,110,109,111,814,112,120,121,-320,104,105,49,50,48,-321,-320", "-723,819,-626,240,-720,-321,821,-723,-320,-626,280,279,-719,824,-321", "829,-723,45,-626,830,38,834,858,66,67,227,862,68,863,40,-294,876,602", "52,491,-723,488,487,486,558,489,520,24,558,888,892,910,102,90,93,94", "913,95,97,96,98,914,-320,240,917,91,101,240,-321,926,-723,943,-626,85", "944,92,106,107,945,962,46,47,333,81,82,83,11,65,964,300,970,71,72,972", "974,228,75,-716,73,74,76,35,36,79,80,572,574,496,814,240,84,33,32,114", "113,115,116,499,1159,23,488,487,486,306,489,10,53,335,12,118,117,119", "108,64,110,109,111,306,112,120,121,227,104,105,49,50,48,-627,519,-614", "507,506,814,264,-627,500,-614,520,892,987,988,-716,240,-627,240,-614", "45,998,240,38,-295,240,66,67,1009,1013,68,1159,40,488,487,486,52,489", "-716,-293,491,1017,488,487,486,24,489,700,718,1020,102,90,93,94,1022", "95,97,96,98,1024,228,1026,1026,91,101,240,-627,774,-614,240,240,85,1054", "92,106,107,1057,710,46,47,333,81,82,83,11,65,714,853,854,71,72,855,120", "121,75,-717,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32,114,113", "115,116,925,491,23,488,487,486,972,489,10,53,335,12,118,117,119,108", "64,110,109,111,1069,112,120,121,240,104,105,49,50,48,814,491,-617,488", "487,486,1086,489,710,-617,1088,1093,1094,1099,-717,1100,1101,714,-617", "45,-296,1114,38,1115,1116,66,67,240,240,68,240,40,240,240,240,52,925", "-717,710,491,1123,488,487,486,24,489,240,714,1129,102,90,93,94,1130", "95,97,96,98,1132,700,1135,1138,91,101,1140,1142,240,-617,-385,1154,85", "1165,92,106,107,1166,710,46,47,333,81,82,83,11,65,1026,1026,1026,71", "72,1173,1186,1189,75,1194,73,74,76,35,36,79,80,256,1195,694,1115,1205", "84,33,32,114,113,115,116,1205,700,23,129,130,131,132,133,10,53,335,12", "118,117,119,108,64,110,109,111,1208,112,120,121,1210,104,105,49,50,48", "264,268,269,270,271,281,282,276,277,272,273,1212,257,258,1214,1214,274", "275,240,45,1026,255,38,1205,-720,66,67,-719,1231,68,1214,40,261,1214", "267,52,263,262,1214,259,260,280,279,265,24,266,3,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32", "114,113,115,116,,,23,,,,,677,10,53,335,12,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277", "272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263", "262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,278,,-265,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72", ",,,75,,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32,114,113,115", "116,,,23,,,,,889,10,53,335,12,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257", "258,,,274,275,,45,,,337,,,66,67,,,68,,40,261,,267,52,263,262,,259,260", "280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,", "85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35", "36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,677,10,53,335,12,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269", "270,271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,337,,,66,67", ",,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82", "83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,918,10,53,335,12,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273", ",257,258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259", "260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278", ",,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74", "76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12", "118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268", "269,270,271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66", "67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81", "82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257", "258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260", "280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,", "85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35", "36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117", "119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270", "271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68", ",40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,7,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258,,", "274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279", "265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,240,278,,,,,85,,92", "106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79", "80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271", "281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40", "261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,", "104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258", ",,274,275,,45,,,337,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280", "279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,", "92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36", "79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271", "281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40", "261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,", "104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258", ",,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280", "279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,", "92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36", "79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271", "281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40", "261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,", "104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745,-745", ",,274,275,,45,,,38,,,66,67,,264,68,,40,261,,267,52,263,262,,259,260", "280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,261,,91,101,263,262", ",259,260,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,", "73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,264,491,23,488,487", "486,,489,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,264,,261,,,,263,262,710,259,260,,,,,,274,275,,45,,,38,", ",66,67,,,68,,40,261,,267,52,263,262,,259,260,,,265,24,266,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82", "83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745", "-745,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260", "280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85", ",92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36", "79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271", "281,282,276,277,272,273,,-745,-745,,,274,275,,45,,,38,,,66,67,,,68,", "40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,", "95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,", "104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,45,,,38,,,66,67,,,68,,40", "261,,267,52,263,262,,259,260,,,265,24,266,,,,102,90,93,94,,95,97,96", "98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71", "72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,", ",,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,264,268,269,270,271,281,282,276,,272,273,,,,,,274,275,,45,", ",38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266", ",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47", "7,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,264,268,269,270,271,281,282,,,272,273", ",,,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260", "280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85", ",92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36", "79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,-745,-745,-745", "-745,281,282,,,-745,-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40,261", ",267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95,97,96", "98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71", "72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,", ",,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274,275,,45", ",,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266", ",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47", "333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745", "-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259", "260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,", ",85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76", "35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,-745,-745", "-745,-745,281,282,,,-745,-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40", "261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65", ",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,", ",23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274,275", ",45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24", "266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106", "107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113", "115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121", ",104,105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274", "275,,245,,,253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,280,279,265", "250,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745", "-745,,,274,275,,245,,,253,,,66,67,,,68,,,261,,267,52,263,262,,259,260", "280,279,265,250,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84", "349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,245,", ",253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,,,,250,,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47", ",75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,", ",,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,264,,,,,,,,,,,,,,,,274,275,,245,,,253,,,66,67,,,68,,,261,,,52,263", "262,,259,260,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84", "349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,245,", ",253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,,,,250,,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,", ",,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,", ",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79", "80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108", "64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98", ",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,", "53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,", ",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,", "254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,436,,,,52,,,,,,", ",,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,", ",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79", "80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,", ",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35", "36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,,,,85,,92,106,107,-441,,46,47,,,,-441,-441,-441", ",,-441,-441,-441,,-441,,,,,,,,-441,-441,-441,-441,,,,,,,,,-441,-441", ",-441,-441,-441,-441,-441,,,,,,,,,,,,,,,,,,,,,,,-441,-441,-441,-441", "-441,-441,-441,-441,-441,-441,-441,-441,-441,-441,,,-441,-441,-441,", ",-441,,306,-441,,,-441,-441,,-441,,-441,,-441,,-441,-441,,-441,-441", "-441,-441,-441,,-441,-441,-441,,,,,,,,,,,,,,-441,,,-441,-441,,-441,", "-441,81,82,83,,65,,-441,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33", "32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,", "112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,", ",68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,", "81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,", ",84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66", "67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117", "119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,", ",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73", "74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,", ",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,", ",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-327,,46,47,,,,-327", "-327,-327,,,-327,-327,-327,,-327,,,,,,,,-327,,-327,-327,,,,,,,,,-327", "-327,,-327,-327,-327,-327,-327,,,,,,,,,,,,,,,,,,,,,,,-327,-327,-327", "-327,-327,-327,-327,-327,-327,-327,-327,-327,-327,-327,,,-327,-327,-327", ",,-327,,315,-327,,,-327,-327,,-327,,-327,,-327,,-327,-327,,-327,-327", "-327,-327,-327,,-327,,-327,,,,,,,,,,,,,,-327,,,-327,-327,,-327,,-327", "81,82,83,,65,,-327,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327", "112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,", ",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,", "91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355", "79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108", "64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,", "245,,,253,,,66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,", "53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,", ",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82", "83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,", ",52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33", "32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327", "112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,", ",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,", "91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36", "79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108", "64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98", ",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,797,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73", "74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,", ",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,", ",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,867,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82", "83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,", ",52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327", "112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,", ",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,", "91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355", "79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108", "64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98", ",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35", "36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,", ",,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,", ",,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,", ",,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,", ",,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96", "98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76", "354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117", "119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,", ",,,,,245,,,253,,,66,67,,,68,,324,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,", "118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,", ",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47", ",75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,", ",,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49", "50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,328,,,,,,250", ",,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121", ",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,797,,,", "52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33", "32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,240,,,81", "82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,", "84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66", "67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,", ",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,", "118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,", ",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47", ",75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,", "53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,", ",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49", "50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328", ",,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106", "107,,,46,47,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,", ",84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38", ",,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,", "91,101,,,,,,420,85,,92,106,107,,,46,47,81,82,83,,65,,,,71,72,,,,75,", "73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53", ",,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,", ",,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,", ",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116", ",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121", ",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,322,", "52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84", "349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,", ",66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96", "98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76", "354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117", "119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,", ",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73", "74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,", ",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,", ",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,", ",102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-275,,46", "47,,,,-275,-275,-275,,,-275,-275,-275,491,-275,488,487,486,496,489,", ",-275,-275,-275,,,,499,,,,,,-275,-275,,-275,-275,-275,-275,-275,,491", ",488,487,486,496,489,494,,,,,,,,499,504,503,507,506,,,,500,,491,,488", "487,486,496,489,-275,,,,,494,,-275,499,,,,306,-275,504,503,507,506,", ",,500,,,,,,,,,494,485,,,,-275,-275,,,,,507,506,,,,500,,,,-275,,,-275", ",81,82,83,-275,65,,485,,71,72,-275,,,75,,73,74,76,354,355,79,80,,,,", ",84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79", "80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95", "97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73", "74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,", "53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,", ",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,", ",,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,", "102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,", "102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,", "102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116", ",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121", ",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52", ",,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33", "32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84", "349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66", "67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,", ",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,", ",,,,245,,,253,,,66,67,,,68,,324,,,,52,,,328,,,,,,250,,,,,102,325,93", "94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11", "65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,", ",,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113", "115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121", ",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52", ",,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65", "92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,", ",,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66", "67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,", ",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,", ",,,,245,,,253,,,66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "560,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,", ",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,", ",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49", "50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328", ",,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65", "92,106,107,71,72,46,560,,75,,73,74,76,354,355,79,80,,,,,,84,349,357", "114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84", "349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109", "111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66", "67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,", ",,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96", "98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76", "35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,", ",,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325", "93,94,,95,97,96,98,,,,,91,101,240,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,", "254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,", ",,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,", ",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79", "80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108", "64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245", ",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98", ",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,", "53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,", ",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,", "254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104", "105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,", ",,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92", "106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,", ",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11,65,,,,71,72,,,,75,,73,74", "76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,,12,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75", ",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,", "118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,", ",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47", ",75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53", ",,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,", ",,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,", ",,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48", ",,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", "46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,", ",,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,", "102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,", "102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116", ",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47", "81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114", "113,115,116,,,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40", ",,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,420,85", ",92,106,107,,,46,47,81,82,83,,65,,,,71,72,,,,75,,73,74,76,35,36,79,80", ",,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110", "109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253", ",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96", "98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76", "35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118", "117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,", ",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94", ",95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-725,,46,47,,,,-725,-725", "-725,,,-725,-725,-725,,-725,,,,,,,,-725,-725,-725,-725,-725,,,,,,,,-725", "-725,,-725,-725,-725,-725,-725,,,,,,,,,,,,,,,,,,,,,,,-725,-725,-725", "-725,-725,-725,-725,-725,-725,-725,-725,-725,-725,-725,,,-725,-725,-725", ",,-725,,,-725,,,-725,-725,,-725,,-725,,-725,,-725,-725,,-725,-725,-725", "-725,-725,,-725,-725,-725,,,,,,,,,,,,,,-725,,,-725,-725,-725,-725,,-725", "-724,-725,,,,,-725,-724,-724,-724,,,-724,-724,-724,,-724,,,,,,,,-724", "-724,-724,-724,-724,,,,114,113,115,116,-724,-724,,-724,-724,-724,-724", "-724,,,,,118,117,119,,,,,,,,,,,104,105,,,358,-724,-724,-724,-724,-724", "-724,-724,-724,-724,-724,-724,-724,-724,-724,,,-724,-724,-724,,,-724", ",,-724,,,-724,-724,,-724,,-724,,-724,,-724,-724,,-724,-724,-724,-724", "-724,,-724,-724,-724,,102,90,93,94,,95,97,96,98,,,,-724,91,101,-724", "-724,-724,-724,,-724,85,-724,92,106,107,-275,-724,81,82,83,11,65,-275", "-275,-275,71,72,-275,-275,-275,75,-275,73,74,76,35,36,79,80,-275,-275", "-275,-275,,84,33,32,114,113,115,116,-275,-275,23,-275,-275,-275,-275", "-275,10,53,9,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275", "-275,-275,,,-275,-275,-275,45,,-275,38,306,-275,66,67,-275,-275,68,-275", "40,-275,,-275,52,-275,-275,,-275,-275,-275,-275,-275,24,-275,-275,-275", ",102,90,93,94,,95,97,96,98,,,,-275,91,101,-275,-275,,-275,,-275,85,", "92,106,107,,-275,46,47,81,82,83,,65,,,,71,72,,,,75,,73,74,76,35,36,79", "80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,", ",,91,101,126,,,,,125,85,,92,106,107,-312,,46,47,,,,-312,-312,-312,,", "-312,-312,-312,,-312,,,,,,,,-312,,-312,-312,-312,,,,,,,,-312,-312,,-312", "-312,-312,-312,-312,,,,,,,,,,,,,,,,,,,,,,,-312,-312,-312,-312,-312,-312", "-312,-312,-312,-312,-312,-312,-312,-312,,,-312,-312,-312,,,-312,,,-312", ",,-312,-312,,-312,,-312,,-312,,-312,-312,,-312,-312,-312,-312,-312,", "-312,,-312,,,,,,,,,,,,,,-312,,,-312,-312,-312,-312,,-312,,-312,,81,82", "83,-312,65,,,,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,", ",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33", "32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,", "112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,", ",68,,436,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,", "253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,", ",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354", "355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119", "108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,", ",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74", "76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117", "119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,", ",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73", "74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,", ",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,", ",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46", "47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254", ",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50", "48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,", ",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71", "72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116", ",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", "49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250", ",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107", "71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116", ",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104", "105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52", ",,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32", "114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68", ",436,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81", "82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84", "33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67", ",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,", ",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,", ",,,,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1107,,,253", ",,66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,", ",,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1146,,,253,,", "66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,", ",,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,", ",84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,253,,,66", "67,,,68,,,491,,488,487,486,496,489,,,,,,,,,499,,102,90,93,94,,95,97", "96,98,,,,,91,101,,,,588,,494,85,,92,106,107,81,82,83,,65,507,506,,71", "72,500,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116", ",,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105", ",,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72", ",,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254", ",,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,,,358", ",,,,,,,,,,,,,,,,,,,346,,,253,,,66,67,,,68,,,491,,488,487,486,496,489", ",,,,,,,,499,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,360,,494,85,,92", "106,107,81,82,83,,65,507,506,,71,72,500,,,75,,73,74,76,354,355,79,80", ",,,,,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64", "110,109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342", ",,66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101", ",,,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,", ",,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110", "109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66", "67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81", "82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1146,,,253,,,66,67,,", "68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,400,64,110,109,401", ",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,407,,,402,,,253,,,66,67", ",,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82", "83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349", "357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111", ",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68", ",,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83", "85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357", "114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112", "120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,,", ",,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85", "65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114", "113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120", "121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,341,,", ",,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65", "92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113", "115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121", ",104,105,,,358,,,,,,,,,,,,,,,,,,,,395,,,38,,,66,67,,,68,,40,,,,,,,,", ",,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106", "107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115", "116,,,254,,,,,,,350,,,118,117,119,400,64,110,109,401,,112,120,121,,104", "105,,,358,,,,,,,,,,,,,,,,,,,,402,,,253,,,66,67,,,68,,,,,,,,,,,,,,,,", ",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,185,196", "186,209,182,202,192,191,212,213,207,190,189,184,210,214,215,194,183", "197,201,203,195,188,,,,204,211,206,205,198,208,193,181,200,199,,,,,", "180,187,178,179,175,176,177,138,140,137,,139,,,,,,,,169,170,,166,148", "149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,,,,,,,,,163,162", ",147,168,165,164,173,160,161,155,153,145,167,146,,,174,102,,,,,,,,,", ",,,,101,185,196,186,209,182,202,192,191,212,213,207,190,189,184,210", "214,215,194,183,197,201,203,195,188,,,,204,211,206,205,198,208,193,181", "200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139,,,,,,,,169,170", ",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,,,,,", ",,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,,,174,102", ",,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213,207,190,189", "184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206,205,198,208", "193,181,200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139,,,,,", ",,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159", ",,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146", ",,174,102,,,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213,207", "190,189,184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206,205", "198,208,193,181,200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139", ",,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158", "159,,,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167", "146,,,174,102,,,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213", "207,190,189,184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206", "294,293,295,292,181,200,199,,,,,,180,187,178,179,289,290,291,287,140", "110,109,288,,112,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152", ",,,171,172,158,159,,,,,,299,,,,,,,,163,162,,147,168,165,164,173,160", "161,155,153,145,167,146,,,174,114,113,115,116,,,,,,491,,488,487,486", "496,489,118,117,119,774,,,,777,499,,,,,104,105,,,358,,,,,,,,,,,,,494", ",,,,,,776,,,747,507,506,,745,,500,746,,,,,,,,,,,,,,,,775,,,,102,90,93", "94,,95,97,96,98,,,,,91,101,114,113,115,116,485,,85,,92,106,107,,,762", "763,,118,117,119,774,,,491,777,488,487,486,496,489,104,105,,,358,,,", "499,,,,,,,,,,,,,,,,776,,,747,,,494,745,,,746,,,,,504,503,507,506,,,", "500,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,", ",85,,92,106,107,,,762,763,,118,117,119,774,,,491,777,488,487,486,496", "489,104,105,,,358,,,,499,,,,,,,,,,,,,,,,776,,,747,,,494,745,,,746,,749", ",,504,503,507,506,,,,500,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91", "101,114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,,777", "754,,,,,104,105,,,358,499,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,", "749,,,,,,,500,,,,,,,775,,,,102,755,93,94,,95,97,96,98,,,,,91,101,114", "113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,491,777,488", "487,486,496,489,104,105,,,358,,,,499,,,,,,,,,,,,,,,,776,,,747,,,494", "745,,,746,,,,,504,503,507,506,,,,500,,,,775,,,,102,90,93,94,,95,97,96", "98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119", "774,,,491,777,488,487,486,496,489,104,105,,,358,,,,499,,,,,,,,,,,,,", ",,776,,,747,,,494,745,,,746,,749,,,,,507,506,,,,500,,,,775,,,,102,90", "93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762", "763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776", ",,747,,,,745,,,746,,749,,,,,,,491,,488,487,486,496,489,775,,,,102,90", "93,94,499,95,97,96,98,,,,,91,101,240,114,113,115,116,,85,,92,106,107", "494,,762,763,,,118,117,119,774,,507,506,777,,,500,,,104,105,,,358,,", ",,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,485,,,,,,,,,,,,,775,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,", "762,763,,118,117,119,774,,,,777,754,,,,,104,105,,,358,499,,,,,,,,,,", ",,,,,,,,776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775,,,,102,755,93", "94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763", ",118,117,119,774,,,,777,754,,,,,104,105,,,358,499,,,,,,,,,,,,,,,,,,", "776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775,,,,102,755,93,94,,95", "97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,762,763,185,196,186,209,182", "202,192,191,212,213,207,190,189,184,210,214,215,194,183,197,201,203", "195,188,,,,204,211,206,205,198,208,193,181,200,199,,,,,,180,187,178", "179,175,176,177,138,140,,,139,,,,,,,,169,170,,166,148,149,150,157,154", "156,,,151,152,,,,171,172,158,159,,,,,,,,,,,,,,163,162,,147,168,165,164", "173,160,161,155,153,145,167,146,,,174,114,113,115,116,,,491,,488,487", "486,496,489,,,,118,117,119,774,,499,,777,754,,,,,104,105,,,358,499,", ",,,,,,,494,,,,,,,,,,776,507,506,747,,,500,745,,,746,,749,,,,,,,500,", ",,,,,775,,,,102,755,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,", "85,,92,106,107,,,762,763,,118,117,119,774,,,,777,754,,,,,104,105,,,358", "499,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775", ",,,102,755,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106", "107,,,762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,", ",,,,,,,,776,,,747,,,,745,,,746,,,,,,,,,,,,,,,,775,,,,102,90,93,94,,95", "97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763,,118", "117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776,,,747,", ",,745,,,746,,,,,,,,,,,,,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101", "114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,,777,", ",,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,,,,,,", ",,,,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,", ",85,,92,106,107,,,762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358", ",,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,,,,,,,,,,,,,,775,,,,102", "90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,", "762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,114,113,115", "116,,,,,,,,,776,,,747,118,117,119,745,,,746,,1053,,,,,104,105,,,358", ",,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107", ",,762,763,491,,488,487,486,496,489,,,,,102,90,93,94,499,95,97,96,98", ",,,,91,101,114,113,115,116,,,85,,92,106,107,494,,,,,118,117,119,,504", "503,507,506,,,,500,,104,105,,,358,,,,,,,,,,,,491,,488,487,486,496,489", ",,,,,,,,499,,,,,,491,485,488,487,486,496,489,,,,,,,,,499,494,102,90", "93,94,,95,97,96,98,,507,506,,91,101,500,,,,,494,85,,92,106,107,,,,504", "503,507,506,,,491,500,488,487,486,496,489,,491,,488,487,486,496,489", "499,,,,,485,,,499,,491,,488,487,486,496,489,,,,,,494,644,,499,485,,", ",494,504,503,507,506,,,,500,504,503,507,506,,,,500,494,,,,,,,,,504,503", "507,506,,,491,500,488,487,486,496,489,,,,,,,,,499,485,,,,,,,,485,,,", ",,,,,,,,,494,,,,485,,,,,,,507,506,872,469,,500,871,,,,,,,,169,170,,166", "148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,485", ",,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,842,469,174", ",843,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172", "158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153", "145,167,146,837,462,174,,838,,,,,,,,169,170,,166,148,149,150,157,154", "156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165", "164,173,160,161,155,153,145,167,146,465,469,174,,464,,,,,,,,169,170", ",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,", ",,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,729,469", "174,,730,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171", "172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155", "153,145,167,146,556,462,174,,557,,,,,,,,169,170,,166,148,149,150,157", "154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168", "165,164,173,160,161,155,153,145,167,146,458,462,174,,459,,,,,,,,169", "170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306", ",,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,556", "462,174,,557,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,", ",,171,172,158,159,,,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161", "155,153,145,167,146,729,469,174,,730,,,,,,,,169,170,,166,148,149,150", "157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147", "168,165,164,173,160,161,155,153,145,167,146,727,462,174,,728,,,,,,,", "169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,", ",,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146", "807,462,174,,808,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152", ",,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160", "161,155,153,145,167,146,810,469,174,,811,,,,,,,,169,170,,166,148,149", "150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162", ",147,168,165,164,173,160,161,155,153,145,167,146,1200,462,174,,1201", ",,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158", "159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145", "167,146,869,462,174,,870,,,,,,,,169,170,,166,148,149,150,157,154,156", ",,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164", "173,160,161,155,153,145,167,146,1202,469,174,,1203,,,,,,,,169,170,,166", "148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,", ",163,162,,147,168,165,164,173,160,161,155,153,145,167,146,839,469,174", ",840,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172", "158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153", "145,167,146,1218,469,174,,1217,,,,,,,,169,170,,166,148,149,150,157,154", "156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165", "164,173,160,161,155,153,145,167,146,727,462,174,,728,,,,,,,,169,170", ",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,", ",,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,,,174"]; + racc_action_table = (arr = $$$('Array').$new(28717, nil)); idx = 0; $send(clist, 'each', [], function $Ruby31$2(str){ @@ -20317,8 +20270,8 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ $writer[$rb_minus($writer["length"], 1)]; }; return (idx = $rb_plus(idx, 1));}, 1);}, 1); - clist = ["461,348,1010,845,518,390,389,461,461,461,512,512,781,461,461,731,461", "1052,926,833,835,1080,921,986,461,1082,414,622,413,1229,440,628,832", "498,752,622,461,461,830,461,461,461,461,461,1097,1098,1101,381,382,393", "740,498,752,990,23,740,1083,1083,990,740,1052,731,921,518,926,348,461", "461,461,461,461,461,461,461,461,461,461,461,461,461,550,550,461,461", "461,835,461,461,348,440,461,1158,414,461,413,23,638,638,461,781,461", "3,461,461,512,461,461,461,461,461,105,461,845,461,390,389,619,105,105", "105,1010,1193,105,105,105,1010,105,461,833,835,461,461,986,461,105,461", "105,105,105,1080,628,832,461,1082,1080,461,105,105,1082,105,105,105", "105,105,1194,1195,830,1215,393,830,973,830,1097,1098,1101,381,382,1097", "1098,1101,381,382,1047,69,550,9,105,105,105,105,105,105,105,105,105", "105,105,105,105,105,638,922,105,105,105,638,105,105,817,12,105,817,386", "105,105,806,105,386,105,1158,105,19,105,105,1158,105,105,105,105,105", "619,105,108,105,240,619,973,922,241,108,108,108,1195,1196,108,108,108", "105,108,1193,105,105,105,105,1193,105,108,105,108,108,108,20,105,14", "1047,105,834,803,108,108,69,108,108,108,108,108,973,19,15,973,806,806", "1194,1195,804,1215,17,1194,1195,243,1215,973,1085,240,1085,813,813,241", "108,108,108,108,108,108,108,108,108,108,108,108,108,108,742,27,108,108", "108,20,108,108,1196,806,108,1000,806,108,108,1120,108,742,108,834,108", "803,108,108,806,108,108,108,108,108,31,108,726,108,355,355,243,42,804", "726,726,726,48,48,726,726,726,108,726,1196,108,108,108,108,1196,108", "726,108,726,726,726,803,108,834,803,108,697,697,726,726,1000,726,726", "726,726,726,803,813,804,1120,1120,804,655,284,925,573,249,1213,925,941", "284,399,45,804,31,399,1120,1213,726,726,726,726,726,726,726,726,726", "726,726,726,726,726,355,355,726,726,726,31,726,726,48,48,726,723,409", "726,726,653,726,292,726,53,726,213,726,726,292,726,726,726,726,726,249", "726,724,726,655,655,284,573,573,573,415,941,941,941,655,408,226,726", "410,917,726,726,726,726,573,726,412,726,941,725,455,248,726,228,865", "726,725,725,725,232,723,725,725,725,391,725,409,409,409,653,653,391", "292,725,725,725,725,725,864,653,391,724,16,16,242,725,725,456,725,725", "725,725,725,244,415,415,415,455,917,408,408,408,410,410,410,411,44,248", "245,455,412,412,412,865,251,725,725,725,725,725,725,725,725,725,725", "725,725,725,725,391,939,725,725,725,456,725,725,864,798,725,939,287", "725,725,302,725,456,725,287,725,798,725,725,44,725,725,725,725,725,866", "725,725,725,1183,1183,44,866,866,866,411,411,411,866,866,377,866,725", "377,939,725,725,725,725,866,725,283,725,316,5,317,939,725,283,5,725", "866,866,320,866,866,866,866,866,818,818,332,287,231,1180,231,231,231", "231,231,134,1180,285,772,333,134,134,772,231,285,1180,866,866,866,866", "866,866,866,866,866,866,866,866,866,866,335,286,866,866,866,231,866", "866,286,336,866,283,29,866,231,231,231,231,866,29,866,231,866,866,337", "866,866,866,866,866,328,866,462,866,1180,328,343,85,506,462,462,462", "285,506,346,462,462,866,462,85,866,866,347,866,349,866,462,462,350,85", "373,231,866,373,374,866,286,374,462,462,354,462,462,462,462,462,1150", "29,356,1150,641,1099,641,641,641,641,641,288,1099,359,755,755,380,380", "288,641,363,1099,462,462,462,462,462,462,462,462,462,462,462,462,462", "462,365,43,462,462,462,641,462,462,371,375,462,21,289,462,641,641,641", "641,462,289,462,641,462,462,359,462,462,462,462,462,376,462,462,462", "1099,675,359,378,387,966,288,966,966,966,966,966,388,462,43,290,462", "462,398,462,966,462,290,291,21,867,43,641,462,392,291,462,867,867,867", "694,21,394,867,867,403,867,966,289,423,694,429,431,675,867,867,966,966", "966,966,432,439,434,966,437,675,867,867,439,867,867,867,867,867,441", "398,451,439,453,401,454,463,398,694,694,290,401,398,694,966,469,398", "470,291,473,401,867,867,867,867,867,867,867,867,867,867,867,867,867", "867,398,474,867,867,867,475,867,867,54,478,867,479,480,867,490,54,439", "502,867,505,867,508,867,867,54,867,867,867,867,867,398,867,867,867,401", "514,340,522,523,530,531,342,341,340,933,532,533,867,342,341,867,867", "340,867,933,867,631,342,341,558,559,560,867,631,564,867,215,215,215", "215,215,215,631,54,580,215,215,581,584,586,215,837,215,215,215,215,215", "215,215,591,595,604,933,605,215,215,215,215,215,215,215,340,606,215", "933,616,342,341,620,215,215,215,215,215,215,215,215,215,215,215,215", "631,215,215,215,18,215,215,215,215,215,590,18,837,621,360,51,51,590", "623,837,18,360,650,658,837,660,590,667,837,215,360,676,215,681,686,215", "215,344,688,215,690,215,708,709,344,215,711,837,718,529,727,51,51,344", "215,736,744,745,746,215,215,215,215,775,215,215,215,215,778,18,780,786", "215,215,787,590,788,837,790,360,215,529,215,215,215,529,529,215,215", "836,836,836,836,836,836,792,800,802,836,836,805,808,344,836,397,836", "836,836,836,836,836,836,578,578,578,578,578,836,836,836,836,836,836", "836,809,907,836,907,907,907,812,907,836,836,836,836,836,836,836,836", "836,836,836,836,820,836,836,836,239,836,836,836,836,836,838,239,397", "826,1138,827,831,838,907,397,239,1138,838,840,397,844,838,907,397,836", "1138,846,836,861,863,836,836,807,872,836,885,836,888,889,807,836,892", "397,894,807,897,646,646,807,836,646,646,646,898,836,836,836,836,900", "836,836,836,836,901,239,903,906,836,836,919,838,927,397,928,1138,836", "932,836,836,836,935,940,836,836,233,233,233,233,233,233,959,962,963", "233,233,972,977,807,233,980,233,233,233,233,233,233,233,25,987,989,996", "997,233,233,233,233,233,233,233,998,710,233,710,710,710,999,710,233", "233,233,233,233,233,233,233,233,233,233,233,1025,233,233,233,1026,233", "233,233,233,233,25,25,25,25,25,25,25,25,25,25,25,1031,25,25,1036,1037", "25,25,1038,233,1039,25,233,1125,1040,233,233,1041,1045,233,1046,233", "25,1125,25,233,25,25,1049,25,25,25,25,25,233,25,1053,1060,1065,233,233", "233,233,1066,233,233,233,233,1068,1069,1070,1072,233,233,1073,25,1125", "1125,1074,1089,233,1125,233,233,233,1100,1103,233,233,991,991,991,991", "991,991,1104,1105,1106,991,991,1117,1136,1139,991,1148,991,991,991,991", "991,991,991,8,8,8,8,8,991,991,991,991,991,991,991,1149,1154,991,1164", "1165,1167,1170,444,991,991,991,991,991,991,991,991,991,991,991,991,1173", "991,991,991,1174,991,991,991,991,991,444,444,444,444,444,444,444,444", "444,444,444,1175,444,444,1176,1178,444,444,1192,991,1197,771,991,771", "771,991,991,771,1199,991,1210,991,444,1211,444,991,444,444,1217,444", "444,444,444,444,991,444,1218,1219,1220,991,991,991,991,1,991,991,991", "991,771,,,,991,991,,444,,444,,,991,,991,991,991,,,991,991,1096,1096", "1096,1096,1096,1096,,,,1096,1096,,,,1096,,1096,1096,1096,1096,1096,1096", "1096,331,331,331,331,331,1096,1096,1096,1096,1096,1096,1096,,,1096,", ",,,689,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,", "1096,1096,1096,,1096,1096,1096,1096,1096,689,689,689,689,689,689,689", "689,689,689,689,,689,689,,,689,689,,1096,,,1096,,,1096,1096,,,1096,", "1096,689,,689,1096,689,689,,689,689,689,689,689,1096,689,,,,1096,1096", "1096,1096,,1096,1096,1096,1096,,,,,1096,1096,,689,,,,,1096,,1096,1096", "1096,,,1096,1096,2,2,2,2,2,2,,,,2,2,,,,2,,2,2,2,2,2,2,2,370,370,370", "370,370,2,2,2,2,2,2,2,,,2,,,,,450,2,2,2,2,2,2,2,2,2,2,2,2,,2,2,2,,2", "2,2,2,2,450,450,450,450,450,450,450,450,450,450,450,,450,450,,,450,450", ",2,,,2,,,2,2,,,2,,2,450,,450,2,450,450,,450,450,450,450,450,2,450,,", ",2,2,2,2,,2,2,2,2,,,,,2,2,,450,,,,,2,,2,2,2,,,2,2,639,639,639,639,639", "639,,,,639,639,,,,639,,639,639,639,639,639,639,639,,,,,,639,639,639", "639,639,639,639,,,639,,,,,719,639,639,639,639,639,639,639,639,639,639", "639,639,,639,639,639,,639,639,639,639,639,719,719,719,719,719,719,719", "719,719,719,719,,719,719,,,719,719,,639,,,639,,,639,639,,,639,,639,719", ",719,639,719,719,,719,719,719,719,719,639,719,,,,639,639,639,639,,639", "639,639,639,,,,,639,639,,719,,,,,639,,639,639,639,,,639,639,1062,1062", "1062,1062,1062,1062,,,,1062,1062,,,,1062,,1062,1062,1062,1062,1062,1062", "1062,,,,,,1062,1062,1062,1062,1062,1062,1062,,1190,1062,1190,1190,1190", ",1190,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,,1062", "1062,1062,,1062,1062,1062,1062,1062,869,869,869,869,869,869,869,869", "869,869,869,,869,869,,,869,869,,1062,,,1062,,,1062,1062,,,1062,,1062", "869,,869,1062,869,869,,869,869,869,869,869,1062,869,,,,1062,1062,1062", "1062,,1062,1062,1062,1062,,,,,1062,1062,,869,,,,,1062,,1062,1062,1062", ",,1062,1062,967,967,967,967,967,967,,,,967,967,,,,967,,967,967,967,967", "967,967,967,,,,,,967,967,967,967,967,967,967,,1092,967,1092,1092,1092", ",1092,967,967,967,967,967,967,967,967,967,967,967,967,,967,967,967,", "967,967,967,967,967,314,314,314,314,314,314,314,314,314,314,314,,314", "314,,,314,314,,967,,,967,,,967,967,,,967,,967,314,,314,967,314,314,", "314,314,314,314,314,967,314,,,,967,967,967,967,,967,967,967,967,,,,", "967,967,,314,,,,,967,,967,967,967,,,967,967,369,369,369,369,369,369", ",,,369,369,,,,369,,369,369,369,369,369,369,369,,,,,,369,369,369,369", "369,369,369,,,369,,,,,,369,369,369,369,369,369,369,369,369,369,369,369", ",369,369,369,,369,369,369,369,369,547,547,547,547,547,547,547,547,547", "547,547,,547,547,,,547,547,,369,,,369,,,369,369,,,369,,369,547,,547", "369,547,547,,547,547,547,547,547,369,547,,,,369,369,369,369,,369,369", "369,369,,,,,369,369,547,547,,,,,369,,369,369,369,,,369,369,250,250,250", "250,250,250,,,,250,250,,,,250,,250,250,250,250,250,250,250,,,,,,250", "250,250,250,250,250,250,,,250,,,,,,250,250,250,250,250,250,250,250,250", "250,250,250,,250,250,250,,250,250,250,250,250,1061,1061,1061,1061,1061", "1061,1061,1061,1061,1061,1061,,1061,1061,,,1061,1061,,250,,,250,,,250", "250,,,250,,250,1061,,1061,250,1061,1061,,1061,1061,1061,1061,1061,250", "1061,,,,250,250,250,250,,250,250,250,250,,,,,250,250,,1061,,,,,250,", "250,250,250,,,250,250,852,852,852,852,852,852,,,,852,852,,,,852,,852", "852,852,852,852,852,852,,,,,,852,852,852,852,852,852,852,,,852,,,,,", "852,852,852,852,852,852,852,852,852,852,852,852,,852,852,852,,852,852", "852,852,852,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,", "1005,1005,,,1005,1005,,852,,,852,,,852,852,,,852,,852,1005,,1005,852", "1005,1005,,1005,1005,1005,1005,1005,852,1005,,,,852,852,852,852,,852", "852,852,852,,,,,852,852,,1005,,,,,852,,852,852,852,,,852,852,227,227", "227,227,227,227,,,,227,227,,,,227,,227,227,227,227,227,227,227,,,,,", "227,227,227,227,227,227,227,,,227,,,,,,227,227,227,227,227,227,227,227", "227,227,227,227,,227,227,227,,227,227,227,227,227,602,602,602,602,602", "602,602,602,602,602,602,,602,602,,,602,602,,227,,,227,,,227,227,,,227", ",227,602,,602,227,602,602,,602,602,602,602,602,227,602,,,,227,227,227", "227,,227,227,227,227,,,,,227,227,,602,,,,,227,,227,227,227,,,227,227", "841,841,841,841,841,841,,,,841,841,,,,841,,841,841,841,841,841,841,841", ",,,,,841,841,841,841,841,841,841,,,841,,,,,,841,841,841,841,841,841", "841,841,841,841,841,841,,841,841,841,,841,841,841,841,841,1028,1028", "1028,1028,1028,1028,1028,1028,1028,1028,1028,,1028,1028,,,1028,1028", ",841,,,841,,,841,841,,,841,,841,1028,,1028,841,1028,1028,,1028,1028", "1028,1028,1028,841,1028,,,,841,841,841,841,,841,841,841,841,,,,,841", "841,,1028,,,,,841,,841,841,841,,,841,841,1007,1007,1007,1007,1007,1007", ",,,1007,1007,,,,1007,,1007,1007,1007,1007,1007,1007,1007,,,,,,1007,1007", "1007,1007,1007,1007,1007,,,1007,,,,,,1007,1007,1007,1007,1007,1007,1007", "1007,1007,1007,1007,1007,,1007,1007,1007,,1007,1007,1007,1007,1007,1027", "1027,1027,1027,1027,1027,1027,1027,1027,1027,1027,,1027,1027,,,1027", "1027,,1007,,,1007,,,1007,1007,,,1007,,1007,1027,,1027,1007,1027,1027", ",1027,1027,1027,1027,1027,1007,1027,,,,1007,1007,1007,1007,,1007,1007", "1007,1007,,,,,1007,1007,,1027,,,,,1007,,1007,1007,1007,,,1007,1007,1091", "1091,1091,1091,1091,1091,,,,1091,1091,,,,1091,,1091,1091,1091,1091,1091", "1091,1091,,,,,,1091,1091,1091,1091,1091,1091,1091,,,1091,,,,,,1091,1091", "1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,,1091,1091,1091,,1091", "1091,1091,1091,1091,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004", "1004,,1004,1004,,,1004,1004,,1091,,,1091,,,1091,1091,,,1091,,1091,1004", ",1004,1091,1004,1004,,1004,1004,1004,1004,1004,1091,1004,,,,1091,1091", "1091,1091,,1091,1091,1091,1091,,,,,1091,1091,,1004,,,,,1091,,1091,1091", "1091,,,1091,1091,1140,1140,1140,1140,1140,1140,,,,1140,1140,,,,1140", ",1140,1140,1140,1140,1140,1140,1140,,,,,,1140,1140,1140,1140,1140,1140", "1140,,491,1140,491,491,491,,491,1140,1140,1140,1140,1140,1140,1140,1140", "1140,1140,1140,1140,,1140,1140,1140,,1140,1140,1140,1140,1140,706,,706", "706,706,,706,,491,,1107,,1107,1107,1107,,1107,491,,1140,,,1140,,,1140", "1140,,544,1140,,1140,,,,1140,,706,,528,,,,,1140,,706,1107,,1140,1140", "1140,1140,,1140,1140,1140,1140,,,544,,1140,1140,544,544,,544,544,,1140", "528,1140,1140,1140,528,528,1140,1140,618,618,618,618,618,618,,,,618", "618,,,,618,,618,618,618,618,618,618,618,,,,,,618,618,618,618,618,618", "618,,1108,618,1108,1108,1108,,1108,618,618,618,618,618,618,618,618,618", "618,618,618,,618,618,618,,618,618,618,618,618,546,546,546,546,546,546", "546,546,1108,546,546,,,,,,546,546,,618,,,618,,,618,618,,543,618,,618", "546,,546,618,546,546,,546,546,546,546,546,618,546,,,,618,618,618,618", ",618,618,618,618,,,543,,618,618,543,543,,543,543,,618,,618,618,618,", ",618,618,615,615,615,615,615,615,,,,615,615,,,,615,,615,615,615,615", "615,615,615,,,,,,615,615,615,615,615,615,615,,908,615,908,908,908,,908", "615,615,615,615,615,615,615,615,615,615,615,615,,615,615,615,,615,615", "615,615,615,601,,,,,,,,908,,,,,,,,601,601,,615,,,615,,,615,615,,,615", ",615,601,,601,615,601,601,,601,601,,,601,615,601,,,,615,615,615,615", ",615,615,615,615,,,,,615,615,,,,,,,615,,615,615,615,,,615,615,887,887", "887,887,887,887,,,,887,887,,,,887,,887,887,887,887,887,887,887,,,,,", "887,887,887,887,887,887,887,,,887,,,,,,887,887,887,887,887,887,887,887", "887,887,887,887,,887,887,887,,887,887,887,887,887,545,545,545,545,545", "545,545,,,545,545,,,,,,545,545,,887,,,887,,,887,887,,,887,,887,545,", "545,887,545,545,,545,545,545,545,545,887,545,,,,887,887,887,887,,887", "887,887,887,,,,,887,887,,,,,,,887,,887,887,887,,,887,887,339,339,339", "339,339,339,,,,339,339,,,,339,,339,339,339,339,339,339,339,,,,,,339", "339,339,339,339,339,339,,,339,,,,,,339,339,339,339,339,339,339,339,339", "339,339,339,,339,339,339,,339,339,339,339,339,526,526,526,526,526,526", "526,526,526,526,526,,526,526,,,526,526,,339,,,339,,,339,339,,,339,,339", "526,,526,339,526,526,,526,526,526,526,526,339,526,,,,339,339,339,339", ",339,339,339,339,,,,,339,339,,,,,,,339,,339,339,339,,,339,339,1090,1090", "1090,1090,1090,1090,,,,1090,1090,,,,1090,,1090,1090,1090,1090,1090,1090", "1090,,,,,,1090,1090,1090,1090,1090,1090,1090,,,1090,,,,,,1090,1090,1090", "1090,1090,1090,1090,1090,1090,1090,1090,1090,,1090,1090,1090,,1090,1090", "1090,1090,1090,542,542,542,542,542,542,542,,,542,542,,,,,,542,542,,1090", ",,1090,,,1090,1090,,,1090,,1090,542,,542,1090,542,542,,542,542,542,542", "542,1090,542,,,,1090,1090,1090,1090,,1090,1090,1090,1090,,,,,1090,1090", ",,,,,,1090,,1090,1090,1090,,,1090,1090,38,38,38,38,38,38,,,,38,38,,", ",38,,38,38,38,38,38,38,38,,,,,,38,38,38,38,38,38,38,,,38,,,,,,38,38", "38,38,38,38,38,38,38,38,38,38,,38,38,38,,38,38,38,38,38,541,541,541", "541,541,541,541,,,541,541,,,,,,541,541,,38,,,38,,,38,38,,,38,,38,541", ",541,38,541,541,,541,541,541,541,541,38,541,,,,38,38,38,38,,38,38,38", "38,,,,,38,38,,,,,,,38,,38,38,38,,,38,38,985,985,985,985,985,985,,,,985", "985,,,,985,,985,985,985,985,985,985,985,,,,,,985,985,985,985,985,985", "985,,,985,,,,,,985,985,985,985,985,985,985,985,985,985,985,985,,985", "985,985,,985,985,985,985,985,540,540,540,540,540,540,540,,,540,540,", ",,,,540,540,,985,,,985,,,985,985,,,985,,985,540,,540,985,540,540,,540", "540,540,540,540,985,540,,,,985,985,985,985,,985,985,985,985,,,,,985", "985,,,,,,,985,,985,985,985,,,985,985,1184,1184,1184,1184,1184,1184,", ",,1184,1184,,,,1184,,1184,1184,1184,1184,1184,1184,1184,,,,,,1184,1184", "1184,1184,1184,1184,1184,,,1184,,,,,,1184,1184,1184,1184,1184,1184,1184", "1184,1184,1184,1184,1184,,1184,1184,1184,,1184,1184,1184,1184,1184,361", "361,361,361,361,361,361,361,361,361,361,,361,361,,,361,361,,1184,,,1184", ",,1184,1184,,,1184,,1184,361,,361,1184,361,361,,361,361,361,361,361", "1184,361,,,,1184,1184,1184,1184,,1184,1184,1184,1184,,,,,1184,1184,", ",,,,,1184,,1184,1184,1184,,,1184,1184,385,385,385,385,385,385,,,,385", "385,,,,385,,385,385,385,385,385,385,385,,,,,,385,385,385,385,385,385", "385,,,385,,,,,,385,385,385,385,385,385,385,385,385,385,385,385,,385", "385,385,,385,385,385,385,385,539,539,539,539,539,539,539,,,539,539,", ",,,,539,539,,385,,,385,,,385,385,,,385,,385,539,,539,385,539,539,,539", "539,539,539,539,385,539,,,,385,385,385,385,,385,385,385,385,,,,,385", "385,,,,,,,385,,385,385,385,,,385,385,384,384,384,384,384,384,,,,384", "384,,,,384,,384,384,384,384,384,384,384,,,,,,384,384,384,384,384,384", "384,,,384,,,,,,384,384,384,384,384,384,384,384,384,384,384,384,,384", "384,384,,384,384,384,384,384,538,538,538,538,538,538,538,,,538,538,", ",,,,538,538,,384,,,384,,,384,384,,,384,,384,538,,538,384,538,538,,538", "538,538,538,538,384,538,,,,384,384,384,384,,384,384,384,384,,,,,384", "384,,,,,,,384,,384,384,384,,,384,384,132,132,132,132,132,132,,,,132", "132,,,,132,,132,132,132,132,132,132,132,,,,,,132,132,132,132,132,132", "132,,,132,,,,,,132,132,132,132,132,132,132,132,132,132,132,132,,132", "132,132,,132,132,132,132,132,527,527,527,527,527,527,527,527,527,527", "527,,527,527,,,527,527,,132,,,132,,,132,132,,,132,,132,527,,527,132", "527,527,,527,527,527,527,527,132,527,,,,132,132,132,132,,132,132,132", "132,,,,,132,132,,,,,,,132,,132,132,132,,,132,132,334,334,334,334,334", "334,,,,334,334,,,,334,,334,334,334,334,334,334,334,,,,,,334,334,334", "334,334,334,334,,,334,,,,,,334,334,334,334,334,334,334,334,334,334,334", "334,,334,334,334,,334,334,334,334,334,548,,,,,,,,,,,,,,,,548,548,,334", ",,334,,,334,334,,,334,,334,548,,548,334,548,548,,548,548,,,548,334,548", ",,,334,334,334,334,,334,334,334,334,,,,,334,334,,,,914,914,914,334,914", "334,334,334,914,914,334,334,,914,,914,914,914,914,914,914,914,,,,,,914", "914,914,914,914,914,914,,,914,,,,,,,914,,,914,914,914,914,914,914,914", "914,,914,914,914,,914,914,914,914,914,537,537,537,537,537,537,537,,", "537,537,,,,,,537,537,,914,,,914,,,914,914,,,914,,,537,,537,914,537,537", ",537,537,537,537,537,914,537,,,,914,914,914,914,,914,914,914,914,,,", ",914,914,,,,915,915,915,914,915,914,914,914,915,915,914,914,,915,,915", "915,915,915,915,915,915,,,,,,915,915,915,915,915,915,915,,,915,,,,,", ",915,,,915,915,915,915,915,915,915,915,,915,915,915,,915,915,915,915", "915,362,362,362,362,362,362,362,362,362,362,362,,362,362,,,362,362,", "915,,,915,,,915,915,,,915,,,362,,362,915,362,362,,362,362,362,362,362", "915,362,,,,915,915,915,915,,915,915,915,915,,,,,915,915,,,,916,916,916", "915,916,915,915,915,916,916,915,915,,916,,916,916,916,916,916,916,916", ",,,,,916,916,916,916,916,916,916,,,916,,,,,,,916,,,916,916,916,916,916", "916,916,916,,916,916,916,,916,916,916,916,916,534,,,,,,,,,,,,,,,,534", "534,,916,,,916,,,916,916,,,916,,,534,,534,916,534,534,,534,534,,,,916", ",,,,916,916,916,916,,916,916,916,916,,,,,916,916,,,,261,261,261,916", "261,916,916,916,261,261,916,916,,261,,261,261,261,261,261,261,261,,", ",,,261,261,261,261,261,261,261,,,261,,,,,,,261,,,261,261,261,261,261", "261,261,261,,261,261,261,,261,261,261,261,261,535,,,,,,,,,,,,,,,,535", "535,,261,,,261,,,261,261,,,261,,,535,,535,261,535,535,,535,535,,,,261", ",,,,261,261,261,261,,261,261,261,261,,,,,261,261,,,,729,729,729,261", "729,261,261,261,729,729,261,261,,729,,729,729,729,729,729,729,729,,", ",,,729,729,729,729,729,729,729,,,729,,,,,,,729,,,729,729,729,729,729", "729,729,729,,729,729,729,,729,729,729,729,729,536,,,,,,,,,,,,,,,,536", "536,,729,,,729,,,729,729,,,729,,,536,,,729,536,536,,536,536,,,,729,", ",,,729,729,729,729,,729,729,729,729,,,,,729,729,,,,325,325,325,729,325", "729,729,729,325,325,729,729,,325,,325,325,325,325,325,325,325,,,,,,325", "325,325,325,325,325,325,,,325,,,,,,,325,,,325,325,325,325,325,325,325", "325,,325,325,325,,325,325,325,325,325,,,,,,,,,,,,,,,,,,,,325,,,325,", ",325,325,,,325,,,,,,325,,,,,,,,,325,,,,,325,325,325,325,,325,325,325", "325,,,,,325,325,,,,728,728,728,325,728,325,325,325,728,728,325,325,", "728,,728,728,728,728,728,728,728,,,,,,728,728,728,728,728,728,728,,", "728,,,,,,,728,,,728,728,728,728,728,728,728,728,,728,728,728,,728,728", "728,728,728,,,,,,,,,,,,,,,,,,,,728,,,728,,,728,728,,,728,,,,,,728,,", ",,,,,,728,,,,,728,728,728,728,,728,728,728,728,,,,,728,728,,,,260,260", "260,728,260,728,728,728,260,260,728,728,,260,,260,260,260,260,260,260", "260,,,,,,260,260,260,260,260,260,260,,,260,,,,,,,260,,,260,260,260,260", "260,260,260,260,,260,260,260,,260,260,260,260,260,,,,,,,,,,,,,,,,,,", ",260,,,260,,,260,260,,,260,,,,,,260,,,,,,,,,260,,,,,260,260,260,260", ",260,260,260,260,,,,,260,260,,,,259,259,259,260,259,260,260,260,259", "259,260,260,,259,,259,259,259,259,259,259,259,,,,,,259,259,259,259,259", "259,259,,,259,,,,,,,259,,,259,259,259,259,259,259,259,259,,259,259,259", ",259,259,259,259,259,,,,,,,,,,,,,,,,,,,,259,,,259,,,259,259,,,259,,", ",,,259,,,,,,,,,259,,,,,259,259,259,259,,259,259,259,259,,,,,259,259", ",,,258,258,258,259,258,259,259,259,258,258,259,259,,258,,258,258,258", "258,258,258,258,,,,,,258,258,258,258,258,258,258,,,258,,,,,,,258,,,258", "258,258,258,258,258,258,258,,258,258,258,,258,258,258,258,258,,,,,,", ",,,,,,,,,,,,,258,,,258,,,258,258,,,258,,,,,,258,,,,,,,,,258,,,,,258", "258,258,258,,258,258,258,258,,,,,258,258,,,,257,257,257,258,257,258", "258,258,257,257,258,258,,257,,257,257,257,257,257,257,257,,,,,,257,257", "257,257,257,257,257,,,257,,,,,,,257,,,257,257,257,257,257,257,257,257", ",257,257,257,,257,257,257,257,257,,,,,,,,,,,,,,,,,,,,257,,,257,,,257", "257,,,257,,,,,,257,,,,,,,,,257,,,,,257,257,257,257,,257,257,257,257", ",,,,257,257,,,,256,256,256,257,256,257,257,257,256,256,257,257,,256", ",256,256,256,256,256,256,256,,,,,,256,256,256,256,256,256,256,,,256", ",,,,,,256,,,256,256,256,256,256,256,256,256,,256,256,256,,256,256,256", "256,256,,,,,,,,,,,,,,,,,,,,256,,,256,,,256,256,,,256,,,,,,256,,,,,,", ",,256,,,,,256,256,256,256,,256,256,256,256,,,,,256,256,,,,,,,256,,256", "256,256,,,256,256,330,330,330,330,330,,,,330,330,,,,330,,330,330,330", "330,330,330,330,,,,,,330,330,330,330,330,330,330,,,330,,,,,,330,330", ",330,330,330,330,330,330,330,330,330,,330,330,330,,330,330,330,330,330", ",,,,,,,,,,,,,,,,,,,330,,,330,,,330,330,,,330,,330,,,,330,,,,,,,,,330", ",,,,330,330,330,330,,330,330,330,330,,,,,330,330,,,,704,704,704,330", "704,330,330,330,704,704,330,330,,704,,704,704,704,704,704,704,704,,", ",,,704,704,704,704,704,704,704,,,704,,,,,,,704,,,704,704,704,704,704", "704,704,704,,704,704,704,,704,704,704,704,704,,,,,,,,,,,,,,,,,,,,704", ",,704,,,704,704,,,704,,,,,,704,,,,,,,,,704,,,,,704,704,704,704,,704", "704,704,704,,,,,704,704,,,,691,691,691,704,691,704,704,704,691,691,704", "704,,691,,691,691,691,691,691,691,691,,,,,,691,691,691,691,691,691,691", ",,691,,,,,,,691,,,691,691,691,691,691,691,691,691,,691,691,691,,691", "691,691,691,691,,,,,,,,,,,,,,,,,,,,691,,,691,,,691,691,,,691,,691,,", ",691,,,,,,,,,691,,,,,691,691,691,691,,691,691,691,691,,,,,691,691,,", ",255,255,255,691,255,691,691,691,255,255,691,691,,255,,255,255,255,255", "255,255,255,,,,,,255,255,255,255,255,255,255,,,255,,,,,,,255,,,255,255", "255,255,255,255,255,255,,255,255,255,,255,255,255,255,255,,,,,,,,,,", ",,,,,,,,,255,,,255,,,255,255,,,255,,,,,,255,,,,,,,,,255,,,,,255,255", "255,255,,255,255,255,255,,,,,255,255,,,,254,254,254,255,254,255,255", "255,254,254,255,255,,254,,254,254,254,254,254,254,254,,,,,,254,254,254", "254,254,254,254,,,254,,,,,,,254,,,254,254,254,254,254,254,254,254,,254", "254,254,,254,254,254,254,254,,,,,,,,,,,,,,,,,,,,254,,,254,,,254,254", ",,254,,,,,,254,,,,,,,,,254,,,,,254,254,254,254,,254,254,254,254,,,,", "254,254,,,,685,685,685,254,685,254,254,254,685,685,254,254,,685,,685", "685,685,685,685,685,685,,,,,,685,685,685,685,685,685,685,,,685,,,,,", ",685,,,685,685,685,685,685,685,685,685,,685,685,685,,685,685,685,685", "685,,,,,,,,,,,,,,,,,,,,685,,,685,,,685,685,,,685,,,,,,685,,,,,,,,,685", ",,,,685,685,685,685,,685,685,685,685,,,,,685,685,,,,684,684,684,685", "684,685,685,685,684,684,685,685,,684,,684,684,684,684,684,684,684,,", ",,,684,684,684,684,684,684,684,,,684,,,,,,,684,,,684,684,684,684,684", "684,684,684,,684,684,684,,684,684,684,684,684,,,,,,,,,,,,,,,,,,,,684", ",,684,,,684,684,,,684,,,,,,684,,,,,,,,,684,,,,,684,684,684,684,,684", "684,684,684,,,,,684,684,,,,680,680,680,684,680,684,684,684,680,680,684", "684,,680,,680,680,680,680,680,680,680,,,,,,680,680,680,680,680,680,680", ",,680,,,,,,,680,,,680,680,680,680,680,680,680,680,,680,680,680,,680", "680,680,680,680,,,,,,,,,,,,,,,,,,,,680,,,680,,,680,680,,,680,,,,,,680", ",,,,,,,,680,,,,,680,680,680,680,,680,680,680,680,,,,,680,680,,,,679", "679,679,680,679,680,680,680,679,679,680,680,,679,,679,679,679,679,679", "679,679,,,,,,679,679,679,679,679,679,679,,,679,,,,,,,679,,,679,679,679", "679,679,679,679,679,,679,679,679,,679,679,679,679,679,,,,,,,,,,,,,,", ",,,,,679,,,679,,,679,679,,,679,,,,,,679,,,,,,,,,679,,,,,679,679,679", "679,,679,679,679,679,,,,,679,679,,,,678,678,678,679,678,679,679,679", "678,678,679,679,,678,,678,678,678,678,678,678,678,,,,,,678,678,678,678", "678,678,678,,,678,,,,,,,678,,,678,678,678,678,678,678,678,678,678,678", "678,678,,678,678,678,678,678,,,,,,,,,,,,,,,,,,,,678,,,678,,,678,678", ",,678,,,,678,,678,,,678,,,,,,678,,,,,678,678,678,678,,678,678,678,678", ",,,,678,678,,,,677,677,677,678,677,678,678,678,677,677,678,678,,677", ",677,677,677,677,677,677,677,,,,,,677,677,677,677,677,677,677,,,677", ",,,,,,677,,,677,677,677,677,677,677,677,677,677,677,677,677,,677,677", "677,677,677,,,,,,,,,,,,,,,,,,,,677,,,677,,,677,677,,,677,,677,,677,", "677,,,677,,,,,,677,,,,,677,677,677,677,,677,677,677,677,,,,,677,677", ",,,950,950,950,677,950,677,677,677,950,950,677,677,,950,,950,950,950", "950,950,950,950,,,,,,950,950,950,950,950,950,950,,,950,,,,,,,950,,,950", "950,950,950,950,950,950,950,,950,950,950,,950,950,950,950,950,,,,,,", ",,,,,,,,,,,,,950,,,950,,,950,950,,,950,,,,,,950,,,,,,,,,950,,,,,950", "950,950,950,,950,950,950,950,,,,,950,950,,,,956,956,956,950,956,950", "950,950,956,956,950,950,,956,,956,956,956,956,956,956,956,,,,,,956,956", "956,956,956,956,956,,,956,,,,,,,956,,,956,956,956,956,956,956,956,956", ",956,956,956,,956,956,956,956,956,,,,,,,,,,,,,,,,,,,,956,,,956,,,956", "956,,,956,,,,,,956,,,,,,,,,956,,,,,956,956,956,956,,956,956,956,956", ",,,,956,956,,,,,,,956,,956,956,956,32,,956,956,,,,32,32,32,,,32,32,32", ",32,,,,,,,,32,32,32,32,,,,,,,,,32,32,,32,32,32,32,32,,,,,,,,,,,,,,,", ",,,,,,,32,32,32,32,32,32,32,32,32,32,32,32,32,32,,,32,32,32,,,32,,32", "32,,,32,32,,32,,32,,32,,32,32,,32,32,32,32,32,33,32,32,32,,,,33,33,33", ",,33,33,33,,33,32,,,32,32,,32,33,32,33,33,,,,,32,,,,33,33,,33,33,33", "33,33,,,,,,,,,,,,,,,,,,,,,,,33,33,33,33,33,33,33,33,33,33,33,33,33,33", ",,33,33,33,,,33,,33,33,,,33,33,,33,,33,,33,,33,33,,33,33,33,33,33,,33", ",33,,,,,,,,,,,,,,33,,,33,33,,33,,33,674,674,674,,674,,33,,674,674,,", ",674,,674,674,674,674,674,674,674,,,,,,674,674,674,674,674,674,674,", ",674,,,,,,,674,,,674,674,674,674,674,674,674,674,,674,674,674,,674,674", "674,674,674,,,,,,,,,,,,,,,,,,,,674,,,674,,,674,674,,,674,,,,,,674,,", ",,,,,,674,,,,,674,674,674,674,,674,674,674,674,,,,,674,674,,,,34,34", "34,674,34,674,674,674,34,34,674,674,,34,,34,34,34,34,34,34,34,,,,,,34", "34,34,34,34,34,34,,,34,,,,,,,34,,,34,34,34,34,34,34,34,34,34,34,34,34", ",34,34,34,34,34,,,,,,,,,,,,,,,,,,,,34,,,34,,,34,34,,,34,,34,,34,,34", ",,34,,,,,,34,,,,,34,34,34,34,,34,34,34,34,,,,,34,34,,,,,,,34,,34,34", "34,,,34,34,673,673,673,673,673,,,,673,673,,,,673,,673,673,673,673,673", "673,673,,,,,,673,673,673,673,673,673,673,,,673,,,,,,673,673,,673,673", "673,673,673,673,673,673,673,,673,673,673,,673,673,673,673,673,,,,,,", ",,,,,,,,,,,,,673,,,673,,,673,673,,,673,,673,,,,673,,,,,,,,,673,,,,,673", "673,673,673,,673,673,673,673,,,,,673,673,,,,979,979,979,673,979,673", "673,673,979,979,673,673,,979,,979,979,979,979,979,979,979,,,,,,979,979", "979,979,979,979,979,,,979,,,,,,,979,,,979,979,979,979,979,979,979,979", ",979,979,979,,979,979,979,979,979,,,,,,,,,,,,,,,,,,,,979,,,979,,,979", "979,,,979,,,,,,979,,,,,,,,,979,,,,,979,979,979,979,,979,979,979,979", ",,,,979,979,,,,670,670,670,979,670,979,979,979,670,670,979,979,,670", ",670,670,670,670,670,670,670,,,,,,670,670,670,670,670,670,670,,,670", ",,,,,,670,,,670,670,670,670,670,670,670,670,670,670,670,670,,670,670", "670,670,670,,,,,,,,,,,,,,,,,,,,670,,,670,,,670,670,,,670,,670,,670,", "670,,,670,,,,,,670,,,,,670,670,670,670,,670,670,670,670,,,,,670,670", ",,,984,984,984,670,984,670,670,670,984,984,670,670,,984,,984,984,984", "984,984,984,984,,,,,,984,984,984,984,984,984,984,,,984,,,,,,,984,,,984", "984,984,984,984,984,984,984,,984,984,984,,984,984,984,984,984,,,,,,", ",,,,,,,,,,,,,984,,,984,,,984,984,,,984,,984,,,,984,,,,,,,,,984,,,,,984", "984,984,984,,984,984,984,984,,,,,984,984,,,,669,669,669,984,669,984", "984,984,669,669,984,984,,669,,669,669,669,669,669,669,669,,,,,,669,669", "669,669,669,669,669,,,669,,,,,,,669,,,669,669,669,669,669,669,669,669", ",669,669,669,,669,669,669,669,669,,,,,,,,,,,,,,,,,,,,669,,,669,,,669", "669,,,669,,,,,,669,,,,,,,,,669,,,,,669,669,669,669,,669,669,669,669", ",,,,669,669,,,,668,668,668,669,668,669,669,669,668,668,669,669,,668", ",668,668,668,668,668,668,668,,,,,,668,668,668,668,668,668,668,,,668", ",,,,,,668,,,668,668,668,668,668,668,668,668,,668,668,668,,668,668,668", "668,668,,,,,,,,,,,,,,,,,,,,668,,,668,,,668,668,,,668,,668,,,,668,,,", ",,,,,668,,,,,668,668,668,668,,668,668,668,668,,,,,668,668,,,,,,,668", ",668,668,668,,,668,668,666,666,666,666,666,,,,666,666,,,,666,,666,666", "666,666,666,666,666,,,,,,666,666,666,666,666,666,666,,,666,,,,,,666", "666,,666,666,666,666,666,666,666,666,666,,666,666,666,,666,666,666,666", "666,,,,,,,,,,,,,,,,,,,,666,,,666,,,666,666,,,666,,666,,,,666,,,,,,,", ",666,,,,,666,666,666,666,,666,666,666,666,,,,,666,666,,,,247,247,247", "666,247,666,666,666,247,247,666,666,,247,,247,247,247,247,247,247,247", ",,,,,247,247,247,247,247,247,247,,,247,,,,,,,247,,,247,247,247,247,247", "247,247,247,,247,247,247,,247,247,247,247,247,,,,,,,,,,,,,,,,,,,,247", ",,247,,,247,247,,,247,,,,,,247,,,,,,,,,247,,,,,247,247,247,247,,247", "247,247,247,,,,,247,247,,,,35,35,35,247,35,247,247,247,35,35,247,247", ",35,,35,35,35,35,35,35,35,,,,,,35,35,35,35,35,35,35,,,35,,,,,,,35,,", "35,35,35,35,35,35,35,35,35,35,35,35,,35,35,35,35,35,,,,,,,,,,,,,,,,", ",,,35,,,35,,,35,35,,,35,,35,,35,,35,,,35,,,,,,35,,,,,35,35,35,35,,35", "35,35,35,,,,,35,35,,,,36,36,36,35,36,35,35,35,36,36,35,35,,36,,36,36", "36,36,36,36,36,,,,,,36,36,36,36,36,36,36,,,36,,,,,,,36,,,36,36,36,36", "36,36,36,36,36,36,36,36,,36,36,36,36,36,,,,,,,,,,,,,,,,,,,,36,,,36,", ",36,36,,,36,,36,,36,,36,,,36,,,,,,36,,,,,36,36,36,36,,36,36,36,36,,", ",,36,36,,,,635,635,635,36,635,36,36,36,635,635,36,36,,635,,635,635,635", "635,635,635,635,,,,,,635,635,635,635,635,635,635,,,635,,,,,,,635,,,635", "635,635,635,635,635,635,635,635,635,635,635,,635,635,635,635,635,,,", ",,,,,,,,,,,,,,,,635,,,635,,,635,635,,,635,,635,,635,,635,,,635,,,,,", "635,,,,,635,635,635,635,,635,635,635,635,,,,,635,635,,,,1003,1003,1003", "635,1003,635,635,635,1003,1003,635,635,,1003,,1003,1003,1003,1003,1003", "1003,1003,,,,,,1003,1003,1003,1003,1003,1003,1003,,,1003,,,,,,,1003", ",,1003,1003,1003,1003,1003,1003,1003,1003,1003,1003,1003,1003,,1003", "1003,1003,1003,1003,,,,,,,,,,,,,,,,,,,,1003,,,1003,,,1003,1003,,,1003", ",,,1003,,1003,,,1003,,,,,,1003,,,,,1003,1003,1003,1003,,1003,1003,1003", "1003,,,,,1003,1003,,,,625,625,625,1003,625,1003,1003,1003,625,625,1003", "1003,,625,,625,625,625,625,625,625,625,,,,,,625,625,625,625,625,625", "625,,,625,,,,,,,625,,,625,625,625,625,625,625,625,625,625,625,625,625", ",625,625,625,625,625,,,,,,,,,,,,,,,,,,,,625,,,625,,,625,625,,,625,,625", ",625,,625,,,625,,,,,,625,,,,,625,625,625,625,,625,625,625,625,,,,,625", "625,,,,624,624,624,625,624,625,625,625,624,624,625,625,,624,,624,624", "624,624,624,624,624,,,,,,624,624,624,624,624,624,624,,,624,,,,,,,624", ",,624,624,624,624,624,624,624,624,,624,624,624,,624,624,624,624,624", ",,,,,,,,,,,,,,,,,,,624,,,624,,,624,624,,,624,,624,,,,624,,,,,,,,,624", ",,,,624,624,624,624,,624,624,624,624,,,,,624,624,,,,611,611,611,624", "611,624,624,624,611,611,624,624,,611,,611,611,611,611,611,611,611,,", ",,,611,611,611,611,611,611,611,,,611,,,,,,,611,,,611,611,611,611,611", "611,611,611,611,611,611,611,,611,611,611,611,611,,,,,,,,,,,,,,,,,,,", "611,,,611,,,611,611,,,611,,,,,,611,,,611,,,,,,611,,,,,611,611,611,611", ",611,611,611,611,,,,,611,611,,,,608,608,608,611,608,611,611,611,608", "608,611,611,,608,,608,608,608,608,608,608,608,,,,,,608,608,608,608,608", "608,608,,,608,,,,,,,608,,,608,608,608,608,608,608,608,608,608,608,608", "608,,608,608,608,608,608,,,,,,,,,,,,,,,,,,,,608,,,608,,,608,608,,,608", ",608,,,,608,,,608,,,,,,608,,,,,608,608,608,608,,608,608,608,608,,,,", "608,608,,,,236,236,236,608,236,608,608,608,236,236,608,608,,236,,236", "236,236,236,236,236,236,,,,,,236,236,236,236,236,236,236,,,236,,,,,", ",236,,,236,236,236,236,236,236,236,236,,236,236,236,,236,236,236,236", "236,,,,,,,,,,,,,,,,,,,,236,,,236,,,236,236,,,236,,,,,,236,,,,,,,,,236", ",,,,236,236,236,236,,236,236,236,236,,,,,236,236,236,,,235,235,235,236", "235,236,236,236,235,235,236,236,,235,,235,235,235,235,235,235,235,,", ",,,235,235,235,235,235,235,235,,,235,,,,,,,235,,,235,235,235,235,235", "235,235,235,,235,235,235,,235,235,235,235,235,,,,,,,,,,,,,,,,,,,,235", ",,235,,,235,235,,,235,,,,,,235,,,,,,,,,235,,,,,235,235,235,235,,235", "235,235,235,,,,,235,235,,,,603,603,603,235,603,235,235,235,603,603,235", "235,,603,,603,603,603,603,603,603,603,,,,,,603,603,603,603,603,603,603", ",,603,,,,,,,603,,,603,603,603,603,603,603,603,603,,603,603,603,,603", "603,603,603,603,,,,,,,,,,,,,,,,,,,,603,,,603,,,603,603,,,603,,,,,,603", ",,,,,,,,603,,,,,603,603,603,603,,603,603,603,603,,,,,603,603,,,,1029", "1029,1029,603,1029,603,603,603,1029,1029,603,603,,1029,,1029,1029,1029", "1029,1029,1029,1029,,,,,,1029,1029,1029,1029,1029,1029,1029,,,1029,", ",,,,,1029,,,1029,1029,1029,1029,1029,1029,1029,1029,,1029,1029,1029", ",1029,1029,1029,1029,1029,,,,,,,,,,,,,,,,,,,,1029,,,1029,,,1029,1029", ",,1029,,,,,,1029,,,,,,,,,1029,,,,,1029,1029,1029,1029,,1029,1029,1029", "1029,,,,,1029,1029,,,,600,600,600,1029,600,1029,1029,1029,600,600,1029", "1029,,600,,600,600,600,600,600,600,600,,,,,,600,600,600,600,600,600", "600,,,600,,,,,,,600,,,600,600,600,600,600,600,600,600,,600,600,600,", "600,600,600,600,600,,,,,,,,,,,,,,,,,,,,600,,,600,,,600,600,,,600,,,", ",,600,,,,,,,,,600,,,,,600,600,600,600,,600,600,600,600,,,,,600,600,", ",,597,597,597,600,597,600,600,600,597,597,600,600,,597,,597,597,597", "597,597,597,597,,,,,,597,597,597,597,597,597,597,,,597,,,,,,,597,,,597", "597,597,597,597,597,597,597,,597,597,597,,597,597,597,597,597,,,,,,", ",,,,,,,,,,,,,597,,,597,,,597,597,,,597,,,,,,597,,,,,,,,,597,,,,,597", "597,597,597,,597,597,597,597,,,,,597,597,,,,234,234,234,597,234,597", "597,597,234,234,597,597,,234,,234,234,234,234,234,234,234,,,,,,234,234", "234,234,234,234,234,,,234,,,,,,,234,,,234,234,234,234,234,234,234,234", ",234,234,234,,234,234,234,234,234,,,,,,,,,,,,,,,,,,,,234,,,234,,,234", "234,,,234,,,,,,234,,,,,,,,,234,,,,,234,234,234,234,,234,234,234,234", ",,,,234,234,,,,587,587,587,234,587,234,234,234,587,587,234,234,,587", ",587,587,587,587,587,587,587,,,,,,587,587,587,587,587,587,587,,,587", ",,,,,,587,,,587,587,587,587,587,587,587,587,587,587,587,587,,587,587", "587,587,587,,,,,,,,,,,,,,,,,,,,587,,,587,,,587,587,,,587,,587,,587,", "587,,,587,,,,,,587,,,,,587,587,587,587,,587,587,587,587,,,,,587,587", ",,,,,,587,,587,587,587,,,587,587,577,577,577,577,577,,,,577,577,,,,577", ",577,577,577,577,577,577,577,,,,,,577,577,577,577,577,577,577,,,577", ",,,,,577,577,577,577,577,577,577,577,577,577,577,577,,577,577,577,,577", "577,577,577,577,,,,,,,,,,,,,,,,,,,,577,,,577,,,577,577,,,577,,577,,", ",577,,,,,,,,,577,,,,,577,577,577,577,,577,577,577,577,,,,,577,577,,", ",,,577,577,,577,577,577,,,577,577,571,571,571,,571,,,,571,571,,,,571", ",571,571,571,571,571,571,571,,,,,,571,571,571,571,571,571,571,,,571", ",,,,,,571,,,571,571,571,571,571,571,571,571,,571,571,571,,571,571,571", "571,571,,,,,,,,,,,,,,,,,,,,571,,,571,,,571,571,,,571,,,,,,571,,,,,,", ",,571,,,,,571,571,571,571,,571,571,571,571,,,,,571,571,,,,569,569,569", "571,569,571,571,571,569,569,571,571,,569,,569,569,569,569,569,569,569", ",,,,,569,569,569,569,569,569,569,,,569,,,,,,,569,,,569,569,569,569,569", "569,569,569,569,569,569,569,,569,569,569,569,569,,,,,,,,,,,,,,,,,,,", "569,,,569,,,569,569,,,569,,,,569,,569,,,569,,,,,,569,,,,,569,569,569", "569,,569,569,569,569,,,,,569,569,,,,366,366,366,569,366,569,569,569", "366,366,569,569,,366,,366,366,366,366,366,366,366,,,,,,366,366,366,366", "366,366,366,,,366,,,,,,,366,,,366,366,366,366,366,366,366,366,,366,366", "366,,366,366,366,366,366,,,,,,,,,,,,,,,,,,,,366,,,366,,,366,366,,,366", ",,,,,366,,,,,,,,,366,,,,,366,366,366,366,,366,366,366,366,,,,,366,366", ",,,368,368,368,366,368,366,366,366,368,368,366,366,,368,,368,368,368", "368,368,368,368,,,,,,368,368,368,368,368,368,368,,,368,,,,,,,368,,,368", "368,368,368,368,368,368,368,,368,368,368,,368,368,368,368,368,,,,,,", ",,,,,,,,,,,,,368,,,368,368,,368,368,,,368,,,,,,368,,,,,,,,,368,,,,,368", "368,368,368,,368,368,368,368,,,,,368,368,,,,567,567,567,368,567,368", "368,368,567,567,368,368,,567,,567,567,567,567,567,567,567,,,,,,567,567", "567,567,567,567,567,,,567,,,,,,,567,,,567,567,567,567,567,567,567,567", "567,567,567,567,,567,567,567,567,567,,,,,,,,,,,,,,,,,,,,567,,,567,,", "567,567,,,567,,567,,567,,567,,,567,,,,,,567,,,,,567,567,567,567,,567", "567,567,567,,,,,567,567,,,,46,46,46,567,46,567,567,567,46,46,567,567", ",46,,46,46,46,46,46,46,46,,,,,,46,46,46,46,46,46,46,,,46,,,,,,,46,,", "46,46,46,46,46,46,46,46,,46,46,46,,46,46,46,46,46,,,,,,,,,,,,,,,,,,", ",46,,,46,,,46,46,,,46,,,,,,46,,,,,,,,,46,,,,,46,46,46,46,,46,46,46,46", ",,,,46,46,,,,557,557,557,46,557,46,46,46,557,557,46,46,,557,,557,557", "557,557,557,557,557,,,,,,557,557,557,557,557,557,557,,,557,,,,,,,557", ",,557,557,557,557,557,557,557,557,,557,557,557,,557,557,557,557,557", ",,,,,,,,,,,,,,,,,,,557,,,557,,,557,557,,,557,,,,,,557,,,,,,,,,557,,", ",,557,557,557,557,,557,557,557,557,,,,,557,557,,,,47,47,47,557,47,557", "557,557,47,47,557,557,,47,,47,47,47,47,47,47,47,,,,,,47,47,47,47,47", "47,47,,,47,,,,,,,47,,,47,47,47,47,47,47,47,47,,47,47,47,,47,47,47,47", "47,,,,,,,,,,,,,,,,,,,,47,,,47,,,47,47,,,47,,,,,,47,,,,,,,,,47,,,,,47", "47,47,47,,47,47,47,47,,,,,47,47,,,,280,280,280,47,280,47,47,47,280,280", "47,47,,280,,280,280,280,280,280,280,280,,,,,,280,280,280,280,280,280", "280,,,280,,,,,,,280,,,280,280,280,280,280,280,280,280,,280,280,280,", "280,280,280,280,280,,,,,,,,,,,,,,,,,,,,280,,,280,,,280,280,,,280,,,", ",,280,,,,,,,,,280,,,,,280,280,280,280,,280,280,280,280,,,,,280,280,", ",,275,275,275,280,275,280,280,280,275,275,280,280,,275,,275,275,275", "275,275,275,275,,,,,,275,275,275,275,275,275,275,,,275,,,,,,,275,,,275", "275,275,275,275,275,275,275,,275,275,275,,275,275,275,275,275,,,,,,", ",,,,,,,,,,,,,275,,,275,,,275,275,,,275,,,,,,275,,,,,,,,,275,,,,,275", "275,275,275,,275,275,275,275,,,,,275,275,,,,,,,275,,275,275,275,552", ",275,275,,,,552,552,552,,,552,552,552,406,552,406,406,406,406,406,,", "552,552,552,,,,406,,,,,,552,552,,552,552,552,552,552,1159,,1159,1159", "1159,1159,1159,,406,406,,,,,,1159,,406,406,406,406,,,,406,,1131,,1131", "1131,1131,1131,1131,552,,,,1159,,,552,1131,,,,552,552,,1159,1159,,,", "1159,,,,,,,,,,1131,406,,,,552,552,,,1131,1131,1131,1131,,,,1131,,,,552", ",,552,,221,221,221,552,221,1159,,,221,221,552,,,221,,221,221,221,221", "221,221,221,,,,,,221,221,221,221,221,221,221,,,221,,,,,,,221,,,221,221", "221,221,221,221,221,221,221,221,221,221,,221,221,221,221,221,,,,,,,", ",,,,,,,,,,,,221,,,221,,,221,221,,,221,,221,,221,,221,,,221,,,,,,221", ",,,,221,221,221,221,,221,221,221,221,,,,,221,221,,,,220,220,220,221", "220,221,221,221,220,220,221,221,,220,,220,220,220,220,220,220,220,,", ",,,220,220,220,220,220,220,220,,,220,,,,,,,220,,,220,220,220,220,220", "220,220,220,,220,220,220,,220,220,220,220,220,,,,,,,,,,,,,,,,,,,,220", ",,220,,,220,220,,,220,,,,,,220,,,,,,,,,220,,,,,220,220,220,220,,220", "220,220,220,,,,,220,220,,,,75,75,75,220,75,220,220,220,75,75,220,220", ",75,,75,75,75,75,75,75,75,,,,,,75,75,75,75,75,75,75,,,75,,,,,,,75,,", "75,75,75,75,75,75,75,75,,75,75,75,,75,75,75,75,75,,,,,,,,,,,,,,,,,,", ",75,,,75,,,75,75,,,75,,,,,,75,,,,,,,,,75,,,,,75,75,75,75,,75,75,75,75", ",,,,75,75,75,,,,,75,75,,75,75,75,,,75,75,71,71,71,,71,,,,71,71,,,,71", ",71,71,71,71,71,71,71,,,,,,71,71,71,71,71,71,71,,,71,,,,,,,71,,,71,71", "71,71,71,71,71,71,,71,71,71,,71,71,71,71,71,,,,,,,,,,,,,,,,,,,,71,,", "71,,,71,71,,,71,,,,,,71,,,,,,,,,71,,,,,71,71,71,71,,71,71,71,71,,,,", "71,71,,,,433,433,433,71,433,71,71,71,433,433,71,71,,433,,433,433,433", "433,433,433,433,,,,,,433,433,433,433,433,433,433,,,433,,,,,,,433,,,433", "433,433,433,433,433,433,433,,433,433,433,,433,433,433,433,433,,,,,,", ",,,,,,,,,,,,,433,,,433,,,433,433,,,433,,,,,,433,,,,,,,,,433,,,,,433", "433,433,433,,433,433,433,433,,,,,433,433,,,,68,68,68,433,68,433,433", "433,68,68,433,433,,68,,68,68,68,68,68,68,68,,,,,,68,68,68,68,68,68,68", ",,68,,,,,,,68,,,68,68,68,68,68,68,68,68,68,68,68,68,,68,68,68,68,68", ",,,,,,,,,,,,,,,,,,,68,,,68,,,68,68,,,68,,,,,,68,,,68,,,,,,68,,,,,68", "68,68,68,,68,68,68,68,,,,,68,68,,,,842,842,842,68,842,68,68,68,842,842", "68,68,,842,,842,842,842,842,842,842,842,,,,,,842,842,842,842,842,842", "842,,,842,,,,,,,842,,,842,842,842,842,842,842,842,842,,842,842,842,", "842,842,842,842,842,,,,,,,,,,,,,,,,,,,,842,,,842,,,842,842,,,842,,,", ",,842,,,,,,,,,842,,,,,842,842,842,842,,842,842,842,842,,,,,842,842,", ",,793,793,793,842,793,842,842,842,793,793,842,842,,793,,793,793,793", "793,793,793,793,,,,,,793,793,793,793,793,793,793,,,793,,,,,,,793,,,793", "793,793,793,793,793,793,793,,793,793,793,,793,793,793,793,793,,,,,,", ",,,,,,,,,,,,,793,,,793,,,793,793,,,793,,,,,,793,,,,,,,,,793,,,,,793", "793,793,793,,793,793,793,793,,,,,793,793,,,,272,272,272,793,272,793", "793,793,272,272,793,793,,272,,272,272,272,272,272,272,272,,,,,,272,272", "272,272,272,272,272,,,272,,,,,,,272,,,272,272,272,272,272,272,272,272", ",272,272,272,,272,272,272,272,272,,,,,,,,,,,,,,,,,,,,272,,,272,,,272", "272,,,272,,,,,,272,,,,,,,,,272,,,,,272,272,272,272,,272,272,272,272", ",,,,272,272,,,,271,271,271,272,271,272,272,272,271,271,272,272,,271", ",271,271,271,271,271,271,271,,,,,,271,271,271,271,271,271,271,,,271", ",,,,,,271,,,271,271,271,271,271,271,271,271,,271,271,271,,271,271,271", "271,271,,,,,,,,,,,,,,,,,,,,271,,,271,,,271,271,,,271,,,,,,271,,,,,,", ",,271,,,,,271,271,271,271,,271,271,271,271,,,,,271,271,,,,67,67,67,271", "67,271,271,271,67,67,271,271,,67,,67,67,67,67,67,67,67,,,,,,67,67,67", "67,67,67,67,,,67,,,,,,,67,,,67,67,67,67,67,67,67,67,67,67,67,67,,67", "67,67,67,67,,,,,,,,,,,,,,,,,,,,67,,,67,,,67,67,,,67,,67,,,,67,,,67,", ",,,,67,,,,,67,67,67,67,,67,67,67,67,,,,,67,67,,,,,,,67,,67,67,67,,,67", "67,66,66,66,66,66,,,,66,66,,,,66,,66,66,66,66,66,66,66,,,,,,66,66,66", "66,66,66,66,,,66,,,,,,66,66,,66,66,66,66,66,66,66,66,66,,66,66,66,,66", "66,66,66,66,,,,,,,,,,,,,,,,,,,,66,,,66,,,66,66,,,66,,66,,,,66,,,,,,", ",,66,,,,,66,66,66,66,,66,66,66,66,,,,,66,66,,,,404,404,404,66,404,66", "66,66,404,404,66,66,,404,,404,404,404,404,404,404,404,,,,,,404,404,404", "404,404,404,404,,,404,,,,,,,404,,,404,404,404,404,404,404,404,404,,404", "404,404,,404,404,404,404,404,,,,,,,,,,,,,,,,,,,,404,,,404,,,404,404", ",,404,,,,,,404,,,,,,,,,404,,,,,404,404,404,404,,404,404,404,404,,,,", "404,404,,,,,,,404,,404,404,404,64,,404,404,,,,64,64,64,,,64,64,64,,64", ",,,,,,,64,,64,64,64,,,,,,,,64,64,,64,64,64,64,64,,,,,,,,,,,,,,,,,,,", ",,,64,64,64,64,64,64,64,64,64,64,64,64,64,64,,,64,64,64,,,64,,,64,,", "64,64,,64,,64,,64,,64,64,,64,64,64,64,64,,64,,64,,,,,,,,,,,,,,64,,,64", "64,64,64,,64,,64,,270,270,270,64,270,,,,270,270,,,,270,,270,270,270", "270,270,270,270,,,,,,270,270,270,270,270,270,270,,,270,,,,,,,270,,,270", "270,270,270,270,270,270,270,,270,270,270,,270,270,270,270,270,,,,,,", ",,,,,,,,,,,,,270,,,270,,,270,270,,,270,,,,,,270,,,,,,,,,270,,,,,270", "270,270,270,,270,270,270,270,,,,,270,270,,,,862,862,862,270,862,270", "270,270,862,862,270,270,,862,,862,862,862,862,862,862,862,,,,,,862,862", "862,862,862,862,862,,,862,,,,,,,862,,,862,862,862,862,862,862,862,862", ",862,862,862,,862,862,862,862,862,,,,,,,,,,,,,,,,,,,,862,,,862,,,862", "862,,,862,,,,,,862,,,,,,,,,862,,,,,862,862,862,862,,862,862,862,862", ",,,,862,862,,,,296,296,296,862,296,862,862,862,296,296,862,862,,296", ",296,296,296,296,296,296,296,,,,,,296,296,296,296,296,296,296,,,296", ",,,,,,296,,,296,296,296,296,296,296,296,296,,296,296,296,,296,296,296", "296,296,,,,,,,,,,,,,,,,,,,,296,,,296,,,296,296,,,296,,,,,,296,,,,,,", ",,296,,,,,296,296,296,296,,296,296,296,296,,,,,296,296,,,,269,269,269", "296,269,296,296,296,269,269,296,296,,269,,269,269,269,269,269,269,269", ",,,,,269,269,269,269,269,269,269,,,269,,,,,,,269,,,269,269,269,269,269", "269,269,269,,269,269,269,,269,269,269,269,269,,,,,,,,,,,,,,,,,,,,269", ",,269,,,269,269,,,269,,,,,,269,,,,,,,,,269,,,,,269,269,269,269,,269", "269,269,269,,,,,269,269,,,,268,268,268,269,268,269,269,269,268,268,269", "269,,268,,268,268,268,268,268,268,268,,,,,,268,268,268,268,268,268,268", ",,268,,,,,,,268,,,268,268,268,268,268,268,268,268,,268,268,268,,268", "268,268,268,268,,,,,,,,,,,,,,,,,,,,268,,,268,,,268,268,,,268,,,,,,268", ",,,,,,,,268,,,,,268,268,268,268,,268,268,268,268,,,,,268,268,,,,784", "784,784,268,784,268,268,268,784,784,268,268,,784,,784,784,784,784,784", "784,784,,,,,,784,784,784,784,784,784,784,,,784,,,,,,,784,,,784,784,784", "784,784,784,784,784,784,784,784,784,,784,784,784,784,784,,,,,,,,,,,", ",,,,,,,,784,,,784,,,784,784,,,784,,784,,784,,784,,,784,,,,,,784,,,,", "784,784,784,784,,784,784,784,784,,,,,784,784,,,,870,870,870,784,870", "784,784,784,870,870,784,784,,870,,870,870,870,870,870,870,870,,,,,,870", "870,870,870,870,870,870,,,870,,,,,,,870,,,870,870,870,870,870,870,870", "870,,870,870,870,,870,870,870,870,870,,,,,,,,,,,,,,,,,,,,870,,,870,", ",870,870,,,870,,,,,,870,,,,,,,,,870,,,,,870,870,870,870,,870,870,870", "870,,,,,870,870,,,,267,267,267,870,267,870,870,870,267,267,870,870,", "267,,267,267,267,267,267,267,267,,,,,,267,267,267,267,267,267,267,,", "267,,,,,,,267,,,267,267,267,267,267,267,267,267,,267,267,267,,267,267", "267,267,267,,,,,,,,,,,,,,,,,,,,267,,,267,,,267,267,,,267,,,,,,267,,", ",,,,,,267,,,,,267,267,267,267,,267,267,267,267,,,,,267,267,,,,883,883", "883,267,883,267,267,267,883,883,267,267,,883,,883,883,883,883,883,883", "883,,,,,,883,883,883,883,883,883,883,,,883,,,,,,,883,,,883,883,883,883", "883,883,883,883,,883,883,883,,883,883,883,883,883,,,,,,,,,,,,,,,,,,", ",883,,,883,,,883,883,,,883,,,,,,883,,,,,,,,,883,,,,,883,883,883,883", ",883,883,883,883,,,,,883,883,,,,884,884,884,883,884,883,883,883,884", "884,883,883,,884,,884,884,884,884,884,884,884,,,,,,884,884,884,884,884", "884,884,,,884,,,,,,,884,,,884,884,884,884,884,884,884,884,,884,884,884", ",884,884,884,884,884,,,,,,,,,,,,,,,,,,,,884,,,884,,,884,884,,,884,,", ",,,884,,,,,,,,,884,,,,,884,884,884,884,,884,884,884,884,,,,,884,884", ",,,24,24,24,884,24,884,884,884,24,24,884,884,,24,,24,24,24,24,24,24", "24,,,,,,24,24,24,24,24,24,24,,,24,,,,,,,24,,,24,24,24,24,24,24,24,24", ",24,24,24,,24,24,24,24,24,,,,,,,,,,,,,,,,,,,,24,,,24,,,24,24,,,24,,", ",,,24,,,,,,,,,24,,,,,24,24,24,24,,24,24,24,24,,,,,24,24,,,,303,303,303", "24,303,24,24,24,303,303,24,24,,303,,303,303,303,303,303,303,303,,,,", ",303,303,303,303,303,303,303,,,303,,,,,,,303,,,303,303,303,303,303,303", "303,303,303,303,303,303,,303,303,303,303,303,,,,,,,,,,,,,,,,,,,,303", ",,303,,,303,303,,,303,,303,,303,,303,,,303,,,,,,303,,,,,303,303,303", "303,,303,303,303,303,,,,,303,303,,,,304,304,304,303,304,303,303,303", "304,304,303,303,,304,,304,304,304,304,304,304,304,,,,,,304,304,304,304", "304,304,304,,,304,,,,,,,304,,,304,304,304,304,304,304,304,304,304,304", "304,304,,304,304,304,304,304,,,,,,,,,,,,,,,,,,,,304,,,304,,,304,304", ",,304,,304,,304,,304,,,304,,,,,,304,,,,,304,304,304,304,,304,304,304", "304,,,,,304,304,,,,312,312,312,304,312,304,304,304,312,312,304,304,", "312,,312,312,312,312,312,312,312,,,,,,312,312,312,312,312,312,312,,", "312,,,,,,,312,,,312,312,312,312,312,312,312,312,312,312,312,312,,312", "312,312,312,312,,,,,,,,,,,,,,,,,,,,312,,,312,,,312,312,,,312,,312,,312", ",312,,,312,,,,,,312,,,,,312,312,312,312,,312,312,312,312,,,,,312,312", "312,,,266,266,266,312,266,312,312,312,266,266,312,312,,266,,266,266", "266,266,266,266,266,,,,,,266,266,266,266,266,266,266,,,266,,,,,,,266", ",,266,266,266,266,266,266,266,266,,266,266,266,,266,266,266,266,266", ",,,,,,,,,,,,,,,,,,,266,,,266,,,266,266,,,266,,,,,,266,,,,,,,,,266,,", ",,266,266,266,266,,266,266,266,266,,,,,266,266,,,,265,265,265,266,265", "266,266,266,265,265,266,266,,265,,265,265,265,265,265,265,265,,,,,,265", "265,265,265,265,265,265,,,265,,,,,,,265,,,265,265,265,265,265,265,265", "265,,265,265,265,,265,265,265,265,265,,,,,,,,,,,,,,,,,,,,265,,,265,", ",265,265,,,265,,,,,,265,,,,,,,,,265,,,,,265,265,265,265,,265,265,265", "265,,,,,265,265,,,,264,264,264,265,264,265,265,265,264,264,265,265,", "264,,264,264,264,264,264,264,264,,,,,,264,264,264,264,264,264,264,,", "264,,,,,,,264,,,264,264,264,264,264,264,264,264,,264,264,264,,264,264", "264,264,264,,,,,,,,,,,,,,,,,,,,264,,,264,,,264,264,,,264,,,,,,264,,", ",,,,,,264,,,,,264,264,264,264,,264,264,264,264,,,,,264,264,,,,319,319", "319,264,319,264,264,264,319,319,264,264,,319,,319,319,319,319,319,319", "319,,,,,,319,319,319,319,319,319,319,,,319,,,,,,,319,,,319,319,319,319", "319,319,319,319,,319,319,319,,319,319,319,319,319,,,,,,,,,,,,,,,,,,", ",319,,,319,,,319,319,,,319,,,,,,319,,,,,,,,,319,,,,,319,319,319,319", ",319,319,319,319,,,,,319,319,,,,321,321,321,319,321,319,319,319,321", "321,319,319,,321,,321,321,321,321,321,321,321,,,,,,321,321,321,321,321", "321,321,,,321,,,,,,,321,,,321,321,321,321,321,321,321,321,,321,321,321", ",321,321,321,321,321,,,,,,,,,,,,,,,,,,,,321,,,321,,,321,321,,,321,,", ",,,321,,,,,,,,,321,,,,,321,321,321,321,,321,321,321,321,,,,,321,321", ",,,324,324,324,321,324,321,321,321,324,324,321,321,,324,,324,324,324", "324,324,324,324,,,,,,324,324,324,324,324,324,324,,,324,,,,,,,324,,,324", "324,324,324,324,324,324,324,,324,324,324,,324,324,324,324,324,,,,,,", ",,,,,,,,,,,,,324,,,324,,,324,324,,,324,,,,,,324,,,,,,,,,324,,,,,324", "324,324,324,,324,324,324,324,,,,,324,324,,,,263,263,263,324,263,324", "324,324,263,263,324,324,,263,,263,263,263,263,263,263,263,,,,,,263,263", "263,263,263,263,263,,,263,,,,,,,263,,,263,263,263,263,263,263,263,263", ",263,263,263,,263,263,263,263,263,,,,,,,,,,,,,,,,,,,,263,,,263,,,263", "263,,,263,,,,,,263,,,,,,,,,263,,,,,263,263,263,263,,263,263,263,263", ",,,,263,263,,,,262,262,262,263,262,263,263,263,262,262,263,263,,262", ",262,262,262,262,262,262,262,,,,,,262,262,262,262,262,262,262,,,262", ",,,,,,262,,,262,262,262,262,262,262,262,262,,262,262,262,,262,262,262", "262,262,,,,,,,,,,,,,,,,,,,,262,,,262,,,262,262,,,262,,,,,,262,,,,,,", ",,262,,,,,262,262,262,262,,262,262,262,262,,,,,262,262,,,,911,911,911", "262,911,262,262,262,911,911,262,262,,911,,911,911,911,911,911,911,911", ",,,,,911,911,911,911,911,911,911,,,911,,,,,,,911,,,911,911,911,911,911", "911,911,911,,911,911,911,,911,911,911,911,911,,,,,,,,,,,,,,,,,,,,911", ",,911,,,911,911,,,911,,,,,,911,,,,,,,,,911,,,,,911,911,911,911,,911", "911,911,911,,,,,911,911,,,,912,912,912,911,912,911,911,911,912,912,911", "911,,912,,912,912,912,912,912,912,912,,,,,,912,912,912,912,912,912,912", ",,912,,,,,,,912,,,912,912,912,912,912,912,912,912,,912,912,912,,912", "912,912,912,912,,,,,,,,,,,,,,,,,,,,912,,,912,,,912,912,,,912,,,,,,912", ",,,,,,,,912,,,,,912,912,912,912,,912,912,912,912,,,,,912,912,,,,913", "913,913,912,913,912,912,912,913,913,912,912,,913,,913,913,913,913,913", "913,913,,,,,,913,913,913,913,913,913,913,,,913,,,,,,,913,,,913,913,913", "913,913,913,913,913,,913,913,913,,913,913,913,913,913,,,,,,,,,,,,,,", ",,,,,913,,,913,,,913,913,,,913,,,,,,913,,,,,,,,,913,,,,,913,913,913", "913,,913,913,913,913,,,,,913,913,,,,494,494,494,913,494,913,913,913", "494,494,913,913,,494,,494,494,494,494,494,494,494,,,,,,494,494,494,494", "494,494,494,,,494,,,,,,,494,,,494,494,494,494,494,494,494,494,,494,494", "494,,494,494,494,494,494,,,,,,,,,,,,,,,,,,,,494,,,494,,,494,494,,,494", ",,,,,494,,,,,,,,,494,,,,,494,494,494,494,,494,494,494,494,,,,,494,494", ",,,,,,494,,494,494,494,,,494,494,130,130,130,130,130,,,,130,130,,,,130", ",130,130,130,130,130,130,130,,,,,,130,130,130,130,130,130,130,,,130", ",,,,,130,130,,130,130,130,130,130,130,130,130,130,,130,130,130,,130", "130,130,130,130,,,,,,,,,,,,,,,,,,,,130,,,130,,,130,130,,,130,,130,,", ",130,,,,,,,,,130,,,,,130,130,130,130,,130,130,130,130,,,,,130,130,,", ",129,129,129,130,129,130,130,130,129,129,130,130,,129,,129,129,129,129", "129,129,129,,,,,,129,129,129,129,129,129,129,,,129,,,,,,,129,,,129,129", "129,129,129,129,129,129,,129,129,129,,129,129,129,129,129,,,,,,,,,,", ",,,,,,,,,129,,,129,,,129,129,,,129,,,,,,129,,,,,,,,,129,,,,,129,129", "129,129,,129,129,129,129,,,,,129,129,,,,128,128,128,129,128,129,129", "129,128,128,129,129,,128,,128,128,128,128,128,128,128,,,,,,128,128,128", "128,128,128,128,,,128,,,,,,,128,,,128,128,128,128,128,128,128,128,,128", "128,128,,128,128,128,128,128,,,,,,,,,,,,,,,,,,,,128,,,128,,,128,128", ",,128,,,,,,128,,,,,,,,,128,,,,,128,128,128,128,,128,128,128,128,,,,", "128,128,,,,1142,1142,1142,128,1142,128,128,128,1142,1142,128,128,,1142", ",1142,1142,1142,1142,1142,1142,1142,,,,,,1142,1142,1142,1142,1142,1142", "1142,,,1142,,,,,,,1142,,,1142,1142,1142,1142,1142,1142,1142,1142,,1142", "1142,1142,,1142,1142,1142,1142,1142,,,,,,,,,,,,,,,,,,,,1142,,,1142,", ",1142,1142,,,1142,,,,,,1142,,,,,,,,,1142,,,,,1142,1142,1142,1142,,1142", "1142,1142,1142,,,,,1142,1142,,,,1143,1143,1143,1142,1143,1142,1142,1142", "1143,1143,1142,1142,,1143,,1143,1143,1143,1143,1143,1143,1143,,,,,,1143", "1143,1143,1143,1143,1143,1143,,,1143,,,,,,,1143,,,1143,1143,1143,1143", "1143,1143,1143,1143,,1143,1143,1143,,1143,1143,1143,1143,1143,,,,,,", ",,,,,,,,,,,,,1143,,,1143,,,1143,1143,,,1143,,,,,,1143,,,,,,,,,1143,", ",,,1143,1143,1143,1143,,1143,1143,1143,1143,,,,,1143,1143,,,,127,127", "127,1143,127,1143,1143,1143,127,127,1143,1143,,127,,127,127,127,127", "127,127,127,,,,,,127,127,127,127,127,127,127,,,127,,,,,,,127,,,127,127", "127,127,127,127,127,127,,127,127,127,,127,127,127,127,127,,,,,,,,,,", ",,,,,,,,,127,,,127,,,127,127,,,127,,,,,,127,,,,,,,,,127,,,,,127,127", "127,127,,127,127,127,127,,,,,127,127,,,,50,50,50,127,50,127,127,127", "50,50,127,127,,50,,50,50,50,50,50,50,50,,,,,,50,50,50,50,50,50,50,,", "50,,,,,,,50,,,50,50,50,50,50,50,50,50,,50,50,50,,50,50,50,50,50,,,,", ",,,,,,,,,,,,,,,50,,,50,,,50,50,,,50,,,,,,50,,,,,,,,,50,,,,,50,50,50", "50,,50,50,50,50,,,,,50,50,,,,126,126,126,50,126,50,50,50,126,126,50", "50,,126,,126,126,126,126,126,126,126,,,,,,126,126,126,126,126,126,126", ",,126,,,,,,,126,,,126,126,126,126,126,126,126,126,,126,126,126,,126", "126,126,126,126,,,,,,,,,,,,,,,,,,,,126,,,126,,,126,126,,,126,,,,,,126", ",,,,,,,,126,,,,,126,126,126,126,,126,126,126,126,,,,,126,126,,,,,,,126", ",126,126,126,,,126,126,121,121,121,121,121,,,,121,121,,,,121,,121,121", "121,121,121,121,121,,,,,,121,121,121,121,121,121,121,,,121,,,,,,121", "121,121,121,121,121,121,121,121,121,121,121,,121,121,121,,121,121,121", "121,121,,,,,,,,,,,,,,,,,,,,121,,,121,,,121,121,,,121,,121,,,,121,,,", ",,,,,121,,,,,121,121,121,121,,121,121,121,121,,,,,121,121,,,,,,121,121", ",121,121,121,,,121,121,1155,1155,1155,,1155,,,,1155,1155,,,,1155,,1155", "1155,1155,1155,1155,1155,1155,,,,,,1155,1155,1155,1155,1155,1155,1155", ",,1155,,,,,,,1155,,,1155,1155,1155,1155,1155,1155,1155,1155,1155,1155", "1155,1155,,1155,1155,1155,1155,1155,,,,,,,,,,,,,,,,,,,,1155,,,1155,", ",1155,1155,,,1155,,1155,,1155,,1155,,,1155,,,,,,1155,,,,,1155,1155,1155", "1155,,1155,1155,1155,1155,,,,,1155,1155,,,,468,468,468,1155,468,1155", "1155,1155,468,468,1155,1155,,468,,468,468,468,468,468,468,468,,,,,,468", "468,468,468,468,468,468,,,468,,,,,,,468,,,468,468,468,468,468,468,468", "468,,468,468,468,,468,468,468,468,468,,,,,,,,,,,,,,,,,,,,468,,,468,", ",468,468,,,468,,,,,,468,,,,,,,,,468,,,,,468,468,468,468,,468,468,468", "468,,,,,468,468,,,,,,,468,,468,468,468,467,,468,468,,,,467,467,467,", ",467,467,467,,467,,,,,,,,467,467,467,467,467,,,,,,,,467,467,,467,467", "467,467,467,,,,,,,,,,,,,,,,,,,,,,,467,467,467,467,467,467,467,467,467", "467,467,467,467,467,,,467,467,467,,,467,,,467,,,467,467,,467,,467,,467", ",467,467,,467,467,467,467,467,,467,467,467,,,,,,,,,,,,,,467,,,467,467", "467,467,,467,466,467,,,,,467,466,466,466,,,466,466,466,,466,,,,,,,,466", "466,466,466,466,,,,,,,,466,466,,466,466,466,466,466,,,,,,,,,,,,,,,,", ",,,,,,466,466,466,466,466,466,466,466,466,466,466,466,466,466,,,466", "466,466,,,466,,,466,,,466,466,,466,,466,,466,,466,466,,466,466,466,466", "466,,466,466,466,,,,,,,,,,,,,,466,,,466,466,466,466,,466,,466,,52,52", "52,466,52,,,,52,52,,,,52,,52,52,52,52,52,52,52,,,,,,52,52,52,52,52,52", "52,,,52,,,,,,,52,,,52,52,52,52,52,52,52,52,,52,52,52,,52,52,52,52,52", ",,,,,,,,,,,,,,,,,,,52,,,52,,,52,52,,,52,,,,,,52,,,,,,,,,52,,,,,52,52", "52,52,,52,52,52,52,,,,,52,52,,,,,,,52,,52,52,52,,,52,52,7,7,7,7,7,,", ",7,7,,,,7,,7,7,7,7,7,7,7,,,,,,7,7,7,7,7,7,7,,,7,,,,,,7,7,7,7,7,7,7,7", "7,7,7,7,,7,7,7,,7,7,7,7,7,,,,,,,,,,,,,,,,,,,,7,,,7,,,7,7,,,7,,7,,,,7", ",,,,,,,,7,,,,,7,7,7,7,,7,7,7,7,,,,,7,7,,,,,,,7,,7,7,7,457,,7,7,,,,457", "457,457,,,457,457,457,,457,,,,,,,,457,457,457,457,,,,,,,,,457,457,,457", "457,457,457,457,,,,,,,,,,,,,,,,,,,,,,,457,457,457,457,457,457,457,457", "457,457,457,457,457,457,,,457,457,457,,,457,,457,457,,,457,457,,457", ",457,,457,,457,457,,457,457,457,457,457,,457,457,457,,,,,,,,,,,,,,457", ",,457,457,,457,,457,72,72,72,,72,,457,,72,72,,,,72,,72,72,72,72,72,72", "72,,,,,,72,72,72,72,72,72,72,,,72,,,,,,,72,,,72,72,72,72,72,72,72,72", ",72,72,72,,72,72,72,72,72,,,,,,,,,,,,,,,,,,,,72,,,72,,,72,72,,,72,,", ",,,72,,,,,,,,,72,,,,,72,72,72,72,,72,72,72,72,,,,,72,72,,,,219,219,219", "72,219,72,72,72,219,219,72,72,,219,,219,219,219,219,219,219,219,,,,", ",219,219,219,219,219,219,219,,,219,,,,,,,219,,,219,219,219,219,219,219", "219,219,,219,219,219,,219,219,219,219,219,,,,,,,,,,,,,,,,,,,,219,,,219", ",,219,219,,,219,,,,,,219,,,,,,,,,219,,,,,219,219,219,219,,219,219,219", "219,,,,,219,219,,,,274,274,274,219,274,219,219,219,274,274,219,219,", "274,,274,274,274,274,274,274,274,,,,,,274,274,274,274,274,274,274,,", "274,,,,,,,274,,,274,274,274,274,274,274,274,274,,274,274,274,,274,274", "274,274,274,,,,,,,,,,,,,,,,,,,,274,,,274,,,274,274,,,274,,,,,,274,,", ",,,,,,274,,,,,274,274,274,274,,274,274,274,274,,,,,274,274,,,,218,218", "218,274,218,274,274,274,218,218,274,274,,218,,218,218,218,218,218,218", "218,,,,,,218,218,218,218,218,218,218,,,218,,,,,,,218,,,218,218,218,218", "218,218,218,218,,218,218,218,,218,218,218,218,218,,,,,,,,,,,,,,,,,,", ",218,,,218,,,218,218,,,218,,,,,,218,,,,,,,,,218,,,,,218,218,218,218", ",218,218,218,218,,,,,218,218,,,,217,217,217,218,217,218,218,218,217", "217,218,218,,217,,217,217,217,217,217,217,217,,,,,,217,217,217,217,217", "217,217,,,217,,,,,,,217,,,217,217,217,217,217,217,217,217,,217,217,217", ",217,217,217,217,217,,,,,,,,,,,,,,,,,,,,217,,,217,,,217,217,,,217,,217", ",,,217,,,,,,,,,217,,,,,217,217,217,217,,217,217,217,217,,,,,217,217", ",,,273,273,273,217,273,217,217,217,273,273,217,217,,273,,273,273,273", "273,273,273,273,,,,,,273,273,273,273,273,273,273,,,273,,,,,,,273,,,273", "273,273,273,273,273,273,273,,273,273,273,,273,273,273,273,273,,,,,,", ",,,,,,,,,,,,,273,,,273,,,273,273,,,273,,,,,,273,,,,,,,,,273,,,,,273", "273,273,273,,273,273,273,273,,,,,273,273,,,,49,49,49,273,49,273,273", "273,49,49,273,273,,49,,49,49,49,49,49,49,49,,,,,,49,49,49,49,49,49,49", ",,49,,,,,,,49,,,49,49,49,49,49,49,49,49,,49,49,49,,49,49,49,49,49,,", ",,,,,,,,,,,,,,,,,49,,,49,,,49,49,,,49,,,,,,49,,,,,,,,,49,,,,,49,49,49", "49,,49,49,49,49,,,,,49,49,,,,216,216,216,49,216,49,49,49,216,216,49", "49,,216,,216,216,216,216,216,216,216,,,,,,216,216,216,216,216,216,216", ",,216,,,,,,,216,,,216,216,216,216,216,216,216,216,,216,216,216,,216", "216,216,216,216,,,,,,,,,,,,,,,,,,,,216,,,216,,,216,216,,,216,,216,,", ",216,,,,,,,,,216,,,,,216,216,216,216,,216,216,216,216,,,,,216,216,,", ",796,796,796,216,796,216,216,216,796,796,216,216,,796,,796,796,796,796", "796,796,796,,,,,,796,796,796,796,796,796,796,,,796,,,,,,,796,,,796,796", "796,796,796,796,796,796,,796,796,796,,796,796,796,796,796,,,,,,,,,,", ",,,,,,,,,796,,,796,,,796,796,,,796,,,,,,796,,,,,,,,,796,,,,,796,796", "796,796,,796,796,796,796,,,,,796,796,,,,521,521,521,796,521,796,796", "796,521,521,796,796,,521,,521,521,521,521,521,521,521,,,,,,521,521,521", "521,521,521,521,,,521,,,,,,,521,,,521,521,521,521,521,521,521,521,,521", "521,521,,521,521,521,521,521,,,,,,,,,,,,,,,,,,,,521,,,521,,,521,521", ",,521,,,,,,521,,,,,,,,,521,,,,,521,521,521,521,,521,521,521,521,,,,", "521,521,,,,520,520,520,521,520,521,521,521,520,520,521,521,,520,,520", "520,520,520,520,520,520,,,,,,520,520,520,520,520,520,520,,,520,,,,,", ",520,,,520,520,520,520,520,520,520,520,,520,520,520,,520,520,520,520", "520,,,,,,,,,,,,,,,,,,,,520,,,520,,,520,520,,,520,,,,,,520,,,,,,,,,520", ",,,,520,520,520,520,,520,520,520,520,,,,,520,520,,,,519,519,519,520", "519,520,520,520,519,519,520,520,,519,,519,519,519,519,519,519,519,,", ",,,519,519,519,519,519,519,519,,,519,,,,,,,519,,,519,519,519,519,519", "519,519,519,,519,519,519,,519,519,519,519,519,,,,,,,,,,,,,,,,,,,,519", ",,519,,,519,519,,,519,,,,,,519,,,,,,,,,519,,,,,519,519,519,519,,519", "519,519,519,,,,,519,519,,,,383,383,383,519,383,519,519,519,383,383,519", "519,,383,,383,383,383,383,383,383,383,,,,,,383,383,383,383,383,383,383", ",,383,,,,,,,383,,,383,383,383,383,383,383,383,383,,383,383,383,,383", "383,383,383,383,,,,,,,,,,,,,,,,,,,,383,,,383,,,383,383,,,383,,,,,,383", ",,,,,,,,383,,,,,383,383,383,383,,383,383,383,383,,,,,383,383,,,,517", "517,517,383,517,383,383,383,517,517,383,383,,517,,517,517,517,517,517", "517,517,,,,,,517,517,517,517,517,517,517,,,517,,,,,,,517,,,517,517,517", "517,517,517,517,517,517,517,517,517,,517,517,517,517,517,,,,,,,,,,,", ",,,,,,,,517,,,517,,,517,517,,,517,,517,,517,,517,,,517,,,,,,517,,,,", "517,517,517,517,,517,517,517,517,,,,,517,517,,,,507,507,507,517,507", "517,517,517,507,507,517,517,,507,,507,507,507,507,507,507,507,,,,,,507", "507,507,507,507,507,507,,,507,,,,,,,507,,,507,507,507,507,507,507,507", "507,,507,507,507,,507,507,507,507,507,,,,,,,,,,,,,,,,,,,,507,,,507,", ",507,507,,,507,,,,,,507,,,,,,,,,507,,,,,507,507,507,507,,507,507,507", "507,,,,,507,507,,,,357,357,357,507,357,507,507,507,357,357,507,507,", "357,,357,357,357,357,357,357,357,,,,,,357,357,357,357,357,357,357,,", "357,,,,,,,357,,,357,357,357,357,357,357,357,357,,357,357,357,,357,357", ",,357,,,,,,,,,,,,,,,,,,,,357,,,357,,,357,357,,,357,,,,,,,,,,,,,,,,,", ",,357,357,357,357,,357,357,357,357,,,,,357,357,,,,1011,1011,1011,357", "1011,357,357,357,1011,1011,,,,1011,,1011,1011,1011,1011,1011,1011,1011", ",,,,,1011,1011,1011,1011,1011,1011,1011,,,1011,,,,,,,1011,,,1011,1011", "1011,1011,1011,1011,1011,1011,,1011,1011,1011,,1011,1011,,,1011,,,,", ",,,,,,,,,,,,,,,1011,,,1011,,,1011,1011,,,1011,,,,,,,,,,,,,,,,,,,,1011", "1011,1011,1011,,1011,1011,1011,1011,,,,,1011,1011,,,,338,338,338,1011", "338,1011,1011,1011,338,338,,,,338,,338,338,338,338,338,338,338,,,,,", "338,338,338,338,338,338,338,,,338,,,,,,,338,,,338,338,338,338,338,338", "338,338,,338,338,338,,338,338,,,338,,,,,,,,,,,,,,,,,,,,338,,,338,,,338", "338,,,338,,,1133,,1133,1133,1133,1133,1133,,,,,,,,,1133,,338,338,338", "338,,338,338,338,338,,,,,338,338,,,,338,,1133,338,,338,338,338,76,76", "76,,76,1133,1133,,76,76,1133,,,76,,76,76,76,76,76,76,76,,,,,,76,76,76", "76,76,76,76,,,76,,,,,,,76,,,76,76,76,76,76,76,76,76,,76,76,76,,76,76", ",,76,,,,,,,,,,,,,,,,,,,,76,,,76,,,76,76,,,76,,76,,,,,,,,,,,,,,,,,,76", "76,76,76,,76,76,76,76,,,,,76,76,,,,1075,1075,1075,76,1075,76,76,76,1075", "1075,,,,1075,,1075,1075,1075,1075,1075,1075,1075,,,,,,1075,1075,1075", "1075,1075,1075,1075,,,1075,,,,,,,1075,,,1075,1075,1075,1075,1075,1075", "1075,1075,,1075,1075,1075,,1075,1075,,,1075,,,,,,,,,,,,,,,,,,,,1075", ",,1075,,,1075,1075,,,1075,,,,,,,,,,,,,,,,,,,,1075,1075,1075,1075,,1075", "1075,1075,1075,,,,,1075,1075,,,,585,585,585,1075,585,1075,1075,1075", "585,585,,,,585,,585,585,585,585,585,585,585,,,,,,585,585,585,585,585", "585,585,,,585,,,,,,,585,,,585,585,585,585,585,585,585,585,,585,585,585", ",585,585,,,585,,,,,,,,,,,,,,,,,,,,585,,,585,,,585,585,,,585,,,,,,,,", ",,,,,,,,,,,585,585,585,585,,585,585,585,585,,,,,585,585,,,,594,594,594", "585,594,585,585,585,594,594,,,,594,,594,594,594,594,594,594,594,,,,", ",594,594,594,594,594,594,594,,,594,,,,,,,594,,,594,594,594,594,594,594", "594,594,,594,594,594,,594,594,,,594,,,,,,,,,,,,,,,,,,,,594,,,594,,,594", "594,,,594,,,,,,,,,,,,,,,,,,,,594,594,594,594,,594,594,594,594,,,,,594", "594,,,,77,77,77,594,77,594,594,594,77,77,,,,77,,77,77,77,77,77,77,77", ",,,,,77,77,77,77,77,77,77,,,77,,,,,,,77,,,77,77,77,77,77,77,77,77,,77", "77,77,,77,77,,,77,,,,,,,,,,,,,,,,,77,,,77,,,77,,,77,77,,,77,,,,,,,,", ",,,,,,,,,,,77,77,77,77,,77,77,77,77,,,,,77,77,,,,78,78,78,77,78,77,77", "77,78,78,,,,78,,78,78,78,78,78,78,78,,,,,,78,78,78,78,78,78,78,,,78", ",,,,,,78,,,78,78,78,78,78,78,78,78,,78,78,78,,78,78,,,78,,,,,,,,,,,", ",,,,,,,,78,,,78,,,78,78,,,78,,,,,,,,,,,,,,,,,,,,78,78,78,78,,78,78,78", "78,,,,,78,78,,,,40,40,40,78,40,78,78,78,40,40,,,,40,,40,40,40,40,40", "40,40,,,,,,40,40,40,40,40,40,40,,,40,,,,,,,40,,,40,40,40,40,40,40,40", "40,,40,40,40,,40,40,,,40,,,,,,,,,,,,,,,,,,,,40,,,40,,,40,40,,,40,,,1207", ",1207,1207,1207,1207,1207,,,,,,,,,1207,,40,40,40,40,,40,40,40,40,,,", ",40,40,,,,40,,1207,40,,40,40,40,1137,1137,1137,,1137,1207,1207,,1137", "1137,1207,,,1137,,1137,1137,1137,1137,1137,1137,1137,,,,,,1137,1137", "1137,1137,1137,1137,1137,,,1137,,,,,,,1137,,,1137,1137,1137,1137,1137", "1137,1137,1137,,1137,1137,1137,,1137,1137,,,1137,,,,,,,,,,,,,,,,,,,", "1137,,,1137,,,1137,1137,,,1137,,,,,,,,,,,,,,,,,,,,1137,1137,1137,1137", ",1137,1137,1137,1137,,,,,1137,1137,,,,799,799,799,1137,799,1137,1137", "1137,799,799,,,,799,,799,799,799,799,799,799,799,,,,,,799,799,799,799", "799,799,799,,,799,,,,,,,799,,,799,799,799,799,799,799,799,799,,799,799", "799,,799,799,,,799,,,,,,,,,,,,,,,,,,,,799,,,799,,,799,799,,,799,,,,", ",,,,,,,,,,,,,,,799,799,799,799,,799,799,799,799,,,,,799,799,,,,810,810", "810,799,810,799,799,799,810,810,,,,810,,810,810,810,810,810,810,810", ",,,,,810,810,810,810,810,810,810,,,810,,,,,,,810,,,810,810,810,810,810", "810,810,810,,810,810,810,,810,810,,,810,,,,,,,,,,,,,,,,,,,,810,,,810", ",,810,810,,,810,,,,,,,,,,,,,,,,,,,,810,810,810,810,,810,810,810,810", ",,,,810,810,,,,39,39,39,810,39,810,810,810,39,39,,,,39,,39,39,39,39", "39,39,39,,,,,,39,39,39,39,39,39,39,,,39,,,,,,,39,,,39,39,39,39,39,39", "39,39,,39,39,39,,39,39,,,39,,,,,,,,,,,,,,,,,,,,39,,,39,,,39,39,,,39", ",39,,,,,,,,,,,,,,,,,,39,39,39,39,,39,39,39,39,,,,,39,39,,,,,,,39,,39", "39,39,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424", "424,424,424,424,424,424,424,424,,,,424,424,424,424,424,424,424,424,424", "424,,,,,,424,424,424,424,424,424,424,424,424,,,424,,,,,,,,424,424,,424", "424,424,424,424,424,424,,,424,424,,,,424,424,424,424,,,,,,,,,,,,,,424", "424,,424,424,424,424,424,424,424,424,424,424,424,424,,,424,424,,,,,", ",,,,,,,,424,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10", "10,10,10,10,10,,,,10,10,10,10,10,10,10,10,10,10,,,,,,10,10,10,10,10", "10,10,10,10,10,,10,,,,,,,,10,10,,10,10,10,10,10,10,10,,,10,10,,,,10", "10,10,10,,,,,,,,,,,,,,10,10,,10,10,10,10,10,10,10,10,10,10,10,10,,,10", "10,,,,,,,,,,,,,,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11", "11,11,11,11,11,11,11,,,,11,11,11,11,11,11,11,11,11,11,,,,,,11,11,11", "11,11,11,11,11,11,,,11,,,,,,,,11,11,,11,11,11,11,11,11,11,,,11,11,,", ",11,11,11,11,,,,,,,,,,,,,,11,11,,11,11,11,11,11,11,11,11,11,11,11,11", ",,11,11,,,,,,,,,,,,,,11,664,664,664,664,664,664,664,664,664,664,664", "664,664,664,664,664,664,664,664,664,664,664,664,664,,,,664,664,664,664", "664,664,664,664,664,664,,,,,,664,664,664,664,664,664,664,664,664,,,664", ",,,,,,,664,664,,664,664,664,664,664,664,664,,,664,664,,,,664,664,664", "664,,,,,,,,,,,,,,664,664,,664,664,664,664,664,664,664,664,664,664,664", "664,,,664,664,1118,1118,1118,1118,,,,,,,,,,664,,,1118,1118,1118,1118", ",,1201,1118,1201,1201,1201,1201,1201,1118,1118,,,1118,,,,1201,,,,,,", ",,,,,,,,,1118,,,1118,,,1201,1118,,,1118,,,,,1201,1201,1201,1201,,,,1201", ",,,1118,,,,1118,1118,1118,1118,,1118,1118,1118,1118,,,,,1118,1118,983", "983,983,983,,,1118,,1118,1118,1118,,,1118,1118,,983,983,983,983,,,,983", "983,,,,,983,983,,,983,983,,,,,,,,,,,,,,,,,,,983,,,983,,,,983,,,983,", "983,,,,,,,983,,,,,,,983,,,,983,983,983,983,,983,983,983,983,,,,,983", "983,937,937,937,937,,,983,,983,983,983,,,983,983,,937,937,937,937,,", "1128,937,1128,1128,1128,1128,1128,937,937,,,937,,,,1128,,,,,,,,,,,,", ",,,937,,,937,,,1128,937,,,937,,,,,1128,1128,1128,1128,,,,1128,,,,937", ",,,937,937,937,937,,937,937,937,937,,,,,937,937,936,936,936,936,,,937", ",937,937,937,,,937,937,,936,936,936,936,,,1205,936,1205,1205,1205,1205", "1205,936,936,,,936,,,,1205,,,,,,,,,,,,,,,,936,,,936,,,1205,936,,,936", ",,,,,,1205,1205,,,,1205,,,,936,,,,936,936,936,936,,936,936,936,936,", ",,,936,936,930,930,930,930,,,936,,936,936,936,,,936,936,,930,930,930", "930,,,1203,930,1203,1203,1203,1203,1203,930,930,,,930,,,,1203,,,,,,", ",,,,,,,,,930,,,930,,,1203,930,,,930,,930,,,,,1203,1203,,,,1203,,,,930", ",,,930,930,930,930,,930,930,930,930,,,,,930,930,1198,1198,1198,1198", ",,930,,930,930,930,,,930,930,,1198,1198,1198,1198,,,1224,1198,1224,1224", "1224,1224,1224,1198,1198,,,1198,,,,1224,,,,,,,,,,,,,,,,1198,,,1198,", ",1224,1198,,,1198,,,,,,,1224,1224,,,,1224,,,,1198,,,,1198,1198,1198", "1198,,1198,1198,1198,1198,,,,,1198,1198,924,924,924,924,,,1198,,1198", "1198,1198,,,1198,1198,,924,924,924,924,,,,924,924,,,,,924,924,,,924", "924,,,,,,,,,,,,,,,,,,,924,,,924,,,,924,,,924,,924,,,,,,,924,,,,,,,924", ",,,924,924,924,924,,924,924,924,924,,,,,924,924,923,923,923,923,,,924", ",924,924,924,,,924,924,,923,923,923,923,,,,923,923,,,,,923,923,,,923", "923,,,,,,,,,,,,,,,,,,,923,,,923,,,,923,,,923,,923,,,,,,,923,,,,,,,923", ",,,923,923,923,923,,923,923,923,923,,,,,923,923,920,920,920,920,,,923", ",923,923,923,,,923,923,,920,920,920,920,,,,920,,,,,,920,920,,,920,,", ",,,,,,,,,,,,,,,,,920,,,920,,,,920,,,920,,,,,,,,,,,,,,,,920,,,,920,920", "920,920,,920,920,920,920,,,,,920,920,918,918,918,918,,,920,,920,920", "920,,,920,920,,918,918,918,918,,,,918,,,,,,918,918,,,918,,,,,,,,,,,", ",,,,,,,,918,,,918,,,,918,,,918,,918,,,,,,,,,,,,,,918,,,,918,918,918", "918,,918,918,918,918,,,,,918,918,741,741,741,741,,,918,,918,918,918", ",,918,918,,741,741,741,741,,,,741,,,,,,741,741,,,741,,,,,,,,,,,,,,,", ",,,,741,,,741,,,,741,,,741,,741,,,,,,,,,,,,,,741,,,,741,741,741,741", ",741,741,741,741,,,,,741,741,741,,,,,,741,,741,741,741,,,741,741,26", "26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26", ",,,26,26,26,26,26,26,26,26,26,26,,,,,,26,26,26,26,26,26,26,26,26,26", "26,26,,26,,,,,,26,26,,26,26,26,26,26,26,26,,,26,26,,,,26,26,26,26,,", ",,,26,,,,,,,,26,26,,26,26,26,26,26,26,26,26,26,26,26,26,,,26,749,749", "749,749,,,702,,702,702,702,702,702,,,,749,749,749,749,,702,,749,,,,", ",749,749,,,749,,,,,,,,,,702,,,,,,,,,,749,702,702,749,,,702,749,,,749", ",,,,,,,,,,,,,,,749,,,,749,749,749,749,,749,749,749,749,,,,,749,749,", "702,,,,,749,,749,749,749,,,749,749,776,776,776,776,776,776,776,776,776", "776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,,,,776,776", "776,776,776,776,776,776,776,776,,,,,,776,776,776,776,776,776,776,776", "776,,,776,,,,,,,,776,776,,776,776,776,776,776,776,776,,,776,776,,,,776", "776,776,776,,,,,,,,,,,,,,776,776,,776,776,776,776,776,776,776,776,776", "776,776,776,,,776,525,525,525,525,,,,,,,,,,,,,525,525,525,525,,,,525", "525,,,,,525,525,,,525,525,,,,,,,,,,,,,,,,,,,525,,,525,,,,525,,,525,", "525,,,,,,,525,,,,,,,525,,,,525,525,525,525,,525,525,525,525,,,,,525", "525,524,524,524,524,,,525,,525,525,525,,,525,525,,524,524,524,524,,", ",524,524,,,,,524,524,,,524,524,,,,,,,,,,,,,,,,,,,524,,,524,,,,524,,", "524,,524,,,,,,,524,,,,,,,524,,,,524,524,524,524,,524,524,524,524,,,", ",524,524,1166,1166,1166,1166,,,524,,524,524,524,,,524,524,,1166,1166", "1166,1166,,,,1166,,,,,,1166,1166,,,1166,,,,,,,,,,,,,,,,,,,,1166,,,1166", ",,,1166,,,1166,,,,,,,,,,,,,,,,1166,,,,1166,1166,1166,1166,,1166,1166", "1166,1166,,,,,1166,1166,1109,1109,1109,1109,,,1166,,1166,1166,1166,", ",1166,1166,,1109,1109,1109,1109,,,,1109,,,,,,1109,1109,,,1109,,,,,,", ",,,,,,,,,,,,,1109,,,1109,,,,1109,,,1109,,,,,,,,,,,,,,,,1109,,,,1109", "1109,1109,1109,,1109,1109,1109,1109,,,,,1109,1109,1122,1122,1122,1122", ",,1109,,1109,1109,1109,,,1109,1109,,1122,1122,1122,1122,,,,1122,,,,", ",1122,1122,,,1122,,,,,,,,758,758,758,758,,,,,,,,,1122,,,1122,758,758", "758,1122,,,1122,,1122,,,,,758,758,,,758,,,,,1122,,,,1122,1122,1122,1122", ",1122,1122,1122,1122,,,,,1122,1122,,,,,,,1122,,1122,1122,1122,,,1122", "1122,,,,,,,,,,,,758,758,758,758,,758,758,758,758,,,,,758,758,945,945", "945,945,,,758,,758,758,758,,,,,,945,945,945,,,,,,,,,,,945,945,,,945", "944,944,944,944,,,,,,,,,,,,,944,944,944,,,,,,,,,,,944,944,,,944,,,,", ",,,,,,,,,,,945,945,945,945,,945,945,945,945,,,,,945,945,,,,,,,945,,945", "945,945,,,,,,,,,944,944,944,944,,944,944,944,944,,,,,944,944,759,759", "759,759,,,944,,944,944,944,,,,,,759,759,759,700,,700,700,700,700,700", ",,,759,759,,,759,700,,,,,,,,,,,1020,,1020,1020,1020,1020,1020,,,,,700", ",,,1020,,,,,700,700,700,700,,,,700,,,,,,,,,,1020,759,759,759,759,,759", "759,759,759,,1020,1020,,759,759,1020,,,,,,759,,759,759,759,,,698,700", "698,698,698,698,698,,230,,230,230,230,230,230,698,,,,,,,,230,,,1018", "1020,1018,1018,1018,1018,1018,,,,,698,,,,1018,,,,230,698,698,698,698", ",,,698,230,230,230,230,,,,230,1016,1018,1016,1016,1016,1016,1016,,,", ",,1018,1018,,1016,,1018,1014,,1014,1014,1014,1014,1014,,,,,,,698,,1014", ",,,1016,,230,,,,,,,,,1016,1016,,,,1016,,1014,,1018,,,,,,,1014,1014,1014", "1014,,,,1014,,,,,,,,,,,,1181,1181,,,1181,,,,,,1016,,1181,1181,,1181", "1181,1181,1181,1181,1181,1181,,,1181,1181,,,1014,1181,1181,1181,1181", ",,,,,1181,,,,,,,,1181,1181,,1181,1181,1181,1181,1181,1181,1181,1181", "1181,1181,1181,1181,299,299,1181,,299,,,,,,,,299,299,,299,299,299,299", "299,299,299,,,299,299,,,,299,299,299,299,,,,,,,,,,,,,,299,299,,299,299", "299,299,299,299,299,299,299,299,299,299,223,223,299,,223,,,,,,,,223", "223,,223,223,223,223,223,223,223,,,223,223,,,,223,223,223,223,,,,,,223", ",,,,,,,223,223,,223,223,223,223,223,223,223,223,223,223,223,223,1157", "1157,223,,1157,,,,,,,,1157,1157,,1157,1157,1157,1157,1157,1157,1157", ",,1157,1157,,,,1157,1157,1157,1157,,,,,,1157,,,,,,,,1157,1157,,1157", "1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,516,516,1157", ",516,,,,,,,,516,516,,516,516,516,516,516,516,516,,,516,516,,,,516,516", "516,516,,,,,,516,,,,,,,,516,516,,516,516,516,516,516,516,516,516,516", "516,516,516,1156,1156,516,,1156,,,,,,,,1156,1156,,1156,1156,1156,1156", "1156,1156,1156,,,1156,1156,,,,1156,1156,1156,1156,,,,,,1156,,,,,,,,1156", "1156,,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,672", "672,1156,,672,,,,,,,,672,672,,672,672,672,672,672,672,672,,,672,672", ",,,672,672,672,672,,,,,,672,,,,,,,,672,672,,672,672,672,672,672,672", "672,672,672,672,672,672,515,515,672,,515,,,,,,,,515,515,,515,515,515", "515,515,515,515,,,515,515,,,,515,515,515,515,,,,,,515,,,,,,,,515,515", ",515,515,515,515,515,515,515,515,515,515,515,515,222,222,515,,222,,", ",,,,,222,222,,222,222,222,222,222,222,222,,,222,222,,,,222,222,222,222", ",,,,,222,,,,,,,,222,222,,222,222,222,222,222,222,222,222,222,222,222", "222,588,588,222,,588,,,,,,,,588,588,,588,588,588,588,588,588,588,,,588", "588,,,,588,588,588,588,,,,,,588,,,,,,,,588,588,,588,588,588,588,588", "588,588,588,588,588,588,588,589,589,588,,589,,,,,,,,589,589,,589,589", "589,589,589,589,589,,,589,589,,,,589,589,589,589,,,,,,589,,,,,,,,589", "589,,589,589,589,589,589,589,589,589,589,589,589,589,626,626,589,,626", ",,,,,,,626,626,,626,626,626,626,626,626,626,,,626,626,,,,626,626,626", "626,,,,,,626,,,,,,,,626,626,,626,626,626,626,626,626,626,626,626,626", "626,626,671,671,626,,671,,,,,,,,671,671,,671,671,671,671,671,671,671", ",,671,671,,,,671,671,671,671,,,,,,671,,,,,,,,671,671,,671,671,671,671", "671,671,671,671,671,671,671,671,627,627,671,,627,,,,,,,,627,627,,627", "627,627,627,627,627,627,,,627,627,,,,627,627,627,627,,,,,,627,,,,,,", ",627,627,,627,627,627,627,627,627,627,627,627,627,627,627,634,634,627", ",634,,,,,,,,634,634,,634,634,634,634,634,634,634,,,634,634,,,,634,634", "634,634,,,,,,634,,,,,,,,634,634,,634,634,634,634,634,634,634,634,634", "634,634,634,633,633,634,,633,,,,,,,,633,633,,633,633,633,633,633,633", "633,,,633,633,,,,633,633,633,633,,,,,,633,,,,,,,,633,633,,633,633,633", "633,633,633,633,633,633,633,633,633,598,598,633,,598,,,,,,,,598,598", ",598,598,598,598,598,598,598,,,598,598,,,,598,598,598,598,,,,,,598,", ",,,,,,598,598,,598,598,598,598,598,598,598,598,598,598,598,598,599,599", "598,,599,,,,,,,,599,599,,599,599,599,599,599,599,599,,,599,599,,,,599", "599,599,599,,,,,,599,,,,,,,,599,599,,599,599,599,599,599,599,599,599", "599,599,599,599,,,599"]; - racc_action_check = (arr = $$$('Array').$new(28951, nil)); + clist = ["464,521,1016,837,1236,838,992,464,464,464,515,515,1053,464,464,289,464", "23,835,631,1087,1058,289,807,464,927,443,137,396,785,3,840,137,137,501", "31,464,464,1089,464,464,464,464,464,1104,1105,1108,384,385,392,850,622", "501,625,1092,932,1092,331,23,928,521,625,331,393,1058,927,464,464,464", "464,464,464,464,464,464,464,464,464,464,464,289,1165,464,464,464,443", "464,464,1200,807,464,1201,839,464,1053,928,840,9,464,31,464,932,464", "464,515,464,464,464,464,464,871,464,837,464,838,992,785,871,871,871", "1016,1202,31,871,871,1016,871,464,631,807,464,464,807,464,871,464,835", "396,1087,835,840,835,464,1087,807,464,871,871,1203,871,871,871,871,871", "1222,622,1089,839,392,850,622,1089,1104,1105,1108,384,385,1104,1105", "1108,384,385,393,981,981,12,871,871,871,871,871,871,871,871,871,871", "871,871,871,871,553,553,871,871,871,69,871,871,1202,1165,871,839,416", "871,1165,1127,1200,735,871,1201,871,1200,871,871,1201,871,871,871,871", "871,251,871,729,871,243,1203,244,641,641,729,729,729,358,358,729,729", "729,871,729,1202,871,871,802,871,1202,871,729,729,729,729,729,417,871", "735,802,871,14,808,729,729,246,729,729,729,729,729,1203,981,416,1127", "1127,1203,1222,810,979,15,251,1222,351,576,252,17,69,243,553,244,1127", "27,729,729,729,729,729,729,729,729,729,729,729,729,729,729,20,458,729", "729,729,656,729,729,358,358,729,48,48,729,729,417,729,246,729,641,729", "808,729,729,641,729,729,729,729,729,42,729,729,729,252,459,810,810,979", "947,351,576,576,576,658,45,414,729,458,413,729,729,729,729,53,729,20", "729,576,730,458,808,729,351,808,729,730,730,730,656,656,730,730,730", "1220,730,808,810,979,656,810,979,459,730,1220,730,730,730,1006,48,48", "727,810,979,459,730,730,216,730,730,730,730,730,947,947,947,756,229", "658,658,414,414,414,413,413,413,728,923,658,402,947,19,746,402,756,730", "730,730,730,730,730,730,730,730,730,730,730,730,730,746,44,730,730,730", "412,730,730,1006,231,730,727,291,730,730,418,730,288,730,291,730,235", "730,730,288,730,730,730,730,730,870,730,869,730,700,700,728,923,19,972", "415,972,972,972,972,972,245,730,44,290,730,730,730,730,972,730,290,730", "996,872,44,822,730,996,822,730,872,872,872,412,412,412,872,872,776,872", "972,291,776,418,418,418,288,872,872,972,972,972,972,870,931,869,972", "247,931,872,872,248,872,872,872,872,872,254,415,415,415,1022,634,1022", "1022,1022,1022,1022,290,634,362,914,972,914,914,914,1022,914,634,872", "872,872,872,872,872,872,872,872,872,872,872,872,872,305,43,872,872,872", "1022,872,872,319,389,872,411,320,872,389,914,1022,1022,872,323,872,1022", "872,872,362,872,872,872,872,872,108,872,872,872,634,5,362,108,108,108", "5,335,108,108,108,287,108,872,43,336,872,872,287,872,108,872,108,108", "108,744,43,1022,872,338,744,872,108,108,744,108,108,108,108,108,339", "411,411,411,340,347,286,294,295,29,759,759,347,286,294,295,29,376,346", "21,376,347,108,108,108,108,108,108,108,108,108,108,108,108,108,108,287", "345,108,108,108,1187,108,108,345,349,108,350,1187,108,108,352,108,345", "108,509,108,1187,108,108,509,108,108,108,108,108,21,108,111,108,347", "286,294,295,29,111,111,111,21,353,111,111,111,108,111,357,108,108,108", "108,359,108,111,108,111,111,111,377,108,366,377,108,345,368,111,111", "1187,111,111,111,111,111,371,442,374,404,378,54,293,292,442,379,404", "381,54,293,292,380,390,442,380,404,391,54,111,111,111,111,111,111,111", "111,111,111,111,111,111,111,395,939,111,111,111,394,111,111,1090,1090", "111,939,394,111,111,397,111,678,111,406,111,394,111,111,426,111,111", "111,111,111,442,111,404,111,54,293,292,432,1145,434,775,1157,775,775", "1157,1145,775,111,435,939,111,111,111,111,1145,111,437,111,440,465,444", "939,111,454,678,111,465,465,465,1132,394,456,465,465,811,465,678,775", "531,1132,457,811,466,465,465,472,811,823,823,473,811,762,762,762,762", "465,465,476,465,465,465,465,465,1145,383,383,477,762,762,762,531,478", "1132,1132,531,531,481,1132,482,532,762,762,16,16,762,465,465,465,465", "465,465,465,465,465,465,465,465,465,465,811,483,465,465,465,493,465", "465,1106,505,465,508,532,465,18,1106,532,532,465,511,465,18,465,465", "1106,465,465,465,465,465,18,465,465,465,517,762,762,762,762,525,762", "762,762,762,945,1190,1190,465,762,762,465,465,88,465,945,465,762,526", "762,762,762,533,465,534,88,465,387,387,387,387,387,387,535,1106,88,387", "387,536,561,18,387,842,387,387,387,387,387,387,387,562,563,567,945,583", "387,387,387,387,387,387,387,584,587,387,945,589,594,51,51,387,387,387", "387,387,387,387,387,387,387,387,387,598,387,387,387,843,387,387,387", "387,387,593,843,842,607,343,608,843,593,609,842,843,343,51,51,842,619", "593,623,842,387,343,624,387,626,653,387,387,363,661,387,663,387,670", "679,363,387,714,842,714,714,714,684,714,363,387,689,691,693,707,387", "387,387,387,712,387,387,387,387,713,843,715,722,387,387,731,593,740", "842,748,343,387,749,387,387,387,750,779,387,387,841,841,841,841,841", "841,782,784,790,841,841,791,792,363,841,400,841,841,841,841,841,841", "841,794,796,697,804,806,841,841,841,841,841,841,841,697,1099,841,1099", "1099,1099,809,1099,841,841,841,841,841,841,841,841,841,841,841,841,812", "841,841,841,242,841,841,841,841,841,344,242,400,697,697,813,816,344", "697,400,242,825,831,832,400,836,344,845,400,841,849,851,841,866,868", "841,841,877,890,841,1197,841,1197,1197,1197,841,1197,400,893,913,894", "913,913,913,841,913,897,899,902,841,841,841,841,903,841,841,841,841", "905,242,906,908,841,841,912,344,925,400,933,934,841,938,841,841,841", "941,913,841,841,236,236,236,236,236,236,913,649,649,236,236,649,649", "649,236,401,236,236,236,236,236,236,236,8,8,8,8,8,236,236,236,236,236", "236,236,946,494,236,494,494,494,965,494,236,236,236,236,236,236,236", "236,236,236,236,236,968,236,236,236,969,236,236,236,236,236,978,710", "401,710,710,710,983,710,494,401,986,993,995,1002,401,1003,1004,494,401", "236,1005,1031,236,1032,1037,236,236,1042,1043,236,1044,236,1045,1046", "1047,236,1051,401,710,1114,1052,1114,1114,1114,236,1114,1055,710,1059", "236,236,236,236,1066,236,236,236,236,1071,1072,1074,1075,236,236,1076", "1078,1079,401,1080,1096,236,1107,236,236,236,1110,1114,236,236,1103", "1103,1103,1103,1103,1103,1111,1112,1113,1103,1103,1124,1143,1146,1103", "1155,1103,1103,1103,1103,1103,1103,1103,25,1156,1161,1171,1172,1103", "1103,1103,1103,1103,1103,1103,1174,1177,1103,581,581,581,581,581,1103", "1103,1103,1103,1103,1103,1103,1103,1103,1103,1103,1103,1180,1103,1103", "1103,1181,1103,1103,1103,1103,1103,25,25,25,25,25,25,25,25,25,25,25", "1182,25,25,1183,1185,25,25,1199,1103,1204,25,1103,1206,1217,1103,1103", "1218,1224,1103,1225,1103,25,1226,25,1103,25,25,1227,25,25,25,25,25,1103", "25,1,,,1103,1103,1103,1103,,1103,1103,1103,1103,,,,,1103,1103,,25,,", ",,1103,,1103,1103,1103,,,1103,1103,997,997,997,997,997,997,,,,997,997", ",,,997,,997,997,997,997,997,997,997,373,373,373,373,373,997,997,997", "997,997,997,997,,,997,,,,,447,997,997,997,997,997,997,997,997,997,997", "997,997,,997,997,997,,997,997,997,997,997,447,447,447,447,447,447,447", "447,447,447,447,,447,447,,,447,447,,997,,,997,,,997,997,,,997,,997,447", ",447,997,447,447,,447,447,447,447,447,997,447,,,,997,997,997,997,,997", "997,997,997,,,,,997,997,,447,,447,,,997,,997,997,997,,,997,997,337,337", "337,337,337,337,,,,337,337,,,,337,,337,337,337,337,337,337,337,334,334", "334,334,334,337,337,337,337,337,337,337,,,337,,,,,692,337,337,337,337", "337,337,337,337,337,337,337,337,,337,337,337,,337,337,337,337,337,692", "692,692,692,692,692,692,692,692,692,692,,692,692,,,692,692,,337,,,337", ",,337,337,,,337,,337,692,,692,337,692,692,,692,692,692,692,692,337,692", ",,,337,337,337,337,,337,337,337,337,,,,,337,337,,692,,,,,337,,337,337", "337,,,337,337,38,38,38,38,38,38,,,,38,38,,,,38,,38,38,38,38,38,38,38", ",,,,,38,38,38,38,38,38,38,,,38,,,,,453,38,38,38,38,38,38,38,38,38,38", "38,38,,38,38,38,,38,38,38,38,38,453,453,453,453,453,453,453,453,453", "453,453,,453,453,,,453,453,,38,,,38,,,38,38,,,38,,38,453,,453,38,453", "453,,453,453,453,453,453,38,453,,,,38,38,38,38,,38,38,38,38,,,,,38,38", ",453,,,,,38,,38,38,38,,,38,38,642,642,642,642,642,642,,,,642,642,,,", "642,,642,642,642,642,642,642,642,,,,,,642,642,642,642,642,642,642,,", "642,,,,,723,642,642,642,642,642,642,642,642,642,642,642,642,,642,642", "642,,642,642,642,642,642,723,723,723,723,723,723,723,723,723,723,723", ",723,723,,,723,723,,642,,,642,,,642,642,,,642,,642,723,,723,642,723", "723,,723,723,723,723,723,642,723,,,,642,642,642,642,,642,642,642,642", ",,,,642,642,,723,,,,,642,,642,642,642,,,642,642,1068,1068,1068,1068", "1068,1068,,,,1068,1068,,,,1068,,1068,1068,1068,1068,1068,1068,1068,", ",,,,1068,1068,1068,1068,1068,1068,1068,,,1068,,,,,,1068,1068,1068,1068", "1068,1068,1068,1068,1068,1068,1068,1068,,1068,1068,1068,,1068,1068,1068", "1068,1068,817,817,817,817,817,817,817,817,817,817,817,,817,817,,,817", "817,,1068,,,1068,,,1068,1068,,,1068,,1068,817,,817,1068,817,817,,817", "817,817,817,817,1068,817,,,,1068,1068,1068,1068,,1068,1068,1068,1068", ",,,,1068,1068,,817,,,,,1068,,1068,1068,1068,,,1068,1068,372,372,372", "372,372,372,,,,372,372,,,,372,,372,372,372,372,372,372,372,,,,,,372", "372,372,372,372,372,372,,,372,,,,,,372,372,372,372,372,372,372,372,372", "372,372,372,,372,372,372,,372,372,372,372,372,874,874,874,874,874,874", "874,874,874,874,874,,874,874,,,874,874,,372,,,372,,,372,372,,,372,,372", "874,,874,372,874,874,,874,874,874,874,874,372,874,,,,372,372,372,372", ",372,372,372,372,,,,,372,372,,874,,,,,372,,372,372,372,,,372,372,973", "973,973,973,973,973,,,,973,973,,,,973,,973,973,973,973,973,973,973,", ",,,,973,973,973,973,973,973,973,,,973,,,,,,973,973,973,973,973,973,973", "973,973,973,973,973,,973,973,973,,973,973,973,973,973,317,317,317,317", "317,317,317,317,317,317,317,,317,317,,,317,317,,973,,,973,,,973,973", ",,973,,973,317,,317,973,317,317,,317,317,317,317,317,973,317,,,,973", "973,973,973,,973,973,973,973,,,,,973,973,,317,,,,,973,,973,973,973,", ",973,973,2,2,2,2,2,2,,,,2,2,,,,2,,2,2,2,2,2,2,2,,,,,,2,2,2,2,2,2,2,", ",2,,,,,,2,2,2,2,2,2,2,2,2,2,2,2,,2,2,2,,2,2,2,2,2,550,550,550,550,550", "550,550,550,550,550,550,,550,550,,,550,550,,2,,,2,,,2,2,,,2,,2,550,", "550,2,550,550,,550,550,550,550,550,2,550,,,,2,2,2,2,,2,2,2,2,,,,,2,2", "550,550,,,,,2,,2,2,2,,,2,2,230,230,230,230,230,230,,,,230,230,,,,230", ",230,230,230,230,230,230,230,,,,,,230,230,230,230,230,230,230,,,230", ",,,,,230,230,230,230,230,230,230,230,230,230,230,230,,230,230,230,,230", "230,230,230,230,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067", ",1067,1067,,,1067,1067,,230,,,230,,,230,230,,,230,,230,1067,,1067,230", "1067,1067,,1067,1067,1067,1067,1067,230,1067,,,,230,230,230,230,,230", "230,230,230,,,,,230,230,,1067,,,,,230,,230,230,230,,,230,230,342,342", "342,342,342,342,,,,342,342,,,,342,,342,342,342,342,342,342,342,,,,,", "342,342,342,342,342,342,342,,,342,,,,,,342,342,342,342,342,342,342,342", "342,342,342,342,,342,342,342,,342,342,342,342,342,1034,1034,1034,1034", "1034,1034,1034,1034,1034,1034,1034,,1034,1034,,,1034,1034,,342,,,342", ",,342,342,,,342,,342,1034,,1034,342,1034,1034,,1034,1034,1034,1034,1034", "342,1034,,,,342,342,342,342,,342,342,342,342,,,,,342,342,,1034,,,,,342", ",342,342,342,,,342,342,253,253,253,253,253,253,,,,253,253,,,,253,,253", "253,253,253,253,253,253,,,,,,253,253,253,253,253,253,253,,,253,,,,,", "253,253,253,253,253,253,253,253,253,253,253,253,,253,253,253,,253,253", "253,253,253,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,", "1033,1033,,,1033,1033,,253,,,253,,,253,253,,,253,,253,1033,,1033,253", "1033,1033,,1033,1033,1033,1033,1033,253,1033,,,,253,253,253,253,,253", "253,253,253,,,,,253,253,,1033,,,,,253,,253,253,253,,,253,253,1013,1013", "1013,1013,1013,1013,,,,1013,1013,,,,1013,,1013,1013,1013,1013,1013,1013", "1013,,,,,,1013,1013,1013,1013,1013,1013,1013,,,1013,,,,,,1013,1013,1013", "1013,1013,1013,1013,1013,1013,1013,1013,1013,,1013,1013,1013,,1013,1013", "1013,1013,1013,1011,1011,1011,1011,1011,1011,1011,1011,1011,1011,1011", ",1011,1011,,,1011,1011,,1013,,,1013,,,1013,1013,,,1013,,1013,1011,,1011", "1013,1011,1011,,1011,1011,1011,1011,1011,1013,1011,,,,1013,1013,1013", "1013,,1013,1013,1013,1013,,,,,1013,1013,,1011,,,,,1013,,1013,1013,1013", ",,1013,1013,1098,1098,1098,1098,1098,1098,,,,1098,1098,,,,1098,,1098", "1098,1098,1098,1098,1098,1098,,,,,,1098,1098,1098,1098,1098,1098,1098", ",,1098,,,,,,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098", ",1098,1098,1098,,1098,1098,1098,1098,1098,1010,1010,1010,1010,1010,1010", "1010,1010,1010,1010,1010,,1010,1010,,,1010,1010,,1098,,,1098,,,1098", "1098,,,1098,,1098,1010,,1010,1098,1010,1010,,1010,1010,1010,1010,1010", "1098,1010,,,,1098,1098,1098,1098,,1098,1098,1098,1098,,,,,1098,1098", ",1010,,,,,1098,,1098,1098,1098,,,1098,1098,1097,1097,1097,1097,1097", "1097,,,,1097,1097,,,,1097,,1097,1097,1097,1097,1097,1097,1097,,,,,,1097", "1097,1097,1097,1097,1097,1097,,,1097,,,,,,1097,1097,1097,1097,1097,1097", "1097,1097,1097,1097,1097,1097,,1097,1097,1097,,1097,1097,1097,1097,1097", "529,529,529,529,529,529,529,529,529,529,529,,529,529,,,529,529,,1097", ",,1097,,,1097,1097,,546,1097,,1097,529,,529,1097,529,529,,529,529,529", "529,529,1097,529,,,,1097,1097,1097,1097,,1097,1097,1097,1097,,,546,", "1097,1097,546,546,,546,546,,1097,,1097,1097,1097,,,1097,1097,1147,1147", "1147,1147,1147,1147,,,,1147,1147,,,,1147,,1147,1147,1147,1147,1147,1147", "1147,,,,,,1147,1147,1147,1147,1147,1147,1147,547,1115,1147,1115,1115", "1115,,1115,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147", ",1147,1147,1147,,1147,1147,1147,1147,1147,604,,547,,,,547,547,1115,547", "547,,,,,,604,604,,1147,,,1147,,,1147,1147,,,1147,,1147,604,,604,1147", "604,604,,604,604,,,604,1147,604,,,,1147,1147,1147,1147,,1147,1147,1147", "1147,,,,,1147,1147,,,,,,,1147,,1147,1147,1147,,,1147,1147,621,621,621", "621,621,621,,,,621,621,,,,621,,621,621,621,621,621,621,621,,,,,,621", "621,621,621,621,621,621,,,621,,,,,,621,621,621,621,621,621,621,621,621", "621,621,621,,621,621,621,,621,621,621,621,621,364,364,364,364,364,364", "364,364,364,364,364,,364,364,,,364,364,,621,,,621,,,621,621,,,621,,621", "364,,364,621,364,364,,364,364,364,364,364,621,364,,,,621,621,621,621", ",621,621,621,621,,,,,621,621,,,,,,,621,,621,621,621,,,621,621,892,892", "892,892,892,892,,,,892,892,,,,892,,892,892,892,892,892,892,892,,,,,", "892,892,892,892,892,892,892,,,892,,,,,,892,892,892,892,892,892,892,892", "892,892,892,892,,892,892,892,,892,892,892,892,892,365,365,365,365,365", "365,365,365,365,365,365,,365,365,,,365,365,,892,,,892,,,892,892,,,892", ",892,365,,365,892,365,365,,365,365,365,365,365,892,365,,,,892,892,892", "892,,892,892,892,892,,,,,892,892,,,,,,,892,,892,892,892,,,892,892,618", "618,618,618,618,618,,,,618,618,,,,618,,618,618,618,618,618,618,618,", ",,,,618,618,618,618,618,618,618,,,618,,,,,,618,618,618,618,618,618,618", "618,618,618,618,618,,618,618,618,,618,618,618,618,618,551,,,,,,,,,,", ",,,,,551,551,,618,,,618,,,618,618,,,618,,618,551,,551,618,551,551,,551", "551,,,551,618,551,,,,618,618,618,618,,618,618,618,618,,,,,618,618,,", ",,,,618,,618,618,618,,,618,618,1191,1191,1191,1191,1191,1191,,,,1191", "1191,,,,1191,,1191,1191,1191,1191,1191,1191,1191,,,,,,1191,1191,1191", "1191,1191,1191,1191,,,1191,,,,,,1191,1191,1191,1191,1191,1191,1191,1191", "1191,1191,1191,1191,,1191,1191,1191,,1191,1191,1191,1191,1191,549,549", "549,549,549,549,549,549,,549,549,,,,,,549,549,,1191,,,1191,,,1191,1191", ",,1191,,1191,549,,549,1191,549,549,,549,549,549,549,549,1191,549,,,", "1191,1191,1191,1191,,1191,1191,1191,1191,,,,,1191,1191,,,,,,,1191,,1191", "1191,1191,,,1191,1191,135,135,135,135,135,135,,,,135,135,,,,135,,135", "135,135,135,135,135,135,,,,,,135,135,135,135,135,135,135,,,135,,,,,", "135,135,135,135,135,135,135,135,135,135,135,135,,135,135,135,,135,135", "135,135,135,548,548,548,548,548,548,548,,,548,548,,,,,,548,548,,135", ",,135,,,135,135,,,135,,135,548,,548,135,548,548,,548,548,548,548,548", "135,548,,,,135,135,135,135,,135,135,135,135,,,,,135,135,,,,,,,135,,135", "135,135,,,135,135,218,218,218,218,218,218,,,,218,218,,,,218,,218,218", "218,218,218,218,218,,,,,,218,218,218,218,218,218,218,,,218,,,,,,218", "218,218,218,218,218,218,218,218,218,218,218,,218,218,218,,218,218,218", "218,218,545,545,545,545,545,545,545,,,545,545,,,,,,545,545,,218,,,218", ",,218,218,,,218,,218,545,,545,218,545,545,,545,545,545,545,545,218,545", ",,,218,218,218,218,,218,218,218,218,,,,,218,218,,,,,,,218,,218,218,218", ",,218,218,846,846,846,846,846,846,,,,846,846,,,,846,,846,846,846,846", "846,846,846,,,,,,846,846,846,846,846,846,846,,,846,,,,,,846,846,846", "846,846,846,846,846,846,846,846,846,,846,846,846,,846,846,846,846,846", "544,544,544,544,544,544,544,,,544,544,,,,,,544,544,,846,,,846,,,846", "846,,,846,,846,544,,544,846,544,544,,544,544,544,544,544,846,544,,,", "846,846,846,846,,846,846,846,846,,,,,846,846,,,,,,,846,,846,846,846", ",,846,846,857,857,857,857,857,857,,,,857,857,,,,857,,857,857,857,857", "857,857,857,,,,,,857,857,857,857,857,857,857,,,857,,,,,,857,857,857", "857,857,857,857,857,857,857,857,857,,857,857,857,,857,857,857,857,857", "543,543,543,543,543,543,543,,,543,543,,,,,,543,543,,857,,,857,,,857", "857,,,857,,857,543,,543,857,543,543,,543,543,543,543,543,857,543,,,", "857,857,857,857,,857,857,857,857,,,,,857,857,,,,,,,857,,857,857,857", ",,857,857,388,388,388,388,388,388,,,,388,388,,,,388,,388,388,388,388", "388,388,388,,,,,,388,388,388,388,388,388,388,,,388,,,,,,388,388,388", "388,388,388,388,388,388,388,388,388,,388,388,388,,388,388,388,388,388", "542,542,542,542,542,542,542,,,542,542,,,,,,542,542,,388,,,388,,,388", "388,,,388,,388,542,,542,388,542,542,,542,542,542,542,542,388,542,,,", "388,388,388,388,,388,388,388,388,,,,,388,388,,,,,,,388,,388,388,388", ",,388,388,991,991,991,991,991,991,,,,991,991,,,,991,,991,991,991,991", "991,991,991,,,,,,991,991,991,991,991,991,991,,,991,,,,,,991,991,991", "991,991,991,991,991,991,991,991,991,,991,991,991,,991,991,991,991,991", "541,541,541,541,541,541,541,,,541,541,,,,,,541,541,,991,,,991,,,991", "991,,,991,,991,541,,541,991,541,541,,541,541,541,541,541,991,541,,,", "991,991,991,991,,991,991,991,991,,,,,991,991,,,,920,920,920,991,920", "991,991,991,920,920,991,991,,920,,920,920,920,920,920,920,920,,,,,,920", "920,920,920,920,920,920,,,920,,,,,,,920,,,920,920,920,920,920,920,920", "920,,920,920,920,,920,920,920,920,920,540,540,540,540,540,540,540,,", "540,540,,,,,,540,540,,920,,,920,,,920,920,,,920,,,540,,540,920,540,540", ",540,540,540,540,540,920,540,,,,920,920,920,920,,920,920,920,920,,,", ",920,920,,,,921,921,921,920,921,920,920,920,921,921,920,920,,921,,921", "921,921,921,921,921,921,,,,,,921,921,921,921,921,921,921,,,921,,,,,", ",921,,,921,921,921,921,921,921,921,921,,921,921,921,,921,921,921,921", "921,530,530,530,530,530,530,530,530,530,530,530,,530,530,,,530,530,", "921,,,921,,,921,921,,,921,,,530,,530,921,530,530,,530,530,530,530,530", "921,530,,,,921,921,921,921,,921,921,921,921,,,,,921,921,,,,922,922,922", "921,922,921,921,921,922,922,921,921,,922,,922,922,922,922,922,922,922", ",,,,,922,922,922,922,922,922,922,,,922,,,,,,,922,,,922,922,922,922,922", "922,922,922,,922,922,922,,922,922,922,922,922,538,,,,,,,,,,,,,,,,538", "538,,922,,,922,,,922,922,,,922,,,538,,538,922,538,538,,538,538,,,,922", ",,,,922,922,922,922,,922,922,922,922,,,,,922,922,,,,733,733,733,922", "733,922,922,922,733,733,922,922,,733,,733,733,733,733,733,733,733,,", ",,,733,733,733,733,733,733,733,,,733,,,,,,,733,,,733,733,733,733,733", "733,733,733,,733,733,733,,733,733,733,733,733,539,,,,,,,,,,,,,,,,539", "539,,733,,,733,,,733,733,,,733,,,539,,,733,539,539,,539,539,,,,733,", ",,,733,733,733,733,,733,733,733,733,,,,,733,733,,,,732,732,732,733,732", "733,733,733,732,732,733,733,,732,,732,732,732,732,732,732,732,,,,,,732", "732,732,732,732,732,732,,,732,,,,,,,732,,,732,732,732,732,732,732,732", "732,,732,732,732,,732,732,732,732,732,537,,,,,,,,,,,,,,,,537,537,,732", ",,732,,,732,732,,,732,,,537,,537,732,537,537,,537,537,,,,732,,,,,732", "732,732,732,,732,732,732,732,,,,,732,732,,,,,,,732,,732,732,732,,,732", "732,333,333,333,333,333,,,,333,333,,,,333,,333,333,333,333,333,333,333", ",,,,,333,333,333,333,333,333,333,,,333,,,,,,333,333,,333,333,333,333", "333,333,333,333,333,,333,333,333,,333,333,333,333,333,,,,,,,,,,,,,,", ",,,,,333,,,333,,,333,333,,,333,,333,,,,333,,,,,,,,,333,,,,,333,333,333", "333,,333,333,333,333,,,,,333,333,,,,265,265,265,333,265,333,333,333", "265,265,333,333,,265,,265,265,265,265,265,265,265,,,,,,265,265,265,265", "265,265,265,,,265,,,,,,,265,,,265,265,265,265,265,265,265,265,,265,265", "265,,265,265,265,265,265,,,,,,,,,,,,,,,,,,,,265,,,265,,,265,265,,,265", ",,,,,265,,,,,,,,,265,,,,,265,265,265,265,,265,265,265,265,,,,,265,265", ",,,264,264,264,265,264,265,265,265,264,264,265,265,,264,,264,264,264", "264,264,264,264,,,,,,264,264,264,264,264,264,264,,,264,,,,,,,264,,,264", "264,264,264,264,264,264,264,,264,264,264,,264,264,264,264,264,,,,,,", ",,,,,,,,,,,,,264,,,264,,,264,264,,,264,,,,,,264,,,,,,,,,264,,,,,264", "264,264,264,,264,264,264,264,,,,,264,264,,,,263,263,263,264,263,264", "264,264,263,263,264,264,,263,,263,263,263,263,263,263,263,,,,,,263,263", "263,263,263,263,263,,,263,,,,,,,263,,,263,263,263,263,263,263,263,263", ",263,263,263,,263,263,263,263,263,,,,,,,,,,,,,,,,,,,,263,,,263,,,263", "263,,,263,,,,,,263,,,,,,,,,263,,,,,263,263,263,263,,263,263,263,263", ",,,,263,263,,,,262,262,262,263,262,263,263,263,262,262,263,263,,262", ",262,262,262,262,262,262,262,,,,,,262,262,262,262,262,262,262,,,262", ",,,,,,262,,,262,262,262,262,262,262,262,262,,262,262,262,,262,262,262", "262,262,,,,,,,,,,,,,,,,,,,,262,,,262,,,262,262,,,262,,,,,,262,,,,,,", ",,262,,,,,262,262,262,262,,262,262,262,262,,,,,262,262,,,,261,261,261", "262,261,262,262,262,261,261,262,262,,261,,261,261,261,261,261,261,261", ",,,,,261,261,261,261,261,261,261,,,261,,,,,,,261,,,261,261,261,261,261", "261,261,261,,261,261,261,,261,261,261,261,261,,,,,,,,,,,,,,,,,,,,261", ",,261,,,261,261,,,261,,,,,,261,,,,,,,,,261,,,,,261,261,261,261,,261", "261,261,261,,,,,261,261,,,,708,708,708,261,708,261,261,261,708,708,261", "261,,708,,708,708,708,708,708,708,708,,,,,,708,708,708,708,708,708,708", ",,708,,,,,,,708,,,708,708,708,708,708,708,708,708,,708,708,708,,708", "708,708,708,708,,,,,,,,,,,,,,,,,,,,708,,,708,,,708,708,,,708,,,,,,708", ",,,,,,,,708,,,,,708,708,708,708,,708,708,708,708,,,,,708,708,,,,260", "260,260,708,260,708,708,708,260,260,708,708,,260,,260,260,260,260,260", "260,260,,,,,,260,260,260,260,260,260,260,,,260,,,,,,,260,,,260,260,260", "260,260,260,260,260,,260,260,260,,260,260,260,260,260,,,,,,,,,,,,,,", ",,,,,260,,,260,,,260,260,,,260,,,,,,260,,,,,,,,,260,,,,,260,260,260", "260,,260,260,260,260,,,,,260,260,,,,694,694,694,260,694,260,260,260", "694,694,260,260,,694,,694,694,694,694,694,694,694,,,,,,694,694,694,694", "694,694,694,,,694,,,,,,,694,,,694,694,694,694,694,694,694,694,,694,694", "694,,694,694,694,694,694,,,,,,,,,,,,,,,,,,,,694,,,694,,,694,694,,,694", ",694,,,,694,,,,,,,,,694,,,,,694,694,694,694,,694,694,694,694,,,,,694", "694,,,,259,259,259,694,259,694,694,694,259,259,694,694,,259,,259,259", "259,259,259,259,259,,,,,,259,259,259,259,259,259,259,,,259,,,,,,,259", ",,259,259,259,259,259,259,259,259,,259,259,259,,259,259,259,259,259", ",,,,,,,,,,,,,,,,,,,259,,,259,,,259,259,,,259,,,,,,259,,,,,,,,,259,,", ",,259,259,259,259,,259,259,259,259,,,,,259,259,,,,258,258,258,259,258", "259,259,259,258,258,259,259,,258,,258,258,258,258,258,258,258,,,,,,258", "258,258,258,258,258,258,,,258,,,,,,,258,,,258,258,258,258,258,258,258", "258,,258,258,258,,258,258,258,258,258,,,,,,,,,,,,,,,,,,,,258,,,258,", ",258,258,,,258,,,,,,258,,,,,,,,,258,,,,,258,258,258,258,,258,258,258", "258,,,,,258,258,,,,257,257,257,258,257,258,258,258,257,257,258,258,", "257,,257,257,257,257,257,257,257,,,,,,257,257,257,257,257,257,257,,", "257,,,,,,,257,,,257,257,257,257,257,257,257,257,,257,257,257,,257,257", "257,257,257,,,,,,,,,,,,,,,,,,,,257,,,257,,,257,257,,,257,,,,,,257,,", ",,,,,,257,,,,,257,257,257,257,,257,257,257,257,,,,,257,257,,,,688,688", "688,257,688,257,257,257,688,688,257,257,,688,,688,688,688,688,688,688", "688,,,,,,688,688,688,688,688,688,688,,,688,,,,,,,688,,,688,688,688,688", "688,688,688,688,,688,688,688,,688,688,688,688,688,,,,,,,,,,,,,,,,,,", ",688,,,688,,,688,688,,,688,,,,,,688,,,,,,,,,688,,,,,688,688,688,688", ",688,688,688,688,,,,,688,688,,,,687,687,687,688,687,688,688,688,687", "687,688,688,,687,,687,687,687,687,687,687,687,,,,,,687,687,687,687,687", "687,687,,,687,,,,,,,687,,,687,687,687,687,687,687,687,687,,687,687,687", ",687,687,687,687,687,,,,,,,,,,,,,,,,,,,,687,,,687,,,687,687,,,687,,", ",,,687,,,,,,,,,687,,,,,687,687,687,687,,687,687,687,687,,,,,687,687", ",,,,,,687,,687,687,687,32,,687,687,,,,32,32,32,,,32,32,32,,32,,,,,,", ",32,32,32,32,,,,,,,,,32,32,,32,32,32,32,32,,,,,,,,,,,,,,,,,,,,,,,32", "32,32,32,32,32,32,32,32,32,32,32,32,32,,,32,32,32,,,32,,32,32,,,32,32", ",32,,32,,32,,32,32,,32,32,32,32,32,,32,32,32,,,,,,,,,,,,,,32,,,32,32", ",32,,32,683,683,683,,683,,32,,683,683,,,,683,,683,683,683,683,683,683", "683,,,,,,683,683,683,683,683,683,683,,,683,,,,,,,683,,,683,683,683,683", "683,683,683,683,,683,683,683,,683,683,683,683,683,,,,,,,,,,,,,,,,,,", ",683,,,683,,,683,683,,,683,,,,,,683,,,,,,,,,683,,,,,683,683,683,683", ",683,683,683,683,,,,,683,683,,,,682,682,682,683,682,683,683,683,682", "682,683,683,,682,,682,682,682,682,682,682,682,,,,,,682,682,682,682,682", "682,682,,,682,,,,,,,682,,,682,682,682,682,682,682,682,682,,682,682,682", ",682,682,682,682,682,,,,,,,,,,,,,,,,,,,,682,,,682,,,682,682,,,682,,", ",,,682,,,,,,,,,682,,,,,682,682,682,682,,682,682,682,682,,,,,682,682", ",,,681,681,681,682,681,682,682,682,681,681,682,682,,681,,681,681,681", "681,681,681,681,,,,,,681,681,681,681,681,681,681,,,681,,,,,,,681,,,681", "681,681,681,681,681,681,681,681,681,681,681,,681,681,681,681,681,,,", ",,,,,,,,,,,,,,,,681,,,681,,,681,681,,,681,,,,681,,681,,,681,,,,,,681", ",,,,681,681,681,681,,681,681,681,681,,,,,681,681,,,,956,956,956,681", "956,681,681,681,956,956,681,681,,956,,956,956,956,956,956,956,956,,", ",,,956,956,956,956,956,956,956,,,956,,,,,,,956,,,956,956,956,956,956", "956,956,956,,956,956,956,,956,956,956,956,956,,,,,,,,,,,,,,,,,,,,956", ",,956,,,956,956,,,956,,,,,,956,,,,,,,,,956,,,,,956,956,956,956,,956", "956,956,956,,,,,956,956,,,,962,962,962,956,962,956,956,956,962,962,956", "956,,962,,962,962,962,962,962,962,962,,,,,,962,962,962,962,962,962,962", ",,962,,,,,,,962,,,962,962,962,962,962,962,962,962,,962,962,962,,962", "962,962,962,962,,,,,,,,,,,,,,,,,,,,962,,,962,,,962,962,,,962,,,,,,962", ",,,,,,,,962,,,,,962,962,962,962,,962,962,962,962,,,,,962,962,,,,,,,962", ",962,962,962,33,,962,962,,,,33,33,33,,,33,33,33,,33,,,,,,,,33,,33,33", ",,,,,,,,33,33,,33,33,33,33,33,,,,,,,,,,,,,,,,,,,,,,,33,33,33,33,33,33", "33,33,33,33,33,33,33,33,,,33,33,33,,,33,,33,33,,,33,33,,33,,33,,33,", "33,33,,33,33,33,33,33,,33,,33,,,,,,,,,,,,,,33,,,33,33,,33,,33,34,34", "34,,34,,33,,34,34,,,,34,,34,34,34,34,34,34,34,,,,,,34,34,34,34,34,34", "34,,,34,,,,,,,34,,,34,34,34,34,34,34,34,34,34,34,34,34,,34,34,34,34", "34,,,,,,,,,,,,,,,,,,,,34,,,34,,,34,34,,,34,,34,,34,,34,,,34,,,,,,34", ",,,,34,34,34,34,,34,34,34,34,,,,,34,34,,,,680,680,680,34,680,34,34,34", "680,680,34,34,,680,,680,680,680,680,680,680,680,,,,,,680,680,680,680", "680,680,680,,,680,,,,,,,680,,,680,680,680,680,680,680,680,680,680,680", "680,680,,680,680,680,680,680,,,,,,,,,,,,,,,,,,,,680,,,680,,,680,680", ",,680,,680,,680,,680,,,680,,,,,,680,,,,,680,680,680,680,,680,680,680", "680,,,,,680,680,,,,677,677,677,680,677,680,680,680,677,677,680,680,", "677,,677,677,677,677,677,677,677,,,,,,677,677,677,677,677,677,677,,", "677,,,,,,,677,,,677,677,677,677,677,677,677,677,,677,677,677,,677,677", "677,677,677,,,,,,,,,,,,,,,,,,,,677,,,677,,,677,677,,,677,,,,,,677,,", ",,,,,,677,,,,,677,677,677,677,,677,677,677,677,,,,,677,677,,,,,,,677", ",677,677,677,,,677,677,676,676,676,676,676,,,,676,676,,,,676,,676,676", "676,676,676,676,676,,,,,,676,676,676,676,676,676,676,,,676,,,,,,676", "676,,676,676,676,676,676,676,676,676,676,,676,676,676,,676,676,676,676", "676,,,,,,,,,,,,,,,,,,,,676,,,676,,,676,676,,,676,,676,,,,676,,,,,,,", ",676,,,,,676,676,676,676,,676,676,676,676,,,,,676,676,,,,985,985,985", "676,985,676,676,676,985,985,676,676,,985,,985,985,985,985,985,985,985", ",,,,,985,985,985,985,985,985,985,,,985,,,,,,,985,,,985,985,985,985,985", "985,985,985,,985,985,985,,985,985,985,985,985,,,,,,,,,,,,,,,,,,,,985", ",,985,,,985,985,,,985,,,,,,985,,,,,,,,,985,,,,,985,985,985,985,,985", "985,985,985,,,,,985,985,,,,673,673,673,985,673,985,985,985,673,673,985", "985,,673,,673,673,673,673,673,673,673,,,,,,673,673,673,673,673,673,673", ",,673,,,,,,,673,,,673,673,673,673,673,673,673,673,673,673,673,673,,673", "673,673,673,673,,,,,,,,,,,,,,,,,,,,673,,,673,,,673,673,,,673,,673,,673", ",673,,,673,,,,,,673,,,,,673,673,673,673,,673,673,673,673,,,,,673,673", ",,,672,672,672,673,672,673,673,673,672,672,673,673,,672,,672,672,672", "672,672,672,672,,,,,,672,672,672,672,672,672,672,,,672,,,,,,,672,,,672", "672,672,672,672,672,672,672,,672,672,672,,672,672,672,672,672,,,,,,", ",,,,,,,,,,,,,672,,,672,,,672,672,,,672,,,,,,672,,,,,,,,,672,,,,,672", "672,672,672,,672,672,672,672,,,,,672,672,,,,990,990,990,672,990,672", "672,672,990,990,672,672,,990,,990,990,990,990,990,990,990,,,,,,990,990", "990,990,990,990,990,,,990,,,,,,,990,,,990,990,990,990,990,990,990,990", ",990,990,990,,990,990,990,990,990,,,,,,,,,,,,,,,,,,,,990,,,990,,,990", "990,,,990,,990,,,,990,,,,,,,,,990,,,,,990,990,990,990,,990,990,990,990", ",,,,990,990,,,,671,671,671,990,671,990,990,990,671,671,990,990,,671", ",671,671,671,671,671,671,671,,,,,,671,671,671,671,671,671,671,,,671", ",,,,,,671,,,671,671,671,671,671,671,671,671,,671,671,671,,671,671,671", "671,671,,,,,,,,,,,,,,,,,,,,671,,,671,,,671,671,,,671,,671,,,,671,,,", ",,,,,671,,,,,671,671,671,671,,671,671,671,671,,,,,671,671,,,,,,,671", ",671,671,671,,,671,671,669,669,669,669,669,,,,669,669,,,,669,,669,669", "669,669,669,669,669,,,,,,669,669,669,669,669,669,669,,,669,,,,,,669", "669,,669,669,669,669,669,669,669,669,669,,669,669,669,,669,669,669,669", "669,,,,,,,,,,,,,,,,,,,,669,,,669,,,669,669,,,669,,669,,,,669,,,,,,,", ",669,,,,,669,669,669,669,,669,669,669,669,,,,,669,669,,,,35,35,35,669", "35,669,669,669,35,35,669,669,,35,,35,35,35,35,35,35,35,,,,,,35,35,35", "35,35,35,35,,,35,,,,,,,35,,,35,35,35,35,35,35,35,35,35,35,35,35,,35", "35,35,35,35,,,,,,,,,,,,,,,,,,,,35,,,35,,,35,35,,,35,,35,,35,,35,,,35", ",,,,,35,,,,,35,35,35,35,,35,35,35,35,,,,,35,35,,,,250,250,250,35,250", "35,35,35,250,250,35,35,,250,,250,250,250,250,250,250,250,,,,,,250,250", "250,250,250,250,250,,,250,,,,,,,250,,,250,250,250,250,250,250,250,250", ",250,250,250,,250,250,250,250,250,,,,,,,,,,,,,,,,,,,,250,,,250,,,250", "250,,,250,,,,,,250,,,,,,,,,250,,,,,250,250,250,250,,250,250,250,250", ",,,,250,250,,,,36,36,36,250,36,250,250,250,36,36,250,250,,36,,36,36", "36,36,36,36,36,,,,,,36,36,36,36,36,36,36,,,36,,,,,,,36,,,36,36,36,36", "36,36,36,36,36,36,36,36,,36,36,36,36,36,,,,,,,,,,,,,,,,,,,,36,,,36,", ",36,36,,,36,,36,,36,,36,,,36,,,,,,36,,,,,36,36,36,36,,36,36,36,36,,", ",,36,36,,,,638,638,638,36,638,36,36,36,638,638,36,36,,638,,638,638,638", "638,638,638,638,,,,,,638,638,638,638,638,638,638,,,638,,,,,,,638,,,638", "638,638,638,638,638,638,638,638,638,638,638,,638,638,638,638,638,,,", ",,,,,,,,,,,,,,,,638,,,638,,,638,638,,,638,,638,,638,,638,,,638,,,,,", "638,,,,,638,638,638,638,,638,638,638,638,,,,,638,638,,,,1009,1009,1009", "638,1009,638,638,638,1009,1009,638,638,,1009,,1009,1009,1009,1009,1009", "1009,1009,,,,,,1009,1009,1009,1009,1009,1009,1009,,,1009,,,,,,,1009", ",,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,,1009", "1009,1009,1009,1009,,,,,,,,,,,,,,,,,,,,1009,,,1009,,,1009,1009,,,1009", ",,,1009,,1009,,,1009,,,,,,1009,,,,,1009,1009,1009,1009,,1009,1009,1009", "1009,,,,,1009,1009,,,,628,628,628,1009,628,1009,1009,1009,628,628,1009", "1009,,628,,628,628,628,628,628,628,628,,,,,,628,628,628,628,628,628", "628,,,628,,,,,,,628,,,628,628,628,628,628,628,628,628,628,628,628,628", ",628,628,628,628,628,,,,,,,,,,,,,,,,,,,,628,,,628,,,628,628,,,628,,628", ",628,,628,,,628,,,,,,628,,,,,628,628,628,628,,628,628,628,628,,,,,628", "628,,,,627,627,627,628,627,628,628,628,627,627,628,628,,627,,627,627", "627,627,627,627,627,,,,,,627,627,627,627,627,627,627,,,627,,,,,,,627", ",,627,627,627,627,627,627,627,627,,627,627,627,,627,627,627,627,627", ",,,,,,,,,,,,,,,,,,,627,,,627,,,627,627,,,627,,627,,,,627,,,,,,,,,627", ",,,,627,627,627,627,,627,627,627,627,,,,,627,627,,,,818,818,818,627", "818,627,627,627,818,818,627,627,,818,,818,818,818,818,818,818,818,,", ",,,818,818,818,818,818,818,818,,,818,,,,,,,818,,,818,818,818,818,818", "818,818,818,,818,818,818,,818,818,818,818,818,,,,,,,,,,,,,,,,,,,,818", ",,818,,,818,818,,,818,,,,,,818,,,,,,,,,818,,,,,818,818,818,818,,818", "818,818,818,,,,,818,818,,,,614,614,614,818,614,818,818,818,614,614,818", "818,,614,,614,614,614,614,614,614,614,,,,,,614,614,614,614,614,614,614", ",,614,,,,,,,614,,,614,614,614,614,614,614,614,614,614,614,614,614,,614", "614,614,614,614,,,,,,,,,,,,,,,,,,,,614,,,614,,,614,614,,,614,,,,,,614", ",,614,,,,,,614,,,,,614,614,614,614,,614,614,614,614,,,,,614,614,,,,611", "611,611,614,611,614,614,614,611,611,614,614,,611,,611,611,611,611,611", "611,611,,,,,,611,611,611,611,611,611,611,,,611,,,,,,,611,,,611,611,611", "611,611,611,611,611,611,611,611,611,,611,611,611,611,611,,,,,,,,,,,", ",,,,,,,,611,,,611,,,611,611,,,611,,611,,,,611,,,611,,,,,,611,,,,,611", "611,611,611,,611,611,611,611,,,,,611,611,,,,239,239,239,611,239,611", "611,611,239,239,611,611,,239,,239,239,239,239,239,239,239,,,,,,239,239", "239,239,239,239,239,,,239,,,,,,,239,,,239,239,239,239,239,239,239,239", ",239,239,239,,239,239,239,239,239,,,,,,,,,,,,,,,,,,,,239,,,239,,,239", "239,,,239,,,,,,239,,,,,,,,,239,,,,,239,239,239,239,,239,239,239,239", ",,,,239,239,239,,,605,605,605,239,605,239,239,239,605,605,239,239,,605", ",605,605,605,605,605,605,605,,,,,,605,605,605,605,605,605,605,,,605", ",,,,,,605,,,605,605,605,605,605,605,605,605,,605,605,605,,605,605,605", "605,605,,,,,,,,,,,,,,,,,,,,605,,,605,,,605,605,,,605,,,,,,605,,,,,,", ",,605,,,,,605,605,605,605,,605,605,605,605,,,,,605,605,,,,1035,1035", "1035,605,1035,605,605,605,1035,1035,605,605,,1035,,1035,1035,1035,1035", "1035,1035,1035,,,,,,1035,1035,1035,1035,1035,1035,1035,,,1035,,,,,,", "1035,,,1035,1035,1035,1035,1035,1035,1035,1035,,1035,1035,1035,,1035", "1035,1035,1035,1035,,,,,,,,,,,,,,,,,,,,1035,,,1035,,,1035,1035,,,1035", ",,,,,1035,,,,,,,,,1035,,,,,1035,1035,1035,1035,,1035,1035,1035,1035", ",,,,1035,1035,,,,603,603,603,1035,603,1035,1035,1035,603,603,1035,1035", ",603,,603,603,603,603,603,603,603,,,,,,603,603,603,603,603,603,603,", ",603,,,,,,,603,,,603,603,603,603,603,603,603,603,,603,603,603,,603,603", "603,603,603,,,,,,,,,,,,,,,,,,,,603,,,603,,,603,603,,,603,,,,,,603,,", ",,,,,,603,,,,,603,603,603,603,,603,603,603,603,,,,,603,603,,,,600,600", "600,603,600,603,603,603,600,600,603,603,,600,,600,600,600,600,600,600", "600,,,,,,600,600,600,600,600,600,600,,,600,,,,,,,600,,,600,600,600,600", "600,600,600,600,,600,600,600,,600,600,600,600,600,,,,,,,,,,,,,,,,,,", ",600,,,600,,,600,600,,,600,,,,,,600,,,,,,,,,600,,,,,600,600,600,600", ",600,600,600,600,,,,,600,600,,,,238,238,238,600,238,600,600,600,238", "238,600,600,,238,,238,238,238,238,238,238,238,,,,,,238,238,238,238,238", "238,238,,,238,,,,,,,238,,,238,238,238,238,238,238,238,238,,238,238,238", ",238,238,238,238,238,,,,,,,,,,,,,,,,,,,,238,,,238,,,238,238,,,238,,", ",,,238,,,,,,,,,238,,,,,238,238,238,238,,238,238,238,238,,,,,238,238", ",,,237,237,237,238,237,238,238,238,237,237,238,238,,237,,237,237,237", "237,237,237,237,,,,,,237,237,237,237,237,237,237,,,237,,,,,,,237,,,237", "237,237,237,237,237,237,237,,237,237,237,,237,237,237,237,237,,,,,,", ",,,,,,,,,,,,,237,,,237,,,237,237,,,237,,,,,,237,,,,,,,,,237,,,,,237", "237,237,237,,237,237,237,237,,,,,237,237,,,,590,590,590,237,590,237", "237,237,590,590,237,237,,590,,590,590,590,590,590,590,590,,,,,,590,590", "590,590,590,590,590,,,590,,,,,,,590,,,590,590,590,590,590,590,590,590", "590,590,590,590,,590,590,590,590,590,,,,,,,,,,,,,,,,,,,,590,,,590,,", "590,590,,,590,,590,,590,,590,,,590,,,,,,590,,,,,590,590,590,590,,590", "590,590,590,,,,,590,590,,,,,,,590,,590,590,590,,,590,590,580,580,580", "580,580,,,,580,580,,,,580,,580,580,580,580,580,580,580,,,,,,580,580", "580,580,580,580,580,,,580,,,,,,580,580,580,580,580,580,580,580,580,580", "580,580,,580,580,580,,580,580,580,580,580,,,,,,,,,,,,,,,,,,,,580,,,580", ",,580,580,,,580,,580,,,,580,,,,,,,,,580,,,,,580,580,580,580,,580,580", "580,580,,,,,580,580,,,,,,580,580,,580,580,580,,,580,580,574,574,574", ",574,,,,574,574,,,,574,,574,574,574,574,574,574,574,,,,,,574,574,574", "574,574,574,574,,,574,,,,,,,574,,,574,574,574,574,574,574,574,574,,574", "574,574,,574,574,574,574,574,,,,,,,,,,,,,,,,,,,,574,,,574,,,574,574", ",,574,,,,,,574,,,,,,,,,574,,,,,574,574,574,574,,574,574,574,574,,,,", "574,574,,,,369,369,369,574,369,574,574,574,369,369,574,574,,369,,369", "369,369,369,369,369,369,,,,,,369,369,369,369,369,369,369,,,369,,,,,", ",369,,,369,369,369,369,369,369,369,369,,369,369,369,,369,369,369,369", "369,,,,,,,,,,,,,,,,,,,,369,,,369,,,369,369,,,369,,,,,,369,,,,,,,,,369", ",,,,369,369,369,369,,369,369,369,369,,,,,369,369,,,,46,46,46,369,46", "369,369,369,46,46,369,369,,46,,46,46,46,46,46,46,46,,,,,,46,46,46,46", "46,46,46,,,46,,,,,,,46,,,46,46,46,46,46,46,46,46,,46,46,46,,46,46,46", "46,46,,,,,,,,,,,,,,,,,,,,46,,,46,,,46,46,,,46,,,,,,46,,,,,,,,,46,,,", ",46,46,46,46,,46,46,46,46,,,,,46,46,,,,572,572,572,46,572,46,46,46,572", "572,46,46,,572,,572,572,572,572,572,572,572,,,,,,572,572,572,572,572", "572,572,,,572,,,,,,,572,,,572,572,572,572,572,572,572,572,572,572,572", "572,,572,572,572,572,572,,,,,,,,,,,,,,,,,,,,572,,,572,,,572,572,,,572", ",,,572,,572,,,572,,,,,,572,,,,,572,572,572,572,,572,572,572,572,,,,", "572,572,,,,570,570,570,572,570,572,572,572,570,570,572,572,,570,,570", "570,570,570,570,570,570,,,,,,570,570,570,570,570,570,570,,,570,,,,,", ",570,,,570,570,570,570,570,570,570,570,570,570,570,570,,570,570,570", "570,570,,,,,,,,,,,,,,,,,,,,570,,,570,,,570,570,,,570,,570,,570,,570", ",,570,,,,,,570,,,,,570,570,570,570,,570,570,570,570,,,,,570,570,,,,47", "47,47,570,47,570,570,570,47,47,570,570,,47,,47,47,47,47,47,47,47,,,", ",,47,47,47,47,47,47,47,,,47,,,,,,,47,,,47,47,47,47,47,47,47,47,,47,47", "47,,47,47,47,47,47,,,,,,,,,,,,,,,,,,,,47,,,47,,,47,47,,,47,,,,,,47,", ",,,,,,,47,,,,,47,47,47,47,,47,47,47,47,,,,,47,47,,,,560,560,560,47,560", "47,47,47,560,560,47,47,,560,,560,560,560,560,560,560,560,,,,,,560,560", "560,560,560,560,560,,,560,,,,,,,560,,,560,560,560,560,560,560,560,560", ",560,560,560,,560,560,560,560,560,,,,,,,,,,,,,,,,,,,,560,,,560,,,560", "560,,,560,,,,,,560,,,,,,,,,560,,,,,560,560,560,560,,560,560,560,560", ",,,,560,560,,,,49,49,49,560,49,560,560,560,49,49,560,560,,49,,49,49", "49,49,49,49,49,,,,,,49,49,49,49,49,49,49,,,49,,,,,,,49,,,49,49,49,49", "49,49,49,49,,49,49,49,,49,49,49,49,49,,,,,,,,,,,,,,,,,,,,49,,,49,,,49", "49,,,49,,,,,,49,,,,,,,,,49,,,,,49,49,49,49,,49,49,49,49,,,,,49,49,,", ",,,,49,,49,49,49,555,,49,49,,,,555,555,555,,,555,555,555,703,555,703", "703,703,703,703,,,555,555,555,,,,703,,,,,,555,555,,555,555,555,555,555", ",701,,701,701,701,701,701,703,,,,,,,,701,703,703,703,703,,,,703,,1140", ",1140,1140,1140,1140,1140,555,,,,,701,,555,1140,,,,555,555,701,701,701", "701,,,,701,,,,,,,,,1140,703,,,,555,555,,,,,1140,1140,,,,1140,,,,555", ",,555,,283,283,283,555,283,,701,,283,283,555,,,283,,283,283,283,283", "283,283,283,,,,,,283,283,283,283,283,283,283,,,283,,,,,,,283,,,283,283", "283,283,283,283,283,283,,283,283,283,,283,283,283,283,283,,,,,,,,,,", ",,,,,,,,,283,,,283,,,283,283,,,283,,,,,,283,,,,,,,,,283,,,,,283,283", "283,283,,283,283,283,283,,,,,283,283,,,,224,224,224,283,224,283,283", "283,224,224,283,283,,224,,224,224,224,224,224,224,224,,,,,,224,224,224", "224,224,224,224,,,224,,,,,,,224,,,224,224,224,224,224,224,224,224,224", "224,224,224,,224,224,224,224,224,,,,,,,,,,,,,,,,,,,,224,,,224,,,224", "224,,,224,,224,,224,,224,,,224,,,,,,224,,,,,224,224,224,224,,224,224", "224,224,,,,,224,224,,,,223,223,223,224,223,224,224,224,223,223,224,224", ",223,,223,223,223,223,223,223,223,,,,,,223,223,223,223,223,223,223,", ",223,,,,,,,223,,,223,223,223,223,223,223,223,223,,223,223,223,,223,223", "223,223,223,,,,,,,,,,,,,,,,,,,,223,,,223,,,223,223,,,223,,,,,,223,,", ",,,,,,223,,,,,223,223,223,223,,223,223,223,223,,,,,223,223,,,,50,50", "50,223,50,223,223,223,50,50,223,223,,50,,50,50,50,50,50,50,50,,,,,,50", "50,50,50,50,50,50,,,50,,,,,,,50,,,50,50,50,50,50,50,50,50,,50,50,50", ",50,50,50,50,50,,,,,,,,,,,,,,,,,,,,50,,,50,,,50,50,,,50,,,,,,50,,,,", ",,,,50,,,,,50,50,50,50,,50,50,50,50,,,,,50,50,,,,222,222,222,50,222", "50,50,50,222,222,50,50,,222,,222,222,222,222,222,222,222,,,,,,222,222", "222,222,222,222,222,,,222,,,,,,,222,,,222,222,222,222,222,222,222,222", ",222,222,222,,222,222,222,222,222,,,,,,,,,,,,,,,,,,,,222,,,222,,,222", "222,,,222,,,,,,222,,,,,,,,,222,,,,,222,222,222,222,,222,222,222,222", ",,,,222,222,,,,72,72,72,222,72,222,222,222,72,72,222,222,,72,,72,72", "72,72,72,72,72,,,,,,72,72,72,72,72,72,72,,,72,,,,,,,72,,,72,72,72,72", "72,72,72,72,,72,72,72,,72,72,72,72,72,,,,,,,,,,,,,,,,,,,,72,,,72,,,72", "72,,,72,,,,,,72,,,,,,,,,72,,,,,72,72,72,72,,72,72,72,72,,,,,72,72,,", ",71,71,71,72,71,72,72,72,71,71,72,72,,71,,71,71,71,71,71,71,71,,,,,", "71,71,71,71,71,71,71,,,71,,,,,,,71,,,71,71,71,71,71,71,71,71,,71,71", "71,,71,71,71,71,71,,,,,,,,,,,,,,,,,,,,71,,,71,,,71,71,,,71,,,,,,71,", ",,,,,,,71,,,,,71,71,71,71,,71,71,71,71,,,,,71,71,,,,436,436,436,71,436", "71,71,71,436,436,71,71,,436,,436,436,436,436,436,436,436,,,,,,436,436", "436,436,436,436,436,,,436,,,,,,,436,,,436,436,436,436,436,436,436,436", ",436,436,436,,436,436,436,436,436,,,,,,,,,,,,,,,,,,,,436,,,436,,,436", "436,,,436,,,,,,436,,,,,,,,,436,,,,,436,436,436,436,,436,436,436,436", ",,,,436,436,,,,68,68,68,436,68,436,436,436,68,68,436,436,,68,,68,68", "68,68,68,68,68,,,,,,68,68,68,68,68,68,68,,,68,,,,,,,68,,,68,68,68,68", "68,68,68,68,68,68,68,68,,68,68,68,68,68,,,,,,,,,,,,,,,,,,,,68,,,68,", ",68,68,,,68,,,,,,68,,,68,,,,,,68,,,,,68,68,68,68,,68,68,68,68,,,,,68", "68,,,,407,407,407,68,407,68,68,68,407,407,68,68,,407,,407,407,407,407", "407,407,407,,,,,,407,407,407,407,407,407,407,,,407,,,,,,,407,,,407,407", "407,407,407,407,407,407,,407,407,407,,407,407,407,407,407,,,,,,,,,,", ",,,,,,,,,407,,,407,,,407,407,,,407,,,,,,407,,,,,,,,,407,,,,,407,407", "407,407,,407,407,407,407,,,,,407,407,,,,847,847,847,407,847,407,407", "407,847,847,407,407,,847,,847,847,847,847,847,847,847,,,,,,847,847,847", "847,847,847,847,,,847,,,,,,,847,,,847,847,847,847,847,847,847,847,,847", "847,847,,847,847,847,847,847,,,,,,,,,,,,,,,,,,,,847,,,847,,,847,847", ",,847,,,,,,847,,,,,,,,,847,,,,,847,847,847,847,,847,847,847,847,,,,", "847,847,,,,276,276,276,847,276,847,847,847,276,276,847,847,,276,,276", "276,276,276,276,276,276,,,,,,276,276,276,276,276,276,276,,,276,,,,,", ",276,,,276,276,276,276,276,276,276,276,,276,276,276,,276,276,276,276", "276,,,,,,,,,,,,,,,,,,,,276,,,276,,,276,276,,,276,,,,,,276,,,,,,,,,276", ",,,,276,276,276,276,,276,276,276,276,,,,,276,276,,,,275,275,275,276", "275,276,276,276,275,275,276,276,,275,,275,275,275,275,275,275,275,,", ",,,275,275,275,275,275,275,275,,,275,,,,,,,275,,,275,275,275,275,275", "275,275,275,,275,275,275,,275,275,275,275,275,,,,,,,,,,,,,,,,,,,,275", ",,275,,,275,275,,,275,,,,,,275,,,,,,,,,275,,,,,275,275,275,275,,275", "275,275,275,,,,,275,275,,,,67,67,67,275,67,275,275,275,67,67,275,275", ",67,,67,67,67,67,67,67,67,,,,,,67,67,67,67,67,67,67,,,67,,,,,,,67,,", "67,67,67,67,67,67,67,67,67,67,67,67,,67,67,67,67,67,,,,,,,,,,,,,,,,", ",,,67,,,67,,,67,67,,,67,,67,,,,67,,,67,,,,,,67,,,,,67,67,67,67,,67,67", "67,67,,,,,67,67,,,,,,,67,,67,67,67,,,67,67,66,66,66,66,66,,,,66,66,", ",,66,,66,66,66,66,66,66,66,,,,,,66,66,66,66,66,66,66,,,66,,,,,,66,66", ",66,66,66,66,66,66,66,66,66,,66,66,66,,66,66,66,66,66,,,,,,,,,,,,,,", ",,,,,66,,,66,,,66,66,,,66,,66,,,,66,,,,,,,,,66,,,,,66,66,66,66,,66,66", "66,66,,,,,66,66,,,,299,299,299,66,299,66,66,66,299,299,66,66,,299,,299", "299,299,299,299,299,299,,,,,,299,299,299,299,299,299,299,,,299,,,,,", ",299,,,299,299,299,299,299,299,299,299,,299,299,299,,299,299,299,299", "299,,,,,,,,,,,,,,,,,,,,299,,,299,,,299,299,,,299,,,,,,299,,,,,,,,,299", ",,,,299,299,299,299,,299,299,299,299,,,,,299,299,,,,274,274,274,299", "274,299,299,299,274,274,299,299,,274,,274,274,274,274,274,274,274,,", ",,,274,274,274,274,274,274,274,,,274,,,,,,,274,,,274,274,274,274,274", "274,274,274,,274,274,274,,274,274,274,274,274,,,,,,,,,,,,,,,,,,,,274", ",,274,,,274,274,,,274,,,,,,274,,,,,,,,,274,,,,,274,274,274,274,,274", "274,274,274,,,,,274,274,,,,867,867,867,274,867,274,274,274,867,867,274", "274,,867,,867,867,867,867,867,867,867,,,,,,867,867,867,867,867,867,867", ",,867,,,,,,,867,,,867,867,867,867,867,867,867,867,,867,867,867,,867", "867,867,867,867,,,,,,,,,,,,,,,,,,,,867,,,867,,,867,867,,,867,,,,,,867", ",,,,,,,,867,,,,,867,867,867,867,,867,867,867,867,,,,,867,867,,,,24,24", "24,867,24,867,867,867,24,24,867,867,,24,,24,24,24,24,24,24,24,,,,,,24", "24,24,24,24,24,24,,,24,,,,,,,24,,,24,24,24,24,24,24,24,24,,24,24,24", ",24,24,24,24,24,,,,,,,,,,,,,,,,,,,,24,,,24,,,24,24,,,24,,,,,,24,,,,", ",,,,24,,,,,24,24,24,24,,24,24,24,24,,,,,24,24,,,,273,273,273,24,273", "24,24,24,273,273,24,24,,273,,273,273,273,273,273,273,273,,,,,,273,273", "273,273,273,273,273,,,273,,,,,,,273,,,273,273,273,273,273,273,273,273", ",273,273,273,,273,273,273,273,273,,,,,,,,,,,,,,,,,,,,273,,,273,,,273", "273,,,273,,,,,,273,,,,,,,,,273,,,,,273,273,273,273,,273,273,273,273", ",,,,273,273,,,,788,788,788,273,788,273,273,273,788,788,273,273,,788", ",788,788,788,788,788,788,788,,,,,,788,788,788,788,788,788,788,,,788", ",,,,,,788,,,788,788,788,788,788,788,788,788,788,788,788,788,,788,788", "788,788,788,,,,,,,,,,,,,,,,,,,,788,,,788,,,788,788,,,788,,788,,788,", "788,,,788,,,,,,788,,,,,788,788,788,788,,788,788,788,788,,,,,788,788", ",,,272,272,272,788,272,788,788,788,272,272,788,788,,272,,272,272,272", "272,272,272,272,,,,,,272,272,272,272,272,272,272,,,272,,,,,,,272,,,272", "272,272,272,272,272,272,272,,272,272,272,,272,272,272,272,272,,,,,,", ",,,,,,,,,,,,,272,,,272,,,272,272,,,272,,,,,,272,,,,,,,,,272,,,,,272", "272,272,272,,272,272,272,272,,,,,272,272,,,,875,875,875,272,875,272", "272,272,875,875,272,272,,875,,875,875,875,875,875,875,875,,,,,,875,875", "875,875,875,875,875,,,875,,,,,,,875,,,875,875,875,875,875,875,875,875", ",875,875,875,,875,875,875,875,875,,,,,,,,,,,,,,,,,,,,875,,,875,,,875", "875,,,875,,,,,,875,,,,,,,,,875,,,,,875,875,875,875,,875,875,875,875", ",,,,875,875,,,,306,306,306,875,306,875,875,875,306,306,875,875,,306", ",306,306,306,306,306,306,306,,,,,,306,306,306,306,306,306,306,,,306", ",,,,,,306,,,306,306,306,306,306,306,306,306,306,306,306,306,,306,306", "306,306,306,,,,,,,,,,,,,,,,,,,,306,,,306,,,306,306,,,306,,306,,306,", "306,,,306,,,,,,306,,,,,306,306,306,306,,306,306,306,306,,,,,306,306", ",,,888,888,888,306,888,306,306,306,888,888,306,306,,888,,888,888,888", "888,888,888,888,,,,,,888,888,888,888,888,888,888,,,888,,,,,,,888,,,888", "888,888,888,888,888,888,888,,888,888,888,,888,888,888,888,888,,,,,,", ",,,,,,,,,,,,,888,,,888,,,888,888,,,888,,,,,,888,,,,,,,,,888,,,,,888", "888,888,888,,888,888,888,888,,,,,888,888,,,,889,889,889,888,889,888", "888,888,889,889,888,888,,889,,889,889,889,889,889,889,889,,,,,,889,889", "889,889,889,889,889,,,889,,,,,,,889,,,889,889,889,889,889,889,889,889", ",889,889,889,,889,889,889,889,889,,,,,,,,,,,,,,,,,,,,889,,,889,,,889", "889,,,889,,,,,,889,,,,,,,,,889,,,,,889,889,889,889,,889,889,889,889", ",,,,889,889,,,,307,307,307,889,307,889,889,889,307,307,889,889,,307", ",307,307,307,307,307,307,307,,,,,,307,307,307,307,307,307,307,,,307", ",,,,,,307,,,307,307,307,307,307,307,307,307,307,307,307,307,,307,307", "307,307,307,,,,,,,,,,,,,,,,,,,,307,,,307,,,307,307,,,307,,307,,307,", "307,,,307,,,,,,307,,,,,307,307,307,307,,307,307,307,307,,,,,307,307", ",,,315,315,315,307,315,307,307,307,315,315,307,307,,315,,315,315,315", "315,315,315,315,,,,,,315,315,315,315,315,315,315,,,315,,,,,,,315,,,315", "315,315,315,315,315,315,315,315,315,315,315,,315,315,315,315,315,,,", ",,,,,,,,,,,,,,,,315,,,315,,,315,315,,,315,,315,,315,,315,,,315,,,,,", "315,,,,,315,315,315,315,,315,315,315,315,,,,,315,315,315,,,271,271,271", "315,271,315,315,315,271,271,315,315,,271,,271,271,271,271,271,271,271", ",,,,,271,271,271,271,271,271,271,,,271,,,,,,,271,,,271,271,271,271,271", "271,271,271,,271,271,271,,271,271,271,271,271,,,,,,,,,,,,,,,,,,,,271", ",,271,,,271,271,,,271,,,,,,271,,,,,,,,,271,,,,,271,271,271,271,,271", "271,271,271,,,,,271,271,,,,270,270,270,271,270,271,271,271,270,270,271", "271,,270,,270,270,270,270,270,270,270,,,,,,270,270,270,270,270,270,270", ",,270,,,,,,,270,,,270,270,270,270,270,270,270,270,,270,270,270,,270", "270,270,270,270,,,,,,,,,,,,,,,,,,,,270,,,270,,,270,270,,,270,,,,,,270", ",,,,,,,,270,,,,,270,270,270,270,,270,270,270,270,,,,,270,270,,,,269", "269,269,270,269,270,270,270,269,269,270,270,,269,,269,269,269,269,269", "269,269,,,,,,269,269,269,269,269,269,269,,,269,,,,,,,269,,,269,269,269", "269,269,269,269,269,,269,269,269,,269,269,269,269,269,,,,,,,,,,,,,,", ",,,,,269,,,269,,,269,269,,,269,,,,,,269,,,,,,,,,269,,,,,269,269,269", "269,,269,269,269,269,,,,,269,269,,,,322,322,322,269,322,269,269,269", "322,322,269,269,,322,,322,322,322,322,322,322,322,,,,,,322,322,322,322", "322,322,322,,,322,,,,,,,322,,,322,322,322,322,322,322,322,322,,322,322", "322,,322,322,322,322,322,,,,,,,,,,,,,,,,,,,,322,,,322,,,322,322,,,322", ",,,,,322,,,,,,,,,322,,,,,322,322,322,322,,322,322,322,322,,,,,322,322", ",,,324,324,324,322,324,322,322,322,324,324,322,322,,324,,324,324,324", "324,324,324,324,,,,,,324,324,324,324,324,324,324,,,324,,,,,,,324,,,324", "324,324,324,324,324,324,324,,324,324,324,,324,324,324,324,324,,,,,,", ",,,,,,,,,,,,,324,,,324,,,324,324,,,324,,,,,,324,,,,,,,,,324,,,,,324", "324,324,324,,324,324,324,324,,,,,324,324,,,,327,327,327,324,327,324", "324,324,327,327,324,324,,327,,327,327,327,327,327,327,327,,,,,,327,327", "327,327,327,327,327,,,327,,,,,,,327,,,327,327,327,327,327,327,327,327", ",327,327,327,,327,327,327,327,327,,,,,,,,,,,,,,,,,,,,327,,,327,,,327", "327,,,327,,,,,,327,,,,,,,,,327,,,,,327,327,327,327,,327,327,327,327", ",,,,327,327,,,,328,328,328,327,328,327,327,327,328,328,327,327,,328", ",328,328,328,328,328,328,328,,,,,,328,328,328,328,328,328,328,,,328", ",,,,,,328,,,328,328,328,328,328,328,328,328,,328,328,328,,328,328,328", "328,328,,,,,,,,,,,,,,,,,,,,328,,,328,,,328,328,,,328,,,,,,328,,,,,,", ",,328,,,,,328,328,328,328,,328,328,328,328,,,,,328,328,,,,268,268,268", "328,268,328,328,328,268,268,328,328,,268,,268,268,268,268,268,268,268", ",,,,,268,268,268,268,268,268,268,,,268,,,,,,,268,,,268,268,268,268,268", "268,268,268,,268,268,268,,268,268,268,268,268,,,,,,,,,,,,,,,,,,,,268", ",,268,,,268,268,,,268,,,,,,268,,,,,,,,,268,,,,,268,268,268,268,,268", "268,268,268,,,,,268,268,,,,267,267,267,268,267,268,268,268,267,267,268", "268,,267,,267,267,267,267,267,267,267,,,,,,267,267,267,267,267,267,267", ",,267,,,,,,,267,,,267,267,267,267,267,267,267,267,,267,267,267,,267", "267,267,267,267,,,,,,,,,,,,,,,,,,,,267,,,267,,,267,267,,,267,,,,,,267", ",,,,,,,,267,,,,,267,267,267,267,,267,267,267,267,,,,,267,267,,,,266", "266,266,267,266,267,267,267,266,266,267,267,,266,,266,266,266,266,266", "266,266,,,,,,266,266,266,266,266,266,266,,,266,,,,,,,266,,,266,266,266", "266,266,266,266,266,,266,266,266,,266,266,266,266,266,,,,,,,,,,,,,,", ",,,,,266,,,266,,,266,266,,,266,,,,,,266,,,,,,,,,266,,,,,266,266,266", "266,,266,266,266,266,,,,,266,266,,,,917,917,917,266,917,266,266,266", "917,917,266,266,,917,,917,917,917,917,917,917,917,,,,,,917,917,917,917", "917,917,917,,,917,,,,,,,917,,,917,917,917,917,917,917,917,917,,917,917", "917,,917,917,917,917,917,,,,,,,,,,,,,,,,,,,,917,,,917,,,917,917,,,917", ",,,,,917,,,,,,,,,917,,,,,917,917,917,917,,917,917,917,917,,,,,917,917", ",,,918,918,918,917,918,917,917,917,918,918,917,917,,918,,918,918,918", "918,918,918,918,,,,,,918,918,918,918,918,918,918,,,918,,,,,,,918,,,918", "918,918,918,918,918,918,918,,918,918,918,,918,918,918,918,918,,,,,,", ",,,,,,,,,,,,,918,,,918,,,918,918,,,918,,,,,,918,,,,,,,,,918,,,,,918", "918,918,918,,918,918,918,918,,,,,918,918,,,,919,919,919,918,919,918", "918,918,919,919,918,918,,919,,919,919,919,919,919,919,919,,,,,,919,919", "919,919,919,919,919,,,919,,,,,,,919,,,919,919,919,919,919,919,919,919", ",919,919,919,,919,919,919,919,919,,,,,,,,,,,,,,,,,,,,919,,,919,,,919", "919,,,919,,,,,,919,,,,,,,,,919,,,,,919,919,919,919,,919,919,919,919", ",,,,919,919,,,,497,497,497,919,497,919,919,919,497,497,919,919,,497", ",497,497,497,497,497,497,497,,,,,,497,497,497,497,497,497,497,,,497", ",,,,,,497,,,497,497,497,497,497,497,497,497,,497,497,497,,497,497,497", "497,497,,,,,,,,,,,,,,,,,,,,497,,,497,,,497,497,,,497,,,,,,497,,,,,,", ",,497,,,,,497,497,497,497,,497,497,497,497,,,,,497,497,,,,,,,497,,497", "497,497,,,497,497,133,133,133,133,133,,,,133,133,,,,133,,133,133,133", "133,133,133,133,,,,,,133,133,133,133,133,133,133,,,133,,,,,,133,133", ",133,133,133,133,133,133,133,133,133,,133,133,133,,133,133,133,133,133", ",,,,,,,,,,,,,,,,,,,133,,,133,,,133,133,,,133,,133,,,,133,,,,,,,,,133", ",,,,133,133,133,133,,133,133,133,133,,,,,133,133,,,,132,132,132,133", "132,133,133,133,132,132,133,133,,132,,132,132,132,132,132,132,132,,", ",,,132,132,132,132,132,132,132,,,132,,,,,,,132,,,132,132,132,132,132", "132,132,132,,132,132,132,,132,132,132,132,132,,,,,,,,,,,,,,,,,,,,132", ",,132,,,132,132,,,132,,,,,,132,,,,,,,,,132,,,,,132,132,132,132,,132", "132,132,132,,,,,132,132,,,,131,131,131,132,131,132,132,132,131,131,132", "132,,131,,131,131,131,131,131,131,131,,,,,,131,131,131,131,131,131,131", ",,131,,,,,,,131,,,131,131,131,131,131,131,131,131,,131,131,131,,131", "131,131,131,131,,,,,,,,,,,,,,,,,,,,131,,,131,,,131,131,,,131,,,,,,131", ",,,,,,,,131,,,,,131,131,131,131,,131,131,131,131,,,,,131,131,,,,130", "130,130,131,130,131,131,131,130,130,131,131,,130,,130,130,130,130,130", "130,130,,,,,,130,130,130,130,130,130,130,,,130,,,,,,,130,,,130,130,130", "130,130,130,130,130,,130,130,130,,130,130,130,130,130,,,,,,,,,,,,,,", ",,,,,130,,,130,,,130,130,,,130,,,,,,130,,,,,,,,,130,,,,,130,130,130", "130,,130,130,130,130,,,,,130,130,,,,1149,1149,1149,130,1149,130,130", "130,1149,1149,130,130,,1149,,1149,1149,1149,1149,1149,1149,1149,,,,", ",1149,1149,1149,1149,1149,1149,1149,,,1149,,,,,,,1149,,,1149,1149,1149", "1149,1149,1149,1149,1149,,1149,1149,1149,,1149,1149,1149,1149,1149,", ",,,,,,,,,,,,,,,,,,1149,,,1149,,,1149,1149,,,1149,,,,,,1149,,,,,,,,,1149", ",,,,1149,1149,1149,1149,,1149,1149,1149,1149,,,,,1149,1149,,,,1150,1150", "1150,1149,1150,1149,1149,1149,1150,1150,1149,1149,,1150,,1150,1150,1150", "1150,1150,1150,1150,,,,,,1150,1150,1150,1150,1150,1150,1150,,,1150,", ",,,,,1150,,,1150,1150,1150,1150,1150,1150,1150,1150,,1150,1150,1150", ",1150,1150,1150,1150,1150,,,,,,,,,,,,,,,,,,,,1150,,,1150,,,1150,1150", ",,1150,,,,,,1150,,,,,,,,,1150,,,,,1150,1150,1150,1150,,1150,1150,1150", "1150,,,,,1150,1150,,,,52,52,52,1150,52,1150,1150,1150,52,52,1150,1150", ",52,,52,52,52,52,52,52,52,,,,,,52,52,52,52,52,52,52,,,52,,,,,,,52,,", "52,52,52,52,52,52,52,52,,52,52,52,,52,52,52,52,52,,,,,,,,,,,,,,,,,,", ",52,,,52,,,52,52,,,52,,,,,,52,,,,,,,,,52,,,,,52,52,52,52,,52,52,52,52", ",,,,52,52,,,,129,129,129,52,129,52,52,52,129,129,52,52,,129,,129,129", "129,129,129,129,129,,,,,,129,129,129,129,129,129,129,,,129,,,,,,,129", ",,129,129,129,129,129,129,129,129,,129,129,129,,129,129,129,129,129", ",,,,,,,,,,,,,,,,,,,129,,,129,,,129,129,,,129,,,,,,129,,,,,,,,,129,,", ",,129,129,129,129,,129,129,129,129,,,,,129,129,,,,,,,129,,129,129,129", ",,129,129,124,124,124,124,124,,,,124,124,,,,124,,124,124,124,124,124", "124,124,,,,,,124,124,124,124,124,124,124,,,124,,,,,,124,124,124,124", "124,124,124,124,124,124,124,124,,124,124,124,,124,124,124,124,124,,", ",,,,,,,,,,,,,,,,,124,,,124,,,124,124,,,124,,124,,,,124,,,,,,,,,124,", ",,,124,124,124,124,,124,124,124,124,,,,,124,124,,,,,,124,124,,124,124", "124,,,124,124,1162,1162,1162,,1162,,,,1162,1162,,,,1162,,1162,1162,1162", "1162,1162,1162,1162,,,,,,1162,1162,1162,1162,1162,1162,1162,,,1162,", ",,,,,1162,,,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162", ",1162,1162,1162,1162,1162,,,,,,,,,,,,,,,,,,,,1162,,,1162,,,1162,1162", ",,1162,,1162,,1162,,1162,,,1162,,,,,,1162,,,,,1162,1162,1162,1162,,1162", "1162,1162,1162,,,,,1162,1162,,,,471,471,471,1162,471,1162,1162,1162", "471,471,1162,1162,,471,,471,471,471,471,471,471,471,,,,,,471,471,471", "471,471,471,471,,,471,,,,,,,471,,,471,471,471,471,471,471,471,471,,471", "471,471,,471,471,471,471,471,,,,,,,,,,,,,,,,,,,,471,,,471,,,471,471", ",,471,,,,,,471,,,,,,,,,471,,,,,471,471,471,471,,471,471,471,471,,,,", "471,471,,,,277,277,277,471,277,471,471,471,277,277,471,471,,277,,277", "277,277,277,277,277,277,,,,,,277,277,277,277,277,277,277,,,277,,,,,", ",277,,,277,277,277,277,277,277,277,277,,277,277,277,,277,277,277,277", "277,,,,,,,,,,,,,,,,,,,,277,,,277,,,277,277,,,277,,,,,,277,,,,,,,,,277", ",,,,277,277,277,277,,277,277,277,277,,,,,277,277,,,,,,,277,,277,277", "277,470,,277,277,,,,470,470,470,,,470,470,470,,470,,,,,,,,470,470,470", "470,470,,,,,,,,470,470,,470,470,470,470,470,,,,,,,,,,,,,,,,,,,,,,,470", "470,470,470,470,470,470,470,470,470,470,470,470,470,,,470,470,470,,", "470,,,470,,,470,470,,470,,470,,470,,470,470,,470,470,470,470,470,,470", "470,470,,,,,,,,,,,,,,470,,,470,470,470,470,,470,469,470,,,,,470,469", "469,469,,,469,469,469,,469,,,,,,,,469,469,469,469,469,,,,951,951,951", "951,469,469,,469,469,469,469,469,,,,,951,951,951,,,,,,,,,,,951,951,", ",951,469,469,469,469,469,469,469,469,469,469,469,469,469,469,,,469,469", "469,,,469,,,469,,,469,469,,469,,469,,469,,469,469,,469,469,469,469,469", ",469,469,469,,951,951,951,951,,951,951,951,951,,,,469,951,951,469,469", "469,469,,469,951,469,951,951,951,460,469,7,7,7,7,7,460,460,460,7,7,460", "460,460,7,460,7,7,7,7,7,7,7,460,460,460,460,,7,7,7,7,7,7,7,460,460,7", "460,460,460,460,460,7,7,7,7,7,7,7,7,7,7,7,7,,7,7,7,,7,7,7,7,7,460,460", "460,460,460,460,460,460,460,460,460,460,460,460,,,460,460,460,7,,460", "7,460,460,7,7,460,460,7,460,7,460,,460,7,460,460,,460,460,460,460,460", "7,460,460,460,,7,7,7,7,,7,7,7,7,,,,460,7,7,460,460,,460,,460,7,,7,7", "7,,460,7,7,75,75,75,,75,,,,75,75,,,,75,,75,75,75,75,75,75,75,,,,,,75", "75,75,75,75,75,75,,,75,,,,,,,75,,,75,75,75,75,75,75,75,75,,75,75,75", ",75,75,75,75,75,,,,,,,,,,,,,,,,,,,,75,,,75,,,75,75,,,75,,,,,,75,,,,", ",,,,75,,,,,75,75,75,75,,75,75,75,75,,,,,75,75,75,,,,,75,75,,75,75,75", "64,,75,75,,,,64,64,64,,,64,64,64,,64,,,,,,,,64,,64,64,64,,,,,,,,64,64", ",64,64,64,64,64,,,,,,,,,,,,,,,,,,,,,,,64,64,64,64,64,64,64,64,64,64", "64,64,64,64,,,64,64,64,,,64,,,64,,,64,64,,64,,64,,64,,64,64,,64,64,64", "64,64,,64,,64,,,,,,,,,,,,,,64,,,64,64,64,64,,64,,64,,278,278,278,64", "278,,,,278,278,,,,278,,278,278,278,278,278,278,278,,,,,,278,278,278", "278,278,278,278,,,278,,,,,,,278,,,278,278,278,278,278,278,278,278,,278", "278,278,,278,278,278,278,278,,,,,,,,,,,,,,,,,,,,278,,,278,,,278,278", ",,278,,,,,,278,,,,,,,,,278,,,,,278,278,278,278,,278,278,278,278,,,,", "278,278,,,,221,221,221,278,221,278,278,278,221,221,278,278,,221,,221", "221,221,221,221,221,221,,,,,,221,221,221,221,221,221,221,,,221,,,,,", ",221,,,221,221,221,221,221,221,221,221,,221,221,221,,221,221,221,221", "221,,,,,,,,,,,,,,,,,,,,221,,,221,,,221,221,,,221,,,,,,221,,,,,,,,,221", ",,,,221,221,221,221,,221,221,221,221,,,,,221,221,,,,220,220,220,221", "220,221,221,221,220,220,221,221,,220,,220,220,220,220,220,220,220,,", ",,,220,220,220,220,220,220,220,,,220,,,,,,,220,,,220,220,220,220,220", "220,220,220,,220,220,220,,220,220,220,220,220,,,,,,,,,,,,,,,,,,,,220", ",,220,,,220,220,,,220,,220,,,,220,,,,,,,,,220,,,,,220,220,220,220,,220", "220,220,220,,,,,220,220,,,,800,800,800,220,800,220,220,220,800,800,220", "220,,800,,800,800,800,800,800,800,800,,,,,,800,800,800,800,800,800,800", ",,800,,,,,,,800,,,800,800,800,800,800,800,800,800,,800,800,800,,800", "800,800,800,800,,,,,,,,,,,,,,,,,,,,800,,,800,,,800,800,,,800,,,,,,800", ",,,,,,,,800,,,,,800,800,800,800,,800,800,800,800,,,,,800,800,,,,797", "797,797,800,797,800,800,800,797,797,800,800,,797,,797,797,797,797,797", "797,797,,,,,,797,797,797,797,797,797,797,,,797,,,,,,,797,,,797,797,797", "797,797,797,797,797,,797,797,797,,797,797,797,797,797,,,,,,,,,,,,,,", ",,,,,797,,,797,,,797,797,,,797,,,,,,797,,,,,,,,,797,,,,,797,797,797", "797,,797,797,797,797,,,,,797,797,,,,386,386,386,797,386,797,797,797", "386,386,797,797,,386,,386,386,386,386,386,386,386,,,,,,386,386,386,386", "386,386,386,,,386,,,,,,,386,,,386,386,386,386,386,386,386,386,,386,386", "386,,386,386,386,386,386,,,,,,,,,,,,,,,,,,,,386,,,386,,,386,386,,,386", ",,,,,386,,,,,,,,,386,,,,,386,386,386,386,,386,386,386,386,,,,,386,386", ",,,524,524,524,386,524,386,386,386,524,524,386,386,,524,,524,524,524", "524,524,524,524,,,,,,524,524,524,524,524,524,524,,,524,,,,,,,524,,,524", "524,524,524,524,524,524,524,,524,524,524,,524,524,524,524,524,,,,,,", ",,,,,,,,,,,,,524,,,524,,,524,524,,,524,,,,,,524,,,,,,,,,524,,,,,524", "524,524,524,,524,524,524,524,,,,,524,524,,,,523,523,523,524,523,524", "524,524,523,523,524,524,,523,,523,523,523,523,523,523,523,,,,,,523,523", "523,523,523,523,523,,,523,,,,,,,523,,,523,523,523,523,523,523,523,523", ",523,523,523,,523,523,523,523,523,,,,,,,,,,,,,,,,,,,,523,,,523,,,523", "523,,,523,,,,,,523,,,,,,,,,523,,,,,523,523,523,523,,523,523,523,523", ",,,,523,523,,,,522,522,522,523,522,523,523,523,522,522,523,523,,522", ",522,522,522,522,522,522,522,,,,,,522,522,522,522,522,522,522,,,522", ",,,,,,522,,,522,522,522,522,522,522,522,522,,522,522,522,,522,522,522", "522,522,,,,,,,,,,,,,,,,,,,,522,,,522,,,522,522,,,522,,,,,,522,,,,,,", ",,522,,,,,522,522,522,522,,522,522,522,522,,,,,522,522,,,,520,520,520", "522,520,522,522,522,520,520,522,522,,520,,520,520,520,520,520,520,520", ",,,,,520,520,520,520,520,520,520,,,520,,,,,,,520,,,520,520,520,520,520", "520,520,520,520,520,520,520,,520,520,520,520,520,,,,,,,,,,,,,,,,,,,", "520,,,520,,,520,520,,,520,,520,,520,,520,,,520,,,,,,520,,,,,520,520", "520,520,,520,520,520,520,,,,,520,520,,,,219,219,219,520,219,520,520", "520,219,219,520,520,,219,,219,219,219,219,219,219,219,,,,,,219,219,219", "219,219,219,219,,,219,,,,,,,219,,,219,219,219,219,219,219,219,219,,219", "219,219,,219,219,219,219,219,,,,,,,,,,,,,,,,,,,,219,,,219,,,219,219", ",,219,,219,,,,219,,,,,,,,,219,,,,,219,219,219,219,,219,219,219,219,", ",,,219,219,,,,510,510,510,219,510,219,219,219,510,510,219,219,,510,", "510,510,510,510,510,510,510,,,,,,510,510,510,510,510,510,510,,,510,", ",,,,,510,,,510,510,510,510,510,510,510,510,,510,510,510,,510,510,510", "510,510,,,,,,,,,,,,,,,,,,,,510,,,510,,,510,510,,,510,,,,,,510,,,,,,", ",,510,,,,,510,510,510,510,,510,510,510,510,,,,,510,510,,,,1017,1017", "1017,510,1017,510,510,510,1017,1017,510,510,,1017,,1017,1017,1017,1017", "1017,1017,1017,,,,,,1017,1017,1017,1017,1017,1017,1017,,,1017,,,,,,", "1017,,,1017,1017,1017,1017,1017,1017,1017,1017,,1017,1017,1017,,1017", "1017,,,1017,,,,,,,,,,,,,,,,,,,,1017,,,1017,,,1017,1017,,,1017,,,,,,", ",,,,,,,,,,,,,1017,1017,1017,1017,,1017,1017,1017,1017,,,,,1017,1017", ",,,1081,1081,1081,1017,1081,1017,1017,1017,1081,1081,,,,1081,,1081,1081", "1081,1081,1081,1081,1081,,,,,,1081,1081,1081,1081,1081,1081,1081,,,1081", ",,,,,,1081,,,1081,1081,1081,1081,1081,1081,1081,1081,,1081,1081,1081", ",1081,1081,,,1081,,,,,,,,,,,,,,,,,,,,1081,,,1081,,,1081,1081,,,1081", ",,,,,,,,,,,,,,,,,,,1081,1081,1081,1081,,1081,1081,1081,1081,,,,,1081", "1081,,,,341,341,341,1081,341,1081,1081,1081,341,341,,,,341,,341,341", "341,341,341,341,341,,,,,,341,341,341,341,341,341,341,,,341,,,,,,,341", ",,341,341,341,341,341,341,341,341,,341,341,341,,341,341,,,341,,,,,,", ",,,,,,,,,,,,,341,,,341,,,341,341,,,341,,,1214,,1214,1214,1214,1214,1214", ",,,,,,,,1214,,341,341,341,341,,341,341,341,341,,,,,341,341,,,,341,,1214", "341,,341,341,341,588,588,588,,588,1214,1214,,588,588,1214,,,588,,588", "588,588,588,588,588,588,,,,,,588,588,588,588,588,588,588,,,588,,,,,", ",588,,,588,588,588,588,588,588,588,588,,588,588,588,,588,588,,,588,", ",,,,,,,,,,,,,,,,,,588,,,588,,,588,588,,,588,,,,,,,,,,,,,,,,,,,,588,588", "588,588,,588,588,588,588,,,,,588,588,,,,40,40,40,588,40,588,588,588", "40,40,,,,40,,40,40,40,40,40,40,40,,,,,,40,40,40,40,40,40,40,,,40,,,", ",,,40,,,40,40,40,40,40,40,40,40,,40,40,40,,40,40,,,40,,,,,,,,,,,,,,", ",,,,,40,,,40,,,40,40,,,40,,,1210,,1210,1210,1210,1210,1210,,,,,,,,,1210", ",40,40,40,40,,40,40,40,40,,,,,40,40,,,,40,,1210,40,,40,40,40,803,803", "803,,803,1210,1210,,803,803,1210,,,803,,803,803,803,803,803,803,803", ",,,,,803,803,803,803,803,803,803,,,803,,,,,,,803,,,803,803,803,803,803", "803,803,803,,803,803,803,,803,803,,,803,,,,,,,,,,,,,,,,,,,,803,,,803", ",,803,803,,,803,,,,,,,,,,,,,,,,,,,,803,803,803,803,,803,803,803,803", ",,,,803,803,,,,360,360,360,803,360,803,803,803,360,360,,,,360,,360,360", "360,360,360,360,360,,,,,,360,360,360,360,360,360,360,,,360,,,,,,,360", ",,360,360,360,360,360,360,360,360,,360,360,360,,360,360,,,360,,,,,,", ",,,,,,,,,,,,,360,,,360,,,360,360,,,360,,,,,,,,,,,,,,,,,,,,360,360,360", "360,,360,360,360,360,,,,,360,360,,,,1144,1144,1144,360,1144,360,360", "360,1144,1144,,,,1144,,1144,1144,1144,1144,1144,1144,1144,,,,,,1144", "1144,1144,1144,1144,1144,1144,,,1144,,,,,,,1144,,,1144,1144,1144,1144", "1144,1144,1144,1144,,1144,1144,1144,,1144,1144,,,1144,,,,,,,,,,,,,,", ",,,,,1144,,,1144,,,1144,1144,,,1144,,,,,,,,,,,,,,,,,,,,1144,1144,1144", "1144,,1144,1144,1144,1144,,,,,1144,1144,,,,77,77,77,1144,77,1144,1144", "1144,77,77,,,,77,,77,77,77,77,77,77,77,,,,,,77,77,77,77,77,77,77,,,77", ",,,,,,77,,,77,77,77,77,77,77,77,77,,77,77,77,,77,77,,,77,,,,,,,,,,,", ",,,,,77,,,77,,,77,,,77,77,,,77,,,,,,,,,,,,,,,,,,,,77,77,77,77,,77,77", "77,77,,,,,77,77,,,,814,814,814,77,814,77,77,77,814,814,,,,814,,814,814", "814,814,814,814,814,,,,,,814,814,814,814,814,814,814,,,814,,,,,,,814", ",,814,814,814,814,814,814,814,814,,814,814,814,,814,814,,,814,,,,,,", ",,,,,,,,,,,,,814,,,814,,,814,814,,,814,,,,,,,,,,,,,,,,,,,,814,814,814", "814,,814,814,814,814,,,,,814,814,,,,597,597,597,814,597,814,814,814", "597,597,,,,597,,597,597,597,597,597,597,597,,,,,,597,597,597,597,597", "597,597,,,597,,,,,,,597,,,597,597,597,597,597,597,597,597,,597,597,597", ",597,597,,,597,,,,,,,,,,,,,,,,,,,,597,,,597,,,597,597,,,597,,,,,,,,", ",,,,,,,,,,,597,597,597,597,,597,597,597,597,,,,,597,597,,,,39,39,39", "597,39,597,597,597,39,39,,,,39,,39,39,39,39,39,39,39,,,,,,39,39,39,39", "39,39,39,,,39,,,,,,,39,,,39,39,39,39,39,39,39,39,,39,39,39,,39,39,,", "39,,,,,,,,,,,,,,,,,,,,39,,,39,,,39,39,,,39,,39,,,,,,,,,,,,,,,,,,39,39", "39,39,,39,39,39,39,,,,,39,39,,,,76,76,76,39,76,39,39,39,76,76,,,,76", ",76,76,76,76,76,76,76,,,,,,76,76,76,76,76,76,76,,,76,,,,,,,76,,,76,76", "76,76,76,76,76,76,,76,76,76,,76,76,,,76,,,,,,,,,,,,,,,,,,,,76,,,76,", ",76,76,,,76,,76,,,,,,,,,,,,,,,,,,76,76,76,76,,76,76,76,76,,,,,76,76", ",,,78,78,78,76,78,76,76,76,78,78,,,,78,,78,78,78,78,78,78,78,,,,,,78", "78,78,78,78,78,78,,,78,,,,,,,78,,,78,78,78,78,78,78,78,78,,78,78,78", ",78,78,,,78,,,,,,,,,,,,,,,,,,,,78,,,78,,,78,78,,,78,,,,,,,,,,,,,,,,", ",,,78,78,78,78,,78,78,78,78,,,,,78,78,,,,,,,78,,78,78,78,10,10,10,10", "10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,,,,10,10", "10,10,10,10,10,10,10,10,,,,,,10,10,10,10,10,10,10,10,10,10,,10,,,,,", ",,10,10,,10,10,10,10,10,10,10,,,10,10,,,,10,10,10,10,,,,,,,,,,,,,,10", "10,,10,10,10,10,10,10,10,10,10,10,10,10,,,10,10,,,,,,,,,,,,,,10,427", "427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427", "427,427,427,427,427,427,,,,427,427,427,427,427,427,427,427,427,427,", ",,,,427,427,427,427,427,427,427,427,427,,,427,,,,,,,,427,427,,427,427", "427,427,427,427,427,,,427,427,,,,427,427,427,427,,,,,,,,,,,,,,427,427", ",427,427,427,427,427,427,427,427,427,427,427,427,,,427,427,,,,,,,,,", ",,,,427,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667", "667,667,667,667,667,667,667,667,667,,,,667,667,667,667,667,667,667,667", "667,667,,,,,,667,667,667,667,667,667,667,667,667,,,667,,,,,,,,667,667", ",667,667,667,667,667,667,667,,,667,667,,,,667,667,667,667,,,,,,,,,,", ",,,667,667,,667,667,667,667,667,667,667,667,667,667,667,667,,,667,667", ",,,,,,,,,,,,,667,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11", "11,11,11,11,11,11,11,,,,11,11,11,11,11,11,11,11,11,11,,,,,,11,11,11", "11,11,11,11,11,11,,,11,,,,,,,,11,11,,11,11,11,11,11,11,11,,,11,11,,", ",11,11,11,11,,,,,,,,,,,,,,11,11,,11,11,11,11,11,11,11,11,11,11,11,11", ",,11,11,,,,,,,,,,,,,,11,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26", "26,26,26,26,26,26,26,26,26,,,,26,26,26,26,26,26,26,26,26,26,,,,,,26", "26,26,26,26,26,26,26,26,26,26,26,,26,,,,,,26,26,,26,26,26,26,26,26,26", ",,26,26,,,,26,26,26,26,,,,,,26,,,,,,,,26,26,,26,26,26,26,26,26,26,26", "26,26,26,26,,,26,753,753,753,753,,,,,,1026,,1026,1026,1026,1026,1026", "753,753,753,753,,,,753,1026,,,,,753,753,,,753,,,,,,,,,,,,,1026,,,,,", ",753,,,753,1026,1026,,753,,1026,753,,,,,,,,,,,,,,,,753,,,,753,753,753", "753,,753,753,753,753,,,,,753,753,1205,1205,1205,1205,1026,,753,,753", "753,753,,,753,753,,1205,1205,1205,1205,,,1208,1205,1208,1208,1208,1208", "1208,1205,1205,,,1205,,,,1208,,,,,,,,,,,,,,,,1205,,,1205,,,1208,1205", ",,1205,,,,,1208,1208,1208,1208,,,,1208,,,,1205,,,,1205,1205,1205,1205", ",1205,1205,1205,1205,,,,,1205,1205,1129,1129,1129,1129,,,1205,,1205", "1205,1205,,,1205,1205,,1129,1129,1129,1129,,,1138,1129,1138,1138,1138", "1138,1138,1129,1129,,,1129,,,,1138,,,,,,,,,,,,,,,,1129,,,1129,,,1138", "1129,,,1129,,1129,,,1138,1138,1138,1138,,,,1138,,,,1129,,,,1129,1129", "1129,1129,,1129,1129,1129,1129,,,,,1129,1129,989,989,989,989,,,1129", ",1129,1129,1129,,,1129,1129,,989,989,989,989,,,,989,989,,,,,989,989", ",,989,989,,,,,,,,,,,,,,,,,,,989,,,989,,,,989,,,989,,989,,,,,,,989,,", ",,,,989,,,,989,989,989,989,,989,989,989,989,,,,,989,989,942,942,942", "942,,,989,,989,989,989,,,989,989,,942,942,942,942,,,1135,942,1135,1135", "1135,1135,1135,942,942,,,942,,,,1135,,,,,,,,,,,,,,,,942,,,942,,,1135", "942,,,942,,,,,1135,1135,1135,1135,,,,1135,,,,942,,,,942,942,942,942", ",942,942,942,942,,,,,942,942,924,924,924,924,,,942,,942,942,942,,,942", "942,,924,924,924,924,,,1231,924,1231,1231,1231,1231,1231,924,924,,,924", ",,,1231,,,,,,,,,,,,,,,,924,,,924,,,1231,924,,,924,,924,,,,,1231,1231", ",,,1231,,,,924,,,,924,924,924,924,,924,924,924,924,,,,,924,924,745,745", "745,745,,,924,,924,924,924,,,924,924,,745,745,745,745,,,,745,,,,,,745", "745,,,745,,,,,,,,,,,,,,,,,,,,745,,,745,,,,745,,,745,,745,,,,,,,1166", ",1166,1166,1166,1166,1166,745,,,,745,745,745,745,1166,745,745,745,745", ",,,,745,745,745,943,943,943,943,,745,,745,745,745,1166,,745,745,,,943", "943,943,943,,1166,1166,943,,,1166,,,943,943,,,943,,,,,,,,,,,,,,,,,,", ",943,,,943,,,,943,,,943,,,1166,,,,,,,,,,,,,943,,,,943,943,943,943,,943", "943,943,943,,,,,943,943,930,930,930,930,,,943,,943,943,943,,,943,943", ",930,930,930,930,,,,930,930,,,,,930,930,,,930,930,,,,,,,,,,,,,,,,,,", "930,,,930,,,,930,,,930,,930,,,,,,,930,,,,,,,930,,,,930,930,930,930,", "930,930,930,930,,,,,930,930,929,929,929,929,,,930,,930,930,930,,,930", "930,,929,929,929,929,,,,929,929,,,,,929,929,,,929,929,,,,,,,,,,,,,,", ",,,,929,,,929,,,,929,,,929,,929,,,,,,,929,,,,,,,929,,,,929,929,929,929", ",929,929,929,929,,,,,929,929,,,,,,,929,,929,929,929,,,929,929,780,780", "780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780", "780,780,780,780,780,,,,780,780,780,780,780,780,780,780,780,780,,,,,", "780,780,780,780,780,780,780,780,780,,,780,,,,,,,,780,780,,780,780,780", "780,780,780,780,,,780,780,,,,780,780,780,780,,,,,,,,,,,,,,780,780,,780", "780,780,780,780,780,780,780,780,780,780,780,,,780,528,528,528,528,,", "1212,,1212,1212,1212,1212,1212,,,,528,528,528,528,,1212,,528,528,,,", ",528,528,,,528,528,,,,,,,,,1212,,,,,,,,,,528,1212,1212,528,,,1212,528", ",,528,,528,,,,,,,528,,,,,,,528,,,,528,528,528,528,,528,528,528,528,", ",,,528,528,527,527,527,527,,,528,,528,528,528,,,528,528,,527,527,527", "527,,,,527,527,,,,,527,527,,,527,527,,,,,,,,,,,,,,,,,,,527,,,527,,,", "527,,,527,,527,,,,,,,527,,,,,,,527,,,,527,527,527,527,,527,527,527,527", ",,,,527,527,1173,1173,1173,1173,,,527,,527,527,527,,,527,527,,1173,1173", "1173,1173,,,,1173,,,,,,1173,1173,,,1173,,,,,,,,,,,,,,,,,,,,1173,,,1173", ",,,1173,,,1173,,,,,,,,,,,,,,,,1173,,,,1173,1173,1173,1173,,1173,1173", "1173,1173,,,,,1173,1173,1116,1116,1116,1116,,,1173,,1173,1173,1173,", ",1173,1173,,1116,1116,1116,1116,,,,1116,,,,,,1116,1116,,,1116,,,,,,", ",,,,,,,,,,,,,1116,,,1116,,,,1116,,,1116,,,,,,,,,,,,,,,,1116,,,,1116", "1116,1116,1116,,1116,1116,1116,1116,,,,,1116,1116,926,926,926,926,,", "1116,,1116,1116,1116,,,1116,1116,,926,926,926,926,,,,926,,,,,,926,926", ",,926,,,,,,,,,,,,,,,,,,,,926,,,926,,,,926,,,926,,,,,,,,,,,,,,,,926,", ",,926,926,926,926,,926,926,926,926,,,,,926,926,1125,1125,1125,1125,", ",926,,926,926,926,,,926,926,,1125,1125,1125,1125,,,,1125,,,,,,1125,1125", ",,1125,,,,,,,,,,,,,,,,,,,,1125,,,1125,,,,1125,,,1125,,,,,,,,,,,,,,,", "1125,,,,1125,1125,1125,1125,,1125,1125,1125,1125,,,,,1125,1125,936,936", "936,936,,,1125,,1125,1125,1125,,,1125,1125,,936,936,936,936,,,,936,", ",,,,936,936,,,936,,,,,,,,763,763,763,763,,,,,,,,,936,,,936,763,763,763", "936,,,936,,936,,,,,763,763,,,763,,,,,936,,,,936,936,936,936,,936,936", "936,936,,,,,936,936,,,,,,,936,,936,936,936,,,936,936,233,,233,233,233", "233,233,,,,,763,763,763,763,233,763,763,763,763,,,,,763,763,950,950", "950,950,,,763,,763,763,763,233,,,,,950,950,950,,233,233,233,233,,,,233", ",950,950,,,950,,,,,,,,,,,,705,,705,705,705,705,705,,,,,,,,,705,,,,,", "234,233,234,234,234,234,234,,,,,,,,,234,705,950,950,950,950,,950,950", "950,950,,705,705,,950,950,705,,,,,234,950,,950,950,950,,,,234,234,234", "234,,,409,234,409,409,409,409,409,,1020,,1020,1020,1020,1020,1020,409", ",,,,705,,,1020,,644,,644,644,644,644,644,,,,,,409,409,,644,234,,,,1020", "409,409,409,409,,,,409,1020,1020,1020,1020,,,,1020,644,,,,,,,,,644,644", "644,644,,,1024,644,1024,1024,1024,1024,1024,,,,,,,,,1024,409,,,,,,,", "1020,,,,,,,,,,,,,1024,,,,644,,,,,,,1024,1024,675,675,,1024,675,,,,,", ",,675,675,,675,675,675,675,675,675,675,,,675,675,,,,675,675,675,675", ",,,,,675,,,,,1024,,,675,675,,675,675,675,675,675,675,675,675,675,675", "675,675,636,636,675,,636,,,,,,,,636,636,,636,636,636,636,636,636,636", ",,636,636,,,,636,636,636,636,,,,,,636,,,,,,,,636,636,,636,636,636,636", "636,636,636,636,636,636,636,636,629,629,636,,629,,,,,,,,629,629,,629", "629,629,629,629,629,629,,,629,629,,,,629,629,629,629,,,,,,629,,,,,,", ",629,629,,629,629,629,629,629,629,629,629,629,629,629,629,226,226,629", ",226,,,,,,,,226,226,,226,226,226,226,226,226,226,,,226,226,,,,226,226", "226,226,,,,,,226,,,,,,,,226,226,,226,226,226,226,226,226,226,226,226", "226,226,226,602,602,226,,602,,,,,,,,602,602,,602,602,602,602,602,602", "602,,,602,602,,,,602,602,602,602,,,,,,602,,,,,,,,602,602,,602,602,602", "602,602,602,602,602,602,602,602,602,637,637,602,,637,,,,,,,,637,637", ",637,637,637,637,637,637,637,,,637,637,,,,637,637,637,637,,,,,,637,", ",,,,,,637,637,,637,637,637,637,637,637,637,637,637,637,637,637,225,225", "637,,225,,,,,,,,225,225,,225,225,225,225,225,225,225,,,225,225,,,,225", "225,225,225,,,,,,225,,,,,,,,225,225,,225,225,225,225,225,225,225,225", "225,225,225,225,302,302,225,,302,,,,,,,,302,302,,302,302,302,302,302", "302,302,,,302,302,,,,302,302,302,302,,,,,,,,,,,,,,302,302,,302,302,302", "302,302,302,302,302,302,302,302,302,519,519,302,,519,,,,,,,,519,519", ",519,519,519,519,519,519,519,,,519,519,,,,519,519,519,519,,,,,,519,", ",,,,,,519,519,,519,519,519,519,519,519,519,519,519,519,519,519,518,518", "519,,518,,,,,,,,518,518,,518,518,518,518,518,518,518,,,518,518,,,,518", "518,518,518,,,,,,518,,,,,,,,518,518,,518,518,518,518,518,518,518,518", "518,518,518,518,591,591,518,,591,,,,,,,,591,591,,591,591,591,591,591", "591,591,,,591,591,,,,591,591,591,591,,,,,,591,,,,,,,,591,591,,591,591", "591,591,591,591,591,591,591,591,591,591,592,592,591,,592,,,,,,,,592", "592,,592,592,592,592,592,592,592,,,592,592,,,,592,592,592,592,,,,,,592", ",,,,,,,592,592,,592,592,592,592,592,592,592,592,592,592,592,592,1163", "1163,592,,1163,,,,,,,,1163,1163,,1163,1163,1163,1163,1163,1163,1163", ",,1163,1163,,,,1163,1163,1163,1163,,,,,,1163,,,,,,,,1163,1163,,1163", "1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,674,674,1163", ",674,,,,,,,,674,674,,674,674,674,674,674,674,674,,,674,674,,,,674,674", "674,674,,,,,,674,,,,,,,,674,674,,674,674,674,674,674,674,674,674,674", "674,674,674,1164,1164,674,,1164,,,,,,,,1164,1164,,1164,1164,1164,1164", "1164,1164,1164,,,1164,1164,,,,1164,1164,1164,1164,,,,,,1164,,,,,,,,1164", "1164,,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,630", "630,1164,,630,,,,,,,,630,630,,630,630,630,630,630,630,630,,,630,630", ",,,630,630,630,630,,,,,,630,,,,,,,,630,630,,630,630,630,630,630,630", "630,630,630,630,630,630,1188,1188,630,,1188,,,,,,,,1188,1188,,1188,1188", "1188,1188,1188,1188,1188,,,1188,1188,,,,1188,1188,1188,1188,,,,,,1188", ",,,,,,,1188,1188,,1188,1188,1188,1188,1188,1188,1188,1188,1188,1188", "1188,1188,601,601,1188,,601,,,,,,,,601,601,,601,601,601,601,601,601", "601,,,601,601,,,,601,601,601,601,,,,,,601,,,,,,,,601,601,,601,601,601", "601,601,601,601,601,601,601,601,601,,,601"]; + racc_action_check = (arr = $$$('Array').$new(28717, nil)); idx = 0; $send(clist, 'each', [], function $Ruby31$4(str){ @@ -20336,10 +20289,10 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ $writer[$rb_minus($writer["length"], 1)]; }; return (idx = $rb_plus(idx, 1));}, 1);}, 1); - racc_action_pointer = [nil, 1530, 1699, 101, nil, 482, nil, 20901, 1396, 63, 25127, 25255, 87, nil, 108, 123, 470, 190, 962, 122, 162, 700, nil, -35, 16902, 1267, 26590, 276, nil, 598, nil, 307, 8439, 8549, 8814, 10017, 10148, nil, 4147, 24860, 24328, nil, 206, 690, 444, 339, 12923, 13185, 283, 21962, 19796, 979, 20758, 303, 845, nil, nil, nil, nil, nil, nil, nil, nil, nil, 15455, nil, 15183, 15040, 14385, 148, nil, 14123, 21176, nil, nil, 13980, 23542, 24066, 24197, nil, nil, nil, nil, nil, nil, 584, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 110, nil, nil, 222, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 20070, nil, nil, nil, nil, 19927, 19665, 19272, 19141, 19010, nil, 4867, nil, 585, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 302, nil, 979, 22093, 21700, 21569, 21307, 13849, 13718, 28287, 27921, nil, nil, 315, 2707, 332, nil, 27662, 580, 338, 1267, 11851, 11196, 11065, nil, nil, 1106, 138, 142, 453, 193, 372, 446, nil, 9886, 386, 299, 2419, 449, nil, nil, 7250, 7119, 6583, 6452, 6321, 6190, 6059, 5535, 18343, 18212, 17688, 17557, 17426, 16509, 16116, 15985, 15592, 14909, 14778, 21831, 21438, 13447, nil, nil, nil, nil, 13316, nil, nil, 532, 308, 563, 587, 488, 673, 710, 747, 755, 354, nil, nil, nil, 15854, nil, nil, 27860, nil, nil, 472, 17033, 17164, nil, nil, nil, nil, nil, nil, nil, 17295, nil, 2131, nil, 478, 480, nil, 17819, 534, 17950, nil, nil, 18081, 5797, nil, nil, 563, nil, 6726, 1540, 517, 497, 5011, 533, 582, 554, 23403, 3859, 873, 879, 878, 644, 995, nil, 618, 585, -24, 628, 632, nil, nil, nil, 644, 275, 608, 23141, nil, 666, 972, 4435, 5273, 693, nil, 709, 12530, nil, 12661, 2275, 1684, 653, nil, 593, 597, 690, 692, 468, 725, nil, 719, 35, 36, 22748, 4723, 4579, 72, 797, 686, -18, -19, 411, 783, 25, 822, nil, nil, 1114, 802, 342, nil, 806, nil, 742, 15314, nil, 13552, nil, 399, 366, 402, 469, 410, -32, -34, 394, nil, nil, nil, nil, nil, nil, nil, 740, 24999, nil, nil, nil, nil, 742, nil, 813, 731, 14254, 733, nil, nil, 723, nil, 788, -56, 835, nil, nil, 1411, nil, nil, nil, nil, nil, 1699, 750, nil, 749, 751, 388, 425, 21042, nil, nil, nil, 0, 695, 796, nil, nil, 20621, 20485, 20344, 887, 887, nil, nil, 768, 782, 786, nil, nil, 790, 792, 793, nil, nil, nil, nil, nil, nil, nil, nil, nil, 783, 3269, nil, nil, 18867, nil, nil, nil, 0, nil, nil, nil, 880, nil, nil, 882, 571, 23010, 926, nil, nil, nil, -26, nil, 859, 28226, 28043, 22879, -82, 22617, 22486, 22355, 806, 807, 26997, 26899, 3859, 4867, 3322, 1018, 887, 888, 893, 894, 5404, 5535, 5666, 5142, 4723, 4579, 4291, 4147, 4003, 3455, 3311, 3715, 3427, 2275, 5011, nil, 44, nil, 13588, nil, nil, nil, nil, 13054, 843, 841, 845, nil, nil, nil, 848, nil, nil, 12792, nil, 12399, nil, 12268, nil, 327, nil, nil, nil, 12125, 1108, nil, 858, 858, nil, nil, 859, 23804, 863, 11982, 28348, 28409, 968, 914, nil, nil, 23935, 871, nil, 11720, 28775, 28836, 11589, 3571, 2707, 11327, 996, 877, 926, nil, 10934, nil, nil, 10803, nil, nil, nil, 3571, 1007, nil, 3427, 90, 1013, 1039, 11, 1044, 10672, 10541, 28470, 28592, 7, nil, nil, 893, nil, 28714, 28653, 10279, nil, nil, 60, 1843, nil, 692, nil, nil, nil, nil, 1177, nil, nil, nil, 938, nil, nil, 369, nil, 324, nil, nil, 924, nil, 926, nil, nil, nil, 25383, nil, 9755, 929, 9612, 9481, 9219, 28531, 28165, 8957, 8683, 724, 972, 8036, 7905, 7774, 7643, 972, nil, nil, 7512, 7381, 973, nil, 1030, 1555, 1061, 6988, nil, nil, 788, nil, nil, 269, 27654, nil, 27562, nil, 26660, nil, 6857, nil, 3298, nil, 944, 945, 1253, 951, nil, nil, nil, nil, nil, nil, 1040, 1843, nil, nil, nil, 339, 360, 473, 334, 955, 5928, 5666, nil, -72, nil, nil, nil, nil, 981, nil, nil, nil, -34, 26447, 189, nil, 958, 1041, 960, nil, nil, 26673, nil, nil, 1, nil, nil, 675, nil, nil, 27332, 27562, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 1447, 590, nil, nil, 966, 26816, nil, 1094, nil, 1078, -13, nil, nil, 16247, nil, 993, 1000, 1102, nil, 980, nil, 1043, 14647, nil, nil, 22224, nil, 429, 24598, 998, nil, 1002, 233, 250, 1046, 181, 1139, 1047, 1026, 24729, nil, 1099, 249, nil, nil, nil, 68, 614, nil, 1165, nil, nil, nil, nil, nil, 1183, 1185, nil, nil, 26, 1065, 8, -5, 232, -4, 1123, 970, 1112, nil, 1072, 2851, 14516, nil, 1195, -25, 1080, nil, nil, nil, nil, nil, 2563, nil, nil, nil, nil, nil, nil, nil, nil, 1079, 15723, 1083, 416, 392, 583, 834, nil, 1987, 16378, nil, 1084, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 16640, 16771, 1211, nil, 3715, 1088, 1135, nil, nil, 1092, nil, 1176, nil, nil, 1096, 1104, nil, 1109, 1114, nil, 1116, nil, nil, 1120, 1109, 3557, nil, nil, 18474, 18605, 18736, 5142, 5273, 5404, 377, 26349, 1202, 26251, -68, 97, 26153, 26055, 335, -69, 1125, 1127, nil, 25859, nil, 1127, 902, nil, 1151, 25761, 25663, nil, 498, 1178, 331, nil, nil, 27464, 27430, nil, nil, nil, nil, 8167, nil, nil, nil, nil, nil, 8298, nil, nil, 1165, nil, nil, 1162, 1146, nil, nil, 763, 2131, nil, nil, nil, nil, 1146, 136, nil, nil, nil, 1271, nil, 9088, 1274, nil, nil, 25565, 9350, 4291, -1, 1283, nil, 1284, -77, 1411, nil, nil, nil, nil, 1159, 1205, 1176, 1176, 227, nil, nil, 10410, 3139, 2563, nil, 2995, nil, nil, -10, 23272, nil, nil, 27734, nil, 27716, nil, 27680, nil, 27588, nil, nil, nil, nil, 1190, 1194, 2995, 2851, 11458, nil, 1211, nil, nil, nil, nil, 1217, 1218, 1221, 1223, 1227, 1230, nil, nil, nil, 1274, 1230, 121, nil, 1241, nil, nil, -70, 1246, nil, nil, nil, nil, nil, nil, 1290, 2419, 1987, nil, nil, 1248, 1253, nil, 1258, 1259, 1260, nil, 1285, 1267, 1256, 23673, nil, nil, nil, nil, 9, nil, 13, 17, nil, 268, nil, nil, nil, 1393, 4003, 3139, 2117, nil, nil, nil, 1555, 32, 33, 667, 1353, 34, nil, 1276, 1285, 1286, 1287, 3308, 3413, 27193, nil, nil, nil, nil, nil, nil, nil, 1290, 25467, nil, 257, nil, 27291, nil, nil, 1300, nil, nil, 25666, nil, nil, 13607, nil, 23450, nil, nil, 1315, 24467, 1116, 1370, 3283, nil, 19403, 19534, nil, nil, nil, nil, 1314, 1438, 609, nil, nil, nil, 1441, 20213, 28104, 27982, 79, 13581, nil, nil, nil, nil, 1317, 1318, 27095, 1319, nil, nil, 1320, nil, nil, 1334, 1338, 1355, 1358, nil, 1359, nil, 555, 27799, nil, 574, 4435, nil, nil, nil, nil, nil, 1973, nil, 1365, 109, 142, 143, 221, 1364, 25957, 1372, nil, 25470, nil, 25862, nil, 25764, nil, 24375, nil, nil, 1418, 1421, nil, 375, nil, 145, nil, 1382, 1390, 1391, 1392, nil, nil, nil, 25960, nil, nil, nil, nil, -104, nil]; - racc_action_default = [-1, -738, -4, -738, -2, -723, -5, -738, -8, -738, -738, -738, -738, -31, -738, -738, -36, -738, -738, -632, -632, -310, -52, -725, -738, -61, -738, -69, -70, -71, -75, -286, -286, -286, -323, -350, -351, -87, -13, -91, -99, -101, -738, -619, -620, -738, -738, -738, -738, -738, -738, -239, -738, -725, -257, -301, -302, -303, -304, -305, -306, -307, -308, -309, -711, -312, -316, -737, -700, -331, -333, -738, -738, -63, -63, -723, -738, -738, -738, -352, -353, -355, -412, -556, -557, -558, -559, -580, -562, -563, -582, -584, -567, -572, -576, -578, -594, -595, -596, -580, -598, -600, -601, -602, -603, -709, -608, -609, -710, -611, -612, -613, -614, -615, -616, -617, -618, -623, -624, 1231, -3, -724, -733, -734, -735, -7, -738, -738, -738, -738, -738, -9, -4, -19, -738, -130, -131, -132, -133, -134, -135, -136, -140, -141, -142, -143, -144, -145, -146, -147, -148, -149, -150, -151, -152, -153, -154, -155, -156, -157, -158, -159, -160, -161, -162, -163, -164, -165, -166, -167, -168, -169, -170, -171, -172, -173, -174, -175, -176, -177, -178, -179, -180, -181, -182, -183, -184, -185, -186, -187, -188, -189, -190, -191, -192, -193, -194, -195, -196, -197, -198, -199, -200, -201, -202, -203, -204, -205, -206, -207, -208, -209, -210, -24, -137, -13, -738, -738, -738, -738, -738, -276, -738, -738, -721, -722, -738, -13, -631, -629, -655, -655, -738, -13, -738, -738, -725, -726, -56, -738, -619, -620, -738, -310, -738, -738, -245, -738, -632, -632, -13, -738, -57, -59, -222, -223, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -738, -258, -259, -260, -261, -738, -65, -66, -738, -130, -131, -170, -171, -172, -188, -193, -200, -203, -619, -620, -698, -738, -421, -423, -738, -719, -720, -76, -276, -738, -330, -427, -436, -438, -82, -433, -83, -725, -84, -264, -281, -291, -291, -285, -289, -292, -738, -580, -702, -706, -738, -85, -86, -723, -14, -738, -17, -738, -89, -13, -725, -738, -92, -95, -13, -107, -108, -738, -738, -115, -323, -326, -725, -738, -632, -632, -350, -351, -354, -434, -738, -97, -738, -103, -320, -738, -224, -225, -599, -233, -234, -738, -246, -738, -13, -314, -725, -265, -730, -730, -738, -738, -730, -738, -332, -62, -738, -738, -738, -13, -13, -723, -738, -724, -619, -620, -738, -738, -310, -738, -365, -366, -125, -126, -738, -128, -738, -310, -627, -738, -346, -655, -560, -738, -738, -738, -738, -738, -738, -738, -738, -6, -736, -25, -26, -27, -28, -29, -738, -738, -21, -22, -23, -138, -738, -32, -35, -297, -738, -738, -296, -33, -738, -37, -738, -310, -49, -51, -211, -269, -292, -53, -54, -38, -212, -269, -725, -277, -291, -291, -712, -713, -286, -431, -714, -715, -713, -712, -286, -430, -432, -714, -715, -738, -548, -738, -378, -379, -725, -697, -697, -637, -638, -640, -640, -640, -654, -656, -657, -658, -659, -660, -661, -662, -663, -664, -738, -666, -668, -670, -675, -677, -678, -681, -686, -688, -689, -691, -692, -693, -695, -738, -738, -738, -48, -219, -55, -725, -329, -738, -738, -738, -276, -320, -738, -738, -738, -738, -738, -738, -738, -220, -221, -226, -227, -228, -229, -230, -231, -235, -236, -237, -238, -240, -241, -242, -243, -244, -247, -248, -249, -250, -725, -262, -67, -725, -442, -286, -712, -713, -73, -77, -656, -725, -291, -725, -287, -440, -442, -725, -325, -282, -738, -283, -738, -288, -738, -293, -738, -705, -708, -12, -724, -16, -18, -725, -88, -318, -104, -93, -738, -725, -276, -738, -738, -114, -738, -631, -599, -738, -100, -105, -738, -738, -738, -738, -263, -251, -738, -738, -725, -738, -266, -732, -731, -268, -732, -321, -322, -701, -13, -356, -357, -13, -738, -738, -738, -738, -738, -738, -276, -738, -738, -320, -63, -125, -126, -127, -738, -738, -276, -342, -625, -738, -13, -413, -655, -416, -561, -581, -586, -738, -588, -564, -583, -738, -585, -566, -738, -569, -738, -571, -574, -738, -575, -738, -597, -10, -20, -738, -30, -738, -300, -738, -738, -276, -738, -738, -738, -738, -435, -738, -278, -280, -738, -738, -78, -275, -428, -738, -738, -80, -429, -44, -253, -737, -737, -348, -630, -738, -635, -636, -738, -738, -647, -738, -650, -738, -652, -738, -367, -738, -369, -371, -374, -377, -725, -669, -679, -680, -690, -694, -633, -46, -255, -349, -328, -727, -712, -713, -712, -713, -725, -738, -738, -58, -456, -459, -460, -461, -462, -464, -466, -469, -470, -527, -725, -482, -485, -497, -501, -506, -508, -509, -512, -513, -580, -516, -518, -519, -520, -525, -526, -738, -738, -530, -531, -532, -533, -534, -535, -536, -537, -538, -539, -540, -738, -738, -546, -60, -738, -738, -699, -738, -443, -72, -424, -440, -271, -278, -273, -738, -402, -738, -324, -291, -290, -294, -738, -703, -704, -738, -15, -90, -738, -96, -102, -725, -712, -713, -274, -716, -113, -738, -98, -738, -218, -232, -725, -313, -315, -317, -730, -737, -358, -737, -64, -359, -360, -336, -337, -738, -738, -448, -339, -738, -725, -712, -713, -716, -319, -13, -125, -126, -129, -725, -13, -738, -344, -738, -738, -725, -587, -590, -591, -592, -593, -13, -565, -568, -570, -573, -577, -579, -139, -34, -298, -738, -725, -712, -713, -713, -712, -50, -270, -738, -728, -291, -40, -214, -41, -215, -79, -42, -217, -43, -216, -81, -738, -738, -737, -363, -13, -549, -737, -550, -551, -697, -676, -681, -696, -639, -640, -640, -667, -640, -640, -687, -640, -664, -682, -725, -738, -738, -376, -665, -738, -738, -738, -738, -738, -738, -435, -457, -738, -738, -467, -468, -738, -738, -738, -487, -725, -725, -481, -488, -494, -738, -738, -484, -738, -738, -738, -500, -507, -511, -738, -515, -517, -523, -524, -528, -529, -541, -542, -738, -604, -605, -606, -126, -544, -738, -68, -422, -402, -426, -425, -738, -725, -437, -403, -725, -13, -439, -284, -295, -707, -94, -435, -106, -327, -267, -738, -361, -738, -738, -338, -340, -738, -738, -13, -435, -738, -435, -738, -738, -13, -347, -414, -417, -419, -406, -738, -738, -299, -435, -39, -213, -279, -45, -254, -11, -13, -555, -364, -738, -738, -553, -634, -738, -643, -738, -645, -738, -648, -738, -651, -653, -368, -370, -372, -375, -47, -256, -738, -458, -497, -463, -465, -474, -478, -725, -725, -725, -725, -725, -725, -545, -479, -480, -504, -489, -492, -495, -725, -580, -729, -725, -498, -502, -505, -510, -514, -521, -522, -738, -252, -13, -74, -272, -697, -697, -383, -385, -385, -385, -401, -738, -725, -664, -672, -673, -684, -441, -334, -738, -335, -738, -453, -294, -737, -341, -343, -626, -738, -13, -13, -738, -415, -589, -554, -13, -619, -620, -738, -738, -310, -552, -640, -640, -640, -640, -738, -738, -738, -471, -472, -473, -475, -476, -477, -496, -490, -738, -483, -738, -486, -738, -543, -444, -738, -381, -382, -386, -392, -394, -738, -397, -738, -399, -404, -738, -738, -671, -738, -13, -449, -738, -738, -445, -446, -447, -345, -738, -738, -725, -408, -410, -411, -548, -276, -738, -738, -320, -738, -641, -644, -646, -649, -373, -498, -738, -493, -499, -503, -697, -674, -384, -385, -385, -385, -385, -685, -385, -405, -683, -738, -320, -737, -13, -454, -455, -418, -420, -407, -738, -547, -725, -712, -713, -716, -319, -640, -738, -491, -380, -738, -389, -738, -391, -738, -395, -738, -398, -400, -319, -716, -362, -737, -409, -435, -642, -385, -385, -385, -385, -450, -451, -452, -738, -387, -390, -393, -396, -385, -388]; - clist = ["44,138,138,306,310,44,315,315,315,298,408,282,380,380,457,463,380,138", "222,281,690,379,415,451,294,15,827,141,141,300,15,560,632,675,229,229", "44,341,341,470,124,353,353,615,618,508,381,382,384,385,386,623,794,336", "568,899,337,133,214,238,595,15,885,791,44,791,233,380,380,380,380,977", "435,436,390,294,294,705,353,353,353,556,372,730,774,299,490,490,120", "15,902,552,733,733,794,892,699,701,703,395,121,418,419,420,421,558,1053", "235,607,610,124,131,614,448,481,481,317,317,317,44,1024,934,927,363", "333,695,696,509,44,997,44,302,309,311,356,711,1069,368,4,1031,752,752", "8,967,15,1026,335,8,928,374,377,473,506,15,1177,15,786,125,387,446,447", "794,1151,778,1010,946,947,2,313,326,327,403,405,791,791,788,511,512", "1006,1153,797,604,213,316,316,316,396,226,232,1038,1041,568,980,315", "458,592,592,653,655,1049,431,424,524,525,821,283,370,776,782,664,366", "375,781,44,467,442,373,295,442,376,394,636,1046,369,1177,44,605,371", "841,1054,429,44,442,991,639,1025,1071,550,15,515,437,1129,1073,437,1150", "573,640,993,44,1072,15,430,441,406,845,441,15,437,1090,1091,1214,8,490", "229,229,336,839,449,423,441,422,416,8,15,551,315,315,1153,1165,562,791", "510,563,300,315,959,826,1167,800,1144,481,1082,705,1221,983,233,909", "809,1173,1030,1184,1032,1033,923,1036,1039,924,457,463,917,894,933,936", "1055,1056,1062,949,889,1,727,306,1024,407,929,380,409,310,642,44,410", "1037,1040,44,411,412,1199,341,44,413,549,353,414,588,1168,1164,638,847", "852,842,336,906,1058,1059,15,336,341,1136,15,619,353,598,897,15,124", "893,434,434,44,649,651,654,654,1171,,596,,962,899,,,805,,44,44,973,", "317,,,802,805,626,15,,317,,233,,,620,621,1054,,,902,955,,15,15,,1054", "576,,986,1169,138,522,523,805,,333,124,988,577,,333,805,831,1119,682", "593,591,584,,579,687,1212,840,561,671,688,141,580,,,1000,564,586,,,", "844,559,316,,606,,1145,1054,,877,316,,457,463,882,,,,622,578,663,863", ",,,,,,718,,,,,,899,794,458,,315,1169,,985,705,705,,,490,,791,,,972,", "1035,,,467,,1043,1044,,963,,,1015,1017,,1019,1021,,1022,768,768,682", "481,1170,969,,,,,,731,731,676,,,,752,752,717,1083,1013,813,,898,890", "900,752,,733,976,,490,752,490,681,1042,315,458,,846,686,899,,510,,449", ",458,,873,875,,44,,878,880,,467,,,341,,1222,,353,,,467,,341,,,,353,315", "458,752,15,,596,,836,,458,315,,969,,596,855,44,855,,44,1223,467,,,1113", "1114,1115,467,,,,,,818,775,,820,,,,44,15,,,15,315,458,811,,,,,790,,", "780,989,822,138,,,,,,,15,467,44,34,,442,,,34,44,1096,843,941,,,442,442", ",,141,442,442,,,,34,,15,817,,437,705,705,,15,34,34,34,,34,437,437,441", "1191,891,437,437,,,859,,,441,441,1126,1127,,441,441,1160,1161,1162,1163", ",874,876,,34,,879,881,961,34,34,,,34,768,,894,1140,,1141,,,768,,1146", "926,,895,,,895,768,768,940,872,,957,960,1001,,,,138,,281,,,,830,1215", ",,682,,,687,,,380,34,,901,,903,34,34,34,34,34,,34,,341,,,,353,,1089", ",,860,,341,,,676,353,868,1070,1216,596,990,,,,1200,1074,,,676,935,974", ",1075,,,,,44,,,,,44,434,,,,,,,,,,44,987,,,,,,,,15,,,1103,,15,,872,998", "442,,490,1066,,,1124,15,,,34,34,34,34,34,34,34,44,676,,,,34,380,,437", ",,34,34,34,34,1008,,1009,1149,1012,441,,,,,15,,,34,,676,768,1002,768", ",380,768,768,,676,1060,,926,768,,996,,926,926,768,768,,,,,,,768,768", ",1052,,676,805,,,,,,1080,,,1192,,34,874,876,881,879,,44,34,34,,,,,,1120", ",34,1174,,,1175,,768,1078,44,1074,,,1074,1075,44,15,1075,731,34,1075", ",1075,34,,,1085,,34,,,44,676,,15,1098,,676,676,353,15,,,,,,,,1095,,1067", "1088,,,,,15,,34,1066,1102,,1066,,1066,,,,,,,,34,34,34,1217,996,,1068", ",,,,1074,,,44,,,,1075,,1075,34,1075,,1075,,,294,,,1002,353,,,,,,380", "380,15,,1075,44,44,,,,,44,,,,,1156,1104,,1105,,1106,1148,1066,768,1066", ",1066,1154,1066,15,15,,768,1185,1186,15,768,,,676,676,676,,315,458,1066", ",34,,935,,294,,,44,353,,,,,,31,,,467,,31,,,,,1183,,996,,,,,,15,768,", ",31,,,34,,467,,,,,31,31,31,34,31,44,895,,,1067,,,1067,,1067,,,,,768", ",,1213,,,,,,,,15,513,31,,,,,31,31,,1176,31,1178,,,,,,,,,,,,,378,,1189", ",,,,,34,,,,,1197,1130,1132,1134,,34,,,,,,,,,1067,,1067,,1067,31,1067", "34,,,31,31,31,31,31,,31,676,,34,,,34,1067,,565,,,1218,34,1219,,1220", ",,,,,,34,,,,34,,,,,581,,,1229,,,,,,,,,,,,,,,,,,,34,,,34,34,,,34,,,,", ",34,34,,,,34,34,,,1202,1204,1206,1208,,1209,,31,31,31,31,31,31,31,,", "18,,,31,,18,,,,31,31,31,31,432,445,,,,,,,,239,,,,31,,1225,1226,1227", "1228,239,239,239,,18,342,342,,1230,,,,,,,,,,,,,,,,,,,,,,,,18,,,,,239", "239,,31,239,391,401,401,,693,31,31,,,,,,,,31,,,,,,,,,,,,760,760,,,,", "31,,,,31,,,,,31,570,721,572,18,,574,575,,239,239,239,239,18,,18,,34", ",,,,34,34,,,,,,,31,,,34,,,,,,,777,,,,31,31,31,,783,,785,34,,,789,,,", ",,,,,,,31,,,34,,798,,,,,,801,,,,,,,,,,,,,,,,,,,815,,,18,239,439,239", "239,439,239,,,,,,18,,,,,667,18,439,239,239,,,,,,,,,,31,,34,,18,,,,,", ",,,,,,,,,34,,,,,,,,,,,,34,,,,,,34,,31,,,,34,,,,712,,31,239,,,,,,,239", "239,34,,,,,,,239,,,,,,910,760,,,,,,,17,760,,,18,17,,,18,,760,760,342", "18,,,,,,,,,,,,,,,,31,,342,,,34,,17,,,31,792,,378,18,795,,,,769,769,", ",,,,31,,239,18,18,,,34,34,17,,,31,34,,31,,,,,,,31,239,,,792,,,378,,", "31,,,,31,,,975,,,445,,,,,,,,,,,,,,,34,,34,34,,,31,17,,31,31,,,31,,34", "17,,17,31,31,,,,31,31,,,,861,239,,,,,,,,792,378,,,,,34,,,,,,,,888,,", ",,,760,,760,,,760,760,905,,,,239,760,,,,,1023,760,760,,239,,,,,760,760", ",,,,1034,,,,,,,,,,,17,,17,,,17,,,,,,,17,,,,,,17,17,,,760,,,,,,,,,1064", ",,,17,,,18,,,,,,792,,342,,239,,,,769,970,,342,971,,,,769,,,,239,,,,", "769,769,,,,,31,18,,,18,31,31,,,,,239,,,,,31,,,,,239,,,,18,,,,1110,1111", "1112,,,31,,,,,,17,,,,17,1121,,999,,17,,31,18,,,439,239,,,18,,,,,,439", "439,,,,439,439,43,760,763,763,,43,,17,,,760,,,,760,,,,,,,,17,17,293", ",,,,,,,,,,,43,340,340,,,,31,,,,,,,,,,,,,,,,760,31,,,,,43,,,,,,,31,,", "389,293,293,31,,,,,769,31,769,,,769,769,,760,,,,769,,,1084,,31,769,769", ",,,,,,769,769,,,,342,,,378,,,43,,,767,767,342,,,,43,,43,,,,,,,,,,,,", ",,,,769,,,18,,,,31,18,239,,,,,,,,,,18,,,,,,,,,,,,,,,,31,31,439,,,,31", ",,,,,,,,,,,,18,,,,,,,,,,,,43,,17,,,,763,,,,,,43,,763,,,,43,31,,31,31", "763,763,,,,,,,,,,31,43,,,,,17,,,17,,,,761,761,,,239,,,,,,,,,769,,,31", "17,,,,18,769,,,,769,,,,,,,239,,,,,,18,,,,,17,18,,17,,,,17,,,,,,17,17", ",,18,17,17,,1099,,,43,,769,,43,,,,340,43,,767,,,,,,,,767,,,,,,,19,340", "767,767,,19,,,769,,,,,43,,,,,,,,,18,,,,,,43,43,,,,,,1138,19,349,349", ",,,763,,763,,,763,763,,18,18,,,763,,18,,,,763,763,,,19,,,,763,763,,", ",,349,349,349,,,,,,,,,,,,,,,,,,,,,1180,,,18,,239,239,,,,763,,,,,,,,239", ",,,19,17,,,761,,17,,,19,,19,761,,,,,17,,,,761,761,,,18,,,,,,,,,,17,", ",,,,,,767,,767,,,767,767,,,17,,,767,,,,,,767,767,,,,,,,767,767,,,,,", ",,,,,,,,,,,,,,,,,,19,,19,,,19,,,43,,,,19,,767,,340,,19,19,763,,,,,340", ",21,,763,,,21,763,,19,,,17,,,,,,,,43,,,43,,,,,,,17,,,,,,17,21,344,344", ",,,,43,,,,,,,763,17,,,,,,,,,761,,761,,21,761,761,,762,762,43,,761,,393", "402,402,43,761,761,,,763,,,,761,761,19,,,,19,,,,349,19,,,,,,,,,17,,", ",,,,767,,349,20,,,21,,20,767,,,761,767,19,21,,21,,,,17,17,,,,,17,,19", "19,,,,,,,,,20,350,350,,,,,,,,,,,,,,,,767,,,,,,,,,,20,,,,17,,,,,,350", "350,350,,,,,,,,,,767,340,,,,,,,,,,21,340,440,,,440,,,,,,,21,,,17,,,21", "440,,,20,,,,,43,,,,20,43,20,,21,,,761,,,,,43,,,,761,,,,761,,,,,,,,,", ",,,,,,765,765,,,,762,,,,,,43,,762,,,,,,,,,762,762,,,,,761,,,,,,,,,,", ",,,,,,,,,21,20,,20,21,,20,19,344,21,,,761,20,,349,,,,20,20,,,,349,,", "344,,,,,,,,,20,,,21,,,,43,,19,,,19,,,,,,21,21,,,,,,43,,,,,,43,,19,,", ",,,,,,,,,,,43,,,,1097,,766,766,,,,,,19,,,19,,,,19,,,,,,19,19,,,,19,19", "20,,,,20,,,,350,20,,,,,,,,,762,,762,,43,762,762,,,350,,,762,,,,,293", "762,762,,20,,,,,762,762,,,,,43,43,,765,20,20,43,,,,,765,,,,,,,,,765", "765,,,,,,,,,,,,762,,,,,,,,,,,,,,293,,,43,,,,,,,,,,,,,349,,,,,,,,,,,349", ",,,,,,21,,,,,,,,344,,,,,43,,,,344,,19,,,,,19,,,,,,,,,,,19,,,21,,,21", ",,,,,,,,,764,764,19,,,,,,766,,,21,,,,,766,,851,19,,,,,,766,766,762,", ",,,,,,,762,,21,,762,440,,,,21,,,765,,765,440,440,765,765,,440,440,,", "765,,,,,20,765,765,,,,,,350,765,765,,,,,,,350,,762,,,,,,,,,,,,,,,19", ",,,20,,,20,,,,,,,765,,,762,19,,,,,,19,,,,20,,,,,,,,,,,,19,,,,349,,,", ",,,,,,,20,,,20,,,,20,,,,,,20,20,,,344,20,20,,,,,,,,,344,,,766,,766,", ",766,766,,,19,,,766,,,,,,766,766,,,349,21,,,766,766,21,,,,764,,,,,19", "19,21,764,,,19,,,,,,764,764,,,,765,,,440,,,,,,765,,766,,765,,,,,,,21", ",,,,,,,,,349,,,19,,,,,,,,,,,,,,,350,,,,,246,,,,765,,350,,,,314,314,314", ",,,,,,,,,361,362,19,364,365,,367,,,,20,,,,765,20,,,,,,314,314,,,21,20", ",,,,,,,,,,,,,,,,21,20,,,,,21,,,,,,,,,,,,20,766,,,21,,,,1101,,766,,,", "766,,,,,764,,764,,,764,764,,,,,,764,,,,,,764,764,,,,,,,764,764,,,,,", ",,,,,,766,21,,,,,,,,,,,,,402,,,,,,,,20,,,,764,,,21,21,,766,,,21,,,,", "20,,,,,,20,,,,,314,444,,,450,314,,,,,,20,,,,350,,,450,,,,,,,402,,,21", ",,246,,,,,,,526,527,528,529,530,531,532,533,534,535,536,537,538,539", "540,541,542,543,544,545,546,547,,,,,548,,20,,,,,,21,,,,,,,350,,,,,,", ",314,314,,,,,,20,20,314,,,,20,764,,314,,314,,,314,314,764,,,,764,,,", ",,,,,,,,,,,,,,,,,,,,,,,350,,,20,,,,,,601,,602,,,,,,764,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,20,,764,,,,,,,,,,,,,,,,,,,,,,,,,,,314,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,689,,,,,,,,,,,,,,,,,,,,,,,,,,314,,,,,,,,,,,,,719", ",,,,,,,,,314,,450,450,450,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,362,,,", ",,,,,,314,,314,,314,,,,,,,,,,,,,,,,314,,,,,,,,,,450,,,812,,,,,,,,314", ",,314,,,,,,,,,,,,,314,314,,,,,,,,,,314,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,314,450,314,,,,869,,,314,314,450,450,,,,450,450,,,,,,314,,,,,,,,", ",,,,314,,,,,,,,,,,,,,,,,,,,,,,,689,719,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,314,,,,,,,,,314,,,314,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,314,,,,,,,,450,,,,,,,,,", ",,,1004,1005,,,,,,,,,,,,,,,,,,,,,,,,,,,1027,1028,450,450,450,450,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1061,,,,,,,,,,,,,,,,,,,,,,,,,,,", "314,,,,,,,,,,,,,,,,,,,314,,,,,,,,,,,,,,,,,,,,,,,,,,450,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,314"]; - racc_goto_table = (arr = $$$('Array').$new(4695, nil)); + racc_action_pointer = [nil, 1550, 2590, 30, nil, 485, nil, 21057, 1279, -15, 24908, 25292, 63, nil, 111, 130, 888, 195, 878, 334, 213, 587, nil, -72, 16018, 1438, 25420, 260, nil, 586, nil, 10, 7680, 8479, 8613, 9947, 10209, nil, 1870, 24507, 23582, nil, 199, 495, 356, 292, 12722, 13115, 252, 13377, 14041, 977, 19960, 226, 694, nil, nil, nil, nil, nil, nil, nil, nil, nil, 21341, nil, 15494, 15351, 14696, 170, nil, 14434, 14303, nil, nil, 21200, 24638, 24114, 24769, nil, nil, nil, nil, nil, nil, nil, nil, nil, 877, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 610, nil, nil, 722, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 20234, nil, nil, nil, nil, 20091, 19567, 19436, 19305, 19174, nil, 4318, nil, -26, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 266, nil, 4462, 22788, 21740, 21609, 14172, 13910, 13779, 27931, 27748, nil, nil, 264, 2734, 305, nil, 27294, 27386, 317, 1294, 12043, 11912, 11257, nil, nil, 1133, 138, 140, 432, 174, 389, 452, nil, 10078, 131, 191, 3022, 455, nil, nil, 7277, 7146, 7015, 6753, 6491, 6360, 6229, 6098, 5967, 18507, 18376, 18245, 17590, 17459, 17328, 16411, 16149, 15756, 15220, 15089, 20639, 21478, nil, nil, nil, nil, 13648, nil, nil, 583, 548, 381, -62, 413, 376, 696, 695, 584, 585, nil, nil, nil, 15625, nil, nil, 27992, nil, nil, 484, 16673, 17066, nil, nil, nil, nil, nil, nil, nil, 17197, nil, 2446, nil, 455, 459, nil, 17721, 512, 17852, nil, nil, 17983, 18114, nil, nil, -73, nil, 5836, 1711, 509, 484, 1726, 513, 564, 525, 23312, 2878, 999, 1139, 614, 617, 582, nil, 610, 571, 253, 616, 644, nil, nil, nil, 650, 171, 611, 23852, nil, 471, 1022, 3742, 3886, 687, nil, 691, 12591, nil, 677, 2302, 1567, 638, nil, 541, 621, 676, 662, 651, 690, nil, 870, 35, 36, 22133, 1006, 4894, 459, 766, 651, 25, 39, 730, 747, 4, 793, nil, nil, 1141, 1285, 370, nil, 692, nil, 714, 14827, nil, 27438, nil, 531, 386, 291, 288, 421, 142, 191, 396, nil, nil, nil, nil, nil, nil, nil, 713, 25036, nil, nil, nil, nil, 726, nil, 798, 717, 14565, 725, nil, nil, 715, nil, 690, -60, 819, nil, nil, 1582, nil, nil, nil, nil, nil, 1870, 735, nil, 740, 749, 217, 251, 21057, nil, nil, nil, 0, 861, 795, nil, nil, 20916, 20780, 20508, 880, 882, nil, nil, 769, 775, 780, nil, nil, 785, 787, 809, nil, nil, nil, nil, nil, nil, nil, nil, nil, 801, 1280, nil, nil, 19031, nil, nil, nil, 1, nil, nil, nil, 899, nil, nil, 901, 579, 22919, 951, nil, nil, nil, -26, nil, 885, 28114, 28053, 22657, -85, 22526, 22395, 22264, 835, 853, 26710, 26612, 3454, 5300, 814, 855, 936, 938, 947, 952, 5693, 5431, 5562, 5169, 5038, 4894, 4750, 4606, 4462, 3482, 3568, 4318, 4174, 2590, 4030, nil, 154, nil, 13518, nil, nil, nil, nil, 13246, 889, 897, 901, nil, nil, nil, 902, nil, nil, 12984, nil, 12853, nil, 12460, nil, 219, nil, nil, nil, 12317, 1438, nil, 904, 909, nil, nil, 910, 23451, 916, 12174, 28175, 28236, 995, 958, nil, nil, 24376, 929, nil, 11781, 28602, 27809, 11650, 3598, 11388, nil, 1066, 947, 990, nil, 11126, nil, nil, 10995, nil, nil, nil, 4030, 1075, nil, 3742, 25, 1080, 1084, 37, 1086, 10733, 10602, 27687, 28480, -5, nil, nil, 472, nil, 27626, 27870, 10340, nil, nil, 191, 2014, nil, 27463, nil, nil, nil, nil, 1249, nil, nil, nil, 977, nil, nil, 247, nil, 286, nil, nil, 966, nil, 968, nil, nil, nil, 25164, nil, 9816, 971, 9673, 9411, 9280, 28358, 27565, 9018, 8875, 733, 1011, 8744, 8076, 7945, 7814, 1017, nil, nil, 7539, 7408, 1021, nil, 1075, 1726, 1105, 6884, nil, nil, 1120, nil, nil, 376, 13512, nil, 13482, nil, 27365, nil, 975, 6622, nil, 1310, nil, 992, 997, 1057, 1002, nil, nil, nil, nil, nil, nil, 1090, 2014, nil, nil, nil, 307, 332, 222, 361, 1006, 5693, 5562, nil, 120, nil, nil, nil, nil, 1029, nil, nil, nil, 555, 26091, 311, nil, 1007, 1092, 1014, nil, nil, 25503, nil, nil, 375, nil, nil, 586, nil, nil, 861, 27241, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 791, 464, nil, nil, 1016, 26529, nil, 1148, nil, 1131, 4, nil, nil, 16280, nil, 1046, 1053, 1154, nil, 1041, nil, 1088, 22002, nil, nil, 21871, nil, 109, 23721, 1044, nil, 1048, -1, 233, 1103, 249, 799, 1117, 1088, 24245, nil, 1156, 2158, 10864, nil, nil, nil, 372, 876, nil, 1213, nil, nil, nil, nil, nil, 1219, 1220, nil, nil, 6, 1101, -21, -19, 68, 7, 1150, 997, 989, nil, 1103, 4606, 14958, nil, 1227, 22, 1107, nil, nil, nil, nil, nil, 4750, nil, nil, nil, nil, nil, nil, nil, nil, 1106, 15887, 1110, 387, 385, 110, 500, nil, 2302, 16542, nil, 1110, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 16804, 16935, 1236, nil, 3886, 1121, 1169, nil, nil, 1129, nil, 1212, nil, nil, 1131, 1136, nil, 1141, 1143, nil, 1144, nil, nil, nil, 1150, 1204, 507, nil, nil, 18638, 18769, 18900, 5169, 5300, 5431, 333, 25993, 1231, 27004, -65, -35, 26386, 26288, 480, -32, 1154, 1155, nil, 27200, nil, 1154, 747, nil, 1178, 25895, 26190, nil, 929, 1243, 281, nil, nil, 27339, 20916, nil, nil, nil, nil, 8207, nil, nil, nil, nil, nil, 8338, nil, nil, 1227, nil, nil, 1237, 1224, nil, nil, 429, 2446, nil, nil, nil, nil, 1227, 250, nil, 137, nil, 1357, nil, 9149, 1361, nil, nil, 25797, 9542, 5038, -18, 1362, nil, 1363, 369, 1582, nil, nil, nil, nil, 1238, 1285, 1249, 1247, 304, nil, nil, 10471, 3310, 3166, nil, 3166, nil, nil, -10, 23050, nil, nil, 27446, nil, 497, nil, 27515, nil, 25493, nil, nil, nil, nil, 1248, 1250, 3022, 2878, 11519, nil, 1251, nil, nil, nil, nil, 1257, 1258, 1260, 1262, 1263, 1264, nil, nil, nil, 1309, 1267, -39, nil, 1276, nil, nil, -66, 1275, nil, nil, nil, nil, nil, nil, 1323, 2734, 2158, nil, nil, 1285, 1286, nil, 1287, 1288, 1291, nil, 1316, 1296, 1283, 23181, nil, nil, nil, nil, nil, 8, nil, 26, 771, nil, 40, nil, nil, nil, 1420, 3454, 3310, 1136, nil, nil, nil, 1438, 32, 33, 872, 1376, 34, nil, 1302, 1312, 1313, 1314, 1348, 3584, 26906, nil, nil, nil, nil, nil, nil, nil, 1317, 27102, nil, 145, nil, 25699, nil, nil, 815, nil, nil, 25898, nil, nil, 25702, nil, 13537, nil, nil, 1342, 23983, 763, 1397, 3598, nil, 19698, 19829, nil, nil, nil, nil, 1341, 1454, 713, nil, nil, nil, 1457, 20377, 28297, 28419, 69, 26144, nil, nil, nil, nil, 1332, 1333, 26808, 1341, nil, nil, 1342, nil, nil, 1361, 1365, 1382, 1385, nil, 1386, nil, 618, 28541, nil, 973, 4174, nil, nil, nil, nil, nil, 1195, nil, 1392, 76, 79, 109, 136, 1391, 25601, 1394, nil, 25604, nil, 23629, nil, 26599, nil, 23359, nil, nil, 1439, 1442, nil, 362, nil, 142, nil, 1399, 1401, 1404, 1409, nil, nil, nil, 25996, nil, nil, nil, nil, -129, nil]; + racc_action_default = [-1, -745, -4, -745, -2, -730, -5, -745, -8, -745, -745, -745, -745, -31, -745, -745, -36, -745, -745, -639, -639, -311, -52, -732, -745, -61, -745, -69, -70, -71, -75, -287, -287, -287, -324, -352, -353, -87, -13, -91, -99, -101, -745, -626, -627, -745, -745, -745, -745, -745, -745, -239, -745, -732, -258, -302, -303, -304, -305, -306, -307, -308, -309, -310, -718, -313, -317, -744, -707, -333, -335, -745, -745, -63, -63, -730, -745, -745, -745, -354, -355, -357, -358, -359, -360, -419, -563, -564, -565, -566, -587, -569, -570, -589, -591, -574, -579, -583, -585, -601, -602, -603, -587, -605, -607, -608, -609, -610, -716, -615, -616, -717, -618, -619, -620, -621, -622, -623, -624, -625, -630, -631, 1238, -3, -731, -740, -741, -742, -7, -745, -745, -745, -745, -745, -9, -4, -19, -745, -130, -131, -132, -133, -134, -135, -136, -140, -141, -142, -143, -144, -145, -146, -147, -148, -149, -150, -151, -152, -153, -154, -155, -156, -157, -158, -159, -160, -161, -162, -163, -164, -165, -166, -167, -168, -169, -170, -171, -172, -173, -174, -175, -176, -177, -178, -179, -180, -181, -182, -183, -184, -185, -186, -187, -188, -189, -190, -191, -192, -193, -194, -195, -196, -197, -198, -199, -200, -201, -202, -203, -204, -205, -206, -207, -208, -209, -210, -24, -137, -13, -745, -745, -745, -745, -745, -277, -745, -745, -728, -729, -745, -13, -638, -636, -662, -662, -745, -13, -745, -745, -732, -733, -56, -745, -626, -627, -745, -311, -745, -745, -245, -745, -639, -639, -13, -745, -57, -59, -222, -223, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -745, -259, -260, -261, -262, -745, -65, -66, -745, -130, -131, -170, -171, -172, -188, -193, -200, -203, -626, -627, -705, -745, -428, -430, -745, -726, -727, -76, -277, -745, -332, -434, -443, -445, -82, -440, -83, -732, -84, -265, -282, -292, -292, -286, -290, -293, -745, -587, -709, -713, -745, -85, -86, -730, -14, -745, -17, -745, -89, -13, -732, -745, -92, -95, -13, -107, -108, -745, -745, -115, -324, -327, -732, -745, -639, -639, -352, -353, -356, -441, -745, -97, -745, -103, -321, -745, -224, -225, -606, -233, -234, -745, -246, -251, -13, -315, -732, -266, -737, -737, -745, -745, -737, -745, -334, -62, -745, -745, -745, -13, -13, -730, -745, -731, -626, -627, -745, -745, -311, -745, -370, -371, -125, -126, -745, -128, -745, -311, -634, -745, -348, -662, -567, -745, -745, -745, -745, -745, -745, -745, -745, -6, -743, -25, -26, -27, -28, -29, -745, -745, -21, -22, -23, -138, -745, -32, -35, -298, -745, -745, -297, -33, -745, -37, -745, -311, -49, -51, -211, -270, -293, -53, -54, -38, -212, -270, -732, -278, -292, -292, -719, -720, -287, -438, -721, -722, -720, -719, -287, -437, -439, -721, -722, -745, -555, -745, -383, -384, -732, -704, -704, -644, -645, -647, -647, -647, -661, -663, -664, -665, -666, -667, -668, -669, -670, -671, -745, -673, -675, -677, -682, -684, -685, -688, -693, -695, -696, -698, -699, -700, -702, -745, -745, -745, -48, -219, -55, -732, -331, -745, -745, -745, -277, -321, -745, -745, -745, -745, -745, -745, -745, -220, -221, -226, -227, -228, -229, -230, -231, -235, -236, -237, -238, -240, -241, -242, -243, -244, -247, -248, -249, -250, -732, -263, -67, -732, -449, -287, -719, -720, -73, -77, -663, -732, -292, -732, -288, -447, -449, -732, -326, -283, -745, -284, -745, -289, -745, -294, -745, -712, -715, -12, -731, -16, -18, -732, -88, -319, -104, -93, -745, -732, -277, -745, -745, -114, -745, -638, -606, -745, -100, -105, -745, -745, -745, -745, -264, -745, -328, -745, -732, -745, -267, -739, -738, -269, -739, -322, -323, -708, -13, -361, -362, -13, -745, -745, -745, -745, -745, -745, -277, -745, -745, -321, -63, -125, -126, -127, -745, -745, -277, -344, -632, -745, -13, -420, -662, -423, -568, -588, -593, -745, -595, -571, -590, -745, -592, -573, -745, -576, -745, -578, -581, -745, -582, -745, -604, -10, -20, -745, -30, -745, -301, -745, -745, -277, -745, -745, -745, -745, -442, -745, -279, -281, -745, -745, -78, -276, -435, -745, -745, -80, -436, -44, -254, -744, -744, -350, -637, -745, -642, -643, -745, -745, -654, -745, -657, -745, -659, -745, -745, -372, -745, -374, -376, -379, -382, -732, -676, -686, -687, -697, -701, -640, -46, -256, -351, -330, -734, -719, -720, -719, -720, -732, -745, -745, -58, -463, -466, -467, -468, -469, -471, -473, -476, -477, -534, -732, -489, -492, -504, -508, -513, -515, -516, -519, -520, -587, -523, -525, -526, -527, -532, -533, -745, -745, -537, -538, -539, -540, -541, -542, -543, -544, -545, -546, -547, -745, -745, -553, -60, -745, -745, -706, -745, -450, -72, -431, -447, -272, -279, -274, -745, -409, -745, -325, -292, -291, -295, -745, -710, -711, -745, -15, -90, -745, -96, -102, -732, -719, -720, -275, -723, -113, -745, -98, -745, -218, -232, -252, -745, -314, -316, -318, -737, -744, -363, -744, -64, -364, -365, -338, -339, -745, -745, -455, -341, -745, -732, -719, -720, -723, -320, -13, -125, -126, -129, -732, -13, -745, -346, -745, -745, -732, -594, -597, -598, -599, -600, -13, -572, -575, -577, -580, -584, -586, -139, -34, -299, -745, -732, -719, -720, -720, -719, -50, -271, -745, -735, -292, -40, -214, -41, -215, -79, -42, -217, -43, -216, -81, -745, -745, -744, -368, -13, -556, -744, -557, -558, -704, -683, -688, -703, -646, -647, -647, -674, -647, -647, -694, -647, -671, -386, -689, -732, -745, -745, -381, -672, -745, -745, -745, -745, -745, -745, -442, -464, -745, -745, -474, -475, -745, -745, -745, -494, -732, -732, -488, -495, -501, -745, -745, -491, -745, -745, -745, -507, -514, -518, -745, -522, -524, -530, -531, -535, -536, -548, -549, -745, -611, -612, -613, -126, -551, -745, -68, -429, -409, -433, -432, -745, -732, -444, -410, -732, -13, -446, -285, -296, -714, -94, -442, -106, -732, -268, -745, -366, -745, -745, -340, -342, -745, -745, -13, -442, -745, -442, -745, -745, -13, -349, -421, -424, -426, -413, -745, -745, -300, -442, -39, -213, -280, -45, -255, -11, -13, -562, -369, -745, -745, -560, -641, -745, -650, -745, -652, -745, -655, -745, -658, -660, -373, -375, -377, -380, -47, -257, -745, -465, -504, -470, -472, -481, -485, -732, -732, -732, -732, -732, -732, -552, -486, -487, -511, -496, -499, -502, -732, -587, -736, -732, -505, -509, -512, -517, -521, -528, -529, -745, -253, -13, -74, -273, -704, -704, -390, -392, -392, -392, -408, -745, -732, -671, -679, -680, -691, -448, -329, -336, -745, -337, -745, -460, -295, -744, -343, -345, -633, -745, -13, -13, -745, -422, -596, -561, -13, -626, -627, -745, -745, -311, -559, -647, -647, -647, -647, -745, -745, -745, -478, -479, -480, -482, -483, -484, -503, -497, -745, -490, -745, -493, -745, -550, -451, -745, -388, -389, -393, -399, -401, -745, -404, -745, -406, -411, -745, -745, -678, -745, -13, -456, -745, -745, -452, -453, -454, -347, -745, -745, -732, -415, -417, -418, -555, -277, -745, -745, -321, -745, -648, -651, -653, -656, -378, -505, -745, -500, -506, -510, -704, -681, -391, -392, -392, -392, -392, -692, -392, -412, -690, -745, -321, -744, -13, -461, -462, -425, -427, -414, -745, -554, -732, -719, -720, -723, -320, -647, -745, -498, -387, -745, -396, -745, -398, -745, -402, -745, -405, -407, -320, -723, -367, -744, -416, -442, -649, -392, -392, -392, -392, -457, -458, -459, -745, -394, -397, -400, -403, -392, -395]; + clist = ["44,411,301,309,313,44,141,141,318,318,318,340,285,418,454,493,493,284", "382,384,385,473,141,389,297,19,626,511,709,832,19,693,460,466,356,356", "44,344,344,635,127,698,699,571,225,618,621,339,563,702,704,706,144,144", "890,303,708,598,897,241,983,19,352,352,44,134,387,388,366,136,217,356", "356,356,393,297,297,421,422,423,424,798,232,232,305,312,314,907,8,19", "795,445,795,8,445,302,561,678,940,352,352,352,359,734,778,737,737,790", "445,555,127,124,438,439,1003,451,383,383,236,559,383,715,44,798,610", "613,1160,1059,617,512,375,44,904,44,1158,484,484,756,756,123,229,235", "336,1037,4,476,509,19,320,320,320,1030,373,973,1032,1184,19,1075,19", "1016,782,128,2,607,656,658,17,1012,338,1044,1047,17,792,801,383,383", "383,383,216,1055,571,377,380,933,595,595,986,399,516,434,798,493,934", "406,408,427,527,461,318,528,795,795,17,826,952,953,286,780,786,390,8", "667,652,654,657,657,44,369,605,425,378,8,470,785,1160,1184,298,432,44", "379,17,397,1221,639,44,1078,576,372,608,374,818,19,846,19,709,997,19", "642,915,1031,1077,44,1136,19,433,444,1079,1157,444,19,19,831,339,903", "568,905,449,450,518,319,319,319,444,844,643,999,19,426,419,409,318,318", "850,514,515,804,1097,584,17,318,1098,554,565,566,813,965,1151,17,1089", "17,1172,1228,376,989,1191,1038,1039,899,795,1174,731,484,303,929,232", "232,316,329,330,930,1180,645,939,309,942,460,466,1068,968,313,1061,44", "599,1062,622,44,356,912,955,344,44,894,1143,1,553,410,339,412,1175,413", "236,339,552,1030,1171,356,19,1206,344,414,19,415,1036,416,352,19,127", "1042,1045,417,44,591,525,526,923,852,1043,1046,596,857,806,847,17,352", "17,44,44,17,935,601,902,582,1064,1065,17,19,623,624,809,898,17,17,1178", "587,907,,,1126,809,,19,19,,961,,,,17,836,581,629,320,,141,127,696,493", "1219,845,320,,383,685,849,,,809,580,690,,,336,,,809,691,336,709,709", "979,,236,641,1152,437,437,860,904,860,,,1019,,868,725,579,,583,674,144", "1021,1023,589,1025,1027,,1028,,,992,,460,466,493,722,493,666,,994,,461", ",,1177,318,,991,17,882,,978,17,781,887,,,17,238,,,787,1006,789,684,452", "470,793,975,798,689,,,,625,,772,772,685,513,795,969,,802,,1076,,17,371", "805,756,756,562,319,445,721,,484,,,756,319,17,17,445,445,756,851,820", "445,445,599,735,735,461,318,1090,904,737,1048,599,982,1041,,461,878", "880,1049,1050,44,883,885,1229,1110,356,1052,,344,895,470,564,,1060,356", ",,344,,567,470,756,975,461,318,19,,,,,784,461,,352,318,,,,44,,,44,352", ",,,1230,841,470,823,,,825,,470,,,1133,1134,995,,,44,19,,1144,19,904", "461,318,709,709,,,,,,,,827,,,,,,141,916,19,947,44,,,900,470,,900,44", ",848,1103,1167,1168,1169,1170,,,794,,,,1120,1121,1122,,19,,,19,,1181", ",19,1182,,,,,19,19,444,,144,19,19,,,,,,444,444,,1198,,444,444,,822,864", ",1153,,,,,,967,,,,,,,1207,899,772,17,,445,,1147,,1148,772,,,1080,865", ",896,,966,772,772,873,,1060,,963,1007,,,1224,284,1223,1060,,599,141", "1176,,932,,685,17,,690,17,980,946,1096,,,,,,877,996,,,356,,,344,493", ",,,17,,,356,,,344,513,,452,,,,,,1060,,,,,352,,,,,1072,,17,594,,17,352", ",44,17,,1222,,44,,17,17,,,993,17,17,1176,,44,,,609,1131,,1029,835,981", "19,,1004,,,19,,,,,,,1040,,,,19,,,,,,,,,1156,44,815,383,,,,,,19,,,1015", "877,,1066,,,,,,444,,,,,19,,1080,1070,,1080,,772,,772,,,772,772,437,1085", ",,1087,772,,,,679,,772,772,,,,1073,,,772,772,,,1199,1014,,,,1018,932", ",,,,932,932,,,1127,,,809,44,,879,881,,1058,,884,886,,,1084,,,,,772,", "44,1080,1117,1118,1119,1072,44,19,1072,,1072,1092,383,,,,17,,1128,,", "17,44,356,,19,1105,,,,31,19,17,1102,735,31,,,,,,383,1095,,,779,,19,", ",17,352,31,,,,,,,,,,31,31,31,,31,17,,,,,,,,,,44,1072,,1072,,1072,,1072", ",,356,,,297,,,,31,,,,,31,31,1072,19,31,,,44,44,1192,1193,,,44,,,352", "900,1155,,1073,,,1073,1161,1073,772,,906,,908,,19,19,,772,,,19,772,", ",,,1163,,,461,318,17,,356,,31,297,765,765,44,31,31,31,31,31,,31,,,17", "1190,,,,470,17,,,,,1008,352,,,19,772,,,,,,17,,,,1073,,1073,470,1073", ",1073,,44,,,,,383,383,,,,,1220,,1081,772,1073,,,,,,879,881,886,884,19", "679,,,,,,,,,,,,,,679,941,,17,,,31,31,31,31,31,31,31,,,,,,31,,,,,,31", "31,31,31,,,,,17,17,381,18,,,17,,18,31,,,,,,,,,,,,,,,,242,,,,679,,,,", ",242,242,242,,18,345,345,,,,,,,,,17,,,,,31,,,,679,,,31,31,,1008,,18", "679,,,31,242,242,1002,,242,394,404,404,,,1137,1139,1141,,,,,31,,679", ",31,17,,,,31,,765,1081,,,1081,,,1081,765,1081,,,,,,764,764,765,765,", ",,,,1074,18,,,31,,242,242,242,242,18,,18,,,,,,31,31,31,,,,,,,679,,435", "448,,679,679,,,,,,31,,,,,,,,,1111,,1112,,1113,1081,,1081,,1081,,1081", ",,,,1209,1211,1213,1215,,1216,,1002,,,,,1081,,,,,,,,,,,,,,,,,,,18,242", "442,242,242,442,242,,31,,,,18,1232,1233,1234,1235,,18,442,242,242,,", ",1237,,,,,,,,,,18,,573,,575,,,577,578,,,,31,,679,679,679,,,,,,31,,941", "765,,765,,,765,765,,,,,1183,765,1185,,,,,765,765,,242,,1002,,,765,765", "242,242,,,,,,,,242,,1204,,,,,,,,,,,,,,,764,18,,31,,18,,,764,345,18,765", ",31,,,,764,764,,,,,,,,,1225,345,1226,,1227,,20,,,,670,20,,18,31,,,31", ",,1196,,,1236,31,,,242,18,18,,,,,31,,,,31,,,,20,353,353,,,,242,,,,,", ",,,,,,,,679,,,31,,,31,31,20,716,31,,,,,,31,31,353,353,353,31,31,,,,", ",,,,,,,,,,,,,,,,,,,,,,765,242,,,,,,,,765,,,,765,,,,20,,,,,,,,,20,,20", ",,,,796,,381,,799,,,242,764,,764,,,764,764,,,242,,,764,,,,765,,764,764", ",,,,,,764,764,,,,,,796,,,381,,,,,,,,,,,,765,448,,,,,,,,,,,,,31,,,764", ",,,18,20,,20,,,20,,345,,242,,,20,,,31,345,,20,20,31,31,,866,,,,,,,,31", "796,381,,20,,18,,,18,,,,,,893,242,,31,,,,,,,,242,,,911,18,,,,,31,,,", ",,,,,,,,,,,,,,,,,,18,,,442,242,,,18,,,,,,442,442,,,,442,442,,,,,,,,20", ",,,20,,,764,353,20,,,,,,31,764,,,,764,,,,,796,,353,,,,,31,,976,,,977", ",20,,,,,31,,,,,,31,,,,20,20,31,,,,,,,,764,,,,,,,,31,,,,,,,,,,,,,,,,", ",,,,,,,764,,,,,,,,1005,,,345,,,,,15,,,,,15,345,,,,242,,,,,31,,,,,,,", ",,,,,,,,,,18,,,15,,18,242,,,,,31,31,,,,18,31,,,21,,,,,21,,,,,,15,,,442", ",,,,,,398,773,773,,,,,,,,18,,,,,21,347,347,,,31,,31,31,,,,,,,,,,,,31", ",,,,,1091,,21,,,,,15,,,,,396,405,405,,15,,15,381,20,,,31,,,,,353,,,", ",242,,,,353,,,,,,,,,,,,,18,,,,,,,,20,,21,20,242,,,771,771,,18,21,,21", ",,18,,,,,,,,20,,,,,,,,18,,,,1106,,,,,,,15,,440,,,440,,,20,,,20,15,,", "20,,,15,440,,20,20,,,,20,20,,,,,,,,15,,,,,,,,,18,,,,,,,,,21,,443,,1145", "443,,,,,,,21,,,,,,21,443,18,18,,,773,,18,,,,,,773,,,21,,,,,,773,773", ",770,770,,,,,,,,,,,,,,,,,15,,,,15,1187,,,18,15,242,242,,,,,,,,,,,,242", ",,,353,,,,,,,,,,,353,15,,,,,,,,,,,,,18,21,15,15,,21,,,,347,21,,,20,", "771,,,20,,,,,771,,,,,347,20,,,771,771,,,,,,,21,,,,,,,20,43,,,,,43,,21", "21,,,,,,,,20,,,,,,,,296,,,,,,,,,,,,43,343,343,,,773,,773,,,773,773,", ",,,,773,,,,,,773,773,,,,43,,,773,773,,,,,,392,296,296,,,,,,,,,,,,,,", ",,,769,769,,20,,,770,,,,,,773,,770,,,,,,,20,,770,770,,,20,43,,,,,,,", ",43,,43,,,,20,,768,768,353,,,,,771,15,771,,,771,771,,,,,,771,,,,,,771", "771,,,,,,,771,771,,,,,,,,,,,,15,,,15,,,,20,,,,,,,,21,,,,,353,,,347,15", ",771,,,,,43,347,,,,20,20,,,,,20,43,767,767,,,773,43,,15,,21,440,,21", "773,15,,,773,,,440,440,43,,,440,440,,,,,,,21,,,,,,353,856,,20,,,,,,", ",770,,770,,,770,770,,,,21,773,770,443,,,,21,770,770,,,,443,443,,770", "770,443,443,,,,769,,,20,,,,,769,,773,,,,,,,769,769,43,,,,43,,,771,343", "43,,,,770,,,771,,,,771,,,,,,768,343,,,,,,,768,,,,,43,,,,768,768,,,,", ",,,,,43,43,,,,,,,,,771,,,,,,,,,,,,,15,,,,,15,,,,,,,,,,347,15,,,771,", ",,,,,347,,,,,,,,440,,,,,767,,,,,,,,767,,,,15,,21,,,767,767,21,,,,,770", ",,,,,21,,,770,,,,770,,,,,,,769,,769,,443,769,769,,,,,,769,,,,,,769,769", ",21,,,,,769,769,,,,,,,,,,770,,766,766,,,,,768,,768,,15,768,768,,,,,", "768,,,,,,768,768,769,,15,,770,,768,768,15,,,,,,,,,,,,,,43,,15,,,,1109", ",343,,,,,,,21,,343,,,,,,768,,,,,,,,,,21,,,,,43,21,,43,,,,,,,767,,767", ",,767,767,21,,15,,1108,767,,43,,,,767,767,34,,,,,34,767,767,,,,,,,,", ",,15,15,,43,34,,15,,,,43,,,,34,34,34,,34,769,,,,,21,,,767,769,,,,769", ",,,,405,,,,,,,,,34,,,,15,34,34,21,21,34,,,,21,,,,,768,,,,,,,,,768,,", "769,768,,,,,,,766,,,,,,,,766,,15,,,,,,405,766,766,21,34,,,,769,34,34", "34,34,34,,34,,,,,,768,,,,,,,,,,,,,,,,343,,,,,,,,,,21,343,,,,,768,767", ",,,,,,,,767,,,,767,,,,,,,,43,,,,,43,,,,,,,,,,,43,,,,,,,34,34,34,34,34", "34,34,,,,,,34,767,,,,,34,34,34,34,,,,,,,43,,,,,,,34,,,,,,,,,,767,,,", ",,,,,,,,,,,,,,,,766,,766,,,766,766,,,,,,766,,,,34,,766,766,,,,34,34", ",766,766,,,,,34,,,,,,,,,,,,43,,,,,,34,,,,34,,,,,34,,,43,,,766,,,43,", ",,,,,,,,,,,,,,43,,,,1104,34,,,,,,,,,,,,,,34,34,34,,,,,,,,,,,,,,,,,,", "34,,,,,,,,,,,,,,,43,,,,,,,,,,,,,296,,,,,,,,,,,,,,,,43,43,,,,,43,,,,", ",,,,,,249,,,34,,,,766,,,317,317,317,,,,766,,,,766,,364,365,,367,368", ",370,,296,,,43,,,,,,,,,34,317,317,,,,,,,,34,,,,,,,,,,,,766,,,,,,,,,", ",,,43,,,,,,,,,,,,,,,,,,,766,,,,,,,,,,,,,,,,34,,,,,,,,,,34,,,,,,,,,,", ",,,,,,,,,,,,,,,,,34,,,34,,,,,,,34,,,,,,,,,,34,,,,34,,,,,,,,,,,,,,,,", ",,,,317,447,,,453,317,34,,,34,34,,,34,,,,,453,34,34,,,,34,34,,,,,,249", ",,,,,,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544", "545,546,547,548,549,550,,,,,551,,,,,,,,,,,,,,,,,,,,,,,317,317,,,,,,", ",317,,,,,,,317,,317,,,317,317,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,604,,,,,34,,,,,,,,,,,,,,,,,,,,,,,34,,,,,34,34,,,,,,,,,,34,,,,,,,,", ",,,,,,,,,34,,,,,317,,,,,,,,,,,,34,,,,,,,,,,,,,,,,,,,,,,,692,,,,,,,,", ",,,,,,,,,,,,,,,,,317,,,,,,,,,,,,,723,,34,,,,,,,,317,,453,453,453,,,", ",34,,,,,,,,,,,,34,,,,,,34,,,,,,34,,,,,,,365,,,,,,,,,34,317,,317,,317", ",,,,,,,,,,,,,,,317,,,,,,,,,,453,,,816,,817,,,,,,317,,,317,,,,,,,,,,34", ",,317,317,,,,,,,,,,317,,,,,,,,,,,,,,,34,34,,,,,34,,,,,,,,,,,,317,453", "317,,,,874,,,317,317,453,453,,,,453,453,,,,,,317,,,,,,,,,34,,34,34,", "317,,,,,,,,,,34,,,,,,,,,,,,,,692,723,,,,,,,,,,,,,,34,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,317,,,,,,,,,317,,,317,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,317,,,,,,,,453,,,,,,,,", ",,,,1010,1011,,,,,,,,,,,,,,,,,,,,,,,,,,,,1033,1034,453,453,453,453,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1067,,,,,,,,,,,,,,,,,,,,,,,,,", ",,317,,,,,,,,,,,,,,,,,,,317,,,,,,,,,,,,,,,,,,,,,,,,,,453,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,317"]; + racc_goto_table = (arr = $$$('Array').$new(4752, nil)); idx = 0; $send(clist, 'each', [], function $Ruby31$6(str){ @@ -20357,8 +20310,8 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ $writer[$rb_minus($writer["length"], 1)]; }; return (idx = $rb_plus(idx, 1));}, 1);}, 1); - clist = ["71,74,74,89,89,71,36,36,36,151,191,46,26,26,54,54,26,74,33,48,12,105", "191,31,71,23,111,76,76,33,23,90,72,32,85,85,71,71,71,10,114,81,81,108", "108,10,19,19,44,44,19,110,232,11,92,224,67,17,17,22,69,23,13,93,71,93", "115,26,26,26,26,109,24,24,71,71,71,123,81,81,81,56,85,41,41,50,223,223", "5,23,228,54,170,170,232,128,221,221,221,23,7,19,19,19,19,31,185,40,87", "87,114,9,87,28,218,218,88,88,88,71,122,180,168,79,63,132,132,28,71,142", "71,55,55,55,68,124,138,40,2,186,193,193,8,140,23,125,64,8,169,88,88", "150,150,23,229,23,57,6,5,26,26,232,144,154,200,195,195,3,62,62,62,73", "73,93,93,154,26,26,14,145,16,10,18,86,86,86,21,35,35,171,171,92,13,36", "89,217,217,207,207,171,25,27,42,43,45,49,8,51,59,77,82,84,91,71,74,20", "86,103,20,104,112,113,184,116,229,71,117,118,119,184,11,71,20,120,121", "126,130,26,23,33,23,135,136,23,143,191,146,147,71,142,23,22,22,148,149", "22,23,23,152,153,144,8,223,85,85,11,72,78,2,22,8,6,8,23,155,36,36,145", "185,157,93,78,158,33,36,161,110,185,69,162,218,163,123,164,165,115,123", "69,138,168,166,173,175,176,168,168,177,54,54,32,193,181,182,188,189", "140,198,199,1,31,89,122,203,32,26,204,89,150,71,205,169,169,71,206,209", "185,71,71,210,50,81,211,33,186,125,26,212,213,216,11,124,195,195,23", "11,71,142,23,19,81,33,222,23,114,226,86,86,71,208,208,208,208,227,,67", ",57,224,,,54,,71,71,32,,88,,,31,54,33,23,,88,,115,,,11,11,184,,,228", "72,,23,23,,184,5,,32,184,74,35,35,54,,63,114,32,7,,63,54,31,180,89,79", "40,68,,9,89,109,31,62,33,36,76,64,,,32,62,64,,,,10,86,86,,40,,13,184", ",56,86,,54,54,56,,,,5,8,17,31,,,,,,,36,,,,,,224,232,89,,36,184,,108", "123,123,,,223,,93,,,69,,32,,,74,,32,32,,90,,,221,221,,221,221,,221,71", "71,89,218,128,92,,,,,,167,167,40,,,,193,193,114,41,132,26,,139,24,139", "193,,170,87,,223,193,223,55,72,36,89,,150,55,224,,78,,78,,89,,28,28", ",71,,28,28,,74,,,71,,13,,81,,,74,,71,,,,81,36,89,193,23,,67,,44,,89", "36,,92,,67,208,71,208,,71,111,74,,,32,32,32,74,,,,,,11,40,,11,,,,71", "23,,,23,36,89,78,,,,,88,,,55,10,114,74,,,,,,,23,74,71,61,,20,,,61,71", "108,114,191,,,20,20,,,76,20,20,,,,61,,23,88,,23,123,123,,23,61,61,61", ",61,23,23,22,12,85,23,23,,,17,,,22,22,132,132,,22,22,221,221,221,221", ",78,78,,61,,78,78,105,61,61,,,61,71,,193,108,,108,,,71,,110,167,,133", ",,133,71,71,167,88,,46,151,28,,,,74,,48,,,,86,32,,,89,,,89,,,26,61,", "137,,137,61,61,61,61,61,,61,,71,,,,81,,10,,,8,,71,,,40,81,8,139,221", "67,19,,,,132,223,,,40,40,67,,225,,,,,71,,,,,71,86,,,,,,,,,,71,11,,,", ",,,,23,,,139,,23,,88,11,20,,223,127,,,10,23,,,61,61,61,61,61,61,61,71", "40,,,,61,26,,23,,,61,61,61,61,85,,11,10,85,22,,,,,23,,,61,,40,71,78", "71,,26,71,71,,40,19,,167,71,,40,,167,167,71,71,,,,,,,71,71,,167,,40", "54,,,,,,19,,,31,,61,78,78,78,78,,71,61,61,,,,,,191,,61,139,,,139,,71", "11,71,223,,,223,225,71,23,225,167,61,225,,225,61,,,11,,61,,,71,40,,23", "71,,40,40,81,23,,,,,,,,11,,133,114,,,,,23,,61,127,23,,127,,127,,,,,", ",,61,61,61,139,40,,137,,,,,223,,,71,,,,225,,225,61,225,,225,,,71,,,78", "81,,,,,,26,26,23,,225,71,71,,,,,71,,,,,33,137,,137,,137,11,127,71,127", ",127,11,127,23,23,,71,19,19,23,71,,,40,40,40,,36,89,127,,61,,40,,71", ",,71,81,,,,,,58,,,74,,58,,,,,11,,40,,,,,,23,71,,,58,,,61,,74,,,,,58", "58,58,61,58,71,133,,,133,,,133,,133,,,,,71,,,11,,,,,,,,23,65,58,,,,", "58,58,,137,58,137,,,,,,,,,,,,,83,,40,,,,,,61,,,,,137,134,134,134,,61", ",,,,,,,,133,,133,,133,58,133,61,,,58,58,58,58,58,,58,40,,61,,,61,133", ",65,,,137,61,137,,137,,,,,,,61,,,,61,,,,,65,,,137,,,,,,,,,,,,,,,,,,", "61,,,61,61,,,61,,,,,,61,61,,,,61,61,,,134,134,134,134,,134,,58,58,58", "58,58,58,58,,,30,,,58,,30,,,,58,58,58,58,83,83,,,,,,,,30,,,,58,,134", "134,134,134,30,30,30,,30,30,30,,134,,,,,,,,,,,,,,,,,,,,,,,,30,,,,,30", "30,,58,30,30,30,30,,65,58,58,,,,,,,,58,,,,,,,,,,,,95,95,,,,,58,,,,58", ",,,,58,83,65,83,30,,83,83,,30,30,30,30,30,,30,,61,,,,,61,61,,,,,,,58", ",,61,,,,,,,65,,,,58,58,58,,65,,65,61,,,65,,,,,,,,,,,58,,,61,,65,,,,", ",65,,,,,,,,,,,,,,,,,,,65,,,30,30,30,30,30,30,30,,,,,,30,,,,,83,30,30", "30,30,,,,,,,,,,58,,61,,30,,,,,,,,,,,,,,,61,,,,,,,,,,,,61,,,,,,61,,58", ",,,61,,,,83,,58,30,,,,,,,30,30,61,,,,,,,30,,,,,,65,95,,,,,,,29,95,,", "30,29,,,30,,95,95,30,30,,,,,,,,,,,,,,,,58,,30,,,61,,29,,,58,83,,83,30", "83,,,,107,107,,,,,,58,,30,30,30,,,61,61,29,,,58,61,,58,,,,,,,58,30,", ",83,,,83,,,58,,,,58,,,65,,,83,,,,,,,,,,,,,,,61,,61,61,,,58,29,,58,58", ",,58,,61,29,,29,58,58,,,,58,58,,,,83,30,,,,,,,,83,83,,,,,61,,,,,,,,83", ",,,,,95,,95,,,95,95,83,,,,30,95,,,,,65,95,95,,30,,,,,95,95,,,,,65,,", ",,,,,,,,29,,29,,,29,,,,,,,29,,,,,,29,29,,,95,,,,,,,,,65,,,,29,,,30,", ",,,,83,,30,,30,,,,107,83,,30,83,,,,107,,,,30,,,,,107,107,,,,,58,30,", ",30,58,58,,,,,30,,,,,58,,,,,30,,,,30,,,,65,65,65,,,58,,,,,,29,,,,29", "65,,83,,29,,58,30,,,30,30,,,30,,,,,,30,30,,,,30,30,70,95,98,98,,70,", "29,,,95,,,,95,,,,,,,,29,29,70,,,,,,,,,,,,70,70,70,,,,58,,,,,,,,,,,,", ",,,95,58,,,,,70,,,,,,,58,,,70,70,70,58,,,,,107,58,107,,,107,107,,95", ",,,107,,,83,,58,107,107,,,,,,,107,107,,,,30,,,83,,,70,,,102,102,30,", ",,70,,70,,,,,,,,,,,,,,,,,107,,,30,,,,58,30,30,,,,,,,,,,30,,,,,,,,,,", ",,,,,58,58,30,,,,58,,,,,,,,,,,,,30,,,,,,,,,,,,70,,29,,,,98,,,,,,70,", "98,,,,70,58,,58,58,98,98,,,,,,,,,,58,70,,,,,29,,,29,,,,96,96,,,30,,", ",,,,,,107,,,58,29,,,,30,107,,,,107,,,,,,,30,,,,,,30,,,,,29,30,,29,,", ",29,,,,,,29,29,,,30,29,29,,30,,,70,,107,,70,,,,70,70,,102,,,,,,,,102", ",,,,,,34,70,102,102,,34,,,107,,,,,70,,,,,,,,,30,,,,,,70,70,,,,,,30,34", "34,34,,,,98,,98,,,98,98,,30,30,,,98,,30,,,,98,98,,,34,,,,98,98,,,,,34", "34,34,,,,,,,,,,,,,,,,,,,,,30,,,30,,30,30,,,,98,,,,,,,,30,,,,34,29,,", "96,,29,,,34,,34,96,,,,,29,,,,96,96,,,30,,,,,,,,,,29,,,,,,,,102,,102", ",,102,102,,,29,,,102,,,,,,102,102,,,,,,,102,102,,,,,,,,,,,,,,,,,,,,", ",,,34,,34,,,34,,,70,,,,34,,102,,70,,34,34,98,,,,,70,,39,,98,,,39,98", ",34,,,29,,,,,,,,70,,,70,,,,,,,29,,,,,,29,39,39,39,,,,,70,,,,,,,98,29", ",,,,,,,,96,,96,,39,96,96,,97,97,70,,96,,39,39,39,70,96,96,,,98,,,,96", "96,34,,,,34,,,,34,34,,,,,,,,,29,,,,,,,102,,34,38,,,39,,38,102,,,96,102", "34,39,,39,,,,29,29,,,,,29,,34,34,,,,,,,,,38,38,38,,,,,,,,,,,,,,,,102", ",,,,,,,,,38,,,,29,,,,,,38,38,38,,,,,,,,,,102,70,,,,,,,,,,39,70,39,,", "39,,,,,,,39,,,29,,,39,39,,,38,,,,,70,,,,38,70,38,,39,,,96,,,,,70,,,", "96,,,,96,,,,,,,,,,,,,,,,100,100,,,,97,,,,,,70,,97,,,,,,,,,97,97,,,,", "96,,,,,,,,,,,,,,,,,,,,39,38,,38,39,,38,34,39,39,,,96,38,,34,,,,38,38", ",,,34,,,39,,,,,,,,,38,,,39,,,,70,,34,,,34,,,,,,39,39,,,,,,70,,,,,,70", ",34,,,,,,,,,,,,,,70,,,,70,,101,101,,,,,,34,,,34,,,,34,,,,,,34,34,,,", "34,34,38,,,,38,,,,38,38,,,,,,,,,97,,97,,70,97,97,,,38,,,97,,,,,70,97", "97,,38,,,,,97,97,,,,,70,70,,100,38,38,70,,,,,100,,,,,,,,,100,100,,,", ",,,,,,,,97,,,,,,,,,,,,,,70,,,70,,,,,,,,,,,,,34,,,,,,,,,,,34,,,,,,,39", ",,,,,,,39,,,,,70,,,,39,,34,,,,,34,,,,,,,,,,,34,,,39,,,39,,,,,,,,,,99", "99,34,,,,,,101,,,39,,,,,101,,39,34,,,,,,101,101,97,,,,,,,,,97,,39,,97", "39,,,,39,,,100,,100,39,39,100,100,,39,39,,,100,,,,,38,100,100,,,,,,38", "100,100,,,,,,,38,,97,,,,,,,,,,,,,,,34,,,,38,,,38,,,,,,,100,,,97,34,", ",,,,34,,,,38,,,,,,,,,,,,34,,,,34,,,,,,,,,,,38,,,38,,,,38,,,,,,38,38", ",,39,38,38,,,,,,,,,39,,,101,,101,,,101,101,,,34,,,101,,,,,,101,101,", ",34,39,,,101,101,39,,,,99,,,,,34,34,39,99,,,34,,,,,,99,99,,,,100,,,39", ",,,,,100,,101,,100,,,,,,,39,,,,,,,,,,34,,,34,,,,,,,,,,,,,,,38,,,,,37", ",,,100,,38,,,,37,37,37,,,,,,,,,,37,37,34,37,37,,37,,,,38,,,,100,38,", ",,,,37,37,,,39,38,,,,,,,,,,,,,,,,,39,38,,,,,39,,,,,,,,,,,,38,101,,,39", ",,,39,,101,,,,101,,,,,99,,99,,,99,99,,,,,,99,,,,,,99,99,,,,,,,99,99", ",,,,,,,,,,,101,39,,,,,,,,,,,,,39,,,,,,,,38,,,,99,,,39,39,,101,,,39,", ",,,38,,,,,,38,,,,,37,37,,,37,37,,,,,,38,,,,38,,,37,,,,,,,39,,,39,,,37", ",,,,,,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37", "37,,,,,37,,38,,,,,,39,,,,,,,38,,,,,,,,37,37,,,,,,38,38,37,,,,38,99,", "37,,37,,,37,37,99,,,,99,,,,,,,,,,,,,,,,,,,,,,,,,,,38,,,38,,,,,,37,,37", ",,,,,99,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,38,,99,,,,,,,,,,,,,,,,,,,,,,,,", ",,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,37", ",,,,,,,,,,,,37,,,,,,,,,,37,,37,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,37,,,,,,,,,,37,,37,,37,,,,,,,,,,,,,,,,37,,,,,,,,,,37,,,37,,,,,,", ",37,,,37,,,,,,,,,,,,,37,37,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,37,37,37,,,,37,,,37,37,37,37,,,,37,37,,,,,,37,,,,,,,,,,,,,37,,,,", ",,,,,,,,,,,,,,,,,,,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,37,,,,,,,,,37,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,37,,,,,,,,,,,,,37,37,,,,,,,,,,", ",,,,,,,,,,,,,,,,37,37,37,37,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,37,,,,,,,,,", ",,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,37"]; - racc_goto_check = (arr = $$$('Array').$new(4695, nil)); + clist = ["72,198,158,91,91,72,75,75,36,36,36,68,46,198,31,230,230,48,107,19,19", "10,75,19,72,34,112,10,128,113,34,12,55,55,82,82,72,72,72,73,117,139", "139,94,33,110,110,11,92,228,228,228,77,77,13,33,135,70,133,22,111,34", "34,34,72,9,44,44,80,17,17,82,82,82,72,72,72,19,19,19,19,239,87,87,56", "56,56,235,8,34,95,20,95,8,20,51,31,32,187,34,34,34,69,41,41,177,177", "58,20,55,117,7,24,24,149,28,26,26,119,57,26,129,72,239,89,89,152,192", "89,28,87,72,231,72,151,225,225,200,200,5,35,35,64,193,2,157,157,34,90", "90,90,127,8,147,130,236,34,145,34,207,161,6,3,10,214,214,29,14,65,178", "178,29,161,16,26,26,26,26,18,178,94,90,90,175,224,224,13,21,66,25,239", "230,176,74,74,27,42,91,36,43,95,95,29,45,202,202,50,52,60,5,8,78,215", "215,215,215,72,83,84,8,86,8,75,93,152,236,105,11,72,106,29,114,151,116", "72,149,198,120,121,122,123,34,124,34,128,125,34,126,128,131,136,72,142", "34,22,22,143,150,22,34,34,112,11,146,66,146,26,26,33,88,88,88,22,73", "153,154,34,2,6,155,36,36,156,26,26,70,159,66,29,36,160,162,164,165,70", "168,169,29,170,29,192,171,88,172,173,180,182,200,95,192,31,225,33,183", "87,87,63,63,63,184,145,157,188,91,189,55,55,147,58,91,195,72,68,196", "19,72,82,129,205,72,72,206,149,1,26,210,11,211,193,212,119,11,51,127", "130,82,34,192,72,213,34,216,175,217,34,34,117,175,175,218,72,33,35,35", "32,219,176,176,80,220,31,223,29,34,29,72,72,29,32,33,229,9,202,202,29", "34,11,11,55,233,29,29,234,69,235,,,187,55,,34,34,,73,,,,29,31,8,33,90", ",75,117,66,230,111,31,90,,26,91,10,,,55,7,91,,,64,,,55,36,64,128,128", "32,,119,26,13,88,88,215,231,215,,,139,,31,66,5,,65,33,77,228,228,65", "228,228,,228,,,32,,55,55,230,36,230,17,,32,,91,,,133,36,,110,29,57,", "70,29,66,57,,,29,40,,,66,32,66,56,79,75,66,94,239,56,,,,5,,72,72,91", "79,95,92,,66,,146,,29,40,66,200,200,88,88,20,117,,225,,,200,88,29,29", "20,20,200,157,66,20,20,68,174,174,91,36,41,231,177,73,68,89,32,,91,28", "28,32,32,72,28,28,13,146,82,191,,72,24,75,63,,191,82,,,72,,63,75,200", "94,91,36,34,,,,,56,91,,34,36,,,,72,,,72,34,,,,113,44,75,11,,,11,,75", ",,139,139,10,,,72,34,,135,34,231,91,36,128,128,,,,,,,,117,,,,,,75,66", "34,198,72,,,140,75,,140,72,,117,110,228,228,228,228,,,90,,,,32,32,32", ",34,,,34,,146,,34,146,,,,,34,34,22,,77,34,34,,,,,,22,22,,12,,22,22,", "90,17,,112,,,,,,107,,,,,,,139,200,72,29,,20,,110,,110,72,,,230,8,,87", ",158,72,72,8,,191,,46,28,,,146,48,228,191,,68,75,191,,174,,91,29,,91", "29,68,174,10,,,,,,90,19,,,82,,,72,230,,,,29,,,82,,,72,79,,79,,,,,,191", ",,,,34,,,,,132,,29,40,,29,34,,72,29,,32,,72,,29,29,,,11,29,29,191,,72", ",,40,10,,66,88,26,34,,11,,,34,,,,,,,66,,,,34,,,,,,,,,10,72,79,26,,,", ",,34,,,11,90,,19,,,,,,22,,,,,34,,230,66,,230,,72,,72,,,72,72,88,66,", ",19,72,,,,40,,72,72,,,,140,,,72,72,,,31,87,,,,87,174,,,,,174,174,,,198", ",,55,72,,79,79,,174,,79,79,,,11,,,,,72,,72,230,66,66,66,132,72,34,132", ",132,11,26,,,,29,,66,,,29,72,82,,34,72,,,,59,34,29,11,174,59,,,,,,26", "117,,,40,,34,,,29,34,59,,,,,,,,,,59,59,59,,59,29,,,,,,,,,,72,132,,132", ",132,,132,,,82,,,72,,,,59,,,,,59,59,132,34,59,,,72,72,19,19,,,72,,,34", "140,11,,140,,,140,11,140,72,,144,,144,,34,34,,72,,,34,72,,,,,33,,,91", "36,29,,82,,59,72,98,98,72,59,59,59,59,59,,59,,,29,11,,,,75,29,,,,,79", "34,,,34,72,,,,,,29,,,,140,,140,75,140,,140,,72,,,,,26,26,,,,,11,,232", "72,140,,,,,,79,79,79,79,34,40,,,,,,,,,,,,,,40,40,,29,,,59,59,59,59,59", "59,59,,,,,,59,,,,,,59,59,59,59,,,,,29,29,85,30,,,29,,30,59,,,,,,,,,", ",,,,,,30,,,,40,,,,,,30,30,30,,30,30,30,,,,,,,,,29,,,,,59,,,,40,,,59", "59,,79,,30,40,,,59,30,30,40,,30,30,30,30,,,141,141,141,,,,,59,,40,,59", "29,,,,59,,98,232,,,232,,,232,98,232,,,,,,97,97,98,98,,,,,,144,30,,,59", ",30,30,30,30,30,,30,,,,,,59,59,59,,,,,,,40,,85,85,,40,40,,,,,,59,,,", ",,,,,144,,144,,144,232,,232,,232,,232,,,,,141,141,141,141,,141,,40,", ",,,232,,,,,,,,,,,,,,,,,,,30,30,30,30,30,30,30,,59,,,,30,141,141,141", "141,,30,30,30,30,,,,141,,,,,,,,,,30,,85,,85,,,85,85,,,,59,,40,40,40", ",,,,,59,,40,98,,98,,,98,98,,,,,144,98,144,,,,,98,98,,30,,40,,,98,98", "30,30,,,,,,,,30,,144,,,,,,,,,,,,,,,97,30,,59,,30,,,97,30,30,98,,59,", ",,97,97,,,,,,,,,144,30,144,,144,,38,,,,85,38,,30,59,,,59,,,40,,,144", "59,,,30,30,30,,,,,59,,,,59,,,,38,38,38,,,,30,,,,,,,,,,,,,,40,,,59,,", "59,59,38,85,59,,,,,,59,59,38,38,38,59,59,,,,,,,,,,,,,,,,,,,,,,,,,,,98", "30,,,,,,,,98,,,,98,,,,38,,,,,,,,,38,,38,,,,,85,,85,,85,,,30,97,,97,", ",97,97,,,30,,,97,,,,98,,97,97,,,,,,,97,97,,,,,,85,,,85,,,,,,,,,,,,98", "85,,,,,,,,,,,,,59,,,97,,,,30,38,,38,,,38,,30,,30,,,38,,,59,30,,38,38", "59,59,,85,,,,,,,,59,85,85,,38,,30,,,30,,,,,,85,30,,59,,,,,,,,30,,,85", "30,,,,,59,,,,,,,,,,,,,,,,,,,,,,30,,,30,30,,,30,,,,,,30,30,,,,30,30,", ",,,,,,38,,,,38,,,97,38,38,,,,,,59,97,,,,97,,,,,85,,38,,,,,59,,85,,,85", ",38,,,,,59,,,,,,59,,,,38,38,59,,,,,,,,97,,,,,,,,59,,,,,,,,,,,,,,,,,", ",,,,,,97,,,,,,,,85,,,30,,,,,23,,,,,23,30,,,,30,,,,,59,,,,,,,,,,,,,,", ",,,30,,,23,,30,30,,,,,59,59,,,,30,59,,,39,,,,,39,,,,,,23,,,30,,,,,,", "23,109,109,,,,,,,,30,,,,,39,39,39,,,59,,59,59,,,,,,,,,,,,59,,,,,,85", ",39,,,,,23,,,,,39,39,39,,23,,23,85,38,,,59,,,,,38,,,,,30,,,,38,,,,,", ",,,,,,,30,,,,,,,,38,,39,38,30,,,104,104,,30,39,,39,,,30,,,,,,,,38,,", ",,,,,30,,,,30,,,,,,,23,,23,,,23,,,38,,,38,23,,,38,,,23,23,,38,38,,,", "38,38,,,,,,,,23,,,,,,,,,30,,,,,,,,,39,,39,,30,39,,,,,,,39,,,,,,39,39", "30,30,,,109,,30,,,,,,109,,,39,,,,,,109,109,,103,103,,,,,,,,,,,,,,,,", "23,,,,23,30,,,30,23,30,30,,,,,,,,,,,,30,,,,38,,,,,,,,,,,38,23,,,,,,", ",,,,,,30,39,23,23,,39,,,,39,39,,,38,,104,,,38,,,,,104,,,,,39,38,,,104", "104,,,,,,,39,,,,,,,38,71,,,,,71,,39,39,,,,,,,,38,,,,,,,,71,,,,,,,,,", ",,71,71,71,,,109,,109,,,109,109,,,,,,109,,,,,,109,109,,,,71,,,109,109", ",,,,,71,71,71,,,,,,,,,,,,,,,,,,102,102,,38,,,103,,,,,,109,,103,,,,,", ",38,,103,103,,,38,71,,,,,,,,,71,,71,,,,38,,101,101,38,,,,,104,23,104", ",,104,104,,,,,,104,,,,,,104,104,,,,,,,104,104,,,,,,,,,,,,23,,,23,,,", "38,,,,,,,,39,,,,,38,,,39,23,,104,,,,,71,39,,,,38,38,,,,,38,71,100,100", ",,109,71,,23,,39,23,,39,109,23,,,109,,,23,23,71,,,23,23,,,,,,,39,,,", ",,38,39,,38,,,,,,,,103,,103,,,103,103,,,,39,109,103,39,,,,39,103,103", ",,,39,39,,103,103,39,39,,,,102,,,38,,,,,102,,109,,,,,,,102,102,71,,", ",71,,,104,71,71,,,,103,,,104,,,,104,,,,,,101,71,,,,,,,101,,,,,71,,,", "101,101,,,,,,,,,,71,71,,,,,,,,,104,,,,,,,,,,,,,23,,,,,23,,,,,,,,,,39", "23,,,104,,,,,,,39,,,,,,,,23,,,,,100,,,,,,,,100,,,,23,,39,,,100,100,39", ",,,,103,,,,,,39,,,103,,,,103,,,,,,,102,,102,,39,102,102,,,,,,102,,,", ",,102,102,,39,,,,,102,102,,,,,,,,,,103,,99,99,,,,,101,,101,,23,101,101", ",,,,,101,,,,,,101,101,102,,23,,103,,101,101,23,,,,,,,,,,,,,,71,,23,", ",,23,,71,,,,,,,39,,71,,,,,,101,,,,,,,,,,39,,,,,71,39,,71,,,,,,,100,", "100,,,100,100,39,,23,,39,100,,71,,,,100,100,62,,,,,62,100,100,,,,,,", ",,,,23,23,,71,62,,23,,,,71,,,,62,62,62,,62,102,,,,,39,,,100,102,,,,102", ",,,,39,,,,,,,,,62,,,,23,62,62,39,39,62,,,,39,,,,,101,,,,,,,,,101,,,102", "101,,,,,,,99,,,,,,,,99,,23,,,,,,39,99,99,39,62,,,,102,62,62,62,62,62", ",62,,,,,,101,,,,,,,,,,,,,,,,71,,,,,,,,,,39,71,,,,,101,100,,,,,,,,,100", ",,,100,,,,,,,,71,,,,,71,,,,,,,,,,,71,,,,,,,62,62,62,62,62,62,62,,,,", ",62,100,,,,,62,62,62,62,,,,,,,71,,,,,,,62,,,,,,,,,,100,,,,,,,,,,,,,", ",,,,,,99,,99,,,99,99,,,,,,99,,,,62,,99,99,,,,62,62,,99,99,,,,,62,,,", ",,,,,,,,71,,,,,,62,,,,62,,,,,62,,,71,,,99,,,71,,,,,,,,,,,,,,,,71,,,", "71,62,,,,,,,,,,,,,,62,62,62,,,,,,,,,,,,,,,,,,,62,,,,,,,,,,,,,,,71,,", ",,,,,,,,,,71,,,,,,,,,,,,,,,,71,71,,,,,71,,,,,,,,,,,37,,,62,,,,99,,,37", "37,37,,,,99,,,,99,,37,37,,37,37,,37,,71,,,71,,,,,,,,,62,37,37,,,,,,", ",62,,,,,,,,,,,,99,,,,,,,,,,,,,71,,,,,,,,,,,,,,,,,,,99,,,,,,,,,,,,,,", ",62,,,,,,,,,,62,,,,,,,,,,,,,,,,,,,,,,,,,,,,62,,,62,,,,,,,62,,,,,,,,", ",62,,,,62,,,,,,,,,,,,,,,,,,,,,37,37,,,37,37,62,,,62,62,,,62,,,,,37,62", "62,,,,62,62,,,,,,37,,,,,,,37,37,37,37,37,37,37,37,37,37,37,37,37,37", "37,37,37,37,37,37,37,37,,,,,37,,,,,,,,,,,,,,,,,,,,,,,37,37,,,,,,,,37", ",,,,,,37,,37,,,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,", "62,,,,,,,,,,,,,,,,,,,,,,,62,,,,,62,62,,,,,,,,,,62,,,,,,,,,,,,,,,,,,62", ",,,,37,,,,,,,,,,,,62,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,", ",,,37,,,,,,,,,,,,,37,,62,,,,,,,,37,,37,37,37,,,,,62,,,,,,,,,,,,62,,", ",,,62,,,,,,62,,,,,,,37,,,,,,,,,62,37,,37,,37,,,,,,,,,,,,,,,,37,,,,,", ",,,,37,,,37,,37,,,,,,37,,,37,,,,,,,,,,62,,,37,37,,,,,,,,,,37,,,,,,,", ",,,,,,,62,62,,,,,62,,,,,,,,,,,,37,37,37,,,,37,,,37,37,37,37,,,,37,37", ",,,,,37,,,,,,,,,62,,62,62,,37,,,,,,,,,,62,,,,,,,,,,,,,,37,37,,,,,,,", ",,,,,,62,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,37,,,37", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37", ",,,,,,,37,,,,,,,,,,,,,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,37,37,37,37", "37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,", ",,,,37,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37"]; + racc_goto_check = (arr = $$$('Array').$new(4752, nil)); idx = 0; $send(clist, 'each', [], function $Ruby31$8(str){ @@ -20376,16 +20329,16 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ $writer[$rb_minus($writer["length"], 1)]; }; return (idx = $rb_plus(idx, 1));}, 1);}, 1); - racc_goto_pointer = [nil, 318, 136, 167, nil, 83, 150, 95, 140, 102, -188, 15, -449, -628, -707, nil, -397, 47, 171, -25, -2, 110, 35, 23, -144, -16, -59, 68, -107, 1689, 1365, -198, -418, 0, 2403, 168, -28, 3539, 2759, 2643, 84, -441, -50, -50, -25, -415, -15, nil, -7, 179, 56, -342, nil, nil, -208, 100, -221, -406, 1143, -347, nil, 663, 134, 86, 108, 972, nil, 17, 94, -297, 2049, -2, -367, 94, -9, nil, 17, -219, 47, 75, nil, 2, 159, 1164, 144, 15, 149, -265, 82, -28, -272, -340, -263, -504, nil, 943, 1787, 2189, 1529, 2747, 2401, 2538, 1649, 191, 151, -48, nil, 1215, -338, -747, -336, -596, 144, -182, 35, 46, 158, -144, 161, -408, -610, -171, -787, -414, -356, -763, -672, -95, -599, nil, -730, nil, -349, 58, 178, -827, -724, 86, -830, -152, -644, nil, -717, -848, -930, -913, -160, -598, 171, -386, -79, -18, -736, -736, -388, -23, nil, -28, -26, nil, nil, -494, -796, -692, -920, -534, -841, 9, -619, -593, -432, -734, nil, -618, nil, -618, -437, -434, nil, nil, -621, -431, -431, nil, -708, -831, -779, nil, -626, -625, nil, -77, nil, -384, nil, -593, nil, nil, -455, -374, -725, nil, nil, 237, 235, 238, 241, -214, -41, 241, 244, 246, -300, -300, nil, nil, -289, -154, -116, nil, nil, -382, -337, -144, -643, -137, -330, -753, -610, -977, nil, nil, -517]; - racc_goto_default = [nil, nil, nil, nil, 5, nil, 6, 388, 331, nil, nil, 469, nil, 978, nil, 328, 329, nil, nil, nil, 13, 14, 22, 244, nil, nil, 16, nil, 438, 245, 360, nil, nil, 634, 248, nil, 27, 25, 249, 243, 514, nil, nil, nil, nil, nil, nil, 383, 140, nil, nil, nil, 28, 29, 808, nil, nil, nil, 348, nil, 30, 345, 452, 37, nil, nil, 39, 42, 41, nil, 240, 241, 400, nil, 460, 139, 84, nil, 443, 100, 51, 54, 280, 320, nil, 886, 453, nil, 454, 465, 477, 683, 566, 318, 304, 55, 56, 57, 58, 59, 60, 61, 62, 63, nil, 305, 69, 70, nil, nil, nil, nil, nil, nil, 616, 227, nil, nil, nil, nil, nil, nil, 707, 489, nil, 708, 709, 475, 471, 472, 1172, 1065, nil, 476, nil, nil, nil, 478, nil, 480, nil, 965, nil, nil, nil, 487, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 464, nil, nil, 787, 779, nil, nil, nil, nil, nil, nil, 1045, nil, 732, 931, 734, 735, 739, 736, 737, nil, nil, 738, 740, nil, nil, nil, 930, 932, nil, 744, 746, 747, 748, 749, nil, 753, 498, 754, 755, 756, 757, nil, nil, nil, 83, 85, 86, nil, nil, nil, nil, 644, nil, nil, nil, nil, nil, 96, 97, nil, 228, 896, 231, 474, nil, 479, 904, 492, 494, 495, 1076, 499, 1077, 502, 505, 323]; - racc_reduce_table = [0, 0, "racc_error", 0, 150, "_reduce_1", 2, 148, "_reduce_2", 2, 149, "_reduce_3", 0, 151, "_reduce_4", 1, 151, "_reduce_5", 3, 151, "_reduce_6", 2, 151, "_reduce_7", 1, 153, "_reduce_none", 2, 153, "_reduce_9", 3, 156, "_reduce_10", 4, 157, "_reduce_11", 2, 158, "_reduce_12", 0, 162, "_reduce_13", 1, 162, "_reduce_14", 3, 162, "_reduce_15", 2, 162, "_reduce_16", 1, 163, "_reduce_none", 2, 163, "_reduce_18", 0, 174, "_reduce_19", 4, 155, "_reduce_20", 3, 155, "_reduce_21", 3, 155, "_reduce_22", 3, 155, "_reduce_23", 2, 155, "_reduce_24", 3, 155, "_reduce_25", 3, 155, "_reduce_26", 3, 155, "_reduce_27", 3, 155, "_reduce_28", 3, 155, "_reduce_29", 4, 155, "_reduce_30", 1, 155, "_reduce_none", 3, 155, "_reduce_32", 3, 155, "_reduce_33", 5, 155, "_reduce_34", 3, 155, "_reduce_35", 1, 155, "_reduce_none", 3, 167, "_reduce_37", 3, 167, "_reduce_38", 6, 167, "_reduce_39", 5, 167, "_reduce_40", 5, 167, "_reduce_41", 5, 167, "_reduce_42", 5, 167, "_reduce_43", 4, 167, "_reduce_44", 6, 167, "_reduce_45", 4, 167, "_reduce_46", 6, 167, "_reduce_47", 3, 167, "_reduce_48", 1, 175, "_reduce_none", 3, 175, "_reduce_50", 1, 175, "_reduce_none", 1, 173, "_reduce_none", 3, 173, "_reduce_53", 3, 173, "_reduce_54", 3, 173, "_reduce_55", 2, 173, "_reduce_56", 0, 189, "_reduce_57", 4, 173, "_reduce_58", 0, 190, "_reduce_59", 4, 173, "_reduce_60", 1, 173, "_reduce_none", 1, 166, "_reduce_none", 0, 194, "_reduce_63", 3, 191, "_reduce_64", 1, 193, "_reduce_65", 2, 181, "_reduce_66", 0, 198, "_reduce_67", 5, 185, "_reduce_68", 1, 169, "_reduce_none", 1, 169, "_reduce_none", 1, 199, "_reduce_none", 4, 199, "_reduce_72", 0, 206, "_reduce_73", 4, 203, "_reduce_74", 1, 205, "_reduce_none", 2, 183, "_reduce_76", 3, 183, "_reduce_77", 4, 183, "_reduce_78", 5, 183, "_reduce_79", 4, 183, "_reduce_80", 5, 183, "_reduce_81", 2, 183, "_reduce_82", 2, 183, "_reduce_83", 2, 183, "_reduce_84", 2, 183, "_reduce_85", 2, 183, "_reduce_86", 1, 168, "_reduce_87", 3, 168, "_reduce_88", 1, 211, "_reduce_89", 3, 211, "_reduce_90", 1, 210, "_reduce_none", 2, 210, "_reduce_92", 3, 210, "_reduce_93", 5, 210, "_reduce_94", 2, 210, "_reduce_95", 4, 210, "_reduce_96", 2, 210, "_reduce_97", 4, 210, "_reduce_98", 1, 210, "_reduce_99", 3, 210, "_reduce_100", 1, 214, "_reduce_none", 3, 214, "_reduce_102", 2, 213, "_reduce_103", 3, 213, "_reduce_104", 1, 216, "_reduce_105", 3, 216, "_reduce_106", 1, 215, "_reduce_107", 1, 215, "_reduce_108", 4, 215, "_reduce_109", 3, 215, "_reduce_110", 3, 215, "_reduce_111", 3, 215, "_reduce_112", 3, 215, "_reduce_113", 2, 215, "_reduce_114", 1, 215, "_reduce_115", 1, 170, "_reduce_116", 1, 170, "_reduce_117", 4, 170, "_reduce_118", 3, 170, "_reduce_119", 3, 170, "_reduce_120", 3, 170, "_reduce_121", 3, 170, "_reduce_122", 2, 170, "_reduce_123", 1, 170, "_reduce_124", 1, 219, "_reduce_125", 1, 219, "_reduce_none", 2, 220, "_reduce_127", 1, 220, "_reduce_128", 3, 220, "_reduce_129", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 164, "_reduce_135", 1, 164, "_reduce_none", 1, 165, "_reduce_137", 0, 224, "_reduce_138", 4, 165, "_reduce_139", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 221, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 3, 184, "_reduce_211", 3, 184, "_reduce_212", 6, 184, "_reduce_213", 5, 184, "_reduce_214", 5, 184, "_reduce_215", 5, 184, "_reduce_216", 5, 184, "_reduce_217", 4, 184, "_reduce_218", 3, 184, "_reduce_219", 3, 184, "_reduce_220", 3, 184, "_reduce_221", 2, 184, "_reduce_222", 2, 184, "_reduce_223", 2, 184, "_reduce_224", 2, 184, "_reduce_225", 3, 184, "_reduce_226", 3, 184, "_reduce_227", 3, 184, "_reduce_228", 3, 184, "_reduce_229", 3, 184, "_reduce_230", 3, 184, "_reduce_231", 4, 184, "_reduce_232", 2, 184, "_reduce_233", 2, 184, "_reduce_234", 3, 184, "_reduce_235", 3, 184, "_reduce_236", 3, 184, "_reduce_237", 3, 184, "_reduce_238", 1, 184, "_reduce_none", 3, 184, "_reduce_240", 3, 184, "_reduce_241", 3, 184, "_reduce_242", 3, 184, "_reduce_243", 3, 184, "_reduce_244", 2, 184, "_reduce_245", 2, 184, "_reduce_246", 3, 184, "_reduce_247", 3, 184, "_reduce_248", 3, 184, "_reduce_249", 3, 184, "_reduce_250", 3, 184, "_reduce_251", 6, 184, "_reduce_252", 4, 184, "_reduce_253", 6, 184, "_reduce_254", 4, 184, "_reduce_255", 6, 184, "_reduce_256", 1, 184, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 3, 227, "_reduce_262", 3, 227, "_reduce_263", 1, 230, "_reduce_none", 1, 231, "_reduce_none", 2, 231, "_reduce_none", 4, 231, "_reduce_267", 2, 231, "_reduce_268", 1, 225, "_reduce_none", 3, 225, "_reduce_270", 3, 236, "_reduce_271", 5, 236, "_reduce_272", 3, 236, "_reduce_273", 0, 238, "_reduce_274", 1, 238, "_reduce_none", 0, 178, "_reduce_276", 1, 178, "_reduce_none", 2, 178, "_reduce_none", 4, 178, "_reduce_279", 2, 178, "_reduce_280", 1, 209, "_reduce_281", 2, 209, "_reduce_282", 2, 209, "_reduce_283", 4, 209, "_reduce_284", 1, 209, "_reduce_285", 0, 241, "_reduce_286", 2, 202, "_reduce_287", 2, 240, "_reduce_288", 1, 240, "_reduce_289", 2, 239, "_reduce_290", 0, 239, "_reduce_291", 1, 233, "_reduce_292", 2, 233, "_reduce_293", 3, 233, "_reduce_294", 4, 233, "_reduce_295", 1, 172, "_reduce_296", 1, 172, "_reduce_none", 3, 171, "_reduce_298", 4, 171, "_reduce_299", 2, 171, "_reduce_300", 1, 228, "_reduce_none", 1, 228, "_reduce_none", 1, 228, "_reduce_none", 1, 228, "_reduce_none", 1, 228, "_reduce_none", 1, 228, "_reduce_none", 1, 228, "_reduce_none", 1, 228, "_reduce_none", 1, 228, "_reduce_none", 1, 228, "_reduce_none", 1, 228, "_reduce_311", 0, 263, "_reduce_312", 4, 228, "_reduce_313", 0, 264, "_reduce_314", 4, 228, "_reduce_315", 0, 265, "_reduce_316", 4, 228, "_reduce_317", 3, 228, "_reduce_318", 3, 228, "_reduce_319", 2, 228, "_reduce_320", 3, 228, "_reduce_321", 3, 228, "_reduce_322", 1, 228, "_reduce_323", 4, 228, "_reduce_324", 3, 228, "_reduce_325", 1, 228, "_reduce_326", 5, 228, "_reduce_327", 4, 228, "_reduce_328", 3, 228, "_reduce_329", 2, 228, "_reduce_330", 1, 228, "_reduce_none", 2, 228, "_reduce_332", 1, 228, "_reduce_none", 6, 228, "_reduce_334", 6, 228, "_reduce_335", 4, 228, "_reduce_336", 4, 228, "_reduce_337", 5, 228, "_reduce_338", 4, 228, "_reduce_339", 5, 228, "_reduce_340", 6, 228, "_reduce_341", 0, 266, "_reduce_342", 6, 228, "_reduce_343", 0, 267, "_reduce_344", 7, 228, "_reduce_345", 0, 268, "_reduce_346", 5, 228, "_reduce_347", 4, 228, "_reduce_348", 4, 228, "_reduce_349", 1, 228, "_reduce_350", 1, 228, "_reduce_351", 1, 228, "_reduce_352", 1, 228, "_reduce_353", 1, 177, "_reduce_none", 1, 208, "_reduce_355", 1, 255, "_reduce_none", 1, 255, "_reduce_none", 2, 255, "_reduce_358", 1, 192, "_reduce_none", 1, 192, "_reduce_none", 1, 256, "_reduce_none", 5, 256, "_reduce_362", 1, 160, "_reduce_none", 2, 160, "_reduce_364", 1, 259, "_reduce_none", 1, 259, "_reduce_none", 1, 269, "_reduce_367", 3, 269, "_reduce_368", 1, 272, "_reduce_369", 3, 272, "_reduce_370", 1, 271, "_reduce_none", 3, 271, "_reduce_372", 5, 271, "_reduce_373", 1, 271, "_reduce_374", 3, 271, "_reduce_375", 2, 273, "_reduce_376", 1, 273, "_reduce_377", 1, 274, "_reduce_none", 1, 274, "_reduce_none", 4, 277, "_reduce_380", 2, 277, "_reduce_381", 2, 277, "_reduce_382", 1, 277, "_reduce_383", 2, 281, "_reduce_384", 0, 281, "_reduce_385", 1, 282, "_reduce_none", 6, 283, "_reduce_387", 8, 283, "_reduce_388", 4, 283, "_reduce_389", 6, 283, "_reduce_390", 4, 283, "_reduce_391", 2, 283, "_reduce_none", 6, 283, "_reduce_393", 2, 283, "_reduce_394", 4, 283, "_reduce_395", 6, 283, "_reduce_396", 2, 283, "_reduce_397", 4, 283, "_reduce_398", 2, 283, "_reduce_399", 4, 283, "_reduce_400", 1, 283, "_reduce_none", 0, 287, "_reduce_402", 1, 287, "_reduce_403", 3, 288, "_reduce_404", 4, 288, "_reduce_405", 1, 289, "_reduce_406", 4, 289, "_reduce_407", 1, 290, "_reduce_408", 3, 290, "_reduce_409", 1, 291, "_reduce_410", 1, 291, "_reduce_none", 0, 295, "_reduce_412", 0, 296, "_reduce_413", 5, 254, "_reduce_414", 4, 293, "_reduce_415", 1, 293, "_reduce_416", 0, 299, "_reduce_417", 4, 294, "_reduce_418", 0, 300, "_reduce_419", 4, 294, "_reduce_420", 0, 302, "_reduce_421", 4, 298, "_reduce_422", 2, 200, "_reduce_423", 4, 200, "_reduce_424", 5, 200, "_reduce_425", 5, 200, "_reduce_426", 2, 253, "_reduce_427", 4, 253, "_reduce_428", 4, 253, "_reduce_429", 3, 253, "_reduce_430", 3, 253, "_reduce_431", 3, 253, "_reduce_432", 2, 253, "_reduce_433", 1, 253, "_reduce_434", 4, 253, "_reduce_435", 0, 304, "_reduce_436", 4, 252, "_reduce_437", 0, 305, "_reduce_438", 4, 252, "_reduce_439", 0, 306, "_reduce_440", 3, 204, "_reduce_441", 0, 307, "_reduce_442", 0, 308, "_reduce_443", 4, 301, "_reduce_444", 5, 257, "_reduce_445", 1, 309, "_reduce_446", 1, 309, "_reduce_none", 0, 312, "_reduce_448", 0, 313, "_reduce_449", 7, 258, "_reduce_450", 1, 311, "_reduce_451", 1, 311, "_reduce_none", 1, 310, "_reduce_453", 3, 310, "_reduce_454", 3, 310, "_reduce_455", 1, 188, "_reduce_none", 2, 188, "_reduce_457", 3, 188, "_reduce_458", 1, 188, "_reduce_459", 1, 188, "_reduce_460", 1, 188, "_reduce_461", 1, 314, "_reduce_none", 3, 319, "_reduce_463", 1, 319, "_reduce_none", 3, 321, "_reduce_465", 1, 321, "_reduce_none", 1, 323, "_reduce_467", 1, 324, "_reduce_468", 1, 322, "_reduce_none", 1, 322, "_reduce_none", 4, 322, "_reduce_471", 4, 322, "_reduce_472", 4, 322, "_reduce_473", 3, 322, "_reduce_474", 4, 322, "_reduce_475", 4, 322, "_reduce_476", 4, 322, "_reduce_477", 3, 322, "_reduce_478", 3, 322, "_reduce_479", 3, 322, "_reduce_480", 2, 322, "_reduce_481", 0, 328, "_reduce_482", 4, 322, "_reduce_483", 2, 322, "_reduce_484", 0, 329, "_reduce_485", 4, 322, "_reduce_486", 1, 315, "_reduce_487", 1, 315, "_reduce_488", 2, 315, "_reduce_489", 3, 315, "_reduce_490", 5, 315, "_reduce_491", 2, 315, "_reduce_492", 4, 315, "_reduce_493", 1, 315, "_reduce_none", 2, 330, "_reduce_495", 3, 330, "_reduce_496", 1, 317, "_reduce_497", 3, 317, "_reduce_498", 5, 316, "_reduce_499", 2, 333, "_reduce_500", 1, 333, "_reduce_501", 1, 332, "_reduce_502", 3, 332, "_reduce_503", 1, 331, "_reduce_none", 3, 318, "_reduce_505", 1, 318, "_reduce_506", 2, 318, "_reduce_507", 1, 318, "_reduce_508", 1, 334, "_reduce_509", 3, 334, "_reduce_510", 2, 336, "_reduce_511", 1, 336, "_reduce_512", 1, 337, "_reduce_513", 3, 337, "_reduce_514", 2, 339, "_reduce_515", 1, 339, "_reduce_516", 2, 341, "_reduce_517", 1, 335, "_reduce_none", 1, 335, "_reduce_none", 1, 325, "_reduce_none", 3, 325, "_reduce_521", 3, 325, "_reduce_522", 2, 325, "_reduce_523", 2, 325, "_reduce_524", 1, 325, "_reduce_none", 1, 325, "_reduce_none", 1, 325, "_reduce_none", 2, 325, "_reduce_528", 2, 325, "_reduce_529", 1, 342, "_reduce_none", 1, 342, "_reduce_none", 1, 342, "_reduce_none", 1, 342, "_reduce_none", 1, 342, "_reduce_none", 1, 342, "_reduce_none", 1, 342, "_reduce_none", 1, 342, "_reduce_none", 1, 342, "_reduce_538", 1, 342, "_reduce_none", 1, 320, "_reduce_540", 2, 343, "_reduce_541", 2, 343, "_reduce_542", 4, 344, "_reduce_543", 2, 326, "_reduce_544", 3, 326, "_reduce_545", 1, 326, "_reduce_546", 6, 159, "_reduce_547", 0, 159, "_reduce_548", 1, 346, "_reduce_549", 1, 346, "_reduce_none", 1, 346, "_reduce_none", 2, 347, "_reduce_552", 1, 347, "_reduce_none", 2, 161, "_reduce_554", 1, 161, "_reduce_none", 1, 242, "_reduce_none", 1, 242, "_reduce_none", 1, 243, "_reduce_558", 1, 349, "_reduce_559", 2, 349, "_reduce_560", 3, 350, "_reduce_561", 1, 350, "_reduce_562", 1, 350, "_reduce_563", 3, 244, "_reduce_564", 4, 245, "_reduce_565", 3, 246, "_reduce_566", 0, 353, "_reduce_567", 3, 353, "_reduce_568", 1, 354, "_reduce_569", 2, 354, "_reduce_570", 3, 248, "_reduce_571", 0, 356, "_reduce_572", 3, 356, "_reduce_573", 3, 247, "_reduce_574", 3, 249, "_reduce_575", 0, 357, "_reduce_576", 3, 357, "_reduce_577", 0, 358, "_reduce_578", 3, 358, "_reduce_579", 0, 338, "_reduce_580", 2, 338, "_reduce_581", 0, 351, "_reduce_582", 2, 351, "_reduce_583", 0, 352, "_reduce_584", 2, 352, "_reduce_585", 1, 355, "_reduce_586", 2, 355, "_reduce_587", 0, 360, "_reduce_588", 4, 355, "_reduce_589", 1, 359, "_reduce_590", 1, 359, "_reduce_591", 1, 359, "_reduce_592", 1, 359, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 361, "_reduce_596", 3, 362, "_reduce_597", 1, 348, "_reduce_598", 2, 348, "_reduce_599", 1, 226, "_reduce_600", 1, 226, "_reduce_601", 1, 226, "_reduce_602", 1, 226, "_reduce_603", 1, 345, "_reduce_604", 1, 345, "_reduce_605", 1, 345, "_reduce_606", 1, 217, "_reduce_607", 1, 217, "_reduce_608", 1, 217, "_reduce_609", 1, 217, "_reduce_610", 1, 217, "_reduce_611", 1, 218, "_reduce_612", 1, 218, "_reduce_613", 1, 218, "_reduce_614", 1, 218, "_reduce_615", 1, 218, "_reduce_616", 1, 218, "_reduce_617", 1, 218, "_reduce_618", 1, 250, "_reduce_619", 1, 250, "_reduce_620", 1, 176, "_reduce_621", 1, 176, "_reduce_622", 1, 186, "_reduce_623", 1, 186, "_reduce_624", 0, 363, "_reduce_625", 4, 260, "_reduce_626", 0, 260, "_reduce_627", 1, 182, "_reduce_none", 1, 182, "_reduce_629", 3, 364, "_reduce_630", 1, 262, "_reduce_none", 0, 366, "_reduce_632", 3, 262, "_reduce_633", 4, 365, "_reduce_634", 2, 365, "_reduce_635", 2, 365, "_reduce_636", 1, 365, "_reduce_637", 1, 365, "_reduce_638", 2, 368, "_reduce_639", 0, 368, "_reduce_640", 6, 297, "_reduce_641", 8, 297, "_reduce_642", 4, 297, "_reduce_643", 6, 297, "_reduce_644", 4, 297, "_reduce_645", 6, 297, "_reduce_646", 2, 297, "_reduce_647", 4, 297, "_reduce_648", 6, 297, "_reduce_649", 2, 297, "_reduce_650", 4, 297, "_reduce_651", 2, 297, "_reduce_652", 4, 297, "_reduce_653", 1, 297, "_reduce_654", 0, 297, "_reduce_655", 1, 237, "_reduce_656", 1, 292, "_reduce_657", 1, 292, "_reduce_658", 1, 292, "_reduce_659", 1, 292, "_reduce_660", 1, 270, "_reduce_none", 1, 270, "_reduce_662", 1, 370, "_reduce_663", 1, 371, "_reduce_664", 3, 371, "_reduce_665", 1, 284, "_reduce_666", 3, 284, "_reduce_667", 1, 372, "_reduce_668", 2, 373, "_reduce_669", 1, 373, "_reduce_670", 2, 374, "_reduce_671", 1, 374, "_reduce_672", 1, 278, "_reduce_673", 3, 278, "_reduce_674", 1, 367, "_reduce_675", 3, 367, "_reduce_676", 1, 340, "_reduce_none", 1, 340, "_reduce_none", 2, 276, "_reduce_679", 2, 275, "_reduce_680", 1, 275, "_reduce_681", 3, 375, "_reduce_682", 3, 376, "_reduce_683", 1, 285, "_reduce_684", 3, 285, "_reduce_685", 1, 369, "_reduce_686", 3, 369, "_reduce_687", 1, 377, "_reduce_none", 1, 377, "_reduce_none", 2, 286, "_reduce_690", 1, 286, "_reduce_691", 1, 378, "_reduce_none", 1, 378, "_reduce_none", 2, 280, "_reduce_694", 1, 280, "_reduce_695", 2, 279, "_reduce_696", 0, 279, "_reduce_697", 1, 196, "_reduce_none", 3, 196, "_reduce_699", 0, 251, "_reduce_700", 2, 251, "_reduce_none", 1, 235, "_reduce_702", 3, 235, "_reduce_703", 3, 379, "_reduce_704", 2, 379, "_reduce_705", 1, 379, "_reduce_706", 4, 379, "_reduce_707", 2, 379, "_reduce_708", 1, 207, "_reduce_none", 1, 207, "_reduce_none", 1, 207, "_reduce_none", 1, 201, "_reduce_none", 1, 201, "_reduce_none", 1, 201, "_reduce_none", 1, 201, "_reduce_none", 1, 303, "_reduce_none", 1, 303, "_reduce_none", 1, 303, "_reduce_none", 1, 197, "_reduce_none", 1, 197, "_reduce_none", 1, 180, "_reduce_721", 1, 180, "_reduce_722", 0, 152, "_reduce_none", 1, 152, "_reduce_none", 0, 187, "_reduce_none", 1, 187, "_reduce_none", 2, 212, "_reduce_727", 2, 179, "_reduce_728", 2, 327, "_reduce_729", 0, 234, "_reduce_none", 1, 234, "_reduce_none", 1, 234, "_reduce_none", 1, 261, "_reduce_733", 1, 261, "_reduce_none", 1, 154, "_reduce_none", 2, 154, "_reduce_none", 0, 232, "_reduce_737"]; - racc_reduce_n = 738; - racc_shift_n = 1231; + racc_goto_pointer = [nil, 343, 142, 162, nil, 134, 154, 106, 86, 56, -209, 9, -441, -639, -723, nil, -407, 59, 167, -52, -129, 111, 35, 2068, -107, -30, 45, 59, -108, 164, 1262, -210, -357, 26, 23, 121, -26, 3589, 1625, 2121, 484, -424, -59, -57, -7, -419, -14, nil, -9, nil, 180, 66, -345, nil, nil, -193, 53, -186, -458, 1017, -350, nil, 3145, 282, 104, 130, -51, nil, -28, 62, -303, 2499, -2, -363, 116, -4, nil, 42, -220, 291, 20, nil, -5, 166, -153, 1195, 153, 63, 235, -252, 114, -28, -258, -332, -277, -480, nil, 849, 616, 2504, 2203, 2113, 2068, 1856, 1723, 200, 161, -51, nil, 1618, -339, -763, -364, -596, 155, nil, -173, 35, nil, 98, 172, -135, 173, -366, -397, -603, -161, -762, -466, -373, -760, -664, -141, -639, nil, -437, -722, nil, nil, -436, -27, 269, -822, -716, 413, -815, -438, -638, nil, -737, -842, -965, -973, -135, -575, 194, -361, -88, -25, -714, -711, -394, -9, nil, -18, -18, nil, nil, -488, -796, -691, -919, -530, -844, 34, -562, -553, -422, -760, nil, -620, nil, -620, -431, -425, nil, nil, -648, -424, -423, nil, -352, -816, -781, nil, -615, -612, nil, -89, nil, -390, nil, -558, nil, nil, -437, -353, -735, nil, nil, 257, 254, 255, 264, -250, -200, 265, 266, 271, -274, -271, nil, nil, -259, -168, -98, nil, nil, -432, -311, -218, -569, 230, -298, -730, -616, -983, nil, nil, -491]; + racc_goto_default = [nil, nil, nil, nil, 5, nil, 6, 391, 334, nil, nil, 472, nil, 984, nil, 331, 332, nil, nil, nil, 13, 14, 22, 247, nil, nil, 16, nil, 441, 248, 363, nil, nil, 637, 251, nil, 27, 25, 252, 246, 517, nil, nil, nil, nil, nil, nil, 386, 143, 26, nil, nil, nil, 28, 29, 812, nil, nil, nil, 351, nil, 30, 348, 455, 37, nil, nil, 39, 42, 41, nil, 243, 244, 403, nil, 463, 142, 87, nil, 446, 103, 51, 54, 283, nil, 323, nil, 891, 456, nil, 457, 468, 480, 686, 569, 321, 307, 55, 56, 57, 58, 59, 60, 61, 62, 63, nil, 308, 69, 70, nil, nil, nil, nil, nil, 77, nil, 619, 78, 230, nil, nil, nil, nil, nil, nil, nil, 711, 492, nil, 712, 713, 478, 474, 475, nil, 1179, 707, 1071, nil, 479, nil, nil, nil, 481, nil, 483, nil, 971, nil, nil, nil, 490, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 467, nil, nil, 791, 783, nil, nil, nil, nil, nil, nil, 1051, nil, 736, 937, 738, 739, 743, 740, 741, nil, nil, 742, 744, nil, nil, nil, 936, 938, nil, 748, 750, 751, 752, 753, nil, 757, 501, 758, 759, 760, 761, nil, nil, nil, 86, 88, 89, nil, nil, nil, nil, 647, nil, nil, nil, nil, nil, 99, 100, nil, 231, 901, 234, 477, nil, 482, 909, 495, 497, 498, 1082, 502, 1083, 505, 508, 326]; + racc_reduce_table = [0, 0, "racc_error", 0, 150, "_reduce_1", 2, 148, "_reduce_2", 2, 149, "_reduce_3", 0, 151, "_reduce_4", 1, 151, "_reduce_5", 3, 151, "_reduce_6", 2, 151, "_reduce_7", 1, 153, "_reduce_none", 2, 153, "_reduce_9", 3, 156, "_reduce_10", 4, 157, "_reduce_11", 2, 158, "_reduce_12", 0, 162, "_reduce_13", 1, 162, "_reduce_14", 3, 162, "_reduce_15", 2, 162, "_reduce_16", 1, 163, "_reduce_none", 2, 163, "_reduce_18", 0, 174, "_reduce_19", 4, 155, "_reduce_20", 3, 155, "_reduce_21", 3, 155, "_reduce_22", 3, 155, "_reduce_23", 2, 155, "_reduce_24", 3, 155, "_reduce_25", 3, 155, "_reduce_26", 3, 155, "_reduce_27", 3, 155, "_reduce_28", 3, 155, "_reduce_29", 4, 155, "_reduce_30", 1, 155, "_reduce_none", 3, 155, "_reduce_32", 3, 155, "_reduce_33", 5, 155, "_reduce_34", 3, 155, "_reduce_35", 1, 155, "_reduce_none", 3, 167, "_reduce_37", 3, 167, "_reduce_38", 6, 167, "_reduce_39", 5, 167, "_reduce_40", 5, 167, "_reduce_41", 5, 167, "_reduce_42", 5, 167, "_reduce_43", 4, 167, "_reduce_44", 6, 167, "_reduce_45", 4, 167, "_reduce_46", 6, 167, "_reduce_47", 3, 167, "_reduce_48", 1, 175, "_reduce_none", 3, 175, "_reduce_50", 1, 175, "_reduce_none", 1, 173, "_reduce_none", 3, 173, "_reduce_53", 3, 173, "_reduce_54", 3, 173, "_reduce_55", 2, 173, "_reduce_56", 0, 189, "_reduce_57", 4, 173, "_reduce_58", 0, 190, "_reduce_59", 4, 173, "_reduce_60", 1, 173, "_reduce_none", 1, 166, "_reduce_none", 0, 194, "_reduce_63", 3, 191, "_reduce_64", 1, 193, "_reduce_65", 2, 181, "_reduce_66", 0, 199, "_reduce_67", 5, 185, "_reduce_68", 1, 169, "_reduce_none", 1, 169, "_reduce_none", 1, 200, "_reduce_none", 4, 200, "_reduce_72", 0, 207, "_reduce_73", 4, 204, "_reduce_74", 1, 206, "_reduce_none", 2, 183, "_reduce_76", 3, 183, "_reduce_77", 4, 183, "_reduce_78", 5, 183, "_reduce_79", 4, 183, "_reduce_80", 5, 183, "_reduce_81", 2, 183, "_reduce_82", 2, 183, "_reduce_83", 2, 183, "_reduce_84", 2, 183, "_reduce_85", 2, 183, "_reduce_86", 1, 168, "_reduce_87", 3, 168, "_reduce_88", 1, 212, "_reduce_89", 3, 212, "_reduce_90", 1, 211, "_reduce_none", 2, 211, "_reduce_92", 3, 211, "_reduce_93", 5, 211, "_reduce_94", 2, 211, "_reduce_95", 4, 211, "_reduce_96", 2, 211, "_reduce_97", 4, 211, "_reduce_98", 1, 211, "_reduce_99", 3, 211, "_reduce_100", 1, 215, "_reduce_none", 3, 215, "_reduce_102", 2, 214, "_reduce_103", 3, 214, "_reduce_104", 1, 217, "_reduce_105", 3, 217, "_reduce_106", 1, 216, "_reduce_107", 1, 216, "_reduce_108", 4, 216, "_reduce_109", 3, 216, "_reduce_110", 3, 216, "_reduce_111", 3, 216, "_reduce_112", 3, 216, "_reduce_113", 2, 216, "_reduce_114", 1, 216, "_reduce_115", 1, 170, "_reduce_116", 1, 170, "_reduce_117", 4, 170, "_reduce_118", 3, 170, "_reduce_119", 3, 170, "_reduce_120", 3, 170, "_reduce_121", 3, 170, "_reduce_122", 2, 170, "_reduce_123", 1, 170, "_reduce_124", 1, 220, "_reduce_125", 1, 220, "_reduce_none", 2, 221, "_reduce_127", 1, 221, "_reduce_128", 3, 221, "_reduce_129", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 195, "_reduce_none", 1, 164, "_reduce_135", 1, 164, "_reduce_none", 1, 165, "_reduce_137", 0, 225, "_reduce_138", 4, 165, "_reduce_139", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 222, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 1, 223, "_reduce_none", 3, 184, "_reduce_211", 3, 184, "_reduce_212", 6, 184, "_reduce_213", 5, 184, "_reduce_214", 5, 184, "_reduce_215", 5, 184, "_reduce_216", 5, 184, "_reduce_217", 4, 184, "_reduce_218", 3, 184, "_reduce_219", 3, 184, "_reduce_220", 3, 184, "_reduce_221", 2, 184, "_reduce_222", 2, 184, "_reduce_223", 2, 184, "_reduce_224", 2, 184, "_reduce_225", 3, 184, "_reduce_226", 3, 184, "_reduce_227", 3, 184, "_reduce_228", 3, 184, "_reduce_229", 3, 184, "_reduce_230", 3, 184, "_reduce_231", 4, 184, "_reduce_232", 2, 184, "_reduce_233", 2, 184, "_reduce_234", 3, 184, "_reduce_235", 3, 184, "_reduce_236", 3, 184, "_reduce_237", 3, 184, "_reduce_238", 1, 184, "_reduce_none", 3, 184, "_reduce_240", 3, 184, "_reduce_241", 3, 184, "_reduce_242", 3, 184, "_reduce_243", 3, 184, "_reduce_244", 2, 184, "_reduce_245", 2, 184, "_reduce_246", 3, 184, "_reduce_247", 3, 184, "_reduce_248", 3, 184, "_reduce_249", 3, 184, "_reduce_250", 0, 231, "_reduce_251", 4, 184, "_reduce_252", 6, 184, "_reduce_253", 4, 184, "_reduce_254", 6, 184, "_reduce_255", 4, 184, "_reduce_256", 6, 184, "_reduce_257", 1, 184, "_reduce_none", 1, 230, "_reduce_none", 1, 230, "_reduce_none", 1, 230, "_reduce_none", 1, 230, "_reduce_none", 3, 228, "_reduce_263", 3, 228, "_reduce_264", 1, 232, "_reduce_none", 1, 233, "_reduce_none", 2, 233, "_reduce_none", 4, 233, "_reduce_268", 2, 233, "_reduce_269", 1, 226, "_reduce_none", 3, 226, "_reduce_271", 3, 238, "_reduce_272", 5, 238, "_reduce_273", 3, 238, "_reduce_274", 0, 240, "_reduce_275", 1, 240, "_reduce_none", 0, 178, "_reduce_277", 1, 178, "_reduce_none", 2, 178, "_reduce_none", 4, 178, "_reduce_280", 2, 178, "_reduce_281", 1, 210, "_reduce_282", 2, 210, "_reduce_283", 2, 210, "_reduce_284", 4, 210, "_reduce_285", 1, 210, "_reduce_286", 0, 243, "_reduce_287", 2, 203, "_reduce_288", 2, 242, "_reduce_289", 1, 242, "_reduce_290", 2, 241, "_reduce_291", 0, 241, "_reduce_292", 1, 235, "_reduce_293", 2, 235, "_reduce_294", 3, 235, "_reduce_295", 4, 235, "_reduce_296", 1, 172, "_reduce_297", 1, 172, "_reduce_none", 3, 171, "_reduce_299", 4, 171, "_reduce_300", 2, 171, "_reduce_301", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_none", 1, 229, "_reduce_312", 0, 267, "_reduce_313", 4, 229, "_reduce_314", 0, 268, "_reduce_315", 4, 229, "_reduce_316", 0, 269, "_reduce_317", 4, 229, "_reduce_318", 3, 229, "_reduce_319", 3, 229, "_reduce_320", 2, 229, "_reduce_321", 3, 229, "_reduce_322", 3, 229, "_reduce_323", 1, 229, "_reduce_324", 4, 229, "_reduce_325", 3, 229, "_reduce_326", 1, 229, "_reduce_327", 0, 270, "_reduce_328", 6, 229, "_reduce_329", 4, 229, "_reduce_330", 3, 229, "_reduce_331", 2, 229, "_reduce_332", 1, 229, "_reduce_none", 2, 229, "_reduce_334", 1, 229, "_reduce_none", 6, 229, "_reduce_336", 6, 229, "_reduce_337", 4, 229, "_reduce_338", 4, 229, "_reduce_339", 5, 229, "_reduce_340", 4, 229, "_reduce_341", 5, 229, "_reduce_342", 6, 229, "_reduce_343", 0, 271, "_reduce_344", 6, 229, "_reduce_345", 0, 272, "_reduce_346", 7, 229, "_reduce_347", 0, 273, "_reduce_348", 5, 229, "_reduce_349", 4, 229, "_reduce_350", 4, 229, "_reduce_351", 1, 229, "_reduce_352", 1, 229, "_reduce_353", 1, 229, "_reduce_354", 1, 229, "_reduce_355", 1, 177, "_reduce_none", 1, 262, "_reduce_357", 1, 265, "_reduce_358", 1, 196, "_reduce_359", 1, 209, "_reduce_360", 1, 257, "_reduce_none", 1, 257, "_reduce_none", 2, 257, "_reduce_363", 1, 192, "_reduce_none", 1, 192, "_reduce_none", 1, 258, "_reduce_none", 5, 258, "_reduce_367", 1, 160, "_reduce_none", 2, 160, "_reduce_369", 1, 261, "_reduce_none", 1, 261, "_reduce_none", 1, 274, "_reduce_372", 3, 274, "_reduce_373", 1, 277, "_reduce_374", 3, 277, "_reduce_375", 1, 276, "_reduce_none", 3, 276, "_reduce_377", 5, 276, "_reduce_378", 1, 276, "_reduce_379", 3, 276, "_reduce_380", 2, 278, "_reduce_381", 1, 278, "_reduce_382", 1, 279, "_reduce_none", 1, 279, "_reduce_none", 0, 284, "_reduce_385", 2, 282, "_reduce_386", 4, 283, "_reduce_387", 2, 283, "_reduce_388", 2, 283, "_reduce_389", 1, 283, "_reduce_390", 2, 288, "_reduce_391", 0, 288, "_reduce_392", 1, 289, "_reduce_none", 6, 290, "_reduce_394", 8, 290, "_reduce_395", 4, 290, "_reduce_396", 6, 290, "_reduce_397", 4, 290, "_reduce_398", 2, 290, "_reduce_none", 6, 290, "_reduce_400", 2, 290, "_reduce_401", 4, 290, "_reduce_402", 6, 290, "_reduce_403", 2, 290, "_reduce_404", 4, 290, "_reduce_405", 2, 290, "_reduce_406", 4, 290, "_reduce_407", 1, 290, "_reduce_none", 0, 294, "_reduce_409", 1, 294, "_reduce_410", 3, 295, "_reduce_411", 4, 295, "_reduce_412", 1, 296, "_reduce_413", 4, 296, "_reduce_414", 1, 297, "_reduce_415", 3, 297, "_reduce_416", 1, 298, "_reduce_417", 1, 298, "_reduce_none", 0, 302, "_reduce_419", 0, 303, "_reduce_420", 5, 256, "_reduce_421", 4, 300, "_reduce_422", 1, 300, "_reduce_423", 0, 306, "_reduce_424", 4, 301, "_reduce_425", 0, 307, "_reduce_426", 4, 301, "_reduce_427", 0, 309, "_reduce_428", 4, 305, "_reduce_429", 2, 201, "_reduce_430", 4, 201, "_reduce_431", 5, 201, "_reduce_432", 5, 201, "_reduce_433", 2, 255, "_reduce_434", 4, 255, "_reduce_435", 4, 255, "_reduce_436", 3, 255, "_reduce_437", 3, 255, "_reduce_438", 3, 255, "_reduce_439", 2, 255, "_reduce_440", 1, 255, "_reduce_441", 4, 255, "_reduce_442", 0, 311, "_reduce_443", 4, 254, "_reduce_444", 0, 312, "_reduce_445", 4, 254, "_reduce_446", 0, 313, "_reduce_447", 3, 205, "_reduce_448", 0, 314, "_reduce_449", 0, 315, "_reduce_450", 4, 308, "_reduce_451", 5, 259, "_reduce_452", 1, 316, "_reduce_453", 1, 316, "_reduce_none", 0, 319, "_reduce_455", 0, 320, "_reduce_456", 7, 260, "_reduce_457", 1, 318, "_reduce_458", 1, 318, "_reduce_none", 1, 317, "_reduce_460", 3, 317, "_reduce_461", 3, 317, "_reduce_462", 1, 188, "_reduce_none", 2, 188, "_reduce_464", 3, 188, "_reduce_465", 1, 188, "_reduce_466", 1, 188, "_reduce_467", 1, 188, "_reduce_468", 1, 321, "_reduce_none", 3, 326, "_reduce_470", 1, 326, "_reduce_none", 3, 328, "_reduce_472", 1, 328, "_reduce_none", 1, 330, "_reduce_474", 1, 331, "_reduce_475", 1, 329, "_reduce_none", 1, 329, "_reduce_none", 4, 329, "_reduce_478", 4, 329, "_reduce_479", 4, 329, "_reduce_480", 3, 329, "_reduce_481", 4, 329, "_reduce_482", 4, 329, "_reduce_483", 4, 329, "_reduce_484", 3, 329, "_reduce_485", 3, 329, "_reduce_486", 3, 329, "_reduce_487", 2, 329, "_reduce_488", 0, 335, "_reduce_489", 4, 329, "_reduce_490", 2, 329, "_reduce_491", 0, 336, "_reduce_492", 4, 329, "_reduce_493", 1, 322, "_reduce_494", 1, 322, "_reduce_495", 2, 322, "_reduce_496", 3, 322, "_reduce_497", 5, 322, "_reduce_498", 2, 322, "_reduce_499", 4, 322, "_reduce_500", 1, 322, "_reduce_none", 2, 337, "_reduce_502", 3, 337, "_reduce_503", 1, 324, "_reduce_504", 3, 324, "_reduce_505", 5, 323, "_reduce_506", 2, 340, "_reduce_507", 1, 340, "_reduce_508", 1, 339, "_reduce_509", 3, 339, "_reduce_510", 1, 338, "_reduce_none", 3, 325, "_reduce_512", 1, 325, "_reduce_513", 2, 325, "_reduce_514", 1, 325, "_reduce_515", 1, 341, "_reduce_516", 3, 341, "_reduce_517", 2, 343, "_reduce_518", 1, 343, "_reduce_519", 1, 344, "_reduce_520", 3, 344, "_reduce_521", 2, 346, "_reduce_522", 1, 346, "_reduce_523", 2, 348, "_reduce_524", 1, 342, "_reduce_none", 1, 342, "_reduce_none", 1, 332, "_reduce_none", 3, 332, "_reduce_528", 3, 332, "_reduce_529", 2, 332, "_reduce_530", 2, 332, "_reduce_531", 1, 332, "_reduce_none", 1, 332, "_reduce_none", 1, 332, "_reduce_none", 2, 332, "_reduce_535", 2, 332, "_reduce_536", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_none", 1, 349, "_reduce_545", 1, 349, "_reduce_none", 1, 327, "_reduce_547", 2, 350, "_reduce_548", 2, 350, "_reduce_549", 4, 351, "_reduce_550", 2, 333, "_reduce_551", 3, 333, "_reduce_552", 1, 333, "_reduce_553", 6, 159, "_reduce_554", 0, 159, "_reduce_555", 1, 353, "_reduce_556", 1, 353, "_reduce_none", 1, 353, "_reduce_none", 2, 354, "_reduce_559", 1, 354, "_reduce_none", 2, 161, "_reduce_561", 1, 161, "_reduce_none", 1, 244, "_reduce_none", 1, 244, "_reduce_none", 1, 245, "_reduce_565", 1, 356, "_reduce_566", 2, 356, "_reduce_567", 3, 357, "_reduce_568", 1, 357, "_reduce_569", 1, 357, "_reduce_570", 3, 246, "_reduce_571", 4, 247, "_reduce_572", 3, 248, "_reduce_573", 0, 360, "_reduce_574", 3, 360, "_reduce_575", 1, 361, "_reduce_576", 2, 361, "_reduce_577", 3, 250, "_reduce_578", 0, 363, "_reduce_579", 3, 363, "_reduce_580", 3, 249, "_reduce_581", 3, 251, "_reduce_582", 0, 364, "_reduce_583", 3, 364, "_reduce_584", 0, 365, "_reduce_585", 3, 365, "_reduce_586", 0, 345, "_reduce_587", 2, 345, "_reduce_588", 0, 358, "_reduce_589", 2, 358, "_reduce_590", 0, 359, "_reduce_591", 2, 359, "_reduce_592", 1, 362, "_reduce_593", 2, 362, "_reduce_594", 0, 367, "_reduce_595", 4, 362, "_reduce_596", 1, 366, "_reduce_597", 1, 366, "_reduce_598", 1, 366, "_reduce_599", 1, 366, "_reduce_none", 1, 224, "_reduce_none", 1, 224, "_reduce_none", 1, 368, "_reduce_603", 3, 369, "_reduce_604", 1, 355, "_reduce_605", 2, 355, "_reduce_606", 1, 227, "_reduce_607", 1, 227, "_reduce_608", 1, 227, "_reduce_609", 1, 227, "_reduce_610", 1, 352, "_reduce_611", 1, 352, "_reduce_612", 1, 352, "_reduce_613", 1, 218, "_reduce_614", 1, 218, "_reduce_615", 1, 218, "_reduce_616", 1, 218, "_reduce_617", 1, 218, "_reduce_618", 1, 219, "_reduce_619", 1, 219, "_reduce_620", 1, 219, "_reduce_621", 1, 219, "_reduce_622", 1, 219, "_reduce_623", 1, 219, "_reduce_624", 1, 219, "_reduce_625", 1, 252, "_reduce_626", 1, 252, "_reduce_627", 1, 176, "_reduce_628", 1, 176, "_reduce_629", 1, 186, "_reduce_630", 1, 186, "_reduce_631", 0, 370, "_reduce_632", 4, 263, "_reduce_633", 0, 263, "_reduce_634", 1, 182, "_reduce_none", 1, 182, "_reduce_636", 3, 371, "_reduce_637", 1, 266, "_reduce_none", 0, 373, "_reduce_639", 3, 266, "_reduce_640", 4, 372, "_reduce_641", 2, 372, "_reduce_642", 2, 372, "_reduce_643", 1, 372, "_reduce_644", 1, 372, "_reduce_645", 2, 375, "_reduce_646", 0, 375, "_reduce_647", 6, 304, "_reduce_648", 8, 304, "_reduce_649", 4, 304, "_reduce_650", 6, 304, "_reduce_651", 4, 304, "_reduce_652", 6, 304, "_reduce_653", 2, 304, "_reduce_654", 4, 304, "_reduce_655", 6, 304, "_reduce_656", 2, 304, "_reduce_657", 4, 304, "_reduce_658", 2, 304, "_reduce_659", 4, 304, "_reduce_660", 1, 304, "_reduce_661", 0, 304, "_reduce_662", 1, 239, "_reduce_663", 1, 299, "_reduce_664", 1, 299, "_reduce_665", 1, 299, "_reduce_666", 1, 299, "_reduce_667", 1, 275, "_reduce_none", 1, 275, "_reduce_669", 1, 377, "_reduce_670", 1, 378, "_reduce_671", 3, 378, "_reduce_672", 1, 291, "_reduce_673", 3, 291, "_reduce_674", 1, 379, "_reduce_675", 2, 380, "_reduce_676", 1, 380, "_reduce_677", 2, 381, "_reduce_678", 1, 381, "_reduce_679", 1, 285, "_reduce_680", 3, 285, "_reduce_681", 1, 374, "_reduce_682", 3, 374, "_reduce_683", 1, 347, "_reduce_none", 1, 347, "_reduce_none", 2, 281, "_reduce_686", 2, 280, "_reduce_687", 1, 280, "_reduce_688", 3, 382, "_reduce_689", 3, 383, "_reduce_690", 1, 292, "_reduce_691", 3, 292, "_reduce_692", 1, 376, "_reduce_693", 3, 376, "_reduce_694", 1, 384, "_reduce_none", 1, 384, "_reduce_none", 2, 293, "_reduce_697", 1, 293, "_reduce_698", 1, 385, "_reduce_none", 1, 385, "_reduce_none", 2, 287, "_reduce_701", 1, 287, "_reduce_702", 2, 286, "_reduce_703", 0, 286, "_reduce_704", 1, 197, "_reduce_none", 3, 197, "_reduce_706", 0, 253, "_reduce_707", 2, 253, "_reduce_none", 1, 237, "_reduce_709", 3, 237, "_reduce_710", 3, 386, "_reduce_711", 2, 386, "_reduce_712", 1, 386, "_reduce_713", 4, 386, "_reduce_714", 2, 386, "_reduce_715", 1, 208, "_reduce_none", 1, 208, "_reduce_none", 1, 208, "_reduce_none", 1, 202, "_reduce_none", 1, 202, "_reduce_none", 1, 202, "_reduce_none", 1, 202, "_reduce_none", 1, 310, "_reduce_none", 1, 310, "_reduce_none", 1, 310, "_reduce_none", 1, 198, "_reduce_none", 1, 198, "_reduce_none", 1, 180, "_reduce_728", 1, 180, "_reduce_729", 0, 152, "_reduce_none", 1, 152, "_reduce_none", 0, 187, "_reduce_none", 1, 187, "_reduce_none", 2, 213, "_reduce_734", 2, 179, "_reduce_735", 2, 334, "_reduce_736", 0, 236, "_reduce_none", 1, 236, "_reduce_none", 1, 236, "_reduce_none", 1, 264, "_reduce_740", 1, 264, "_reduce_none", 1, 154, "_reduce_none", 2, 154, "_reduce_none", 0, 234, "_reduce_744"]; + racc_reduce_n = 745; + racc_shift_n = 1238; racc_token_table = $hash(false, 0, "error", 1, "kCLASS", 2, "kMODULE", 3, "kDEF", 4, "kUNDEF", 5, "kBEGIN", 6, "kRESCUE", 7, "kENSURE", 8, "kEND", 9, "kIF", 10, "kUNLESS", 11, "kTHEN", 12, "kELSIF", 13, "kELSE", 14, "kCASE", 15, "kWHEN", 16, "kWHILE", 17, "kUNTIL", 18, "kFOR", 19, "kBREAK", 20, "kNEXT", 21, "kREDO", 22, "kRETRY", 23, "kIN", 24, "kDO", 25, "kDO_COND", 26, "kDO_BLOCK", 27, "kDO_LAMBDA", 28, "kRETURN", 29, "kYIELD", 30, "kSUPER", 31, "kSELF", 32, "kNIL", 33, "kTRUE", 34, "kFALSE", 35, "kAND", 36, "kOR", 37, "kNOT", 38, "kIF_MOD", 39, "kUNLESS_MOD", 40, "kWHILE_MOD", 41, "kUNTIL_MOD", 42, "kRESCUE_MOD", 43, "kALIAS", 44, "kDEFINED", 45, "klBEGIN", 46, "klEND", 47, "k__LINE__", 48, "k__FILE__", 49, "k__ENCODING__", 50, "tIDENTIFIER", 51, "tFID", 52, "tGVAR", 53, "tIVAR", 54, "tCONSTANT", 55, "tLABEL", 56, "tCVAR", 57, "tNTH_REF", 58, "tBACK_REF", 59, "tSTRING_CONTENT", 60, "tINTEGER", 61, "tFLOAT", 62, "tUPLUS", 63, "tUMINUS", 64, "tUNARY_NUM", 65, "tPOW", 66, "tCMP", 67, "tEQ", 68, "tEQQ", 69, "tNEQ", 70, "tGEQ", 71, "tLEQ", 72, "tANDOP", 73, "tOROP", 74, "tMATCH", 75, "tNMATCH", 76, "tDOT", 77, "tDOT2", 78, "tDOT3", 79, "tAREF", 80, "tASET", 81, "tLSHFT", 82, "tRSHFT", 83, "tCOLON2", 84, "tCOLON3", 85, "tOP_ASGN", 86, "tASSOC", 87, "tLPAREN", 88, "tLPAREN2", 89, "tRPAREN", 90, "tLPAREN_ARG", 91, "tLBRACK", 92, "tLBRACK2", 93, "tRBRACK", 94, "tLBRACE", 95, "tLBRACE_ARG", 96, "tSTAR", 97, "tSTAR2", 98, "tAMPER", 99, "tAMPER2", 100, "tTILDE", 101, "tPERCENT", 102, "tDIVIDE", 103, "tDSTAR", 104, "tPLUS", 105, "tMINUS", 106, "tLT", 107, "tGT", 108, "tPIPE", 109, "tBANG", 110, "tCARET", 111, "tLCURLY", 112, "tRCURLY", 113, "tBACK_REF2", 114, "tSYMBEG", 115, "tSTRING_BEG", 116, "tXSTRING_BEG", 117, "tREGEXP_BEG", 118, "tREGEXP_OPT", 119, "tWORDS_BEG", 120, "tQWORDS_BEG", 121, "tSYMBOLS_BEG", 122, "tQSYMBOLS_BEG", 123, "tSTRING_DBEG", 124, "tSTRING_DVAR", 125, "tSTRING_END", 126, "tSTRING_DEND", 127, "tSTRING", 128, "tSYMBOL", 129, "tNL", 130, "tEH", 131, "tCOLON", 132, "tCOMMA", 133, "tSPACE", 134, "tSEMI", 135, "tLAMBDA", 136, "tLAMBEG", 137, "tCHARACTER", 138, "tRATIONAL", 139, "tIMAGINARY", 140, "tLABEL_END", 141, "tANDDOT", 142, "tBDOT2", 143, "tBDOT3", 144, "tEQL", 145, "tLOWEST", 146); racc_nt_base = 147; racc_use_result_var = true; $const_set($nesting[0], 'Racc_arg', [racc_action_table, racc_action_check, racc_action_default, racc_action_pointer, racc_goto_table, racc_goto_check, racc_goto_default, racc_goto_pointer, racc_nt_base, racc_reduce_table, racc_token_table, racc_shift_n, racc_reduce_n, racc_use_result_var]); - $const_set($nesting[0], 'Racc_token_to_s_table', ["$end", "error", "kCLASS", "kMODULE", "kDEF", "kUNDEF", "kBEGIN", "kRESCUE", "kENSURE", "kEND", "kIF", "kUNLESS", "kTHEN", "kELSIF", "kELSE", "kCASE", "kWHEN", "kWHILE", "kUNTIL", "kFOR", "kBREAK", "kNEXT", "kREDO", "kRETRY", "kIN", "kDO", "kDO_COND", "kDO_BLOCK", "kDO_LAMBDA", "kRETURN", "kYIELD", "kSUPER", "kSELF", "kNIL", "kTRUE", "kFALSE", "kAND", "kOR", "kNOT", "kIF_MOD", "kUNLESS_MOD", "kWHILE_MOD", "kUNTIL_MOD", "kRESCUE_MOD", "kALIAS", "kDEFINED", "klBEGIN", "klEND", "k__LINE__", "k__FILE__", "k__ENCODING__", "tIDENTIFIER", "tFID", "tGVAR", "tIVAR", "tCONSTANT", "tLABEL", "tCVAR", "tNTH_REF", "tBACK_REF", "tSTRING_CONTENT", "tINTEGER", "tFLOAT", "tUPLUS", "tUMINUS", "tUNARY_NUM", "tPOW", "tCMP", "tEQ", "tEQQ", "tNEQ", "tGEQ", "tLEQ", "tANDOP", "tOROP", "tMATCH", "tNMATCH", "tDOT", "tDOT2", "tDOT3", "tAREF", "tASET", "tLSHFT", "tRSHFT", "tCOLON2", "tCOLON3", "tOP_ASGN", "tASSOC", "tLPAREN", "tLPAREN2", "tRPAREN", "tLPAREN_ARG", "tLBRACK", "tLBRACK2", "tRBRACK", "tLBRACE", "tLBRACE_ARG", "tSTAR", "tSTAR2", "tAMPER", "tAMPER2", "tTILDE", "tPERCENT", "tDIVIDE", "tDSTAR", "tPLUS", "tMINUS", "tLT", "tGT", "tPIPE", "tBANG", "tCARET", "tLCURLY", "tRCURLY", "tBACK_REF2", "tSYMBEG", "tSTRING_BEG", "tXSTRING_BEG", "tREGEXP_BEG", "tREGEXP_OPT", "tWORDS_BEG", "tQWORDS_BEG", "tSYMBOLS_BEG", "tQSYMBOLS_BEG", "tSTRING_DBEG", "tSTRING_DVAR", "tSTRING_END", "tSTRING_DEND", "tSTRING", "tSYMBOL", "tNL", "tEH", "tCOLON", "tCOMMA", "tSPACE", "tSEMI", "tLAMBDA", "tLAMBEG", "tCHARACTER", "tRATIONAL", "tIMAGINARY", "tLABEL_END", "tANDDOT", "tBDOT2", "tBDOT3", "tEQL", "tLOWEST", "$start", "program", "top_compstmt", "@1", "top_stmts", "opt_terms", "top_stmt", "terms", "stmt", "begin_block", "bodystmt", "compstmt", "opt_rescue", "opt_else", "opt_ensure", "stmts", "stmt_or_begin", "fitem", "undef_list", "expr_value", "command_asgn", "mlhs", "command_call", "lhs", "mrhs", "mrhs_arg", "expr", "@2", "command_rhs", "var_lhs", "primary_value", "opt_call_args", "rbracket", "call_op", "defn_head", "f_opt_paren_args", "command", "arg", "defs_head", "backref", "opt_nl", "p_top_expr_body", "@3", "@4", "expr_value_do", "do", "def_name", "@5", "fname", "singleton", "dot_or_colon", "@6", "block_command", "block_call", "operation2", "command_args", "cmd_brace_block", "brace_body", "fcall", "@7", "operation", "k_return", "call_args", "mlhs_basic", "mlhs_inner", "rparen", "mlhs_head", "mlhs_item", "mlhs_node", "mlhs_post", "user_variable", "keyword_variable", "cname", "cpath", "op", "reswords", "symbol", "@8", "arg_rhs", "simple_numeric", "rel_expr", "primary", "relop", "arg_value", "aref_args", "none", "args", "trailer", "assocs", "paren_args", "args_forward", "opt_paren_args", "opt_block_arg", "block_arg", "@9", "literal", "strings", "xstring", "regexp", "words", "qwords", "symbols", "qsymbols", "var_ref", "assoc_list", "brace_block", "method_call", "lambda", "then", "if_tail", "case_body", "p_case_body", "for_var", "superclass", "term", "f_arglist", "@10", "@11", "@12", "@13", "@14", "@15", "f_marg", "f_norm_arg", "f_margs", "f_marg_list", "f_rest_marg", "f_any_kwrest", "f_kwrest", "f_no_kwarg", "block_args_tail", "f_block_kwarg", "opt_f_block_arg", "f_block_arg", "opt_block_args_tail", "excessed_comma", "block_param", "f_arg", "f_block_optarg", "f_rest_arg", "opt_block_param", "block_param_def", "opt_bv_decl", "bv_decls", "bvar", "f_bad_arg", "f_larglist", "lambda_body", "@16", "@17", "f_args", "do_block", "@18", "@19", "do_body", "@20", "operation3", "@21", "@22", "@23", "@24", "@25", "cases", "p_top_expr", "p_cases", "@26", "@27", "p_expr", "p_args", "p_find", "p_args_tail", "p_kwargs", "p_as", "p_variable", "p_alt", "p_expr_basic", "p_lparen", "p_lbracket", "p_value", "p_const", "rbrace", "@28", "@29", "p_args_head", "p_arg", "p_args_post", "p_rest", "p_kwarg", "p_any_kwrest", "p_kw", "p_kw_label", "string_contents", "p_kwrest", "kwrest_mark", "p_kwnorest", "p_primitive", "p_var_ref", "p_expr_ref", "nonlocal_var", "exc_list", "exc_var", "numeric", "string", "string1", "xstring_contents", "regexp_contents", "word_list", "word", "string_content", "symbol_list", "qword_list", "qsym_list", "string_dvar", "@30", "ssym", "dsym", "@31", "f_paren_args", "args_tail", "@32", "f_kwarg", "opt_args_tail", "f_optarg", "f_arg_asgn", "f_arg_item", "f_label", "f_kw", "f_block_kw", "f_opt", "f_block_opt", "restarg_mark", "blkarg_mark", "assoc"]); + $const_set($nesting[0], 'Racc_token_to_s_table', ["$end", "error", "kCLASS", "kMODULE", "kDEF", "kUNDEF", "kBEGIN", "kRESCUE", "kENSURE", "kEND", "kIF", "kUNLESS", "kTHEN", "kELSIF", "kELSE", "kCASE", "kWHEN", "kWHILE", "kUNTIL", "kFOR", "kBREAK", "kNEXT", "kREDO", "kRETRY", "kIN", "kDO", "kDO_COND", "kDO_BLOCK", "kDO_LAMBDA", "kRETURN", "kYIELD", "kSUPER", "kSELF", "kNIL", "kTRUE", "kFALSE", "kAND", "kOR", "kNOT", "kIF_MOD", "kUNLESS_MOD", "kWHILE_MOD", "kUNTIL_MOD", "kRESCUE_MOD", "kALIAS", "kDEFINED", "klBEGIN", "klEND", "k__LINE__", "k__FILE__", "k__ENCODING__", "tIDENTIFIER", "tFID", "tGVAR", "tIVAR", "tCONSTANT", "tLABEL", "tCVAR", "tNTH_REF", "tBACK_REF", "tSTRING_CONTENT", "tINTEGER", "tFLOAT", "tUPLUS", "tUMINUS", "tUNARY_NUM", "tPOW", "tCMP", "tEQ", "tEQQ", "tNEQ", "tGEQ", "tLEQ", "tANDOP", "tOROP", "tMATCH", "tNMATCH", "tDOT", "tDOT2", "tDOT3", "tAREF", "tASET", "tLSHFT", "tRSHFT", "tCOLON2", "tCOLON3", "tOP_ASGN", "tASSOC", "tLPAREN", "tLPAREN2", "tRPAREN", "tLPAREN_ARG", "tLBRACK", "tLBRACK2", "tRBRACK", "tLBRACE", "tLBRACE_ARG", "tSTAR", "tSTAR2", "tAMPER", "tAMPER2", "tTILDE", "tPERCENT", "tDIVIDE", "tDSTAR", "tPLUS", "tMINUS", "tLT", "tGT", "tPIPE", "tBANG", "tCARET", "tLCURLY", "tRCURLY", "tBACK_REF2", "tSYMBEG", "tSTRING_BEG", "tXSTRING_BEG", "tREGEXP_BEG", "tREGEXP_OPT", "tWORDS_BEG", "tQWORDS_BEG", "tSYMBOLS_BEG", "tQSYMBOLS_BEG", "tSTRING_DBEG", "tSTRING_DVAR", "tSTRING_END", "tSTRING_DEND", "tSTRING", "tSYMBOL", "tNL", "tEH", "tCOLON", "tCOMMA", "tSPACE", "tSEMI", "tLAMBDA", "tLAMBEG", "tCHARACTER", "tRATIONAL", "tIMAGINARY", "tLABEL_END", "tANDDOT", "tBDOT2", "tBDOT3", "tEQL", "tLOWEST", "$start", "program", "top_compstmt", "@1", "top_stmts", "opt_terms", "top_stmt", "terms", "stmt", "begin_block", "bodystmt", "compstmt", "opt_rescue", "opt_else", "opt_ensure", "stmts", "stmt_or_begin", "fitem", "undef_list", "expr_value", "command_asgn", "mlhs", "command_call", "lhs", "mrhs", "mrhs_arg", "expr", "@2", "command_rhs", "var_lhs", "primary_value", "opt_call_args", "rbracket", "call_op", "defn_head", "f_opt_paren_args", "command", "arg", "defs_head", "backref", "opt_nl", "p_top_expr_body", "@3", "@4", "expr_value_do", "do", "def_name", "@5", "fname", "k_def", "singleton", "dot_or_colon", "@6", "block_command", "block_call", "operation2", "command_args", "cmd_brace_block", "brace_body", "fcall", "@7", "operation", "k_return", "call_args", "mlhs_basic", "mlhs_inner", "rparen", "mlhs_head", "mlhs_item", "mlhs_node", "mlhs_post", "user_variable", "keyword_variable", "cname", "cpath", "op", "reswords", "symbol", "@8", "arg_rhs", "simple_numeric", "rel_expr", "primary", "relop", "@9", "arg_value", "aref_args", "none", "args", "trailer", "assocs", "paren_args", "args_forward", "opt_paren_args", "opt_block_arg", "block_arg", "@10", "literal", "strings", "xstring", "regexp", "words", "qwords", "symbols", "qsymbols", "var_ref", "assoc_list", "brace_block", "method_call", "lambda", "then", "if_tail", "case_body", "p_case_body", "for_var", "k_class", "superclass", "term", "k_module", "f_arglist", "@11", "@12", "@13", "@14", "@15", "@16", "@17", "f_marg", "f_norm_arg", "f_margs", "f_marg_list", "f_rest_marg", "f_any_kwrest", "f_kwrest", "f_no_kwarg", "f_eq", "block_args_tail", "@18", "f_block_kwarg", "opt_f_block_arg", "f_block_arg", "opt_block_args_tail", "excessed_comma", "block_param", "f_arg", "f_block_optarg", "f_rest_arg", "opt_block_param", "block_param_def", "opt_bv_decl", "bv_decls", "bvar", "f_bad_arg", "f_larglist", "lambda_body", "@19", "@20", "f_args", "do_block", "@21", "@22", "do_body", "@23", "operation3", "@24", "@25", "@26", "@27", "@28", "cases", "p_top_expr", "p_cases", "@29", "@30", "p_expr", "p_args", "p_find", "p_args_tail", "p_kwargs", "p_as", "p_variable", "p_alt", "p_expr_basic", "p_lparen", "p_lbracket", "p_value", "p_const", "rbrace", "@31", "@32", "p_args_head", "p_arg", "p_args_post", "p_rest", "p_kwarg", "p_any_kwrest", "p_kw", "p_kw_label", "string_contents", "p_kwrest", "kwrest_mark", "p_kwnorest", "p_primitive", "p_var_ref", "p_expr_ref", "nonlocal_var", "exc_list", "exc_var", "numeric", "string", "string1", "xstring_contents", "regexp_contents", "word_list", "word", "string_content", "symbol_list", "qword_list", "qsym_list", "string_dvar", "@33", "ssym", "dsym", "@34", "f_paren_args", "args_tail", "@35", "f_kwarg", "opt_args_tail", "f_optarg", "f_arg_asgn", "f_arg_item", "f_label", "f_kw", "f_block_kw", "f_opt", "f_block_opt", "restarg_mark", "blkarg_mark", "assoc"]); $const_set($nesting[0], 'Racc_debug_parser', false); $def(self, '$_reduce_1', function $$_reduce_1(val, _values, result) { @@ -20393,7 +20346,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.current_arg_stack.$push(nil); - self.max_numparam_stack.$push(); + self.max_numparam_stack.$push($hash2(["static"], {"static": true})); return result; }, 3); @@ -20708,66 +20661,70 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ }, 3); $def(self, '$_reduce_44', function $$_reduce_44(val, _values, result) { - var $a, $b, self = this, _def_t = nil, name_t = nil; + var $a, $b, $c, self = this, def_t = nil, name_t = nil, ctx = nil, $writer = nil; - $b = val['$[]'](0), $a = $to_ary($b), (_def_t = ($a[0] == null ? nil : $a[0])), (name_t = ($a[1] == null ? nil : $a[1])), $b; + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), ($c = $to_ary(($a[1] == null ? nil : $a[1])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; self.$endless_method_name(name_t); - result = $send(self.builder, 'def_endless_method', $to_a(val['$[]'](0)).concat([val['$[]'](1), val['$[]'](2), val['$[]'](3)])); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + result = self.builder.$def_endless_method(def_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); $def(self, '$_reduce_45', function $$_reduce_45(val, _values, result) { - var $a, $b, self = this, _def_t = nil, name_t = nil, rescue_body = nil, method_body = nil; + var $a, $b, $c, self = this, def_t = nil, name_t = nil, ctx = nil, rescue_body = nil, method_body = nil, $writer = nil; - $b = val['$[]'](0), $a = $to_ary($b), (_def_t = ($a[0] == null ? nil : $a[0])), (name_t = ($a[1] == null ? nil : $a[1])), $b; + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), ($c = $to_ary(($a[1] == null ? nil : $a[1])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; self.$endless_method_name(name_t); rescue_body = self.builder.$rescue_body(val['$[]'](4), nil, nil, nil, nil, val['$[]'](5)); method_body = self.builder.$begin_body(val['$[]'](3), [rescue_body]); - result = $send(self.builder, 'def_endless_method', $to_a(val['$[]'](0)).concat([val['$[]'](1), val['$[]'](2), method_body])); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + result = self.builder.$def_endless_method(def_t, name_t, val['$[]'](1), val['$[]'](2), method_body); + self.$local_pop(); self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); $def(self, '$_reduce_46', function $$_reduce_46(val, _values, result) { - var $a, $b, self = this, _def_t = nil, _recv = nil, _dot_t = nil, name_t = nil; + var $a, $b, $c, self = this, def_t = nil, recv = nil, dot_t = nil, name_t = nil, ctx = nil, $writer = nil; - $b = val['$[]'](0), $a = $to_ary($b), (_def_t = ($a[0] == null ? nil : $a[0])), (_recv = ($a[1] == null ? nil : $a[1])), (_dot_t = ($a[2] == null ? nil : $a[2])), (name_t = ($a[3] == null ? nil : $a[3])), $b; + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), (recv = ($a[1] == null ? nil : $a[1])), (dot_t = ($a[2] == null ? nil : $a[2])), ($c = $to_ary(($a[3] == null ? nil : $a[3])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; self.$endless_method_name(name_t); - result = $send(self.builder, 'def_endless_singleton', $to_a(val['$[]'](0)).concat([val['$[]'](1), val['$[]'](2), val['$[]'](3)])); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + result = self.builder.$def_endless_singleton(def_t, recv, dot_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); $def(self, '$_reduce_47', function $$_reduce_47(val, _values, result) { - var $a, $b, self = this, _def_t = nil, _recv = nil, _dot_t = nil, name_t = nil, rescue_body = nil, method_body = nil; + var $a, $b, $c, self = this, def_t = nil, recv = nil, dot_t = nil, name_t = nil, ctx = nil, rescue_body = nil, method_body = nil, $writer = nil; - $b = val['$[]'](0), $a = $to_ary($b), (_def_t = ($a[0] == null ? nil : $a[0])), (_recv = ($a[1] == null ? nil : $a[1])), (_dot_t = ($a[2] == null ? nil : $a[2])), (name_t = ($a[3] == null ? nil : $a[3])), $b; + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), (recv = ($a[1] == null ? nil : $a[1])), (dot_t = ($a[2] == null ? nil : $a[2])), ($c = $to_ary(($a[3] == null ? nil : $a[3])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; self.$endless_method_name(name_t); rescue_body = self.builder.$rescue_body(val['$[]'](4), nil, nil, nil, nil, val['$[]'](5)); method_body = self.builder.$begin_body(val['$[]'](3), [rescue_body]); - result = $send(self.builder, 'def_endless_singleton', $to_a(val['$[]'](0)).concat([val['$[]'](1), val['$[]'](2), method_body])); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + result = self.builder.$def_endless_singleton(def_t, recv, dot_t, name_t, val['$[]'](1), val['$[]'](2), method_body); + self.$local_pop(); self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); @@ -20833,10 +20790,10 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.lexer, 'command_start=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.pattern_variables.$push(); - result = self.lexer.$in_kwarg(); + result = self.context.$in_kwarg(); $writer = [true]; - $send(self.lexer, 'in_kwarg=', $to_a($writer)); + $send(self.context, 'in_kwarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); @@ -20848,7 +20805,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.pattern_variables.$pop(); $writer = [val['$[]'](2)]; - $send(self.lexer, 'in_kwarg=', $to_a($writer)); + $send(self.context, 'in_kwarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$match_pattern(val['$[]'](0), val['$[]'](1), val['$[]'](3)); return result; @@ -20867,10 +20824,10 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ $send(self.lexer, 'command_start=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; self.pattern_variables.$push(); - result = self.lexer.$in_kwarg(); + result = self.context.$in_kwarg(); $writer = [true]; - $send(self.lexer, 'in_kwarg=', $to_a($writer)); + $send(self.context, 'in_kwarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); @@ -20882,7 +20839,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.pattern_variables.$pop(); $writer = [val['$[]'](2)]; - $send(self.lexer, 'in_kwarg=', $to_a($writer)); + $send(self.context, 'in_kwarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$match_pattern_p(val['$[]'](0), val['$[]'](1), val['$[]'](3)); return result; @@ -20906,22 +20863,22 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ }, 3); $def(self, '$_reduce_65', function $$_reduce_65(val, _values, result) { - var self = this; + var self = this, $writer = nil; - self.static_env.$extend_static(); - self.lexer.$cmdarg().$push(false); - self.lexer.$cond().$push(false); + self.$local_push(); self.current_arg_stack.$push(nil); - result = val['$[]'](0); + result = [val['$[]'](0), self.context.$dup()]; + + $writer = [true]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); $def(self, '$_reduce_66', function $$_reduce_66(val, _values, result) { - var self = this; - - self.context.$push("def"); + result = [val['$[]'](0), val['$[]'](1)]; return result; }, 3); @@ -20934,14 +20891,16 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ $writer = ["expr_fname"]; $send(self.lexer, 'state=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); $def(self, '$_reduce_68', function $$_reduce_68(val, _values, result) { - var self = this; - - self.context.$push("defs"); + result = [val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](4)]; return result; }, 3); @@ -20955,19 +20914,26 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ }, 3); $def(self, '$_reduce_73', function $$_reduce_73(val, _values, result) { - var self = this; + var self = this, $writer = nil; - self.context.$push("block"); + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); $def(self, '$_reduce_74', function $$_reduce_74(val, _values, result) { - var self = this; + var self = this, $writer = nil; + + $writer = [val['$[]'](1).$in_block()]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](3)]); - self.context.$pop(); return result; }, 3); @@ -21734,14 +21700,29 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ }, 3); $def(self, '$_reduce_251', function $$_reduce_251(val, _values, result) { - var self = this; + var self = this, $writer = nil; - result = self.builder.$keyword_cmd("defined?", val['$[]'](0), nil, [val['$[]'](2)], nil); + + $writer = [true]; + $send(self.context, 'in_defined=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); $def(self, '$_reduce_252', function $$_reduce_252(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [false]; + $send(self.context, 'in_defined=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$keyword_cmd("defined?", val['$[]'](0), nil, [val['$[]'](3)], nil); + return result; + }, 3); + + $def(self, '$_reduce_253', function $$_reduce_253(val, _values, result) { var self = this; @@ -21749,71 +21730,75 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_253', function $$_reduce_253(val, _values, result) { - var $a, $b, self = this, _def_t = nil, name_t = nil; + $def(self, '$_reduce_254', function $$_reduce_254(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, name_t = nil, ctx = nil, $writer = nil; - $b = val['$[]'](0), $a = $to_ary($b), (_def_t = ($a[0] == null ? nil : $a[0])), (name_t = ($a[1] == null ? nil : $a[1])), $b; + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), ($c = $to_ary(($a[1] == null ? nil : $a[1])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; self.$endless_method_name(name_t); - result = $send(self.builder, 'def_endless_method', $to_a(val['$[]'](0)).concat([val['$[]'](1), val['$[]'](2), val['$[]'](3)])); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + result = self.builder.$def_endless_method(def_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_254', function $$_reduce_254(val, _values, result) { - var $a, $b, self = this, _def_t = nil, name_t = nil, rescue_body = nil, method_body = nil; + $def(self, '$_reduce_255', function $$_reduce_255(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, name_t = nil, ctx = nil, rescue_body = nil, method_body = nil, $writer = nil; - $b = val['$[]'](0), $a = $to_ary($b), (_def_t = ($a[0] == null ? nil : $a[0])), (name_t = ($a[1] == null ? nil : $a[1])), $b; + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), ($c = $to_ary(($a[1] == null ? nil : $a[1])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; self.$endless_method_name(name_t); rescue_body = self.builder.$rescue_body(val['$[]'](4), nil, nil, nil, nil, val['$[]'](5)); method_body = self.builder.$begin_body(val['$[]'](3), [rescue_body]); - result = $send(self.builder, 'def_endless_method', $to_a(val['$[]'](0)).concat([val['$[]'](1), val['$[]'](2), method_body])); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + result = self.builder.$def_endless_method(def_t, name_t, val['$[]'](1), val['$[]'](2), method_body); + self.$local_pop(); self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_255', function $$_reduce_255(val, _values, result) { - var $a, $b, self = this, _def_t = nil, _recv = nil, _dot_t = nil, name_t = nil; + $def(self, '$_reduce_256', function $$_reduce_256(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, recv = nil, dot_t = nil, name_t = nil, ctx = nil, $writer = nil; - $b = val['$[]'](0), $a = $to_ary($b), (_def_t = ($a[0] == null ? nil : $a[0])), (_recv = ($a[1] == null ? nil : $a[1])), (_dot_t = ($a[2] == null ? nil : $a[2])), (name_t = ($a[3] == null ? nil : $a[3])), $b; + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), (recv = ($a[1] == null ? nil : $a[1])), (dot_t = ($a[2] == null ? nil : $a[2])), ($c = $to_ary(($a[3] == null ? nil : $a[3])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; self.$endless_method_name(name_t); - result = $send(self.builder, 'def_endless_singleton', $to_a(val['$[]'](0)).concat([val['$[]'](1), val['$[]'](2), val['$[]'](3)])); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + result = self.builder.$def_endless_singleton(def_t, recv, dot_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_256', function $$_reduce_256(val, _values, result) { - var $a, $b, self = this, _def_t = nil, _recv = nil, _dot_t = nil, name_t = nil, rescue_body = nil, method_body = nil; + $def(self, '$_reduce_257', function $$_reduce_257(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, recv = nil, dot_t = nil, name_t = nil, ctx = nil, rescue_body = nil, method_body = nil, $writer = nil; - $b = val['$[]'](0), $a = $to_ary($b), (_def_t = ($a[0] == null ? nil : $a[0])), (_recv = ($a[1] == null ? nil : $a[1])), (_dot_t = ($a[2] == null ? nil : $a[2])), (name_t = ($a[3] == null ? nil : $a[3])), $b; + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), (recv = ($a[1] == null ? nil : $a[1])), (dot_t = ($a[2] == null ? nil : $a[2])), ($c = $to_ary(($a[3] == null ? nil : $a[3])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; self.$endless_method_name(name_t); rescue_body = self.builder.$rescue_body(val['$[]'](4), nil, nil, nil, nil, val['$[]'](5)); method_body = self.builder.$begin_body(val['$[]'](3), [rescue_body]); - result = $send(self.builder, 'def_endless_singleton', $to_a(val['$[]'](0)).concat([val['$[]'](1), val['$[]'](2), method_body])); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + result = self.builder.$def_endless_singleton(def_t, recv, dot_t, name_t, val['$[]'](1), val['$[]'](2), method_body); + self.$local_pop(); self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_262', function $$_reduce_262(val, _values, result) { + $def(self, '$_reduce_263', function $$_reduce_263(val, _values, result) { var self = this; @@ -21821,7 +21806,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_263', function $$_reduce_263(val, _values, result) { + $def(self, '$_reduce_264', function $$_reduce_264(val, _values, result) { var self = this; @@ -21829,7 +21814,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_267', function $$_reduce_267(val, _values, result) { + $def(self, '$_reduce_268', function $$_reduce_268(val, _values, result) { var self = this; @@ -21837,7 +21822,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_268', function $$_reduce_268(val, _values, result) { + $def(self, '$_reduce_269', function $$_reduce_269(val, _values, result) { var self = this; @@ -21845,7 +21830,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_270', function $$_reduce_270(val, _values, result) { + $def(self, '$_reduce_271', function $$_reduce_271(val, _values, result) { var self = this, rescue_body = nil; @@ -21854,14 +21839,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_271', function $$_reduce_271(val, _values, result) { + $def(self, '$_reduce_272', function $$_reduce_272(val, _values, result) { result = val; return result; }, 3); - $def(self, '$_reduce_272', function $$_reduce_272(val, _values, result) { + $def(self, '$_reduce_273', function $$_reduce_273(val, _values, result) { var self = this; @@ -21872,7 +21857,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_273', function $$_reduce_273(val, _values, result) { + $def(self, '$_reduce_274', function $$_reduce_274(val, _values, result) { var self = this; @@ -21883,21 +21868,21 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_274', function $$_reduce_274(val, _values, result) { + $def(self, '$_reduce_275', function $$_reduce_275(val, _values, result) { result = [nil, [], nil]; return result; }, 3); - $def(self, '$_reduce_276', function $$_reduce_276(val, _values, result) { + $def(self, '$_reduce_277', function $$_reduce_277(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_279', function $$_reduce_279(val, _values, result) { + $def(self, '$_reduce_280', function $$_reduce_280(val, _values, result) { var self = this; @@ -21905,7 +21890,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_280', function $$_reduce_280(val, _values, result) { + $def(self, '$_reduce_281', function $$_reduce_281(val, _values, result) { var self = this; @@ -21913,21 +21898,21 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_281', function $$_reduce_281(val, _values, result) { + $def(self, '$_reduce_282', function $$_reduce_282(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_282', function $$_reduce_282(val, _values, result) { + $def(self, '$_reduce_283', function $$_reduce_283(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_283', function $$_reduce_283(val, _values, result) { + $def(self, '$_reduce_284', function $$_reduce_284(val, _values, result) { var self = this; @@ -21936,7 +21921,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_284', function $$_reduce_284(val, _values, result) { + $def(self, '$_reduce_285', function $$_reduce_285(val, _values, result) { var self = this, assocs = nil; @@ -21946,14 +21931,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_285', function $$_reduce_285(val, _values, result) { + $def(self, '$_reduce_286', function $$_reduce_286(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_286', function $$_reduce_286(val, _values, result) { + $def(self, '$_reduce_287', function $$_reduce_287(val, _values, result) { var self = this, last_token = nil, lookahead = nil, $ret_or_1 = nil, top = nil; @@ -21970,7 +21955,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_287', function $$_reduce_287(val, _values, result) { + $def(self, '$_reduce_288', function $$_reduce_288(val, _values, result) { var self = this, last_token = nil, lookahead = nil, top = nil; @@ -21988,7 +21973,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_288', function $$_reduce_288(val, _values, result) { + $def(self, '$_reduce_289', function $$_reduce_289(val, _values, result) { var self = this; @@ -21996,7 +21981,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_289', function $$_reduce_289(val, _values, result) { + $def(self, '$_reduce_290', function $$_reduce_290(val, _values, result) { var self = this; @@ -22007,28 +21992,28 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_290', function $$_reduce_290(val, _values, result) { + $def(self, '$_reduce_291', function $$_reduce_291(val, _values, result) { result = [val['$[]'](1)]; return result; }, 3); - $def(self, '$_reduce_291', function $$_reduce_291(val, _values, result) { + $def(self, '$_reduce_292', function $$_reduce_292(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_292', function $$_reduce_292(val, _values, result) { + $def(self, '$_reduce_293', function $$_reduce_293(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_293', function $$_reduce_293(val, _values, result) { + $def(self, '$_reduce_294', function $$_reduce_294(val, _values, result) { var self = this; @@ -22036,14 +22021,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_294', function $$_reduce_294(val, _values, result) { + $def(self, '$_reduce_295', function $$_reduce_295(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_295', function $$_reduce_295(val, _values, result) { + $def(self, '$_reduce_296', function $$_reduce_296(val, _values, result) { var self = this; @@ -22051,7 +22036,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_296', function $$_reduce_296(val, _values, result) { + $def(self, '$_reduce_297', function $$_reduce_297(val, _values, result) { var self = this; @@ -22059,14 +22044,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_298', function $$_reduce_298(val, _values, result) { + $def(self, '$_reduce_299', function $$_reduce_299(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_299', function $$_reduce_299(val, _values, result) { + $def(self, '$_reduce_300', function $$_reduce_300(val, _values, result) { var self = this; @@ -22074,7 +22059,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_300', function $$_reduce_300(val, _values, result) { + $def(self, '$_reduce_301', function $$_reduce_301(val, _values, result) { var self = this; @@ -22082,7 +22067,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_311', function $$_reduce_311(val, _values, result) { + $def(self, '$_reduce_312', function $$_reduce_312(val, _values, result) { var self = this; @@ -22090,7 +22075,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_312', function $$_reduce_312(val, _values, result) { + $def(self, '$_reduce_313', function $$_reduce_313(val, _values, result) { var self = this; @@ -22098,7 +22083,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_313', function $$_reduce_313(val, _values, result) { + $def(self, '$_reduce_314', function $$_reduce_314(val, _values, result) { var self = this; @@ -22107,7 +22092,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_314', function $$_reduce_314(val, _values, result) { + $def(self, '$_reduce_315', function $$_reduce_315(val, _values, result) { var self = this, $writer = nil; @@ -22118,7 +22103,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_315', function $$_reduce_315(val, _values, result) { + $def(self, '$_reduce_316', function $$_reduce_316(val, _values, result) { var self = this; @@ -22126,7 +22111,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_316', function $$_reduce_316(val, _values, result) { + $def(self, '$_reduce_317', function $$_reduce_317(val, _values, result) { var self = this, $writer = nil; @@ -22137,7 +22122,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_317', function $$_reduce_317(val, _values, result) { + $def(self, '$_reduce_318', function $$_reduce_318(val, _values, result) { var self = this; @@ -22145,7 +22130,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_318', function $$_reduce_318(val, _values, result) { + $def(self, '$_reduce_319', function $$_reduce_319(val, _values, result) { var self = this; @@ -22153,7 +22138,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_319', function $$_reduce_319(val, _values, result) { + $def(self, '$_reduce_320', function $$_reduce_320(val, _values, result) { var self = this; @@ -22161,7 +22146,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_320', function $$_reduce_320(val, _values, result) { + $def(self, '$_reduce_321', function $$_reduce_321(val, _values, result) { var self = this; @@ -22169,7 +22154,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_321', function $$_reduce_321(val, _values, result) { + $def(self, '$_reduce_322', function $$_reduce_322(val, _values, result) { var self = this; @@ -22177,7 +22162,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_322', function $$_reduce_322(val, _values, result) { + $def(self, '$_reduce_323', function $$_reduce_323(val, _values, result) { var self = this; @@ -22185,7 +22170,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_323', function $$_reduce_323(val, _values, result) { + $def(self, '$_reduce_324', function $$_reduce_324(val, _values, result) { var self = this; @@ -22193,7 +22178,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_324', function $$_reduce_324(val, _values, result) { + $def(self, '$_reduce_325', function $$_reduce_325(val, _values, result) { var self = this; @@ -22201,7 +22186,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_325', function $$_reduce_325(val, _values, result) { + $def(self, '$_reduce_326', function $$_reduce_326(val, _values, result) { var self = this; @@ -22209,7 +22194,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_326', function $$_reduce_326(val, _values, result) { + $def(self, '$_reduce_327', function $$_reduce_327(val, _values, result) { var self = this; @@ -22217,15 +22202,30 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_327', function $$_reduce_327(val, _values, result) { - var self = this; + $def(self, '$_reduce_328', function $$_reduce_328(val, _values, result) { + var self = this, $writer = nil; - result = self.builder.$keyword_cmd("defined?", val['$[]'](0), val['$[]'](2), [val['$[]'](3)], val['$[]'](4)); + + $writer = [true]; + $send(self.context, 'in_defined=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_328', function $$_reduce_328(val, _values, result) { + $def(self, '$_reduce_329', function $$_reduce_329(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [false]; + $send(self.context, 'in_defined=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + result = self.builder.$keyword_cmd("defined?", val['$[]'](0), val['$[]'](2), [val['$[]'](4)], val['$[]'](5)); + return result; + }, 3); + + $def(self, '$_reduce_330', function $$_reduce_330(val, _values, result) { var self = this; @@ -22233,7 +22233,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_329', function $$_reduce_329(val, _values, result) { + $def(self, '$_reduce_331', function $$_reduce_331(val, _values, result) { var self = this; @@ -22241,7 +22241,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_330', function $$_reduce_330(val, _values, result) { + $def(self, '$_reduce_332', function $$_reduce_332(val, _values, result) { var $a, $b, self = this, method_call = nil, begin_t = nil, args = nil, body = nil, end_t = nil; @@ -22251,7 +22251,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_332', function $$_reduce_332(val, _values, result) { + $def(self, '$_reduce_334', function $$_reduce_334(val, _values, result) { var $a, $b, self = this, begin_t = nil, args = nil, body = nil, end_t = nil; @@ -22260,7 +22260,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_334', function $$_reduce_334(val, _values, result) { + $def(self, '$_reduce_336', function $$_reduce_336(val, _values, result) { var $a, $b, self = this, else_t = nil, else_ = nil; @@ -22269,7 +22269,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_335', function $$_reduce_335(val, _values, result) { + $def(self, '$_reduce_337', function $$_reduce_337(val, _values, result) { var $a, $b, self = this, else_t = nil, else_ = nil; @@ -22278,7 +22278,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_336', function $$_reduce_336(val, _values, result) { + $def(self, '$_reduce_338', function $$_reduce_338(val, _values, result) { var self = this; @@ -22286,7 +22286,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_337', function $$_reduce_337(val, _values, result) { + $def(self, '$_reduce_339', function $$_reduce_339(val, _values, result) { var self = this; @@ -22294,7 +22294,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_338', function $$_reduce_338(val, _values, result) { + $def(self, '$_reduce_340', function $$_reduce_340(val, _values, result) { var $a, $b, $c, self = this, when_bodies = nil, else_t = nil, else_body = nil; @@ -22303,7 +22303,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_339', function $$_reduce_339(val, _values, result) { + $def(self, '$_reduce_341', function $$_reduce_341(val, _values, result) { var $a, $b, $c, self = this, when_bodies = nil, else_t = nil, else_body = nil; @@ -22312,7 +22312,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_340', function $$_reduce_340(val, _values, result) { + $def(self, '$_reduce_342', function $$_reduce_342(val, _values, result) { var $a, $b, $c, self = this, in_bodies = nil, else_t = nil, else_body = nil; @@ -22321,7 +22321,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_341', function $$_reduce_341(val, _values, result) { + $def(self, '$_reduce_343', function $$_reduce_343(val, _values, result) { var self = this; @@ -22329,107 +22329,130 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_342', function $$_reduce_342(val, _values, result) { - var self = this; + $def(self, '$_reduce_344', function $$_reduce_344(val, _values, result) { + var self = this, $writer = nil; - self.static_env.$extend_static(); - self.lexer.$cmdarg().$push(false); - self.lexer.$cond().$push(false); - self.context.$push("class"); + + $writer = [true]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.$local_push(); return result; }, 3); - $def(self, '$_reduce_343', function $$_reduce_343(val, _values, result) { - var $a, $b, self = this, lt_t = nil, superclass = nil; + $def(self, '$_reduce_345', function $$_reduce_345(val, _values, result) { + var $a, $b, self = this, k_class = nil, ctx = nil, lt_t = nil, superclass = nil, $writer = nil; - if (!$truthy(self.context['$class_definition_allowed?']())) { - self.$diagnostic("error", "class_in_def", nil, val['$[]'](0)) + $b = val['$[]'](0), $a = $to_ary($b), (k_class = ($a[0] == null ? nil : $a[0])), (ctx = ($a[1] == null ? nil : $a[1])), $b; + if ($truthy(self.context.$in_def())) { + self.$diagnostic("error", "class_in_def", nil, k_class) }; $b = val['$[]'](2), $a = $to_ary($b), (lt_t = ($a[0] == null ? nil : $a[0])), (superclass = ($a[1] == null ? nil : $a[1])), $b; - result = self.builder.$def_class(val['$[]'](0), val['$[]'](1), lt_t, superclass, val['$[]'](4), val['$[]'](5)); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + result = self.builder.$def_class(k_class, val['$[]'](1), lt_t, superclass, val['$[]'](4), val['$[]'](5)); + self.$local_pop(); + + $writer = [ctx.$in_class()]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_344', function $$_reduce_344(val, _values, result) { - var self = this; + $def(self, '$_reduce_346', function $$_reduce_346(val, _values, result) { + var self = this, $writer = nil; - self.static_env.$extend_static(); - self.lexer.$cmdarg().$push(false); - self.lexer.$cond().$push(false); - self.context.$push("sclass"); + + $writer = [false]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.$local_push(); return result; }, 3); - $def(self, '$_reduce_345', function $$_reduce_345(val, _values, result) { - var self = this; + $def(self, '$_reduce_347', function $$_reduce_347(val, _values, result) { + var $a, $b, self = this, k_class = nil, ctx = nil, $writer = nil; - result = self.builder.$def_sclass(val['$[]'](0), val['$[]'](1), val['$[]'](2), val['$[]'](5), val['$[]'](6)); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + $b = val['$[]'](0), $a = $to_ary($b), (k_class = ($a[0] == null ? nil : $a[0])), (ctx = ($a[1] == null ? nil : $a[1])), $b; + result = self.builder.$def_sclass(k_class, val['$[]'](1), val['$[]'](2), val['$[]'](5), val['$[]'](6)); + self.$local_pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [ctx.$in_class()]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_346', function $$_reduce_346(val, _values, result) { - var self = this; + $def(self, '$_reduce_348', function $$_reduce_348(val, _values, result) { + var self = this, $writer = nil; - self.static_env.$extend_static(); - self.lexer.$cmdarg().$push(false); - self.context.$push("module"); + + $writer = [true]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + self.$local_push(); return result; }, 3); - $def(self, '$_reduce_347', function $$_reduce_347(val, _values, result) { - var self = this; + $def(self, '$_reduce_349', function $$_reduce_349(val, _values, result) { + var $a, $b, self = this, k_mod = nil, ctx = nil, $writer = nil; - if (!$truthy(self.context['$module_definition_allowed?']())) { - self.$diagnostic("error", "module_in_def", nil, val['$[]'](0)) + $b = val['$[]'](0), $a = $to_ary($b), (k_mod = ($a[0] == null ? nil : $a[0])), (ctx = ($a[1] == null ? nil : $a[1])), $b; + if ($truthy(self.context.$in_def())) { + self.$diagnostic("error", "module_in_def", nil, k_mod) }; - result = self.builder.$def_module(val['$[]'](0), val['$[]'](1), val['$[]'](3), val['$[]'](4)); - self.lexer.$cmdarg().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + result = self.builder.$def_module(k_mod, val['$[]'](1), val['$[]'](3), val['$[]'](4)); + self.$local_pop(); + + $writer = [ctx.$in_class()]; + $send(self.context, 'in_class=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_348', function $$_reduce_348(val, _values, result) { - var self = this; + $def(self, '$_reduce_350', function $$_reduce_350(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, name_t = nil, ctx = nil, $writer = nil; - result = $send(self.builder, 'def_method', $to_a(val['$[]'](0)).concat([val['$[]'](1), val['$[]'](2), val['$[]'](3)])); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), ($c = $to_ary(($a[1] == null ? nil : $a[1])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + result = self.builder.$def_method(def_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_349', function $$_reduce_349(val, _values, result) { - var self = this; + $def(self, '$_reduce_351', function $$_reduce_351(val, _values, result) { + var $a, $b, $c, self = this, def_t = nil, recv = nil, dot_t = nil, name_t = nil, ctx = nil, $writer = nil; - result = $send(self.builder, 'def_singleton', $to_a(val['$[]'](0)).concat([val['$[]'](1), val['$[]'](2), val['$[]'](3)])); - self.lexer.$cmdarg().$pop(); - self.lexer.$cond().$pop(); - self.static_env.$unextend(); - self.context.$pop(); + $b = val['$[]'](0), $a = $to_ary($b), (def_t = ($a[0] == null ? nil : $a[0])), (recv = ($a[1] == null ? nil : $a[1])), (dot_t = ($a[2] == null ? nil : $a[2])), ($c = $to_ary(($a[3] == null ? nil : $a[3])), (name_t = ($c[0] == null ? nil : $c[0])), (ctx = ($c[1] == null ? nil : $c[1]))), $b; + result = self.builder.$def_singleton(def_t, recv, dot_t, name_t, val['$[]'](1), val['$[]'](2), val['$[]'](3)); + self.$local_pop(); self.current_arg_stack.$pop(); + + $writer = [ctx.$in_def()]; + $send(self.context, 'in_def=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_350', function $$_reduce_350(val, _values, result) { + $def(self, '$_reduce_352', function $$_reduce_352(val, _values, result) { var self = this; @@ -22437,7 +22460,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_351', function $$_reduce_351(val, _values, result) { + $def(self, '$_reduce_353', function $$_reduce_353(val, _values, result) { var self = this; @@ -22445,7 +22468,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_352', function $$_reduce_352(val, _values, result) { + $def(self, '$_reduce_354', function $$_reduce_354(val, _values, result) { var self = this; @@ -22453,7 +22476,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_353', function $$_reduce_353(val, _values, result) { + $def(self, '$_reduce_355', function $$_reduce_355(val, _values, result) { var self = this; @@ -22461,24 +22484,52 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_355', function $$_reduce_355(val, _values, result) { + $def(self, '$_reduce_357', function $$_reduce_357(val, _values, result) { var self = this; - if ($truthy(self.context['$in_class?']())) { + result = [val['$[]'](0), self.context.$dup()]; + return result; + }, 3); + + $def(self, '$_reduce_358', function $$_reduce_358(val, _values, result) { + var self = this; + + + result = [val['$[]'](0), self.context.$dup()]; + return result; + }, 3); + + $def(self, '$_reduce_359', function $$_reduce_359(val, _values, result) { + var self = this, $writer = nil; + + + result = val['$[]'](0); + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_360', function $$_reduce_360(val, _values, result) { + var self = this, $ret_or_1 = nil; + + + if ((($truthy(self.context.$in_class()) && ($not(self.context.$in_def()))) && ($not(($truthy(($ret_or_1 = self.$context().$in_block())) ? ($ret_or_1) : (self.$context().$in_lambda())))))) { self.$diagnostic("error", "invalid_return", nil, val['$[]'](0)) }; return result; }, 3); - $def(self, '$_reduce_358', function $$_reduce_358(val, _values, result) { + $def(self, '$_reduce_363', function $$_reduce_363(val, _values, result) { result = val['$[]'](1); return result; }, 3); - $def(self, '$_reduce_362', function $$_reduce_362(val, _values, result) { + $def(self, '$_reduce_367', function $$_reduce_367(val, _values, result) { var $a, $b, self = this, else_t = nil, else_ = nil; @@ -22487,14 +22538,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_364', function $$_reduce_364(val, _values, result) { + $def(self, '$_reduce_369', function $$_reduce_369(val, _values, result) { result = val; return result; }, 3); - $def(self, '$_reduce_367', function $$_reduce_367(val, _values, result) { + $def(self, '$_reduce_372', function $$_reduce_372(val, _values, result) { var self = this; @@ -22502,7 +22553,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_368', function $$_reduce_368(val, _values, result) { + $def(self, '$_reduce_373', function $$_reduce_373(val, _values, result) { var self = this; @@ -22510,49 +22561,49 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_369', function $$_reduce_369(val, _values, result) { + $def(self, '$_reduce_374', function $$_reduce_374(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_370', function $$_reduce_370(val, _values, result) { + $def(self, '$_reduce_375', function $$_reduce_375(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_372', function $$_reduce_372(val, _values, result) { + $def(self, '$_reduce_377', function $$_reduce_377(val, _values, result) { result = val['$[]'](0).$push(val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_373', function $$_reduce_373(val, _values, result) { + $def(self, '$_reduce_378', function $$_reduce_378(val, _values, result) { result = val['$[]'](0).$push(val['$[]'](2)).$concat(val['$[]'](4)); return result; }, 3); - $def(self, '$_reduce_374', function $$_reduce_374(val, _values, result) { + $def(self, '$_reduce_379', function $$_reduce_379(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_375', function $$_reduce_375(val, _values, result) { + $def(self, '$_reduce_380', function $$_reduce_380(val, _values, result) { result = [val['$[]'](0)].concat($to_a(val['$[]'](2))); return result; }, 3); - $def(self, '$_reduce_376', function $$_reduce_376(val, _values, result) { + $def(self, '$_reduce_381', function $$_reduce_381(val, _values, result) { var self = this; @@ -22560,7 +22611,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_377', function $$_reduce_377(val, _values, result) { + $def(self, '$_reduce_382', function $$_reduce_382(val, _values, result) { var self = this; @@ -22568,91 +22619,109 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_380', function $$_reduce_380(val, _values, result) { + $def(self, '$_reduce_385', function $$_reduce_385(val, _values, result) { + var self = this, $writer = nil; + + + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + return result; + }, 3); + + $def(self, '$_reduce_386', function $$_reduce_386(val, _values, result) { + + + result = val['$[]'](1); + return result; + }, 3); + + $def(self, '$_reduce_387', function $$_reduce_387(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_381', function $$_reduce_381(val, _values, result) { + $def(self, '$_reduce_388', function $$_reduce_388(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_382', function $$_reduce_382(val, _values, result) { + $def(self, '$_reduce_389', function $$_reduce_389(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_383', function $$_reduce_383(val, _values, result) { + $def(self, '$_reduce_390', function $$_reduce_390(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_384', function $$_reduce_384(val, _values, result) { + $def(self, '$_reduce_391', function $$_reduce_391(val, _values, result) { result = val['$[]'](1); return result; }, 3); - $def(self, '$_reduce_385', function $$_reduce_385(val, _values, result) { + $def(self, '$_reduce_392', function $$_reduce_392(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_387', function $$_reduce_387(val, _values, result) { + $def(self, '$_reduce_394', function $$_reduce_394(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; }, 3); - $def(self, '$_reduce_388', function $$_reduce_388(val, _values, result) { + $def(self, '$_reduce_395', function $$_reduce_395(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](6)).$concat(val['$[]'](7)); return result; }, 3); - $def(self, '$_reduce_389', function $$_reduce_389(val, _values, result) { + $def(self, '$_reduce_396', function $$_reduce_396(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_390', function $$_reduce_390(val, _values, result) { + $def(self, '$_reduce_397', function $$_reduce_397(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; }, 3); - $def(self, '$_reduce_391', function $$_reduce_391(val, _values, result) { + $def(self, '$_reduce_398', function $$_reduce_398(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_393', function $$_reduce_393(val, _values, result) { + $def(self, '$_reduce_400', function $$_reduce_400(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; }, 3); - $def(self, '$_reduce_394', function $$_reduce_394(val, _values, result) { + $def(self, '$_reduce_401', function $$_reduce_401(val, _values, result) { var self = this; @@ -22664,49 +22733,49 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_395', function $$_reduce_395(val, _values, result) { + $def(self, '$_reduce_402', function $$_reduce_402(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_396', function $$_reduce_396(val, _values, result) { + $def(self, '$_reduce_403', function $$_reduce_403(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; }, 3); - $def(self, '$_reduce_397', function $$_reduce_397(val, _values, result) { + $def(self, '$_reduce_404', function $$_reduce_404(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_398', function $$_reduce_398(val, _values, result) { + $def(self, '$_reduce_405', function $$_reduce_405(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_399', function $$_reduce_399(val, _values, result) { + $def(self, '$_reduce_406', function $$_reduce_406(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_400', function $$_reduce_400(val, _values, result) { + $def(self, '$_reduce_407', function $$_reduce_407(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_402', function $$_reduce_402(val, _values, result) { + $def(self, '$_reduce_409', function $$_reduce_409(val, _values, result) { var self = this; @@ -22714,7 +22783,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_403', function $$_reduce_403(val, _values, result) { + $def(self, '$_reduce_410', function $$_reduce_410(val, _values, result) { var self = this, $writer = nil; @@ -22725,55 +22794,63 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_404', function $$_reduce_404(val, _values, result) { - var self = this; + $def(self, '$_reduce_411', function $$_reduce_411(val, _values, result) { + var self = this, $writer = nil; self.max_numparam_stack['$has_ordinary_params!'](); self.current_arg_stack.$set(nil); + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$args(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_405', function $$_reduce_405(val, _values, result) { - var self = this; + $def(self, '$_reduce_412', function $$_reduce_412(val, _values, result) { + var self = this, $writer = nil; self.max_numparam_stack['$has_ordinary_params!'](); self.current_arg_stack.$set(nil); + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$args(val['$[]'](0), val['$[]'](1).$concat(val['$[]'](2)), val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_406', function $$_reduce_406(val, _values, result) { + $def(self, '$_reduce_413', function $$_reduce_413(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_407', function $$_reduce_407(val, _values, result) { + $def(self, '$_reduce_414', function $$_reduce_414(val, _values, result) { result = val['$[]'](2); return result; }, 3); - $def(self, '$_reduce_408', function $$_reduce_408(val, _values, result) { + $def(self, '$_reduce_415', function $$_reduce_415(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_409', function $$_reduce_409(val, _values, result) { + $def(self, '$_reduce_416', function $$_reduce_416(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_410', function $$_reduce_410(val, _values, result) { + $def(self, '$_reduce_417', function $$_reduce_417(val, _values, result) { var self = this; @@ -22782,27 +22859,30 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_412', function $$_reduce_412(val, _values, result) { - var self = this; + $def(self, '$_reduce_419', function $$_reduce_419(val, _values, result) { + var self = this, $writer = nil; self.static_env.$extend_dynamic(); - self.max_numparam_stack.$push(); - self.context.$push("lambda"); + self.max_numparam_stack.$push($hash2(["static"], {"static": false})); + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_413', function $$_reduce_413(val, _values, result) { + $def(self, '$_reduce_420', function $$_reduce_420(val, _values, result) { var self = this; - self.context.$pop(); self.lexer.$cmdarg().$push(false); return result; }, 3); - $def(self, '$_reduce_414', function $$_reduce_414(val, _values, result) { - var $a, $b, self = this, lambda_call = nil, args = nil, begin_t = nil, body = nil, end_t = nil; + $def(self, '$_reduce_421', function $$_reduce_421(val, _values, result) { + var $a, $b, self = this, lambda_call = nil, args = nil, begin_t = nil, body = nil, end_t = nil, $writer = nil; lambda_call = self.builder.$call_lambda(val['$[]'](0)); @@ -22811,23 +22891,35 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.max_numparam_stack.$pop(); self.static_env.$unextend(); self.lexer.$cmdarg().$pop(); + + $writer = [val['$[]'](1).$in_lambda()]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$block(lambda_call, begin_t, args, body, end_t); return result; }, 3); - $def(self, '$_reduce_415', function $$_reduce_415(val, _values, result) { - var self = this; + $def(self, '$_reduce_422', function $$_reduce_422(val, _values, result) { + var self = this, $writer = nil; + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; self.max_numparam_stack['$has_ordinary_params!'](); result = self.builder.$args(val['$[]'](0), val['$[]'](1).$concat(val['$[]'](2)), val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_416', function $$_reduce_416(val, _values, result) { - var self = this; + $def(self, '$_reduce_423', function $$_reduce_423(val, _values, result) { + var self = this, $writer = nil; + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; if ($truthy(val['$[]'](0)['$any?']())) { self.max_numparam_stack['$has_ordinary_params!']() }; @@ -22835,58 +22927,79 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_417', function $$_reduce_417(val, _values, result) { - var self = this; + $def(self, '$_reduce_424', function $$_reduce_424(val, _values, result) { + var self = this, $writer = nil; - self.context.$push("lambda"); + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_418', function $$_reduce_418(val, _values, result) { - var self = this; + $def(self, '$_reduce_425', function $$_reduce_425(val, _values, result) { + var self = this, $writer = nil; + + $writer = [val['$[]'](1).$in_lambda()]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = [val['$[]'](0), val['$[]'](2), val['$[]'](3)]; - self.context.$pop(); return result; }, 3); - $def(self, '$_reduce_419', function $$_reduce_419(val, _values, result) { - var self = this; + $def(self, '$_reduce_426', function $$_reduce_426(val, _values, result) { + var self = this, $writer = nil; - self.context.$push("lambda"); + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_420', function $$_reduce_420(val, _values, result) { - var self = this; + $def(self, '$_reduce_427', function $$_reduce_427(val, _values, result) { + var self = this, $writer = nil; + + $writer = [val['$[]'](1).$in_lambda()]; + $send(self.context, 'in_lambda=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = [val['$[]'](0), val['$[]'](2), val['$[]'](3)]; - self.context.$pop(); return result; }, 3); - $def(self, '$_reduce_421', function $$_reduce_421(val, _values, result) { - var self = this; + $def(self, '$_reduce_428', function $$_reduce_428(val, _values, result) { + var self = this, $writer = nil; - self.context.$push("block"); + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_422', function $$_reduce_422(val, _values, result) { - var self = this; + $def(self, '$_reduce_429', function $$_reduce_429(val, _values, result) { + var self = this, $writer = nil; + + $writer = [val['$[]'](1).$in_block()]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](3)]); - self.context.$pop(); return result; }, 3); - $def(self, '$_reduce_423', function $$_reduce_423(val, _values, result) { + $def(self, '$_reduce_430', function $$_reduce_430(val, _values, result) { var $a, $b, self = this, begin_t = nil, block_args = nil, body = nil, end_t = nil; @@ -22895,7 +23008,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_424', function $$_reduce_424(val, _values, result) { + $def(self, '$_reduce_431', function $$_reduce_431(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; @@ -22904,7 +23017,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_425', function $$_reduce_425(val, _values, result) { + $def(self, '$_reduce_432', function $$_reduce_432(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil, method_call = nil, begin_t = nil, body = nil, end_t = nil; @@ -22915,7 +23028,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_426', function $$_reduce_426(val, _values, result) { + $def(self, '$_reduce_433', function $$_reduce_433(val, _values, result) { var $a, $b, self = this, method_call = nil, begin_t = nil, args = nil, body = nil, end_t = nil; @@ -22925,7 +23038,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_427', function $$_reduce_427(val, _values, result) { + $def(self, '$_reduce_434', function $$_reduce_434(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; @@ -22934,7 +23047,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_428', function $$_reduce_428(val, _values, result) { + $def(self, '$_reduce_435', function $$_reduce_435(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; @@ -22943,7 +23056,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_429', function $$_reduce_429(val, _values, result) { + $def(self, '$_reduce_436', function $$_reduce_436(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; @@ -22952,7 +23065,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_430', function $$_reduce_430(val, _values, result) { + $def(self, '$_reduce_437', function $$_reduce_437(val, _values, result) { var self = this; @@ -22960,7 +23073,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_431', function $$_reduce_431(val, _values, result) { + $def(self, '$_reduce_438', function $$_reduce_438(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; @@ -22969,7 +23082,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_432', function $$_reduce_432(val, _values, result) { + $def(self, '$_reduce_439', function $$_reduce_439(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; @@ -22978,7 +23091,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_433', function $$_reduce_433(val, _values, result) { + $def(self, '$_reduce_440', function $$_reduce_440(val, _values, result) { var $a, $b, self = this, lparen_t = nil, args = nil, rparen_t = nil; @@ -22987,7 +23100,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_434', function $$_reduce_434(val, _values, result) { + $def(self, '$_reduce_441', function $$_reduce_441(val, _values, result) { var self = this; @@ -22995,7 +23108,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_435', function $$_reduce_435(val, _values, result) { + $def(self, '$_reduce_442', function $$_reduce_442(val, _values, result) { var self = this; @@ -23003,50 +23116,64 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_436', function $$_reduce_436(val, _values, result) { - var self = this; + $def(self, '$_reduce_443', function $$_reduce_443(val, _values, result) { + var self = this, $writer = nil; - self.context.$push("block"); + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_437', function $$_reduce_437(val, _values, result) { - var self = this; + $def(self, '$_reduce_444', function $$_reduce_444(val, _values, result) { + var self = this, $writer = nil; + + $writer = [val['$[]'](1).$in_block()]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](3)]); - self.context.$pop(); return result; }, 3); - $def(self, '$_reduce_438', function $$_reduce_438(val, _values, result) { - var self = this; + $def(self, '$_reduce_445', function $$_reduce_445(val, _values, result) { + var self = this, $writer = nil; - self.context.$push("block"); + result = self.context.$dup(); + + $writer = [true]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_439', function $$_reduce_439(val, _values, result) { - var self = this; + $def(self, '$_reduce_446', function $$_reduce_446(val, _values, result) { + var self = this, $writer = nil; + + $writer = [val['$[]'](1).$in_block()]; + $send(self.context, 'in_block=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](3)]); - self.context.$pop(); return result; }, 3); - $def(self, '$_reduce_440', function $$_reduce_440(val, _values, result) { + $def(self, '$_reduce_447', function $$_reduce_447(val, _values, result) { var self = this; self.static_env.$extend_dynamic(); - self.max_numparam_stack.$push(); + self.max_numparam_stack.$push($hash2(["static"], {"static": false})); return result; }, 3); - $def(self, '$_reduce_441', function $$_reduce_441(val, _values, result) { + $def(self, '$_reduce_448', function $$_reduce_448(val, _values, result) { var self = this, args = nil; @@ -23057,16 +23184,16 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_442', function $$_reduce_442(val, _values, result) { + $def(self, '$_reduce_449', function $$_reduce_449(val, _values, result) { var self = this; self.static_env.$extend_dynamic(); - self.max_numparam_stack.$push(); + self.max_numparam_stack.$push($hash2(["static"], {"static": false})); return result; }, 3); - $def(self, '$_reduce_443', function $$_reduce_443(val, _values, result) { + $def(self, '$_reduce_450', function $$_reduce_450(val, _values, result) { var self = this; @@ -23074,7 +23201,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_444', function $$_reduce_444(val, _values, result) { + $def(self, '$_reduce_451', function $$_reduce_451(val, _values, result) { var self = this, args = nil; @@ -23086,7 +23213,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_445', function $$_reduce_445(val, _values, result) { + $def(self, '$_reduce_452', function $$_reduce_452(val, _values, result) { var self = this; @@ -23094,14 +23221,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_446', function $$_reduce_446(val, _values, result) { + $def(self, '$_reduce_453', function $$_reduce_453(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_448', function $$_reduce_448(val, _values, result) { + $def(self, '$_reduce_455', function $$_reduce_455(val, _values, result) { var self = this, $writer = nil; @@ -23115,15 +23242,15 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ $writer[$rb_minus($writer["length"], 1)];; self.pattern_variables.$push(); self.pattern_hash_keys.$push(); - result = self.lexer.$in_kwarg(); + result = self.context.$in_kwarg(); $writer = [true]; - $send(self.lexer, 'in_kwarg=', $to_a($writer)); + $send(self.context, 'in_kwarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_449', function $$_reduce_449(val, _values, result) { + $def(self, '$_reduce_456', function $$_reduce_456(val, _values, result) { var self = this, $writer = nil; @@ -23131,12 +23258,12 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ self.pattern_hash_keys.$pop(); $writer = [val['$[]'](1)]; - $send(self.lexer, 'in_kwarg=', $to_a($writer)); + $send(self.context, 'in_kwarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_450', function $$_reduce_450(val, _values, result) { + $def(self, '$_reduce_457', function $$_reduce_457(val, _values, result) { var self = this; @@ -23144,21 +23271,21 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_451', function $$_reduce_451(val, _values, result) { + $def(self, '$_reduce_458', function $$_reduce_458(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_453', function $$_reduce_453(val, _values, result) { + $def(self, '$_reduce_460', function $$_reduce_460(val, _values, result) { result = [val['$[]'](0), nil]; return result; }, 3); - $def(self, '$_reduce_454', function $$_reduce_454(val, _values, result) { + $def(self, '$_reduce_461', function $$_reduce_461(val, _values, result) { var self = this; @@ -23166,7 +23293,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_455', function $$_reduce_455(val, _values, result) { + $def(self, '$_reduce_462', function $$_reduce_462(val, _values, result) { var self = this; @@ -23174,7 +23301,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_457', function $$_reduce_457(val, _values, result) { + $def(self, '$_reduce_464', function $$_reduce_464(val, _values, result) { var self = this, item = nil; @@ -23183,7 +23310,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_458', function $$_reduce_458(val, _values, result) { + $def(self, '$_reduce_465', function $$_reduce_465(val, _values, result) { var self = this; @@ -23191,7 +23318,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_459', function $$_reduce_459(val, _values, result) { + $def(self, '$_reduce_466', function $$_reduce_466(val, _values, result) { var self = this; @@ -23199,7 +23326,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_460', function $$_reduce_460(val, _values, result) { + $def(self, '$_reduce_467', function $$_reduce_467(val, _values, result) { var self = this; @@ -23207,7 +23334,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_461', function $$_reduce_461(val, _values, result) { + $def(self, '$_reduce_468', function $$_reduce_468(val, _values, result) { var self = this; @@ -23215,7 +23342,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_463', function $$_reduce_463(val, _values, result) { + $def(self, '$_reduce_470', function $$_reduce_470(val, _values, result) { var self = this; @@ -23223,7 +23350,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_465', function $$_reduce_465(val, _values, result) { + $def(self, '$_reduce_472', function $$_reduce_472(val, _values, result) { var self = this; @@ -23231,7 +23358,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_467', function $$_reduce_467(val, _values, result) { + $def(self, '$_reduce_474', function $$_reduce_474(val, _values, result) { var self = this; @@ -23240,7 +23367,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_468', function $$_reduce_468(val, _values, result) { + $def(self, '$_reduce_475', function $$_reduce_475(val, _values, result) { var self = this; @@ -23249,7 +23376,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_471', function $$_reduce_471(val, _values, result) { + $def(self, '$_reduce_478', function $$_reduce_478(val, _values, result) { var self = this, pattern = nil; @@ -23259,7 +23386,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_472', function $$_reduce_472(val, _values, result) { + $def(self, '$_reduce_479', function $$_reduce_479(val, _values, result) { var self = this, pattern = nil; @@ -23269,7 +23396,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_473', function $$_reduce_473(val, _values, result) { + $def(self, '$_reduce_480', function $$_reduce_480(val, _values, result) { var self = this, pattern = nil; @@ -23279,7 +23406,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_474', function $$_reduce_474(val, _values, result) { + $def(self, '$_reduce_481', function $$_reduce_481(val, _values, result) { var self = this, pattern = nil; @@ -23288,7 +23415,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_475', function $$_reduce_475(val, _values, result) { + $def(self, '$_reduce_482', function $$_reduce_482(val, _values, result) { var self = this, pattern = nil; @@ -23298,7 +23425,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_476', function $$_reduce_476(val, _values, result) { + $def(self, '$_reduce_483', function $$_reduce_483(val, _values, result) { var self = this, pattern = nil; @@ -23308,7 +23435,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_477', function $$_reduce_477(val, _values, result) { + $def(self, '$_reduce_484', function $$_reduce_484(val, _values, result) { var self = this, pattern = nil; @@ -23318,7 +23445,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_478', function $$_reduce_478(val, _values, result) { + $def(self, '$_reduce_485', function $$_reduce_485(val, _values, result) { var self = this, pattern = nil; @@ -23327,7 +23454,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_479', function $$_reduce_479(val, _values, result) { + $def(self, '$_reduce_486', function $$_reduce_486(val, _values, result) { var self = this; @@ -23335,7 +23462,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_480', function $$_reduce_480(val, _values, result) { + $def(self, '$_reduce_487', function $$_reduce_487(val, _values, result) { var self = this; @@ -23343,7 +23470,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_481', function $$_reduce_481(val, _values, result) { + $def(self, '$_reduce_488', function $$_reduce_488(val, _values, result) { var self = this; @@ -23351,33 +23478,33 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_482', function $$_reduce_482(val, _values, result) { + $def(self, '$_reduce_489', function $$_reduce_489(val, _values, result) { var self = this, $writer = nil; self.pattern_hash_keys.$push(); - result = self.lexer.$in_kwarg(); + result = self.context.$in_kwarg(); $writer = [false]; - $send(self.lexer, 'in_kwarg=', $to_a($writer)); + $send(self.context, 'in_kwarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_483', function $$_reduce_483(val, _values, result) { + $def(self, '$_reduce_490', function $$_reduce_490(val, _values, result) { var self = this, $writer = nil; self.pattern_hash_keys.$pop(); $writer = [val['$[]'](1)]; - $send(self.lexer, 'in_kwarg=', $to_a($writer)); + $send(self.context, 'in_kwarg=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$hash_pattern(val['$[]'](0), val['$[]'](2), val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_484', function $$_reduce_484(val, _values, result) { + $def(self, '$_reduce_491', function $$_reduce_491(val, _values, result) { var self = this; @@ -23385,7 +23512,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_485', function $$_reduce_485(val, _values, result) { + $def(self, '$_reduce_492', function $$_reduce_492(val, _values, result) { var self = this; @@ -23393,7 +23520,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_486', function $$_reduce_486(val, _values, result) { + $def(self, '$_reduce_493', function $$_reduce_493(val, _values, result) { var self = this; @@ -23402,28 +23529,28 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_487', function $$_reduce_487(val, _values, result) { + $def(self, '$_reduce_494', function $$_reduce_494(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_488', function $$_reduce_488(val, _values, result) { + $def(self, '$_reduce_495', function $$_reduce_495(val, _values, result) { result = val['$[]'](0); return result; }, 3); - $def(self, '$_reduce_489', function $$_reduce_489(val, _values, result) { + $def(self, '$_reduce_496', function $$_reduce_496(val, _values, result) { result = [].concat($to_a(val['$[]'](0))).concat([val['$[]'](1)]); return result; }, 3); - $def(self, '$_reduce_490', function $$_reduce_490(val, _values, result) { + $def(self, '$_reduce_497', function $$_reduce_497(val, _values, result) { var self = this, match_rest = nil; @@ -23432,7 +23559,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_491', function $$_reduce_491(val, _values, result) { + $def(self, '$_reduce_498', function $$_reduce_498(val, _values, result) { var self = this, match_rest = nil; @@ -23441,7 +23568,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_492', function $$_reduce_492(val, _values, result) { + $def(self, '$_reduce_499', function $$_reduce_499(val, _values, result) { var self = this; @@ -23449,7 +23576,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_493', function $$_reduce_493(val, _values, result) { + $def(self, '$_reduce_500', function $$_reduce_500(val, _values, result) { var self = this; @@ -23457,7 +23584,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_495', function $$_reduce_495(val, _values, result) { + $def(self, '$_reduce_502', function $$_reduce_502(val, _values, result) { var self = this, item = nil; @@ -23466,7 +23593,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_496', function $$_reduce_496(val, _values, result) { + $def(self, '$_reduce_503', function $$_reduce_503(val, _values, result) { var self = this, last_item = nil; @@ -23475,28 +23602,28 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_497', function $$_reduce_497(val, _values, result) { + $def(self, '$_reduce_504', function $$_reduce_504(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_498', function $$_reduce_498(val, _values, result) { + $def(self, '$_reduce_505', function $$_reduce_505(val, _values, result) { result = [val['$[]'](0)].concat($to_a(val['$[]'](2))); return result; }, 3); - $def(self, '$_reduce_499', function $$_reduce_499(val, _values, result) { + $def(self, '$_reduce_506', function $$_reduce_506(val, _values, result) { result = [val['$[]'](0)].concat($to_a(val['$[]'](2))).concat([val['$[]'](4)]); return result; }, 3); - $def(self, '$_reduce_500', function $$_reduce_500(val, _values, result) { + $def(self, '$_reduce_507', function $$_reduce_507(val, _values, result) { var self = this; @@ -23504,7 +23631,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_501', function $$_reduce_501(val, _values, result) { + $def(self, '$_reduce_508', function $$_reduce_508(val, _values, result) { var self = this; @@ -23512,63 +23639,63 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_502', function $$_reduce_502(val, _values, result) { + $def(self, '$_reduce_509', function $$_reduce_509(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_503', function $$_reduce_503(val, _values, result) { + $def(self, '$_reduce_510', function $$_reduce_510(val, _values, result) { result = [].concat($to_a(val['$[]'](0))).concat([val['$[]'](2)]); return result; }, 3); - $def(self, '$_reduce_505', function $$_reduce_505(val, _values, result) { + $def(self, '$_reduce_512', function $$_reduce_512(val, _values, result) { result = [].concat($to_a(val['$[]'](0))).concat($to_a(val['$[]'](2))); return result; }, 3); - $def(self, '$_reduce_506', function $$_reduce_506(val, _values, result) { + $def(self, '$_reduce_513', function $$_reduce_513(val, _values, result) { result = val['$[]'](0); return result; }, 3); - $def(self, '$_reduce_507', function $$_reduce_507(val, _values, result) { + $def(self, '$_reduce_514', function $$_reduce_514(val, _values, result) { result = val['$[]'](0); return result; }, 3); - $def(self, '$_reduce_508', function $$_reduce_508(val, _values, result) { + $def(self, '$_reduce_515', function $$_reduce_515(val, _values, result) { result = val['$[]'](0); return result; }, 3); - $def(self, '$_reduce_509', function $$_reduce_509(val, _values, result) { + $def(self, '$_reduce_516', function $$_reduce_516(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_510', function $$_reduce_510(val, _values, result) { + $def(self, '$_reduce_517', function $$_reduce_517(val, _values, result) { result = [].concat($to_a(val['$[]'](0))).concat([val['$[]'](2)]); return result; }, 3); - $def(self, '$_reduce_511', function $$_reduce_511(val, _values, result) { + $def(self, '$_reduce_518', function $$_reduce_518(val, _values, result) { var self = this; @@ -23576,7 +23703,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_512', function $$_reduce_512(val, _values, result) { + $def(self, '$_reduce_519', function $$_reduce_519(val, _values, result) { var self = this; @@ -23584,21 +23711,21 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_513', function $$_reduce_513(val, _values, result) { + $def(self, '$_reduce_520', function $$_reduce_520(val, _values, result) { result = ["label", val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_514', function $$_reduce_514(val, _values, result) { + $def(self, '$_reduce_521', function $$_reduce_521(val, _values, result) { result = ["quoted", [val['$[]'](0), val['$[]'](1), val['$[]'](2)]]; return result; }, 3); - $def(self, '$_reduce_515', function $$_reduce_515(val, _values, result) { + $def(self, '$_reduce_522', function $$_reduce_522(val, _values, result) { var self = this; @@ -23606,7 +23733,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_516', function $$_reduce_516(val, _values, result) { + $def(self, '$_reduce_523', function $$_reduce_523(val, _values, result) { var self = this; @@ -23614,7 +23741,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_517', function $$_reduce_517(val, _values, result) { + $def(self, '$_reduce_524', function $$_reduce_524(val, _values, result) { var self = this; @@ -23622,7 +23749,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_521', function $$_reduce_521(val, _values, result) { + $def(self, '$_reduce_528', function $$_reduce_528(val, _values, result) { var self = this; @@ -23630,7 +23757,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_522', function $$_reduce_522(val, _values, result) { + $def(self, '$_reduce_529', function $$_reduce_529(val, _values, result) { var self = this; @@ -23638,7 +23765,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_523', function $$_reduce_523(val, _values, result) { + $def(self, '$_reduce_530', function $$_reduce_530(val, _values, result) { var self = this; @@ -23646,7 +23773,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_524', function $$_reduce_524(val, _values, result) { + $def(self, '$_reduce_531', function $$_reduce_531(val, _values, result) { var self = this; @@ -23654,7 +23781,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_528', function $$_reduce_528(val, _values, result) { + $def(self, '$_reduce_535', function $$_reduce_535(val, _values, result) { var self = this; @@ -23662,7 +23789,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_529', function $$_reduce_529(val, _values, result) { + $def(self, '$_reduce_536', function $$_reduce_536(val, _values, result) { var self = this; @@ -23670,7 +23797,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_538', function $$_reduce_538(val, _values, result) { + $def(self, '$_reduce_545', function $$_reduce_545(val, _values, result) { var self = this; @@ -23678,7 +23805,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_540', function $$_reduce_540(val, _values, result) { + $def(self, '$_reduce_547', function $$_reduce_547(val, _values, result) { var self = this; @@ -23686,7 +23813,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_541', function $$_reduce_541(val, _values, result) { + $def(self, '$_reduce_548', function $$_reduce_548(val, _values, result) { var self = this, name = nil, lvar = nil; @@ -23699,7 +23826,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_542', function $$_reduce_542(val, _values, result) { + $def(self, '$_reduce_549', function $$_reduce_549(val, _values, result) { var self = this, non_lvar = nil; @@ -23708,7 +23835,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_543', function $$_reduce_543(val, _values, result) { + $def(self, '$_reduce_550', function $$_reduce_550(val, _values, result) { var self = this, expr = nil; @@ -23717,7 +23844,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_544', function $$_reduce_544(val, _values, result) { + $def(self, '$_reduce_551', function $$_reduce_551(val, _values, result) { var self = this; @@ -23725,7 +23852,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_545', function $$_reduce_545(val, _values, result) { + $def(self, '$_reduce_552', function $$_reduce_552(val, _values, result) { var self = this; @@ -23733,7 +23860,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_546', function $$_reduce_546(val, _values, result) { + $def(self, '$_reduce_553', function $$_reduce_553(val, _values, result) { var self = this; @@ -23741,7 +23868,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_547', function $$_reduce_547(val, _values, result) { + $def(self, '$_reduce_554', function $$_reduce_554(val, _values, result) { var $a, $b, self = this, assoc_t = nil, exc_var = nil, exc_list = nil; @@ -23753,35 +23880,35 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_548', function $$_reduce_548(val, _values, result) { + $def(self, '$_reduce_555', function $$_reduce_555(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_549', function $$_reduce_549(val, _values, result) { + $def(self, '$_reduce_556', function $$_reduce_556(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_552', function $$_reduce_552(val, _values, result) { + $def(self, '$_reduce_559', function $$_reduce_559(val, _values, result) { result = [val['$[]'](0), val['$[]'](1)]; return result; }, 3); - $def(self, '$_reduce_554', function $$_reduce_554(val, _values, result) { + $def(self, '$_reduce_561', function $$_reduce_561(val, _values, result) { result = [val['$[]'](0), val['$[]'](1)]; return result; }, 3); - $def(self, '$_reduce_558', function $$_reduce_558(val, _values, result) { + $def(self, '$_reduce_565', function $$_reduce_565(val, _values, result) { var self = this; @@ -23789,21 +23916,21 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_559', function $$_reduce_559(val, _values, result) { + $def(self, '$_reduce_566', function $$_reduce_566(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_560', function $$_reduce_560(val, _values, result) { + $def(self, '$_reduce_567', function $$_reduce_567(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_561', function $$_reduce_561(val, _values, result) { + $def(self, '$_reduce_568', function $$_reduce_568(val, _values, result) { var self = this, string = nil; @@ -23812,7 +23939,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_562', function $$_reduce_562(val, _values, result) { + $def(self, '$_reduce_569', function $$_reduce_569(val, _values, result) { var self = this, string = nil; @@ -23821,7 +23948,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_563', function $$_reduce_563(val, _values, result) { + $def(self, '$_reduce_570', function $$_reduce_570(val, _values, result) { var self = this; @@ -23829,7 +23956,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_564', function $$_reduce_564(val, _values, result) { + $def(self, '$_reduce_571', function $$_reduce_571(val, _values, result) { var self = this, string = nil; @@ -23838,7 +23965,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_565', function $$_reduce_565(val, _values, result) { + $def(self, '$_reduce_572', function $$_reduce_572(val, _values, result) { var self = this, opts = nil; @@ -23847,7 +23974,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_566', function $$_reduce_566(val, _values, result) { + $def(self, '$_reduce_573', function $$_reduce_573(val, _values, result) { var self = this; @@ -23855,14 +23982,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_567', function $$_reduce_567(val, _values, result) { + $def(self, '$_reduce_574', function $$_reduce_574(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_568', function $$_reduce_568(val, _values, result) { + $def(self, '$_reduce_575', function $$_reduce_575(val, _values, result) { var self = this; @@ -23870,21 +23997,21 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_569', function $$_reduce_569(val, _values, result) { + $def(self, '$_reduce_576', function $$_reduce_576(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_570', function $$_reduce_570(val, _values, result) { + $def(self, '$_reduce_577', function $$_reduce_577(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_571', function $$_reduce_571(val, _values, result) { + $def(self, '$_reduce_578', function $$_reduce_578(val, _values, result) { var self = this; @@ -23892,14 +24019,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_572', function $$_reduce_572(val, _values, result) { + $def(self, '$_reduce_579', function $$_reduce_579(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_573', function $$_reduce_573(val, _values, result) { + $def(self, '$_reduce_580', function $$_reduce_580(val, _values, result) { var self = this; @@ -23907,7 +24034,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_574', function $$_reduce_574(val, _values, result) { + $def(self, '$_reduce_581', function $$_reduce_581(val, _values, result) { var self = this; @@ -23915,7 +24042,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_575', function $$_reduce_575(val, _values, result) { + $def(self, '$_reduce_582', function $$_reduce_582(val, _values, result) { var self = this; @@ -23923,14 +24050,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_576', function $$_reduce_576(val, _values, result) { + $def(self, '$_reduce_583', function $$_reduce_583(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_577', function $$_reduce_577(val, _values, result) { + $def(self, '$_reduce_584', function $$_reduce_584(val, _values, result) { var self = this; @@ -23938,14 +24065,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_578', function $$_reduce_578(val, _values, result) { + $def(self, '$_reduce_585', function $$_reduce_585(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_579', function $$_reduce_579(val, _values, result) { + $def(self, '$_reduce_586', function $$_reduce_586(val, _values, result) { var self = this; @@ -23953,49 +24080,49 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_580', function $$_reduce_580(val, _values, result) { + $def(self, '$_reduce_587', function $$_reduce_587(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_581', function $$_reduce_581(val, _values, result) { + $def(self, '$_reduce_588', function $$_reduce_588(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_582', function $$_reduce_582(val, _values, result) { + $def(self, '$_reduce_589', function $$_reduce_589(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_583', function $$_reduce_583(val, _values, result) { + $def(self, '$_reduce_590', function $$_reduce_590(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_584', function $$_reduce_584(val, _values, result) { + $def(self, '$_reduce_591', function $$_reduce_591(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_585', function $$_reduce_585(val, _values, result) { + $def(self, '$_reduce_592', function $$_reduce_592(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_586', function $$_reduce_586(val, _values, result) { + $def(self, '$_reduce_593', function $$_reduce_593(val, _values, result) { var self = this; @@ -24003,14 +24130,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_587', function $$_reduce_587(val, _values, result) { + $def(self, '$_reduce_594', function $$_reduce_594(val, _values, result) { result = val['$[]'](1); return result; }, 3); - $def(self, '$_reduce_588', function $$_reduce_588(val, _values, result) { + $def(self, '$_reduce_595', function $$_reduce_595(val, _values, result) { var self = this; @@ -24019,7 +24146,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_589', function $$_reduce_589(val, _values, result) { + $def(self, '$_reduce_596', function $$_reduce_596(val, _values, result) { var self = this; @@ -24029,7 +24156,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_590', function $$_reduce_590(val, _values, result) { + $def(self, '$_reduce_597', function $$_reduce_597(val, _values, result) { var self = this; @@ -24037,7 +24164,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_591', function $$_reduce_591(val, _values, result) { + $def(self, '$_reduce_598', function $$_reduce_598(val, _values, result) { var self = this; @@ -24045,7 +24172,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_592', function $$_reduce_592(val, _values, result) { + $def(self, '$_reduce_599', function $$_reduce_599(val, _values, result) { var self = this; @@ -24053,7 +24180,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_596', function $$_reduce_596(val, _values, result) { + $def(self, '$_reduce_603', function $$_reduce_603(val, _values, result) { var self = this, $writer = nil; @@ -24065,7 +24192,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_597', function $$_reduce_597(val, _values, result) { + $def(self, '$_reduce_604', function $$_reduce_604(val, _values, result) { var self = this, $writer = nil; @@ -24077,14 +24204,14 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_598', function $$_reduce_598(val, _values, result) { + $def(self, '$_reduce_605', function $$_reduce_605(val, _values, result) { result = val['$[]'](0); return result; }, 3); - $def(self, '$_reduce_599', function $$_reduce_599(val, _values, result) { + $def(self, '$_reduce_606', function $$_reduce_606(val, _values, result) { var self = this; @@ -24096,7 +24223,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_600', function $$_reduce_600(val, _values, result) { + $def(self, '$_reduce_607', function $$_reduce_607(val, _values, result) { var self = this, $writer = nil; @@ -24108,7 +24235,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_601', function $$_reduce_601(val, _values, result) { + $def(self, '$_reduce_608', function $$_reduce_608(val, _values, result) { var self = this, $writer = nil; @@ -24120,7 +24247,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_602', function $$_reduce_602(val, _values, result) { + $def(self, '$_reduce_609', function $$_reduce_609(val, _values, result) { var self = this, $writer = nil; @@ -24132,7 +24259,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_603', function $$_reduce_603(val, _values, result) { + $def(self, '$_reduce_610', function $$_reduce_610(val, _values, result) { var self = this, $writer = nil; @@ -24144,7 +24271,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_604', function $$_reduce_604(val, _values, result) { + $def(self, '$_reduce_611', function $$_reduce_611(val, _values, result) { var self = this; @@ -24152,7 +24279,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_605', function $$_reduce_605(val, _values, result) { + $def(self, '$_reduce_612', function $$_reduce_612(val, _values, result) { var self = this; @@ -24160,7 +24287,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_606', function $$_reduce_606(val, _values, result) { + $def(self, '$_reduce_613', function $$_reduce_613(val, _values, result) { var self = this; @@ -24168,7 +24295,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_607', function $$_reduce_607(val, _values, result) { + $def(self, '$_reduce_614', function $$_reduce_614(val, _values, result) { var self = this; @@ -24176,7 +24303,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_608', function $$_reduce_608(val, _values, result) { + $def(self, '$_reduce_615', function $$_reduce_615(val, _values, result) { var self = this; @@ -24184,7 +24311,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_609', function $$_reduce_609(val, _values, result) { + $def(self, '$_reduce_616', function $$_reduce_616(val, _values, result) { var self = this; @@ -24192,7 +24319,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_610', function $$_reduce_610(val, _values, result) { + $def(self, '$_reduce_617', function $$_reduce_617(val, _values, result) { var self = this; @@ -24200,7 +24327,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_611', function $$_reduce_611(val, _values, result) { + $def(self, '$_reduce_618', function $$_reduce_618(val, _values, result) { var self = this; @@ -24208,7 +24335,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_612', function $$_reduce_612(val, _values, result) { + $def(self, '$_reduce_619', function $$_reduce_619(val, _values, result) { var self = this; @@ -24216,7 +24343,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_613', function $$_reduce_613(val, _values, result) { + $def(self, '$_reduce_620', function $$_reduce_620(val, _values, result) { var self = this; @@ -24224,7 +24351,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_614', function $$_reduce_614(val, _values, result) { + $def(self, '$_reduce_621', function $$_reduce_621(val, _values, result) { var self = this; @@ -24232,7 +24359,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_615', function $$_reduce_615(val, _values, result) { + $def(self, '$_reduce_622', function $$_reduce_622(val, _values, result) { var self = this; @@ -24240,7 +24367,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_616', function $$_reduce_616(val, _values, result) { + $def(self, '$_reduce_623', function $$_reduce_623(val, _values, result) { var self = this; @@ -24248,7 +24375,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_617', function $$_reduce_617(val, _values, result) { + $def(self, '$_reduce_624', function $$_reduce_624(val, _values, result) { var self = this; @@ -24256,7 +24383,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_618', function $$_reduce_618(val, _values, result) { + $def(self, '$_reduce_625', function $$_reduce_625(val, _values, result) { var self = this; @@ -24264,7 +24391,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_619', function $$_reduce_619(val, _values, result) { + $def(self, '$_reduce_626', function $$_reduce_626(val, _values, result) { var self = this; @@ -24272,7 +24399,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_620', function $$_reduce_620(val, _values, result) { + $def(self, '$_reduce_627', function $$_reduce_627(val, _values, result) { var self = this; @@ -24280,7 +24407,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_621', function $$_reduce_621(val, _values, result) { + $def(self, '$_reduce_628', function $$_reduce_628(val, _values, result) { var self = this; @@ -24288,7 +24415,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_622', function $$_reduce_622(val, _values, result) { + $def(self, '$_reduce_629', function $$_reduce_629(val, _values, result) { var self = this; @@ -24296,7 +24423,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_623', function $$_reduce_623(val, _values, result) { + $def(self, '$_reduce_630', function $$_reduce_630(val, _values, result) { var self = this; @@ -24304,7 +24431,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_624', function $$_reduce_624(val, _values, result) { + $def(self, '$_reduce_631', function $$_reduce_631(val, _values, result) { var self = this; @@ -24312,7 +24439,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_625', function $$_reduce_625(val, _values, result) { + $def(self, '$_reduce_632', function $$_reduce_632(val, _values, result) { var self = this, $writer = nil; @@ -24323,29 +24450,33 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_626', function $$_reduce_626(val, _values, result) { + $def(self, '$_reduce_633', function $$_reduce_633(val, _values, result) { result = [val['$[]'](0), val['$[]'](2)]; return result; }, 3); - $def(self, '$_reduce_627', function $$_reduce_627(val, _values, result) { + $def(self, '$_reduce_634', function $$_reduce_634(val, _values, result) { result = nil; return result; }, 3); - $def(self, '$_reduce_629', function $$_reduce_629(val, _values, result) { - var self = this; + $def(self, '$_reduce_636', function $$_reduce_636(val, _values, result) { + var self = this, $writer = nil; + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$args(nil, [], nil); return result; }, 3); - $def(self, '$_reduce_630', function $$_reduce_630(val, _values, result) { + $def(self, '$_reduce_637', function $$_reduce_637(val, _values, result) { var self = this, $writer = nil; @@ -24354,64 +24485,74 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ $writer = ["expr_value"]; $send(self.lexer, 'state=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; return result; }, 3); - $def(self, '$_reduce_632', function $$_reduce_632(val, _values, result) { + $def(self, '$_reduce_639', function $$_reduce_639(val, _values, result) { var self = this, $writer = nil; - result = self.lexer.$in_kwarg(); + result = self.context.$dup(); $writer = [true]; - $send(self.lexer, 'in_kwarg=', $to_a($writer)); + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; - self.context.$push("def_open_args"); return result; }, 3); - $def(self, '$_reduce_633', function $$_reduce_633(val, _values, result) { + $def(self, '$_reduce_640', function $$_reduce_640(val, _values, result) { var self = this, $writer = nil; - self.context.$pop(); - $writer = [val['$[]'](0)]; - $send(self.lexer, 'in_kwarg=', $to_a($writer)); + $writer = [val['$[]'](0).$in_kwarg()]; + $send(self.context, 'in_kwarg=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$args(nil, val['$[]'](1), nil); return result; }, 3); - $def(self, '$_reduce_634', function $$_reduce_634(val, _values, result) { + $def(self, '$_reduce_641', function $$_reduce_641(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_635', function $$_reduce_635(val, _values, result) { + $def(self, '$_reduce_642', function $$_reduce_642(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_636', function $$_reduce_636(val, _values, result) { + $def(self, '$_reduce_643', function $$_reduce_643(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_637', function $$_reduce_637(val, _values, result) { + $def(self, '$_reduce_644', function $$_reduce_644(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_638', function $$_reduce_638(val, _values, result) { + $def(self, '$_reduce_645', function $$_reduce_645(val, _values, result) { var self = this; @@ -24420,133 +24561,133 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_639', function $$_reduce_639(val, _values, result) { + $def(self, '$_reduce_646', function $$_reduce_646(val, _values, result) { result = val['$[]'](1); return result; }, 3); - $def(self, '$_reduce_640', function $$_reduce_640(val, _values, result) { + $def(self, '$_reduce_647', function $$_reduce_647(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_641', function $$_reduce_641(val, _values, result) { + $def(self, '$_reduce_648', function $$_reduce_648(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; }, 3); - $def(self, '$_reduce_642', function $$_reduce_642(val, _values, result) { + $def(self, '$_reduce_649', function $$_reduce_649(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](6)).$concat(val['$[]'](7)); return result; }, 3); - $def(self, '$_reduce_643', function $$_reduce_643(val, _values, result) { + $def(self, '$_reduce_650', function $$_reduce_650(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_644', function $$_reduce_644(val, _values, result) { + $def(self, '$_reduce_651', function $$_reduce_651(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; }, 3); - $def(self, '$_reduce_645', function $$_reduce_645(val, _values, result) { + $def(self, '$_reduce_652', function $$_reduce_652(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_646', function $$_reduce_646(val, _values, result) { + $def(self, '$_reduce_653', function $$_reduce_653(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; }, 3); - $def(self, '$_reduce_647', function $$_reduce_647(val, _values, result) { + $def(self, '$_reduce_654', function $$_reduce_654(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_648', function $$_reduce_648(val, _values, result) { + $def(self, '$_reduce_655', function $$_reduce_655(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_649', function $$_reduce_649(val, _values, result) { + $def(self, '$_reduce_656', function $$_reduce_656(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](4)).$concat(val['$[]'](5)); return result; }, 3); - $def(self, '$_reduce_650', function $$_reduce_650(val, _values, result) { + $def(self, '$_reduce_657', function $$_reduce_657(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_651', function $$_reduce_651(val, _values, result) { + $def(self, '$_reduce_658', function $$_reduce_658(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_652', function $$_reduce_652(val, _values, result) { + $def(self, '$_reduce_659', function $$_reduce_659(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_653', function $$_reduce_653(val, _values, result) { + $def(self, '$_reduce_660', function $$_reduce_660(val, _values, result) { result = val['$[]'](0).$concat(val['$[]'](2)).$concat(val['$[]'](3)); return result; }, 3); - $def(self, '$_reduce_654', function $$_reduce_654(val, _values, result) { + $def(self, '$_reduce_661', function $$_reduce_661(val, _values, result) { result = val['$[]'](0); return result; }, 3); - $def(self, '$_reduce_655', function $$_reduce_655(val, _values, result) { + $def(self, '$_reduce_662', function $$_reduce_662(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_656', function $$_reduce_656(val, _values, result) { + $def(self, '$_reduce_663', function $$_reduce_663(val, _values, result) { result = val['$[]'](0); return result; }, 3); - $def(self, '$_reduce_657', function $$_reduce_657(val, _values, result) { + $def(self, '$_reduce_664', function $$_reduce_664(val, _values, result) { var self = this; @@ -24554,7 +24695,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_658', function $$_reduce_658(val, _values, result) { + $def(self, '$_reduce_665', function $$_reduce_665(val, _values, result) { var self = this; @@ -24562,7 +24703,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_659', function $$_reduce_659(val, _values, result) { + $def(self, '$_reduce_666', function $$_reduce_666(val, _values, result) { var self = this; @@ -24570,7 +24711,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_660', function $$_reduce_660(val, _values, result) { + $def(self, '$_reduce_667', function $$_reduce_667(val, _values, result) { var self = this; @@ -24578,7 +24719,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_662', function $$_reduce_662(val, _values, result) { + $def(self, '$_reduce_669', function $$_reduce_669(val, _values, result) { var self = this; @@ -24588,7 +24729,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_663', function $$_reduce_663(val, _values, result) { + $def(self, '$_reduce_670', function $$_reduce_670(val, _values, result) { var self = this; @@ -24597,7 +24738,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_664', function $$_reduce_664(val, _values, result) { + $def(self, '$_reduce_671', function $$_reduce_671(val, _values, result) { var self = this; @@ -24606,7 +24747,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_665', function $$_reduce_665(val, _values, result) { + $def(self, '$_reduce_672', function $$_reduce_672(val, _values, result) { var self = this; @@ -24614,95 +24755,115 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_666', function $$_reduce_666(val, _values, result) { + $def(self, '$_reduce_673', function $$_reduce_673(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_667', function $$_reduce_667(val, _values, result) { + $def(self, '$_reduce_674', function $$_reduce_674(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_668', function $$_reduce_668(val, _values, result) { - var self = this; + $def(self, '$_reduce_675', function $$_reduce_675(val, _values, result) { + var self = this, $writer = nil; self.$check_kwarg_name(val['$[]'](0)); self.static_env.$declare(val['$[]'](0)['$[]'](0)); self.max_numparam_stack['$has_ordinary_params!'](); self.current_arg_stack.$set(val['$[]'](0)['$[]'](0)); + + $writer = [false]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = val['$[]'](0); return result; }, 3); - $def(self, '$_reduce_669', function $$_reduce_669(val, _values, result) { - var self = this; + $def(self, '$_reduce_676', function $$_reduce_676(val, _values, result) { + var self = this, $writer = nil; self.current_arg_stack.$set(nil); + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$kwoptarg(val['$[]'](0), val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_670', function $$_reduce_670(val, _values, result) { - var self = this; + $def(self, '$_reduce_677', function $$_reduce_677(val, _values, result) { + var self = this, $writer = nil; self.current_arg_stack.$set(nil); + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$kwarg(val['$[]'](0)); return result; }, 3); - $def(self, '$_reduce_671', function $$_reduce_671(val, _values, result) { - var self = this; + $def(self, '$_reduce_678', function $$_reduce_678(val, _values, result) { + var self = this, $writer = nil; + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$kwoptarg(val['$[]'](0), val['$[]'](1)); return result; }, 3); - $def(self, '$_reduce_672', function $$_reduce_672(val, _values, result) { - var self = this; + $def(self, '$_reduce_679', function $$_reduce_679(val, _values, result) { + var self = this, $writer = nil; + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$kwarg(val['$[]'](0)); return result; }, 3); - $def(self, '$_reduce_673', function $$_reduce_673(val, _values, result) { + $def(self, '$_reduce_680', function $$_reduce_680(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_674', function $$_reduce_674(val, _values, result) { + $def(self, '$_reduce_681', function $$_reduce_681(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_675', function $$_reduce_675(val, _values, result) { + $def(self, '$_reduce_682', function $$_reduce_682(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_676', function $$_reduce_676(val, _values, result) { + $def(self, '$_reduce_683', function $$_reduce_683(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_679', function $$_reduce_679(val, _values, result) { + $def(self, '$_reduce_686', function $$_reduce_686(val, _values, result) { var self = this; @@ -24710,7 +24871,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_680', function $$_reduce_680(val, _values, result) { + $def(self, '$_reduce_687', function $$_reduce_687(val, _values, result) { var self = this; @@ -24719,7 +24880,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_681', function $$_reduce_681(val, _values, result) { + $def(self, '$_reduce_688', function $$_reduce_688(val, _values, result) { var self = this; @@ -24727,53 +24888,61 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_682', function $$_reduce_682(val, _values, result) { - var self = this; + $def(self, '$_reduce_689', function $$_reduce_689(val, _values, result) { + var self = this, $writer = nil; self.current_arg_stack.$set(0); + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$optarg(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_683', function $$_reduce_683(val, _values, result) { - var self = this; + $def(self, '$_reduce_690', function $$_reduce_690(val, _values, result) { + var self = this, $writer = nil; self.current_arg_stack.$set(0); + + $writer = [true]; + $send(self.context, 'in_argdef=', $to_a($writer)); + $writer[$rb_minus($writer["length"], 1)];; result = self.builder.$optarg(val['$[]'](0), val['$[]'](1), val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_684', function $$_reduce_684(val, _values, result) { + $def(self, '$_reduce_691', function $$_reduce_691(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_685', function $$_reduce_685(val, _values, result) { + $def(self, '$_reduce_692', function $$_reduce_692(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_686', function $$_reduce_686(val, _values, result) { + $def(self, '$_reduce_693', function $$_reduce_693(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_687', function $$_reduce_687(val, _values, result) { + $def(self, '$_reduce_694', function $$_reduce_694(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_690', function $$_reduce_690(val, _values, result) { + $def(self, '$_reduce_697', function $$_reduce_697(val, _values, result) { var self = this; @@ -24782,7 +24951,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_691', function $$_reduce_691(val, _values, result) { + $def(self, '$_reduce_698', function $$_reduce_698(val, _values, result) { var self = this; @@ -24790,7 +24959,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_694', function $$_reduce_694(val, _values, result) { + $def(self, '$_reduce_701', function $$_reduce_701(val, _values, result) { var self = this; @@ -24799,7 +24968,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_695', function $$_reduce_695(val, _values, result) { + $def(self, '$_reduce_702', function $$_reduce_702(val, _values, result) { var self = this; @@ -24808,49 +24977,49 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_696', function $$_reduce_696(val, _values, result) { + $def(self, '$_reduce_703', function $$_reduce_703(val, _values, result) { result = [val['$[]'](1)]; return result; }, 3); - $def(self, '$_reduce_697', function $$_reduce_697(val, _values, result) { + $def(self, '$_reduce_704', function $$_reduce_704(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_699', function $$_reduce_699(val, _values, result) { + $def(self, '$_reduce_706', function $$_reduce_706(val, _values, result) { result = val['$[]'](1); return result; }, 3); - $def(self, '$_reduce_700', function $$_reduce_700(val, _values, result) { + $def(self, '$_reduce_707', function $$_reduce_707(val, _values, result) { result = []; return result; }, 3); - $def(self, '$_reduce_702', function $$_reduce_702(val, _values, result) { + $def(self, '$_reduce_709', function $$_reduce_709(val, _values, result) { result = [val['$[]'](0)]; return result; }, 3); - $def(self, '$_reduce_703', function $$_reduce_703(val, _values, result) { + $def(self, '$_reduce_710', function $$_reduce_710(val, _values, result) { result = val['$[]'](0)['$<<'](val['$[]'](2)); return result; }, 3); - $def(self, '$_reduce_704', function $$_reduce_704(val, _values, result) { + $def(self, '$_reduce_711', function $$_reduce_711(val, _values, result) { var self = this; @@ -24858,7 +25027,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_705', function $$_reduce_705(val, _values, result) { + $def(self, '$_reduce_712', function $$_reduce_712(val, _values, result) { var self = this; @@ -24866,7 +25035,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_706', function $$_reduce_706(val, _values, result) { + $def(self, '$_reduce_713', function $$_reduce_713(val, _values, result) { var self = this; @@ -24874,7 +25043,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_707', function $$_reduce_707(val, _values, result) { + $def(self, '$_reduce_714', function $$_reduce_714(val, _values, result) { var self = this; @@ -24882,7 +25051,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_708', function $$_reduce_708(val, _values, result) { + $def(self, '$_reduce_715', function $$_reduce_715(val, _values, result) { var self = this; @@ -24890,42 +25059,42 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_721', function $$_reduce_721(val, _values, result) { + $def(self, '$_reduce_728', function $$_reduce_728(val, _values, result) { result = ["dot", val['$[]'](0)['$[]'](1)]; return result; }, 3); - $def(self, '$_reduce_722', function $$_reduce_722(val, _values, result) { + $def(self, '$_reduce_729', function $$_reduce_729(val, _values, result) { result = ["anddot", val['$[]'](0)['$[]'](1)]; return result; }, 3); - $def(self, '$_reduce_727', function $$_reduce_727(val, _values, result) { + $def(self, '$_reduce_734', function $$_reduce_734(val, _values, result) { result = val['$[]'](1); return result; }, 3); - $def(self, '$_reduce_728', function $$_reduce_728(val, _values, result) { + $def(self, '$_reduce_735', function $$_reduce_735(val, _values, result) { result = val['$[]'](1); return result; }, 3); - $def(self, '$_reduce_729', function $$_reduce_729(val, _values, result) { + $def(self, '$_reduce_736', function $$_reduce_736(val, _values, result) { result = val['$[]'](1); return result; }, 3); - $def(self, '$_reduce_733', function $$_reduce_733(val, _values, result) { + $def(self, '$_reduce_740', function $$_reduce_740(val, _values, result) { var self = this; @@ -24933,7 +25102,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ return result; }, 3); - $def(self, '$_reduce_737', function $$_reduce_737(val, _values, result) { + $def(self, '$_reduce_744', function $$_reduce_744(val, _values, result) { result = nil; @@ -24947,7 +25116,7 @@ Opal.modules["parser/ruby31"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/ast/builder"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/ast/builder"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $Opal = Opal.Opal, $hash2 = Opal.hash2, $def = Opal.def; Opal.add_stubs('require,emit_lambda=,-,new'); @@ -24983,7 +25152,7 @@ Opal.modules["opal/ast/builder"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/base"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $const_set = Opal.const_set, $truthy = Opal.truthy, $Opal = Opal.Opal, $hash2 = Opal.hash2, $defs = Opal.defs, $alias = Opal.alias, $rb_plus = Opal.rb_plus, $eqeqeq = Opal.eqeqeq, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $send2 = Opal.send2, $find_super = Opal.find_super; Opal.add_stubs('require,new,current_node,loc,+,stmts_of,begin_with_stmts,nil?,include?,type,children,===,length,[],s,attr_accessor,current_node=,-,location=,raise'); @@ -25163,7 +25332,7 @@ Opal.modules["opal/rewriters/base"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/opal_engine_check"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/opal_engine_check"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_a = Opal.to_a, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $const_set = Opal.const_set; Opal.add_stubs('require,children,skip_check_present?,process,s,skip_check_present_not?,=='); @@ -25229,7 +25398,7 @@ Opal.modules["opal/rewriters/opal_engine_check"] = function(Opal) {/* Generated })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/for_rewriter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/for_rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $defs = Opal.defs, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $to_a = Opal.to_a, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super; Opal.add_stubs('require,+,find,map,s,next_tmp,class,===,type,updated,<<,prepend_to_body,process,attr_reader,new,to_a,result'); @@ -25322,7 +25491,7 @@ Opal.modules["opal/rewriters/for_rewriter"] = function(Opal) {/* Generated by Op })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/explicit_writer_return"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/explicit_writer_return"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $const_set = Opal.const_set, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $slice = Opal.slice, $eqeq = Opal.eqeq, $regexp = Opal.regexp, $send = Opal.send; Opal.add_stubs('require,s,==,to_s,=~,process_all,updated'); @@ -25387,7 +25556,7 @@ Opal.modules["opal/rewriters/explicit_writer_return"] = function(Opal) {/* Gener })($nesting[0], $nesting); }; -Opal.modules["opal/regexp_anchors"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/regexp_anchors"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $const_set = Opal.const_set; Opal.add_stubs('new'); @@ -25407,7 +25576,7 @@ Opal.modules["opal/regexp_anchors"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting) }; -Opal.modules["opal/rewriters/js_reserved_words"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/js_reserved_words"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $regexp = Opal.regexp, $truthy = Opal.truthy, $defs = Opal.defs, $def = Opal.def, $range = Opal.range, $to_a = Opal.to_a, $send2 = Opal.send2, $find_super = Opal.find_super, $hash2 = Opal.hash2, $alias = Opal.alias; Opal.add_stubs('require,freeze,=~,!,valid_name?,class,to_sym,valid_ivar_name?,[],to_s,updated,fix_var_name,fix_ivar_name'); @@ -25539,7 +25708,7 @@ Opal.modules["opal/rewriters/js_reserved_words"] = function(Opal) {/* Generated })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/block_to_iter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/block_to_iter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_a = Opal.to_a, $rb_plus = Opal.rb_plus, $def = Opal.def; Opal.add_stubs('require,s,process,updated,+,children'); @@ -25572,7 +25741,7 @@ Opal.modules["opal/rewriters/block_to_iter"] = function(Opal) {/* Generated by O })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/dot_js_syntax"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/dot_js_syntax"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_a = Opal.to_a, $slice = Opal.slice, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $neqeq = Opal.neqeq, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $send = Opal.send; Opal.add_stubs('require,==,type,===,!=,size,error,first,to_js_attr_call,to_js_attr_assign_call,to_native_js_call,s'); @@ -25652,7 +25821,7 @@ Opal.modules["opal/rewriters/dot_js_syntax"] = function(Opal) {/* Generated by O })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/pattern_matching"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/pattern_matching"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $to_a = Opal.to_a, $rb_plus = Opal.rb_plus, $slice = Opal.slice, $truthy = Opal.truthy, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $not = Opal.not, $neqeq = Opal.neqeq, $eqeq = Opal.eqeq, $alias = Opal.alias, $Opal = Opal.Opal; Opal.add_stubs('require,s,convert_full_pattern,raise_no_matching_pattern_error,+,process,single_case_match,private,shift,===,type,!,empty?,!=,==,class,new,run!,variables,pattern,map,<<,array,on_literal,first,children,to_proc,method,each,to_ast,on_array_pattern,compact,[]'); @@ -25975,7 +26144,7 @@ Opal.modules["opal/rewriters/pattern_matching"] = function(Opal) {/* Generated b })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/logical_operator_assignment"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/logical_operator_assignment"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $class_variable_set = Opal.class_variable_set, $defs = Opal.defs, $truthy = Opal.truthy, $class_variable_get = Opal.class_variable_get, $rb_plus = Opal.rb_plus, $const_set = Opal.const_set, $lambda = Opal.lambda, $eqeq = Opal.eqeq, $to_a = Opal.to_a, $slice = Opal.slice, $hash2 = Opal.hash2, $send = Opal.send, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super; Opal.add_stubs('require,+,updated,s,==,include?,[],type,new_temp,freeze,call,fetch,error,process'); @@ -26124,7 +26293,7 @@ Opal.modules["opal/rewriters/logical_operator_assignment"] = function(Opal) {/* })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/binary_operator_assignment"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/binary_operator_assignment"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $class_variable_set = Opal.class_variable_set, $defs = Opal.defs, $truthy = Opal.truthy, $class_variable_get = Opal.class_variable_get, $rb_plus = Opal.rb_plus, $const_set = Opal.const_set, $lambda = Opal.lambda, $to_a = Opal.to_a, $slice = Opal.slice, $eqeq = Opal.eqeq, $hash2 = Opal.hash2, $send = Opal.send, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super; Opal.add_stubs('require,+,updated,[],==,type,new_temp,s,freeze,call,fetch,error,process'); @@ -26257,7 +26426,7 @@ Opal.modules["opal/rewriters/binary_operator_assignment"] = function(Opal) {/* G })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/hashes/key_duplicates_rewriter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/hashes/key_duplicates_rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $Opal = Opal.Opal; Opal.add_stubs('require,new,include?,type,<<,==,process_regular_node,updated,inspect,warn'); @@ -26360,7 +26529,7 @@ Opal.modules["opal/rewriters/hashes/key_duplicates_rewriter"] = function(Opal) { })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/dump_args"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/dump_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $hash2 = Opal.hash2, $def = Opal.def; Opal.add_stubs('require,updated'); @@ -26415,7 +26584,7 @@ Opal.modules["opal/rewriters/dump_args"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/mlhs_args"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/mlhs_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $truthy = Opal.truthy, $def = Opal.def, $rb_plus = Opal.rb_plus, $send = Opal.send, $eqeq = Opal.eqeq, $hash2 = Opal.hash2; Opal.add_stubs('require,new,updated,rewritten,initialization,s,prepend_to_body,attr_reader,split!,+,each,children,==,type,new_mlhs_tmp,process,<<,length,[],empty?'); @@ -26580,7 +26749,7 @@ Opal.modules["opal/rewriters/mlhs_args"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/arguments"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/arguments"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $def = Opal.def; Opal.add_stubs('attr_reader,each,===,type,<<,any?,raise,!,nil?,has_any_kwargs?,can_inline_kwargs?,empty?'); @@ -26690,7 +26859,7 @@ Opal.modules["opal/rewriters/arguments"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting) }; -Opal.modules["opal/rewriters/inline_args"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/inline_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $truthy = Opal.truthy, $hash2 = Opal.hash2, $def = Opal.def, $const_set = Opal.const_set, $send = Opal.send, $eqeq = Opal.eqeq, $Opal = Opal.Opal; Opal.add_stubs('require,s,new,updated,inline,prepend_to_body,initialization,attr_reader,freeze,children,each,send,any?,blockarg,<<,shadowargs,args,==,[],has_post_args?,length,has_any_kwargs?,can_inline_kwargs?,kwargs,kwoptargs,kwrestarg,postargs,optargs,args_to_keep,restarg'); @@ -26968,7 +27137,7 @@ Opal.modules["opal/rewriters/inline_args"] = function(Opal) {/* Generated by Opa })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/numblocks"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/numblocks"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_ary = Opal.to_ary, $send = Opal.send, $to_a = Opal.to_a, $def = Opal.def; Opal.add_stubs('require,children,s,gen_args,map'); @@ -27012,7 +27181,7 @@ Opal.modules["opal/rewriters/numblocks"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/returnable_logic"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/returnable_logic"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $def = Opal.def, $rb_minus = Opal.rb_minus, $to_a = Opal.to_a, $send = Opal.send, $send2 = Opal.send2, $find_super = Opal.find_super, $slice = Opal.slice, $eqeq = Opal.eqeq; Opal.add_stubs('require,+,-,children,[]=,meta,s,next_tmp,build_if_from_when,free_tmp,[],process,updated,==,count,first,delete,private,build_rule_from_parts,empty?,type'); @@ -27173,7 +27342,7 @@ Opal.modules["opal/rewriters/returnable_logic"] = function(Opal) {/* Generated b })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/forward_args"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/forward_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $range = Opal.range, $to_a = Opal.to_a, $send2 = Opal.send2, $find_super = Opal.find_super, $neqeq = Opal.neqeq; Opal.add_stubs('require,process,s,==,type,last,children,[],updated,!=,class'); @@ -27231,7 +27400,7 @@ Opal.modules["opal/rewriters/forward_args"] = function(Opal) {/* Generated by Op })($nesting[0], $nesting); }; -Opal.modules["opal/rewriter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $send = Opal.send; Opal.add_stubs('require,<<,list,delete,use,disabled?,class,each,new,process'); @@ -27353,7 +27522,7 @@ Opal.modules["opal/rewriter"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/parser/source_buffer"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/parser/source_buffer"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $defs = Opal.defs; return (function($base, $parent_nesting) { @@ -27386,7 +27555,7 @@ Opal.modules["opal/parser/source_buffer"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting) }; -Opal.modules["opal/parser/default_config"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/parser/default_config"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $send2 = Opal.send2, $find_super = Opal.find_super, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $lambda = Opal.lambda, $defs = Opal.defs; Opal.add_stubs('attr_accessor,all_errors_are_fatal=,diagnostics,-,ignore_warnings=,diagnostics_consumer,consumer=,extend,diagnostics_consumer=,new,rewrite,process,default_parser,default_parser_class'); @@ -27489,7 +27658,7 @@ Opal.modules["opal/parser/default_config"] = function(Opal) {/* Generated by Opa })($nesting[0], $nesting) }; -Opal.modules["opal/parser/with_ruby_lexer"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/parser/with_ruby_lexer"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus; Opal.add_stubs('include,default_parser_class=,-'); @@ -27507,7 +27676,7 @@ Opal.modules["opal/parser/with_ruby_lexer"] = function(Opal) {/* Generated by Op })($$$($$('Opal'), 'Parser'), $$$($$('Parser'), 'Ruby31'), $nesting) }; -Opal.modules["opal/parser/patch"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/parser/patch"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $rb_plus = Opal.rb_plus, $send = Opal.send, $hash2 = Opal.hash2, $eqeqeq = Opal.eqeqeq, $eqeq = Opal.eqeq, $not = Opal.not, $rb_le = Opal.rb_le, $rb_minus = Opal.rb_minus, $rb_gt = Opal.rb_gt, $rb_times = Opal.rb_times, $rb_divide = Opal.rb_divide, $to_a = Opal.to_a, $module = Opal.module; Opal.add_stubs('source,unpack,+,to_a,lines,end_with?,<<,map,chomp,=~,diagnostic,nil?,new,===,type,updated,dedent,first,children,==,empty?,interrupt,compact,encoding,split,force_encoding,length,map!,each_with_index,!,each_char,<=,-,>,*,/,[],[]=,join,respond_to?,send,value'); @@ -27726,7 +27895,7 @@ Opal.modules["opal/parser/patch"] = function(Opal) {/* Generated by Opal 1.4.0 * })($$$($$('Parser'), 'Builders'), null); }; -Opal.modules["opal/parser"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, nil = Opal.nil; Opal.add_stubs('require'); @@ -27739,7 +27908,7 @@ Opal.modules["opal/parser"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$require("opal/parser/patch"); }; -Opal.modules["opal/fragment"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/fragment"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $rb_plus = Opal.rb_plus, $rb_gt = Opal.rb_gt, $to_a = Opal.to_a, $not = Opal.not, $send = Opal.send; Opal.add_stubs('attr_reader,to_s,inspect,===,type,[],meta,source_map_name_for,sexp,==,class,+,parent,>,!,first,children,loc,respond_to?,dot,selector,operator,begin,line,location,column'); @@ -27905,7 +28074,7 @@ Opal.modules["opal/fragment"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["opal/nodes/helpers"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/helpers"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $truthy = Opal.truthy, $def = Opal.def, $rb_plus = Opal.rb_plus, $send = Opal.send, $hash2 = Opal.hash2, $to_a = Opal.to_a, $eqeqeq = Opal.eqeqeq, $slice = Opal.slice, $eqeq = Opal.eqeq, $rb_minus = Opal.rb_minus; Opal.add_stubs('require,valid_name?,inspect,=~,to_s,+,indent,compiler,to_proc,parser_indent,push,fragment,current_indent,js_truthy_optimize,helper,expr,===,type,[],handlers,include?,truthy_optimize?,==,count,<<,method_calls,first,children,s,[]=,meta,-,new_temp,scope,wrap'); @@ -28083,7 +28252,7 @@ Opal.modules["opal/nodes/helpers"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/base"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $defs = Opal.defs, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $Opal = Opal.Opal, $rb_plus = Opal.rb_plus; Opal.add_stubs('require,include,each,[]=,handlers,-,each_with_index,define_method,[],children,attr_reader,type,top_scope,top_scope=,compile,raise,is_a?,fragment,<<,reverse_each,unshift,push,new,scope,error,loc,==,process,expr,add_scope_local,to_sym,add_scope_ivar,add_scope_gvar,add_scope_temp,helper,with_temp,to_proc,in_while?,instance_variable_get,has_rescue_else?,in_ensure,in_ensure?,in_resbody,in_resbody?,in_rescue,!,class_scope?,sclass?,+,parent,nesting,class_variable_owner_nesting_level,comments,compiler,name,source_buffer,expression,start_with?,end_with?,line'); @@ -28492,7 +28661,7 @@ Opal.modules["opal/nodes/base"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/literal"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/literal"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $eqeq = Opal.eqeq, $def = Opal.def, $defs = Opal.defs, $truthy = Opal.truthy, $const_set = Opal.const_set, $hash2 = Opal.hash2, $regexp = Opal.regexp, $send = Opal.send, $rb_plus = Opal.rb_plus, $lambda = Opal.lambda, $rb_le = Opal.rb_le, $rb_minus = Opal.rb_minus, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $eqeqeq = Opal.eqeqeq, $slice = Opal.slice, $Opal = Opal.Opal, $rb_gt = Opal.rb_gt; Opal.add_stubs('require,handle,==,type,push,self,scope,to_s,children,value,recv?,wrap,freeze,join,keys,gsub,even?,length,last_match,+,chop,[],inspect,to_i,to_utf16,translate_escape_chars,valid_encoding?,helper,upcase,<=,call,-,>>,&,attr_accessor,extract_flags_and_value,select!,flags,=~,warning,compiler,compile_static_regexp,compile_dynamic_regexp,each_with_index,zero?,expr,any?,===,new,map,to_proc,flags=,empty?,s,single_line?,value=,include?,is_a?,updated,delete,source,expression,loc,private,>,!=,!,regexp,first,each,compile_inline?,compile_inline,compile_range_initialize,start,finish,raise,expr_or_nil,numerator,denominator,real,imag'); @@ -28957,7 +29126,7 @@ Opal.modules["opal/nodes/literal"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/variables"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/variables"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $send = Opal.send, $range = Opal.range, $eqeqeq = Opal.eqeqeq, $send2 = Opal.send2, $find_super = Opal.find_super; Opal.add_stubs('require,handle,children,irb?,compiler,top?,scope,using_irb?,push,to_s,var_name,with_temp,property,wrap,add_local,expr,value,expr?,recv?,[],name,add_ivar,self,helper,add_gvar,===,handle_global_match,handle_post_match,handle_pre_match,raise,index,stmt?,class_variable_owner,inspect'); @@ -29275,7 +29444,7 @@ Opal.modules["opal/nodes/variables"] = function(Opal) {/* Generated by Opal 1.4. })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/constants"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/constants"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $def = Opal.def, $const_set = Opal.const_set; Opal.add_stubs('require,handle,children,magical_data_const?,push,optimized_access?,helper,name,==,const_scope,s,absolute_const,top_scope,recv,eval?,compiler,relative_access,scope,nil?,eof_content,freeze,include?,base,expr,value,nesting'); @@ -29376,7 +29545,7 @@ Opal.modules["opal/nodes/constants"] = function(Opal) {/* Generated by Opal 1.4. })($nesting[0], $nesting); }; -Opal.modules["corelib/comparable"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/comparable"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $module = Opal.module, $rb_gt = Opal.rb_gt, $rb_lt = Opal.rb_lt, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $def = Opal.def; Opal.add_stubs('>,<,===,raise,class,<=>,equal?'); @@ -29517,7 +29686,7 @@ Opal.modules["corelib/comparable"] = function(Opal) {/* Generated by Opal 1.4.0 })('::') }; -Opal.modules["pathname"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["pathname"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $const_set = Opal.const_set, $regexp = Opal.regexp, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $def = Opal.def, $defs = Opal.defs, $to_ary = Opal.to_ary, $send = Opal.send, $to_a = Opal.to_a, $neqeq = Opal.neqeq, $rb_plus = Opal.rb_plus, $not = Opal.not, $alias = Opal.alias, $module = Opal.module; Opal.add_stubs('require,include,quote,===,to_s,path,respond_to?,to_path,is_a?,nil?,raise,class,==,new,pwd,attr_reader,!,relative?,chop_basename,basename,=~,source,[],rindex,sub,absolute?,expand_path,plus,unshift,length,!=,empty?,first,shift,+,join,dirname,pop,reverse_each,directory?,extname,<=>,nonzero?,proc,casecmp,cleanpath,inspect,include?,fill,map,entries'); @@ -29876,7 +30045,7 @@ Opal.modules["pathname"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/rewriters/break_finder"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/rewriters/break_finder"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $alias = Opal.alias; Opal.add_stubs('require'); @@ -29935,7 +30104,7 @@ Opal.modules["opal/rewriters/break_finder"] = function(Opal) {/* Generated by Op })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/call"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/call"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $hash2 = Opal.hash2, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $defs = Opal.defs, $send2 = Opal.send2, $find_super = Opal.find_super, $slice = Opal.slice, $truthy = Opal.truthy, $def = Opal.def, $eqeq = Opal.eqeq, $rb_plus = Opal.rb_plus, $not = Opal.not, $neqeq = Opal.neqeq, $eqeqeq = Opal.eqeqeq, $to_ary = Opal.to_ary, $Opal = Opal.Opal, $range = Opal.range; Opal.add_stubs('require,handle,attr_reader,freeze,[]=,-,define_method,to_proc,include?,type,s,handle_special,record_method?,<<,method_calls,compiler,to_sym,meth,using_eval?,compile_eval_var,using_irb?,compile_irb_var,default_compile,private,iter,new,process,found_break?,splat?,!,empty?,collect_refinements_temps,scope,auto_await?,push,await_encountered=,invoke_using_refinement?,compile_using_refined_send,invoke_using_send?,compile_using_send,compile_simple_call_chain,compile_break_catcher,helper,compile_receiver,compile_method_name,compile_arguments,compile_block_pass,compile_refinements,recv,receiver_sexp,expr,arglist,children,map,iter_has_break?,unshift,line,method_jsid,any?,==,recvr,mid_to_jsid,to_s,with_temp,intern,irb?,top?,variable_like?,eval?,scope_variables,nil?,updated,async_await,!=,match?,method,arity,[],each,add_special,call,inline_operators?,fragment,resolve,requires,file,dirname,cleanpath,join,Pathname,self,inspect,length,warning,autoloads,required_trees,force_encoding,encoding,+,handle_block_given_call,def?,mid,module_name,count,accepts_using?,using_refinement,first,refinements_temp,arity_check?,defines_lambda,push_nesting?,nesting,new_temp,scope_locals,source_location,size,last,dynamic_require_severity,handle_part,===,is_a?,expand_path,split,error,each_with_object,pop'); @@ -30649,7 +30818,7 @@ Opal.modules["opal/nodes/call"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/csend"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/csend"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $def = Opal.def; Opal.add_stubs('require,handle,helper,conditional_send,recv,receiver_sexp,push,compile_method_name,compile_arguments,compile_block_pass'); @@ -30692,7 +30861,7 @@ Opal.modules["opal/nodes/csend"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/call_special"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/call_special"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $send = Opal.send; Opal.add_stubs('require,handle,children,push,recv,recvr,expr,property,value,<<,default_compile,meth,receiver_sexp,method_jsid,compile_arguments,iter,s,lhs,rhs,==,type,first,map,flatten,scan,to_proc,empty?,stmt?,process'); @@ -30825,7 +30994,7 @@ Opal.modules["opal/nodes/call_special"] = function(Opal) {/* Generated by Opal 1 })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/scope"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/scope"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $def = Opal.def, $send = Opal.send, $rb_minus = Opal.rb_minus, $truthy = Opal.truthy, $not = Opal.not, $rb_plus = Opal.rb_plus, $eqeq = Opal.eqeq, $hash2 = Opal.hash2; Opal.add_stubs('require,attr_accessor,attr_reader,indent,scope,compiler,scope=,-,==,iter?,!,class?,dup,push,map,ivars,gvars,empty?,<<,parser_indent,join,+,fragment,def_in_class?,add_proto_ivar,include?,has_local?,|,scope_locals,reject,start_with?,to_s,has_temp?,pop,next_temp,loop,succ,uses_block!,identify!,valid_name?,mid,compact,parent,name,scope_name,unique_temp,lambda?,def?,type,nil?,rescue_else_sexp,last,class,collect_refinements_temps,add_scope_local,new_refinements_temp,identity,block_name=,add_temp,block_name,line'); @@ -31434,7 +31603,7 @@ Opal.modules["opal/nodes/scope"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/module"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/module"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_ary = Opal.to_ary, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $def = Opal.def; Opal.add_stubs('require,handle,children,name_and_base,helper,nil?,body,stmt?,unshift,line,in_scope,name=,scope,-,compile_body,await_encountered,await_encountered=,parent,+,nesting,private,cid,expr,stmt,returns,compiler,empty_line,add_temp,to_vars'); @@ -31532,7 +31701,7 @@ Opal.modules["opal/nodes/module"] = function(Opal) {/* Generated by Opal 1.4.0 * })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/class"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/class"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $to_ary = Opal.to_ary, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $def = Opal.def; Opal.add_stubs('require,handle,children,name_and_base,helper,nil?,body,stmt?,unshift,super_code,line,in_scope,name=,scope,-,compile_body,await_encountered,await_encountered=,parent,+,nesting,sup,expr'); @@ -31611,7 +31780,7 @@ Opal.modules["opal/nodes/class"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/singleton_class"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/singleton_class"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $def = Opal.def; Opal.add_stubs('require,handle,children,push,in_scope,stmt,returns,compiler,body,add_temp,line,to_vars,scope,recv,object,nesting'); @@ -31660,7 +31829,7 @@ Opal.modules["opal/nodes/singleton_class"] = function(Opal) {/* Generated by Opa })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/arg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/arg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,handle,children,add_arg,scope,name,push,to_s'); @@ -31701,7 +31870,7 @@ Opal.modules["opal/nodes/args/arg"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/arity_check"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/arity_check"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $def = Opal.def, $send = Opal.send, $rb_minus = Opal.rb_minus, $truthy = Opal.truthy, $not = Opal.not, $rb_lt = Opal.rb_lt, $rb_plus = Opal.rb_plus, $rb_gt = Opal.rb_gt; Opal.add_stubs('require,handle,children,new,args_node,args,optargs,restarg,postargs,kwargs,kwoptargs,kwrestarg,kwnilarg,arity,arity=,scope,-,arity_check?,compiler,empty?,arity_checks,helper,inspect,to_s,mid,line,push,join,compact,size,all_args,!,-@,<,+,>,<<,has_only_optional_kwargs?,any?,negative_arity,positive_arity,select,include?,type,has_required_kwargs?,all?,==,def?,class_scope?,top?,parent,class?,name,module?,identity'); @@ -31917,7 +32086,7 @@ Opal.modules["opal/nodes/args/arity_check"] = function(Opal) {/* Generated by Op })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/ensure_kwargs_are_kwargs"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/ensure_kwargs_are_kwargs"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,handle,helper,line'); @@ -31961,7 +32130,7 @@ Opal.modules["opal/nodes/args/ensure_kwargs_are_kwargs"] = function(Opal) {/* Ge })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/extract_block_arg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/extract_block_arg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,handle,children,uses_block!,scope,add_arg,name,prepare_block'); @@ -32003,7 +32172,7 @@ Opal.modules["opal/nodes/args/extract_block_arg"] = function(Opal) {/* Generated })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/extract_kwarg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/extract_kwarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,handle,children,[],meta,<<,used_kwargs,scope,add_temp,lvar_name,line,inspect,to_s'); @@ -32051,7 +32220,7 @@ Opal.modules["opal/nodes/args/extract_kwarg"] = function(Opal) {/* Generated by })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/extract_kwargs"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/extract_kwargs"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,handle,add_temp,line'); @@ -32091,7 +32260,7 @@ Opal.modules["opal/nodes/args/extract_kwargs"] = function(Opal) {/* Generated by })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/extract_kwoptarg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/extract_kwoptarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $eqeq = Opal.eqeq, $def = Opal.def; Opal.add_stubs('require,handle,children,[],meta,<<,used_kwargs,scope,add_temp,lvar_name,line,inspect,to_s,==,default_value,expr'); @@ -32140,7 +32309,7 @@ Opal.modules["opal/nodes/args/extract_kwoptarg"] = function(Opal) {/* Generated })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/extract_kwrestarg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/extract_kwrestarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $send = Opal.send; Opal.add_stubs('require,handle,children,name,add_temp,line,used_kwargs,map,scope,join'); @@ -32194,7 +32363,7 @@ Opal.modules["opal/nodes/args/extract_kwrestarg"] = function(Opal) {/* Generated })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/extract_optarg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/extract_optarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $eqeq = Opal.eqeq, $def = Opal.def; Opal.add_stubs('require,handle,children,==,[],default_value,line,name,expr'); @@ -32237,7 +32406,7 @@ Opal.modules["opal/nodes/args/extract_optarg"] = function(Opal) {/* Generated by })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/extract_post_arg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/extract_post_arg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,handle,children,add_temp,name,line'); @@ -32279,7 +32448,7 @@ Opal.modules["opal/nodes/args/extract_post_arg"] = function(Opal) {/* Generated })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/extract_post_optarg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/extract_post_optarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $eqeq = Opal.eqeq, $def = Opal.def; Opal.add_stubs('require,handle,children,add_temp,name,line,args_to_keep,==,[],default_value,expr'); @@ -32324,7 +32493,7 @@ Opal.modules["opal/nodes/args/extract_post_optarg"] = function(Opal) {/* Generat })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/extract_restarg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/extract_restarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $def = Opal.def; Opal.add_stubs('require,handle,children,name,add_temp,==,args_to_keep,line'); @@ -32370,7 +32539,7 @@ Opal.modules["opal/nodes/args/extract_restarg"] = function(Opal) {/* Generated b })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/fake_arg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/fake_arg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,handle,next_temp,scope,add_arg,push'); @@ -32411,7 +32580,7 @@ Opal.modules["opal/nodes/args/fake_arg"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/initialize_iterarg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/initialize_iterarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,handle,children,line,name'); @@ -32450,7 +32619,7 @@ Opal.modules["opal/nodes/args/initialize_iterarg"] = function(Opal) {/* Generate })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/initialize_shadowarg"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/initialize_shadowarg"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,handle,children,<<,locals,scope,name,add_arg,line'); @@ -32492,7 +32661,7 @@ Opal.modules["opal/nodes/args/initialize_shadowarg"] = function(Opal) {/* Genera })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args/parameters"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/parameters"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $truthy = Opal.truthy, $eqeq = Opal.eqeq; Opal.add_stubs('children,map,public_send,type,join,compact,=='); @@ -32620,7 +32789,7 @@ Opal.modules["opal/nodes/args/parameters"] = function(Opal) {/* Generated by Opa })($nesting[0], $nesting) }; -Opal.modules["opal/nodes/args/prepare_post_args"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args/prepare_post_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $eqeq = Opal.eqeq, $def = Opal.def; Opal.add_stubs('require,handle,children,add_temp,==,offset,line'); @@ -32665,7 +32834,7 @@ Opal.modules["opal/nodes/args/prepare_post_args"] = function(Opal) {/* Generated })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/args"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/args"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $send = Opal.send, $truthy = Opal.truthy, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_plus = Opal.rb_plus, $rb_gt = Opal.rb_gt, $neqeq = Opal.neqeq, $def = Opal.def; Opal.add_stubs('require,handle,each_with_index,children,multiple_underscore?,[],[]=,-,+,>,s,type,!=,push,process,==,count,start_with?,to_s,first'); @@ -32754,7 +32923,7 @@ Opal.modules["opal/nodes/args"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/node_with_args"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/node_with_args"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $def = Opal.def, $truthy = Opal.truthy; Opal.add_stubs('require,attr_reader,attr_accessor,[],meta,s,original_args,push,process,arity_check_node,uses_block?,scope,prepare_block,to_code,new'); @@ -32828,7 +32997,7 @@ Opal.modules["opal/nodes/node_with_args"] = function(Opal) {/* Generated by Opal })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/iter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/iter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $eqeq = Opal.eqeq, $rb_gt = Opal.rb_gt, $def = Opal.def; Opal.add_stubs('require,handle,children,lambda_definition?,scope,is_lambda!,in_scope,identify!,process,inline_args,compile_arity_check,stmt,returned_body,add_temp,to_vars,line,catch_return,unshift,push,await_encountered,<<,arity,self,contains_break?,arity_check?,compiler,parameters_code,has_top_level_mlhs_arg?,has_trailing_comma_in_args?,==,length,>,join,nesting,relative_access,block_arg,prepare_block,each,args,first,updated,body,returns,s,any?,original_args,type,expression,loc,source,match,new,found_break?'); @@ -33006,7 +33175,7 @@ Opal.modules["opal/nodes/iter"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/def"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/def"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $def = Opal.def, $rb_plus = Opal.rb_plus; Opal.add_stubs('require,handle,children,in_scope,mid,mid=,scope,-,==,type,defs=,identify!,identity,block_name=,process,inline_args,stmt,returns,compiler,stmts,compile_block_arg,add_temp,compile_arity_check,unshift,current_indent,to_vars,line,catch_return,push,await_encountered,<<,arity,arity_check?,parameters_code,parse_comments?,comments_code,enable_source_location?,source_location,length,>,join,wrap_with_definition,nesting,relative_access,helper,wrap,self,expr?,+,map,comments,inspect,text'); @@ -33136,7 +33305,7 @@ Opal.modules["opal/nodes/def"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/defs"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/defs"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $def = Opal.def; Opal.add_stubs('require,handle,children,helper,unshift,expr,recvr,mid,push'); @@ -33172,7 +33341,7 @@ Opal.modules["opal/nodes/defs"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/if"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/if"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $def = Opal.def, $not = Opal.not, $send = Opal.send, $eqeqeq = Opal.eqeqeq; Opal.add_stubs('require,handle,children,should_compile_as_simple_expression?,==,true_body,s,compile_with_binary_or,false_body,compile_with_binary_and,compile_with_ternary,compile_with_if,truthy,falsy,!,push,js_truthy,test,indent,line,stmt,type,expects_expression?,await_encountered,scope,wrap,returnify,returns,compiler,expr?,recv?,simple?,expr,[],meta,sexp,===,single_line?,strip_empty_children,all?,helper,new_temp,top_scope,excl,from,to'); @@ -33420,7 +33589,7 @@ Opal.modules["opal/nodes/if"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/logic"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/logic"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_gt = Opal.rb_gt, $not = Opal.not; Opal.add_stubs('require,handle,in_while?,push,iter?,scope,expr_or_nil,value,error,===,size,children,s,first,compile_while,compile_iter,[],while_loop,stmt?,line,break_val,nil?,expr,[]=,-,helper,identity,==,empty_splat?,recv,>,find_parent_def,!,lambda?,def?,expr?,return_in_iter?,return_expr_in_def?,scope_to_catch_return,catch_return=,return_val,to_s'); @@ -33689,7 +33858,7 @@ Opal.modules["opal/nodes/logic"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/definitions"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/definitions"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $range = Opal.range, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $eqeq = Opal.eqeq, $to_a = Opal.to_a, $slice = Opal.slice, $rb_plus = Opal.rb_plus, $hash2 = Opal.hash2, $const_set = Opal.const_set; Opal.add_stubs('require,handle,children,each,line,self,scope,expr,===,type,new_name,helper,inspect,[],to_s,first,old_name,push,error,empty?,stmt?,compile_children,simple_children?,compile_inline_children,>,size,wrap,==,returned_children,await_encountered,parent,+,returns,compiler,s,process,fragment,freeze,none?,include?,map,each_with_index,reject,to_proc'); @@ -33848,7 +34017,7 @@ Opal.modules["opal/nodes/definitions"] = function(Opal) {/* Generated by Opal 1. })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/yield"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/yield"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def; Opal.add_stubs('require,find_yielding_scope,uses_block!,block_name,block_name=,-,yields_single_arg?,children,push,expr,first,wrap,s,uses_splat?,scope,def?,parent,!,==,size,any?,type,handle,compile_call'); @@ -33964,7 +34133,7 @@ Opal.modules["opal/nodes/yield"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/rescue"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/rescue"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $def = Opal.def, $range = Opal.range, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq; Opal.add_stubs('require,handle,children,push,in_ensure,line,stmt,body_sexp,indent,has_rescue_else?,unshift,rescue_else_code,process,compiler,ensr_sexp,wrap_in_closure?,await_encountered,scope,wrap,returns,begn,ensr,s,recv?,expr?,rescue_else_sexp,stmt?,detect,[],!=,type,rescue_else_sexp=,-,handle_rescue_else_manually?,in_rescue,body_code,each_with_index,==,retry_id,body,nil?,!,in_ensure?,gen_retry_id,attr_reader,expr,klasses,lvar,updated,in_resbody,rescue_body,klasses_sexp,in_resbody?,error,current_rescue'); @@ -34272,10 +34441,10 @@ Opal.modules["opal/nodes/rescue"] = function(Opal) {/* Generated by Opal 1.4.0 * })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/super"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/super"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $slice = Opal.slice, $truthy = Opal.truthy, $send = Opal.send, $def = Opal.def, $to_ary = Opal.to_ary, $eqeq = Opal.eqeq, $not = Opal.not, $eqeqeq = Opal.eqeqeq, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $rb_gt = Opal.rb_gt; - Opal.add_stubs('require,include?,type,s,helper,push,compile_receiver,compile_method_body,compile_method_name,compile_arguments,compile_block_pass,private,def?,scope,find_parent_def,to_s,mid,def_scope,identify!,self,method_id,def_scope_identity,defined_check_param,allow_stubs,super_chain,join,map,implicit_arguments_param,super_method_invocation,iter?,super_block_invocation,raise,handle,wrap,uses_block!,compile_using_send,==,iter,block_name,implicit_arglist,!,<<,new,each,children,original_args,[],meta,===,+,[]=,-,>,empty?'); + Opal.add_stubs('require,include?,type,s,helper,push,compile_receiver,compile_method_body,compile_method_name,compile_arguments,compile_block_pass,private,def?,scope,find_parent_def,to_s,mid,def_scope,identify!,self,method_id,def_scope_identity,defined_check_param,allow_stubs,super_chain,join,map,implicit_arguments_param,super_method_invocation,iter?,super_block_invocation,raise,handle,wrap,uses_block!,compile_using_send,==,iter,block_name,implicit_arglist,!,<<,new,each,children,original_args,[],===,+,[]=,-,>,meta,empty?'); self.$require("opal/nodes/base"); return (function($base, $parent_nesting) { @@ -34527,35 +34696,37 @@ Opal.modules["opal/nodes/super"] = function(Opal) {/* Generated by Opal 1.4.0 */ args = []; kwargs = []; same_arg_counter = $$('Hash').$new(0); - $send(self.$def_scope().$original_args().$children(), 'each', [], function $$2(sexp){var self = $$2.$$s == null ? this : $$2.$$s, arg_name = nil, $ret_or_1 = nil, arg_node = nil, $writer = nil; + $send(self.$def_scope().$original_args().$children(), 'each', [], function $$2(sexp){var self = $$2.$$s == null ? this : $$2.$$s, lvar_name = nil, $ret_or_1 = nil, arg_node = nil, $writer = nil, key_name = nil; if (sexp == null) sexp = nil;; - arg_name = sexp.$meta()['$[]']("arg_name"); + lvar_name = sexp.$children()['$[]'](0); if (($eqeqeq("arg", ($ret_or_1 = sexp.$type())) || ($eqeqeq("optarg", $ret_or_1)))) { - arg_node = self.$s("lvar", arg_name); - if ($eqeq(arg_name['$[]'](0), "_")) { + arg_node = self.$s("lvar", lvar_name); + if ($eqeq(lvar_name['$[]'](0), "_")) { - $writer = [arg_name, $rb_plus(same_arg_counter['$[]'](arg_name), 1)]; + $writer = [lvar_name, $rb_plus(same_arg_counter['$[]'](lvar_name), 1)]; $send(same_arg_counter, '[]=', $to_a($writer)); $writer[$rb_minus($writer["length"], 1)];; - if ($truthy($rb_gt(same_arg_counter['$[]'](arg_name), 1))) { - arg_node = self.$s("js_tmp", "" + (arg_name) + "_$" + (same_arg_counter['$[]'](arg_name))) + if ($truthy($rb_gt(same_arg_counter['$[]'](lvar_name), 1))) { + arg_node = self.$s("js_tmp", "" + (lvar_name) + "_$" + (same_arg_counter['$[]'](lvar_name))) }; }; return args['$<<'](arg_node); } else if ($eqeqeq("restarg", $ret_or_1)) { - arg_node = ($truthy(arg_name) ? (self.$s("lvar", arg_name)) : (self.$s("js_tmp", "$rest_arg"))); + arg_node = ($truthy(lvar_name) ? (self.$s("lvar", lvar_name)) : (self.$s("js_tmp", "$rest_arg"))); return args['$<<'](self.$s("splat", arg_node)); } else if (($eqeqeq("kwarg", $ret_or_1) || ($eqeqeq("kwoptarg", $ret_or_1)))) { - return kwargs['$<<'](self.$s("pair", self.$s("sym", arg_name), self.$s("lvar", arg_name))) + + key_name = sexp.$meta()['$[]']("arg_name"); + return kwargs['$<<'](self.$s("pair", self.$s("sym", key_name), self.$s("lvar", lvar_name))); } else if ($eqeqeq("kwrestarg", $ret_or_1)) { - arg_node = ($truthy(arg_name) ? (self.$s("lvar", arg_name)) : (self.$s("js_tmp", "$kw_rest_arg"))); + arg_node = ($truthy(lvar_name) ? (self.$s("lvar", lvar_name)) : (self.$s("js_tmp", "$kw_rest_arg"))); return kwargs['$<<'](self.$s("kwsplat", arg_node)); } else { return nil @@ -34581,7 +34752,7 @@ Opal.modules["opal/nodes/super"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/version"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/version"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set; return (function($base, $parent_nesting) { @@ -34589,11 +34760,11 @@ Opal.modules["opal/version"] = function(Opal) {/* Generated by Opal 1.4.0 */ var $nesting = [self].concat($parent_nesting); - return $const_set($nesting[0], 'VERSION', "1.4.0") + return $const_set($nesting[0], 'VERSION', "1.4.1") })($nesting[0], $nesting) }; -Opal.modules["opal/nodes/top"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/top"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $def = Opal.def; Opal.add_stubs('require,handle,children,top_scope=,compiler,-,push,version_comment,in_scope,==,body,s,line,use_strict?,stmt,stmts,is_a?,eval?,add_temp,add_used_helpers,to_vars,scope,compile_method_stubs,compile_irb_vars,compile_end_construct,opening,closing,await_encountered,requirable?,unshift,inspect,module_name,file,esm?,returns,irb?,each,to_a,helpers,method_missing?,method_calls,join,map,to_proc,empty?,eof_content'); @@ -34779,7 +34950,7 @@ Opal.modules["opal/nodes/top"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/while"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/while"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def; Opal.add_stubs('require,handle,children,js_truthy,test,with_temp,in_while,compiler,wrap_in_closure?,[]=,while_loop,-,indent,stmt,body,uses_redo?,compile_with_redo,compile_without_redo,await_encountered,scope,wrap,private,push,compile_while,while_open,while_close,line,[],expr?,recv?'); @@ -34958,7 +35129,7 @@ Opal.modules["opal/nodes/while"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/hash"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/hash"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $def = Opal.def, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $to_ary = Opal.to_ary, $hash2 = Opal.hash2, $rb_minus = Opal.rb_minus; Opal.add_stubs('require,handle,attr_accessor,each,children,===,type,<<,[],all?,keys,include?,has_kwsplat,compile_merge,simple_keys?,compile_hash2,compile_hash,helper,==,empty?,expr,s,each_with_index,push,wrap,times,size,inspect,to_s,values,[]=,-,join,value'); @@ -35144,7 +35315,7 @@ Opal.modules["opal/nodes/hash"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/array"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/array"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $def = Opal.def; Opal.add_stubs('require,handle,empty?,children,push,each,==,type,expr,<<,fragment'); @@ -35222,7 +35393,7 @@ Opal.modules["opal/nodes/array"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/defined"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/defined"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $eqeqeq = Opal.eqeqeq, $eqeq = Opal.eqeq, $def = Opal.def, $truthy = Opal.truthy, $to_a = Opal.to_a, $slice = Opal.slice, $send = Opal.send, $range = Opal.range; Opal.add_stubs('require,handle,children,===,type,value,push,inspect,to_s,==,[],size,compile_defined_send,wrap,compile_defined_ivar,compile_defined_super,compile_defined_yield,compile_defined_xstr,compile_defined_const,compile_defined_cvar,compile_defined_gvar,compile_defined_back_ref,compile_defined_nth_ref,compile_defined_array,respond_to?,__send__,new_temp,scope,expr,wrap_with_try_catch,mid_to_jsid,compile_defined,compile_send_recv_doesnt_raise,self,each,s,uses_block!,block_name,find_parent_def,nil?,relative_access,absolute_const,top_scope,class_variable_owner,helper,include?,each_with_index'); @@ -35499,7 +35670,7 @@ Opal.modules["opal/nodes/defined"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/masgn"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/masgn"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $eqeq = Opal.eqeq, $truthy = Opal.truthy, $send = Opal.send, $def = Opal.def, $rb_ge = Opal.rb_ge, $not = Opal.not, $rb_plus = Opal.rb_plus; Opal.add_stubs('require,freeze,handle,children,new_temp,scope,==,type,rhs,push,expr,any?,size,compile_masgn,lhs,helper,queue_temp,take_while,!=,drop,each_with_index,compile_assignment,empty?,shift,[],<<,dup,s,>=,!,updated,include?,+,last,raise'); @@ -35650,7 +35821,7 @@ Opal.modules["opal/nodes/masgn"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/arglist"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/arglist"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $to_a = Opal.to_a, $def = Opal.def; Opal.add_stubs('require,handle,each,children,==,type,expr,empty?,<<,fragment,push'); @@ -35725,7 +35896,7 @@ Opal.modules["opal/nodes/arglist"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting); }; -Opal.modules["opal/nodes/x_string"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/x_string"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $def = Opal.def, $defs = Opal.defs, $lambda = Opal.lambda, $eqeqeq = Opal.eqeqeq, $eqeq = Opal.eqeq, $not = Opal.not, $range = Opal.range; Opal.add_stubs('handle,unpack_return,children,strip_empty_children,single_line?,compile_single_line,each,compile_child,recv?,wrap,push,==,size,none?,type,end_with?,source,expression,loc,dup,nil?,empty?,rstrip,any?,[],first,shift,last,pop,private,===,include?,self,scope,new,expr,raise,s,strip,=~,!,extract_last_value,expr?,warning,compiler,line'); @@ -35913,7 +36084,7 @@ Opal.modules["opal/nodes/x_string"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting) }; -Opal.modules["opal/nodes/lambda"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes/lambda"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $def = Opal.def; Opal.add_stubs('require,handle,children,helper,defines_lambda,scope,push,expr,iter'); @@ -35950,7 +36121,7 @@ Opal.modules["opal/nodes/lambda"] = function(Opal) {/* Generated by Opal 1.4.0 * })($nesting[0], $nesting); }; -Opal.modules["opal/nodes"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/nodes"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, nil = Opal.nil; Opal.add_stubs('require'); @@ -35987,7 +36158,7 @@ Opal.modules["opal/nodes"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$require("opal/nodes/lambda"); }; -Opal.modules["opal/eof_content"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/eof_content"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $eqeq = Opal.eqeq, $range = Opal.range, $to_ary = Opal.to_ary; Opal.add_stubs('empty?,[],last_token_position,drop_while,lines,==,join,private,last,end_pos'); @@ -36052,7 +36223,7 @@ Opal.modules["opal/eof_content"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["opal/errors"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/errors"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $defs = Opal.defs, $rb_plus = Opal.rb_plus, $alias = Opal.alias; Opal.add_stubs('attr_reader,attr_accessor,new,respond_to?,location,location=,-,diagnostic,diagnostic=,to_a,backtrace,unshift,to_s,set_backtrace,path,lineno,+,label,line,lineno=,source_line,label=,expression'); @@ -36199,7 +36370,7 @@ Opal.modules["opal/errors"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["opal/magic_comments"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/magic_comments"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send, $rb_ge = Opal.rb_ge, $eqeqeq = Opal.eqeqeq, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $defs = Opal.defs; Opal.add_stubs('freeze,line,loc,take,each,>=,any?,scan,text,to_sym,===,[]=,-'); @@ -36248,7 +36419,7 @@ Opal.modules["opal/magic_comments"] = function(Opal) {/* Generated by Opal 1.4.0 })($$('Opal'), $nesting) }; -Opal.modules["opal/compiler"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/compiler"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $hash2 = Opal.hash2, $defs = Opal.defs, $klass = Opal.klass, $const_set = Opal.const_set, $send = Opal.send, $truthy = Opal.truthy, $not = Opal.not, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $Opal = Opal.Opal, $to_ary = Opal.to_ary, $alias = Opal.alias, $eqeqeq = Opal.eqeqeq, $regexp = Opal.regexp, $rb_plus = Opal.rb_plus, $slice = Opal.slice, $eqeq = Opal.eqeq; Opal.add_stubs('require,compile,new,freeze,join,dirname,first,split,basename,to_s,cleanpath,Pathname,fetch,define_method,option_value,key?,[],!,include?,raise,inspect,[]=,-,compiler_option,attr_reader,attr_accessor,parse,re_raise_with_location,flatten,process,end_with?,code,last,<<,fragment,s,map,to_proc,file,source=,default_parser,tokenize,requirable?,eval?,tap,meta,associate_locations,eof,magic_comments,to_sym,strip,async_await_before_typecasting,===,async_await_set_to_regexp,to_a,gsub,escape,location=,opal_location_from_error,path=,label,lines,to_i,line,label=,message,set_backtrace,backtrace,add_opal_location_to_error,warn,empty?,+,start_with?,helpers,new_temp,queue_temp,push_while,pop_while,in_while?,nil?,scope,handlers,type,compile_to_fragments,error,returns,updated,children,==,uses_block!,block_name,find_parent_def,cache,source_map'); @@ -36746,7 +36917,7 @@ Opal.modules["opal/compiler"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal/erb"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/erb"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $module = Opal.module, $defs = Opal.defs, $klass = Opal.klass, $const_set = Opal.const_set, $def = Opal.def, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $send = Opal.send, $regexp = Opal.regexp; Opal.add_stubs('require,compile,new,freeze,fix_quotes,find_contents,find_code,wrap_compiled,require_erb,prepared_source,gsub,+,last_match,=~,sub'); @@ -36843,7 +37014,7 @@ Opal.modules["opal/erb"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting); }; -Opal.modules["opal-parser"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal-parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $module = Opal.module, $Opal = Opal.Opal, $hash2 = Opal.hash2, $truthy = Opal.truthy, $def = Opal.def; Opal.add_stubs('require,coerce_to!,merge,js_eval'); diff --git a/opal/current/opal-parser.min.js b/opal/current/opal-parser.min.js index 6a5e9590..a3b1d458 100644 --- a/opal/current/opal-parser.min.js +++ b/opal/current/opal-parser.min.js @@ -1 +1 @@ -Opal.modules.base64=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$defs=Opal.defs,$hash2=Opal.hash2,$truthy=Opal.truthy;return Opal.add_stubs("raise,delete"),function($base,$parent_nesting){var encode,decode,self=$module($base,"Base64"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";return encode=function(input){for(var block,charCode,str=String(input),idx=0,map=chars,output="";str.charAt(0|idx)||(map="=",idx%1);output+=map.charAt(63&block>>8-idx%1*8))(charCode=str.charCodeAt(idx+=3/4))>255&&self.$raise($$("ArgumentError"),"invalid character (failed: The string to be encoded contains characters outside of the Latin1 range.)"),block=block<<8|charCode;return output},decode=function(input){var str=String(input).replace(/=+$/,"");str.length%4==1&&self.$raise($$("ArgumentError"),"invalid base64 (failed: The string to be decoded is not correctly encoded.)");for(var bs,buffer,bc=0,idx=0,output="";buffer=str.charAt(idx++);~buffer&&(bs=bc%4?64*bs+buffer:buffer,bc++%4)?output+=String.fromCharCode(255&bs>>(-2*bc&6)):0)buffer=chars.indexOf(buffer);return output},$defs(self,"$decode64",(function(string){return decode(string.replace(/\r?\n/g,""))}),1),$defs(self,"$encode64",(function(string){return encode(string).replace(/(.{60})/g,"$1\n").replace(/([^\n])$/g,"$1\n")}),1),$defs(self,"$strict_decode64",(function(string){return decode(string)}),1),$defs(self,"$strict_encode64",(function(string){return encode(string)}),1),$defs(self,"$urlsafe_decode64",(function(string){return decode(string.replace(/\-/g,"+").replace(/_/g,"/"))}),1),$defs(self,"$urlsafe_encode64",(function(string,$kwargs){var padding,str=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(padding=$kwargs.$$smap.padding)&&(padding=!0),str=encode(string).replace(/\+/g,"-").replace(/\//g,"_"),$truthy(padding)||(str=str.$delete("=")),str}),-2)}($nesting[0],$nesting)},Opal.modules["corelib/pack_unpack/format_string_parser"]=function(Opal){Opal.nil;var self,directives,modifiers,$$$=Opal.$$$,$module=Opal.module,$Kernel=Opal.Kernel;return Opal.add_stubs("raise"),self=$module("::","PackUnpack"),directives=["C","S","L","Q","J","c","s","l","q","j","n","N","v","V","U","w","D","d","F","f","E","e","G","g","A","a","Z","B","b","H","h","u","M","m","P","p","@","X","x"],modifiers=["!","_",">","<"],void(self.eachDirectiveAndCount=function(format,callback){var currentDirective,currentCount,currentModifiers,countSpecified;function reset(){currentDirective=null,currentCount=0,currentModifiers=[],countSpecified=!1}function yieldAndReset(){null!=currentDirective?(!/[sSiIlLqQjJ]/.test(currentDirective)&¤tModifiers.length>0&&$Kernel.$raise($$$("ArgumentError"),"'"+currentModifiers[0]+"' allowed only after types sSiIlLqQjJ"),-1!==currentModifiers.indexOf("<")&&-1!==currentModifiers.indexOf(">")&&$Kernel.$raise($$$("RangeError"),"Can't use both '<' and '>'"),countSpecified||(currentCount=1),-1!==currentModifiers.indexOf(">")&&(currentDirective+=">"),callback(currentDirective,currentCount),reset()):reset()}reset();for(var i=0;i,length,inspect,[],unpack"),self.$require("base64"),self.$require("corelib/pack_unpack/format_string_parser"),function($base,$super,$parent_nesting){var self=$klass("::",null,"String"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),expected=nil,given=nil,eachDirectiveAndCount=Opal.PackUnpack.eachDirectiveAndCount;function mapChunksToWords(callback){return function(data){return callback(data).map((function(chunk){return chunk.reverse().reduce((function(result,singleByte){return 256*result+singleByte}),0)}))}}function chunkBy(chunkSize,callback){return function(data){for(var array=callback(data),chunks=[],chunksCount=array.length/chunkSize,i=0;i=limit/2&&(n-=limit),n}))}}function bytesToAsciiChars(callback){return function(data){return callback(data).map((function(singleByte){return String.fromCharCode(singleByte)}))}}function joinChars(callback){return function(data){return callback(data).join("")}}function wrapIntoArray(callback){return function(data){return[callback(data)]}}var charCodesToFilter,filterTrailingZerosAndSpaces=(charCodesToFilter=["\0"," "].map((function(s){return s.charCodeAt(0)})),function(callback){return function(data){for(var charCodes=callback(data);-1!==charCodesToFilter.indexOf(charCodes[charCodes.length-1]);)charCodes=charCodes.slice(0,charCodes.length-1);return charCodes}});function invertChunks(callback){return function(data){return callback(data).map((function(chunk){return chunk.reverse()}))}}function identityFunction(value){return value}var callback,handlers={C:identityFunction,S:mapChunksToWords(chunkBy(2,identityFunction)),L:mapChunksToWords(chunkBy(4,identityFunction)),Q:mapChunksToWords(chunkBy(8,identityFunction)),J:null,"S>":mapChunksToWords(invertChunks(chunkBy(2,identityFunction))),"L>":mapChunksToWords(invertChunks(chunkBy(4,identityFunction))),"Q>":mapChunksToWords(invertChunks(chunkBy(8,identityFunction))),c:toNByteSigned(1,identityFunction),s:toNByteSigned(2,mapChunksToWords(chunkBy(2,identityFunction))),l:toNByteSigned(4,mapChunksToWords(chunkBy(4,identityFunction))),q:toNByteSigned(8,mapChunksToWords(chunkBy(8,identityFunction))),j:null,"s>":toNByteSigned(2,mapChunksToWords(invertChunks(chunkBy(2,identityFunction)))),"l>":toNByteSigned(4,mapChunksToWords(invertChunks(chunkBy(4,identityFunction)))),"q>":toNByteSigned(8,mapChunksToWords(invertChunks(chunkBy(8,identityFunction)))),n:null,N:null,v:null,V:null,U:identityFunction,w:(callback=identityFunction,function(data){for(var bytes=callback(data),result=[],buffer="",i=0;i45)return"";for(length+=n;n>0;){var c1=bytes[i],c2=bytes[i+1],c3=bytes[i+2],b1=(c1-32&63)<<2|(c2-32&63)>>4,b2=(c2-32&63)<<4|(c3-32&63)>>2,b3=(c3-32&63)<<6|bytes[i+3]-32&63;result.push(255&b1),result.push(255&b2),result.push(255&b3),i+=4,n-=3}++i}}return result.slice(0,length)}}(identityFunction))),M:function(callback){return function(data){return callback(data).replace(/[\t\x20]$/gm,"").replace(/=(?:\r\n?|\n|$)/g,"").replace(/=([a-fA-F0-9]{2})/g,(function($0,$1){var codePoint=parseInt($1,16);return String.fromCharCode(codePoint)}))}}(joinChars(bytesToAsciiChars(identityFunction))),m:function(callback){return function(data){return $$("Base64").$decode64(callback(data))}}(joinChars(bytesToAsciiChars(identityFunction))),P:null,p:null};function readBytes(n){return function(bytes){return{chunk:bytes.slice(0,n),rest:bytes=bytes.slice(n,bytes.length)}}}function readNTimesAndMerge(callback){return function(buffer,count){var chunkData,chunk=[];if(count===1/0)for(;buffer.length>0;)buffer=(chunkData=callback(buffer)).rest,chunk=chunk.concat(chunkData.chunk);else for(var i=0;i":readNTimesAndMerge(readBytes(2)),"L>":readNTimesAndMerge(readBytes(4)),"Q>":readNTimesAndMerge(readBytes(8)),c:readNTimesAndMerge(readBytes(1)),s:readNTimesAndMerge(readBytes(2)),l:readNTimesAndMerge(readBytes(4)),q:readNTimesAndMerge(readBytes(8)),j:null,"s>":readNTimesAndMerge(readBytes(2)),"l>":readNTimesAndMerge(readBytes(4)),"q>":readNTimesAndMerge(readBytes(8)),n:null,N:null,v:null,V:null,U:readNTimesAndMerge((function(bytes){var currentByteIndex=0,bytesLength=bytes.length;function readByte(){var result=bytes[currentByteIndex++];return bytesLength=bytes.length-currentByteIndex,result}var extraLength,c=readByte();if(c>>7==0)return{chunk:[c],rest:bytes.slice(currentByteIndex)};c>>6==2&&$Kernel.$raise($$$("ArgumentError"),"malformed UTF-8 character"),c>>5==6?extraLength=1:c>>4==14?extraLength=2:c>>3==30?extraLength=3:c>>2==62?extraLength=4:c>>1==126?extraLength=5:$Kernel.$raise("malformed UTF-8 character"),extraLength>bytesLength&&(expected=extraLength+1,given=bytesLength+1,$Kernel.$raise($$$("ArgumentError"),"malformed UTF-8 character (expected "+expected+" bytes, given "+given+" bytes)"));for(var result=c&(1<<8-extraLength-1)-1,i=0;i>6!=2&&$Kernel.$raise("Invalid multibyte sequence"),result=result<<6|63&c;return result<=65535?{chunk:[result],rest:bytes.slice(currentByteIndex)}:{chunk:[55296+((result-=65536)>>10&1023),56320+(1023&result)],rest:bytes.slice(currentByteIndex)}})),w:readNTimesAndMerge((function(buffer){for(var result=[],i=0;i0&&buffer.length>0;){var singleByte=buffer[0],bitsToTake=Math.min(count,8);Math.ceil(bitsToTake/8);if(buffer=buffer.slice(1,buffer.length),null!=singleByte){var bits=singleByte.toString(2);bits=Array(8-bits.length+1).join("0").concat(bits);for(var j=0;j0&&buffer.length>0;){var singleByte=buffer[0],bitsToTake=Math.min(count,8);Math.ceil(bitsToTake/8);if(buffer=buffer.slice(1,buffer.length),null!=singleByte){var bits=singleByte.toString(2);bits=Array(8-bits.length+1).join("0").concat(bits).split("").reverse().join("");for(var j=0;j0&&buffer.length>0;){var hex=buffer[0].toString(16);buffer=buffer.slice(1,buffer.length),hex=Array(2-hex.length+1).join("0").concat(hex),1===count?(result.push(hex[0]),count--):(result.push(hex[0],hex[1]),count-=2)}return{chunk:result,rest:buffer}},h:function(buffer,count){for(var result=[];count>0&&buffer.length>0;){var hex=buffer[0].toString(16);buffer=buffer.slice(1,buffer.length),hex=Array(2-hex.length+1).join("0").concat(hex),1===count?(result.push(hex[1]),count--):(result.push(hex[1],hex[0]),count-=2)}return{chunk:result,rest:buffer}},u:readNTimesAndMerge((function(buffer){var length=buffer.indexOf(32);return-1===length?{chunk:buffer,rest:[]}:{chunk:buffer.slice(0,length),rest:buffer.slice(length,buffer.length)}})),M:readAll,m:readAll,P:null,p:null},autocompletion={C:!0,S:!0,L:!0,Q:!0,J:null,"S>":!0,"L>":!0,"Q>":!0,c:!0,s:!0,l:!0,q:!0,j:null,"s>":!0,"l>":!0,"q>":!0,n:null,N:null,v:null,V:null,U:!1,w:!1,D:null,d:null,F:null,f:null,E:null,e:null,G:null,g:null,A:!1,a:!1,Z:!1,B:!1,b:!1,H:!1,h:!1,u:!1,M:!1,m:!1,P:null,p:null},optimized={"C*":handlers.C,"c*":handlers.c,"A*":handlers.A,"a*":handlers.a,"M*":wrapIntoArray(handlers.M),"m*":wrapIntoArray(handlers.m),"S*":handlers.S,"s*":handlers.s,"L*":handlers.L,"l*":handlers.l,"Q*":handlers.Q,"q*":handlers.q,"S>*":handlers["S>"],"s>*":handlers["s>"],"L>*":handlers["L>"],"l>*":handlers["l>"],"Q>*":handlers["Q>"],"q>*":handlers["q>"]};function alias(existingDirective,newDirective){readChunk[newDirective]=readChunk[existingDirective],handlers[newDirective]=handlers[existingDirective],autocompletion[newDirective]=autocompletion[existingDirective]}return alias("S>","n"),alias("L>","N"),alias("S","v"),alias("L","V"),$def(self,"$unpack",(function(format,$kwargs){var offset;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");null==(offset=$kwargs.$$smap.offset)&&(offset=0),$truthy($rb_lt(offset,0))&&$Kernel.$raise($$$("ArgumentError"),"offset can't be negative"),format=$Opal["$coerce_to!"](format,$$$("String"),"to_str").$gsub(/\s/,"").$delete("\0");var output=[];if("U*"==format&&"UTF-8"===this.internal_encoding.name&&"function"==typeof this.codePointAt){var j=0;output=new Array(this.length);for(var i=offset;i65535&&i++;return output.slice(0,j)}var buffer=this.$bytes();$truthy($rb_gt(offset,buffer.$length()))&&$Kernel.$raise($$$("ArgumentError"),"offset outside of string"),buffer=buffer.slice(offset);var optimizedHandler=optimized[format];if(optimizedHandler)return optimizedHandler(buffer);return eachDirectiveAndCount(format,(function(directive,count){var part=function(directive,count){var chunk,chunkReader=readChunk[directive];null==chunkReader&&$Kernel.$raise("Unsupported unpack directive "+directive.$inspect()+" (no chunk reader defined)");var chunkData=chunkReader(buffer,count);chunk=chunkData.chunk,buffer=chunkData.rest;var handler=handlers[directive];return null==handler&&$Kernel.$raise("Unsupported unpack directive "+directive.$inspect()+" (no handler defined)"),handler(chunk)}(directive,count);if(count!==1/0){var shouldAutocomplete=autocompletion[directive];null==shouldAutocomplete&&$Kernel.$raise("Unsupported unpack directive "+directive.$inspect()+" (no autocompletion rule defined)"),shouldAutocomplete&&function(array,size){for(;array.length"}),0),$def(self,"$==",(function(other){return!!$truthy(this["$equal?"](other))||($truthy(other["$instance_of?"](this.$class()))?this.hash["$=="](other.$instance_variable_get("@hash")):!(!$truthy(other["$is_a?"]($$$("Set")))||!$eqeq(this.$size(),other.$size()))&&$send(other,"all?",[],(function $$5(o){var self=null==$$5.$$s?this:$$5.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash["$include?"](o)}),{$$arity:1,$$s:this}))}),1),$def(self,"$add",(function(o){var $writer;return $writer=[o,!0],$send(this.hash,"[]=",$to_a($writer)),$rb_minus($writer.length,1),this}),1),$def(self,"$classify",(function $$classify(){var block=$$classify.$$p||nil,result=nil;return delete $$classify.$$p,block===nil?this.$enum_for("classify"):(result=$send($$$("Hash"),"new",[],(function $$6(h,k){var $writer;return null==h&&(h=nil),null==k&&(k=nil),$writer=[k,(null==$$6.$$s?this:$$6.$$s).$class().$new()],$send(h,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:2,$$s:this}),$send(this,"each",[],(function(item){return null==item&&(item=nil),result["$[]"](Opal.yield1(block,item)).$add(item)}),1),result)}),0),$def(self,"$collect!",(function $Set_collect$excl$8(){var block=$Set_collect$excl$8.$$p||nil,result=nil;return delete $Set_collect$excl$8.$$p,block===nil?this.$enum_for("collect!"):(result=this.$class().$new(),$send(this,"each",[],(function(item){return null==item&&(item=nil),result["$<<"](Opal.yield1(block,item))}),1),this.$replace(result))}),0),$def(self,"$delete",(function(o){return this.hash.$delete(o),this}),1),$def(self,"$delete?",(function(o){return $truthy(this["$include?"](o))?(this.$delete(o),this):nil}),1),$def(self,"$delete_if",(function $$delete_if(){var $yield=$$delete_if.$$p||nil;return delete $$delete_if.$$p,$yield===nil?this.$enum_for("delete_if"):($send($send(this,"select",[],(function(o){return null==o&&(o=nil),Opal.yield1($yield,o)}),1),"each",[],(function $$13(o){var self=null==$$13.$$s?this:$$13.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash.$delete(o)}),{$$arity:1,$$s:this}),this)}),0),$def(self,"$keep_if",(function $$keep_if(){var $yield=$$keep_if.$$p||nil;return delete $$keep_if.$$p,$yield===nil?this.$enum_for("keep_if"):($send($send(this,"reject",[],(function(o){return null==o&&(o=nil),Opal.yield1($yield,o)}),1),"each",[],(function $$15(o){var self=null==$$15.$$s?this:$$15.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash.$delete(o)}),{$$arity:1,$$s:this}),this)}),0),$def(self,"$reject!",(function $Set_reject$excl$16(){var before,block=$Set_reject$excl$16.$$p||nil;return delete $Set_reject$excl$16.$$p,block===nil?this.$enum_for("reject!"):(before=this.$size(),$send(this,"delete_if",[],block.$to_proc()),$eqeq(this.$size(),before)?nil:this)}),0),$def(self,"$select!",(function $Set_select$excl$17(){var before,block=$Set_select$excl$17.$$p||nil;return delete $Set_select$excl$17.$$p,block===nil?this.$enum_for("select!"):(before=this.$size(),$send(this,"keep_if",[],block.$to_proc()),$eqeq(this.$size(),before)?nil:this)}),0),$def(self,"$add?",(function(o){return $truthy(this["$include?"](o))?nil:this.$add(o)}),1),$def(self,"$each",(function $$each(){var block=$$each.$$p||nil;return delete $$each.$$p,block===nil?this.$enum_for("each"):($send(this.hash,"each_key",[],block.$to_proc()),this)}),0),$def(self,"$empty?",(function(){return this.hash["$empty?"]()}),0),$def(self,"$eql?",(function(other){return this.hash["$eql?"]($send(other,"instance_eval",[],(function $$21(){var self=null==$$21.$$s?this:$$21.$$s;return null==self.hash&&(self.hash=nil),self.hash}),{$$arity:0,$$s:this}))}),1),$def(self,"$clear",(function(){return this.hash.$clear(),this}),0),$def(self,"$include?",(function(o){return this.hash["$include?"](o)}),1),$def(self,"$merge",(function(enum$){return $send(enum$,"each",[],(function $$23(item){return null==item&&(item=nil),(null==$$23.$$s?this:$$23.$$s).$add(item)}),{$$arity:1,$$s:this}),this}),1),$def(self,"$replace",(function(enum$){return this.$clear(),this.$merge(enum$),this}),1),$def(self,"$size",(function(){return this.hash.$size()}),0),$def(self,"$subtract",(function(enum$){return $send(enum$,"each",[],(function $$24(item){return null==item&&(item=nil),(null==$$24.$$s?this:$$24.$$s).$delete(item)}),{$$arity:1,$$s:this}),this}),1),$def(self,"$|",(function(enum$){return $truthy(enum$["$respond_to?"]("each"))||$Kernel.$raise($$$("ArgumentError"),"value must be enumerable"),this.$dup().$merge(enum$)}),1),$def(self,"$superset?",(function(set){return is_set(set),!$truthy($rb_lt(this.$size(),set.$size()))&&$send(set,"all?",[],(function $$27(o){return null==o&&(o=nil),(null==$$27.$$s?this:$$27.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$proper_superset?",(function(set){return is_set(set),!$truthy($rb_le(this.$size(),set.$size()))&&$send(set,"all?",[],(function $$29(o){return null==o&&(o=nil),(null==$$29.$$s?this:$$29.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$subset?",(function(set){return is_set(set),!$truthy($rb_lt(set.$size(),this.$size()))&&$send(this,"all?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1)}),1),$def(self,"$proper_subset?",(function(set){return is_set(set),!$truthy($rb_le(set.$size(),this.$size()))&&$send(this,"all?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1)}),1),$def(self,"$intersect?",(function(set){return is_set(set),$truthy($rb_lt(this.$size(),set.$size()))?$send(this,"any?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1):$send(set,"any?",[],(function $$36(o){return null==o&&(o=nil),(null==$$36.$$s?this:$$36.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$disjoint?",(function(set){return this["$intersect?"](set)["$!"]()}),1),$def(self,"$to_a",(function(){return this.hash.$keys()}),0),$alias(self,"+","|"),$alias(self,"<","proper_subset?"),$alias(self,"<<","add"),$alias(self,"<=","subset?"),$alias(self,">","proper_superset?"),$alias(self,">=","superset?"),$alias(self,"difference","-"),$alias(self,"filter!","select!"),$alias(self,"length","size"),$alias(self,"map!","collect!"),$alias(self,"member?","include?"),$alias(self,"union","|")}(),function($base,$parent_nesting){var self=$module("::","Enumerable"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$to_set",(function $$to_set($a,$b){var $post_args,klass,block=$$to_set.$$p||nil,self=this;return delete $$to_set.$$p,($post_args=Opal.slice.call(arguments)).length>0&&(klass=$post_args.shift()),null==klass&&(klass=$$("Set")),$send(klass,"new",[self].concat($to_a($post_args)),block.$to_proc())}),-1)}(0,[])},Opal.modules["ast/node"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$alias=Opal.alias,$hash2=Opal.hash2,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$rb_times=Opal.rb_times,$to_a=Opal.to_a;return Opal.add_stubs("attr_reader,to_sym,freeze,to_a,assign_properties,hash,class,eql?,type,children,each,instance_variable_set,protected,private,nil?,==,original_dup,send,equal?,respond_to?,to_ast,updated,+,*,fancy_type,is_a?,to_sexp,inspect,map,to_sexp_array,gsub,to_s"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Node"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.type=$proto.children=nil,self.$attr_reader("type"),self.$attr_reader("children"),$alias(self,"to_a","children"),self.$attr_reader("hash"),$def(self,"$initialize",(function(type,children,properties){var $a;return null==children&&(children=[]),null==properties&&(properties=$hash2([],{})),$a=[type.$to_sym(),children.$to_a().$freeze()],this.type=$a[0],this.children=$a[1],this.$assign_properties(properties),this.hash=[this.type,this.children,this.$class()].$hash(),this.$freeze()}),-2),$def(self,"$eql?",(function(other){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.$class()["$eql?"](other.$class()))?this.type["$eql?"](other.$type()):$ret_or_2)?this.children["$eql?"](other.$children()):$ret_or_1}),1),$def(self,"$assign_properties",(function(properties){return $send(properties,"each",[],(function $$2(name,value){return null==name&&(name=nil),null==value&&(value=nil),(null==$$2.$$s?this:$$2.$$s).$instance_variable_set("@"+name,value)}),{$$arity:2,$$s:this}),nil}),1),self.$protected("assign_properties"),$alias(self,"original_dup","dup"),self.$private("original_dup"),$def(self,"$dup",(function(){return this}),0),$alias(self,"clone","dup"),$def(self,"$updated",(function(type,children,properties){var new_type,new_children,new_properties,$ret_or_1=nil,copy=nil;return null==type&&(type=nil),null==children&&(children=nil),null==properties&&(properties=nil),new_type=$truthy($ret_or_1=type)?$ret_or_1:this.type,new_children=$truthy($ret_or_1=children)?$ret_or_1:this.children,new_properties=$truthy($ret_or_1=properties)?$ret_or_1:$hash2([],{}),$eqeq(this.type,new_type)&&$eqeq(this.children,new_children)&&$truthy(properties["$nil?"]())?this:((copy=this.$original_dup()).$send("initialize",new_type,new_children,new_properties),copy)}),-1),$def(self,"$==",(function(other){var $ret_or_1=nil;return!!$truthy(this["$equal?"](other))||!!$truthy(other["$respond_to?"]("to_ast"))&&(other=other.$to_ast(),$truthy($ret_or_1=other.$type()["$=="](this.$type()))?other.$children()["$=="](this.$children()):$ret_or_1)}),1),$def(self,"$concat",(function(array){return this.$updated(nil,$rb_plus(this.children,array.$to_a()))}),1),$alias(self,"+","concat"),$def(self,"$append",(function(element){return this.$updated(nil,$rb_plus(this.children,[element]))}),1),$alias(self,"<<","append"),$def(self,"$to_sexp",(function(indent){var indented,sexp=nil;return null==indent&&(indent=0),indented=$rb_times(" ",indent),sexp=indented+"("+this.$fancy_type(),$send(this.$children(),"each",[],(function(child){return null==child&&(child=nil),sexp=$truthy(child["$is_a?"]($$("Node")))?$rb_plus(sexp,"\n"+child.$to_sexp($rb_plus(indent,1))):$rb_plus(sexp," "+child.$inspect())}),1),sexp=$rb_plus(sexp,")")}),-1),$alias(self,"to_s","to_sexp"),$def(self,"$inspect",(function(indent){var indented,sexp=nil;return null==indent&&(indent=0),indented=$rb_times(" ",indent),sexp=indented+"s(:"+this.type,$send(this.$children(),"each",[],(function(child){return null==child&&(child=nil),sexp=$truthy(child["$is_a?"]($$("Node")))?$rb_plus(sexp,",\n"+child.$inspect($rb_plus(indent,1))):$rb_plus(sexp,", "+child.$inspect())}),1),sexp=$rb_plus(sexp,")")}),-1),$def(self,"$to_ast",(function(){return this}),0),$def(self,"$to_sexp_array",(function(){var children_sexp_arrs;return children_sexp_arrs=$send(this.$children(),"map",[],(function(child){return null==child&&(child=nil),$truthy(child["$is_a?"]($$("Node")))?child.$to_sexp_array():child}),1),[this.$type()].concat($to_a(children_sexp_arrs))}),0),$def(self,"$deconstruct",(function(){return[this.$type()].concat($to_a(this.$children()))}),0),self.$protected(),$def(self,"$fancy_type",(function(){return this.type.$to_s().$gsub("_","-")}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/processor/mixin"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("nil?,to_ast,type,respond_to?,send,handler_missing,map,to_a,process"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){return function($base){var self=$module($base,"Mixin");return $def(self,"$process",(function(node){var on_handler,new_node=nil;return $truthy(node["$nil?"]())?nil:(on_handler="on_"+(node=node.$to_ast()).$type(),new_node=$truthy(this["$respond_to?"](on_handler))?this.$send(on_handler,node):this.$handler_missing(node),$truthy(new_node)&&(node=new_node),node)}),1),$def(self,"$process_all",(function(nodes){return $send(nodes.$to_a(),"map",[],(function $$1(node){return null==node&&(node=nil),(null==$$1.$$s?this:$$1.$$s).$process(node)}),{$$arity:1,$$s:this})}),1),$def(self,"$handler_missing",(function(node){return nil}),1)}([$klass($base,null,"Processor")].concat($parent_nesting)[0])}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/processor"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass;return Opal.add_stubs("require,include"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Processor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$require("ast/processor/mixin"),self.$include($$("Mixin"))}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/sexp"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$def=Opal.def;return Opal.add_stubs("new"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Sexp"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$s",(function(type,$a){var children;return children=Opal.slice.call(arguments,1),$$("Node").$new(type,children)}),-2)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules.ast=function(Opal){Opal.nil;var self,$module=Opal.module;return Opal.add_stubs("require"),(self=$module([][0],"AST")).$require("ast/node"),self.$require("ast/processor"),self.$require("ast/sexp")},Opal.modules["parser/ast/node"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$alias=Opal.alias,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def;return Opal.add_stubs("attr_reader,[],frozen?,dup,node=,-"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,$super,"Node");return self.$attr_reader("location"),$alias(self,"loc","location"),$def(self,"$assign_properties",(function(properties){var location=nil,$writer=nil;return $truthy(location=properties["$[]"]("location"))?($truthy(location["$frozen?"]())&&(location=location.$dup()),$send(location,"node=",$to_a($writer=[this])),$writer[$rb_minus($writer.length,1)],this.location=location):nil}),1)}([$module($base,"AST")].concat($parent_nesting)[0],$$$($$$("AST"),"Node"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/ast/node"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("require,attr_reader,[],frozen?,dup,merge!,loc,line,column"),self.$require("ast"),self.$require("parser/ast/node"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,$super,"Node");return self.$$prototype.meta=nil,self.$attr_reader("meta"),$def(self,"$assign_properties",(function $$assign_properties(properties){var $yield=$$assign_properties.$$p||nil,meta=nil,$ret_or_1=nil;return delete $$assign_properties.$$p,$truthy(meta=properties["$[]"]("meta"))?($truthy(meta["$frozen?"]())&&(meta=meta.$dup()),this.meta["$merge!"](meta)):this.meta=$truthy($ret_or_1=this.meta)?$ret_or_1:$hash2([],{}),$send2(this,$find_super(this,"assign_properties",$$assign_properties,!1,!0),"assign_properties",[properties],$yield)}),1),$def(self,"$line",(function(){return $truthy(this.$loc())?this.$loc().$line():nil}),0),$def(self,"$column",(function(){return $truthy(this.$loc())?this.$loc().$column():nil}),0)}([$module($base,"AST")].concat($parent_nesting)[0],$$$($$$($$$("Parser"),"AST"),"Node"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["racc/parser"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$const_set=Opal.const_set,$defs=Opal.defs,$gvars=Opal.gvars,$rb_lt=Opal.rb_lt,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$to_ary=Opal.to_ary,$neqeq=Opal.neqeq,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$rb_ge=Opal.rb_ge,$rb_gt=Opal.rb_gt,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_times=Opal.rb_times;return Opal.add_stubs("[],class,<,size,[]=,-,__send__,_racc_setup,raise,_racc_init_sysvars,catch,!=,next_token,racc_read_token,+,==,>=,_racc_evalact,!,>,push,racc_shift,-@,_racc_do_reduce,===,racc_accept,throw,on_error,<=,pop,racc_e_pop,inspect,racc_next_state,*,racc_reduce,sprintf,token_to_str,print,racc_token2str,puts,racc_print_stacks,empty?,each,racc_print_states,each_index"),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);$klass($nesting[0],$$("StandardError"),"ParseError")}($nesting[0],$nesting),$truthy($$$("::","ParseError","skip_raise")?"constant":nil)||$const_set($nesting[0],"ParseError",$$$($$("Racc"),"ParseError")),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);return $truthy($$("Racc_No_Extensions","skip_raise")?"constant":nil)||$const_set($nesting[0],"Racc_No_Extensions",!1),function($base,$super,$parent_nesting){var self=$klass($base,null,"Parser"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.yydebug=$proto.racc_debug_out=$proto.racc_error_status=$proto.racc_t=$proto.racc_vstack=$proto.racc_val=$proto.racc_state=$proto.racc_tstack=nil,$const_set($nesting[0],"Racc_Runtime_Version","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Revision",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Runtime_Core_Version_R","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Core_Revision_R",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Main_Parsing_Routine","_racc_do_parse_rb"),$const_set($nesting[0],"Racc_YY_Parse_Method","_racc_yyparse_rb"),$const_set($nesting[0],"Racc_Runtime_Core_Version",$$("Racc_Runtime_Core_Version_R")),$const_set($nesting[0],"Racc_Runtime_Core_Revision",$$("Racc_Runtime_Core_Revision_R")),$const_set($nesting[0],"Racc_Runtime_Type","ruby"),$defs($$("Parser"),"$racc_runtime_type",(function(){return $$("Racc_Runtime_Type")}),0),$def(self,"$_racc_setup",(function(){var $a,$b,$ret_or_1=nil,arg=nil,$writer=nil;return null==$gvars.stderr&&($gvars.stderr=nil),$truthy($$$(this.$class(),"Racc_debug_parser"))||(this.yydebug=!1),$truthy(null!=($a=this.yydebug)&&$a!==nil?"instance-variable":nil)||(this.yydebug=!1),$truthy(this.yydebug)&&($truthy(null!=($b=this.racc_debug_out)&&$b!==nil?"instance-variable":nil)||(this.racc_debug_out=$gvars.stderr),this.racc_debug_out=$truthy($ret_or_1=this.racc_debug_out)?$ret_or_1:$gvars.stderr),arg=$$$(this.$class(),"Racc_arg"),$truthy($rb_lt(arg.$size(),14))&&($send(arg,"[]=",$to_a($writer=[13,!0])),$writer[$rb_minus($writer.length,1)]),arg}),0),$def(self,"$_racc_init_sysvars",(function(){return this.racc_state=[0],this.racc_tstack=[],this.racc_vstack=[],this.racc_t=nil,this.racc_val=nil,this.racc_read_next=!0,this.racc_user_yyerror=!1,this.racc_error_status=0}),0),$def(self,"$do_parse",(function(){return this.$__send__($$("Racc_Main_Parsing_Routine"),this.$_racc_setup(),!1)}),0),$def(self,"$next_token",(function(){return this.$raise($$("NotImplementedError"),this.$class()+"#next_token is not defined")}),0),$def(self,"$_racc_do_parse_rb",(function(arg,in_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,tok=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),tok=act=i=nil,$send(this,"catch",["racc_end_parse"],(function $$1(){var $d,$e,self=null==$$1.$$s?this:$$1.$$s,$ret_or_1=nil;for(null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==self.racc_t&&(self.racc_t=nil),null==self.yydebug&&(self.yydebug=nil),null==self.racc_val&&(self.racc_val=nil);$truthy(!0);)for($truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))?($truthy(self.racc_read_next)&&$neqeq(self.racc_t,0)&&($e=self.$next_token(),$d=$to_ary($e),tok=null==$d[0]?nil:$d[0],self.racc_val=null==$d[1]?nil:$d[1],$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,$truthy(self.yydebug)&&self.$racc_read_token(self.racc_t,tok,self.racc_val),self.racc_read_next=!1),i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)))):act=action_default["$[]"](self.racc_state["$[]"](-1));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:0,$$s:this})}),2),$def(self,"$yyparse",(function(recv,mid){return this.$__send__($$("Racc_YY_Parse_Method"),recv,mid,this.$_racc_setup(),!0)}),2),$def(self,"$_racc_yyparse_rb",(function(recv,mid,arg,c_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),act=nil,i=nil,$send(this,"catch",["racc_end_parse"],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;for(null==self.racc_state&&(self.racc_state=nil);!$truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)));)for(;$truthy(act=self.$_racc_evalact(action_default["$[]"](self.racc_state["$[]"](-1)),arg)););return $send(recv,"__send__",[mid],(function $$3(tok,val){var self=null==$$3.$$s?this:$$3.$$s,$ret_or_1=nil,$ret_or_2=nil;for(null==self.racc_t&&(self.racc_t=nil),null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==tok&&(tok=nil),null==val&&(val=nil),$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,self.racc_val=val,self.racc_read_next=!1,i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););for(;$truthy($truthy($ret_or_1=$truthy($ret_or_2=(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))["$!"]())?$ret_or_2:self.racc_read_next["$!"]())?$ret_or_1:self.racc_t["$=="](0));)for($truthy(i)&&$truthy(i=$rb_plus(i,self.racc_t))&&$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:2,$$s:self})}),{$$arity:0,$$s:this})}),4),$def(self,"$_racc_evalact",(function(act,arg){var $a,shift_n,action_table=nil,action_check=nil,action_pointer=nil,reduce_n=nil,code=nil,$ret_or_1=nil,i=nil;if(action_table=null==($a=$to_ary(arg))[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],shift_n=null==$a[11]?nil:$a[11],reduce_n=null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],null==$a[14]?nil:$a[14],$truthy($rb_gt(act,0))&&$truthy($rb_lt(act,shift_n)))$truthy($rb_gt(this.racc_error_status,0))&&($eqeq(this.racc_t,1)||(this.racc_error_status=$rb_minus(this.racc_error_status,1))),this.racc_vstack.$push(this.racc_val),this.racc_state.$push(act),this.racc_read_next=!0,$truthy(this.yydebug)&&(this.racc_tstack.$push(this.racc_t),this.$racc_shift(this.racc_t,this.racc_tstack,this.racc_vstack));else if($truthy($rb_lt(act,0))&&$truthy($rb_gt(act,reduce_n["$-@"]()))){if(code=$send(this,"catch",["racc_jump"],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s;return null==self.racc_state&&(self.racc_state=nil),self.racc_state.$push(self.$_racc_do_reduce(arg,act)),!1}),{$$arity:0,$$s:this}),$truthy(code)){if($eqeqeq(1,$ret_or_1=code))return this.racc_user_yyerror=!0,reduce_n["$-@"]();if($eqeqeq(2,$ret_or_1))return shift_n;this.$raise("[Racc Bug] unknown jump code")}}else if($eqeq(act,shift_n))$truthy(this.yydebug)&&this.$racc_accept(),this.$throw("racc_end_parse",this.racc_vstack["$[]"](0));else{if($eqeq(act,reduce_n["$-@"]())){for($eqeqeq(0,$ret_or_1=this.racc_error_status)?$truthy(arg["$[]"](21))||this.$on_error(this.racc_t,this.racc_val,this.racc_vstack):$eqeqeq(3,$ret_or_1)&&($eqeq(this.racc_t,0)&&this.$throw("racc_end_parse",nil),this.racc_read_next=!0),this.racc_user_yyerror=!1,this.racc_error_status=3;$truthy(!0)&&!($truthy(i=action_pointer["$[]"](this.racc_state["$[]"](-1)))&&(i=$rb_plus(i,1),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),this.racc_state["$[]"](-1))));)$truthy($rb_le(this.racc_state.$size(),1))&&this.$throw("racc_end_parse",nil),this.racc_state.$pop(),this.racc_vstack.$pop(),$truthy(this.yydebug)&&(this.racc_tstack.$pop(),this.$racc_e_pop(this.racc_state,this.racc_tstack,this.racc_vstack));return act}this.$raise("[Racc Bug] unknown action "+act.$inspect())}return $truthy(this.yydebug)&&this.$racc_next_state(this.racc_state["$[]"](-1),this.racc_state),nil}),2),$def(self,"$_racc_do_reduce",(function(arg,act){var $a,nt_base,use_result,reduce_to,method_id,void_array,k1,goto_table=nil,goto_check=nil,goto_default=nil,goto_pointer=nil,reduce_table=nil,state=nil,vstack=nil,tstack=nil,i=nil,len=nil,tmp_t=nil,tmp_v=nil,$writer=nil,curstate=nil;return null==($a=$to_ary(arg))[0]?nil:$a[0],null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],null==$a[3]?nil:$a[3],goto_table=null==$a[4]?nil:$a[4],goto_check=null==$a[5]?nil:$a[5],goto_default=null==$a[6]?nil:$a[6],goto_pointer=null==$a[7]?nil:$a[7],nt_base=null==$a[8]?nil:$a[8],reduce_table=null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],use_result=null==$a[13]?nil:$a[13],state=this.racc_state,vstack=this.racc_vstack,tstack=this.racc_tstack,i=$rb_times(act,-3),len=reduce_table["$[]"](i),reduce_to=reduce_table["$[]"]($rb_plus(i,1)),method_id=reduce_table["$[]"]($rb_plus(i,2)),void_array=[],$truthy(this.yydebug)&&(tmp_t=tstack["$[]"](len["$-@"](),len)),tmp_v=vstack["$[]"](len["$-@"](),len),$truthy(this.yydebug)&&($writer=[len["$-@"](),len,void_array],$send(tstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=[len["$-@"](),len,void_array],$send(vstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[len["$-@"](),len,void_array],$send(state,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(use_result)?vstack.$push(this.$__send__(method_id,tmp_v,vstack,tmp_v["$[]"](0))):vstack.$push(this.$__send__(method_id,tmp_v,vstack)),tstack.$push(reduce_to),$truthy(this.yydebug)&&this.$racc_reduce(tmp_t,reduce_to,tstack,vstack),k1=$rb_minus(reduce_to,nt_base),$truthy(i=goto_pointer["$[]"](k1))&&(i=$rb_plus(i,state["$[]"](-1)),$truthy($rb_ge(i,0))&&$truthy(curstate=goto_table["$[]"](i))&&$eqeq(goto_check["$[]"](i),k1))?curstate:goto_default["$[]"](k1)}),2),$def(self,"$on_error",(function(t,val,vstack){var $ret_or_1;return this.$raise($$("ParseError"),this.$sprintf("\nparse error on value %s (%s)",val.$inspect(),$truthy($ret_or_1=this.$token_to_str(t))?$ret_or_1:"?"))}),3),$def(self,"$yyerror",(function(){return this.$throw("racc_jump",1)}),0),$def(self,"$yyaccept",(function(){return this.$throw("racc_jump",2)}),0),$def(self,"$yyerrok",(function(){return this.racc_error_status=0}),0),$def(self,"$racc_read_token",(function(t,tok,val){return this.racc_debug_out.$print("read "),this.racc_debug_out.$print(tok.$inspect(),"(",this.$racc_token2str(t),") "),this.racc_debug_out.$puts(val.$inspect()),this.racc_debug_out.$puts()}),3),$def(self,"$racc_shift",(function(tok,tstack,vstack){return this.racc_debug_out.$puts("shift "+this.$racc_token2str(tok)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_reduce",(function(toks,sim,tstack,vstack){var out=nil;return(out=this.racc_debug_out).$print("reduce "),$truthy(toks["$empty?"]())?out.$print(" "):$send(toks,"each",[],(function $$5(t){var self=null==$$5.$$s?this:$$5.$$s;return null==t&&(t=nil),out.$print(" ",self.$racc_token2str(t))}),{$$arity:1,$$s:this}),out.$puts(" --\x3e "+this.$racc_token2str(sim)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),4),$def(self,"$racc_accept",(function(){return this.racc_debug_out.$puts("accept"),this.racc_debug_out.$puts()}),0),$def(self,"$racc_e_pop",(function(state,tstack,vstack){return this.racc_debug_out.$puts("error recovering mode: pop token"),this.$racc_print_states(state),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_next_state",(function(curstate,state){return this.racc_debug_out.$puts("goto "+curstate),this.$racc_print_states(state),this.racc_debug_out.$puts()}),2),$def(self,"$racc_print_stacks",(function(t,v){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(t,"each_index",[],(function $$6(i){var self=null==$$6.$$s?this:$$6.$$s;return null==i&&(i=nil),out.$print(" (",self.$racc_token2str(t["$[]"](i))," ",v["$[]"](i).$inspect(),")")}),{$$arity:1,$$s:this}),out.$puts(" ]")}),2),$def(self,"$racc_print_states",(function(s){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(s,"each",[],(function(st){return null==st&&(st=nil),out.$print(" ",st)}),1),out.$puts(" ]")}),1),$def(self,"$racc_token2str",(function(tok){var $ret_or_1;return $truthy($ret_or_1=$$$(this.$class(),"Racc_token_to_s_table")["$[]"](tok))?$ret_or_1:this.$raise("[Racc Bug] can't convert token "+tok+" to string")}),1),$def(self,"$token_to_str",(function(t){return $$$(this.$class(),"Racc_token_to_s_table")["$[]"](t)}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/version"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set;return function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return $const_set($nesting[0],"VERSION","3.0.3.2")}($nesting[0],$nesting)},Opal.modules["racc/parser"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$const_set=Opal.const_set,$defs=Opal.defs,$gvars=Opal.gvars,$rb_lt=Opal.rb_lt,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$to_ary=Opal.to_ary,$neqeq=Opal.neqeq,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$rb_ge=Opal.rb_ge,$rb_gt=Opal.rb_gt,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_times=Opal.rb_times;return Opal.add_stubs("[],class,<,size,[]=,-,__send__,_racc_setup,raise,_racc_init_sysvars,catch,!=,next_token,racc_read_token,+,==,>=,_racc_evalact,!,>,push,racc_shift,-@,_racc_do_reduce,===,racc_accept,throw,on_error,<=,pop,racc_e_pop,inspect,racc_next_state,*,racc_reduce,sprintf,token_to_str,print,racc_token2str,puts,racc_print_stacks,empty?,each,racc_print_states,each_index"),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);$klass($nesting[0],$$("StandardError"),"ParseError")}($nesting[0],$nesting),$truthy($$$("::","ParseError","skip_raise")?"constant":nil)||$const_set($nesting[0],"ParseError",$$$($$("Racc"),"ParseError")),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);return $truthy($$("Racc_No_Extensions","skip_raise")?"constant":nil)||$const_set($nesting[0],"Racc_No_Extensions",!1),function($base,$super,$parent_nesting){var self=$klass($base,null,"Parser"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.yydebug=$proto.racc_debug_out=$proto.racc_error_status=$proto.racc_t=$proto.racc_vstack=$proto.racc_val=$proto.racc_state=$proto.racc_tstack=nil,$const_set($nesting[0],"Racc_Runtime_Version","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Revision",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Runtime_Core_Version_R","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Core_Revision_R",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Main_Parsing_Routine","_racc_do_parse_rb"),$const_set($nesting[0],"Racc_YY_Parse_Method","_racc_yyparse_rb"),$const_set($nesting[0],"Racc_Runtime_Core_Version",$$("Racc_Runtime_Core_Version_R")),$const_set($nesting[0],"Racc_Runtime_Core_Revision",$$("Racc_Runtime_Core_Revision_R")),$const_set($nesting[0],"Racc_Runtime_Type","ruby"),$defs($$("Parser"),"$racc_runtime_type",(function(){return $$("Racc_Runtime_Type")}),0),$def(self,"$_racc_setup",(function(){var $a,$b,$ret_or_1=nil,arg=nil,$writer=nil;return null==$gvars.stderr&&($gvars.stderr=nil),$truthy($$$(this.$class(),"Racc_debug_parser"))||(this.yydebug=!1),$truthy(null!=($a=this.yydebug)&&$a!==nil?"instance-variable":nil)||(this.yydebug=!1),$truthy(this.yydebug)&&($truthy(null!=($b=this.racc_debug_out)&&$b!==nil?"instance-variable":nil)||(this.racc_debug_out=$gvars.stderr),this.racc_debug_out=$truthy($ret_or_1=this.racc_debug_out)?$ret_or_1:$gvars.stderr),arg=$$$(this.$class(),"Racc_arg"),$truthy($rb_lt(arg.$size(),14))&&($send(arg,"[]=",$to_a($writer=[13,!0])),$writer[$rb_minus($writer.length,1)]),arg}),0),$def(self,"$_racc_init_sysvars",(function(){return this.racc_state=[0],this.racc_tstack=[],this.racc_vstack=[],this.racc_t=nil,this.racc_val=nil,this.racc_read_next=!0,this.racc_user_yyerror=!1,this.racc_error_status=0}),0),$def(self,"$do_parse",(function(){return this.$__send__($$("Racc_Main_Parsing_Routine"),this.$_racc_setup(),!1)}),0),$def(self,"$next_token",(function(){return this.$raise($$("NotImplementedError"),this.$class()+"#next_token is not defined")}),0),$def(self,"$_racc_do_parse_rb",(function(arg,in_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,tok=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),tok=act=i=nil,$send(this,"catch",["racc_end_parse"],(function $$1(){var $d,$e,self=null==$$1.$$s?this:$$1.$$s,$ret_or_1=nil;for(null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==self.racc_t&&(self.racc_t=nil),null==self.yydebug&&(self.yydebug=nil),null==self.racc_val&&(self.racc_val=nil);$truthy(!0);)for($truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))?($truthy(self.racc_read_next)&&$neqeq(self.racc_t,0)&&($e=self.$next_token(),$d=$to_ary($e),tok=null==$d[0]?nil:$d[0],self.racc_val=null==$d[1]?nil:$d[1],$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,$truthy(self.yydebug)&&self.$racc_read_token(self.racc_t,tok,self.racc_val),self.racc_read_next=!1),i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)))):act=action_default["$[]"](self.racc_state["$[]"](-1));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:0,$$s:this})}),2),$def(self,"$yyparse",(function(recv,mid){return this.$__send__($$("Racc_YY_Parse_Method"),recv,mid,this.$_racc_setup(),!0)}),2),$def(self,"$_racc_yyparse_rb",(function(recv,mid,arg,c_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),act=nil,i=nil,$send(this,"catch",["racc_end_parse"],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;for(null==self.racc_state&&(self.racc_state=nil);!$truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)));)for(;$truthy(act=self.$_racc_evalact(action_default["$[]"](self.racc_state["$[]"](-1)),arg)););return $send(recv,"__send__",[mid],(function $$3(tok,val){var self=null==$$3.$$s?this:$$3.$$s,$ret_or_1=nil,$ret_or_2=nil;for(null==self.racc_t&&(self.racc_t=nil),null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==tok&&(tok=nil),null==val&&(val=nil),$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,self.racc_val=val,self.racc_read_next=!1,i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););for(;$truthy($truthy($ret_or_1=$truthy($ret_or_2=(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))["$!"]())?$ret_or_2:self.racc_read_next["$!"]())?$ret_or_1:self.racc_t["$=="](0));)for($truthy(i)&&$truthy(i=$rb_plus(i,self.racc_t))&&$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:2,$$s:self})}),{$$arity:0,$$s:this})}),4),$def(self,"$_racc_evalact",(function(act,arg){var $a,shift_n,action_table=nil,action_check=nil,action_pointer=nil,reduce_n=nil,code=nil,$ret_or_1=nil,i=nil;if(action_table=null==($a=$to_ary(arg))[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],shift_n=null==$a[11]?nil:$a[11],reduce_n=null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],null==$a[14]?nil:$a[14],$truthy($rb_gt(act,0))&&$truthy($rb_lt(act,shift_n)))$truthy($rb_gt(this.racc_error_status,0))&&($eqeq(this.racc_t,1)||(this.racc_error_status=$rb_minus(this.racc_error_status,1))),this.racc_vstack.$push(this.racc_val),this.racc_state.$push(act),this.racc_read_next=!0,$truthy(this.yydebug)&&(this.racc_tstack.$push(this.racc_t),this.$racc_shift(this.racc_t,this.racc_tstack,this.racc_vstack));else if($truthy($rb_lt(act,0))&&$truthy($rb_gt(act,reduce_n["$-@"]()))){if(code=$send(this,"catch",["racc_jump"],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s;return null==self.racc_state&&(self.racc_state=nil),self.racc_state.$push(self.$_racc_do_reduce(arg,act)),!1}),{$$arity:0,$$s:this}),$truthy(code)){if($eqeqeq(1,$ret_or_1=code))return this.racc_user_yyerror=!0,reduce_n["$-@"]();if($eqeqeq(2,$ret_or_1))return shift_n;this.$raise("[Racc Bug] unknown jump code")}}else if($eqeq(act,shift_n))$truthy(this.yydebug)&&this.$racc_accept(),this.$throw("racc_end_parse",this.racc_vstack["$[]"](0));else{if($eqeq(act,reduce_n["$-@"]())){for($eqeqeq(0,$ret_or_1=this.racc_error_status)?$truthy(arg["$[]"](21))||this.$on_error(this.racc_t,this.racc_val,this.racc_vstack):$eqeqeq(3,$ret_or_1)&&($eqeq(this.racc_t,0)&&this.$throw("racc_end_parse",nil),this.racc_read_next=!0),this.racc_user_yyerror=!1,this.racc_error_status=3;$truthy(!0)&&!($truthy(i=action_pointer["$[]"](this.racc_state["$[]"](-1)))&&(i=$rb_plus(i,1),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),this.racc_state["$[]"](-1))));)$truthy($rb_le(this.racc_state.$size(),1))&&this.$throw("racc_end_parse",nil),this.racc_state.$pop(),this.racc_vstack.$pop(),$truthy(this.yydebug)&&(this.racc_tstack.$pop(),this.$racc_e_pop(this.racc_state,this.racc_tstack,this.racc_vstack));return act}this.$raise("[Racc Bug] unknown action "+act.$inspect())}return $truthy(this.yydebug)&&this.$racc_next_state(this.racc_state["$[]"](-1),this.racc_state),nil}),2),$def(self,"$_racc_do_reduce",(function(arg,act){var $a,nt_base,use_result,reduce_to,method_id,void_array,k1,goto_table=nil,goto_check=nil,goto_default=nil,goto_pointer=nil,reduce_table=nil,state=nil,vstack=nil,tstack=nil,i=nil,len=nil,tmp_t=nil,tmp_v=nil,$writer=nil,curstate=nil;return null==($a=$to_ary(arg))[0]?nil:$a[0],null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],null==$a[3]?nil:$a[3],goto_table=null==$a[4]?nil:$a[4],goto_check=null==$a[5]?nil:$a[5],goto_default=null==$a[6]?nil:$a[6],goto_pointer=null==$a[7]?nil:$a[7],nt_base=null==$a[8]?nil:$a[8],reduce_table=null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],use_result=null==$a[13]?nil:$a[13],state=this.racc_state,vstack=this.racc_vstack,tstack=this.racc_tstack,i=$rb_times(act,-3),len=reduce_table["$[]"](i),reduce_to=reduce_table["$[]"]($rb_plus(i,1)),method_id=reduce_table["$[]"]($rb_plus(i,2)),void_array=[],$truthy(this.yydebug)&&(tmp_t=tstack["$[]"](len["$-@"](),len)),tmp_v=vstack["$[]"](len["$-@"](),len),$truthy(this.yydebug)&&($writer=[len["$-@"](),len,void_array],$send(tstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=[len["$-@"](),len,void_array],$send(vstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[len["$-@"](),len,void_array],$send(state,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(use_result)?vstack.$push(this.$__send__(method_id,tmp_v,vstack,tmp_v["$[]"](0))):vstack.$push(this.$__send__(method_id,tmp_v,vstack)),tstack.$push(reduce_to),$truthy(this.yydebug)&&this.$racc_reduce(tmp_t,reduce_to,tstack,vstack),k1=$rb_minus(reduce_to,nt_base),$truthy(i=goto_pointer["$[]"](k1))&&(i=$rb_plus(i,state["$[]"](-1)),$truthy($rb_ge(i,0))&&$truthy(curstate=goto_table["$[]"](i))&&$eqeq(goto_check["$[]"](i),k1))?curstate:goto_default["$[]"](k1)}),2),$def(self,"$on_error",(function(t,val,vstack){var $ret_or_1;return this.$raise($$("ParseError"),this.$sprintf("\nparse error on value %s (%s)",val.$inspect(),$truthy($ret_or_1=this.$token_to_str(t))?$ret_or_1:"?"))}),3),$def(self,"$yyerror",(function(){return this.$throw("racc_jump",1)}),0),$def(self,"$yyaccept",(function(){return this.$throw("racc_jump",2)}),0),$def(self,"$yyerrok",(function(){return this.racc_error_status=0}),0),$def(self,"$racc_read_token",(function(t,tok,val){return this.racc_debug_out.$print("read "),this.racc_debug_out.$print(tok.$inspect(),"(",this.$racc_token2str(t),") "),this.racc_debug_out.$puts(val.$inspect()),this.racc_debug_out.$puts()}),3),$def(self,"$racc_shift",(function(tok,tstack,vstack){return this.racc_debug_out.$puts("shift "+this.$racc_token2str(tok)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_reduce",(function(toks,sim,tstack,vstack){var out=nil;return(out=this.racc_debug_out).$print("reduce "),$truthy(toks["$empty?"]())?out.$print(" "):$send(toks,"each",[],(function $$5(t){var self=null==$$5.$$s?this:$$5.$$s;return null==t&&(t=nil),out.$print(" ",self.$racc_token2str(t))}),{$$arity:1,$$s:this}),out.$puts(" --\x3e "+this.$racc_token2str(sim)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),4),$def(self,"$racc_accept",(function(){return this.racc_debug_out.$puts("accept"),this.racc_debug_out.$puts()}),0),$def(self,"$racc_e_pop",(function(state,tstack,vstack){return this.racc_debug_out.$puts("error recovering mode: pop token"),this.$racc_print_states(state),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_next_state",(function(curstate,state){return this.racc_debug_out.$puts("goto "+curstate),this.$racc_print_states(state),this.racc_debug_out.$puts()}),2),$def(self,"$racc_print_stacks",(function(t,v){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(t,"each_index",[],(function $$6(i){var self=null==$$6.$$s?this:$$6.$$s;return null==i&&(i=nil),out.$print(" (",self.$racc_token2str(t["$[]"](i))," ",v["$[]"](i).$inspect(),")")}),{$$arity:1,$$s:this}),out.$puts(" ]")}),2),$def(self,"$racc_print_states",(function(s){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(s,"each",[],(function(st){return null==st&&(st=nil),out.$print(" ",st)}),1),out.$puts(" ]")}),1),$def(self,"$racc_token2str",(function(tok){var $ret_or_1;return $truthy($ret_or_1=$$$(this.$class(),"Racc_token_to_s_table")["$[]"](tok))?$ret_or_1:this.$raise("[Racc Bug] can't convert token "+tok+" to string")}),1),$def(self,"$token_to_str",(function(t){return $$$(this.$class(),"Racc_token_to_s_table")["$[]"](t)}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/messages"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set,$hash2=Opal.hash2,$truthy=Opal.truthy,$eqeqeq=Opal.eqeqeq,$defs=Opal.defs;return Opal.add_stubs("freeze,[],empty?,===,format"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return $const_set($nesting[0],"MESSAGES",$hash2(["unicode_point_too_large","invalid_escape","incomplete_escape","invalid_hex_escape","invalid_unicode_escape","unterminated_unicode","escape_eof","string_eof","regexp_options","cvar_name","ivar_name","trailing_in_number","empty_numeric","invalid_octal","no_dot_digit_literal","bare_backslash","unexpected","embedded_document","heredoc_id_has_newline","heredoc_id_ends_with_nl","unterminated_heredoc_id","invalid_escape_use","ambiguous_literal","ambiguous_regexp","ambiguous_prefix","triple_dot_at_eol","nth_ref_alias","begin_in_method","backref_assignment","invalid_assignment","module_name_const","unexpected_token","argument_const","argument_ivar","argument_gvar","argument_cvar","duplicate_argument","empty_symbol","odd_hash","singleton_literal","dynamic_const","const_reassignment","module_in_def","class_in_def","unexpected_percent_str","block_and_blockarg","masgn_as_condition","block_given_to_yield","invalid_regexp","invalid_return","csend_in_lhs_of_masgn","cant_assign_to_numparam","reserved_for_numparam","ordinary_param_defined","numparam_used_in_outer_scope","circular_argument_reference","pm_interp_in_var_name","lvar_name","undefined_lvar","duplicate_variable_name","duplicate_pattern_key","endless_setter","invalid_id_to_get","forward_arg_after_restarg","no_anonymous_blockarg","useless_else","duplicate_hash_key","invalid_encoding","invalid_action","clobbered","different_replacements","swallowed_insertions","swallowed_insertions_conflict","crossing_deletions","crossing_deletions_conflict","crossing_insertions","crossing_insertions_conflict"],{unicode_point_too_large:"invalid Unicode codepoint (too large)",invalid_escape:"invalid escape character syntax",incomplete_escape:"incomplete character syntax",invalid_hex_escape:"invalid hex escape",invalid_unicode_escape:"invalid Unicode escape",unterminated_unicode:"unterminated Unicode escape",escape_eof:"escape sequence meets end of file",string_eof:"unterminated string meets end of file",regexp_options:"unknown regexp options: %{options}",cvar_name:"`%{name}' is not allowed as a class variable name",ivar_name:"`%{name}' is not allowed as an instance variable name",trailing_in_number:"trailing `%{character}' in number",empty_numeric:"numeric literal without digits",invalid_octal:"invalid octal digit",no_dot_digit_literal:"no . floating literal anymore; put 0 before dot",bare_backslash:"bare backslash only allowed before newline",unexpected:"unexpected `%{character}'",embedded_document:"embedded document meets end of file (and they embark on a romantic journey)",heredoc_id_has_newline:"here document identifier across newlines, never match",heredoc_id_ends_with_nl:"here document identifier ends with a newline",unterminated_heredoc_id:"unterminated heredoc id",invalid_escape_use:"invalid character syntax; use ?%{escape}",ambiguous_literal:"ambiguous first argument; put parentheses or a space even after the operator",ambiguous_regexp:"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after `/' operator",ambiguous_prefix:"`%{prefix}' interpreted as argument prefix",triple_dot_at_eol:"... at EOL, should be parenthesized",nth_ref_alias:"cannot define an alias for a back-reference variable",begin_in_method:"BEGIN in method",backref_assignment:"cannot assign to a back-reference variable",invalid_assignment:"cannot assign to a keyword",module_name_const:"class or module name must be a constant literal",unexpected_token:"unexpected token %{token}",argument_const:"formal argument cannot be a constant",argument_ivar:"formal argument cannot be an instance variable",argument_gvar:"formal argument cannot be a global variable",argument_cvar:"formal argument cannot be a class variable",duplicate_argument:"duplicate argument name",empty_symbol:"empty symbol literal",odd_hash:"odd number of entries for a hash",singleton_literal:"cannot define a singleton method for a literal",dynamic_const:"dynamic constant assignment",const_reassignment:"constant re-assignment",module_in_def:"module definition in method body",class_in_def:"class definition in method body",unexpected_percent_str:"%{type}: unknown type of percent-literal",block_and_blockarg:"both block argument and literal block are passed",masgn_as_condition:"multiple assignment in conditional context",block_given_to_yield:"block given to yield",invalid_regexp:"%{message}",invalid_return:"Invalid return in class/module body",csend_in_lhs_of_masgn:"&. inside multiple assignment destination",cant_assign_to_numparam:"cannot assign to numbered parameter %{name}",reserved_for_numparam:"%{name} is reserved for numbered parameter",ordinary_param_defined:"ordinary parameter is defined",numparam_used_in_outer_scope:"numbered parameter is already used in an outer scope",circular_argument_reference:"circular argument reference %{var_name}",pm_interp_in_var_name:"symbol literal with interpolation is not allowed",lvar_name:"`%{name}' is not allowed as a local variable name",undefined_lvar:"no such local variable: `%{name}'",duplicate_variable_name:"duplicate variable name %{name}",duplicate_pattern_key:"duplicate hash pattern key %{name}",endless_setter:"setter method cannot be defined in an endless method definition",invalid_id_to_get:"identifier %{identifier} is not valid to get",forward_arg_after_restarg:"... after rest argument",no_anonymous_blockarg:"no anonymous block parameter",useless_else:"else without rescue is useless",duplicate_hash_key:"key is duplicated and overwritten",invalid_encoding:"literal contains escape sequences incompatible with UTF-8",invalid_action:"cannot %{action}",clobbered:"clobbered by: %{action}",different_replacements:"different replacements: %{replacement} vs %{other_replacement}",swallowed_insertions:"this replacement:",swallowed_insertions_conflict:"swallows some inner rewriting actions:",crossing_deletions:"the deletion of:",crossing_deletions_conflict:"is crossing:",crossing_insertions:"the rewriting action on:",crossing_insertions_conflict:"is crossing that on:"}).$freeze()),function($base,$parent_nesting){var self=$module($base,"Messages"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$compile",(function(reason,arguments$){var template;return template=$$("MESSAGES")["$[]"](reason),$eqeqeq($$("Hash"),arguments$)&&$truthy(arguments$["$empty?"]())?template:this.$format(template,arguments$)}),2)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/deprecation"]=function(Opal){var $base,$parent_nesting,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("attr_writer,warn"),$base=$nesting[0],$parent_nesting=$nesting,function($base){var self=$module($base,"Deprecation");return self.$attr_writer("warned_of_deprecation"),$def(self,"$warn_of_deprecation",(function(){var $ret_or_1,$ret_or_2=nil;return null==this.warned_of_deprecation&&(this.warned_of_deprecation=nil),this.warned_of_deprecation=$truthy($ret_or_1=this.warned_of_deprecation)?$ret_or_1:!$truthy($ret_or_2=this.$warn($$$(this,"DEPRECATION_WARNING")))||$ret_or_2}),0)}([$module($base,"Parser")].concat($parent_nesting)[0])},Opal.modules["parser/ast/processor"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$alias=Opal.alias,$to_a=Opal.to_a,$not=Opal.not,$truthy=Opal.truthy,$slice=Opal.slice;return Opal.add_stubs("updated,process_all,on_var,!,nil?,process,on_vasgn,on_argument,is_a?,[],children,process_regular_node,warn"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Processor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$process_regular_node",(function(node){return node.$updated(nil,this.$process_all(node))}),1),$alias(self,"on_dstr","process_regular_node"),$alias(self,"on_dsym","process_regular_node"),$alias(self,"on_regexp","process_regular_node"),$alias(self,"on_xstr","process_regular_node"),$alias(self,"on_splat","process_regular_node"),$alias(self,"on_kwsplat","process_regular_node"),$alias(self,"on_array","process_regular_node"),$alias(self,"on_pair","process_regular_node"),$alias(self,"on_hash","process_regular_node"),$alias(self,"on_kwargs","process_regular_node"),$alias(self,"on_irange","process_regular_node"),$alias(self,"on_erange","process_regular_node"),$def(self,"$on_var",(function(node){return node}),1),$def(self,"$process_variable_node",(function(node){return this.$on_var(node)}),1),$alias(self,"on_lvar","process_variable_node"),$alias(self,"on_ivar","process_variable_node"),$alias(self,"on_gvar","process_variable_node"),$alias(self,"on_cvar","process_variable_node"),$alias(self,"on_back_ref","process_variable_node"),$alias(self,"on_nth_ref","process_variable_node"),$def(self,"$on_vasgn",(function(node){var $a,name,value_node=nil;return name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value_node=null==$a[1]?nil:$a[1],$not(value_node["$nil?"]())?node.$updated(nil,[name,this.$process(value_node)]):node}),1),$def(self,"$process_var_asgn_node",(function(node){return this.$on_vasgn(node)}),1),$alias(self,"on_lvasgn","process_var_asgn_node"),$alias(self,"on_ivasgn","process_var_asgn_node"),$alias(self,"on_gvasgn","process_var_asgn_node"),$alias(self,"on_cvasgn","process_var_asgn_node"),$alias(self,"on_and_asgn","process_regular_node"),$alias(self,"on_or_asgn","process_regular_node"),$def(self,"$on_op_asgn",(function(node){var $a,var_node,method_name,value_node;return var_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],value_node=null==$a[2]?nil:$a[2],node.$updated(nil,[this.$process(var_node),method_name,this.$process(value_node)])}),1),$alias(self,"on_mlhs","process_regular_node"),$alias(self,"on_masgn","process_regular_node"),$def(self,"$on_const",(function(node){var $a,scope_node,name;return scope_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],node.$updated(nil,[this.$process(scope_node),name])}),1),$def(self,"$on_casgn",(function(node){var $a,scope_node,name,value_node=nil;return scope_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],value_node=null==$a[2]?nil:$a[2],$not(value_node["$nil?"]())?node.$updated(nil,[this.$process(scope_node),name,this.$process(value_node)]):node.$updated(nil,[this.$process(scope_node),name])}),1),$alias(self,"on_args","process_regular_node"),$def(self,"$on_argument",(function(node){var $a,arg_name,value_node=nil;return arg_name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value_node=null==$a[1]?nil:$a[1],$not(value_node["$nil?"]())?node.$updated(nil,[arg_name,this.$process(value_node)]):node}),1),$def(self,"$process_argument_node",(function(node){return this.$on_argument(node)}),1),$alias(self,"on_arg","process_argument_node"),$alias(self,"on_optarg","process_argument_node"),$alias(self,"on_restarg","process_argument_node"),$alias(self,"on_blockarg","process_argument_node"),$alias(self,"on_shadowarg","process_argument_node"),$alias(self,"on_kwarg","process_argument_node"),$alias(self,"on_kwoptarg","process_argument_node"),$alias(self,"on_kwrestarg","process_argument_node"),$alias(self,"on_forward_arg","process_argument_node"),$def(self,"$on_procarg0",(function(node){return $truthy(node.$children()["$[]"](0)["$is_a?"]($$("Symbol")))?this.$on_argument(node):this.$process_regular_node(node)}),1),$alias(self,"on_arg_expr","process_regular_node"),$alias(self,"on_restarg_expr","process_regular_node"),$alias(self,"on_blockarg_expr","process_regular_node"),$alias(self,"on_block_pass","process_regular_node"),$alias(self,"on_module","process_regular_node"),$alias(self,"on_class","process_regular_node"),$alias(self,"on_sclass","process_regular_node"),$def(self,"$on_def",(function(node){var $a,name,args_node,body_node;return name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args_node=null==$a[1]?nil:$a[1],body_node=null==$a[2]?nil:$a[2],node.$updated(nil,[name,this.$process(args_node),this.$process(body_node)])}),1),$def(self,"$on_defs",(function(node){var $a,definee_node,name,args_node,body_node;return definee_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],args_node=null==$a[2]?nil:$a[2],body_node=null==$a[3]?nil:$a[3],node.$updated(nil,[this.$process(definee_node),name,this.$process(args_node),this.$process(body_node)])}),1),$alias(self,"on_undef","process_regular_node"),$alias(self,"on_alias","process_regular_node"),$def(self,"$on_send",(function(node){var $a,arg_nodes,receiver_node=nil,method_name=nil;return receiver_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],arg_nodes=$slice.call($a,2),$truthy(receiver_node)&&(receiver_node=this.$process(receiver_node)),node.$updated(nil,[receiver_node,method_name].concat($to_a(this.$process_all(arg_nodes))))}),1),$alias(self,"on_csend","on_send"),$alias(self,"on_index","process_regular_node"),$alias(self,"on_indexasgn","process_regular_node"),$alias(self,"on_block","process_regular_node"),$alias(self,"on_lambda","process_regular_node"),$def(self,"$on_numblock",(function(node){var $a,method_call,max_numparam,body;return method_call=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],max_numparam=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],node.$updated(nil,[this.$process(method_call),max_numparam,this.$process(body)])}),1),$alias(self,"on_while","process_regular_node"),$alias(self,"on_while_post","process_regular_node"),$alias(self,"on_until","process_regular_node"),$alias(self,"on_until_post","process_regular_node"),$alias(self,"on_for","process_regular_node"),$alias(self,"on_return","process_regular_node"),$alias(self,"on_break","process_regular_node"),$alias(self,"on_next","process_regular_node"),$alias(self,"on_redo","process_regular_node"),$alias(self,"on_retry","process_regular_node"),$alias(self,"on_super","process_regular_node"),$alias(self,"on_yield","process_regular_node"),$alias(self,"on_defined?","process_regular_node"),$alias(self,"on_not","process_regular_node"),$alias(self,"on_and","process_regular_node"),$alias(self,"on_or","process_regular_node"),$alias(self,"on_if","process_regular_node"),$alias(self,"on_when","process_regular_node"),$alias(self,"on_case","process_regular_node"),$alias(self,"on_iflipflop","process_regular_node"),$alias(self,"on_eflipflop","process_regular_node"),$alias(self,"on_match_current_line","process_regular_node"),$alias(self,"on_match_with_lvasgn","process_regular_node"),$alias(self,"on_resbody","process_regular_node"),$alias(self,"on_rescue","process_regular_node"),$alias(self,"on_ensure","process_regular_node"),$alias(self,"on_begin","process_regular_node"),$alias(self,"on_kwbegin","process_regular_node"),$alias(self,"on_preexe","process_regular_node"),$alias(self,"on_postexe","process_regular_node"),$alias(self,"on_case_match","process_regular_node"),$alias(self,"on_in_match","process_regular_node"),$alias(self,"on_match_pattern","process_regular_node"),$alias(self,"on_match_pattern_p","process_regular_node"),$alias(self,"on_in_pattern","process_regular_node"),$alias(self,"on_if_guard","process_regular_node"),$alias(self,"on_unless_guard","process_regular_node"),$alias(self,"on_match_var","process_variable_node"),$alias(self,"on_match_rest","process_regular_node"),$alias(self,"on_pin","process_regular_node"),$alias(self,"on_match_alt","process_regular_node"),$alias(self,"on_match_as","process_regular_node"),$alias(self,"on_array_pattern","process_regular_node"),$alias(self,"on_array_pattern_with_tail","process_regular_node"),$alias(self,"on_hash_pattern","process_regular_node"),$alias(self,"on_const_pattern","process_regular_node"),$alias(self,"on_find_pattern","process_regular_node"),$def(self,"$process_variable_node",(function(node){return this.$warn("Parser::AST::Processor#process_variable_node is deprecated as a public API and will be removed. Please use Parser::AST::Processor#on_var instead."),this.$on_var(node)}),1),$def(self,"$process_var_asgn_node",(function(node){return this.$warn("Parser::AST::Processor#process_var_asgn_node is deprecated as a public API and will be removed. Please use Parser::AST::Processor#on_vasgn instead."),this.$on_vasgn(node)}),1),$def(self,"$process_argument_node",(function(node){return this.$warn("Parser::AST::Processor#process_argument_node is deprecated as a public API and will be removed. Please use Parser::AST::Processor#on_argument instead."),this.$on_argument(node)}),1),$def(self,"$on_empty_else",(function(node){return node}),1)}($nesting[0],$$$($$$("AST"),"Processor"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/meta"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set;return Opal.add_stubs("freeze,to_set"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Meta")].concat($parent_nesting);return $const_set($nesting[0],"NODE_TYPES",["true","false","nil","int","float","str","dstr","sym","dsym","xstr","regopt","regexp","array","splat","pair","kwsplat","hash","irange","erange","self","lvar","ivar","cvar","gvar","const","defined?","lvasgn","ivasgn","cvasgn","gvasgn","casgn","mlhs","masgn","op_asgn","and_asgn","ensure","rescue","arg_expr","or_asgn","back_ref","nth_ref","match_with_lvasgn","match_current_line","module","class","sclass","def","defs","undef","alias","args","cbase","arg","optarg","restarg","blockarg","block_pass","kwarg","kwoptarg","kwrestarg","kwnilarg","send","csend","super","zsuper","yield","block","and","not","or","if","when","case","while","until","while_post","until_post","for","break","next","redo","return","resbody","kwbegin","begin","retry","preexe","postexe","iflipflop","eflipflop","shadowarg","complex","rational","__FILE__","__LINE__","__ENCODING__","ident","lambda","indexasgn","index","procarg0","restarg_expr","blockarg_expr","objc_kwarg","objc_restarg","objc_varargs","numargs","numblock","forward_args","forwarded_args","forward_arg","case_match","in_match","in_pattern","match_var","pin","match_alt","match_as","match_rest","array_pattern","match_with_trailing_comma","array_pattern_with_tail","hash_pattern","const_pattern","if_guard","unless_guard","match_nil_pattern","empty_else","find_pattern","kwargs","match_pattern_p","match_pattern"].$to_set().$freeze())}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/buffer"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$enc=Opal.enc,$truthy=Opal.truthy,$gvars=Opal.gvars,$eqeq=Opal.eqeq,$neqeq=Opal.neqeq,$defs=Opal.defs,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$not=Opal.not,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$rb_lt=Opal.rb_lt,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("attr_reader,empty?,=~,start_with?,freeze,==,[],!=,nil?,match,find,encoding,recognize_encoding,force_encoding,encode,to_s,source=,-,open,read,raise,frozen?,dup,reencode_string,class,valid_encoding?,name,raw_source=,gsub,!,ascii_only?,line_index_for_position,line_begins,+,to_a,lines,end_with?,<<,each,chomp!,fetch,source_lines,>=,size,<,new,source,source_range,private,index,bsearch,[]=,method_defined?,bsearch_index"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Buffer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.name=$proto.source=$proto.slice_source=$proto.first_line=$proto.lines=$proto.source_range=$proto.line_begins=$proto.line_index_for_position=$proto.line_range=nil,self.$attr_reader("name","first_line"),$const_set($nesting[0],"ENCODING_RE",$regexp([$enc("[\\s#](en)?coding\\s*[:=]\\s*","ASCII-8BIT"),$enc("(","ASCII-8BIT"),$enc("","ASCII-8BIT"),$enc("(utf8-mac)","ASCII-8BIT"),$enc("|","ASCII-8BIT"),$enc("","ASCII-8BIT"),$enc("([A-Za-z0-9_-]+?)(-unix|-dos|-mac)","ASCII-8BIT"),$enc("|","ASCII-8BIT"),$enc("([A-Za-z0-9_-]+)","ASCII-8BIT"),$enc(")","ASCII-8BIT"),$enc("","ASCII-8BIT")])),$defs(self,"$recognize_encoding",(function(string){var $a,$b,second_line,first_line=nil,encoding_line=nil,result=nil,$ret_or_1=nil,$ret_or_2=nil;return $truthy(string["$empty?"]())?nil:(string["$=~"](/^(.*)\n?(.*\n)?/),second_line=($a=[($b=$gvars["~"])===nil?nil:$b["$[]"](1),($b=$gvars["~"])===nil?nil:$b["$[]"](2)])[1],$truthy((first_line=$a[0])["$start_with?"]($enc("","ASCII-8BIT").$freeze()))?$$$($$("Encoding"),"UTF_8"):(encoding_line=$eqeq(first_line["$[]"](0,2),$enc("#!","ASCII-8BIT").$freeze())?second_line:first_line,$truthy(encoding_line["$nil?"]())||$neqeq(encoding_line["$[]"](0),$enc("#","ASCII-8BIT"))?nil:$truthy(result=$$("ENCODING_RE").$match(encoding_line))?$$("Encoding").$find($truthy($ret_or_1=$truthy($ret_or_2=result["$[]"](3))?$ret_or_2:result["$[]"](4))?$ret_or_1:result["$[]"](6)):nil))}),1),$defs(self,"$reencode_string",(function(input){var original_encoding,detected_encoding=nil;return original_encoding=input.$encoding(),detected_encoding=this.$recognize_encoding(input.$force_encoding($$$($$("Encoding"),"BINARY"))),$truthy(detected_encoding["$nil?"]())?input.$force_encoding(original_encoding):$eqeq(detected_encoding,$$$($$("Encoding"),"BINARY"))?input:input.$force_encoding(detected_encoding).$encode($$$($$("Encoding"),"UTF_8"))}),1),$def(self,"$initialize",(function(name,$a,$b){var $post_args,$kwargs,first_line,source,self=this,$writer=nil;if($post_args=Opal.slice.call(arguments,1),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return $post_args.length>0&&(first_line=$post_args.shift()),null==first_line&&(first_line=1),null==(source=$kwargs.$$smap.source)&&(source=nil),self.name=name.$to_s(),self.source=nil,self.first_line=first_line,self.lines=nil,self.line_begins=nil,self.slice_source=nil,self.line_index_for_position=$hash2([],{}),$truthy(source)?($send(self,"source=",$to_a($writer=[source])),$writer[$rb_minus($writer.length,1)]):nil}),-2),$def(self,"$read",(function(){return $send($$("File"),"open",[this.name,$enc("rb","ASCII-8BIT")],(function $$1(io){var $writer,self=null==$$1.$$s?this:$$1.$$s;return null==io&&(io=nil),$writer=[io.$read()],$send(self,"source=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),this}),0),$def(self,"$source",(function(){return $truthy(this.source["$nil?"]())&&this.$raise($$("RuntimeError"),$enc("Cannot extract source from uninitialized Source::Buffer","ASCII-8BIT")),this.source}),0),$def(self,"$source=",(function(input){var $writer;return $truthy(input["$frozen?"]())&&(input=input.$dup()),input=this.$class().$reencode_string(input),$truthy(input["$valid_encoding?"]())||this.$raise($$("EncodingError"),$enc("invalid byte sequence in ","ASCII-8BIT")+input.$encoding().$name()),$send(this,"raw_source=",$to_a($writer=[input])),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$raw_source=",(function(input){return $truthy(this.source)&&this.$raise($$("ArgumentError"),$enc("Source::Buffer is immutable","ASCII-8BIT")),this.source=input.$gsub($enc("\r\n","ASCII-8BIT").$freeze(),$enc("\n","ASCII-8BIT").$freeze()).$freeze(),$not(this.source["$ascii_only?"]())&&$neqeq(this.source.$encoding(),$$$($$("Encoding"),"UTF_32LE"))&&$neqeq(this.source.$encoding(),$$$($$("Encoding"),"BINARY"))?this.slice_source=this.source.$encode($$$($$("Encoding"),"UTF_32LE")):nil}),1),$def(self,"$slice",(function(range){return $truthy(this.slice_source["$nil?"]())?this.source["$[]"](range):this.slice_source["$[]"](range).$encode(this.source.$encoding())}),1),$def(self,"$decompose_position",(function(position){var line_index,line_begin;return line_index=this.$line_index_for_position(position),line_begin=this.$line_begins()["$[]"](line_index),[$rb_plus(this.first_line,line_index),$rb_minus(position,line_begin)]}),1),$def(self,"$line_for_position",(function(position){return $rb_plus(this.$line_index_for_position(position),this.first_line)}),1),$def(self,"$column_for_position",(function(position){var line_index;return line_index=this.$line_index_for_position(position),$rb_minus(position,this.$line_begins()["$[]"](line_index))}),1),$def(self,"$source_lines",(function(){var $ret_or_1,lines=nil;return this.lines=$truthy($ret_or_1=this.lines)?$ret_or_1:(lines=this.source.$lines().$to_a(),$truthy(this.source["$end_with?"]($enc("\n","ASCII-8BIT").$freeze()))&&lines["$<<"]($enc("","ASCII-8BIT").$dup()),$send(lines,"each",[],(function(line){return null==line&&(line=nil),line["$chomp!"]($enc("\n","ASCII-8BIT").$freeze()),line.$freeze()}),1),lines.$freeze())}),0),$def(self,"$source_line",(function(lineno){return this.$source_lines().$fetch($rb_minus(lineno,this.first_line)).$dup()}),1),$def(self,"$line_range",(function(lineno){var index;return index=$rb_minus(lineno,this.first_line),$truthy($rb_lt(index,0))||$truthy($rb_ge($rb_plus(index,1),this.$line_begins().$size()))?this.$raise($$("IndexError"),$enc("Parser::Source::Buffer: range for line ","ASCII-8BIT")+""+lineno+$enc(" requested, valid line numbers are ","ASCII-8BIT")+this.first_line+$enc("..","ASCII-8BIT")+$rb_minus($rb_plus(this.first_line,this.$line_begins().$size()),2)):$$("Range").$new(this,this.$line_begins()["$[]"](index),$rb_minus(this.$line_begins()["$[]"]($rb_plus(index,1)),1))}),1),$def(self,"$source_range",(function(){var $ret_or_1;return this.source_range=$truthy($ret_or_1=this.source_range)?$ret_or_1:$$("Range").$new(this,0,this.$source().$size())}),0),$def(self,"$last_line",(function(){return $rb_minus($rb_plus(this.$line_begins().$size(),this.first_line),2)}),0),$def(self,"$freeze",(function $$freeze(){var $yield=$$freeze.$$p||nil;return delete $$freeze.$$p,this.$source_lines(),this.$line_begins(),this.$source_range(),$send2(this,$find_super(this,"freeze",$$freeze,!1,!0),"freeze",[],$yield)}),0),$def(self,"$inspect",(function(){return $enc("#<","ASCII-8BIT")+this.$class()+$enc(" ","ASCII-8BIT")+this.$name()+$enc(">","ASCII-8BIT")}),0),self.$private(),$def(self,"$line_begins",(function(){var $ret_or_1,self=this,begins=nil,index=nil;return self.line_begins=$truthy($ret_or_1=self.line_begins)?$ret_or_1:(begins=[0],index=0,function(){for(;$truthy(index=self.source.$index($enc("\n","ASCII-8BIT").$freeze(),index));)index=$rb_plus(index,1),begins["$<<"](index)}(),begins["$<<"]($rb_plus(self.source.$size(),1)),begins)}),0),$def(self,"$line_index_for_position",(function(position){var $ret_or_1,index=nil,$writer=nil;return $truthy($ret_or_1=this.line_index_for_position["$[]"](position))?$ret_or_1:(index=$rb_minus(this.$bsearch(this.$line_begins(),position),1),$truthy(this.line_index_for_position["$frozen?"]())||($writer=[position,index],$send(this.line_index_for_position,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),index)}),1),$truthy($$("Array")["$method_defined?"]("bsearch_index"))?$def(self,"$bsearch",(function(line_begins,position){var $ret_or_1;return $truthy($ret_or_1=$send(line_begins,"bsearch_index",[],(function(line_begin){return null==line_begin&&(line_begin=nil),$rb_lt(position,line_begin)}),1))?$ret_or_1:$rb_minus(line_begins.$size(),1)}),2):$def(self,"$bsearch",(function(line_begins,position){var $ret_or_1=nil;return this.line_range=$truthy($ret_or_1=this.line_range)?$ret_or_1:Opal.Range.$new(0,line_begins.$size(),!0),$truthy($ret_or_1=$send(this.line_range,"bsearch",[],(function(i){return null==i&&(i=nil),$rb_lt(position,line_begins["$[]"](i))}),1))?$ret_or_1:$rb_minus(line_begins.$size(),1)}),2)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/range"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$rb_lt=Opal.rb_lt,$def=Opal.def,$hash2=Opal.hash2,$rb_minus=Opal.rb_minus,$alias=Opal.alias,$neqeq=Opal.neqeq,$to_ary=Opal.to_ary,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$rb_times=Opal.rb_times,$eqeq=Opal.eqeq;return Opal.add_stubs("include,attr_reader,<,raise,nil?,freeze,with,-,line_for_position,alias_method,column_for_position,!=,line,last_line,inspect,column,last_column,source_line,slice,begin_pos,end_pos,include?,source,to_a,decompose_position,join,name,+,new,min,max,disjoint?,empty?,>=,!,<=>,contains?,overlaps?,==,*,source_buffer,is_a?,nonzero?,hash"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Range"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.begin_pos=$proto.end_pos=$proto.source_buffer=nil,self.$include($$("Comparable")),self.$attr_reader("source_buffer"),self.$attr_reader("begin_pos","end_pos"),$def(self,"$initialize",(function(source_buffer,begin_pos,end_pos){var $a;return $truthy($rb_lt(end_pos,begin_pos))&&this.$raise($$("ArgumentError"),"Parser::Source::Range: end_pos must not be less than begin_pos"),$truthy(source_buffer["$nil?"]())&&this.$raise($$("ArgumentError"),"Parser::Source::Range: source_buffer must not be nil"),this.source_buffer=source_buffer,$a=[begin_pos,end_pos],this.begin_pos=$a[0],this.end_pos=$a[1],this.$freeze()}),3),$def(self,"$begin",(function(){return this.$with($hash2(["end_pos"],{end_pos:this.begin_pos}))}),0),$def(self,"$end",(function(){return this.$with($hash2(["begin_pos"],{begin_pos:this.end_pos}))}),0),$def(self,"$size",(function(){return $rb_minus(this.end_pos,this.begin_pos)}),0),$alias(self,"length","size"),$def(self,"$line",(function(){return this.source_buffer.$line_for_position(this.begin_pos)}),0),self.$alias_method("first_line","line"),$def(self,"$column",(function(){return this.source_buffer.$column_for_position(this.begin_pos)}),0),$def(self,"$last_line",(function(){return this.source_buffer.$line_for_position(this.end_pos)}),0),$def(self,"$last_column",(function(){return this.source_buffer.$column_for_position(this.end_pos)}),0),$def(self,"$column_range",(function(){return $neqeq(this.$line(),this.$last_line())&&this.$raise($$("RangeError"),this.$inspect()+" spans more than one line"),Opal.Range.$new(this.$column(),this.$last_column(),!0)}),0),$def(self,"$source_line",(function(){return this.source_buffer.$source_line(this.$line())}),0),$def(self,"$source",(function(){return this.source_buffer.$slice(Opal.Range.$new(this.$begin_pos(),this.$end_pos(),!0))}),0),$def(self,"$is?",(function($a){var self=this;return Opal.slice.call(arguments)["$include?"](self.$source())}),-1),$def(self,"$to_a",(function(){return Opal.Range.$new(this.begin_pos,this.end_pos,!0).$to_a()}),0),$def(self,"$to_range",(function(){return Opal.Range.$new(this.$begin_pos(),this.$end_pos(),!0)}),0),$def(self,"$to_s",(function(){var $a,$b,column,line=nil;return $b=this.source_buffer.$decompose_position(this.begin_pos),line=null==($a=$to_ary($b))[0]?nil:$a[0],column=null==$a[1]?nil:$a[1],[this.source_buffer.$name(),line,$rb_plus(column,1)].$join(":")}),0),$def(self,"$with",(function($kwargs){var begin_pos,end_pos;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(begin_pos=$kwargs.$$smap.begin_pos)&&(begin_pos=this.begin_pos),null==(end_pos=$kwargs.$$smap.end_pos)&&(end_pos=this.end_pos),$$("Range").$new(this.source_buffer,begin_pos,end_pos)}),-1),$def(self,"$adjust",(function($kwargs){var begin_pos,end_pos;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(begin_pos=$kwargs.$$smap.begin_pos)&&(begin_pos=0),null==(end_pos=$kwargs.$$smap.end_pos)&&(end_pos=0),$$("Range").$new(this.source_buffer,$rb_plus(this.begin_pos,begin_pos),$rb_plus(this.end_pos,end_pos))}),-1),$def(self,"$resize",(function(new_size){return this.$with($hash2(["end_pos"],{end_pos:$rb_plus(this.begin_pos,new_size)}))}),1),$def(self,"$join",(function(other){return $$("Range").$new(this.source_buffer,[this.begin_pos,other.$begin_pos()].$min(),[this.end_pos,other.$end_pos()].$max())}),1),$def(self,"$intersect",(function(other){return $truthy(this["$disjoint?"](other))?nil:$$("Range").$new(this.source_buffer,[this.begin_pos,other.$begin_pos()].$max(),[this.end_pos,other.$end_pos()].$min())}),1),$def(self,"$disjoint?",(function(other){var $ret_or_1=nil;return $truthy(this["$empty?"]())&&$truthy(other["$empty?"]())?this.begin_pos["$!="](other.$begin_pos()):$truthy($ret_or_1=$rb_ge(this.begin_pos,other.$end_pos()))?$ret_or_1:$rb_ge(other.$begin_pos(),this.end_pos)}),1),$def(self,"$overlaps?",(function(other){return this["$disjoint?"](other)["$!"]()}),1),$def(self,"$contains?",(function(other){return $rb_ge($rb_plus(other.$begin_pos()["$<=>"](this.begin_pos),this.end_pos["$<=>"](other.$end_pos())),$truthy(other["$empty?"]())?2:1)}),1),$def(self,"$contained?",(function(other){return other["$contains?"](this)}),1),$def(self,"$crossing?",(function(other){return!!$truthy(this["$overlaps?"](other))&&$rb_times(this.begin_pos["$<=>"](other.$begin_pos()),this.end_pos["$<=>"](other.$end_pos()))["$=="](1)}),1),$def(self,"$empty?",(function(){return this.begin_pos["$=="](this.end_pos)}),0),$def(self,"$<=>",(function(other){var $ret_or_1;return $truthy(other["$is_a?"]($$$($$$($$$("Parser"),"Source"),"Range")))&&$eqeq(this.source_buffer,other.$source_buffer())?$truthy($ret_or_1=this.begin_pos["$<=>"](other.$begin_pos())["$nonzero?"]())?$ret_or_1:this.end_pos["$<=>"](other.$end_pos()):nil}),1),self.$alias_method("eql?","=="),$def(self,"$hash",(function(){return[this.source_buffer,this.begin_pos,this.end_pos].$hash()}),0),$def(self,"$inspect",(function(){return"#"}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/comment"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$defs=Opal.defs,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("attr_reader,alias_method,new,associate,associate_locations,associate_by_identity,freeze,source,start_with?,text,==,type,is_a?,location,to_s,expression,inspect"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Comment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.location=nil,self.$attr_reader("text"),self.$attr_reader("location"),self.$alias_method("loc","location"),$defs(self,"$associate",(function(ast,comments){return $$("Associator").$new(ast,comments).$associate()}),2),$defs(self,"$associate_locations",(function(ast,comments){return $$("Associator").$new(ast,comments).$associate_locations()}),2),$defs(self,"$associate_by_identity",(function(ast,comments){return $$("Associator").$new(ast,comments).$associate_by_identity()}),2),$def(self,"$initialize",(function(range){return this.location=$$$($$$($$("Parser"),"Source"),"Map").$new(range),this.text=range.$source().$freeze(),this.$freeze()}),1),$def(self,"$type",(function(){return $truthy(this.$text()["$start_with?"]("#".$freeze()))?"inline":$truthy(this.$text()["$start_with?"]("=begin".$freeze()))?"document":nil}),0),$def(self,"$inline?",(function(){return this.$type()["$=="]("inline")}),0),$def(self,"$document?",(function(){return this.$type()["$=="]("document")}),0),$def(self,"$==",(function(other){var $ret_or_1;return $truthy($ret_or_1=other["$is_a?"]($$$($$("Source"),"Comment")))?this.location["$=="](other.$location()):$ret_or_1}),1),$def(self,"$inspect",(function(){return"#"}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/comment/associator"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$rb_le=Opal.rb_le,$rb_plus=Opal.rb_plus,$not=Opal.not;return Opal.add_stubs("attr_accessor,do_associate,private,freeze,[],include?,type,sort_by,compact,children,begin_pos,expression,loc,select,is_a?,new,[]=,-,==,compare_by_identity,advance_comment,advance_through_directives,visit,process_leading_comments,location,<=,line,last_line,each,children_in_source_order,process_trailing_comments,current_comment_before?,associate_and_advance_comment,current_comment_before_end?,current_comment_decorates?,+,!,end_pos,<<,start_with?,text,=~"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Associator"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.map_using=$proto.mapping=$proto.skip_directives=$proto.ast=$proto.current_comment=$proto.comment_num=$proto.comments=nil,self.$attr_accessor("skip_directives"),$def(self,"$initialize",(function(ast,comments){return this.ast=ast,this.comments=comments,this.skip_directives=!0}),2),$def(self,"$associate",(function(){return this.map_using="eql",this.$do_associate()}),0),$def(self,"$associate_locations",(function(){return this.map_using="location",this.$do_associate()}),0),$def(self,"$associate_by_identity",(function(){return this.map_using="identity",this.$do_associate()}),0),self.$private(),$const_set($nesting[0],"POSTFIX_TYPES",$$("Set")["$[]"]("if","while","while_post","until","until_post","masgn").$freeze()),$def(self,"$children_in_source_order",(function(node){return $truthy($$("POSTFIX_TYPES")["$include?"](node.$type()))?$send(node.$children().$compact(),"sort_by",[],(function(child){return null==child&&(child=nil),child.$loc().$expression().$begin_pos()}),1):$send(node.$children(),"select",[],(function(child){var $ret_or_1,$ret_or_2;return null==child&&(child=nil),$truthy($ret_or_1=$truthy($ret_or_2=child["$is_a?"]($$$($$("AST"),"Node")))?child.$loc():$ret_or_2)?child.$loc().$expression():$ret_or_1}),1)}),1),$def(self,"$do_associate",(function(){return this.mapping=$send($$("Hash"),"new",[],(function(h,k){var $writer;return null==h&&(h=nil),null==k&&(k=nil),$send(h,"[]=",$to_a($writer=[k,[]])),$writer[$rb_minus($writer.length,1)]}),2),$eqeq(this.map_using,"identity")&&this.mapping.$compare_by_identity(),this.comment_num=-1,this.$advance_comment(),$truthy(this.skip_directives)&&this.$advance_through_directives(),$truthy(this.ast)&&this.$visit(this.ast),this.mapping}),0),$def(self,"$visit",(function(node){var node_loc=nil;return this.$process_leading_comments(node),$truthy(this.current_comment)?(node_loc=node.$location(),$truthy($rb_le(this.current_comment.$location().$line(),node_loc.$last_line()))||$truthy(node_loc["$is_a?"]($$$($$("Map"),"Heredoc")))?($send(this.$children_in_source_order(node),"each",[],(function $$4(child){return null==child&&(child=nil),(null==$$4.$$s?this:$$4.$$s).$visit(child)}),{$$arity:1,$$s:this}),this.$process_trailing_comments(node)):nil):nil}),1),$def(self,"$process_leading_comments",(function(node){if($eqeq(node.$type(),"begin"))return nil;for(;$truthy(this["$current_comment_before?"](node));)this.$associate_and_advance_comment(node)}),1),$def(self,"$process_trailing_comments",(function(node){for(;$truthy(this["$current_comment_before_end?"](node));)this.$associate_and_advance_comment(node);for(;$truthy(this["$current_comment_decorates?"](node));)this.$associate_and_advance_comment(node)}),1),$def(self,"$advance_comment",(function(){return this.comment_num=$rb_plus(this.comment_num,1),this.current_comment=this.comments["$[]"](this.comment_num)}),0),$def(self,"$current_comment_before?",(function(node){var comment_loc=nil,node_loc=nil;return!$not(this.current_comment)&&(comment_loc=this.current_comment.$location().$expression(),node_loc=node.$location().$expression(),$rb_le(comment_loc.$end_pos(),node_loc.$begin_pos()))}),1),$def(self,"$current_comment_before_end?",(function(node){var comment_loc=nil,node_loc=nil;return!$not(this.current_comment)&&(comment_loc=this.current_comment.$location().$expression(),node_loc=node.$location().$expression(),$rb_le(comment_loc.$end_pos(),node_loc.$end_pos()))}),1),$def(self,"$current_comment_decorates?",(function(node){return!$not(this.current_comment)&&this.current_comment.$location().$line()["$=="](node.$location().$last_line())}),1),$def(self,"$associate_and_advance_comment",(function(node){var key;return key=$eqeq(this.map_using,"location")?node.$location():node,this.mapping["$[]"](key)["$<<"](this.current_comment),this.$advance_comment()}),1),$const_set($nesting[0],"MAGIC_COMMENT_RE",/^#\s*(-\*-|)\s*(frozen_string_literal|warn_indent|warn_past_scope):.*\1$/),$def(self,"$advance_through_directives",(function(){return $truthy(this.current_comment)&&$truthy(this.current_comment.$text()["$start_with?"]("#!".$freeze()))&&this.$advance_comment(),$truthy(this.current_comment)&&$truthy(this.current_comment.$text()["$=~"]($$("MAGIC_COMMENT_RE")))&&this.$advance_comment(),$truthy(this.current_comment)&&$truthy(this.current_comment.$text()["$=~"]($$$($$("Buffer"),"ENCODING_RE")))?this.$advance_comment():nil}),0)}(Opal.$r($nesting)("Comment"),0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$gvars=Opal.gvars,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$rb_plus=Opal.rb_plus,$truthy=Opal.truthy,$not=Opal.not,$neqeq=Opal.neqeq,$rb_le=Opal.rb_le,$rb_ge=Opal.rb_ge,$rb_lt=Opal.rb_lt,$hash2=Opal.hash2,$const_set=Opal.const_set;return Opal.add_stubs("attr_reader,warn_of_deprecation,class,new,lambda,puts,render,consumer=,-,append,freeze,begin,end,+,in_transaction?,raise,dup,source,each,sort,begin_pos,range,length,replacement,[]=,private,empty?,clobbered_insertion?,!,allow_multiple_insertions?,raise_clobber_error,record_insertion,adjacent_updates?,find,overlaps?,replace_compatible_with_insertion?,merge_actions!,<<,active_queue,adjacent_insertions?,merge_actions,delete,can_merge?,record_replace,|,active_insertions,active_insertions=,active_clobber,clobbered_position_mask,active_clobber=,size,!=,&,<=,end_pos,adjacent_insertion_mask,select,adjacent?,adjacent_position_mask,>=,==,[],all?,intersect,nil?,max,sort_by,push,join,first,max_by,merge_replacements,replace_actions,disjoint?,<,process,extend"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Rewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.diagnostics=$proto.insert_before_multi_order=$proto.insert_after_multi_order=$proto.source_buffer=$proto.queue=$proto.clobber=$proto.insertions=$proto.pending_queue=$proto.pending_clobber=$proto.pending_insertions=nil,self.$attr_reader("source_buffer"),self.$attr_reader("diagnostics"),$def(self,"$initialize",(function(source_buffer){var $writer;return this.$class().$warn_of_deprecation(),this.diagnostics=$$$($$("Diagnostic"),"Engine").$new(),$writer=[$send(this,"lambda",[],(function(diag){return null==$gvars.stderr&&($gvars.stderr=nil),null==diag&&(diag=nil),$gvars.stderr.$puts(diag.$render())}),1)],$send(this.diagnostics,"consumer=",$to_a($writer)),$rb_minus($writer.length,1),this.source_buffer=source_buffer,this.queue=[],this.clobber=0,this.insertions=0,this.insert_before_multi_order=0,this.insert_after_multi_order=0,this.pending_queue=nil,this.pending_clobber=nil,this.pending_insertions=nil}),1),$def(self,"$remove",(function(range){return this.$append($$$($$("Rewriter"),"Action").$new(range,"".$freeze()))}),1),$def(self,"$insert_before",(function(range,content){return this.$append($$$($$("Rewriter"),"Action").$new(range.$begin(),content))}),2),$def(self,"$wrap",(function(range,before,after){return this.$append($$$($$("Rewriter"),"Action").$new(range.$begin(),before)),this.$append($$$($$("Rewriter"),"Action").$new(range.$end(),after))}),3),$def(self,"$insert_before_multi",(function(range,content){return this.insert_before_multi_order=$rb_minus(this.insert_before_multi_order,1),this.$append($$$($$("Rewriter"),"Action").$new(range.$begin(),content,!0,this.insert_before_multi_order))}),2),$def(self,"$insert_after",(function(range,content){return this.$append($$$($$("Rewriter"),"Action").$new(range.$end(),content))}),2),$def(self,"$insert_after_multi",(function(range,content){return this.insert_after_multi_order=$rb_plus(this.insert_after_multi_order,1),this.$append($$$($$("Rewriter"),"Action").$new(range.$end(),content,!0,this.insert_after_multi_order))}),2),$def(self,"$replace",(function(range,content){return this.$append($$$($$("Rewriter"),"Action").$new(range,content))}),2),$def(self,"$process",(function(){var source,adjustment=nil;return $truthy(this["$in_transaction?"]())&&this.$raise("Do not call "+this.$class()+"#process inside a transaction"),adjustment=0,source=this.source_buffer.$source().$dup(),$send(this.queue.$sort(),"each",[],(function(action){var begin_pos,end_pos,$writer;return null==action&&(action=nil),begin_pos=$rb_plus(action.$range().$begin_pos(),adjustment),end_pos=$rb_plus(begin_pos,action.$range().$length()),$writer=[Opal.Range.$new(begin_pos,end_pos,!0),action.$replacement()],$send(source,"[]=",$to_a($writer)),$rb_minus($writer.length,1),adjustment=$rb_plus(adjustment,$rb_minus(action.$replacement().$length(),action.$range().$length()))}),1),source}),0),$def(self,"$transaction",(function $$transaction(){var $yield=$$transaction.$$p||nil,self=this;return delete $$transaction.$$p,function(){try{return $yield===nil&&self.$raise(self.$class()+"#transaction requires block"),$truthy(self["$in_transaction?"]())&&self.$raise("Nested transaction is not supported"),self.pending_queue=self.queue.$dup(),self.pending_clobber=self.clobber,self.pending_insertions=self.insertions,Opal.yieldX($yield,[]),self.queue=self.pending_queue,self.clobber=self.pending_clobber,self.insertions=self.pending_insertions,self}finally{self.pending_queue=nil,self.pending_clobber=nil,self.pending_insertions=nil}}()}),0),self.$private(),$def(self,"$append",(function(action){var range=nil,conflicting=nil,adjacent=nil,insertions=nil;if(range=action.$range(),$truthy(range["$empty?"]())){if($truthy(action.$replacement()["$empty?"]()))return this;$not(action["$allow_multiple_insertions?"]())&&$truthy(conflicting=this["$clobbered_insertion?"](range))&&this.$raise_clobber_error(action,[conflicting]),this.$record_insertion(range),$truthy(adjacent=this["$adjacent_updates?"](range))?(conflicting=$send(adjacent,"find",[],(function $$3(a){var $ret_or_1,self=null==$$3.$$s?this:$$3.$$s;return null==a&&(a=nil),$truthy($ret_or_1=a.$range()["$overlaps?"](range))?self["$replace_compatible_with_insertion?"](a,action)["$!"]():$ret_or_1}),{$$arity:1,$$s:this}),$truthy(conflicting)&&this.$raise_clobber_error(action,[conflicting]),this["$merge_actions!"](action,adjacent)):this.$active_queue()["$<<"](action)}else $truthy(insertions=this["$adjacent_insertions?"](range))&&$send(insertions,"each",[],(function $$4(insertion){var self=null==$$4.$$s?this:$$4.$$s;return null==insertion&&(insertion=nil),$truthy(range["$overlaps?"](insertion.$range()))&&$not(self["$replace_compatible_with_insertion?"](action,insertion))?self.$raise_clobber_error(action,[insertion]):(action=self.$merge_actions(action,[insertion]),self.$active_queue().$delete(insertion))}),{$$arity:1,$$s:this}),$truthy(adjacent=this["$adjacent_updates?"](range))?$truthy(this["$can_merge?"](action,adjacent))?(this.$record_replace(range),this["$merge_actions!"](action,adjacent)):this.$raise_clobber_error(action,adjacent):(this.$record_replace(range),this.$active_queue()["$<<"](action));return this}),1),$def(self,"$record_insertion",(function(range){var $writer;return $writer=[this.$active_insertions()["$|"](1["$<<"](range.$begin_pos()))],$send(this,"active_insertions=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$record_replace",(function(range){var $writer;return $writer=[this.$active_clobber()["$|"](this.$clobbered_position_mask(range))],$send(this,"active_clobber=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$clobbered_position_mask",(function(range){return $rb_minus(1["$<<"](range.$size()),1)["$<<"](range.$begin_pos())}),1),$def(self,"$adjacent_position_mask",(function(range){return $rb_minus(1["$<<"]($rb_plus(range.$size(),2)),1)["$<<"]($rb_minus(range.$begin_pos(),1))}),1),$def(self,"$adjacent_insertion_mask",(function(range){return $rb_minus(1["$<<"]($rb_plus(range.$size(),1)),1)["$<<"](range.$begin_pos())}),1),$def(self,"$clobbered_insertion?",(function(insertion){var insertion_pos;return insertion_pos=insertion.$begin_pos(),$neqeq(this.$active_insertions()["$&"](1["$<<"](insertion_pos)),0)?$send(this.$active_queue(),"find",[],(function(a){var $ret_or_1;return null==a&&(a=nil),$truthy($ret_or_1=$rb_le(a.$range().$begin_pos(),insertion_pos))?$rb_le(insertion_pos,a.$range().$end_pos()):$ret_or_1}),1):nil}),1),$def(self,"$adjacent_insertions?",(function(range){var result=nil;return $neqeq(this.$active_insertions()["$&"](this.$adjacent_insertion_mask(range)),0)?(result=$send(this.$active_queue(),"select",[],(function $$8(a){var $ret_or_1,self=null==$$8.$$s?this:$$8.$$s;return null==a&&(a=nil),$truthy($ret_or_1=a.$range()["$empty?"]())?self["$adjacent?"](range,a.$range()):$ret_or_1}),{$$arity:1,$$s:this}),$truthy(result["$empty?"]())?nil:result):nil}),1),$def(self,"$adjacent_updates?",(function(range){return $neqeq(this.$active_clobber()["$&"](this.$adjacent_position_mask(range)),0)?$send(this.$active_queue(),"select",[],(function $$10(a){return null==a&&(a=nil),(null==$$10.$$s?this:$$10.$$s)["$adjacent?"](range,a.$range())}),{$$arity:1,$$s:this}):nil}),1),$def(self,"$replace_compatible_with_insertion?",(function(replace,insertion){var $ret_or_1,$ret_or_2,offset=nil;return $truthy($ret_or_1=$truthy($ret_or_2=$rb_ge($rb_minus(replace.$replacement().$length(),replace.$range().$size()),insertion.$range().$size()))?offset=$rb_minus(insertion.$range().$begin_pos(),replace.$range().$begin_pos()):$ret_or_2)?replace.$replacement()["$[]"](offset,insertion.$replacement().$length())["$=="](insertion.$replacement()):$ret_or_1}),2),$def(self,"$can_merge?",(function(action,existing){var range=nil;return range=action.$range(),$send(existing,"all?",[],(function(other){var repl1_offset,repl2_offset,repl1_length,repl2_length,replacement2,overlap=nil,replacement1=nil,$ret_or_1=nil;return null==other&&(other=nil),overlap=range.$intersect(other.$range()),!!$truthy(overlap["$nil?"]())||(repl1_offset=$rb_minus(overlap.$begin_pos(),range.$begin_pos()),repl2_offset=$rb_minus(overlap.$begin_pos(),other.$range().$begin_pos()),repl1_length=[$rb_minus(other.$range().$length(),repl2_offset),$rb_minus(other.$replacement().$length(),repl2_offset)].$max(),repl2_length=[$rb_minus(range.$length(),repl1_offset),$rb_minus(action.$replacement().$length(),repl1_offset)].$max(),replacement1=$truthy($ret_or_1=action.$replacement()["$[]"](repl1_offset,repl1_length))?$ret_or_1:"".$freeze(),replacement2=$truthy($ret_or_1=other.$replacement()["$[]"](repl2_offset,repl2_length))?$ret_or_1:"".$freeze(),replacement1["$=="](replacement2))}),1)}),2),$def(self,"$merge_actions",(function(action,existing){var range,actions=nil;return range=(actions=$send(existing.$push(action),"sort_by",[],(function(a){return null==a&&(a=nil),[a.$range().$begin_pos(),a.$range().$end_pos()]}),1)).$first().$range().$join($send(actions,"max_by",[],(function(a){return null==a&&(a=nil),a.$range().$end_pos()}),1).$range()),$$$($$("Rewriter"),"Action").$new(range,this.$merge_replacements(actions))}),2),$def(self,"$merge_actions!",(function(action,existing){var new_action;return new_action=this.$merge_actions(action,existing),this.$active_queue().$delete(action),this.$replace_actions(existing,new_action)}),2),$def(self,"$merge_replacements",(function(actions){var result=nil,prev_act=nil;return result="".$dup(),prev_act=nil,$send(actions,"each",[],(function(act){var prev_end=nil,offset=nil;return null==act&&(act=nil),$not(prev_act)||$truthy(act.$range()["$disjoint?"](prev_act.$range()))?result["$<<"](act.$replacement()):(prev_end=[$rb_plus(prev_act.$range().$begin_pos(),prev_act.$replacement().$length()),prev_act.$range().$end_pos()].$max(),offset=$rb_minus(prev_end,act.$range().$begin_pos()),$truthy($rb_lt(offset,act.$replacement().$size()))&&result["$<<"](act.$replacement()["$[]"](Opal.Range.$new(offset,-1,!1)))),prev_act=act}),1),result}),1),$def(self,"$replace_actions",(function(old,updated){return $send(old,"each",[],(function $$18(act){return null==act&&(act=nil),(null==$$18.$$s?this:$$18.$$s).$active_queue().$delete(act)}),{$$arity:1,$$s:this}),this.$active_queue()["$<<"](updated)}),2),$def(self,"$raise_clobber_error",(function(action,existing){var diagnostic=nil;return diagnostic=$$("Diagnostic").$new("error","invalid_action",$hash2(["action"],{action:action}),action.$range()),this.diagnostics.$process(diagnostic),diagnostic=$$("Diagnostic").$new("note","clobbered",$hash2(["action"],{action:existing["$[]"](0)}),existing["$[]"](0).$range()),this.diagnostics.$process(diagnostic),this.$raise($$("ClobberingError"),"Parser::Source::Rewriter detected clobbering")}),2),$def(self,"$in_transaction?",(function(){return this.pending_queue["$nil?"]()["$!"]()}),0),$def(self,"$active_queue",(function(){var $ret_or_1;return $truthy($ret_or_1=this.pending_queue)?$ret_or_1:this.queue}),0),$def(self,"$active_clobber",(function(){var $ret_or_1;return $truthy($ret_or_1=this.pending_clobber)?$ret_or_1:this.clobber}),0),$def(self,"$active_insertions",(function(){var $ret_or_1;return $truthy($ret_or_1=this.pending_insertions)?$ret_or_1:this.insertions}),0),$def(self,"$active_clobber=",(function(value){return $truthy(this.pending_clobber)?this.pending_clobber=value:this.clobber=value}),1),$def(self,"$active_insertions=",(function(value){return $truthy(this.pending_insertions)?this.pending_insertions=value:this.insertions=value}),1),$def(self,"$adjacent?",(function(range1,range2){var $ret_or_1;return $truthy($ret_or_1=$rb_le(range1.$begin_pos(),range2.$end_pos()))?$rb_le(range2.$begin_pos(),range1.$end_pos()):$ret_or_1}),2),$const_set($nesting[0],"DEPRECATION_WARNING",["Parser::Source::Rewriter is deprecated.","Please update your code to use Parser::Source::TreeRewriter instead"].$join("\n").$freeze()),self.$extend($$("Deprecation"))}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/rewriter/action"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$eqeq=Opal.eqeq;return Opal.add_stubs("include,attr_reader,alias_method,freeze,<=>,begin_pos,range,zero?,order,empty?,==,length,inspect"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Action"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.replacement=$proto.range=nil,self.$include($$("Comparable")),self.$attr_reader("range","replacement","allow_multiple_insertions","order"),self.$alias_method("allow_multiple_insertions?","allow_multiple_insertions"),$def(self,"$initialize",(function(range,replacement,allow_multiple_insertions,order){return null==replacement&&(replacement=""),null==allow_multiple_insertions&&(allow_multiple_insertions=!1),null==order&&(order=0),this.range=range,this.replacement=replacement,this.allow_multiple_insertions=allow_multiple_insertions,this.order=order,this.$freeze()}),-2),$def(self,"$<=>",(function(other){var result=nil;return result=this.$range().$begin_pos()["$<=>"](other.$range().$begin_pos()),$truthy(result["$zero?"]())?this.$order()["$<=>"](other.$order()):result}),1),$def(self,"$to_s",(function(){return $eqeq(this.range.$length(),0)&&$truthy(this.replacement["$empty?"]())?"do nothing":$eqeq(this.range.$length(),0)?"insert "+this.replacement.$inspect():$truthy(this.replacement["$empty?"]())?"remove "+this.range.$length()+" character(s)":"replace "+this.range.$length()+" character(s) with "+this.replacement.$inspect()}),0)}(Opal.$r($nesting)("Rewriter"),0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/tree_rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$lambda=Opal.lambda,$gvars=Opal.gvars,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$const_set=Opal.const_set,$eqeqeq=Opal.eqeqeq,$range=Opal.range,$to_ary=Opal.to_ary,$rb_gt=(Opal.hash,Opal.rb_gt),$rb_lt=Opal.rb_lt,$slice=Opal.slice;return Opal.add_stubs("attr_reader,new,puts,render,consumer=,-,freeze,check_policy_validity,method,adjust,source_range,empty?,==,source_buffer,raise,combine,action_root,merge!,dup,contract,+,begin_pos,range,end_pos,check_range_validity,moved,to_s,replace,wrap,source,each,ordered_replacements,<<,[],length,join,nested_actions,class,name,action_summary,warn_of_deprecation,insert_before,insert_after,extend,protected,private,as_replacements,===,size,first,map,to_range,inspect,values,>,<,trigger_policy,process"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"TreeRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.diagnostics=$proto.source_buffer=$proto.enforcer=$proto.action_root=$proto.in_transaction=$proto.policy=nil,self.$attr_reader("source_buffer"),self.$attr_reader("diagnostics"),$def(self,"$initialize",(function(source_buffer,$kwargs){var crossing_deletions,different_replacements,swallowed_insertions,$writer,all_encompassing_range;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(crossing_deletions=$kwargs.$$smap.crossing_deletions)&&(crossing_deletions="accept"),null==(different_replacements=$kwargs.$$smap.different_replacements)&&(different_replacements="accept"),null==(swallowed_insertions=$kwargs.$$smap.swallowed_insertions)&&(swallowed_insertions="accept"),this.diagnostics=$$$($$("Diagnostic"),"Engine").$new(),$writer=[$lambda((function(diag){return null==$gvars.stderr&&($gvars.stderr=nil),null==diag&&(diag=nil),$gvars.stderr.$puts(diag.$render())}),1)],$send(this.diagnostics,"consumer=",$to_a($writer)),$rb_minus($writer.length,1),this.source_buffer=source_buffer,this.in_transaction=!1,this.policy=$hash2(["crossing_deletions","different_replacements","swallowed_insertions"],{crossing_deletions:crossing_deletions,different_replacements:different_replacements,swallowed_insertions:swallowed_insertions}).$freeze(),this.$check_policy_validity(),this.enforcer=this.$method("enforce_policy"),all_encompassing_range=this.source_buffer.$source_range().$adjust($hash2(["begin_pos","end_pos"],{begin_pos:-1,end_pos:1})),this.action_root=$$$($$("TreeRewriter"),"Action").$new(all_encompassing_range,this.enforcer)}),-2),$def(self,"$empty?",(function(){return this.action_root["$empty?"]()}),0),$def(self,"$merge!",(function(with$){return $eqeq(this.$source_buffer(),with$.$source_buffer())||this.$raise("TreeRewriter are not for the same source_buffer"),this.action_root=this.action_root.$combine(with$.$action_root()),this}),1),$def(self,"$merge",(function(with$){return this.$dup()["$merge!"](with$)}),1),$def(self,"$import!",(function(foreign_rewriter,$kwargs){var offset,merge_effective_range,merge_with,contracted=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(offset=$kwargs.$$smap.offset)&&(offset=0),$truthy(foreign_rewriter["$empty?"]())||(contracted=foreign_rewriter.$action_root().$contract(),merge_effective_range=$$$($$$($$$("Parser"),"Source"),"Range").$new(this.source_buffer,$rb_plus(contracted.$range().$begin_pos(),offset),$rb_plus(contracted.$range().$end_pos(),offset)),this.$check_range_validity(merge_effective_range),merge_with=contracted.$moved(this.source_buffer,offset),this.action_root=this.action_root.$combine(merge_with)),this}),-2),$def(self,"$replace",(function(range,content){return this.$combine(range,$hash2(["replacement"],{replacement:content}))}),2),$def(self,"$wrap",(function(range,insert_before,insert_after){return this.$combine(range,$hash2(["insert_before","insert_after"],{insert_before:insert_before.$to_s(),insert_after:insert_after.$to_s()}))}),3),$def(self,"$remove",(function(range){return this.$replace(range,"".$freeze())}),1),$def(self,"$insert_before",(function(range,content){return this.$wrap(range,content,nil)}),2),$def(self,"$insert_after",(function(range,content){return this.$wrap(range,nil,content)}),2),$def(self,"$process",(function(){var source=nil,chunks=nil,last_end=nil;return source=this.source_buffer.$source(),chunks=[],last_end=0,$send(this.action_root.$ordered_replacements(),"each",[],(function(range,replacement){return null==range&&(range=nil),null==replacement&&(replacement=nil),chunks["$<<"](source["$[]"](Opal.Range.$new(last_end,range.$begin_pos(),!0)))["$<<"](replacement),last_end=range.$end_pos()}),2),chunks["$<<"](source["$[]"](Opal.Range.$new(last_end,source.$length(),!0))),chunks.$join()}),0),$def(self,"$as_replacements",(function(){return this.action_root.$ordered_replacements()}),0),$def(self,"$as_nested_actions",(function(){return this.action_root.$nested_actions()}),0),$def(self,"$transaction",(function $$transaction(){var $yield=$$transaction.$$p||nil,self=this,previous=nil,restore_root=nil;return delete $$transaction.$$p,function(){try{return $yield===nil&&self.$raise(self.$class()+"#transaction requires block"),previous=self.in_transaction,self.in_transaction=!0,restore_root=self.action_root,Opal.yieldX($yield,[]),restore_root=nil,self}finally{$truthy(restore_root)&&(self.action_root=restore_root),self.in_transaction=previous}}()}),0),$def(self,"$in_transaction?",(function(){return this.in_transaction}),0),$def(self,"$inspect",(function(){return"#<"+this.$class()+" "+this.$source_buffer().$name()+": "+this.$action_summary()+">"}),0),$def(self,"$insert_before_multi",(function(range,text){return this.$class().$warn_of_deprecation(),this.$insert_before(range,text)}),2),$def(self,"$insert_after_multi",(function(range,text){return this.$class().$warn_of_deprecation(),this.$insert_after(range,text)}),2),$const_set($nesting[0],"DEPRECATION_WARNING",["TreeRewriter#insert_before_multi and insert_before_multi exist only for legacy compatibility.","Please update your code to use `wrap`, `insert_before` or `insert_after` instead."].$join("\n").$freeze()),self.$extend($$("Deprecation")),self.$protected(),self.$attr_reader("action_root"),self.$private(),$def(self,"$action_summary",(function(){var $ret_or_1,replacements=nil,suffix=nil,parts=nil;return replacements=this.$as_replacements(),$eqeqeq(0,$ret_or_1=replacements.$size())?"empty":($eqeqeq($range(1,3,!1),$ret_or_1)||(replacements=replacements.$first(3),suffix="…"),parts=$send(replacements,"map",[],(function($mlhs_tmp1){var $a,range=nil,str=nil;return null==$mlhs_tmp1&&($mlhs_tmp1=nil),range=null==($a=$to_ary($mlhs_tmp1))[0]?nil:$a[0],str=null==$a[1]?nil:$a[1],$truthy(str["$empty?"]())?"-"+range.$to_range():$eqeq(range.$size(),0)?"+"+str.$inspect()+"@"+range.$begin_pos():"^"+str.$inspect()+"@"+range.$to_range()}),{$$arity:1,$$has_top_level_mlhs_arg:!0}),$truthy(suffix)&&parts["$<<"](suffix),parts.$join(", "))}),0),$const_set($nesting[0],"ACTIONS",["accept","warn","raise"].$freeze()),$def(self,"$check_policy_validity",(function(){var invalid=nil;return invalid=$rb_minus(this.policy.$values(),$$("ACTIONS")),$truthy(invalid["$empty?"]())?nil:this.$raise($$("ArgumentError"),"Invalid policy: "+invalid.$join(", "))}),0),$def(self,"$combine",(function(range,attributes){var action;return range=this.$check_range_validity(range),action=$$$($$("TreeRewriter"),"Action").$new(range,this.enforcer,Opal.to_hash(attributes)),this.action_root=this.action_root.$combine(action),this}),2),$def(self,"$check_range_validity",(function(range){return($truthy($rb_lt(range.$begin_pos(),0))||$truthy($rb_gt(range.$end_pos(),this.source_buffer.$source().$size())))&&this.$raise($$("IndexError"),"The range "+range.$to_range()+" is outside the bounds of the source"),range}),1),$def(self,"$enforce_policy",(function $$enforce_policy(event){var values,$yield=$$enforce_policy.$$p||nil;return delete $$enforce_policy.$$p,$eqeq(this.policy["$[]"](event),"accept")?nil:$truthy(values=Opal.yieldX($yield,[]))?this.$trigger_policy(event,Opal.to_hash(values)):nil}),1),$const_set($nesting[0],"POLICY_TO_LEVEL",$hash2(["warn","raise"],{warn:"warning",raise:"error"}).$freeze()),$def(self,"$trigger_policy",(function(event,$kwargs){var range,conflict,arguments$,$a,action,$ret_or_1,diag=nil,highlights=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(range=$kwargs.$$smap.range)&&(range=this.$raise()),null==(conflict=$kwargs.$$smap.conflict)&&(conflict=nil),arguments$=Opal.kwrestargs($kwargs,{range:!0,conflict:!0}),action=$truthy($ret_or_1=this.policy["$[]"](event))?$ret_or_1:"raise",diag=$$$($$("Parser"),"Diagnostic").$new($$("POLICY_TO_LEVEL")["$[]"](action),event,arguments$,range),this.diagnostics.$process(diag),$truthy(conflict)&&(range=null==($a=$to_ary(conflict))[0]?nil:$a[0],highlights=$slice.call($a,1),diag=$$$($$("Parser"),"Diagnostic").$new($$("POLICY_TO_LEVEL")["$[]"](action),event+"_conflict",arguments$,range,highlights),this.diagnostics.$process(diag)),$eqeq(action,"raise")?this.$raise($$$($$("Parser"),"ClobberingError"),"Parser::Source::TreeRewriter detected clobbering"):nil}),-2)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/tree_rewriter/action"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$not=Opal.not,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$rb_gt=Opal.rb_gt,$rb_minus=Opal.rb_minus,$rb_ge=Opal.rb_ge,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_lt=Opal.rb_lt,$neqeq=Opal.neqeq;return Opal.add_stubs("attr_reader,freeze,empty?,do_combine,==,<<,begin,concat,flat_map,to_proc,end,!,insert_before,insert_after,replacement,raise,insertion?,with,begin_pos,range,first,children,end_pos,last,new,+,map,moved,protected,swallow,class,merge,place_in_hierarchy,analyse_hierarchy,[],fuse_deletions,combine_children,inject,size,bsearch,bsearch_child_index,>,-,>=,===,<=>,<=,check_fusible,<,shift,pop,compact!,each,call,call_enforcer_for_merge,!=,select"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super){var self=$klass($base,null,"Action"),$proto=self.$$prototype;return $proto.insert_before=$proto.insert_after=$proto.children=$proto.replacement=$proto.range=$proto.enforcer=nil,self.$attr_reader("range","replacement","insert_before","insert_after"),$def(self,"$initialize",(function(range,enforcer,$kwargs){var insert_before,replacement,insert_after,children,$a;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(insert_before=$kwargs.$$smap.insert_before)&&(insert_before=""),null==(replacement=$kwargs.$$smap.replacement)&&(replacement=nil),null==(insert_after=$kwargs.$$smap.insert_after)&&(insert_after=""),null==(children=$kwargs.$$smap.children)&&(children=[]),$a=[range,enforcer,children.$freeze(),insert_before.$freeze(),replacement,insert_after.$freeze()],this.range=$a[0],this.enforcer=$a[1],this.children=$a[2],this.insert_before=$a[3],this.replacement=$a[4],this.insert_after=$a[5],this.$freeze()}),-3),$def(self,"$combine",(function(action){return $truthy(action["$empty?"]())?this:this.$do_combine(action)}),1),$def(self,"$empty?",(function(){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.insert_before["$empty?"]())?this.insert_after["$empty?"]():$ret_or_3)?this.children["$empty?"]():$ret_or_2)?$truthy($ret_or_2=this.replacement["$=="](nil))?$ret_or_2:$truthy($ret_or_3=this.replacement["$empty?"]())?this.range["$empty?"]():$ret_or_3:$ret_or_1}),0),$def(self,"$ordered_replacements",(function(){var reps=nil;return reps=[],$truthy(this.insert_before["$empty?"]())||reps["$<<"]([this.range.$begin(),this.insert_before]),$truthy(this.replacement)&&reps["$<<"]([this.range,this.replacement]),reps.$concat($send(this.children,"flat_map",[],"ordered_replacements".$to_proc())),$truthy(this.insert_after["$empty?"]())||reps["$<<"]([this.range.$end(),this.insert_after]),reps}),0),$def(self,"$nested_actions",(function(){var actions=nil;return actions=[],($not(this.insert_before["$empty?"]())||$not(this.insert_after["$empty?"]()))&&actions["$<<"](["wrap",this.range,this.insert_before,this.insert_after]),$truthy(this.replacement)&&actions["$<<"](["replace",this.range,this.replacement]),actions.$concat($send(this.children,"flat_map",[],"nested_actions".$to_proc()))}),0),$def(self,"$insertion?",(function(){var $ret_or_1,$ret_or_2=nil;return $truthy($ret_or_1=$truthy($ret_or_2=this.$insert_before()["$empty?"]()["$!"]())?$ret_or_2:this.$insert_after()["$empty?"]()["$!"]())?$ret_or_1:$truthy($ret_or_2=this.$replacement())?this.$replacement()["$empty?"]()["$!"]():$ret_or_2}),0),$def(self,"$contract",(function(){var range;return $truthy(this["$empty?"]())&&this.$raise("Empty actions can not be contracted"),$truthy(this["$insertion?"]())?this:(range=this.range.$with($hash2(["begin_pos","end_pos"],{begin_pos:this.$children().$first().$range().$begin_pos(),end_pos:this.$children().$last().$range().$end_pos()})),this.$with($hash2(["range"],{range:range})))}),0),$def(self,"$moved",(function(source_buffer,offset){var moved_range;return moved_range=$$$($$$($$$("Parser"),"Source"),"Range").$new(source_buffer,$rb_plus(this.range.$begin_pos(),offset),$rb_plus(this.range.$end_pos(),offset)),this.$with($hash2(["range","children"],{range:moved_range,children:$send(this.$children(),"map",[],(function(child){return null==child&&(child=nil),child.$moved(source_buffer,offset)}),1)}))}),2),self.$protected(),self.$attr_reader("children"),$def(self,"$with",(function($kwargs){var range,enforcer,children,insert_before,replacement,insert_after;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(range=$kwargs.$$smap.range)&&(range=this.range),null==(enforcer=$kwargs.$$smap.enforcer)&&(enforcer=this.enforcer),null==(children=$kwargs.$$smap.children)&&(children=this.children),null==(insert_before=$kwargs.$$smap.insert_before)&&(insert_before=this.insert_before),null==(replacement=$kwargs.$$smap.replacement)&&(replacement=this.replacement),null==(insert_after=$kwargs.$$smap.insert_after)&&(insert_after=this.insert_after),$truthy(replacement)&&(children=this.$swallow(children)),this.$class().$new(range,enforcer,$hash2(["children","insert_before","replacement","insert_after"],{children:children,insert_before:insert_before,replacement:replacement,insert_after:insert_after}))}),-1),$def(self,"$do_combine",(function(action){return $eqeq(action.$range(),this.range)?this.$merge(action):this.$place_in_hierarchy(action)}),1),$def(self,"$place_in_hierarchy",(function(action){var family=nil,extra_sibbling=nil;return family=this.$analyse_hierarchy(action),$truthy(family["$[]"]("fusible"))?this.$fuse_deletions(action,family["$[]"]("fusible"),[].concat($to_a(family["$[]"]("sibbling_left"))).concat($to_a(family["$[]"]("child"))).concat($to_a(family["$[]"]("sibbling_right")))):(extra_sibbling=$truthy(family["$[]"]("parent"))?family["$[]"]("parent").$do_combine(action):$truthy(family["$[]"]("child"))?action.$with($hash2(["children","enforcer"],{children:family["$[]"]("child"),enforcer:this.enforcer})).$combine_children(action.$children()):action,this.$with($hash2(["children"],{children:[].concat($to_a(family["$[]"]("sibbling_left"))).concat([extra_sibbling]).concat($to_a(family["$[]"]("sibbling_right")))})))}),1),$def(self,"$combine_children",(function(more_children){return $send(more_children,"inject",[this],(function(parent,new_child){return null==parent&&(parent=nil),null==new_child&&(new_child=nil),parent.$place_in_hierarchy(new_child)}),2)}),1),$def(self,"$fuse_deletions",(function(action,fusible,other_sibblings){var fused_range,fused_deletion,without_fusible=nil;return without_fusible=this.$with($hash2(["children"],{children:other_sibblings})),fused_range=$send([action].concat($to_a(fusible)),"map",[],"range".$to_proc()).$inject("join"),fused_deletion=action.$with($hash2(["range"],{range:fused_range})),without_fusible.$do_combine(fused_deletion)}),3),$def(self,"$bsearch_child_index",(function $$bsearch_child_index(from){var size,$ret_or_1,$yield=$$bsearch_child_index.$$p||nil;return delete $$bsearch_child_index.$$p,null==from&&(from=0),size=this.children.$size(),$truthy($ret_or_1=$send(Opal.Range.$new(from,size,!0),"bsearch",[],(function $$6(i){var self=null==$$6.$$s?this:$$6.$$s;return null==self.children&&(self.children=nil),null==i&&(i=nil),Opal.yield1($yield,self.children["$[]"](i))}),{$$arity:1,$$s:this}))?$ret_or_1:size}),-1),$def(self,"$analyse_hierarchy",(function(action){var start,center,$ret_or_1,r=nil,left_index=nil,right_index=nil,parent=nil,overlap_left=nil,overlap_right=nil,contained=nil,fusible=nil;return r=action.$range(),left_index=$send(this,"bsearch_child_index",[],(function(child){return null==child&&(child=nil),$rb_gt(child.$range().$end_pos(),r.$begin_pos())}),1),start=$eqeq(left_index,0)?0:$rb_minus(left_index,1),right_index=$send(this,"bsearch_child_index",[start],(function(child){return null==child&&(child=nil),$rb_ge(child.$range().$begin_pos(),r.$end_pos())}),1),center=$rb_minus(right_index,left_index),$eqeqeq(0,$ret_or_1=center)||($eqeqeq(-1,$ret_or_1)?(left_index=$rb_minus(left_index,1),right_index=$rb_plus(right_index,1),parent=this.children["$[]"](left_index)):(overlap_left=this.children["$[]"](left_index).$range().$begin_pos()["$<=>"](r.$begin_pos()),overlap_right=this.children["$[]"]($rb_minus(right_index,1)).$range().$end_pos()["$<=>"](r.$end_pos()),$eqeq(center,1)&&$truthy($rb_le(overlap_left,0))&&$truthy($rb_ge(overlap_right,0))?parent=this.children["$[]"](left_index):(contained=this.children["$[]"](Opal.Range.$new(left_index,right_index,!0)),fusible=this.$check_fusible(action,$truthy($rb_lt(overlap_left,0))?contained.$shift():nil,$truthy($rb_gt(overlap_right,0))?contained.$pop():nil)))),$hash2(["parent","sibbling_left","sibbling_right","fusible","child"],{parent:parent,sibbling_left:this.children["$[]"](Opal.Range.$new(0,left_index,!0)),sibbling_right:this.children["$[]"](Opal.Range.$new(right_index,this.children.$size(),!0)),fusible:fusible,child:contained})}),1),$def(self,"$check_fusible",(function(action,$a){var fusible,self=this;return(fusible=Opal.slice.call(arguments,1))["$compact!"](),$truthy(fusible["$empty?"]())?nil:($send(fusible,"each",[],(function $$9(child){var kind,self=null==$$9.$$s?this:$$9.$$s;return null==self.enforcer&&(self.enforcer=nil),null==child&&(child=nil),kind=$truthy(action["$insertion?"]())||$truthy(child["$insertion?"]())?"crossing_insertions":"crossing_deletions",$send(self.enforcer,"call",[kind],(function(){return $hash2(["range","conflict"],{range:action.$range(),conflict:child.$range()})}),0)}),{$$arity:1,$$s:self}),fusible)}),-2),$def(self,"$merge",(function(action){var $ret_or_1;return this.$call_enforcer_for_merge(action),this.$with($hash2(["insert_before","replacement","insert_after"],{insert_before:""+action.$insert_before()+this.$insert_before(),replacement:$truthy($ret_or_1=action.$replacement())?$ret_or_1:this.replacement,insert_after:""+this.$insert_after()+action.$insert_after()})).$combine_children(action.$children())}),1),$def(self,"$call_enforcer_for_merge",(function(action){return $send(this.enforcer,"call",["different_replacements"],(function $$11(){var self=null==$$11.$$s?this:$$11.$$s;return null==self.replacement&&(self.replacement=nil),null==self.range&&(self.range=nil),$truthy(self.replacement)&&$truthy(action.$replacement())&&$neqeq(self.replacement,action.$replacement())?$hash2(["range","replacement","other_replacement"],{range:self.range,replacement:action.$replacement(),other_replacement:self.replacement}):nil}),{$$arity:0,$$s:this})}),1),$def(self,"$swallow",(function(children){return $send(this.enforcer,"call",["swallowed_insertions"],(function $$12(){var self=null==$$12.$$s?this:$$12.$$s,insertions=nil;return null==self.range&&(self.range=nil),insertions=$send(children,"select",[],"insertion?".$to_proc()),$truthy(insertions["$empty?"]())?nil:$hash2(["range","conflict"],{range:self.range,conflict:$send(insertions,"map",[],"range".$to_proc())})}),{$$arity:0,$$s:this}),[]}),1)}(Opal.$r($nesting)("TreeRewriter"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super,$send=Opal.send,$truthy=Opal.truthy,$hash2=Opal.hash2,$eqeq=Opal.eqeq,$range=Opal.range,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus;return Opal.add_stubs("attr_reader,freeze,line,alias_method,column,last_line,last_column,with,update_expression,==,class,reduce,map,instance_variables,instance_variable_get,send,inject,to_sym,[],[]=,-,protected,tap,dup,to_proc"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,null,"Map"),$proto=self.$$prototype;return $proto.node=$proto.expression=nil,self.$attr_reader("node"),self.$attr_reader("expression"),$def(self,"$initialize",(function(expression){return this.expression=expression}),1),$def(self,"$initialize_copy",(function $$initialize_copy(other){var $yield=$$initialize_copy.$$p||nil;return delete $$initialize_copy.$$p,$send2(this,$find_super(this,"initialize_copy",$$initialize_copy,!1,!0),"initialize_copy",[other],$yield),this.node=nil}),1),$def(self,"$node=",(function(node){return this.node=node,this.$freeze(),this.node}),1),$def(self,"$line",(function(){return this.expression.$line()}),0),self.$alias_method("first_line","line"),$def(self,"$column",(function(){return this.expression.$column()}),0),$def(self,"$last_line",(function(){return this.expression.$last_line()}),0),$def(self,"$last_column",(function(){return this.expression.$last_column()}),0),$def(self,"$with_expression",(function(expression_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_expression(expression_l)}),1)}),1),$def(self,"$==",(function(other){var $ret_or_1;return $truthy($ret_or_1=other.$class()["$=="](this.$class()))?$send(this.$instance_variables(),"map",[],(function $$4(ivar){return null==ivar&&(ivar=nil),(null==$$4.$$s?this:$$4.$$s).$instance_variable_get(ivar)["$=="](other.$send("instance_variable_get",ivar))}),{$$arity:1,$$s:this}).$reduce("&"):$ret_or_1}),1),$def(self,"$to_hash",(function(){return $send(this.$instance_variables(),"inject",[$hash2([],{})],(function $$5(hash,ivar){var $writer,self=null==$$5.$$s?this:$$5.$$s;return null==hash&&(hash=nil),null==ivar&&(ivar=nil),$eqeq(ivar.$to_sym(),"@node")||($writer=[ivar["$[]"]($range(1,-1,!1)).$to_sym(),self.$instance_variable_get(ivar)],$send(hash,"[]=",$to_a($writer)),$rb_minus($writer.length,1)),hash}),{$$arity:2,$$s:this})}),0),self.$protected(),$def(self,"$with",(function $Map_with$6(){var block=$Map_with$6.$$p||nil;return delete $Map_with$6.$$p,$send(this.$dup(),"tap",[],block.$to_proc())}),0),$def(self,"$update_expression",(function(expression_l){return this.expression=expression_l}),1)}([$module($base,"Source")].concat($parent_nesting)[0])}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/operator"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Operator");return self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(operator,expression){return delete $$initialize.$$p,this.operator=operator,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression],null)}),2)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/collection"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Collection");return self.$attr_reader("begin"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),3)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/constant"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Constant");return self.$attr_reader("double_colon"),self.$attr_reader("name"),self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(double_colon,name,expression){var $a;return delete $$initialize.$$p,$a=[double_colon,name],this.double_colon=$a[0],this.name=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression],null)}),3),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/variable"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Variable");return self.$attr_reader("name"),self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(name_l,expression_l){return delete $$initialize.$$p,null==expression_l&&(expression_l=name_l),this.name=name_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),-2),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/keyword"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Keyword");return self.$attr_reader("keyword"),self.$attr_reader("begin"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(keyword_l,begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,this.keyword=keyword_l,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/definition"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader,join"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Definition"),$proto=self.$$prototype;return $proto.keyword=$proto.end=nil,self.$attr_reader("keyword"),self.$attr_reader("operator"),self.$attr_reader("name"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(keyword_l,operator_l,name_l,end_l){return delete $$initialize.$$p,this.keyword=keyword_l,this.operator=operator_l,this.name=name_l,this.end=end_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[this.keyword.$join(this.end)],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/method_definition"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("attr_reader,join"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"MethodDefinition");return self.$$prototype.keyword=nil,self.$attr_reader("keyword"),self.$attr_reader("operator"),self.$attr_reader("name"),self.$attr_reader("end"),self.$attr_reader("assignment"),$def(self,"$initialize",(function $$initialize(keyword_l,operator_l,name_l,end_l,assignment_l,body_l){var $ret_or_1;return delete $$initialize.$$p,this.keyword=keyword_l,this.operator=operator_l,this.name=name_l,this.end=end_l,this.assignment=assignment_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[this.keyword.$join($truthy($ret_or_1=end_l)?$ret_or_1:body_l)],null)}),6)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/send"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Send");return self.$attr_reader("dot"),self.$attr_reader("selector"),self.$attr_reader("operator"),self.$attr_reader("begin"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(dot_l,selector_l,begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,this.dot=dot_l,this.selector=selector_l,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),5),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/index"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Index");return self.$attr_reader("begin"),self.$attr_reader("end"),self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],this.operator=nil,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),3),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/condition"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Condition");return self.$attr_reader("keyword"),self.$attr_reader("begin"),self.$attr_reader("else"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(keyword_l,begin_l,else_l,end_l,expression_l){var $a;return delete $$initialize.$$p,this.keyword=keyword_l,$a=[begin_l,else_l,end_l],this.begin=$a[0],this.else=$a[1],this.end=$a[2],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),5)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/ternary"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Ternary");return self.$attr_reader("question"),self.$attr_reader("colon"),$def(self,"$initialize",(function $$initialize(question_l,colon_l,expression_l){var $a;return delete $$initialize.$$p,$a=[question_l,colon_l],this.question=$a[0],this.colon=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),3)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/for"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"For");return self.$attr_reader("keyword","in"),self.$attr_reader("begin","end"),$def(self,"$initialize",(function $$initialize(keyword_l,in_l,begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,$a=[keyword_l,in_l],this.keyword=$a[0],this.in=$a[1],$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),5)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/rescue_body"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"RescueBody");return self.$attr_reader("keyword"),self.$attr_reader("assoc"),self.$attr_reader("begin"),$def(self,"$initialize",(function $$initialize(keyword_l,assoc_l,begin_l,expression_l){return delete $$initialize.$$p,this.keyword=keyword_l,this.assoc=assoc_l,this.begin=begin_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/heredoc"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Heredoc");return self.$attr_reader("heredoc_body"),self.$attr_reader("heredoc_end"),$def(self,"$initialize",(function $$initialize(begin_l,body_l,end_l){return delete $$initialize.$$p,this.heredoc_body=body_l,this.heredoc_end=end_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[begin_l],null)}),3)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/objc_kwarg"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ObjcKwarg");return self.$attr_reader("keyword"),self.$attr_reader("operator"),self.$attr_reader("argument"),$def(self,"$initialize",(function $$initialize(keyword_l,operator_l,argument_l,expression_l){var $a;return delete $$initialize.$$p,$a=[keyword_l,operator_l,argument_l],this.keyword=$a[0],this.operator=$a[1],this.argument=$a[2],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/syntax_error"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader,message"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"SyntaxError");return self.$attr_reader("diagnostic"),$def(self,"$initialize",(function $$initialize(diagnostic){return delete $$initialize.$$p,this.diagnostic=diagnostic,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[diagnostic.$message()],null)}),1)}($nesting[0],$$("StandardError"))}($nesting[0],$nesting)},Opal.modules["parser/clobbering_error"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass;return function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return $klass($nesting[0],$$("RuntimeError"),"ClobberingError"),nil}($nesting[0],$nesting)},Opal.modules["parser/diagnostic"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$truthy=Opal.truthy,$hash2=Opal.hash2,$def=Opal.def,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$to_ary=Opal.to_ary,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$send=Opal.send,$to_a=Opal.to_a,$rb_ge=Opal.rb_ge,$not=Opal.not,$neqeq=Opal.neqeq;return Opal.add_stubs("freeze,attr_reader,include?,raise,join,inspect,dup,compile,is?,==,line,last_line,+,message,render_line,first_line_only,last_line_only,-,source_buffer,decompose_position,end_pos,>,private,source_line,*,length,each,line_range,intersect,column_range,size,[]=,>=,!,map,name,!=,resize,=~,source,adjust"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Diagnostic"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.reason=$proto.arguments=$proto.location=$proto.level=$proto.highlights=nil,$const_set($nesting[0],"LEVELS",["note","warning","error","fatal"].$freeze()),self.$attr_reader("level","reason","arguments"),self.$attr_reader("location","highlights"),$def(self,"$initialize",(function(level,reason,arguments$,location,highlights){var $ret_or_1;return null==highlights&&(highlights=[]),$truthy($$("LEVELS")["$include?"](level))||this.$raise($$("ArgumentError"),"Diagnostic#level must be one of "+$$("LEVELS").$join(", ")+"; "+level.$inspect()+" provided."),$truthy(location)||this.$raise("Expected a location"),this.level=level,this.reason=reason,this.arguments=($truthy($ret_or_1=arguments$)?$ret_or_1:$hash2([],{})).$dup().$freeze(),this.location=location,this.highlights=highlights.$dup().$freeze(),this.$freeze()}),-5),$def(self,"$message",(function(){return $$("Messages").$compile(this.reason,this.arguments)}),0),$def(self,"$render",(function(){var $a,$b,first_line=nil,last_line=nil,num_lines=nil,last_lineno=nil,last_column=nil;return $eqeq(this.location.$line(),this.location.$last_line())||$truthy(this.location["$is?"]("\n"))?$rb_plus([this.location+": "+this.level+": "+this.$message()],this.$render_line(this.location)):(first_line=this.$first_line_only(this.location),last_line=this.$last_line_only(this.location),num_lines=$rb_plus($rb_minus(this.location.$last_line(),this.location.$line()),1),$b=this.location.$source_buffer().$decompose_position(this.location.$end_pos()),last_lineno=null==($a=$to_ary($b))[0]?nil:$a[0],last_column=null==$a[1]?nil:$a[1],$rb_plus($rb_plus([this.location+"-"+last_lineno+":"+last_column+": "+this.level+": "+this.$message()],this.$render_line(first_line,$rb_gt(num_lines,2),!1)),this.$render_line(last_line,!1,!0)))}),0),self.$private(),$def(self,"$render_line",(function(range,ellipsis,range_end){var source_line=nil,highlight_line=nil,$writer=nil;return null==ellipsis&&(ellipsis=!1),null==range_end&&(range_end=!1),source_line=range.$source_line(),highlight_line=$rb_times(" ",source_line.$length()),$send(this.highlights,"each",[],(function(highlight){var line_range,$writer=nil;return null==highlight&&(highlight=nil),line_range=range.$source_buffer().$line_range(range.$line()),$truthy(highlight=highlight.$intersect(line_range))?($writer=[highlight.$column_range(),$rb_times("~",highlight.$size())],$send(highlight_line,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),1),$truthy(range["$is?"]("\n"))?highlight_line=$rb_plus(highlight_line,"^"):$not(range_end)&&$truthy($rb_ge(range.$size(),1))?($writer=[range.$column_range(),$rb_plus("^",$rb_times("~",$rb_minus(range.$size(),1)))],$send(highlight_line,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):($writer=[range.$column_range(),$rb_times("~",range.$size())],$send(highlight_line,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy(ellipsis)&&(highlight_line=$rb_plus(highlight_line,"...")),$send([source_line,highlight_line],"map",[],(function(line){return null==line&&(line=nil),range.$source_buffer().$name()+":"+range.$line()+": "+line}),1)}),-2),$def(self,"$first_line_only",(function(range){return $neqeq(range.$line(),range.$last_line())?range.$resize(range.$source()["$=~"](/\n/)):range}),1),$def(self,"$last_line_only",(function(range){return $neqeq(range.$line(),range.$last_line())?range.$adjust($hash2(["begin_pos"],{begin_pos:range.$source()["$=~"](/[^\n]*$/)})):range}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/diagnostic/engine"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("attr_accessor,ignore?,call,raise?,raise,protected,==,level"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Engine"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.consumer=$proto.ignore_warnings=$proto.all_errors_are_fatal=nil,self.$attr_accessor("consumer"),self.$attr_accessor("all_errors_are_fatal"),self.$attr_accessor("ignore_warnings"),$def(self,"$initialize",(function(consumer){return null==consumer&&(consumer=nil),this.consumer=consumer,this.all_errors_are_fatal=!1,this.ignore_warnings=!1}),-1),$def(self,"$process",(function(diagnostic){return $truthy(this["$ignore?"](diagnostic))||$truthy(this.consumer)&&this.consumer.$call(diagnostic),$truthy(this["$raise?"](diagnostic))&&this.$raise($$$($$("Parser"),"SyntaxError"),diagnostic),this}),1),self.$protected(),$def(self,"$ignore?",(function(diagnostic){var $ret_or_1;return $truthy($ret_or_1=this.ignore_warnings)?diagnostic.$level()["$=="]("warning"):$ret_or_1}),1),$def(self,"$raise?",(function(diagnostic){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.all_errors_are_fatal)?diagnostic.$level()["$=="]("error"):$ret_or_2)?$ret_or_1:diagnostic.$level()["$=="]("fatal")}),1)}(Opal.$r($nesting)("Diagnostic"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/static_environment"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def;return Opal.add_stubs("reset,[],push,dup,pop,add,to_sym,include?,declare,declared?,empty?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"StaticEnvironment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.stack=$proto.variables=nil,$const_set($nesting[0],"FORWARD_ARGS","FORWARD_ARGS"),$const_set($nesting[0],"ANONYMOUS_BLOCKARG","ANONYMOUS_BLOCKARG"),$def(self,"$initialize",(function(){return this.$reset()}),0),$def(self,"$reset",(function(){return this.variables=$$("Set")["$[]"](),this.stack=[]}),0),$def(self,"$extend_static",(function(){return this.stack.$push(this.variables),this.variables=$$("Set")["$[]"](),this}),0),$def(self,"$extend_dynamic",(function(){return this.stack.$push(this.variables),this.variables=this.variables.$dup(),this}),0),$def(self,"$unextend",(function(){return this.variables=this.stack.$pop(),this}),0),$def(self,"$declare",(function(name){return this.variables.$add(name.$to_sym()),this}),1),$def(self,"$declared?",(function(name){return this.variables["$include?"](name.$to_sym())}),1),$def(self,"$declare_forward_args",(function(){return this.$declare($$("FORWARD_ARGS"))}),0),$def(self,"$declared_forward_args?",(function(){return this["$declared?"]($$("FORWARD_ARGS"))}),0),$def(self,"$declare_anonymous_blockarg",(function(){return this.$declare($$("ANONYMOUS_BLOCKARG"))}),0),$def(self,"$declared_anonymous_blockarg?",(function(){return this["$declared?"]($$("ANONYMOUS_BLOCKARG"))}),0),$def(self,"$empty?",(function(){return this.stack["$empty?"]()}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/lexer"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$const_set=Opal.const_set,$hash=Opal.hash,$def=Opal.def,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$hash2=Opal.hash2,$rb_plus=Opal.rb_plus,$to_ary=Opal.to_ary,$rb_le=Opal.rb_le,$eqeqeq=Opal.eqeqeq,$rb_gt=Opal.rb_gt,$neqeq=Opal.neqeq,$not=Opal.not,$rb_ge=Opal.rb_ge,$range=Opal.range,$rb_lt=Opal.rb_lt,$gvars=Opal.gvars;return Opal.add_stubs("attr_accessor,private,_lex_trans_keys=,-,_lex_key_spans=,_lex_index_offsets=,_lex_indicies=,_lex_trans_targs=,_lex_trans_actions=,_lex_to_state_actions=,_lex_from_state_actions=,_lex_eof_trans=,lex_start=,lex_error=,lex_en_interp_words=,lex_en_interp_string=,lex_en_plain_words=,lex_en_plain_string=,lex_en_interp_backslash_delimited=,lex_en_plain_backslash_delimited=,lex_en_interp_backslash_delimited_words=,lex_en_plain_backslash_delimited_words=,lex_en_regexp_modifiers=,lex_en_expr_variable=,lex_en_expr_fname=,lex_en_expr_endfn=,lex_en_expr_dot=,lex_en_expr_arg=,lex_en_expr_cmdarg=,lex_en_expr_endarg=,lex_en_expr_mid=,lex_en_expr_beg=,lex_en_expr_labelarg=,lex_en_expr_value=,lex_en_expr_end=,lex_en_leading_dot=,lex_en_line_comment=,lex_en_line_begin=,freeze,ord,union,chars,attr_reader,reset,lex_en_line_begin,class,new,source,==,encoding,unpack,[],lex_en_expr_dot,lex_en_expr_fname,lex_en_expr_value,lex_en_expr_beg,lex_en_expr_mid,lex_en_expr_arg,lex_en_expr_cmdarg,lex_en_expr_end,lex_en_expr_endarg,lex_en_expr_endfn,lex_en_expr_labelarg,lex_en_interp_string,lex_en_interp_words,lex_en_plain_string,fetch,invert,push,count,pop,any?,shift,send,+,size,<=,===,<<,>,!=,emit_comment,tok,literal,flush_string,extend_content,emit,heredoc?,saved_herebody_s=,start_interp_brace,[]=,diagnostic,range,str_s,gsub,version?,nest_and_try_closing,heredoc_e,pop_literal,infer_indent_level,!,eof_codepoint?,words?,extend_space,extend_string,active?,>=,slice,start_with?,chr,munge_escape?,match,regexp?,squiggly_heredoc?,supports_line_continuation_via_slash?,include?,scan,join,=~,to_i,stack_pop,emit_table,push_literal,arg_or_cmdarg,<,emit_do,declared?,nil?,last,in_def_open_args?,getbyte,inspect,end_with?,empty?,index,call,Float,to_f,length,lambda,Rational,Complex,each,encode_escape,%,end_interp_brace_and_try_closing,lexpop,saved_herebody_s,next_state_for_literal,rstrip,&,|,lex_error,protected,force_encoding,process,backslash_delimited?,interpolate?,lex_en_interp_backslash_delimited_words,lex_en_plain_backslash_delimited_words,lex_en_plain_words,lex_en_interp_backslash_delimited,lex_en_plain_backslash_delimited,dedent_level,type,lex_en_regexp_modifiers,upcase"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Lexer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$writer=nil,$proto=self.$$prototype;return $proto.source_buffer=$proto.source_pts=$proto.cs=$proto.cmdarg_stack=$proto.cmdarg=$proto.cond_stack=$proto.cond=$proto.dedent_level=$proto.token_queue=$proto.p=$proto.command_start=$proto.herebody_s=$proto.sharp_s=$proto.ts=$proto.te=$proto.top=$proto.stack=$proto.version=$proto.escape_s=$proto.escape=$proto.act=$proto.static_env=$proto.newline_s=$proto.lambda_stack=$proto.paren_nest=$proto.context=$proto.num_digits_s=$proto.num_suffix_s=$proto.num_base=$proto.num_xfrm=$proto.eq_begin_s=$proto.cs_before_block_comment=$proto.in_kwarg=$proto.tokens=$proto.comments=$proto.diagnostics=$proto.literal_stack=nil,function(self,$parent_nesting){self.$attr_accessor("_lex_trans_keys"),self.$private("_lex_trans_keys","_lex_trans_keys=")}(Opal.get_singleton_class(self)),$send(self,"_lex_trans_keys=",$to_a($writer=[[0,0,101,101,103,103,105,105,110,110,69,69,78,78,68,68,95,95,95,95,0,26,0,127,0,127,0,127,0,127,0,45,0,120,0,120,0,92,0,120,0,120,0,45,0,120,0,120,67,99,45,45,0,92,0,120,0,102,0,127,0,127,0,127,0,127,0,45,0,120,0,120,0,92,0,120,0,120,0,45,0,120,0,120,67,99,45,45,0,92,0,120,0,102,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,58,58,58,58,46,46,10,10,0,127,58,58,60,60,62,62,10,10,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,115,115,99,99,117,117,101,101,108,116,101,101,115,115,115,115,105,105,108,108,105,105,108,108,58,58,0,127,10,10,0,127,9,92,10,10,9,92,58,58,98,98,101,101,103,103,105,105,110,110,0,127,61,61,9,92,9,92,9,92,9,92,9,92,10,10,0,127,0,127,61,126,93,93,0,127,0,127,10,10,34,34,10,10,39,39,0,127,10,96,96,96,0,45,0,120,0,120,0,92,0,120,0,120,0,45,0,120,0,120,67,99,45,45,0,92,0,120,0,102,0,127,0,127,0,127,0,127,0,127,0,127,58,58,58,58,0,127,43,57,48,57,48,57,48,57,48,57,115,115,99,99,117,117,101,101,99,99,117,117,101,101,0,127,58,58,9,92,9,92,9,92,9,92,9,92,9,92,60,60,10,10,9,92,9,92,10,10,10,10,10,10,10,10,46,46,0,95,9,32,0,0,10,10,10,10,98,98,9,32,10,10,95,95,0,92,9,32,36,123,0,127,48,57,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,48,102,48,102,0,0,48,102,48,102,0,0,0,45,0,92,0,92,0,0,0,0,0,92,48,102,48,102,0,0,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,92,36,123,0,127,48,57,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,48,102,48,102,0,0,48,102,48,102,0,0,0,45,0,92,0,92,0,0,0,0,0,92,48,102,48,102,0,0,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,92,9,32,0,26,0,92,0,26,0,35,36,123,0,127,48,57,0,127,0,26,0,35,9,32,36,123,0,127,48,57,0,127,0,32,9,32,65,122,65,122,36,64,0,127,48,57,0,127,0,127,0,127,0,127,9,32,0,0,61,126,10,10,10,10,0,127,0,127,48,57,115,115,38,38,42,42,64,64,58,58,60,61,62,62,61,126,61,61,61,62,0,127,0,127,0,127,0,127,0,127,0,127,0,127,93,93,10,10,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,124,124,0,127,0,127,9,32,10,10,10,10,46,46,10,10,0,0,0,127,0,127,61,61,0,0,9,32,0,0,61,126,10,10,10,10,38,38,42,42,64,64,60,61,62,62,61,126,61,61,61,62,0,127,93,93,10,10,124,124,0,126,0,127,0,61,9,61,9,61,0,0,9,61,9,62,46,46,46,46,58,58,9,32,0,0,0,127,0,0,9,124,0,0,10,10,10,10,0,0,9,61,58,58,60,60,62,62,9,32,10,10,0,127,102,102,101,101,110,110,104,104,0,127,0,127,0,127,0,0,0,127,10,10,0,123,9,32,10,10,10,10,10,10,0,0,111,111,0,0,0,127,0,127,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,58,61,0,0,61,126,61,61,0,0,0,0,0,0,9,32,61,61,9,32,61,126,10,10,10,10,0,127,38,61,0,0,42,61,61,61,9,92,9,92,9,92,46,46,46,46,10,10,0,26,0,127,0,127,61,61,0,0,61,126,61,62,0,0,0,0,0,0,0,0,61,126,0,127,48,57,38,38,42,42,64,64,60,61,62,62,61,61,61,62,0,127,48,57,0,127,124,124,64,64,60,61,0,0,10,34,10,39,96,96,62,62,61,126,61,62,0,122,0,0,0,127,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,48,102,48,102,0,0,48,102,48,102,0,0,0,45,0,92,0,92,0,0,0,0,0,92,48,102,48,102,0,0,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,127,0,127,0,127,0,0,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,61,126,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,0,61,124,0,92,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,61,61,0,0,9,32,0,0,61,126,10,10,10,10,0,127,0,127,48,57,61,61,38,61,0,0,0,0,42,61,61,62,46,57,46,46,10,10,48,101,48,95,46,120,48,114,43,57,48,105,102,102,0,0,101,105,0,0,0,0,48,114,48,114,48,114,48,114,105,114,102,102,0,0,101,105,115,115,0,0,0,0,48,114,48,114,48,114,48,114,48,114,48,114,48,114,48,114,46,114,48,114,46,114,48,114,58,58,60,61,62,62,61,126,61,61,61,62,0,127,0,127,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,0,10,10,0,0,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,9,92,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,0,61,124,0,0,9,92,9,92,9,92,46,46,46,46,10,10,46,46,10,10,10,61,10,10,10,101,10,110,10,100,10,10,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_key_spans"),self.$private("_lex_key_spans","_lex_key_spans=")}(Opal.get_singleton_class(self)),$send(self,"_lex_key_spans=",$to_a($writer=[[0,1,1,1,1,1,1,1,1,1,27,128,128,128,128,46,121,121,93,121,121,46,121,121,33,1,93,121,103,128,128,128,128,46,121,121,93,121,121,46,121,121,33,1,93,121,103,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,1,1,1,128,1,1,1,1,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,1,1,1,9,1,1,1,1,1,1,1,1,128,1,128,84,1,84,1,1,1,1,1,1,128,1,84,84,84,84,84,1,128,128,66,1,128,128,1,1,1,1,128,87,1,46,121,121,93,121,121,46,121,121,33,1,93,121,103,128,128,128,128,128,128,1,1,128,15,10,10,10,10,1,1,1,1,1,1,1,128,1,84,84,84,84,84,84,1,1,84,84,1,1,1,1,1,96,24,0,1,1,1,24,1,1,93,24,88,128,10,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,55,55,0,55,55,0,46,93,93,0,0,93,55,55,0,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,0,0,55,0,93,88,128,10,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,55,55,0,55,55,0,46,93,93,0,0,93,55,55,0,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,0,0,55,0,93,24,27,93,27,36,88,128,10,128,27,36,24,88,128,10,128,33,24,58,58,29,128,10,128,128,128,128,24,0,66,1,1,128,128,10,1,1,1,1,1,2,1,66,1,2,128,128,128,128,128,128,128,1,1,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,128,128,24,1,1,1,1,0,128,128,1,0,24,0,66,1,1,1,1,1,2,1,66,1,2,128,1,1,1,127,128,62,53,53,0,53,54,1,1,1,24,0,128,0,116,0,1,1,0,53,1,1,1,24,1,128,1,1,1,1,128,128,128,0,128,1,124,24,1,1,1,0,1,0,128,128,24,0,1,1,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,4,0,66,1,0,0,0,24,1,24,66,1,1,128,24,0,20,1,84,84,84,1,1,1,27,128,128,1,0,66,2,0,0,0,0,66,128,10,1,1,1,2,1,1,2,128,10,128,1,1,2,0,25,30,1,1,66,2,123,0,128,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,55,55,0,55,55,0,46,93,93,0,0,93,55,55,0,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,0,0,55,0,128,128,128,0,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,66,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,64,93,24,0,1,1,1,0,128,128,24,0,1,1,1,0,128,128,1,0,24,0,66,1,1,128,128,10,1,24,0,0,20,2,12,1,1,54,48,75,67,15,58,1,0,5,0,0,67,67,67,67,10,1,0,5,1,0,0,67,67,67,67,67,67,67,67,69,67,69,67,1,2,1,66,1,2,128,128,0,128,128,128,128,128,128,0,1,0,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,84,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,64,0,84,84,84,1,1,1,1,1,52,1,92,101,91,1]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_index_offsets"),self.$private("_lex_index_offsets","_lex_index_offsets=")}(Opal.get_singleton_class(self)),$send(self,"_lex_index_offsets=",$to_a($writer=[[0,0,2,4,6,8,10,12,14,16,18,46,175,304,433,562,609,731,853,947,1069,1191,1238,1360,1482,1516,1518,1612,1734,1838,1967,2096,2225,2354,2401,2523,2645,2739,2861,2983,3030,3152,3274,3308,3310,3404,3526,3630,3759,3888,4017,4146,4275,4404,4533,4662,4791,4920,5049,5178,5307,5436,5565,5567,5569,5571,5573,5702,5704,5706,5708,5710,5839,5968,6097,6226,6355,6484,6613,6742,6871,7e3,7129,7258,7387,7516,7645,7774,7903,8032,8034,8036,8038,8040,8050,8052,8054,8056,8058,8060,8062,8064,8066,8195,8197,8326,8411,8413,8498,8500,8502,8504,8506,8508,8510,8639,8641,8726,8811,8896,8981,9066,9068,9197,9326,9393,9395,9524,9653,9655,9657,9659,9661,9790,9878,9880,9927,10049,10171,10265,10387,10509,10556,10678,10800,10834,10836,10930,11052,11156,11285,11414,11543,11672,11801,11930,11932,11934,12063,12079,12090,12101,12112,12123,12125,12127,12129,12131,12133,12135,12137,12266,12268,12353,12438,12523,12608,12693,12778,12780,12782,12867,12952,12954,12956,12958,12960,12962,13059,13084,13085,13087,13089,13091,13116,13118,13120,13214,13239,13328,13457,13468,13597,13719,13720,13721,13730,13739,13740,13741,13835,13836,13837,13838,13932,13934,13935,13936,13937,14031,14087,14143,14144,14200,14256,14257,14304,14398,14492,14493,14494,14588,14644,14700,14701,14748,14750,14844,14921,14977,15033,15089,15090,15217,15344,15345,15472,15473,15600,15727,15854,15981,15982,16109,16236,16363,16490,16617,16744,16745,16746,16802,16803,16897,16986,17115,17126,17255,17377,17378,17379,17388,17397,17398,17399,17493,17494,17495,17496,17590,17592,17593,17594,17595,17689,17745,17801,17802,17858,17914,17915,17962,18056,18150,18151,18152,18246,18302,18358,18359,18406,18408,18502,18579,18635,18691,18747,18748,18875,19002,19003,19130,19131,19258,19385,19512,19639,19640,19767,19894,20021,20148,20275,20402,20403,20404,20460,20461,20555,20580,20608,20702,20730,20767,20856,20985,20996,21125,21153,21190,21215,21304,21433,21444,21573,21607,21632,21691,21750,21780,21909,21920,22049,22178,22307,22436,22461,22462,22529,22531,22533,22662,22791,22802,22804,22806,22808,22810,22812,22815,22817,22884,22886,22889,23018,23147,23276,23405,23534,23663,23792,23794,23796,23925,24054,24183,24312,24441,24570,24699,24828,24957,25086,25215,25344,25473,25602,25731,25860,25989,26118,26247,26376,26505,26634,26763,26892,27021,27150,27279,27408,27537,27666,27795,27924,28053,28182,28311,28440,28569,28698,28827,28956,29085,29214,29343,29472,29601,29730,29859,29988,30117,30246,30375,30504,30633,30762,30891,31020,31149,31278,31407,31536,31665,31794,31923,32052,32181,32310,32439,32568,32697,32826,32955,33084,33213,33342,33471,33600,33729,33858,33987,34116,34245,34374,34503,34505,34634,34763,34788,34790,34792,34794,34796,34797,34926,35055,35057,35058,35083,35084,35151,35153,35155,35157,35159,35161,35164,35166,35233,35235,35238,35367,35369,35371,35373,35501,35630,35693,35747,35801,35802,35856,35911,35913,35915,35917,35942,35943,36072,36073,36190,36191,36193,36195,36196,36250,36252,36254,36256,36281,36283,36412,36414,36416,36418,36420,36549,36678,36807,36808,36937,36939,37064,37089,37091,37093,37095,37096,37098,37099,37228,37357,37382,37383,37385,37387,37389,37390,37519,37648,37777,37906,38035,38164,38293,38422,38551,38680,38809,38938,39067,39196,39325,39454,39583,39712,39717,39718,39785,39787,39788,39789,39790,39815,39817,39842,39909,39911,39913,40042,40067,40068,40089,40091,40176,40261,40346,40348,40350,40352,40380,40509,40638,40640,40641,40708,40711,40712,40713,40714,40715,40782,40911,40922,40924,40926,40928,40931,40933,40935,40938,41067,41078,41207,41209,41211,41214,41215,41241,41272,41274,41276,41343,41346,41470,41471,41600,41729,41851,41852,41853,41862,41871,41872,41873,41967,41968,41969,41970,42064,42066,42067,42068,42069,42163,42219,42275,42276,42332,42388,42389,42436,42530,42624,42625,42626,42720,42776,42832,42833,42880,42882,42976,43053,43109,43165,43221,43222,43349,43476,43477,43604,43605,43732,43859,43986,44113,44114,44241,44368,44495,44622,44749,44876,45003,45130,45257,45384,45511,45638,45765,45892,46019,46146,46273,46400,46527,46528,46529,46585,46586,46715,46844,46973,46974,46976,46977,47106,47235,47364,47493,47622,47751,47880,48009,48138,48267,48396,48525,48654,48783,48912,49041,49170,49299,49428,49557,49686,49815,49944,50073,50202,50331,50460,50589,50718,50847,50976,51105,51234,51363,51492,51621,51750,51879,52008,52137,52266,52395,52524,52653,52782,52911,53040,53169,53298,53427,53556,53685,53814,53943,54072,54201,54330,54459,54588,54717,54846,54913,55042,55171,55300,55429,55558,55687,55816,55945,56074,56203,56332,56461,56590,56719,56848,56977,57106,57235,57364,57493,57622,57751,57880,58009,58138,58139,58204,58298,58323,58324,58326,58328,58330,58331,58460,58589,58614,58615,58617,58619,58621,58622,58751,58880,58882,58883,58908,58909,58976,58978,58980,59109,59238,59249,59251,59276,59277,59278,59299,59302,59315,59317,59319,59374,59423,59499,59567,59583,59642,59644,59645,59651,59652,59653,59721,59789,59857,59925,59936,59938,59939,59945,59947,59948,59949,60017,60085,60153,60221,60289,60357,60425,60493,60563,60631,60701,60769,60771,60774,60776,60843,60845,60848,60977,61106,61107,61236,61365,61494,61623,61752,61881,61882,61884,61885,61886,62015,62144,62273,62402,62531,62660,62789,62918,63047,63176,63305,63434,63563,63692,63821,63950,64079,64208,64337,64466,64595,64724,64853,64982,65111,65240,65369,65498,65627,65756,65885,66014,66143,66272,66401,66530,66659,66744,66873,67002,67131,67260,67389,67518,67647,67776,67905,68034,68163,68292,68421,68550,68679,68808,68937,69066,69195,69324,69453,69582,69711,69840,69969,70098,70227,70356,70485,70614,70743,70872,71001,71130,71259,71388,71517,71646,71775,71904,72033,72162,72291,72420,72549,72678,72807,72936,73065,73194,73323,73452,73581,73710,73839,73968,74097,74226,74355,74484,74613,74742,74871,75e3,75129,75130,75195,75196,75281,75366,75451,75453,75455,75457,75459,75461,75514,75516,75609,75711,75803]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_indicies"),self.$private("_lex_indicies","_lex_indicies=")}(Opal.get_singleton_class(self)),$send(self,"_lex_indicies=",$to_a($writer=[[1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,0,0,10,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,12,14,12,14,14,12,12,14,14,14,15,14,14,16,16,16,16,16,16,16,16,16,16,14,14,14,14,14,14,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,14,12,12,13,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,14,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,14,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,17,17,17,17,17,17,17,17,17,12,12,12,12,12,12,18,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,17,17,17,17,17,17,17,17,17,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,13,19,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,20,19,22,22,22,19,22,22,22,22,22,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,24,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,25,22,19,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,26,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,25,22,19,27,27,27,19,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,19,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,29,27,19,30,30,30,19,30,30,30,30,30,31,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,19,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,19,30,30,30,19,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,19,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,19,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,33,20,19,34,34,34,19,34,34,34,34,34,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,19,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,36,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,37,34,34,34,34,34,34,38,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,39,34,19,34,34,34,19,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,19,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,39,34,40,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,41,19,41,19,19,42,42,42,19,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,19,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,44,42,19,22,22,22,19,22,22,22,22,22,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,26,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,25,22,19,45,45,45,19,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,19,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,46,46,46,46,46,46,46,46,46,46,45,45,45,45,45,45,45,46,46,46,46,46,46,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,46,46,46,46,46,46,45,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,49,49,47,49,47,49,49,47,47,49,49,49,50,49,49,51,51,51,51,51,51,51,51,51,51,49,49,49,49,49,49,49,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,49,47,47,48,49,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,49,47,48,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,49,49,49,49,49,49,49,49,49,49,47,47,47,47,47,47,47,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,47,47,47,47,49,47,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,47,47,47,47,47,49,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,52,52,52,52,52,52,52,52,52,52,47,47,47,47,47,47,53,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,48,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,47,48,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,52,52,52,52,52,52,52,52,52,52,47,47,47,47,47,47,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,48,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,47,48,54,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,56,55,54,57,57,57,54,57,57,57,57,57,58,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,59,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,60,57,54,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,61,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,60,57,54,62,62,62,54,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,54,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,54,65,65,65,54,65,65,65,65,65,66,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,54,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,67,65,54,65,65,65,54,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,54,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,67,65,54,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,68,55,54,69,69,69,54,69,69,69,69,69,70,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,54,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,71,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,72,69,69,69,69,69,69,73,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,74,69,54,69,69,69,54,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,54,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,74,69,75,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,76,54,76,54,54,77,77,77,54,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,54,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,79,77,54,57,57,57,54,57,57,57,57,57,58,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,61,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,60,57,54,80,80,80,54,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,54,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,80,80,80,80,80,80,80,81,81,81,81,81,81,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,80,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,84,84,82,84,82,84,84,82,82,84,84,84,85,84,84,86,86,86,86,86,86,86,86,86,86,84,84,84,84,84,84,84,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,84,82,82,83,84,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,84,82,83,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,84,84,84,84,84,84,84,84,84,84,82,82,82,82,82,82,82,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,82,82,82,82,84,82,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,82,82,82,82,82,84,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,87,87,87,87,87,87,87,87,87,87,82,82,82,82,82,82,88,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,83,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,82,83,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,87,87,87,87,87,87,87,87,87,87,82,82,82,82,82,82,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,83,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,82,83,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,91,91,89,91,89,91,91,89,89,91,91,91,92,91,91,93,93,93,93,93,93,93,93,93,93,91,91,91,91,91,91,91,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,91,89,89,90,91,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,91,89,90,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,91,91,91,91,91,91,91,91,91,91,89,89,89,89,89,89,89,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,89,89,89,89,91,89,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,89,89,89,89,89,91,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,94,94,94,94,94,94,94,94,94,94,89,89,89,89,89,89,95,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,90,89,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,89,90,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,94,94,94,94,94,94,94,94,94,94,89,89,89,89,89,89,89,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,90,89,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,89,90,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,97,97,98,97,98,97,97,98,98,97,97,97,99,97,97,100,100,100,100,100,100,100,100,100,100,97,97,97,97,97,97,97,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,98,97,98,98,96,97,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,98,98,98,97,98,96,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,97,97,97,97,97,97,97,97,97,97,98,98,98,98,98,98,98,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,98,98,98,98,97,98,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,98,98,98,98,98,97,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,101,101,101,101,101,101,101,101,101,101,98,98,98,98,98,98,102,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,98,98,98,98,101,98,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,98,98,98,98,98,101,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,103,103,103,103,103,103,103,103,103,103,98,98,98,98,98,98,98,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,98,98,98,98,103,98,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,98,98,98,98,98,103,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,105,105,105,105,105,105,105,105,105,105,104,104,104,104,104,104,104,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,104,104,104,104,105,104,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,104,104,104,104,104,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,106,106,106,106,106,106,106,106,106,106,107,107,107,107,107,107,107,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,107,107,107,107,107,107,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,107,107,107,107,107,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,110,108,108,108,108,108,108,108,108,108,108,108,108,108,108,109,109,109,109,109,109,109,109,109,109,111,108,108,108,108,110,108,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,108,108,108,108,109,108,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,108,108,108,108,108,109,111,108,108,112,113,108,114,108,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,117,115,115,115,115,115,115,115,115,115,115,115,115,115,115,116,116,116,116,116,116,116,116,116,116,118,115,115,115,115,117,115,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,115,115,115,115,116,115,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,115,115,115,115,115,116,118,115,120,119,121,119,122,119,119,119,119,119,119,119,119,119,119,124,119,124,124,124,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,124,119,119,119,119,125,126,119,127,119,128,129,130,131,132,125,119,119,119,119,119,119,119,119,119,119,133,119,134,130,135,136,119,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,137,138,130,139,123,119,123,123,123,123,123,123,123,123,140,123,123,123,123,123,123,123,123,141,123,123,142,123,143,123,123,123,144,145,119,139,119,123,119,119,119,119,119,119,119,119,119,146,119,146,146,146,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,146,119,119,119,119,147,148,119,149,119,150,151,152,153,154,147,119,119,119,119,119,119,119,119,119,119,155,119,156,152,157,158,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,159,160,152,121,116,119,116,116,116,116,116,116,116,116,161,116,116,116,116,116,116,116,116,162,116,116,163,116,164,116,116,116,165,166,119,121,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,167,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,168,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,169,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,170,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,171,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,167,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,116,116,116,116,116,116,172,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,116,116,116,116,173,116,116,116,116,116,116,116,174,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,175,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,176,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,167,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,116,177,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,116,116,116,116,167,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,178,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,116,179,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,117,119,119,119,119,119,119,119,119,119,119,119,119,119,119,116,116,116,116,116,116,116,116,116,116,118,119,119,119,119,117,119,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,116,119,116,116,116,116,116,116,116,116,116,116,116,171,116,116,116,116,116,116,116,116,116,116,116,116,116,116,119,119,119,119,119,116,181,180,182,180,183,180,152,180,184,180,180,180,180,180,180,180,185,180,186,180,187,180,152,180,188,180,152,180,189,180,183,180,191,190,192,192,192,192,192,192,192,192,192,194,192,194,194,194,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,194,192,192,192,192,192,192,192,195,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,192,196,192,192,193,192,193,193,193,197,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,192,192,192,192,192,193,198,192,192,192,192,192,192,192,192,192,192,200,192,200,200,200,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,200,192,192,192,192,192,192,192,201,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,192,202,192,192,199,192,199,199,199,203,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,192,192,192,192,192,199,205,204,205,205,205,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,205,204,204,204,204,204,204,204,206,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,207,204,208,204,209,204,209,209,209,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,209,204,204,204,204,204,204,204,210,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,211,204,212,213,215,214,216,214,217,214,218,214,219,214,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,220,220,220,220,220,220,220,220,220,220,221,221,221,221,221,221,221,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,221,221,221,221,221,221,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,221,221,221,221,221,220,222,212,223,224,223,223,223,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,223,212,212,225,212,212,212,212,212,212,212,212,212,212,212,212,226,226,226,226,226,226,226,226,226,226,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,227,212,228,229,228,228,228,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,228,212,212,230,212,212,212,212,212,212,212,212,212,212,212,212,231,231,231,231,231,231,231,231,231,231,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,232,212,234,235,234,234,234,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,234,233,233,236,233,233,233,233,233,233,233,233,233,233,233,233,237,237,237,237,237,237,237,237,237,237,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,238,233,240,241,240,240,240,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,240,239,239,242,239,239,239,239,239,239,239,239,239,239,239,239,243,243,243,243,243,243,243,243,243,243,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,244,239,240,245,240,240,240,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,240,239,239,242,239,239,239,239,239,239,239,239,239,239,239,239,243,243,243,243,243,243,243,243,243,243,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,244,239,224,212,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,248,248,246,248,246,248,248,246,246,248,248,248,249,248,248,250,250,250,250,250,250,250,250,250,250,248,248,248,248,248,248,248,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,246,248,246,246,247,248,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,246,246,246,248,246,247,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,248,248,248,248,248,248,248,248,248,248,246,246,246,246,246,246,246,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,246,246,246,246,248,246,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,246,246,246,246,246,248,251,248,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,248,246,251,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,253,246,246,246,246,254,246,246,246,246,246,255,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,222,246,246,246,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,246,246,246,246,252,256,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,246,246,246,255,246,252,258,258,258,258,258,258,258,258,258,258,259,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,257,257,257,257,257,257,257,257,257,257,258,258,258,258,258,258,258,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,258,258,258,258,257,258,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,258,258,258,258,258,257,261,260,264,263,259,258,264,265,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,253,246,246,246,246,254,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,246,246,246,246,252,256,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,246,246,246,246,246,252,267,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,264,266,264,267,268,269,269,269,268,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,268,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,270,269,268,271,271,271,268,271,271,271,271,271,272,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,268,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,273,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,274,271,268,271,271,271,268,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,268,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,275,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,274,271,268,276,276,276,268,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,268,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,277,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,278,276,268,279,279,279,268,279,279,279,279,279,280,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,268,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,281,279,268,279,279,279,268,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,268,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,281,279,268,269,269,269,268,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,268,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,282,269,268,283,283,283,268,283,283,283,283,283,284,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,268,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,285,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,286,283,283,283,283,283,283,287,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,288,283,268,283,283,283,268,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,268,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,288,283,289,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,290,268,290,268,268,291,291,291,268,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,268,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,292,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,293,291,268,271,271,271,268,271,271,271,271,271,272,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,268,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,275,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,274,271,268,294,294,294,268,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,268,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,295,295,295,295,295,295,295,295,295,295,294,294,294,294,294,294,294,295,295,295,295,295,295,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,295,295,295,295,295,295,294,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,297,212,212,212,212,212,212,212,212,212,212,212,212,212,212,296,296,296,296,296,296,296,296,296,296,298,212,212,299,212,297,212,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,212,212,212,212,296,212,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,212,212,212,212,212,296,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,297,246,246,246,246,246,246,246,246,246,246,246,246,246,246,296,296,296,296,296,296,296,296,296,296,298,246,246,299,246,297,246,296,296,296,296,296,296,300,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,246,246,246,246,296,246,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,246,246,246,246,246,296,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,297,246,246,246,246,246,246,246,246,246,246,246,246,246,246,296,296,296,296,296,296,296,296,296,296,298,246,246,299,246,297,246,296,296,296,296,296,296,296,296,301,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,246,246,246,246,296,246,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,246,246,246,246,246,296,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,297,246,246,246,246,246,246,246,246,246,246,246,246,246,246,296,296,296,296,296,296,296,296,296,296,298,246,246,299,246,297,246,296,296,296,296,296,296,296,296,296,296,296,296,296,302,296,296,296,296,296,296,296,296,296,296,296,296,246,246,246,246,296,246,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,246,246,246,246,246,296,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,297,246,246,246,246,246,246,246,246,246,246,246,246,246,246,296,296,296,296,296,296,296,296,296,296,298,246,246,299,246,297,246,296,296,296,302,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,246,246,246,246,296,246,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,246,246,246,246,246,296,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,305,303,303,303,303,303,303,303,303,303,303,303,303,303,303,304,304,304,304,304,304,304,304,304,304,306,303,303,303,303,305,303,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,303,303,303,303,304,303,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,303,303,303,303,303,304,306,303,303,307,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,309,309,309,309,309,309,309,309,309,309,308,308,308,308,308,308,308,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,308,308,308,308,309,308,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,308,308,308,308,308,309,311,310,311,310,310,312,312,312,312,312,312,312,312,312,312,310,312,312,312,312,312,312,312,312,312,312,310,313,313,313,313,313,313,313,313,313,313,310,315,315,315,315,315,315,315,315,315,315,314,316,316,316,316,316,316,316,316,316,316,314,318,317,319,317,320,317,321,317,323,322,324,322,325,322,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,326,326,326,326,326,326,326,326,326,326,308,308,308,308,308,308,308,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,308,308,308,308,326,308,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,308,308,308,308,308,326,327,314,328,329,328,328,328,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,328,314,314,330,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,331,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,332,314,333,334,333,333,333,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,333,314,314,335,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,336,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,337,314,339,340,339,339,339,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,339,338,338,341,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,342,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,343,338,345,346,345,345,345,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,345,344,344,347,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,348,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,349,344,345,346,345,345,345,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,345,344,344,347,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,350,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,349,344,345,351,345,345,345,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,345,344,344,347,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,348,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,349,344,352,314,329,314,354,355,354,354,354,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,354,353,353,356,353,353,357,353,353,353,353,353,353,353,358,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,359,353,361,355,361,361,361,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,361,360,360,356,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,359,360,364,363,366,365,367,362,368,362,369,353,371,370,370,370,371,370,370,370,370,372,373,372,372,372,370,370,370,370,370,370,370,370,370,370,370,370,371,370,370,370,370,370,372,370,370,374,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,375,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,376,370,370,377,370,372,378,372,372,372,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,372,378,379,380,381,382,383,385,384,387,388,387,387,387,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,387,386,373,384,389,384,391,390,390,390,391,390,390,390,390,392,393,392,392,392,390,390,390,390,390,390,390,390,390,390,390,390,391,390,390,390,390,390,392,390,390,394,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,395,390,392,396,392,392,392,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,392,396,398,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,399,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,400,397,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,13,13,13,13,13,13,13,13,13,13,401,401,401,401,401,401,401,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,401,401,401,401,13,401,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,401,401,401,401,401,13,16,16,16,16,16,16,16,16,16,16,401,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,13,13,13,13,13,13,13,13,13,13,402,402,402,402,402,402,402,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,402,402,402,402,17,402,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,402,402,402,402,402,17,405,404,404,404,405,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,405,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,406,406,406,406,406,406,406,406,404,404,404,404,404,404,404,404,404,404,404,407,404,404,404,404,404,404,404,404,404,408,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,409,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,410,404,404,411,404,412,413,415,415,415,415,415,415,415,415,414,416,416,416,416,416,416,416,416,414,414,417,417,42,42,42,417,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,417,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,418,42,419,420,421,421,42,42,42,421,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,421,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,422,42,41,421,423,424,425,425,27,27,27,425,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,425,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,426,27,427,427,427,427,427,427,427,427,427,427,425,425,425,425,425,425,425,427,427,427,427,427,427,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,427,427,427,427,427,427,425,429,429,429,429,429,429,429,429,429,429,428,428,428,428,428,428,428,429,429,429,429,429,429,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,429,429,429,429,429,429,428,428,430,430,430,430,430,430,430,430,430,430,421,421,421,421,421,421,421,430,430,430,430,430,430,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,430,430,430,430,430,430,421,432,432,432,432,432,432,432,432,432,432,431,431,431,431,431,431,431,432,432,432,432,432,432,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,432,432,432,432,432,432,431,431,421,20,20,20,421,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,421,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,433,20,417,27,27,27,417,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,417,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,29,27,417,434,434,434,417,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,417,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,435,434,436,437,437,434,434,434,437,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,437,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,438,434,439,439,439,439,439,439,439,439,439,439,437,437,437,437,437,437,437,439,439,439,439,439,439,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,439,439,439,439,439,439,437,441,441,441,441,441,441,441,441,441,441,440,440,440,440,440,440,440,441,441,441,441,441,441,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,441,441,441,441,441,441,440,440,437,20,20,20,437,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,437,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,433,20,442,437,437,27,27,27,437,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,437,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,29,27,444,444,444,444,444,444,444,444,444,444,443,443,443,443,443,443,443,444,444,444,444,444,444,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,444,444,444,444,444,444,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,445,443,446,446,446,446,446,446,446,446,446,446,443,443,443,443,443,443,443,446,446,446,446,446,446,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,446,446,446,446,446,446,443,447,447,447,447,447,447,447,447,447,447,443,443,443,443,443,443,443,447,447,447,447,447,447,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,447,447,447,447,447,447,443,448,448,448,448,448,448,448,448,448,448,443,443,443,443,443,443,443,448,448,448,448,448,448,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,448,448,448,448,448,448,443,449,452,451,451,451,452,451,451,451,451,453,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,452,451,451,451,451,451,453,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,454,454,454,454,454,454,454,454,454,454,451,451,451,451,451,451,451,454,454,454,454,454,454,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,454,454,454,454,454,454,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,455,451,452,451,451,451,452,451,451,451,451,450,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,452,451,451,451,451,451,450,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,456,456,456,456,456,456,456,456,456,456,451,451,451,451,451,451,451,456,456,456,456,456,456,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,456,456,456,456,456,456,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,457,451,450,452,456,456,456,452,456,456,456,456,450,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,452,456,456,456,456,456,450,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,450,456,458,452,459,459,459,452,459,459,459,459,453,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,459,459,459,459,453,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,454,454,454,454,454,454,454,454,454,454,459,459,459,459,459,459,459,454,454,454,454,454,454,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,454,454,454,454,454,454,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,450,459,452,459,459,459,452,459,459,459,459,450,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,459,459,459,459,450,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,456,456,456,456,456,456,456,456,456,456,459,459,459,459,459,459,459,456,456,456,456,456,456,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,456,456,456,456,456,456,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,452,459,459,459,452,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,461,461,461,461,461,461,461,461,461,461,459,459,459,459,459,459,459,461,461,461,461,461,461,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,461,461,461,461,461,461,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,462,459,452,459,459,459,452,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,454,454,454,454,454,454,454,454,454,454,459,459,459,459,459,459,459,454,454,454,454,454,454,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,454,454,454,454,454,454,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,462,459,463,452,459,459,459,452,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,464,464,464,464,464,464,464,464,464,464,459,459,459,459,459,459,459,464,464,464,464,464,464,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,464,464,464,464,464,464,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,462,459,452,459,459,459,452,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,465,465,465,465,465,465,465,465,465,465,459,459,459,459,459,459,459,465,465,465,465,465,465,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,465,465,465,465,465,465,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,462,459,452,459,459,459,452,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,466,466,466,466,466,466,466,466,466,466,459,459,459,459,459,459,459,466,466,466,466,466,466,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,466,466,466,466,466,466,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,462,459,452,459,459,459,452,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,467,467,467,467,467,467,467,467,467,467,459,459,459,459,459,459,459,467,467,467,467,467,467,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,467,467,467,467,467,467,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,462,459,452,459,459,459,452,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,459,459,459,459,460,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,468,468,468,468,468,468,468,468,468,468,459,459,459,459,459,459,459,468,468,468,468,468,468,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,468,468,468,468,468,468,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,462,459,452,459,459,459,452,459,459,459,459,450,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,452,459,459,459,459,459,450,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,468,468,468,468,468,468,468,468,468,468,459,459,459,459,459,459,459,468,468,468,468,468,468,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,468,468,468,468,468,468,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,450,459,469,470,472,472,472,472,472,472,472,472,472,472,471,471,471,471,471,471,471,472,472,472,472,472,472,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,472,472,472,472,472,472,471,471,474,473,473,473,474,473,473,473,473,473,475,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,474,473,473,473,473,473,473,473,473,476,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,477,473,479,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,480,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,481,478,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,48,48,48,48,48,48,48,48,48,48,482,482,482,482,482,482,482,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,482,482,482,482,48,482,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,482,482,482,482,482,48,51,51,51,51,51,51,51,51,51,51,482,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,48,48,48,48,48,48,48,48,48,48,483,483,483,483,483,483,483,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,483,483,483,483,52,483,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,483,483,483,483,483,52,486,485,485,485,486,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,486,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,487,487,487,487,487,487,487,487,485,485,485,485,485,485,485,485,485,485,485,488,485,485,485,485,485,485,485,485,485,489,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,490,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,491,485,485,492,485,493,494,496,496,496,496,496,496,496,496,495,497,497,497,497,497,497,497,497,495,495,498,498,77,77,77,498,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,498,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,499,77,500,501,502,502,77,77,77,502,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,502,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,503,77,76,502,504,505,506,506,62,62,62,506,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,506,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,507,62,508,508,508,508,508,508,508,508,508,508,506,506,506,506,506,506,506,508,508,508,508,508,508,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,508,508,508,508,508,508,506,510,510,510,510,510,510,510,510,510,510,509,509,509,509,509,509,509,510,510,510,510,510,510,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,510,510,510,510,510,510,509,509,511,511,511,511,511,511,511,511,511,511,502,502,502,502,502,502,502,511,511,511,511,511,511,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,511,511,511,511,511,511,502,513,513,513,513,513,513,513,513,513,513,512,512,512,512,512,512,512,513,513,513,513,513,513,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,513,513,513,513,513,513,512,512,502,55,55,55,502,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,502,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,514,55,498,62,62,62,498,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,498,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,498,515,515,515,498,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,498,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,516,515,517,518,518,515,515,515,518,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,518,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,519,515,520,520,520,520,520,520,520,520,520,520,518,518,518,518,518,518,518,520,520,520,520,520,520,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,520,520,520,520,520,520,518,522,522,522,522,522,522,522,522,522,522,521,521,521,521,521,521,521,522,522,522,522,522,522,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,522,522,522,522,522,522,521,521,518,55,55,55,518,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,518,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,514,55,523,518,518,62,62,62,518,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,518,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,525,525,525,525,525,525,525,525,525,525,524,524,524,524,524,524,524,525,525,525,525,525,525,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,525,525,525,525,525,525,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,526,524,527,527,527,527,527,527,527,527,527,527,524,524,524,524,524,524,524,527,527,527,527,527,527,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,527,527,527,527,527,527,524,528,528,528,528,528,528,528,528,528,528,524,524,524,524,524,524,524,528,528,528,528,528,528,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,528,528,528,528,528,528,524,529,529,529,529,529,529,529,529,529,529,524,524,524,524,524,524,524,529,529,529,529,529,529,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,529,529,529,529,529,529,524,530,533,532,532,532,533,532,532,532,532,534,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,533,532,532,532,532,532,534,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,535,535,535,535,535,535,535,535,535,535,532,532,532,532,532,532,532,535,535,535,535,535,535,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,535,535,535,535,535,535,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,536,532,533,532,532,532,533,532,532,532,532,531,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,533,532,532,532,532,532,531,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,537,537,537,537,537,537,537,537,537,537,532,532,532,532,532,532,532,537,537,537,537,537,537,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,537,537,537,537,537,537,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,538,532,531,533,537,537,537,533,537,537,537,537,531,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,533,537,537,537,537,537,531,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,531,537,539,533,540,540,540,533,540,540,540,540,534,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,540,540,540,540,534,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,535,535,535,535,535,535,535,535,535,535,540,540,540,540,540,540,540,535,535,535,535,535,535,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,535,535,535,535,535,535,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,531,540,533,540,540,540,533,540,540,540,540,531,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,540,540,540,540,531,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,537,537,537,537,537,537,537,537,537,537,540,540,540,540,540,540,540,537,537,537,537,537,537,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,537,537,537,537,537,537,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,533,540,540,540,533,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,542,542,542,542,542,542,542,542,542,542,540,540,540,540,540,540,540,542,542,542,542,542,542,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,542,542,542,542,542,542,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,543,540,533,540,540,540,533,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,535,535,535,535,535,535,535,535,535,535,540,540,540,540,540,540,540,535,535,535,535,535,535,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,535,535,535,535,535,535,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,543,540,544,533,540,540,540,533,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,545,545,545,545,545,545,545,545,545,545,540,540,540,540,540,540,540,545,545,545,545,545,545,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,545,545,545,545,545,545,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,543,540,533,540,540,540,533,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,546,546,546,546,546,546,546,546,546,546,540,540,540,540,540,540,540,546,546,546,546,546,546,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,546,546,546,546,546,546,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,543,540,533,540,540,540,533,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,547,547,547,547,547,547,547,547,547,547,540,540,540,540,540,540,540,547,547,547,547,547,547,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,547,547,547,547,547,547,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,543,540,533,540,540,540,533,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,548,548,548,548,548,548,548,548,548,548,540,540,540,540,540,540,540,548,548,548,548,548,548,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,548,548,548,548,548,548,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,543,540,533,540,540,540,533,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,540,540,540,540,541,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,549,549,549,549,549,549,549,549,549,549,540,540,540,540,540,540,540,549,549,549,549,549,549,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,549,549,549,549,549,549,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,543,540,533,540,540,540,533,540,540,540,540,531,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,533,540,540,540,540,540,531,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,549,549,549,549,549,549,549,549,549,549,540,540,540,540,540,540,540,549,549,549,549,549,549,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,549,549,549,549,549,549,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,531,540,550,551,553,553,553,553,553,553,553,553,553,553,552,552,552,552,552,552,552,553,553,553,553,553,553,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,553,553,553,553,553,553,552,552,555,554,554,554,555,554,554,554,554,556,557,556,556,556,554,554,554,554,554,554,554,554,554,554,554,554,555,554,554,554,554,554,556,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,558,554,556,559,556,556,556,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,556,559,560,561,561,561,560,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,560,561,563,562,562,562,563,562,562,562,562,562,564,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,563,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,565,562,566,567,567,567,566,567,567,567,567,567,568,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567,566,567,570,569,569,569,570,569,569,569,569,569,571,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,570,569,569,569,569,569,569,569,569,572,569,574,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,575,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,576,573,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,83,83,83,83,83,83,83,83,83,83,577,577,577,577,577,577,577,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,577,577,577,577,83,577,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,577,577,577,577,577,83,86,86,86,86,86,86,86,86,86,86,577,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,83,83,83,83,83,83,83,83,83,83,578,578,578,578,578,578,578,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,578,578,578,578,87,578,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,578,578,578,578,578,87,580,579,579,579,580,579,579,579,579,579,581,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,580,579,583,582,582,582,583,582,582,582,582,584,585,584,584,584,582,582,582,582,582,582,582,582,582,582,582,582,583,582,582,582,582,582,584,582,582,586,582,584,587,584,584,584,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,584,587,589,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,590,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,591,588,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,90,90,90,90,90,90,90,90,90,90,592,592,592,592,592,592,592,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,592,592,592,592,90,592,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,592,592,592,592,592,90,93,93,93,93,93,93,93,93,93,93,592,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,90,90,90,90,90,90,90,90,90,90,593,593,593,593,593,593,593,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,593,593,593,593,94,593,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,593,593,593,593,593,94,595,594,594,594,595,594,594,594,594,596,597,596,596,596,594,594,594,594,594,594,594,594,594,594,594,594,595,594,594,594,594,594,596,594,596,598,596,596,596,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,596,598,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,599,599,599,599,599,599,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,599,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,601,601,601,601,601,601,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,601,602,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,603,98,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,96,96,96,96,96,96,96,96,96,96,604,604,604,604,604,604,604,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,604,604,604,604,96,604,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,604,604,604,604,604,96,100,100,100,100,100,100,100,100,100,100,604,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,101,101,101,101,101,101,101,101,101,101,605,605,605,605,605,605,605,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,605,605,605,605,101,605,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,605,605,605,605,605,101,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,103,103,103,103,103,103,103,103,103,103,606,606,606,606,606,606,606,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,606,606,606,606,103,606,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,606,606,606,606,606,103,608,609,609,609,608,609,609,609,609,610,611,610,610,610,609,609,609,609,609,609,609,609,609,609,609,609,608,609,609,609,609,609,610,612,609,613,614,615,616,609,609,609,617,618,609,618,609,619,609,609,609,609,609,609,609,609,609,609,620,609,621,622,623,609,609,624,625,624,624,626,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,627,628,609,619,629,619,630,631,632,633,634,635,607,607,636,607,607,607,637,638,639,607,607,640,641,642,643,607,644,607,645,607,609,646,609,618,609,607,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,648,647,647,647,647,647,647,647,647,647,647,647,647,647,647,607,607,607,607,607,607,607,607,607,607,647,647,647,648,647,648,647,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,647,647,647,647,607,647,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,647,647,647,647,647,607,610,649,610,610,610,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,610,649,650,619,651,651,619,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,619,651,652,653,654,655,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,105,105,656,105,656,105,105,656,656,105,105,105,658,105,105,659,659,659,659,659,659,659,659,659,659,105,105,105,105,105,105,105,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,656,105,656,656,657,105,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,656,656,656,105,656,657,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,657,657,657,657,657,657,657,657,657,657,660,660,660,660,660,660,660,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,660,660,660,660,657,660,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,660,660,660,660,660,657,659,659,659,659,659,659,659,659,659,659,660,661,651,619,651,619,651,619,651,663,662,619,664,651,619,651,665,619,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,619,656,619,651,619,619,651,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,648,647,647,647,647,647,647,647,647,647,647,647,647,647,647,624,624,624,624,624,624,624,624,624,624,647,647,647,648,647,648,647,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,647,647,647,647,624,647,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,647,647,647,647,647,624,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,648,666,666,666,666,666,666,666,666,666,666,666,666,666,666,624,624,624,624,624,624,624,624,624,624,666,666,666,648,666,648,666,624,624,624,624,667,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,624,666,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,666,624,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,648,666,666,666,666,666,666,666,666,666,666,666,666,666,666,624,624,624,624,624,624,624,624,624,624,666,666,666,648,666,648,666,624,624,624,624,624,624,668,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,624,666,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,666,624,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,648,666,666,666,666,666,666,666,666,666,666,666,666,666,666,624,624,624,624,624,624,624,624,624,624,666,666,666,648,666,648,666,624,624,624,624,624,624,624,624,669,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,624,666,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,666,624,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,648,666,666,666,666,666,666,666,666,666,666,666,666,666,666,624,624,624,624,624,624,624,624,624,624,666,666,666,648,666,648,666,624,624,624,624,624,624,624,624,624,624,624,624,624,670,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,624,666,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,666,624,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,648,666,666,666,666,666,666,666,666,666,666,666,666,666,666,624,624,624,624,624,624,624,624,624,624,666,666,666,648,666,648,666,624,624,624,624,624,624,624,624,624,624,624,624,624,671,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,624,666,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,666,624,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,648,666,666,666,666,666,666,666,666,666,666,666,666,666,666,624,624,624,624,624,624,624,624,624,624,666,666,666,648,666,648,666,624,624,624,670,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,624,666,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,666,666,666,666,666,624,665,656,611,656,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,673,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,674,675,607,607,607,607,607,676,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,677,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,678,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,679,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,680,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,681,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,682,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,683,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,684,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,685,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,686,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,687,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,683,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,688,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,687,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,689,607,690,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,691,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,692,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,685,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,685,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,693,607,607,607,607,607,607,607,607,607,607,607,607,694,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,695,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,696,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,685,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,697,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,698,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,685,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,699,607,607,607,607,607,607,607,607,607,607,700,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,701,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,685,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,702,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,692,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,703,607,607,607,607,607,607,607,607,607,685,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,704,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,648,705,705,705,705,705,705,705,705,705,705,705,705,705,705,607,607,607,607,607,607,607,607,607,607,705,705,705,648,705,648,705,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,705,705,705,705,607,705,607,607,607,607,607,607,607,607,706,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,705,705,705,705,705,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,707,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,708,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,709,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,710,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,711,607,712,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,713,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,685,607,607,607,714,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,685,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,685,607,607,607,607,607,607,607,607,607,607,607,607,607,607,715,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,716,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,701,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,717,607,607,607,607,607,607,607,607,607,607,607,607,607,639,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,699,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,685,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,685,607,607,607,607,607,607,607,685,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,718,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,719,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,720,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,701,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,721,607,607,607,722,607,607,607,607,607,723,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,723,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,685,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,685,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,724,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,725,607,607,607,607,607,607,607,607,607,607,607,607,607,607,726,727,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,685,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,728,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,701,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,729,607,607,730,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,685,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,696,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,731,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,732,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,714,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,733,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,639,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,734,607,607,607,607,607,607,607,607,607,728,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,696,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,607,607,735,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,736,607,607,607,607,607,607,607,737,607,607,607,607,607,607,607,738,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,714,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,702,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,722,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,739,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,696,607,607,607,720,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,740,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,741,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,648,672,672,672,672,672,672,672,672,672,672,672,672,672,672,607,607,607,607,607,607,607,607,607,607,672,672,672,648,672,648,672,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,607,672,607,607,607,607,607,607,607,607,607,607,607,690,607,607,607,607,607,607,607,607,607,607,607,607,607,607,672,672,672,672,672,607,619,651,743,744,744,744,743,744,744,744,744,745,744,745,745,745,744,744,744,744,744,744,744,744,744,744,744,744,743,744,744,744,744,744,745,744,744,746,744,744,744,744,744,744,744,744,744,744,747,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,744,748,744,744,742,744,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,744,744,744,744,744,742,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,110,749,749,749,749,749,749,749,749,749,749,749,749,749,749,109,109,109,109,109,109,109,109,109,109,111,749,749,749,749,110,749,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,749,749,749,749,109,749,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,749,749,749,749,749,109,745,750,745,745,745,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,745,750,751,752,753,754,755,749,756,749,757,759,760,760,760,759,760,760,760,760,761,762,761,761,761,760,760,760,760,760,760,760,760,760,760,760,760,759,760,760,760,760,760,761,763,760,764,760,765,766,760,760,760,767,768,760,768,760,765,760,760,760,760,760,760,760,760,760,760,760,760,769,770,771,760,760,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,773,774,760,765,758,765,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,760,775,760,768,760,758,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,777,776,776,776,776,776,776,776,776,776,776,776,776,776,776,758,758,758,758,758,758,758,758,758,758,776,776,776,776,776,777,776,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,776,776,776,776,758,776,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,776,776,776,776,776,758,779,778,780,761,781,761,761,761,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,761,781,782,765,783,783,765,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,765,783,784,785,786,787,765,783,765,783,765,783,765,788,783,765,783,790,765,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,765,789,765,783,765,765,783,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,777,791,791,791,791,791,791,791,791,791,791,791,791,791,791,772,772,772,772,772,772,772,772,772,772,791,791,791,791,791,777,791,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,791,791,791,791,772,791,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,791,791,791,791,791,772,790,789,762,789,765,783,793,792,792,792,793,792,792,792,792,794,795,794,794,794,792,792,792,792,792,792,792,792,792,792,792,792,793,792,792,792,792,792,794,792,792,796,792,121,797,792,798,792,799,121,152,800,154,121,792,792,792,792,792,792,792,792,792,792,801,792,802,152,803,804,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,152,805,152,121,792,792,792,792,792,792,792,792,792,792,806,792,792,792,792,792,792,792,792,807,792,792,808,792,809,792,792,792,165,166,792,121,792,810,810,810,810,810,810,810,810,810,794,810,794,794,794,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,794,810,810,810,810,147,148,810,149,810,150,151,152,153,154,147,810,810,810,810,810,810,810,810,810,810,155,810,156,152,157,158,810,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,159,160,152,121,116,810,116,116,116,116,116,116,116,116,161,116,116,116,116,116,116,116,116,162,116,116,163,116,164,116,116,116,165,166,810,121,810,116,811,812,812,812,811,812,812,812,812,152,813,152,152,152,812,812,812,812,812,812,812,812,812,812,812,812,811,812,812,812,812,812,152,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,152,812,152,813,152,152,152,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,152,115,115,115,115,115,121,115,115,115,115,115,115,115,152,115,115,115,115,115,115,115,115,115,115,115,115,115,115,152,115,152,813,152,152,152,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,152,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,152,115,814,152,813,152,152,152,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,152,815,815,815,815,815,815,815,815,815,816,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,152,815,152,813,152,152,152,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,152,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,152,152,115,817,811,152,811,819,818,821,822,821,821,821,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,821,820,823,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,117,811,811,811,811,811,811,811,811,811,811,811,811,811,811,116,116,116,116,116,116,116,116,116,116,118,811,811,811,811,117,811,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,811,811,811,811,116,811,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,811,811,811,811,811,116,824,152,813,152,152,152,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,152,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,152,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,121,811,825,826,827,828,829,830,152,813,152,152,152,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,152,811,811,811,811,811,811,811,811,811,121,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,152,811,152,818,121,831,121,831,832,833,832,832,832,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,832,820,834,831,835,835,835,835,835,835,835,835,835,124,835,124,124,124,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,124,835,835,835,835,125,126,835,127,835,128,129,130,131,132,125,835,835,835,835,835,835,835,835,835,835,133,835,134,130,135,136,835,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,137,138,130,139,123,835,123,123,123,123,123,123,123,123,140,123,123,123,123,123,123,123,123,141,123,123,142,123,143,123,123,123,144,145,835,139,835,123,152,831,836,831,837,831,838,831,839,191,191,191,839,191,191,191,191,840,191,840,840,840,191,191,191,191,191,191,191,191,191,191,191,191,839,191,191,191,191,191,840,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,191,841,191,191,193,191,193,193,193,197,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,191,191,191,191,191,193,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,842,190,190,190,190,190,190,190,190,190,190,190,190,190,190,193,193,193,193,193,193,193,193,193,193,191,190,190,190,190,842,190,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,190,190,190,190,193,190,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,190,190,190,190,190,193,843,843,843,843,843,843,843,843,843,194,843,194,194,194,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,194,843,843,843,843,843,843,843,195,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,843,196,843,843,193,843,193,193,193,197,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,843,843,843,843,843,193,844,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,842,843,843,843,843,843,843,843,843,843,843,843,843,843,843,193,193,193,193,193,193,193,193,193,193,191,843,843,843,843,842,843,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,843,843,843,843,193,843,193,193,193,193,193,193,193,193,193,193,193,193,193,193,845,193,193,193,193,193,193,193,193,193,193,193,843,843,843,843,843,193,198,843,847,846,846,846,847,846,846,846,846,848,846,848,848,848,846,846,846,846,846,846,846,846,846,846,846,846,847,846,846,846,846,846,848,846,846,849,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,850,846,846,846,846,846,846,846,851,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,852,846,848,853,848,848,848,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,848,853,854,855,856,857,859,858,860,861,858,862,864,865,865,865,864,865,865,865,865,866,867,866,866,866,865,865,865,865,865,865,865,865,865,865,865,865,864,865,865,865,865,865,866,865,865,868,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,865,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,865,869,865,865,863,865,863,863,863,863,863,863,863,863,870,863,863,863,863,863,863,863,863,871,863,863,872,863,873,863,863,863,865,865,865,865,865,863,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,863,863,863,863,863,863,863,863,863,863,874,874,874,874,874,874,874,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,874,874,874,874,863,874,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,874,874,874,874,874,863,866,875,866,866,866,875,875,875,875,875,875,875,875,875,875,875,875,875,875,875,875,875,875,866,875,876,877,878,879,880,882,881,883,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,885,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,886,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,887,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,888,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,889,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,885,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,863,863,863,863,863,863,890,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,863,863,863,863,891,863,863,863,863,863,863,863,892,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,893,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,894,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,885,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,863,895,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,863,863,863,863,885,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,896,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,863,897,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,884,884,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,863,884,863,863,863,863,863,863,863,863,863,863,863,889,863,863,863,863,863,863,863,863,863,863,863,863,863,863,884,884,884,884,884,863,899,222,222,222,899,222,222,222,222,900,901,900,900,900,222,222,222,222,222,222,222,222,222,222,222,222,899,222,222,222,222,222,900,902,222,903,222,904,905,222,906,222,907,908,222,909,910,911,222,222,222,222,222,222,222,222,222,222,912,222,913,914,915,916,222,917,918,917,917,919,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,920,921,222,922,923,222,924,925,926,927,928,929,898,898,930,898,898,898,931,932,933,898,898,934,935,936,937,898,938,898,939,898,940,941,222,922,222,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,946,945,945,947,945,948,950,951,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,952,949,954,953,955,956,957,900,958,900,900,900,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,900,958,960,959,962,963,962,962,962,961,961,961,961,961,961,961,961,961,961,961,961,961,961,961,961,961,961,962,961,222,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,222,964,965,966,967,968,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,969,969,969,969,969,969,969,969,969,969,970,970,970,970,970,970,970,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,970,970,970,970,970,970,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,970,970,970,970,970,969,973,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,222,972,974,976,975,975,975,975,975,975,975,975,975,975,975,975,975,975,975,975,975,975,222,975,222,212,223,224,223,223,223,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,223,972,972,225,972,972,972,972,972,972,972,972,972,972,972,972,226,226,226,226,226,226,226,226,226,226,972,972,972,222,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,227,972,240,241,240,240,240,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,240,239,239,242,239,239,239,239,239,239,239,239,239,239,239,239,243,243,243,243,243,243,243,243,243,243,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,244,239,223,224,223,223,223,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,223,972,972,225,972,972,972,972,972,972,972,972,972,972,972,972,226,226,226,226,226,226,226,226,226,226,972,972,972,222,222,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,227,972,978,964,980,979,982,981,964,983,983,983,964,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,964,983,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,985,986,964,987,248,988,986,964,964,989,990,964,990,964,248,964,964,964,964,964,964,964,964,964,964,991,964,992,993,994,964,995,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,996,964,964,248,984,248,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,964,997,964,998,964,984,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,1e3,999,999,999,999,999,999,999,999,999,999,999,999,999,999,984,984,984,984,984,984,984,984,984,984,999,999,999,1001,999,1e3,999,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,999,999,999,999,984,999,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,984,999,999,999,999,999,984,1003,1002,1004,1006,1007,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1008,1005,1010,1011,1009,1012,1013,1014,1015,248,999,999,1016,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,248,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,247,247,247,247,247,247,247,247,247,247,999,999,999,999,999,999,999,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,999,999,999,999,247,999,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,999,999,999,999,999,247,250,250,250,250,250,250,250,250,250,250,999,1017,999,248,999,248,999,248,1018,999,248,999,248,999,248,248,999,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1021,1021,1021,1021,1021,1021,1021,1021,1021,1021,1019,1019,1019,1019,1019,1019,1022,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1019,1019,1019,1019,1020,1019,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1019,1019,1019,1019,1019,1020,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1023,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1027,1027,1027,1027,1027,1027,1027,1027,1027,1027,1025,1025,1025,1025,1025,1025,1025,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1026,1025,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1025,1025,1025,1025,1025,1026,1017,999,1016,999,1028,1029,964,1030,263,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,264,253,265,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,264,254,264,267,222,964,922,222,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,222,964,222,973,964,1034,1033,1033,1033,1034,1033,1033,1033,1033,1035,1036,1035,1035,1035,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1034,1033,1033,1033,1033,1033,1035,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1033,1038,1033,1033,1037,1033,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1037,1033,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1039,1039,1039,1039,1040,1039,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1039,1039,1039,1039,1039,1040,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1041,1041,1041,1041,1041,1041,1041,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1041,1041,1041,1041,1042,1041,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1042,1041,1041,1041,1041,1041,1042,1045,1044,1044,1044,1045,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1045,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1046,1046,1046,1046,1046,1046,1046,1046,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1047,1044,1044,1044,1044,1044,1044,1044,1044,1044,1048,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1049,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1044,1050,1044,1044,1051,1044,1052,1053,1055,1055,1055,1055,1055,1055,1055,1055,1054,1056,1056,1056,1056,1056,1056,1056,1056,1054,1054,1057,1057,291,291,291,1057,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,1057,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,292,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,1058,291,1059,1060,1061,1061,291,291,291,1061,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,1061,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,292,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,1062,291,290,1061,1063,1064,1065,1065,276,276,276,1065,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,1065,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,277,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,1066,276,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1065,1065,1065,1065,1065,1065,1065,1067,1067,1067,1067,1067,1067,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1067,1067,1067,1067,1067,1067,1065,1069,1069,1069,1069,1069,1069,1069,1069,1069,1069,1068,1068,1068,1068,1068,1068,1068,1069,1069,1069,1069,1069,1069,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1069,1069,1069,1069,1069,1069,1068,1068,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1061,1061,1061,1061,1061,1061,1061,1070,1070,1070,1070,1070,1070,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1061,1070,1070,1070,1070,1070,1070,1061,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1071,1071,1071,1071,1071,1071,1071,1072,1072,1072,1072,1072,1072,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1072,1072,1072,1072,1072,1072,1071,1071,1061,269,269,269,1061,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,1061,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,1073,269,1057,276,276,276,1057,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,1057,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,277,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,278,276,1057,1074,1074,1074,1057,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1057,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1075,1074,1076,1077,1077,1074,1074,1074,1077,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1077,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1074,1078,1074,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1077,1077,1077,1077,1077,1077,1077,1079,1079,1079,1079,1079,1079,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1077,1079,1079,1079,1079,1079,1079,1077,1081,1081,1081,1081,1081,1081,1081,1081,1081,1081,1080,1080,1080,1080,1080,1080,1080,1081,1081,1081,1081,1081,1081,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1081,1081,1081,1081,1081,1081,1080,1080,1077,269,269,269,1077,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,1077,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,1073,269,1082,1077,1077,276,276,276,1077,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,1077,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,277,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,278,276,1084,1084,1084,1084,1084,1084,1084,1084,1084,1084,1083,1083,1083,1083,1083,1083,1083,1084,1084,1084,1084,1084,1084,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1084,1084,1084,1084,1084,1084,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1085,1083,1086,1086,1086,1086,1086,1086,1086,1086,1086,1086,1083,1083,1083,1083,1083,1083,1083,1086,1086,1086,1086,1086,1086,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1086,1086,1086,1086,1086,1086,1083,1087,1087,1087,1087,1087,1087,1087,1087,1087,1087,1083,1083,1083,1083,1083,1083,1083,1087,1087,1087,1087,1087,1087,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1087,1087,1087,1087,1087,1087,1083,1088,1088,1088,1088,1088,1088,1088,1088,1088,1088,1083,1083,1083,1083,1083,1083,1083,1088,1088,1088,1088,1088,1088,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1088,1088,1088,1088,1088,1088,1083,1089,1092,1091,1091,1091,1092,1091,1091,1091,1091,1093,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1092,1091,1091,1091,1091,1091,1093,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1094,1094,1094,1094,1094,1094,1094,1094,1094,1094,1091,1091,1091,1091,1091,1091,1091,1094,1094,1094,1094,1094,1094,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1094,1094,1094,1094,1094,1094,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1095,1091,1092,1091,1091,1091,1092,1091,1091,1091,1091,1090,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1092,1091,1091,1091,1091,1091,1090,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1091,1091,1091,1091,1091,1091,1091,1096,1096,1096,1096,1096,1096,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1096,1096,1096,1096,1096,1096,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1097,1091,1090,1092,1096,1096,1096,1092,1096,1096,1096,1096,1090,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1092,1096,1096,1096,1096,1096,1090,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1090,1096,1098,1092,1099,1099,1099,1092,1099,1099,1099,1099,1093,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1093,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1100,1100,1100,1100,1100,1100,1100,1100,1100,1100,1099,1099,1099,1099,1099,1099,1099,1100,1100,1100,1100,1100,1100,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1100,1100,1100,1100,1100,1100,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1090,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1090,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1090,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1099,1099,1099,1099,1099,1099,1099,1096,1096,1096,1096,1096,1096,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1096,1096,1096,1096,1096,1096,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1102,1102,1102,1102,1102,1102,1102,1102,1102,1102,1099,1099,1099,1099,1099,1099,1099,1102,1102,1102,1102,1102,1102,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1102,1102,1102,1102,1102,1102,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1100,1100,1100,1100,1100,1100,1100,1100,1100,1100,1099,1099,1099,1099,1099,1099,1099,1100,1100,1100,1100,1100,1100,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1100,1100,1100,1100,1100,1100,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1104,1092,1099,1099,1099,1092,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1105,1105,1105,1105,1105,1105,1105,1105,1105,1105,1099,1099,1099,1099,1099,1099,1099,1105,1105,1105,1105,1105,1105,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1105,1105,1105,1105,1105,1105,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1106,1106,1106,1106,1106,1106,1106,1106,1106,1106,1099,1099,1099,1099,1099,1099,1099,1106,1106,1106,1106,1106,1106,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1106,1106,1106,1106,1106,1106,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1099,1099,1099,1099,1099,1099,1099,1107,1107,1107,1107,1107,1107,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1107,1107,1107,1107,1107,1107,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1108,1108,1108,1108,1108,1108,1108,1108,1108,1108,1099,1099,1099,1099,1099,1099,1099,1108,1108,1108,1108,1108,1108,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1108,1108,1108,1108,1108,1108,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1101,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1090,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1090,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1090,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1111,1111,1111,1111,1111,1111,1111,1111,1111,1111,1099,1099,1099,1099,1099,1099,1099,1111,1111,1111,1111,1111,1111,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1111,1111,1111,1111,1111,1111,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1112,1112,1112,1112,1112,1112,1112,1112,1112,1112,1099,1099,1099,1099,1099,1099,1099,1112,1112,1112,1112,1112,1112,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1112,1112,1112,1112,1112,1112,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1099,1099,1099,1099,1099,1099,1099,1113,1113,1113,1113,1113,1113,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1113,1113,1113,1113,1113,1113,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1090,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1114,1114,1114,1114,1114,1114,1114,1114,1114,1114,1099,1099,1099,1099,1099,1099,1099,1114,1114,1114,1114,1114,1114,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1114,1114,1114,1114,1114,1114,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1090,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1115,1115,1115,1115,1115,1115,1115,1115,1115,1115,1099,1099,1099,1099,1099,1099,1099,1115,1115,1115,1115,1115,1115,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1115,1115,1115,1115,1115,1115,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1090,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1099,1099,1099,1099,1099,1099,1099,1116,1116,1116,1116,1116,1116,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1116,1116,1116,1116,1116,1116,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1090,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1099,1099,1099,1099,1099,1099,1099,1117,1117,1117,1117,1117,1117,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1117,1117,1117,1117,1117,1117,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1090,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1090,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1099,1099,1099,1099,1099,1099,1099,1118,1118,1118,1118,1118,1118,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1118,1118,1118,1118,1118,1118,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1119,1119,1119,1119,1119,1119,1119,1119,1119,1119,1099,1099,1099,1099,1099,1099,1099,1119,1119,1119,1119,1119,1119,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1119,1119,1119,1119,1119,1119,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1120,1120,1120,1120,1120,1120,1120,1120,1120,1120,1099,1099,1099,1099,1099,1099,1099,1120,1120,1120,1120,1120,1120,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1120,1120,1120,1120,1120,1120,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1121,1121,1121,1121,1121,1121,1121,1121,1121,1121,1099,1099,1099,1099,1099,1099,1099,1121,1121,1121,1121,1121,1121,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1121,1121,1121,1121,1121,1121,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1092,1099,1099,1099,1092,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1092,1099,1099,1099,1099,1099,1110,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1109,1109,1109,1109,1109,1109,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1103,1099,1122,1123,1125,1125,1125,1125,1125,1125,1125,1125,1125,1125,1124,1124,1124,1124,1124,1124,1124,1125,1125,1125,1125,1125,1125,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1125,1125,1125,1125,1125,1125,1124,1124,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,297,212,212,212,212,212,212,212,212,212,212,212,212,212,212,296,296,296,296,296,296,296,296,296,296,298,212,212,299,212,297,212,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,212,212,212,212,296,212,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,212,212,212,212,212,296,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,297,964,964,964,964,964,964,964,964,964,964,964,964,964,964,296,296,296,296,296,296,296,296,296,296,298,964,964,299,964,297,964,296,296,296,296,1126,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,964,964,964,964,296,964,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,964,964,964,964,964,296,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,297,964,964,964,964,964,964,964,964,964,964,964,964,964,964,296,296,296,296,296,296,296,296,296,296,298,964,964,299,964,297,964,296,296,296,296,296,296,296,296,296,296,296,296,296,1127,296,296,296,296,296,296,296,296,296,296,296,296,964,964,964,964,296,964,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,964,964,964,964,964,296,1128,1129,964,959,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,1130,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,1131,1132,898,898,898,898,898,1133,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,1134,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,1135,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1136,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,1137,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,1138,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,1139,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,1140,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,1141,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,1142,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,297,212,212,212,212,212,212,212,212,212,212,212,212,212,212,898,898,898,898,898,898,898,898,898,898,298,212,212,299,212,297,212,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,212,212,212,212,898,212,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,212,212,212,212,212,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,1143,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,1144,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,1140,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,1145,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,1144,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,1146,898,1147,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,1148,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,1149,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1142,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,1142,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1150,898,898,898,898,898,898,898,898,898,898,898,898,1151,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,1152,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,1153,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,1142,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1154,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,1155,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,1142,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,1156,898,898,898,898,898,898,898,898,898,898,1157,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1158,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1142,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,1159,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1149,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1160,898,898,898,898,898,898,898,898,898,1142,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,1142,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,1161,898,1162,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1163,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1142,898,898,898,1160,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,1142,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1164,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1165,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1158,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,1166,898,898,898,898,898,898,898,898,898,898,898,898,898,933,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,1156,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1142,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,1167,898,898,898,898,898,898,898,1142,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1168,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,1169,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1170,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,1158,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1171,898,898,898,1172,898,898,898,898,898,1173,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1173,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1142,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,1142,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1174,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,1175,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1176,1177,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1142,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,1178,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1179,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1180,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1183,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1184,1181,1181,1185,1181,1183,1181,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1181,1181,1181,1181,1182,1181,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1181,1181,1181,1181,1181,1182,950,1186,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,952,949,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1187,898,898,1188,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1142,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1153,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1189,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1190,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,1160,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1191,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,933,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,1192,898,898,898,898,898,898,898,898,898,1193,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1153,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1158,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,1194,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,1195,898,898,898,898,898,898,898,1196,898,898,898,898,898,898,898,1197,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1160,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1198,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1199,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,1167,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,1200,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,1167,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,1201,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1153,898,898,898,1202,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,1203,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1167,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,1204,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,1205,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,942,942,942,942,942,942,942,942,942,943,942,943,943,943,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,943,297,942,942,942,942,942,942,942,942,942,942,942,942,942,942,898,898,898,898,898,898,898,898,898,898,298,942,942,299,942,297,942,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,944,942,942,898,942,898,898,898,898,898,898,898,898,898,898,898,1147,898,898,898,898,898,898,898,898,898,898,898,898,898,898,942,942,942,942,942,898,1206,222,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,1207,964,1209,1208,1208,1208,1209,1208,1208,1208,1208,1210,1211,1210,1210,1210,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1209,1208,1208,1208,1208,1208,1210,1208,1208,1212,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1213,1208,1210,1214,1210,1210,1210,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1214,1210,1214,1215,1216,1217,1218,1219,1221,1220,1222,1224,1225,1225,1225,1224,1225,1225,1225,1225,1226,1227,1226,1226,1226,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1224,1225,1225,1225,1225,1225,1226,1225,1228,1229,1225,1225,1225,1228,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1225,1230,1225,1225,1223,1225,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1223,1225,1225,1225,1225,1225,1223,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,305,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,304,304,304,304,304,304,304,304,304,304,306,1231,1231,1231,1231,305,1231,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,1231,1231,1231,1231,304,1231,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,1231,1231,1231,1231,1231,304,1226,1232,1226,1226,1226,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1226,1232,1233,1234,1235,1236,1237,1238,1231,1239,1241,1242,1242,1242,1241,1242,1242,1242,1242,1243,1244,1243,1243,1243,1242,1242,1242,1242,1242,1242,1242,1242,1242,1242,1242,1242,1241,1242,1242,1242,1242,1242,1243,1245,1246,1247,1248,1249,1250,1246,1251,1252,1253,1249,1254,1255,1256,1249,1257,1258,1258,1258,1258,1258,1258,1258,1258,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1266,1266,1268,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1269,1270,1271,1249,1272,1246,1273,1274,1275,1276,1277,1278,1240,1240,1279,1240,1240,1240,1280,1281,1282,1240,1240,1283,1284,1285,1286,1240,1287,1240,1288,1240,1289,1290,1291,1292,1242,1240,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,1293,314,314,314,314,314,314,314,314,314,314,314,314,314,314,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,314,314,314,314,314,1293,314,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,314,314,314,314,1240,314,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,314,314,314,314,314,1240,1295,1294,1296,1243,1297,1243,1243,1243,1297,1297,1297,1297,1297,1297,1297,1297,1297,1297,1297,1297,1297,1297,1297,1297,1297,1297,1243,1297,1298,1300,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1300,1299,1301,1302,1303,1304,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,309,309,1305,309,1305,309,309,1305,1305,309,309,309,1306,309,309,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,309,309,309,309,309,309,309,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,1305,309,1305,1305,326,309,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,1305,1305,1305,309,1305,326,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,1308,326,326,326,326,326,326,326,326,326,326,1308,1308,1308,1308,1308,1308,1308,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,1308,1308,1308,1308,326,1308,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,1308,1308,1308,1308,1308,326,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1308,1309,314,1249,1310,1310,1310,1310,1310,1310,1310,1311,1310,1310,1310,1310,1310,1310,1310,1310,1310,1310,1310,1310,1310,1310,1309,1310,1312,1313,1249,1314,1314,1314,1314,1314,1314,1314,1314,1314,1314,1314,1314,1314,1314,1314,1314,1314,1314,1309,1314,1309,1315,1310,1317,1316,313,313,313,313,313,313,313,313,313,313,1316,1319,1318,1320,1318,313,313,313,313,313,313,313,313,313,313,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1322,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1323,1321,1321,1321,1321,1321,1322,1321,312,312,312,312,312,312,312,312,312,312,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,311,1321,1325,1324,1326,1326,1326,1326,1326,1326,1326,1326,1326,1326,1324,1324,1324,1324,1324,1324,1324,1324,1327,1324,1328,1329,1324,1324,1324,1324,1324,1324,1324,1324,1324,1330,1324,1324,1324,1324,1324,1324,1324,1324,1331,1324,1324,1324,1324,1324,1324,1332,1324,1324,1327,1324,1328,1329,1324,1324,1324,1333,1324,1324,1324,1324,1324,1330,1324,1324,1334,1324,1324,1324,1324,1324,1331,1324,315,315,315,315,315,315,315,315,315,315,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1336,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1337,1335,1335,1335,1335,1335,1336,1335,1335,1335,1338,1335,1335,1335,1335,1335,1335,1335,1335,1339,1335,1340,314,1340,314,314,316,316,316,316,316,316,316,316,316,316,314,316,316,316,316,316,316,316,316,316,316,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,1340,1341,1341,1341,1341,1341,1341,1341,1341,1341,1342,1341,1344,1343,1345,1347,1346,1346,1346,1348,1346,1349,1350,1326,1326,1326,1326,1326,1326,1326,1326,1326,1326,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1332,1324,1324,1324,1324,1324,1324,1324,1324,1324,1333,1324,1324,1324,1324,1324,1324,1324,1324,1334,1324,1351,1351,1351,1351,1351,1351,1351,1351,1351,1351,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1324,1352,1324,1324,1324,1324,1324,1324,1324,1324,1324,1333,1324,1324,1324,1324,1324,1324,1324,1324,1334,1324,1354,1354,1354,1354,1354,1354,1354,1354,1354,1354,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1355,1353,1353,1353,1353,1353,1353,1353,1353,1353,1356,1353,1353,1353,1353,1353,1353,1353,1353,1357,1353,1354,1354,1354,1354,1354,1354,1354,1354,1354,1354,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1358,1353,1353,1353,1353,1353,1353,1353,1353,1353,1356,1353,1353,1353,1353,1353,1353,1353,1353,1357,1353,1356,1353,1353,1353,1353,1353,1353,1353,1353,1357,1353,1360,1359,1361,1363,1362,1362,1362,1364,1362,1366,1365,1367,1368,1370,1370,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1369,1371,1369,1369,1369,1369,1369,1369,1369,1369,1369,1372,1369,1369,1369,1369,1369,1369,1369,1369,1373,1369,1374,1374,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1375,1353,1353,1353,1353,1353,1353,1353,1353,1353,1356,1353,1353,1353,1353,1353,1353,1353,1353,1357,1353,1374,1374,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1358,1353,1353,1353,1353,1353,1353,1353,1353,1353,1356,1353,1353,1353,1353,1353,1353,1353,1353,1357,1353,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1378,1376,1376,1376,1376,1376,1376,1376,1376,1376,1379,1376,1376,1376,1376,1376,1376,1376,1376,1380,1376,1382,1382,1382,1382,1382,1382,1382,1382,1382,1382,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1383,1381,1381,1381,1381,1381,1381,1381,1381,1381,1384,1381,1381,1381,1381,1381,1381,1381,1381,1385,1381,1387,1387,1387,1387,1387,1387,1387,1387,1387,1387,1386,1386,1386,1386,1386,1386,1386,1387,1387,1387,1387,1387,1387,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1388,1386,1387,1387,1387,1387,1387,1387,1386,1386,1389,1386,1386,1386,1386,1386,1386,1386,1386,1390,1386,1391,1391,1391,1391,1391,1391,1391,1391,1391,1391,1353,1353,1353,1353,1353,1353,1353,1391,1391,1391,1391,1391,1391,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1392,1353,1391,1391,1391,1391,1391,1391,1353,1353,1356,1353,1353,1353,1353,1353,1353,1353,1353,1357,1353,1391,1391,1391,1391,1391,1391,1391,1391,1391,1391,1353,1353,1353,1353,1353,1353,1353,1391,1391,1391,1391,1391,1391,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1358,1353,1391,1391,1391,1391,1391,1391,1353,1353,1356,1353,1353,1353,1353,1353,1353,1353,1353,1357,1353,1394,1393,1395,1395,1395,1395,1395,1395,1395,1395,1395,1395,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1396,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1397,1393,1393,1393,1393,1393,1396,1393,1393,1393,1398,1393,1393,1393,1393,1393,1393,1393,1393,1399,1393,1400,1400,1400,1400,1400,1400,1400,1400,1400,1400,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1393,1401,1393,1393,1393,1393,1393,1393,1393,1393,1393,1398,1393,1393,1393,1393,1393,1393,1393,1393,1399,1393,1402,1353,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1404,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1405,1353,1353,1353,1353,1353,1404,1353,1353,1353,1356,1353,1353,1353,1353,1353,1353,1353,1353,1357,1353,1403,1403,1403,1403,1403,1403,1403,1403,1403,1403,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1358,1353,1353,1353,1353,1353,1353,1353,1353,1353,1356,1353,1353,1353,1353,1353,1353,1353,1353,1357,1353,1311,1318,1249,1406,1310,1300,1310,1407,1408,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1318,1300,1318,1300,1310,1300,1249,1310,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,1305,326,326,326,326,326,326,326,326,326,326,1305,1305,1305,1305,1305,1305,1409,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,1305,1305,1305,1305,326,1305,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,1305,1305,1305,1305,1305,326,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,1293,314,314,314,314,314,314,314,314,314,314,314,314,314,314,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1410,314,314,314,314,1293,314,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,314,314,314,314,1266,314,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,314,314,314,314,314,1266,1411,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1293,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1410,1412,1412,1412,1412,1293,1412,1266,1266,1266,1266,1413,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1266,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1412,1266,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1293,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1410,1412,1412,1412,1412,1293,1412,1266,1266,1266,1266,1266,1266,1414,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1266,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1412,1266,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1293,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1410,1412,1412,1412,1412,1293,1412,1266,1266,1266,1266,1266,1266,1266,1266,1415,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1266,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1412,1266,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1293,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1410,1412,1412,1412,1412,1293,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1416,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1266,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1412,1266,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1293,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1410,1412,1412,1412,1412,1293,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1417,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1266,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1412,1266,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1293,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1410,1412,1412,1412,1412,1293,1412,1266,1266,1266,1416,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1266,1412,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1266,1412,1412,1412,1412,1412,1266,1418,1420,1419,1421,1422,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1424,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1425,1426,1240,1240,1240,1240,1240,1427,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1428,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1429,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1430,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1431,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1432,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1433,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1434,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1435,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1436,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1437,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1438,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1439,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1440,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1441,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1442,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1438,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1443,1240,1444,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1445,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1446,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1447,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1448,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1449,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1450,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1451,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1452,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1448,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1453,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1454,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1455,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1456,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1457,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1458,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1448,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1459,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1460,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1461,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1462,1462,1462,1462,1462,1462,1462,1462,1462,328,329,328,328,328,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,328,1293,1462,330,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1462,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1462,1462,331,1462,1462,1293,1462,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1462,332,1462,1462,1240,1462,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1462,1462,1462,1462,1462,1240,345,346,345,345,345,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,345,344,344,347,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,350,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,349,344,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1464,1240,1240,1240,1240,1240,1240,1240,1240,1240,1465,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1466,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1293,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1467,1467,1467,1467,1467,1293,1467,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1467,1467,1467,1467,1240,1467,1240,1240,1240,1240,1240,1240,1240,1240,1468,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1467,1467,1467,1467,1467,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1469,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1470,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1471,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1472,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1473,1240,1474,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1475,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1448,1240,1240,1240,1476,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1448,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1441,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1477,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1478,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1458,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1479,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1282,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1480,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1481,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1441,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1448,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1482,1240,1240,1240,1240,1240,1240,1240,1448,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1483,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1484,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1485,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1458,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1486,1240,1240,1240,1487,1240,1240,1240,1240,1240,1488,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1489,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1455,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1441,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1490,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1491,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1492,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1493,1494,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1441,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1495,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1496,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1482,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1497,1240,1240,1498,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1441,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1499,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1455,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1500,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1501,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1502,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1441,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1503,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1504,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1490,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1505,1240,1240,1240,1240,1240,1240,1240,1240,1240,1506,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1452,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1481,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1507,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1508,1240,1240,1240,1240,1240,1240,1240,1509,1240,1240,1240,1240,1240,1240,1240,1510,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1511,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1447,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1512,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1513,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1482,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1514,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1482,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1515,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1452,1240,1240,1240,1516,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1517,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1482,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1518,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1519,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1520,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1293,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1293,1423,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1240,1423,1240,1240,1240,1490,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,1423,1423,1423,1423,1423,1240,1521,1309,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1299,1249,1299,1522,1524,1523,1524,1524,1524,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1524,1523,1523,1525,1523,1523,1526,1523,1523,1523,1523,1523,1523,1523,358,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1523,1527,1523,354,355,354,354,354,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,354,1528,1528,356,1528,1528,357,1528,1528,1528,1528,1528,1528,1528,358,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,359,1528,361,1529,361,361,361,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,361,1529,1529,356,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,359,1529,1531,1530,1533,1532,364,363,369,1528,367,1528,1535,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1536,1534,1535,1534,1535,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1538,1534,1535,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1539,1534,1535,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1534,1540,1534,1542,1540,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_trans_targs"),self.$private("_lex_trans_targs","_lex_trans_targs=")}(Opal.get_singleton_class(self)),$send(self,"_lex_trans_targs=",$to_a($writer=[[187,2,3,4,193,6,7,8,9,10,187,187,196,199,196,12,200,201,14,196,208,209,212,213,225,222,214,215,216,19,217,218,219,227,229,230,234,235,236,231,25,18,210,211,27,259,260,262,264,262,30,265,266,32,262,273,274,277,278,290,287,279,280,281,37,282,283,284,292,294,295,299,300,301,296,43,36,275,276,45,324,325,332,334,332,48,335,336,50,338,341,338,52,342,343,54,349,348,0,56,350,351,58,352,353,353,353,353,466,61,62,63,466,65,466,495,66,67,495,495,499,499,71,66,72,497,498,500,501,499,495,502,503,505,68,69,506,507,70,499,73,74,79,86,509,510,72,497,498,500,501,499,495,502,503,505,68,69,506,507,70,73,74,79,86,509,510,508,75,76,77,78,80,81,84,82,83,85,87,88,495,90,91,92,94,97,95,96,98,100,526,526,526,527,102,529,103,530,104,527,102,529,103,530,564,105,564,106,107,105,564,106,564,564,564,110,111,112,113,575,564,564,564,116,117,118,564,121,116,117,118,564,121,119,119,117,118,585,120,119,119,117,118,585,120,117,564,602,564,123,603,609,127,618,619,132,133,127,128,617,128,617,564,129,130,131,620,134,564,634,635,638,639,651,648,640,641,642,139,643,644,645,653,655,656,660,661,662,657,145,138,636,637,147,698,699,149,566,108,568,151,152,701,803,154,155,156,803,811,811,811,159,833,832,811,835,837,811,164,165,166,841,811,168,169,852,821,874,172,173,174,178,179,172,173,174,178,179,175,175,173,174,176,177,175,175,173,174,176,177,922,173,811,991,180,993,182,186,994,184,991,181,991,183,993,183,993,185,993,991,187,187,188,189,190,192,194,195,187,187,187,191,187,191,187,1,187,187,187,5,196,196,197,196,198,202,196,196,11,13,196,196,196,196,203,204,205,15,21,26,237,28,196,196,196,206,207,196,16,196,196,196,17,196,196,196,20,220,196,221,223,196,224,226,228,22,196,196,23,232,196,233,24,196,238,242,239,240,241,196,196,243,244,247,249,258,245,246,196,248,250,252,251,196,253,254,255,256,257,196,196,196,261,262,262,262,263,267,262,29,31,262,262,262,262,268,269,270,33,39,44,302,46,262,262,262,271,272,262,34,262,262,262,35,262,262,262,38,285,262,286,288,262,289,291,293,40,262,262,41,297,262,298,42,262,303,307,304,305,306,262,262,308,309,312,314,323,310,311,262,313,315,317,316,262,318,319,320,321,322,262,262,262,326,327,327,328,327,329,327,327,327,330,330,330,331,330,330,330,332,332,332,333,332,47,49,332,332,332,337,337,337,338,338,339,338,340,338,338,51,53,338,338,338,344,344,345,344,344,346,347,346,55,57,348,348,348,354,353,353,355,356,357,358,360,363,364,365,366,353,367,368,370,372,373,374,378,380,381,382,398,403,410,415,422,429,432,433,437,431,441,449,453,455,460,462,465,353,353,353,353,353,353,359,353,359,353,361,59,362,353,60,353,353,369,371,353,375,376,377,373,379,353,383,384,393,396,385,386,387,388,389,390,391,392,354,394,395,397,399,402,400,401,404,407,405,406,408,409,411,413,412,414,416,417,353,418,419,420,421,353,423,426,424,425,427,428,430,434,435,436,438,440,439,442,443,444,446,445,447,448,450,451,452,454,456,457,458,459,461,463,464,467,466,466,468,469,471,472,466,466,466,470,466,470,64,473,466,475,474,474,478,479,480,481,474,483,484,485,486,488,490,491,492,493,494,474,476,474,477,474,474,474,474,474,482,474,482,487,474,489,474,495,495,496,511,512,498,514,515,502,516,517,518,519,520,522,523,524,525,495,495,495,495,495,495,499,504,495,495,495,495,495,495,495,495,495,513,495,513,495,495,495,495,521,495,89,93,99,526,528,531,101,526,526,527,532,532,533,534,536,538,539,532,532,535,532,535,532,537,532,532,532,541,540,540,542,543,544,546,548,549,554,561,540,540,540,540,545,540,545,540,547,540,540,541,550,551,552,553,555,556,559,557,558,560,562,563,565,564,573,574,576,577,579,580,581,582,584,586,587,590,591,616,622,623,624,701,702,703,704,705,583,707,724,729,736,741,743,749,752,753,757,751,761,772,776,779,787,791,794,795,564,105,106,564,108,567,564,564,569,571,572,564,570,564,564,564,564,564,109,564,564,564,564,564,578,564,578,564,564,114,564,115,564,564,583,564,588,564,589,564,564,564,592,601,564,122,604,605,606,564,607,124,610,611,125,614,615,564,593,595,564,594,564,564,596,599,600,564,597,598,564,564,564,564,564,564,608,564,602,612,613,564,612,564,602,612,126,621,564,564,564,625,564,564,564,626,628,564,627,564,627,564,629,630,631,135,141,146,663,148,564,564,564,632,633,564,136,564,564,564,137,564,564,564,140,646,564,647,649,564,650,652,654,142,564,564,143,658,564,659,144,564,664,668,665,666,667,564,564,669,670,673,684,697,671,672,564,674,675,676,678,677,564,679,680,681,682,683,685,692,686,687,688,689,690,691,693,694,695,696,564,564,564,700,150,153,564,706,708,709,719,722,710,711,712,713,714,715,716,717,718,720,721,723,725,728,726,727,730,733,731,732,734,735,737,739,738,740,742,744,746,745,747,748,750,718,754,755,756,758,760,759,762,763,764,769,765,766,767,564,565,566,108,768,571,770,771,773,774,775,777,778,780,781,782,785,783,784,786,788,789,790,792,793,564,583,796,796,797,798,799,801,796,796,796,800,796,800,796,802,796,804,803,803,805,806,803,807,809,803,803,803,803,808,803,808,810,803,812,811,811,815,816,817,811,818,820,823,824,825,826,827,811,828,829,834,862,866,811,867,869,871,811,872,873,875,879,881,882,884,885,903,908,915,923,930,937,942,943,947,941,952,962,968,971,980,984,988,989,990,823,813,811,814,811,811,811,811,811,811,819,811,819,811,157,822,811,811,811,811,811,811,811,811,811,830,811,831,811,811,158,160,811,161,843,854,857,836,858,859,844,848,850,811,836,161,838,840,162,811,838,811,839,811,811,163,842,811,811,845,847,811,845,846,848,850,847,811,849,811,811,851,853,811,167,811,811,811,855,847,848,850,855,856,811,845,847,848,850,811,845,847,848,850,811,860,847,848,850,860,861,811,161,862,836,863,848,850,864,847,161,864,836,865,868,870,811,170,171,811,811,876,877,878,873,880,811,811,883,811,811,811,886,887,896,901,888,889,890,891,892,893,894,895,812,897,898,899,900,812,902,904,907,905,906,812,812,909,912,910,911,913,914,812,916,918,917,919,920,921,811,811,924,812,925,811,926,927,928,929,813,931,934,932,933,935,936,938,939,940,812,944,945,946,948,950,951,949,812,953,954,955,958,956,957,959,960,961,963,965,964,966,967,969,970,972,973,975,978,974,976,977,979,981,982,983,985,986,987,811,811,991,992,996,997,998,991,991,991,995,991,991,1e3,999,1001,999,1002,1003,1004,999,999]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_trans_actions"),self.$private("_lex_trans_actions","_lex_trans_actions=")}(Opal.get_singleton_class(self)),$send(self,"_lex_trans_actions=",$to_a($writer=[[1,0,0,0,0,0,0,0,0,0,2,3,4,0,5,0,0,0,0,6,0,7,0,8,0,0,7,0,0,0,0,8,0,7,0,8,0,7,7,0,0,0,0,0,0,0,0,9,0,10,0,0,0,0,11,0,7,0,8,0,0,7,0,0,0,0,8,0,7,0,8,0,7,7,0,0,0,0,0,0,0,0,12,0,13,0,0,0,0,14,0,15,0,0,0,0,0,16,0,0,0,0,0,0,17,18,19,20,21,0,0,0,22,0,23,24,0,0,25,26,27,28,29,30,30,31,32,30,33,32,34,32,30,30,31,30,35,30,30,36,30,30,30,30,30,30,0,37,38,0,39,38,40,38,0,0,37,0,41,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,43,44,45,46,0,0,0,46,29,47,30,30,30,47,48,0,49,0,29,30,50,30,51,52,53,0,0,0,0,0,54,55,56,0,29,0,57,0,30,58,30,59,30,60,61,62,61,63,61,0,64,65,64,66,64,67,68,0,69,0,0,0,0,70,70,0,0,71,71,72,0,29,73,0,0,0,70,0,74,0,7,0,8,0,0,7,0,0,0,0,8,0,7,0,8,0,7,7,0,0,0,0,0,0,0,0,0,75,0,0,0,0,75,76,0,0,0,77,78,79,80,0,7,7,81,82,82,83,0,0,0,0,84,0,0,0,0,0,0,29,0,0,0,30,58,30,30,30,60,61,62,61,61,61,0,64,65,64,64,64,85,67,86,87,0,88,0,89,89,0,90,0,91,60,92,0,93,29,94,95,98,99,0,29,0,7,0,7,100,101,102,60,103,0,104,0,105,106,107,0,108,109,0,110,7,7,111,112,0,0,113,114,115,116,117,117,117,117,117,117,117,117,118,119,120,0,0,121,0,122,123,124,0,125,126,127,0,0,128,0,0,129,0,7,0,0,130,131,0,0,132,0,29,133,0,0,0,0,0,134,135,0,0,0,0,0,0,0,136,0,0,0,0,137,0,0,0,0,0,138,139,140,0,141,142,143,7,7,144,0,0,145,146,147,148,117,117,117,117,117,117,117,117,149,150,151,0,0,152,0,153,154,155,0,156,157,158,0,0,159,0,0,160,0,7,0,0,161,162,0,0,163,0,29,164,0,0,0,0,0,165,166,0,0,0,0,0,0,0,167,0,0,0,0,168,0,0,0,0,0,169,170,171,0,172,173,0,174,0,175,176,177,178,179,180,0,181,182,183,184,185,186,7,187,0,0,188,189,190,191,192,193,194,195,0,196,7,197,198,0,0,199,200,201,202,203,0,204,205,206,0,207,0,0,208,209,210,211,212,213,0,29,0,0,7,7,0,0,0,214,0,0,0,0,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,217,218,219,220,221,60,222,0,223,0,0,0,224,0,225,226,0,0,227,0,0,0,228,0,229,0,0,0,0,0,0,0,0,0,0,0,0,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,0,0,0,0,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,232,233,0,0,7,0,234,235,236,60,237,0,0,29,238,0,239,240,0,29,0,0,241,0,0,0,0,0,0,0,0,0,0,242,0,243,0,244,245,246,247,248,60,249,0,0,250,0,251,252,253,254,29,0,28,0,0,28,0,0,0,0,0,0,7,7,7,255,256,257,258,259,260,261,0,262,263,264,265,266,267,268,269,270,60,271,0,272,273,274,275,276,277,0,0,0,278,7,7,0,279,280,281,282,283,0,0,0,0,0,284,285,60,286,0,287,29,288,289,290,291,292,293,0,29,0,0,0,0,0,0,294,295,296,297,60,298,0,299,29,300,301,302,0,0,0,0,0,0,0,0,0,0,0,0,303,304,0,8,0,0,7,305,0,0,305,305,0,0,7,306,0,306,0,306,306,306,0,0,306,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,0,0,307,308,308,309,310,0,311,312,0,75,0,313,0,314,315,316,317,318,30,319,320,321,322,323,60,324,0,325,326,0,327,0,328,329,305,330,0,331,0,332,333,334,0,0,335,0,0,0,0,336,0,0,0,0,0,0,0,337,0,0,338,0,339,340,0,0,0,341,0,0,342,343,344,345,346,347,0,348,349,349,0,350,0,351,352,352,0,0,353,354,355,0,356,357,358,0,7,359,360,361,0,362,117,117,117,117,117,117,117,117,363,364,365,0,0,366,0,367,368,369,0,370,371,372,0,0,373,0,0,374,0,7,0,0,375,376,0,0,377,0,29,378,0,0,0,0,0,379,380,0,0,0,0,0,0,0,381,0,0,0,0,0,382,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,383,384,385,0,0,0,386,29,303,303,303,303,303,303,303,303,303,303,303,303,75,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,387,303,303,303,303,303,303,303,303,303,303,303,303,388,389,390,391,392,392,388,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,393,394,395,396,0,29,0,0,397,398,399,60,400,0,401,29,402,7,403,404,0,29,405,0,0,406,407,408,409,60,410,0,29,411,412,413,414,0,29,0,415,0,7,416,0,0,0,0,417,0,0,418,418,0,419,0,0,0,420,7,421,421,421,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,422,423,424,0,425,426,427,428,429,430,60,431,0,432,0,0,433,434,435,436,437,438,439,440,441,0,442,0,443,444,0,0,445,446,447,0,0,448,0,0,447,449,449,450,451,0,452,453,0,454,455,456,0,457,458,0,0,459,460,447,447,461,0,0,462,462,0,463,0,464,465,7,0,466,0,467,468,469,470,470,471,471,0,0,472,473,473,474,474,475,476,476,477,477,478,479,479,480,480,0,0,481,482,483,484,485,486,486,483,485,487,418,488,0,0,0,489,0,0,490,491,421,421,421,492,421,493,494,29,495,496,497,0,0,0,0,0,0,0,0,0,0,0,0,498,0,0,0,0,492,0,0,0,0,0,499,500,0,0,0,0,0,0,501,0,0,0,0,0,500,502,503,0,504,0,505,0,0,0,0,506,0,0,0,0,0,0,0,0,0,507,0,0,0,0,0,0,0,506,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,508,509,510,511,511,89,511,512,513,514,0,515,516,0,517,0,518,0,0,0,519,520]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_to_state_actions"),self.$private("_lex_to_state_actions","_lex_to_state_actions=")}(Opal.get_singleton_class(self)),$send(self,"_lex_to_state_actions=",$to_a($writer=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,96,0,96,0,0,0,0,96,96,0,0,0,0,0,96,0,96,0,96,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_from_state_actions"),self.$private("_lex_from_state_actions","_lex_from_state_actions=")}(Opal.get_singleton_class(self)),$send(self,"_lex_from_state_actions=",$to_a($writer=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,97,0,97,0,0,0,0,97,97,0,0,0,0,0,97,0,97,0,97,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_eof_trans"),self.$private("_lex_eof_trans","_lex_eof_trans=")}(Opal.get_singleton_class(self)),$send(self,"_lex_eof_trans=",$to_a($writer=[[0,1,1,1,1,1,1,1,1,1,1,13,13,13,13,20,20,20,20,20,20,20,20,20,20,20,20,20,20,48,48,48,48,55,55,55,55,55,55,55,55,55,55,55,55,55,55,83,83,83,83,90,90,90,90,0,0,0,0,105,107,109,109,109,109,109,116,116,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,181,181,181,181,181,181,181,181,181,181,181,181,191,193,193,193,205,205,205,213,215,215,215,215,215,221,213,213,213,213,213,213,213,247,247,247,247,247,247,213,263,213,263,247,247,213,269,269,269,269,269,269,269,269,269,269,269,269,269,269,213,247,247,247,247,304,304,304,309,311,311,311,315,315,318,318,318,318,323,323,323,309,315,315,315,315,315,315,315,315,315,354,361,363,363,363,363,354,0,379,380,381,383,385,387,385,385,0,397,398,402,402,403,404,413,414,415,415,415,418,418,420,421,422,422,422,424,425,426,426,426,429,429,422,432,432,422,418,418,437,438,438,438,441,441,438,438,438,444,444,444,444,450,451,451,451,451,459,451,451,451,451,464,451,451,451,451,451,451,470,471,472,472,0,479,483,483,484,485,494,495,496,496,496,499,499,501,502,503,503,503,505,506,507,507,507,510,510,503,513,513,503,499,499,518,519,519,519,522,522,519,519,519,525,525,525,525,531,532,532,532,532,540,532,532,532,532,545,532,532,532,532,532,532,551,552,553,553,0,560,561,0,567,0,574,578,578,579,0,0,588,589,593,593,594,0,599,0,602,0,605,605,606,607,0,648,650,651,652,653,655,657,661,661,652,652,652,652,663,652,652,657,652,652,648,667,667,667,667,667,667,657,657,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,706,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,652,0,750,751,752,754,750,750,758,0,777,779,781,782,783,784,785,787,784,784,784,784,784,790,784,784,792,790,790,784,0,811,812,116,116,815,816,116,812,812,819,821,824,812,825,812,826,827,829,831,812,819,832,832,821,832,836,832,832,832,832,0,191,844,845,844,844,0,854,855,857,859,861,859,863,0,875,876,877,878,880,882,884,885,885,885,885,885,885,885,885,885,885,885,885,885,885,885,885,0,943,946,949,950,954,956,957,958,959,960,962,965,966,968,970,973,975,976,213,973,978,973,965,980,982,965,965,1e3,1003,1005,1006,1010,1013,1014,1015,1016,1e3,1e3,1e3,1e3,1e3,1e3,1e3,1e3,1e3,1e3,1020,1024,1026,1e3,1e3,965,1031,1032,1032,1032,965,965,965,1033,1040,1040,1042,1044,1053,1054,1055,1055,1055,1058,1058,1060,1061,1062,1062,1062,1064,1065,1066,1066,1066,1069,1069,1062,1072,1072,1062,1058,1058,1077,1078,1078,1078,1081,1081,1078,1078,1078,1084,1084,1084,1084,1090,1091,1091,1091,1091,1099,1091,1091,1091,1091,1105,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,1123,1124,1125,1125,213,965,965,1129,965,960,943,943,943,943,943,943,943,943,943,943,943,213,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,1182,950,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,943,1207,965,0,1215,1216,1217,1219,1221,1223,0,1232,1233,1234,1235,1237,1232,1240,0,315,1295,1297,1298,1299,1300,1302,1304,1306,1309,1309,315,1311,1313,1314,1315,1311,1317,1319,1319,1322,1322,1325,1336,315,1342,1344,1346,1347,1350,1351,1325,1325,1354,1354,1354,1360,1362,1363,1366,1368,1369,1370,1354,1354,1377,1382,1387,1354,1354,1394,1394,1354,1354,1319,1311,1311,1319,1311,1311,1306,315,1412,1413,1413,1413,1413,1413,1413,1419,1306,1422,1423,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1463,1464,1424,1424,1468,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1424,1522,1300,1523,0,1529,1530,1531,1533,1529,1529,1529,0,1538,1538,1538,1538,1542]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_start")}(Opal.get_singleton_class(self)),$send(self,"lex_start=",$to_a($writer=[187])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_error")}(Opal.get_singleton_class(self)),$send(self,"lex_error=",$to_a($writer=[0])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_words=",$to_a($writer=[196])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_string")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_string=",$to_a($writer=[262])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_words=",$to_a($writer=[327])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_string")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_string=",$to_a($writer=[330])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_backslash_delimited")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_backslash_delimited=",$to_a($writer=[332])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_backslash_delimited")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_backslash_delimited=",$to_a($writer=[337])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_backslash_delimited_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_backslash_delimited_words=",$to_a($writer=[338])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_backslash_delimited_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_backslash_delimited_words=",$to_a($writer=[344])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_regexp_modifiers")}(Opal.get_singleton_class(self)),$send(self,"lex_en_regexp_modifiers=",$to_a($writer=[346])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_variable")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_variable=",$to_a($writer=[348])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_fname")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_fname=",$to_a($writer=[353])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_endfn")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_endfn=",$to_a($writer=[466])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_dot")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_dot=",$to_a($writer=[474])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_arg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_arg=",$to_a($writer=[495])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_cmdarg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_cmdarg=",$to_a($writer=[526])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_endarg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_endarg=",$to_a($writer=[532])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_mid")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_mid=",$to_a($writer=[540])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_beg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_beg=",$to_a($writer=[564])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_labelarg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_labelarg=",$to_a($writer=[796])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_value")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_value=",$to_a($writer=[803])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_end")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_end=",$to_a($writer=[811])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_leading_dot")}(Opal.get_singleton_class(self)),$send(self,"lex_en_leading_dot=",$to_a($writer=[991])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_line_comment")}(Opal.get_singleton_class(self)),$send(self,"lex_en_line_comment=",$to_a($writer=[999])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_line_begin")}(Opal.get_singleton_class(self)),$send(self,"lex_en_line_begin=",$to_a($writer=[187])),$writer[$rb_minus($writer.length,1)],$const_set($nesting[0],"ESCAPES",$hash("a".$ord(),"","b".$ord(),"\b","e".$ord(),"","f".$ord(),"\f","n".$ord(),"\n","r".$ord(),"\r","s".$ord()," ","t".$ord(),"\t","v".$ord(),"\v","\\".$ord(),"\\").$freeze()),$const_set($nesting[0],"REGEXP_META_CHARACTERS",$send($$("Regexp"),"union",$to_a("\\$()*+.<>?[]^{|}".$chars())).$freeze()),self.$attr_reader("source_buffer"),self.$attr_accessor("diagnostics"),self.$attr_accessor("static_env"),self.$attr_accessor("force_utf32"),self.$attr_accessor("cond","cmdarg","in_kwarg","context","command_start"),self.$attr_accessor("tokens","comments"),self.$attr_reader("paren_nest","cmdarg_stack","cond_stack","lambda_stack"),$def(self,"$initialize",(function(version){return this.version=version,this.static_env=nil,this.context=nil,this.tokens=nil,this.comments=nil,this.$reset()}),1),$def(self,"$reset",(function(reset_state){return null==reset_state&&(reset_state=!0),$truthy(reset_state)&&(this.cs=this.$class().$lex_en_line_begin(),this.cond=$$("StackState").$new("cond"),this.cmdarg=$$("StackState").$new("cmdarg"),this.cond_stack=[],this.cmdarg_stack=[]),this.force_utf32=!1,this.source_pts=nil,this.p=0,this.ts=nil,this.te=nil,this.act=0,this.stack=[],this.top=0,this.token_queue=[],this.literal_stack=[],this.eq_begin_s=nil,this.sharp_s=nil,this.newline_s=nil,this.num_base=nil,this.num_digits_s=nil,this.num_suffix_s=nil,this.num_xfrm=nil,this.escape_s=nil,this.escape=nil,this.herebody_s=nil,this.paren_nest=0,this.lambda_stack=[],this.dedent_level=nil,this.command_start=!0,this.in_kwarg=!1,this.cs_before_block_comment=this.$class().$lex_en_line_begin()}),-1),$def(self,"$source_buffer=",(function(source_buffer){var source=nil;return this.source_buffer=source_buffer,$truthy(this.source_buffer)?(source=this.source_buffer.$source(),$eqeq(source.$encoding(),$$$($$("Encoding"),"UTF_8"))?this.source_pts=source.$unpack("U*"):this.source_pts=source.$unpack("C*"),$eqeq(this.source_pts["$[]"](0),65279)?this.p=1:nil):this.source_pts=nil}),1),$def(self,"$encoding",(function(){return this.source_buffer.$source().$encoding()}),0),$const_set($nesting[0],"LEX_STATES",$hash2(["line_begin","expr_dot","expr_fname","expr_value","expr_beg","expr_mid","expr_arg","expr_cmdarg","expr_end","expr_endarg","expr_endfn","expr_labelarg","interp_string","interp_words","plain_string","plain_words"],{line_begin:self.$lex_en_line_begin(),expr_dot:self.$lex_en_expr_dot(),expr_fname:self.$lex_en_expr_fname(),expr_value:self.$lex_en_expr_value(),expr_beg:self.$lex_en_expr_beg(),expr_mid:self.$lex_en_expr_mid(),expr_arg:self.$lex_en_expr_arg(),expr_cmdarg:self.$lex_en_expr_cmdarg(),expr_end:self.$lex_en_expr_end(),expr_endarg:self.$lex_en_expr_endarg(),expr_endfn:self.$lex_en_expr_endfn(),expr_labelarg:self.$lex_en_expr_labelarg(),interp_string:self.$lex_en_interp_string(),interp_words:self.$lex_en_interp_words(),plain_string:self.$lex_en_plain_string(),plain_words:self.$lex_en_plain_string()})),$def(self,"$state",(function(){return $$("LEX_STATES").$invert().$fetch(this.cs,this.cs)}),0),$def(self,"$state=",(function(state){return this.cs=$$("LEX_STATES").$fetch(state)}),1),$def(self,"$push_cmdarg",(function(){return this.cmdarg_stack.$push(this.cmdarg),this.cmdarg=$$("StackState").$new("cmdarg."+this.cmdarg_stack.$count())}),0),$def(self,"$pop_cmdarg",(function(){return this.cmdarg=this.cmdarg_stack.$pop()}),0),$def(self,"$push_cond",(function(){return this.cond_stack.$push(this.cond),this.cond=$$("StackState").$new("cond."+this.cond_stack.$count())}),0),$def(self,"$pop_cond",(function(){return this.cond=this.cond_stack.$pop()}),0),$def(self,"$dedent_level",(function(){var $a,dedent_level;return dedent_level=($a=[this.dedent_level,nil])[0],this.dedent_level=$a[1],dedent_level}),0),$def(self,"$advance",(function(){var $a,$b,pe,self=this,klass=nil,_lex_trans_keys=nil,_lex_key_spans=nil,_lex_index_offsets=nil,_lex_indicies=nil,_lex_trans_targs=nil,_lex_trans_actions=nil,_lex_to_state_actions=nil,_lex_from_state_actions=nil,_lex_eof_trans=nil,p=nil,eof=nil,cmd_state=nil,_slen=nil,_trans=nil,_keys=nil,_inds=nil,_goto_level=nil,$ret_or_1=nil,_wide=nil,tm=nil,heredoc_e=nil,diag_msg=nil,ident_tok=nil,ident_ts=nil,ident_te=nil,current_literal=nil,$writer=nil,line=nil,string=nil,lookahead=nil,token=nil,message=nil,escaped_char=nil,$ret_or_2=nil,unknown_options=nil,type=nil,delimiter=nil,escape=nil,ident=nil,followed_by_nl=nil,nl_emitted=nil,dots_te=nil,value=nil,digits=nil,invalid_idx=nil,invalid_s=nil,codepoints=nil,codepoint_s=nil,spaces_p=nil,codepoint=nil,new_herebody_s=nil,indent=nil,dedent_body=nil;if($truthy(self.token_queue["$any?"]()))return self.token_queue.$shift();for(_lex_trans_keys=(klass=self.$class()).$send("_lex_trans_keys"),_lex_key_spans=klass.$send("_lex_key_spans"),_lex_index_offsets=klass.$send("_lex_index_offsets"),_lex_indicies=klass.$send("_lex_indicies"),_lex_trans_targs=klass.$send("_lex_trans_targs"),_lex_trans_actions=klass.$send("_lex_trans_actions"),_lex_to_state_actions=klass.$send("_lex_to_state_actions"),_lex_from_state_actions=klass.$send("_lex_from_state_actions"),_lex_eof_trans=klass.$send("_lex_eof_trans"),pe=$rb_plus(self.source_pts.$size(),2),$a=[self.p,pe],p=$a[0],eof=$a[1],cmd_state=self.command_start,self.command_start=!1,!1,_slen=null==($a=$to_ary($b=nil))[0]?nil:$a[0],_trans=null==$a[1]?nil:$a[1],_keys=null==$a[2]?nil:$a[2],_inds=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],_goto_level=0,10,15,20,30,40;$truthy(!0);){if($truthy($rb_le(_goto_level,0))){if($eqeq(p,pe)){_goto_level=30;continue}if($eqeq(self.cs,0)){_goto_level=40;continue}}if($truthy($rb_le(_goto_level,10))&&($eqeqeq(97,$ret_or_1=_lex_from_state_actions["$[]"](self.cs))&&(self.ts=p),_keys=self.cs["$<<"](1),_inds=_lex_index_offsets["$[]"](self.cs),_slen=_lex_key_spans["$[]"](self.cs),_wide=$truthy($ret_or_1=self.source_pts["$[]"](p))?$ret_or_1:0,_trans=$truthy($rb_gt(_slen,0))&&$truthy($rb_le(_lex_trans_keys["$[]"](_keys),_wide))&&$truthy($rb_le(_wide,_lex_trans_keys["$[]"]($rb_plus(_keys,1))))?_lex_indicies["$[]"]($rb_minus($rb_plus(_inds,_wide),_lex_trans_keys["$[]"](_keys))):_lex_indicies["$[]"]($rb_plus(_inds,_slen))),$truthy($rb_le(_goto_level,15))&&(self.cs=_lex_trans_targs["$[]"](_trans),$neqeq(_lex_trans_actions["$[]"](_trans),0)))if($eqeqeq(29,$ret_or_1=_lex_trans_actions["$[]"](_trans)))self.newline_s=p;else if($eqeqeq(117,$ret_or_1))self.escape_s=p,self.escape=nil;else if($eqeqeq(30,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil);else if($eqeqeq(60,$ret_or_1))self.sharp_s=$rb_minus(p,1);else if($eqeqeq(64,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p);else if($eqeqeq(310,$ret_or_1))tm=p;else if($eqeqeq(37,$ret_or_1))tm=p;else if($eqeqeq(39,$ret_or_1))tm=p;else if($eqeqeq(41,$ret_or_1))tm=p;else if($eqeqeq(71,$ret_or_1))heredoc_e=p;else if($eqeqeq(349,$ret_or_1))tm=$rb_minus(p,1),diag_msg="ivar_name";else if($eqeqeq(352,$ret_or_1))tm=$rb_minus(p,2),diag_msg="cvar_name";else if($eqeqeq(360,$ret_or_1))self.escape=nil;else if($eqeqeq(392,$ret_or_1))tm=p;else if($eqeqeq(308,$ret_or_1))ident_tok=self.$tok(),ident_ts=self.ts,ident_te=self.te;else if($eqeqeq(479,$ret_or_1))self.num_base=16,self.num_digits_s=p;else if($eqeqeq(473,$ret_or_1))self.num_base=10,self.num_digits_s=p;else if($eqeqeq(476,$ret_or_1))self.num_base=8,self.num_digits_s=p;else if($eqeqeq(470,$ret_or_1))self.num_base=2,self.num_digits_s=p;else if($eqeqeq(485,$ret_or_1))self.num_base=10,self.num_digits_s=self.ts;else if($eqeqeq(447,$ret_or_1))self.num_base=8,self.num_digits_s=self.ts;else if($eqeqeq(462,$ret_or_1))self.num_suffix_s=p;else if($eqeqeq(455,$ret_or_1))self.num_suffix_s=p;else if($eqeqeq(452,$ret_or_1))self.num_suffix_s=p;else if($eqeqeq(89,$ret_or_1))tm=p;else if($eqeqeq(7,$ret_or_1))self.te=$rb_plus(p,1);else{if($eqeqeq(113,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(5,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(109,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(108,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(115,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(114,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(111,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else if($eqeqeq(112,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(6,$ret_or_1))p=$rb_minus(self.te,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(4,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else{if($eqeqeq(145,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(10,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(142,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(141,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(147,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(146,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(144,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(11,$ret_or_1))p=$rb_minus(self.te,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(9,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(173,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(172,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(175,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else if($eqeqeq(176,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(179,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(178,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(181,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else{if($eqeqeq(188,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(13,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(185,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(184,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(190,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(189,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(187,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(12,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(192,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(191,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else{if($eqeqeq(199,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(15,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(195,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(194,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(201,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(200,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(197,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else if($eqeqeq(198,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(14,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(203,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(202,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=796):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(205,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else{if($eqeqeq(206,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tREGEXP_OPT",self.$tok(self.ts,$rb_minus(self.te,1)),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(207,$ret_or_1)){self.te=p,p=$rb_minus(p,1),unknown_options=self.$tok().$scan(/[^imxouesn]/),$truthy(unknown_options["$any?"]())&&self.$diagnostic("error","regexp_options",$hash2(["options"],{options:unknown_options.$join()})),self.$emit("tREGEXP_OPT"),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(16,$ret_or_1)){self.te=$rb_plus(p,1),$truthy(self.$tok()["$=~"](/^\$([1-9][0-9]*)$/))?self.$emit("tNTH_REF",self.$tok($rb_plus(self.ts,1)).$to_i()):$truthy(self.$tok()["$=~"](/^\$([&`'+])$/))?self.$emit("tBACK_REF"):self.$emit("tGVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(208,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy(self.$tok()["$=~"](/^\$([1-9][0-9]*)$/))?self.$emit("tNTH_REF",self.$tok($rb_plus(self.ts,1)).$to_i()):$truthy(self.$tok()["$=~"](/^\$([&`'+])$/))?self.$emit("tBACK_REF"):self.$emit("tGVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(210,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy(self.$tok()["$=~"](/^@@[0-9]/))&&self.$diagnostic("error","cvar_name",$hash2(["name"],{name:self.$tok()})),self.$emit("tCVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(209,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy(self.$tok()["$=~"](/^@[0-9]/))&&self.$diagnostic("error","ivar_name",$hash2(["name"],{name:self.$tok()})),self.$emit("tIVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(231,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(217,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tIDENTIFIER"),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(18,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=811,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(214,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(226,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(20,$ret_or_1)){if(self.te=$rb_plus(p,1),$truthy(self["$version?"](23))){type=($b=[self.$tok()["$[]"]($range(0,-2,!1)),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(213,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(212,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(230,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(227,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT"),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(229,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(224,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=811,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(220,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(225,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(218,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(223,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(19,$ret_or_1)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(17,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(216,$ret_or_1)){if($eqeqeq(43,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(44,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tCONSTANT"),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(45,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(22,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tLABEL",self.$tok(self.ts,$rb_minus(self.te,2)),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),self.cs=796,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(233,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(232,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(235,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(234,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(21,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(241,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=495,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(240,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(239,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(251,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(242,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(247,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=495,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(245,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(250,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(274,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(257,$ret_or_1)){self.te=$rb_plus(p,1),$eqeq(self.$tok(tm,$rb_plus(tm,1)),"/".$freeze())&&($truthy($rb_lt(self.version,30))?self.$diagnostic("warning","ambiguous_literal",nil,self.$range(tm,$rb_plus(tm,1))):self.$diagnostic("warning","ambiguous_regexp",nil,self.$range(tm,$rb_plus(tm,1)))),p=$rb_minus(tm,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(263,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(25,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(265,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(tm,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(40,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(252,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(253,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(264,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(260,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$diagnostic("warning","ambiguous_prefix",$hash2(["prefix"],{prefix:self.$tok(tm,self.te)}),self.$range(tm,self.te)),p=$rb_minus(tm,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(262,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(256,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(255,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(273,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(26,$ret_or_1))p=$rb_minus(self.te,1);else{if($eqeqeq(42,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(24,$ret_or_1)){if($eqeqeq(72,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$eqeq(self.$tok(tm,$rb_plus(tm,1)),"/".$freeze())&&($truthy($rb_lt(self.version,30))?self.$diagnostic("warning","ambiguous_literal",nil,self.$range(tm,$rb_plus(tm,1))):self.$diagnostic("warning","ambiguous_regexp",nil,self.$range(tm,$rb_plus(tm,1)))),p=$rb_minus(tm,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(73,$ret_or_2)){p=$rb_minus(self.te,1),self.$diagnostic("warning","ambiguous_prefix",$hash2(["prefix"],{prefix:self.$tok(tm,self.te)}),self.$range(tm,self.te)),p=$rb_minus(tm,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(78,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}p=$rb_minus(self.te,1)}else{if($eqeqeq(44,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=495,_goto_level=20;continue}if($eqeqeq(278,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(279,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=495,_goto_level=20;continue}if($eqeqeq(45,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=495,_goto_level=20;continue}if($eqeqeq(43,$ret_or_1)){if($eqeqeq(85,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$truthy(self.cond["$active?"]())?self.$emit("kDO_COND","do".$freeze(),$rb_minus(self.te,2),self.te):self.$emit("kDO","do".$freeze(),$rb_minus(self.te,2),self.te),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(86,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=495,_goto_level=20;continue}}else{if($eqeqeq(289,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_do(!0),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(282,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(283,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(284,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(287,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(293,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(292,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(301,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(295,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(299,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(294,$ret_or_1)){if($eqeqeq(93,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(94,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=564,_goto_level=20;continue}}else{if($eqeqeq(57,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(334,$ret_or_1)){self.te=$rb_plus(p,1),type=delimiter=self.$tok()["$[]"](0).$chr(),p=$rb_minus(p,1),self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(326,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.source_buffer.$slice(self.ts).$chr(),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(55,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.$tok()["$[]"]($range(0,-2,!1)),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(347,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_minus(p,1),self.$emit("tSYMBEG",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),self.cs=353,_goto_level=20;continue}if($eqeqeq(335,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.$tok(),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(346,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),$rb_plus(self.ts,2))),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(69,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1)),self.ts),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(357,$ret_or_1)){self.te=$rb_plus(p,1),escape=$hash2([" ","\r","\n","\t","\v","\f"],{" ":"\\s","\r":"\\r","\n":"\\n","\t":"\\t","\v":"\\v","\f":"\\f"})["$[]"](self.source_buffer.$slice($rb_plus(self.ts,1))),self.$diagnostic("warning","invalid_escape_use",$hash2(["escape"],{escape:escape}),self.$range()),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(356,$ret_or_1))self.te=$rb_plus(p,1),self.$diagnostic("fatal","incomplete_escape",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(336,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(52,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),$truthy(self["$version?"](18))?(ident=self.$tok(self.ts,$rb_minus(self.te,2)),self.$emit($truthy(self.source_buffer.$slice(self.ts)["$=~"](/[A-Z]/))?"tCONSTANT":"tIDENTIFIER",ident,self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,1),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](ident))?self.cs=811:self.cs=self.$arg_or_cmdarg(cmd_state)):(self.$emit("tLABEL",self.$tok(self.ts,$rb_minus(self.te,2)),self.ts,$rb_minus(self.te,1)),self.cs=796),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(49,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tIDENTIFIER",ident_tok,ident_ts,ident_te),p=$rb_minus(ident_te,1),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](ident_tok))&&$truthy($rb_lt(self.version,25))?self.cs=466:self.cs=526,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(320,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs_before_block_comment=self.cs,self.cs=187,_goto_level=20;continue}if($eqeqeq(56,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(304,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(330,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(329,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tSTAR","*".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(325,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","string_eof",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else if($eqeqeq(354,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(337,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1)),self.ts),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(350,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te)):(self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=self.ts),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(355,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","incomplete_escape",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(361,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(327,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(331,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$emit("tBDOT2"):self.$emit("tDOT2"),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(332,$ret_or_1)){self.te=p,p=$rb_minus(p,1),followed_by_nl=$rb_minus(self.te,1)["$=="](self.newline_s),nl_emitted=!1,dots_te=$truthy(followed_by_nl)?$rb_minus(self.te,1):self.te,$truthy($rb_ge(self.version,30))?$truthy(self.lambda_stack["$any?"]())&&$eqeq($rb_plus(self.lambda_stack.$last(),1),self.paren_nest)?self.$emit("tDOT3","...".$freeze(),self.ts,dots_te):(self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te),$truthy($rb_ge(self.version,31))&&$truthy(followed_by_nl)&&$truthy(self.context["$in_def_open_args?"]())&&(self.$emit("tNL",$rb_minus(self.te,1),self.te),nl_emitted=!0)):$truthy($rb_ge(self.version,27))?self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te):self.$emit("tDOT3","...".$freeze(),self.ts,dots_te),$truthy(followed_by_nl)&&$not(nl_emitted)&&(p=$rb_minus(p,1)),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(307,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(317,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(319,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs_before_block_comment=self.cs,self.cs=187,_goto_level=20;continue}if($eqeqeq(322,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(54,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("fatal","string_eof",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else if($eqeqeq(73,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(74,$ret_or_1)){p=$rb_minus(self.te,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(48,$ret_or_1)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(53,$ret_or_1))p=$rb_minus(self.te,1);else{if($eqeqeq(68,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(51,$ret_or_1)){if($eqeqeq(99,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(106,$ret_or_2))p=$rb_minus(self.te,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(117,$ret_or_2)){if(p=$rb_minus(self.te,1),$truthy($rb_ge(self.version,27))){self.$emit("tPIPE",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}p=$rb_minus(p,2),self.cs=811,_goto_level=20;continue}if($eqeqeq(121,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(122,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm),p=$rb_minus(tm,1),self.cs=540,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(123,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(127,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(128,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(132,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}}}else{if($eqeqeq(395,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(396,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(397,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(401,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(77,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(405,$ret_or_1)){self.te=$rb_plus(p,1),self.cs=self.$push_literal(self.$tok(),self.$tok(),self.ts),_goto_level=20;continue}if($eqeqeq(404,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(403,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(407,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(406,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(76,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=564,_goto_level=20;continue}if($eqeqeq(440,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tLAMBDA","->".$freeze(),self.ts,$rb_plus(self.ts,2)),self.lambda_stack.$push(self.paren_nest),self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(86,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(415,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.$tok(),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts,nil,!1,!1,!0),_goto_level=20;continue}if($eqeqeq(79,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(436,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=474,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(489,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(429,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(434,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tOP_ASGN",self.$tok(self.ts,$rb_minus(self.te,1))),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(420,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tEH","?".$freeze()),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(417,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(419,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tSEMI",";".$freeze()),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(494,$ret_or_1))self.te=$rb_plus(p,1),self.$diagnostic("error","bare_backslash",nil,self.$range(self.ts,$rb_plus(self.ts,1))),p=$rb_minus(p,1);else if($eqeqeq(414,$ret_or_1))self.te=$rb_plus(p,1),self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,!1))}));else{if($eqeqeq(413,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(505,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("KEYWORDS")),self.cs=353,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(503,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(502,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("KEYWORDS")),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(444,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("error","no_dot_digit_literal");else{if($eqeqeq(491,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(433,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=348,_goto_level=20;continue}if($eqeqeq(441,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=474,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(497,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(439,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(435,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(428,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(442,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(426,$ret_or_1))self.te=p,p=$rb_minus(p,1);else if($eqeqeq(432,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,!1))}));else{if($eqeqeq(84,$ret_or_1)){p=$rb_minus(self.te,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(80,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("error","no_dot_digit_literal");else{if($eqeqeq(83,$ret_or_1)){p=$rb_minus(self.te,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(78,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,!1))}));else if($eqeqeq(81,$ret_or_1)){if($eqeqeq(145,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLAMBEG","{".$freeze()):self.$emit("kDO_LAMBDA","do".$freeze())):$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLCURLY","{".$freeze()):self.$emit_do(),$eqeq(self.$tok(),"{".$freeze())&&(self.paren_nest=$rb_plus(self.paren_nest,1)),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(146,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=353,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(147,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(148,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(149,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(150,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=540,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(151,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),$truthy(self["$version?"](18))&&$eqeq(self.$tok(),"not".$freeze())){self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=495,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(152,$ret_or_2)){p=$rb_minus(self.te,1),$truthy(self["$version?"](18))?(self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))||(self.cs=self.$arg_or_cmdarg(cmd_state))):self.$emit("k__ENCODING__","__ENCODING__".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(153,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(154,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(156,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",self.$tok(self.ts,$rb_minus(self.te,1)).$to_i(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else if($eqeqeq(157,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$tok(self.ts,$rb_minus(self.te,1)).$to_f(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{if($eqeqeq(158,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(160,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(164,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(165,$ret_or_2)){p=$rb_minus(self.te,1),$eqeq(tm,self.te)?self.$emit("tFID"):(self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1)),self.cs=495,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(167,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(168,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}}}else{if($eqeqeq(516,$ret_or_1)){if(self.te=$rb_plus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),$truthy($rb_lt(self.version,27))){p=$rb_minus(p,1),self.cs=187,p=$rb_plus(p,1),_goto_level=40;continue}self.$emit("tBDOT3"),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(95,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(tm,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(510,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=187,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(513,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),$truthy($rb_lt(self.version,27))){self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=187,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(515,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),$truthy($rb_lt(self.version,27))){p=$rb_minus(p,1),self.cs=187,p=$rb_plus(p,1),_goto_level=40;continue}self.$emit("tBDOT2"),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(514,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(tm,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(512,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=187,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(90,$ret_or_1)){if(p=$rb_minus(self.te,1),$truthy($rb_lt(self.version,27))){self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=187,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(87,$ret_or_1)){p=$rb_minus(self.te,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=187,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(91,$ret_or_1)){if($eqeqeq(181,$ret_or_2=self.act)){if(p=$rb_minus(self.te,1),$truthy($rb_lt(self.version,27))){self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=187,p=$rb_plus(p,1),_goto_level=40;continue}}else if($eqeqeq(185,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=187,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(519,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_comment(self.eq_begin_s,self.te),self.cs=self.cs_before_block_comment,_goto_level=20;continue}if($eqeqeq(518,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","embedded_document",nil,self.$range(self.eq_begin_s,$rb_plus(self.eq_begin_s,"=begin".$length())));else{if($eqeqeq(106,$ret_or_1)){self.te=$rb_plus(p,1),self.eq_begin_s=self.ts,self.cs=999,_goto_level=20;continue}if($eqeqeq(2,$ret_or_1))self.te=$rb_plus(p,1),p=$rb_minus(pe,3);else{if($eqeqeq(98,$ret_or_1)){self.te=$rb_plus(p,1),cmd_state=!0,p=$rb_minus(p,1),self.cs=803,_goto_level=20;continue}if($eqeqeq(99,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(100,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(105,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.eq_begin_s=self.ts,self.cs=999,_goto_level=20;continue}if($eqeqeq(104,$ret_or_1)){self.te=p,p=$rb_minus(p,1),cmd_state=!0,p=$rb_minus(p,1),self.cs=803,_goto_level=20;continue}if($eqeqeq(1,$ret_or_1)){p=$rb_minus(self.te,1),cmd_state=!0,p=$rb_minus(p,1),self.cs=803,_goto_level=20;continue}if($eqeqeq(67,$ret_or_1))self.newline_s=p,self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p);else if($eqeqeq(110,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(143,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(174,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(180,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(186,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(193,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(196,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(204,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else{if($eqeqeq(23,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),$truthy($rb_ge(self.version,31))){self.$emit("tBDOT3","...".$freeze(),self.ts,$rb_minus(self.te,1)),self.$emit("tNL","\n".$freeze(),$rb_minus(self.te,1),self.te),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}p=$rb_minus(p,4),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(275,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(266,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(tm,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(258,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(358,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),escape=$hash2([" ","\r","\n","\t","\v","\f"],{" ":"\\s","\r":"\\r","\n":"\\n","\t":"\\t","\v":"\\v","\f":"\\f"})["$[]"](self.source_buffer.$slice($rb_plus(self.ts,1))),self.$diagnostic("warning","invalid_escape_use",$hash2(["escape"],{escape:escape}),self.$range()),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(333,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),followed_by_nl=$rb_minus(self.te,1)["$=="](self.newline_s),nl_emitted=!1,dots_te=$truthy(followed_by_nl)?$rb_minus(self.te,1):self.te,$truthy($rb_ge(self.version,30))?$truthy(self.lambda_stack["$any?"]())&&$eqeq($rb_plus(self.lambda_stack.$last(),1),self.paren_nest)?self.$emit("tDOT3","...".$freeze(),self.ts,dots_te):(self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te),$truthy($rb_ge(self.version,31))&&$truthy(followed_by_nl)&&$truthy(self.context["$in_def_open_args?"]())&&(self.$emit("tNL",$rb_minus(self.te,1),self.te),nl_emitted=!0)):$truthy($rb_ge(self.version,27))?self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te):self.$emit("tDOT3","...".$freeze(),self.ts,dots_te),$truthy(followed_by_nl)&&$not(nl_emitted)&&(p=$rb_minus(p,1)),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(321,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs_before_block_comment=self.cs,self.cs=187,_goto_level=20;continue}if($eqeqeq(443,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),$eqeq(self.paren_nest,0)&&self.$diagnostic("warning","triple_dot_at_eol",nil,self.$range(self.ts,$rb_minus(self.te,1))),self.$emit("tDOT3","...".$freeze(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(520,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),self.$emit_comment(self.eq_begin_s,self.te),self.cs=self.cs_before_block_comment,_goto_level=20;continue}if($eqeqeq(517,$ret_or_1))self.newline_s=p,self.te=$rb_plus(p,1);else{if($eqeqeq(107,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),self.eq_begin_s=self.ts,self.cs=999,_goto_level=20;continue}if($eqeqeq(3,$ret_or_1))self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(pe,3);else{if($eqeqeq(465,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$3(chars){var self=null==$$3.$$s?this:$$3.$$s;return null==chars&&(chars=nil),self.$emit("tRATIONAL",self.$Rational(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(463,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$4(chars){var self=null==$$4.$$s?this:$$4.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(468,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$5(chars){var self=null==$$5.$$s?this:$$5.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,self.$Rational(chars)))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(466,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$6(chars){var self=null==$$6.$$s?this:$$6.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,2)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(464,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$7(chars){var self=null==$$7.$$s?this:$$7.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,2)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(467,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$8(chars){var self=null==$$8.$$s?this:$$8.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,6)),p=$rb_minus(p,6)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(456,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$9(chars){var self=null==$$9.$$s?this:$$9.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,self.$Float(chars)))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(457,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$10(chars){var self=null==$$10.$$s?this:$$10.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars),self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,2)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(458,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$11(chars){var self=null==$$11.$$s?this:$$11.$$s;return null==chars&&(chars=nil),self.$emit("tRATIONAL",self.$Rational(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(460,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$12(chars){var self=null==$$12.$$s?this:$$12.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,self.$Rational(chars)))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(459,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$13(chars){var self=null==$$13.$$s?this:$$13.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars),self.ts,$rb_minus(self.te,6)),p=$rb_minus(p,6)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(137,$ret_or_1))self.escape="",codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1)),codepoint_s=$rb_plus(self.escape_s,2),$truthy($rb_lt(self.version,24))&&(($truthy(codepoints["$start_with?"](" "))||$truthy(codepoints["$start_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3))),$truthy(spaces_p=codepoints.$index(/[ \t]{2}/))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2))),($truthy(codepoints["$end_with?"](" "))||$truthy(codepoints["$end_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))),function(){var $brk=Opal.new_brk();try{$send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],(function $$14($mlhs_tmp1){var $c,self=null==$$14.$$s?this:$$14.$$s,codepoint_str=nil,spaces=nil,codepoint=nil;return null==self.escape&&(self.escape=nil),null==$mlhs_tmp1&&($mlhs_tmp1=nil),codepoint_str=null==($c=$to_ary($mlhs_tmp1))[0]?nil:$c[0],spaces=null==$c[1]?nil:$c[1],$truthy(spaces)?codepoint_s=$rb_plus(codepoint_s,spaces.$length()):(codepoint=codepoint_str.$to_i(16),$truthy($rb_ge(codepoint,1114112))&&(self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length()))),Opal.brk(nil,$brk)),self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$("Encoding"),"UTF_8"))),codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length()))}),{$$arity:1,$$s:self,$$brk:$brk,$$has_top_level_mlhs_arg:!0})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(168,$ret_or_1))self.escape="",codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1)),codepoint_s=$rb_plus(self.escape_s,2),$truthy($rb_lt(self.version,24))&&(($truthy(codepoints["$start_with?"](" "))||$truthy(codepoints["$start_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3))),$truthy(spaces_p=codepoints.$index(/[ \t]{2}/))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2))),($truthy(codepoints["$end_with?"](" "))||$truthy(codepoints["$end_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))),function(){var $brk=Opal.new_brk();try{$send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],(function $$15($mlhs_tmp1){var $c,self=null==$$15.$$s?this:$$15.$$s,codepoint_str=nil,spaces=nil,codepoint=nil;return null==self.escape&&(self.escape=nil),null==$mlhs_tmp1&&($mlhs_tmp1=nil),codepoint_str=null==($c=$to_ary($mlhs_tmp1))[0]?nil:$c[0],spaces=null==$c[1]?nil:$c[1],$truthy(spaces)?codepoint_s=$rb_plus(codepoint_s,spaces.$length()):(codepoint=codepoint_str.$to_i(16),$truthy($rb_ge(codepoint,1114112))&&(self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length()))),Opal.brk(nil,$brk)),self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$("Encoding"),"UTF_8"))),codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length()))}),{$$arity:1,$$s:self,$$brk:$brk,$$has_top_level_mlhs_arg:!0})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(382,$ret_or_1)){self.escape="",codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1)),codepoint_s=$rb_plus(self.escape_s,2),$truthy($rb_lt(self.version,24))&&(($truthy(codepoints["$start_with?"](" "))||$truthy(codepoints["$start_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3))),$truthy(spaces_p=codepoints.$index(/[ \t]{2}/))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2))),($truthy(codepoints["$end_with?"](" "))||$truthy(codepoints["$end_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))),function(){var $brk=Opal.new_brk();try{$send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],(function $$16($mlhs_tmp1){var $c,self=null==$$16.$$s?this:$$16.$$s,codepoint_str=nil,spaces=nil,codepoint=nil;return null==self.escape&&(self.escape=nil),null==$mlhs_tmp1&&($mlhs_tmp1=nil),codepoint_str=null==($c=$to_ary($mlhs_tmp1))[0]?nil:$c[0],spaces=null==$c[1]?nil:$c[1],$truthy(spaces)?codepoint_s=$rb_plus(codepoint_s,spaces.$length()):(codepoint=codepoint_str.$to_i(16),$truthy($rb_ge(codepoint,1114112))&&(self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length()))),Opal.brk(nil,$brk)),self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$("Encoding"),"UTF_8"))),codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length()))}),{$$arity:1,$$s:self,$$brk:$brk,$$has_top_level_mlhs_arg:!0})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(118,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(149,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(363,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(121,$ret_or_1))self.$diagnostic("fatal","invalid_escape"),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(152,$ret_or_1))self.$diagnostic("fatal","invalid_escape"),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(366,$ret_or_1)){self.$diagnostic("fatal","invalid_escape"),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(123,$ret_or_1))self.escape="",self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(154,$ret_or_1))self.escape="",self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(368,$ret_or_1)){self.escape="",self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(120,$ret_or_1))self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(151,$ret_or_1))self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(365,$ret_or_1)){self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(140,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(171,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(385,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(139,$ret_or_1))self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(170,$ret_or_1))self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(384,$ret_or_1)){self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2))),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(134,$ret_or_1))self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$("Encoding"),"UTF_8")),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(165,$ret_or_1))self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$("Encoding"),"UTF_8")),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(379,$ret_or_1)){self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$("Encoding"),"UTF_8")),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(133,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(164,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(378,$ret_or_1)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(138,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(169,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(383,$ret_or_1)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(135,$ret_or_1))self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(166,$ret_or_1))self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(380,$ret_or_1)){self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(119,$ret_or_1))self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(150,$ret_or_1))self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(364,$ret_or_1)){self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(177,$ret_or_1))self.escape_s=p,self.escape=nil,self.te=$rb_plus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(182,$ret_or_1))self.escape_s=p,self.escape=nil,self.te=$rb_plus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(58,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.newline_s=p;else if($eqeqeq(31,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p;else if($eqeqeq(33,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p;else if($eqeqeq(35,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p;else if($eqeqeq(219,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(238,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(246,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(34,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(277,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(269,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(288,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(300,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(296,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(59,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=$rb_plus(p,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(50,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=$rb_plus(p,1),self.$emit("tIDENTIFIER",ident_tok,ident_ts,ident_te),p=$rb_minus(ident_te,1),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](ident_tok))&&$truthy($rb_lt(self.version,25))?self.cs=466:self.cs=526,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(318,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(402,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(398,$ret_or_1)){if($truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),$truthy(self.in_kwarg)){p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}self.cs=187,_goto_level=20;continue}if($eqeqeq(411,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(408,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),self.cs=187,_goto_level=20;continue}if($eqeqeq(495,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(427,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),self.cs=991,_goto_level=20;continue}if($eqeqeq(101,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(268,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),self.$emit("tLAMBEG","{".$freeze(),$rb_minus(self.te,1),self.te)):self.$emit("tLCURLY","{".$freeze(),$rb_minus(self.te,1),self.te),self.command_start=!0,self.paren_nest=$rb_plus(self.paren_nest,1),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(290,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),self.$emit("tLAMBEG","{".$freeze())):self.$emit("tLBRACE_ARG","{".$freeze()),self.paren_nest=$rb_plus(self.paren_nest,1),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(393,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),self.command_start=!0,self.$emit("tLAMBEG","{".$freeze())):self.$emit("tLBRACE","{".$freeze()),self.paren_nest=$rb_plus(self.paren_nest,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(508,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLAMBEG","{".$freeze()):self.$emit("kDO_LAMBDA","do".$freeze())):$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLCURLY","{".$freeze()):self.$emit_do(),$eqeq(self.$tok(),"{".$freeze())&&(self.paren_nest=$rb_plus(self.paren_nest,1)),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(509,$ret_or_1)){if(current_literal=self.$literal(),$truthy(current_literal)&&$truthy(current_literal.$end_interp_brace_and_try_closing())){$truthy(self["$version?"](18,19))?(self.$emit("tRCURLY","}".$freeze(),$rb_minus(p,1),p),self.cond.$lexpop(),self.cmdarg.$lexpop()):self.$emit("tSTRING_DEND","}".$freeze(),$rb_minus(p,1),p),$truthy(current_literal.$saved_herebody_s())&&(self.herebody_s=current_literal.$saved_herebody_s()),p=$rb_minus(p,1),self.cs=self.$next_state_for_literal(current_literal),p=$rb_plus(p,1),_goto_level=40;continue}self.paren_nest=$rb_minus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),$truthy($rb_lt(self.version,24))?(self.cond.$lexpop(),self.cmdarg.$lexpop()):(self.cond.$pop(),self.cmdarg.$pop()),($eqeq(self.$tok(),"}".$freeze())||$eqeq(self.$tok(),"]".$freeze()))&&($truthy($rb_ge(self.version,25))?self.cs=811:self.cs=532),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(61,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p);else if($eqeqeq(65,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.newline_s=p;else if($eqeqeq(222,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(237,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(249,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(271,$ret_or_1)){self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(286,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(298,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(324,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(400,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(410,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(431,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(103,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(243,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("tFID",self.$tok(self.ts,tm),self.ts,tm),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_minus(tm,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(338,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(309,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(424,$ret_or_1)){if(tm=p,$eqeqeq(145,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLAMBEG","{".$freeze()):self.$emit("kDO_LAMBDA","do".$freeze())):$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLCURLY","{".$freeze()):self.$emit_do(),$eqeq(self.$tok(),"{".$freeze())&&(self.paren_nest=$rb_plus(self.paren_nest,1)),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(146,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=353,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(147,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(148,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(149,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(150,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=540,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(151,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),$truthy(self["$version?"](18))&&$eqeq(self.$tok(),"not".$freeze())){self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=495,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(152,$ret_or_2)){p=$rb_minus(self.te,1),$truthy(self["$version?"](18))?(self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))||(self.cs=self.$arg_or_cmdarg(cmd_state))):self.$emit("k__ENCODING__","__ENCODING__".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(153,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(154,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(156,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",self.$tok(self.ts,$rb_minus(self.te,1)).$to_i(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else if($eqeqeq(157,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$tok(self.ts,$rb_minus(self.te,1)).$to_f(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{if($eqeqeq(158,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(160,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(164,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(165,$ret_or_2)){p=$rb_minus(self.te,1),$eqeq(tm,self.te)?self.$emit("tFID"):(self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1)),self.cs=495,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(167,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(168,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}}}else{if($eqeqeq(244,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tFID",self.$tok(self.ts,tm),self.ts,tm),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_minus(tm,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(339,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(311,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(425,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),$eqeq(tm,self.te)?self.$emit("tFID"):(self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1)),self.cs=495,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(340,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(312,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(341,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(313,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(345,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(316,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(344,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(315,$ret_or_1)){if(tm=$rb_minus(p,2),$eqeqeq(99,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(106,$ret_or_2))p=$rb_minus(self.te,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(117,$ret_or_2)){if(p=$rb_minus(self.te,1),$truthy($rb_ge(self.version,27))){self.$emit("tPIPE",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}p=$rb_minus(p,2),self.cs=811,_goto_level=20;continue}if($eqeqeq(121,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(122,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm),p=$rb_minus(tm,1),self.cs=540,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(123,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.command_start=!0,self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(127,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(128,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=466,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(132,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}}}else{if($eqeqeq(342,$ret_or_1)){tm=$rb_minus(p,3),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(314,$ret_or_1)){tm=$rb_minus(p,3),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(343,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(490,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(267,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit("tLBRACK","[".$freeze(),$rb_minus(self.te,1),self.te),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(386,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit("tLBRACK","[".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(493,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit("tLBRACK2","[".$freeze()),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(496,$ret_or_1)){self.paren_nest=$rb_minus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),$truthy($rb_lt(self.version,24))?(self.cond.$lexpop(),self.cmdarg.$lexpop()):(self.cond.$pop(),self.cmdarg.$pop()),($eqeq(self.$tok(),"}".$freeze())||$eqeq(self.$tok(),"]".$freeze()))&&($truthy($rb_ge(self.version,25))?self.cs=811:self.cs=532),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(259,$ret_or_1)){if(self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),$truthy(self["$version?"](18))){self.$emit("tLPAREN2","(".$freeze(),$rb_minus(self.te,1),self.te),self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}self.$emit("tLPAREN_ARG","(".$freeze(),$rb_minus(self.te,1),self.te),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(272,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit("tLPAREN2","(".$freeze()),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(280,$ret_or_1)){if(self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit("tLPAREN_ARG","(".$freeze(),$rb_minus(self.te,1),self.te),$truthy(self["$version?"](18))){self.cs=803,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(328,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit("tLPAREN","(".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(437,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(438,$ret_or_1)){self.paren_nest=$rb_minus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),$truthy($rb_lt(self.version,24))?(self.cond.$lexpop(),self.cmdarg.$lexpop()):(self.cond.$pop(),self.cmdarg.$pop()),($eqeq(self.$tok(),"}".$freeze())||$eqeq(self.$tok(),"]".$freeze()))&&($truthy($rb_ge(self.version,25))?self.cs=811:self.cs=532),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(72,$ret_or_1))heredoc_e=p,self.newline_s=p;else if($eqeqeq(353,$ret_or_1)){if(new_herebody_s=p,self.te=p,p=$rb_minus(p,1),self.$tok(self.ts,heredoc_e)["$=~"](/^<<(-?)(~?)(["'`]?)(.*)\3$/m),indent=$truthy($ret_or_2=(($b=$gvars["~"])===nil?nil:$b["$[]"](1))["$empty?"]()["$!"]())?$ret_or_2:(($b=$gvars["~"])===nil?nil:$b["$[]"](2))["$empty?"]()["$!"](),dedent_body=(($b=$gvars["~"])===nil?nil:$b["$[]"](2))["$empty?"]()["$!"](),type=$truthy((($b=$gvars["~"])===nil?nil:$b["$[]"](3))["$empty?"]())?'<<"'.$freeze():$rb_plus("<<".$freeze(),($b=$gvars["~"])===nil?nil:$b["$[]"](3)),delimiter=($b=$gvars["~"])===nil?nil:$b["$[]"](4),$truthy($rb_ge(self.version,27))?($truthy($rb_gt(delimiter.$count("\n"),0))||$truthy($rb_gt(delimiter.$count("\r"),0)))&&self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1))):$truthy($rb_ge(self.version,24))&&$truthy($rb_gt(delimiter.$count("\n"),0))&&($truthy(delimiter["$end_with?"]("\n"))?(self.$diagnostic("warning","heredoc_id_ends_with_nl",nil,self.$range(self.ts,$rb_plus(self.ts,1))),delimiter=delimiter.$rstrip()):self.$diagnostic("fatal","heredoc_id_has_newline",nil,self.$range(self.ts,$rb_plus(self.ts,1)))),$truthy(dedent_body)&&$truthy(self["$version?"](18,19,20,21,22))){self.$emit("tLSHFT","<<".$freeze(),self.ts,$rb_plus(self.ts,2)),p=$rb_plus(self.ts,1),self.cs=564,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$push_literal(type,delimiter,self.ts,heredoc_e,indent,dedent_body),self.herebody_s=$truthy($ret_or_2=self.herebody_s)?$ret_or_2:new_herebody_s,p=$rb_minus(self.herebody_s,1)}else{if($eqeqeq(348,$ret_or_1)){tm=$rb_minus(p,1),diag_msg="ivar_name",self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te)):(self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=self.ts),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(351,$ret_or_1)){tm=$rb_minus(p,2),diag_msg="cvar_name",self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te)):(self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=self.ts),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(359,$ret_or_1)){self.escape=nil,self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(389,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm),p=$rb_minus(tm,1),self.cs=540,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(480,$ret_or_1))self.num_base=16,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(474,$ret_or_1))self.num_base=10,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(477,$ret_or_1))self.num_base=8,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(471,$ret_or_1))self.num_base=2,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(486,$ret_or_1))self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p;else if($eqeqeq(449,$ret_or_1))self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p;else if($eqeqeq(487,$ret_or_1))self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$17(chars){return null==chars&&(chars=nil),(null==$$17.$$s?this:$$17.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self});else if($eqeqeq(8,$ret_or_1))self.te=$rb_plus(p,1),self.newline_s=p;else if($eqeqeq(453,$ret_or_1))self.te=$rb_plus(p,1),self.num_suffix_s=p;else if($eqeqeq(228,$ret_or_1))self.te=$rb_plus(p,1),self.act=43;else if($eqeqeq(215,$ret_or_1))self.te=$rb_plus(p,1),self.act=44;else if($eqeqeq(211,$ret_or_1))self.te=$rb_plus(p,1),self.act=45;else if($eqeqeq(27,$ret_or_1))self.te=$rb_plus(p,1),self.act=72;else if($eqeqeq(261,$ret_or_1))self.te=$rb_plus(p,1),self.act=73;else if($eqeqeq(28,$ret_or_1))self.te=$rb_plus(p,1),self.act=78;else if($eqeqeq(254,$ret_or_1))self.te=$rb_plus(p,1),self.act=79;else if($eqeqeq(281,$ret_or_1))self.te=$rb_plus(p,1),self.act=85;else if($eqeqeq(46,$ret_or_1))self.te=$rb_plus(p,1),self.act=86;else if($eqeqeq(302,$ret_or_1))self.te=$rb_plus(p,1),self.act=93;else if($eqeqeq(291,$ret_or_1))self.te=$rb_plus(p,1),self.act=94;else if($eqeqeq(70,$ret_or_1))self.te=$rb_plus(p,1),self.act=106;else if($eqeqeq(394,$ret_or_1))self.te=$rb_plus(p,1),self.act=117;else if($eqeqeq(305,$ret_or_1))self.te=$rb_plus(p,1),self.act=121;else if($eqeqeq(388,$ret_or_1))self.te=$rb_plus(p,1),self.act=122;else if($eqeqeq(387,$ret_or_1))self.te=$rb_plus(p,1),self.act=123;else if($eqeqeq(75,$ret_or_1))self.te=$rb_plus(p,1),self.act=127;else if($eqeqeq(303,$ret_or_1))self.te=$rb_plus(p,1),self.act=128;else if($eqeqeq(306,$ret_or_1))self.te=$rb_plus(p,1),self.act=132;else if($eqeqeq(504,$ret_or_1))self.te=$rb_plus(p,1),self.act=145;else if($eqeqeq(499,$ret_or_1))self.te=$rb_plus(p,1),self.act=146;else if($eqeqeq(507,$ret_or_1))self.te=$rb_plus(p,1),self.act=148;else if($eqeqeq(500,$ret_or_1))self.te=$rb_plus(p,1),self.act=149;else if($eqeqeq(501,$ret_or_1))self.te=$rb_plus(p,1),self.act=150;else if($eqeqeq(506,$ret_or_1))self.te=$rb_plus(p,1),self.act=151;else if($eqeqeq(498,$ret_or_1))self.te=$rb_plus(p,1),self.act=152;else if($eqeqeq(492,$ret_or_1))self.te=$rb_plus(p,1),self.act=153;else if($eqeqeq(418,$ret_or_1))self.te=$rb_plus(p,1),self.act=154;else if($eqeqeq(451,$ret_or_1))self.te=$rb_plus(p,1),self.act=157;else if($eqeqeq(82,$ret_or_1))self.te=$rb_plus(p,1),self.act=158;else if($eqeqeq(421,$ret_or_1))self.te=$rb_plus(p,1),self.act=160;else if($eqeqeq(412,$ret_or_1))self.te=$rb_plus(p,1),self.act=164;else if($eqeqeq(423,$ret_or_1))self.te=$rb_plus(p,1),self.act=165;else if($eqeqeq(416,$ret_or_1))self.te=$rb_plus(p,1),self.act=167;else if($eqeqeq(422,$ret_or_1))self.te=$rb_plus(p,1),self.act=168;else if($eqeqeq(88,$ret_or_1))self.te=$rb_plus(p,1),self.act=181;else if($eqeqeq(511,$ret_or_1))self.te=$rb_plus(p,1),self.act=185;else if($eqeqeq(183,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string()),self.escape_s=p,self.escape=nil}else if($eqeqeq(124,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(155,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(369,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(131,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(162,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(376,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(122,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(153,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(367,$ret_or_1)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(130,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(161,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(375,$ret_or_1)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(126,$ret_or_1))self.escape="",self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(157,$ret_or_1))self.escape="",self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(371,$ret_or_1)){self.escape="",self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(129,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(160,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(374,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(136,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(167,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(381,$ret_or_1)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(116,$ret_or_1))self.escape_s=p,self.escape=nil,self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(148,$ret_or_1))self.escape_s=p,self.escape=nil,self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(362,$ret_or_1)){self.escape_s=p,self.escape=nil,self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(62,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.newline_s=p;else if($eqeqeq(221,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(236,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(248,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(270,$ret_or_1)){self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1),self.cs=811,_goto_level=20;continue}if($eqeqeq(285,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(297,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(323,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(399,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(409,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(430,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(102,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(482,$ret_or_1))self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$18(chars){return null==chars&&(chars=nil),(null==$$18.$$s?this:$$18.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self});else if($eqeqeq(446,$ret_or_1))self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$19(chars){return null==chars&&(chars=nil),(null==$$19.$$s?this:$$19.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self});else{if($eqeqeq(461,$ret_or_1)){self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$20(chars){return null==chars&&(chars=nil),(null==$$20.$$s?this:$$20.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(454,$ret_or_1)){self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$21(chars){var self=null==$$21.$$s?this:$$21.$$s;return null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(450,$ret_or_1)){self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$22(chars){var self=null==$$22.$$s?this:$$22.$$s;return null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(276,$ret_or_1))self.te=$rb_plus(p,1),self.newline_s=p,self.act=79;else if($eqeqeq(36,$ret_or_1))self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.act=78;else if($eqeqeq(47,$ret_or_1))self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.act=86;else if($eqeqeq(94,$ret_or_1))self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.act=181;else if($eqeqeq(66,$ret_or_1))self.te=$rb_plus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=99;else if($eqeqeq(85,$ret_or_1))self.te=$rb_plus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=147;else if($eqeqeq(93,$ret_or_1))self.te=$rb_plus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=181;else if($eqeqeq(38,$ret_or_1))self.te=$rb_plus(p,1),tm=p,self.act=73;else if($eqeqeq(391,$ret_or_1))self.te=$rb_plus(p,1),tm=p,self.act=127;else if($eqeqeq(390,$ret_or_1))self.te=$rb_plus(p,1),tm=p,self.act=128;else if($eqeqeq(483,$ret_or_1))self.te=$rb_plus(p,1),self.num_base=10,self.num_digits_s=self.ts,self.act=154;else if($eqeqeq(127,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(158,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(372,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(125,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(156,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(370,$ret_or_1)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(132,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(163,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(377,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(128,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(159,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(373,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=811,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(478,$ret_or_1)){self.num_base=16,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$23(chars){return null==chars&&(chars=nil),(null==$$23.$$s?this:$$23.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(472,$ret_or_1)){self.num_base=10,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$24(chars){return null==chars&&(chars=nil),(null==$$24.$$s?this:$$24.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(475,$ret_or_1)){self.num_base=8,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$25(chars){return null==chars&&(chars=nil),(null==$$25.$$s?this:$$25.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(469,$ret_or_1)){self.num_base=2,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$26(chars){return null==chars&&(chars=nil),(null==$$26.$$s?this:$$26.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(481,$ret_or_1)){self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$27(chars){return null==chars&&(chars=nil),(null==$$27.$$s?this:$$27.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(445,$ret_or_1)){self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$28(chars){return null==chars&&(chars=nil),(null==$$28.$$s?this:$$28.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}$eqeqeq(32,$ret_or_1)?(self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p,self.act=73):$eqeqeq(63,$ret_or_1)?(self.te=$rb_plus(p,1),self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=99):$eqeqeq(92,$ret_or_1)?(self.te=$rb_plus(p,1),self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=181):$eqeqeq(488,$ret_or_1)?(self.te=$rb_plus(p,1),self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$29(chars){return null==chars&&(chars=nil),(null==$$29.$$s?this:$$29.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.act=156):$eqeqeq(484,$ret_or_1)?(self.te=$rb_plus(p,1),self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$30(chars){return null==chars&&(chars=nil),(null==$$30.$$s?this:$$30.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.act=156):$eqeqeq(448,$ret_or_1)&&(self.te=$rb_plus(p,1),self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$31(chars){return null==chars&&(chars=nil),(null==$$31.$$s?this:$$31.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.act=156)}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}if($truthy($rb_le(_goto_level,20))){if($eqeqeq(96,$ret_or_1=_lex_to_state_actions["$[]"](self.cs))&&(self.ts=nil),$eqeq(self.cs,0)){_goto_level=40;continue}if(p=$rb_plus(p,1),$neqeq(p,pe)){_goto_level=10;continue}}if($truthy($rb_le(_goto_level,30))&&$eqeq(p,eof)&&$truthy($rb_gt(_lex_eof_trans["$[]"](self.cs),0)))_trans=$rb_minus(_lex_eof_trans["$[]"](self.cs),1),_goto_level=15;else if($truthy($rb_le(_goto_level,40)))break}return $truthy(!1),self.p=p,$truthy(self.token_queue["$any?"]())?self.token_queue.$shift():$eqeq(self.cs,klass.$lex_error())?[!1,["$error".$freeze(),self.$range($rb_minus(p,1),p)]]:(eof=self.source_pts.$size(),[!1,["$eof".$freeze(),self.$range(eof,eof)]])}),0),self.$protected(),$def(self,"$eof_codepoint?",(function(point){return[4,26,0]["$include?"](point)}),1),$def(self,"$version?",(function($a){var self=this;return Opal.slice.call(arguments)["$include?"](self.version)}),-1),$def(self,"$stack_pop",(function(){return this.top=$rb_minus(this.top,1),this.stack["$[]"](this.top)}),0),$def(self,"$encode_escape",(function(ord){return ord.$chr().$force_encoding(this.source_buffer.$source().$encoding())}),1),$def(self,"$tok",(function(s,e){return null==s&&(s=this.ts),null==e&&(e=this.te),this.source_buffer.$slice(Opal.Range.$new(s,e,!0))}),-1),$def(self,"$range",(function(s,e){return null==s&&(s=this.ts),null==e&&(e=this.te),$$$($$$($$("Parser"),"Source"),"Range").$new(this.source_buffer,s,e)}),-1),$def(self,"$emit",(function(type,value,s,e){var token;return null==value&&(value=this.$tok()),null==s&&(s=this.ts),null==e&&(e=this.te),token=[type,[value,this.$range(s,e)]],this.token_queue.$push(token),$truthy(this.tokens)&&this.tokens.$push(token),token}),-2),$def(self,"$emit_table",(function(table,s,e){var value;return null==s&&(s=this.ts),null==e&&(e=this.te),value=this.$tok(s,e),this.$emit(table["$[]"](value),value,s,e)}),-2),$def(self,"$emit_do",(function(do_block){return null==do_block&&(do_block=!1),$truthy(this.cond["$active?"]())?this.$emit("kDO_COND","do".$freeze()):$truthy(this.cmdarg["$active?"]())||$truthy(do_block)?this.$emit("kDO_BLOCK","do".$freeze()):this.$emit("kDO","do".$freeze())}),-1),$def(self,"$arg_or_cmdarg",(function(cmd_state){return $truthy(cmd_state)?this.$class().$lex_en_expr_cmdarg():this.$class().$lex_en_expr_arg()}),1),$def(self,"$emit_comment",(function(s,e){return null==s&&(s=this.ts),null==e&&(e=this.te),$truthy(this.comments)&&this.comments.$push($$$($$$($$("Parser"),"Source"),"Comment").$new(this.$range(s,e))),$truthy(this.tokens)&&this.tokens.$push(["tCOMMENT",[this.$tok(s,e),this.$range(s,e)]]),nil}),-1),$def(self,"$diagnostic",(function(type,reason,arguments$,location,highlights){return null==arguments$&&(arguments$=nil),null==location&&(location=this.$range()),null==highlights&&(highlights=[]),this.diagnostics.$process($$$($$("Parser"),"Diagnostic").$new(type,reason,arguments$,location,highlights))}),-3),$def(self,"$push_literal",(function($a){var args,self=this,new_literal=nil;return args=Opal.slice.call(arguments),new_literal=$send($$("Literal"),"new",[self].concat($to_a(args))),self.literal_stack.$push(new_literal),self.$next_state_for_literal(new_literal)}),-1),$def(self,"$next_state_for_literal",(function(literal){return $truthy(literal["$words?"]())&&$truthy(literal["$backslash_delimited?"]())?$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_backslash_delimited_words():this.$class().$lex_en_plain_backslash_delimited_words():$truthy(literal["$words?"]())&&$not(literal["$backslash_delimited?"]())?$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_words():this.$class().$lex_en_plain_words():$not(literal["$words?"]())&&$truthy(literal["$backslash_delimited?"]())?$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_backslash_delimited():this.$class().$lex_en_plain_backslash_delimited():$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_string():this.$class().$lex_en_plain_string()}),1),$def(self,"$literal",(function(){return this.literal_stack.$last()}),0),$def(self,"$pop_literal",(function(){var old_literal=nil;return old_literal=this.literal_stack.$pop(),this.dedent_level=old_literal.$dedent_level(),$eqeq(old_literal.$type(),"tREGEXP_BEG")?this.$class().$lex_en_regexp_modifiers():this.$class().$lex_en_expr_end()}),0),$const_set($nesting[0],"PUNCTUATION",$hash2(["=","&","|","!","^","+","-","*","/","%","~",",",";",".","..","...","[","]","(",")","?",":","&&","||","-@","+@","~@","**","->","=~","!~","==","!=",">",">>",">=","<","<<","<=","=>","::","===","<=>","[]","[]=","{","}","`","!@","&."],{"=":"tEQL","&":"tAMPER2","|":"tPIPE","!":"tBANG","^":"tCARET","+":"tPLUS","-":"tMINUS","*":"tSTAR2","/":"tDIVIDE","%":"tPERCENT","~":"tTILDE",",":"tCOMMA",";":"tSEMI",".":"tDOT","..":"tDOT2","...":"tDOT3","[":"tLBRACK2","]":"tRBRACK","(":"tLPAREN2",")":"tRPAREN","?":"tEH",":":"tCOLON","&&":"tANDOP","||":"tOROP","-@":"tUMINUS","+@":"tUPLUS","~@":"tTILDE","**":"tPOW","->":"tLAMBDA","=~":"tMATCH","!~":"tNMATCH","==":"tEQ","!=":"tNEQ",">":"tGT",">>":"tRSHFT",">=":"tGEQ","<":"tLT","<<":"tLSHFT","<=":"tLEQ","=>":"tASSOC","::":"tCOLON2","===":"tEQQ","<=>":"tCMP","[]":"tAREF","[]=":"tASET","{":"tLCURLY","}":"tRCURLY","`":"tBACK_REF2","!@":"tBANG","&.":"tANDDOT"})),$const_set($nesting[0],"PUNCTUATION_BEGIN",$hash2(["&","*","**","+","-","::","(","{","["],{"&":"tAMPER","*":"tSTAR","**":"tDSTAR","+":"tUPLUS","-":"tUMINUS","::":"tCOLON3","(":"tLPAREN","{":"tLBRACE","[":"tLBRACK"})),$const_set($nesting[0],"KEYWORDS",$hash2(["if","unless","while","until","rescue","defined?","BEGIN","END"],{if:"kIF_MOD",unless:"kUNLESS_MOD",while:"kWHILE_MOD",until:"kUNTIL_MOD",rescue:"kRESCUE_MOD","defined?":"kDEFINED",BEGIN:"klBEGIN",END:"klEND"})),$const_set($nesting[0],"KEYWORDS_BEGIN",$hash2(["if","unless","while","until","rescue","defined?","BEGIN","END"],{if:"kIF",unless:"kUNLESS",while:"kWHILE",until:"kUNTIL",rescue:"kRESCUE","defined?":"kDEFINED",BEGIN:"klBEGIN",END:"klEND"})),$send(["class","module","def","undef","begin","end","then","elsif","else","ensure","case","when","for","break","next","redo","retry","in","do","return","yield","super","self","nil","true","false","and","or","not","alias","__FILE__","__LINE__","__ENCODING__"],"each",[],(function(keyword){return null==keyword&&(keyword=nil),$writer=[keyword,($writer=[keyword,"k"+keyword.$upcase()],$send($$("KEYWORDS"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])],$send($$("KEYWORDS_BEGIN"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1)}($$("Parser"),0,$nesting)},Opal.modules["parser/lexer/literal"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$hash2=Opal.hash2,$enc=Opal.enc,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$to_ary=Opal.to_ary,$def=Opal.def,$eqeq=Opal.eqeq,$rb_minus=Opal.rb_minus,$neqeq=Opal.neqeq,$not=Opal.not,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$rb_gt=Opal.rb_gt;return Opal.add_stubs("attr_reader,attr_accessor,coerce_encoding,include?,send,+,[],fetch,==,!,heredoc?,start_with?,freeze,clear_buffer,emit_start_tok,type,=~,words?,delimiter?,-,extend_space,!=,flush_string,emit,each_char,===,%,>,nil?,<<,empty?,extend_content,protected,lstrip,b,dup,force_encoding,encoding,source,source_buffer,length"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Literal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.lexer=$proto.start_tok=$proto.str_type=$proto.monolithic=$proto.interpolate=$proto.heredoc_e=$proto.dedent_body=$proto.end_delim=$proto.start_delim=$proto.nesting=$proto.label_allowed=$proto.buffer=$proto.str_s=$proto.interp_braces=$proto.buffer_s=$proto.buffer_e=$proto.space_emitted=$proto.indent=nil,$const_set($nesting[0],"DELIMITERS",$hash2(["(","[","{","<"],{"(":$enc(")","ASCII-8BIT"),"[":$enc("]","ASCII-8BIT"),"{":$enc("}","ASCII-8BIT"),"<":$enc(">","ASCII-8BIT")})),$const_set($nesting[0],"TYPES",$hash2(["'","<<'","%q",'"','<<"',"%","%Q","%w","%W","%i","%I",":'","%s",':"',"/","%r","%x","`","<<`"],{"'":["tSTRING_BEG",!1],"<<'":["tSTRING_BEG",!1],"%q":["tSTRING_BEG",!1],'"':["tSTRING_BEG",!0],'<<"':["tSTRING_BEG",!0],"%":["tSTRING_BEG",!0],"%Q":["tSTRING_BEG",!0],"%w":["tQWORDS_BEG",!1],"%W":["tWORDS_BEG",!0],"%i":["tQSYMBOLS_BEG",!1],"%I":["tSYMBOLS_BEG",!0],":'":["tSYMBEG",!1],"%s":["tSYMBEG",!1],':"':["tSYMBEG",!0],"/":["tREGEXP_BEG",!0],"%r":["tREGEXP_BEG",!0],"%x":["tXSTRING_BEG",!0],"`":["tXSTRING_BEG",!0],"<<`":["tXSTRING_BEG",!0]})),self.$attr_reader("heredoc_e","str_s","dedent_level"),self.$attr_accessor("saved_herebody_s"),$def(self,"$initialize",(function(lexer,str_type,delimiter,str_s,heredoc_e,indent,dedent_body,label_allowed){var $a,$b,$ret_or_1,$ret_or_2;return null==heredoc_e&&(heredoc_e=nil),null==indent&&(indent=!1),null==dedent_body&&(dedent_body=!1),null==label_allowed&&(label_allowed=!1),this.lexer=lexer,this.nesting=1,str_type=this.$coerce_encoding(str_type),delimiter=this.$coerce_encoding(delimiter),$truthy($$("TYPES")["$include?"](str_type))||lexer.$send("diagnostic","error","unexpected_percent_str",$hash2(["type"],{type:str_type}),this.lexer.$send("range",str_s,$rb_plus(str_s,2))),this.str_type=str_type,this.str_s=str_s,$b=$$("TYPES")["$[]"](str_type),$a=$to_ary($b),this.start_tok=null==$a[0]?nil:$a[0],this.interpolate=null==$a[1]?nil:$a[1],this.start_delim=$truthy($$("DELIMITERS")["$include?"](delimiter))?delimiter:nil,this.end_delim=$$("DELIMITERS").$fetch(delimiter,delimiter),this.heredoc_e=heredoc_e,this.indent=indent,this.label_allowed=label_allowed,this.dedent_body=dedent_body,this.dedent_level=nil,this.interp_braces=0,this.space_emitted=!0,this.monolithic=$truthy($ret_or_1=$truthy($ret_or_2=this.start_tok["$=="]("tSTRING_BEG"))?[$enc("'","ASCII-8BIT"),$enc('"',"ASCII-8BIT")]["$include?"](str_type):$ret_or_2)?this["$heredoc?"]()["$!"]():$ret_or_1,$truthy(this.str_type["$start_with?"]($enc("%","ASCII-8BIT").$freeze()))&&(this.str_type=$rb_plus(this.str_type,delimiter)),this.$clear_buffer(),$truthy(this.monolithic)?nil:this.$emit_start_tok()}),-5),$def(self,"$interpolate?",(function(){return this.interpolate}),0),$def(self,"$words?",(function(){var $ret_or_1,$ret_or_2,$ret_or_3;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.$type()["$=="]("tWORDS_BEG"))?$ret_or_3:this.$type()["$=="]("tQWORDS_BEG"))?$ret_or_2:this.$type()["$=="]("tSYMBOLS_BEG"))?$ret_or_1:this.$type()["$=="]("tQSYMBOLS_BEG")}),0),$def(self,"$regexp?",(function(){return this.$type()["$=="]("tREGEXP_BEG")}),0),$def(self,"$heredoc?",(function(){return this.heredoc_e["$!"]()["$!"]()}),0),$def(self,"$plain_heredoc?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$heredoc?"]())?this.dedent_body["$!"]():$ret_or_1}),0),$def(self,"$squiggly_heredoc?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$heredoc?"]())?this.dedent_body:$ret_or_1}),0),$def(self,"$backslash_delimited?",(function(){return this.end_delim["$=="]($enc("\\","ASCII-8BIT").$freeze())}),0),$def(self,"$type",(function(){return this.start_tok}),0),$def(self,"$munge_escape?",(function(character){return character=this.$coerce_encoding(character),!(!$truthy(this["$words?"]())||!$truthy(character["$=~"](/[ \t\v\r\f\n]/)))||[$enc("\\","ASCII-8BIT").$freeze(),this.start_delim,this.end_delim]["$include?"](character)}),1),$def(self,"$nest_and_try_closing",(function(delimiter,ts,te,lookahead){return null==lookahead&&(lookahead=nil),delimiter=this.$coerce_encoding(delimiter),$truthy(this.start_delim)&&$eqeq(this.start_delim,delimiter)?this.nesting=$rb_plus(this.nesting,1):$truthy(this["$delimiter?"](delimiter))&&(this.nesting=$rb_minus(this.nesting,1)),$eqeq(this.nesting,0)?($truthy(this["$words?"]())&&this.$extend_space(ts,ts),$truthy(lookahead)&&$truthy(this.label_allowed)&&$eqeq(lookahead["$[]"](0),$enc(":","ASCII-8BIT"))&&$neqeq(lookahead["$[]"](1),$enc(":","ASCII-8BIT"))&&$eqeq(this.start_tok,"tSTRING_BEG")?(this.$flush_string(),this.$emit("tLABEL_END",this.end_delim,ts,$rb_plus(te,1))):$truthy(this.monolithic)?this.$emit("tSTRING",this.buffer,this.str_s,te):($truthy(this["$heredoc?"]())||this.$flush_string(),this.$emit("tSTRING_END",this.end_delim,ts,te))):nil}),-4),$def(self,"$infer_indent_level",(function(line){var self=this,indent_level=nil;return $not(self.dedent_body)?nil:(indent_level=0,function(){var $brk=Opal.new_brk();try{return $send(line,"each_char",[],(function $$9(char$){var $ret_or_1,self=null==$$9.$$s?this:$$9.$$s;return null==self.dedent_level&&(self.dedent_level=nil),null==char$&&(char$=nil),$eqeqeq(" ",$ret_or_1=char$)?indent_level=$rb_plus(indent_level,1):$eqeqeq("\t",$ret_or_1)?indent_level=$rb_plus(indent_level,$rb_minus(8,indent_level["$%"](8))):(($truthy(self.dedent_level["$nil?"]())||$truthy($rb_gt(self.dedent_level,indent_level)))&&(self.dedent_level=indent_level),void Opal.brk(nil,$brk))}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}())}),1),$def(self,"$start_interp_brace",(function(){return this.interp_braces=$rb_plus(this.interp_braces,1)}),0),$def(self,"$end_interp_brace_and_try_closing",(function(){return this.interp_braces=$rb_minus(this.interp_braces,1),this.interp_braces["$=="](0)}),0),$def(self,"$extend_string",(function(string,ts,te){var $ret_or_1;return this.buffer_s=$truthy($ret_or_1=this.buffer_s)?$ret_or_1:ts,this.buffer_e=te,this.buffer["$<<"](string)}),3),$def(self,"$flush_string",(function(){return $truthy(this.monolithic)&&(this.$emit_start_tok(),this.monolithic=!1),$truthy(this.buffer["$empty?"]())?nil:(this.$emit("tSTRING_CONTENT",this.buffer,this.buffer_s,this.buffer_e),this.$clear_buffer(),this.$extend_content())}),0),$def(self,"$extend_content",(function(){return this.space_emitted=!1}),0),$def(self,"$extend_space",(function(ts,te){return this.$flush_string(),$truthy(this.space_emitted)?nil:(this.$emit("tSPACE",nil,ts,te),this.space_emitted=!0)}),2),$def(self,"$supports_line_continuation_via_slash?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$words?"]()["$!"]())?this.interpolate:$ret_or_1}),0),self.$protected(),$def(self,"$delimiter?",(function(delimiter){return $truthy(this.indent)?this.end_delim["$=="](delimiter.$lstrip()):this.end_delim["$=="](delimiter)}),1),$def(self,"$coerce_encoding",(function(string){return string.$b()}),1),$def(self,"$clear_buffer",(function(){return this.buffer=$enc("","ASCII-8BIT").$dup(),this.buffer.$force_encoding(this.lexer.$source_buffer().$source().$encoding()),this.buffer_s=nil,this.buffer_e=nil}),0),$def(self,"$emit_start_tok",(function(){var str_e,$ret_or_1;return str_e=$truthy($ret_or_1=this.heredoc_e)?$ret_or_1:$rb_plus(this.str_s,this.str_type.$length()),this.$emit(this.start_tok,this.str_type,this.str_s,str_e)}),0),$def(self,"$emit",(function(token,type,s,e){return this.lexer.$send("emit",token,type,s,e)}),4)}(Opal.$r($nesting)("Lexer"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/lexer/stack_state"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$alias=Opal.alias;return Opal.add_stubs("freeze,clear,|,<<,&,>>,==,[],to_s"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super){var self=$klass($base,null,"StackState"),$proto=self.$$prototype;return $proto.stack=$proto.name=nil,$def(self,"$initialize",(function(name){return this.name=name.$freeze(),this.$clear()}),1),$def(self,"$clear",(function(){return this.stack=0}),0),$def(self,"$push",(function(bit){var bit_value;return bit_value=$truthy(bit)?1:0,this.stack=this.stack["$<<"](1)["$|"](bit_value),bit}),1),$def(self,"$pop",(function(){var bit_value=nil;return bit_value=this.stack["$&"](1),this.stack=this.stack["$>>"](1),bit_value["$=="](1)}),0),$def(self,"$lexpop",(function(){return this.stack=this.stack["$>>"](1)["$|"](this.stack["$&"](1)),this.stack["$[]"](0)["$=="](1)}),0),$def(self,"$active?",(function(){return this.stack["$[]"](0)["$=="](1)}),0),$def(self,"$empty?",(function(){return this.stack["$=="](0)}),0),$def(self,"$to_s",(function(){return"["+this.stack.$to_s(2)+" <= "+this.name+"]"}),0),$alias(self,"inspect","to_s")}(Opal.$r($nesting)("Lexer"))}($nesting[0],$nesting)},Opal.modules["parser/lexer/dedenter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$eqeq=Opal.eqeq,$send=Opal.send,$truthy=Opal.truthy,$to_ary=Opal.to_ary,$slice=Opal.slice,$rb_le=Opal.rb_le,$eqeqeq=Opal.eqeqeq,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$rb_divide=Opal.rb_divide;return Opal.add_stubs("encoding,split,force_encoding,==,length,map!,each,each_char,<=,===,+,-,>,*,/,slice!,replace,join,end_with?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Dedenter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.at_line_begin=nil,$const_set($nesting[0],"TAB_WIDTH",8),$def(self,"$initialize",(function(dedent_level){return this.dedent_level=dedent_level,this.at_line_begin=!0,this.indent_level=0}),1),$def(self,"$dedent",(function(string){var $a,original_encoding,self=this,lines=nil,lines_to_dedent=nil;return original_encoding=string.$encoding(),lines=string.$force_encoding($$$($$("Encoding"),"BINARY")).$split("\\\n"),$eqeq(lines.$length(),1)?lines=[string.$force_encoding(original_encoding)]:$send(lines,"map!",[],(function(s){return null==s&&(s=nil),s.$force_encoding(original_encoding)}),1),$truthy(self.at_line_begin)?lines_to_dedent=lines:(null==($a=$to_ary(lines))[0]?nil:$a[0],lines_to_dedent=$slice.call($a,1)),function(){var $brk=Opal.new_brk();try{$send(lines_to_dedent,"each",[],(function $$2(line){var self=null==$$2.$$s?this:$$2.$$s,left_to_remove=nil,remove=nil;return null==self.dedent_level&&(self.dedent_level=nil),null==line&&(line=nil),left_to_remove=self.dedent_level,remove=0,function(){var $brk=Opal.new_brk();try{$send(line,"each_char",[],(function $$3(char$){var $ret_or_1,self=null==$$3.$$s?this:$$3.$$s;return null==self.dedent_level&&(self.dedent_level=nil),null==char$&&(char$=nil),$truthy($rb_le(left_to_remove,0))&&Opal.brk(nil,$brk),$eqeqeq(" ",$ret_or_1=char$)?(remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,1)):$eqeqeq("\t",$ret_or_1)?($truthy($rb_gt($rb_times($$("TAB_WIDTH"),$rb_plus($rb_divide(remove,$$("TAB_WIDTH")),1)),self.dedent_level))&&Opal.brk(nil,$brk),remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,$$("TAB_WIDTH"))):void Opal.brk(nil,$brk)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),line["$slice!"](0,remove)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),string.$replace(lines.$join()),self.at_line_begin=string["$end_with?"]("\n")}),1),$def(self,"$interrupt",(function(){return this.at_line_begin=!1}),0)}(Opal.$r($nesting)("Lexer"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/builders/default"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$hash2=Opal.hash2,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$not=Opal.not,$send=Opal.send,$neqeq=Opal.neqeq,$to_ary=Opal.to_ary,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$range=Opal.range,$slice=Opal.slice,$rb_gt=Opal.rb_gt,$rb_le=Opal.rb_le,$rb_lt=Opal.rb_lt;return Opal.add_stubs("attr_accessor,n0,token_map,numeric,n,value,new,loc,private,===,+@,-@,updated,join,expression,string_value,delimited_string_map,unquoted_map,collapse_string_parts?,nil?,first,children,string_map,prefix_string_map,to_sym,collection_map,empty?,==,version,diagnostic,!,type,dedent,map,interrupt,compact,uniq,sort,each_char,to_proc,static_regexp,message,<<,regexp_map,unary_op_map,binary_op_map,!=,%,size,last,each_slice,pair_keyword_map,pair_quoted_map,symbol_compose,adjust,=~,pair_keyword,accessible,upto,-,length,+,[],>=,range_map,variable_map,name,source_buffer,dup,line,emit_encoding,class,any?,end_with?,to_s,try_declare_numparam,declared?,static_env,var_send_map,top,current_arg_stack,parser,constant_map,dynamic_const_definition_allowed?,context,check_assignment_to_numparam,check_reserved_for_numparam,declare,with_expression,with_operator,join_exprs,module_definition_map,definition_map,endless_definition_map,validate_definee,keyword_map,check_duplicate_args,validate_no_forward_arg_after_restarg,emit_forward_arg,forward_arg,arg_prefix_map,kwarg_map,emit_procarg0,emit_arg_inside_procarg0,location,resize,end,call_type_for_dot,emit_kwargs,rewrite_hash_args_to_kwargs,send_map,emit_lambda,expr_map,keyword,include?,block_map,array,emit_index,index_map,send_index_map,send_binary_op_map,static_regexp_node,each,names,send_unary_op_map,check_condition,condition_map,keyword_mod_map,ternary_map,for_map,>,count,rescue_body_map,eh_keyword_map,push,none?,one?,begin,guard_map,check_lvar_name,check_duplicate_pattern_variable,match_hash_var_from_str,match_var,check_duplicate_pattern_key,static_string,pair_quoted,match_hash_var,<=,check_duplicate_arg,is_a?,[]=,arg_name_collides?,<,in_dynamic_block?,has_numparams?,max_numparam_stack,start_with?,pattern_variables,pattern_hash_keys,with,begin_pos,end_pos,encode,valid_encoding?,process,diagnostics,send,kwargs?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Default"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.parser=$proto.emit_file_line_as_literals=nil,function(self,$parent_nesting){self.$attr_accessor("emit_lambda")}(Opal.get_singleton_class(self)),self.emit_lambda=!1,function(self,$parent_nesting){self.$attr_accessor("emit_procarg0")}(Opal.get_singleton_class(self)),self.emit_procarg0=!1,function(self,$parent_nesting){self.$attr_accessor("emit_encoding")}(Opal.get_singleton_class(self)),self.emit_encoding=!1,function(self,$parent_nesting){self.$attr_accessor("emit_index")}(Opal.get_singleton_class(self)),self.emit_index=!1,function(self,$parent_nesting){self.$attr_accessor("emit_arg_inside_procarg0")}(Opal.get_singleton_class(self)),self.emit_arg_inside_procarg0=!1,function(self,$parent_nesting){self.$attr_accessor("emit_forward_arg")}(Opal.get_singleton_class(self)),self.emit_forward_arg=!1,function(self,$parent_nesting){self.$attr_accessor("emit_kwargs")}(Opal.get_singleton_class(self)),self.emit_kwargs=!1,function(self,$parent_nesting){self.$attr_accessor("emit_match_pattern")}(Opal.get_singleton_class(self)),self.emit_match_pattern=!1,function(self,$parent_nesting){$def(self,"$modernize",(function(){return this.emit_lambda=!0,this.emit_procarg0=!0,this.emit_encoding=!0,this.emit_index=!0,this.emit_arg_inside_procarg0=!0,this.emit_forward_arg=!0,this.emit_kwargs=!0,this.emit_match_pattern=!0}),0)}(Opal.get_singleton_class(self)),self.$attr_accessor("parser"),self.$attr_accessor("emit_file_line_as_literals"),$def(self,"$initialize",(function(){return this.emit_file_line_as_literals=!0}),0),$def(self,"$nil",(function(nil_t){return this.$n0("nil",this.$token_map(nil_t))}),1),$def(self,"$true",(function(true_t){return this.$n0("true",this.$token_map(true_t))}),1),$def(self,"$false",(function(false_t){return this.$n0("false",this.$token_map(false_t))}),1),$def(self,"$integer",(function(integer_t){return this.$numeric("int",integer_t)}),1),$def(self,"$float",(function(float_t){return this.$numeric("float",float_t)}),1),$def(self,"$rational",(function(rational_t){return this.$numeric("rational",rational_t)}),1),$def(self,"$complex",(function(complex_t){return this.$numeric("complex",complex_t)}),1),$def(self,"$numeric",(function(kind,token){return this.$n(kind,[this.$value(token)],$$$($$$($$("Source"),"Map"),"Operator").$new(nil,this.$loc(token)))}),2),self.$private("numeric"),$def(self,"$unary_num",(function(unary_t,numeric){var $a,$ret_or_1,value=nil,operator_loc=nil;return value=null==($a=[].concat($to_a(numeric)))[0]?nil:$a[0],operator_loc=this.$loc(unary_t),$eqeqeq("+",$ret_or_1=this.$value(unary_t))?value=value["$+@"]():$eqeqeq("-",$ret_or_1)&&(value=value["$-@"]()),numeric.$updated(nil,[value],$hash2(["location"],{location:$$$($$$($$("Source"),"Map"),"Operator").$new(operator_loc,operator_loc.$join(numeric.$loc().$expression()))}))}),2),$def(self,"$__LINE__",(function(__LINE__t){return this.$n0("__LINE__",this.$token_map(__LINE__t))}),1),$def(self,"$string",(function(string_t){return this.$n("str",[this.$string_value(string_t)],this.$delimited_string_map(string_t))}),1),$def(self,"$string_internal",(function(string_t){return this.$n("str",[this.$string_value(string_t)],this.$unquoted_map(string_t))}),1),$def(self,"$string_compose",(function(begin_t,parts,end_t){return $truthy(this["$collapse_string_parts?"](parts))?$truthy(begin_t["$nil?"]())&&$truthy(end_t["$nil?"]())?parts.$first():this.$n("str",parts.$first().$children(),this.$string_map(begin_t,parts,end_t)):this.$n("dstr",[].concat($to_a(parts)),this.$string_map(begin_t,parts,end_t))}),3),$def(self,"$character",(function(char_t){return this.$n("str",[this.$string_value(char_t)],this.$prefix_string_map(char_t))}),1),$def(self,"$__FILE__",(function(__FILE__t){return this.$n0("__FILE__",this.$token_map(__FILE__t))}),1),$def(self,"$symbol",(function(symbol_t){return this.$n("sym",[this.$string_value(symbol_t).$to_sym()],this.$prefix_string_map(symbol_t))}),1),$def(self,"$symbol_internal",(function(symbol_t){return this.$n("sym",[this.$string_value(symbol_t).$to_sym()],this.$unquoted_map(symbol_t))}),1),$def(self,"$symbol_compose",(function(begin_t,parts,end_t){var str=nil;return $truthy(this["$collapse_string_parts?"](parts))?(str=parts.$first(),this.$n("sym",[str.$children().$first().$to_sym()],this.$collection_map(begin_t,str.$loc().$expression(),end_t))):$eqeq(this.parser.$version(),18)&&$truthy(parts["$empty?"]())?this.$diagnostic("error","empty_symbol",nil,this.$loc(begin_t).$join(this.$loc(end_t))):this.$n("dsym",[].concat($to_a(parts)),this.$collection_map(begin_t,parts,end_t))}),3),$def(self,"$xstring_compose",(function(begin_t,parts,end_t){return this.$n("xstr",[].concat($to_a(parts)),this.$string_map(begin_t,parts,end_t))}),3),$def(self,"$dedent_string",(function(node,dedent_level){var dedenter=nil,$ret_or_1=nil,str=nil,children=nil;return $not(dedent_level["$nil?"]())&&(dedenter=$$$($$("Lexer"),"Dedenter").$new(dedent_level),$eqeqeq("str",$ret_or_1=node.$type())?(str=node.$children().$first(),dedenter.$dedent(str)):($eqeqeq("dstr",$ret_or_1)||$eqeqeq("xstr",$ret_or_1))&&(children=$send(node.$children(),"map",[],(function(str_node){if(null==str_node&&(str_node=nil),$eqeq(str_node.$type(),"str")){if(str=str_node.$children().$first(),dedenter.$dedent(str),$truthy(str["$empty?"]()))return nil}else dedenter.$interrupt();return str_node}),1),node=node.$updated(nil,children.$compact()))),node}),2),$def(self,"$regexp_options",(function(regopt_t){var options;return options=$send(this.$value(regopt_t).$each_char().$sort().$uniq(),"map",[],"to_sym".$to_proc()),this.$n("regopt",options,this.$token_map(regopt_t))}),1),$def(self,"$regexp_compose",(function(begin_t,parts,end_t,options){var e=nil;try{this.$static_regexp(parts,options)}catch($err){if(!Opal.rescue($err,[$$("RegexpError")]))throw $err;e=$err;try{this.$diagnostic("error","invalid_regexp",$hash2(["message"],{message:e.$message()}),this.$loc(begin_t).$join(this.$loc(end_t)))}finally{Opal.pop_exception()}}return this.$n("regexp",parts["$<<"](options),this.$regexp_map(begin_t,end_t,options))}),4),$def(self,"$array",(function(begin_t,elements,end_t){return this.$n("array",elements,this.$collection_map(begin_t,elements,end_t))}),3),$def(self,"$splat",(function(star_t,arg){return null==arg&&(arg=nil),$truthy(arg["$nil?"]())?this.$n0("splat",this.$unary_op_map(star_t)):this.$n("splat",[arg],this.$unary_op_map(star_t,arg))}),-2),$def(self,"$word",(function(parts){return $truthy(this["$collapse_string_parts?"](parts))?parts.$first():this.$n("dstr",[].concat($to_a(parts)),this.$collection_map(nil,parts,nil))}),1),$def(self,"$words_compose",(function(begin_t,parts,end_t){return this.$n("array",[].concat($to_a(parts)),this.$collection_map(begin_t,parts,end_t))}),3),$def(self,"$symbols_compose",(function(begin_t,parts,end_t){return parts=$send(parts,"map",[],(function(part){var $a,$ret_or_1,value=nil;return null==part&&(part=nil),$eqeqeq("str",$ret_or_1=part.$type())?(value=null==($a=[].concat($to_a(part)))[0]?nil:$a[0],part.$updated("sym",[value.$to_sym()])):$eqeqeq("dstr",$ret_or_1)?part.$updated("dsym"):part}),1),this.$n("array",[].concat($to_a(parts)),this.$collection_map(begin_t,parts,end_t))}),3),$def(self,"$pair",(function(key,assoc_t,value){return this.$n("pair",[key,value],this.$binary_op_map(key,assoc_t,value))}),3),$def(self,"$pair_list_18",(function(list){return $neqeq(list.$size()["$%"](2),0)?this.$diagnostic("error","odd_hash",nil,list.$last().$loc().$expression()):$send(list.$each_slice(2),"map",[],(function $$6(key,value){var self=null==$$6.$$s?this:$$6.$$s;return null==key&&(key=nil),null==value&&(value=nil),self.$n("pair",[key,value],self.$binary_op_map(key,nil,value))}),{$$arity:2,$$s:this})}),1),$def(self,"$pair_keyword",(function(key_t,value){var $a,$b,key_map,pair_map,key;return $b=this.$pair_keyword_map(key_t,value),key_map=null==($a=$to_ary($b))[0]?nil:$a[0],pair_map=null==$a[1]?nil:$a[1],key=this.$n("sym",[this.$value(key_t).$to_sym()],key_map),this.$n("pair",[key,value],pair_map)}),2),$def(self,"$pair_quoted",(function(begin_t,parts,end_t,value){var $a,$b,pair_map,key;return $b=this.$pair_quoted_map(begin_t,end_t,value),end_t=null==($a=$to_ary($b))[0]?nil:$a[0],pair_map=null==$a[1]?nil:$a[1],key=this.$symbol_compose(begin_t,parts,end_t),this.$n("pair",[key,value],pair_map)}),4),$def(self,"$pair_label",(function(key_t){var value_l,value,label=nil;return value_l=this.$loc(key_t).$adjust($hash2(["end_pos"],{end_pos:-1})),label=this.$value(key_t),value=$truthy(label["$=~"](/^[[:lower:]]/))?this.$n("ident",[label.$to_sym()],$$$($$$($$("Source"),"Map"),"Variable").$new(value_l)):this.$n("const",[nil,label.$to_sym()],$$$($$$($$("Source"),"Map"),"Constant").$new(nil,value_l,value_l)),this.$pair_keyword(key_t,this.$accessible(value))}),1),$def(self,"$kwsplat",(function(dstar_t,arg){return this.$n("kwsplat",[arg],this.$unary_op_map(dstar_t,arg))}),2),$def(self,"$associate",(function(begin_t,pairs,end_t){return $send(0,"upto",[$rb_minus(pairs.$length(),1)],(function $$7(i){var self=null==$$7.$$s?this:$$7.$$s;return null==i&&(i=nil),$send($rb_plus(i,1),"upto",[$rb_minus(pairs.$length(),1)],(function $$8(j){var $a,$ret_or_1,self=null==$$8.$$s?this:$$8.$$s,key1=nil,key2=nil,do_warn=nil;return null==self.parser&&(self.parser=nil),null==j&&(j=nil),key1=null==($a=[].concat($to_a(pairs["$[]"](i))))[0]?nil:$a[0],key2=null==($a=[].concat($to_a(pairs["$[]"](j))))[0]?nil:$a[0],do_warn=!1,$eqeqeq("sym",$ret_or_1=key1.$type())||$eqeqeq("str",$ret_or_1)||$eqeqeq("int",$ret_or_1)||$eqeqeq("float",$ret_or_1)?$eqeq(key1,key2)&&(do_warn=!0):($eqeqeq("rational",$ret_or_1)||$eqeqeq("complex",$ret_or_1)||$eqeqeq("regexp",$ret_or_1))&&$truthy($rb_ge(self.parser.$version(),31))&&$eqeq(key1,key2)&&(do_warn=!0),$truthy(do_warn)?self.$diagnostic("warning","duplicate_hash_key",nil,key2.$loc().$expression()):nil}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:this}),this.$n("hash",[].concat($to_a(pairs)),this.$collection_map(begin_t,pairs,end_t))}),3),$def(self,"$range_inclusive",(function(lhs,dot2_t,rhs){return this.$n("irange",[lhs,rhs],this.$range_map(lhs,dot2_t,rhs))}),3),$def(self,"$range_exclusive",(function(lhs,dot3_t,rhs){return this.$n("erange",[lhs,rhs],this.$range_map(lhs,dot3_t,rhs))}),3),$def(self,"$self",(function(token){return this.$n0("self",this.$token_map(token))}),1),$def(self,"$ident",(function(token){return this.$n("ident",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$ivar",(function(token){return this.$n("ivar",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$gvar",(function(token){return this.$n("gvar",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$cvar",(function(token){return this.$n("cvar",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$back_ref",(function(token){return this.$n("back_ref",[this.$value(token).$to_sym()],this.$token_map(token))}),1),$def(self,"$nth_ref",(function(token){return this.$n("nth_ref",[this.$value(token)],this.$token_map(token))}),1),$def(self,"$accessible",(function(node){var $a,$ret_or_1,name=nil;return $eqeqeq("__FILE__",$ret_or_1=node.$type())?$truthy(this.emit_file_line_as_literals)?this.$n("str",[node.$loc().$expression().$source_buffer().$name()],node.$loc().$dup()):node:$eqeqeq("__LINE__",$ret_or_1)?$truthy(this.emit_file_line_as_literals)?this.$n("int",[node.$loc().$expression().$line()],node.$loc().$dup()):node:$eqeqeq("__ENCODING__",$ret_or_1)?$not(this.$class().$emit_encoding())?this.$n("const",[this.$n("const",[nil,"Encoding"],nil),"UTF_8"],node.$loc().$dup()):node:$eqeqeq("ident",$ret_or_1)?($a=[].concat($to_a(node)),name=null==$a[0]?nil:$a[0],$truthy($send(["?","!"],"any?",[],(function(c){return null==c&&(c=nil),name.$to_s()["$end_with?"](c)}),1))&&this.$diagnostic("error","invalid_id_to_get",$hash2(["identifier"],{identifier:name.$to_s()}),node.$loc().$expression()),$truthy($rb_ge(this.parser.$version(),27))&&$truthy(this.parser.$try_declare_numparam(node))?node.$updated("lvar"):$truthy(this.parser.$static_env()["$declared?"](name))?($eqeq(name.$to_s(),this.$parser().$current_arg_stack().$top())&&this.$diagnostic("error","circular_argument_reference",$hash2(["var_name"],{var_name:name.$to_s()}),node.$loc().$expression()),node.$updated("lvar")):this.$n("send",[nil,name],this.$var_send_map(node))):node}),1),$def(self,"$const",(function(name_t){return this.$n("const",[nil,this.$value(name_t).$to_sym()],this.$constant_map(nil,nil,name_t))}),1),$def(self,"$const_global",(function(t_colon3,name_t){var cbase;return cbase=this.$n0("cbase",this.$token_map(t_colon3)),this.$n("const",[cbase,this.$value(name_t).$to_sym()],this.$constant_map(cbase,t_colon3,name_t))}),2),$def(self,"$const_fetch",(function(scope,t_colon2,name_t){return this.$n("const",[scope,this.$value(name_t).$to_sym()],this.$constant_map(scope,t_colon2,name_t))}),3),$def(self,"$__ENCODING__",(function(__ENCODING__t){return this.$n0("__ENCODING__",this.$token_map(__ENCODING__t))}),1),$def(self,"$assignable",(function(node){var $a,$ret_or_1,name=nil,var_name=nil,name_loc=nil;return $eqeqeq("cvar",$ret_or_1=node.$type())?node.$updated("cvasgn"):$eqeqeq("ivar",$ret_or_1)?node.$updated("ivasgn"):$eqeqeq("gvar",$ret_or_1)?node.$updated("gvasgn"):$eqeqeq("const",$ret_or_1)?($truthy(this.parser.$context()["$dynamic_const_definition_allowed?"]())||this.$diagnostic("error","dynamic_const",nil,node.$loc().$expression()),node.$updated("casgn")):$eqeqeq("ident",$ret_or_1)?(name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],var_name=node.$children()["$[]"](0).$to_s(),name_loc=node.$loc().$expression(),this.$check_assignment_to_numparam(var_name,name_loc),this.$check_reserved_for_numparam(var_name,name_loc),this.parser.$static_env().$declare(name),node.$updated("lvasgn")):$eqeqeq("match_var",$ret_or_1)?(name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],var_name=node.$children()["$[]"](0).$to_s(),name_loc=node.$loc().$expression(),this.$check_assignment_to_numparam(var_name,name_loc),this.$check_reserved_for_numparam(var_name,name_loc),node):$eqeqeq("nil",$ret_or_1)||$eqeqeq("self",$ret_or_1)||$eqeqeq("true",$ret_or_1)||$eqeqeq("false",$ret_or_1)||$eqeqeq("__FILE__",$ret_or_1)||$eqeqeq("__LINE__",$ret_or_1)||$eqeqeq("__ENCODING__",$ret_or_1)?this.$diagnostic("error","invalid_assignment",nil,node.$loc().$expression()):$eqeqeq("back_ref",$ret_or_1)||$eqeqeq("nth_ref",$ret_or_1)?this.$diagnostic("error","backref_assignment",nil,node.$loc().$expression()):nil}),1),$def(self,"$const_op_assignable",(function(node){return node.$updated("casgn")}),1),$def(self,"$assign",(function(lhs,eql_t,rhs){return lhs["$<<"](rhs).$updated(nil,nil,$hash2(["location"],{location:lhs.$loc().$with_operator(this.$loc(eql_t)).$with_expression(this.$join_exprs(lhs,rhs))}))}),3),$def(self,"$op_assign",(function(lhs,op_t,rhs){var $ret_or_1,operator=nil,source_map=nil,$ret_or_2=nil;return $eqeqeq("gvasgn",$ret_or_1=lhs.$type())||$eqeqeq("ivasgn",$ret_or_1)||$eqeqeq("lvasgn",$ret_or_1)||$eqeqeq("cvasgn",$ret_or_1)||$eqeqeq("casgn",$ret_or_1)||$eqeqeq("send",$ret_or_1)||$eqeqeq("csend",$ret_or_1)||$eqeqeq("index",$ret_or_1)?(operator=this.$value(op_t)["$[]"]($range(0,-1,!1)).$to_sym(),source_map=lhs.$loc().$with_operator(this.$loc(op_t)).$with_expression(this.$join_exprs(lhs,rhs)),$eqeq(lhs.$type(),"index")&&(lhs=lhs.$updated("indexasgn")),$eqeqeq("&&",$ret_or_2=operator)?this.$n("and_asgn",[lhs,rhs],source_map):$eqeqeq("||",$ret_or_2)?this.$n("or_asgn",[lhs,rhs],source_map):this.$n("op_asgn",[lhs,operator,rhs],source_map)):$eqeqeq("back_ref",$ret_or_1)||$eqeqeq("nth_ref",$ret_or_1)?this.$diagnostic("error","backref_assignment",nil,lhs.$loc().$expression()):nil}),3),$def(self,"$multi_lhs",(function(begin_t,items,end_t){return this.$n("mlhs",[].concat($to_a(items)),this.$collection_map(begin_t,items,end_t))}),3),$def(self,"$multi_assign",(function(lhs,eql_t,rhs){return this.$n("masgn",[lhs,rhs],this.$binary_op_map(lhs,eql_t,rhs))}),3),$def(self,"$def_class",(function(class_t,name,lt_t,superclass,body,end_t){return this.$n("class",[name,superclass,body],this.$module_definition_map(class_t,name,lt_t,end_t))}),6),$def(self,"$def_sclass",(function(class_t,lshft_t,expr,body,end_t){return this.$n("sclass",[expr,body],this.$module_definition_map(class_t,nil,lshft_t,end_t))}),5),$def(self,"$def_module",(function(module_t,name,body,end_t){return this.$n("module",[name,body],this.$module_definition_map(module_t,name,nil,end_t))}),4),$def(self,"$def_method",(function(def_t,name_t,args,body,end_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("def",[this.$value(name_t).$to_sym(),args,body],this.$definition_map(def_t,nil,name_t,end_t))}),5),$def(self,"$def_endless_method",(function(def_t,name_t,args,assignment_t,body){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("def",[this.$value(name_t).$to_sym(),args,body],this.$endless_definition_map(def_t,nil,name_t,assignment_t,body))}),5),$def(self,"$def_singleton",(function(def_t,definee,dot_t,name_t,args,body,end_t){return this.$validate_definee(definee),this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("defs",[definee,this.$value(name_t).$to_sym(),args,body],this.$definition_map(def_t,dot_t,name_t,end_t))}),7),$def(self,"$def_endless_singleton",(function(def_t,definee,dot_t,name_t,args,assignment_t,body){return this.$validate_definee(definee),this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("defs",[definee,this.$value(name_t).$to_sym(),args,body],this.$endless_definition_map(def_t,dot_t,name_t,assignment_t,body))}),7),$def(self,"$undef_method",(function(undef_t,names){return this.$n("undef",[].concat($to_a(names)),this.$keyword_map(undef_t,nil,names,nil))}),2),$def(self,"$alias",(function(alias_t,to,from){return this.$n("alias",[to,from],this.$keyword_map(alias_t,nil,[to,from],nil))}),3),$def(self,"$args",(function(begin_t,args,end_t,check_args){var map;return null==check_args&&(check_args=!0),$truthy(check_args)&&(args=this.$check_duplicate_args(args)),this.$validate_no_forward_arg_after_restarg(args),map=this.$collection_map(begin_t,args,end_t),$not(this.$class().$emit_forward_arg())&&$eqeq(args.$length(),1)&&$eqeq(args["$[]"](0).$type(),"forward_arg")?this.$n("forward_args",[],map):this.$n("args",args,map)}),-4),$def(self,"$numargs",(function(max_numparam){return this.$n("numargs",[max_numparam],nil)}),1),$def(self,"$forward_only_args",(function(begin_t,dots_t,end_t){var arg=nil;return $truthy(this.$class().$emit_forward_arg())?(arg=this.$forward_arg(dots_t),this.$n("args",[arg],this.$collection_map(begin_t,[arg],end_t))):this.$n("forward_args",[],this.$collection_map(begin_t,this.$token_map(dots_t),end_t))}),3),$def(self,"$forward_arg",(function(dots_t){return this.$n("forward_arg",[],this.$token_map(dots_t))}),1),$def(self,"$arg",(function(name_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("arg",[this.$value(name_t).$to_sym()],this.$variable_map(name_t))}),1),$def(self,"$optarg",(function(name_t,eql_t,value){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("optarg",[this.$value(name_t).$to_sym(),value],this.$variable_map(name_t).$with_operator(this.$loc(eql_t)).$with_expression(this.$loc(name_t).$join(value.$loc().$expression())))}),3),$def(self,"$restarg",(function(star_t,name_t){return null==name_t&&(name_t=nil),$truthy(name_t)?(this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("restarg",[this.$value(name_t).$to_sym()],this.$arg_prefix_map(star_t,name_t))):this.$n0("restarg",this.$arg_prefix_map(star_t))}),-2),$def(self,"$kwarg",(function(name_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("kwarg",[this.$value(name_t).$to_sym()],this.$kwarg_map(name_t))}),1),$def(self,"$kwoptarg",(function(name_t,value){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("kwoptarg",[this.$value(name_t).$to_sym(),value],this.$kwarg_map(name_t,value))}),2),$def(self,"$kwrestarg",(function(dstar_t,name_t){return null==name_t&&(name_t=nil),$truthy(name_t)?(this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("kwrestarg",[this.$value(name_t).$to_sym()],this.$arg_prefix_map(dstar_t,name_t))):this.$n0("kwrestarg",this.$arg_prefix_map(dstar_t))}),-2),$def(self,"$kwnilarg",(function(dstar_t,nil_t){return this.$n0("kwnilarg",this.$arg_prefix_map(dstar_t,nil_t))}),2),$def(self,"$shadowarg",(function(name_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("shadowarg",[this.$value(name_t).$to_sym()],this.$variable_map(name_t))}),1),$def(self,"$blockarg",(function(amper_t,name_t){var arg_name;return $not(name_t["$nil?"]())&&this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),arg_name=$truthy(name_t)?this.$value(name_t).$to_sym():nil,this.$n("blockarg",[arg_name],this.$arg_prefix_map(amper_t,name_t))}),2),$def(self,"$procarg0",(function(arg){return $truthy(this.$class().$emit_procarg0())?$eqeq(arg.$type(),"arg")&&$truthy(this.$class().$emit_arg_inside_procarg0())?this.$n("procarg0",[arg],$$$($$$($$("Source"),"Map"),"Collection").$new(nil,nil,arg.$location().$expression())):arg.$updated("procarg0"):arg}),1),$def(self,"$arg_expr",(function(expr){return $eqeq(expr.$type(),"lvasgn")?expr.$updated("arg"):this.$n("arg_expr",[expr],expr.$loc().$dup())}),1),$def(self,"$restarg_expr",(function(star_t,expr){return null==expr&&(expr=nil),$truthy(expr["$nil?"]())?this.$n0("restarg",this.$token_map(star_t)):$eqeq(expr.$type(),"lvasgn")?expr.$updated("restarg"):this.$n("restarg_expr",[expr],expr.$loc().$dup())}),-2),$def(self,"$blockarg_expr",(function(amper_t,expr){return $eqeq(expr.$type(),"lvasgn")?expr.$updated("blockarg"):this.$n("blockarg_expr",[expr],expr.$loc().$dup())}),2),$def(self,"$objc_kwarg",(function(kwname_t,assoc_t,name_t){var kwname_l=nil,operator_l=nil;return kwname_l=this.$loc(kwname_t),operator_l=$truthy(assoc_t["$nil?"]())?(kwname_l=kwname_l.$resize($rb_minus(kwname_l.$size(),1))).$end().$resize(1):this.$loc(assoc_t),this.$n("objc_kwarg",[this.$value(kwname_t).$to_sym(),this.$value(name_t).$to_sym()],$$$($$$($$("Source"),"Map"),"ObjcKwarg").$new(kwname_l,operator_l,this.$loc(name_t),kwname_l.$join(this.$loc(name_t))))}),3),$def(self,"$objc_restarg",(function(star_t,name){return null==name&&(name=nil),$truthy(name["$nil?"]())?this.$n0("restarg",this.$arg_prefix_map(star_t)):$eqeq(name.$type(),"arg")?name.$updated("restarg",nil,$hash2(["location"],{location:name.$loc().$with_operator(this.$loc(star_t))})):this.$n("objc_restarg",[name],this.$unary_op_map(star_t,name))}),-2),$def(self,"$call_type_for_dot",(function(dot_t){return $not(dot_t["$nil?"]())&&$eqeq(this.$value(dot_t),"anddot")?"csend":"send"}),1),$def(self,"$forwarded_args",(function(dots_t){return this.$n("forwarded_args",[],this.$token_map(dots_t))}),1),$def(self,"$call_method",(function(receiver,dot_t,selector_t,lparen_t,args,rparen_t){var type;return null==lparen_t&&(lparen_t=nil),null==args&&(args=[]),null==rparen_t&&(rparen_t=nil),type=this.$call_type_for_dot(dot_t),$truthy(this.$class().$emit_kwargs())&&this.$rewrite_hash_args_to_kwargs(args),$truthy(selector_t["$nil?"]())?this.$n(type,[receiver,"call"].concat($to_a(args)),this.$send_map(receiver,dot_t,nil,lparen_t,args,rparen_t)):this.$n(type,[receiver,this.$value(selector_t).$to_sym()].concat($to_a(args)),this.$send_map(receiver,dot_t,selector_t,lparen_t,args,rparen_t))}),-4),$def(self,"$call_lambda",(function(lambda_t){return $truthy(this.$class().$emit_lambda())?this.$n0("lambda",this.$expr_map(this.$loc(lambda_t))):this.$n("send",[nil,"lambda"],this.$send_map(nil,nil,lambda_t))}),1),$def(self,"$block",(function(method_call,begin_t,args,body,end_t){var $a,call_args=nil,last_arg=nil,block_type=nil,actual_send=nil,block=nil;return null==($a=[].concat($to_a(method_call)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],call_args=$slice.call($a,2),$eqeq(method_call.$type(),"yield")&&this.$diagnostic("error","block_given_to_yield",nil,method_call.$loc().$keyword(),[this.$loc(begin_t)]),last_arg=call_args.$last(),$truthy(last_arg)&&($eqeq(last_arg.$type(),"block_pass")||$eqeq(last_arg.$type(),"forwarded_args"))&&this.$diagnostic("error","block_and_blockarg",nil,last_arg.$loc().$expression(),[this.$loc(begin_t)]),$eqeq(args.$type(),"numargs")?(block_type="numblock",args=args.$children()["$[]"](0)):block_type="block",$truthy(["send","csend","index","super","zsuper","lambda"]["$include?"](method_call.$type()))?this.$n(block_type,[method_call,args,body],this.$block_map(method_call.$loc().$expression(),begin_t,end_t)):(actual_send=null==($a=[].concat($to_a(method_call)))[0]?nil:$a[0],block=this.$n(block_type,[actual_send,args,body],this.$block_map(actual_send.$loc().$expression(),begin_t,end_t)),this.$n(method_call.$type(),[block],method_call.$loc().$with_expression(this.$join_exprs(method_call,block))))}),5),$def(self,"$block_pass",(function(amper_t,arg){return this.$n("block_pass",[arg],this.$unary_op_map(amper_t,arg))}),2),$def(self,"$objc_varargs",(function(pair,rest_of_varargs){var $a,value,first_vararg=nil,vararg_array=nil;return value=null==($a=[].concat($to_a(pair)))[0]?nil:$a[0],first_vararg=null==$a[1]?nil:$a[1],vararg_array=this.$array(nil,[first_vararg].concat($to_a(rest_of_varargs)),nil).$updated("objc_varargs"),pair.$updated(nil,[value,vararg_array],$hash2(["location"],{location:pair.$loc().$with_expression(pair.$loc().$expression().$join(vararg_array.$loc().$expression()))}))}),2),$def(self,"$attr_asgn",(function(receiver,dot_t,selector_t){var method_name,type;return method_name=$rb_plus(this.$value(selector_t),"=").$to_sym(),type=this.$call_type_for_dot(dot_t),this.$n(type,[receiver,method_name],this.$send_map(receiver,dot_t,selector_t))}),3),$def(self,"$index",(function(receiver,lbrack_t,indexes,rbrack_t){return $truthy(this.$class().$emit_kwargs())&&this.$rewrite_hash_args_to_kwargs(indexes),$truthy(this.$class().$emit_index())?this.$n("index",[receiver].concat($to_a(indexes)),this.$index_map(receiver,lbrack_t,rbrack_t)):this.$n("send",[receiver,"[]"].concat($to_a(indexes)),this.$send_index_map(receiver,lbrack_t,rbrack_t))}),4),$def(self,"$index_asgn",(function(receiver,lbrack_t,indexes,rbrack_t){return $truthy(this.$class().$emit_index())?this.$n("indexasgn",[receiver].concat($to_a(indexes)),this.$index_map(receiver,lbrack_t,rbrack_t)):this.$n("send",[receiver,"[]="].concat($to_a(indexes)),this.$send_index_map(receiver,lbrack_t,rbrack_t))}),4),$def(self,"$binary_op",(function(receiver,operator_t,arg){var source_map=nil,operator=nil,method_call=nil;return source_map=this.$send_binary_op_map(receiver,operator_t,arg),$eqeq(this.parser.$version(),18)&&(operator=this.$value(operator_t),$eqeq(operator,"!=")?method_call=this.$n("send",[receiver,"==",arg],source_map):$eqeq(operator,"!~")&&(method_call=this.$n("send",[receiver,"=~",arg],source_map)),$truthy(["!=","!~"]["$include?"](operator)))?this.$n("not",[method_call],this.$expr_map(source_map.$expression())):this.$n("send",[receiver,this.$value(operator_t).$to_sym(),arg],source_map)}),3),$def(self,"$match_op",(function(receiver,match_t,arg){var source_map,regexp=nil;return source_map=this.$send_binary_op_map(receiver,match_t,arg),$truthy(regexp=this.$static_regexp_node(receiver))?($send(regexp.$names(),"each",[],(function $$11(name){var self=null==$$11.$$s?this:$$11.$$s;return null==self.parser&&(self.parser=nil),null==name&&(name=nil),self.parser.$static_env().$declare(name)}),{$$arity:1,$$s:this}),this.$n("match_with_lvasgn",[receiver,arg],source_map)):this.$n("send",[receiver,"=~",arg],source_map)}),3),$def(self,"$unary_op",(function(op_t,receiver){var $ret_or_1,method=nil;return method=$eqeqeq("+",$ret_or_1=this.$value(op_t))||$eqeqeq("-",$ret_or_1)?$rb_plus(this.$value(op_t),"@"):this.$value(op_t),this.$n("send",[receiver,method.$to_sym()],this.$send_unary_op_map(op_t,receiver))}),2),$def(self,"$not_op",(function(not_t,begin_t,receiver,end_t){var nil_node=nil;return null==begin_t&&(begin_t=nil),null==receiver&&(receiver=nil),null==end_t&&(end_t=nil),$eqeq(this.parser.$version(),18)?this.$n("not",[this.$check_condition(receiver)],this.$unary_op_map(not_t,receiver)):$truthy(receiver["$nil?"]())?(nil_node=this.$n0("begin",this.$collection_map(begin_t,nil,end_t)),this.$n("send",[nil_node,"!"],this.$send_unary_op_map(not_t,nil_node))):this.$n("send",[this.$check_condition(receiver),"!"],this.$send_map(nil,nil,not_t,begin_t,[receiver],end_t))}),-2),$def(self,"$logical_op",(function(type,lhs,op_t,rhs){return this.$n(type,[lhs,rhs],this.$binary_op_map(lhs,op_t,rhs))}),4),$def(self,"$condition",(function(cond_t,cond,then_t,if_true,else_t,if_false,end_t){return this.$n("if",[this.$check_condition(cond),if_true,if_false],this.$condition_map(cond_t,cond,then_t,if_true,else_t,if_false,end_t))}),7),$def(self,"$condition_mod",(function(if_true,if_false,cond_t,cond){var $ret_or_1;return this.$n("if",[this.$check_condition(cond),if_true,if_false],this.$keyword_mod_map($truthy($ret_or_1=if_true)?$ret_or_1:if_false,cond_t,cond))}),4),$def(self,"$ternary",(function(cond,question_t,if_true,colon_t,if_false){return this.$n("if",[this.$check_condition(cond),if_true,if_false],this.$ternary_map(cond,question_t,if_true,colon_t,if_false))}),5),$def(self,"$when",(function(when_t,patterns,then_t,body){var children;return children=patterns["$<<"](body),this.$n("when",children,this.$keyword_map(when_t,then_t,children,nil))}),4),$def(self,"$case",(function(case_t,expr,when_bodies,else_t,else_body,end_t){return this.$n("case",[expr].concat($to_a(when_bodies["$<<"](else_body))),this.$condition_map(case_t,expr,nil,nil,else_t,else_body,end_t))}),6),$def(self,"$loop",(function(type,keyword_t,cond,do_t,body,end_t){return this.$n(type,[this.$check_condition(cond),body],this.$keyword_map(keyword_t,do_t,nil,end_t))}),6),$def(self,"$loop_mod",(function(type,body,keyword_t,cond){return $eqeq(body.$type(),"kwbegin")&&(type+="_post"),this.$n(type,[this.$check_condition(cond),body],this.$keyword_mod_map(body,keyword_t,cond))}),4),$def(self,"$for",(function(for_t,iterator,in_t,iteratee,do_t,body,end_t){return this.$n("for",[iterator,iteratee,body],this.$for_map(for_t,in_t,do_t,end_t))}),7),$def(self,"$keyword_cmd",(function(type,keyword_t,lparen_t,args,rparen_t){var last_arg=nil;return null==lparen_t&&(lparen_t=nil),null==args&&(args=[]),null==rparen_t&&(rparen_t=nil),$eqeq(type,"yield")&&$truthy($rb_gt(args.$count(),0))&&(last_arg=args.$last(),$eqeq(last_arg.$type(),"block_pass")&&this.$diagnostic("error","block_given_to_yield",nil,this.$loc(keyword_t),[last_arg.$loc().$expression()])),$truthy(["yield","super"]["$include?"](type))&&$truthy(this.$class().$emit_kwargs())&&this.$rewrite_hash_args_to_kwargs(args),this.$n(type,args,this.$keyword_map(keyword_t,lparen_t,args,rparen_t))}),-3),$def(self,"$preexe",(function(preexe_t,lbrace_t,compstmt,rbrace_t){return this.$n("preexe",[compstmt],this.$keyword_map(preexe_t,lbrace_t,[],rbrace_t))}),4),$def(self,"$postexe",(function(postexe_t,lbrace_t,compstmt,rbrace_t){return this.$n("postexe",[compstmt],this.$keyword_map(postexe_t,lbrace_t,[],rbrace_t))}),4),$def(self,"$rescue_body",(function(rescue_t,exc_list,assoc_t,exc_var,then_t,compound_stmt){return this.$n("resbody",[exc_list,exc_var,compound_stmt],this.$rescue_body_map(rescue_t,exc_list,assoc_t,exc_var,then_t,compound_stmt))}),6),$def(self,"$begin_body",(function(compound_stmt,rescue_bodies,else_t,else_,ensure_t,ensure_){var statements=nil;return null==rescue_bodies&&(rescue_bodies=[]),null==else_t&&(else_t=nil),null==else_&&(else_=nil),null==ensure_t&&(ensure_t=nil),null==ensure_&&(ensure_=nil),$truthy(rescue_bodies["$any?"]())?compound_stmt=$truthy(else_t)?this.$n("rescue",[compound_stmt].concat($to_a($rb_plus(rescue_bodies,[else_]))),this.$eh_keyword_map(compound_stmt,nil,rescue_bodies,else_t,else_)):this.$n("rescue",[compound_stmt].concat($to_a($rb_plus(rescue_bodies,[nil]))),this.$eh_keyword_map(compound_stmt,nil,rescue_bodies,nil,nil)):$truthy(else_t)&&(statements=[],$not(compound_stmt["$nil?"]())&&($eqeq(compound_stmt.$type(),"begin")?statements=$rb_plus(statements,compound_stmt.$children()):statements.$push(compound_stmt)),statements.$push(this.$n("begin",[else_],this.$collection_map(else_t,[else_],nil))),compound_stmt=this.$n("begin",statements,this.$collection_map(nil,statements,nil))),$truthy(ensure_t)&&(compound_stmt=this.$n("ensure",[compound_stmt,ensure_],this.$eh_keyword_map(compound_stmt,ensure_t,[ensure_],nil,nil))),compound_stmt}),-2),$def(self,"$compstmt",(function(statements){return $truthy(statements["$none?"]())?nil:$truthy(statements["$one?"]())?statements.$first():this.$n("begin",statements,this.$collection_map(nil,statements,nil))}),1),$def(self,"$begin",(function(begin_t,body,end_t){return $truthy(body["$nil?"]())?this.$n0("begin",this.$collection_map(begin_t,nil,end_t)):$eqeq(body.$type(),"mlhs")||$eqeq(body.$type(),"begin")&&$truthy(body.$loc().$begin()["$nil?"]())&&$truthy(body.$loc().$end()["$nil?"]())?this.$n(body.$type(),body.$children(),this.$collection_map(begin_t,body.$children(),end_t)):this.$n("begin",[body],this.$collection_map(begin_t,[body],end_t))}),3),$def(self,"$begin_keyword",(function(begin_t,body,end_t){return $truthy(body["$nil?"]())?this.$n0("kwbegin",this.$collection_map(begin_t,nil,end_t)):$eqeq(body.$type(),"begin")&&$truthy(body.$loc().$begin()["$nil?"]())&&$truthy(body.$loc().$end()["$nil?"]())?this.$n("kwbegin",body.$children(),this.$collection_map(begin_t,body.$children(),end_t)):this.$n("kwbegin",[body],this.$collection_map(begin_t,[body],end_t))}),3),$def(self,"$case_match",(function(case_t,expr,in_bodies,else_t,else_body,end_t){return $truthy(else_t)&&$not(else_body)&&(else_body=this.$n("empty_else",nil,this.$token_map(else_t))),this.$n("case_match",[expr].concat($to_a(in_bodies["$<<"](else_body))),this.$condition_map(case_t,expr,nil,nil,else_t,else_body,end_t))}),6),$def(self,"$in_match",(function(lhs,in_t,rhs){return this.$n("in_match",[lhs,rhs],this.$binary_op_map(lhs,in_t,rhs))}),3),$def(self,"$match_pattern",(function(lhs,match_t,rhs){return this.$n("match_pattern",[lhs,rhs],this.$binary_op_map(lhs,match_t,rhs))}),3),$def(self,"$match_pattern_p",(function(lhs,match_t,rhs){return this.$n("match_pattern_p",[lhs,rhs],this.$binary_op_map(lhs,match_t,rhs))}),3),$def(self,"$in_pattern",(function(in_t,pattern,guard,then_t,body){var children=nil;return children=[pattern,guard,body],this.$n("in_pattern",children,this.$keyword_map(in_t,then_t,children.$compact(),nil))}),5),$def(self,"$if_guard",(function(if_t,if_body){return this.$n("if_guard",[if_body],this.$guard_map(if_t,if_body))}),2),$def(self,"$unless_guard",(function(unless_t,unless_body){return this.$n("unless_guard",[unless_body],this.$guard_map(unless_t,unless_body))}),2),$def(self,"$match_var",(function(name_t){var name,name_l;return name=this.$value(name_t).$to_sym(),name_l=this.$loc(name_t),this.$check_lvar_name(name,name_l),this.$check_duplicate_pattern_variable(name,name_l),this.parser.$static_env().$declare(name),this.$n("match_var",[name],this.$variable_map(name_t))}),1),$def(self,"$match_hash_var",(function(name_t){var name,name_l,expr_l=nil;return name=this.$value(name_t).$to_sym(),name_l=(expr_l=this.$loc(name_t)).$adjust($hash2(["end_pos"],{end_pos:-1})),this.$check_lvar_name(name,name_l),this.$check_duplicate_pattern_variable(name,name_l),this.parser.$static_env().$declare(name),this.$n("match_var",[name],$$$($$$($$("Source"),"Map"),"Variable").$new(name_l,expr_l))}),1),$def(self,"$match_hash_var_from_str",(function(begin_t,strings,end_t){var $a,$ret_or_1,string=nil,name=nil,name_l=nil,begin_l=nil,end_l=nil,expr_l=nil;return $truthy($rb_gt(strings.$length(),1))&&this.$diagnostic("error","pm_interp_in_var_name",nil,this.$loc(begin_t).$join(this.$loc(end_t))),string=strings["$[]"](0),$eqeqeq("str",$ret_or_1=string.$type())?(name=null==($a=[].concat($to_a(string)))[0]?nil:$a[0],name_l=string.$loc().$expression(),this.$check_lvar_name(name,name_l),this.$check_duplicate_pattern_variable(name,name_l),this.parser.$static_env().$declare(name),$truthy(begin_l=string.$loc().$begin())&&(name_l=name_l.$adjust($hash2(["begin_pos"],{begin_pos:begin_l.$length()}))),$truthy(end_l=string.$loc().$end())&&(name_l=name_l.$adjust($hash2(["end_pos"],{end_pos:end_l.$length()["$-@"]()}))),expr_l=this.$loc(begin_t).$join(string.$loc().$expression()).$join(this.$loc(end_t)),this.$n("match_var",[name.$to_sym()],$$$($$$($$("Source"),"Map"),"Variable").$new(name_l,expr_l))):$eqeqeq("begin",$ret_or_1)?this.$match_hash_var_from_str(begin_t,string.$children(),end_t):this.$diagnostic("error","pm_interp_in_var_name",nil,this.$loc(begin_t).$join(this.$loc(end_t)))}),3),$def(self,"$match_rest",(function(star_t,name_t){var name=nil;return null==name_t&&(name_t=nil),$truthy(name_t["$nil?"]())?this.$n0("match_rest",this.$unary_op_map(star_t)):(name=this.$match_var(name_t),this.$n("match_rest",[name],this.$unary_op_map(star_t,name)))}),-2),$def(self,"$hash_pattern",(function(lbrace_t,kwargs,rbrace_t){var args;return args=this.$check_duplicate_args(kwargs),this.$n("hash_pattern",args,this.$collection_map(lbrace_t,args,rbrace_t))}),3),$def(self,"$array_pattern",(function(lbrack_t,elements,rbrack_t){var node_elements,node_type,trailing_comma=nil;return $truthy(elements["$nil?"]())?this.$n("array_pattern",nil,this.$collection_map(lbrack_t,[],rbrack_t)):(trailing_comma=!1,node_elements=$send(elements,"map",[],(function(element){return null==element&&(element=nil),$eqeq(element.$type(),"match_with_trailing_comma")?(trailing_comma=!0,element.$children().$first()):(trailing_comma=!1,element)}),1),node_type=$truthy(trailing_comma)?"array_pattern_with_tail":"array_pattern",this.$n(node_type,node_elements,this.$collection_map(lbrack_t,elements,rbrack_t)))}),3),$def(self,"$find_pattern",(function(lbrack_t,elements,rbrack_t){return this.$n("find_pattern",elements,this.$collection_map(lbrack_t,elements,rbrack_t))}),3),$def(self,"$match_with_trailing_comma",(function(match,comma_t){return this.$n("match_with_trailing_comma",[match],this.$expr_map(match.$loc().$expression().$join(this.$loc(comma_t))))}),2),$def(self,"$const_pattern",(function(const$,ldelim_t,pattern,rdelim_t){return this.$n("const_pattern",[const$,pattern],$$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(ldelim_t),this.$loc(rdelim_t),const$.$loc().$expression().$join(this.$loc(rdelim_t))))}),4),$def(self,"$pin",(function(pin_t,var$){return this.$n("pin",[var$],this.$send_unary_op_map(pin_t,var$))}),2),$def(self,"$match_alt",(function(left,pipe_t,right){var source_map;return source_map=this.$binary_op_map(left,pipe_t,right),this.$n("match_alt",[left,right],source_map)}),3),$def(self,"$match_as",(function(value,assoc_t,as){var source_map;return source_map=this.$binary_op_map(value,assoc_t,as),this.$n("match_as",[value,as],source_map)}),3),$def(self,"$match_nil_pattern",(function(dstar_t,nil_t){return this.$n0("match_nil_pattern",this.$arg_prefix_map(dstar_t,nil_t))}),2),$def(self,"$match_pair",(function(label_type,label,value){var $a,begin_t=nil,parts=nil,end_t=nil,label_loc=nil,var_name=nil;return $eqeq(label_type,"label")?(this.$check_duplicate_pattern_key(label["$[]"](0),label["$[]"](1)),this.$pair_keyword(label,value)):(begin_t=null==($a=$to_ary(label))[0]?nil:$a[0],parts=null==$a[1]?nil:$a[1],end_t=null==$a[2]?nil:$a[2],label_loc=this.$loc(begin_t).$join(this.$loc(end_t)),$truthy(var_name=this.$static_string(parts))?this.$check_duplicate_pattern_key(var_name,label_loc):this.$diagnostic("error","pm_interp_in_var_name",nil,label_loc),this.$pair_quoted(begin_t,parts,end_t,value))}),3),$def(self,"$match_label",(function(label_type,label){var $a,begin_t=nil,strings=nil,end_t=nil;return $eqeq(label_type,"label")?this.$match_hash_var(label):(begin_t=null==($a=$to_ary(label))[0]?nil:$a[0],strings=null==$a[1]?nil:$a[1],end_t=null==$a[2]?nil:$a[2],this.$match_hash_var_from_str(begin_t,strings,end_t))}),2),self.$private(),$def(self,"$check_condition",(function(cond){var $a,$ret_or_1,lhs=nil,rhs=nil,type=nil,$ret_or_2=nil;return $eqeqeq("masgn",$ret_or_1=cond.$type())?$truthy($rb_le(this.parser.$version(),23))?this.$diagnostic("error","masgn_as_condition",nil,cond.$loc().$expression()):cond:$eqeqeq("begin",$ret_or_1)?$eqeq(cond.$children().$count(),1)?cond.$updated(nil,[this.$check_condition(cond.$children().$last())]):cond:$eqeqeq("and",$ret_or_1)||$eqeqeq("or",$ret_or_1)||$eqeqeq("irange",$ret_or_1)||$eqeqeq("erange",$ret_or_1)?(lhs=null==($a=[].concat($to_a(cond)))[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],type=$eqeqeq("irange",$ret_or_2=cond.$type())?"iflipflop":$eqeqeq("erange",$ret_or_2)?"eflipflop":nil,$truthy(["and","or"]["$include?"](cond.$type()))&&$eqeq(this.parser.$version(),18)?cond:cond.$updated(type,[this.$check_condition(lhs),this.$check_condition(rhs)])):$eqeqeq("regexp",$ret_or_1)?this.$n("match_current_line",[cond],this.$expr_map(cond.$loc().$expression())):cond}),1),$def(self,"$check_duplicate_args",(function(args,map){return null==map&&(map=$hash2([],{})),$send(args,"each",[],(function $$15(this_arg){var $ret_or_1,self=null==$$15.$$s?this:$$15.$$s;return null==this_arg&&(this_arg=nil),$eqeqeq("arg",$ret_or_1=this_arg.$type())||$eqeqeq("optarg",$ret_or_1)||$eqeqeq("restarg",$ret_or_1)||$eqeqeq("blockarg",$ret_or_1)||$eqeqeq("kwarg",$ret_or_1)||$eqeqeq("kwoptarg",$ret_or_1)||$eqeqeq("kwrestarg",$ret_or_1)||$eqeqeq("shadowarg",$ret_or_1)?self.$check_duplicate_arg(this_arg,map):$eqeqeq("procarg0",$ret_or_1)?$truthy(this_arg.$children()["$[]"](0)["$is_a?"]($$("Symbol")))?self.$check_duplicate_arg(this_arg,map):self.$check_duplicate_args(this_arg.$children(),map):$eqeqeq("mlhs",$ret_or_1)?self.$check_duplicate_args(this_arg.$children(),map):nil}),{$$arity:1,$$s:this})}),-2),$def(self,"$check_duplicate_arg",(function(this_arg,map){var $a,this_name,that_name,that_arg=nil,$writer=nil;return null==map&&(map=$hash2([],{})),this_name=null==($a=[].concat($to_a(this_arg)))[0]?nil:$a[0],that_arg=map["$[]"](this_name),that_name=null==($a=[].concat($to_a(that_arg)))[0]?nil:$a[0],$truthy(that_arg["$nil?"]())?($send(map,"[]=",$to_a($writer=[this_name,this_arg])),$writer[$rb_minus($writer.length,1)]):$truthy(this["$arg_name_collides?"](this_name,that_name))?this.$diagnostic("error","duplicate_argument",nil,this_arg.$loc().$name(),[that_arg.$loc().$name()]):nil}),-2),$def(self,"$validate_no_forward_arg_after_restarg",(function(args){var restarg=nil,forward_arg=nil;return restarg=nil,forward_arg=nil,$send(args,"each",[],(function(arg){var $ret_or_1;return null==arg&&(arg=nil),$eqeqeq("restarg",$ret_or_1=arg.$type())?restarg=arg:$eqeqeq("forward_arg",$ret_or_1)?forward_arg=arg:nil}),1),$not(forward_arg["$nil?"]())&&$not(restarg["$nil?"]())?this.$diagnostic("error","forward_arg_after_restarg",nil,forward_arg.$loc().$expression(),[restarg.$loc().$expression()]):nil}),1),$def(self,"$check_assignment_to_numparam",(function(name,loc){var assigning_to_numparam,$ret_or_1,$ret_or_2;return $truthy($rb_lt(this.parser.$version(),27))?nil:(assigning_to_numparam=$truthy($ret_or_1=$truthy($ret_or_2=this.parser.$context()["$in_dynamic_block?"]())?name["$=~"](/^_([1-9])$/):$ret_or_2)?this.parser.$max_numparam_stack()["$has_numparams?"]():$ret_or_1,$truthy(assigning_to_numparam)?this.$diagnostic("error","cant_assign_to_numparam",$hash2(["name"],{name:name}),loc):nil)}),2),$def(self,"$check_reserved_for_numparam",(function(name,loc){return $truthy($rb_lt(this.parser.$version(),30))?nil:$truthy(name["$=~"](/^_([1-9])$/))?this.$diagnostic("error","reserved_for_numparam",$hash2(["name"],{name:name}),loc):nil}),2),$def(self,"$arg_name_collides?",(function(this_name,that_name){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $eqeqeq(18,$ret_or_1=this.parser.$version())?this_name["$=="](that_name):$eqeqeq(19,$ret_or_1)?$truthy($ret_or_2=this_name["$!="]("_"))?this_name["$=="](that_name):$ret_or_2:$truthy($ret_or_2=$truthy($ret_or_3=this_name)?this_name["$[]"](0)["$!="]("_"):$ret_or_3)?this_name["$=="](that_name):$ret_or_2}),2),$def(self,"$check_lvar_name",(function(name,loc){return $truthy(name["$=~"](/^[[[:lower:]]_][[[:alnum:]]_]*$/))?nil:this.$diagnostic("error","lvar_name",$hash2(["name"],{name:name}),loc)}),2),$def(self,"$check_duplicate_pattern_variable",(function(name,loc){return $truthy(name.$to_s()["$start_with?"]("_"))?nil:($truthy(this.parser.$pattern_variables()["$declared?"](name))&&this.$diagnostic("error","duplicate_variable_name",$hash2(["name"],{name:name.$to_s()}),loc),this.parser.$pattern_variables().$declare(name))}),2),$def(self,"$check_duplicate_pattern_key",(function(name,loc){return $truthy(this.parser.$pattern_hash_keys()["$declared?"](name))&&this.$diagnostic("error","duplicate_pattern_key",$hash2(["name"],{name:name.$to_s()}),loc),this.parser.$pattern_hash_keys().$declare(name)}),2),$def(self,"$n",(function(type,children,source_map){return $$$($$("AST"),"Node").$new(type,children,$hash2(["location"],{location:source_map}))}),3),$def(self,"$n0",(function(type,source_map){return this.$n(type,[],source_map)}),2),$def(self,"$join_exprs",(function(left_expr,right_expr){return left_expr.$loc().$expression().$join(right_expr.$loc().$expression())}),2),$def(self,"$token_map",(function(token){return $$$($$("Source"),"Map").$new(this.$loc(token))}),1),$def(self,"$delimited_string_map",(function(string_t){var begin_l,end_l,str_range=nil;return begin_l=(str_range=this.$loc(string_t)).$with($hash2(["end_pos"],{end_pos:$rb_plus(str_range.$begin_pos(),1)})),end_l=str_range.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(str_range.$end_pos(),1)})),$$$($$$($$("Source"),"Map"),"Collection").$new(begin_l,end_l,this.$loc(string_t))}),1),$def(self,"$prefix_string_map",(function(symbol){var begin_l,str_range=nil;return begin_l=(str_range=this.$loc(symbol)).$with($hash2(["end_pos"],{end_pos:$rb_plus(str_range.$begin_pos(),1)})),$$$($$$($$("Source"),"Map"),"Collection").$new(begin_l,nil,this.$loc(symbol))}),1),$def(self,"$unquoted_map",(function(token){return $$$($$$($$("Source"),"Map"),"Collection").$new(nil,nil,this.$loc(token))}),1),$def(self,"$pair_keyword_map",(function(key_t,value_e){var key_l,colon_l,key_range=nil;return key_l=(key_range=this.$loc(key_t)).$adjust($hash2(["end_pos"],{end_pos:-1})),colon_l=key_range.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(key_range.$end_pos(),1)})),[$$$($$$($$("Source"),"Map"),"Collection").$new(nil,nil,key_l),$$$($$$($$("Source"),"Map"),"Operator").$new(colon_l,key_range.$join(value_e.$loc().$expression()))]}),2),$def(self,"$pair_quoted_map",(function(begin_t,end_t,value_e){var quote_l,colon_l,end_l=nil;return quote_l=(end_l=this.$loc(end_t)).$with($hash2(["begin_pos","end_pos"],{begin_pos:$rb_minus(end_l.$end_pos(),2),end_pos:$rb_minus(end_l.$end_pos(),1)})),colon_l=end_l.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(end_l.$end_pos(),1)})),[[this.$value(end_t),quote_l],$$$($$$($$("Source"),"Map"),"Operator").$new(colon_l,this.$loc(begin_t).$join(value_e.$loc().$expression()))]}),3),$def(self,"$expr_map",(function(loc){return $$$($$("Source"),"Map").$new(loc)}),1),$def(self,"$collection_map",(function(begin_t,parts,end_t){var expr_l=nil;return $truthy(begin_t["$nil?"]())||$truthy(end_t["$nil?"]())?$truthy(parts["$any?"]())?expr_l=this.$join_exprs(parts.$first(),parts.$last()):$not(begin_t["$nil?"]())?expr_l=this.$loc(begin_t):$not(end_t["$nil?"]())&&(expr_l=this.$loc(end_t)):expr_l=this.$loc(begin_t).$join(this.$loc(end_t)),$$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(begin_t),this.$loc(end_t),expr_l)}),3),$def(self,"$string_map",(function(begin_t,parts,end_t){var expr_l=nil;return $truthy(begin_t)&&$truthy(this.$value(begin_t)["$start_with?"]("<<"))?(expr_l=$truthy(parts["$any?"]())?this.$join_exprs(parts.$first(),parts.$last()):this.$loc(end_t).$begin(),$$$($$$($$("Source"),"Map"),"Heredoc").$new(this.$loc(begin_t),expr_l,this.$loc(end_t))):this.$collection_map(begin_t,parts,end_t)}),3),$def(self,"$regexp_map",(function(begin_t,end_t,options_e){return $$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(begin_t),this.$loc(end_t),this.$loc(begin_t).$join(options_e.$loc().$expression()))}),3),$def(self,"$constant_map",(function(scope,colon2_t,name_t){var expr_l=nil;return expr_l=$truthy(scope["$nil?"]())?this.$loc(name_t):scope.$loc().$expression().$join(this.$loc(name_t)),$$$($$$($$("Source"),"Map"),"Constant").$new(this.$loc(colon2_t),this.$loc(name_t),expr_l)}),3),$def(self,"$variable_map",(function(name_t){return $$$($$$($$("Source"),"Map"),"Variable").$new(this.$loc(name_t))}),1),$def(self,"$binary_op_map",(function(left_e,op_t,right_e){return $$$($$$($$("Source"),"Map"),"Operator").$new(this.$loc(op_t),this.$join_exprs(left_e,right_e))}),3),$def(self,"$unary_op_map",(function(op_t,arg_e){var expr_l=nil;return null==arg_e&&(arg_e=nil),expr_l=$truthy(arg_e["$nil?"]())?this.$loc(op_t):this.$loc(op_t).$join(arg_e.$loc().$expression()),$$$($$$($$("Source"),"Map"),"Operator").$new(this.$loc(op_t),expr_l)}),-2),$def(self,"$range_map",(function(start_e,op_t,end_e){var expr_l=nil;return $truthy(start_e)&&$truthy(end_e)?expr_l=this.$join_exprs(start_e,end_e):$truthy(start_e)?expr_l=start_e.$loc().$expression().$join(this.$loc(op_t)):$truthy(end_e)&&(expr_l=this.$loc(op_t).$join(end_e.$loc().$expression())),$$$($$$($$("Source"),"Map"),"Operator").$new(this.$loc(op_t),expr_l)}),3),$def(self,"$arg_prefix_map",(function(op_t,name_t){var expr_l=nil;return null==name_t&&(name_t=nil),expr_l=$truthy(name_t["$nil?"]())?this.$loc(op_t):this.$loc(op_t).$join(this.$loc(name_t)),$$$($$$($$("Source"),"Map"),"Variable").$new(this.$loc(name_t),expr_l)}),-2),$def(self,"$kwarg_map",(function(name_t,value_e){var name_range,expr_l=nil;return null==value_e&&(value_e=nil),name_range=this.$loc(name_t).$adjust($hash2(["end_pos"],{end_pos:-1})),expr_l=$truthy(value_e)?this.$loc(name_t).$join(value_e.$loc().$expression()):this.$loc(name_t),$$$($$$($$("Source"),"Map"),"Variable").$new(name_range,expr_l)}),-2),$def(self,"$module_definition_map",(function(keyword_t,name_e,operator_t,end_t){var name_l=nil;return $truthy(name_e)&&(name_l=name_e.$loc().$expression()),$$$($$$($$("Source"),"Map"),"Definition").$new(this.$loc(keyword_t),this.$loc(operator_t),name_l,this.$loc(end_t))}),4),$def(self,"$definition_map",(function(keyword_t,operator_t,name_t,end_t){return $$$($$$($$("Source"),"Map"),"MethodDefinition").$new(this.$loc(keyword_t),this.$loc(operator_t),this.$loc(name_t),this.$loc(end_t),nil,nil)}),4),$def(self,"$endless_definition_map",(function(keyword_t,operator_t,name_t,assignment_t,body_e){var body_l;return body_l=body_e.$loc().$expression(),$$$($$$($$("Source"),"Map"),"MethodDefinition").$new(this.$loc(keyword_t),this.$loc(operator_t),this.$loc(name_t),nil,this.$loc(assignment_t),body_l)}),5),$def(self,"$send_map",(function(receiver_e,dot_t,selector_t,begin_t,args,end_t){var begin_l=nil,end_l=nil;return null==begin_t&&(begin_t=nil),null==args&&(args=[]),null==end_t&&(end_t=nil),$truthy(receiver_e)?begin_l=receiver_e.$loc().$expression():$truthy(selector_t)&&(begin_l=this.$loc(selector_t)),$truthy(end_t)?end_l=this.$loc(end_t):$truthy(args["$any?"]())?end_l=args.$last().$loc().$expression():$truthy(selector_t)&&(end_l=this.$loc(selector_t)),$$$($$$($$("Source"),"Map"),"Send").$new(this.$loc(dot_t),this.$loc(selector_t),this.$loc(begin_t),this.$loc(end_t),begin_l.$join(end_l))}),-4),$def(self,"$var_send_map",(function(variable_e){return $$$($$$($$("Source"),"Map"),"Send").$new(nil,variable_e.$loc().$expression(),nil,nil,variable_e.$loc().$expression())}),1),$def(self,"$send_binary_op_map",(function(lhs_e,selector_t,rhs_e){return $$$($$$($$("Source"),"Map"),"Send").$new(nil,this.$loc(selector_t),nil,nil,this.$join_exprs(lhs_e,rhs_e))}),3),$def(self,"$send_unary_op_map",(function(selector_t,arg_e){var expr_l=nil;return expr_l=$truthy(arg_e["$nil?"]())?this.$loc(selector_t):this.$loc(selector_t).$join(arg_e.$loc().$expression()),$$$($$$($$("Source"),"Map"),"Send").$new(nil,this.$loc(selector_t),nil,nil,expr_l)}),2),$def(self,"$index_map",(function(receiver_e,lbrack_t,rbrack_t){return $$$($$$($$("Source"),"Map"),"Index").$new(this.$loc(lbrack_t),this.$loc(rbrack_t),receiver_e.$loc().$expression().$join(this.$loc(rbrack_t)))}),3),$def(self,"$send_index_map",(function(receiver_e,lbrack_t,rbrack_t){return $$$($$$($$("Source"),"Map"),"Send").$new(nil,this.$loc(lbrack_t).$join(this.$loc(rbrack_t)),nil,nil,receiver_e.$loc().$expression().$join(this.$loc(rbrack_t)))}),3),$def(self,"$block_map",(function(receiver_l,begin_t,end_t){return $$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(begin_t),this.$loc(end_t),receiver_l.$join(this.$loc(end_t)))}),3),$def(self,"$keyword_map",(function(keyword_t,begin_t,args,end_t){var $ret_or_1,end_l=nil;return args=$truthy($ret_or_1=args)?$ret_or_1:[],end_l=$truthy(end_t)?this.$loc(end_t):$truthy(args["$any?"]())&&$not(args.$last()["$nil?"]())?args.$last().$loc().$expression():$truthy(args["$any?"]())&&$truthy($rb_gt(args.$count(),1))?args["$[]"](-2).$loc().$expression():this.$loc(keyword_t),$$$($$$($$("Source"),"Map"),"Keyword").$new(this.$loc(keyword_t),this.$loc(begin_t),this.$loc(end_t),this.$loc(keyword_t).$join(end_l))}),4),$def(self,"$keyword_mod_map",(function(pre_e,keyword_t,post_e){return $$$($$$($$("Source"),"Map"),"Keyword").$new(this.$loc(keyword_t),nil,nil,this.$join_exprs(pre_e,post_e))}),3),$def(self,"$condition_map",(function(keyword_t,cond_e,begin_t,body_e,else_t,else_e,end_t){var end_l=nil;return end_l=$truthy(end_t)?this.$loc(end_t):$truthy(else_e)&&$truthy(else_e.$loc().$expression())?else_e.$loc().$expression():$truthy(this.$loc(else_t))?this.$loc(else_t):$truthy(body_e)&&$truthy(body_e.$loc().$expression())?body_e.$loc().$expression():$truthy(this.$loc(begin_t))?this.$loc(begin_t):cond_e.$loc().$expression(),$$$($$$($$("Source"),"Map"),"Condition").$new(this.$loc(keyword_t),this.$loc(begin_t),this.$loc(else_t),this.$loc(end_t),this.$loc(keyword_t).$join(end_l))}),7),$def(self,"$ternary_map",(function(begin_e,question_t,mid_e,colon_t,end_e){return $$$($$$($$("Source"),"Map"),"Ternary").$new(this.$loc(question_t),this.$loc(colon_t),this.$join_exprs(begin_e,end_e))}),5),$def(self,"$for_map",(function(keyword_t,in_t,begin_t,end_t){return $$$($$$($$("Source"),"Map"),"For").$new(this.$loc(keyword_t),this.$loc(in_t),this.$loc(begin_t),this.$loc(end_t),this.$loc(keyword_t).$join(this.$loc(end_t)))}),4),$def(self,"$rescue_body_map",(function(keyword_t,exc_list_e,assoc_t,exc_var_e,then_t,compstmt_e){var end_l=nil;return $truthy(compstmt_e)&&(end_l=compstmt_e.$loc().$expression()),$truthy(end_l["$nil?"]())&&$truthy(then_t)&&(end_l=this.$loc(then_t)),$truthy(end_l["$nil?"]())&&$truthy(exc_var_e)&&(end_l=exc_var_e.$loc().$expression()),$truthy(end_l["$nil?"]())&&$truthy(exc_list_e)&&(end_l=exc_list_e.$loc().$expression()),$truthy(end_l["$nil?"]())&&(end_l=this.$loc(keyword_t)),$$$($$$($$("Source"),"Map"),"RescueBody").$new(this.$loc(keyword_t),this.$loc(assoc_t),this.$loc(then_t),this.$loc(keyword_t).$join(end_l))}),6),$def(self,"$eh_keyword_map",(function(compstmt_e,keyword_t,body_es,else_t,else_e){var begin_l=nil,end_l=nil;return begin_l=$truthy(compstmt_e["$nil?"]())?$truthy(keyword_t["$nil?"]())?body_es.$first().$loc().$expression():this.$loc(keyword_t):compstmt_e.$loc().$expression(),end_l=$truthy(else_t)?$truthy(else_e["$nil?"]())?this.$loc(else_t):else_e.$loc().$expression():$not(body_es.$last()["$nil?"]())?body_es.$last().$loc().$expression():this.$loc(keyword_t),$$$($$$($$("Source"),"Map"),"Condition").$new(this.$loc(keyword_t),nil,this.$loc(else_t),nil,begin_l.$join(end_l))}),5),$def(self,"$guard_map",(function(keyword_t,guard_body_e){var guard_body_l,keyword_l=nil;return keyword_l=this.$loc(keyword_t),guard_body_l=guard_body_e.$loc().$expression(),$$$($$$($$("Source"),"Map"),"Keyword").$new(keyword_l,nil,nil,keyword_l.$join(guard_body_l))}),2),$def(self,"$static_string",(function(nodes){try{return $send(nodes,"map",[],(function $$18(node){var $ret_or_1,self=null==$$18.$$s?this:$$18.$$s,string=nil;if(null==node&&(node=nil),$eqeqeq("str",$ret_or_1=node.$type()))return node.$children()["$[]"](0);if($eqeqeq("begin",$ret_or_1)){if($truthy(string=self.$static_string(node.$children())))return string;Opal.ret(nil)}else Opal.ret(nil)}),{$$arity:1,$$s:this}).$join()}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),1),$def(self,"$static_regexp",(function(parts,options){var source=nil;return source=this.$static_string(parts),$truthy(source["$nil?"]())?nil:(source=$truthy(options.$children()["$include?"]("u"))?source.$encode($$$($$("Encoding"),"UTF_8")):$truthy(options.$children()["$include?"]("e"))?source.$encode($$$($$("Encoding"),"EUC_JP")):$truthy(options.$children()["$include?"]("s"))?source.$encode($$$($$("Encoding"),"WINDOWS_31J")):$truthy(options.$children()["$include?"]("n"))?source.$encode($$$($$("Encoding"),"BINARY")):source,$$("Regexp").$new(source,$truthy(options.$children()["$include?"]("x"))?$$$($$("Regexp"),"EXTENDED"):nil))}),2),$def(self,"$static_regexp_node",(function(node){var $a,parts=nil,options=nil;return $eqeq(node.$type(),"regexp")?(parts=($a=[node.$children()["$[]"]($range(0,-2,!1)),node.$children()["$[]"](-1)])[0],options=$a[1],this.$static_regexp(parts,options)):nil}),1),$def(self,"$collapse_string_parts?",(function(parts){var $ret_or_1;return $truthy($ret_or_1=parts["$one?"]())?["str","dstr"]["$include?"](parts.$first().$type()):$ret_or_1}),1),$def(self,"$value",(function(token){return token["$[]"](0)}),1),$def(self,"$string_value",(function(token){return $truthy(token["$[]"](0)["$valid_encoding?"]())||this.$diagnostic("error","invalid_encoding",nil,token["$[]"](1)),token["$[]"](0)}),1),$def(self,"$loc",(function(token){return $truthy(token)&&$truthy(token["$[]"](0))?token["$[]"](1):nil}),1),$def(self,"$diagnostic",(function(type,reason,arguments$,location,highlights){return null==highlights&&(highlights=[]),this.parser.$diagnostics().$process($$("Diagnostic").$new(type,reason,arguments$,location,highlights)),$eqeq(type,"error")?this.parser.$send("yyerror"):nil}),-5),$def(self,"$validate_definee",(function(definee){var $ret_or_1;return!($eqeqeq("int",$ret_or_1=definee.$type())||$eqeqeq("str",$ret_or_1)||$eqeqeq("dstr",$ret_or_1)||$eqeqeq("sym",$ret_or_1)||$eqeqeq("dsym",$ret_or_1)||$eqeqeq("regexp",$ret_or_1)||$eqeqeq("array",$ret_or_1)||$eqeqeq("hash",$ret_or_1))||(this.$diagnostic("error","singleton_literal",nil,definee.$loc().$expression()),!1)}),1),$def(self,"$rewrite_hash_args_to_kwargs",(function(args){var $writer=nil;return $truthy(args["$any?"]())&&$truthy(this["$kwargs?"](args.$last()))?($writer=[$rb_minus(args.$length(),1),args["$[]"]($rb_minus(args.$length(),1)).$updated("kwargs")],$send(args,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):$truthy($rb_gt(args.$length(),1))&&$eqeq(args.$last().$type(),"block_pass")&&$truthy(this["$kwargs?"](args["$[]"]($rb_minus(args.$length(),2))))?($writer=[$rb_minus(args.$length(),2),args["$[]"]($rb_minus(args.$length(),2)).$updated("kwargs")],$send(args,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),1),$def(self,"$kwargs?",(function(node){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=node.$type()["$=="]("hash"))?node.$loc().$begin()["$nil?"]():$ret_or_2)?node.$loc().$end()["$nil?"]():$ret_or_1}),1)}(Opal.$r($nesting)("Builders"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/context"]=function(Opal){var $base,$parent_nesting,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$rb_gt=Opal.rb_gt,$alias=Opal.alias;return Opal.add_stubs("attr_reader,freeze,<<,pop,clear,empty?,==,last,include?,rindex,stack,nil?,!,>,in_block?,in_lambda?"),$base=$nesting[0],$parent_nesting=$nesting,function($base,$super){var self=$klass($base,null,"Context");return self.$$prototype.stack=nil,self.$attr_reader("stack"),$def(self,"$initialize",(function(){return this.stack=[],this.$freeze()}),0),$def(self,"$push",(function(state){return this.stack["$<<"](state)}),1),$def(self,"$pop",(function(){return this.stack.$pop()}),0),$def(self,"$reset",(function(){return this.stack.$clear()}),0),$def(self,"$empty?",(function(){return this.stack["$empty?"]()}),0),$def(self,"$in_class?",(function(){return this.stack.$last()["$=="]("class")}),0),$def(self,"$indirectly_in_def?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.stack["$include?"]("def"))?$ret_or_1:this.stack["$include?"]("defs")}),0),$def(self,"$class_definition_allowed?",(function(){var $ret_or_1,def_index=nil,sclass_index=nil,$ret_or_2=nil;return def_index=$send(this.$stack(),"rindex",[],(function(item){return null==item&&(item=nil),["def","defs"]["$include?"](item)}),1),sclass_index=this.$stack().$rindex("sclass"),$truthy($ret_or_1=def_index["$nil?"]())?$ret_or_1:$truthy($ret_or_2=sclass_index["$nil?"]()["$!"]())?$rb_gt(sclass_index,def_index):$ret_or_2}),0),$alias(self,"module_definition_allowed?","class_definition_allowed?"),$alias(self,"dynamic_const_definition_allowed?","class_definition_allowed?"),$def(self,"$in_block?",(function(){return this.stack.$last()["$=="]("block")}),0),$def(self,"$in_lambda?",(function(){return this.stack.$last()["$=="]("lambda")}),0),$def(self,"$in_dynamic_block?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$in_block?"]())?$ret_or_1:this["$in_lambda?"]()}),0),$def(self,"$in_def_open_args?",(function(){return this.stack.$last()["$=="]("def_open_args")}),0)}([$module($base,"Parser")].concat($parent_nesting)[0])},Opal.modules["parser/max_numparam_stack"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$rb_minus=Opal.rb_minus,$send=Opal.send,$to_a=Opal.to_a;return Opal.add_stubs("attr_reader,==,size,set,top,>,max,last,push,pop,private,-,length,[]="),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"MaxNumparamStack"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.stack=nil,self.$attr_reader("stack"),$const_set($nesting[0],"ORDINARY_PARAMS",-1),$def(self,"$initialize",(function(){return this.stack=[]}),0),$def(self,"$empty?",(function(){return this.stack.$size()["$=="](0)}),0),$def(self,"$has_ordinary_params!",(function(){return this.$set($$("ORDINARY_PARAMS"))}),0),$def(self,"$has_ordinary_params?",(function(){return this.$top()["$=="]($$("ORDINARY_PARAMS"))}),0),$def(self,"$has_numparams?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$top())?$rb_gt(this.$top(),0):$ret_or_1}),0),$def(self,"$register",(function(numparam){return this.$set([this.$top(),numparam].$max())}),1),$def(self,"$top",(function(){return this.stack.$last()}),0),$def(self,"$push",(function(){return this.stack.$push(0)}),0),$def(self,"$pop",(function(){return this.stack.$pop()}),0),self.$private(),$def(self,"$set",(function(value){var $writer;return $writer=[$rb_minus(this.stack.$length(),1),value],$send(this.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/current_arg_stack"]=function(Opal){var $base,$parent_nesting,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$rb_minus=Opal.rb_minus,$send=Opal.send,$to_a=Opal.to_a;return Opal.add_stubs("attr_reader,freeze,==,size,<<,-,length,[]=,pop,clear,last"),$base=$nesting[0],$parent_nesting=$nesting,function($base,$super){var self=$klass($base,null,"CurrentArgStack");return self.$$prototype.stack=nil,self.$attr_reader("stack"),$def(self,"$initialize",(function(){return this.stack=[],this.$freeze()}),0),$def(self,"$empty?",(function(){return this.stack.$size()["$=="](0)}),0),$def(self,"$push",(function(value){return this.stack["$<<"](value)}),1),$def(self,"$set",(function(value){var $writer;return $writer=[$rb_minus(this.stack.$length(),1),value],$send(this.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$pop",(function(){return this.stack.$pop()}),0),$def(self,"$reset",(function(){return this.stack.$clear()}),0),$def(self,"$top",(function(){return this.stack.$last()}),0)}([$module($base,"Parser")].concat($parent_nesting)[0])},Opal.modules["parser/variables_stack"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("push,empty?,<<,new,pop,clear,last,to_sym,include?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"VariablesStack"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.stack=nil,$def(self,"$initialize",(function(){return this.stack=[],this.$push()}),0),$def(self,"$empty?",(function(){return this.stack["$empty?"]()}),0),$def(self,"$push",(function(){return this.stack["$<<"]($$("Set").$new())}),0),$def(self,"$pop",(function(){return this.stack.$pop()}),0),$def(self,"$reset",(function(){return this.stack.$clear()}),0),$def(self,"$declare",(function(name){return this.stack.$last()["$<<"](name.$to_sym())}),1),$def(self,"$declared?",(function(name){return this.stack.$last()["$include?"](name.$to_sym())}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/base"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$defs=Opal.defs,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$gvars=Opal.gvars,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$def=Opal.def,$not=Opal.not,$eqeqeq=Opal.eqeqeq,$to_ary=Opal.to_ary,$hash2=Opal.hash2;return Opal.add_stubs("default_parser,setup_source_buffer,default_encoding,parse,parse_with_comments,read,new,all_errors_are_fatal=,diagnostics,-,ignore_warnings=,lambda,puts,render,consumer=,force_encoding,dup,==,name,raw_source=,source=,private_class_method,attr_reader,version,diagnostics=,static_env=,context=,parser=,[],class,reset,source_buffer=,do_parse,comments=,comments,tokens=,!,raise,tokens,private,advance,===,diagnostic,map,process,yyerror,token_to_str"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Base"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.diagnostics=$proto.lexer=$proto.static_env=$proto.context=$proto.builder=$proto.current_arg_stack=$proto.pattern_variables=$proto.pattern_hash_keys=nil,$defs(self,"$parse",(function(string,file,line){var source_buffer,parser=nil;return null==file&&(file="(string)"),null==line&&(line=1),parser=this.$default_parser(),source_buffer=this.$setup_source_buffer(file,line,string,parser.$default_encoding()),parser.$parse(source_buffer)}),-2),$defs(self,"$parse_with_comments",(function(string,file,line){var source_buffer,parser=nil;return null==file&&(file="(string)"),null==line&&(line=1),parser=this.$default_parser(),source_buffer=this.$setup_source_buffer(file,line,string,parser.$default_encoding()),parser.$parse_with_comments(source_buffer)}),-2),$defs(self,"$parse_file",(function(filename){return this.$parse($$("File").$read(filename),filename)}),1),$defs(self,"$parse_file_with_comments",(function(filename){return this.$parse_with_comments($$("File").$read(filename),filename)}),1),$defs(self,"$default_parser",(function(){var parser=nil,$writer=nil;return parser=this.$new(),$writer=[!0],$send(parser.$diagnostics(),"all_errors_are_fatal=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!0],$send(parser.$diagnostics(),"ignore_warnings=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[$send(this,"lambda",[],(function(diagnostic){return null==$gvars.stderr&&($gvars.stderr=nil),null==diagnostic&&(diagnostic=nil),$gvars.stderr.$puts(diagnostic.$render())}),1)],$send(parser.$diagnostics(),"consumer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],parser}),0),$defs(self,"$setup_source_buffer",(function(file,line,string,encoding){var source_buffer,$writer=nil;return string=string.$dup().$force_encoding(encoding),source_buffer=$$$($$("Source"),"Buffer").$new(file,line),$eqeq(this.$name(),"Parser::Ruby18")?($send(source_buffer,"raw_source=",$to_a($writer=[string])),$writer[$rb_minus($writer.length,1)]):($send(source_buffer,"source=",$to_a($writer=[string])),$writer[$rb_minus($writer.length,1)]),source_buffer}),4),self.$private_class_method("setup_source_buffer"),self.$attr_reader("lexer"),self.$attr_reader("diagnostics"),self.$attr_reader("builder"),self.$attr_reader("static_env"),self.$attr_reader("source_buffer"),self.$attr_reader("context"),self.$attr_reader("max_numparam_stack"),self.$attr_reader("current_arg_stack"),self.$attr_reader("pattern_variables"),self.$attr_reader("pattern_hash_keys"),$def(self,"$initialize",(function(builder){var $writer=nil;return null==builder&&(builder=$$$($$$($$("Parser"),"Builders"),"Default").$new()),this.diagnostics=$$$($$("Diagnostic"),"Engine").$new(),this.static_env=$$("StaticEnvironment").$new(),this.context=$$("Context").$new(),this.max_numparam_stack=$$("MaxNumparamStack").$new(),this.current_arg_stack=$$("CurrentArgStack").$new(),this.pattern_variables=$$("VariablesStack").$new(),this.pattern_hash_keys=$$("VariablesStack").$new(),this.lexer=$$("Lexer").$new(this.$version()),$writer=[this.diagnostics],$send(this.lexer,"diagnostics=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[this.static_env],$send(this.lexer,"static_env=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[this.context],$send(this.lexer,"context=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.builder=builder,$writer=[this],$send(this.builder,"parser=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.last_token=nil,$truthy($$$(this.$class(),"Racc_debug_parser"))&&$truthy($$("ENV")["$[]"]("RACC_DEBUG"))&&(this.yydebug=!0),this.$reset()}),-1),$def(self,"$reset",(function(){return this.source_buffer=nil,this.lexer.$reset(),this.static_env.$reset(),this.context.$reset(),this.current_arg_stack.$reset(),this.pattern_variables.$reset(),this.pattern_hash_keys.$reset(),this}),0),$def(self,"$parse",(function(source_buffer){var self=this,$writer=nil,$ret_or_1=nil;return function(){try{return $writer=[source_buffer],$send(self.lexer,"source_buffer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.source_buffer=source_buffer,$truthy($ret_or_1=self.$do_parse())?$ret_or_1:nil}finally{self.source_buffer=nil,$writer=[nil],$send(self.lexer,"source_buffer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}}()}),1),$def(self,"$parse_with_comments",(function(source_buffer){var self=this,$writer=nil;return function(){try{return $writer=[[]],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],[self.$parse(source_buffer),self.lexer.$comments()]}finally{$writer=[nil],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}}()}),1),$def(self,"$tokenize",(function(source_buffer,recover){var self=this,$writer=nil,ast=nil;return null==recover&&(recover=!1),function(){try{$writer=[[]],$send(self.lexer,"tokens=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[[]],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)];try{ast=self.$parse(source_buffer)}catch($err){if(!Opal.rescue($err,[$$$($$("Parser"),"SyntaxError")]))throw $err;try{$not(recover)&&self.$raise()}finally{Opal.pop_exception()}}return[ast,self.lexer.$comments(),self.lexer.$tokens()]}finally{$writer=[nil],$send(self.lexer,"tokens=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[nil],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}}()}),-2),self.$private(),$def(self,"$next_token",(function(){var token;return token=this.lexer.$advance(),this.last_token=token,token}),0),$def(self,"$check_kwarg_name",(function(name_t){var $ret_or_1;return $eqeqeq(/^[a-z_]/,$ret_or_1=name_t["$[]"](0))?nil:$eqeqeq(/^[A-Z]/,$ret_or_1)?this.$diagnostic("error","argument_const",nil,name_t):nil}),1),$def(self,"$diagnostic",(function(level,reason,arguments$,location_t,highlights_ts){var $a,location,highlights;return null==highlights_ts&&(highlights_ts=[]),$a=$to_ary(location_t),null==$a[0]?nil:$a[0],location=null==$a[1]?nil:$a[1],highlights=$send(highlights_ts,"map",[],(function(token){var $c;return null==token&&(token=nil),$c=$to_ary(token),null==$c[0]?nil:$c[0],null==$c[1]?nil:$c[1]}),1),this.diagnostics.$process($$("Diagnostic").$new(level,reason,arguments$,location,highlights)),$eqeq(level,"error")?this.$yyerror():nil}),-5),$def(self,"$on_error",(function(error_token_id,error_value,value_stack){var $a,token_name,location;return token_name=this.$token_to_str(error_token_id),null==($a=$to_ary(error_value))[0]?nil:$a[0],location=null==$a[1]?nil:$a[1],this.diagnostics.$process($$("Diagnostic").$new("error","unexpected_token",$hash2(["token"],{token:token_name}),location))}),3)}($nesting[0],$$$($$("Racc"),"Parser"),$nesting)}($nesting[0],$nesting)},Opal.modules["parser/rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("new,process,include?,type,remove,wrap,insert_before,insert_after,replace,freeze,join,extend,warn_of_deprecation,class,warned_of_deprecation=,-"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Rewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.source_rewriter=nil,$def(self,"$rewrite",(function(source_buffer,ast){return this.source_rewriter=$$$($$("Source"),"Rewriter").$new(source_buffer),this.$process(ast),this.source_rewriter.$process()}),2),$def(self,"$assignment?",(function(node){return["lvasgn","ivasgn","gvasgn","cvasgn","casgn"]["$include?"](node.$type())}),1),$def(self,"$remove",(function(range){return this.source_rewriter.$remove(range)}),1),$def(self,"$wrap",(function(range,before,after){return this.source_rewriter.$wrap(range,before,after)}),3),$def(self,"$insert_before",(function(range,content){return this.source_rewriter.$insert_before(range,content)}),2),$def(self,"$insert_after",(function(range,content){return this.source_rewriter.$insert_after(range,content)}),2),$def(self,"$replace",(function(range,content){return this.source_rewriter.$replace(range,content)}),2),$const_set($nesting[0],"DEPRECATION_WARNING",["Parser::Rewriter is deprecated.","Please update your code to use Parser::TreeRewriter instead"].$join("\n").$freeze()),self.$extend($$("Deprecation")),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this,$writer=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),self.$class().$warn_of_deprecation(),$writer=[!0],$send($$$($$("Source"),"Rewriter"),"warned_of_deprecation=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield)}),-1)}($nesting[0],$$$($$$($$("Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)},Opal.modules["parser/tree_rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$def=(Opal.hash,Opal.def);return Opal.add_stubs("new,process,include?,type,remove,wrap,insert_before,insert_after,replace"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"TreeRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.source_rewriter=nil,$def(self,"$rewrite",(function(source_buffer,ast,$kwargs){var policy;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return policy=Opal.kwrestargs($kwargs,{}),this.source_rewriter=$$$($$$($$("Parser"),"Source"),"TreeRewriter").$new(source_buffer,Opal.to_hash(policy)),this.$process(ast),this.source_rewriter.$process()}),-3),$def(self,"$assignment?",(function(node){return["lvasgn","ivasgn","gvasgn","cvasgn","casgn"]["$include?"](node.$type())}),1),$def(self,"$remove",(function(range){return this.source_rewriter.$remove(range)}),1),$def(self,"$wrap",(function(range,before,after){return this.source_rewriter.$wrap(range,before,after)}),3),$def(self,"$insert_before",(function(range,content){return this.source_rewriter.$insert_before(range,content)}),2),$def(self,"$insert_after",(function(range,content){return this.source_rewriter.$insert_after(range,content)}),2),$def(self,"$replace",(function(range,content){return this.source_rewriter.$replace(range,content)}),2)}($nesting[0],$$$($$$($$("Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)},Opal.modules.parser=function(Opal){var self=Opal.top,$nesting=[],$$=Opal.$r($nesting),$$$=(Opal.nil,Opal.$$$),$truthy=Opal.truthy,$module=Opal.module;return Opal.add_stubs("=~,require,raise"),$truthy($$("RUBY_VERSION")["$=~"](/^1\.[89]\./))&&(self.$require("parser/version"),self.$raise($$("LoadError"),"parser v"+$$$($$("Parser"),"VERSION")+" cannot run on Ruby "+$$("RUBY_VERSION")+".\nPlease upgrade to Ruby 2.0.0 or higher, or use an older version of the parser gem.\n")),self.$require("set"),self.$require("racc/parser"),self.$require("ast"),function($base,$parent_nesting){var self=$module($base,"Parser"),$nesting=[self].concat($parent_nesting);return self.$require("parser/version"),self.$require("parser/messages"),self.$require("parser/deprecation"),function($base){var self=$module($base,"AST");self.$require("parser/ast/node"),self.$require("parser/ast/processor"),self.$require("parser/meta")}($nesting[0]),function($base){var self=$module($base,"Source");self.$require("parser/source/buffer"),self.$require("parser/source/range"),self.$require("parser/source/comment"),self.$require("parser/source/comment/associator"),self.$require("parser/source/rewriter"),self.$require("parser/source/rewriter/action"),self.$require("parser/source/tree_rewriter"),self.$require("parser/source/tree_rewriter/action"),self.$require("parser/source/map"),self.$require("parser/source/map/operator"),self.$require("parser/source/map/collection"),self.$require("parser/source/map/constant"),self.$require("parser/source/map/variable"),self.$require("parser/source/map/keyword"),self.$require("parser/source/map/definition"),self.$require("parser/source/map/method_definition"),self.$require("parser/source/map/send"),self.$require("parser/source/map/index"),self.$require("parser/source/map/condition"),self.$require("parser/source/map/ternary"),self.$require("parser/source/map/for"),self.$require("parser/source/map/rescue_body"),self.$require("parser/source/map/heredoc"),self.$require("parser/source/map/objc_kwarg")}($nesting[0]),self.$require("parser/syntax_error"),self.$require("parser/clobbering_error"),self.$require("parser/diagnostic"),self.$require("parser/diagnostic/engine"),self.$require("parser/static_environment"),self.$require("parser/lexer"),self.$require("parser/lexer/literal"),self.$require("parser/lexer/stack_state"),self.$require("parser/lexer/dedenter"),function($base){$module($base,"Builders").$require("parser/builders/default")}($nesting[0]),self.$require("parser/context"),self.$require("parser/max_numparam_stack"),self.$require("parser/current_arg_stack"),self.$require("parser/variables_stack"),self.$require("parser/base"),self.$require("parser/rewriter"),self.$require("parser/tree_rewriter")}($nesting[0],$nesting)},Opal.modules["parser/ruby31"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$not=Opal.not,$send=Opal.send,$eqeq=Opal.eqeq,$rb_gt=Opal.rb_gt,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$hash=Opal.hash,$const_set=Opal.const_set,$to_ary=Opal.to_ary,$hash2=Opal.hash2,$slice=Opal.slice;return Opal.add_stubs("require,end_with?,[],!,include?,diagnostic,children,in_dynamic_block?,context,declared?,static_env,=~,expression,loc,has_ordinary_params?,max_numparam_stack,dup,stack,pop,reverse_each,==,>,declare,register,to_i,new,each,split,empty?,[]=,-,+,push,compstmt,<<,preexe,nil?,begin_body,state=,alias,gvar,back_ref,undef_method,condition_mod,loop_mod,rescue_body,postexe,multi_assign,assign,array,op_assign,index,call_method,const_op_assignable,const_fetch,endless_method_name,def_endless_method,cmdarg,cond,unextend,def_endless_singleton,logical_op,not_op,command_start=,in_kwarg,in_kwarg=,match_pattern,match_pattern_p,extend_static,block,keyword_cmd,multi_lhs,begin,splat,concat,assignable,index_asgn,attr_asgn,const_global,const,symbol_internal,range_inclusive,range_exclusive,binary_op,unary_op,match_op,ternary,associate,declared_forward_args?,forwarded_args,block_pass,declared_anonymous_blockarg?,begin_keyword,condition,loop,case,case_match,for,class_definition_allowed?,def_class,def_sclass,module_definition_allowed?,def_module,def_method,def_singleton,in_class?,arg,restarg,size,procarg0,args,has_ordinary_params!,set,shadowarg,extend_dynamic,call_lambda,has_numparams?,numargs,top,any?,when,in_pattern,if_guard,unless_guard,match_with_trailing_comma,array_pattern,find_pattern,hash_pattern,match_as,match_alt,const_pattern,match_rest,match_pair,match_label,match_nil_pattern,accessible,match_var,ident,pin,string_compose,dedent_string,dedent_level,string,character,xstring_compose,regexp_options,regexp_compose,words_compose,word,symbols_compose,string_internal,ivar,cvar,symbol,symbol_compose,respond_to?,negate,unary_num,integer,float,rational,complex,nil,self,true,false,__FILE__,__LINE__,__ENCODING__,nth_ref,declare_forward_args,forward_arg,check_kwarg_name,kwoptarg,kwarg,kwnilarg,kwrestarg,optarg,blockarg,declare_anonymous_blockarg,pair,pair_keyword,pair_label,pair_quoted,kwsplat,yyerrok"),self.$require("racc/parser.rb"),self.$require("parser"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var racc_action_table,racc_action_check,racc_action_pointer,racc_action_default,racc_goto_table,racc_goto_check,racc_goto_pointer,racc_goto_default,racc_reduce_table,racc_token_table,self=$klass($base,$super,"Ruby31"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),clist=nil,arr=nil,idx=nil,$proto=self.$$prototype;return $proto.current_arg_stack=$proto.max_numparam_stack=$proto.builder=$proto.lexer=$proto.static_env=$proto.context=$proto.pattern_variables=$proto.last_token=$proto.pattern_hash_keys=nil,$def(self,"$version",(function(){return 31}),0),$def(self,"$default_encoding",(function(){return $$$($$("Encoding"),"UTF_8")}),0),$def(self,"$endless_method_name",(function(name_t){return $not(["===","==","!=","<=",">="]["$include?"](name_t["$[]"](0)))&&$truthy(name_t["$[]"](0)["$end_with?"]("="))?this.$diagnostic("error","endless_setter",nil,name_t):nil}),1),$def(self,"$try_declare_numparam",(function(node){var self=this,name=nil,location=nil,raw_context=nil,raw_max_numparam_stack=nil;return name=node.$children()["$[]"](0),!!($truthy(name["$=~"](/^_[1-9]$/))&&$not(self.$static_env()["$declared?"](name))&&$truthy(self.$context()["$in_dynamic_block?"]()))&&(location=node.$loc().$expression(),$truthy(self.$max_numparam_stack()["$has_ordinary_params?"]())&&self.$diagnostic("error","ordinary_param_defined",nil,[nil,location]),raw_context=self.$context().$stack().$dup(),raw_max_numparam_stack=self.$max_numparam_stack().$stack().$dup(),raw_context.$pop(),raw_max_numparam_stack.$pop(),function(){var $brk=Opal.new_brk();try{$send(raw_context,"reverse_each",[],(function $$1(outer_scope){var self=null==$$1.$$s?this:$$1.$$s,outer_scope_has_numparams=nil;if(null==outer_scope&&(outer_scope=nil),$eqeq(outer_scope,"block")||$eqeq(outer_scope,"lambda"))return outer_scope_has_numparams=$rb_gt(raw_max_numparam_stack.$pop(),0),$truthy(outer_scope_has_numparams)?self.$diagnostic("error","numparam_used_in_outer_scope",nil,[nil,location]):nil;Opal.brk(nil,$brk)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.$static_env().$declare(name),self.$max_numparam_stack().$register(name["$[]"](1).$to_i()),!0)}),1),clist=["-319,308,617,995,597,-117,-116,-319,-319,-319,218,219,308,-319,-319","919,-319,919,919,-121,-122,617,-725,-118,-319,617,660,624,658,1207,234","-123,-119,713,943,828,-319,-319,617,-319,-319,-319,-319,-319,-116,-117","-124,617,617,-124,925,714,942,123,236,921,1142,1143,122,922,237,918","237,-123,-504,303,-319,-319,-319,-319,-319,-319,-319,-319,-319,-319","-319,-319,-319,-319,218,219,-319,-319,-319,-713,684,-319,307,-124,-319","-123,659,-319,657,237,218,219,-319,307,-319,119,-319,-319,237,-319,-319","-319,-319,-319,-607,-319,994,-319,-108,-107,823,-607,-607,-607,123,-119","-607,-607,-607,122,-607,-319,-112,-113,-319,-319,-109,-113,-607,-319","-607,-607,-607,123,-114,-110,-319,123,122,-122,-607,-607,122,-607,-607","-607,-607,-607,-121,-120,123,-118,-115,984,-109,122,-116,-117,-124,123","123,-116,-117,-124,122,122,1117,308,237,132,-607,-607,-607,-607,-607","-607,-607,-607,-607,-607,-607,-607,-607,-607,123,-725,-607,-607,-607","122,-607,-607,609,215,-607,611,123,-607,-607,-111,-607,122,-607,-123","-607,230,-607,-607,-123,-607,-607,-607,-607,-607,123,-607,-610,-607","-621,122,-109,237,-622,-610,-610,-610,-712,-122,-610,-610,-610,-607","-610,-119,-607,-607,-607,-607,-119,-607,-610,-607,-610,-610,-610,230","-607,216,1118,-607,-120,-110,-610,-610,307,-610,-610,-610,-610,-610","-109,-737,217,-109,-712,-111,-121,-120,-112,-118,220,-121,-120,519,-118","-109,887,-116,624,218,219,-117,-610,-610,-610,-610,-610,-610,-610,-610","-610,-610,-610,-610,-610,-610,-725,297,-610,-610,-610,-737,-610,-610","-713,-111,-610,870,-111,-610,-610,645,-610,237,-610,-712,-610,-110,-610","-610,-111,-610,-610,-610,-610,-610,308,-610,-319,-610,101,102,-124,358","-112,-319,-319,-319,101,102,-319,-319,-319,-610,-319,-122,-610,-610","-610,-610,-122,-610,-319,-610,-319,-319,-319,-110,-610,-111,-110,-610","504,503,-319,-319,-118,-319,-319,-319,-319,-319,-110,237,-112,647,646","-112,645,-607,630,645,230,887,954,645,-607,630,359,-112,303,631,1057","828,-319,-319,-319,-319,-319,-319,-319,-319,-319,-319,-319,-319,-319","-319,103,104,-319,-319,-319,307,916,-319,103,104,-319,913,645,-319,-319","645,-319,-614,-319,237,-319,428,-319,-319,-614,-319,-319,-319,-319,-319","-737,-319,914,-319,647,646,-607,647,646,643,645,647,646,643,856,645","468,-319,645,1029,-319,-319,-319,-319,796,-319,645,-319,1057,-716,679","230,-319,-628,680,-122,-716,-716,-716,507,-119,-716,-716,-716,224,-716","647,646,648,647,646,627,-614,-716,-716,-716,-716,-716,679,854,625,-121","218,219,518,-716,-716,680,-716,-716,-716,-716,-716,520,647,646,661,-110","-118,647,646,643,647,646,650,645,-622,-737,521,-119,647,646,656,-121","236,-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,-716","-716,225,750,-716,-716,-716,-112,915,-716,-119,-102,-716,496,-616,-716","-716,555,-716,-121,-716,-616,-716,-88,-716,-716,-108,-716,-716,-716","-716,-716,-319,-716,-716,-716,979,887,-117,-319,-319,-319,647,646,652","-319,-319,609,-319,-716,611,497,-716,-716,-716,-716,-319,-716,224,-716","567,123,569,1050,-716,301,122,-120,-319,-319,571,-319,-319,-319,-319","-319,979,887,132,-616,488,224,485,484,483,493,486,425,1181,-610,630","-87,427,426,954,496,-610,635,-319,-319,-319,-319,-319,-319,-319,-319","-319,-319,-319,-319,-319,-319,237,-617,-319,-319,-319,491,684,-319,-617","582,-319,225,224,-319,501,500,504,503,-319,301,-319,497,-319,-319,583","-319,-319,-319,-319,-319,123,-319,-716,-319,225,122,590,87,123,-716","-716,-716,-610,122,312,-716,-716,-319,-716,88,-319,-319,237,-319,230","-319,-716,-716,230,89,609,482,-319,608,609,-122,-617,611,-716,-716,303","-716,-716,-716,-716,-716,237,225,594,1190,488,224,485,484,483,493,486","-618,1157,597,944,945,218,219,-618,496,600,1155,-716,-716,-716,-716","-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,261,-621,-716,-716","-716,491,685,-716,237,612,-716,234,-615,-716,501,500,504,503,-716,-615","-716,497,-716,-716,-114,-716,-716,-716,-716,-716,613,-716,-716,-716","225,870,-123,571,624,488,-618,485,484,483,493,486,417,-716,-107,-612","-716,-716,-710,-111,496,-716,-612,-613,-115,-716,-116,482,-716,628,-613","-120,-716,-716,-716,493,-124,629,-716,-716,637,-716,491,-615,662,496","665,666,-109,-716,-716,501,500,504,503,-292,224,668,497,669,-118,-716","-716,672,-716,-716,-716,-716,-716,673,-610,237,670,677,224,678,303,-610","504,503,-612,633,-710,497,237,691,-610,692,-613,237,635,-716,-716,-716","-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,-716,-710,694,-716","-716,-716,697,685,-716,-354,698,-716,700,702,-716,704,-354,225,715,-716","716,-716,720,-716,-716,-354,-716,-716,-716,-716,-716,-610,-716,-716","-716,225,722,-619,728,729,261,261,224,-620,-619,750,261,261,-716,589","-620,-716,-716,-619,-716,496,-716,-320,587,-620,237,784,237,-716,-320","237,-120,330,77,78,26,11,65,-320,-354,237,71,72,-102,799,237,75,-716","73,74,76,35,36,79,80,603,810,814,497,237,81,33,32,111,110,112,113,-619","816,23,1050,819,225,-620,824,10,53,332,12,115,114,116,105,64,107,106","108,-320,109,117,118,224,101,102,49,50,48,-320,223,-716,825,224,278","279,-320,829,-716,221,599,853,857,-712,858,-320,-293,-716,45,517,871","38,555,555,66,67,-310,883,68,887,40,907,908,-310,52,237,-716,911,261","237,277,276,-310,24,920,937,938,939,99,87,90,91,956,92,94,93,95,958","225,297,964,88,98,966,-320,968,-716,569,225,82,258,89,103,104,260,259","46,47,330,77,78,26,11,65,571,810,237,71,72,303,303,-310,75,-709,73,74","76,35,36,79,80,126,127,128,129,130,81,33,32,111,110,112,113,810,488","23,485,484,483,261,486,10,53,332,12,115,114,116,105,64,107,106,108,887","109,117,118,224,101,102,49,50,48,-319,516,-607,981,224,982,237,-319","706,-607,517,1181,-713,237,-709,992,-319,710,-607,45,635,237,38,-294","237,66,67,-319,1003,68,1007,40,-292,1011,-319,52,697,-709,714,-713,1014","848,849,-319,24,850,117,118,1016,99,87,90,91,1018,92,94,93,95,1020,225","1020,237,88,98,770,-319,237,-607,237,225,82,1048,89,103,104,1051,919","46,47,330,77,78,26,11,65,966,1063,237,71,72,810,1079,-319,75,1081,73","74,76,35,36,79,80,253,1086,1087,1092,1093,81,33,32,111,110,112,113,1094","488,23,485,484,483,-295,486,10,53,332,12,115,114,116,105,64,107,106","108,1107,109,117,118,1108,101,102,49,50,48,261,265,266,267,268,278,279","273,274,269,270,1109,254,255,237,237,271,272,237,45,237,252,38,493,237","66,67,237,919,68,1116,40,258,496,264,52,260,259,237,256,257,277,276","262,24,263,1122,1123,1125,99,87,90,91,697,92,94,93,95,1128,1131,1133","1135,88,98,237,275,504,503,1137,1147,82,497,89,103,104,1158,1159,46","47,330,77,78,26,11,65,1020,1020,1020,71,72,1166,1179,1182,75,1187,73","74,76,35,36,79,80,126,127,128,129,130,81,33,32,111,110,112,113,1188","691,23,1108,1198,1198,697,674,10,53,332,12,115,114,116,105,64,107,106","108,1201,109,117,118,1203,101,102,49,50,48,261,265,266,267,268,278,279","273,274,269,270,1205,254,255,1207,1207,271,272,237,45,1020,948,38,952","951,66,67,953,1198,68,-713,40,258,-712,264,52,260,259,1224,256,257,277","276,262,24,263,1207,1207,1207,99,87,90,91,3,92,94,93,95,950,,,,88,98",",275,,-264,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75",",73,74,76,35,36,79,80,126,127,128,129,130,81,33,32,111,110,112,113,",",23,,,,,884,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118",",101,102,49,50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255",",,271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277","276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89","103,104,,,46,47,7,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80","126,127,128,129,130,81,33,32,111,110,112,113,,,23,,,,,674,10,53,9,12","115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265","266,267,268,278,279,273,274,269,270,,254,255,,,271,272,,45,,,38,,,66","67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87","90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89,103,104,,,46,47,330,77","78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110","112,113,,,23,,,,,912,10,53,332,12,115,114,116,105,64,107,106,108,,109","117,118,,101,102,49,50,48,261,265,266,267,268,278,279,273,274,269,270",",254,255,,,271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256","257,277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,",",,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76","35,36,79,80,,,,,,81,33,32,111,110,112,113,,1152,23,485,484,483,,486","10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49","50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255,,,271,272",",45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24","263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89,103,104,,","46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81","33,32,111,110,112,113,,1152,23,485,484,483,,486,10,53,332,12,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267","268,278,279,273,274,269,270,,254,255,,,271,272,,45,,,38,,,66,67,,,68",",40,258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,","92,94,93,95,,,,,88,98,,275,,,,,82,,89,103,104,,,46,47,330,77,78,26,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113",",,23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,","101,102,49,50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255",",,271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277","276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,237,275,,,,,82",",89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36","79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116","105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267,268","278,279,273,274,269,270,,254,255,,,271,272,,45,,,38,,,66,67,,,68,,40","258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,,92,94","93,95,,,,,88,98,,275,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,",",,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,","23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255,,","271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276","262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89,103","104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80",",,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267,268,278","279,273,274,269,270,,254,255,,,271,272,,45,,,38,,,66,67,,,68,,40,258",",264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,,92,94,93","95,,,,,88,98,,275,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71","72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,",",,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102","49,50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255,,,271","272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262","24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89,103,104",",,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,",",81,33,32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116,105,64","107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267,268,278,279","273,274,269,270,,254,255,,,271,272,,45,,,38,,,66,67,,,68,,40,258,,264","52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,",",,,88,98,,275,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72",",,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,","10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49","50,48,261,265,266,267,268,278,279,273,274,269,270,,254,255,,,271,272",",45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24","263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,275,,,,,82,,89,103,104,,","46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81","33,32,111,110,112,113,,488,23,485,484,483,,486,10,53,332,12,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,488,,485,484,483",",486,,706,,488,,485,484,483,,486,710,,45,,,38,,,66,67,,261,68,,40,,",",52,,706,,261,,,,,24,,710,706,,99,87,90,91,,92,94,93,95,,,258,,88,98","260,259,,256,257,,82,258,89,103,104,260,259,46,47,330,77,78,26,11,65",",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,","488,23,485,484,483,,486,10,53,332,12,115,114,116,105,64,107,106,108",",109,117,118,,101,102,49,50,48,261,265,266,267,268,278,279,273,706,269","270,,,,,,271,272,,45,,,38,,,66,67,,261,68,,40,258,,264,52,260,259,,256","257,277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,258,,88,98,260","259,,256,257,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,","75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,488,23,485,484","483,,486,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,261,,,,,,,,706,,,,,,,,271,272,,45,,,38,,,66,67,,,68,,40","258,,264,52,260,259,,256,257,,,262,24,263,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72,",",,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10","53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50","48,261,265,266,267,268,278,279,,,269,270,,,,,,271,272,,45,,,38,,,66","67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87","90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,330,77,78","26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110","112,113,,,23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117","118,,101,102,49,50,48,261,265,266,267,268,278,279,273,274,269,270,,-738","-738,,,271,272,,45,,,334,,,66,67,,,68,,40,258,,264,52,260,259,,256,257","277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89","103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79","80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116","105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,-738,-738,-738","-738,278,279,,,-738,-738,,,,,,271,272,,45,,,38,,,66,67,,,68,,40,258",",264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,,92,94,93","95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,,,,71,72",",,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,","10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49","50,48,261,-738,-738,-738,-738,278,279,,,-738,-738,,,,,,271,272,,45,",",334,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24,263",",,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,330","77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111","110,112,113,,,23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109","117,118,,101,102,49,50,48,261,-738,-738,-738,-738,278,279,,,-738,-738",",,,,,271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257","277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89","103,104,,,46,47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79","80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116","105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267,268","278,279,273,274,269,270,,-738,-738,,,271,272,,45,,,38,,,66,67,,,68,","40,258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91,,92","94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,330,77,78,26,11,65,",",,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,","23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,261,-738,-738,-738,-738,278,279,,,-738,-738,,,,,,271,272",",45,,,38,,,66,67,,,68,,40,258,,264,52,260,259,,256,257,277,276,262,24","263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46","47,330,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33","32,111,110,112,113,,,23,,,,,,10,53,332,12,115,114,116,105,64,107,106","108,,109,117,118,,101,102,49,50,48,261,-738,-738,-738,-738,278,279,",",-738,-738,,,,,,271,272,,45,,,38,,,66,67,,,68,,40,258,,264,52,260,259",",256,257,277,276,262,24,263,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,",",,,,82,,89,103,104,,,46,47,7,77,78,26,11,65,,,,71,72,,,,75,,73,74,76","35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,9,12,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265,266,267","268,278,279,273,274,269,270,,-738,-738,,,271,272,,45,,,38,,,66,67,,","68,,40,258,,264,52,260,259,,256,257,277,276,262,24,263,,,,99,87,90,91",",92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,330,77,78,26,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113",",,23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109,117,118,","101,102,49,50,48,261,,,,,,,,,,,,,,,,271,272,,45,,,334,,,66,67,,,68,","40,258,,264,52,260,259,,256,257,,,262,24,263,,,,99,87,90,91,,92,94,93","95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76","351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,-738,-738","-738,-738,278,279,,,-738,-738,,,,,,271,272,,242,,,250,,,66,67,,,68,",",258,,264,52,260,259,,256,257,277,276,262,247,263,,,,99,87,90,91,,92","94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73","74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,",",115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,261,265","266,267,268,278,279,273,274,269,270,,-738,-738,,,271,272,,242,,,250",",,66,67,,,68,,,258,,264,52,260,259,,256,257,277,276,262,247,263,,,,99","87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46","47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251",",,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50","48,261,,,,,,,,,,,,,,,,271,272,,242,,,250,,,66,67,,,68,,,258,,264,52","260,259,,256,257,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77","78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,","81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106","108,,109,117,118,,101,102,49,50,48,261,,,,,,,,,,,,,,,,271,272,,242,",",250,,,66,67,,,68,,,258,,264,52,260,259,,256,257,,,,247,,,,,99,87,90","91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,","75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,",",,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48","261,,,,,,,,,,,,,,,,271,272,,242,,,250,,,66,67,,,68,,,258,,,52,260,259",",256,257,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82","65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354","111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109","117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68",",,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78","26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81","346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106","108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66","67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,",",,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80",",,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64","107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,","250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,",",,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352","79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351","352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116","105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,",",242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93","95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76","351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92","94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73","74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,",",115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,",",,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90","91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,77,78,26,11,65",",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,",",23,,,,,,10,53,,12,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,",",,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103","104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110","112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118",",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52",",,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65","89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111","110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117","118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,433",",,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26","82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346","354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108",",109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67",",,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77","78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,","81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106","108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66","67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,",",,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,",",,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107","106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250",",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88","98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80",",,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107","106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250",",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88","98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80",",,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107","106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250",",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88","98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80",",,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107","106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250",",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88","98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79","80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,","242,,,250,,,66,67,,,68,,,,319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92","94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73","74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,",",115,114,116,105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,",",,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,793,,319,,52,,,325,,,,,,247",",,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104","71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113",",,23,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102","49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24",",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104","71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112","113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,",",,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,-434",",46,47,,,,-434,-434,-434,,,-434,-434,-434,,-434,,,,,,,,-434,-434,-434","-434,,,,,,,,,-434,-434,,-434,-434,-434,-434,-434,,,,,,,,,,,,,,,,,,,",",,,-434,-434,-434,-434,-434,-434,-434,-434,-434,-434,-434,-434,-434","-434,,,-434,-434,-434,,,-434,,303,-434,,,-434,-434,,-434,,-434,,-434",",-434,-434,,-434,-434,-434,-434,-434,-326,-434,-434,-434,,,,-326,-326","-326,,,-326,-326,-326,,-326,-434,,,-434,-434,,-434,-326,-434,-326,-326",",,,,-434,,,,-326,-326,,-326,-326,-326,-326,-326,,,,,,,,,,,,,,,,,,,,",",,-326,-326,-326,-326,-326,-326,-326,-326,-326,-326,-326,-326,-326,-326",",,-326,-326,-326,,,-326,,312,-326,,,-326,-326,,-326,,-326,,-326,,-326","-326,,-326,-326,-326,-326,-326,,-326,,-326,,,,,,,,,,,,,,-326,,,-326","-326,,-326,,-326,77,78,26,,65,,-326,,71,72,,,,75,,73,74,76,351,352,79","80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35","36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116","105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,",",,,,242,,,250,,,66,67,,,68,,321,,319,,52,,,325,,,,,,247,,,,,99,322,90","91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,77,78,26,11,65",",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,",",23,,,,,,10,53,,12,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,",",,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103","104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112","113,,,23,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,",",,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103","104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112","113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118",",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319",",52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78","26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81","346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106","108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66","67,,,68,,793,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98",",,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,",",,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107","106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250",",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88","98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79","80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,862,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93","95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,77,78,26,11,65,,,,71,72,,",",75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10","53,,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48",",,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,99","87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46","47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251",",,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50","48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,",",99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251",",,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118,,101,102,49","50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52,,,325",",,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89","103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110","112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117","118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321",",319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77","78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81","33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108","324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66","67,,,68,,321,,319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,",",,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351","352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116","105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,",",,,,242,,,250,,,66,67,,,68,,,,319,,52,,,325,,,,,,247,,,,,99,322,90,91",",92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75",",73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,",",115,114,116,105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,",",,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52,,,325,,,,,,247",",,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104","71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112","113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,,,52,,",",,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89","103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111","110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109","117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68",",,,,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77","78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,","81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106","108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,",",66,67,,,68,,793,,,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35","36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,",",,,88,98,237,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35","36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,",",,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36","79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,",",,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351","352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116","105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,",",242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93","95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76","351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92","94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73","74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,",",115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,",",,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90","91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,","75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53",",,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,",",,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87","90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47",",75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,","53,,,115,114,116,105,64,107,106,108,324,109,117,118,,101,102,49,50,48",",,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52,,,325,,,,,,247",",,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47","77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111","110,112,113,,,23,,,,,,10,53,332,12,115,114,116,105,64,107,106,108,,109","117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40",",,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,417,82",",89,103,104,,,46,47,77,78,26,,65,,,,71,72,,,,75,,73,74,76,351,352,79","80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351","352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116","105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,",",,,,242,,,250,,,66,67,,,68,,,,319,,52,,,325,,,,,,247,,,,,99,322,90,91",",92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75",",73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,","53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,",",,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99","87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46","47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251",",,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50","48,,,,,,,,,,,,,,,,,,,,242,,,250,603,,66,67,,,68,,,,,,52,,,,,,,,,247",",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104","71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112","113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118",",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,793,,319",",52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78","26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81","346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106","108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66","67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,",",,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80",",,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64","107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,","250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,",",,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352","79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351","352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116","105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,",",242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93","95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76","351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92","94,93,95,,,,,88,98,,,,,,,82,,89,103,104,-274,,46,47,,,,-274,-274,-274",",,-274,-274,-274,488,-274,485,484,483,493,486,,,-274,-274,-274,,,,496",",,,,,-274,-274,,-274,-274,-274,-274,-274,488,,485,484,483,493,486,,491","641,,,,,,496,,501,500,504,503,,,,497,,488,,485,484,483,493,486,-274",",,,491,,,-274,496,,,,303,-274,,504,503,,,,497,,,,,,,,,,491,482,,,,-274","-274,,,501,500,504,503,,,,497,,,,-274,,,-274,,77,78,26,-274,65,482,",",71,72,-274,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113",",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52",",,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82","65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111","110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117","118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,",",52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82","65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111","110,112,113,,,23,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117","118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,",",52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,123,,,,,122,82",",89,103,104,,,46,47,77,78,26,,65,,,,71,72,,,,75,,73,74,76,35,36,79,80",",,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105,64,107","106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250",",,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88","98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79","80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351","352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116","105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,",",,,,242,,,250,,,66,67,,,68,,,,,,52,,,325,,,,,,247,,,,,99,322,90,91,","92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,","73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115","114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,",",,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,","92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,","73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53",",,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,",",,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87","90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47",",75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,",",,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50","48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,",",99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71","72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113",",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102","49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247",",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104","71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112","113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118",",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,,","52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,,,,82,","89,103,104,,,46,47,77,78,26,11,65,,,,71,72,,,,75,,73,74,76,35,36,79","80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,,12,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,45",",,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35","36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,",",,,88,98,,,,,,,82,,89,103,104,-311,,46,47,,,,-311,-311,-311,,,-311,-311","-311,,-311,,,,,,,,-311,,-311,-311,-311,,,,,,,,-311,-311,,-311,-311,-311","-311,-311,,,,,,,,,,,,,,,,,,,,,,,-311,-311,-311,-311,-311,-311,-311,-311","-311,-311,-311,-311,-311,-311,,,-311,-311,-311,,,-311,,,-311,,,-311","-311,,-311,,-311,,-311,,-311,-311,,-311,-311,-311,-311,-311,,-311,,-311",",,,,,,,,,,,,,-311,,,-311,-311,-311,-311,,-311,,-311,,77,78,26,-311,65",",,,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113",",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102","49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247",",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104","71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112","113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,",",,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103","104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112","113,,,23,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,",",,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103","104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110","112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118",",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52",",,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65","89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111","110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117","118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,",",52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82","65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354","111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324","109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,",",68,,793,,319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88","98,,,,77,78,26,82,65,89,103,104,71,72,46,557,,75,,73,74,76,35,36,79","80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64","107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,","250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,",",,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352","79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351","352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116","105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,",",242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93","95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76","351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92","94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73","74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115","114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,",",,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91",",92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75",",73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,",",115,114,116,105,64,107,106,108,324,109,117,118,,101,102,49,50,48,,",",,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52,,,325,,,,,,247",",,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104","71,72,46,557,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113",",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52",",,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82","65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111","110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109","117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68",",321,,319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98","237,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79","80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351","352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116","105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,",",242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93","95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76","351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92","94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73","74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,",",115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,",",,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90","91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,","75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,",",,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48",",,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99","87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46","47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251",",,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50","48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,",",99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71","72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113",",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102","49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247",",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104","71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112","113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,",",,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103","104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110","112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118",",101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52",",,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65","89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111","110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117","118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,",",52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82","65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354","111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109","117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68",",,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78","26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81","346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106","108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66","67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,",",,,,,82,,89,103,104,,,46,47,77,78,26,11,65,,,,71,72,,,,75,,73,74,76","35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53,,12,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94","93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74","76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94","93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74","76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94","93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74","76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94","93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74","76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94","93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74","76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,",",,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94","93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74","76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115","114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,",",,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91",",92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75",",73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,,53,,","115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,",",,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90","91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,46,47,77,78,26,11,65",",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,",",23,,,,,,10,53,9,12,115,114,116,105,64,107,106,108,,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,",",,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,,,417,82,,89,103,104",",,46,47,77,78,26,,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81,33","32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324","109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,",",68,,321,,319,,52,,,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88","98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80",",,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107","106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250",",,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88","98,,,,,,,82,,89,103,104,-718,,46,47,,,,-718,-718,-718,,,-718,-718,-718",",-718,,,,,,,,-718,-718,-718,-718,-718,,,,,,,,-718,-718,,-718,-718,-718","-718,-718,,,,,,,,,,,,,,,,,,,,,,,-718,-718,-718,-718,-718,-718,-718,-718","-718,-718,-718,-718,-718,-718,,,-718,-718,-718,,,-718,,,-718,,,-718","-718,,-718,,-718,,-718,,-718,-718,,-718,-718,-718,-718,-718,,-718,-718","-718,,,,,,,,,,,,,,-718,,,-718,-718,-718,-718,,-718,-717,-718,,,,,-718","-717,-717,-717,,,-717,-717,-717,,-717,,,,,,,,-717,-717,-717,-717,-717",",,,,,,,-717,-717,,-717,-717,-717,-717,-717,,,,,,,,,,,,,,,,,,,,,,,-717","-717,-717,-717,-717,-717,-717,-717,-717,-717,-717,-717,-717,-717,,,-717","-717,-717,,,-717,,,-717,,,-717,-717,,-717,,-717,,-717,,-717,-717,,-717","-717,-717,-717,-717,,-717,-717,-717,,,,,,,,,,,,,,-717,,,-717,-717,-717","-717,,-717,,-717,,77,78,26,-717,65,,,,71,72,,,,75,,73,74,76,351,352","79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,,,,82,,89,103,104,,,46,47,77,78,26,11,65,,,,71,72,,,,75",",73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113,,,23,,,,,,10,53","9,12,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,",",,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,99,87","90,91,,92,94,93,95,,,,,88,98,,,,,,,82,,89,103,104,-274,,46,47,,,,-274","-274,-274,,,-274,-274,-274,,-274,,,,,,,,-274,-274,-274,-274,,,,,,,,","-274,-274,,-274,-274,-274,-274,-274,,,,,,,,,,,,,,,,,,,,,,,-274,-274","-274,-274,-274,-274,-274,-274,-274,-274,-274,-274,-274,-274,,,-274,-274","-274,,,-274,,303,-274,,,-274,-274,,-274,,-274,,-274,,-274,-274,,-274","-274,-274,-274,-274,,-274,-274,-274,,,,,,,,,,,,,,-274,,,-274,-274,,-274",",-274,77,78,26,,65,,-274,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,81","33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105,64,107,106,108",",109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67",",,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77","78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81","33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105,64,107,106,108",",109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67",",,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77","78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,","81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106","108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66","67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,",",,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,",",,,81,33,32,111,110,112,113,,,23,,,,,,,53,,,115,114,116,105,64,107,106","108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66","67,,,68,,,,,,52,,,,,,,,,24,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,",",77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,",",,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106","108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66","67,,,68,,433,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98",",,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80",",,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105,64","107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,","250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,",",,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,351,352","79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242",",,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74,76,35","36,79,80,,,,,,81,33,32,111,110,112,113,,,251,,,,,,,53,,,115,114,116","105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,",",242,,,250,,,66,67,,,68,,433,,,,52,,,,,,,,,247,,,,,99,87,90,91,,92,94","93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75,,73,74","76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,53,,,115","114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,,,,,,,,,,",",,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99,87,90,91",",92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46,47,,75",",73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,","53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50,48,",",,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,,,99","87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,46","47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251",",,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102,49,50","48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247,,,",",99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71","72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113",",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102","49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,247",",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104","71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113",",,23,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117,118,,101,102","49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,,,52,,,,,,,,,24",",,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104","71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111,110,112,113",",,251,,,,,,,53,,,115,114,116,105,64,107,106,108,324,109,117,118,,101","102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,321,,319,,52",",,325,,,,,,247,,,,,99,322,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82","65,89,103,104,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,81,33,32,111","110,112,113,,,251,,,,,,,53,,,115,114,116,105,64,107,106,108,,109,117","118,,101,102,49,50,48,,,,,,,,,,,,,,,,,,,,242,,,250,,,66,67,,,68,,,,",",52,,,,,,,,,247,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82","65,89,103,104,71,72,46,47,,75,,73,74,76,351,352,79,80,,,,,,81,346,354","111,110,112,113,,,251,,,,,,,347,,,115,114,116,105,64,107,106,108,,109","117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,343,,,339,,,66,67,,,68,,,",",,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65","89,103,104,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110","112,113,,,251,,,,,,,347,,,115,114,116,105,64,107,106,108,,109,117,118",",101,102,,,355,,,,,,,,,,,,,,,,,,,,1100,,,250,,,66,67,,,68,,,,,,,,,,",",,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103","104,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111,110,112","113,,,251,,,,,,,347,,,115,114,116,105,64,107,106,108,,109,117,118,,101","102,,,355,,,,,,,,,,,,,,,,,,,,343,,,250,,,66,67,,,68,,,488,,485,484,483","493,486,,,,,,,,,496,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,585,,491","82,,89,103,104,77,78,26,,65,504,503,,71,72,497,,,75,,73,74,76,351,352","79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114,116","105,64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,392",",,38,,,66,67,,,68,,40,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,","88,98,,,,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352,79","80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114,116,105","64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,1139,",",250,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88","98,,,,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352,79,80",",,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114,116,105,64","107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,343,,,339",",,66,67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,",",,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352,79,80,,,,",",81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114,116,105,64,107","106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,343,,,339,,,66","67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77","78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346","354,111,110,112,113,,,251,,,,,,,347,,,115,114,116,397,64,107,106,398",",109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,404,,,399,,,250,,,66,67",",,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78","26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346","354,111,110,112,113,,,251,,,,,,,347,,,115,114,116,397,64,107,106,398",",109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,399,,,250,,,66,67,,,68",",,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,,,77,78,26,82","65,89,103,104,71,72,,,,75,,73,74,76,351,352,79,80,,,,,,81,346,354,111","110,112,113,,,251,,,,,,,347,,,115,114,116,105,64,107,106,108,,109,117","118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,343,,,250,,,66,67,,,68,,,488,","485,484,483,493,486,,,,,,,,,496,,99,87,90,91,,92,94,93,95,,,,,88,98",",,,357,,491,82,,89,103,104,77,78,26,,65,504,503,,71,72,497,,,75,,73","74,76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347",",,115,114,116,105,64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,",",,,,,,,,,,,,1139,,,250,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,","92,94,93,95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74","76,351,352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115","114,116,105,64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,",",,,,,,343,,,339,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93","95,,,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351","352,79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114","116,105,64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,",",,343,,,339,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,77,78,26,82,65,89,103,104,71,72,,,,75,,73,74,76,351,352","79,80,,,,,,81,346,354,111,110,112,113,,,251,,,,,,,347,,,115,114,116","105,64,107,106,108,,109,117,118,,101,102,,,355,,,,,,,,,,,,,,,,,,,,343",",,339,,,66,67,,,68,,338,,,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95,,",",,88,98,,,,,,,82,,89,103,104,182,193,183,206,179,199,189,188,209,210","204,187,186,181,207,211,212,191,180,194,198,200,192,185,,,,201,208,203","202,195,205,190,178,197,196,,,,,,177,184,175,176,172,173,174,135,137",",,136,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169","155,156,,,,,,,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142","164,143,,,171,99,,,,,,,,,,,,,,98,182,193,183,206,179,199,189,188,209","210,204,187,186,181,207,211,212,191,180,194,198,200,192,185,,,,201,208","203,202,195,205,190,178,197,196,,,,,,177,184,175,176,172,173,174,135","137,134,,136,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,",",,168,169,155,156,,,,,,,,,,,,,,160,159,,144,165,162,161,170,157,158","152,150,142,164,143,,,171,99,,,,,,,,,,,,,,98,182,193,183,206,179,199","189,188,209,210,204,187,186,181,207,211,212,191,180,194,198,200,192","185,,,,201,208,203,202,195,205,190,178,197,196,,,,,,177,184,175,176","172,173,174,135,137,,,136,,,,,,,,166,167,,163,145,146,147,154,151,153",",,148,149,,,,168,169,155,156,,,,,,,,,,,,,,160,159,,144,165,162,161,170","157,158,152,150,142,164,143,,,171,99,,,,,,,,,,,,,,98,182,193,183,206","179,199,189,188,209,210,204,187,186,181,207,211,212,191,180,194,198","200,192,185,,,,201,208,203,202,195,205,190,178,197,196,,,,,,177,184","175,176,172,173,174,135,137,,,136,,,,,,,,166,167,,163,145,146,147,154","151,153,,,148,149,,,,168,169,155,156,,,,,,,,,,,,,,160,159,,144,165,162","161,170,157,158,152,150,142,164,143,,,171,99,111,110,112,113,,,,,,,",",,98,,,115,114,116,770,,,488,773,485,484,483,493,486,101,102,,,355,",",,496,,,,,,,,,,,,,,,,772,,,743,,,491,741,,,742,,,,,501,500,504,503,",",,497,,,,771,,,,99,87,90,91,,92,94,93,95,,,,,88,98,111,110,112,113,",",82,,89,103,104,,,758,759,,115,114,116,770,,,,773,750,,,,,101,102,,","355,496,,,,,,,,,,,,,,,,,,,772,,,743,,,,741,,,742,,745,,,,,,,497,,,,",",,771,,,,99,751,90,91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89","103,104,,,758,759,,115,114,116,770,,,488,773,485,484,483,493,486,101","102,,,355,,,,496,,,,,,,,,,,,,,,,772,,,743,,,491,741,,,742,,,,,501,500","504,503,,,,497,,,,771,,,,99,87,90,91,,92,94,93,95,,,,,88,98,111,110","112,113,,,82,,89,103,104,,,758,759,,115,114,116,770,,,488,773,485,484","483,493,486,101,102,,,355,,,,496,,,,,,,,,,,,,,,,772,,,743,,,491,741",",,742,,,,,,,504,503,,,,497,,,,771,,,,99,87,90,91,,92,94,93,95,,,,,88","98,111,110,112,113,,,82,,89,103,104,,,758,759,,115,114,116,770,,,488","773,485,484,483,493,486,101,102,,,355,,,,496,,,,,,,,,,,,,,,,772,,,743",",,491,741,,,742,,1047,,,,,504,503,,,,497,,,,771,,,,99,87,90,91,,92,94","93,95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,758,759,,115,114","116,770,,,488,773,485,484,483,493,486,101,102,,,355,,,,496,,,,,,,,,",",,,,,,772,,,743,,,491,741,,,742,,,,,,,504,503,,,,497,,,,771,,,,99,87","90,91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,758","759,,115,114,116,770,,,,773,750,,,,,101,102,,,355,496,,,,,,,,,,,,,,",",,,,772,,,743,,,,741,,,742,,745,,,,,,,497,,,,,,,771,,,,99,751,90,91",",92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,758,759,,115","114,116,770,,,,773,750,,,,,101,102,,,355,496,,,,,,,,,,,,,,,,,,,772,",",743,,,,741,,,742,,745,,,,,,,497,,,,,,,771,,,,99,751,90,91,,92,94,93","95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,758,759,,115,114,116","770,,,,773,,,,,,101,102,,,355,,,,,,,,,,,,,,,,,,,,772,,,743,,,,741,,","742,,,,,,,,,,,,,,,,771,,,,99,87,90,91,,92,94,93,95,,,,,88,98,111,110","112,113,,,82,,89,103,104,,,758,759,,115,114,116,770,,,,773,,,,,,101","102,,,355,,,,,,,,,,,,,,,,,,,,772,,,743,,,,741,,,742,,745,,,,,,,,,,,",",,771,,,,99,87,90,91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89","103,104,,,758,759,,115,114,116,770,,,,773,,,,,,101,102,,,355,,,,,,,",",,,,,,,,,,,,772,,,743,,,,741,,,742,,745,,,,,,,,,,,,,,771,,,,99,87,90","91,,92,94,93,95,,,,,88,98,237,,,,,,82,,89,103,104,,,758,759,182,193","183,206,179,199,189,188,209,210,204,187,186,181,207,211,212,191,180","194,198,200,192,185,,,,201,208,203,291,290,292,289,178,197,196,,,,,","177,184,175,176,286,287,288,284,137,107,106,285,,109,,,,,,166,167,,163","145,146,147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,296,,,,,,",",160,159,,144,165,162,161,170,157,158,152,150,142,164,143,,,171,111","110,112,113,,,488,,485,484,483,493,486,,,,115,114,116,770,,496,,773",",,,,,101,102,,,355,,,,,,,,,,491,,,,,,,,,,772,504,503,743,,,497,741,",",742,,,,,,,,,,,,,,,,771,,,,99,87,90,91,,92,94,93,95,,,,,88,98,,482,",",,,82,,89,103,104,,,758,759,182,193,183,206,179,199,189,188,209,210","204,187,186,181,207,211,212,191,180,194,198,200,192,185,,,,201,208,203","202,195,205,190,178,197,196,,,,,,177,184,175,176,172,173,174,135,137",",,136,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169","155,156,,,,,,,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142","164,143,,,171,111,110,112,113,,,,,,,,,,,,,115,114,116,770,,,,773,750",",,,,101,102,,,355,496,,,,,,,,,,,,,,,,,,,772,,,743,,,,741,,,742,,745",",,,,,,497,,,,,,,771,,,,99,751,90,91,,92,94,93,95,,,,,88,98,111,110,112","113,,,82,,89,103,104,,,758,759,,115,114,116,770,,,,773,750,,,,,101,102",",,355,496,,,,,,,,,,,,,,,,,,,772,,,743,,,,741,,,742,,745,,,,,,,497,,",",,,,771,,,,99,751,90,91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82",",89,103,104,,,758,759,,115,114,116,770,,,,773,,,,,,101,102,,,355,,,",",,,,,,,,,,,,,,,,772,,,743,,,,741,,,742,,,,,,,,,,,,,,,,771,,,,99,87,90","91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,758,759",",115,114,116,770,,,,773,,,,,,101,102,,,355,,,,,,,,,,,,,,,,,,,,772,,","743,,,,741,,,742,,,,,,,,,,,,,,,,771,,,,99,87,90,91,,92,94,93,95,,,,","88,98,111,110,112,113,,,82,,89,103,104,,,758,759,,115,114,116,770,,",",773,,,,,,101,102,,,355,,,,,,,,111,110,112,113,,,,,,,,,772,,,743,115","114,116,741,,,742,,745,,,,,101,102,,,355,,,,,771,,,,99,87,90,91,,92","94,93,95,,,,,88,98,,,,,,,82,,89,103,104,,,758,759,,,,,,,,,,,,99,87,90","91,,92,94,93,95,,,,,88,98,111,110,112,113,,,82,,89,103,104,,,,,,115","114,116,,,,,,,,,,,101,102,,,355,111,110,112,113,,,,,,,,,,,,,115,114","116,,,,,,,,,,,101,102,,,355,,,,,,,,,,,,,,,,99,87,90,91,,92,94,93,95",",,,,88,98,,,,,,,82,,89,103,104,,,,,,,,,99,87,90,91,,92,94,93,95,,,,","88,98,111,110,112,113,,,82,,89,103,104,,,,,,115,114,116,488,,485,484","483,493,486,,,,101,102,,,355,496,,,,,,,,,,,488,,485,484,483,493,486",",,,,491,,,,496,,,,,501,500,504,503,,,,497,,,,,,,,,,491,99,87,90,91,","92,94,93,95,,504,503,,88,98,497,,,,,,82,,89,103,104,,,488,482,485,484","483,493,486,,488,,485,484,483,493,486,496,,,,,,,,496,,,488,482,485,484","483,493,486,,,,,491,,,,496,,,,491,501,500,504,503,,,,497,501,500,504","503,,,,497,488,491,485,484,483,493,486,,,,,,504,503,,496,,497,488,,485","484,483,493,486,,,,,,,482,,496,,,,491,,482,,,,,,,,,504,503,,,,497,,491",",482,,,,,,,501,500,504,503,,,,497,,,,,,,,,,,,1211,466,,,1210,,,,,,482",",166,167,,163,145,146,147,154,151,153,,,148,149,,,482,168,169,155,156",",,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142,164","143,553,459,171,,554,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148","149,,,,168,169,155,156,,,,,,,,,,,,,,160,159,,144,165,162,161,170,157","158,152,150,142,164,143,462,466,171,,461,,,,,,,,166,167,,163,145,146","147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159",",144,165,162,161,170,157,158,152,150,142,164,143,1195,466,171,,1196",",,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169,155","156,,,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142","164,143,725,466,171,,726,,,,,,,,166,167,,163,145,146,147,154,151,153",",,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159,,144,165,162,161","170,157,158,152,150,142,164,143,1193,459,171,,1194,,,,,,,,166,167,,163","145,146,147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,",",160,159,,144,165,162,161,170,157,158,152,150,142,164,143,867,466,171",",866,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169","155,156,,,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150","142,164,143,723,459,171,,724,,,,,,,,166,167,,163,145,146,147,154,151","153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159,,144,165,162","161,170,157,158,152,150,142,164,143,455,459,171,,456,,,,,,,,166,167",",163,145,146,147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,303,",",,,,,,160,159,,144,165,162,161,170,157,158,152,150,142,164,143,803,459","171,,804,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168","169,155,156,,,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152","150,142,164,143,806,466,171,,807,,,,,,,,166,167,,163,145,146,147,154","151,153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159,,144,165","162,161,170,157,158,152,150,142,164,143,832,459,171,,833,,,,,,,,166","167,,163,145,146,147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,303",",,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142,164,143,864","459,171,,865,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149,",",,168,169,155,156,,,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158","152,150,142,164,143,834,466,171,,835,,,,,,,,166,167,,163,145,146,147","154,151,153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159,,144","165,162,161,170,157,158,152,150,142,164,143,553,459,171,,554,,,,,,,","166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169,155,156,,",",,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142,164,143","837,466,171,,838,,,,,,,,166,167,,163,145,146,147,154,151,153,,,148,149",",,,168,169,155,156,,,,,,303,,,,,,,,160,159,,144,165,162,161,170,157","158,152,150,142,164,143,723,459,171,,724,,,,,,,,166,167,,163,145,146","147,154,151,153,,,148,149,,,,168,169,155,156,,,,,,303,,,,,,,,160,159",",144,165,162,161,170,157,158,152,150,142,164,143,725,466,171,,726,,",",,,,,166,167,,163,145,146,147,154,151,153,,,148,149,,,,168,169,155,156",",,,,,303,,,,,,,,160,159,,144,165,162,161,170,157,158,152,150,142,164","143,,,171"],racc_action_table=arr=$$$("Array").$new(28951,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),clist=["461,348,1010,845,518,390,389,461,461,461,512,512,781,461,461,731,461","1052,926,833,835,1080,921,986,461,1082,414,622,413,1229,440,628,832","498,752,622,461,461,830,461,461,461,461,461,1097,1098,1101,381,382,393","740,498,752,990,23,740,1083,1083,990,740,1052,731,921,518,926,348,461","461,461,461,461,461,461,461,461,461,461,461,461,461,550,550,461,461","461,835,461,461,348,440,461,1158,414,461,413,23,638,638,461,781,461","3,461,461,512,461,461,461,461,461,105,461,845,461,390,389,619,105,105","105,1010,1193,105,105,105,1010,105,461,833,835,461,461,986,461,105,461","105,105,105,1080,628,832,461,1082,1080,461,105,105,1082,105,105,105","105,105,1194,1195,830,1215,393,830,973,830,1097,1098,1101,381,382,1097","1098,1101,381,382,1047,69,550,9,105,105,105,105,105,105,105,105,105","105,105,105,105,105,638,922,105,105,105,638,105,105,817,12,105,817,386","105,105,806,105,386,105,1158,105,19,105,105,1158,105,105,105,105,105","619,105,108,105,240,619,973,922,241,108,108,108,1195,1196,108,108,108","105,108,1193,105,105,105,105,1193,105,108,105,108,108,108,20,105,14","1047,105,834,803,108,108,69,108,108,108,108,108,973,19,15,973,806,806","1194,1195,804,1215,17,1194,1195,243,1215,973,1085,240,1085,813,813,241","108,108,108,108,108,108,108,108,108,108,108,108,108,108,742,27,108,108","108,20,108,108,1196,806,108,1000,806,108,108,1120,108,742,108,834,108","803,108,108,806,108,108,108,108,108,31,108,726,108,355,355,243,42,804","726,726,726,48,48,726,726,726,108,726,1196,108,108,108,108,1196,108","726,108,726,726,726,803,108,834,803,108,697,697,726,726,1000,726,726","726,726,726,803,813,804,1120,1120,804,655,284,925,573,249,1213,925,941","284,399,45,804,31,399,1120,1213,726,726,726,726,726,726,726,726,726","726,726,726,726,726,355,355,726,726,726,31,726,726,48,48,726,723,409","726,726,653,726,292,726,53,726,213,726,726,292,726,726,726,726,726,249","726,724,726,655,655,284,573,573,573,415,941,941,941,655,408,226,726","410,917,726,726,726,726,573,726,412,726,941,725,455,248,726,228,865","726,725,725,725,232,723,725,725,725,391,725,409,409,409,653,653,391","292,725,725,725,725,725,864,653,391,724,16,16,242,725,725,456,725,725","725,725,725,244,415,415,415,455,917,408,408,408,410,410,410,411,44,248","245,455,412,412,412,865,251,725,725,725,725,725,725,725,725,725,725","725,725,725,725,391,939,725,725,725,456,725,725,864,798,725,939,287","725,725,302,725,456,725,287,725,798,725,725,44,725,725,725,725,725,866","725,725,725,1183,1183,44,866,866,866,411,411,411,866,866,377,866,725","377,939,725,725,725,725,866,725,283,725,316,5,317,939,725,283,5,725","866,866,320,866,866,866,866,866,818,818,332,287,231,1180,231,231,231","231,231,134,1180,285,772,333,134,134,772,231,285,1180,866,866,866,866","866,866,866,866,866,866,866,866,866,866,335,286,866,866,866,231,866","866,286,336,866,283,29,866,231,231,231,231,866,29,866,231,866,866,337","866,866,866,866,866,328,866,462,866,1180,328,343,85,506,462,462,462","285,506,346,462,462,866,462,85,866,866,347,866,349,866,462,462,350,85","373,231,866,373,374,866,286,374,462,462,354,462,462,462,462,462,1150","29,356,1150,641,1099,641,641,641,641,641,288,1099,359,755,755,380,380","288,641,363,1099,462,462,462,462,462,462,462,462,462,462,462,462,462","462,365,43,462,462,462,641,462,462,371,375,462,21,289,462,641,641,641","641,462,289,462,641,462,462,359,462,462,462,462,462,376,462,462,462","1099,675,359,378,387,966,288,966,966,966,966,966,388,462,43,290,462","462,398,462,966,462,290,291,21,867,43,641,462,392,291,462,867,867,867","694,21,394,867,867,403,867,966,289,423,694,429,431,675,867,867,966,966","966,966,432,439,434,966,437,675,867,867,439,867,867,867,867,867,441","398,451,439,453,401,454,463,398,694,694,290,401,398,694,966,469,398","470,291,473,401,867,867,867,867,867,867,867,867,867,867,867,867,867","867,398,474,867,867,867,475,867,867,54,478,867,479,480,867,490,54,439","502,867,505,867,508,867,867,54,867,867,867,867,867,398,867,867,867,401","514,340,522,523,530,531,342,341,340,933,532,533,867,342,341,867,867","340,867,933,867,631,342,341,558,559,560,867,631,564,867,215,215,215","215,215,215,631,54,580,215,215,581,584,586,215,837,215,215,215,215,215","215,215,591,595,604,933,605,215,215,215,215,215,215,215,340,606,215","933,616,342,341,620,215,215,215,215,215,215,215,215,215,215,215,215","631,215,215,215,18,215,215,215,215,215,590,18,837,621,360,51,51,590","623,837,18,360,650,658,837,660,590,667,837,215,360,676,215,681,686,215","215,344,688,215,690,215,708,709,344,215,711,837,718,529,727,51,51,344","215,736,744,745,746,215,215,215,215,775,215,215,215,215,778,18,780,786","215,215,787,590,788,837,790,360,215,529,215,215,215,529,529,215,215","836,836,836,836,836,836,792,800,802,836,836,805,808,344,836,397,836","836,836,836,836,836,836,578,578,578,578,578,836,836,836,836,836,836","836,809,907,836,907,907,907,812,907,836,836,836,836,836,836,836,836","836,836,836,836,820,836,836,836,239,836,836,836,836,836,838,239,397","826,1138,827,831,838,907,397,239,1138,838,840,397,844,838,907,397,836","1138,846,836,861,863,836,836,807,872,836,885,836,888,889,807,836,892","397,894,807,897,646,646,807,836,646,646,646,898,836,836,836,836,900","836,836,836,836,901,239,903,906,836,836,919,838,927,397,928,1138,836","932,836,836,836,935,940,836,836,233,233,233,233,233,233,959,962,963","233,233,972,977,807,233,980,233,233,233,233,233,233,233,25,987,989,996","997,233,233,233,233,233,233,233,998,710,233,710,710,710,999,710,233","233,233,233,233,233,233,233,233,233,233,233,1025,233,233,233,1026,233","233,233,233,233,25,25,25,25,25,25,25,25,25,25,25,1031,25,25,1036,1037","25,25,1038,233,1039,25,233,1125,1040,233,233,1041,1045,233,1046,233","25,1125,25,233,25,25,1049,25,25,25,25,25,233,25,1053,1060,1065,233,233","233,233,1066,233,233,233,233,1068,1069,1070,1072,233,233,1073,25,1125","1125,1074,1089,233,1125,233,233,233,1100,1103,233,233,991,991,991,991","991,991,1104,1105,1106,991,991,1117,1136,1139,991,1148,991,991,991,991","991,991,991,8,8,8,8,8,991,991,991,991,991,991,991,1149,1154,991,1164","1165,1167,1170,444,991,991,991,991,991,991,991,991,991,991,991,991,1173","991,991,991,1174,991,991,991,991,991,444,444,444,444,444,444,444,444","444,444,444,1175,444,444,1176,1178,444,444,1192,991,1197,771,991,771","771,991,991,771,1199,991,1210,991,444,1211,444,991,444,444,1217,444","444,444,444,444,991,444,1218,1219,1220,991,991,991,991,1,991,991,991","991,771,,,,991,991,,444,,444,,,991,,991,991,991,,,991,991,1096,1096","1096,1096,1096,1096,,,,1096,1096,,,,1096,,1096,1096,1096,1096,1096,1096","1096,331,331,331,331,331,1096,1096,1096,1096,1096,1096,1096,,,1096,",",,,689,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,1096,","1096,1096,1096,,1096,1096,1096,1096,1096,689,689,689,689,689,689,689","689,689,689,689,,689,689,,,689,689,,1096,,,1096,,,1096,1096,,,1096,","1096,689,,689,1096,689,689,,689,689,689,689,689,1096,689,,,,1096,1096","1096,1096,,1096,1096,1096,1096,,,,,1096,1096,,689,,,,,1096,,1096,1096","1096,,,1096,1096,2,2,2,2,2,2,,,,2,2,,,,2,,2,2,2,2,2,2,2,370,370,370","370,370,2,2,2,2,2,2,2,,,2,,,,,450,2,2,2,2,2,2,2,2,2,2,2,2,,2,2,2,,2","2,2,2,2,450,450,450,450,450,450,450,450,450,450,450,,450,450,,,450,450",",2,,,2,,,2,2,,,2,,2,450,,450,2,450,450,,450,450,450,450,450,2,450,,",",2,2,2,2,,2,2,2,2,,,,,2,2,,450,,,,,2,,2,2,2,,,2,2,639,639,639,639,639","639,,,,639,639,,,,639,,639,639,639,639,639,639,639,,,,,,639,639,639","639,639,639,639,,,639,,,,,719,639,639,639,639,639,639,639,639,639,639","639,639,,639,639,639,,639,639,639,639,639,719,719,719,719,719,719,719","719,719,719,719,,719,719,,,719,719,,639,,,639,,,639,639,,,639,,639,719",",719,639,719,719,,719,719,719,719,719,639,719,,,,639,639,639,639,,639","639,639,639,,,,,639,639,,719,,,,,639,,639,639,639,,,639,639,1062,1062","1062,1062,1062,1062,,,,1062,1062,,,,1062,,1062,1062,1062,1062,1062,1062","1062,,,,,,1062,1062,1062,1062,1062,1062,1062,,1190,1062,1190,1190,1190",",1190,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,,1062","1062,1062,,1062,1062,1062,1062,1062,869,869,869,869,869,869,869,869","869,869,869,,869,869,,,869,869,,1062,,,1062,,,1062,1062,,,1062,,1062","869,,869,1062,869,869,,869,869,869,869,869,1062,869,,,,1062,1062,1062","1062,,1062,1062,1062,1062,,,,,1062,1062,,869,,,,,1062,,1062,1062,1062",",,1062,1062,967,967,967,967,967,967,,,,967,967,,,,967,,967,967,967,967","967,967,967,,,,,,967,967,967,967,967,967,967,,1092,967,1092,1092,1092",",1092,967,967,967,967,967,967,967,967,967,967,967,967,,967,967,967,","967,967,967,967,967,314,314,314,314,314,314,314,314,314,314,314,,314","314,,,314,314,,967,,,967,,,967,967,,,967,,967,314,,314,967,314,314,","314,314,314,314,314,967,314,,,,967,967,967,967,,967,967,967,967,,,,","967,967,,314,,,,,967,,967,967,967,,,967,967,369,369,369,369,369,369",",,,369,369,,,,369,,369,369,369,369,369,369,369,,,,,,369,369,369,369","369,369,369,,,369,,,,,,369,369,369,369,369,369,369,369,369,369,369,369",",369,369,369,,369,369,369,369,369,547,547,547,547,547,547,547,547,547","547,547,,547,547,,,547,547,,369,,,369,,,369,369,,,369,,369,547,,547","369,547,547,,547,547,547,547,547,369,547,,,,369,369,369,369,,369,369","369,369,,,,,369,369,547,547,,,,,369,,369,369,369,,,369,369,250,250,250","250,250,250,,,,250,250,,,,250,,250,250,250,250,250,250,250,,,,,,250","250,250,250,250,250,250,,,250,,,,,,250,250,250,250,250,250,250,250,250","250,250,250,,250,250,250,,250,250,250,250,250,1061,1061,1061,1061,1061","1061,1061,1061,1061,1061,1061,,1061,1061,,,1061,1061,,250,,,250,,,250","250,,,250,,250,1061,,1061,250,1061,1061,,1061,1061,1061,1061,1061,250","1061,,,,250,250,250,250,,250,250,250,250,,,,,250,250,,1061,,,,,250,","250,250,250,,,250,250,852,852,852,852,852,852,,,,852,852,,,,852,,852","852,852,852,852,852,852,,,,,,852,852,852,852,852,852,852,,,852,,,,,","852,852,852,852,852,852,852,852,852,852,852,852,,852,852,852,,852,852","852,852,852,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,1005,","1005,1005,,,1005,1005,,852,,,852,,,852,852,,,852,,852,1005,,1005,852","1005,1005,,1005,1005,1005,1005,1005,852,1005,,,,852,852,852,852,,852","852,852,852,,,,,852,852,,1005,,,,,852,,852,852,852,,,852,852,227,227","227,227,227,227,,,,227,227,,,,227,,227,227,227,227,227,227,227,,,,,","227,227,227,227,227,227,227,,,227,,,,,,227,227,227,227,227,227,227,227","227,227,227,227,,227,227,227,,227,227,227,227,227,602,602,602,602,602","602,602,602,602,602,602,,602,602,,,602,602,,227,,,227,,,227,227,,,227",",227,602,,602,227,602,602,,602,602,602,602,602,227,602,,,,227,227,227","227,,227,227,227,227,,,,,227,227,,602,,,,,227,,227,227,227,,,227,227","841,841,841,841,841,841,,,,841,841,,,,841,,841,841,841,841,841,841,841",",,,,,841,841,841,841,841,841,841,,,841,,,,,,841,841,841,841,841,841","841,841,841,841,841,841,,841,841,841,,841,841,841,841,841,1028,1028","1028,1028,1028,1028,1028,1028,1028,1028,1028,,1028,1028,,,1028,1028",",841,,,841,,,841,841,,,841,,841,1028,,1028,841,1028,1028,,1028,1028","1028,1028,1028,841,1028,,,,841,841,841,841,,841,841,841,841,,,,,841","841,,1028,,,,,841,,841,841,841,,,841,841,1007,1007,1007,1007,1007,1007",",,,1007,1007,,,,1007,,1007,1007,1007,1007,1007,1007,1007,,,,,,1007,1007","1007,1007,1007,1007,1007,,,1007,,,,,,1007,1007,1007,1007,1007,1007,1007","1007,1007,1007,1007,1007,,1007,1007,1007,,1007,1007,1007,1007,1007,1027","1027,1027,1027,1027,1027,1027,1027,1027,1027,1027,,1027,1027,,,1027","1027,,1007,,,1007,,,1007,1007,,,1007,,1007,1027,,1027,1007,1027,1027",",1027,1027,1027,1027,1027,1007,1027,,,,1007,1007,1007,1007,,1007,1007","1007,1007,,,,,1007,1007,,1027,,,,,1007,,1007,1007,1007,,,1007,1007,1091","1091,1091,1091,1091,1091,,,,1091,1091,,,,1091,,1091,1091,1091,1091,1091","1091,1091,,,,,,1091,1091,1091,1091,1091,1091,1091,,,1091,,,,,,1091,1091","1091,1091,1091,1091,1091,1091,1091,1091,1091,1091,,1091,1091,1091,,1091","1091,1091,1091,1091,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004","1004,,1004,1004,,,1004,1004,,1091,,,1091,,,1091,1091,,,1091,,1091,1004",",1004,1091,1004,1004,,1004,1004,1004,1004,1004,1091,1004,,,,1091,1091","1091,1091,,1091,1091,1091,1091,,,,,1091,1091,,1004,,,,,1091,,1091,1091","1091,,,1091,1091,1140,1140,1140,1140,1140,1140,,,,1140,1140,,,,1140",",1140,1140,1140,1140,1140,1140,1140,,,,,,1140,1140,1140,1140,1140,1140","1140,,491,1140,491,491,491,,491,1140,1140,1140,1140,1140,1140,1140,1140","1140,1140,1140,1140,,1140,1140,1140,,1140,1140,1140,1140,1140,706,,706","706,706,,706,,491,,1107,,1107,1107,1107,,1107,491,,1140,,,1140,,,1140","1140,,544,1140,,1140,,,,1140,,706,,528,,,,,1140,,706,1107,,1140,1140","1140,1140,,1140,1140,1140,1140,,,544,,1140,1140,544,544,,544,544,,1140","528,1140,1140,1140,528,528,1140,1140,618,618,618,618,618,618,,,,618","618,,,,618,,618,618,618,618,618,618,618,,,,,,618,618,618,618,618,618","618,,1108,618,1108,1108,1108,,1108,618,618,618,618,618,618,618,618,618","618,618,618,,618,618,618,,618,618,618,618,618,546,546,546,546,546,546","546,546,1108,546,546,,,,,,546,546,,618,,,618,,,618,618,,543,618,,618","546,,546,618,546,546,,546,546,546,546,546,618,546,,,,618,618,618,618",",618,618,618,618,,,543,,618,618,543,543,,543,543,,618,,618,618,618,",",618,618,615,615,615,615,615,615,,,,615,615,,,,615,,615,615,615,615","615,615,615,,,,,,615,615,615,615,615,615,615,,908,615,908,908,908,,908","615,615,615,615,615,615,615,615,615,615,615,615,,615,615,615,,615,615","615,615,615,601,,,,,,,,908,,,,,,,,601,601,,615,,,615,,,615,615,,,615",",615,601,,601,615,601,601,,601,601,,,601,615,601,,,,615,615,615,615",",615,615,615,615,,,,,615,615,,,,,,,615,,615,615,615,,,615,615,887,887","887,887,887,887,,,,887,887,,,,887,,887,887,887,887,887,887,887,,,,,","887,887,887,887,887,887,887,,,887,,,,,,887,887,887,887,887,887,887,887","887,887,887,887,,887,887,887,,887,887,887,887,887,545,545,545,545,545","545,545,,,545,545,,,,,,545,545,,887,,,887,,,887,887,,,887,,887,545,","545,887,545,545,,545,545,545,545,545,887,545,,,,887,887,887,887,,887","887,887,887,,,,,887,887,,,,,,,887,,887,887,887,,,887,887,339,339,339","339,339,339,,,,339,339,,,,339,,339,339,339,339,339,339,339,,,,,,339","339,339,339,339,339,339,,,339,,,,,,339,339,339,339,339,339,339,339,339","339,339,339,,339,339,339,,339,339,339,339,339,526,526,526,526,526,526","526,526,526,526,526,,526,526,,,526,526,,339,,,339,,,339,339,,,339,,339","526,,526,339,526,526,,526,526,526,526,526,339,526,,,,339,339,339,339",",339,339,339,339,,,,,339,339,,,,,,,339,,339,339,339,,,339,339,1090,1090","1090,1090,1090,1090,,,,1090,1090,,,,1090,,1090,1090,1090,1090,1090,1090","1090,,,,,,1090,1090,1090,1090,1090,1090,1090,,,1090,,,,,,1090,1090,1090","1090,1090,1090,1090,1090,1090,1090,1090,1090,,1090,1090,1090,,1090,1090","1090,1090,1090,542,542,542,542,542,542,542,,,542,542,,,,,,542,542,,1090",",,1090,,,1090,1090,,,1090,,1090,542,,542,1090,542,542,,542,542,542,542","542,1090,542,,,,1090,1090,1090,1090,,1090,1090,1090,1090,,,,,1090,1090",",,,,,,1090,,1090,1090,1090,,,1090,1090,38,38,38,38,38,38,,,,38,38,,",",38,,38,38,38,38,38,38,38,,,,,,38,38,38,38,38,38,38,,,38,,,,,,38,38","38,38,38,38,38,38,38,38,38,38,,38,38,38,,38,38,38,38,38,541,541,541","541,541,541,541,,,541,541,,,,,,541,541,,38,,,38,,,38,38,,,38,,38,541",",541,38,541,541,,541,541,541,541,541,38,541,,,,38,38,38,38,,38,38,38","38,,,,,38,38,,,,,,,38,,38,38,38,,,38,38,985,985,985,985,985,985,,,,985","985,,,,985,,985,985,985,985,985,985,985,,,,,,985,985,985,985,985,985","985,,,985,,,,,,985,985,985,985,985,985,985,985,985,985,985,985,,985","985,985,,985,985,985,985,985,540,540,540,540,540,540,540,,,540,540,",",,,,540,540,,985,,,985,,,985,985,,,985,,985,540,,540,985,540,540,,540","540,540,540,540,985,540,,,,985,985,985,985,,985,985,985,985,,,,,985","985,,,,,,,985,,985,985,985,,,985,985,1184,1184,1184,1184,1184,1184,",",,1184,1184,,,,1184,,1184,1184,1184,1184,1184,1184,1184,,,,,,1184,1184","1184,1184,1184,1184,1184,,,1184,,,,,,1184,1184,1184,1184,1184,1184,1184","1184,1184,1184,1184,1184,,1184,1184,1184,,1184,1184,1184,1184,1184,361","361,361,361,361,361,361,361,361,361,361,,361,361,,,361,361,,1184,,,1184",",,1184,1184,,,1184,,1184,361,,361,1184,361,361,,361,361,361,361,361","1184,361,,,,1184,1184,1184,1184,,1184,1184,1184,1184,,,,,1184,1184,",",,,,,1184,,1184,1184,1184,,,1184,1184,385,385,385,385,385,385,,,,385","385,,,,385,,385,385,385,385,385,385,385,,,,,,385,385,385,385,385,385","385,,,385,,,,,,385,385,385,385,385,385,385,385,385,385,385,385,,385","385,385,,385,385,385,385,385,539,539,539,539,539,539,539,,,539,539,",",,,,539,539,,385,,,385,,,385,385,,,385,,385,539,,539,385,539,539,,539","539,539,539,539,385,539,,,,385,385,385,385,,385,385,385,385,,,,,385","385,,,,,,,385,,385,385,385,,,385,385,384,384,384,384,384,384,,,,384","384,,,,384,,384,384,384,384,384,384,384,,,,,,384,384,384,384,384,384","384,,,384,,,,,,384,384,384,384,384,384,384,384,384,384,384,384,,384","384,384,,384,384,384,384,384,538,538,538,538,538,538,538,,,538,538,",",,,,538,538,,384,,,384,,,384,384,,,384,,384,538,,538,384,538,538,,538","538,538,538,538,384,538,,,,384,384,384,384,,384,384,384,384,,,,,384","384,,,,,,,384,,384,384,384,,,384,384,132,132,132,132,132,132,,,,132","132,,,,132,,132,132,132,132,132,132,132,,,,,,132,132,132,132,132,132","132,,,132,,,,,,132,132,132,132,132,132,132,132,132,132,132,132,,132","132,132,,132,132,132,132,132,527,527,527,527,527,527,527,527,527,527","527,,527,527,,,527,527,,132,,,132,,,132,132,,,132,,132,527,,527,132","527,527,,527,527,527,527,527,132,527,,,,132,132,132,132,,132,132,132","132,,,,,132,132,,,,,,,132,,132,132,132,,,132,132,334,334,334,334,334","334,,,,334,334,,,,334,,334,334,334,334,334,334,334,,,,,,334,334,334","334,334,334,334,,,334,,,,,,334,334,334,334,334,334,334,334,334,334,334","334,,334,334,334,,334,334,334,334,334,548,,,,,,,,,,,,,,,,548,548,,334",",,334,,,334,334,,,334,,334,548,,548,334,548,548,,548,548,,,548,334,548",",,,334,334,334,334,,334,334,334,334,,,,,334,334,,,,914,914,914,334,914","334,334,334,914,914,334,334,,914,,914,914,914,914,914,914,914,,,,,,914","914,914,914,914,914,914,,,914,,,,,,,914,,,914,914,914,914,914,914,914","914,,914,914,914,,914,914,914,914,914,537,537,537,537,537,537,537,,","537,537,,,,,,537,537,,914,,,914,,,914,914,,,914,,,537,,537,914,537,537",",537,537,537,537,537,914,537,,,,914,914,914,914,,914,914,914,914,,,",",914,914,,,,915,915,915,914,915,914,914,914,915,915,914,914,,915,,915","915,915,915,915,915,915,,,,,,915,915,915,915,915,915,915,,,915,,,,,",",915,,,915,915,915,915,915,915,915,915,,915,915,915,,915,915,915,915","915,362,362,362,362,362,362,362,362,362,362,362,,362,362,,,362,362,","915,,,915,,,915,915,,,915,,,362,,362,915,362,362,,362,362,362,362,362","915,362,,,,915,915,915,915,,915,915,915,915,,,,,915,915,,,,916,916,916","915,916,915,915,915,916,916,915,915,,916,,916,916,916,916,916,916,916",",,,,,916,916,916,916,916,916,916,,,916,,,,,,,916,,,916,916,916,916,916","916,916,916,,916,916,916,,916,916,916,916,916,534,,,,,,,,,,,,,,,,534","534,,916,,,916,,,916,916,,,916,,,534,,534,916,534,534,,534,534,,,,916",",,,,916,916,916,916,,916,916,916,916,,,,,916,916,,,,261,261,261,916","261,916,916,916,261,261,916,916,,261,,261,261,261,261,261,261,261,,",",,,261,261,261,261,261,261,261,,,261,,,,,,,261,,,261,261,261,261,261","261,261,261,,261,261,261,,261,261,261,261,261,535,,,,,,,,,,,,,,,,535","535,,261,,,261,,,261,261,,,261,,,535,,535,261,535,535,,535,535,,,,261",",,,,261,261,261,261,,261,261,261,261,,,,,261,261,,,,729,729,729,261","729,261,261,261,729,729,261,261,,729,,729,729,729,729,729,729,729,,",",,,729,729,729,729,729,729,729,,,729,,,,,,,729,,,729,729,729,729,729","729,729,729,,729,729,729,,729,729,729,729,729,536,,,,,,,,,,,,,,,,536","536,,729,,,729,,,729,729,,,729,,,536,,,729,536,536,,536,536,,,,729,",",,,729,729,729,729,,729,729,729,729,,,,,729,729,,,,325,325,325,729,325","729,729,729,325,325,729,729,,325,,325,325,325,325,325,325,325,,,,,,325","325,325,325,325,325,325,,,325,,,,,,,325,,,325,325,325,325,325,325,325","325,,325,325,325,,325,325,325,325,325,,,,,,,,,,,,,,,,,,,,325,,,325,",",325,325,,,325,,,,,,325,,,,,,,,,325,,,,,325,325,325,325,,325,325,325","325,,,,,325,325,,,,728,728,728,325,728,325,325,325,728,728,325,325,","728,,728,728,728,728,728,728,728,,,,,,728,728,728,728,728,728,728,,","728,,,,,,,728,,,728,728,728,728,728,728,728,728,,728,728,728,,728,728","728,728,728,,,,,,,,,,,,,,,,,,,,728,,,728,,,728,728,,,728,,,,,,728,,",",,,,,,728,,,,,728,728,728,728,,728,728,728,728,,,,,728,728,,,,260,260","260,728,260,728,728,728,260,260,728,728,,260,,260,260,260,260,260,260","260,,,,,,260,260,260,260,260,260,260,,,260,,,,,,,260,,,260,260,260,260","260,260,260,260,,260,260,260,,260,260,260,260,260,,,,,,,,,,,,,,,,,,",",260,,,260,,,260,260,,,260,,,,,,260,,,,,,,,,260,,,,,260,260,260,260",",260,260,260,260,,,,,260,260,,,,259,259,259,260,259,260,260,260,259","259,260,260,,259,,259,259,259,259,259,259,259,,,,,,259,259,259,259,259","259,259,,,259,,,,,,,259,,,259,259,259,259,259,259,259,259,,259,259,259",",259,259,259,259,259,,,,,,,,,,,,,,,,,,,,259,,,259,,,259,259,,,259,,",",,,259,,,,,,,,,259,,,,,259,259,259,259,,259,259,259,259,,,,,259,259",",,,258,258,258,259,258,259,259,259,258,258,259,259,,258,,258,258,258","258,258,258,258,,,,,,258,258,258,258,258,258,258,,,258,,,,,,,258,,,258","258,258,258,258,258,258,258,,258,258,258,,258,258,258,258,258,,,,,,",",,,,,,,,,,,,,258,,,258,,,258,258,,,258,,,,,,258,,,,,,,,,258,,,,,258","258,258,258,,258,258,258,258,,,,,258,258,,,,257,257,257,258,257,258","258,258,257,257,258,258,,257,,257,257,257,257,257,257,257,,,,,,257,257","257,257,257,257,257,,,257,,,,,,,257,,,257,257,257,257,257,257,257,257",",257,257,257,,257,257,257,257,257,,,,,,,,,,,,,,,,,,,,257,,,257,,,257","257,,,257,,,,,,257,,,,,,,,,257,,,,,257,257,257,257,,257,257,257,257",",,,,257,257,,,,256,256,256,257,256,257,257,257,256,256,257,257,,256",",256,256,256,256,256,256,256,,,,,,256,256,256,256,256,256,256,,,256",",,,,,,256,,,256,256,256,256,256,256,256,256,,256,256,256,,256,256,256","256,256,,,,,,,,,,,,,,,,,,,,256,,,256,,,256,256,,,256,,,,,,256,,,,,,",",,256,,,,,256,256,256,256,,256,256,256,256,,,,,256,256,,,,,,,256,,256","256,256,,,256,256,330,330,330,330,330,,,,330,330,,,,330,,330,330,330","330,330,330,330,,,,,,330,330,330,330,330,330,330,,,330,,,,,,330,330",",330,330,330,330,330,330,330,330,330,,330,330,330,,330,330,330,330,330",",,,,,,,,,,,,,,,,,,,330,,,330,,,330,330,,,330,,330,,,,330,,,,,,,,,330",",,,,330,330,330,330,,330,330,330,330,,,,,330,330,,,,704,704,704,330","704,330,330,330,704,704,330,330,,704,,704,704,704,704,704,704,704,,",",,,704,704,704,704,704,704,704,,,704,,,,,,,704,,,704,704,704,704,704","704,704,704,,704,704,704,,704,704,704,704,704,,,,,,,,,,,,,,,,,,,,704",",,704,,,704,704,,,704,,,,,,704,,,,,,,,,704,,,,,704,704,704,704,,704","704,704,704,,,,,704,704,,,,691,691,691,704,691,704,704,704,691,691,704","704,,691,,691,691,691,691,691,691,691,,,,,,691,691,691,691,691,691,691",",,691,,,,,,,691,,,691,691,691,691,691,691,691,691,,691,691,691,,691","691,691,691,691,,,,,,,,,,,,,,,,,,,,691,,,691,,,691,691,,,691,,691,,",",691,,,,,,,,,691,,,,,691,691,691,691,,691,691,691,691,,,,,691,691,,",",255,255,255,691,255,691,691,691,255,255,691,691,,255,,255,255,255,255","255,255,255,,,,,,255,255,255,255,255,255,255,,,255,,,,,,,255,,,255,255","255,255,255,255,255,255,,255,255,255,,255,255,255,255,255,,,,,,,,,,",",,,,,,,,,255,,,255,,,255,255,,,255,,,,,,255,,,,,,,,,255,,,,,255,255","255,255,,255,255,255,255,,,,,255,255,,,,254,254,254,255,254,255,255","255,254,254,255,255,,254,,254,254,254,254,254,254,254,,,,,,254,254,254","254,254,254,254,,,254,,,,,,,254,,,254,254,254,254,254,254,254,254,,254","254,254,,254,254,254,254,254,,,,,,,,,,,,,,,,,,,,254,,,254,,,254,254",",,254,,,,,,254,,,,,,,,,254,,,,,254,254,254,254,,254,254,254,254,,,,","254,254,,,,685,685,685,254,685,254,254,254,685,685,254,254,,685,,685","685,685,685,685,685,685,,,,,,685,685,685,685,685,685,685,,,685,,,,,",",685,,,685,685,685,685,685,685,685,685,,685,685,685,,685,685,685,685","685,,,,,,,,,,,,,,,,,,,,685,,,685,,,685,685,,,685,,,,,,685,,,,,,,,,685",",,,,685,685,685,685,,685,685,685,685,,,,,685,685,,,,684,684,684,685","684,685,685,685,684,684,685,685,,684,,684,684,684,684,684,684,684,,",",,,684,684,684,684,684,684,684,,,684,,,,,,,684,,,684,684,684,684,684","684,684,684,,684,684,684,,684,684,684,684,684,,,,,,,,,,,,,,,,,,,,684",",,684,,,684,684,,,684,,,,,,684,,,,,,,,,684,,,,,684,684,684,684,,684","684,684,684,,,,,684,684,,,,680,680,680,684,680,684,684,684,680,680,684","684,,680,,680,680,680,680,680,680,680,,,,,,680,680,680,680,680,680,680",",,680,,,,,,,680,,,680,680,680,680,680,680,680,680,,680,680,680,,680","680,680,680,680,,,,,,,,,,,,,,,,,,,,680,,,680,,,680,680,,,680,,,,,,680",",,,,,,,,680,,,,,680,680,680,680,,680,680,680,680,,,,,680,680,,,,679","679,679,680,679,680,680,680,679,679,680,680,,679,,679,679,679,679,679","679,679,,,,,,679,679,679,679,679,679,679,,,679,,,,,,,679,,,679,679,679","679,679,679,679,679,,679,679,679,,679,679,679,679,679,,,,,,,,,,,,,,",",,,,,679,,,679,,,679,679,,,679,,,,,,679,,,,,,,,,679,,,,,679,679,679","679,,679,679,679,679,,,,,679,679,,,,678,678,678,679,678,679,679,679","678,678,679,679,,678,,678,678,678,678,678,678,678,,,,,,678,678,678,678","678,678,678,,,678,,,,,,,678,,,678,678,678,678,678,678,678,678,678,678","678,678,,678,678,678,678,678,,,,,,,,,,,,,,,,,,,,678,,,678,,,678,678",",,678,,,,678,,678,,,678,,,,,,678,,,,,678,678,678,678,,678,678,678,678",",,,,678,678,,,,677,677,677,678,677,678,678,678,677,677,678,678,,677",",677,677,677,677,677,677,677,,,,,,677,677,677,677,677,677,677,,,677",",,,,,,677,,,677,677,677,677,677,677,677,677,677,677,677,677,,677,677","677,677,677,,,,,,,,,,,,,,,,,,,,677,,,677,,,677,677,,,677,,677,,677,","677,,,677,,,,,,677,,,,,677,677,677,677,,677,677,677,677,,,,,677,677",",,,950,950,950,677,950,677,677,677,950,950,677,677,,950,,950,950,950","950,950,950,950,,,,,,950,950,950,950,950,950,950,,,950,,,,,,,950,,,950","950,950,950,950,950,950,950,,950,950,950,,950,950,950,950,950,,,,,,",",,,,,,,,,,,,,950,,,950,,,950,950,,,950,,,,,,950,,,,,,,,,950,,,,,950","950,950,950,,950,950,950,950,,,,,950,950,,,,956,956,956,950,956,950","950,950,956,956,950,950,,956,,956,956,956,956,956,956,956,,,,,,956,956","956,956,956,956,956,,,956,,,,,,,956,,,956,956,956,956,956,956,956,956",",956,956,956,,956,956,956,956,956,,,,,,,,,,,,,,,,,,,,956,,,956,,,956","956,,,956,,,,,,956,,,,,,,,,956,,,,,956,956,956,956,,956,956,956,956",",,,,956,956,,,,,,,956,,956,956,956,32,,956,956,,,,32,32,32,,,32,32,32",",32,,,,,,,,32,32,32,32,,,,,,,,,32,32,,32,32,32,32,32,,,,,,,,,,,,,,,",",,,,,,,32,32,32,32,32,32,32,32,32,32,32,32,32,32,,,32,32,32,,,32,,32","32,,,32,32,,32,,32,,32,,32,32,,32,32,32,32,32,33,32,32,32,,,,33,33,33",",,33,33,33,,33,32,,,32,32,,32,33,32,33,33,,,,,32,,,,33,33,,33,33,33","33,33,,,,,,,,,,,,,,,,,,,,,,,33,33,33,33,33,33,33,33,33,33,33,33,33,33",",,33,33,33,,,33,,33,33,,,33,33,,33,,33,,33,,33,33,,33,33,33,33,33,,33",",33,,,,,,,,,,,,,,33,,,33,33,,33,,33,674,674,674,,674,,33,,674,674,,",",674,,674,674,674,674,674,674,674,,,,,,674,674,674,674,674,674,674,",",674,,,,,,,674,,,674,674,674,674,674,674,674,674,,674,674,674,,674,674","674,674,674,,,,,,,,,,,,,,,,,,,,674,,,674,,,674,674,,,674,,,,,,674,,",",,,,,,674,,,,,674,674,674,674,,674,674,674,674,,,,,674,674,,,,34,34","34,674,34,674,674,674,34,34,674,674,,34,,34,34,34,34,34,34,34,,,,,,34","34,34,34,34,34,34,,,34,,,,,,,34,,,34,34,34,34,34,34,34,34,34,34,34,34",",34,34,34,34,34,,,,,,,,,,,,,,,,,,,,34,,,34,,,34,34,,,34,,34,,34,,34",",,34,,,,,,34,,,,,34,34,34,34,,34,34,34,34,,,,,34,34,,,,,,,34,,34,34","34,,,34,34,673,673,673,673,673,,,,673,673,,,,673,,673,673,673,673,673","673,673,,,,,,673,673,673,673,673,673,673,,,673,,,,,,673,673,,673,673","673,673,673,673,673,673,673,,673,673,673,,673,673,673,673,673,,,,,,",",,,,,,,,,,,,,673,,,673,,,673,673,,,673,,673,,,,673,,,,,,,,,673,,,,,673","673,673,673,,673,673,673,673,,,,,673,673,,,,979,979,979,673,979,673","673,673,979,979,673,673,,979,,979,979,979,979,979,979,979,,,,,,979,979","979,979,979,979,979,,,979,,,,,,,979,,,979,979,979,979,979,979,979,979",",979,979,979,,979,979,979,979,979,,,,,,,,,,,,,,,,,,,,979,,,979,,,979","979,,,979,,,,,,979,,,,,,,,,979,,,,,979,979,979,979,,979,979,979,979",",,,,979,979,,,,670,670,670,979,670,979,979,979,670,670,979,979,,670",",670,670,670,670,670,670,670,,,,,,670,670,670,670,670,670,670,,,670",",,,,,,670,,,670,670,670,670,670,670,670,670,670,670,670,670,,670,670","670,670,670,,,,,,,,,,,,,,,,,,,,670,,,670,,,670,670,,,670,,670,,670,","670,,,670,,,,,,670,,,,,670,670,670,670,,670,670,670,670,,,,,670,670",",,,984,984,984,670,984,670,670,670,984,984,670,670,,984,,984,984,984","984,984,984,984,,,,,,984,984,984,984,984,984,984,,,984,,,,,,,984,,,984","984,984,984,984,984,984,984,,984,984,984,,984,984,984,984,984,,,,,,",",,,,,,,,,,,,,984,,,984,,,984,984,,,984,,984,,,,984,,,,,,,,,984,,,,,984","984,984,984,,984,984,984,984,,,,,984,984,,,,669,669,669,984,669,984","984,984,669,669,984,984,,669,,669,669,669,669,669,669,669,,,,,,669,669","669,669,669,669,669,,,669,,,,,,,669,,,669,669,669,669,669,669,669,669",",669,669,669,,669,669,669,669,669,,,,,,,,,,,,,,,,,,,,669,,,669,,,669","669,,,669,,,,,,669,,,,,,,,,669,,,,,669,669,669,669,,669,669,669,669",",,,,669,669,,,,668,668,668,669,668,669,669,669,668,668,669,669,,668",",668,668,668,668,668,668,668,,,,,,668,668,668,668,668,668,668,,,668",",,,,,,668,,,668,668,668,668,668,668,668,668,,668,668,668,,668,668,668","668,668,,,,,,,,,,,,,,,,,,,,668,,,668,,,668,668,,,668,,668,,,,668,,,",",,,,,668,,,,,668,668,668,668,,668,668,668,668,,,,,668,668,,,,,,,668",",668,668,668,,,668,668,666,666,666,666,666,,,,666,666,,,,666,,666,666","666,666,666,666,666,,,,,,666,666,666,666,666,666,666,,,666,,,,,,666","666,,666,666,666,666,666,666,666,666,666,,666,666,666,,666,666,666,666","666,,,,,,,,,,,,,,,,,,,,666,,,666,,,666,666,,,666,,666,,,,666,,,,,,,",",666,,,,,666,666,666,666,,666,666,666,666,,,,,666,666,,,,247,247,247","666,247,666,666,666,247,247,666,666,,247,,247,247,247,247,247,247,247",",,,,,247,247,247,247,247,247,247,,,247,,,,,,,247,,,247,247,247,247,247","247,247,247,,247,247,247,,247,247,247,247,247,,,,,,,,,,,,,,,,,,,,247",",,247,,,247,247,,,247,,,,,,247,,,,,,,,,247,,,,,247,247,247,247,,247","247,247,247,,,,,247,247,,,,35,35,35,247,35,247,247,247,35,35,247,247",",35,,35,35,35,35,35,35,35,,,,,,35,35,35,35,35,35,35,,,35,,,,,,,35,,","35,35,35,35,35,35,35,35,35,35,35,35,,35,35,35,35,35,,,,,,,,,,,,,,,,",",,,35,,,35,,,35,35,,,35,,35,,35,,35,,,35,,,,,,35,,,,,35,35,35,35,,35","35,35,35,,,,,35,35,,,,36,36,36,35,36,35,35,35,36,36,35,35,,36,,36,36","36,36,36,36,36,,,,,,36,36,36,36,36,36,36,,,36,,,,,,,36,,,36,36,36,36","36,36,36,36,36,36,36,36,,36,36,36,36,36,,,,,,,,,,,,,,,,,,,,36,,,36,",",36,36,,,36,,36,,36,,36,,,36,,,,,,36,,,,,36,36,36,36,,36,36,36,36,,",",,36,36,,,,635,635,635,36,635,36,36,36,635,635,36,36,,635,,635,635,635","635,635,635,635,,,,,,635,635,635,635,635,635,635,,,635,,,,,,,635,,,635","635,635,635,635,635,635,635,635,635,635,635,,635,635,635,635,635,,,",",,,,,,,,,,,,,,,,635,,,635,,,635,635,,,635,,635,,635,,635,,,635,,,,,","635,,,,,635,635,635,635,,635,635,635,635,,,,,635,635,,,,1003,1003,1003","635,1003,635,635,635,1003,1003,635,635,,1003,,1003,1003,1003,1003,1003","1003,1003,,,,,,1003,1003,1003,1003,1003,1003,1003,,,1003,,,,,,,1003",",,1003,1003,1003,1003,1003,1003,1003,1003,1003,1003,1003,1003,,1003","1003,1003,1003,1003,,,,,,,,,,,,,,,,,,,,1003,,,1003,,,1003,1003,,,1003",",,,1003,,1003,,,1003,,,,,,1003,,,,,1003,1003,1003,1003,,1003,1003,1003","1003,,,,,1003,1003,,,,625,625,625,1003,625,1003,1003,1003,625,625,1003","1003,,625,,625,625,625,625,625,625,625,,,,,,625,625,625,625,625,625","625,,,625,,,,,,,625,,,625,625,625,625,625,625,625,625,625,625,625,625",",625,625,625,625,625,,,,,,,,,,,,,,,,,,,,625,,,625,,,625,625,,,625,,625",",625,,625,,,625,,,,,,625,,,,,625,625,625,625,,625,625,625,625,,,,,625","625,,,,624,624,624,625,624,625,625,625,624,624,625,625,,624,,624,624","624,624,624,624,624,,,,,,624,624,624,624,624,624,624,,,624,,,,,,,624",",,624,624,624,624,624,624,624,624,,624,624,624,,624,624,624,624,624",",,,,,,,,,,,,,,,,,,,624,,,624,,,624,624,,,624,,624,,,,624,,,,,,,,,624",",,,,624,624,624,624,,624,624,624,624,,,,,624,624,,,,611,611,611,624","611,624,624,624,611,611,624,624,,611,,611,611,611,611,611,611,611,,",",,,611,611,611,611,611,611,611,,,611,,,,,,,611,,,611,611,611,611,611","611,611,611,611,611,611,611,,611,611,611,611,611,,,,,,,,,,,,,,,,,,,","611,,,611,,,611,611,,,611,,,,,,611,,,611,,,,,,611,,,,,611,611,611,611",",611,611,611,611,,,,,611,611,,,,608,608,608,611,608,611,611,611,608","608,611,611,,608,,608,608,608,608,608,608,608,,,,,,608,608,608,608,608","608,608,,,608,,,,,,,608,,,608,608,608,608,608,608,608,608,608,608,608","608,,608,608,608,608,608,,,,,,,,,,,,,,,,,,,,608,,,608,,,608,608,,,608",",608,,,,608,,,608,,,,,,608,,,,,608,608,608,608,,608,608,608,608,,,,","608,608,,,,236,236,236,608,236,608,608,608,236,236,608,608,,236,,236","236,236,236,236,236,236,,,,,,236,236,236,236,236,236,236,,,236,,,,,",",236,,,236,236,236,236,236,236,236,236,,236,236,236,,236,236,236,236","236,,,,,,,,,,,,,,,,,,,,236,,,236,,,236,236,,,236,,,,,,236,,,,,,,,,236",",,,,236,236,236,236,,236,236,236,236,,,,,236,236,236,,,235,235,235,236","235,236,236,236,235,235,236,236,,235,,235,235,235,235,235,235,235,,",",,,235,235,235,235,235,235,235,,,235,,,,,,,235,,,235,235,235,235,235","235,235,235,,235,235,235,,235,235,235,235,235,,,,,,,,,,,,,,,,,,,,235",",,235,,,235,235,,,235,,,,,,235,,,,,,,,,235,,,,,235,235,235,235,,235","235,235,235,,,,,235,235,,,,603,603,603,235,603,235,235,235,603,603,235","235,,603,,603,603,603,603,603,603,603,,,,,,603,603,603,603,603,603,603",",,603,,,,,,,603,,,603,603,603,603,603,603,603,603,,603,603,603,,603","603,603,603,603,,,,,,,,,,,,,,,,,,,,603,,,603,,,603,603,,,603,,,,,,603",",,,,,,,,603,,,,,603,603,603,603,,603,603,603,603,,,,,603,603,,,,1029","1029,1029,603,1029,603,603,603,1029,1029,603,603,,1029,,1029,1029,1029","1029,1029,1029,1029,,,,,,1029,1029,1029,1029,1029,1029,1029,,,1029,",",,,,,1029,,,1029,1029,1029,1029,1029,1029,1029,1029,,1029,1029,1029",",1029,1029,1029,1029,1029,,,,,,,,,,,,,,,,,,,,1029,,,1029,,,1029,1029",",,1029,,,,,,1029,,,,,,,,,1029,,,,,1029,1029,1029,1029,,1029,1029,1029","1029,,,,,1029,1029,,,,600,600,600,1029,600,1029,1029,1029,600,600,1029","1029,,600,,600,600,600,600,600,600,600,,,,,,600,600,600,600,600,600","600,,,600,,,,,,,600,,,600,600,600,600,600,600,600,600,,600,600,600,","600,600,600,600,600,,,,,,,,,,,,,,,,,,,,600,,,600,,,600,600,,,600,,,",",,600,,,,,,,,,600,,,,,600,600,600,600,,600,600,600,600,,,,,600,600,",",,597,597,597,600,597,600,600,600,597,597,600,600,,597,,597,597,597","597,597,597,597,,,,,,597,597,597,597,597,597,597,,,597,,,,,,,597,,,597","597,597,597,597,597,597,597,,597,597,597,,597,597,597,597,597,,,,,,",",,,,,,,,,,,,,597,,,597,,,597,597,,,597,,,,,,597,,,,,,,,,597,,,,,597","597,597,597,,597,597,597,597,,,,,597,597,,,,234,234,234,597,234,597","597,597,234,234,597,597,,234,,234,234,234,234,234,234,234,,,,,,234,234","234,234,234,234,234,,,234,,,,,,,234,,,234,234,234,234,234,234,234,234",",234,234,234,,234,234,234,234,234,,,,,,,,,,,,,,,,,,,,234,,,234,,,234","234,,,234,,,,,,234,,,,,,,,,234,,,,,234,234,234,234,,234,234,234,234",",,,,234,234,,,,587,587,587,234,587,234,234,234,587,587,234,234,,587",",587,587,587,587,587,587,587,,,,,,587,587,587,587,587,587,587,,,587",",,,,,,587,,,587,587,587,587,587,587,587,587,587,587,587,587,,587,587","587,587,587,,,,,,,,,,,,,,,,,,,,587,,,587,,,587,587,,,587,,587,,587,","587,,,587,,,,,,587,,,,,587,587,587,587,,587,587,587,587,,,,,587,587",",,,,,,587,,587,587,587,,,587,587,577,577,577,577,577,,,,577,577,,,,577",",577,577,577,577,577,577,577,,,,,,577,577,577,577,577,577,577,,,577",",,,,,577,577,577,577,577,577,577,577,577,577,577,577,,577,577,577,,577","577,577,577,577,,,,,,,,,,,,,,,,,,,,577,,,577,,,577,577,,,577,,577,,",",577,,,,,,,,,577,,,,,577,577,577,577,,577,577,577,577,,,,,577,577,,",",,,577,577,,577,577,577,,,577,577,571,571,571,,571,,,,571,571,,,,571",",571,571,571,571,571,571,571,,,,,,571,571,571,571,571,571,571,,,571",",,,,,,571,,,571,571,571,571,571,571,571,571,,571,571,571,,571,571,571","571,571,,,,,,,,,,,,,,,,,,,,571,,,571,,,571,571,,,571,,,,,,571,,,,,,",",,571,,,,,571,571,571,571,,571,571,571,571,,,,,571,571,,,,569,569,569","571,569,571,571,571,569,569,571,571,,569,,569,569,569,569,569,569,569",",,,,,569,569,569,569,569,569,569,,,569,,,,,,,569,,,569,569,569,569,569","569,569,569,569,569,569,569,,569,569,569,569,569,,,,,,,,,,,,,,,,,,,","569,,,569,,,569,569,,,569,,,,569,,569,,,569,,,,,,569,,,,,569,569,569","569,,569,569,569,569,,,,,569,569,,,,366,366,366,569,366,569,569,569","366,366,569,569,,366,,366,366,366,366,366,366,366,,,,,,366,366,366,366","366,366,366,,,366,,,,,,,366,,,366,366,366,366,366,366,366,366,,366,366","366,,366,366,366,366,366,,,,,,,,,,,,,,,,,,,,366,,,366,,,366,366,,,366",",,,,,366,,,,,,,,,366,,,,,366,366,366,366,,366,366,366,366,,,,,366,366",",,,368,368,368,366,368,366,366,366,368,368,366,366,,368,,368,368,368","368,368,368,368,,,,,,368,368,368,368,368,368,368,,,368,,,,,,,368,,,368","368,368,368,368,368,368,368,,368,368,368,,368,368,368,368,368,,,,,,",",,,,,,,,,,,,,368,,,368,368,,368,368,,,368,,,,,,368,,,,,,,,,368,,,,,368","368,368,368,,368,368,368,368,,,,,368,368,,,,567,567,567,368,567,368","368,368,567,567,368,368,,567,,567,567,567,567,567,567,567,,,,,,567,567","567,567,567,567,567,,,567,,,,,,,567,,,567,567,567,567,567,567,567,567","567,567,567,567,,567,567,567,567,567,,,,,,,,,,,,,,,,,,,,567,,,567,,","567,567,,,567,,567,,567,,567,,,567,,,,,,567,,,,,567,567,567,567,,567","567,567,567,,,,,567,567,,,,46,46,46,567,46,567,567,567,46,46,567,567",",46,,46,46,46,46,46,46,46,,,,,,46,46,46,46,46,46,46,,,46,,,,,,,46,,","46,46,46,46,46,46,46,46,,46,46,46,,46,46,46,46,46,,,,,,,,,,,,,,,,,,",",46,,,46,,,46,46,,,46,,,,,,46,,,,,,,,,46,,,,,46,46,46,46,,46,46,46,46",",,,,46,46,,,,557,557,557,46,557,46,46,46,557,557,46,46,,557,,557,557","557,557,557,557,557,,,,,,557,557,557,557,557,557,557,,,557,,,,,,,557",",,557,557,557,557,557,557,557,557,,557,557,557,,557,557,557,557,557",",,,,,,,,,,,,,,,,,,,557,,,557,,,557,557,,,557,,,,,,557,,,,,,,,,557,,",",,557,557,557,557,,557,557,557,557,,,,,557,557,,,,47,47,47,557,47,557","557,557,47,47,557,557,,47,,47,47,47,47,47,47,47,,,,,,47,47,47,47,47","47,47,,,47,,,,,,,47,,,47,47,47,47,47,47,47,47,,47,47,47,,47,47,47,47","47,,,,,,,,,,,,,,,,,,,,47,,,47,,,47,47,,,47,,,,,,47,,,,,,,,,47,,,,,47","47,47,47,,47,47,47,47,,,,,47,47,,,,280,280,280,47,280,47,47,47,280,280","47,47,,280,,280,280,280,280,280,280,280,,,,,,280,280,280,280,280,280","280,,,280,,,,,,,280,,,280,280,280,280,280,280,280,280,,280,280,280,","280,280,280,280,280,,,,,,,,,,,,,,,,,,,,280,,,280,,,280,280,,,280,,,",",,280,,,,,,,,,280,,,,,280,280,280,280,,280,280,280,280,,,,,280,280,",",,275,275,275,280,275,280,280,280,275,275,280,280,,275,,275,275,275","275,275,275,275,,,,,,275,275,275,275,275,275,275,,,275,,,,,,,275,,,275","275,275,275,275,275,275,275,,275,275,275,,275,275,275,275,275,,,,,,",",,,,,,,,,,,,,275,,,275,,,275,275,,,275,,,,,,275,,,,,,,,,275,,,,,275","275,275,275,,275,275,275,275,,,,,275,275,,,,,,,275,,275,275,275,552",",275,275,,,,552,552,552,,,552,552,552,406,552,406,406,406,406,406,,","552,552,552,,,,406,,,,,,552,552,,552,552,552,552,552,1159,,1159,1159","1159,1159,1159,,406,406,,,,,,1159,,406,406,406,406,,,,406,,1131,,1131","1131,1131,1131,1131,552,,,,1159,,,552,1131,,,,552,552,,1159,1159,,,","1159,,,,,,,,,,1131,406,,,,552,552,,,1131,1131,1131,1131,,,,1131,,,,552",",,552,,221,221,221,552,221,1159,,,221,221,552,,,221,,221,221,221,221","221,221,221,,,,,,221,221,221,221,221,221,221,,,221,,,,,,,221,,,221,221","221,221,221,221,221,221,221,221,221,221,,221,221,221,221,221,,,,,,,",",,,,,,,,,,,,221,,,221,,,221,221,,,221,,221,,221,,221,,,221,,,,,,221",",,,,221,221,221,221,,221,221,221,221,,,,,221,221,,,,220,220,220,221","220,221,221,221,220,220,221,221,,220,,220,220,220,220,220,220,220,,",",,,220,220,220,220,220,220,220,,,220,,,,,,,220,,,220,220,220,220,220","220,220,220,,220,220,220,,220,220,220,220,220,,,,,,,,,,,,,,,,,,,,220",",,220,,,220,220,,,220,,,,,,220,,,,,,,,,220,,,,,220,220,220,220,,220","220,220,220,,,,,220,220,,,,75,75,75,220,75,220,220,220,75,75,220,220",",75,,75,75,75,75,75,75,75,,,,,,75,75,75,75,75,75,75,,,75,,,,,,,75,,","75,75,75,75,75,75,75,75,,75,75,75,,75,75,75,75,75,,,,,,,,,,,,,,,,,,",",75,,,75,,,75,75,,,75,,,,,,75,,,,,,,,,75,,,,,75,75,75,75,,75,75,75,75",",,,,75,75,75,,,,,75,75,,75,75,75,,,75,75,71,71,71,,71,,,,71,71,,,,71",",71,71,71,71,71,71,71,,,,,,71,71,71,71,71,71,71,,,71,,,,,,,71,,,71,71","71,71,71,71,71,71,,71,71,71,,71,71,71,71,71,,,,,,,,,,,,,,,,,,,,71,,","71,,,71,71,,,71,,,,,,71,,,,,,,,,71,,,,,71,71,71,71,,71,71,71,71,,,,","71,71,,,,433,433,433,71,433,71,71,71,433,433,71,71,,433,,433,433,433","433,433,433,433,,,,,,433,433,433,433,433,433,433,,,433,,,,,,,433,,,433","433,433,433,433,433,433,433,,433,433,433,,433,433,433,433,433,,,,,,",",,,,,,,,,,,,,433,,,433,,,433,433,,,433,,,,,,433,,,,,,,,,433,,,,,433","433,433,433,,433,433,433,433,,,,,433,433,,,,68,68,68,433,68,433,433","433,68,68,433,433,,68,,68,68,68,68,68,68,68,,,,,,68,68,68,68,68,68,68",",,68,,,,,,,68,,,68,68,68,68,68,68,68,68,68,68,68,68,,68,68,68,68,68",",,,,,,,,,,,,,,,,,,,68,,,68,,,68,68,,,68,,,,,,68,,,68,,,,,,68,,,,,68","68,68,68,,68,68,68,68,,,,,68,68,,,,842,842,842,68,842,68,68,68,842,842","68,68,,842,,842,842,842,842,842,842,842,,,,,,842,842,842,842,842,842","842,,,842,,,,,,,842,,,842,842,842,842,842,842,842,842,,842,842,842,","842,842,842,842,842,,,,,,,,,,,,,,,,,,,,842,,,842,,,842,842,,,842,,,",",,842,,,,,,,,,842,,,,,842,842,842,842,,842,842,842,842,,,,,842,842,",",,793,793,793,842,793,842,842,842,793,793,842,842,,793,,793,793,793","793,793,793,793,,,,,,793,793,793,793,793,793,793,,,793,,,,,,,793,,,793","793,793,793,793,793,793,793,,793,793,793,,793,793,793,793,793,,,,,,",",,,,,,,,,,,,,793,,,793,,,793,793,,,793,,,,,,793,,,,,,,,,793,,,,,793","793,793,793,,793,793,793,793,,,,,793,793,,,,272,272,272,793,272,793","793,793,272,272,793,793,,272,,272,272,272,272,272,272,272,,,,,,272,272","272,272,272,272,272,,,272,,,,,,,272,,,272,272,272,272,272,272,272,272",",272,272,272,,272,272,272,272,272,,,,,,,,,,,,,,,,,,,,272,,,272,,,272","272,,,272,,,,,,272,,,,,,,,,272,,,,,272,272,272,272,,272,272,272,272",",,,,272,272,,,,271,271,271,272,271,272,272,272,271,271,272,272,,271",",271,271,271,271,271,271,271,,,,,,271,271,271,271,271,271,271,,,271",",,,,,,271,,,271,271,271,271,271,271,271,271,,271,271,271,,271,271,271","271,271,,,,,,,,,,,,,,,,,,,,271,,,271,,,271,271,,,271,,,,,,271,,,,,,",",,271,,,,,271,271,271,271,,271,271,271,271,,,,,271,271,,,,67,67,67,271","67,271,271,271,67,67,271,271,,67,,67,67,67,67,67,67,67,,,,,,67,67,67","67,67,67,67,,,67,,,,,,,67,,,67,67,67,67,67,67,67,67,67,67,67,67,,67","67,67,67,67,,,,,,,,,,,,,,,,,,,,67,,,67,,,67,67,,,67,,67,,,,67,,,67,",",,,,67,,,,,67,67,67,67,,67,67,67,67,,,,,67,67,,,,,,,67,,67,67,67,,,67","67,66,66,66,66,66,,,,66,66,,,,66,,66,66,66,66,66,66,66,,,,,,66,66,66","66,66,66,66,,,66,,,,,,66,66,,66,66,66,66,66,66,66,66,66,,66,66,66,,66","66,66,66,66,,,,,,,,,,,,,,,,,,,,66,,,66,,,66,66,,,66,,66,,,,66,,,,,,",",,66,,,,,66,66,66,66,,66,66,66,66,,,,,66,66,,,,404,404,404,66,404,66","66,66,404,404,66,66,,404,,404,404,404,404,404,404,404,,,,,,404,404,404","404,404,404,404,,,404,,,,,,,404,,,404,404,404,404,404,404,404,404,,404","404,404,,404,404,404,404,404,,,,,,,,,,,,,,,,,,,,404,,,404,,,404,404",",,404,,,,,,404,,,,,,,,,404,,,,,404,404,404,404,,404,404,404,404,,,,","404,404,,,,,,,404,,404,404,404,64,,404,404,,,,64,64,64,,,64,64,64,,64",",,,,,,,64,,64,64,64,,,,,,,,64,64,,64,64,64,64,64,,,,,,,,,,,,,,,,,,,",",,,64,64,64,64,64,64,64,64,64,64,64,64,64,64,,,64,64,64,,,64,,,64,,","64,64,,64,,64,,64,,64,64,,64,64,64,64,64,,64,,64,,,,,,,,,,,,,,64,,,64","64,64,64,,64,,64,,270,270,270,64,270,,,,270,270,,,,270,,270,270,270","270,270,270,270,,,,,,270,270,270,270,270,270,270,,,270,,,,,,,270,,,270","270,270,270,270,270,270,270,,270,270,270,,270,270,270,270,270,,,,,,",",,,,,,,,,,,,,270,,,270,,,270,270,,,270,,,,,,270,,,,,,,,,270,,,,,270","270,270,270,,270,270,270,270,,,,,270,270,,,,862,862,862,270,862,270","270,270,862,862,270,270,,862,,862,862,862,862,862,862,862,,,,,,862,862","862,862,862,862,862,,,862,,,,,,,862,,,862,862,862,862,862,862,862,862",",862,862,862,,862,862,862,862,862,,,,,,,,,,,,,,,,,,,,862,,,862,,,862","862,,,862,,,,,,862,,,,,,,,,862,,,,,862,862,862,862,,862,862,862,862",",,,,862,862,,,,296,296,296,862,296,862,862,862,296,296,862,862,,296",",296,296,296,296,296,296,296,,,,,,296,296,296,296,296,296,296,,,296",",,,,,,296,,,296,296,296,296,296,296,296,296,,296,296,296,,296,296,296","296,296,,,,,,,,,,,,,,,,,,,,296,,,296,,,296,296,,,296,,,,,,296,,,,,,",",,296,,,,,296,296,296,296,,296,296,296,296,,,,,296,296,,,,269,269,269","296,269,296,296,296,269,269,296,296,,269,,269,269,269,269,269,269,269",",,,,,269,269,269,269,269,269,269,,,269,,,,,,,269,,,269,269,269,269,269","269,269,269,,269,269,269,,269,269,269,269,269,,,,,,,,,,,,,,,,,,,,269",",,269,,,269,269,,,269,,,,,,269,,,,,,,,,269,,,,,269,269,269,269,,269","269,269,269,,,,,269,269,,,,268,268,268,269,268,269,269,269,268,268,269","269,,268,,268,268,268,268,268,268,268,,,,,,268,268,268,268,268,268,268",",,268,,,,,,,268,,,268,268,268,268,268,268,268,268,,268,268,268,,268","268,268,268,268,,,,,,,,,,,,,,,,,,,,268,,,268,,,268,268,,,268,,,,,,268",",,,,,,,,268,,,,,268,268,268,268,,268,268,268,268,,,,,268,268,,,,784","784,784,268,784,268,268,268,784,784,268,268,,784,,784,784,784,784,784","784,784,,,,,,784,784,784,784,784,784,784,,,784,,,,,,,784,,,784,784,784","784,784,784,784,784,784,784,784,784,,784,784,784,784,784,,,,,,,,,,,",",,,,,,,,784,,,784,,,784,784,,,784,,784,,784,,784,,,784,,,,,,784,,,,","784,784,784,784,,784,784,784,784,,,,,784,784,,,,870,870,870,784,870","784,784,784,870,870,784,784,,870,,870,870,870,870,870,870,870,,,,,,870","870,870,870,870,870,870,,,870,,,,,,,870,,,870,870,870,870,870,870,870","870,,870,870,870,,870,870,870,870,870,,,,,,,,,,,,,,,,,,,,870,,,870,",",870,870,,,870,,,,,,870,,,,,,,,,870,,,,,870,870,870,870,,870,870,870","870,,,,,870,870,,,,267,267,267,870,267,870,870,870,267,267,870,870,","267,,267,267,267,267,267,267,267,,,,,,267,267,267,267,267,267,267,,","267,,,,,,,267,,,267,267,267,267,267,267,267,267,,267,267,267,,267,267","267,267,267,,,,,,,,,,,,,,,,,,,,267,,,267,,,267,267,,,267,,,,,,267,,",",,,,,,267,,,,,267,267,267,267,,267,267,267,267,,,,,267,267,,,,883,883","883,267,883,267,267,267,883,883,267,267,,883,,883,883,883,883,883,883","883,,,,,,883,883,883,883,883,883,883,,,883,,,,,,,883,,,883,883,883,883","883,883,883,883,,883,883,883,,883,883,883,883,883,,,,,,,,,,,,,,,,,,",",883,,,883,,,883,883,,,883,,,,,,883,,,,,,,,,883,,,,,883,883,883,883",",883,883,883,883,,,,,883,883,,,,884,884,884,883,884,883,883,883,884","884,883,883,,884,,884,884,884,884,884,884,884,,,,,,884,884,884,884,884","884,884,,,884,,,,,,,884,,,884,884,884,884,884,884,884,884,,884,884,884",",884,884,884,884,884,,,,,,,,,,,,,,,,,,,,884,,,884,,,884,884,,,884,,",",,,884,,,,,,,,,884,,,,,884,884,884,884,,884,884,884,884,,,,,884,884",",,,24,24,24,884,24,884,884,884,24,24,884,884,,24,,24,24,24,24,24,24","24,,,,,,24,24,24,24,24,24,24,,,24,,,,,,,24,,,24,24,24,24,24,24,24,24",",24,24,24,,24,24,24,24,24,,,,,,,,,,,,,,,,,,,,24,,,24,,,24,24,,,24,,",",,,24,,,,,,,,,24,,,,,24,24,24,24,,24,24,24,24,,,,,24,24,,,,303,303,303","24,303,24,24,24,303,303,24,24,,303,,303,303,303,303,303,303,303,,,,",",303,303,303,303,303,303,303,,,303,,,,,,,303,,,303,303,303,303,303,303","303,303,303,303,303,303,,303,303,303,303,303,,,,,,,,,,,,,,,,,,,,303",",,303,,,303,303,,,303,,303,,303,,303,,,303,,,,,,303,,,,,303,303,303","303,,303,303,303,303,,,,,303,303,,,,304,304,304,303,304,303,303,303","304,304,303,303,,304,,304,304,304,304,304,304,304,,,,,,304,304,304,304","304,304,304,,,304,,,,,,,304,,,304,304,304,304,304,304,304,304,304,304","304,304,,304,304,304,304,304,,,,,,,,,,,,,,,,,,,,304,,,304,,,304,304",",,304,,304,,304,,304,,,304,,,,,,304,,,,,304,304,304,304,,304,304,304","304,,,,,304,304,,,,312,312,312,304,312,304,304,304,312,312,304,304,","312,,312,312,312,312,312,312,312,,,,,,312,312,312,312,312,312,312,,","312,,,,,,,312,,,312,312,312,312,312,312,312,312,312,312,312,312,,312","312,312,312,312,,,,,,,,,,,,,,,,,,,,312,,,312,,,312,312,,,312,,312,,312",",312,,,312,,,,,,312,,,,,312,312,312,312,,312,312,312,312,,,,,312,312","312,,,266,266,266,312,266,312,312,312,266,266,312,312,,266,,266,266","266,266,266,266,266,,,,,,266,266,266,266,266,266,266,,,266,,,,,,,266",",,266,266,266,266,266,266,266,266,,266,266,266,,266,266,266,266,266",",,,,,,,,,,,,,,,,,,,266,,,266,,,266,266,,,266,,,,,,266,,,,,,,,,266,,",",,266,266,266,266,,266,266,266,266,,,,,266,266,,,,265,265,265,266,265","266,266,266,265,265,266,266,,265,,265,265,265,265,265,265,265,,,,,,265","265,265,265,265,265,265,,,265,,,,,,,265,,,265,265,265,265,265,265,265","265,,265,265,265,,265,265,265,265,265,,,,,,,,,,,,,,,,,,,,265,,,265,",",265,265,,,265,,,,,,265,,,,,,,,,265,,,,,265,265,265,265,,265,265,265","265,,,,,265,265,,,,264,264,264,265,264,265,265,265,264,264,265,265,","264,,264,264,264,264,264,264,264,,,,,,264,264,264,264,264,264,264,,","264,,,,,,,264,,,264,264,264,264,264,264,264,264,,264,264,264,,264,264","264,264,264,,,,,,,,,,,,,,,,,,,,264,,,264,,,264,264,,,264,,,,,,264,,",",,,,,,264,,,,,264,264,264,264,,264,264,264,264,,,,,264,264,,,,319,319","319,264,319,264,264,264,319,319,264,264,,319,,319,319,319,319,319,319","319,,,,,,319,319,319,319,319,319,319,,,319,,,,,,,319,,,319,319,319,319","319,319,319,319,,319,319,319,,319,319,319,319,319,,,,,,,,,,,,,,,,,,",",319,,,319,,,319,319,,,319,,,,,,319,,,,,,,,,319,,,,,319,319,319,319",",319,319,319,319,,,,,319,319,,,,321,321,321,319,321,319,319,319,321","321,319,319,,321,,321,321,321,321,321,321,321,,,,,,321,321,321,321,321","321,321,,,321,,,,,,,321,,,321,321,321,321,321,321,321,321,,321,321,321",",321,321,321,321,321,,,,,,,,,,,,,,,,,,,,321,,,321,,,321,321,,,321,,",",,,321,,,,,,,,,321,,,,,321,321,321,321,,321,321,321,321,,,,,321,321",",,,324,324,324,321,324,321,321,321,324,324,321,321,,324,,324,324,324","324,324,324,324,,,,,,324,324,324,324,324,324,324,,,324,,,,,,,324,,,324","324,324,324,324,324,324,324,,324,324,324,,324,324,324,324,324,,,,,,",",,,,,,,,,,,,,324,,,324,,,324,324,,,324,,,,,,324,,,,,,,,,324,,,,,324","324,324,324,,324,324,324,324,,,,,324,324,,,,263,263,263,324,263,324","324,324,263,263,324,324,,263,,263,263,263,263,263,263,263,,,,,,263,263","263,263,263,263,263,,,263,,,,,,,263,,,263,263,263,263,263,263,263,263",",263,263,263,,263,263,263,263,263,,,,,,,,,,,,,,,,,,,,263,,,263,,,263","263,,,263,,,,,,263,,,,,,,,,263,,,,,263,263,263,263,,263,263,263,263",",,,,263,263,,,,262,262,262,263,262,263,263,263,262,262,263,263,,262",",262,262,262,262,262,262,262,,,,,,262,262,262,262,262,262,262,,,262",",,,,,,262,,,262,262,262,262,262,262,262,262,,262,262,262,,262,262,262","262,262,,,,,,,,,,,,,,,,,,,,262,,,262,,,262,262,,,262,,,,,,262,,,,,,",",,262,,,,,262,262,262,262,,262,262,262,262,,,,,262,262,,,,911,911,911","262,911,262,262,262,911,911,262,262,,911,,911,911,911,911,911,911,911",",,,,,911,911,911,911,911,911,911,,,911,,,,,,,911,,,911,911,911,911,911","911,911,911,,911,911,911,,911,911,911,911,911,,,,,,,,,,,,,,,,,,,,911",",,911,,,911,911,,,911,,,,,,911,,,,,,,,,911,,,,,911,911,911,911,,911","911,911,911,,,,,911,911,,,,912,912,912,911,912,911,911,911,912,912,911","911,,912,,912,912,912,912,912,912,912,,,,,,912,912,912,912,912,912,912",",,912,,,,,,,912,,,912,912,912,912,912,912,912,912,,912,912,912,,912","912,912,912,912,,,,,,,,,,,,,,,,,,,,912,,,912,,,912,912,,,912,,,,,,912",",,,,,,,,912,,,,,912,912,912,912,,912,912,912,912,,,,,912,912,,,,913","913,913,912,913,912,912,912,913,913,912,912,,913,,913,913,913,913,913","913,913,,,,,,913,913,913,913,913,913,913,,,913,,,,,,,913,,,913,913,913","913,913,913,913,913,,913,913,913,,913,913,913,913,913,,,,,,,,,,,,,,",",,,,,913,,,913,,,913,913,,,913,,,,,,913,,,,,,,,,913,,,,,913,913,913","913,,913,913,913,913,,,,,913,913,,,,494,494,494,913,494,913,913,913","494,494,913,913,,494,,494,494,494,494,494,494,494,,,,,,494,494,494,494","494,494,494,,,494,,,,,,,494,,,494,494,494,494,494,494,494,494,,494,494","494,,494,494,494,494,494,,,,,,,,,,,,,,,,,,,,494,,,494,,,494,494,,,494",",,,,,494,,,,,,,,,494,,,,,494,494,494,494,,494,494,494,494,,,,,494,494",",,,,,,494,,494,494,494,,,494,494,130,130,130,130,130,,,,130,130,,,,130",",130,130,130,130,130,130,130,,,,,,130,130,130,130,130,130,130,,,130",",,,,,130,130,,130,130,130,130,130,130,130,130,130,,130,130,130,,130","130,130,130,130,,,,,,,,,,,,,,,,,,,,130,,,130,,,130,130,,,130,,130,,",",130,,,,,,,,,130,,,,,130,130,130,130,,130,130,130,130,,,,,130,130,,",",129,129,129,130,129,130,130,130,129,129,130,130,,129,,129,129,129,129","129,129,129,,,,,,129,129,129,129,129,129,129,,,129,,,,,,,129,,,129,129","129,129,129,129,129,129,,129,129,129,,129,129,129,129,129,,,,,,,,,,",",,,,,,,,,129,,,129,,,129,129,,,129,,,,,,129,,,,,,,,,129,,,,,129,129","129,129,,129,129,129,129,,,,,129,129,,,,128,128,128,129,128,129,129","129,128,128,129,129,,128,,128,128,128,128,128,128,128,,,,,,128,128,128","128,128,128,128,,,128,,,,,,,128,,,128,128,128,128,128,128,128,128,,128","128,128,,128,128,128,128,128,,,,,,,,,,,,,,,,,,,,128,,,128,,,128,128",",,128,,,,,,128,,,,,,,,,128,,,,,128,128,128,128,,128,128,128,128,,,,","128,128,,,,1142,1142,1142,128,1142,128,128,128,1142,1142,128,128,,1142",",1142,1142,1142,1142,1142,1142,1142,,,,,,1142,1142,1142,1142,1142,1142","1142,,,1142,,,,,,,1142,,,1142,1142,1142,1142,1142,1142,1142,1142,,1142","1142,1142,,1142,1142,1142,1142,1142,,,,,,,,,,,,,,,,,,,,1142,,,1142,",",1142,1142,,,1142,,,,,,1142,,,,,,,,,1142,,,,,1142,1142,1142,1142,,1142","1142,1142,1142,,,,,1142,1142,,,,1143,1143,1143,1142,1143,1142,1142,1142","1143,1143,1142,1142,,1143,,1143,1143,1143,1143,1143,1143,1143,,,,,,1143","1143,1143,1143,1143,1143,1143,,,1143,,,,,,,1143,,,1143,1143,1143,1143","1143,1143,1143,1143,,1143,1143,1143,,1143,1143,1143,1143,1143,,,,,,",",,,,,,,,,,,,,1143,,,1143,,,1143,1143,,,1143,,,,,,1143,,,,,,,,,1143,",",,,1143,1143,1143,1143,,1143,1143,1143,1143,,,,,1143,1143,,,,127,127","127,1143,127,1143,1143,1143,127,127,1143,1143,,127,,127,127,127,127","127,127,127,,,,,,127,127,127,127,127,127,127,,,127,,,,,,,127,,,127,127","127,127,127,127,127,127,,127,127,127,,127,127,127,127,127,,,,,,,,,,",",,,,,,,,,127,,,127,,,127,127,,,127,,,,,,127,,,,,,,,,127,,,,,127,127","127,127,,127,127,127,127,,,,,127,127,,,,50,50,50,127,50,127,127,127","50,50,127,127,,50,,50,50,50,50,50,50,50,,,,,,50,50,50,50,50,50,50,,","50,,,,,,,50,,,50,50,50,50,50,50,50,50,,50,50,50,,50,50,50,50,50,,,,",",,,,,,,,,,,,,,,50,,,50,,,50,50,,,50,,,,,,50,,,,,,,,,50,,,,,50,50,50","50,,50,50,50,50,,,,,50,50,,,,126,126,126,50,126,50,50,50,126,126,50","50,,126,,126,126,126,126,126,126,126,,,,,,126,126,126,126,126,126,126",",,126,,,,,,,126,,,126,126,126,126,126,126,126,126,,126,126,126,,126","126,126,126,126,,,,,,,,,,,,,,,,,,,,126,,,126,,,126,126,,,126,,,,,,126",",,,,,,,,126,,,,,126,126,126,126,,126,126,126,126,,,,,126,126,,,,,,,126",",126,126,126,,,126,126,121,121,121,121,121,,,,121,121,,,,121,,121,121","121,121,121,121,121,,,,,,121,121,121,121,121,121,121,,,121,,,,,,121","121,121,121,121,121,121,121,121,121,121,121,,121,121,121,,121,121,121","121,121,,,,,,,,,,,,,,,,,,,,121,,,121,,,121,121,,,121,,121,,,,121,,,",",,,,,121,,,,,121,121,121,121,,121,121,121,121,,,,,121,121,,,,,,121,121",",121,121,121,,,121,121,1155,1155,1155,,1155,,,,1155,1155,,,,1155,,1155","1155,1155,1155,1155,1155,1155,,,,,,1155,1155,1155,1155,1155,1155,1155",",,1155,,,,,,,1155,,,1155,1155,1155,1155,1155,1155,1155,1155,1155,1155","1155,1155,,1155,1155,1155,1155,1155,,,,,,,,,,,,,,,,,,,,1155,,,1155,",",1155,1155,,,1155,,1155,,1155,,1155,,,1155,,,,,,1155,,,,,1155,1155,1155","1155,,1155,1155,1155,1155,,,,,1155,1155,,,,468,468,468,1155,468,1155","1155,1155,468,468,1155,1155,,468,,468,468,468,468,468,468,468,,,,,,468","468,468,468,468,468,468,,,468,,,,,,,468,,,468,468,468,468,468,468,468","468,,468,468,468,,468,468,468,468,468,,,,,,,,,,,,,,,,,,,,468,,,468,",",468,468,,,468,,,,,,468,,,,,,,,,468,,,,,468,468,468,468,,468,468,468","468,,,,,468,468,,,,,,,468,,468,468,468,467,,468,468,,,,467,467,467,",",467,467,467,,467,,,,,,,,467,467,467,467,467,,,,,,,,467,467,,467,467","467,467,467,,,,,,,,,,,,,,,,,,,,,,,467,467,467,467,467,467,467,467,467","467,467,467,467,467,,,467,467,467,,,467,,,467,,,467,467,,467,,467,,467",",467,467,,467,467,467,467,467,,467,467,467,,,,,,,,,,,,,,467,,,467,467","467,467,,467,466,467,,,,,467,466,466,466,,,466,466,466,,466,,,,,,,,466","466,466,466,466,,,,,,,,466,466,,466,466,466,466,466,,,,,,,,,,,,,,,,",",,,,,,466,466,466,466,466,466,466,466,466,466,466,466,466,466,,,466","466,466,,,466,,,466,,,466,466,,466,,466,,466,,466,466,,466,466,466,466","466,,466,466,466,,,,,,,,,,,,,,466,,,466,466,466,466,,466,,466,,52,52","52,466,52,,,,52,52,,,,52,,52,52,52,52,52,52,52,,,,,,52,52,52,52,52,52","52,,,52,,,,,,,52,,,52,52,52,52,52,52,52,52,,52,52,52,,52,52,52,52,52",",,,,,,,,,,,,,,,,,,,52,,,52,,,52,52,,,52,,,,,,52,,,,,,,,,52,,,,,52,52","52,52,,52,52,52,52,,,,,52,52,,,,,,,52,,52,52,52,,,52,52,7,7,7,7,7,,",",7,7,,,,7,,7,7,7,7,7,7,7,,,,,,7,7,7,7,7,7,7,,,7,,,,,,7,7,7,7,7,7,7,7","7,7,7,7,,7,7,7,,7,7,7,7,7,,,,,,,,,,,,,,,,,,,,7,,,7,,,7,7,,,7,,7,,,,7",",,,,,,,,7,,,,,7,7,7,7,,7,7,7,7,,,,,7,7,,,,,,,7,,7,7,7,457,,7,7,,,,457","457,457,,,457,457,457,,457,,,,,,,,457,457,457,457,,,,,,,,,457,457,,457","457,457,457,457,,,,,,,,,,,,,,,,,,,,,,,457,457,457,457,457,457,457,457","457,457,457,457,457,457,,,457,457,457,,,457,,457,457,,,457,457,,457",",457,,457,,457,457,,457,457,457,457,457,,457,457,457,,,,,,,,,,,,,,457",",,457,457,,457,,457,72,72,72,,72,,457,,72,72,,,,72,,72,72,72,72,72,72","72,,,,,,72,72,72,72,72,72,72,,,72,,,,,,,72,,,72,72,72,72,72,72,72,72",",72,72,72,,72,72,72,72,72,,,,,,,,,,,,,,,,,,,,72,,,72,,,72,72,,,72,,",",,,72,,,,,,,,,72,,,,,72,72,72,72,,72,72,72,72,,,,,72,72,,,,219,219,219","72,219,72,72,72,219,219,72,72,,219,,219,219,219,219,219,219,219,,,,",",219,219,219,219,219,219,219,,,219,,,,,,,219,,,219,219,219,219,219,219","219,219,,219,219,219,,219,219,219,219,219,,,,,,,,,,,,,,,,,,,,219,,,219",",,219,219,,,219,,,,,,219,,,,,,,,,219,,,,,219,219,219,219,,219,219,219","219,,,,,219,219,,,,274,274,274,219,274,219,219,219,274,274,219,219,","274,,274,274,274,274,274,274,274,,,,,,274,274,274,274,274,274,274,,","274,,,,,,,274,,,274,274,274,274,274,274,274,274,,274,274,274,,274,274","274,274,274,,,,,,,,,,,,,,,,,,,,274,,,274,,,274,274,,,274,,,,,,274,,",",,,,,,274,,,,,274,274,274,274,,274,274,274,274,,,,,274,274,,,,218,218","218,274,218,274,274,274,218,218,274,274,,218,,218,218,218,218,218,218","218,,,,,,218,218,218,218,218,218,218,,,218,,,,,,,218,,,218,218,218,218","218,218,218,218,,218,218,218,,218,218,218,218,218,,,,,,,,,,,,,,,,,,",",218,,,218,,,218,218,,,218,,,,,,218,,,,,,,,,218,,,,,218,218,218,218",",218,218,218,218,,,,,218,218,,,,217,217,217,218,217,218,218,218,217","217,218,218,,217,,217,217,217,217,217,217,217,,,,,,217,217,217,217,217","217,217,,,217,,,,,,,217,,,217,217,217,217,217,217,217,217,,217,217,217",",217,217,217,217,217,,,,,,,,,,,,,,,,,,,,217,,,217,,,217,217,,,217,,217",",,,217,,,,,,,,,217,,,,,217,217,217,217,,217,217,217,217,,,,,217,217",",,,273,273,273,217,273,217,217,217,273,273,217,217,,273,,273,273,273","273,273,273,273,,,,,,273,273,273,273,273,273,273,,,273,,,,,,,273,,,273","273,273,273,273,273,273,273,,273,273,273,,273,273,273,273,273,,,,,,",",,,,,,,,,,,,,273,,,273,,,273,273,,,273,,,,,,273,,,,,,,,,273,,,,,273","273,273,273,,273,273,273,273,,,,,273,273,,,,49,49,49,273,49,273,273","273,49,49,273,273,,49,,49,49,49,49,49,49,49,,,,,,49,49,49,49,49,49,49",",,49,,,,,,,49,,,49,49,49,49,49,49,49,49,,49,49,49,,49,49,49,49,49,,",",,,,,,,,,,,,,,,,,49,,,49,,,49,49,,,49,,,,,,49,,,,,,,,,49,,,,,49,49,49","49,,49,49,49,49,,,,,49,49,,,,216,216,216,49,216,49,49,49,216,216,49","49,,216,,216,216,216,216,216,216,216,,,,,,216,216,216,216,216,216,216",",,216,,,,,,,216,,,216,216,216,216,216,216,216,216,,216,216,216,,216","216,216,216,216,,,,,,,,,,,,,,,,,,,,216,,,216,,,216,216,,,216,,216,,",",216,,,,,,,,,216,,,,,216,216,216,216,,216,216,216,216,,,,,216,216,,",",796,796,796,216,796,216,216,216,796,796,216,216,,796,,796,796,796,796","796,796,796,,,,,,796,796,796,796,796,796,796,,,796,,,,,,,796,,,796,796","796,796,796,796,796,796,,796,796,796,,796,796,796,796,796,,,,,,,,,,",",,,,,,,,,796,,,796,,,796,796,,,796,,,,,,796,,,,,,,,,796,,,,,796,796","796,796,,796,796,796,796,,,,,796,796,,,,521,521,521,796,521,796,796","796,521,521,796,796,,521,,521,521,521,521,521,521,521,,,,,,521,521,521","521,521,521,521,,,521,,,,,,,521,,,521,521,521,521,521,521,521,521,,521","521,521,,521,521,521,521,521,,,,,,,,,,,,,,,,,,,,521,,,521,,,521,521",",,521,,,,,,521,,,,,,,,,521,,,,,521,521,521,521,,521,521,521,521,,,,","521,521,,,,520,520,520,521,520,521,521,521,520,520,521,521,,520,,520","520,520,520,520,520,520,,,,,,520,520,520,520,520,520,520,,,520,,,,,",",520,,,520,520,520,520,520,520,520,520,,520,520,520,,520,520,520,520","520,,,,,,,,,,,,,,,,,,,,520,,,520,,,520,520,,,520,,,,,,520,,,,,,,,,520",",,,,520,520,520,520,,520,520,520,520,,,,,520,520,,,,519,519,519,520","519,520,520,520,519,519,520,520,,519,,519,519,519,519,519,519,519,,",",,,519,519,519,519,519,519,519,,,519,,,,,,,519,,,519,519,519,519,519","519,519,519,,519,519,519,,519,519,519,519,519,,,,,,,,,,,,,,,,,,,,519",",,519,,,519,519,,,519,,,,,,519,,,,,,,,,519,,,,,519,519,519,519,,519","519,519,519,,,,,519,519,,,,383,383,383,519,383,519,519,519,383,383,519","519,,383,,383,383,383,383,383,383,383,,,,,,383,383,383,383,383,383,383",",,383,,,,,,,383,,,383,383,383,383,383,383,383,383,,383,383,383,,383","383,383,383,383,,,,,,,,,,,,,,,,,,,,383,,,383,,,383,383,,,383,,,,,,383",",,,,,,,,383,,,,,383,383,383,383,,383,383,383,383,,,,,383,383,,,,517","517,517,383,517,383,383,383,517,517,383,383,,517,,517,517,517,517,517","517,517,,,,,,517,517,517,517,517,517,517,,,517,,,,,,,517,,,517,517,517","517,517,517,517,517,517,517,517,517,,517,517,517,517,517,,,,,,,,,,,",",,,,,,,,517,,,517,,,517,517,,,517,,517,,517,,517,,,517,,,,,,517,,,,","517,517,517,517,,517,517,517,517,,,,,517,517,,,,507,507,507,517,507","517,517,517,507,507,517,517,,507,,507,507,507,507,507,507,507,,,,,,507","507,507,507,507,507,507,,,507,,,,,,,507,,,507,507,507,507,507,507,507","507,,507,507,507,,507,507,507,507,507,,,,,,,,,,,,,,,,,,,,507,,,507,",",507,507,,,507,,,,,,507,,,,,,,,,507,,,,,507,507,507,507,,507,507,507","507,,,,,507,507,,,,357,357,357,507,357,507,507,507,357,357,507,507,","357,,357,357,357,357,357,357,357,,,,,,357,357,357,357,357,357,357,,","357,,,,,,,357,,,357,357,357,357,357,357,357,357,,357,357,357,,357,357",",,357,,,,,,,,,,,,,,,,,,,,357,,,357,,,357,357,,,357,,,,,,,,,,,,,,,,,",",,357,357,357,357,,357,357,357,357,,,,,357,357,,,,1011,1011,1011,357","1011,357,357,357,1011,1011,,,,1011,,1011,1011,1011,1011,1011,1011,1011",",,,,,1011,1011,1011,1011,1011,1011,1011,,,1011,,,,,,,1011,,,1011,1011","1011,1011,1011,1011,1011,1011,,1011,1011,1011,,1011,1011,,,1011,,,,",",,,,,,,,,,,,,,,1011,,,1011,,,1011,1011,,,1011,,,,,,,,,,,,,,,,,,,,1011","1011,1011,1011,,1011,1011,1011,1011,,,,,1011,1011,,,,338,338,338,1011","338,1011,1011,1011,338,338,,,,338,,338,338,338,338,338,338,338,,,,,","338,338,338,338,338,338,338,,,338,,,,,,,338,,,338,338,338,338,338,338","338,338,,338,338,338,,338,338,,,338,,,,,,,,,,,,,,,,,,,,338,,,338,,,338","338,,,338,,,1133,,1133,1133,1133,1133,1133,,,,,,,,,1133,,338,338,338","338,,338,338,338,338,,,,,338,338,,,,338,,1133,338,,338,338,338,76,76","76,,76,1133,1133,,76,76,1133,,,76,,76,76,76,76,76,76,76,,,,,,76,76,76","76,76,76,76,,,76,,,,,,,76,,,76,76,76,76,76,76,76,76,,76,76,76,,76,76",",,76,,,,,,,,,,,,,,,,,,,,76,,,76,,,76,76,,,76,,76,,,,,,,,,,,,,,,,,,76","76,76,76,,76,76,76,76,,,,,76,76,,,,1075,1075,1075,76,1075,76,76,76,1075","1075,,,,1075,,1075,1075,1075,1075,1075,1075,1075,,,,,,1075,1075,1075","1075,1075,1075,1075,,,1075,,,,,,,1075,,,1075,1075,1075,1075,1075,1075","1075,1075,,1075,1075,1075,,1075,1075,,,1075,,,,,,,,,,,,,,,,,,,,1075",",,1075,,,1075,1075,,,1075,,,,,,,,,,,,,,,,,,,,1075,1075,1075,1075,,1075","1075,1075,1075,,,,,1075,1075,,,,585,585,585,1075,585,1075,1075,1075","585,585,,,,585,,585,585,585,585,585,585,585,,,,,,585,585,585,585,585","585,585,,,585,,,,,,,585,,,585,585,585,585,585,585,585,585,,585,585,585",",585,585,,,585,,,,,,,,,,,,,,,,,,,,585,,,585,,,585,585,,,585,,,,,,,,",",,,,,,,,,,,585,585,585,585,,585,585,585,585,,,,,585,585,,,,594,594,594","585,594,585,585,585,594,594,,,,594,,594,594,594,594,594,594,594,,,,",",594,594,594,594,594,594,594,,,594,,,,,,,594,,,594,594,594,594,594,594","594,594,,594,594,594,,594,594,,,594,,,,,,,,,,,,,,,,,,,,594,,,594,,,594","594,,,594,,,,,,,,,,,,,,,,,,,,594,594,594,594,,594,594,594,594,,,,,594","594,,,,77,77,77,594,77,594,594,594,77,77,,,,77,,77,77,77,77,77,77,77",",,,,,77,77,77,77,77,77,77,,,77,,,,,,,77,,,77,77,77,77,77,77,77,77,,77","77,77,,77,77,,,77,,,,,,,,,,,,,,,,,77,,,77,,,77,,,77,77,,,77,,,,,,,,",",,,,,,,,,,,77,77,77,77,,77,77,77,77,,,,,77,77,,,,78,78,78,77,78,77,77","77,78,78,,,,78,,78,78,78,78,78,78,78,,,,,,78,78,78,78,78,78,78,,,78",",,,,,,78,,,78,78,78,78,78,78,78,78,,78,78,78,,78,78,,,78,,,,,,,,,,,",",,,,,,,,78,,,78,,,78,78,,,78,,,,,,,,,,,,,,,,,,,,78,78,78,78,,78,78,78","78,,,,,78,78,,,,40,40,40,78,40,78,78,78,40,40,,,,40,,40,40,40,40,40","40,40,,,,,,40,40,40,40,40,40,40,,,40,,,,,,,40,,,40,40,40,40,40,40,40","40,,40,40,40,,40,40,,,40,,,,,,,,,,,,,,,,,,,,40,,,40,,,40,40,,,40,,,1207",",1207,1207,1207,1207,1207,,,,,,,,,1207,,40,40,40,40,,40,40,40,40,,,",",40,40,,,,40,,1207,40,,40,40,40,1137,1137,1137,,1137,1207,1207,,1137","1137,1207,,,1137,,1137,1137,1137,1137,1137,1137,1137,,,,,,1137,1137","1137,1137,1137,1137,1137,,,1137,,,,,,,1137,,,1137,1137,1137,1137,1137","1137,1137,1137,,1137,1137,1137,,1137,1137,,,1137,,,,,,,,,,,,,,,,,,,","1137,,,1137,,,1137,1137,,,1137,,,,,,,,,,,,,,,,,,,,1137,1137,1137,1137",",1137,1137,1137,1137,,,,,1137,1137,,,,799,799,799,1137,799,1137,1137","1137,799,799,,,,799,,799,799,799,799,799,799,799,,,,,,799,799,799,799","799,799,799,,,799,,,,,,,799,,,799,799,799,799,799,799,799,799,,799,799","799,,799,799,,,799,,,,,,,,,,,,,,,,,,,,799,,,799,,,799,799,,,799,,,,",",,,,,,,,,,,,,,,799,799,799,799,,799,799,799,799,,,,,799,799,,,,810,810","810,799,810,799,799,799,810,810,,,,810,,810,810,810,810,810,810,810",",,,,,810,810,810,810,810,810,810,,,810,,,,,,,810,,,810,810,810,810,810","810,810,810,,810,810,810,,810,810,,,810,,,,,,,,,,,,,,,,,,,,810,,,810",",,810,810,,,810,,,,,,,,,,,,,,,,,,,,810,810,810,810,,810,810,810,810",",,,,810,810,,,,39,39,39,810,39,810,810,810,39,39,,,,39,,39,39,39,39","39,39,39,,,,,,39,39,39,39,39,39,39,,,39,,,,,,,39,,,39,39,39,39,39,39","39,39,,39,39,39,,39,39,,,39,,,,,,,,,,,,,,,,,,,,39,,,39,,,39,39,,,39",",39,,,,,,,,,,,,,,,,,,39,39,39,39,,39,39,39,39,,,,,39,39,,,,,,,39,,39","39,39,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424","424,424,424,424,424,424,424,424,,,,424,424,424,424,424,424,424,424,424","424,,,,,,424,424,424,424,424,424,424,424,424,,,424,,,,,,,,424,424,,424","424,424,424,424,424,424,,,424,424,,,,424,424,424,424,,,,,,,,,,,,,,424","424,,424,424,424,424,424,424,424,424,424,424,424,424,,,424,424,,,,,",",,,,,,,,424,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10","10,10,10,10,10,,,,10,10,10,10,10,10,10,10,10,10,,,,,,10,10,10,10,10","10,10,10,10,10,,10,,,,,,,,10,10,,10,10,10,10,10,10,10,,,10,10,,,,10","10,10,10,,,,,,,,,,,,,,10,10,,10,10,10,10,10,10,10,10,10,10,10,10,,,10","10,,,,,,,,,,,,,,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11","11,11,11,11,11,11,11,,,,11,11,11,11,11,11,11,11,11,11,,,,,,11,11,11","11,11,11,11,11,11,,,11,,,,,,,,11,11,,11,11,11,11,11,11,11,,,11,11,,",",11,11,11,11,,,,,,,,,,,,,,11,11,,11,11,11,11,11,11,11,11,11,11,11,11",",,11,11,,,,,,,,,,,,,,11,664,664,664,664,664,664,664,664,664,664,664","664,664,664,664,664,664,664,664,664,664,664,664,664,,,,664,664,664,664","664,664,664,664,664,664,,,,,,664,664,664,664,664,664,664,664,664,,,664",",,,,,,,664,664,,664,664,664,664,664,664,664,,,664,664,,,,664,664,664","664,,,,,,,,,,,,,,664,664,,664,664,664,664,664,664,664,664,664,664,664","664,,,664,664,1118,1118,1118,1118,,,,,,,,,,664,,,1118,1118,1118,1118",",,1201,1118,1201,1201,1201,1201,1201,1118,1118,,,1118,,,,1201,,,,,,",",,,,,,,,,1118,,,1118,,,1201,1118,,,1118,,,,,1201,1201,1201,1201,,,,1201",",,,1118,,,,1118,1118,1118,1118,,1118,1118,1118,1118,,,,,1118,1118,983","983,983,983,,,1118,,1118,1118,1118,,,1118,1118,,983,983,983,983,,,,983","983,,,,,983,983,,,983,983,,,,,,,,,,,,,,,,,,,983,,,983,,,,983,,,983,","983,,,,,,,983,,,,,,,983,,,,983,983,983,983,,983,983,983,983,,,,,983","983,937,937,937,937,,,983,,983,983,983,,,983,983,,937,937,937,937,,","1128,937,1128,1128,1128,1128,1128,937,937,,,937,,,,1128,,,,,,,,,,,,",",,,937,,,937,,,1128,937,,,937,,,,,1128,1128,1128,1128,,,,1128,,,,937",",,,937,937,937,937,,937,937,937,937,,,,,937,937,936,936,936,936,,,937",",937,937,937,,,937,937,,936,936,936,936,,,1205,936,1205,1205,1205,1205","1205,936,936,,,936,,,,1205,,,,,,,,,,,,,,,,936,,,936,,,1205,936,,,936",",,,,,,1205,1205,,,,1205,,,,936,,,,936,936,936,936,,936,936,936,936,",",,,936,936,930,930,930,930,,,936,,936,936,936,,,936,936,,930,930,930","930,,,1203,930,1203,1203,1203,1203,1203,930,930,,,930,,,,1203,,,,,,",",,,,,,,,,930,,,930,,,1203,930,,,930,,930,,,,,1203,1203,,,,1203,,,,930",",,,930,930,930,930,,930,930,930,930,,,,,930,930,1198,1198,1198,1198",",,930,,930,930,930,,,930,930,,1198,1198,1198,1198,,,1224,1198,1224,1224","1224,1224,1224,1198,1198,,,1198,,,,1224,,,,,,,,,,,,,,,,1198,,,1198,",",1224,1198,,,1198,,,,,,,1224,1224,,,,1224,,,,1198,,,,1198,1198,1198","1198,,1198,1198,1198,1198,,,,,1198,1198,924,924,924,924,,,1198,,1198","1198,1198,,,1198,1198,,924,924,924,924,,,,924,924,,,,,924,924,,,924","924,,,,,,,,,,,,,,,,,,,924,,,924,,,,924,,,924,,924,,,,,,,924,,,,,,,924",",,,924,924,924,924,,924,924,924,924,,,,,924,924,923,923,923,923,,,924",",924,924,924,,,924,924,,923,923,923,923,,,,923,923,,,,,923,923,,,923","923,,,,,,,,,,,,,,,,,,,923,,,923,,,,923,,,923,,923,,,,,,,923,,,,,,,923",",,,923,923,923,923,,923,923,923,923,,,,,923,923,920,920,920,920,,,923",",923,923,923,,,923,923,,920,920,920,920,,,,920,,,,,,920,920,,,920,,",",,,,,,,,,,,,,,,,,920,,,920,,,,920,,,920,,,,,,,,,,,,,,,,920,,,,920,920","920,920,,920,920,920,920,,,,,920,920,918,918,918,918,,,920,,920,920","920,,,920,920,,918,918,918,918,,,,918,,,,,,918,918,,,918,,,,,,,,,,,",",,,,,,,,918,,,918,,,,918,,,918,,918,,,,,,,,,,,,,,918,,,,918,918,918","918,,918,918,918,918,,,,,918,918,741,741,741,741,,,918,,918,918,918",",,918,918,,741,741,741,741,,,,741,,,,,,741,741,,,741,,,,,,,,,,,,,,,",",,,,741,,,741,,,,741,,,741,,741,,,,,,,,,,,,,,741,,,,741,741,741,741",",741,741,741,741,,,,,741,741,741,,,,,,741,,741,741,741,,,741,741,26","26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26",",,,26,26,26,26,26,26,26,26,26,26,,,,,,26,26,26,26,26,26,26,26,26,26","26,26,,26,,,,,,26,26,,26,26,26,26,26,26,26,,,26,26,,,,26,26,26,26,,",",,,26,,,,,,,,26,26,,26,26,26,26,26,26,26,26,26,26,26,26,,,26,749,749","749,749,,,702,,702,702,702,702,702,,,,749,749,749,749,,702,,749,,,,",",749,749,,,749,,,,,,,,,,702,,,,,,,,,,749,702,702,749,,,702,749,,,749",",,,,,,,,,,,,,,,749,,,,749,749,749,749,,749,749,749,749,,,,,749,749,","702,,,,,749,,749,749,749,,,749,749,776,776,776,776,776,776,776,776,776","776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,,,,776,776","776,776,776,776,776,776,776,776,,,,,,776,776,776,776,776,776,776,776","776,,,776,,,,,,,,776,776,,776,776,776,776,776,776,776,,,776,776,,,,776","776,776,776,,,,,,,,,,,,,,776,776,,776,776,776,776,776,776,776,776,776","776,776,776,,,776,525,525,525,525,,,,,,,,,,,,,525,525,525,525,,,,525","525,,,,,525,525,,,525,525,,,,,,,,,,,,,,,,,,,525,,,525,,,,525,,,525,","525,,,,,,,525,,,,,,,525,,,,525,525,525,525,,525,525,525,525,,,,,525","525,524,524,524,524,,,525,,525,525,525,,,525,525,,524,524,524,524,,",",524,524,,,,,524,524,,,524,524,,,,,,,,,,,,,,,,,,,524,,,524,,,,524,,","524,,524,,,,,,,524,,,,,,,524,,,,524,524,524,524,,524,524,524,524,,,",",524,524,1166,1166,1166,1166,,,524,,524,524,524,,,524,524,,1166,1166","1166,1166,,,,1166,,,,,,1166,1166,,,1166,,,,,,,,,,,,,,,,,,,,1166,,,1166",",,,1166,,,1166,,,,,,,,,,,,,,,,1166,,,,1166,1166,1166,1166,,1166,1166","1166,1166,,,,,1166,1166,1109,1109,1109,1109,,,1166,,1166,1166,1166,",",1166,1166,,1109,1109,1109,1109,,,,1109,,,,,,1109,1109,,,1109,,,,,,",",,,,,,,,,,,,,1109,,,1109,,,,1109,,,1109,,,,,,,,,,,,,,,,1109,,,,1109","1109,1109,1109,,1109,1109,1109,1109,,,,,1109,1109,1122,1122,1122,1122",",,1109,,1109,1109,1109,,,1109,1109,,1122,1122,1122,1122,,,,1122,,,,",",1122,1122,,,1122,,,,,,,,758,758,758,758,,,,,,,,,1122,,,1122,758,758","758,1122,,,1122,,1122,,,,,758,758,,,758,,,,,1122,,,,1122,1122,1122,1122",",1122,1122,1122,1122,,,,,1122,1122,,,,,,,1122,,1122,1122,1122,,,1122","1122,,,,,,,,,,,,758,758,758,758,,758,758,758,758,,,,,758,758,945,945","945,945,,,758,,758,758,758,,,,,,945,945,945,,,,,,,,,,,945,945,,,945","944,944,944,944,,,,,,,,,,,,,944,944,944,,,,,,,,,,,944,944,,,944,,,,",",,,,,,,,,,,945,945,945,945,,945,945,945,945,,,,,945,945,,,,,,,945,,945","945,945,,,,,,,,,944,944,944,944,,944,944,944,944,,,,,944,944,759,759","759,759,,,944,,944,944,944,,,,,,759,759,759,700,,700,700,700,700,700",",,,759,759,,,759,700,,,,,,,,,,,1020,,1020,1020,1020,1020,1020,,,,,700",",,,1020,,,,,700,700,700,700,,,,700,,,,,,,,,,1020,759,759,759,759,,759","759,759,759,,1020,1020,,759,759,1020,,,,,,759,,759,759,759,,,698,700","698,698,698,698,698,,230,,230,230,230,230,230,698,,,,,,,,230,,,1018","1020,1018,1018,1018,1018,1018,,,,,698,,,,1018,,,,230,698,698,698,698",",,,698,230,230,230,230,,,,230,1016,1018,1016,1016,1016,1016,1016,,,",",,1018,1018,,1016,,1018,1014,,1014,1014,1014,1014,1014,,,,,,,698,,1014",",,,1016,,230,,,,,,,,,1016,1016,,,,1016,,1014,,1018,,,,,,,1014,1014,1014","1014,,,,1014,,,,,,,,,,,,1181,1181,,,1181,,,,,,1016,,1181,1181,,1181","1181,1181,1181,1181,1181,1181,,,1181,1181,,,1014,1181,1181,1181,1181",",,,,,1181,,,,,,,,1181,1181,,1181,1181,1181,1181,1181,1181,1181,1181","1181,1181,1181,1181,299,299,1181,,299,,,,,,,,299,299,,299,299,299,299","299,299,299,,,299,299,,,,299,299,299,299,,,,,,,,,,,,,,299,299,,299,299","299,299,299,299,299,299,299,299,299,299,223,223,299,,223,,,,,,,,223","223,,223,223,223,223,223,223,223,,,223,223,,,,223,223,223,223,,,,,,223",",,,,,,,223,223,,223,223,223,223,223,223,223,223,223,223,223,223,1157","1157,223,,1157,,,,,,,,1157,1157,,1157,1157,1157,1157,1157,1157,1157",",,1157,1157,,,,1157,1157,1157,1157,,,,,,1157,,,,,,,,1157,1157,,1157","1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,516,516,1157",",516,,,,,,,,516,516,,516,516,516,516,516,516,516,,,516,516,,,,516,516","516,516,,,,,,516,,,,,,,,516,516,,516,516,516,516,516,516,516,516,516","516,516,516,1156,1156,516,,1156,,,,,,,,1156,1156,,1156,1156,1156,1156","1156,1156,1156,,,1156,1156,,,,1156,1156,1156,1156,,,,,,1156,,,,,,,,1156","1156,,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,1156,672","672,1156,,672,,,,,,,,672,672,,672,672,672,672,672,672,672,,,672,672",",,,672,672,672,672,,,,,,672,,,,,,,,672,672,,672,672,672,672,672,672","672,672,672,672,672,672,515,515,672,,515,,,,,,,,515,515,,515,515,515","515,515,515,515,,,515,515,,,,515,515,515,515,,,,,,515,,,,,,,,515,515",",515,515,515,515,515,515,515,515,515,515,515,515,222,222,515,,222,,",",,,,,222,222,,222,222,222,222,222,222,222,,,222,222,,,,222,222,222,222",",,,,,222,,,,,,,,222,222,,222,222,222,222,222,222,222,222,222,222,222","222,588,588,222,,588,,,,,,,,588,588,,588,588,588,588,588,588,588,,,588","588,,,,588,588,588,588,,,,,,588,,,,,,,,588,588,,588,588,588,588,588","588,588,588,588,588,588,588,589,589,588,,589,,,,,,,,589,589,,589,589","589,589,589,589,589,,,589,589,,,,589,589,589,589,,,,,,589,,,,,,,,589","589,,589,589,589,589,589,589,589,589,589,589,589,589,626,626,589,,626",",,,,,,,626,626,,626,626,626,626,626,626,626,,,626,626,,,,626,626,626","626,,,,,,626,,,,,,,,626,626,,626,626,626,626,626,626,626,626,626,626","626,626,671,671,626,,671,,,,,,,,671,671,,671,671,671,671,671,671,671",",,671,671,,,,671,671,671,671,,,,,,671,,,,,,,,671,671,,671,671,671,671","671,671,671,671,671,671,671,671,627,627,671,,627,,,,,,,,627,627,,627","627,627,627,627,627,627,,,627,627,,,,627,627,627,627,,,,,,627,,,,,,",",627,627,,627,627,627,627,627,627,627,627,627,627,627,627,634,634,627",",634,,,,,,,,634,634,,634,634,634,634,634,634,634,,,634,634,,,,634,634","634,634,,,,,,634,,,,,,,,634,634,,634,634,634,634,634,634,634,634,634","634,634,634,633,633,634,,633,,,,,,,,633,633,,633,633,633,633,633,633","633,,,633,633,,,,633,633,633,633,,,,,,633,,,,,,,,633,633,,633,633,633","633,633,633,633,633,633,633,633,633,598,598,633,,598,,,,,,,,598,598",",598,598,598,598,598,598,598,,,598,598,,,,598,598,598,598,,,,,,598,",",,,,,,598,598,,598,598,598,598,598,598,598,598,598,598,598,598,599,599","598,,599,,,,,,,,599,599,,599,599,599,599,599,599,599,,,599,599,,,,599","599,599,599,,,,,,599,,,,,,,,599,599,,599,599,599,599,599,599,599,599","599,599,599,599,,,599"],racc_action_check=arr=$$$("Array").$new(28951,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),racc_action_pointer=[nil,1530,1699,101,nil,482,nil,20901,1396,63,25127,25255,87,nil,108,123,470,190,962,122,162,700,nil,-35,16902,1267,26590,276,nil,598,nil,307,8439,8549,8814,10017,10148,nil,4147,24860,24328,nil,206,690,444,339,12923,13185,283,21962,19796,979,20758,303,845,nil,nil,nil,nil,nil,nil,nil,nil,nil,15455,nil,15183,15040,14385,148,nil,14123,21176,nil,nil,13980,23542,24066,24197,nil,nil,nil,nil,nil,nil,584,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,110,nil,nil,222,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,20070,nil,nil,nil,nil,19927,19665,19272,19141,19010,nil,4867,nil,585,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,302,nil,979,22093,21700,21569,21307,13849,13718,28287,27921,nil,nil,315,2707,332,nil,27662,580,338,1267,11851,11196,11065,nil,nil,1106,138,142,453,193,372,446,nil,9886,386,299,2419,449,nil,nil,7250,7119,6583,6452,6321,6190,6059,5535,18343,18212,17688,17557,17426,16509,16116,15985,15592,14909,14778,21831,21438,13447,nil,nil,nil,nil,13316,nil,nil,532,308,563,587,488,673,710,747,755,354,nil,nil,nil,15854,nil,nil,27860,nil,nil,472,17033,17164,nil,nil,nil,nil,nil,nil,nil,17295,nil,2131,nil,478,480,nil,17819,534,17950,nil,nil,18081,5797,nil,nil,563,nil,6726,1540,517,497,5011,533,582,554,23403,3859,873,879,878,644,995,nil,618,585,-24,628,632,nil,nil,nil,644,275,608,23141,nil,666,972,4435,5273,693,nil,709,12530,nil,12661,2275,1684,653,nil,593,597,690,692,468,725,nil,719,35,36,22748,4723,4579,72,797,686,-18,-19,411,783,25,822,nil,nil,1114,802,342,nil,806,nil,742,15314,nil,13552,nil,399,366,402,469,410,-32,-34,394,nil,nil,nil,nil,nil,nil,nil,740,24999,nil,nil,nil,nil,742,nil,813,731,14254,733,nil,nil,723,nil,788,-56,835,nil,nil,1411,nil,nil,nil,nil,nil,1699,750,nil,749,751,388,425,21042,nil,nil,nil,0,695,796,nil,nil,20621,20485,20344,887,887,nil,nil,768,782,786,nil,nil,790,792,793,nil,nil,nil,nil,nil,nil,nil,nil,nil,783,3269,nil,nil,18867,nil,nil,nil,0,nil,nil,nil,880,nil,nil,882,571,23010,926,nil,nil,nil,-26,nil,859,28226,28043,22879,-82,22617,22486,22355,806,807,26997,26899,3859,4867,3322,1018,887,888,893,894,5404,5535,5666,5142,4723,4579,4291,4147,4003,3455,3311,3715,3427,2275,5011,nil,44,nil,13588,nil,nil,nil,nil,13054,843,841,845,nil,nil,nil,848,nil,nil,12792,nil,12399,nil,12268,nil,327,nil,nil,nil,12125,1108,nil,858,858,nil,nil,859,23804,863,11982,28348,28409,968,914,nil,nil,23935,871,nil,11720,28775,28836,11589,3571,2707,11327,996,877,926,nil,10934,nil,nil,10803,nil,nil,nil,3571,1007,nil,3427,90,1013,1039,11,1044,10672,10541,28470,28592,7,nil,nil,893,nil,28714,28653,10279,nil,nil,60,1843,nil,692,nil,nil,nil,nil,1177,nil,nil,nil,938,nil,nil,369,nil,324,nil,nil,924,nil,926,nil,nil,nil,25383,nil,9755,929,9612,9481,9219,28531,28165,8957,8683,724,972,8036,7905,7774,7643,972,nil,nil,7512,7381,973,nil,1030,1555,1061,6988,nil,nil,788,nil,nil,269,27654,nil,27562,nil,26660,nil,6857,nil,3298,nil,944,945,1253,951,nil,nil,nil,nil,nil,nil,1040,1843,nil,nil,nil,339,360,473,334,955,5928,5666,nil,-72,nil,nil,nil,nil,981,nil,nil,nil,-34,26447,189,nil,958,1041,960,nil,nil,26673,nil,nil,1,nil,nil,675,nil,nil,27332,27562,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,1447,590,nil,nil,966,26816,nil,1094,nil,1078,-13,nil,nil,16247,nil,993,1e3,1102,nil,980,nil,1043,14647,nil,nil,22224,nil,429,24598,998,nil,1002,233,250,1046,181,1139,1047,1026,24729,nil,1099,249,nil,nil,nil,68,614,nil,1165,nil,nil,nil,nil,nil,1183,1185,nil,nil,26,1065,8,-5,232,-4,1123,970,1112,nil,1072,2851,14516,nil,1195,-25,1080,nil,nil,nil,nil,nil,2563,nil,nil,nil,nil,nil,nil,nil,nil,1079,15723,1083,416,392,583,834,nil,1987,16378,nil,1084,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,16640,16771,1211,nil,3715,1088,1135,nil,nil,1092,nil,1176,nil,nil,1096,1104,nil,1109,1114,nil,1116,nil,nil,1120,1109,3557,nil,nil,18474,18605,18736,5142,5273,5404,377,26349,1202,26251,-68,97,26153,26055,335,-69,1125,1127,nil,25859,nil,1127,902,nil,1151,25761,25663,nil,498,1178,331,nil,nil,27464,27430,nil,nil,nil,nil,8167,nil,nil,nil,nil,nil,8298,nil,nil,1165,nil,nil,1162,1146,nil,nil,763,2131,nil,nil,nil,nil,1146,136,nil,nil,nil,1271,nil,9088,1274,nil,nil,25565,9350,4291,-1,1283,nil,1284,-77,1411,nil,nil,nil,nil,1159,1205,1176,1176,227,nil,nil,10410,3139,2563,nil,2995,nil,nil,-10,23272,nil,nil,27734,nil,27716,nil,27680,nil,27588,nil,nil,nil,nil,1190,1194,2995,2851,11458,nil,1211,nil,nil,nil,nil,1217,1218,1221,1223,1227,1230,nil,nil,nil,1274,1230,121,nil,1241,nil,nil,-70,1246,nil,nil,nil,nil,nil,nil,1290,2419,1987,nil,nil,1248,1253,nil,1258,1259,1260,nil,1285,1267,1256,23673,nil,nil,nil,nil,9,nil,13,17,nil,268,nil,nil,nil,1393,4003,3139,2117,nil,nil,nil,1555,32,33,667,1353,34,nil,1276,1285,1286,1287,3308,3413,27193,nil,nil,nil,nil,nil,nil,nil,1290,25467,nil,257,nil,27291,nil,nil,1300,nil,nil,25666,nil,nil,13607,nil,23450,nil,nil,1315,24467,1116,1370,3283,nil,19403,19534,nil,nil,nil,nil,1314,1438,609,nil,nil,nil,1441,20213,28104,27982,79,13581,nil,nil,nil,nil,1317,1318,27095,1319,nil,nil,1320,nil,nil,1334,1338,1355,1358,nil,1359,nil,555,27799,nil,574,4435,nil,nil,nil,nil,nil,1973,nil,1365,109,142,143,221,1364,25957,1372,nil,25470,nil,25862,nil,25764,nil,24375,nil,nil,1418,1421,nil,375,nil,145,nil,1382,1390,1391,1392,nil,nil,nil,25960,nil,nil,nil,nil,-104,nil],racc_action_default=[-1,-738,-4,-738,-2,-723,-5,-738,-8,-738,-738,-738,-738,-31,-738,-738,-36,-738,-738,-632,-632,-310,-52,-725,-738,-61,-738,-69,-70,-71,-75,-286,-286,-286,-323,-350,-351,-87,-13,-91,-99,-101,-738,-619,-620,-738,-738,-738,-738,-738,-738,-239,-738,-725,-257,-301,-302,-303,-304,-305,-306,-307,-308,-309,-711,-312,-316,-737,-700,-331,-333,-738,-738,-63,-63,-723,-738,-738,-738,-352,-353,-355,-412,-556,-557,-558,-559,-580,-562,-563,-582,-584,-567,-572,-576,-578,-594,-595,-596,-580,-598,-600,-601,-602,-603,-709,-608,-609,-710,-611,-612,-613,-614,-615,-616,-617,-618,-623,-624,1231,-3,-724,-733,-734,-735,-7,-738,-738,-738,-738,-738,-9,-4,-19,-738,-130,-131,-132,-133,-134,-135,-136,-140,-141,-142,-143,-144,-145,-146,-147,-148,-149,-150,-151,-152,-153,-154,-155,-156,-157,-158,-159,-160,-161,-162,-163,-164,-165,-166,-167,-168,-169,-170,-171,-172,-173,-174,-175,-176,-177,-178,-179,-180,-181,-182,-183,-184,-185,-186,-187,-188,-189,-190,-191,-192,-193,-194,-195,-196,-197,-198,-199,-200,-201,-202,-203,-204,-205,-206,-207,-208,-209,-210,-24,-137,-13,-738,-738,-738,-738,-738,-276,-738,-738,-721,-722,-738,-13,-631,-629,-655,-655,-738,-13,-738,-738,-725,-726,-56,-738,-619,-620,-738,-310,-738,-738,-245,-738,-632,-632,-13,-738,-57,-59,-222,-223,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-738,-258,-259,-260,-261,-738,-65,-66,-738,-130,-131,-170,-171,-172,-188,-193,-200,-203,-619,-620,-698,-738,-421,-423,-738,-719,-720,-76,-276,-738,-330,-427,-436,-438,-82,-433,-83,-725,-84,-264,-281,-291,-291,-285,-289,-292,-738,-580,-702,-706,-738,-85,-86,-723,-14,-738,-17,-738,-89,-13,-725,-738,-92,-95,-13,-107,-108,-738,-738,-115,-323,-326,-725,-738,-632,-632,-350,-351,-354,-434,-738,-97,-738,-103,-320,-738,-224,-225,-599,-233,-234,-738,-246,-738,-13,-314,-725,-265,-730,-730,-738,-738,-730,-738,-332,-62,-738,-738,-738,-13,-13,-723,-738,-724,-619,-620,-738,-738,-310,-738,-365,-366,-125,-126,-738,-128,-738,-310,-627,-738,-346,-655,-560,-738,-738,-738,-738,-738,-738,-738,-738,-6,-736,-25,-26,-27,-28,-29,-738,-738,-21,-22,-23,-138,-738,-32,-35,-297,-738,-738,-296,-33,-738,-37,-738,-310,-49,-51,-211,-269,-292,-53,-54,-38,-212,-269,-725,-277,-291,-291,-712,-713,-286,-431,-714,-715,-713,-712,-286,-430,-432,-714,-715,-738,-548,-738,-378,-379,-725,-697,-697,-637,-638,-640,-640,-640,-654,-656,-657,-658,-659,-660,-661,-662,-663,-664,-738,-666,-668,-670,-675,-677,-678,-681,-686,-688,-689,-691,-692,-693,-695,-738,-738,-738,-48,-219,-55,-725,-329,-738,-738,-738,-276,-320,-738,-738,-738,-738,-738,-738,-738,-220,-221,-226,-227,-228,-229,-230,-231,-235,-236,-237,-238,-240,-241,-242,-243,-244,-247,-248,-249,-250,-725,-262,-67,-725,-442,-286,-712,-713,-73,-77,-656,-725,-291,-725,-287,-440,-442,-725,-325,-282,-738,-283,-738,-288,-738,-293,-738,-705,-708,-12,-724,-16,-18,-725,-88,-318,-104,-93,-738,-725,-276,-738,-738,-114,-738,-631,-599,-738,-100,-105,-738,-738,-738,-738,-263,-251,-738,-738,-725,-738,-266,-732,-731,-268,-732,-321,-322,-701,-13,-356,-357,-13,-738,-738,-738,-738,-738,-738,-276,-738,-738,-320,-63,-125,-126,-127,-738,-738,-276,-342,-625,-738,-13,-413,-655,-416,-561,-581,-586,-738,-588,-564,-583,-738,-585,-566,-738,-569,-738,-571,-574,-738,-575,-738,-597,-10,-20,-738,-30,-738,-300,-738,-738,-276,-738,-738,-738,-738,-435,-738,-278,-280,-738,-738,-78,-275,-428,-738,-738,-80,-429,-44,-253,-737,-737,-348,-630,-738,-635,-636,-738,-738,-647,-738,-650,-738,-652,-738,-367,-738,-369,-371,-374,-377,-725,-669,-679,-680,-690,-694,-633,-46,-255,-349,-328,-727,-712,-713,-712,-713,-725,-738,-738,-58,-456,-459,-460,-461,-462,-464,-466,-469,-470,-527,-725,-482,-485,-497,-501,-506,-508,-509,-512,-513,-580,-516,-518,-519,-520,-525,-526,-738,-738,-530,-531,-532,-533,-534,-535,-536,-537,-538,-539,-540,-738,-738,-546,-60,-738,-738,-699,-738,-443,-72,-424,-440,-271,-278,-273,-738,-402,-738,-324,-291,-290,-294,-738,-703,-704,-738,-15,-90,-738,-96,-102,-725,-712,-713,-274,-716,-113,-738,-98,-738,-218,-232,-725,-313,-315,-317,-730,-737,-358,-737,-64,-359,-360,-336,-337,-738,-738,-448,-339,-738,-725,-712,-713,-716,-319,-13,-125,-126,-129,-725,-13,-738,-344,-738,-738,-725,-587,-590,-591,-592,-593,-13,-565,-568,-570,-573,-577,-579,-139,-34,-298,-738,-725,-712,-713,-713,-712,-50,-270,-738,-728,-291,-40,-214,-41,-215,-79,-42,-217,-43,-216,-81,-738,-738,-737,-363,-13,-549,-737,-550,-551,-697,-676,-681,-696,-639,-640,-640,-667,-640,-640,-687,-640,-664,-682,-725,-738,-738,-376,-665,-738,-738,-738,-738,-738,-738,-435,-457,-738,-738,-467,-468,-738,-738,-738,-487,-725,-725,-481,-488,-494,-738,-738,-484,-738,-738,-738,-500,-507,-511,-738,-515,-517,-523,-524,-528,-529,-541,-542,-738,-604,-605,-606,-126,-544,-738,-68,-422,-402,-426,-425,-738,-725,-437,-403,-725,-13,-439,-284,-295,-707,-94,-435,-106,-327,-267,-738,-361,-738,-738,-338,-340,-738,-738,-13,-435,-738,-435,-738,-738,-13,-347,-414,-417,-419,-406,-738,-738,-299,-435,-39,-213,-279,-45,-254,-11,-13,-555,-364,-738,-738,-553,-634,-738,-643,-738,-645,-738,-648,-738,-651,-653,-368,-370,-372,-375,-47,-256,-738,-458,-497,-463,-465,-474,-478,-725,-725,-725,-725,-725,-725,-545,-479,-480,-504,-489,-492,-495,-725,-580,-729,-725,-498,-502,-505,-510,-514,-521,-522,-738,-252,-13,-74,-272,-697,-697,-383,-385,-385,-385,-401,-738,-725,-664,-672,-673,-684,-441,-334,-738,-335,-738,-453,-294,-737,-341,-343,-626,-738,-13,-13,-738,-415,-589,-554,-13,-619,-620,-738,-738,-310,-552,-640,-640,-640,-640,-738,-738,-738,-471,-472,-473,-475,-476,-477,-496,-490,-738,-483,-738,-486,-738,-543,-444,-738,-381,-382,-386,-392,-394,-738,-397,-738,-399,-404,-738,-738,-671,-738,-13,-449,-738,-738,-445,-446,-447,-345,-738,-738,-725,-408,-410,-411,-548,-276,-738,-738,-320,-738,-641,-644,-646,-649,-373,-498,-738,-493,-499,-503,-697,-674,-384,-385,-385,-385,-385,-685,-385,-405,-683,-738,-320,-737,-13,-454,-455,-418,-420,-407,-738,-547,-725,-712,-713,-716,-319,-640,-738,-491,-380,-738,-389,-738,-391,-738,-395,-738,-398,-400,-319,-716,-362,-737,-409,-435,-642,-385,-385,-385,-385,-450,-451,-452,-738,-387,-390,-393,-396,-385,-388],clist=["44,138,138,306,310,44,315,315,315,298,408,282,380,380,457,463,380,138","222,281,690,379,415,451,294,15,827,141,141,300,15,560,632,675,229,229","44,341,341,470,124,353,353,615,618,508,381,382,384,385,386,623,794,336","568,899,337,133,214,238,595,15,885,791,44,791,233,380,380,380,380,977","435,436,390,294,294,705,353,353,353,556,372,730,774,299,490,490,120","15,902,552,733,733,794,892,699,701,703,395,121,418,419,420,421,558,1053","235,607,610,124,131,614,448,481,481,317,317,317,44,1024,934,927,363","333,695,696,509,44,997,44,302,309,311,356,711,1069,368,4,1031,752,752","8,967,15,1026,335,8,928,374,377,473,506,15,1177,15,786,125,387,446,447","794,1151,778,1010,946,947,2,313,326,327,403,405,791,791,788,511,512","1006,1153,797,604,213,316,316,316,396,226,232,1038,1041,568,980,315","458,592,592,653,655,1049,431,424,524,525,821,283,370,776,782,664,366","375,781,44,467,442,373,295,442,376,394,636,1046,369,1177,44,605,371","841,1054,429,44,442,991,639,1025,1071,550,15,515,437,1129,1073,437,1150","573,640,993,44,1072,15,430,441,406,845,441,15,437,1090,1091,1214,8,490","229,229,336,839,449,423,441,422,416,8,15,551,315,315,1153,1165,562,791","510,563,300,315,959,826,1167,800,1144,481,1082,705,1221,983,233,909","809,1173,1030,1184,1032,1033,923,1036,1039,924,457,463,917,894,933,936","1055,1056,1062,949,889,1,727,306,1024,407,929,380,409,310,642,44,410","1037,1040,44,411,412,1199,341,44,413,549,353,414,588,1168,1164,638,847","852,842,336,906,1058,1059,15,336,341,1136,15,619,353,598,897,15,124","893,434,434,44,649,651,654,654,1171,,596,,962,899,,,805,,44,44,973,","317,,,802,805,626,15,,317,,233,,,620,621,1054,,,902,955,,15,15,,1054","576,,986,1169,138,522,523,805,,333,124,988,577,,333,805,831,1119,682","593,591,584,,579,687,1212,840,561,671,688,141,580,,,1000,564,586,,,","844,559,316,,606,,1145,1054,,877,316,,457,463,882,,,,622,578,663,863",",,,,,,718,,,,,,899,794,458,,315,1169,,985,705,705,,,490,,791,,,972,","1035,,,467,,1043,1044,,963,,,1015,1017,,1019,1021,,1022,768,768,682","481,1170,969,,,,,,731,731,676,,,,752,752,717,1083,1013,813,,898,890","900,752,,733,976,,490,752,490,681,1042,315,458,,846,686,899,,510,,449",",458,,873,875,,44,,878,880,,467,,,341,,1222,,353,,,467,,341,,,,353,315","458,752,15,,596,,836,,458,315,,969,,596,855,44,855,,44,1223,467,,,1113","1114,1115,467,,,,,,818,775,,820,,,,44,15,,,15,315,458,811,,,,,790,,","780,989,822,138,,,,,,,15,467,44,34,,442,,,34,44,1096,843,941,,,442,442",",,141,442,442,,,,34,,15,817,,437,705,705,,15,34,34,34,,34,437,437,441","1191,891,437,437,,,859,,,441,441,1126,1127,,441,441,1160,1161,1162,1163",",874,876,,34,,879,881,961,34,34,,,34,768,,894,1140,,1141,,,768,,1146","926,,895,,,895,768,768,940,872,,957,960,1001,,,,138,,281,,,,830,1215",",,682,,,687,,,380,34,,901,,903,34,34,34,34,34,,34,,341,,,,353,,1089",",,860,,341,,,676,353,868,1070,1216,596,990,,,,1200,1074,,,676,935,974",",1075,,,,,44,,,,,44,434,,,,,,,,,,44,987,,,,,,,,15,,,1103,,15,,872,998","442,,490,1066,,,1124,15,,,34,34,34,34,34,34,34,44,676,,,,34,380,,437",",,34,34,34,34,1008,,1009,1149,1012,441,,,,,15,,,34,,676,768,1002,768",",380,768,768,,676,1060,,926,768,,996,,926,926,768,768,,,,,,,768,768",",1052,,676,805,,,,,,1080,,,1192,,34,874,876,881,879,,44,34,34,,,,,,1120",",34,1174,,,1175,,768,1078,44,1074,,,1074,1075,44,15,1075,731,34,1075",",1075,34,,,1085,,34,,,44,676,,15,1098,,676,676,353,15,,,,,,,,1095,,1067","1088,,,,,15,,34,1066,1102,,1066,,1066,,,,,,,,34,34,34,1217,996,,1068",",,,,1074,,,44,,,,1075,,1075,34,1075,,1075,,,294,,,1002,353,,,,,,380","380,15,,1075,44,44,,,,,44,,,,,1156,1104,,1105,,1106,1148,1066,768,1066",",1066,1154,1066,15,15,,768,1185,1186,15,768,,,676,676,676,,315,458,1066",",34,,935,,294,,,44,353,,,,,,31,,,467,,31,,,,,1183,,996,,,,,,15,768,",",31,,,34,,467,,,,,31,31,31,34,31,44,895,,,1067,,,1067,,1067,,,,,768",",,1213,,,,,,,,15,513,31,,,,,31,31,,1176,31,1178,,,,,,,,,,,,,378,,1189",",,,,,34,,,,,1197,1130,1132,1134,,34,,,,,,,,,1067,,1067,,1067,31,1067","34,,,31,31,31,31,31,,31,676,,34,,,34,1067,,565,,,1218,34,1219,,1220",",,,,,,34,,,,34,,,,,581,,,1229,,,,,,,,,,,,,,,,,,,34,,,34,34,,,34,,,,",",34,34,,,,34,34,,,1202,1204,1206,1208,,1209,,31,31,31,31,31,31,31,,","18,,,31,,18,,,,31,31,31,31,432,445,,,,,,,,239,,,,31,,1225,1226,1227","1228,239,239,239,,18,342,342,,1230,,,,,,,,,,,,,,,,,,,,,,,,18,,,,,239","239,,31,239,391,401,401,,693,31,31,,,,,,,,31,,,,,,,,,,,,760,760,,,,","31,,,,31,,,,,31,570,721,572,18,,574,575,,239,239,239,239,18,,18,,34",",,,,34,34,,,,,,,31,,,34,,,,,,,777,,,,31,31,31,,783,,785,34,,,789,,,",",,,,,,,31,,,34,,798,,,,,,801,,,,,,,,,,,,,,,,,,,815,,,18,239,439,239","239,439,239,,,,,,18,,,,,667,18,439,239,239,,,,,,,,,,31,,34,,18,,,,,",",,,,,,,,,34,,,,,,,,,,,,34,,,,,,34,,31,,,,34,,,,712,,31,239,,,,,,,239","239,34,,,,,,,239,,,,,,910,760,,,,,,,17,760,,,18,17,,,18,,760,760,342","18,,,,,,,,,,,,,,,,31,,342,,,34,,17,,,31,792,,378,18,795,,,,769,769,",",,,,31,,239,18,18,,,34,34,17,,,31,34,,31,,,,,,,31,239,,,792,,,378,,","31,,,,31,,,975,,,445,,,,,,,,,,,,,,,34,,34,34,,,31,17,,31,31,,,31,,34","17,,17,31,31,,,,31,31,,,,861,239,,,,,,,,792,378,,,,,34,,,,,,,,888,,",",,,760,,760,,,760,760,905,,,,239,760,,,,,1023,760,760,,239,,,,,760,760",",,,,1034,,,,,,,,,,,17,,17,,,17,,,,,,,17,,,,,,17,17,,,760,,,,,,,,,1064",",,,17,,,18,,,,,,792,,342,,239,,,,769,970,,342,971,,,,769,,,,239,,,,","769,769,,,,,31,18,,,18,31,31,,,,,239,,,,,31,,,,,239,,,,18,,,,1110,1111","1112,,,31,,,,,,17,,,,17,1121,,999,,17,,31,18,,,439,239,,,18,,,,,,439","439,,,,439,439,43,760,763,763,,43,,17,,,760,,,,760,,,,,,,,17,17,293",",,,,,,,,,,,43,340,340,,,,31,,,,,,,,,,,,,,,,760,31,,,,,43,,,,,,,31,,","389,293,293,31,,,,,769,31,769,,,769,769,,760,,,,769,,,1084,,31,769,769",",,,,,,769,769,,,,342,,,378,,,43,,,767,767,342,,,,43,,43,,,,,,,,,,,,",",,,,769,,,18,,,,31,18,239,,,,,,,,,,18,,,,,,,,,,,,,,,,31,31,439,,,,31",",,,,,,,,,,,,18,,,,,,,,,,,,43,,17,,,,763,,,,,,43,,763,,,,43,31,,31,31","763,763,,,,,,,,,,31,43,,,,,17,,,17,,,,761,761,,,239,,,,,,,,,769,,,31","17,,,,18,769,,,,769,,,,,,,239,,,,,,18,,,,,17,18,,17,,,,17,,,,,,17,17",",,18,17,17,,1099,,,43,,769,,43,,,,340,43,,767,,,,,,,,767,,,,,,,19,340","767,767,,19,,,769,,,,,43,,,,,,,,,18,,,,,,43,43,,,,,,1138,19,349,349",",,,763,,763,,,763,763,,18,18,,,763,,18,,,,763,763,,,19,,,,763,763,,",",,349,349,349,,,,,,,,,,,,,,,,,,,,,1180,,,18,,239,239,,,,763,,,,,,,,239",",,,19,17,,,761,,17,,,19,,19,761,,,,,17,,,,761,761,,,18,,,,,,,,,,17,",",,,,,,767,,767,,,767,767,,,17,,,767,,,,,,767,767,,,,,,,767,767,,,,,",",,,,,,,,,,,,,,,,,,19,,19,,,19,,,43,,,,19,,767,,340,,19,19,763,,,,,340",",21,,763,,,21,763,,19,,,17,,,,,,,,43,,,43,,,,,,,17,,,,,,17,21,344,344",",,,,43,,,,,,,763,17,,,,,,,,,761,,761,,21,761,761,,762,762,43,,761,,393","402,402,43,761,761,,,763,,,,761,761,19,,,,19,,,,349,19,,,,,,,,,17,,",",,,,767,,349,20,,,21,,20,767,,,761,767,19,21,,21,,,,17,17,,,,,17,,19","19,,,,,,,,,20,350,350,,,,,,,,,,,,,,,,767,,,,,,,,,,20,,,,17,,,,,,350","350,350,,,,,,,,,,767,340,,,,,,,,,,21,340,440,,,440,,,,,,,21,,,17,,,21","440,,,20,,,,,43,,,,20,43,20,,21,,,761,,,,,43,,,,761,,,,761,,,,,,,,,",",,,,,,765,765,,,,762,,,,,,43,,762,,,,,,,,,762,762,,,,,761,,,,,,,,,,",",,,,,,,,,21,20,,20,21,,20,19,344,21,,,761,20,,349,,,,20,20,,,,349,,","344,,,,,,,,,20,,,21,,,,43,,19,,,19,,,,,,21,21,,,,,,43,,,,,,43,,19,,",",,,,,,,,,,,43,,,,1097,,766,766,,,,,,19,,,19,,,,19,,,,,,19,19,,,,19,19","20,,,,20,,,,350,20,,,,,,,,,762,,762,,43,762,762,,,350,,,762,,,,,293","762,762,,20,,,,,762,762,,,,,43,43,,765,20,20,43,,,,,765,,,,,,,,,765","765,,,,,,,,,,,,762,,,,,,,,,,,,,,293,,,43,,,,,,,,,,,,,349,,,,,,,,,,,349",",,,,,,21,,,,,,,,344,,,,,43,,,,344,,19,,,,,19,,,,,,,,,,,19,,,21,,,21",",,,,,,,,,764,764,19,,,,,,766,,,21,,,,,766,,851,19,,,,,,766,766,762,",",,,,,,,762,,21,,762,440,,,,21,,,765,,765,440,440,765,765,,440,440,,","765,,,,,20,765,765,,,,,,350,765,765,,,,,,,350,,762,,,,,,,,,,,,,,,19",",,,20,,,20,,,,,,,765,,,762,19,,,,,,19,,,,20,,,,,,,,,,,,19,,,,349,,,",",,,,,,,20,,,20,,,,20,,,,,,20,20,,,344,20,20,,,,,,,,,344,,,766,,766,",",766,766,,,19,,,766,,,,,,766,766,,,349,21,,,766,766,21,,,,764,,,,,19","19,21,764,,,19,,,,,,764,764,,,,765,,,440,,,,,,765,,766,,765,,,,,,,21",",,,,,,,,,349,,,19,,,,,,,,,,,,,,,350,,,,,246,,,,765,,350,,,,314,314,314",",,,,,,,,,361,362,19,364,365,,367,,,,20,,,,765,20,,,,,,314,314,,,21,20",",,,,,,,,,,,,,,,,21,20,,,,,21,,,,,,,,,,,,20,766,,,21,,,,1101,,766,,,","766,,,,,764,,764,,,764,764,,,,,,764,,,,,,764,764,,,,,,,764,764,,,,,",",,,,,,766,21,,,,,,,,,,,,,402,,,,,,,,20,,,,764,,,21,21,,766,,,21,,,,","20,,,,,,20,,,,,314,444,,,450,314,,,,,,20,,,,350,,,450,,,,,,,402,,,21",",,246,,,,,,,526,527,528,529,530,531,532,533,534,535,536,537,538,539","540,541,542,543,544,545,546,547,,,,,548,,20,,,,,,21,,,,,,,350,,,,,,",",314,314,,,,,,20,20,314,,,,20,764,,314,,314,,,314,314,764,,,,764,,,",",,,,,,,,,,,,,,,,,,,,,,,350,,,20,,,,,,601,,602,,,,,,764,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,20,,764,,,,,,,,,,,,,,,,,,,,,,,,,,,314,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,689,,,,,,,,,,,,,,,,,,,,,,,,,,314,,,,,,,,,,,,,719",",,,,,,,,,314,,450,450,450,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,362,,,",",,,,,,314,,314,,314,,,,,,,,,,,,,,,,314,,,,,,,,,,450,,,812,,,,,,,,314",",,314,,,,,,,,,,,,,314,314,,,,,,,,,,314,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,314,450,314,,,,869,,,314,314,450,450,,,,450,450,,,,,,314,,,,,,,,",",,,,314,,,,,,,,,,,,,,,,,,,,,,,,689,719,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,314,,,,,,,,,314,,,314,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,314,,,,,,,,450,,,,,,,,,",",,,1004,1005,,,,,,,,,,,,,,,,,,,,,,,,,,,1027,1028,450,450,450,450,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1061,,,,,,,,,,,,,,,,,,,,,,,,,,,","314,,,,,,,,,,,,,,,,,,,314,,,,,,,,,,,,,,,,,,,,,,,,,,450,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,314"],racc_goto_table=arr=$$$("Array").$new(4695,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),clist=["71,74,74,89,89,71,36,36,36,151,191,46,26,26,54,54,26,74,33,48,12,105","191,31,71,23,111,76,76,33,23,90,72,32,85,85,71,71,71,10,114,81,81,108","108,10,19,19,44,44,19,110,232,11,92,224,67,17,17,22,69,23,13,93,71,93","115,26,26,26,26,109,24,24,71,71,71,123,81,81,81,56,85,41,41,50,223,223","5,23,228,54,170,170,232,128,221,221,221,23,7,19,19,19,19,31,185,40,87","87,114,9,87,28,218,218,88,88,88,71,122,180,168,79,63,132,132,28,71,142","71,55,55,55,68,124,138,40,2,186,193,193,8,140,23,125,64,8,169,88,88","150,150,23,229,23,57,6,5,26,26,232,144,154,200,195,195,3,62,62,62,73","73,93,93,154,26,26,14,145,16,10,18,86,86,86,21,35,35,171,171,92,13,36","89,217,217,207,207,171,25,27,42,43,45,49,8,51,59,77,82,84,91,71,74,20","86,103,20,104,112,113,184,116,229,71,117,118,119,184,11,71,20,120,121","126,130,26,23,33,23,135,136,23,143,191,146,147,71,142,23,22,22,148,149","22,23,23,152,153,144,8,223,85,85,11,72,78,2,22,8,6,8,23,155,36,36,145","185,157,93,78,158,33,36,161,110,185,69,162,218,163,123,164,165,115,123","69,138,168,166,173,175,176,168,168,177,54,54,32,193,181,182,188,189","140,198,199,1,31,89,122,203,32,26,204,89,150,71,205,169,169,71,206,209","185,71,71,210,50,81,211,33,186,125,26,212,213,216,11,124,195,195,23","11,71,142,23,19,81,33,222,23,114,226,86,86,71,208,208,208,208,227,,67",",57,224,,,54,,71,71,32,,88,,,31,54,33,23,,88,,115,,,11,11,184,,,228","72,,23,23,,184,5,,32,184,74,35,35,54,,63,114,32,7,,63,54,31,180,89,79","40,68,,9,89,109,31,62,33,36,76,64,,,32,62,64,,,,10,86,86,,40,,13,184",",56,86,,54,54,56,,,,5,8,17,31,,,,,,,36,,,,,,224,232,89,,36,184,,108","123,123,,,223,,93,,,69,,32,,,74,,32,32,,90,,,221,221,,221,221,,221,71","71,89,218,128,92,,,,,,167,167,40,,,,193,193,114,41,132,26,,139,24,139","193,,170,87,,223,193,223,55,72,36,89,,150,55,224,,78,,78,,89,,28,28",",71,,28,28,,74,,,71,,13,,81,,,74,,71,,,,81,36,89,193,23,,67,,44,,89","36,,92,,67,208,71,208,,71,111,74,,,32,32,32,74,,,,,,11,40,,11,,,,71","23,,,23,36,89,78,,,,,88,,,55,10,114,74,,,,,,,23,74,71,61,,20,,,61,71","108,114,191,,,20,20,,,76,20,20,,,,61,,23,88,,23,123,123,,23,61,61,61",",61,23,23,22,12,85,23,23,,,17,,,22,22,132,132,,22,22,221,221,221,221",",78,78,,61,,78,78,105,61,61,,,61,71,,193,108,,108,,,71,,110,167,,133",",,133,71,71,167,88,,46,151,28,,,,74,,48,,,,86,32,,,89,,,89,,,26,61,","137,,137,61,61,61,61,61,,61,,71,,,,81,,10,,,8,,71,,,40,81,8,139,221","67,19,,,,132,223,,,40,40,67,,225,,,,,71,,,,,71,86,,,,,,,,,,71,11,,,",",,,,23,,,139,,23,,88,11,20,,223,127,,,10,23,,,61,61,61,61,61,61,61,71","40,,,,61,26,,23,,,61,61,61,61,85,,11,10,85,22,,,,,23,,,61,,40,71,78","71,,26,71,71,,40,19,,167,71,,40,,167,167,71,71,,,,,,,71,71,,167,,40","54,,,,,,19,,,31,,61,78,78,78,78,,71,61,61,,,,,,191,,61,139,,,139,,71","11,71,223,,,223,225,71,23,225,167,61,225,,225,61,,,11,,61,,,71,40,,23","71,,40,40,81,23,,,,,,,,11,,133,114,,,,,23,,61,127,23,,127,,127,,,,,",",,61,61,61,139,40,,137,,,,,223,,,71,,,,225,,225,61,225,,225,,,71,,,78","81,,,,,,26,26,23,,225,71,71,,,,,71,,,,,33,137,,137,,137,11,127,71,127",",127,11,127,23,23,,71,19,19,23,71,,,40,40,40,,36,89,127,,61,,40,,71",",,71,81,,,,,,58,,,74,,58,,,,,11,,40,,,,,,23,71,,,58,,,61,,74,,,,,58","58,58,61,58,71,133,,,133,,,133,,133,,,,,71,,,11,,,,,,,,23,65,58,,,,","58,58,,137,58,137,,,,,,,,,,,,,83,,40,,,,,,61,,,,,137,134,134,134,,61",",,,,,,,,133,,133,,133,58,133,61,,,58,58,58,58,58,,58,40,,61,,,61,133",",65,,,137,61,137,,137,,,,,,,61,,,,61,,,,,65,,,137,,,,,,,,,,,,,,,,,,","61,,,61,61,,,61,,,,,,61,61,,,,61,61,,,134,134,134,134,,134,,58,58,58","58,58,58,58,,,30,,,58,,30,,,,58,58,58,58,83,83,,,,,,,,30,,,,58,,134","134,134,134,30,30,30,,30,30,30,,134,,,,,,,,,,,,,,,,,,,,,,,,30,,,,,30","30,,58,30,30,30,30,,65,58,58,,,,,,,,58,,,,,,,,,,,,95,95,,,,,58,,,,58",",,,,58,83,65,83,30,,83,83,,30,30,30,30,30,,30,,61,,,,,61,61,,,,,,,58",",,61,,,,,,,65,,,,58,58,58,,65,,65,61,,,65,,,,,,,,,,,58,,,61,,65,,,,",",65,,,,,,,,,,,,,,,,,,,65,,,30,30,30,30,30,30,30,,,,,,30,,,,,83,30,30","30,30,,,,,,,,,,58,,61,,30,,,,,,,,,,,,,,,61,,,,,,,,,,,,61,,,,,,61,,58",",,,61,,,,83,,58,30,,,,,,,30,30,61,,,,,,,30,,,,,,65,95,,,,,,,29,95,,","30,29,,,30,,95,95,30,30,,,,,,,,,,,,,,,,58,,30,,,61,,29,,,58,83,,83,30","83,,,,107,107,,,,,,58,,30,30,30,,,61,61,29,,,58,61,,58,,,,,,,58,30,",",83,,,83,,,58,,,,58,,,65,,,83,,,,,,,,,,,,,,,61,,61,61,,,58,29,,58,58",",,58,,61,29,,29,58,58,,,,58,58,,,,83,30,,,,,,,,83,83,,,,,61,,,,,,,,83",",,,,,95,,95,,,95,95,83,,,,30,95,,,,,65,95,95,,30,,,,,95,95,,,,,65,,",",,,,,,,,29,,29,,,29,,,,,,,29,,,,,,29,29,,,95,,,,,,,,,65,,,,29,,,30,",",,,,83,,30,,30,,,,107,83,,30,83,,,,107,,,,30,,,,,107,107,,,,,58,30,",",30,58,58,,,,,30,,,,,58,,,,,30,,,,30,,,,65,65,65,,,58,,,,,,29,,,,29","65,,83,,29,,58,30,,,30,30,,,30,,,,,,30,30,,,,30,30,70,95,98,98,,70,","29,,,95,,,,95,,,,,,,,29,29,70,,,,,,,,,,,,70,70,70,,,,58,,,,,,,,,,,,",",,,95,58,,,,,70,,,,,,,58,,,70,70,70,58,,,,,107,58,107,,,107,107,,95",",,,107,,,83,,58,107,107,,,,,,,107,107,,,,30,,,83,,,70,,,102,102,30,",",,70,,70,,,,,,,,,,,,,,,,,107,,,30,,,,58,30,30,,,,,,,,,,30,,,,,,,,,,",",,,,,58,58,30,,,,58,,,,,,,,,,,,,30,,,,,,,,,,,,70,,29,,,,98,,,,,,70,","98,,,,70,58,,58,58,98,98,,,,,,,,,,58,70,,,,,29,,,29,,,,96,96,,,30,,",",,,,,,107,,,58,29,,,,30,107,,,,107,,,,,,,30,,,,,,30,,,,,29,30,,29,,",",29,,,,,,29,29,,,30,29,29,,30,,,70,,107,,70,,,,70,70,,102,,,,,,,,102",",,,,,,34,70,102,102,,34,,,107,,,,,70,,,,,,,,,30,,,,,,70,70,,,,,,30,34","34,34,,,,98,,98,,,98,98,,30,30,,,98,,30,,,,98,98,,,34,,,,98,98,,,,,34","34,34,,,,,,,,,,,,,,,,,,,,,30,,,30,,30,30,,,,98,,,,,,,,30,,,,34,29,,","96,,29,,,34,,34,96,,,,,29,,,,96,96,,,30,,,,,,,,,,29,,,,,,,,102,,102",",,102,102,,,29,,,102,,,,,,102,102,,,,,,,102,102,,,,,,,,,,,,,,,,,,,,",",,,34,,34,,,34,,,70,,,,34,,102,,70,,34,34,98,,,,,70,,39,,98,,,39,98",",34,,,29,,,,,,,,70,,,70,,,,,,,29,,,,,,29,39,39,39,,,,,70,,,,,,,98,29",",,,,,,,,96,,96,,39,96,96,,97,97,70,,96,,39,39,39,70,96,96,,,98,,,,96","96,34,,,,34,,,,34,34,,,,,,,,,29,,,,,,,102,,34,38,,,39,,38,102,,,96,102","34,39,,39,,,,29,29,,,,,29,,34,34,,,,,,,,,38,38,38,,,,,,,,,,,,,,,,102",",,,,,,,,,38,,,,29,,,,,,38,38,38,,,,,,,,,,102,70,,,,,,,,,,39,70,39,,","39,,,,,,,39,,,29,,,39,39,,,38,,,,,70,,,,38,70,38,,39,,,96,,,,,70,,,","96,,,,96,,,,,,,,,,,,,,,,100,100,,,,97,,,,,,70,,97,,,,,,,,,97,97,,,,","96,,,,,,,,,,,,,,,,,,,,39,38,,38,39,,38,34,39,39,,,96,38,,34,,,,38,38",",,,34,,,39,,,,,,,,,38,,,39,,,,70,,34,,,34,,,,,,39,39,,,,,,70,,,,,,70",",34,,,,,,,,,,,,,,70,,,,70,,101,101,,,,,,34,,,34,,,,34,,,,,,34,34,,,","34,34,38,,,,38,,,,38,38,,,,,,,,,97,,97,,70,97,97,,,38,,,97,,,,,70,97","97,,38,,,,,97,97,,,,,70,70,,100,38,38,70,,,,,100,,,,,,,,,100,100,,,",",,,,,,,,97,,,,,,,,,,,,,,70,,,70,,,,,,,,,,,,,34,,,,,,,,,,,34,,,,,,,39",",,,,,,,39,,,,,70,,,,39,,34,,,,,34,,,,,,,,,,,34,,,39,,,39,,,,,,,,,,99","99,34,,,,,,101,,,39,,,,,101,,39,34,,,,,,101,101,97,,,,,,,,,97,,39,,97","39,,,,39,,,100,,100,39,39,100,100,,39,39,,,100,,,,,38,100,100,,,,,,38","100,100,,,,,,,38,,97,,,,,,,,,,,,,,,34,,,,38,,,38,,,,,,,100,,,97,34,",",,,,34,,,,38,,,,,,,,,,,,34,,,,34,,,,,,,,,,,38,,,38,,,,38,,,,,,38,38",",,39,38,38,,,,,,,,,39,,,101,,101,,,101,101,,,34,,,101,,,,,,101,101,",",34,39,,,101,101,39,,,,99,,,,,34,34,39,99,,,34,,,,,,99,99,,,,100,,,39",",,,,,100,,101,,100,,,,,,,39,,,,,,,,,,34,,,34,,,,,,,,,,,,,,,38,,,,,37",",,,100,,38,,,,37,37,37,,,,,,,,,,37,37,34,37,37,,37,,,,38,,,,100,38,",",,,,37,37,,,39,38,,,,,,,,,,,,,,,,,39,38,,,,,39,,,,,,,,,,,,38,101,,,39",",,,39,,101,,,,101,,,,,99,,99,,,99,99,,,,,,99,,,,,,99,99,,,,,,,99,99",",,,,,,,,,,,101,39,,,,,,,,,,,,,39,,,,,,,,38,,,,99,,,39,39,,101,,,39,",",,,38,,,,,,38,,,,,37,37,,,37,37,,,,,,38,,,,38,,,37,,,,,,,39,,,39,,,37",",,,,,,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37","37,,,,,37,,38,,,,,,39,,,,,,,38,,,,,,,,37,37,,,,,,38,38,37,,,,38,99,","37,,37,,,37,37,99,,,,99,,,,,,,,,,,,,,,,,,,,,,,,,,,38,,,38,,,,,,37,,37",",,,,,99,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,38,,99,,,,,,,,,,,,,,,,,,,,,,,,",",,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,37",",,,,,,,,,,,,37,,,,,,,,,,37,,37,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,37,,,,,,,,,,37,,37,,37,,,,,,,,,,,,,,,,37,,,,,,,,,,37,,,37,,,,,,",",37,,,37,,,,,,,,,,,,,37,37,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,37,37,37,,,,37,,,37,37,37,37,,,,37,37,,,,,,37,,,,,,,,,,,,,37,,,,",",,,,,,,,,,,,,,,,,,,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,37,,,,,,,,,37,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,37,,,,,,,,,,,,,37,37,,,,,,,,,,",",,,,,,,,,,,,,,,,37,37,37,37,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,37,,,,,,,,,",",,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,37"],racc_goto_check=arr=$$$("Array").$new(4695,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),racc_goto_pointer=[nil,318,136,167,nil,83,150,95,140,102,-188,15,-449,-628,-707,nil,-397,47,171,-25,-2,110,35,23,-144,-16,-59,68,-107,1689,1365,-198,-418,0,2403,168,-28,3539,2759,2643,84,-441,-50,-50,-25,-415,-15,nil,-7,179,56,-342,nil,nil,-208,100,-221,-406,1143,-347,nil,663,134,86,108,972,nil,17,94,-297,2049,-2,-367,94,-9,nil,17,-219,47,75,nil,2,159,1164,144,15,149,-265,82,-28,-272,-340,-263,-504,nil,943,1787,2189,1529,2747,2401,2538,1649,191,151,-48,nil,1215,-338,-747,-336,-596,144,-182,35,46,158,-144,161,-408,-610,-171,-787,-414,-356,-763,-672,-95,-599,nil,-730,nil,-349,58,178,-827,-724,86,-830,-152,-644,nil,-717,-848,-930,-913,-160,-598,171,-386,-79,-18,-736,-736,-388,-23,nil,-28,-26,nil,nil,-494,-796,-692,-920,-534,-841,9,-619,-593,-432,-734,nil,-618,nil,-618,-437,-434,nil,nil,-621,-431,-431,nil,-708,-831,-779,nil,-626,-625,nil,-77,nil,-384,nil,-593,nil,nil,-455,-374,-725,nil,nil,237,235,238,241,-214,-41,241,244,246,-300,-300,nil,nil,-289,-154,-116,nil,nil,-382,-337,-144,-643,-137,-330,-753,-610,-977,nil,nil,-517],racc_goto_default=[nil,nil,nil,nil,5,nil,6,388,331,nil,nil,469,nil,978,nil,328,329,nil,nil,nil,13,14,22,244,nil,nil,16,nil,438,245,360,nil,nil,634,248,nil,27,25,249,243,514,nil,nil,nil,nil,nil,nil,383,140,nil,nil,nil,28,29,808,nil,nil,nil,348,nil,30,345,452,37,nil,nil,39,42,41,nil,240,241,400,nil,460,139,84,nil,443,100,51,54,280,320,nil,886,453,nil,454,465,477,683,566,318,304,55,56,57,58,59,60,61,62,63,nil,305,69,70,nil,nil,nil,nil,nil,nil,616,227,nil,nil,nil,nil,nil,nil,707,489,nil,708,709,475,471,472,1172,1065,nil,476,nil,nil,nil,478,nil,480,nil,965,nil,nil,nil,487,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,464,nil,nil,787,779,nil,nil,nil,nil,nil,nil,1045,nil,732,931,734,735,739,736,737,nil,nil,738,740,nil,nil,nil,930,932,nil,744,746,747,748,749,nil,753,498,754,755,756,757,nil,nil,nil,83,85,86,nil,nil,nil,nil,644,nil,nil,nil,nil,nil,96,97,nil,228,896,231,474,nil,479,904,492,494,495,1076,499,1077,502,505,323],racc_reduce_table=[0,0,"racc_error",0,150,"_reduce_1",2,148,"_reduce_2",2,149,"_reduce_3",0,151,"_reduce_4",1,151,"_reduce_5",3,151,"_reduce_6",2,151,"_reduce_7",1,153,"_reduce_none",2,153,"_reduce_9",3,156,"_reduce_10",4,157,"_reduce_11",2,158,"_reduce_12",0,162,"_reduce_13",1,162,"_reduce_14",3,162,"_reduce_15",2,162,"_reduce_16",1,163,"_reduce_none",2,163,"_reduce_18",0,174,"_reduce_19",4,155,"_reduce_20",3,155,"_reduce_21",3,155,"_reduce_22",3,155,"_reduce_23",2,155,"_reduce_24",3,155,"_reduce_25",3,155,"_reduce_26",3,155,"_reduce_27",3,155,"_reduce_28",3,155,"_reduce_29",4,155,"_reduce_30",1,155,"_reduce_none",3,155,"_reduce_32",3,155,"_reduce_33",5,155,"_reduce_34",3,155,"_reduce_35",1,155,"_reduce_none",3,167,"_reduce_37",3,167,"_reduce_38",6,167,"_reduce_39",5,167,"_reduce_40",5,167,"_reduce_41",5,167,"_reduce_42",5,167,"_reduce_43",4,167,"_reduce_44",6,167,"_reduce_45",4,167,"_reduce_46",6,167,"_reduce_47",3,167,"_reduce_48",1,175,"_reduce_none",3,175,"_reduce_50",1,175,"_reduce_none",1,173,"_reduce_none",3,173,"_reduce_53",3,173,"_reduce_54",3,173,"_reduce_55",2,173,"_reduce_56",0,189,"_reduce_57",4,173,"_reduce_58",0,190,"_reduce_59",4,173,"_reduce_60",1,173,"_reduce_none",1,166,"_reduce_none",0,194,"_reduce_63",3,191,"_reduce_64",1,193,"_reduce_65",2,181,"_reduce_66",0,198,"_reduce_67",5,185,"_reduce_68",1,169,"_reduce_none",1,169,"_reduce_none",1,199,"_reduce_none",4,199,"_reduce_72",0,206,"_reduce_73",4,203,"_reduce_74",1,205,"_reduce_none",2,183,"_reduce_76",3,183,"_reduce_77",4,183,"_reduce_78",5,183,"_reduce_79",4,183,"_reduce_80",5,183,"_reduce_81",2,183,"_reduce_82",2,183,"_reduce_83",2,183,"_reduce_84",2,183,"_reduce_85",2,183,"_reduce_86",1,168,"_reduce_87",3,168,"_reduce_88",1,211,"_reduce_89",3,211,"_reduce_90",1,210,"_reduce_none",2,210,"_reduce_92",3,210,"_reduce_93",5,210,"_reduce_94",2,210,"_reduce_95",4,210,"_reduce_96",2,210,"_reduce_97",4,210,"_reduce_98",1,210,"_reduce_99",3,210,"_reduce_100",1,214,"_reduce_none",3,214,"_reduce_102",2,213,"_reduce_103",3,213,"_reduce_104",1,216,"_reduce_105",3,216,"_reduce_106",1,215,"_reduce_107",1,215,"_reduce_108",4,215,"_reduce_109",3,215,"_reduce_110",3,215,"_reduce_111",3,215,"_reduce_112",3,215,"_reduce_113",2,215,"_reduce_114",1,215,"_reduce_115",1,170,"_reduce_116",1,170,"_reduce_117",4,170,"_reduce_118",3,170,"_reduce_119",3,170,"_reduce_120",3,170,"_reduce_121",3,170,"_reduce_122",2,170,"_reduce_123",1,170,"_reduce_124",1,219,"_reduce_125",1,219,"_reduce_none",2,220,"_reduce_127",1,220,"_reduce_128",3,220,"_reduce_129",1,195,"_reduce_none",1,195,"_reduce_none",1,195,"_reduce_none",1,195,"_reduce_none",1,195,"_reduce_none",1,164,"_reduce_135",1,164,"_reduce_none",1,165,"_reduce_137",0,224,"_reduce_138",4,165,"_reduce_139",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,221,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",3,184,"_reduce_211",3,184,"_reduce_212",6,184,"_reduce_213",5,184,"_reduce_214",5,184,"_reduce_215",5,184,"_reduce_216",5,184,"_reduce_217",4,184,"_reduce_218",3,184,"_reduce_219",3,184,"_reduce_220",3,184,"_reduce_221",2,184,"_reduce_222",2,184,"_reduce_223",2,184,"_reduce_224",2,184,"_reduce_225",3,184,"_reduce_226",3,184,"_reduce_227",3,184,"_reduce_228",3,184,"_reduce_229",3,184,"_reduce_230",3,184,"_reduce_231",4,184,"_reduce_232",2,184,"_reduce_233",2,184,"_reduce_234",3,184,"_reduce_235",3,184,"_reduce_236",3,184,"_reduce_237",3,184,"_reduce_238",1,184,"_reduce_none",3,184,"_reduce_240",3,184,"_reduce_241",3,184,"_reduce_242",3,184,"_reduce_243",3,184,"_reduce_244",2,184,"_reduce_245",2,184,"_reduce_246",3,184,"_reduce_247",3,184,"_reduce_248",3,184,"_reduce_249",3,184,"_reduce_250",3,184,"_reduce_251",6,184,"_reduce_252",4,184,"_reduce_253",6,184,"_reduce_254",4,184,"_reduce_255",6,184,"_reduce_256",1,184,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",3,227,"_reduce_262",3,227,"_reduce_263",1,230,"_reduce_none",1,231,"_reduce_none",2,231,"_reduce_none",4,231,"_reduce_267",2,231,"_reduce_268",1,225,"_reduce_none",3,225,"_reduce_270",3,236,"_reduce_271",5,236,"_reduce_272",3,236,"_reduce_273",0,238,"_reduce_274",1,238,"_reduce_none",0,178,"_reduce_276",1,178,"_reduce_none",2,178,"_reduce_none",4,178,"_reduce_279",2,178,"_reduce_280",1,209,"_reduce_281",2,209,"_reduce_282",2,209,"_reduce_283",4,209,"_reduce_284",1,209,"_reduce_285",0,241,"_reduce_286",2,202,"_reduce_287",2,240,"_reduce_288",1,240,"_reduce_289",2,239,"_reduce_290",0,239,"_reduce_291",1,233,"_reduce_292",2,233,"_reduce_293",3,233,"_reduce_294",4,233,"_reduce_295",1,172,"_reduce_296",1,172,"_reduce_none",3,171,"_reduce_298",4,171,"_reduce_299",2,171,"_reduce_300",1,228,"_reduce_none",1,228,"_reduce_none",1,228,"_reduce_none",1,228,"_reduce_none",1,228,"_reduce_none",1,228,"_reduce_none",1,228,"_reduce_none",1,228,"_reduce_none",1,228,"_reduce_none",1,228,"_reduce_none",1,228,"_reduce_311",0,263,"_reduce_312",4,228,"_reduce_313",0,264,"_reduce_314",4,228,"_reduce_315",0,265,"_reduce_316",4,228,"_reduce_317",3,228,"_reduce_318",3,228,"_reduce_319",2,228,"_reduce_320",3,228,"_reduce_321",3,228,"_reduce_322",1,228,"_reduce_323",4,228,"_reduce_324",3,228,"_reduce_325",1,228,"_reduce_326",5,228,"_reduce_327",4,228,"_reduce_328",3,228,"_reduce_329",2,228,"_reduce_330",1,228,"_reduce_none",2,228,"_reduce_332",1,228,"_reduce_none",6,228,"_reduce_334",6,228,"_reduce_335",4,228,"_reduce_336",4,228,"_reduce_337",5,228,"_reduce_338",4,228,"_reduce_339",5,228,"_reduce_340",6,228,"_reduce_341",0,266,"_reduce_342",6,228,"_reduce_343",0,267,"_reduce_344",7,228,"_reduce_345",0,268,"_reduce_346",5,228,"_reduce_347",4,228,"_reduce_348",4,228,"_reduce_349",1,228,"_reduce_350",1,228,"_reduce_351",1,228,"_reduce_352",1,228,"_reduce_353",1,177,"_reduce_none",1,208,"_reduce_355",1,255,"_reduce_none",1,255,"_reduce_none",2,255,"_reduce_358",1,192,"_reduce_none",1,192,"_reduce_none",1,256,"_reduce_none",5,256,"_reduce_362",1,160,"_reduce_none",2,160,"_reduce_364",1,259,"_reduce_none",1,259,"_reduce_none",1,269,"_reduce_367",3,269,"_reduce_368",1,272,"_reduce_369",3,272,"_reduce_370",1,271,"_reduce_none",3,271,"_reduce_372",5,271,"_reduce_373",1,271,"_reduce_374",3,271,"_reduce_375",2,273,"_reduce_376",1,273,"_reduce_377",1,274,"_reduce_none",1,274,"_reduce_none",4,277,"_reduce_380",2,277,"_reduce_381",2,277,"_reduce_382",1,277,"_reduce_383",2,281,"_reduce_384",0,281,"_reduce_385",1,282,"_reduce_none",6,283,"_reduce_387",8,283,"_reduce_388",4,283,"_reduce_389",6,283,"_reduce_390",4,283,"_reduce_391",2,283,"_reduce_none",6,283,"_reduce_393",2,283,"_reduce_394",4,283,"_reduce_395",6,283,"_reduce_396",2,283,"_reduce_397",4,283,"_reduce_398",2,283,"_reduce_399",4,283,"_reduce_400",1,283,"_reduce_none",0,287,"_reduce_402",1,287,"_reduce_403",3,288,"_reduce_404",4,288,"_reduce_405",1,289,"_reduce_406",4,289,"_reduce_407",1,290,"_reduce_408",3,290,"_reduce_409",1,291,"_reduce_410",1,291,"_reduce_none",0,295,"_reduce_412",0,296,"_reduce_413",5,254,"_reduce_414",4,293,"_reduce_415",1,293,"_reduce_416",0,299,"_reduce_417",4,294,"_reduce_418",0,300,"_reduce_419",4,294,"_reduce_420",0,302,"_reduce_421",4,298,"_reduce_422",2,200,"_reduce_423",4,200,"_reduce_424",5,200,"_reduce_425",5,200,"_reduce_426",2,253,"_reduce_427",4,253,"_reduce_428",4,253,"_reduce_429",3,253,"_reduce_430",3,253,"_reduce_431",3,253,"_reduce_432",2,253,"_reduce_433",1,253,"_reduce_434",4,253,"_reduce_435",0,304,"_reduce_436",4,252,"_reduce_437",0,305,"_reduce_438",4,252,"_reduce_439",0,306,"_reduce_440",3,204,"_reduce_441",0,307,"_reduce_442",0,308,"_reduce_443",4,301,"_reduce_444",5,257,"_reduce_445",1,309,"_reduce_446",1,309,"_reduce_none",0,312,"_reduce_448",0,313,"_reduce_449",7,258,"_reduce_450",1,311,"_reduce_451",1,311,"_reduce_none",1,310,"_reduce_453",3,310,"_reduce_454",3,310,"_reduce_455",1,188,"_reduce_none",2,188,"_reduce_457",3,188,"_reduce_458",1,188,"_reduce_459",1,188,"_reduce_460",1,188,"_reduce_461",1,314,"_reduce_none",3,319,"_reduce_463",1,319,"_reduce_none",3,321,"_reduce_465",1,321,"_reduce_none",1,323,"_reduce_467",1,324,"_reduce_468",1,322,"_reduce_none",1,322,"_reduce_none",4,322,"_reduce_471",4,322,"_reduce_472",4,322,"_reduce_473",3,322,"_reduce_474",4,322,"_reduce_475",4,322,"_reduce_476",4,322,"_reduce_477",3,322,"_reduce_478",3,322,"_reduce_479",3,322,"_reduce_480",2,322,"_reduce_481",0,328,"_reduce_482",4,322,"_reduce_483",2,322,"_reduce_484",0,329,"_reduce_485",4,322,"_reduce_486",1,315,"_reduce_487",1,315,"_reduce_488",2,315,"_reduce_489",3,315,"_reduce_490",5,315,"_reduce_491",2,315,"_reduce_492",4,315,"_reduce_493",1,315,"_reduce_none",2,330,"_reduce_495",3,330,"_reduce_496",1,317,"_reduce_497",3,317,"_reduce_498",5,316,"_reduce_499",2,333,"_reduce_500",1,333,"_reduce_501",1,332,"_reduce_502",3,332,"_reduce_503",1,331,"_reduce_none",3,318,"_reduce_505",1,318,"_reduce_506",2,318,"_reduce_507",1,318,"_reduce_508",1,334,"_reduce_509",3,334,"_reduce_510",2,336,"_reduce_511",1,336,"_reduce_512",1,337,"_reduce_513",3,337,"_reduce_514",2,339,"_reduce_515",1,339,"_reduce_516",2,341,"_reduce_517",1,335,"_reduce_none",1,335,"_reduce_none",1,325,"_reduce_none",3,325,"_reduce_521",3,325,"_reduce_522",2,325,"_reduce_523",2,325,"_reduce_524",1,325,"_reduce_none",1,325,"_reduce_none",1,325,"_reduce_none",2,325,"_reduce_528",2,325,"_reduce_529",1,342,"_reduce_none",1,342,"_reduce_none",1,342,"_reduce_none",1,342,"_reduce_none",1,342,"_reduce_none",1,342,"_reduce_none",1,342,"_reduce_none",1,342,"_reduce_none",1,342,"_reduce_538",1,342,"_reduce_none",1,320,"_reduce_540",2,343,"_reduce_541",2,343,"_reduce_542",4,344,"_reduce_543",2,326,"_reduce_544",3,326,"_reduce_545",1,326,"_reduce_546",6,159,"_reduce_547",0,159,"_reduce_548",1,346,"_reduce_549",1,346,"_reduce_none",1,346,"_reduce_none",2,347,"_reduce_552",1,347,"_reduce_none",2,161,"_reduce_554",1,161,"_reduce_none",1,242,"_reduce_none",1,242,"_reduce_none",1,243,"_reduce_558",1,349,"_reduce_559",2,349,"_reduce_560",3,350,"_reduce_561",1,350,"_reduce_562",1,350,"_reduce_563",3,244,"_reduce_564",4,245,"_reduce_565",3,246,"_reduce_566",0,353,"_reduce_567",3,353,"_reduce_568",1,354,"_reduce_569",2,354,"_reduce_570",3,248,"_reduce_571",0,356,"_reduce_572",3,356,"_reduce_573",3,247,"_reduce_574",3,249,"_reduce_575",0,357,"_reduce_576",3,357,"_reduce_577",0,358,"_reduce_578",3,358,"_reduce_579",0,338,"_reduce_580",2,338,"_reduce_581",0,351,"_reduce_582",2,351,"_reduce_583",0,352,"_reduce_584",2,352,"_reduce_585",1,355,"_reduce_586",2,355,"_reduce_587",0,360,"_reduce_588",4,355,"_reduce_589",1,359,"_reduce_590",1,359,"_reduce_591",1,359,"_reduce_592",1,359,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,361,"_reduce_596",3,362,"_reduce_597",1,348,"_reduce_598",2,348,"_reduce_599",1,226,"_reduce_600",1,226,"_reduce_601",1,226,"_reduce_602",1,226,"_reduce_603",1,345,"_reduce_604",1,345,"_reduce_605",1,345,"_reduce_606",1,217,"_reduce_607",1,217,"_reduce_608",1,217,"_reduce_609",1,217,"_reduce_610",1,217,"_reduce_611",1,218,"_reduce_612",1,218,"_reduce_613",1,218,"_reduce_614",1,218,"_reduce_615",1,218,"_reduce_616",1,218,"_reduce_617",1,218,"_reduce_618",1,250,"_reduce_619",1,250,"_reduce_620",1,176,"_reduce_621",1,176,"_reduce_622",1,186,"_reduce_623",1,186,"_reduce_624",0,363,"_reduce_625",4,260,"_reduce_626",0,260,"_reduce_627",1,182,"_reduce_none",1,182,"_reduce_629",3,364,"_reduce_630",1,262,"_reduce_none",0,366,"_reduce_632",3,262,"_reduce_633",4,365,"_reduce_634",2,365,"_reduce_635",2,365,"_reduce_636",1,365,"_reduce_637",1,365,"_reduce_638",2,368,"_reduce_639",0,368,"_reduce_640",6,297,"_reduce_641",8,297,"_reduce_642",4,297,"_reduce_643",6,297,"_reduce_644",4,297,"_reduce_645",6,297,"_reduce_646",2,297,"_reduce_647",4,297,"_reduce_648",6,297,"_reduce_649",2,297,"_reduce_650",4,297,"_reduce_651",2,297,"_reduce_652",4,297,"_reduce_653",1,297,"_reduce_654",0,297,"_reduce_655",1,237,"_reduce_656",1,292,"_reduce_657",1,292,"_reduce_658",1,292,"_reduce_659",1,292,"_reduce_660",1,270,"_reduce_none",1,270,"_reduce_662",1,370,"_reduce_663",1,371,"_reduce_664",3,371,"_reduce_665",1,284,"_reduce_666",3,284,"_reduce_667",1,372,"_reduce_668",2,373,"_reduce_669",1,373,"_reduce_670",2,374,"_reduce_671",1,374,"_reduce_672",1,278,"_reduce_673",3,278,"_reduce_674",1,367,"_reduce_675",3,367,"_reduce_676",1,340,"_reduce_none",1,340,"_reduce_none",2,276,"_reduce_679",2,275,"_reduce_680",1,275,"_reduce_681",3,375,"_reduce_682",3,376,"_reduce_683",1,285,"_reduce_684",3,285,"_reduce_685",1,369,"_reduce_686",3,369,"_reduce_687",1,377,"_reduce_none",1,377,"_reduce_none",2,286,"_reduce_690",1,286,"_reduce_691",1,378,"_reduce_none",1,378,"_reduce_none",2,280,"_reduce_694",1,280,"_reduce_695",2,279,"_reduce_696",0,279,"_reduce_697",1,196,"_reduce_none",3,196,"_reduce_699",0,251,"_reduce_700",2,251,"_reduce_none",1,235,"_reduce_702",3,235,"_reduce_703",3,379,"_reduce_704",2,379,"_reduce_705",1,379,"_reduce_706",4,379,"_reduce_707",2,379,"_reduce_708",1,207,"_reduce_none",1,207,"_reduce_none",1,207,"_reduce_none",1,201,"_reduce_none",1,201,"_reduce_none",1,201,"_reduce_none",1,201,"_reduce_none",1,303,"_reduce_none",1,303,"_reduce_none",1,303,"_reduce_none",1,197,"_reduce_none",1,197,"_reduce_none",1,180,"_reduce_721",1,180,"_reduce_722",0,152,"_reduce_none",1,152,"_reduce_none",0,187,"_reduce_none",1,187,"_reduce_none",2,212,"_reduce_727",2,179,"_reduce_728",2,327,"_reduce_729",0,234,"_reduce_none",1,234,"_reduce_none",1,234,"_reduce_none",1,261,"_reduce_733",1,261,"_reduce_none",1,154,"_reduce_none",2,154,"_reduce_none",0,232,"_reduce_737"],738,1231,racc_token_table=$hash(!1,0,"error",1,"kCLASS",2,"kMODULE",3,"kDEF",4,"kUNDEF",5,"kBEGIN",6,"kRESCUE",7,"kENSURE",8,"kEND",9,"kIF",10,"kUNLESS",11,"kTHEN",12,"kELSIF",13,"kELSE",14,"kCASE",15,"kWHEN",16,"kWHILE",17,"kUNTIL",18,"kFOR",19,"kBREAK",20,"kNEXT",21,"kREDO",22,"kRETRY",23,"kIN",24,"kDO",25,"kDO_COND",26,"kDO_BLOCK",27,"kDO_LAMBDA",28,"kRETURN",29,"kYIELD",30,"kSUPER",31,"kSELF",32,"kNIL",33,"kTRUE",34,"kFALSE",35,"kAND",36,"kOR",37,"kNOT",38,"kIF_MOD",39,"kUNLESS_MOD",40,"kWHILE_MOD",41,"kUNTIL_MOD",42,"kRESCUE_MOD",43,"kALIAS",44,"kDEFINED",45,"klBEGIN",46,"klEND",47,"k__LINE__",48,"k__FILE__",49,"k__ENCODING__",50,"tIDENTIFIER",51,"tFID",52,"tGVAR",53,"tIVAR",54,"tCONSTANT",55,"tLABEL",56,"tCVAR",57,"tNTH_REF",58,"tBACK_REF",59,"tSTRING_CONTENT",60,"tINTEGER",61,"tFLOAT",62,"tUPLUS",63,"tUMINUS",64,"tUNARY_NUM",65,"tPOW",66,"tCMP",67,"tEQ",68,"tEQQ",69,"tNEQ",70,"tGEQ",71,"tLEQ",72,"tANDOP",73,"tOROP",74,"tMATCH",75,"tNMATCH",76,"tDOT",77,"tDOT2",78,"tDOT3",79,"tAREF",80,"tASET",81,"tLSHFT",82,"tRSHFT",83,"tCOLON2",84,"tCOLON3",85,"tOP_ASGN",86,"tASSOC",87,"tLPAREN",88,"tLPAREN2",89,"tRPAREN",90,"tLPAREN_ARG",91,"tLBRACK",92,"tLBRACK2",93,"tRBRACK",94,"tLBRACE",95,"tLBRACE_ARG",96,"tSTAR",97,"tSTAR2",98,"tAMPER",99,"tAMPER2",100,"tTILDE",101,"tPERCENT",102,"tDIVIDE",103,"tDSTAR",104,"tPLUS",105,"tMINUS",106,"tLT",107,"tGT",108,"tPIPE",109,"tBANG",110,"tCARET",111,"tLCURLY",112,"tRCURLY",113,"tBACK_REF2",114,"tSYMBEG",115,"tSTRING_BEG",116,"tXSTRING_BEG",117,"tREGEXP_BEG",118,"tREGEXP_OPT",119,"tWORDS_BEG",120,"tQWORDS_BEG",121,"tSYMBOLS_BEG",122,"tQSYMBOLS_BEG",123,"tSTRING_DBEG",124,"tSTRING_DVAR",125,"tSTRING_END",126,"tSTRING_DEND",127,"tSTRING",128,"tSYMBOL",129,"tNL",130,"tEH",131,"tCOLON",132,"tCOMMA",133,"tSPACE",134,"tSEMI",135,"tLAMBDA",136,"tLAMBEG",137,"tCHARACTER",138,"tRATIONAL",139,"tIMAGINARY",140,"tLABEL_END",141,"tANDDOT",142,"tBDOT2",143,"tBDOT3",144,"tEQL",145,"tLOWEST",146),147,!0,$const_set($nesting[0],"Racc_arg",[racc_action_table,racc_action_check,racc_action_default,racc_action_pointer,racc_goto_table,racc_goto_check,racc_goto_default,racc_goto_pointer,147,racc_reduce_table,racc_token_table,1231,738,true]),$const_set($nesting[0],"Racc_token_to_s_table",["$end","error","kCLASS","kMODULE","kDEF","kUNDEF","kBEGIN","kRESCUE","kENSURE","kEND","kIF","kUNLESS","kTHEN","kELSIF","kELSE","kCASE","kWHEN","kWHILE","kUNTIL","kFOR","kBREAK","kNEXT","kREDO","kRETRY","kIN","kDO","kDO_COND","kDO_BLOCK","kDO_LAMBDA","kRETURN","kYIELD","kSUPER","kSELF","kNIL","kTRUE","kFALSE","kAND","kOR","kNOT","kIF_MOD","kUNLESS_MOD","kWHILE_MOD","kUNTIL_MOD","kRESCUE_MOD","kALIAS","kDEFINED","klBEGIN","klEND","k__LINE__","k__FILE__","k__ENCODING__","tIDENTIFIER","tFID","tGVAR","tIVAR","tCONSTANT","tLABEL","tCVAR","tNTH_REF","tBACK_REF","tSTRING_CONTENT","tINTEGER","tFLOAT","tUPLUS","tUMINUS","tUNARY_NUM","tPOW","tCMP","tEQ","tEQQ","tNEQ","tGEQ","tLEQ","tANDOP","tOROP","tMATCH","tNMATCH","tDOT","tDOT2","tDOT3","tAREF","tASET","tLSHFT","tRSHFT","tCOLON2","tCOLON3","tOP_ASGN","tASSOC","tLPAREN","tLPAREN2","tRPAREN","tLPAREN_ARG","tLBRACK","tLBRACK2","tRBRACK","tLBRACE","tLBRACE_ARG","tSTAR","tSTAR2","tAMPER","tAMPER2","tTILDE","tPERCENT","tDIVIDE","tDSTAR","tPLUS","tMINUS","tLT","tGT","tPIPE","tBANG","tCARET","tLCURLY","tRCURLY","tBACK_REF2","tSYMBEG","tSTRING_BEG","tXSTRING_BEG","tREGEXP_BEG","tREGEXP_OPT","tWORDS_BEG","tQWORDS_BEG","tSYMBOLS_BEG","tQSYMBOLS_BEG","tSTRING_DBEG","tSTRING_DVAR","tSTRING_END","tSTRING_DEND","tSTRING","tSYMBOL","tNL","tEH","tCOLON","tCOMMA","tSPACE","tSEMI","tLAMBDA","tLAMBEG","tCHARACTER","tRATIONAL","tIMAGINARY","tLABEL_END","tANDDOT","tBDOT2","tBDOT3","tEQL","tLOWEST","$start","program","top_compstmt","@1","top_stmts","opt_terms","top_stmt","terms","stmt","begin_block","bodystmt","compstmt","opt_rescue","opt_else","opt_ensure","stmts","stmt_or_begin","fitem","undef_list","expr_value","command_asgn","mlhs","command_call","lhs","mrhs","mrhs_arg","expr","@2","command_rhs","var_lhs","primary_value","opt_call_args","rbracket","call_op","defn_head","f_opt_paren_args","command","arg","defs_head","backref","opt_nl","p_top_expr_body","@3","@4","expr_value_do","do","def_name","@5","fname","singleton","dot_or_colon","@6","block_command","block_call","operation2","command_args","cmd_brace_block","brace_body","fcall","@7","operation","k_return","call_args","mlhs_basic","mlhs_inner","rparen","mlhs_head","mlhs_item","mlhs_node","mlhs_post","user_variable","keyword_variable","cname","cpath","op","reswords","symbol","@8","arg_rhs","simple_numeric","rel_expr","primary","relop","arg_value","aref_args","none","args","trailer","assocs","paren_args","args_forward","opt_paren_args","opt_block_arg","block_arg","@9","literal","strings","xstring","regexp","words","qwords","symbols","qsymbols","var_ref","assoc_list","brace_block","method_call","lambda","then","if_tail","case_body","p_case_body","for_var","superclass","term","f_arglist","@10","@11","@12","@13","@14","@15","f_marg","f_norm_arg","f_margs","f_marg_list","f_rest_marg","f_any_kwrest","f_kwrest","f_no_kwarg","block_args_tail","f_block_kwarg","opt_f_block_arg","f_block_arg","opt_block_args_tail","excessed_comma","block_param","f_arg","f_block_optarg","f_rest_arg","opt_block_param","block_param_def","opt_bv_decl","bv_decls","bvar","f_bad_arg","f_larglist","lambda_body","@16","@17","f_args","do_block","@18","@19","do_body","@20","operation3","@21","@22","@23","@24","@25","cases","p_top_expr","p_cases","@26","@27","p_expr","p_args","p_find","p_args_tail","p_kwargs","p_as","p_variable","p_alt","p_expr_basic","p_lparen","p_lbracket","p_value","p_const","rbrace","@28","@29","p_args_head","p_arg","p_args_post","p_rest","p_kwarg","p_any_kwrest","p_kw","p_kw_label","string_contents","p_kwrest","kwrest_mark","p_kwnorest","p_primitive","p_var_ref","p_expr_ref","nonlocal_var","exc_list","exc_var","numeric","string","string1","xstring_contents","regexp_contents","word_list","word","string_content","symbol_list","qword_list","qsym_list","string_dvar","@30","ssym","dsym","@31","f_paren_args","args_tail","@32","f_kwarg","opt_args_tail","f_optarg","f_arg_asgn","f_arg_item","f_label","f_kw","f_block_kw","f_opt","f_block_opt","restarg_mark","blkarg_mark","assoc"]),$const_set($nesting[0],"Racc_debug_parser",!1),$def(self,"$_reduce_1",(function(val,_values,result){return this.current_arg_stack.$push(nil),this.max_numparam_stack.$push(),result}),3),$def(self,"$_reduce_2",(function(val,_values,result){return result=val["$[]"](1),this.current_arg_stack.$pop(),this.max_numparam_stack.$pop(),result}),3),$def(self,"$_reduce_3",(function(val,_values,result){return this.builder.$compstmt(val["$[]"](0))}),3),$def(self,"$_reduce_4",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_5",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_6",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_7",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_9",(function(val,_values,result){return $send(this.builder,"preexe",[val["$[]"](0)].concat($to_a(val["$[]"](1))))}),3),$def(self,"$_reduce_10",(function(val,_values,result){return val}),3),$def(self,"$_reduce_11",(function(val,_values,result){var $a,$b,else_,ensure_t,ensure_,rescue_bodies=nil,else_t=nil;return rescue_bodies=val["$[]"](1),$b=val["$[]"](2),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],$b=val["$[]"](3),ensure_t=null==($a=$to_ary($b))[0]?nil:$a[0],ensure_=null==$a[1]?nil:$a[1],$truthy(rescue_bodies["$empty?"]())&&$not(else_t["$nil?"]())&&this.$diagnostic("error","useless_else",nil,else_t),this.builder.$begin_body(val["$[]"](0),rescue_bodies,else_t,else_,ensure_t,ensure_)}),3),$def(self,"$_reduce_12",(function(val,_values,result){return this.builder.$compstmt(val["$[]"](0))}),3),$def(self,"$_reduce_13",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_14",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_15",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_16",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_18",(function(val,_values,result){return this.$diagnostic("error","begin_in_method",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_19",(function(val,_values,result){var $writer;return $writer=["expr_fname"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_20",(function(val,_values,result){return this.builder.$alias(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_21",(function(val,_values,result){return this.builder.$alias(val["$[]"](0),this.builder.$gvar(val["$[]"](1)),this.builder.$gvar(val["$[]"](2)))}),3),$def(self,"$_reduce_22",(function(val,_values,result){return this.builder.$alias(val["$[]"](0),this.builder.$gvar(val["$[]"](1)),this.builder.$back_ref(val["$[]"](2)))}),3),$def(self,"$_reduce_23",(function(val,_values,result){return this.$diagnostic("error","nth_ref_alias",nil,val["$[]"](2)),result}),3),$def(self,"$_reduce_24",(function(val,_values,result){return this.builder.$undef_method(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_25",(function(val,_values,result){return this.builder.$condition_mod(val["$[]"](0),nil,val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_26",(function(val,_values,result){return this.builder.$condition_mod(nil,val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_27",(function(val,_values,result){return this.builder.$loop_mod("while",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_28",(function(val,_values,result){return this.builder.$loop_mod("until",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_29",(function(val,_values,result){var rescue_body;return rescue_body=this.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2)),this.builder.$begin_body(val["$[]"](0),[rescue_body])}),3),$def(self,"$_reduce_30",(function(val,_values,result){return this.builder.$postexe(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_32",(function(val,_values,result){return this.builder.$multi_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_33",(function(val,_values,result){return this.builder.$assign(val["$[]"](0),val["$[]"](1),this.builder.$array(nil,val["$[]"](2),nil))}),3),$def(self,"$_reduce_34",(function(val,_values,result){var rescue_body,begin_body;return rescue_body=this.builder.$rescue_body(val["$[]"](3),nil,nil,nil,nil,val["$[]"](4)),begin_body=this.builder.$begin_body(val["$[]"](2),[rescue_body]),this.builder.$multi_assign(val["$[]"](0),val["$[]"](1),begin_body)}),3),$def(self,"$_reduce_35",(function(val,_values,result){return this.builder.$multi_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_37",(function(val,_values,result){return this.builder.$assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_38",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_39",(function(val,_values,result){return this.builder.$op_assign(this.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3)),val["$[]"](4),val["$[]"](5))}),3),$def(self,"$_reduce_40",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_41",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_42",(function(val,_values,result){var const$;return const$=this.builder.$const_op_assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))),this.builder.$op_assign(const$,val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_43",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_44",(function(val,_values,result){var $a,$b,name_t;return $b=val["$[]"](0),null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==$a[1]?nil:$a[1],this.$endless_method_name(name_t),result=$send(this.builder,"def_endless_method",$to_a(val["$[]"](0)).concat([val["$[]"](1),val["$[]"](2),val["$[]"](3)])),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),this.current_arg_stack.$pop(),result}),3),$def(self,"$_reduce_45",(function(val,_values,result){var $a,$b,name_t,rescue_body,method_body;return $b=val["$[]"](0),null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==$a[1]?nil:$a[1],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=$send(this.builder,"def_endless_method",$to_a(val["$[]"](0)).concat([val["$[]"](1),val["$[]"](2),method_body])),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),this.current_arg_stack.$pop(),result}),3),$def(self,"$_reduce_46",(function(val,_values,result){var $a,$b,name_t;return $b=val["$[]"](0),null==($a=$to_ary($b))[0]?nil:$a[0],null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],name_t=null==$a[3]?nil:$a[3],this.$endless_method_name(name_t),result=$send(this.builder,"def_endless_singleton",$to_a(val["$[]"](0)).concat([val["$[]"](1),val["$[]"](2),val["$[]"](3)])),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),this.current_arg_stack.$pop(),result}),3),$def(self,"$_reduce_47",(function(val,_values,result){var $a,$b,name_t,rescue_body,method_body;return $b=val["$[]"](0),null==($a=$to_ary($b))[0]?nil:$a[0],null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],name_t=null==$a[3]?nil:$a[3],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=$send(this.builder,"def_endless_singleton",$to_a(val["$[]"](0)).concat([val["$[]"](1),val["$[]"](2),method_body])),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),this.current_arg_stack.$pop(),result}),3),$def(self,"$_reduce_48",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2)),result}),3),$def(self,"$_reduce_50",(function(val,_values,result){var rescue_body;return rescue_body=this.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2)),this.builder.$begin_body(val["$[]"](0),[rescue_body])}),3),$def(self,"$_reduce_53",(function(val,_values,result){return this.builder.$logical_op("and",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_54",(function(val,_values,result){return this.builder.$logical_op("or",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_55",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),nil,val["$[]"](2),nil)}),3),$def(self,"$_reduce_56",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_57",(function(val,_values,result){var $writer=nil;return $writer=["expr_beg"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.lexer,"command_start=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.pattern_variables.$push(),result=this.lexer.$in_kwarg(),$writer=[!0],$send(this.lexer,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_58",(function(val,_values,result){var $writer;return this.pattern_variables.$pop(),$writer=[val["$[]"](2)],$send(this.lexer,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$match_pattern(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_59",(function(val,_values,result){var $writer=nil;return $writer=["expr_beg"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.lexer,"command_start=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.pattern_variables.$push(),result=this.lexer.$in_kwarg(),$writer=[!0],$send(this.lexer,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_60",(function(val,_values,result){var $writer;return this.pattern_variables.$pop(),$writer=[val["$[]"](2)],$send(this.lexer,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$match_pattern_p(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_63",(function(val,_values,result){return this.lexer.$cond().$push(!0),result}),3),$def(self,"$_reduce_64",(function(val,_values,result){return this.lexer.$cond().$pop(),[val["$[]"](1),val["$[]"](2)]}),3),$def(self,"$_reduce_65",(function(val,_values,result){return this.static_env.$extend_static(),this.lexer.$cmdarg().$push(!1),this.lexer.$cond().$push(!1),this.current_arg_stack.$push(nil),val["$[]"](0)}),3),$def(self,"$_reduce_66",(function(val,_values,result){return this.context.$push("def"),[val["$[]"](0),val["$[]"](1)]}),3),$def(self,"$_reduce_67",(function(val,_values,result){var $writer;return $writer=["expr_fname"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_68",(function(val,_values,result){return this.context.$push("defs"),[val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](4)]}),3),$def(self,"$_reduce_72",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil)}),3),$def(self,"$_reduce_73",(function(val,_values,result){return this.context.$push("block"),result}),3),$def(self,"$_reduce_74",(function(val,_values,result){return result=[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)]),this.context.$pop(),result}),3),$def(self,"$_reduce_76",(function(val,_values,result){return this.builder.$call_method(nil,nil,val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_77",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(nil,nil,val["$[]"](0),nil,val["$[]"](1),nil),$b=val["$[]"](2),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_78",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil)}),3),$def(self,"$_reduce_79",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_80",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil)}),3),$def(self,"$_reduce_81",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_82",(function(val,_values,result){return this.builder.$keyword_cmd("super",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_83",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_84",(function(val,_values,result){return this.builder.$keyword_cmd("return",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_85",(function(val,_values,result){return this.builder.$keyword_cmd("break",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_86",(function(val,_values,result){return this.builder.$keyword_cmd("next",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_87",(function(val,_values,result){return this.builder.$multi_lhs(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_88",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_89",(function(val,_values,result){return this.builder.$multi_lhs(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_90",(function(val,_values,result){return this.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_92",(function(val,_values,result){return val["$[]"](0).$push(val["$[]"](1))}),3),$def(self,"$_reduce_93",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1),val["$[]"](2)))}),3),$def(self,"$_reduce_94",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1),val["$[]"](2))).$concat(val["$[]"](4))}),3),$def(self,"$_reduce_95",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1)))}),3),$def(self,"$_reduce_96",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1))).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_97",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_98",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))].concat($to_a(val["$[]"](3)))}),3),$def(self,"$_reduce_99",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0))]}),3),$def(self,"$_reduce_100",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0))].concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_102",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_103",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_104",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_105",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_106",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_107",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_108",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_109",(function(val,_values,result){return this.builder.$index_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_110",(function(val,_values,result){return $eqeq(val["$[]"](1)["$[]"](0),"anddot")&&this.$diagnostic("error","csend_in_lhs_of_masgn",nil,val["$[]"](1)),this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_111",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_112",(function(val,_values,result){return $eqeq(val["$[]"](1)["$[]"](0),"anddot")&&this.$diagnostic("error","csend_in_lhs_of_masgn",nil,val["$[]"](1)),this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_113",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2)))}),3),$def(self,"$_reduce_114",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_global(val["$[]"](0),val["$[]"](1)))}),3),$def(self,"$_reduce_115",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_116",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_117",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_118",(function(val,_values,result){return this.builder.$index_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_119",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_120",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_121",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_122",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2)))}),3),$def(self,"$_reduce_123",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_global(val["$[]"](0),val["$[]"](1)))}),3),$def(self,"$_reduce_124",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_125",(function(val,_values,result){return this.$diagnostic("error","module_name_const",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_127",(function(val,_values,result){return this.builder.$const_global(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_128",(function(val,_values,result){return this.builder.$const(val["$[]"](0))}),3),$def(self,"$_reduce_129",(function(val,_values,result){return this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_135",(function(val,_values,result){return this.builder.$symbol_internal(val["$[]"](0))}),3),$def(self,"$_reduce_137",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_138",(function(val,_values,result){var $writer;return $writer=["expr_fname"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_139",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](3))}),3),$def(self,"$_reduce_211",(function(val,_values,result){return this.builder.$assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_212",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_213",(function(val,_values,result){return this.builder.$op_assign(this.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3)),val["$[]"](4),val["$[]"](5))}),3),$def(self,"$_reduce_214",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_215",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_216",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_217",(function(val,_values,result){var const$;return const$=this.builder.$const_op_assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))),this.builder.$op_assign(const$,val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_218",(function(val,_values,result){var const$;return const$=this.builder.$const_op_assignable(this.builder.$const_global(val["$[]"](0),val["$[]"](1))),this.builder.$op_assign(const$,val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_219",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_220",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_221",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_222",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_223",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_224",(function(val,_values,result){return this.builder.$range_inclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_225",(function(val,_values,result){return this.builder.$range_exclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_226",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_227",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_228",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_229",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_230",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_231",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_232",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),this.builder.$binary_op(val["$[]"](1),val["$[]"](2),val["$[]"](3)))}),3),$def(self,"$_reduce_233",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_234",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_235",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_236",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_237",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_238",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_240",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_241",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_242",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_243",(function(val,_values,result){return this.builder.$match_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_244",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_245",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_246",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_247",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_248",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_249",(function(val,_values,result){return this.builder.$logical_op("and",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_250",(function(val,_values,result){return this.builder.$logical_op("or",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_251",(function(val,_values,result){return this.builder.$keyword_cmd("defined?",val["$[]"](0),nil,[val["$[]"](2)],nil)}),3),$def(self,"$_reduce_252",(function(val,_values,result){return this.builder.$ternary(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](4),val["$[]"](5))}),3),$def(self,"$_reduce_253",(function(val,_values,result){var $a,$b,name_t;return $b=val["$[]"](0),null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==$a[1]?nil:$a[1],this.$endless_method_name(name_t),result=$send(this.builder,"def_endless_method",$to_a(val["$[]"](0)).concat([val["$[]"](1),val["$[]"](2),val["$[]"](3)])),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),this.current_arg_stack.$pop(),result}),3),$def(self,"$_reduce_254",(function(val,_values,result){var $a,$b,name_t,rescue_body,method_body;return $b=val["$[]"](0),null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==$a[1]?nil:$a[1],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=$send(this.builder,"def_endless_method",$to_a(val["$[]"](0)).concat([val["$[]"](1),val["$[]"](2),method_body])),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),this.current_arg_stack.$pop(),result}),3),$def(self,"$_reduce_255",(function(val,_values,result){var $a,$b,name_t;return $b=val["$[]"](0),null==($a=$to_ary($b))[0]?nil:$a[0],null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],name_t=null==$a[3]?nil:$a[3],this.$endless_method_name(name_t),result=$send(this.builder,"def_endless_singleton",$to_a(val["$[]"](0)).concat([val["$[]"](1),val["$[]"](2),val["$[]"](3)])),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),this.current_arg_stack.$pop(),result}),3),$def(self,"$_reduce_256",(function(val,_values,result){var $a,$b,name_t,rescue_body,method_body;return $b=val["$[]"](0),null==($a=$to_ary($b))[0]?nil:$a[0],null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],name_t=null==$a[3]?nil:$a[3],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=$send(this.builder,"def_endless_singleton",$to_a(val["$[]"](0)).concat([val["$[]"](1),val["$[]"](2),method_body])),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),this.current_arg_stack.$pop(),result}),3),$def(self,"$_reduce_262",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_263",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_267",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$associate(nil,val["$[]"](2),nil))}),3),$def(self,"$_reduce_268",(function(val,_values,result){return[this.builder.$associate(nil,val["$[]"](0),nil)]}),3),$def(self,"$_reduce_270",(function(val,_values,result){var rescue_body;return rescue_body=this.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2)),this.builder.$begin_body(val["$[]"](0),[rescue_body])}),3),$def(self,"$_reduce_271",(function(val,_values,result){return val}),3),$def(self,"$_reduce_272",(function(val,_values,result){return $truthy(this.static_env["$declared_forward_args?"]())||this.$diagnostic("error","unexpected_token",$hash2(["token"],{token:"tBDOT3"}),val["$[]"](3)),[val["$[]"](0),[].concat($to_a(val["$[]"](1))).concat([this.builder.$forwarded_args(val["$[]"](3))]),val["$[]"](4)]}),3),$def(self,"$_reduce_273",(function(val,_values,result){return $truthy(this.static_env["$declared_forward_args?"]())||this.$diagnostic("error","unexpected_token",$hash2(["token"],{token:"tBDOT3"}),val["$[]"](1)),[val["$[]"](0),[this.builder.$forwarded_args(val["$[]"](1))],val["$[]"](2)]}),3),$def(self,"$_reduce_274",(function(val,_values,result){return[nil,[],nil]}),3),$def(self,"$_reduce_276",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_279",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$associate(nil,val["$[]"](2),nil))}),3),$def(self,"$_reduce_280",(function(val,_values,result){return[this.builder.$associate(nil,val["$[]"](0),nil)]}),3),$def(self,"$_reduce_281",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_282",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_283",(function(val,_values,result){return(result=[this.builder.$associate(nil,val["$[]"](0),nil)]).$concat(val["$[]"](1)),result}),3),$def(self,"$_reduce_284",(function(val,_values,result){var assocs;return assocs=this.builder.$associate(nil,val["$[]"](2),nil),(result=val["$[]"](0)["$<<"](assocs)).$concat(val["$[]"](3)),result}),3),$def(self,"$_reduce_285",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_286",(function(val,_values,result){var lookahead,$ret_or_1,last_token=nil,top=nil;return last_token=this.last_token["$[]"](0),lookahead=$truthy($ret_or_1=last_token["$=="]("tLBRACK"))?$ret_or_1:last_token["$=="]("tLPAREN_ARG"),$truthy(lookahead)?(top=this.lexer.$cmdarg().$pop(),this.lexer.$cmdarg().$push(!0),this.lexer.$cmdarg().$push(top)):this.lexer.$cmdarg().$push(!0),result}),3),$def(self,"$_reduce_287",(function(val,_values,result){var lookahead,top=nil;return lookahead=this.last_token["$[]"](0)["$=="]("tLBRACE_ARG"),$truthy(lookahead)?(top=this.lexer.$cmdarg().$pop(),this.lexer.$cmdarg().$pop(),this.lexer.$cmdarg().$push(top)):this.lexer.$cmdarg().$pop(),val["$[]"](1)}),3),$def(self,"$_reduce_288",(function(val,_values,result){return this.builder.$block_pass(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_289",(function(val,_values,result){return $not(this.static_env["$declared_anonymous_blockarg?"]())&&this.$diagnostic("error","no_anonymous_blockarg",nil,val["$[]"](0)),this.builder.$block_pass(val["$[]"](0),nil)}),3),$def(self,"$_reduce_290",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_291",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_292",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_293",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_294",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_295",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$splat(val["$[]"](2),val["$[]"](3)))}),3),$def(self,"$_reduce_296",(function(val,_values,result){return this.builder.$array(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_298",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_299",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$splat(val["$[]"](2),val["$[]"](3)))}),3),$def(self,"$_reduce_300",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_311",(function(val,_values,result){return this.builder.$call_method(nil,nil,val["$[]"](0))}),3),$def(self,"$_reduce_312",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),result}),3),$def(self,"$_reduce_313",(function(val,_values,result){return this.lexer.$cmdarg().$pop(),this.builder.$begin_keyword(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_314",(function(val,_values,result){var $writer;return $writer=["expr_endarg"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_315",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_316",(function(val,_values,result){var $writer;return $writer=["expr_endarg"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_317",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),nil,val["$[]"](3))}),3),$def(self,"$_reduce_318",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_319",(function(val,_values,result){return this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_320",(function(val,_values,result){return this.builder.$const_global(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_321",(function(val,_values,result){return this.builder.$array(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_322",(function(val,_values,result){return this.builder.$associate(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_323",(function(val,_values,result){return this.builder.$keyword_cmd("return",val["$[]"](0))}),3),$def(self,"$_reduce_324",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_325",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0),val["$[]"](1),[],val["$[]"](2))}),3),$def(self,"$_reduce_326",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0))}),3),$def(self,"$_reduce_327",(function(val,_values,result){return this.builder.$keyword_cmd("defined?",val["$[]"](0),val["$[]"](2),[val["$[]"](3)],val["$[]"](4))}),3),$def(self,"$_reduce_328",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_329",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),val["$[]"](1),nil,val["$[]"](2))}),3),$def(self,"$_reduce_330",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(nil,nil,val["$[]"](0)),$b=val["$[]"](1),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_332",(function(val,_values,result){var $a,$b,begin_t,args,body,end_t;return $b=val["$[]"](1),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(val["$[]"](0),begin_t,args,body,end_t)}),3),$def(self,"$_reduce_334",(function(val,_values,result){var $a,$b,else_t,else_;return $b=val["$[]"](4),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],this.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3),else_t,else_,val["$[]"](5))}),3),$def(self,"$_reduce_335",(function(val,_values,result){var $a,$b,else_t,else_;return $b=val["$[]"](4),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],this.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),else_,else_t,val["$[]"](3),val["$[]"](5))}),3),$def(self,"$_reduce_336",(function(val,_values,result){return $send(this.builder,"loop",["while",val["$[]"](0)].concat($to_a(val["$[]"](1))).concat([val["$[]"](2),val["$[]"](3)]))}),3),$def(self,"$_reduce_337",(function(val,_values,result){return $send(this.builder,"loop",["until",val["$[]"](0)].concat($to_a(val["$[]"](1))).concat([val["$[]"](2),val["$[]"](3)]))}),3),$def(self,"$_reduce_338",(function(val,_values,result){var $a,$b,$c,when_bodies,else_t,else_body;return $b=($b=($a=[].concat($to_a(val["$[]"](3)))).length-1)<0?0:$b,when_bodies=$slice.call($a,0,$b),else_t=null==($c=$to_ary(null==$a[$b]?nil:$a[$b]))[0]?nil:$c[0],else_body=null==$c[1]?nil:$c[1],this.builder.$case(val["$[]"](0),val["$[]"](1),when_bodies,else_t,else_body,val["$[]"](4))}),3),$def(self,"$_reduce_339",(function(val,_values,result){var $a,$b,$c,when_bodies,else_t,else_body;return $b=($b=($a=[].concat($to_a(val["$[]"](2)))).length-1)<0?0:$b,when_bodies=$slice.call($a,0,$b),else_t=null==($c=$to_ary(null==$a[$b]?nil:$a[$b]))[0]?nil:$c[0],else_body=null==$c[1]?nil:$c[1],this.builder.$case(val["$[]"](0),nil,when_bodies,else_t,else_body,val["$[]"](3))}),3),$def(self,"$_reduce_340",(function(val,_values,result){var $a,$b,$c,in_bodies,else_t,else_body;return $b=($b=($a=[].concat($to_a(val["$[]"](3)))).length-1)<0?0:$b,in_bodies=$slice.call($a,0,$b),else_t=null==($c=$to_ary(null==$a[$b]?nil:$a[$b]))[0]?nil:$c[0],else_body=null==$c[1]?nil:$c[1],this.builder.$case_match(val["$[]"](0),val["$[]"](1),in_bodies,else_t,else_body,val["$[]"](4))}),3),$def(self,"$_reduce_341",(function(val,_values,result){return $send(this.builder,"for",[val["$[]"](0),val["$[]"](1),val["$[]"](2)].concat($to_a(val["$[]"](3))).concat([val["$[]"](4),val["$[]"](5)]))}),3),$def(self,"$_reduce_342",(function(val,_values,result){return this.static_env.$extend_static(),this.lexer.$cmdarg().$push(!1),this.lexer.$cond().$push(!1),this.context.$push("class"),result}),3),$def(self,"$_reduce_343",(function(val,_values,result){var $a,$b,lt_t,superclass;return $truthy(this.context["$class_definition_allowed?"]())||this.$diagnostic("error","class_in_def",nil,val["$[]"](0)),$b=val["$[]"](2),lt_t=null==($a=$to_ary($b))[0]?nil:$a[0],superclass=null==$a[1]?nil:$a[1],result=this.builder.$def_class(val["$[]"](0),val["$[]"](1),lt_t,superclass,val["$[]"](4),val["$[]"](5)),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),result}),3),$def(self,"$_reduce_344",(function(val,_values,result){return this.static_env.$extend_static(),this.lexer.$cmdarg().$push(!1),this.lexer.$cond().$push(!1),this.context.$push("sclass"),result}),3),$def(self,"$_reduce_345",(function(val,_values,result){return result=this.builder.$def_sclass(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](5),val["$[]"](6)),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),result}),3),$def(self,"$_reduce_346",(function(val,_values,result){return this.static_env.$extend_static(),this.lexer.$cmdarg().$push(!1),this.context.$push("module"),result}),3),$def(self,"$_reduce_347",(function(val,_values,result){return $truthy(this.context["$module_definition_allowed?"]())||this.$diagnostic("error","module_in_def",nil,val["$[]"](0)),result=this.builder.$def_module(val["$[]"](0),val["$[]"](1),val["$[]"](3),val["$[]"](4)),this.lexer.$cmdarg().$pop(),this.static_env.$unextend(),this.context.$pop(),result}),3),$def(self,"$_reduce_348",(function(val,_values,result){return result=$send(this.builder,"def_method",$to_a(val["$[]"](0)).concat([val["$[]"](1),val["$[]"](2),val["$[]"](3)])),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),this.current_arg_stack.$pop(),result}),3),$def(self,"$_reduce_349",(function(val,_values,result){return result=$send(this.builder,"def_singleton",$to_a(val["$[]"](0)).concat([val["$[]"](1),val["$[]"](2),val["$[]"](3)])),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.static_env.$unextend(),this.context.$pop(),this.current_arg_stack.$pop(),result}),3),$def(self,"$_reduce_350",(function(val,_values,result){return this.builder.$keyword_cmd("break",val["$[]"](0))}),3),$def(self,"$_reduce_351",(function(val,_values,result){return this.builder.$keyword_cmd("next",val["$[]"](0))}),3),$def(self,"$_reduce_352",(function(val,_values,result){return this.builder.$keyword_cmd("redo",val["$[]"](0))}),3),$def(self,"$_reduce_353",(function(val,_values,result){return this.builder.$keyword_cmd("retry",val["$[]"](0))}),3),$def(self,"$_reduce_355",(function(val,_values,result){return $truthy(this.context["$in_class?"]())&&this.$diagnostic("error","invalid_return",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_358",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_362",(function(val,_values,result){var $a,$b,else_t,else_;return $b=val["$[]"](4),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],[val["$[]"](0),this.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3),else_t,else_,nil)]}),3),$def(self,"$_reduce_364",(function(val,_values,result){return val}),3),$def(self,"$_reduce_367",(function(val,_values,result){return this.builder.$arg(val["$[]"](0))}),3),$def(self,"$_reduce_368",(function(val,_values,result){return this.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_369",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_370",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_372",(function(val,_values,result){return val["$[]"](0).$push(val["$[]"](2))}),3),$def(self,"$_reduce_373",(function(val,_values,result){return val["$[]"](0).$push(val["$[]"](2)).$concat(val["$[]"](4))}),3),$def(self,"$_reduce_374",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_375",(function(val,_values,result){return[val["$[]"](0)].concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_376",(function(val,_values,result){return this.builder.$restarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_377",(function(val,_values,result){return this.builder.$restarg(val["$[]"](0))}),3),$def(self,"$_reduce_380",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_381",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_382",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_383",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_384",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_385",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_387",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_388",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](6)).$concat(val["$[]"](7))}),3),$def(self,"$_reduce_389",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_390",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_391",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_393",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_394",(function(val,_values,result){return $truthy(val["$[]"](1)["$empty?"]())&&$eqeq(val["$[]"](0).$size(),1)?[this.builder.$procarg0(val["$[]"](0)["$[]"](0))]:val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_395",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_396",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_397",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_398",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_399",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_400",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_402",(function(val,_values,result){return this.builder.$args(nil,[],nil)}),3),$def(self,"$_reduce_403",(function(val,_values,result){var $writer;return $writer=["expr_value"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_404",(function(val,_values,result){return this.max_numparam_stack["$has_ordinary_params!"](),this.current_arg_stack.$set(nil),this.builder.$args(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_405",(function(val,_values,result){return this.max_numparam_stack["$has_ordinary_params!"](),this.current_arg_stack.$set(nil),this.builder.$args(val["$[]"](0),val["$[]"](1).$concat(val["$[]"](2)),val["$[]"](3))}),3),$def(self,"$_reduce_406",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_407",(function(val,_values,result){return val["$[]"](2)}),3),$def(self,"$_reduce_408",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_409",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_410",(function(val,_values,result){return this.static_env.$declare(val["$[]"](0)["$[]"](0)),this.builder.$shadowarg(val["$[]"](0))}),3),$def(self,"$_reduce_412",(function(val,_values,result){return this.static_env.$extend_dynamic(),this.max_numparam_stack.$push(),this.context.$push("lambda"),result}),3),$def(self,"$_reduce_413",(function(val,_values,result){return this.context.$pop(),this.lexer.$cmdarg().$push(!1),result}),3),$def(self,"$_reduce_414",(function(val,_values,result){var $a,$b,lambda_call,args,begin_t,body,end_t;return lambda_call=this.builder.$call_lambda(val["$[]"](0)),args=$truthy(this.max_numparam_stack["$has_numparams?"]())?this.builder.$numargs(this.max_numparam_stack.$top()):val["$[]"](2),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],body=null==$a[1]?nil:$a[1],end_t=null==$a[2]?nil:$a[2],this.max_numparam_stack.$pop(),this.static_env.$unextend(),this.lexer.$cmdarg().$pop(),this.builder.$block(lambda_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_415",(function(val,_values,result){return this.max_numparam_stack["$has_ordinary_params!"](),this.builder.$args(val["$[]"](0),val["$[]"](1).$concat(val["$[]"](2)),val["$[]"](3))}),3),$def(self,"$_reduce_416",(function(val,_values,result){return $truthy(val["$[]"](0)["$any?"]())&&this.max_numparam_stack["$has_ordinary_params!"](),this.builder.$args(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_417",(function(val,_values,result){return this.context.$push("lambda"),result}),3),$def(self,"$_reduce_418",(function(val,_values,result){return result=[val["$[]"](0),val["$[]"](2),val["$[]"](3)],this.context.$pop(),result}),3),$def(self,"$_reduce_419",(function(val,_values,result){return this.context.$push("lambda"),result}),3),$def(self,"$_reduce_420",(function(val,_values,result){return result=[val["$[]"](0),val["$[]"](2),val["$[]"](3)],this.context.$pop(),result}),3),$def(self,"$_reduce_421",(function(val,_values,result){return this.context.$push("block"),result}),3),$def(self,"$_reduce_422",(function(val,_values,result){return result=[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)]),this.context.$pop(),result}),3),$def(self,"$_reduce_423",(function(val,_values,result){var $a,$b,begin_t,block_args,body,end_t;return $b=val["$[]"](1),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],block_args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(val["$[]"](0),begin_t,block_args,body,end_t)}),3),$def(self,"$_reduce_424",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_425",(function(val,_values,result){var $a,$b,lparen_t,rparen_t,method_call,begin_t,body,end_t,args=nil;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_426",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_427",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](1),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(nil,nil,val["$[]"](0),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_428",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_429",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_430",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_431",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](2),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),nil,lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_432",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](2),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),nil,lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_433",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](1),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$keyword_cmd("super",val["$[]"](0),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_434",(function(val,_values,result){return this.builder.$keyword_cmd("zsuper",val["$[]"](0))}),3),$def(self,"$_reduce_435",(function(val,_values,result){return this.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_436",(function(val,_values,result){return this.context.$push("block"),result}),3),$def(self,"$_reduce_437",(function(val,_values,result){return result=[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)]),this.context.$pop(),result}),3),$def(self,"$_reduce_438",(function(val,_values,result){return this.context.$push("block"),result}),3),$def(self,"$_reduce_439",(function(val,_values,result){return result=[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)]),this.context.$pop(),result}),3),$def(self,"$_reduce_440",(function(val,_values,result){return this.static_env.$extend_dynamic(),this.max_numparam_stack.$push(),result}),3),$def(self,"$_reduce_441",(function(val,_values,result){return result=[$truthy(this.max_numparam_stack["$has_numparams?"]())?this.builder.$numargs(this.max_numparam_stack.$top()):val["$[]"](1),val["$[]"](2)],this.max_numparam_stack.$pop(),this.static_env.$unextend(),result}),3),$def(self,"$_reduce_442",(function(val,_values,result){return this.static_env.$extend_dynamic(),this.max_numparam_stack.$push(),result}),3),$def(self,"$_reduce_443",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),result}),3),$def(self,"$_reduce_444",(function(val,_values,result){return result=[$truthy(this.max_numparam_stack["$has_numparams?"]())?this.builder.$numargs(this.max_numparam_stack.$top()):val["$[]"](2),val["$[]"](3)],this.max_numparam_stack.$pop(),this.static_env.$unextend(),this.lexer.$cmdarg().$pop(),result}),3),$def(self,"$_reduce_445",(function(val,_values,result){return[this.builder.$when(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))].concat($to_a(val["$[]"](4)))}),3),$def(self,"$_reduce_446",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_448",(function(val,_values,result){var $writer=nil;return $writer=["expr_beg"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.lexer,"command_start=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.pattern_variables.$push(),this.pattern_hash_keys.$push(),result=this.lexer.$in_kwarg(),$writer=[!0],$send(this.lexer,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_449",(function(val,_values,result){var $writer;return this.pattern_variables.$pop(),this.pattern_hash_keys.$pop(),$writer=[val["$[]"](1)],$send(this.lexer,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_450",(function(val,_values,result){return[$send(this.builder,"in_pattern",[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3),val["$[]"](5)]))].concat($to_a(val["$[]"](6)))}),3),$def(self,"$_reduce_451",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_453",(function(val,_values,result){return[val["$[]"](0),nil]}),3),$def(self,"$_reduce_454",(function(val,_values,result){return[val["$[]"](0),this.builder.$if_guard(val["$[]"](1),val["$[]"](2))]}),3),$def(self,"$_reduce_455",(function(val,_values,result){return[val["$[]"](0),this.builder.$unless_guard(val["$[]"](1),val["$[]"](2))]}),3),$def(self,"$_reduce_457",(function(val,_values,result){var item;return item=this.builder.$match_with_trailing_comma(val["$[]"](0),val["$[]"](1)),this.builder.$array_pattern(nil,[item],nil)}),3),$def(self,"$_reduce_458",(function(val,_values,result){return this.builder.$array_pattern(nil,[val["$[]"](0)].$concat(val["$[]"](2)),nil)}),3),$def(self,"$_reduce_459",(function(val,_values,result){return this.builder.$find_pattern(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_460",(function(val,_values,result){return this.builder.$array_pattern(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_461",(function(val,_values,result){return this.builder.$hash_pattern(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_463",(function(val,_values,result){return this.builder.$match_as(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_465",(function(val,_values,result){return this.builder.$match_alt(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_467",(function(val,_values,result){return result=val["$[]"](0),this.pattern_hash_keys.$push(),result}),3),$def(self,"$_reduce_468",(function(val,_values,result){return result=val["$[]"](0),this.pattern_hash_keys.$push(),result}),3),$def(self,"$_reduce_471",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$array_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_472",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$find_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_473",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$hash_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_474",(function(val,_values,result){var pattern;return pattern=this.builder.$array_pattern(val["$[]"](1),nil,val["$[]"](2)),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](2))}),3),$def(self,"$_reduce_475",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$array_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_476",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$find_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_477",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$hash_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_478",(function(val,_values,result){var pattern;return pattern=this.builder.$array_pattern(val["$[]"](1),nil,val["$[]"](2)),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](2))}),3),$def(self,"$_reduce_479",(function(val,_values,result){return this.builder.$array_pattern(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_480",(function(val,_values,result){return this.builder.$find_pattern(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_481",(function(val,_values,result){return this.builder.$array_pattern(val["$[]"](0),[],val["$[]"](1))}),3),$def(self,"$_reduce_482",(function(val,_values,result){var $writer;return this.pattern_hash_keys.$push(),result=this.lexer.$in_kwarg(),$writer=[!1],$send(this.lexer,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_483",(function(val,_values,result){var $writer;return this.pattern_hash_keys.$pop(),$writer=[val["$[]"](1)],$send(this.lexer,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$hash_pattern(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_484",(function(val,_values,result){return this.builder.$hash_pattern(val["$[]"](0),[],val["$[]"](1))}),3),$def(self,"$_reduce_485",(function(val,_values,result){return this.pattern_hash_keys.$push(),result}),3),$def(self,"$_reduce_486",(function(val,_values,result){return this.pattern_hash_keys.$pop(),this.builder.$begin(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_487",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_488",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_489",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([val["$[]"](1)])}),3),$def(self,"$_reduce_490",(function(val,_values,result){var match_rest;return match_rest=this.builder.$match_rest(val["$[]"](1),val["$[]"](2)),[].concat($to_a(val["$[]"](0))).concat([match_rest])}),3),$def(self,"$_reduce_491",(function(val,_values,result){var match_rest;return match_rest=this.builder.$match_rest(val["$[]"](1),val["$[]"](2)),[].concat($to_a(val["$[]"](0))).concat([match_rest]).concat($to_a(val["$[]"](4)))}),3),$def(self,"$_reduce_492",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([this.builder.$match_rest(val["$[]"](1))])}),3),$def(self,"$_reduce_493",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([this.builder.$match_rest(val["$[]"](1))]).concat($to_a(val["$[]"](3)))}),3),$def(self,"$_reduce_495",(function(val,_values,result){return[this.builder.$match_with_trailing_comma(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_496",(function(val,_values,result){var last_item;return last_item=this.builder.$match_with_trailing_comma(val["$[]"](1),val["$[]"](2)),[].concat($to_a(val["$[]"](0))).concat([last_item])}),3),$def(self,"$_reduce_497",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_498",(function(val,_values,result){return[val["$[]"](0)].concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_499",(function(val,_values,result){return[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](4)])}),3),$def(self,"$_reduce_500",(function(val,_values,result){return this.builder.$match_rest(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_501",(function(val,_values,result){return this.builder.$match_rest(val["$[]"](0))}),3),$def(self,"$_reduce_502",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_503",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([val["$[]"](2)])}),3),$def(self,"$_reduce_505",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_506",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_507",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_508",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_509",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_510",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([val["$[]"](2)])}),3),$def(self,"$_reduce_511",(function(val,_values,result){return $send(this.builder,"match_pair",$to_a(val["$[]"](0)).concat([val["$[]"](1)]))}),3),$def(self,"$_reduce_512",(function(val,_values,result){return $send(this.builder,"match_label",$to_a(val["$[]"](0)))}),3),$def(self,"$_reduce_513",(function(val,_values,result){return["label",val["$[]"](0)]}),3),$def(self,"$_reduce_514",(function(val,_values,result){return["quoted",[val["$[]"](0),val["$[]"](1),val["$[]"](2)]]}),3),$def(self,"$_reduce_515",(function(val,_values,result){return[this.builder.$match_rest(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_516",(function(val,_values,result){return[this.builder.$match_rest(val["$[]"](0),nil)]}),3),$def(self,"$_reduce_517",(function(val,_values,result){return[this.builder.$match_nil_pattern(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_521",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_522",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_523",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_524",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_528",(function(val,_values,result){return this.builder.$range_inclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_529",(function(val,_values,result){return this.builder.$range_exclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_538",(function(val,_values,result){return this.builder.$accessible(val["$[]"](0))}),3),$def(self,"$_reduce_540",(function(val,_values,result){return this.builder.$assignable(this.builder.$match_var(val["$[]"](0)))}),3),$def(self,"$_reduce_541",(function(val,_values,result){var name,lvar;return name=val["$[]"](1)["$[]"](0),$truthy(this.$static_env()["$declared?"](name))||this.$diagnostic("error","undefined_lvar",$hash2(["name"],{name:name}),val["$[]"](1)),lvar=this.builder.$accessible(this.builder.$ident(val["$[]"](1))),this.builder.$pin(val["$[]"](0),lvar)}),3),$def(self,"$_reduce_542",(function(val,_values,result){var non_lvar;return non_lvar=this.builder.$accessible(val["$[]"](1)),this.builder.$pin(val["$[]"](0),non_lvar)}),3),$def(self,"$_reduce_543",(function(val,_values,result){var expr;return expr=this.builder.$begin(val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.builder.$pin(val["$[]"](0),expr)}),3),$def(self,"$_reduce_544",(function(val,_values,result){return this.builder.$const_global(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_545",(function(val,_values,result){return this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_546",(function(val,_values,result){return this.builder.$const(val["$[]"](0))}),3),$def(self,"$_reduce_547",(function(val,_values,result){var $a,$b,assoc_t,exc_var,exc_list=nil;return $b=val["$[]"](2),assoc_t=null==($a=$to_ary($b))[0]?nil:$a[0],exc_var=null==$a[1]?nil:$a[1],$truthy(val["$[]"](1))&&(exc_list=this.builder.$array(nil,val["$[]"](1),nil)),[this.builder.$rescue_body(val["$[]"](0),exc_list,assoc_t,exc_var,val["$[]"](3),val["$[]"](4))].concat($to_a(val["$[]"](5)))}),3),$def(self,"$_reduce_548",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_549",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_552",(function(val,_values,result){return[val["$[]"](0),val["$[]"](1)]}),3),$def(self,"$_reduce_554",(function(val,_values,result){return[val["$[]"](0),val["$[]"](1)]}),3),$def(self,"$_reduce_558",(function(val,_values,result){return this.builder.$string_compose(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_559",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_560",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_561",(function(val,_values,result){var string;return string=this.builder.$string_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2)),this.builder.$dedent_string(string,this.lexer.$dedent_level())}),3),$def(self,"$_reduce_562",(function(val,_values,result){var string;return string=this.builder.$string(val["$[]"](0)),this.builder.$dedent_string(string,this.lexer.$dedent_level())}),3),$def(self,"$_reduce_563",(function(val,_values,result){return this.builder.$character(val["$[]"](0))}),3),$def(self,"$_reduce_564",(function(val,_values,result){var string;return string=this.builder.$xstring_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2)),this.builder.$dedent_string(string,this.lexer.$dedent_level())}),3),$def(self,"$_reduce_565",(function(val,_values,result){var opts;return opts=this.builder.$regexp_options(val["$[]"](3)),this.builder.$regexp_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2),opts)}),3),$def(self,"$_reduce_566",(function(val,_values,result){return this.builder.$words_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_567",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_568",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$word(val["$[]"](1)))}),3),$def(self,"$_reduce_569",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_570",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_571",(function(val,_values,result){return this.builder.$symbols_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_572",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_573",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$word(val["$[]"](1)))}),3),$def(self,"$_reduce_574",(function(val,_values,result){return this.builder.$words_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_575",(function(val,_values,result){return this.builder.$symbols_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_576",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_577",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$string_internal(val["$[]"](1)))}),3),$def(self,"$_reduce_578",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_579",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$symbol_internal(val["$[]"](1)))}),3),$def(self,"$_reduce_580",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_581",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_582",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_583",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_584",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_585",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_586",(function(val,_values,result){return this.builder.$string_internal(val["$[]"](0))}),3),$def(self,"$_reduce_587",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_588",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),this.lexer.$cond().$push(!1),result}),3),$def(self,"$_reduce_589",(function(val,_values,result){return this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.builder.$begin(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_590",(function(val,_values,result){return this.builder.$gvar(val["$[]"](0))}),3),$def(self,"$_reduce_591",(function(val,_values,result){return this.builder.$ivar(val["$[]"](0))}),3),$def(self,"$_reduce_592",(function(val,_values,result){return this.builder.$cvar(val["$[]"](0))}),3),$def(self,"$_reduce_596",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$symbol(val["$[]"](0))}),3),$def(self,"$_reduce_597",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$symbol_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_598",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_599",(function(val,_values,result){return $truthy(this.builder["$respond_to?"]("negate"))?this.builder.$negate(val["$[]"](0),val["$[]"](1)):this.builder.$unary_num(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_600",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$integer(val["$[]"](0))}),3),$def(self,"$_reduce_601",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$float(val["$[]"](0))}),3),$def(self,"$_reduce_602",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$rational(val["$[]"](0))}),3),$def(self,"$_reduce_603",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$complex(val["$[]"](0))}),3),$def(self,"$_reduce_604",(function(val,_values,result){return this.builder.$ivar(val["$[]"](0))}),3),$def(self,"$_reduce_605",(function(val,_values,result){return this.builder.$gvar(val["$[]"](0))}),3),$def(self,"$_reduce_606",(function(val,_values,result){return this.builder.$cvar(val["$[]"](0))}),3),$def(self,"$_reduce_607",(function(val,_values,result){return this.builder.$ident(val["$[]"](0))}),3),$def(self,"$_reduce_608",(function(val,_values,result){return this.builder.$ivar(val["$[]"](0))}),3),$def(self,"$_reduce_609",(function(val,_values,result){return this.builder.$gvar(val["$[]"](0))}),3),$def(self,"$_reduce_610",(function(val,_values,result){return this.builder.$const(val["$[]"](0))}),3),$def(self,"$_reduce_611",(function(val,_values,result){return this.builder.$cvar(val["$[]"](0))}),3),$def(self,"$_reduce_612",(function(val,_values,result){return this.builder.$nil(val["$[]"](0))}),3),$def(self,"$_reduce_613",(function(val,_values,result){return this.builder.$self(val["$[]"](0))}),3),$def(self,"$_reduce_614",(function(val,_values,result){return this.builder.$true(val["$[]"](0))}),3),$def(self,"$_reduce_615",(function(val,_values,result){return this.builder.$false(val["$[]"](0))}),3),$def(self,"$_reduce_616",(function(val,_values,result){return this.builder.$__FILE__(val["$[]"](0))}),3),$def(self,"$_reduce_617",(function(val,_values,result){return this.builder.$__LINE__(val["$[]"](0))}),3),$def(self,"$_reduce_618",(function(val,_values,result){return this.builder.$__ENCODING__(val["$[]"](0))}),3),$def(self,"$_reduce_619",(function(val,_values,result){return this.builder.$accessible(val["$[]"](0))}),3),$def(self,"$_reduce_620",(function(val,_values,result){return this.builder.$accessible(val["$[]"](0))}),3),$def(self,"$_reduce_621",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_622",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_623",(function(val,_values,result){return this.builder.$nth_ref(val["$[]"](0))}),3),$def(self,"$_reduce_624",(function(val,_values,result){return this.builder.$back_ref(val["$[]"](0))}),3),$def(self,"$_reduce_625",(function(val,_values,result){var $writer;return $writer=["expr_value"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_626",(function(val,_values,result){return[val["$[]"](0),val["$[]"](2)]}),3),$def(self,"$_reduce_627",(function(val,_values,result){return nil}),3),$def(self,"$_reduce_629",(function(val,_values,result){return this.builder.$args(nil,[],nil)}),3),$def(self,"$_reduce_630",(function(val,_values,result){var $writer;return result=this.builder.$args(val["$[]"](0),val["$[]"](1),val["$[]"](2)),$writer=["expr_value"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_632",(function(val,_values,result){var $writer;return result=this.lexer.$in_kwarg(),$writer=[!0],$send(this.lexer,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.context.$push("def_open_args"),result}),3),$def(self,"$_reduce_633",(function(val,_values,result){var $writer;return this.context.$pop(),$writer=[val["$[]"](0)],$send(this.lexer,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$args(nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_634",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_635",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_636",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_637",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_638",(function(val,_values,result){return this.static_env.$declare_forward_args(),[this.builder.$forward_arg(val["$[]"](0))]}),3),$def(self,"$_reduce_639",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_640",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_641",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_642",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](6)).$concat(val["$[]"](7))}),3),$def(self,"$_reduce_643",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_644",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_645",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_646",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_647",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_648",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_649",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_650",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_651",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_652",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_653",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_654",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_655",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_656",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_657",(function(val,_values,result){return this.$diagnostic("error","argument_const",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_658",(function(val,_values,result){return this.$diagnostic("error","argument_ivar",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_659",(function(val,_values,result){return this.$diagnostic("error","argument_gvar",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_660",(function(val,_values,result){return this.$diagnostic("error","argument_cvar",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_662",(function(val,_values,result){return this.static_env.$declare(val["$[]"](0)["$[]"](0)),this.max_numparam_stack["$has_ordinary_params!"](),val["$[]"](0)}),3),$def(self,"$_reduce_663",(function(val,_values,result){return this.current_arg_stack.$set(val["$[]"](0)["$[]"](0)),val["$[]"](0)}),3),$def(self,"$_reduce_664",(function(val,_values,result){return this.current_arg_stack.$set(0),this.builder.$arg(val["$[]"](0))}),3),$def(self,"$_reduce_665",(function(val,_values,result){return this.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_666",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_667",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_668",(function(val,_values,result){return this.$check_kwarg_name(val["$[]"](0)),this.static_env.$declare(val["$[]"](0)["$[]"](0)),this.max_numparam_stack["$has_ordinary_params!"](),this.current_arg_stack.$set(val["$[]"](0)["$[]"](0)),val["$[]"](0)}),3),$def(self,"$_reduce_669",(function(val,_values,result){return this.current_arg_stack.$set(nil),this.builder.$kwoptarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_670",(function(val,_values,result){return this.current_arg_stack.$set(nil),this.builder.$kwarg(val["$[]"](0))}),3),$def(self,"$_reduce_671",(function(val,_values,result){return this.builder.$kwoptarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_672",(function(val,_values,result){return this.builder.$kwarg(val["$[]"](0))}),3),$def(self,"$_reduce_673",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_674",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_675",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_676",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_679",(function(val,_values,result){return[this.builder.$kwnilarg(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_680",(function(val,_values,result){return this.static_env.$declare(val["$[]"](1)["$[]"](0)),[this.builder.$kwrestarg(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_681",(function(val,_values,result){return[this.builder.$kwrestarg(val["$[]"](0))]}),3),$def(self,"$_reduce_682",(function(val,_values,result){return this.current_arg_stack.$set(0),this.builder.$optarg(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_683",(function(val,_values,result){return this.current_arg_stack.$set(0),this.builder.$optarg(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_684",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_685",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_686",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_687",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_690",(function(val,_values,result){return this.static_env.$declare(val["$[]"](1)["$[]"](0)),[this.builder.$restarg(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_691",(function(val,_values,result){return[this.builder.$restarg(val["$[]"](0))]}),3),$def(self,"$_reduce_694",(function(val,_values,result){return this.static_env.$declare(val["$[]"](1)["$[]"](0)),this.builder.$blockarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_695",(function(val,_values,result){return this.static_env.$declare_anonymous_blockarg(),this.builder.$blockarg(val["$[]"](0),nil)}),3),$def(self,"$_reduce_696",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_697",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_699",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_700",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_702",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_703",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_704",(function(val,_values,result){return this.builder.$pair(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_705",(function(val,_values,result){return this.builder.$pair_keyword(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_706",(function(val,_values,result){return this.builder.$pair_label(val["$[]"](0))}),3),$def(self,"$_reduce_707",(function(val,_values,result){return this.builder.$pair_quoted(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_708",(function(val,_values,result){return this.builder.$kwsplat(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_721",(function(val,_values,result){return["dot",val["$[]"](0)["$[]"](1)]}),3),$def(self,"$_reduce_722",(function(val,_values,result){return["anddot",val["$[]"](0)["$[]"](1)]}),3),$def(self,"$_reduce_727",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_728",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_729",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_733",(function(val,_values,result){return this.$yyerrok(),result}),3),$def(self,"$_reduce_737",(function(val,_values,result){return nil}),3),$def(self,"$_reduce_none",(function(val,_values,result){return val["$[]"](0)}),3)}($nesting[0],$$$($$("Parser"),"Base"),$nesting)}($nesting[0],$nesting)},Opal.modules["opal/ast/builder"]=function(Opal){var self=Opal.top,$nesting=[],$$$=(Opal.nil,Opal.$$$),$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$Opal=Opal.Opal,$hash2=Opal.hash2,$def=Opal.def;return Opal.add_stubs("require,emit_lambda=,-,new"),self.$require("opal/ast/node"),self.$require("parser/ruby31"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var $writer,self=$klass($base,$super,"Builder");return $send(self,"emit_lambda=",$to_a($writer=[!0])),$rb_minus($writer.length,1),$def(self,"$n",(function(type,children,location){return $$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:location}))}),3)}([$module($base,"AST")].concat($parent_nesting)[0],$$$($$$($$$("Parser"),"Builders"),"Default"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/base"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$truthy=Opal.truthy,$Opal=Opal.Opal,$hash2=Opal.hash2,$defs=Opal.defs,$alias=Opal.alias,$rb_plus=Opal.rb_plus,$eqeqeq=Opal.eqeqeq,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,new,current_node,loc,+,stmts_of,begin_with_stmts,nil?,include?,type,children,===,length,[],s,attr_accessor,current_node=,-,location=,raise"),self.$require("parser"),self.$require("opal/ast/node"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Base"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"DummyLocation"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$node=",(function($a){return Opal.slice.call(arguments),nil}),-1),$def(self,"$expression",(function(){return this}),0),$def(self,"$begin_pos",(function(){return 0}),0),$def(self,"$end_pos",(function(){return 0}),0),$def(self,"$source",(function(){return""}),0),$def(self,"$line",(function(){return 0}),0),$def(self,"$column",(function(){return 0}),0),$def(self,"$last_line",(function(){return $$$($$("Float"),"INFINITY")}),0)}($nesting[0],0,$nesting),$const_set($nesting[0],"DUMMY_LOCATION",$$("DummyLocation").$new()),$def(self,"$s",(function(type,$a){var children,self=this,loc=nil;return children=Opal.slice.call(arguments,1),loc=$truthy(self.$current_node())?self.$current_node().$loc():$$("DUMMY_LOCATION"),$$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:loc}))}),-2),$defs(self,"$s",(function(type,$a){var children;return children=Opal.slice.call(arguments,1),$$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:$$("DUMMY_LOCATION")}))}),-2),$alias(self,"on_iter","process_regular_node"),$alias(self,"on_top","process_regular_node"),$alias(self,"on_zsuper","process_regular_node"),$alias(self,"on_jscall","on_send"),$alias(self,"on_jsattr","process_regular_node"),$alias(self,"on_jsattrasgn","process_regular_node"),$alias(self,"on_kwsplat","process_regular_node"),$def(self,"$prepend_to_body",(function(body,node){var stmts;return stmts=$rb_plus(this.$stmts_of(node),this.$stmts_of(body)),this.$begin_with_stmts(stmts)}),2),$def(self,"$append_to_body",(function(body,node){var stmts;return stmts=$rb_plus(this.$stmts_of(body),this.$stmts_of(node)),this.$begin_with_stmts(stmts)}),2),$def(self,"$stmts_of",(function(node){return $truthy(node["$nil?"]())?[]:$truthy(["begin","kwbegin"]["$include?"](node.$type()))?node.$children():[node]}),1),$def(self,"$begin_with_stmts",(function(stmts){var $ret_or_1;return $eqeqeq(0,$ret_or_1=stmts.$length())?nil:$eqeqeq(1,$ret_or_1)?stmts["$[]"](0):$send(this,"s",["begin"].concat($to_a(stmts)))}),1),self.$attr_accessor("current_node"),$def(self,"$process",(function $$process(node){var $yield=$$process.$$p||nil,self=this,$writer=nil;return delete $$process.$$p,function(){try{return $send(self,"current_node=",$to_a($writer=[node])),$writer[$rb_minus($writer.length,1)],$send2(self,$find_super(self,"process",$$process,!1,!0),"process",[node],$yield)}finally{$send(self,"current_node=",$to_a($writer=[nil])),$writer[$rb_minus($writer.length,1)]}}()}),1),$def(self,"$error",(function(msg){var error,$writer=nil;return error=$$$($Opal,"RewritingError").$new(msg),$truthy(this.$current_node())&&($writer=[this.$current_node().$loc()],$send(error,"location=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),this.$raise(error)}),1)}($nesting[0],$$$($$$($$$("Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/opal_engine_check"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_a=Opal.to_a,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$const_set=Opal.const_set;return Opal.add_stubs("require,children,skip_check_present?,process,s,skip_check_present_not?,=="),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"OpalEngineCheck"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_if",(function $$on_if(node){var $a,test,true_body,false_body,$yield=$$on_if.$$p||nil,$ret_or_1=nil;return delete $$on_if.$$p,test=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],true_body=null==$a[1]?nil:$a[1],false_body=null==$a[2]?nil:$a[2],$truthy(this["$skip_check_present?"](test))?this.$process($truthy($ret_or_1=true_body)?$ret_or_1:this.$s("nil")):$truthy(this["$skip_check_present_not?"](test))?this.$process($truthy($ret_or_1=false_body)?$ret_or_1:this.$s("nil")):$send2(this,$find_super(this,"on_if",$$on_if,!1,!0),"on_if",[node],$yield)}),1),$def(self,"$skip_check_present?",(function(test){var $ret_or_1;return $truthy($ret_or_1=test["$=="]($$("RUBY_ENGINE_CHECK")))?$ret_or_1:test["$=="]($$("RUBY_PLATFORM_CHECK"))}),1),$def(self,"$skip_check_present_not?",(function(test){var $ret_or_1;return $truthy($ret_or_1=test["$=="]($$("RUBY_ENGINE_CHECK_NOT")))?$ret_or_1:test["$=="]($$("RUBY_PLATFORM_CHECK_NOT"))}),1),$const_set($nesting[0],"RUBY_ENGINE_CHECK",self.$s("send",self.$s("const",nil,"RUBY_ENGINE"),"==",self.$s("str","opal"))),$const_set($nesting[0],"RUBY_ENGINE_CHECK_NOT",self.$s("send",self.$s("const",nil,"RUBY_ENGINE"),"!=",self.$s("str","opal"))),$const_set($nesting[0],"RUBY_PLATFORM_CHECK",self.$s("send",self.$s("const",nil,"RUBY_PLATFORM"),"==",self.$s("str","opal"))),$const_set($nesting[0],"RUBY_PLATFORM_CHECK_NOT",self.$s("send",self.$s("const",nil,"RUBY_PLATFORM"),"!=",self.$s("str","opal")))}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/for_rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$defs=Opal.defs,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$to_a=Opal.to_a,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,+,find,map,s,next_tmp,class,===,type,updated,<<,prepend_to_body,process,attr_reader,new,to_a,result"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ForRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$reset_tmp_counter!",(function(){return this.counter=0}),0),$defs(self,"$next_tmp",(function(){var $ret_or_1;return null==this.counter&&(this.counter=nil),this.counter=$truthy($ret_or_1=this.counter)?$ret_or_1:0,this.counter=$rb_plus(this.counter,1),"$for_tmp"+this.counter}),0),$def(self,"$on_for",(function(node){var $a,iterating_value,iterating_lvars,lvars_declared_in_body,outer_assigns,tmp_loop_variable,get_tmp_loop_variable,loop_variable_assignment,loop_variable=nil,loop_body=nil;return loop_variable=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],iterating_value=null==$a[1]?nil:$a[1],loop_body=null==$a[2]?nil:$a[2],iterating_lvars=$$("LocalVariableAssigns").$find(loop_variable),lvars_declared_in_body=$$("LocalVariableAssigns").$find(loop_body),outer_assigns=$send($rb_plus(iterating_lvars,lvars_declared_in_body),"map",[],(function $$2(lvar_name){return null==lvar_name&&(lvar_name=nil),(null==$$2.$$s?this:$$2.$$s).$s("lvdeclare",lvar_name)}),{$$arity:1,$$s:this}),tmp_loop_variable=this.$class().$next_tmp(),get_tmp_loop_variable=this.$s("js_tmp",tmp_loop_variable),loop_variable_assignment=$eqeqeq("mlhs",loop_variable.$type())?loop_variable.$updated("masgn",[loop_variable,get_tmp_loop_variable]):loop_variable["$<<"](get_tmp_loop_variable),loop_body=this.$prepend_to_body(loop_body,loop_variable_assignment),(node=node.$updated("send",[iterating_value,"each",node.$updated("iter",[this.$s("args",this.$s("arg",tmp_loop_variable)),this.$process(loop_body)])])).$updated("begin",[].concat($to_a(outer_assigns)).concat([node]))}),1),function($base,$super,$parent_nesting){var self=$klass($base,$super,"LocalVariableAssigns"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$attr_reader("result"),$defs(self,"$find",(function(node){var processor=nil;return(processor=this.$new()).$process(node),processor.$result().$to_a()}),1),$def(self,"$initialize",(function(){return this.result=$$("Set").$new()}),0),$def(self,"$on_lvasgn",(function $$on_lvasgn(node){var $a,name,$yield=$$on_lvasgn.$$p||nil;return delete $$on_lvasgn.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],this.$result()["$<<"](name),$send2(this,$find_super(this,"on_lvasgn",$$on_lvasgn,!1,!0),"on_lvasgn",[node],$yield)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/explicit_writer_return"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$slice=Opal.slice,$eqeq=Opal.eqeq,$regexp=Opal.regexp,$send=Opal.send;return Opal.add_stubs("require,s,==,to_s,=~,process_all,updated"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ExplicitWriterReturn"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.in_masgn=nil,$def(self,"$initialize",(function(){return this.in_masgn=!1}),0),$const_set($nesting[0],"TMP_NAME","$writer"),$const_set($nesting[0],"GET_ARGS_NODE",self.$s("lvar",$$("TMP_NAME"))),$const_set($nesting[0],"RETURN_ARGS_NODE",self.$s("jsattr",$$("GET_ARGS_NODE"),self.$s("send",self.$s("jsattr",$$("GET_ARGS_NODE"),self.$s("str","length")),"-",self.$s("int",1)))),$def(self,"$on_send",(function $$on_send(node){var $a,recv,args,$yield=$$on_send.$$p||nil,method_name=nil,set_args_node=nil;return delete $$on_send.$$p,$truthy(this.in_masgn)?$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield):(recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(method_name.$to_s()["$=~"]($regexp([$$("REGEXP_START"),"\\w+=",$$("REGEXP_END")])))||$eqeq(method_name.$to_s(),"[]=")?(set_args_node=this.$s("lvasgn",$$("TMP_NAME"),$send(this,"s",["array"].concat($to_a(this.$process_all(args))))),this.$s("begin",set_args_node,node.$updated(nil,[recv,method_name,this.$s("splat",$$("GET_ARGS_NODE"))]),$$("RETURN_ARGS_NODE"))):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield))}),1),$def(self,"$on_masgn",(function $$on_masgn(node){var result,$yield=$$on_masgn.$$p||nil;return delete $$on_masgn.$$p,this.in_masgn=!0,result=$send2(this,$find_super(this,"on_masgn",$$on_masgn,!1,!0),"on_masgn",[node],$yield),this.in_masgn=!1,result}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/regexp_anchors"]=function(Opal){var $nesting=[],$$$=(Opal.nil,Opal.$$$),$module=Opal.module,$const_set=Opal.const_set;return Opal.add_stubs("new"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set(self,"REGEXP_START","^"),$const_set(self,"REGEXP_END","$"),$const_set(self,"FORBIDDEN_STARTING_IDENTIFIER_CHARS","\\u0001-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"FORBIDDEN_ENDING_IDENTIFIER_CHARS","\\u0001-\\u0020\\u0022-\\u002F\\u003A-\\u003E\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"INLINE_IDENTIFIER_REGEXP",$$("Regexp").$new("[^"+$$$(self,"FORBIDDEN_STARTING_IDENTIFIER_CHARS")+"]*[^"+$$$(self,"FORBIDDEN_ENDING_IDENTIFIER_CHARS")+"]")),$const_set(self,"FORBIDDEN_CONST_NAME_CHARS","\\u0001-\\u0020\\u0021-\\u002F\\u003B-\\u003F\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"CONST_NAME_REGEXP",$$("Regexp").$new($$$(self,"REGEXP_START")+"(::)?[A-Z][^"+$$$(self,"FORBIDDEN_CONST_NAME_CHARS")+"]*"+$$$(self,"REGEXP_END")))}($nesting[0],$nesting)},Opal.modules["opal/rewriters/js_reserved_words"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$truthy=Opal.truthy,$defs=Opal.defs,$def=Opal.def,$range=Opal.range,$to_a=Opal.to_a,$send2=Opal.send2,$find_super=Opal.find_super,$hash2=Opal.hash2,$alias=Opal.alias;return Opal.add_stubs("require,freeze,=~,!,valid_name?,class,to_sym,valid_ivar_name?,[],to_s,updated,fix_var_name,fix_ivar_name"),self.$require("opal/rewriters/base"),self.$require("opal/regexp_anchors"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"JsReservedWords"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"ES51_RESERVED_WORD",$regexp([$$("REGEXP_START"),"(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"ES3_RESERVED_WORD_EXCLUSIVE",$regexp([$$("REGEXP_START"),"(?:int|byte|char|goto|long|final|float|short|double|native|throws|boolean|abstract|volatile|transient|synchronized)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"PROTO_SPECIAL_PROPS",$regexp([$$("REGEXP_START"),"(?:constructor|displayName|__proto__|__parent__|__noSuchMethod__|__count__)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"PROTO_SPECIAL_METHODS",$regexp([$$("REGEXP_START"),"(?:hasOwnProperty|valueOf)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"IMMUTABLE_PROPS",$regexp([$$("REGEXP_START"),"(?:NaN|Infinity|undefined)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"BASIC_IDENTIFIER_RULES",$regexp([$$("REGEXP_START"),"[$_a-z][$_a-z\\d]*",$$("REGEXP_END")],"i").$freeze()),$const_set($nesting[0],"RESERVED_FUNCTION_NAMES",$regexp([$$("REGEXP_START"),"(?:Array)",$$("REGEXP_END")]).$freeze()),$defs(self,"$valid_name?",(function(name){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $truthy($ret_or_1=$$("BASIC_IDENTIFIER_RULES")["$=~"](name))?($truthy($ret_or_2=$truthy($ret_or_3=$$("ES51_RESERVED_WORD")["$=~"](name))?$ret_or_3:$$("ES3_RESERVED_WORD_EXCLUSIVE")["$=~"](name))?$ret_or_2:$$("IMMUTABLE_PROPS")["$=~"](name))["$!"]():$ret_or_1}),1),$defs(self,"$valid_ivar_name?",(function(name){var $ret_or_1;return($truthy($ret_or_1=$$("PROTO_SPECIAL_PROPS")["$=~"](name))?$ret_or_1:$$("PROTO_SPECIAL_METHODS")["$=~"](name))["$!"]()}),1),$def(self,"$fix_var_name",(function(name){return $truthy(this.$class()["$valid_name?"](name))?name:(name+"$").$to_sym()}),1),$def(self,"$fix_ivar_name",(function(name){return $truthy(this.$class()["$valid_ivar_name?"](name.$to_s()["$[]"]($range(1,-1,!1))))?name:(name+"$").$to_sym()}),1),$def(self,"$on_lvar",(function $$on_lvar(node){var $a,name;return delete $$on_lvar.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],node=node.$updated(nil,[this.$fix_var_name(name)]),$send2(this,$find_super(this,"on_lvar",$$on_lvar,!1,!0),"on_lvar",[node],null)}),1),$def(self,"$on_lvasgn",(function $$on_lvasgn(node){var $a,name,value;return delete $$on_lvasgn.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],node=$truthy(value)?node.$updated(nil,[this.$fix_var_name(name),value]):node.$updated(nil,[this.$fix_var_name(name)]),$send2(this,$find_super(this,"on_lvasgn",$$on_lvasgn,!1,!0),"on_lvasgn",[node],null)}),1),$def(self,"$on_ivar",(function $$on_ivar(node){var $a,name;return delete $$on_ivar.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],node=node.$updated(nil,[this.$fix_ivar_name(name)]),$send2(this,$find_super(this,"on_ivar",$$on_ivar,!1,!0),"on_ivar",[node],null)}),1),$def(self,"$on_ivasgn",(function $$on_ivasgn(node){var $a,name,value;return delete $$on_ivasgn.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],node=$truthy(value)?node.$updated(nil,[this.$fix_ivar_name(name),value]):node.$updated(nil,[this.$fix_ivar_name(name)]),$send2(this,$find_super(this,"on_ivasgn",$$on_ivasgn,!1,!0),"on_ivasgn",[node],null)}),1),$def(self,"$on_restarg",(function(node){var $a,name;return name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$truthy(name)&&(node=node.$updated(nil,[this.$fix_var_name(name)],$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:name})}))),node}),1),$alias(self,"on_kwrestarg","on_restarg"),$def(self,"$on_argument",(function $$on_argument(node){var $a,name,value,fixed_name,new_children;return delete $$on_argument.$$p,node=$send2(this,$find_super(this,"on_argument",$$on_argument,!1,!0),"on_argument",[node],null),name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],fixed_name=this.$fix_var_name(name),new_children=$truthy(value)?[fixed_name,value]:[fixed_name],node.$updated(nil,new_children,$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:name})}))}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/block_to_iter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$def=Opal.def;return Opal.add_stubs("require,s,process,updated,+,children"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BlockToIter");return $def(self,"$on_block",(function(node){var $a,args,body,iter_node,recvr=nil;return recvr=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],iter_node=this.$s("iter",args,body),this.$process(recvr.$updated(nil,$rb_plus(recvr.$children(),[iter_node])))}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/dot_js_syntax"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_a=Opal.to_a,$slice=Opal.slice,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$eqeqeq=Opal.eqeqeq,$neqeq=Opal.neqeq,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("require,==,type,===,!=,size,error,first,to_js_attr_call,to_js_attr_assign_call,to_native_js_call,s"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DotJsSyntax");return $def(self,"$on_send",(function $$on_send(node){var $a,meth,$yield=$$on_send.$$p||nil,recv=nil,args=nil,recv_of_recv=nil,meth_of_recv=nil,$ret_or_1=nil,property=nil,value=nil;return delete $$on_send.$$p,recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(recv)&&$eqeq(recv.$type(),"send")?(recv_of_recv=null==($a=[].concat($to_a(recv)))[0]?nil:$a[0],meth_of_recv=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],$eqeq(meth_of_recv,"JS")?($eqeqeq("[]",$ret_or_1=meth)?($neqeq(args.$size(),1)&&this.$error(".JS[:property] syntax supports only one argument"),property=args.$first(),node=this.$to_js_attr_call(recv_of_recv,property)):$eqeqeq("[]=",$ret_or_1)?($neqeq(args.$size(),2)&&this.$error(".JS[:property]= syntax supports only two arguments"),property=null==($a=[].concat($to_a(args)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],node=this.$to_js_attr_assign_call(recv_of_recv,property,value)):node=this.$to_native_js_call(recv_of_recv,meth,args),$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],null)):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield)):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield)}),1),$def(self,"$to_native_js_call",(function(recv,meth,args){return $send(this,"s",["jscall",recv,meth].concat($to_a(args)))}),3),$def(self,"$to_js_attr_call",(function(recv,property){return this.$s("jsattr",recv,property)}),2),$def(self,"$to_js_attr_assign_call",(function(recv,property,value){return this.$s("jsattrasgn",recv,property,value)}),3)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/pattern_matching"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$slice=Opal.slice,$truthy=Opal.truthy,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$not=Opal.not,$neqeq=Opal.neqeq,$eqeq=Opal.eqeq,$alias=Opal.alias,$Opal=Opal.Opal;return Opal.add_stubs("require,s,convert_full_pattern,raise_no_matching_pattern_error,+,process,single_case_match,private,shift,===,type,!,empty?,!=,==,class,new,run!,variables,pattern,map,<<,array,on_literal,first,children,to_proc,method,each,to_ast,on_array_pattern,compact,[]"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"PatternMatching"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.depth=nil,$def(self,"$initialize",(function $$initialize(){var $yield=$$initialize.$$p||nil;return delete $$initialize.$$p,this.depth=0,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[],$yield)}),0),$def(self,"$on_match_pattern",(function(node){var $a,from,pat;return from=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],pat=null==$a[1]?nil:$a[1],this.$s("begin",this.$s("lvasgn","$pmvar",from),this.$s("if",this.$convert_full_pattern(from,pat),nil,this.$raise_no_matching_pattern_error("$pmvar")))}),1),$def(self,"$on_match_pattern_p",(function(node){var $a,from,pat;return from=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],pat=null==$a[1]?nil:$a[1],this.$s("if",this.$convert_full_pattern(from,pat),this.$s("true"),this.$s("false"))}),1),$def(self,"$on_case_match",(function(node){var $a,$b,from,cases,cmvar=nil,els=nil;return this.depth=$rb_plus(this.depth,1),cmvar="$cmvar"+this.depth,from=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],$b=($b=$a.length-1)<1?1:$b,cases=$slice.call($a,1,$b),els=null==$a[$b]?nil:$a[$b],$truthy(els)?this.$process(els):els=this.$raise_no_matching_pattern_error(cmvar),this.$s("begin",this.$s("lvasgn",cmvar,from),$send(this,"single_case_match",[cmvar].concat($to_a(cases)).concat([els])))}),1),self.$private(),$def(self,"$raise_no_matching_pattern_error",(function(from){return this.$s("send",nil,"raise",this.$s("const",this.$s("cbase"),"NoMatchingPatternError"),this.$s("lvar",from))}),1),$def(self,"$single_case_match",(function(from,$a,$b){var $post_args,cases,els,$c,self=this,cas=nil,pat=nil,if_guard=nil,body=nil,guard=nil,$ret_or_1=nil;return cases=($post_args=Opal.slice.call(arguments,1)).splice(0,$post_args.length-1),null==(els=$post_args.shift())&&(els=nil),cas=cases.$shift(),pat=null==($c=[].concat($to_a(cas)))[0]?nil:$c[0],if_guard=null==$c[1]?nil:$c[1],body=null==$c[2]?nil:$c[2],pat=self.$convert_full_pattern(from,pat),$truthy(if_guard)&&(guard=null==($c=[].concat($to_a(if_guard)))[0]?nil:$c[0],$eqeqeq("if_guard",$ret_or_1=if_guard.$type())?pat=self.$s("and",pat,guard):$eqeqeq("unless_guard",$ret_or_1)&&(pat=self.$s("and",pat,self.$s("send",guard,"!")))),self.$s("if",pat,self.$process(body),$not(cases["$empty?"]())?$send(self,"single_case_match",[from].concat($to_a(cases)).concat([els])):$neqeq(els,self.$s("empty_else"))?els:nil)}),-3),$def(self,"$convert_full_pattern",(function(from,pat){var converter=nil;return $eqeq(from.$class(),$$("Symbol"))&&(from=this.$s("lvar",from)),(converter=$$("PatternConverter").$new(pat))["$run!"](),this.$s("masgn",$send(this,"s",["mlhs"].concat($to_a(converter.$variables()))),this.$s("send",this.$s("const",this.$s("cbase"),"PatternMatching"),"call",from,converter.$pattern()))}),2),function($base,$super,$parent_nesting){var self=$klass($base,$super,"PatternConverter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.pat=$proto.outpat=$proto.variables=nil,$def(self,"$initialize",(function(pat){return this.pat=pat,this.variables=[]}),1),$def(self,"$run!",(function(){return this.outpat=this.$process(this.pat)}),0),$def(self,"$pattern",(function(){return this.outpat}),0),$def(self,"$variables",(function(){return $send(this.variables,"map",[],(function $$2(i){return null==i&&(i=nil),(null==$$2.$$s?this:$$2.$$s).$s("lvasgn",i)}),{$$arity:1,$$s:this})}),0),$def(self,"$on_match_var",(function(node){var $a,var$;return var$=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],this.variables["$<<"](var$),this.$s("sym","var")}),1),$def(self,"$on_match_as",(function(node){var $a,pat,save;return pat=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],save=null==$a[1]?nil:$a[1],this.$process(save),this.$array(this.$s("sym","save"),this.$process(pat))}),1),$def(self,"$on_literal",(function(node){return this.$array(this.$s("sym","lit"),node)}),1),$alias(self,"on_int","on_literal"),$alias(self,"on_float","on_literal"),$alias(self,"on_complex","on_literal"),$alias(self,"on_rational","on_literal"),$alias(self,"on_array","on_literal"),$alias(self,"on_str","on_literal"),$alias(self,"on_dstr","on_literal"),$alias(self,"on_xstr","on_literal"),$alias(self,"on_sym","on_literal"),$alias(self,"on_irange","on_literal"),$alias(self,"on_erange","on_literal"),$alias(self,"on_const","on_literal"),$alias(self,"on_regexp","on_literal"),$alias(self,"on_lambda","on_literal"),$alias(self,"on_begin","on_literal"),$def(self,"$on_pin",(function(node){return this.$on_literal(node.$children().$first())}),1),$def(self,"$on_match_rest",(function(node){return $truthy(node.$children()["$empty?"]())?this.$array(this.$s("sym","rest")):this.$array(this.$s("sym","rest"),this.$process(node.$children().$first()))}),1),$def(self,"$on_match_alt",(function(node){return $send(this,"array",[this.$s("sym","any")].concat($to_a($send(node.$children(),"map",[],this.$method("process").$to_proc()))))}),1),$def(self,"$on_const_pattern",(function(node){return $send(this,"array",[this.$s("sym","all")].concat($to_a($send(node.$children(),"map",[],this.$method("process").$to_proc()))))}),1),$def(self,"$on_array_pattern",(function(node,tail){var children=nil,fixed_size=nil,array_size=nil;return null==tail&&(tail=!1),children=[].concat($to_a(node)),$truthy(tail)&&children["$<<"](this.$s("match_rest")),fixed_size=!0,array_size=0,children=$send(children,"each",[],(function(i){return null==i&&(i=nil),$eqeqeq("match_rest",i.$type())?fixed_size=!1:array_size=$rb_plus(array_size,1)}),1),this.$array(this.$s("sym","array"),this.$to_ast(fixed_size),this.$to_ast(array_size),this.$to_ast($send(children,"map",[],this.$method("process").$to_proc())))}),-2),$def(self,"$on_array_pattern_with_tail",(function(node){return this.$on_array_pattern(node,!0)}),1),$def(self,"$on_hash_pattern",(function(node){var children=nil,any_size=nil;return children=[].concat($to_a(node)),any_size=$truthy(children["$empty?"]())?this.$to_ast(!1):this.$to_ast(!0),children=$send(children,"map",[],(function $$4(i){var $ret_or_1,self=null==$$4.$$s?this:$$4.$$s;return null==i&&(i=nil),$eqeqeq("pair",$ret_or_1=i.$type())?self.$array(i.$children()["$[]"](0),self.$process(i.$children()["$[]"](1))):$eqeqeq("match_var",$ret_or_1)?self.$array(self.$s("sym",i.$children()["$[]"](0)),self.$process(i)):$eqeqeq("match_nil_pattern",$ret_or_1)?(any_size=self.$to_ast(!1),nil):$eqeqeq("match_rest",$ret_or_1)?(any_size=$truthy(i.$children().$first())?self.$process(i.$children().$first()):self.$to_ast(!0),nil):nil}),{$$arity:1,$$s:this}).$compact(),this.$array(this.$s("sym","hash"),any_size,$send(this,"array",$to_a(children)))}),1),$def(self,"$on_find_pattern",(function(node){var children=nil;return children=[].concat($to_a(node)),children=$send(children,"map",[],this.$method("process").$to_proc()),this.$array(this.$s("sym","find"),$send(this,"array",$to_a(children)))}),1),self.$private(),$def(self,"$array",(function($a){var args,self=this;return args=Opal.slice.call(arguments),self.$to_ast(args)}),-1),$def(self,"$to_ast",(function(val){var $ret_or_1;return $eqeqeq($$("Array"),$ret_or_1=val)?$send(this,"s",["array"].concat($to_a(val))):$eqeqeq($$("Integer"),$ret_or_1)?this.$s("int",val):$eqeqeq(!0,$ret_or_1)?this.$s("true"):$eqeqeq(!1,$ret_or_1)?this.$s("false"):$eqeqeq(nil,$ret_or_1)?this.$s("nil"):nil}),1)}($nesting[0],$$$($$$($Opal,"Rewriters"),"Base"),$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/logical_operator_assignment"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$class_variable_set=Opal.class_variable_set,$defs=Opal.defs,$truthy=Opal.truthy,$class_variable_get=Opal.class_variable_get,$rb_plus=Opal.rb_plus,$const_set=Opal.const_set,$lambda=Opal.lambda,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$slice=Opal.slice,$hash2=Opal.hash2,$send=Opal.send,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,+,updated,s,==,include?,[],type,new_temp,freeze,call,fetch,error,process"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"LogicalOperatorAssignment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$reset_tmp_counter!",(function(){return $class_variable_set($nesting[0],"@@counter",0)}),0),$defs(self,"$new_temp",(function(){var $ret_or_1=nil;return $class_variable_set($nesting[0],"@@counter",$truthy(null!=$nesting[0].$$cvars["@@counter"]?"class variable":nil)&&$truthy($ret_or_1=$class_variable_get($nesting[0],"@@counter",!1))?$ret_or_1:0),$class_variable_set($nesting[0],"@@counter",$rb_plus($class_variable_get($nesting[0],"@@counter",!1),1)),"$logical_op_recvr_tmp_"+$class_variable_get($nesting[0],"@@counter",!1)}),0),$const_set($nesting[0],"GET_SET",$lambda((function $LogicalOperatorAssignment$2(get_type,set_type){return null==get_type&&(get_type=nil),null==set_type&&(set_type=nil),$lambda((function $$3(lhs,rhs,root_type){var get_node,self=null==$$3.$$s?this:$$3.$$s,condition_node=nil,defined_node=nil;return null==lhs&&(lhs=nil),null==rhs&&(rhs=nil),null==root_type&&(root_type=nil),get_node=lhs.$updated(get_type),condition_node=self.$s(root_type,get_node,rhs),$truthy(["const","cvar"]["$include?"](get_type))&&$eqeq(root_type,"or")&&(defined_node=self.$s("defined?",get_node),condition_node=self.$s("if",defined_node,self.$s("begin",condition_node),rhs)),lhs.$updated(set_type,[].concat($to_a(lhs)).concat([condition_node]))}),{$$arity:3,$$s:null==$LogicalOperatorAssignment$2.$$s?this:$LogicalOperatorAssignment$2.$$s})}),{$$arity:2,$$s:self})),$const_set($nesting[0],"LocalVariableHandler",$$("GET_SET")["$[]"]("lvar","lvasgn")),$const_set($nesting[0],"InstanceVariableHandler",$$("GET_SET")["$[]"]("ivar","ivasgn")),$const_set($nesting[0],"ConstantHandler",$$("GET_SET")["$[]"]("const","casgn")),$const_set($nesting[0],"GlobalVariableHandler",$$("GET_SET")["$[]"]("gvar","gvasgn")),$const_set($nesting[0],"ClassVariableHandler",$$("GET_SET")["$[]"]("cvar","cvasgn")),function($base,$super){var self=$klass($base,$super,"SendHandler");$defs(self,"$call",(function(lhs,rhs,root_type){var $a,args,call_reader,call_writer,get_or_set,recvr=nil,reader_method=nil,recvr_tmp=nil,cache_recvr=nil,writer_method=nil;return recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],reader_method=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(recvr)&&$eqeq(recvr.$type(),"send")&&(recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp)),writer_method=reader_method+"=",call_reader=lhs.$updated("send",[recvr,reader_method].concat($to_a(args))),call_writer=lhs.$updated("send",[recvr,writer_method].concat($to_a(args)).concat([rhs])),get_or_set=this.$s(root_type,call_reader,call_writer),$truthy(cache_recvr)?this.$s("begin",cache_recvr,get_or_set):get_or_set}),3)}($nesting[0],self),function($base,$super){var self=$klass($base,$super,"ConditionalSendHandler");$defs(self,"$call",(function(lhs,rhs,root_type){var $a,args,recvr_tmp,cache_recvr,recvr_is_nil,plain_send,plain_or_asgn,recvr=nil,meth=nil;return root_type+="_asgn",recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp),recvr_is_nil=this.$s("send",recvr,"nil?"),plain_send=lhs.$updated("send",[recvr,meth].concat($to_a(args))),plain_or_asgn=this.$s(root_type,plain_send,rhs),this.$s("begin",cache_recvr,this.$s("if",recvr_is_nil,this.$s("nil"),plain_or_asgn))}),3)}($nesting[0],self),$const_set($nesting[0],"HANDLERS",$hash2(["lvasgn","ivasgn","casgn","gvasgn","cvasgn","send","csend"],{lvasgn:$$("LocalVariableHandler"),ivasgn:$$("InstanceVariableHandler"),casgn:$$("ConstantHandler"),gvasgn:$$("GlobalVariableHandler"),cvasgn:$$("ClassVariableHandler"),send:$$("SendHandler"),csend:$$("ConditionalSendHandler")}).$freeze()),$def(self,"$on_or_asgn",(function(node){var $a,rhs,result,lhs=nil;return $a=[].concat($to_a(node)),lhs=null==$a[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],result=$send($$("HANDLERS"),"fetch",[lhs.$type()],(function $$4(){return(null==$$4.$$s?this:$$4.$$s).$error("cannot handle LHS type: "+lhs.$type())}),{$$arity:0,$$s:this}).$call(lhs,rhs,"or"),this.$process(result)}),1),$def(self,"$on_and_asgn",(function(node){var $a,rhs,result,lhs=nil;return $a=[].concat($to_a(node)),lhs=null==$a[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],result=$send($$("HANDLERS"),"fetch",[lhs.$type()],(function $$5(){return(null==$$5.$$s?this:$$5.$$s).$error("cannot handle LHS type: "+lhs.$type())}),{$$arity:0,$$s:this}).$call(lhs,rhs,"and"),this.$process(result)}),1),$const_set($nesting[0],"ASSIGNMENT_STRING_NODE",self.$s("str","assignment")),$def(self,"$on_defined?",(function $LogicalOperatorAssignment_on_defined$ques$6(node){var $a,inner=nil;return delete $LogicalOperatorAssignment_on_defined$ques$6.$$p,inner=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$truthy(["or_asgn","and_asgn"]["$include?"](inner.$type()))?$$("ASSIGNMENT_STRING_NODE"):$send2(this,$find_super(this,"on_defined?",$LogicalOperatorAssignment_on_defined$ques$6,!1,!0),"on_defined?",[node],null)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/binary_operator_assignment"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$class_variable_set=Opal.class_variable_set,$defs=Opal.defs,$truthy=Opal.truthy,$class_variable_get=Opal.class_variable_get,$rb_plus=Opal.rb_plus,$const_set=Opal.const_set,$lambda=Opal.lambda,$to_a=Opal.to_a,$slice=Opal.slice,$eqeq=Opal.eqeq,$hash2=Opal.hash2,$send=Opal.send,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,+,updated,[],==,type,new_temp,s,freeze,call,fetch,error,process"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"BinaryOperatorAssignment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$reset_tmp_counter!",(function(){return $class_variable_set($nesting[0],"@@counter",0)}),0),$defs(self,"$new_temp",(function(){var $ret_or_1=nil;return $class_variable_set($nesting[0],"@@counter",$truthy(null!=$nesting[0].$$cvars["@@counter"]?"class variable":nil)&&$truthy($ret_or_1=$class_variable_get($nesting[0],"@@counter",!1))?$ret_or_1:0),$class_variable_set($nesting[0],"@@counter",$rb_plus($class_variable_get($nesting[0],"@@counter",!1),1)),"$binary_op_recvr_tmp_"+$class_variable_get($nesting[0],"@@counter",!1)}),0),$const_set($nesting[0],"GET_SET",$lambda((function(get_type,set_type){return null==get_type&&(get_type=nil),null==set_type&&(set_type=nil),$lambda((function(node,lhs,operation,rhs){var get_node,set_node;return null==node&&(node=nil),null==lhs&&(lhs=nil),null==operation&&(operation=nil),null==rhs&&(rhs=nil),get_node=lhs.$updated(get_type),set_node=node.$updated("send",[get_node,operation,rhs]),lhs.$updated(set_type,[].concat($to_a(lhs)).concat([set_node]))}),4)}),2)),$const_set($nesting[0],"LocalVariableHandler",$$("GET_SET")["$[]"]("lvar","lvasgn")),$const_set($nesting[0],"InstanceVariableHandler",$$("GET_SET")["$[]"]("ivar","ivasgn")),$const_set($nesting[0],"ConstantHandler",$$("GET_SET")["$[]"]("const","casgn")),$const_set($nesting[0],"GlobalVariableHandler",$$("GET_SET")["$[]"]("gvar","gvasgn")),$const_set($nesting[0],"ClassVariableHandler",$$("GET_SET")["$[]"]("cvar","cvasgn")),function($base,$super){var self=$klass($base,$super,"SendHandler");$defs(self,"$call",(function(node,lhs,operation,rhs){var $a,args,call_reader,call_op,call_writer,recvr=nil,reader_method=nil,recvr_tmp=nil,cache_recvr=nil,writer_method=nil;return recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],reader_method=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(recvr)&&$eqeq(recvr.$type(),"send")&&(recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp)),writer_method=reader_method+"=",call_reader=lhs.$updated("send",[recvr,reader_method].concat($to_a(args))),call_op=node.$updated("send",[call_reader,operation,rhs]),call_writer=lhs.$updated("send",[recvr,writer_method].concat($to_a(args)).concat([call_op])),$truthy(cache_recvr)?node.$updated("begin",[cache_recvr,call_writer]):call_writer}),4)}($nesting[0],self),function($base,$super){var self=$klass($base,$super,"ConditionalSendHandler");$defs(self,"$call",(function(node,lhs,operation,rhs){var $a,args,recvr_tmp,cache_recvr,recvr_is_nil,plain_send,plain_op_asgn,recvr=nil,meth=nil;return recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp),recvr_is_nil=this.$s("send",recvr,"nil?"),plain_send=lhs.$updated("send",[recvr,meth].concat($to_a(args))),plain_op_asgn=node.$updated("op_asgn",[plain_send,operation,rhs]),this.$s("begin",cache_recvr,this.$s("if",recvr_is_nil,this.$s("nil"),plain_op_asgn))}),4)}($nesting[0],self),$const_set($nesting[0],"HANDLERS",$hash2(["lvasgn","ivasgn","casgn","gvasgn","cvasgn","send","csend"],{lvasgn:$$("LocalVariableHandler"),ivasgn:$$("InstanceVariableHandler"),casgn:$$("ConstantHandler"),gvasgn:$$("GlobalVariableHandler"),cvasgn:$$("ClassVariableHandler"),send:$$("SendHandler"),csend:$$("ConditionalSendHandler")}).$freeze()),$def(self,"$on_op_asgn",(function(node){var $a,op,rhs,result,lhs=nil;return $a=[].concat($to_a(node)),lhs=null==$a[0]?nil:$a[0],op=null==$a[1]?nil:$a[1],rhs=null==$a[2]?nil:$a[2],result=$send($$("HANDLERS"),"fetch",[lhs.$type()],(function $$4(){return(null==$$4.$$s?this:$$4.$$s).$error("cannot handle LHS type: "+lhs.$type())}),{$$arity:0,$$s:this}).$call(node,lhs,op,rhs),this.$process(result)}),1),$const_set($nesting[0],"ASSIGNMENT_STRING_NODE",self.$s("str","assignment")),$def(self,"$on_defined?",(function $BinaryOperatorAssignment_on_defined$ques$5(node){var $a,inner=nil;return delete $BinaryOperatorAssignment_on_defined$ques$5.$$p,inner=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$eqeq(inner.$type(),"op_asgn")?$$("ASSIGNMENT_STRING_NODE"):$send2(this,$find_super(this,"on_defined?",$BinaryOperatorAssignment_on_defined$ques$5,!1,!0),"on_defined?",[node],null)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/hashes/key_duplicates_rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$Opal=Opal.Opal;return Opal.add_stubs("require,new,include?,type,<<,==,process_regular_node,updated,inspect,warn"),self.$require("opal/rewriters/base"),self.$require("set"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Hashes")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"KeyDuplicatesRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.keys=nil,$def(self,"$initialize",(function(){return this.keys=$$("UniqKeysSet").$new()}),0),$def(self,"$on_hash",(function $$on_hash(node){var $a,self=this,previous_keys=nil;return delete $$on_hash.$$p,function(){try{return $a=[self.keys,$$("UniqKeysSet").$new()],previous_keys=$a[0],self.keys=$a[1],$send2(self,$find_super(self,"on_hash",$$on_hash,!1,!0),"on_hash",[node],null)}finally{self.keys=previous_keys}}()}),1),$def(self,"$on_pair",(function $$on_pair(node){var $a,key=nil;return delete $$on_pair.$$p,key=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$truthy(["str","sym"]["$include?"](key.$type()))&&this.keys["$<<"](key),$send2(this,$find_super(this,"on_pair",$$on_pair,!1,!0),"on_pair",[node],null)}),1),$def(self,"$on_kwsplat",(function(node){var $a,hash=nil;return hash=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$eqeq(hash.$type(),"hash")&&(hash=this.$process_regular_node(hash)),node.$updated(nil,[hash])}),1),function($base,$super,$parent_nesting){var self=$klass($base,null,"UniqKeysSet"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.set=nil,$def(self,"$initialize",(function(){return this.set=$$("Set").$new()}),0),$def(self,"$<<",(function(element){var $a,key=nil;return $truthy(this.set["$include?"](element))?(key=null==($a=[].concat($to_a(element)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],key=$eqeq(element.$type(),"str")?key.$inspect():":"+key,$$("Kernel").$warn("warning: key "+key+" is duplicated and overwritten")):this.set["$<<"](element)}),1)}($nesting[0],0,$nesting)}($nesting[0],$$$($$$($Opal,"Rewriters"),"Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/dump_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$hash2=Opal.hash2,$def=Opal.def;return Opal.add_stubs("require,updated"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DumpArgs");return $def(self,"$on_def",(function $$on_def(node){var $a,args;return delete $$on_def.$$p,node=$send2(this,$find_super(this,"on_def",$$on_def,!1,!0),"on_def",[node],null),null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))}),1),$def(self,"$on_defs",(function $$on_defs(node){var $a,args;return delete $$on_defs.$$p,node=$send2(this,$find_super(this,"on_defs",$$on_defs,!1,!0),"on_defs",[node],null),null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],args=null==$a[2]?nil:$a[2],null==$a[3]?nil:$a[3],node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))}),1),$def(self,"$on_iter",(function $$on_iter(node){var $a,args;return delete $$on_iter.$$p,node=$send2(this,$find_super(this,"on_iter",$$on_iter,!1,!0),"on_iter",[node],null),args=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/mlhs_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$def=Opal.def,$rb_plus=Opal.rb_plus,$send=Opal.send,$eqeq=Opal.eqeq,$hash2=Opal.hash2;return Opal.add_stubs("require,new,updated,rewritten,initialization,s,prepend_to_body,attr_reader,split!,+,each,children,==,type,new_mlhs_tmp,process,<<,length,[],empty?"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"MlhsArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_def",(function $$on_def(node){var $a,mid,args=nil,body=nil,arguments$=nil,$ret_or_1=nil;return delete $$on_def.$$p,node=$send2(this,$find_super(this,"on_def",$$on_def,!1,!0),"on_def",[node],null),mid=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],arguments$=$$("Arguments").$new(args),args=args.$updated(nil,arguments$.$rewritten()),$truthy(arguments$.$initialization())&&(body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),body=this.$prepend_to_body(body,arguments$.$initialization())),node.$updated(nil,[mid,args,body])}),1),$def(self,"$on_defs",(function $$on_defs(node){var $a,recv,mid,args=nil,body=nil,arguments$=nil,$ret_or_1=nil;return delete $$on_defs.$$p,node=$send2(this,$find_super(this,"on_defs",$$on_defs,!1,!0),"on_defs",[node],null),recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],mid=null==$a[1]?nil:$a[1],args=null==$a[2]?nil:$a[2],body=null==$a[3]?nil:$a[3],arguments$=$$("Arguments").$new(args),args=args.$updated(nil,arguments$.$rewritten()),$truthy(arguments$.$initialization())&&(body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),body=this.$prepend_to_body(body,arguments$.$initialization())),node.$updated(nil,[recv,mid,args,body])}),1),$def(self,"$on_iter",(function $$on_iter(node){var $a,args=nil,body=nil,arguments$=nil,$ret_or_1=nil;return delete $$on_iter.$$p,node=$send2(this,$find_super(this,"on_iter",$$on_iter,!1,!0),"on_iter",[node],null),args=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],body=null==$a[1]?nil:$a[1],arguments$=$$("Arguments").$new(args),args=args.$updated(nil,arguments$.$rewritten()),$truthy(arguments$.$initialization())&&(body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),body=this.$prepend_to_body(body,arguments$.$initialization())),node.$updated(nil,[args,body])}),1),function($base,$super,$parent_nesting){var self=$klass($base,$super,"Arguments"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.counter=$proto.args=$proto.initialization=nil,self.$attr_reader("rewritten","initialization"),$def(self,"$initialize",(function(args){return this.args=args,this.rewritten=[],this.initialization=[],this.rewriter=$$("MlhsRewriter").$new(),this["$split!"]()}),1),$def(self,"$reset_tmp_counter!",(function(){return this.counter=0}),0),$def(self,"$new_mlhs_tmp",(function(){var $ret_or_1;return this.counter=$truthy($ret_or_1=this.counter)?$ret_or_1:0,this.counter=$rb_plus(this.counter,1),"$mlhs_tmp"+this.counter}),0),$def(self,"$split!",(function(){return $send(this.args.$children(),"each",[],(function $$3(arg){var self=null==$$3.$$s?this:$$3.$$s,var_name=nil,rhs=nil,mlhs=nil;return null==self.rewriter&&(self.rewriter=nil),null==self.initialization&&(self.initialization=nil),null==self.rewritten&&(self.rewritten=nil),null==arg&&(arg=nil),$eqeq(arg.$type(),"mlhs")?(var_name=self.$new_mlhs_tmp(),rhs=self.$s("lvar",var_name),mlhs=self.rewriter.$process(arg),self.initialization["$<<"](self.$s("masgn",mlhs,rhs)),self.rewritten["$<<"](self.$s("arg",var_name).$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:var_name})})))):self.rewritten["$<<"](arg)}),{$$arity:1,$$s:this}),$eqeq(this.initialization.$length(),1)?this.initialization=this.initialization["$[]"](0):$truthy(this.initialization["$empty?"]())?this.initialization=nil:this.initialization=$send(this,"s",["begin"].concat($to_a(this.initialization)))}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"MlhsRewriter");return $def(self,"$on_arg",(function(node){return node.$updated("lvasgn")}),1),$def(self,"$on_restarg",(function(node){var name;return name=node.$children()["$[]"](0),$truthy(name)?this.$s("splat",node.$updated("lvasgn")):this.$s("splat")}),1)}($nesting[0],$$("Base"))}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/arguments"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("attr_reader,each,===,type,<<,any?,raise,!,nil?,has_any_kwargs?,can_inline_kwargs?,empty?"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,null,"Arguments"),$proto=self.$$prototype;return $proto.restarg=$proto.postargs=$proto.kwargs=$proto.kwoptargs=$proto.kwrestarg=$proto.optargs=nil,self.$attr_reader("args","optargs","restarg","postargs","kwargs","kwoptargs","kwrestarg","kwnilarg","shadowargs","blockarg"),$def(self,"$initialize",(function(args){return this.args=[],this.optargs=[],this.restarg=nil,this.postargs=[],this.kwargs=[],this.kwoptargs=[],this.kwrestarg=nil,this.kwnilarg=!1,this.shadowargs=[],this.blockarg=nil,$send(args,"each",[],(function $$1(arg){var $ret_or_1,self=null==$$1.$$s?this:$$1.$$s;return null==self.optargs&&(self.optargs=nil),null==self.restarg&&(self.restarg=nil),null==self.postargs&&(self.postargs=nil),null==self.args&&(self.args=nil),null==self.kwargs&&(self.kwargs=nil),null==self.kwoptargs&&(self.kwoptargs=nil),null==self.shadowargs&&(self.shadowargs=nil),null==arg&&(arg=nil),$eqeqeq("arg",$ret_or_1=arg.$type())||$eqeqeq("mlhs",$ret_or_1)?($truthy(self.restarg)||$truthy(self.optargs["$any?"]())?self.postargs:self.args)["$<<"](arg):$eqeqeq("optarg",$ret_or_1)?self.optargs["$<<"](arg):$eqeqeq("restarg",$ret_or_1)?self.restarg=arg:$eqeqeq("kwarg",$ret_or_1)?self.kwargs["$<<"](arg):$eqeqeq("kwoptarg",$ret_or_1)?self.kwoptargs["$<<"](arg):$eqeqeq("kwnilarg",$ret_or_1)?self.kwnilarg=!0:$eqeqeq("kwrestarg",$ret_or_1)?self.kwrestarg=arg:$eqeqeq("shadowarg",$ret_or_1)?self.shadowargs["$<<"](arg):$eqeqeq("blockarg",$ret_or_1)?self.blockarg=arg:self.$raise("Unsupported arg type "+arg.$type())}),{$$arity:1,$$s:this})}),1),$def(self,"$has_post_args?",(function(){var $ret_or_1,$ret_or_2=nil;return $truthy($ret_or_1=$truthy($ret_or_2=this.restarg["$nil?"]()["$!"]())?$ret_or_2:this.postargs["$any?"]())?$ret_or_1:$truthy($ret_or_2=this["$has_any_kwargs?"]())?this["$can_inline_kwargs?"]()["$!"]():$ret_or_2}),0),$def(self,"$has_any_kwargs?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.kwargs["$any?"]())?$ret_or_2:this.kwoptargs["$any?"]())?$ret_or_1:this.kwrestarg["$nil?"]()["$!"]()}),0),$def(self,"$can_inline_kwargs?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.optargs["$empty?"]())?this.restarg["$nil?"]():$ret_or_2)?this.postargs["$empty?"]():$ret_or_1}),0)}([$module($base,"Rewriters")].concat($parent_nesting)[0])}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/inline_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$hash2=Opal.hash2,$def=Opal.def,$const_set=Opal.const_set,$send=Opal.send,$eqeq=Opal.eqeq,$Opal=Opal.Opal;return Opal.add_stubs("require,s,new,updated,inline,prepend_to_body,initialization,attr_reader,freeze,children,each,send,any?,blockarg,<<,shadowargs,args,==,[],has_post_args?,length,has_any_kwargs?,can_inline_kwargs?,kwargs,kwoptargs,kwrestarg,postargs,optargs,args_to_keep,restarg"),self.$require("opal/rewriters/base"),self.$require("opal/rewriters/arguments"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"InlineArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_def",(function $$on_def(node){var $a,mid,$ret_or_1,inline_args,args=nil,body=nil,initializer=nil;return delete $$on_def.$$p,node=$send2(this,$find_super(this,"on_def",$$on_def,!1,!0),"on_def",[node],null),mid=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),initializer=$$("Initializer").$new(args,$hash2(["type"],{type:"def"})),inline_args=args.$updated(nil,initializer.$inline()),body=this.$prepend_to_body(body,initializer.$initialization()),node.$updated(nil,[mid,inline_args,body])}),1),$def(self,"$on_defs",(function $$on_defs(node){var $a,recv,mid,$ret_or_1,inline_args,args=nil,body=nil,initializer=nil;return delete $$on_defs.$$p,node=$send2(this,$find_super(this,"on_defs",$$on_defs,!1,!0),"on_defs",[node],null),recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],mid=null==$a[1]?nil:$a[1],args=null==$a[2]?nil:$a[2],body=null==$a[3]?nil:$a[3],body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),initializer=$$("Initializer").$new(args,$hash2(["type"],{type:"defs"})),inline_args=args.$updated(nil,initializer.$inline()),body=this.$prepend_to_body(body,initializer.$initialization()),node.$updated(nil,[recv,mid,inline_args,body])}),1),$def(self,"$on_iter",(function $$on_iter(node){var $a,$ret_or_1,inline_args,args=nil,body=nil,initializer=nil;return delete $$on_iter.$$p,node=$send2(this,$find_super(this,"on_iter",$$on_iter,!1,!0),"on_iter",[node],null),args=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],body=null==$a[1]?nil:$a[1],body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),initializer=$$("Initializer").$new(args,$hash2(["type"],{type:"iter"})),inline_args=args.$updated(nil,initializer.$inline()),body=this.$prepend_to_body(body,initializer.$initialization()),node.$updated(nil,[inline_args,body])}),1),function($base,$super,$parent_nesting){var self=$klass($base,$super,"Initializer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.initialization=$proto.args=$proto.inline=nil,self.$attr_reader("inline","initialization"),$const_set($nesting[0],"STEPS",["extract_blockarg","initialize_shadowargs","extract_args","prepare_post_args","prepare_kwargs","extract_optargs","extract_restarg","extract_post_args","extract_kwargs","extract_kwoptargs","extract_kwrestarg"].$freeze()),$def(self,"$initialize",(function(args,$kwargs){var type;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");if(!Opal.hasOwnProperty.call($kwargs.$$smap,"type"))throw Opal.ArgumentError.$new("missing keyword: type");return type=$kwargs.$$smap.type,this.args=$$("Arguments").$new(args.$children()),this.inline=[],this.initialization=[],this.type=type,this.underscore_found=!1,$send($$("STEPS"),"each",[],(function $$1(step){return null==step&&(step=nil),(null==$$1.$$s?this:$$1.$$s).$send(step)}),{$$arity:1,$$s:this}),$truthy(this.initialization["$any?"]())?this.initialization=$send(this,"s",["begin"].concat($to_a(this.initialization))):this.initialization=nil}),2),$def(self,"$extract_blockarg",(function(){var arg=nil;return $truthy(arg=this.args.$blockarg())?this.initialization["$<<"](arg.$updated("extract_blockarg")):nil}),0),$def(self,"$initialize_shadowargs",(function(){return $send(this.args.$shadowargs(),"each",[],(function $$2(arg){var self=null==$$2.$$s?this:$$2.$$s;return null==self.initialization&&(self.initialization=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("initialize_shadowarg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_args",(function(){return $send(this.args.$args(),"each",[],(function $$3(arg){var self=null==$$3.$$s?this:$$3.$$s;return null==self.type&&(self.type=nil),null==self.initialization&&(self.initialization=nil),null==self.underscore_found&&(self.underscore_found=nil),null==self.inline&&(self.inline=nil),null==arg&&(arg=nil),$eqeq(self.type,"iter")&&(self.initialization["$<<"](arg.$updated("initialize_iter_arg")),$eqeq(arg.$children()["$[]"](0),"_")&&($truthy(self.underscore_found)&&(arg=self.$s("fake_arg")),self.underscore_found=!0)),self.inline["$<<"](arg)}),{$$arity:1,$$s:this})}),0),$def(self,"$prepare_post_args",(function(){return $truthy(this.args["$has_post_args?"]())?this.initialization["$<<"](this.$s("prepare_post_args",this.args.$args().$length())):nil}),0),$def(self,"$prepare_kwargs",(function(){return $truthy(this.args["$has_any_kwargs?"]())?($truthy(this.args["$can_inline_kwargs?"]())?this.inline["$<<"](this.$s("arg","$kwargs")):(this.initialization["$<<"](this.$s("extract_kwargs")),this.inline["$<<"](this.$s("fake_arg"))),this.initialization["$<<"](this.$s("ensure_kwargs_are_kwargs"))):nil}),0),$def(self,"$extract_kwargs",(function(){return $send(this.args.$kwargs(),"each",[],(function $$4(arg){var self=null==$$4.$$s?this:$$4.$$s;return null==self.initialization&&(self.initialization=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("extract_kwarg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_kwoptargs",(function(){return $send(this.args.$kwoptargs(),"each",[],(function $$5(arg){var self=null==$$5.$$s?this:$$5.$$s;return null==self.initialization&&(self.initialization=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("extract_kwoptarg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_kwrestarg",(function(){var arg=nil;return $truthy(arg=this.args.$kwrestarg())?this.initialization["$<<"](arg.$updated("extract_kwrestarg")):nil}),0),$def(self,"$extract_post_args",(function(){return $send(this.args.$postargs(),"each",[],(function $$6(arg){var self=null==$$6.$$s?this:$$6.$$s;return null==self.initialization&&(self.initialization=nil),null==self.inline&&(self.inline=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("extract_post_arg")),self.inline["$<<"](self.$s("fake_arg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_optargs",(function(){var has_post_args;return has_post_args=this.args["$has_post_args?"](),$send(this.args.$optargs(),"each",[],(function $$7(arg){var $a,self=null==$$7.$$s?this:$$7.$$s,arg_name=nil,default_value=nil;return null==self.initialization&&(self.initialization=nil),null==self.inline&&(self.inline=nil),null==arg&&(arg=nil),$truthy(has_post_args)?(arg_name=null==($a=[].concat($to_a(arg)))[0]?nil:$a[0],default_value=null==$a[1]?nil:$a[1],self.initialization["$<<"](arg.$updated("extract_post_optarg",[arg_name,default_value,self.$args_to_keep()])),self.inline["$<<"](self.$s("fake_arg"))):(self.inline["$<<"](arg.$updated("arg")),self.initialization["$<<"](arg.$updated("extract_optarg")))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_restarg",(function(){var arg=nil,arg_name=nil;return $truthy(arg=this.args.$restarg())?(arg_name=arg.$children()["$[]"](0),this.initialization["$<<"](arg.$updated("extract_restarg",[arg_name,this.$args_to_keep()])),this.inline["$<<"](this.$s("fake_arg"))):nil}),0),$def(self,"$args_to_keep",(function(){return this.args.$postargs().$length()}),0)}($nesting[0],$$$($$$($Opal,"Rewriters"),"Base"),$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/numblocks"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_ary=Opal.to_ary,$send=Opal.send,$to_a=Opal.to_a,$def=Opal.def;return Opal.add_stubs("require,children,s,gen_args,map"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Numblocks");return $def(self,"$on_numblock",(function(node){var $a,$b,left,arg_count,right;return $b=node.$children(),left=null==($a=$to_ary($b))[0]?nil:$a[0],arg_count=null==$a[1]?nil:$a[1],right=null==$a[2]?nil:$a[2],this.$s("block",left,$send(this,"s",["args"].concat($to_a(this.$gen_args(arg_count)))),right)}),1),$def(self,"$gen_args",(function(arg_count){return $send(Opal.Range.$new(1,arg_count,!1),"map",[],(function $$1(i){return null==i&&(i=nil),(null==$$1.$$s?this:$$1.$$s).$s("arg","_"+i)}),{$$arity:1,$$s:this})}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/returnable_logic"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$def=Opal.def,$rb_minus=Opal.rb_minus,$to_a=Opal.to_a,$send=Opal.send,$send2=Opal.send2,$find_super=Opal.find_super,$slice=Opal.slice,$eqeq=Opal.eqeq;return Opal.add_stubs("require,+,-,children,[]=,meta,s,next_tmp,build_if_from_when,free_tmp,[],process,updated,==,count,first,delete,private,build_rule_from_parts,empty?,type"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ReturnableLogic");return self.$$prototype.counter=nil,$def(self,"$next_tmp",(function(){var $ret_or_1;return this.counter=$truthy($ret_or_1=this.counter)?$ret_or_1:0,this.counter=$rb_plus(this.counter,1),"$ret_or_"+this.counter}),0),$def(self,"$free_tmp",(function(){return this.counter=$rb_minus(this.counter,1)}),0),$def(self,"$reset_tmp_counter!",(function(){return this.counter=nil}),0),$def(self,"$on_if",(function $$on_if(node){var $a,$yield=$$on_if.$$p||nil,test=nil,$writer=nil;return delete $$on_if.$$p,test=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],$truthy(test)&&($writer=["if_test",!0],$send(test.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$send2(this,$find_super(this,"on_if",$$on_if,!1,!0),"on_if",[node],$yield)}),1),$def(self,"$on_case",(function(node){var $a,$b,lhs,whens,$ret_or_1,out,els=nil,lhs_tmp=nil;return lhs=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],$b=($b=$a.length-1)<1?1:$b,whens=$slice.call($a,1,$b),els=null==$a[$b]?nil:$a[$b],els=$truthy($ret_or_1=els)?$ret_or_1:this.$s("nil"),$truthy(lhs)&&(lhs_tmp=this.$next_tmp()),out=this.$build_if_from_when(node,lhs,lhs_tmp,whens,els),$truthy(lhs)&&this.$free_tmp(),out}),1),$def(self,"$on_or",(function(node){var $a,lhs=nil,rhs=nil,$writer=nil,out=nil,lhs_tmp=nil;return lhs=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],$truthy(node.$meta()["$[]"]("if_test"))?($writer=["if_test",($writer=["if_test",!0],$send(rhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])],$send(lhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],out=this.$process(node.$updated("if",[lhs,this.$s("true"),rhs]))):(lhs_tmp=this.$next_tmp(),out=this.$process(node.$updated("if",[this.$s("lvasgn",lhs_tmp,lhs),this.$s("js_tmp",lhs_tmp),rhs])),this.$free_tmp()),out}),1),$def(self,"$on_and",(function(node){var $a,lhs=nil,rhs=nil,$writer=nil,out=nil,lhs_tmp=nil;return lhs=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],$truthy(node.$meta()["$[]"]("if_test"))?($writer=["if_test",($writer=["if_test",!0],$send(rhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])],$send(lhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],out=this.$process(node.$updated("if",[lhs,rhs,this.$s("false")]))):(lhs_tmp=this.$next_tmp(),out=this.$process(node.$updated("if",[this.$s("lvasgn",lhs_tmp,lhs),rhs,this.$s("js_tmp",lhs_tmp)])),this.$free_tmp()),out}),1),$def(self,"$on_begin",(function $$on_begin(node){var $yield=$$on_begin.$$p||nil,$writer=nil;return delete $$on_begin.$$p,$truthy(node.$meta()["$[]"]("if_test"))&&$eqeq(node.$children().$count(),1)&&($writer=["if_test",!0],$send(node.$children().$first().$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),node.$meta().$delete("if_test"),$send2(this,$find_super(this,"on_begin",$$on_begin,!1,!0),"on_begin",[node],$yield)}),1),self.$private(),$def(self,"$build_if_from_when",(function(node,lhs,lhs_tmp,whens,els){var $a,$b,parts,expr,rule,first_when=nil,next_whens=nil;return first_when=null==($a=[].concat($to_a(whens)))[0]?nil:$a[0],next_whens=$slice.call($a,1),$b=($b=($a=[].concat($to_a(first_when.$children()))).length-1)<0?0:$b,parts=$slice.call($a,0,$b),expr=null==$a[$b]?nil:$a[$b],rule=this.$build_rule_from_parts(node,lhs,lhs_tmp,parts),first_when.$updated("if",[rule,this.$process(expr),$truthy(next_whens["$empty?"]())?this.$process(els):this.$build_if_from_when(nil,nil,lhs_tmp,next_whens,els)])}),5),$def(self,"$build_rule_from_parts",(function(node,lhs,lhs_tmp,parts){var $a,subrule,first_part=nil,next_parts=nil,splat_on=nil,iter_val=nil,block=nil;return lhs=$truthy(node)&&$truthy(lhs_tmp)?node.$updated("lvasgn",[lhs_tmp,this.$process(lhs)]):this.$s("js_tmp",lhs_tmp),first_part=null==($a=[].concat($to_a(parts)))[0]?nil:$a[0],next_parts=$slice.call($a,1),subrule=$eqeq(first_part.$type(),"splat")?(splat_on=first_part.$children().$first(),iter_val=this.$next_tmp(),block=this.$s("send",this.$process(splat_on),"any?",this.$s("iter",this.$s("args",this.$s("arg",iter_val)),this.$build_rule_from_parts(nil,nil,lhs_tmp,[this.$s("lvar",iter_val)]))),$truthy(node)&&$truthy(lhs_tmp)?this.$s("begin",lhs,block):block):$truthy(lhs_tmp)?this.$s("send",this.$process(first_part),"===",lhs):this.$process(first_part),$truthy(next_parts["$empty?"]())?subrule:this.$s("if",subrule,this.$s("true"),this.$build_rule_from_parts(nil,nil,lhs_tmp,next_parts))}),4)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/forward_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$range=Opal.range,$to_a=Opal.to_a,$send2=Opal.send2,$find_super=Opal.find_super,$neqeq=Opal.neqeq;return Opal.add_stubs("require,process,s,==,type,last,children,[],updated,!=,class"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ForwardArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_forward_args",(function(_node){return this.$process(this.$s("args",this.$s("forward_arg","$")))}),1),$def(self,"$on_args",(function $$on_args(node){var $yield=$$on_args.$$p||nil,prev_children=nil;return delete $$on_args.$$p,$truthy(node.$children().$last())&&$eqeq(node.$children().$last().$type(),"forward_arg")?(prev_children=node.$children()["$[]"]($range(0,-2,!1)),node.$updated(nil,[].concat($to_a(prev_children)).concat([this.$s("restarg","$fwd_rest"),this.$s("blockarg","$fwd_block")]))):$send2(this,$find_super(this,"on_args",$$on_args,!1,!0),"on_args",[node],$yield)}),1),$def(self,"$on_send",(function $$on_send(node){var $yield=$$on_send.$$p||nil,prev_children=nil;return delete $$on_send.$$p,$truthy(node.$children().$last())&&$neqeq(node.$children().$last().$class(),$$("Symbol"))&&$eqeq(node.$children().$last().$type(),"forwarded_args")?(prev_children=node.$children()["$[]"]($range(0,-2,!1)),node.$updated(nil,[].concat($to_a(prev_children)).concat([this.$s("splat",this.$s("lvar","$fwd_rest")),this.$s("block_pass",this.$s("lvar","$fwd_block"))]))):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("require,<<,list,delete,use,disabled?,class,each,new,process"),self.$require("opal/rewriters/opal_engine_check"),self.$require("opal/rewriters/for_rewriter"),self.$require("opal/rewriters/explicit_writer_return"),self.$require("opal/rewriters/js_reserved_words"),self.$require("opal/rewriters/block_to_iter"),self.$require("opal/rewriters/dot_js_syntax"),self.$require("opal/rewriters/pattern_matching"),self.$require("opal/rewriters/logical_operator_assignment"),self.$require("opal/rewriters/binary_operator_assignment"),self.$require("opal/rewriters/hashes/key_duplicates_rewriter"),self.$require("opal/rewriters/dump_args"),self.$require("opal/rewriters/mlhs_args"),self.$require("opal/rewriters/inline_args"),self.$require("opal/rewriters/numblocks"),self.$require("opal/rewriters/returnable_logic"),self.$require("opal/rewriters/forward_args"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Rewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.sexp=nil,function(self,$parent_nesting){$def(self,"$list",(function(){var $ret_or_1;return null==this.list&&(this.list=nil),this.list=$truthy($ret_or_1=this.list)?$ret_or_1:[]}),0),$def(self,"$use",(function(rewriter){return this.$list()["$<<"](rewriter)}),1),$def(self,"$delete",(function(rewriter){return this.$list().$delete(rewriter)}),1),$def(self,"$disable",(function $$disable(){var $yield=$$disable.$$p||nil,self=this;return delete $$disable.$$p,function(){try{return self.disabled=!0,Opal.yieldX($yield,[])}finally{self.disabled=!1}}()}),0),$def(self,"$disabled?",(function(){var $a;return null==this.disabled&&(this.disabled=nil),$truthy(null!=($a=this.disabled)&&$a!==nil?"instance-variable":nil)?this.disabled:nil}),0)}(Opal.get_singleton_class(self)),self.$use($$$($$("Rewriters"),"OpalEngineCheck")),self.$use($$$($$("Rewriters"),"ForRewriter")),self.$use($$$($$("Rewriters"),"Numblocks")),self.$use($$$($$("Rewriters"),"ForwardArgs")),self.$use($$$($$("Rewriters"),"BlockToIter")),self.$use($$$($$("Rewriters"),"DotJsSyntax")),self.$use($$$($$("Rewriters"),"PatternMatching")),self.$use($$$($$("Rewriters"),"JsReservedWords")),self.$use($$$($$("Rewriters"),"LogicalOperatorAssignment")),self.$use($$$($$("Rewriters"),"BinaryOperatorAssignment")),self.$use($$$($$("Rewriters"),"ExplicitWriterReturn")),self.$use($$$($$$($$("Rewriters"),"Hashes"),"KeyDuplicatesRewriter")),self.$use($$$($$("Rewriters"),"ReturnableLogic")),self.$use($$$($$("Rewriters"),"DumpArgs")),self.$use($$$($$("Rewriters"),"MlhsArgs")),self.$use($$$($$("Rewriters"),"InlineArgs")),$def(self,"$initialize",(function(sexp){return this.sexp=sexp}),1),$def(self,"$process",(function(){return $truthy(this.$class()["$disabled?"]())||$send(this.$class().$list(),"each",[],(function $$3(rewriter_class){var self=null==$$3.$$s?this:$$3.$$s,rewriter=nil;return null==self.sexp&&(self.sexp=nil),null==rewriter_class&&(rewriter_class=nil),rewriter=rewriter_class.$new(),self.sexp=rewriter.$process(self.sexp)}),{$$arity:1,$$s:this}),this.sexp}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/parser/source_buffer"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$defs=Opal.defs;return function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"SourceBuffer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$recognize_encoding",(function $$recognize_encoding(string){var $ret_or_1,$yield=$$recognize_encoding.$$p||nil;return delete $$recognize_encoding.$$p,$truthy($ret_or_1=$send2(this,$find_super(this,"recognize_encoding",$$recognize_encoding,!1,!0),"recognize_encoding",[string],$yield))?$ret_or_1:$$$($$("Encoding"),"UTF_8")}),1)}($nesting[0],$$$($$$($$$("Parser"),"Source"),"Buffer"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/parser/default_config"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$send2=Opal.send2,$find_super=Opal.find_super,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$lambda=Opal.lambda,$defs=Opal.defs;return Opal.add_stubs("attr_accessor,all_errors_are_fatal=,diagnostics,-,ignore_warnings=,diagnostics_consumer,consumer=,extend,diagnostics_consumer=,new,rewrite,process,default_parser,default_parser_class"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Parser"),$nesting=[self].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"DefaultConfig"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);(function($base){var self=$module($base,"ClassMethods");self.$attr_accessor("diagnostics_consumer"),$def(self,"$default_parser",(function $$default_parser(){var $yield=$$default_parser.$$p||nil,parser=nil,$writer=nil;return delete $$default_parser.$$p,parser=$send2(this,$find_super(this,"default_parser",$$default_parser,!1,!0),"default_parser",[],$yield),$writer=[!0],$send(parser.$diagnostics(),"all_errors_are_fatal=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(parser.$diagnostics(),"ignore_warnings=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[this.$diagnostics_consumer()],$send(parser.$diagnostics(),"consumer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],parser}),0)})($nesting[0]),$defs(self,"$included",(function(klass){var $writer;return klass.$extend($$("ClassMethods")),$writer=[$lambda((function(diagnostic){return null==diagnostic&&(diagnostic=nil),nil}),1)],$send(klass,"diagnostics_consumer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$initialize",(function $$initialize($a){var self=this;return delete $$initialize.$$p,Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",[$$$($$$($$("Opal"),"AST"),"Builder").$new()],null)}),-1),$def(self,"$parse",(function $$parse(source_buffer){var parsed,$yield=$$parse.$$p||nil;return delete $$parse.$$p,parsed=$send2(this,$find_super(this,"parse",$$parse,!1,!0),"parse",[source_buffer],$yield),this.$rewrite(parsed)}),1),$def(self,"$rewrite",(function(node){return $$$($$("Opal"),"Rewriter").$new(node).$process()}),1)}($nesting[0],$nesting),function(self,$parent_nesting){return self.$attr_accessor("default_parser_class"),$def(self,"$default_parser",(function(){return this.$default_parser_class().$default_parser()}),0)}(Opal.get_singleton_class(self))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/parser/with_ruby_lexer"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),$$$=(Opal.nil,Opal.$$$),$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus;return Opal.add_stubs("include,default_parser_class=,-"),function($base,$super,$parent_nesting){var $writer,self=$klass($base,$super,"WithRubyLexer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$include($$$($$$($$("Opal"),"Parser"),"DefaultConfig")),$writer=[self],$send($$$($$("Opal"),"Parser"),"default_parser_class=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}($$$($$("Opal"),"Parser"),$$$($$("Parser"),"Ruby31"),$nesting)},Opal.modules["opal/parser/patch"]=function(Opal){var $base,self,$nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$rb_plus=Opal.rb_plus,$send=Opal.send,$hash2=Opal.hash2,$eqeqeq=Opal.eqeqeq,$eqeq=Opal.eqeq,$not=Opal.not,$rb_le=Opal.rb_le,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$rb_divide=Opal.rb_divide,$to_a=Opal.to_a,$module=Opal.module;return Opal.add_stubs("source,unpack,+,to_a,lines,end_with?,<<,map,chomp,=~,diagnostic,nil?,new,===,type,updated,dedent,first,children,==,empty?,interrupt,compact,encoding,split,force_encoding,length,map!,each_with_index,!,each_char,<=,-,>,*,/,[],[]=,join,respond_to?,send,value"),$base=$$("Parser"),(self=$klass($base,null,"Lexer")).$$prototype.source_buffer=nil,$def(self,"$source_buffer=",(function(source_buffer){var source=nil;return this.source_buffer=source_buffer,$truthy(this.source_buffer)?(source=this.source_buffer.$source(),this.source_pts=source.$unpack("U*")):this.source_pts=nil}),1),function($base,$super){var self=$klass($base,null,"Literal"),$proto=self.$$prototype;$proto.buffer_s=$proto.buffer=nil,Opal.udef(self,"$extend_string"),$def(self,"$extend_string",(function(string,ts,te){var $ret_or_1;return this.buffer_s=$truthy($ret_or_1=this.buffer_s)?$ret_or_1:ts,this.buffer_e=te,this.buffer=$rb_plus(this.buffer,string)}),3)}($$$($$("Parser"),"Lexer")),function($base,$super){var self=$klass($base,null,"Buffer"),$proto=self.$$prototype;$proto.lines=$proto.source=nil,$def(self,"$source_lines",(function(){var $ret_or_1,lines=nil;return this.lines=$truthy($ret_or_1=this.lines)?$ret_or_1:(lines=this.source.$lines().$to_a(),$truthy(this.source["$end_with?"]("\n"))&&lines["$<<"](""),$send(lines,"map",[],(function(line){return null==line&&(line=nil),line.$chomp("\n")}),1))}),0)}($$$($$("Parser"),"Source")),function($base,$super){var self=$klass($base,null,"Default");$def(self,"$check_lvar_name",(function(name,loc){return $truthy(name["$=~"](new RegExp("^[\\p{Ll}|_][\\p{L}\\p{Nl}\\p{Nd}_]*$","u")))?nil:this.$diagnostic("error","lvar_name",$hash2(["name"],{name:name}),loc)}),2),$def(self,"$dedent_string",(function(node,dedent_level){var dedenter=nil,$ret_or_1=nil,children=nil;return $truthy(dedent_level["$nil?"]())||(dedenter=$$$($$$($$$("Parser"),"Lexer"),"Dedenter").$new(dedent_level),$eqeqeq("str",$ret_or_1=node.$type())?node=node.$updated(nil,[dedenter.$dedent(node.$children().$first())]):($eqeqeq("dstr",$ret_or_1)||$eqeqeq("xstr",$ret_or_1))&&(children=$send(node.$children(),"map",[],(function(str_node){if(null==str_node&&(str_node=nil),$eqeq(str_node.$type(),"str")){if(str_node=str_node.$updated(nil,[dedenter.$dedent(str_node.$children().$first())]),$truthy(str_node.$children().$first()["$empty?"]()))return nil}else dedenter.$interrupt();return str_node}),1),node=node.$updated(nil,children.$compact()))),node}),2)}($$$($$("Parser"),"Builders")),function($base,$super,$parent_nesting){var self=$klass($base,null,"Dedenter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$dedent",(function(string){var original_encoding,self=this,lines=nil;return original_encoding=string.$encoding(),lines=string.$force_encoding($$$($$("Encoding"),"BINARY")).$split("\\\n"),$eqeq(lines.$length(),1)?lines=[string.$force_encoding(original_encoding)]:$send(lines,"map!",[],(function(s){return null==s&&(s=nil),s.$force_encoding(original_encoding)}),1),function(){var $brk=Opal.new_brk();try{$send(lines,"each_with_index",[],(function $$5(line,index){var $writer,self=null==$$5.$$s?this:$$5.$$s,left_to_remove=nil,remove=nil;return null==self.at_line_begin&&(self.at_line_begin=nil),null==self.dedent_level&&(self.dedent_level=nil),null==line&&(line=nil),null==index&&(index=nil),$eqeq(index,0)&&$not(self.at_line_begin)?nil:(left_to_remove=self.dedent_level,remove=0,function(){var $brk=Opal.new_brk();try{$send(line,"each_char",[],(function $$6(char$){var $ret_or_1,self=null==$$6.$$s?this:$$6.$$s;return null==self.dedent_level&&(self.dedent_level=nil),null==char$&&(char$=nil),$truthy($rb_le(left_to_remove,0))&&Opal.brk(nil,$brk),$eqeqeq(" ",$ret_or_1=char$)?(remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,1)):$eqeqeq("\t",$ret_or_1)?($truthy($rb_gt($rb_times($$("TAB_WIDTH"),$rb_plus($rb_divide(remove,$$("TAB_WIDTH")),1)),self.dedent_level))&&Opal.brk(nil,$brk),remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,$$("TAB_WIDTH"))):void Opal.brk(nil,$brk)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),$writer=[index,line["$[]"](Opal.Range.$new(remove,-1,!1))],$send(lines,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),{$$arity:2,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),string=lines.$join(),self.at_line_begin=string["$end_with?"]("\n"),string}),1)}($$$($$("Parser"),"Lexer"),0,$nesting),function($base){var self=$module($base,"Mixin");Opal.udef(self,"$process"),$def(self,"$process",(function(node){var type,on_handler,$ret_or_1=nil,$writer=nil,handler=nil;return null==this._on_handler_cache&&(this._on_handler_cache=nil),$truthy(node["$nil?"]())?nil:(this._on_handler_cache=$truthy($ret_or_1=this._on_handler_cache)?$ret_or_1:$hash2([],{}),type=node.$type(),on_handler=$truthy($ret_or_1=this._on_handler_cache["$[]"](type))?$ret_or_1:($writer=[type,(handler="on_"+type,$truthy(this["$respond_to?"](handler))||(handler="handler_missing"),handler)],$send(this._on_handler_cache,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy($ret_or_1=this.$send(on_handler,node))?$ret_or_1:node)}),1)}($$$($$("AST"),"Processor")),function($base,$super){var self=$klass($base,null,"Default");return Opal.udef(self,"$string_value"),$def(self,"$string_value",(function(token){return this.$value(token)}),1)}($$$($$("Parser"),"Builders"))},Opal.modules["opal/parser"]=function(Opal){var self=Opal.top;Opal.nil;return Opal.add_stubs("require"),self.$require("opal/ast/builder"),self.$require("opal/rewriter"),self.$require("opal/parser/source_buffer"),self.$require("opal/parser/default_config"),self.$require("opal/parser/with_ruby_lexer"),self.$require("opal/parser/patch")},Opal.modules["opal/fragment"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt,$to_a=Opal.to_a,$not=Opal.not,$send=Opal.send;return Opal.add_stubs("attr_reader,to_s,inspect,===,type,[],meta,source_map_name_for,sexp,==,class,+,parent,>,!,first,children,loc,respond_to?,dot,selector,operator,begin,line,location,column"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Fragment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.code=$proto.scope=$proto.sexp=nil,self.$attr_reader("code"),$def(self,"$initialize",(function(code,scope,sexp){return null==sexp&&(sexp=nil),this.code=code.$to_s(),this.sexp=sexp,this.scope=scope}),-3),$def(self,"$inspect",(function(){return"f("+this.code.$inspect()+")"}),0),$def(self,"$source_map_name_for",(function(sexp){var $a,$ret_or_1,$ret_or_2=nil,scope=nil,iters=nil,level=nil,const$=nil,name=nil;if($eqeqeq("top",$ret_or_1=sexp.$type()))return $eqeqeq("require",$ret_or_2=sexp.$meta()["$[]"]("kind"))?"":$eqeqeq("eval",$ret_or_2)?"(eval)":$eqeqeq("main",$ret_or_2)?"
      ":nil;if($eqeqeq("begin",$ret_or_1)||$eqeqeq("newline",$ret_or_1)||$eqeqeq("js_return",$ret_or_1))return $truthy(this.scope)?this.$source_map_name_for(this.scope.$sexp()):nil;if($eqeqeq("iter",$ret_or_1)){for(scope=this.scope,iters=1;$truthy(scope)&&$eqeq(scope.$class(),$$$($$("Nodes"),"IterNode"));)iters=$rb_plus(iters,1),scope=scope.$parent();return $truthy($rb_gt(iters,1))&&(level=" ("+iters+" levels)"),"block"+level+" in "+this.$source_map_name_for(scope.$sexp())}return $eqeqeq("self",$ret_or_1)?"self":$eqeqeq("module",$ret_or_1)?(const$=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],""):$eqeqeq("class",$ret_or_1)?(const$=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],""):$eqeqeq("const",$ret_or_1)?(scope=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],$not(scope)||$eqeq(scope.$type(),"cbase")?name.$to_s():this.$source_map_name_for(scope)+"::"+name):$eqeqeq("int",$ret_or_1)||$eqeqeq("def",$ret_or_1)?sexp.$children().$first():$eqeqeq("defs",$ret_or_1)||$eqeqeq("send",$ret_or_1)?sexp.$children()["$[]"](1):$eqeqeq("lvar",$ret_or_1)||$eqeqeq("lvasgn",$ret_or_1)||$eqeqeq("lvdeclare",$ret_or_1)||$eqeqeq("ivar",$ret_or_1)||$eqeqeq("ivasgn",$ret_or_1)||$eqeqeq("gvar",$ret_or_1)||$eqeqeq("cvar",$ret_or_1)||$eqeqeq("cvasgn",$ret_or_1)||$eqeqeq("gvars",$ret_or_1)||$eqeqeq("gvasgn",$ret_or_1)||$eqeqeq("arg",$ret_or_1)?sexp.$children().$first():$eqeqeq("str",$ret_or_1)||$eqeqeq("xstr",$ret_or_1)?this.$source_map_name_for(this.scope.$sexp()):nil}),1),$def(self,"$source_map_name",(function(){return $truthy(this.sexp)?this.$source_map_name_for(this.sexp):nil}),0),$def(self,"$location",(function(){var loc=nil,$ret_or_1=nil;return $not(this.sexp)?nil:$eqeq(this.sexp.$type(),"send")?(loc=this.sexp.$loc(),$truthy(loc["$respond_to?"]("dot"))?$truthy($ret_or_1=loc.$dot())?$ret_or_1:loc.$selector():$truthy(loc["$respond_to?"]("operator"))?loc.$operator():this.sexp):$eqeq(this.sexp.$type(),"iter")&&$truthy(loc["$respond_to?"]("begin"))?this.sexp.$loc().$begin():this.sexp}),0),$def(self,"$line",(function(){var $a;return($a=this.$location())===nil||null==$a?nil:$send($a,"line",[])}),0),$def(self,"$column",(function(){var $a;return($a=this.$location())===nil||null==$a?nil:$send($a,"column",[])}),0),$def(self,"$skip_source_map?",(function(){return this.sexp["$=="](!1)}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/helpers"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$truthy=Opal.truthy,$def=Opal.def,$rb_plus=Opal.rb_plus,$send=Opal.send,$hash2=Opal.hash2,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$slice=Opal.slice,$eqeq=Opal.eqeq,$rb_minus=Opal.rb_minus;return Opal.add_stubs("require,valid_name?,inspect,=~,to_s,+,indent,compiler,to_proc,parser_indent,push,fragment,current_indent,js_truthy_optimize,helper,expr,===,type,[],handlers,include?,truthy_optimize?,==,count,<<,method_calls,first,children,s,[]=,meta,-,new_temp,scope,wrap"),self.$require("opal/regexp_anchors"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Helpers"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$property",(function(name){return $truthy(this["$valid_name?"](name))?"."+name:"["+name.$inspect()+"]"}),1),$def(self,"$valid_name?",(function(name){return $$$($$$($$("Opal"),"Rewriters"),"JsReservedWords")["$valid_name?"](name)}),1),$def(self,"$mid_to_jsid",(function(mid){return $truthy(/\=|\+|\-|\*|\/|\!|\?|<|\>|\&|\||\^|\%|\~|\[|`/["$=~"](mid.$to_s()))?"['$"+mid+"']":$rb_plus(".$",mid)}),1),$def(self,"$indent",(function $$indent(){var block=$$indent.$$p||nil;return delete $$indent.$$p,$send(this.$compiler(),"indent",[],block.$to_proc())}),0),$def(self,"$current_indent",(function(){return this.$compiler().$parser_indent()}),0),$def(self,"$line",(function($a){var strs,self=this;return strs=Opal.slice.call(arguments),self.$push(self.$fragment("\n"+self.$current_indent(),$hash2(["loc"],{loc:!1}))),$send(self,"push",$to_a(strs))}),-1),$def(self,"$empty_line",(function(){return this.$push(this.$fragment("\n",$hash2(["loc"],{loc:!1})))}),0),$def(self,"$js_truthy",(function(sexp){var optimize;return $truthy(optimize=this.$js_truthy_optimize(sexp))?optimize:(this.$helper("truthy"),[this.$fragment("$truthy("),this.$expr(sexp),this.$fragment(")")])}),1),$def(self,"$js_truthy_optimize",(function(sexp){var $a,$ret_or_1,receiver=nil,mid=nil,args=nil,receiver_handler_class=nil,$ret_or_2=nil,allow_optimization_on_type=nil,$ret_or_3=nil,true_body=nil,false_body=nil,$writer=nil;return $eqeqeq("send",$ret_or_1=sexp.$type())?(receiver=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],mid=null==$a[1]?nil:$a[1],args=$slice.call($a,2),receiver_handler_class=$truthy($ret_or_2=receiver)?this.$compiler().$handlers()["$[]"](receiver.$type()):$ret_or_2,allow_optimization_on_type=$truthy($ret_or_2=$truthy($ret_or_3=$$$($$("Compiler"),"COMPARE")["$include?"](mid.$to_s()))?receiver_handler_class:$ret_or_3)?receiver_handler_class["$truthy_optimize?"]():$ret_or_2,$truthy(allow_optimization_on_type)||$eqeq(mid,"block_given?")?this.$expr(sexp):$eqeq(args.$count(),1)?$eqeqeq("==",$ret_or_2=mid)?(this.$helper("eqeq"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$eqeq("),this.$expr(receiver),this.$fragment(", "),this.$expr(args.$first()),this.$fragment(")")]):$eqeqeq("===",$ret_or_2)?(this.$helper("eqeqeq"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$eqeqeq("),this.$expr(receiver),this.$fragment(", "),this.$expr(args.$first()),this.$fragment(")")]):$eqeqeq("!=",$ret_or_2)?(this.$helper("neqeq"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$neqeq("),this.$expr(receiver),this.$fragment(", "),this.$expr(args.$first()),this.$fragment(")")]):nil:$eqeq(args.$count(),0)&&$eqeqeq("!",$ret_or_2=mid)?(this.$helper("not"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$not("),this.$expr(receiver),this.$fragment(")")]):nil):$eqeqeq("begin",$ret_or_1)?$eqeq(sexp.$children().$count(),1)?this.$js_truthy_optimize(sexp.$children().$first()):nil:$eqeqeq("if",$ret_or_1)?(null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],true_body=null==$a[1]?nil:$a[1],false_body=null==$a[2]?nil:$a[2],$eqeq(true_body,this.$s("true"))?($writer=["do_js_truthy_on_false_body",!0],$send(sexp.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$expr(sexp)):$eqeq(false_body,this.$s("false"))?($writer=["do_js_truthy_on_true_body",!0],$send(sexp.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$expr(sexp)):nil):nil}),1),$def(self,"$conditional_send",(function $$conditional_send(recvr){var receiver_temp,$yield=$$conditional_send.$$p||nil;return delete $$conditional_send.$$p,receiver_temp=this.$scope().$new_temp(),this.$push(receiver_temp+" = ",recvr),this.$push(", ("+receiver_temp+" === nil || "+receiver_temp+" == null) ? nil : "),Opal.yield1($yield,receiver_temp),this.$wrap("(",")")}),1)}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/base"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$defs=Opal.defs,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$Opal=Opal.Opal,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,include,each,[]=,handlers,-,each_with_index,define_method,[],children,attr_reader,type,top_scope,top_scope=,compile,raise,is_a?,fragment,<<,reverse_each,unshift,push,new,scope,error,loc,==,process,expr,add_scope_local,to_sym,add_scope_ivar,add_scope_gvar,add_scope_temp,helper,with_temp,to_proc,in_while?,instance_variable_get,has_rescue_else?,in_ensure,in_ensure?,in_resbody,in_resbody?,in_rescue,!,class_scope?,sclass?,+,parent,nesting,class_variable_owner_nesting_level,comments,compiler,name,source_buffer,expression,start_with?,end_with?,line"),self.$require("opal/nodes/helpers"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Base"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.compiler=$proto.sexp=$proto.fragments=$proto.level=nil,self.$include($$("Helpers")),$defs(self,"$handlers",(function(){var $ret_or_1;return null==this.handlers&&(this.handlers=nil),this.handlers=$truthy($ret_or_1=this.handlers)?$ret_or_1:$hash2([],{})}),0),$defs(self,"$handle",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each",[],(function $$1(type){var $writer;return null==type&&(type=nil),$writer=[type,null==$$1.$$s?this:$$1.$$s],$send($$("Base").$handlers(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})}),-1),$defs(self,"$children",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each_with_index",[],(function $$2(name,idx){var self=null==$$2.$$s?this:$$2.$$s;return null==name&&(name=nil),null==idx&&(idx=nil),$send(self,"define_method",[name],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return null==self.sexp&&(self.sexp=nil),self.sexp.$children()["$[]"](idx)}),{$$arity:0,$$s:self})}),{$$arity:2,$$s:self})}),-1),$defs(self,"$truthy_optimize?",(function(){return!1}),0),self.$attr_reader("compiler","type","sexp"),$def(self,"$initialize",(function(sexp,level,compiler){var $ret_or_1,$writer=nil;return this.sexp=sexp,this.type=sexp.$type(),this.level=level,this.compiler=compiler,$truthy($ret_or_1=this.compiler.$top_scope())?$ret_or_1:($writer=[this],$send(this.compiler,"top_scope=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),3),$def(self,"$children",(function(){return this.sexp.$children()}),0),$def(self,"$compile_to_fragments",(function(){var $a;return $truthy(null!=($a=this.fragments)&&$a!==nil?"instance-variable":nil)||(this.fragments=[],this.$compile()),this.fragments}),0),$def(self,"$compile",(function(){return this.$raise("Not Implemented")}),0),$def(self,"$push",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each",[],(function $$5(str){var self=null==$$5.$$s?this:$$5.$$s;return null==self.fragments&&(self.fragments=nil),null==str&&(str=nil),$truthy(str["$is_a?"]($$("String")))&&(str=self.$fragment(str)),self.fragments["$<<"](str)}),{$$arity:1,$$s:self})}),-1),$def(self,"$unshift",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"reverse_each",[],(function $$6(str){var self=null==$$6.$$s?this:$$6.$$s;return null==self.fragments&&(self.fragments=nil),null==str&&(str=nil),$truthy(str["$is_a?"]($$("String")))&&(str=self.$fragment(str)),self.fragments.$unshift(str)}),{$$arity:1,$$s:self})}),-1),$def(self,"$wrap",(function(pre,post){return this.$unshift(pre),this.$push(post)}),2),$def(self,"$fragment",(function(str,$kwargs){var loc,$ret_or_1;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(loc=$kwargs.$$smap.loc)&&(loc=!0),$$$($$("Opal"),"Fragment").$new(str,this.$scope(),$truthy($ret_or_1=loc)?this.sexp:$ret_or_1)}),-2),$def(self,"$error",(function(msg){return this.compiler.$error(msg)}),1),$def(self,"$scope",(function(){return this.compiler.$scope()}),0),$def(self,"$top_scope",(function(){return this.compiler.$top_scope()}),0),$def(self,"$s",(function(type,$a){var children,self=this;return children=Opal.slice.call(arguments,1),$$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:self.sexp.$loc()}))}),-2),$def(self,"$expr?",(function(){return this.level["$=="]("expr")}),0),$def(self,"$recv?",(function(){return this.level["$=="]("recv")}),0),$def(self,"$stmt?",(function(){return this.level["$=="]("stmt")}),0),$def(self,"$process",(function(sexp,level){return null==level&&(level="expr"),this.compiler.$process(sexp,level)}),-2),$def(self,"$expr",(function(sexp){return this.compiler.$process(sexp,"expr")}),1),$def(self,"$recv",(function(sexp){return this.compiler.$process(sexp,"recv")}),1),$def(self,"$stmt",(function(sexp){return this.compiler.$process(sexp,"stmt")}),1),$def(self,"$expr_or_nil",(function(sexp){return $truthy(sexp)?this.$expr(sexp):"nil"}),1),$def(self,"$add_local",(function(name){return this.$scope().$add_scope_local(name.$to_sym())}),1),$def(self,"$add_ivar",(function(name){return this.$scope().$add_scope_ivar(name)}),1),$def(self,"$add_gvar",(function(name){return this.$scope().$add_scope_gvar(name)}),1),$def(self,"$add_temp",(function(temp){return this.$scope().$add_scope_temp(temp)}),1),$def(self,"$helper",(function(name){return this.compiler.$helper(name)}),1),$def(self,"$with_temp",(function $$with_temp(){var block=$$with_temp.$$p||nil;return delete $$with_temp.$$p,$send(this.compiler,"with_temp",[],block.$to_proc())}),0),$def(self,"$in_while?",(function(){return this.compiler["$in_while?"]()}),0),$def(self,"$while_loop",(function(){return this.compiler.$instance_variable_get("@while_loop")}),0),$def(self,"$has_rescue_else?",(function(){return this.$scope()["$has_rescue_else?"]()}),0),$def(self,"$in_ensure",(function $$in_ensure(){var block=$$in_ensure.$$p||nil;return delete $$in_ensure.$$p,$send(this.$scope(),"in_ensure",[],block.$to_proc())}),0),$def(self,"$in_ensure?",(function(){return this.$scope()["$in_ensure?"]()}),0),$def(self,"$in_resbody",(function $$in_resbody(){var block=$$in_resbody.$$p||nil;return delete $$in_resbody.$$p,$send(this.$scope(),"in_resbody",[],block.$to_proc())}),0),$def(self,"$in_resbody?",(function(){return this.$scope()["$in_resbody?"]()}),0),$def(self,"$in_rescue",(function $$in_rescue(node){var block=$$in_rescue.$$p||nil;return delete $$in_rescue.$$p,$send(this.$scope(),"in_rescue",[node],block.$to_proc())}),1),$def(self,"$class_variable_owner_nesting_level",(function(){var cvar_scope=nil,nesting_level=nil,$ret_or_1=nil;for(cvar_scope=this.$scope(),nesting_level=0;$truthy($truthy($ret_or_1=cvar_scope)?cvar_scope["$class_scope?"]()["$!"]():$ret_or_1);)$truthy(cvar_scope["$sclass?"]())&&(nesting_level=$rb_plus(nesting_level,1)),cvar_scope=cvar_scope.$parent();return nesting_level}),0),$def(self,"$class_variable_owner",(function(){return $truthy(this.$scope())?this.$scope().$nesting()+"["+this.$class_variable_owner_nesting_level()+"]":"Opal.Object"}),0),$def(self,"$comments",(function(){return this.$compiler().$comments()["$[]"](this.sexp.$loc())}),0),$def(self,"$source_location",(function(){var file=nil;return file=this.sexp.$loc().$expression().$source_buffer().$name(),$truthy(file["$start_with?"]("corelib/"))&&(file=""),$truthy(file["$end_with?"](".js"))&&(file=""),"['"+file+"', "+this.sexp.$loc().$line()+"]"}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/literal"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def,$defs=Opal.defs,$truthy=Opal.truthy,$const_set=Opal.const_set,$hash2=Opal.hash2,$regexp=Opal.regexp,$send=Opal.send,$rb_plus=Opal.rb_plus,$lambda=Opal.lambda,$rb_le=Opal.rb_le,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$slice=Opal.slice,$Opal=Opal.Opal,$rb_gt=Opal.rb_gt;return Opal.add_stubs("require,handle,==,type,push,self,scope,to_s,children,value,recv?,wrap,freeze,join,keys,gsub,even?,length,last_match,+,chop,[],inspect,to_i,to_utf16,translate_escape_chars,valid_encoding?,helper,upcase,<=,call,-,>>,&,attr_accessor,extract_flags_and_value,select!,flags,=~,warning,compiler,compile_static_regexp,compile_dynamic_regexp,each_with_index,zero?,expr,any?,===,new,map,to_proc,flags=,empty?,s,single_line?,value=,include?,is_a?,updated,delete,source,expression,loc,private,>,!=,!,regexp,first,each,compile_inline?,compile_inline,compile_range_initialize,start,finish,raise,expr_or_nil,numerator,denominator,real,imag"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ValueNode");self.$handle("true","false","self","nil"),$def(self,"$compile",(function(){return $eqeq(this.$type(),"self")?this.$push(this.$scope().$self()):this.$push(this.$type().$to_s())}),0),$defs(self,"$truthy_optimize?",(function(){return!0}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"NumericNode");self.$handle("int","float"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$value().$to_s()),$truthy(this["$recv?"]())?this.$wrap("(",")"):nil}),0),$defs(self,"$truthy_optimize?",(function(){return!0}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"StringNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("str"),self.$children("value"),$const_set($nesting[0],"ESCAPE_CHARS",$hash2(["a","e"],{a:"\\u0007",e:"\\u001b"}).$freeze()),$const_set($nesting[0],"ESCAPE_REGEX",$regexp(["(\\\\+)([",$$("ESCAPE_CHARS").$keys().$join(""),"])"]).$freeze()),$def(self,"$translate_escape_chars",(function(inspect_string){return $send(inspect_string,"gsub",[$$("ESCAPE_REGEX")],(function(original){return null==original&&(original=nil),$truthy($$("Regexp").$last_match(1).$length()["$even?"]())?original:$rb_plus($$("Regexp").$last_match(1).$chop(),$$("ESCAPE_CHARS")["$[]"]($$("Regexp").$last_match(2)))}),1)}),1),$def(self,"$compile",(function(){var sanitized_value,string_value=nil;return string_value=this.$value(),sanitized_value=$send(string_value.$inspect(),"gsub",[/\\u\{([0-9a-f]+)\}/],(function $$4(){var code_point,self=null==$$4.$$s?this:$$4.$$s;return code_point=$$("Regexp").$last_match(1).$to_i(16),self.$to_utf16(code_point)}),{$$arity:0,$$s:this}),this.$push(this.$translate_escape_chars(sanitized_value)),$truthy(this.$value()["$valid_encoding?"]())?nil:(this.$helper("binary"),this.$wrap("$binary(",")"))}),0),$def(self,"$to_utf16",(function(code_point){var lead_surrogate,tail_surrogate,u=nil;return 1023,u=$lambda((function(code_unit){return null==code_unit&&(code_unit=nil),$rb_plus("\\u",code_unit.$to_s(16).$upcase())}),1),$truthy($rb_le(code_point,65535))?u.$call(code_point):(code_point=$rb_minus(code_point,65536),lead_surrogate=$rb_plus(55296,code_point["$>>"](10)),tail_surrogate=$rb_plus(56320,code_point["$&"](1023)),$rb_plus(u.$call(lead_surrogate),u.$call(tail_surrogate)))}),1)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"SymbolNode");self.$handle("sym"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$value().$to_s().$inspect())}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"RegexpNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.sexp=nil,self.$handle("regexp"),self.$attr_accessor("value","flags"),$const_set($nesting[0],"SUPPORTED_FLAGS",/[gimuy]/.$freeze()),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.$extract_flags_and_value()}),-1),$def(self,"$compile",(function(){return $send(this.$flags(),"select!",[],(function $$6(flag){var self=null==$$6.$$s?this:$$6.$$s;return null==flag&&(flag=nil),!!$truthy($$("SUPPORTED_FLAGS")["$=~"](flag))||(self.$compiler().$warning("Skipping the '"+flag+"' Regexp flag as it's not widely supported by JavaScript vendors."),!1)}),{$$arity:1,$$s:this}),$eqeq(this.$value().$type(),"str")?this.$compile_static_regexp():this.$compile_dynamic_regexp()}),0),$def(self,"$compile_dynamic_regexp",(function(){return this.$helper("regexp"),this.$push("$regexp(["),$send(this.$value().$children(),"each_with_index",[],(function $$7(v,index){var self=null==$$7.$$s?this:$$7.$$s;return null==v&&(v=nil),null==index&&(index=nil),$truthy(index["$zero?"]())||self.$push(", "),self.$push(self.$expr(v))}),{$$arity:2,$$s:this}),this.$push("]"),$truthy(this.$flags()["$any?"]())&&this.$push(", '"+this.$flags().$join()+"'"),this.$push(")")}),0),$def(self,"$compile_static_regexp",(function(){var value;return value=this.$value().$children()["$[]"](0),$eqeqeq("",value)?this.$push("/(?:)/"):this.$push(""+$$("Regexp").$new(value).$inspect()+this.$flags().$join())}),0),$def(self,"$extract_flags_and_value",(function(){var $a,$b,values=nil,flags_sexp=nil,$writer=nil,parts=nil;return $b=($b=($a=[].concat($to_a(this.$children()))).length-1)<0?0:$b,values=$slice.call($a,0,$b),flags_sexp=null==$a[$b]?nil:$a[$b],$writer=[$send(flags_sexp.$children(),"map",[],"to_s".$to_proc())],$send(this,"flags=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[$truthy(values["$empty?"]())?this.$s("str",""):$truthy(this["$single_line?"](values))?values["$[]"](0):$send(this,"s",["dstr"].concat($to_a(values)))],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(this.$flags()["$include?"]("x"))&&(parts=$send(this.$value().$children(),"map",[],(function $$8(part){var self=null==$$8.$$s?this:$$8.$$s,trimmed_value=nil;return null==part&&(part=nil),$truthy(part["$is_a?"]($$$($$$($Opal,"AST"),"Node")))&&$eqeq(part.$type(),"str")?(trimmed_value=part.$children()["$[]"](0).$gsub(/^\s*\#.*/,"").$gsub(/\s/,""),self.$s("str",trimmed_value)):part}),{$$arity:1,$$s:this}),$writer=[this.$value().$updated(nil,parts)],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$flags().$delete("x")),$eqeq(this.$value().$type(),"str")?($writer=[this.$s("str",this.$value().$children()["$[]"](0).$gsub("\\A","^").$gsub("\\z","$"))],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),0),$def(self,"$raw_value",(function(){var $writer;return $writer=[this.sexp.$loc().$expression().$source()],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),0),self.$private(),$def(self,"$single_line?",(function(values){var $ret_or_1,value=nil;return!$truthy($rb_gt(values.$length(),1))&&(value=values["$[]"](0),$truthy($ret_or_1=value.$type()["$!="]("str"))?$ret_or_1:value.$children()["$[]"](0)["$include?"]("\n")["$!"]())}),1)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"MatchCurrentLineNode");self.$handle("match_current_line"),self.$children("regexp"),$def(self,"$compile",(function(){var gvar_sexp,send_node;return gvar_sexp=this.$s("gvar","$_"),send_node=this.$s("send",gvar_sexp,"=~",this.$regexp()),this.$push(this.$expr(send_node))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"DynamicStringNode");self.$handle("dstr"),$def(self,"$compile",(function(){var skip_empty=nil;return $truthy($rb_gt(this.$children().$length(),1))&&$eqeq(this.$children().$first().$type(),"str")?skip_empty=!0:this.$push('""'),$send(this.$children(),"each",[],(function $$10(part){var self=null==$$10.$$s?this:$$10.$$s;return null==part&&(part=nil),$truthy(skip_empty)?skip_empty=!1:self.$push(" + "),$eqeq(part.$type(),"str")?self.$push(self.$expr(part)):self.$push("(",self.$expr(part),")"),$truthy(self["$recv?"]())?self.$wrap("(",")"):nil}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("Base")),function($base,$super){$klass($base,$super,"DynamicSymbolNode").$handle("dsym")}($nesting[0],$$("DynamicStringNode")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"RangeNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$children("start","finish"),$const_set($nesting[0],"SIMPLE_CHILDREN_TYPES",["int","float","str","sym"].$freeze()),$def(self,"$compile",(function(){return $truthy(this["$compile_inline?"]())?(this.$helper("range"),this.$compile_inline()):this.$compile_range_initialize()}),0),$def(self,"$compile_inline?",(function(){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $truthy($ret_or_1=$truthy($ret_or_2=this.$start()["$!"]())?$ret_or_2:$truthy($ret_or_3=this.$start().$type())?$$("SIMPLE_CHILDREN_TYPES")["$include?"](this.$start().$type()):$ret_or_3)?$truthy($ret_or_2=this.$finish()["$!"]())?$ret_or_2:$truthy($ret_or_3=this.$finish().$type())?$$("SIMPLE_CHILDREN_TYPES")["$include?"](this.$finish().$type()):$ret_or_3:$ret_or_1}),0),$def(self,"$compile_inline",(function(){return this.$raise($$("NotImplementedError"))}),0),$def(self,"$compile_range_initialize",(function(){return this.$raise($$("NotImplementedError"))}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"InclusiveRangeNode");self.$handle("irange"),$def(self,"$compile_inline",(function(){return this.$push("$range(",this.$expr_or_nil(this.$start()),", ",this.$expr_or_nil(this.$finish()),", false)")}),0),$def(self,"$compile_range_initialize",(function(){return this.$push("Opal.Range.$new(",this.$expr_or_nil(this.$start()),", ",this.$expr_or_nil(this.$finish()),", false)")}),0)}($nesting[0],$$("RangeNode")),function($base,$super){var self=$klass($base,$super,"ExclusiveRangeNode");self.$handle("erange"),$def(self,"$compile_inline",(function(){return this.$push("$range(",this.$expr_or_nil(this.$start()),", ",this.$expr_or_nil(this.$finish()),", true)")}),0),$def(self,"$compile_range_initialize",(function(){return this.$push("Opal.Range.$new(",this.$expr_or_nil(this.$start()),",",this.$expr_or_nil(this.$finish()),", true)")}),0)}($nesting[0],$$("RangeNode")),function($base,$super){var self=$klass($base,$super,"RationalNode");self.$handle("rational"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("Opal.Rational.$new("+this.$value().$numerator()+", "+this.$value().$denominator()+")")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ComplexNode");return self.$handle("complex"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("Opal.Complex.$new("+this.$value().$real()+", "+this.$value().$imag()+")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/variables"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send,$range=Opal.range,$eqeqeq=Opal.eqeqeq,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,handle,children,irb?,compiler,top?,scope,using_irb?,push,to_s,var_name,with_temp,property,wrap,add_local,expr,value,expr?,recv?,[],name,add_ivar,self,helper,add_gvar,===,handle_global_match,handle_post_match,handle_pre_match,raise,index,stmt?,class_variable_owner,inspect"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"LocalVariableNode");self.$handle("lvar"),self.$children("var_name"),$def(self,"$using_irb?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$compiler()["$irb?"]())?this.$scope()["$top?"]():$ret_or_1}),0),$def(self,"$compile",(function(){return $truthy(this["$using_irb?"]())?$send(this,"with_temp",[],(function $$2(tmp){var self=null==$$2.$$s?this:$$2.$$s;return null==tmp&&(tmp=nil),self.$push(self.$property(self.$var_name().$to_s())),self.$wrap("(("+tmp+" = Opal.irb_vars",") == null ? nil : "+tmp+")")}),{$$arity:1,$$s:this}):this.$push(this.$var_name().$to_s())}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"LocalAssignNode");self.$handle("lvasgn"),self.$children("var_name","value"),$def(self,"$using_irb?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$compiler()["$irb?"]())?this.$scope()["$top?"]():$ret_or_1}),0),$def(self,"$compile",(function(){return $truthy(this["$using_irb?"]())?this.$push("Opal.irb_vars"+this.$property(this.$var_name().$to_s())+" = "):(this.$add_local(this.$var_name().$to_s()),this.$push(this.$var_name()+" = ")),this.$push(this.$expr(this.$value())),($truthy(this["$recv?"]())||$truthy(this["$expr?"]()))&&$truthy(this.$value())?this.$wrap("(",")"):nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"LocalDeclareNode");self.$handle("lvdeclare"),self.$children("var_name"),$def(self,"$compile",(function(){return this.$add_local(this.$var_name().$to_s()),nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"InstanceVariableNode");self.$handle("ivar"),self.$children("name"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return name=this.$property(this.$var_name()),this.$add_ivar(name),this.$push(""+this.$scope().$self()+name)}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"InstanceAssignNode");self.$handle("ivasgn"),self.$children("name","value"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return name=this.$property(this.$var_name()),this.$push(""+this.$scope().$self()+name+" = "),this.$push(this.$expr(this.$value())),($truthy(this["$recv?"]())||$truthy(this["$expr?"]()))&&$truthy(this.$value())?this.$wrap("(",")"):nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"GlobalVariableNode");self.$handle("gvar"),self.$children("name"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return this.$helper("gvars"),name=this.$property(this.$var_name()),this.$add_gvar(name),this.$push("$gvars"+name)}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"BackRefNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("back_ref"),$def(self,"$compile",(function $$compile(){var $ret_or_1,$yield=$$compile.$$p||nil;return delete $$compile.$$p,this.$helper("gvars"),$eqeqeq("&",$ret_or_1=this.$var_name())?this.$handle_global_match():$eqeqeq("'",$ret_or_1)?this.$handle_post_match():$eqeqeq("`",$ret_or_1)?this.$handle_pre_match():$eqeqeq("+",$ret_or_1)?$send2(this,$find_super(this,"compile",$$compile,!1,!0),"compile",[],$yield):this.$raise($$("NotImplementedError"))}),0),$def(self,"$handle_global_match",(function(){return $send(this,"with_temp",[],(function $$4(tmp){return null==tmp&&(tmp=nil),(null==$$4.$$s?this:$$4.$$s).$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+"['$[]'](0))")}),{$$arity:1,$$s:this})}),0),$def(self,"$handle_pre_match",(function(){return $send(this,"with_temp",[],(function $$5(tmp){return null==tmp&&(tmp=nil),(null==$$5.$$s?this:$$5.$$s).$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+".$pre_match())")}),{$$arity:1,$$s:this})}),0),$def(self,"$handle_post_match",(function(){return $send(this,"with_temp",[],(function $$6(tmp){return null==tmp&&(tmp=nil),(null==$$6.$$s?this:$$6.$$s).$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+".$post_match())")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("GlobalVariableNode"),$nesting),function($base,$super){var self=$klass($base,$super,"GlobalAssignNode");self.$handle("gvasgn"),self.$children("name","value"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return this.$helper("gvars"),name=this.$property(this.$var_name()),this.$push("$gvars"+name+" = "),this.$push(this.$expr(this.$value())),($truthy(this["$recv?"]())||$truthy(this["$expr?"]()))&&$truthy(this.$value())?this.$wrap("(",")"):nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"NthrefNode");self.$handle("nth_ref"),self.$children("index"),$def(self,"$compile",(function(){return this.$helper("gvars"),$send(this,"with_temp",[],(function $$7(tmp){var self=null==$$7.$$s?this:$$7.$$s;return null==tmp&&(tmp=nil),self.$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+"['$[]']("+self.$index()+"))")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ClassVariableNode");self.$handle("cvar"),self.$children("name"),$def(self,"$compile",(function(){var tolerant=nil;return this.$helper("class_variable_get"),tolerant=!1,$truthy(this["$stmt?"]())&&(tolerant=!0),this.$push("$class_variable_get("+this.$class_variable_owner()+", '"+this.$name()+"', "+tolerant.$inspect()+")")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ClassVarAssignNode");return self.$handle("cvasgn"),self.$children("name","value"),$def(self,"$compile",(function(){return this.$helper("class_variable_set"),this.$push("$class_variable_set("+this.$class_variable_owner()+", '"+this.$name()+"', ",this.$expr(this.$value()),")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/constants"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def,$const_set=Opal.const_set;return Opal.add_stubs("require,handle,children,magical_data_const?,push,optimized_access?,helper,name,==,const_scope,s,absolute_const,top_scope,recv,eval?,compiler,relative_access,scope,nil?,eof_content,freeze,include?,base,expr,value,nesting"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ConstNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("const"),self.$children("const_scope","name"),$def(self,"$compile",(function(){return $truthy(this["$magical_data_const?"]())?this.$push("$__END__"):$truthy(this["$optimized_access?"]())?(this.$helper(""+this.$name()),this.$push("$"+this.$name())):$eqeq(this.$const_scope(),this.$s("cbase"))?this.$push(this.$top_scope().$absolute_const()+"('"+this.$name()+"')"):$truthy(this.$const_scope())?this.$push(this.$top_scope().$absolute_const()+"(",this.$recv(this.$const_scope()),", '"+this.$name()+"')"):($truthy(this.$compiler()["$eval?"]()),this.$push(this.$scope().$relative_access()+"('"+this.$name()+"')"))}),0),$def(self,"$magical_data_const?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.$const_scope()["$nil?"]())?this.$name()["$=="]("DATA"):$ret_or_2)?this.$compiler().$eof_content():$ret_or_1}),0),$const_set($nesting[0],"OPTIMIZED_ACCESS_CONSTS",["BasicObject","Object","Module","Class","Opal","Kernel","NilClass"].$freeze()),$def(self,"$optimized_access?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$const_scope()["$=="](this.$s("cbase")))?$$("OPTIMIZED_ACCESS_CONSTS")["$include?"](this.$name()):$ret_or_1}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"CbaseNode");self.$handle("cbase"),$def(self,"$compile",(function(){return this.$push("'::'")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ConstAssignNode");return self.$handle("casgn"),self.$children("base","name","value"),$def(self,"$compile",(function(){return this.$helper("const_set"),$truthy(this.$base())?this.$push("$const_set(",this.$expr(this.$base()),", '"+this.$name()+"', ",this.$expr(this.$value()),")"):this.$push("$const_set("+this.$scope().$nesting()+"[0], '"+this.$name()+"', ",this.$expr(this.$value()),")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["corelib/comparable"]=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$truthy=Opal.truthy,$module=Opal.module,$rb_gt=Opal.rb_gt,$rb_lt=Opal.rb_lt,$eqeqeq=Opal.eqeqeq,$Kernel=Opal.Kernel,$def=Opal.def;return Opal.add_stubs(">,<,===,raise,class,<=>,equal?"),function($base){var self=$module("::","Comparable"),$ret_or_1=nil;function normalize(what){return Opal.is_a(what,Opal.Integer)?what:$rb_gt(what,0)?1:$rb_lt(what,0)?-1:0}function cmp_or_fail(lhs,rhs){var cmp=lhs["$<=>"](rhs);return $truthy(cmp)||function(lhs,rhs){var class_name;class_name=$eqeqeq(nil,$ret_or_1=rhs)||$eqeqeq(!0,$ret_or_1)||$eqeqeq(!1,$ret_or_1)||$eqeqeq($$$("Integer"),$ret_or_1)||$eqeqeq($$$("Float"),$ret_or_1)?rhs.$inspect():rhs.$$class,$Kernel.$raise($$$("ArgumentError"),"comparison of "+lhs.$class()+" with "+class_name+" failed")}(lhs,rhs),normalize(cmp)}return $def(self,"$==",(function(other){var cmp;return!!$truthy(this["$equal?"](other))||this["$<=>"]!=Opal.Kernel["$<=>"]&&(this.$$comparable?(delete this.$$comparable,!1):!!$truthy(cmp=this["$<=>"](other))&&0==normalize(cmp))}),1),$def(self,"$>",(function(other){return cmp_or_fail(this,other)>0}),1),$def(self,"$>=",(function(other){return cmp_or_fail(this,other)>=0}),1),$def(self,"$<",(function(other){return cmp_or_fail(this,other)<0}),1),$def(self,"$<=",(function(other){return cmp_or_fail(this,other)<=0}),1),$def(self,"$between?",(function(min,max){return!$rb_lt(this,min)&&!$rb_gt(this,max)}),2),$def(self,"$clamp",(function(min,max){var c,excl;if(null==max&&(max=nil),max===nil&&(Opal.is_a(min,Opal.Range)||$Kernel.$raise($$$("TypeError"),"wrong argument type "+min.$class()+" (expected Range)"),excl=min.excl,max=min.end,min=min.begin,max!==nil&&excl&&$Kernel.$raise($$$("ArgumentError"),"cannot clamp with an exclusive range")),min!==nil&&max!==nil&&cmp_or_fail(min,max)>0&&$Kernel.$raise($$$("ArgumentError"),"min argument must be smaller than max argument"),min!==nil){if(0==(c=cmp_or_fail(this,min)))return this;if(c<0)return min}return max!==nil&&(c=cmp_or_fail(this,max))>0?max:this}),-2)}()},Opal.modules.pathname=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def,$defs=Opal.defs,$to_ary=Opal.to_ary,$send=Opal.send,$to_a=Opal.to_a,$neqeq=Opal.neqeq,$rb_plus=Opal.rb_plus,$not=Opal.not,$alias=Opal.alias,$module=Opal.module;return Opal.add_stubs("require,include,quote,===,to_s,path,respond_to?,to_path,is_a?,nil?,raise,class,==,new,pwd,attr_reader,!,relative?,chop_basename,basename,=~,source,[],rindex,sub,absolute?,expand_path,plus,unshift,length,!=,empty?,first,shift,+,join,dirname,pop,reverse_each,directory?,extname,<=>,nonzero?,proc,casecmp,cleanpath,inspect,include?,fill,map,entries"),self.$require("corelib/comparable"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Pathname"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.path=nil,self.$include($$("Comparable")),$const_set($nesting[0],"SEPARATOR_PAT",$regexp([$$("Regexp").$quote($$$($$("File"),"SEPARATOR"))])),$def(self,"$initialize",(function(path){return $eqeqeq($$("Pathname"),path)?this.path=path.$path().$to_s():$truthy(path["$respond_to?"]("to_path"))?this.path=path.$to_path():$truthy(path["$is_a?"]($$("String")))?this.path=path:$truthy(path["$nil?"]())?this.$raise($$("TypeError"),"no implicit conversion of nil into String"):this.$raise($$("TypeError"),"no implicit conversion of "+path.$class()+" into String"),$eqeq(this.path,"\0")?this.$raise($$("ArgumentError")):nil}),1),$defs(self,"$pwd",(function(){return this.$new($$("Dir").$pwd())}),0),self.$attr_reader("path"),$def(self,"$==",(function(other){return other.$path()["$=="](this.path)}),1),$def(self,"$absolute?",(function(){return this["$relative?"]()["$!"]()}),0),$def(self,"$relative?",(function(){var $b,path=nil,r=nil;for(path=this.path;$truthy(r=this.$chop_basename(path));)path=null==($b=$to_ary(r))[0]?nil:$b[0];return path["$=="]("")}),0),$def(self,"$chop_basename",(function(path){var base;return base=$$("File").$basename(path),$truthy($$("Regexp").$new("^"+$$$($$("Pathname"),"SEPARATOR_PAT").$source()+"?$")["$=~"](base))?nil:[path["$[]"](0,path.$rindex(base)),base]}),1),$def(self,"$root?",(function(){return this.path["$=="]("/")}),0),$def(self,"$parent",(function(){var new_path=nil;return new_path=this.path.$sub(/\/([^\/]+\/?$)/,""),$eqeq(new_path,"")&&(new_path=$truthy(this["$absolute?"]())?"/":"."),$$("Pathname").$new(new_path)}),0),$def(self,"$sub",(function($a){var args,self=this;return args=Opal.slice.call(arguments),$$("Pathname").$new($send(self.path,"sub",$to_a(args)))}),-1),$def(self,"$cleanpath",(function(){return Opal.normalize(this.path)}),0),$def(self,"$to_path",(function(){return this.path}),0),$def(self,"$hash",(function(){return this.path}),0),$def(self,"$expand_path",(function(){return $$("Pathname").$new($$("File").$expand_path(this.path))}),0),$def(self,"$+",(function(other){return $eqeqeq($$("Pathname"),other)||(other=$$("Pathname").$new(other)),$$("Pathname").$new(this.$plus(this.path,other.$to_s()))}),1),$def(self,"$plus",(function(path1,path2){var $b,prefix2=nil,index_list2=nil,basename_list2=nil,r2=nil,basename2=nil,prefix1=nil,$ret_or_1=nil,r1=nil,basename1=nil,suffix2=nil;for(prefix2=path2,index_list2=[],basename_list2=[];$truthy(r2=this.$chop_basename(prefix2));)prefix2=null==($b=$to_ary(r2))[0]?nil:$b[0],basename2=null==$b[1]?nil:$b[1],index_list2.$unshift(prefix2.$length()),basename_list2.$unshift(basename2);if($neqeq(prefix2,""))return path2;for(prefix1=path1;$truthy(!0);){for(;$truthy($truthy($ret_or_1=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="]("."):$ret_or_1);)index_list2.$shift(),basename_list2.$shift();if(!$truthy(r1=this.$chop_basename(prefix1)))break;if(prefix1=null==($b=$to_ary(r1))[0]?nil:$b[0],basename1=null==$b[1]?nil:$b[1],!$eqeq(basename1,".")){if($eqeq(basename1,"..")||$truthy(basename_list2["$empty?"]())||$neqeq(basename_list2.$first(),"..")){prefix1=$rb_plus(prefix1,basename1);break}index_list2.$shift(),basename_list2.$shift()}}if(r1=this.$chop_basename(prefix1),$not(r1)&&$truthy($regexp([$$("SEPARATOR_PAT")])["$=~"]($$("File").$basename(prefix1))))for(;$truthy($truthy($ret_or_1=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="](".."):$ret_or_1);)index_list2.$shift(),basename_list2.$shift();return $not(basename_list2["$empty?"]())?(suffix2=path2["$[]"](Opal.Range.$new(index_list2.$first(),-1,!1)),$truthy(r1)?$$("File").$join(prefix1,suffix2):$rb_plus(prefix1,suffix2)):$truthy(r1)?prefix1:$$("File").$dirname(prefix1)}),2),$def(self,"$join",(function($a){try{var $post_args,args,self=this,result=nil;return $post_args=Opal.slice.call(arguments),$truthy((args=$post_args)["$empty?"]())?self:(result=args.$pop(),$eqeqeq($$("Pathname"),result)||(result=$$("Pathname").$new(result)),$truthy(result["$absolute?"]())?result:($send(args,"reverse_each",[],(function(arg){if(null==arg&&(arg=nil),$eqeqeq($$("Pathname"),arg)||(arg=$$("Pathname").$new(arg)),result=$rb_plus(arg,result),!$truthy(result["$absolute?"]()))return nil;Opal.ret(result)}),1),$rb_plus(self,result)))}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$split",(function(){return[this.$dirname(),this.$basename()]}),0),$def(self,"$dirname",(function(){return $$("Pathname").$new($$("File").$dirname(this.path))}),0),$def(self,"$basename",(function(){return $$("Pathname").$new($$("File").$basename(this.path))}),0),$def(self,"$directory?",(function(){return $$("File")["$directory?"](this.path)}),0),$def(self,"$extname",(function(){return $$("File").$extname(this.path)}),0),$def(self,"$<=>",(function(other){return this.$path()["$<=>"](other.$path())}),1),$const_set($nesting[0],"SAME_PATHS",$truthy($$$($$("File"),"FNM_SYSCASE")["$nonzero?"]())?$send(self,"proc",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a.$casecmp(b)["$=="](0)}),2):$send(self,"proc",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a["$=="](b)}),2)),$def(self,"$relative_path_from",(function(base_directory){var $b,dest_directory,dest_prefix=nil,dest_names=nil,r=nil,basename=nil,base_prefix=nil,base_names=nil,$ret_or_1=nil,$ret_or_2=nil,relpath_names=nil;for(dest_directory=this.$cleanpath().$to_s(),base_directory=base_directory.$cleanpath().$to_s(),dest_prefix=dest_directory,dest_names=[];$truthy(r=this.$chop_basename(dest_prefix));)dest_prefix=null==($b=$to_ary(r))[0]?nil:$b[0],basename=null==$b[1]?nil:$b[1],$neqeq(basename,".")&&dest_names.$unshift(basename);for(base_prefix=base_directory,base_names=[];$truthy(r=this.$chop_basename(base_prefix));)base_prefix=null==($b=$to_ary(r))[0]?nil:$b[0],basename=null==$b[1]?nil:$b[1],$neqeq(basename,".")&&base_names.$unshift(basename);for($truthy($$("SAME_PATHS")["$[]"](dest_prefix,base_prefix))||this.$raise($$("ArgumentError"),"different prefix: "+dest_prefix.$inspect()+" and "+base_directory.$inspect());$truthy($truthy($ret_or_1=$truthy($ret_or_2=dest_names["$empty?"]()["$!"]())?base_names["$empty?"]()["$!"]():$ret_or_2)?$$("SAME_PATHS")["$[]"](dest_names.$first(),base_names.$first()):$ret_or_1);)dest_names.$shift(),base_names.$shift();return $truthy(base_names["$include?"](".."))&&this.$raise($$("ArgumentError"),"base_directory has ..: "+base_directory.$inspect()),base_names.$fill(".."),relpath_names=$rb_plus(base_names,dest_names),$truthy(relpath_names["$empty?"]())?$$("Pathname").$new("."):$$("Pathname").$new($send($$("File"),"join",$to_a(relpath_names)))}),1),$def(self,"$entries",(function(){return $send($$("Dir").$entries(this.path),"map",[],(function $$11(f){return null==f&&(f=nil),(null==$$11.$$s?this:$$11.$$s).$class().$new(f)}),{$$arity:1,$$s:this})}),0),$alias(self,"===","=="),$alias(self,"eql?","=="),$alias(self,"to_s","to_path"),$alias(self,"to_str","to_path")}($nesting[0],0,$nesting),function($base,$parent_nesting){var self=$module($base,"Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$Pathname",(function(path){return $$("Pathname").$new(path)}),1)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/break_finder"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$alias=Opal.alias;return Opal.add_stubs("require"),self.$require("opal/rewriter"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BreakFinder");return self.$$prototype.found_break=nil,$def(self,"$initialize",(function(){return this.found_break=!1}),0),$def(self,"$found_break?",(function(){return this.found_break}),0),$def(self,"$on_break",(function(node){return this.found_break=!0,node}),1),$def(self,"$stop_lookup",(function(node){return nil}),1),$alias(self,"on_for","stop_lookup"),$alias(self,"on_while","stop_lookup"),$alias(self,"on_while_post","stop_lookup"),$alias(self,"on_until","stop_lookup"),$alias(self,"on_until_post","stop_lookup"),$alias(self,"on_block","stop_lookup")}($nesting[0],$$$($$$($$("Opal"),"Rewriters"),"Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/call"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$defs=Opal.defs,$send2=Opal.send2,$find_super=Opal.find_super,$slice=Opal.slice,$truthy=Opal.truthy,$def=Opal.def,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$not=Opal.not,$neqeq=Opal.neqeq,$eqeqeq=Opal.eqeqeq,$to_ary=Opal.to_ary,$Opal=Opal.Opal,$range=Opal.range;return Opal.add_stubs("require,handle,attr_reader,freeze,[]=,-,define_method,to_proc,include?,type,s,handle_special,record_method?,<<,method_calls,compiler,to_sym,meth,using_eval?,compile_eval_var,using_irb?,compile_irb_var,default_compile,private,iter,new,process,found_break?,splat?,!,empty?,collect_refinements_temps,scope,auto_await?,push,await_encountered=,invoke_using_refinement?,compile_using_refined_send,invoke_using_send?,compile_using_send,compile_simple_call_chain,compile_break_catcher,helper,compile_receiver,compile_method_name,compile_arguments,compile_block_pass,compile_refinements,recv,receiver_sexp,expr,arglist,children,map,iter_has_break?,unshift,line,method_jsid,any?,==,recvr,mid_to_jsid,to_s,with_temp,intern,irb?,top?,variable_like?,eval?,scope_variables,nil?,updated,async_await,!=,match?,method,arity,[],each,add_special,call,inline_operators?,fragment,resolve,requires,file,dirname,cleanpath,join,Pathname,self,inspect,length,warning,autoloads,required_trees,force_encoding,encoding,+,handle_block_given_call,def?,mid,module_name,count,accepts_using?,using_refinement,first,refinements_temp,arity_check?,defines_lambda,push_nesting?,nesting,new_temp,scope_locals,source_location,size,last,dynamic_require_severity,handle_part,===,is_a?,expand_path,split,error,each_with_object,pop"),self.$require("set"),self.$require("pathname"),self.$require("opal/nodes/base"),self.$require("opal/rewriters/break_finder"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"CallNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.sexp=$proto.compiler=nil,self.$handle("send"),self.$attr_reader("recvr","meth","arglist","iter"),$const_set($nesting[0],"SPECIALS",$hash2([],{})),$const_set($nesting[0],"OPERATORS",$hash2(["+","-","*","/","<","<=",">",">="],{"+":"plus","-":"minus","*":"times","/":"divide","<":"lt","<=":"le",">":"gt",">=":"ge"}).$freeze()),$defs(self,"$add_special",(function $$add_special(name,options){var $writer,handler=$$add_special.$$p||nil;return delete $$add_special.$$p,null==options&&(options=$hash2([],{})),$writer=[name,options],$send($$("SPECIALS"),"[]=",$to_a($writer)),$rb_minus($writer.length,1),$send(this,"define_method",["handle_"+name],handler.$to_proc())}),-2),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$b,$c,$yield=$$initialize.$$p||nil,self=this,args=nil,rest=nil,last_arg=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$b=[].concat($to_a(self.sexp)),self.recvr=null==$b[0]?nil:$b[0],self.meth=null==$b[1]?nil:$b[1],args=$slice.call($b,2),$c=($c=($b=[].concat($to_a(args))).length-1)<0?0:$c,rest=$slice.call($b,0,$c),last_arg=null==$b[$c]?nil:$b[$c],$truthy(last_arg)&&$truthy(["iter","block_pass"]["$include?"](last_arg.$type()))?(self.iter=last_arg,args=rest):self.iter=nil,self.arglist=$send(self,"s",["arglist"].concat($to_a(args)))}),-1),$def(self,"$compile",(function(){try{return $send(this,"handle_special",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return $truthy(self["$record_method?"]())&&self.$compiler().$method_calls()["$<<"](self.$meth().$to_sym()),$truthy(self["$using_eval?"]())&&Opal.ret(self.$compile_eval_var()),$truthy(self["$using_irb?"]())&&Opal.ret(self.$compile_irb_var()),self.$default_compile()}),{$$arity:0,$$s:this})}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),0),self.$private(),$def(self,"$iter_has_break?",(function(){var finder=nil;return!!$truthy(this.$iter())&&((finder=$$$($$$($$("Opal"),"Rewriters"),"BreakFinder").$new()).$process(this.$iter()),finder["$found_break?"]())}),0),$def(self,"$invoke_using_send?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$iter())?$ret_or_1:this["$splat?"]()}),0),$def(self,"$invoke_using_refinement?",(function(){return this.$scope().$scope().$collect_refinements_temps()["$empty?"]()["$!"]()}),0),$def(self,"$default_compile",(function(){var $writer=nil;return $truthy(this["$auto_await?"]())&&(this.$push("await "),$writer=[!0],$send(this.$scope(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy(this["$invoke_using_refinement?"]())?this.$compile_using_refined_send():$truthy(this["$invoke_using_send?"]())?this.$compile_using_send():this.$compile_simple_call_chain(),this.$compile_break_catcher()}),0),$def(self,"$compile_using_send",(function(){return this.$helper("send"),this.$push("$send("),this.$compile_receiver(),this.$compile_method_name(),this.$compile_arguments(),this.$compile_block_pass(),this.$push(")")}),0),$def(self,"$compile_using_refined_send",(function(){return this.$helper("refined_send"),this.$push("$refined_send("),this.$compile_refinements(),this.$compile_receiver(),this.$compile_method_name(),this.$compile_arguments(),this.$compile_block_pass(),this.$push(")")}),0),$def(self,"$compile_receiver",(function(){return this.$push(this.$recv(this.$receiver_sexp()))}),0),$def(self,"$compile_method_name",(function(){return this.$push(", '"+this.$meth()+"'")}),0),$def(self,"$compile_arguments",(function(){return this.$push(", "),$truthy(this["$splat?"]())?this.$push(this.$expr(this.$arglist())):$truthy(this.$arglist().$children()["$empty?"]())?this.$push("[]"):this.$push("[",this.$expr(this.$arglist()),"]")}),0),$def(self,"$compile_block_pass",(function(){return $truthy(this.$iter())?this.$push(", ",this.$expr(this.$iter())):nil}),0),$def(self,"$compile_refinements",(function(){var refinements;return refinements=$send(this.$scope().$collect_refinements_temps(),"map",[],(function $$5(i){return null==i&&(i=nil),(null==$$5.$$s?this:$$5.$$s).$s("js_tmp",i)}),{$$arity:1,$$s:this}),this.$push(this.$expr($send(this,"s",["array"].concat($to_a(refinements)))),", ")}),0),$def(self,"$compile_break_catcher",(function(){return $truthy(this["$iter_has_break?"]())?(this.$unshift("return "),this.$unshift("(function(){var $brk = Opal.new_brk(); try {"),this.$line("} catch (err) { if (err === $brk) { return err.$v } else { throw err } }})()")):nil}),0),$def(self,"$compile_simple_call_chain",(function(){return this.$push(this.$recv(this.$receiver_sexp()),this.$method_jsid(),"(",this.$expr(this.$arglist()),")")}),0),$def(self,"$splat?",(function(){return $send(this.$arglist().$children(),"any?",[],(function(a){return null==a&&(a=nil),a.$type()["$=="]("splat")}),1)}),0),$def(self,"$receiver_sexp",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$recvr())?$ret_or_1:this.$s("self")}),0),$def(self,"$method_jsid",(function(){return this.$mid_to_jsid(this.$meth().$to_s())}),0),$def(self,"$record_method?",(function(){return!0}),0),$def(self,"$compile_irb_var",(function(){return $send(this,"with_temp",[],(function $$9(tmp){var lvar,call,self=null==$$9.$$s?this:$$9.$$s;return null==tmp&&(tmp=nil),lvar=self.$meth(),call=self.$s("send",self.$s("self"),self.$meth().$intern(),self.$s("arglist")),self.$push("(("+tmp+" = Opal.irb_vars."+lvar+") == null ? ",self.$expr(call)," : "+tmp+")")}),{$$arity:1,$$s:this})}),0),$def(self,"$compile_eval_var",(function(){return this.$push(this.$meth().$to_s())}),0),$def(self,"$using_irb?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.compiler["$irb?"]())?this.$scope()["$top?"]():$ret_or_2)?this["$variable_like?"]():$ret_or_1}),0),$def(self,"$using_eval?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.compiler["$eval?"]())?this.$scope()["$top?"]():$ret_or_2)?this.compiler.$scope_variables()["$include?"](this.$meth()):$ret_or_1}),0),$def(self,"$variable_like?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.$arglist()["$=="](this.$s("arglist")))?this.$recvr()["$nil?"]():$ret_or_2)?this.$iter()["$nil?"]():$ret_or_1}),0),$def(self,"$sexp_with_arglist",(function(){return this.sexp.$updated(nil,[this.$recvr(),this.$meth(),this.$arglist()])}),0),$def(self,"$auto_await?",(function(){var $ret_or_1,$ret_or_2,awaited_set=nil;return awaited_set=this.$compiler().$async_await(),$truthy($ret_or_1=$truthy($ret_or_2=awaited_set)?awaited_set["$!="](!0):$ret_or_2)?awaited_set["$match?"](this.$meth().$to_s()):$ret_or_1}),0),$def(self,"$handle_special",(function $$handle_special(){var compile_default=$$handle_special.$$p||nil,method=nil;return delete $$handle_special.$$p,$truthy($$("SPECIALS")["$include?"](this.$meth()))?(method=this.$method("handle_"+this.$meth()),$eqeq(method.$arity(),1)?method["$[]"](compile_default):method["$[]"]()):Opal.yieldX(compile_default,[])}),0),$send($$("OPERATORS"),"each",[],(function $CallNode$14(operator,name){var self=null==$CallNode$14.$$s?this:$CallNode$14.$$s;return null==operator&&(operator=nil),null==name&&(name=nil),$send(self,"add_special",[operator.$to_sym()],(function $$15(compile_default){var $a,self=null==$$15.$$s?this:$$15.$$s,lhs=nil,rhs=nil;return null==compile_default&&(compile_default=nil),$truthy(self["$invoke_using_refinement?"]())?compile_default.$call():$truthy(self.$compiler()["$inline_operators?"]())?($truthy(self["$record_method?"]())&&self.$compiler().$method_calls()["$<<"](operator.$to_sym()),self.$helper("rb_"+name),lhs=($a=[self.$expr(self.$recvr()),self.$expr(self.$arglist())])[0],rhs=$a[1],self.$push(self.$fragment("$rb_"+name+"(")),self.$push(lhs),self.$push(self.$fragment(", ")),self.$push(rhs),self.$push(self.$fragment(")"))):compile_default.$call()}),{$$arity:1,$$s:self})}),{$$arity:2,$$s:self}),$send(self,"add_special",["require"],(function $CallNode$16(compile_default){var self=null==$CallNode$16.$$s?this:$CallNode$16.$$s,str=nil;return null==compile_default&&(compile_default=nil),str=$$("DependencyResolver").$new(self.$compiler(),self.$arglist().$children()["$[]"](0)).$resolve(),$truthy(str["$nil?"]())||self.$compiler().$requires()["$<<"](str),compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["require_relative"],(function $CallNode$17(){var self=null==$CallNode$17.$$s?this:$CallNode$17.$$s,arg=nil,file=nil,dir=nil;return arg=self.$arglist().$children()["$[]"](0),file=self.$compiler().$file(),$eqeq(arg.$type(),"str")&&(dir=$$("File").$dirname(file),self.$compiler().$requires()["$<<"](self.$Pathname(dir).$join(arg.$children()["$[]"](0)).$cleanpath().$to_s())),self.$push(self.$fragment(self.$scope().$self()+".$require("+file.$inspect()+"+ '/../' + ")),self.$push(self.$process(self.$arglist())),self.$push(self.$fragment(")"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["autoload"],(function $CallNode$18(compile_default){var self=null==$CallNode$18.$$s?this:$CallNode$18.$$s,args=nil,str=nil;return null==compile_default&&(compile_default=nil),args=self.$arglist().$children(),$eqeq(args.$length(),2)&&$eqeq(args["$[]"](0).$type(),"sym")&&(str=$$("DependencyResolver").$new(self.$compiler(),args["$[]"](1),"ignore").$resolve(),$truthy(str["$nil?"]())?self.$compiler().$warning("File for autoload of constant '"+args["$[]"](0).$children()["$[]"](0)+"' could not be bundled!"):(self.$compiler().$requires()["$<<"](str),self.$compiler().$autoloads()["$<<"](str))),compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["require_tree"],(function $CallNode$19(compile_default){var $a,rest,self=null==$CallNode$19.$$s?this:$CallNode$19.$$s,first_arg=nil,relative_path=nil,dir=nil,full_path=nil;return null==compile_default&&(compile_default=nil),first_arg=null==($a=[].concat($to_a(self.$arglist().$children())))[0]?nil:$a[0],rest=$slice.call($a,1),$eqeq(first_arg.$type(),"str")&&(relative_path=first_arg.$children()["$[]"](0),self.$compiler().$required_trees()["$<<"](relative_path),dir=$$("File").$dirname(self.$compiler().$file()),(full_path=self.$Pathname(dir).$join(relative_path).$cleanpath().$to_s()).$force_encoding(relative_path.$encoding()),first_arg=first_arg.$updated(nil,[full_path])),self.arglist=self.$arglist().$updated(nil,$rb_plus([first_arg],rest)),compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["block_given?"],(function $CallNode$20(){var self=null==$CallNode$20.$$s?this:$CallNode$20.$$s;return null==self.sexp&&(self.sexp=nil),self.$push(self.$compiler().$handle_block_given_call(self.sexp))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__callee__"],(function $CallNode$21(){var self=null==$CallNode$21.$$s?this:$CallNode$21.$$s;return $truthy(self.$scope()["$def?"]())?self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect())):self.$push(self.$fragment("nil"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__method__"],(function $CallNode$22(){var self=null==$CallNode$22.$$s?this:$CallNode$22.$$s;return $truthy(self.$scope()["$def?"]())?self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect())):self.$push(self.$fragment("nil"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__dir__"],(function $CallNode$23(){var self=null==$CallNode$23.$$s?this:$CallNode$23.$$s;return self.$push($$("File").$dirname($$$($$("Opal"),"Compiler").$module_name(self.$compiler().$file())).$inspect())}),{$$arity:0,$$s:self}),$send(self,"add_special",["using"],(function $CallNode$24(compile_default){var self=null==$CallNode$24.$$s?this:$CallNode$24.$$s;return null==compile_default&&(compile_default=nil),$truthy(self.$scope()["$accepts_using?"]())&&$eqeq(self.$arglist().$children().$count(),1)?self.$using_refinement(self.$arglist().$children().$first()):compile_default.$call()}),{$$arity:1,$$s:self}),$def(self,"$using_refinement",(function(arg){var $a,prev,curr;return prev=null==($a=[].concat($to_a(this.$scope().$refinements_temp())))[0]?nil:$a[0],curr=null==$a[1]?nil:$a[1],$truthy(prev)?this.$push("("+curr+" = "+prev+".slice(), "+curr+".push(",this.$expr(arg),"), "+this.$scope().$self()+")"):this.$push("("+curr+" = [",this.$expr(arg),"], "+this.$scope().$self()+")")}),1),$send(self,"add_special",["debugger"],(function $CallNode$25(){var self=null==$CallNode$25.$$s?this:$CallNode$25.$$s;return self.$push(self.$fragment("debugger"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__OPAL_COMPILER_CONFIG__"],(function $CallNode$26(){var self=null==$CallNode$26.$$s?this:$CallNode$26.$$s;return self.$push(self.$fragment("Opal.hash({ arity_check: "+self.$compiler()["$arity_check?"]()+" })"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["lambda"],(function $CallNode$27(compile_default){return null==compile_default&&(compile_default=nil),$send((null==$CallNode$27.$$s?this:$CallNode$27.$$s).$scope(),"defines_lambda",[],(function(){return compile_default.$call()}),0)}),{$$arity:1,$$s:self}),$send(self,"add_special",["nesting"],(function $CallNode$29(compile_default){var push_nesting,self=null==$CallNode$29.$$s?this:$CallNode$29.$$s;return null==compile_default&&(compile_default=nil),push_nesting=self["$push_nesting?"](),$truthy(push_nesting)&&self.$push("(Opal.Module.$$nesting = "+self.$scope().$nesting()+", "),compile_default.$call(),$truthy(push_nesting)?self.$push(")"):nil}),{$$arity:1,$$s:self}),$send(self,"add_special",["constants"],(function $CallNode$30(compile_default){var push_nesting,self=null==$CallNode$30.$$s?this:$CallNode$30.$$s;return null==compile_default&&(compile_default=nil),push_nesting=self["$push_nesting?"](),$truthy(push_nesting)&&self.$push("(Opal.Module.$$nesting = "+self.$scope().$nesting()+", "),compile_default.$call(),$truthy(push_nesting)?self.$push(")"):nil}),{$$arity:1,$$s:self}),$send(self,"add_special",["eval"],(function $CallNode$31(compile_default){var temp,scope_variables,self=null==$CallNode$31.$$s?this:$CallNode$31.$$s;return null==compile_default&&(compile_default=nil),$neqeq(self.$arglist().$children().$length(),1)||$not([self.$s("self"),nil]["$include?"](self.$recvr()))?compile_default.$call():(self.$scope().$nesting(),temp=self.$scope().$new_temp(),scope_variables=$send(self.$scope().$scope_locals(),"map",[],"to_s".$to_proc()).$inspect(),self.$push("("+temp+" = ",self.$expr(self.$arglist())),self.$push(", typeof Opal.compile === 'function' ? eval(Opal.compile("+temp),self.$push(", {scope_variables: ",scope_variables),self.$push(", arity_check: "+self.$compiler()["$arity_check?"]()+", file: '(eval)', eval: true})) : "),self.$push(self.$scope().$self()+".$eval("+temp+"))"))}),{$$arity:1,$$s:self}),$send(self,"add_special",["local_variables"],(function $CallNode$32(compile_default){var scope_variables,self=null==$CallNode$32.$$s?this:$CallNode$32.$$s;return null==compile_default&&(compile_default=nil),$truthy([self.$s("self"),nil]["$include?"](self.$recvr()))?(scope_variables=$send(self.$scope().$scope_locals(),"map",[],"to_s".$to_proc()).$inspect(),self.$push(scope_variables)):compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["binding"],(function $CallNode$33(compile_default){var self=null==$CallNode$33.$$s?this:$CallNode$33.$$s;return null==compile_default&&(compile_default=nil),$truthy(self.$recvr()["$nil?"]())?(self.$scope().$nesting(),self.$push("Opal.Binding.$new("),self.$push(" function($code, $value) {"),self.$push(" if (typeof $value === 'undefined') {"),self.$push(" return eval($code);"),self.$push(" }"),self.$push(" else {"),self.$push(" return eval($code + ' = $value');"),self.$push(" }"),self.$push(" },"),self.$push(" ",$send(self.$scope().$scope_locals(),"map",[],"to_s".$to_proc()).$inspect(),","),self.$push(" ",self.$scope().$self(),","),self.$push(" ",self.$source_location()),self.$push(")")):compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["__await__"],(function $CallNode$34(compile_default){var self=null==$CallNode$34.$$s?this:$CallNode$34.$$s,$writer=nil;return null==compile_default&&(compile_default=nil),$truthy(self.$compiler().$async_await())?(self.$push(self.$fragment("(await (")),self.$push(self.$process(self.$recvr())),self.$push(self.$fragment("))")),$writer=[!0],$send(self.$scope(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):compile_default.$call()}),{$$arity:1,$$s:self}),$def(self,"$push_nesting?",(function(){var $ret_or_1,recv=nil,$ret_or_2=nil,$ret_or_3=nil;return recv=this.$children().$first(),$truthy($ret_or_1=this.$children().$size()["$=="](2))?$truthy($ret_or_2=recv["$nil?"]())?$ret_or_2:$truthy($ret_or_3=recv.$type()["$=="]("const"))?recv.$children().$last()["$=="]("Module"):$ret_or_3:$ret_or_1}),0),function($base,$super,$parent_nesting){var self=$klass($base,null,"DependencyResolver"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.compiler=$proto.sexp=$proto.missing_dynamic_require=nil,$def(self,"$initialize",(function(compiler,sexp,missing_dynamic_require){var $ret_or_1;return null==missing_dynamic_require&&(missing_dynamic_require=nil),this.compiler=compiler,this.sexp=sexp,this.missing_dynamic_require=$truthy($ret_or_1=missing_dynamic_require)?$ret_or_1:this.compiler.$dynamic_require_severity()}),-3),$def(self,"$resolve",(function(){return this.$handle_part(this.sexp)}),0),$def(self,"$handle_part",(function(sexp,missing_dynamic_require){var $a,$b,$ret_or_1=nil,recv=nil,meth=nil,args=nil,parts=nil;if(null==missing_dynamic_require&&(missing_dynamic_require=this.missing_dynamic_require),$truthy(sexp)){if($eqeqeq("str",$ret_or_1=sexp.$type()))return sexp.$children()["$[]"](0);if($eqeqeq("dstr",$ret_or_1))return $send(sexp.$children(),"map",[],(function $$36(i){return null==i&&(i=nil),(null==$$36.$$s?this:$$36.$$s).$handle_part(i)}),{$$arity:1,$$s:this}).$join();if($eqeqeq("begin",$ret_or_1)){if($eqeq(sexp.$children().$length(),1))return this.$handle_part(sexp.$children()["$[]"](0))}else if($eqeqeq("send",$ret_or_1)){if($b=sexp.$children(),recv=null==($a=$to_ary($b))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),parts=$send(args,"map",[],(function $$37(s){return null==s&&(s=nil),(null==$$37.$$s?this:$$37.$$s).$handle_part(s,"ignore")}),{$$arity:1,$$s:this}),$truthy(parts["$include?"](nil)))return nil;if($truthy(recv["$is_a?"]($$$($$$($Opal,"AST"),"Node")))&&$eqeq(recv.$type(),"const")&&$eqeq(recv.$children().$last(),"File")){if($eqeq(meth,"expand_path"))return $send(this,"expand_path",$to_a(parts));if($eqeq(meth,"join"))return this.$expand_path(parts.$join("/"));if($eqeq(meth,"dirname"))return this.$expand_path(parts["$[]"](0).$split("/")["$[]"]($range(0,-1,!0)).$join("/"))}else if($eqeq(meth,"__dir__"))return $$("File").$dirname($$$($$("Opal"),"Compiler").$module_name(this.compiler.$file()))}}return $eqeqeq("error",$ret_or_1=missing_dynamic_require)?this.compiler.$error("Cannot handle dynamic require",this.sexp.$line()):$eqeqeq("warning",$ret_or_1)?this.compiler.$warning("Cannot handle dynamic require",this.sexp.$line()):nil}),-2),$def(self,"$expand_path",(function(path,base){return null==base&&(base=""),$send((base+"/"+path).$split("/"),"each_with_object",[[]],(function(part,p){return null==part&&(part=nil),null==p&&(p=nil),$eqeq(part,"")?nil:$eqeq(part,"..")?p.$pop():p["$<<"](part)}),2).$join("/")}),-2)}($nesting[0],0,$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/csend"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$def=Opal.def;return Opal.add_stubs("require,handle,helper,conditional_send,recv,receiver_sexp,push,compile_method_name,compile_arguments,compile_block_pass"),self.$require("opal/nodes/call"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"CSendNode");return self.$handle("csend"),$def(self,"$default_compile",(function(){return this.$helper("send"),$send(this,"conditional_send",[this.$recv(this.$receiver_sexp())],(function $$1(receiver_temp){var self=null==$$1.$$s?this:$$1.$$s;return null==receiver_temp&&(receiver_temp=nil),self.$push("$send(",receiver_temp),self.$compile_method_name(),self.$compile_arguments(),self.$compile_block_pass(),self.$push(")")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("CallNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/call_special"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$send=Opal.send;return Opal.add_stubs("require,handle,children,push,recv,recvr,expr,property,value,<<,default_compile,meth,receiver_sexp,method_jsid,compile_arguments,iter,s,lhs,rhs,==,type,first,map,flatten,scan,to_proc,empty?,stmt?,process"),self.$require("opal/nodes/base"),self.$require("opal/nodes/call"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"JsAttrNode");self.$handle("jsattr"),self.$children("recvr","property"),$def(self,"$compile",(function(){return this.$push(this.$recv(this.$recvr()),"[",this.$expr(this.$property()),"]")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JsAttrAsgnNode");self.$handle("jsattrasgn"),self.$children("recvr","property","value"),$def(self,"$compile",(function(){return this.$push(this.$recv(this.$recvr()),"[",this.$expr(this.$property()),"] = ",this.$expr(this.$value()))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JsCallNode"),$proto=self.$$prototype;$proto.iter=$proto.arglist=nil,self.$handle("jscall"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$truthy(self.iter)&&(self.arglist=self.arglist["$<<"](self.iter)),self.iter=nil}),-1),$def(self,"$compile",(function(){return this.$default_compile()}),0),$def(self,"$method_jsid",(function(){return"."+this.$meth()}),0),$def(self,"$compile_using_send",(function(){return this.$push(this.$recv(this.$receiver_sexp()),this.$method_jsid(),".apply(null"),this.$compile_arguments(),$truthy(this.$iter())&&this.$push(".concat(",this.$expr(this.$iter()),")"),this.$push(")")}),0)}($nesting[0],$$("CallNode")),function($base,$super){var self=$klass($base,$super,"Match3Node");return self.$$prototype.level=nil,self.$handle("match_with_lvasgn"),self.$children("lhs","rhs"),$def(self,"$compile",(function(){var sexp=nil,re=nil,names=nil,names_def=nil;return sexp=this.$s("send",this.$lhs(),"=~",this.$rhs()),$eqeq(this.$lhs().$type(),"regexp")&&$eqeq(this.$lhs().$children().$first().$type(),"str")&&(re=this.$lhs().$children().$first().$children().$first(),names=$send(re.$scan(/\(\?<([^>]*)>/).$flatten(),"map",[],"to_sym".$to_proc()),$truthy(names["$empty?"]())||(names_def=this.$s("lvasgn","$m3names",this.$s("if",this.$s("gvar","$~"),this.$s("send",this.$s("gvar","$~"),"named_captures"),this.$s("hash"))),names=$send(names,"map",[],(function $$1(name){var self=null==$$1.$$s?this:$$1.$$s;return null==name&&(name=nil),self.$s("lvasgn",name,self.$s("send",self.$s("lvar","$m3names"),"[]",self.$s("sym",name)))}),{$$arity:1,$$s:this}),sexp=$truthy(this["$stmt?"]())?$send(this,"s",["begin",sexp,names_def].concat($to_a(names))):$send(this,"s",["begin",this.$s("lvasgn","$m3tmp",sexp),names_def].concat($to_a(names)).concat([this.$s("lvar","$m3tmp")])))),this.$push(this.$process(sexp,this.level))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/scope"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$def=Opal.def,$send=Opal.send,$rb_minus=Opal.rb_minus,$truthy=Opal.truthy,$not=Opal.not,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$hash2=Opal.hash2;return Opal.add_stubs("require,attr_accessor,attr_reader,indent,scope,compiler,scope=,-,==,iter?,!,class?,dup,push,map,ivars,gvars,empty?,<<,parser_indent,join,+,fragment,def_in_class?,add_proto_ivar,include?,has_local?,|,scope_locals,reject,start_with?,to_s,has_temp?,pop,next_temp,loop,succ,uses_block!,identify!,valid_name?,mid,compact,parent,name,scope_name,unique_temp,lambda?,def?,type,nil?,rescue_else_sexp,last,class,collect_refinements_temps,add_scope_local,new_refinements_temp,identity,block_name=,add_temp,block_name,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ScopeNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.type=$proto.is_lambda=$proto.lambda_definition=$proto.defs=$proto.parent=$proto.temps=$proto.locals=$proto.proto_ivars=$proto.compiler=$proto.ivars=$proto.gvars=$proto.args=$proto.queue=$proto.while_stack=$proto.identity=$proto.uses_block=$proto.rescues=$proto.in_resbody=$proto.in_ensure=$proto.next_retry_id=$proto.refinements_temp=$proto.block_prepared=nil,self.$attr_accessor("parent"),self.$attr_accessor("name"),self.$attr_accessor("block_name"),self.$attr_reader("scope_name"),self.$attr_reader("locals"),self.$attr_reader("ivars"),self.$attr_reader("gvars"),self.$attr_accessor("mid"),self.$attr_accessor("defs"),self.$attr_reader("methods"),self.$attr_accessor("catch_return","has_break","has_retry"),self.$attr_accessor("rescue_else_sexp"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.locals=[],self.temps=[],self.args=[],self.ivars=[],self.gvars=[],self.parent=nil,self.queue=[],self.unique="a",self.while_stack=[],self.identity=nil,self.defs=nil,self.methods=[],self.uses_block=!1,self.in_ensure=!1,self.proto_ivars=[]}),-1),$def(self,"$in_scope",(function $$in_scope(){var $yield=$$in_scope.$$p||nil;return delete $$in_scope.$$p,$send(this,"indent",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s,$writer=nil;return null==self.parent&&(self.parent=nil),self.parent=self.$compiler().$scope(),$writer=[self],$send(self.$compiler(),"scope=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],Opal.yield1($yield,self),$writer=[self.parent],$send(self.$compiler(),"scope=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:0,$$s:this})}),0),$def(self,"$class_scope?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.type["$=="]("class"))?$ret_or_1:this.type["$=="]("module")}),0),$def(self,"$class?",(function(){return this.type["$=="]("class")}),0),$def(self,"$module?",(function(){return this.type["$=="]("module")}),0),$def(self,"$sclass?",(function(){return this.type["$=="]("sclass")}),0),$def(self,"$top?",(function(){return this.type["$=="]("top")}),0),$def(self,"$iter?",(function(){return this.type["$=="]("iter")}),0),$def(self,"$def?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.type["$=="]("def"))?$ret_or_1:this.type["$=="]("defs")}),0),$def(self,"$lambda?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$iter?"]())?this.is_lambda:$ret_or_1}),0),$def(self,"$is_lambda!",(function(){return this.is_lambda=!0}),0),$def(self,"$defines_lambda",(function $$defines_lambda(){var $yield=$$defines_lambda.$$p||nil;return delete $$defines_lambda.$$p,this.lambda_definition=!0,Opal.yieldX($yield,[]),this.lambda_definition=!1}),0),$def(self,"$lambda_definition?",(function(){return this.lambda_definition}),0),$def(self,"$def_in_class?",(function(){var $ret_or_1,$ret_or_2,$ret_or_3;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.defs["$!"]())?this.type["$=="]("def"):$ret_or_3)?this.parent:$ret_or_2)?this.parent["$class?"]():$ret_or_1}),0),$def(self,"$to_vars",(function(){var indent,vars=nil,iv=nil,gv=nil,str=nil;return vars=this.temps.$dup(),$send(vars,"push",$to_a($send(this.locals,"map",[],(function(l){return null==l&&(l=nil),l+" = nil"}),1))),iv=$send(this.$ivars(),"map",[],(function(ivar){return null==ivar&&(ivar=nil),"if (self"+ivar+" == null) self"+ivar+" = nil;\n"}),1),gv=$send(this.$gvars(),"map",[],(function(gvar){return null==gvar&&(gvar=nil),"if ($gvars"+gvar+" == null) $gvars"+gvar+" = nil;\n"}),1),$truthy(this["$class?"]())&&$not(this.proto_ivars["$empty?"]())&&vars["$<<"]("$proto = self.$$prototype"),indent=this.compiler.$parser_indent(),str=$truthy(vars["$empty?"]())?"":"var "+vars.$join(", ")+";\n",$truthy(this.$ivars()["$empty?"]())||(str=$rb_plus(str,""+indent+iv.$join(indent))),$truthy(this.$gvars()["$empty?"]())||(str=$rb_plus(str,""+indent+gv.$join(indent))),$truthy(this["$class?"]())&&$not(this.proto_ivars["$empty?"]())&&(str=str+"\n"+indent+$send(this.proto_ivars,"map",[],(function(i){return null==i&&(i=nil),"$proto"+i}),1).$join(" = ")+" = nil;"),this.$fragment(str)}),0),$def(self,"$add_scope_ivar",(function(ivar){return $truthy(this["$def_in_class?"]())?this.parent.$add_proto_ivar(ivar):$truthy(this.ivars["$include?"](ivar))?nil:this.ivars["$<<"](ivar)}),1),$def(self,"$add_scope_gvar",(function(gvar){return $truthy(this.gvars["$include?"](gvar))?nil:this.gvars["$<<"](gvar)}),1),$def(self,"$add_proto_ivar",(function(ivar){return $truthy(this.proto_ivars["$include?"](ivar))?nil:this.proto_ivars["$<<"](ivar)}),1),$def(self,"$add_arg",(function(arg){return $truthy(this.args["$include?"](arg))||this.args["$<<"](arg),arg}),1),$def(self,"$add_scope_local",(function(local){return $truthy(this["$has_local?"](local))?nil:this.locals["$<<"](local)}),1),$def(self,"$has_local?",(function(local){return!!($truthy(this.locals["$include?"](local))||$truthy(this.args["$include?"](local))||$truthy(this.temps["$include?"](local)))||!(!$truthy(this.parent)||!$eqeq(this.type,"iter"))&&this.parent["$has_local?"](local)}),1),$def(self,"$scope_locals",(function(){var locals;return locals=this.locals["$|"](this.args)["$|"]($truthy(this.parent)&&$eqeq(this.type,"iter")?this.parent.$scope_locals():[]),$send(locals,"reject",[],(function(i){return null==i&&(i=nil),i.$to_s()["$start_with?"]("$")}),1)}),0),$def(self,"$add_scope_temp",(function(tmp){return $truthy(this["$has_temp?"](tmp))?nil:this.temps.$push(tmp)}),1),$def(self,"$has_temp?",(function(tmp){return this.temps["$include?"](tmp)}),1),$def(self,"$new_temp",(function(){var tmp;return $truthy(this.queue["$empty?"]())?(tmp=this.$next_temp(),this.temps["$<<"](tmp),tmp):this.queue.$pop()}),0),$def(self,"$next_temp",(function(){var self=this,tmp=nil;return tmp=nil,function(){var $brk=Opal.new_brk();try{$send(self,"loop",[],(function $$20(){var self=null==$$20.$$s?this:$$20.$$s;if(null==self.unique&&(self.unique=nil),tmp="$"+self.unique,self.unique=self.unique.$succ(),$truthy(self["$has_local?"](tmp)))return nil;Opal.brk(nil,$brk)}),{$$arity:0,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),tmp}),0),$def(self,"$queue_temp",(function(name){return this.queue["$<<"](name)}),1),$def(self,"$push_while",(function(){var info;return info=$hash2([],{}),this.while_stack.$push(info),info}),0),$def(self,"$pop_while",(function(){return this.while_stack.$pop()}),0),$def(self,"$in_while?",(function(){return this.while_stack["$empty?"]()["$!"]()}),0),$def(self,"$uses_block!",(function(){return $eqeq(this.type,"iter")&&$truthy(this.parent)?this.parent["$uses_block!"]():(this.uses_block=!0,this["$identify!"]())}),0),$def(self,"$identify!",(function(name){var $ret_or_1=nil,$ret_or_2=nil,$ret_or_3=nil;return null==name&&(name=nil),$truthy(this.identity)||($truthy(this["$valid_name?"](this.$mid()))?this.identity="$$"+this.$mid():(name=$truthy($ret_or_1=name)?$ret_or_1:[$truthy($ret_or_2=this.$parent())?$truthy($ret_or_3=this.$parent().$name())?$ret_or_3:this.$parent().$scope_name():$ret_or_2,this.$mid()].$compact().$join("_"),this.identity=this.compiler.$unique_temp(name))),this.identity}),-1),self.$attr_reader("identity"),$def(self,"$find_parent_def",(function(){var scope=nil;for(scope=this;$truthy(scope=scope.$parent());)if($truthy(scope["$def?"]())||$truthy(scope["$lambda?"]()))return scope;return nil}),0),$def(self,"$super_chain",(function(){var $a,chain=nil,scope=nil,defn=nil,mid=nil;for(chain=($a=[[],this,"null","null"])[0],scope=$a[1],defn=$a[2],mid=$a[3];$truthy(scope);){if(!$eqeq(scope.$type(),"iter")){if($truthy(["def","defs"]["$include?"](scope.$type()))){defn=scope["$identify!"](),mid="'"+scope.$mid()+"'";break}break}chain["$<<"](scope["$identify!"]()),$truthy(scope.$parent())&&(scope=scope.$parent())}return[chain,defn,mid]}),0),$def(self,"$uses_block?",(function(){return this.uses_block}),0),$def(self,"$has_rescue_else?",(function(){return this.$rescue_else_sexp()["$nil?"]()["$!"]()}),0),$def(self,"$in_rescue",(function $$in_rescue(node){var $ret_or_1,result,$yield=$$in_rescue.$$p||nil;return delete $$in_rescue.$$p,this.rescues=$truthy($ret_or_1=this.rescues)?$ret_or_1:[],this.rescues.$push(node),result=Opal.yieldX($yield,[]),this.rescues.$pop(),result}),1),$def(self,"$current_rescue",(function(){return this.rescues.$last()}),0),$def(self,"$in_resbody",(function $$in_resbody(){var result,$yield=$$in_resbody.$$p||nil;return delete $$in_resbody.$$p,$yield===nil?nil:(this.in_resbody=!0,result=Opal.yieldX($yield,[]),this.in_resbody=!1,result)}),0),$def(self,"$in_resbody?",(function(){return this.in_resbody}),0),$def(self,"$in_ensure",(function $$in_ensure(){var result,$yield=$$in_ensure.$$p||nil;return delete $$in_ensure.$$p,$yield===nil?nil:(this.in_ensure=!0,result=Opal.yieldX($yield,[]),this.in_ensure=!1,result)}),0),$def(self,"$in_ensure?",(function(){return this.in_ensure}),0),$def(self,"$gen_retry_id",(function(){var $ret_or_1;return this.next_retry_id=$truthy($ret_or_1=this.next_retry_id)?$ret_or_1:"retry_0",this.next_retry_id=this.next_retry_id.$succ()}),0),$def(self,"$accepts_using?",(function(){return[$$("TopNode"),$$("ModuleNode"),$$("ClassNode"),$$("IterNode")]["$include?"](this.$class())}),0),$def(self,"$collect_refinements_temps",(function(temps){return null==temps&&(temps=[]),$truthy(this.refinements_temp)&&temps["$<<"](this.refinements_temp),$truthy(this.$parent())?this.$parent().$collect_refinements_temps(temps):temps}),-1),$def(self,"$new_refinements_temp",(function(){var var$;return var$=this.$compiler().$unique_temp("$refn"),this.$add_scope_local(var$),var$}),0),$def(self,"$refinements_temp",(function(){var $a,prev,curr;return prev=($a=[this.refinements_temp,this.$new_refinements_temp()])[0],curr=$a[1],this.refinements_temp=curr,[prev,curr]}),0),$def(self,"$self",(function(){return this.define_self=!0,"self"}),0),$def(self,"$nesting",(function(){return this.define_nesting=!0,"$nesting"}),0),$def(self,"$relative_access",(function(){return this.define_relative_access=this.define_nesting=!0,"$$"}),0),$def(self,"$prepare_block",(function(block_name){var scope_name,$writer=nil;return null==block_name&&(block_name=nil),scope_name=this.$scope().$identity(),$truthy(block_name)&&($send(this,"block_name=",$to_a($writer=[block_name])),$writer[$rb_minus($writer.length,1)]),this.$add_temp(this.$block_name()+" = "+scope_name+".$$p || nil"),$truthy(this.block_prepared)?nil:(this.$line("delete "+scope_name+".$$p;"),this.block_prepared=!0)}),-1),self.$attr_accessor("await_encountered")}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/module"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_ary=Opal.to_ary,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$def=Opal.def;return Opal.add_stubs("require,handle,children,name_and_base,helper,nil?,body,stmt?,unshift,line,in_scope,name=,scope,-,compile_body,await_encountered,await_encountered=,parent,+,nesting,private,cid,expr,stmt,returns,compiler,empty_line,add_temp,to_vars"),self.$require("opal/nodes/scope"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ModuleNode"),$proto=self.$$prototype;return $proto.define_nesting=$proto.define_relative_access=nil,self.$handle("module"),self.$children("cid","body"),$def(self,"$compile",(function(){var $a,$b,name,base,await_begin=nil,await_end=nil,async=nil,$writer=nil;return $b=this.$name_and_base(),$a=$to_ary($b),name=null==$a[0]?nil:$a[0],base=null==$a[1]?nil:$a[1],this.$helper("module"),$truthy(this.$body()["$nil?"]())?$truthy(this["$stmt?"]())?this.$unshift("$module(",base,", '"+name+"')"):this.$unshift("($module(",base,", '"+name+"'), nil)"):(this.$line(" var self = $module($base, '"+name+"');"),$send(this,"in_scope",[],(function $$1(){var $writer,self=null==$$1.$$s?this:$$1.$$s;return $writer=[name],$send(self.$scope(),"name=",$to_a($writer)),$rb_minus($writer.length,1),self.$compile_body()}),{$$arity:0,$$s:this}),$truthy(this.$await_encountered())?(await_begin="(await ",await_end=")",async="async ",$writer=[!0],$send(this.$parent(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):(await_begin=($a=["","",""])[0],await_end=$a[1],async=$a[2]),this.$unshift(await_begin+"("+async+"function($base"+($truthy(this.define_nesting)?", $parent_nesting":nil)+") {"),this.$line("})(",base,($truthy(this.define_nesting)?$rb_plus(", ",this.$scope().$nesting()):nil)+")"+await_end))}),0),self.$private(),$def(self,"$name_and_base",(function(){var $a,$b,name,base=nil;return $b=this.$cid().$children(),base=null==($a=$to_ary($b))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],$truthy(base["$nil?"]())?[name,this.$scope().$nesting()+"[0]"]:[name,this.$expr(base)]}),0),$def(self,"$compile_body",(function(){var body_code;return body_code=this.$stmt(this.$compiler().$returns(this.$body())),this.$empty_line(),$truthy(this.define_nesting)&&this.$add_temp("$nesting = [self].concat($parent_nesting)"),$truthy(this.define_relative_access)&&this.$add_temp("$$ = Opal.$r($nesting)"),this.$line(this.$scope().$to_vars()),this.$line(body_code)}),0)}($nesting[0],$$("ScopeNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/class"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_ary=Opal.to_ary,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$def=Opal.def;return Opal.add_stubs("require,handle,children,name_and_base,helper,nil?,body,stmt?,unshift,super_code,line,in_scope,name=,scope,-,compile_body,await_encountered,await_encountered=,parent,+,nesting,sup,expr"),self.$require("opal/nodes/module"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ClassNode");return self.$$prototype.define_nesting=nil,self.$handle("class"),self.$children("cid","sup","body"),$def(self,"$compile",(function(){var $a,$b,name,base,await_begin=nil,await_end=nil,async=nil,$writer=nil;return $b=this.$name_and_base(),$a=$to_ary($b),name=null==$a[0]?nil:$a[0],base=null==$a[1]?nil:$a[1],this.$helper("klass"),$truthy(this.$body()["$nil?"]())?$truthy(this["$stmt?"]())?this.$unshift("$klass(",base,", ",this.$super_code(),", '"+name+"')"):this.$unshift("($klass(",base,", ",this.$super_code(),", '"+name+"'), nil)"):(this.$line(" var self = $klass($base, $super, '"+name+"');"),$send(this,"in_scope",[],(function $$1(){var $writer,self=null==$$1.$$s?this:$$1.$$s;return $writer=[name],$send(self.$scope(),"name=",$to_a($writer)),$rb_minus($writer.length,1),self.$compile_body()}),{$$arity:0,$$s:this}),$truthy(this.$await_encountered())?(await_begin="(await ",await_end=")",async="async ",$writer=[!0],$send(this.$parent(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):(await_begin=($a=["","",""])[0],await_end=$a[1],async=$a[2]),this.$unshift(await_begin+"("+async+"function($base, $super"+($truthy(this.define_nesting)?", $parent_nesting":nil)+") {"),this.$line("})(",base,", ",this.$super_code(),($truthy(this.define_nesting)?$rb_plus(", ",this.$scope().$nesting()):nil)+")"+await_end))}),0),$def(self,"$super_code",(function(){return $truthy(this.$sup())?this.$expr(this.$sup()):"null"}),0)}($nesting[0],$$("ModuleNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/singleton_class"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("require,handle,children,push,in_scope,stmt,returns,compiler,body,add_temp,line,to_vars,scope,recv,object,nesting"),self.$require("opal/nodes/scope"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"SingletonClassNode");return self.$handle("sclass"),self.$children("object","body"),$def(self,"$compile",(function(){return this.$push("(function(self, $parent_nesting) {"),$send(this,"in_scope",[],(function $$1(){var body_stmt,self=null==$$1.$$s?this:$$1.$$s;return null==self.define_nesting&&(self.define_nesting=nil),null==self.define_relative_access&&(self.define_relative_access=nil),body_stmt=self.$stmt(self.$compiler().$returns(self.$body())),$truthy(self.define_nesting)&&self.$add_temp("$nesting = [self].concat($parent_nesting)"),$truthy(self.define_relative_access)&&self.$add_temp("$$ = Opal.$r($nesting)"),self.$line(self.$scope().$to_vars()),self.$line(body_stmt)}),{$$arity:0,$$s:this}),this.$line("})(Opal.get_singleton_class(",this.$recv(this.$object()),"), "+this.$scope().$nesting()+")")}),0)}($nesting[0],$$("ScopeNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_arg,scope,name,push,to_s"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArgNode");return self.$handle("arg"),self.$children("name"),$def(self,"$compile",(function(){return this.$scope().$add_arg(this.$name()),this.$push(this.$name().$to_s())}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/arity_check"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$def=Opal.def,$send=Opal.send,$rb_minus=Opal.rb_minus,$truthy=Opal.truthy,$not=Opal.not,$rb_lt=Opal.rb_lt,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt;return Opal.add_stubs("require,handle,children,new,args_node,args,optargs,restarg,postargs,kwargs,kwoptargs,kwrestarg,kwnilarg,arity,arity=,scope,-,arity_check?,compiler,empty?,arity_checks,helper,inspect,to_s,mid,line,push,join,compact,size,all_args,!,-@,<,+,>,<<,has_only_optional_kwargs?,any?,negative_arity,positive_arity,select,include?,type,has_required_kwargs?,all?,==,def?,class_scope?,top?,parent,class?,name,module?,identity"),self.$require("opal/nodes/base"),self.$require("opal/rewriters/arguments"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ArityCheckNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.kwargs=$proto.kwoptargs=$proto.kwrestarg=$proto.all_args=$proto.args=$proto.optargs=$proto.restarg=$proto.postargs=$proto.arity_checks=nil,self.$handle("arity_check"),self.$children("args_node"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this,arguments$=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),arguments$=$$$($$("Rewriters"),"Arguments").$new(self.$args_node().$children()),self.args=arguments$.$args(),self.optargs=arguments$.$optargs(),self.restarg=arguments$.$restarg(),self.postargs=arguments$.$postargs(),self.kwargs=arguments$.$kwargs(),self.kwoptargs=arguments$.$kwoptargs(),self.kwrestarg=arguments$.$kwrestarg(),self.kwnilarg=arguments$.$kwnilarg()}),-1),$def(self,"$compile",(function(){var $writer,meth=nil;return $writer=[this.$arity()],$send(this.$scope(),"arity=",$to_a($writer)),$rb_minus($writer.length,1),$truthy(this.$compiler()["$arity_check?"]())?$truthy(this.$arity_checks()["$empty?"]())?nil:(this.$helper("ac"),meth=this.$scope().$mid().$to_s().$inspect(),this.$line("var $arity = arguments.length;"),this.$push(" if ("+this.$arity_checks().$join(" || ")+") { $ac($arity, "+this.$arity()+", this, "+meth+"); }")):nil}),0),$def(self,"$kwargs",(function(){return[].concat($to_a(this.kwargs)).concat($to_a(this.kwoptargs)).concat([this.kwrestarg]).$compact()}),0),$def(self,"$all_args",(function(){var $ret_or_1;return this.all_args=$truthy($ret_or_1=this.all_args)?$ret_or_1:[].concat($to_a(this.args)).concat($to_a(this.optargs)).concat([this.restarg]).concat($to_a(this.postargs)).concat($to_a(this.$kwargs())).$compact()}),0),$def(self,"$arity_checks",(function(){var $a,arity=nil,min_arity=nil,max_arity=nil;return $truthy(null!=($a=this.arity_checks)&&$a!==nil?"instance-variable":nil)||(arity=this.$all_args().$size(),arity=$rb_minus(arity,this.optargs.$size()),$truthy(this.restarg)&&(arity=$rb_minus(arity,1)),arity=$rb_minus(arity,this.$kwargs().$size()),($not(this.optargs["$empty?"]())||$not(this.$kwargs()["$empty?"]())||$truthy(this.restarg))&&(arity=$rb_minus(arity["$-@"](),1)),this.arity_checks=[],$truthy($rb_lt(arity,0))?(min_arity=$rb_plus(arity,1)["$-@"](),max_arity=this.$all_args().$size(),$truthy($rb_gt(min_arity,0))&&this.arity_checks["$<<"]("$arity < "+min_arity),$truthy(this.restarg)||this.arity_checks["$<<"]("$arity > "+max_arity)):this.arity_checks["$<<"]("$arity !== "+arity)),this.arity_checks}),0),$def(self,"$arity",(function(){return $truthy(this.restarg)||$truthy(this.optargs["$any?"]())||$truthy(this["$has_only_optional_kwargs?"]())?this.$negative_arity():this.$positive_arity()}),0),$def(self,"$negative_arity",(function(){var result=nil;return result=$send(this.$all_args(),"select",[],(function(arg){return null==arg&&(arg=nil),["arg","mlhs"]["$include?"](arg.$type())}),1).$size(),$truthy(this["$has_required_kwargs?"]())&&(result=$rb_plus(result,1)),result=$rb_minus(result["$-@"](),1)}),0),$def(self,"$positive_arity",(function(){var result=nil;return result=this.$all_args().$size(),result=$rb_minus(result,this.$kwargs().$size()),$truthy(this.$kwargs()["$any?"]())&&(result=$rb_plus(result,1)),result}),0),$def(self,"$has_only_optional_kwargs?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$kwargs()["$any?"]())?$send(this.$kwargs(),"all?",[],(function(arg){return null==arg&&(arg=nil),["kwoptarg","kwrestarg"]["$include?"](arg.$type())}),1):$ret_or_1}),0),$def(self,"$has_required_kwargs?",(function(){return $send(this.$kwargs(),"any?",[],(function(arg){return null==arg&&(arg=nil),arg.$type()["$=="]("kwarg")}),1)}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"IterArityCheckNode");return self.$handle("iter_arity_check"),$def(self,"$compile",(function(){var $writer,parent_scope=nil,$ret_or_1=nil,$ret_or_2=nil,context=nil,identity=nil;if($writer=[this.$arity()],$send(this.$scope(),"arity=",$to_a($writer)),$rb_minus($writer.length,1),!$truthy(this.$compiler()["$arity_check?"]()))return nil;if($truthy(this.$arity_checks()["$empty?"]()))return nil;for(parent_scope=this.$scope();!$truthy($truthy($ret_or_1=$truthy($ret_or_2=parent_scope["$def?"]())?$ret_or_2:parent_scope["$class_scope?"]())?$ret_or_1:parent_scope["$top?"]());)parent_scope=parent_scope.$parent();return context=$truthy(parent_scope["$top?"]())?"'
      '":$truthy(parent_scope["$def?"]())?"'"+parent_scope.$mid()+"'":$truthy(parent_scope["$class?"]())?"''":$truthy(parent_scope["$module?"]())?"''":nil,identity=this.$scope().$identity(),this.$line("if ("+identity+".$$is_lambda || "+identity+".$$define_meth) {"),this.$line(" var $arity = arguments.length;"),this.$line(" if ("+this.$arity_checks().$join(" || ")+") { Opal.block_ac($arity, "+this.$arity()+", "+context+"); }"),this.$line("}")}),0)}($nesting[0],$$("ArityCheckNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/ensure_kwargs_are_kwargs"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,helper,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"EnsureKwargsAreKwargs");return self.$handle("ensure_kwargs_are_kwargs"),$def(self,"$compile",(function(){return this.$helper("hash2"),this.$line("if ($kwargs == null) {"),this.$line(" $kwargs = $hash2([], {});"),this.$line("} else if (!$kwargs.$$is_hash) {"),this.$line(" throw Opal.ArgumentError.$new('expected kwargs');"),this.$line("}")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_block_arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,uses_block!,scope,add_arg,name,prepare_block"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractBlockarg");return self.$handle("extract_blockarg"),self.$children("name"),$def(self,"$compile",(function(){return this.$scope()["$uses_block!"](),this.$scope().$add_arg(this.$name()),this.$scope().$prepare_block(this.$name())}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,[],meta,<<,used_kwargs,scope,add_temp,lvar_name,line,inspect,to_s"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwarg");return self.$$prototype.sexp=nil,self.$handle("extract_kwarg"),self.$children("lvar_name"),$def(self,"$compile",(function(){var key_name=nil;return key_name=this.sexp.$meta()["$[]"]("arg_name"),this.$scope().$used_kwargs()["$<<"](key_name),this.$add_temp(this.$lvar_name()),this.$line("if (!Opal.hasOwnProperty.call($kwargs.$$smap, '"+key_name+"')) {"),this.$line(" throw Opal.ArgumentError.$new('missing keyword: "+key_name+"');"),this.$line("}"),this.$line(this.$lvar_name()+" = $kwargs.$$smap["+key_name.$to_s().$inspect()+"];")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwargs"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,add_temp,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwargs");return self.$handle("extract_kwargs"),$def(self,"$compile",(function(){return this.$add_temp("$kwargs"),this.$line("$kwargs = Opal.extract_kwargs($post_args)")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwoptarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,[],meta,<<,used_kwargs,scope,add_temp,lvar_name,line,inspect,to_s,==,default_value,expr"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwoptarg");return self.$$prototype.sexp=nil,self.$handle("extract_kwoptarg"),self.$children("lvar_name","default_value"),$def(self,"$compile",(function(){var key_name=nil;return key_name=this.sexp.$meta()["$[]"]("arg_name"),this.$scope().$used_kwargs()["$<<"](key_name),this.$add_temp(this.$lvar_name()),this.$line(this.$lvar_name()+" = $kwargs.$$smap["+key_name.$to_s().$inspect()+"];"),$eqeq(this.$default_value().$children()["$[]"](1),"undefined")?nil:this.$line("if ("+this.$lvar_name()+" == null) "+this.$lvar_name()+" = ",this.$expr(this.$default_value()))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwrestarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("require,handle,children,name,add_temp,line,used_kwargs,map,scope,join"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwrestarg");return self.$handle("extract_kwrestarg"),self.$children("name"),$def(self,"$compile",(function(){var name,$ret_or_1;return name=$truthy($ret_or_1=this.$name())?$ret_or_1:"$kw_rest_arg",this.$add_temp(name),this.$line(name+" = Opal.kwrestargs($kwargs, "+this.$used_kwargs()+");")}),0),$def(self,"$used_kwargs",(function(){return"{"+$send(this.$scope().$used_kwargs(),"map",[],(function(arg_name){return null==arg_name&&(arg_name=nil),"'"+arg_name+"': true"}),1).$join(",")+"}"}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_optarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,==,[],default_value,line,name,expr"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractOptargNode");return self.$handle("extract_optarg"),self.$children("name","default_value"),$def(self,"$compile",(function(){return $eqeq(this.$default_value().$children()["$[]"](1),"undefined")?nil:this.$line("if ("+this.$name()+" == null) "+this.$name()+" = ",this.$expr(this.$default_value()),";")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_post_arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_temp,name,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractPostArg");return self.$handle("extract_post_arg"),self.$children("name"),$def(self,"$compile",(function(){return this.$add_temp(this.$name()),this.$line(this.$name()+" = $post_args.shift();"),this.$line("if ("+this.$name()+" == null) "+this.$name()+" = nil;")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_post_optarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_temp,name,line,args_to_keep,==,[],default_value,expr"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractPostOptarg");return self.$handle("extract_post_optarg"),self.$children("name","default_value","args_to_keep"),$def(self,"$compile",(function(){return this.$add_temp(this.$name()),this.$line("if ($post_args.length > "+this.$args_to_keep()+") "+this.$name()+" = $post_args.shift();"),$eqeq(this.$default_value().$children()["$[]"](1),"undefined")?nil:this.$line("if ("+this.$name()+" == null) "+this.$name()+" = ",this.$expr(this.$default_value()),";")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_restarg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,name,add_temp,==,args_to_keep,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractRestarg");return self.$handle("extract_restarg"),self.$children("name","args_to_keep"),$def(self,"$compile",(function(){var name,$ret_or_1;return name=$truthy($ret_or_1=this.$name())?$ret_or_1:"$rest_arg",this.$add_temp(name),$eqeq(this.$args_to_keep(),0)?this.$line(name+" = $post_args;"):this.$line(name+" = $post_args.splice(0, $post_args.length - "+this.$args_to_keep()+");")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/fake_arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,next_temp,scope,add_arg,push"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"FakeArgNode");return self.$handle("fake_arg"),$def(self,"$compile",(function(){var name;return name=this.$scope().$next_temp(),this.$scope().$add_arg(name),this.$push(name)}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/initialize_iterarg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,line,name"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"InitializeIterarg");return self.$handle("initialize_iter_arg"),self.$children("name"),$def(self,"$compile",(function(){return this.$line("if ("+this.$name()+" == null) "+this.$name()+" = nil;")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/initialize_shadowarg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,<<,locals,scope,name,add_arg,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"InitializeShadowarg");return self.$handle("initialize_shadowarg"),self.$children("name"),$def(self,"$compile",(function(){return this.$scope().$locals()["$<<"](this.$name()),this.$scope().$add_arg(this.$name()),this.$line(this.$name()+" = nil;")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/parameters"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a,$truthy=Opal.truthy,$eqeq=Opal.eqeq;return Opal.add_stubs("children,map,public_send,type,join,compact,=="),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,null,"Parameters");return self.$$prototype.args=nil,$def(self,"$initialize",(function(args){return this.args=args.$children()}),1),$def(self,"$to_code",(function(){return"["+$send(this.args,"map",[],(function $$1(arg){return null==arg&&(arg=nil),$send(null==$$1.$$s?this:$$1.$$s,"public_send",["on_"+arg.$type()].concat($to_a(arg)))}),{$$arity:1,$$s:this}).$compact().$join(", ")+"]"}),0),$def(self,"$on_arg",(function(arg_name){return"['req', '"+arg_name+"']"}),1),$def(self,"$on_mlhs",(function($a){return Opal.slice.call(arguments),"['req']"}),-1),$def(self,"$on_optarg",(function(arg_name,_default_value){return"['opt', '"+arg_name+"']"}),2),$def(self,"$on_restarg",(function(arg_name){return null==arg_name&&(arg_name=nil),$truthy(arg_name)?($eqeq(arg_name,"fwd_rest_arg")&&(arg_name="*"),"['rest', '"+arg_name+"']"):"['rest']"}),-1),$def(self,"$on_kwarg",(function(arg_name){return"['keyreq', '"+arg_name+"']"}),1),$def(self,"$on_kwoptarg",(function(arg_name,_default_value){return"['key', '"+arg_name+"']"}),2),$def(self,"$on_kwrestarg",(function(arg_name){return null==arg_name&&(arg_name=nil),$truthy(arg_name)?"['keyrest', '"+arg_name+"']":"['keyrest']"}),-1),$def(self,"$on_blockarg",(function(arg_name){return $eqeq(arg_name,"fwd_block_arg")&&(arg_name="&"),"['block', '"+arg_name+"']"}),1),$def(self,"$on_kwnilarg",(function(){return"['nokey']"}),0),$def(self,"$on_shadowarg",(function(_arg_name){return nil}),1)}([$module($base,"Args")].concat($parent_nesting)[0])}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/prepare_post_args"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_temp,==,offset,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"PreparePostArgs");return self.$handle("prepare_post_args"),self.$children("offset"),$def(self,"$compile",(function(){return this.$add_temp("$post_args"),$eqeq(this.$offset(),0)?this.$line("$post_args = Opal.slice.call(arguments)"):this.$line("$post_args = Opal.slice.call(arguments, "+this.$offset()+")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$send=Opal.send,$truthy=Opal.truthy,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt,$neqeq=Opal.neqeq,$def=Opal.def;return Opal.add_stubs("require,handle,each_with_index,children,multiple_underscore?,[],[]=,-,+,>,s,type,!=,push,process,==,count,start_with?,to_s,first"),self.$require("opal/nodes/base"),self.$require("opal/nodes/args/arg"),self.$require("opal/nodes/args/arity_check"),self.$require("opal/nodes/args/ensure_kwargs_are_kwargs"),self.$require("opal/nodes/args/extract_block_arg"),self.$require("opal/nodes/args/extract_kwarg"),self.$require("opal/nodes/args/extract_kwargs"),self.$require("opal/nodes/args/extract_kwoptarg"),self.$require("opal/nodes/args/extract_kwrestarg"),self.$require("opal/nodes/args/extract_optarg"),self.$require("opal/nodes/args/extract_post_arg"),self.$require("opal/nodes/args/extract_post_optarg"),self.$require("opal/nodes/args/extract_restarg"),self.$require("opal/nodes/args/fake_arg"),self.$require("opal/nodes/args/initialize_iterarg"),self.$require("opal/nodes/args/initialize_shadowarg"),self.$require("opal/nodes/args/parameters"),self.$require("opal/nodes/args/prepare_post_args"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArgsNode");return self.$handle("args"),$def(self,"$compile",(function(){var same_arg_counter=nil;return same_arg_counter=$hash2([],{}),$send(this.$children(),"each_with_index",[],(function $$1(arg,idx){var self=null==$$1.$$s?this:$$1.$$s,$writer=nil;return null==arg&&(arg=nil),null==idx&&(idx=nil),$truthy(self["$multiple_underscore?"](arg))&&($truthy(same_arg_counter["$[]"](arg))||($send(same_arg_counter,"[]=",$to_a($writer=[arg,0])),$writer[$rb_minus($writer.length,1)]),$writer=[arg,$rb_plus(same_arg_counter["$[]"](arg),1)],$send(same_arg_counter,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy($rb_gt(same_arg_counter["$[]"](arg),1))&&(arg=self.$s(arg.$type(),arg.$children()["$[]"](0)+"_$"+same_arg_counter["$[]"](arg)))),$neqeq(idx,0)&&self.$push(", "),self.$push(self.$process(arg))}),{$$arity:2,$$s:this})}),0),$def(self,"$multiple_underscore?",(function(arg){var $ret_or_1,$ret_or_2,$ret_or_3;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=arg.$type()["$=="]("arg"))?arg.$children().$count()["$=="](1):$ret_or_3)?arg.$children().$first().$to_s()["$start_with?"]("_"):$ret_or_2)?$rb_gt(this.$children().$count(arg),1):$ret_or_1}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/node_with_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("require,attr_reader,attr_accessor,[],meta,s,original_args,push,process,arity_check_node,uses_block?,scope,prepare_block,to_code,new"),self.$require("opal/nodes/scope"),self.$require("opal/nodes/args/parameters"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"NodeWithArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.sexp=nil,self.$attr_reader("used_kwargs"),self.$attr_accessor("arity"),self.$attr_reader("original_args"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.original_args=self.sexp.$meta()["$[]"]("original_args"),self.used_kwargs=[],self.arity=0}),-1),$def(self,"$arity_check_node",(function(){return this.$s("arity_check",this.$original_args())}),0),$def(self,"$compile_arity_check",(function(){return this.$push(this.$process(this.$arity_check_node()))}),0),$def(self,"$compile_block_arg",(function(){return $truthy(this.$scope()["$uses_block?"]())?this.$scope().$prepare_block():nil}),0),$def(self,"$parameters_code",(function(){return $$$($$("Args"),"Parameters").$new(this.$original_args()).$to_code()}),0)}($nesting[0],$$("ScopeNode"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/iter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$eqeq=Opal.eqeq,$rb_gt=Opal.rb_gt,$def=Opal.def;return Opal.add_stubs("require,handle,children,lambda_definition?,scope,is_lambda!,in_scope,identify!,process,inline_args,compile_arity_check,stmt,returned_body,add_temp,to_vars,line,catch_return,unshift,push,await_encountered,<<,arity,self,contains_break?,arity_check?,compiler,parameters_code,has_top_level_mlhs_arg?,has_trailing_comma_in_args?,==,length,>,join,nesting,relative_access,block_arg,prepare_block,each,args,first,updated,body,returns,s,any?,original_args,type,expression,loc,source,match,new,found_break?"),self.$require("opal/nodes/node_with_args"),self.$require("opal/rewriters/break_finder"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"IterNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.define_self=$proto.define_nesting=$proto.define_relative_access=$proto.sexp=nil,self.$handle("iter"),self.$children("inline_args","body"),$def(self,"$compile",(function(){var inline_params=nil,to_vars=nil,identity=nil,body_code=nil,blockopts=nil;return $truthy(this.$scope()["$lambda_definition?"]())&&this["$is_lambda!"](),inline_params=nil,to_vars=identity=body_code=nil,$send(this,"in_scope",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return null==self.define_self&&(self.define_self=nil),identity=self.$scope()["$identify!"](),inline_params=self.$process(self.$inline_args()),self.$compile_arity_check(),body_code=self.$stmt(self.$returned_body()),$truthy(self.define_self)&&self.$add_temp("self = "+identity+".$$s == null ? this : "+identity+".$$s"),to_vars=self.$scope().$to_vars(),self.$line(body_code),$truthy(self.$scope().$catch_return())?(self.$unshift("try {\n"),self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }"),self.$push(" throw $returner; }")):nil}),{$$arity:0,$$s:this}),this.$unshift(to_vars),$truthy(this.$await_encountered())?this.$unshift("async function "+identity+"(",inline_params,"){"):this.$unshift("function "+identity+"(",inline_params,"){"),this.$push("}"),(blockopts=[])["$<<"]("$$arity: "+this.$arity()),$truthy(this.define_self)&&blockopts["$<<"]("$$s: "+this.$scope().$self()),$truthy(this["$contains_break?"]())&&blockopts["$<<"]("$$brk: $brk"),$truthy(this.$compiler()["$arity_check?"]())&&blockopts["$<<"]("$$parameters: "+this.$parameters_code()),$truthy(this["$has_top_level_mlhs_arg?"]())&&blockopts["$<<"]("$$has_top_level_mlhs_arg: true"),$truthy(this["$has_trailing_comma_in_args?"]())&&blockopts["$<<"]("$$has_trailing_comma_in_args: true"),$eqeq(blockopts.$length(),1)?this.$push(", "+this.$arity()):$truthy($rb_gt(blockopts.$length(),1))&&this.$push(", {",blockopts.$join(", "),"}"),$truthy(this.define_nesting)&&this.$scope().$nesting(),$truthy(this.define_relative_access)?this.$scope().$relative_access():nil}),0),$def(self,"$compile_block_arg",(function(){return $truthy(this.$block_arg())?this.$scope().$prepare_block():nil}),0),$def(self,"$extract_underscore_args",(function(){var valid_args=nil,caught_blank_argument=nil;return valid_args=[],caught_blank_argument=!1,$send(this.$args().$children(),"each",[],(function(arg){var arg_name;return null==arg&&(arg=nil),arg_name=arg.$children().$first(),$eqeq(arg_name,"_")?$truthy(caught_blank_argument)?nil:(caught_blank_argument=!0,valid_args["$<<"](arg)):valid_args["$<<"](arg)}),1),this.sexp=this.sexp.$updated(nil,[this.$args().$updated(nil,valid_args),this.$body()])}),0),$def(self,"$returned_body",(function(){var $ret_or_1;return this.$compiler().$returns($truthy($ret_or_1=this.$body())?$ret_or_1:this.$s("nil"))}),0),$def(self,"$has_top_level_mlhs_arg?",(function(){return $send(this.$original_args().$children(),"any?",[],(function(arg){return null==arg&&(arg=nil),arg.$type()["$=="]("mlhs")}),1)}),0),$def(self,"$has_trailing_comma_in_args?",(function(){return $truthy(this.$original_args().$loc())&&$truthy(this.$original_args().$loc().$expression())?this.$original_args().$loc().$expression().$source().$match(/,\s*\|/):nil}),0),$def(self,"$arity_check_node",(function(){return this.$s("iter_arity_check",this.$original_args())}),0),$def(self,"$contains_break?",(function(){var finder=nil;return(finder=$$$($$$($$("Opal"),"Rewriters"),"BreakFinder").$new()).$process(this.sexp),finder["$found_break?"]()}),0)}($nesting[0],$$("NodeWithArgs"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/def"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$def=Opal.def,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,handle,children,in_scope,mid,mid=,scope,-,==,type,defs=,identify!,identity,block_name=,process,inline_args,stmt,returns,compiler,stmts,compile_block_arg,add_temp,compile_arity_check,unshift,current_indent,to_vars,line,catch_return,push,await_encountered,<<,arity,arity_check?,parameters_code,parse_comments?,comments_code,enable_source_location?,source_location,length,>,join,wrap_with_definition,nesting,relative_access,helper,wrap,self,expr?,+,map,comments,inspect,text"),self.$require("opal/nodes/node_with_args"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DefNode"),$proto=self.$$prototype;return $proto.define_nesting=$proto.define_relative_access=nil,self.$handle("def"),self.$children("mid","inline_args","stmts"),$def(self,"$compile",(function(){var inline_params=nil,scope_name=nil,blockopts=nil;return inline_params=nil,scope_name=nil,$send(this,"in_scope",[],(function $$1(){var stmt_code,self=null==$$1.$$s?this:$$1.$$s,$writer=nil;return null==self.sexp&&(self.sexp=nil),null==self.define_self&&(self.define_self=nil),$writer=[self.$mid()],$send(self.$scope(),"mid=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$eqeq(self.sexp.$type(),"defs")&&($writer=[!0],$send(self.$scope(),"defs=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),self.$scope()["$identify!"](),scope_name=self.$scope().$identity(),$writer=["$yield"],$send(self.$scope(),"block_name=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],inline_params=self.$process(self.$inline_args()),stmt_code=self.$stmt(self.$compiler().$returns(self.$stmts())),self.$compile_block_arg(),$truthy(self.define_self)&&self.$add_temp("self = this"),self.$compile_arity_check(),self.$unshift("\n"+self.$current_indent(),self.$scope().$to_vars()),self.$line(stmt_code),$truthy(self.$scope().$catch_return())?(self.$unshift("try {\n"),self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }"),self.$push(" throw $returner; }")):nil}),{$$arity:0,$$s:this}),this.$unshift(") {"),this.$unshift(inline_params),this.$unshift("function "+scope_name+"("),$truthy(this.$await_encountered())&&this.$unshift("async "),this.$line("}"),(blockopts=[])["$<<"]("$$arity: "+this.$arity()),$truthy(this.$compiler()["$arity_check?"]())&&blockopts["$<<"]("$$parameters: "+this.$parameters_code()),$truthy(this.$compiler()["$parse_comments?"]())&&blockopts["$<<"]("$$comments: "+this.$comments_code()),$truthy(this.$compiler()["$enable_source_location?"]())&&blockopts["$<<"]("$$source_location: "+this.$source_location()),$eqeq(blockopts.$length(),1)?this.$push(", "+this.$arity()):$truthy($rb_gt(blockopts.$length(),1))&&this.$push(", {",blockopts.$join(", "),"}"),this.$wrap_with_definition(),$truthy(this.define_nesting)&&this.$scope().$nesting(),$truthy(this.define_relative_access)?this.$scope().$relative_access():nil}),0),$def(self,"$wrap_with_definition",(function(){return this.$helper("def"),this.$wrap("$def("+this.$scope().$self()+", '$"+this.$mid()+"', ",")"),$truthy(this["$expr?"]())?nil:this.$unshift("\n"+this.$current_indent())}),0),$def(self,"$comments_code",(function(){return $rb_plus($rb_plus("[",$send(this.$comments(),"map",[],(function(comment){return null==comment&&(comment=nil),comment.$text().$inspect()}),1).$join(", ")),"]")}),0)}($nesting[0],$$("NodeWithArgs"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/defs"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,helper,unshift,expr,recvr,mid,push"),self.$require("opal/nodes/def"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DefsNode");return self.$handle("defs"),self.$children("recvr","mid","inline_args","stmts"),$def(self,"$wrap_with_definition",(function(){return this.$helper("defs"),this.$unshift("$defs(",this.$expr(this.$recvr()),", '$"+this.$mid()+"', "),this.$push(")")}),0)}($nesting[0],$$("DefNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/if"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def,$not=Opal.not,$send=Opal.send,$eqeqeq=Opal.eqeqeq;return Opal.add_stubs("require,handle,children,should_compile_as_simple_expression?,==,true_body,s,compile_with_binary_or,false_body,compile_with_binary_and,compile_with_ternary,compile_with_if,truthy,falsy,!,push,js_truthy,test,indent,line,stmt,type,expects_expression?,await_encountered,scope,wrap,returnify,returns,compiler,expr?,recv?,simple?,expr,[],meta,sexp,===,single_line?,strip_empty_children,all?,helper,new_temp,top_scope,excl,from,to"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"IfNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("if"),self.$children("test","true_body","false_body"),$def(self,"$compile",(function(){return $truthy(this["$should_compile_as_simple_expression?"]())?$eqeq(this.$true_body(),this.$s("true"))?this.$compile_with_binary_or():$eqeq(this.$false_body(),this.$s("false"))?this.$compile_with_binary_and():this.$compile_with_ternary():this.$compile_with_if()}),0),$def(self,"$compile_with_if",(function(){var $a,truthy=nil,falsy=nil;return truthy=this.$truthy(),falsy=this.$falsy(),$truthy(falsy)&&$not(truthy)?(this.$push("if (!",this.$js_truthy(this.$test()),") {"),falsy=($a=[truthy,falsy])[0],truthy=$a[1]):this.$push("if (",this.$js_truthy(this.$test()),") {"),$truthy(truthy)&&$send(this,"indent",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return self.$line(self.$stmt(truthy))}),{$$arity:0,$$s:this}),$truthy(falsy)?$eqeq(falsy.$type(),"if")?this.$line("} else ",this.$stmt(falsy)):(this.$line("} else {"),$send(this,"indent",[],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;return self.$line(self.$stmt(falsy))}),{$$arity:0,$$s:this}),this.$line("}")):(this.$line("}"),$truthy(this["$expects_expression?"]())&&this.$line("return nil;")),$truthy(this["$expects_expression?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() {","})())"):this.$wrap("(function() {","})()"):nil}),0),$def(self,"$truthy",(function(){return this.$returnify(this.$true_body())}),0),$def(self,"$falsy",(function(){return this.$returnify(this.$false_body())}),0),$def(self,"$returnify",(function(body){return $truthy(this["$expects_expression?"]())&&$truthy(body)?this.$compiler().$returns(body):body}),1),$def(self,"$expects_expression?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$expr?"]())?$ret_or_1:this["$recv?"]()}),0),$def(self,"$should_compile_as_simple_expression?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this["$expects_expression?"]())?this["$simple?"](this.$true_body()):$ret_or_2)?this["$simple?"](this.$false_body()):$ret_or_1}),0),$def(self,"$compile_with_ternary",(function(){var truthy,falsy=nil,$ret_or_1=nil;return truthy=this.$true_body(),falsy=this.$false_body(),this.$push("("),this.$push(this.$js_truthy(this.$test())," ? "),this.$push("(",this.$expr($truthy($ret_or_1=truthy)?$ret_or_1:this.$s("nil")),") : "),$not(falsy)||$eqeq(falsy.$type(),"if")?this.$push(this.$expr($truthy($ret_or_1=falsy)?$ret_or_1:this.$s("nil"))):this.$push("(",this.$expr($truthy($ret_or_1=falsy)?$ret_or_1:this.$s("nil")),")"),this.$push(")")}),0),$def(self,"$compile_with_binary_and",(function(){var truthy=nil,$ret_or_1=nil;return truthy=$truthy(this.$sexp().$meta()["$[]"]("do_js_truthy_on_true_body"))?this.$js_truthy($truthy($ret_or_1=this.$true_body())?$ret_or_1:this.$s("nil")):this.$expr($truthy($ret_or_1=this.$true_body())?$ret_or_1:this.$s("nil")),this.$push("("),this.$push(this.$js_truthy(this.$test())," && "),this.$push("(",truthy,")"),this.$push(")")}),0),$def(self,"$compile_with_binary_or",(function(){var falsy=nil,$ret_or_1=nil;return falsy=$truthy(this.$sexp().$meta()["$[]"]("do_js_truthy_on_false_body"))?this.$js_truthy($truthy($ret_or_1=this.$false_body())?$ret_or_1:this.$s("nil")):this.$expr($truthy($ret_or_1=this.$false_body())?$ret_or_1:this.$s("nil")),this.$push("("),this.$push(this.$js_truthy(this.$test())," || "),this.$push("(",falsy,")"),this.$push(")")}),0),$def(self,"$simple?",(function(body){var $ret_or_2=nil;return!$eqeqeq($$$($$("AST"),"Node"),body)||!($eqeqeq("return",$ret_or_2=body.$type())||$eqeqeq("js_return",$ret_or_2)||$eqeqeq("break",$ret_or_2)||$eqeqeq("next",$ret_or_2)||$eqeqeq("redo",$ret_or_2)||$eqeqeq("retry",$ret_or_2))&&($eqeqeq("xstr",$ret_or_2)?$$("XStringNode")["$single_line?"]($$("XStringNode").$strip_empty_children(body.$children())):$send(body.$children(),"all?",[],(function $$6(i){return null==i&&(i=nil),(null==$$6.$$s?this:$$6.$$s)["$simple?"](i)}),{$$arity:1,$$s:this}))}),1)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"IFlipFlop");self.$handle("iflipflop"),self.$children("from","to"),$def(self,"$excl",(function(){return""}),0),$def(self,"$compile",(function(){var fun_name,ff;return this.$helper("truthy"),ff=(fun_name=this.$top_scope().$new_temp())+".$$ff",this.$push("(typeof "+fun_name+" === 'undefined' ? ("+fun_name+" = function(from, to){"),this.$push(" if (typeof "+ff+" === 'undefined') "+ff+" = false;"),this.$push(" var retval = "+ff+";"),this.$push(" if (!"+ff+") {"),this.$push(" "+ff+" = retval = $truthy(from());"),this.$push(" }"),this.$push(" "+this.$excl()+"if ("+ff+") {"),this.$push(" if ($truthy(to())) "+ff+" = false;"),this.$push(" }"),this.$push(" return retval;"),this.$push("}) : "+fun_name+")("),this.$push(" function() { ",this.$stmt(this.$compiler().$returns(this.$from()))," },"),this.$push(" function() { ",this.$stmt(this.$compiler().$returns(this.$to()))," }"),this.$push(")")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"EFlipFlop");return self.$handle("eflipflop"),$def(self,"$excl",(function(){return"else "}),0)}($nesting[0],$$("IFlipFlop"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/logic"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt,$not=Opal.not;return Opal.add_stubs("require,handle,in_while?,push,iter?,scope,expr_or_nil,value,error,===,size,children,s,first,compile_while,compile_iter,[],while_loop,stmt?,line,break_val,nil?,expr,[]=,-,helper,identity,==,empty_splat?,recv,>,find_parent_def,!,lambda?,def?,expr?,return_in_iter?,return_expr_in_def?,scope_to_catch_return,catch_return=,return_val,to_s"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"NextNode");self.$handle("next"),$def(self,"$compile",(function(){return $truthy(this["$in_while?"]())?this.$push("continue;"):$truthy(this.$scope()["$iter?"]())?this.$push("return ",this.$expr_or_nil(this.$value()),";"):this.$error("Invalid next")}),0),$def(self,"$value",(function(){var $ret_or_1;return $eqeqeq(0,$ret_or_1=this.$children().$size())?this.$s("nil"):$eqeqeq(1,$ret_or_1)?this.$children().$first():$send(this,"s",["array"].concat($to_a(this.$children())))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"BreakNode");self.$handle("break"),self.$children("value"),$def(self,"$compile",(function(){return $truthy(this["$in_while?"]())?this.$compile_while():$truthy(this.$scope()["$iter?"]())?this.$compile_iter():this.$error("void value expression: cannot use break outside of iter/while")}),0),$def(self,"$compile_while",(function(){return $truthy(this.$while_loop()["$[]"]("closure"))?this.$push("return ",this.$expr_or_nil(this.$value())):this.$push("break;")}),0),$def(self,"$compile_iter",(function(){return $truthy(this["$stmt?"]())||this.$error("break must be used as a statement"),this.$line("Opal.brk(",this.$break_val(),", $brk)")}),0),$def(self,"$break_val",(function(){return $truthy(this.$value()["$nil?"]())?this.$expr(this.$s("nil")):this.$expr(this.$value())}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"RedoNode");self.$handle("redo"),$def(self,"$compile",(function(){return $truthy(this["$in_while?"]())?this.$compile_while():$truthy(this.$scope()["$iter?"]())?this.$compile_iter():this.$push("REDO()")}),0),$def(self,"$compile_while",(function(){var $writer;return $writer=["use_redo",!0],$send(this.$while_loop(),"[]=",$to_a($writer)),$rb_minus($writer.length,1),this.$push(this.$while_loop()["$[]"]("redo_var")+" = true; continue;")}),0),$def(self,"$compile_iter",(function(){return this.$helper("slice"),this.$push("return "+this.$scope().$identity()+".apply(null, $slice.call(arguments))")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"SplatNode");self.$handle("splat"),self.$children("value"),$def(self,"$empty_splat?",(function(){return this.$value()["$=="](this.$s("array"))}),0),$def(self,"$compile",(function(){return $truthy(this["$empty_splat?"]())?this.$push("[]"):(this.$helper("to_a"),this.$push("$to_a(",this.$recv(this.$value()),")"))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ReturnNode");self.$handle("return"),self.$children("value"),$def(self,"$return_val",(function(){return $truthy(this.$value()["$nil?"]())?this.$expr(this.$s("nil")):$truthy($rb_gt(this.$children().$size(),1))?this.$expr($send(this,"s",["array"].concat($to_a(this.$children())))):this.$expr(this.$value())}),0),$def(self,"$return_in_iter?",(function(){var parent_def=nil;return $truthy(this.$scope()["$iter?"]())&&$not(this.$scope()["$lambda?"]())&&$truthy(parent_def=this.$scope().$find_parent_def())?parent_def:nil}),0),$def(self,"$return_expr_in_def?",(function(){return $truthy(this["$expr?"]())&&($truthy(this.$scope()["$def?"]())||$truthy(this.$scope()["$lambda?"]()))?this.$scope():nil}),0),$def(self,"$scope_to_catch_return",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$return_in_iter?"]())?$ret_or_1:this["$return_expr_in_def?"]()}),0),$def(self,"$compile",(function(){var def_scope,$writer=nil;return $truthy(def_scope=this.$scope_to_catch_return())?($send(def_scope,"catch_return=",$to_a($writer=[!0])),$writer[$rb_minus($writer.length,1)],this.$push("Opal.ret(",this.$return_val(),")")):$truthy(this["$stmt?"]())?this.$push("return ",this.$return_val()):this.$error("void value expression: cannot return as an expression")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JSReturnNode");self.$handle("js_return"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("return "),this.$push(this.$expr(this.$value()))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JSTempNode");self.$handle("js_tmp"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$value().$to_s())}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"BlockPassNode");return self.$handle("block_pass"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$expr(this.$s("send",this.$value(),"to_proc",this.$s("arglist"))))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/definitions"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$range=Opal.range,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$slice=Opal.slice,$rb_plus=Opal.rb_plus,$hash2=Opal.hash2,$const_set=Opal.const_set;return Opal.add_stubs("require,handle,children,each,line,self,scope,expr,===,type,new_name,helper,inspect,[],to_s,first,old_name,push,error,empty?,stmt?,compile_children,simple_children?,compile_inline_children,>,size,wrap,==,returned_children,await_encountered,parent,+,returns,compiler,s,process,fragment,freeze,none?,include?,map,each_with_index,reject,to_proc"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"UndefNode");self.$handle("undef"),self.$children("value"),$def(self,"$compile",(function(){return $send(this.$children(),"each",[],(function $$1(child){var self=null==$$1.$$s?this:$$1.$$s;return null==child&&(child=nil),self.$line("Opal.udef("+self.$scope().$self()+", '$' + ",self.$expr(child),");")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"AliasNode");self.$handle("alias"),self.$children("new_name","old_name"),$def(self,"$compile",(function(){var $ret_or_1,new_name_str=nil,old_name_str=nil;return $eqeqeq("gvar",$ret_or_1=this.$new_name().$type())?(this.$helper("alias_gvar"),new_name_str=this.$new_name().$children().$first().$to_s()["$[]"]($range(1,-1,!1)).$inspect(),old_name_str=this.$old_name().$children().$first().$to_s()["$[]"]($range(1,-1,!1)).$inspect(),this.$push("$alias_gvar(",new_name_str,", ",old_name_str,")")):$eqeqeq("dsym",$ret_or_1)||$eqeqeq("sym",$ret_or_1)?(this.$helper("alias"),this.$push("$alias("+this.$scope().$self()+", ",this.$expr(this.$new_name()),", ",this.$expr(this.$old_name()),")")):this.$error("Opal doesn't know yet how to alias with "+this.$new_name().$type())}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"BeginNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.level=$proto.returned_children=nil,self.$handle("begin"),$def(self,"$compile",(function(){return $truthy(this.$children()["$empty?"]())?this.$push("nil"):$truthy(this["$stmt?"]())?this.$compile_children(this.$children(),this.level):$truthy(this["$simple_children?"]())?(this.$compile_inline_children(this.$children(),this.level),$truthy($rb_gt(this.$children().$size(),1))?this.$wrap("(",")"):nil):$eqeq(this.$children().$size(),1)?this.$compile_inline_children(this.$returned_children(),this.level):(this.$compile_children(this.$returned_children(),this.level),$truthy(this.$scope().$parent().$await_encountered())?this.$wrap("(await (async function() {","})())"):this.$wrap("(function() {","})()"))}),0),$def(self,"$returned_children",(function(){var $a,$b,$ret_or_1,rest=nil,last_child=nil;return this.returned_children=$truthy($ret_or_1=this.returned_children)?$ret_or_1:($b=($b=($a=[].concat($to_a(this.$children()))).length-1)<0?0:$b,rest=$slice.call($a,0,$b),last_child=null==$a[$b]?nil:$a[$b],$truthy(last_child)?$rb_plus(rest,[this.$compiler().$returns(last_child)]):[this.$s("nil")])}),0),$def(self,"$compile_children",(function(children,level){return $send(children,"each",[],(function $$2(child){var self=null==$$2.$$s?this:$$2.$$s;return null==child&&(child=nil),self.$line(self.$process(child,level),self.$fragment(";",$hash2(["loc"],{loc:!1})))}),{$$arity:1,$$s:this})}),2),$const_set($nesting[0],"COMPLEX_CHILDREN",["while","while_post","until","until_post","js_return"].$freeze()),$def(self,"$simple_children?",(function(){return $send(this.$children(),"none?",[],(function(child){return null==child&&(child=nil),$$("COMPLEX_CHILDREN")["$include?"](child.$type())}),1)}),0),$def(self,"$compile_inline_children",(function(children,level){var processed_children;return processed_children=$send(children,"map",[],(function $$5(child){return null==child&&(child=nil),(null==$$5.$$s?this:$$5.$$s).$process(child,level)}),{$$arity:1,$$s:this}),$send($send(processed_children,"reject",[],"empty?".$to_proc()),"each_with_index",[],(function $$6(child,idx){var self=null==$$6.$$s?this:$$6.$$s;return null==child&&(child=nil),null==idx&&(idx=nil),$eqeq(idx,0)||self.$push(self.$fragment(", ",$hash2(["loc"],{loc:!1}))),self.$push(child)}),{$$arity:2,$$s:this})}),2)}($nesting[0],$$("ScopeNode"),$nesting),function($base,$super){return $klass($base,$super,"KwBeginNode").$handle("kwbegin")}($nesting[0],$$("BeginNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/yield"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def;return Opal.add_stubs("require,find_yielding_scope,uses_block!,block_name,block_name=,-,yields_single_arg?,children,push,expr,first,wrap,s,uses_splat?,scope,def?,parent,!,==,size,any?,type,handle,compile_call"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BaseYieldNode");$def(self,"$compile_call",(function(){var block_name,yielding_scope=nil,$writer=nil;return(yielding_scope=this.$find_yielding_scope())["$uses_block!"](),$truthy(yielding_scope.$block_name())||($send(yielding_scope,"block_name=",$to_a($writer=["$yield"])),$writer[$rb_minus($writer.length,1)]),block_name=yielding_scope.$block_name(),$truthy(this["$yields_single_arg?"](this.$children()))?(this.$push(this.$expr(this.$children().$first())),this.$wrap("Opal.yield1("+block_name+", ",")")):(this.$push(this.$expr($send(this,"s",["arglist"].concat($to_a(this.$children()))))),$truthy(this["$uses_splat?"](this.$children()))?this.$wrap("Opal.yieldX("+block_name+", ",")"):this.$wrap("Opal.yieldX("+block_name+", [","])"))}),0),$def(self,"$find_yielding_scope",(function(){var working=nil;for(working=this.$scope();$truthy(working)&&!$truthy(working.$block_name())&&!$truthy(working["$def?"]());)working=working.$parent();return working}),0),$def(self,"$yields_single_arg?",(function(children){var $ret_or_1;return $truthy($ret_or_1=this["$uses_splat?"](children)["$!"]())?children.$size()["$=="](1):$ret_or_1}),1),$def(self,"$uses_splat?",(function(children){return $send(children,"any?",[],(function(child){return null==child&&(child=nil),child.$type()["$=="]("splat")}),1)}),1)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"YieldNode");self.$handle("yield"),$def(self,"$compile",(function(){return this.$compile_call()}),0)}($nesting[0],$$("BaseYieldNode")),function($base,$super){var self=$klass($base,$super,"ReturnableYieldNode");return self.$handle("returnable_yield"),$def(self,"$compile",(function(){return this.$compile_call(),this.$wrap("return ",";")}),0)}($nesting[0],$$("BaseYieldNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/rescue"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$def=Opal.def,$range=Opal.range,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq;return Opal.add_stubs("require,handle,children,push,in_ensure,line,stmt,body_sexp,indent,has_rescue_else?,unshift,rescue_else_code,process,compiler,ensr_sexp,wrap_in_closure?,await_encountered,scope,wrap,returns,begn,ensr,s,recv?,expr?,rescue_else_sexp,stmt?,detect,[],!=,type,rescue_else_sexp=,-,handle_rescue_else_manually?,in_rescue,body_code,each_with_index,==,retry_id,body,nil?,!,in_ensure?,gen_retry_id,attr_reader,expr,klasses,lvar,updated,in_resbody,rescue_body,klasses_sexp,in_resbody?,error,current_rescue"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"EnsureNode");self.$handle("ensure"),self.$children("begn","ensr"),$def(self,"$compile",(function(){return this.$push("try {"),$send(this,"in_ensure",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return self.$line(self.$stmt(self.$body_sexp()))}),{$$arity:0,$$s:this}),this.$line("} finally {"),$send(this,"indent",[],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;return null==self.level&&(self.level=nil),$truthy(self["$has_rescue_else?"]())?(self.$unshift("var $no_errors = true; "),self.$line("var $rescue_else_result;"),self.$line("if ($no_errors) { "),$send(self,"indent",[],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return self.$line("$rescue_else_result = (function() {"),$send(self,"indent",[],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s;return self.$line(self.$stmt(self.$rescue_else_code()))}),{$$arity:0,$$s:self}),self.$line("})();")}),{$$arity:0,$$s:self}),self.$line("}"),self.$line(self.$compiler().$process(self.$ensr_sexp(),self.level)),self.$line("if ($no_errors) { return $rescue_else_result; }")):self.$line(self.$compiler().$process(self.$ensr_sexp(),self.level))}),{$$arity:0,$$s:this}),this.$line("}"),$truthy(this["$wrap_in_closure?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() { ","; })())"):this.$wrap("(function() { ","; })()"):nil}),0),$def(self,"$body_sexp",(function(){return $truthy(this["$wrap_in_closure?"]())?this.$compiler().$returns(this.$begn()):this.$begn()}),0),$def(self,"$ensr_sexp",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$ensr())?$ret_or_1:this.$s("nil")}),0),$def(self,"$wrap_in_closure?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this["$recv?"]())?$ret_or_2:this["$expr?"]())?$ret_or_1:this["$has_rescue_else?"]()}),0),$def(self,"$rescue_else_code",(function(){var rescue_else_code=nil;return rescue_else_code=this.$scope().$rescue_else_sexp(),$truthy(this["$stmt?"]())||(rescue_else_code=this.$compiler().$returns(rescue_else_code)),rescue_else_code}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"RescueNode");self.$$prototype.retry_id=nil,self.$handle("rescue"),self.$children("body"),$def(self,"$compile",(function(){var $writer;return $writer=[$send(this.$children()["$[]"]($range(1,-1,!1)),"detect",[],(function(sexp){var $ret_or_1;return null==sexp&&(sexp=nil),$truthy($ret_or_1=sexp)?sexp.$type()["$!="]("resbody"):$ret_or_1}),1)],$send(this.$scope(),"rescue_else_sexp=",$to_a($writer)),$rb_minus($writer.length,1),!1,$truthy(this["$handle_rescue_else_manually?"]())&&this.$line("var $no_errors = true;"),$send(this,"in_rescue",[this],(function $$7(){var self=null==$$7.$$s?this:$$7.$$s;return self.$push("try {"),$send(self,"indent",[],(function $$8(){var self=null==$$8.$$s?this:$$8.$$s;return self.$line(self.$stmt(self.$body_code()))}),{$$arity:0,$$s:self}),self.$line("} catch ($err) {"),$send(self,"indent",[],(function $$9(){var self=null==$$9.$$s?this:$$9.$$s;return $truthy(self["$has_rescue_else?"]())&&self.$line("$no_errors = false;"),$send(self.$children()["$[]"]($range(1,-1,!1)),"each_with_index",[],(function $$10(child,idx){var self=null==$$10.$$s?this:$$10.$$s;return null==self.level&&(self.level=nil),null==child&&(child=nil),null==idx&&(idx=nil),$truthy(child)&&$eqeq(child.$type(),"resbody")?(!0,$eqeq(idx,0)||self.$push(" else "),self.$line(self.$process(child,self.level))):nil}),{$$arity:2,$$s:self}),self.$push(" else { throw $err; }")}),{$$arity:0,$$s:self}),self.$line("}"),$truthy(self["$handle_rescue_else_manually?"]())&&(self.$push("finally {"),$send(self,"indent",[],(function $$11(){var self=null==$$11.$$s?this:$$11.$$s;return self.$line("if ($no_errors) { "),$send(self,"indent",[],(function $$12(){var self=null==$$12.$$s?this:$$12.$$s;return self.$line(self.$stmt(self.$rescue_else_code()))}),{$$arity:0,$$s:self}),self.$line("}")}),{$$arity:0,$$s:self}),self.$push("}")),$truthy(self.$retry_id())?self.$wrap(self.$retry_id()+": do { "," break; } while(1)"):nil}),{$$arity:0,$$s:this}),$truthy(this["$expr?"]())||$truthy(this["$recv?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() { ","})())"):this.$wrap("(function() { ","})()"):nil}),0),$def(self,"$body_code",(function(){var body_code=nil;return body_code=$truthy(this.$body()["$nil?"]())||$eqeq(this.$body().$type(),"resbody")?this.$s("nil"):this.$body(),$truthy(this["$stmt?"]())||(body_code=this.$compiler().$returns(body_code)),body_code}),0),$def(self,"$rescue_else_code",(function(){var rescue_else_code=nil;return rescue_else_code=this.$scope().$rescue_else_sexp(),$truthy(this["$stmt?"]())||(rescue_else_code=this.$compiler().$returns(rescue_else_code)),rescue_else_code}),0),$def(self,"$handle_rescue_else_manually?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$in_ensure?"]()["$!"]())?this["$has_rescue_else?"]():$ret_or_1}),0),$def(self,"$gen_retry_id",(function(){var $ret_or_1;return this.retry_id=$truthy($ret_or_1=this.retry_id)?$ret_or_1:this.$scope().$gen_retry_id()}),0),self.$attr_reader("retry_id")}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ResBodyNode");self.$handle("resbody"),self.$children("klasses_sexp","lvar","body"),$def(self,"$compile",(function(){return this.$push("if (Opal.rescue($err, ",this.$expr(this.$klasses()),")) {"),$send(this,"indent",[],(function $$14(){var self=null==$$14.$$s?this:$$14.$$s;return $truthy(self.$lvar())&&self.$push(self.$expr(self.$lvar().$updated(nil,[].concat($to_a(self.$lvar().$children())).concat([self.$s("js_tmp","$err")])))),self.$line("try {"),$send(self,"indent",[],(function $$15(){var self=null==$$15.$$s?this:$$15.$$s;return $send(self,"in_resbody",[],(function $$16(){var self=null==$$16.$$s?this:$$16.$$s;return self.$line(self.$stmt(self.$rescue_body()))}),{$$arity:0,$$s:self})}),{$$arity:0,$$s:self}),self.$line("} finally { Opal.pop_exception(); }")}),{$$arity:0,$$s:this}),this.$line("}")}),0),$def(self,"$klasses",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$klasses_sexp())?$ret_or_1:this.$s("array",this.$s("const",nil,"StandardError"))}),0),$def(self,"$rescue_body",(function(){var $ret_or_1,body_code=nil;return body_code=$truthy($ret_or_1=this.$body())?$ret_or_1:this.$s("nil"),$truthy(this["$stmt?"]())||(body_code=this.$compiler().$returns(body_code)),body_code}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"RetryNode");return self.$handle("retry"),$def(self,"$compile",(function(){return $truthy(this["$in_resbody?"]())||this.$error("Invalid retry"),this.$push("continue "+this.$scope().$current_rescue().$gen_retry_id())}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/super"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$slice=Opal.slice,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def,$to_ary=Opal.to_ary,$eqeq=Opal.eqeq,$not=Opal.not,$eqeqeq=Opal.eqeqeq,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt;return Opal.add_stubs("require,include?,type,s,helper,push,compile_receiver,compile_method_body,compile_method_name,compile_arguments,compile_block_pass,private,def?,scope,find_parent_def,to_s,mid,def_scope,identify!,self,method_id,def_scope_identity,defined_check_param,allow_stubs,super_chain,join,map,implicit_arguments_param,super_method_invocation,iter?,super_block_invocation,raise,handle,wrap,uses_block!,compile_using_send,==,iter,block_name,implicit_arglist,!,<<,new,each,children,original_args,[],meta,===,+,[]=,-,>,empty?"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BaseSuperNode"),$proto=self.$$prototype;$proto.sexp=$proto.def_scope=nil,$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$b,$c,$yield=$$initialize.$$p||nil,self=this,args=nil,rest=nil,last_child=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),args=[].concat($to_a(self.sexp)),$c=($c=($b=[].concat($to_a(args))).length-1)<0?0:$c,rest=$slice.call($b,0,$c),last_child=null==$b[$c]?nil:$b[$c],$truthy(last_child)&&$truthy(["iter","block_pass"]["$include?"](last_child.$type()))?(self.iter=last_child,args=rest):self.iter=self.$s("js_tmp","null"),self.arglist=$send(self,"s",["arglist"].concat($to_a(args))),self.recvr=self.$s("self")}),-1),$def(self,"$compile_using_send",(function(){return this.$helper("send2"),this.$push("$send2("),this.$compile_receiver(),this.$compile_method_body(),this.$compile_method_name(),this.$compile_arguments(),this.$compile_block_pass(),this.$push(")")}),0),self.$private(),$def(self,"$def_scope",(function(){var $ret_or_1;return this.def_scope=$truthy($ret_or_1=this.def_scope)?$ret_or_1:$truthy(this.$scope()["$def?"]())?this.$scope():this.$scope().$find_parent_def()}),0),$def(self,"$defined_check_param",(function(){return"false"}),0),$def(self,"$implicit_arguments_param",(function(){return"false"}),0),$def(self,"$method_id",(function(){return this.$def_scope().$mid().$to_s()}),0),$def(self,"$def_scope_identity",(function(){return this.$def_scope()["$identify!"](this.$def_scope().$mid())}),0),$def(self,"$allow_stubs",(function(){return"true"}),0),$def(self,"$super_method_invocation",(function(){return this.$helper("find_super"),"$find_super("+this.$scope().$self()+", '"+this.$method_id()+"', "+this.$def_scope_identity()+", "+this.$defined_check_param()+", "+this.$allow_stubs()+")"}),0),$def(self,"$super_block_invocation",(function(){var $a,$b,chain,cur_defn,mid,trys;return this.$helper("find_block_super"),$b=this.$scope().$super_chain(),chain=null==($a=$to_ary($b))[0]?nil:$a[0],cur_defn=null==$a[1]?nil:$a[1],mid=null==$a[2]?nil:$a[2],trys=$send(chain,"map",[],(function(c){return null==c&&(c=nil),c+".$$def"}),1).$join(" || "),"$find_block_super("+this.$scope().$self()+", "+mid+", ("+trys+" || "+cur_defn+"), "+this.$defined_check_param()+", "+this.$implicit_arguments_param()+")"}),0),$def(self,"$compile_method_body",(function(){return this.$push(", "),$truthy(this.$scope()["$def?"]())?this.$push(this.$super_method_invocation()):$truthy(this.$scope()["$iter?"]())?this.$push(this.$super_block_invocation()):this.$raise("super must be called from method body or block")}),0),$def(self,"$compile_method_name",(function(){var $a,$b,mid=nil;return $truthy(this.$scope()["$def?"]())?this.$push(", '"+this.$method_id()+"'"):$truthy(this.$scope()["$iter?"]())?($b=this.$scope().$super_chain(),null==($a=$to_ary($b))[0]?nil:$a[0],null==$a[1]?nil:$a[1],mid=null==$a[2]?nil:$a[2],this.$push(", "+mid)):nil}),0)}($nesting[0],$$("CallNode")),function($base,$super){var self=$klass($base,$super,"DefinedSuperNode");self.$handle("defined_super"),$def(self,"$allow_stubs",(function(){return"false"}),0),$def(self,"$defined_check_param",(function(){return"true"}),0),$def(self,"$compile",(function(){return this.$compile_receiver(),this.$compile_method_body(),this.$wrap("((",') != null ? "super" : nil)')}),0)}($nesting[0],$$("BaseSuperNode")),function($base,$super){var self=$klass($base,$super,"SuperNode");self.$handle("super"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$truthy(self.$scope()["$def?"]())?self.$scope()["$uses_block!"]():nil}),-1),$def(self,"$compile",(function(){return this.$compile_using_send()}),0)}($nesting[0],$$("BaseSuperNode")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"ZsuperNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$handle("zsuper"),$def(self,"$implicit_arguments_param",(function(){return"true"}),0),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this,$ret_or_1=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$eqeq(self.$iter().$type(),"iter")?nil:(self.$scope()["$uses_block!"](),self.iter=self.$s("js_tmp",$truthy($ret_or_1=self.$scope().$block_name())?$ret_or_1:"$yield"))}),-1),$def(self,"$compile",(function(){var implicit_args=nil,block_pass=nil;return $truthy(this.$def_scope())&&(implicit_args=this.$implicit_arglist(),$truthy(this.$block_name())&&$not(this.$iter())&&(block_pass=this.$s("block_pass",this.$s("lvar",this.$block_name())),implicit_args["$<<"](block_pass)),this.arglist=$send(this,"s",["arglist"].concat($to_a(implicit_args)))),this.$compile_using_send()}),0),$def(self,"$implicit_arglist",(function(){var args=nil,kwargs=nil,same_arg_counter=nil;return args=[],kwargs=[],same_arg_counter=$$("Hash").$new(0),$send(this.$def_scope().$original_args().$children(),"each",[],(function $$2(sexp){var $ret_or_1,self=null==$$2.$$s?this:$$2.$$s,arg_name=nil,arg_node=nil,$writer=nil;return null==sexp&&(sexp=nil),arg_name=sexp.$meta()["$[]"]("arg_name"),$eqeqeq("arg",$ret_or_1=sexp.$type())||$eqeqeq("optarg",$ret_or_1)?(arg_node=self.$s("lvar",arg_name),$eqeq(arg_name["$[]"](0),"_")&&($writer=[arg_name,$rb_plus(same_arg_counter["$[]"](arg_name),1)],$send(same_arg_counter,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy($rb_gt(same_arg_counter["$[]"](arg_name),1))&&(arg_node=self.$s("js_tmp",arg_name+"_$"+same_arg_counter["$[]"](arg_name)))),args["$<<"](arg_node)):$eqeqeq("restarg",$ret_or_1)?(arg_node=$truthy(arg_name)?self.$s("lvar",arg_name):self.$s("js_tmp","$rest_arg"),args["$<<"](self.$s("splat",arg_node))):$eqeqeq("kwarg",$ret_or_1)||$eqeqeq("kwoptarg",$ret_or_1)?kwargs["$<<"](self.$s("pair",self.$s("sym",arg_name),self.$s("lvar",arg_name))):$eqeqeq("kwrestarg",$ret_or_1)?(arg_node=$truthy(arg_name)?self.$s("lvar",arg_name):self.$s("js_tmp","$kw_rest_arg"),kwargs["$<<"](self.$s("kwsplat",arg_node))):nil}),{$$arity:1,$$s:this}),$truthy(kwargs["$empty?"]())||args["$<<"]($send(this,"s",["hash"].concat($to_a(kwargs)))),args}),0),$def(self,"$block_name",(function(){var $ret_or_1;return $eqeqeq($$$($$$($$("Opal"),"Nodes"),"IterNode"),$ret_or_1=this.$def_scope())||$eqeqeq($$$($$$($$("Opal"),"Nodes"),"DefNode"),$ret_or_1)?this.$def_scope().$block_name():this.$raise("Don't know what to do with super in the scope "+this.$def_scope())}),0)}($nesting[0],$$("SuperNode"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/version"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set;return function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return $const_set($nesting[0],"VERSION","1.4.0")}($nesting[0],$nesting)},Opal.modules["opal/nodes/top"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("require,handle,children,top_scope=,compiler,-,push,version_comment,in_scope,==,body,s,line,use_strict?,stmt,stmts,is_a?,eval?,add_temp,add_used_helpers,to_vars,scope,compile_method_stubs,compile_irb_vars,compile_end_construct,opening,closing,await_encountered,requirable?,unshift,inspect,module_name,file,esm?,returns,irb?,each,to_a,helpers,method_missing?,method_calls,join,map,to_proc,empty?,eof_content"),self.$require("pathname"),self.$require("opal/version"),self.$require("opal/nodes/scope"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"TopNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$handle("top"),self.$children("body"),$def(self,"$compile",(function(){var $writer;return $writer=[this],$send(this.$compiler(),"top_scope=",$to_a($writer)),$rb_minus($writer.length,1),this.$push(this.$version_comment()),$send(this,"in_scope",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s,body_code=nil;return null==self.define_nesting&&(self.define_nesting=nil),null==self.define_self&&(self.define_self=nil),null==self.define_relative_access&&(self.define_relative_access=nil),null==self.define_absolute_const&&(self.define_absolute_const=nil),$eqeq(self.$body(),self.$s("nil"))?self.$line("return Opal.nil;"):($truthy(self.$compiler()["$use_strict?"]())&&self.$line('"use strict";'),body_code=self.$stmt(self.$stmts()),$truthy(body_code["$is_a?"]($$("Array")))||(body_code=[body_code]),$truthy(self.$compiler()["$eval?"]())?$truthy(self.define_nesting)&&self.$add_temp("$nesting = self.$$is_a_module ? [self] : [self.$$class]"):($truthy(self.define_self)&&self.$add_temp("self = Opal.top"),$truthy(self.define_nesting)&&self.$add_temp("$nesting = []")),$truthy(self.define_relative_access)&&self.$add_temp("$$ = Opal.$r($nesting)"),self.$add_temp("nil = Opal.nil"),$truthy(self.define_absolute_const)&&self.$add_temp("$$$ = Opal.$$$"),self.$add_used_helpers(),self.$line(self.$scope().$to_vars()),self.$compile_method_stubs(),self.$compile_irb_vars(),self.$compile_end_construct(),self.$line(body_code))}),{$$arity:0,$$s:this}),this.$opening(),this.$closing()}),0),$def(self,"$opening",(function(){var async_prefix=nil;return $truthy(this.$await_encountered())&&(async_prefix="async "),$truthy(this.$compiler()["$requirable?"]())?this.$unshift("Opal.modules["+$$$($$("Opal"),"Compiler").$module_name(this.$compiler().$file()).$inspect()+"] = "+async_prefix+"function(Opal) {"):$truthy(this.$compiler()["$eval?"]())?this.$unshift("("+async_prefix+"function(Opal, self) {"):$truthy(this.$compiler()["$esm?"]())?this.$unshift("export default Opal.queue("+async_prefix+"function(Opal) {"):this.$unshift("Opal.queue("+async_prefix+"function(Opal) {")}),0),$def(self,"$closing",(function(){return $truthy(this.$compiler()["$requirable?"]())?this.$line("};\n"):$truthy(this.$compiler()["$eval?"]())?this.$line("})(Opal, self);"):this.$line("});\n")}),0),$def(self,"$stmts",(function(){return this.$compiler().$returns(this.$body())}),0),$def(self,"$absolute_const",(function(){return this.define_absolute_const=!0,"$$$"}),0),$def(self,"$compile_irb_vars",(function(){return $truthy(this.$compiler()["$irb?"]())?this.$line("if (!Opal.irb_vars) { Opal.irb_vars = {}; }"):nil}),0),$def(self,"$add_used_helpers",(function(){return $send(this.$compiler().$helpers().$to_a(),"each",[],(function $$2(h){return null==h&&(h=nil),(null==$$2.$$s?this:$$2.$$s).$add_temp("$"+h+" = Opal."+h)}),{$$arity:1,$$s:this})}),0),$def(self,"$compile_method_stubs",(function(){var calls=nil,stubs=nil;return $truthy(this.$compiler()["$method_missing?"]())?(calls=this.$compiler().$method_calls(),stubs=$send(calls.$to_a(),"map",[],"to_s".$to_proc()).$join(","),$truthy(stubs["$empty?"]())?nil:this.$line("Opal.add_stubs('"+stubs+"');")):nil}),0),$def(self,"$compile_end_construct",(function(){var content=nil;return $truthy(content=this.$compiler().$eof_content())?(this.$line("var $__END__ = Opal.Object.$new();"),this.$line("$__END__.$read = function() { return "+content.$inspect()+"; };")):nil}),0),$def(self,"$version_comment",(function(){return"/* Generated by Opal "+$$$($$("Opal"),"VERSION")+" */"}),0)}($nesting[0],$$("ScopeNode"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/while"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def;return Opal.add_stubs("require,handle,children,js_truthy,test,with_temp,in_while,compiler,wrap_in_closure?,[]=,while_loop,-,indent,stmt,body,uses_redo?,compile_with_redo,compile_without_redo,await_encountered,scope,wrap,private,push,compile_while,while_open,while_close,line,[],expr?,recv?"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"WhileNode");self.$handle("while"),self.$children("test","body"),$def(self,"$compile",(function(){var test_code;return test_code=this.$js_truthy(this.$test()),$send(this,"with_temp",[],(function $$1(redo_var){var self=null==$$1.$$s?this:$$1.$$s;return null==redo_var&&(redo_var=nil),$send(self.$compiler(),"in_while",[],(function $$2(){var body_code,self=null==$$2.$$s?this:$$2.$$s,$writer=nil;return $truthy(self["$wrap_in_closure?"]())&&($writer=["closure",!0],$send(self.$while_loop(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=["redo_var",redo_var],$send(self.$while_loop(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],body_code=$send(self,"indent",[],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return self.$stmt(self.$body())}),{$$arity:0,$$s:self}),$truthy(self["$uses_redo?"]())?self.$compile_with_redo(test_code,body_code,redo_var):self.$compile_without_redo(test_code,body_code)}),{$$arity:0,$$s:self})}),{$$arity:1,$$s:this}),$truthy(this["$wrap_in_closure?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() {","; return nil; })())"):this.$wrap("(function() {","; return nil; })()"):nil}),0),self.$private(),$def(self,"$compile_with_redo",(function(test_code,body_code,redo_var){return this.$push(redo_var+" = false; "),this.$compile_while([redo_var," || ",test_code],[redo_var+" = false;",body_code])}),3),$def(self,"$compile_without_redo",(function(test_code,body_code){return this.$compile_while([test_code],[body_code])}),2),$def(self,"$compile_while",(function(test_code,body_code){return $send(this,"push",[this.$while_open()].concat($to_a(test_code)).concat([this.$while_close()])),$send(this,"indent",[],(function $$4(){return $send(null==$$4.$$s?this:$$4.$$s,"line",$to_a(body_code))}),{$$arity:0,$$s:this}),this.$line("}")}),2),$def(self,"$while_open",(function(){return"while ("}),0),$def(self,"$while_close",(function(){return") {"}),0),$def(self,"$uses_redo?",(function(){return this.$while_loop()["$[]"]("use_redo")}),0),$def(self,"$wrap_in_closure?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$expr?"]())?$ret_or_1:this["$recv?"]()}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"UntilNode");self.$handle("until"),self.$private(),$def(self,"$while_open",(function(){return"while (!("}),0),$def(self,"$while_close",(function(){return")) {"}),0)}($nesting[0],$$("WhileNode")),function($base,$super){var self=$klass($base,$super,"WhilePostNode");self.$handle("while_post"),self.$private(),$def(self,"$compile_while",(function(test_code,body_code){return this.$push("do {"),$send(this,"indent",[],(function $$7(){return $send(null==$$7.$$s?this:$$7.$$s,"line",$to_a(body_code))}),{$$arity:0,$$s:this}),$send(this,"line",["} ",this.$while_open()].concat($to_a(test_code)).concat([this.$while_close()]))}),2),$def(self,"$while_close",(function(){return");"}),0)}($nesting[0],$$("WhileNode")),function($base,$super){var self=$klass($base,$super,"UntilPostNode");return self.$handle("until_post"),self.$private(),$def(self,"$while_open",(function(){return"while(!("}),0),$def(self,"$while_close",(function(){return"));"}),0)}($nesting[0],$$("WhilePostNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/hash"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$def=Opal.def,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$to_ary=Opal.to_ary,$hash2=Opal.hash2,$rb_minus=Opal.rb_minus;return Opal.add_stubs("require,handle,attr_accessor,each,children,===,type,<<,[],all?,keys,include?,has_kwsplat,compile_merge,simple_keys?,compile_hash2,compile_hash,helper,==,empty?,expr,s,each_with_index,push,wrap,times,size,inspect,to_s,values,[]=,-,join,value"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"HashNode");self.$handle("hash"),self.$attr_accessor("has_kwsplat","keys","values"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.has_kwsplat=!1,self.keys=[],self.values=[],$send(self.$children(),"each",[],(function $$1(child){var $ret_or_1,self=null==$$1.$$s?this:$$1.$$s;return null==self.keys&&(self.keys=nil),null==self.values&&(self.values=nil),null==child&&(child=nil),$eqeqeq("kwsplat",$ret_or_1=child.$type())?self.has_kwsplat=!0:$eqeqeq("pair",$ret_or_1)?(self.keys["$<<"](child.$children()["$[]"](0)),self.values["$<<"](child.$children()["$[]"](1))):nil}),{$$arity:1,$$s:self})}),-1),$def(self,"$simple_keys?",(function(){return $send(this.$keys(),"all?",[],(function(key){return null==key&&(key=nil),["sym","str"]["$include?"](key.$type())}),1)}),0),$def(self,"$compile",(function(){return $truthy(this.$has_kwsplat())?this.$compile_merge():$truthy(this["$simple_keys?"]())?this.$compile_hash2():this.$compile_hash()}),0),$def(self,"$compile_merge",(function(){var $a,result=nil,seq=nil;return this.$helper("hash"),result=($a=[[],[]])[0],seq=$a[1],$send(this.$children(),"each",[],(function $$4(child){var self=null==$$4.$$s?this:$$4.$$s;return null==child&&(child=nil),$eqeq(child.$type(),"kwsplat")?($truthy(seq["$empty?"]())||result["$<<"](self.$expr($send(self,"s",["hash"].concat($to_a(seq))))),result["$<<"](self.$expr(child)),seq=[]):seq["$<<"](child)}),{$$arity:1,$$s:this}),$truthy(seq["$empty?"]())||result["$<<"](this.$expr($send(this,"s",["hash"].concat($to_a(seq))))),$send(result,"each_with_index",[],(function $$5(fragment,idx){var self=null==$$5.$$s?this:$$5.$$s;return null==fragment&&(fragment=nil),null==idx&&(idx=nil),$eqeq(idx,0)?self.$push(fragment):self.$push(".$merge(",fragment,")")}),{$$arity:2,$$s:this})}),0),$def(self,"$compile_hash",(function(){return this.$helper("hash"),$send(this.$children(),"each_with_index",[],(function $$6(pair,idx){var $a,$b,key,value,self=null==$$6.$$s?this:$$6.$$s;return null==pair&&(pair=nil),null==idx&&(idx=nil),$b=pair.$children(),key=null==($a=$to_ary($b))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],$eqeq(idx,0)||self.$push(", "),self.$push(self.$expr(key),", ",self.$expr(value))}),{$$arity:2,$$s:this}),this.$wrap("$hash(",")")}),0),$def(self,"$compile_hash2",(function(){var $a,hash_obj=nil,hash_keys=nil;return $a=[$hash2([],{}),[]],hash_obj=$a[0],hash_keys=$a[1],this.$helper("hash2"),$send(this.$keys().$size(),"times",[],(function $$7(idx){var key,$writer,self=null==$$7.$$s?this:$$7.$$s;return null==idx&&(idx=nil),key=self.$keys()["$[]"](idx).$children()["$[]"](0).$to_s().$inspect(),$truthy(hash_obj["$include?"](key))||hash_keys["$<<"](key),$writer=[key,self.$expr(self.$values()["$[]"](idx))],$send(hash_obj,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),$send(hash_keys,"each_with_index",[],(function $$8(key,idx){var self=null==$$8.$$s?this:$$8.$$s;return null==key&&(key=nil),null==idx&&(idx=nil),$eqeq(idx,0)||self.$push(", "),self.$push(key+": "),self.$push(hash_obj["$[]"](key))}),{$$arity:2,$$s:this}),this.$wrap("$hash2(["+hash_keys.$join(", ")+"], {","})")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"KwSplatNode");return self.$handle("kwsplat"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("Opal.to_hash(",this.$expr(this.$value()),")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/array"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def;return Opal.add_stubs("require,handle,empty?,children,push,each,==,type,expr,<<,fragment"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArrayNode");return self.$handle("array"),$def(self,"$compile",(function(){var $a,code=nil,work=nil,join=nil;return $truthy(this.$children()["$empty?"]())?this.$push("[]"):(code=($a=[[],[]])[0],work=$a[1],$send(this.$children(),"each",[],(function $$1(child){var splat,part,self=null==$$1.$$s?this:$$1.$$s;return null==child&&(child=nil),splat=child.$type()["$=="]("splat"),part=self.$expr(child),$truthy(splat)?($truthy(work["$empty?"]())?$truthy(code["$empty?"]())?code["$<<"](self.$fragment("[].concat("))["$<<"](part)["$<<"](self.$fragment(")")):code["$<<"](self.$fragment(".concat("))["$<<"](part)["$<<"](self.$fragment(")")):($truthy(code["$empty?"]())?code["$<<"](self.$fragment("["))["$<<"](work)["$<<"](self.$fragment("]")):code["$<<"](self.$fragment(".concat(["))["$<<"](work)["$<<"](self.$fragment("])")),code["$<<"](self.$fragment(".concat("))["$<<"](part)["$<<"](self.$fragment(")"))),work=[]):($truthy(work["$empty?"]())||work["$<<"](self.$fragment(", ")),work["$<<"](part))}),{$$arity:1,$$s:this}),$truthy(work["$empty?"]())||(join=[this.$fragment("["),work,this.$fragment("]")],$truthy(code["$empty?"]())?code=join:code.$push([this.$fragment(".concat("),join,this.$fragment(")")])),this.$push(code))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/defined"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeqeq=Opal.eqeqeq,$eqeq=Opal.eqeq,$def=Opal.def,$truthy=Opal.truthy,$to_a=Opal.to_a,$slice=Opal.slice,$send=Opal.send,$range=Opal.range;return Opal.add_stubs("require,handle,children,===,type,value,push,inspect,to_s,==,[],size,compile_defined_send,wrap,compile_defined_ivar,compile_defined_super,compile_defined_yield,compile_defined_xstr,compile_defined_const,compile_defined_cvar,compile_defined_gvar,compile_defined_back_ref,compile_defined_nth_ref,compile_defined_array,respond_to?,__send__,new_temp,scope,expr,wrap_with_try_catch,mid_to_jsid,compile_defined,compile_send_recv_doesnt_raise,self,each,s,uses_block!,block_name,find_parent_def,nil?,relative_access,absolute_const,top_scope,class_variable_owner,helper,include?,each_with_index"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DefinedNode");return self.$handle("defined?"),self.$children("value"),$def(self,"$compile",(function(){var $ret_or_1;return $eqeqeq("self",$ret_or_1=this.$value().$type())||$eqeqeq("nil",$ret_or_1)||$eqeqeq("false",$ret_or_1)||$eqeqeq("true",$ret_or_1)?this.$push(this.$value().$type().$to_s().$inspect()):$eqeqeq("lvasgn",$ret_or_1)||$eqeqeq("ivasgn",$ret_or_1)||$eqeqeq("gvasgn",$ret_or_1)||$eqeqeq("cvasgn",$ret_or_1)||$eqeqeq("casgn",$ret_or_1)||$eqeqeq("op_asgn",$ret_or_1)||$eqeqeq("or_asgn",$ret_or_1)||$eqeqeq("and_asgn",$ret_or_1)?this.$push("'assignment'"):$eqeqeq("lvar",$ret_or_1)?this.$push("'local-variable'"):$eqeqeq("begin",$ret_or_1)?$eqeq(this.$value().$children().$size(),1)&&$eqeq(this.$value().$children()["$[]"](0).$type(),"masgn")?this.$push("'assignment'"):this.$push("'expression'"):$eqeqeq("send",$ret_or_1)?(this.$compile_defined_send(this.$value()),this.$wrap("("," ? 'method' : nil)")):$eqeqeq("ivar",$ret_or_1)?(this.$compile_defined_ivar(this.$value()),this.$wrap("("," ? 'instance-variable' : nil)")):$eqeqeq("zsuper",$ret_or_1)||$eqeqeq("super",$ret_or_1)?this.$compile_defined_super():$eqeqeq("yield",$ret_or_1)?(this.$compile_defined_yield(),this.$wrap("("," ? 'yield' : nil)")):$eqeqeq("xstr",$ret_or_1)?this.$compile_defined_xstr(this.$value()):$eqeqeq("const",$ret_or_1)?(this.$compile_defined_const(this.$value()),this.$wrap("("," ? 'constant' : nil)")):$eqeqeq("cvar",$ret_or_1)?(this.$compile_defined_cvar(this.$value()),this.$wrap("("," ? 'class variable' : nil)")):$eqeqeq("gvar",$ret_or_1)?(this.$compile_defined_gvar(this.$value()),this.$wrap("("," ? 'global-variable' : nil)")):$eqeqeq("back_ref",$ret_or_1)?(this.$compile_defined_back_ref(),this.$wrap("("," ? 'global-variable' : nil)")):$eqeqeq("nth_ref",$ret_or_1)?(this.$compile_defined_nth_ref(),this.$wrap("("," ? 'global-variable' : nil)")):$eqeqeq("array",$ret_or_1)?(this.$compile_defined_array(this.$value()),this.$wrap("("," ? 'expression' : nil)")):this.$push("'expression'")}),0),$def(self,"$compile_defined",(function(node){var type,node_tmp=nil;return type=node.$type(),$truthy(this["$respond_to?"]("compile_defined_"+type))?this.$__send__("compile_defined_"+type,node):(node_tmp=this.$scope().$new_temp(),this.$push("("+node_tmp+" = ",this.$expr(node),")"),node_tmp)}),1),$def(self,"$wrap_with_try_catch",(function(code){var returning_tmp;return returning_tmp=this.$scope().$new_temp(),this.$push("("+returning_tmp+" = (function() { try {"),this.$push(" return "+code+";"),this.$push("} catch ($err) {"),this.$push(" if (Opal.rescue($err, [Opal.Exception])) {"),this.$push(" try {"),this.$push(" return false;"),this.$push(" } finally { Opal.pop_exception() }"),this.$push(" } else { throw $err; }"),this.$push("}})())"),returning_tmp}),1),$def(self,"$compile_send_recv_doesnt_raise",(function(recv_code){return this.$wrap_with_try_catch(recv_code)}),1),$def(self,"$compile_defined_send",(function(node){var $a,args,mid,recv_value_tmp,meth_tmp,recv=nil,method_name=nil,recv_code=nil,recv_tmp=nil;return recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],args=$slice.call($a,2),mid=this.$mid_to_jsid(method_name.$to_s()),$truthy(recv)?(recv_code=this.$compile_defined(recv),this.$push(" && "),$eqeq(recv.$type(),"send")&&(recv_code=this.$compile_send_recv_doesnt_raise(recv_code),this.$push(" && ")),recv_tmp=this.$scope().$new_temp(),this.$push("("+recv_tmp+" = ",recv_code,", "+recv_tmp+") && ")):recv_tmp=this.$scope().$self(),recv_value_tmp=this.$scope().$new_temp(),this.$push("("+recv_value_tmp+" = "+recv_tmp+") && "),meth_tmp=this.$scope().$new_temp(),this.$push("((("+meth_tmp+" = "+recv_value_tmp+mid+") && !"+meth_tmp+".$$stub)"),this.$push(" || "+recv_value_tmp+"['$respond_to_missing?']('"+method_name+"'))"),$send(args,"each",[],(function $$1(arg){var self=null==$$1.$$s?this:$$1.$$s;return null==arg&&(arg=nil),$eqeqeq("block_pass",arg.$type())?nil:(self.$push(" && "),self.$compile_defined(arg))}),{$$arity:1,$$s:this}),this.$wrap("(",")"),meth_tmp+"()"}),1),$def(self,"$compile_defined_ivar",(function(node){var name,tmp;return name=node.$children()["$[]"](0).$to_s()["$[]"]($range(1,-1,!1)),tmp=this.$scope().$new_temp(),this.$push("("+tmp+" = "+this.$scope().$self()+"['"+name+"'], "+tmp+" != null && "+tmp+" !== nil)"),tmp}),1),$def(self,"$compile_defined_super",(function(){return this.$push(this.$expr(this.$s("defined_super")))}),0),$def(self,"$compile_defined_yield",(function(){var block_name,$ret_or_1;return this.$scope()["$uses_block!"](),block_name=$truthy($ret_or_1=this.$scope().$block_name())?$ret_or_1:this.$scope().$find_parent_def().$block_name(),this.$push("("+block_name+" != null && "+block_name+" !== nil)"),block_name}),0),$def(self,"$compile_defined_xstr",(function(node){return this.$push("(typeof(",this.$expr(node),') !== "undefined")')}),1),$def(self,"$compile_defined_const",(function(node){var $a,const_name,const_tmp,const_scope=nil,const_scope_tmp=nil;return const_scope=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],const_name=null==$a[1]?nil:$a[1],const_tmp=this.$scope().$new_temp(),$truthy(const_scope["$nil?"]())?this.$push("("+const_tmp+" = "+this.$scope().$relative_access()+"('"+const_name+"', 'skip_raise'))"):$eqeq(const_scope,this.$s("cbase"))?this.$push("("+const_tmp+" = "+this.$top_scope().$absolute_const()+"('::', '"+const_name+"', 'skip_raise'))"):(const_scope_tmp=this.$compile_defined(const_scope),this.$push(" && ("+const_tmp+" = "+this.$top_scope().$absolute_const()+"("+const_scope_tmp+", '"+const_name+"', 'skip_raise'))")),const_tmp}),1),$def(self,"$compile_defined_cvar",(function(node){var $a,cvar_name,cvar_tmp;return cvar_name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],cvar_tmp=this.$scope().$new_temp(),this.$push("("+cvar_tmp+" = "+this.$class_variable_owner()+".$$cvars['"+cvar_name+"'], "+cvar_tmp+" != null)"),cvar_tmp}),1),$def(self,"$compile_defined_gvar",(function(node){var gvar_temp,name=nil;return this.$helper("gvars"),name=node.$children()["$[]"](0).$to_s()["$[]"]($range(1,-1,!1)),gvar_temp=this.$scope().$new_temp(),$truthy(["~","!"]["$include?"](name))?this.$push("("+gvar_temp+" = ",this.$expr(node)," || true)"):this.$push("("+gvar_temp+" = $gvars["+name.$inspect()+"], "+gvar_temp+" != null)"),gvar_temp}),1),$def(self,"$compile_defined_back_ref",(function(){var back_ref_temp;return this.$helper("gvars"),back_ref_temp=this.$scope().$new_temp(),this.$push("("+back_ref_temp+" = $gvars['~'], "+back_ref_temp+" != null && "+back_ref_temp+" !== nil)"),back_ref_temp}),0),$def(self,"$compile_defined_nth_ref",(function(){var nth_ref_tmp;return this.$helper("gvars"),nth_ref_tmp=this.$scope().$new_temp(),this.$push("("+nth_ref_tmp+" = $gvars['~'], "+nth_ref_tmp+" != null && "+nth_ref_tmp+" != nil)"),nth_ref_tmp}),0),$def(self,"$compile_defined_array",(function(node){return $send(node.$children(),"each_with_index",[],(function $$2(child,idx){var self=null==$$2.$$s?this:$$2.$$s;return null==child&&(child=nil),null==idx&&(idx=nil),$eqeq(idx,0)||self.$push(" && "),self.$compile_defined(child)}),{$$arity:2,$$s:this})}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/masgn"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def,$rb_ge=Opal.rb_ge,$not=Opal.not,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,freeze,handle,children,new_temp,scope,==,type,rhs,push,expr,any?,size,compile_masgn,lhs,helper,queue_temp,take_while,!=,drop,each_with_index,compile_assignment,empty?,shift,[],<<,dup,s,>=,!,updated,include?,+,last,raise"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"MassAssignNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"SIMPLE_ASSIGNMENT",["lvasgn","ivasgn","lvar","gvasgn","cdecl","casgn"].$freeze()),self.$handle("masgn"),self.$children("lhs","rhs"),$def(self,"$compile",(function(){var array,rhs_len=nil,retval=nil;return array=this.$scope().$new_temp(),$eqeq(this.$rhs().$type(),"array")?(this.$push(array+" = ",this.$expr(this.$rhs())),rhs_len=$truthy($send(this.$rhs().$children(),"any?",[],(function(c){return null==c&&(c=nil),c.$type()["$=="]("splat")}),1))?nil:this.$rhs().$children().$size(),this.$compile_masgn(this.$lhs().$children(),array,rhs_len),this.$push(", "+array)):(this.$helper("to_ary"),retval=this.$scope().$new_temp(),this.$push(retval+" = ",this.$expr(this.$rhs())),this.$push(", "+array+" = $to_ary("+retval+")"),this.$compile_masgn(this.$lhs().$children(),array),this.$push(", "+retval),this.$scope().$queue_temp(retval)),this.$scope().$queue_temp(array)}),0),$def(self,"$compile_masgn",(function(lhs_items,array,len){var pre_splat=nil,post_splat=nil,splat=nil,part=nil,tmp=nil;return null==len&&(len=nil),pre_splat=$send(lhs_items,"take_while",[],(function(child){return null==child&&(child=nil),child.$type()["$!="]("splat")}),1),post_splat=lhs_items.$drop(pre_splat.$size()),$send(pre_splat,"each_with_index",[],(function $$3(child,idx){return null==child&&(child=nil),null==idx&&(idx=nil),(null==$$3.$$s?this:$$3.$$s).$compile_assignment(child,array,idx,len)}),{$$arity:2,$$s:this}),$truthy(post_splat["$empty?"]())?nil:(splat=post_splat.$shift(),$truthy(post_splat["$empty?"]())?$truthy(part=splat.$children()["$[]"](0))?(this.$helper("slice"),part=part.$dup()["$<<"](this.$s("js_tmp","$slice.call("+array+", "+pre_splat.$size()+")")),this.$push(", "),this.$push(this.$expr(part))):nil:(tmp=this.$scope().$new_temp(),this.$push(", "+tmp+" = "+array+".length - "+post_splat.$size()),this.$push(", "+tmp+" = ("+tmp+" < "+pre_splat.$size()+") ? "+pre_splat.$size()+" : "+tmp),$truthy(part=splat.$children()["$[]"](0))&&(this.$helper("slice"),part=part.$dup()["$<<"](this.$s("js_tmp","$slice.call("+array+", "+pre_splat.$size()+", "+tmp+")")),this.$push(", "),this.$push(this.$expr(part))),$send(post_splat,"each_with_index",[],(function $$4(child,idx){var self=null==$$4.$$s?this:$$4.$$s;return null==child&&(child=nil),null==idx&&(idx=nil),$eqeq(idx,0)?self.$compile_assignment(child,array,tmp):self.$compile_assignment(child,array,tmp+" + "+idx)}),{$$arity:2,$$s:this}),this.$scope().$queue_temp(tmp)))}),-3),$def(self,"$compile_assignment",(function(child,array,idx,len){var assign=nil,part=nil,tmp=nil;if(null==len&&(len=nil),assign=$not(len)||$truthy($rb_ge(idx,len))?this.$s("js_tmp","("+array+"["+idx+"] == null ? nil : "+array+"["+idx+"])"):this.$s("js_tmp",array+"["+idx+"]"),part=child.$updated(),$truthy($$("SIMPLE_ASSIGNMENT")["$include?"](child.$type())))part=part.$updated(nil,$rb_plus(part.$children(),[assign]));else if($eqeq(child.$type(),"send"))part=part.$updated(nil,$rb_plus(part.$children(),[assign]));else if($eqeq(child.$type(),"attrasgn"))part.$last()["$<<"](assign);else{if($eqeq(child.$type(),"mlhs"))return this.$helper("to_ary"),tmp=this.$scope().$new_temp(),this.$push(", ("+tmp+" = $to_ary("+assign.$children()["$[]"](0)+")"),this.$compile_masgn(child.$children(),tmp),this.$push(")"),this.$scope().$queue_temp(tmp),nil;this.$raise("Bad child node in masgn LHS: "+child+". LHS: "+this.$lhs())}return this.$push(", "),this.$push(this.$expr(part))}),-4)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/arglist"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$to_a=Opal.to_a,$def=Opal.def;return Opal.add_stubs("require,handle,each,children,==,type,expr,empty?,<<,fragment,push"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArglistNode");return self.$handle("arglist"),$def(self,"$compile",(function(){var $a,code=nil,work=nil,join=nil;return code=($a=[[],[]])[0],work=$a[1],$send(this.$children(),"each",[],(function $$1(current){var splat,arg,self=null==$$1.$$s?this:$$1.$$s;return null==current&&(current=nil),splat=current.$type()["$=="]("splat"),arg=self.$expr(current),$truthy(splat)?($truthy(work["$empty?"]())?$truthy(code["$empty?"]())?code["$<<"](arg):code["$<<"](self.$fragment(".concat("))["$<<"](arg)["$<<"](self.$fragment(")")):($truthy(code["$empty?"]())?code["$<<"](self.$fragment("["))["$<<"](work)["$<<"](self.$fragment("]")):code["$<<"](self.$fragment(".concat(["))["$<<"](work)["$<<"](self.$fragment("])")),code["$<<"](self.$fragment(".concat("))["$<<"](arg)["$<<"](self.$fragment(")"))),work=[]):($truthy(work["$empty?"]())||work["$<<"](self.$fragment(", ")),work["$<<"](arg))}),{$$arity:1,$$s:this}),$truthy(work["$empty?"]())||(join=work,$truthy(code["$empty?"]())?code=join:code["$<<"](this.$fragment(".concat(["))["$<<"](join)["$<<"](this.$fragment("])"))),$send(this,"push",$to_a(code))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/x_string"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def,$defs=Opal.defs,$lambda=Opal.lambda,$eqeqeq=Opal.eqeqeq,$eqeq=Opal.eqeq,$not=Opal.not,$range=Opal.range;return Opal.add_stubs("handle,unpack_return,children,strip_empty_children,single_line?,compile_single_line,each,compile_child,recv?,wrap,push,==,size,none?,type,end_with?,source,expression,loc,dup,nil?,empty?,rstrip,any?,[],first,shift,last,pop,private,===,include?,self,scope,new,expr,raise,s,strip,=~,!,extract_last_value,expr?,warning,compiler,line"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"XStringNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.should_add_semicolon=$proto.returning=nil,self.$handle("xstr"),$def(self,"$compile",(function(){var unpacked_children,stripped_children;return this.should_add_semicolon=!1,unpacked_children=this.$unpack_return(this.$children()),stripped_children=$$("XStringNode").$strip_empty_children(unpacked_children),$truthy($$("XStringNode")["$single_line?"](stripped_children))?this.$compile_single_line(stripped_children):$send(unpacked_children,"each",[],(function $$1(c){return null==c&&(c=nil),(null==$$1.$$s?this:$$1.$$s).$compile_child(c)}),{$$arity:1,$$s:this}),$truthy(this["$recv?"]())&&this.$wrap("(",")"),$truthy(this.should_add_semicolon)?this.$push(";"):nil}),0),$defs(self,"$single_line?",(function(children){var $ret_or_1;return $truthy($ret_or_1=children.$size()["$=="](1))?$ret_or_1:$send(children,"none?",[],(function(c){var $ret_or_2;return null==c&&(c=nil),$truthy($ret_or_2=c.$type()["$=="]("str"))?c.$loc().$expression().$source()["$end_with?"]("\n"):$ret_or_2}),1)}),1),$defs(self,"$strip_empty_children",(function(children){var empty_line=nil,$ret_or_1=nil;for(children=children.$dup(),empty_line=$lambda((function(child){var $ret_or_1,$ret_or_2=nil;return null==child&&(child=nil),$truthy($ret_or_1=child["$nil?"]())?$ret_or_1:$truthy($ret_or_2=child.$type()["$=="]("str"))?child.$loc().$expression().$source().$rstrip()["$empty?"]():$ret_or_2}),1);$truthy($truthy($ret_or_1=children["$any?"]())?empty_line["$[]"](children.$first()):$ret_or_1);)children.$shift();for(;$truthy($truthy($ret_or_1=children["$any?"]())?empty_line["$[]"](children.$last()):$ret_or_1);)children.$pop();return children}),1),self.$private(),$def(self,"$compile_child",(function(child){var $ret_or_1,value=nil;return $eqeqeq("str",$ret_or_1=child.$type())?(value=child.$loc().$expression().$source(),$truthy(value["$include?"]("self"))&&this.$scope().$self(),this.$push($$("Fragment").$new(value,this.$scope(),child))):$eqeqeq("begin",$ret_or_1)||$eqeqeq("gvar",$ret_or_1)||$eqeqeq("ivar",$ret_or_1)||$eqeqeq("nil",$ret_or_1)?this.$push(this.$expr(child)):this.$raise("Unsupported xstr part: "+child.$type())}),1),$def(self,"$compile_single_line",(function(children){var single_child,has_embeded_return=nil,first_child=nil,$ret_or_1=nil,last_child=nil,last_value=nil;return has_embeded_return=!1,first_child=children.$shift(),single_child=children["$empty?"](),first_child=$truthy($ret_or_1=first_child)?$ret_or_1:this.$s("nil"),$eqeq(first_child.$type(),"str")&&(has_embeded_return=first_child.$loc().$expression().$source().$strip()["$=~"](/^return\b/)),$truthy(this.returning)&&$not(has_embeded_return)&&this.$push("return "),last_child=$truthy($ret_or_1=children.$pop())?$ret_or_1:first_child,$eqeq(last_child.$type(),"str")&&(last_value=this.$extract_last_value(last_child)),$truthy(single_child)||(this.should_add_semicolon=!1,this.$compile_child(first_child),$send(children,"each",[],(function $$5(c){return null==c&&(c=nil),(null==$$5.$$s?this:$$5.$$s).$compile_child(c)}),{$$arity:1,$$s:this})),$eqeq(last_child.$type(),"str")?this.$push($$("Fragment").$new(last_value,this.$scope(),last_child)):this.$compile_child(last_child)}),1),$def(self,"$extract_last_value",(function(last_child){var last_value=nil;return last_value=last_child.$loc().$expression().$source().$rstrip(),$truthy(last_value["$include?"]("self"))&&this.$scope().$self(),($truthy(this.returning)||$truthy(this["$expr?"]()))&&$truthy(last_value["$end_with?"](";"))&&(this.$compiler().$warning("Removed semicolon ending x-string expression, interpreted as unintentional",last_child.$line()),last_value=last_value["$[]"]($range(0,-2,!1))),$truthy(this.returning)&&(this.should_add_semicolon=!0),last_value}),1),$def(self,"$unpack_return",(function(children){var first_child=nil;return first_child=children.$first(),this.returning=!1,$eqeq(first_child.$type(),"js_return")&&(this.returning=!0,children=first_child.$children()),children}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/lambda"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send=Opal.send,$def=Opal.def;return Opal.add_stubs("require,handle,children,helper,defines_lambda,scope,push,expr,iter"),self.$require("opal/nodes/call"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"LambdaNode");return self.$handle("lambda"),self.$children("iter"),$def(self,"$compile",(function(){return this.$helper("lambda"),$send(this.$scope(),"defines_lambda",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return self.$push("$lambda(",self.$expr(self.$iter()),")")}),{$$arity:0,$$s:this})}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes"]=function(Opal){var self=Opal.top;Opal.nil;return Opal.add_stubs("require"),self.$require("opal/nodes/base"),self.$require("opal/nodes/literal"),self.$require("opal/nodes/variables"),self.$require("opal/nodes/constants"),self.$require("opal/nodes/call"),self.$require("opal/nodes/csend"),self.$require("opal/nodes/call_special"),self.$require("opal/nodes/module"),self.$require("opal/nodes/class"),self.$require("opal/nodes/singleton_class"),self.$require("opal/nodes/args"),self.$require("opal/nodes/args/arity_check"),self.$require("opal/nodes/iter"),self.$require("opal/nodes/def"),self.$require("opal/nodes/defs"),self.$require("opal/nodes/if"),self.$require("opal/nodes/logic"),self.$require("opal/nodes/definitions"),self.$require("opal/nodes/yield"),self.$require("opal/nodes/rescue"),self.$require("opal/nodes/super"),self.$require("opal/nodes/top"),self.$require("opal/nodes/while"),self.$require("opal/nodes/hash"),self.$require("opal/nodes/array"),self.$require("opal/nodes/defined"),self.$require("opal/nodes/masgn"),self.$require("opal/nodes/arglist"),self.$require("opal/nodes/x_string"),self.$require("opal/nodes/lambda")},Opal.modules["opal/eof_content"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$eqeq=Opal.eqeq,$range=Opal.range,$to_ary=Opal.to_ary;return Opal.add_stubs("empty?,[],last_token_position,drop_while,lines,==,join,private,last,end_pos"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"EofContent"),$nesting=[self].concat($parent_nesting),$proto=self.$$prototype;return $proto.tokens=$proto.source=nil,$const_set($nesting[0],"DATA_SEPARATOR","__END__\n"),$def(self,"$initialize",(function(tokens,source){return this.tokens=tokens,this.source=source}),2),$def(self,"$eof",(function(){var eof_content=nil,$ret_or_1=nil;return $truthy(this.tokens["$empty?"]())?nil:(eof_content=this.source["$[]"](Opal.Range.$new(this.$last_token_position(),-1,!1)),$truthy(eof_content)?(eof_content=$send(eof_content.$lines(),"drop_while",[],(function(line){return null==line&&(line=nil),line["$=="]("\n")}),1),$eqeq(eof_content["$[]"](0),"__END__\n")?(eof_content=$truthy($ret_or_1=eof_content["$[]"]($range(1,-1,!1)))?$ret_or_1:[]).$join():$eqeq(eof_content,["__END__"])?"":nil):nil)}),0),self.$private(),$def(self,"$last_token_position",(function(){var $a,$b,last_token_info;return $b=this.tokens.$last(),null==($a=$to_ary($b))[0]?nil:$a[0],last_token_info=null==$a[1]?nil:$a[1],null==($a=$to_ary($b=last_token_info))[0]?nil:$a[0],(null==$a[1]?nil:$a[1]).$end_pos()}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/errors"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$defs=Opal.defs,$rb_plus=Opal.rb_plus,$alias=Opal.alias;return Opal.add_stubs("attr_reader,attr_accessor,new,respond_to?,location,location=,-,diagnostic,diagnostic=,to_a,backtrace,unshift,to_s,set_backtrace,path,lineno,+,label,line,lineno=,source_line,label=,expression"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $klass($nesting[0],$$("StandardError"),"Error"),function($base,$super){var self=$klass($base,$super,"GemNotFound");self.$attr_reader("gem_name"),$def(self,"$initialize",(function $$initialize(gem_name){return delete $$initialize.$$p,this.gem_name=gem_name,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",["can't find gem "+gem_name],null)}),1)}($nesting[0],$$("Error")),function($base,$super){$klass($base,$super,"CompilationError").$attr_accessor("location")}($nesting[0],$$("Error")),$klass($nesting[0],$$("CompilationError"),"ParsingError"),$klass($nesting[0],$$("ParsingError"),"RewritingError"),function($base,$super){$klass($base,$super,"SyntaxError").$attr_accessor("location")}($nesting[0],$$$("SyntaxError")),$defs(self,"$opal_location_from_error",(function(error){var opal_location,$writer=nil;return opal_location=$$("OpalBacktraceLocation").$new(),$truthy(error["$respond_to?"]("location"))&&($writer=[error.$location()],$send(opal_location,"location=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy(error["$respond_to?"]("diagnostic"))&&($writer=[error.$diagnostic()],$send(opal_location,"diagnostic=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),opal_location}),1),$defs(self,"$add_opal_location_to_error",(function(opal_location,error){var backtrace=nil;return(backtrace=error.$backtrace().$to_a()).$unshift(opal_location.$to_s()),error.$set_backtrace(backtrace),error}),2),function($base,$super){var self=$klass($base,null,"OpalBacktraceLocation");return self.$attr_accessor("path","lineno","label"),$def(self,"$initialize",(function(path,lineno,label){var $a;return null==path&&(path=nil),null==lineno&&(lineno=nil),null==label&&(label=nil),$a=[path,lineno,label],this.path=$a[0],this.lineno=$a[1],this.label=$a[2],$a}),-1),$def(self,"$to_s",(function(){var string=nil;return string=this.$path(),$truthy(this.$lineno())&&(string=$rb_plus(string,":"+this.$lineno())),string=$rb_plus(string,":in "),string=$truthy(this.$label())?$rb_plus(string,"`"+this.$label()+"'"):$rb_plus(string,"unknown")}),0),$alias(self,"line","lineno"),$def(self,"$diagnostic=",(function(diagnostic){var $writer;return $truthy(diagnostic)?($writer=[diagnostic.$location()],$send(this,"location=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),1),$def(self,"$location=",(function(location){var $writer=nil;return $truthy(location)?($writer=[location.$line()],$send(this,"lineno=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(location["$respond_to?"]("source_line"))?($writer=[location.$source_line()],$send(this,"label=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):$truthy(location["$respond_to?"]("expression"))?($writer=[location.$expression().$source_line()],$send(this,"label=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil):nil}),1)}($nesting[0])}($nesting[0],$nesting)},Opal.modules["opal/magic_comments"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$module=Opal.module,$const_set=Opal.const_set,$hash2=Opal.hash2,$truthy=Opal.truthy,$send=Opal.send,$rb_ge=Opal.rb_ge,$eqeqeq=Opal.eqeqeq,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$defs=Opal.defs;return Opal.add_stubs("freeze,line,loc,take,each,>=,any?,scan,text,to_sym,===,[]=,-"),function($base,$parent_nesting){var self=$module($base,"MagicComments"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"MAGIC_COMMENT_RE",/^# *(\w+) *: *(\S+.*?) *$/.$freeze()),$const_set($nesting[0],"EMACS_MAGIC_COMMENT_RE",/^# *-\*- *(\w+) *: *(\S+.*?) *-\*- *$/.$freeze()),$defs(self,"$parse",(function(sexp,comments){var flags,first_line=nil;return flags=$hash2([],{}),$truthy(sexp)&&(first_line=sexp.$loc().$line(),comments=comments.$take(first_line)),$send(comments,"each",[],(function(comment){var parts=nil;return null==comment&&(comment=nil),$truthy(first_line)&&$truthy($rb_ge(comment.$loc().$line(),first_line))?nil:$truthy((parts=comment.$text().$scan($$("MAGIC_COMMENT_RE")))["$any?"]())||$truthy((parts=comment.$text().$scan($$("EMACS_MAGIC_COMMENT_RE")))["$any?"]())?$send(parts,"each",[],(function(key,value){var $writer,$ret_or_1;return null==key&&(key=nil),null==value&&(value=nil),$writer=[key.$to_sym(),$eqeqeq("true",$ret_or_1=value)||!$eqeqeq("false",$ret_or_1)&&value],$send(flags,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),2):nil}),1),flags}),2)}($$("Opal"),$nesting)},Opal.modules["opal/compiler"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$hash2=Opal.hash2,$defs=Opal.defs,$klass=Opal.klass,$const_set=Opal.const_set,$send=Opal.send,$truthy=Opal.truthy,$not=Opal.not,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$Opal=Opal.Opal,$to_ary=Opal.to_ary,$alias=Opal.alias,$eqeqeq=Opal.eqeqeq,$regexp=Opal.regexp,$rb_plus=Opal.rb_plus,$slice=Opal.slice,$eqeq=Opal.eqeq;return Opal.add_stubs("require,compile,new,freeze,join,dirname,first,split,basename,to_s,cleanpath,Pathname,fetch,define_method,option_value,key?,[],!,include?,raise,inspect,[]=,-,compiler_option,attr_reader,attr_accessor,parse,re_raise_with_location,flatten,process,end_with?,code,last,<<,fragment,s,map,to_proc,file,source=,default_parser,tokenize,requirable?,eval?,tap,meta,associate_locations,eof,magic_comments,to_sym,strip,async_await_before_typecasting,===,async_await_set_to_regexp,to_a,gsub,escape,location=,opal_location_from_error,path=,label,lines,to_i,line,label=,message,set_backtrace,backtrace,add_opal_location_to_error,warn,empty?,+,start_with?,helpers,new_temp,queue_temp,push_while,pop_while,in_while?,nil?,scope,handlers,type,compile_to_fragments,error,returns,updated,children,==,uses_block!,block_name,find_parent_def,cache,source_map"),self.$require("set"),self.$require("opal/parser"),self.$require("opal/fragment"),self.$require("opal/nodes"),self.$require("opal/eof_content"),self.$require("opal/errors"),self.$require("opal/magic_comments"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$compile",(function(source,options){return null==options&&(options=$hash2([],{})),$$("Compiler").$new(source,options).$compile()}),-2),function($base,$super,$parent_nesting){var self=$klass($base,null,"Compiler"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.option_values=$proto.options=$proto.magic_comments=$proto.fragments=$proto.source=$proto.buffer=$proto.source_map=$proto.result=$proto.helpers=$proto.method_calls=$proto.async_await=$proto.indent=$proto.unique=$proto.scope=$proto.case_stmt=$proto.handlers=$proto.requires=$proto.required_trees=$proto.autoloads=nil,$const_set($nesting[0],"INDENT"," "),$const_set($nesting[0],"COMPARE",["<",">","<=",">="].$freeze()),$defs(self,"$module_name",(function(path){return path=$$("File").$join($$("File").$dirname(path),$$("File").$basename(path).$split(".").$first()),this.$Pathname(path).$cleanpath().$to_s()}),1),$defs(self,"$compiler_option",(function(name,config){var method_name;return null==config&&(config=$hash2([],{})),method_name=config.$fetch("as",name),$send(this,"define_method",[method_name],(function $$1(){return(null==$$1.$$s?this:$$1.$$s).$option_value(name,config)}),{$$arity:0,$$s:this})}),-2),$def(self,"$option_value",(function(name,config){var default_value,magic_comment,$writer,valid_values=nil,value=nil;return $truthy(this.option_values["$key?"](name))?this.option_values["$[]"](name):(default_value=config["$[]"]("default"),valid_values=config["$[]"]("valid_values"),magic_comment=config["$[]"]("magic_comment"),value=this.options.$fetch(name,default_value),$truthy(magic_comment)&&$truthy(this.magic_comments["$key?"](name))&&(value=this.magic_comments.$fetch(name)),$truthy(valid_values)&&$not(valid_values["$include?"](value))&&this.$raise($$("ArgumentError"),"invalid value "+value.$inspect()+" for option "+name.$inspect()+" (valid values: "+valid_values.$inspect()+")"),$writer=[name,value],$send(this.option_values,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),2),self.$compiler_option("file",$hash2(["default"],{default:"(file)"})),self.$compiler_option("method_missing",$hash2(["default","as"],{default:!0,as:"method_missing?"})),self.$compiler_option("arity_check",$hash2(["default","as"],{default:!1,as:"arity_check?"})),self.$compiler_option("freezing",$hash2(["default","as"],{default:!0,as:"freezing?"})),self.$compiler_option("irb",$hash2(["default","as"],{default:!1,as:"irb?"})),self.$compiler_option("dynamic_require_severity",$hash2(["default","valid_values"],{default:"ignore",valid_values:["error","warning","ignore"]})),self.$compiler_option("requirable",$hash2(["default","as"],{default:!1,as:"requirable?"})),self.$compiler_option("esm",$hash2(["default","as"],{default:!1,as:"esm?"})),self.$compiler_option("inline_operators",$hash2(["default","as"],{default:!0,as:"inline_operators?"})),self.$compiler_option("eval",$hash2(["default","as"],{default:!1,as:"eval?"})),self.$compiler_option("enable_source_location",$hash2(["default","as"],{default:!1,as:"enable_source_location?"})),self.$compiler_option("use_strict",$hash2(["default","as","magic_comment"],{default:!1,as:"use_strict?",magic_comment:!0})),self.$compiler_option("parse_comments",$hash2(["default","as"],{default:!1,as:"parse_comments?"})),self.$compiler_option("scope_variables",$hash2(["default"],{default:[]})),self.$compiler_option("await",$hash2(["default","as","magic_comment"],{default:!1,as:"async_await",magic_comment:!0})),self.$attr_reader("result"),self.$attr_reader("fragments"),self.$attr_accessor("scope"),self.$attr_accessor("top_scope"),self.$attr_reader("case_stmt"),self.$attr_reader("eof_content"),self.$attr_reader("comments"),self.$attr_reader("magic_comments"),$def(self,"$initialize",(function(source,options){return null==options&&(options=$hash2([],{})),this.source=source,this.indent="",this.unique=0,this.options=options,this.comments=$$("Hash").$new([]),this.case_stmt=nil,this.option_values=$hash2([],{}),this.magic_comments=$hash2([],{})}),-2),$def(self,"$compile",(function(){return this.$parse(),this.fragments=$send(this,"re_raise_with_location",[],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;return null==self.sexp&&(self.sexp=nil),self.$process(self.sexp).$flatten()}),{$$arity:0,$$s:this}),$truthy(this.fragments.$last().$code()["$end_with?"]("\n"))||this.fragments["$<<"](this.$fragment("\n",nil,this.$s("newline"))),this.result=$send(this.fragments,"map",[],"code".$to_proc()).$join("")}),0),$def(self,"$parse",(function(){var $a,$b,sexp,comments,tokens,kind,$ret_or_1,$writer=nil;return this.buffer=$$$($$$($Opal,"Parser"),"SourceBuffer").$new(this.$file(),1),$writer=[this.source],$send(this.buffer,"source=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.parser=$$$($$("Opal"),"Parser").$default_parser(),$b=$send(this,"re_raise_with_location",[],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return null==self.parser&&(self.parser=nil),null==self.buffer&&(self.buffer=nil),self.parser.$tokenize(self.buffer)}),{$$arity:0,$$s:this}),sexp=null==($a=$to_ary($b))[0]?nil:$a[0],comments=null==$a[1]?nil:$a[1],tokens=null==$a[2]?nil:$a[2],kind=$truthy(this["$requirable?"]())?"require":$truthy(this["$eval?"]())?"eval":"main",this.sexp=$send(this.$s("top",$truthy($ret_or_1=sexp)?$ret_or_1:this.$s("nil")),"tap",[],(function(i){return null==i&&(i=nil),$writer=["kind",kind],$send(i.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),this.comments=$$$($$$($$$("Parser"),"Source"),"Comment").$associate_locations(sexp,comments),this.magic_comments=$$("MagicComments").$parse(sexp,comments),this.eof_content=$$("EofContent").$new(tokens,this.source).$eof()}),0),$def(self,"$source_map",(function(){var $ret_or_1;return $truthy($ret_or_1=this.source_map)?$ret_or_1:$$$($$$($Opal,"SourceMap"),"File").$new(this.fragments,this.$file(),this.source,this.result)}),0),$def(self,"$helpers",(function(){var $ret_or_1;return this.helpers=$truthy($ret_or_1=this.helpers)?$ret_or_1:$$("Set").$new($send(this.$magic_comments()["$[]"]("helpers").$to_s().$split(","),"map",[],(function(h){return null==h&&(h=nil),h.$strip().$to_sym()}),1))}),0),$def(self,"$method_calls",(function(){var $ret_or_1;return this.method_calls=$truthy($ret_or_1=this.method_calls)?$ret_or_1:$$("Set").$new()}),0),$alias(self,"async_await_before_typecasting","async_await"),$def(self,"$async_await",(function(){var $a,original=nil,$ret_or_1=nil;return $truthy(null!=($a=this.async_await)&&$a!==nil?"instance-variable":nil)?this.async_await:(original=this.$async_await_before_typecasting(),this.async_await=$eqeqeq($$("String"),$ret_or_1=original)?this.$async_await_set_to_regexp($send(original.$split(","),"map",[],(function(h){return null==h&&(h=nil),h.$strip().$to_sym()}),1)):$eqeqeq($$("Array"),$ret_or_1)||$eqeqeq($$("Set"),$ret_or_1)?this.$async_await_set_to_regexp($send(original.$to_a(),"map",[],"to_sym".$to_proc())):$eqeqeq($$("Regexp"),$ret_or_1)||$eqeqeq(!0,$ret_or_1)||$eqeqeq(!1,$ret_or_1)?original:this.$raise("A value of await compiler option can be either a Set, an Array, a String or a Boolean."))}),0),$def(self,"$async_await_set_to_regexp",(function(set){return set=(set=$send(set,"map",[],(function(name){return null==name&&(name=nil),$$("Regexp").$escape(name.$to_s()).$gsub("\\*",".*?")}),1)).$join("|"),$regexp(["^(",set,")$"])}),1),$def(self,"$error",(function(msg,line){var error,$writer;return null==line&&(line=nil),error=$$$($Opal,"SyntaxError").$new(msg),$writer=[$$$($$("Opal"),"OpalBacktraceLocation").$new(this.$file(),line)],$send(error,"location=",$to_a($writer)),$rb_minus($writer.length,1),this.$raise(error)}),-2),$def(self,"$re_raise_with_location",(function $$re_raise_with_location(){var $yield=$$re_raise_with_location.$$p||nil,error=nil,opal_location=nil,$writer=nil,new_error=nil;delete $$re_raise_with_location.$$p;try{return Opal.yieldX($yield,[])}catch($err){if(!Opal.rescue($err,[$$("StandardError"),$$$($Opal,"SyntaxError")]))throw $err;error=$err;try{return opal_location=$Opal.$opal_location_from_error(error),$writer=[this.$file()],$send(opal_location,"path=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(opal_location.$label())||($writer=[this.source.$lines()["$[]"]($rb_minus(opal_location.$line().$to_i(),1)).$strip()],$send(opal_location,"label=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),(new_error=$$$($Opal,"SyntaxError").$new(error.$message())).$set_backtrace(error.$backtrace()),$Opal.$add_opal_location_to_error(opal_location,new_error),this.$raise(new_error)}finally{Opal.pop_exception()}}}),0),$def(self,"$warning",(function(msg,line){return null==line&&(line=nil),this.$warn("warning: "+msg+" -- "+this.$file()+":"+line)}),-2),$def(self,"$parser_indent",(function(){return this.indent}),0),$def(self,"$s",(function(type,$a){var children;return children=Opal.slice.call(arguments,1),$$$($$$($Opal,"AST"),"Node").$new(type,children)}),-2),$def(self,"$fragment",(function(str,scope,sexp){return null==sexp&&(sexp=nil),$$("Fragment").$new(str,scope,sexp)}),-3),$def(self,"$unique_temp",(function(name){var unique;return name=name.$to_s(),$truthy(name)&&$not(name["$empty?"]())&&(name=name.$to_s().$gsub("<=>","$lt_eq_gt").$gsub("===","$eq_eq_eq").$gsub("==","$eq_eq").$gsub("=~","$eq_tilde").$gsub("!~","$excl_tilde").$gsub("!=","$not_eq").$gsub("<=","$lt_eq").$gsub(">=","$gt_eq").$gsub("=","$eq").$gsub("?","$ques").$gsub("!","$excl").$gsub("/","$slash").$gsub("%","$percent").$gsub("+","$plus").$gsub("-","$minus").$gsub("<","$lt").$gsub(">","$gt").$gsub(/[^\w\$]/,"$")),unique=this.unique=$rb_plus(this.unique,1),""+($truthy(name["$start_with?"]("$"))?nil:"$")+name+"$"+unique}),1),$def(self,"$helper",(function(name){return this.$helpers()["$<<"](name)}),1),$def(self,"$indent",(function $$indent(){var indent,res,$yield=$$indent.$$p||nil;return delete $$indent.$$p,indent=this.indent,this.indent=$rb_plus(this.indent,$$("INDENT")),this.space="\n"+this.indent,res=Opal.yieldX($yield,[]),this.indent=indent,this.space="\n"+this.indent,res}),0),$def(self,"$with_temp",(function $$with_temp(){var tmp,res,$yield=$$with_temp.$$p||nil;return delete $$with_temp.$$p,tmp=this.scope.$new_temp(),res=Opal.yield1($yield,tmp),this.scope.$queue_temp(tmp),res}),0),$def(self,"$in_while",(function $$in_while(){var result,$yield=$$in_while.$$p||nil;return delete $$in_while.$$p,$yield===nil?nil:(this.while_loop=this.scope.$push_while(),result=Opal.yieldX($yield,[]),this.scope.$pop_while(),result)}),0),$def(self,"$in_case",(function $$in_case(){var old,$yield=$$in_case.$$p||nil;return delete $$in_case.$$p,$yield===nil?nil:(old=this.case_stmt,this.case_stmt=$hash2([],{}),Opal.yieldX($yield,[]),this.case_stmt=old)}),0),$def(self,"$in_while?",(function(){return this.scope["$in_while?"]()}),0),$def(self,"$process",(function(sexp,level){var handler=nil;return null==level&&(level="expr"),$truthy(sexp["$nil?"]())?this.$fragment("",this.$scope()):$truthy(handler=this.$handlers()["$[]"](sexp.$type()))?handler.$new(sexp,level,this).$compile_to_fragments():this.$error("Unsupported sexp: "+sexp.$type())}),-2),$def(self,"$handlers",(function(){var $ret_or_1;return this.handlers=$truthy($ret_or_1=this.handlers)?$ret_or_1:$$$($$$($$("Opal"),"Nodes"),"Base").$handlers()}),0),$def(self,"$requires",(function(){var $ret_or_1;return this.requires=$truthy($ret_or_1=this.requires)?$ret_or_1:[]}),0),$def(self,"$required_trees",(function(){var $ret_or_1;return this.required_trees=$truthy($ret_or_1=this.required_trees)?$ret_or_1:[]}),0),$def(self,"$autoloads",(function(){var $ret_or_1;return this.autoloads=$truthy($ret_or_1=this.autoloads)?$ret_or_1:[]}),0),$def(self,"$returns",(function(sexp){var $a,$b,$ret_or_1,when_sexp=nil,then_sexp=nil,body_sexp=nil,resbodies=nil,else_sexp=nil,klass=nil,lvar=nil,body=nil,rescue_sexp=nil,ensure_body=nil,rest=nil,last=nil,cond=nil,true_body=nil,false_body=nil;return $truthy(sexp)?$eqeqeq("undef",$ret_or_1=sexp.$type())?this.$returns(sexp.$updated("begin",[sexp,this.$s("nil")])):$eqeqeq("break",$ret_or_1)||$eqeqeq("next",$ret_or_1)||$eqeqeq("redo",$ret_or_1)||$eqeqeq("retry",$ret_or_1)?sexp:$eqeqeq("yield",$ret_or_1)?sexp.$updated("returnable_yield",nil):$eqeqeq("when",$ret_or_1)?($b=($b=($a=[].concat($to_a(sexp))).length-1)<0?0:$b,when_sexp=$slice.call($a,0,$b),then_sexp=null==$a[$b]?nil:$a[$b],sexp.$updated(nil,[].concat($to_a(when_sexp)).concat([this.$returns(then_sexp)]))):$eqeqeq("rescue",$ret_or_1)?(body_sexp=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],$b=($b=$a.length-1)<1?1:$b,resbodies=$slice.call($a,1,$b),else_sexp=null==$a[$b]?nil:$a[$b],resbodies=$send(resbodies,"map",[],(function $$9(resbody){return null==resbody&&(resbody=nil),(null==$$9.$$s?this:$$9.$$s).$returns(resbody)}),{$$arity:1,$$s:this}),$truthy(else_sexp)&&(else_sexp=this.$returns(else_sexp)),sexp.$updated(nil,[this.$returns(body_sexp)].concat($to_a(resbodies)).concat([else_sexp]))):$eqeqeq("resbody",$ret_or_1)?(klass=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],lvar=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],sexp.$updated(nil,[klass,lvar,this.$returns(body)])):$eqeqeq("ensure",$ret_or_1)?(rescue_sexp=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],ensure_body=null==$a[1]?nil:$a[1],(sexp=sexp.$updated(nil,[this.$returns(rescue_sexp),ensure_body])).$updated("js_return",[sexp])):$eqeqeq("begin",$ret_or_1)||$eqeqeq("kwbegin",$ret_or_1)?($b=($b=($a=[].concat($to_a(sexp))).length-1)<0?0:$b,rest=$slice.call($a,0,$b),last=null==$a[$b]?nil:$a[$b],sexp.$updated(nil,[].concat($to_a(rest)).concat([this.$returns(last)]))):$eqeqeq("while",$ret_or_1)||$eqeqeq("until",$ret_or_1)||$eqeqeq("while_post",$ret_or_1)||$eqeqeq("until_post",$ret_or_1)||$eqeqeq("return",$ret_or_1)||$eqeqeq("js_return",$ret_or_1)||$eqeqeq("returnable_yield",$ret_or_1)?sexp:$eqeqeq("xstr",$ret_or_1)?sexp.$updated(nil,[$send(this,"s",["js_return"].concat($to_a(sexp.$children())))]):$eqeqeq("if",$ret_or_1)?(cond=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],true_body=null==$a[1]?nil:$a[1],false_body=null==$a[2]?nil:$a[2],sexp.$updated(nil,[cond,this.$returns(true_body),this.$returns(false_body)])):$eqeq(sexp.$type(),"send")&&$eqeq(sexp.$children()["$[]"](1),"debugger")?sexp.$updated("begin",[sexp,this.$s("js_return",this.$s("nil"))]):sexp.$updated("js_return",[sexp]):this.$returns(this.$s("nil"))}),1),$def(self,"$handle_block_given_call",(function(sexp){var scope=nil;return this.scope["$uses_block!"](),$truthy(this.scope.$block_name())?this.$fragment("("+this.scope.$block_name()+" !== nil)",this.$scope(),sexp):$truthy(scope=this.scope.$find_parent_def())&&$truthy(scope.$block_name())?this.$fragment("("+scope.$block_name()+" !== nil)",scope,sexp):this.$fragment("false",scope,sexp)}),1),$def(self,"$marshal_dump",(function(){var $ret_or_1;return[this.options,this.option_values,this.source_map=$truthy($ret_or_1=this.source_map)?$ret_or_1:this.$source_map().$cache(),this.magic_comments,this.result,this.required_trees,this.requires,this.autoloads]}),0),$def(self,"$marshal_load",(function(src){var $a,$b;return $a=$to_ary($b=src),this.options=null==$a[0]?nil:$a[0],this.option_values=null==$a[1]?nil:$a[1],this.source_map=null==$a[2]?nil:$a[2],this.magic_comments=null==$a[3]?nil:$a[3],this.result=null==$a[4]?nil:$a[4],this.required_trees=null==$a[5]?nil:$a[5],this.requires=null==$a[6]?nil:$a[6],this.autoloads=null==$a[7]?nil:$a[7],$b}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/erb"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$defs=Opal.defs,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$send=Opal.send,$regexp=Opal.regexp;return Opal.add_stubs("require,compile,new,freeze,fix_quotes,find_contents,find_code,wrap_compiled,require_erb,prepared_source,gsub,+,last_match,=~,sub"),self.$require("opal/compiler"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"ERB"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$compile",(function(source,file_name){return null==file_name&&(file_name="(erb)"),$$("Compiler").$new(source,file_name).$compile()}),-2),function($base,$super,$parent_nesting){var self=$klass($base,null,"Compiler"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.prepared_source=$proto.source=$proto.file_name=nil,$const_set($nesting[0],"BLOCK_EXPR",/\s+(do|\{)(\s*\|[^|]*\|)?\s*\Z/.$freeze()),$def(self,"$initialize",(function(source,file_name){var $a;return null==file_name&&(file_name="(erb)"),$a=[source,file_name,source],this.source=$a[0],this.file_name=$a[1],this.result=$a[2],$a}),-2),$def(self,"$prepared_source",(function(){var $ret_or_1,source=nil;return this.prepared_source=$truthy($ret_or_1=this.prepared_source)?$ret_or_1:(source=this.source,source=this.$fix_quotes(source),source=this.$find_contents(source),source=this.$find_code(source),source=this.$wrap_compiled(source),source=this.$require_erb(source))}),0),$def(self,"$compile",(function(){return $$("Opal").$compile(this.$prepared_source())}),0),$def(self,"$fix_quotes",(function(result){return result.$gsub('"','\\"')}),1),$def(self,"$require_erb",(function(result){return $rb_plus('require "erb";',result)}),1),$def(self,"$find_contents",(function(result){return $send(result,"gsub",[/<%=([\s\S]+?)%>/],(function(){var inner=nil;return inner=$$("Regexp").$last_match(1).$gsub(/\\'/,"'").$gsub(/\\"/,'"'),$truthy(inner["$=~"]($$("BLOCK_EXPR")))?'")\noutput_buffer.append= '+inner+'\noutput_buffer.append("':'")\noutput_buffer.append=('+inner+')\noutput_buffer.append("'}),0)}),1),$def(self,"$find_code",(function(result){return $send(result,"gsub",[/<%([\s\S]+?)%>/],(function(){return'")\n'+$$("Regexp").$last_match(1).$gsub(/\\"/,'"')+'\noutput_buffer.append("'}),0)}),1),$def(self,"$wrap_compiled",(function(result){return"Template.new('"+this.file_name.$sub($regexp(["\\.opalerb",$$("REGEXP_END")]),"")+"') do |output_buffer|\noutput_buffer.append(\""+result+'")\noutput_buffer.join\nend\n'}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal-parser"]=function(Opal){var self=Opal.top,$nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$module=Opal.module,$Opal=Opal.Opal,$hash2=Opal.hash2,$truthy=Opal.truthy,$def=Opal.def;function run_ruby_scripts(){for(var tag,tags=document.getElementsByTagName("script"),i=0,len=tags.length;i>8-idx%1*8))(charCode=str.charCodeAt(idx+=3/4))>255&&self.$raise($$("ArgumentError"),"invalid character (failed: The string to be encoded contains characters outside of the Latin1 range.)"),block=block<<8|charCode;return output},decode=function(input){var str=String(input).replace(/=+$/,"");str.length%4==1&&self.$raise($$("ArgumentError"),"invalid base64 (failed: The string to be decoded is not correctly encoded.)");for(var bs,buffer,bc=0,idx=0,output="";buffer=str.charAt(idx++);~buffer&&(bs=bc%4?64*bs+buffer:buffer,bc++%4)?output+=String.fromCharCode(255&bs>>(-2*bc&6)):0)buffer=chars.indexOf(buffer);return output},$defs(self,"$decode64",(function(string){return decode(string.replace(/\r?\n/g,""))}),1),$defs(self,"$encode64",(function(string){return encode(string).replace(/(.{60})/g,"$1\n").replace(/([^\n])$/g,"$1\n")}),1),$defs(self,"$strict_decode64",(function(string){return decode(string)}),1),$defs(self,"$strict_encode64",(function(string){return encode(string)}),1),$defs(self,"$urlsafe_decode64",(function(string){return decode(string.replace(/\-/g,"+").replace(/_/g,"/"))}),1),$defs(self,"$urlsafe_encode64",(function(string,$kwargs){var padding,str=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(padding=$kwargs.$$smap.padding)&&(padding=!0),str=encode(string).replace(/\+/g,"-").replace(/\//g,"_"),$truthy(padding)||(str=str.$delete("=")),str}),-2)}($nesting[0],$nesting)},Opal.modules["corelib/pack_unpack/format_string_parser"]=function(Opal){Opal.nil;var self,directives,modifiers,$$$=Opal.$$$,$module=Opal.module,$Kernel=Opal.Kernel;return Opal.add_stubs("raise"),self=$module("::","PackUnpack"),directives=["C","S","L","Q","J","c","s","l","q","j","n","N","v","V","U","w","D","d","F","f","E","e","G","g","A","a","Z","B","b","H","h","u","M","m","P","p","@","X","x"],modifiers=["!","_",">","<"],void(self.eachDirectiveAndCount=function(format,callback){var currentDirective,currentCount,currentModifiers,countSpecified;function reset(){currentDirective=null,currentCount=0,currentModifiers=[],countSpecified=!1}function yieldAndReset(){null!=currentDirective?(!/[sSiIlLqQjJ]/.test(currentDirective)&¤tModifiers.length>0&&$Kernel.$raise($$$("ArgumentError"),"'"+currentModifiers[0]+"' allowed only after types sSiIlLqQjJ"),-1!==currentModifiers.indexOf("<")&&-1!==currentModifiers.indexOf(">")&&$Kernel.$raise($$$("RangeError"),"Can't use both '<' and '>'"),countSpecified||(currentCount=1),-1!==currentModifiers.indexOf(">")&&(currentDirective+=">"),callback(currentDirective,currentCount),reset()):reset()}reset();for(var i=0;i,length,inspect,[],unpack"),self.$require("base64"),self.$require("corelib/pack_unpack/format_string_parser"),function($base,$super,$parent_nesting){var self=$klass("::",null,"String"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),expected=nil,given=nil,eachDirectiveAndCount=Opal.PackUnpack.eachDirectiveAndCount;function mapChunksToWords(callback){return function(data){return callback(data).map((function(chunk){return chunk.reverse().reduce((function(result,singleByte){return 256*result+singleByte}),0)}))}}function chunkBy(chunkSize,callback){return function(data){for(var array=callback(data),chunks=[],chunksCount=array.length/chunkSize,i=0;i=limit/2&&(n-=limit),n}))}}function bytesToAsciiChars(callback){return function(data){return callback(data).map((function(singleByte){return String.fromCharCode(singleByte)}))}}function joinChars(callback){return function(data){return callback(data).join("")}}function wrapIntoArray(callback){return function(data){return[callback(data)]}}var charCodesToFilter,filterTrailingZerosAndSpaces=(charCodesToFilter=["\0"," "].map((function(s){return s.charCodeAt(0)})),function(callback){return function(data){for(var charCodes=callback(data);-1!==charCodesToFilter.indexOf(charCodes[charCodes.length-1]);)charCodes=charCodes.slice(0,charCodes.length-1);return charCodes}});function invertChunks(callback){return function(data){return callback(data).map((function(chunk){return chunk.reverse()}))}}function identityFunction(value){return value}var callback,handlers={C:identityFunction,S:mapChunksToWords(chunkBy(2,identityFunction)),L:mapChunksToWords(chunkBy(4,identityFunction)),Q:mapChunksToWords(chunkBy(8,identityFunction)),J:null,"S>":mapChunksToWords(invertChunks(chunkBy(2,identityFunction))),"L>":mapChunksToWords(invertChunks(chunkBy(4,identityFunction))),"Q>":mapChunksToWords(invertChunks(chunkBy(8,identityFunction))),c:toNByteSigned(1,identityFunction),s:toNByteSigned(2,mapChunksToWords(chunkBy(2,identityFunction))),l:toNByteSigned(4,mapChunksToWords(chunkBy(4,identityFunction))),q:toNByteSigned(8,mapChunksToWords(chunkBy(8,identityFunction))),j:null,"s>":toNByteSigned(2,mapChunksToWords(invertChunks(chunkBy(2,identityFunction)))),"l>":toNByteSigned(4,mapChunksToWords(invertChunks(chunkBy(4,identityFunction)))),"q>":toNByteSigned(8,mapChunksToWords(invertChunks(chunkBy(8,identityFunction)))),n:null,N:null,v:null,V:null,U:identityFunction,w:(callback=identityFunction,function(data){for(var bytes=callback(data),result=[],buffer="",i=0;i45)return"";for(length+=n;n>0;){var c1=bytes[i],c2=bytes[i+1],c3=bytes[i+2],b1=(c1-32&63)<<2|(c2-32&63)>>4,b2=(c2-32&63)<<4|(c3-32&63)>>2,b3=(c3-32&63)<<6|bytes[i+3]-32&63;result.push(255&b1),result.push(255&b2),result.push(255&b3),i+=4,n-=3}++i}}return result.slice(0,length)}}(identityFunction))),M:function(callback){return function(data){return callback(data).replace(/[\t\x20]$/gm,"").replace(/=(?:\r\n?|\n|$)/g,"").replace(/=([a-fA-F0-9]{2})/g,(function($0,$1){var codePoint=parseInt($1,16);return String.fromCharCode(codePoint)}))}}(joinChars(bytesToAsciiChars(identityFunction))),m:function(callback){return function(data){return $$("Base64").$decode64(callback(data))}}(joinChars(bytesToAsciiChars(identityFunction))),P:null,p:null};function readBytes(n){return function(bytes){return{chunk:bytes.slice(0,n),rest:bytes=bytes.slice(n,bytes.length)}}}function readNTimesAndMerge(callback){return function(buffer,count){var chunkData,chunk=[];if(count===1/0)for(;buffer.length>0;)buffer=(chunkData=callback(buffer)).rest,chunk=chunk.concat(chunkData.chunk);else for(var i=0;i":readNTimesAndMerge(readBytes(2)),"L>":readNTimesAndMerge(readBytes(4)),"Q>":readNTimesAndMerge(readBytes(8)),c:readNTimesAndMerge(readBytes(1)),s:readNTimesAndMerge(readBytes(2)),l:readNTimesAndMerge(readBytes(4)),q:readNTimesAndMerge(readBytes(8)),j:null,"s>":readNTimesAndMerge(readBytes(2)),"l>":readNTimesAndMerge(readBytes(4)),"q>":readNTimesAndMerge(readBytes(8)),n:null,N:null,v:null,V:null,U:readNTimesAndMerge((function(bytes){var currentByteIndex=0,bytesLength=bytes.length;function readByte(){var result=bytes[currentByteIndex++];return bytesLength=bytes.length-currentByteIndex,result}var extraLength,c=readByte();if(c>>7==0)return{chunk:[c],rest:bytes.slice(currentByteIndex)};c>>6==2&&$Kernel.$raise($$$("ArgumentError"),"malformed UTF-8 character"),c>>5==6?extraLength=1:c>>4==14?extraLength=2:c>>3==30?extraLength=3:c>>2==62?extraLength=4:c>>1==126?extraLength=5:$Kernel.$raise("malformed UTF-8 character"),extraLength>bytesLength&&(expected=extraLength+1,given=bytesLength+1,$Kernel.$raise($$$("ArgumentError"),"malformed UTF-8 character (expected "+expected+" bytes, given "+given+" bytes)"));for(var result=c&(1<<8-extraLength-1)-1,i=0;i>6!=2&&$Kernel.$raise("Invalid multibyte sequence"),result=result<<6|63&c;return result<=65535?{chunk:[result],rest:bytes.slice(currentByteIndex)}:{chunk:[55296+((result-=65536)>>10&1023),56320+(1023&result)],rest:bytes.slice(currentByteIndex)}})),w:readNTimesAndMerge((function(buffer){for(var result=[],i=0;i0&&buffer.length>0;){var singleByte=buffer[0],bitsToTake=Math.min(count,8);Math.ceil(bitsToTake/8);if(buffer=buffer.slice(1,buffer.length),null!=singleByte){var bits=singleByte.toString(2);bits=Array(8-bits.length+1).join("0").concat(bits);for(var j=0;j0&&buffer.length>0;){var singleByte=buffer[0],bitsToTake=Math.min(count,8);Math.ceil(bitsToTake/8);if(buffer=buffer.slice(1,buffer.length),null!=singleByte){var bits=singleByte.toString(2);bits=Array(8-bits.length+1).join("0").concat(bits).split("").reverse().join("");for(var j=0;j0&&buffer.length>0;){var hex=buffer[0].toString(16);buffer=buffer.slice(1,buffer.length),hex=Array(2-hex.length+1).join("0").concat(hex),1===count?(result.push(hex[0]),count--):(result.push(hex[0],hex[1]),count-=2)}return{chunk:result,rest:buffer}},h:function(buffer,count){for(var result=[];count>0&&buffer.length>0;){var hex=buffer[0].toString(16);buffer=buffer.slice(1,buffer.length),hex=Array(2-hex.length+1).join("0").concat(hex),1===count?(result.push(hex[1]),count--):(result.push(hex[1],hex[0]),count-=2)}return{chunk:result,rest:buffer}},u:readNTimesAndMerge((function(buffer){var length=buffer.indexOf(32);return-1===length?{chunk:buffer,rest:[]}:{chunk:buffer.slice(0,length),rest:buffer.slice(length,buffer.length)}})),M:readAll,m:readAll,P:null,p:null},autocompletion={C:!0,S:!0,L:!0,Q:!0,J:null,"S>":!0,"L>":!0,"Q>":!0,c:!0,s:!0,l:!0,q:!0,j:null,"s>":!0,"l>":!0,"q>":!0,n:null,N:null,v:null,V:null,U:!1,w:!1,D:null,d:null,F:null,f:null,E:null,e:null,G:null,g:null,A:!1,a:!1,Z:!1,B:!1,b:!1,H:!1,h:!1,u:!1,M:!1,m:!1,P:null,p:null},optimized={"C*":handlers.C,"c*":handlers.c,"A*":handlers.A,"a*":handlers.a,"M*":wrapIntoArray(handlers.M),"m*":wrapIntoArray(handlers.m),"S*":handlers.S,"s*":handlers.s,"L*":handlers.L,"l*":handlers.l,"Q*":handlers.Q,"q*":handlers.q,"S>*":handlers["S>"],"s>*":handlers["s>"],"L>*":handlers["L>"],"l>*":handlers["l>"],"Q>*":handlers["Q>"],"q>*":handlers["q>"]};function alias(existingDirective,newDirective){readChunk[newDirective]=readChunk[existingDirective],handlers[newDirective]=handlers[existingDirective],autocompletion[newDirective]=autocompletion[existingDirective]}return alias("S>","n"),alias("L>","N"),alias("S","v"),alias("L","V"),$def(self,"$unpack",(function(format,$kwargs){var offset;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");null==(offset=$kwargs.$$smap.offset)&&(offset=0),$truthy($rb_lt(offset,0))&&$Kernel.$raise($$$("ArgumentError"),"offset can't be negative"),format=$Opal["$coerce_to!"](format,$$$("String"),"to_str").$gsub(/\s/,"").$delete("\0");var output=[];if("U*"==format&&"UTF-8"===this.internal_encoding.name&&"function"==typeof this.codePointAt){var j=0;output=new Array(this.length);for(var i=offset;i65535&&i++;return output.slice(0,j)}var buffer=this.$bytes();$truthy($rb_gt(offset,buffer.$length()))&&$Kernel.$raise($$$("ArgumentError"),"offset outside of string"),buffer=buffer.slice(offset);var optimizedHandler=optimized[format];if(optimizedHandler)return optimizedHandler(buffer);return eachDirectiveAndCount(format,(function(directive,count){var part=function(directive,count){var chunk,chunkReader=readChunk[directive];null==chunkReader&&$Kernel.$raise("Unsupported unpack directive "+directive.$inspect()+" (no chunk reader defined)");var chunkData=chunkReader(buffer,count);chunk=chunkData.chunk,buffer=chunkData.rest;var handler=handlers[directive];return null==handler&&$Kernel.$raise("Unsupported unpack directive "+directive.$inspect()+" (no handler defined)"),handler(chunk)}(directive,count);if(count!==1/0){var shouldAutocomplete=autocompletion[directive];null==shouldAutocomplete&&$Kernel.$raise("Unsupported unpack directive "+directive.$inspect()+" (no autocompletion rule defined)"),shouldAutocomplete&&function(array,size){for(;array.length"}),0),$def(self,"$==",(function(other){return!!$truthy(this["$equal?"](other))||($truthy(other["$instance_of?"](this.$class()))?this.hash["$=="](other.$instance_variable_get("@hash")):!(!$truthy(other["$is_a?"]($$$("Set")))||!$eqeq(this.$size(),other.$size()))&&$send(other,"all?",[],(function $$5(o){var self=null==$$5.$$s?this:$$5.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash["$include?"](o)}),{$$arity:1,$$s:this}))}),1),$def(self,"$add",(function(o){var $writer;return $writer=[o,!0],$send(this.hash,"[]=",$to_a($writer)),$rb_minus($writer.length,1),this}),1),$def(self,"$classify",(function $$classify(){var block=$$classify.$$p||nil,result=nil;return delete $$classify.$$p,block===nil?this.$enum_for("classify"):(result=$send($$$("Hash"),"new",[],(function $$6(h,k){var $writer;return null==h&&(h=nil),null==k&&(k=nil),$writer=[k,(null==$$6.$$s?this:$$6.$$s).$class().$new()],$send(h,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:2,$$s:this}),$send(this,"each",[],(function(item){return null==item&&(item=nil),result["$[]"](Opal.yield1(block,item)).$add(item)}),1),result)}),0),$def(self,"$collect!",(function $Set_collect$excl$8(){var block=$Set_collect$excl$8.$$p||nil,result=nil;return delete $Set_collect$excl$8.$$p,block===nil?this.$enum_for("collect!"):(result=this.$class().$new(),$send(this,"each",[],(function(item){return null==item&&(item=nil),result["$<<"](Opal.yield1(block,item))}),1),this.$replace(result))}),0),$def(self,"$delete",(function(o){return this.hash.$delete(o),this}),1),$def(self,"$delete?",(function(o){return $truthy(this["$include?"](o))?(this.$delete(o),this):nil}),1),$def(self,"$delete_if",(function $$delete_if(){var $yield=$$delete_if.$$p||nil;return delete $$delete_if.$$p,$yield===nil?this.$enum_for("delete_if"):($send($send(this,"select",[],(function(o){return null==o&&(o=nil),Opal.yield1($yield,o)}),1),"each",[],(function $$13(o){var self=null==$$13.$$s?this:$$13.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash.$delete(o)}),{$$arity:1,$$s:this}),this)}),0),$def(self,"$keep_if",(function $$keep_if(){var $yield=$$keep_if.$$p||nil;return delete $$keep_if.$$p,$yield===nil?this.$enum_for("keep_if"):($send($send(this,"reject",[],(function(o){return null==o&&(o=nil),Opal.yield1($yield,o)}),1),"each",[],(function $$15(o){var self=null==$$15.$$s?this:$$15.$$s;return null==self.hash&&(self.hash=nil),null==o&&(o=nil),self.hash.$delete(o)}),{$$arity:1,$$s:this}),this)}),0),$def(self,"$reject!",(function $Set_reject$excl$16(){var before,block=$Set_reject$excl$16.$$p||nil;return delete $Set_reject$excl$16.$$p,block===nil?this.$enum_for("reject!"):(before=this.$size(),$send(this,"delete_if",[],block.$to_proc()),$eqeq(this.$size(),before)?nil:this)}),0),$def(self,"$select!",(function $Set_select$excl$17(){var before,block=$Set_select$excl$17.$$p||nil;return delete $Set_select$excl$17.$$p,block===nil?this.$enum_for("select!"):(before=this.$size(),$send(this,"keep_if",[],block.$to_proc()),$eqeq(this.$size(),before)?nil:this)}),0),$def(self,"$add?",(function(o){return $truthy(this["$include?"](o))?nil:this.$add(o)}),1),$def(self,"$each",(function $$each(){var block=$$each.$$p||nil;return delete $$each.$$p,block===nil?this.$enum_for("each"):($send(this.hash,"each_key",[],block.$to_proc()),this)}),0),$def(self,"$empty?",(function(){return this.hash["$empty?"]()}),0),$def(self,"$eql?",(function(other){return this.hash["$eql?"]($send(other,"instance_eval",[],(function $$21(){var self=null==$$21.$$s?this:$$21.$$s;return null==self.hash&&(self.hash=nil),self.hash}),{$$arity:0,$$s:this}))}),1),$def(self,"$clear",(function(){return this.hash.$clear(),this}),0),$def(self,"$include?",(function(o){return this.hash["$include?"](o)}),1),$def(self,"$merge",(function(enum$){return $send(enum$,"each",[],(function $$23(item){return null==item&&(item=nil),(null==$$23.$$s?this:$$23.$$s).$add(item)}),{$$arity:1,$$s:this}),this}),1),$def(self,"$replace",(function(enum$){return this.$clear(),this.$merge(enum$),this}),1),$def(self,"$size",(function(){return this.hash.$size()}),0),$def(self,"$subtract",(function(enum$){return $send(enum$,"each",[],(function $$24(item){return null==item&&(item=nil),(null==$$24.$$s?this:$$24.$$s).$delete(item)}),{$$arity:1,$$s:this}),this}),1),$def(self,"$|",(function(enum$){return $truthy(enum$["$respond_to?"]("each"))||$Kernel.$raise($$$("ArgumentError"),"value must be enumerable"),this.$dup().$merge(enum$)}),1),$def(self,"$superset?",(function(set){return is_set(set),!$truthy($rb_lt(this.$size(),set.$size()))&&$send(set,"all?",[],(function $$27(o){return null==o&&(o=nil),(null==$$27.$$s?this:$$27.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$proper_superset?",(function(set){return is_set(set),!$truthy($rb_le(this.$size(),set.$size()))&&$send(set,"all?",[],(function $$29(o){return null==o&&(o=nil),(null==$$29.$$s?this:$$29.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$subset?",(function(set){return is_set(set),!$truthy($rb_lt(set.$size(),this.$size()))&&$send(this,"all?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1)}),1),$def(self,"$proper_subset?",(function(set){return is_set(set),!$truthy($rb_le(set.$size(),this.$size()))&&$send(this,"all?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1)}),1),$def(self,"$intersect?",(function(set){return is_set(set),$truthy($rb_lt(this.$size(),set.$size()))?$send(this,"any?",[],(function(o){return null==o&&(o=nil),set["$include?"](o)}),1):$send(set,"any?",[],(function $$36(o){return null==o&&(o=nil),(null==$$36.$$s?this:$$36.$$s)["$include?"](o)}),{$$arity:1,$$s:this})}),1),$def(self,"$disjoint?",(function(set){return this["$intersect?"](set)["$!"]()}),1),$def(self,"$to_a",(function(){return this.hash.$keys()}),0),$alias(self,"+","|"),$alias(self,"<","proper_subset?"),$alias(self,"<<","add"),$alias(self,"<=","subset?"),$alias(self,">","proper_superset?"),$alias(self,">=","superset?"),$alias(self,"difference","-"),$alias(self,"filter!","select!"),$alias(self,"length","size"),$alias(self,"map!","collect!"),$alias(self,"member?","include?"),$alias(self,"union","|")}(),function($base,$parent_nesting){var self=$module("::","Enumerable"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$to_set",(function $$to_set($a,$b){var $post_args,klass,block=$$to_set.$$p||nil,self=this;return delete $$to_set.$$p,($post_args=Opal.slice.call(arguments)).length>0&&(klass=$post_args.shift()),null==klass&&(klass=$$("Set")),$send(klass,"new",[self].concat($to_a($post_args)),block.$to_proc())}),-1)}(0,[])},Opal.modules["ast/node"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$alias=Opal.alias,$hash2=Opal.hash2,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$rb_times=Opal.rb_times,$to_a=Opal.to_a;return Opal.add_stubs("attr_reader,to_sym,freeze,to_a,assign_properties,hash,class,eql?,type,children,each,instance_variable_set,protected,private,nil?,==,original_dup,send,equal?,respond_to?,to_ast,updated,+,*,fancy_type,is_a?,to_sexp,inspect,map,to_sexp_array,gsub,to_s"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Node"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.type=$proto.children=nil,self.$attr_reader("type"),self.$attr_reader("children"),$alias(self,"to_a","children"),self.$attr_reader("hash"),$def(self,"$initialize",(function(type,children,properties){var $a;return null==children&&(children=[]),null==properties&&(properties=$hash2([],{})),$a=[type.$to_sym(),children.$to_a().$freeze()],this.type=$a[0],this.children=$a[1],this.$assign_properties(properties),this.hash=[this.type,this.children,this.$class()].$hash(),this.$freeze()}),-2),$def(self,"$eql?",(function(other){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.$class()["$eql?"](other.$class()))?this.type["$eql?"](other.$type()):$ret_or_2)?this.children["$eql?"](other.$children()):$ret_or_1}),1),$def(self,"$assign_properties",(function(properties){return $send(properties,"each",[],(function $$2(name,value){return null==name&&(name=nil),null==value&&(value=nil),(null==$$2.$$s?this:$$2.$$s).$instance_variable_set("@"+name,value)}),{$$arity:2,$$s:this}),nil}),1),self.$protected("assign_properties"),$alias(self,"original_dup","dup"),self.$private("original_dup"),$def(self,"$dup",(function(){return this}),0),$alias(self,"clone","dup"),$def(self,"$updated",(function(type,children,properties){var new_type,new_children,new_properties,$ret_or_1=nil,copy=nil;return null==type&&(type=nil),null==children&&(children=nil),null==properties&&(properties=nil),new_type=$truthy($ret_or_1=type)?$ret_or_1:this.type,new_children=$truthy($ret_or_1=children)?$ret_or_1:this.children,new_properties=$truthy($ret_or_1=properties)?$ret_or_1:$hash2([],{}),$eqeq(this.type,new_type)&&$eqeq(this.children,new_children)&&$truthy(properties["$nil?"]())?this:((copy=this.$original_dup()).$send("initialize",new_type,new_children,new_properties),copy)}),-1),$def(self,"$==",(function(other){var $ret_or_1=nil;return!!$truthy(this["$equal?"](other))||!!$truthy(other["$respond_to?"]("to_ast"))&&(other=other.$to_ast(),$truthy($ret_or_1=other.$type()["$=="](this.$type()))?other.$children()["$=="](this.$children()):$ret_or_1)}),1),$def(self,"$concat",(function(array){return this.$updated(nil,$rb_plus(this.children,array.$to_a()))}),1),$alias(self,"+","concat"),$def(self,"$append",(function(element){return this.$updated(nil,$rb_plus(this.children,[element]))}),1),$alias(self,"<<","append"),$def(self,"$to_sexp",(function(indent){var indented,sexp=nil;return null==indent&&(indent=0),indented=$rb_times(" ",indent),sexp=indented+"("+this.$fancy_type(),$send(this.$children(),"each",[],(function(child){return null==child&&(child=nil),sexp=$truthy(child["$is_a?"]($$("Node")))?$rb_plus(sexp,"\n"+child.$to_sexp($rb_plus(indent,1))):$rb_plus(sexp," "+child.$inspect())}),1),sexp=$rb_plus(sexp,")")}),-1),$alias(self,"to_s","to_sexp"),$def(self,"$inspect",(function(indent){var indented,sexp=nil;return null==indent&&(indent=0),indented=$rb_times(" ",indent),sexp=indented+"s(:"+this.type,$send(this.$children(),"each",[],(function(child){return null==child&&(child=nil),sexp=$truthy(child["$is_a?"]($$("Node")))?$rb_plus(sexp,",\n"+child.$inspect($rb_plus(indent,1))):$rb_plus(sexp,", "+child.$inspect())}),1),sexp=$rb_plus(sexp,")")}),-1),$def(self,"$to_ast",(function(){return this}),0),$def(self,"$to_sexp_array",(function(){var children_sexp_arrs;return children_sexp_arrs=$send(this.$children(),"map",[],(function(child){return null==child&&(child=nil),$truthy(child["$is_a?"]($$("Node")))?child.$to_sexp_array():child}),1),[this.$type()].concat($to_a(children_sexp_arrs))}),0),$def(self,"$deconstruct",(function(){return[this.$type()].concat($to_a(this.$children()))}),0),self.$protected(),$def(self,"$fancy_type",(function(){return this.type.$to_s().$gsub("_","-")}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/processor/mixin"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("nil?,to_ast,type,respond_to?,send,handler_missing,map,to_a,process"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){return function($base){var self=$module($base,"Mixin");return $def(self,"$process",(function(node){var on_handler,new_node=nil;return $truthy(node["$nil?"]())?nil:(on_handler="on_"+(node=node.$to_ast()).$type(),new_node=$truthy(this["$respond_to?"](on_handler))?this.$send(on_handler,node):this.$handler_missing(node),$truthy(new_node)&&(node=new_node),node)}),1),$def(self,"$process_all",(function(nodes){return $send(nodes.$to_a(),"map",[],(function $$1(node){return null==node&&(node=nil),(null==$$1.$$s?this:$$1.$$s).$process(node)}),{$$arity:1,$$s:this})}),1),$def(self,"$handler_missing",(function(node){return nil}),1)}([$klass($base,null,"Processor")].concat($parent_nesting)[0])}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/processor"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass;return Opal.add_stubs("require,include"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Processor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$require("ast/processor/mixin"),self.$include($$("Mixin"))}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["ast/sexp"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$def=Opal.def;return Opal.add_stubs("new"),function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Sexp"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$s",(function(type,$a){var children;return children=Opal.slice.call(arguments,1),$$("Node").$new(type,children)}),-2)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules.ast=function(Opal){Opal.nil;var self,$module=Opal.module;return Opal.add_stubs("require"),(self=$module([][0],"AST")).$require("ast/node"),self.$require("ast/processor"),self.$require("ast/sexp")},Opal.modules["parser/ast/node"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$alias=Opal.alias,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def;return Opal.add_stubs("attr_reader,[],frozen?,dup,node=,-"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,$super,"Node");return self.$attr_reader("location"),$alias(self,"loc","location"),$def(self,"$assign_properties",(function(properties){var location=nil,$writer=nil;return $truthy(location=properties["$[]"]("location"))?($truthy(location["$frozen?"]())&&(location=location.$dup()),$send(location,"node=",$to_a($writer=[this])),$writer[$rb_minus($writer.length,1)],this.location=location):nil}),1)}([$module($base,"AST")].concat($parent_nesting)[0],$$$($$$("AST"),"Node"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/ast/node"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("require,attr_reader,[],frozen?,dup,merge!,loc,line,column"),self.$require("ast"),self.$require("parser/ast/node"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,$super,"Node");return self.$$prototype.meta=nil,self.$attr_reader("meta"),$def(self,"$assign_properties",(function $$assign_properties(properties){var $yield=$$assign_properties.$$p||nil,meta=nil,$ret_or_1=nil;return delete $$assign_properties.$$p,$truthy(meta=properties["$[]"]("meta"))?($truthy(meta["$frozen?"]())&&(meta=meta.$dup()),this.meta["$merge!"](meta)):this.meta=$truthy($ret_or_1=this.meta)?$ret_or_1:$hash2([],{}),$send2(this,$find_super(this,"assign_properties",$$assign_properties,!1,!0),"assign_properties",[properties],$yield)}),1),$def(self,"$line",(function(){return $truthy(this.$loc())?this.$loc().$line():nil}),0),$def(self,"$column",(function(){return $truthy(this.$loc())?this.$loc().$column():nil}),0)}([$module($base,"AST")].concat($parent_nesting)[0],$$$($$$($$$("Parser"),"AST"),"Node"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["racc/parser"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$const_set=Opal.const_set,$defs=Opal.defs,$gvars=Opal.gvars,$rb_lt=Opal.rb_lt,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$to_ary=Opal.to_ary,$neqeq=Opal.neqeq,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$rb_ge=Opal.rb_ge,$rb_gt=Opal.rb_gt,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_times=Opal.rb_times;return Opal.add_stubs("[],class,<,size,[]=,-,__send__,_racc_setup,raise,_racc_init_sysvars,catch,!=,next_token,racc_read_token,+,==,>=,_racc_evalact,!,>,push,racc_shift,-@,_racc_do_reduce,===,racc_accept,throw,on_error,<=,pop,racc_e_pop,inspect,racc_next_state,*,racc_reduce,sprintf,token_to_str,print,racc_token2str,puts,racc_print_stacks,empty?,each,racc_print_states,each_index"),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);$klass($nesting[0],$$("StandardError"),"ParseError")}($nesting[0],$nesting),$truthy($$$("::","ParseError","skip_raise")?"constant":nil)||$const_set($nesting[0],"ParseError",$$$($$("Racc"),"ParseError")),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);return $truthy($$("Racc_No_Extensions","skip_raise")?"constant":nil)||$const_set($nesting[0],"Racc_No_Extensions",!1),function($base,$super,$parent_nesting){var self=$klass($base,null,"Parser"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.yydebug=$proto.racc_debug_out=$proto.racc_error_status=$proto.racc_t=$proto.racc_vstack=$proto.racc_val=$proto.racc_state=$proto.racc_tstack=nil,$const_set($nesting[0],"Racc_Runtime_Version","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Revision",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Runtime_Core_Version_R","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Core_Revision_R",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Main_Parsing_Routine","_racc_do_parse_rb"),$const_set($nesting[0],"Racc_YY_Parse_Method","_racc_yyparse_rb"),$const_set($nesting[0],"Racc_Runtime_Core_Version",$$("Racc_Runtime_Core_Version_R")),$const_set($nesting[0],"Racc_Runtime_Core_Revision",$$("Racc_Runtime_Core_Revision_R")),$const_set($nesting[0],"Racc_Runtime_Type","ruby"),$defs($$("Parser"),"$racc_runtime_type",(function(){return $$("Racc_Runtime_Type")}),0),$def(self,"$_racc_setup",(function(){var $a,$b,$ret_or_1=nil,arg=nil,$writer=nil;return null==$gvars.stderr&&($gvars.stderr=nil),$truthy($$$(this.$class(),"Racc_debug_parser"))||(this.yydebug=!1),$truthy(null!=($a=this.yydebug)&&$a!==nil?"instance-variable":nil)||(this.yydebug=!1),$truthy(this.yydebug)&&($truthy(null!=($b=this.racc_debug_out)&&$b!==nil?"instance-variable":nil)||(this.racc_debug_out=$gvars.stderr),this.racc_debug_out=$truthy($ret_or_1=this.racc_debug_out)?$ret_or_1:$gvars.stderr),arg=$$$(this.$class(),"Racc_arg"),$truthy($rb_lt(arg.$size(),14))&&($send(arg,"[]=",$to_a($writer=[13,!0])),$writer[$rb_minus($writer.length,1)]),arg}),0),$def(self,"$_racc_init_sysvars",(function(){return this.racc_state=[0],this.racc_tstack=[],this.racc_vstack=[],this.racc_t=nil,this.racc_val=nil,this.racc_read_next=!0,this.racc_user_yyerror=!1,this.racc_error_status=0}),0),$def(self,"$do_parse",(function(){return this.$__send__($$("Racc_Main_Parsing_Routine"),this.$_racc_setup(),!1)}),0),$def(self,"$next_token",(function(){return this.$raise($$("NotImplementedError"),this.$class()+"#next_token is not defined")}),0),$def(self,"$_racc_do_parse_rb",(function(arg,in_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,tok=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),tok=act=i=nil,$send(this,"catch",["racc_end_parse"],(function $$1(){var $d,$e,self=null==$$1.$$s?this:$$1.$$s,$ret_or_1=nil;for(null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==self.racc_t&&(self.racc_t=nil),null==self.yydebug&&(self.yydebug=nil),null==self.racc_val&&(self.racc_val=nil);$truthy(!0);)for($truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))?($truthy(self.racc_read_next)&&$neqeq(self.racc_t,0)&&($e=self.$next_token(),$d=$to_ary($e),tok=null==$d[0]?nil:$d[0],self.racc_val=null==$d[1]?nil:$d[1],$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,$truthy(self.yydebug)&&self.$racc_read_token(self.racc_t,tok,self.racc_val),self.racc_read_next=!1),i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)))):act=action_default["$[]"](self.racc_state["$[]"](-1));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:0,$$s:this})}),2),$def(self,"$yyparse",(function(recv,mid){return this.$__send__($$("Racc_YY_Parse_Method"),recv,mid,this.$_racc_setup(),!0)}),2),$def(self,"$_racc_yyparse_rb",(function(recv,mid,arg,c_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),act=nil,i=nil,$send(this,"catch",["racc_end_parse"],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;for(null==self.racc_state&&(self.racc_state=nil);!$truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)));)for(;$truthy(act=self.$_racc_evalact(action_default["$[]"](self.racc_state["$[]"](-1)),arg)););return $send(recv,"__send__",[mid],(function $$3(tok,val){var self=null==$$3.$$s?this:$$3.$$s,$ret_or_1=nil,$ret_or_2=nil;for(null==self.racc_t&&(self.racc_t=nil),null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==tok&&(tok=nil),null==val&&(val=nil),$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,self.racc_val=val,self.racc_read_next=!1,i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););for(;$truthy($truthy($ret_or_1=$truthy($ret_or_2=(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))["$!"]())?$ret_or_2:self.racc_read_next["$!"]())?$ret_or_1:self.racc_t["$=="](0));)for($truthy(i)&&$truthy(i=$rb_plus(i,self.racc_t))&&$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:2,$$s:self})}),{$$arity:0,$$s:this})}),4),$def(self,"$_racc_evalact",(function(act,arg){var $a,shift_n,action_table=nil,action_check=nil,action_pointer=nil,reduce_n=nil,code=nil,$ret_or_1=nil,i=nil;if(action_table=null==($a=$to_ary(arg))[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],shift_n=null==$a[11]?nil:$a[11],reduce_n=null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],null==$a[14]?nil:$a[14],$truthy($rb_gt(act,0))&&$truthy($rb_lt(act,shift_n)))$truthy($rb_gt(this.racc_error_status,0))&&($eqeq(this.racc_t,1)||(this.racc_error_status=$rb_minus(this.racc_error_status,1))),this.racc_vstack.$push(this.racc_val),this.racc_state.$push(act),this.racc_read_next=!0,$truthy(this.yydebug)&&(this.racc_tstack.$push(this.racc_t),this.$racc_shift(this.racc_t,this.racc_tstack,this.racc_vstack));else if($truthy($rb_lt(act,0))&&$truthy($rb_gt(act,reduce_n["$-@"]()))){if(code=$send(this,"catch",["racc_jump"],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s;return null==self.racc_state&&(self.racc_state=nil),self.racc_state.$push(self.$_racc_do_reduce(arg,act)),!1}),{$$arity:0,$$s:this}),$truthy(code)){if($eqeqeq(1,$ret_or_1=code))return this.racc_user_yyerror=!0,reduce_n["$-@"]();if($eqeqeq(2,$ret_or_1))return shift_n;this.$raise("[Racc Bug] unknown jump code")}}else if($eqeq(act,shift_n))$truthy(this.yydebug)&&this.$racc_accept(),this.$throw("racc_end_parse",this.racc_vstack["$[]"](0));else{if($eqeq(act,reduce_n["$-@"]())){for($eqeqeq(0,$ret_or_1=this.racc_error_status)?$truthy(arg["$[]"](21))||this.$on_error(this.racc_t,this.racc_val,this.racc_vstack):$eqeqeq(3,$ret_or_1)&&($eqeq(this.racc_t,0)&&this.$throw("racc_end_parse",nil),this.racc_read_next=!0),this.racc_user_yyerror=!1,this.racc_error_status=3;$truthy(!0)&&!($truthy(i=action_pointer["$[]"](this.racc_state["$[]"](-1)))&&(i=$rb_plus(i,1),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),this.racc_state["$[]"](-1))));)$truthy($rb_le(this.racc_state.$size(),1))&&this.$throw("racc_end_parse",nil),this.racc_state.$pop(),this.racc_vstack.$pop(),$truthy(this.yydebug)&&(this.racc_tstack.$pop(),this.$racc_e_pop(this.racc_state,this.racc_tstack,this.racc_vstack));return act}this.$raise("[Racc Bug] unknown action "+act.$inspect())}return $truthy(this.yydebug)&&this.$racc_next_state(this.racc_state["$[]"](-1),this.racc_state),nil}),2),$def(self,"$_racc_do_reduce",(function(arg,act){var $a,nt_base,use_result,reduce_to,method_id,void_array,k1,goto_table=nil,goto_check=nil,goto_default=nil,goto_pointer=nil,reduce_table=nil,state=nil,vstack=nil,tstack=nil,i=nil,len=nil,tmp_t=nil,tmp_v=nil,$writer=nil,curstate=nil;return null==($a=$to_ary(arg))[0]?nil:$a[0],null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],null==$a[3]?nil:$a[3],goto_table=null==$a[4]?nil:$a[4],goto_check=null==$a[5]?nil:$a[5],goto_default=null==$a[6]?nil:$a[6],goto_pointer=null==$a[7]?nil:$a[7],nt_base=null==$a[8]?nil:$a[8],reduce_table=null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],use_result=null==$a[13]?nil:$a[13],state=this.racc_state,vstack=this.racc_vstack,tstack=this.racc_tstack,i=$rb_times(act,-3),len=reduce_table["$[]"](i),reduce_to=reduce_table["$[]"]($rb_plus(i,1)),method_id=reduce_table["$[]"]($rb_plus(i,2)),void_array=[],$truthy(this.yydebug)&&(tmp_t=tstack["$[]"](len["$-@"](),len)),tmp_v=vstack["$[]"](len["$-@"](),len),$truthy(this.yydebug)&&($writer=[len["$-@"](),len,void_array],$send(tstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=[len["$-@"](),len,void_array],$send(vstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[len["$-@"](),len,void_array],$send(state,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(use_result)?vstack.$push(this.$__send__(method_id,tmp_v,vstack,tmp_v["$[]"](0))):vstack.$push(this.$__send__(method_id,tmp_v,vstack)),tstack.$push(reduce_to),$truthy(this.yydebug)&&this.$racc_reduce(tmp_t,reduce_to,tstack,vstack),k1=$rb_minus(reduce_to,nt_base),$truthy(i=goto_pointer["$[]"](k1))&&(i=$rb_plus(i,state["$[]"](-1)),$truthy($rb_ge(i,0))&&$truthy(curstate=goto_table["$[]"](i))&&$eqeq(goto_check["$[]"](i),k1))?curstate:goto_default["$[]"](k1)}),2),$def(self,"$on_error",(function(t,val,vstack){var $ret_or_1;return this.$raise($$("ParseError"),this.$sprintf("\nparse error on value %s (%s)",val.$inspect(),$truthy($ret_or_1=this.$token_to_str(t))?$ret_or_1:"?"))}),3),$def(self,"$yyerror",(function(){return this.$throw("racc_jump",1)}),0),$def(self,"$yyaccept",(function(){return this.$throw("racc_jump",2)}),0),$def(self,"$yyerrok",(function(){return this.racc_error_status=0}),0),$def(self,"$racc_read_token",(function(t,tok,val){return this.racc_debug_out.$print("read "),this.racc_debug_out.$print(tok.$inspect(),"(",this.$racc_token2str(t),") "),this.racc_debug_out.$puts(val.$inspect()),this.racc_debug_out.$puts()}),3),$def(self,"$racc_shift",(function(tok,tstack,vstack){return this.racc_debug_out.$puts("shift "+this.$racc_token2str(tok)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_reduce",(function(toks,sim,tstack,vstack){var out=nil;return(out=this.racc_debug_out).$print("reduce "),$truthy(toks["$empty?"]())?out.$print(" "):$send(toks,"each",[],(function $$5(t){var self=null==$$5.$$s?this:$$5.$$s;return null==t&&(t=nil),out.$print(" ",self.$racc_token2str(t))}),{$$arity:1,$$s:this}),out.$puts(" --\x3e "+this.$racc_token2str(sim)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),4),$def(self,"$racc_accept",(function(){return this.racc_debug_out.$puts("accept"),this.racc_debug_out.$puts()}),0),$def(self,"$racc_e_pop",(function(state,tstack,vstack){return this.racc_debug_out.$puts("error recovering mode: pop token"),this.$racc_print_states(state),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_next_state",(function(curstate,state){return this.racc_debug_out.$puts("goto "+curstate),this.$racc_print_states(state),this.racc_debug_out.$puts()}),2),$def(self,"$racc_print_stacks",(function(t,v){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(t,"each_index",[],(function $$6(i){var self=null==$$6.$$s?this:$$6.$$s;return null==i&&(i=nil),out.$print(" (",self.$racc_token2str(t["$[]"](i))," ",v["$[]"](i).$inspect(),")")}),{$$arity:1,$$s:this}),out.$puts(" ]")}),2),$def(self,"$racc_print_states",(function(s){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(s,"each",[],(function(st){return null==st&&(st=nil),out.$print(" ",st)}),1),out.$puts(" ]")}),1),$def(self,"$racc_token2str",(function(tok){var $ret_or_1;return $truthy($ret_or_1=$$$(this.$class(),"Racc_token_to_s_table")["$[]"](tok))?$ret_or_1:this.$raise("[Racc Bug] can't convert token "+tok+" to string")}),1),$def(self,"$token_to_str",(function(t){return $$$(this.$class(),"Racc_token_to_s_table")["$[]"](t)}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/version"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set;return function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return $const_set($nesting[0],"VERSION","3.1.0.0")}($nesting[0],$nesting)},Opal.modules["racc/parser"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$const_set=Opal.const_set,$defs=Opal.defs,$gvars=Opal.gvars,$rb_lt=Opal.rb_lt,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$to_ary=Opal.to_ary,$neqeq=Opal.neqeq,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$rb_ge=Opal.rb_ge,$rb_gt=Opal.rb_gt,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_times=Opal.rb_times;return Opal.add_stubs("[],class,<,size,[]=,-,__send__,_racc_setup,raise,_racc_init_sysvars,catch,!=,next_token,racc_read_token,+,==,>=,_racc_evalact,!,>,push,racc_shift,-@,_racc_do_reduce,===,racc_accept,throw,on_error,<=,pop,racc_e_pop,inspect,racc_next_state,*,racc_reduce,sprintf,token_to_str,print,racc_token2str,puts,racc_print_stacks,empty?,each,racc_print_states,each_index"),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);$klass($nesting[0],$$("StandardError"),"ParseError")}($nesting[0],$nesting),$truthy($$$("::","ParseError","skip_raise")?"constant":nil)||$const_set($nesting[0],"ParseError",$$$($$("Racc"),"ParseError")),function($base,$parent_nesting){var $nesting=[$module($base,"Racc")].concat($parent_nesting),$$=Opal.$r($nesting);return $truthy($$("Racc_No_Extensions","skip_raise")?"constant":nil)||$const_set($nesting[0],"Racc_No_Extensions",!1),function($base,$super,$parent_nesting){var self=$klass($base,null,"Parser"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.yydebug=$proto.racc_debug_out=$proto.racc_error_status=$proto.racc_t=$proto.racc_vstack=$proto.racc_val=$proto.racc_state=$proto.racc_tstack=nil,$const_set($nesting[0],"Racc_Runtime_Version","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Revision",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Runtime_Core_Version_R","1.4.6"),$const_set($nesting[0],"Racc_Runtime_Core_Revision_R",["originalRevision:","1.8"]["$[]"](1)),$const_set($nesting[0],"Racc_Main_Parsing_Routine","_racc_do_parse_rb"),$const_set($nesting[0],"Racc_YY_Parse_Method","_racc_yyparse_rb"),$const_set($nesting[0],"Racc_Runtime_Core_Version",$$("Racc_Runtime_Core_Version_R")),$const_set($nesting[0],"Racc_Runtime_Core_Revision",$$("Racc_Runtime_Core_Revision_R")),$const_set($nesting[0],"Racc_Runtime_Type","ruby"),$defs($$("Parser"),"$racc_runtime_type",(function(){return $$("Racc_Runtime_Type")}),0),$def(self,"$_racc_setup",(function(){var $a,$b,$ret_or_1=nil,arg=nil,$writer=nil;return null==$gvars.stderr&&($gvars.stderr=nil),$truthy($$$(this.$class(),"Racc_debug_parser"))||(this.yydebug=!1),$truthy(null!=($a=this.yydebug)&&$a!==nil?"instance-variable":nil)||(this.yydebug=!1),$truthy(this.yydebug)&&($truthy(null!=($b=this.racc_debug_out)&&$b!==nil?"instance-variable":nil)||(this.racc_debug_out=$gvars.stderr),this.racc_debug_out=$truthy($ret_or_1=this.racc_debug_out)?$ret_or_1:$gvars.stderr),arg=$$$(this.$class(),"Racc_arg"),$truthy($rb_lt(arg.$size(),14))&&($send(arg,"[]=",$to_a($writer=[13,!0])),$writer[$rb_minus($writer.length,1)]),arg}),0),$def(self,"$_racc_init_sysvars",(function(){return this.racc_state=[0],this.racc_tstack=[],this.racc_vstack=[],this.racc_t=nil,this.racc_val=nil,this.racc_read_next=!0,this.racc_user_yyerror=!1,this.racc_error_status=0}),0),$def(self,"$do_parse",(function(){return this.$__send__($$("Racc_Main_Parsing_Routine"),this.$_racc_setup(),!1)}),0),$def(self,"$next_token",(function(){return this.$raise($$("NotImplementedError"),this.$class()+"#next_token is not defined")}),0),$def(self,"$_racc_do_parse_rb",(function(arg,in_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,tok=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),tok=act=i=nil,$send(this,"catch",["racc_end_parse"],(function $$1(){var $d,$e,self=null==$$1.$$s?this:$$1.$$s,$ret_or_1=nil;for(null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==self.racc_t&&(self.racc_t=nil),null==self.yydebug&&(self.yydebug=nil),null==self.racc_val&&(self.racc_val=nil);$truthy(!0);)for($truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))?($truthy(self.racc_read_next)&&$neqeq(self.racc_t,0)&&($e=self.$next_token(),$d=$to_ary($e),tok=null==$d[0]?nil:$d[0],self.racc_val=null==$d[1]?nil:$d[1],$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,$truthy(self.yydebug)&&self.$racc_read_token(self.racc_t,tok,self.racc_val),self.racc_read_next=!1),i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)))):act=action_default["$[]"](self.racc_state["$[]"](-1));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:0,$$s:this})}),2),$def(self,"$yyparse",(function(recv,mid){return this.$__send__($$("Racc_YY_Parse_Method"),recv,mid,this.$_racc_setup(),!0)}),2),$def(self,"$_racc_yyparse_rb",(function(recv,mid,arg,c_debug){var $a,action_table=nil,action_check=nil,action_default=nil,action_pointer=nil,token_table=nil,act=nil,i=nil;return $a=$to_ary(arg),action_table=null==$a[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],action_default=null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],token_table=null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],this.$_racc_init_sysvars(),act=nil,i=nil,$send(this,"catch",["racc_end_parse"],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;for(null==self.racc_state&&(self.racc_state=nil);!$truthy(i=action_pointer["$[]"](self.racc_state["$[]"](-1)));)for(;$truthy(act=self.$_racc_evalact(action_default["$[]"](self.racc_state["$[]"](-1)),arg)););return $send(recv,"__send__",[mid],(function $$3(tok,val){var self=null==$$3.$$s?this:$$3.$$s,$ret_or_1=nil,$ret_or_2=nil;for(null==self.racc_t&&(self.racc_t=nil),null==self.racc_state&&(self.racc_state=nil),null==self.racc_read_next&&(self.racc_read_next=nil),null==tok&&(tok=nil),null==val&&(val=nil),$truthy(tok)?self.racc_t=$truthy($ret_or_1=token_table["$[]"](tok))?$ret_or_1:1:self.racc_t=0,self.racc_val=val,self.racc_read_next=!1,i=$rb_plus(i,self.racc_t),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););for(;$truthy($truthy($ret_or_1=$truthy($ret_or_2=(i=action_pointer["$[]"](self.racc_state["$[]"](-1)))["$!"]())?$ret_or_2:self.racc_read_next["$!"]())?$ret_or_1:self.racc_t["$=="](0));)for($truthy(i)&&$truthy(i=$rb_plus(i,self.racc_t))&&$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),self.racc_state["$[]"](-1))||(act=action_default["$[]"](self.racc_state["$[]"](-1)));$truthy(act=self.$_racc_evalact(act,arg)););}),{$$arity:2,$$s:self})}),{$$arity:0,$$s:this})}),4),$def(self,"$_racc_evalact",(function(act,arg){var $a,shift_n,action_table=nil,action_check=nil,action_pointer=nil,reduce_n=nil,code=nil,$ret_or_1=nil,i=nil;if(action_table=null==($a=$to_ary(arg))[0]?nil:$a[0],action_check=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],action_pointer=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],null==$a[6]?nil:$a[6],null==$a[7]?nil:$a[7],null==$a[8]?nil:$a[8],null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],shift_n=null==$a[11]?nil:$a[11],reduce_n=null==$a[12]?nil:$a[12],null==$a[13]?nil:$a[13],null==$a[14]?nil:$a[14],$truthy($rb_gt(act,0))&&$truthy($rb_lt(act,shift_n)))$truthy($rb_gt(this.racc_error_status,0))&&($eqeq(this.racc_t,1)||(this.racc_error_status=$rb_minus(this.racc_error_status,1))),this.racc_vstack.$push(this.racc_val),this.racc_state.$push(act),this.racc_read_next=!0,$truthy(this.yydebug)&&(this.racc_tstack.$push(this.racc_t),this.$racc_shift(this.racc_t,this.racc_tstack,this.racc_vstack));else if($truthy($rb_lt(act,0))&&$truthy($rb_gt(act,reduce_n["$-@"]()))){if(code=$send(this,"catch",["racc_jump"],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s;return null==self.racc_state&&(self.racc_state=nil),self.racc_state.$push(self.$_racc_do_reduce(arg,act)),!1}),{$$arity:0,$$s:this}),$truthy(code)){if($eqeqeq(1,$ret_or_1=code))return this.racc_user_yyerror=!0,reduce_n["$-@"]();if($eqeqeq(2,$ret_or_1))return shift_n;this.$raise("[Racc Bug] unknown jump code")}}else if($eqeq(act,shift_n))$truthy(this.yydebug)&&this.$racc_accept(),this.$throw("racc_end_parse",this.racc_vstack["$[]"](0));else{if($eqeq(act,reduce_n["$-@"]())){for($eqeqeq(0,$ret_or_1=this.racc_error_status)?$truthy(arg["$[]"](21))||this.$on_error(this.racc_t,this.racc_val,this.racc_vstack):$eqeqeq(3,$ret_or_1)&&($eqeq(this.racc_t,0)&&this.$throw("racc_end_parse",nil),this.racc_read_next=!0),this.racc_user_yyerror=!1,this.racc_error_status=3;$truthy(!0)&&!($truthy(i=action_pointer["$[]"](this.racc_state["$[]"](-1)))&&(i=$rb_plus(i,1),$truthy($rb_ge(i,0))&&$truthy(act=action_table["$[]"](i))&&$eqeq(action_check["$[]"](i),this.racc_state["$[]"](-1))));)$truthy($rb_le(this.racc_state.$size(),1))&&this.$throw("racc_end_parse",nil),this.racc_state.$pop(),this.racc_vstack.$pop(),$truthy(this.yydebug)&&(this.racc_tstack.$pop(),this.$racc_e_pop(this.racc_state,this.racc_tstack,this.racc_vstack));return act}this.$raise("[Racc Bug] unknown action "+act.$inspect())}return $truthy(this.yydebug)&&this.$racc_next_state(this.racc_state["$[]"](-1),this.racc_state),nil}),2),$def(self,"$_racc_do_reduce",(function(arg,act){var $a,nt_base,use_result,reduce_to,method_id,void_array,k1,goto_table=nil,goto_check=nil,goto_default=nil,goto_pointer=nil,reduce_table=nil,state=nil,vstack=nil,tstack=nil,i=nil,len=nil,tmp_t=nil,tmp_v=nil,$writer=nil,curstate=nil;return null==($a=$to_ary(arg))[0]?nil:$a[0],null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],null==$a[3]?nil:$a[3],goto_table=null==$a[4]?nil:$a[4],goto_check=null==$a[5]?nil:$a[5],goto_default=null==$a[6]?nil:$a[6],goto_pointer=null==$a[7]?nil:$a[7],nt_base=null==$a[8]?nil:$a[8],reduce_table=null==$a[9]?nil:$a[9],null==$a[10]?nil:$a[10],null==$a[11]?nil:$a[11],null==$a[12]?nil:$a[12],use_result=null==$a[13]?nil:$a[13],state=this.racc_state,vstack=this.racc_vstack,tstack=this.racc_tstack,i=$rb_times(act,-3),len=reduce_table["$[]"](i),reduce_to=reduce_table["$[]"]($rb_plus(i,1)),method_id=reduce_table["$[]"]($rb_plus(i,2)),void_array=[],$truthy(this.yydebug)&&(tmp_t=tstack["$[]"](len["$-@"](),len)),tmp_v=vstack["$[]"](len["$-@"](),len),$truthy(this.yydebug)&&($writer=[len["$-@"](),len,void_array],$send(tstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=[len["$-@"](),len,void_array],$send(vstack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[len["$-@"](),len,void_array],$send(state,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(use_result)?vstack.$push(this.$__send__(method_id,tmp_v,vstack,tmp_v["$[]"](0))):vstack.$push(this.$__send__(method_id,tmp_v,vstack)),tstack.$push(reduce_to),$truthy(this.yydebug)&&this.$racc_reduce(tmp_t,reduce_to,tstack,vstack),k1=$rb_minus(reduce_to,nt_base),$truthy(i=goto_pointer["$[]"](k1))&&(i=$rb_plus(i,state["$[]"](-1)),$truthy($rb_ge(i,0))&&$truthy(curstate=goto_table["$[]"](i))&&$eqeq(goto_check["$[]"](i),k1))?curstate:goto_default["$[]"](k1)}),2),$def(self,"$on_error",(function(t,val,vstack){var $ret_or_1;return this.$raise($$("ParseError"),this.$sprintf("\nparse error on value %s (%s)",val.$inspect(),$truthy($ret_or_1=this.$token_to_str(t))?$ret_or_1:"?"))}),3),$def(self,"$yyerror",(function(){return this.$throw("racc_jump",1)}),0),$def(self,"$yyaccept",(function(){return this.$throw("racc_jump",2)}),0),$def(self,"$yyerrok",(function(){return this.racc_error_status=0}),0),$def(self,"$racc_read_token",(function(t,tok,val){return this.racc_debug_out.$print("read "),this.racc_debug_out.$print(tok.$inspect(),"(",this.$racc_token2str(t),") "),this.racc_debug_out.$puts(val.$inspect()),this.racc_debug_out.$puts()}),3),$def(self,"$racc_shift",(function(tok,tstack,vstack){return this.racc_debug_out.$puts("shift "+this.$racc_token2str(tok)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_reduce",(function(toks,sim,tstack,vstack){var out=nil;return(out=this.racc_debug_out).$print("reduce "),$truthy(toks["$empty?"]())?out.$print(" "):$send(toks,"each",[],(function $$5(t){var self=null==$$5.$$s?this:$$5.$$s;return null==t&&(t=nil),out.$print(" ",self.$racc_token2str(t))}),{$$arity:1,$$s:this}),out.$puts(" --\x3e "+this.$racc_token2str(sim)),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),4),$def(self,"$racc_accept",(function(){return this.racc_debug_out.$puts("accept"),this.racc_debug_out.$puts()}),0),$def(self,"$racc_e_pop",(function(state,tstack,vstack){return this.racc_debug_out.$puts("error recovering mode: pop token"),this.$racc_print_states(state),this.$racc_print_stacks(tstack,vstack),this.racc_debug_out.$puts()}),3),$def(self,"$racc_next_state",(function(curstate,state){return this.racc_debug_out.$puts("goto "+curstate),this.$racc_print_states(state),this.racc_debug_out.$puts()}),2),$def(self,"$racc_print_stacks",(function(t,v){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(t,"each_index",[],(function $$6(i){var self=null==$$6.$$s?this:$$6.$$s;return null==i&&(i=nil),out.$print(" (",self.$racc_token2str(t["$[]"](i))," ",v["$[]"](i).$inspect(),")")}),{$$arity:1,$$s:this}),out.$puts(" ]")}),2),$def(self,"$racc_print_states",(function(s){var out=nil;return(out=this.racc_debug_out).$print(" ["),$send(s,"each",[],(function(st){return null==st&&(st=nil),out.$print(" ",st)}),1),out.$puts(" ]")}),1),$def(self,"$racc_token2str",(function(tok){var $ret_or_1;return $truthy($ret_or_1=$$$(this.$class(),"Racc_token_to_s_table")["$[]"](tok))?$ret_or_1:this.$raise("[Racc Bug] can't convert token "+tok+" to string")}),1),$def(self,"$token_to_str",(function(t){return $$$(this.$class(),"Racc_token_to_s_table")["$[]"](t)}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/messages"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set,$hash2=Opal.hash2,$truthy=Opal.truthy,$eqeqeq=Opal.eqeqeq,$defs=Opal.defs;return Opal.add_stubs("freeze,[],empty?,===,format"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return $const_set($nesting[0],"MESSAGES",$hash2(["unicode_point_too_large","invalid_escape","incomplete_escape","invalid_hex_escape","invalid_unicode_escape","unterminated_unicode","escape_eof","string_eof","regexp_options","cvar_name","ivar_name","trailing_in_number","empty_numeric","invalid_octal","no_dot_digit_literal","bare_backslash","unexpected","embedded_document","heredoc_id_has_newline","heredoc_id_ends_with_nl","unterminated_heredoc_id","invalid_escape_use","ambiguous_literal","ambiguous_regexp","ambiguous_prefix","triple_dot_at_eol","nth_ref_alias","begin_in_method","backref_assignment","invalid_assignment","module_name_const","unexpected_token","argument_const","argument_ivar","argument_gvar","argument_cvar","duplicate_argument","empty_symbol","odd_hash","singleton_literal","dynamic_const","const_reassignment","module_in_def","class_in_def","unexpected_percent_str","block_and_blockarg","masgn_as_condition","block_given_to_yield","invalid_regexp","invalid_return","csend_in_lhs_of_masgn","cant_assign_to_numparam","reserved_for_numparam","ordinary_param_defined","numparam_used_in_outer_scope","circular_argument_reference","pm_interp_in_var_name","lvar_name","undefined_lvar","duplicate_variable_name","duplicate_pattern_key","endless_setter","invalid_id_to_get","forward_arg_after_restarg","no_anonymous_blockarg","useless_else","duplicate_hash_key","invalid_encoding","invalid_action","clobbered","different_replacements","swallowed_insertions","swallowed_insertions_conflict","crossing_deletions","crossing_deletions_conflict","crossing_insertions","crossing_insertions_conflict"],{unicode_point_too_large:"invalid Unicode codepoint (too large)",invalid_escape:"invalid escape character syntax",incomplete_escape:"incomplete character syntax",invalid_hex_escape:"invalid hex escape",invalid_unicode_escape:"invalid Unicode escape",unterminated_unicode:"unterminated Unicode escape",escape_eof:"escape sequence meets end of file",string_eof:"unterminated string meets end of file",regexp_options:"unknown regexp options: %{options}",cvar_name:"`%{name}' is not allowed as a class variable name",ivar_name:"`%{name}' is not allowed as an instance variable name",trailing_in_number:"trailing `%{character}' in number",empty_numeric:"numeric literal without digits",invalid_octal:"invalid octal digit",no_dot_digit_literal:"no . floating literal anymore; put 0 before dot",bare_backslash:"bare backslash only allowed before newline",unexpected:"unexpected `%{character}'",embedded_document:"embedded document meets end of file (and they embark on a romantic journey)",heredoc_id_has_newline:"here document identifier across newlines, never match",heredoc_id_ends_with_nl:"here document identifier ends with a newline",unterminated_heredoc_id:"unterminated heredoc id",invalid_escape_use:"invalid character syntax; use ?%{escape}",ambiguous_literal:"ambiguous first argument; put parentheses or a space even after the operator",ambiguous_regexp:"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after `/' operator",ambiguous_prefix:"`%{prefix}' interpreted as argument prefix",triple_dot_at_eol:"... at EOL, should be parenthesized",nth_ref_alias:"cannot define an alias for a back-reference variable",begin_in_method:"BEGIN in method",backref_assignment:"cannot assign to a back-reference variable",invalid_assignment:"cannot assign to a keyword",module_name_const:"class or module name must be a constant literal",unexpected_token:"unexpected token %{token}",argument_const:"formal argument cannot be a constant",argument_ivar:"formal argument cannot be an instance variable",argument_gvar:"formal argument cannot be a global variable",argument_cvar:"formal argument cannot be a class variable",duplicate_argument:"duplicate argument name",empty_symbol:"empty symbol literal",odd_hash:"odd number of entries for a hash",singleton_literal:"cannot define a singleton method for a literal",dynamic_const:"dynamic constant assignment",const_reassignment:"constant re-assignment",module_in_def:"module definition in method body",class_in_def:"class definition in method body",unexpected_percent_str:"%{type}: unknown type of percent-literal",block_and_blockarg:"both block argument and literal block are passed",masgn_as_condition:"multiple assignment in conditional context",block_given_to_yield:"block given to yield",invalid_regexp:"%{message}",invalid_return:"Invalid return in class/module body",csend_in_lhs_of_masgn:"&. inside multiple assignment destination",cant_assign_to_numparam:"cannot assign to numbered parameter %{name}",reserved_for_numparam:"%{name} is reserved for numbered parameter",ordinary_param_defined:"ordinary parameter is defined",numparam_used_in_outer_scope:"numbered parameter is already used in an outer scope",circular_argument_reference:"circular argument reference %{var_name}",pm_interp_in_var_name:"symbol literal with interpolation is not allowed",lvar_name:"`%{name}' is not allowed as a local variable name",undefined_lvar:"no such local variable: `%{name}'",duplicate_variable_name:"duplicate variable name %{name}",duplicate_pattern_key:"duplicate hash pattern key %{name}",endless_setter:"setter method cannot be defined in an endless method definition",invalid_id_to_get:"identifier %{identifier} is not valid to get",forward_arg_after_restarg:"... after rest argument",no_anonymous_blockarg:"no anonymous block parameter",useless_else:"else without rescue is useless",duplicate_hash_key:"key is duplicated and overwritten",invalid_encoding:"literal contains escape sequences incompatible with UTF-8",invalid_action:"cannot %{action}",clobbered:"clobbered by: %{action}",different_replacements:"different replacements: %{replacement} vs %{other_replacement}",swallowed_insertions:"this replacement:",swallowed_insertions_conflict:"swallows some inner rewriting actions:",crossing_deletions:"the deletion of:",crossing_deletions_conflict:"is crossing:",crossing_insertions:"the rewriting action on:",crossing_insertions_conflict:"is crossing that on:"}).$freeze()),function($base,$parent_nesting){var self=$module($base,"Messages"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$compile",(function(reason,arguments$){var template;return template=$$("MESSAGES")["$[]"](reason),$eqeqeq($$("Hash"),arguments$)&&$truthy(arguments$["$empty?"]())?template:this.$format(template,arguments$)}),2)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/deprecation"]=function(Opal){var $base,$parent_nesting,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("attr_writer,warn"),$base=$nesting[0],$parent_nesting=$nesting,function($base){var self=$module($base,"Deprecation");return self.$attr_writer("warned_of_deprecation"),$def(self,"$warn_of_deprecation",(function(){var $ret_or_1,$ret_or_2=nil;return null==this.warned_of_deprecation&&(this.warned_of_deprecation=nil),this.warned_of_deprecation=$truthy($ret_or_1=this.warned_of_deprecation)?$ret_or_1:!$truthy($ret_or_2=this.$warn($$$(this,"DEPRECATION_WARNING")))||$ret_or_2}),0)}([$module($base,"Parser")].concat($parent_nesting)[0])},Opal.modules["parser/ast/processor"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$alias=Opal.alias,$to_a=Opal.to_a,$not=Opal.not,$truthy=Opal.truthy,$slice=Opal.slice;return Opal.add_stubs("updated,process_all,on_var,!,nil?,process,on_vasgn,on_argument,is_a?,[],children,process_regular_node,warn"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"AST")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Processor"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$process_regular_node",(function(node){return node.$updated(nil,this.$process_all(node))}),1),$alias(self,"on_dstr","process_regular_node"),$alias(self,"on_dsym","process_regular_node"),$alias(self,"on_regexp","process_regular_node"),$alias(self,"on_xstr","process_regular_node"),$alias(self,"on_splat","process_regular_node"),$alias(self,"on_kwsplat","process_regular_node"),$alias(self,"on_array","process_regular_node"),$alias(self,"on_pair","process_regular_node"),$alias(self,"on_hash","process_regular_node"),$alias(self,"on_kwargs","process_regular_node"),$alias(self,"on_irange","process_regular_node"),$alias(self,"on_erange","process_regular_node"),$def(self,"$on_var",(function(node){return node}),1),$def(self,"$process_variable_node",(function(node){return this.$on_var(node)}),1),$alias(self,"on_lvar","process_variable_node"),$alias(self,"on_ivar","process_variable_node"),$alias(self,"on_gvar","process_variable_node"),$alias(self,"on_cvar","process_variable_node"),$alias(self,"on_back_ref","process_variable_node"),$alias(self,"on_nth_ref","process_variable_node"),$def(self,"$on_vasgn",(function(node){var $a,name,value_node=nil;return name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value_node=null==$a[1]?nil:$a[1],$not(value_node["$nil?"]())?node.$updated(nil,[name,this.$process(value_node)]):node}),1),$def(self,"$process_var_asgn_node",(function(node){return this.$on_vasgn(node)}),1),$alias(self,"on_lvasgn","process_var_asgn_node"),$alias(self,"on_ivasgn","process_var_asgn_node"),$alias(self,"on_gvasgn","process_var_asgn_node"),$alias(self,"on_cvasgn","process_var_asgn_node"),$alias(self,"on_and_asgn","process_regular_node"),$alias(self,"on_or_asgn","process_regular_node"),$def(self,"$on_op_asgn",(function(node){var $a,var_node,method_name,value_node;return var_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],value_node=null==$a[2]?nil:$a[2],node.$updated(nil,[this.$process(var_node),method_name,this.$process(value_node)])}),1),$alias(self,"on_mlhs","process_regular_node"),$alias(self,"on_masgn","process_regular_node"),$def(self,"$on_const",(function(node){var $a,scope_node,name;return scope_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],node.$updated(nil,[this.$process(scope_node),name])}),1),$def(self,"$on_casgn",(function(node){var $a,scope_node,name,value_node=nil;return scope_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],value_node=null==$a[2]?nil:$a[2],$not(value_node["$nil?"]())?node.$updated(nil,[this.$process(scope_node),name,this.$process(value_node)]):node.$updated(nil,[this.$process(scope_node),name])}),1),$alias(self,"on_args","process_regular_node"),$def(self,"$on_argument",(function(node){var $a,arg_name,value_node=nil;return arg_name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value_node=null==$a[1]?nil:$a[1],$not(value_node["$nil?"]())?node.$updated(nil,[arg_name,this.$process(value_node)]):node}),1),$def(self,"$process_argument_node",(function(node){return this.$on_argument(node)}),1),$alias(self,"on_arg","process_argument_node"),$alias(self,"on_optarg","process_argument_node"),$alias(self,"on_restarg","process_argument_node"),$alias(self,"on_blockarg","process_argument_node"),$alias(self,"on_shadowarg","process_argument_node"),$alias(self,"on_kwarg","process_argument_node"),$alias(self,"on_kwoptarg","process_argument_node"),$alias(self,"on_kwrestarg","process_argument_node"),$alias(self,"on_forward_arg","process_argument_node"),$def(self,"$on_procarg0",(function(node){return $truthy(node.$children()["$[]"](0)["$is_a?"]($$("Symbol")))?this.$on_argument(node):this.$process_regular_node(node)}),1),$alias(self,"on_arg_expr","process_regular_node"),$alias(self,"on_restarg_expr","process_regular_node"),$alias(self,"on_blockarg_expr","process_regular_node"),$alias(self,"on_block_pass","process_regular_node"),$alias(self,"on_module","process_regular_node"),$alias(self,"on_class","process_regular_node"),$alias(self,"on_sclass","process_regular_node"),$def(self,"$on_def",(function(node){var $a,name,args_node,body_node;return name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args_node=null==$a[1]?nil:$a[1],body_node=null==$a[2]?nil:$a[2],node.$updated(nil,[name,this.$process(args_node),this.$process(body_node)])}),1),$def(self,"$on_defs",(function(node){var $a,definee_node,name,args_node,body_node;return definee_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],args_node=null==$a[2]?nil:$a[2],body_node=null==$a[3]?nil:$a[3],node.$updated(nil,[this.$process(definee_node),name,this.$process(args_node),this.$process(body_node)])}),1),$alias(self,"on_undef","process_regular_node"),$alias(self,"on_alias","process_regular_node"),$def(self,"$on_send",(function(node){var $a,arg_nodes,receiver_node=nil,method_name=nil;return receiver_node=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],arg_nodes=$slice.call($a,2),$truthy(receiver_node)&&(receiver_node=this.$process(receiver_node)),node.$updated(nil,[receiver_node,method_name].concat($to_a(this.$process_all(arg_nodes))))}),1),$alias(self,"on_csend","on_send"),$alias(self,"on_index","process_regular_node"),$alias(self,"on_indexasgn","process_regular_node"),$alias(self,"on_block","process_regular_node"),$alias(self,"on_lambda","process_regular_node"),$def(self,"$on_numblock",(function(node){var $a,method_call,max_numparam,body;return method_call=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],max_numparam=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],node.$updated(nil,[this.$process(method_call),max_numparam,this.$process(body)])}),1),$alias(self,"on_while","process_regular_node"),$alias(self,"on_while_post","process_regular_node"),$alias(self,"on_until","process_regular_node"),$alias(self,"on_until_post","process_regular_node"),$alias(self,"on_for","process_regular_node"),$alias(self,"on_return","process_regular_node"),$alias(self,"on_break","process_regular_node"),$alias(self,"on_next","process_regular_node"),$alias(self,"on_redo","process_regular_node"),$alias(self,"on_retry","process_regular_node"),$alias(self,"on_super","process_regular_node"),$alias(self,"on_yield","process_regular_node"),$alias(self,"on_defined?","process_regular_node"),$alias(self,"on_not","process_regular_node"),$alias(self,"on_and","process_regular_node"),$alias(self,"on_or","process_regular_node"),$alias(self,"on_if","process_regular_node"),$alias(self,"on_when","process_regular_node"),$alias(self,"on_case","process_regular_node"),$alias(self,"on_iflipflop","process_regular_node"),$alias(self,"on_eflipflop","process_regular_node"),$alias(self,"on_match_current_line","process_regular_node"),$alias(self,"on_match_with_lvasgn","process_regular_node"),$alias(self,"on_resbody","process_regular_node"),$alias(self,"on_rescue","process_regular_node"),$alias(self,"on_ensure","process_regular_node"),$alias(self,"on_begin","process_regular_node"),$alias(self,"on_kwbegin","process_regular_node"),$alias(self,"on_preexe","process_regular_node"),$alias(self,"on_postexe","process_regular_node"),$alias(self,"on_case_match","process_regular_node"),$alias(self,"on_in_match","process_regular_node"),$alias(self,"on_match_pattern","process_regular_node"),$alias(self,"on_match_pattern_p","process_regular_node"),$alias(self,"on_in_pattern","process_regular_node"),$alias(self,"on_if_guard","process_regular_node"),$alias(self,"on_unless_guard","process_regular_node"),$alias(self,"on_match_var","process_variable_node"),$alias(self,"on_match_rest","process_regular_node"),$alias(self,"on_pin","process_regular_node"),$alias(self,"on_match_alt","process_regular_node"),$alias(self,"on_match_as","process_regular_node"),$alias(self,"on_array_pattern","process_regular_node"),$alias(self,"on_array_pattern_with_tail","process_regular_node"),$alias(self,"on_hash_pattern","process_regular_node"),$alias(self,"on_const_pattern","process_regular_node"),$alias(self,"on_find_pattern","process_regular_node"),$def(self,"$process_variable_node",(function(node){return this.$warn("Parser::AST::Processor#process_variable_node is deprecated as a public API and will be removed. Please use Parser::AST::Processor#on_var instead."),this.$on_var(node)}),1),$def(self,"$process_var_asgn_node",(function(node){return this.$warn("Parser::AST::Processor#process_var_asgn_node is deprecated as a public API and will be removed. Please use Parser::AST::Processor#on_vasgn instead."),this.$on_vasgn(node)}),1),$def(self,"$process_argument_node",(function(node){return this.$warn("Parser::AST::Processor#process_argument_node is deprecated as a public API and will be removed. Please use Parser::AST::Processor#on_argument instead."),this.$on_argument(node)}),1),$def(self,"$on_empty_else",(function(node){return node}),1)}($nesting[0],$$$($$$("AST"),"Processor"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/meta"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set;return Opal.add_stubs("freeze,to_set"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Meta")].concat($parent_nesting);return $const_set($nesting[0],"NODE_TYPES",["true","false","nil","int","float","str","dstr","sym","dsym","xstr","regopt","regexp","array","splat","pair","kwsplat","hash","irange","erange","self","lvar","ivar","cvar","gvar","const","defined?","lvasgn","ivasgn","cvasgn","gvasgn","casgn","mlhs","masgn","op_asgn","and_asgn","ensure","rescue","arg_expr","or_asgn","back_ref","nth_ref","match_with_lvasgn","match_current_line","module","class","sclass","def","defs","undef","alias","args","cbase","arg","optarg","restarg","blockarg","block_pass","kwarg","kwoptarg","kwrestarg","kwnilarg","send","csend","super","zsuper","yield","block","and","not","or","if","when","case","while","until","while_post","until_post","for","break","next","redo","return","resbody","kwbegin","begin","retry","preexe","postexe","iflipflop","eflipflop","shadowarg","complex","rational","__FILE__","__LINE__","__ENCODING__","ident","lambda","indexasgn","index","procarg0","restarg_expr","blockarg_expr","objc_kwarg","objc_restarg","objc_varargs","numargs","numblock","forward_args","forwarded_args","forward_arg","case_match","in_match","in_pattern","match_var","pin","match_alt","match_as","match_rest","array_pattern","match_with_trailing_comma","array_pattern_with_tail","hash_pattern","const_pattern","if_guard","unless_guard","match_nil_pattern","empty_else","find_pattern","kwargs","match_pattern_p","match_pattern"].$to_set().$freeze())}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/buffer"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$enc=Opal.enc,$truthy=Opal.truthy,$gvars=Opal.gvars,$eqeq=Opal.eqeq,$neqeq=Opal.neqeq,$defs=Opal.defs,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$not=Opal.not,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$rb_lt=Opal.rb_lt,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("attr_reader,empty?,=~,start_with?,freeze,==,[],!=,nil?,match,find,encoding,recognize_encoding,force_encoding,encode,to_s,source=,-,open,read,raise,frozen?,dup,reencode_string,class,valid_encoding?,name,raw_source=,gsub,!,ascii_only?,line_index_for_position,line_begins,+,to_a,lines,end_with?,<<,each,chomp!,fetch,source_lines,>=,size,<,new,source,source_range,private,index,bsearch,[]=,method_defined?,bsearch_index"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Buffer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.name=$proto.source=$proto.slice_source=$proto.first_line=$proto.lines=$proto.source_range=$proto.line_begins=$proto.line_index_for_position=$proto.line_range=nil,self.$attr_reader("name","first_line"),$const_set($nesting[0],"ENCODING_RE",$regexp([$enc("[\\s#](en)?coding\\s*[:=]\\s*","ASCII-8BIT"),$enc("(","ASCII-8BIT"),$enc("","ASCII-8BIT"),$enc("(utf8-mac)","ASCII-8BIT"),$enc("|","ASCII-8BIT"),$enc("","ASCII-8BIT"),$enc("([A-Za-z0-9_-]+?)(-unix|-dos|-mac)","ASCII-8BIT"),$enc("|","ASCII-8BIT"),$enc("([A-Za-z0-9_-]+)","ASCII-8BIT"),$enc(")","ASCII-8BIT"),$enc("","ASCII-8BIT")])),$defs(self,"$recognize_encoding",(function(string){var $a,$b,second_line,first_line=nil,encoding_line=nil,result=nil,$ret_or_1=nil,$ret_or_2=nil;return $truthy(string["$empty?"]())?nil:(string["$=~"](/^(.*)\n?(.*\n)?/),second_line=($a=[($b=$gvars["~"])===nil?nil:$b["$[]"](1),($b=$gvars["~"])===nil?nil:$b["$[]"](2)])[1],$truthy((first_line=$a[0])["$start_with?"]($enc("","ASCII-8BIT").$freeze()))?$$$($$("Encoding"),"UTF_8"):(encoding_line=$eqeq(first_line["$[]"](0,2),$enc("#!","ASCII-8BIT").$freeze())?second_line:first_line,$truthy(encoding_line["$nil?"]())||$neqeq(encoding_line["$[]"](0),$enc("#","ASCII-8BIT"))?nil:$truthy(result=$$("ENCODING_RE").$match(encoding_line))?$$("Encoding").$find($truthy($ret_or_1=$truthy($ret_or_2=result["$[]"](3))?$ret_or_2:result["$[]"](4))?$ret_or_1:result["$[]"](6)):nil))}),1),$defs(self,"$reencode_string",(function(input){var original_encoding,detected_encoding=nil;return original_encoding=input.$encoding(),detected_encoding=this.$recognize_encoding(input.$force_encoding($$$($$("Encoding"),"BINARY"))),$truthy(detected_encoding["$nil?"]())?input.$force_encoding(original_encoding):$eqeq(detected_encoding,$$$($$("Encoding"),"BINARY"))?input:input.$force_encoding(detected_encoding).$encode($$$($$("Encoding"),"UTF_8"))}),1),$def(self,"$initialize",(function(name,$a,$b){var $post_args,$kwargs,first_line,source,self=this,$writer=nil;if($post_args=Opal.slice.call(arguments,1),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return $post_args.length>0&&(first_line=$post_args.shift()),null==first_line&&(first_line=1),null==(source=$kwargs.$$smap.source)&&(source=nil),self.name=name.$to_s(),self.source=nil,self.first_line=first_line,self.lines=nil,self.line_begins=nil,self.slice_source=nil,self.line_index_for_position=$hash2([],{}),$truthy(source)?($send(self,"source=",$to_a($writer=[source])),$writer[$rb_minus($writer.length,1)]):nil}),-2),$def(self,"$read",(function(){return $send($$("File"),"open",[this.name,$enc("rb","ASCII-8BIT")],(function $$1(io){var $writer,self=null==$$1.$$s?this:$$1.$$s;return null==io&&(io=nil),$writer=[io.$read()],$send(self,"source=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),this}),0),$def(self,"$source",(function(){return $truthy(this.source["$nil?"]())&&this.$raise($$("RuntimeError"),$enc("Cannot extract source from uninitialized Source::Buffer","ASCII-8BIT")),this.source}),0),$def(self,"$source=",(function(input){var $writer;return $truthy(input["$frozen?"]())&&(input=input.$dup()),input=this.$class().$reencode_string(input),$truthy(input["$valid_encoding?"]())||this.$raise($$("EncodingError"),$enc("invalid byte sequence in ","ASCII-8BIT")+input.$encoding().$name()),$send(this,"raw_source=",$to_a($writer=[input])),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$raw_source=",(function(input){return $truthy(this.source)&&this.$raise($$("ArgumentError"),$enc("Source::Buffer is immutable","ASCII-8BIT")),this.source=input.$gsub($enc("\r\n","ASCII-8BIT").$freeze(),$enc("\n","ASCII-8BIT").$freeze()).$freeze(),$not(this.source["$ascii_only?"]())&&$neqeq(this.source.$encoding(),$$$($$("Encoding"),"UTF_32LE"))&&$neqeq(this.source.$encoding(),$$$($$("Encoding"),"BINARY"))?this.slice_source=this.source.$encode($$$($$("Encoding"),"UTF_32LE")):nil}),1),$def(self,"$slice",(function(range){return $truthy(this.slice_source["$nil?"]())?this.source["$[]"](range):this.slice_source["$[]"](range).$encode(this.source.$encoding())}),1),$def(self,"$decompose_position",(function(position){var line_index,line_begin;return line_index=this.$line_index_for_position(position),line_begin=this.$line_begins()["$[]"](line_index),[$rb_plus(this.first_line,line_index),$rb_minus(position,line_begin)]}),1),$def(self,"$line_for_position",(function(position){return $rb_plus(this.$line_index_for_position(position),this.first_line)}),1),$def(self,"$column_for_position",(function(position){var line_index;return line_index=this.$line_index_for_position(position),$rb_minus(position,this.$line_begins()["$[]"](line_index))}),1),$def(self,"$source_lines",(function(){var $ret_or_1,lines=nil;return this.lines=$truthy($ret_or_1=this.lines)?$ret_or_1:(lines=this.source.$lines().$to_a(),$truthy(this.source["$end_with?"]($enc("\n","ASCII-8BIT").$freeze()))&&lines["$<<"]($enc("","ASCII-8BIT").$dup()),$send(lines,"each",[],(function(line){return null==line&&(line=nil),line["$chomp!"]($enc("\n","ASCII-8BIT").$freeze()),line.$freeze()}),1),lines.$freeze())}),0),$def(self,"$source_line",(function(lineno){return this.$source_lines().$fetch($rb_minus(lineno,this.first_line)).$dup()}),1),$def(self,"$line_range",(function(lineno){var index;return index=$rb_minus(lineno,this.first_line),$truthy($rb_lt(index,0))||$truthy($rb_ge($rb_plus(index,1),this.$line_begins().$size()))?this.$raise($$("IndexError"),$enc("Parser::Source::Buffer: range for line ","ASCII-8BIT")+""+lineno+$enc(" requested, valid line numbers are ","ASCII-8BIT")+this.first_line+$enc("..","ASCII-8BIT")+$rb_minus($rb_plus(this.first_line,this.$line_begins().$size()),2)):$$("Range").$new(this,this.$line_begins()["$[]"](index),$rb_minus(this.$line_begins()["$[]"]($rb_plus(index,1)),1))}),1),$def(self,"$source_range",(function(){var $ret_or_1;return this.source_range=$truthy($ret_or_1=this.source_range)?$ret_or_1:$$("Range").$new(this,0,this.$source().$size())}),0),$def(self,"$last_line",(function(){return $rb_minus($rb_plus(this.$line_begins().$size(),this.first_line),2)}),0),$def(self,"$freeze",(function $$freeze(){var $yield=$$freeze.$$p||nil;return delete $$freeze.$$p,this.$source_lines(),this.$line_begins(),this.$source_range(),$send2(this,$find_super(this,"freeze",$$freeze,!1,!0),"freeze",[],$yield)}),0),$def(self,"$inspect",(function(){return $enc("#<","ASCII-8BIT")+this.$class()+$enc(" ","ASCII-8BIT")+this.$name()+$enc(">","ASCII-8BIT")}),0),self.$private(),$def(self,"$line_begins",(function(){var $ret_or_1,self=this,begins=nil,index=nil;return self.line_begins=$truthy($ret_or_1=self.line_begins)?$ret_or_1:(begins=[0],index=0,function(){for(;$truthy(index=self.source.$index($enc("\n","ASCII-8BIT").$freeze(),index));)index=$rb_plus(index,1),begins["$<<"](index)}(),begins["$<<"]($rb_plus(self.source.$size(),1)),begins)}),0),$def(self,"$line_index_for_position",(function(position){var $ret_or_1,index=nil,$writer=nil;return $truthy($ret_or_1=this.line_index_for_position["$[]"](position))?$ret_or_1:(index=$rb_minus(this.$bsearch(this.$line_begins(),position),1),$truthy(this.line_index_for_position["$frozen?"]())||($writer=[position,index],$send(this.line_index_for_position,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),index)}),1),$truthy($$("Array")["$method_defined?"]("bsearch_index"))?$def(self,"$bsearch",(function(line_begins,position){var $ret_or_1;return $truthy($ret_or_1=$send(line_begins,"bsearch_index",[],(function(line_begin){return null==line_begin&&(line_begin=nil),$rb_lt(position,line_begin)}),1))?$ret_or_1:$rb_minus(line_begins.$size(),1)}),2):$def(self,"$bsearch",(function(line_begins,position){var $ret_or_1=nil;return this.line_range=$truthy($ret_or_1=this.line_range)?$ret_or_1:Opal.Range.$new(0,line_begins.$size(),!0),$truthy($ret_or_1=$send(this.line_range,"bsearch",[],(function(i){return null==i&&(i=nil),$rb_lt(position,line_begins["$[]"](i))}),1))?$ret_or_1:$rb_minus(line_begins.$size(),1)}),2)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/range"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$rb_lt=Opal.rb_lt,$def=Opal.def,$hash2=Opal.hash2,$rb_minus=Opal.rb_minus,$alias=Opal.alias,$neqeq=Opal.neqeq,$to_ary=Opal.to_ary,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$rb_times=Opal.rb_times,$eqeq=Opal.eqeq;return Opal.add_stubs("include,attr_reader,<,raise,nil?,freeze,with,-,line_for_position,alias_method,column_for_position,!=,line,last_line,inspect,column,last_column,source_line,slice,begin_pos,end_pos,include?,source,to_a,decompose_position,join,name,+,new,min,max,disjoint?,empty?,>=,!,<=>,contains?,overlaps?,==,*,source_buffer,is_a?,nonzero?,hash"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Range"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.begin_pos=$proto.end_pos=$proto.source_buffer=nil,self.$include($$("Comparable")),self.$attr_reader("source_buffer"),self.$attr_reader("begin_pos","end_pos"),$def(self,"$initialize",(function(source_buffer,begin_pos,end_pos){var $a;return $truthy($rb_lt(end_pos,begin_pos))&&this.$raise($$("ArgumentError"),"Parser::Source::Range: end_pos must not be less than begin_pos"),$truthy(source_buffer["$nil?"]())&&this.$raise($$("ArgumentError"),"Parser::Source::Range: source_buffer must not be nil"),this.source_buffer=source_buffer,$a=[begin_pos,end_pos],this.begin_pos=$a[0],this.end_pos=$a[1],this.$freeze()}),3),$def(self,"$begin",(function(){return this.$with($hash2(["end_pos"],{end_pos:this.begin_pos}))}),0),$def(self,"$end",(function(){return this.$with($hash2(["begin_pos"],{begin_pos:this.end_pos}))}),0),$def(self,"$size",(function(){return $rb_minus(this.end_pos,this.begin_pos)}),0),$alias(self,"length","size"),$def(self,"$line",(function(){return this.source_buffer.$line_for_position(this.begin_pos)}),0),self.$alias_method("first_line","line"),$def(self,"$column",(function(){return this.source_buffer.$column_for_position(this.begin_pos)}),0),$def(self,"$last_line",(function(){return this.source_buffer.$line_for_position(this.end_pos)}),0),$def(self,"$last_column",(function(){return this.source_buffer.$column_for_position(this.end_pos)}),0),$def(self,"$column_range",(function(){return $neqeq(this.$line(),this.$last_line())&&this.$raise($$("RangeError"),this.$inspect()+" spans more than one line"),Opal.Range.$new(this.$column(),this.$last_column(),!0)}),0),$def(self,"$source_line",(function(){return this.source_buffer.$source_line(this.$line())}),0),$def(self,"$source",(function(){return this.source_buffer.$slice(Opal.Range.$new(this.$begin_pos(),this.$end_pos(),!0))}),0),$def(self,"$is?",(function($a){var self=this;return Opal.slice.call(arguments)["$include?"](self.$source())}),-1),$def(self,"$to_a",(function(){return Opal.Range.$new(this.begin_pos,this.end_pos,!0).$to_a()}),0),$def(self,"$to_range",(function(){return Opal.Range.$new(this.$begin_pos(),this.$end_pos(),!0)}),0),$def(self,"$to_s",(function(){var $a,$b,column,line=nil;return $b=this.source_buffer.$decompose_position(this.begin_pos),line=null==($a=$to_ary($b))[0]?nil:$a[0],column=null==$a[1]?nil:$a[1],[this.source_buffer.$name(),line,$rb_plus(column,1)].$join(":")}),0),$def(self,"$with",(function($kwargs){var begin_pos,end_pos;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(begin_pos=$kwargs.$$smap.begin_pos)&&(begin_pos=this.begin_pos),null==(end_pos=$kwargs.$$smap.end_pos)&&(end_pos=this.end_pos),$$("Range").$new(this.source_buffer,begin_pos,end_pos)}),-1),$def(self,"$adjust",(function($kwargs){var begin_pos,end_pos;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(begin_pos=$kwargs.$$smap.begin_pos)&&(begin_pos=0),null==(end_pos=$kwargs.$$smap.end_pos)&&(end_pos=0),$$("Range").$new(this.source_buffer,$rb_plus(this.begin_pos,begin_pos),$rb_plus(this.end_pos,end_pos))}),-1),$def(self,"$resize",(function(new_size){return this.$with($hash2(["end_pos"],{end_pos:$rb_plus(this.begin_pos,new_size)}))}),1),$def(self,"$join",(function(other){return $$("Range").$new(this.source_buffer,[this.begin_pos,other.$begin_pos()].$min(),[this.end_pos,other.$end_pos()].$max())}),1),$def(self,"$intersect",(function(other){return $truthy(this["$disjoint?"](other))?nil:$$("Range").$new(this.source_buffer,[this.begin_pos,other.$begin_pos()].$max(),[this.end_pos,other.$end_pos()].$min())}),1),$def(self,"$disjoint?",(function(other){var $ret_or_1=nil;return $truthy(this["$empty?"]())&&$truthy(other["$empty?"]())?this.begin_pos["$!="](other.$begin_pos()):$truthy($ret_or_1=$rb_ge(this.begin_pos,other.$end_pos()))?$ret_or_1:$rb_ge(other.$begin_pos(),this.end_pos)}),1),$def(self,"$overlaps?",(function(other){return this["$disjoint?"](other)["$!"]()}),1),$def(self,"$contains?",(function(other){return $rb_ge($rb_plus(other.$begin_pos()["$<=>"](this.begin_pos),this.end_pos["$<=>"](other.$end_pos())),$truthy(other["$empty?"]())?2:1)}),1),$def(self,"$contained?",(function(other){return other["$contains?"](this)}),1),$def(self,"$crossing?",(function(other){return!!$truthy(this["$overlaps?"](other))&&$rb_times(this.begin_pos["$<=>"](other.$begin_pos()),this.end_pos["$<=>"](other.$end_pos()))["$=="](1)}),1),$def(self,"$empty?",(function(){return this.begin_pos["$=="](this.end_pos)}),0),$def(self,"$<=>",(function(other){var $ret_or_1;return $truthy(other["$is_a?"]($$$($$$($$$("Parser"),"Source"),"Range")))&&$eqeq(this.source_buffer,other.$source_buffer())?$truthy($ret_or_1=this.begin_pos["$<=>"](other.$begin_pos())["$nonzero?"]())?$ret_or_1:this.end_pos["$<=>"](other.$end_pos()):nil}),1),self.$alias_method("eql?","=="),$def(self,"$hash",(function(){return[this.source_buffer,this.begin_pos,this.end_pos].$hash()}),0),$def(self,"$inspect",(function(){return"#"}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/comment"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$defs=Opal.defs,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("attr_reader,alias_method,new,associate,associate_locations,associate_by_identity,freeze,source,start_with?,text,==,type,is_a?,location,to_s,expression,inspect"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Comment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.location=nil,self.$attr_reader("text"),self.$attr_reader("location"),self.$alias_method("loc","location"),$defs(self,"$associate",(function(ast,comments){return $$("Associator").$new(ast,comments).$associate()}),2),$defs(self,"$associate_locations",(function(ast,comments){return $$("Associator").$new(ast,comments).$associate_locations()}),2),$defs(self,"$associate_by_identity",(function(ast,comments){return $$("Associator").$new(ast,comments).$associate_by_identity()}),2),$def(self,"$initialize",(function(range){return this.location=$$$($$$($$("Parser"),"Source"),"Map").$new(range),this.text=range.$source().$freeze(),this.$freeze()}),1),$def(self,"$type",(function(){return $truthy(this.$text()["$start_with?"]("#".$freeze()))?"inline":$truthy(this.$text()["$start_with?"]("=begin".$freeze()))?"document":nil}),0),$def(self,"$inline?",(function(){return this.$type()["$=="]("inline")}),0),$def(self,"$document?",(function(){return this.$type()["$=="]("document")}),0),$def(self,"$==",(function(other){var $ret_or_1;return $truthy($ret_or_1=other["$is_a?"]($$$($$("Source"),"Comment")))?this.location["$=="](other.$location()):$ret_or_1}),1),$def(self,"$inspect",(function(){return"#"}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/comment/associator"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$rb_le=Opal.rb_le,$rb_plus=Opal.rb_plus,$not=Opal.not;return Opal.add_stubs("attr_accessor,do_associate,private,freeze,[],include?,type,sort_by,compact,children,begin_pos,expression,loc,select,is_a?,new,[]=,-,==,compare_by_identity,advance_comment,advance_through_directives,visit,process_leading_comments,location,<=,line,last_line,each,children_in_source_order,process_trailing_comments,current_comment_before?,associate_and_advance_comment,current_comment_before_end?,current_comment_decorates?,+,!,end_pos,<<,start_with?,text,=~"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Associator"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.map_using=$proto.mapping=$proto.skip_directives=$proto.ast=$proto.current_comment=$proto.comment_num=$proto.comments=nil,self.$attr_accessor("skip_directives"),$def(self,"$initialize",(function(ast,comments){return this.ast=ast,this.comments=comments,this.skip_directives=!0}),2),$def(self,"$associate",(function(){return this.map_using="eql",this.$do_associate()}),0),$def(self,"$associate_locations",(function(){return this.map_using="location",this.$do_associate()}),0),$def(self,"$associate_by_identity",(function(){return this.map_using="identity",this.$do_associate()}),0),self.$private(),$const_set($nesting[0],"POSTFIX_TYPES",$$("Set")["$[]"]("if","while","while_post","until","until_post","masgn").$freeze()),$def(self,"$children_in_source_order",(function(node){return $truthy($$("POSTFIX_TYPES")["$include?"](node.$type()))?$send(node.$children().$compact(),"sort_by",[],(function(child){return null==child&&(child=nil),child.$loc().$expression().$begin_pos()}),1):$send(node.$children(),"select",[],(function(child){var $ret_or_1,$ret_or_2;return null==child&&(child=nil),$truthy($ret_or_1=$truthy($ret_or_2=child["$is_a?"]($$$($$("AST"),"Node")))?child.$loc():$ret_or_2)?child.$loc().$expression():$ret_or_1}),1)}),1),$def(self,"$do_associate",(function(){return this.mapping=$send($$("Hash"),"new",[],(function(h,k){var $writer;return null==h&&(h=nil),null==k&&(k=nil),$send(h,"[]=",$to_a($writer=[k,[]])),$writer[$rb_minus($writer.length,1)]}),2),$eqeq(this.map_using,"identity")&&this.mapping.$compare_by_identity(),this.comment_num=-1,this.$advance_comment(),$truthy(this.skip_directives)&&this.$advance_through_directives(),$truthy(this.ast)&&this.$visit(this.ast),this.mapping}),0),$def(self,"$visit",(function(node){var node_loc=nil;return this.$process_leading_comments(node),$truthy(this.current_comment)?(node_loc=node.$location(),$truthy($rb_le(this.current_comment.$location().$line(),node_loc.$last_line()))||$truthy(node_loc["$is_a?"]($$$($$("Map"),"Heredoc")))?($send(this.$children_in_source_order(node),"each",[],(function $$4(child){return null==child&&(child=nil),(null==$$4.$$s?this:$$4.$$s).$visit(child)}),{$$arity:1,$$s:this}),this.$process_trailing_comments(node)):nil):nil}),1),$def(self,"$process_leading_comments",(function(node){if($eqeq(node.$type(),"begin"))return nil;for(;$truthy(this["$current_comment_before?"](node));)this.$associate_and_advance_comment(node)}),1),$def(self,"$process_trailing_comments",(function(node){for(;$truthy(this["$current_comment_before_end?"](node));)this.$associate_and_advance_comment(node);for(;$truthy(this["$current_comment_decorates?"](node));)this.$associate_and_advance_comment(node)}),1),$def(self,"$advance_comment",(function(){return this.comment_num=$rb_plus(this.comment_num,1),this.current_comment=this.comments["$[]"](this.comment_num)}),0),$def(self,"$current_comment_before?",(function(node){var comment_loc=nil,node_loc=nil;return!$not(this.current_comment)&&(comment_loc=this.current_comment.$location().$expression(),node_loc=node.$location().$expression(),$rb_le(comment_loc.$end_pos(),node_loc.$begin_pos()))}),1),$def(self,"$current_comment_before_end?",(function(node){var comment_loc=nil,node_loc=nil;return!$not(this.current_comment)&&(comment_loc=this.current_comment.$location().$expression(),node_loc=node.$location().$expression(),$rb_le(comment_loc.$end_pos(),node_loc.$end_pos()))}),1),$def(self,"$current_comment_decorates?",(function(node){return!$not(this.current_comment)&&this.current_comment.$location().$line()["$=="](node.$location().$last_line())}),1),$def(self,"$associate_and_advance_comment",(function(node){var key;return key=$eqeq(this.map_using,"location")?node.$location():node,this.mapping["$[]"](key)["$<<"](this.current_comment),this.$advance_comment()}),1),$const_set($nesting[0],"MAGIC_COMMENT_RE",/^#\s*(-\*-|)\s*(frozen_string_literal|warn_indent|warn_past_scope):.*\1$/),$def(self,"$advance_through_directives",(function(){return $truthy(this.current_comment)&&$truthy(this.current_comment.$text()["$start_with?"]("#!".$freeze()))&&this.$advance_comment(),$truthy(this.current_comment)&&$truthy(this.current_comment.$text()["$=~"]($$("MAGIC_COMMENT_RE")))&&this.$advance_comment(),$truthy(this.current_comment)&&$truthy(this.current_comment.$text()["$=~"]($$$($$("Buffer"),"ENCODING_RE")))?this.$advance_comment():nil}),0)}(Opal.$r($nesting)("Comment"),0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$gvars=Opal.gvars,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$rb_plus=Opal.rb_plus,$truthy=Opal.truthy,$not=Opal.not,$neqeq=Opal.neqeq,$rb_le=Opal.rb_le,$rb_ge=Opal.rb_ge,$rb_lt=Opal.rb_lt,$hash2=Opal.hash2,$const_set=Opal.const_set;return Opal.add_stubs("attr_reader,warn_of_deprecation,class,new,lambda,puts,render,consumer=,-,append,freeze,begin,end,+,in_transaction?,raise,dup,source,each,sort,begin_pos,range,length,replacement,[]=,private,empty?,clobbered_insertion?,!,allow_multiple_insertions?,raise_clobber_error,record_insertion,adjacent_updates?,find,overlaps?,replace_compatible_with_insertion?,merge_actions!,<<,active_queue,adjacent_insertions?,merge_actions,delete,can_merge?,record_replace,|,active_insertions,active_insertions=,active_clobber,clobbered_position_mask,active_clobber=,size,!=,&,<=,end_pos,adjacent_insertion_mask,select,adjacent?,adjacent_position_mask,>=,==,[],all?,intersect,nil?,max,sort_by,push,join,first,max_by,merge_replacements,replace_actions,disjoint?,<,process,extend"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Rewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.diagnostics=$proto.insert_before_multi_order=$proto.insert_after_multi_order=$proto.source_buffer=$proto.queue=$proto.clobber=$proto.insertions=$proto.pending_queue=$proto.pending_clobber=$proto.pending_insertions=nil,self.$attr_reader("source_buffer"),self.$attr_reader("diagnostics"),$def(self,"$initialize",(function(source_buffer){var $writer;return this.$class().$warn_of_deprecation(),this.diagnostics=$$$($$("Diagnostic"),"Engine").$new(),$writer=[$send(this,"lambda",[],(function(diag){return null==$gvars.stderr&&($gvars.stderr=nil),null==diag&&(diag=nil),$gvars.stderr.$puts(diag.$render())}),1)],$send(this.diagnostics,"consumer=",$to_a($writer)),$rb_minus($writer.length,1),this.source_buffer=source_buffer,this.queue=[],this.clobber=0,this.insertions=0,this.insert_before_multi_order=0,this.insert_after_multi_order=0,this.pending_queue=nil,this.pending_clobber=nil,this.pending_insertions=nil}),1),$def(self,"$remove",(function(range){return this.$append($$$($$("Rewriter"),"Action").$new(range,"".$freeze()))}),1),$def(self,"$insert_before",(function(range,content){return this.$append($$$($$("Rewriter"),"Action").$new(range.$begin(),content))}),2),$def(self,"$wrap",(function(range,before,after){return this.$append($$$($$("Rewriter"),"Action").$new(range.$begin(),before)),this.$append($$$($$("Rewriter"),"Action").$new(range.$end(),after))}),3),$def(self,"$insert_before_multi",(function(range,content){return this.insert_before_multi_order=$rb_minus(this.insert_before_multi_order,1),this.$append($$$($$("Rewriter"),"Action").$new(range.$begin(),content,!0,this.insert_before_multi_order))}),2),$def(self,"$insert_after",(function(range,content){return this.$append($$$($$("Rewriter"),"Action").$new(range.$end(),content))}),2),$def(self,"$insert_after_multi",(function(range,content){return this.insert_after_multi_order=$rb_plus(this.insert_after_multi_order,1),this.$append($$$($$("Rewriter"),"Action").$new(range.$end(),content,!0,this.insert_after_multi_order))}),2),$def(self,"$replace",(function(range,content){return this.$append($$$($$("Rewriter"),"Action").$new(range,content))}),2),$def(self,"$process",(function(){var source,adjustment=nil;return $truthy(this["$in_transaction?"]())&&this.$raise("Do not call "+this.$class()+"#process inside a transaction"),adjustment=0,source=this.source_buffer.$source().$dup(),$send(this.queue.$sort(),"each",[],(function(action){var begin_pos,end_pos,$writer;return null==action&&(action=nil),begin_pos=$rb_plus(action.$range().$begin_pos(),adjustment),end_pos=$rb_plus(begin_pos,action.$range().$length()),$writer=[Opal.Range.$new(begin_pos,end_pos,!0),action.$replacement()],$send(source,"[]=",$to_a($writer)),$rb_minus($writer.length,1),adjustment=$rb_plus(adjustment,$rb_minus(action.$replacement().$length(),action.$range().$length()))}),1),source}),0),$def(self,"$transaction",(function $$transaction(){var $yield=$$transaction.$$p||nil,self=this;return delete $$transaction.$$p,function(){try{return $yield===nil&&self.$raise(self.$class()+"#transaction requires block"),$truthy(self["$in_transaction?"]())&&self.$raise("Nested transaction is not supported"),self.pending_queue=self.queue.$dup(),self.pending_clobber=self.clobber,self.pending_insertions=self.insertions,Opal.yieldX($yield,[]),self.queue=self.pending_queue,self.clobber=self.pending_clobber,self.insertions=self.pending_insertions,self}finally{self.pending_queue=nil,self.pending_clobber=nil,self.pending_insertions=nil}}()}),0),self.$private(),$def(self,"$append",(function(action){var range=nil,conflicting=nil,adjacent=nil,insertions=nil;if(range=action.$range(),$truthy(range["$empty?"]())){if($truthy(action.$replacement()["$empty?"]()))return this;$not(action["$allow_multiple_insertions?"]())&&$truthy(conflicting=this["$clobbered_insertion?"](range))&&this.$raise_clobber_error(action,[conflicting]),this.$record_insertion(range),$truthy(adjacent=this["$adjacent_updates?"](range))?(conflicting=$send(adjacent,"find",[],(function $$3(a){var $ret_or_1,self=null==$$3.$$s?this:$$3.$$s;return null==a&&(a=nil),$truthy($ret_or_1=a.$range()["$overlaps?"](range))?self["$replace_compatible_with_insertion?"](a,action)["$!"]():$ret_or_1}),{$$arity:1,$$s:this}),$truthy(conflicting)&&this.$raise_clobber_error(action,[conflicting]),this["$merge_actions!"](action,adjacent)):this.$active_queue()["$<<"](action)}else $truthy(insertions=this["$adjacent_insertions?"](range))&&$send(insertions,"each",[],(function $$4(insertion){var self=null==$$4.$$s?this:$$4.$$s;return null==insertion&&(insertion=nil),$truthy(range["$overlaps?"](insertion.$range()))&&$not(self["$replace_compatible_with_insertion?"](action,insertion))?self.$raise_clobber_error(action,[insertion]):(action=self.$merge_actions(action,[insertion]),self.$active_queue().$delete(insertion))}),{$$arity:1,$$s:this}),$truthy(adjacent=this["$adjacent_updates?"](range))?$truthy(this["$can_merge?"](action,adjacent))?(this.$record_replace(range),this["$merge_actions!"](action,adjacent)):this.$raise_clobber_error(action,adjacent):(this.$record_replace(range),this.$active_queue()["$<<"](action));return this}),1),$def(self,"$record_insertion",(function(range){var $writer;return $writer=[this.$active_insertions()["$|"](1["$<<"](range.$begin_pos()))],$send(this,"active_insertions=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$record_replace",(function(range){var $writer;return $writer=[this.$active_clobber()["$|"](this.$clobbered_position_mask(range))],$send(this,"active_clobber=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$clobbered_position_mask",(function(range){return $rb_minus(1["$<<"](range.$size()),1)["$<<"](range.$begin_pos())}),1),$def(self,"$adjacent_position_mask",(function(range){return $rb_minus(1["$<<"]($rb_plus(range.$size(),2)),1)["$<<"]($rb_minus(range.$begin_pos(),1))}),1),$def(self,"$adjacent_insertion_mask",(function(range){return $rb_minus(1["$<<"]($rb_plus(range.$size(),1)),1)["$<<"](range.$begin_pos())}),1),$def(self,"$clobbered_insertion?",(function(insertion){var insertion_pos;return insertion_pos=insertion.$begin_pos(),$neqeq(this.$active_insertions()["$&"](1["$<<"](insertion_pos)),0)?$send(this.$active_queue(),"find",[],(function(a){var $ret_or_1;return null==a&&(a=nil),$truthy($ret_or_1=$rb_le(a.$range().$begin_pos(),insertion_pos))?$rb_le(insertion_pos,a.$range().$end_pos()):$ret_or_1}),1):nil}),1),$def(self,"$adjacent_insertions?",(function(range){var result=nil;return $neqeq(this.$active_insertions()["$&"](this.$adjacent_insertion_mask(range)),0)?(result=$send(this.$active_queue(),"select",[],(function $$8(a){var $ret_or_1,self=null==$$8.$$s?this:$$8.$$s;return null==a&&(a=nil),$truthy($ret_or_1=a.$range()["$empty?"]())?self["$adjacent?"](range,a.$range()):$ret_or_1}),{$$arity:1,$$s:this}),$truthy(result["$empty?"]())?nil:result):nil}),1),$def(self,"$adjacent_updates?",(function(range){return $neqeq(this.$active_clobber()["$&"](this.$adjacent_position_mask(range)),0)?$send(this.$active_queue(),"select",[],(function $$10(a){return null==a&&(a=nil),(null==$$10.$$s?this:$$10.$$s)["$adjacent?"](range,a.$range())}),{$$arity:1,$$s:this}):nil}),1),$def(self,"$replace_compatible_with_insertion?",(function(replace,insertion){var $ret_or_1,$ret_or_2,offset=nil;return $truthy($ret_or_1=$truthy($ret_or_2=$rb_ge($rb_minus(replace.$replacement().$length(),replace.$range().$size()),insertion.$range().$size()))?offset=$rb_minus(insertion.$range().$begin_pos(),replace.$range().$begin_pos()):$ret_or_2)?replace.$replacement()["$[]"](offset,insertion.$replacement().$length())["$=="](insertion.$replacement()):$ret_or_1}),2),$def(self,"$can_merge?",(function(action,existing){var range=nil;return range=action.$range(),$send(existing,"all?",[],(function(other){var repl1_offset,repl2_offset,repl1_length,repl2_length,replacement2,overlap=nil,replacement1=nil,$ret_or_1=nil;return null==other&&(other=nil),overlap=range.$intersect(other.$range()),!!$truthy(overlap["$nil?"]())||(repl1_offset=$rb_minus(overlap.$begin_pos(),range.$begin_pos()),repl2_offset=$rb_minus(overlap.$begin_pos(),other.$range().$begin_pos()),repl1_length=[$rb_minus(other.$range().$length(),repl2_offset),$rb_minus(other.$replacement().$length(),repl2_offset)].$max(),repl2_length=[$rb_minus(range.$length(),repl1_offset),$rb_minus(action.$replacement().$length(),repl1_offset)].$max(),replacement1=$truthy($ret_or_1=action.$replacement()["$[]"](repl1_offset,repl1_length))?$ret_or_1:"".$freeze(),replacement2=$truthy($ret_or_1=other.$replacement()["$[]"](repl2_offset,repl2_length))?$ret_or_1:"".$freeze(),replacement1["$=="](replacement2))}),1)}),2),$def(self,"$merge_actions",(function(action,existing){var range,actions=nil;return range=(actions=$send(existing.$push(action),"sort_by",[],(function(a){return null==a&&(a=nil),[a.$range().$begin_pos(),a.$range().$end_pos()]}),1)).$first().$range().$join($send(actions,"max_by",[],(function(a){return null==a&&(a=nil),a.$range().$end_pos()}),1).$range()),$$$($$("Rewriter"),"Action").$new(range,this.$merge_replacements(actions))}),2),$def(self,"$merge_actions!",(function(action,existing){var new_action;return new_action=this.$merge_actions(action,existing),this.$active_queue().$delete(action),this.$replace_actions(existing,new_action)}),2),$def(self,"$merge_replacements",(function(actions){var result=nil,prev_act=nil;return result="".$dup(),prev_act=nil,$send(actions,"each",[],(function(act){var prev_end=nil,offset=nil;return null==act&&(act=nil),$not(prev_act)||$truthy(act.$range()["$disjoint?"](prev_act.$range()))?result["$<<"](act.$replacement()):(prev_end=[$rb_plus(prev_act.$range().$begin_pos(),prev_act.$replacement().$length()),prev_act.$range().$end_pos()].$max(),offset=$rb_minus(prev_end,act.$range().$begin_pos()),$truthy($rb_lt(offset,act.$replacement().$size()))&&result["$<<"](act.$replacement()["$[]"](Opal.Range.$new(offset,-1,!1)))),prev_act=act}),1),result}),1),$def(self,"$replace_actions",(function(old,updated){return $send(old,"each",[],(function $$18(act){return null==act&&(act=nil),(null==$$18.$$s?this:$$18.$$s).$active_queue().$delete(act)}),{$$arity:1,$$s:this}),this.$active_queue()["$<<"](updated)}),2),$def(self,"$raise_clobber_error",(function(action,existing){var diagnostic=nil;return diagnostic=$$("Diagnostic").$new("error","invalid_action",$hash2(["action"],{action:action}),action.$range()),this.diagnostics.$process(diagnostic),diagnostic=$$("Diagnostic").$new("note","clobbered",$hash2(["action"],{action:existing["$[]"](0)}),existing["$[]"](0).$range()),this.diagnostics.$process(diagnostic),this.$raise($$("ClobberingError"),"Parser::Source::Rewriter detected clobbering")}),2),$def(self,"$in_transaction?",(function(){return this.pending_queue["$nil?"]()["$!"]()}),0),$def(self,"$active_queue",(function(){var $ret_or_1;return $truthy($ret_or_1=this.pending_queue)?$ret_or_1:this.queue}),0),$def(self,"$active_clobber",(function(){var $ret_or_1;return $truthy($ret_or_1=this.pending_clobber)?$ret_or_1:this.clobber}),0),$def(self,"$active_insertions",(function(){var $ret_or_1;return $truthy($ret_or_1=this.pending_insertions)?$ret_or_1:this.insertions}),0),$def(self,"$active_clobber=",(function(value){return $truthy(this.pending_clobber)?this.pending_clobber=value:this.clobber=value}),1),$def(self,"$active_insertions=",(function(value){return $truthy(this.pending_insertions)?this.pending_insertions=value:this.insertions=value}),1),$def(self,"$adjacent?",(function(range1,range2){var $ret_or_1;return $truthy($ret_or_1=$rb_le(range1.$begin_pos(),range2.$end_pos()))?$rb_le(range2.$begin_pos(),range1.$end_pos()):$ret_or_1}),2),$const_set($nesting[0],"DEPRECATION_WARNING",["Parser::Source::Rewriter is deprecated.","Please update your code to use Parser::Source::TreeRewriter instead"].$join("\n").$freeze()),self.$extend($$("Deprecation"))}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/rewriter/action"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$eqeq=Opal.eqeq;return Opal.add_stubs("include,attr_reader,alias_method,freeze,<=>,begin_pos,range,zero?,order,empty?,==,length,inspect"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Action"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.replacement=$proto.range=nil,self.$include($$("Comparable")),self.$attr_reader("range","replacement","allow_multiple_insertions","order"),self.$alias_method("allow_multiple_insertions?","allow_multiple_insertions"),$def(self,"$initialize",(function(range,replacement,allow_multiple_insertions,order){return null==replacement&&(replacement=""),null==allow_multiple_insertions&&(allow_multiple_insertions=!1),null==order&&(order=0),this.range=range,this.replacement=replacement,this.allow_multiple_insertions=allow_multiple_insertions,this.order=order,this.$freeze()}),-2),$def(self,"$<=>",(function(other){var result=nil;return result=this.$range().$begin_pos()["$<=>"](other.$range().$begin_pos()),$truthy(result["$zero?"]())?this.$order()["$<=>"](other.$order()):result}),1),$def(self,"$to_s",(function(){return $eqeq(this.range.$length(),0)&&$truthy(this.replacement["$empty?"]())?"do nothing":$eqeq(this.range.$length(),0)?"insert "+this.replacement.$inspect():$truthy(this.replacement["$empty?"]())?"remove "+this.range.$length()+" character(s)":"replace "+this.range.$length()+" character(s) with "+this.replacement.$inspect()}),0)}(Opal.$r($nesting)("Rewriter"),0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/tree_rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$lambda=Opal.lambda,$gvars=Opal.gvars,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$const_set=Opal.const_set,$eqeqeq=Opal.eqeqeq,$range=Opal.range,$to_ary=Opal.to_ary,$rb_gt=(Opal.hash,Opal.rb_gt),$rb_lt=Opal.rb_lt,$slice=Opal.slice;return Opal.add_stubs("attr_reader,new,puts,render,consumer=,-,freeze,check_policy_validity,method,adjust,source_range,empty?,==,source_buffer,raise,combine,action_root,merge!,dup,contract,+,begin_pos,range,end_pos,check_range_validity,moved,to_s,replace,wrap,source,each,ordered_replacements,<<,[],length,join,nested_actions,class,name,action_summary,warn_of_deprecation,insert_before,insert_after,extend,protected,private,as_replacements,===,size,first,map,to_range,inspect,values,>,<,trigger_policy,process"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"TreeRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.diagnostics=$proto.source_buffer=$proto.enforcer=$proto.action_root=$proto.in_transaction=$proto.policy=nil,self.$attr_reader("source_buffer"),self.$attr_reader("diagnostics"),$def(self,"$initialize",(function(source_buffer,$kwargs){var crossing_deletions,different_replacements,swallowed_insertions,$writer,all_encompassing_range;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(crossing_deletions=$kwargs.$$smap.crossing_deletions)&&(crossing_deletions="accept"),null==(different_replacements=$kwargs.$$smap.different_replacements)&&(different_replacements="accept"),null==(swallowed_insertions=$kwargs.$$smap.swallowed_insertions)&&(swallowed_insertions="accept"),this.diagnostics=$$$($$("Diagnostic"),"Engine").$new(),$writer=[$lambda((function(diag){return null==$gvars.stderr&&($gvars.stderr=nil),null==diag&&(diag=nil),$gvars.stderr.$puts(diag.$render())}),1)],$send(this.diagnostics,"consumer=",$to_a($writer)),$rb_minus($writer.length,1),this.source_buffer=source_buffer,this.in_transaction=!1,this.policy=$hash2(["crossing_deletions","different_replacements","swallowed_insertions"],{crossing_deletions:crossing_deletions,different_replacements:different_replacements,swallowed_insertions:swallowed_insertions}).$freeze(),this.$check_policy_validity(),this.enforcer=this.$method("enforce_policy"),all_encompassing_range=this.source_buffer.$source_range().$adjust($hash2(["begin_pos","end_pos"],{begin_pos:-1,end_pos:1})),this.action_root=$$$($$("TreeRewriter"),"Action").$new(all_encompassing_range,this.enforcer)}),-2),$def(self,"$empty?",(function(){return this.action_root["$empty?"]()}),0),$def(self,"$merge!",(function(with$){return $eqeq(this.$source_buffer(),with$.$source_buffer())||this.$raise("TreeRewriter are not for the same source_buffer"),this.action_root=this.action_root.$combine(with$.$action_root()),this}),1),$def(self,"$merge",(function(with$){return this.$dup()["$merge!"](with$)}),1),$def(self,"$import!",(function(foreign_rewriter,$kwargs){var offset,merge_effective_range,merge_with,contracted=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(offset=$kwargs.$$smap.offset)&&(offset=0),$truthy(foreign_rewriter["$empty?"]())||(contracted=foreign_rewriter.$action_root().$contract(),merge_effective_range=$$$($$$($$$("Parser"),"Source"),"Range").$new(this.source_buffer,$rb_plus(contracted.$range().$begin_pos(),offset),$rb_plus(contracted.$range().$end_pos(),offset)),this.$check_range_validity(merge_effective_range),merge_with=contracted.$moved(this.source_buffer,offset),this.action_root=this.action_root.$combine(merge_with)),this}),-2),$def(self,"$replace",(function(range,content){return this.$combine(range,$hash2(["replacement"],{replacement:content}))}),2),$def(self,"$wrap",(function(range,insert_before,insert_after){return this.$combine(range,$hash2(["insert_before","insert_after"],{insert_before:insert_before.$to_s(),insert_after:insert_after.$to_s()}))}),3),$def(self,"$remove",(function(range){return this.$replace(range,"".$freeze())}),1),$def(self,"$insert_before",(function(range,content){return this.$wrap(range,content,nil)}),2),$def(self,"$insert_after",(function(range,content){return this.$wrap(range,nil,content)}),2),$def(self,"$process",(function(){var source=nil,chunks=nil,last_end=nil;return source=this.source_buffer.$source(),chunks=[],last_end=0,$send(this.action_root.$ordered_replacements(),"each",[],(function(range,replacement){return null==range&&(range=nil),null==replacement&&(replacement=nil),chunks["$<<"](source["$[]"](Opal.Range.$new(last_end,range.$begin_pos(),!0)))["$<<"](replacement),last_end=range.$end_pos()}),2),chunks["$<<"](source["$[]"](Opal.Range.$new(last_end,source.$length(),!0))),chunks.$join()}),0),$def(self,"$as_replacements",(function(){return this.action_root.$ordered_replacements()}),0),$def(self,"$as_nested_actions",(function(){return this.action_root.$nested_actions()}),0),$def(self,"$transaction",(function $$transaction(){var $yield=$$transaction.$$p||nil,self=this,previous=nil,restore_root=nil;return delete $$transaction.$$p,function(){try{return $yield===nil&&self.$raise(self.$class()+"#transaction requires block"),previous=self.in_transaction,self.in_transaction=!0,restore_root=self.action_root,Opal.yieldX($yield,[]),restore_root=nil,self}finally{$truthy(restore_root)&&(self.action_root=restore_root),self.in_transaction=previous}}()}),0),$def(self,"$in_transaction?",(function(){return this.in_transaction}),0),$def(self,"$inspect",(function(){return"#<"+this.$class()+" "+this.$source_buffer().$name()+": "+this.$action_summary()+">"}),0),$def(self,"$insert_before_multi",(function(range,text){return this.$class().$warn_of_deprecation(),this.$insert_before(range,text)}),2),$def(self,"$insert_after_multi",(function(range,text){return this.$class().$warn_of_deprecation(),this.$insert_after(range,text)}),2),$const_set($nesting[0],"DEPRECATION_WARNING",["TreeRewriter#insert_before_multi and insert_before_multi exist only for legacy compatibility.","Please update your code to use `wrap`, `insert_before` or `insert_after` instead."].$join("\n").$freeze()),self.$extend($$("Deprecation")),self.$protected(),self.$attr_reader("action_root"),self.$private(),$def(self,"$action_summary",(function(){var $ret_or_1,replacements=nil,suffix=nil,parts=nil;return replacements=this.$as_replacements(),$eqeqeq(0,$ret_or_1=replacements.$size())?"empty":($eqeqeq($range(1,3,!1),$ret_or_1)||(replacements=replacements.$first(3),suffix="…"),parts=$send(replacements,"map",[],(function($mlhs_tmp1){var $a,range=nil,str=nil;return null==$mlhs_tmp1&&($mlhs_tmp1=nil),range=null==($a=$to_ary($mlhs_tmp1))[0]?nil:$a[0],str=null==$a[1]?nil:$a[1],$truthy(str["$empty?"]())?"-"+range.$to_range():$eqeq(range.$size(),0)?"+"+str.$inspect()+"@"+range.$begin_pos():"^"+str.$inspect()+"@"+range.$to_range()}),{$$arity:1,$$has_top_level_mlhs_arg:!0}),$truthy(suffix)&&parts["$<<"](suffix),parts.$join(", "))}),0),$const_set($nesting[0],"ACTIONS",["accept","warn","raise"].$freeze()),$def(self,"$check_policy_validity",(function(){var invalid=nil;return invalid=$rb_minus(this.policy.$values(),$$("ACTIONS")),$truthy(invalid["$empty?"]())?nil:this.$raise($$("ArgumentError"),"Invalid policy: "+invalid.$join(", "))}),0),$def(self,"$combine",(function(range,attributes){var action;return range=this.$check_range_validity(range),action=$$$($$("TreeRewriter"),"Action").$new(range,this.enforcer,Opal.to_hash(attributes)),this.action_root=this.action_root.$combine(action),this}),2),$def(self,"$check_range_validity",(function(range){return($truthy($rb_lt(range.$begin_pos(),0))||$truthy($rb_gt(range.$end_pos(),this.source_buffer.$source().$size())))&&this.$raise($$("IndexError"),"The range "+range.$to_range()+" is outside the bounds of the source"),range}),1),$def(self,"$enforce_policy",(function $$enforce_policy(event){var values,$yield=$$enforce_policy.$$p||nil;return delete $$enforce_policy.$$p,$eqeq(this.policy["$[]"](event),"accept")?nil:$truthy(values=Opal.yieldX($yield,[]))?this.$trigger_policy(event,Opal.to_hash(values)):nil}),1),$const_set($nesting[0],"POLICY_TO_LEVEL",$hash2(["warn","raise"],{warn:"warning",raise:"error"}).$freeze()),$def(self,"$trigger_policy",(function(event,$kwargs){var range,conflict,arguments$,$a,action,$ret_or_1,diag=nil,highlights=nil;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(range=$kwargs.$$smap.range)&&(range=this.$raise()),null==(conflict=$kwargs.$$smap.conflict)&&(conflict=nil),arguments$=Opal.kwrestargs($kwargs,{range:!0,conflict:!0}),action=$truthy($ret_or_1=this.policy["$[]"](event))?$ret_or_1:"raise",diag=$$$($$("Parser"),"Diagnostic").$new($$("POLICY_TO_LEVEL")["$[]"](action),event,arguments$,range),this.diagnostics.$process(diag),$truthy(conflict)&&(range=null==($a=$to_ary(conflict))[0]?nil:$a[0],highlights=$slice.call($a,1),diag=$$$($$("Parser"),"Diagnostic").$new($$("POLICY_TO_LEVEL")["$[]"](action),event+"_conflict",arguments$,range,highlights),this.diagnostics.$process(diag)),$eqeq(action,"raise")?this.$raise($$$($$("Parser"),"ClobberingError"),"Parser::Source::TreeRewriter detected clobbering"):nil}),-2)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/tree_rewriter/action"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$not=Opal.not,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$rb_gt=Opal.rb_gt,$rb_minus=Opal.rb_minus,$rb_ge=Opal.rb_ge,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_lt=Opal.rb_lt,$neqeq=Opal.neqeq;return Opal.add_stubs("attr_reader,freeze,empty?,do_combine,==,<<,begin,concat,flat_map,to_proc,end,!,insert_before,insert_after,replacement,raise,insertion?,with,begin_pos,range,first,children,end_pos,last,new,+,map,moved,protected,swallow,class,merge,place_in_hierarchy,analyse_hierarchy,[],fuse_deletions,combine_children,inject,size,bsearch,bsearch_child_index,>,-,>=,===,<=>,<=,check_fusible,<,shift,pop,compact!,each,call,call_enforcer_for_merge,!=,select"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting);return function($base,$super){var self=$klass($base,null,"Action"),$proto=self.$$prototype;return $proto.insert_before=$proto.insert_after=$proto.children=$proto.replacement=$proto.range=$proto.enforcer=nil,self.$attr_reader("range","replacement","insert_before","insert_after"),$def(self,"$initialize",(function(range,enforcer,$kwargs){var insert_before,replacement,insert_after,children,$a;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(insert_before=$kwargs.$$smap.insert_before)&&(insert_before=""),null==(replacement=$kwargs.$$smap.replacement)&&(replacement=nil),null==(insert_after=$kwargs.$$smap.insert_after)&&(insert_after=""),null==(children=$kwargs.$$smap.children)&&(children=[]),$a=[range,enforcer,children.$freeze(),insert_before.$freeze(),replacement,insert_after.$freeze()],this.range=$a[0],this.enforcer=$a[1],this.children=$a[2],this.insert_before=$a[3],this.replacement=$a[4],this.insert_after=$a[5],this.$freeze()}),-3),$def(self,"$combine",(function(action){return $truthy(action["$empty?"]())?this:this.$do_combine(action)}),1),$def(self,"$empty?",(function(){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.insert_before["$empty?"]())?this.insert_after["$empty?"]():$ret_or_3)?this.children["$empty?"]():$ret_or_2)?$truthy($ret_or_2=this.replacement["$=="](nil))?$ret_or_2:$truthy($ret_or_3=this.replacement["$empty?"]())?this.range["$empty?"]():$ret_or_3:$ret_or_1}),0),$def(self,"$ordered_replacements",(function(){var reps=nil;return reps=[],$truthy(this.insert_before["$empty?"]())||reps["$<<"]([this.range.$begin(),this.insert_before]),$truthy(this.replacement)&&reps["$<<"]([this.range,this.replacement]),reps.$concat($send(this.children,"flat_map",[],"ordered_replacements".$to_proc())),$truthy(this.insert_after["$empty?"]())||reps["$<<"]([this.range.$end(),this.insert_after]),reps}),0),$def(self,"$nested_actions",(function(){var actions=nil;return actions=[],($not(this.insert_before["$empty?"]())||$not(this.insert_after["$empty?"]()))&&actions["$<<"](["wrap",this.range,this.insert_before,this.insert_after]),$truthy(this.replacement)&&actions["$<<"](["replace",this.range,this.replacement]),actions.$concat($send(this.children,"flat_map",[],"nested_actions".$to_proc()))}),0),$def(self,"$insertion?",(function(){var $ret_or_1,$ret_or_2=nil;return $truthy($ret_or_1=$truthy($ret_or_2=this.$insert_before()["$empty?"]()["$!"]())?$ret_or_2:this.$insert_after()["$empty?"]()["$!"]())?$ret_or_1:$truthy($ret_or_2=this.$replacement())?this.$replacement()["$empty?"]()["$!"]():$ret_or_2}),0),$def(self,"$contract",(function(){var range;return $truthy(this["$empty?"]())&&this.$raise("Empty actions can not be contracted"),$truthy(this["$insertion?"]())?this:(range=this.range.$with($hash2(["begin_pos","end_pos"],{begin_pos:this.$children().$first().$range().$begin_pos(),end_pos:this.$children().$last().$range().$end_pos()})),this.$with($hash2(["range"],{range:range})))}),0),$def(self,"$moved",(function(source_buffer,offset){var moved_range;return moved_range=$$$($$$($$$("Parser"),"Source"),"Range").$new(source_buffer,$rb_plus(this.range.$begin_pos(),offset),$rb_plus(this.range.$end_pos(),offset)),this.$with($hash2(["range","children"],{range:moved_range,children:$send(this.$children(),"map",[],(function(child){return null==child&&(child=nil),child.$moved(source_buffer,offset)}),1)}))}),2),self.$protected(),self.$attr_reader("children"),$def(self,"$with",(function($kwargs){var range,enforcer,children,insert_before,replacement,insert_after;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(range=$kwargs.$$smap.range)&&(range=this.range),null==(enforcer=$kwargs.$$smap.enforcer)&&(enforcer=this.enforcer),null==(children=$kwargs.$$smap.children)&&(children=this.children),null==(insert_before=$kwargs.$$smap.insert_before)&&(insert_before=this.insert_before),null==(replacement=$kwargs.$$smap.replacement)&&(replacement=this.replacement),null==(insert_after=$kwargs.$$smap.insert_after)&&(insert_after=this.insert_after),$truthy(replacement)&&(children=this.$swallow(children)),this.$class().$new(range,enforcer,$hash2(["children","insert_before","replacement","insert_after"],{children:children,insert_before:insert_before,replacement:replacement,insert_after:insert_after}))}),-1),$def(self,"$do_combine",(function(action){return $eqeq(action.$range(),this.range)?this.$merge(action):this.$place_in_hierarchy(action)}),1),$def(self,"$place_in_hierarchy",(function(action){var family=nil,extra_sibbling=nil;return family=this.$analyse_hierarchy(action),$truthy(family["$[]"]("fusible"))?this.$fuse_deletions(action,family["$[]"]("fusible"),[].concat($to_a(family["$[]"]("sibbling_left"))).concat($to_a(family["$[]"]("child"))).concat($to_a(family["$[]"]("sibbling_right")))):(extra_sibbling=$truthy(family["$[]"]("parent"))?family["$[]"]("parent").$do_combine(action):$truthy(family["$[]"]("child"))?action.$with($hash2(["children","enforcer"],{children:family["$[]"]("child"),enforcer:this.enforcer})).$combine_children(action.$children()):action,this.$with($hash2(["children"],{children:[].concat($to_a(family["$[]"]("sibbling_left"))).concat([extra_sibbling]).concat($to_a(family["$[]"]("sibbling_right")))})))}),1),$def(self,"$combine_children",(function(more_children){return $send(more_children,"inject",[this],(function(parent,new_child){return null==parent&&(parent=nil),null==new_child&&(new_child=nil),parent.$place_in_hierarchy(new_child)}),2)}),1),$def(self,"$fuse_deletions",(function(action,fusible,other_sibblings){var fused_range,fused_deletion,without_fusible=nil;return without_fusible=this.$with($hash2(["children"],{children:other_sibblings})),fused_range=$send([action].concat($to_a(fusible)),"map",[],"range".$to_proc()).$inject("join"),fused_deletion=action.$with($hash2(["range"],{range:fused_range})),without_fusible.$do_combine(fused_deletion)}),3),$def(self,"$bsearch_child_index",(function $$bsearch_child_index(from){var size,$ret_or_1,$yield=$$bsearch_child_index.$$p||nil;return delete $$bsearch_child_index.$$p,null==from&&(from=0),size=this.children.$size(),$truthy($ret_or_1=$send(Opal.Range.$new(from,size,!0),"bsearch",[],(function $$6(i){var self=null==$$6.$$s?this:$$6.$$s;return null==self.children&&(self.children=nil),null==i&&(i=nil),Opal.yield1($yield,self.children["$[]"](i))}),{$$arity:1,$$s:this}))?$ret_or_1:size}),-1),$def(self,"$analyse_hierarchy",(function(action){var start,center,$ret_or_1,r=nil,left_index=nil,right_index=nil,parent=nil,overlap_left=nil,overlap_right=nil,contained=nil,fusible=nil;return r=action.$range(),left_index=$send(this,"bsearch_child_index",[],(function(child){return null==child&&(child=nil),$rb_gt(child.$range().$end_pos(),r.$begin_pos())}),1),start=$eqeq(left_index,0)?0:$rb_minus(left_index,1),right_index=$send(this,"bsearch_child_index",[start],(function(child){return null==child&&(child=nil),$rb_ge(child.$range().$begin_pos(),r.$end_pos())}),1),center=$rb_minus(right_index,left_index),$eqeqeq(0,$ret_or_1=center)||($eqeqeq(-1,$ret_or_1)?(left_index=$rb_minus(left_index,1),right_index=$rb_plus(right_index,1),parent=this.children["$[]"](left_index)):(overlap_left=this.children["$[]"](left_index).$range().$begin_pos()["$<=>"](r.$begin_pos()),overlap_right=this.children["$[]"]($rb_minus(right_index,1)).$range().$end_pos()["$<=>"](r.$end_pos()),$eqeq(center,1)&&$truthy($rb_le(overlap_left,0))&&$truthy($rb_ge(overlap_right,0))?parent=this.children["$[]"](left_index):(contained=this.children["$[]"](Opal.Range.$new(left_index,right_index,!0)),fusible=this.$check_fusible(action,$truthy($rb_lt(overlap_left,0))?contained.$shift():nil,$truthy($rb_gt(overlap_right,0))?contained.$pop():nil)))),$hash2(["parent","sibbling_left","sibbling_right","fusible","child"],{parent:parent,sibbling_left:this.children["$[]"](Opal.Range.$new(0,left_index,!0)),sibbling_right:this.children["$[]"](Opal.Range.$new(right_index,this.children.$size(),!0)),fusible:fusible,child:contained})}),1),$def(self,"$check_fusible",(function(action,$a){var fusible,self=this;return(fusible=Opal.slice.call(arguments,1))["$compact!"](),$truthy(fusible["$empty?"]())?nil:($send(fusible,"each",[],(function $$9(child){var kind,self=null==$$9.$$s?this:$$9.$$s;return null==self.enforcer&&(self.enforcer=nil),null==child&&(child=nil),kind=$truthy(action["$insertion?"]())||$truthy(child["$insertion?"]())?"crossing_insertions":"crossing_deletions",$send(self.enforcer,"call",[kind],(function(){return $hash2(["range","conflict"],{range:action.$range(),conflict:child.$range()})}),0)}),{$$arity:1,$$s:self}),fusible)}),-2),$def(self,"$merge",(function(action){var $ret_or_1;return this.$call_enforcer_for_merge(action),this.$with($hash2(["insert_before","replacement","insert_after"],{insert_before:""+action.$insert_before()+this.$insert_before(),replacement:$truthy($ret_or_1=action.$replacement())?$ret_or_1:this.replacement,insert_after:""+this.$insert_after()+action.$insert_after()})).$combine_children(action.$children())}),1),$def(self,"$call_enforcer_for_merge",(function(action){return $send(this.enforcer,"call",["different_replacements"],(function $$11(){var self=null==$$11.$$s?this:$$11.$$s;return null==self.replacement&&(self.replacement=nil),null==self.range&&(self.range=nil),$truthy(self.replacement)&&$truthy(action.$replacement())&&$neqeq(self.replacement,action.$replacement())?$hash2(["range","replacement","other_replacement"],{range:self.range,replacement:action.$replacement(),other_replacement:self.replacement}):nil}),{$$arity:0,$$s:this})}),1),$def(self,"$swallow",(function(children){return $send(this.enforcer,"call",["swallowed_insertions"],(function $$12(){var self=null==$$12.$$s?this:$$12.$$s,insertions=nil;return null==self.range&&(self.range=nil),insertions=$send(children,"select",[],"insertion?".$to_proc()),$truthy(insertions["$empty?"]())?nil:$hash2(["range","conflict"],{range:self.range,conflict:$send(insertions,"map",[],"range".$to_proc())})}),{$$arity:0,$$s:this}),[]}),1)}(Opal.$r($nesting)("TreeRewriter"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super,$send=Opal.send,$truthy=Opal.truthy,$hash2=Opal.hash2,$eqeq=Opal.eqeq,$range=Opal.range,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus;return Opal.add_stubs("attr_reader,freeze,line,alias_method,column,last_line,last_column,with,update_expression,==,class,reduce,map,instance_variables,instance_variable_get,send,inject,to_sym,[],[]=,-,protected,tap,dup,to_proc"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,null,"Map"),$proto=self.$$prototype;return $proto.node=$proto.expression=nil,self.$attr_reader("node"),self.$attr_reader("expression"),$def(self,"$initialize",(function(expression){return this.expression=expression}),1),$def(self,"$initialize_copy",(function $$initialize_copy(other){var $yield=$$initialize_copy.$$p||nil;return delete $$initialize_copy.$$p,$send2(this,$find_super(this,"initialize_copy",$$initialize_copy,!1,!0),"initialize_copy",[other],$yield),this.node=nil}),1),$def(self,"$node=",(function(node){return this.node=node,this.$freeze(),this.node}),1),$def(self,"$line",(function(){return this.expression.$line()}),0),self.$alias_method("first_line","line"),$def(self,"$column",(function(){return this.expression.$column()}),0),$def(self,"$last_line",(function(){return this.expression.$last_line()}),0),$def(self,"$last_column",(function(){return this.expression.$last_column()}),0),$def(self,"$with_expression",(function(expression_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_expression(expression_l)}),1)}),1),$def(self,"$==",(function(other){var $ret_or_1;return $truthy($ret_or_1=other.$class()["$=="](this.$class()))?$send(this.$instance_variables(),"map",[],(function $$4(ivar){return null==ivar&&(ivar=nil),(null==$$4.$$s?this:$$4.$$s).$instance_variable_get(ivar)["$=="](other.$send("instance_variable_get",ivar))}),{$$arity:1,$$s:this}).$reduce("&"):$ret_or_1}),1),$def(self,"$to_hash",(function(){return $send(this.$instance_variables(),"inject",[$hash2([],{})],(function $$5(hash,ivar){var $writer,self=null==$$5.$$s?this:$$5.$$s;return null==hash&&(hash=nil),null==ivar&&(ivar=nil),$eqeq(ivar.$to_sym(),"@node")||($writer=[ivar["$[]"]($range(1,-1,!1)).$to_sym(),self.$instance_variable_get(ivar)],$send(hash,"[]=",$to_a($writer)),$rb_minus($writer.length,1)),hash}),{$$arity:2,$$s:this})}),0),self.$protected(),$def(self,"$with",(function $Map_with$6(){var block=$Map_with$6.$$p||nil;return delete $Map_with$6.$$p,$send(this.$dup(),"tap",[],block.$to_proc())}),0),$def(self,"$update_expression",(function(expression_l){return this.expression=expression_l}),1)}([$module($base,"Source")].concat($parent_nesting)[0])}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/operator"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Operator");return self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(operator,expression){return delete $$initialize.$$p,this.operator=operator,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression],null)}),2)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/collection"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Collection");return self.$attr_reader("begin"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),3)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/constant"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Constant");return self.$attr_reader("double_colon"),self.$attr_reader("name"),self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(double_colon,name,expression){var $a;return delete $$initialize.$$p,$a=[double_colon,name],this.double_colon=$a[0],this.name=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression],null)}),3),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/variable"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Variable");return self.$attr_reader("name"),self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(name_l,expression_l){return delete $$initialize.$$p,null==expression_l&&(expression_l=name_l),this.name=name_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),-2),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/keyword"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Keyword");return self.$attr_reader("keyword"),self.$attr_reader("begin"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(keyword_l,begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,this.keyword=keyword_l,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/definition"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader,join"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Definition"),$proto=self.$$prototype;return $proto.keyword=$proto.end=nil,self.$attr_reader("keyword"),self.$attr_reader("operator"),self.$attr_reader("name"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(keyword_l,operator_l,name_l,end_l){return delete $$initialize.$$p,this.keyword=keyword_l,this.operator=operator_l,this.name=name_l,this.end=end_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[this.keyword.$join(this.end)],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/method_definition"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("attr_reader,join"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"MethodDefinition");return self.$$prototype.keyword=nil,self.$attr_reader("keyword"),self.$attr_reader("operator"),self.$attr_reader("name"),self.$attr_reader("end"),self.$attr_reader("assignment"),$def(self,"$initialize",(function $$initialize(keyword_l,operator_l,name_l,end_l,assignment_l,body_l){var $ret_or_1;return delete $$initialize.$$p,this.keyword=keyword_l,this.operator=operator_l,this.name=name_l,this.end=end_l,this.assignment=assignment_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[this.keyword.$join($truthy($ret_or_1=end_l)?$ret_or_1:body_l)],null)}),6)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/send"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Send");return self.$attr_reader("dot"),self.$attr_reader("selector"),self.$attr_reader("operator"),self.$attr_reader("begin"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(dot_l,selector_l,begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,this.dot=dot_l,this.selector=selector_l,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),5),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/index"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("attr_reader,with,update_operator,protected"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Index");return self.$attr_reader("begin"),self.$attr_reader("end"),self.$attr_reader("operator"),$def(self,"$initialize",(function $$initialize(begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],this.operator=nil,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),3),$def(self,"$with_operator",(function(operator_l){return $send(this,"with",[],(function(map){return null==map&&(map=nil),map.$update_operator(operator_l)}),1)}),1),self.$protected(),$def(self,"$update_operator",(function(operator_l){return this.operator=operator_l}),1)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/condition"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Condition");return self.$attr_reader("keyword"),self.$attr_reader("begin"),self.$attr_reader("else"),self.$attr_reader("end"),$def(self,"$initialize",(function $$initialize(keyword_l,begin_l,else_l,end_l,expression_l){var $a;return delete $$initialize.$$p,this.keyword=keyword_l,$a=[begin_l,else_l,end_l],this.begin=$a[0],this.else=$a[1],this.end=$a[2],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),5)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/ternary"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Ternary");return self.$attr_reader("question"),self.$attr_reader("colon"),$def(self,"$initialize",(function $$initialize(question_l,colon_l,expression_l){var $a;return delete $$initialize.$$p,$a=[question_l,colon_l],this.question=$a[0],this.colon=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),3)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/for"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"For");return self.$attr_reader("keyword","in"),self.$attr_reader("begin","end"),$def(self,"$initialize",(function $$initialize(keyword_l,in_l,begin_l,end_l,expression_l){var $a;return delete $$initialize.$$p,$a=[keyword_l,in_l],this.keyword=$a[0],this.in=$a[1],$a=[begin_l,end_l],this.begin=$a[0],this.end=$a[1],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),5)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/rescue_body"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"RescueBody");return self.$attr_reader("keyword"),self.$attr_reader("assoc"),self.$attr_reader("begin"),$def(self,"$initialize",(function $$initialize(keyword_l,assoc_l,begin_l,expression_l){return delete $$initialize.$$p,this.keyword=keyword_l,this.assoc=assoc_l,this.begin=begin_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/heredoc"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Heredoc");return self.$attr_reader("heredoc_body"),self.$attr_reader("heredoc_end"),$def(self,"$initialize",(function $$initialize(begin_l,body_l,end_l){return delete $$initialize.$$p,this.heredoc_body=body_l,this.heredoc_end=end_l,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[begin_l],null)}),3)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/source/map/objc_kwarg"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Source")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ObjcKwarg");return self.$attr_reader("keyword"),self.$attr_reader("operator"),self.$attr_reader("argument"),$def(self,"$initialize",(function $$initialize(keyword_l,operator_l,argument_l,expression_l){var $a;return delete $$initialize.$$p,$a=[keyword_l,operator_l,argument_l],this.keyword=$a[0],this.operator=$a[1],this.argument=$a[2],$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[expression_l],null)}),4)}($$("Map"),$$("Map"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["parser/syntax_error"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def;return Opal.add_stubs("attr_reader,message"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"SyntaxError");return self.$attr_reader("diagnostic"),$def(self,"$initialize",(function $$initialize(diagnostic){return delete $$initialize.$$p,this.diagnostic=diagnostic,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[diagnostic.$message()],null)}),1)}($nesting[0],$$("StandardError"))}($nesting[0],$nesting)},Opal.modules["parser/clobbering_error"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass;return function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return $klass($nesting[0],$$("RuntimeError"),"ClobberingError"),nil}($nesting[0],$nesting)},Opal.modules["parser/diagnostic"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$truthy=Opal.truthy,$hash2=Opal.hash2,$def=Opal.def,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$to_ary=Opal.to_ary,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$send=Opal.send,$to_a=Opal.to_a,$rb_ge=Opal.rb_ge,$not=Opal.not,$neqeq=Opal.neqeq;return Opal.add_stubs("freeze,attr_reader,include?,raise,join,inspect,dup,compile,is?,==,line,last_line,+,message,render_line,first_line_only,last_line_only,-,source_buffer,decompose_position,end_pos,>,private,source_line,*,length,each,line_range,intersect,column_range,size,[]=,>=,!,map,name,!=,resize,=~,source,adjust"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Diagnostic"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.reason=$proto.arguments=$proto.location=$proto.level=$proto.highlights=nil,$const_set($nesting[0],"LEVELS",["note","warning","error","fatal"].$freeze()),self.$attr_reader("level","reason","arguments"),self.$attr_reader("location","highlights"),$def(self,"$initialize",(function(level,reason,arguments$,location,highlights){var $ret_or_1;return null==highlights&&(highlights=[]),$truthy($$("LEVELS")["$include?"](level))||this.$raise($$("ArgumentError"),"Diagnostic#level must be one of "+$$("LEVELS").$join(", ")+"; "+level.$inspect()+" provided."),$truthy(location)||this.$raise("Expected a location"),this.level=level,this.reason=reason,this.arguments=($truthy($ret_or_1=arguments$)?$ret_or_1:$hash2([],{})).$dup().$freeze(),this.location=location,this.highlights=highlights.$dup().$freeze(),this.$freeze()}),-5),$def(self,"$message",(function(){return $$("Messages").$compile(this.reason,this.arguments)}),0),$def(self,"$render",(function(){var $a,$b,first_line=nil,last_line=nil,num_lines=nil,last_lineno=nil,last_column=nil;return $eqeq(this.location.$line(),this.location.$last_line())||$truthy(this.location["$is?"]("\n"))?$rb_plus([this.location+": "+this.level+": "+this.$message()],this.$render_line(this.location)):(first_line=this.$first_line_only(this.location),last_line=this.$last_line_only(this.location),num_lines=$rb_plus($rb_minus(this.location.$last_line(),this.location.$line()),1),$b=this.location.$source_buffer().$decompose_position(this.location.$end_pos()),last_lineno=null==($a=$to_ary($b))[0]?nil:$a[0],last_column=null==$a[1]?nil:$a[1],$rb_plus($rb_plus([this.location+"-"+last_lineno+":"+last_column+": "+this.level+": "+this.$message()],this.$render_line(first_line,$rb_gt(num_lines,2),!1)),this.$render_line(last_line,!1,!0)))}),0),self.$private(),$def(self,"$render_line",(function(range,ellipsis,range_end){var source_line=nil,highlight_line=nil,$writer=nil;return null==ellipsis&&(ellipsis=!1),null==range_end&&(range_end=!1),source_line=range.$source_line(),highlight_line=$rb_times(" ",source_line.$length()),$send(this.highlights,"each",[],(function(highlight){var line_range,$writer=nil;return null==highlight&&(highlight=nil),line_range=range.$source_buffer().$line_range(range.$line()),$truthy(highlight=highlight.$intersect(line_range))?($writer=[highlight.$column_range(),$rb_times("~",highlight.$size())],$send(highlight_line,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),1),$truthy(range["$is?"]("\n"))?highlight_line=$rb_plus(highlight_line,"^"):$not(range_end)&&$truthy($rb_ge(range.$size(),1))?($writer=[range.$column_range(),$rb_plus("^",$rb_times("~",$rb_minus(range.$size(),1)))],$send(highlight_line,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):($writer=[range.$column_range(),$rb_times("~",range.$size())],$send(highlight_line,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy(ellipsis)&&(highlight_line=$rb_plus(highlight_line,"...")),$send([source_line,highlight_line],"map",[],(function(line){return null==line&&(line=nil),range.$source_buffer().$name()+":"+range.$line()+": "+line}),1)}),-2),$def(self,"$first_line_only",(function(range){return $neqeq(range.$line(),range.$last_line())?range.$resize(range.$source()["$=~"](/\n/)):range}),1),$def(self,"$last_line_only",(function(range){return $neqeq(range.$line(),range.$last_line())?range.$adjust($hash2(["begin_pos"],{begin_pos:range.$source()["$=~"](/[^\n]*$/)})):range}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/diagnostic/engine"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("attr_accessor,ignore?,call,raise?,raise,protected,==,level"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Engine"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.consumer=$proto.ignore_warnings=$proto.all_errors_are_fatal=nil,self.$attr_accessor("consumer"),self.$attr_accessor("all_errors_are_fatal"),self.$attr_accessor("ignore_warnings"),$def(self,"$initialize",(function(consumer){return null==consumer&&(consumer=nil),this.consumer=consumer,this.all_errors_are_fatal=!1,this.ignore_warnings=!1}),-1),$def(self,"$process",(function(diagnostic){return $truthy(this["$ignore?"](diagnostic))||$truthy(this.consumer)&&this.consumer.$call(diagnostic),$truthy(this["$raise?"](diagnostic))&&this.$raise($$$($$("Parser"),"SyntaxError"),diagnostic),this}),1),self.$protected(),$def(self,"$ignore?",(function(diagnostic){var $ret_or_1;return $truthy($ret_or_1=this.ignore_warnings)?diagnostic.$level()["$=="]("warning"):$ret_or_1}),1),$def(self,"$raise?",(function(diagnostic){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.all_errors_are_fatal)?diagnostic.$level()["$=="]("error"):$ret_or_2)?$ret_or_1:diagnostic.$level()["$=="]("fatal")}),1)}(Opal.$r($nesting)("Diagnostic"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/static_environment"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def;return Opal.add_stubs("reset,[],push,dup,pop,add,to_sym,include?,declare,declared?,empty?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"StaticEnvironment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.stack=$proto.variables=nil,$const_set($nesting[0],"FORWARD_ARGS","FORWARD_ARGS"),$const_set($nesting[0],"ANONYMOUS_BLOCKARG","ANONYMOUS_BLOCKARG"),$def(self,"$initialize",(function(){return this.$reset()}),0),$def(self,"$reset",(function(){return this.variables=$$("Set")["$[]"](),this.stack=[]}),0),$def(self,"$extend_static",(function(){return this.stack.$push(this.variables),this.variables=$$("Set")["$[]"](),this}),0),$def(self,"$extend_dynamic",(function(){return this.stack.$push(this.variables),this.variables=this.variables.$dup(),this}),0),$def(self,"$unextend",(function(){return this.variables=this.stack.$pop(),this}),0),$def(self,"$declare",(function(name){return this.variables.$add(name.$to_sym()),this}),1),$def(self,"$declared?",(function(name){return this.variables["$include?"](name.$to_sym())}),1),$def(self,"$declare_forward_args",(function(){return this.$declare($$("FORWARD_ARGS"))}),0),$def(self,"$declared_forward_args?",(function(){return this["$declared?"]($$("FORWARD_ARGS"))}),0),$def(self,"$declare_anonymous_blockarg",(function(){return this.$declare($$("ANONYMOUS_BLOCKARG"))}),0),$def(self,"$declared_anonymous_blockarg?",(function(){return this["$declared?"]($$("ANONYMOUS_BLOCKARG"))}),0),$def(self,"$empty?",(function(){return this.stack["$empty?"]()}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/lexer"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$const_set=Opal.const_set,$hash=Opal.hash,$def=Opal.def,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$hash2=Opal.hash2,$rb_plus=Opal.rb_plus,$to_ary=Opal.to_ary,$rb_le=Opal.rb_le,$eqeqeq=Opal.eqeqeq,$rb_gt=Opal.rb_gt,$neqeq=Opal.neqeq,$not=Opal.not,$rb_ge=Opal.rb_ge,$range=Opal.range,$rb_lt=Opal.rb_lt,$gvars=Opal.gvars;return Opal.add_stubs("attr_accessor,private,_lex_trans_keys=,-,_lex_key_spans=,_lex_index_offsets=,_lex_indicies=,_lex_trans_targs=,_lex_trans_actions=,_lex_to_state_actions=,_lex_from_state_actions=,_lex_eof_trans=,lex_start=,lex_error=,lex_en_interp_words=,lex_en_interp_string=,lex_en_plain_words=,lex_en_plain_string=,lex_en_interp_backslash_delimited=,lex_en_plain_backslash_delimited=,lex_en_interp_backslash_delimited_words=,lex_en_plain_backslash_delimited_words=,lex_en_regexp_modifiers=,lex_en_expr_variable=,lex_en_expr_fname=,lex_en_expr_endfn=,lex_en_expr_dot=,lex_en_expr_arg=,lex_en_expr_cmdarg=,lex_en_expr_endarg=,lex_en_expr_mid=,lex_en_expr_beg=,lex_en_expr_labelarg=,lex_en_expr_value=,lex_en_expr_end=,lex_en_leading_dot=,lex_en_line_comment=,lex_en_line_begin=,freeze,ord,union,chars,attr_reader,reset,lex_en_line_begin,class,new,source,==,encoding,unpack,[],lex_en_expr_dot,lex_en_expr_fname,lex_en_expr_value,lex_en_expr_beg,lex_en_expr_mid,lex_en_expr_arg,lex_en_expr_cmdarg,lex_en_expr_end,lex_en_expr_endarg,lex_en_expr_endfn,lex_en_expr_labelarg,lex_en_interp_string,lex_en_interp_words,lex_en_plain_string,fetch,invert,push,count,pop,any?,shift,send,+,size,<=,===,<<,>,!=,emit_comment,tok,literal,flush_string,extend_content,emit,heredoc?,saved_herebody_s=,start_interp_brace,[]=,diagnostic,range,str_s,gsub,version?,nest_and_try_closing,heredoc_e,pop_literal,infer_indent_level,!,eof_codepoint?,words?,extend_space,extend_string,active?,>=,slice,start_with?,chr,munge_escape?,match,regexp?,squiggly_heredoc?,supports_line_continuation_via_slash?,include?,scan,join,=~,to_i,stack_pop,emit_table,push_literal,in_argdef,arg_or_cmdarg,<,emit_do,declared?,nil?,last,getbyte,inspect,end_with?,empty?,index,call,Float,to_f,length,lambda,Rational,Complex,each,encode_escape,%,in_kwarg,end_interp_brace_and_try_closing,lexpop,saved_herebody_s,next_state_for_literal,rstrip,&,|,lex_error,protected,force_encoding,process,backslash_delimited?,interpolate?,lex_en_interp_backslash_delimited_words,lex_en_plain_backslash_delimited_words,lex_en_plain_words,lex_en_interp_backslash_delimited,lex_en_plain_backslash_delimited,dedent_level,type,lex_en_regexp_modifiers,upcase"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Lexer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$writer=nil,$proto=self.$$prototype;return $proto.source_buffer=$proto.source_pts=$proto.cs=$proto.cmdarg_stack=$proto.cmdarg=$proto.cond_stack=$proto.cond=$proto.dedent_level=$proto.token_queue=$proto.p=$proto.command_start=$proto.herebody_s=$proto.sharp_s=$proto.ts=$proto.te=$proto.top=$proto.stack=$proto.version=$proto.escape_s=$proto.escape=$proto.act=$proto.context=$proto.static_env=$proto.newline_s=$proto.lambda_stack=$proto.paren_nest=$proto.num_digits_s=$proto.num_suffix_s=$proto.num_base=$proto.num_xfrm=$proto.eq_begin_s=$proto.cs_before_block_comment=$proto.tokens=$proto.comments=$proto.diagnostics=$proto.literal_stack=nil,function(self,$parent_nesting){self.$attr_accessor("_lex_trans_keys"),self.$private("_lex_trans_keys","_lex_trans_keys=")}(Opal.get_singleton_class(self)),$send(self,"_lex_trans_keys=",$to_a($writer=[[0,0,101,101,103,103,105,105,110,110,69,69,78,78,68,68,95,95,95,95,0,26,0,127,0,127,0,127,0,127,0,45,0,120,0,120,0,92,0,120,0,120,0,45,0,120,0,120,67,99,45,45,0,92,0,120,0,102,0,127,0,127,0,127,0,127,0,45,0,120,0,120,0,92,0,120,0,120,0,45,0,120,0,120,67,99,45,45,0,92,0,120,0,102,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,58,58,58,58,46,46,0,127,58,58,60,60,62,62,10,10,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,115,115,99,99,117,117,101,101,108,116,101,101,115,115,115,115,105,105,108,108,105,105,108,108,58,58,0,127,10,10,0,127,9,92,10,10,9,92,58,58,98,98,101,101,103,103,105,105,110,110,0,127,61,61,9,92,9,92,9,92,9,92,9,92,10,10,0,127,0,127,61,126,93,93,0,127,0,127,10,10,34,34,10,10,39,39,0,127,10,96,96,96,0,45,0,120,0,120,0,92,0,120,0,120,0,45,0,120,0,120,67,99,45,45,0,92,0,120,0,102,0,127,0,127,0,127,0,127,0,127,0,127,58,58,58,58,0,127,43,57,48,57,48,57,48,57,48,57,115,115,99,99,117,117,101,101,99,99,117,117,101,101,0,127,58,58,9,92,9,92,9,92,9,92,9,92,9,92,60,60,10,10,9,92,9,92,10,10,10,10,10,10,10,10,46,46,0,95,9,32,0,0,10,10,10,10,98,98,9,32,10,10,95,95,0,92,9,32,36,123,0,127,48,57,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,48,102,48,102,0,0,48,102,48,102,0,0,0,45,0,92,0,92,0,0,0,0,0,92,48,102,48,102,0,0,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,92,36,123,0,127,48,57,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,48,102,48,102,0,0,48,102,48,102,0,0,0,45,0,92,0,92,0,0,0,0,0,92,48,102,48,102,0,0,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,92,9,32,0,26,0,92,0,26,0,35,36,123,0,127,48,57,0,127,0,26,0,35,9,32,36,123,0,127,48,57,0,127,0,32,9,32,65,122,65,122,36,64,0,127,48,57,0,127,0,127,0,127,0,127,9,32,0,0,61,126,10,10,10,10,0,127,0,127,48,57,115,115,38,38,42,42,64,64,58,58,60,61,62,62,61,126,61,61,61,62,0,127,0,127,0,127,0,127,0,127,0,127,0,127,93,93,10,10,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,124,124,0,127,0,127,9,32,10,10,10,10,46,46,10,10,0,0,0,127,0,127,61,61,0,0,9,32,0,0,61,126,10,10,10,10,38,38,42,42,64,64,60,61,62,62,61,126,61,61,61,62,0,127,93,93,10,10,124,124,0,126,0,127,0,61,9,61,9,61,0,0,9,61,9,62,46,46,46,46,58,58,9,32,0,0,0,127,0,0,9,124,0,0,10,10,10,10,0,0,9,61,58,58,60,60,62,62,9,32,10,10,0,127,102,102,101,101,110,110,104,104,0,127,0,127,0,127,0,0,0,127,10,10,0,123,9,32,10,10,10,10,10,10,0,0,111,111,0,0,0,127,0,127,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,58,61,0,0,61,126,61,61,0,0,0,0,0,0,9,32,61,61,9,32,61,126,10,10,10,10,0,127,38,61,0,0,42,61,61,61,9,92,9,92,9,92,46,46,46,46,10,10,0,26,0,127,0,127,61,61,0,0,61,126,61,62,0,0,0,0,0,0,0,0,61,126,0,127,48,57,38,38,42,42,64,64,60,61,62,62,61,61,61,62,0,127,48,57,0,127,124,124,64,64,60,61,0,0,10,34,10,39,96,96,62,62,61,126,61,62,0,122,0,0,0,127,0,127,0,120,0,0,0,0,48,55,48,55,0,0,0,0,0,92,0,0,0,0,0,0,0,92,45,45,0,0,0,0,0,0,0,92,48,102,48,102,0,0,48,102,48,102,0,0,0,45,0,92,0,92,0,0,0,0,0,92,48,102,48,102,0,0,0,45,10,10,0,92,48,123,48,102,48,102,48,102,0,0,0,125,0,125,0,0,0,125,0,0,0,125,0,125,0,125,0,125,0,0,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,125,0,0,0,0,48,102,0,0,0,127,0,127,0,127,0,0,10,10,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,61,126,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,0,61,124,0,92,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,9,32,0,0,10,10,10,10,10,10,0,0,0,127,0,127,61,61,0,0,9,32,0,0,61,126,10,10,10,10,0,127,0,127,48,57,61,61,38,61,0,0,0,0,42,61,61,62,46,57,46,46,10,10,48,101,48,95,46,120,48,114,43,57,48,105,102,102,0,0,101,105,0,0,0,0,48,114,48,114,48,114,48,114,105,114,102,102,0,0,101,105,115,115,0,0,0,0,48,114,48,114,48,114,48,114,48,114,48,114,48,114,48,114,46,114,48,114,46,114,48,114,58,58,60,61,62,62,61,126,61,61,61,62,0,127,0,127,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,0,10,10,0,0,0,0,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,9,92,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,0,61,124,0,0,9,92,9,92,9,92,46,46,46,46,10,10,46,46,10,10,10,61,10,10,10,101,10,110,10,100,10,10,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_key_spans"),self.$private("_lex_key_spans","_lex_key_spans=")}(Opal.get_singleton_class(self)),$send(self,"_lex_key_spans=",$to_a($writer=[[0,1,1,1,1,1,1,1,1,1,27,128,128,128,128,46,121,121,93,121,121,46,121,121,33,1,93,121,103,128,128,128,128,46,121,121,93,121,121,46,121,121,33,1,93,121,103,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,1,1,128,1,1,1,1,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,1,1,1,9,1,1,1,1,1,1,1,1,128,1,128,84,1,84,1,1,1,1,1,1,128,1,84,84,84,84,84,1,128,128,66,1,128,128,1,1,1,1,128,87,1,46,121,121,93,121,121,46,121,121,33,1,93,121,103,128,128,128,128,128,128,1,1,128,15,10,10,10,10,1,1,1,1,1,1,1,128,1,84,84,84,84,84,84,1,1,84,84,1,1,1,1,1,96,24,0,1,1,1,24,1,1,93,24,88,128,10,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,55,55,0,55,55,0,46,93,93,0,0,93,55,55,0,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,0,0,55,0,93,88,128,10,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,55,55,0,55,55,0,46,93,93,0,0,93,55,55,0,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,0,0,55,0,93,24,27,93,27,36,88,128,10,128,27,36,24,88,128,10,128,33,24,58,58,29,128,10,128,128,128,128,24,0,66,1,1,128,128,10,1,1,1,1,1,2,1,66,1,2,128,128,128,128,128,128,128,1,1,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,1,128,128,24,1,1,1,1,0,128,128,1,0,24,0,66,1,1,1,1,1,2,1,66,1,2,128,1,1,1,127,128,62,53,53,0,53,54,1,1,1,24,0,128,0,116,0,1,1,0,53,1,1,1,24,1,128,1,1,1,1,128,128,128,0,128,1,124,24,1,1,1,0,1,0,128,128,24,0,1,1,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,4,0,66,1,0,0,0,24,1,24,66,1,1,128,24,0,20,1,84,84,84,1,1,1,27,128,128,1,0,66,2,0,0,0,0,66,128,10,1,1,1,2,1,1,2,128,10,128,1,1,2,0,25,30,1,1,66,2,123,0,128,128,121,0,0,8,8,0,0,93,0,0,0,93,1,0,0,0,93,55,55,0,55,55,0,46,93,93,0,0,93,55,55,0,46,1,93,76,55,55,55,0,126,126,0,126,0,126,126,126,126,0,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,0,0,55,0,128,128,128,0,1,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,66,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,64,93,24,0,1,1,1,0,128,128,24,0,1,1,1,0,128,128,1,0,24,0,66,1,1,128,128,10,1,24,0,0,20,2,12,1,1,54,48,75,67,15,58,1,0,5,0,0,67,67,67,67,10,1,0,5,1,0,0,67,67,67,67,67,67,67,67,69,67,69,67,1,2,1,66,1,2,128,128,0,128,128,128,128,128,128,0,1,0,0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,84,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,64,0,84,84,84,1,1,1,1,1,52,1,92,101,91,1]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_index_offsets"),self.$private("_lex_index_offsets","_lex_index_offsets=")}(Opal.get_singleton_class(self)),$send(self,"_lex_index_offsets=",$to_a($writer=[[0,0,2,4,6,8,10,12,14,16,18,46,175,304,433,562,609,731,853,947,1069,1191,1238,1360,1482,1516,1518,1612,1734,1838,1967,2096,2225,2354,2401,2523,2645,2739,2861,2983,3030,3152,3274,3308,3310,3404,3526,3630,3759,3888,4017,4146,4275,4404,4533,4662,4791,4920,5049,5178,5307,5436,5565,5567,5569,5571,5700,5702,5704,5706,5708,5837,5966,6095,6224,6353,6482,6611,6740,6869,6998,7127,7256,7385,7514,7643,7772,7901,8030,8032,8034,8036,8038,8048,8050,8052,8054,8056,8058,8060,8062,8064,8193,8195,8324,8409,8411,8496,8498,8500,8502,8504,8506,8508,8637,8639,8724,8809,8894,8979,9064,9066,9195,9324,9391,9393,9522,9651,9653,9655,9657,9659,9788,9876,9878,9925,10047,10169,10263,10385,10507,10554,10676,10798,10832,10834,10928,11050,11154,11283,11412,11541,11670,11799,11928,11930,11932,12061,12077,12088,12099,12110,12121,12123,12125,12127,12129,12131,12133,12135,12264,12266,12351,12436,12521,12606,12691,12776,12778,12780,12865,12950,12952,12954,12956,12958,12960,13057,13082,13083,13085,13087,13089,13114,13116,13118,13212,13237,13326,13455,13466,13595,13717,13718,13719,13728,13737,13738,13739,13833,13834,13835,13836,13930,13932,13933,13934,13935,14029,14085,14141,14142,14198,14254,14255,14302,14396,14490,14491,14492,14586,14642,14698,14699,14746,14748,14842,14919,14975,15031,15087,15088,15215,15342,15343,15470,15471,15598,15725,15852,15979,15980,16107,16234,16361,16488,16615,16742,16743,16744,16800,16801,16895,16984,17113,17124,17253,17375,17376,17377,17386,17395,17396,17397,17491,17492,17493,17494,17588,17590,17591,17592,17593,17687,17743,17799,17800,17856,17912,17913,17960,18054,18148,18149,18150,18244,18300,18356,18357,18404,18406,18500,18577,18633,18689,18745,18746,18873,19e3,19001,19128,19129,19256,19383,19510,19637,19638,19765,19892,20019,20146,20273,20400,20401,20402,20458,20459,20553,20578,20606,20700,20728,20765,20854,20983,20994,21123,21151,21188,21213,21302,21431,21442,21571,21605,21630,21689,21748,21778,21907,21918,22047,22176,22305,22434,22459,22460,22527,22529,22531,22660,22789,22800,22802,22804,22806,22808,22810,22813,22815,22882,22884,22887,23016,23145,23274,23403,23532,23661,23790,23792,23794,23923,24052,24181,24310,24439,24568,24697,24826,24955,25084,25213,25342,25471,25600,25729,25858,25987,26116,26245,26374,26503,26632,26761,26890,27019,27148,27277,27406,27535,27664,27793,27922,28051,28180,28309,28438,28567,28696,28825,28954,29083,29212,29341,29470,29599,29728,29857,29986,30115,30244,30373,30502,30631,30760,30889,31018,31147,31276,31405,31534,31663,31792,31921,32050,32179,32308,32437,32566,32695,32824,32953,33082,33211,33340,33469,33598,33727,33856,33985,34114,34243,34372,34501,34503,34632,34761,34786,34788,34790,34792,34794,34795,34924,35053,35055,35056,35081,35082,35149,35151,35153,35155,35157,35159,35162,35164,35231,35233,35236,35365,35367,35369,35371,35499,35628,35691,35745,35799,35800,35854,35909,35911,35913,35915,35940,35941,36070,36071,36188,36189,36191,36193,36194,36248,36250,36252,36254,36279,36281,36410,36412,36414,36416,36418,36547,36676,36805,36806,36935,36937,37062,37087,37089,37091,37093,37094,37096,37097,37226,37355,37380,37381,37383,37385,37387,37388,37517,37646,37775,37904,38033,38162,38291,38420,38549,38678,38807,38936,39065,39194,39323,39452,39581,39710,39715,39716,39783,39785,39786,39787,39788,39813,39815,39840,39907,39909,39911,40040,40065,40066,40087,40089,40174,40259,40344,40346,40348,40350,40378,40507,40636,40638,40639,40706,40709,40710,40711,40712,40713,40780,40909,40920,40922,40924,40926,40929,40931,40933,40936,41065,41076,41205,41207,41209,41212,41213,41239,41270,41272,41274,41341,41344,41468,41469,41598,41727,41849,41850,41851,41860,41869,41870,41871,41965,41966,41967,41968,42062,42064,42065,42066,42067,42161,42217,42273,42274,42330,42386,42387,42434,42528,42622,42623,42624,42718,42774,42830,42831,42878,42880,42974,43051,43107,43163,43219,43220,43347,43474,43475,43602,43603,43730,43857,43984,44111,44112,44239,44366,44493,44620,44747,44874,45001,45128,45255,45382,45509,45636,45763,45890,46017,46144,46271,46398,46525,46526,46527,46583,46584,46713,46842,46971,46972,46974,46975,47104,47233,47362,47491,47620,47749,47878,48007,48136,48265,48394,48523,48652,48781,48910,49039,49168,49297,49426,49555,49684,49813,49942,50071,50200,50329,50458,50587,50716,50845,50974,51103,51232,51361,51490,51619,51748,51877,52006,52135,52264,52393,52522,52651,52780,52909,53038,53167,53296,53425,53554,53683,53812,53941,54070,54199,54328,54457,54586,54715,54844,54911,55040,55169,55298,55427,55556,55685,55814,55943,56072,56201,56330,56459,56588,56717,56846,56975,57104,57233,57362,57491,57620,57749,57878,58007,58136,58137,58202,58296,58321,58322,58324,58326,58328,58329,58458,58587,58612,58613,58615,58617,58619,58620,58749,58878,58880,58881,58906,58907,58974,58976,58978,59107,59236,59247,59249,59274,59275,59276,59297,59300,59313,59315,59317,59372,59421,59497,59565,59581,59640,59642,59643,59649,59650,59651,59719,59787,59855,59923,59934,59936,59937,59943,59945,59946,59947,60015,60083,60151,60219,60287,60355,60423,60491,60561,60629,60699,60767,60769,60772,60774,60841,60843,60846,60975,61104,61105,61234,61363,61492,61621,61750,61879,61880,61882,61883,61884,62013,62142,62271,62400,62529,62658,62787,62916,63045,63174,63303,63432,63561,63690,63819,63948,64077,64206,64335,64464,64593,64722,64851,64980,65109,65238,65367,65496,65625,65754,65883,66012,66141,66270,66399,66528,66657,66742,66871,67e3,67129,67258,67387,67516,67645,67774,67903,68032,68161,68290,68419,68548,68677,68806,68935,69064,69193,69322,69451,69580,69709,69838,69967,70096,70225,70354,70483,70612,70741,70870,70999,71128,71257,71386,71515,71644,71773,71902,72031,72160,72289,72418,72547,72676,72805,72934,73063,73192,73321,73450,73579,73708,73837,73966,74095,74224,74353,74482,74611,74740,74869,74998,75127,75128,75193,75194,75279,75364,75449,75451,75453,75455,75457,75459,75512,75514,75607,75709,75801]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_indicies"),self.$private("_lex_indicies","_lex_indicies=")}(Opal.get_singleton_class(self)),$send(self,"_lex_indicies=",$to_a($writer=[[1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,0,0,10,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,12,14,12,14,14,12,12,14,14,14,15,14,14,16,16,16,16,16,16,16,16,16,16,14,14,14,14,14,14,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,14,12,12,13,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,14,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,14,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,17,17,17,17,17,17,17,17,17,12,12,12,12,12,12,18,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,17,17,17,17,17,17,17,17,17,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,13,19,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,20,19,22,22,22,19,22,22,22,22,22,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,24,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,25,22,19,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,26,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,25,22,19,27,27,27,19,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,19,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,29,27,19,30,30,30,19,30,30,30,30,30,31,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,19,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,19,30,30,30,19,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,19,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,19,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,33,20,19,34,34,34,19,34,34,34,34,34,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,19,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,36,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,37,34,34,34,34,34,34,38,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,39,34,19,34,34,34,19,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,19,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,39,34,40,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,41,19,41,19,19,42,42,42,19,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,19,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,44,42,19,22,22,22,19,22,22,22,22,22,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,26,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,25,22,19,45,45,45,19,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,19,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,46,46,46,46,46,46,46,46,46,46,45,45,45,45,45,45,45,46,46,46,46,46,46,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,46,46,46,46,46,46,45,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,49,49,47,49,47,49,49,47,47,49,49,49,50,49,49,51,51,51,51,51,51,51,51,51,51,49,49,49,49,49,49,49,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,49,47,47,48,49,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,49,47,48,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,49,49,49,49,49,49,49,49,49,49,47,47,47,47,47,47,47,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,47,47,47,47,49,47,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,47,47,47,47,47,49,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,52,52,52,52,52,52,52,52,52,52,47,47,47,47,47,47,53,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,48,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,47,48,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,52,52,52,52,52,52,52,52,52,52,47,47,47,47,47,47,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,48,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,47,47,47,47,47,48,54,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,56,55,54,57,57,57,54,57,57,57,57,57,58,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,59,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,60,57,54,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,61,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,60,57,54,62,62,62,54,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,54,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,54,65,65,65,54,65,65,65,65,65,66,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,54,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,67,65,54,65,65,65,54,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,54,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,67,65,54,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,68,55,54,69,69,69,54,69,69,69,69,69,70,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,54,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,71,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,72,69,69,69,69,69,69,73,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,74,69,54,69,69,69,54,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,54,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,74,69,75,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,76,54,76,54,54,77,77,77,54,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,54,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,79,77,54,57,57,57,54,57,57,57,57,57,58,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,61,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,60,57,54,80,80,80,54,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,54,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,80,80,80,80,80,80,80,81,81,81,81,81,81,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,80,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,84,84,82,84,82,84,84,82,82,84,84,84,85,84,84,86,86,86,86,86,86,86,86,86,86,84,84,84,84,84,84,84,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,84,82,82,83,84,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,84,82,83,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,84,84,84,84,84,84,84,84,84,84,82,82,82,82,82,82,82,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,82,82,82,82,84,82,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,82,82,82,82,82,84,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,87,87,87,87,87,87,87,87,87,87,82,82,82,82,82,82,88,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,83,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,82,83,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,87,87,87,87,87,87,87,87,87,87,82,82,82,82,82,82,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,83,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,82,82,82,82,82,83,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,91,91,89,91,89,91,91,89,89,91,91,91,92,91,91,93,93,93,93,93,93,93,93,93,93,91,91,91,91,91,91,91,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,91,89,89,90,91,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,91,89,90,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,91,91,91,91,91,91,91,91,91,91,89,89,89,89,89,89,89,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,89,89,89,89,91,89,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,89,89,89,89,89,91,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,94,94,94,94,94,94,94,94,94,94,89,89,89,89,89,89,95,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,90,89,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,89,90,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,94,94,94,94,94,94,94,94,94,94,89,89,89,89,89,89,89,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,90,89,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,89,89,89,89,89,90,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,97,97,98,97,98,97,97,98,98,97,97,97,99,97,97,100,100,100,100,100,100,100,100,100,100,97,97,97,97,97,97,97,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,98,97,98,98,96,97,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,98,98,98,97,98,96,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,97,97,97,97,97,97,97,97,97,97,98,98,98,98,98,98,98,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,98,98,98,98,97,98,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,98,98,98,98,98,97,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,101,101,101,101,101,101,101,101,101,101,98,98,98,98,98,98,102,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,98,98,98,98,101,98,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,98,98,98,98,98,101,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,103,103,103,103,103,103,103,103,103,103,98,98,98,98,98,98,98,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,98,98,98,98,103,98,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,98,98,98,98,98,103,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,105,105,105,105,105,105,105,105,105,105,104,104,104,104,104,104,104,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,104,104,104,104,105,104,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,104,104,104,104,104,105,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,106,106,106,106,106,106,106,106,106,106,107,107,107,107,107,107,107,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,107,107,107,107,107,107,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,107,107,107,107,107,106,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,110,108,108,108,108,108,108,108,108,108,108,108,108,108,108,109,109,109,109,109,109,109,109,109,109,111,108,108,108,108,110,108,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,108,108,108,108,109,108,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,108,108,108,108,108,109,111,108,108,112,113,108,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,116,114,114,114,114,114,114,114,114,114,114,114,114,114,114,115,115,115,115,115,115,115,115,115,115,117,114,114,114,114,116,114,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,114,114,114,114,115,114,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,114,114,114,114,114,115,117,114,119,118,120,118,121,118,118,118,118,118,118,118,118,118,118,123,118,123,123,123,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,123,118,118,118,118,124,125,118,126,118,127,128,129,130,131,124,118,118,118,118,118,118,118,118,118,118,132,118,133,129,134,135,118,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,136,137,129,138,122,118,122,122,122,122,122,122,122,122,139,122,122,122,122,122,122,122,122,140,122,122,141,122,142,122,122,122,143,144,118,138,118,122,118,118,118,118,118,118,118,118,118,145,118,145,145,145,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,145,118,118,118,118,146,147,118,148,118,149,150,151,152,153,146,118,118,118,118,118,118,118,118,118,118,154,118,155,151,156,157,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,158,159,151,120,115,118,115,115,115,115,115,115,115,115,160,115,115,115,115,115,115,115,115,161,115,115,162,115,163,115,115,115,164,165,118,120,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,166,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,167,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,168,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,169,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,170,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,166,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,115,115,171,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,172,115,115,115,115,115,115,115,173,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,174,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,175,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,166,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,176,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,166,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,177,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,178,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,116,118,118,118,118,118,118,118,118,118,118,118,118,118,118,115,115,115,115,115,115,115,115,115,115,117,118,118,118,118,116,118,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,115,118,115,115,115,115,115,115,115,115,115,115,115,170,115,115,115,115,115,115,115,115,115,115,115,115,115,115,118,118,118,118,118,115,180,179,181,179,182,179,151,179,183,179,179,179,179,179,179,179,184,179,185,179,186,179,151,179,187,179,151,179,188,179,182,179,190,189,191,191,191,191,191,191,191,191,191,193,191,193,193,193,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,193,191,191,191,191,191,191,191,194,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,191,195,191,191,192,191,192,192,192,196,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,191,191,191,191,191,192,197,191,191,191,191,191,191,191,191,191,191,199,191,199,199,199,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,199,191,191,191,191,191,191,191,200,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,191,201,191,191,198,191,198,198,198,202,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,191,191,191,191,191,198,204,203,204,204,204,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,204,203,203,203,203,203,203,203,205,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,206,203,207,203,208,203,208,208,208,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,208,203,203,203,203,203,203,203,209,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,210,203,211,212,214,213,215,213,216,213,217,213,218,213,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,219,219,219,219,219,219,219,219,219,219,220,220,220,220,220,220,220,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,220,220,220,220,220,220,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,220,220,220,220,220,219,221,211,222,223,222,222,222,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,222,211,211,224,211,211,211,211,211,211,211,211,211,211,211,211,225,225,225,225,225,225,225,225,225,225,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,226,211,227,228,227,227,227,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,227,211,211,229,211,211,211,211,211,211,211,211,211,211,211,211,230,230,230,230,230,230,230,230,230,230,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,231,211,233,234,233,233,233,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,233,232,232,235,232,232,232,232,232,232,232,232,232,232,232,232,236,236,236,236,236,236,236,236,236,236,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,237,232,239,240,239,239,239,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,239,238,238,241,238,238,238,238,238,238,238,238,238,238,238,238,242,242,242,242,242,242,242,242,242,242,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,243,238,239,244,239,239,239,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,239,238,238,241,238,238,238,238,238,238,238,238,238,238,238,238,242,242,242,242,242,242,242,242,242,242,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,243,238,223,211,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,247,247,245,247,245,247,247,245,245,247,247,247,248,247,247,249,249,249,249,249,249,249,249,249,249,247,247,247,247,247,247,247,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,245,247,245,245,246,247,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,245,245,245,247,245,246,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,247,247,247,247,247,247,247,247,247,247,245,245,245,245,245,245,245,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,245,245,245,245,247,245,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,245,245,245,245,245,247,250,247,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,247,245,250,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,252,245,245,245,245,253,245,245,245,245,245,254,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,221,245,245,245,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,245,245,245,245,251,255,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,245,245,245,254,245,251,257,257,257,257,257,257,257,257,257,257,258,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,256,256,256,256,256,256,256,256,256,256,257,257,257,257,257,257,257,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,257,257,257,257,256,257,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,257,257,257,257,257,256,260,259,263,262,258,257,263,264,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,252,245,245,245,245,253,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,245,245,245,245,251,255,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,245,245,245,245,245,251,266,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,263,265,263,266,267,268,268,268,267,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,267,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,269,268,267,270,270,270,267,270,270,270,270,270,271,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,267,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,272,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,273,270,267,270,270,270,267,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,267,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,274,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,273,270,267,275,275,275,267,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,267,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,276,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,277,275,267,278,278,278,267,278,278,278,278,278,279,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,267,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,280,278,267,278,278,278,267,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,267,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,280,278,267,268,268,268,267,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,267,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,281,268,267,282,282,282,267,282,282,282,282,282,283,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,267,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,284,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,285,282,282,282,282,282,282,286,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,287,282,267,282,282,282,267,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,267,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,287,282,288,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,289,267,289,267,267,290,290,290,267,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,267,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,291,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,292,290,267,270,270,270,267,270,270,270,270,270,271,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,267,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,274,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,273,270,267,293,293,293,267,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,267,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,294,294,294,294,294,294,294,294,294,294,293,293,293,293,293,293,293,294,294,294,294,294,294,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,294,294,294,294,294,294,293,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,296,211,211,211,211,211,211,211,211,211,211,211,211,211,211,295,295,295,295,295,295,295,295,295,295,297,211,211,298,211,296,211,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,211,211,211,211,295,211,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,211,211,211,211,211,295,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,296,245,245,245,245,245,245,245,245,245,245,245,245,245,245,295,295,295,295,295,295,295,295,295,295,297,245,245,298,245,296,245,295,295,295,295,295,295,299,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,295,245,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,245,295,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,296,245,245,245,245,245,245,245,245,245,245,245,245,245,245,295,295,295,295,295,295,295,295,295,295,297,245,245,298,245,296,245,295,295,295,295,295,295,295,295,300,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,295,245,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,245,295,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,296,245,245,245,245,245,245,245,245,245,245,245,245,245,245,295,295,295,295,295,295,295,295,295,295,297,245,245,298,245,296,245,295,295,295,295,295,295,295,295,295,295,295,295,295,301,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,295,245,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,245,295,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,296,245,245,245,245,245,245,245,245,245,245,245,245,245,245,295,295,295,295,295,295,295,295,295,295,297,245,245,298,245,296,245,295,295,295,301,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,295,245,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,245,245,245,245,245,295,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,304,302,302,302,302,302,302,302,302,302,302,302,302,302,302,303,303,303,303,303,303,303,303,303,303,305,302,302,302,302,304,302,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,302,302,302,302,303,302,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,302,302,302,302,302,303,305,302,302,306,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,308,308,308,308,308,308,308,308,308,308,307,307,307,307,307,307,307,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,307,307,307,307,308,307,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,307,307,307,307,307,308,310,309,310,309,309,311,311,311,311,311,311,311,311,311,311,309,311,311,311,311,311,311,311,311,311,311,309,312,312,312,312,312,312,312,312,312,312,309,314,314,314,314,314,314,314,314,314,314,313,315,315,315,315,315,315,315,315,315,315,313,317,316,318,316,319,316,320,316,322,321,323,321,324,321,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,325,325,325,325,325,325,325,325,325,325,307,307,307,307,307,307,307,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,307,307,307,307,325,307,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,307,307,307,307,307,325,326,313,327,328,327,327,327,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,327,313,313,329,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,330,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,331,313,332,333,332,332,332,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,332,313,313,334,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,335,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,336,313,338,339,338,338,338,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,338,337,337,340,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,341,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,342,337,344,345,344,344,344,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,343,343,346,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,347,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,348,343,344,345,344,344,344,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,343,343,346,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,349,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,348,343,344,350,344,344,344,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,343,343,346,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,347,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,348,343,351,313,328,313,353,354,353,353,353,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,353,352,352,355,352,352,356,352,352,352,352,352,352,352,357,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,358,352,360,354,360,360,360,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,360,359,359,355,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,358,359,363,362,365,364,366,361,367,361,368,352,370,369,369,369,370,369,369,369,369,371,372,371,371,371,369,369,369,369,369,369,369,369,369,369,369,369,370,369,369,369,369,369,371,369,369,373,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,374,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,375,369,369,376,369,371,377,371,371,371,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,371,377,378,379,380,381,382,384,383,386,387,386,386,386,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,386,385,372,383,388,383,390,389,389,389,390,389,389,389,389,391,392,391,391,391,389,389,389,389,389,389,389,389,389,389,389,389,390,389,389,389,389,389,391,389,389,393,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,394,389,391,395,391,391,391,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,391,395,397,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,398,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,399,396,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,13,13,13,13,13,13,13,13,13,13,400,400,400,400,400,400,400,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,400,400,400,400,13,400,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,400,400,400,400,400,13,16,16,16,16,16,16,16,16,16,16,400,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,13,13,13,13,13,13,13,13,13,13,401,401,401,401,401,401,401,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,401,401,401,401,17,401,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,401,401,401,401,401,17,404,403,403,403,404,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,404,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,405,405,405,405,405,405,405,405,403,403,403,403,403,403,403,403,403,403,403,406,403,403,403,403,403,403,403,403,403,407,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,408,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,409,403,403,410,403,411,412,414,414,414,414,414,414,414,414,413,415,415,415,415,415,415,415,415,413,413,416,416,42,42,42,416,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,416,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,417,42,418,419,420,420,42,42,42,420,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,420,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,421,42,41,420,422,423,424,424,27,27,27,424,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,424,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,425,27,426,426,426,426,426,426,426,426,426,426,424,424,424,424,424,424,424,426,426,426,426,426,426,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,426,426,426,426,426,426,424,428,428,428,428,428,428,428,428,428,428,427,427,427,427,427,427,427,428,428,428,428,428,428,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,428,428,428,428,428,428,427,427,429,429,429,429,429,429,429,429,429,429,420,420,420,420,420,420,420,429,429,429,429,429,429,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,429,429,429,429,429,429,420,431,431,431,431,431,431,431,431,431,431,430,430,430,430,430,430,430,431,431,431,431,431,431,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,431,431,431,431,431,431,430,430,420,20,20,20,420,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,420,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,432,20,416,27,27,27,416,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,416,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,29,27,416,433,433,433,416,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,416,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,434,433,435,436,436,433,433,433,436,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,436,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,437,433,438,438,438,438,438,438,438,438,438,438,436,436,436,436,436,436,436,438,438,438,438,438,438,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,438,438,438,438,438,438,436,440,440,440,440,440,440,440,440,440,440,439,439,439,439,439,439,439,440,440,440,440,440,440,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,440,440,440,440,440,440,439,439,436,20,20,20,436,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,436,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,432,20,441,436,436,27,27,27,436,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,436,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,29,27,443,443,443,443,443,443,443,443,443,443,442,442,442,442,442,442,442,443,443,443,443,443,443,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,443,443,443,443,443,443,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,444,442,445,445,445,445,445,445,445,445,445,445,442,442,442,442,442,442,442,445,445,445,445,445,445,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,445,445,445,445,445,445,442,446,446,446,446,446,446,446,446,446,446,442,442,442,442,442,442,442,446,446,446,446,446,446,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,446,446,446,446,446,446,442,447,447,447,447,447,447,447,447,447,447,442,442,442,442,442,442,442,447,447,447,447,447,447,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,447,447,447,447,447,447,442,448,451,450,450,450,451,450,450,450,450,452,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,451,450,450,450,450,450,452,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,453,453,453,453,453,453,453,453,453,453,450,450,450,450,450,450,450,453,453,453,453,453,453,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,453,453,453,453,453,453,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,454,450,451,450,450,450,451,450,450,450,450,449,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,451,450,450,450,450,450,449,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,455,455,455,455,455,455,455,455,455,455,450,450,450,450,450,450,450,455,455,455,455,455,455,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,455,455,455,455,455,455,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,456,450,449,451,455,455,455,451,455,455,455,455,449,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,451,455,455,455,455,455,449,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,449,455,457,451,458,458,458,451,458,458,458,458,452,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,452,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,453,453,453,453,453,453,453,453,453,453,458,458,458,458,458,458,458,453,453,453,453,453,453,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,453,453,453,453,453,453,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,449,458,451,458,458,458,451,458,458,458,458,449,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,449,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,455,455,455,455,455,455,455,455,455,455,458,458,458,458,458,458,458,455,455,455,455,455,455,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,455,455,455,455,455,455,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,460,460,460,460,460,460,460,460,460,460,458,458,458,458,458,458,458,460,460,460,460,460,460,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,460,460,460,460,460,460,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,453,453,453,453,453,453,453,453,453,453,458,458,458,458,458,458,458,453,453,453,453,453,453,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,453,453,453,453,453,453,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,462,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,463,463,463,463,463,463,463,463,463,463,458,458,458,458,458,458,458,463,463,463,463,463,463,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,463,463,463,463,463,463,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,464,464,464,464,464,464,464,464,464,464,458,458,458,458,458,458,458,464,464,464,464,464,464,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,464,464,464,464,464,464,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,465,465,465,465,465,465,465,465,465,465,458,458,458,458,458,458,458,465,465,465,465,465,465,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,465,465,465,465,465,465,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,466,466,466,466,466,466,466,466,466,466,458,458,458,458,458,458,458,466,466,466,466,466,466,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,466,466,466,466,466,466,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,459,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,467,467,467,467,467,467,467,467,467,467,458,458,458,458,458,458,458,467,467,467,467,467,467,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,467,467,467,467,467,467,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,461,458,451,458,458,458,451,458,458,458,458,449,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,451,458,458,458,458,458,449,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,467,467,467,467,467,467,467,467,467,467,458,458,458,458,458,458,458,467,467,467,467,467,467,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,467,467,467,467,467,467,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,449,458,468,469,471,471,471,471,471,471,471,471,471,471,470,470,470,470,470,470,470,471,471,471,471,471,471,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,471,471,471,471,471,471,470,470,473,472,472,472,473,472,472,472,472,472,474,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,473,472,472,472,472,472,472,472,472,475,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,476,472,478,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,479,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,480,477,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,48,48,48,48,48,48,48,48,48,48,481,481,481,481,481,481,481,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,481,481,481,481,48,481,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,481,481,481,481,481,48,51,51,51,51,51,51,51,51,51,51,481,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,48,48,48,48,48,48,48,48,48,48,482,482,482,482,482,482,482,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,482,482,482,482,52,482,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,482,482,482,482,482,52,485,484,484,484,485,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,485,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,486,486,486,486,486,486,486,486,484,484,484,484,484,484,484,484,484,484,484,487,484,484,484,484,484,484,484,484,484,488,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,489,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,490,484,484,491,484,492,493,495,495,495,495,495,495,495,495,494,496,496,496,496,496,496,496,496,494,494,497,497,77,77,77,497,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,497,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,498,77,499,500,501,501,77,77,77,501,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,501,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,502,77,76,501,503,504,505,505,62,62,62,505,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,505,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,506,62,507,507,507,507,507,507,507,507,507,507,505,505,505,505,505,505,505,507,507,507,507,507,507,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,507,507,507,507,507,507,505,509,509,509,509,509,509,509,509,509,509,508,508,508,508,508,508,508,509,509,509,509,509,509,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,509,509,509,509,509,509,508,508,510,510,510,510,510,510,510,510,510,510,501,501,501,501,501,501,501,510,510,510,510,510,510,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,510,510,510,510,510,510,501,512,512,512,512,512,512,512,512,512,512,511,511,511,511,511,511,511,512,512,512,512,512,512,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,512,512,512,512,512,512,511,511,501,55,55,55,501,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,501,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,513,55,497,62,62,62,497,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,497,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,497,514,514,514,497,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,497,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,515,514,516,517,517,514,514,514,517,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,517,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,518,514,519,519,519,519,519,519,519,519,519,519,517,517,517,517,517,517,517,519,519,519,519,519,519,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,519,519,519,519,519,519,517,521,521,521,521,521,521,521,521,521,521,520,520,520,520,520,520,520,521,521,521,521,521,521,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,521,521,521,521,521,521,520,520,517,55,55,55,517,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,517,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,513,55,522,517,517,62,62,62,517,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,517,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,64,62,524,524,524,524,524,524,524,524,524,524,523,523,523,523,523,523,523,524,524,524,524,524,524,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,524,524,524,524,524,524,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,525,523,526,526,526,526,526,526,526,526,526,526,523,523,523,523,523,523,523,526,526,526,526,526,526,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,526,526,526,526,526,526,523,527,527,527,527,527,527,527,527,527,527,523,523,523,523,523,523,523,527,527,527,527,527,527,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,527,527,527,527,527,527,523,528,528,528,528,528,528,528,528,528,528,523,523,523,523,523,523,523,528,528,528,528,528,528,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,528,528,528,528,528,528,523,529,532,531,531,531,532,531,531,531,531,533,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,532,531,531,531,531,531,533,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,534,534,534,534,534,534,534,534,534,534,531,531,531,531,531,531,531,534,534,534,534,534,534,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,534,534,534,534,534,534,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,535,531,532,531,531,531,532,531,531,531,531,530,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,532,531,531,531,531,531,530,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,536,536,536,536,536,536,536,536,536,536,531,531,531,531,531,531,531,536,536,536,536,536,536,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,536,536,536,536,536,536,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,537,531,530,532,536,536,536,532,536,536,536,536,530,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,532,536,536,536,536,536,530,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,530,536,538,532,539,539,539,532,539,539,539,539,533,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,533,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,534,534,534,534,534,534,534,534,534,534,539,539,539,539,539,539,539,534,534,534,534,534,534,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,534,534,534,534,534,534,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,530,539,532,539,539,539,532,539,539,539,539,530,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,530,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,536,536,536,536,536,536,536,536,536,536,539,539,539,539,539,539,539,536,536,536,536,536,536,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,536,536,536,536,536,536,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,541,541,541,541,541,541,541,541,541,541,539,539,539,539,539,539,539,541,541,541,541,541,541,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,541,541,541,541,541,541,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,534,534,534,534,534,534,534,534,534,534,539,539,539,539,539,539,539,534,534,534,534,534,534,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,534,534,534,534,534,534,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,543,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,544,544,544,544,544,544,544,544,544,544,539,539,539,539,539,539,539,544,544,544,544,544,544,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,544,544,544,544,544,544,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,545,545,545,545,545,545,545,545,545,545,539,539,539,539,539,539,539,545,545,545,545,545,545,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,545,545,545,545,545,545,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,546,546,546,546,546,546,546,546,546,546,539,539,539,539,539,539,539,546,546,546,546,546,546,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,546,546,546,546,546,546,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,547,547,547,547,547,547,547,547,547,547,539,539,539,539,539,539,539,547,547,547,547,547,547,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,547,547,547,547,547,547,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,548,548,548,548,548,548,548,548,548,548,539,539,539,539,539,539,539,548,548,548,548,548,548,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,548,548,548,548,548,548,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,542,539,532,539,539,539,532,539,539,539,539,530,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,532,539,539,539,539,539,530,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,548,548,548,548,548,548,548,548,548,548,539,539,539,539,539,539,539,548,548,548,548,548,548,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,548,548,548,548,548,548,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,530,539,549,550,552,552,552,552,552,552,552,552,552,552,551,551,551,551,551,551,551,552,552,552,552,552,552,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,552,552,552,552,552,552,551,551,554,553,553,553,554,553,553,553,553,555,556,555,555,555,553,553,553,553,553,553,553,553,553,553,553,553,554,553,553,553,553,553,555,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,557,553,555,558,555,555,555,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,555,558,559,560,560,560,559,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,559,560,562,561,561,561,562,561,561,561,561,561,563,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,562,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,564,561,565,566,566,566,565,566,566,566,566,566,567,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,565,566,569,568,568,568,569,568,568,568,568,568,570,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,569,568,568,568,568,568,568,568,568,571,568,573,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,574,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,575,572,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,83,83,83,83,83,83,83,83,83,83,576,576,576,576,576,576,576,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,576,576,576,576,83,576,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,576,576,576,576,576,83,86,86,86,86,86,86,86,86,86,86,576,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,83,83,83,83,83,83,83,83,83,83,577,577,577,577,577,577,577,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,577,577,577,577,87,577,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,577,577,577,577,577,87,579,578,578,578,579,578,578,578,578,578,580,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,579,578,582,581,581,581,582,581,581,581,581,583,584,583,583,583,581,581,581,581,581,581,581,581,581,581,581,581,582,581,581,581,581,581,583,581,581,585,581,583,586,583,583,583,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,583,586,588,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,589,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,590,587,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,90,90,90,90,90,90,90,90,90,90,591,591,591,591,591,591,591,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,591,591,591,591,90,591,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,591,591,591,591,591,90,93,93,93,93,93,93,93,93,93,93,591,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,90,90,90,90,90,90,90,90,90,90,592,592,592,592,592,592,592,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,592,592,592,592,94,592,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,592,592,592,592,592,94,594,593,593,593,594,593,593,593,593,595,596,595,595,595,593,593,593,593,593,593,593,593,593,593,593,593,594,593,593,593,593,593,595,593,595,597,595,595,595,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,595,597,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,598,598,598,598,598,598,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,598,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,600,600,600,600,600,600,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,600,601,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,602,98,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,96,96,96,96,96,96,96,96,96,96,603,603,603,603,603,603,603,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,603,603,603,603,96,603,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,603,603,603,603,603,96,100,100,100,100,100,100,100,100,100,100,603,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,101,101,101,101,101,101,101,101,101,101,604,604,604,604,604,604,604,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,604,604,604,604,101,604,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,604,604,604,604,604,101,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,103,103,103,103,103,103,103,103,103,103,605,605,605,605,605,605,605,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,605,605,605,605,103,605,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,605,605,605,605,605,103,607,608,608,608,607,608,608,608,608,609,610,609,609,609,608,608,608,608,608,608,608,608,608,608,608,608,607,608,608,608,608,608,609,611,608,612,613,614,615,608,608,608,616,617,608,617,608,618,608,608,608,608,608,608,608,608,608,608,619,608,620,621,622,608,608,623,624,623,623,625,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,626,627,608,618,628,618,629,630,631,632,633,634,606,606,635,606,606,606,636,637,638,606,606,639,640,641,642,606,643,606,644,606,608,645,608,617,608,606,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,647,646,646,646,646,646,646,646,646,646,646,646,646,646,646,606,606,606,606,606,606,606,606,606,606,646,646,646,647,646,647,646,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,646,646,646,646,606,646,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,646,646,646,646,646,606,609,648,609,609,609,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,609,648,649,618,650,650,618,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,618,650,651,652,653,654,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,105,105,655,105,655,105,105,655,655,105,105,105,657,105,105,658,658,658,658,658,658,658,658,658,658,105,105,105,105,105,105,105,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,655,105,655,655,656,105,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,655,655,655,105,655,656,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,656,656,656,656,656,656,656,656,656,656,659,659,659,659,659,659,659,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,659,659,659,659,656,659,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,659,659,659,659,659,656,658,658,658,658,658,658,658,658,658,658,659,660,650,618,650,618,650,618,650,662,661,618,663,650,618,650,664,618,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,618,655,618,650,618,618,650,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,647,646,646,646,646,646,646,646,646,646,646,646,646,646,646,623,623,623,623,623,623,623,623,623,623,646,646,646,647,646,647,646,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,646,646,646,646,623,646,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,646,646,646,646,646,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,623,666,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,623,623,623,667,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,623,623,623,623,623,668,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,623,623,623,623,623,623,623,623,623,623,669,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,623,623,623,623,623,623,623,623,623,623,670,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,647,665,665,665,665,665,665,665,665,665,665,665,665,665,665,623,623,623,623,623,623,623,623,623,623,665,665,665,647,665,647,665,623,623,623,669,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,623,665,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,665,665,665,665,665,623,664,655,610,655,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,672,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,673,674,606,606,606,606,606,675,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,676,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,677,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,678,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,679,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,680,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,681,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,682,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,683,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,684,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,685,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,686,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,682,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,687,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,686,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,688,606,689,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,690,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,691,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,692,606,606,606,606,606,606,606,606,606,606,606,606,693,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,694,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,695,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,696,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,697,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,698,606,606,606,606,606,606,606,606,606,606,699,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,700,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,701,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,691,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,702,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,703,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,647,704,704,704,704,704,704,704,704,704,704,704,704,704,704,606,606,606,606,606,606,606,606,606,606,704,704,704,647,704,647,704,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,704,704,704,704,606,704,606,606,606,606,606,606,606,606,705,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,704,704,704,704,704,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,706,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,707,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,708,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,709,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,710,606,711,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,712,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,684,606,606,606,713,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,714,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,715,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,700,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,716,606,606,606,606,606,606,606,606,606,606,606,606,606,638,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,698,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,684,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,717,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,718,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,719,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,700,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,720,606,606,606,721,606,606,606,606,606,722,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,722,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,723,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,724,606,606,606,606,606,606,606,606,606,606,606,606,606,606,725,726,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,727,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,700,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,728,606,606,729,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,684,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,695,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,730,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,731,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,713,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,732,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,638,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,733,606,606,606,606,606,606,606,606,606,727,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,695,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,606,606,734,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,735,606,606,606,606,606,606,606,736,606,606,606,606,606,606,606,737,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,713,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,701,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,721,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,738,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,695,606,606,606,719,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,739,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,740,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,647,671,671,671,671,671,671,671,671,671,671,671,671,671,671,606,606,606,606,606,606,606,606,606,606,671,671,671,647,671,647,671,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,606,671,606,606,606,606,606,606,606,606,606,606,606,689,606,606,606,606,606,606,606,606,606,606,606,606,606,606,671,671,671,671,671,606,618,650,742,743,743,743,742,743,743,743,743,744,743,744,744,744,743,743,743,743,743,743,743,743,743,743,743,743,742,743,743,743,743,743,744,743,743,745,743,743,743,743,743,743,743,743,743,743,746,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,743,747,743,743,741,743,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,743,743,743,743,743,741,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,110,748,748,748,748,748,748,748,748,748,748,748,748,748,748,109,109,109,109,109,109,109,109,109,109,111,748,748,748,748,110,748,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,748,748,748,748,109,748,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,748,748,748,748,748,109,744,749,744,744,744,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,744,749,750,751,752,753,754,748,755,748,756,758,759,759,759,758,759,759,759,759,760,761,760,760,760,759,759,759,759,759,759,759,759,759,759,759,759,758,759,759,759,759,759,760,762,759,763,759,764,765,759,759,759,766,767,759,767,759,764,759,759,759,759,759,759,759,759,759,759,759,759,768,769,770,759,759,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,772,773,759,764,757,764,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,759,774,759,767,759,757,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,776,775,775,775,775,775,775,775,775,775,775,775,775,775,775,757,757,757,757,757,757,757,757,757,757,775,775,775,775,775,776,775,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,775,775,775,775,757,775,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,775,775,775,775,775,757,778,777,779,760,780,760,760,760,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,760,780,781,764,782,782,764,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,764,782,783,784,785,786,764,782,764,782,764,782,764,787,782,764,782,789,764,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,764,788,764,782,764,764,782,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,776,790,790,790,790,790,790,790,790,790,790,790,790,790,790,771,771,771,771,771,771,771,771,771,771,790,790,790,790,790,776,790,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,790,790,790,790,771,790,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,790,790,790,790,790,771,789,788,761,788,764,782,792,791,791,791,792,791,791,791,791,793,794,793,793,793,791,791,791,791,791,791,791,791,791,791,791,791,792,791,791,791,791,791,793,791,791,795,791,120,796,791,797,791,798,120,151,799,153,120,791,791,791,791,791,791,791,791,791,791,800,791,801,151,802,803,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,151,804,151,120,791,791,791,791,791,791,791,791,791,791,805,791,791,791,791,791,791,791,791,806,791,791,807,791,808,791,791,791,164,165,791,120,791,809,809,809,809,809,809,809,809,809,793,809,793,793,793,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,793,809,809,809,809,146,147,809,148,809,149,150,151,152,153,146,809,809,809,809,809,809,809,809,809,809,154,809,155,151,156,157,809,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,158,159,151,120,115,809,115,115,115,115,115,115,115,115,160,115,115,115,115,115,115,115,115,161,115,115,162,115,163,115,115,115,164,165,809,120,809,115,810,811,811,811,810,811,811,811,811,151,812,151,151,151,811,811,811,811,811,811,811,811,811,811,811,811,810,811,811,811,811,811,151,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,151,811,151,812,151,151,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,114,114,114,114,114,120,114,114,114,114,114,114,114,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,114,151,812,151,151,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,114,813,151,812,151,151,151,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,151,814,814,814,814,814,814,814,814,814,815,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,151,814,151,812,151,151,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,151,151,114,816,810,151,810,818,817,820,821,820,820,820,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,820,819,822,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,116,810,810,810,810,810,810,810,810,810,810,810,810,810,810,115,115,115,115,115,115,115,115,115,115,117,810,810,810,810,116,810,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,810,810,810,810,115,810,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,810,810,810,810,810,115,823,151,812,151,151,151,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,151,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,151,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,120,810,824,825,826,827,828,829,151,812,151,151,151,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,151,810,810,810,810,810,810,810,810,810,120,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,151,810,151,817,120,830,120,830,831,832,831,831,831,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,831,819,833,830,834,834,834,834,834,834,834,834,834,123,834,123,123,123,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,123,834,834,834,834,124,125,834,126,834,127,128,129,130,131,124,834,834,834,834,834,834,834,834,834,834,132,834,133,129,134,135,834,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,136,137,129,138,122,834,122,122,122,122,122,122,122,122,139,122,122,122,122,122,122,122,122,140,122,122,141,122,142,122,122,122,143,144,834,138,834,122,151,830,835,830,836,830,837,830,838,190,190,190,838,190,190,190,190,839,190,839,839,839,190,190,190,190,190,190,190,190,190,190,190,190,838,190,190,190,190,190,839,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,190,840,190,190,192,190,192,192,192,196,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,190,190,190,190,190,192,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,841,189,189,189,189,189,189,189,189,189,189,189,189,189,189,192,192,192,192,192,192,192,192,192,192,190,189,189,189,189,841,189,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,189,189,189,189,192,189,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,189,189,189,189,189,192,842,842,842,842,842,842,842,842,842,193,842,193,193,193,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,193,842,842,842,842,842,842,842,194,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,842,195,842,842,192,842,192,192,192,196,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,842,842,842,842,842,192,843,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,841,842,842,842,842,842,842,842,842,842,842,842,842,842,842,192,192,192,192,192,192,192,192,192,192,190,842,842,842,842,841,842,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,842,842,842,842,192,842,192,192,192,192,192,192,192,192,192,192,192,192,192,192,844,192,192,192,192,192,192,192,192,192,192,192,842,842,842,842,842,192,197,842,846,845,845,845,846,845,845,845,845,847,845,847,847,847,845,845,845,845,845,845,845,845,845,845,845,845,846,845,845,845,845,845,847,845,845,848,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,849,845,845,845,845,845,845,845,850,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,851,845,847,852,847,847,847,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,847,852,853,854,855,856,858,857,859,860,857,861,863,864,864,864,863,864,864,864,864,865,866,865,865,865,864,864,864,864,864,864,864,864,864,864,864,864,863,864,864,864,864,864,865,864,864,867,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,864,868,864,864,862,864,862,862,862,862,862,862,862,862,869,862,862,862,862,862,862,862,862,870,862,862,871,862,872,862,862,862,864,864,864,864,864,862,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,873,862,862,862,862,862,862,862,862,862,862,873,873,873,873,873,873,873,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,873,873,873,873,862,873,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,873,873,873,873,873,862,865,874,865,865,865,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,874,865,874,875,876,877,878,879,881,880,882,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,884,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,885,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,886,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,887,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,888,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,884,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,862,862,889,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,890,862,862,862,862,862,862,862,891,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,892,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,893,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,884,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,894,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,884,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,895,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,896,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,883,883,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,862,883,862,862,862,862,862,862,862,862,862,862,862,888,862,862,862,862,862,862,862,862,862,862,862,862,862,862,883,883,883,883,883,862,898,221,221,221,898,221,221,221,221,899,900,899,899,899,221,221,221,221,221,221,221,221,221,221,221,221,898,221,221,221,221,221,899,901,221,902,221,903,904,221,905,221,906,907,221,908,909,910,221,221,221,221,221,221,221,221,221,221,911,221,912,913,914,915,221,916,917,916,916,918,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,916,919,920,221,921,922,221,923,924,925,926,927,928,897,897,929,897,897,897,930,931,932,897,897,933,934,935,936,897,937,897,938,897,939,940,221,921,221,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,945,944,944,946,944,947,949,950,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,951,948,953,952,954,955,956,899,957,899,899,899,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,899,957,959,958,961,962,961,961,961,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,961,960,221,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,221,963,964,965,966,967,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,968,968,968,968,968,968,968,968,968,968,969,969,969,969,969,969,969,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,969,969,969,969,969,969,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,969,969,969,969,969,968,972,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,221,971,973,975,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,221,974,221,211,222,223,222,222,222,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,222,971,971,224,971,971,971,971,971,971,971,971,971,971,971,971,225,225,225,225,225,225,225,225,225,225,971,971,971,221,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,226,971,239,240,239,239,239,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,239,238,238,241,238,238,238,238,238,238,238,238,238,238,238,238,242,242,242,242,242,242,242,242,242,242,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,243,238,222,223,222,222,222,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,222,971,971,224,971,971,971,971,971,971,971,971,971,971,971,971,225,225,225,225,225,225,225,225,225,225,971,971,971,221,221,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,226,971,977,963,979,978,981,980,963,982,982,982,963,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,982,963,982,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,984,985,963,986,247,987,985,963,963,988,989,963,989,963,247,963,963,963,963,963,963,963,963,963,963,990,963,991,992,993,963,994,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,995,963,963,247,983,247,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,963,996,963,997,963,983,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,999,998,998,998,998,998,998,998,998,998,998,998,998,998,998,983,983,983,983,983,983,983,983,983,983,998,998,998,1e3,998,999,998,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,998,998,998,998,983,998,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,998,998,998,998,998,983,1002,1001,1003,1005,1006,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1004,1007,1004,1009,1010,1008,1011,1012,1013,1014,247,998,998,1015,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,247,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,998,246,246,246,246,246,246,246,246,246,246,998,998,998,998,998,998,998,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,998,998,998,998,246,998,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,998,998,998,998,998,246,249,249,249,249,249,249,249,249,249,249,998,1016,998,247,998,247,998,247,1017,998,247,998,247,998,247,247,998,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,1018,1018,1018,1018,1018,1018,1021,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1018,1018,1018,1018,1019,1018,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1018,1018,1018,1018,1018,1019,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1022,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1024,1026,1026,1026,1026,1026,1026,1026,1026,1026,1026,1024,1024,1024,1024,1024,1024,1024,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1024,1024,1024,1024,1025,1024,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1025,1024,1024,1024,1024,1024,1025,1016,998,1015,998,1027,1028,963,1029,262,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,263,252,264,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,263,253,263,266,221,963,921,221,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,221,963,221,972,963,1033,1032,1032,1032,1033,1032,1032,1032,1032,1034,1035,1034,1034,1034,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1033,1032,1032,1032,1032,1032,1034,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1032,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1032,1037,1032,1032,1036,1032,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1036,1032,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1038,1038,1038,1038,1039,1038,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1039,1038,1038,1038,1038,1038,1039,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1040,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1040,1040,1040,1040,1040,1040,1040,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1040,1040,1040,1040,1041,1040,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,1040,1040,1040,1040,1040,1041,1044,1043,1043,1043,1044,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1044,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1045,1045,1045,1045,1045,1045,1045,1045,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1046,1043,1043,1043,1043,1043,1043,1043,1043,1043,1047,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1048,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1043,1049,1043,1043,1050,1043,1051,1052,1054,1054,1054,1054,1054,1054,1054,1054,1053,1055,1055,1055,1055,1055,1055,1055,1055,1053,1053,1056,1056,290,290,290,1056,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,1056,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,291,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,1057,290,1058,1059,1060,1060,290,290,290,1060,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,1060,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,291,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,1061,290,289,1060,1062,1063,1064,1064,275,275,275,1064,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,1064,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,276,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,1065,275,1066,1066,1066,1066,1066,1066,1066,1066,1066,1066,1064,1064,1064,1064,1064,1064,1064,1066,1066,1066,1066,1066,1066,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1064,1066,1066,1066,1066,1066,1066,1064,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1067,1067,1067,1067,1067,1067,1067,1068,1068,1068,1068,1068,1068,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1068,1068,1068,1068,1068,1068,1067,1067,1069,1069,1069,1069,1069,1069,1069,1069,1069,1069,1060,1060,1060,1060,1060,1060,1060,1069,1069,1069,1069,1069,1069,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1060,1069,1069,1069,1069,1069,1069,1060,1071,1071,1071,1071,1071,1071,1071,1071,1071,1071,1070,1070,1070,1070,1070,1070,1070,1071,1071,1071,1071,1071,1071,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1070,1071,1071,1071,1071,1071,1071,1070,1070,1060,268,268,268,1060,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1060,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1072,268,1056,275,275,275,1056,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,1056,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,276,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,277,275,1056,1073,1073,1073,1056,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1056,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1074,1073,1075,1076,1076,1073,1073,1073,1076,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1076,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1073,1077,1073,1078,1078,1078,1078,1078,1078,1078,1078,1078,1078,1076,1076,1076,1076,1076,1076,1076,1078,1078,1078,1078,1078,1078,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1076,1078,1078,1078,1078,1078,1078,1076,1080,1080,1080,1080,1080,1080,1080,1080,1080,1080,1079,1079,1079,1079,1079,1079,1079,1080,1080,1080,1080,1080,1080,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1080,1080,1080,1080,1080,1080,1079,1079,1076,268,268,268,1076,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1076,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,1072,268,1081,1076,1076,275,275,275,1076,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,1076,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,276,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,277,275,1083,1083,1083,1083,1083,1083,1083,1083,1083,1083,1082,1082,1082,1082,1082,1082,1082,1083,1083,1083,1083,1083,1083,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1083,1083,1083,1083,1083,1083,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1084,1082,1085,1085,1085,1085,1085,1085,1085,1085,1085,1085,1082,1082,1082,1082,1082,1082,1082,1085,1085,1085,1085,1085,1085,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1085,1085,1085,1085,1085,1085,1082,1086,1086,1086,1086,1086,1086,1086,1086,1086,1086,1082,1082,1082,1082,1082,1082,1082,1086,1086,1086,1086,1086,1086,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1086,1086,1086,1086,1086,1086,1082,1087,1087,1087,1087,1087,1087,1087,1087,1087,1087,1082,1082,1082,1082,1082,1082,1082,1087,1087,1087,1087,1087,1087,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1082,1087,1087,1087,1087,1087,1087,1082,1088,1091,1090,1090,1090,1091,1090,1090,1090,1090,1092,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1091,1090,1090,1090,1090,1090,1092,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1093,1093,1093,1093,1093,1093,1093,1093,1093,1093,1090,1090,1090,1090,1090,1090,1090,1093,1093,1093,1093,1093,1093,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1093,1093,1093,1093,1093,1093,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1094,1090,1091,1090,1090,1090,1091,1090,1090,1090,1090,1089,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1091,1090,1090,1090,1090,1090,1089,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1090,1090,1090,1090,1090,1090,1090,1095,1095,1095,1095,1095,1095,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1095,1095,1095,1095,1095,1095,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1096,1090,1089,1091,1095,1095,1095,1091,1095,1095,1095,1095,1089,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1091,1095,1095,1095,1095,1095,1089,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1089,1095,1097,1091,1098,1098,1098,1091,1098,1098,1098,1098,1092,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1092,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1089,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1089,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1098,1098,1098,1098,1098,1098,1098,1095,1095,1095,1095,1095,1095,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1095,1095,1095,1095,1095,1095,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,1098,1098,1098,1098,1098,1098,1098,1101,1101,1101,1101,1101,1101,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1101,1101,1101,1101,1101,1101,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1099,1099,1099,1099,1099,1099,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1103,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1098,1098,1098,1098,1098,1098,1098,1104,1104,1104,1104,1104,1104,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1104,1104,1104,1104,1104,1104,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1105,1105,1105,1105,1105,1105,1105,1105,1105,1105,1098,1098,1098,1098,1098,1098,1098,1105,1105,1105,1105,1105,1105,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1105,1105,1105,1105,1105,1105,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1106,1106,1106,1106,1106,1106,1106,1106,1106,1106,1098,1098,1098,1098,1098,1098,1098,1106,1106,1106,1106,1106,1106,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1106,1106,1106,1106,1106,1106,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1107,1107,1107,1107,1107,1107,1107,1107,1107,1107,1098,1098,1098,1098,1098,1098,1098,1107,1107,1107,1107,1107,1107,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1107,1107,1107,1107,1107,1107,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1100,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1089,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1089,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1110,1110,1110,1110,1110,1110,1110,1110,1110,1110,1098,1098,1098,1098,1098,1098,1098,1110,1110,1110,1110,1110,1110,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1110,1110,1110,1110,1110,1110,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1111,1111,1111,1111,1111,1111,1111,1111,1111,1111,1098,1098,1098,1098,1098,1098,1098,1111,1111,1111,1111,1111,1111,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1111,1111,1111,1111,1111,1111,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1112,1112,1112,1112,1112,1112,1112,1112,1112,1112,1098,1098,1098,1098,1098,1098,1098,1112,1112,1112,1112,1112,1112,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1112,1112,1112,1112,1112,1112,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1098,1098,1098,1098,1098,1098,1098,1113,1113,1113,1113,1113,1113,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1113,1113,1113,1113,1113,1113,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1114,1114,1114,1114,1114,1114,1114,1114,1114,1114,1098,1098,1098,1098,1098,1098,1098,1114,1114,1114,1114,1114,1114,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1114,1114,1114,1114,1114,1114,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1115,1115,1115,1115,1115,1115,1115,1115,1115,1115,1098,1098,1098,1098,1098,1098,1098,1115,1115,1115,1115,1115,1115,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1115,1115,1115,1115,1115,1115,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,1098,1098,1098,1098,1098,1098,1098,1116,1116,1116,1116,1116,1116,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1116,1116,1116,1116,1116,1116,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1089,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1098,1098,1098,1098,1098,1098,1098,1117,1117,1117,1117,1117,1117,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1117,1117,1117,1117,1117,1117,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1118,1118,1118,1118,1118,1118,1118,1118,1118,1118,1098,1098,1098,1098,1098,1098,1098,1118,1118,1118,1118,1118,1118,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1118,1118,1118,1118,1118,1118,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1119,1119,1119,1119,1119,1119,1119,1119,1119,1119,1098,1098,1098,1098,1098,1098,1098,1119,1119,1119,1119,1119,1119,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1119,1119,1119,1119,1119,1119,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1120,1120,1120,1120,1120,1120,1120,1120,1120,1120,1098,1098,1098,1098,1098,1098,1098,1120,1120,1120,1120,1120,1120,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1120,1120,1120,1120,1120,1120,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1091,1098,1098,1098,1091,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1091,1098,1098,1098,1098,1098,1109,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1108,1108,1108,1108,1108,1108,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1102,1098,1121,1122,1124,1124,1124,1124,1124,1124,1124,1124,1124,1124,1123,1123,1123,1123,1123,1123,1123,1124,1124,1124,1124,1124,1124,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1123,1124,1124,1124,1124,1124,1124,1123,1123,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,296,211,211,211,211,211,211,211,211,211,211,211,211,211,211,295,295,295,295,295,295,295,295,295,295,297,211,211,298,211,296,211,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,211,211,211,211,295,211,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,211,211,211,211,211,295,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,296,963,963,963,963,963,963,963,963,963,963,963,963,963,963,295,295,295,295,295,295,295,295,295,295,297,963,963,298,963,296,963,295,295,295,295,1125,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,963,963,963,963,295,963,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,963,963,963,963,963,295,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,296,963,963,963,963,963,963,963,963,963,963,963,963,963,963,295,295,295,295,295,295,295,295,295,295,297,963,963,298,963,296,963,295,295,295,295,295,295,295,295,295,295,295,295,295,1126,295,295,295,295,295,295,295,295,295,295,295,295,963,963,963,963,295,963,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,963,963,963,963,963,295,1127,1128,963,958,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,1129,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,1130,1131,897,897,897,897,897,1132,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,1133,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,1134,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1135,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,1136,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,1137,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,1138,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,1139,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,1140,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,1141,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,296,211,211,211,211,211,211,211,211,211,211,211,211,211,211,897,897,897,897,897,897,897,897,897,897,297,211,211,298,211,296,211,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,211,211,211,211,897,211,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,211,211,211,211,211,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,1142,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,1143,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,1139,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,1144,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,1143,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1145,897,1146,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,1147,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,1148,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1149,897,897,897,897,897,897,897,897,897,897,897,897,1150,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,1151,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,1152,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1153,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,1154,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,1155,897,897,897,897,897,897,897,897,897,897,1156,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1157,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,1158,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1148,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1159,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1160,897,1161,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1162,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1141,897,897,897,1159,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1163,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1164,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1157,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,1165,897,897,897,897,897,897,897,897,897,897,897,897,897,932,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1155,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,1166,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1167,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,1168,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1169,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1157,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1170,897,897,897,1171,897,897,897,897,897,1172,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1172,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1173,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,1174,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1175,1176,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,1177,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1178,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1179,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1182,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1183,1180,1180,1184,1180,1182,1180,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1180,1180,1180,1180,1181,1180,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,1180,1180,1180,1180,1180,1181,949,1185,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,951,948,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1186,897,897,1187,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1141,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1152,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1188,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1189,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1159,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1190,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,932,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,1191,897,897,897,897,897,897,897,897,897,1192,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1152,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1157,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,1193,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,1194,897,897,897,897,897,897,897,1195,897,897,897,897,897,897,897,1196,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1159,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1197,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1198,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,1166,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,1199,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1166,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,1200,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1152,897,897,897,1201,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1202,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1166,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,1203,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,1204,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,941,941,941,941,941,941,941,941,941,942,941,942,942,942,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,941,942,296,941,941,941,941,941,941,941,941,941,941,941,941,941,941,897,897,897,897,897,897,897,897,897,897,297,941,941,298,941,296,941,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,943,941,941,897,941,897,897,897,897,897,897,897,897,897,897,897,1146,897,897,897,897,897,897,897,897,897,897,897,897,897,897,941,941,941,941,941,897,1205,221,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,963,1206,963,1208,1207,1207,1207,1208,1207,1207,1207,1207,1209,1210,1209,1209,1209,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1208,1207,1207,1207,1207,1207,1209,1207,1207,1211,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1212,1207,1209,1213,1209,1209,1209,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1213,1209,1213,1214,1215,1216,1217,1218,1220,1219,1221,1223,1224,1224,1224,1223,1224,1224,1224,1224,1225,1226,1225,1225,1225,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1223,1224,1224,1224,1224,1224,1225,1224,1227,1228,1224,1224,1224,1227,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1224,1229,1224,1224,1222,1224,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1222,1224,1224,1224,1224,1224,1222,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,304,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,1230,303,303,303,303,303,303,303,303,303,303,305,1230,1230,1230,1230,304,1230,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,1230,1230,1230,1230,303,1230,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,1230,1230,1230,1230,1230,303,1225,1231,1225,1225,1225,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1225,1231,1232,1233,1234,1235,1236,1237,1230,1238,1240,1241,1241,1241,1240,1241,1241,1241,1241,1242,1243,1242,1242,1242,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1240,1241,1241,1241,1241,1241,1242,1244,1245,1246,1247,1248,1249,1245,1250,1251,1252,1248,1253,1254,1255,1248,1256,1257,1257,1257,1257,1257,1257,1257,1257,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1265,1265,1267,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1268,1269,1270,1248,1271,1245,1272,1273,1274,1275,1276,1277,1239,1239,1278,1239,1239,1239,1279,1280,1281,1239,1239,1282,1283,1284,1285,1239,1286,1239,1287,1239,1288,1289,1290,1291,1241,1239,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,1292,313,313,313,313,313,313,313,313,313,313,313,313,313,313,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,313,313,313,313,313,1292,313,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,313,313,313,313,1239,313,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,313,313,313,313,313,1239,1294,1293,1295,1242,1296,1242,1242,1242,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1296,1242,1296,1297,1299,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1299,1298,1300,1301,1302,1303,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,308,308,1304,308,1304,308,308,1304,1304,308,308,308,1305,308,308,1306,1306,1306,1306,1306,1306,1306,1306,1306,1306,308,308,308,308,308,308,308,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1304,308,1304,1304,325,308,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1304,1304,1304,308,1304,325,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,1307,325,325,325,325,325,325,325,325,325,325,1307,1307,1307,1307,1307,1307,1307,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1307,1307,1307,1307,325,1307,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1307,1307,1307,1307,1307,325,1306,1306,1306,1306,1306,1306,1306,1306,1306,1306,1307,1308,313,1248,1309,1309,1309,1309,1309,1309,1309,1310,1309,1309,1309,1309,1309,1309,1309,1309,1309,1309,1309,1309,1309,1309,1308,1309,1311,1312,1248,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1313,1308,1313,1308,1314,1309,1316,1315,312,312,312,312,312,312,312,312,312,312,1315,1318,1317,1319,1317,312,312,312,312,312,312,312,312,312,312,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1321,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1322,1320,1320,1320,1320,1320,1321,1320,311,311,311,311,311,311,311,311,311,311,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,1320,310,1320,1324,1323,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1323,1323,1323,1323,1323,1323,1323,1323,1326,1323,1327,1328,1323,1323,1323,1323,1323,1323,1323,1323,1323,1329,1323,1323,1323,1323,1323,1323,1323,1323,1330,1323,1323,1323,1323,1323,1323,1331,1323,1323,1326,1323,1327,1328,1323,1323,1323,1332,1323,1323,1323,1323,1323,1329,1323,1323,1333,1323,1323,1323,1323,1323,1330,1323,314,314,314,314,314,314,314,314,314,314,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1335,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1334,1336,1334,1334,1334,1334,1334,1335,1334,1334,1334,1337,1334,1334,1334,1334,1334,1334,1334,1334,1338,1334,1339,313,1339,313,313,315,315,315,315,315,315,315,315,315,315,313,315,315,315,315,315,315,315,315,315,315,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1340,1339,1340,1340,1340,1340,1340,1340,1340,1340,1340,1341,1340,1343,1342,1344,1346,1345,1345,1345,1347,1345,1348,1349,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1331,1323,1323,1323,1323,1323,1323,1323,1323,1323,1332,1323,1323,1323,1323,1323,1323,1323,1323,1333,1323,1350,1350,1350,1350,1350,1350,1350,1350,1350,1350,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1323,1351,1323,1323,1323,1323,1323,1323,1323,1323,1323,1332,1323,1323,1323,1323,1323,1323,1323,1323,1333,1323,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1354,1352,1352,1352,1352,1352,1352,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1357,1352,1352,1352,1352,1352,1352,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1359,1358,1360,1362,1361,1361,1361,1363,1361,1365,1364,1366,1367,1369,1369,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1368,1370,1368,1368,1368,1368,1368,1368,1368,1368,1368,1371,1368,1368,1368,1368,1368,1368,1368,1368,1372,1368,1373,1373,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1374,1352,1352,1352,1352,1352,1352,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1373,1373,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1357,1352,1352,1352,1352,1352,1352,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1376,1376,1376,1376,1376,1376,1376,1376,1376,1376,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1375,1377,1375,1375,1375,1375,1375,1375,1375,1375,1375,1378,1375,1375,1375,1375,1375,1375,1375,1375,1379,1375,1381,1381,1381,1381,1381,1381,1381,1381,1381,1381,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1380,1382,1380,1380,1380,1380,1380,1380,1380,1380,1380,1383,1380,1380,1380,1380,1380,1380,1380,1380,1384,1380,1386,1386,1386,1386,1386,1386,1386,1386,1386,1386,1385,1385,1385,1385,1385,1385,1385,1386,1386,1386,1386,1386,1386,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1385,1387,1385,1386,1386,1386,1386,1386,1386,1385,1385,1388,1385,1385,1385,1385,1385,1385,1385,1385,1389,1385,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1352,1352,1352,1352,1352,1352,1352,1390,1390,1390,1390,1390,1390,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1391,1352,1390,1390,1390,1390,1390,1390,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1352,1352,1352,1352,1352,1352,1352,1390,1390,1390,1390,1390,1390,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1357,1352,1390,1390,1390,1390,1390,1390,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1393,1392,1394,1394,1394,1394,1394,1394,1394,1394,1394,1394,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1395,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1396,1392,1392,1392,1392,1392,1395,1392,1392,1392,1397,1392,1392,1392,1392,1392,1392,1392,1392,1398,1392,1399,1399,1399,1399,1399,1399,1399,1399,1399,1399,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1392,1400,1392,1392,1392,1392,1392,1392,1392,1392,1392,1397,1392,1392,1392,1392,1392,1392,1392,1392,1398,1392,1401,1352,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1403,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1404,1352,1352,1352,1352,1352,1403,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1402,1402,1402,1402,1402,1402,1402,1402,1402,1402,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1352,1357,1352,1352,1352,1352,1352,1352,1352,1352,1352,1355,1352,1352,1352,1352,1352,1352,1352,1352,1356,1352,1310,1317,1248,1405,1309,1299,1309,1406,1407,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1317,1299,1317,1299,1309,1299,1248,1309,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,1304,325,325,325,325,325,325,325,325,325,325,1304,1304,1304,1304,1304,1304,1408,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1304,1304,1304,1304,325,1304,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,1304,1304,1304,1304,1304,325,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,1292,313,313,313,313,313,313,313,313,313,313,313,313,313,313,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,313,313,313,313,1292,313,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,313,313,313,313,1265,313,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,313,313,313,313,313,1265,1410,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1265,1412,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1265,1265,1265,1413,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1265,1265,1265,1265,1265,1414,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1415,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1416,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1292,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1409,1411,1411,1411,1411,1292,1411,1265,1265,1265,1415,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1265,1411,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1411,1411,1411,1411,1411,1265,1417,1419,1418,1420,1421,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1423,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1424,1425,1239,1239,1239,1239,1239,1426,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1427,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1428,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1429,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1430,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1431,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1432,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1433,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1434,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1435,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1436,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1437,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1438,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1439,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1440,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1441,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1437,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1442,1239,1443,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1444,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1445,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1446,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1448,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1449,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1450,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1451,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1452,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1453,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1454,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1455,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1456,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1457,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1458,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1459,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1460,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1461,1461,1461,1461,1461,1461,1461,1461,1461,327,328,327,327,327,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,327,1292,1461,329,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1461,1461,330,1461,1461,1292,1461,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1461,331,1461,1461,1239,1461,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1461,1461,1461,1461,1461,1239,344,345,344,344,344,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,343,343,346,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,349,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,348,343,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1463,1239,1239,1239,1239,1239,1239,1239,1239,1239,1464,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1465,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1292,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1466,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1466,1466,1466,1466,1466,1292,1466,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1466,1466,1466,1466,1239,1466,1239,1239,1239,1239,1239,1239,1239,1239,1467,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1466,1466,1466,1466,1466,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1468,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1469,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1470,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1471,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1472,1239,1473,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1474,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1447,1239,1239,1239,1475,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1440,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1476,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1477,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1457,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1478,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1281,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1479,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1480,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1440,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1481,1239,1239,1239,1239,1239,1239,1239,1447,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1482,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1483,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1484,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1457,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1485,1239,1239,1239,1486,1239,1239,1239,1239,1239,1487,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1488,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1454,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1440,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1489,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1490,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1491,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1492,1493,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1440,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1494,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1495,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1481,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1496,1239,1239,1497,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1440,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1498,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1454,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1499,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1500,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1501,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1440,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1502,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1503,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1489,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1504,1239,1239,1239,1239,1239,1239,1239,1239,1239,1505,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1451,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1480,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1506,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1507,1239,1239,1239,1239,1239,1239,1239,1508,1239,1239,1239,1239,1239,1239,1239,1509,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1510,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1446,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1511,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1512,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1481,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1513,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1481,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1514,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1451,1239,1239,1239,1515,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1516,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1481,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1517,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1518,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1519,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1292,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1292,1422,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1239,1422,1239,1239,1239,1489,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1422,1422,1422,1422,1422,1239,1520,1308,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1298,1248,1298,1521,1523,1522,1523,1523,1523,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1523,1522,1522,1524,1522,1522,1525,1522,1522,1522,1522,1522,1522,1522,357,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1522,1526,1522,353,354,353,353,353,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,353,1527,1527,355,1527,1527,356,1527,1527,1527,1527,1527,1527,1527,357,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,1527,358,1527,360,1528,360,360,360,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,360,1528,1528,355,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,1528,358,1528,1530,1529,1532,1531,363,362,368,1527,366,1527,1534,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1535,1533,1534,1533,1534,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1537,1533,1534,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1538,1533,1534,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1539,1533,1541,1539,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_trans_targs"),self.$private("_lex_trans_targs","_lex_trans_targs=")}(Opal.get_singleton_class(self)),$send(self,"_lex_trans_targs=",$to_a($writer=[[186,2,3,4,192,6,7,8,9,10,186,186,195,198,195,12,199,200,14,195,207,208,211,212,224,221,213,214,215,19,216,217,218,226,228,229,233,234,235,230,25,18,209,210,27,258,259,261,263,261,30,264,265,32,261,272,273,276,277,289,286,278,279,280,37,281,282,283,291,293,294,298,299,300,295,43,36,274,275,45,323,324,331,333,331,48,334,335,50,337,340,337,52,341,342,54,348,347,0,56,349,350,58,351,352,352,352,352,465,61,62,63,465,465,494,65,66,494,494,498,498,70,65,71,496,497,499,500,498,494,501,502,504,67,68,505,506,69,498,72,73,78,85,508,509,71,496,497,499,500,498,494,501,502,504,67,68,505,506,69,72,73,78,85,508,509,507,74,75,76,77,79,80,83,81,82,84,86,87,494,89,90,91,93,96,94,95,97,99,525,525,525,526,101,528,102,529,103,526,101,528,102,529,563,104,563,105,106,104,563,105,563,563,563,109,110,111,112,574,563,563,563,115,116,117,563,120,115,116,117,563,120,118,118,116,117,584,119,118,118,116,117,584,119,116,563,601,563,122,602,608,126,617,618,131,132,126,127,616,127,616,563,128,129,130,619,133,563,633,634,637,638,650,647,639,640,641,138,642,643,644,652,654,655,659,660,661,656,144,137,635,636,146,697,698,148,565,107,567,150,151,700,802,153,154,155,802,810,810,810,158,832,831,810,834,836,810,163,164,165,840,810,167,168,851,820,873,171,172,173,177,178,171,172,173,177,178,174,174,172,173,175,176,174,174,172,173,175,176,921,172,810,990,179,992,181,185,993,183,990,180,990,182,992,182,992,184,992,990,186,186,187,188,189,191,193,194,186,186,186,190,186,190,186,1,186,186,186,5,195,195,196,195,197,201,195,195,11,13,195,195,195,195,202,203,204,15,21,26,236,28,195,195,195,205,206,195,16,195,195,195,17,195,195,195,20,219,195,220,222,195,223,225,227,22,195,195,23,231,195,232,24,195,237,241,238,239,240,195,195,242,243,246,248,257,244,245,195,247,249,251,250,195,252,253,254,255,256,195,195,195,260,261,261,261,262,266,261,29,31,261,261,261,261,267,268,269,33,39,44,301,46,261,261,261,270,271,261,34,261,261,261,35,261,261,261,38,284,261,285,287,261,288,290,292,40,261,261,41,296,261,297,42,261,302,306,303,304,305,261,261,307,308,311,313,322,309,310,261,312,314,316,315,261,317,318,319,320,321,261,261,261,325,326,326,327,326,328,326,326,326,329,329,329,330,329,329,329,331,331,331,332,331,47,49,331,331,331,336,336,336,337,337,338,337,339,337,337,51,53,337,337,337,343,343,344,343,343,345,346,345,55,57,347,347,347,353,352,352,354,355,356,357,359,362,363,364,365,352,366,367,369,371,372,373,377,379,380,381,397,402,409,414,421,428,431,432,436,430,440,448,452,454,459,461,464,352,352,352,352,352,352,358,352,358,352,360,59,361,352,60,352,352,368,370,352,374,375,376,372,378,352,382,383,392,395,384,385,386,387,388,389,390,391,353,393,394,396,398,401,399,400,403,406,404,405,407,408,410,412,411,413,415,416,352,417,418,419,420,352,422,425,423,424,426,427,429,433,434,435,437,439,438,441,442,443,445,444,446,447,449,450,451,453,455,456,457,458,460,462,463,466,465,465,467,468,470,471,465,465,465,469,465,469,64,472,465,474,473,473,477,478,479,480,473,482,483,484,485,487,489,490,491,492,493,473,475,473,476,473,473,473,473,473,481,473,481,486,473,488,473,494,494,495,510,511,497,513,514,501,515,516,517,518,519,521,522,523,524,494,494,494,494,494,494,498,503,494,494,494,494,494,494,494,494,494,512,494,512,494,494,494,494,520,494,88,92,98,525,527,530,100,525,525,526,531,531,532,533,535,537,538,531,531,534,531,534,531,536,531,531,531,540,539,539,541,542,543,545,547,548,553,560,539,539,539,539,544,539,544,539,546,539,539,540,549,550,551,552,554,555,558,556,557,559,561,562,564,563,572,573,575,576,578,579,580,581,583,585,586,589,590,615,621,622,623,700,701,702,703,704,582,706,723,728,735,740,742,748,751,752,756,750,760,771,775,778,786,790,793,794,563,104,105,563,107,566,563,563,568,570,571,563,569,563,563,563,563,563,108,563,563,563,563,563,577,563,577,563,563,113,563,114,563,563,582,563,587,563,588,563,563,563,591,600,563,121,603,604,605,563,606,123,609,610,124,613,614,563,592,594,563,593,563,563,595,598,599,563,596,597,563,563,563,563,563,563,607,563,601,611,612,563,611,563,601,611,125,620,563,563,563,624,563,563,563,625,627,563,626,563,626,563,628,629,630,134,140,145,662,147,563,563,563,631,632,563,135,563,563,563,136,563,563,563,139,645,563,646,648,563,649,651,653,141,563,563,142,657,563,658,143,563,663,667,664,665,666,563,563,668,669,672,683,696,670,671,563,673,674,675,677,676,563,678,679,680,681,682,684,691,685,686,687,688,689,690,692,693,694,695,563,563,563,699,149,152,563,705,707,708,718,721,709,710,711,712,713,714,715,716,717,719,720,722,724,727,725,726,729,732,730,731,733,734,736,738,737,739,741,743,745,744,746,747,749,717,753,754,755,757,759,758,761,762,763,768,764,765,766,563,564,565,107,767,570,769,770,772,773,774,776,777,779,780,781,784,782,783,785,787,788,789,791,792,563,582,795,795,796,797,798,800,795,795,795,799,795,799,795,801,795,803,802,802,804,805,802,806,808,802,802,802,802,807,802,807,809,802,811,810,810,814,815,816,810,817,819,822,823,824,825,826,810,827,828,833,861,865,810,866,868,870,810,871,872,874,878,880,881,883,884,902,907,914,922,929,936,941,942,946,940,951,961,967,970,979,983,987,988,989,822,812,810,813,810,810,810,810,810,810,818,810,818,810,156,821,810,810,810,810,810,810,810,810,810,829,810,830,810,810,157,159,810,160,842,853,856,835,857,858,843,847,849,810,835,160,837,839,161,810,837,810,838,810,810,162,841,810,810,844,846,810,844,845,847,849,846,810,848,810,810,850,852,810,166,810,810,810,854,846,847,849,854,855,810,844,846,847,849,810,844,846,847,849,810,859,846,847,849,859,860,810,160,861,835,862,847,849,863,846,160,863,835,864,867,869,810,169,170,810,810,875,876,877,872,879,810,810,882,810,810,810,885,886,895,900,887,888,889,890,891,892,893,894,811,896,897,898,899,811,901,903,906,904,905,811,811,908,911,909,910,912,913,811,915,917,916,918,919,920,810,810,923,811,924,810,925,926,927,928,812,930,933,931,932,934,935,937,938,939,811,943,944,945,947,949,950,948,811,952,953,954,957,955,956,958,959,960,962,964,963,965,966,968,969,971,972,974,977,973,975,976,978,980,981,982,984,985,986,810,810,990,991,995,996,997,990,990,990,994,990,990,999,998,1e3,998,1001,1002,1003,998,998]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_trans_actions"),self.$private("_lex_trans_actions","_lex_trans_actions=")}(Opal.get_singleton_class(self)),$send(self,"_lex_trans_actions=",$to_a($writer=[[1,0,0,0,0,0,0,0,0,0,2,3,4,0,5,0,0,0,0,6,0,7,0,8,0,0,7,0,0,0,0,8,0,7,0,8,0,7,7,0,0,0,0,0,0,0,0,9,0,10,0,0,0,0,11,0,7,0,8,0,0,7,0,0,0,0,8,0,7,0,8,0,7,7,0,0,0,0,0,0,0,0,12,0,13,0,0,0,0,14,0,15,0,0,0,0,0,16,0,0,0,0,0,0,17,18,19,20,21,0,0,0,22,23,24,0,0,25,26,27,28,29,30,30,31,32,30,33,32,34,32,30,30,31,30,35,30,30,36,30,30,30,30,30,30,0,37,38,0,39,38,40,38,0,0,37,0,41,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,43,44,45,46,0,0,0,46,29,47,30,30,30,47,48,0,49,0,29,30,50,30,51,52,53,0,0,0,0,0,54,55,56,0,29,0,57,0,30,58,30,59,30,60,61,62,61,63,61,0,64,65,64,66,64,67,68,0,69,0,0,0,0,70,70,0,0,71,71,72,0,29,73,0,0,0,70,0,74,0,7,0,8,0,0,7,0,0,0,0,8,0,7,0,8,0,7,7,0,0,0,0,0,0,0,0,0,75,0,0,0,0,75,76,0,0,0,77,78,79,80,0,7,7,81,82,82,83,0,0,0,0,84,0,0,0,0,0,0,29,0,0,0,30,58,30,30,30,60,61,62,61,61,61,0,64,65,64,64,64,85,67,86,87,0,88,0,89,89,0,90,0,91,60,92,0,93,29,94,95,98,99,0,29,0,7,0,7,100,101,102,60,103,0,104,0,105,106,107,0,108,109,0,110,7,7,111,112,0,0,113,114,115,116,117,117,117,117,117,117,117,117,118,119,120,0,0,121,0,122,123,124,0,125,126,127,0,0,128,0,0,129,0,7,0,0,130,131,0,0,132,0,29,133,0,0,0,0,0,134,135,0,0,0,0,0,0,0,136,0,0,0,0,137,0,0,0,0,0,138,139,140,0,141,142,143,7,7,144,0,0,145,146,147,148,117,117,117,117,117,117,117,117,149,150,151,0,0,152,0,153,154,155,0,156,157,158,0,0,159,0,0,160,0,7,0,0,161,162,0,0,163,0,29,164,0,0,0,0,0,165,166,0,0,0,0,0,0,0,167,0,0,0,0,168,0,0,0,0,0,169,170,171,0,172,173,0,174,0,175,176,177,178,179,180,0,181,182,183,184,185,186,7,187,0,0,188,189,190,191,192,193,194,195,0,196,7,197,198,0,0,199,200,201,202,203,0,204,205,206,0,207,0,0,208,209,210,211,212,213,0,29,0,0,7,7,0,0,0,214,0,0,0,0,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,217,218,219,220,221,60,222,0,223,0,0,0,224,0,225,226,0,0,227,0,0,0,228,0,229,0,0,0,0,0,0,0,0,0,0,0,0,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,0,0,0,0,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,232,233,0,0,7,0,234,235,236,60,237,0,0,29,238,0,239,240,0,29,0,0,241,0,0,0,0,0,0,0,0,0,0,242,0,243,0,244,245,246,247,248,60,249,0,0,250,0,251,252,253,254,29,0,28,0,0,28,0,0,0,0,0,0,7,7,7,255,256,257,258,259,260,261,0,262,263,264,265,266,267,268,269,270,60,271,0,272,273,274,275,276,277,0,0,0,278,7,7,0,279,280,281,282,283,0,0,0,0,0,284,285,60,286,0,287,29,288,289,290,291,292,293,0,29,0,0,0,0,0,0,294,295,296,297,60,298,0,299,29,300,301,302,0,0,0,0,0,0,0,0,0,0,0,0,303,304,0,8,0,0,7,305,0,0,305,305,0,0,7,306,0,306,0,306,306,306,0,0,306,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,0,0,307,308,308,309,310,0,311,312,0,75,0,313,0,314,315,316,317,318,30,319,320,321,322,323,60,324,0,325,326,0,327,0,328,329,305,330,0,331,0,332,333,334,0,0,335,0,0,0,0,336,0,0,0,0,0,0,0,337,0,0,338,0,339,340,0,0,0,341,0,0,342,343,344,345,346,347,0,348,349,349,0,350,0,351,352,352,0,0,353,354,355,0,356,357,358,0,7,359,360,361,0,362,117,117,117,117,117,117,117,117,363,364,365,0,0,366,0,367,368,369,0,370,371,372,0,0,373,0,0,374,0,7,0,0,375,376,0,0,377,0,29,378,0,0,0,0,0,379,380,0,0,0,0,0,0,0,381,0,0,0,0,0,382,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,383,384,385,0,0,0,386,29,303,303,303,303,303,303,303,303,303,303,303,303,75,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,387,303,303,303,303,303,303,303,303,303,303,303,303,388,389,390,391,392,392,388,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,393,394,395,396,0,29,0,0,397,398,399,60,400,0,401,29,402,7,403,404,0,29,405,0,0,406,407,408,409,60,410,0,29,411,412,413,414,0,29,0,415,0,7,416,0,0,0,0,417,0,0,418,418,0,419,0,0,0,420,7,421,421,421,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,422,423,424,0,425,426,427,428,429,430,60,431,0,432,0,0,433,434,435,436,437,438,439,440,441,0,442,0,443,444,0,0,445,446,447,0,0,448,0,0,447,449,449,450,451,0,452,453,0,454,455,456,0,457,458,0,0,459,460,447,447,461,0,0,462,462,0,463,0,464,465,7,0,466,0,467,468,469,470,470,471,471,0,0,472,473,473,474,474,475,476,476,477,477,478,479,479,480,480,0,0,481,482,483,484,485,486,486,483,485,487,418,488,0,0,0,489,0,0,490,491,421,421,421,492,421,493,494,29,495,496,497,0,0,0,0,0,0,0,0,0,0,0,0,498,0,0,0,0,492,0,0,0,0,0,499,500,0,0,0,0,0,0,501,0,0,0,0,0,500,502,503,0,504,0,505,0,0,0,0,506,0,0,0,0,0,0,0,0,0,507,0,0,0,0,0,0,0,506,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,508,509,510,511,511,89,511,512,513,514,0,515,516,0,517,0,518,0,0,0,519,520]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_to_state_actions"),self.$private("_lex_to_state_actions","_lex_to_state_actions=")}(Opal.get_singleton_class(self)),$send(self,"_lex_to_state_actions=",$to_a($writer=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,96,0,96,0,0,0,0,96,96,0,0,0,0,0,96,0,96,0,96,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,96,0,0,0,0,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_from_state_actions"),self.$private("_lex_from_state_actions","_lex_from_state_actions=")}(Opal.get_singleton_class(self)),$send(self,"_lex_from_state_actions=",$to_a($writer=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,97,0,97,0,0,0,0,97,97,0,0,0,0,0,97,0,97,0,97,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,97,0,0,0,0,0]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("_lex_eof_trans"),self.$private("_lex_eof_trans","_lex_eof_trans=")}(Opal.get_singleton_class(self)),$send(self,"_lex_eof_trans=",$to_a($writer=[[0,1,1,1,1,1,1,1,1,1,1,13,13,13,13,20,20,20,20,20,20,20,20,20,20,20,20,20,20,48,48,48,48,55,55,55,55,55,55,55,55,55,55,55,55,55,55,83,83,83,83,90,90,90,90,0,0,0,0,105,107,109,109,109,109,115,115,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,180,180,180,180,180,180,180,180,180,180,180,180,190,192,192,192,204,204,204,212,214,214,214,214,214,220,212,212,212,212,212,212,212,246,246,246,246,246,246,212,262,212,262,246,246,212,268,268,268,268,268,268,268,268,268,268,268,268,268,268,212,246,246,246,246,303,303,303,308,310,310,310,314,314,317,317,317,317,322,322,322,308,314,314,314,314,314,314,314,314,314,353,360,362,362,362,362,353,0,378,379,380,382,384,386,384,384,0,396,397,401,401,402,403,412,413,414,414,414,417,417,419,420,421,421,421,423,424,425,425,425,428,428,421,431,431,421,417,417,436,437,437,437,440,440,437,437,437,443,443,443,443,449,450,450,450,450,458,450,450,450,450,463,450,450,450,450,450,450,469,470,471,471,0,478,482,482,483,484,493,494,495,495,495,498,498,500,501,502,502,502,504,505,506,506,506,509,509,502,512,512,502,498,498,517,518,518,518,521,521,518,518,518,524,524,524,524,530,531,531,531,531,539,531,531,531,531,544,531,531,531,531,531,531,550,551,552,552,0,559,560,0,566,0,573,577,577,578,0,0,587,588,592,592,593,0,598,0,601,0,604,604,605,606,0,647,649,650,651,652,654,656,660,660,651,651,651,651,662,651,651,656,651,651,647,666,666,666,666,666,666,656,656,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,705,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,651,0,749,750,751,753,749,749,757,0,776,778,780,781,782,783,784,786,783,783,783,783,783,789,783,783,791,789,789,783,0,810,811,115,115,814,815,115,811,811,818,820,823,811,824,811,825,826,828,830,811,818,831,831,820,831,835,831,831,831,831,0,190,843,844,843,843,0,853,854,856,858,860,858,862,0,874,875,876,877,879,881,883,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,0,942,945,948,949,953,955,956,957,958,959,961,964,965,967,969,972,974,975,212,972,977,972,964,979,981,964,964,999,1002,1004,1005,1009,1012,1013,1014,1015,999,999,999,999,999,999,999,999,999,999,1019,1023,1025,999,999,964,1030,1031,1031,1031,964,964,964,1032,1039,1039,1041,1043,1052,1053,1054,1054,1054,1057,1057,1059,1060,1061,1061,1061,1063,1064,1065,1065,1065,1068,1068,1061,1071,1071,1061,1057,1057,1076,1077,1077,1077,1080,1080,1077,1077,1077,1083,1083,1083,1083,1089,1090,1090,1090,1090,1098,1090,1090,1090,1090,1104,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1090,1122,1123,1124,1124,212,964,964,1128,964,959,942,942,942,942,942,942,942,942,942,942,942,212,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,1181,949,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,942,1206,964,0,1214,1215,1216,1218,1220,1222,0,1231,1232,1233,1234,1236,1231,1239,0,314,1294,1296,1297,1298,1299,1301,1303,1305,1308,1308,314,1310,1312,1313,1314,1310,1316,1318,1318,1321,1321,1324,1335,314,1341,1343,1345,1346,1349,1350,1324,1324,1353,1353,1353,1359,1361,1362,1365,1367,1368,1369,1353,1353,1376,1381,1386,1353,1353,1393,1393,1353,1353,1318,1310,1310,1318,1310,1310,1305,314,1411,1412,1412,1412,1412,1412,1412,1418,1305,1421,1422,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1462,1463,1423,1423,1467,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1423,1521,1299,1522,0,1528,1529,1530,1532,1528,1528,1528,0,1537,1537,1537,1537,1541]])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_start")}(Opal.get_singleton_class(self)),$send(self,"lex_start=",$to_a($writer=[186])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_error")}(Opal.get_singleton_class(self)),$send(self,"lex_error=",$to_a($writer=[0])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_words=",$to_a($writer=[195])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_string")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_string=",$to_a($writer=[261])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_words=",$to_a($writer=[326])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_string")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_string=",$to_a($writer=[329])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_backslash_delimited")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_backslash_delimited=",$to_a($writer=[331])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_backslash_delimited")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_backslash_delimited=",$to_a($writer=[336])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_interp_backslash_delimited_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_interp_backslash_delimited_words=",$to_a($writer=[337])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_plain_backslash_delimited_words")}(Opal.get_singleton_class(self)),$send(self,"lex_en_plain_backslash_delimited_words=",$to_a($writer=[343])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_regexp_modifiers")}(Opal.get_singleton_class(self)),$send(self,"lex_en_regexp_modifiers=",$to_a($writer=[345])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_variable")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_variable=",$to_a($writer=[347])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_fname")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_fname=",$to_a($writer=[352])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_endfn")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_endfn=",$to_a($writer=[465])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_dot")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_dot=",$to_a($writer=[473])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_arg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_arg=",$to_a($writer=[494])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_cmdarg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_cmdarg=",$to_a($writer=[525])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_endarg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_endarg=",$to_a($writer=[531])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_mid")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_mid=",$to_a($writer=[539])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_beg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_beg=",$to_a($writer=[563])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_labelarg")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_labelarg=",$to_a($writer=[795])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_value")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_value=",$to_a($writer=[802])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_expr_end")}(Opal.get_singleton_class(self)),$send(self,"lex_en_expr_end=",$to_a($writer=[810])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_leading_dot")}(Opal.get_singleton_class(self)),$send(self,"lex_en_leading_dot=",$to_a($writer=[990])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_line_comment")}(Opal.get_singleton_class(self)),$send(self,"lex_en_line_comment=",$to_a($writer=[998])),$writer[$rb_minus($writer.length,1)],function(self,$parent_nesting){self.$attr_accessor("lex_en_line_begin")}(Opal.get_singleton_class(self)),$send(self,"lex_en_line_begin=",$to_a($writer=[186])),$writer[$rb_minus($writer.length,1)],$const_set($nesting[0],"ESCAPES",$hash("a".$ord(),"","b".$ord(),"\b","e".$ord(),"","f".$ord(),"\f","n".$ord(),"\n","r".$ord(),"\r","s".$ord()," ","t".$ord(),"\t","v".$ord(),"\v","\\".$ord(),"\\").$freeze()),$const_set($nesting[0],"REGEXP_META_CHARACTERS",$send($$("Regexp"),"union",$to_a("\\$()*+.<>?[]^{|}".$chars())).$freeze()),self.$attr_reader("source_buffer"),self.$attr_accessor("diagnostics"),self.$attr_accessor("static_env"),self.$attr_accessor("force_utf32"),self.$attr_accessor("cond","cmdarg","context","command_start"),self.$attr_accessor("tokens","comments"),self.$attr_reader("paren_nest","cmdarg_stack","cond_stack","lambda_stack"),$def(self,"$initialize",(function(version){return this.version=version,this.static_env=nil,this.context=nil,this.tokens=nil,this.comments=nil,this.$reset()}),1),$def(self,"$reset",(function(reset_state){return null==reset_state&&(reset_state=!0),$truthy(reset_state)&&(this.cs=this.$class().$lex_en_line_begin(),this.cond=$$("StackState").$new("cond"),this.cmdarg=$$("StackState").$new("cmdarg"),this.cond_stack=[],this.cmdarg_stack=[]),this.force_utf32=!1,this.source_pts=nil,this.p=0,this.ts=nil,this.te=nil,this.act=0,this.stack=[],this.top=0,this.token_queue=[],this.literal_stack=[],this.eq_begin_s=nil,this.sharp_s=nil,this.newline_s=nil,this.num_base=nil,this.num_digits_s=nil,this.num_suffix_s=nil,this.num_xfrm=nil,this.escape_s=nil,this.escape=nil,this.herebody_s=nil,this.paren_nest=0,this.lambda_stack=[],this.dedent_level=nil,this.command_start=!0,this.cs_before_block_comment=this.$class().$lex_en_line_begin()}),-1),$def(self,"$source_buffer=",(function(source_buffer){var source=nil;return this.source_buffer=source_buffer,$truthy(this.source_buffer)?(source=this.source_buffer.$source(),$eqeq(source.$encoding(),$$$($$("Encoding"),"UTF_8"))?this.source_pts=source.$unpack("U*"):this.source_pts=source.$unpack("C*"),$eqeq(this.source_pts["$[]"](0),65279)?this.p=1:nil):this.source_pts=nil}),1),$def(self,"$encoding",(function(){return this.source_buffer.$source().$encoding()}),0),$const_set($nesting[0],"LEX_STATES",$hash2(["line_begin","expr_dot","expr_fname","expr_value","expr_beg","expr_mid","expr_arg","expr_cmdarg","expr_end","expr_endarg","expr_endfn","expr_labelarg","interp_string","interp_words","plain_string","plain_words"],{line_begin:self.$lex_en_line_begin(),expr_dot:self.$lex_en_expr_dot(),expr_fname:self.$lex_en_expr_fname(),expr_value:self.$lex_en_expr_value(),expr_beg:self.$lex_en_expr_beg(),expr_mid:self.$lex_en_expr_mid(),expr_arg:self.$lex_en_expr_arg(),expr_cmdarg:self.$lex_en_expr_cmdarg(),expr_end:self.$lex_en_expr_end(),expr_endarg:self.$lex_en_expr_endarg(),expr_endfn:self.$lex_en_expr_endfn(),expr_labelarg:self.$lex_en_expr_labelarg(),interp_string:self.$lex_en_interp_string(),interp_words:self.$lex_en_interp_words(),plain_string:self.$lex_en_plain_string(),plain_words:self.$lex_en_plain_string()})),$def(self,"$state",(function(){return $$("LEX_STATES").$invert().$fetch(this.cs,this.cs)}),0),$def(self,"$state=",(function(state){return this.cs=$$("LEX_STATES").$fetch(state)}),1),$def(self,"$push_cmdarg",(function(){return this.cmdarg_stack.$push(this.cmdarg),this.cmdarg=$$("StackState").$new("cmdarg."+this.cmdarg_stack.$count())}),0),$def(self,"$pop_cmdarg",(function(){return this.cmdarg=this.cmdarg_stack.$pop()}),0),$def(self,"$push_cond",(function(){return this.cond_stack.$push(this.cond),this.cond=$$("StackState").$new("cond."+this.cond_stack.$count())}),0),$def(self,"$pop_cond",(function(){return this.cond=this.cond_stack.$pop()}),0),$def(self,"$dedent_level",(function(){var $a,dedent_level;return dedent_level=($a=[this.dedent_level,nil])[0],this.dedent_level=$a[1],dedent_level}),0),$def(self,"$advance",(function(){var $a,$b,pe,self=this,klass=nil,_lex_trans_keys=nil,_lex_key_spans=nil,_lex_index_offsets=nil,_lex_indicies=nil,_lex_trans_targs=nil,_lex_trans_actions=nil,_lex_to_state_actions=nil,_lex_from_state_actions=nil,_lex_eof_trans=nil,p=nil,eof=nil,cmd_state=nil,_slen=nil,_trans=nil,_keys=nil,_inds=nil,_goto_level=nil,$ret_or_1=nil,_wide=nil,tm=nil,heredoc_e=nil,diag_msg=nil,ident_tok=nil,ident_ts=nil,ident_te=nil,current_literal=nil,$writer=nil,line=nil,string=nil,lookahead=nil,token=nil,message=nil,escaped_char=nil,$ret_or_2=nil,unknown_options=nil,type=nil,delimiter=nil,escape=nil,ident=nil,followed_by_nl=nil,nl_emitted=nil,dots_te=nil,value=nil,digits=nil,invalid_idx=nil,invalid_s=nil,codepoints=nil,codepoint_s=nil,spaces_p=nil,codepoint=nil,new_herebody_s=nil,indent=nil,dedent_body=nil;if($truthy(self.token_queue["$any?"]()))return self.token_queue.$shift();for(_lex_trans_keys=(klass=self.$class()).$send("_lex_trans_keys"),_lex_key_spans=klass.$send("_lex_key_spans"),_lex_index_offsets=klass.$send("_lex_index_offsets"),_lex_indicies=klass.$send("_lex_indicies"),_lex_trans_targs=klass.$send("_lex_trans_targs"),_lex_trans_actions=klass.$send("_lex_trans_actions"),_lex_to_state_actions=klass.$send("_lex_to_state_actions"),_lex_from_state_actions=klass.$send("_lex_from_state_actions"),_lex_eof_trans=klass.$send("_lex_eof_trans"),pe=$rb_plus(self.source_pts.$size(),2),$a=[self.p,pe],p=$a[0],eof=$a[1],cmd_state=self.command_start,self.command_start=!1,!1,_slen=null==($a=$to_ary($b=nil))[0]?nil:$a[0],_trans=null==$a[1]?nil:$a[1],_keys=null==$a[2]?nil:$a[2],_inds=null==$a[3]?nil:$a[3],null==$a[4]?nil:$a[4],null==$a[5]?nil:$a[5],_goto_level=0,10,15,20,30,40;$truthy(!0);){if($truthy($rb_le(_goto_level,0))){if($eqeq(p,pe)){_goto_level=30;continue}if($eqeq(self.cs,0)){_goto_level=40;continue}}if($truthy($rb_le(_goto_level,10))&&($eqeqeq(97,$ret_or_1=_lex_from_state_actions["$[]"](self.cs))&&(self.ts=p),_keys=self.cs["$<<"](1),_inds=_lex_index_offsets["$[]"](self.cs),_slen=_lex_key_spans["$[]"](self.cs),_wide=$truthy($ret_or_1=self.source_pts["$[]"](p))?$ret_or_1:0,_trans=$truthy($rb_gt(_slen,0))&&$truthy($rb_le(_lex_trans_keys["$[]"](_keys),_wide))&&$truthy($rb_le(_wide,_lex_trans_keys["$[]"]($rb_plus(_keys,1))))?_lex_indicies["$[]"]($rb_minus($rb_plus(_inds,_wide),_lex_trans_keys["$[]"](_keys))):_lex_indicies["$[]"]($rb_plus(_inds,_slen))),$truthy($rb_le(_goto_level,15))&&(self.cs=_lex_trans_targs["$[]"](_trans),$neqeq(_lex_trans_actions["$[]"](_trans),0)))if($eqeqeq(29,$ret_or_1=_lex_trans_actions["$[]"](_trans)))self.newline_s=p;else if($eqeqeq(117,$ret_or_1))self.escape_s=p,self.escape=nil;else if($eqeqeq(30,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil);else if($eqeqeq(60,$ret_or_1))self.sharp_s=$rb_minus(p,1);else if($eqeqeq(64,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p);else if($eqeqeq(310,$ret_or_1))tm=p;else if($eqeqeq(37,$ret_or_1))tm=p;else if($eqeqeq(39,$ret_or_1))tm=p;else if($eqeqeq(41,$ret_or_1))tm=p;else if($eqeqeq(71,$ret_or_1))heredoc_e=p;else if($eqeqeq(349,$ret_or_1))tm=$rb_minus(p,1),diag_msg="ivar_name";else if($eqeqeq(352,$ret_or_1))tm=$rb_minus(p,2),diag_msg="cvar_name";else if($eqeqeq(360,$ret_or_1))self.escape=nil;else if($eqeqeq(392,$ret_or_1))tm=p;else if($eqeqeq(308,$ret_or_1))ident_tok=self.$tok(),ident_ts=self.ts,ident_te=self.te;else if($eqeqeq(479,$ret_or_1))self.num_base=16,self.num_digits_s=p;else if($eqeqeq(473,$ret_or_1))self.num_base=10,self.num_digits_s=p;else if($eqeqeq(476,$ret_or_1))self.num_base=8,self.num_digits_s=p;else if($eqeqeq(470,$ret_or_1))self.num_base=2,self.num_digits_s=p;else if($eqeqeq(485,$ret_or_1))self.num_base=10,self.num_digits_s=self.ts;else if($eqeqeq(447,$ret_or_1))self.num_base=8,self.num_digits_s=self.ts;else if($eqeqeq(462,$ret_or_1))self.num_suffix_s=p;else if($eqeqeq(455,$ret_or_1))self.num_suffix_s=p;else if($eqeqeq(452,$ret_or_1))self.num_suffix_s=p;else if($eqeqeq(89,$ret_or_1))tm=p;else if($eqeqeq(7,$ret_or_1))self.te=$rb_plus(p,1);else{if($eqeqeq(113,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(5,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(109,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(108,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(115,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(114,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(111,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else if($eqeqeq(112,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(6,$ret_or_1))p=$rb_minus(self.te,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(4,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else{if($eqeqeq(145,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(10,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(142,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(141,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(147,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(146,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(144,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(11,$ret_or_1))p=$rb_minus(self.te,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(9,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(173,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(172,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(175,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else if($eqeqeq(176,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(179,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(178,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(181,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else{if($eqeqeq(188,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(13,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(185,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(184,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(190,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(189,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(187,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(12,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(192,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(191,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else{if($eqeqeq(199,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DBEG","#{".$freeze()),$truthy(current_literal["$heredoc?"]())&&($writer=[self.herebody_s],$send(current_literal,"saved_herebody_s=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.herebody_s=nil),current_literal.$start_interp_brace(),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(15,$ret_or_1)){self.te=$rb_plus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(195,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(194,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(201,$ret_or_1))self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$literal().$extend_string(self.$tok(),self.ts,self.te):(message=$truthy(self.$tok()["$start_with?"]("#@@"))?"cvar_name":"ivar_name",self.$diagnostic("error",message,$hash2(["name"],{name:self.$tok($rb_plus(self.ts,1),self.te)}),self.$range($rb_plus(self.ts,1),self.te)));else{if($eqeqeq(200,$ret_or_1)){self.te=p,p=$rb_minus(p,1),(current_literal=self.$literal()).$flush_string(),current_literal.$extend_content(),self.$emit("tSTRING_DVAR",nil,self.ts,$rb_plus(self.ts,1)),p=self.ts,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(197,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else if($eqeqeq(198,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(14,$ret_or_1)){if(p=$rb_minus(self.te,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(203,$ret_or_1)){if(self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(202,$ret_or_1)){if(self.te=$rb_plus(p,1),string=self.$tok(),$truthy($rb_ge(self.version,22))&&$not(self.cond["$active?"]())&&(lookahead=self.source_buffer.$slice(Opal.Range.$new(self.te,$rb_plus(self.te,2),!0))),current_literal=self.$literal(),$not(current_literal["$heredoc?"]())&&$truthy(token=current_literal.$nest_and_try_closing(string,self.ts,self.te,lookahead))){$eqeq(token["$[]"](0),"tLABEL_END")?(p=$rb_plus(p,1),self.$pop_literal(),self.cs=795):self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$extend_string(string,self.ts,self.te)}else if($eqeqeq(205,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$literal().$extend_space(self.ts,self.te);else{if($eqeqeq(206,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tREGEXP_OPT",self.$tok(self.ts,$rb_minus(self.te,1)),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(207,$ret_or_1)){self.te=p,p=$rb_minus(p,1),unknown_options=self.$tok().$scan(/[^imxouesn]/),$truthy(unknown_options["$any?"]())&&self.$diagnostic("error","regexp_options",$hash2(["options"],{options:unknown_options.$join()})),self.$emit("tREGEXP_OPT"),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(16,$ret_or_1)){self.te=$rb_plus(p,1),$truthy(self.$tok()["$=~"](/^\$([1-9][0-9]*)$/))?self.$emit("tNTH_REF",self.$tok($rb_plus(self.ts,1)).$to_i()):$truthy(self.$tok()["$=~"](/^\$([&`'+])$/))?self.$emit("tBACK_REF"):self.$emit("tGVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(208,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy(self.$tok()["$=~"](/^\$([1-9][0-9]*)$/))?self.$emit("tNTH_REF",self.$tok($rb_plus(self.ts,1)).$to_i()):$truthy(self.$tok()["$=~"](/^\$([&`'+])$/))?self.$emit("tBACK_REF"):self.$emit("tGVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(210,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy(self.$tok()["$=~"](/^@@[0-9]/))&&self.$diagnostic("error","cvar_name",$hash2(["name"],{name:self.$tok()})),self.$emit("tCVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(209,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy(self.$tok()["$=~"](/^@[0-9]/))&&self.$diagnostic("error","ivar_name",$hash2(["name"],{name:self.$tok()})),self.$emit("tIVAR"),self.cs=self.$stack_pop(),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(231,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(217,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tIDENTIFIER"),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(18,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(214,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(226,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(20,$ret_or_1)){if(self.te=$rb_plus(p,1),$truthy(self["$version?"](23))){type=($b=[self.$tok()["$[]"]($range(0,-2,!1)),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(213,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(212,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(230,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(227,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT"),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(229,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(224,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(220,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(225,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(218,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(223,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(19,$ret_or_1)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(17,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(216,$ret_or_1)){if($eqeqeq(43,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(44,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tCONSTANT"),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(45,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(22,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tLABEL",self.$tok(self.ts,$rb_minus(self.te,2)),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),self.cs=795,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(23,$ret_or_1)){if(self.te=$rb_plus(p,1),$truthy($rb_ge(self.version,31))&&$truthy(self.context.$in_argdef())){self.$emit("tBDOT3","...".$freeze()),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}p=$rb_minus(p,3),self.cs=810,_goto_level=20;continue}if($eqeqeq(233,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(232,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(235,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(234,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(21,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(241,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(240,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(239,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(251,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(242,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(247,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(245,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(250,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(274,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(257,$ret_or_1)){self.te=$rb_plus(p,1),$eqeq(self.$tok(tm,$rb_plus(tm,1)),"/".$freeze())&&($truthy($rb_lt(self.version,30))?self.$diagnostic("warning","ambiguous_literal",nil,self.$range(tm,$rb_plus(tm,1))):self.$diagnostic("warning","ambiguous_regexp",nil,self.$range(tm,$rb_plus(tm,1)))),p=$rb_minus(tm,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(263,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(25,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(265,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(tm,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(40,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(252,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(253,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(264,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(260,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$diagnostic("warning","ambiguous_prefix",$hash2(["prefix"],{prefix:self.$tok(tm,self.te)}),self.$range(tm,self.te)),p=$rb_minus(tm,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(262,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(256,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(255,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(273,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(26,$ret_or_1))p=$rb_minus(self.te,1);else{if($eqeqeq(42,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(24,$ret_or_1)){if($eqeqeq(72,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$eqeq(self.$tok(tm,$rb_plus(tm,1)),"/".$freeze())&&($truthy($rb_lt(self.version,30))?self.$diagnostic("warning","ambiguous_literal",nil,self.$range(tm,$rb_plus(tm,1))):self.$diagnostic("warning","ambiguous_regexp",nil,self.$range(tm,$rb_plus(tm,1)))),p=$rb_minus(tm,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(73,$ret_or_2)){p=$rb_minus(self.te,1),self.$diagnostic("warning","ambiguous_prefix",$hash2(["prefix"],{prefix:self.$tok(tm,self.te)}),self.$range(tm,self.te)),p=$rb_minus(tm,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(78,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}p=$rb_minus(self.te,1)}else{if($eqeqeq(44,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=494,_goto_level=20;continue}if($eqeqeq(278,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(279,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=494,_goto_level=20;continue}if($eqeqeq(45,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=494,_goto_level=20;continue}if($eqeqeq(43,$ret_or_1)){if($eqeqeq(85,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$truthy(self.cond["$active?"]())?self.$emit("kDO_COND","do".$freeze(),$rb_minus(self.te,2),self.te):self.$emit("kDO","do".$freeze(),$rb_minus(self.te,2),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(86,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=494,_goto_level=20;continue}}else{if($eqeqeq(289,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_do(!0),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(282,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(283,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(284,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(287,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(293,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(292,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(301,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(295,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(299,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(294,$ret_or_1)){if($eqeqeq(93,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(94,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=563,_goto_level=20;continue}}else{if($eqeqeq(57,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(334,$ret_or_1)){self.te=$rb_plus(p,1),type=delimiter=self.$tok()["$[]"](0).$chr(),p=$rb_minus(p,1),self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(326,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.source_buffer.$slice(self.ts).$chr(),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(55,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.$tok()["$[]"]($range(0,-2,!1)),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(347,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_minus(p,1),self.$emit("tSYMBEG",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),self.cs=352,_goto_level=20;continue}if($eqeqeq(335,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.$tok(),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts),_goto_level=20;continue}if($eqeqeq(346,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),$rb_plus(self.ts,2))),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(69,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1)),self.ts),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(357,$ret_or_1)){self.te=$rb_plus(p,1),escape=$hash2([" ","\r","\n","\t","\v","\f"],{" ":"\\s","\r":"\\r","\n":"\\n","\t":"\\t","\v":"\\v","\f":"\\f"})["$[]"](self.source_buffer.$slice($rb_plus(self.ts,1))),self.$diagnostic("warning","invalid_escape_use",$hash2(["escape"],{escape:escape}),self.$range()),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(356,$ret_or_1))self.te=$rb_plus(p,1),self.$diagnostic("fatal","incomplete_escape",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(336,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(52,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),$truthy(self["$version?"](18))?(ident=self.$tok(self.ts,$rb_minus(self.te,2)),self.$emit($truthy(self.source_buffer.$slice(self.ts)["$=~"](/[A-Z]/))?"tCONSTANT":"tIDENTIFIER",ident,self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,1),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](ident))?self.cs=810:self.cs=self.$arg_or_cmdarg(cmd_state)):(self.$emit("tLABEL",self.$tok(self.ts,$rb_minus(self.te,2)),self.ts,$rb_minus(self.te,1)),self.cs=795),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(49,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tIDENTIFIER",ident_tok,ident_ts,ident_te),p=$rb_minus(ident_te,1),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](ident_tok))&&$truthy($rb_lt(self.version,25))?self.cs=465:self.cs=525,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(320,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs_before_block_comment=self.cs,self.cs=186,_goto_level=20;continue}if($eqeqeq(56,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(304,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(330,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(329,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tSTAR","*".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(325,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","string_eof",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else if($eqeqeq(354,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(337,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1)),self.ts),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(350,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te)):(self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=self.ts),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(355,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","incomplete_escape",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(361,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(327,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(331,$ret_or_1)){self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$emit("tBDOT2"):self.$emit("tDOT2"),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(332,$ret_or_1)){self.te=p,p=$rb_minus(p,1),followed_by_nl=$rb_minus(self.te,1)["$=="](self.newline_s),nl_emitted=!1,dots_te=$truthy(followed_by_nl)?$rb_minus(self.te,1):self.te,$truthy($rb_ge(self.version,30))?$truthy(self.lambda_stack["$any?"]())&&$eqeq($rb_plus(self.lambda_stack.$last(),1),self.paren_nest)?self.$emit("tDOT3","...".$freeze(),self.ts,dots_te):(self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te),$truthy($rb_ge(self.version,31))&&$truthy(followed_by_nl)&&$truthy(self.context.$in_argdef())&&(self.$emit("tNL",$rb_minus(self.te,1),self.te),nl_emitted=!0)):$truthy($rb_ge(self.version,27))?self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te):self.$emit("tDOT3","...".$freeze(),self.ts,dots_te),$truthy(followed_by_nl)&&$not(nl_emitted)&&(p=$rb_minus(p,1)),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(307,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(317,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(319,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs_before_block_comment=self.cs,self.cs=186,_goto_level=20;continue}if($eqeqeq(322,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(54,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("fatal","string_eof",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else if($eqeqeq(73,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(74,$ret_or_1)){p=$rb_minus(self.te,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(48,$ret_or_1)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(53,$ret_or_1))p=$rb_minus(self.te,1);else{if($eqeqeq(68,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(51,$ret_or_1)){if($eqeqeq(99,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(106,$ret_or_2))p=$rb_minus(self.te,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(117,$ret_or_2)){if(p=$rb_minus(self.te,1),$truthy($rb_ge(self.version,27))){self.$emit("tPIPE",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}p=$rb_minus(p,2),self.cs=810,_goto_level=20;continue}if($eqeqeq(121,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(122,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm),p=$rb_minus(tm,1),self.cs=539,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(123,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(127,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(128,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(132,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}}}else{if($eqeqeq(395,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(396,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(397,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(401,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(77,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(405,$ret_or_1)){self.te=$rb_plus(p,1),self.cs=self.$push_literal(self.$tok(),self.$tok(),self.ts),_goto_level=20;continue}if($eqeqeq(404,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(403,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(407,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(406,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(76,$ret_or_1)){p=$rb_minus(self.te,1),p=$rb_minus(p,1),self.cs=563,_goto_level=20;continue}if($eqeqeq(440,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tLAMBDA","->".$freeze(),self.ts,$rb_plus(self.ts,2)),self.lambda_stack.$push(self.paren_nest),self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(86,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(415,$ret_or_1)){self.te=$rb_plus(p,1),type=($b=[self.$tok(),self.$tok()["$[]"](-1).$chr()])[0],delimiter=$b[1],self.cs=self.$push_literal(type,delimiter,self.ts,nil,!1,!1,!0),_goto_level=20;continue}if($eqeqeq(79,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(436,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=473,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(489,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(429,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(434,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tOP_ASGN",self.$tok(self.ts,$rb_minus(self.te,1))),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(420,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tEH","?".$freeze()),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(417,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(419,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tSEMI",";".$freeze()),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(494,$ret_or_1))self.te=$rb_plus(p,1),self.$diagnostic("error","bare_backslash",nil,self.$range(self.ts,$rb_plus(self.ts,1))),p=$rb_minus(p,1);else if($eqeqeq(414,$ret_or_1))self.te=$rb_plus(p,1),self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,!1))}));else{if($eqeqeq(413,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(505,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("KEYWORDS")),self.cs=352,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(503,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(502,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("KEYWORDS")),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(444,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("error","no_dot_digit_literal");else{if($eqeqeq(491,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(433,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),$writer=[self.top,self.cs],$send(self.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.top=$rb_plus(self.top,1),self.cs=347,_goto_level=20;continue}if($eqeqeq(441,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=473,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(497,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(439,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(435,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(428,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(442,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(426,$ret_or_1))self.te=p,p=$rb_minus(p,1);else if($eqeqeq(432,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,!1))}));else{if($eqeqeq(84,$ret_or_1)){p=$rb_minus(self.te,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(80,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("error","no_dot_digit_literal");else{if($eqeqeq(83,$ret_or_1)){p=$rb_minus(self.te,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(78,$ret_or_1))p=$rb_minus(self.te,1),self.$diagnostic("fatal","unexpected",$hash2(["character"],{character:self.$tok().$inspect()["$[]"]($range(1,-2,!1))}));else if($eqeqeq(81,$ret_or_1)){if($eqeqeq(145,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLAMBEG","{".$freeze()):self.$emit("kDO_LAMBDA","do".$freeze())):$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLCURLY","{".$freeze()):self.$emit_do(),$eqeq(self.$tok(),"{".$freeze())&&(self.paren_nest=$rb_plus(self.paren_nest,1)),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(146,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=352,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(147,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(148,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(149,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(150,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=539,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(151,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),$truthy(self["$version?"](18))&&$eqeq(self.$tok(),"not".$freeze())){self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(152,$ret_or_2)){p=$rb_minus(self.te,1),$truthy(self["$version?"](18))?(self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))||(self.cs=self.$arg_or_cmdarg(cmd_state))):self.$emit("k__ENCODING__","__ENCODING__".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(153,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(154,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(156,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",self.$tok(self.ts,$rb_minus(self.te,1)).$to_i(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else if($eqeqeq(157,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$tok(self.ts,$rb_minus(self.te,1)).$to_f(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{if($eqeqeq(158,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(160,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(164,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(165,$ret_or_2)){p=$rb_minus(self.te,1),$eqeq(tm,self.te)?self.$emit("tFID"):(self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1)),self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(167,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(168,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}}}else{if($eqeqeq(516,$ret_or_1)){if(self.te=$rb_plus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),$truthy($rb_lt(self.version,27))){p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}self.$emit("tBDOT3"),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(95,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(tm,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(510,$ret_or_1)){self.te=$rb_plus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(513,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),$truthy($rb_lt(self.version,27))){self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(515,$ret_or_1)){if(self.te=p,p=$rb_minus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),$truthy($rb_lt(self.version,27))){p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}self.$emit("tBDOT2"),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(514,$ret_or_1)){self.te=p,p=$rb_minus(p,1),p=$rb_minus(tm,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(512,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(90,$ret_or_1)){if(p=$rb_minus(self.te,1),$truthy($rb_lt(self.version,27))){self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(87,$ret_or_1)){p=$rb_minus(self.te,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(91,$ret_or_1)){if($eqeqeq(181,$ret_or_2=self.act)){if(p=$rb_minus(self.te,1),$truthy($rb_lt(self.version,27))){self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}}else if($eqeqeq(185,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tNL",nil,self.newline_s,$rb_plus(self.newline_s,1)),p=$rb_minus(p,1),self.cs=186,p=$rb_plus(p,1),_goto_level=40;continue}}else{if($eqeqeq(519,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.$emit_comment(self.eq_begin_s,self.te),self.cs=self.cs_before_block_comment,_goto_level=20;continue}if($eqeqeq(518,$ret_or_1))self.te=p,p=$rb_minus(p,1),self.$diagnostic("fatal","embedded_document",nil,self.$range(self.eq_begin_s,$rb_plus(self.eq_begin_s,"=begin".$length())));else{if($eqeqeq(106,$ret_or_1)){self.te=$rb_plus(p,1),self.eq_begin_s=self.ts,self.cs=998,_goto_level=20;continue}if($eqeqeq(2,$ret_or_1))self.te=$rb_plus(p,1),p=$rb_minus(pe,3);else{if($eqeqeq(98,$ret_or_1)){self.te=$rb_plus(p,1),cmd_state=!0,p=$rb_minus(p,1),self.cs=802,_goto_level=20;continue}if($eqeqeq(99,$ret_or_1)){self.te=$rb_plus(p,1),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(100,$ret_or_1))self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(105,$ret_or_1)){self.te=p,p=$rb_minus(p,1),self.eq_begin_s=self.ts,self.cs=998,_goto_level=20;continue}if($eqeqeq(104,$ret_or_1)){self.te=p,p=$rb_minus(p,1),cmd_state=!0,p=$rb_minus(p,1),self.cs=802,_goto_level=20;continue}if($eqeqeq(1,$ret_or_1)){p=$rb_minus(self.te,1),cmd_state=!0,p=$rb_minus(p,1),self.cs=802,_goto_level=20;continue}if($eqeqeq(67,$ret_or_1))self.newline_s=p,self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p);else if($eqeqeq(110,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(143,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(174,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(180,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(186,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(193,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(196,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else if($eqeqeq(204,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string())}else{if($eqeqeq(275,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(266,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(tm,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(258,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(358,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),escape=$hash2([" ","\r","\n","\t","\v","\f"],{" ":"\\s","\r":"\\r","\n":"\\n","\t":"\\t","\v":"\\v","\f":"\\f"})["$[]"](self.source_buffer.$slice($rb_plus(self.ts,1))),self.$diagnostic("warning","invalid_escape_use",$hash2(["escape"],{escape:escape}),self.$range()),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(333,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),followed_by_nl=$rb_minus(self.te,1)["$=="](self.newline_s),nl_emitted=!1,dots_te=$truthy(followed_by_nl)?$rb_minus(self.te,1):self.te,$truthy($rb_ge(self.version,30))?$truthy(self.lambda_stack["$any?"]())&&$eqeq($rb_plus(self.lambda_stack.$last(),1),self.paren_nest)?self.$emit("tDOT3","...".$freeze(),self.ts,dots_te):(self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te),$truthy($rb_ge(self.version,31))&&$truthy(followed_by_nl)&&$truthy(self.context.$in_argdef())&&(self.$emit("tNL",$rb_minus(self.te,1),self.te),nl_emitted=!0)):$truthy($rb_ge(self.version,27))?self.$emit("tBDOT3","...".$freeze(),self.ts,dots_te):self.$emit("tDOT3","...".$freeze(),self.ts,dots_te),$truthy(followed_by_nl)&&$not(nl_emitted)&&(p=$rb_minus(p,1)),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(321,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs_before_block_comment=self.cs,self.cs=186,_goto_level=20;continue}if($eqeqeq(443,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),$eqeq(self.paren_nest,0)&&self.$diagnostic("warning","triple_dot_at_eol",nil,self.$range(self.ts,$rb_minus(self.te,1))),self.$emit("tDOT3","...".$freeze(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(520,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),self.$emit_comment(self.eq_begin_s,self.te),self.cs=self.cs_before_block_comment,_goto_level=20;continue}if($eqeqeq(517,$ret_or_1))self.newline_s=p,self.te=$rb_plus(p,1);else{if($eqeqeq(107,$ret_or_1)){self.newline_s=p,self.te=$rb_plus(p,1),self.eq_begin_s=self.ts,self.cs=998,_goto_level=20;continue}if($eqeqeq(3,$ret_or_1))self.newline_s=p,self.te=$rb_plus(p,1),p=$rb_minus(pe,3);else{if($eqeqeq(465,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$3(chars){var self=null==$$3.$$s?this:$$3.$$s;return null==chars&&(chars=nil),self.$emit("tRATIONAL",self.$Rational(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(463,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$4(chars){var self=null==$$4.$$s?this:$$4.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(468,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$5(chars){var self=null==$$5.$$s?this:$$5.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,self.$Rational(chars)))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(466,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$6(chars){var self=null==$$6.$$s?this:$$6.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,2)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(464,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$7(chars){var self=null==$$7.$$s?this:$$7.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,2)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(467,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$8(chars){var self=null==$$8.$$s?this:$$8.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tINTEGER",chars,self.ts,$rb_minus(self.te,6)),p=$rb_minus(p,6)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(456,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$9(chars){var self=null==$$9.$$s?this:$$9.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,self.$Float(chars)))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(457,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$10(chars){var self=null==$$10.$$s?this:$$10.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars),self.ts,$rb_minus(self.te,2)),p=$rb_minus(p,2)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(458,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$11(chars){var self=null==$$11.$$s?this:$$11.$$s;return null==chars&&(chars=nil),self.$emit("tRATIONAL",self.$Rational(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(460,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$12(chars){var self=null==$$12.$$s?this:$$12.$$s;return null==chars&&(chars=nil),self.$emit("tIMAGINARY",self.$Complex(0,self.$Rational(chars)))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(459,$ret_or_1)){self.num_xfrm=$send(self,"lambda",[],(function $$13(chars){var self=null==$$13.$$s?this:$$13.$$s;return null==self.ts&&(self.ts=nil),null==self.te&&(self.te=nil),null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars),self.ts,$rb_minus(self.te,6)),p=$rb_minus(p,6)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(137,$ret_or_1))self.escape="",codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1)),codepoint_s=$rb_plus(self.escape_s,2),$truthy($rb_lt(self.version,24))&&(($truthy(codepoints["$start_with?"](" "))||$truthy(codepoints["$start_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3))),$truthy(spaces_p=codepoints.$index(/[ \t]{2}/))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2))),($truthy(codepoints["$end_with?"](" "))||$truthy(codepoints["$end_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))),function(){var $brk=Opal.new_brk();try{$send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],(function $$14($mlhs_tmp1){var $c,self=null==$$14.$$s?this:$$14.$$s,codepoint_str=nil,spaces=nil,codepoint=nil;return null==self.escape&&(self.escape=nil),null==$mlhs_tmp1&&($mlhs_tmp1=nil),codepoint_str=null==($c=$to_ary($mlhs_tmp1))[0]?nil:$c[0],spaces=null==$c[1]?nil:$c[1],$truthy(spaces)?codepoint_s=$rb_plus(codepoint_s,spaces.$length()):(codepoint=codepoint_str.$to_i(16),$truthy($rb_ge(codepoint,1114112))&&(self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length()))),Opal.brk(nil,$brk)),self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$("Encoding"),"UTF_8"))),codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length()))}),{$$arity:1,$$s:self,$$brk:$brk,$$has_top_level_mlhs_arg:!0})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(168,$ret_or_1))self.escape="",codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1)),codepoint_s=$rb_plus(self.escape_s,2),$truthy($rb_lt(self.version,24))&&(($truthy(codepoints["$start_with?"](" "))||$truthy(codepoints["$start_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3))),$truthy(spaces_p=codepoints.$index(/[ \t]{2}/))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2))),($truthy(codepoints["$end_with?"](" "))||$truthy(codepoints["$end_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))),function(){var $brk=Opal.new_brk();try{$send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],(function $$15($mlhs_tmp1){var $c,self=null==$$15.$$s?this:$$15.$$s,codepoint_str=nil,spaces=nil,codepoint=nil;return null==self.escape&&(self.escape=nil),null==$mlhs_tmp1&&($mlhs_tmp1=nil),codepoint_str=null==($c=$to_ary($mlhs_tmp1))[0]?nil:$c[0],spaces=null==$c[1]?nil:$c[1],$truthy(spaces)?codepoint_s=$rb_plus(codepoint_s,spaces.$length()):(codepoint=codepoint_str.$to_i(16),$truthy($rb_ge(codepoint,1114112))&&(self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length()))),Opal.brk(nil,$brk)),self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$("Encoding"),"UTF_8"))),codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length()))}),{$$arity:1,$$s:self,$$brk:$brk,$$has_top_level_mlhs_arg:!0})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(382,$ret_or_1)){self.escape="",codepoints=self.$tok($rb_plus(self.escape_s,2),$rb_minus(p,1)),codepoint_s=$rb_plus(self.escape_s,2),$truthy($rb_lt(self.version,24))&&(($truthy(codepoints["$start_with?"](" "))||$truthy(codepoints["$start_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus(self.escape_s,2),$rb_plus(self.escape_s,3))),$truthy(spaces_p=codepoints.$index(/[ \t]{2}/))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_plus($rb_plus(codepoint_s,spaces_p),1),$rb_plus($rb_plus(codepoint_s,spaces_p),2))),($truthy(codepoints["$end_with?"](" "))||$truthy(codepoints["$end_with?"]("\t")))&&self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(p,1),p))),function(){var $brk=Opal.new_brk();try{$send(codepoints.$scan(/([0-9a-fA-F]+)|([ \t]+)/),"each",[],(function $$16($mlhs_tmp1){var $c,self=null==$$16.$$s?this:$$16.$$s,codepoint_str=nil,spaces=nil,codepoint=nil;return null==self.escape&&(self.escape=nil),null==$mlhs_tmp1&&($mlhs_tmp1=nil),codepoint_str=null==($c=$to_ary($mlhs_tmp1))[0]?nil:$c[0],spaces=null==$c[1]?nil:$c[1],$truthy(spaces)?codepoint_s=$rb_plus(codepoint_s,spaces.$length()):(codepoint=codepoint_str.$to_i(16),$truthy($rb_ge(codepoint,1114112))&&(self.$diagnostic("error","unicode_point_too_large",nil,self.$range(codepoint_s,$rb_plus(codepoint_s,codepoint_str.$length()))),Opal.brk(nil,$brk)),self.escape=$rb_plus(self.escape,codepoint.$chr($$$($$("Encoding"),"UTF_8"))),codepoint_s=$rb_plus(codepoint_s,codepoint_str.$length()))}),{$$arity:1,$$s:self,$$brk:$brk,$$has_top_level_mlhs_arg:!0})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(118,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(149,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(363,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(121,$ret_or_1))self.$diagnostic("fatal","invalid_escape"),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(152,$ret_or_1))self.$diagnostic("fatal","invalid_escape"),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(366,$ret_or_1)){self.$diagnostic("fatal","invalid_escape"),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(123,$ret_or_1))self.escape="",self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(154,$ret_or_1))self.escape="",self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(368,$ret_or_1)){self.escape="",self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(120,$ret_or_1))self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(151,$ret_or_1))self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(365,$ret_or_1)){self.escape=self.$encode_escape(self.$tok(self.escape_s,p).$to_i(8)["$%"](256)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(140,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(171,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(385,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_plus(self.escape_s,1),p).$to_i(16)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(139,$ret_or_1))self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(170,$ret_or_1))self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2))),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(384,$ret_or_1)){self.$diagnostic("fatal","invalid_hex_escape",nil,self.$range($rb_minus(self.escape_s,1),$rb_plus(p,2))),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(134,$ret_or_1))self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$("Encoding"),"UTF_8")),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(165,$ret_or_1))self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$("Encoding"),"UTF_8")),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(379,$ret_or_1)){self.escape=self.$tok($rb_plus(self.escape_s,1),p).$to_i(16).$chr($$$($$("Encoding"),"UTF_8")),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(133,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(164,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(378,$ret_or_1)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(138,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(169,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(383,$ret_or_1)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(135,$ret_or_1))self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(166,$ret_or_1))self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(380,$ret_or_1)){self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(119,$ret_or_1))self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(150,$ret_or_1))self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(364,$ret_or_1)){self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(177,$ret_or_1))self.escape_s=p,self.escape=nil,self.te=$rb_plus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(182,$ret_or_1))self.escape_s=p,self.escape=nil,self.te=$rb_plus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(58,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.newline_s=p;else if($eqeqeq(31,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p;else if($eqeqeq(33,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p;else if($eqeqeq(35,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p;else if($eqeqeq(219,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(238,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(246,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(34,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=$rb_plus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(277,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(269,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(288,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(300,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(296,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(59,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=$rb_plus(p,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(50,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=$rb_plus(p,1),self.$emit("tIDENTIFIER",ident_tok,ident_ts,ident_te),p=$rb_minus(ident_te,1),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](ident_tok))&&$truthy($rb_lt(self.version,25))?self.cs=465:self.cs=525,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(318,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(402,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(398,$ret_or_1)){if($truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),$truthy(self.context.$in_kwarg())){p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}self.cs=186,_goto_level=20;continue}if($eqeqeq(411,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(408,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),self.cs=186,_goto_level=20;continue}if($eqeqeq(495,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(427,$ret_or_1)){$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1),self.cs=990,_goto_level=20;continue}if($eqeqeq(101,$ret_or_1))$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(268,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),self.$emit("tLAMBEG","{".$freeze(),$rb_minus(self.te,1),self.te)):self.$emit("tLCURLY","{".$freeze(),$rb_minus(self.te,1),self.te),self.command_start=!0,self.paren_nest=$rb_plus(self.paren_nest,1),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(290,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),self.$emit("tLAMBEG","{".$freeze())):self.$emit("tLBRACE_ARG","{".$freeze()),self.paren_nest=$rb_plus(self.paren_nest,1),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(393,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),self.command_start=!0,self.$emit("tLAMBEG","{".$freeze())):self.$emit("tLBRACE","{".$freeze()),self.paren_nest=$rb_plus(self.paren_nest,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(508,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),current_literal=self.$literal(),$truthy(current_literal)&¤t_literal.$start_interp_brace(),self.te=p,p=$rb_minus(p,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLAMBEG","{".$freeze()):self.$emit("kDO_LAMBDA","do".$freeze())):$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLCURLY","{".$freeze()):self.$emit_do(),$eqeq(self.$tok(),"{".$freeze())&&(self.paren_nest=$rb_plus(self.paren_nest,1)),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(509,$ret_or_1)){if(current_literal=self.$literal(),$truthy(current_literal)&&$truthy(current_literal.$end_interp_brace_and_try_closing())){$truthy(self["$version?"](18,19))?(self.$emit("tRCURLY","}".$freeze(),$rb_minus(p,1),p),self.cond.$lexpop(),self.cmdarg.$lexpop()):self.$emit("tSTRING_DEND","}".$freeze(),$rb_minus(p,1),p),$truthy(current_literal.$saved_herebody_s())&&(self.herebody_s=current_literal.$saved_herebody_s()),p=$rb_minus(p,1),self.cs=self.$next_state_for_literal(current_literal),p=$rb_plus(p,1),_goto_level=40;continue}self.paren_nest=$rb_minus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),$truthy($rb_lt(self.version,24))?(self.cond.$lexpop(),self.cmdarg.$lexpop()):(self.cond.$pop(),self.cmdarg.$pop()),($eqeq(self.$tok(),"}".$freeze())||$eqeq(self.$tok(),"]".$freeze()))&&($truthy($rb_ge(self.version,25))?self.cs=810:self.cs=531),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(61,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p);else if($eqeqeq(65,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.newline_s=p;else if($eqeqeq(222,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(237,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(249,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(271,$ret_or_1)){self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(286,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(298,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(324,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(400,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(410,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(431,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(103,$ret_or_1))self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(243,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("tFID",self.$tok(self.ts,tm),self.ts,tm),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_minus(tm,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(338,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(309,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(424,$ret_or_1)){if(tm=p,$eqeqeq(145,$ret_or_2=self.act)){p=$rb_minus(self.te,1),$eqeq(self.lambda_stack.$last(),self.paren_nest)?(self.lambda_stack.$pop(),$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLAMBEG","{".$freeze()):self.$emit("kDO_LAMBDA","do".$freeze())):$eqeq(self.$tok(),"{".$freeze())?self.$emit("tLCURLY","{".$freeze()):self.$emit_do(),$eqeq(self.$tok(),"{".$freeze())&&(self.paren_nest=$rb_plus(self.paren_nest,1)),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(146,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=352,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(147,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kCLASS","class".$freeze(),self.ts,$rb_plus(self.ts,5)),self.$emit("tLSHFT","<<".$freeze(),$rb_minus(self.te,2),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(148,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(149,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(150,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),self.cs=539,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(151,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),$truthy(self["$version?"](18))&&$eqeq(self.$tok(),"not".$freeze())){self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(152,$ret_or_2)){p=$rb_minus(self.te,1),$truthy(self["$version?"](18))?(self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))||(self.cs=self.$arg_or_cmdarg(cmd_state))):self.$emit("k__ENCODING__","__ENCODING__".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(153,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(154,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(156,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tINTEGER",self.$tok(self.ts,$rb_minus(self.te,1)).$to_i(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else if($eqeqeq(157,$ret_or_2)){if(p=$rb_minus(self.te,1),!$truthy(self["$version?"](18,19,20))){self.$emit("tFLOAT",self.$tok(self.ts,$rb_minus(self.te,1)).$to_f(),self.ts,$rb_minus(self.te,1)),p=$rb_minus(p,1),p=$rb_plus(p,1),_goto_level=40;continue}self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:self.$tok($rb_minus(self.te,1),self.te)}),self.$range($rb_minus(self.te,1),self.te))}else{if($eqeqeq(158,$ret_or_2)){p=$rb_minus(self.te,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(160,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("tCONSTANT"),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(164,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(165,$ret_or_2)){p=$rb_minus(self.te,1),$eqeq(tm,self.te)?self.$emit("tFID"):(self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1)),self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(167,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(168,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}}}else{if($eqeqeq(244,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tFID",self.$tok(self.ts,tm),self.ts,tm),self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_minus(tm,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(339,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(311,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(425,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),$eqeq(tm,self.te)?self.$emit("tFID"):(self.$emit("tIDENTIFIER",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1)),self.cs=494,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(340,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(312,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(341,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(313,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(345,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(316,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(344,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(315,$ret_or_1)){if(tm=$rb_minus(p,2),$eqeqeq(99,$ret_or_2=self.act)){p=$rb_minus(self.te,1),self.$emit("tUNARY_NUM",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(106,$ret_or_2))p=$rb_minus(self.te,1),self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1)));else{if($eqeqeq(117,$ret_or_2)){if(p=$rb_minus(self.te,1),$truthy($rb_ge(self.version,27))){self.$emit("tPIPE",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=$rb_minus(p,1),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}p=$rb_minus(p,2),self.cs=810,_goto_level=20;continue}if($eqeqeq(121,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("PUNCTUATION_BEGIN")),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(122,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm),p=$rb_minus(tm,1),self.cs=539,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(123,$ret_or_2)){p=$rb_minus(self.te,1),self.$emit_table($$("KEYWORDS_BEGIN")),self.command_start=!0,self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(127,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(128,$ret_or_2)){if(p=$rb_minus(self.te,1),self.$emit("tIDENTIFIER"),$not(self.static_env["$nil?"]())&&$truthy(self.static_env["$declared?"](self.$tok()))){self.cs=465,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$arg_or_cmdarg(cmd_state),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(132,$ret_or_2)){p=$rb_minus(self.te,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}}}else{if($eqeqeq(342,$ret_or_1)){tm=$rb_minus(p,3),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(314,$ret_or_1)){tm=$rb_minus(p,3),self.te=p,p=$rb_minus(p,1),p=$rb_minus(self.ts,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(343,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tSYMBOL",self.$tok($rb_plus(self.ts,1),tm),self.ts,tm),p=$rb_minus(tm,1),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(490,$ret_or_1)){tm=$rb_minus(p,2),self.te=p,p=$rb_minus(p,1),self.$emit("tCONSTANT",self.$tok(self.ts,tm),self.ts,tm),p=$rb_minus(tm,1),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(267,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit("tLBRACK","[".$freeze(),$rb_minus(self.te,1),self.te),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(386,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit("tLBRACK","[".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(493,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit("tLBRACK2","[".$freeze()),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(496,$ret_or_1)){self.paren_nest=$rb_minus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),$truthy($rb_lt(self.version,24))?(self.cond.$lexpop(),self.cmdarg.$lexpop()):(self.cond.$pop(),self.cmdarg.$pop()),($eqeq(self.$tok(),"}".$freeze())||$eqeq(self.$tok(),"]".$freeze()))&&($truthy($rb_ge(self.version,25))?self.cs=810:self.cs=531),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(259,$ret_or_1)){if(self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),$truthy(self["$version?"](18))){self.$emit("tLPAREN2","(".$freeze(),$rb_minus(self.te,1),self.te),self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}self.$emit("tLPAREN_ARG","(".$freeze(),$rb_minus(self.te,1),self.te),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(272,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit("tLPAREN2","(".$freeze()),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(280,$ret_or_1)){if(self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit("tLPAREN_ARG","(".$freeze(),$rb_minus(self.te,1),self.te),$truthy(self["$version?"](18))){self.cs=802,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(328,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit("tLPAREN","(".$freeze()),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(437,$ret_or_1)){self.cond.$push(!1),self.cmdarg.$push(!1),self.paren_nest=$rb_plus(self.paren_nest,1),$truthy(self["$version?"](18))&&(self.command_start=!0),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(438,$ret_or_1)){self.paren_nest=$rb_minus(self.paren_nest,1),self.te=p,p=$rb_minus(p,1),self.$emit_table($$("PUNCTUATION")),$truthy($rb_lt(self.version,24))?(self.cond.$lexpop(),self.cmdarg.$lexpop()):(self.cond.$pop(),self.cmdarg.$pop()),($eqeq(self.$tok(),"}".$freeze())||$eqeq(self.$tok(),"]".$freeze()))&&($truthy($rb_ge(self.version,25))?self.cs=810:self.cs=531),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(72,$ret_or_1))heredoc_e=p,self.newline_s=p;else if($eqeqeq(353,$ret_or_1)){if(new_herebody_s=p,self.te=p,p=$rb_minus(p,1),self.$tok(self.ts,heredoc_e)["$=~"](/^<<(-?)(~?)(["'`]?)(.*)\3$/m),indent=$truthy($ret_or_2=(($b=$gvars["~"])===nil?nil:$b["$[]"](1))["$empty?"]()["$!"]())?$ret_or_2:(($b=$gvars["~"])===nil?nil:$b["$[]"](2))["$empty?"]()["$!"](),dedent_body=(($b=$gvars["~"])===nil?nil:$b["$[]"](2))["$empty?"]()["$!"](),type=$truthy((($b=$gvars["~"])===nil?nil:$b["$[]"](3))["$empty?"]())?'<<"'.$freeze():$rb_plus("<<".$freeze(),($b=$gvars["~"])===nil?nil:$b["$[]"](3)),delimiter=($b=$gvars["~"])===nil?nil:$b["$[]"](4),$truthy($rb_ge(self.version,27))?($truthy($rb_gt(delimiter.$count("\n"),0))||$truthy($rb_gt(delimiter.$count("\r"),0)))&&self.$diagnostic("error","unterminated_heredoc_id",nil,self.$range(self.ts,$rb_plus(self.ts,1))):$truthy($rb_ge(self.version,24))&&$truthy($rb_gt(delimiter.$count("\n"),0))&&($truthy(delimiter["$end_with?"]("\n"))?(self.$diagnostic("warning","heredoc_id_ends_with_nl",nil,self.$range(self.ts,$rb_plus(self.ts,1))),delimiter=delimiter.$rstrip()):self.$diagnostic("fatal","heredoc_id_has_newline",nil,self.$range(self.ts,$rb_plus(self.ts,1)))),$truthy(dedent_body)&&$truthy(self["$version?"](18,19,20,21,22))){self.$emit("tLSHFT","<<".$freeze(),self.ts,$rb_plus(self.ts,2)),p=$rb_plus(self.ts,1),self.cs=563,p=$rb_plus(p,1),_goto_level=40;continue}self.cs=self.$push_literal(type,delimiter,self.ts,heredoc_e,indent,dedent_body),self.herebody_s=$truthy($ret_or_2=self.herebody_s)?$ret_or_2:new_herebody_s,p=$rb_minus(self.herebody_s,1)}else{if($eqeqeq(348,$ret_or_1)){tm=$rb_minus(p,1),diag_msg="ivar_name",self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te)):(self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=self.ts),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(351,$ret_or_1)){tm=$rb_minus(p,2),diag_msg="cvar_name",self.te=p,p=$rb_minus(p,1),$truthy($rb_ge(self.version,27))?self.$diagnostic("error",diag_msg,$hash2(["name"],{name:self.$tok(tm,self.te)}),self.$range(tm,self.te)):(self.$emit("tCOLON",self.$tok(self.ts,$rb_plus(self.ts,1)),self.ts,$rb_plus(self.ts,1)),p=self.ts),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(359,$ret_or_1)){self.escape=nil,self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(389,$ret_or_1)){tm=p,self.te=p,p=$rb_minus(p,1),self.$emit("kRESCUE","rescue".$freeze(),self.ts,tm),p=$rb_minus(tm,1),self.cs=539,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(480,$ret_or_1))self.num_base=16,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(474,$ret_or_1))self.num_base=10,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(477,$ret_or_1))self.num_base=8,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(471,$ret_or_1))self.num_base=2,self.num_digits_s=p,self.num_suffix_s=p;else if($eqeqeq(486,$ret_or_1))self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p;else if($eqeqeq(449,$ret_or_1))self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p;else if($eqeqeq(487,$ret_or_1))self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$17(chars){return null==chars&&(chars=nil),(null==$$17.$$s?this:$$17.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self});else if($eqeqeq(8,$ret_or_1))self.te=$rb_plus(p,1),self.newline_s=p;else if($eqeqeq(453,$ret_or_1))self.te=$rb_plus(p,1),self.num_suffix_s=p;else if($eqeqeq(228,$ret_or_1))self.te=$rb_plus(p,1),self.act=43;else if($eqeqeq(215,$ret_or_1))self.te=$rb_plus(p,1),self.act=44;else if($eqeqeq(211,$ret_or_1))self.te=$rb_plus(p,1),self.act=45;else if($eqeqeq(27,$ret_or_1))self.te=$rb_plus(p,1),self.act=72;else if($eqeqeq(261,$ret_or_1))self.te=$rb_plus(p,1),self.act=73;else if($eqeqeq(28,$ret_or_1))self.te=$rb_plus(p,1),self.act=78;else if($eqeqeq(254,$ret_or_1))self.te=$rb_plus(p,1),self.act=79;else if($eqeqeq(281,$ret_or_1))self.te=$rb_plus(p,1),self.act=85;else if($eqeqeq(46,$ret_or_1))self.te=$rb_plus(p,1),self.act=86;else if($eqeqeq(302,$ret_or_1))self.te=$rb_plus(p,1),self.act=93;else if($eqeqeq(291,$ret_or_1))self.te=$rb_plus(p,1),self.act=94;else if($eqeqeq(70,$ret_or_1))self.te=$rb_plus(p,1),self.act=106;else if($eqeqeq(394,$ret_or_1))self.te=$rb_plus(p,1),self.act=117;else if($eqeqeq(305,$ret_or_1))self.te=$rb_plus(p,1),self.act=121;else if($eqeqeq(388,$ret_or_1))self.te=$rb_plus(p,1),self.act=122;else if($eqeqeq(387,$ret_or_1))self.te=$rb_plus(p,1),self.act=123;else if($eqeqeq(75,$ret_or_1))self.te=$rb_plus(p,1),self.act=127;else if($eqeqeq(303,$ret_or_1))self.te=$rb_plus(p,1),self.act=128;else if($eqeqeq(306,$ret_or_1))self.te=$rb_plus(p,1),self.act=132;else if($eqeqeq(504,$ret_or_1))self.te=$rb_plus(p,1),self.act=145;else if($eqeqeq(499,$ret_or_1))self.te=$rb_plus(p,1),self.act=146;else if($eqeqeq(507,$ret_or_1))self.te=$rb_plus(p,1),self.act=148;else if($eqeqeq(500,$ret_or_1))self.te=$rb_plus(p,1),self.act=149;else if($eqeqeq(501,$ret_or_1))self.te=$rb_plus(p,1),self.act=150;else if($eqeqeq(506,$ret_or_1))self.te=$rb_plus(p,1),self.act=151;else if($eqeqeq(498,$ret_or_1))self.te=$rb_plus(p,1),self.act=152;else if($eqeqeq(492,$ret_or_1))self.te=$rb_plus(p,1),self.act=153;else if($eqeqeq(418,$ret_or_1))self.te=$rb_plus(p,1),self.act=154;else if($eqeqeq(451,$ret_or_1))self.te=$rb_plus(p,1),self.act=157;else if($eqeqeq(82,$ret_or_1))self.te=$rb_plus(p,1),self.act=158;else if($eqeqeq(421,$ret_or_1))self.te=$rb_plus(p,1),self.act=160;else if($eqeqeq(412,$ret_or_1))self.te=$rb_plus(p,1),self.act=164;else if($eqeqeq(423,$ret_or_1))self.te=$rb_plus(p,1),self.act=165;else if($eqeqeq(416,$ret_or_1))self.te=$rb_plus(p,1),self.act=167;else if($eqeqeq(422,$ret_or_1))self.te=$rb_plus(p,1),self.act=168;else if($eqeqeq(88,$ret_or_1))self.te=$rb_plus(p,1),self.act=181;else if($eqeqeq(511,$ret_or_1))self.te=$rb_plus(p,1),self.act=185;else if($eqeqeq(183,$ret_or_1)){if(self.newline_s=p,self.te=$rb_plus(p,1),current_literal=self.$literal(),$eqeq(self.te,pe)&&self.$diagnostic("fatal","string_eof",nil,self.$range(current_literal.$str_s(),$rb_plus(current_literal.$str_s(),1))),$truthy(current_literal["$heredoc?"]())){if(line=self.$tok(self.herebody_s,self.ts).$gsub(/\r+$/,"".$freeze()),$truthy(self["$version?"](18,19,20))&&(line=line.$gsub(/\r.*$/,"".$freeze())),$truthy(current_literal.$nest_and_try_closing(line,self.herebody_s,self.ts))){self.herebody_s=self.te,p=$rb_minus(current_literal.$heredoc_e(),1),self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}current_literal.$infer_indent_level(line),self.herebody_s=self.te}else{if($truthy(current_literal.$nest_and_try_closing(self.$tok(),self.ts,self.te))){self.cs=self.$pop_literal(),p=$rb_plus(p,1),_goto_level=40;continue}$truthy(self.herebody_s)&&(p=$rb_minus(self.herebody_s,1),self.herebody_s=nil)}$truthy(current_literal["$words?"]())&&$not(self["$eof_codepoint?"](self.source_pts["$[]"](p)))?current_literal.$extend_space(self.ts,self.te):(current_literal.$extend_string(self.$tok(),self.ts,self.te),current_literal.$flush_string()),self.escape_s=p,self.escape=nil}else if($eqeqeq(124,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(155,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(369,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(131,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(162,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(376,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(122,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(153,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(367,$ret_or_1)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(130,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(161,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(375,$ret_or_1)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(126,$ret_or_1))self.escape="",self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(157,$ret_or_1))self.escape="",self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(371,$ret_or_1)){self.escape="",self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(129,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(160,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(374,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(136,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(167,$ret_or_1))self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(381,$ret_or_1)){self.$diagnostic("fatal","invalid_unicode_escape",nil,self.$range($rb_minus(self.escape_s,1),p)),self.$diagnostic("fatal","unterminated_unicode",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(116,$ret_or_1))self.escape_s=p,self.escape=nil,self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(148,$ret_or_1))self.escape_s=p,self.escape=nil,self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(362,$ret_or_1)){self.escape_s=p,self.escape=nil,self.$diagnostic("fatal","escape_eof",nil,self.$range($rb_minus(p,1),p)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(62,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.newline_s=p;else if($eqeqeq(221,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(236,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(248,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else{if($eqeqeq(270,$ret_or_1)){self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1),self.cs=810,_goto_level=20;continue}if($eqeqeq(285,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(297,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(323,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(399,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(409,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(430,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(102,$ret_or_1))self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.te=p,p=$rb_minus(p,1);else if($eqeqeq(482,$ret_or_1))self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$18(chars){return null==chars&&(chars=nil),(null==$$18.$$s?this:$$18.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self});else if($eqeqeq(446,$ret_or_1))self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$19(chars){return null==chars&&(chars=nil),(null==$$19.$$s?this:$$19.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self});else{if($eqeqeq(461,$ret_or_1)){self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$20(chars){return null==chars&&(chars=nil),(null==$$20.$$s?this:$$20.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(454,$ret_or_1)){self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$21(chars){var self=null==$$21.$$s?this:$$21.$$s;return null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(450,$ret_or_1)){self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$22(chars){var self=null==$$22.$$s?this:$$22.$$s;return null==chars&&(chars=nil),self.$emit("tFLOAT",self.$Float(chars))}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.ts,self.num_suffix_s),$truthy(self["$version?"](18,19,20))?(self.$emit("tFLOAT",self.$Float(digits),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(276,$ret_or_1))self.te=$rb_plus(p,1),self.newline_s=p,self.act=79;else if($eqeqeq(36,$ret_or_1))self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.act=78;else if($eqeqeq(47,$ret_or_1))self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.act=86;else if($eqeqeq(94,$ret_or_1))self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),self.act=181;else if($eqeqeq(66,$ret_or_1))self.te=$rb_plus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=99;else if($eqeqeq(85,$ret_or_1))self.te=$rb_plus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=147;else if($eqeqeq(93,$ret_or_1))self.te=$rb_plus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=181;else if($eqeqeq(38,$ret_or_1))self.te=$rb_plus(p,1),tm=p,self.act=73;else if($eqeqeq(391,$ret_or_1))self.te=$rb_plus(p,1),tm=p,self.act=127;else if($eqeqeq(390,$ret_or_1))self.te=$rb_plus(p,1),tm=p,self.act=128;else if($eqeqeq(483,$ret_or_1))self.te=$rb_plus(p,1),self.num_base=10,self.num_digits_s=self.ts,self.act=154;else if($eqeqeq(127,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(158,$ret_or_1))codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(372,$ret_or_1)){codepoint=self.source_pts["$[]"]($rb_minus(p,1)),$truthy($rb_ge(self.version,30))&&($eqeq(codepoint,117)||$eqeq(codepoint,85))&&self.$diagnostic("fatal","invalid_escape"),$truthy((self.escape=$$("ESCAPES")["$[]"](codepoint))["$nil?"]())&&(self.escape=self.$encode_escape(self.source_buffer.$slice($rb_minus(p,1)))),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(125,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(156,$ret_or_1))self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(370,$ret_or_1)){self.escape=self.source_buffer.$slice($rb_minus(p,1)).$chr(),$truthy($rb_ge(self.version,27))&&($truthy($range(0,8,!1)["$include?"](self.escape.$ord()))||$truthy($range(14,31,!1)["$include?"](self.escape.$ord())))&&self.$diagnostic("fatal","invalid_escape"),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(132,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(163,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(377,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(128,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else if($eqeqeq(159,$ret_or_1))self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),current_literal=self.$literal(),escaped_char=self.source_buffer.$slice(self.escape_s).$chr(),$truthy(current_literal["$munge_escape?"](escaped_char))?$truthy(current_literal["$regexp?"]())&&$truthy($$("REGEXP_META_CHARACTERS").$match(escaped_char))?current_literal.$extend_string(self.$tok(),self.ts,self.te):current_literal.$extend_string(escaped_char,self.ts,self.te):$truthy(current_literal["$squiggly_heredoc?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok(),self.ts,self.te):$truthy(current_literal["$supports_line_continuation_via_slash?"]())&&$eqeq(escaped_char,"\n".$freeze())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):$truthy(current_literal["$regexp?"]())&&$truthy($rb_ge(self.version,31))&&$truthy(["c","C","m","M"]["$include?"](escaped_char))?current_literal.$extend_string(self.escape,self.ts,self.te):$truthy(current_literal["$regexp?"]())?current_literal.$extend_string(self.$tok().$gsub("\\\n".$freeze(),"".$freeze()),self.ts,self.te):current_literal.$extend_string($truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok(),self.ts,self.te);else{if($eqeqeq(373,$ret_or_1)){self.escape=self.$encode_escape(self.$tok($rb_minus(p,2),p).$to_i(16)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$&"](159)),self.escape=self.$encode_escape(self.escape["$[]"](0).$ord()["$|"](128)),self.te=p,p=$rb_minus(p,1),value=$truthy($ret_or_2=self.escape)?$ret_or_2:self.$tok($rb_plus(self.ts,1)),$truthy(self["$version?"](18))?self.$emit("tINTEGER",value.$getbyte(0)):self.$emit("tCHARACTER",value),self.cs=810,p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(478,$ret_or_1)){self.num_base=16,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$23(chars){return null==chars&&(chars=nil),(null==$$23.$$s?this:$$23.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(472,$ret_or_1)){self.num_base=10,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$24(chars){return null==chars&&(chars=nil),(null==$$24.$$s?this:$$24.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(475,$ret_or_1)){self.num_base=8,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$25(chars){return null==chars&&(chars=nil),(null==$$25.$$s?this:$$25.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(469,$ret_or_1)){self.num_base=2,self.num_digits_s=p,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$26(chars){return null==chars&&(chars=nil),(null==$$26.$$s?this:$$26.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(481,$ret_or_1)){self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$27(chars){return null==chars&&(chars=nil),(null==$$27.$$s?this:$$27.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}if($eqeqeq(445,$ret_or_1)){self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$28(chars){return null==chars&&(chars=nil),(null==$$28.$$s?this:$$28.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.te=p,p=$rb_minus(p,1),digits=self.$tok(self.num_digits_s,self.num_suffix_s),$truthy(digits["$end_with?"]("_".$freeze()))?self.$diagnostic("error","trailing_in_number",$hash2(["character"],{character:"_".$freeze()}),self.$range($rb_minus(self.te,1),self.te)):$truthy(digits["$empty?"]())&&$eqeq(self.num_base,8)&&$truthy(self["$version?"](18))?digits="0".$freeze():$truthy(digits["$empty?"]())?self.$diagnostic("error","empty_numeric"):$eqeq(self.num_base,8)&&$truthy(invalid_idx=digits.$index(/[89]/))&&(invalid_s=$rb_plus(self.num_digits_s,invalid_idx),self.$diagnostic("error","invalid_octal",nil,self.$range(invalid_s,$rb_plus(invalid_s,1)))),$truthy(self["$version?"](18,19,20))?(self.$emit("tINTEGER",digits.$to_i(self.num_base),self.ts,self.num_suffix_s),p=$rb_minus(self.num_suffix_s,1)):self.num_xfrm.$call(digits.$to_i(self.num_base)),p=$rb_plus(p,1),_goto_level=40;continue}$eqeqeq(32,$ret_or_1)?(self.te=$rb_plus(p,1),$truthy(self.herebody_s)&&(p=self.herebody_s,self.herebody_s=nil),tm=p,self.act=73):$eqeqeq(63,$ret_or_1)?(self.te=$rb_plus(p,1),self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=99):$eqeqeq(92,$ret_or_1)?(self.te=$rb_plus(p,1),self.sharp_s=$rb_minus(p,1),self.$emit_comment(self.sharp_s,$eqeq(p,pe)?$rb_minus(p,2):p),self.act=181):$eqeqeq(488,$ret_or_1)?(self.te=$rb_plus(p,1),self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$29(chars){return null==chars&&(chars=nil),(null==$$29.$$s?this:$$29.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.act=156):$eqeqeq(484,$ret_or_1)?(self.te=$rb_plus(p,1),self.num_base=10,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$30(chars){return null==chars&&(chars=nil),(null==$$30.$$s?this:$$30.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.act=156):$eqeqeq(448,$ret_or_1)&&(self.te=$rb_plus(p,1),self.num_base=8,self.num_digits_s=self.ts,self.num_suffix_s=p,self.num_xfrm=$send(self,"lambda",[],(function $$31(chars){return null==chars&&(chars=nil),(null==$$31.$$s?this:$$31.$$s).$emit("tINTEGER",chars)}),{$$arity:1,$$s:self}),self.act=156)}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}if($truthy($rb_le(_goto_level,20))){if($eqeqeq(96,$ret_or_1=_lex_to_state_actions["$[]"](self.cs))&&(self.ts=nil),$eqeq(self.cs,0)){_goto_level=40;continue}if(p=$rb_plus(p,1),$neqeq(p,pe)){_goto_level=10;continue}}if($truthy($rb_le(_goto_level,30))&&$eqeq(p,eof)&&$truthy($rb_gt(_lex_eof_trans["$[]"](self.cs),0)))_trans=$rb_minus(_lex_eof_trans["$[]"](self.cs),1),_goto_level=15;else if($truthy($rb_le(_goto_level,40)))break}return $truthy(!1),self.p=p,$truthy(self.token_queue["$any?"]())?self.token_queue.$shift():$eqeq(self.cs,klass.$lex_error())?[!1,["$error".$freeze(),self.$range($rb_minus(p,1),p)]]:(eof=self.source_pts.$size(),[!1,["$eof".$freeze(),self.$range(eof,eof)]])}),0),self.$protected(),$def(self,"$eof_codepoint?",(function(point){return[4,26,0]["$include?"](point)}),1),$def(self,"$version?",(function($a){var self=this;return Opal.slice.call(arguments)["$include?"](self.version)}),-1),$def(self,"$stack_pop",(function(){return this.top=$rb_minus(this.top,1),this.stack["$[]"](this.top)}),0),$def(self,"$encode_escape",(function(ord){return ord.$chr().$force_encoding(this.source_buffer.$source().$encoding())}),1),$def(self,"$tok",(function(s,e){return null==s&&(s=this.ts),null==e&&(e=this.te),this.source_buffer.$slice(Opal.Range.$new(s,e,!0))}),-1),$def(self,"$range",(function(s,e){return null==s&&(s=this.ts),null==e&&(e=this.te),$$$($$$($$("Parser"),"Source"),"Range").$new(this.source_buffer,s,e)}),-1),$def(self,"$emit",(function(type,value,s,e){var token;return null==value&&(value=this.$tok()),null==s&&(s=this.ts),null==e&&(e=this.te),token=[type,[value,this.$range(s,e)]],this.token_queue.$push(token),$truthy(this.tokens)&&this.tokens.$push(token),token}),-2),$def(self,"$emit_table",(function(table,s,e){var value;return null==s&&(s=this.ts),null==e&&(e=this.te),value=this.$tok(s,e),this.$emit(table["$[]"](value),value,s,e)}),-2),$def(self,"$emit_do",(function(do_block){return null==do_block&&(do_block=!1),$truthy(this.cond["$active?"]())?this.$emit("kDO_COND","do".$freeze()):$truthy(this.cmdarg["$active?"]())||$truthy(do_block)?this.$emit("kDO_BLOCK","do".$freeze()):this.$emit("kDO","do".$freeze())}),-1),$def(self,"$arg_or_cmdarg",(function(cmd_state){return $truthy(cmd_state)?this.$class().$lex_en_expr_cmdarg():this.$class().$lex_en_expr_arg()}),1),$def(self,"$emit_comment",(function(s,e){return null==s&&(s=this.ts),null==e&&(e=this.te),$truthy(this.comments)&&this.comments.$push($$$($$$($$("Parser"),"Source"),"Comment").$new(this.$range(s,e))),$truthy(this.tokens)&&this.tokens.$push(["tCOMMENT",[this.$tok(s,e),this.$range(s,e)]]),nil}),-1),$def(self,"$diagnostic",(function(type,reason,arguments$,location,highlights){return null==arguments$&&(arguments$=nil),null==location&&(location=this.$range()),null==highlights&&(highlights=[]),this.diagnostics.$process($$$($$("Parser"),"Diagnostic").$new(type,reason,arguments$,location,highlights))}),-3),$def(self,"$push_literal",(function($a){var args,self=this,new_literal=nil;return args=Opal.slice.call(arguments),new_literal=$send($$("Literal"),"new",[self].concat($to_a(args))),self.literal_stack.$push(new_literal),self.$next_state_for_literal(new_literal)}),-1),$def(self,"$next_state_for_literal",(function(literal){return $truthy(literal["$words?"]())&&$truthy(literal["$backslash_delimited?"]())?$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_backslash_delimited_words():this.$class().$lex_en_plain_backslash_delimited_words():$truthy(literal["$words?"]())&&$not(literal["$backslash_delimited?"]())?$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_words():this.$class().$lex_en_plain_words():$not(literal["$words?"]())&&$truthy(literal["$backslash_delimited?"]())?$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_backslash_delimited():this.$class().$lex_en_plain_backslash_delimited():$truthy(literal["$interpolate?"]())?this.$class().$lex_en_interp_string():this.$class().$lex_en_plain_string()}),1),$def(self,"$literal",(function(){return this.literal_stack.$last()}),0),$def(self,"$pop_literal",(function(){var old_literal=nil;return old_literal=this.literal_stack.$pop(),this.dedent_level=old_literal.$dedent_level(),$eqeq(old_literal.$type(),"tREGEXP_BEG")?this.$class().$lex_en_regexp_modifiers():this.$class().$lex_en_expr_end()}),0),$const_set($nesting[0],"PUNCTUATION",$hash2(["=","&","|","!","^","+","-","*","/","%","~",",",";",".","..","...","[","]","(",")","?",":","&&","||","-@","+@","~@","**","->","=~","!~","==","!=",">",">>",">=","<","<<","<=","=>","::","===","<=>","[]","[]=","{","}","`","!@","&."],{"=":"tEQL","&":"tAMPER2","|":"tPIPE","!":"tBANG","^":"tCARET","+":"tPLUS","-":"tMINUS","*":"tSTAR2","/":"tDIVIDE","%":"tPERCENT","~":"tTILDE",",":"tCOMMA",";":"tSEMI",".":"tDOT","..":"tDOT2","...":"tDOT3","[":"tLBRACK2","]":"tRBRACK","(":"tLPAREN2",")":"tRPAREN","?":"tEH",":":"tCOLON","&&":"tANDOP","||":"tOROP","-@":"tUMINUS","+@":"tUPLUS","~@":"tTILDE","**":"tPOW","->":"tLAMBDA","=~":"tMATCH","!~":"tNMATCH","==":"tEQ","!=":"tNEQ",">":"tGT",">>":"tRSHFT",">=":"tGEQ","<":"tLT","<<":"tLSHFT","<=":"tLEQ","=>":"tASSOC","::":"tCOLON2","===":"tEQQ","<=>":"tCMP","[]":"tAREF","[]=":"tASET","{":"tLCURLY","}":"tRCURLY","`":"tBACK_REF2","!@":"tBANG","&.":"tANDDOT"})),$const_set($nesting[0],"PUNCTUATION_BEGIN",$hash2(["&","*","**","+","-","::","(","{","["],{"&":"tAMPER","*":"tSTAR","**":"tDSTAR","+":"tUPLUS","-":"tUMINUS","::":"tCOLON3","(":"tLPAREN","{":"tLBRACE","[":"tLBRACK"})),$const_set($nesting[0],"KEYWORDS",$hash2(["if","unless","while","until","rescue","defined?","BEGIN","END"],{if:"kIF_MOD",unless:"kUNLESS_MOD",while:"kWHILE_MOD",until:"kUNTIL_MOD",rescue:"kRESCUE_MOD","defined?":"kDEFINED",BEGIN:"klBEGIN",END:"klEND"})),$const_set($nesting[0],"KEYWORDS_BEGIN",$hash2(["if","unless","while","until","rescue","defined?","BEGIN","END"],{if:"kIF",unless:"kUNLESS",while:"kWHILE",until:"kUNTIL",rescue:"kRESCUE","defined?":"kDEFINED",BEGIN:"klBEGIN",END:"klEND"})),$send(["class","module","def","undef","begin","end","then","elsif","else","ensure","case","when","for","break","next","redo","retry","in","do","return","yield","super","self","nil","true","false","and","or","not","alias","__FILE__","__LINE__","__ENCODING__"],"each",[],(function(keyword){return null==keyword&&(keyword=nil),$writer=[keyword,($writer=[keyword,"k"+keyword.$upcase()],$send($$("KEYWORDS"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])],$send($$("KEYWORDS_BEGIN"),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1)}($$("Parser"),0,$nesting)},Opal.modules["parser/lexer/literal"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$hash2=Opal.hash2,$enc=Opal.enc,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$to_ary=Opal.to_ary,$def=Opal.def,$eqeq=Opal.eqeq,$rb_minus=Opal.rb_minus,$neqeq=Opal.neqeq,$not=Opal.not,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$rb_gt=Opal.rb_gt;return Opal.add_stubs("attr_reader,attr_accessor,coerce_encoding,include?,send,+,[],fetch,==,!,heredoc?,start_with?,freeze,clear_buffer,emit_start_tok,type,=~,words?,delimiter?,-,extend_space,!=,flush_string,emit,each_char,===,%,>,nil?,<<,empty?,extend_content,protected,lstrip,b,dup,force_encoding,encoding,source,source_buffer,length"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Literal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.lexer=$proto.start_tok=$proto.str_type=$proto.monolithic=$proto.interpolate=$proto.heredoc_e=$proto.dedent_body=$proto.end_delim=$proto.start_delim=$proto.nesting=$proto.label_allowed=$proto.buffer=$proto.str_s=$proto.interp_braces=$proto.buffer_s=$proto.buffer_e=$proto.space_emitted=$proto.indent=nil,$const_set($nesting[0],"DELIMITERS",$hash2(["(","[","{","<"],{"(":$enc(")","ASCII-8BIT"),"[":$enc("]","ASCII-8BIT"),"{":$enc("}","ASCII-8BIT"),"<":$enc(">","ASCII-8BIT")})),$const_set($nesting[0],"TYPES",$hash2(["'","<<'","%q",'"','<<"',"%","%Q","%w","%W","%i","%I",":'","%s",':"',"/","%r","%x","`","<<`"],{"'":["tSTRING_BEG",!1],"<<'":["tSTRING_BEG",!1],"%q":["tSTRING_BEG",!1],'"':["tSTRING_BEG",!0],'<<"':["tSTRING_BEG",!0],"%":["tSTRING_BEG",!0],"%Q":["tSTRING_BEG",!0],"%w":["tQWORDS_BEG",!1],"%W":["tWORDS_BEG",!0],"%i":["tQSYMBOLS_BEG",!1],"%I":["tSYMBOLS_BEG",!0],":'":["tSYMBEG",!1],"%s":["tSYMBEG",!1],':"':["tSYMBEG",!0],"/":["tREGEXP_BEG",!0],"%r":["tREGEXP_BEG",!0],"%x":["tXSTRING_BEG",!0],"`":["tXSTRING_BEG",!0],"<<`":["tXSTRING_BEG",!0]})),self.$attr_reader("heredoc_e","str_s","dedent_level"),self.$attr_accessor("saved_herebody_s"),$def(self,"$initialize",(function(lexer,str_type,delimiter,str_s,heredoc_e,indent,dedent_body,label_allowed){var $a,$b,$ret_or_1,$ret_or_2;return null==heredoc_e&&(heredoc_e=nil),null==indent&&(indent=!1),null==dedent_body&&(dedent_body=!1),null==label_allowed&&(label_allowed=!1),this.lexer=lexer,this.nesting=1,str_type=this.$coerce_encoding(str_type),delimiter=this.$coerce_encoding(delimiter),$truthy($$("TYPES")["$include?"](str_type))||lexer.$send("diagnostic","error","unexpected_percent_str",$hash2(["type"],{type:str_type}),this.lexer.$send("range",str_s,$rb_plus(str_s,2))),this.str_type=str_type,this.str_s=str_s,$b=$$("TYPES")["$[]"](str_type),$a=$to_ary($b),this.start_tok=null==$a[0]?nil:$a[0],this.interpolate=null==$a[1]?nil:$a[1],this.start_delim=$truthy($$("DELIMITERS")["$include?"](delimiter))?delimiter:nil,this.end_delim=$$("DELIMITERS").$fetch(delimiter,delimiter),this.heredoc_e=heredoc_e,this.indent=indent,this.label_allowed=label_allowed,this.dedent_body=dedent_body,this.dedent_level=nil,this.interp_braces=0,this.space_emitted=!0,this.monolithic=$truthy($ret_or_1=$truthy($ret_or_2=this.start_tok["$=="]("tSTRING_BEG"))?[$enc("'","ASCII-8BIT"),$enc('"',"ASCII-8BIT")]["$include?"](str_type):$ret_or_2)?this["$heredoc?"]()["$!"]():$ret_or_1,$truthy(this.str_type["$start_with?"]($enc("%","ASCII-8BIT").$freeze()))&&(this.str_type=$rb_plus(this.str_type,delimiter)),this.$clear_buffer(),$truthy(this.monolithic)?nil:this.$emit_start_tok()}),-5),$def(self,"$interpolate?",(function(){return this.interpolate}),0),$def(self,"$words?",(function(){var $ret_or_1,$ret_or_2,$ret_or_3;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.$type()["$=="]("tWORDS_BEG"))?$ret_or_3:this.$type()["$=="]("tQWORDS_BEG"))?$ret_or_2:this.$type()["$=="]("tSYMBOLS_BEG"))?$ret_or_1:this.$type()["$=="]("tQSYMBOLS_BEG")}),0),$def(self,"$regexp?",(function(){return this.$type()["$=="]("tREGEXP_BEG")}),0),$def(self,"$heredoc?",(function(){return this.heredoc_e["$!"]()["$!"]()}),0),$def(self,"$plain_heredoc?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$heredoc?"]())?this.dedent_body["$!"]():$ret_or_1}),0),$def(self,"$squiggly_heredoc?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$heredoc?"]())?this.dedent_body:$ret_or_1}),0),$def(self,"$backslash_delimited?",(function(){return this.end_delim["$=="]($enc("\\","ASCII-8BIT").$freeze())}),0),$def(self,"$type",(function(){return this.start_tok}),0),$def(self,"$munge_escape?",(function(character){return character=this.$coerce_encoding(character),!(!$truthy(this["$words?"]())||!$truthy(character["$=~"](/[ \t\v\r\f\n]/)))||[$enc("\\","ASCII-8BIT").$freeze(),this.start_delim,this.end_delim]["$include?"](character)}),1),$def(self,"$nest_and_try_closing",(function(delimiter,ts,te,lookahead){return null==lookahead&&(lookahead=nil),delimiter=this.$coerce_encoding(delimiter),$truthy(this.start_delim)&&$eqeq(this.start_delim,delimiter)?this.nesting=$rb_plus(this.nesting,1):$truthy(this["$delimiter?"](delimiter))&&(this.nesting=$rb_minus(this.nesting,1)),$eqeq(this.nesting,0)?($truthy(this["$words?"]())&&this.$extend_space(ts,ts),$truthy(lookahead)&&$truthy(this.label_allowed)&&$eqeq(lookahead["$[]"](0),$enc(":","ASCII-8BIT"))&&$neqeq(lookahead["$[]"](1),$enc(":","ASCII-8BIT"))&&$eqeq(this.start_tok,"tSTRING_BEG")?(this.$flush_string(),this.$emit("tLABEL_END",this.end_delim,ts,$rb_plus(te,1))):$truthy(this.monolithic)?this.$emit("tSTRING",this.buffer,this.str_s,te):($truthy(this["$heredoc?"]())||this.$flush_string(),this.$emit("tSTRING_END",this.end_delim,ts,te))):nil}),-4),$def(self,"$infer_indent_level",(function(line){var self=this,indent_level=nil;return $not(self.dedent_body)?nil:(indent_level=0,function(){var $brk=Opal.new_brk();try{return $send(line,"each_char",[],(function $$9(char$){var $ret_or_1,self=null==$$9.$$s?this:$$9.$$s;return null==self.dedent_level&&(self.dedent_level=nil),null==char$&&(char$=nil),$eqeqeq(" ",$ret_or_1=char$)?indent_level=$rb_plus(indent_level,1):$eqeqeq("\t",$ret_or_1)?indent_level=$rb_plus(indent_level,$rb_minus(8,indent_level["$%"](8))):(($truthy(self.dedent_level["$nil?"]())||$truthy($rb_gt(self.dedent_level,indent_level)))&&(self.dedent_level=indent_level),void Opal.brk(nil,$brk))}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}())}),1),$def(self,"$start_interp_brace",(function(){return this.interp_braces=$rb_plus(this.interp_braces,1)}),0),$def(self,"$end_interp_brace_and_try_closing",(function(){return this.interp_braces=$rb_minus(this.interp_braces,1),this.interp_braces["$=="](0)}),0),$def(self,"$extend_string",(function(string,ts,te){var $ret_or_1;return this.buffer_s=$truthy($ret_or_1=this.buffer_s)?$ret_or_1:ts,this.buffer_e=te,this.buffer["$<<"](string)}),3),$def(self,"$flush_string",(function(){return $truthy(this.monolithic)&&(this.$emit_start_tok(),this.monolithic=!1),$truthy(this.buffer["$empty?"]())?nil:(this.$emit("tSTRING_CONTENT",this.buffer,this.buffer_s,this.buffer_e),this.$clear_buffer(),this.$extend_content())}),0),$def(self,"$extend_content",(function(){return this.space_emitted=!1}),0),$def(self,"$extend_space",(function(ts,te){return this.$flush_string(),$truthy(this.space_emitted)?nil:(this.$emit("tSPACE",nil,ts,te),this.space_emitted=!0)}),2),$def(self,"$supports_line_continuation_via_slash?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$words?"]()["$!"]())?this.interpolate:$ret_or_1}),0),self.$protected(),$def(self,"$delimiter?",(function(delimiter){return $truthy(this.indent)?this.end_delim["$=="](delimiter.$lstrip()):this.end_delim["$=="](delimiter)}),1),$def(self,"$coerce_encoding",(function(string){return string.$b()}),1),$def(self,"$clear_buffer",(function(){return this.buffer=$enc("","ASCII-8BIT").$dup(),this.buffer.$force_encoding(this.lexer.$source_buffer().$source().$encoding()),this.buffer_s=nil,this.buffer_e=nil}),0),$def(self,"$emit_start_tok",(function(){var str_e,$ret_or_1;return str_e=$truthy($ret_or_1=this.heredoc_e)?$ret_or_1:$rb_plus(this.str_s,this.str_type.$length()),this.$emit(this.start_tok,this.str_type,this.str_s,str_e)}),0),$def(self,"$emit",(function(token,type,s,e){return this.lexer.$send("emit",token,type,s,e)}),4)}(Opal.$r($nesting)("Lexer"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/lexer/stack_state"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$alias=Opal.alias;return Opal.add_stubs("freeze,clear,|,<<,&,>>,==,[],to_s"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super){var self=$klass($base,null,"StackState"),$proto=self.$$prototype;return $proto.stack=$proto.name=nil,$def(self,"$initialize",(function(name){return this.name=name.$freeze(),this.$clear()}),1),$def(self,"$clear",(function(){return this.stack=0}),0),$def(self,"$push",(function(bit){var bit_value;return bit_value=$truthy(bit)?1:0,this.stack=this.stack["$<<"](1)["$|"](bit_value),bit}),1),$def(self,"$pop",(function(){var bit_value=nil;return bit_value=this.stack["$&"](1),this.stack=this.stack["$>>"](1),bit_value["$=="](1)}),0),$def(self,"$lexpop",(function(){return this.stack=this.stack["$>>"](1)["$|"](this.stack["$&"](1)),this.stack["$[]"](0)["$=="](1)}),0),$def(self,"$active?",(function(){return this.stack["$[]"](0)["$=="](1)}),0),$def(self,"$empty?",(function(){return this.stack["$=="](0)}),0),$def(self,"$to_s",(function(){return"["+this.stack.$to_s(2)+" <= "+this.name+"]"}),0),$alias(self,"inspect","to_s")}(Opal.$r($nesting)("Lexer"))}($nesting[0],$nesting)},Opal.modules["parser/lexer/dedenter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$eqeq=Opal.eqeq,$send=Opal.send,$truthy=Opal.truthy,$to_ary=Opal.to_ary,$slice=Opal.slice,$rb_le=Opal.rb_le,$eqeqeq=Opal.eqeqeq,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$rb_divide=Opal.rb_divide;return Opal.add_stubs("encoding,split,force_encoding,==,length,map!,each,each_char,<=,===,+,-,>,*,/,slice!,replace,join,end_with?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Dedenter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.at_line_begin=nil,$const_set($nesting[0],"TAB_WIDTH",8),$def(self,"$initialize",(function(dedent_level){return this.dedent_level=dedent_level,this.at_line_begin=!0,this.indent_level=0}),1),$def(self,"$dedent",(function(string){var $a,original_encoding,self=this,lines=nil,lines_to_dedent=nil;return original_encoding=string.$encoding(),lines=string.$force_encoding($$$($$("Encoding"),"BINARY")).$split("\\\n"),$eqeq(lines.$length(),1)?lines=[string.$force_encoding(original_encoding)]:$send(lines,"map!",[],(function(s){return null==s&&(s=nil),s.$force_encoding(original_encoding)}),1),$truthy(self.at_line_begin)?lines_to_dedent=lines:(null==($a=$to_ary(lines))[0]?nil:$a[0],lines_to_dedent=$slice.call($a,1)),function(){var $brk=Opal.new_brk();try{$send(lines_to_dedent,"each",[],(function $$2(line){var self=null==$$2.$$s?this:$$2.$$s,left_to_remove=nil,remove=nil;return null==self.dedent_level&&(self.dedent_level=nil),null==line&&(line=nil),left_to_remove=self.dedent_level,remove=0,function(){var $brk=Opal.new_brk();try{$send(line,"each_char",[],(function $$3(char$){var $ret_or_1,self=null==$$3.$$s?this:$$3.$$s;return null==self.dedent_level&&(self.dedent_level=nil),null==char$&&(char$=nil),$truthy($rb_le(left_to_remove,0))&&Opal.brk(nil,$brk),$eqeqeq(" ",$ret_or_1=char$)?(remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,1)):$eqeqeq("\t",$ret_or_1)?($truthy($rb_gt($rb_times($$("TAB_WIDTH"),$rb_plus($rb_divide(remove,$$("TAB_WIDTH")),1)),self.dedent_level))&&Opal.brk(nil,$brk),remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,$$("TAB_WIDTH"))):void Opal.brk(nil,$brk)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),line["$slice!"](0,remove)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),string.$replace(lines.$join()),self.at_line_begin=string["$end_with?"]("\n")}),1),$def(self,"$interrupt",(function(){return this.at_line_begin=!1}),0)}(Opal.$r($nesting)("Lexer"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/builders/default"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$hash2=Opal.hash2,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$not=Opal.not,$send=Opal.send,$neqeq=Opal.neqeq,$to_ary=Opal.to_ary,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$range=Opal.range,$slice=Opal.slice,$rb_gt=Opal.rb_gt,$rb_le=Opal.rb_le,$rb_lt=Opal.rb_lt;return Opal.add_stubs("attr_accessor,n0,token_map,numeric,n,value,new,loc,private,===,+@,-@,updated,join,expression,string_value,delimited_string_map,unquoted_map,collapse_string_parts?,nil?,first,children,string_map,prefix_string_map,to_sym,collection_map,empty?,==,version,diagnostic,!,type,dedent,map,interrupt,compact,uniq,sort,each_char,to_proc,static_regexp,message,<<,regexp_map,unary_op_map,binary_op_map,!=,%,size,last,each_slice,pair_keyword_map,pair_quoted_map,symbol_compose,adjust,=~,pair_keyword,accessible,upto,-,length,+,[],>=,range_map,variable_map,name,source_buffer,dup,line,emit_encoding,class,any?,end_with?,to_s,try_declare_numparam,declared?,static_env,var_send_map,top,current_arg_stack,parser,constant_map,in_def,context,check_assignment_to_numparam,check_reserved_for_numparam,declare,with_expression,with_operator,join_exprs,module_definition_map,definition_map,endless_definition_map,validate_definee,keyword_map,check_duplicate_args,validate_no_forward_arg_after_restarg,emit_forward_arg,forward_arg,arg_prefix_map,kwarg_map,emit_procarg0,emit_arg_inside_procarg0,location,resize,end,call_type_for_dot,emit_kwargs,rewrite_hash_args_to_kwargs,send_map,emit_lambda,expr_map,keyword,include?,block_map,array,emit_index,index_map,send_index_map,send_binary_op_map,static_regexp_node,each,names,send_unary_op_map,check_condition,condition_map,keyword_mod_map,ternary_map,for_map,>,count,rescue_body_map,eh_keyword_map,push,none?,one?,begin,guard_map,check_lvar_name,check_duplicate_pattern_variable,match_hash_var_from_str,match_var,check_duplicate_pattern_key,static_string,pair_quoted,match_hash_var,<=,check_duplicate_arg,is_a?,[]=,arg_name_collides?,<,in_dynamic_block?,has_numparams?,max_numparam_stack,start_with?,pattern_variables,pattern_hash_keys,with,begin_pos,end_pos,encode,valid_encoding?,process,diagnostics,send,kwargs?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Default"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.parser=$proto.emit_file_line_as_literals=nil,function(self,$parent_nesting){self.$attr_accessor("emit_lambda")}(Opal.get_singleton_class(self)),self.emit_lambda=!1,function(self,$parent_nesting){self.$attr_accessor("emit_procarg0")}(Opal.get_singleton_class(self)),self.emit_procarg0=!1,function(self,$parent_nesting){self.$attr_accessor("emit_encoding")}(Opal.get_singleton_class(self)),self.emit_encoding=!1,function(self,$parent_nesting){self.$attr_accessor("emit_index")}(Opal.get_singleton_class(self)),self.emit_index=!1,function(self,$parent_nesting){self.$attr_accessor("emit_arg_inside_procarg0")}(Opal.get_singleton_class(self)),self.emit_arg_inside_procarg0=!1,function(self,$parent_nesting){self.$attr_accessor("emit_forward_arg")}(Opal.get_singleton_class(self)),self.emit_forward_arg=!1,function(self,$parent_nesting){self.$attr_accessor("emit_kwargs")}(Opal.get_singleton_class(self)),self.emit_kwargs=!1,function(self,$parent_nesting){self.$attr_accessor("emit_match_pattern")}(Opal.get_singleton_class(self)),self.emit_match_pattern=!1,function(self,$parent_nesting){$def(self,"$modernize",(function(){return this.emit_lambda=!0,this.emit_procarg0=!0,this.emit_encoding=!0,this.emit_index=!0,this.emit_arg_inside_procarg0=!0,this.emit_forward_arg=!0,this.emit_kwargs=!0,this.emit_match_pattern=!0}),0)}(Opal.get_singleton_class(self)),self.$attr_accessor("parser"),self.$attr_accessor("emit_file_line_as_literals"),$def(self,"$initialize",(function(){return this.emit_file_line_as_literals=!0}),0),$def(self,"$nil",(function(nil_t){return this.$n0("nil",this.$token_map(nil_t))}),1),$def(self,"$true",(function(true_t){return this.$n0("true",this.$token_map(true_t))}),1),$def(self,"$false",(function(false_t){return this.$n0("false",this.$token_map(false_t))}),1),$def(self,"$integer",(function(integer_t){return this.$numeric("int",integer_t)}),1),$def(self,"$float",(function(float_t){return this.$numeric("float",float_t)}),1),$def(self,"$rational",(function(rational_t){return this.$numeric("rational",rational_t)}),1),$def(self,"$complex",(function(complex_t){return this.$numeric("complex",complex_t)}),1),$def(self,"$numeric",(function(kind,token){return this.$n(kind,[this.$value(token)],$$$($$$($$("Source"),"Map"),"Operator").$new(nil,this.$loc(token)))}),2),self.$private("numeric"),$def(self,"$unary_num",(function(unary_t,numeric){var $a,$ret_or_1,value=nil,operator_loc=nil;return value=null==($a=[].concat($to_a(numeric)))[0]?nil:$a[0],operator_loc=this.$loc(unary_t),$eqeqeq("+",$ret_or_1=this.$value(unary_t))?value=value["$+@"]():$eqeqeq("-",$ret_or_1)&&(value=value["$-@"]()),numeric.$updated(nil,[value],$hash2(["location"],{location:$$$($$$($$("Source"),"Map"),"Operator").$new(operator_loc,operator_loc.$join(numeric.$loc().$expression()))}))}),2),$def(self,"$__LINE__",(function(__LINE__t){return this.$n0("__LINE__",this.$token_map(__LINE__t))}),1),$def(self,"$string",(function(string_t){return this.$n("str",[this.$string_value(string_t)],this.$delimited_string_map(string_t))}),1),$def(self,"$string_internal",(function(string_t){return this.$n("str",[this.$string_value(string_t)],this.$unquoted_map(string_t))}),1),$def(self,"$string_compose",(function(begin_t,parts,end_t){return $truthy(this["$collapse_string_parts?"](parts))?$truthy(begin_t["$nil?"]())&&$truthy(end_t["$nil?"]())?parts.$first():this.$n("str",parts.$first().$children(),this.$string_map(begin_t,parts,end_t)):this.$n("dstr",[].concat($to_a(parts)),this.$string_map(begin_t,parts,end_t))}),3),$def(self,"$character",(function(char_t){return this.$n("str",[this.$string_value(char_t)],this.$prefix_string_map(char_t))}),1),$def(self,"$__FILE__",(function(__FILE__t){return this.$n0("__FILE__",this.$token_map(__FILE__t))}),1),$def(self,"$symbol",(function(symbol_t){return this.$n("sym",[this.$string_value(symbol_t).$to_sym()],this.$prefix_string_map(symbol_t))}),1),$def(self,"$symbol_internal",(function(symbol_t){return this.$n("sym",[this.$string_value(symbol_t).$to_sym()],this.$unquoted_map(symbol_t))}),1),$def(self,"$symbol_compose",(function(begin_t,parts,end_t){var str=nil;return $truthy(this["$collapse_string_parts?"](parts))?(str=parts.$first(),this.$n("sym",[str.$children().$first().$to_sym()],this.$collection_map(begin_t,str.$loc().$expression(),end_t))):$eqeq(this.parser.$version(),18)&&$truthy(parts["$empty?"]())?this.$diagnostic("error","empty_symbol",nil,this.$loc(begin_t).$join(this.$loc(end_t))):this.$n("dsym",[].concat($to_a(parts)),this.$collection_map(begin_t,parts,end_t))}),3),$def(self,"$xstring_compose",(function(begin_t,parts,end_t){return this.$n("xstr",[].concat($to_a(parts)),this.$string_map(begin_t,parts,end_t))}),3),$def(self,"$dedent_string",(function(node,dedent_level){var dedenter=nil,$ret_or_1=nil,str=nil,children=nil;return $not(dedent_level["$nil?"]())&&(dedenter=$$$($$("Lexer"),"Dedenter").$new(dedent_level),$eqeqeq("str",$ret_or_1=node.$type())?(str=node.$children().$first(),dedenter.$dedent(str)):($eqeqeq("dstr",$ret_or_1)||$eqeqeq("xstr",$ret_or_1))&&(children=$send(node.$children(),"map",[],(function(str_node){if(null==str_node&&(str_node=nil),$eqeq(str_node.$type(),"str")){if(str=str_node.$children().$first(),dedenter.$dedent(str),$truthy(str["$empty?"]()))return nil}else dedenter.$interrupt();return str_node}),1),node=node.$updated(nil,children.$compact()))),node}),2),$def(self,"$regexp_options",(function(regopt_t){var options;return options=$send(this.$value(regopt_t).$each_char().$sort().$uniq(),"map",[],"to_sym".$to_proc()),this.$n("regopt",options,this.$token_map(regopt_t))}),1),$def(self,"$regexp_compose",(function(begin_t,parts,end_t,options){var e=nil;try{this.$static_regexp(parts,options)}catch($err){if(!Opal.rescue($err,[$$("RegexpError")]))throw $err;e=$err;try{this.$diagnostic("error","invalid_regexp",$hash2(["message"],{message:e.$message()}),this.$loc(begin_t).$join(this.$loc(end_t)))}finally{Opal.pop_exception()}}return this.$n("regexp",parts["$<<"](options),this.$regexp_map(begin_t,end_t,options))}),4),$def(self,"$array",(function(begin_t,elements,end_t){return this.$n("array",elements,this.$collection_map(begin_t,elements,end_t))}),3),$def(self,"$splat",(function(star_t,arg){return null==arg&&(arg=nil),$truthy(arg["$nil?"]())?this.$n0("splat",this.$unary_op_map(star_t)):this.$n("splat",[arg],this.$unary_op_map(star_t,arg))}),-2),$def(self,"$word",(function(parts){return $truthy(this["$collapse_string_parts?"](parts))?parts.$first():this.$n("dstr",[].concat($to_a(parts)),this.$collection_map(nil,parts,nil))}),1),$def(self,"$words_compose",(function(begin_t,parts,end_t){return this.$n("array",[].concat($to_a(parts)),this.$collection_map(begin_t,parts,end_t))}),3),$def(self,"$symbols_compose",(function(begin_t,parts,end_t){return parts=$send(parts,"map",[],(function(part){var $a,$ret_or_1,value=nil;return null==part&&(part=nil),$eqeqeq("str",$ret_or_1=part.$type())?(value=null==($a=[].concat($to_a(part)))[0]?nil:$a[0],part.$updated("sym",[value.$to_sym()])):$eqeqeq("dstr",$ret_or_1)?part.$updated("dsym"):part}),1),this.$n("array",[].concat($to_a(parts)),this.$collection_map(begin_t,parts,end_t))}),3),$def(self,"$pair",(function(key,assoc_t,value){return this.$n("pair",[key,value],this.$binary_op_map(key,assoc_t,value))}),3),$def(self,"$pair_list_18",(function(list){return $neqeq(list.$size()["$%"](2),0)?this.$diagnostic("error","odd_hash",nil,list.$last().$loc().$expression()):$send(list.$each_slice(2),"map",[],(function $$6(key,value){var self=null==$$6.$$s?this:$$6.$$s;return null==key&&(key=nil),null==value&&(value=nil),self.$n("pair",[key,value],self.$binary_op_map(key,nil,value))}),{$$arity:2,$$s:this})}),1),$def(self,"$pair_keyword",(function(key_t,value){var $a,$b,key_map,pair_map,key;return $b=this.$pair_keyword_map(key_t,value),key_map=null==($a=$to_ary($b))[0]?nil:$a[0],pair_map=null==$a[1]?nil:$a[1],key=this.$n("sym",[this.$value(key_t).$to_sym()],key_map),this.$n("pair",[key,value],pair_map)}),2),$def(self,"$pair_quoted",(function(begin_t,parts,end_t,value){var $a,$b,pair_map,key;return $b=this.$pair_quoted_map(begin_t,end_t,value),end_t=null==($a=$to_ary($b))[0]?nil:$a[0],pair_map=null==$a[1]?nil:$a[1],key=this.$symbol_compose(begin_t,parts,end_t),this.$n("pair",[key,value],pair_map)}),4),$def(self,"$pair_label",(function(key_t){var value_l,value,label=nil;return value_l=this.$loc(key_t).$adjust($hash2(["end_pos"],{end_pos:-1})),label=this.$value(key_t),value=$truthy(label["$=~"](/^[[:lower:]]/))?this.$n("ident",[label.$to_sym()],$$$($$$($$("Source"),"Map"),"Variable").$new(value_l)):this.$n("const",[nil,label.$to_sym()],$$$($$$($$("Source"),"Map"),"Constant").$new(nil,value_l,value_l)),this.$pair_keyword(key_t,this.$accessible(value))}),1),$def(self,"$kwsplat",(function(dstar_t,arg){return this.$n("kwsplat",[arg],this.$unary_op_map(dstar_t,arg))}),2),$def(self,"$associate",(function(begin_t,pairs,end_t){return $send(0,"upto",[$rb_minus(pairs.$length(),1)],(function $$7(i){var self=null==$$7.$$s?this:$$7.$$s;return null==i&&(i=nil),$send($rb_plus(i,1),"upto",[$rb_minus(pairs.$length(),1)],(function $$8(j){var $a,$ret_or_1,self=null==$$8.$$s?this:$$8.$$s,key1=nil,key2=nil,do_warn=nil;return null==self.parser&&(self.parser=nil),null==j&&(j=nil),key1=null==($a=[].concat($to_a(pairs["$[]"](i))))[0]?nil:$a[0],key2=null==($a=[].concat($to_a(pairs["$[]"](j))))[0]?nil:$a[0],do_warn=!1,$eqeqeq("sym",$ret_or_1=key1.$type())||$eqeqeq("str",$ret_or_1)||$eqeqeq("int",$ret_or_1)||$eqeqeq("float",$ret_or_1)?$eqeq(key1,key2)&&(do_warn=!0):($eqeqeq("rational",$ret_or_1)||$eqeqeq("complex",$ret_or_1)||$eqeqeq("regexp",$ret_or_1))&&$truthy($rb_ge(self.parser.$version(),31))&&$eqeq(key1,key2)&&(do_warn=!0),$truthy(do_warn)?self.$diagnostic("warning","duplicate_hash_key",nil,key2.$loc().$expression()):nil}),{$$arity:1,$$s:self})}),{$$arity:1,$$s:this}),this.$n("hash",[].concat($to_a(pairs)),this.$collection_map(begin_t,pairs,end_t))}),3),$def(self,"$range_inclusive",(function(lhs,dot2_t,rhs){return this.$n("irange",[lhs,rhs],this.$range_map(lhs,dot2_t,rhs))}),3),$def(self,"$range_exclusive",(function(lhs,dot3_t,rhs){return this.$n("erange",[lhs,rhs],this.$range_map(lhs,dot3_t,rhs))}),3),$def(self,"$self",(function(token){return this.$n0("self",this.$token_map(token))}),1),$def(self,"$ident",(function(token){return this.$n("ident",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$ivar",(function(token){return this.$n("ivar",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$gvar",(function(token){return this.$n("gvar",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$cvar",(function(token){return this.$n("cvar",[this.$value(token).$to_sym()],this.$variable_map(token))}),1),$def(self,"$back_ref",(function(token){return this.$n("back_ref",[this.$value(token).$to_sym()],this.$token_map(token))}),1),$def(self,"$nth_ref",(function(token){return this.$n("nth_ref",[this.$value(token)],this.$token_map(token))}),1),$def(self,"$accessible",(function(node){var $a,$ret_or_1,name=nil;return $eqeqeq("__FILE__",$ret_or_1=node.$type())?$truthy(this.emit_file_line_as_literals)?this.$n("str",[node.$loc().$expression().$source_buffer().$name()],node.$loc().$dup()):node:$eqeqeq("__LINE__",$ret_or_1)?$truthy(this.emit_file_line_as_literals)?this.$n("int",[node.$loc().$expression().$line()],node.$loc().$dup()):node:$eqeqeq("__ENCODING__",$ret_or_1)?$not(this.$class().$emit_encoding())?this.$n("const",[this.$n("const",[nil,"Encoding"],nil),"UTF_8"],node.$loc().$dup()):node:$eqeqeq("ident",$ret_or_1)?($a=[].concat($to_a(node)),name=null==$a[0]?nil:$a[0],$truthy($send(["?","!"],"any?",[],(function(c){return null==c&&(c=nil),name.$to_s()["$end_with?"](c)}),1))&&this.$diagnostic("error","invalid_id_to_get",$hash2(["identifier"],{identifier:name.$to_s()}),node.$loc().$expression()),$truthy($rb_ge(this.parser.$version(),27))&&$truthy(this.parser.$try_declare_numparam(node))?node.$updated("lvar"):$truthy(this.parser.$static_env()["$declared?"](name))?($eqeq(name.$to_s(),this.$parser().$current_arg_stack().$top())&&this.$diagnostic("error","circular_argument_reference",$hash2(["var_name"],{var_name:name.$to_s()}),node.$loc().$expression()),node.$updated("lvar")):this.$n("send",[nil,name],this.$var_send_map(node))):node}),1),$def(self,"$const",(function(name_t){return this.$n("const",[nil,this.$value(name_t).$to_sym()],this.$constant_map(nil,nil,name_t))}),1),$def(self,"$const_global",(function(t_colon3,name_t){var cbase;return cbase=this.$n0("cbase",this.$token_map(t_colon3)),this.$n("const",[cbase,this.$value(name_t).$to_sym()],this.$constant_map(cbase,t_colon3,name_t))}),2),$def(self,"$const_fetch",(function(scope,t_colon2,name_t){return this.$n("const",[scope,this.$value(name_t).$to_sym()],this.$constant_map(scope,t_colon2,name_t))}),3),$def(self,"$__ENCODING__",(function(__ENCODING__t){return this.$n0("__ENCODING__",this.$token_map(__ENCODING__t))}),1),$def(self,"$assignable",(function(node){var $a,$ret_or_1,name=nil,var_name=nil,name_loc=nil;return $eqeqeq("cvar",$ret_or_1=node.$type())?node.$updated("cvasgn"):$eqeqeq("ivar",$ret_or_1)?node.$updated("ivasgn"):$eqeqeq("gvar",$ret_or_1)?node.$updated("gvasgn"):$eqeqeq("const",$ret_or_1)?($truthy(this.parser.$context().$in_def())&&this.$diagnostic("error","dynamic_const",nil,node.$loc().$expression()),node.$updated("casgn")):$eqeqeq("ident",$ret_or_1)?(name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],var_name=node.$children()["$[]"](0).$to_s(),name_loc=node.$loc().$expression(),this.$check_assignment_to_numparam(var_name,name_loc),this.$check_reserved_for_numparam(var_name,name_loc),this.parser.$static_env().$declare(name),node.$updated("lvasgn")):$eqeqeq("match_var",$ret_or_1)?(name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],var_name=node.$children()["$[]"](0).$to_s(),name_loc=node.$loc().$expression(),this.$check_assignment_to_numparam(var_name,name_loc),this.$check_reserved_for_numparam(var_name,name_loc),node):$eqeqeq("nil",$ret_or_1)||$eqeqeq("self",$ret_or_1)||$eqeqeq("true",$ret_or_1)||$eqeqeq("false",$ret_or_1)||$eqeqeq("__FILE__",$ret_or_1)||$eqeqeq("__LINE__",$ret_or_1)||$eqeqeq("__ENCODING__",$ret_or_1)?this.$diagnostic("error","invalid_assignment",nil,node.$loc().$expression()):$eqeqeq("back_ref",$ret_or_1)||$eqeqeq("nth_ref",$ret_or_1)?this.$diagnostic("error","backref_assignment",nil,node.$loc().$expression()):nil}),1),$def(self,"$const_op_assignable",(function(node){return node.$updated("casgn")}),1),$def(self,"$assign",(function(lhs,eql_t,rhs){return lhs["$<<"](rhs).$updated(nil,nil,$hash2(["location"],{location:lhs.$loc().$with_operator(this.$loc(eql_t)).$with_expression(this.$join_exprs(lhs,rhs))}))}),3),$def(self,"$op_assign",(function(lhs,op_t,rhs){var $ret_or_1,operator=nil,source_map=nil,$ret_or_2=nil;return $eqeqeq("gvasgn",$ret_or_1=lhs.$type())||$eqeqeq("ivasgn",$ret_or_1)||$eqeqeq("lvasgn",$ret_or_1)||$eqeqeq("cvasgn",$ret_or_1)||$eqeqeq("casgn",$ret_or_1)||$eqeqeq("send",$ret_or_1)||$eqeqeq("csend",$ret_or_1)||$eqeqeq("index",$ret_or_1)?(operator=this.$value(op_t)["$[]"]($range(0,-1,!1)).$to_sym(),source_map=lhs.$loc().$with_operator(this.$loc(op_t)).$with_expression(this.$join_exprs(lhs,rhs)),$eqeq(lhs.$type(),"index")&&(lhs=lhs.$updated("indexasgn")),$eqeqeq("&&",$ret_or_2=operator)?this.$n("and_asgn",[lhs,rhs],source_map):$eqeqeq("||",$ret_or_2)?this.$n("or_asgn",[lhs,rhs],source_map):this.$n("op_asgn",[lhs,operator,rhs],source_map)):$eqeqeq("back_ref",$ret_or_1)||$eqeqeq("nth_ref",$ret_or_1)?this.$diagnostic("error","backref_assignment",nil,lhs.$loc().$expression()):nil}),3),$def(self,"$multi_lhs",(function(begin_t,items,end_t){return this.$n("mlhs",[].concat($to_a(items)),this.$collection_map(begin_t,items,end_t))}),3),$def(self,"$multi_assign",(function(lhs,eql_t,rhs){return this.$n("masgn",[lhs,rhs],this.$binary_op_map(lhs,eql_t,rhs))}),3),$def(self,"$def_class",(function(class_t,name,lt_t,superclass,body,end_t){return this.$n("class",[name,superclass,body],this.$module_definition_map(class_t,name,lt_t,end_t))}),6),$def(self,"$def_sclass",(function(class_t,lshft_t,expr,body,end_t){return this.$n("sclass",[expr,body],this.$module_definition_map(class_t,nil,lshft_t,end_t))}),5),$def(self,"$def_module",(function(module_t,name,body,end_t){return this.$n("module",[name,body],this.$module_definition_map(module_t,name,nil,end_t))}),4),$def(self,"$def_method",(function(def_t,name_t,args,body,end_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("def",[this.$value(name_t).$to_sym(),args,body],this.$definition_map(def_t,nil,name_t,end_t))}),5),$def(self,"$def_endless_method",(function(def_t,name_t,args,assignment_t,body){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("def",[this.$value(name_t).$to_sym(),args,body],this.$endless_definition_map(def_t,nil,name_t,assignment_t,body))}),5),$def(self,"$def_singleton",(function(def_t,definee,dot_t,name_t,args,body,end_t){return this.$validate_definee(definee),this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("defs",[definee,this.$value(name_t).$to_sym(),args,body],this.$definition_map(def_t,dot_t,name_t,end_t))}),7),$def(self,"$def_endless_singleton",(function(def_t,definee,dot_t,name_t,args,assignment_t,body){return this.$validate_definee(definee),this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("defs",[definee,this.$value(name_t).$to_sym(),args,body],this.$endless_definition_map(def_t,dot_t,name_t,assignment_t,body))}),7),$def(self,"$undef_method",(function(undef_t,names){return this.$n("undef",[].concat($to_a(names)),this.$keyword_map(undef_t,nil,names,nil))}),2),$def(self,"$alias",(function(alias_t,to,from){return this.$n("alias",[to,from],this.$keyword_map(alias_t,nil,[to,from],nil))}),3),$def(self,"$args",(function(begin_t,args,end_t,check_args){var map;return null==check_args&&(check_args=!0),$truthy(check_args)&&(args=this.$check_duplicate_args(args)),this.$validate_no_forward_arg_after_restarg(args),map=this.$collection_map(begin_t,args,end_t),$not(this.$class().$emit_forward_arg())&&$eqeq(args.$length(),1)&&$eqeq(args["$[]"](0).$type(),"forward_arg")?this.$n("forward_args",[],map):this.$n("args",args,map)}),-4),$def(self,"$numargs",(function(max_numparam){return this.$n("numargs",[max_numparam],nil)}),1),$def(self,"$forward_only_args",(function(begin_t,dots_t,end_t){var arg=nil;return $truthy(this.$class().$emit_forward_arg())?(arg=this.$forward_arg(dots_t),this.$n("args",[arg],this.$collection_map(begin_t,[arg],end_t))):this.$n("forward_args",[],this.$collection_map(begin_t,this.$token_map(dots_t),end_t))}),3),$def(self,"$forward_arg",(function(dots_t){return this.$n("forward_arg",[],this.$token_map(dots_t))}),1),$def(self,"$arg",(function(name_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("arg",[this.$value(name_t).$to_sym()],this.$variable_map(name_t))}),1),$def(self,"$optarg",(function(name_t,eql_t,value){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("optarg",[this.$value(name_t).$to_sym(),value],this.$variable_map(name_t).$with_operator(this.$loc(eql_t)).$with_expression(this.$loc(name_t).$join(value.$loc().$expression())))}),3),$def(self,"$restarg",(function(star_t,name_t){return null==name_t&&(name_t=nil),$truthy(name_t)?(this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("restarg",[this.$value(name_t).$to_sym()],this.$arg_prefix_map(star_t,name_t))):this.$n0("restarg",this.$arg_prefix_map(star_t))}),-2),$def(self,"$kwarg",(function(name_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("kwarg",[this.$value(name_t).$to_sym()],this.$kwarg_map(name_t))}),1),$def(self,"$kwoptarg",(function(name_t,value){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("kwoptarg",[this.$value(name_t).$to_sym(),value],this.$kwarg_map(name_t,value))}),2),$def(self,"$kwrestarg",(function(dstar_t,name_t){return null==name_t&&(name_t=nil),$truthy(name_t)?(this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("kwrestarg",[this.$value(name_t).$to_sym()],this.$arg_prefix_map(dstar_t,name_t))):this.$n0("kwrestarg",this.$arg_prefix_map(dstar_t))}),-2),$def(self,"$kwnilarg",(function(dstar_t,nil_t){return this.$n0("kwnilarg",this.$arg_prefix_map(dstar_t,nil_t))}),2),$def(self,"$shadowarg",(function(name_t){return this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),this.$n("shadowarg",[this.$value(name_t).$to_sym()],this.$variable_map(name_t))}),1),$def(self,"$blockarg",(function(amper_t,name_t){var arg_name;return $not(name_t["$nil?"]())&&this.$check_reserved_for_numparam(this.$value(name_t),this.$loc(name_t)),arg_name=$truthy(name_t)?this.$value(name_t).$to_sym():nil,this.$n("blockarg",[arg_name],this.$arg_prefix_map(amper_t,name_t))}),2),$def(self,"$procarg0",(function(arg){return $truthy(this.$class().$emit_procarg0())?$eqeq(arg.$type(),"arg")&&$truthy(this.$class().$emit_arg_inside_procarg0())?this.$n("procarg0",[arg],$$$($$$($$("Source"),"Map"),"Collection").$new(nil,nil,arg.$location().$expression())):arg.$updated("procarg0"):arg}),1),$def(self,"$arg_expr",(function(expr){return $eqeq(expr.$type(),"lvasgn")?expr.$updated("arg"):this.$n("arg_expr",[expr],expr.$loc().$dup())}),1),$def(self,"$restarg_expr",(function(star_t,expr){return null==expr&&(expr=nil),$truthy(expr["$nil?"]())?this.$n0("restarg",this.$token_map(star_t)):$eqeq(expr.$type(),"lvasgn")?expr.$updated("restarg"):this.$n("restarg_expr",[expr],expr.$loc().$dup())}),-2),$def(self,"$blockarg_expr",(function(amper_t,expr){return $eqeq(expr.$type(),"lvasgn")?expr.$updated("blockarg"):this.$n("blockarg_expr",[expr],expr.$loc().$dup())}),2),$def(self,"$objc_kwarg",(function(kwname_t,assoc_t,name_t){var kwname_l=nil,operator_l=nil;return kwname_l=this.$loc(kwname_t),operator_l=$truthy(assoc_t["$nil?"]())?(kwname_l=kwname_l.$resize($rb_minus(kwname_l.$size(),1))).$end().$resize(1):this.$loc(assoc_t),this.$n("objc_kwarg",[this.$value(kwname_t).$to_sym(),this.$value(name_t).$to_sym()],$$$($$$($$("Source"),"Map"),"ObjcKwarg").$new(kwname_l,operator_l,this.$loc(name_t),kwname_l.$join(this.$loc(name_t))))}),3),$def(self,"$objc_restarg",(function(star_t,name){return null==name&&(name=nil),$truthy(name["$nil?"]())?this.$n0("restarg",this.$arg_prefix_map(star_t)):$eqeq(name.$type(),"arg")?name.$updated("restarg",nil,$hash2(["location"],{location:name.$loc().$with_operator(this.$loc(star_t))})):this.$n("objc_restarg",[name],this.$unary_op_map(star_t,name))}),-2),$def(self,"$call_type_for_dot",(function(dot_t){return $not(dot_t["$nil?"]())&&$eqeq(this.$value(dot_t),"anddot")?"csend":"send"}),1),$def(self,"$forwarded_args",(function(dots_t){return this.$n("forwarded_args",[],this.$token_map(dots_t))}),1),$def(self,"$call_method",(function(receiver,dot_t,selector_t,lparen_t,args,rparen_t){var type;return null==lparen_t&&(lparen_t=nil),null==args&&(args=[]),null==rparen_t&&(rparen_t=nil),type=this.$call_type_for_dot(dot_t),$truthy(this.$class().$emit_kwargs())&&this.$rewrite_hash_args_to_kwargs(args),$truthy(selector_t["$nil?"]())?this.$n(type,[receiver,"call"].concat($to_a(args)),this.$send_map(receiver,dot_t,nil,lparen_t,args,rparen_t)):this.$n(type,[receiver,this.$value(selector_t).$to_sym()].concat($to_a(args)),this.$send_map(receiver,dot_t,selector_t,lparen_t,args,rparen_t))}),-4),$def(self,"$call_lambda",(function(lambda_t){return $truthy(this.$class().$emit_lambda())?this.$n0("lambda",this.$expr_map(this.$loc(lambda_t))):this.$n("send",[nil,"lambda"],this.$send_map(nil,nil,lambda_t))}),1),$def(self,"$block",(function(method_call,begin_t,args,body,end_t){var $a,call_args=nil,last_arg=nil,block_type=nil,actual_send=nil,block=nil;return null==($a=[].concat($to_a(method_call)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],call_args=$slice.call($a,2),$eqeq(method_call.$type(),"yield")&&this.$diagnostic("error","block_given_to_yield",nil,method_call.$loc().$keyword(),[this.$loc(begin_t)]),last_arg=call_args.$last(),$truthy(last_arg)&&($eqeq(last_arg.$type(),"block_pass")||$eqeq(last_arg.$type(),"forwarded_args"))&&this.$diagnostic("error","block_and_blockarg",nil,last_arg.$loc().$expression(),[this.$loc(begin_t)]),$eqeq(args.$type(),"numargs")?(block_type="numblock",args=args.$children()["$[]"](0)):block_type="block",$truthy(["send","csend","index","super","zsuper","lambda"]["$include?"](method_call.$type()))?this.$n(block_type,[method_call,args,body],this.$block_map(method_call.$loc().$expression(),begin_t,end_t)):(actual_send=null==($a=[].concat($to_a(method_call)))[0]?nil:$a[0],block=this.$n(block_type,[actual_send,args,body],this.$block_map(actual_send.$loc().$expression(),begin_t,end_t)),this.$n(method_call.$type(),[block],method_call.$loc().$with_expression(this.$join_exprs(method_call,block))))}),5),$def(self,"$block_pass",(function(amper_t,arg){return this.$n("block_pass",[arg],this.$unary_op_map(amper_t,arg))}),2),$def(self,"$objc_varargs",(function(pair,rest_of_varargs){var $a,value,first_vararg=nil,vararg_array=nil;return value=null==($a=[].concat($to_a(pair)))[0]?nil:$a[0],first_vararg=null==$a[1]?nil:$a[1],vararg_array=this.$array(nil,[first_vararg].concat($to_a(rest_of_varargs)),nil).$updated("objc_varargs"),pair.$updated(nil,[value,vararg_array],$hash2(["location"],{location:pair.$loc().$with_expression(pair.$loc().$expression().$join(vararg_array.$loc().$expression()))}))}),2),$def(self,"$attr_asgn",(function(receiver,dot_t,selector_t){var method_name,type;return method_name=$rb_plus(this.$value(selector_t),"=").$to_sym(),type=this.$call_type_for_dot(dot_t),this.$n(type,[receiver,method_name],this.$send_map(receiver,dot_t,selector_t))}),3),$def(self,"$index",(function(receiver,lbrack_t,indexes,rbrack_t){return $truthy(this.$class().$emit_kwargs())&&this.$rewrite_hash_args_to_kwargs(indexes),$truthy(this.$class().$emit_index())?this.$n("index",[receiver].concat($to_a(indexes)),this.$index_map(receiver,lbrack_t,rbrack_t)):this.$n("send",[receiver,"[]"].concat($to_a(indexes)),this.$send_index_map(receiver,lbrack_t,rbrack_t))}),4),$def(self,"$index_asgn",(function(receiver,lbrack_t,indexes,rbrack_t){return $truthy(this.$class().$emit_index())?this.$n("indexasgn",[receiver].concat($to_a(indexes)),this.$index_map(receiver,lbrack_t,rbrack_t)):this.$n("send",[receiver,"[]="].concat($to_a(indexes)),this.$send_index_map(receiver,lbrack_t,rbrack_t))}),4),$def(self,"$binary_op",(function(receiver,operator_t,arg){var source_map=nil,operator=nil,method_call=nil;return source_map=this.$send_binary_op_map(receiver,operator_t,arg),$eqeq(this.parser.$version(),18)&&(operator=this.$value(operator_t),$eqeq(operator,"!=")?method_call=this.$n("send",[receiver,"==",arg],source_map):$eqeq(operator,"!~")&&(method_call=this.$n("send",[receiver,"=~",arg],source_map)),$truthy(["!=","!~"]["$include?"](operator)))?this.$n("not",[method_call],this.$expr_map(source_map.$expression())):this.$n("send",[receiver,this.$value(operator_t).$to_sym(),arg],source_map)}),3),$def(self,"$match_op",(function(receiver,match_t,arg){var source_map,regexp=nil;return source_map=this.$send_binary_op_map(receiver,match_t,arg),$truthy(regexp=this.$static_regexp_node(receiver))?($send(regexp.$names(),"each",[],(function $$11(name){var self=null==$$11.$$s?this:$$11.$$s;return null==self.parser&&(self.parser=nil),null==name&&(name=nil),self.parser.$static_env().$declare(name)}),{$$arity:1,$$s:this}),this.$n("match_with_lvasgn",[receiver,arg],source_map)):this.$n("send",[receiver,"=~",arg],source_map)}),3),$def(self,"$unary_op",(function(op_t,receiver){var $ret_or_1,method=nil;return method=$eqeqeq("+",$ret_or_1=this.$value(op_t))||$eqeqeq("-",$ret_or_1)?$rb_plus(this.$value(op_t),"@"):this.$value(op_t),this.$n("send",[receiver,method.$to_sym()],this.$send_unary_op_map(op_t,receiver))}),2),$def(self,"$not_op",(function(not_t,begin_t,receiver,end_t){var nil_node=nil;return null==begin_t&&(begin_t=nil),null==receiver&&(receiver=nil),null==end_t&&(end_t=nil),$eqeq(this.parser.$version(),18)?this.$n("not",[this.$check_condition(receiver)],this.$unary_op_map(not_t,receiver)):$truthy(receiver["$nil?"]())?(nil_node=this.$n0("begin",this.$collection_map(begin_t,nil,end_t)),this.$n("send",[nil_node,"!"],this.$send_unary_op_map(not_t,nil_node))):this.$n("send",[this.$check_condition(receiver),"!"],this.$send_map(nil,nil,not_t,begin_t,[receiver],end_t))}),-2),$def(self,"$logical_op",(function(type,lhs,op_t,rhs){return this.$n(type,[lhs,rhs],this.$binary_op_map(lhs,op_t,rhs))}),4),$def(self,"$condition",(function(cond_t,cond,then_t,if_true,else_t,if_false,end_t){return this.$n("if",[this.$check_condition(cond),if_true,if_false],this.$condition_map(cond_t,cond,then_t,if_true,else_t,if_false,end_t))}),7),$def(self,"$condition_mod",(function(if_true,if_false,cond_t,cond){var $ret_or_1;return this.$n("if",[this.$check_condition(cond),if_true,if_false],this.$keyword_mod_map($truthy($ret_or_1=if_true)?$ret_or_1:if_false,cond_t,cond))}),4),$def(self,"$ternary",(function(cond,question_t,if_true,colon_t,if_false){return this.$n("if",[this.$check_condition(cond),if_true,if_false],this.$ternary_map(cond,question_t,if_true,colon_t,if_false))}),5),$def(self,"$when",(function(when_t,patterns,then_t,body){var children;return children=patterns["$<<"](body),this.$n("when",children,this.$keyword_map(when_t,then_t,children,nil))}),4),$def(self,"$case",(function(case_t,expr,when_bodies,else_t,else_body,end_t){return this.$n("case",[expr].concat($to_a(when_bodies["$<<"](else_body))),this.$condition_map(case_t,expr,nil,nil,else_t,else_body,end_t))}),6),$def(self,"$loop",(function(type,keyword_t,cond,do_t,body,end_t){return this.$n(type,[this.$check_condition(cond),body],this.$keyword_map(keyword_t,do_t,nil,end_t))}),6),$def(self,"$loop_mod",(function(type,body,keyword_t,cond){return $eqeq(body.$type(),"kwbegin")&&(type+="_post"),this.$n(type,[this.$check_condition(cond),body],this.$keyword_mod_map(body,keyword_t,cond))}),4),$def(self,"$for",(function(for_t,iterator,in_t,iteratee,do_t,body,end_t){return this.$n("for",[iterator,iteratee,body],this.$for_map(for_t,in_t,do_t,end_t))}),7),$def(self,"$keyword_cmd",(function(type,keyword_t,lparen_t,args,rparen_t){var last_arg=nil;return null==lparen_t&&(lparen_t=nil),null==args&&(args=[]),null==rparen_t&&(rparen_t=nil),$eqeq(type,"yield")&&$truthy($rb_gt(args.$count(),0))&&(last_arg=args.$last(),$eqeq(last_arg.$type(),"block_pass")&&this.$diagnostic("error","block_given_to_yield",nil,this.$loc(keyword_t),[last_arg.$loc().$expression()])),$truthy(["yield","super"]["$include?"](type))&&$truthy(this.$class().$emit_kwargs())&&this.$rewrite_hash_args_to_kwargs(args),this.$n(type,args,this.$keyword_map(keyword_t,lparen_t,args,rparen_t))}),-3),$def(self,"$preexe",(function(preexe_t,lbrace_t,compstmt,rbrace_t){return this.$n("preexe",[compstmt],this.$keyword_map(preexe_t,lbrace_t,[],rbrace_t))}),4),$def(self,"$postexe",(function(postexe_t,lbrace_t,compstmt,rbrace_t){return this.$n("postexe",[compstmt],this.$keyword_map(postexe_t,lbrace_t,[],rbrace_t))}),4),$def(self,"$rescue_body",(function(rescue_t,exc_list,assoc_t,exc_var,then_t,compound_stmt){return this.$n("resbody",[exc_list,exc_var,compound_stmt],this.$rescue_body_map(rescue_t,exc_list,assoc_t,exc_var,then_t,compound_stmt))}),6),$def(self,"$begin_body",(function(compound_stmt,rescue_bodies,else_t,else_,ensure_t,ensure_){var statements=nil;return null==rescue_bodies&&(rescue_bodies=[]),null==else_t&&(else_t=nil),null==else_&&(else_=nil),null==ensure_t&&(ensure_t=nil),null==ensure_&&(ensure_=nil),$truthy(rescue_bodies["$any?"]())?compound_stmt=$truthy(else_t)?this.$n("rescue",[compound_stmt].concat($to_a($rb_plus(rescue_bodies,[else_]))),this.$eh_keyword_map(compound_stmt,nil,rescue_bodies,else_t,else_)):this.$n("rescue",[compound_stmt].concat($to_a($rb_plus(rescue_bodies,[nil]))),this.$eh_keyword_map(compound_stmt,nil,rescue_bodies,nil,nil)):$truthy(else_t)&&(statements=[],$not(compound_stmt["$nil?"]())&&($eqeq(compound_stmt.$type(),"begin")?statements=$rb_plus(statements,compound_stmt.$children()):statements.$push(compound_stmt)),statements.$push(this.$n("begin",[else_],this.$collection_map(else_t,[else_],nil))),compound_stmt=this.$n("begin",statements,this.$collection_map(nil,statements,nil))),$truthy(ensure_t)&&(compound_stmt=this.$n("ensure",[compound_stmt,ensure_],this.$eh_keyword_map(compound_stmt,ensure_t,[ensure_],nil,nil))),compound_stmt}),-2),$def(self,"$compstmt",(function(statements){return $truthy(statements["$none?"]())?nil:$truthy(statements["$one?"]())?statements.$first():this.$n("begin",statements,this.$collection_map(nil,statements,nil))}),1),$def(self,"$begin",(function(begin_t,body,end_t){return $truthy(body["$nil?"]())?this.$n0("begin",this.$collection_map(begin_t,nil,end_t)):$eqeq(body.$type(),"mlhs")||$eqeq(body.$type(),"begin")&&$truthy(body.$loc().$begin()["$nil?"]())&&$truthy(body.$loc().$end()["$nil?"]())?this.$n(body.$type(),body.$children(),this.$collection_map(begin_t,body.$children(),end_t)):this.$n("begin",[body],this.$collection_map(begin_t,[body],end_t))}),3),$def(self,"$begin_keyword",(function(begin_t,body,end_t){return $truthy(body["$nil?"]())?this.$n0("kwbegin",this.$collection_map(begin_t,nil,end_t)):$eqeq(body.$type(),"begin")&&$truthy(body.$loc().$begin()["$nil?"]())&&$truthy(body.$loc().$end()["$nil?"]())?this.$n("kwbegin",body.$children(),this.$collection_map(begin_t,body.$children(),end_t)):this.$n("kwbegin",[body],this.$collection_map(begin_t,[body],end_t))}),3),$def(self,"$case_match",(function(case_t,expr,in_bodies,else_t,else_body,end_t){return $truthy(else_t)&&$not(else_body)&&(else_body=this.$n("empty_else",nil,this.$token_map(else_t))),this.$n("case_match",[expr].concat($to_a(in_bodies["$<<"](else_body))),this.$condition_map(case_t,expr,nil,nil,else_t,else_body,end_t))}),6),$def(self,"$in_match",(function(lhs,in_t,rhs){return this.$n("in_match",[lhs,rhs],this.$binary_op_map(lhs,in_t,rhs))}),3),$def(self,"$match_pattern",(function(lhs,match_t,rhs){return this.$n("match_pattern",[lhs,rhs],this.$binary_op_map(lhs,match_t,rhs))}),3),$def(self,"$match_pattern_p",(function(lhs,match_t,rhs){return this.$n("match_pattern_p",[lhs,rhs],this.$binary_op_map(lhs,match_t,rhs))}),3),$def(self,"$in_pattern",(function(in_t,pattern,guard,then_t,body){var children=nil;return children=[pattern,guard,body],this.$n("in_pattern",children,this.$keyword_map(in_t,then_t,children.$compact(),nil))}),5),$def(self,"$if_guard",(function(if_t,if_body){return this.$n("if_guard",[if_body],this.$guard_map(if_t,if_body))}),2),$def(self,"$unless_guard",(function(unless_t,unless_body){return this.$n("unless_guard",[unless_body],this.$guard_map(unless_t,unless_body))}),2),$def(self,"$match_var",(function(name_t){var name,name_l;return name=this.$value(name_t).$to_sym(),name_l=this.$loc(name_t),this.$check_lvar_name(name,name_l),this.$check_duplicate_pattern_variable(name,name_l),this.parser.$static_env().$declare(name),this.$n("match_var",[name],this.$variable_map(name_t))}),1),$def(self,"$match_hash_var",(function(name_t){var name,name_l,expr_l=nil;return name=this.$value(name_t).$to_sym(),name_l=(expr_l=this.$loc(name_t)).$adjust($hash2(["end_pos"],{end_pos:-1})),this.$check_lvar_name(name,name_l),this.$check_duplicate_pattern_variable(name,name_l),this.parser.$static_env().$declare(name),this.$n("match_var",[name],$$$($$$($$("Source"),"Map"),"Variable").$new(name_l,expr_l))}),1),$def(self,"$match_hash_var_from_str",(function(begin_t,strings,end_t){var $a,$ret_or_1,string=nil,name=nil,name_l=nil,begin_l=nil,end_l=nil,expr_l=nil;return $truthy($rb_gt(strings.$length(),1))&&this.$diagnostic("error","pm_interp_in_var_name",nil,this.$loc(begin_t).$join(this.$loc(end_t))),string=strings["$[]"](0),$eqeqeq("str",$ret_or_1=string.$type())?(name=null==($a=[].concat($to_a(string)))[0]?nil:$a[0],name_l=string.$loc().$expression(),this.$check_lvar_name(name,name_l),this.$check_duplicate_pattern_variable(name,name_l),this.parser.$static_env().$declare(name),$truthy(begin_l=string.$loc().$begin())&&(name_l=name_l.$adjust($hash2(["begin_pos"],{begin_pos:begin_l.$length()}))),$truthy(end_l=string.$loc().$end())&&(name_l=name_l.$adjust($hash2(["end_pos"],{end_pos:end_l.$length()["$-@"]()}))),expr_l=this.$loc(begin_t).$join(string.$loc().$expression()).$join(this.$loc(end_t)),this.$n("match_var",[name.$to_sym()],$$$($$$($$("Source"),"Map"),"Variable").$new(name_l,expr_l))):$eqeqeq("begin",$ret_or_1)?this.$match_hash_var_from_str(begin_t,string.$children(),end_t):this.$diagnostic("error","pm_interp_in_var_name",nil,this.$loc(begin_t).$join(this.$loc(end_t)))}),3),$def(self,"$match_rest",(function(star_t,name_t){var name=nil;return null==name_t&&(name_t=nil),$truthy(name_t["$nil?"]())?this.$n0("match_rest",this.$unary_op_map(star_t)):(name=this.$match_var(name_t),this.$n("match_rest",[name],this.$unary_op_map(star_t,name)))}),-2),$def(self,"$hash_pattern",(function(lbrace_t,kwargs,rbrace_t){var args;return args=this.$check_duplicate_args(kwargs),this.$n("hash_pattern",args,this.$collection_map(lbrace_t,args,rbrace_t))}),3),$def(self,"$array_pattern",(function(lbrack_t,elements,rbrack_t){var node_elements,node_type,trailing_comma=nil;return $truthy(elements["$nil?"]())?this.$n("array_pattern",nil,this.$collection_map(lbrack_t,[],rbrack_t)):(trailing_comma=!1,node_elements=$send(elements,"map",[],(function(element){return null==element&&(element=nil),$eqeq(element.$type(),"match_with_trailing_comma")?(trailing_comma=!0,element.$children().$first()):(trailing_comma=!1,element)}),1),node_type=$truthy(trailing_comma)?"array_pattern_with_tail":"array_pattern",this.$n(node_type,node_elements,this.$collection_map(lbrack_t,elements,rbrack_t)))}),3),$def(self,"$find_pattern",(function(lbrack_t,elements,rbrack_t){return this.$n("find_pattern",elements,this.$collection_map(lbrack_t,elements,rbrack_t))}),3),$def(self,"$match_with_trailing_comma",(function(match,comma_t){return this.$n("match_with_trailing_comma",[match],this.$expr_map(match.$loc().$expression().$join(this.$loc(comma_t))))}),2),$def(self,"$const_pattern",(function(const$,ldelim_t,pattern,rdelim_t){return this.$n("const_pattern",[const$,pattern],$$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(ldelim_t),this.$loc(rdelim_t),const$.$loc().$expression().$join(this.$loc(rdelim_t))))}),4),$def(self,"$pin",(function(pin_t,var$){return this.$n("pin",[var$],this.$send_unary_op_map(pin_t,var$))}),2),$def(self,"$match_alt",(function(left,pipe_t,right){var source_map;return source_map=this.$binary_op_map(left,pipe_t,right),this.$n("match_alt",[left,right],source_map)}),3),$def(self,"$match_as",(function(value,assoc_t,as){var source_map;return source_map=this.$binary_op_map(value,assoc_t,as),this.$n("match_as",[value,as],source_map)}),3),$def(self,"$match_nil_pattern",(function(dstar_t,nil_t){return this.$n0("match_nil_pattern",this.$arg_prefix_map(dstar_t,nil_t))}),2),$def(self,"$match_pair",(function(label_type,label,value){var $a,begin_t=nil,parts=nil,end_t=nil,label_loc=nil,var_name=nil;return $eqeq(label_type,"label")?(this.$check_duplicate_pattern_key(label["$[]"](0),label["$[]"](1)),this.$pair_keyword(label,value)):(begin_t=null==($a=$to_ary(label))[0]?nil:$a[0],parts=null==$a[1]?nil:$a[1],end_t=null==$a[2]?nil:$a[2],label_loc=this.$loc(begin_t).$join(this.$loc(end_t)),$truthy(var_name=this.$static_string(parts))?this.$check_duplicate_pattern_key(var_name,label_loc):this.$diagnostic("error","pm_interp_in_var_name",nil,label_loc),this.$pair_quoted(begin_t,parts,end_t,value))}),3),$def(self,"$match_label",(function(label_type,label){var $a,begin_t=nil,strings=nil,end_t=nil;return $eqeq(label_type,"label")?this.$match_hash_var(label):(begin_t=null==($a=$to_ary(label))[0]?nil:$a[0],strings=null==$a[1]?nil:$a[1],end_t=null==$a[2]?nil:$a[2],this.$match_hash_var_from_str(begin_t,strings,end_t))}),2),self.$private(),$def(self,"$check_condition",(function(cond){var $a,$ret_or_1,lhs=nil,rhs=nil,type=nil,$ret_or_2=nil;return $eqeqeq("masgn",$ret_or_1=cond.$type())?$truthy($rb_le(this.parser.$version(),23))?this.$diagnostic("error","masgn_as_condition",nil,cond.$loc().$expression()):cond:$eqeqeq("begin",$ret_or_1)?$eqeq(cond.$children().$count(),1)?cond.$updated(nil,[this.$check_condition(cond.$children().$last())]):cond:$eqeqeq("and",$ret_or_1)||$eqeqeq("or",$ret_or_1)||$eqeqeq("irange",$ret_or_1)||$eqeqeq("erange",$ret_or_1)?(lhs=null==($a=[].concat($to_a(cond)))[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],type=$eqeqeq("irange",$ret_or_2=cond.$type())?"iflipflop":$eqeqeq("erange",$ret_or_2)?"eflipflop":nil,$truthy(["and","or"]["$include?"](cond.$type()))&&$eqeq(this.parser.$version(),18)?cond:cond.$updated(type,[this.$check_condition(lhs),this.$check_condition(rhs)])):$eqeqeq("regexp",$ret_or_1)?this.$n("match_current_line",[cond],this.$expr_map(cond.$loc().$expression())):cond}),1),$def(self,"$check_duplicate_args",(function(args,map){return null==map&&(map=$hash2([],{})),$send(args,"each",[],(function $$15(this_arg){var $ret_or_1,self=null==$$15.$$s?this:$$15.$$s;return null==this_arg&&(this_arg=nil),$eqeqeq("arg",$ret_or_1=this_arg.$type())||$eqeqeq("optarg",$ret_or_1)||$eqeqeq("restarg",$ret_or_1)||$eqeqeq("blockarg",$ret_or_1)||$eqeqeq("kwarg",$ret_or_1)||$eqeqeq("kwoptarg",$ret_or_1)||$eqeqeq("kwrestarg",$ret_or_1)||$eqeqeq("shadowarg",$ret_or_1)?self.$check_duplicate_arg(this_arg,map):$eqeqeq("procarg0",$ret_or_1)?$truthy(this_arg.$children()["$[]"](0)["$is_a?"]($$("Symbol")))?self.$check_duplicate_arg(this_arg,map):self.$check_duplicate_args(this_arg.$children(),map):$eqeqeq("mlhs",$ret_or_1)?self.$check_duplicate_args(this_arg.$children(),map):nil}),{$$arity:1,$$s:this})}),-2),$def(self,"$check_duplicate_arg",(function(this_arg,map){var $a,this_name,that_name,that_arg=nil,$writer=nil;return null==map&&(map=$hash2([],{})),this_name=null==($a=[].concat($to_a(this_arg)))[0]?nil:$a[0],that_arg=map["$[]"](this_name),that_name=null==($a=[].concat($to_a(that_arg)))[0]?nil:$a[0],$truthy(that_arg["$nil?"]())?($send(map,"[]=",$to_a($writer=[this_name,this_arg])),$writer[$rb_minus($writer.length,1)]):$truthy(this["$arg_name_collides?"](this_name,that_name))?this.$diagnostic("error","duplicate_argument",nil,this_arg.$loc().$name(),[that_arg.$loc().$name()]):nil}),-2),$def(self,"$validate_no_forward_arg_after_restarg",(function(args){var restarg=nil,forward_arg=nil;return restarg=nil,forward_arg=nil,$send(args,"each",[],(function(arg){var $ret_or_1;return null==arg&&(arg=nil),$eqeqeq("restarg",$ret_or_1=arg.$type())?restarg=arg:$eqeqeq("forward_arg",$ret_or_1)?forward_arg=arg:nil}),1),$not(forward_arg["$nil?"]())&&$not(restarg["$nil?"]())?this.$diagnostic("error","forward_arg_after_restarg",nil,forward_arg.$loc().$expression(),[restarg.$loc().$expression()]):nil}),1),$def(self,"$check_assignment_to_numparam",(function(name,loc){var assigning_to_numparam,$ret_or_1,$ret_or_2;return $truthy($rb_lt(this.parser.$version(),27))?nil:(assigning_to_numparam=$truthy($ret_or_1=$truthy($ret_or_2=this.parser.$context()["$in_dynamic_block?"]())?name["$=~"](/^_([1-9])$/):$ret_or_2)?this.parser.$max_numparam_stack()["$has_numparams?"]():$ret_or_1,$truthy(assigning_to_numparam)?this.$diagnostic("error","cant_assign_to_numparam",$hash2(["name"],{name:name}),loc):nil)}),2),$def(self,"$check_reserved_for_numparam",(function(name,loc){return $truthy($rb_lt(this.parser.$version(),30))?nil:$truthy(name["$=~"](/^_([1-9])$/))?this.$diagnostic("error","reserved_for_numparam",$hash2(["name"],{name:name}),loc):nil}),2),$def(self,"$arg_name_collides?",(function(this_name,that_name){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $eqeqeq(18,$ret_or_1=this.parser.$version())?this_name["$=="](that_name):$eqeqeq(19,$ret_or_1)?$truthy($ret_or_2=this_name["$!="]("_"))?this_name["$=="](that_name):$ret_or_2:$truthy($ret_or_2=$truthy($ret_or_3=this_name)?this_name["$[]"](0)["$!="]("_"):$ret_or_3)?this_name["$=="](that_name):$ret_or_2}),2),$def(self,"$check_lvar_name",(function(name,loc){return $truthy(name["$=~"](/^[[[:lower:]]_][[[:alnum:]]_]*$/))?nil:this.$diagnostic("error","lvar_name",$hash2(["name"],{name:name}),loc)}),2),$def(self,"$check_duplicate_pattern_variable",(function(name,loc){return $truthy(name.$to_s()["$start_with?"]("_"))?nil:($truthy(this.parser.$pattern_variables()["$declared?"](name))&&this.$diagnostic("error","duplicate_variable_name",$hash2(["name"],{name:name.$to_s()}),loc),this.parser.$pattern_variables().$declare(name))}),2),$def(self,"$check_duplicate_pattern_key",(function(name,loc){return $truthy(this.parser.$pattern_hash_keys()["$declared?"](name))&&this.$diagnostic("error","duplicate_pattern_key",$hash2(["name"],{name:name.$to_s()}),loc),this.parser.$pattern_hash_keys().$declare(name)}),2),$def(self,"$n",(function(type,children,source_map){return $$$($$("AST"),"Node").$new(type,children,$hash2(["location"],{location:source_map}))}),3),$def(self,"$n0",(function(type,source_map){return this.$n(type,[],source_map)}),2),$def(self,"$join_exprs",(function(left_expr,right_expr){return left_expr.$loc().$expression().$join(right_expr.$loc().$expression())}),2),$def(self,"$token_map",(function(token){return $$$($$("Source"),"Map").$new(this.$loc(token))}),1),$def(self,"$delimited_string_map",(function(string_t){var begin_l,end_l,str_range=nil;return begin_l=(str_range=this.$loc(string_t)).$with($hash2(["end_pos"],{end_pos:$rb_plus(str_range.$begin_pos(),1)})),end_l=str_range.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(str_range.$end_pos(),1)})),$$$($$$($$("Source"),"Map"),"Collection").$new(begin_l,end_l,this.$loc(string_t))}),1),$def(self,"$prefix_string_map",(function(symbol){var begin_l,str_range=nil;return begin_l=(str_range=this.$loc(symbol)).$with($hash2(["end_pos"],{end_pos:$rb_plus(str_range.$begin_pos(),1)})),$$$($$$($$("Source"),"Map"),"Collection").$new(begin_l,nil,this.$loc(symbol))}),1),$def(self,"$unquoted_map",(function(token){return $$$($$$($$("Source"),"Map"),"Collection").$new(nil,nil,this.$loc(token))}),1),$def(self,"$pair_keyword_map",(function(key_t,value_e){var key_l,colon_l,key_range=nil;return key_l=(key_range=this.$loc(key_t)).$adjust($hash2(["end_pos"],{end_pos:-1})),colon_l=key_range.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(key_range.$end_pos(),1)})),[$$$($$$($$("Source"),"Map"),"Collection").$new(nil,nil,key_l),$$$($$$($$("Source"),"Map"),"Operator").$new(colon_l,key_range.$join(value_e.$loc().$expression()))]}),2),$def(self,"$pair_quoted_map",(function(begin_t,end_t,value_e){var quote_l,colon_l,end_l=nil;return quote_l=(end_l=this.$loc(end_t)).$with($hash2(["begin_pos","end_pos"],{begin_pos:$rb_minus(end_l.$end_pos(),2),end_pos:$rb_minus(end_l.$end_pos(),1)})),colon_l=end_l.$with($hash2(["begin_pos"],{begin_pos:$rb_minus(end_l.$end_pos(),1)})),[[this.$value(end_t),quote_l],$$$($$$($$("Source"),"Map"),"Operator").$new(colon_l,this.$loc(begin_t).$join(value_e.$loc().$expression()))]}),3),$def(self,"$expr_map",(function(loc){return $$$($$("Source"),"Map").$new(loc)}),1),$def(self,"$collection_map",(function(begin_t,parts,end_t){var expr_l=nil;return $truthy(begin_t["$nil?"]())||$truthy(end_t["$nil?"]())?$truthy(parts["$any?"]())?expr_l=this.$join_exprs(parts.$first(),parts.$last()):$not(begin_t["$nil?"]())?expr_l=this.$loc(begin_t):$not(end_t["$nil?"]())&&(expr_l=this.$loc(end_t)):expr_l=this.$loc(begin_t).$join(this.$loc(end_t)),$$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(begin_t),this.$loc(end_t),expr_l)}),3),$def(self,"$string_map",(function(begin_t,parts,end_t){var expr_l=nil;return $truthy(begin_t)&&$truthy(this.$value(begin_t)["$start_with?"]("<<"))?(expr_l=$truthy(parts["$any?"]())?this.$join_exprs(parts.$first(),parts.$last()):this.$loc(end_t).$begin(),$$$($$$($$("Source"),"Map"),"Heredoc").$new(this.$loc(begin_t),expr_l,this.$loc(end_t))):this.$collection_map(begin_t,parts,end_t)}),3),$def(self,"$regexp_map",(function(begin_t,end_t,options_e){return $$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(begin_t),this.$loc(end_t),this.$loc(begin_t).$join(options_e.$loc().$expression()))}),3),$def(self,"$constant_map",(function(scope,colon2_t,name_t){var expr_l=nil;return expr_l=$truthy(scope["$nil?"]())?this.$loc(name_t):scope.$loc().$expression().$join(this.$loc(name_t)),$$$($$$($$("Source"),"Map"),"Constant").$new(this.$loc(colon2_t),this.$loc(name_t),expr_l)}),3),$def(self,"$variable_map",(function(name_t){return $$$($$$($$("Source"),"Map"),"Variable").$new(this.$loc(name_t))}),1),$def(self,"$binary_op_map",(function(left_e,op_t,right_e){return $$$($$$($$("Source"),"Map"),"Operator").$new(this.$loc(op_t),this.$join_exprs(left_e,right_e))}),3),$def(self,"$unary_op_map",(function(op_t,arg_e){var expr_l=nil;return null==arg_e&&(arg_e=nil),expr_l=$truthy(arg_e["$nil?"]())?this.$loc(op_t):this.$loc(op_t).$join(arg_e.$loc().$expression()),$$$($$$($$("Source"),"Map"),"Operator").$new(this.$loc(op_t),expr_l)}),-2),$def(self,"$range_map",(function(start_e,op_t,end_e){var expr_l=nil;return $truthy(start_e)&&$truthy(end_e)?expr_l=this.$join_exprs(start_e,end_e):$truthy(start_e)?expr_l=start_e.$loc().$expression().$join(this.$loc(op_t)):$truthy(end_e)&&(expr_l=this.$loc(op_t).$join(end_e.$loc().$expression())),$$$($$$($$("Source"),"Map"),"Operator").$new(this.$loc(op_t),expr_l)}),3),$def(self,"$arg_prefix_map",(function(op_t,name_t){var expr_l=nil;return null==name_t&&(name_t=nil),expr_l=$truthy(name_t["$nil?"]())?this.$loc(op_t):this.$loc(op_t).$join(this.$loc(name_t)),$$$($$$($$("Source"),"Map"),"Variable").$new(this.$loc(name_t),expr_l)}),-2),$def(self,"$kwarg_map",(function(name_t,value_e){var name_range,expr_l=nil;return null==value_e&&(value_e=nil),name_range=this.$loc(name_t).$adjust($hash2(["end_pos"],{end_pos:-1})),expr_l=$truthy(value_e)?this.$loc(name_t).$join(value_e.$loc().$expression()):this.$loc(name_t),$$$($$$($$("Source"),"Map"),"Variable").$new(name_range,expr_l)}),-2),$def(self,"$module_definition_map",(function(keyword_t,name_e,operator_t,end_t){var name_l=nil;return $truthy(name_e)&&(name_l=name_e.$loc().$expression()),$$$($$$($$("Source"),"Map"),"Definition").$new(this.$loc(keyword_t),this.$loc(operator_t),name_l,this.$loc(end_t))}),4),$def(self,"$definition_map",(function(keyword_t,operator_t,name_t,end_t){return $$$($$$($$("Source"),"Map"),"MethodDefinition").$new(this.$loc(keyword_t),this.$loc(operator_t),this.$loc(name_t),this.$loc(end_t),nil,nil)}),4),$def(self,"$endless_definition_map",(function(keyword_t,operator_t,name_t,assignment_t,body_e){var body_l;return body_l=body_e.$loc().$expression(),$$$($$$($$("Source"),"Map"),"MethodDefinition").$new(this.$loc(keyword_t),this.$loc(operator_t),this.$loc(name_t),nil,this.$loc(assignment_t),body_l)}),5),$def(self,"$send_map",(function(receiver_e,dot_t,selector_t,begin_t,args,end_t){var begin_l=nil,end_l=nil;return null==begin_t&&(begin_t=nil),null==args&&(args=[]),null==end_t&&(end_t=nil),$truthy(receiver_e)?begin_l=receiver_e.$loc().$expression():$truthy(selector_t)&&(begin_l=this.$loc(selector_t)),$truthy(end_t)?end_l=this.$loc(end_t):$truthy(args["$any?"]())?end_l=args.$last().$loc().$expression():$truthy(selector_t)&&(end_l=this.$loc(selector_t)),$$$($$$($$("Source"),"Map"),"Send").$new(this.$loc(dot_t),this.$loc(selector_t),this.$loc(begin_t),this.$loc(end_t),begin_l.$join(end_l))}),-4),$def(self,"$var_send_map",(function(variable_e){return $$$($$$($$("Source"),"Map"),"Send").$new(nil,variable_e.$loc().$expression(),nil,nil,variable_e.$loc().$expression())}),1),$def(self,"$send_binary_op_map",(function(lhs_e,selector_t,rhs_e){return $$$($$$($$("Source"),"Map"),"Send").$new(nil,this.$loc(selector_t),nil,nil,this.$join_exprs(lhs_e,rhs_e))}),3),$def(self,"$send_unary_op_map",(function(selector_t,arg_e){var expr_l=nil;return expr_l=$truthy(arg_e["$nil?"]())?this.$loc(selector_t):this.$loc(selector_t).$join(arg_e.$loc().$expression()),$$$($$$($$("Source"),"Map"),"Send").$new(nil,this.$loc(selector_t),nil,nil,expr_l)}),2),$def(self,"$index_map",(function(receiver_e,lbrack_t,rbrack_t){return $$$($$$($$("Source"),"Map"),"Index").$new(this.$loc(lbrack_t),this.$loc(rbrack_t),receiver_e.$loc().$expression().$join(this.$loc(rbrack_t)))}),3),$def(self,"$send_index_map",(function(receiver_e,lbrack_t,rbrack_t){return $$$($$$($$("Source"),"Map"),"Send").$new(nil,this.$loc(lbrack_t).$join(this.$loc(rbrack_t)),nil,nil,receiver_e.$loc().$expression().$join(this.$loc(rbrack_t)))}),3),$def(self,"$block_map",(function(receiver_l,begin_t,end_t){return $$$($$$($$("Source"),"Map"),"Collection").$new(this.$loc(begin_t),this.$loc(end_t),receiver_l.$join(this.$loc(end_t)))}),3),$def(self,"$keyword_map",(function(keyword_t,begin_t,args,end_t){var $ret_or_1,end_l=nil;return args=$truthy($ret_or_1=args)?$ret_or_1:[],end_l=$truthy(end_t)?this.$loc(end_t):$truthy(args["$any?"]())&&$not(args.$last()["$nil?"]())?args.$last().$loc().$expression():$truthy(args["$any?"]())&&$truthy($rb_gt(args.$count(),1))?args["$[]"](-2).$loc().$expression():this.$loc(keyword_t),$$$($$$($$("Source"),"Map"),"Keyword").$new(this.$loc(keyword_t),this.$loc(begin_t),this.$loc(end_t),this.$loc(keyword_t).$join(end_l))}),4),$def(self,"$keyword_mod_map",(function(pre_e,keyword_t,post_e){return $$$($$$($$("Source"),"Map"),"Keyword").$new(this.$loc(keyword_t),nil,nil,this.$join_exprs(pre_e,post_e))}),3),$def(self,"$condition_map",(function(keyword_t,cond_e,begin_t,body_e,else_t,else_e,end_t){var end_l=nil;return end_l=$truthy(end_t)?this.$loc(end_t):$truthy(else_e)&&$truthy(else_e.$loc().$expression())?else_e.$loc().$expression():$truthy(this.$loc(else_t))?this.$loc(else_t):$truthy(body_e)&&$truthy(body_e.$loc().$expression())?body_e.$loc().$expression():$truthy(this.$loc(begin_t))?this.$loc(begin_t):cond_e.$loc().$expression(),$$$($$$($$("Source"),"Map"),"Condition").$new(this.$loc(keyword_t),this.$loc(begin_t),this.$loc(else_t),this.$loc(end_t),this.$loc(keyword_t).$join(end_l))}),7),$def(self,"$ternary_map",(function(begin_e,question_t,mid_e,colon_t,end_e){return $$$($$$($$("Source"),"Map"),"Ternary").$new(this.$loc(question_t),this.$loc(colon_t),this.$join_exprs(begin_e,end_e))}),5),$def(self,"$for_map",(function(keyword_t,in_t,begin_t,end_t){return $$$($$$($$("Source"),"Map"),"For").$new(this.$loc(keyword_t),this.$loc(in_t),this.$loc(begin_t),this.$loc(end_t),this.$loc(keyword_t).$join(this.$loc(end_t)))}),4),$def(self,"$rescue_body_map",(function(keyword_t,exc_list_e,assoc_t,exc_var_e,then_t,compstmt_e){var end_l=nil;return $truthy(compstmt_e)&&(end_l=compstmt_e.$loc().$expression()),$truthy(end_l["$nil?"]())&&$truthy(then_t)&&(end_l=this.$loc(then_t)),$truthy(end_l["$nil?"]())&&$truthy(exc_var_e)&&(end_l=exc_var_e.$loc().$expression()),$truthy(end_l["$nil?"]())&&$truthy(exc_list_e)&&(end_l=exc_list_e.$loc().$expression()),$truthy(end_l["$nil?"]())&&(end_l=this.$loc(keyword_t)),$$$($$$($$("Source"),"Map"),"RescueBody").$new(this.$loc(keyword_t),this.$loc(assoc_t),this.$loc(then_t),this.$loc(keyword_t).$join(end_l))}),6),$def(self,"$eh_keyword_map",(function(compstmt_e,keyword_t,body_es,else_t,else_e){var begin_l=nil,end_l=nil;return begin_l=$truthy(compstmt_e["$nil?"]())?$truthy(keyword_t["$nil?"]())?body_es.$first().$loc().$expression():this.$loc(keyword_t):compstmt_e.$loc().$expression(),end_l=$truthy(else_t)?$truthy(else_e["$nil?"]())?this.$loc(else_t):else_e.$loc().$expression():$not(body_es.$last()["$nil?"]())?body_es.$last().$loc().$expression():this.$loc(keyword_t),$$$($$$($$("Source"),"Map"),"Condition").$new(this.$loc(keyword_t),nil,this.$loc(else_t),nil,begin_l.$join(end_l))}),5),$def(self,"$guard_map",(function(keyword_t,guard_body_e){var guard_body_l,keyword_l=nil;return keyword_l=this.$loc(keyword_t),guard_body_l=guard_body_e.$loc().$expression(),$$$($$$($$("Source"),"Map"),"Keyword").$new(keyword_l,nil,nil,keyword_l.$join(guard_body_l))}),2),$def(self,"$static_string",(function(nodes){try{return $send(nodes,"map",[],(function $$18(node){var $ret_or_1,self=null==$$18.$$s?this:$$18.$$s,string=nil;if(null==node&&(node=nil),$eqeqeq("str",$ret_or_1=node.$type()))return node.$children()["$[]"](0);if($eqeqeq("begin",$ret_or_1)){if($truthy(string=self.$static_string(node.$children())))return string;Opal.ret(nil)}else Opal.ret(nil)}),{$$arity:1,$$s:this}).$join()}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),1),$def(self,"$static_regexp",(function(parts,options){var source=nil;return source=this.$static_string(parts),$truthy(source["$nil?"]())?nil:(source=$truthy(options.$children()["$include?"]("u"))?source.$encode($$$($$("Encoding"),"UTF_8")):$truthy(options.$children()["$include?"]("e"))?source.$encode($$$($$("Encoding"),"EUC_JP")):$truthy(options.$children()["$include?"]("s"))?source.$encode($$$($$("Encoding"),"WINDOWS_31J")):$truthy(options.$children()["$include?"]("n"))?source.$encode($$$($$("Encoding"),"BINARY")):source,$$("Regexp").$new(source,$truthy(options.$children()["$include?"]("x"))?$$$($$("Regexp"),"EXTENDED"):nil))}),2),$def(self,"$static_regexp_node",(function(node){var $a,parts=nil,options=nil;return $eqeq(node.$type(),"regexp")?(parts=($a=[node.$children()["$[]"]($range(0,-2,!1)),node.$children()["$[]"](-1)])[0],options=$a[1],this.$static_regexp(parts,options)):nil}),1),$def(self,"$collapse_string_parts?",(function(parts){var $ret_or_1;return $truthy($ret_or_1=parts["$one?"]())?["str","dstr"]["$include?"](parts.$first().$type()):$ret_or_1}),1),$def(self,"$value",(function(token){return token["$[]"](0)}),1),$def(self,"$string_value",(function(token){return $truthy(token["$[]"](0)["$valid_encoding?"]())||this.$diagnostic("error","invalid_encoding",nil,token["$[]"](1)),token["$[]"](0)}),1),$def(self,"$loc",(function(token){return $truthy(token)&&$truthy(token["$[]"](0))?token["$[]"](1):nil}),1),$def(self,"$diagnostic",(function(type,reason,arguments$,location,highlights){return null==highlights&&(highlights=[]),this.parser.$diagnostics().$process($$("Diagnostic").$new(type,reason,arguments$,location,highlights)),$eqeq(type,"error")?this.parser.$send("yyerror"):nil}),-5),$def(self,"$validate_definee",(function(definee){var $ret_or_1;return!($eqeqeq("int",$ret_or_1=definee.$type())||$eqeqeq("str",$ret_or_1)||$eqeqeq("dstr",$ret_or_1)||$eqeqeq("sym",$ret_or_1)||$eqeqeq("dsym",$ret_or_1)||$eqeqeq("regexp",$ret_or_1)||$eqeqeq("array",$ret_or_1)||$eqeqeq("hash",$ret_or_1))||(this.$diagnostic("error","singleton_literal",nil,definee.$loc().$expression()),!1)}),1),$def(self,"$rewrite_hash_args_to_kwargs",(function(args){var $writer=nil;return $truthy(args["$any?"]())&&$truthy(this["$kwargs?"](args.$last()))?($writer=[$rb_minus(args.$length(),1),args["$[]"]($rb_minus(args.$length(),1)).$updated("kwargs")],$send(args,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):$truthy($rb_gt(args.$length(),1))&&$eqeq(args.$last().$type(),"block_pass")&&$truthy(this["$kwargs?"](args["$[]"]($rb_minus(args.$length(),2))))?($writer=[$rb_minus(args.$length(),2),args["$[]"]($rb_minus(args.$length(),2)).$updated("kwargs")],$send(args,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),1),$def(self,"$kwargs?",(function(node){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=node.$type()["$=="]("hash"))?node.$loc().$begin()["$nil?"]():$ret_or_2)?node.$loc().$end()["$nil?"]():$ret_or_1}),1)}(Opal.$r($nesting)("Builders"),0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/context"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a,$truthy=Opal.truthy;return Opal.add_stubs("reset,attr_accessor,in_block,in_lambda"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Context"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"FLAGS",["in_defined","in_kwarg","in_argdef","in_def","in_class","in_block","in_lambda"]),$def(self,"$initialize",(function(){return this.$reset()}),0),$def(self,"$reset",(function(){return this.in_defined=!1,this.in_kwarg=!1,this.in_argdef=!1,this.in_def=!1,this.in_class=!1,this.in_block=!1,this.in_lambda=!1}),0),$send(self,"attr_accessor",$to_a($$("FLAGS"))),$def(self,"$in_dynamic_block?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$in_block())?$ret_or_1:this.$in_lambda()}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/max_numparam_stack"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus;return Opal.add_stubs("attr_reader,==,size,set,top,>,max,[],last,push,pop,private,[]=,-"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"MaxNumparamStack"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.stack=nil,self.$attr_reader("stack"),$const_set($nesting[0],"ORDINARY_PARAMS",-1),$def(self,"$initialize",(function(){return this.stack=[]}),0),$def(self,"$empty?",(function(){return this.stack.$size()["$=="](0)}),0),$def(self,"$has_ordinary_params!",(function(){return this.$set($$("ORDINARY_PARAMS"))}),0),$def(self,"$has_ordinary_params?",(function(){return this.$top()["$=="]($$("ORDINARY_PARAMS"))}),0),$def(self,"$has_numparams?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$top())?$rb_gt(this.$top(),0):$ret_or_1}),0),$def(self,"$register",(function(numparam){return this.$set([this.$top(),numparam].$max())}),1),$def(self,"$top",(function(){return this.stack.$last()["$[]"]("value")}),0),$def(self,"$push",(function($kwargs){var static$;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");if(!Opal.hasOwnProperty.call($kwargs.$$smap,"static"))throw Opal.ArgumentError.$new("missing keyword: static");return static$=$kwargs.$$smap.static,this.stack.$push($hash2(["value","static"],{value:0,static:static$}))}),1),$def(self,"$pop",(function(){return this.stack.$pop()["$[]"]("value")}),0),self.$private(),$def(self,"$set",(function(value){var $writer;return $writer=["value",value],$send(this.stack.$last(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/current_arg_stack"]=function(Opal){var $base,$parent_nesting,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$rb_minus=Opal.rb_minus,$send=Opal.send,$to_a=Opal.to_a;return Opal.add_stubs("attr_reader,freeze,==,size,<<,-,length,[]=,pop,clear,last"),$base=$nesting[0],$parent_nesting=$nesting,function($base,$super){var self=$klass($base,null,"CurrentArgStack");return self.$$prototype.stack=nil,self.$attr_reader("stack"),$def(self,"$initialize",(function(){return this.stack=[],this.$freeze()}),0),$def(self,"$empty?",(function(){return this.stack.$size()["$=="](0)}),0),$def(self,"$push",(function(value){return this.stack["$<<"](value)}),1),$def(self,"$set",(function(value){var $writer;return $writer=[$rb_minus(this.stack.$length(),1),value],$send(this.stack,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$pop",(function(){return this.stack.$pop()}),0),$def(self,"$reset",(function(){return this.stack.$clear()}),0),$def(self,"$top",(function(){return this.stack.$last()}),0)}([$module($base,"Parser")].concat($parent_nesting)[0])},Opal.modules["parser/variables_stack"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("push,empty?,<<,new,pop,clear,last,to_sym,include?"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"VariablesStack"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.stack=nil,$def(self,"$initialize",(function(){return this.stack=[],this.$push()}),0),$def(self,"$empty?",(function(){return this.stack["$empty?"]()}),0),$def(self,"$push",(function(){return this.stack["$<<"]($$("Set").$new())}),0),$def(self,"$pop",(function(){return this.stack.$pop()}),0),$def(self,"$reset",(function(){return this.stack.$clear()}),0),$def(self,"$declare",(function(name){return this.stack.$last()["$<<"](name.$to_sym())}),1),$def(self,"$declared?",(function(name){return this.stack.$last()["$include?"](name.$to_sym())}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["parser/base"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$defs=Opal.defs,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$gvars=Opal.gvars,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$def=Opal.def,$not=Opal.not,$eqeqeq=Opal.eqeqeq,$to_ary=Opal.to_ary,$hash2=Opal.hash2;return Opal.add_stubs("default_parser,setup_source_buffer,default_encoding,parse,parse_with_comments,read,new,all_errors_are_fatal=,diagnostics,-,ignore_warnings=,lambda,puts,render,consumer=,force_encoding,dup,==,name,raw_source=,source=,private_class_method,attr_reader,version,diagnostics=,static_env=,context=,parser=,[],class,reset,source_buffer=,do_parse,comments=,comments,tokens=,!,raise,tokens,private,advance,===,diagnostic,map,process,yyerror,token_to_str"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Base"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.diagnostics=$proto.lexer=$proto.static_env=$proto.context=$proto.builder=$proto.current_arg_stack=$proto.pattern_variables=$proto.pattern_hash_keys=nil,$defs(self,"$parse",(function(string,file,line){var source_buffer,parser=nil;return null==file&&(file="(string)"),null==line&&(line=1),parser=this.$default_parser(),source_buffer=this.$setup_source_buffer(file,line,string,parser.$default_encoding()),parser.$parse(source_buffer)}),-2),$defs(self,"$parse_with_comments",(function(string,file,line){var source_buffer,parser=nil;return null==file&&(file="(string)"),null==line&&(line=1),parser=this.$default_parser(),source_buffer=this.$setup_source_buffer(file,line,string,parser.$default_encoding()),parser.$parse_with_comments(source_buffer)}),-2),$defs(self,"$parse_file",(function(filename){return this.$parse($$("File").$read(filename),filename)}),1),$defs(self,"$parse_file_with_comments",(function(filename){return this.$parse_with_comments($$("File").$read(filename),filename)}),1),$defs(self,"$default_parser",(function(){var parser=nil,$writer=nil;return parser=this.$new(),$writer=[!0],$send(parser.$diagnostics(),"all_errors_are_fatal=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!0],$send(parser.$diagnostics(),"ignore_warnings=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[$send(this,"lambda",[],(function(diagnostic){return null==$gvars.stderr&&($gvars.stderr=nil),null==diagnostic&&(diagnostic=nil),$gvars.stderr.$puts(diagnostic.$render())}),1)],$send(parser.$diagnostics(),"consumer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],parser}),0),$defs(self,"$setup_source_buffer",(function(file,line,string,encoding){var source_buffer,$writer=nil;return string=string.$dup().$force_encoding(encoding),source_buffer=$$$($$("Source"),"Buffer").$new(file,line),$eqeq(this.$name(),"Parser::Ruby18")?($send(source_buffer,"raw_source=",$to_a($writer=[string])),$writer[$rb_minus($writer.length,1)]):($send(source_buffer,"source=",$to_a($writer=[string])),$writer[$rb_minus($writer.length,1)]),source_buffer}),4),self.$private_class_method("setup_source_buffer"),self.$attr_reader("lexer"),self.$attr_reader("diagnostics"),self.$attr_reader("builder"),self.$attr_reader("static_env"),self.$attr_reader("source_buffer"),self.$attr_reader("context"),self.$attr_reader("max_numparam_stack"),self.$attr_reader("current_arg_stack"),self.$attr_reader("pattern_variables"),self.$attr_reader("pattern_hash_keys"),$def(self,"$initialize",(function(builder){var $writer=nil;return null==builder&&(builder=$$$($$$($$("Parser"),"Builders"),"Default").$new()),this.diagnostics=$$$($$("Diagnostic"),"Engine").$new(),this.static_env=$$("StaticEnvironment").$new(),this.context=$$("Context").$new(),this.max_numparam_stack=$$("MaxNumparamStack").$new(),this.current_arg_stack=$$("CurrentArgStack").$new(),this.pattern_variables=$$("VariablesStack").$new(),this.pattern_hash_keys=$$("VariablesStack").$new(),this.lexer=$$("Lexer").$new(this.$version()),$writer=[this.diagnostics],$send(this.lexer,"diagnostics=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[this.static_env],$send(this.lexer,"static_env=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[this.context],$send(this.lexer,"context=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.builder=builder,$writer=[this],$send(this.builder,"parser=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.last_token=nil,$truthy($$$(this.$class(),"Racc_debug_parser"))&&$truthy($$("ENV")["$[]"]("RACC_DEBUG"))&&(this.yydebug=!0),this.$reset()}),-1),$def(self,"$reset",(function(){return this.source_buffer=nil,this.lexer.$reset(),this.static_env.$reset(),this.context.$reset(),this.current_arg_stack.$reset(),this.pattern_variables.$reset(),this.pattern_hash_keys.$reset(),this}),0),$def(self,"$parse",(function(source_buffer){var self=this,$writer=nil,$ret_or_1=nil;return function(){try{return $writer=[source_buffer],$send(self.lexer,"source_buffer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],self.source_buffer=source_buffer,$truthy($ret_or_1=self.$do_parse())?$ret_or_1:nil}finally{self.source_buffer=nil,$writer=[nil],$send(self.lexer,"source_buffer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}}()}),1),$def(self,"$parse_with_comments",(function(source_buffer){var self=this,$writer=nil;return function(){try{return $writer=[[]],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],[self.$parse(source_buffer),self.lexer.$comments()]}finally{$writer=[nil],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}}()}),1),$def(self,"$tokenize",(function(source_buffer,recover){var self=this,$writer=nil,ast=nil;return null==recover&&(recover=!1),function(){try{$writer=[[]],$send(self.lexer,"tokens=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[[]],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)];try{ast=self.$parse(source_buffer)}catch($err){if(!Opal.rescue($err,[$$$($$("Parser"),"SyntaxError")]))throw $err;try{$not(recover)&&self.$raise()}finally{Opal.pop_exception()}}return[ast,self.lexer.$comments(),self.lexer.$tokens()]}finally{$writer=[nil],$send(self.lexer,"tokens=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[nil],$send(self.lexer,"comments=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}}()}),-2),self.$private(),$def(self,"$next_token",(function(){var token;return token=this.lexer.$advance(),this.last_token=token,token}),0),$def(self,"$check_kwarg_name",(function(name_t){var $ret_or_1;return $eqeqeq(/^[a-z_]/,$ret_or_1=name_t["$[]"](0))?nil:$eqeqeq(/^[A-Z]/,$ret_or_1)?this.$diagnostic("error","argument_const",nil,name_t):nil}),1),$def(self,"$diagnostic",(function(level,reason,arguments$,location_t,highlights_ts){var $a,location,highlights;return null==highlights_ts&&(highlights_ts=[]),$a=$to_ary(location_t),null==$a[0]?nil:$a[0],location=null==$a[1]?nil:$a[1],highlights=$send(highlights_ts,"map",[],(function(token){var $c;return null==token&&(token=nil),$c=$to_ary(token),null==$c[0]?nil:$c[0],null==$c[1]?nil:$c[1]}),1),this.diagnostics.$process($$("Diagnostic").$new(level,reason,arguments$,location,highlights)),$eqeq(level,"error")?this.$yyerror():nil}),-5),$def(self,"$on_error",(function(error_token_id,error_value,value_stack){var $a,token_name,location;return token_name=this.$token_to_str(error_token_id),null==($a=$to_ary(error_value))[0]?nil:$a[0],location=null==$a[1]?nil:$a[1],this.diagnostics.$process($$("Diagnostic").$new("error","unexpected_token",$hash2(["token"],{token:token_name}),location))}),3)}($nesting[0],$$$($$("Racc"),"Parser"),$nesting)}($nesting[0],$nesting)},Opal.modules["parser/rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("new,process,include?,type,remove,wrap,insert_before,insert_after,replace,freeze,join,extend,warn_of_deprecation,class,warned_of_deprecation=,-"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Rewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.source_rewriter=nil,$def(self,"$rewrite",(function(source_buffer,ast){return this.source_rewriter=$$$($$("Source"),"Rewriter").$new(source_buffer),this.$process(ast),this.source_rewriter.$process()}),2),$def(self,"$assignment?",(function(node){return["lvasgn","ivasgn","gvasgn","cvasgn","casgn"]["$include?"](node.$type())}),1),$def(self,"$remove",(function(range){return this.source_rewriter.$remove(range)}),1),$def(self,"$wrap",(function(range,before,after){return this.source_rewriter.$wrap(range,before,after)}),3),$def(self,"$insert_before",(function(range,content){return this.source_rewriter.$insert_before(range,content)}),2),$def(self,"$insert_after",(function(range,content){return this.source_rewriter.$insert_after(range,content)}),2),$def(self,"$replace",(function(range,content){return this.source_rewriter.$replace(range,content)}),2),$const_set($nesting[0],"DEPRECATION_WARNING",["Parser::Rewriter is deprecated.","Please update your code to use Parser::TreeRewriter instead"].$join("\n").$freeze()),self.$extend($$("Deprecation")),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this,$writer=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),self.$class().$warn_of_deprecation(),$writer=[!0],$send($$$($$("Source"),"Rewriter"),"warned_of_deprecation=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield)}),-1)}($nesting[0],$$$($$$($$("Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)},Opal.modules["parser/tree_rewriter"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$def=(Opal.hash,Opal.def);return Opal.add_stubs("new,process,include?,type,remove,wrap,insert_before,insert_after,replace"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"TreeRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.source_rewriter=nil,$def(self,"$rewrite",(function(source_buffer,ast,$kwargs){var policy;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return policy=Opal.kwrestargs($kwargs,{}),this.source_rewriter=$$$($$$($$("Parser"),"Source"),"TreeRewriter").$new(source_buffer,Opal.to_hash(policy)),this.$process(ast),this.source_rewriter.$process()}),-3),$def(self,"$assignment?",(function(node){return["lvasgn","ivasgn","gvasgn","cvasgn","casgn"]["$include?"](node.$type())}),1),$def(self,"$remove",(function(range){return this.source_rewriter.$remove(range)}),1),$def(self,"$wrap",(function(range,before,after){return this.source_rewriter.$wrap(range,before,after)}),3),$def(self,"$insert_before",(function(range,content){return this.source_rewriter.$insert_before(range,content)}),2),$def(self,"$insert_after",(function(range,content){return this.source_rewriter.$insert_after(range,content)}),2),$def(self,"$replace",(function(range,content){return this.source_rewriter.$replace(range,content)}),2)}($nesting[0],$$$($$$($$("Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)},Opal.modules.parser=function(Opal){var self=Opal.top,$nesting=[],$$=Opal.$r($nesting),$$$=(Opal.nil,Opal.$$$),$truthy=Opal.truthy,$module=Opal.module;return Opal.add_stubs("=~,require,raise"),$truthy($$("RUBY_VERSION")["$=~"](/^1\.[89]\./))&&(self.$require("parser/version"),self.$raise($$("LoadError"),"parser v"+$$$($$("Parser"),"VERSION")+" cannot run on Ruby "+$$("RUBY_VERSION")+".\nPlease upgrade to Ruby 2.0.0 or higher, or use an older version of the parser gem.\n")),self.$require("set"),self.$require("racc/parser"),self.$require("ast"),function($base,$parent_nesting){var self=$module($base,"Parser"),$nesting=[self].concat($parent_nesting);return self.$require("parser/version"),self.$require("parser/messages"),self.$require("parser/deprecation"),function($base){var self=$module($base,"AST");self.$require("parser/ast/node"),self.$require("parser/ast/processor"),self.$require("parser/meta")}($nesting[0]),function($base){var self=$module($base,"Source");self.$require("parser/source/buffer"),self.$require("parser/source/range"),self.$require("parser/source/comment"),self.$require("parser/source/comment/associator"),self.$require("parser/source/rewriter"),self.$require("parser/source/rewriter/action"),self.$require("parser/source/tree_rewriter"),self.$require("parser/source/tree_rewriter/action"),self.$require("parser/source/map"),self.$require("parser/source/map/operator"),self.$require("parser/source/map/collection"),self.$require("parser/source/map/constant"),self.$require("parser/source/map/variable"),self.$require("parser/source/map/keyword"),self.$require("parser/source/map/definition"),self.$require("parser/source/map/method_definition"),self.$require("parser/source/map/send"),self.$require("parser/source/map/index"),self.$require("parser/source/map/condition"),self.$require("parser/source/map/ternary"),self.$require("parser/source/map/for"),self.$require("parser/source/map/rescue_body"),self.$require("parser/source/map/heredoc"),self.$require("parser/source/map/objc_kwarg")}($nesting[0]),self.$require("parser/syntax_error"),self.$require("parser/clobbering_error"),self.$require("parser/diagnostic"),self.$require("parser/diagnostic/engine"),self.$require("parser/static_environment"),self.$require("parser/lexer"),self.$require("parser/lexer/literal"),self.$require("parser/lexer/stack_state"),self.$require("parser/lexer/dedenter"),function($base){$module($base,"Builders").$require("parser/builders/default")}($nesting[0]),self.$require("parser/context"),self.$require("parser/max_numparam_stack"),self.$require("parser/current_arg_stack"),self.$require("parser/variables_stack"),self.$require("parser/base"),self.$require("parser/rewriter"),self.$require("parser/tree_rewriter")}($nesting[0],$nesting)},Opal.modules["parser/ruby31"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$not=Opal.not,$hash2=Opal.hash2,$send=Opal.send,$rb_gt=Opal.rb_gt,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$hash=Opal.hash,$const_set=Opal.const_set,$to_ary=Opal.to_ary,$eqeq=Opal.eqeq,$slice=Opal.slice;return Opal.add_stubs("require,end_with?,[],!,include?,diagnostic,extend_static,push,cmdarg,cond,unextend,pop,children,in_dynamic_block?,declared?,static_env,=~,expression,loc,has_ordinary_params?,max_numparam_stack,dup,stack,reverse_each,>,declare,register,to_i,new,each,split,empty?,[]=,-,+,compstmt,<<,preexe,nil?,begin_body,state=,alias,gvar,back_ref,undef_method,condition_mod,loop_mod,rescue_body,postexe,multi_assign,assign,array,op_assign,index,call_method,const_op_assignable,const_fetch,endless_method_name,def_endless_method,local_pop,in_def,in_def=,def_endless_singleton,logical_op,not_op,command_start=,in_kwarg,in_kwarg=,match_pattern,match_pattern_p,local_push,in_argdef=,in_block=,in_block,block,keyword_cmd,multi_lhs,begin,splat,concat,assignable,index_asgn,==,attr_asgn,const_global,const,symbol_internal,range_inclusive,range_exclusive,binary_op,unary_op,match_op,in_defined=,ternary,associate,declared_forward_args?,forwarded_args,block_pass,declared_anonymous_blockarg?,begin_keyword,condition,loop,case,case_match,for,in_class=,def_class,in_class,def_sclass,def_module,def_method,def_singleton,context,in_lambda,arg,restarg,size,procarg0,args,has_ordinary_params!,set,shadowarg,extend_dynamic,in_lambda=,call_lambda,has_numparams?,numargs,top,any?,when,in_pattern,if_guard,unless_guard,match_with_trailing_comma,array_pattern,find_pattern,hash_pattern,match_as,match_alt,const_pattern,match_rest,match_pair,match_label,match_nil_pattern,accessible,match_var,ident,pin,string_compose,dedent_string,dedent_level,string,character,xstring_compose,regexp_options,regexp_compose,words_compose,word,symbols_compose,string_internal,ivar,cvar,symbol,symbol_compose,respond_to?,negate,unary_num,integer,float,rational,complex,nil,self,true,false,__FILE__,__LINE__,__ENCODING__,nth_ref,declare_forward_args,forward_arg,check_kwarg_name,kwoptarg,kwarg,kwnilarg,kwrestarg,optarg,blockarg,declare_anonymous_blockarg,pair,pair_keyword,pair_label,pair_quoted,kwsplat,yyerrok"),self.$require("racc/parser.rb"),self.$require("parser"),function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var racc_action_table,racc_action_check,racc_action_pointer,racc_action_default,racc_goto_table,racc_goto_check,racc_goto_pointer,racc_goto_default,racc_reduce_table,racc_token_table,self=$klass($base,$super,"Ruby31"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),clist=nil,arr=nil,idx=nil,$proto=self.$$prototype;return $proto.static_env=$proto.lexer=$proto.max_numparam_stack=$proto.context=$proto.current_arg_stack=$proto.builder=$proto.pattern_variables=$proto.last_token=$proto.pattern_hash_keys=nil,$def(self,"$version",(function(){return 31}),0),$def(self,"$default_encoding",(function(){return $$$($$("Encoding"),"UTF_8")}),0),$def(self,"$endless_method_name",(function(name_t){return $not(["===","==","!=","<=",">="]["$include?"](name_t["$[]"](0)))&&$truthy(name_t["$[]"](0)["$end_with?"]("="))?this.$diagnostic("error","endless_setter",nil,name_t):nil}),1),$def(self,"$local_push",(function(){return this.static_env.$extend_static(),this.lexer.$cmdarg().$push(!1),this.lexer.$cond().$push(!1),this.max_numparam_stack.$push($hash2(["static"],{static:!0}))}),0),$def(self,"$local_pop",(function(){return this.static_env.$unextend(),this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.max_numparam_stack.$pop()}),0),$def(self,"$try_declare_numparam",(function(node){var self=this,name=nil,location=nil,raw_max_numparam_stack=nil;return name=node.$children()["$[]"](0),!!($truthy(name["$=~"](/^_[1-9]$/))&&$not(self.$static_env()["$declared?"](name))&&$truthy(self.context["$in_dynamic_block?"]()))&&(location=node.$loc().$expression(),$truthy(self.$max_numparam_stack()["$has_ordinary_params?"]())&&self.$diagnostic("error","ordinary_param_defined",nil,[nil,location]),(raw_max_numparam_stack=self.$max_numparam_stack().$stack().$dup()).$pop(),function(){var $brk=Opal.new_brk();try{$send(raw_max_numparam_stack,"reverse_each",[],(function $$1(outer_scope){var self=null==$$1.$$s?this:$$1.$$s,outer_scope_has_numparams=nil;if(null==outer_scope&&(outer_scope=nil),!$truthy(outer_scope["$[]"]("static")))return outer_scope_has_numparams=$rb_gt(outer_scope["$[]"]("value"),0),$truthy(outer_scope_has_numparams)?self.$diagnostic("error","numparam_used_in_outer_scope",nil,[nil,location]):nil;Opal.brk(nil,$brk)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),self.$static_env().$declare(name),self.$max_numparam_stack().$register(name["$[]"](1).$to_i()),!0)}),1),clist=["-320,600,620,-119,1214,-121,-118,-320,-320,-320,221,222,1124,-320,-320","-624,-320,239,620,-123,620,925,-624,-110,-320,-732,237,428,-124,311","122,-122,430,429,717,311,-320,-320,620,-320,-320,-320,-320,-320,-116","-117,-124,620,620,-116,1001,828,718,627,892,925,627,126,240,-732,-123","833,125,-117,240,240,-320,-320,-320,-320,-320,-320,-320,-320,-320,-320","-320,-320,-320,-320,-624,-123,-320,-320,-320,-124,687,-320,-119,-110","-320,-121,-120,-320,1125,240,-720,135,-320,306,-320,-511,-320,-320,240","-320,-320,-320,-320,-320,-320,-320,-110,-320,-112,-109,310,-320,-320","-320,126,-120,310,-320,-320,125,-320,-320,-114,-110,-320,-320,-110,-113","-320,-320,126,-115,126,990,-113,125,-320,125,-110,-122,-320,-320,-122","-320,-320,-320,-320,-320,-118,126,126,-719,-107,1000,125,125,-116,-117","-124,126,126,-116,-117,-124,125,125,-108,221,222,218,-320,-320,-320","-320,-320,-320,-320,-320,-320,-320,-320,-320,-320,-320,221,222,-320","-320,-320,311,687,-320,-719,-123,-320,-111,661,-320,-123,648,-119,925","-320,-121,-320,-119,-320,-320,-121,-320,-320,-320,-320,-320,233,-320","-723,-320,-628,-720,-629,221,222,-723,-723,-723,104,105,-723,-723,-723","-320,-723,-120,-320,-320,-102,-320,-120,-320,-723,-723,-723,-723,-723","663,-320,924,-88,-122,219,-112,-723,-723,522,-723,-723,-723,-723,-723","-122,240,660,650,649,-122,-118,-111,-109,220,-744,-118,311,648,233,223","310,-116,240,-117,1063,300,-723,-723,-723,-723,-723,-723,-723,-723,-723","-723,-723,-723,-723,-723,233,682,-723,-723,-723,648,921,-723,106,107","-723,104,105,-723,-723,662,-723,-124,-723,126,-723,-112,-723,-723,125","-723,-723,-723,-723,-723,361,-723,-723,-723,-744,683,-719,-111,-109","648,306,650,649,646,648,362,648,-723,-110,648,-723,-723,-723,-723,240","-723,-744,-723,800,-320,-119,-112,-723,310,-112,-120,-320,-320,-320","650,649,-320,-320,-320,892,-320,-112,-111,-109,859,-111,-109,-112,-320","833,-320,-320,-320,875,106,107,919,-111,-109,-121,-320,-320,431,-320","-320,-320,-320,-320,650,649,646,949,471,650,649,650,649,655,650,649","653,920,1035,861,633,1063,233,-732,634,948,-320,-320,-320,-320,-320","-320,-320,-320,-320,-320,-320,-320,-320,-320,240,-629,-320,-320,-320","648,922,-320,-118,-635,-320,-119,-625,-320,-320,648,-320,-617,-320,-625","-320,510,-320,-320,-617,-320,-320,-320,-320,-320,683,-320,682,-320,507","506,-121,-118,-744,491,648,488,487,486,496,489,521,-320,-108,-623,-320","-320,-320,-320,499,-320,-623,-320,126,-723,-117,612,-320,125,614,-122","-723,-723,-723,650,649,651,-723,-723,633,-723,494,-625,960,650,649,664","-617,-723,-723,504,503,507,506,-121,633,-119,500,523,960,-723,-723,524","-723,-723,-723,-723,-723,239,650,649,659,491,-321,488,487,486,496,489","-623,-321,600,491,240,488,487,486,499,489,-321,-723,-723,-723,-723,-723","-723,-723,-723,-723,-723,-723,-723,-723,-723,558,-628,-723,-723,-723","494,688,-723,570,126,-723,648,572,-723,125,710,507,506,-723,574,-723","500,-723,-723,-114,-723,-723,-723,-723,-723,-614,-723,-723,-723,-321","126,-123,-614,-614,-614,125,135,-614,-614,-614,-614,-614,-723,-107,-87","-723,-723,-614,-723,-614,-723,-614,-614,-614,931,-116,485,-723,240,927","-120,-614,-614,928,-614,-614,-614,-614,-614,585,650,649,646,586,-311","227,-620,-621,227,950,951,-311,304,-620,-621,304,612,593,237,611,-311","-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614,-614","-614,227,-614,-614,-614,227,-614,-614,592,315,-614,240,1188,-614,-614","233,-614,590,-614,126,-614,638,-614,-614,125,-614,-614,-614,-614,-614","-115,-614,-617,-614,-311,228,-620,-621,228,-617,-617,-617,-124,233,-617","-617,-617,-614,-617,306,-614,-614,-614,-614,597,-614,-617,-614,-617","-617,-617,612,-614,603,614,-614,228,264,-617,-617,228,-617,-617,-617","-617,-617,606,227,240,227,615,-356,-619,-622,675,616,636,574,-356,-619","-622,612,627,673,614,638,420,-356,-617,-617,-617,-617,-617,-617,-617","-617,-617,-617,-617,-617,-617,-617,631,754,-617,-617,-617,227,-617,-617","1149,1150,-617,499,630,-617,-617,632,-617,875,-617,640,-617,628,-617","-617,665,-617,-617,-617,-617,-617,228,-617,228,-617,-356,-619,-622,668","227,669,954,240,958,957,1197,1188,959,-617,-293,500,-617,-617,-617,-617","638,-617,671,-617,672,-723,676,1056,-617,240,-109,-617,-723,-723,-723","496,228,680,-723,-723,-320,-723,-118,956,264,499,681,-320,306,-723,-723","694,-720,985,892,695,-320,114,113,115,116,-723,-723,240,-723,-723,-723","-723,-723,228,221,222,697,118,117,119,261,700,507,506,263,262,701,500","703,264,104,105,221,222,358,-723,-723,-723,-723,-723,-723,-723,-723","-723,-723,-723,-723,-723,-723,-320,705,-723,-723,-723,-385,688,-723","227,719,-723,720,261,-723,227,1164,263,262,-723,724,-723,226,-723,-723","1162,-723,-723,-723,-723,-723,224,-723,-723,-723,726,102,90,93,94,732","95,97,96,98,754,985,892,-723,91,101,-723,-723,90,-111,499,-723,85,733","92,106,107,264,-723,264,91,-120,333,81,82,83,11,65,264,228,92,71,72","264,240,228,75,-723,73,74,76,35,36,79,80,788,240,240,500,240,84,33,32","114,113,115,116,-102,803,23,1056,240,606,281,282,10,53,335,12,118,117","119,108,64,110,109,111,814,112,120,121,-320,104,105,49,50,48,-321,-320","-723,819,-626,240,-720,-321,821,-723,-320,-626,280,279,-719,824,-321","829,-723,45,-626,830,38,834,858,66,67,227,862,68,863,40,-294,876,602","52,491,-723,488,487,486,558,489,520,24,558,888,892,910,102,90,93,94","913,95,97,96,98,914,-320,240,917,91,101,240,-321,926,-723,943,-626,85","944,92,106,107,945,962,46,47,333,81,82,83,11,65,964,300,970,71,72,972","974,228,75,-716,73,74,76,35,36,79,80,572,574,496,814,240,84,33,32,114","113,115,116,499,1159,23,488,487,486,306,489,10,53,335,12,118,117,119","108,64,110,109,111,306,112,120,121,227,104,105,49,50,48,-627,519,-614","507,506,814,264,-627,500,-614,520,892,987,988,-716,240,-627,240,-614","45,998,240,38,-295,240,66,67,1009,1013,68,1159,40,488,487,486,52,489","-716,-293,491,1017,488,487,486,24,489,700,718,1020,102,90,93,94,1022","95,97,96,98,1024,228,1026,1026,91,101,240,-627,774,-614,240,240,85,1054","92,106,107,1057,710,46,47,333,81,82,83,11,65,714,853,854,71,72,855,120","121,75,-717,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32,114,113","115,116,925,491,23,488,487,486,972,489,10,53,335,12,118,117,119,108","64,110,109,111,1069,112,120,121,240,104,105,49,50,48,814,491,-617,488","487,486,1086,489,710,-617,1088,1093,1094,1099,-717,1100,1101,714,-617","45,-296,1114,38,1115,1116,66,67,240,240,68,240,40,240,240,240,52,925","-717,710,491,1123,488,487,486,24,489,240,714,1129,102,90,93,94,1130","95,97,96,98,1132,700,1135,1138,91,101,1140,1142,240,-617,-385,1154,85","1165,92,106,107,1166,710,46,47,333,81,82,83,11,65,1026,1026,1026,71","72,1173,1186,1189,75,1194,73,74,76,35,36,79,80,256,1195,694,1115,1205","84,33,32,114,113,115,116,1205,700,23,129,130,131,132,133,10,53,335,12","118,117,119,108,64,110,109,111,1208,112,120,121,1210,104,105,49,50,48","264,268,269,270,271,281,282,276,277,272,273,1212,257,258,1214,1214,274","275,240,45,1026,255,38,1205,-720,66,67,-719,1231,68,1214,40,261,1214","267,52,263,262,1214,259,260,280,279,265,24,266,3,,,102,90,93,94,,95","97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32","114,113,115,116,,,23,,,,,677,10,53,335,12,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277","272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263","262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,278,,-265,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72",",,,75,,73,74,76,35,36,79,80,129,130,131,132,133,84,33,32,114,113,115","116,,,23,,,,,889,10,53,335,12,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257","258,,,274,275,,45,,,337,,,66,67,,,68,,40,261,,267,52,263,262,,259,260","280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,","85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35","36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,677,10,53,335,12,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269","270,271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,337,,,66,67",",,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82","83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,918,10,53,335,12,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273",",257,258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259","260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278",",,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74","76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12","118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268","269,270,271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66","67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81","82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257","258,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260","280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,","85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35","36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117","119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270","271,281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68",",40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,7,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258,,","274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279","265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,240,278,,,,,85,,92","106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79","80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271","281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40","261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,","104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258",",,274,275,,45,,,337,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280","279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,","92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36","79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271","281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40","261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,","104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,257,258",",,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280","279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,278,,,,,85,","92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36","79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271","281,282,276,277,272,273,,257,258,,,274,275,,45,,,38,,,66,67,,,68,,40","261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,278,,,,,85,,92,106,107,,,46,47,333,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,","104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745,-745",",,274,275,,45,,,38,,,66,67,,264,68,,40,261,,267,52,263,262,,259,260","280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,261,,91,101,263,262",",259,260,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,","73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,264,491,23,488,487","486,,489,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,264,,261,,,,263,262,710,259,260,,,,,,274,275,,45,,,38,",",66,67,,,68,,40,261,,267,52,263,262,,259,260,,,265,24,266,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82","83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745","-745,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260","280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85",",92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36","79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,268,269,270,271","281,282,276,277,272,273,,-745,-745,,,274,275,,45,,,38,,,66,67,,,68,","40,261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,","95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,","104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,45,,,38,,,66,67,,,68,,40","261,,267,52,263,262,,259,260,,,265,24,266,,,,102,90,93,94,,95,97,96","98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71","72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,",",,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,264,268,269,270,271,281,282,276,,272,273,,,,,,274,275,,45,",",38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266",",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47","7,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,264,268,269,270,271,281,282,,,272,273",",,,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260","280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85",",92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36","79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,-745,-745,-745","-745,281,282,,,-745,-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40,261",",267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95,97,96","98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71","72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,",",,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274,275,,45",",,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24,266",",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47","333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745","-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259","260,280,279,265,24,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,",",85,,92,106,107,,,46,47,333,81,82,83,11,65,,,,71,72,,,,75,,73,74,76","35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,264,-745,-745","-745,-745,281,282,,,-745,-745,,,,,,274,275,,45,,,38,,,66,67,,,68,,40","261,,267,52,263,262,,259,260,280,279,265,24,266,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,333,81,82,83,11,65",",,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,",",23,,,,,,10,53,335,12,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274,275",",45,,,38,,,66,67,,,68,,40,261,,267,52,263,262,,259,260,280,279,265,24","266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106","107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113","115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121",",104,105,49,50,48,264,-745,-745,-745,-745,281,282,,,-745,-745,,,,,,274","275,,245,,,253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,280,279,265","250,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,264,268,269,270,271,281,282,276,277,272,273,,-745","-745,,,274,275,,245,,,253,,,66,67,,,68,,,261,,267,52,263,262,,259,260","280,279,265,250,266,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84","349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,245,",",253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,,,,250,,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47",",75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,",",,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,264,,,,,,,,,,,,,,,,274,275,,245,,,253,,,66,67,,,68,,,261,,,52,263","262,,259,260,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84","349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,264,,,,,,,,,,,,,,,,274,275,,245,",",253,,,66,67,,,68,,,261,,267,52,263,262,,259,260,,,,250,,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,",",,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,",",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79","80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108","64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98",",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,","53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,",",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,","254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,436,,,,52,,,,,,",",,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,",",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79","80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,",",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35","36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,,,,85,,92,106,107,-441,,46,47,,,,-441,-441,-441",",,-441,-441,-441,,-441,,,,,,,,-441,-441,-441,-441,,,,,,,,,-441,-441",",-441,-441,-441,-441,-441,,,,,,,,,,,,,,,,,,,,,,,-441,-441,-441,-441","-441,-441,-441,-441,-441,-441,-441,-441,-441,-441,,,-441,-441,-441,",",-441,,306,-441,,,-441,-441,,-441,,-441,,-441,,-441,-441,,-441,-441","-441,-441,-441,,-441,-441,-441,,,,,,,,,,,,,,-441,,,-441,-441,,-441,","-441,81,82,83,,65,,-441,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33","32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,","112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,",",68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,","81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,",",84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66","67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117","119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,",",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73","74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,",",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,",",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-327,,46,47,,,,-327","-327,-327,,,-327,-327,-327,,-327,,,,,,,,-327,,-327,-327,,,,,,,,,-327","-327,,-327,-327,-327,-327,-327,,,,,,,,,,,,,,,,,,,,,,,-327,-327,-327","-327,-327,-327,-327,-327,-327,-327,-327,-327,-327,-327,,,-327,-327,-327",",,-327,,315,-327,,,-327,-327,,-327,,-327,,-327,,-327,-327,,-327,-327","-327,-327,-327,,-327,,-327,,,,,,,,,,,,,,-327,,,-327,-327,,-327,,-327","81,82,83,,65,,-327,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327","112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,",",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,","91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355","79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108","64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,","245,,,253,,,66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,","53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,",",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82","83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,",",52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33","32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327","112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,",",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,","91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36","79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108","64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98",",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,797,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73","74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,",",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,",",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,867,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82","83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,",",52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327","112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,",",68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,","91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355","79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108","64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98",",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35","36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,",",,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,",",,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,",",,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,",",,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96","98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76","354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117","119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,",",,,,,245,,,253,,,66,67,,,68,,324,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,","118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,",",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47",",75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,",",,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49","50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,328,,,,,,250",",,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121",",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,797,,,","52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33","32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,240,,,81","82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,","84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66","67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,",",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,","118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,",",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47",",75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,","53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,",",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49","50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328",",,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106","107,,,46,47,81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,",",84,33,32,114,113,115,116,,,23,,,,,,10,53,335,12,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38",",,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,","91,101,,,,,,420,85,,92,106,107,,,46,47,81,82,83,,65,,,,71,72,,,,75,","73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53",",,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,",",,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,",",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116",",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121",",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,322,","52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84","349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,",",66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96","98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76","354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117","119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,",",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73","74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,",",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,",",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,",",102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-275,,46","47,,,,-275,-275,-275,,,-275,-275,-275,491,-275,488,487,486,496,489,",",-275,-275,-275,,,,499,,,,,,-275,-275,,-275,-275,-275,-275,-275,,491",",488,487,486,496,489,494,,,,,,,,499,504,503,507,506,,,,500,,491,,488","487,486,496,489,-275,,,,,494,,-275,499,,,,306,-275,504,503,507,506,",",,500,,,,,,,,,494,485,,,,-275,-275,,,,,507,506,,,,500,,,,-275,,,-275",",81,82,83,-275,65,,485,,71,72,-275,,,75,,73,74,76,354,355,79,80,,,,",",84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79","80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95","97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73","74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,","53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,",",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,",",,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,","102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,","102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,","102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116",",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121",",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52",",,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33","32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84","349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66","67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,",",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,",",,,,245,,,253,,,66,67,,,68,,324,,,,52,,,328,,,,,,250,,,,,102,325,93","94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11","65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,10,53,,12,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,",",,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113","115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121",",104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52",",,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65","92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,",",,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66","67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,",",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,",",,,,245,,,253,,,66,67,,,68,,797,,322,,52,,,328,,,,,,250,,,,,102,325","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","560,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,",",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,",",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104,105,49","50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328",",,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65","92,106,107,71,72,46,560,,75,,73,74,76,354,355,79,80,,,,,,84,349,357","114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84","349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109","111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66","67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,",",,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96","98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76","35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,",",,,,245,,,253,,,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325","93,94,,95,97,96,98,,,,,91,101,240,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,","254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,",",,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,",",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79","80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108","64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245",",,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98",",,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,","53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,",",,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,","254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104","105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,",",,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92","106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,",",,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91","101,,,,,,,85,,92,106,107,,,46,47,81,82,83,11,65,,,,71,72,,,,75,,73,74","76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,10,53,,12,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,45,,,38,,,66,67,,,68,,40,,,,52,,,,,,,,,24,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75",",73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,","118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,",",,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93","94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47",",75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53",",,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,",",,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,",",,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48",",,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72","46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,",",,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,","102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,","102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116",",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,46,47","81,82,83,11,65,,,,71,72,,,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114","113,115,116,,,23,,,,,,10,53,9,12,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,45,,,38,,,66,67,,,68,,40",",,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,420,85",",92,106,107,,,46,47,81,82,83,,65,,,,71,72,,,,75,,73,74,76,35,36,79,80",",,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110","109,111,327,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253",",,66,67,,,68,,324,,322,,52,,,328,,,,,,250,,,,,102,325,93,94,,95,97,96","98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76","35,36,79,80,,,,,,84,33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118","117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,",",,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94",",95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,-725,,46,47,,,,-725,-725","-725,,,-725,-725,-725,,-725,,,,,,,,-725,-725,-725,-725,-725,,,,,,,,-725","-725,,-725,-725,-725,-725,-725,,,,,,,,,,,,,,,,,,,,,,,-725,-725,-725","-725,-725,-725,-725,-725,-725,-725,-725,-725,-725,-725,,,-725,-725,-725",",,-725,,,-725,,,-725,-725,,-725,,-725,,-725,,-725,-725,,-725,-725,-725","-725,-725,,-725,-725,-725,,,,,,,,,,,,,,-725,,,-725,-725,-725,-725,,-725","-724,-725,,,,,-725,-724,-724,-724,,,-724,-724,-724,,-724,,,,,,,,-724","-724,-724,-724,-724,,,,114,113,115,116,-724,-724,,-724,-724,-724,-724","-724,,,,,118,117,119,,,,,,,,,,,104,105,,,358,-724,-724,-724,-724,-724","-724,-724,-724,-724,-724,-724,-724,-724,-724,,,-724,-724,-724,,,-724",",,-724,,,-724,-724,,-724,,-724,,-724,,-724,-724,,-724,-724,-724,-724","-724,,-724,-724,-724,,102,90,93,94,,95,97,96,98,,,,-724,91,101,-724","-724,-724,-724,,-724,85,-724,92,106,107,-275,-724,81,82,83,11,65,-275","-275,-275,71,72,-275,-275,-275,75,-275,73,74,76,35,36,79,80,-275,-275","-275,-275,,84,33,32,114,113,115,116,-275,-275,23,-275,-275,-275,-275","-275,10,53,9,12,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275,-275","-275,-275,,,-275,-275,-275,45,,-275,38,306,-275,66,67,-275,-275,68,-275","40,-275,,-275,52,-275,-275,,-275,-275,-275,-275,-275,24,-275,-275,-275",",102,90,93,94,,95,97,96,98,,,,-275,91,101,-275,-275,,-275,,-275,85,","92,106,107,,-275,46,47,81,82,83,,65,,,,71,72,,,,75,,73,74,76,35,36,79","80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,",",,91,101,126,,,,,125,85,,92,106,107,-312,,46,47,,,,-312,-312,-312,,","-312,-312,-312,,-312,,,,,,,,-312,,-312,-312,-312,,,,,,,,-312,-312,,-312","-312,-312,-312,-312,,,,,,,,,,,,,,,,,,,,,,,-312,-312,-312,-312,-312,-312","-312,-312,-312,-312,-312,-312,-312,-312,,,-312,-312,-312,,,-312,,,-312",",,-312,-312,,-312,,-312,,-312,,-312,-312,,-312,-312,-312,-312,-312,","-312,,-312,,,,,,,,,,,,,,-312,,,-312,-312,-312,-312,,-312,,-312,,81,82","83,-312,65,,,,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,",",52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,23,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33","32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,","112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,",",68,,436,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,","253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,",",,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354","355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,,,118,117,119","108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,",",245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74","76,35,36,79,80,,,,,,84,33,32,114,113,115,116,,,23,,,,,,,53,,,118,117","119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,",",,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,24,,,,,102,90,93,94,,95","97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46,47,,75,,73","74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254,,,,,,,53,",",118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50,48,,,,,",",,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,,,102,90","93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72,46","47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254",",,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,49,50","48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250,,,",",102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71","72,46,47,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116",",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105","49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,,,,,52,,,,,,,,,250",",,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107","71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32,114,113,115,116",",,254,,,,,,,53,,,118,117,119,108,64,110,109,111,327,112,120,121,,104","105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68,,324,,322,,52",",,328,,,,,,250,,,,,102,325,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84,33,32","114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67,,,68",",436,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81","82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,35,36,79,80,,,,,,84","33,32,114,113,115,116,,,254,,,,,,,53,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,49,50,48,,,,,,,,,,,,,,,,,,,,245,,,253,,,66,67",",,68,,,,,,52,,,,,,,,,250,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,",",81,82,83,85,65,92,106,107,71,72,46,47,,75,,73,74,76,354,355,79,80,",",,,,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1107,,,253",",,66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,",",,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1146,,,253,,","66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,",",,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,",",84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,253,,,66","67,,,68,,,491,,488,487,486,496,489,,,,,,,,,499,,102,90,93,94,,95,97","96,98,,,,,91,101,,,,588,,494,85,,92,106,107,81,82,83,,65,507,506,,71","72,500,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116",",,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105",",,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,,,,,,,,,,,,,,,,,,,102","90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106,107,71,72",",,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115,116,,,254",",,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121,,104,105,,,358",",,,,,,,,,,,,,,,,,,,346,,,253,,,66,67,,,68,,,491,,488,487,486,496,489",",,,,,,,,499,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,360,,494,85,,92","106,107,81,82,83,,65,507,506,,71,72,500,,,75,,73,74,76,354,355,79,80",",,,,,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64","110,109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342",",,66,67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101",",,,81,82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,",",,84,349,357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110","109,111,,112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66","67,,,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81","82,83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,1146,,,253,,,66,67,,","68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,400,64,110,109,401",",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,407,,,402,,,253,,,66,67",",,68,,,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82","83,85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349","357,114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111",",112,120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68",",,,,,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83","85,65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357","114,113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112","120,121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,,",",,,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85","65,92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114","113,115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120","121,,104,105,,,358,,,,,,,,,,,,,,,,,,,,346,,,342,,,66,67,,,68,,341,,",",,,,,,,,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65","92,106,107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113","115,116,,,254,,,,,,,350,,,118,117,119,108,64,110,109,111,,112,120,121",",104,105,,,358,,,,,,,,,,,,,,,,,,,,395,,,38,,,66,67,,,68,,40,,,,,,,,",",,,,,,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,81,82,83,85,65,92,106","107,71,72,,,,75,,73,74,76,354,355,79,80,,,,,,84,349,357,114,113,115","116,,,254,,,,,,,350,,,118,117,119,400,64,110,109,401,,112,120,121,,104","105,,,358,,,,,,,,,,,,,,,,,,,,402,,,253,,,66,67,,,68,,,,,,,,,,,,,,,,",",,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107,185,196","186,209,182,202,192,191,212,213,207,190,189,184,210,214,215,194,183","197,201,203,195,188,,,,204,211,206,205,198,208,193,181,200,199,,,,,","180,187,178,179,175,176,177,138,140,137,,139,,,,,,,,169,170,,166,148","149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,,,,,,,,,163,162",",147,168,165,164,173,160,161,155,153,145,167,146,,,174,102,,,,,,,,,",",,,,101,185,196,186,209,182,202,192,191,212,213,207,190,189,184,210","214,215,194,183,197,201,203,195,188,,,,204,211,206,205,198,208,193,181","200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139,,,,,,,,169,170",",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,,,,,",",,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,,,174,102",",,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213,207,190,189","184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206,205,198,208","193,181,200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139,,,,,",",,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159",",,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146",",,174,102,,,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213,207","190,189,184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206,205","198,208,193,181,200,199,,,,,,180,187,178,179,175,176,177,138,140,,,139",",,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158","159,,,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167","146,,,174,102,,,,,,,,,,,,,,101,185,196,186,209,182,202,192,191,212,213","207,190,189,184,210,214,215,194,183,197,201,203,195,188,,,,204,211,206","294,293,295,292,181,200,199,,,,,,180,187,178,179,289,290,291,287,140","110,109,288,,112,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152",",,,171,172,158,159,,,,,,299,,,,,,,,163,162,,147,168,165,164,173,160","161,155,153,145,167,146,,,174,114,113,115,116,,,,,,491,,488,487,486","496,489,118,117,119,774,,,,777,499,,,,,104,105,,,358,,,,,,,,,,,,,494",",,,,,,776,,,747,507,506,,745,,500,746,,,,,,,,,,,,,,,,775,,,,102,90,93","94,,95,97,96,98,,,,,91,101,114,113,115,116,485,,85,,92,106,107,,,762","763,,118,117,119,774,,,491,777,488,487,486,496,489,104,105,,,358,,,","499,,,,,,,,,,,,,,,,776,,,747,,,494,745,,,746,,,,,504,503,507,506,,,","500,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,",",85,,92,106,107,,,762,763,,118,117,119,774,,,491,777,488,487,486,496","489,104,105,,,358,,,,499,,,,,,,,,,,,,,,,776,,,747,,,494,745,,,746,,749",",,504,503,507,506,,,,500,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91","101,114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,,777","754,,,,,104,105,,,358,499,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,","749,,,,,,,500,,,,,,,775,,,,102,755,93,94,,95,97,96,98,,,,,91,101,114","113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,491,777,488","487,486,496,489,104,105,,,358,,,,499,,,,,,,,,,,,,,,,776,,,747,,,494","745,,,746,,,,,504,503,507,506,,,,500,,,,775,,,,102,90,93,94,,95,97,96","98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119","774,,,491,777,488,487,486,496,489,104,105,,,358,,,,499,,,,,,,,,,,,,",",,776,,,747,,,494,745,,,746,,749,,,,,507,506,,,,500,,,,775,,,,102,90","93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762","763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776",",,747,,,,745,,,746,,749,,,,,,,491,,488,487,486,496,489,775,,,,102,90","93,94,499,95,97,96,98,,,,,91,101,240,114,113,115,116,,85,,92,106,107","494,,762,763,,,118,117,119,774,,507,506,777,,,500,,,104,105,,,358,,",",,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,485,,,,,,,,,,,,,775,,,,102","90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,","762,763,,118,117,119,774,,,,777,754,,,,,104,105,,,358,499,,,,,,,,,,",",,,,,,,,776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775,,,,102,755,93","94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763",",118,117,119,774,,,,777,754,,,,,104,105,,,358,499,,,,,,,,,,,,,,,,,,","776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775,,,,102,755,93,94,,95","97,96,98,,,,,91,101,,,,,,,85,,92,106,107,,,762,763,185,196,186,209,182","202,192,191,212,213,207,190,189,184,210,214,215,194,183,197,201,203","195,188,,,,204,211,206,205,198,208,193,181,200,199,,,,,,180,187,178","179,175,176,177,138,140,,,139,,,,,,,,169,170,,166,148,149,150,157,154","156,,,151,152,,,,171,172,158,159,,,,,,,,,,,,,,163,162,,147,168,165,164","173,160,161,155,153,145,167,146,,,174,114,113,115,116,,,491,,488,487","486,496,489,,,,118,117,119,774,,499,,777,754,,,,,104,105,,,358,499,",",,,,,,,494,,,,,,,,,,776,507,506,747,,,500,745,,,746,,749,,,,,,,500,",",,,,,775,,,,102,755,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,","85,,92,106,107,,,762,763,,118,117,119,774,,,,777,754,,,,,104,105,,,358","499,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,749,,,,,,,500,,,,,,,775",",,,102,755,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106","107,,,762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,",",,,,,,,,776,,,747,,,,745,,,746,,,,,,,,,,,,,,,,775,,,,102,90,93,94,,95","97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,,762,763,,118","117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776,,,747,",",,745,,,746,,,,,,,,,,,,,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101","114,113,115,116,,,85,,92,106,107,,,762,763,,118,117,119,774,,,,777,",",,,,104,105,,,358,,,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,,,,,,",",,,,,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,",",85,,92,106,107,,,762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358",",,,,,,,,,,,,,,,,,,,776,,,747,,,,745,,,746,,,,,,,,,,,,,,,,775,,,,102","90,93,94,,95,97,96,98,,,,,91,101,114,113,115,116,,,85,,92,106,107,,","762,763,,118,117,119,774,,,,777,,,,,,104,105,,,358,,,,,,,,114,113,115","116,,,,,,,,,776,,,747,118,117,119,745,,,746,,1053,,,,,104,105,,,358",",,,,775,,,,102,90,93,94,,95,97,96,98,,,,,91,101,,,,,,,85,,92,106,107",",,762,763,491,,488,487,486,496,489,,,,,102,90,93,94,499,95,97,96,98",",,,,91,101,114,113,115,116,,,85,,92,106,107,494,,,,,118,117,119,,504","503,507,506,,,,500,,104,105,,,358,,,,,,,,,,,,491,,488,487,486,496,489",",,,,,,,,499,,,,,,491,485,488,487,486,496,489,,,,,,,,,499,494,102,90","93,94,,95,97,96,98,,507,506,,91,101,500,,,,,494,85,,92,106,107,,,,504","503,507,506,,,491,500,488,487,486,496,489,,491,,488,487,486,496,489","499,,,,,485,,,499,,491,,488,487,486,496,489,,,,,,494,644,,499,485,,",",494,504,503,507,506,,,,500,504,503,507,506,,,,500,494,,,,,,,,,504,503","507,506,,,491,500,488,487,486,496,489,,,,,,,,,499,485,,,,,,,,485,,,",",,,,,,,,,494,,,,485,,,,,,,507,506,872,469,,500,871,,,,,,,,169,170,,166","148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,485",",,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,842,469,174",",843,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172","158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153","145,167,146,837,462,174,,838,,,,,,,,169,170,,166,148,149,150,157,154","156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165","164,173,160,161,155,153,145,167,146,465,469,174,,464,,,,,,,,169,170",",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,",",,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,729,469","174,,730,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171","172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155","153,145,167,146,556,462,174,,557,,,,,,,,169,170,,166,148,149,150,157","154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168","165,164,173,160,161,155,153,145,167,146,458,462,174,,459,,,,,,,,169","170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306",",,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,556","462,174,,557,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,",",,171,172,158,159,,,,,,,,,,,,,,163,162,,147,168,165,164,173,160,161","155,153,145,167,146,729,469,174,,730,,,,,,,,169,170,,166,148,149,150","157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147","168,165,164,173,160,161,155,153,145,167,146,727,462,174,,728,,,,,,,","169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,",",,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146","807,462,174,,808,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152",",,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160","161,155,153,145,167,146,810,469,174,,811,,,,,,,,169,170,,166,148,149","150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162",",147,168,165,164,173,160,161,155,153,145,167,146,1200,462,174,,1201",",,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172,158","159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153,145","167,146,869,462,174,,870,,,,,,,,169,170,,166,148,149,150,157,154,156",",,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164","173,160,161,155,153,145,167,146,1202,469,174,,1203,,,,,,,,169,170,,166","148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,",",163,162,,147,168,165,164,173,160,161,155,153,145,167,146,839,469,174",",840,,,,,,,,169,170,,166,148,149,150,157,154,156,,,151,152,,,,171,172","158,159,,,,,,306,,,,,,,,163,162,,147,168,165,164,173,160,161,155,153","145,167,146,1218,469,174,,1217,,,,,,,,169,170,,166,148,149,150,157,154","156,,,151,152,,,,171,172,158,159,,,,,,306,,,,,,,,163,162,,147,168,165","164,173,160,161,155,153,145,167,146,727,462,174,,728,,,,,,,,169,170",",166,148,149,150,157,154,156,,,151,152,,,,171,172,158,159,,,,,,306,",",,,,,,163,162,,147,168,165,164,173,160,161,155,153,145,167,146,,,174"],racc_action_table=arr=$$$("Array").$new(28717,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),clist=["464,521,1016,837,1236,838,992,464,464,464,515,515,1053,464,464,289,464","23,835,631,1087,1058,289,807,464,927,443,137,396,785,3,840,137,137,501","31,464,464,1089,464,464,464,464,464,1104,1105,1108,384,385,392,850,622","501,625,1092,932,1092,331,23,928,521,625,331,393,1058,927,464,464,464","464,464,464,464,464,464,464,464,464,464,464,289,1165,464,464,464,443","464,464,1200,807,464,1201,839,464,1053,928,840,9,464,31,464,932,464","464,515,464,464,464,464,464,871,464,837,464,838,992,785,871,871,871","1016,1202,31,871,871,1016,871,464,631,807,464,464,807,464,871,464,835","396,1087,835,840,835,464,1087,807,464,871,871,1203,871,871,871,871,871","1222,622,1089,839,392,850,622,1089,1104,1105,1108,384,385,1104,1105","1108,384,385,393,981,981,12,871,871,871,871,871,871,871,871,871,871","871,871,871,871,553,553,871,871,871,69,871,871,1202,1165,871,839,416","871,1165,1127,1200,735,871,1201,871,1200,871,871,1201,871,871,871,871","871,251,871,729,871,243,1203,244,641,641,729,729,729,358,358,729,729","729,871,729,1202,871,871,802,871,1202,871,729,729,729,729,729,417,871","735,802,871,14,808,729,729,246,729,729,729,729,729,1203,981,416,1127","1127,1203,1222,810,979,15,251,1222,351,576,252,17,69,243,553,244,1127","27,729,729,729,729,729,729,729,729,729,729,729,729,729,729,20,458,729","729,729,656,729,729,358,358,729,48,48,729,729,417,729,246,729,641,729","808,729,729,641,729,729,729,729,729,42,729,729,729,252,459,810,810,979","947,351,576,576,576,658,45,414,729,458,413,729,729,729,729,53,729,20","729,576,730,458,808,729,351,808,729,730,730,730,656,656,730,730,730","1220,730,808,810,979,656,810,979,459,730,1220,730,730,730,1006,48,48","727,810,979,459,730,730,216,730,730,730,730,730,947,947,947,756,229","658,658,414,414,414,413,413,413,728,923,658,402,947,19,746,402,756,730","730,730,730,730,730,730,730,730,730,730,730,730,730,746,44,730,730,730","412,730,730,1006,231,730,727,291,730,730,418,730,288,730,291,730,235","730,730,288,730,730,730,730,730,870,730,869,730,700,700,728,923,19,972","415,972,972,972,972,972,245,730,44,290,730,730,730,730,972,730,290,730","996,872,44,822,730,996,822,730,872,872,872,412,412,412,872,872,776,872","972,291,776,418,418,418,288,872,872,972,972,972,972,870,931,869,972","247,931,872,872,248,872,872,872,872,872,254,415,415,415,1022,634,1022","1022,1022,1022,1022,290,634,362,914,972,914,914,914,1022,914,634,872","872,872,872,872,872,872,872,872,872,872,872,872,872,305,43,872,872,872","1022,872,872,319,389,872,411,320,872,389,914,1022,1022,872,323,872,1022","872,872,362,872,872,872,872,872,108,872,872,872,634,5,362,108,108,108","5,335,108,108,108,287,108,872,43,336,872,872,287,872,108,872,108,108","108,744,43,1022,872,338,744,872,108,108,744,108,108,108,108,108,339","411,411,411,340,347,286,294,295,29,759,759,347,286,294,295,29,376,346","21,376,347,108,108,108,108,108,108,108,108,108,108,108,108,108,108,287","345,108,108,108,1187,108,108,345,349,108,350,1187,108,108,352,108,345","108,509,108,1187,108,108,509,108,108,108,108,108,21,108,111,108,347","286,294,295,29,111,111,111,21,353,111,111,111,108,111,357,108,108,108","108,359,108,111,108,111,111,111,377,108,366,377,108,345,368,111,111","1187,111,111,111,111,111,371,442,374,404,378,54,293,292,442,379,404","381,54,293,292,380,390,442,380,404,391,54,111,111,111,111,111,111,111","111,111,111,111,111,111,111,395,939,111,111,111,394,111,111,1090,1090","111,939,394,111,111,397,111,678,111,406,111,394,111,111,426,111,111","111,111,111,442,111,404,111,54,293,292,432,1145,434,775,1157,775,775","1157,1145,775,111,435,939,111,111,111,111,1145,111,437,111,440,465,444","939,111,454,678,111,465,465,465,1132,394,456,465,465,811,465,678,775","531,1132,457,811,466,465,465,472,811,823,823,473,811,762,762,762,762","465,465,476,465,465,465,465,465,1145,383,383,477,762,762,762,531,478","1132,1132,531,531,481,1132,482,532,762,762,16,16,762,465,465,465,465","465,465,465,465,465,465,465,465,465,465,811,483,465,465,465,493,465","465,1106,505,465,508,532,465,18,1106,532,532,465,511,465,18,465,465","1106,465,465,465,465,465,18,465,465,465,517,762,762,762,762,525,762","762,762,762,945,1190,1190,465,762,762,465,465,88,465,945,465,762,526","762,762,762,533,465,534,88,465,387,387,387,387,387,387,535,1106,88,387","387,536,561,18,387,842,387,387,387,387,387,387,387,562,563,567,945,583","387,387,387,387,387,387,387,584,587,387,945,589,594,51,51,387,387,387","387,387,387,387,387,387,387,387,387,598,387,387,387,843,387,387,387","387,387,593,843,842,607,343,608,843,593,609,842,843,343,51,51,842,619","593,623,842,387,343,624,387,626,653,387,387,363,661,387,663,387,670","679,363,387,714,842,714,714,714,684,714,363,387,689,691,693,707,387","387,387,387,712,387,387,387,387,713,843,715,722,387,387,731,593,740","842,748,343,387,749,387,387,387,750,779,387,387,841,841,841,841,841","841,782,784,790,841,841,791,792,363,841,400,841,841,841,841,841,841","841,794,796,697,804,806,841,841,841,841,841,841,841,697,1099,841,1099","1099,1099,809,1099,841,841,841,841,841,841,841,841,841,841,841,841,812","841,841,841,242,841,841,841,841,841,344,242,400,697,697,813,816,344","697,400,242,825,831,832,400,836,344,845,400,841,849,851,841,866,868","841,841,877,890,841,1197,841,1197,1197,1197,841,1197,400,893,913,894","913,913,913,841,913,897,899,902,841,841,841,841,903,841,841,841,841","905,242,906,908,841,841,912,344,925,400,933,934,841,938,841,841,841","941,913,841,841,236,236,236,236,236,236,913,649,649,236,236,649,649","649,236,401,236,236,236,236,236,236,236,8,8,8,8,8,236,236,236,236,236","236,236,946,494,236,494,494,494,965,494,236,236,236,236,236,236,236","236,236,236,236,236,968,236,236,236,969,236,236,236,236,236,978,710","401,710,710,710,983,710,494,401,986,993,995,1002,401,1003,1004,494,401","236,1005,1031,236,1032,1037,236,236,1042,1043,236,1044,236,1045,1046","1047,236,1051,401,710,1114,1052,1114,1114,1114,236,1114,1055,710,1059","236,236,236,236,1066,236,236,236,236,1071,1072,1074,1075,236,236,1076","1078,1079,401,1080,1096,236,1107,236,236,236,1110,1114,236,236,1103","1103,1103,1103,1103,1103,1111,1112,1113,1103,1103,1124,1143,1146,1103","1155,1103,1103,1103,1103,1103,1103,1103,25,1156,1161,1171,1172,1103","1103,1103,1103,1103,1103,1103,1174,1177,1103,581,581,581,581,581,1103","1103,1103,1103,1103,1103,1103,1103,1103,1103,1103,1103,1180,1103,1103","1103,1181,1103,1103,1103,1103,1103,25,25,25,25,25,25,25,25,25,25,25","1182,25,25,1183,1185,25,25,1199,1103,1204,25,1103,1206,1217,1103,1103","1218,1224,1103,1225,1103,25,1226,25,1103,25,25,1227,25,25,25,25,25,1103","25,1,,,1103,1103,1103,1103,,1103,1103,1103,1103,,,,,1103,1103,,25,,",",,1103,,1103,1103,1103,,,1103,1103,997,997,997,997,997,997,,,,997,997",",,,997,,997,997,997,997,997,997,997,373,373,373,373,373,997,997,997","997,997,997,997,,,997,,,,,447,997,997,997,997,997,997,997,997,997,997","997,997,,997,997,997,,997,997,997,997,997,447,447,447,447,447,447,447","447,447,447,447,,447,447,,,447,447,,997,,,997,,,997,997,,,997,,997,447",",447,997,447,447,,447,447,447,447,447,997,447,,,,997,997,997,997,,997","997,997,997,,,,,997,997,,447,,447,,,997,,997,997,997,,,997,997,337,337","337,337,337,337,,,,337,337,,,,337,,337,337,337,337,337,337,337,334,334","334,334,334,337,337,337,337,337,337,337,,,337,,,,,692,337,337,337,337","337,337,337,337,337,337,337,337,,337,337,337,,337,337,337,337,337,692","692,692,692,692,692,692,692,692,692,692,,692,692,,,692,692,,337,,,337",",,337,337,,,337,,337,692,,692,337,692,692,,692,692,692,692,692,337,692",",,,337,337,337,337,,337,337,337,337,,,,,337,337,,692,,,,,337,,337,337","337,,,337,337,38,38,38,38,38,38,,,,38,38,,,,38,,38,38,38,38,38,38,38",",,,,,38,38,38,38,38,38,38,,,38,,,,,453,38,38,38,38,38,38,38,38,38,38","38,38,,38,38,38,,38,38,38,38,38,453,453,453,453,453,453,453,453,453","453,453,,453,453,,,453,453,,38,,,38,,,38,38,,,38,,38,453,,453,38,453","453,,453,453,453,453,453,38,453,,,,38,38,38,38,,38,38,38,38,,,,,38,38",",453,,,,,38,,38,38,38,,,38,38,642,642,642,642,642,642,,,,642,642,,,","642,,642,642,642,642,642,642,642,,,,,,642,642,642,642,642,642,642,,","642,,,,,723,642,642,642,642,642,642,642,642,642,642,642,642,,642,642","642,,642,642,642,642,642,723,723,723,723,723,723,723,723,723,723,723",",723,723,,,723,723,,642,,,642,,,642,642,,,642,,642,723,,723,642,723","723,,723,723,723,723,723,642,723,,,,642,642,642,642,,642,642,642,642",",,,,642,642,,723,,,,,642,,642,642,642,,,642,642,1068,1068,1068,1068","1068,1068,,,,1068,1068,,,,1068,,1068,1068,1068,1068,1068,1068,1068,",",,,,1068,1068,1068,1068,1068,1068,1068,,,1068,,,,,,1068,1068,1068,1068","1068,1068,1068,1068,1068,1068,1068,1068,,1068,1068,1068,,1068,1068,1068","1068,1068,817,817,817,817,817,817,817,817,817,817,817,,817,817,,,817","817,,1068,,,1068,,,1068,1068,,,1068,,1068,817,,817,1068,817,817,,817","817,817,817,817,1068,817,,,,1068,1068,1068,1068,,1068,1068,1068,1068",",,,,1068,1068,,817,,,,,1068,,1068,1068,1068,,,1068,1068,372,372,372","372,372,372,,,,372,372,,,,372,,372,372,372,372,372,372,372,,,,,,372","372,372,372,372,372,372,,,372,,,,,,372,372,372,372,372,372,372,372,372","372,372,372,,372,372,372,,372,372,372,372,372,874,874,874,874,874,874","874,874,874,874,874,,874,874,,,874,874,,372,,,372,,,372,372,,,372,,372","874,,874,372,874,874,,874,874,874,874,874,372,874,,,,372,372,372,372",",372,372,372,372,,,,,372,372,,874,,,,,372,,372,372,372,,,372,372,973","973,973,973,973,973,,,,973,973,,,,973,,973,973,973,973,973,973,973,",",,,,973,973,973,973,973,973,973,,,973,,,,,,973,973,973,973,973,973,973","973,973,973,973,973,,973,973,973,,973,973,973,973,973,317,317,317,317","317,317,317,317,317,317,317,,317,317,,,317,317,,973,,,973,,,973,973",",,973,,973,317,,317,973,317,317,,317,317,317,317,317,973,317,,,,973","973,973,973,,973,973,973,973,,,,,973,973,,317,,,,,973,,973,973,973,",",973,973,2,2,2,2,2,2,,,,2,2,,,,2,,2,2,2,2,2,2,2,,,,,,2,2,2,2,2,2,2,",",2,,,,,,2,2,2,2,2,2,2,2,2,2,2,2,,2,2,2,,2,2,2,2,2,550,550,550,550,550","550,550,550,550,550,550,,550,550,,,550,550,,2,,,2,,,2,2,,,2,,2,550,","550,2,550,550,,550,550,550,550,550,2,550,,,,2,2,2,2,,2,2,2,2,,,,,2,2","550,550,,,,,2,,2,2,2,,,2,2,230,230,230,230,230,230,,,,230,230,,,,230",",230,230,230,230,230,230,230,,,,,,230,230,230,230,230,230,230,,,230",",,,,,230,230,230,230,230,230,230,230,230,230,230,230,,230,230,230,,230","230,230,230,230,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067,1067",",1067,1067,,,1067,1067,,230,,,230,,,230,230,,,230,,230,1067,,1067,230","1067,1067,,1067,1067,1067,1067,1067,230,1067,,,,230,230,230,230,,230","230,230,230,,,,,230,230,,1067,,,,,230,,230,230,230,,,230,230,342,342","342,342,342,342,,,,342,342,,,,342,,342,342,342,342,342,342,342,,,,,","342,342,342,342,342,342,342,,,342,,,,,,342,342,342,342,342,342,342,342","342,342,342,342,,342,342,342,,342,342,342,342,342,1034,1034,1034,1034","1034,1034,1034,1034,1034,1034,1034,,1034,1034,,,1034,1034,,342,,,342",",,342,342,,,342,,342,1034,,1034,342,1034,1034,,1034,1034,1034,1034,1034","342,1034,,,,342,342,342,342,,342,342,342,342,,,,,342,342,,1034,,,,,342",",342,342,342,,,342,342,253,253,253,253,253,253,,,,253,253,,,,253,,253","253,253,253,253,253,253,,,,,,253,253,253,253,253,253,253,,,253,,,,,","253,253,253,253,253,253,253,253,253,253,253,253,,253,253,253,,253,253","253,253,253,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,","1033,1033,,,1033,1033,,253,,,253,,,253,253,,,253,,253,1033,,1033,253","1033,1033,,1033,1033,1033,1033,1033,253,1033,,,,253,253,253,253,,253","253,253,253,,,,,253,253,,1033,,,,,253,,253,253,253,,,253,253,1013,1013","1013,1013,1013,1013,,,,1013,1013,,,,1013,,1013,1013,1013,1013,1013,1013","1013,,,,,,1013,1013,1013,1013,1013,1013,1013,,,1013,,,,,,1013,1013,1013","1013,1013,1013,1013,1013,1013,1013,1013,1013,,1013,1013,1013,,1013,1013","1013,1013,1013,1011,1011,1011,1011,1011,1011,1011,1011,1011,1011,1011",",1011,1011,,,1011,1011,,1013,,,1013,,,1013,1013,,,1013,,1013,1011,,1011","1013,1011,1011,,1011,1011,1011,1011,1011,1013,1011,,,,1013,1013,1013","1013,,1013,1013,1013,1013,,,,,1013,1013,,1011,,,,,1013,,1013,1013,1013",",,1013,1013,1098,1098,1098,1098,1098,1098,,,,1098,1098,,,,1098,,1098","1098,1098,1098,1098,1098,1098,,,,,,1098,1098,1098,1098,1098,1098,1098",",,1098,,,,,,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098,1098",",1098,1098,1098,,1098,1098,1098,1098,1098,1010,1010,1010,1010,1010,1010","1010,1010,1010,1010,1010,,1010,1010,,,1010,1010,,1098,,,1098,,,1098","1098,,,1098,,1098,1010,,1010,1098,1010,1010,,1010,1010,1010,1010,1010","1098,1010,,,,1098,1098,1098,1098,,1098,1098,1098,1098,,,,,1098,1098",",1010,,,,,1098,,1098,1098,1098,,,1098,1098,1097,1097,1097,1097,1097","1097,,,,1097,1097,,,,1097,,1097,1097,1097,1097,1097,1097,1097,,,,,,1097","1097,1097,1097,1097,1097,1097,,,1097,,,,,,1097,1097,1097,1097,1097,1097","1097,1097,1097,1097,1097,1097,,1097,1097,1097,,1097,1097,1097,1097,1097","529,529,529,529,529,529,529,529,529,529,529,,529,529,,,529,529,,1097",",,1097,,,1097,1097,,546,1097,,1097,529,,529,1097,529,529,,529,529,529","529,529,1097,529,,,,1097,1097,1097,1097,,1097,1097,1097,1097,,,546,","1097,1097,546,546,,546,546,,1097,,1097,1097,1097,,,1097,1097,1147,1147","1147,1147,1147,1147,,,,1147,1147,,,,1147,,1147,1147,1147,1147,1147,1147","1147,,,,,,1147,1147,1147,1147,1147,1147,1147,547,1115,1147,1115,1115","1115,,1115,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147",",1147,1147,1147,,1147,1147,1147,1147,1147,604,,547,,,,547,547,1115,547","547,,,,,,604,604,,1147,,,1147,,,1147,1147,,,1147,,1147,604,,604,1147","604,604,,604,604,,,604,1147,604,,,,1147,1147,1147,1147,,1147,1147,1147","1147,,,,,1147,1147,,,,,,,1147,,1147,1147,1147,,,1147,1147,621,621,621","621,621,621,,,,621,621,,,,621,,621,621,621,621,621,621,621,,,,,,621","621,621,621,621,621,621,,,621,,,,,,621,621,621,621,621,621,621,621,621","621,621,621,,621,621,621,,621,621,621,621,621,364,364,364,364,364,364","364,364,364,364,364,,364,364,,,364,364,,621,,,621,,,621,621,,,621,,621","364,,364,621,364,364,,364,364,364,364,364,621,364,,,,621,621,621,621",",621,621,621,621,,,,,621,621,,,,,,,621,,621,621,621,,,621,621,892,892","892,892,892,892,,,,892,892,,,,892,,892,892,892,892,892,892,892,,,,,","892,892,892,892,892,892,892,,,892,,,,,,892,892,892,892,892,892,892,892","892,892,892,892,,892,892,892,,892,892,892,892,892,365,365,365,365,365","365,365,365,365,365,365,,365,365,,,365,365,,892,,,892,,,892,892,,,892",",892,365,,365,892,365,365,,365,365,365,365,365,892,365,,,,892,892,892","892,,892,892,892,892,,,,,892,892,,,,,,,892,,892,892,892,,,892,892,618","618,618,618,618,618,,,,618,618,,,,618,,618,618,618,618,618,618,618,",",,,,618,618,618,618,618,618,618,,,618,,,,,,618,618,618,618,618,618,618","618,618,618,618,618,,618,618,618,,618,618,618,618,618,551,,,,,,,,,,",",,,,,551,551,,618,,,618,,,618,618,,,618,,618,551,,551,618,551,551,,551","551,,,551,618,551,,,,618,618,618,618,,618,618,618,618,,,,,618,618,,",",,,,618,,618,618,618,,,618,618,1191,1191,1191,1191,1191,1191,,,,1191","1191,,,,1191,,1191,1191,1191,1191,1191,1191,1191,,,,,,1191,1191,1191","1191,1191,1191,1191,,,1191,,,,,,1191,1191,1191,1191,1191,1191,1191,1191","1191,1191,1191,1191,,1191,1191,1191,,1191,1191,1191,1191,1191,549,549","549,549,549,549,549,549,,549,549,,,,,,549,549,,1191,,,1191,,,1191,1191",",,1191,,1191,549,,549,1191,549,549,,549,549,549,549,549,1191,549,,,","1191,1191,1191,1191,,1191,1191,1191,1191,,,,,1191,1191,,,,,,,1191,,1191","1191,1191,,,1191,1191,135,135,135,135,135,135,,,,135,135,,,,135,,135","135,135,135,135,135,135,,,,,,135,135,135,135,135,135,135,,,135,,,,,","135,135,135,135,135,135,135,135,135,135,135,135,,135,135,135,,135,135","135,135,135,548,548,548,548,548,548,548,,,548,548,,,,,,548,548,,135",",,135,,,135,135,,,135,,135,548,,548,135,548,548,,548,548,548,548,548","135,548,,,,135,135,135,135,,135,135,135,135,,,,,135,135,,,,,,,135,,135","135,135,,,135,135,218,218,218,218,218,218,,,,218,218,,,,218,,218,218","218,218,218,218,218,,,,,,218,218,218,218,218,218,218,,,218,,,,,,218","218,218,218,218,218,218,218,218,218,218,218,,218,218,218,,218,218,218","218,218,545,545,545,545,545,545,545,,,545,545,,,,,,545,545,,218,,,218",",,218,218,,,218,,218,545,,545,218,545,545,,545,545,545,545,545,218,545",",,,218,218,218,218,,218,218,218,218,,,,,218,218,,,,,,,218,,218,218,218",",,218,218,846,846,846,846,846,846,,,,846,846,,,,846,,846,846,846,846","846,846,846,,,,,,846,846,846,846,846,846,846,,,846,,,,,,846,846,846","846,846,846,846,846,846,846,846,846,,846,846,846,,846,846,846,846,846","544,544,544,544,544,544,544,,,544,544,,,,,,544,544,,846,,,846,,,846","846,,,846,,846,544,,544,846,544,544,,544,544,544,544,544,846,544,,,","846,846,846,846,,846,846,846,846,,,,,846,846,,,,,,,846,,846,846,846",",,846,846,857,857,857,857,857,857,,,,857,857,,,,857,,857,857,857,857","857,857,857,,,,,,857,857,857,857,857,857,857,,,857,,,,,,857,857,857","857,857,857,857,857,857,857,857,857,,857,857,857,,857,857,857,857,857","543,543,543,543,543,543,543,,,543,543,,,,,,543,543,,857,,,857,,,857","857,,,857,,857,543,,543,857,543,543,,543,543,543,543,543,857,543,,,","857,857,857,857,,857,857,857,857,,,,,857,857,,,,,,,857,,857,857,857",",,857,857,388,388,388,388,388,388,,,,388,388,,,,388,,388,388,388,388","388,388,388,,,,,,388,388,388,388,388,388,388,,,388,,,,,,388,388,388","388,388,388,388,388,388,388,388,388,,388,388,388,,388,388,388,388,388","542,542,542,542,542,542,542,,,542,542,,,,,,542,542,,388,,,388,,,388","388,,,388,,388,542,,542,388,542,542,,542,542,542,542,542,388,542,,,","388,388,388,388,,388,388,388,388,,,,,388,388,,,,,,,388,,388,388,388",",,388,388,991,991,991,991,991,991,,,,991,991,,,,991,,991,991,991,991","991,991,991,,,,,,991,991,991,991,991,991,991,,,991,,,,,,991,991,991","991,991,991,991,991,991,991,991,991,,991,991,991,,991,991,991,991,991","541,541,541,541,541,541,541,,,541,541,,,,,,541,541,,991,,,991,,,991","991,,,991,,991,541,,541,991,541,541,,541,541,541,541,541,991,541,,,","991,991,991,991,,991,991,991,991,,,,,991,991,,,,920,920,920,991,920","991,991,991,920,920,991,991,,920,,920,920,920,920,920,920,920,,,,,,920","920,920,920,920,920,920,,,920,,,,,,,920,,,920,920,920,920,920,920,920","920,,920,920,920,,920,920,920,920,920,540,540,540,540,540,540,540,,","540,540,,,,,,540,540,,920,,,920,,,920,920,,,920,,,540,,540,920,540,540",",540,540,540,540,540,920,540,,,,920,920,920,920,,920,920,920,920,,,",",920,920,,,,921,921,921,920,921,920,920,920,921,921,920,920,,921,,921","921,921,921,921,921,921,,,,,,921,921,921,921,921,921,921,,,921,,,,,",",921,,,921,921,921,921,921,921,921,921,,921,921,921,,921,921,921,921","921,530,530,530,530,530,530,530,530,530,530,530,,530,530,,,530,530,","921,,,921,,,921,921,,,921,,,530,,530,921,530,530,,530,530,530,530,530","921,530,,,,921,921,921,921,,921,921,921,921,,,,,921,921,,,,922,922,922","921,922,921,921,921,922,922,921,921,,922,,922,922,922,922,922,922,922",",,,,,922,922,922,922,922,922,922,,,922,,,,,,,922,,,922,922,922,922,922","922,922,922,,922,922,922,,922,922,922,922,922,538,,,,,,,,,,,,,,,,538","538,,922,,,922,,,922,922,,,922,,,538,,538,922,538,538,,538,538,,,,922",",,,,922,922,922,922,,922,922,922,922,,,,,922,922,,,,733,733,733,922","733,922,922,922,733,733,922,922,,733,,733,733,733,733,733,733,733,,",",,,733,733,733,733,733,733,733,,,733,,,,,,,733,,,733,733,733,733,733","733,733,733,,733,733,733,,733,733,733,733,733,539,,,,,,,,,,,,,,,,539","539,,733,,,733,,,733,733,,,733,,,539,,,733,539,539,,539,539,,,,733,",",,,733,733,733,733,,733,733,733,733,,,,,733,733,,,,732,732,732,733,732","733,733,733,732,732,733,733,,732,,732,732,732,732,732,732,732,,,,,,732","732,732,732,732,732,732,,,732,,,,,,,732,,,732,732,732,732,732,732,732","732,,732,732,732,,732,732,732,732,732,537,,,,,,,,,,,,,,,,537,537,,732",",,732,,,732,732,,,732,,,537,,537,732,537,537,,537,537,,,,732,,,,,732","732,732,732,,732,732,732,732,,,,,732,732,,,,,,,732,,732,732,732,,,732","732,333,333,333,333,333,,,,333,333,,,,333,,333,333,333,333,333,333,333",",,,,,333,333,333,333,333,333,333,,,333,,,,,,333,333,,333,333,333,333","333,333,333,333,333,,333,333,333,,333,333,333,333,333,,,,,,,,,,,,,,",",,,,,333,,,333,,,333,333,,,333,,333,,,,333,,,,,,,,,333,,,,,333,333,333","333,,333,333,333,333,,,,,333,333,,,,265,265,265,333,265,333,333,333","265,265,333,333,,265,,265,265,265,265,265,265,265,,,,,,265,265,265,265","265,265,265,,,265,,,,,,,265,,,265,265,265,265,265,265,265,265,,265,265","265,,265,265,265,265,265,,,,,,,,,,,,,,,,,,,,265,,,265,,,265,265,,,265",",,,,,265,,,,,,,,,265,,,,,265,265,265,265,,265,265,265,265,,,,,265,265",",,,264,264,264,265,264,265,265,265,264,264,265,265,,264,,264,264,264","264,264,264,264,,,,,,264,264,264,264,264,264,264,,,264,,,,,,,264,,,264","264,264,264,264,264,264,264,,264,264,264,,264,264,264,264,264,,,,,,",",,,,,,,,,,,,,264,,,264,,,264,264,,,264,,,,,,264,,,,,,,,,264,,,,,264","264,264,264,,264,264,264,264,,,,,264,264,,,,263,263,263,264,263,264","264,264,263,263,264,264,,263,,263,263,263,263,263,263,263,,,,,,263,263","263,263,263,263,263,,,263,,,,,,,263,,,263,263,263,263,263,263,263,263",",263,263,263,,263,263,263,263,263,,,,,,,,,,,,,,,,,,,,263,,,263,,,263","263,,,263,,,,,,263,,,,,,,,,263,,,,,263,263,263,263,,263,263,263,263",",,,,263,263,,,,262,262,262,263,262,263,263,263,262,262,263,263,,262",",262,262,262,262,262,262,262,,,,,,262,262,262,262,262,262,262,,,262",",,,,,,262,,,262,262,262,262,262,262,262,262,,262,262,262,,262,262,262","262,262,,,,,,,,,,,,,,,,,,,,262,,,262,,,262,262,,,262,,,,,,262,,,,,,",",,262,,,,,262,262,262,262,,262,262,262,262,,,,,262,262,,,,261,261,261","262,261,262,262,262,261,261,262,262,,261,,261,261,261,261,261,261,261",",,,,,261,261,261,261,261,261,261,,,261,,,,,,,261,,,261,261,261,261,261","261,261,261,,261,261,261,,261,261,261,261,261,,,,,,,,,,,,,,,,,,,,261",",,261,,,261,261,,,261,,,,,,261,,,,,,,,,261,,,,,261,261,261,261,,261","261,261,261,,,,,261,261,,,,708,708,708,261,708,261,261,261,708,708,261","261,,708,,708,708,708,708,708,708,708,,,,,,708,708,708,708,708,708,708",",,708,,,,,,,708,,,708,708,708,708,708,708,708,708,,708,708,708,,708","708,708,708,708,,,,,,,,,,,,,,,,,,,,708,,,708,,,708,708,,,708,,,,,,708",",,,,,,,,708,,,,,708,708,708,708,,708,708,708,708,,,,,708,708,,,,260","260,260,708,260,708,708,708,260,260,708,708,,260,,260,260,260,260,260","260,260,,,,,,260,260,260,260,260,260,260,,,260,,,,,,,260,,,260,260,260","260,260,260,260,260,,260,260,260,,260,260,260,260,260,,,,,,,,,,,,,,",",,,,,260,,,260,,,260,260,,,260,,,,,,260,,,,,,,,,260,,,,,260,260,260","260,,260,260,260,260,,,,,260,260,,,,694,694,694,260,694,260,260,260","694,694,260,260,,694,,694,694,694,694,694,694,694,,,,,,694,694,694,694","694,694,694,,,694,,,,,,,694,,,694,694,694,694,694,694,694,694,,694,694","694,,694,694,694,694,694,,,,,,,,,,,,,,,,,,,,694,,,694,,,694,694,,,694",",694,,,,694,,,,,,,,,694,,,,,694,694,694,694,,694,694,694,694,,,,,694","694,,,,259,259,259,694,259,694,694,694,259,259,694,694,,259,,259,259","259,259,259,259,259,,,,,,259,259,259,259,259,259,259,,,259,,,,,,,259",",,259,259,259,259,259,259,259,259,,259,259,259,,259,259,259,259,259",",,,,,,,,,,,,,,,,,,,259,,,259,,,259,259,,,259,,,,,,259,,,,,,,,,259,,",",,259,259,259,259,,259,259,259,259,,,,,259,259,,,,258,258,258,259,258","259,259,259,258,258,259,259,,258,,258,258,258,258,258,258,258,,,,,,258","258,258,258,258,258,258,,,258,,,,,,,258,,,258,258,258,258,258,258,258","258,,258,258,258,,258,258,258,258,258,,,,,,,,,,,,,,,,,,,,258,,,258,",",258,258,,,258,,,,,,258,,,,,,,,,258,,,,,258,258,258,258,,258,258,258","258,,,,,258,258,,,,257,257,257,258,257,258,258,258,257,257,258,258,","257,,257,257,257,257,257,257,257,,,,,,257,257,257,257,257,257,257,,","257,,,,,,,257,,,257,257,257,257,257,257,257,257,,257,257,257,,257,257","257,257,257,,,,,,,,,,,,,,,,,,,,257,,,257,,,257,257,,,257,,,,,,257,,",",,,,,,257,,,,,257,257,257,257,,257,257,257,257,,,,,257,257,,,,688,688","688,257,688,257,257,257,688,688,257,257,,688,,688,688,688,688,688,688","688,,,,,,688,688,688,688,688,688,688,,,688,,,,,,,688,,,688,688,688,688","688,688,688,688,,688,688,688,,688,688,688,688,688,,,,,,,,,,,,,,,,,,",",688,,,688,,,688,688,,,688,,,,,,688,,,,,,,,,688,,,,,688,688,688,688",",688,688,688,688,,,,,688,688,,,,687,687,687,688,687,688,688,688,687","687,688,688,,687,,687,687,687,687,687,687,687,,,,,,687,687,687,687,687","687,687,,,687,,,,,,,687,,,687,687,687,687,687,687,687,687,,687,687,687",",687,687,687,687,687,,,,,,,,,,,,,,,,,,,,687,,,687,,,687,687,,,687,,",",,,687,,,,,,,,,687,,,,,687,687,687,687,,687,687,687,687,,,,,687,687",",,,,,,687,,687,687,687,32,,687,687,,,,32,32,32,,,32,32,32,,32,,,,,,",",32,32,32,32,,,,,,,,,32,32,,32,32,32,32,32,,,,,,,,,,,,,,,,,,,,,,,32","32,32,32,32,32,32,32,32,32,32,32,32,32,,,32,32,32,,,32,,32,32,,,32,32",",32,,32,,32,,32,32,,32,32,32,32,32,,32,32,32,,,,,,,,,,,,,,32,,,32,32",",32,,32,683,683,683,,683,,32,,683,683,,,,683,,683,683,683,683,683,683","683,,,,,,683,683,683,683,683,683,683,,,683,,,,,,,683,,,683,683,683,683","683,683,683,683,,683,683,683,,683,683,683,683,683,,,,,,,,,,,,,,,,,,",",683,,,683,,,683,683,,,683,,,,,,683,,,,,,,,,683,,,,,683,683,683,683",",683,683,683,683,,,,,683,683,,,,682,682,682,683,682,683,683,683,682","682,683,683,,682,,682,682,682,682,682,682,682,,,,,,682,682,682,682,682","682,682,,,682,,,,,,,682,,,682,682,682,682,682,682,682,682,,682,682,682",",682,682,682,682,682,,,,,,,,,,,,,,,,,,,,682,,,682,,,682,682,,,682,,",",,,682,,,,,,,,,682,,,,,682,682,682,682,,682,682,682,682,,,,,682,682",",,,681,681,681,682,681,682,682,682,681,681,682,682,,681,,681,681,681","681,681,681,681,,,,,,681,681,681,681,681,681,681,,,681,,,,,,,681,,,681","681,681,681,681,681,681,681,681,681,681,681,,681,681,681,681,681,,,",",,,,,,,,,,,,,,,,681,,,681,,,681,681,,,681,,,,681,,681,,,681,,,,,,681",",,,,681,681,681,681,,681,681,681,681,,,,,681,681,,,,956,956,956,681","956,681,681,681,956,956,681,681,,956,,956,956,956,956,956,956,956,,",",,,956,956,956,956,956,956,956,,,956,,,,,,,956,,,956,956,956,956,956","956,956,956,,956,956,956,,956,956,956,956,956,,,,,,,,,,,,,,,,,,,,956",",,956,,,956,956,,,956,,,,,,956,,,,,,,,,956,,,,,956,956,956,956,,956","956,956,956,,,,,956,956,,,,962,962,962,956,962,956,956,956,962,962,956","956,,962,,962,962,962,962,962,962,962,,,,,,962,962,962,962,962,962,962",",,962,,,,,,,962,,,962,962,962,962,962,962,962,962,,962,962,962,,962","962,962,962,962,,,,,,,,,,,,,,,,,,,,962,,,962,,,962,962,,,962,,,,,,962",",,,,,,,,962,,,,,962,962,962,962,,962,962,962,962,,,,,962,962,,,,,,,962",",962,962,962,33,,962,962,,,,33,33,33,,,33,33,33,,33,,,,,,,,33,,33,33",",,,,,,,,33,33,,33,33,33,33,33,,,,,,,,,,,,,,,,,,,,,,,33,33,33,33,33,33","33,33,33,33,33,33,33,33,,,33,33,33,,,33,,33,33,,,33,33,,33,,33,,33,","33,33,,33,33,33,33,33,,33,,33,,,,,,,,,,,,,,33,,,33,33,,33,,33,34,34","34,,34,,33,,34,34,,,,34,,34,34,34,34,34,34,34,,,,,,34,34,34,34,34,34","34,,,34,,,,,,,34,,,34,34,34,34,34,34,34,34,34,34,34,34,,34,34,34,34","34,,,,,,,,,,,,,,,,,,,,34,,,34,,,34,34,,,34,,34,,34,,34,,,34,,,,,,34",",,,,34,34,34,34,,34,34,34,34,,,,,34,34,,,,680,680,680,34,680,34,34,34","680,680,34,34,,680,,680,680,680,680,680,680,680,,,,,,680,680,680,680","680,680,680,,,680,,,,,,,680,,,680,680,680,680,680,680,680,680,680,680","680,680,,680,680,680,680,680,,,,,,,,,,,,,,,,,,,,680,,,680,,,680,680",",,680,,680,,680,,680,,,680,,,,,,680,,,,,680,680,680,680,,680,680,680","680,,,,,680,680,,,,677,677,677,680,677,680,680,680,677,677,680,680,","677,,677,677,677,677,677,677,677,,,,,,677,677,677,677,677,677,677,,","677,,,,,,,677,,,677,677,677,677,677,677,677,677,,677,677,677,,677,677","677,677,677,,,,,,,,,,,,,,,,,,,,677,,,677,,,677,677,,,677,,,,,,677,,",",,,,,,677,,,,,677,677,677,677,,677,677,677,677,,,,,677,677,,,,,,,677",",677,677,677,,,677,677,676,676,676,676,676,,,,676,676,,,,676,,676,676","676,676,676,676,676,,,,,,676,676,676,676,676,676,676,,,676,,,,,,676","676,,676,676,676,676,676,676,676,676,676,,676,676,676,,676,676,676,676","676,,,,,,,,,,,,,,,,,,,,676,,,676,,,676,676,,,676,,676,,,,676,,,,,,,",",676,,,,,676,676,676,676,,676,676,676,676,,,,,676,676,,,,985,985,985","676,985,676,676,676,985,985,676,676,,985,,985,985,985,985,985,985,985",",,,,,985,985,985,985,985,985,985,,,985,,,,,,,985,,,985,985,985,985,985","985,985,985,,985,985,985,,985,985,985,985,985,,,,,,,,,,,,,,,,,,,,985",",,985,,,985,985,,,985,,,,,,985,,,,,,,,,985,,,,,985,985,985,985,,985","985,985,985,,,,,985,985,,,,673,673,673,985,673,985,985,985,673,673,985","985,,673,,673,673,673,673,673,673,673,,,,,,673,673,673,673,673,673,673",",,673,,,,,,,673,,,673,673,673,673,673,673,673,673,673,673,673,673,,673","673,673,673,673,,,,,,,,,,,,,,,,,,,,673,,,673,,,673,673,,,673,,673,,673",",673,,,673,,,,,,673,,,,,673,673,673,673,,673,673,673,673,,,,,673,673",",,,672,672,672,673,672,673,673,673,672,672,673,673,,672,,672,672,672","672,672,672,672,,,,,,672,672,672,672,672,672,672,,,672,,,,,,,672,,,672","672,672,672,672,672,672,672,,672,672,672,,672,672,672,672,672,,,,,,",",,,,,,,,,,,,,672,,,672,,,672,672,,,672,,,,,,672,,,,,,,,,672,,,,,672","672,672,672,,672,672,672,672,,,,,672,672,,,,990,990,990,672,990,672","672,672,990,990,672,672,,990,,990,990,990,990,990,990,990,,,,,,990,990","990,990,990,990,990,,,990,,,,,,,990,,,990,990,990,990,990,990,990,990",",990,990,990,,990,990,990,990,990,,,,,,,,,,,,,,,,,,,,990,,,990,,,990","990,,,990,,990,,,,990,,,,,,,,,990,,,,,990,990,990,990,,990,990,990,990",",,,,990,990,,,,671,671,671,990,671,990,990,990,671,671,990,990,,671",",671,671,671,671,671,671,671,,,,,,671,671,671,671,671,671,671,,,671",",,,,,,671,,,671,671,671,671,671,671,671,671,,671,671,671,,671,671,671","671,671,,,,,,,,,,,,,,,,,,,,671,,,671,,,671,671,,,671,,671,,,,671,,,",",,,,,671,,,,,671,671,671,671,,671,671,671,671,,,,,671,671,,,,,,,671",",671,671,671,,,671,671,669,669,669,669,669,,,,669,669,,,,669,,669,669","669,669,669,669,669,,,,,,669,669,669,669,669,669,669,,,669,,,,,,669","669,,669,669,669,669,669,669,669,669,669,,669,669,669,,669,669,669,669","669,,,,,,,,,,,,,,,,,,,,669,,,669,,,669,669,,,669,,669,,,,669,,,,,,,",",669,,,,,669,669,669,669,,669,669,669,669,,,,,669,669,,,,35,35,35,669","35,669,669,669,35,35,669,669,,35,,35,35,35,35,35,35,35,,,,,,35,35,35","35,35,35,35,,,35,,,,,,,35,,,35,35,35,35,35,35,35,35,35,35,35,35,,35","35,35,35,35,,,,,,,,,,,,,,,,,,,,35,,,35,,,35,35,,,35,,35,,35,,35,,,35",",,,,,35,,,,,35,35,35,35,,35,35,35,35,,,,,35,35,,,,250,250,250,35,250","35,35,35,250,250,35,35,,250,,250,250,250,250,250,250,250,,,,,,250,250","250,250,250,250,250,,,250,,,,,,,250,,,250,250,250,250,250,250,250,250",",250,250,250,,250,250,250,250,250,,,,,,,,,,,,,,,,,,,,250,,,250,,,250","250,,,250,,,,,,250,,,,,,,,,250,,,,,250,250,250,250,,250,250,250,250",",,,,250,250,,,,36,36,36,250,36,250,250,250,36,36,250,250,,36,,36,36","36,36,36,36,36,,,,,,36,36,36,36,36,36,36,,,36,,,,,,,36,,,36,36,36,36","36,36,36,36,36,36,36,36,,36,36,36,36,36,,,,,,,,,,,,,,,,,,,,36,,,36,",",36,36,,,36,,36,,36,,36,,,36,,,,,,36,,,,,36,36,36,36,,36,36,36,36,,",",,36,36,,,,638,638,638,36,638,36,36,36,638,638,36,36,,638,,638,638,638","638,638,638,638,,,,,,638,638,638,638,638,638,638,,,638,,,,,,,638,,,638","638,638,638,638,638,638,638,638,638,638,638,,638,638,638,638,638,,,",",,,,,,,,,,,,,,,,638,,,638,,,638,638,,,638,,638,,638,,638,,,638,,,,,","638,,,,,638,638,638,638,,638,638,638,638,,,,,638,638,,,,1009,1009,1009","638,1009,638,638,638,1009,1009,638,638,,1009,,1009,1009,1009,1009,1009","1009,1009,,,,,,1009,1009,1009,1009,1009,1009,1009,,,1009,,,,,,,1009",",,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,1009,,1009","1009,1009,1009,1009,,,,,,,,,,,,,,,,,,,,1009,,,1009,,,1009,1009,,,1009",",,,1009,,1009,,,1009,,,,,,1009,,,,,1009,1009,1009,1009,,1009,1009,1009","1009,,,,,1009,1009,,,,628,628,628,1009,628,1009,1009,1009,628,628,1009","1009,,628,,628,628,628,628,628,628,628,,,,,,628,628,628,628,628,628","628,,,628,,,,,,,628,,,628,628,628,628,628,628,628,628,628,628,628,628",",628,628,628,628,628,,,,,,,,,,,,,,,,,,,,628,,,628,,,628,628,,,628,,628",",628,,628,,,628,,,,,,628,,,,,628,628,628,628,,628,628,628,628,,,,,628","628,,,,627,627,627,628,627,628,628,628,627,627,628,628,,627,,627,627","627,627,627,627,627,,,,,,627,627,627,627,627,627,627,,,627,,,,,,,627",",,627,627,627,627,627,627,627,627,,627,627,627,,627,627,627,627,627",",,,,,,,,,,,,,,,,,,,627,,,627,,,627,627,,,627,,627,,,,627,,,,,,,,,627",",,,,627,627,627,627,,627,627,627,627,,,,,627,627,,,,818,818,818,627","818,627,627,627,818,818,627,627,,818,,818,818,818,818,818,818,818,,",",,,818,818,818,818,818,818,818,,,818,,,,,,,818,,,818,818,818,818,818","818,818,818,,818,818,818,,818,818,818,818,818,,,,,,,,,,,,,,,,,,,,818",",,818,,,818,818,,,818,,,,,,818,,,,,,,,,818,,,,,818,818,818,818,,818","818,818,818,,,,,818,818,,,,614,614,614,818,614,818,818,818,614,614,818","818,,614,,614,614,614,614,614,614,614,,,,,,614,614,614,614,614,614,614",",,614,,,,,,,614,,,614,614,614,614,614,614,614,614,614,614,614,614,,614","614,614,614,614,,,,,,,,,,,,,,,,,,,,614,,,614,,,614,614,,,614,,,,,,614",",,614,,,,,,614,,,,,614,614,614,614,,614,614,614,614,,,,,614,614,,,,611","611,611,614,611,614,614,614,611,611,614,614,,611,,611,611,611,611,611","611,611,,,,,,611,611,611,611,611,611,611,,,611,,,,,,,611,,,611,611,611","611,611,611,611,611,611,611,611,611,,611,611,611,611,611,,,,,,,,,,,",",,,,,,,,611,,,611,,,611,611,,,611,,611,,,,611,,,611,,,,,,611,,,,,611","611,611,611,,611,611,611,611,,,,,611,611,,,,239,239,239,611,239,611","611,611,239,239,611,611,,239,,239,239,239,239,239,239,239,,,,,,239,239","239,239,239,239,239,,,239,,,,,,,239,,,239,239,239,239,239,239,239,239",",239,239,239,,239,239,239,239,239,,,,,,,,,,,,,,,,,,,,239,,,239,,,239","239,,,239,,,,,,239,,,,,,,,,239,,,,,239,239,239,239,,239,239,239,239",",,,,239,239,239,,,605,605,605,239,605,239,239,239,605,605,239,239,,605",",605,605,605,605,605,605,605,,,,,,605,605,605,605,605,605,605,,,605",",,,,,,605,,,605,605,605,605,605,605,605,605,,605,605,605,,605,605,605","605,605,,,,,,,,,,,,,,,,,,,,605,,,605,,,605,605,,,605,,,,,,605,,,,,,",",,605,,,,,605,605,605,605,,605,605,605,605,,,,,605,605,,,,1035,1035","1035,605,1035,605,605,605,1035,1035,605,605,,1035,,1035,1035,1035,1035","1035,1035,1035,,,,,,1035,1035,1035,1035,1035,1035,1035,,,1035,,,,,,","1035,,,1035,1035,1035,1035,1035,1035,1035,1035,,1035,1035,1035,,1035","1035,1035,1035,1035,,,,,,,,,,,,,,,,,,,,1035,,,1035,,,1035,1035,,,1035",",,,,,1035,,,,,,,,,1035,,,,,1035,1035,1035,1035,,1035,1035,1035,1035",",,,,1035,1035,,,,603,603,603,1035,603,1035,1035,1035,603,603,1035,1035",",603,,603,603,603,603,603,603,603,,,,,,603,603,603,603,603,603,603,",",603,,,,,,,603,,,603,603,603,603,603,603,603,603,,603,603,603,,603,603","603,603,603,,,,,,,,,,,,,,,,,,,,603,,,603,,,603,603,,,603,,,,,,603,,",",,,,,,603,,,,,603,603,603,603,,603,603,603,603,,,,,603,603,,,,600,600","600,603,600,603,603,603,600,600,603,603,,600,,600,600,600,600,600,600","600,,,,,,600,600,600,600,600,600,600,,,600,,,,,,,600,,,600,600,600,600","600,600,600,600,,600,600,600,,600,600,600,600,600,,,,,,,,,,,,,,,,,,",",600,,,600,,,600,600,,,600,,,,,,600,,,,,,,,,600,,,,,600,600,600,600",",600,600,600,600,,,,,600,600,,,,238,238,238,600,238,600,600,600,238","238,600,600,,238,,238,238,238,238,238,238,238,,,,,,238,238,238,238,238","238,238,,,238,,,,,,,238,,,238,238,238,238,238,238,238,238,,238,238,238",",238,238,238,238,238,,,,,,,,,,,,,,,,,,,,238,,,238,,,238,238,,,238,,",",,,238,,,,,,,,,238,,,,,238,238,238,238,,238,238,238,238,,,,,238,238",",,,237,237,237,238,237,238,238,238,237,237,238,238,,237,,237,237,237","237,237,237,237,,,,,,237,237,237,237,237,237,237,,,237,,,,,,,237,,,237","237,237,237,237,237,237,237,,237,237,237,,237,237,237,237,237,,,,,,",",,,,,,,,,,,,,237,,,237,,,237,237,,,237,,,,,,237,,,,,,,,,237,,,,,237","237,237,237,,237,237,237,237,,,,,237,237,,,,590,590,590,237,590,237","237,237,590,590,237,237,,590,,590,590,590,590,590,590,590,,,,,,590,590","590,590,590,590,590,,,590,,,,,,,590,,,590,590,590,590,590,590,590,590","590,590,590,590,,590,590,590,590,590,,,,,,,,,,,,,,,,,,,,590,,,590,,","590,590,,,590,,590,,590,,590,,,590,,,,,,590,,,,,590,590,590,590,,590","590,590,590,,,,,590,590,,,,,,,590,,590,590,590,,,590,590,580,580,580","580,580,,,,580,580,,,,580,,580,580,580,580,580,580,580,,,,,,580,580","580,580,580,580,580,,,580,,,,,,580,580,580,580,580,580,580,580,580,580","580,580,,580,580,580,,580,580,580,580,580,,,,,,,,,,,,,,,,,,,,580,,,580",",,580,580,,,580,,580,,,,580,,,,,,,,,580,,,,,580,580,580,580,,580,580","580,580,,,,,580,580,,,,,,580,580,,580,580,580,,,580,580,574,574,574",",574,,,,574,574,,,,574,,574,574,574,574,574,574,574,,,,,,574,574,574","574,574,574,574,,,574,,,,,,,574,,,574,574,574,574,574,574,574,574,,574","574,574,,574,574,574,574,574,,,,,,,,,,,,,,,,,,,,574,,,574,,,574,574",",,574,,,,,,574,,,,,,,,,574,,,,,574,574,574,574,,574,574,574,574,,,,","574,574,,,,369,369,369,574,369,574,574,574,369,369,574,574,,369,,369","369,369,369,369,369,369,,,,,,369,369,369,369,369,369,369,,,369,,,,,",",369,,,369,369,369,369,369,369,369,369,,369,369,369,,369,369,369,369","369,,,,,,,,,,,,,,,,,,,,369,,,369,,,369,369,,,369,,,,,,369,,,,,,,,,369",",,,,369,369,369,369,,369,369,369,369,,,,,369,369,,,,46,46,46,369,46","369,369,369,46,46,369,369,,46,,46,46,46,46,46,46,46,,,,,,46,46,46,46","46,46,46,,,46,,,,,,,46,,,46,46,46,46,46,46,46,46,,46,46,46,,46,46,46","46,46,,,,,,,,,,,,,,,,,,,,46,,,46,,,46,46,,,46,,,,,,46,,,,,,,,,46,,,",",46,46,46,46,,46,46,46,46,,,,,46,46,,,,572,572,572,46,572,46,46,46,572","572,46,46,,572,,572,572,572,572,572,572,572,,,,,,572,572,572,572,572","572,572,,,572,,,,,,,572,,,572,572,572,572,572,572,572,572,572,572,572","572,,572,572,572,572,572,,,,,,,,,,,,,,,,,,,,572,,,572,,,572,572,,,572",",,,572,,572,,,572,,,,,,572,,,,,572,572,572,572,,572,572,572,572,,,,","572,572,,,,570,570,570,572,570,572,572,572,570,570,572,572,,570,,570","570,570,570,570,570,570,,,,,,570,570,570,570,570,570,570,,,570,,,,,",",570,,,570,570,570,570,570,570,570,570,570,570,570,570,,570,570,570","570,570,,,,,,,,,,,,,,,,,,,,570,,,570,,,570,570,,,570,,570,,570,,570",",,570,,,,,,570,,,,,570,570,570,570,,570,570,570,570,,,,,570,570,,,,47","47,47,570,47,570,570,570,47,47,570,570,,47,,47,47,47,47,47,47,47,,,",",,47,47,47,47,47,47,47,,,47,,,,,,,47,,,47,47,47,47,47,47,47,47,,47,47","47,,47,47,47,47,47,,,,,,,,,,,,,,,,,,,,47,,,47,,,47,47,,,47,,,,,,47,",",,,,,,,47,,,,,47,47,47,47,,47,47,47,47,,,,,47,47,,,,560,560,560,47,560","47,47,47,560,560,47,47,,560,,560,560,560,560,560,560,560,,,,,,560,560","560,560,560,560,560,,,560,,,,,,,560,,,560,560,560,560,560,560,560,560",",560,560,560,,560,560,560,560,560,,,,,,,,,,,,,,,,,,,,560,,,560,,,560","560,,,560,,,,,,560,,,,,,,,,560,,,,,560,560,560,560,,560,560,560,560",",,,,560,560,,,,49,49,49,560,49,560,560,560,49,49,560,560,,49,,49,49","49,49,49,49,49,,,,,,49,49,49,49,49,49,49,,,49,,,,,,,49,,,49,49,49,49","49,49,49,49,,49,49,49,,49,49,49,49,49,,,,,,,,,,,,,,,,,,,,49,,,49,,,49","49,,,49,,,,,,49,,,,,,,,,49,,,,,49,49,49,49,,49,49,49,49,,,,,49,49,,",",,,,49,,49,49,49,555,,49,49,,,,555,555,555,,,555,555,555,703,555,703","703,703,703,703,,,555,555,555,,,,703,,,,,,555,555,,555,555,555,555,555",",701,,701,701,701,701,701,703,,,,,,,,701,703,703,703,703,,,,703,,1140",",1140,1140,1140,1140,1140,555,,,,,701,,555,1140,,,,555,555,701,701,701","701,,,,701,,,,,,,,,1140,703,,,,555,555,,,,,1140,1140,,,,1140,,,,555",",,555,,283,283,283,555,283,,701,,283,283,555,,,283,,283,283,283,283","283,283,283,,,,,,283,283,283,283,283,283,283,,,283,,,,,,,283,,,283,283","283,283,283,283,283,283,,283,283,283,,283,283,283,283,283,,,,,,,,,,",",,,,,,,,,283,,,283,,,283,283,,,283,,,,,,283,,,,,,,,,283,,,,,283,283","283,283,,283,283,283,283,,,,,283,283,,,,224,224,224,283,224,283,283","283,224,224,283,283,,224,,224,224,224,224,224,224,224,,,,,,224,224,224","224,224,224,224,,,224,,,,,,,224,,,224,224,224,224,224,224,224,224,224","224,224,224,,224,224,224,224,224,,,,,,,,,,,,,,,,,,,,224,,,224,,,224","224,,,224,,224,,224,,224,,,224,,,,,,224,,,,,224,224,224,224,,224,224","224,224,,,,,224,224,,,,223,223,223,224,223,224,224,224,223,223,224,224",",223,,223,223,223,223,223,223,223,,,,,,223,223,223,223,223,223,223,",",223,,,,,,,223,,,223,223,223,223,223,223,223,223,,223,223,223,,223,223","223,223,223,,,,,,,,,,,,,,,,,,,,223,,,223,,,223,223,,,223,,,,,,223,,",",,,,,,223,,,,,223,223,223,223,,223,223,223,223,,,,,223,223,,,,50,50","50,223,50,223,223,223,50,50,223,223,,50,,50,50,50,50,50,50,50,,,,,,50","50,50,50,50,50,50,,,50,,,,,,,50,,,50,50,50,50,50,50,50,50,,50,50,50",",50,50,50,50,50,,,,,,,,,,,,,,,,,,,,50,,,50,,,50,50,,,50,,,,,,50,,,,",",,,,50,,,,,50,50,50,50,,50,50,50,50,,,,,50,50,,,,222,222,222,50,222","50,50,50,222,222,50,50,,222,,222,222,222,222,222,222,222,,,,,,222,222","222,222,222,222,222,,,222,,,,,,,222,,,222,222,222,222,222,222,222,222",",222,222,222,,222,222,222,222,222,,,,,,,,,,,,,,,,,,,,222,,,222,,,222","222,,,222,,,,,,222,,,,,,,,,222,,,,,222,222,222,222,,222,222,222,222",",,,,222,222,,,,72,72,72,222,72,222,222,222,72,72,222,222,,72,,72,72","72,72,72,72,72,,,,,,72,72,72,72,72,72,72,,,72,,,,,,,72,,,72,72,72,72","72,72,72,72,,72,72,72,,72,72,72,72,72,,,,,,,,,,,,,,,,,,,,72,,,72,,,72","72,,,72,,,,,,72,,,,,,,,,72,,,,,72,72,72,72,,72,72,72,72,,,,,72,72,,",",71,71,71,72,71,72,72,72,71,71,72,72,,71,,71,71,71,71,71,71,71,,,,,","71,71,71,71,71,71,71,,,71,,,,,,,71,,,71,71,71,71,71,71,71,71,,71,71","71,,71,71,71,71,71,,,,,,,,,,,,,,,,,,,,71,,,71,,,71,71,,,71,,,,,,71,",",,,,,,,71,,,,,71,71,71,71,,71,71,71,71,,,,,71,71,,,,436,436,436,71,436","71,71,71,436,436,71,71,,436,,436,436,436,436,436,436,436,,,,,,436,436","436,436,436,436,436,,,436,,,,,,,436,,,436,436,436,436,436,436,436,436",",436,436,436,,436,436,436,436,436,,,,,,,,,,,,,,,,,,,,436,,,436,,,436","436,,,436,,,,,,436,,,,,,,,,436,,,,,436,436,436,436,,436,436,436,436",",,,,436,436,,,,68,68,68,436,68,436,436,436,68,68,436,436,,68,,68,68","68,68,68,68,68,,,,,,68,68,68,68,68,68,68,,,68,,,,,,,68,,,68,68,68,68","68,68,68,68,68,68,68,68,,68,68,68,68,68,,,,,,,,,,,,,,,,,,,,68,,,68,",",68,68,,,68,,,,,,68,,,68,,,,,,68,,,,,68,68,68,68,,68,68,68,68,,,,,68","68,,,,407,407,407,68,407,68,68,68,407,407,68,68,,407,,407,407,407,407","407,407,407,,,,,,407,407,407,407,407,407,407,,,407,,,,,,,407,,,407,407","407,407,407,407,407,407,,407,407,407,,407,407,407,407,407,,,,,,,,,,",",,,,,,,,,407,,,407,,,407,407,,,407,,,,,,407,,,,,,,,,407,,,,,407,407","407,407,,407,407,407,407,,,,,407,407,,,,847,847,847,407,847,407,407","407,847,847,407,407,,847,,847,847,847,847,847,847,847,,,,,,847,847,847","847,847,847,847,,,847,,,,,,,847,,,847,847,847,847,847,847,847,847,,847","847,847,,847,847,847,847,847,,,,,,,,,,,,,,,,,,,,847,,,847,,,847,847",",,847,,,,,,847,,,,,,,,,847,,,,,847,847,847,847,,847,847,847,847,,,,","847,847,,,,276,276,276,847,276,847,847,847,276,276,847,847,,276,,276","276,276,276,276,276,276,,,,,,276,276,276,276,276,276,276,,,276,,,,,",",276,,,276,276,276,276,276,276,276,276,,276,276,276,,276,276,276,276","276,,,,,,,,,,,,,,,,,,,,276,,,276,,,276,276,,,276,,,,,,276,,,,,,,,,276",",,,,276,276,276,276,,276,276,276,276,,,,,276,276,,,,275,275,275,276","275,276,276,276,275,275,276,276,,275,,275,275,275,275,275,275,275,,",",,,275,275,275,275,275,275,275,,,275,,,,,,,275,,,275,275,275,275,275","275,275,275,,275,275,275,,275,275,275,275,275,,,,,,,,,,,,,,,,,,,,275",",,275,,,275,275,,,275,,,,,,275,,,,,,,,,275,,,,,275,275,275,275,,275","275,275,275,,,,,275,275,,,,67,67,67,275,67,275,275,275,67,67,275,275",",67,,67,67,67,67,67,67,67,,,,,,67,67,67,67,67,67,67,,,67,,,,,,,67,,","67,67,67,67,67,67,67,67,67,67,67,67,,67,67,67,67,67,,,,,,,,,,,,,,,,",",,,67,,,67,,,67,67,,,67,,67,,,,67,,,67,,,,,,67,,,,,67,67,67,67,,67,67","67,67,,,,,67,67,,,,,,,67,,67,67,67,,,67,67,66,66,66,66,66,,,,66,66,",",,66,,66,66,66,66,66,66,66,,,,,,66,66,66,66,66,66,66,,,66,,,,,,66,66",",66,66,66,66,66,66,66,66,66,,66,66,66,,66,66,66,66,66,,,,,,,,,,,,,,",",,,,,66,,,66,,,66,66,,,66,,66,,,,66,,,,,,,,,66,,,,,66,66,66,66,,66,66","66,66,,,,,66,66,,,,299,299,299,66,299,66,66,66,299,299,66,66,,299,,299","299,299,299,299,299,299,,,,,,299,299,299,299,299,299,299,,,299,,,,,",",299,,,299,299,299,299,299,299,299,299,,299,299,299,,299,299,299,299","299,,,,,,,,,,,,,,,,,,,,299,,,299,,,299,299,,,299,,,,,,299,,,,,,,,,299",",,,,299,299,299,299,,299,299,299,299,,,,,299,299,,,,274,274,274,299","274,299,299,299,274,274,299,299,,274,,274,274,274,274,274,274,274,,",",,,274,274,274,274,274,274,274,,,274,,,,,,,274,,,274,274,274,274,274","274,274,274,,274,274,274,,274,274,274,274,274,,,,,,,,,,,,,,,,,,,,274",",,274,,,274,274,,,274,,,,,,274,,,,,,,,,274,,,,,274,274,274,274,,274","274,274,274,,,,,274,274,,,,867,867,867,274,867,274,274,274,867,867,274","274,,867,,867,867,867,867,867,867,867,,,,,,867,867,867,867,867,867,867",",,867,,,,,,,867,,,867,867,867,867,867,867,867,867,,867,867,867,,867","867,867,867,867,,,,,,,,,,,,,,,,,,,,867,,,867,,,867,867,,,867,,,,,,867",",,,,,,,,867,,,,,867,867,867,867,,867,867,867,867,,,,,867,867,,,,24,24","24,867,24,867,867,867,24,24,867,867,,24,,24,24,24,24,24,24,24,,,,,,24","24,24,24,24,24,24,,,24,,,,,,,24,,,24,24,24,24,24,24,24,24,,24,24,24",",24,24,24,24,24,,,,,,,,,,,,,,,,,,,,24,,,24,,,24,24,,,24,,,,,,24,,,,",",,,,24,,,,,24,24,24,24,,24,24,24,24,,,,,24,24,,,,273,273,273,24,273","24,24,24,273,273,24,24,,273,,273,273,273,273,273,273,273,,,,,,273,273","273,273,273,273,273,,,273,,,,,,,273,,,273,273,273,273,273,273,273,273",",273,273,273,,273,273,273,273,273,,,,,,,,,,,,,,,,,,,,273,,,273,,,273","273,,,273,,,,,,273,,,,,,,,,273,,,,,273,273,273,273,,273,273,273,273",",,,,273,273,,,,788,788,788,273,788,273,273,273,788,788,273,273,,788",",788,788,788,788,788,788,788,,,,,,788,788,788,788,788,788,788,,,788",",,,,,,788,,,788,788,788,788,788,788,788,788,788,788,788,788,,788,788","788,788,788,,,,,,,,,,,,,,,,,,,,788,,,788,,,788,788,,,788,,788,,788,","788,,,788,,,,,,788,,,,,788,788,788,788,,788,788,788,788,,,,,788,788",",,,272,272,272,788,272,788,788,788,272,272,788,788,,272,,272,272,272","272,272,272,272,,,,,,272,272,272,272,272,272,272,,,272,,,,,,,272,,,272","272,272,272,272,272,272,272,,272,272,272,,272,272,272,272,272,,,,,,",",,,,,,,,,,,,,272,,,272,,,272,272,,,272,,,,,,272,,,,,,,,,272,,,,,272","272,272,272,,272,272,272,272,,,,,272,272,,,,875,875,875,272,875,272","272,272,875,875,272,272,,875,,875,875,875,875,875,875,875,,,,,,875,875","875,875,875,875,875,,,875,,,,,,,875,,,875,875,875,875,875,875,875,875",",875,875,875,,875,875,875,875,875,,,,,,,,,,,,,,,,,,,,875,,,875,,,875","875,,,875,,,,,,875,,,,,,,,,875,,,,,875,875,875,875,,875,875,875,875",",,,,875,875,,,,306,306,306,875,306,875,875,875,306,306,875,875,,306",",306,306,306,306,306,306,306,,,,,,306,306,306,306,306,306,306,,,306",",,,,,,306,,,306,306,306,306,306,306,306,306,306,306,306,306,,306,306","306,306,306,,,,,,,,,,,,,,,,,,,,306,,,306,,,306,306,,,306,,306,,306,","306,,,306,,,,,,306,,,,,306,306,306,306,,306,306,306,306,,,,,306,306",",,,888,888,888,306,888,306,306,306,888,888,306,306,,888,,888,888,888","888,888,888,888,,,,,,888,888,888,888,888,888,888,,,888,,,,,,,888,,,888","888,888,888,888,888,888,888,,888,888,888,,888,888,888,888,888,,,,,,",",,,,,,,,,,,,,888,,,888,,,888,888,,,888,,,,,,888,,,,,,,,,888,,,,,888","888,888,888,,888,888,888,888,,,,,888,888,,,,889,889,889,888,889,888","888,888,889,889,888,888,,889,,889,889,889,889,889,889,889,,,,,,889,889","889,889,889,889,889,,,889,,,,,,,889,,,889,889,889,889,889,889,889,889",",889,889,889,,889,889,889,889,889,,,,,,,,,,,,,,,,,,,,889,,,889,,,889","889,,,889,,,,,,889,,,,,,,,,889,,,,,889,889,889,889,,889,889,889,889",",,,,889,889,,,,307,307,307,889,307,889,889,889,307,307,889,889,,307",",307,307,307,307,307,307,307,,,,,,307,307,307,307,307,307,307,,,307",",,,,,,307,,,307,307,307,307,307,307,307,307,307,307,307,307,,307,307","307,307,307,,,,,,,,,,,,,,,,,,,,307,,,307,,,307,307,,,307,,307,,307,","307,,,307,,,,,,307,,,,,307,307,307,307,,307,307,307,307,,,,,307,307",",,,315,315,315,307,315,307,307,307,315,315,307,307,,315,,315,315,315","315,315,315,315,,,,,,315,315,315,315,315,315,315,,,315,,,,,,,315,,,315","315,315,315,315,315,315,315,315,315,315,315,,315,315,315,315,315,,,",",,,,,,,,,,,,,,,,315,,,315,,,315,315,,,315,,315,,315,,315,,,315,,,,,","315,,,,,315,315,315,315,,315,315,315,315,,,,,315,315,315,,,271,271,271","315,271,315,315,315,271,271,315,315,,271,,271,271,271,271,271,271,271",",,,,,271,271,271,271,271,271,271,,,271,,,,,,,271,,,271,271,271,271,271","271,271,271,,271,271,271,,271,271,271,271,271,,,,,,,,,,,,,,,,,,,,271",",,271,,,271,271,,,271,,,,,,271,,,,,,,,,271,,,,,271,271,271,271,,271","271,271,271,,,,,271,271,,,,270,270,270,271,270,271,271,271,270,270,271","271,,270,,270,270,270,270,270,270,270,,,,,,270,270,270,270,270,270,270",",,270,,,,,,,270,,,270,270,270,270,270,270,270,270,,270,270,270,,270","270,270,270,270,,,,,,,,,,,,,,,,,,,,270,,,270,,,270,270,,,270,,,,,,270",",,,,,,,,270,,,,,270,270,270,270,,270,270,270,270,,,,,270,270,,,,269","269,269,270,269,270,270,270,269,269,270,270,,269,,269,269,269,269,269","269,269,,,,,,269,269,269,269,269,269,269,,,269,,,,,,,269,,,269,269,269","269,269,269,269,269,,269,269,269,,269,269,269,269,269,,,,,,,,,,,,,,",",,,,,269,,,269,,,269,269,,,269,,,,,,269,,,,,,,,,269,,,,,269,269,269","269,,269,269,269,269,,,,,269,269,,,,322,322,322,269,322,269,269,269","322,322,269,269,,322,,322,322,322,322,322,322,322,,,,,,322,322,322,322","322,322,322,,,322,,,,,,,322,,,322,322,322,322,322,322,322,322,,322,322","322,,322,322,322,322,322,,,,,,,,,,,,,,,,,,,,322,,,322,,,322,322,,,322",",,,,,322,,,,,,,,,322,,,,,322,322,322,322,,322,322,322,322,,,,,322,322",",,,324,324,324,322,324,322,322,322,324,324,322,322,,324,,324,324,324","324,324,324,324,,,,,,324,324,324,324,324,324,324,,,324,,,,,,,324,,,324","324,324,324,324,324,324,324,,324,324,324,,324,324,324,324,324,,,,,,",",,,,,,,,,,,,,324,,,324,,,324,324,,,324,,,,,,324,,,,,,,,,324,,,,,324","324,324,324,,324,324,324,324,,,,,324,324,,,,327,327,327,324,327,324","324,324,327,327,324,324,,327,,327,327,327,327,327,327,327,,,,,,327,327","327,327,327,327,327,,,327,,,,,,,327,,,327,327,327,327,327,327,327,327",",327,327,327,,327,327,327,327,327,,,,,,,,,,,,,,,,,,,,327,,,327,,,327","327,,,327,,,,,,327,,,,,,,,,327,,,,,327,327,327,327,,327,327,327,327",",,,,327,327,,,,328,328,328,327,328,327,327,327,328,328,327,327,,328",",328,328,328,328,328,328,328,,,,,,328,328,328,328,328,328,328,,,328",",,,,,,328,,,328,328,328,328,328,328,328,328,,328,328,328,,328,328,328","328,328,,,,,,,,,,,,,,,,,,,,328,,,328,,,328,328,,,328,,,,,,328,,,,,,",",,328,,,,,328,328,328,328,,328,328,328,328,,,,,328,328,,,,268,268,268","328,268,328,328,328,268,268,328,328,,268,,268,268,268,268,268,268,268",",,,,,268,268,268,268,268,268,268,,,268,,,,,,,268,,,268,268,268,268,268","268,268,268,,268,268,268,,268,268,268,268,268,,,,,,,,,,,,,,,,,,,,268",",,268,,,268,268,,,268,,,,,,268,,,,,,,,,268,,,,,268,268,268,268,,268","268,268,268,,,,,268,268,,,,267,267,267,268,267,268,268,268,267,267,268","268,,267,,267,267,267,267,267,267,267,,,,,,267,267,267,267,267,267,267",",,267,,,,,,,267,,,267,267,267,267,267,267,267,267,,267,267,267,,267","267,267,267,267,,,,,,,,,,,,,,,,,,,,267,,,267,,,267,267,,,267,,,,,,267",",,,,,,,,267,,,,,267,267,267,267,,267,267,267,267,,,,,267,267,,,,266","266,266,267,266,267,267,267,266,266,267,267,,266,,266,266,266,266,266","266,266,,,,,,266,266,266,266,266,266,266,,,266,,,,,,,266,,,266,266,266","266,266,266,266,266,,266,266,266,,266,266,266,266,266,,,,,,,,,,,,,,",",,,,,266,,,266,,,266,266,,,266,,,,,,266,,,,,,,,,266,,,,,266,266,266","266,,266,266,266,266,,,,,266,266,,,,917,917,917,266,917,266,266,266","917,917,266,266,,917,,917,917,917,917,917,917,917,,,,,,917,917,917,917","917,917,917,,,917,,,,,,,917,,,917,917,917,917,917,917,917,917,,917,917","917,,917,917,917,917,917,,,,,,,,,,,,,,,,,,,,917,,,917,,,917,917,,,917",",,,,,917,,,,,,,,,917,,,,,917,917,917,917,,917,917,917,917,,,,,917,917",",,,918,918,918,917,918,917,917,917,918,918,917,917,,918,,918,918,918","918,918,918,918,,,,,,918,918,918,918,918,918,918,,,918,,,,,,,918,,,918","918,918,918,918,918,918,918,,918,918,918,,918,918,918,918,918,,,,,,",",,,,,,,,,,,,,918,,,918,,,918,918,,,918,,,,,,918,,,,,,,,,918,,,,,918","918,918,918,,918,918,918,918,,,,,918,918,,,,919,919,919,918,919,918","918,918,919,919,918,918,,919,,919,919,919,919,919,919,919,,,,,,919,919","919,919,919,919,919,,,919,,,,,,,919,,,919,919,919,919,919,919,919,919",",919,919,919,,919,919,919,919,919,,,,,,,,,,,,,,,,,,,,919,,,919,,,919","919,,,919,,,,,,919,,,,,,,,,919,,,,,919,919,919,919,,919,919,919,919",",,,,919,919,,,,497,497,497,919,497,919,919,919,497,497,919,919,,497",",497,497,497,497,497,497,497,,,,,,497,497,497,497,497,497,497,,,497",",,,,,,497,,,497,497,497,497,497,497,497,497,,497,497,497,,497,497,497","497,497,,,,,,,,,,,,,,,,,,,,497,,,497,,,497,497,,,497,,,,,,497,,,,,,",",,497,,,,,497,497,497,497,,497,497,497,497,,,,,497,497,,,,,,,497,,497","497,497,,,497,497,133,133,133,133,133,,,,133,133,,,,133,,133,133,133","133,133,133,133,,,,,,133,133,133,133,133,133,133,,,133,,,,,,133,133",",133,133,133,133,133,133,133,133,133,,133,133,133,,133,133,133,133,133",",,,,,,,,,,,,,,,,,,,133,,,133,,,133,133,,,133,,133,,,,133,,,,,,,,,133",",,,,133,133,133,133,,133,133,133,133,,,,,133,133,,,,132,132,132,133","132,133,133,133,132,132,133,133,,132,,132,132,132,132,132,132,132,,",",,,132,132,132,132,132,132,132,,,132,,,,,,,132,,,132,132,132,132,132","132,132,132,,132,132,132,,132,132,132,132,132,,,,,,,,,,,,,,,,,,,,132",",,132,,,132,132,,,132,,,,,,132,,,,,,,,,132,,,,,132,132,132,132,,132","132,132,132,,,,,132,132,,,,131,131,131,132,131,132,132,132,131,131,132","132,,131,,131,131,131,131,131,131,131,,,,,,131,131,131,131,131,131,131",",,131,,,,,,,131,,,131,131,131,131,131,131,131,131,,131,131,131,,131","131,131,131,131,,,,,,,,,,,,,,,,,,,,131,,,131,,,131,131,,,131,,,,,,131",",,,,,,,,131,,,,,131,131,131,131,,131,131,131,131,,,,,131,131,,,,130","130,130,131,130,131,131,131,130,130,131,131,,130,,130,130,130,130,130","130,130,,,,,,130,130,130,130,130,130,130,,,130,,,,,,,130,,,130,130,130","130,130,130,130,130,,130,130,130,,130,130,130,130,130,,,,,,,,,,,,,,",",,,,,130,,,130,,,130,130,,,130,,,,,,130,,,,,,,,,130,,,,,130,130,130","130,,130,130,130,130,,,,,130,130,,,,1149,1149,1149,130,1149,130,130","130,1149,1149,130,130,,1149,,1149,1149,1149,1149,1149,1149,1149,,,,",",1149,1149,1149,1149,1149,1149,1149,,,1149,,,,,,,1149,,,1149,1149,1149","1149,1149,1149,1149,1149,,1149,1149,1149,,1149,1149,1149,1149,1149,",",,,,,,,,,,,,,,,,,,1149,,,1149,,,1149,1149,,,1149,,,,,,1149,,,,,,,,,1149",",,,,1149,1149,1149,1149,,1149,1149,1149,1149,,,,,1149,1149,,,,1150,1150","1150,1149,1150,1149,1149,1149,1150,1150,1149,1149,,1150,,1150,1150,1150","1150,1150,1150,1150,,,,,,1150,1150,1150,1150,1150,1150,1150,,,1150,",",,,,,1150,,,1150,1150,1150,1150,1150,1150,1150,1150,,1150,1150,1150",",1150,1150,1150,1150,1150,,,,,,,,,,,,,,,,,,,,1150,,,1150,,,1150,1150",",,1150,,,,,,1150,,,,,,,,,1150,,,,,1150,1150,1150,1150,,1150,1150,1150","1150,,,,,1150,1150,,,,52,52,52,1150,52,1150,1150,1150,52,52,1150,1150",",52,,52,52,52,52,52,52,52,,,,,,52,52,52,52,52,52,52,,,52,,,,,,,52,,","52,52,52,52,52,52,52,52,,52,52,52,,52,52,52,52,52,,,,,,,,,,,,,,,,,,",",52,,,52,,,52,52,,,52,,,,,,52,,,,,,,,,52,,,,,52,52,52,52,,52,52,52,52",",,,,52,52,,,,129,129,129,52,129,52,52,52,129,129,52,52,,129,,129,129","129,129,129,129,129,,,,,,129,129,129,129,129,129,129,,,129,,,,,,,129",",,129,129,129,129,129,129,129,129,,129,129,129,,129,129,129,129,129",",,,,,,,,,,,,,,,,,,,129,,,129,,,129,129,,,129,,,,,,129,,,,,,,,,129,,",",,129,129,129,129,,129,129,129,129,,,,,129,129,,,,,,,129,,129,129,129",",,129,129,124,124,124,124,124,,,,124,124,,,,124,,124,124,124,124,124","124,124,,,,,,124,124,124,124,124,124,124,,,124,,,,,,124,124,124,124","124,124,124,124,124,124,124,124,,124,124,124,,124,124,124,124,124,,",",,,,,,,,,,,,,,,,,124,,,124,,,124,124,,,124,,124,,,,124,,,,,,,,,124,",",,,124,124,124,124,,124,124,124,124,,,,,124,124,,,,,,124,124,,124,124","124,,,124,124,1162,1162,1162,,1162,,,,1162,1162,,,,1162,,1162,1162,1162","1162,1162,1162,1162,,,,,,1162,1162,1162,1162,1162,1162,1162,,,1162,",",,,,,1162,,,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162,1162",",1162,1162,1162,1162,1162,,,,,,,,,,,,,,,,,,,,1162,,,1162,,,1162,1162",",,1162,,1162,,1162,,1162,,,1162,,,,,,1162,,,,,1162,1162,1162,1162,,1162","1162,1162,1162,,,,,1162,1162,,,,471,471,471,1162,471,1162,1162,1162","471,471,1162,1162,,471,,471,471,471,471,471,471,471,,,,,,471,471,471","471,471,471,471,,,471,,,,,,,471,,,471,471,471,471,471,471,471,471,,471","471,471,,471,471,471,471,471,,,,,,,,,,,,,,,,,,,,471,,,471,,,471,471",",,471,,,,,,471,,,,,,,,,471,,,,,471,471,471,471,,471,471,471,471,,,,","471,471,,,,277,277,277,471,277,471,471,471,277,277,471,471,,277,,277","277,277,277,277,277,277,,,,,,277,277,277,277,277,277,277,,,277,,,,,",",277,,,277,277,277,277,277,277,277,277,,277,277,277,,277,277,277,277","277,,,,,,,,,,,,,,,,,,,,277,,,277,,,277,277,,,277,,,,,,277,,,,,,,,,277",",,,,277,277,277,277,,277,277,277,277,,,,,277,277,,,,,,,277,,277,277","277,470,,277,277,,,,470,470,470,,,470,470,470,,470,,,,,,,,470,470,470","470,470,,,,,,,,470,470,,470,470,470,470,470,,,,,,,,,,,,,,,,,,,,,,,470","470,470,470,470,470,470,470,470,470,470,470,470,470,,,470,470,470,,","470,,,470,,,470,470,,470,,470,,470,,470,470,,470,470,470,470,470,,470","470,470,,,,,,,,,,,,,,470,,,470,470,470,470,,470,469,470,,,,,470,469","469,469,,,469,469,469,,469,,,,,,,,469,469,469,469,469,,,,951,951,951","951,469,469,,469,469,469,469,469,,,,,951,951,951,,,,,,,,,,,951,951,",",951,469,469,469,469,469,469,469,469,469,469,469,469,469,469,,,469,469","469,,,469,,,469,,,469,469,,469,,469,,469,,469,469,,469,469,469,469,469",",469,469,469,,951,951,951,951,,951,951,951,951,,,,469,951,951,469,469","469,469,,469,951,469,951,951,951,460,469,7,7,7,7,7,460,460,460,7,7,460","460,460,7,460,7,7,7,7,7,7,7,460,460,460,460,,7,7,7,7,7,7,7,460,460,7","460,460,460,460,460,7,7,7,7,7,7,7,7,7,7,7,7,,7,7,7,,7,7,7,7,7,460,460","460,460,460,460,460,460,460,460,460,460,460,460,,,460,460,460,7,,460","7,460,460,7,7,460,460,7,460,7,460,,460,7,460,460,,460,460,460,460,460","7,460,460,460,,7,7,7,7,,7,7,7,7,,,,460,7,7,460,460,,460,,460,7,,7,7","7,,460,7,7,75,75,75,,75,,,,75,75,,,,75,,75,75,75,75,75,75,75,,,,,,75","75,75,75,75,75,75,,,75,,,,,,,75,,,75,75,75,75,75,75,75,75,,75,75,75",",75,75,75,75,75,,,,,,,,,,,,,,,,,,,,75,,,75,,,75,75,,,75,,,,,,75,,,,",",,,,75,,,,,75,75,75,75,,75,75,75,75,,,,,75,75,75,,,,,75,75,,75,75,75","64,,75,75,,,,64,64,64,,,64,64,64,,64,,,,,,,,64,,64,64,64,,,,,,,,64,64",",64,64,64,64,64,,,,,,,,,,,,,,,,,,,,,,,64,64,64,64,64,64,64,64,64,64","64,64,64,64,,,64,64,64,,,64,,,64,,,64,64,,64,,64,,64,,64,64,,64,64,64","64,64,,64,,64,,,,,,,,,,,,,,64,,,64,64,64,64,,64,,64,,278,278,278,64","278,,,,278,278,,,,278,,278,278,278,278,278,278,278,,,,,,278,278,278","278,278,278,278,,,278,,,,,,,278,,,278,278,278,278,278,278,278,278,,278","278,278,,278,278,278,278,278,,,,,,,,,,,,,,,,,,,,278,,,278,,,278,278",",,278,,,,,,278,,,,,,,,,278,,,,,278,278,278,278,,278,278,278,278,,,,","278,278,,,,221,221,221,278,221,278,278,278,221,221,278,278,,221,,221","221,221,221,221,221,221,,,,,,221,221,221,221,221,221,221,,,221,,,,,",",221,,,221,221,221,221,221,221,221,221,,221,221,221,,221,221,221,221","221,,,,,,,,,,,,,,,,,,,,221,,,221,,,221,221,,,221,,,,,,221,,,,,,,,,221",",,,,221,221,221,221,,221,221,221,221,,,,,221,221,,,,220,220,220,221","220,221,221,221,220,220,221,221,,220,,220,220,220,220,220,220,220,,",",,,220,220,220,220,220,220,220,,,220,,,,,,,220,,,220,220,220,220,220","220,220,220,,220,220,220,,220,220,220,220,220,,,,,,,,,,,,,,,,,,,,220",",,220,,,220,220,,,220,,220,,,,220,,,,,,,,,220,,,,,220,220,220,220,,220","220,220,220,,,,,220,220,,,,800,800,800,220,800,220,220,220,800,800,220","220,,800,,800,800,800,800,800,800,800,,,,,,800,800,800,800,800,800,800",",,800,,,,,,,800,,,800,800,800,800,800,800,800,800,,800,800,800,,800","800,800,800,800,,,,,,,,,,,,,,,,,,,,800,,,800,,,800,800,,,800,,,,,,800",",,,,,,,,800,,,,,800,800,800,800,,800,800,800,800,,,,,800,800,,,,797","797,797,800,797,800,800,800,797,797,800,800,,797,,797,797,797,797,797","797,797,,,,,,797,797,797,797,797,797,797,,,797,,,,,,,797,,,797,797,797","797,797,797,797,797,,797,797,797,,797,797,797,797,797,,,,,,,,,,,,,,",",,,,,797,,,797,,,797,797,,,797,,,,,,797,,,,,,,,,797,,,,,797,797,797","797,,797,797,797,797,,,,,797,797,,,,386,386,386,797,386,797,797,797","386,386,797,797,,386,,386,386,386,386,386,386,386,,,,,,386,386,386,386","386,386,386,,,386,,,,,,,386,,,386,386,386,386,386,386,386,386,,386,386","386,,386,386,386,386,386,,,,,,,,,,,,,,,,,,,,386,,,386,,,386,386,,,386",",,,,,386,,,,,,,,,386,,,,,386,386,386,386,,386,386,386,386,,,,,386,386",",,,524,524,524,386,524,386,386,386,524,524,386,386,,524,,524,524,524","524,524,524,524,,,,,,524,524,524,524,524,524,524,,,524,,,,,,,524,,,524","524,524,524,524,524,524,524,,524,524,524,,524,524,524,524,524,,,,,,",",,,,,,,,,,,,,524,,,524,,,524,524,,,524,,,,,,524,,,,,,,,,524,,,,,524","524,524,524,,524,524,524,524,,,,,524,524,,,,523,523,523,524,523,524","524,524,523,523,524,524,,523,,523,523,523,523,523,523,523,,,,,,523,523","523,523,523,523,523,,,523,,,,,,,523,,,523,523,523,523,523,523,523,523",",523,523,523,,523,523,523,523,523,,,,,,,,,,,,,,,,,,,,523,,,523,,,523","523,,,523,,,,,,523,,,,,,,,,523,,,,,523,523,523,523,,523,523,523,523",",,,,523,523,,,,522,522,522,523,522,523,523,523,522,522,523,523,,522",",522,522,522,522,522,522,522,,,,,,522,522,522,522,522,522,522,,,522",",,,,,,522,,,522,522,522,522,522,522,522,522,,522,522,522,,522,522,522","522,522,,,,,,,,,,,,,,,,,,,,522,,,522,,,522,522,,,522,,,,,,522,,,,,,",",,522,,,,,522,522,522,522,,522,522,522,522,,,,,522,522,,,,520,520,520","522,520,522,522,522,520,520,522,522,,520,,520,520,520,520,520,520,520",",,,,,520,520,520,520,520,520,520,,,520,,,,,,,520,,,520,520,520,520,520","520,520,520,520,520,520,520,,520,520,520,520,520,,,,,,,,,,,,,,,,,,,","520,,,520,,,520,520,,,520,,520,,520,,520,,,520,,,,,,520,,,,,520,520","520,520,,520,520,520,520,,,,,520,520,,,,219,219,219,520,219,520,520","520,219,219,520,520,,219,,219,219,219,219,219,219,219,,,,,,219,219,219","219,219,219,219,,,219,,,,,,,219,,,219,219,219,219,219,219,219,219,,219","219,219,,219,219,219,219,219,,,,,,,,,,,,,,,,,,,,219,,,219,,,219,219",",,219,,219,,,,219,,,,,,,,,219,,,,,219,219,219,219,,219,219,219,219,",",,,219,219,,,,510,510,510,219,510,219,219,219,510,510,219,219,,510,","510,510,510,510,510,510,510,,,,,,510,510,510,510,510,510,510,,,510,",",,,,,510,,,510,510,510,510,510,510,510,510,,510,510,510,,510,510,510","510,510,,,,,,,,,,,,,,,,,,,,510,,,510,,,510,510,,,510,,,,,,510,,,,,,",",,510,,,,,510,510,510,510,,510,510,510,510,,,,,510,510,,,,1017,1017","1017,510,1017,510,510,510,1017,1017,510,510,,1017,,1017,1017,1017,1017","1017,1017,1017,,,,,,1017,1017,1017,1017,1017,1017,1017,,,1017,,,,,,","1017,,,1017,1017,1017,1017,1017,1017,1017,1017,,1017,1017,1017,,1017","1017,,,1017,,,,,,,,,,,,,,,,,,,,1017,,,1017,,,1017,1017,,,1017,,,,,,",",,,,,,,,,,,,,1017,1017,1017,1017,,1017,1017,1017,1017,,,,,1017,1017",",,,1081,1081,1081,1017,1081,1017,1017,1017,1081,1081,,,,1081,,1081,1081","1081,1081,1081,1081,1081,,,,,,1081,1081,1081,1081,1081,1081,1081,,,1081",",,,,,,1081,,,1081,1081,1081,1081,1081,1081,1081,1081,,1081,1081,1081",",1081,1081,,,1081,,,,,,,,,,,,,,,,,,,,1081,,,1081,,,1081,1081,,,1081",",,,,,,,,,,,,,,,,,,,1081,1081,1081,1081,,1081,1081,1081,1081,,,,,1081","1081,,,,341,341,341,1081,341,1081,1081,1081,341,341,,,,341,,341,341","341,341,341,341,341,,,,,,341,341,341,341,341,341,341,,,341,,,,,,,341",",,341,341,341,341,341,341,341,341,,341,341,341,,341,341,,,341,,,,,,",",,,,,,,,,,,,,341,,,341,,,341,341,,,341,,,1214,,1214,1214,1214,1214,1214",",,,,,,,,1214,,341,341,341,341,,341,341,341,341,,,,,341,341,,,,341,,1214","341,,341,341,341,588,588,588,,588,1214,1214,,588,588,1214,,,588,,588","588,588,588,588,588,588,,,,,,588,588,588,588,588,588,588,,,588,,,,,",",588,,,588,588,588,588,588,588,588,588,,588,588,588,,588,588,,,588,",",,,,,,,,,,,,,,,,,,588,,,588,,,588,588,,,588,,,,,,,,,,,,,,,,,,,,588,588","588,588,,588,588,588,588,,,,,588,588,,,,40,40,40,588,40,588,588,588","40,40,,,,40,,40,40,40,40,40,40,40,,,,,,40,40,40,40,40,40,40,,,40,,,",",,,40,,,40,40,40,40,40,40,40,40,,40,40,40,,40,40,,,40,,,,,,,,,,,,,,",",,,,,40,,,40,,,40,40,,,40,,,1210,,1210,1210,1210,1210,1210,,,,,,,,,1210",",40,40,40,40,,40,40,40,40,,,,,40,40,,,,40,,1210,40,,40,40,40,803,803","803,,803,1210,1210,,803,803,1210,,,803,,803,803,803,803,803,803,803",",,,,,803,803,803,803,803,803,803,,,803,,,,,,,803,,,803,803,803,803,803","803,803,803,,803,803,803,,803,803,,,803,,,,,,,,,,,,,,,,,,,,803,,,803",",,803,803,,,803,,,,,,,,,,,,,,,,,,,,803,803,803,803,,803,803,803,803",",,,,803,803,,,,360,360,360,803,360,803,803,803,360,360,,,,360,,360,360","360,360,360,360,360,,,,,,360,360,360,360,360,360,360,,,360,,,,,,,360",",,360,360,360,360,360,360,360,360,,360,360,360,,360,360,,,360,,,,,,",",,,,,,,,,,,,,360,,,360,,,360,360,,,360,,,,,,,,,,,,,,,,,,,,360,360,360","360,,360,360,360,360,,,,,360,360,,,,1144,1144,1144,360,1144,360,360","360,1144,1144,,,,1144,,1144,1144,1144,1144,1144,1144,1144,,,,,,1144","1144,1144,1144,1144,1144,1144,,,1144,,,,,,,1144,,,1144,1144,1144,1144","1144,1144,1144,1144,,1144,1144,1144,,1144,1144,,,1144,,,,,,,,,,,,,,",",,,,,1144,,,1144,,,1144,1144,,,1144,,,,,,,,,,,,,,,,,,,,1144,1144,1144","1144,,1144,1144,1144,1144,,,,,1144,1144,,,,77,77,77,1144,77,1144,1144","1144,77,77,,,,77,,77,77,77,77,77,77,77,,,,,,77,77,77,77,77,77,77,,,77",",,,,,,77,,,77,77,77,77,77,77,77,77,,77,77,77,,77,77,,,77,,,,,,,,,,,",",,,,,77,,,77,,,77,,,77,77,,,77,,,,,,,,,,,,,,,,,,,,77,77,77,77,,77,77","77,77,,,,,77,77,,,,814,814,814,77,814,77,77,77,814,814,,,,814,,814,814","814,814,814,814,814,,,,,,814,814,814,814,814,814,814,,,814,,,,,,,814",",,814,814,814,814,814,814,814,814,,814,814,814,,814,814,,,814,,,,,,",",,,,,,,,,,,,,814,,,814,,,814,814,,,814,,,,,,,,,,,,,,,,,,,,814,814,814","814,,814,814,814,814,,,,,814,814,,,,597,597,597,814,597,814,814,814","597,597,,,,597,,597,597,597,597,597,597,597,,,,,,597,597,597,597,597","597,597,,,597,,,,,,,597,,,597,597,597,597,597,597,597,597,,597,597,597",",597,597,,,597,,,,,,,,,,,,,,,,,,,,597,,,597,,,597,597,,,597,,,,,,,,",",,,,,,,,,,,597,597,597,597,,597,597,597,597,,,,,597,597,,,,39,39,39","597,39,597,597,597,39,39,,,,39,,39,39,39,39,39,39,39,,,,,,39,39,39,39","39,39,39,,,39,,,,,,,39,,,39,39,39,39,39,39,39,39,,39,39,39,,39,39,,","39,,,,,,,,,,,,,,,,,,,,39,,,39,,,39,39,,,39,,39,,,,,,,,,,,,,,,,,,39,39","39,39,,39,39,39,39,,,,,39,39,,,,76,76,76,39,76,39,39,39,76,76,,,,76",",76,76,76,76,76,76,76,,,,,,76,76,76,76,76,76,76,,,76,,,,,,,76,,,76,76","76,76,76,76,76,76,,76,76,76,,76,76,,,76,,,,,,,,,,,,,,,,,,,,76,,,76,",",76,76,,,76,,76,,,,,,,,,,,,,,,,,,76,76,76,76,,76,76,76,76,,,,,76,76",",,,78,78,78,76,78,76,76,76,78,78,,,,78,,78,78,78,78,78,78,78,,,,,,78","78,78,78,78,78,78,,,78,,,,,,,78,,,78,78,78,78,78,78,78,78,,78,78,78",",78,78,,,78,,,,,,,,,,,,,,,,,,,,78,,,78,,,78,78,,,78,,,,,,,,,,,,,,,,",",,,78,78,78,78,,78,78,78,78,,,,,78,78,,,,,,,78,,78,78,78,10,10,10,10","10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,,,,10,10","10,10,10,10,10,10,10,10,,,,,,10,10,10,10,10,10,10,10,10,10,,10,,,,,",",,10,10,,10,10,10,10,10,10,10,,,10,10,,,,10,10,10,10,,,,,,,,,,,,,,10","10,,10,10,10,10,10,10,10,10,10,10,10,10,,,10,10,,,,,,,,,,,,,,10,427","427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427","427,427,427,427,427,427,,,,427,427,427,427,427,427,427,427,427,427,",",,,,427,427,427,427,427,427,427,427,427,,,427,,,,,,,,427,427,,427,427","427,427,427,427,427,,,427,427,,,,427,427,427,427,,,,,,,,,,,,,,427,427",",427,427,427,427,427,427,427,427,427,427,427,427,,,427,427,,,,,,,,,",",,,,427,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667","667,667,667,667,667,667,667,667,667,,,,667,667,667,667,667,667,667,667","667,667,,,,,,667,667,667,667,667,667,667,667,667,,,667,,,,,,,,667,667",",667,667,667,667,667,667,667,,,667,667,,,,667,667,667,667,,,,,,,,,,",",,,667,667,,667,667,667,667,667,667,667,667,667,667,667,667,,,667,667",",,,,,,,,,,,,,667,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11","11,11,11,11,11,11,11,,,,11,11,11,11,11,11,11,11,11,11,,,,,,11,11,11","11,11,11,11,11,11,,,11,,,,,,,,11,11,,11,11,11,11,11,11,11,,,11,11,,",",11,11,11,11,,,,,,,,,,,,,,11,11,,11,11,11,11,11,11,11,11,11,11,11,11",",,11,11,,,,,,,,,,,,,,11,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26","26,26,26,26,26,26,26,26,26,,,,26,26,26,26,26,26,26,26,26,26,,,,,,26","26,26,26,26,26,26,26,26,26,26,26,,26,,,,,,26,26,,26,26,26,26,26,26,26",",,26,26,,,,26,26,26,26,,,,,,26,,,,,,,,26,26,,26,26,26,26,26,26,26,26","26,26,26,26,,,26,753,753,753,753,,,,,,1026,,1026,1026,1026,1026,1026","753,753,753,753,,,,753,1026,,,,,753,753,,,753,,,,,,,,,,,,,1026,,,,,",",753,,,753,1026,1026,,753,,1026,753,,,,,,,,,,,,,,,,753,,,,753,753,753","753,,753,753,753,753,,,,,753,753,1205,1205,1205,1205,1026,,753,,753","753,753,,,753,753,,1205,1205,1205,1205,,,1208,1205,1208,1208,1208,1208","1208,1205,1205,,,1205,,,,1208,,,,,,,,,,,,,,,,1205,,,1205,,,1208,1205",",,1205,,,,,1208,1208,1208,1208,,,,1208,,,,1205,,,,1205,1205,1205,1205",",1205,1205,1205,1205,,,,,1205,1205,1129,1129,1129,1129,,,1205,,1205","1205,1205,,,1205,1205,,1129,1129,1129,1129,,,1138,1129,1138,1138,1138","1138,1138,1129,1129,,,1129,,,,1138,,,,,,,,,,,,,,,,1129,,,1129,,,1138","1129,,,1129,,1129,,,1138,1138,1138,1138,,,,1138,,,,1129,,,,1129,1129","1129,1129,,1129,1129,1129,1129,,,,,1129,1129,989,989,989,989,,,1129",",1129,1129,1129,,,1129,1129,,989,989,989,989,,,,989,989,,,,,989,989",",,989,989,,,,,,,,,,,,,,,,,,,989,,,989,,,,989,,,989,,989,,,,,,,989,,",",,,,989,,,,989,989,989,989,,989,989,989,989,,,,,989,989,942,942,942","942,,,989,,989,989,989,,,989,989,,942,942,942,942,,,1135,942,1135,1135","1135,1135,1135,942,942,,,942,,,,1135,,,,,,,,,,,,,,,,942,,,942,,,1135","942,,,942,,,,,1135,1135,1135,1135,,,,1135,,,,942,,,,942,942,942,942",",942,942,942,942,,,,,942,942,924,924,924,924,,,942,,942,942,942,,,942","942,,924,924,924,924,,,1231,924,1231,1231,1231,1231,1231,924,924,,,924",",,,1231,,,,,,,,,,,,,,,,924,,,924,,,1231,924,,,924,,924,,,,,1231,1231",",,,1231,,,,924,,,,924,924,924,924,,924,924,924,924,,,,,924,924,745,745","745,745,,,924,,924,924,924,,,924,924,,745,745,745,745,,,,745,,,,,,745","745,,,745,,,,,,,,,,,,,,,,,,,,745,,,745,,,,745,,,745,,745,,,,,,,1166",",1166,1166,1166,1166,1166,745,,,,745,745,745,745,1166,745,745,745,745",",,,,745,745,745,943,943,943,943,,745,,745,745,745,1166,,745,745,,,943","943,943,943,,1166,1166,943,,,1166,,,943,943,,,943,,,,,,,,,,,,,,,,,,",",943,,,943,,,,943,,,943,,,1166,,,,,,,,,,,,,943,,,,943,943,943,943,,943","943,943,943,,,,,943,943,930,930,930,930,,,943,,943,943,943,,,943,943",",930,930,930,930,,,,930,930,,,,,930,930,,,930,930,,,,,,,,,,,,,,,,,,","930,,,930,,,,930,,,930,,930,,,,,,,930,,,,,,,930,,,,930,930,930,930,","930,930,930,930,,,,,930,930,929,929,929,929,,,930,,930,930,930,,,930","930,,929,929,929,929,,,,929,929,,,,,929,929,,,929,929,,,,,,,,,,,,,,",",,,,929,,,929,,,,929,,,929,,929,,,,,,,929,,,,,,,929,,,,929,929,929,929",",929,929,929,929,,,,,929,929,,,,,,,929,,929,929,929,,,929,929,780,780","780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780","780,780,780,780,780,,,,780,780,780,780,780,780,780,780,780,780,,,,,","780,780,780,780,780,780,780,780,780,,,780,,,,,,,,780,780,,780,780,780","780,780,780,780,,,780,780,,,,780,780,780,780,,,,,,,,,,,,,,780,780,,780","780,780,780,780,780,780,780,780,780,780,780,,,780,528,528,528,528,,","1212,,1212,1212,1212,1212,1212,,,,528,528,528,528,,1212,,528,528,,,",",528,528,,,528,528,,,,,,,,,1212,,,,,,,,,,528,1212,1212,528,,,1212,528",",,528,,528,,,,,,,528,,,,,,,528,,,,528,528,528,528,,528,528,528,528,",",,,528,528,527,527,527,527,,,528,,528,528,528,,,528,528,,527,527,527","527,,,,527,527,,,,,527,527,,,527,527,,,,,,,,,,,,,,,,,,,527,,,527,,,","527,,,527,,527,,,,,,,527,,,,,,,527,,,,527,527,527,527,,527,527,527,527",",,,,527,527,1173,1173,1173,1173,,,527,,527,527,527,,,527,527,,1173,1173","1173,1173,,,,1173,,,,,,1173,1173,,,1173,,,,,,,,,,,,,,,,,,,,1173,,,1173",",,,1173,,,1173,,,,,,,,,,,,,,,,1173,,,,1173,1173,1173,1173,,1173,1173","1173,1173,,,,,1173,1173,1116,1116,1116,1116,,,1173,,1173,1173,1173,",",1173,1173,,1116,1116,1116,1116,,,,1116,,,,,,1116,1116,,,1116,,,,,,",",,,,,,,,,,,,,1116,,,1116,,,,1116,,,1116,,,,,,,,,,,,,,,,1116,,,,1116","1116,1116,1116,,1116,1116,1116,1116,,,,,1116,1116,926,926,926,926,,","1116,,1116,1116,1116,,,1116,1116,,926,926,926,926,,,,926,,,,,,926,926",",,926,,,,,,,,,,,,,,,,,,,,926,,,926,,,,926,,,926,,,,,,,,,,,,,,,,926,",",,926,926,926,926,,926,926,926,926,,,,,926,926,1125,1125,1125,1125,",",926,,926,926,926,,,926,926,,1125,1125,1125,1125,,,,1125,,,,,,1125,1125",",,1125,,,,,,,,,,,,,,,,,,,,1125,,,1125,,,,1125,,,1125,,,,,,,,,,,,,,,","1125,,,,1125,1125,1125,1125,,1125,1125,1125,1125,,,,,1125,1125,936,936","936,936,,,1125,,1125,1125,1125,,,1125,1125,,936,936,936,936,,,,936,",",,,,936,936,,,936,,,,,,,,763,763,763,763,,,,,,,,,936,,,936,763,763,763","936,,,936,,936,,,,,763,763,,,763,,,,,936,,,,936,936,936,936,,936,936","936,936,,,,,936,936,,,,,,,936,,936,936,936,,,936,936,233,,233,233,233","233,233,,,,,763,763,763,763,233,763,763,763,763,,,,,763,763,950,950","950,950,,,763,,763,763,763,233,,,,,950,950,950,,233,233,233,233,,,,233",",950,950,,,950,,,,,,,,,,,,705,,705,705,705,705,705,,,,,,,,,705,,,,,","234,233,234,234,234,234,234,,,,,,,,,234,705,950,950,950,950,,950,950","950,950,,705,705,,950,950,705,,,,,234,950,,950,950,950,,,,234,234,234","234,,,409,234,409,409,409,409,409,,1020,,1020,1020,1020,1020,1020,409",",,,,705,,,1020,,644,,644,644,644,644,644,,,,,,409,409,,644,234,,,,1020","409,409,409,409,,,,409,1020,1020,1020,1020,,,,1020,644,,,,,,,,,644,644","644,644,,,1024,644,1024,1024,1024,1024,1024,,,,,,,,,1024,409,,,,,,,","1020,,,,,,,,,,,,,1024,,,,644,,,,,,,1024,1024,675,675,,1024,675,,,,,",",,675,675,,675,675,675,675,675,675,675,,,675,675,,,,675,675,675,675",",,,,,675,,,,,1024,,,675,675,,675,675,675,675,675,675,675,675,675,675","675,675,636,636,675,,636,,,,,,,,636,636,,636,636,636,636,636,636,636",",,636,636,,,,636,636,636,636,,,,,,636,,,,,,,,636,636,,636,636,636,636","636,636,636,636,636,636,636,636,629,629,636,,629,,,,,,,,629,629,,629","629,629,629,629,629,629,,,629,629,,,,629,629,629,629,,,,,,629,,,,,,",",629,629,,629,629,629,629,629,629,629,629,629,629,629,629,226,226,629",",226,,,,,,,,226,226,,226,226,226,226,226,226,226,,,226,226,,,,226,226","226,226,,,,,,226,,,,,,,,226,226,,226,226,226,226,226,226,226,226,226","226,226,226,602,602,226,,602,,,,,,,,602,602,,602,602,602,602,602,602","602,,,602,602,,,,602,602,602,602,,,,,,602,,,,,,,,602,602,,602,602,602","602,602,602,602,602,602,602,602,602,637,637,602,,637,,,,,,,,637,637",",637,637,637,637,637,637,637,,,637,637,,,,637,637,637,637,,,,,,637,",",,,,,,637,637,,637,637,637,637,637,637,637,637,637,637,637,637,225,225","637,,225,,,,,,,,225,225,,225,225,225,225,225,225,225,,,225,225,,,,225","225,225,225,,,,,,225,,,,,,,,225,225,,225,225,225,225,225,225,225,225","225,225,225,225,302,302,225,,302,,,,,,,,302,302,,302,302,302,302,302","302,302,,,302,302,,,,302,302,302,302,,,,,,,,,,,,,,302,302,,302,302,302","302,302,302,302,302,302,302,302,302,519,519,302,,519,,,,,,,,519,519",",519,519,519,519,519,519,519,,,519,519,,,,519,519,519,519,,,,,,519,",",,,,,,519,519,,519,519,519,519,519,519,519,519,519,519,519,519,518,518","519,,518,,,,,,,,518,518,,518,518,518,518,518,518,518,,,518,518,,,,518","518,518,518,,,,,,518,,,,,,,,518,518,,518,518,518,518,518,518,518,518","518,518,518,518,591,591,518,,591,,,,,,,,591,591,,591,591,591,591,591","591,591,,,591,591,,,,591,591,591,591,,,,,,591,,,,,,,,591,591,,591,591","591,591,591,591,591,591,591,591,591,591,592,592,591,,592,,,,,,,,592","592,,592,592,592,592,592,592,592,,,592,592,,,,592,592,592,592,,,,,,592",",,,,,,,592,592,,592,592,592,592,592,592,592,592,592,592,592,592,1163","1163,592,,1163,,,,,,,,1163,1163,,1163,1163,1163,1163,1163,1163,1163",",,1163,1163,,,,1163,1163,1163,1163,,,,,,1163,,,,,,,,1163,1163,,1163","1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,674,674,1163",",674,,,,,,,,674,674,,674,674,674,674,674,674,674,,,674,674,,,,674,674","674,674,,,,,,674,,,,,,,,674,674,,674,674,674,674,674,674,674,674,674","674,674,674,1164,1164,674,,1164,,,,,,,,1164,1164,,1164,1164,1164,1164","1164,1164,1164,,,1164,1164,,,,1164,1164,1164,1164,,,,,,1164,,,,,,,,1164","1164,,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,630","630,1164,,630,,,,,,,,630,630,,630,630,630,630,630,630,630,,,630,630",",,,630,630,630,630,,,,,,630,,,,,,,,630,630,,630,630,630,630,630,630","630,630,630,630,630,630,1188,1188,630,,1188,,,,,,,,1188,1188,,1188,1188","1188,1188,1188,1188,1188,,,1188,1188,,,,1188,1188,1188,1188,,,,,,1188",",,,,,,,1188,1188,,1188,1188,1188,1188,1188,1188,1188,1188,1188,1188","1188,1188,601,601,1188,,601,,,,,,,,601,601,,601,601,601,601,601,601","601,,,601,601,,,,601,601,601,601,,,,,,601,,,,,,,,601,601,,601,601,601","601,601,601,601,601,601,601,601,601,,,601"],racc_action_check=arr=$$$("Array").$new(28717,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),racc_action_pointer=[nil,1550,2590,30,nil,485,nil,21057,1279,-15,24908,25292,63,nil,111,130,888,195,878,334,213,587,nil,-72,16018,1438,25420,260,nil,586,nil,10,7680,8479,8613,9947,10209,nil,1870,24507,23582,nil,199,495,356,292,12722,13115,252,13377,14041,977,19960,226,694,nil,nil,nil,nil,nil,nil,nil,nil,nil,21341,nil,15494,15351,14696,170,nil,14434,14303,nil,nil,21200,24638,24114,24769,nil,nil,nil,nil,nil,nil,nil,nil,nil,877,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,610,nil,nil,722,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,20234,nil,nil,nil,nil,20091,19567,19436,19305,19174,nil,4318,nil,-26,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,266,nil,4462,22788,21740,21609,14172,13910,13779,27931,27748,nil,nil,264,2734,305,nil,27294,27386,317,1294,12043,11912,11257,nil,nil,1133,138,140,432,174,389,452,nil,10078,131,191,3022,455,nil,nil,7277,7146,7015,6753,6491,6360,6229,6098,5967,18507,18376,18245,17590,17459,17328,16411,16149,15756,15220,15089,20639,21478,nil,nil,nil,nil,13648,nil,nil,583,548,381,-62,413,376,696,695,584,585,nil,nil,nil,15625,nil,nil,27992,nil,nil,484,16673,17066,nil,nil,nil,nil,nil,nil,nil,17197,nil,2446,nil,455,459,nil,17721,512,17852,nil,nil,17983,18114,nil,nil,-73,nil,5836,1711,509,484,1726,513,564,525,23312,2878,999,1139,614,617,582,nil,610,571,253,616,644,nil,nil,nil,650,171,611,23852,nil,471,1022,3742,3886,687,nil,691,12591,nil,677,2302,1567,638,nil,541,621,676,662,651,690,nil,870,35,36,22133,1006,4894,459,766,651,25,39,730,747,4,793,nil,nil,1141,1285,370,nil,692,nil,714,14827,nil,27438,nil,531,386,291,288,421,142,191,396,nil,nil,nil,nil,nil,nil,nil,713,25036,nil,nil,nil,nil,726,nil,798,717,14565,725,nil,nil,715,nil,690,-60,819,nil,nil,1582,nil,nil,nil,nil,nil,1870,735,nil,740,749,217,251,21057,nil,nil,nil,0,861,795,nil,nil,20916,20780,20508,880,882,nil,nil,769,775,780,nil,nil,785,787,809,nil,nil,nil,nil,nil,nil,nil,nil,nil,801,1280,nil,nil,19031,nil,nil,nil,1,nil,nil,nil,899,nil,nil,901,579,22919,951,nil,nil,nil,-26,nil,885,28114,28053,22657,-85,22526,22395,22264,835,853,26710,26612,3454,5300,814,855,936,938,947,952,5693,5431,5562,5169,5038,4894,4750,4606,4462,3482,3568,4318,4174,2590,4030,nil,154,nil,13518,nil,nil,nil,nil,13246,889,897,901,nil,nil,nil,902,nil,nil,12984,nil,12853,nil,12460,nil,219,nil,nil,nil,12317,1438,nil,904,909,nil,nil,910,23451,916,12174,28175,28236,995,958,nil,nil,24376,929,nil,11781,28602,27809,11650,3598,11388,nil,1066,947,990,nil,11126,nil,nil,10995,nil,nil,nil,4030,1075,nil,3742,25,1080,1084,37,1086,10733,10602,27687,28480,-5,nil,nil,472,nil,27626,27870,10340,nil,nil,191,2014,nil,27463,nil,nil,nil,nil,1249,nil,nil,nil,977,nil,nil,247,nil,286,nil,nil,966,nil,968,nil,nil,nil,25164,nil,9816,971,9673,9411,9280,28358,27565,9018,8875,733,1011,8744,8076,7945,7814,1017,nil,nil,7539,7408,1021,nil,1075,1726,1105,6884,nil,nil,1120,nil,nil,376,13512,nil,13482,nil,27365,nil,975,6622,nil,1310,nil,992,997,1057,1002,nil,nil,nil,nil,nil,nil,1090,2014,nil,nil,nil,307,332,222,361,1006,5693,5562,nil,120,nil,nil,nil,nil,1029,nil,nil,nil,555,26091,311,nil,1007,1092,1014,nil,nil,25503,nil,nil,375,nil,nil,586,nil,nil,861,27241,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,791,464,nil,nil,1016,26529,nil,1148,nil,1131,4,nil,nil,16280,nil,1046,1053,1154,nil,1041,nil,1088,22002,nil,nil,21871,nil,109,23721,1044,nil,1048,-1,233,1103,249,799,1117,1088,24245,nil,1156,2158,10864,nil,nil,nil,372,876,nil,1213,nil,nil,nil,nil,nil,1219,1220,nil,nil,6,1101,-21,-19,68,7,1150,997,989,nil,1103,4606,14958,nil,1227,22,1107,nil,nil,nil,nil,nil,4750,nil,nil,nil,nil,nil,nil,nil,nil,1106,15887,1110,387,385,110,500,nil,2302,16542,nil,1110,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,16804,16935,1236,nil,3886,1121,1169,nil,nil,1129,nil,1212,nil,nil,1131,1136,nil,1141,1143,nil,1144,nil,nil,nil,1150,1204,507,nil,nil,18638,18769,18900,5169,5300,5431,333,25993,1231,27004,-65,-35,26386,26288,480,-32,1154,1155,nil,27200,nil,1154,747,nil,1178,25895,26190,nil,929,1243,281,nil,nil,27339,20916,nil,nil,nil,nil,8207,nil,nil,nil,nil,nil,8338,nil,nil,1227,nil,nil,1237,1224,nil,nil,429,2446,nil,nil,nil,nil,1227,250,nil,137,nil,1357,nil,9149,1361,nil,nil,25797,9542,5038,-18,1362,nil,1363,369,1582,nil,nil,nil,nil,1238,1285,1249,1247,304,nil,nil,10471,3310,3166,nil,3166,nil,nil,-10,23050,nil,nil,27446,nil,497,nil,27515,nil,25493,nil,nil,nil,nil,1248,1250,3022,2878,11519,nil,1251,nil,nil,nil,nil,1257,1258,1260,1262,1263,1264,nil,nil,nil,1309,1267,-39,nil,1276,nil,nil,-66,1275,nil,nil,nil,nil,nil,nil,1323,2734,2158,nil,nil,1285,1286,nil,1287,1288,1291,nil,1316,1296,1283,23181,nil,nil,nil,nil,nil,8,nil,26,771,nil,40,nil,nil,nil,1420,3454,3310,1136,nil,nil,nil,1438,32,33,872,1376,34,nil,1302,1312,1313,1314,1348,3584,26906,nil,nil,nil,nil,nil,nil,nil,1317,27102,nil,145,nil,25699,nil,nil,815,nil,nil,25898,nil,nil,25702,nil,13537,nil,nil,1342,23983,763,1397,3598,nil,19698,19829,nil,nil,nil,nil,1341,1454,713,nil,nil,nil,1457,20377,28297,28419,69,26144,nil,nil,nil,nil,1332,1333,26808,1341,nil,nil,1342,nil,nil,1361,1365,1382,1385,nil,1386,nil,618,28541,nil,973,4174,nil,nil,nil,nil,nil,1195,nil,1392,76,79,109,136,1391,25601,1394,nil,25604,nil,23629,nil,26599,nil,23359,nil,nil,1439,1442,nil,362,nil,142,nil,1399,1401,1404,1409,nil,nil,nil,25996,nil,nil,nil,nil,-129,nil],racc_action_default=[-1,-745,-4,-745,-2,-730,-5,-745,-8,-745,-745,-745,-745,-31,-745,-745,-36,-745,-745,-639,-639,-311,-52,-732,-745,-61,-745,-69,-70,-71,-75,-287,-287,-287,-324,-352,-353,-87,-13,-91,-99,-101,-745,-626,-627,-745,-745,-745,-745,-745,-745,-239,-745,-732,-258,-302,-303,-304,-305,-306,-307,-308,-309,-310,-718,-313,-317,-744,-707,-333,-335,-745,-745,-63,-63,-730,-745,-745,-745,-354,-355,-357,-358,-359,-360,-419,-563,-564,-565,-566,-587,-569,-570,-589,-591,-574,-579,-583,-585,-601,-602,-603,-587,-605,-607,-608,-609,-610,-716,-615,-616,-717,-618,-619,-620,-621,-622,-623,-624,-625,-630,-631,1238,-3,-731,-740,-741,-742,-7,-745,-745,-745,-745,-745,-9,-4,-19,-745,-130,-131,-132,-133,-134,-135,-136,-140,-141,-142,-143,-144,-145,-146,-147,-148,-149,-150,-151,-152,-153,-154,-155,-156,-157,-158,-159,-160,-161,-162,-163,-164,-165,-166,-167,-168,-169,-170,-171,-172,-173,-174,-175,-176,-177,-178,-179,-180,-181,-182,-183,-184,-185,-186,-187,-188,-189,-190,-191,-192,-193,-194,-195,-196,-197,-198,-199,-200,-201,-202,-203,-204,-205,-206,-207,-208,-209,-210,-24,-137,-13,-745,-745,-745,-745,-745,-277,-745,-745,-728,-729,-745,-13,-638,-636,-662,-662,-745,-13,-745,-745,-732,-733,-56,-745,-626,-627,-745,-311,-745,-745,-245,-745,-639,-639,-13,-745,-57,-59,-222,-223,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-745,-259,-260,-261,-262,-745,-65,-66,-745,-130,-131,-170,-171,-172,-188,-193,-200,-203,-626,-627,-705,-745,-428,-430,-745,-726,-727,-76,-277,-745,-332,-434,-443,-445,-82,-440,-83,-732,-84,-265,-282,-292,-292,-286,-290,-293,-745,-587,-709,-713,-745,-85,-86,-730,-14,-745,-17,-745,-89,-13,-732,-745,-92,-95,-13,-107,-108,-745,-745,-115,-324,-327,-732,-745,-639,-639,-352,-353,-356,-441,-745,-97,-745,-103,-321,-745,-224,-225,-606,-233,-234,-745,-246,-251,-13,-315,-732,-266,-737,-737,-745,-745,-737,-745,-334,-62,-745,-745,-745,-13,-13,-730,-745,-731,-626,-627,-745,-745,-311,-745,-370,-371,-125,-126,-745,-128,-745,-311,-634,-745,-348,-662,-567,-745,-745,-745,-745,-745,-745,-745,-745,-6,-743,-25,-26,-27,-28,-29,-745,-745,-21,-22,-23,-138,-745,-32,-35,-298,-745,-745,-297,-33,-745,-37,-745,-311,-49,-51,-211,-270,-293,-53,-54,-38,-212,-270,-732,-278,-292,-292,-719,-720,-287,-438,-721,-722,-720,-719,-287,-437,-439,-721,-722,-745,-555,-745,-383,-384,-732,-704,-704,-644,-645,-647,-647,-647,-661,-663,-664,-665,-666,-667,-668,-669,-670,-671,-745,-673,-675,-677,-682,-684,-685,-688,-693,-695,-696,-698,-699,-700,-702,-745,-745,-745,-48,-219,-55,-732,-331,-745,-745,-745,-277,-321,-745,-745,-745,-745,-745,-745,-745,-220,-221,-226,-227,-228,-229,-230,-231,-235,-236,-237,-238,-240,-241,-242,-243,-244,-247,-248,-249,-250,-732,-263,-67,-732,-449,-287,-719,-720,-73,-77,-663,-732,-292,-732,-288,-447,-449,-732,-326,-283,-745,-284,-745,-289,-745,-294,-745,-712,-715,-12,-731,-16,-18,-732,-88,-319,-104,-93,-745,-732,-277,-745,-745,-114,-745,-638,-606,-745,-100,-105,-745,-745,-745,-745,-264,-745,-328,-745,-732,-745,-267,-739,-738,-269,-739,-322,-323,-708,-13,-361,-362,-13,-745,-745,-745,-745,-745,-745,-277,-745,-745,-321,-63,-125,-126,-127,-745,-745,-277,-344,-632,-745,-13,-420,-662,-423,-568,-588,-593,-745,-595,-571,-590,-745,-592,-573,-745,-576,-745,-578,-581,-745,-582,-745,-604,-10,-20,-745,-30,-745,-301,-745,-745,-277,-745,-745,-745,-745,-442,-745,-279,-281,-745,-745,-78,-276,-435,-745,-745,-80,-436,-44,-254,-744,-744,-350,-637,-745,-642,-643,-745,-745,-654,-745,-657,-745,-659,-745,-745,-372,-745,-374,-376,-379,-382,-732,-676,-686,-687,-697,-701,-640,-46,-256,-351,-330,-734,-719,-720,-719,-720,-732,-745,-745,-58,-463,-466,-467,-468,-469,-471,-473,-476,-477,-534,-732,-489,-492,-504,-508,-513,-515,-516,-519,-520,-587,-523,-525,-526,-527,-532,-533,-745,-745,-537,-538,-539,-540,-541,-542,-543,-544,-545,-546,-547,-745,-745,-553,-60,-745,-745,-706,-745,-450,-72,-431,-447,-272,-279,-274,-745,-409,-745,-325,-292,-291,-295,-745,-710,-711,-745,-15,-90,-745,-96,-102,-732,-719,-720,-275,-723,-113,-745,-98,-745,-218,-232,-252,-745,-314,-316,-318,-737,-744,-363,-744,-64,-364,-365,-338,-339,-745,-745,-455,-341,-745,-732,-719,-720,-723,-320,-13,-125,-126,-129,-732,-13,-745,-346,-745,-745,-732,-594,-597,-598,-599,-600,-13,-572,-575,-577,-580,-584,-586,-139,-34,-299,-745,-732,-719,-720,-720,-719,-50,-271,-745,-735,-292,-40,-214,-41,-215,-79,-42,-217,-43,-216,-81,-745,-745,-744,-368,-13,-556,-744,-557,-558,-704,-683,-688,-703,-646,-647,-647,-674,-647,-647,-694,-647,-671,-386,-689,-732,-745,-745,-381,-672,-745,-745,-745,-745,-745,-745,-442,-464,-745,-745,-474,-475,-745,-745,-745,-494,-732,-732,-488,-495,-501,-745,-745,-491,-745,-745,-745,-507,-514,-518,-745,-522,-524,-530,-531,-535,-536,-548,-549,-745,-611,-612,-613,-126,-551,-745,-68,-429,-409,-433,-432,-745,-732,-444,-410,-732,-13,-446,-285,-296,-714,-94,-442,-106,-732,-268,-745,-366,-745,-745,-340,-342,-745,-745,-13,-442,-745,-442,-745,-745,-13,-349,-421,-424,-426,-413,-745,-745,-300,-442,-39,-213,-280,-45,-255,-11,-13,-562,-369,-745,-745,-560,-641,-745,-650,-745,-652,-745,-655,-745,-658,-660,-373,-375,-377,-380,-47,-257,-745,-465,-504,-470,-472,-481,-485,-732,-732,-732,-732,-732,-732,-552,-486,-487,-511,-496,-499,-502,-732,-587,-736,-732,-505,-509,-512,-517,-521,-528,-529,-745,-253,-13,-74,-273,-704,-704,-390,-392,-392,-392,-408,-745,-732,-671,-679,-680,-691,-448,-329,-336,-745,-337,-745,-460,-295,-744,-343,-345,-633,-745,-13,-13,-745,-422,-596,-561,-13,-626,-627,-745,-745,-311,-559,-647,-647,-647,-647,-745,-745,-745,-478,-479,-480,-482,-483,-484,-503,-497,-745,-490,-745,-493,-745,-550,-451,-745,-388,-389,-393,-399,-401,-745,-404,-745,-406,-411,-745,-745,-678,-745,-13,-456,-745,-745,-452,-453,-454,-347,-745,-745,-732,-415,-417,-418,-555,-277,-745,-745,-321,-745,-648,-651,-653,-656,-378,-505,-745,-500,-506,-510,-704,-681,-391,-392,-392,-392,-392,-692,-392,-412,-690,-745,-321,-744,-13,-461,-462,-425,-427,-414,-745,-554,-732,-719,-720,-723,-320,-647,-745,-498,-387,-745,-396,-745,-398,-745,-402,-745,-405,-407,-320,-723,-367,-744,-416,-442,-649,-392,-392,-392,-392,-457,-458,-459,-745,-394,-397,-400,-403,-392,-395],clist=["44,411,301,309,313,44,141,141,318,318,318,340,285,418,454,493,493,284","382,384,385,473,141,389,297,19,626,511,709,832,19,693,460,466,356,356","44,344,344,635,127,698,699,571,225,618,621,339,563,702,704,706,144,144","890,303,708,598,897,241,983,19,352,352,44,134,387,388,366,136,217,356","356,356,393,297,297,421,422,423,424,798,232,232,305,312,314,907,8,19","795,445,795,8,445,302,561,678,940,352,352,352,359,734,778,737,737,790","445,555,127,124,438,439,1003,451,383,383,236,559,383,715,44,798,610","613,1160,1059,617,512,375,44,904,44,1158,484,484,756,756,123,229,235","336,1037,4,476,509,19,320,320,320,1030,373,973,1032,1184,19,1075,19","1016,782,128,2,607,656,658,17,1012,338,1044,1047,17,792,801,383,383","383,383,216,1055,571,377,380,933,595,595,986,399,516,434,798,493,934","406,408,427,527,461,318,528,795,795,17,826,952,953,286,780,786,390,8","667,652,654,657,657,44,369,605,425,378,8,470,785,1160,1184,298,432,44","379,17,397,1221,639,44,1078,576,372,608,374,818,19,846,19,709,997,19","642,915,1031,1077,44,1136,19,433,444,1079,1157,444,19,19,831,339,903","568,905,449,450,518,319,319,319,444,844,643,999,19,426,419,409,318,318","850,514,515,804,1097,584,17,318,1098,554,565,566,813,965,1151,17,1089","17,1172,1228,376,989,1191,1038,1039,899,795,1174,731,484,303,929,232","232,316,329,330,930,1180,645,939,309,942,460,466,1068,968,313,1061,44","599,1062,622,44,356,912,955,344,44,894,1143,1,553,410,339,412,1175,413","236,339,552,1030,1171,356,19,1206,344,414,19,415,1036,416,352,19,127","1042,1045,417,44,591,525,526,923,852,1043,1046,596,857,806,847,17,352","17,44,44,17,935,601,902,582,1064,1065,17,19,623,624,809,898,17,17,1178","587,907,,,1126,809,,19,19,,961,,,,17,836,581,629,320,,141,127,696,493","1219,845,320,,383,685,849,,,809,580,690,,,336,,,809,691,336,709,709","979,,236,641,1152,437,437,860,904,860,,,1019,,868,725,579,,583,674,144","1021,1023,589,1025,1027,,1028,,,992,,460,466,493,722,493,666,,994,,461",",,1177,318,,991,17,882,,978,17,781,887,,,17,238,,,787,1006,789,684,452","470,793,975,798,689,,,,625,,772,772,685,513,795,969,,802,,1076,,17,371","805,756,756,562,319,445,721,,484,,,756,319,17,17,445,445,756,851,820","445,445,599,735,735,461,318,1090,904,737,1048,599,982,1041,,461,878","880,1049,1050,44,883,885,1229,1110,356,1052,,344,895,470,564,,1060,356",",,344,,567,470,756,975,461,318,19,,,,,784,461,,352,318,,,,44,,,44,352",",,,1230,841,470,823,,,825,,470,,,1133,1134,995,,,44,19,,1144,19,904","461,318,709,709,,,,,,,,827,,,,,,141,916,19,947,44,,,900,470,,900,44",",848,1103,1167,1168,1169,1170,,,794,,,,1120,1121,1122,,19,,,19,,1181",",19,1182,,,,,19,19,444,,144,19,19,,,,,,444,444,,1198,,444,444,,822,864",",1153,,,,,,967,,,,,,,1207,899,772,17,,445,,1147,,1148,772,,,1080,865",",896,,966,772,772,873,,1060,,963,1007,,,1224,284,1223,1060,,599,141","1176,,932,,685,17,,690,17,980,946,1096,,,,,,877,996,,,356,,,344,493",",,,17,,,356,,,344,513,,452,,,,,,1060,,,,,352,,,,,1072,,17,594,,17,352",",44,17,,1222,,44,,17,17,,,993,17,17,1176,,44,,,609,1131,,1029,835,981","19,,1004,,,19,,,,,,,1040,,,,19,,,,,,,,,1156,44,815,383,,,,,,19,,,1015","877,,1066,,,,,,444,,,,,19,,1080,1070,,1080,,772,,772,,,772,772,437,1085",",,1087,772,,,,679,,772,772,,,,1073,,,772,772,,,1199,1014,,,,1018,932",",,,,932,932,,,1127,,,809,44,,879,881,,1058,,884,886,,,1084,,,,,772,","44,1080,1117,1118,1119,1072,44,19,1072,,1072,1092,383,,,,17,,1128,,","17,44,356,,19,1105,,,,31,19,17,1102,735,31,,,,,,383,1095,,,779,,19,",",17,352,31,,,,,,,,,,31,31,31,,31,17,,,,,,,,,,44,1072,,1072,,1072,,1072",",,356,,,297,,,,31,,,,,31,31,1072,19,31,,,44,44,1192,1193,,,44,,,352","900,1155,,1073,,,1073,1161,1073,772,,906,,908,,19,19,,772,,,19,772,",",,,1163,,,461,318,17,,356,,31,297,765,765,44,31,31,31,31,31,,31,,,17","1190,,,,470,17,,,,,1008,352,,,19,772,,,,,,17,,,,1073,,1073,470,1073",",1073,,44,,,,,383,383,,,,,1220,,1081,772,1073,,,,,,879,881,886,884,19","679,,,,,,,,,,,,,,679,941,,17,,,31,31,31,31,31,31,31,,,,,,31,,,,,,31","31,31,31,,,,,17,17,381,18,,,17,,18,31,,,,,,,,,,,,,,,,242,,,,679,,,,",",242,242,242,,18,345,345,,,,,,,,,17,,,,,31,,,,679,,,31,31,,1008,,18","679,,,31,242,242,1002,,242,394,404,404,,,1137,1139,1141,,,,,31,,679",",31,17,,,,31,,765,1081,,,1081,,,1081,765,1081,,,,,,764,764,765,765,",",,,,1074,18,,,31,,242,242,242,242,18,,18,,,,,,31,31,31,,,,,,,679,,435","448,,679,679,,,,,,31,,,,,,,,,1111,,1112,,1113,1081,,1081,,1081,,1081",",,,,1209,1211,1213,1215,,1216,,1002,,,,,1081,,,,,,,,,,,,,,,,,,,18,242","442,242,242,442,242,,31,,,,18,1232,1233,1234,1235,,18,442,242,242,,",",1237,,,,,,,,,,18,,573,,575,,,577,578,,,,31,,679,679,679,,,,,,31,,941","765,,765,,,765,765,,,,,1183,765,1185,,,,,765,765,,242,,1002,,,765,765","242,242,,,,,,,,242,,1204,,,,,,,,,,,,,,,764,18,,31,,18,,,764,345,18,765",",31,,,,764,764,,,,,,,,,1225,345,1226,,1227,,20,,,,670,20,,18,31,,,31",",,1196,,,1236,31,,,242,18,18,,,,,31,,,,31,,,,20,353,353,,,,242,,,,,",",,,,,,,,679,,,31,,,31,31,20,716,31,,,,,,31,31,353,353,353,31,31,,,,",",,,,,,,,,,,,,,,,,,,,,,765,242,,,,,,,,765,,,,765,,,,20,,,,,,,,,20,,20",",,,,796,,381,,799,,,242,764,,764,,,764,764,,,242,,,764,,,,765,,764,764",",,,,,,764,764,,,,,,796,,,381,,,,,,,,,,,,765,448,,,,,,,,,,,,,31,,,764",",,,18,20,,20,,,20,,345,,242,,,20,,,31,345,,20,20,31,31,,866,,,,,,,,31","796,381,,20,,18,,,18,,,,,,893,242,,31,,,,,,,,242,,,911,18,,,,,31,,,",",,,,,,,,,,,,,,,,,,18,,,442,242,,,18,,,,,,442,442,,,,442,442,,,,,,,,20",",,,20,,,764,353,20,,,,,,31,764,,,,764,,,,,796,,353,,,,,31,,976,,,977",",20,,,,,31,,,,,,31,,,,20,20,31,,,,,,,,764,,,,,,,,31,,,,,,,,,,,,,,,,",",,,,,,,764,,,,,,,,1005,,,345,,,,,15,,,,,15,345,,,,242,,,,,31,,,,,,,",",,,,,,,,,,18,,,15,,18,242,,,,,31,31,,,,18,31,,,21,,,,,21,,,,,,15,,,442",",,,,,,398,773,773,,,,,,,,18,,,,,21,347,347,,,31,,31,31,,,,,,,,,,,,31",",,,,,1091,,21,,,,,15,,,,,396,405,405,,15,,15,381,20,,,31,,,,,353,,,",",242,,,,353,,,,,,,,,,,,,18,,,,,,,,20,,21,20,242,,,771,771,,18,21,,21",",,18,,,,,,,,20,,,,,,,,18,,,,1106,,,,,,,15,,440,,,440,,,20,,,20,15,,","20,,,15,440,,20,20,,,,20,20,,,,,,,,15,,,,,,,,,18,,,,,,,,,21,,443,,1145","443,,,,,,,21,,,,,,21,443,18,18,,,773,,18,,,,,,773,,,21,,,,,,773,773",",770,770,,,,,,,,,,,,,,,,,15,,,,15,1187,,,18,15,242,242,,,,,,,,,,,,242",",,,353,,,,,,,,,,,353,15,,,,,,,,,,,,,18,21,15,15,,21,,,,347,21,,,20,","771,,,20,,,,,771,,,,,347,20,,,771,771,,,,,,,21,,,,,,,20,43,,,,,43,,21","21,,,,,,,,20,,,,,,,,296,,,,,,,,,,,,43,343,343,,,773,,773,,,773,773,",",,,,773,,,,,,773,773,,,,43,,,773,773,,,,,,392,296,296,,,,,,,,,,,,,,",",,,769,769,,20,,,770,,,,,,773,,770,,,,,,,20,,770,770,,,20,43,,,,,,,",",43,,43,,,,20,,768,768,353,,,,,771,15,771,,,771,771,,,,,,771,,,,,,771","771,,,,,,,771,771,,,,,,,,,,,,15,,,15,,,,20,,,,,,,,21,,,,,353,,,347,15",",771,,,,,43,347,,,,20,20,,,,,20,43,767,767,,,773,43,,15,,21,440,,21","773,15,,,773,,,440,440,43,,,440,440,,,,,,,21,,,,,,353,856,,20,,,,,,",",770,,770,,,770,770,,,,21,773,770,443,,,,21,770,770,,,,443,443,,770","770,443,443,,,,769,,,20,,,,,769,,773,,,,,,,769,769,43,,,,43,,,771,343","43,,,,770,,,771,,,,771,,,,,,768,343,,,,,,,768,,,,,43,,,,768,768,,,,",",,,,,43,43,,,,,,,,,771,,,,,,,,,,,,,15,,,,,15,,,,,,,,,,347,15,,,771,",",,,,,347,,,,,,,,440,,,,,767,,,,,,,,767,,,,15,,21,,,767,767,21,,,,,770",",,,,,21,,,770,,,,770,,,,,,,769,,769,,443,769,769,,,,,,769,,,,,,769,769",",21,,,,,769,769,,,,,,,,,,770,,766,766,,,,,768,,768,,15,768,768,,,,,","768,,,,,,768,768,769,,15,,770,,768,768,15,,,,,,,,,,,,,,43,,15,,,,1109",",343,,,,,,,21,,343,,,,,,768,,,,,,,,,,21,,,,,43,21,,43,,,,,,,767,,767",",,767,767,21,,15,,1108,767,,43,,,,767,767,34,,,,,34,767,767,,,,,,,,",",,15,15,,43,34,,15,,,,43,,,,34,34,34,,34,769,,,,,21,,,767,769,,,,769",",,,,405,,,,,,,,,34,,,,15,34,34,21,21,34,,,,21,,,,,768,,,,,,,,,768,,","769,768,,,,,,,766,,,,,,,,766,,15,,,,,,405,766,766,21,34,,,,769,34,34","34,34,34,,34,,,,,,768,,,,,,,,,,,,,,,,343,,,,,,,,,,21,343,,,,,768,767",",,,,,,,,767,,,,767,,,,,,,,43,,,,,43,,,,,,,,,,,43,,,,,,,34,34,34,34,34","34,34,,,,,,34,767,,,,,34,34,34,34,,,,,,,43,,,,,,,34,,,,,,,,,,767,,,",",,,,,,,,,,,,,,,,766,,766,,,766,766,,,,,,766,,,,34,,766,766,,,,34,34",",766,766,,,,,34,,,,,,,,,,,,43,,,,,,34,,,,34,,,,,34,,,43,,,766,,,43,",",,,,,,,,,,,,,,43,,,,1104,34,,,,,,,,,,,,,,34,34,34,,,,,,,,,,,,,,,,,,","34,,,,,,,,,,,,,,,43,,,,,,,,,,,,,296,,,,,,,,,,,,,,,,43,43,,,,,43,,,,",",,,,,,249,,,34,,,,766,,,317,317,317,,,,766,,,,766,,364,365,,367,368",",370,,296,,,43,,,,,,,,,34,317,317,,,,,,,,34,,,,,,,,,,,,766,,,,,,,,,",",,,43,,,,,,,,,,,,,,,,,,,766,,,,,,,,,,,,,,,,34,,,,,,,,,,34,,,,,,,,,,",",,,,,,,,,,,,,,,,,34,,,34,,,,,,,34,,,,,,,,,,34,,,,34,,,,,,,,,,,,,,,,",",,,,317,447,,,453,317,34,,,34,34,,,34,,,,,453,34,34,,,,34,34,,,,,,249",",,,,,,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544","545,546,547,548,549,550,,,,,551,,,,,,,,,,,,,,,,,,,,,,,317,317,,,,,,",",317,,,,,,,317,,317,,,317,317,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,604,,,,,34,,,,,,,,,,,,,,,,,,,,,,,34,,,,,34,34,,,,,,,,,,34,,,,,,,,",",,,,,,,,,34,,,,,317,,,,,,,,,,,,34,,,,,,,,,,,,,,,,,,,,,,,692,,,,,,,,",",,,,,,,,,,,,,,,,,317,,,,,,,,,,,,,723,,34,,,,,,,,317,,453,453,453,,,",",34,,,,,,,,,,,,34,,,,,,34,,,,,,34,,,,,,,365,,,,,,,,,34,317,,317,,317",",,,,,,,,,,,,,,,317,,,,,,,,,,453,,,816,,817,,,,,,317,,,317,,,,,,,,,,34",",,317,317,,,,,,,,,,317,,,,,,,,,,,,,,,34,34,,,,,34,,,,,,,,,,,,317,453","317,,,,874,,,317,317,453,453,,,,453,453,,,,,,317,,,,,,,,,34,,34,34,","317,,,,,,,,,,34,,,,,,,,,,,,,,692,723,,,,,,,,,,,,,,34,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,317,,,,,,,,,317,,,317,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,317,,,,,,,,453,,,,,,,,",",,,,1010,1011,,,,,,,,,,,,,,,,,,,,,,,,,,,,1033,1034,453,453,453,453,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1067,,,,,,,,,,,,,,,,,,,,,,,,,",",,317,,,,,,,,,,,,,,,,,,,317,,,,,,,,,,,,,,,,,,,,,,,,,,453,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,317"],racc_goto_table=arr=$$$("Array").$new(4752,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),clist=["72,198,158,91,91,72,75,75,36,36,36,68,46,198,31,230,230,48,107,19,19","10,75,19,72,34,112,10,128,113,34,12,55,55,82,82,72,72,72,73,117,139","139,94,33,110,110,11,92,228,228,228,77,77,13,33,135,70,133,22,111,34","34,34,72,9,44,44,80,17,17,82,82,82,72,72,72,19,19,19,19,239,87,87,56","56,56,235,8,34,95,20,95,8,20,51,31,32,187,34,34,34,69,41,41,177,177","58,20,55,117,7,24,24,149,28,26,26,119,57,26,129,72,239,89,89,152,192","89,28,87,72,231,72,151,225,225,200,200,5,35,35,64,193,2,157,157,34,90","90,90,127,8,147,130,236,34,145,34,207,161,6,3,10,214,214,29,14,65,178","178,29,161,16,26,26,26,26,18,178,94,90,90,175,224,224,13,21,66,25,239","230,176,74,74,27,42,91,36,43,95,95,29,45,202,202,50,52,60,5,8,78,215","215,215,215,72,83,84,8,86,8,75,93,152,236,105,11,72,106,29,114,151,116","72,149,198,120,121,122,123,34,124,34,128,125,34,126,128,131,136,72,142","34,22,22,143,150,22,34,34,112,11,146,66,146,26,26,33,88,88,88,22,73","153,154,34,2,6,155,36,36,156,26,26,70,159,66,29,36,160,162,164,165,70","168,169,29,170,29,192,171,88,172,173,180,182,200,95,192,31,225,33,183","87,87,63,63,63,184,145,157,188,91,189,55,55,147,58,91,195,72,68,196","19,72,82,129,205,72,72,206,149,1,26,210,11,211,193,212,119,11,51,127","130,82,34,192,72,213,34,216,175,217,34,34,117,175,175,218,72,33,35,35","32,219,176,176,80,220,31,223,29,34,29,72,72,29,32,33,229,9,202,202,29","34,11,11,55,233,29,29,234,69,235,,,187,55,,34,34,,73,,,,29,31,8,33,90",",75,117,66,230,111,31,90,,26,91,10,,,55,7,91,,,64,,,55,36,64,128,128","32,,119,26,13,88,88,215,231,215,,,139,,31,66,5,,65,33,77,228,228,65","228,228,,228,,,32,,55,55,230,36,230,17,,32,,91,,,133,36,,110,29,57,","70,29,66,57,,,29,40,,,66,32,66,56,79,75,66,94,239,56,,,,5,,72,72,91","79,95,92,,66,,146,,29,40,66,200,200,88,88,20,117,,225,,,200,88,29,29","20,20,200,157,66,20,20,68,174,174,91,36,41,231,177,73,68,89,32,,91,28","28,32,32,72,28,28,13,146,82,191,,72,24,75,63,,191,82,,,72,,63,75,200","94,91,36,34,,,,,56,91,,34,36,,,,72,,,72,34,,,,113,44,75,11,,,11,,75",",,139,139,10,,,72,34,,135,34,231,91,36,128,128,,,,,,,,117,,,,,,75,66","34,198,72,,,140,75,,140,72,,117,110,228,228,228,228,,,90,,,,32,32,32",",34,,,34,,146,,34,146,,,,,34,34,22,,77,34,34,,,,,,22,22,,12,,22,22,","90,17,,112,,,,,,107,,,,,,,139,200,72,29,,20,,110,,110,72,,,230,8,,87",",158,72,72,8,,191,,46,28,,,146,48,228,191,,68,75,191,,174,,91,29,,91","29,68,174,10,,,,,,90,19,,,82,,,72,230,,,,29,,,82,,,72,79,,79,,,,,,191",",,,,34,,,,,132,,29,40,,29,34,,72,29,,32,,72,,29,29,,,11,29,29,191,,72",",,40,10,,66,88,26,34,,11,,,34,,,,,,,66,,,,34,,,,,,,,,10,72,79,26,,,",",,34,,,11,90,,19,,,,,,22,,,,,34,,230,66,,230,,72,,72,,,72,72,88,66,",",19,72,,,,40,,72,72,,,,140,,,72,72,,,31,87,,,,87,174,,,,,174,174,,,198",",,55,72,,79,79,,174,,79,79,,,11,,,,,72,,72,230,66,66,66,132,72,34,132",",132,11,26,,,,29,,66,,,29,72,82,,34,72,,,,59,34,29,11,174,59,,,,,,26","117,,,40,,34,,,29,34,59,,,,,,,,,,59,59,59,,59,29,,,,,,,,,,72,132,,132",",132,,132,,,82,,,72,,,,59,,,,,59,59,132,34,59,,,72,72,19,19,,,72,,,34","140,11,,140,,,140,11,140,72,,144,,144,,34,34,,72,,,34,72,,,,,33,,,91","36,29,,82,,59,72,98,98,72,59,59,59,59,59,,59,,,29,11,,,,75,29,,,,,79","34,,,34,72,,,,,,29,,,,140,,140,75,140,,140,,72,,,,,26,26,,,,,11,,232","72,140,,,,,,79,79,79,79,34,40,,,,,,,,,,,,,,40,40,,29,,,59,59,59,59,59","59,59,,,,,,59,,,,,,59,59,59,59,,,,,29,29,85,30,,,29,,30,59,,,,,,,,,",",,,,,,30,,,,40,,,,,,30,30,30,,30,30,30,,,,,,,,,29,,,,,59,,,,40,,,59","59,,79,,30,40,,,59,30,30,40,,30,30,30,30,,,141,141,141,,,,,59,,40,,59","29,,,,59,,98,232,,,232,,,232,98,232,,,,,,97,97,98,98,,,,,,144,30,,,59",",30,30,30,30,30,,30,,,,,,59,59,59,,,,,,,40,,85,85,,40,40,,,,,,59,,,",",,,,,144,,144,,144,232,,232,,232,,232,,,,,141,141,141,141,,141,,40,",",,,232,,,,,,,,,,,,,,,,,,,30,30,30,30,30,30,30,,59,,,,30,141,141,141","141,,30,30,30,30,,,,141,,,,,,,,,,30,,85,,85,,,85,85,,,,59,,40,40,40",",,,,,59,,40,98,,98,,,98,98,,,,,144,98,144,,,,,98,98,,30,,40,,,98,98","30,30,,,,,,,,30,,144,,,,,,,,,,,,,,,97,30,,59,,30,,,97,30,30,98,,59,",",,97,97,,,,,,,,,144,30,144,,144,,38,,,,85,38,,30,59,,,59,,,40,,,144","59,,,30,30,30,,,,,59,,,,59,,,,38,38,38,,,,30,,,,,,,,,,,,,,40,,,59,,","59,59,38,85,59,,,,,,59,59,38,38,38,59,59,,,,,,,,,,,,,,,,,,,,,,,,,,,98","30,,,,,,,,98,,,,98,,,,38,,,,,,,,,38,,38,,,,,85,,85,,85,,,30,97,,97,",",97,97,,,30,,,97,,,,98,,97,97,,,,,,,97,97,,,,,,85,,,85,,,,,,,,,,,,98","85,,,,,,,,,,,,,59,,,97,,,,30,38,,38,,,38,,30,,30,,,38,,,59,30,,38,38","59,59,,85,,,,,,,,59,85,85,,38,,30,,,30,,,,,,85,30,,59,,,,,,,,30,,,85","30,,,,,59,,,,,,,,,,,,,,,,,,,,,,30,,,30,30,,,30,,,,,,30,30,,,,30,30,",",,,,,,38,,,,38,,,97,38,38,,,,,,59,97,,,,97,,,,,85,,38,,,,,59,,85,,,85",",38,,,,,59,,,,,,59,,,,38,38,59,,,,,,,,97,,,,,,,,59,,,,,,,,,,,,,,,,,",",,,,,,97,,,,,,,,85,,,30,,,,,23,,,,,23,30,,,,30,,,,,59,,,,,,,,,,,,,,",",,,30,,,23,,30,30,,,,,59,59,,,,30,59,,,39,,,,,39,,,,,,23,,,30,,,,,,","23,109,109,,,,,,,,30,,,,,39,39,39,,,59,,59,59,,,,,,,,,,,,59,,,,,,85",",39,,,,,23,,,,,39,39,39,,23,,23,85,38,,,59,,,,,38,,,,,30,,,,38,,,,,",",,,,,,,30,,,,,,,,38,,39,38,30,,,104,104,,30,39,,39,,,30,,,,,,,,38,,",",,,,,30,,,,30,,,,,,,23,,23,,,23,,,38,,,38,23,,,38,,,23,23,,38,38,,,","38,38,,,,,,,,23,,,,,,,,,30,,,,,,,,,39,,39,,30,39,,,,,,,39,,,,,,39,39","30,30,,,109,,30,,,,,,109,,,39,,,,,,109,109,,103,103,,,,,,,,,,,,,,,,","23,,,,23,30,,,30,23,30,30,,,,,,,,,,,,30,,,,38,,,,,,,,,,,38,23,,,,,,",",,,,,,30,39,23,23,,39,,,,39,39,,,38,,104,,,38,,,,,104,,,,,39,38,,,104","104,,,,,,,39,,,,,,,38,71,,,,,71,,39,39,,,,,,,,38,,,,,,,,71,,,,,,,,,",",,71,71,71,,,109,,109,,,109,109,,,,,,109,,,,,,109,109,,,,71,,,109,109",",,,,,71,71,71,,,,,,,,,,,,,,,,,,102,102,,38,,,103,,,,,,109,,103,,,,,",",38,,103,103,,,38,71,,,,,,,,,71,,71,,,,38,,101,101,38,,,,,104,23,104",",,104,104,,,,,,104,,,,,,104,104,,,,,,,104,104,,,,,,,,,,,,23,,,23,,,","38,,,,,,,,39,,,,,38,,,39,23,,104,,,,,71,39,,,,38,38,,,,,38,71,100,100",",,109,71,,23,,39,23,,39,109,23,,,109,,,23,23,71,,,23,23,,,,,,,39,,,",",,38,39,,38,,,,,,,,103,,103,,,103,103,,,,39,109,103,39,,,,39,103,103",",,,39,39,,103,103,39,39,,,,102,,,38,,,,,102,,109,,,,,,,102,102,71,,",",71,,,104,71,71,,,,103,,,104,,,,104,,,,,,101,71,,,,,,,101,,,,,71,,,","101,101,,,,,,,,,,71,71,,,,,,,,,104,,,,,,,,,,,,,23,,,,,23,,,,,,,,,,39","23,,,104,,,,,,,39,,,,,,,,23,,,,,100,,,,,,,,100,,,,23,,39,,,100,100,39",",,,,103,,,,,,39,,,103,,,,103,,,,,,,102,,102,,39,102,102,,,,,,102,,,",",,102,102,,39,,,,,102,102,,,,,,,,,,103,,99,99,,,,,101,,101,,23,101,101",",,,,,101,,,,,,101,101,102,,23,,103,,101,101,23,,,,,,,,,,,,,,71,,23,",",,23,,71,,,,,,,39,,71,,,,,,101,,,,,,,,,,39,,,,,71,39,,71,,,,,,,100,","100,,,100,100,39,,23,,39,100,,71,,,,100,100,62,,,,,62,100,100,,,,,,",",,,,23,23,,71,62,,23,,,,71,,,,62,62,62,,62,102,,,,,39,,,100,102,,,,102",",,,,39,,,,,,,,,62,,,,23,62,62,39,39,62,,,,39,,,,,101,,,,,,,,,101,,,102","101,,,,,,,99,,,,,,,,99,,23,,,,,,39,99,99,39,62,,,,102,62,62,62,62,62",",62,,,,,,101,,,,,,,,,,,,,,,,71,,,,,,,,,,39,71,,,,,101,100,,,,,,,,,100",",,,100,,,,,,,,71,,,,,71,,,,,,,,,,,71,,,,,,,62,62,62,62,62,62,62,,,,",",62,100,,,,,62,62,62,62,,,,,,,71,,,,,,,62,,,,,,,,,,100,,,,,,,,,,,,,",",,,,,,99,,99,,,99,99,,,,,,99,,,,62,,99,99,,,,62,62,,99,99,,,,,62,,,",",,,,,,,,71,,,,,,62,,,,62,,,,,62,,,71,,,99,,,71,,,,,,,,,,,,,,,,71,,,","71,62,,,,,,,,,,,,,,62,62,62,,,,,,,,,,,,,,,,,,,62,,,,,,,,,,,,,,,71,,",",,,,,,,,,,71,,,,,,,,,,,,,,,,71,71,,,,,71,,,,,,,,,,,37,,,62,,,,99,,,37","37,37,,,,99,,,,99,,37,37,,37,37,,37,,71,,,71,,,,,,,,,62,37,37,,,,,,",",62,,,,,,,,,,,,99,,,,,,,,,,,,,71,,,,,,,,,,,,,,,,,,,99,,,,,,,,,,,,,,",",62,,,,,,,,,,62,,,,,,,,,,,,,,,,,,,,,,,,,,,,62,,,62,,,,,,,62,,,,,,,,",",62,,,,62,,,,,,,,,,,,,,,,,,,,,37,37,,,37,37,62,,,62,62,,,62,,,,,37,62","62,,,,62,62,,,,,,37,,,,,,,37,37,37,37,37,37,37,37,37,37,37,37,37,37","37,37,37,37,37,37,37,37,,,,,37,,,,,,,,,,,,,,,,,,,,,,,37,37,,,,,,,,37",",,,,,,37,,37,,,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,","62,,,,,,,,,,,,,,,,,,,,,,,62,,,,,62,62,,,,,,,,,,62,,,,,,,,,,,,,,,,,,62",",,,,37,,,,,,,,,,,,62,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,",",,,37,,,,,,,,,,,,,37,,62,,,,,,,,37,,37,37,37,,,,,62,,,,,,,,,,,,62,,",",,,62,,,,,,62,,,,,,,37,,,,,,,,,62,37,,37,,37,,,,,,,,,,,,,,,,37,,,,,",",,,,37,,,37,,37,,,,,,37,,,37,,,,,,,,,,62,,,37,37,,,,,,,,,,37,,,,,,,",",,,,,,,62,62,,,,,62,,,,,,,,,,,,37,37,37,,,,37,,,37,37,37,37,,,,37,37",",,,,,37,,,,,,,,,62,,62,62,,37,,,,,,,,,,62,,,,,,,,,,,,,,37,37,,,,,,,",",,,,,,62,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,37,,,37",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37",",,,,,,,37,,,,,,,,,,,,,37,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,37,37,37,37","37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,",",,,,37,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37"],racc_goto_check=arr=$$$("Array").$new(4752,nil),idx=0,$send(clist,"each",[],(function(str){return null==str&&(str=nil),$send(str.$split(",",-1),"each",[],(function(i){var $writer=nil;return null==i&&(i=nil),$truthy(i["$empty?"]())||($writer=[idx,i.$to_i()],$send(arr,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),idx=$rb_plus(idx,1)}),1)}),1),racc_goto_pointer=[nil,343,142,162,nil,134,154,106,86,56,-209,9,-441,-639,-723,nil,-407,59,167,-52,-129,111,35,2068,-107,-30,45,59,-108,164,1262,-210,-357,26,23,121,-26,3589,1625,2121,484,-424,-59,-57,-7,-419,-14,nil,-9,nil,180,66,-345,nil,nil,-193,53,-186,-458,1017,-350,nil,3145,282,104,130,-51,nil,-28,62,-303,2499,-2,-363,116,-4,nil,42,-220,291,20,nil,-5,166,-153,1195,153,63,235,-252,114,-28,-258,-332,-277,-480,nil,849,616,2504,2203,2113,2068,1856,1723,200,161,-51,nil,1618,-339,-763,-364,-596,155,nil,-173,35,nil,98,172,-135,173,-366,-397,-603,-161,-762,-466,-373,-760,-664,-141,-639,nil,-437,-722,nil,nil,-436,-27,269,-822,-716,413,-815,-438,-638,nil,-737,-842,-965,-973,-135,-575,194,-361,-88,-25,-714,-711,-394,-9,nil,-18,-18,nil,nil,-488,-796,-691,-919,-530,-844,34,-562,-553,-422,-760,nil,-620,nil,-620,-431,-425,nil,nil,-648,-424,-423,nil,-352,-816,-781,nil,-615,-612,nil,-89,nil,-390,nil,-558,nil,nil,-437,-353,-735,nil,nil,257,254,255,264,-250,-200,265,266,271,-274,-271,nil,nil,-259,-168,-98,nil,nil,-432,-311,-218,-569,230,-298,-730,-616,-983,nil,nil,-491],racc_goto_default=[nil,nil,nil,nil,5,nil,6,391,334,nil,nil,472,nil,984,nil,331,332,nil,nil,nil,13,14,22,247,nil,nil,16,nil,441,248,363,nil,nil,637,251,nil,27,25,252,246,517,nil,nil,nil,nil,nil,nil,386,143,26,nil,nil,nil,28,29,812,nil,nil,nil,351,nil,30,348,455,37,nil,nil,39,42,41,nil,243,244,403,nil,463,142,87,nil,446,103,51,54,283,nil,323,nil,891,456,nil,457,468,480,686,569,321,307,55,56,57,58,59,60,61,62,63,nil,308,69,70,nil,nil,nil,nil,nil,77,nil,619,78,230,nil,nil,nil,nil,nil,nil,nil,711,492,nil,712,713,478,474,475,nil,1179,707,1071,nil,479,nil,nil,nil,481,nil,483,nil,971,nil,nil,nil,490,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,467,nil,nil,791,783,nil,nil,nil,nil,nil,nil,1051,nil,736,937,738,739,743,740,741,nil,nil,742,744,nil,nil,nil,936,938,nil,748,750,751,752,753,nil,757,501,758,759,760,761,nil,nil,nil,86,88,89,nil,nil,nil,nil,647,nil,nil,nil,nil,nil,99,100,nil,231,901,234,477,nil,482,909,495,497,498,1082,502,1083,505,508,326],racc_reduce_table=[0,0,"racc_error",0,150,"_reduce_1",2,148,"_reduce_2",2,149,"_reduce_3",0,151,"_reduce_4",1,151,"_reduce_5",3,151,"_reduce_6",2,151,"_reduce_7",1,153,"_reduce_none",2,153,"_reduce_9",3,156,"_reduce_10",4,157,"_reduce_11",2,158,"_reduce_12",0,162,"_reduce_13",1,162,"_reduce_14",3,162,"_reduce_15",2,162,"_reduce_16",1,163,"_reduce_none",2,163,"_reduce_18",0,174,"_reduce_19",4,155,"_reduce_20",3,155,"_reduce_21",3,155,"_reduce_22",3,155,"_reduce_23",2,155,"_reduce_24",3,155,"_reduce_25",3,155,"_reduce_26",3,155,"_reduce_27",3,155,"_reduce_28",3,155,"_reduce_29",4,155,"_reduce_30",1,155,"_reduce_none",3,155,"_reduce_32",3,155,"_reduce_33",5,155,"_reduce_34",3,155,"_reduce_35",1,155,"_reduce_none",3,167,"_reduce_37",3,167,"_reduce_38",6,167,"_reduce_39",5,167,"_reduce_40",5,167,"_reduce_41",5,167,"_reduce_42",5,167,"_reduce_43",4,167,"_reduce_44",6,167,"_reduce_45",4,167,"_reduce_46",6,167,"_reduce_47",3,167,"_reduce_48",1,175,"_reduce_none",3,175,"_reduce_50",1,175,"_reduce_none",1,173,"_reduce_none",3,173,"_reduce_53",3,173,"_reduce_54",3,173,"_reduce_55",2,173,"_reduce_56",0,189,"_reduce_57",4,173,"_reduce_58",0,190,"_reduce_59",4,173,"_reduce_60",1,173,"_reduce_none",1,166,"_reduce_none",0,194,"_reduce_63",3,191,"_reduce_64",1,193,"_reduce_65",2,181,"_reduce_66",0,199,"_reduce_67",5,185,"_reduce_68",1,169,"_reduce_none",1,169,"_reduce_none",1,200,"_reduce_none",4,200,"_reduce_72",0,207,"_reduce_73",4,204,"_reduce_74",1,206,"_reduce_none",2,183,"_reduce_76",3,183,"_reduce_77",4,183,"_reduce_78",5,183,"_reduce_79",4,183,"_reduce_80",5,183,"_reduce_81",2,183,"_reduce_82",2,183,"_reduce_83",2,183,"_reduce_84",2,183,"_reduce_85",2,183,"_reduce_86",1,168,"_reduce_87",3,168,"_reduce_88",1,212,"_reduce_89",3,212,"_reduce_90",1,211,"_reduce_none",2,211,"_reduce_92",3,211,"_reduce_93",5,211,"_reduce_94",2,211,"_reduce_95",4,211,"_reduce_96",2,211,"_reduce_97",4,211,"_reduce_98",1,211,"_reduce_99",3,211,"_reduce_100",1,215,"_reduce_none",3,215,"_reduce_102",2,214,"_reduce_103",3,214,"_reduce_104",1,217,"_reduce_105",3,217,"_reduce_106",1,216,"_reduce_107",1,216,"_reduce_108",4,216,"_reduce_109",3,216,"_reduce_110",3,216,"_reduce_111",3,216,"_reduce_112",3,216,"_reduce_113",2,216,"_reduce_114",1,216,"_reduce_115",1,170,"_reduce_116",1,170,"_reduce_117",4,170,"_reduce_118",3,170,"_reduce_119",3,170,"_reduce_120",3,170,"_reduce_121",3,170,"_reduce_122",2,170,"_reduce_123",1,170,"_reduce_124",1,220,"_reduce_125",1,220,"_reduce_none",2,221,"_reduce_127",1,221,"_reduce_128",3,221,"_reduce_129",1,195,"_reduce_none",1,195,"_reduce_none",1,195,"_reduce_none",1,195,"_reduce_none",1,195,"_reduce_none",1,164,"_reduce_135",1,164,"_reduce_none",1,165,"_reduce_137",0,225,"_reduce_138",4,165,"_reduce_139",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,222,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",1,223,"_reduce_none",3,184,"_reduce_211",3,184,"_reduce_212",6,184,"_reduce_213",5,184,"_reduce_214",5,184,"_reduce_215",5,184,"_reduce_216",5,184,"_reduce_217",4,184,"_reduce_218",3,184,"_reduce_219",3,184,"_reduce_220",3,184,"_reduce_221",2,184,"_reduce_222",2,184,"_reduce_223",2,184,"_reduce_224",2,184,"_reduce_225",3,184,"_reduce_226",3,184,"_reduce_227",3,184,"_reduce_228",3,184,"_reduce_229",3,184,"_reduce_230",3,184,"_reduce_231",4,184,"_reduce_232",2,184,"_reduce_233",2,184,"_reduce_234",3,184,"_reduce_235",3,184,"_reduce_236",3,184,"_reduce_237",3,184,"_reduce_238",1,184,"_reduce_none",3,184,"_reduce_240",3,184,"_reduce_241",3,184,"_reduce_242",3,184,"_reduce_243",3,184,"_reduce_244",2,184,"_reduce_245",2,184,"_reduce_246",3,184,"_reduce_247",3,184,"_reduce_248",3,184,"_reduce_249",3,184,"_reduce_250",0,231,"_reduce_251",4,184,"_reduce_252",6,184,"_reduce_253",4,184,"_reduce_254",6,184,"_reduce_255",4,184,"_reduce_256",6,184,"_reduce_257",1,184,"_reduce_none",1,230,"_reduce_none",1,230,"_reduce_none",1,230,"_reduce_none",1,230,"_reduce_none",3,228,"_reduce_263",3,228,"_reduce_264",1,232,"_reduce_none",1,233,"_reduce_none",2,233,"_reduce_none",4,233,"_reduce_268",2,233,"_reduce_269",1,226,"_reduce_none",3,226,"_reduce_271",3,238,"_reduce_272",5,238,"_reduce_273",3,238,"_reduce_274",0,240,"_reduce_275",1,240,"_reduce_none",0,178,"_reduce_277",1,178,"_reduce_none",2,178,"_reduce_none",4,178,"_reduce_280",2,178,"_reduce_281",1,210,"_reduce_282",2,210,"_reduce_283",2,210,"_reduce_284",4,210,"_reduce_285",1,210,"_reduce_286",0,243,"_reduce_287",2,203,"_reduce_288",2,242,"_reduce_289",1,242,"_reduce_290",2,241,"_reduce_291",0,241,"_reduce_292",1,235,"_reduce_293",2,235,"_reduce_294",3,235,"_reduce_295",4,235,"_reduce_296",1,172,"_reduce_297",1,172,"_reduce_none",3,171,"_reduce_299",4,171,"_reduce_300",2,171,"_reduce_301",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_none",1,229,"_reduce_312",0,267,"_reduce_313",4,229,"_reduce_314",0,268,"_reduce_315",4,229,"_reduce_316",0,269,"_reduce_317",4,229,"_reduce_318",3,229,"_reduce_319",3,229,"_reduce_320",2,229,"_reduce_321",3,229,"_reduce_322",3,229,"_reduce_323",1,229,"_reduce_324",4,229,"_reduce_325",3,229,"_reduce_326",1,229,"_reduce_327",0,270,"_reduce_328",6,229,"_reduce_329",4,229,"_reduce_330",3,229,"_reduce_331",2,229,"_reduce_332",1,229,"_reduce_none",2,229,"_reduce_334",1,229,"_reduce_none",6,229,"_reduce_336",6,229,"_reduce_337",4,229,"_reduce_338",4,229,"_reduce_339",5,229,"_reduce_340",4,229,"_reduce_341",5,229,"_reduce_342",6,229,"_reduce_343",0,271,"_reduce_344",6,229,"_reduce_345",0,272,"_reduce_346",7,229,"_reduce_347",0,273,"_reduce_348",5,229,"_reduce_349",4,229,"_reduce_350",4,229,"_reduce_351",1,229,"_reduce_352",1,229,"_reduce_353",1,229,"_reduce_354",1,229,"_reduce_355",1,177,"_reduce_none",1,262,"_reduce_357",1,265,"_reduce_358",1,196,"_reduce_359",1,209,"_reduce_360",1,257,"_reduce_none",1,257,"_reduce_none",2,257,"_reduce_363",1,192,"_reduce_none",1,192,"_reduce_none",1,258,"_reduce_none",5,258,"_reduce_367",1,160,"_reduce_none",2,160,"_reduce_369",1,261,"_reduce_none",1,261,"_reduce_none",1,274,"_reduce_372",3,274,"_reduce_373",1,277,"_reduce_374",3,277,"_reduce_375",1,276,"_reduce_none",3,276,"_reduce_377",5,276,"_reduce_378",1,276,"_reduce_379",3,276,"_reduce_380",2,278,"_reduce_381",1,278,"_reduce_382",1,279,"_reduce_none",1,279,"_reduce_none",0,284,"_reduce_385",2,282,"_reduce_386",4,283,"_reduce_387",2,283,"_reduce_388",2,283,"_reduce_389",1,283,"_reduce_390",2,288,"_reduce_391",0,288,"_reduce_392",1,289,"_reduce_none",6,290,"_reduce_394",8,290,"_reduce_395",4,290,"_reduce_396",6,290,"_reduce_397",4,290,"_reduce_398",2,290,"_reduce_none",6,290,"_reduce_400",2,290,"_reduce_401",4,290,"_reduce_402",6,290,"_reduce_403",2,290,"_reduce_404",4,290,"_reduce_405",2,290,"_reduce_406",4,290,"_reduce_407",1,290,"_reduce_none",0,294,"_reduce_409",1,294,"_reduce_410",3,295,"_reduce_411",4,295,"_reduce_412",1,296,"_reduce_413",4,296,"_reduce_414",1,297,"_reduce_415",3,297,"_reduce_416",1,298,"_reduce_417",1,298,"_reduce_none",0,302,"_reduce_419",0,303,"_reduce_420",5,256,"_reduce_421",4,300,"_reduce_422",1,300,"_reduce_423",0,306,"_reduce_424",4,301,"_reduce_425",0,307,"_reduce_426",4,301,"_reduce_427",0,309,"_reduce_428",4,305,"_reduce_429",2,201,"_reduce_430",4,201,"_reduce_431",5,201,"_reduce_432",5,201,"_reduce_433",2,255,"_reduce_434",4,255,"_reduce_435",4,255,"_reduce_436",3,255,"_reduce_437",3,255,"_reduce_438",3,255,"_reduce_439",2,255,"_reduce_440",1,255,"_reduce_441",4,255,"_reduce_442",0,311,"_reduce_443",4,254,"_reduce_444",0,312,"_reduce_445",4,254,"_reduce_446",0,313,"_reduce_447",3,205,"_reduce_448",0,314,"_reduce_449",0,315,"_reduce_450",4,308,"_reduce_451",5,259,"_reduce_452",1,316,"_reduce_453",1,316,"_reduce_none",0,319,"_reduce_455",0,320,"_reduce_456",7,260,"_reduce_457",1,318,"_reduce_458",1,318,"_reduce_none",1,317,"_reduce_460",3,317,"_reduce_461",3,317,"_reduce_462",1,188,"_reduce_none",2,188,"_reduce_464",3,188,"_reduce_465",1,188,"_reduce_466",1,188,"_reduce_467",1,188,"_reduce_468",1,321,"_reduce_none",3,326,"_reduce_470",1,326,"_reduce_none",3,328,"_reduce_472",1,328,"_reduce_none",1,330,"_reduce_474",1,331,"_reduce_475",1,329,"_reduce_none",1,329,"_reduce_none",4,329,"_reduce_478",4,329,"_reduce_479",4,329,"_reduce_480",3,329,"_reduce_481",4,329,"_reduce_482",4,329,"_reduce_483",4,329,"_reduce_484",3,329,"_reduce_485",3,329,"_reduce_486",3,329,"_reduce_487",2,329,"_reduce_488",0,335,"_reduce_489",4,329,"_reduce_490",2,329,"_reduce_491",0,336,"_reduce_492",4,329,"_reduce_493",1,322,"_reduce_494",1,322,"_reduce_495",2,322,"_reduce_496",3,322,"_reduce_497",5,322,"_reduce_498",2,322,"_reduce_499",4,322,"_reduce_500",1,322,"_reduce_none",2,337,"_reduce_502",3,337,"_reduce_503",1,324,"_reduce_504",3,324,"_reduce_505",5,323,"_reduce_506",2,340,"_reduce_507",1,340,"_reduce_508",1,339,"_reduce_509",3,339,"_reduce_510",1,338,"_reduce_none",3,325,"_reduce_512",1,325,"_reduce_513",2,325,"_reduce_514",1,325,"_reduce_515",1,341,"_reduce_516",3,341,"_reduce_517",2,343,"_reduce_518",1,343,"_reduce_519",1,344,"_reduce_520",3,344,"_reduce_521",2,346,"_reduce_522",1,346,"_reduce_523",2,348,"_reduce_524",1,342,"_reduce_none",1,342,"_reduce_none",1,332,"_reduce_none",3,332,"_reduce_528",3,332,"_reduce_529",2,332,"_reduce_530",2,332,"_reduce_531",1,332,"_reduce_none",1,332,"_reduce_none",1,332,"_reduce_none",2,332,"_reduce_535",2,332,"_reduce_536",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_none",1,349,"_reduce_545",1,349,"_reduce_none",1,327,"_reduce_547",2,350,"_reduce_548",2,350,"_reduce_549",4,351,"_reduce_550",2,333,"_reduce_551",3,333,"_reduce_552",1,333,"_reduce_553",6,159,"_reduce_554",0,159,"_reduce_555",1,353,"_reduce_556",1,353,"_reduce_none",1,353,"_reduce_none",2,354,"_reduce_559",1,354,"_reduce_none",2,161,"_reduce_561",1,161,"_reduce_none",1,244,"_reduce_none",1,244,"_reduce_none",1,245,"_reduce_565",1,356,"_reduce_566",2,356,"_reduce_567",3,357,"_reduce_568",1,357,"_reduce_569",1,357,"_reduce_570",3,246,"_reduce_571",4,247,"_reduce_572",3,248,"_reduce_573",0,360,"_reduce_574",3,360,"_reduce_575",1,361,"_reduce_576",2,361,"_reduce_577",3,250,"_reduce_578",0,363,"_reduce_579",3,363,"_reduce_580",3,249,"_reduce_581",3,251,"_reduce_582",0,364,"_reduce_583",3,364,"_reduce_584",0,365,"_reduce_585",3,365,"_reduce_586",0,345,"_reduce_587",2,345,"_reduce_588",0,358,"_reduce_589",2,358,"_reduce_590",0,359,"_reduce_591",2,359,"_reduce_592",1,362,"_reduce_593",2,362,"_reduce_594",0,367,"_reduce_595",4,362,"_reduce_596",1,366,"_reduce_597",1,366,"_reduce_598",1,366,"_reduce_599",1,366,"_reduce_none",1,224,"_reduce_none",1,224,"_reduce_none",1,368,"_reduce_603",3,369,"_reduce_604",1,355,"_reduce_605",2,355,"_reduce_606",1,227,"_reduce_607",1,227,"_reduce_608",1,227,"_reduce_609",1,227,"_reduce_610",1,352,"_reduce_611",1,352,"_reduce_612",1,352,"_reduce_613",1,218,"_reduce_614",1,218,"_reduce_615",1,218,"_reduce_616",1,218,"_reduce_617",1,218,"_reduce_618",1,219,"_reduce_619",1,219,"_reduce_620",1,219,"_reduce_621",1,219,"_reduce_622",1,219,"_reduce_623",1,219,"_reduce_624",1,219,"_reduce_625",1,252,"_reduce_626",1,252,"_reduce_627",1,176,"_reduce_628",1,176,"_reduce_629",1,186,"_reduce_630",1,186,"_reduce_631",0,370,"_reduce_632",4,263,"_reduce_633",0,263,"_reduce_634",1,182,"_reduce_none",1,182,"_reduce_636",3,371,"_reduce_637",1,266,"_reduce_none",0,373,"_reduce_639",3,266,"_reduce_640",4,372,"_reduce_641",2,372,"_reduce_642",2,372,"_reduce_643",1,372,"_reduce_644",1,372,"_reduce_645",2,375,"_reduce_646",0,375,"_reduce_647",6,304,"_reduce_648",8,304,"_reduce_649",4,304,"_reduce_650",6,304,"_reduce_651",4,304,"_reduce_652",6,304,"_reduce_653",2,304,"_reduce_654",4,304,"_reduce_655",6,304,"_reduce_656",2,304,"_reduce_657",4,304,"_reduce_658",2,304,"_reduce_659",4,304,"_reduce_660",1,304,"_reduce_661",0,304,"_reduce_662",1,239,"_reduce_663",1,299,"_reduce_664",1,299,"_reduce_665",1,299,"_reduce_666",1,299,"_reduce_667",1,275,"_reduce_none",1,275,"_reduce_669",1,377,"_reduce_670",1,378,"_reduce_671",3,378,"_reduce_672",1,291,"_reduce_673",3,291,"_reduce_674",1,379,"_reduce_675",2,380,"_reduce_676",1,380,"_reduce_677",2,381,"_reduce_678",1,381,"_reduce_679",1,285,"_reduce_680",3,285,"_reduce_681",1,374,"_reduce_682",3,374,"_reduce_683",1,347,"_reduce_none",1,347,"_reduce_none",2,281,"_reduce_686",2,280,"_reduce_687",1,280,"_reduce_688",3,382,"_reduce_689",3,383,"_reduce_690",1,292,"_reduce_691",3,292,"_reduce_692",1,376,"_reduce_693",3,376,"_reduce_694",1,384,"_reduce_none",1,384,"_reduce_none",2,293,"_reduce_697",1,293,"_reduce_698",1,385,"_reduce_none",1,385,"_reduce_none",2,287,"_reduce_701",1,287,"_reduce_702",2,286,"_reduce_703",0,286,"_reduce_704",1,197,"_reduce_none",3,197,"_reduce_706",0,253,"_reduce_707",2,253,"_reduce_none",1,237,"_reduce_709",3,237,"_reduce_710",3,386,"_reduce_711",2,386,"_reduce_712",1,386,"_reduce_713",4,386,"_reduce_714",2,386,"_reduce_715",1,208,"_reduce_none",1,208,"_reduce_none",1,208,"_reduce_none",1,202,"_reduce_none",1,202,"_reduce_none",1,202,"_reduce_none",1,202,"_reduce_none",1,310,"_reduce_none",1,310,"_reduce_none",1,310,"_reduce_none",1,198,"_reduce_none",1,198,"_reduce_none",1,180,"_reduce_728",1,180,"_reduce_729",0,152,"_reduce_none",1,152,"_reduce_none",0,187,"_reduce_none",1,187,"_reduce_none",2,213,"_reduce_734",2,179,"_reduce_735",2,334,"_reduce_736",0,236,"_reduce_none",1,236,"_reduce_none",1,236,"_reduce_none",1,264,"_reduce_740",1,264,"_reduce_none",1,154,"_reduce_none",2,154,"_reduce_none",0,234,"_reduce_744"],745,1238,racc_token_table=$hash(!1,0,"error",1,"kCLASS",2,"kMODULE",3,"kDEF",4,"kUNDEF",5,"kBEGIN",6,"kRESCUE",7,"kENSURE",8,"kEND",9,"kIF",10,"kUNLESS",11,"kTHEN",12,"kELSIF",13,"kELSE",14,"kCASE",15,"kWHEN",16,"kWHILE",17,"kUNTIL",18,"kFOR",19,"kBREAK",20,"kNEXT",21,"kREDO",22,"kRETRY",23,"kIN",24,"kDO",25,"kDO_COND",26,"kDO_BLOCK",27,"kDO_LAMBDA",28,"kRETURN",29,"kYIELD",30,"kSUPER",31,"kSELF",32,"kNIL",33,"kTRUE",34,"kFALSE",35,"kAND",36,"kOR",37,"kNOT",38,"kIF_MOD",39,"kUNLESS_MOD",40,"kWHILE_MOD",41,"kUNTIL_MOD",42,"kRESCUE_MOD",43,"kALIAS",44,"kDEFINED",45,"klBEGIN",46,"klEND",47,"k__LINE__",48,"k__FILE__",49,"k__ENCODING__",50,"tIDENTIFIER",51,"tFID",52,"tGVAR",53,"tIVAR",54,"tCONSTANT",55,"tLABEL",56,"tCVAR",57,"tNTH_REF",58,"tBACK_REF",59,"tSTRING_CONTENT",60,"tINTEGER",61,"tFLOAT",62,"tUPLUS",63,"tUMINUS",64,"tUNARY_NUM",65,"tPOW",66,"tCMP",67,"tEQ",68,"tEQQ",69,"tNEQ",70,"tGEQ",71,"tLEQ",72,"tANDOP",73,"tOROP",74,"tMATCH",75,"tNMATCH",76,"tDOT",77,"tDOT2",78,"tDOT3",79,"tAREF",80,"tASET",81,"tLSHFT",82,"tRSHFT",83,"tCOLON2",84,"tCOLON3",85,"tOP_ASGN",86,"tASSOC",87,"tLPAREN",88,"tLPAREN2",89,"tRPAREN",90,"tLPAREN_ARG",91,"tLBRACK",92,"tLBRACK2",93,"tRBRACK",94,"tLBRACE",95,"tLBRACE_ARG",96,"tSTAR",97,"tSTAR2",98,"tAMPER",99,"tAMPER2",100,"tTILDE",101,"tPERCENT",102,"tDIVIDE",103,"tDSTAR",104,"tPLUS",105,"tMINUS",106,"tLT",107,"tGT",108,"tPIPE",109,"tBANG",110,"tCARET",111,"tLCURLY",112,"tRCURLY",113,"tBACK_REF2",114,"tSYMBEG",115,"tSTRING_BEG",116,"tXSTRING_BEG",117,"tREGEXP_BEG",118,"tREGEXP_OPT",119,"tWORDS_BEG",120,"tQWORDS_BEG",121,"tSYMBOLS_BEG",122,"tQSYMBOLS_BEG",123,"tSTRING_DBEG",124,"tSTRING_DVAR",125,"tSTRING_END",126,"tSTRING_DEND",127,"tSTRING",128,"tSYMBOL",129,"tNL",130,"tEH",131,"tCOLON",132,"tCOMMA",133,"tSPACE",134,"tSEMI",135,"tLAMBDA",136,"tLAMBEG",137,"tCHARACTER",138,"tRATIONAL",139,"tIMAGINARY",140,"tLABEL_END",141,"tANDDOT",142,"tBDOT2",143,"tBDOT3",144,"tEQL",145,"tLOWEST",146),147,!0,$const_set($nesting[0],"Racc_arg",[racc_action_table,racc_action_check,racc_action_default,racc_action_pointer,racc_goto_table,racc_goto_check,racc_goto_default,racc_goto_pointer,147,racc_reduce_table,racc_token_table,1238,745,true]),$const_set($nesting[0],"Racc_token_to_s_table",["$end","error","kCLASS","kMODULE","kDEF","kUNDEF","kBEGIN","kRESCUE","kENSURE","kEND","kIF","kUNLESS","kTHEN","kELSIF","kELSE","kCASE","kWHEN","kWHILE","kUNTIL","kFOR","kBREAK","kNEXT","kREDO","kRETRY","kIN","kDO","kDO_COND","kDO_BLOCK","kDO_LAMBDA","kRETURN","kYIELD","kSUPER","kSELF","kNIL","kTRUE","kFALSE","kAND","kOR","kNOT","kIF_MOD","kUNLESS_MOD","kWHILE_MOD","kUNTIL_MOD","kRESCUE_MOD","kALIAS","kDEFINED","klBEGIN","klEND","k__LINE__","k__FILE__","k__ENCODING__","tIDENTIFIER","tFID","tGVAR","tIVAR","tCONSTANT","tLABEL","tCVAR","tNTH_REF","tBACK_REF","tSTRING_CONTENT","tINTEGER","tFLOAT","tUPLUS","tUMINUS","tUNARY_NUM","tPOW","tCMP","tEQ","tEQQ","tNEQ","tGEQ","tLEQ","tANDOP","tOROP","tMATCH","tNMATCH","tDOT","tDOT2","tDOT3","tAREF","tASET","tLSHFT","tRSHFT","tCOLON2","tCOLON3","tOP_ASGN","tASSOC","tLPAREN","tLPAREN2","tRPAREN","tLPAREN_ARG","tLBRACK","tLBRACK2","tRBRACK","tLBRACE","tLBRACE_ARG","tSTAR","tSTAR2","tAMPER","tAMPER2","tTILDE","tPERCENT","tDIVIDE","tDSTAR","tPLUS","tMINUS","tLT","tGT","tPIPE","tBANG","tCARET","tLCURLY","tRCURLY","tBACK_REF2","tSYMBEG","tSTRING_BEG","tXSTRING_BEG","tREGEXP_BEG","tREGEXP_OPT","tWORDS_BEG","tQWORDS_BEG","tSYMBOLS_BEG","tQSYMBOLS_BEG","tSTRING_DBEG","tSTRING_DVAR","tSTRING_END","tSTRING_DEND","tSTRING","tSYMBOL","tNL","tEH","tCOLON","tCOMMA","tSPACE","tSEMI","tLAMBDA","tLAMBEG","tCHARACTER","tRATIONAL","tIMAGINARY","tLABEL_END","tANDDOT","tBDOT2","tBDOT3","tEQL","tLOWEST","$start","program","top_compstmt","@1","top_stmts","opt_terms","top_stmt","terms","stmt","begin_block","bodystmt","compstmt","opt_rescue","opt_else","opt_ensure","stmts","stmt_or_begin","fitem","undef_list","expr_value","command_asgn","mlhs","command_call","lhs","mrhs","mrhs_arg","expr","@2","command_rhs","var_lhs","primary_value","opt_call_args","rbracket","call_op","defn_head","f_opt_paren_args","command","arg","defs_head","backref","opt_nl","p_top_expr_body","@3","@4","expr_value_do","do","def_name","@5","fname","k_def","singleton","dot_or_colon","@6","block_command","block_call","operation2","command_args","cmd_brace_block","brace_body","fcall","@7","operation","k_return","call_args","mlhs_basic","mlhs_inner","rparen","mlhs_head","mlhs_item","mlhs_node","mlhs_post","user_variable","keyword_variable","cname","cpath","op","reswords","symbol","@8","arg_rhs","simple_numeric","rel_expr","primary","relop","@9","arg_value","aref_args","none","args","trailer","assocs","paren_args","args_forward","opt_paren_args","opt_block_arg","block_arg","@10","literal","strings","xstring","regexp","words","qwords","symbols","qsymbols","var_ref","assoc_list","brace_block","method_call","lambda","then","if_tail","case_body","p_case_body","for_var","k_class","superclass","term","k_module","f_arglist","@11","@12","@13","@14","@15","@16","@17","f_marg","f_norm_arg","f_margs","f_marg_list","f_rest_marg","f_any_kwrest","f_kwrest","f_no_kwarg","f_eq","block_args_tail","@18","f_block_kwarg","opt_f_block_arg","f_block_arg","opt_block_args_tail","excessed_comma","block_param","f_arg","f_block_optarg","f_rest_arg","opt_block_param","block_param_def","opt_bv_decl","bv_decls","bvar","f_bad_arg","f_larglist","lambda_body","@19","@20","f_args","do_block","@21","@22","do_body","@23","operation3","@24","@25","@26","@27","@28","cases","p_top_expr","p_cases","@29","@30","p_expr","p_args","p_find","p_args_tail","p_kwargs","p_as","p_variable","p_alt","p_expr_basic","p_lparen","p_lbracket","p_value","p_const","rbrace","@31","@32","p_args_head","p_arg","p_args_post","p_rest","p_kwarg","p_any_kwrest","p_kw","p_kw_label","string_contents","p_kwrest","kwrest_mark","p_kwnorest","p_primitive","p_var_ref","p_expr_ref","nonlocal_var","exc_list","exc_var","numeric","string","string1","xstring_contents","regexp_contents","word_list","word","string_content","symbol_list","qword_list","qsym_list","string_dvar","@33","ssym","dsym","@34","f_paren_args","args_tail","@35","f_kwarg","opt_args_tail","f_optarg","f_arg_asgn","f_arg_item","f_label","f_kw","f_block_kw","f_opt","f_block_opt","restarg_mark","blkarg_mark","assoc"]),$const_set($nesting[0],"Racc_debug_parser",!1),$def(self,"$_reduce_1",(function(val,_values,result){return this.current_arg_stack.$push(nil),this.max_numparam_stack.$push($hash2(["static"],{static:!0})),result}),3),$def(self,"$_reduce_2",(function(val,_values,result){return result=val["$[]"](1),this.current_arg_stack.$pop(),this.max_numparam_stack.$pop(),result}),3),$def(self,"$_reduce_3",(function(val,_values,result){return this.builder.$compstmt(val["$[]"](0))}),3),$def(self,"$_reduce_4",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_5",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_6",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_7",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_9",(function(val,_values,result){return $send(this.builder,"preexe",[val["$[]"](0)].concat($to_a(val["$[]"](1))))}),3),$def(self,"$_reduce_10",(function(val,_values,result){return val}),3),$def(self,"$_reduce_11",(function(val,_values,result){var $a,$b,else_,ensure_t,ensure_,rescue_bodies=nil,else_t=nil;return rescue_bodies=val["$[]"](1),$b=val["$[]"](2),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],$b=val["$[]"](3),ensure_t=null==($a=$to_ary($b))[0]?nil:$a[0],ensure_=null==$a[1]?nil:$a[1],$truthy(rescue_bodies["$empty?"]())&&$not(else_t["$nil?"]())&&this.$diagnostic("error","useless_else",nil,else_t),this.builder.$begin_body(val["$[]"](0),rescue_bodies,else_t,else_,ensure_t,ensure_)}),3),$def(self,"$_reduce_12",(function(val,_values,result){return this.builder.$compstmt(val["$[]"](0))}),3),$def(self,"$_reduce_13",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_14",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_15",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_16",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_18",(function(val,_values,result){return this.$diagnostic("error","begin_in_method",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_19",(function(val,_values,result){var $writer;return $writer=["expr_fname"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_20",(function(val,_values,result){return this.builder.$alias(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_21",(function(val,_values,result){return this.builder.$alias(val["$[]"](0),this.builder.$gvar(val["$[]"](1)),this.builder.$gvar(val["$[]"](2)))}),3),$def(self,"$_reduce_22",(function(val,_values,result){return this.builder.$alias(val["$[]"](0),this.builder.$gvar(val["$[]"](1)),this.builder.$back_ref(val["$[]"](2)))}),3),$def(self,"$_reduce_23",(function(val,_values,result){return this.$diagnostic("error","nth_ref_alias",nil,val["$[]"](2)),result}),3),$def(self,"$_reduce_24",(function(val,_values,result){return this.builder.$undef_method(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_25",(function(val,_values,result){return this.builder.$condition_mod(val["$[]"](0),nil,val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_26",(function(val,_values,result){return this.builder.$condition_mod(nil,val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_27",(function(val,_values,result){return this.builder.$loop_mod("while",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_28",(function(val,_values,result){return this.builder.$loop_mod("until",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_29",(function(val,_values,result){var rescue_body;return rescue_body=this.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2)),this.builder.$begin_body(val["$[]"](0),[rescue_body])}),3),$def(self,"$_reduce_30",(function(val,_values,result){return this.builder.$postexe(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_32",(function(val,_values,result){return this.builder.$multi_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_33",(function(val,_values,result){return this.builder.$assign(val["$[]"](0),val["$[]"](1),this.builder.$array(nil,val["$[]"](2),nil))}),3),$def(self,"$_reduce_34",(function(val,_values,result){var rescue_body,begin_body;return rescue_body=this.builder.$rescue_body(val["$[]"](3),nil,nil,nil,nil,val["$[]"](4)),begin_body=this.builder.$begin_body(val["$[]"](2),[rescue_body]),this.builder.$multi_assign(val["$[]"](0),val["$[]"](1),begin_body)}),3),$def(self,"$_reduce_35",(function(val,_values,result){return this.builder.$multi_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_37",(function(val,_values,result){return this.builder.$assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_38",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_39",(function(val,_values,result){return this.builder.$op_assign(this.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3)),val["$[]"](4),val["$[]"](5))}),3),$def(self,"$_reduce_40",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_41",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_42",(function(val,_values,result){var const$;return const$=this.builder.$const_op_assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))),this.builder.$op_assign(const$,val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_43",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_44",(function(val,_values,result){var $a,$b,$c,def_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==($c=$to_ary(null==$a[1]?nil:$a[1]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),result=this.builder.$def_endless_method(def_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_45",(function(val,_values,result){var $a,$b,$c,def_t,name_t,rescue_body,method_body,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==($c=$to_ary(null==$a[1]?nil:$a[1]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=this.builder.$def_endless_method(def_t,name_t,val["$[]"](1),val["$[]"](2),method_body),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_46",(function(val,_values,result){var $a,$b,$c,def_t,recv,dot_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],recv=null==$a[1]?nil:$a[1],dot_t=null==$a[2]?nil:$a[2],name_t=null==($c=$to_ary(null==$a[3]?nil:$a[3]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),result=this.builder.$def_endless_singleton(def_t,recv,dot_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_47",(function(val,_values,result){var $a,$b,$c,def_t,recv,dot_t,name_t,rescue_body,method_body,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],recv=null==$a[1]?nil:$a[1],dot_t=null==$a[2]?nil:$a[2],name_t=null==($c=$to_ary(null==$a[3]?nil:$a[3]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=this.builder.$def_endless_singleton(def_t,recv,dot_t,name_t,val["$[]"](1),val["$[]"](2),method_body),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_48",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2)),result}),3),$def(self,"$_reduce_50",(function(val,_values,result){var rescue_body;return rescue_body=this.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2)),this.builder.$begin_body(val["$[]"](0),[rescue_body])}),3),$def(self,"$_reduce_53",(function(val,_values,result){return this.builder.$logical_op("and",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_54",(function(val,_values,result){return this.builder.$logical_op("or",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_55",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),nil,val["$[]"](2),nil)}),3),$def(self,"$_reduce_56",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_57",(function(val,_values,result){var $writer=nil;return $writer=["expr_beg"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.lexer,"command_start=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.pattern_variables.$push(),result=this.context.$in_kwarg(),$writer=[!0],$send(this.context,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_58",(function(val,_values,result){var $writer;return this.pattern_variables.$pop(),$writer=[val["$[]"](2)],$send(this.context,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$match_pattern(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_59",(function(val,_values,result){var $writer=nil;return $writer=["expr_beg"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.lexer,"command_start=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.pattern_variables.$push(),result=this.context.$in_kwarg(),$writer=[!0],$send(this.context,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_60",(function(val,_values,result){var $writer;return this.pattern_variables.$pop(),$writer=[val["$[]"](2)],$send(this.context,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$match_pattern_p(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_63",(function(val,_values,result){return this.lexer.$cond().$push(!0),result}),3),$def(self,"$_reduce_64",(function(val,_values,result){return this.lexer.$cond().$pop(),[val["$[]"](1),val["$[]"](2)]}),3),$def(self,"$_reduce_65",(function(val,_values,result){var $writer;return this.$local_push(),this.current_arg_stack.$push(nil),result=[val["$[]"](0),this.context.$dup()],$writer=[!0],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_66",(function(val,_values,result){return[val["$[]"](0),val["$[]"](1)]}),3),$def(self,"$_reduce_67",(function(val,_values,result){var $writer=nil;return $writer=["expr_fname"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_68",(function(val,_values,result){return[val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](4)]}),3),$def(self,"$_reduce_72",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil)}),3),$def(self,"$_reduce_73",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_74",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_block()],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)])}),3),$def(self,"$_reduce_76",(function(val,_values,result){return this.builder.$call_method(nil,nil,val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_77",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(nil,nil,val["$[]"](0),nil,val["$[]"](1),nil),$b=val["$[]"](2),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_78",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil)}),3),$def(self,"$_reduce_79",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_80",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil)}),3),$def(self,"$_reduce_81",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_82",(function(val,_values,result){return this.builder.$keyword_cmd("super",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_83",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_84",(function(val,_values,result){return this.builder.$keyword_cmd("return",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_85",(function(val,_values,result){return this.builder.$keyword_cmd("break",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_86",(function(val,_values,result){return this.builder.$keyword_cmd("next",val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_87",(function(val,_values,result){return this.builder.$multi_lhs(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_88",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_89",(function(val,_values,result){return this.builder.$multi_lhs(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_90",(function(val,_values,result){return this.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_92",(function(val,_values,result){return val["$[]"](0).$push(val["$[]"](1))}),3),$def(self,"$_reduce_93",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1),val["$[]"](2)))}),3),$def(self,"$_reduce_94",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1),val["$[]"](2))).$concat(val["$[]"](4))}),3),$def(self,"$_reduce_95",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1)))}),3),$def(self,"$_reduce_96",(function(val,_values,result){return val["$[]"](0).$push(this.builder.$splat(val["$[]"](1))).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_97",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_98",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))].concat($to_a(val["$[]"](3)))}),3),$def(self,"$_reduce_99",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0))]}),3),$def(self,"$_reduce_100",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0))].concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_102",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_103",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_104",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_105",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_106",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_107",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_108",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_109",(function(val,_values,result){return this.builder.$index_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_110",(function(val,_values,result){return $eqeq(val["$[]"](1)["$[]"](0),"anddot")&&this.$diagnostic("error","csend_in_lhs_of_masgn",nil,val["$[]"](1)),this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_111",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_112",(function(val,_values,result){return $eqeq(val["$[]"](1)["$[]"](0),"anddot")&&this.$diagnostic("error","csend_in_lhs_of_masgn",nil,val["$[]"](1)),this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_113",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2)))}),3),$def(self,"$_reduce_114",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_global(val["$[]"](0),val["$[]"](1)))}),3),$def(self,"$_reduce_115",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_116",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_117",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_118",(function(val,_values,result){return this.builder.$index_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_119",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_120",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_121",(function(val,_values,result){return this.builder.$attr_asgn(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_122",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2)))}),3),$def(self,"$_reduce_123",(function(val,_values,result){return this.builder.$assignable(this.builder.$const_global(val["$[]"](0),val["$[]"](1)))}),3),$def(self,"$_reduce_124",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_125",(function(val,_values,result){return this.$diagnostic("error","module_name_const",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_127",(function(val,_values,result){return this.builder.$const_global(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_128",(function(val,_values,result){return this.builder.$const(val["$[]"](0))}),3),$def(self,"$_reduce_129",(function(val,_values,result){return this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_135",(function(val,_values,result){return this.builder.$symbol_internal(val["$[]"](0))}),3),$def(self,"$_reduce_137",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_138",(function(val,_values,result){var $writer;return $writer=["expr_fname"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_139",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](3))}),3),$def(self,"$_reduce_211",(function(val,_values,result){return this.builder.$assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_212",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_213",(function(val,_values,result){return this.builder.$op_assign(this.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3)),val["$[]"](4),val["$[]"](5))}),3),$def(self,"$_reduce_214",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_215",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_216",(function(val,_values,result){return this.builder.$op_assign(this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2)),val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_217",(function(val,_values,result){var const$;return const$=this.builder.$const_op_assignable(this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))),this.builder.$op_assign(const$,val["$[]"](3),val["$[]"](4))}),3),$def(self,"$_reduce_218",(function(val,_values,result){var const$;return const$=this.builder.$const_op_assignable(this.builder.$const_global(val["$[]"](0),val["$[]"](1))),this.builder.$op_assign(const$,val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_219",(function(val,_values,result){return this.builder.$op_assign(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_220",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_221",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_222",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_223",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_224",(function(val,_values,result){return this.builder.$range_inclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_225",(function(val,_values,result){return this.builder.$range_exclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_226",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_227",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_228",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_229",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_230",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_231",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_232",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),this.builder.$binary_op(val["$[]"](1),val["$[]"](2),val["$[]"](3)))}),3),$def(self,"$_reduce_233",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_234",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_235",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_236",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_237",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_238",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_240",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_241",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_242",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_243",(function(val,_values,result){return this.builder.$match_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_244",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_245",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_246",(function(val,_values,result){return this.builder.$unary_op(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_247",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_248",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_249",(function(val,_values,result){return this.builder.$logical_op("and",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_250",(function(val,_values,result){return this.builder.$logical_op("or",val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_251",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_defined=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_252",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_defined=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$keyword_cmd("defined?",val["$[]"](0),nil,[val["$[]"](3)],nil)}),3),$def(self,"$_reduce_253",(function(val,_values,result){return this.builder.$ternary(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](4),val["$[]"](5))}),3),$def(self,"$_reduce_254",(function(val,_values,result){var $a,$b,$c,def_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==($c=$to_ary(null==$a[1]?nil:$a[1]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),result=this.builder.$def_endless_method(def_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_255",(function(val,_values,result){var $a,$b,$c,def_t,name_t,rescue_body,method_body,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==($c=$to_ary(null==$a[1]?nil:$a[1]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=this.builder.$def_endless_method(def_t,name_t,val["$[]"](1),val["$[]"](2),method_body),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_256",(function(val,_values,result){var $a,$b,$c,def_t,recv,dot_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],recv=null==$a[1]?nil:$a[1],dot_t=null==$a[2]?nil:$a[2],name_t=null==($c=$to_ary(null==$a[3]?nil:$a[3]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),result=this.builder.$def_endless_singleton(def_t,recv,dot_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_257",(function(val,_values,result){var $a,$b,$c,def_t,recv,dot_t,name_t,rescue_body,method_body,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],recv=null==$a[1]?nil:$a[1],dot_t=null==$a[2]?nil:$a[2],name_t=null==($c=$to_ary(null==$a[3]?nil:$a[3]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],this.$endless_method_name(name_t),rescue_body=this.builder.$rescue_body(val["$[]"](4),nil,nil,nil,nil,val["$[]"](5)),method_body=this.builder.$begin_body(val["$[]"](3),[rescue_body]),result=this.builder.$def_endless_singleton(def_t,recv,dot_t,name_t,val["$[]"](1),val["$[]"](2),method_body),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_263",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_264",(function(val,_values,result){return this.builder.$binary_op(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_268",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$associate(nil,val["$[]"](2),nil))}),3),$def(self,"$_reduce_269",(function(val,_values,result){return[this.builder.$associate(nil,val["$[]"](0),nil)]}),3),$def(self,"$_reduce_271",(function(val,_values,result){var rescue_body;return rescue_body=this.builder.$rescue_body(val["$[]"](1),nil,nil,nil,nil,val["$[]"](2)),this.builder.$begin_body(val["$[]"](0),[rescue_body])}),3),$def(self,"$_reduce_272",(function(val,_values,result){return val}),3),$def(self,"$_reduce_273",(function(val,_values,result){return $truthy(this.static_env["$declared_forward_args?"]())||this.$diagnostic("error","unexpected_token",$hash2(["token"],{token:"tBDOT3"}),val["$[]"](3)),[val["$[]"](0),[].concat($to_a(val["$[]"](1))).concat([this.builder.$forwarded_args(val["$[]"](3))]),val["$[]"](4)]}),3),$def(self,"$_reduce_274",(function(val,_values,result){return $truthy(this.static_env["$declared_forward_args?"]())||this.$diagnostic("error","unexpected_token",$hash2(["token"],{token:"tBDOT3"}),val["$[]"](1)),[val["$[]"](0),[this.builder.$forwarded_args(val["$[]"](1))],val["$[]"](2)]}),3),$def(self,"$_reduce_275",(function(val,_values,result){return[nil,[],nil]}),3),$def(self,"$_reduce_277",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_280",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$associate(nil,val["$[]"](2),nil))}),3),$def(self,"$_reduce_281",(function(val,_values,result){return[this.builder.$associate(nil,val["$[]"](0),nil)]}),3),$def(self,"$_reduce_282",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_283",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_284",(function(val,_values,result){return(result=[this.builder.$associate(nil,val["$[]"](0),nil)]).$concat(val["$[]"](1)),result}),3),$def(self,"$_reduce_285",(function(val,_values,result){var assocs;return assocs=this.builder.$associate(nil,val["$[]"](2),nil),(result=val["$[]"](0)["$<<"](assocs)).$concat(val["$[]"](3)),result}),3),$def(self,"$_reduce_286",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_287",(function(val,_values,result){var lookahead,$ret_or_1,last_token=nil,top=nil;return last_token=this.last_token["$[]"](0),lookahead=$truthy($ret_or_1=last_token["$=="]("tLBRACK"))?$ret_or_1:last_token["$=="]("tLPAREN_ARG"),$truthy(lookahead)?(top=this.lexer.$cmdarg().$pop(),this.lexer.$cmdarg().$push(!0),this.lexer.$cmdarg().$push(top)):this.lexer.$cmdarg().$push(!0),result}),3),$def(self,"$_reduce_288",(function(val,_values,result){var lookahead,top=nil;return lookahead=this.last_token["$[]"](0)["$=="]("tLBRACE_ARG"),$truthy(lookahead)?(top=this.lexer.$cmdarg().$pop(),this.lexer.$cmdarg().$pop(),this.lexer.$cmdarg().$push(top)):this.lexer.$cmdarg().$pop(),val["$[]"](1)}),3),$def(self,"$_reduce_289",(function(val,_values,result){return this.builder.$block_pass(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_290",(function(val,_values,result){return $not(this.static_env["$declared_anonymous_blockarg?"]())&&this.$diagnostic("error","no_anonymous_blockarg",nil,val["$[]"](0)),this.builder.$block_pass(val["$[]"](0),nil)}),3),$def(self,"$_reduce_291",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_292",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_293",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_294",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_295",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_296",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$splat(val["$[]"](2),val["$[]"](3)))}),3),$def(self,"$_reduce_297",(function(val,_values,result){return this.builder.$array(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_299",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_300",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$splat(val["$[]"](2),val["$[]"](3)))}),3),$def(self,"$_reduce_301",(function(val,_values,result){return[this.builder.$splat(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_312",(function(val,_values,result){return this.builder.$call_method(nil,nil,val["$[]"](0))}),3),$def(self,"$_reduce_313",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),result}),3),$def(self,"$_reduce_314",(function(val,_values,result){return this.lexer.$cmdarg().$pop(),this.builder.$begin_keyword(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_315",(function(val,_values,result){var $writer;return $writer=["expr_endarg"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_316",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](3))}),3),$def(self,"$_reduce_317",(function(val,_values,result){var $writer;return $writer=["expr_endarg"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_318",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),nil,val["$[]"](3))}),3),$def(self,"$_reduce_319",(function(val,_values,result){return this.builder.$begin(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_320",(function(val,_values,result){return this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_321",(function(val,_values,result){return this.builder.$const_global(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_322",(function(val,_values,result){return this.builder.$array(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_323",(function(val,_values,result){return this.builder.$associate(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_324",(function(val,_values,result){return this.builder.$keyword_cmd("return",val["$[]"](0))}),3),$def(self,"$_reduce_325",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_326",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0),val["$[]"](1),[],val["$[]"](2))}),3),$def(self,"$_reduce_327",(function(val,_values,result){return this.builder.$keyword_cmd("yield",val["$[]"](0))}),3),$def(self,"$_reduce_328",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_defined=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_329",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_defined=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$keyword_cmd("defined?",val["$[]"](0),val["$[]"](2),[val["$[]"](4)],val["$[]"](5))}),3),$def(self,"$_reduce_330",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_331",(function(val,_values,result){return this.builder.$not_op(val["$[]"](0),val["$[]"](1),nil,val["$[]"](2))}),3),$def(self,"$_reduce_332",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(nil,nil,val["$[]"](0)),$b=val["$[]"](1),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_334",(function(val,_values,result){var $a,$b,begin_t,args,body,end_t;return $b=val["$[]"](1),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(val["$[]"](0),begin_t,args,body,end_t)}),3),$def(self,"$_reduce_336",(function(val,_values,result){var $a,$b,else_t,else_;return $b=val["$[]"](4),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],this.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3),else_t,else_,val["$[]"](5))}),3),$def(self,"$_reduce_337",(function(val,_values,result){var $a,$b,else_t,else_;return $b=val["$[]"](4),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],this.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),else_,else_t,val["$[]"](3),val["$[]"](5))}),3),$def(self,"$_reduce_338",(function(val,_values,result){return $send(this.builder,"loop",["while",val["$[]"](0)].concat($to_a(val["$[]"](1))).concat([val["$[]"](2),val["$[]"](3)]))}),3),$def(self,"$_reduce_339",(function(val,_values,result){return $send(this.builder,"loop",["until",val["$[]"](0)].concat($to_a(val["$[]"](1))).concat([val["$[]"](2),val["$[]"](3)]))}),3),$def(self,"$_reduce_340",(function(val,_values,result){var $a,$b,$c,when_bodies,else_t,else_body;return $b=($b=($a=[].concat($to_a(val["$[]"](3)))).length-1)<0?0:$b,when_bodies=$slice.call($a,0,$b),else_t=null==($c=$to_ary(null==$a[$b]?nil:$a[$b]))[0]?nil:$c[0],else_body=null==$c[1]?nil:$c[1],this.builder.$case(val["$[]"](0),val["$[]"](1),when_bodies,else_t,else_body,val["$[]"](4))}),3),$def(self,"$_reduce_341",(function(val,_values,result){var $a,$b,$c,when_bodies,else_t,else_body;return $b=($b=($a=[].concat($to_a(val["$[]"](2)))).length-1)<0?0:$b,when_bodies=$slice.call($a,0,$b),else_t=null==($c=$to_ary(null==$a[$b]?nil:$a[$b]))[0]?nil:$c[0],else_body=null==$c[1]?nil:$c[1],this.builder.$case(val["$[]"](0),nil,when_bodies,else_t,else_body,val["$[]"](3))}),3),$def(self,"$_reduce_342",(function(val,_values,result){var $a,$b,$c,in_bodies,else_t,else_body;return $b=($b=($a=[].concat($to_a(val["$[]"](3)))).length-1)<0?0:$b,in_bodies=$slice.call($a,0,$b),else_t=null==($c=$to_ary(null==$a[$b]?nil:$a[$b]))[0]?nil:$c[0],else_body=null==$c[1]?nil:$c[1],this.builder.$case_match(val["$[]"](0),val["$[]"](1),in_bodies,else_t,else_body,val["$[]"](4))}),3),$def(self,"$_reduce_343",(function(val,_values,result){return $send(this.builder,"for",[val["$[]"](0),val["$[]"](1),val["$[]"](2)].concat($to_a(val["$[]"](3))).concat([val["$[]"](4),val["$[]"](5)]))}),3),$def(self,"$_reduce_344",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_class=",$to_a($writer)),$rb_minus($writer.length,1),this.$local_push(),result}),3),$def(self,"$_reduce_345",(function(val,_values,result){var $a,$b,k_class,lt_t,superclass,$writer,ctx=nil;return $b=val["$[]"](0),k_class=null==($a=$to_ary($b))[0]?nil:$a[0],ctx=null==$a[1]?nil:$a[1],$truthy(this.context.$in_def())&&this.$diagnostic("error","class_in_def",nil,k_class),$b=val["$[]"](2),lt_t=null==($a=$to_ary($b))[0]?nil:$a[0],superclass=null==$a[1]?nil:$a[1],result=this.builder.$def_class(k_class,val["$[]"](1),lt_t,superclass,val["$[]"](4),val["$[]"](5)),this.$local_pop(),$writer=[ctx.$in_class()],$send(this.context,"in_class=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_346",(function(val,_values,result){var $writer=nil;return $writer=[!1],$send(this.context,"in_def=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.context,"in_class=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$local_push(),result}),3),$def(self,"$_reduce_347",(function(val,_values,result){var $a,$b,k_class,ctx=nil,$writer=nil;return $b=val["$[]"](0),k_class=null==($a=$to_ary($b))[0]?nil:$a[0],ctx=null==$a[1]?nil:$a[1],result=this.builder.$def_sclass(k_class,val["$[]"](1),val["$[]"](2),val["$[]"](5),val["$[]"](6)),this.$local_pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[ctx.$in_class()],$send(this.context,"in_class=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_348",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_class=",$to_a($writer)),$rb_minus($writer.length,1),this.$local_push(),result}),3),$def(self,"$_reduce_349",(function(val,_values,result){var $a,$b,k_mod,$writer,ctx=nil;return $b=val["$[]"](0),k_mod=null==($a=$to_ary($b))[0]?nil:$a[0],ctx=null==$a[1]?nil:$a[1],$truthy(this.context.$in_def())&&this.$diagnostic("error","module_in_def",nil,k_mod),result=this.builder.$def_module(k_mod,val["$[]"](1),val["$[]"](3),val["$[]"](4)),this.$local_pop(),$writer=[ctx.$in_class()],$send(this.context,"in_class=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_350",(function(val,_values,result){var $a,$b,$c,def_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],name_t=null==($c=$to_ary(null==$a[1]?nil:$a[1]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],result=this.builder.$def_method(def_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_351",(function(val,_values,result){var $a,$b,$c,def_t,recv,dot_t,name_t,$writer,ctx=nil;return $b=val["$[]"](0),def_t=null==($a=$to_ary($b))[0]?nil:$a[0],recv=null==$a[1]?nil:$a[1],dot_t=null==$a[2]?nil:$a[2],name_t=null==($c=$to_ary(null==$a[3]?nil:$a[3]))[0]?nil:$c[0],ctx=null==$c[1]?nil:$c[1],result=this.builder.$def_singleton(def_t,recv,dot_t,name_t,val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.$local_pop(),this.current_arg_stack.$pop(),$writer=[ctx.$in_def()],$send(this.context,"in_def=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_352",(function(val,_values,result){return this.builder.$keyword_cmd("break",val["$[]"](0))}),3),$def(self,"$_reduce_353",(function(val,_values,result){return this.builder.$keyword_cmd("next",val["$[]"](0))}),3),$def(self,"$_reduce_354",(function(val,_values,result){return this.builder.$keyword_cmd("redo",val["$[]"](0))}),3),$def(self,"$_reduce_355",(function(val,_values,result){return this.builder.$keyword_cmd("retry",val["$[]"](0))}),3),$def(self,"$_reduce_357",(function(val,_values,result){return[val["$[]"](0),this.context.$dup()]}),3),$def(self,"$_reduce_358",(function(val,_values,result){return[val["$[]"](0),this.context.$dup()]}),3),$def(self,"$_reduce_359",(function(val,_values,result){var $writer;return result=val["$[]"](0),$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_360",(function(val,_values,result){var $ret_or_1=nil;return $truthy(this.context.$in_class())&&$not(this.context.$in_def())&&$not($truthy($ret_or_1=this.$context().$in_block())?$ret_or_1:this.$context().$in_lambda())&&this.$diagnostic("error","invalid_return",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_363",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_367",(function(val,_values,result){var $a,$b,else_t,else_;return $b=val["$[]"](4),else_t=null==($a=$to_ary($b))[0]?nil:$a[0],else_=null==$a[1]?nil:$a[1],[val["$[]"](0),this.builder.$condition(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3),else_t,else_,nil)]}),3),$def(self,"$_reduce_369",(function(val,_values,result){return val}),3),$def(self,"$_reduce_372",(function(val,_values,result){return this.builder.$arg(val["$[]"](0))}),3),$def(self,"$_reduce_373",(function(val,_values,result){return this.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_374",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_375",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_377",(function(val,_values,result){return val["$[]"](0).$push(val["$[]"](2))}),3),$def(self,"$_reduce_378",(function(val,_values,result){return val["$[]"](0).$push(val["$[]"](2)).$concat(val["$[]"](4))}),3),$def(self,"$_reduce_379",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_380",(function(val,_values,result){return[val["$[]"](0)].concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_381",(function(val,_values,result){return this.builder.$restarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_382",(function(val,_values,result){return this.builder.$restarg(val["$[]"](0))}),3),$def(self,"$_reduce_385",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_386",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_387",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_388",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_389",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_390",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_391",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_392",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_394",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_395",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](6)).$concat(val["$[]"](7))}),3),$def(self,"$_reduce_396",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_397",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_398",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_400",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_401",(function(val,_values,result){return $truthy(val["$[]"](1)["$empty?"]())&&$eqeq(val["$[]"](0).$size(),1)?[this.builder.$procarg0(val["$[]"](0)["$[]"](0))]:val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_402",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_403",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_404",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_405",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_406",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_407",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_409",(function(val,_values,result){return this.builder.$args(nil,[],nil)}),3),$def(self,"$_reduce_410",(function(val,_values,result){var $writer;return $writer=["expr_value"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_411",(function(val,_values,result){var $writer;return this.max_numparam_stack["$has_ordinary_params!"](),this.current_arg_stack.$set(nil),$writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$args(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_412",(function(val,_values,result){var $writer;return this.max_numparam_stack["$has_ordinary_params!"](),this.current_arg_stack.$set(nil),$writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$args(val["$[]"](0),val["$[]"](1).$concat(val["$[]"](2)),val["$[]"](3))}),3),$def(self,"$_reduce_413",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_414",(function(val,_values,result){return val["$[]"](2)}),3),$def(self,"$_reduce_415",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_416",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_417",(function(val,_values,result){return this.static_env.$declare(val["$[]"](0)["$[]"](0)),this.builder.$shadowarg(val["$[]"](0))}),3),$def(self,"$_reduce_419",(function(val,_values,result){var $writer;return this.static_env.$extend_dynamic(),this.max_numparam_stack.$push($hash2(["static"],{static:!1})),result=this.context.$dup(),$writer=[!0],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_420",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),result}),3),$def(self,"$_reduce_421",(function(val,_values,result){var $a,$b,lambda_call,args,begin_t,body,end_t,$writer;return lambda_call=this.builder.$call_lambda(val["$[]"](0)),args=$truthy(this.max_numparam_stack["$has_numparams?"]())?this.builder.$numargs(this.max_numparam_stack.$top()):val["$[]"](2),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],body=null==$a[1]?nil:$a[1],end_t=null==$a[2]?nil:$a[2],this.max_numparam_stack.$pop(),this.static_env.$unextend(),this.lexer.$cmdarg().$pop(),$writer=[val["$[]"](1).$in_lambda()],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$block(lambda_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_422",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.max_numparam_stack["$has_ordinary_params!"](),this.builder.$args(val["$[]"](0),val["$[]"](1).$concat(val["$[]"](2)),val["$[]"](3))}),3),$def(self,"$_reduce_423",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),$truthy(val["$[]"](0)["$any?"]())&&this.max_numparam_stack["$has_ordinary_params!"](),this.builder.$args(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_424",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_425",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_lambda()],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0),val["$[]"](2),val["$[]"](3)]}),3),$def(self,"$_reduce_426",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_427",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_lambda()],$send(this.context,"in_lambda=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0),val["$[]"](2),val["$[]"](3)]}),3),$def(self,"$_reduce_428",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_429",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_block()],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)])}),3),$def(self,"$_reduce_430",(function(val,_values,result){var $a,$b,begin_t,block_args,body,end_t;return $b=val["$[]"](1),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],block_args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(val["$[]"](0),begin_t,block_args,body,end_t)}),3),$def(self,"$_reduce_431",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_432",(function(val,_values,result){var $a,$b,lparen_t,rparen_t,method_call,begin_t,body,end_t,args=nil;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_433",(function(val,_values,result){var $a,$b,method_call,begin_t,args,body,end_t;return method_call=this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),nil,val["$[]"](3),nil),$b=val["$[]"](4),begin_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],end_t=null==$a[3]?nil:$a[3],this.builder.$block(method_call,begin_t,args,body,end_t)}),3),$def(self,"$_reduce_434",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](1),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(nil,nil,val["$[]"](0),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_435",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_436",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](3),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_437",(function(val,_values,result){return this.builder.$call_method(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_438",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](2),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),nil,lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_439",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](2),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$call_method(val["$[]"](0),val["$[]"](1),nil,lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_440",(function(val,_values,result){var $a,$b,lparen_t,args,rparen_t;return $b=val["$[]"](1),lparen_t=null==($a=$to_ary($b))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],rparen_t=null==$a[2]?nil:$a[2],this.builder.$keyword_cmd("super",val["$[]"](0),lparen_t,args,rparen_t)}),3),$def(self,"$_reduce_441",(function(val,_values,result){return this.builder.$keyword_cmd("zsuper",val["$[]"](0))}),3),$def(self,"$_reduce_442",(function(val,_values,result){return this.builder.$index(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_443",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_444",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_block()],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)])}),3),$def(self,"$_reduce_445",(function(val,_values,result){var $writer;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_446",(function(val,_values,result){var $writer;return $writer=[val["$[]"](1).$in_block()],$send(this.context,"in_block=",$to_a($writer)),$rb_minus($writer.length,1),[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3)])}),3),$def(self,"$_reduce_447",(function(val,_values,result){return this.static_env.$extend_dynamic(),this.max_numparam_stack.$push($hash2(["static"],{static:!1})),result}),3),$def(self,"$_reduce_448",(function(val,_values,result){return result=[$truthy(this.max_numparam_stack["$has_numparams?"]())?this.builder.$numargs(this.max_numparam_stack.$top()):val["$[]"](1),val["$[]"](2)],this.max_numparam_stack.$pop(),this.static_env.$unextend(),result}),3),$def(self,"$_reduce_449",(function(val,_values,result){return this.static_env.$extend_dynamic(),this.max_numparam_stack.$push($hash2(["static"],{static:!1})),result}),3),$def(self,"$_reduce_450",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),result}),3),$def(self,"$_reduce_451",(function(val,_values,result){return result=[$truthy(this.max_numparam_stack["$has_numparams?"]())?this.builder.$numargs(this.max_numparam_stack.$top()):val["$[]"](2),val["$[]"](3)],this.max_numparam_stack.$pop(),this.static_env.$unextend(),this.lexer.$cmdarg().$pop(),result}),3),$def(self,"$_reduce_452",(function(val,_values,result){return[this.builder.$when(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))].concat($to_a(val["$[]"](4)))}),3),$def(self,"$_reduce_453",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_455",(function(val,_values,result){var $writer=nil;return $writer=["expr_beg"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.lexer,"command_start=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.pattern_variables.$push(),this.pattern_hash_keys.$push(),result=this.context.$in_kwarg(),$writer=[!0],$send(this.context,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_456",(function(val,_values,result){var $writer;return this.pattern_variables.$pop(),this.pattern_hash_keys.$pop(),$writer=[val["$[]"](1)],$send(this.context,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_457",(function(val,_values,result){return[$send(this.builder,"in_pattern",[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](3),val["$[]"](5)]))].concat($to_a(val["$[]"](6)))}),3),$def(self,"$_reduce_458",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_460",(function(val,_values,result){return[val["$[]"](0),nil]}),3),$def(self,"$_reduce_461",(function(val,_values,result){return[val["$[]"](0),this.builder.$if_guard(val["$[]"](1),val["$[]"](2))]}),3),$def(self,"$_reduce_462",(function(val,_values,result){return[val["$[]"](0),this.builder.$unless_guard(val["$[]"](1),val["$[]"](2))]}),3),$def(self,"$_reduce_464",(function(val,_values,result){var item;return item=this.builder.$match_with_trailing_comma(val["$[]"](0),val["$[]"](1)),this.builder.$array_pattern(nil,[item],nil)}),3),$def(self,"$_reduce_465",(function(val,_values,result){return this.builder.$array_pattern(nil,[val["$[]"](0)].$concat(val["$[]"](2)),nil)}),3),$def(self,"$_reduce_466",(function(val,_values,result){return this.builder.$find_pattern(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_467",(function(val,_values,result){return this.builder.$array_pattern(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_468",(function(val,_values,result){return this.builder.$hash_pattern(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_470",(function(val,_values,result){return this.builder.$match_as(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_472",(function(val,_values,result){return this.builder.$match_alt(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_474",(function(val,_values,result){return result=val["$[]"](0),this.pattern_hash_keys.$push(),result}),3),$def(self,"$_reduce_475",(function(val,_values,result){return result=val["$[]"](0),this.pattern_hash_keys.$push(),result}),3),$def(self,"$_reduce_478",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$array_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_479",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$find_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_480",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$hash_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_481",(function(val,_values,result){var pattern;return pattern=this.builder.$array_pattern(val["$[]"](1),nil,val["$[]"](2)),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](2))}),3),$def(self,"$_reduce_482",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$array_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_483",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$find_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_484",(function(val,_values,result){var pattern;return this.pattern_hash_keys.$pop(),pattern=this.builder.$hash_pattern(nil,val["$[]"](2),nil),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](3))}),3),$def(self,"$_reduce_485",(function(val,_values,result){var pattern;return pattern=this.builder.$array_pattern(val["$[]"](1),nil,val["$[]"](2)),this.builder.$const_pattern(val["$[]"](0),val["$[]"](1),pattern,val["$[]"](2))}),3),$def(self,"$_reduce_486",(function(val,_values,result){return this.builder.$array_pattern(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_487",(function(val,_values,result){return this.builder.$find_pattern(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_488",(function(val,_values,result){return this.builder.$array_pattern(val["$[]"](0),[],val["$[]"](1))}),3),$def(self,"$_reduce_489",(function(val,_values,result){var $writer;return this.pattern_hash_keys.$push(),result=this.context.$in_kwarg(),$writer=[!1],$send(this.context,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_490",(function(val,_values,result){var $writer;return this.pattern_hash_keys.$pop(),$writer=[val["$[]"](1)],$send(this.context,"in_kwarg=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$hash_pattern(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_491",(function(val,_values,result){return this.builder.$hash_pattern(val["$[]"](0),[],val["$[]"](1))}),3),$def(self,"$_reduce_492",(function(val,_values,result){return this.pattern_hash_keys.$push(),result}),3),$def(self,"$_reduce_493",(function(val,_values,result){return this.pattern_hash_keys.$pop(),this.builder.$begin(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_494",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_495",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_496",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([val["$[]"](1)])}),3),$def(self,"$_reduce_497",(function(val,_values,result){var match_rest;return match_rest=this.builder.$match_rest(val["$[]"](1),val["$[]"](2)),[].concat($to_a(val["$[]"](0))).concat([match_rest])}),3),$def(self,"$_reduce_498",(function(val,_values,result){var match_rest;return match_rest=this.builder.$match_rest(val["$[]"](1),val["$[]"](2)),[].concat($to_a(val["$[]"](0))).concat([match_rest]).concat($to_a(val["$[]"](4)))}),3),$def(self,"$_reduce_499",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([this.builder.$match_rest(val["$[]"](1))])}),3),$def(self,"$_reduce_500",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([this.builder.$match_rest(val["$[]"](1))]).concat($to_a(val["$[]"](3)))}),3),$def(self,"$_reduce_502",(function(val,_values,result){return[this.builder.$match_with_trailing_comma(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_503",(function(val,_values,result){var last_item;return last_item=this.builder.$match_with_trailing_comma(val["$[]"](1),val["$[]"](2)),[].concat($to_a(val["$[]"](0))).concat([last_item])}),3),$def(self,"$_reduce_504",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_505",(function(val,_values,result){return[val["$[]"](0)].concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_506",(function(val,_values,result){return[val["$[]"](0)].concat($to_a(val["$[]"](2))).concat([val["$[]"](4)])}),3),$def(self,"$_reduce_507",(function(val,_values,result){return this.builder.$match_rest(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_508",(function(val,_values,result){return this.builder.$match_rest(val["$[]"](0))}),3),$def(self,"$_reduce_509",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_510",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([val["$[]"](2)])}),3),$def(self,"$_reduce_512",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat($to_a(val["$[]"](2)))}),3),$def(self,"$_reduce_513",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_514",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_515",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_516",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_517",(function(val,_values,result){return[].concat($to_a(val["$[]"](0))).concat([val["$[]"](2)])}),3),$def(self,"$_reduce_518",(function(val,_values,result){return $send(this.builder,"match_pair",$to_a(val["$[]"](0)).concat([val["$[]"](1)]))}),3),$def(self,"$_reduce_519",(function(val,_values,result){return $send(this.builder,"match_label",$to_a(val["$[]"](0)))}),3),$def(self,"$_reduce_520",(function(val,_values,result){return["label",val["$[]"](0)]}),3),$def(self,"$_reduce_521",(function(val,_values,result){return["quoted",[val["$[]"](0),val["$[]"](1),val["$[]"](2)]]}),3),$def(self,"$_reduce_522",(function(val,_values,result){return[this.builder.$match_rest(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_523",(function(val,_values,result){return[this.builder.$match_rest(val["$[]"](0),nil)]}),3),$def(self,"$_reduce_524",(function(val,_values,result){return[this.builder.$match_nil_pattern(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_528",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_529",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_530",(function(val,_values,result){return this.builder.$range_inclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_531",(function(val,_values,result){return this.builder.$range_exclusive(val["$[]"](0),val["$[]"](1),nil)}),3),$def(self,"$_reduce_535",(function(val,_values,result){return this.builder.$range_inclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_536",(function(val,_values,result){return this.builder.$range_exclusive(nil,val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_545",(function(val,_values,result){return this.builder.$accessible(val["$[]"](0))}),3),$def(self,"$_reduce_547",(function(val,_values,result){return this.builder.$assignable(this.builder.$match_var(val["$[]"](0)))}),3),$def(self,"$_reduce_548",(function(val,_values,result){var name,lvar;return name=val["$[]"](1)["$[]"](0),$truthy(this.$static_env()["$declared?"](name))||this.$diagnostic("error","undefined_lvar",$hash2(["name"],{name:name}),val["$[]"](1)),lvar=this.builder.$accessible(this.builder.$ident(val["$[]"](1))),this.builder.$pin(val["$[]"](0),lvar)}),3),$def(self,"$_reduce_549",(function(val,_values,result){var non_lvar;return non_lvar=this.builder.$accessible(val["$[]"](1)),this.builder.$pin(val["$[]"](0),non_lvar)}),3),$def(self,"$_reduce_550",(function(val,_values,result){var expr;return expr=this.builder.$begin(val["$[]"](1),val["$[]"](2),val["$[]"](3)),this.builder.$pin(val["$[]"](0),expr)}),3),$def(self,"$_reduce_551",(function(val,_values,result){return this.builder.$const_global(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_552",(function(val,_values,result){return this.builder.$const_fetch(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_553",(function(val,_values,result){return this.builder.$const(val["$[]"](0))}),3),$def(self,"$_reduce_554",(function(val,_values,result){var $a,$b,assoc_t,exc_var,exc_list=nil;return $b=val["$[]"](2),assoc_t=null==($a=$to_ary($b))[0]?nil:$a[0],exc_var=null==$a[1]?nil:$a[1],$truthy(val["$[]"](1))&&(exc_list=this.builder.$array(nil,val["$[]"](1),nil)),[this.builder.$rescue_body(val["$[]"](0),exc_list,assoc_t,exc_var,val["$[]"](3),val["$[]"](4))].concat($to_a(val["$[]"](5)))}),3),$def(self,"$_reduce_555",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_556",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_559",(function(val,_values,result){return[val["$[]"](0),val["$[]"](1)]}),3),$def(self,"$_reduce_561",(function(val,_values,result){return[val["$[]"](0),val["$[]"](1)]}),3),$def(self,"$_reduce_565",(function(val,_values,result){return this.builder.$string_compose(nil,val["$[]"](0),nil)}),3),$def(self,"$_reduce_566",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_567",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_568",(function(val,_values,result){var string;return string=this.builder.$string_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2)),this.builder.$dedent_string(string,this.lexer.$dedent_level())}),3),$def(self,"$_reduce_569",(function(val,_values,result){var string;return string=this.builder.$string(val["$[]"](0)),this.builder.$dedent_string(string,this.lexer.$dedent_level())}),3),$def(self,"$_reduce_570",(function(val,_values,result){return this.builder.$character(val["$[]"](0))}),3),$def(self,"$_reduce_571",(function(val,_values,result){var string;return string=this.builder.$xstring_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2)),this.builder.$dedent_string(string,this.lexer.$dedent_level())}),3),$def(self,"$_reduce_572",(function(val,_values,result){var opts;return opts=this.builder.$regexp_options(val["$[]"](3)),this.builder.$regexp_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2),opts)}),3),$def(self,"$_reduce_573",(function(val,_values,result){return this.builder.$words_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_574",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_575",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$word(val["$[]"](1)))}),3),$def(self,"$_reduce_576",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_577",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_578",(function(val,_values,result){return this.builder.$symbols_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_579",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_580",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$word(val["$[]"](1)))}),3),$def(self,"$_reduce_581",(function(val,_values,result){return this.builder.$words_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_582",(function(val,_values,result){return this.builder.$symbols_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_583",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_584",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$string_internal(val["$[]"](1)))}),3),$def(self,"$_reduce_585",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_586",(function(val,_values,result){return val["$[]"](0)["$<<"](this.builder.$symbol_internal(val["$[]"](1)))}),3),$def(self,"$_reduce_587",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_588",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_589",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_590",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_591",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_592",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](1))}),3),$def(self,"$_reduce_593",(function(val,_values,result){return this.builder.$string_internal(val["$[]"](0))}),3),$def(self,"$_reduce_594",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_595",(function(val,_values,result){return this.lexer.$cmdarg().$push(!1),this.lexer.$cond().$push(!1),result}),3),$def(self,"$_reduce_596",(function(val,_values,result){return this.lexer.$cmdarg().$pop(),this.lexer.$cond().$pop(),this.builder.$begin(val["$[]"](0),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_597",(function(val,_values,result){return this.builder.$gvar(val["$[]"](0))}),3),$def(self,"$_reduce_598",(function(val,_values,result){return this.builder.$ivar(val["$[]"](0))}),3),$def(self,"$_reduce_599",(function(val,_values,result){return this.builder.$cvar(val["$[]"](0))}),3),$def(self,"$_reduce_603",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$symbol(val["$[]"](0))}),3),$def(self,"$_reduce_604",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$symbol_compose(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_605",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_606",(function(val,_values,result){return $truthy(this.builder["$respond_to?"]("negate"))?this.builder.$negate(val["$[]"](0),val["$[]"](1)):this.builder.$unary_num(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_607",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$integer(val["$[]"](0))}),3),$def(self,"$_reduce_608",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$float(val["$[]"](0))}),3),$def(self,"$_reduce_609",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$rational(val["$[]"](0))}),3),$def(self,"$_reduce_610",(function(val,_values,result){var $writer;return $writer=["expr_end"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$complex(val["$[]"](0))}),3),$def(self,"$_reduce_611",(function(val,_values,result){return this.builder.$ivar(val["$[]"](0))}),3),$def(self,"$_reduce_612",(function(val,_values,result){return this.builder.$gvar(val["$[]"](0))}),3),$def(self,"$_reduce_613",(function(val,_values,result){return this.builder.$cvar(val["$[]"](0))}),3),$def(self,"$_reduce_614",(function(val,_values,result){return this.builder.$ident(val["$[]"](0))}),3),$def(self,"$_reduce_615",(function(val,_values,result){return this.builder.$ivar(val["$[]"](0))}),3),$def(self,"$_reduce_616",(function(val,_values,result){return this.builder.$gvar(val["$[]"](0))}),3),$def(self,"$_reduce_617",(function(val,_values,result){return this.builder.$const(val["$[]"](0))}),3),$def(self,"$_reduce_618",(function(val,_values,result){return this.builder.$cvar(val["$[]"](0))}),3),$def(self,"$_reduce_619",(function(val,_values,result){return this.builder.$nil(val["$[]"](0))}),3),$def(self,"$_reduce_620",(function(val,_values,result){return this.builder.$self(val["$[]"](0))}),3),$def(self,"$_reduce_621",(function(val,_values,result){return this.builder.$true(val["$[]"](0))}),3),$def(self,"$_reduce_622",(function(val,_values,result){return this.builder.$false(val["$[]"](0))}),3),$def(self,"$_reduce_623",(function(val,_values,result){return this.builder.$__FILE__(val["$[]"](0))}),3),$def(self,"$_reduce_624",(function(val,_values,result){return this.builder.$__LINE__(val["$[]"](0))}),3),$def(self,"$_reduce_625",(function(val,_values,result){return this.builder.$__ENCODING__(val["$[]"](0))}),3),$def(self,"$_reduce_626",(function(val,_values,result){return this.builder.$accessible(val["$[]"](0))}),3),$def(self,"$_reduce_627",(function(val,_values,result){return this.builder.$accessible(val["$[]"](0))}),3),$def(self,"$_reduce_628",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_629",(function(val,_values,result){return this.builder.$assignable(val["$[]"](0))}),3),$def(self,"$_reduce_630",(function(val,_values,result){return this.builder.$nth_ref(val["$[]"](0))}),3),$def(self,"$_reduce_631",(function(val,_values,result){return this.builder.$back_ref(val["$[]"](0))}),3),$def(self,"$_reduce_632",(function(val,_values,result){var $writer;return $writer=["expr_value"],$send(this.lexer,"state=",$to_a($writer)),$rb_minus($writer.length,1),result}),3),$def(self,"$_reduce_633",(function(val,_values,result){return[val["$[]"](0),val["$[]"](2)]}),3),$def(self,"$_reduce_634",(function(val,_values,result){return nil}),3),$def(self,"$_reduce_636",(function(val,_values,result){var $writer;return $writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$args(nil,[],nil)}),3),$def(self,"$_reduce_637",(function(val,_values,result){var $writer=nil;return result=this.builder.$args(val["$[]"](0),val["$[]"](1),val["$[]"](2)),$writer=["expr_value"],$send(this.lexer,"state=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_639",(function(val,_values,result){var $writer=nil;return result=this.context.$dup(),$writer=[!0],$send(this.context,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],result}),3),$def(self,"$_reduce_640",(function(val,_values,result){var $writer=nil;return $writer=[val["$[]"](0).$in_kwarg()],$send(this.context,"in_kwarg=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.builder.$args(nil,val["$[]"](1),nil)}),3),$def(self,"$_reduce_641",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_642",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_643",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_644",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_645",(function(val,_values,result){return this.static_env.$declare_forward_args(),[this.builder.$forward_arg(val["$[]"](0))]}),3),$def(self,"$_reduce_646",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_647",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_648",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_649",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](6)).$concat(val["$[]"](7))}),3),$def(self,"$_reduce_650",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_651",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_652",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_653",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_654",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_655",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_656",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](4)).$concat(val["$[]"](5))}),3),$def(self,"$_reduce_657",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_658",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_659",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](1))}),3),$def(self,"$_reduce_660",(function(val,_values,result){return val["$[]"](0).$concat(val["$[]"](2)).$concat(val["$[]"](3))}),3),$def(self,"$_reduce_661",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_662",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_663",(function(val,_values,result){return val["$[]"](0)}),3),$def(self,"$_reduce_664",(function(val,_values,result){return this.$diagnostic("error","argument_const",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_665",(function(val,_values,result){return this.$diagnostic("error","argument_ivar",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_666",(function(val,_values,result){return this.$diagnostic("error","argument_gvar",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_667",(function(val,_values,result){return this.$diagnostic("error","argument_cvar",nil,val["$[]"](0)),result}),3),$def(self,"$_reduce_669",(function(val,_values,result){return this.static_env.$declare(val["$[]"](0)["$[]"](0)),this.max_numparam_stack["$has_ordinary_params!"](),val["$[]"](0)}),3),$def(self,"$_reduce_670",(function(val,_values,result){return this.current_arg_stack.$set(val["$[]"](0)["$[]"](0)),val["$[]"](0)}),3),$def(self,"$_reduce_671",(function(val,_values,result){return this.current_arg_stack.$set(0),this.builder.$arg(val["$[]"](0))}),3),$def(self,"$_reduce_672",(function(val,_values,result){return this.builder.$multi_lhs(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_673",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_674",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_675",(function(val,_values,result){var $writer;return this.$check_kwarg_name(val["$[]"](0)),this.static_env.$declare(val["$[]"](0)["$[]"](0)),this.max_numparam_stack["$has_ordinary_params!"](),this.current_arg_stack.$set(val["$[]"](0)["$[]"](0)),$writer=[!1],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),val["$[]"](0)}),3),$def(self,"$_reduce_676",(function(val,_values,result){var $writer;return this.current_arg_stack.$set(nil),$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$kwoptarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_677",(function(val,_values,result){var $writer;return this.current_arg_stack.$set(nil),$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$kwarg(val["$[]"](0))}),3),$def(self,"$_reduce_678",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$kwoptarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_679",(function(val,_values,result){var $writer;return $writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$kwarg(val["$[]"](0))}),3),$def(self,"$_reduce_680",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_681",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_682",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_683",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_686",(function(val,_values,result){return[this.builder.$kwnilarg(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_687",(function(val,_values,result){return this.static_env.$declare(val["$[]"](1)["$[]"](0)),[this.builder.$kwrestarg(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_688",(function(val,_values,result){return[this.builder.$kwrestarg(val["$[]"](0))]}),3),$def(self,"$_reduce_689",(function(val,_values,result){var $writer;return this.current_arg_stack.$set(0),$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$optarg(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_690",(function(val,_values,result){var $writer;return this.current_arg_stack.$set(0),$writer=[!0],$send(this.context,"in_argdef=",$to_a($writer)),$rb_minus($writer.length,1),this.builder.$optarg(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_691",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_692",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_693",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_694",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_697",(function(val,_values,result){return this.static_env.$declare(val["$[]"](1)["$[]"](0)),[this.builder.$restarg(val["$[]"](0),val["$[]"](1))]}),3),$def(self,"$_reduce_698",(function(val,_values,result){return[this.builder.$restarg(val["$[]"](0))]}),3),$def(self,"$_reduce_701",(function(val,_values,result){return this.static_env.$declare(val["$[]"](1)["$[]"](0)),this.builder.$blockarg(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_702",(function(val,_values,result){return this.static_env.$declare_anonymous_blockarg(),this.builder.$blockarg(val["$[]"](0),nil)}),3),$def(self,"$_reduce_703",(function(val,_values,result){return[val["$[]"](1)]}),3),$def(self,"$_reduce_704",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_706",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_707",(function(val,_values,result){return[]}),3),$def(self,"$_reduce_709",(function(val,_values,result){return[val["$[]"](0)]}),3),$def(self,"$_reduce_710",(function(val,_values,result){return val["$[]"](0)["$<<"](val["$[]"](2))}),3),$def(self,"$_reduce_711",(function(val,_values,result){return this.builder.$pair(val["$[]"](0),val["$[]"](1),val["$[]"](2))}),3),$def(self,"$_reduce_712",(function(val,_values,result){return this.builder.$pair_keyword(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_713",(function(val,_values,result){return this.builder.$pair_label(val["$[]"](0))}),3),$def(self,"$_reduce_714",(function(val,_values,result){return this.builder.$pair_quoted(val["$[]"](0),val["$[]"](1),val["$[]"](2),val["$[]"](3))}),3),$def(self,"$_reduce_715",(function(val,_values,result){return this.builder.$kwsplat(val["$[]"](0),val["$[]"](1))}),3),$def(self,"$_reduce_728",(function(val,_values,result){return["dot",val["$[]"](0)["$[]"](1)]}),3),$def(self,"$_reduce_729",(function(val,_values,result){return["anddot",val["$[]"](0)["$[]"](1)]}),3),$def(self,"$_reduce_734",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_735",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_736",(function(val,_values,result){return val["$[]"](1)}),3),$def(self,"$_reduce_740",(function(val,_values,result){return this.$yyerrok(),result}),3),$def(self,"$_reduce_744",(function(val,_values,result){return nil}),3),$def(self,"$_reduce_none",(function(val,_values,result){return val["$[]"](0)}),3)}($nesting[0],$$$($$("Parser"),"Base"),$nesting)}($nesting[0],$nesting)},Opal.modules["opal/ast/builder"]=function(Opal){var self=Opal.top,$nesting=[],$$$=(Opal.nil,Opal.$$$),$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$Opal=Opal.Opal,$hash2=Opal.hash2,$def=Opal.def;return Opal.add_stubs("require,emit_lambda=,-,new"),self.$require("opal/ast/node"),self.$require("parser/ruby31"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var $writer,self=$klass($base,$super,"Builder");return $send(self,"emit_lambda=",$to_a($writer=[!0])),$rb_minus($writer.length,1),$def(self,"$n",(function(type,children,location){return $$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:location}))}),3)}([$module($base,"AST")].concat($parent_nesting)[0],$$$($$$($$$("Parser"),"Builders"),"Default"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/base"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$truthy=Opal.truthy,$Opal=Opal.Opal,$hash2=Opal.hash2,$defs=Opal.defs,$alias=Opal.alias,$rb_plus=Opal.rb_plus,$eqeqeq=Opal.eqeqeq,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,new,current_node,loc,+,stmts_of,begin_with_stmts,nil?,include?,type,children,===,length,[],s,attr_accessor,current_node=,-,location=,raise"),self.$require("parser"),self.$require("opal/ast/node"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Base"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"DummyLocation"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$node=",(function($a){return Opal.slice.call(arguments),nil}),-1),$def(self,"$expression",(function(){return this}),0),$def(self,"$begin_pos",(function(){return 0}),0),$def(self,"$end_pos",(function(){return 0}),0),$def(self,"$source",(function(){return""}),0),$def(self,"$line",(function(){return 0}),0),$def(self,"$column",(function(){return 0}),0),$def(self,"$last_line",(function(){return $$$($$("Float"),"INFINITY")}),0)}($nesting[0],0,$nesting),$const_set($nesting[0],"DUMMY_LOCATION",$$("DummyLocation").$new()),$def(self,"$s",(function(type,$a){var children,self=this,loc=nil;return children=Opal.slice.call(arguments,1),loc=$truthy(self.$current_node())?self.$current_node().$loc():$$("DUMMY_LOCATION"),$$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:loc}))}),-2),$defs(self,"$s",(function(type,$a){var children;return children=Opal.slice.call(arguments,1),$$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:$$("DUMMY_LOCATION")}))}),-2),$alias(self,"on_iter","process_regular_node"),$alias(self,"on_top","process_regular_node"),$alias(self,"on_zsuper","process_regular_node"),$alias(self,"on_jscall","on_send"),$alias(self,"on_jsattr","process_regular_node"),$alias(self,"on_jsattrasgn","process_regular_node"),$alias(self,"on_kwsplat","process_regular_node"),$def(self,"$prepend_to_body",(function(body,node){var stmts;return stmts=$rb_plus(this.$stmts_of(node),this.$stmts_of(body)),this.$begin_with_stmts(stmts)}),2),$def(self,"$append_to_body",(function(body,node){var stmts;return stmts=$rb_plus(this.$stmts_of(body),this.$stmts_of(node)),this.$begin_with_stmts(stmts)}),2),$def(self,"$stmts_of",(function(node){return $truthy(node["$nil?"]())?[]:$truthy(["begin","kwbegin"]["$include?"](node.$type()))?node.$children():[node]}),1),$def(self,"$begin_with_stmts",(function(stmts){var $ret_or_1;return $eqeqeq(0,$ret_or_1=stmts.$length())?nil:$eqeqeq(1,$ret_or_1)?stmts["$[]"](0):$send(this,"s",["begin"].concat($to_a(stmts)))}),1),self.$attr_accessor("current_node"),$def(self,"$process",(function $$process(node){var $yield=$$process.$$p||nil,self=this,$writer=nil;return delete $$process.$$p,function(){try{return $send(self,"current_node=",$to_a($writer=[node])),$writer[$rb_minus($writer.length,1)],$send2(self,$find_super(self,"process",$$process,!1,!0),"process",[node],$yield)}finally{$send(self,"current_node=",$to_a($writer=[nil])),$writer[$rb_minus($writer.length,1)]}}()}),1),$def(self,"$error",(function(msg){var error,$writer=nil;return error=$$$($Opal,"RewritingError").$new(msg),$truthy(this.$current_node())&&($writer=[this.$current_node().$loc()],$send(error,"location=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),this.$raise(error)}),1)}($nesting[0],$$$($$$($$$("Parser"),"AST"),"Processor"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/opal_engine_check"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_a=Opal.to_a,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$const_set=Opal.const_set;return Opal.add_stubs("require,children,skip_check_present?,process,s,skip_check_present_not?,=="),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"OpalEngineCheck"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_if",(function $$on_if(node){var $a,test,true_body,false_body,$yield=$$on_if.$$p||nil,$ret_or_1=nil;return delete $$on_if.$$p,test=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],true_body=null==$a[1]?nil:$a[1],false_body=null==$a[2]?nil:$a[2],$truthy(this["$skip_check_present?"](test))?this.$process($truthy($ret_or_1=true_body)?$ret_or_1:this.$s("nil")):$truthy(this["$skip_check_present_not?"](test))?this.$process($truthy($ret_or_1=false_body)?$ret_or_1:this.$s("nil")):$send2(this,$find_super(this,"on_if",$$on_if,!1,!0),"on_if",[node],$yield)}),1),$def(self,"$skip_check_present?",(function(test){var $ret_or_1;return $truthy($ret_or_1=test["$=="]($$("RUBY_ENGINE_CHECK")))?$ret_or_1:test["$=="]($$("RUBY_PLATFORM_CHECK"))}),1),$def(self,"$skip_check_present_not?",(function(test){var $ret_or_1;return $truthy($ret_or_1=test["$=="]($$("RUBY_ENGINE_CHECK_NOT")))?$ret_or_1:test["$=="]($$("RUBY_PLATFORM_CHECK_NOT"))}),1),$const_set($nesting[0],"RUBY_ENGINE_CHECK",self.$s("send",self.$s("const",nil,"RUBY_ENGINE"),"==",self.$s("str","opal"))),$const_set($nesting[0],"RUBY_ENGINE_CHECK_NOT",self.$s("send",self.$s("const",nil,"RUBY_ENGINE"),"!=",self.$s("str","opal"))),$const_set($nesting[0],"RUBY_PLATFORM_CHECK",self.$s("send",self.$s("const",nil,"RUBY_PLATFORM"),"==",self.$s("str","opal"))),$const_set($nesting[0],"RUBY_PLATFORM_CHECK_NOT",self.$s("send",self.$s("const",nil,"RUBY_PLATFORM"),"!=",self.$s("str","opal")))}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/for_rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$defs=Opal.defs,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$to_a=Opal.to_a,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,+,find,map,s,next_tmp,class,===,type,updated,<<,prepend_to_body,process,attr_reader,new,to_a,result"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ForRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$reset_tmp_counter!",(function(){return this.counter=0}),0),$defs(self,"$next_tmp",(function(){var $ret_or_1;return null==this.counter&&(this.counter=nil),this.counter=$truthy($ret_or_1=this.counter)?$ret_or_1:0,this.counter=$rb_plus(this.counter,1),"$for_tmp"+this.counter}),0),$def(self,"$on_for",(function(node){var $a,iterating_value,iterating_lvars,lvars_declared_in_body,outer_assigns,tmp_loop_variable,get_tmp_loop_variable,loop_variable_assignment,loop_variable=nil,loop_body=nil;return loop_variable=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],iterating_value=null==$a[1]?nil:$a[1],loop_body=null==$a[2]?nil:$a[2],iterating_lvars=$$("LocalVariableAssigns").$find(loop_variable),lvars_declared_in_body=$$("LocalVariableAssigns").$find(loop_body),outer_assigns=$send($rb_plus(iterating_lvars,lvars_declared_in_body),"map",[],(function $$2(lvar_name){return null==lvar_name&&(lvar_name=nil),(null==$$2.$$s?this:$$2.$$s).$s("lvdeclare",lvar_name)}),{$$arity:1,$$s:this}),tmp_loop_variable=this.$class().$next_tmp(),get_tmp_loop_variable=this.$s("js_tmp",tmp_loop_variable),loop_variable_assignment=$eqeqeq("mlhs",loop_variable.$type())?loop_variable.$updated("masgn",[loop_variable,get_tmp_loop_variable]):loop_variable["$<<"](get_tmp_loop_variable),loop_body=this.$prepend_to_body(loop_body,loop_variable_assignment),(node=node.$updated("send",[iterating_value,"each",node.$updated("iter",[this.$s("args",this.$s("arg",tmp_loop_variable)),this.$process(loop_body)])])).$updated("begin",[].concat($to_a(outer_assigns)).concat([node]))}),1),function($base,$super,$parent_nesting){var self=$klass($base,$super,"LocalVariableAssigns"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$attr_reader("result"),$defs(self,"$find",(function(node){var processor=nil;return(processor=this.$new()).$process(node),processor.$result().$to_a()}),1),$def(self,"$initialize",(function(){return this.result=$$("Set").$new()}),0),$def(self,"$on_lvasgn",(function $$on_lvasgn(node){var $a,name,$yield=$$on_lvasgn.$$p||nil;return delete $$on_lvasgn.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],this.$result()["$<<"](name),$send2(this,$find_super(this,"on_lvasgn",$$on_lvasgn,!1,!0),"on_lvasgn",[node],$yield)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/explicit_writer_return"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$const_set=Opal.const_set,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$slice=Opal.slice,$eqeq=Opal.eqeq,$regexp=Opal.regexp,$send=Opal.send;return Opal.add_stubs("require,s,==,to_s,=~,process_all,updated"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ExplicitWriterReturn"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.in_masgn=nil,$def(self,"$initialize",(function(){return this.in_masgn=!1}),0),$const_set($nesting[0],"TMP_NAME","$writer"),$const_set($nesting[0],"GET_ARGS_NODE",self.$s("lvar",$$("TMP_NAME"))),$const_set($nesting[0],"RETURN_ARGS_NODE",self.$s("jsattr",$$("GET_ARGS_NODE"),self.$s("send",self.$s("jsattr",$$("GET_ARGS_NODE"),self.$s("str","length")),"-",self.$s("int",1)))),$def(self,"$on_send",(function $$on_send(node){var $a,recv,args,$yield=$$on_send.$$p||nil,method_name=nil,set_args_node=nil;return delete $$on_send.$$p,$truthy(this.in_masgn)?$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield):(recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(method_name.$to_s()["$=~"]($regexp([$$("REGEXP_START"),"\\w+=",$$("REGEXP_END")])))||$eqeq(method_name.$to_s(),"[]=")?(set_args_node=this.$s("lvasgn",$$("TMP_NAME"),$send(this,"s",["array"].concat($to_a(this.$process_all(args))))),this.$s("begin",set_args_node,node.$updated(nil,[recv,method_name,this.$s("splat",$$("GET_ARGS_NODE"))]),$$("RETURN_ARGS_NODE"))):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield))}),1),$def(self,"$on_masgn",(function $$on_masgn(node){var result,$yield=$$on_masgn.$$p||nil;return delete $$on_masgn.$$p,this.in_masgn=!0,result=$send2(this,$find_super(this,"on_masgn",$$on_masgn,!1,!0),"on_masgn",[node],$yield),this.in_masgn=!1,result}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/regexp_anchors"]=function(Opal){var $nesting=[],$$$=(Opal.nil,Opal.$$$),$module=Opal.module,$const_set=Opal.const_set;return Opal.add_stubs("new"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set(self,"REGEXP_START","^"),$const_set(self,"REGEXP_END","$"),$const_set(self,"FORBIDDEN_STARTING_IDENTIFIER_CHARS","\\u0001-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"FORBIDDEN_ENDING_IDENTIFIER_CHARS","\\u0001-\\u0020\\u0022-\\u002F\\u003A-\\u003E\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"INLINE_IDENTIFIER_REGEXP",$$("Regexp").$new("[^"+$$$(self,"FORBIDDEN_STARTING_IDENTIFIER_CHARS")+"]*[^"+$$$(self,"FORBIDDEN_ENDING_IDENTIFIER_CHARS")+"]")),$const_set(self,"FORBIDDEN_CONST_NAME_CHARS","\\u0001-\\u0020\\u0021-\\u002F\\u003B-\\u003F\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"CONST_NAME_REGEXP",$$("Regexp").$new($$$(self,"REGEXP_START")+"(::)?[A-Z][^"+$$$(self,"FORBIDDEN_CONST_NAME_CHARS")+"]*"+$$$(self,"REGEXP_END")))}($nesting[0],$nesting)},Opal.modules["opal/rewriters/js_reserved_words"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$truthy=Opal.truthy,$defs=Opal.defs,$def=Opal.def,$range=Opal.range,$to_a=Opal.to_a,$send2=Opal.send2,$find_super=Opal.find_super,$hash2=Opal.hash2,$alias=Opal.alias;return Opal.add_stubs("require,freeze,=~,!,valid_name?,class,to_sym,valid_ivar_name?,[],to_s,updated,fix_var_name,fix_ivar_name"),self.$require("opal/rewriters/base"),self.$require("opal/regexp_anchors"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"JsReservedWords"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"ES51_RESERVED_WORD",$regexp([$$("REGEXP_START"),"(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"ES3_RESERVED_WORD_EXCLUSIVE",$regexp([$$("REGEXP_START"),"(?:int|byte|char|goto|long|final|float|short|double|native|throws|boolean|abstract|volatile|transient|synchronized)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"PROTO_SPECIAL_PROPS",$regexp([$$("REGEXP_START"),"(?:constructor|displayName|__proto__|__parent__|__noSuchMethod__|__count__)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"PROTO_SPECIAL_METHODS",$regexp([$$("REGEXP_START"),"(?:hasOwnProperty|valueOf)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"IMMUTABLE_PROPS",$regexp([$$("REGEXP_START"),"(?:NaN|Infinity|undefined)",$$("REGEXP_END")]).$freeze()),$const_set($nesting[0],"BASIC_IDENTIFIER_RULES",$regexp([$$("REGEXP_START"),"[$_a-z][$_a-z\\d]*",$$("REGEXP_END")],"i").$freeze()),$const_set($nesting[0],"RESERVED_FUNCTION_NAMES",$regexp([$$("REGEXP_START"),"(?:Array)",$$("REGEXP_END")]).$freeze()),$defs(self,"$valid_name?",(function(name){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $truthy($ret_or_1=$$("BASIC_IDENTIFIER_RULES")["$=~"](name))?($truthy($ret_or_2=$truthy($ret_or_3=$$("ES51_RESERVED_WORD")["$=~"](name))?$ret_or_3:$$("ES3_RESERVED_WORD_EXCLUSIVE")["$=~"](name))?$ret_or_2:$$("IMMUTABLE_PROPS")["$=~"](name))["$!"]():$ret_or_1}),1),$defs(self,"$valid_ivar_name?",(function(name){var $ret_or_1;return($truthy($ret_or_1=$$("PROTO_SPECIAL_PROPS")["$=~"](name))?$ret_or_1:$$("PROTO_SPECIAL_METHODS")["$=~"](name))["$!"]()}),1),$def(self,"$fix_var_name",(function(name){return $truthy(this.$class()["$valid_name?"](name))?name:(name+"$").$to_sym()}),1),$def(self,"$fix_ivar_name",(function(name){return $truthy(this.$class()["$valid_ivar_name?"](name.$to_s()["$[]"]($range(1,-1,!1))))?name:(name+"$").$to_sym()}),1),$def(self,"$on_lvar",(function $$on_lvar(node){var $a,name;return delete $$on_lvar.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],node=node.$updated(nil,[this.$fix_var_name(name)]),$send2(this,$find_super(this,"on_lvar",$$on_lvar,!1,!0),"on_lvar",[node],null)}),1),$def(self,"$on_lvasgn",(function $$on_lvasgn(node){var $a,name,value;return delete $$on_lvasgn.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],node=$truthy(value)?node.$updated(nil,[this.$fix_var_name(name),value]):node.$updated(nil,[this.$fix_var_name(name)]),$send2(this,$find_super(this,"on_lvasgn",$$on_lvasgn,!1,!0),"on_lvasgn",[node],null)}),1),$def(self,"$on_ivar",(function $$on_ivar(node){var $a,name;return delete $$on_ivar.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],node=node.$updated(nil,[this.$fix_ivar_name(name)]),$send2(this,$find_super(this,"on_ivar",$$on_ivar,!1,!0),"on_ivar",[node],null)}),1),$def(self,"$on_ivasgn",(function $$on_ivasgn(node){var $a,name,value;return delete $$on_ivasgn.$$p,name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],node=$truthy(value)?node.$updated(nil,[this.$fix_ivar_name(name),value]):node.$updated(nil,[this.$fix_ivar_name(name)]),$send2(this,$find_super(this,"on_ivasgn",$$on_ivasgn,!1,!0),"on_ivasgn",[node],null)}),1),$def(self,"$on_restarg",(function(node){var $a,name;return name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$truthy(name)&&(node=node.$updated(nil,[this.$fix_var_name(name)],$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:name})}))),node}),1),$alias(self,"on_kwrestarg","on_restarg"),$def(self,"$on_argument",(function $$on_argument(node){var $a,name,value,fixed_name,new_children;return delete $$on_argument.$$p,node=$send2(this,$find_super(this,"on_argument",$$on_argument,!1,!0),"on_argument",[node],null),name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],fixed_name=this.$fix_var_name(name),new_children=$truthy(value)?[fixed_name,value]:[fixed_name],node.$updated(nil,new_children,$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:name})}))}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/block_to_iter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$def=Opal.def;return Opal.add_stubs("require,s,process,updated,+,children"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BlockToIter");return $def(self,"$on_block",(function(node){var $a,args,body,iter_node,recvr=nil;return recvr=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],iter_node=this.$s("iter",args,body),this.$process(recvr.$updated(nil,$rb_plus(recvr.$children(),[iter_node])))}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/dot_js_syntax"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_a=Opal.to_a,$slice=Opal.slice,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$eqeqeq=Opal.eqeqeq,$neqeq=Opal.neqeq,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("require,==,type,===,!=,size,error,first,to_js_attr_call,to_js_attr_assign_call,to_native_js_call,s"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DotJsSyntax");return $def(self,"$on_send",(function $$on_send(node){var $a,meth,$yield=$$on_send.$$p||nil,recv=nil,args=nil,recv_of_recv=nil,meth_of_recv=nil,$ret_or_1=nil,property=nil,value=nil;return delete $$on_send.$$p,recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(recv)&&$eqeq(recv.$type(),"send")?(recv_of_recv=null==($a=[].concat($to_a(recv)))[0]?nil:$a[0],meth_of_recv=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],$eqeq(meth_of_recv,"JS")?($eqeqeq("[]",$ret_or_1=meth)?($neqeq(args.$size(),1)&&this.$error(".JS[:property] syntax supports only one argument"),property=args.$first(),node=this.$to_js_attr_call(recv_of_recv,property)):$eqeqeq("[]=",$ret_or_1)?($neqeq(args.$size(),2)&&this.$error(".JS[:property]= syntax supports only two arguments"),property=null==($a=[].concat($to_a(args)))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],node=this.$to_js_attr_assign_call(recv_of_recv,property,value)):node=this.$to_native_js_call(recv_of_recv,meth,args),$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],null)):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield)):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield)}),1),$def(self,"$to_native_js_call",(function(recv,meth,args){return $send(this,"s",["jscall",recv,meth].concat($to_a(args)))}),3),$def(self,"$to_js_attr_call",(function(recv,property){return this.$s("jsattr",recv,property)}),2),$def(self,"$to_js_attr_assign_call",(function(recv,property,value){return this.$s("jsattrasgn",recv,property,value)}),3)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/pattern_matching"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$slice=Opal.slice,$truthy=Opal.truthy,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$not=Opal.not,$neqeq=Opal.neqeq,$eqeq=Opal.eqeq,$alias=Opal.alias,$Opal=Opal.Opal;return Opal.add_stubs("require,s,convert_full_pattern,raise_no_matching_pattern_error,+,process,single_case_match,private,shift,===,type,!,empty?,!=,==,class,new,run!,variables,pattern,map,<<,array,on_literal,first,children,to_proc,method,each,to_ast,on_array_pattern,compact,[]"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"PatternMatching"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.depth=nil,$def(self,"$initialize",(function $$initialize(){var $yield=$$initialize.$$p||nil;return delete $$initialize.$$p,this.depth=0,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[],$yield)}),0),$def(self,"$on_match_pattern",(function(node){var $a,from,pat;return from=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],pat=null==$a[1]?nil:$a[1],this.$s("begin",this.$s("lvasgn","$pmvar",from),this.$s("if",this.$convert_full_pattern(from,pat),nil,this.$raise_no_matching_pattern_error("$pmvar")))}),1),$def(self,"$on_match_pattern_p",(function(node){var $a,from,pat;return from=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],pat=null==$a[1]?nil:$a[1],this.$s("if",this.$convert_full_pattern(from,pat),this.$s("true"),this.$s("false"))}),1),$def(self,"$on_case_match",(function(node){var $a,$b,from,cases,cmvar=nil,els=nil;return this.depth=$rb_plus(this.depth,1),cmvar="$cmvar"+this.depth,from=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],$b=($b=$a.length-1)<1?1:$b,cases=$slice.call($a,1,$b),els=null==$a[$b]?nil:$a[$b],$truthy(els)?this.$process(els):els=this.$raise_no_matching_pattern_error(cmvar),this.$s("begin",this.$s("lvasgn",cmvar,from),$send(this,"single_case_match",[cmvar].concat($to_a(cases)).concat([els])))}),1),self.$private(),$def(self,"$raise_no_matching_pattern_error",(function(from){return this.$s("send",nil,"raise",this.$s("const",this.$s("cbase"),"NoMatchingPatternError"),this.$s("lvar",from))}),1),$def(self,"$single_case_match",(function(from,$a,$b){var $post_args,cases,els,$c,self=this,cas=nil,pat=nil,if_guard=nil,body=nil,guard=nil,$ret_or_1=nil;return cases=($post_args=Opal.slice.call(arguments,1)).splice(0,$post_args.length-1),null==(els=$post_args.shift())&&(els=nil),cas=cases.$shift(),pat=null==($c=[].concat($to_a(cas)))[0]?nil:$c[0],if_guard=null==$c[1]?nil:$c[1],body=null==$c[2]?nil:$c[2],pat=self.$convert_full_pattern(from,pat),$truthy(if_guard)&&(guard=null==($c=[].concat($to_a(if_guard)))[0]?nil:$c[0],$eqeqeq("if_guard",$ret_or_1=if_guard.$type())?pat=self.$s("and",pat,guard):$eqeqeq("unless_guard",$ret_or_1)&&(pat=self.$s("and",pat,self.$s("send",guard,"!")))),self.$s("if",pat,self.$process(body),$not(cases["$empty?"]())?$send(self,"single_case_match",[from].concat($to_a(cases)).concat([els])):$neqeq(els,self.$s("empty_else"))?els:nil)}),-3),$def(self,"$convert_full_pattern",(function(from,pat){var converter=nil;return $eqeq(from.$class(),$$("Symbol"))&&(from=this.$s("lvar",from)),(converter=$$("PatternConverter").$new(pat))["$run!"](),this.$s("masgn",$send(this,"s",["mlhs"].concat($to_a(converter.$variables()))),this.$s("send",this.$s("const",this.$s("cbase"),"PatternMatching"),"call",from,converter.$pattern()))}),2),function($base,$super,$parent_nesting){var self=$klass($base,$super,"PatternConverter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.pat=$proto.outpat=$proto.variables=nil,$def(self,"$initialize",(function(pat){return this.pat=pat,this.variables=[]}),1),$def(self,"$run!",(function(){return this.outpat=this.$process(this.pat)}),0),$def(self,"$pattern",(function(){return this.outpat}),0),$def(self,"$variables",(function(){return $send(this.variables,"map",[],(function $$2(i){return null==i&&(i=nil),(null==$$2.$$s?this:$$2.$$s).$s("lvasgn",i)}),{$$arity:1,$$s:this})}),0),$def(self,"$on_match_var",(function(node){var $a,var$;return var$=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],this.variables["$<<"](var$),this.$s("sym","var")}),1),$def(self,"$on_match_as",(function(node){var $a,pat,save;return pat=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],save=null==$a[1]?nil:$a[1],this.$process(save),this.$array(this.$s("sym","save"),this.$process(pat))}),1),$def(self,"$on_literal",(function(node){return this.$array(this.$s("sym","lit"),node)}),1),$alias(self,"on_int","on_literal"),$alias(self,"on_float","on_literal"),$alias(self,"on_complex","on_literal"),$alias(self,"on_rational","on_literal"),$alias(self,"on_array","on_literal"),$alias(self,"on_str","on_literal"),$alias(self,"on_dstr","on_literal"),$alias(self,"on_xstr","on_literal"),$alias(self,"on_sym","on_literal"),$alias(self,"on_irange","on_literal"),$alias(self,"on_erange","on_literal"),$alias(self,"on_const","on_literal"),$alias(self,"on_regexp","on_literal"),$alias(self,"on_lambda","on_literal"),$alias(self,"on_begin","on_literal"),$def(self,"$on_pin",(function(node){return this.$on_literal(node.$children().$first())}),1),$def(self,"$on_match_rest",(function(node){return $truthy(node.$children()["$empty?"]())?this.$array(this.$s("sym","rest")):this.$array(this.$s("sym","rest"),this.$process(node.$children().$first()))}),1),$def(self,"$on_match_alt",(function(node){return $send(this,"array",[this.$s("sym","any")].concat($to_a($send(node.$children(),"map",[],this.$method("process").$to_proc()))))}),1),$def(self,"$on_const_pattern",(function(node){return $send(this,"array",[this.$s("sym","all")].concat($to_a($send(node.$children(),"map",[],this.$method("process").$to_proc()))))}),1),$def(self,"$on_array_pattern",(function(node,tail){var children=nil,fixed_size=nil,array_size=nil;return null==tail&&(tail=!1),children=[].concat($to_a(node)),$truthy(tail)&&children["$<<"](this.$s("match_rest")),fixed_size=!0,array_size=0,children=$send(children,"each",[],(function(i){return null==i&&(i=nil),$eqeqeq("match_rest",i.$type())?fixed_size=!1:array_size=$rb_plus(array_size,1)}),1),this.$array(this.$s("sym","array"),this.$to_ast(fixed_size),this.$to_ast(array_size),this.$to_ast($send(children,"map",[],this.$method("process").$to_proc())))}),-2),$def(self,"$on_array_pattern_with_tail",(function(node){return this.$on_array_pattern(node,!0)}),1),$def(self,"$on_hash_pattern",(function(node){var children=nil,any_size=nil;return children=[].concat($to_a(node)),any_size=$truthy(children["$empty?"]())?this.$to_ast(!1):this.$to_ast(!0),children=$send(children,"map",[],(function $$4(i){var $ret_or_1,self=null==$$4.$$s?this:$$4.$$s;return null==i&&(i=nil),$eqeqeq("pair",$ret_or_1=i.$type())?self.$array(i.$children()["$[]"](0),self.$process(i.$children()["$[]"](1))):$eqeqeq("match_var",$ret_or_1)?self.$array(self.$s("sym",i.$children()["$[]"](0)),self.$process(i)):$eqeqeq("match_nil_pattern",$ret_or_1)?(any_size=self.$to_ast(!1),nil):$eqeqeq("match_rest",$ret_or_1)?(any_size=$truthy(i.$children().$first())?self.$process(i.$children().$first()):self.$to_ast(!0),nil):nil}),{$$arity:1,$$s:this}).$compact(),this.$array(this.$s("sym","hash"),any_size,$send(this,"array",$to_a(children)))}),1),$def(self,"$on_find_pattern",(function(node){var children=nil;return children=[].concat($to_a(node)),children=$send(children,"map",[],this.$method("process").$to_proc()),this.$array(this.$s("sym","find"),$send(this,"array",$to_a(children)))}),1),self.$private(),$def(self,"$array",(function($a){var args,self=this;return args=Opal.slice.call(arguments),self.$to_ast(args)}),-1),$def(self,"$to_ast",(function(val){var $ret_or_1;return $eqeqeq($$("Array"),$ret_or_1=val)?$send(this,"s",["array"].concat($to_a(val))):$eqeqeq($$("Integer"),$ret_or_1)?this.$s("int",val):$eqeqeq(!0,$ret_or_1)?this.$s("true"):$eqeqeq(!1,$ret_or_1)?this.$s("false"):$eqeqeq(nil,$ret_or_1)?this.$s("nil"):nil}),1)}($nesting[0],$$$($$$($Opal,"Rewriters"),"Base"),$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/logical_operator_assignment"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$class_variable_set=Opal.class_variable_set,$defs=Opal.defs,$truthy=Opal.truthy,$class_variable_get=Opal.class_variable_get,$rb_plus=Opal.rb_plus,$const_set=Opal.const_set,$lambda=Opal.lambda,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$slice=Opal.slice,$hash2=Opal.hash2,$send=Opal.send,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,+,updated,s,==,include?,[],type,new_temp,freeze,call,fetch,error,process"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"LogicalOperatorAssignment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$reset_tmp_counter!",(function(){return $class_variable_set($nesting[0],"@@counter",0)}),0),$defs(self,"$new_temp",(function(){var $ret_or_1=nil;return $class_variable_set($nesting[0],"@@counter",$truthy(null!=$nesting[0].$$cvars["@@counter"]?"class variable":nil)&&$truthy($ret_or_1=$class_variable_get($nesting[0],"@@counter",!1))?$ret_or_1:0),$class_variable_set($nesting[0],"@@counter",$rb_plus($class_variable_get($nesting[0],"@@counter",!1),1)),"$logical_op_recvr_tmp_"+$class_variable_get($nesting[0],"@@counter",!1)}),0),$const_set($nesting[0],"GET_SET",$lambda((function $LogicalOperatorAssignment$2(get_type,set_type){return null==get_type&&(get_type=nil),null==set_type&&(set_type=nil),$lambda((function $$3(lhs,rhs,root_type){var get_node,self=null==$$3.$$s?this:$$3.$$s,condition_node=nil,defined_node=nil;return null==lhs&&(lhs=nil),null==rhs&&(rhs=nil),null==root_type&&(root_type=nil),get_node=lhs.$updated(get_type),condition_node=self.$s(root_type,get_node,rhs),$truthy(["const","cvar"]["$include?"](get_type))&&$eqeq(root_type,"or")&&(defined_node=self.$s("defined?",get_node),condition_node=self.$s("if",defined_node,self.$s("begin",condition_node),rhs)),lhs.$updated(set_type,[].concat($to_a(lhs)).concat([condition_node]))}),{$$arity:3,$$s:null==$LogicalOperatorAssignment$2.$$s?this:$LogicalOperatorAssignment$2.$$s})}),{$$arity:2,$$s:self})),$const_set($nesting[0],"LocalVariableHandler",$$("GET_SET")["$[]"]("lvar","lvasgn")),$const_set($nesting[0],"InstanceVariableHandler",$$("GET_SET")["$[]"]("ivar","ivasgn")),$const_set($nesting[0],"ConstantHandler",$$("GET_SET")["$[]"]("const","casgn")),$const_set($nesting[0],"GlobalVariableHandler",$$("GET_SET")["$[]"]("gvar","gvasgn")),$const_set($nesting[0],"ClassVariableHandler",$$("GET_SET")["$[]"]("cvar","cvasgn")),function($base,$super){var self=$klass($base,$super,"SendHandler");$defs(self,"$call",(function(lhs,rhs,root_type){var $a,args,call_reader,call_writer,get_or_set,recvr=nil,reader_method=nil,recvr_tmp=nil,cache_recvr=nil,writer_method=nil;return recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],reader_method=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(recvr)&&$eqeq(recvr.$type(),"send")&&(recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp)),writer_method=reader_method+"=",call_reader=lhs.$updated("send",[recvr,reader_method].concat($to_a(args))),call_writer=lhs.$updated("send",[recvr,writer_method].concat($to_a(args)).concat([rhs])),get_or_set=this.$s(root_type,call_reader,call_writer),$truthy(cache_recvr)?this.$s("begin",cache_recvr,get_or_set):get_or_set}),3)}($nesting[0],self),function($base,$super){var self=$klass($base,$super,"ConditionalSendHandler");$defs(self,"$call",(function(lhs,rhs,root_type){var $a,args,recvr_tmp,cache_recvr,recvr_is_nil,plain_send,plain_or_asgn,recvr=nil,meth=nil;return root_type+="_asgn",recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp),recvr_is_nil=this.$s("send",recvr,"nil?"),plain_send=lhs.$updated("send",[recvr,meth].concat($to_a(args))),plain_or_asgn=this.$s(root_type,plain_send,rhs),this.$s("begin",cache_recvr,this.$s("if",recvr_is_nil,this.$s("nil"),plain_or_asgn))}),3)}($nesting[0],self),$const_set($nesting[0],"HANDLERS",$hash2(["lvasgn","ivasgn","casgn","gvasgn","cvasgn","send","csend"],{lvasgn:$$("LocalVariableHandler"),ivasgn:$$("InstanceVariableHandler"),casgn:$$("ConstantHandler"),gvasgn:$$("GlobalVariableHandler"),cvasgn:$$("ClassVariableHandler"),send:$$("SendHandler"),csend:$$("ConditionalSendHandler")}).$freeze()),$def(self,"$on_or_asgn",(function(node){var $a,rhs,result,lhs=nil;return $a=[].concat($to_a(node)),lhs=null==$a[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],result=$send($$("HANDLERS"),"fetch",[lhs.$type()],(function $$4(){return(null==$$4.$$s?this:$$4.$$s).$error("cannot handle LHS type: "+lhs.$type())}),{$$arity:0,$$s:this}).$call(lhs,rhs,"or"),this.$process(result)}),1),$def(self,"$on_and_asgn",(function(node){var $a,rhs,result,lhs=nil;return $a=[].concat($to_a(node)),lhs=null==$a[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],result=$send($$("HANDLERS"),"fetch",[lhs.$type()],(function $$5(){return(null==$$5.$$s?this:$$5.$$s).$error("cannot handle LHS type: "+lhs.$type())}),{$$arity:0,$$s:this}).$call(lhs,rhs,"and"),this.$process(result)}),1),$const_set($nesting[0],"ASSIGNMENT_STRING_NODE",self.$s("str","assignment")),$def(self,"$on_defined?",(function $LogicalOperatorAssignment_on_defined$ques$6(node){var $a,inner=nil;return delete $LogicalOperatorAssignment_on_defined$ques$6.$$p,inner=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$truthy(["or_asgn","and_asgn"]["$include?"](inner.$type()))?$$("ASSIGNMENT_STRING_NODE"):$send2(this,$find_super(this,"on_defined?",$LogicalOperatorAssignment_on_defined$ques$6,!1,!0),"on_defined?",[node],null)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/binary_operator_assignment"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$class_variable_set=Opal.class_variable_set,$defs=Opal.defs,$truthy=Opal.truthy,$class_variable_get=Opal.class_variable_get,$rb_plus=Opal.rb_plus,$const_set=Opal.const_set,$lambda=Opal.lambda,$to_a=Opal.to_a,$slice=Opal.slice,$eqeq=Opal.eqeq,$hash2=Opal.hash2,$send=Opal.send,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,+,updated,[],==,type,new_temp,s,freeze,call,fetch,error,process"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"BinaryOperatorAssignment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$reset_tmp_counter!",(function(){return $class_variable_set($nesting[0],"@@counter",0)}),0),$defs(self,"$new_temp",(function(){var $ret_or_1=nil;return $class_variable_set($nesting[0],"@@counter",$truthy(null!=$nesting[0].$$cvars["@@counter"]?"class variable":nil)&&$truthy($ret_or_1=$class_variable_get($nesting[0],"@@counter",!1))?$ret_or_1:0),$class_variable_set($nesting[0],"@@counter",$rb_plus($class_variable_get($nesting[0],"@@counter",!1),1)),"$binary_op_recvr_tmp_"+$class_variable_get($nesting[0],"@@counter",!1)}),0),$const_set($nesting[0],"GET_SET",$lambda((function(get_type,set_type){return null==get_type&&(get_type=nil),null==set_type&&(set_type=nil),$lambda((function(node,lhs,operation,rhs){var get_node,set_node;return null==node&&(node=nil),null==lhs&&(lhs=nil),null==operation&&(operation=nil),null==rhs&&(rhs=nil),get_node=lhs.$updated(get_type),set_node=node.$updated("send",[get_node,operation,rhs]),lhs.$updated(set_type,[].concat($to_a(lhs)).concat([set_node]))}),4)}),2)),$const_set($nesting[0],"LocalVariableHandler",$$("GET_SET")["$[]"]("lvar","lvasgn")),$const_set($nesting[0],"InstanceVariableHandler",$$("GET_SET")["$[]"]("ivar","ivasgn")),$const_set($nesting[0],"ConstantHandler",$$("GET_SET")["$[]"]("const","casgn")),$const_set($nesting[0],"GlobalVariableHandler",$$("GET_SET")["$[]"]("gvar","gvasgn")),$const_set($nesting[0],"ClassVariableHandler",$$("GET_SET")["$[]"]("cvar","cvasgn")),function($base,$super){var self=$klass($base,$super,"SendHandler");$defs(self,"$call",(function(node,lhs,operation,rhs){var $a,args,call_reader,call_op,call_writer,recvr=nil,reader_method=nil,recvr_tmp=nil,cache_recvr=nil,writer_method=nil;return recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],reader_method=null==$a[1]?nil:$a[1],args=$slice.call($a,2),$truthy(recvr)&&$eqeq(recvr.$type(),"send")&&(recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp)),writer_method=reader_method+"=",call_reader=lhs.$updated("send",[recvr,reader_method].concat($to_a(args))),call_op=node.$updated("send",[call_reader,operation,rhs]),call_writer=lhs.$updated("send",[recvr,writer_method].concat($to_a(args)).concat([call_op])),$truthy(cache_recvr)?node.$updated("begin",[cache_recvr,call_writer]):call_writer}),4)}($nesting[0],self),function($base,$super){var self=$klass($base,$super,"ConditionalSendHandler");$defs(self,"$call",(function(node,lhs,operation,rhs){var $a,args,recvr_tmp,cache_recvr,recvr_is_nil,plain_send,plain_op_asgn,recvr=nil,meth=nil;return recvr=null==($a=[].concat($to_a(lhs)))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),recvr_tmp=this.$new_temp(),cache_recvr=this.$s("lvasgn",recvr_tmp,recvr),recvr=this.$s("js_tmp",recvr_tmp),recvr_is_nil=this.$s("send",recvr,"nil?"),plain_send=lhs.$updated("send",[recvr,meth].concat($to_a(args))),plain_op_asgn=node.$updated("op_asgn",[plain_send,operation,rhs]),this.$s("begin",cache_recvr,this.$s("if",recvr_is_nil,this.$s("nil"),plain_op_asgn))}),4)}($nesting[0],self),$const_set($nesting[0],"HANDLERS",$hash2(["lvasgn","ivasgn","casgn","gvasgn","cvasgn","send","csend"],{lvasgn:$$("LocalVariableHandler"),ivasgn:$$("InstanceVariableHandler"),casgn:$$("ConstantHandler"),gvasgn:$$("GlobalVariableHandler"),cvasgn:$$("ClassVariableHandler"),send:$$("SendHandler"),csend:$$("ConditionalSendHandler")}).$freeze()),$def(self,"$on_op_asgn",(function(node){var $a,op,rhs,result,lhs=nil;return $a=[].concat($to_a(node)),lhs=null==$a[0]?nil:$a[0],op=null==$a[1]?nil:$a[1],rhs=null==$a[2]?nil:$a[2],result=$send($$("HANDLERS"),"fetch",[lhs.$type()],(function $$4(){return(null==$$4.$$s?this:$$4.$$s).$error("cannot handle LHS type: "+lhs.$type())}),{$$arity:0,$$s:this}).$call(node,lhs,op,rhs),this.$process(result)}),1),$const_set($nesting[0],"ASSIGNMENT_STRING_NODE",self.$s("str","assignment")),$def(self,"$on_defined?",(function $BinaryOperatorAssignment_on_defined$ques$5(node){var $a,inner=nil;return delete $BinaryOperatorAssignment_on_defined$ques$5.$$p,inner=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$eqeq(inner.$type(),"op_asgn")?$$("ASSIGNMENT_STRING_NODE"):$send2(this,$find_super(this,"on_defined?",$BinaryOperatorAssignment_on_defined$ques$5,!1,!0),"on_defined?",[node],null)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/hashes/key_duplicates_rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$Opal=Opal.Opal;return Opal.add_stubs("require,new,include?,type,<<,==,process_regular_node,updated,inspect,warn"),self.$require("opal/rewriters/base"),self.$require("set"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Hashes")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"KeyDuplicatesRewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.keys=nil,$def(self,"$initialize",(function(){return this.keys=$$("UniqKeysSet").$new()}),0),$def(self,"$on_hash",(function $$on_hash(node){var $a,self=this,previous_keys=nil;return delete $$on_hash.$$p,function(){try{return $a=[self.keys,$$("UniqKeysSet").$new()],previous_keys=$a[0],self.keys=$a[1],$send2(self,$find_super(self,"on_hash",$$on_hash,!1,!0),"on_hash",[node],null)}finally{self.keys=previous_keys}}()}),1),$def(self,"$on_pair",(function $$on_pair(node){var $a,key=nil;return delete $$on_pair.$$p,key=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$truthy(["str","sym"]["$include?"](key.$type()))&&this.keys["$<<"](key),$send2(this,$find_super(this,"on_pair",$$on_pair,!1,!0),"on_pair",[node],null)}),1),$def(self,"$on_kwsplat",(function(node){var $a,hash=nil;return hash=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],$eqeq(hash.$type(),"hash")&&(hash=this.$process_regular_node(hash)),node.$updated(nil,[hash])}),1),function($base,$super,$parent_nesting){var self=$klass($base,null,"UniqKeysSet"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.set=nil,$def(self,"$initialize",(function(){return this.set=$$("Set").$new()}),0),$def(self,"$<<",(function(element){var $a,key=nil;return $truthy(this.set["$include?"](element))?(key=null==($a=[].concat($to_a(element)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],key=$eqeq(element.$type(),"str")?key.$inspect():":"+key,$$("Kernel").$warn("warning: key "+key+" is duplicated and overwritten")):this.set["$<<"](element)}),1)}($nesting[0],0,$nesting)}($nesting[0],$$$($$$($Opal,"Rewriters"),"Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/dump_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$hash2=Opal.hash2,$def=Opal.def;return Opal.add_stubs("require,updated"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DumpArgs");return $def(self,"$on_def",(function $$on_def(node){var $a,args;return delete $$on_def.$$p,node=$send2(this,$find_super(this,"on_def",$$on_def,!1,!0),"on_def",[node],null),null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],null==$a[2]?nil:$a[2],node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))}),1),$def(self,"$on_defs",(function $$on_defs(node){var $a,args;return delete $$on_defs.$$p,node=$send2(this,$find_super(this,"on_defs",$$on_defs,!1,!0),"on_defs",[node],null),null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],args=null==$a[2]?nil:$a[2],null==$a[3]?nil:$a[3],node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))}),1),$def(self,"$on_iter",(function $$on_iter(node){var $a,args;return delete $$on_iter.$$p,node=$send2(this,$find_super(this,"on_iter",$$on_iter,!1,!0),"on_iter",[node],null),args=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],node.$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["original_args"],{original_args:args})}))}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/mlhs_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$def=Opal.def,$rb_plus=Opal.rb_plus,$send=Opal.send,$eqeq=Opal.eqeq,$hash2=Opal.hash2;return Opal.add_stubs("require,new,updated,rewritten,initialization,s,prepend_to_body,attr_reader,split!,+,each,children,==,type,new_mlhs_tmp,process,<<,length,[],empty?"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"MlhsArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_def",(function $$on_def(node){var $a,mid,args=nil,body=nil,arguments$=nil,$ret_or_1=nil;return delete $$on_def.$$p,node=$send2(this,$find_super(this,"on_def",$$on_def,!1,!0),"on_def",[node],null),mid=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],arguments$=$$("Arguments").$new(args),args=args.$updated(nil,arguments$.$rewritten()),$truthy(arguments$.$initialization())&&(body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),body=this.$prepend_to_body(body,arguments$.$initialization())),node.$updated(nil,[mid,args,body])}),1),$def(self,"$on_defs",(function $$on_defs(node){var $a,recv,mid,args=nil,body=nil,arguments$=nil,$ret_or_1=nil;return delete $$on_defs.$$p,node=$send2(this,$find_super(this,"on_defs",$$on_defs,!1,!0),"on_defs",[node],null),recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],mid=null==$a[1]?nil:$a[1],args=null==$a[2]?nil:$a[2],body=null==$a[3]?nil:$a[3],arguments$=$$("Arguments").$new(args),args=args.$updated(nil,arguments$.$rewritten()),$truthy(arguments$.$initialization())&&(body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),body=this.$prepend_to_body(body,arguments$.$initialization())),node.$updated(nil,[recv,mid,args,body])}),1),$def(self,"$on_iter",(function $$on_iter(node){var $a,args=nil,body=nil,arguments$=nil,$ret_or_1=nil;return delete $$on_iter.$$p,node=$send2(this,$find_super(this,"on_iter",$$on_iter,!1,!0),"on_iter",[node],null),args=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],body=null==$a[1]?nil:$a[1],arguments$=$$("Arguments").$new(args),args=args.$updated(nil,arguments$.$rewritten()),$truthy(arguments$.$initialization())&&(body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),body=this.$prepend_to_body(body,arguments$.$initialization())),node.$updated(nil,[args,body])}),1),function($base,$super,$parent_nesting){var self=$klass($base,$super,"Arguments"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.counter=$proto.args=$proto.initialization=nil,self.$attr_reader("rewritten","initialization"),$def(self,"$initialize",(function(args){return this.args=args,this.rewritten=[],this.initialization=[],this.rewriter=$$("MlhsRewriter").$new(),this["$split!"]()}),1),$def(self,"$reset_tmp_counter!",(function(){return this.counter=0}),0),$def(self,"$new_mlhs_tmp",(function(){var $ret_or_1;return this.counter=$truthy($ret_or_1=this.counter)?$ret_or_1:0,this.counter=$rb_plus(this.counter,1),"$mlhs_tmp"+this.counter}),0),$def(self,"$split!",(function(){return $send(this.args.$children(),"each",[],(function $$3(arg){var self=null==$$3.$$s?this:$$3.$$s,var_name=nil,rhs=nil,mlhs=nil;return null==self.rewriter&&(self.rewriter=nil),null==self.initialization&&(self.initialization=nil),null==self.rewritten&&(self.rewritten=nil),null==arg&&(arg=nil),$eqeq(arg.$type(),"mlhs")?(var_name=self.$new_mlhs_tmp(),rhs=self.$s("lvar",var_name),mlhs=self.rewriter.$process(arg),self.initialization["$<<"](self.$s("masgn",mlhs,rhs)),self.rewritten["$<<"](self.$s("arg",var_name).$updated(nil,nil,$hash2(["meta"],{meta:$hash2(["arg_name"],{arg_name:var_name})})))):self.rewritten["$<<"](arg)}),{$$arity:1,$$s:this}),$eqeq(this.initialization.$length(),1)?this.initialization=this.initialization["$[]"](0):$truthy(this.initialization["$empty?"]())?this.initialization=nil:this.initialization=$send(this,"s",["begin"].concat($to_a(this.initialization)))}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"MlhsRewriter");return $def(self,"$on_arg",(function(node){return node.$updated("lvasgn")}),1),$def(self,"$on_restarg",(function(node){var name;return name=node.$children()["$[]"](0),$truthy(name)?this.$s("splat",node.$updated("lvasgn")):this.$s("splat")}),1)}($nesting[0],$$("Base"))}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/arguments"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("attr_reader,each,===,type,<<,any?,raise,!,nil?,has_any_kwargs?,can_inline_kwargs?,empty?"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,null,"Arguments"),$proto=self.$$prototype;return $proto.restarg=$proto.postargs=$proto.kwargs=$proto.kwoptargs=$proto.kwrestarg=$proto.optargs=nil,self.$attr_reader("args","optargs","restarg","postargs","kwargs","kwoptargs","kwrestarg","kwnilarg","shadowargs","blockarg"),$def(self,"$initialize",(function(args){return this.args=[],this.optargs=[],this.restarg=nil,this.postargs=[],this.kwargs=[],this.kwoptargs=[],this.kwrestarg=nil,this.kwnilarg=!1,this.shadowargs=[],this.blockarg=nil,$send(args,"each",[],(function $$1(arg){var $ret_or_1,self=null==$$1.$$s?this:$$1.$$s;return null==self.optargs&&(self.optargs=nil),null==self.restarg&&(self.restarg=nil),null==self.postargs&&(self.postargs=nil),null==self.args&&(self.args=nil),null==self.kwargs&&(self.kwargs=nil),null==self.kwoptargs&&(self.kwoptargs=nil),null==self.shadowargs&&(self.shadowargs=nil),null==arg&&(arg=nil),$eqeqeq("arg",$ret_or_1=arg.$type())||$eqeqeq("mlhs",$ret_or_1)?($truthy(self.restarg)||$truthy(self.optargs["$any?"]())?self.postargs:self.args)["$<<"](arg):$eqeqeq("optarg",$ret_or_1)?self.optargs["$<<"](arg):$eqeqeq("restarg",$ret_or_1)?self.restarg=arg:$eqeqeq("kwarg",$ret_or_1)?self.kwargs["$<<"](arg):$eqeqeq("kwoptarg",$ret_or_1)?self.kwoptargs["$<<"](arg):$eqeqeq("kwnilarg",$ret_or_1)?self.kwnilarg=!0:$eqeqeq("kwrestarg",$ret_or_1)?self.kwrestarg=arg:$eqeqeq("shadowarg",$ret_or_1)?self.shadowargs["$<<"](arg):$eqeqeq("blockarg",$ret_or_1)?self.blockarg=arg:self.$raise("Unsupported arg type "+arg.$type())}),{$$arity:1,$$s:this})}),1),$def(self,"$has_post_args?",(function(){var $ret_or_1,$ret_or_2=nil;return $truthy($ret_or_1=$truthy($ret_or_2=this.restarg["$nil?"]()["$!"]())?$ret_or_2:this.postargs["$any?"]())?$ret_or_1:$truthy($ret_or_2=this["$has_any_kwargs?"]())?this["$can_inline_kwargs?"]()["$!"]():$ret_or_2}),0),$def(self,"$has_any_kwargs?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.kwargs["$any?"]())?$ret_or_2:this.kwoptargs["$any?"]())?$ret_or_1:this.kwrestarg["$nil?"]()["$!"]()}),0),$def(self,"$can_inline_kwargs?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.optargs["$empty?"]())?this.restarg["$nil?"]():$ret_or_2)?this.postargs["$empty?"]():$ret_or_1}),0)}([$module($base,"Rewriters")].concat($parent_nesting)[0])}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/inline_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$hash2=Opal.hash2,$def=Opal.def,$const_set=Opal.const_set,$send=Opal.send,$eqeq=Opal.eqeq,$Opal=Opal.Opal;return Opal.add_stubs("require,s,new,updated,inline,prepend_to_body,initialization,attr_reader,freeze,children,each,send,any?,blockarg,<<,shadowargs,args,==,[],has_post_args?,length,has_any_kwargs?,can_inline_kwargs?,kwargs,kwoptargs,kwrestarg,postargs,optargs,args_to_keep,restarg"),self.$require("opal/rewriters/base"),self.$require("opal/rewriters/arguments"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"InlineArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_def",(function $$on_def(node){var $a,mid,$ret_or_1,inline_args,args=nil,body=nil,initializer=nil;return delete $$on_def.$$p,node=$send2(this,$find_super(this,"on_def",$$on_def,!1,!0),"on_def",[node],null),mid=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],args=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),initializer=$$("Initializer").$new(args,$hash2(["type"],{type:"def"})),inline_args=args.$updated(nil,initializer.$inline()),body=this.$prepend_to_body(body,initializer.$initialization()),node.$updated(nil,[mid,inline_args,body])}),1),$def(self,"$on_defs",(function $$on_defs(node){var $a,recv,mid,$ret_or_1,inline_args,args=nil,body=nil,initializer=nil;return delete $$on_defs.$$p,node=$send2(this,$find_super(this,"on_defs",$$on_defs,!1,!0),"on_defs",[node],null),recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],mid=null==$a[1]?nil:$a[1],args=null==$a[2]?nil:$a[2],body=null==$a[3]?nil:$a[3],body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),initializer=$$("Initializer").$new(args,$hash2(["type"],{type:"defs"})),inline_args=args.$updated(nil,initializer.$inline()),body=this.$prepend_to_body(body,initializer.$initialization()),node.$updated(nil,[recv,mid,inline_args,body])}),1),$def(self,"$on_iter",(function $$on_iter(node){var $a,$ret_or_1,inline_args,args=nil,body=nil,initializer=nil;return delete $$on_iter.$$p,node=$send2(this,$find_super(this,"on_iter",$$on_iter,!1,!0),"on_iter",[node],null),args=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],body=null==$a[1]?nil:$a[1],body=$truthy($ret_or_1=body)?$ret_or_1:this.$s("nil"),initializer=$$("Initializer").$new(args,$hash2(["type"],{type:"iter"})),inline_args=args.$updated(nil,initializer.$inline()),body=this.$prepend_to_body(body,initializer.$initialization()),node.$updated(nil,[inline_args,body])}),1),function($base,$super,$parent_nesting){var self=$klass($base,$super,"Initializer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.initialization=$proto.args=$proto.inline=nil,self.$attr_reader("inline","initialization"),$const_set($nesting[0],"STEPS",["extract_blockarg","initialize_shadowargs","extract_args","prepare_post_args","prepare_kwargs","extract_optargs","extract_restarg","extract_post_args","extract_kwargs","extract_kwoptargs","extract_kwrestarg"].$freeze()),$def(self,"$initialize",(function(args,$kwargs){var type;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");if(!Opal.hasOwnProperty.call($kwargs.$$smap,"type"))throw Opal.ArgumentError.$new("missing keyword: type");return type=$kwargs.$$smap.type,this.args=$$("Arguments").$new(args.$children()),this.inline=[],this.initialization=[],this.type=type,this.underscore_found=!1,$send($$("STEPS"),"each",[],(function $$1(step){return null==step&&(step=nil),(null==$$1.$$s?this:$$1.$$s).$send(step)}),{$$arity:1,$$s:this}),$truthy(this.initialization["$any?"]())?this.initialization=$send(this,"s",["begin"].concat($to_a(this.initialization))):this.initialization=nil}),2),$def(self,"$extract_blockarg",(function(){var arg=nil;return $truthy(arg=this.args.$blockarg())?this.initialization["$<<"](arg.$updated("extract_blockarg")):nil}),0),$def(self,"$initialize_shadowargs",(function(){return $send(this.args.$shadowargs(),"each",[],(function $$2(arg){var self=null==$$2.$$s?this:$$2.$$s;return null==self.initialization&&(self.initialization=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("initialize_shadowarg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_args",(function(){return $send(this.args.$args(),"each",[],(function $$3(arg){var self=null==$$3.$$s?this:$$3.$$s;return null==self.type&&(self.type=nil),null==self.initialization&&(self.initialization=nil),null==self.underscore_found&&(self.underscore_found=nil),null==self.inline&&(self.inline=nil),null==arg&&(arg=nil),$eqeq(self.type,"iter")&&(self.initialization["$<<"](arg.$updated("initialize_iter_arg")),$eqeq(arg.$children()["$[]"](0),"_")&&($truthy(self.underscore_found)&&(arg=self.$s("fake_arg")),self.underscore_found=!0)),self.inline["$<<"](arg)}),{$$arity:1,$$s:this})}),0),$def(self,"$prepare_post_args",(function(){return $truthy(this.args["$has_post_args?"]())?this.initialization["$<<"](this.$s("prepare_post_args",this.args.$args().$length())):nil}),0),$def(self,"$prepare_kwargs",(function(){return $truthy(this.args["$has_any_kwargs?"]())?($truthy(this.args["$can_inline_kwargs?"]())?this.inline["$<<"](this.$s("arg","$kwargs")):(this.initialization["$<<"](this.$s("extract_kwargs")),this.inline["$<<"](this.$s("fake_arg"))),this.initialization["$<<"](this.$s("ensure_kwargs_are_kwargs"))):nil}),0),$def(self,"$extract_kwargs",(function(){return $send(this.args.$kwargs(),"each",[],(function $$4(arg){var self=null==$$4.$$s?this:$$4.$$s;return null==self.initialization&&(self.initialization=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("extract_kwarg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_kwoptargs",(function(){return $send(this.args.$kwoptargs(),"each",[],(function $$5(arg){var self=null==$$5.$$s?this:$$5.$$s;return null==self.initialization&&(self.initialization=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("extract_kwoptarg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_kwrestarg",(function(){var arg=nil;return $truthy(arg=this.args.$kwrestarg())?this.initialization["$<<"](arg.$updated("extract_kwrestarg")):nil}),0),$def(self,"$extract_post_args",(function(){return $send(this.args.$postargs(),"each",[],(function $$6(arg){var self=null==$$6.$$s?this:$$6.$$s;return null==self.initialization&&(self.initialization=nil),null==self.inline&&(self.inline=nil),null==arg&&(arg=nil),self.initialization["$<<"](arg.$updated("extract_post_arg")),self.inline["$<<"](self.$s("fake_arg"))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_optargs",(function(){var has_post_args;return has_post_args=this.args["$has_post_args?"](),$send(this.args.$optargs(),"each",[],(function $$7(arg){var $a,self=null==$$7.$$s?this:$$7.$$s,arg_name=nil,default_value=nil;return null==self.initialization&&(self.initialization=nil),null==self.inline&&(self.inline=nil),null==arg&&(arg=nil),$truthy(has_post_args)?(arg_name=null==($a=[].concat($to_a(arg)))[0]?nil:$a[0],default_value=null==$a[1]?nil:$a[1],self.initialization["$<<"](arg.$updated("extract_post_optarg",[arg_name,default_value,self.$args_to_keep()])),self.inline["$<<"](self.$s("fake_arg"))):(self.inline["$<<"](arg.$updated("arg")),self.initialization["$<<"](arg.$updated("extract_optarg")))}),{$$arity:1,$$s:this})}),0),$def(self,"$extract_restarg",(function(){var arg=nil,arg_name=nil;return $truthy(arg=this.args.$restarg())?(arg_name=arg.$children()["$[]"](0),this.initialization["$<<"](arg.$updated("extract_restarg",[arg_name,this.$args_to_keep()])),this.inline["$<<"](this.$s("fake_arg"))):nil}),0),$def(self,"$args_to_keep",(function(){return this.args.$postargs().$length()}),0)}($nesting[0],$$$($$$($Opal,"Rewriters"),"Base"),$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/numblocks"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_ary=Opal.to_ary,$send=Opal.send,$to_a=Opal.to_a,$def=Opal.def;return Opal.add_stubs("require,children,s,gen_args,map"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"Numblocks");return $def(self,"$on_numblock",(function(node){var $a,$b,left,arg_count,right;return $b=node.$children(),left=null==($a=$to_ary($b))[0]?nil:$a[0],arg_count=null==$a[1]?nil:$a[1],right=null==$a[2]?nil:$a[2],this.$s("block",left,$send(this,"s",["args"].concat($to_a(this.$gen_args(arg_count)))),right)}),1),$def(self,"$gen_args",(function(arg_count){return $send(Opal.Range.$new(1,arg_count,!1),"map",[],(function $$1(i){return null==i&&(i=nil),(null==$$1.$$s?this:$$1.$$s).$s("arg","_"+i)}),{$$arity:1,$$s:this})}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/returnable_logic"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$def=Opal.def,$rb_minus=Opal.rb_minus,$to_a=Opal.to_a,$send=Opal.send,$send2=Opal.send2,$find_super=Opal.find_super,$slice=Opal.slice,$eqeq=Opal.eqeq;return Opal.add_stubs("require,+,-,children,[]=,meta,s,next_tmp,build_if_from_when,free_tmp,[],process,updated,==,count,first,delete,private,build_rule_from_parts,empty?,type"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ReturnableLogic");return self.$$prototype.counter=nil,$def(self,"$next_tmp",(function(){var $ret_or_1;return this.counter=$truthy($ret_or_1=this.counter)?$ret_or_1:0,this.counter=$rb_plus(this.counter,1),"$ret_or_"+this.counter}),0),$def(self,"$free_tmp",(function(){return this.counter=$rb_minus(this.counter,1)}),0),$def(self,"$reset_tmp_counter!",(function(){return this.counter=nil}),0),$def(self,"$on_if",(function $$on_if(node){var $a,$yield=$$on_if.$$p||nil,test=nil,$writer=nil;return delete $$on_if.$$p,test=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],$truthy(test)&&($writer=["if_test",!0],$send(test.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$send2(this,$find_super(this,"on_if",$$on_if,!1,!0),"on_if",[node],$yield)}),1),$def(self,"$on_case",(function(node){var $a,$b,lhs,whens,$ret_or_1,out,els=nil,lhs_tmp=nil;return lhs=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],$b=($b=$a.length-1)<1?1:$b,whens=$slice.call($a,1,$b),els=null==$a[$b]?nil:$a[$b],els=$truthy($ret_or_1=els)?$ret_or_1:this.$s("nil"),$truthy(lhs)&&(lhs_tmp=this.$next_tmp()),out=this.$build_if_from_when(node,lhs,lhs_tmp,whens,els),$truthy(lhs)&&this.$free_tmp(),out}),1),$def(self,"$on_or",(function(node){var $a,lhs=nil,rhs=nil,$writer=nil,out=nil,lhs_tmp=nil;return lhs=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],$truthy(node.$meta()["$[]"]("if_test"))?($writer=["if_test",($writer=["if_test",!0],$send(rhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])],$send(lhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],out=this.$process(node.$updated("if",[lhs,this.$s("true"),rhs]))):(lhs_tmp=this.$next_tmp(),out=this.$process(node.$updated("if",[this.$s("lvasgn",lhs_tmp,lhs),this.$s("js_tmp",lhs_tmp),rhs])),this.$free_tmp()),out}),1),$def(self,"$on_and",(function(node){var $a,lhs=nil,rhs=nil,$writer=nil,out=nil,lhs_tmp=nil;return lhs=null==($a=[].concat($to_a(node.$children())))[0]?nil:$a[0],rhs=null==$a[1]?nil:$a[1],$truthy(node.$meta()["$[]"]("if_test"))?($writer=["if_test",($writer=["if_test",!0],$send(rhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])],$send(lhs.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],out=this.$process(node.$updated("if",[lhs,rhs,this.$s("false")]))):(lhs_tmp=this.$next_tmp(),out=this.$process(node.$updated("if",[this.$s("lvasgn",lhs_tmp,lhs),rhs,this.$s("js_tmp",lhs_tmp)])),this.$free_tmp()),out}),1),$def(self,"$on_begin",(function $$on_begin(node){var $yield=$$on_begin.$$p||nil,$writer=nil;return delete $$on_begin.$$p,$truthy(node.$meta()["$[]"]("if_test"))&&$eqeq(node.$children().$count(),1)&&($writer=["if_test",!0],$send(node.$children().$first().$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),node.$meta().$delete("if_test"),$send2(this,$find_super(this,"on_begin",$$on_begin,!1,!0),"on_begin",[node],$yield)}),1),self.$private(),$def(self,"$build_if_from_when",(function(node,lhs,lhs_tmp,whens,els){var $a,$b,parts,expr,rule,first_when=nil,next_whens=nil;return first_when=null==($a=[].concat($to_a(whens)))[0]?nil:$a[0],next_whens=$slice.call($a,1),$b=($b=($a=[].concat($to_a(first_when.$children()))).length-1)<0?0:$b,parts=$slice.call($a,0,$b),expr=null==$a[$b]?nil:$a[$b],rule=this.$build_rule_from_parts(node,lhs,lhs_tmp,parts),first_when.$updated("if",[rule,this.$process(expr),$truthy(next_whens["$empty?"]())?this.$process(els):this.$build_if_from_when(nil,nil,lhs_tmp,next_whens,els)])}),5),$def(self,"$build_rule_from_parts",(function(node,lhs,lhs_tmp,parts){var $a,subrule,first_part=nil,next_parts=nil,splat_on=nil,iter_val=nil,block=nil;return lhs=$truthy(node)&&$truthy(lhs_tmp)?node.$updated("lvasgn",[lhs_tmp,this.$process(lhs)]):this.$s("js_tmp",lhs_tmp),first_part=null==($a=[].concat($to_a(parts)))[0]?nil:$a[0],next_parts=$slice.call($a,1),subrule=$eqeq(first_part.$type(),"splat")?(splat_on=first_part.$children().$first(),iter_val=this.$next_tmp(),block=this.$s("send",this.$process(splat_on),"any?",this.$s("iter",this.$s("args",this.$s("arg",iter_val)),this.$build_rule_from_parts(nil,nil,lhs_tmp,[this.$s("lvar",iter_val)]))),$truthy(node)&&$truthy(lhs_tmp)?this.$s("begin",lhs,block):block):$truthy(lhs_tmp)?this.$s("send",this.$process(first_part),"===",lhs):this.$process(first_part),$truthy(next_parts["$empty?"]())?subrule:this.$s("if",subrule,this.$s("true"),this.$build_rule_from_parts(nil,nil,lhs_tmp,next_parts))}),4)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/forward_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$range=Opal.range,$to_a=Opal.to_a,$send2=Opal.send2,$find_super=Opal.find_super,$neqeq=Opal.neqeq;return Opal.add_stubs("require,process,s,==,type,last,children,[],updated,!=,class"),self.$require("opal/rewriters/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ForwardArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$on_forward_args",(function(_node){return this.$process(this.$s("args",this.$s("forward_arg","$")))}),1),$def(self,"$on_args",(function $$on_args(node){var $yield=$$on_args.$$p||nil,prev_children=nil;return delete $$on_args.$$p,$truthy(node.$children().$last())&&$eqeq(node.$children().$last().$type(),"forward_arg")?(prev_children=node.$children()["$[]"]($range(0,-2,!1)),node.$updated(nil,[].concat($to_a(prev_children)).concat([this.$s("restarg","$fwd_rest"),this.$s("blockarg","$fwd_block")]))):$send2(this,$find_super(this,"on_args",$$on_args,!1,!0),"on_args",[node],$yield)}),1),$def(self,"$on_send",(function $$on_send(node){var $yield=$$on_send.$$p||nil,prev_children=nil;return delete $$on_send.$$p,$truthy(node.$children().$last())&&$neqeq(node.$children().$last().$class(),$$("Symbol"))&&$eqeq(node.$children().$last().$type(),"forwarded_args")?(prev_children=node.$children()["$[]"]($range(0,-2,!1)),node.$updated(nil,[].concat($to_a(prev_children)).concat([this.$s("splat",this.$s("lvar","$fwd_rest")),this.$s("block_pass",this.$s("lvar","$fwd_block"))]))):$send2(this,$find_super(this,"on_send",$$on_send,!1,!0),"on_send",[node],$yield)}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/rewriter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("require,<<,list,delete,use,disabled?,class,each,new,process"),self.$require("opal/rewriters/opal_engine_check"),self.$require("opal/rewriters/for_rewriter"),self.$require("opal/rewriters/explicit_writer_return"),self.$require("opal/rewriters/js_reserved_words"),self.$require("opal/rewriters/block_to_iter"),self.$require("opal/rewriters/dot_js_syntax"),self.$require("opal/rewriters/pattern_matching"),self.$require("opal/rewriters/logical_operator_assignment"),self.$require("opal/rewriters/binary_operator_assignment"),self.$require("opal/rewriters/hashes/key_duplicates_rewriter"),self.$require("opal/rewriters/dump_args"),self.$require("opal/rewriters/mlhs_args"),self.$require("opal/rewriters/inline_args"),self.$require("opal/rewriters/numblocks"),self.$require("opal/rewriters/returnable_logic"),self.$require("opal/rewriters/forward_args"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Rewriter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.sexp=nil,function(self,$parent_nesting){$def(self,"$list",(function(){var $ret_or_1;return null==this.list&&(this.list=nil),this.list=$truthy($ret_or_1=this.list)?$ret_or_1:[]}),0),$def(self,"$use",(function(rewriter){return this.$list()["$<<"](rewriter)}),1),$def(self,"$delete",(function(rewriter){return this.$list().$delete(rewriter)}),1),$def(self,"$disable",(function $$disable(){var $yield=$$disable.$$p||nil,self=this;return delete $$disable.$$p,function(){try{return self.disabled=!0,Opal.yieldX($yield,[])}finally{self.disabled=!1}}()}),0),$def(self,"$disabled?",(function(){var $a;return null==this.disabled&&(this.disabled=nil),$truthy(null!=($a=this.disabled)&&$a!==nil?"instance-variable":nil)?this.disabled:nil}),0)}(Opal.get_singleton_class(self)),self.$use($$$($$("Rewriters"),"OpalEngineCheck")),self.$use($$$($$("Rewriters"),"ForRewriter")),self.$use($$$($$("Rewriters"),"Numblocks")),self.$use($$$($$("Rewriters"),"ForwardArgs")),self.$use($$$($$("Rewriters"),"BlockToIter")),self.$use($$$($$("Rewriters"),"DotJsSyntax")),self.$use($$$($$("Rewriters"),"PatternMatching")),self.$use($$$($$("Rewriters"),"JsReservedWords")),self.$use($$$($$("Rewriters"),"LogicalOperatorAssignment")),self.$use($$$($$("Rewriters"),"BinaryOperatorAssignment")),self.$use($$$($$("Rewriters"),"ExplicitWriterReturn")),self.$use($$$($$$($$("Rewriters"),"Hashes"),"KeyDuplicatesRewriter")),self.$use($$$($$("Rewriters"),"ReturnableLogic")),self.$use($$$($$("Rewriters"),"DumpArgs")),self.$use($$$($$("Rewriters"),"MlhsArgs")),self.$use($$$($$("Rewriters"),"InlineArgs")),$def(self,"$initialize",(function(sexp){return this.sexp=sexp}),1),$def(self,"$process",(function(){return $truthy(this.$class()["$disabled?"]())||$send(this.$class().$list(),"each",[],(function $$3(rewriter_class){var self=null==$$3.$$s?this:$$3.$$s,rewriter=nil;return null==self.sexp&&(self.sexp=nil),null==rewriter_class&&(rewriter_class=nil),rewriter=rewriter_class.$new(),self.sexp=rewriter.$process(self.sexp)}),{$$arity:1,$$s:this}),this.sexp}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/parser/source_buffer"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$defs=Opal.defs;return function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Parser")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"SourceBuffer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$recognize_encoding",(function $$recognize_encoding(string){var $ret_or_1,$yield=$$recognize_encoding.$$p||nil;return delete $$recognize_encoding.$$p,$truthy($ret_or_1=$send2(this,$find_super(this,"recognize_encoding",$$recognize_encoding,!1,!0),"recognize_encoding",[string],$yield))?$ret_or_1:$$$($$("Encoding"),"UTF_8")}),1)}($nesting[0],$$$($$$($$$("Parser"),"Source"),"Buffer"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/parser/default_config"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$send2=Opal.send2,$find_super=Opal.find_super,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$lambda=Opal.lambda,$defs=Opal.defs;return Opal.add_stubs("attr_accessor,all_errors_are_fatal=,diagnostics,-,ignore_warnings=,diagnostics_consumer,consumer=,extend,diagnostics_consumer=,new,rewrite,process,default_parser,default_parser_class"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Parser"),$nesting=[self].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"DefaultConfig"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);(function($base){var self=$module($base,"ClassMethods");self.$attr_accessor("diagnostics_consumer"),$def(self,"$default_parser",(function $$default_parser(){var $yield=$$default_parser.$$p||nil,parser=nil,$writer=nil;return delete $$default_parser.$$p,parser=$send2(this,$find_super(this,"default_parser",$$default_parser,!1,!0),"default_parser",[],$yield),$writer=[!0],$send(parser.$diagnostics(),"all_errors_are_fatal=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[!1],$send(parser.$diagnostics(),"ignore_warnings=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[this.$diagnostics_consumer()],$send(parser.$diagnostics(),"consumer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],parser}),0)})($nesting[0]),$defs(self,"$included",(function(klass){var $writer;return klass.$extend($$("ClassMethods")),$writer=[$lambda((function(diagnostic){return null==diagnostic&&(diagnostic=nil),nil}),1)],$send(klass,"diagnostics_consumer=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),$def(self,"$initialize",(function $$initialize($a){var self=this;return delete $$initialize.$$p,Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",[$$$($$$($$("Opal"),"AST"),"Builder").$new()],null)}),-1),$def(self,"$parse",(function $$parse(source_buffer){var parsed,$yield=$$parse.$$p||nil;return delete $$parse.$$p,parsed=$send2(this,$find_super(this,"parse",$$parse,!1,!0),"parse",[source_buffer],$yield),this.$rewrite(parsed)}),1),$def(self,"$rewrite",(function(node){return $$$($$("Opal"),"Rewriter").$new(node).$process()}),1)}($nesting[0],$nesting),function(self,$parent_nesting){return self.$attr_accessor("default_parser_class"),$def(self,"$default_parser",(function(){return this.$default_parser_class().$default_parser()}),0)}(Opal.get_singleton_class(self))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/parser/with_ruby_lexer"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),$$$=(Opal.nil,Opal.$$$),$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus;return Opal.add_stubs("include,default_parser_class=,-"),function($base,$super,$parent_nesting){var $writer,self=$klass($base,$super,"WithRubyLexer"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$include($$$($$$($$("Opal"),"Parser"),"DefaultConfig")),$writer=[self],$send($$$($$("Opal"),"Parser"),"default_parser_class=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}($$$($$("Opal"),"Parser"),$$$($$("Parser"),"Ruby31"),$nesting)},Opal.modules["opal/parser/patch"]=function(Opal){var $base,self,$nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$rb_plus=Opal.rb_plus,$send=Opal.send,$hash2=Opal.hash2,$eqeqeq=Opal.eqeqeq,$eqeq=Opal.eqeq,$not=Opal.not,$rb_le=Opal.rb_le,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$rb_divide=Opal.rb_divide,$to_a=Opal.to_a,$module=Opal.module;return Opal.add_stubs("source,unpack,+,to_a,lines,end_with?,<<,map,chomp,=~,diagnostic,nil?,new,===,type,updated,dedent,first,children,==,empty?,interrupt,compact,encoding,split,force_encoding,length,map!,each_with_index,!,each_char,<=,-,>,*,/,[],[]=,join,respond_to?,send,value"),$base=$$("Parser"),(self=$klass($base,null,"Lexer")).$$prototype.source_buffer=nil,$def(self,"$source_buffer=",(function(source_buffer){var source=nil;return this.source_buffer=source_buffer,$truthy(this.source_buffer)?(source=this.source_buffer.$source(),this.source_pts=source.$unpack("U*")):this.source_pts=nil}),1),function($base,$super){var self=$klass($base,null,"Literal"),$proto=self.$$prototype;$proto.buffer_s=$proto.buffer=nil,Opal.udef(self,"$extend_string"),$def(self,"$extend_string",(function(string,ts,te){var $ret_or_1;return this.buffer_s=$truthy($ret_or_1=this.buffer_s)?$ret_or_1:ts,this.buffer_e=te,this.buffer=$rb_plus(this.buffer,string)}),3)}($$$($$("Parser"),"Lexer")),function($base,$super){var self=$klass($base,null,"Buffer"),$proto=self.$$prototype;$proto.lines=$proto.source=nil,$def(self,"$source_lines",(function(){var $ret_or_1,lines=nil;return this.lines=$truthy($ret_or_1=this.lines)?$ret_or_1:(lines=this.source.$lines().$to_a(),$truthy(this.source["$end_with?"]("\n"))&&lines["$<<"](""),$send(lines,"map",[],(function(line){return null==line&&(line=nil),line.$chomp("\n")}),1))}),0)}($$$($$("Parser"),"Source")),function($base,$super){var self=$klass($base,null,"Default");$def(self,"$check_lvar_name",(function(name,loc){return $truthy(name["$=~"](new RegExp("^[\\p{Ll}|_][\\p{L}\\p{Nl}\\p{Nd}_]*$","u")))?nil:this.$diagnostic("error","lvar_name",$hash2(["name"],{name:name}),loc)}),2),$def(self,"$dedent_string",(function(node,dedent_level){var dedenter=nil,$ret_or_1=nil,children=nil;return $truthy(dedent_level["$nil?"]())||(dedenter=$$$($$$($$$("Parser"),"Lexer"),"Dedenter").$new(dedent_level),$eqeqeq("str",$ret_or_1=node.$type())?node=node.$updated(nil,[dedenter.$dedent(node.$children().$first())]):($eqeqeq("dstr",$ret_or_1)||$eqeqeq("xstr",$ret_or_1))&&(children=$send(node.$children(),"map",[],(function(str_node){if(null==str_node&&(str_node=nil),$eqeq(str_node.$type(),"str")){if(str_node=str_node.$updated(nil,[dedenter.$dedent(str_node.$children().$first())]),$truthy(str_node.$children().$first()["$empty?"]()))return nil}else dedenter.$interrupt();return str_node}),1),node=node.$updated(nil,children.$compact()))),node}),2)}($$$($$("Parser"),"Builders")),function($base,$super,$parent_nesting){var self=$klass($base,null,"Dedenter"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$dedent",(function(string){var original_encoding,self=this,lines=nil;return original_encoding=string.$encoding(),lines=string.$force_encoding($$$($$("Encoding"),"BINARY")).$split("\\\n"),$eqeq(lines.$length(),1)?lines=[string.$force_encoding(original_encoding)]:$send(lines,"map!",[],(function(s){return null==s&&(s=nil),s.$force_encoding(original_encoding)}),1),function(){var $brk=Opal.new_brk();try{$send(lines,"each_with_index",[],(function $$5(line,index){var $writer,self=null==$$5.$$s?this:$$5.$$s,left_to_remove=nil,remove=nil;return null==self.at_line_begin&&(self.at_line_begin=nil),null==self.dedent_level&&(self.dedent_level=nil),null==line&&(line=nil),null==index&&(index=nil),$eqeq(index,0)&&$not(self.at_line_begin)?nil:(left_to_remove=self.dedent_level,remove=0,function(){var $brk=Opal.new_brk();try{$send(line,"each_char",[],(function $$6(char$){var $ret_or_1,self=null==$$6.$$s?this:$$6.$$s;return null==self.dedent_level&&(self.dedent_level=nil),null==char$&&(char$=nil),$truthy($rb_le(left_to_remove,0))&&Opal.brk(nil,$brk),$eqeqeq(" ",$ret_or_1=char$)?(remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,1)):$eqeqeq("\t",$ret_or_1)?($truthy($rb_gt($rb_times($$("TAB_WIDTH"),$rb_plus($rb_divide(remove,$$("TAB_WIDTH")),1)),self.dedent_level))&&Opal.brk(nil,$brk),remove=$rb_plus(remove,1),left_to_remove=$rb_minus(left_to_remove,$$("TAB_WIDTH"))):void Opal.brk(nil,$brk)}),{$$arity:1,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),$writer=[index,line["$[]"](Opal.Range.$new(remove,-1,!1))],$send(lines,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),{$$arity:2,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),string=lines.$join(),self.at_line_begin=string["$end_with?"]("\n"),string}),1)}($$$($$("Parser"),"Lexer"),0,$nesting),function($base){var self=$module($base,"Mixin");Opal.udef(self,"$process"),$def(self,"$process",(function(node){var type,on_handler,$ret_or_1=nil,$writer=nil,handler=nil;return null==this._on_handler_cache&&(this._on_handler_cache=nil),$truthy(node["$nil?"]())?nil:(this._on_handler_cache=$truthy($ret_or_1=this._on_handler_cache)?$ret_or_1:$hash2([],{}),type=node.$type(),on_handler=$truthy($ret_or_1=this._on_handler_cache["$[]"](type))?$ret_or_1:($writer=[type,(handler="on_"+type,$truthy(this["$respond_to?"](handler))||(handler="handler_missing"),handler)],$send(this._on_handler_cache,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy($ret_or_1=this.$send(on_handler,node))?$ret_or_1:node)}),1)}($$$($$("AST"),"Processor")),function($base,$super){var self=$klass($base,null,"Default");return Opal.udef(self,"$string_value"),$def(self,"$string_value",(function(token){return this.$value(token)}),1)}($$$($$("Parser"),"Builders"))},Opal.modules["opal/parser"]=function(Opal){var self=Opal.top;Opal.nil;return Opal.add_stubs("require"),self.$require("opal/ast/builder"),self.$require("opal/rewriter"),self.$require("opal/parser/source_buffer"),self.$require("opal/parser/default_config"),self.$require("opal/parser/with_ruby_lexer"),self.$require("opal/parser/patch")},Opal.modules["opal/fragment"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt,$to_a=Opal.to_a,$not=Opal.not,$send=Opal.send;return Opal.add_stubs("attr_reader,to_s,inspect,===,type,[],meta,source_map_name_for,sexp,==,class,+,parent,>,!,first,children,loc,respond_to?,dot,selector,operator,begin,line,location,column"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Fragment"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.code=$proto.scope=$proto.sexp=nil,self.$attr_reader("code"),$def(self,"$initialize",(function(code,scope,sexp){return null==sexp&&(sexp=nil),this.code=code.$to_s(),this.sexp=sexp,this.scope=scope}),-3),$def(self,"$inspect",(function(){return"f("+this.code.$inspect()+")"}),0),$def(self,"$source_map_name_for",(function(sexp){var $a,$ret_or_1,$ret_or_2=nil,scope=nil,iters=nil,level=nil,const$=nil,name=nil;if($eqeqeq("top",$ret_or_1=sexp.$type()))return $eqeqeq("require",$ret_or_2=sexp.$meta()["$[]"]("kind"))?"":$eqeqeq("eval",$ret_or_2)?"(eval)":$eqeqeq("main",$ret_or_2)?"
      ":nil;if($eqeqeq("begin",$ret_or_1)||$eqeqeq("newline",$ret_or_1)||$eqeqeq("js_return",$ret_or_1))return $truthy(this.scope)?this.$source_map_name_for(this.scope.$sexp()):nil;if($eqeqeq("iter",$ret_or_1)){for(scope=this.scope,iters=1;$truthy(scope)&&$eqeq(scope.$class(),$$$($$("Nodes"),"IterNode"));)iters=$rb_plus(iters,1),scope=scope.$parent();return $truthy($rb_gt(iters,1))&&(level=" ("+iters+" levels)"),"block"+level+" in "+this.$source_map_name_for(scope.$sexp())}return $eqeqeq("self",$ret_or_1)?"self":$eqeqeq("module",$ret_or_1)?(const$=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],""):$eqeqeq("class",$ret_or_1)?(const$=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],""):$eqeqeq("const",$ret_or_1)?(scope=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],$not(scope)||$eqeq(scope.$type(),"cbase")?name.$to_s():this.$source_map_name_for(scope)+"::"+name):$eqeqeq("int",$ret_or_1)||$eqeqeq("def",$ret_or_1)?sexp.$children().$first():$eqeqeq("defs",$ret_or_1)||$eqeqeq("send",$ret_or_1)?sexp.$children()["$[]"](1):$eqeqeq("lvar",$ret_or_1)||$eqeqeq("lvasgn",$ret_or_1)||$eqeqeq("lvdeclare",$ret_or_1)||$eqeqeq("ivar",$ret_or_1)||$eqeqeq("ivasgn",$ret_or_1)||$eqeqeq("gvar",$ret_or_1)||$eqeqeq("cvar",$ret_or_1)||$eqeqeq("cvasgn",$ret_or_1)||$eqeqeq("gvars",$ret_or_1)||$eqeqeq("gvasgn",$ret_or_1)||$eqeqeq("arg",$ret_or_1)?sexp.$children().$first():$eqeqeq("str",$ret_or_1)||$eqeqeq("xstr",$ret_or_1)?this.$source_map_name_for(this.scope.$sexp()):nil}),1),$def(self,"$source_map_name",(function(){return $truthy(this.sexp)?this.$source_map_name_for(this.sexp):nil}),0),$def(self,"$location",(function(){var loc=nil,$ret_or_1=nil;return $not(this.sexp)?nil:$eqeq(this.sexp.$type(),"send")?(loc=this.sexp.$loc(),$truthy(loc["$respond_to?"]("dot"))?$truthy($ret_or_1=loc.$dot())?$ret_or_1:loc.$selector():$truthy(loc["$respond_to?"]("operator"))?loc.$operator():this.sexp):$eqeq(this.sexp.$type(),"iter")&&$truthy(loc["$respond_to?"]("begin"))?this.sexp.$loc().$begin():this.sexp}),0),$def(self,"$line",(function(){var $a;return($a=this.$location())===nil||null==$a?nil:$send($a,"line",[])}),0),$def(self,"$column",(function(){var $a;return($a=this.$location())===nil||null==$a?nil:$send($a,"column",[])}),0),$def(self,"$skip_source_map?",(function(){return this.sexp["$=="](!1)}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/helpers"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$truthy=Opal.truthy,$def=Opal.def,$rb_plus=Opal.rb_plus,$send=Opal.send,$hash2=Opal.hash2,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$slice=Opal.slice,$eqeq=Opal.eqeq,$rb_minus=Opal.rb_minus;return Opal.add_stubs("require,valid_name?,inspect,=~,to_s,+,indent,compiler,to_proc,parser_indent,push,fragment,current_indent,js_truthy_optimize,helper,expr,===,type,[],handlers,include?,truthy_optimize?,==,count,<<,method_calls,first,children,s,[]=,meta,-,new_temp,scope,wrap"),self.$require("opal/regexp_anchors"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"Helpers"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$property",(function(name){return $truthy(this["$valid_name?"](name))?"."+name:"["+name.$inspect()+"]"}),1),$def(self,"$valid_name?",(function(name){return $$$($$$($$("Opal"),"Rewriters"),"JsReservedWords")["$valid_name?"](name)}),1),$def(self,"$mid_to_jsid",(function(mid){return $truthy(/\=|\+|\-|\*|\/|\!|\?|<|\>|\&|\||\^|\%|\~|\[|`/["$=~"](mid.$to_s()))?"['$"+mid+"']":$rb_plus(".$",mid)}),1),$def(self,"$indent",(function $$indent(){var block=$$indent.$$p||nil;return delete $$indent.$$p,$send(this.$compiler(),"indent",[],block.$to_proc())}),0),$def(self,"$current_indent",(function(){return this.$compiler().$parser_indent()}),0),$def(self,"$line",(function($a){var strs,self=this;return strs=Opal.slice.call(arguments),self.$push(self.$fragment("\n"+self.$current_indent(),$hash2(["loc"],{loc:!1}))),$send(self,"push",$to_a(strs))}),-1),$def(self,"$empty_line",(function(){return this.$push(this.$fragment("\n",$hash2(["loc"],{loc:!1})))}),0),$def(self,"$js_truthy",(function(sexp){var optimize;return $truthy(optimize=this.$js_truthy_optimize(sexp))?optimize:(this.$helper("truthy"),[this.$fragment("$truthy("),this.$expr(sexp),this.$fragment(")")])}),1),$def(self,"$js_truthy_optimize",(function(sexp){var $a,$ret_or_1,receiver=nil,mid=nil,args=nil,receiver_handler_class=nil,$ret_or_2=nil,allow_optimization_on_type=nil,$ret_or_3=nil,true_body=nil,false_body=nil,$writer=nil;return $eqeqeq("send",$ret_or_1=sexp.$type())?(receiver=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],mid=null==$a[1]?nil:$a[1],args=$slice.call($a,2),receiver_handler_class=$truthy($ret_or_2=receiver)?this.$compiler().$handlers()["$[]"](receiver.$type()):$ret_or_2,allow_optimization_on_type=$truthy($ret_or_2=$truthy($ret_or_3=$$$($$("Compiler"),"COMPARE")["$include?"](mid.$to_s()))?receiver_handler_class:$ret_or_3)?receiver_handler_class["$truthy_optimize?"]():$ret_or_2,$truthy(allow_optimization_on_type)||$eqeq(mid,"block_given?")?this.$expr(sexp):$eqeq(args.$count(),1)?$eqeqeq("==",$ret_or_2=mid)?(this.$helper("eqeq"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$eqeq("),this.$expr(receiver),this.$fragment(", "),this.$expr(args.$first()),this.$fragment(")")]):$eqeqeq("===",$ret_or_2)?(this.$helper("eqeqeq"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$eqeqeq("),this.$expr(receiver),this.$fragment(", "),this.$expr(args.$first()),this.$fragment(")")]):$eqeqeq("!=",$ret_or_2)?(this.$helper("neqeq"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$neqeq("),this.$expr(receiver),this.$fragment(", "),this.$expr(args.$first()),this.$fragment(")")]):nil:$eqeq(args.$count(),0)&&$eqeqeq("!",$ret_or_2=mid)?(this.$helper("not"),this.$compiler().$method_calls()["$<<"](mid),[this.$fragment("$not("),this.$expr(receiver),this.$fragment(")")]):nil):$eqeqeq("begin",$ret_or_1)?$eqeq(sexp.$children().$count(),1)?this.$js_truthy_optimize(sexp.$children().$first()):nil:$eqeqeq("if",$ret_or_1)?(null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],true_body=null==$a[1]?nil:$a[1],false_body=null==$a[2]?nil:$a[2],$eqeq(true_body,this.$s("true"))?($writer=["do_js_truthy_on_false_body",!0],$send(sexp.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$expr(sexp)):$eqeq(false_body,this.$s("false"))?($writer=["do_js_truthy_on_true_body",!0],$send(sexp.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$expr(sexp)):nil):nil}),1),$def(self,"$conditional_send",(function $$conditional_send(recvr){var receiver_temp,$yield=$$conditional_send.$$p||nil;return delete $$conditional_send.$$p,receiver_temp=this.$scope().$new_temp(),this.$push(receiver_temp+" = ",recvr),this.$push(", ("+receiver_temp+" === nil || "+receiver_temp+" == null) ? nil : "),Opal.yield1($yield,receiver_temp),this.$wrap("(",")")}),1)}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/base"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$hash2=Opal.hash2,$defs=Opal.defs,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$Opal=Opal.Opal,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,include,each,[]=,handlers,-,each_with_index,define_method,[],children,attr_reader,type,top_scope,top_scope=,compile,raise,is_a?,fragment,<<,reverse_each,unshift,push,new,scope,error,loc,==,process,expr,add_scope_local,to_sym,add_scope_ivar,add_scope_gvar,add_scope_temp,helper,with_temp,to_proc,in_while?,instance_variable_get,has_rescue_else?,in_ensure,in_ensure?,in_resbody,in_resbody?,in_rescue,!,class_scope?,sclass?,+,parent,nesting,class_variable_owner_nesting_level,comments,compiler,name,source_buffer,expression,start_with?,end_with?,line"),self.$require("opal/nodes/helpers"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Base"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.compiler=$proto.sexp=$proto.fragments=$proto.level=nil,self.$include($$("Helpers")),$defs(self,"$handlers",(function(){var $ret_or_1;return null==this.handlers&&(this.handlers=nil),this.handlers=$truthy($ret_or_1=this.handlers)?$ret_or_1:$hash2([],{})}),0),$defs(self,"$handle",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each",[],(function $$1(type){var $writer;return null==type&&(type=nil),$writer=[type,null==$$1.$$s?this:$$1.$$s],$send($$("Base").$handlers(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})}),-1),$defs(self,"$children",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each_with_index",[],(function $$2(name,idx){var self=null==$$2.$$s?this:$$2.$$s;return null==name&&(name=nil),null==idx&&(idx=nil),$send(self,"define_method",[name],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return null==self.sexp&&(self.sexp=nil),self.sexp.$children()["$[]"](idx)}),{$$arity:0,$$s:self})}),{$$arity:2,$$s:self})}),-1),$defs(self,"$truthy_optimize?",(function(){return!1}),0),self.$attr_reader("compiler","type","sexp"),$def(self,"$initialize",(function(sexp,level,compiler){var $ret_or_1,$writer=nil;return this.sexp=sexp,this.type=sexp.$type(),this.level=level,this.compiler=compiler,$truthy($ret_or_1=this.compiler.$top_scope())?$ret_or_1:($writer=[this],$send(this.compiler,"top_scope=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),3),$def(self,"$children",(function(){return this.sexp.$children()}),0),$def(self,"$compile_to_fragments",(function(){var $a;return $truthy(null!=($a=this.fragments)&&$a!==nil?"instance-variable":nil)||(this.fragments=[],this.$compile()),this.fragments}),0),$def(self,"$compile",(function(){return this.$raise("Not Implemented")}),0),$def(self,"$push",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"each",[],(function $$5(str){var self=null==$$5.$$s?this:$$5.$$s;return null==self.fragments&&(self.fragments=nil),null==str&&(str=nil),$truthy(str["$is_a?"]($$("String")))&&(str=self.$fragment(str)),self.fragments["$<<"](str)}),{$$arity:1,$$s:self})}),-1),$def(self,"$unshift",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"reverse_each",[],(function $$6(str){var self=null==$$6.$$s?this:$$6.$$s;return null==self.fragments&&(self.fragments=nil),null==str&&(str=nil),$truthy(str["$is_a?"]($$("String")))&&(str=self.$fragment(str)),self.fragments.$unshift(str)}),{$$arity:1,$$s:self})}),-1),$def(self,"$wrap",(function(pre,post){return this.$unshift(pre),this.$push(post)}),2),$def(self,"$fragment",(function(str,$kwargs){var loc,$ret_or_1;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==(loc=$kwargs.$$smap.loc)&&(loc=!0),$$$($$("Opal"),"Fragment").$new(str,this.$scope(),$truthy($ret_or_1=loc)?this.sexp:$ret_or_1)}),-2),$def(self,"$error",(function(msg){return this.compiler.$error(msg)}),1),$def(self,"$scope",(function(){return this.compiler.$scope()}),0),$def(self,"$top_scope",(function(){return this.compiler.$top_scope()}),0),$def(self,"$s",(function(type,$a){var children,self=this;return children=Opal.slice.call(arguments,1),$$$($$$($Opal,"AST"),"Node").$new(type,children,$hash2(["location"],{location:self.sexp.$loc()}))}),-2),$def(self,"$expr?",(function(){return this.level["$=="]("expr")}),0),$def(self,"$recv?",(function(){return this.level["$=="]("recv")}),0),$def(self,"$stmt?",(function(){return this.level["$=="]("stmt")}),0),$def(self,"$process",(function(sexp,level){return null==level&&(level="expr"),this.compiler.$process(sexp,level)}),-2),$def(self,"$expr",(function(sexp){return this.compiler.$process(sexp,"expr")}),1),$def(self,"$recv",(function(sexp){return this.compiler.$process(sexp,"recv")}),1),$def(self,"$stmt",(function(sexp){return this.compiler.$process(sexp,"stmt")}),1),$def(self,"$expr_or_nil",(function(sexp){return $truthy(sexp)?this.$expr(sexp):"nil"}),1),$def(self,"$add_local",(function(name){return this.$scope().$add_scope_local(name.$to_sym())}),1),$def(self,"$add_ivar",(function(name){return this.$scope().$add_scope_ivar(name)}),1),$def(self,"$add_gvar",(function(name){return this.$scope().$add_scope_gvar(name)}),1),$def(self,"$add_temp",(function(temp){return this.$scope().$add_scope_temp(temp)}),1),$def(self,"$helper",(function(name){return this.compiler.$helper(name)}),1),$def(self,"$with_temp",(function $$with_temp(){var block=$$with_temp.$$p||nil;return delete $$with_temp.$$p,$send(this.compiler,"with_temp",[],block.$to_proc())}),0),$def(self,"$in_while?",(function(){return this.compiler["$in_while?"]()}),0),$def(self,"$while_loop",(function(){return this.compiler.$instance_variable_get("@while_loop")}),0),$def(self,"$has_rescue_else?",(function(){return this.$scope()["$has_rescue_else?"]()}),0),$def(self,"$in_ensure",(function $$in_ensure(){var block=$$in_ensure.$$p||nil;return delete $$in_ensure.$$p,$send(this.$scope(),"in_ensure",[],block.$to_proc())}),0),$def(self,"$in_ensure?",(function(){return this.$scope()["$in_ensure?"]()}),0),$def(self,"$in_resbody",(function $$in_resbody(){var block=$$in_resbody.$$p||nil;return delete $$in_resbody.$$p,$send(this.$scope(),"in_resbody",[],block.$to_proc())}),0),$def(self,"$in_resbody?",(function(){return this.$scope()["$in_resbody?"]()}),0),$def(self,"$in_rescue",(function $$in_rescue(node){var block=$$in_rescue.$$p||nil;return delete $$in_rescue.$$p,$send(this.$scope(),"in_rescue",[node],block.$to_proc())}),1),$def(self,"$class_variable_owner_nesting_level",(function(){var cvar_scope=nil,nesting_level=nil,$ret_or_1=nil;for(cvar_scope=this.$scope(),nesting_level=0;$truthy($truthy($ret_or_1=cvar_scope)?cvar_scope["$class_scope?"]()["$!"]():$ret_or_1);)$truthy(cvar_scope["$sclass?"]())&&(nesting_level=$rb_plus(nesting_level,1)),cvar_scope=cvar_scope.$parent();return nesting_level}),0),$def(self,"$class_variable_owner",(function(){return $truthy(this.$scope())?this.$scope().$nesting()+"["+this.$class_variable_owner_nesting_level()+"]":"Opal.Object"}),0),$def(self,"$comments",(function(){return this.$compiler().$comments()["$[]"](this.sexp.$loc())}),0),$def(self,"$source_location",(function(){var file=nil;return file=this.sexp.$loc().$expression().$source_buffer().$name(),$truthy(file["$start_with?"]("corelib/"))&&(file=""),$truthy(file["$end_with?"](".js"))&&(file=""),"['"+file+"', "+this.sexp.$loc().$line()+"]"}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/literal"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def,$defs=Opal.defs,$truthy=Opal.truthy,$const_set=Opal.const_set,$hash2=Opal.hash2,$regexp=Opal.regexp,$send=Opal.send,$rb_plus=Opal.rb_plus,$lambda=Opal.lambda,$rb_le=Opal.rb_le,$rb_minus=Opal.rb_minus,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$slice=Opal.slice,$Opal=Opal.Opal,$rb_gt=Opal.rb_gt;return Opal.add_stubs("require,handle,==,type,push,self,scope,to_s,children,value,recv?,wrap,freeze,join,keys,gsub,even?,length,last_match,+,chop,[],inspect,to_i,to_utf16,translate_escape_chars,valid_encoding?,helper,upcase,<=,call,-,>>,&,attr_accessor,extract_flags_and_value,select!,flags,=~,warning,compiler,compile_static_regexp,compile_dynamic_regexp,each_with_index,zero?,expr,any?,===,new,map,to_proc,flags=,empty?,s,single_line?,value=,include?,is_a?,updated,delete,source,expression,loc,private,>,!=,!,regexp,first,each,compile_inline?,compile_inline,compile_range_initialize,start,finish,raise,expr_or_nil,numerator,denominator,real,imag"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ValueNode");self.$handle("true","false","self","nil"),$def(self,"$compile",(function(){return $eqeq(this.$type(),"self")?this.$push(this.$scope().$self()):this.$push(this.$type().$to_s())}),0),$defs(self,"$truthy_optimize?",(function(){return!0}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"NumericNode");self.$handle("int","float"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$value().$to_s()),$truthy(this["$recv?"]())?this.$wrap("(",")"):nil}),0),$defs(self,"$truthy_optimize?",(function(){return!0}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"StringNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("str"),self.$children("value"),$const_set($nesting[0],"ESCAPE_CHARS",$hash2(["a","e"],{a:"\\u0007",e:"\\u001b"}).$freeze()),$const_set($nesting[0],"ESCAPE_REGEX",$regexp(["(\\\\+)([",$$("ESCAPE_CHARS").$keys().$join(""),"])"]).$freeze()),$def(self,"$translate_escape_chars",(function(inspect_string){return $send(inspect_string,"gsub",[$$("ESCAPE_REGEX")],(function(original){return null==original&&(original=nil),$truthy($$("Regexp").$last_match(1).$length()["$even?"]())?original:$rb_plus($$("Regexp").$last_match(1).$chop(),$$("ESCAPE_CHARS")["$[]"]($$("Regexp").$last_match(2)))}),1)}),1),$def(self,"$compile",(function(){var sanitized_value,string_value=nil;return string_value=this.$value(),sanitized_value=$send(string_value.$inspect(),"gsub",[/\\u\{([0-9a-f]+)\}/],(function $$4(){var code_point,self=null==$$4.$$s?this:$$4.$$s;return code_point=$$("Regexp").$last_match(1).$to_i(16),self.$to_utf16(code_point)}),{$$arity:0,$$s:this}),this.$push(this.$translate_escape_chars(sanitized_value)),$truthy(this.$value()["$valid_encoding?"]())?nil:(this.$helper("binary"),this.$wrap("$binary(",")"))}),0),$def(self,"$to_utf16",(function(code_point){var lead_surrogate,tail_surrogate,u=nil;return 1023,u=$lambda((function(code_unit){return null==code_unit&&(code_unit=nil),$rb_plus("\\u",code_unit.$to_s(16).$upcase())}),1),$truthy($rb_le(code_point,65535))?u.$call(code_point):(code_point=$rb_minus(code_point,65536),lead_surrogate=$rb_plus(55296,code_point["$>>"](10)),tail_surrogate=$rb_plus(56320,code_point["$&"](1023)),$rb_plus(u.$call(lead_surrogate),u.$call(tail_surrogate)))}),1)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"SymbolNode");self.$handle("sym"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$value().$to_s().$inspect())}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"RegexpNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.sexp=nil,self.$handle("regexp"),self.$attr_accessor("value","flags"),$const_set($nesting[0],"SUPPORTED_FLAGS",/[gimuy]/.$freeze()),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.$extract_flags_and_value()}),-1),$def(self,"$compile",(function(){return $send(this.$flags(),"select!",[],(function $$6(flag){var self=null==$$6.$$s?this:$$6.$$s;return null==flag&&(flag=nil),!!$truthy($$("SUPPORTED_FLAGS")["$=~"](flag))||(self.$compiler().$warning("Skipping the '"+flag+"' Regexp flag as it's not widely supported by JavaScript vendors."),!1)}),{$$arity:1,$$s:this}),$eqeq(this.$value().$type(),"str")?this.$compile_static_regexp():this.$compile_dynamic_regexp()}),0),$def(self,"$compile_dynamic_regexp",(function(){return this.$helper("regexp"),this.$push("$regexp(["),$send(this.$value().$children(),"each_with_index",[],(function $$7(v,index){var self=null==$$7.$$s?this:$$7.$$s;return null==v&&(v=nil),null==index&&(index=nil),$truthy(index["$zero?"]())||self.$push(", "),self.$push(self.$expr(v))}),{$$arity:2,$$s:this}),this.$push("]"),$truthy(this.$flags()["$any?"]())&&this.$push(", '"+this.$flags().$join()+"'"),this.$push(")")}),0),$def(self,"$compile_static_regexp",(function(){var value;return value=this.$value().$children()["$[]"](0),$eqeqeq("",value)?this.$push("/(?:)/"):this.$push(""+$$("Regexp").$new(value).$inspect()+this.$flags().$join())}),0),$def(self,"$extract_flags_and_value",(function(){var $a,$b,values=nil,flags_sexp=nil,$writer=nil,parts=nil;return $b=($b=($a=[].concat($to_a(this.$children()))).length-1)<0?0:$b,values=$slice.call($a,0,$b),flags_sexp=null==$a[$b]?nil:$a[$b],$writer=[$send(flags_sexp.$children(),"map",[],"to_s".$to_proc())],$send(this,"flags=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[$truthy(values["$empty?"]())?this.$s("str",""):$truthy(this["$single_line?"](values))?values["$[]"](0):$send(this,"s",["dstr"].concat($to_a(values)))],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(this.$flags()["$include?"]("x"))&&(parts=$send(this.$value().$children(),"map",[],(function $$8(part){var self=null==$$8.$$s?this:$$8.$$s,trimmed_value=nil;return null==part&&(part=nil),$truthy(part["$is_a?"]($$$($$$($Opal,"AST"),"Node")))&&$eqeq(part.$type(),"str")?(trimmed_value=part.$children()["$[]"](0).$gsub(/^\s*\#.*/,"").$gsub(/\s/,""),self.$s("str",trimmed_value)):part}),{$$arity:1,$$s:this}),$writer=[this.$value().$updated(nil,parts)],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.$flags().$delete("x")),$eqeq(this.$value().$type(),"str")?($writer=[this.$s("str",this.$value().$children()["$[]"](0).$gsub("\\A","^").$gsub("\\z","$"))],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),0),$def(self,"$raw_value",(function(){var $writer;return $writer=[this.sexp.$loc().$expression().$source()],$send(this,"value=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),0),self.$private(),$def(self,"$single_line?",(function(values){var $ret_or_1,value=nil;return!$truthy($rb_gt(values.$length(),1))&&(value=values["$[]"](0),$truthy($ret_or_1=value.$type()["$!="]("str"))?$ret_or_1:value.$children()["$[]"](0)["$include?"]("\n")["$!"]())}),1)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"MatchCurrentLineNode");self.$handle("match_current_line"),self.$children("regexp"),$def(self,"$compile",(function(){var gvar_sexp,send_node;return gvar_sexp=this.$s("gvar","$_"),send_node=this.$s("send",gvar_sexp,"=~",this.$regexp()),this.$push(this.$expr(send_node))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"DynamicStringNode");self.$handle("dstr"),$def(self,"$compile",(function(){var skip_empty=nil;return $truthy($rb_gt(this.$children().$length(),1))&&$eqeq(this.$children().$first().$type(),"str")?skip_empty=!0:this.$push('""'),$send(this.$children(),"each",[],(function $$10(part){var self=null==$$10.$$s?this:$$10.$$s;return null==part&&(part=nil),$truthy(skip_empty)?skip_empty=!1:self.$push(" + "),$eqeq(part.$type(),"str")?self.$push(self.$expr(part)):self.$push("(",self.$expr(part),")"),$truthy(self["$recv?"]())?self.$wrap("(",")"):nil}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("Base")),function($base,$super){$klass($base,$super,"DynamicSymbolNode").$handle("dsym")}($nesting[0],$$("DynamicStringNode")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"RangeNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$children("start","finish"),$const_set($nesting[0],"SIMPLE_CHILDREN_TYPES",["int","float","str","sym"].$freeze()),$def(self,"$compile",(function(){return $truthy(this["$compile_inline?"]())?(this.$helper("range"),this.$compile_inline()):this.$compile_range_initialize()}),0),$def(self,"$compile_inline?",(function(){var $ret_or_1,$ret_or_2=nil,$ret_or_3=nil;return $truthy($ret_or_1=$truthy($ret_or_2=this.$start()["$!"]())?$ret_or_2:$truthy($ret_or_3=this.$start().$type())?$$("SIMPLE_CHILDREN_TYPES")["$include?"](this.$start().$type()):$ret_or_3)?$truthy($ret_or_2=this.$finish()["$!"]())?$ret_or_2:$truthy($ret_or_3=this.$finish().$type())?$$("SIMPLE_CHILDREN_TYPES")["$include?"](this.$finish().$type()):$ret_or_3:$ret_or_1}),0),$def(self,"$compile_inline",(function(){return this.$raise($$("NotImplementedError"))}),0),$def(self,"$compile_range_initialize",(function(){return this.$raise($$("NotImplementedError"))}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"InclusiveRangeNode");self.$handle("irange"),$def(self,"$compile_inline",(function(){return this.$push("$range(",this.$expr_or_nil(this.$start()),", ",this.$expr_or_nil(this.$finish()),", false)")}),0),$def(self,"$compile_range_initialize",(function(){return this.$push("Opal.Range.$new(",this.$expr_or_nil(this.$start()),", ",this.$expr_or_nil(this.$finish()),", false)")}),0)}($nesting[0],$$("RangeNode")),function($base,$super){var self=$klass($base,$super,"ExclusiveRangeNode");self.$handle("erange"),$def(self,"$compile_inline",(function(){return this.$push("$range(",this.$expr_or_nil(this.$start()),", ",this.$expr_or_nil(this.$finish()),", true)")}),0),$def(self,"$compile_range_initialize",(function(){return this.$push("Opal.Range.$new(",this.$expr_or_nil(this.$start()),",",this.$expr_or_nil(this.$finish()),", true)")}),0)}($nesting[0],$$("RangeNode")),function($base,$super){var self=$klass($base,$super,"RationalNode");self.$handle("rational"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("Opal.Rational.$new("+this.$value().$numerator()+", "+this.$value().$denominator()+")")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ComplexNode");return self.$handle("complex"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("Opal.Complex.$new("+this.$value().$real()+", "+this.$value().$imag()+")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/variables"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send,$range=Opal.range,$eqeqeq=Opal.eqeqeq,$send2=Opal.send2,$find_super=Opal.find_super;return Opal.add_stubs("require,handle,children,irb?,compiler,top?,scope,using_irb?,push,to_s,var_name,with_temp,property,wrap,add_local,expr,value,expr?,recv?,[],name,add_ivar,self,helper,add_gvar,===,handle_global_match,handle_post_match,handle_pre_match,raise,index,stmt?,class_variable_owner,inspect"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"LocalVariableNode");self.$handle("lvar"),self.$children("var_name"),$def(self,"$using_irb?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$compiler()["$irb?"]())?this.$scope()["$top?"]():$ret_or_1}),0),$def(self,"$compile",(function(){return $truthy(this["$using_irb?"]())?$send(this,"with_temp",[],(function $$2(tmp){var self=null==$$2.$$s?this:$$2.$$s;return null==tmp&&(tmp=nil),self.$push(self.$property(self.$var_name().$to_s())),self.$wrap("(("+tmp+" = Opal.irb_vars",") == null ? nil : "+tmp+")")}),{$$arity:1,$$s:this}):this.$push(this.$var_name().$to_s())}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"LocalAssignNode");self.$handle("lvasgn"),self.$children("var_name","value"),$def(self,"$using_irb?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$compiler()["$irb?"]())?this.$scope()["$top?"]():$ret_or_1}),0),$def(self,"$compile",(function(){return $truthy(this["$using_irb?"]())?this.$push("Opal.irb_vars"+this.$property(this.$var_name().$to_s())+" = "):(this.$add_local(this.$var_name().$to_s()),this.$push(this.$var_name()+" = ")),this.$push(this.$expr(this.$value())),($truthy(this["$recv?"]())||$truthy(this["$expr?"]()))&&$truthy(this.$value())?this.$wrap("(",")"):nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"LocalDeclareNode");self.$handle("lvdeclare"),self.$children("var_name"),$def(self,"$compile",(function(){return this.$add_local(this.$var_name().$to_s()),nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"InstanceVariableNode");self.$handle("ivar"),self.$children("name"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return name=this.$property(this.$var_name()),this.$add_ivar(name),this.$push(""+this.$scope().$self()+name)}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"InstanceAssignNode");self.$handle("ivasgn"),self.$children("name","value"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return name=this.$property(this.$var_name()),this.$push(""+this.$scope().$self()+name+" = "),this.$push(this.$expr(this.$value())),($truthy(this["$recv?"]())||$truthy(this["$expr?"]()))&&$truthy(this.$value())?this.$wrap("(",")"):nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"GlobalVariableNode");self.$handle("gvar"),self.$children("name"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return this.$helper("gvars"),name=this.$property(this.$var_name()),this.$add_gvar(name),this.$push("$gvars"+name)}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"BackRefNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("back_ref"),$def(self,"$compile",(function $$compile(){var $ret_or_1,$yield=$$compile.$$p||nil;return delete $$compile.$$p,this.$helper("gvars"),$eqeqeq("&",$ret_or_1=this.$var_name())?this.$handle_global_match():$eqeqeq("'",$ret_or_1)?this.$handle_post_match():$eqeqeq("`",$ret_or_1)?this.$handle_pre_match():$eqeqeq("+",$ret_or_1)?$send2(this,$find_super(this,"compile",$$compile,!1,!0),"compile",[],$yield):this.$raise($$("NotImplementedError"))}),0),$def(self,"$handle_global_match",(function(){return $send(this,"with_temp",[],(function $$4(tmp){return null==tmp&&(tmp=nil),(null==$$4.$$s?this:$$4.$$s).$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+"['$[]'](0))")}),{$$arity:1,$$s:this})}),0),$def(self,"$handle_pre_match",(function(){return $send(this,"with_temp",[],(function $$5(tmp){return null==tmp&&(tmp=nil),(null==$$5.$$s?this:$$5.$$s).$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+".$pre_match())")}),{$$arity:1,$$s:this})}),0),$def(self,"$handle_post_match",(function(){return $send(this,"with_temp",[],(function $$6(tmp){return null==tmp&&(tmp=nil),(null==$$6.$$s?this:$$6.$$s).$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+".$post_match())")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("GlobalVariableNode"),$nesting),function($base,$super){var self=$klass($base,$super,"GlobalAssignNode");self.$handle("gvasgn"),self.$children("name","value"),$def(self,"$var_name",(function(){return this.$name().$to_s()["$[]"]($range(1,-1,!1))}),0),$def(self,"$compile",(function(){var name;return this.$helper("gvars"),name=this.$property(this.$var_name()),this.$push("$gvars"+name+" = "),this.$push(this.$expr(this.$value())),($truthy(this["$recv?"]())||$truthy(this["$expr?"]()))&&$truthy(this.$value())?this.$wrap("(",")"):nil}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"NthrefNode");self.$handle("nth_ref"),self.$children("index"),$def(self,"$compile",(function(){return this.$helper("gvars"),$send(this,"with_temp",[],(function $$7(tmp){var self=null==$$7.$$s?this:$$7.$$s;return null==tmp&&(tmp=nil),self.$push("(("+tmp+" = $gvars['~']) === nil ? nil : "+tmp+"['$[]']("+self.$index()+"))")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ClassVariableNode");self.$handle("cvar"),self.$children("name"),$def(self,"$compile",(function(){var tolerant=nil;return this.$helper("class_variable_get"),tolerant=!1,$truthy(this["$stmt?"]())&&(tolerant=!0),this.$push("$class_variable_get("+this.$class_variable_owner()+", '"+this.$name()+"', "+tolerant.$inspect()+")")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ClassVarAssignNode");return self.$handle("cvasgn"),self.$children("name","value"),$def(self,"$compile",(function(){return this.$helper("class_variable_set"),this.$push("$class_variable_set("+this.$class_variable_owner()+", '"+this.$name()+"', ",this.$expr(this.$value()),")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/constants"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def,$const_set=Opal.const_set;return Opal.add_stubs("require,handle,children,magical_data_const?,push,optimized_access?,helper,name,==,const_scope,s,absolute_const,top_scope,recv,eval?,compiler,relative_access,scope,nil?,eof_content,freeze,include?,base,expr,value,nesting"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ConstNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("const"),self.$children("const_scope","name"),$def(self,"$compile",(function(){return $truthy(this["$magical_data_const?"]())?this.$push("$__END__"):$truthy(this["$optimized_access?"]())?(this.$helper(""+this.$name()),this.$push("$"+this.$name())):$eqeq(this.$const_scope(),this.$s("cbase"))?this.$push(this.$top_scope().$absolute_const()+"('"+this.$name()+"')"):$truthy(this.$const_scope())?this.$push(this.$top_scope().$absolute_const()+"(",this.$recv(this.$const_scope()),", '"+this.$name()+"')"):($truthy(this.$compiler()["$eval?"]()),this.$push(this.$scope().$relative_access()+"('"+this.$name()+"')"))}),0),$def(self,"$magical_data_const?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.$const_scope()["$nil?"]())?this.$name()["$=="]("DATA"):$ret_or_2)?this.$compiler().$eof_content():$ret_or_1}),0),$const_set($nesting[0],"OPTIMIZED_ACCESS_CONSTS",["BasicObject","Object","Module","Class","Opal","Kernel","NilClass"].$freeze()),$def(self,"$optimized_access?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$const_scope()["$=="](this.$s("cbase")))?$$("OPTIMIZED_ACCESS_CONSTS")["$include?"](this.$name()):$ret_or_1}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"CbaseNode");self.$handle("cbase"),$def(self,"$compile",(function(){return this.$push("'::'")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ConstAssignNode");return self.$handle("casgn"),self.$children("base","name","value"),$def(self,"$compile",(function(){return this.$helper("const_set"),$truthy(this.$base())?this.$push("$const_set(",this.$expr(this.$base()),", '"+this.$name()+"', ",this.$expr(this.$value()),")"):this.$push("$const_set("+this.$scope().$nesting()+"[0], '"+this.$name()+"', ",this.$expr(this.$value()),")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["corelib/comparable"]=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$truthy=Opal.truthy,$module=Opal.module,$rb_gt=Opal.rb_gt,$rb_lt=Opal.rb_lt,$eqeqeq=Opal.eqeqeq,$Kernel=Opal.Kernel,$def=Opal.def;return Opal.add_stubs(">,<,===,raise,class,<=>,equal?"),function($base){var self=$module("::","Comparable"),$ret_or_1=nil;function normalize(what){return Opal.is_a(what,Opal.Integer)?what:$rb_gt(what,0)?1:$rb_lt(what,0)?-1:0}function cmp_or_fail(lhs,rhs){var cmp=lhs["$<=>"](rhs);return $truthy(cmp)||function(lhs,rhs){var class_name;class_name=$eqeqeq(nil,$ret_or_1=rhs)||$eqeqeq(!0,$ret_or_1)||$eqeqeq(!1,$ret_or_1)||$eqeqeq($$$("Integer"),$ret_or_1)||$eqeqeq($$$("Float"),$ret_or_1)?rhs.$inspect():rhs.$$class,$Kernel.$raise($$$("ArgumentError"),"comparison of "+lhs.$class()+" with "+class_name+" failed")}(lhs,rhs),normalize(cmp)}return $def(self,"$==",(function(other){var cmp;return!!$truthy(this["$equal?"](other))||this["$<=>"]!=Opal.Kernel["$<=>"]&&(this.$$comparable?(delete this.$$comparable,!1):!!$truthy(cmp=this["$<=>"](other))&&0==normalize(cmp))}),1),$def(self,"$>",(function(other){return cmp_or_fail(this,other)>0}),1),$def(self,"$>=",(function(other){return cmp_or_fail(this,other)>=0}),1),$def(self,"$<",(function(other){return cmp_or_fail(this,other)<0}),1),$def(self,"$<=",(function(other){return cmp_or_fail(this,other)<=0}),1),$def(self,"$between?",(function(min,max){return!$rb_lt(this,min)&&!$rb_gt(this,max)}),2),$def(self,"$clamp",(function(min,max){var c,excl;if(null==max&&(max=nil),max===nil&&(Opal.is_a(min,Opal.Range)||$Kernel.$raise($$$("TypeError"),"wrong argument type "+min.$class()+" (expected Range)"),excl=min.excl,max=min.end,min=min.begin,max!==nil&&excl&&$Kernel.$raise($$$("ArgumentError"),"cannot clamp with an exclusive range")),min!==nil&&max!==nil&&cmp_or_fail(min,max)>0&&$Kernel.$raise($$$("ArgumentError"),"min argument must be smaller than max argument"),min!==nil){if(0==(c=cmp_or_fail(this,min)))return this;if(c<0)return min}return max!==nil&&(c=cmp_or_fail(this,max))>0?max:this}),-2)}()},Opal.modules.pathname=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$const_set=Opal.const_set,$regexp=Opal.regexp,$eqeqeq=Opal.eqeqeq,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def,$defs=Opal.defs,$to_ary=Opal.to_ary,$send=Opal.send,$to_a=Opal.to_a,$neqeq=Opal.neqeq,$rb_plus=Opal.rb_plus,$not=Opal.not,$alias=Opal.alias,$module=Opal.module;return Opal.add_stubs("require,include,quote,===,to_s,path,respond_to?,to_path,is_a?,nil?,raise,class,==,new,pwd,attr_reader,!,relative?,chop_basename,basename,=~,source,[],rindex,sub,absolute?,expand_path,plus,unshift,length,!=,empty?,first,shift,+,join,dirname,pop,reverse_each,directory?,extname,<=>,nonzero?,proc,casecmp,cleanpath,inspect,include?,fill,map,entries"),self.$require("corelib/comparable"),function($base,$super,$parent_nesting){var self=$klass($base,null,"Pathname"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$$prototype.path=nil,self.$include($$("Comparable")),$const_set($nesting[0],"SEPARATOR_PAT",$regexp([$$("Regexp").$quote($$$($$("File"),"SEPARATOR"))])),$def(self,"$initialize",(function(path){return $eqeqeq($$("Pathname"),path)?this.path=path.$path().$to_s():$truthy(path["$respond_to?"]("to_path"))?this.path=path.$to_path():$truthy(path["$is_a?"]($$("String")))?this.path=path:$truthy(path["$nil?"]())?this.$raise($$("TypeError"),"no implicit conversion of nil into String"):this.$raise($$("TypeError"),"no implicit conversion of "+path.$class()+" into String"),$eqeq(this.path,"\0")?this.$raise($$("ArgumentError")):nil}),1),$defs(self,"$pwd",(function(){return this.$new($$("Dir").$pwd())}),0),self.$attr_reader("path"),$def(self,"$==",(function(other){return other.$path()["$=="](this.path)}),1),$def(self,"$absolute?",(function(){return this["$relative?"]()["$!"]()}),0),$def(self,"$relative?",(function(){var $b,path=nil,r=nil;for(path=this.path;$truthy(r=this.$chop_basename(path));)path=null==($b=$to_ary(r))[0]?nil:$b[0];return path["$=="]("")}),0),$def(self,"$chop_basename",(function(path){var base;return base=$$("File").$basename(path),$truthy($$("Regexp").$new("^"+$$$($$("Pathname"),"SEPARATOR_PAT").$source()+"?$")["$=~"](base))?nil:[path["$[]"](0,path.$rindex(base)),base]}),1),$def(self,"$root?",(function(){return this.path["$=="]("/")}),0),$def(self,"$parent",(function(){var new_path=nil;return new_path=this.path.$sub(/\/([^\/]+\/?$)/,""),$eqeq(new_path,"")&&(new_path=$truthy(this["$absolute?"]())?"/":"."),$$("Pathname").$new(new_path)}),0),$def(self,"$sub",(function($a){var args,self=this;return args=Opal.slice.call(arguments),$$("Pathname").$new($send(self.path,"sub",$to_a(args)))}),-1),$def(self,"$cleanpath",(function(){return Opal.normalize(this.path)}),0),$def(self,"$to_path",(function(){return this.path}),0),$def(self,"$hash",(function(){return this.path}),0),$def(self,"$expand_path",(function(){return $$("Pathname").$new($$("File").$expand_path(this.path))}),0),$def(self,"$+",(function(other){return $eqeqeq($$("Pathname"),other)||(other=$$("Pathname").$new(other)),$$("Pathname").$new(this.$plus(this.path,other.$to_s()))}),1),$def(self,"$plus",(function(path1,path2){var $b,prefix2=nil,index_list2=nil,basename_list2=nil,r2=nil,basename2=nil,prefix1=nil,$ret_or_1=nil,r1=nil,basename1=nil,suffix2=nil;for(prefix2=path2,index_list2=[],basename_list2=[];$truthy(r2=this.$chop_basename(prefix2));)prefix2=null==($b=$to_ary(r2))[0]?nil:$b[0],basename2=null==$b[1]?nil:$b[1],index_list2.$unshift(prefix2.$length()),basename_list2.$unshift(basename2);if($neqeq(prefix2,""))return path2;for(prefix1=path1;$truthy(!0);){for(;$truthy($truthy($ret_or_1=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="]("."):$ret_or_1);)index_list2.$shift(),basename_list2.$shift();if(!$truthy(r1=this.$chop_basename(prefix1)))break;if(prefix1=null==($b=$to_ary(r1))[0]?nil:$b[0],basename1=null==$b[1]?nil:$b[1],!$eqeq(basename1,".")){if($eqeq(basename1,"..")||$truthy(basename_list2["$empty?"]())||$neqeq(basename_list2.$first(),"..")){prefix1=$rb_plus(prefix1,basename1);break}index_list2.$shift(),basename_list2.$shift()}}if(r1=this.$chop_basename(prefix1),$not(r1)&&$truthy($regexp([$$("SEPARATOR_PAT")])["$=~"]($$("File").$basename(prefix1))))for(;$truthy($truthy($ret_or_1=basename_list2["$empty?"]()["$!"]())?basename_list2.$first()["$=="](".."):$ret_or_1);)index_list2.$shift(),basename_list2.$shift();return $not(basename_list2["$empty?"]())?(suffix2=path2["$[]"](Opal.Range.$new(index_list2.$first(),-1,!1)),$truthy(r1)?$$("File").$join(prefix1,suffix2):$rb_plus(prefix1,suffix2)):$truthy(r1)?prefix1:$$("File").$dirname(prefix1)}),2),$def(self,"$join",(function($a){try{var $post_args,args,self=this,result=nil;return $post_args=Opal.slice.call(arguments),$truthy((args=$post_args)["$empty?"]())?self:(result=args.$pop(),$eqeqeq($$("Pathname"),result)||(result=$$("Pathname").$new(result)),$truthy(result["$absolute?"]())?result:($send(args,"reverse_each",[],(function(arg){if(null==arg&&(arg=nil),$eqeqeq($$("Pathname"),arg)||(arg=$$("Pathname").$new(arg)),result=$rb_plus(arg,result),!$truthy(result["$absolute?"]()))return nil;Opal.ret(result)}),1),$rb_plus(self,result)))}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$split",(function(){return[this.$dirname(),this.$basename()]}),0),$def(self,"$dirname",(function(){return $$("Pathname").$new($$("File").$dirname(this.path))}),0),$def(self,"$basename",(function(){return $$("Pathname").$new($$("File").$basename(this.path))}),0),$def(self,"$directory?",(function(){return $$("File")["$directory?"](this.path)}),0),$def(self,"$extname",(function(){return $$("File").$extname(this.path)}),0),$def(self,"$<=>",(function(other){return this.$path()["$<=>"](other.$path())}),1),$const_set($nesting[0],"SAME_PATHS",$truthy($$$($$("File"),"FNM_SYSCASE")["$nonzero?"]())?$send(self,"proc",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a.$casecmp(b)["$=="](0)}),2):$send(self,"proc",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a["$=="](b)}),2)),$def(self,"$relative_path_from",(function(base_directory){var $b,dest_directory,dest_prefix=nil,dest_names=nil,r=nil,basename=nil,base_prefix=nil,base_names=nil,$ret_or_1=nil,$ret_or_2=nil,relpath_names=nil;for(dest_directory=this.$cleanpath().$to_s(),base_directory=base_directory.$cleanpath().$to_s(),dest_prefix=dest_directory,dest_names=[];$truthy(r=this.$chop_basename(dest_prefix));)dest_prefix=null==($b=$to_ary(r))[0]?nil:$b[0],basename=null==$b[1]?nil:$b[1],$neqeq(basename,".")&&dest_names.$unshift(basename);for(base_prefix=base_directory,base_names=[];$truthy(r=this.$chop_basename(base_prefix));)base_prefix=null==($b=$to_ary(r))[0]?nil:$b[0],basename=null==$b[1]?nil:$b[1],$neqeq(basename,".")&&base_names.$unshift(basename);for($truthy($$("SAME_PATHS")["$[]"](dest_prefix,base_prefix))||this.$raise($$("ArgumentError"),"different prefix: "+dest_prefix.$inspect()+" and "+base_directory.$inspect());$truthy($truthy($ret_or_1=$truthy($ret_or_2=dest_names["$empty?"]()["$!"]())?base_names["$empty?"]()["$!"]():$ret_or_2)?$$("SAME_PATHS")["$[]"](dest_names.$first(),base_names.$first()):$ret_or_1);)dest_names.$shift(),base_names.$shift();return $truthy(base_names["$include?"](".."))&&this.$raise($$("ArgumentError"),"base_directory has ..: "+base_directory.$inspect()),base_names.$fill(".."),relpath_names=$rb_plus(base_names,dest_names),$truthy(relpath_names["$empty?"]())?$$("Pathname").$new("."):$$("Pathname").$new($send($$("File"),"join",$to_a(relpath_names)))}),1),$def(self,"$entries",(function(){return $send($$("Dir").$entries(this.path),"map",[],(function $$11(f){return null==f&&(f=nil),(null==$$11.$$s?this:$$11.$$s).$class().$new(f)}),{$$arity:1,$$s:this})}),0),$alias(self,"===","=="),$alias(self,"eql?","=="),$alias(self,"to_s","to_path"),$alias(self,"to_str","to_path")}($nesting[0],0,$nesting),function($base,$parent_nesting){var self=$module($base,"Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $def(self,"$Pathname",(function(path){return $$("Pathname").$new(path)}),1)}($nesting[0],$nesting)},Opal.modules["opal/rewriters/break_finder"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$alias=Opal.alias;return Opal.add_stubs("require"),self.$require("opal/rewriter"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Rewriters")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BreakFinder");return self.$$prototype.found_break=nil,$def(self,"$initialize",(function(){return this.found_break=!1}),0),$def(self,"$found_break?",(function(){return this.found_break}),0),$def(self,"$on_break",(function(node){return this.found_break=!0,node}),1),$def(self,"$stop_lookup",(function(node){return nil}),1),$alias(self,"on_for","stop_lookup"),$alias(self,"on_while","stop_lookup"),$alias(self,"on_while_post","stop_lookup"),$alias(self,"on_until","stop_lookup"),$alias(self,"on_until_post","stop_lookup"),$alias(self,"on_block","stop_lookup")}($nesting[0],$$$($$$($$("Opal"),"Rewriters"),"Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/call"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$defs=Opal.defs,$send2=Opal.send2,$find_super=Opal.find_super,$slice=Opal.slice,$truthy=Opal.truthy,$def=Opal.def,$eqeq=Opal.eqeq,$rb_plus=Opal.rb_plus,$not=Opal.not,$neqeq=Opal.neqeq,$eqeqeq=Opal.eqeqeq,$to_ary=Opal.to_ary,$Opal=Opal.Opal,$range=Opal.range;return Opal.add_stubs("require,handle,attr_reader,freeze,[]=,-,define_method,to_proc,include?,type,s,handle_special,record_method?,<<,method_calls,compiler,to_sym,meth,using_eval?,compile_eval_var,using_irb?,compile_irb_var,default_compile,private,iter,new,process,found_break?,splat?,!,empty?,collect_refinements_temps,scope,auto_await?,push,await_encountered=,invoke_using_refinement?,compile_using_refined_send,invoke_using_send?,compile_using_send,compile_simple_call_chain,compile_break_catcher,helper,compile_receiver,compile_method_name,compile_arguments,compile_block_pass,compile_refinements,recv,receiver_sexp,expr,arglist,children,map,iter_has_break?,unshift,line,method_jsid,any?,==,recvr,mid_to_jsid,to_s,with_temp,intern,irb?,top?,variable_like?,eval?,scope_variables,nil?,updated,async_await,!=,match?,method,arity,[],each,add_special,call,inline_operators?,fragment,resolve,requires,file,dirname,cleanpath,join,Pathname,self,inspect,length,warning,autoloads,required_trees,force_encoding,encoding,+,handle_block_given_call,def?,mid,module_name,count,accepts_using?,using_refinement,first,refinements_temp,arity_check?,defines_lambda,push_nesting?,nesting,new_temp,scope_locals,source_location,size,last,dynamic_require_severity,handle_part,===,is_a?,expand_path,split,error,each_with_object,pop"),self.$require("set"),self.$require("pathname"),self.$require("opal/nodes/base"),self.$require("opal/rewriters/break_finder"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"CallNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.sexp=$proto.compiler=nil,self.$handle("send"),self.$attr_reader("recvr","meth","arglist","iter"),$const_set($nesting[0],"SPECIALS",$hash2([],{})),$const_set($nesting[0],"OPERATORS",$hash2(["+","-","*","/","<","<=",">",">="],{"+":"plus","-":"minus","*":"times","/":"divide","<":"lt","<=":"le",">":"gt",">=":"ge"}).$freeze()),$defs(self,"$add_special",(function $$add_special(name,options){var $writer,handler=$$add_special.$$p||nil;return delete $$add_special.$$p,null==options&&(options=$hash2([],{})),$writer=[name,options],$send($$("SPECIALS"),"[]=",$to_a($writer)),$rb_minus($writer.length,1),$send(this,"define_method",["handle_"+name],handler.$to_proc())}),-2),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$b,$c,$yield=$$initialize.$$p||nil,self=this,args=nil,rest=nil,last_arg=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$b=[].concat($to_a(self.sexp)),self.recvr=null==$b[0]?nil:$b[0],self.meth=null==$b[1]?nil:$b[1],args=$slice.call($b,2),$c=($c=($b=[].concat($to_a(args))).length-1)<0?0:$c,rest=$slice.call($b,0,$c),last_arg=null==$b[$c]?nil:$b[$c],$truthy(last_arg)&&$truthy(["iter","block_pass"]["$include?"](last_arg.$type()))?(self.iter=last_arg,args=rest):self.iter=nil,self.arglist=$send(self,"s",["arglist"].concat($to_a(args)))}),-1),$def(self,"$compile",(function(){try{return $send(this,"handle_special",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return $truthy(self["$record_method?"]())&&self.$compiler().$method_calls()["$<<"](self.$meth().$to_sym()),$truthy(self["$using_eval?"]())&&Opal.ret(self.$compile_eval_var()),$truthy(self["$using_irb?"]())&&Opal.ret(self.$compile_irb_var()),self.$default_compile()}),{$$arity:0,$$s:this})}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),0),self.$private(),$def(self,"$iter_has_break?",(function(){var finder=nil;return!!$truthy(this.$iter())&&((finder=$$$($$$($$("Opal"),"Rewriters"),"BreakFinder").$new()).$process(this.$iter()),finder["$found_break?"]())}),0),$def(self,"$invoke_using_send?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$iter())?$ret_or_1:this["$splat?"]()}),0),$def(self,"$invoke_using_refinement?",(function(){return this.$scope().$scope().$collect_refinements_temps()["$empty?"]()["$!"]()}),0),$def(self,"$default_compile",(function(){var $writer=nil;return $truthy(this["$auto_await?"]())&&(this.$push("await "),$writer=[!0],$send(this.$scope(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy(this["$invoke_using_refinement?"]())?this.$compile_using_refined_send():$truthy(this["$invoke_using_send?"]())?this.$compile_using_send():this.$compile_simple_call_chain(),this.$compile_break_catcher()}),0),$def(self,"$compile_using_send",(function(){return this.$helper("send"),this.$push("$send("),this.$compile_receiver(),this.$compile_method_name(),this.$compile_arguments(),this.$compile_block_pass(),this.$push(")")}),0),$def(self,"$compile_using_refined_send",(function(){return this.$helper("refined_send"),this.$push("$refined_send("),this.$compile_refinements(),this.$compile_receiver(),this.$compile_method_name(),this.$compile_arguments(),this.$compile_block_pass(),this.$push(")")}),0),$def(self,"$compile_receiver",(function(){return this.$push(this.$recv(this.$receiver_sexp()))}),0),$def(self,"$compile_method_name",(function(){return this.$push(", '"+this.$meth()+"'")}),0),$def(self,"$compile_arguments",(function(){return this.$push(", "),$truthy(this["$splat?"]())?this.$push(this.$expr(this.$arglist())):$truthy(this.$arglist().$children()["$empty?"]())?this.$push("[]"):this.$push("[",this.$expr(this.$arglist()),"]")}),0),$def(self,"$compile_block_pass",(function(){return $truthy(this.$iter())?this.$push(", ",this.$expr(this.$iter())):nil}),0),$def(self,"$compile_refinements",(function(){var refinements;return refinements=$send(this.$scope().$collect_refinements_temps(),"map",[],(function $$5(i){return null==i&&(i=nil),(null==$$5.$$s?this:$$5.$$s).$s("js_tmp",i)}),{$$arity:1,$$s:this}),this.$push(this.$expr($send(this,"s",["array"].concat($to_a(refinements)))),", ")}),0),$def(self,"$compile_break_catcher",(function(){return $truthy(this["$iter_has_break?"]())?(this.$unshift("return "),this.$unshift("(function(){var $brk = Opal.new_brk(); try {"),this.$line("} catch (err) { if (err === $brk) { return err.$v } else { throw err } }})()")):nil}),0),$def(self,"$compile_simple_call_chain",(function(){return this.$push(this.$recv(this.$receiver_sexp()),this.$method_jsid(),"(",this.$expr(this.$arglist()),")")}),0),$def(self,"$splat?",(function(){return $send(this.$arglist().$children(),"any?",[],(function(a){return null==a&&(a=nil),a.$type()["$=="]("splat")}),1)}),0),$def(self,"$receiver_sexp",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$recvr())?$ret_or_1:this.$s("self")}),0),$def(self,"$method_jsid",(function(){return this.$mid_to_jsid(this.$meth().$to_s())}),0),$def(self,"$record_method?",(function(){return!0}),0),$def(self,"$compile_irb_var",(function(){return $send(this,"with_temp",[],(function $$9(tmp){var lvar,call,self=null==$$9.$$s?this:$$9.$$s;return null==tmp&&(tmp=nil),lvar=self.$meth(),call=self.$s("send",self.$s("self"),self.$meth().$intern(),self.$s("arglist")),self.$push("(("+tmp+" = Opal.irb_vars."+lvar+") == null ? ",self.$expr(call)," : "+tmp+")")}),{$$arity:1,$$s:this})}),0),$def(self,"$compile_eval_var",(function(){return this.$push(this.$meth().$to_s())}),0),$def(self,"$using_irb?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.compiler["$irb?"]())?this.$scope()["$top?"]():$ret_or_2)?this["$variable_like?"]():$ret_or_1}),0),$def(self,"$using_eval?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.compiler["$eval?"]())?this.$scope()["$top?"]():$ret_or_2)?this.compiler.$scope_variables()["$include?"](this.$meth()):$ret_or_1}),0),$def(self,"$variable_like?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this.$arglist()["$=="](this.$s("arglist")))?this.$recvr()["$nil?"]():$ret_or_2)?this.$iter()["$nil?"]():$ret_or_1}),0),$def(self,"$sexp_with_arglist",(function(){return this.sexp.$updated(nil,[this.$recvr(),this.$meth(),this.$arglist()])}),0),$def(self,"$auto_await?",(function(){var $ret_or_1,$ret_or_2,awaited_set=nil;return awaited_set=this.$compiler().$async_await(),$truthy($ret_or_1=$truthy($ret_or_2=awaited_set)?awaited_set["$!="](!0):$ret_or_2)?awaited_set["$match?"](this.$meth().$to_s()):$ret_or_1}),0),$def(self,"$handle_special",(function $$handle_special(){var compile_default=$$handle_special.$$p||nil,method=nil;return delete $$handle_special.$$p,$truthy($$("SPECIALS")["$include?"](this.$meth()))?(method=this.$method("handle_"+this.$meth()),$eqeq(method.$arity(),1)?method["$[]"](compile_default):method["$[]"]()):Opal.yieldX(compile_default,[])}),0),$send($$("OPERATORS"),"each",[],(function $CallNode$14(operator,name){var self=null==$CallNode$14.$$s?this:$CallNode$14.$$s;return null==operator&&(operator=nil),null==name&&(name=nil),$send(self,"add_special",[operator.$to_sym()],(function $$15(compile_default){var $a,self=null==$$15.$$s?this:$$15.$$s,lhs=nil,rhs=nil;return null==compile_default&&(compile_default=nil),$truthy(self["$invoke_using_refinement?"]())?compile_default.$call():$truthy(self.$compiler()["$inline_operators?"]())?($truthy(self["$record_method?"]())&&self.$compiler().$method_calls()["$<<"](operator.$to_sym()),self.$helper("rb_"+name),lhs=($a=[self.$expr(self.$recvr()),self.$expr(self.$arglist())])[0],rhs=$a[1],self.$push(self.$fragment("$rb_"+name+"(")),self.$push(lhs),self.$push(self.$fragment(", ")),self.$push(rhs),self.$push(self.$fragment(")"))):compile_default.$call()}),{$$arity:1,$$s:self})}),{$$arity:2,$$s:self}),$send(self,"add_special",["require"],(function $CallNode$16(compile_default){var self=null==$CallNode$16.$$s?this:$CallNode$16.$$s,str=nil;return null==compile_default&&(compile_default=nil),str=$$("DependencyResolver").$new(self.$compiler(),self.$arglist().$children()["$[]"](0)).$resolve(),$truthy(str["$nil?"]())||self.$compiler().$requires()["$<<"](str),compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["require_relative"],(function $CallNode$17(){var self=null==$CallNode$17.$$s?this:$CallNode$17.$$s,arg=nil,file=nil,dir=nil;return arg=self.$arglist().$children()["$[]"](0),file=self.$compiler().$file(),$eqeq(arg.$type(),"str")&&(dir=$$("File").$dirname(file),self.$compiler().$requires()["$<<"](self.$Pathname(dir).$join(arg.$children()["$[]"](0)).$cleanpath().$to_s())),self.$push(self.$fragment(self.$scope().$self()+".$require("+file.$inspect()+"+ '/../' + ")),self.$push(self.$process(self.$arglist())),self.$push(self.$fragment(")"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["autoload"],(function $CallNode$18(compile_default){var self=null==$CallNode$18.$$s?this:$CallNode$18.$$s,args=nil,str=nil;return null==compile_default&&(compile_default=nil),args=self.$arglist().$children(),$eqeq(args.$length(),2)&&$eqeq(args["$[]"](0).$type(),"sym")&&(str=$$("DependencyResolver").$new(self.$compiler(),args["$[]"](1),"ignore").$resolve(),$truthy(str["$nil?"]())?self.$compiler().$warning("File for autoload of constant '"+args["$[]"](0).$children()["$[]"](0)+"' could not be bundled!"):(self.$compiler().$requires()["$<<"](str),self.$compiler().$autoloads()["$<<"](str))),compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["require_tree"],(function $CallNode$19(compile_default){var $a,rest,self=null==$CallNode$19.$$s?this:$CallNode$19.$$s,first_arg=nil,relative_path=nil,dir=nil,full_path=nil;return null==compile_default&&(compile_default=nil),first_arg=null==($a=[].concat($to_a(self.$arglist().$children())))[0]?nil:$a[0],rest=$slice.call($a,1),$eqeq(first_arg.$type(),"str")&&(relative_path=first_arg.$children()["$[]"](0),self.$compiler().$required_trees()["$<<"](relative_path),dir=$$("File").$dirname(self.$compiler().$file()),(full_path=self.$Pathname(dir).$join(relative_path).$cleanpath().$to_s()).$force_encoding(relative_path.$encoding()),first_arg=first_arg.$updated(nil,[full_path])),self.arglist=self.$arglist().$updated(nil,$rb_plus([first_arg],rest)),compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["block_given?"],(function $CallNode$20(){var self=null==$CallNode$20.$$s?this:$CallNode$20.$$s;return null==self.sexp&&(self.sexp=nil),self.$push(self.$compiler().$handle_block_given_call(self.sexp))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__callee__"],(function $CallNode$21(){var self=null==$CallNode$21.$$s?this:$CallNode$21.$$s;return $truthy(self.$scope()["$def?"]())?self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect())):self.$push(self.$fragment("nil"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__method__"],(function $CallNode$22(){var self=null==$CallNode$22.$$s?this:$CallNode$22.$$s;return $truthy(self.$scope()["$def?"]())?self.$push(self.$fragment(self.$scope().$mid().$to_s().$inspect())):self.$push(self.$fragment("nil"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__dir__"],(function $CallNode$23(){var self=null==$CallNode$23.$$s?this:$CallNode$23.$$s;return self.$push($$("File").$dirname($$$($$("Opal"),"Compiler").$module_name(self.$compiler().$file())).$inspect())}),{$$arity:0,$$s:self}),$send(self,"add_special",["using"],(function $CallNode$24(compile_default){var self=null==$CallNode$24.$$s?this:$CallNode$24.$$s;return null==compile_default&&(compile_default=nil),$truthy(self.$scope()["$accepts_using?"]())&&$eqeq(self.$arglist().$children().$count(),1)?self.$using_refinement(self.$arglist().$children().$first()):compile_default.$call()}),{$$arity:1,$$s:self}),$def(self,"$using_refinement",(function(arg){var $a,prev,curr;return prev=null==($a=[].concat($to_a(this.$scope().$refinements_temp())))[0]?nil:$a[0],curr=null==$a[1]?nil:$a[1],$truthy(prev)?this.$push("("+curr+" = "+prev+".slice(), "+curr+".push(",this.$expr(arg),"), "+this.$scope().$self()+")"):this.$push("("+curr+" = [",this.$expr(arg),"], "+this.$scope().$self()+")")}),1),$send(self,"add_special",["debugger"],(function $CallNode$25(){var self=null==$CallNode$25.$$s?this:$CallNode$25.$$s;return self.$push(self.$fragment("debugger"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["__OPAL_COMPILER_CONFIG__"],(function $CallNode$26(){var self=null==$CallNode$26.$$s?this:$CallNode$26.$$s;return self.$push(self.$fragment("Opal.hash({ arity_check: "+self.$compiler()["$arity_check?"]()+" })"))}),{$$arity:0,$$s:self}),$send(self,"add_special",["lambda"],(function $CallNode$27(compile_default){return null==compile_default&&(compile_default=nil),$send((null==$CallNode$27.$$s?this:$CallNode$27.$$s).$scope(),"defines_lambda",[],(function(){return compile_default.$call()}),0)}),{$$arity:1,$$s:self}),$send(self,"add_special",["nesting"],(function $CallNode$29(compile_default){var push_nesting,self=null==$CallNode$29.$$s?this:$CallNode$29.$$s;return null==compile_default&&(compile_default=nil),push_nesting=self["$push_nesting?"](),$truthy(push_nesting)&&self.$push("(Opal.Module.$$nesting = "+self.$scope().$nesting()+", "),compile_default.$call(),$truthy(push_nesting)?self.$push(")"):nil}),{$$arity:1,$$s:self}),$send(self,"add_special",["constants"],(function $CallNode$30(compile_default){var push_nesting,self=null==$CallNode$30.$$s?this:$CallNode$30.$$s;return null==compile_default&&(compile_default=nil),push_nesting=self["$push_nesting?"](),$truthy(push_nesting)&&self.$push("(Opal.Module.$$nesting = "+self.$scope().$nesting()+", "),compile_default.$call(),$truthy(push_nesting)?self.$push(")"):nil}),{$$arity:1,$$s:self}),$send(self,"add_special",["eval"],(function $CallNode$31(compile_default){var temp,scope_variables,self=null==$CallNode$31.$$s?this:$CallNode$31.$$s;return null==compile_default&&(compile_default=nil),$neqeq(self.$arglist().$children().$length(),1)||$not([self.$s("self"),nil]["$include?"](self.$recvr()))?compile_default.$call():(self.$scope().$nesting(),temp=self.$scope().$new_temp(),scope_variables=$send(self.$scope().$scope_locals(),"map",[],"to_s".$to_proc()).$inspect(),self.$push("("+temp+" = ",self.$expr(self.$arglist())),self.$push(", typeof Opal.compile === 'function' ? eval(Opal.compile("+temp),self.$push(", {scope_variables: ",scope_variables),self.$push(", arity_check: "+self.$compiler()["$arity_check?"]()+", file: '(eval)', eval: true})) : "),self.$push(self.$scope().$self()+".$eval("+temp+"))"))}),{$$arity:1,$$s:self}),$send(self,"add_special",["local_variables"],(function $CallNode$32(compile_default){var scope_variables,self=null==$CallNode$32.$$s?this:$CallNode$32.$$s;return null==compile_default&&(compile_default=nil),$truthy([self.$s("self"),nil]["$include?"](self.$recvr()))?(scope_variables=$send(self.$scope().$scope_locals(),"map",[],"to_s".$to_proc()).$inspect(),self.$push(scope_variables)):compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["binding"],(function $CallNode$33(compile_default){var self=null==$CallNode$33.$$s?this:$CallNode$33.$$s;return null==compile_default&&(compile_default=nil),$truthy(self.$recvr()["$nil?"]())?(self.$scope().$nesting(),self.$push("Opal.Binding.$new("),self.$push(" function($code, $value) {"),self.$push(" if (typeof $value === 'undefined') {"),self.$push(" return eval($code);"),self.$push(" }"),self.$push(" else {"),self.$push(" return eval($code + ' = $value');"),self.$push(" }"),self.$push(" },"),self.$push(" ",$send(self.$scope().$scope_locals(),"map",[],"to_s".$to_proc()).$inspect(),","),self.$push(" ",self.$scope().$self(),","),self.$push(" ",self.$source_location()),self.$push(")")):compile_default.$call()}),{$$arity:1,$$s:self}),$send(self,"add_special",["__await__"],(function $CallNode$34(compile_default){var self=null==$CallNode$34.$$s?this:$CallNode$34.$$s,$writer=nil;return null==compile_default&&(compile_default=nil),$truthy(self.$compiler().$async_await())?(self.$push(self.$fragment("(await (")),self.$push(self.$process(self.$recvr())),self.$push(self.$fragment("))")),$writer=[!0],$send(self.$scope(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):compile_default.$call()}),{$$arity:1,$$s:self}),$def(self,"$push_nesting?",(function(){var $ret_or_1,recv=nil,$ret_or_2=nil,$ret_or_3=nil;return recv=this.$children().$first(),$truthy($ret_or_1=this.$children().$size()["$=="](2))?$truthy($ret_or_2=recv["$nil?"]())?$ret_or_2:$truthy($ret_or_3=recv.$type()["$=="]("const"))?recv.$children().$last()["$=="]("Module"):$ret_or_3:$ret_or_1}),0),function($base,$super,$parent_nesting){var self=$klass($base,null,"DependencyResolver"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.compiler=$proto.sexp=$proto.missing_dynamic_require=nil,$def(self,"$initialize",(function(compiler,sexp,missing_dynamic_require){var $ret_or_1;return null==missing_dynamic_require&&(missing_dynamic_require=nil),this.compiler=compiler,this.sexp=sexp,this.missing_dynamic_require=$truthy($ret_or_1=missing_dynamic_require)?$ret_or_1:this.compiler.$dynamic_require_severity()}),-3),$def(self,"$resolve",(function(){return this.$handle_part(this.sexp)}),0),$def(self,"$handle_part",(function(sexp,missing_dynamic_require){var $a,$b,$ret_or_1=nil,recv=nil,meth=nil,args=nil,parts=nil;if(null==missing_dynamic_require&&(missing_dynamic_require=this.missing_dynamic_require),$truthy(sexp)){if($eqeqeq("str",$ret_or_1=sexp.$type()))return sexp.$children()["$[]"](0);if($eqeqeq("dstr",$ret_or_1))return $send(sexp.$children(),"map",[],(function $$36(i){return null==i&&(i=nil),(null==$$36.$$s?this:$$36.$$s).$handle_part(i)}),{$$arity:1,$$s:this}).$join();if($eqeqeq("begin",$ret_or_1)){if($eqeq(sexp.$children().$length(),1))return this.$handle_part(sexp.$children()["$[]"](0))}else if($eqeqeq("send",$ret_or_1)){if($b=sexp.$children(),recv=null==($a=$to_ary($b))[0]?nil:$a[0],meth=null==$a[1]?nil:$a[1],args=$slice.call($a,2),parts=$send(args,"map",[],(function $$37(s){return null==s&&(s=nil),(null==$$37.$$s?this:$$37.$$s).$handle_part(s,"ignore")}),{$$arity:1,$$s:this}),$truthy(parts["$include?"](nil)))return nil;if($truthy(recv["$is_a?"]($$$($$$($Opal,"AST"),"Node")))&&$eqeq(recv.$type(),"const")&&$eqeq(recv.$children().$last(),"File")){if($eqeq(meth,"expand_path"))return $send(this,"expand_path",$to_a(parts));if($eqeq(meth,"join"))return this.$expand_path(parts.$join("/"));if($eqeq(meth,"dirname"))return this.$expand_path(parts["$[]"](0).$split("/")["$[]"]($range(0,-1,!0)).$join("/"))}else if($eqeq(meth,"__dir__"))return $$("File").$dirname($$$($$("Opal"),"Compiler").$module_name(this.compiler.$file()))}}return $eqeqeq("error",$ret_or_1=missing_dynamic_require)?this.compiler.$error("Cannot handle dynamic require",this.sexp.$line()):$eqeqeq("warning",$ret_or_1)?this.compiler.$warning("Cannot handle dynamic require",this.sexp.$line()):nil}),-2),$def(self,"$expand_path",(function(path,base){return null==base&&(base=""),$send((base+"/"+path).$split("/"),"each_with_object",[[]],(function(part,p){return null==part&&(part=nil),null==p&&(p=nil),$eqeq(part,"")?nil:$eqeq(part,"..")?p.$pop():p["$<<"](part)}),2).$join("/")}),-2)}($nesting[0],0,$nesting)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/csend"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$def=Opal.def;return Opal.add_stubs("require,handle,helper,conditional_send,recv,receiver_sexp,push,compile_method_name,compile_arguments,compile_block_pass"),self.$require("opal/nodes/call"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"CSendNode");return self.$handle("csend"),$def(self,"$default_compile",(function(){return this.$helper("send"),$send(this,"conditional_send",[this.$recv(this.$receiver_sexp())],(function $$1(receiver_temp){var self=null==$$1.$$s?this:$$1.$$s;return null==receiver_temp&&(receiver_temp=nil),self.$push("$send(",receiver_temp),self.$compile_method_name(),self.$compile_arguments(),self.$compile_block_pass(),self.$push(")")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("CallNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/call_special"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$send=Opal.send;return Opal.add_stubs("require,handle,children,push,recv,recvr,expr,property,value,<<,default_compile,meth,receiver_sexp,method_jsid,compile_arguments,iter,s,lhs,rhs,==,type,first,map,flatten,scan,to_proc,empty?,stmt?,process"),self.$require("opal/nodes/base"),self.$require("opal/nodes/call"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"JsAttrNode");self.$handle("jsattr"),self.$children("recvr","property"),$def(self,"$compile",(function(){return this.$push(this.$recv(this.$recvr()),"[",this.$expr(this.$property()),"]")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JsAttrAsgnNode");self.$handle("jsattrasgn"),self.$children("recvr","property","value"),$def(self,"$compile",(function(){return this.$push(this.$recv(this.$recvr()),"[",this.$expr(this.$property()),"] = ",this.$expr(this.$value()))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JsCallNode"),$proto=self.$$prototype;$proto.iter=$proto.arglist=nil,self.$handle("jscall"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$truthy(self.iter)&&(self.arglist=self.arglist["$<<"](self.iter)),self.iter=nil}),-1),$def(self,"$compile",(function(){return this.$default_compile()}),0),$def(self,"$method_jsid",(function(){return"."+this.$meth()}),0),$def(self,"$compile_using_send",(function(){return this.$push(this.$recv(this.$receiver_sexp()),this.$method_jsid(),".apply(null"),this.$compile_arguments(),$truthy(this.$iter())&&this.$push(".concat(",this.$expr(this.$iter()),")"),this.$push(")")}),0)}($nesting[0],$$("CallNode")),function($base,$super){var self=$klass($base,$super,"Match3Node");return self.$$prototype.level=nil,self.$handle("match_with_lvasgn"),self.$children("lhs","rhs"),$def(self,"$compile",(function(){var sexp=nil,re=nil,names=nil,names_def=nil;return sexp=this.$s("send",this.$lhs(),"=~",this.$rhs()),$eqeq(this.$lhs().$type(),"regexp")&&$eqeq(this.$lhs().$children().$first().$type(),"str")&&(re=this.$lhs().$children().$first().$children().$first(),names=$send(re.$scan(/\(\?<([^>]*)>/).$flatten(),"map",[],"to_sym".$to_proc()),$truthy(names["$empty?"]())||(names_def=this.$s("lvasgn","$m3names",this.$s("if",this.$s("gvar","$~"),this.$s("send",this.$s("gvar","$~"),"named_captures"),this.$s("hash"))),names=$send(names,"map",[],(function $$1(name){var self=null==$$1.$$s?this:$$1.$$s;return null==name&&(name=nil),self.$s("lvasgn",name,self.$s("send",self.$s("lvar","$m3names"),"[]",self.$s("sym",name)))}),{$$arity:1,$$s:this}),sexp=$truthy(this["$stmt?"]())?$send(this,"s",["begin",sexp,names_def].concat($to_a(names))):$send(this,"s",["begin",this.$s("lvasgn","$m3tmp",sexp),names_def].concat($to_a(names)).concat([this.$s("lvar","$m3tmp")])))),this.$push(this.$process(sexp,this.level))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/scope"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$def=Opal.def,$send=Opal.send,$rb_minus=Opal.rb_minus,$truthy=Opal.truthy,$not=Opal.not,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$hash2=Opal.hash2;return Opal.add_stubs("require,attr_accessor,attr_reader,indent,scope,compiler,scope=,-,==,iter?,!,class?,dup,push,map,ivars,gvars,empty?,<<,parser_indent,join,+,fragment,def_in_class?,add_proto_ivar,include?,has_local?,|,scope_locals,reject,start_with?,to_s,has_temp?,pop,next_temp,loop,succ,uses_block!,identify!,valid_name?,mid,compact,parent,name,scope_name,unique_temp,lambda?,def?,type,nil?,rescue_else_sexp,last,class,collect_refinements_temps,add_scope_local,new_refinements_temp,identity,block_name=,add_temp,block_name,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ScopeNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.type=$proto.is_lambda=$proto.lambda_definition=$proto.defs=$proto.parent=$proto.temps=$proto.locals=$proto.proto_ivars=$proto.compiler=$proto.ivars=$proto.gvars=$proto.args=$proto.queue=$proto.while_stack=$proto.identity=$proto.uses_block=$proto.rescues=$proto.in_resbody=$proto.in_ensure=$proto.next_retry_id=$proto.refinements_temp=$proto.block_prepared=nil,self.$attr_accessor("parent"),self.$attr_accessor("name"),self.$attr_accessor("block_name"),self.$attr_reader("scope_name"),self.$attr_reader("locals"),self.$attr_reader("ivars"),self.$attr_reader("gvars"),self.$attr_accessor("mid"),self.$attr_accessor("defs"),self.$attr_reader("methods"),self.$attr_accessor("catch_return","has_break","has_retry"),self.$attr_accessor("rescue_else_sexp"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.locals=[],self.temps=[],self.args=[],self.ivars=[],self.gvars=[],self.parent=nil,self.queue=[],self.unique="a",self.while_stack=[],self.identity=nil,self.defs=nil,self.methods=[],self.uses_block=!1,self.in_ensure=!1,self.proto_ivars=[]}),-1),$def(self,"$in_scope",(function $$in_scope(){var $yield=$$in_scope.$$p||nil;return delete $$in_scope.$$p,$send(this,"indent",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s,$writer=nil;return null==self.parent&&(self.parent=nil),self.parent=self.$compiler().$scope(),$writer=[self],$send(self.$compiler(),"scope=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],Opal.yield1($yield,self),$writer=[self.parent],$send(self.$compiler(),"scope=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:0,$$s:this})}),0),$def(self,"$class_scope?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.type["$=="]("class"))?$ret_or_1:this.type["$=="]("module")}),0),$def(self,"$class?",(function(){return this.type["$=="]("class")}),0),$def(self,"$module?",(function(){return this.type["$=="]("module")}),0),$def(self,"$sclass?",(function(){return this.type["$=="]("sclass")}),0),$def(self,"$top?",(function(){return this.type["$=="]("top")}),0),$def(self,"$iter?",(function(){return this.type["$=="]("iter")}),0),$def(self,"$def?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.type["$=="]("def"))?$ret_or_1:this.type["$=="]("defs")}),0),$def(self,"$lambda?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$iter?"]())?this.is_lambda:$ret_or_1}),0),$def(self,"$is_lambda!",(function(){return this.is_lambda=!0}),0),$def(self,"$defines_lambda",(function $$defines_lambda(){var $yield=$$defines_lambda.$$p||nil;return delete $$defines_lambda.$$p,this.lambda_definition=!0,Opal.yieldX($yield,[]),this.lambda_definition=!1}),0),$def(self,"$lambda_definition?",(function(){return this.lambda_definition}),0),$def(self,"$def_in_class?",(function(){var $ret_or_1,$ret_or_2,$ret_or_3;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.defs["$!"]())?this.type["$=="]("def"):$ret_or_3)?this.parent:$ret_or_2)?this.parent["$class?"]():$ret_or_1}),0),$def(self,"$to_vars",(function(){var indent,vars=nil,iv=nil,gv=nil,str=nil;return vars=this.temps.$dup(),$send(vars,"push",$to_a($send(this.locals,"map",[],(function(l){return null==l&&(l=nil),l+" = nil"}),1))),iv=$send(this.$ivars(),"map",[],(function(ivar){return null==ivar&&(ivar=nil),"if (self"+ivar+" == null) self"+ivar+" = nil;\n"}),1),gv=$send(this.$gvars(),"map",[],(function(gvar){return null==gvar&&(gvar=nil),"if ($gvars"+gvar+" == null) $gvars"+gvar+" = nil;\n"}),1),$truthy(this["$class?"]())&&$not(this.proto_ivars["$empty?"]())&&vars["$<<"]("$proto = self.$$prototype"),indent=this.compiler.$parser_indent(),str=$truthy(vars["$empty?"]())?"":"var "+vars.$join(", ")+";\n",$truthy(this.$ivars()["$empty?"]())||(str=$rb_plus(str,""+indent+iv.$join(indent))),$truthy(this.$gvars()["$empty?"]())||(str=$rb_plus(str,""+indent+gv.$join(indent))),$truthy(this["$class?"]())&&$not(this.proto_ivars["$empty?"]())&&(str=str+"\n"+indent+$send(this.proto_ivars,"map",[],(function(i){return null==i&&(i=nil),"$proto"+i}),1).$join(" = ")+" = nil;"),this.$fragment(str)}),0),$def(self,"$add_scope_ivar",(function(ivar){return $truthy(this["$def_in_class?"]())?this.parent.$add_proto_ivar(ivar):$truthy(this.ivars["$include?"](ivar))?nil:this.ivars["$<<"](ivar)}),1),$def(self,"$add_scope_gvar",(function(gvar){return $truthy(this.gvars["$include?"](gvar))?nil:this.gvars["$<<"](gvar)}),1),$def(self,"$add_proto_ivar",(function(ivar){return $truthy(this.proto_ivars["$include?"](ivar))?nil:this.proto_ivars["$<<"](ivar)}),1),$def(self,"$add_arg",(function(arg){return $truthy(this.args["$include?"](arg))||this.args["$<<"](arg),arg}),1),$def(self,"$add_scope_local",(function(local){return $truthy(this["$has_local?"](local))?nil:this.locals["$<<"](local)}),1),$def(self,"$has_local?",(function(local){return!!($truthy(this.locals["$include?"](local))||$truthy(this.args["$include?"](local))||$truthy(this.temps["$include?"](local)))||!(!$truthy(this.parent)||!$eqeq(this.type,"iter"))&&this.parent["$has_local?"](local)}),1),$def(self,"$scope_locals",(function(){var locals;return locals=this.locals["$|"](this.args)["$|"]($truthy(this.parent)&&$eqeq(this.type,"iter")?this.parent.$scope_locals():[]),$send(locals,"reject",[],(function(i){return null==i&&(i=nil),i.$to_s()["$start_with?"]("$")}),1)}),0),$def(self,"$add_scope_temp",(function(tmp){return $truthy(this["$has_temp?"](tmp))?nil:this.temps.$push(tmp)}),1),$def(self,"$has_temp?",(function(tmp){return this.temps["$include?"](tmp)}),1),$def(self,"$new_temp",(function(){var tmp;return $truthy(this.queue["$empty?"]())?(tmp=this.$next_temp(),this.temps["$<<"](tmp),tmp):this.queue.$pop()}),0),$def(self,"$next_temp",(function(){var self=this,tmp=nil;return tmp=nil,function(){var $brk=Opal.new_brk();try{$send(self,"loop",[],(function $$20(){var self=null==$$20.$$s?this:$$20.$$s;if(null==self.unique&&(self.unique=nil),tmp="$"+self.unique,self.unique=self.unique.$succ(),$truthy(self["$has_local?"](tmp)))return nil;Opal.brk(nil,$brk)}),{$$arity:0,$$s:self,$$brk:$brk})}catch(err){if(err===$brk)return err.$v;throw err}}(),tmp}),0),$def(self,"$queue_temp",(function(name){return this.queue["$<<"](name)}),1),$def(self,"$push_while",(function(){var info;return info=$hash2([],{}),this.while_stack.$push(info),info}),0),$def(self,"$pop_while",(function(){return this.while_stack.$pop()}),0),$def(self,"$in_while?",(function(){return this.while_stack["$empty?"]()["$!"]()}),0),$def(self,"$uses_block!",(function(){return $eqeq(this.type,"iter")&&$truthy(this.parent)?this.parent["$uses_block!"]():(this.uses_block=!0,this["$identify!"]())}),0),$def(self,"$identify!",(function(name){var $ret_or_1=nil,$ret_or_2=nil,$ret_or_3=nil;return null==name&&(name=nil),$truthy(this.identity)||($truthy(this["$valid_name?"](this.$mid()))?this.identity="$$"+this.$mid():(name=$truthy($ret_or_1=name)?$ret_or_1:[$truthy($ret_or_2=this.$parent())?$truthy($ret_or_3=this.$parent().$name())?$ret_or_3:this.$parent().$scope_name():$ret_or_2,this.$mid()].$compact().$join("_"),this.identity=this.compiler.$unique_temp(name))),this.identity}),-1),self.$attr_reader("identity"),$def(self,"$find_parent_def",(function(){var scope=nil;for(scope=this;$truthy(scope=scope.$parent());)if($truthy(scope["$def?"]())||$truthy(scope["$lambda?"]()))return scope;return nil}),0),$def(self,"$super_chain",(function(){var $a,chain=nil,scope=nil,defn=nil,mid=nil;for(chain=($a=[[],this,"null","null"])[0],scope=$a[1],defn=$a[2],mid=$a[3];$truthy(scope);){if(!$eqeq(scope.$type(),"iter")){if($truthy(["def","defs"]["$include?"](scope.$type()))){defn=scope["$identify!"](),mid="'"+scope.$mid()+"'";break}break}chain["$<<"](scope["$identify!"]()),$truthy(scope.$parent())&&(scope=scope.$parent())}return[chain,defn,mid]}),0),$def(self,"$uses_block?",(function(){return this.uses_block}),0),$def(self,"$has_rescue_else?",(function(){return this.$rescue_else_sexp()["$nil?"]()["$!"]()}),0),$def(self,"$in_rescue",(function $$in_rescue(node){var $ret_or_1,result,$yield=$$in_rescue.$$p||nil;return delete $$in_rescue.$$p,this.rescues=$truthy($ret_or_1=this.rescues)?$ret_or_1:[],this.rescues.$push(node),result=Opal.yieldX($yield,[]),this.rescues.$pop(),result}),1),$def(self,"$current_rescue",(function(){return this.rescues.$last()}),0),$def(self,"$in_resbody",(function $$in_resbody(){var result,$yield=$$in_resbody.$$p||nil;return delete $$in_resbody.$$p,$yield===nil?nil:(this.in_resbody=!0,result=Opal.yieldX($yield,[]),this.in_resbody=!1,result)}),0),$def(self,"$in_resbody?",(function(){return this.in_resbody}),0),$def(self,"$in_ensure",(function $$in_ensure(){var result,$yield=$$in_ensure.$$p||nil;return delete $$in_ensure.$$p,$yield===nil?nil:(this.in_ensure=!0,result=Opal.yieldX($yield,[]),this.in_ensure=!1,result)}),0),$def(self,"$in_ensure?",(function(){return this.in_ensure}),0),$def(self,"$gen_retry_id",(function(){var $ret_or_1;return this.next_retry_id=$truthy($ret_or_1=this.next_retry_id)?$ret_or_1:"retry_0",this.next_retry_id=this.next_retry_id.$succ()}),0),$def(self,"$accepts_using?",(function(){return[$$("TopNode"),$$("ModuleNode"),$$("ClassNode"),$$("IterNode")]["$include?"](this.$class())}),0),$def(self,"$collect_refinements_temps",(function(temps){return null==temps&&(temps=[]),$truthy(this.refinements_temp)&&temps["$<<"](this.refinements_temp),$truthy(this.$parent())?this.$parent().$collect_refinements_temps(temps):temps}),-1),$def(self,"$new_refinements_temp",(function(){var var$;return var$=this.$compiler().$unique_temp("$refn"),this.$add_scope_local(var$),var$}),0),$def(self,"$refinements_temp",(function(){var $a,prev,curr;return prev=($a=[this.refinements_temp,this.$new_refinements_temp()])[0],curr=$a[1],this.refinements_temp=curr,[prev,curr]}),0),$def(self,"$self",(function(){return this.define_self=!0,"self"}),0),$def(self,"$nesting",(function(){return this.define_nesting=!0,"$nesting"}),0),$def(self,"$relative_access",(function(){return this.define_relative_access=this.define_nesting=!0,"$$"}),0),$def(self,"$prepare_block",(function(block_name){var scope_name,$writer=nil;return null==block_name&&(block_name=nil),scope_name=this.$scope().$identity(),$truthy(block_name)&&($send(this,"block_name=",$to_a($writer=[block_name])),$writer[$rb_minus($writer.length,1)]),this.$add_temp(this.$block_name()+" = "+scope_name+".$$p || nil"),$truthy(this.block_prepared)?nil:(this.$line("delete "+scope_name+".$$p;"),this.block_prepared=!0)}),-1),self.$attr_accessor("await_encountered")}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/module"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_ary=Opal.to_ary,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$def=Opal.def;return Opal.add_stubs("require,handle,children,name_and_base,helper,nil?,body,stmt?,unshift,line,in_scope,name=,scope,-,compile_body,await_encountered,await_encountered=,parent,+,nesting,private,cid,expr,stmt,returns,compiler,empty_line,add_temp,to_vars"),self.$require("opal/nodes/scope"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ModuleNode"),$proto=self.$$prototype;return $proto.define_nesting=$proto.define_relative_access=nil,self.$handle("module"),self.$children("cid","body"),$def(self,"$compile",(function(){var $a,$b,name,base,await_begin=nil,await_end=nil,async=nil,$writer=nil;return $b=this.$name_and_base(),$a=$to_ary($b),name=null==$a[0]?nil:$a[0],base=null==$a[1]?nil:$a[1],this.$helper("module"),$truthy(this.$body()["$nil?"]())?$truthy(this["$stmt?"]())?this.$unshift("$module(",base,", '"+name+"')"):this.$unshift("($module(",base,", '"+name+"'), nil)"):(this.$line(" var self = $module($base, '"+name+"');"),$send(this,"in_scope",[],(function $$1(){var $writer,self=null==$$1.$$s?this:$$1.$$s;return $writer=[name],$send(self.$scope(),"name=",$to_a($writer)),$rb_minus($writer.length,1),self.$compile_body()}),{$$arity:0,$$s:this}),$truthy(this.$await_encountered())?(await_begin="(await ",await_end=")",async="async ",$writer=[!0],$send(this.$parent(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):(await_begin=($a=["","",""])[0],await_end=$a[1],async=$a[2]),this.$unshift(await_begin+"("+async+"function($base"+($truthy(this.define_nesting)?", $parent_nesting":nil)+") {"),this.$line("})(",base,($truthy(this.define_nesting)?$rb_plus(", ",this.$scope().$nesting()):nil)+")"+await_end))}),0),self.$private(),$def(self,"$name_and_base",(function(){var $a,$b,name,base=nil;return $b=this.$cid().$children(),base=null==($a=$to_ary($b))[0]?nil:$a[0],name=null==$a[1]?nil:$a[1],$truthy(base["$nil?"]())?[name,this.$scope().$nesting()+"[0]"]:[name,this.$expr(base)]}),0),$def(self,"$compile_body",(function(){var body_code;return body_code=this.$stmt(this.$compiler().$returns(this.$body())),this.$empty_line(),$truthy(this.define_nesting)&&this.$add_temp("$nesting = [self].concat($parent_nesting)"),$truthy(this.define_relative_access)&&this.$add_temp("$$ = Opal.$r($nesting)"),this.$line(this.$scope().$to_vars()),this.$line(body_code)}),0)}($nesting[0],$$("ScopeNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/class"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$to_ary=Opal.to_ary,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$def=Opal.def;return Opal.add_stubs("require,handle,children,name_and_base,helper,nil?,body,stmt?,unshift,super_code,line,in_scope,name=,scope,-,compile_body,await_encountered,await_encountered=,parent,+,nesting,sup,expr"),self.$require("opal/nodes/module"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ClassNode");return self.$$prototype.define_nesting=nil,self.$handle("class"),self.$children("cid","sup","body"),$def(self,"$compile",(function(){var $a,$b,name,base,await_begin=nil,await_end=nil,async=nil,$writer=nil;return $b=this.$name_and_base(),$a=$to_ary($b),name=null==$a[0]?nil:$a[0],base=null==$a[1]?nil:$a[1],this.$helper("klass"),$truthy(this.$body()["$nil?"]())?$truthy(this["$stmt?"]())?this.$unshift("$klass(",base,", ",this.$super_code(),", '"+name+"')"):this.$unshift("($klass(",base,", ",this.$super_code(),", '"+name+"'), nil)"):(this.$line(" var self = $klass($base, $super, '"+name+"');"),$send(this,"in_scope",[],(function $$1(){var $writer,self=null==$$1.$$s?this:$$1.$$s;return $writer=[name],$send(self.$scope(),"name=",$to_a($writer)),$rb_minus($writer.length,1),self.$compile_body()}),{$$arity:0,$$s:this}),$truthy(this.$await_encountered())?(await_begin="(await ",await_end=")",async="async ",$writer=[!0],$send(this.$parent(),"await_encountered=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):(await_begin=($a=["","",""])[0],await_end=$a[1],async=$a[2]),this.$unshift(await_begin+"("+async+"function($base, $super"+($truthy(this.define_nesting)?", $parent_nesting":nil)+") {"),this.$line("})(",base,", ",this.$super_code(),($truthy(this.define_nesting)?$rb_plus(", ",this.$scope().$nesting()):nil)+")"+await_end))}),0),$def(self,"$super_code",(function(){return $truthy(this.$sup())?this.$expr(this.$sup()):"null"}),0)}($nesting[0],$$("ModuleNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/singleton_class"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("require,handle,children,push,in_scope,stmt,returns,compiler,body,add_temp,line,to_vars,scope,recv,object,nesting"),self.$require("opal/nodes/scope"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"SingletonClassNode");return self.$handle("sclass"),self.$children("object","body"),$def(self,"$compile",(function(){return this.$push("(function(self, $parent_nesting) {"),$send(this,"in_scope",[],(function $$1(){var body_stmt,self=null==$$1.$$s?this:$$1.$$s;return null==self.define_nesting&&(self.define_nesting=nil),null==self.define_relative_access&&(self.define_relative_access=nil),body_stmt=self.$stmt(self.$compiler().$returns(self.$body())),$truthy(self.define_nesting)&&self.$add_temp("$nesting = [self].concat($parent_nesting)"),$truthy(self.define_relative_access)&&self.$add_temp("$$ = Opal.$r($nesting)"),self.$line(self.$scope().$to_vars()),self.$line(body_stmt)}),{$$arity:0,$$s:this}),this.$line("})(Opal.get_singleton_class(",this.$recv(this.$object()),"), "+this.$scope().$nesting()+")")}),0)}($nesting[0],$$("ScopeNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_arg,scope,name,push,to_s"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArgNode");return self.$handle("arg"),self.$children("name"),$def(self,"$compile",(function(){return this.$scope().$add_arg(this.$name()),this.$push(this.$name().$to_s())}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/arity_check"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$def=Opal.def,$send=Opal.send,$rb_minus=Opal.rb_minus,$truthy=Opal.truthy,$not=Opal.not,$rb_lt=Opal.rb_lt,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt;return Opal.add_stubs("require,handle,children,new,args_node,args,optargs,restarg,postargs,kwargs,kwoptargs,kwrestarg,kwnilarg,arity,arity=,scope,-,arity_check?,compiler,empty?,arity_checks,helper,inspect,to_s,mid,line,push,join,compact,size,all_args,!,-@,<,+,>,<<,has_only_optional_kwargs?,any?,negative_arity,positive_arity,select,include?,type,has_required_kwargs?,all?,==,def?,class_scope?,top?,parent,class?,name,module?,identity"),self.$require("opal/nodes/base"),self.$require("opal/rewriters/arguments"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ArityCheckNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.kwargs=$proto.kwoptargs=$proto.kwrestarg=$proto.all_args=$proto.args=$proto.optargs=$proto.restarg=$proto.postargs=$proto.arity_checks=nil,self.$handle("arity_check"),self.$children("args_node"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this,arguments$=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),arguments$=$$$($$("Rewriters"),"Arguments").$new(self.$args_node().$children()),self.args=arguments$.$args(),self.optargs=arguments$.$optargs(),self.restarg=arguments$.$restarg(),self.postargs=arguments$.$postargs(),self.kwargs=arguments$.$kwargs(),self.kwoptargs=arguments$.$kwoptargs(),self.kwrestarg=arguments$.$kwrestarg(),self.kwnilarg=arguments$.$kwnilarg()}),-1),$def(self,"$compile",(function(){var $writer,meth=nil;return $writer=[this.$arity()],$send(this.$scope(),"arity=",$to_a($writer)),$rb_minus($writer.length,1),$truthy(this.$compiler()["$arity_check?"]())?$truthy(this.$arity_checks()["$empty?"]())?nil:(this.$helper("ac"),meth=this.$scope().$mid().$to_s().$inspect(),this.$line("var $arity = arguments.length;"),this.$push(" if ("+this.$arity_checks().$join(" || ")+") { $ac($arity, "+this.$arity()+", this, "+meth+"); }")):nil}),0),$def(self,"$kwargs",(function(){return[].concat($to_a(this.kwargs)).concat($to_a(this.kwoptargs)).concat([this.kwrestarg]).$compact()}),0),$def(self,"$all_args",(function(){var $ret_or_1;return this.all_args=$truthy($ret_or_1=this.all_args)?$ret_or_1:[].concat($to_a(this.args)).concat($to_a(this.optargs)).concat([this.restarg]).concat($to_a(this.postargs)).concat($to_a(this.$kwargs())).$compact()}),0),$def(self,"$arity_checks",(function(){var $a,arity=nil,min_arity=nil,max_arity=nil;return $truthy(null!=($a=this.arity_checks)&&$a!==nil?"instance-variable":nil)||(arity=this.$all_args().$size(),arity=$rb_minus(arity,this.optargs.$size()),$truthy(this.restarg)&&(arity=$rb_minus(arity,1)),arity=$rb_minus(arity,this.$kwargs().$size()),($not(this.optargs["$empty?"]())||$not(this.$kwargs()["$empty?"]())||$truthy(this.restarg))&&(arity=$rb_minus(arity["$-@"](),1)),this.arity_checks=[],$truthy($rb_lt(arity,0))?(min_arity=$rb_plus(arity,1)["$-@"](),max_arity=this.$all_args().$size(),$truthy($rb_gt(min_arity,0))&&this.arity_checks["$<<"]("$arity < "+min_arity),$truthy(this.restarg)||this.arity_checks["$<<"]("$arity > "+max_arity)):this.arity_checks["$<<"]("$arity !== "+arity)),this.arity_checks}),0),$def(self,"$arity",(function(){return $truthy(this.restarg)||$truthy(this.optargs["$any?"]())||$truthy(this["$has_only_optional_kwargs?"]())?this.$negative_arity():this.$positive_arity()}),0),$def(self,"$negative_arity",(function(){var result=nil;return result=$send(this.$all_args(),"select",[],(function(arg){return null==arg&&(arg=nil),["arg","mlhs"]["$include?"](arg.$type())}),1).$size(),$truthy(this["$has_required_kwargs?"]())&&(result=$rb_plus(result,1)),result=$rb_minus(result["$-@"](),1)}),0),$def(self,"$positive_arity",(function(){var result=nil;return result=this.$all_args().$size(),result=$rb_minus(result,this.$kwargs().$size()),$truthy(this.$kwargs()["$any?"]())&&(result=$rb_plus(result,1)),result}),0),$def(self,"$has_only_optional_kwargs?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$kwargs()["$any?"]())?$send(this.$kwargs(),"all?",[],(function(arg){return null==arg&&(arg=nil),["kwoptarg","kwrestarg"]["$include?"](arg.$type())}),1):$ret_or_1}),0),$def(self,"$has_required_kwargs?",(function(){return $send(this.$kwargs(),"any?",[],(function(arg){return null==arg&&(arg=nil),arg.$type()["$=="]("kwarg")}),1)}),0)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"IterArityCheckNode");return self.$handle("iter_arity_check"),$def(self,"$compile",(function(){var $writer,parent_scope=nil,$ret_or_1=nil,$ret_or_2=nil,context=nil,identity=nil;if($writer=[this.$arity()],$send(this.$scope(),"arity=",$to_a($writer)),$rb_minus($writer.length,1),!$truthy(this.$compiler()["$arity_check?"]()))return nil;if($truthy(this.$arity_checks()["$empty?"]()))return nil;for(parent_scope=this.$scope();!$truthy($truthy($ret_or_1=$truthy($ret_or_2=parent_scope["$def?"]())?$ret_or_2:parent_scope["$class_scope?"]())?$ret_or_1:parent_scope["$top?"]());)parent_scope=parent_scope.$parent();return context=$truthy(parent_scope["$top?"]())?"'
      '":$truthy(parent_scope["$def?"]())?"'"+parent_scope.$mid()+"'":$truthy(parent_scope["$class?"]())?"''":$truthy(parent_scope["$module?"]())?"''":nil,identity=this.$scope().$identity(),this.$line("if ("+identity+".$$is_lambda || "+identity+".$$define_meth) {"),this.$line(" var $arity = arguments.length;"),this.$line(" if ("+this.$arity_checks().$join(" || ")+") { Opal.block_ac($arity, "+this.$arity()+", "+context+"); }"),this.$line("}")}),0)}($nesting[0],$$("ArityCheckNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/ensure_kwargs_are_kwargs"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,helper,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"EnsureKwargsAreKwargs");return self.$handle("ensure_kwargs_are_kwargs"),$def(self,"$compile",(function(){return this.$helper("hash2"),this.$line("if ($kwargs == null) {"),this.$line(" $kwargs = $hash2([], {});"),this.$line("} else if (!$kwargs.$$is_hash) {"),this.$line(" throw Opal.ArgumentError.$new('expected kwargs');"),this.$line("}")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_block_arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,uses_block!,scope,add_arg,name,prepare_block"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractBlockarg");return self.$handle("extract_blockarg"),self.$children("name"),$def(self,"$compile",(function(){return this.$scope()["$uses_block!"](),this.$scope().$add_arg(this.$name()),this.$scope().$prepare_block(this.$name())}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,[],meta,<<,used_kwargs,scope,add_temp,lvar_name,line,inspect,to_s"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwarg");return self.$$prototype.sexp=nil,self.$handle("extract_kwarg"),self.$children("lvar_name"),$def(self,"$compile",(function(){var key_name=nil;return key_name=this.sexp.$meta()["$[]"]("arg_name"),this.$scope().$used_kwargs()["$<<"](key_name),this.$add_temp(this.$lvar_name()),this.$line("if (!Opal.hasOwnProperty.call($kwargs.$$smap, '"+key_name+"')) {"),this.$line(" throw Opal.ArgumentError.$new('missing keyword: "+key_name+"');"),this.$line("}"),this.$line(this.$lvar_name()+" = $kwargs.$$smap["+key_name.$to_s().$inspect()+"];")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwargs"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,add_temp,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwargs");return self.$handle("extract_kwargs"),$def(self,"$compile",(function(){return this.$add_temp("$kwargs"),this.$line("$kwargs = Opal.extract_kwargs($post_args)")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwoptarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,[],meta,<<,used_kwargs,scope,add_temp,lvar_name,line,inspect,to_s,==,default_value,expr"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwoptarg");return self.$$prototype.sexp=nil,self.$handle("extract_kwoptarg"),self.$children("lvar_name","default_value"),$def(self,"$compile",(function(){var key_name=nil;return key_name=this.sexp.$meta()["$[]"]("arg_name"),this.$scope().$used_kwargs()["$<<"](key_name),this.$add_temp(this.$lvar_name()),this.$line(this.$lvar_name()+" = $kwargs.$$smap["+key_name.$to_s().$inspect()+"];"),$eqeq(this.$default_value().$children()["$[]"](1),"undefined")?nil:this.$line("if ("+this.$lvar_name()+" == null) "+this.$lvar_name()+" = ",this.$expr(this.$default_value()))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_kwrestarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("require,handle,children,name,add_temp,line,used_kwargs,map,scope,join"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractKwrestarg");return self.$handle("extract_kwrestarg"),self.$children("name"),$def(self,"$compile",(function(){var name,$ret_or_1;return name=$truthy($ret_or_1=this.$name())?$ret_or_1:"$kw_rest_arg",this.$add_temp(name),this.$line(name+" = Opal.kwrestargs($kwargs, "+this.$used_kwargs()+");")}),0),$def(self,"$used_kwargs",(function(){return"{"+$send(this.$scope().$used_kwargs(),"map",[],(function(arg_name){return null==arg_name&&(arg_name=nil),"'"+arg_name+"': true"}),1).$join(",")+"}"}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_optarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,==,[],default_value,line,name,expr"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractOptargNode");return self.$handle("extract_optarg"),self.$children("name","default_value"),$def(self,"$compile",(function(){return $eqeq(this.$default_value().$children()["$[]"](1),"undefined")?nil:this.$line("if ("+this.$name()+" == null) "+this.$name()+" = ",this.$expr(this.$default_value()),";")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_post_arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_temp,name,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractPostArg");return self.$handle("extract_post_arg"),self.$children("name"),$def(self,"$compile",(function(){return this.$add_temp(this.$name()),this.$line(this.$name()+" = $post_args.shift();"),this.$line("if ("+this.$name()+" == null) "+this.$name()+" = nil;")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_post_optarg"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_temp,name,line,args_to_keep,==,[],default_value,expr"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractPostOptarg");return self.$handle("extract_post_optarg"),self.$children("name","default_value","args_to_keep"),$def(self,"$compile",(function(){return this.$add_temp(this.$name()),this.$line("if ($post_args.length > "+this.$args_to_keep()+") "+this.$name()+" = $post_args.shift();"),$eqeq(this.$default_value().$children()["$[]"](1),"undefined")?nil:this.$line("if ("+this.$name()+" == null) "+this.$name()+" = ",this.$expr(this.$default_value()),";")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/extract_restarg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,name,add_temp,==,args_to_keep,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ExtractRestarg");return self.$handle("extract_restarg"),self.$children("name","args_to_keep"),$def(self,"$compile",(function(){var name,$ret_or_1;return name=$truthy($ret_or_1=this.$name())?$ret_or_1:"$rest_arg",this.$add_temp(name),$eqeq(this.$args_to_keep(),0)?this.$line(name+" = $post_args;"):this.$line(name+" = $post_args.splice(0, $post_args.length - "+this.$args_to_keep()+");")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/fake_arg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,next_temp,scope,add_arg,push"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"FakeArgNode");return self.$handle("fake_arg"),$def(self,"$compile",(function(){var name;return name=this.$scope().$next_temp(),this.$scope().$add_arg(name),this.$push(name)}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/initialize_iterarg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,line,name"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"InitializeIterarg");return self.$handle("initialize_iter_arg"),self.$children("name"),$def(self,"$compile",(function(){return this.$line("if ("+this.$name()+" == null) "+this.$name()+" = nil;")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/initialize_shadowarg"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,<<,locals,scope,name,add_arg,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"InitializeShadowarg");return self.$handle("initialize_shadowarg"),self.$children("name"),$def(self,"$compile",(function(){return this.$scope().$locals()["$<<"](this.$name()),this.$scope().$add_arg(this.$name()),this.$line(this.$name()+" = nil;")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/parameters"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a,$truthy=Opal.truthy,$eqeq=Opal.eqeq;return Opal.add_stubs("children,map,public_send,type,join,compact,=="),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){return function($base,$super){var self=$klass($base,null,"Parameters");return self.$$prototype.args=nil,$def(self,"$initialize",(function(args){return this.args=args.$children()}),1),$def(self,"$to_code",(function(){return"["+$send(this.args,"map",[],(function $$1(arg){return null==arg&&(arg=nil),$send(null==$$1.$$s?this:$$1.$$s,"public_send",["on_"+arg.$type()].concat($to_a(arg)))}),{$$arity:1,$$s:this}).$compact().$join(", ")+"]"}),0),$def(self,"$on_arg",(function(arg_name){return"['req', '"+arg_name+"']"}),1),$def(self,"$on_mlhs",(function($a){return Opal.slice.call(arguments),"['req']"}),-1),$def(self,"$on_optarg",(function(arg_name,_default_value){return"['opt', '"+arg_name+"']"}),2),$def(self,"$on_restarg",(function(arg_name){return null==arg_name&&(arg_name=nil),$truthy(arg_name)?($eqeq(arg_name,"fwd_rest_arg")&&(arg_name="*"),"['rest', '"+arg_name+"']"):"['rest']"}),-1),$def(self,"$on_kwarg",(function(arg_name){return"['keyreq', '"+arg_name+"']"}),1),$def(self,"$on_kwoptarg",(function(arg_name,_default_value){return"['key', '"+arg_name+"']"}),2),$def(self,"$on_kwrestarg",(function(arg_name){return null==arg_name&&(arg_name=nil),$truthy(arg_name)?"['keyrest', '"+arg_name+"']":"['keyrest']"}),-1),$def(self,"$on_blockarg",(function(arg_name){return $eqeq(arg_name,"fwd_block_arg")&&(arg_name="&"),"['block', '"+arg_name+"']"}),1),$def(self,"$on_kwnilarg",(function(){return"['nokey']"}),0),$def(self,"$on_shadowarg",(function(_arg_name){return nil}),1)}([$module($base,"Args")].concat($parent_nesting)[0])}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args/prepare_post_args"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$eqeq=Opal.eqeq,$def=Opal.def;return Opal.add_stubs("require,handle,children,add_temp,==,offset,line"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Args")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"PreparePostArgs");return self.$handle("prepare_post_args"),self.$children("offset"),$def(self,"$compile",(function(){return this.$add_temp("$post_args"),$eqeq(this.$offset(),0)?this.$line("$post_args = Opal.slice.call(arguments)"):this.$line("$post_args = Opal.slice.call(arguments, "+this.$offset()+")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$hash2=Opal.hash2,$send=Opal.send,$truthy=Opal.truthy,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt,$neqeq=Opal.neqeq,$def=Opal.def;return Opal.add_stubs("require,handle,each_with_index,children,multiple_underscore?,[],[]=,-,+,>,s,type,!=,push,process,==,count,start_with?,to_s,first"),self.$require("opal/nodes/base"),self.$require("opal/nodes/args/arg"),self.$require("opal/nodes/args/arity_check"),self.$require("opal/nodes/args/ensure_kwargs_are_kwargs"),self.$require("opal/nodes/args/extract_block_arg"),self.$require("opal/nodes/args/extract_kwarg"),self.$require("opal/nodes/args/extract_kwargs"),self.$require("opal/nodes/args/extract_kwoptarg"),self.$require("opal/nodes/args/extract_kwrestarg"),self.$require("opal/nodes/args/extract_optarg"),self.$require("opal/nodes/args/extract_post_arg"),self.$require("opal/nodes/args/extract_post_optarg"),self.$require("opal/nodes/args/extract_restarg"),self.$require("opal/nodes/args/fake_arg"),self.$require("opal/nodes/args/initialize_iterarg"),self.$require("opal/nodes/args/initialize_shadowarg"),self.$require("opal/nodes/args/parameters"),self.$require("opal/nodes/args/prepare_post_args"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArgsNode");return self.$handle("args"),$def(self,"$compile",(function(){var same_arg_counter=nil;return same_arg_counter=$hash2([],{}),$send(this.$children(),"each_with_index",[],(function $$1(arg,idx){var self=null==$$1.$$s?this:$$1.$$s,$writer=nil;return null==arg&&(arg=nil),null==idx&&(idx=nil),$truthy(self["$multiple_underscore?"](arg))&&($truthy(same_arg_counter["$[]"](arg))||($send(same_arg_counter,"[]=",$to_a($writer=[arg,0])),$writer[$rb_minus($writer.length,1)]),$writer=[arg,$rb_plus(same_arg_counter["$[]"](arg),1)],$send(same_arg_counter,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy($rb_gt(same_arg_counter["$[]"](arg),1))&&(arg=self.$s(arg.$type(),arg.$children()["$[]"](0)+"_$"+same_arg_counter["$[]"](arg)))),$neqeq(idx,0)&&self.$push(", "),self.$push(self.$process(arg))}),{$$arity:2,$$s:this})}),0),$def(self,"$multiple_underscore?",(function(arg){var $ret_or_1,$ret_or_2,$ret_or_3;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=arg.$type()["$=="]("arg"))?arg.$children().$count()["$=="](1):$ret_or_3)?arg.$children().$first().$to_s()["$start_with?"]("_"):$ret_or_2)?$rb_gt(this.$children().$count(arg),1):$ret_or_1}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/node_with_args"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$def=Opal.def,$truthy=Opal.truthy;return Opal.add_stubs("require,attr_reader,attr_accessor,[],meta,s,original_args,push,process,arity_check_node,uses_block?,scope,prepare_block,to_code,new"),self.$require("opal/nodes/scope"),self.$require("opal/nodes/args/parameters"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"NodeWithArgs"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.sexp=nil,self.$attr_reader("used_kwargs"),self.$attr_accessor("arity"),self.$attr_reader("original_args"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.original_args=self.sexp.$meta()["$[]"]("original_args"),self.used_kwargs=[],self.arity=0}),-1),$def(self,"$arity_check_node",(function(){return this.$s("arity_check",this.$original_args())}),0),$def(self,"$compile_arity_check",(function(){return this.$push(this.$process(this.$arity_check_node()))}),0),$def(self,"$compile_block_arg",(function(){return $truthy(this.$scope()["$uses_block?"]())?this.$scope().$prepare_block():nil}),0),$def(self,"$parameters_code",(function(){return $$$($$("Args"),"Parameters").$new(this.$original_args()).$to_code()}),0)}($nesting[0],$$("ScopeNode"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/iter"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$eqeq=Opal.eqeq,$rb_gt=Opal.rb_gt,$def=Opal.def;return Opal.add_stubs("require,handle,children,lambda_definition?,scope,is_lambda!,in_scope,identify!,process,inline_args,compile_arity_check,stmt,returned_body,add_temp,to_vars,line,catch_return,unshift,push,await_encountered,<<,arity,self,contains_break?,arity_check?,compiler,parameters_code,has_top_level_mlhs_arg?,has_trailing_comma_in_args?,==,length,>,join,nesting,relative_access,block_arg,prepare_block,each,args,first,updated,body,returns,s,any?,original_args,type,expression,loc,source,match,new,found_break?"),self.$require("opal/nodes/node_with_args"),self.$require("opal/rewriters/break_finder"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"IterNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.define_self=$proto.define_nesting=$proto.define_relative_access=$proto.sexp=nil,self.$handle("iter"),self.$children("inline_args","body"),$def(self,"$compile",(function(){var inline_params=nil,to_vars=nil,identity=nil,body_code=nil,blockopts=nil;return $truthy(this.$scope()["$lambda_definition?"]())&&this["$is_lambda!"](),inline_params=nil,to_vars=identity=body_code=nil,$send(this,"in_scope",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return null==self.define_self&&(self.define_self=nil),identity=self.$scope()["$identify!"](),inline_params=self.$process(self.$inline_args()),self.$compile_arity_check(),body_code=self.$stmt(self.$returned_body()),$truthy(self.define_self)&&self.$add_temp("self = "+identity+".$$s == null ? this : "+identity+".$$s"),to_vars=self.$scope().$to_vars(),self.$line(body_code),$truthy(self.$scope().$catch_return())?(self.$unshift("try {\n"),self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }"),self.$push(" throw $returner; }")):nil}),{$$arity:0,$$s:this}),this.$unshift(to_vars),$truthy(this.$await_encountered())?this.$unshift("async function "+identity+"(",inline_params,"){"):this.$unshift("function "+identity+"(",inline_params,"){"),this.$push("}"),(blockopts=[])["$<<"]("$$arity: "+this.$arity()),$truthy(this.define_self)&&blockopts["$<<"]("$$s: "+this.$scope().$self()),$truthy(this["$contains_break?"]())&&blockopts["$<<"]("$$brk: $brk"),$truthy(this.$compiler()["$arity_check?"]())&&blockopts["$<<"]("$$parameters: "+this.$parameters_code()),$truthy(this["$has_top_level_mlhs_arg?"]())&&blockopts["$<<"]("$$has_top_level_mlhs_arg: true"),$truthy(this["$has_trailing_comma_in_args?"]())&&blockopts["$<<"]("$$has_trailing_comma_in_args: true"),$eqeq(blockopts.$length(),1)?this.$push(", "+this.$arity()):$truthy($rb_gt(blockopts.$length(),1))&&this.$push(", {",blockopts.$join(", "),"}"),$truthy(this.define_nesting)&&this.$scope().$nesting(),$truthy(this.define_relative_access)?this.$scope().$relative_access():nil}),0),$def(self,"$compile_block_arg",(function(){return $truthy(this.$block_arg())?this.$scope().$prepare_block():nil}),0),$def(self,"$extract_underscore_args",(function(){var valid_args=nil,caught_blank_argument=nil;return valid_args=[],caught_blank_argument=!1,$send(this.$args().$children(),"each",[],(function(arg){var arg_name;return null==arg&&(arg=nil),arg_name=arg.$children().$first(),$eqeq(arg_name,"_")?$truthy(caught_blank_argument)?nil:(caught_blank_argument=!0,valid_args["$<<"](arg)):valid_args["$<<"](arg)}),1),this.sexp=this.sexp.$updated(nil,[this.$args().$updated(nil,valid_args),this.$body()])}),0),$def(self,"$returned_body",(function(){var $ret_or_1;return this.$compiler().$returns($truthy($ret_or_1=this.$body())?$ret_or_1:this.$s("nil"))}),0),$def(self,"$has_top_level_mlhs_arg?",(function(){return $send(this.$original_args().$children(),"any?",[],(function(arg){return null==arg&&(arg=nil),arg.$type()["$=="]("mlhs")}),1)}),0),$def(self,"$has_trailing_comma_in_args?",(function(){return $truthy(this.$original_args().$loc())&&$truthy(this.$original_args().$loc().$expression())?this.$original_args().$loc().$expression().$source().$match(/,\s*\|/):nil}),0),$def(self,"$arity_check_node",(function(){return this.$s("iter_arity_check",this.$original_args())}),0),$def(self,"$contains_break?",(function(){var finder=nil;return(finder=$$$($$$($$("Opal"),"Rewriters"),"BreakFinder").$new()).$process(this.sexp),finder["$found_break?"]()}),0)}($nesting[0],$$("NodeWithArgs"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/def"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$def=Opal.def,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,handle,children,in_scope,mid,mid=,scope,-,==,type,defs=,identify!,identity,block_name=,process,inline_args,stmt,returns,compiler,stmts,compile_block_arg,add_temp,compile_arity_check,unshift,current_indent,to_vars,line,catch_return,push,await_encountered,<<,arity,arity_check?,parameters_code,parse_comments?,comments_code,enable_source_location?,source_location,length,>,join,wrap_with_definition,nesting,relative_access,helper,wrap,self,expr?,+,map,comments,inspect,text"),self.$require("opal/nodes/node_with_args"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DefNode"),$proto=self.$$prototype;return $proto.define_nesting=$proto.define_relative_access=nil,self.$handle("def"),self.$children("mid","inline_args","stmts"),$def(self,"$compile",(function(){var inline_params=nil,scope_name=nil,blockopts=nil;return inline_params=nil,scope_name=nil,$send(this,"in_scope",[],(function $$1(){var stmt_code,self=null==$$1.$$s?this:$$1.$$s,$writer=nil;return null==self.sexp&&(self.sexp=nil),null==self.define_self&&(self.define_self=nil),$writer=[self.$mid()],$send(self.$scope(),"mid=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$eqeq(self.sexp.$type(),"defs")&&($writer=[!0],$send(self.$scope(),"defs=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),self.$scope()["$identify!"](),scope_name=self.$scope().$identity(),$writer=["$yield"],$send(self.$scope(),"block_name=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],inline_params=self.$process(self.$inline_args()),stmt_code=self.$stmt(self.$compiler().$returns(self.$stmts())),self.$compile_block_arg(),$truthy(self.define_self)&&self.$add_temp("self = this"),self.$compile_arity_check(),self.$unshift("\n"+self.$current_indent(),self.$scope().$to_vars()),self.$line(stmt_code),$truthy(self.$scope().$catch_return())?(self.$unshift("try {\n"),self.$line("} catch ($returner) { if ($returner === Opal.returner) { return $returner.$v }"),self.$push(" throw $returner; }")):nil}),{$$arity:0,$$s:this}),this.$unshift(") {"),this.$unshift(inline_params),this.$unshift("function "+scope_name+"("),$truthy(this.$await_encountered())&&this.$unshift("async "),this.$line("}"),(blockopts=[])["$<<"]("$$arity: "+this.$arity()),$truthy(this.$compiler()["$arity_check?"]())&&blockopts["$<<"]("$$parameters: "+this.$parameters_code()),$truthy(this.$compiler()["$parse_comments?"]())&&blockopts["$<<"]("$$comments: "+this.$comments_code()),$truthy(this.$compiler()["$enable_source_location?"]())&&blockopts["$<<"]("$$source_location: "+this.$source_location()),$eqeq(blockopts.$length(),1)?this.$push(", "+this.$arity()):$truthy($rb_gt(blockopts.$length(),1))&&this.$push(", {",blockopts.$join(", "),"}"),this.$wrap_with_definition(),$truthy(this.define_nesting)&&this.$scope().$nesting(),$truthy(this.define_relative_access)?this.$scope().$relative_access():nil}),0),$def(self,"$wrap_with_definition",(function(){return this.$helper("def"),this.$wrap("$def("+this.$scope().$self()+", '$"+this.$mid()+"', ",")"),$truthy(this["$expr?"]())?nil:this.$unshift("\n"+this.$current_indent())}),0),$def(self,"$comments_code",(function(){return $rb_plus($rb_plus("[",$send(this.$comments(),"map",[],(function(comment){return null==comment&&(comment=nil),comment.$text().$inspect()}),1).$join(", ")),"]")}),0)}($nesting[0],$$("NodeWithArgs"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/defs"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$def=Opal.def;return Opal.add_stubs("require,handle,children,helper,unshift,expr,recvr,mid,push"),self.$require("opal/nodes/def"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DefsNode");return self.$handle("defs"),self.$children("recvr","mid","inline_args","stmts"),$def(self,"$wrap_with_definition",(function(){return this.$helper("defs"),this.$unshift("$defs(",this.$expr(this.$recvr()),", '$"+this.$mid()+"', "),this.$push(")")}),0)}($nesting[0],$$("DefNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/if"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$def=Opal.def,$not=Opal.not,$send=Opal.send,$eqeqeq=Opal.eqeqeq;return Opal.add_stubs("require,handle,children,should_compile_as_simple_expression?,==,true_body,s,compile_with_binary_or,false_body,compile_with_binary_and,compile_with_ternary,compile_with_if,truthy,falsy,!,push,js_truthy,test,indent,line,stmt,type,expects_expression?,await_encountered,scope,wrap,returnify,returns,compiler,expr?,recv?,simple?,expr,[],meta,sexp,===,single_line?,strip_empty_children,all?,helper,new_temp,top_scope,excl,from,to"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"IfNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$handle("if"),self.$children("test","true_body","false_body"),$def(self,"$compile",(function(){return $truthy(this["$should_compile_as_simple_expression?"]())?$eqeq(this.$true_body(),this.$s("true"))?this.$compile_with_binary_or():$eqeq(this.$false_body(),this.$s("false"))?this.$compile_with_binary_and():this.$compile_with_ternary():this.$compile_with_if()}),0),$def(self,"$compile_with_if",(function(){var $a,truthy=nil,falsy=nil;return truthy=this.$truthy(),falsy=this.$falsy(),$truthy(falsy)&&$not(truthy)?(this.$push("if (!",this.$js_truthy(this.$test()),") {"),falsy=($a=[truthy,falsy])[0],truthy=$a[1]):this.$push("if (",this.$js_truthy(this.$test()),") {"),$truthy(truthy)&&$send(this,"indent",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return self.$line(self.$stmt(truthy))}),{$$arity:0,$$s:this}),$truthy(falsy)?$eqeq(falsy.$type(),"if")?this.$line("} else ",this.$stmt(falsy)):(this.$line("} else {"),$send(this,"indent",[],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;return self.$line(self.$stmt(falsy))}),{$$arity:0,$$s:this}),this.$line("}")):(this.$line("}"),$truthy(this["$expects_expression?"]())&&this.$line("return nil;")),$truthy(this["$expects_expression?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() {","})())"):this.$wrap("(function() {","})()"):nil}),0),$def(self,"$truthy",(function(){return this.$returnify(this.$true_body())}),0),$def(self,"$falsy",(function(){return this.$returnify(this.$false_body())}),0),$def(self,"$returnify",(function(body){return $truthy(this["$expects_expression?"]())&&$truthy(body)?this.$compiler().$returns(body):body}),1),$def(self,"$expects_expression?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$expr?"]())?$ret_or_1:this["$recv?"]()}),0),$def(self,"$should_compile_as_simple_expression?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this["$expects_expression?"]())?this["$simple?"](this.$true_body()):$ret_or_2)?this["$simple?"](this.$false_body()):$ret_or_1}),0),$def(self,"$compile_with_ternary",(function(){var truthy,falsy=nil,$ret_or_1=nil;return truthy=this.$true_body(),falsy=this.$false_body(),this.$push("("),this.$push(this.$js_truthy(this.$test())," ? "),this.$push("(",this.$expr($truthy($ret_or_1=truthy)?$ret_or_1:this.$s("nil")),") : "),$not(falsy)||$eqeq(falsy.$type(),"if")?this.$push(this.$expr($truthy($ret_or_1=falsy)?$ret_or_1:this.$s("nil"))):this.$push("(",this.$expr($truthy($ret_or_1=falsy)?$ret_or_1:this.$s("nil")),")"),this.$push(")")}),0),$def(self,"$compile_with_binary_and",(function(){var truthy=nil,$ret_or_1=nil;return truthy=$truthy(this.$sexp().$meta()["$[]"]("do_js_truthy_on_true_body"))?this.$js_truthy($truthy($ret_or_1=this.$true_body())?$ret_or_1:this.$s("nil")):this.$expr($truthy($ret_or_1=this.$true_body())?$ret_or_1:this.$s("nil")),this.$push("("),this.$push(this.$js_truthy(this.$test())," && "),this.$push("(",truthy,")"),this.$push(")")}),0),$def(self,"$compile_with_binary_or",(function(){var falsy=nil,$ret_or_1=nil;return falsy=$truthy(this.$sexp().$meta()["$[]"]("do_js_truthy_on_false_body"))?this.$js_truthy($truthy($ret_or_1=this.$false_body())?$ret_or_1:this.$s("nil")):this.$expr($truthy($ret_or_1=this.$false_body())?$ret_or_1:this.$s("nil")),this.$push("("),this.$push(this.$js_truthy(this.$test())," || "),this.$push("(",falsy,")"),this.$push(")")}),0),$def(self,"$simple?",(function(body){var $ret_or_2=nil;return!$eqeqeq($$$($$("AST"),"Node"),body)||!($eqeqeq("return",$ret_or_2=body.$type())||$eqeqeq("js_return",$ret_or_2)||$eqeqeq("break",$ret_or_2)||$eqeqeq("next",$ret_or_2)||$eqeqeq("redo",$ret_or_2)||$eqeqeq("retry",$ret_or_2))&&($eqeqeq("xstr",$ret_or_2)?$$("XStringNode")["$single_line?"]($$("XStringNode").$strip_empty_children(body.$children())):$send(body.$children(),"all?",[],(function $$6(i){return null==i&&(i=nil),(null==$$6.$$s?this:$$6.$$s)["$simple?"](i)}),{$$arity:1,$$s:this}))}),1)}($nesting[0],$$("Base"),$nesting),function($base,$super){var self=$klass($base,$super,"IFlipFlop");self.$handle("iflipflop"),self.$children("from","to"),$def(self,"$excl",(function(){return""}),0),$def(self,"$compile",(function(){var fun_name,ff;return this.$helper("truthy"),ff=(fun_name=this.$top_scope().$new_temp())+".$$ff",this.$push("(typeof "+fun_name+" === 'undefined' ? ("+fun_name+" = function(from, to){"),this.$push(" if (typeof "+ff+" === 'undefined') "+ff+" = false;"),this.$push(" var retval = "+ff+";"),this.$push(" if (!"+ff+") {"),this.$push(" "+ff+" = retval = $truthy(from());"),this.$push(" }"),this.$push(" "+this.$excl()+"if ("+ff+") {"),this.$push(" if ($truthy(to())) "+ff+" = false;"),this.$push(" }"),this.$push(" return retval;"),this.$push("}) : "+fun_name+")("),this.$push(" function() { ",this.$stmt(this.$compiler().$returns(this.$from()))," },"),this.$push(" function() { ",this.$stmt(this.$compiler().$returns(this.$to()))," }"),this.$push(")")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"EFlipFlop");return self.$handle("eflipflop"),$def(self,"$excl",(function(){return"else "}),0)}($nesting[0],$$("IFlipFlop"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/logic"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt,$not=Opal.not;return Opal.add_stubs("require,handle,in_while?,push,iter?,scope,expr_or_nil,value,error,===,size,children,s,first,compile_while,compile_iter,[],while_loop,stmt?,line,break_val,nil?,expr,[]=,-,helper,identity,==,empty_splat?,recv,>,find_parent_def,!,lambda?,def?,expr?,return_in_iter?,return_expr_in_def?,scope_to_catch_return,catch_return=,return_val,to_s"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"NextNode");self.$handle("next"),$def(self,"$compile",(function(){return $truthy(this["$in_while?"]())?this.$push("continue;"):$truthy(this.$scope()["$iter?"]())?this.$push("return ",this.$expr_or_nil(this.$value()),";"):this.$error("Invalid next")}),0),$def(self,"$value",(function(){var $ret_or_1;return $eqeqeq(0,$ret_or_1=this.$children().$size())?this.$s("nil"):$eqeqeq(1,$ret_or_1)?this.$children().$first():$send(this,"s",["array"].concat($to_a(this.$children())))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"BreakNode");self.$handle("break"),self.$children("value"),$def(self,"$compile",(function(){return $truthy(this["$in_while?"]())?this.$compile_while():$truthy(this.$scope()["$iter?"]())?this.$compile_iter():this.$error("void value expression: cannot use break outside of iter/while")}),0),$def(self,"$compile_while",(function(){return $truthy(this.$while_loop()["$[]"]("closure"))?this.$push("return ",this.$expr_or_nil(this.$value())):this.$push("break;")}),0),$def(self,"$compile_iter",(function(){return $truthy(this["$stmt?"]())||this.$error("break must be used as a statement"),this.$line("Opal.brk(",this.$break_val(),", $brk)")}),0),$def(self,"$break_val",(function(){return $truthy(this.$value()["$nil?"]())?this.$expr(this.$s("nil")):this.$expr(this.$value())}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"RedoNode");self.$handle("redo"),$def(self,"$compile",(function(){return $truthy(this["$in_while?"]())?this.$compile_while():$truthy(this.$scope()["$iter?"]())?this.$compile_iter():this.$push("REDO()")}),0),$def(self,"$compile_while",(function(){var $writer;return $writer=["use_redo",!0],$send(this.$while_loop(),"[]=",$to_a($writer)),$rb_minus($writer.length,1),this.$push(this.$while_loop()["$[]"]("redo_var")+" = true; continue;")}),0),$def(self,"$compile_iter",(function(){return this.$helper("slice"),this.$push("return "+this.$scope().$identity()+".apply(null, $slice.call(arguments))")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"SplatNode");self.$handle("splat"),self.$children("value"),$def(self,"$empty_splat?",(function(){return this.$value()["$=="](this.$s("array"))}),0),$def(self,"$compile",(function(){return $truthy(this["$empty_splat?"]())?this.$push("[]"):(this.$helper("to_a"),this.$push("$to_a(",this.$recv(this.$value()),")"))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ReturnNode");self.$handle("return"),self.$children("value"),$def(self,"$return_val",(function(){return $truthy(this.$value()["$nil?"]())?this.$expr(this.$s("nil")):$truthy($rb_gt(this.$children().$size(),1))?this.$expr($send(this,"s",["array"].concat($to_a(this.$children())))):this.$expr(this.$value())}),0),$def(self,"$return_in_iter?",(function(){var parent_def=nil;return $truthy(this.$scope()["$iter?"]())&&$not(this.$scope()["$lambda?"]())&&$truthy(parent_def=this.$scope().$find_parent_def())?parent_def:nil}),0),$def(self,"$return_expr_in_def?",(function(){return $truthy(this["$expr?"]())&&($truthy(this.$scope()["$def?"]())||$truthy(this.$scope()["$lambda?"]()))?this.$scope():nil}),0),$def(self,"$scope_to_catch_return",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$return_in_iter?"]())?$ret_or_1:this["$return_expr_in_def?"]()}),0),$def(self,"$compile",(function(){var def_scope,$writer=nil;return $truthy(def_scope=this.$scope_to_catch_return())?($send(def_scope,"catch_return=",$to_a($writer=[!0])),$writer[$rb_minus($writer.length,1)],this.$push("Opal.ret(",this.$return_val(),")")):$truthy(this["$stmt?"]())?this.$push("return ",this.$return_val()):this.$error("void value expression: cannot return as an expression")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JSReturnNode");self.$handle("js_return"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("return "),this.$push(this.$expr(this.$value()))}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"JSTempNode");self.$handle("js_tmp"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$value().$to_s())}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"BlockPassNode");return self.$handle("block_pass"),self.$children("value"),$def(self,"$compile",(function(){return this.$push(this.$expr(this.$s("send",this.$value(),"to_proc",this.$s("arglist"))))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/definitions"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$range=Opal.range,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$eqeq=Opal.eqeq,$to_a=Opal.to_a,$slice=Opal.slice,$rb_plus=Opal.rb_plus,$hash2=Opal.hash2,$const_set=Opal.const_set;return Opal.add_stubs("require,handle,children,each,line,self,scope,expr,===,type,new_name,helper,inspect,[],to_s,first,old_name,push,error,empty?,stmt?,compile_children,simple_children?,compile_inline_children,>,size,wrap,==,returned_children,await_encountered,parent,+,returns,compiler,s,process,fragment,freeze,none?,include?,map,each_with_index,reject,to_proc"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"UndefNode");self.$handle("undef"),self.$children("value"),$def(self,"$compile",(function(){return $send(this.$children(),"each",[],(function $$1(child){var self=null==$$1.$$s?this:$$1.$$s;return null==child&&(child=nil),self.$line("Opal.udef("+self.$scope().$self()+", '$' + ",self.$expr(child),");")}),{$$arity:1,$$s:this})}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"AliasNode");self.$handle("alias"),self.$children("new_name","old_name"),$def(self,"$compile",(function(){var $ret_or_1,new_name_str=nil,old_name_str=nil;return $eqeqeq("gvar",$ret_or_1=this.$new_name().$type())?(this.$helper("alias_gvar"),new_name_str=this.$new_name().$children().$first().$to_s()["$[]"]($range(1,-1,!1)).$inspect(),old_name_str=this.$old_name().$children().$first().$to_s()["$[]"]($range(1,-1,!1)).$inspect(),this.$push("$alias_gvar(",new_name_str,", ",old_name_str,")")):$eqeqeq("dsym",$ret_or_1)||$eqeqeq("sym",$ret_or_1)?(this.$helper("alias"),this.$push("$alias("+this.$scope().$self()+", ",this.$expr(this.$new_name()),", ",this.$expr(this.$old_name()),")")):this.$error("Opal doesn't know yet how to alias with "+this.$new_name().$type())}),0)}($nesting[0],$$("Base")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"BeginNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.level=$proto.returned_children=nil,self.$handle("begin"),$def(self,"$compile",(function(){return $truthy(this.$children()["$empty?"]())?this.$push("nil"):$truthy(this["$stmt?"]())?this.$compile_children(this.$children(),this.level):$truthy(this["$simple_children?"]())?(this.$compile_inline_children(this.$children(),this.level),$truthy($rb_gt(this.$children().$size(),1))?this.$wrap("(",")"):nil):$eqeq(this.$children().$size(),1)?this.$compile_inline_children(this.$returned_children(),this.level):(this.$compile_children(this.$returned_children(),this.level),$truthy(this.$scope().$parent().$await_encountered())?this.$wrap("(await (async function() {","})())"):this.$wrap("(function() {","})()"))}),0),$def(self,"$returned_children",(function(){var $a,$b,$ret_or_1,rest=nil,last_child=nil;return this.returned_children=$truthy($ret_or_1=this.returned_children)?$ret_or_1:($b=($b=($a=[].concat($to_a(this.$children()))).length-1)<0?0:$b,rest=$slice.call($a,0,$b),last_child=null==$a[$b]?nil:$a[$b],$truthy(last_child)?$rb_plus(rest,[this.$compiler().$returns(last_child)]):[this.$s("nil")])}),0),$def(self,"$compile_children",(function(children,level){return $send(children,"each",[],(function $$2(child){var self=null==$$2.$$s?this:$$2.$$s;return null==child&&(child=nil),self.$line(self.$process(child,level),self.$fragment(";",$hash2(["loc"],{loc:!1})))}),{$$arity:1,$$s:this})}),2),$const_set($nesting[0],"COMPLEX_CHILDREN",["while","while_post","until","until_post","js_return"].$freeze()),$def(self,"$simple_children?",(function(){return $send(this.$children(),"none?",[],(function(child){return null==child&&(child=nil),$$("COMPLEX_CHILDREN")["$include?"](child.$type())}),1)}),0),$def(self,"$compile_inline_children",(function(children,level){var processed_children;return processed_children=$send(children,"map",[],(function $$5(child){return null==child&&(child=nil),(null==$$5.$$s?this:$$5.$$s).$process(child,level)}),{$$arity:1,$$s:this}),$send($send(processed_children,"reject",[],"empty?".$to_proc()),"each_with_index",[],(function $$6(child,idx){var self=null==$$6.$$s?this:$$6.$$s;return null==child&&(child=nil),null==idx&&(idx=nil),$eqeq(idx,0)||self.$push(self.$fragment(", ",$hash2(["loc"],{loc:!1}))),self.$push(child)}),{$$arity:2,$$s:this})}),2)}($nesting[0],$$("ScopeNode"),$nesting),function($base,$super){return $klass($base,$super,"KwBeginNode").$handle("kwbegin")}($nesting[0],$$("BeginNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/yield"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def;return Opal.add_stubs("require,find_yielding_scope,uses_block!,block_name,block_name=,-,yields_single_arg?,children,push,expr,first,wrap,s,uses_splat?,scope,def?,parent,!,==,size,any?,type,handle,compile_call"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BaseYieldNode");$def(self,"$compile_call",(function(){var block_name,yielding_scope=nil,$writer=nil;return(yielding_scope=this.$find_yielding_scope())["$uses_block!"](),$truthy(yielding_scope.$block_name())||($send(yielding_scope,"block_name=",$to_a($writer=["$yield"])),$writer[$rb_minus($writer.length,1)]),block_name=yielding_scope.$block_name(),$truthy(this["$yields_single_arg?"](this.$children()))?(this.$push(this.$expr(this.$children().$first())),this.$wrap("Opal.yield1("+block_name+", ",")")):(this.$push(this.$expr($send(this,"s",["arglist"].concat($to_a(this.$children()))))),$truthy(this["$uses_splat?"](this.$children()))?this.$wrap("Opal.yieldX("+block_name+", ",")"):this.$wrap("Opal.yieldX("+block_name+", [","])"))}),0),$def(self,"$find_yielding_scope",(function(){var working=nil;for(working=this.$scope();$truthy(working)&&!$truthy(working.$block_name())&&!$truthy(working["$def?"]());)working=working.$parent();return working}),0),$def(self,"$yields_single_arg?",(function(children){var $ret_or_1;return $truthy($ret_or_1=this["$uses_splat?"](children)["$!"]())?children.$size()["$=="](1):$ret_or_1}),1),$def(self,"$uses_splat?",(function(children){return $send(children,"any?",[],(function(child){return null==child&&(child=nil),child.$type()["$=="]("splat")}),1)}),1)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"YieldNode");self.$handle("yield"),$def(self,"$compile",(function(){return this.$compile_call()}),0)}($nesting[0],$$("BaseYieldNode")),function($base,$super){var self=$klass($base,$super,"ReturnableYieldNode");return self.$handle("returnable_yield"),$def(self,"$compile",(function(){return this.$compile_call(),this.$wrap("return ",";")}),0)}($nesting[0],$$("BaseYieldNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/rescue"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$def=Opal.def,$range=Opal.range,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq;return Opal.add_stubs("require,handle,children,push,in_ensure,line,stmt,body_sexp,indent,has_rescue_else?,unshift,rescue_else_code,process,compiler,ensr_sexp,wrap_in_closure?,await_encountered,scope,wrap,returns,begn,ensr,s,recv?,expr?,rescue_else_sexp,stmt?,detect,[],!=,type,rescue_else_sexp=,-,handle_rescue_else_manually?,in_rescue,body_code,each_with_index,==,retry_id,body,nil?,!,in_ensure?,gen_retry_id,attr_reader,expr,klasses,lvar,updated,in_resbody,rescue_body,klasses_sexp,in_resbody?,error,current_rescue"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"EnsureNode");self.$handle("ensure"),self.$children("begn","ensr"),$def(self,"$compile",(function(){return this.$push("try {"),$send(this,"in_ensure",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return self.$line(self.$stmt(self.$body_sexp()))}),{$$arity:0,$$s:this}),this.$line("} finally {"),$send(this,"indent",[],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;return null==self.level&&(self.level=nil),$truthy(self["$has_rescue_else?"]())?(self.$unshift("var $no_errors = true; "),self.$line("var $rescue_else_result;"),self.$line("if ($no_errors) { "),$send(self,"indent",[],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return self.$line("$rescue_else_result = (function() {"),$send(self,"indent",[],(function $$4(){var self=null==$$4.$$s?this:$$4.$$s;return self.$line(self.$stmt(self.$rescue_else_code()))}),{$$arity:0,$$s:self}),self.$line("})();")}),{$$arity:0,$$s:self}),self.$line("}"),self.$line(self.$compiler().$process(self.$ensr_sexp(),self.level)),self.$line("if ($no_errors) { return $rescue_else_result; }")):self.$line(self.$compiler().$process(self.$ensr_sexp(),self.level))}),{$$arity:0,$$s:this}),this.$line("}"),$truthy(this["$wrap_in_closure?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() { ","; })())"):this.$wrap("(function() { ","; })()"):nil}),0),$def(self,"$body_sexp",(function(){return $truthy(this["$wrap_in_closure?"]())?this.$compiler().$returns(this.$begn()):this.$begn()}),0),$def(self,"$ensr_sexp",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$ensr())?$ret_or_1:this.$s("nil")}),0),$def(self,"$wrap_in_closure?",(function(){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=this["$recv?"]())?$ret_or_2:this["$expr?"]())?$ret_or_1:this["$has_rescue_else?"]()}),0),$def(self,"$rescue_else_code",(function(){var rescue_else_code=nil;return rescue_else_code=this.$scope().$rescue_else_sexp(),$truthy(this["$stmt?"]())||(rescue_else_code=this.$compiler().$returns(rescue_else_code)),rescue_else_code}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"RescueNode");self.$$prototype.retry_id=nil,self.$handle("rescue"),self.$children("body"),$def(self,"$compile",(function(){var $writer;return $writer=[$send(this.$children()["$[]"]($range(1,-1,!1)),"detect",[],(function(sexp){var $ret_or_1;return null==sexp&&(sexp=nil),$truthy($ret_or_1=sexp)?sexp.$type()["$!="]("resbody"):$ret_or_1}),1)],$send(this.$scope(),"rescue_else_sexp=",$to_a($writer)),$rb_minus($writer.length,1),!1,$truthy(this["$handle_rescue_else_manually?"]())&&this.$line("var $no_errors = true;"),$send(this,"in_rescue",[this],(function $$7(){var self=null==$$7.$$s?this:$$7.$$s;return self.$push("try {"),$send(self,"indent",[],(function $$8(){var self=null==$$8.$$s?this:$$8.$$s;return self.$line(self.$stmt(self.$body_code()))}),{$$arity:0,$$s:self}),self.$line("} catch ($err) {"),$send(self,"indent",[],(function $$9(){var self=null==$$9.$$s?this:$$9.$$s;return $truthy(self["$has_rescue_else?"]())&&self.$line("$no_errors = false;"),$send(self.$children()["$[]"]($range(1,-1,!1)),"each_with_index",[],(function $$10(child,idx){var self=null==$$10.$$s?this:$$10.$$s;return null==self.level&&(self.level=nil),null==child&&(child=nil),null==idx&&(idx=nil),$truthy(child)&&$eqeq(child.$type(),"resbody")?(!0,$eqeq(idx,0)||self.$push(" else "),self.$line(self.$process(child,self.level))):nil}),{$$arity:2,$$s:self}),self.$push(" else { throw $err; }")}),{$$arity:0,$$s:self}),self.$line("}"),$truthy(self["$handle_rescue_else_manually?"]())&&(self.$push("finally {"),$send(self,"indent",[],(function $$11(){var self=null==$$11.$$s?this:$$11.$$s;return self.$line("if ($no_errors) { "),$send(self,"indent",[],(function $$12(){var self=null==$$12.$$s?this:$$12.$$s;return self.$line(self.$stmt(self.$rescue_else_code()))}),{$$arity:0,$$s:self}),self.$line("}")}),{$$arity:0,$$s:self}),self.$push("}")),$truthy(self.$retry_id())?self.$wrap(self.$retry_id()+": do { "," break; } while(1)"):nil}),{$$arity:0,$$s:this}),$truthy(this["$expr?"]())||$truthy(this["$recv?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() { ","})())"):this.$wrap("(function() { ","})()"):nil}),0),$def(self,"$body_code",(function(){var body_code=nil;return body_code=$truthy(this.$body()["$nil?"]())||$eqeq(this.$body().$type(),"resbody")?this.$s("nil"):this.$body(),$truthy(this["$stmt?"]())||(body_code=this.$compiler().$returns(body_code)),body_code}),0),$def(self,"$rescue_else_code",(function(){var rescue_else_code=nil;return rescue_else_code=this.$scope().$rescue_else_sexp(),$truthy(this["$stmt?"]())||(rescue_else_code=this.$compiler().$returns(rescue_else_code)),rescue_else_code}),0),$def(self,"$handle_rescue_else_manually?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$in_ensure?"]()["$!"]())?this["$has_rescue_else?"]():$ret_or_1}),0),$def(self,"$gen_retry_id",(function(){var $ret_or_1;return this.retry_id=$truthy($ret_or_1=this.retry_id)?$ret_or_1:this.$scope().$gen_retry_id()}),0),self.$attr_reader("retry_id")}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"ResBodyNode");self.$handle("resbody"),self.$children("klasses_sexp","lvar","body"),$def(self,"$compile",(function(){return this.$push("if (Opal.rescue($err, ",this.$expr(this.$klasses()),")) {"),$send(this,"indent",[],(function $$14(){var self=null==$$14.$$s?this:$$14.$$s;return $truthy(self.$lvar())&&self.$push(self.$expr(self.$lvar().$updated(nil,[].concat($to_a(self.$lvar().$children())).concat([self.$s("js_tmp","$err")])))),self.$line("try {"),$send(self,"indent",[],(function $$15(){var self=null==$$15.$$s?this:$$15.$$s;return $send(self,"in_resbody",[],(function $$16(){var self=null==$$16.$$s?this:$$16.$$s;return self.$line(self.$stmt(self.$rescue_body()))}),{$$arity:0,$$s:self})}),{$$arity:0,$$s:self}),self.$line("} finally { Opal.pop_exception(); }")}),{$$arity:0,$$s:this}),this.$line("}")}),0),$def(self,"$klasses",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$klasses_sexp())?$ret_or_1:this.$s("array",this.$s("const",nil,"StandardError"))}),0),$def(self,"$rescue_body",(function(){var $ret_or_1,body_code=nil;return body_code=$truthy($ret_or_1=this.$body())?$ret_or_1:this.$s("nil"),$truthy(this["$stmt?"]())||(body_code=this.$compiler().$returns(body_code)),body_code}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"RetryNode");return self.$handle("retry"),$def(self,"$compile",(function(){return $truthy(this["$in_resbody?"]())||this.$error("Invalid retry"),this.$push("continue "+this.$scope().$current_rescue().$gen_retry_id())}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/super"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$slice=Opal.slice,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def,$to_ary=Opal.to_ary,$eqeq=Opal.eqeq,$not=Opal.not,$eqeqeq=Opal.eqeqeq,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$rb_gt=Opal.rb_gt;return Opal.add_stubs("require,include?,type,s,helper,push,compile_receiver,compile_method_body,compile_method_name,compile_arguments,compile_block_pass,private,def?,scope,find_parent_def,to_s,mid,def_scope,identify!,self,method_id,def_scope_identity,defined_check_param,allow_stubs,super_chain,join,map,implicit_arguments_param,super_method_invocation,iter?,super_block_invocation,raise,handle,wrap,uses_block!,compile_using_send,==,iter,block_name,implicit_arglist,!,<<,new,each,children,original_args,[],===,+,[]=,-,>,meta,empty?"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"BaseSuperNode"),$proto=self.$$prototype;$proto.sexp=$proto.def_scope=nil,$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$b,$c,$yield=$$initialize.$$p||nil,self=this,args=nil,rest=nil,last_child=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),args=[].concat($to_a(self.sexp)),$c=($c=($b=[].concat($to_a(args))).length-1)<0?0:$c,rest=$slice.call($b,0,$c),last_child=null==$b[$c]?nil:$b[$c],$truthy(last_child)&&$truthy(["iter","block_pass"]["$include?"](last_child.$type()))?(self.iter=last_child,args=rest):self.iter=self.$s("js_tmp","null"),self.arglist=$send(self,"s",["arglist"].concat($to_a(args))),self.recvr=self.$s("self")}),-1),$def(self,"$compile_using_send",(function(){return this.$helper("send2"),this.$push("$send2("),this.$compile_receiver(),this.$compile_method_body(),this.$compile_method_name(),this.$compile_arguments(),this.$compile_block_pass(),this.$push(")")}),0),self.$private(),$def(self,"$def_scope",(function(){var $ret_or_1;return this.def_scope=$truthy($ret_or_1=this.def_scope)?$ret_or_1:$truthy(this.$scope()["$def?"]())?this.$scope():this.$scope().$find_parent_def()}),0),$def(self,"$defined_check_param",(function(){return"false"}),0),$def(self,"$implicit_arguments_param",(function(){return"false"}),0),$def(self,"$method_id",(function(){return this.$def_scope().$mid().$to_s()}),0),$def(self,"$def_scope_identity",(function(){return this.$def_scope()["$identify!"](this.$def_scope().$mid())}),0),$def(self,"$allow_stubs",(function(){return"true"}),0),$def(self,"$super_method_invocation",(function(){return this.$helper("find_super"),"$find_super("+this.$scope().$self()+", '"+this.$method_id()+"', "+this.$def_scope_identity()+", "+this.$defined_check_param()+", "+this.$allow_stubs()+")"}),0),$def(self,"$super_block_invocation",(function(){var $a,$b,chain,cur_defn,mid,trys;return this.$helper("find_block_super"),$b=this.$scope().$super_chain(),chain=null==($a=$to_ary($b))[0]?nil:$a[0],cur_defn=null==$a[1]?nil:$a[1],mid=null==$a[2]?nil:$a[2],trys=$send(chain,"map",[],(function(c){return null==c&&(c=nil),c+".$$def"}),1).$join(" || "),"$find_block_super("+this.$scope().$self()+", "+mid+", ("+trys+" || "+cur_defn+"), "+this.$defined_check_param()+", "+this.$implicit_arguments_param()+")"}),0),$def(self,"$compile_method_body",(function(){return this.$push(", "),$truthy(this.$scope()["$def?"]())?this.$push(this.$super_method_invocation()):$truthy(this.$scope()["$iter?"]())?this.$push(this.$super_block_invocation()):this.$raise("super must be called from method body or block")}),0),$def(self,"$compile_method_name",(function(){var $a,$b,mid=nil;return $truthy(this.$scope()["$def?"]())?this.$push(", '"+this.$method_id()+"'"):$truthy(this.$scope()["$iter?"]())?($b=this.$scope().$super_chain(),null==($a=$to_ary($b))[0]?nil:$a[0],null==$a[1]?nil:$a[1],mid=null==$a[2]?nil:$a[2],this.$push(", "+mid)):nil}),0)}($nesting[0],$$("CallNode")),function($base,$super){var self=$klass($base,$super,"DefinedSuperNode");self.$handle("defined_super"),$def(self,"$allow_stubs",(function(){return"false"}),0),$def(self,"$defined_check_param",(function(){return"true"}),0),$def(self,"$compile",(function(){return this.$compile_receiver(),this.$compile_method_body(),this.$wrap("((",') != null ? "super" : nil)')}),0)}($nesting[0],$$("BaseSuperNode")),function($base,$super){var self=$klass($base,$super,"SuperNode");self.$handle("super"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$truthy(self.$scope()["$def?"]())?self.$scope()["$uses_block!"]():nil}),-1),$def(self,"$compile",(function(){return this.$compile_using_send()}),0)}($nesting[0],$$("BaseSuperNode")),function($base,$super,$parent_nesting){var self=$klass($base,$super,"ZsuperNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$handle("zsuper"),$def(self,"$implicit_arguments_param",(function(){return"true"}),0),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this,$ret_or_1=nil;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),$eqeq(self.$iter().$type(),"iter")?nil:(self.$scope()["$uses_block!"](),self.iter=self.$s("js_tmp",$truthy($ret_or_1=self.$scope().$block_name())?$ret_or_1:"$yield"))}),-1),$def(self,"$compile",(function(){var implicit_args=nil,block_pass=nil;return $truthy(this.$def_scope())&&(implicit_args=this.$implicit_arglist(),$truthy(this.$block_name())&&$not(this.$iter())&&(block_pass=this.$s("block_pass",this.$s("lvar",this.$block_name())),implicit_args["$<<"](block_pass)),this.arglist=$send(this,"s",["arglist"].concat($to_a(implicit_args)))),this.$compile_using_send()}),0),$def(self,"$implicit_arglist",(function(){var args=nil,kwargs=nil,same_arg_counter=nil;return args=[],kwargs=[],same_arg_counter=$$("Hash").$new(0),$send(this.$def_scope().$original_args().$children(),"each",[],(function $$2(sexp){var $ret_or_1,self=null==$$2.$$s?this:$$2.$$s,lvar_name=nil,arg_node=nil,$writer=nil,key_name=nil;return null==sexp&&(sexp=nil),lvar_name=sexp.$children()["$[]"](0),$eqeqeq("arg",$ret_or_1=sexp.$type())||$eqeqeq("optarg",$ret_or_1)?(arg_node=self.$s("lvar",lvar_name),$eqeq(lvar_name["$[]"](0),"_")&&($writer=[lvar_name,$rb_plus(same_arg_counter["$[]"](lvar_name),1)],$send(same_arg_counter,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy($rb_gt(same_arg_counter["$[]"](lvar_name),1))&&(arg_node=self.$s("js_tmp",lvar_name+"_$"+same_arg_counter["$[]"](lvar_name)))),args["$<<"](arg_node)):$eqeqeq("restarg",$ret_or_1)?(arg_node=$truthy(lvar_name)?self.$s("lvar",lvar_name):self.$s("js_tmp","$rest_arg"),args["$<<"](self.$s("splat",arg_node))):$eqeqeq("kwarg",$ret_or_1)||$eqeqeq("kwoptarg",$ret_or_1)?(key_name=sexp.$meta()["$[]"]("arg_name"),kwargs["$<<"](self.$s("pair",self.$s("sym",key_name),self.$s("lvar",lvar_name)))):$eqeqeq("kwrestarg",$ret_or_1)?(arg_node=$truthy(lvar_name)?self.$s("lvar",lvar_name):self.$s("js_tmp","$kw_rest_arg"),kwargs["$<<"](self.$s("kwsplat",arg_node))):nil}),{$$arity:1,$$s:this}),$truthy(kwargs["$empty?"]())||args["$<<"]($send(this,"s",["hash"].concat($to_a(kwargs)))),args}),0),$def(self,"$block_name",(function(){var $ret_or_1;return $eqeqeq($$$($$$($$("Opal"),"Nodes"),"IterNode"),$ret_or_1=this.$def_scope())||$eqeqeq($$$($$$($$("Opal"),"Nodes"),"DefNode"),$ret_or_1)?this.$def_scope().$block_name():this.$raise("Don't know what to do with super in the scope "+this.$def_scope())}),0)}($nesting[0],$$("SuperNode"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/version"]=function(Opal){var $nesting=[],$module=(Opal.nil,Opal.module),$const_set=Opal.const_set;return function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return $const_set($nesting[0],"VERSION","1.4.1")}($nesting[0],$nesting)},Opal.modules["opal/nodes/top"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$def=Opal.def;return Opal.add_stubs("require,handle,children,top_scope=,compiler,-,push,version_comment,in_scope,==,body,s,line,use_strict?,stmt,stmts,is_a?,eval?,add_temp,add_used_helpers,to_vars,scope,compile_method_stubs,compile_irb_vars,compile_end_construct,opening,closing,await_encountered,requirable?,unshift,inspect,module_name,file,esm?,returns,irb?,each,to_a,helpers,method_missing?,method_calls,join,map,to_proc,empty?,eof_content"),self.$require("pathname"),self.$require("opal/version"),self.$require("opal/nodes/scope"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"TopNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$handle("top"),self.$children("body"),$def(self,"$compile",(function(){var $writer;return $writer=[this],$send(this.$compiler(),"top_scope=",$to_a($writer)),$rb_minus($writer.length,1),this.$push(this.$version_comment()),$send(this,"in_scope",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s,body_code=nil;return null==self.define_nesting&&(self.define_nesting=nil),null==self.define_self&&(self.define_self=nil),null==self.define_relative_access&&(self.define_relative_access=nil),null==self.define_absolute_const&&(self.define_absolute_const=nil),$eqeq(self.$body(),self.$s("nil"))?self.$line("return Opal.nil;"):($truthy(self.$compiler()["$use_strict?"]())&&self.$line('"use strict";'),body_code=self.$stmt(self.$stmts()),$truthy(body_code["$is_a?"]($$("Array")))||(body_code=[body_code]),$truthy(self.$compiler()["$eval?"]())?$truthy(self.define_nesting)&&self.$add_temp("$nesting = self.$$is_a_module ? [self] : [self.$$class]"):($truthy(self.define_self)&&self.$add_temp("self = Opal.top"),$truthy(self.define_nesting)&&self.$add_temp("$nesting = []")),$truthy(self.define_relative_access)&&self.$add_temp("$$ = Opal.$r($nesting)"),self.$add_temp("nil = Opal.nil"),$truthy(self.define_absolute_const)&&self.$add_temp("$$$ = Opal.$$$"),self.$add_used_helpers(),self.$line(self.$scope().$to_vars()),self.$compile_method_stubs(),self.$compile_irb_vars(),self.$compile_end_construct(),self.$line(body_code))}),{$$arity:0,$$s:this}),this.$opening(),this.$closing()}),0),$def(self,"$opening",(function(){var async_prefix=nil;return $truthy(this.$await_encountered())&&(async_prefix="async "),$truthy(this.$compiler()["$requirable?"]())?this.$unshift("Opal.modules["+$$$($$("Opal"),"Compiler").$module_name(this.$compiler().$file()).$inspect()+"] = "+async_prefix+"function(Opal) {"):$truthy(this.$compiler()["$eval?"]())?this.$unshift("("+async_prefix+"function(Opal, self) {"):$truthy(this.$compiler()["$esm?"]())?this.$unshift("export default Opal.queue("+async_prefix+"function(Opal) {"):this.$unshift("Opal.queue("+async_prefix+"function(Opal) {")}),0),$def(self,"$closing",(function(){return $truthy(this.$compiler()["$requirable?"]())?this.$line("};\n"):$truthy(this.$compiler()["$eval?"]())?this.$line("})(Opal, self);"):this.$line("});\n")}),0),$def(self,"$stmts",(function(){return this.$compiler().$returns(this.$body())}),0),$def(self,"$absolute_const",(function(){return this.define_absolute_const=!0,"$$$"}),0),$def(self,"$compile_irb_vars",(function(){return $truthy(this.$compiler()["$irb?"]())?this.$line("if (!Opal.irb_vars) { Opal.irb_vars = {}; }"):nil}),0),$def(self,"$add_used_helpers",(function(){return $send(this.$compiler().$helpers().$to_a(),"each",[],(function $$2(h){return null==h&&(h=nil),(null==$$2.$$s?this:$$2.$$s).$add_temp("$"+h+" = Opal."+h)}),{$$arity:1,$$s:this})}),0),$def(self,"$compile_method_stubs",(function(){var calls=nil,stubs=nil;return $truthy(this.$compiler()["$method_missing?"]())?(calls=this.$compiler().$method_calls(),stubs=$send(calls.$to_a(),"map",[],"to_s".$to_proc()).$join(","),$truthy(stubs["$empty?"]())?nil:this.$line("Opal.add_stubs('"+stubs+"');")):nil}),0),$def(self,"$compile_end_construct",(function(){var content=nil;return $truthy(content=this.$compiler().$eof_content())?(this.$line("var $__END__ = Opal.Object.$new();"),this.$line("$__END__.$read = function() { return "+content.$inspect()+"; };")):nil}),0),$def(self,"$version_comment",(function(){return"/* Generated by Opal "+$$$($$("Opal"),"VERSION")+" */"}),0)}($nesting[0],$$("ScopeNode"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/while"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def;return Opal.add_stubs("require,handle,children,js_truthy,test,with_temp,in_while,compiler,wrap_in_closure?,[]=,while_loop,-,indent,stmt,body,uses_redo?,compile_with_redo,compile_without_redo,await_encountered,scope,wrap,private,push,compile_while,while_open,while_close,line,[],expr?,recv?"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"WhileNode");self.$handle("while"),self.$children("test","body"),$def(self,"$compile",(function(){var test_code;return test_code=this.$js_truthy(this.$test()),$send(this,"with_temp",[],(function $$1(redo_var){var self=null==$$1.$$s?this:$$1.$$s;return null==redo_var&&(redo_var=nil),$send(self.$compiler(),"in_while",[],(function $$2(){var body_code,self=null==$$2.$$s?this:$$2.$$s,$writer=nil;return $truthy(self["$wrap_in_closure?"]())&&($writer=["closure",!0],$send(self.$while_loop(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$writer=["redo_var",redo_var],$send(self.$while_loop(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],body_code=$send(self,"indent",[],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return self.$stmt(self.$body())}),{$$arity:0,$$s:self}),$truthy(self["$uses_redo?"]())?self.$compile_with_redo(test_code,body_code,redo_var):self.$compile_without_redo(test_code,body_code)}),{$$arity:0,$$s:self})}),{$$arity:1,$$s:this}),$truthy(this["$wrap_in_closure?"]())?$truthy(this.$scope().$await_encountered())?this.$wrap("(await (async function() {","; return nil; })())"):this.$wrap("(function() {","; return nil; })()"):nil}),0),self.$private(),$def(self,"$compile_with_redo",(function(test_code,body_code,redo_var){return this.$push(redo_var+" = false; "),this.$compile_while([redo_var," || ",test_code],[redo_var+" = false;",body_code])}),3),$def(self,"$compile_without_redo",(function(test_code,body_code){return this.$compile_while([test_code],[body_code])}),2),$def(self,"$compile_while",(function(test_code,body_code){return $send(this,"push",[this.$while_open()].concat($to_a(test_code)).concat([this.$while_close()])),$send(this,"indent",[],(function $$4(){return $send(null==$$4.$$s?this:$$4.$$s,"line",$to_a(body_code))}),{$$arity:0,$$s:this}),this.$line("}")}),2),$def(self,"$while_open",(function(){return"while ("}),0),$def(self,"$while_close",(function(){return") {"}),0),$def(self,"$uses_redo?",(function(){return this.$while_loop()["$[]"]("use_redo")}),0),$def(self,"$wrap_in_closure?",(function(){var $ret_or_1;return $truthy($ret_or_1=this["$expr?"]())?$ret_or_1:this["$recv?"]()}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"UntilNode");self.$handle("until"),self.$private(),$def(self,"$while_open",(function(){return"while (!("}),0),$def(self,"$while_close",(function(){return")) {"}),0)}($nesting[0],$$("WhileNode")),function($base,$super){var self=$klass($base,$super,"WhilePostNode");self.$handle("while_post"),self.$private(),$def(self,"$compile_while",(function(test_code,body_code){return this.$push("do {"),$send(this,"indent",[],(function $$7(){return $send(null==$$7.$$s?this:$$7.$$s,"line",$to_a(body_code))}),{$$arity:0,$$s:this}),$send(this,"line",["} ",this.$while_open()].concat($to_a(test_code)).concat([this.$while_close()]))}),2),$def(self,"$while_close",(function(){return");"}),0)}($nesting[0],$$("WhileNode")),function($base,$super){var self=$klass($base,$super,"UntilPostNode");return self.$handle("until_post"),self.$private(),$def(self,"$while_open",(function(){return"while(!("}),0),$def(self,"$while_close",(function(){return"));"}),0)}($nesting[0],$$("WhilePostNode"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/hash"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$send=Opal.send,$eqeqeq=Opal.eqeqeq,$def=Opal.def,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$to_ary=Opal.to_ary,$hash2=Opal.hash2,$rb_minus=Opal.rb_minus;return Opal.add_stubs("require,handle,attr_accessor,each,children,===,type,<<,[],all?,keys,include?,has_kwsplat,compile_merge,simple_keys?,compile_hash2,compile_hash,helper,==,empty?,expr,s,each_with_index,push,wrap,times,size,inspect,to_s,values,[]=,-,join,value"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"HashNode");self.$handle("hash"),self.$attr_accessor("has_kwsplat","keys","values"),$def(self,"$initialize",(function $$initialize($a){var $rest_arg,$yield=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,$rest_arg=Opal.slice.call(arguments),$send2(self,$find_super(self,"initialize",$$initialize,!1,!0),"initialize",$to_a($rest_arg),$yield),self.has_kwsplat=!1,self.keys=[],self.values=[],$send(self.$children(),"each",[],(function $$1(child){var $ret_or_1,self=null==$$1.$$s?this:$$1.$$s;return null==self.keys&&(self.keys=nil),null==self.values&&(self.values=nil),null==child&&(child=nil),$eqeqeq("kwsplat",$ret_or_1=child.$type())?self.has_kwsplat=!0:$eqeqeq("pair",$ret_or_1)?(self.keys["$<<"](child.$children()["$[]"](0)),self.values["$<<"](child.$children()["$[]"](1))):nil}),{$$arity:1,$$s:self})}),-1),$def(self,"$simple_keys?",(function(){return $send(this.$keys(),"all?",[],(function(key){return null==key&&(key=nil),["sym","str"]["$include?"](key.$type())}),1)}),0),$def(self,"$compile",(function(){return $truthy(this.$has_kwsplat())?this.$compile_merge():$truthy(this["$simple_keys?"]())?this.$compile_hash2():this.$compile_hash()}),0),$def(self,"$compile_merge",(function(){var $a,result=nil,seq=nil;return this.$helper("hash"),result=($a=[[],[]])[0],seq=$a[1],$send(this.$children(),"each",[],(function $$4(child){var self=null==$$4.$$s?this:$$4.$$s;return null==child&&(child=nil),$eqeq(child.$type(),"kwsplat")?($truthy(seq["$empty?"]())||result["$<<"](self.$expr($send(self,"s",["hash"].concat($to_a(seq))))),result["$<<"](self.$expr(child)),seq=[]):seq["$<<"](child)}),{$$arity:1,$$s:this}),$truthy(seq["$empty?"]())||result["$<<"](this.$expr($send(this,"s",["hash"].concat($to_a(seq))))),$send(result,"each_with_index",[],(function $$5(fragment,idx){var self=null==$$5.$$s?this:$$5.$$s;return null==fragment&&(fragment=nil),null==idx&&(idx=nil),$eqeq(idx,0)?self.$push(fragment):self.$push(".$merge(",fragment,")")}),{$$arity:2,$$s:this})}),0),$def(self,"$compile_hash",(function(){return this.$helper("hash"),$send(this.$children(),"each_with_index",[],(function $$6(pair,idx){var $a,$b,key,value,self=null==$$6.$$s?this:$$6.$$s;return null==pair&&(pair=nil),null==idx&&(idx=nil),$b=pair.$children(),key=null==($a=$to_ary($b))[0]?nil:$a[0],value=null==$a[1]?nil:$a[1],$eqeq(idx,0)||self.$push(", "),self.$push(self.$expr(key),", ",self.$expr(value))}),{$$arity:2,$$s:this}),this.$wrap("$hash(",")")}),0),$def(self,"$compile_hash2",(function(){var $a,hash_obj=nil,hash_keys=nil;return $a=[$hash2([],{}),[]],hash_obj=$a[0],hash_keys=$a[1],this.$helper("hash2"),$send(this.$keys().$size(),"times",[],(function $$7(idx){var key,$writer,self=null==$$7.$$s?this:$$7.$$s;return null==idx&&(idx=nil),key=self.$keys()["$[]"](idx).$children()["$[]"](0).$to_s().$inspect(),$truthy(hash_obj["$include?"](key))||hash_keys["$<<"](key),$writer=[key,self.$expr(self.$values()["$[]"](idx))],$send(hash_obj,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:this}),$send(hash_keys,"each_with_index",[],(function $$8(key,idx){var self=null==$$8.$$s?this:$$8.$$s;return null==key&&(key=nil),null==idx&&(idx=nil),$eqeq(idx,0)||self.$push(", "),self.$push(key+": "),self.$push(hash_obj["$[]"](key))}),{$$arity:2,$$s:this}),this.$wrap("$hash2(["+hash_keys.$join(", ")+"], {","})")}),0)}($nesting[0],$$("Base")),function($base,$super){var self=$klass($base,$super,"KwSplatNode");return self.$handle("kwsplat"),self.$children("value"),$def(self,"$compile",(function(){return this.$push("Opal.to_hash(",this.$expr(this.$value()),")")}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/array"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def;return Opal.add_stubs("require,handle,empty?,children,push,each,==,type,expr,<<,fragment"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArrayNode");return self.$handle("array"),$def(self,"$compile",(function(){var $a,code=nil,work=nil,join=nil;return $truthy(this.$children()["$empty?"]())?this.$push("[]"):(code=($a=[[],[]])[0],work=$a[1],$send(this.$children(),"each",[],(function $$1(child){var splat,part,self=null==$$1.$$s?this:$$1.$$s;return null==child&&(child=nil),splat=child.$type()["$=="]("splat"),part=self.$expr(child),$truthy(splat)?($truthy(work["$empty?"]())?$truthy(code["$empty?"]())?code["$<<"](self.$fragment("[].concat("))["$<<"](part)["$<<"](self.$fragment(")")):code["$<<"](self.$fragment(".concat("))["$<<"](part)["$<<"](self.$fragment(")")):($truthy(code["$empty?"]())?code["$<<"](self.$fragment("["))["$<<"](work)["$<<"](self.$fragment("]")):code["$<<"](self.$fragment(".concat(["))["$<<"](work)["$<<"](self.$fragment("])")),code["$<<"](self.$fragment(".concat("))["$<<"](part)["$<<"](self.$fragment(")"))),work=[]):($truthy(work["$empty?"]())||work["$<<"](self.$fragment(", ")),work["$<<"](part))}),{$$arity:1,$$s:this}),$truthy(work["$empty?"]())||(join=[this.$fragment("["),work,this.$fragment("]")],$truthy(code["$empty?"]())?code=join:code.$push([this.$fragment(".concat("),join,this.$fragment(")")])),this.$push(code))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/defined"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$eqeqeq=Opal.eqeqeq,$eqeq=Opal.eqeq,$def=Opal.def,$truthy=Opal.truthy,$to_a=Opal.to_a,$slice=Opal.slice,$send=Opal.send,$range=Opal.range;return Opal.add_stubs("require,handle,children,===,type,value,push,inspect,to_s,==,[],size,compile_defined_send,wrap,compile_defined_ivar,compile_defined_super,compile_defined_yield,compile_defined_xstr,compile_defined_const,compile_defined_cvar,compile_defined_gvar,compile_defined_back_ref,compile_defined_nth_ref,compile_defined_array,respond_to?,__send__,new_temp,scope,expr,wrap_with_try_catch,mid_to_jsid,compile_defined,compile_send_recv_doesnt_raise,self,each,s,uses_block!,block_name,find_parent_def,nil?,relative_access,absolute_const,top_scope,class_variable_owner,helper,include?,each_with_index"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"DefinedNode");return self.$handle("defined?"),self.$children("value"),$def(self,"$compile",(function(){var $ret_or_1;return $eqeqeq("self",$ret_or_1=this.$value().$type())||$eqeqeq("nil",$ret_or_1)||$eqeqeq("false",$ret_or_1)||$eqeqeq("true",$ret_or_1)?this.$push(this.$value().$type().$to_s().$inspect()):$eqeqeq("lvasgn",$ret_or_1)||$eqeqeq("ivasgn",$ret_or_1)||$eqeqeq("gvasgn",$ret_or_1)||$eqeqeq("cvasgn",$ret_or_1)||$eqeqeq("casgn",$ret_or_1)||$eqeqeq("op_asgn",$ret_or_1)||$eqeqeq("or_asgn",$ret_or_1)||$eqeqeq("and_asgn",$ret_or_1)?this.$push("'assignment'"):$eqeqeq("lvar",$ret_or_1)?this.$push("'local-variable'"):$eqeqeq("begin",$ret_or_1)?$eqeq(this.$value().$children().$size(),1)&&$eqeq(this.$value().$children()["$[]"](0).$type(),"masgn")?this.$push("'assignment'"):this.$push("'expression'"):$eqeqeq("send",$ret_or_1)?(this.$compile_defined_send(this.$value()),this.$wrap("("," ? 'method' : nil)")):$eqeqeq("ivar",$ret_or_1)?(this.$compile_defined_ivar(this.$value()),this.$wrap("("," ? 'instance-variable' : nil)")):$eqeqeq("zsuper",$ret_or_1)||$eqeqeq("super",$ret_or_1)?this.$compile_defined_super():$eqeqeq("yield",$ret_or_1)?(this.$compile_defined_yield(),this.$wrap("("," ? 'yield' : nil)")):$eqeqeq("xstr",$ret_or_1)?this.$compile_defined_xstr(this.$value()):$eqeqeq("const",$ret_or_1)?(this.$compile_defined_const(this.$value()),this.$wrap("("," ? 'constant' : nil)")):$eqeqeq("cvar",$ret_or_1)?(this.$compile_defined_cvar(this.$value()),this.$wrap("("," ? 'class variable' : nil)")):$eqeqeq("gvar",$ret_or_1)?(this.$compile_defined_gvar(this.$value()),this.$wrap("("," ? 'global-variable' : nil)")):$eqeqeq("back_ref",$ret_or_1)?(this.$compile_defined_back_ref(),this.$wrap("("," ? 'global-variable' : nil)")):$eqeqeq("nth_ref",$ret_or_1)?(this.$compile_defined_nth_ref(),this.$wrap("("," ? 'global-variable' : nil)")):$eqeqeq("array",$ret_or_1)?(this.$compile_defined_array(this.$value()),this.$wrap("("," ? 'expression' : nil)")):this.$push("'expression'")}),0),$def(self,"$compile_defined",(function(node){var type,node_tmp=nil;return type=node.$type(),$truthy(this["$respond_to?"]("compile_defined_"+type))?this.$__send__("compile_defined_"+type,node):(node_tmp=this.$scope().$new_temp(),this.$push("("+node_tmp+" = ",this.$expr(node),")"),node_tmp)}),1),$def(self,"$wrap_with_try_catch",(function(code){var returning_tmp;return returning_tmp=this.$scope().$new_temp(),this.$push("("+returning_tmp+" = (function() { try {"),this.$push(" return "+code+";"),this.$push("} catch ($err) {"),this.$push(" if (Opal.rescue($err, [Opal.Exception])) {"),this.$push(" try {"),this.$push(" return false;"),this.$push(" } finally { Opal.pop_exception() }"),this.$push(" } else { throw $err; }"),this.$push("}})())"),returning_tmp}),1),$def(self,"$compile_send_recv_doesnt_raise",(function(recv_code){return this.$wrap_with_try_catch(recv_code)}),1),$def(self,"$compile_defined_send",(function(node){var $a,args,mid,recv_value_tmp,meth_tmp,recv=nil,method_name=nil,recv_code=nil,recv_tmp=nil;return recv=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],method_name=null==$a[1]?nil:$a[1],args=$slice.call($a,2),mid=this.$mid_to_jsid(method_name.$to_s()),$truthy(recv)?(recv_code=this.$compile_defined(recv),this.$push(" && "),$eqeq(recv.$type(),"send")&&(recv_code=this.$compile_send_recv_doesnt_raise(recv_code),this.$push(" && ")),recv_tmp=this.$scope().$new_temp(),this.$push("("+recv_tmp+" = ",recv_code,", "+recv_tmp+") && ")):recv_tmp=this.$scope().$self(),recv_value_tmp=this.$scope().$new_temp(),this.$push("("+recv_value_tmp+" = "+recv_tmp+") && "),meth_tmp=this.$scope().$new_temp(),this.$push("((("+meth_tmp+" = "+recv_value_tmp+mid+") && !"+meth_tmp+".$$stub)"),this.$push(" || "+recv_value_tmp+"['$respond_to_missing?']('"+method_name+"'))"),$send(args,"each",[],(function $$1(arg){var self=null==$$1.$$s?this:$$1.$$s;return null==arg&&(arg=nil),$eqeqeq("block_pass",arg.$type())?nil:(self.$push(" && "),self.$compile_defined(arg))}),{$$arity:1,$$s:this}),this.$wrap("(",")"),meth_tmp+"()"}),1),$def(self,"$compile_defined_ivar",(function(node){var name,tmp;return name=node.$children()["$[]"](0).$to_s()["$[]"]($range(1,-1,!1)),tmp=this.$scope().$new_temp(),this.$push("("+tmp+" = "+this.$scope().$self()+"['"+name+"'], "+tmp+" != null && "+tmp+" !== nil)"),tmp}),1),$def(self,"$compile_defined_super",(function(){return this.$push(this.$expr(this.$s("defined_super")))}),0),$def(self,"$compile_defined_yield",(function(){var block_name,$ret_or_1;return this.$scope()["$uses_block!"](),block_name=$truthy($ret_or_1=this.$scope().$block_name())?$ret_or_1:this.$scope().$find_parent_def().$block_name(),this.$push("("+block_name+" != null && "+block_name+" !== nil)"),block_name}),0),$def(self,"$compile_defined_xstr",(function(node){return this.$push("(typeof(",this.$expr(node),') !== "undefined")')}),1),$def(self,"$compile_defined_const",(function(node){var $a,const_name,const_tmp,const_scope=nil,const_scope_tmp=nil;return const_scope=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],const_name=null==$a[1]?nil:$a[1],const_tmp=this.$scope().$new_temp(),$truthy(const_scope["$nil?"]())?this.$push("("+const_tmp+" = "+this.$scope().$relative_access()+"('"+const_name+"', 'skip_raise'))"):$eqeq(const_scope,this.$s("cbase"))?this.$push("("+const_tmp+" = "+this.$top_scope().$absolute_const()+"('::', '"+const_name+"', 'skip_raise'))"):(const_scope_tmp=this.$compile_defined(const_scope),this.$push(" && ("+const_tmp+" = "+this.$top_scope().$absolute_const()+"("+const_scope_tmp+", '"+const_name+"', 'skip_raise'))")),const_tmp}),1),$def(self,"$compile_defined_cvar",(function(node){var $a,cvar_name,cvar_tmp;return cvar_name=null==($a=[].concat($to_a(node)))[0]?nil:$a[0],null==$a[1]?nil:$a[1],cvar_tmp=this.$scope().$new_temp(),this.$push("("+cvar_tmp+" = "+this.$class_variable_owner()+".$$cvars['"+cvar_name+"'], "+cvar_tmp+" != null)"),cvar_tmp}),1),$def(self,"$compile_defined_gvar",(function(node){var gvar_temp,name=nil;return this.$helper("gvars"),name=node.$children()["$[]"](0).$to_s()["$[]"]($range(1,-1,!1)),gvar_temp=this.$scope().$new_temp(),$truthy(["~","!"]["$include?"](name))?this.$push("("+gvar_temp+" = ",this.$expr(node)," || true)"):this.$push("("+gvar_temp+" = $gvars["+name.$inspect()+"], "+gvar_temp+" != null)"),gvar_temp}),1),$def(self,"$compile_defined_back_ref",(function(){var back_ref_temp;return this.$helper("gvars"),back_ref_temp=this.$scope().$new_temp(),this.$push("("+back_ref_temp+" = $gvars['~'], "+back_ref_temp+" != null && "+back_ref_temp+" !== nil)"),back_ref_temp}),0),$def(self,"$compile_defined_nth_ref",(function(){var nth_ref_tmp;return this.$helper("gvars"),nth_ref_tmp=this.$scope().$new_temp(),this.$push("("+nth_ref_tmp+" = $gvars['~'], "+nth_ref_tmp+" != null && "+nth_ref_tmp+" != nil)"),nth_ref_tmp}),0),$def(self,"$compile_defined_array",(function(node){return $send(node.$children(),"each_with_index",[],(function $$2(child,idx){var self=null==$$2.$$s?this:$$2.$$s;return null==child&&(child=nil),null==idx&&(idx=nil),$eqeq(idx,0)||self.$push(" && "),self.$compile_defined(child)}),{$$arity:2,$$s:this})}),1)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/masgn"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$eqeq=Opal.eqeq,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def,$rb_ge=Opal.rb_ge,$not=Opal.not,$rb_plus=Opal.rb_plus;return Opal.add_stubs("require,freeze,handle,children,new_temp,scope,==,type,rhs,push,expr,any?,size,compile_masgn,lhs,helper,queue_temp,take_while,!=,drop,each_with_index,compile_assignment,empty?,shift,[],<<,dup,s,>=,!,updated,include?,+,last,raise"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"MassAssignNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"SIMPLE_ASSIGNMENT",["lvasgn","ivasgn","lvar","gvasgn","cdecl","casgn"].$freeze()),self.$handle("masgn"),self.$children("lhs","rhs"),$def(self,"$compile",(function(){var array,rhs_len=nil,retval=nil;return array=this.$scope().$new_temp(),$eqeq(this.$rhs().$type(),"array")?(this.$push(array+" = ",this.$expr(this.$rhs())),rhs_len=$truthy($send(this.$rhs().$children(),"any?",[],(function(c){return null==c&&(c=nil),c.$type()["$=="]("splat")}),1))?nil:this.$rhs().$children().$size(),this.$compile_masgn(this.$lhs().$children(),array,rhs_len),this.$push(", "+array)):(this.$helper("to_ary"),retval=this.$scope().$new_temp(),this.$push(retval+" = ",this.$expr(this.$rhs())),this.$push(", "+array+" = $to_ary("+retval+")"),this.$compile_masgn(this.$lhs().$children(),array),this.$push(", "+retval),this.$scope().$queue_temp(retval)),this.$scope().$queue_temp(array)}),0),$def(self,"$compile_masgn",(function(lhs_items,array,len){var pre_splat=nil,post_splat=nil,splat=nil,part=nil,tmp=nil;return null==len&&(len=nil),pre_splat=$send(lhs_items,"take_while",[],(function(child){return null==child&&(child=nil),child.$type()["$!="]("splat")}),1),post_splat=lhs_items.$drop(pre_splat.$size()),$send(pre_splat,"each_with_index",[],(function $$3(child,idx){return null==child&&(child=nil),null==idx&&(idx=nil),(null==$$3.$$s?this:$$3.$$s).$compile_assignment(child,array,idx,len)}),{$$arity:2,$$s:this}),$truthy(post_splat["$empty?"]())?nil:(splat=post_splat.$shift(),$truthy(post_splat["$empty?"]())?$truthy(part=splat.$children()["$[]"](0))?(this.$helper("slice"),part=part.$dup()["$<<"](this.$s("js_tmp","$slice.call("+array+", "+pre_splat.$size()+")")),this.$push(", "),this.$push(this.$expr(part))):nil:(tmp=this.$scope().$new_temp(),this.$push(", "+tmp+" = "+array+".length - "+post_splat.$size()),this.$push(", "+tmp+" = ("+tmp+" < "+pre_splat.$size()+") ? "+pre_splat.$size()+" : "+tmp),$truthy(part=splat.$children()["$[]"](0))&&(this.$helper("slice"),part=part.$dup()["$<<"](this.$s("js_tmp","$slice.call("+array+", "+pre_splat.$size()+", "+tmp+")")),this.$push(", "),this.$push(this.$expr(part))),$send(post_splat,"each_with_index",[],(function $$4(child,idx){var self=null==$$4.$$s?this:$$4.$$s;return null==child&&(child=nil),null==idx&&(idx=nil),$eqeq(idx,0)?self.$compile_assignment(child,array,tmp):self.$compile_assignment(child,array,tmp+" + "+idx)}),{$$arity:2,$$s:this}),this.$scope().$queue_temp(tmp)))}),-3),$def(self,"$compile_assignment",(function(child,array,idx,len){var assign=nil,part=nil,tmp=nil;if(null==len&&(len=nil),assign=$not(len)||$truthy($rb_ge(idx,len))?this.$s("js_tmp","("+array+"["+idx+"] == null ? nil : "+array+"["+idx+"])"):this.$s("js_tmp",array+"["+idx+"]"),part=child.$updated(),$truthy($$("SIMPLE_ASSIGNMENT")["$include?"](child.$type())))part=part.$updated(nil,$rb_plus(part.$children(),[assign]));else if($eqeq(child.$type(),"send"))part=part.$updated(nil,$rb_plus(part.$children(),[assign]));else if($eqeq(child.$type(),"attrasgn"))part.$last()["$<<"](assign);else{if($eqeq(child.$type(),"mlhs"))return this.$helper("to_ary"),tmp=this.$scope().$new_temp(),this.$push(", ("+tmp+" = $to_ary("+assign.$children()["$[]"](0)+")"),this.$compile_masgn(child.$children(),tmp),this.$push(")"),this.$scope().$queue_temp(tmp),nil;this.$raise("Bad child node in masgn LHS: "+child+". LHS: "+this.$lhs())}return this.$push(", "),this.$push(this.$expr(part))}),-4)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/arglist"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$send=Opal.send,$truthy=Opal.truthy,$to_a=Opal.to_a,$def=Opal.def;return Opal.add_stubs("require,handle,each,children,==,type,expr,empty?,<<,fragment,push"),self.$require("opal/nodes/base"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"ArglistNode");return self.$handle("arglist"),$def(self,"$compile",(function(){var $a,code=nil,work=nil,join=nil;return code=($a=[[],[]])[0],work=$a[1],$send(this.$children(),"each",[],(function $$1(current){var splat,arg,self=null==$$1.$$s?this:$$1.$$s;return null==current&&(current=nil),splat=current.$type()["$=="]("splat"),arg=self.$expr(current),$truthy(splat)?($truthy(work["$empty?"]())?$truthy(code["$empty?"]())?code["$<<"](arg):code["$<<"](self.$fragment(".concat("))["$<<"](arg)["$<<"](self.$fragment(")")):($truthy(code["$empty?"]())?code["$<<"](self.$fragment("["))["$<<"](work)["$<<"](self.$fragment("]")):code["$<<"](self.$fragment(".concat(["))["$<<"](work)["$<<"](self.$fragment("])")),code["$<<"](self.$fragment(".concat("))["$<<"](arg)["$<<"](self.$fragment(")"))),work=[]):($truthy(work["$empty?"]())||work["$<<"](self.$fragment(", ")),work["$<<"](arg))}),{$$arity:1,$$s:this}),$truthy(work["$empty?"]())||(join=work,$truthy(code["$empty?"]())?code=join:code["$<<"](this.$fragment(".concat(["))["$<<"](join)["$<<"](this.$fragment("])"))),$send(this,"push",$to_a(code))}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/x_string"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$truthy=Opal.truthy,$send=Opal.send,$def=Opal.def,$defs=Opal.defs,$lambda=Opal.lambda,$eqeqeq=Opal.eqeqeq,$eqeq=Opal.eqeq,$not=Opal.not,$range=Opal.range;return Opal.add_stubs("handle,unpack_return,children,strip_empty_children,single_line?,compile_single_line,each,compile_child,recv?,wrap,push,==,size,none?,type,end_with?,source,expression,loc,dup,nil?,empty?,rstrip,any?,[],first,shift,last,pop,private,===,include?,self,scope,new,expr,raise,s,strip,=~,!,extract_last_value,expr?,warning,compiler,line"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"XStringNode"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.should_add_semicolon=$proto.returning=nil,self.$handle("xstr"),$def(self,"$compile",(function(){var unpacked_children,stripped_children;return this.should_add_semicolon=!1,unpacked_children=this.$unpack_return(this.$children()),stripped_children=$$("XStringNode").$strip_empty_children(unpacked_children),$truthy($$("XStringNode")["$single_line?"](stripped_children))?this.$compile_single_line(stripped_children):$send(unpacked_children,"each",[],(function $$1(c){return null==c&&(c=nil),(null==$$1.$$s?this:$$1.$$s).$compile_child(c)}),{$$arity:1,$$s:this}),$truthy(this["$recv?"]())&&this.$wrap("(",")"),$truthy(this.should_add_semicolon)?this.$push(";"):nil}),0),$defs(self,"$single_line?",(function(children){var $ret_or_1;return $truthy($ret_or_1=children.$size()["$=="](1))?$ret_or_1:$send(children,"none?",[],(function(c){var $ret_or_2;return null==c&&(c=nil),$truthy($ret_or_2=c.$type()["$=="]("str"))?c.$loc().$expression().$source()["$end_with?"]("\n"):$ret_or_2}),1)}),1),$defs(self,"$strip_empty_children",(function(children){var empty_line=nil,$ret_or_1=nil;for(children=children.$dup(),empty_line=$lambda((function(child){var $ret_or_1,$ret_or_2=nil;return null==child&&(child=nil),$truthy($ret_or_1=child["$nil?"]())?$ret_or_1:$truthy($ret_or_2=child.$type()["$=="]("str"))?child.$loc().$expression().$source().$rstrip()["$empty?"]():$ret_or_2}),1);$truthy($truthy($ret_or_1=children["$any?"]())?empty_line["$[]"](children.$first()):$ret_or_1);)children.$shift();for(;$truthy($truthy($ret_or_1=children["$any?"]())?empty_line["$[]"](children.$last()):$ret_or_1);)children.$pop();return children}),1),self.$private(),$def(self,"$compile_child",(function(child){var $ret_or_1,value=nil;return $eqeqeq("str",$ret_or_1=child.$type())?(value=child.$loc().$expression().$source(),$truthy(value["$include?"]("self"))&&this.$scope().$self(),this.$push($$("Fragment").$new(value,this.$scope(),child))):$eqeqeq("begin",$ret_or_1)||$eqeqeq("gvar",$ret_or_1)||$eqeqeq("ivar",$ret_or_1)||$eqeqeq("nil",$ret_or_1)?this.$push(this.$expr(child)):this.$raise("Unsupported xstr part: "+child.$type())}),1),$def(self,"$compile_single_line",(function(children){var single_child,has_embeded_return=nil,first_child=nil,$ret_or_1=nil,last_child=nil,last_value=nil;return has_embeded_return=!1,first_child=children.$shift(),single_child=children["$empty?"](),first_child=$truthy($ret_or_1=first_child)?$ret_or_1:this.$s("nil"),$eqeq(first_child.$type(),"str")&&(has_embeded_return=first_child.$loc().$expression().$source().$strip()["$=~"](/^return\b/)),$truthy(this.returning)&&$not(has_embeded_return)&&this.$push("return "),last_child=$truthy($ret_or_1=children.$pop())?$ret_or_1:first_child,$eqeq(last_child.$type(),"str")&&(last_value=this.$extract_last_value(last_child)),$truthy(single_child)||(this.should_add_semicolon=!1,this.$compile_child(first_child),$send(children,"each",[],(function $$5(c){return null==c&&(c=nil),(null==$$5.$$s?this:$$5.$$s).$compile_child(c)}),{$$arity:1,$$s:this})),$eqeq(last_child.$type(),"str")?this.$push($$("Fragment").$new(last_value,this.$scope(),last_child)):this.$compile_child(last_child)}),1),$def(self,"$extract_last_value",(function(last_child){var last_value=nil;return last_value=last_child.$loc().$expression().$source().$rstrip(),$truthy(last_value["$include?"]("self"))&&this.$scope().$self(),($truthy(this.returning)||$truthy(this["$expr?"]()))&&$truthy(last_value["$end_with?"](";"))&&(this.$compiler().$warning("Removed semicolon ending x-string expression, interpreted as unintentional",last_child.$line()),last_value=last_value["$[]"]($range(0,-2,!1))),$truthy(this.returning)&&(this.should_add_semicolon=!0),last_value}),1),$def(self,"$unpack_return",(function(children){var first_child=nil;return first_child=children.$first(),this.returning=!1,$eqeq(first_child.$type(),"js_return")&&(this.returning=!0,children=first_child.$children()),children}),1)}($nesting[0],$$("Base"),$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes/lambda"]=function(Opal){var self=Opal.top,$nesting=[],$module=(Opal.nil,Opal.module),$klass=Opal.klass,$send=Opal.send,$def=Opal.def;return Opal.add_stubs("require,handle,children,helper,defines_lambda,scope,push,expr,iter"),self.$require("opal/nodes/call"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var $nesting=[$module($base,"Nodes")].concat($parent_nesting),$$=Opal.$r($nesting);return function($base,$super){var self=$klass($base,$super,"LambdaNode");return self.$handle("lambda"),self.$children("iter"),$def(self,"$compile",(function(){return this.$helper("lambda"),$send(this.$scope(),"defines_lambda",[],(function $$1(){var self=null==$$1.$$s?this:$$1.$$s;return self.$push("$lambda(",self.$expr(self.$iter()),")")}),{$$arity:0,$$s:this})}),0)}($nesting[0],$$("Base"))}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal/nodes"]=function(Opal){var self=Opal.top;Opal.nil;return Opal.add_stubs("require"),self.$require("opal/nodes/base"),self.$require("opal/nodes/literal"),self.$require("opal/nodes/variables"),self.$require("opal/nodes/constants"),self.$require("opal/nodes/call"),self.$require("opal/nodes/csend"),self.$require("opal/nodes/call_special"),self.$require("opal/nodes/module"),self.$require("opal/nodes/class"),self.$require("opal/nodes/singleton_class"),self.$require("opal/nodes/args"),self.$require("opal/nodes/args/arity_check"),self.$require("opal/nodes/iter"),self.$require("opal/nodes/def"),self.$require("opal/nodes/defs"),self.$require("opal/nodes/if"),self.$require("opal/nodes/logic"),self.$require("opal/nodes/definitions"),self.$require("opal/nodes/yield"),self.$require("opal/nodes/rescue"),self.$require("opal/nodes/super"),self.$require("opal/nodes/top"),self.$require("opal/nodes/while"),self.$require("opal/nodes/hash"),self.$require("opal/nodes/array"),self.$require("opal/nodes/defined"),self.$require("opal/nodes/masgn"),self.$require("opal/nodes/arglist"),self.$require("opal/nodes/x_string"),self.$require("opal/nodes/lambda")},Opal.modules["opal/eof_content"]=function(Opal){var $nesting=[],nil=Opal.nil,$module=Opal.module,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$eqeq=Opal.eqeq,$range=Opal.range,$to_ary=Opal.to_ary;return Opal.add_stubs("empty?,[],last_token_position,drop_while,lines,==,join,private,last,end_pos"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"EofContent"),$nesting=[self].concat($parent_nesting),$proto=self.$$prototype;return $proto.tokens=$proto.source=nil,$const_set($nesting[0],"DATA_SEPARATOR","__END__\n"),$def(self,"$initialize",(function(tokens,source){return this.tokens=tokens,this.source=source}),2),$def(self,"$eof",(function(){var eof_content=nil,$ret_or_1=nil;return $truthy(this.tokens["$empty?"]())?nil:(eof_content=this.source["$[]"](Opal.Range.$new(this.$last_token_position(),-1,!1)),$truthy(eof_content)?(eof_content=$send(eof_content.$lines(),"drop_while",[],(function(line){return null==line&&(line=nil),line["$=="]("\n")}),1),$eqeq(eof_content["$[]"](0),"__END__\n")?(eof_content=$truthy($ret_or_1=eof_content["$[]"]($range(1,-1,!1)))?$ret_or_1:[]).$join():$eqeq(eof_content,["__END__"])?"":nil):nil)}),0),self.$private(),$def(self,"$last_token_position",(function(){var $a,$b,last_token_info;return $b=this.tokens.$last(),null==($a=$to_ary($b))[0]?nil:$a[0],last_token_info=null==$a[1]?nil:$a[1],null==($a=$to_ary($b=last_token_info))[0]?nil:$a[0],(null==$a[1]?nil:$a[1]).$end_pos()}),0)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/errors"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$truthy=Opal.truthy,$send=Opal.send,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$defs=Opal.defs,$rb_plus=Opal.rb_plus,$alias=Opal.alias;return Opal.add_stubs("attr_reader,attr_accessor,new,respond_to?,location,location=,-,diagnostic,diagnostic=,to_a,backtrace,unshift,to_s,set_backtrace,path,lineno,+,label,line,lineno=,source_line,label=,expression"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $klass($nesting[0],$$("StandardError"),"Error"),function($base,$super){var self=$klass($base,$super,"GemNotFound");self.$attr_reader("gem_name"),$def(self,"$initialize",(function $$initialize(gem_name){return delete $$initialize.$$p,this.gem_name=gem_name,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",["can't find gem "+gem_name],null)}),1)}($nesting[0],$$("Error")),function($base,$super){$klass($base,$super,"CompilationError").$attr_accessor("location")}($nesting[0],$$("Error")),$klass($nesting[0],$$("CompilationError"),"ParsingError"),$klass($nesting[0],$$("ParsingError"),"RewritingError"),function($base,$super){$klass($base,$super,"SyntaxError").$attr_accessor("location")}($nesting[0],$$$("SyntaxError")),$defs(self,"$opal_location_from_error",(function(error){var opal_location,$writer=nil;return opal_location=$$("OpalBacktraceLocation").$new(),$truthy(error["$respond_to?"]("location"))&&($writer=[error.$location()],$send(opal_location,"location=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),$truthy(error["$respond_to?"]("diagnostic"))&&($writer=[error.$diagnostic()],$send(opal_location,"diagnostic=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),opal_location}),1),$defs(self,"$add_opal_location_to_error",(function(opal_location,error){var backtrace=nil;return(backtrace=error.$backtrace().$to_a()).$unshift(opal_location.$to_s()),error.$set_backtrace(backtrace),error}),2),function($base,$super){var self=$klass($base,null,"OpalBacktraceLocation");return self.$attr_accessor("path","lineno","label"),$def(self,"$initialize",(function(path,lineno,label){var $a;return null==path&&(path=nil),null==lineno&&(lineno=nil),null==label&&(label=nil),$a=[path,lineno,label],this.path=$a[0],this.lineno=$a[1],this.label=$a[2],$a}),-1),$def(self,"$to_s",(function(){var string=nil;return string=this.$path(),$truthy(this.$lineno())&&(string=$rb_plus(string,":"+this.$lineno())),string=$rb_plus(string,":in "),string=$truthy(this.$label())?$rb_plus(string,"`"+this.$label()+"'"):$rb_plus(string,"unknown")}),0),$alias(self,"line","lineno"),$def(self,"$diagnostic=",(function(diagnostic){var $writer;return $truthy(diagnostic)?($writer=[diagnostic.$location()],$send(this,"location=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil}),1),$def(self,"$location=",(function(location){var $writer=nil;return $truthy(location)?($writer=[location.$line()],$send(this,"lineno=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(location["$respond_to?"]("source_line"))?($writer=[location.$source_line()],$send(this,"label=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):$truthy(location["$respond_to?"]("expression"))?($writer=[location.$expression().$source_line()],$send(this,"label=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]):nil):nil}),1)}($nesting[0])}($nesting[0],$nesting)},Opal.modules["opal/magic_comments"]=function(Opal){var $nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$module=Opal.module,$const_set=Opal.const_set,$hash2=Opal.hash2,$truthy=Opal.truthy,$send=Opal.send,$rb_ge=Opal.rb_ge,$eqeqeq=Opal.eqeqeq,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$defs=Opal.defs;return Opal.add_stubs("freeze,line,loc,take,each,>=,any?,scan,text,to_sym,===,[]=,-"),function($base,$parent_nesting){var self=$module($base,"MagicComments"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set($nesting[0],"MAGIC_COMMENT_RE",/^# *(\w+) *: *(\S+.*?) *$/.$freeze()),$const_set($nesting[0],"EMACS_MAGIC_COMMENT_RE",/^# *-\*- *(\w+) *: *(\S+.*?) *-\*- *$/.$freeze()),$defs(self,"$parse",(function(sexp,comments){var flags,first_line=nil;return flags=$hash2([],{}),$truthy(sexp)&&(first_line=sexp.$loc().$line(),comments=comments.$take(first_line)),$send(comments,"each",[],(function(comment){var parts=nil;return null==comment&&(comment=nil),$truthy(first_line)&&$truthy($rb_ge(comment.$loc().$line(),first_line))?nil:$truthy((parts=comment.$text().$scan($$("MAGIC_COMMENT_RE")))["$any?"]())||$truthy((parts=comment.$text().$scan($$("EMACS_MAGIC_COMMENT_RE")))["$any?"]())?$send(parts,"each",[],(function(key,value){var $writer,$ret_or_1;return null==key&&(key=nil),null==value&&(value=nil),$writer=[key.$to_sym(),$eqeqeq("true",$ret_or_1=value)||!$eqeqeq("false",$ret_or_1)&&value],$send(flags,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),2):nil}),1),flags}),2)}($$("Opal"),$nesting)},Opal.modules["opal/compiler"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$hash2=Opal.hash2,$defs=Opal.defs,$klass=Opal.klass,$const_set=Opal.const_set,$send=Opal.send,$truthy=Opal.truthy,$not=Opal.not,$to_a=Opal.to_a,$rb_minus=Opal.rb_minus,$def=Opal.def,$Opal=Opal.Opal,$to_ary=Opal.to_ary,$alias=Opal.alias,$eqeqeq=Opal.eqeqeq,$regexp=Opal.regexp,$rb_plus=Opal.rb_plus,$slice=Opal.slice,$eqeq=Opal.eqeq;return Opal.add_stubs("require,compile,new,freeze,join,dirname,first,split,basename,to_s,cleanpath,Pathname,fetch,define_method,option_value,key?,[],!,include?,raise,inspect,[]=,-,compiler_option,attr_reader,attr_accessor,parse,re_raise_with_location,flatten,process,end_with?,code,last,<<,fragment,s,map,to_proc,file,source=,default_parser,tokenize,requirable?,eval?,tap,meta,associate_locations,eof,magic_comments,to_sym,strip,async_await_before_typecasting,===,async_await_set_to_regexp,to_a,gsub,escape,location=,opal_location_from_error,path=,label,lines,to_i,line,label=,message,set_backtrace,backtrace,add_opal_location_to_error,warn,empty?,+,start_with?,helpers,new_temp,queue_temp,push_while,pop_while,in_while?,nil?,scope,handlers,type,compile_to_fragments,error,returns,updated,children,==,uses_block!,block_name,find_parent_def,cache,source_map"),self.$require("set"),self.$require("opal/parser"),self.$require("opal/fragment"),self.$require("opal/nodes"),self.$require("opal/eof_content"),self.$require("opal/errors"),self.$require("opal/magic_comments"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$compile",(function(source,options){return null==options&&(options=$hash2([],{})),$$("Compiler").$new(source,options).$compile()}),-2),function($base,$super,$parent_nesting){var self=$klass($base,null,"Compiler"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.option_values=$proto.options=$proto.magic_comments=$proto.fragments=$proto.source=$proto.buffer=$proto.source_map=$proto.result=$proto.helpers=$proto.method_calls=$proto.async_await=$proto.indent=$proto.unique=$proto.scope=$proto.case_stmt=$proto.handlers=$proto.requires=$proto.required_trees=$proto.autoloads=nil,$const_set($nesting[0],"INDENT"," "),$const_set($nesting[0],"COMPARE",["<",">","<=",">="].$freeze()),$defs(self,"$module_name",(function(path){return path=$$("File").$join($$("File").$dirname(path),$$("File").$basename(path).$split(".").$first()),this.$Pathname(path).$cleanpath().$to_s()}),1),$defs(self,"$compiler_option",(function(name,config){var method_name;return null==config&&(config=$hash2([],{})),method_name=config.$fetch("as",name),$send(this,"define_method",[method_name],(function $$1(){return(null==$$1.$$s?this:$$1.$$s).$option_value(name,config)}),{$$arity:0,$$s:this})}),-2),$def(self,"$option_value",(function(name,config){var default_value,magic_comment,$writer,valid_values=nil,value=nil;return $truthy(this.option_values["$key?"](name))?this.option_values["$[]"](name):(default_value=config["$[]"]("default"),valid_values=config["$[]"]("valid_values"),magic_comment=config["$[]"]("magic_comment"),value=this.options.$fetch(name,default_value),$truthy(magic_comment)&&$truthy(this.magic_comments["$key?"](name))&&(value=this.magic_comments.$fetch(name)),$truthy(valid_values)&&$not(valid_values["$include?"](value))&&this.$raise($$("ArgumentError"),"invalid value "+value.$inspect()+" for option "+name.$inspect()+" (valid values: "+valid_values.$inspect()+")"),$writer=[name,value],$send(this.option_values,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)])}),2),self.$compiler_option("file",$hash2(["default"],{default:"(file)"})),self.$compiler_option("method_missing",$hash2(["default","as"],{default:!0,as:"method_missing?"})),self.$compiler_option("arity_check",$hash2(["default","as"],{default:!1,as:"arity_check?"})),self.$compiler_option("freezing",$hash2(["default","as"],{default:!0,as:"freezing?"})),self.$compiler_option("irb",$hash2(["default","as"],{default:!1,as:"irb?"})),self.$compiler_option("dynamic_require_severity",$hash2(["default","valid_values"],{default:"ignore",valid_values:["error","warning","ignore"]})),self.$compiler_option("requirable",$hash2(["default","as"],{default:!1,as:"requirable?"})),self.$compiler_option("esm",$hash2(["default","as"],{default:!1,as:"esm?"})),self.$compiler_option("inline_operators",$hash2(["default","as"],{default:!0,as:"inline_operators?"})),self.$compiler_option("eval",$hash2(["default","as"],{default:!1,as:"eval?"})),self.$compiler_option("enable_source_location",$hash2(["default","as"],{default:!1,as:"enable_source_location?"})),self.$compiler_option("use_strict",$hash2(["default","as","magic_comment"],{default:!1,as:"use_strict?",magic_comment:!0})),self.$compiler_option("parse_comments",$hash2(["default","as"],{default:!1,as:"parse_comments?"})),self.$compiler_option("scope_variables",$hash2(["default"],{default:[]})),self.$compiler_option("await",$hash2(["default","as","magic_comment"],{default:!1,as:"async_await",magic_comment:!0})),self.$attr_reader("result"),self.$attr_reader("fragments"),self.$attr_accessor("scope"),self.$attr_accessor("top_scope"),self.$attr_reader("case_stmt"),self.$attr_reader("eof_content"),self.$attr_reader("comments"),self.$attr_reader("magic_comments"),$def(self,"$initialize",(function(source,options){return null==options&&(options=$hash2([],{})),this.source=source,this.indent="",this.unique=0,this.options=options,this.comments=$$("Hash").$new([]),this.case_stmt=nil,this.option_values=$hash2([],{}),this.magic_comments=$hash2([],{})}),-2),$def(self,"$compile",(function(){return this.$parse(),this.fragments=$send(this,"re_raise_with_location",[],(function $$2(){var self=null==$$2.$$s?this:$$2.$$s;return null==self.sexp&&(self.sexp=nil),self.$process(self.sexp).$flatten()}),{$$arity:0,$$s:this}),$truthy(this.fragments.$last().$code()["$end_with?"]("\n"))||this.fragments["$<<"](this.$fragment("\n",nil,this.$s("newline"))),this.result=$send(this.fragments,"map",[],"code".$to_proc()).$join("")}),0),$def(self,"$parse",(function(){var $a,$b,sexp,comments,tokens,kind,$ret_or_1,$writer=nil;return this.buffer=$$$($$$($Opal,"Parser"),"SourceBuffer").$new(this.$file(),1),$writer=[this.source],$send(this.buffer,"source=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],this.parser=$$$($$("Opal"),"Parser").$default_parser(),$b=$send(this,"re_raise_with_location",[],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return null==self.parser&&(self.parser=nil),null==self.buffer&&(self.buffer=nil),self.parser.$tokenize(self.buffer)}),{$$arity:0,$$s:this}),sexp=null==($a=$to_ary($b))[0]?nil:$a[0],comments=null==$a[1]?nil:$a[1],tokens=null==$a[2]?nil:$a[2],kind=$truthy(this["$requirable?"]())?"require":$truthy(this["$eval?"]())?"eval":"main",this.sexp=$send(this.$s("top",$truthy($ret_or_1=sexp)?$ret_or_1:this.$s("nil")),"tap",[],(function(i){return null==i&&(i=nil),$writer=["kind",kind],$send(i.$meta(),"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),1),this.comments=$$$($$$($$$("Parser"),"Source"),"Comment").$associate_locations(sexp,comments),this.magic_comments=$$("MagicComments").$parse(sexp,comments),this.eof_content=$$("EofContent").$new(tokens,this.source).$eof()}),0),$def(self,"$source_map",(function(){var $ret_or_1;return $truthy($ret_or_1=this.source_map)?$ret_or_1:$$$($$$($Opal,"SourceMap"),"File").$new(this.fragments,this.$file(),this.source,this.result)}),0),$def(self,"$helpers",(function(){var $ret_or_1;return this.helpers=$truthy($ret_or_1=this.helpers)?$ret_or_1:$$("Set").$new($send(this.$magic_comments()["$[]"]("helpers").$to_s().$split(","),"map",[],(function(h){return null==h&&(h=nil),h.$strip().$to_sym()}),1))}),0),$def(self,"$method_calls",(function(){var $ret_or_1;return this.method_calls=$truthy($ret_or_1=this.method_calls)?$ret_or_1:$$("Set").$new()}),0),$alias(self,"async_await_before_typecasting","async_await"),$def(self,"$async_await",(function(){var $a,original=nil,$ret_or_1=nil;return $truthy(null!=($a=this.async_await)&&$a!==nil?"instance-variable":nil)?this.async_await:(original=this.$async_await_before_typecasting(),this.async_await=$eqeqeq($$("String"),$ret_or_1=original)?this.$async_await_set_to_regexp($send(original.$split(","),"map",[],(function(h){return null==h&&(h=nil),h.$strip().$to_sym()}),1)):$eqeqeq($$("Array"),$ret_or_1)||$eqeqeq($$("Set"),$ret_or_1)?this.$async_await_set_to_regexp($send(original.$to_a(),"map",[],"to_sym".$to_proc())):$eqeqeq($$("Regexp"),$ret_or_1)||$eqeqeq(!0,$ret_or_1)||$eqeqeq(!1,$ret_or_1)?original:this.$raise("A value of await compiler option can be either a Set, an Array, a String or a Boolean."))}),0),$def(self,"$async_await_set_to_regexp",(function(set){return set=(set=$send(set,"map",[],(function(name){return null==name&&(name=nil),$$("Regexp").$escape(name.$to_s()).$gsub("\\*",".*?")}),1)).$join("|"),$regexp(["^(",set,")$"])}),1),$def(self,"$error",(function(msg,line){var error,$writer;return null==line&&(line=nil),error=$$$($Opal,"SyntaxError").$new(msg),$writer=[$$$($$("Opal"),"OpalBacktraceLocation").$new(this.$file(),line)],$send(error,"location=",$to_a($writer)),$rb_minus($writer.length,1),this.$raise(error)}),-2),$def(self,"$re_raise_with_location",(function $$re_raise_with_location(){var $yield=$$re_raise_with_location.$$p||nil,error=nil,opal_location=nil,$writer=nil,new_error=nil;delete $$re_raise_with_location.$$p;try{return Opal.yieldX($yield,[])}catch($err){if(!Opal.rescue($err,[$$("StandardError"),$$$($Opal,"SyntaxError")]))throw $err;error=$err;try{return opal_location=$Opal.$opal_location_from_error(error),$writer=[this.$file()],$send(opal_location,"path=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$truthy(opal_location.$label())||($writer=[this.source.$lines()["$[]"]($rb_minus(opal_location.$line().$to_i(),1)).$strip()],$send(opal_location,"label=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]),(new_error=$$$($Opal,"SyntaxError").$new(error.$message())).$set_backtrace(error.$backtrace()),$Opal.$add_opal_location_to_error(opal_location,new_error),this.$raise(new_error)}finally{Opal.pop_exception()}}}),0),$def(self,"$warning",(function(msg,line){return null==line&&(line=nil),this.$warn("warning: "+msg+" -- "+this.$file()+":"+line)}),-2),$def(self,"$parser_indent",(function(){return this.indent}),0),$def(self,"$s",(function(type,$a){var children;return children=Opal.slice.call(arguments,1),$$$($$$($Opal,"AST"),"Node").$new(type,children)}),-2),$def(self,"$fragment",(function(str,scope,sexp){return null==sexp&&(sexp=nil),$$("Fragment").$new(str,scope,sexp)}),-3),$def(self,"$unique_temp",(function(name){var unique;return name=name.$to_s(),$truthy(name)&&$not(name["$empty?"]())&&(name=name.$to_s().$gsub("<=>","$lt_eq_gt").$gsub("===","$eq_eq_eq").$gsub("==","$eq_eq").$gsub("=~","$eq_tilde").$gsub("!~","$excl_tilde").$gsub("!=","$not_eq").$gsub("<=","$lt_eq").$gsub(">=","$gt_eq").$gsub("=","$eq").$gsub("?","$ques").$gsub("!","$excl").$gsub("/","$slash").$gsub("%","$percent").$gsub("+","$plus").$gsub("-","$minus").$gsub("<","$lt").$gsub(">","$gt").$gsub(/[^\w\$]/,"$")),unique=this.unique=$rb_plus(this.unique,1),""+($truthy(name["$start_with?"]("$"))?nil:"$")+name+"$"+unique}),1),$def(self,"$helper",(function(name){return this.$helpers()["$<<"](name)}),1),$def(self,"$indent",(function $$indent(){var indent,res,$yield=$$indent.$$p||nil;return delete $$indent.$$p,indent=this.indent,this.indent=$rb_plus(this.indent,$$("INDENT")),this.space="\n"+this.indent,res=Opal.yieldX($yield,[]),this.indent=indent,this.space="\n"+this.indent,res}),0),$def(self,"$with_temp",(function $$with_temp(){var tmp,res,$yield=$$with_temp.$$p||nil;return delete $$with_temp.$$p,tmp=this.scope.$new_temp(),res=Opal.yield1($yield,tmp),this.scope.$queue_temp(tmp),res}),0),$def(self,"$in_while",(function $$in_while(){var result,$yield=$$in_while.$$p||nil;return delete $$in_while.$$p,$yield===nil?nil:(this.while_loop=this.scope.$push_while(),result=Opal.yieldX($yield,[]),this.scope.$pop_while(),result)}),0),$def(self,"$in_case",(function $$in_case(){var old,$yield=$$in_case.$$p||nil;return delete $$in_case.$$p,$yield===nil?nil:(old=this.case_stmt,this.case_stmt=$hash2([],{}),Opal.yieldX($yield,[]),this.case_stmt=old)}),0),$def(self,"$in_while?",(function(){return this.scope["$in_while?"]()}),0),$def(self,"$process",(function(sexp,level){var handler=nil;return null==level&&(level="expr"),$truthy(sexp["$nil?"]())?this.$fragment("",this.$scope()):$truthy(handler=this.$handlers()["$[]"](sexp.$type()))?handler.$new(sexp,level,this).$compile_to_fragments():this.$error("Unsupported sexp: "+sexp.$type())}),-2),$def(self,"$handlers",(function(){var $ret_or_1;return this.handlers=$truthy($ret_or_1=this.handlers)?$ret_or_1:$$$($$$($$("Opal"),"Nodes"),"Base").$handlers()}),0),$def(self,"$requires",(function(){var $ret_or_1;return this.requires=$truthy($ret_or_1=this.requires)?$ret_or_1:[]}),0),$def(self,"$required_trees",(function(){var $ret_or_1;return this.required_trees=$truthy($ret_or_1=this.required_trees)?$ret_or_1:[]}),0),$def(self,"$autoloads",(function(){var $ret_or_1;return this.autoloads=$truthy($ret_or_1=this.autoloads)?$ret_or_1:[]}),0),$def(self,"$returns",(function(sexp){var $a,$b,$ret_or_1,when_sexp=nil,then_sexp=nil,body_sexp=nil,resbodies=nil,else_sexp=nil,klass=nil,lvar=nil,body=nil,rescue_sexp=nil,ensure_body=nil,rest=nil,last=nil,cond=nil,true_body=nil,false_body=nil;return $truthy(sexp)?$eqeqeq("undef",$ret_or_1=sexp.$type())?this.$returns(sexp.$updated("begin",[sexp,this.$s("nil")])):$eqeqeq("break",$ret_or_1)||$eqeqeq("next",$ret_or_1)||$eqeqeq("redo",$ret_or_1)||$eqeqeq("retry",$ret_or_1)?sexp:$eqeqeq("yield",$ret_or_1)?sexp.$updated("returnable_yield",nil):$eqeqeq("when",$ret_or_1)?($b=($b=($a=[].concat($to_a(sexp))).length-1)<0?0:$b,when_sexp=$slice.call($a,0,$b),then_sexp=null==$a[$b]?nil:$a[$b],sexp.$updated(nil,[].concat($to_a(when_sexp)).concat([this.$returns(then_sexp)]))):$eqeqeq("rescue",$ret_or_1)?(body_sexp=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],$b=($b=$a.length-1)<1?1:$b,resbodies=$slice.call($a,1,$b),else_sexp=null==$a[$b]?nil:$a[$b],resbodies=$send(resbodies,"map",[],(function $$9(resbody){return null==resbody&&(resbody=nil),(null==$$9.$$s?this:$$9.$$s).$returns(resbody)}),{$$arity:1,$$s:this}),$truthy(else_sexp)&&(else_sexp=this.$returns(else_sexp)),sexp.$updated(nil,[this.$returns(body_sexp)].concat($to_a(resbodies)).concat([else_sexp]))):$eqeqeq("resbody",$ret_or_1)?(klass=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],lvar=null==$a[1]?nil:$a[1],body=null==$a[2]?nil:$a[2],sexp.$updated(nil,[klass,lvar,this.$returns(body)])):$eqeqeq("ensure",$ret_or_1)?(rescue_sexp=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],ensure_body=null==$a[1]?nil:$a[1],(sexp=sexp.$updated(nil,[this.$returns(rescue_sexp),ensure_body])).$updated("js_return",[sexp])):$eqeqeq("begin",$ret_or_1)||$eqeqeq("kwbegin",$ret_or_1)?($b=($b=($a=[].concat($to_a(sexp))).length-1)<0?0:$b,rest=$slice.call($a,0,$b),last=null==$a[$b]?nil:$a[$b],sexp.$updated(nil,[].concat($to_a(rest)).concat([this.$returns(last)]))):$eqeqeq("while",$ret_or_1)||$eqeqeq("until",$ret_or_1)||$eqeqeq("while_post",$ret_or_1)||$eqeqeq("until_post",$ret_or_1)||$eqeqeq("return",$ret_or_1)||$eqeqeq("js_return",$ret_or_1)||$eqeqeq("returnable_yield",$ret_or_1)?sexp:$eqeqeq("xstr",$ret_or_1)?sexp.$updated(nil,[$send(this,"s",["js_return"].concat($to_a(sexp.$children())))]):$eqeqeq("if",$ret_or_1)?(cond=null==($a=[].concat($to_a(sexp)))[0]?nil:$a[0],true_body=null==$a[1]?nil:$a[1],false_body=null==$a[2]?nil:$a[2],sexp.$updated(nil,[cond,this.$returns(true_body),this.$returns(false_body)])):$eqeq(sexp.$type(),"send")&&$eqeq(sexp.$children()["$[]"](1),"debugger")?sexp.$updated("begin",[sexp,this.$s("js_return",this.$s("nil"))]):sexp.$updated("js_return",[sexp]):this.$returns(this.$s("nil"))}),1),$def(self,"$handle_block_given_call",(function(sexp){var scope=nil;return this.scope["$uses_block!"](),$truthy(this.scope.$block_name())?this.$fragment("("+this.scope.$block_name()+" !== nil)",this.$scope(),sexp):$truthy(scope=this.scope.$find_parent_def())&&$truthy(scope.$block_name())?this.$fragment("("+scope.$block_name()+" !== nil)",scope,sexp):this.$fragment("false",scope,sexp)}),1),$def(self,"$marshal_dump",(function(){var $ret_or_1;return[this.options,this.option_values,this.source_map=$truthy($ret_or_1=this.source_map)?$ret_or_1:this.$source_map().$cache(),this.magic_comments,this.result,this.required_trees,this.requires,this.autoloads]}),0),$def(self,"$marshal_load",(function(src){var $a,$b;return $a=$to_ary($b=src),this.options=null==$a[0]?nil:$a[0],this.option_values=null==$a[1]?nil:$a[1],this.source_map=null==$a[2]?nil:$a[2],this.magic_comments=null==$a[3]?nil:$a[3],this.result=null==$a[4]?nil:$a[4],this.required_trees=null==$a[5]?nil:$a[5],this.requires=null==$a[6]?nil:$a[6],this.autoloads=null==$a[7]?nil:$a[7],$b}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)},Opal.modules["opal/erb"]=function(Opal){var self=Opal.top,$nesting=[],nil=Opal.nil,$module=Opal.module,$defs=Opal.defs,$klass=Opal.klass,$const_set=Opal.const_set,$def=Opal.def,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$send=Opal.send,$regexp=Opal.regexp;return Opal.add_stubs("require,compile,new,freeze,fix_quotes,find_contents,find_code,wrap_compiled,require_erb,prepared_source,gsub,+,last_match,=~,sub"),self.$require("opal/compiler"),function($base,$parent_nesting){var $nesting=[$module($base,"Opal")].concat($parent_nesting);return function($base,$parent_nesting){var self=$module($base,"ERB"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$compile",(function(source,file_name){return null==file_name&&(file_name="(erb)"),$$("Compiler").$new(source,file_name).$compile()}),-2),function($base,$super,$parent_nesting){var self=$klass($base,null,"Compiler"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.prepared_source=$proto.source=$proto.file_name=nil,$const_set($nesting[0],"BLOCK_EXPR",/\s+(do|\{)(\s*\|[^|]*\|)?\s*\Z/.$freeze()),$def(self,"$initialize",(function(source,file_name){var $a;return null==file_name&&(file_name="(erb)"),$a=[source,file_name,source],this.source=$a[0],this.file_name=$a[1],this.result=$a[2],$a}),-2),$def(self,"$prepared_source",(function(){var $ret_or_1,source=nil;return this.prepared_source=$truthy($ret_or_1=this.prepared_source)?$ret_or_1:(source=this.source,source=this.$fix_quotes(source),source=this.$find_contents(source),source=this.$find_code(source),source=this.$wrap_compiled(source),source=this.$require_erb(source))}),0),$def(self,"$compile",(function(){return $$("Opal").$compile(this.$prepared_source())}),0),$def(self,"$fix_quotes",(function(result){return result.$gsub('"','\\"')}),1),$def(self,"$require_erb",(function(result){return $rb_plus('require "erb";',result)}),1),$def(self,"$find_contents",(function(result){return $send(result,"gsub",[/<%=([\s\S]+?)%>/],(function(){var inner=nil;return inner=$$("Regexp").$last_match(1).$gsub(/\\'/,"'").$gsub(/\\"/,'"'),$truthy(inner["$=~"]($$("BLOCK_EXPR")))?'")\noutput_buffer.append= '+inner+'\noutput_buffer.append("':'")\noutput_buffer.append=('+inner+')\noutput_buffer.append("'}),0)}),1),$def(self,"$find_code",(function(result){return $send(result,"gsub",[/<%([\s\S]+?)%>/],(function(){return'")\n'+$$("Regexp").$last_match(1).$gsub(/\\"/,'"')+'\noutput_buffer.append("'}),0)}),1),$def(self,"$wrap_compiled",(function(result){return"Template.new('"+this.file_name.$sub($regexp(["\\.opalerb",$$("REGEXP_END")]),"")+"') do |output_buffer|\noutput_buffer.append(\""+result+'")\noutput_buffer.join\nend\n'}),1)}($nesting[0],0,$nesting)}($nesting[0],$nesting)}($nesting[0],$nesting)},Opal.modules["opal-parser"]=function(Opal){var self=Opal.top,$nesting=[],$$=Opal.$r($nesting),nil=Opal.nil,$module=Opal.module,$Opal=Opal.Opal,$hash2=Opal.hash2,$truthy=Opal.truthy,$def=Opal.def;function run_ruby_scripts(){for(var tag,tags=document.getElementsByTagName("script"),i=0,len=tags.length;i>,>,|,join,any?,shift,raise,==,map,encode,each_with_index,decode'); @@ -866,7 +866,7 @@ Opal.modules["opal/source_map/vlq"] = function(Opal) {/* Generated by Opal 1.4.0 })($$$($$('Opal'), 'SourceMap'), $nesting) }; -Opal.modules["opal/source_map"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/source_map"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module; Opal.add_stubs('autoload'); @@ -888,7 +888,7 @@ Opal.modules["opal/source_map"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $nesting) }; -Opal.modules["opal-source-maps"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal-source-maps"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, nil = Opal.nil; Opal.add_stubs('require'); diff --git a/opal/current/opal.js b/opal/current/opal.js index c8fff804..60ada10d 100644 --- a/opal/current/opal.js +++ b/opal/current/opal.js @@ -2880,7 +2880,7 @@ TypeError.$$super = Error; }).call(this); Opal.loaded(["corelib/runtime.js"]); -Opal.modules["corelib/helpers"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/helpers"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $$$ = Opal.$$$, $type_error = Opal.type_error, $coerce_to = Opal.coerce_to, $module = Opal.module, $defs = Opal.defs, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $truthy = Opal.truthy, $Opal = Opal.Opal; Opal.add_stubs('===,raise,respond_to?,nil?,__send__,<=>,class,coerce_to!,new,to_s,__id__'); @@ -3096,7 +3096,7 @@ Opal.modules["corelib/helpers"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::') }; -Opal.modules["corelib/module"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/module"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $coerce_to = Opal.coerce_to, $const_set = Opal.const_set, $Object = Opal.Object, $klass = Opal.klass, $defs = Opal.defs, $send = Opal.send, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $Module = Opal.Module, $Kernel = Opal.Kernel, $rb_lt = Opal.rb_lt, $rb_gt = Opal.rb_gt, $to_a = Opal.to_a, $hash2 = Opal.hash2, $Opal = Opal.Opal, $eqeq = Opal.eqeq, $lambda = Opal.lambda, $range = Opal.range, $send2 = Opal.send2, $find_super = Opal.find_super, $alias = Opal.alias; Opal.add_stubs('module_eval,to_proc,===,raise,equal?,<,>,nil?,attr_reader,attr_writer,warn,attr_accessor,const_name?,class_variable_name!,const_name!,=~,new,inject,split,const_get,==,start_with?,!~,bind,call,class,append_features,included,name,cover?,size,merge,compile,proc,any?,prepend_features,prepended,to_s,__id__,constants,include?,copy_class_variables,copy_constants,class_exec,inspect'); @@ -4082,7 +4082,7 @@ Opal.modules["corelib/module"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', $Module); }; -Opal.modules["corelib/class"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/class"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $klass = Opal.klass, $send = Opal.send, $defs = Opal.defs, $def = Opal.def, $rb_plus = Opal.rb_plus, $send2 = Opal.send2, $find_super = Opal.find_super, $alias = Opal.alias; Opal.add_stubs('require,class_eval,to_proc,+,subclasses,flatten,map,initialize_copy,allocate,name,to_s'); @@ -4211,7 +4211,7 @@ Opal.modules["corelib/class"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', null, $nesting); }; -Opal.modules["corelib/basic_object"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/basic_object"] = function(Opal) {/* Generated by Opal 1.4.1 */ "use strict"; var nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $def = Opal.def, $alias = Opal.alias, $truthy = Opal.truthy, $range = Opal.range, $Kernel = Opal.Kernel, $to_a = Opal.to_a, $hash2 = Opal.hash2, $Opal = Opal.Opal, $send = Opal.send, $eqeq = Opal.eqeq, $rb_ge = Opal.rb_ge; @@ -4452,7 +4452,7 @@ Opal.modules["corelib/basic_object"] = function(Opal) {/* Generated by Opal 1.4. })('::', null) }; -Opal.modules["corelib/kernel"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/kernel"] = function(Opal) {/* Generated by Opal 1.4.1 */ "use strict"; var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $coerce_to = Opal.coerce_to, $respond_to = Opal.respond_to, $Opal = Opal.Opal, $module = Opal.module, $def = Opal.def, $Kernel = Opal.Kernel, $gvars = Opal.gvars, $hash2 = Opal.hash2, $send = Opal.send, $to_a = Opal.to_a, $rb_plus = Opal.rb_plus, $eqeq = Opal.eqeq, $eqeqeq = Opal.eqeqeq, $rb_le = Opal.rb_le, $rb_lt = Opal.rb_lt, $Object = Opal.Object, $alias = Opal.alias, $klass = Opal.klass; @@ -5550,7 +5550,7 @@ Opal.modules["corelib/kernel"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', null); }; -Opal.modules["corelib/main"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/main"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $def = Opal.def, $Object = Opal.Object, $Kernel = Opal.Kernel; Opal.add_stubs('include,raise'); @@ -5585,7 +5585,7 @@ Opal.modules["corelib/main"] = function(Opal) {/* Generated by Opal 1.4.0 */ })(Opal.get_singleton_class(self), $nesting) }; -Opal.modules["corelib/error/errno"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/error/errno"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $klass = Opal.klass; Opal.add_stubs('+,errno,class,attr_reader'); @@ -5648,7 +5648,7 @@ Opal.modules["corelib/error/errno"] = function(Opal) {/* Generated by Opal 1.4.0 })('::', $$$('StandardError'), $nesting); }; -Opal.modules["corelib/error"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/error"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $gvars = Opal.gvars, $defs = Opal.defs, $send = Opal.send, $to_a = Opal.to_a, $def = Opal.def, $truthy = Opal.truthy, $hash2 = Opal.hash2, $Kernel = Opal.Kernel, $not = Opal.not, $rb_plus = Opal.rb_plus, $eqeq = Opal.eqeq, $Object = Opal.Object, $send2 = Opal.send2, $find_super = Opal.find_super, $module = Opal.module; Opal.add_stubs('new,map,backtrace,clone,to_s,merge,tty?,[],include?,raise,dup,empty?,!,caller,shift,+,class,join,cause,full_message,==,reverse,split,autoload,attr_reader,inspect'); @@ -6076,22 +6076,22 @@ Opal.modules["corelib/error"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', $nesting); }; -Opal.modules["corelib/constants"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/constants"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $$$ = Opal.$$$, $const_set = Opal.const_set; $const_set('::', 'RUBY_PLATFORM', "opal"); $const_set('::', 'RUBY_ENGINE', "opal"); $const_set('::', 'RUBY_VERSION', "3.1.0"); - $const_set('::', 'RUBY_ENGINE_VERSION', "1.4.0"); - $const_set('::', 'RUBY_RELEASE_DATE', "2021-12-24"); + $const_set('::', 'RUBY_ENGINE_VERSION', "1.4.1"); + $const_set('::', 'RUBY_RELEASE_DATE', "2022-01-12"); $const_set('::', 'RUBY_PATCHLEVEL', 0); $const_set('::', 'RUBY_REVISION', "0"); $const_set('::', 'RUBY_COPYRIGHT', "opal - Copyright (C) 2013-2021 Adam Beynon and the Opal contributors"); return $const_set('::', 'RUBY_DESCRIPTION', "opal " + ($$$('RUBY_ENGINE_VERSION')) + " (" + ($$$('RUBY_RELEASE_DATE')) + " revision " + ($$$('RUBY_REVISION')) + ")"); }; -Opal.modules["opal/base"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $Object = Opal.Object; Opal.add_stubs('require'); @@ -6107,7 +6107,7 @@ Opal.modules["opal/base"] = function(Opal) {/* Generated by Opal 1.4.0 */ return $Object.$require("corelib/constants"); }; -Opal.modules["corelib/nil"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/nil"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $Kernel = Opal.Kernel, $def = Opal.def, $hash2 = Opal.hash2, $NilClass = Opal.NilClass, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $alias = Opal.alias; Opal.add_stubs('raise,name,new,>,length,Rational'); @@ -6246,7 +6246,7 @@ Opal.modules["corelib/nil"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', null, $nesting) }; -Opal.modules["corelib/boolean"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/boolean"] = function(Opal) {/* Generated by Opal 1.4.1 */ "use strict"; var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $Kernel = Opal.Kernel, $def = Opal.def, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $alias = Opal.alias; @@ -6404,7 +6404,7 @@ Opal.modules["corelib/boolean"] = function(Opal) {/* Generated by Opal 1.4.0 */ return ($klass('::', $$$('Boolean'), 'FalseClass'), nil); }; -Opal.modules["corelib/comparable"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/comparable"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $module = Opal.module, $rb_gt = Opal.rb_gt, $rb_lt = Opal.rb_lt, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $def = Opal.def; Opal.add_stubs('>,<,===,raise,class,<=>,equal?'); @@ -6545,7 +6545,7 @@ Opal.modules["corelib/comparable"] = function(Opal) {/* Generated by Opal 1.4.0 })('::') }; -Opal.modules["corelib/regexp"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/regexp"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $coerce_to = Opal.coerce_to, $klass = Opal.klass, $const_set = Opal.const_set, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $truthy = Opal.truthy, $gvars = Opal.gvars, $Kernel = Opal.Kernel, $Opal = Opal.Opal, $alias = Opal.alias, $send = Opal.send, $hash2 = Opal.hash2, $rb_plus = Opal.rb_plus, $rb_ge = Opal.rb_ge, $to_a = Opal.to_a, $eqeqeq = Opal.eqeqeq, $rb_minus = Opal.rb_minus; Opal.add_stubs('nil?,[],raise,escape,options,to_str,new,join,coerce_to!,!,match,coerce_to?,begin,uniq,map,scan,source,to_proc,transform_values,group_by,each_with_index,+,last,=~,attr_reader,>=,length,is_a?,include?,names,regexp,named_captures,===,captures,-,inspect,empty?,each,to_a'); @@ -7137,7 +7137,7 @@ Opal.modules["corelib/regexp"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], null, $nesting); }; -Opal.modules["corelib/string"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/string"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $coerce_to = Opal.coerce_to, $respond_to = Opal.respond_to, $global_multiline_regexp = Opal.global_multiline_regexp, $klass = Opal.klass, $def = Opal.def, $Opal = Opal.Opal, $defs = Opal.defs, $send = Opal.send, $to_a = Opal.to_a, $hash2 = Opal.hash2, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $truthy = Opal.truthy, $gvars = Opal.gvars, $rb_divide = Opal.rb_divide, $rb_plus = Opal.rb_plus, $alias = Opal.alias, $const_set = Opal.const_set; Opal.add_stubs('require,include,coerce_to?,initialize,===,format,raise,respond_to?,to_s,to_str,<=>,==,=~,new,force_encoding,casecmp,empty?,ljust,ceil,/,+,rjust,floor,coerce_to!,copy_singleton_methods,initialize_clone,initialize_dup,enum_for,chomp,[],to_i,each_line,to_proc,to_a,class,match,match?,captures,proc,succ,escape,include?,upcase,unicode_normalize,pristine'); @@ -9339,7 +9339,7 @@ Opal.modules["corelib/string"] = function(Opal) {/* Generated by Opal 1.4.0 */ return $const_set($nesting[0], 'Symbol', $$('String')); }; -Opal.modules["corelib/enumerable"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/enumerable"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $coerce_to = Opal.coerce_to, $yield1 = Opal.yield1, $yieldX = Opal.yieldX, $module = Opal.module, $send = Opal.send, $to_a = Opal.to_a, $Opal = Opal.Opal, $def = Opal.def, $Kernel = Opal.Kernel, $rb_gt = Opal.rb_gt, $rb_times = Opal.rb_times, $rb_lt = Opal.rb_lt, $eqeq = Opal.eqeq, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $rb_divide = Opal.rb_divide, $rb_le = Opal.rb_le, $hash2 = Opal.hash2, $lambda = Opal.lambda, $not = Opal.not, $alias = Opal.alias; Opal.add_stubs('each,public_send,destructure,to_enum,enumerator_size,new,yield,raise,slice_when,!,enum_for,flatten,map,compact,to_a,warn,proc,==,nil?,respond_to?,coerce_to!,>,*,try_convert,<,+,-,ceil,/,size,select,to_proc,__send__,length,<=,[],push,<<,[]=,===,inspect,<=>,first,reverse,sort,take,sort_by,compare,call,dup,sort!,map!,include?,-@,key?,values,transform_values,group_by,fetch,to_h,coerce_to?,class,zip'); @@ -11192,7 +11192,7 @@ Opal.modules["corelib/enumerable"] = function(Opal) {/* Generated by Opal 1.4.0 })('::') }; -Opal.modules["corelib/enumerator/arithmetic_sequence"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/enumerator/arithmetic_sequence"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $truthy = Opal.truthy, $to_a = Opal.to_a, $eqeq = Opal.eqeq, $Kernel = Opal.Kernel, $def = Opal.def, $rb_gt = Opal.rb_gt, $rb_lt = Opal.rb_lt, $rb_le = Opal.rb_le, $rb_ge = Opal.rb_ge, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $eqeqeq = Opal.eqeqeq, $not = Opal.not, $rb_times = Opal.rb_times, $rb_divide = Opal.rb_divide, $alias = Opal.alias; Opal.add_stubs('is_a?,==,raise,respond_to?,class,attr_reader,begin,end,exclude_end?,>,step,<,<=,>=,-@,_lesser_than_end?,<<,+,-,===,%,_greater_than_begin?,reverse,!,include?,*,to_i,abs,/,hash,inspect'); @@ -11419,7 +11419,7 @@ Opal.modules["corelib/enumerator/arithmetic_sequence"] = function(Opal) {/* Gene })('::', null, $nesting) }; -Opal.modules["corelib/enumerator/chain"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/enumerator/chain"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus; Opal.add_stubs('to_enum,size,each,<<,to_proc,include?,+,reverse_each,respond_to?,rewind,inspect'); @@ -11523,7 +11523,7 @@ Opal.modules["corelib/enumerator/chain"] = function(Opal) {/* Generated by Opal })('::', null) }; -Opal.modules["corelib/enumerator/generator"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/enumerator/generator"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $breaker = Opal.breaker, $klass = Opal.klass, $truthy = Opal.truthy, $Kernel = Opal.Kernel, $def = Opal.def, $send = Opal.send; Opal.add_stubs('include,raise,new,to_proc'); @@ -11584,7 +11584,7 @@ Opal.modules["corelib/enumerator/generator"] = function(Opal) {/* Generated by O })($nesting[0], null, $nesting) }; -Opal.modules["corelib/enumerator/lazy"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/enumerator/lazy"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $coerce_to = Opal.coerce_to, $yield1 = Opal.yield1, $yieldX = Opal.yieldX, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $to_a = Opal.to_a, $defs = Opal.defs, $Kernel = Opal.Kernel, $send = Opal.send, $def = Opal.def, $Opal = Opal.Opal, $rb_lt = Opal.rb_lt, $eqeqeq = Opal.eqeqeq, $rb_plus = Opal.rb_plus, $alias = Opal.alias; Opal.add_stubs('raise,each,new,enumerator_size,yield,respond_to?,try_convert,<,===,+,for,class,to_proc,destructure,inspect'); @@ -11986,7 +11986,7 @@ Opal.modules["corelib/enumerator/lazy"] = function(Opal) {/* Generated by Opal 1 })('::', null, $nesting) }; -Opal.modules["corelib/enumerator/yielder"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/enumerator/yielder"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $klass = Opal.klass, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a; Opal.add_stubs('yield,proc'); @@ -12055,7 +12055,7 @@ Opal.modules["corelib/enumerator/yielder"] = function(Opal) {/* Generated by Opa })($nesting[0], null, $nesting) }; -Opal.modules["corelib/enumerator"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/enumerator"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $slice = Opal.slice, $coerce_to = Opal.coerce_to, $klass = Opal.klass, $defs = Opal.defs, $truthy = Opal.truthy, $send = Opal.send, $not = Opal.not, $def = Opal.def, $rb_plus = Opal.rb_plus, $to_a = Opal.to_a, $Opal = Opal.Opal, $send2 = Opal.send2, $find_super = Opal.find_super, $rb_ge = Opal.rb_ge, $Kernel = Opal.Kernel, $rb_le = Opal.rb_le, $alias = Opal.alias; Opal.add_stubs('require,include,allocate,new,to_proc,!,respond_to?,empty?,nil?,+,class,__send__,call,enum_for,size,destructure,map,>=,length,raise,[],peek_values,<=,next_values,inspect,any?,autoload'); @@ -12292,7 +12292,7 @@ Opal.modules["corelib/enumerator"] = function(Opal) {/* Generated by Opal 1.4.0 })('::', null, $nesting); }; -Opal.modules["corelib/numeric"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/numeric"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $truthy = Opal.truthy, $Kernel = Opal.Kernel, $def = Opal.def, $to_ary = Opal.to_ary, $eqeqeq = Opal.eqeqeq, $rb_minus = Opal.rb_minus, $rb_times = Opal.rb_times, $rb_lt = Opal.rb_lt, $eqeq = Opal.eqeq, $rb_divide = Opal.rb_divide, $Opal = Opal.Opal, $hash2 = Opal.hash2, $not = Opal.not, $send = Opal.send, $rb_ge = Opal.rb_ge, $rb_le = Opal.rb_le, $rb_plus = Opal.rb_plus, $rb_gt = Opal.rb_gt, $alias = Opal.alias; Opal.add_stubs('require,include,instance_of?,class,Float,respond_to?,coerce,__send__,===,raise,equal?,-,*,div,<,-@,ceil,to_f,denominator,to_r,==,floor,/,%,Complex,zero?,numerator,abs,arg,coerce_to!,round,<=>,compare,is_a?,!,new,enum_for,to_proc,negative?,>=,<=,+,to_i,truncate,>'); @@ -12768,7 +12768,7 @@ Opal.modules["corelib/numeric"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', null); }; -Opal.modules["corelib/array"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/array"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $falsy = Opal.falsy, $hash_ids = Opal.hash_ids, $yield1 = Opal.yield1, $hash_get = Opal.hash_get, $hash_put = Opal.hash_put, $hash_delete = Opal.hash_delete, $coerce_to = Opal.coerce_to, $respond_to = Opal.respond_to, $klass = Opal.klass, $defs = Opal.defs, $Kernel = Opal.Kernel, $def = Opal.def, $Opal = Opal.Opal, $eqeqeq = Opal.eqeqeq, $hash2 = Opal.hash2, $send2 = Opal.send2, $find_super = Opal.find_super, $send = Opal.send, $rb_gt = Opal.rb_gt, $rb_times = Opal.rb_times, $eqeq = Opal.eqeq, $rb_minus = Opal.rb_minus, $to_a = Opal.to_a, $to_ary = Opal.to_ary, $gvars = Opal.gvars, $rb_ge = Opal.rb_ge, $rb_lt = Opal.rb_lt, $neqeq = Opal.neqeq, $alias = Opal.alias; Opal.add_stubs('require,include,to_a,warn,raise,replace,respond_to?,to_ary,coerce_to?,===,join,to_str,hash,<=>,==,object_id,inspect,enum_for,class,bsearch_index,to_proc,nil?,coerce_to!,>,*,enumerator_size,empty?,size,map,equal?,dup,each,reduce,-,[],dig,eql?,length,exclude_end?,flatten,__id__,&,!,intersection,to_s,new,item,max,min,>=,**,delete_if,reverse,rotate,rand,at,keep_if,shuffle!,<,sort,sort_by,!=,times,[]=,<<,uniq,|,values,is_a?,end,begin,upto,reject,pristine,singleton_class'); @@ -15701,7 +15701,7 @@ Opal.modules["corelib/array"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', Array, $nesting); }; -Opal.modules["corelib/hash"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/hash"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $yield1 = Opal.yield1, $hash = Opal.hash, $hash_init = Opal.hash_init, $hash_get = Opal.hash_get, $hash_put = Opal.hash_put, $hash_delete = Opal.hash_delete, $klass = Opal.klass, $Opal = Opal.Opal, $Kernel = Opal.Kernel, $defs = Opal.defs, $def = Opal.def, $send = Opal.send, $rb_ge = Opal.rb_ge, $rb_gt = Opal.rb_gt, $hash2 = Opal.hash2, $truthy = Opal.truthy, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $alias = Opal.alias; Opal.add_stubs('require,include,coerce_to?,[],merge!,allocate,raise,coerce_to!,each,fetch,>=,>,==,compare_by_identity,lambda?,abs,arity,enum_for,size,respond_to?,class,dig,except!,dup,delete,new,inspect,map,to_proc,flatten,eql?,default,default_proc,default_proc=,-,default=,to_h,proc'); @@ -17193,7 +17193,7 @@ Opal.modules["corelib/hash"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', null, $nesting); }; -Opal.modules["corelib/number"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/number"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $Opal = Opal.Opal, $Kernel = Opal.Kernel, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $not = Opal.not, $rb_lt = Opal.rb_lt, $send2 = Opal.send2, $find_super = Opal.find_super, $send = Opal.send, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq, $rb_divide = Opal.rb_divide, $to_ary = Opal.to_ary, $rb_times = Opal.rb_times, $rb_le = Opal.rb_le, $rb_ge = Opal.rb_ge, $alias = Opal.alias, $const_set = Opal.const_set; Opal.add_stubs('require,bridge,raise,name,class,Float,respond_to?,coerce_to!,__coerced__,===,>,!,**,new,<,to_f,==,nan?,infinite?,enum_for,+,-,gcd,lcm,%,/,frexp,to_i,ldexp,rationalize,*,<<,to_r,truncate,-@,size,<=,>=,inspect,coerce_to?'); @@ -18311,7 +18311,7 @@ Opal.modules["corelib/number"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', $$$('Numeric'), $nesting); }; -Opal.modules["corelib/range"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/range"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $truthy = Opal.truthy, $Kernel = Opal.Kernel, $def = Opal.def, $not = Opal.not, $send2 = Opal.send2, $find_super = Opal.find_super, $rb_lt = Opal.rb_lt, $rb_le = Opal.rb_le, $send = Opal.send, $eqeq = Opal.eqeq, $eqeqeq = Opal.eqeqeq, $rb_gt = Opal.rb_gt, $rb_minus = Opal.rb_minus, $Opal = Opal.Opal, $rb_divide = Opal.rb_divide, $rb_plus = Opal.rb_plus, $rb_times = Opal.rb_times, $rb_ge = Opal.rb_ge, $alias = Opal.alias; Opal.add_stubs('require,include,attr_reader,raise,nil?,<=>,include?,!,<,<=,enum_for,size,upto,to_proc,respond_to?,class,succ,==,===,exclude_end?,eql?,begin,end,last,to_a,>,-@,-,to_i,coerce_to!,ceil,/,is_a?,new,loop,+,*,>=,each_with_index,%,step,bsearch,inspect,[],hash'); @@ -18719,7 +18719,7 @@ Opal.modules["corelib/range"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', null, $nesting); }; -Opal.modules["corelib/proc"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/proc"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $$$ = Opal.$$$, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $Kernel = Opal.Kernel, $defs = Opal.defs, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $Opal = Opal.Opal, $alias = Opal.alias; Opal.add_stubs('raise,proc,call,to_proc,new,source_location,coerce_to!'); @@ -18968,7 +18968,7 @@ Opal.modules["corelib/proc"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', Function) }; -Opal.modules["corelib/method"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/method"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $alias = Opal.alias, $Kernel = Opal.Kernel, $send = Opal.send, $to_a = Opal.to_a; Opal.add_stubs('attr_reader,arity,curry,>>,<<,new,class,join,source_location,raise,call,bind,to_proc'); @@ -19172,7 +19172,7 @@ Opal.modules["corelib/method"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', null); }; -Opal.modules["corelib/variables"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/variables"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $gvars = Opal.gvars, $const_set = Opal.const_set, $Object = Opal.Object, $hash2 = Opal.hash2; Opal.add_stubs('new'); @@ -19190,7 +19190,7 @@ Opal.modules["corelib/variables"] = function(Opal) {/* Generated by Opal 1.4.0 * return ($gvars.SAFE = 0); }; -Opal.modules["corelib/io"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/io"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $const_set = Opal.const_set, $not = Opal.not, $truthy = Opal.truthy, $def = Opal.def, $Kernel = Opal.Kernel, $gvars = Opal.gvars, $send = Opal.send, $to_a = Opal.to_a, $rb_plus = Opal.rb_plus, $neqeq = Opal.neqeq, $range = Opal.range, $hash2 = Opal.hash2, $eqeq = Opal.eqeq, $to_ary = Opal.to_ary, $rb_gt = Opal.rb_gt, $alias = Opal.alias, $rb_minus = Opal.rb_minus, $writer = nil; Opal.add_stubs('attr_reader,attr_accessor,!,match?,include?,size,write,String,flatten,puts,sysread_noraise,+,!=,[],ord,getc,readchar,raise,gets,==,to_str,length,split,sub,sysread,>,to_a,each_line,enum_for,getbyte,closed_write?,closed_read?,new,write_proc=,-,read_proc='); @@ -19663,7 +19663,7 @@ Opal.modules["corelib/io"] = function(Opal) {/* Generated by Opal 1.4.0 */ return $writer[$rb_minus($writer["length"], 1)];; }; -Opal.modules["opal/regexp_anchors"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/regexp_anchors"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $const_set = Opal.const_set; Opal.add_stubs('new'); @@ -19683,7 +19683,7 @@ Opal.modules["opal/regexp_anchors"] = function(Opal) {/* Generated by Opal 1.4.0 })($nesting[0], $nesting) }; -Opal.modules["opal/mini"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["opal/mini"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $Object = Opal.Object; Opal.add_stubs('require'); @@ -19707,7 +19707,7 @@ Opal.modules["opal/mini"] = function(Opal) {/* Generated by Opal 1.4.0 */ return $Object.$require("opal/regexp_anchors"); }; -Opal.modules["corelib/kernel/format"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/kernel/format"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $$$ = Opal.$$$, $coerce_to = Opal.coerce_to, $module = Opal.module, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $Opal = Opal.Opal, $Kernel = Opal.Kernel, $gvars = Opal.gvars, $def = Opal.def, $alias = Opal.alias; Opal.add_stubs('respond_to?,[],==,length,coerce_to?,nil?,to_a,raise,to_int,fetch,Integer,Float,to_ary,to_str,inspect,to_s'); @@ -20274,7 +20274,7 @@ Opal.modules["corelib/kernel/format"] = function(Opal) {/* Generated by Opal 1.4 })('::') }; -Opal.modules["corelib/string/encoding"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/string/encoding"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $hash2 = Opal.hash2, $rb_plus = Opal.rb_plus, $truthy = Opal.truthy, $send = Opal.send, $defs = Opal.defs, $eqeq = Opal.eqeq, $def = Opal.def, $Kernel = Opal.Kernel, $Opal = Opal.Opal, $rb_lt = Opal.rb_lt, $alias = Opal.alias, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $writer = nil; Opal.add_stubs('require,+,[],clone,initialize,new,instance_eval,to_proc,each,const_set,tr,==,default_external,attr_accessor,singleton_class,attr_reader,raise,register,length,bytes,force_encoding,dup,bytesize,enum_for,each_byte,to_a,each_char,each_codepoint,coerce_to!,find,<,default_external=,-'); @@ -20835,7 +20835,7 @@ Opal.modules["corelib/string/encoding"] = function(Opal) {/* Generated by Opal 1 return $writer[$rb_minus($writer["length"], 1)];; }; -Opal.modules["corelib/math"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/math"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $type_error = Opal.type_error, $module = Opal.module, $const_set = Opal.const_set, $Class = Opal.Class, $Kernel = Opal.Kernel, $defs = Opal.defs, $def = Opal.def, $truthy = Opal.truthy, $rb_minus = Opal.rb_minus, $eqeqeq = Opal.eqeqeq, $rb_divide = Opal.rb_divide; Opal.add_stubs('new,raise,Float,Integer,module_function,checked,float!,===,gamma,-,integer!,/,infinite?'); @@ -21341,7 +21341,7 @@ Opal.modules["corelib/math"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', $nesting) }; -Opal.modules["corelib/complex/base"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/complex/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $truthy = Opal.truthy, $def = Opal.def, $klass = Opal.klass; Opal.add_stubs('new,from_string'); @@ -21376,7 +21376,7 @@ Opal.modules["corelib/complex/base"] = function(Opal) {/* Generated by Opal 1.4. })('::', null, $nesting); }; -Opal.modules["corelib/complex"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/complex"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $defs = Opal.defs, $rb_times = Opal.rb_times, $def = Opal.def, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $rb_divide = Opal.rb_divide, $eqeq = Opal.eqeq, $to_ary = Opal.to_ary, $rb_gt = Opal.rb_gt, $neqeq = Opal.neqeq, $const_set = Opal.const_set, $alias = Opal.alias; Opal.add_stubs('require,real?,===,raise,new,*,cos,sin,attr_reader,class,==,real,imag,Complex,-@,+,__coerced__,-,nan?,/,conj,abs2,quo,polar,exp,log,>,!=,divmod,**,hypot,atan2,lcm,denominator,finite?,infinite?,numerator,abs,arg,rationalize,to_f,to_i,to_r,inspect,zero?,positive?,Rational'); @@ -21827,7 +21827,7 @@ Opal.modules["corelib/complex"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', $$$('Numeric'), $nesting); }; -Opal.modules["corelib/rational/base"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/rational/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $def = Opal.def, $klass = Opal.klass; Opal.add_stubs('convert,from_string'); @@ -21856,7 +21856,7 @@ Opal.modules["corelib/rational/base"] = function(Opal) {/* Generated by Opal 1.4 })('::', null); }; -Opal.modules["corelib/rational"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/rational"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $eqeq = Opal.eqeq, $Kernel = Opal.Kernel, $truthy = Opal.truthy, $rb_lt = Opal.rb_lt, $rb_divide = Opal.rb_divide, $defs = Opal.defs, $eqeqeq = Opal.eqeqeq, $not = Opal.not, $Opal = Opal.Opal, $def = Opal.def, $rb_minus = Opal.rb_minus, $rb_times = Opal.rb_times, $rb_plus = Opal.rb_plus, $rb_gt = Opal.rb_gt, $rb_le = Opal.rb_le, $alias = Opal.alias; Opal.add_stubs('require,to_i,==,raise,<,-@,new,gcd,/,nil?,===,reduce,to_r,!,equal?,coerce_to!,to_f,numerator,denominator,<=>,-,*,__coerced__,+,Rational,>,**,abs,ceil,with_precision,floor,<=,truncate,send'); @@ -22309,7 +22309,7 @@ Opal.modules["corelib/rational"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', $$$('Numeric')); }; -Opal.modules["corelib/time"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/time"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $slice = Opal.slice, $klass = Opal.klass, $Kernel = Opal.Kernel, $Opal = Opal.Opal, $defs = Opal.defs, $eqeqeq = Opal.eqeqeq, $def = Opal.def, $truthy = Opal.truthy, $rb_gt = Opal.rb_gt, $rb_lt = Opal.rb_lt, $rb_plus = Opal.rb_plus, $rb_divide = Opal.rb_divide, $rb_minus = Opal.rb_minus, $range = Opal.range, $neqeq = Opal.neqeq, $rb_le = Opal.rb_le, $eqeq = Opal.eqeq, $alias = Opal.alias; Opal.add_stubs('require,include,===,raise,coerce_to!,respond_to?,to_str,to_i,new,<=>,to_f,nil?,>,<,strftime,year,month,day,+,round,/,-,copy_instance_variables,initialize_dup,is_a?,zero?,wday,utc?,mon,yday,hour,min,sec,rjust,ljust,zone,to_s,[],cweek_cyear,isdst,!=,<=,==,ceil'); @@ -23190,7 +23190,7 @@ Opal.modules["corelib/time"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', Date, $nesting); }; -Opal.modules["corelib/struct"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/struct"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $neqeq = Opal.neqeq, $eqeq = Opal.eqeq, $Opal = Opal.Opal, $send = Opal.send, $Class = Opal.Class, $to_a = Opal.to_a, $def = Opal.def, $defs = Opal.defs, $Kernel = Opal.Kernel, $rb_gt = Opal.rb_gt, $rb_minus = Opal.rb_minus, $eqeqeq = Opal.eqeqeq, $rb_lt = Opal.rb_lt, $rb_ge = Opal.rb_ge, $rb_plus = Opal.rb_plus, $alias = Opal.alias; Opal.add_stubs('require,include,!=,upcase,[],==,class,unshift,const_name!,map,coerce_to!,new,each,define_struct_attribute,allocate,initialize,alias_method,module_eval,to_proc,const_set,raise,<<,members,define_method,instance_eval,last,>,length,-,keys,any?,join,[]=,each_with_index,hash,===,<,-@,size,>=,include?,to_sym,instance_of?,__id__,eql?,enum_for,+,name,each_pair,inspect,to_h,args,each_with_object,flatten,to_a,respond_to?,dig'); @@ -23686,7 +23686,7 @@ Opal.modules["corelib/struct"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', null, $nesting); }; -Opal.modules["corelib/dir"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/dir"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $alias = Opal.alias; Opal.add_stubs('[]'); @@ -23732,7 +23732,7 @@ Opal.modules["corelib/dir"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', null, $nesting) }; -Opal.modules["corelib/file"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/file"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $klass = Opal.klass, $const_set = Opal.const_set, $Opal = Opal.Opal, $regexp = Opal.regexp, $rb_plus = Opal.rb_plus, $def = Opal.def, $Kernel = Opal.Kernel, $eqeq = Opal.eqeq, $rb_lt = Opal.rb_lt, $rb_minus = Opal.rb_minus, $range = Opal.range, $send = Opal.send, $alias = Opal.alias; Opal.add_stubs('respond_to?,to_path,coerce_to!,pwd,split,sub,+,unshift,join,home,raise,start_with?,absolute_path,==,<,dirname,-,basename,empty?,rindex,[],length,nil?,gsub,find,=~,map,each_with_index,flatten,reject,to_proc,end_with?'); @@ -24023,7 +24023,7 @@ Opal.modules["corelib/file"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::', $$$('IO'), $nesting) }; -Opal.modules["corelib/process/base"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/process/base"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $klass = Opal.klass, $defs = Opal.defs; @@ -24053,7 +24053,7 @@ Opal.modules["corelib/process/base"] = function(Opal) {/* Generated by Opal 1.4. })('::', null); }; -Opal.modules["corelib/process"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/process"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $defs = Opal.defs, $truthy = Opal.truthy, $Kernel = Opal.Kernel; Opal.add_stubs('const_set,size,<<,__register_clock__,to_f,now,new,[],raise'); @@ -24134,7 +24134,7 @@ Opal.modules["corelib/process"] = function(Opal) {/* Generated by Opal 1.4.0 */ })('::') }; -Opal.modules["corelib/random/formatter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/random/formatter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $module = Opal.module, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $range = Opal.range, $rb_divide = Opal.rb_divide, $Kernel = Opal.Kernel, $Opal = Opal.Opal; Opal.add_stubs('_verify_count,bytes,encode,strict_encode64,random_bytes,urlsafe_encode64,split,hex,[]=,-,[],map,to_proc,join,times,<<,|,ord,/,abs,random_float,raise,coerce_to!,flatten,new,random_number,length,include,extend'); @@ -24316,7 +24316,7 @@ Opal.modules["corelib/random/formatter"] = function(Opal) {/* Generated by Opal })('::', null, $nesting) }; -Opal.modules["corelib/random/mersenne_twister"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/random/mersenne_twister"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $const_set = Opal.const_set, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, mersenne_twister = nil; Opal.add_stubs('generator=,-'); @@ -24421,7 +24421,7 @@ Opal.modules["corelib/random/mersenne_twister"] = function(Opal) {/* Generated b })('::', null); }; -Opal.modules["corelib/random"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/random"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $klass = Opal.klass, $Kernel = Opal.Kernel, $defs = Opal.defs, $Opal = Opal.Opal, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $send = Opal.send; Opal.add_stubs('require,attr_reader,to_int,raise,new_seed,coerce_to!,reseed,rand,seed,bytes,===,==,state,_verify_count,encode,join,new,chr,random_number,random_float,const_defined?,const_set'); @@ -24554,7 +24554,7 @@ Opal.modules["corelib/random"] = function(Opal) {/* Generated by Opal 1.4.0 */ return self.$require("corelib/random/mersenne_twister"); }; -Opal.modules["corelib/unsupported"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/unsupported"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $Kernel = Opal.Kernel, $klass = Opal.klass, $send = Opal.send, $module = Opal.module, $def = Opal.def, $alias = Opal.alias, $defs = Opal.defs; Opal.add_stubs('raise,warn,each,define_method,%'); @@ -24768,7 +24768,7 @@ Opal.modules["corelib/unsupported"] = function(Opal) {/* Generated by Opal 1.4.0 }, -1); }; -Opal.queue(function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.queue(function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $Object = Opal.Object; Opal.add_stubs('require,autoload'); diff --git a/opal/current/opal.min.js b/opal/current/opal.min.js index 47c5b568..e4ed162c 100644 --- a/opal/current/opal.min.js +++ b/opal/current/opal.min.js @@ -1 +1 @@ -(function(global_object){"use strict";var console,nil,BasicObject,_Object,Module,Class,_Opal,Kernel;if("undefined"!=typeof globalThis?global_object=globalThis:"undefined"!=typeof global?global_object=global:"undefined"!=typeof window&&(global_object=window),"log"in(console="object"==typeof global_object.console?global_object.console:null==global_object.console?global_object.console={}:{})||(console.log=function(){}),"warn"in console||(console.warn=console.log),void 0!==global_object.Opal)return console.warn("Opal already loaded. Loading twice can cause troubles, please fix your setup."),global_object.Opal;var Opal=global_object.Opal={};Opal.global=global_object,global_object.Opal=Opal,Opal.config={missing_require_severity:"error",unsupported_features_severity:"warning",experimental_features_severity:"warning",enable_stack_trace:!0};var $has_own=Object.hasOwnProperty,$bind=Function.prototype.bind,$set_proto=Object.setPrototypeOf,$slice=Array.prototype.slice,$splice=Array.prototype.splice,unique_id=4;function $prop(object,name,initialValue){"string"==typeof object?object[name]=initialValue:Object.defineProperty(object,name,{value:initialValue,enumerable:!1,configurable:!0,writable:!0})}Opal.uid=function(){return unique_id+=2},Opal.id=function(obj){return obj.$$is_number?2*obj+1:(null!=obj.$$id||$prop(obj,"$$id",Opal.uid()),obj.$$id)},Opal.gvars={},Opal.exit=function(status){Opal.gvars.DEBUG&&console.log("Exited with status "+status)},Opal.exceptions=[],Opal.pop_exception=function(){var exception=Opal.exceptions.pop();exception?(Opal.gvars["!"]=exception,Opal.gvars["@"]=exception.$backtrace()):Opal.gvars["!"]=Opal.gvars["@"]=nil},Opal.prop=$prop,Opal.defineProperty=Opal.prop,Opal.slice=$slice;var $truthy=Opal.truthy=function(val){return!(!1===val||nil===val||null==val||val instanceof Boolean&&!0!==val.valueOf())};function invoke_tracers_for_class(klass_or_module){var i,ii,tracer;for(i=0,ii=Opal.tracers_for_class.length;i=0;i--){var ancestor=ancestors[i];for(var cvar in ancestor.$$cvars)result[cvar]=ancestor.$$cvars[cvar]}return result},Opal.class_variable_set=function(module,name,value){var i,ancestors=Opal.ancestors(module);for(i=ancestors.length-2;i>=0;i--){var ancestor=ancestors[i];if($has_own.call(ancestor.$$cvars,name))return ancestor.$$cvars[name]=value,value}return module.$$cvars[name]=value,value},Opal.class_variable_get=function(module,name,tolerant){if($has_own.call(module.$$cvars,name))return module.$$cvars[name];var i,ancestors=Opal.ancestors(module),length=ancestors.length;for(i=0;i1||(has_mlhs||has_trailing_comma)&&1===block.length)&&(arg=Opal.to_ary(arg)),(block.length>1||has_trailing_comma&&1===block.length)&&arg.$$is_array?block.apply(null,arg):block(arg)},Opal.yieldX=function(block,args){if("function"!=typeof block)throw Opal.LocalJumpError.$new("no block given");if(block.length>1&&1===args.length&&args[0].$$is_array)return block.apply(null,args[0]);if(!args.$$is_array){for(var args_ary=new Array(args.length),i=0,l=args_ary.length;i=0;k--)if(void 0!==(refinement=refinements[k]).$$refine_modules&&void 0!==(refine_modules=refinement.$$refine_modules)[ancestor]&&void 0!==(refine_module=refine_modules[ancestor]).$$prototype["$"+method])return body=refine_module.$$prototype["$"+method],Opal.send2(recv,body,method,args,block);return Opal.send(recv,method,args,block)},Opal.lambda=function(block,blockopts){return block.$$is_lambda=!0,apply_blockopts(block,blockopts),block},Opal.def=function(obj,jsid,body,blockopts){return apply_blockopts(body,blockopts),obj===Opal.top?Opal.defn(Opal.Object,jsid,body):!obj.$$eval&&obj.$$is_a_module?Opal.defn(obj,jsid,body):Opal.defs(obj,jsid,body)},Opal.defn=function(module,jsid,body){body.displayName=jsid,body.$$owner=module;var name=jsid.substr(1),proto=module.$$prototype;if(proto.hasOwnProperty("$$dummy")&&(proto=proto.$$define_methods_on),$prop(proto,jsid,body),module.$$is_module){module.$$module_function&&Opal.defs(module,jsid,body);for(var i=0,iclasses=module.$$iclasses,length=iclasses.length;i=0,i=0,ii=parts.length;ir:l["$>"](r)},Opal.rb_le=function(l,r){return"number"==typeof l&&"number"==typeof r?l<=r:l["$<="](r)},Opal.rb_ge=function(l,r){return"number"==typeof l&&"number"==typeof r?l>=r:l["$>="](r)},Opal.eqeq=function(lhs,rhs){return"number"==typeof lhs&&"number"==typeof rhs||"string"==typeof lhs&&"string"==typeof rhs?lhs===rhs:$truthy(lhs["$=="](rhs))},Opal.eqeqeq=function(lhs,rhs){return"number"==typeof lhs&&"number"==typeof rhs||"string"==typeof lhs&&"string"==typeof rhs?lhs===rhs:$truthy(lhs["$==="](rhs))},Opal.neqeq=function(lhs,rhs){return"number"==typeof lhs&&"number"==typeof rhs||"string"==typeof lhs&&"string"==typeof rhs?lhs!==rhs:$truthy(lhs["$!="](rhs))},Opal.not=function(arg){return!0!==arg&&(null==arg||!1===arg||nil===arg||$truthy(arg["$!"]()))},Opal.BasicObject=BasicObject=Opal.allocate_class("BasicObject",null),Opal.Object=_Object=Opal.allocate_class("Object",Opal.BasicObject),Opal.Module=Module=Opal.allocate_class("Module",Opal.Object),Opal.Class=Class=Opal.allocate_class("Class",Opal.Module),Opal.Opal=_Opal=Opal.allocate_module("Opal"),Opal.Kernel=Kernel=Opal.allocate_module("Kernel"),$set_proto(Opal.BasicObject,Opal.Class.$$prototype),$set_proto(Opal.Object,Opal.Class.$$prototype),$set_proto(Opal.Module,Opal.Class.$$prototype),$set_proto(Opal.Class,Opal.Class.$$prototype),BasicObject.$$const.BasicObject=BasicObject,$const_set(_Object,"BasicObject",BasicObject),$const_set(_Object,"Object",_Object),$const_set(_Object,"Module",Module),$const_set(_Object,"Class",Class),$const_set(_Object,"Opal",_Opal),$const_set(_Object,"Kernel",Kernel),BasicObject.$$class=Class,_Object.$$class=Class,Module.$$class=Class,Class.$$class=Class,_Opal.$$class=Module,Kernel.$$class=Module,$prop(_Object.$$prototype,"toString",(function(){var to_s=this.$to_s();return to_s.$$is_string&&"object"==typeof to_s?to_s.valueOf():to_s})),$prop(_Object.$$prototype,"$require",Opal.require),Opal.top=new _Object,Opal.top.$to_s=Opal.top.$inspect=function(){return"main"},Opal.top.$define_method=function top_define_method(){var args=Opal.slice.call(arguments),block=top_define_method.$$p;return delete top_define_method.$$p,Opal.send(_Object,"define_method",args,block)},Opal.NilClass=Opal.allocate_class("NilClass",Opal.Object),$const_set(_Object,"NilClass",Opal.NilClass),(nil=Opal.nil=new Opal.NilClass).$$id=4,nil.call=nil.apply=function(){throw Opal.LocalJumpError.$new("no block given")},Opal.breaker=new Error("unexpected break (old)"),Opal.returner=new Error("unexpected return"),TypeError.$$super=Error}).call(this),Opal.loaded(["corelib/runtime.js"]),Opal.modules["corelib/helpers"]=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$type_error=Opal.type_error,$coerce_to=Opal.coerce_to,$module=Opal.module,$defs=Opal.defs,$eqeqeq=Opal.eqeqeq,$Kernel=Opal.Kernel,$truthy=Opal.truthy,$Opal=Opal.Opal;return Opal.add_stubs("===,raise,respond_to?,nil?,__send__,<=>,class,coerce_to!,new,to_s,__id__"),function($base){var self=$module("::","Opal");$defs(self,"$bridge",(function(constructor,klass){return Opal.bridge(constructor,klass)}),2),$defs(self,"$coerce_to!",(function(object,type,method,$a){var $post_args,coerced=nil;return $post_args=Opal.slice.call(arguments,3),coerced=$coerce_to(object,type,method,$post_args),$eqeqeq(type,coerced)||$Kernel.$raise($type_error(object,type,method,coerced)),coerced}),-4),$defs(self,"$coerce_to?",(function(object,type,method,$a){var args,coerced=nil;return args=Opal.slice.call(arguments,3),$truthy(object["$respond_to?"](method))?(coerced=$coerce_to(object,type,method,args),$truthy(coerced["$nil?"]())?nil:($eqeqeq(type,coerced)||$Kernel.$raise($type_error(object,type,method,coerced)),coerced)):nil}),-4),$defs(self,"$try_convert",(function(object,type,method){return $eqeqeq(type,object)?object:$truthy(object["$respond_to?"](method))?object.$__send__(method):nil}),3),$defs(self,"$compare",(function(a,b){var compare;return compare=a["$<=>"](b),$truthy(compare===nil)&&$Kernel.$raise($$$("ArgumentError"),"comparison of "+a.$class()+" with "+b.$class()+" failed"),compare}),2),$defs(self,"$destructure",(function(args){if(1==args.length)return args[0];if(args.$$is_array)return args;for(var args_ary=new Array(args.length),i=0,l=args_ary.length;i=0;i--)method_name=method_names[i],(method=owner_class.$$prototype["$"+method_name])&&!method.$$stub&&(method.$$pristine=!0);return nil}),-2);var inspect_stack=[];return $defs(self,"$inspect",(function(value){var pushed=!1;return function(){try{try{return null===value?"null":void 0===value?"undefined":void 0===value.$$class?Object.prototype.toString.apply(value):"function"!=typeof value.$inspect||value.$inspect.$$stub||-1!==inspect_stack.indexOf(value.$__id__())?"#<"+value.$$class+":0x"+value.$__id__().$to_s(16)+">":(inspect_stack.push(value.$__id__()),pushed=!0,value.$inspect())}catch($err){if(!Opal.rescue($err,[$$$("Exception")]))throw $err;$err;try{return"#<"+value.$$class+":0x"+value.$__id__().$to_s(16)+">"}finally{Opal.pop_exception()}}}finally{pushed&&inspect_stack.pop()}}()}),-1)}()},Opal.modules["corelib/module"]=function(Opal){var self,$proto,nil=Opal.nil,$$$=Opal.$$$,$truthy=Opal.truthy,$coerce_to=Opal.coerce_to,$const_set=Opal.const_set,$Object=Opal.Object,$klass=Opal.klass,$defs=Opal.defs,$send=Opal.send,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$Module=Opal.Module,$Kernel=Opal.Kernel,$rb_lt=Opal.rb_lt,$rb_gt=Opal.rb_gt,$to_a=Opal.to_a,$hash2=Opal.hash2,$Opal=Opal.Opal,$eqeq=Opal.eqeq,$lambda=Opal.lambda,$range=Opal.range,$send2=Opal.send2,$find_super=Opal.find_super,$alias=Opal.alias;return Opal.add_stubs("module_eval,to_proc,===,raise,equal?,<,>,nil?,attr_reader,attr_writer,warn,attr_accessor,const_name?,class_variable_name!,const_name!,=~,new,inject,split,const_get,==,start_with?,!~,bind,call,class,append_features,included,name,cover?,size,merge,compile,proc,any?,prepend_features,prepended,to_s,__id__,constants,include?,copy_class_variables,copy_constants,class_exec,inspect"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Module"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$defs(self,"$allocate",(function(){var module=Opal.allocate_module(nil,(function(){}));return this!==Opal.Module&&Object.setPrototypeOf(module,this.$$prototype),module}),0),$def(self,"$initialize",(function $$initialize(){var block=$$initialize.$$p||nil;return delete $$initialize.$$p,block!==nil?$send(this,"module_eval",[],block.$to_proc()):nil}),0),$def(self,"$===",(function(object){return!$truthy(null==object)&&Opal.is_a(object,this)}),1),$def(self,"$<",(function(other){$eqeqeq($Module,other)||$Kernel.$raise($$$("TypeError"),"compared with non class/module");var ancestors,i,length;if(this===other)return!1;for(i=0,length=(ancestors=Opal.ancestors(this)).length;i",(function(other){return $eqeqeq($Module,other)||$Kernel.$raise($$$("TypeError"),"compared with non class/module"),$rb_lt(other,this)}),1),$def(self,"$>=",(function(other){var $ret_or_1;return $truthy($ret_or_1=this["$equal?"](other))?$ret_or_1:$rb_gt(this,other)}),1),$def(self,"$<=>",(function(other){var lt=nil;return this===other?0:$eqeqeq($Module,other)?(lt=$rb_lt(this,other),$truthy(lt["$nil?"]())?nil:$truthy(lt)?-1:1):nil}),1),$def(self,"$alias_method",(function(newname,oldname){return newname=$coerce_to(newname,$$$("String"),"to_str"),oldname=$coerce_to(oldname,$$$("String"),"to_str"),Opal.alias(this,newname,oldname),this}),2),$def(self,"$alias_native",(function(mid,jsid){return null==jsid&&(jsid=mid),Opal.alias_native(this,mid,jsid),this}),-2),$def(self,"$ancestors",(function(){return Opal.ancestors(this)}),0),$def(self,"$append_features",(function(includer){return Opal.append_features(this,includer),this}),1),$def(self,"$attr_accessor",(function($a){var $post_args,names,self=this;return $post_args=Opal.slice.call(arguments),$send(self,"attr_reader",$to_a(names=$post_args)),$send(self,"attr_writer",$to_a(names))}),-1),$def(self,"$attr",(function($a){var args,self=this;return 2!=(args=Opal.slice.call(arguments)).length||!0!==args[1]&&!1!==args[1]?$send(self,"attr_reader",$to_a(args)):(self.$warn("optional boolean argument is obsoleted",$hash2(["uplevel"],{uplevel:1})),args[1]?self.$attr_accessor(args[0]):self.$attr_reader(args[0]),nil)}),-1),$def(self,"$attr_reader",(function($a){var names,self=this;names=Opal.slice.call(arguments);for(var proto=self.$$prototype,i=names.length-1;i>=0;i--){var name=names[i],id="$"+name,ivar=Opal.ivar(name),body=function(ivar){return function(){return null==this[ivar]?nil:this[ivar]}}(ivar);Opal.prop(proto,ivar,nil),body.$$parameters=[],body.$$arity=0,Opal.defn(self,id,body)}return nil}),-1),$def(self,"$attr_writer",(function($a){var names,self=this;names=Opal.slice.call(arguments);for(var proto=self.$$prototype,i=names.length-1;i>=0;i--){var name=names[i],id="$"+name+"=",ivar=Opal.ivar(name),body=function(ivar){return function(value){return this[ivar]=value}}(ivar);body.$$parameters=[["req"]],body.$$arity=1,Opal.prop(proto,ivar,nil),Opal.defn(self,id,body)}return nil}),-1),$def(self,"$autoload",(function(const$,path){return $$("Opal")["$const_name?"](const$)||$Kernel.$raise($$$("NameError"),"autoload must be constant name: "+const$),""==path&&$Kernel.$raise($$$("ArgumentError"),"empty file name"),this.$$const.hasOwnProperty(const$)||(this.$$autoload||(this.$$autoload={}),Opal.const_cache_version++,this.$$autoload[const$]={path:path,loaded:!1,required:!1,success:!1,exception:!1}),nil}),2),$def(self,"$autoload?",(function(const$){if(this.$$autoload&&this.$$autoload[const$]&&!this.$$autoload[const$].required&&!this.$$autoload[const$].success)return this.$$autoload[const$].path;for(var ancestors=this.$ancestors(),i=0,length=ancestors.length;i=0;i--){var mod=mods[i];mod.$$is_module||$Kernel.$raise($$$("TypeError"),"wrong argument type "+mod.$class()+" (expected Module)"),mod.$append_features(self),mod.$included(self)}return self}),-1),$def(self,"$included_modules",(function(){return Opal.included_modules(this)}),0),$def(self,"$include?",(function(mod){mod.$$is_module||$Kernel.$raise($$$("TypeError"),"wrong argument type "+mod.$class()+" (expected Module)");var i,ii,mod2,ancestors=Opal.ancestors(this);for(i=0,ii=ancestors.length;i=0;i--){var mod=mods[i];mod.$$is_module||$Kernel.$raise($$$("TypeError"),"wrong argument type "+mod.$class()+" (expected Module)"),mod.$prepend_features(self),mod.$prepended(self)}return self}),-1),$def(self,"$prepend_features",(function(prepender){return this.$$is_module||$Kernel.$raise($$$("TypeError"),"wrong argument type "+this.$class()+" (expected Module)"),Opal.prepend_features(this,prepender),this}),1),$def(self,"$prepended",(function(mod){return nil}),1),$def(self,"$remove_const",(function(name){return Opal.const_remove(this,name)}),1),$def(self,"$to_s",(function(){var $ret_or_1;return $truthy($ret_or_1=Opal.Module.$name.call(this))?$ret_or_1:"#<"+(this.$$is_module?"Module":"Class")+":0x"+this.$__id__().$to_s(16)+">"}),0),$def(self,"$undef_method",(function($a){for(var names,self=this,i=0,length=(names=Opal.slice.call(arguments)).length;i":$send2(this,$find_super(this,"inspect",$$inspect,!1,!0),"inspect",[],$yield)}),0)},Opal.modules["corelib/class"]=function(Opal){var self=Opal.top,nil=Opal.nil,$klass=Opal.klass,$send=Opal.send,$defs=Opal.defs,$def=Opal.def,$rb_plus=Opal.rb_plus,$send2=Opal.send2,$find_super=Opal.find_super,$alias=Opal.alias;return Opal.add_stubs("require,class_eval,to_proc,+,subclasses,flatten,map,initialize_copy,allocate,name,to_s"),self.$require("corelib/module"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Class"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$new",(function $Class_new$1(superclass){var block=$Class_new$1.$$p||nil;if(delete $Class_new$1.$$p,null==superclass&&(superclass=$$("Object")),!superclass.$$is_class)throw Opal.TypeError.$new("superclass must be a Class");var klass=Opal.allocate_class(nil,superclass);return superclass.$inherited(klass),block!==nil&&$send(klass,"class_eval",[],block.$to_proc()),klass}),-1),$def(self,"$allocate",(function(){var obj=new this.$$constructor;return obj.$$id=Opal.uid(),obj}),0),$def(self,"$descendants",(function(){return $rb_plus(this.$subclasses(),$send(this.$subclasses(),"map",[],"descendants".$to_proc()).$flatten())}),0),$def(self,"$inherited",(function(cls){return nil}),1),$def(self,"$initialize_dup",(function(original){this.$initialize_copy(original),this.$$name=null,this.$$full_name=null}),1),$def(self,"$new",(function $Class_new$2($a){var args,block=$Class_new$2.$$p||nil,self=this;delete $Class_new$2.$$p,args=Opal.slice.call(arguments);var object=self.$allocate();return Opal.send(object,object.$initialize,args,block),object}),-1),$def(self,"$subclasses",(function(){if("undefined"!=typeof WeakRef){var i,subclass,out=[];for(i=0;i":singleton_of?"#>":$send2(this,$find_super(this,"to_s",$$to_s,!1,!0),"to_s",[],null)}),0),$alias(self,"inspect","to_s")}(0,0,[])},Opal.modules["corelib/basic_object"]=function(Opal){"use strict";var self,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$def=Opal.def,$alias=Opal.alias,$truthy=Opal.truthy,$range=Opal.range,$Kernel=Opal.Kernel,$to_a=Opal.to_a,$hash2=Opal.hash2,$Opal=Opal.Opal,$send=Opal.send,$eqeq=Opal.eqeq,$rb_ge=Opal.rb_ge;return Opal.add_stubs("==,raise,inspect,!,nil?,cover?,size,merge,compile,proc,[],first,>=,length,instance_variable_get,any?,new,caller,pristine"),self=$klass("::",null,"BasicObject"),$def(self,"$initialize",(function($a){return Opal.slice.call(arguments),nil}),-1),$def(self,"$==",(function(other){return this===other}),1),$def(self,"$eql?",(function(other){return this["$=="](other)}),1),$alias(self,"equal?","=="),$def(self,"$__id__",(function(){return null!=this.$$id||Opal.prop(this,"$$id",Opal.uid()),this.$$id}),0),$def(self,"$__send__",(function $$__send__(symbol,$a){var args,block=$$__send__.$$p||nil,self=this;delete $$__send__.$$p,args=Opal.slice.call(arguments,1),symbol.$$is_string||self.$raise($$$("TypeError"),self.$inspect()+" is not a symbol nor a string");var func=self["$"+symbol];return func?(block!==nil&&(func.$$p=block),func.apply(self,args)):(block!==nil&&(self.$method_missing.$$p=block),self.$method_missing.apply(self,[symbol].concat(args)))}),-2),$def(self,"$!",(function(){return!1}),0),$def(self,"$!=",(function(other){return this["$=="](other)["$!"]()}),1),$def(self,"$instance_eval",(function $$instance_eval($a){var args,$b,block=$$instance_eval.$$p||nil,self=this,string=nil,file=nil,default_eval_options=nil,$ret_or_1=nil,compiling_options=nil,compiled=nil;if(delete $$instance_eval.$$p,args=Opal.slice.call(arguments),$truthy(block["$nil?"]())&&$truthy(!!Opal.compile))$truthy($range(1,3,!1)["$cover?"](args.$size()))||$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments (0 for 1..3)"),string=null==($b=[].concat($to_a(args)))[0]?nil:$b[0],file=null==$b[1]?nil:$b[1],null==$b[2]||$b[2],default_eval_options=$hash2(["file","eval"],{file:$truthy($ret_or_1=file)?$ret_or_1:"(eval)",eval:!0}),compiling_options=Opal.hash({arity_check:!1}).$merge(default_eval_options),compiled=$Opal.$compile(string,compiling_options),block=$send($Kernel,"proc",[],(function $$5(){var self=null==$$5.$$s?this:$$5.$$s;return new Function("Opal,self","return "+compiled)(Opal,self)}),{$$arity:0,$$s:self});else{if($truthy(block["$nil?"]())&&$truthy($rb_ge(args.$length(),1))&&$eqeq(args.$first()["$[]"](0),"@"))return self.$instance_variable_get(args.$first());$truthy(args["$any?"]())&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+args.$size()+" for 0)")}var result,old=block.$$s;if(block.$$s=null,self.$$is_a_module){self.$$eval=!0;try{result=block.call(self,self)}finally{self.$$eval=!1}}else result=block.call(self,self);return block.$$s=old,result}),-1),$def(self,"$instance_exec",(function $$instance_exec($a){var args,block=$$instance_exec.$$p||nil,self=this;delete $$instance_exec.$$p,args=Opal.slice.call(arguments),$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"no block given");var result,block_self=block.$$s;if(block.$$s=null,self.$$is_a_module){self.$$eval=!0;try{result=block.apply(self,args)}finally{self.$$eval=!1}}else result=block.apply(self,args);return block.$$s=block_self,result}),-1),$def(self,"$singleton_method_added",(function($a){return Opal.slice.call(arguments),nil}),-1),$def(self,"$singleton_method_removed",(function($a){return Opal.slice.call(arguments),nil}),-1),$def(self,"$singleton_method_undefined",(function($a){return Opal.slice.call(arguments),nil}),-1),$def(self,"$method_missing",(function $$method_missing(symbol,$a){var args,self=this,inspect_result=nil;return delete $$method_missing.$$p,args=Opal.slice.call(arguments,1),inspect_result=$Opal.$inspect(self),$Kernel.$raise($$$("NoMethodError").$new("undefined method `"+symbol+"' for "+inspect_result,symbol,args),nil,$Kernel.$caller(1))}),-2),$Opal.$pristine(self,"method_missing"),$def(self,"$respond_to_missing?",(function(method_name,include_all){return null==include_all&&(include_all=!1),!1}),-2)},Opal.modules["corelib/kernel"]=function(Opal){"use strict";var self,nil=Opal.nil,$$$=Opal.$$$,$truthy=Opal.truthy,$coerce_to=Opal.coerce_to,$respond_to=Opal.respond_to,$Opal=Opal.Opal,$module=Opal.module,$def=Opal.def,$Kernel=Opal.Kernel,$gvars=Opal.gvars,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_lt=Opal.rb_lt,$Object=Opal.Object,$alias=Opal.alias,$klass=Opal.klass;return Opal.add_stubs("!,=~,==,object_id,raise,new,class,coerce_to?,<<,allocate,copy_instance_variables,copy_singleton_methods,initialize_clone,initialize_copy,define_method,singleton_class,to_proc,initialize_dup,for,empty?,pop,call,append_features,extend_object,extended,gets,__id__,include?,each,instance_variables,instance_variable_get,inspect,+,to_s,instance_variable_name!,respond_to?,to_int,coerce_to!,Integer,nil?,===,enum_for,result,any?,print,format,puts,<=,length,[],readline,<,first,split,caller,map,to_str,exception,backtrace,rand,respond_to_missing?,pristine,try_convert!,expand_path,join,start_with?,new_seed,srand,tag,value,open,include"),function($base,$parent_nesting){var self=$module("::","Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$=~",(function(obj){return!1}),1),$def(self,"$!~",(function(obj){return this["$=~"](obj)["$!"]()}),1),$def(self,"$===",(function(other){var $ret_or_1;return $truthy($ret_or_1=this.$object_id()["$=="](other.$object_id()))?$ret_or_1:this["$=="](other)}),1),$def(self,"$<=>",(function(other){this.$$comparable=!0;var x=this["$=="](other);return x&&x!==nil?0:nil}),1),$def(self,"$method",(function(name){var meth=this["$"+name];return meth&&!meth.$$stub||$Kernel.$raise($$$("NameError").$new("undefined method `"+name+"' for class `"+this.$class()+"'",name)),$$$("Method").$new(this,meth.$$owner||this.$class(),meth,name)}),1),$def(self,"$methods",(function(all){return null==all&&(all=!0),$truthy(all)?Opal.methods(this):Opal.own_methods(this)}),-1),$def(self,"$public_methods",(function(all){return null==all&&(all=!0),$truthy(all)?Opal.methods(this):Opal.receiver_methods(this)}),-1),$def(self,"$Array",(function(object){var coerced;return object===nil?[]:object.$$is_array?object:(coerced=$Opal["$coerce_to?"](object,$$$("Array"),"to_ary"))!==nil||(coerced=$Opal["$coerce_to?"](object,$$$("Array"),"to_a"))!==nil?coerced:[object]}),1),$def(self,"$at_exit",(function $$at_exit(){var $ret_or_1,block=$$at_exit.$$p||nil;return null==$gvars.__at_exit__&&($gvars.__at_exit__=nil),delete $$at_exit.$$p,$gvars.__at_exit__=$truthy($ret_or_1=$gvars.__at_exit__)?$ret_or_1:[],$gvars.__at_exit__["$<<"](block),block}),0),$def(self,"$caller",(function(start,length){var stack,result;null==start&&(start=1),null==length&&(length=nil),result=[];for(var i=start+1,ii=(stack=(new Error).$backtrace()).length;i0&&(method=$post_args.shift()),null==method&&(method="each"),args=$post_args,$send($$$("Enumerator"),"for",[self,method].concat($to_a(args)),block.$to_proc())}),-1),$def(self,"$equal?",(function(other){return this===other}),1),$def(self,"$exit",(function(status){var $ret_or_1;for(null==$gvars.__at_exit__&&($gvars.__at_exit__=nil),null==status&&(status=!0),$gvars.__at_exit__=$truthy($ret_or_1=$gvars.__at_exit__)?$ret_or_1:[];!$truthy($gvars.__at_exit__["$empty?"]());)$gvars.__at_exit__.$pop().$call();return status=status.$$is_boolean?status?0:1:$coerce_to(status,$$$("Integer"),"to_int"),Opal.exit(status),nil}),-1),$def(self,"$extend",(function($a){var mods,self=this;mods=Opal.slice.call(arguments);for(var singleton=self.$singleton_class(),i=mods.length-1;i>=0;i--){var mod=mods[i];mod.$$is_module||$Kernel.$raise($$$("TypeError"),"wrong argument type "+mod.$class()+" (expected Module)"),mod.$append_features(singleton),mod.$extend_object(self),mod.$extended(self)}return self}),-1),$def(self,"$gets",(function($a){var args;return null==$gvars.stdin&&($gvars.stdin=nil),args=Opal.slice.call(arguments),$send($gvars.stdin,"gets",$to_a(args))}),-1),$def(self,"$hash",(function(){return this.$__id__()}),0),$def(self,"$initialize_copy",(function(other){return nil}),1);var inspect_stack=[];$def(self,"$inspect",(function(){var self=this,ivs=nil,id=nil,pushed=nil;return function(){try{try{return ivs="",id=self.$__id__(),$truthy(inspect_stack["$include?"](id))?ivs=" ...":(inspect_stack["$<<"](id),pushed=!0,$send(self.$instance_variables(),"each",[],(function $$7(i){var ivar,inspect;return null==i&&(i=nil),ivar=(null==$$7.$$s?this:$$7.$$s).$instance_variable_get(i),inspect=$$("Opal").$inspect(ivar),ivs=$rb_plus(ivs," "+i+"="+inspect)}),{$$arity:1,$$s:self})),"#<"+self.$class()+":0x"+id.$to_s(16)+ivs+">"}catch($err){if(!Opal.rescue($err,[$$("StandardError")]))throw $err;$err;try{return"#<"+self.$class()+":0x"+id.$to_s(16)+">"}finally{Opal.pop_exception()}}}finally{$truthy(pushed)&&inspect_stack.$pop()}}()}),0),$def(self,"$instance_of?",(function(klass){return klass.$$is_class||klass.$$is_module||$Kernel.$raise($$$("TypeError"),"class or module required"),this.$$class===klass}),1),$def(self,"$instance_variable_defined?",(function(name){return name=$Opal["$instance_variable_name!"](name),Opal.hasOwnProperty.call(this,name.substr(1))}),1),$def(self,"$instance_variable_get",(function(name){name=$Opal["$instance_variable_name!"](name);var ivar=this[Opal.ivar(name.substr(1))];return null==ivar?nil:ivar}),1),$def(self,"$instance_variable_set",(function(name,value){return name=$Opal["$instance_variable_name!"](name),this[Opal.ivar(name.substr(1))]=value}),2),$def(self,"$remove_instance_variable",(function(name){name=$Opal["$instance_variable_name!"](name);var val,key=Opal.ivar(name.substr(1));return this.hasOwnProperty(key)?(val=this[key],delete this[key],val):$Kernel.$raise($$$("NameError"),"instance variable "+name+" not defined")}),1),$def(self,"$instance_variables",(function(){var ivar,result=[];for(var name in this)this.hasOwnProperty(name)&&"$"!==name.charAt(0)&&(ivar="$"===name.substr(-1)?name.slice(0,name.length-1):name,result.push("@"+ivar));return result}),0),$def(self,"$Integer",(function(value,base){var i,str,base_digits;return value.$$is_string?"0"===value?0:(void 0===base?base=0:(1===(base=$coerce_to(base,$$$("Integer"),"to_int"))||base<0||base>36)&&$Kernel.$raise($$$("ArgumentError"),"invalid radix "+base),str=(str=(str=value.toLowerCase()).replace(/(\d)_(?=\d)/g,"$1")).replace(/^(\s*[+-]?)(0[bodx]?)/,(function(_,head,flag){switch(flag){case"0b":if(0===base||2===base)return base=2,head;case"0":case"0o":if(0===base||8===base)return base=8,head;case"0d":if(0===base||10===base)return base=10,head;case"0x":if(0===base||16===base)return base=16,head}$Kernel.$raise($$$("ArgumentError"),'invalid value for Integer(): "'+value+'"')})),base_digits="0-"+((base=0===base?10:base)<=10?base-1:"9a-"+String.fromCharCode(base-11+97)),new RegExp("^\\s*[+-]?["+base_digits+"]+\\s*$").test(str)||$Kernel.$raise($$$("ArgumentError"),'invalid value for Integer(): "'+value+'"'),i=parseInt(str,base),isNaN(i)&&$Kernel.$raise($$$("ArgumentError"),'invalid value for Integer(): "'+value+'"'),i):(void 0!==base&&$Kernel.$raise($$$("ArgumentError"),"base specified for non string value"),value===nil&&$Kernel.$raise($$$("TypeError"),"can't convert nil into Integer"),value.$$is_number?((value===1/0||value===-1/0||isNaN(value))&&$Kernel.$raise($$$("FloatDomainError"),value),Math.floor(value)):value["$respond_to?"]("to_int")&&(i=value.$to_int())!==nil?i:$Opal["$coerce_to!"](value,$$$("Integer"),"to_i"))}),-2),$def(self,"$Float",(function(value){var str;return value===nil&&$Kernel.$raise($$$("TypeError"),"can't convert nil into Float"),value.$$is_string?(str=(str=value.toString()).replace(/(\d)_(?=\d)/g,"$1"),/^\s*[-+]?0[xX][0-9a-fA-F]+\s*$/.test(str)?$Kernel.$Integer(str):(/^\s*[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?\s*$/.test(str)||$Kernel.$raise($$$("ArgumentError"),'invalid value for Float(): "'+value+'"'),parseFloat(str))):$Opal["$coerce_to!"](value,$$$("Float"),"to_f")}),1),$def(self,"$Hash",(function(arg){return $truthy(arg["$nil?"]())||$eqeq(arg,[])?$hash2([],{}):$eqeqeq($$$("Hash"),arg)?arg:$Opal["$coerce_to!"](arg,$$$("Hash"),"to_hash")}),1),$def(self,"$is_a?",(function(klass){return klass.$$is_class||klass.$$is_module||$Kernel.$raise($$$("TypeError"),"class or module required"),Opal.is_a(this,klass)}),1),$def(self,"$itself",(function(){return this}),0),$def(self,"$lambda",(function $$lambda(){var block=$$lambda.$$p||nil;return delete $$lambda.$$p,Opal.lambda(block)}),0),$def(self,"$load",(function(file){return file=$Opal["$coerce_to!"](file,$$$("String"),"to_str"),Opal.load(file)}),1),$def(self,"$loop",(function $$loop(){var $yield=$$loop.$$p||nil,e=nil;if(delete $$loop.$$p,$yield===nil)return $send(this,"enum_for",["loop"],(function(){return $$$($$$("Float"),"INFINITY")}),0);for(;$truthy(!0);)try{Opal.yieldX($yield,[])}catch($err){if(!Opal.rescue($err,[$$$("StopIteration")]))throw $err;e=$err;try{return e.$result()}finally{Opal.pop_exception()}}return this}),0),$def(self,"$nil?",(function(){return!1}),0),$def(self,"$printf",(function($a){var $post_args,args,self=this;return $post_args=Opal.slice.call(arguments),$truthy((args=$post_args)["$any?"]())&&self.$print($send(self,"format",$to_a(args))),nil}),-1),$def(self,"$proc",(function $$proc(){var block=$$proc.$$p||nil;return delete $$proc.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to create Proc object without a block"),block.$$is_lambda=!1,block}),0),$def(self,"$puts",(function($a){var strs;return null==$gvars.stdout&&($gvars.stdout=nil),strs=Opal.slice.call(arguments),$send($gvars.stdout,"puts",$to_a(strs))}),-1),$def(self,"$p",(function($a){var $post_args,args;return $post_args=Opal.slice.call(arguments),$send(args=$post_args,"each",[],(function(obj){return null==$gvars.stdout&&($gvars.stdout=nil),null==obj&&(obj=nil),$gvars.stdout.$puts(obj.$inspect())}),1),$truthy($rb_le(args.$length(),1))?args["$[]"](0):args}),-1),$def(self,"$print",(function($a){var strs;return null==$gvars.stdout&&($gvars.stdout=nil),strs=Opal.slice.call(arguments),$send($gvars.stdout,"print",$to_a(strs))}),-1),$def(self,"$readline",(function($a){var args;return null==$gvars.stdin&&($gvars.stdin=nil),args=Opal.slice.call(arguments),$send($gvars.stdin,"readline",$to_a(args))}),-1),$def(self,"$warn",(function($a,$b){var $post_args,$kwargs,strs,uplevel,$c,$d,self=this,location=nil;if(null==$gvars.VERBOSE&&($gvars.VERBOSE=nil),null==$gvars.stderr&&($gvars.stderr=nil),$post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return strs=$post_args,null==(uplevel=$kwargs.$$smap.uplevel)&&(uplevel=nil),$truthy(uplevel)&&(uplevel=$Opal["$coerce_to!"](uplevel,$$$("Integer"),"to_str"),$truthy($rb_lt(uplevel,0))&&$Kernel.$raise($$$("ArgumentError"),"negative level ("+uplevel+")"),$d=($c=self.$caller($rb_plus(uplevel,1),1).$first())===nil||null==$c?nil:$send($c,"split",[":in `"]),location=$d===nil||null==$d?nil:$send($d,"first",[]),$truthy(location)&&(location+=": "),strs=$send(strs,"map",[],(function(s){return null==s&&(s=nil),location+"warning: "+s}),1)),$truthy($gvars.VERBOSE["$nil?"]())||$truthy(strs["$empty?"]())?nil:$send($gvars.stderr,"puts",$to_a(strs))}),-1),$def(self,"$raise",(function(exception,string,backtrace){if(null==$gvars["!"]&&($gvars["!"]=nil),null==$gvars["@"]&&($gvars["@"]=nil),null==string&&(string=nil),null==backtrace&&(backtrace=nil),null==exception&&$gvars["!"]!==nil)throw $gvars["!"];throw null==exception?exception=$$$("RuntimeError").$new(""):$respond_to(exception,"$to_str")?exception=$$$("RuntimeError").$new(exception.$to_str()):exception.$$is_class&&$respond_to(exception,"$exception")?exception=exception.$exception(string):exception.$$is_exception||(exception=$$$("TypeError").$new("exception class/object expected")),backtrace!==nil&&exception.$set_backtrace(backtrace),$gvars["!"]!==nil&&Opal.exceptions.push($gvars["!"]),$gvars["!"]=exception,$gvars["@"]=exception.$backtrace(),exception}),-1),$def(self,"$rand",(function(max){return void 0===max?$$$($$$("Random"),"DEFAULT").$rand():(max.$$is_number&&(max<0&&(max=Math.abs(max)),max%1!=0&&(max=max.$to_i()),0===max&&(max=void 0)),$$$($$$("Random"),"DEFAULT").$rand(max))}),-1),$def(self,"$respond_to?",(function(name,include_all){null==include_all&&(include_all=!1);var body=this["$"+name];return"function"==typeof body&&!body.$$stub||!0!==this["$respond_to_missing?"].$$pristine&&this["$respond_to_missing?"](name,include_all)}),-2),$def(self,"$respond_to_missing?",(function(method_name,include_all){return null==include_all&&(include_all=!1),!1}),-2),$Opal.$pristine(self,"respond_to?","respond_to_missing?"),$def(self,"$require",(function(file){return"string"!=typeof file&&Opal.String&&Opal.Array&&(file=$Opal["$coerce_to!"](file,$$$("String"),"to_str")),Opal.require(file)}),1),$def(self,"$require_relative",(function(file){return $Opal["$try_convert!"](file,$$$("String"),"to_str"),file=$$$("File").$expand_path($$$("File").$join(Opal.current_file,"..",file)),Opal.require(file)}),1),$def(self,"$require_tree",(function(path,$kwargs){var autoload;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");null==(autoload=$kwargs.$$smap.autoload)&&(autoload=!1);var result=[];for(var name in path=$$$("File").$expand_path(path),"."===(path=Opal.normalize(path))&&(path=""),Opal.modules)name["$start_with?"](path)&&(autoload?result.push([name,!0]):result.push([name,Opal.require(name)]));return result}),-2),$def(self,"$singleton_class",(function(){return Opal.get_singleton_class(this)}),0),$def(self,"$sleep",(function(seconds){null==seconds&&(seconds=nil),seconds===nil&&$Kernel.$raise($$$("TypeError"),"can't convert NilClass into time interval"),seconds.$$is_number||$Kernel.$raise($$$("TypeError"),"can't convert "+seconds.$class()+" into time interval"),seconds<0&&$Kernel.$raise($$$("ArgumentError"),"time interval must be positive");for(var get_time=Opal.global.performance?function(){return performance.now()}:function(){return new Date},t=get_time();get_time()-t<=1e3*seconds;);return Math.round(seconds)}),-1),$def(self,"$srand",(function(seed){return null==seed&&(seed=$$("Random").$new_seed()),$$$("Random").$srand(seed)}),-1),$def(self,"$String",(function(str){var $ret_or_1;return $truthy($ret_or_1=$Opal["$coerce_to?"](str,$$$("String"),"to_str"))?$ret_or_1:$Opal["$coerce_to!"](str,$$$("String"),"to_s")}),1),$def(self,"$tap",(function $$tap(){var block=$$tap.$$p||nil;return delete $$tap.$$p,Opal.yield1(block,this),this}),0),$def(self,"$to_proc",(function(){return this}),0),$def(self,"$to_s",(function(){return"#<"+this.$class()+":0x"+this.$__id__().$to_s(16)+">"}),0),$def(self,"$catch",(function $Kernel_catch$17(tag){var $yield=$Kernel_catch$17.$$p||nil,$ret_or_1=nil,e=nil;delete $Kernel_catch$17.$$p,null==tag&&(tag=nil);try{return tag=$truthy($ret_or_1=tag)?$ret_or_1:$Object.$new(),Opal.yield1($yield,tag)}catch($err){if(!Opal.rescue($err,[$$$("UncaughtThrowError")]))throw $err;e=$err;try{return $eqeq(e.$tag(),tag)?e.$value():$Kernel.$raise()}finally{Opal.pop_exception()}}}),-1),$def(self,"$throw",(function(tag,obj){return null==obj&&(obj=nil),$Kernel.$raise($$$("UncaughtThrowError").$new(tag,obj))}),-2),$def(self,"$open",(function $$open($a){var args,block=$$open.$$p||nil;return delete $$open.$$p,args=Opal.slice.call(arguments),$send($$$("File"),"open",$to_a(args),block.$to_proc())}),-1),$def(self,"$yield_self",(function $$yield_self(){var $yield=$$yield_self.$$p||nil;return delete $$yield_self.$$p,$yield===nil?$send(this,"enum_for",["yield_self"],(function(){return 1}),0):Opal.yield1($yield,this)}),0),$alias(self,"fail","raise"),$alias(self,"kind_of?","is_a?"),$alias(self,"object_id","__id__"),$alias(self,"public_send","__send__"),$alias(self,"send","__send__"),$alias(self,"then","yield_self"),$alias(self,"to_enum","enum_for")}(0,[]),self=$klass("::",null,"Object"),delete $Object.$$prototype.$require,self.$include($Kernel)},Opal.modules["corelib/main"]=function(Opal){var self=Opal.top,$def=(Opal.nil,Opal.def),$Object=Opal.Object,$Kernel=Opal.Kernel;return Opal.add_stubs("include,raise"),function(self,$parent_nesting){return $def(self,"$to_s",(function(){return"main"}),0),$def(self,"$include",(function(mod){return $Object.$include(mod)}),1),$def(self,"$autoload",(function($a){var args;return args=Opal.slice.call(arguments),Opal.Object.$autoload.apply(Opal.Object,args)}),-1),$def(self,"$using",(function(mod){return $Kernel.$raise("main.using is permitted only at toplevel")}),1)}(Opal.get_singleton_class(self))},Opal.modules["corelib/error/errno"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$klass=Opal.klass;return Opal.add_stubs("+,errno,class,attr_reader"),function($base,$parent_nesting){var errors,i,self=$module("::","Errno"),klass=([self].concat($parent_nesting),nil);for(errors=[["EINVAL","Invalid argument",22],["EEXIST","File exists",17],["EISDIR","Is a directory",21],["EMFILE","Too many open files",24],["EACCES","Permission denied",13],["EPERM","Operation not permitted",1],["ENOENT","No such file or directory",2]],klass=nil,i=0;i0?args[0]:nil,error=new self.$$constructor(message);return error.name=self.$$name,error.message=message,error.cause=$gvars["!"],Opal.send(error,error.$initialize,args),Opal.config.enable_stack_trace&&Error.captureStackTrace&&Error.captureStackTrace(error,stack_trace_limit),error}),-1),stack_trace_limit=self.$new,$defs(self,"$exception",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send(self,"new",$to_a($post_args))}),-1),$def(self,"$initialize",(function($a){var args,self=this;return args=Opal.slice.call(arguments),self.message=args.length>0?args[0]:nil}),-1),$def(self,"$backtrace",(function(){if(this.backtrace)return this.backtrace;var backtrace=this.stack;return void 0!==backtrace&&backtrace.$$is_string?this.backtrace=correct_backtrace(backtrace.split("\n").slice(0,15)):backtrace?this.backtrace=correct_backtrace(backtrace.slice(0,15)):[]}),0),$def(self,"$backtrace_locations",(function(){var $a;return this.backtrace_locations||(this.backtrace_locations=($a=this.$backtrace())===nil||null==$a?nil:$send($a,"map",[],(function(loc){return null==loc&&(loc=nil),$$$($$$($$$("Thread"),"Backtrace"),"Location").$new(loc)}),1)),this.backtrace_locations}),0),$def(self,"$cause",(function(){return this.cause||nil}),0),$def(self,"$exception",(function(str){if(null==str&&(str=nil),str===nil||this===str)return this;var cloned=this.$clone();return cloned.message=str,this.backtrace&&(cloned.backtrace=this.backtrace.$dup()),cloned.stack=this.stack,cloned.cause=this.cause,cloned}),-1),$def(self,"$message",(function(){return this.$to_s()}),0),$def(self,"$full_message",(function(kwargs){var $b,$ret_or_1,highlight,order,first,bold_underline=nil,bold=nil,reset=nil,bt=nil,msg=nil;return null==$gvars.stderr&&($gvars.stderr=nil),null==kwargs&&(kwargs=nil),$truthy($$("Hash","skip_raise")?"constant":nil)?(order=($b=[(kwargs=$hash2(["highlight","order"],{highlight:$gvars.stderr["$tty?"](),order:"top"}).$merge($truthy($ret_or_1=kwargs)?$ret_or_1:$hash2([],{})))["$[]"]("highlight"),kwargs["$[]"]("order")])[1],$truthy([!0,!1]["$include?"](highlight=$b[0]))||$Kernel.$raise($$$("ArgumentError"),"expected true or false as highlight: "+highlight),$truthy(["top","bottom"]["$include?"](order))||$Kernel.$raise($$$("ArgumentError"),"expected :top or :bottom as order: "+order),$truthy(highlight)?(bold_underline="",bold="",reset=""):bold_underline=bold=reset="",bt=this.$backtrace().$dup(),($not(bt)||$truthy(bt["$empty?"]()))&&(bt=this.$caller()),first=bt.$shift(),msg=$rb_plus(msg=first+": ",""+bold+this.$to_s()+" ("+bold_underline+this.$class()+reset+bold+")"+reset+"\n"),msg=$rb_plus(msg,$send(bt,"map",[],(function(loc){return null==loc&&(loc=nil),"\tfrom "+loc+"\n"}),1).$join()),$truthy(this.$cause())&&(msg=$rb_plus(msg,this.$cause().$full_message($hash2(["highlight"],{highlight:highlight})))),$eqeq(order,"bottom")&&(msg=msg.$split("\n").$reverse().$join("\n"),msg=$rb_plus(bold+"Traceback"+reset+" (most recent call last):\n",msg)),msg):this.message+"\n"+this.stack}),-1),$def(self,"$inspect",(function(){var as_str=nil;return as_str=this.$to_s(),$truthy(as_str["$empty?"]())?this.$class().$to_s():"#<"+this.$class().$to_s()+": "+this.$to_s()+">"}),0),$def(self,"$set_backtrace",(function(backtrace){var i,ii,valid=!0;if(backtrace===nil)this.backtrace=nil,this.stack="";else if(backtrace.$$is_string)this.backtrace=[backtrace],this.stack=" from "+backtrace;else{if(backtrace.$$is_array){for(i=0,ii=backtrace.length;i,length,Rational"),function($base,$super,$parent_nesting){var self=$klass("::",null,"NilClass");[self].concat($parent_nesting);return self.$$prototype.$$meta=self,function(self,$parent_nesting){$def(self,"$allocate",(function(){return $Kernel.$raise($$$("TypeError"),"allocator undefined for "+this.$name())}),0),Opal.udef(self,"$new")}(Opal.get_singleton_class(self)),$def(self,"$!",(function(){return!0}),0),$def(self,"$&",(function(other){return!1}),1),$def(self,"$|",(function(other){return!1!==other&&other!==nil}),1),$def(self,"$^",(function(other){return!1!==other&&other!==nil}),1),$def(self,"$==",(function(other){return other===nil}),1),$def(self,"$dup",(function(){return nil}),0),$def(self,"$clone",(function($kwargs){if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==$kwargs.$$smap.freeze&&!0,nil}),-1),$def(self,"$inspect",(function(){return"nil"}),0),$def(self,"$nil?",(function(){return!0}),0),$def(self,"$singleton_class",(function(){return $NilClass}),0),$def(self,"$to_a",(function(){return[]}),0),$def(self,"$to_h",(function(){return Opal.hash()}),0),$def(self,"$to_i",(function(){return 0}),0),$def(self,"$to_s",(function(){return""}),0),$def(self,"$to_c",(function(){return $$$("Complex").$new(0,0)}),0),$def(self,"$rationalize",(function($a){var $post_args;return $post_args=Opal.slice.call(arguments),$truthy($rb_gt($post_args.$length(),1))&&$Kernel.$raise($$$("ArgumentError")),$Kernel.$Rational(0,1)}),-1),$def(self,"$to_r",(function(){return $Kernel.$Rational(0,1)}),0),$def(self,"$instance_variables",(function(){return[]}),0),$alias(self,"to_f","to_i")}(0,0,[])},Opal.modules["corelib/boolean"]=function(Opal){"use strict";var nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$Kernel=Opal.Kernel,$def=Opal.def,$hash2=Opal.hash2,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$alias=Opal.alias;return Opal.add_stubs("raise,name"),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Boolean");[self].concat($parent_nesting);Opal.prop(self.$$prototype,"$$is_boolean",!0);for(var properties=["$$class","$$meta"],i=0;i,<,===,raise,class,<=>,equal?"),function($base){var self=$module("::","Comparable"),$ret_or_1=nil;function normalize(what){return Opal.is_a(what,Opal.Integer)?what:$rb_gt(what,0)?1:$rb_lt(what,0)?-1:0}function cmp_or_fail(lhs,rhs){var cmp=lhs["$<=>"](rhs);return $truthy(cmp)||function(lhs,rhs){var class_name;class_name=$eqeqeq(nil,$ret_or_1=rhs)||$eqeqeq(!0,$ret_or_1)||$eqeqeq(!1,$ret_or_1)||$eqeqeq($$$("Integer"),$ret_or_1)||$eqeqeq($$$("Float"),$ret_or_1)?rhs.$inspect():rhs.$$class,$Kernel.$raise($$$("ArgumentError"),"comparison of "+lhs.$class()+" with "+class_name+" failed")}(lhs,rhs),normalize(cmp)}return $def(self,"$==",(function(other){var cmp;return!!$truthy(this["$equal?"](other))||this["$<=>"]!=Opal.Kernel["$<=>"]&&(this.$$comparable?(delete this.$$comparable,!1):!!$truthy(cmp=this["$<=>"](other))&&0==normalize(cmp))}),1),$def(self,"$>",(function(other){return cmp_or_fail(this,other)>0}),1),$def(self,"$>=",(function(other){return cmp_or_fail(this,other)>=0}),1),$def(self,"$<",(function(other){return cmp_or_fail(this,other)<0}),1),$def(self,"$<=",(function(other){return cmp_or_fail(this,other)<=0}),1),$def(self,"$between?",(function(min,max){return!$rb_lt(this,min)&&!$rb_gt(this,max)}),2),$def(self,"$clamp",(function(min,max){var c,excl;if(null==max&&(max=nil),max===nil&&(Opal.is_a(min,Opal.Range)||$Kernel.$raise($$$("TypeError"),"wrong argument type "+min.$class()+" (expected Range)"),excl=min.excl,max=min.end,min=min.begin,max!==nil&&excl&&$Kernel.$raise($$$("ArgumentError"),"cannot clamp with an exclusive range")),min!==nil&&max!==nil&&cmp_or_fail(min,max)>0&&$Kernel.$raise($$$("ArgumentError"),"min argument must be smaller than max argument"),min!==nil){if(0==(c=cmp_or_fail(this,min)))return this;if(c<0)return min}return max!==nil&&(c=cmp_or_fail(this,max))>0?max:this}),-2)}()},Opal.modules["corelib/regexp"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$coerce_to=Opal.coerce_to,$klass=Opal.klass,$const_set=Opal.const_set,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$truthy=Opal.truthy,$gvars=Opal.gvars,$Kernel=Opal.Kernel,$Opal=Opal.Opal,$alias=Opal.alias,$send=Opal.send,$hash2=Opal.hash2,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$rb_minus=Opal.rb_minus;return Opal.add_stubs("nil?,[],raise,escape,options,to_str,new,join,coerce_to!,!,match,coerce_to?,begin,uniq,map,scan,source,to_proc,transform_values,group_by,each_with_index,+,last,=~,attr_reader,>=,length,is_a?,include?,names,regexp,named_captures,===,captures,-,inspect,empty?,each,to_a"),$klass("::",$$$("StandardError"),"RegexpError"),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Regexp"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$const_set(self,"IGNORECASE",1),$const_set(self,"EXTENDED",2),$const_set(self,"MULTILINE",4),Opal.prop(self.$$prototype,"$$is_regexp",!0),function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$allocate",(function $$allocate(){var $yield=$$allocate.$$p||nil,allocated=nil;return delete $$allocate.$$p,(allocated=$send2(this,$find_super(this,"allocate",$$allocate,!1,!0),"allocate",[],$yield)).uninitialized=!0,allocated}),0),$def(self,"$escape",(function(string){return Opal.escape_regexp(string)}),1),$def(self,"$last_match",(function(n){return null==$gvars["~"]&&($gvars["~"]=nil),null==n&&(n=nil),$truthy(n["$nil?"]())?$gvars["~"]:$truthy($gvars["~"])?$gvars["~"]["$[]"](n):nil}),-1),$def(self,"$union",(function($a){var parts,is_first_part_array,quoted_validated,part,options,each_part_options,self=this;if(0==(parts=Opal.slice.call(arguments)).length)return/(?!)/;if(1==parts.length&&parts[0].$$is_regexp)return parts[0];is_first_part_array=parts[0].$$is_array,parts.length>1&&is_first_part_array&&$Kernel.$raise($$$("TypeError"),"no implicit conversion of Array into String"),is_first_part_array&&(parts=parts[0]),options=void 0,quoted_validated=[];for(var i=0;i=pos)return $gvars["~"]=$$$("MatchData").$new(re,md),block===nil?$gvars["~"]:Opal.yield1(block,$gvars["~"]);re.lastIndex=md.index+1}}),-2),$def(self,"$match?",(function(string,pos){var md;return this.uninitialized&&$Kernel.$raise($$$("TypeError"),"uninitialized Regexp"),void 0===pos?string!==nil&&this.test($coerce_to(string,$$$("String"),"to_str")):(pos=$coerce_to(pos,$$$("Integer"),"to_int"),string!==nil&&(string=$coerce_to(string,$$$("String"),"to_str"),!(pos<0&&(pos+=string.length)<0)&&!(null===(md=Opal.global_regexp(this).exec(string))||md.index/,$hash2(["no_matchdata"],{no_matchdata:!0})),"map",[],"first".$to_proc()).$uniq()}),0),$def(self,"$named_captures",(function(){return $send($send($send(this.$source().$scan(/\(?<(\w+)>/,$hash2(["no_matchdata"],{no_matchdata:!0})),"map",[],"first".$to_proc()).$each_with_index(),"group_by",[],"first".$to_proc()),"transform_values",[],(function(i){return null==i&&(i=nil),$send(i,"map",[],(function(j){return null==j&&(j=nil),$rb_plus(j.$last(),1)}),1)}),1)}),0),$def(self,"$~",(function(){return null==$gvars._&&($gvars._=nil),this["$=~"]($gvars._)}),0),$def(self,"$source",(function(){return this.source}),0),$def(self,"$options",(function(){this.uninitialized&&$Kernel.$raise($$$("TypeError"),"uninitialized Regexp");var result=0;return this.multiline&&(result|=$$("MULTILINE")),this.ignoreCase&&(result|=$$("IGNORECASE")),result}),0),$def(self,"$casefold?",(function(){return this.ignoreCase}),0),$alias(self,"eql?","=="),$alias(self,"to_s","source")}(0,RegExp,$nesting),function($base,$super,$parent_nesting){var self=$klass($base,null,"MatchData"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.matches=nil,self.$attr_reader("post_match","pre_match","regexp","string"),$def(self,"$initialize",(function(regexp,match_groups,$kwargs){var no_matchdata;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");null==(no_matchdata=$kwargs.$$smap.no_matchdata)&&(no_matchdata=!1),$truthy(no_matchdata)||($gvars["~"]=this),this.regexp=regexp,this.begin=match_groups.index,this.string=match_groups.input,this.pre_match=match_groups.input.slice(0,match_groups.index),this.post_match=match_groups.input.slice(match_groups.index+match_groups[0].length),this.matches=[];for(var i=0,length=match_groups.length;i"}),0),$def(self,"$length",(function(){return this.matches.length}),0),$def(self,"$to_a",(function(){return this.matches}),0),$def(self,"$to_s",(function(){return this.matches[0]}),0),$def(self,"$values_at",(function($a){var args,self=this;args=Opal.slice.call(arguments);var i,a,index,values=[];for(i=0;i,==,=~,new,force_encoding,casecmp,empty?,ljust,ceil,/,+,rjust,floor,coerce_to!,copy_singleton_methods,initialize_clone,initialize_dup,enum_for,chomp,[],to_i,each_line,to_proc,to_a,class,match,match?,captures,proc,succ,escape,include?,upcase,unicode_normalize,pristine"),self.$require("corelib/comparable"),self.$require("corelib/regexp"),function($base,$super,$parent_nesting){var self=$klass("::",String,"String"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);function char_class_from_char_sets(sets){function explode_sequences_in_character_set(set){var i,curr_char,skip_next_dash,char_code_from,char_code_upto,char_code,result="",len=set.length;for(i=0;i0&&i(char_code_upto=set.charCodeAt(i+1))&&$Kernel.$raise($$$("ArgumentError"),'invalid range "'+char_code_from+"-"+char_code_upto+'" in string transliteration'),char_code=char_code_from+1;char_code1,set=explode_sequences_in_character_set(neg?set.slice(1):set),neg?neg_intersection=intersection(neg_intersection,set):pos_intersection=intersection(pos_intersection,set);if(pos_intersection.length>0&&neg_intersection.length>0){for(tmp="",i=0,len=pos_intersection.length;i0?"["+$$$("Regexp").$escape(pos_intersection)+"]":neg_intersection.length>0?"[^"+$$$("Regexp").$escape(neg_intersection)+"]":null}self.$include($$$("Comparable")),Opal.prop(self.$$prototype,"$$is_string",!0),Opal.prop(self.$$prototype,"$$cast",(function(string){var klass=this.$$class;return klass.$$constructor===String?string:new klass.$$constructor(string)})),$def(self,"$__id__",(function(){return this.toString()}),0),$defs(self,"$try_convert",(function(what){return $Opal["$coerce_to?"](what,$$$("String"),"to_str")}),1),$defs(self,"$new",(function($a){var args,self=this,str=(args=Opal.slice.call(arguments))[0]||"",opts=args[args.length-1];return str=$coerce_to(str,$$$("String"),"to_str"),opts&&opts.$$is_hash&&opts.$$smap.encoding&&(str=str.$force_encoding(opts.$$smap.encoding)),(str=new self.$$constructor(str)).$initialize.$$pristine||$send(str,"initialize",$to_a(args)),str}),-1),$def(self,"$initialize",(function($a,$b){var $post_args,$kwargs;if($post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return $post_args.length>0&&$post_args.shift(),null==$kwargs.$$smap.encoding&&nil,null==$kwargs.$$smap.capacity&&nil,nil}),-1),$def(self,"$%",(function(data){var self=this;return $eqeqeq($$$("Array"),data)?$send(self,"format",[self].concat($to_a(data))):self.$format(self,data)}),1),$def(self,"$*",(function(count){if((count=$coerce_to(count,$$$("Integer"),"to_int"))<0&&$Kernel.$raise($$$("ArgumentError"),"negative argument"),0===count)return this.$$cast("");var result="",string=this.toString();for(string.length*count>=1<<28&&$Kernel.$raise($$$("RangeError"),"multiply count must not overflow maximum string size");1==(1&count)&&(result+=string),0!==(count>>>=1);)string+=string;return this.$$cast(result)}),1),$def(self,"$+",(function(other){if(""==(other=$coerce_to(other,$$$("String"),"to_str"))&&this.$$class===Opal.String)return this;if(""==this&&other.$$class===Opal.String)return other;var out=this+other;return this.encoding===out.encoding&&other.encoding===out.encoding||"UTF-8"===this.encoding.name||"UTF-8"===other.encoding.name?out:Opal.enc(out,this.encoding)}),1),$def(self,"$<=>",(function(other){if($truthy(other["$respond_to?"]("to_str")))return this>(other=other.$to_str().$to_s())?1:this"](this);return cmp===nil?nil:cmp>0?-1:cmp<0?1:0}),1),$def(self,"$==",(function(other){return other.$$is_string?this.toString()===other.toString():!!$respond_to(other,"$to_str")&&other["$=="](this)}),1),$def(self,"$=~",(function(other){return other.$$is_string&&$Kernel.$raise($$$("TypeError"),"type mismatch: String given"),other["$=~"](this)}),1),$def(self,"$[]",(function(index,length){var exclude,range,size=this.length;if(index.$$is_range)return exclude=index.excl,range=index,length=index.end===nil?-1:$coerce_to(index.end,$$$("Integer"),"to_int"),index=index.begin===nil?0:$coerce_to(index.begin,$$$("Integer"),"to_int"),Math.abs(index)>size?nil:(index<0&&(index+=size),length<0&&(length+=size),exclude&&range.end!==nil||(length+=1),(length-=index)<0&&(length=0),this.$$cast(this.substr(index,length)));if(index.$$is_string)return null!=length&&$Kernel.$raise($$$("TypeError")),-1!==this.indexOf(index)?this.$$cast(index):nil;if(index.$$is_regexp){var match=this.match(index);return null===match?($gvars["~"]=nil,nil):($gvars["~"]=$$$("MatchData").$new(index,match),null==length?this.$$cast(match[0]):(length=$coerce_to(length,$$$("Integer"),"to_int"))<0&&-length=0&&length=size||index<0?nil:this.$$cast(this.substr(index,1)):(length=$coerce_to(length,$$$("Integer"),"to_int"))<0||index>size||index<0?nil:this.$$cast(this.substr(index,length))}),-2),$def(self,"$b",(function(){return new String(this).$force_encoding("binary")}),0),$def(self,"$capitalize",(function(){return this.$$cast(this.charAt(0).toUpperCase()+this.substr(1).toLowerCase())}),0),$def(self,"$casecmp",(function(other){var self=this;if(!$truthy(other["$respond_to?"]("to_str")))return nil;other=$coerce_to(other,$$$("String"),"to_str").$to_s();var ascii_only=/^[\x00-\x7F]*$/;return ascii_only.test(self)&&ascii_only.test(other)&&(self=self.toLowerCase(),other=other.toLowerCase()),self["$<=>"](other)}),1),$def(self,"$casecmp?",(function(other){var cmp=this.$casecmp(other);return cmp===nil?nil:0===cmp}),1),$def(self,"$center",(function(width,padstr){if(null==padstr&&(padstr=" "),width=$coerce_to(width,$$$("Integer"),"to_int"),padstr=$coerce_to(padstr,$$$("String"),"to_str").$to_s(),$truthy(padstr["$empty?"]())&&$Kernel.$raise($$$("ArgumentError"),"zero width padding"),$truthy(width<=this.length))return this;var ljustified=this.$ljust($rb_divide($rb_plus(width,this.length),2).$ceil(),padstr),rjustified=this.$rjust($rb_divide($rb_plus(width,this.length),2).$floor(),padstr);return this.$$cast(rjustified+ljustified.slice(this.length))}),-2),$def(self,"$chomp",(function(separator){var result;if(null==$gvars["/"]&&($gvars["/"]=nil),null==separator&&(separator=$gvars["/"]),$truthy(separator===nil||0===this.length))return this;if("\n"===(separator=$Opal["$coerce_to!"](separator,$$$("String"),"to_str").$to_s()))result=this.replace(/\r?\n?$/,"");else if(""===separator)result=this.replace(/(\r?\n)+$/,"");else if(this.length>=separator.length){this.substr(this.length-separator.length,separator.length)===separator&&(result=this.substr(0,this.length-separator.length))}return null!=result?this.$$cast(result):this}),-1),$def(self,"$chop",(function(){var result,length=this.length;return result=length<=1?"":"\n"===this.charAt(length-1)&&"\r"===this.charAt(length-2)?this.substr(0,length-2):this.substr(0,length-1),this.$$cast(result)}),0),$def(self,"$chr",(function(){return this.charAt(0)}),0),$def(self,"$clone",(function(){var copy=nil;return(copy=new String(this)).$copy_singleton_methods(this),copy.$initialize_clone(this),copy}),0),$def(self,"$dup",(function(){var copy=nil;return(copy=new String(this)).$initialize_dup(this),copy}),0),$def(self,"$count",(function($a){var sets,self=this;0===(sets=Opal.slice.call(arguments)).length&&$Kernel.$raise($$$("ArgumentError"),"ArgumentError: wrong number of arguments (0 for 1+)");var char_class=char_class_from_char_sets(sets);return null===char_class?0:self.length-self.replace(new RegExp(char_class,"g"),"").length}),-1),$def(self,"$delete",(function($a){var sets,self=this;0===(sets=Opal.slice.call(arguments)).length&&$Kernel.$raise($$$("ArgumentError"),"ArgumentError: wrong number of arguments (0 for 1+)");var char_class=char_class_from_char_sets(sets);return null===char_class?self:self.$$cast(self.replace(new RegExp(char_class,"g"),""))}),-1),$def(self,"$delete_prefix",(function(prefix){return prefix.$$is_string||(prefix=$coerce_to(prefix,$$$("String"),"to_str")),this.slice(0,prefix.length)===prefix?this.$$cast(this.slice(prefix.length)):this}),1),$def(self,"$delete_suffix",(function(suffix){return suffix.$$is_string||(suffix=$coerce_to(suffix,$$$("String"),"to_str")),this.slice(this.length-suffix.length)===suffix?this.$$cast(this.slice(0,this.length-suffix.length)):this}),1),$def(self,"$downcase",(function(){return this.$$cast(this.toLowerCase())}),0),$def(self,"$each_line",(function $$each_line($a,$b){var $post_args,$kwargs,separator,chomp,a,i,n,length,chomped,trailing,splitted,value,block=$$each_line.$$p||nil,self=this;if(null==$gvars["/"]&&($gvars["/"]=nil),delete $$each_line.$$p,$post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");if($post_args.length>0&&(separator=$post_args.shift()),null==separator&&(separator=$gvars["/"]),null==(chomp=$kwargs.$$smap.chomp)&&(chomp=!1),block===nil)return self.$enum_for("each_line",separator,$hash2(["chomp"],{chomp:chomp}));if(separator===nil)return Opal.yield1(block,self),self;if(0===(separator=$coerce_to(separator,$$$("String"),"to_str")).length){for(i=0,n=(a=self.split(/((?:\r?\n){2})(?:(?:\r?\n)*)/)).length;i=suffix.length&&self.substr(self.length-suffix.length,suffix.length)==suffix)return!0}return!1}),-1),$def(self,"$gsub",(function $$gsub(pattern,replacement){var block=$$gsub.$$p||nil,self=this;if(delete $$gsub.$$p,void 0===replacement&&block===nil)return self.$enum_for("gsub",pattern);var match,_replacement,lastIndex,result="",match_data=nil,index=0;for(pattern.$$is_regexp?pattern=$global_multiline_regexp(pattern):(pattern=$coerce_to(pattern,$$$("String"),"to_str"),pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm"));;){if(null===(match=pattern.exec(self))){$gvars["~"]=nil,result+=self.slice(index);break}match_data=$$$("MatchData").$new(pattern,match),void 0===replacement?(lastIndex=pattern.lastIndex,_replacement=block(match[0]),pattern.lastIndex=lastIndex):replacement.$$is_hash?_replacement=replacement["$[]"](match[0]).$to_s():(replacement.$$is_string||(replacement=$coerce_to(replacement,$$$("String"),"to_str")),_replacement=replacement.replace(/([\\]+)([0-9+&`'])/g,(function(original,slashes,command){if(slashes.length%2==0)return original;switch(command){case"+":for(var i=match.length-1;i>0;i--)if(void 0!==match[i])return slashes.slice(1)+match[i];return"";case"&":return slashes.slice(1)+match[0];case"`":return slashes.slice(1)+self.slice(0,match.index);case"'":return slashes.slice(1)+self.slice(match.index+match[0].length);default:return slashes.slice(1)+(match[command]||"")}})).replace(/\\\\/g,"\\")),pattern.lastIndex===match.index?(result+=self.slice(index,match.index)+_replacement+(self[match.index]||""),pattern.lastIndex+=1):result+=self.slice(index,match.index)+_replacement,index=pattern.lastIndex}return $gvars["~"]=match_data,self.$$cast(result)}),-2),$def(self,"$hash",(function(){return this.toString()}),0),$def(self,"$hex",(function(){return this.$to_i(16)}),0),$def(self,"$include?",(function(other){return other.$$is_string||(other=$coerce_to(other,$$$("String"),"to_str")),-1!==this.indexOf(other)}),1),$def(self,"$index",(function(search,offset){var index,match,regex;if(void 0===offset)offset=0;else if((offset=$coerce_to(offset,$$$("Integer"),"to_int"))<0&&(offset+=this.length)<0)return nil;if(search.$$is_regexp)for(regex=$global_multiline_regexp(search);;){if(null===(match=regex.exec(this))){$gvars["~"]=nil,index=-1;break}if(match.index>=offset){$gvars["~"]=$$$("MatchData").$new(regex,match),index=match.index;break}regex.lastIndex=match.index+1}else index=0===(search=$coerce_to(search,$$$("String"),"to_str")).length&&offset>this.length?-1:this.indexOf(search,offset);return-1===index?nil:index}),-2),$def(self,"$inspect",(function(){var self=this,meta={"":"\\a","":"\\e","\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\v":"\\v",'"':'\\"',"\\":"\\\\"};return'"'+self.replace(/[\\\"\x00-\x1f\u007F-\u009F\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,(function(chr){return meta[chr]?meta[chr]:(chr=chr.charCodeAt(0))<=255&&(self.encoding["$binary?"]()||self.internal_encoding["$binary?"]())?"\\x"+("00"+chr.toString(16).toUpperCase()).slice(-2):"\\u"+("0000"+chr.toString(16).toUpperCase()).slice(-4)})).replace(/\#[\$\@\{]/g,"\\$&")+'"'}),0),$def(self,"$intern",(function(){return this.toString()}),0),$def(self,"$lines",(function $$lines($a,$b){var $post_args,$kwargs,separator,chomp,block=$$lines.$$p||nil,self=this,e=nil;if(null==$gvars["/"]&&($gvars["/"]=nil),delete $$lines.$$p,$post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return $post_args.length>0&&(separator=$post_args.shift()),null==separator&&(separator=$gvars["/"]),null==(chomp=$kwargs.$$smap.chomp)&&(chomp=!1),e=$send(self,"each_line",[separator,$hash2(["chomp"],{chomp:chomp})],block.$to_proc()),$truthy(block)?self:e.$to_a()}),-1),$def(self,"$ljust",(function(width,padstr){if(null==padstr&&(padstr=" "),width=$coerce_to(width,$$$("Integer"),"to_int"),padstr=$coerce_to(padstr,$$$("String"),"to_str").$to_s(),$truthy(padstr["$empty?"]())&&$Kernel.$raise($$$("ArgumentError"),"zero width padding"),$truthy(width<=this.length))return this;var index=-1,result="";for(width-=this.length;++index=48&&code<=57||code>=65&&code<=90||code>=97&&code<=122)switch(code){case 57:carry=!0,code=48;break;case 90:carry=!0,code=65;break;case 122:carry=!0,code=97;break;default:carry=!1,code+=1}else-1===first_alphanum_char_index?255===code?(carry=!0,code=0):(carry=!1,code+=1):carry=!0;if(result=result.slice(0,i)+String.fromCharCode(code)+result.slice(i+1),carry&&(0===i||i===first_alphanum_char_index)){switch(code){case 65:case 97:break;default:code+=1}result=0===i?String.fromCharCode(code)+result:result.slice(0,i)+String.fromCharCode(code)+result.slice(i),carry=!1}if(!carry)break}return this.$$cast(result)}),0),$def(self,"$oct",(function(){var result,string=this,radix=8;return/^\s*_/.test(string)?0:(string=string.replace(/^(\s*[+-]?)(0[bodx]?)(.+)$/i,(function(original,head,flag,tail){switch(tail.charAt(0)){case"+":case"-":return original;case"0":if("x"===tail.charAt(1)&&"0x"===flag)return original}switch(flag){case"0b":radix=2;break;case"0":case"0o":radix=8;break;case"0d":radix=10;break;case"0x":radix=16}return head+tail})),result=parseInt(string.replace(/_(?!_)/g,""),radix),isNaN(result)?0:result)}),0),$def(self,"$ord",(function(){return"function"==typeof this.codePointAt?this.codePointAt(0):this.charCodeAt(0)}),0),$def(self,"$partition",(function(sep){var i,m;return sep.$$is_regexp?null===(m=sep.exec(this))?i=-1:($$$("MatchData").$new(sep,m),sep=m[0],i=m.index):(sep=$coerce_to(sep,$$$("String"),"to_str"),i=this.indexOf(sep)),-1===i?[this,"",""]:[this.slice(0,i),this.slice(i,i+sep.length),this.slice(i+sep.length)]}),1),$def(self,"$reverse",(function(){return this.split("").reverse().join("")}),0),$def(self,"$rindex",(function(search,offset){var i,m,r,_m;if(void 0===offset)offset=this.length;else if((offset=$coerce_to(offset,$$$("Integer"),"to_int"))<0&&(offset+=this.length)<0)return nil;if(search.$$is_regexp){for(m=null,r=$global_multiline_regexp(search);!(null===(_m=r.exec(this))||_m.index>offset);)m=_m,r.lastIndex=m.index+1;null===m?($gvars["~"]=nil,i=-1):($$$("MatchData").$new(r,m),i=m.index)}else search=$coerce_to(search,$$$("String"),"to_str"),i=this.lastIndexOf(search,offset);return-1===i?nil:i}),-2),$def(self,"$rjust",(function(width,padstr){if(null==padstr&&(padstr=" "),width=$coerce_to(width,$$$("Integer"),"to_int"),padstr=$coerce_to(padstr,$$$("String"),"to_str").$to_s(),$truthy(padstr["$empty?"]())&&$Kernel.$raise($$$("ArgumentError"),"zero width padding"),$truthy(width<=this.length))return this;var chars=Math.floor(width-this.length),patterns=Math.floor(chars/padstr.length),result=Array(patterns+1).join(padstr),remaining=chars-result.length;return this.$$cast(result+padstr.slice(0,remaining)+this)}),-2),$def(self,"$rpartition",(function(sep){var i,m,r,_m;if(sep.$$is_regexp){for(m=null,r=$global_multiline_regexp(sep);null!==(_m=r.exec(this));)m=_m,r.lastIndex=m.index+1;null===m?i=-1:($$$("MatchData").$new(r,m),sep=m[0],i=m.index)}else sep=$coerce_to(sep,$$$("String"),"to_str"),i=this.lastIndexOf(sep);return-1===i?["","",this]:[this.slice(0,i),this.slice(i,i+sep.length),this.slice(i+sep.length)]}),1),$def(self,"$rstrip",(function(){return this.replace(/[\s\u0000]*$/,"")}),0),$def(self,"$scan",(function $$scan(pattern,$kwargs){var no_matchdata,block=$$scan.$$p||nil;if(delete $$scan.$$p,null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");null==(no_matchdata=$kwargs.$$smap.no_matchdata)&&(no_matchdata=!1);var match,result=[],match_data=nil;for(pattern.$$is_regexp?pattern=$global_multiline_regexp(pattern):(pattern=$coerce_to(pattern,$$$("String"),"to_str"),pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm"));null!=(match=pattern.exec(this));)match_data=$$$("MatchData").$new(pattern,match,$hash2(["no_matchdata"],{no_matchdata:no_matchdata})),block===nil?1==match.length?result.push(match[0]):result.push(match_data.$captures()):1==match.length?Opal.yield1(block,match[0]):Opal.yield1(block,match_data.$captures()),pattern.lastIndex===match.index&&(pattern.lastIndex+=1);return no_matchdata||($gvars["~"]=match_data),block!==nil?this:result}),-2),$def(self,"$singleton_class",(function(){return Opal.get_singleton_class(this)}),0),$def(self,"$split",(function(pattern,limit){var self=this,$ret_or_1=nil;if(null==$gvars[";"]&&($gvars[";"]=nil),0===self.length)return[];if(void 0===limit)limit=0;else if(1===(limit=$Opal["$coerce_to!"](limit,$$$("Integer"),"to_int")))return[self];void 0!==pattern&&pattern!==nil||(pattern=$truthy($ret_or_1=$gvars[";"])?$ret_or_1:" ");var match,i,ii,result=[],string=self.toString(),index=0;if(pattern.$$is_regexp?pattern=$global_multiline_regexp(pattern):" "===(pattern=$coerce_to(pattern,$$$("String"),"to_str").$to_s())?(pattern=/\s+/gm,string=string.replace(/^\s+/,"")):pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm"),1===(result=string.split(pattern)).length&&result[0]===string)return[self.$$cast(result[0])];for(;-1!==(i=result.indexOf(void 0));)result.splice(i,1);function castResult(){for(i=0;i=result.length)return castResult(),result;for(i=0;null!==match&&(i++,index=pattern.lastIndex,i+1!==limit);)match=pattern.exec(string);return result.splice(limit-1,result.length-1,string.slice(index)),castResult(),result}),-1),$def(self,"$squeeze",(function($a){var sets,self=this;if(0===(sets=Opal.slice.call(arguments)).length)return self.$$cast(self.replace(/(.)\1+/g,"$1"));var char_class=char_class_from_char_sets(sets);return null===char_class?self:self.$$cast(self.replace(new RegExp("("+char_class+")\\1+","g"),"$1"))}),-1),$def(self,"$start_with?",(function($a){for(var prefixes,self=this,i=0,length=(prefixes=Opal.slice.call(arguments)).length;i0;i--)if(void 0!==match[i])return slashes.slice(1)+match[i];return"";case"&":return slashes.slice(1)+match[0];case"`":return slashes.slice(1)+self.slice(0,match.index);case"'":return slashes.slice(1)+self.slice(match.index+match[0].length);default:return slashes.slice(1)+(match[command]||"")}})).replace(/\\\\/g,"\\"),result=self.slice(0,match.index)+replacement+self.slice(match.index+match[0].length))),self.$$cast(result)}),-2),$def(self,"$sum",(function(n){null==n&&(n=16),n=$coerce_to(n,$$$("Integer"),"to_int");for(var result=0,length=this.length,i=0;i36)&&$Kernel.$raise($$$("ArgumentError"),"invalid radix "+radix),/^\s*_/.test(string)?0:(string=string.replace(/^(\s*[+-]?)(0[bodx]?)(.+)$/,(function(original,head,flag,tail){switch(tail.charAt(0)){case"+":case"-":return original;case"0":if("x"===tail.charAt(1)&&"0x"===flag&&(0===radix||16===radix))return original}switch(flag){case"0b":if(0===radix||2===radix)return radix=2,head+tail;break;case"0":case"0o":if(0===radix||8===radix)return radix=8,head+tail;break;case"0d":if(0===radix||10===radix)return radix=10,head+tail;break;case"0x":if(0===radix||16===radix)return radix=16,head+tail}return original})),result=parseInt(string.replace(/_(?!_)/g,""),radix),isNaN(result)?0:result)}),-1),$def(self,"$to_proc",(function $$to_proc(){var method_name;return delete $$to_proc.$$p,method_name=$rb_plus("$",this.valueOf()),$send($Kernel,"proc",[],(function $$17($a){var args,block=$$17.$$p||nil;delete $$17.$$p,0===(args=Opal.slice.call(arguments)).length&&$Kernel.$raise($$$("ArgumentError"),"no receiver given");var recv=args[0];null==recv&&(recv=nil);var body=recv[method_name];return body?("function"==typeof block&&(body.$$p=block),1===args.length?body.call(recv):body.apply(recv,args.slice(1))):recv.$method_missing.apply(recv,args)}),-1)}),0),$def(self,"$to_s",(function(){return this.toString()}),0),$def(self,"$tr",(function(from,to){var i,in_range,c,ch,start,end,length;if(from=$coerce_to(from,$$$("String"),"to_str").$to_s(),to=$coerce_to(to,$$$("String"),"to_str").$to_s(),0==from.length||from===to)return this;var subs={},from_chars=from.split(""),from_length=from_chars.length,to_chars=to.split(""),to_length=to_chars.length,inverse=!1,global_sub=null;"^"===from_chars[0]&&from_chars.length>1&&(inverse=!0,from_chars.shift(),global_sub=to_chars[to_length-1],from_length-=1);var from_chars_expanded=[],last_from=null;for(in_range=!1,i=0;i(end=ch.charCodeAt(0))&&$Kernel.$raise($$$("ArgumentError"),'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration'),c=start+1;c0){var to_chars_expanded=[],last_to=null;for(in_range=!1,i=0;i(end=ch.charCodeAt(0))&&$Kernel.$raise($$$("ArgumentError"),'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration'),c=start+1;c0){var pad_char=to_length>0?to_chars[to_length-1]:"";for(i=0;i1&&(inverse=!0,from_chars.shift(),global_sub=to_chars[to_length-1],from_length-=1);var from_chars_expanded=[],last_from=null;for(in_range=!1,i=0;i(end=ch.charCodeAt(0))&&$Kernel.$raise($$$("ArgumentError"),'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration'),c=start+1;c0){var to_chars_expanded=[];for(in_range=!1,i=0;i(end=ch.charCodeAt(0))&&$Kernel.$raise($$$("ArgumentError"),'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration'),c=start+1;c0){var pad_char=to_length>0?to_chars[to_length-1]:"";for(i=0;i,*,try_convert,<,+,-,ceil,/,size,select,to_proc,__send__,length,<=,[],push,<<,[]=,===,inspect,<=>,first,reverse,sort,take,sort_by,compare,call,dup,sort!,map!,include?,-@,key?,values,transform_values,group_by,fetch,to_h,coerce_to?,class,zip"),function($base){var self=$module("::","Enumerable");function comparableForPattern(value){return 0===value.length&&(value=[nil]),value.length>1&&(value=[value]),value}return $def(self,"$all?",(function $Enumerable_all$ques$1(pattern){try{var block=$Enumerable_all$ques$1.$$p||nil;return delete $Enumerable_all$ques$1.$$p,$truthy(void 0!==pattern)?$send(this,"each",[],(function($a){var comparable=nil;if(comparable=comparableForPattern(Opal.slice.call(arguments)),$truthy($send(pattern,"public_send",["==="].concat($to_a(comparable)))))return nil;Opal.ret(!1)}),-1):$send(this,"each",[],block!==nil?function($a){var value;if(value=Opal.slice.call(arguments),$truthy(Opal.yieldX(block,$to_a(value))))return nil;Opal.ret(!1)}:function($a){var value;if(value=Opal.slice.call(arguments),$truthy($Opal.$destructure(value)))return nil;Opal.ret(!1)},-1),!0}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$any?",(function $Enumerable_any$ques$5(pattern){try{var block=$Enumerable_any$ques$5.$$p||nil;return delete $Enumerable_any$ques$5.$$p,$truthy(void 0!==pattern)?$send(this,"each",[],(function($a){var comparable=nil;if(comparable=comparableForPattern(Opal.slice.call(arguments)),!$truthy($send(pattern,"public_send",["==="].concat($to_a(comparable)))))return nil;Opal.ret(!0)}),-1):$send(this,"each",[],block!==nil?function($a){var value;if(value=Opal.slice.call(arguments),!$truthy(Opal.yieldX(block,$to_a(value))))return nil;Opal.ret(!0)}:function($a){var value;if(value=Opal.slice.call(arguments),!$truthy($Opal.$destructure(value)))return nil;Opal.ret(!0)},-1),!1}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$chunk",(function $$chunk(){var block=$$chunk.$$p||nil;return delete $$chunk.$$p,block===nil?$send(this,"to_enum",["chunk"],(function $$9(){return(null==$$9.$$s?this:$$9.$$s).$enumerator_size()}),{$$arity:0,$$s:this}):$send($$$("Enumerator"),"new",[],(function $$10(yielder){var self=null==$$10.$$s?this:$$10.$$s;null==yielder&&(yielder=nil);var previous=nil,accumulate=[];function releaseAccumulate(){accumulate.length>0&&yielder.$yield(previous,accumulate)}self.$each.$$p=function(value){var key=$yield1(block,value);key===nil?(releaseAccumulate(),accumulate=[],previous=nil):(previous===nil||previous===key?accumulate.push(value):(releaseAccumulate(),accumulate=[value]),previous=key)},self.$each(),releaseAccumulate()}),{$$arity:1,$$s:this})}),0),$def(self,"$chunk_while",(function $$chunk_while(){var block=$$chunk_while.$$p||nil;return delete $$chunk_while.$$p,block===nil&&$Kernel.$raise($$$("ArgumentError"),"no block given"),$send(this,"slice_when",[],(function(before,after){return null==before&&(before=nil),null==after&&(after=nil),Opal.yieldX(block,[before,after])["$!"]()}),2)}),0),$def(self,"$collect",(function $$collect(){var block=$$collect.$$p||nil;if(delete $$collect.$$p,block===nil)return $send(this,"enum_for",["collect"],(function $$12(){return(null==$$12.$$s?this:$$12.$$s).$enumerator_size()}),{$$arity:0,$$s:this});var result=[];return this.$each.$$p=function(){var value=$yieldX(block,arguments);result.push(value)},this.$each(),result}),0),$def(self,"$collect_concat",(function $$collect_concat(){var block=$$collect_concat.$$p||nil;return delete $$collect_concat.$$p,block===nil?$send(this,"enum_for",["collect_concat"],(function $$13(){return(null==$$13.$$s?this:$$13.$$s).$enumerator_size()}),{$$arity:0,$$s:this}):$send(this,"map",[],(function(item){return null==item&&(item=nil),Opal.yield1(block,item)}),1).$flatten(1)}),0),$def(self,"$compact",(function(){return this.$to_a().$compact()}),0),$def(self,"$count",(function $$count(object){var block=$$count.$$p||nil,result=nil;return delete $$count.$$p,result=0,null!=object&&block!==nil&&this.$warn("warning: given block not used"),$truthy(null!=object)?block=$send($Kernel,"proc",[],(function($a){var args;return args=Opal.slice.call(arguments),$Opal.$destructure(args)["$=="](object)}),-1):$truthy(block["$nil?"]())&&(block=$send($Kernel,"proc",[],(function(){return!0}),0)),$send(this,"each",[],(function($a){var $post_args;return $post_args=Opal.slice.call(arguments),$truthy($yieldX(block,$post_args))?result++:nil}),-1),result}),-1),$def(self,"$cycle",(function $$cycle(n){var block=$$cycle.$$p||nil;if(delete $$cycle.$$p,null==n&&(n=nil),block===nil)return $send(this,"enum_for",["cycle",n],(function $$18(){var self=null==$$18.$$s?this:$$18.$$s;return $truthy(n["$nil?"]())?$truthy(self["$respond_to?"]("size"))?$$$($$$("Float"),"INFINITY"):nil:(n=$Opal["$coerce_to!"](n,$$$("Integer"),"to_int"),$truthy($rb_gt(n,0))?$rb_times(self.$enumerator_size(),n):0)}),{$$arity:0,$$s:this});if(!$truthy(n["$nil?"]())&&(n=$Opal["$coerce_to!"](n,$$$("Integer"),"to_int"),$truthy(n<=0)))return nil;var i,length,all=[];if(this.$each.$$p=function(){var param=$Opal.$destructure(arguments);$yield1(block,param);all.push(param)},this.$each(),0===all.length)return nil;if(n===nil)for(;;)for(i=0,length=all.length;i1;){for(i=0,length=all.length;in&&buffer.shift(),buffer.length==n&&$yield1(block,buffer.slice(0,n))},self.$each(),self}),1),$def(self,"$each_entry",(function $$each_entry($a){var data,block=$$each_entry.$$p||nil,self=this;return delete $$each_entry.$$p,data=Opal.slice.call(arguments),block===nil?$send(self,"to_enum",["each_entry"].concat($to_a(data)),(function $$21(){return(null==$$21.$$s?this:$$21.$$s).$enumerator_size()}),{$$arity:0,$$s:self}):(self.$each.$$p=function(){var item=$Opal.$destructure(arguments);$yield1(block,item)},self.$each.apply(self,data),self)}),-1),$def(self,"$each_slice",(function $$each_slice(n){var block=$$each_slice.$$p||nil;if(delete $$each_slice.$$p,n=$coerce_to(n,$$$("Integer"),"to_int"),$truthy(n<=0)&&$Kernel.$raise($$$("ArgumentError"),"invalid slice size"),block===nil)return $send(this,"enum_for",["each_slice",n],(function $$22(){var self=null==$$22.$$s?this:$$22.$$s;return $truthy(self["$respond_to?"]("size"))?$rb_divide(self.$size(),n).$ceil():nil}),{$$arity:0,$$s:this});var slice=[];return this.$each.$$p=function(){var param=$Opal.$destructure(arguments);slice.push(param),slice.length===n&&($yield1(block,slice),slice=[])},this.$each(),slice.length>0&&$yield1(block,slice),this}),1),$def(self,"$each_with_index",(function $$each_with_index($a){var args,block=$$each_with_index.$$p||nil,self=this;if(delete $$each_with_index.$$p,args=Opal.slice.call(arguments),block===nil)return $send(self,"enum_for",["each_with_index"].concat($to_a(args)),(function $$23(){return(null==$$23.$$s?this:$$23.$$s).$enumerator_size()}),{$$arity:0,$$s:self});var index=0;return self.$each.$$p=function(){var param=$Opal.$destructure(arguments);block(param,index),index++},self.$each.apply(self,args),self}),-1),$def(self,"$each_with_object",(function $$each_with_object(object){var block=$$each_with_object.$$p||nil;return delete $$each_with_object.$$p,block===nil?$send(this,"enum_for",["each_with_object",object],(function $$24(){return(null==$$24.$$s?this:$$24.$$s).$enumerator_size()}),{$$arity:0,$$s:this}):(this.$each.$$p=function(){var param=$Opal.$destructure(arguments);block(param,object)},this.$each(),object)}),1),$def(self,"$entries",(function($a){var args,self=this;args=Opal.slice.call(arguments);var result=[];return self.$each.$$p=function(){result.push($Opal.$destructure(arguments))},self.$each.apply(self,args),result}),-1),$def(self,"$filter_map",(function $$filter_map(){var block=$$filter_map.$$p||nil;return delete $$filter_map.$$p,block===nil?$send(this,"enum_for",["filter_map"],(function $$25(){return(null==$$25.$$s?this:$$25.$$s).$enumerator_size()}),{$$arity:0,$$s:this}):$send($send(this,"map",[],block.$to_proc()),"select",[],"itself".$to_proc())}),0),$def(self,"$find_all",(function $$find_all(){var block=$$find_all.$$p||nil;if(delete $$find_all.$$p,block===nil)return $send(this,"enum_for",["find_all"],(function $$26(){return(null==$$26.$$s?this:$$26.$$s).$enumerator_size()}),{$$arity:0,$$s:this});var result=[];return this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);$truthy(value)&&result.push(param)},this.$each(),result}),0),$def(self,"$find_index",(function $$find_index(object){try{var block=$$find_index.$$p||nil,index=nil;return delete $$find_index.$$p,$truthy(void 0===object&&block===nil)?this.$enum_for("find_index"):(null!=object&&block!==nil&&this.$warn("warning: given block not used"),index=0,$truthy(null!=object)?$send(this,"each",[],(function($a){var value;return value=Opal.slice.call(arguments),$eqeq($Opal.$destructure(value),object)&&Opal.ret(index),index+=1}),-1):$send(this,"each",[],(function($a){var value;return value=Opal.slice.call(arguments),$truthy(Opal.yieldX(block,$to_a(value)))&&Opal.ret(index),index+=1}),-1),nil)}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$first",(function(number){try{var result=nil,current=nil;return $truthy(void 0===number)?$send(this,"each",[],(function(value){null==value&&(value=nil),Opal.ret(value)}),1):(result=[],number=$coerce_to(number,$$$("Integer"),"to_int"),$truthy(number<0)&&$Kernel.$raise($$$("ArgumentError"),"attempt to take negative size"),$truthy(0==number)?[]:(current=0,$send(this,"each",[],(function($a){var args;if(args=Opal.slice.call(arguments),result.push($Opal.$destructure(args)),!$truthy(number<=++current))return nil;Opal.ret(result)}),-1),result))}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$grep",(function $$grep(pattern){var block=$$grep.$$p||nil,result=nil;return delete $$grep.$$p,result=[],$send(this,"each",[],(function($a){var value,cmp=nil;return cmp=comparableForPattern(value=Opal.slice.call(arguments)),$truthy($send(pattern,"__send__",["==="].concat($to_a(cmp))))?(block!==nil?($truthy($rb_gt(value.$length(),1))&&(value=[value]),value=Opal.yieldX(block,$to_a(value))):$truthy($rb_le(value.$length(),1))&&(value=value["$[]"](0)),result.$push(value)):nil}),-1),result}),1),$def(self,"$grep_v",(function $$grep_v(pattern){var block=$$grep_v.$$p||nil,result=nil;return delete $$grep_v.$$p,result=[],$send(this,"each",[],(function($a){var value,cmp=nil;return cmp=comparableForPattern(value=Opal.slice.call(arguments)),$truthy($send(pattern,"__send__",["==="].concat($to_a(cmp))))?nil:(block!==nil?($truthy($rb_gt(value.$length(),1))&&(value=[value]),value=Opal.yieldX(block,$to_a(value))):$truthy($rb_le(value.$length(),1))&&(value=value["$[]"](0)),result.$push(value))}),-1),result}),1),$def(self,"$group_by",(function $$group_by(){var block=$$group_by.$$p||nil,hash=nil,$ret_or_1=nil,$writer=nil;return delete $$group_by.$$p,block===nil?$send(this,"enum_for",["group_by"],(function $$33(){return(null==$$33.$$s?this:$$33.$$s).$enumerator_size()}),{$$arity:0,$$s:this}):(hash=$hash2([],{}),this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);($truthy($ret_or_1=hash["$[]"](value))?$ret_or_1:($writer=[value,[]],$send(hash,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]))["$<<"](param)},this.$each(),hash)}),0),$def(self,"$include?",(function(obj){try{return $send(this,"each",[],(function($a){var args;if(args=Opal.slice.call(arguments),!$eqeq($Opal.$destructure(args),obj))return nil;Opal.ret(!0)}),-1),!1}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),1),$def(self,"$inject",(function $$inject(object,sym){var block=$$inject.$$p||nil;delete $$inject.$$p;var result=object;return block!==nil&&void 0===sym?this.$each.$$p=function(){var value=$Opal.$destructure(arguments);void 0!==result?(value=$yieldX(block,[result,value]),result=value):result=value}:(void 0===sym&&($$$("Symbol")["$==="](object)||$Kernel.$raise($$$("TypeError"),object.$inspect()+" is not a Symbol"),sym=object,result=void 0),this.$each.$$p=function(){var value=$Opal.$destructure(arguments);result=void 0!==result?result.$__send__(sym,value):value}),this.$each(),null==result?nil:result}),-1),$def(self,"$lazy",(function(){return $send($$$($$$("Enumerator"),"Lazy"),"new",[this,this.$enumerator_size()],(function(enum$,$a){var $post_args;return null==enum$&&(enum$=nil),$post_args=Opal.slice.call(arguments,1),$send(enum$,"yield",$to_a($post_args))}),-2)}),0),$def(self,"$enumerator_size",(function(){return $truthy(this["$respond_to?"]("size"))?this.$size():nil}),0),$def(self,"$max",(function $$max(n){var result,value,block=$$max.$$p||nil;return delete $$max.$$p,void 0===n||n===nil?(this.$each.$$p=function(){var item=$Opal.$destructure(arguments);void 0!==result?((value=block!==nil?$yieldX(block,[item,result]):item["$<=>"](result))===nil&&$Kernel.$raise($$$("ArgumentError"),"comparison failed"),value>0&&(result=item)):result=item},this.$each(),void 0===result?nil:result):(n=$coerce_to(n,$$$("Integer"),"to_int"),$send(this,"sort",[],block.$to_proc()).$reverse().$first(n))}),-1),$def(self,"$max_by",(function $$max_by(n){var result,by,block=$$max_by.$$p||nil;return delete $$max_by.$$p,null==n&&(n=nil),$truthy(block)?$truthy(n["$nil?"]())?(this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);if(void 0===result)return result=param,void(by=value);value["$<=>"](by)>0&&(result=param,by=value)},this.$each(),void 0===result?nil:result):$send(this,"sort_by",[],block.$to_proc()).$reverse().$take(n):$send(this,"enum_for",["max_by",n],(function $$37(){return(null==$$37.$$s?this:$$37.$$s).$enumerator_size()}),{$$arity:0,$$s:this})}),-1),$def(self,"$min",(function $$min(n){var result,block=$$min.$$p||nil;return delete $$min.$$p,null==n&&(n=nil),$truthy(n["$nil?"]())?(this.$each.$$p=block!==nil?function(){var param=$Opal.$destructure(arguments);if(void 0!==result){var value=block(param,result);value===nil&&$Kernel.$raise($$$("ArgumentError"),"comparison failed"),value<0&&(result=param)}else result=param}:function(){var param=$Opal.$destructure(arguments);void 0!==result?$Opal.$compare(param,result)<0&&(result=param):result=param},this.$each(),void 0===result?nil:result):block!==nil?$send(this,"sort",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),Opal.yieldX(block,[a,b])}),2).$take(n):this.$sort().$take(n)}),-1),$def(self,"$min_by",(function $$min_by(n){var result,by,block=$$min_by.$$p||nil;return delete $$min_by.$$p,null==n&&(n=nil),$truthy(block)?$truthy(n["$nil?"]())?(this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);if(void 0===result)return result=param,void(by=value);value["$<=>"](by)<0&&(result=param,by=value)},this.$each(),void 0===result?nil:result):$send(this,"sort_by",[],block.$to_proc()).$take(n):$send(this,"enum_for",["min_by",n],(function $$39(){return(null==$$39.$$s?this:$$39.$$s).$enumerator_size()}),{$$arity:0,$$s:this})}),-1),$def(self,"$minmax",(function $$minmax(){var $ret_or_1,block=$$minmax.$$p||nil;delete $$minmax.$$p,block=$truthy($ret_or_1=block)?$ret_or_1:$send($Kernel,"proc",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a["$<=>"](b)}),2);var min=nil,max=nil,first_time=!0;return this.$each.$$p=function(){var element=$Opal.$destructure(arguments);if(first_time)min=max=element,first_time=!1;else{var min_cmp=block.$call(min,element);min_cmp===nil?$Kernel.$raise($$$("ArgumentError"),"comparison failed"):min_cmp>0&&(min=element);var max_cmp=block.$call(max,element);max_cmp===nil?$Kernel.$raise($$$("ArgumentError"),"comparison failed"):max_cmp<0&&(max=element)}},this.$each(),[min,max]}),0),$def(self,"$minmax_by",(function $$minmax_by(){var block=$$minmax_by.$$p||nil;if(delete $$minmax_by.$$p,!$truthy(block))return $send(this,"enum_for",["minmax_by"],(function $$41(){return(null==$$41.$$s?this:$$41.$$s).$enumerator_size()}),{$$arity:0,$$s:this});var min_by,max_by,min_result=nil,max_result=nil;return this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);(void 0===min_by||value["$<=>"](min_by)<0)&&(min_result=param,min_by=value),(void 0===max_by||value["$<=>"](max_by)>0)&&(max_result=param,max_by=value)},this.$each(),[min_result,max_result]}),0),$def(self,"$none?",(function $Enumerable_none$ques$42(pattern){try{var block=$Enumerable_none$ques$42.$$p||nil;return delete $Enumerable_none$ques$42.$$p,$truthy(void 0!==pattern)?$send(this,"each",[],(function($a){var comparable=nil;if(comparable=comparableForPattern(Opal.slice.call(arguments)),!$truthy($send(pattern,"public_send",["==="].concat($to_a(comparable)))))return nil;Opal.ret(!1)}),-1):$send(this,"each",[],block!==nil?function($a){var value;if(value=Opal.slice.call(arguments),!$truthy(Opal.yieldX(block,$to_a(value))))return nil;Opal.ret(!1)}:function($a){var value,item=nil;if(value=Opal.slice.call(arguments),item=$Opal.$destructure(value),!$truthy(item))return nil;Opal.ret(!1)},-1),!0}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$one?",(function $Enumerable_one$ques$46(pattern){try{var block=$Enumerable_one$ques$46.$$p||nil,count=nil;return delete $Enumerable_one$ques$46.$$p,count=0,$truthy(void 0!==pattern)?$send(this,"each",[],(function($a){var comparable=nil;return comparable=comparableForPattern(Opal.slice.call(arguments)),$truthy($send(pattern,"public_send",["==="].concat($to_a(comparable))))?(count=$rb_plus(count,1),$truthy($rb_gt(count,1))?void Opal.ret(!1):nil):nil}),-1):$send(this,"each",[],block!==nil?function($a){var value;return value=Opal.slice.call(arguments),$truthy(Opal.yieldX(block,$to_a(value)))?(count=$rb_plus(count,1),$truthy($rb_gt(count,1))?void Opal.ret(!1):nil):nil}:function($a){var value;return value=Opal.slice.call(arguments),$truthy($Opal.$destructure(value))?(count=$rb_plus(count,1),$truthy($rb_gt(count,1))?void Opal.ret(!1):nil):nil},-1),count["$=="](1)}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$partition",(function $$partition(){var block=$$partition.$$p||nil;if(delete $$partition.$$p,block===nil)return $send(this,"enum_for",["partition"],(function $$50(){return(null==$$50.$$s?this:$$50.$$s).$enumerator_size()}),{$$arity:0,$$s:this});var truthy=[],falsy=[];return this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);$truthy(value)?truthy.push(param):falsy.push(param)},this.$each(),[truthy,falsy]}),0),$def(self,"$reject",(function $$reject(){var block=$$reject.$$p||nil;if(delete $$reject.$$p,block===nil)return $send(this,"enum_for",["reject"],(function $$51(){return(null==$$51.$$s?this:$$51.$$s).$enumerator_size()}),{$$arity:0,$$s:this});var result=[];return this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);$truthy(value)||result.push(param)},this.$each(),result}),0),$def(self,"$reverse_each",(function $$reverse_each(){var block=$$reverse_each.$$p||nil;if(delete $$reverse_each.$$p,block===nil)return $send(this,"enum_for",["reverse_each"],(function $$52(){return(null==$$52.$$s?this:$$52.$$s).$enumerator_size()}),{$$arity:0,$$s:this});var result=[];this.$each.$$p=function(){result.push(arguments)},this.$each();for(var i=result.length-1;i>=0;i--)$yieldX(block,result[i]);return result}),0),$def(self,"$slice_before",(function $$slice_before(pattern){var block=$$slice_before.$$p||nil,self=this;return delete $$slice_before.$$p,$truthy(void 0===pattern&&block===nil)&&$Kernel.$raise($$$("ArgumentError"),"both pattern and block are given"),$truthy(void 0!==pattern&&block!==nil||arguments.length>1)&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arguments.length+" expected 1)"),$send($$$("Enumerator"),"new",[],(function $$53(e){var self=null==$$53.$$s?this:$$53.$$s;null==e&&(e=nil);var slice=[];self.$each.$$p=block!==nil?void 0===pattern?function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);$truthy(value)&&slice.length>0&&(e["$<<"](slice),slice=[]),slice.push(param)}:function(){var param=$Opal.$destructure(arguments),value=block(param,pattern.$dup());$truthy(value)&&slice.length>0&&(e["$<<"](slice),slice=[]),slice.push(param)}:function(){var param=$Opal.$destructure(arguments),value=pattern["$==="](param);$truthy(value)&&slice.length>0&&(e["$<<"](slice),slice=[]),slice.push(param)},self.$each(),slice.length>0&&e["$<<"](slice)}),{$$arity:1,$$s:self})}),-1),$def(self,"$slice_after",(function $$slice_after(pattern){var block=$$slice_after.$$p||nil,self=this;return delete $$slice_after.$$p,$truthy(void 0===pattern&&block===nil)&&$Kernel.$raise($$$("ArgumentError"),"both pattern and block are given"),$truthy(void 0!==pattern&&block!==nil||arguments.length>1)&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arguments.length+" expected 1)"),$truthy(void 0!==pattern)&&(block=$send($Kernel,"proc",[],(function(e){return null==e&&(e=nil),pattern["$==="](e)}),1)),$send($$$("Enumerator"),"new",[],(function $$55(yielder){var accumulate,self=null==$$55.$$s?this:$$55.$$s;null==yielder&&(yielder=nil),self.$each.$$p=function(){var element=$Opal.$destructure(arguments),end_chunk=$yield1(block,element);null==accumulate&&(accumulate=[]),$truthy(end_chunk)?(accumulate.push(element),yielder.$yield(accumulate),accumulate=null):accumulate.push(element)},self.$each(),null!=accumulate&&yielder.$yield(accumulate)}),{$$arity:1,$$s:self})}),-1),$def(self,"$slice_when",(function $$slice_when(){var block=$$slice_when.$$p||nil;return delete $$slice_when.$$p,block===nil&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments (0 for 1)"),$send($$$("Enumerator"),"new",[],(function $$56(yielder){var self=null==$$56.$$s?this:$$56.$$s;null==yielder&&(yielder=nil);var slice=nil,last_after=nil;self.$each_cons.$$p=function(){var params=$Opal.$destructure(arguments),before=params[0],after=params[1],match=$yieldX(block,[before,after]);last_after=after,slice===nil&&(slice=[]),$truthy(match)?(slice.push(before),yielder.$yield(slice),slice=[]):slice.push(before)},self.$each_cons(2),slice!==nil&&(slice.push(last_after),yielder.$yield(slice))}),{$$arity:1,$$s:this})}),0),$def(self,"$sort",(function $$sort(){var ary,block=$$sort.$$p||nil;return delete $$sort.$$p,ary=this.$to_a(),block===nil&&(block=$lambda((function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a["$<=>"](b)}),2)),$send(ary,"sort",[],block.$to_proc())}),0),$def(self,"$sort_by",(function $$sort_by(){var dup,block=$$sort_by.$$p||nil;return delete $$sort_by.$$p,block===nil?$send(this,"enum_for",["sort_by"],(function $$58(){return(null==$$58.$$s?this:$$58.$$s).$enumerator_size()}),{$$arity:0,$$s:this}):(dup=$send(this,"map",[],(function(){var arg=nil;return arg=$Opal.$destructure(arguments),[Opal.yield1(block,arg),arg]}),0),$send(dup,"sort!",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a[0]["$<=>"](b[0])}),2),$send(dup,"map!",[],(function(i){return null==i&&(i=nil),i[1]}),1))}),0),$def(self,"$sum",(function $$sum(initial){var $yield=$$sum.$$p||nil,result=nil,compensation=nil;return delete $$sum.$$p,null==initial&&(initial=0),result=initial,compensation=0,$send(this,"each",[],(function($a){var args,item=nil,y=nil,t=nil;return args=Opal.slice.call(arguments),item=$yield!==nil?Opal.yieldX($yield,$to_a(args)):$Opal.$destructure(args),$not([$$$($$$("Float"),"INFINITY"),$$$($$$("Float"),"INFINITY")["$-@"]()]["$include?"](item))&&$truthy(item["$respond_to?"]("-"))?(y=$rb_minus(item,compensation),t=$rb_plus(result,y),compensation=$rb_minus($rb_minus(t,result),y),result=t):result=$rb_plus(result,item)}),-1),result}),-1),$def(self,"$take",(function(num){return this.$first(num)}),1),$def(self,"$take_while",(function $$take_while(){try{var block=$$take_while.$$p||nil,result=nil;return delete $$take_while.$$p,$truthy(block)?(result=[],$send(this,"each",[],(function($a){var args,value=nil;return args=Opal.slice.call(arguments),value=$Opal.$destructure(args),$truthy(Opal.yield1(block,value))||Opal.ret(result),result.push(value)}),-1)):this.$enum_for("take_while")}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),0),$def(self,"$uniq",(function $$uniq(){var block=$$uniq.$$p||nil,hash=nil;return delete $$uniq.$$p,hash=$hash2([],{}),$send(this,"each",[],(function($a){var args,value=nil,produced=nil,$writer=nil;return args=Opal.slice.call(arguments),value=$Opal.$destructure(args),produced=block!==nil?Opal.yield1(block,value):value,$truthy(hash["$key?"](produced))?nil:($send(hash,"[]=",$to_a($writer=[produced,value])),$writer[$rb_minus($writer.length,1)])}),-1),hash.$values()}),0),$def(self,"$tally",(function(hash){var out;return out=$send($send(this,"group_by",[],"itself".$to_proc()),"transform_values",[],"count".$to_proc()),$truthy(hash)?($send(out,"each",[],(function(k,v){var $writer;return null==k&&(k=nil),null==v&&(v=nil),$writer=[k,$rb_plus(hash.$fetch(k,0),v)],$send(hash,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),2),hash):out}),-1),$def(self,"$to_h",(function $$to_h($a){var args,block=$$to_h.$$p||nil,self=this;if(delete $$to_h.$$p,args=Opal.slice.call(arguments),block!==nil)return $send($send(self,"map",[],block.$to_proc()),"to_h",$to_a(args));var hash=$hash2([],{});return self.$each.$$p=function(){var key,val,param=$Opal.$destructure(arguments),ary=$Opal["$coerce_to?"](param,$$$("Array"),"to_ary");ary.$$is_array||$Kernel.$raise($$$("TypeError"),"wrong element type "+ary.$class()+" (expected array)"),2!==ary.length&&$Kernel.$raise($$$("ArgumentError"),"wrong array length (expected 2, was "+ary.$length()+")"),key=ary[0],val=ary[1],Opal.hash_put(hash,key,val)},self.$each.apply(self,args),hash}),-1),$def(self,"$zip",(function $$zip($a){var others,self=this;return delete $$zip.$$p,others=Opal.slice.call(arguments),$send(self.$to_a(),"zip",$to_a(others))}),-1),$alias(self,"find","detect"),$alias(self,"filter","find_all"),$alias(self,"flat_map","collect_concat"),$alias(self,"map","collect"),$alias(self,"member?","include?"),$alias(self,"reduce","inject"),$alias(self,"select","find_all"),$alias(self,"to_a","entries")}()},Opal.modules["corelib/enumerator/arithmetic_sequence"]=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$truthy=Opal.truthy,$to_a=Opal.to_a,$eqeq=Opal.eqeq,$Kernel=Opal.Kernel,$def=Opal.def,$rb_gt=Opal.rb_gt,$rb_lt=Opal.rb_lt,$rb_le=Opal.rb_le,$rb_ge=Opal.rb_ge,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$eqeqeq=Opal.eqeqeq,$not=Opal.not,$rb_times=Opal.rb_times,$rb_divide=Opal.rb_divide,$alias=Opal.alias;return Opal.add_stubs("is_a?,==,raise,respond_to?,class,attr_reader,begin,end,exclude_end?,>,step,<,<=,>=,-@,_lesser_than_end?,<<,+,-,===,%,_greater_than_begin?,reverse,!,include?,*,to_i,abs,/,hash,inspect"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Enumerator"),$nesting=[self].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ArithmeticSequence"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.step_arg2=$proto.receiver_num=$proto.step_arg1=$proto.step=$proto.range=$proto.topfx=$proto.bypfx=$proto.creation_method=$proto.skipped_arg=nil,Opal.prop(self.$$prototype,"$$is_arithmetic_seq",!0);var inf=1/0;return $def(self,"$initialize",(function(range,step,creation_method){var $a,$ret_or_1=nil;return null==creation_method&&(creation_method="step"),this.creation_method=creation_method,$truthy(range["$is_a?"]($$$("Array")))?($a=[].concat($to_a(range)),this.step_arg1=null==$a[0]?nil:$a[0],this.step_arg2=null==$a[1]?nil:$a[1],this.topfx=null==$a[2]?nil:$a[2],this.bypfx=null==$a[3]?nil:$a[3],this.receiver_num=step,this.step=1,this.range=$truthy(this.step_arg2)?(this.step=this.step_arg2,Opal.Range.$new(this.receiver_num,this.step_arg1,!1)):$truthy(this.step_arg1)?Opal.Range.$new(this.receiver_num,this.step_arg1,!1):Opal.Range.$new(this.receiver_num,nil,!1)):($truthy(step)||(this.skipped_arg=!0),$a=[range,$truthy($ret_or_1=step)?$ret_or_1:1],this.range=$a[0],this.step=$a[1]),this.object=this,$eqeq(this.step,0)&&$Kernel.$raise($$("ArgumentError"),"step can't be 0"),$truthy(this.step["$respond_to?"]("to_int"))?nil:$Kernel.$raise($$("ArgumentError"),"no implicit conversion of "+this.step.$class()+" into Integer")}),-2),self.$attr_reader("step"),$def(self,"$begin",(function(){return this.range.$begin()}),0),$def(self,"$end",(function(){return this.range.$end()}),0),$def(self,"$exclude_end?",(function(){return this.range["$exclude_end?"]()}),0),$def(self,"$_lesser_than_end?",(function(val){var end_,$ret_or_1;return end_=$truthy($ret_or_1=this.$end())?$ret_or_1:inf,$truthy($rb_gt(this.$step(),0))?$truthy(this["$exclude_end?"]())?$rb_lt(val,end_):$rb_le(val,end_):$truthy(this["$exclude_end?"]())?$rb_gt(val,end_):$rb_ge(val,end_)}),1),$def(self,"$_greater_than_begin?",(function(val){var begin_,$ret_or_1;return begin_=$truthy($ret_or_1=this.$begin())?$ret_or_1:inf["$-@"](),$truthy($rb_gt(this.$step(),0))?$rb_gt(val,begin_):$rb_lt(val,begin_)}),1),$def(self,"$first",(function(count){var iter=nil,$ret_or_1=nil,out=nil;if(iter=$truthy($ret_or_1=this.$begin())?$ret_or_1:inf["$-@"](),!$truthy(count))return $truthy(this["$_lesser_than_end?"](iter))?iter:nil;for(out=[];$truthy($truthy($ret_or_1=this["$_lesser_than_end?"](iter))?$rb_gt(count,0):$ret_or_1);)out["$<<"](iter),iter=$rb_plus(iter,this.$step()),count=$rb_minus(count,1);return out}),-1),$def(self,"$each",(function $$each(){var $ret_or_1,block=$$each.$$p||nil,iter=nil;if(delete $$each.$$p,block===nil)return this;for($eqeqeq(nil,this.$begin())&&$Kernel.$raise($$("TypeError"),"nil can't be coerced into Integer"),iter=$truthy($ret_or_1=this.$begin())?$ret_or_1:inf["$-@"]();$truthy(this["$_lesser_than_end?"](iter));)Opal.yield1(block,iter),iter=$rb_plus(iter,this.$step());return this}),0),$def(self,"$last",(function(count){var $ret_or_1=nil,iter=nil,out=nil;if($eqeqeq(inf,$ret_or_1=this.$end())||$eqeqeq(inf["$-@"](),$ret_or_1)?$Kernel.$raise($$$("FloatDomainError"),this.$end()):$eqeqeq(nil,$ret_or_1)&&$Kernel.$raise($$$("RangeError"),"cannot get the last element of endless arithmetic sequence"),iter=$rb_minus(this.$end(),$rb_minus(this.$end(),this.$begin())["$%"](this.$step())),$truthy(this["$_lesser_than_end?"](iter))||(iter=$rb_minus(iter,this.$step())),!$truthy(count))return $truthy(this["$_greater_than_begin?"](iter))?iter:nil;for(out=[];$truthy($truthy($ret_or_1=this["$_greater_than_begin?"](iter))?$rb_gt(count,0):$ret_or_1);)out["$<<"](iter),iter=$rb_minus(iter,this.$step()),count=$rb_minus(count,1);return out.$reverse()}),-1),$def(self,"$size",(function(){var step_sign,iter=nil;return step_sign=$truthy($rb_gt(this.$step(),0))?1:-1,$not(this["$_lesser_than_end?"](this.$begin()))?0:$truthy([inf["$-@"](),inf]["$include?"](this.$step()))?1:$truthy([$rb_times(inf["$-@"](),step_sign),nil]["$include?"](this.$begin()))||$truthy([$rb_times(inf,step_sign),nil]["$include?"](this.$end()))?inf:(iter=$rb_minus(this.$end(),$rb_minus(this.$end(),this.$begin())["$%"](this.$step())),$truthy(this["$_lesser_than_end?"](iter))||(iter=$rb_minus(iter,this.$step())),$rb_plus($rb_divide($rb_minus(iter,this.$begin()),this.$step()).$abs().$to_i(),1))}),0),$def(self,"$==",(function(other){var $ret_or_1,$ret_or_2,$ret_or_3,$ret_or_4;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=$truthy($ret_or_4=this.$class()["$=="](other.$class()))?this.$begin()["$=="](other.$begin()):$ret_or_4)?this.$end()["$=="](other.$end()):$ret_or_3)?this.$step()["$=="](other.$step()):$ret_or_2)?this["$exclude_end?"]()["$=="](other["$exclude_end?"]()):$ret_or_1}),1),$def(self,"$hash",(function(){return[this.$begin(),this.$end(),this.$step(),this["$exclude_end?"]()].$hash()}),0),$def(self,"$inspect",(function(){var args=nil;return $truthy(this.receiver_num)?(args=$truthy(this.step_arg2)?"("+this.topfx+this.step_arg1.$inspect()+", "+this.bypfx+this.step_arg2.$inspect()+")":$truthy(this.step_arg1)?"("+this.topfx+this.step_arg1.$inspect()+")":nil,"("+this.receiver_num.$inspect()+"."+this.creation_method+args+")"):(args=$truthy(this.skipped_arg)?nil:"("+this.step+")","(("+this.range.$inspect()+")."+this.creation_method+args+")")}),0),$alias(self,"===","=="),$alias(self,"eql?","==")}(self,self,$nesting)}(0,0,[])},Opal.modules["corelib/enumerator/chain"]=function(Opal){var self,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus;return Opal.add_stubs("to_enum,size,each,<<,to_proc,include?,+,reverse_each,respond_to?,rewind,inspect"),function($base,$super){var self=$klass($base,$super,"Chain"),$proto=self.$$prototype;return $proto.enums=$proto.iterated=nil,$def(self,"$initialize",(function($a){var enums,self=this;return enums=Opal.slice.call(arguments),self.enums=enums,self.iterated=[],self.object=self}),-1),$def(self,"$each",(function $$each($a){var $post_args,args,block=$$each.$$p||nil,self=this;return delete $$each.$$p,$post_args=Opal.slice.call(arguments),args=$post_args,block===nil?$send(self,"to_enum",["each"].concat($to_a(args)),(function $$1(){return(null==$$1.$$s?this:$$1.$$s).$size()}),{$$arity:0,$$s:self}):($send(self.enums,"each",[],(function $$2(enum$){var self=null==$$2.$$s?this:$$2.$$s;return null==self.iterated&&(self.iterated=nil),null==enum$&&(enum$=nil),self.iterated["$<<"](enum$),$send(enum$,"each",$to_a(args),block.$to_proc())}),{$$arity:1,$$s:self}),self)}),-1),$def(self,"$size",(function($a){try{var $post_args,args,self=this,accum=nil;return $post_args=Opal.slice.call(arguments),args=$post_args,accum=0,$send(self.enums,"each",[],(function(enum$){var size;return null==enum$&&(enum$=nil),size=$send(enum$,"size",$to_a(args)),$truthy([nil,$$$($$$("Float"),"INFINITY")]["$include?"](size))&&Opal.ret(size),accum=$rb_plus(accum,size)}),1),accum}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$rewind",(function(){return $send(this.iterated,"reverse_each",[],(function(enum$){return null==enum$&&(enum$=nil),$truthy(enum$["$respond_to?"]("rewind"))?enum$.$rewind():nil}),1),this.iterated=[],this}),0),$def(self,"$inspect",(function(){return"#"}),0)}(self=$klass("::",null,"Enumerator"),self)},Opal.modules["corelib/enumerator/generator"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$breaker=Opal.breaker,$klass=Opal.klass,$truthy=Opal.truthy,$Kernel=Opal.Kernel,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("include,raise,new,to_proc"),function($base,$super,$parent_nesting){var $nesting=[$klass($base,null,"Enumerator")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Generator"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.block=nil,self.$include($$$("Enumerable")),$def(self,"$initialize",(function $$initialize(){var block=$$initialize.$$p||nil;return delete $$initialize.$$p,$truthy(block)||$Kernel.$raise($$$("LocalJumpError"),"no block given"),this.block=block}),0),$def(self,"$each",(function $$each($a){var args,block=$$each.$$p||nil,self=this,yielder=nil;delete $$each.$$p,args=Opal.slice.call(arguments),yielder=$send($$("Yielder"),"new",[],block.$to_proc());try{args.unshift(yielder),Opal.yieldX(self.block,args)}catch(e){if(e===$breaker)return $breaker.$v;throw e}return self}),-1)}($nesting[0],0,$nesting)}($nesting[0],0,$nesting)},Opal.modules["corelib/enumerator/lazy"]=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$truthy=Opal.truthy,$coerce_to=Opal.coerce_to,$yield1=Opal.yield1,$yieldX=Opal.yieldX,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$defs=Opal.defs,$Kernel=Opal.Kernel,$send=Opal.send,$def=Opal.def,$Opal=Opal.Opal,$rb_lt=Opal.rb_lt,$eqeqeq=Opal.eqeqeq,$rb_plus=Opal.rb_plus,$alias=Opal.alias;return Opal.add_stubs("raise,each,new,enumerator_size,yield,respond_to?,try_convert,<,===,+,for,class,to_proc,destructure,inspect"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Enumerator"),$nesting=[self].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Lazy"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.enumerator=nil,$klass(self,$$$("Exception"),"StopLazyError"),$defs(self,"$for",(function $Lazy_for$1(object,$a){var $rest_arg,$yield=$Lazy_for$1.$$p||nil,self=this,lazy=nil;return delete $Lazy_for$1.$$p,$rest_arg=Opal.slice.call(arguments,1),(lazy=$send2(self,$find_super(self,"for",$Lazy_for$1,!1,!0),"for",[object].concat($to_a($rest_arg)),$yield)).enumerator=object,lazy}),-2),$def(self,"$initialize",(function $$initialize(object,size){var block=$$initialize.$$p||nil;return delete $$initialize.$$p,null==size&&(size=nil),block===nil&&$Kernel.$raise($$$("ArgumentError"),"tried to call lazy new without a block"),this.enumerator=object,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[size],(function(yielder,$a){var each_args;null==yielder&&(yielder=nil),each_args=Opal.slice.call(arguments,1);try{return $send(object,"each",$to_a(each_args),(function($b){var args;(args=Opal.slice.call(arguments)).unshift(yielder),$yieldX(block,args)}),-1)}catch($err){if(!Opal.rescue($err,[$$("StopLazyError")]))throw $err;try{return nil}finally{Opal.pop_exception()}}}),-2)}),-2),$def(self,"$lazy",(function(){return this}),0),$def(self,"$collect",(function $$collect(){var block=$$collect.$$p||nil;return delete $$collect.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to call lazy map without a block"),$send($$("Lazy"),"new",[this,this.$enumerator_size()],(function(enum$,$a){var $post_args;null==enum$&&(enum$=nil),$post_args=Opal.slice.call(arguments,1);var value=$yieldX(block,$post_args);enum$.$yield(value)}),-2)}),0),$def(self,"$collect_concat",(function $$collect_concat(){var block=$$collect_concat.$$p||nil;return delete $$collect_concat.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to call lazy map without a block"),$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var $post_args;null==enum$&&(enum$=nil),$post_args=Opal.slice.call(arguments,1);var value=$yieldX(block,$post_args);if(value["$respond_to?"]("force")&&value["$respond_to?"]("each"))$send(value,"each",[],(function(v){return null==v&&(v=nil),enum$.$yield(v)}),1);else{var array=$Opal.$try_convert(value,$$$("Array"),"to_ary");array===nil?enum$.$yield(value):$send(value,"each",[],(function(v){return null==v&&(v=nil),enum$.$yield(v)}),1)}}),-2)}),0),$def(self,"$drop",(function(n){var current_size,set_size,dropped=nil;return n=$coerce_to(n,$$$("Integer"),"to_int"),$truthy($rb_lt(n,0))&&$Kernel.$raise($$$("ArgumentError"),"attempt to drop negative size"),current_size=this.$enumerator_size(),set_size=$eqeqeq($$$("Integer"),current_size)&&$truthy($rb_lt(n,current_size))?n:current_size,dropped=0,$send($$("Lazy"),"new",[this,set_size],(function(enum$,$a){var args;return null==enum$&&(enum$=nil),args=Opal.slice.call(arguments,1),$truthy($rb_lt(dropped,n))?dropped=$rb_plus(dropped,1):$send(enum$,"yield",$to_a(args))}),-2)}),1),$def(self,"$drop_while",(function $$drop_while(){var block=$$drop_while.$$p||nil,succeeding=nil;return delete $$drop_while.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to call lazy drop_while without a block"),succeeding=!0,$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var args;if(null==enum$&&(enum$=nil),args=Opal.slice.call(arguments,1),!$truthy(succeeding))return $send(enum$,"yield",$to_a(args));var value=$yieldX(block,args);$truthy(value)||(succeeding=!1,$send(enum$,"yield",$to_a(args)))}),-2)}),0),$def(self,"$enum_for",(function $$enum_for($a,$b){var $post_args,method,args,block=$$enum_for.$$p||nil,self=this;return delete $$enum_for.$$p,($post_args=Opal.slice.call(arguments)).length>0&&(method=$post_args.shift()),null==method&&(method="each"),args=$post_args,$send(self.$class(),"for",[self,method].concat($to_a(args)),block.$to_proc())}),-1),$def(self,"$find_all",(function $$find_all(){var block=$$find_all.$$p||nil;return delete $$find_all.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to call lazy select without a block"),$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var $post_args,args;null==enum$&&(enum$=nil),$post_args=Opal.slice.call(arguments,1);var value=$yieldX(block,args=$post_args);$truthy(value)&&$send(enum$,"yield",$to_a(args))}),-2)}),0),$def(self,"$grep",(function $$grep(pattern){var block=$$grep.$$p||nil;return delete $$grep.$$p,$truthy(block)?$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var args;null==enum$&&(enum$=nil),args=Opal.slice.call(arguments,1);var param=$Opal.$destructure(args),value=pattern["$==="](param);$truthy(value)&&(value=$yield1(block,param),enum$.$yield($yield1(block,param)))}),-2):$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var args;null==enum$&&(enum$=nil),args=Opal.slice.call(arguments,1);var param=$Opal.$destructure(args),value=pattern["$==="](param);$truthy(value)&&enum$.$yield(param)}),-2)}),1),$def(self,"$reject",(function $$reject(){var block=$$reject.$$p||nil;return delete $$reject.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to call lazy reject without a block"),$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var $post_args,args;null==enum$&&(enum$=nil),$post_args=Opal.slice.call(arguments,1);var value=$yieldX(block,args=$post_args);$truthy(value)||$send(enum$,"yield",$to_a(args))}),-2)}),0),$def(self,"$take",(function(n){var current_size,set_size,taken=nil;return n=$coerce_to(n,$$$("Integer"),"to_int"),$truthy($rb_lt(n,0))&&$Kernel.$raise($$$("ArgumentError"),"attempt to take negative size"),current_size=this.$enumerator_size(),set_size=$eqeqeq($$$("Integer"),current_size)&&$truthy($rb_lt(n,current_size))?n:current_size,taken=0,$send($$("Lazy"),"new",[this,set_size],(function(enum$,$a){var args;return null==enum$&&(enum$=nil),args=Opal.slice.call(arguments,1),$truthy($rb_lt(taken,n))?($send(enum$,"yield",$to_a(args)),taken=$rb_plus(taken,1)):$Kernel.$raise($$("StopLazyError"))}),-2)}),1),$def(self,"$take_while",(function $$take_while(){var block=$$take_while.$$p||nil;return delete $$take_while.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to call lazy take_while without a block"),$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var $post_args,args;null==enum$&&(enum$=nil),$post_args=Opal.slice.call(arguments,1);var value=$yieldX(block,args=$post_args);$truthy(value)?$send(enum$,"yield",$to_a(args)):$Kernel.$raise($$("StopLazyError"))}),-2)}),0),$def(self,"$inspect",(function(){return"#<"+this.$class()+": "+this.enumerator.$inspect()+">"}),0),$alias(self,"force","to_a"),$alias(self,"filter","find_all"),$alias(self,"flat_map","collect_concat"),$alias(self,"map","collect"),$alias(self,"select","find_all"),$alias(self,"to_enum","enum_for")}(self,self,$nesting)}(0,0,[])},Opal.modules["corelib/enumerator/yielder"]=function(Opal){var $base,$parent_nesting,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$klass=Opal.klass,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a;return Opal.add_stubs("yield,proc"),$base=$nesting[0],$parent_nesting=$nesting,function($base,$super){var self=$klass($base,null,"Yielder");return self.$$prototype.block=nil,$def(self,"$initialize",(function $$initialize(){var block=$$initialize.$$p||nil;return delete $$initialize.$$p,this.block=block,this}),0),$def(self,"$yield",(function($a){var values,self=this;values=Opal.slice.call(arguments);var value=Opal.yieldX(self.block,values);if(value===$breaker)throw $breaker;return value}),-1),$def(self,"$<<",(function(value){return this.$yield(value),this}),1),$def(self,"$to_proc",(function(){return $send(this,"proc",[],(function $$3($a){var $post_args,self=null==$$3.$$s?this:$$3.$$s;return $post_args=Opal.slice.call(arguments),$send(self,"yield",$to_a($post_args))}),{$$arity:-1,$$s:this})}),0)}([$klass($base,null,"Enumerator")].concat($parent_nesting)[0])},Opal.modules["corelib/enumerator"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$slice=Opal.slice,$coerce_to=Opal.coerce_to,$klass=Opal.klass,$defs=Opal.defs,$truthy=Opal.truthy,$send=Opal.send,$not=Opal.not,$def=Opal.def,$rb_plus=Opal.rb_plus,$to_a=Opal.to_a,$Opal=Opal.Opal,$send2=Opal.send2,$find_super=Opal.find_super,$rb_ge=Opal.rb_ge,$Kernel=Opal.Kernel,$rb_le=Opal.rb_le,$alias=Opal.alias;return Opal.add_stubs("require,include,allocate,new,to_proc,!,respond_to?,empty?,nil?,+,class,__send__,call,enum_for,size,destructure,map,>=,length,raise,[],peek_values,<=,next_values,inspect,any?,autoload"),self.$require("corelib/enumerable"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Enumerator"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.size=$proto.args=$proto.object=$proto.method=$proto.values=$proto.cursor=nil,self.$include($$$("Enumerable")),self.$$prototype.$$is_enumerator=!0,$defs(self,"$for",(function $Enumerator_for$1(object,$a,$b){var $post_args,method,args,block=$Enumerator_for$1.$$p||nil,self=this;delete $Enumerator_for$1.$$p,($post_args=Opal.slice.call(arguments,1)).length>0&&(method=$post_args.shift()),null==method&&(method="each"),args=$post_args;var obj=self.$allocate();return obj.object=object,obj.size=block,obj.method=method,obj.args=args,obj.cursor=0,obj}),-2),$def(self,"$initialize",(function $$initialize($a){var block=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,Opal.slice.call(arguments),self.cursor=0,$truthy(block)?(self.object=$send($$("Generator"),"new",[],block.$to_proc()),self.method="each",self.args=[],self.size=arguments[0]||nil,$truthy(self.size)&&$not(self.size["$respond_to?"]("call"))?self.size=$coerce_to(self.size,$$$("Integer"),"to_int"):nil):(self.object=arguments[0],self.method=arguments[1]||"each",self.args=$slice.call(arguments,2),self.size=nil)}),-1),$def(self,"$each",(function $$each($a){var args,block=$$each.$$p||nil,self=this;return delete $$each.$$p,args=Opal.slice.call(arguments),$truthy(block["$nil?"]())&&$truthy(args["$empty?"]())?self:(args=$rb_plus(self.args,args),$truthy(block["$nil?"]())?$send(self.$class(),"new",[self.object,self.method].concat($to_a(args))):$send(self.object,"__send__",[self.method].concat($to_a(args)),block.$to_proc()))}),-1),$def(self,"$size",(function(){return $truthy(this.size["$respond_to?"]("call"))?$send(this.size,"call",$to_a(this.args)):this.size}),0),$def(self,"$with_index",(function $$with_index(offset){var block=$$with_index.$$p||nil;if(delete $$with_index.$$p,null==offset&&(offset=0),offset=$truthy(offset)?$coerce_to(offset,$$$("Integer"),"to_int"):0,!$truthy(block))return $send(this,"enum_for",["with_index",offset],(function $$2(){return(null==$$2.$$s?this:$$2.$$s).$size()}),{$$arity:0,$$s:this});var index=offset;return this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=block(param,index);return index++,value},this.$each()}),-1),$def(self,"$each_with_index",(function $$each_with_index(){var block=$$each_with_index.$$p||nil;return delete $$each_with_index.$$p,block===nil?$send(this,"enum_for",["each_with_index"],(function $$3(){return(null==$$3.$$s?this:$$3.$$s).$size()}),{$$arity:0,$$s:this}):($send2(this,$find_super(this,"each_with_index",$$each_with_index,!1,!0),"each_with_index",[],block),this.object)}),0),$def(self,"$rewind",(function(){return this.cursor=0,this}),0),$def(self,"$peek_values",(function(){var $ret_or_1;return this.values=$truthy($ret_or_1=this.values)?$ret_or_1:$send(this,"map",[],(function($a){return Opal.slice.call(arguments)}),-1),$truthy($rb_ge(this.cursor,this.values.$length()))&&$Kernel.$raise($$$("StopIteration"),"iteration reached an end"),this.values["$[]"](this.cursor)}),0),$def(self,"$peek",(function(){var values=nil;return values=this.$peek_values(),$truthy($rb_le(values.$length(),1))?values["$[]"](0):values}),0),$def(self,"$next_values",(function(){var out;return out=this.$peek_values(),this.cursor=$rb_plus(this.cursor,1),out}),0),$def(self,"$next",(function(){var values=nil;return values=this.$next_values(),$truthy($rb_le(values.$length(),1))?values["$[]"](0):values}),0),$def(self,"$feed",(function(arg){return this.$raise($$("NotImplementedError"),"Opal doesn't support Enumerator#feed")}),1),$def(self,"$+",(function(other){return $$$($$$("Enumerator"),"Chain").$new(this,other)}),1),$def(self,"$inspect",(function(){var result=nil;return result="#<"+this.$class()+": "+this.object.$inspect()+":"+this.method,$truthy(this.args["$any?"]())&&(result=$rb_plus(result,"("+this.args.$inspect()["$[]"]($$$("Range").$new(1,-2))+")")),$rb_plus(result,">")}),0),$alias(self,"with_object","each_with_object"),self.$autoload("ArithmeticSequence","corelib/enumerator/arithmetic_sequence"),self.$autoload("Chain","corelib/enumerator/chain"),self.$autoload("Generator","corelib/enumerator/generator"),self.$autoload("Lazy","corelib/enumerator/lazy"),self.$autoload("Yielder","corelib/enumerator/yielder")}(0,0,[])},Opal.modules["corelib/numeric"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$truthy=Opal.truthy,$Kernel=Opal.Kernel,$def=Opal.def,$to_ary=Opal.to_ary,$eqeqeq=Opal.eqeqeq,$rb_minus=Opal.rb_minus,$rb_times=Opal.rb_times,$rb_lt=Opal.rb_lt,$eqeq=Opal.eqeq,$rb_divide=Opal.rb_divide,$Opal=Opal.Opal,$hash2=Opal.hash2,$not=Opal.not,$send=Opal.send,$rb_ge=Opal.rb_ge,$rb_le=Opal.rb_le,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt,$alias=Opal.alias;return Opal.add_stubs("require,include,instance_of?,class,Float,respond_to?,coerce,__send__,===,raise,equal?,-,*,div,<,-@,ceil,to_f,denominator,to_r,==,floor,/,%,Complex,zero?,numerator,abs,arg,coerce_to!,round,<=>,compare,is_a?,!,new,enum_for,to_proc,negative?,>=,<=,+,to_i,truncate,>"),self.$require("corelib/comparable"),function($base,$super){var self=$klass("::",null,"Numeric");return self.$include($$$("Comparable")),$def(self,"$coerce",(function(other){return $truthy(other["$instance_of?"](this.$class()))?[other,this]:[$Kernel.$Float(other),$Kernel.$Float(this)]}),1),$def(self,"$__coerced__",(function(method,other){var $a,$b,a=nil,b=nil,$ret_or_1=nil;return $truthy(other["$respond_to?"]("coerce"))?($b=other.$coerce(this),a=null==($a=$to_ary($b))[0]?nil:$a[0],b=null==$a[1]?nil:$a[1],a.$__send__(method,b)):$eqeqeq("+",$ret_or_1=method)||$eqeqeq("-",$ret_or_1)||$eqeqeq("*",$ret_or_1)||$eqeqeq("/",$ret_or_1)||$eqeqeq("%",$ret_or_1)||$eqeqeq("&",$ret_or_1)||$eqeqeq("|",$ret_or_1)||$eqeqeq("^",$ret_or_1)||$eqeqeq("**",$ret_or_1)?$Kernel.$raise($$$("TypeError"),other.$class()+" can't be coerced into Numeric"):$eqeqeq(">",$ret_or_1)||$eqeqeq(">=",$ret_or_1)||$eqeqeq("<",$ret_or_1)||$eqeqeq("<=",$ret_or_1)||$eqeqeq("<=>",$ret_or_1)?$Kernel.$raise($$$("ArgumentError"),"comparison of "+this.$class()+" with "+other.$class()+" failed"):nil}),2),$def(self,"$<=>",(function(other){return $truthy(this["$equal?"](other))?0:nil}),1),$def(self,"$+@",(function(){return this}),0),$def(self,"$-@",(function(){return $rb_minus(0,this)}),0),$def(self,"$%",(function(other){return $rb_minus(this,$rb_times(other,this.$div(other)))}),1),$def(self,"$abs",(function(){return $rb_lt(this,0)?this["$-@"]():this}),0),$def(self,"$abs2",(function(){return $rb_times(this,this)}),0),$def(self,"$angle",(function(){return $rb_lt(this,0)?$$$($$$("Math"),"PI"):0}),0),$def(self,"$ceil",(function(ndigits){return null==ndigits&&(ndigits=0),this.$to_f().$ceil(ndigits)}),-1),$def(self,"$conj",(function(){return this}),0),$def(self,"$denominator",(function(){return this.$to_r().$denominator()}),0),$def(self,"$div",(function(other){return $eqeq(other,0)&&$Kernel.$raise($$$("ZeroDivisionError"),"divided by o"),$rb_divide(this,other).$floor()}),1),$def(self,"$divmod",(function(other){return[this.$div(other),this["$%"](other)]}),1),$def(self,"$fdiv",(function(other){return $rb_divide(this.$to_f(),other)}),1),$def(self,"$floor",(function(ndigits){return null==ndigits&&(ndigits=0),this.$to_f().$floor(ndigits)}),-1),$def(self,"$i",(function(){return $Kernel.$Complex(0,this)}),0),$def(self,"$imag",(function(){return 0}),0),$def(self,"$integer?",(function(){return!1}),0),$def(self,"$nonzero?",(function(){return $truthy(this["$zero?"]())?nil:this}),0),$def(self,"$numerator",(function(){return this.$to_r().$numerator()}),0),$def(self,"$polar",(function(){return[this.$abs(),this.$arg()]}),0),$def(self,"$quo",(function(other){return $rb_divide($Opal["$coerce_to!"](this,$$$("Rational"),"to_r"),other)}),1),$def(self,"$real",(function(){return this}),0),$def(self,"$real?",(function(){return!0}),0),$def(self,"$rect",(function(){return[this,0]}),0),$def(self,"$round",(function(digits){return this.$to_f().$round(digits)}),-1),$def(self,"$step",(function $$step($a,$b,$c){var $post_args,$kwargs,limit,step,to,by,block=$$step.$$p||nil,self=this,counter=nil;if(delete $$step.$$p,$post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");function validateParameters(){step===nil&&$Kernel.$raise($$$("TypeError"),"step must be numeric"),null!=step&&step["$=="](0)&&$Kernel.$raise($$$("ArgumentError"),"step can't be 0"),step!==nil&&null!=step||(step=1);var sign=step["$<=>"](0);sign===nil&&$Kernel.$raise($$$("ArgumentError"),"0 can't be coerced into "+step.$class()),limit!==nil&&null!=limit||(limit=sign>0?$$$($$$("Float"),"INFINITY"):$$$($$$("Float"),"INFINITY")["$-@"]()),$Opal.$compare(self,limit)}function stepFloatSize(){if(step>0&&self>limit||step<0&&self.5&&(err=.5),floor((limit-self)/step+err)+1)}function stepSize(){if(validateParameters(),0===step)return 1/0;if(step%1!=0)return stepFloatSize();if(step>0&&self>limit||step<0&&self0&&(limit=$post_args.shift()),$post_args.length>0&&(step=$post_args.shift()),to=$kwargs.$$smap.to,by=$kwargs.$$smap.by,void 0!==limit&&void 0!==to&&$Kernel.$raise($$$("ArgumentError"),"to is given twice"),void 0!==step&&void 0!==by&&$Kernel.$raise($$$("ArgumentError"),"step is given twice"),void 0!==to&&(limit=to),void 0!==by&&(step=by),void 0===limit&&(limit=nil),block===nil)return($not(limit)||$truthy(limit["$is_a?"]($$$("Numeric"))))&&($not(step)||$truthy(step["$is_a?"]($$$("Numeric"))))?$$$($$$("Enumerator"),"ArithmeticSequence").$new([limit,step,$truthy(to)?"to: ":nil,$truthy(by)?"by: ":nil],self):$send(self,"enum_for",["step",limit,step],stepSize.$to_proc());validateParameters();var isDesc=step["$negative?"](),isInf=step["$=="](0)||limit===1/0&&!isDesc||limit===-1/0&&isDesc;if(self.$$is_number&&step.$$is_number&&limit.$$is_number){if(self%1!=0||!isInf&&limit%1!=0||step%1!=0){var begin=self.$to_f().valueOf();step=step.$to_f().valueOf(),limit=limit.$to_f().valueOf();var n=stepFloatSize();if(isFinite(step))if(0===step)for(;;)block(begin);else for(var i=0;i=0?limitd)&&(d=limit),block(d)}else 0!==n&&block(begin);return self}var value=self;if(isInf)for(;;value+=step)block(value);else if(isDesc)for(;value>=limit;value+=step)block(value);else for(;value<=limit;value+=step)block(value);return self}for(counter=self;$truthy(isDesc?$rb_ge(counter,limit):$rb_le(counter,limit));)Opal.yield1(block,counter),counter=$rb_plus(counter,step)}),-1),$def(self,"$to_c",(function(){return $Kernel.$Complex(this,0)}),0),$def(self,"$to_int",(function(){return this.$to_i()}),0),$def(self,"$truncate",(function(ndigits){return null==ndigits&&(ndigits=0),this.$to_f().$truncate(ndigits)}),-1),$def(self,"$zero?",(function(){return this["$=="](0)}),0),$def(self,"$positive?",(function(){return $rb_gt(this,0)}),0),$def(self,"$negative?",(function(){return $rb_lt(this,0)}),0),$def(self,"$dup",(function(){return this}),0),$def(self,"$clone",(function($kwargs){if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==$kwargs.$$smap.freeze&&!0,this}),-1),$def(self,"$finite?",(function(){return!0}),0),$def(self,"$infinite?",(function(){return nil}),0),$alias(self,"arg","angle"),$alias(self,"conjugate","conj"),$alias(self,"imaginary","imag"),$alias(self,"magnitude","abs"),$alias(self,"modulo","%"),$alias(self,"phase","arg"),$alias(self,"rectangular","rect")}()},Opal.modules["corelib/array"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$truthy=Opal.truthy,$falsy=Opal.falsy,$hash_ids=Opal.hash_ids,$yield1=Opal.yield1,$hash_get=Opal.hash_get,$hash_put=Opal.hash_put,$hash_delete=Opal.hash_delete,$coerce_to=Opal.coerce_to,$respond_to=Opal.respond_to,$klass=Opal.klass,$defs=Opal.defs,$Kernel=Opal.Kernel,$def=Opal.def,$Opal=Opal.Opal,$eqeqeq=Opal.eqeqeq,$hash2=Opal.hash2,$send2=Opal.send2,$find_super=Opal.find_super,$send=Opal.send,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$eqeq=Opal.eqeq,$rb_minus=Opal.rb_minus,$to_a=Opal.to_a,$to_ary=Opal.to_ary,$gvars=Opal.gvars,$rb_ge=Opal.rb_ge,$rb_lt=Opal.rb_lt,$neqeq=Opal.neqeq,$alias=Opal.alias;return Opal.add_stubs("require,include,to_a,warn,raise,replace,respond_to?,to_ary,coerce_to?,===,join,to_str,hash,<=>,==,object_id,inspect,enum_for,class,bsearch_index,to_proc,nil?,coerce_to!,>,*,enumerator_size,empty?,size,map,equal?,dup,each,reduce,-,[],dig,eql?,length,exclude_end?,flatten,__id__,&,!,intersection,to_s,new,item,max,min,>=,**,delete_if,reverse,rotate,rand,at,keep_if,shuffle!,<,sort,sort_by,!=,times,[]=,<<,uniq,|,values,is_a?,end,begin,upto,reject,pristine,singleton_class"),self.$require("corelib/enumerable"),self.$require("corelib/numeric"),function($base,$super,$parent_nesting){var self=$klass("::",Array,"Array"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);function toArraySubclass(obj,klass){return klass.$$name===Opal.Array?obj:klass.$allocate().$replace(obj.$to_a())}function filterIf(self,filter,block){for(var value,raised=null,updated=new Array(self.length),i=0,i2=0,length=self.length;isize?nil:to<0&&(to+=size)<0?[]:(exclude&&index.end!==nil||(to+=1),self.slice(from,to)))}function binomial_coefficient(n,k){return n===k||0===k?1:k>0&&n>k?binomial_coefficient(n-1,k-1)+binomial_coefficient(n-1,k):0}self.$include($$$("Enumerable")),Opal.prop(self.$$prototype,"$$is_array",!0),$defs(self,"$[]",(function($a){var self=this;return toArraySubclass(Opal.slice.call(arguments),self)}),-1),$def(self,"$initialize",(function $$initialize(size,obj){var i,value,block=$$initialize.$$p||nil,self=this;if(delete $$initialize.$$p,null==size&&(size=nil),null==obj&&(obj=nil),obj!==nil&&block!==nil&&$Kernel.$warn("warning: block supersedes default value argument"),size>$$$($$$("Integer"),"MAX")&&$Kernel.$raise($$$("ArgumentError"),"array size too big"),arguments.length>2&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arguments.length+" for 0..2)"),0===arguments.length)return self.splice(0,self.length),self;if(1===arguments.length){if(size.$$is_array)return self.$replace(size.$to_a()),self;if(size["$respond_to?"]("to_ary"))return self.$replace(size.$to_ary()),self}if((size=$coerce_to(size,$$$("Integer"),"to_int"))<0&&$Kernel.$raise($$$("ArgumentError"),"negative array size"),self.splice(0,self.length),block===nil)for(i=0;i",(function(other){if($eqeqeq($$$("Array"),other))other=other.$to_a();else{if(!$truthy(other["$respond_to?"]("to_ary")))return nil;other=other.$to_ary().$to_a()}if(this.$hash()===other.$hash())return 0;for(var count=Math.min(this.length,other.length),i=0;i"](other[i]);if(0!==tmp)return tmp}return this.length["$<=>"](other.length)}),1),$def(self,"$==",(function(other){var recursed={};return function _eqeq(array,other){var i,length,a,b;if(array===other)return!0;if(!other.$$is_array)return!!$respond_to(other,"$to_ary")&&other["$=="](array);if(array.$$constructor!==Array&&(array=array.$to_a()),other.$$constructor!==Array&&(other=other.$to_a()),array.length!==other.length)return!1;for(recursed[array.$object_id()]=!0,i=0,length=array.length;i=size||index<0?nil:self[index]:(length=$coerce_to(length,Opal.Integer,"to_int"))<0||index>size||index<0?nil:self.slice(index,index+length)}(this,index,length)}),-2),$def(self,"$[]=",(function(index,value,extra){var i,old,data=nil,length=nil,size=this.length;if($eqeqeq($$$("Range"),index)){data=$eqeqeq($$$("Array"),value)?value.$to_a():$truthy(value["$respond_to?"]("to_ary"))?value.$to_ary().$to_a():[value];var exclude=index.excl,from=index.begin===nil?0:$coerce_to(index.begin,Opal.Integer,"to_int"),to=index.end===nil?-1:$coerce_to(index.end,Opal.Integer,"to_int");if(from<0&&(from+=size)<0&&$Kernel.$raise($$$("RangeError"),index.$inspect()+" out of range"),to<0&&(to+=size),exclude&&index.end!==nil||(to+=1),from>size)for(i=size;isize)for(i=size;i=this.length?nil:this[index]}),1),$def(self,"$bsearch_index",(function $$bsearch_index(){var block=$$bsearch_index.$$p||nil;if(delete $$bsearch_index.$$p,block===nil)return this.$enum_for("bsearch_index");for(var mid,val,ret,min=0,max=this.length,smaller=!1,satisfied=nil;min0;){for(i=0,length=this.length;i=0&&num=0&&function iterate(max,from,buffer,self){if(buffer.length!=max)for(var i=from;i=this.length)return nil;var result=this[index];return this.splice(index,1),result}),1),$def(self,"$delete_if",(function $$delete_if(){var block=$$delete_if.$$p||nil;return delete $$delete_if.$$p,block===nil?$send(this,"enum_for",["delete_if"],(function $$23(){return(null==$$23.$$s?this:$$23.$$s).$size()}),{$$arity:0,$$s:this}):(filterIf(this,$falsy,block),this)}),0),$def(self,"$difference",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"reduce",[self.$to_a().$dup()],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),$rb_minus(a,b)}),2)}),-1),$def(self,"$dig",(function(idx,$a){var idxs,self=this,item=nil;return idxs=Opal.slice.call(arguments,1),(item=self["$[]"](idx))===nil||0===idxs.length?item:($truthy(item["$respond_to?"]("dig"))||$Kernel.$raise($$$("TypeError"),item.$class()+" does not have #dig method"),$send(item,"dig",$to_a(idxs)))}),-2),$def(self,"$drop",(function(number){return(number=$coerce_to(number,$$$("Integer"),"to_int"))<0&&$Kernel.$raise($$$("ArgumentError")),this.slice(number)}),1),$def(self,"$dup",(function $$dup(){var $yield=$$dup.$$p||nil;return delete $$dup.$$p,this.$$class===Opal.Array&&this.$$class.$allocate.$$pristine&&this.$copy_instance_variables.$$pristine&&this.$initialize_dup.$$pristine?this.slice(0):$send2(this,$find_super(this,"dup",$$dup,!1,!0),"dup",[],$yield)}),0),$def(self,"$each",(function $$each(){var block=$$each.$$p||nil;if(delete $$each.$$p,block===nil)return $send(this,"enum_for",["each"],(function $$25(){return(null==$$25.$$s?this:$$25.$$s).$size()}),{$$arity:0,$$s:this});for(var i=0,length=this.length;i=0&&index2)&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+args.$length()+" for 0..2)"),one=null==($b=$to_ary(args))[0]?nil:$b[0],two=null==$b[1]?nil:$b[1]):($truthy(0==args.length)?$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments (0 for 1..3)"):$truthy(args.length>3)&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+args.$length()+" for 1..3)"),obj=null==($b=$to_ary(args))[0]?nil:$b[0],one=null==$b[1]?nil:$b[1],two=null==$b[2]?nil:$b[2]),$eqeqeq($$$("Range"),one)){if($truthy(two)&&$Kernel.$raise($$$("TypeError"),"length invalid with range"),left=one.begin===nil?0:$coerce_to(one.begin,$$$("Integer"),"to_int"),$truthy(left<0)&&(left+=this.length),$truthy(left<0)&&$Kernel.$raise($$$("RangeError"),one.$inspect()+" out of range"),right=one.end===nil?-1:$coerce_to(one.end,$$$("Integer"),"to_int"),$truthy(right<0)&&(right+=this.length),$truthy(one["$exclude_end?"]())||(right+=1),$truthy(right<=left))return self}else if($truthy(one))if(left=$coerce_to(one,$$$("Integer"),"to_int"),$truthy(left<0)&&(left+=this.length),$truthy(left<0)&&(left=0),$truthy(two)){if(right=$coerce_to(two,$$$("Integer"),"to_int"),$truthy(0==right))return self;right+=left}else right=this.length;else left=0,right=this.length;if($truthy(left>this.length))for(i=this.length;ithis.length)&&(this.length=right),$truthy(block))for(this.length;left0){if(index<0&&(index+=self.length+1)<0&&$Kernel.$raise($$$("IndexError"),index+" is out of bounds"),index>self.length)for(var i=self.length;ithis.length&&(count=this.length),this.slice(this.length-count,this.length))}),-1),$def(self,"$length",(function(){return this.length}),0),$def(self,"$max",(function $$max(n){var block=$$max.$$p||nil;return delete $$max.$$p,$send(this.$each(),"max",[n],block.$to_proc())}),-1),$def(self,"$min",(function $$min(){var block=$$min.$$p||nil;return delete $$min.$$p,$send(this.$each(),"min",[],block.$to_proc())}),0),$def(self,"$permutation",(function $$permutation(num){var permute,offensive,output,block=$$permutation.$$p||nil,self=this,perm=nil,used=nil;if(delete $$permutation.$$p,block===nil)return $send(self,"enum_for",["permutation",num],(function $$34(){var self=null==$$34.$$s?this:$$34.$$s;return function(from,how_many){for(var count=how_many>=0?1:0;how_many;)count*=from,from--,how_many--;return count}(self.length,void 0===num?self.length:num)}),{$$arity:0,$$s:self});if((num=void 0===num?self.length:$coerce_to(num,$$$("Integer"),"to_int"))<0||self.lengththis.length)?this.splice(0,this.length):this.splice(this.length-count,this.length))}),-1),$def(self,"$product",(function $$product($a){var $post_args,args,block=$$product.$$p||nil,self=this;delete $$product.$$p,$post_args=Opal.slice.call(arguments);var i,m,subarray,len,result=block!==nil?null:[],n=(args=$post_args).length+1,counters=new Array(n),lengths=new Array(n),arrays=new Array(n),resultlen=1;for(arrays[0]=self,i=1;i2147483647&&$Kernel.$raise($$$("RangeError"),"too big to product"),lengths[i]=len,counters[i]=0}outer_loop:for(;;){for(subarray=[],i=0;i=0&&!(i>=this.length);i--)if(this[i]["$=="](object))return i}else if(block!==nil){for(i=this.length-1;i>=0&&!(i>=this.length);i--)if(!1!==(value=block(this[i]))&&value!==nil)return i}else if(null==object)return this.$enum_for("rindex");return nil}),-1),$def(self,"$rotate",(function(n){var ary,idx,firstPart,lastPart;return null==n&&(n=1),n=$coerce_to(n,$$$("Integer"),"to_int"),1===this.length?this.slice():0===this.length?[]:(idx=n%(ary=this.slice()).length,firstPart=ary.slice(idx),lastPart=ary.slice(0,idx),firstPart.concat(lastPart))}),-1),$def(self,"$rotate!",(function(cnt){var ary;return null==cnt&&(cnt=1),0===this.length||1===this.length?this:(cnt=$coerce_to(cnt,$$$("Integer"),"to_int"),ary=this.$rotate(cnt),this.$replace(ary))}),-1),function($base,$super){var self=$klass($base,null,"SampleRandom");self.$$prototype.rng=nil,$def(self,"$initialize",(function(rng){return this.rng=rng}),1),$def(self,"$rand",(function(size){var random;return random=$coerce_to(this.rng.$rand(size),$$$("Integer"),"to_int"),$truthy(random<0)&&$Kernel.$raise($$$("RangeError"),"random value must be >= 0"),$truthy(randomthis.length&&(count=this.length),count){case 0:return[];case 1:return[this[rng.$rand(this.length)]];case 2:return(i=rng.$rand(this.length))===(j=rng.$rand(this.length))&&(j=0===i?i+1:i-1),[this[i],this[j]];default:if(this.length/count>3){for(abandon=!1,spin=0,i=1,(result=$$("Array").$new(count))[0]=rng.$rand(this.length);i100){abandon=!0;break}k=rng.$rand(this.length)}if(abandon)break;j++}if(abandon)break;result[i]=k,i++}if(!abandon){for(i=0;i=i&&$Kernel.$raise($$$("RangeError"),"random number too big "+j)):j=this.$rand(i),tmp=this[--i],this[i]=this[j],this[j]=tmp;return this}),-1),$def(self,"$slice!",(function(index,length){var result=nil,range=nil,range_start=nil,range_end=nil,start=nil;if(result=nil,$truthy(void 0===length))if($eqeqeq($$$("Range"),index)){range=index,result=this["$[]"](range),range_start=range.begin===nil?0:$coerce_to(range.begin,$$$("Integer"),"to_int"),range_end=range.end===nil?-1:$coerce_to(range.end,$$$("Integer"),"to_int"),range_start<0&&(range_start+=this.length),range_end<0?range_end+=this.length:range_end>=this.length&&(range_end=this.length-1,range.excl&&(range_end+=1));var range_length=range_end-range_start;range.excl&&range.end!==nil?range_end-=1:range_length+=1,range_start=0&&range_end=0&&range_length>0&&this.splice(range_start,range_length)}else{if((start=$coerce_to(index,$$$("Integer"),"to_int"))<0&&(start+=this.length),start<0||start>=this.length)return nil;result=this[start],0===start?this.shift():this.splice(start,1)}else{if(start=$coerce_to(index,$$$("Integer"),"to_int"),(length=$coerce_to(length,$$$("Integer"),"to_int"))<0)return nil;result=this["$[]"](start,length),start<0&&(start+=this.length),start+length>this.length&&(length=this.length-start),start=0&&this.splice(start,length)}return result}),-2),$def(self,"$sort",(function $$sort(){var block=$$sort.$$p||nil;return delete $$sort.$$p,$truthy(this.length>1)?(block===nil&&(block=function(a,b){return a["$<=>"](b)}),this.slice().sort((function(x,y){var ret=block(x,y);return ret===nil&&$Kernel.$raise($$$("ArgumentError"),"comparison of "+x.$inspect()+" with "+y.$inspect()+" failed"),$rb_gt(ret,0)?1:$rb_lt(ret,0)?-1:0}))):this}),0),$def(self,"$sort!",(function $Array_sort$excl$47(){var result,block=$Array_sort$excl$47.$$p||nil;delete $Array_sort$excl$47.$$p,result=block!==nil?$send(this.slice(),"sort",[],block.$to_proc()):this.slice().$sort(),this.length=0;for(var i=0,length=result.length;i=0;)self[len]=self[len-objectsLength],len--;for(var j=0;j=,>,==,compare_by_identity,lambda?,abs,arity,enum_for,size,respond_to?,class,dig,except!,dup,delete,new,inspect,map,to_proc,flatten,eql?,default,default_proc,default_proc=,-,default=,to_h,proc"),self.$require("corelib/enumerable"),function($base,$super,$parent_nesting){var inspect_ids,self=$klass("::",null,"Hash"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$include($$$("Enumerable")),self.$$prototype.$$is_hash=!0,$defs(self,"$[]",(function($a){var argv,hash,i,self=this,argc=(argv=Opal.slice.call(arguments)).length;if(1===argc){if((hash=$Opal["$coerce_to?"](argv["$[]"](0),$$$("Hash"),"to_hash"))!==nil)return self.$allocate()["$merge!"](hash);for((argv=$Opal["$coerce_to?"](argv["$[]"](0),$$$("Array"),"to_ary"))===nil&&$Kernel.$raise($$$("ArgumentError"),"odd number of arguments for Hash"),argc=argv.length,hash=self.$allocate(),i=0;i=",(function(other){var result=nil;return other=$Opal["$coerce_to!"](other,$$$("Hash"),"to_hash"),!(this.$$keys.length",(function(other){return other=$Opal["$coerce_to!"](other,$$$("Hash"),"to_hash"),!(this.$$keys.length<=other.$$keys.length)&&$rb_ge(this,other)}),1),$def(self,"$<",(function(other){return other=$Opal["$coerce_to!"](other,$$$("Hash"),"to_hash"),$rb_gt(other,this)}),1),$def(self,"$<=",(function(other){return other=$Opal["$coerce_to!"](other,$$$("Hash"),"to_hash"),$rb_ge(other,this)}),1),$def(self,"$[]",(function(key){var value=$hash_get(this,key);return void 0!==value?value:this.$default(key)}),1),$def(self,"$[]=",(function(key,value){return $hash_put(this,key,value),value}),2),$def(self,"$assoc",(function(object){for(var key,i=0,keys=this.$$keys,length=keys.length;i"+value);return"{"+result.join(", ")+"}"}finally{top&&(inspect_ids=void 0)}}()}),0),$def(self,"$invert",(function(){for(var key,value,hash=$hash(),i=0,keys=this.$$keys,length=keys.length;i0?[key=(key=keys[0]).$$is_string?key:key.key,$hash_delete(this,key)]:this.$default(nil)}),0),$def(self,"$slice",(function($a){var keys,self=this;keys=Opal.slice.call(arguments);for(var result=$hash(),i=0,length=keys.length;i,!,**,new,<,to_f,==,nan?,infinite?,enum_for,+,-,gcd,lcm,%,/,frexp,to_i,ldexp,rationalize,*,<<,to_r,truncate,-@,size,<=,>=,inspect,coerce_to?"),self.$require("corelib/numeric"),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Number");[self].concat($parent_nesting);$Opal.$bridge(Number,self),Opal.prop(self.$$prototype,"$$is_number",!0),self.$$is_number_class=!0,function(self,$parent_nesting){$def(self,"$allocate",(function(){return $Kernel.$raise($$$("TypeError"),"allocator undefined for "+this.$name())}),0),Opal.udef(self,"$new")}(Opal.get_singleton_class(self)),$def(self,"$coerce",(function(other){if(other===nil)$Kernel.$raise($$$("TypeError"),"can't convert "+other.$class()+" into Float");else{if(other.$$is_string)return[$Kernel.$Float(other),this];if(other["$respond_to?"]("to_f"))return[$Opal["$coerce_to!"](other,$$$("Float"),"to_f"),this];if(other.$$is_number)return[other,this];$Kernel.$raise($$$("TypeError"),"can't convert "+other.$class()+" into Float")}}),1),$def(self,"$__id__",(function(){return 2*this+1}),0),$def(self,"$+",(function(other){return other.$$is_number?this+other:this.$__coerced__("+",other)}),1),$def(self,"$-",(function(other){return other.$$is_number?this-other:this.$__coerced__("-",other)}),1),$def(self,"$*",(function(other){return other.$$is_number?this*other:this.$__coerced__("*",other)}),1),$def(self,"$/",(function(other){return other.$$is_number?this/other:this.$__coerced__("/",other)}),1),$def(self,"$%",(function(other){return other.$$is_number?other==-1/0?other:0!=other?other<0||this<0?(this%other+other)%other:this%other:void $Kernel.$raise($$$("ZeroDivisionError"),"divided by 0"):this.$__coerced__("%",other)}),1),$def(self,"$&",(function(other){return other.$$is_number?this&other:this.$__coerced__("&",other)}),1),$def(self,"$|",(function(other){return other.$$is_number?this|other:this.$__coerced__("|",other)}),1),$def(self,"$^",(function(other){return other.$$is_number?this^other:this.$__coerced__("^",other)}),1),$def(self,"$<",(function(other){return other.$$is_number?this",(function(other){return other.$$is_number?this>other:this.$__coerced__(">",other)}),1),$def(self,"$>=",(function(other){return other.$$is_number?this>=other:this.$__coerced__(">=",other)}),1);$def(self,"$<=>",(function(other){try{return function(self,other){return other.$$is_number?isNaN(self)||isNaN(other)?nil:self>other?1:self",other)}(this,other)}catch($err){if(!Opal.rescue($err,[$$$("ArgumentError")]))throw $err;try{return nil}finally{Opal.pop_exception()}}}),1),$def(self,"$<<",(function(count){return(count=$Opal["$coerce_to!"](count,$$$("Integer"),"to_int"))>0?this<>-count}),1),$def(self,"$>>",(function(count){return(count=$Opal["$coerce_to!"](count,$$$("Integer"),"to_int"))>0?this>>count:this<<-count}),1),$def(self,"$[]",(function(bit){return(bit=$Opal["$coerce_to!"](bit,$$$("Integer"),"to_int"))<0?0:bit>=32?this<0?1:0:this>>bit&1}),1),$def(self,"$+@",(function(){return+this}),0),$def(self,"$-@",(function(){return-this}),0),$def(self,"$~",(function(){return~this}),0),$def(self,"$**",(function(other){return $eqeqeq($$$("Integer"),other)?$not($$$("Integer")["$==="](this))||$truthy($rb_gt(other,0))?Math.pow(this,other):$$$("Rational").$new(this,1)["$**"](other):$rb_lt(this,0)&&($eqeqeq($$$("Float"),other)||$eqeqeq($$$("Rational"),other))?$$$("Complex").$new(this,0)["$**"](other.$to_f()):$truthy(null!=other.$$is_number)?Math.pow(this,other):this.$__coerced__("**",other)}),1),$def(self,"$===",(function(other){return other.$$is_number?this.valueOf()===other.valueOf():!!other["$respond_to?"]("==")&&other["$=="](this)}),1),$def(self,"$==",(function(other){return other.$$is_number?this.valueOf()===other.valueOf():!!other["$respond_to?"]("==")&&other["$=="](this)}),1),$def(self,"$abs",(function(){return Math.abs(this)}),0),$def(self,"$abs2",(function(){return Math.abs(this*this)}),0),$def(self,"$allbits?",(function(mask){return(this&(mask=$Opal["$coerce_to!"](mask,$$$("Integer"),"to_int")))==mask}),1),$def(self,"$anybits?",(function(mask){return 0!=(this&(mask=$Opal["$coerce_to!"](mask,$$$("Integer"),"to_int")))}),1),$def(self,"$angle",(function(){return $truthy(this["$nan?"]())?this:0==this?1/this>0?0:Math.PI:this<0?Math.PI:0}),0),$def(self,"$bit_length",(function(){if($eqeqeq($$$("Integer"),this)||$Kernel.$raise($$$("NoMethodError").$new("undefined method `bit_length` for "+this+":Float","bit_length")),0===this||-1===this)return 0;for(var result=0,value=this<0?~this:this;0!=value;)result+=1,value>>>=1;return result}),0),$def(self,"$ceil",(function(ndigits){null==ndigits&&(ndigits=0);var f=this.$to_f();if(f%1==0&&ndigits>=0)return f;var factor=Math.pow(10,ndigits),result=Math.ceil(f*factor)/factor;return f%1==0&&(result=Math.round(result)),result}),-1),$def(self,"$chr",(function(encoding){return Opal.enc(String.fromCharCode(this),encoding||"BINARY")}),-1),$def(self,"$denominator",(function $$denominator(){var $yield=$$denominator.$$p||nil;return delete $$denominator.$$p,$truthy(this["$nan?"]())||$truthy(this["$infinite?"]())?1:$send2(this,$find_super(this,"denominator",$$denominator,!1,!0),"denominator",[],$yield)}),0),$def(self,"$downto",(function $$downto(stop){var block=$$downto.$$p||nil;if(delete $$downto.$$p,block===nil)return $send(this,"enum_for",["downto",stop],(function $$25(){var self=null==$$25.$$s?this:$$25.$$s;return $eqeqeq($$$("Numeric"),stop)||$Kernel.$raise($$$("ArgumentError"),"comparison of "+self.$class()+" with "+stop.$class()+" failed"),$truthy($rb_gt(stop,self))?0:$rb_plus($rb_minus(self,stop),1)}),{$$arity:0,$$s:this});stop.$$is_number||$Kernel.$raise($$$("ArgumentError"),"comparison of "+this.$class()+" with "+stop.$class()+" failed");for(var i=this;i>=stop;i--)block(i);return this}),1),$def(self,"$equal?",(function(other){var $ret_or_1;return $truthy($ret_or_1=this["$=="](other))?$ret_or_1:isNaN(this)&&isNaN(other)}),1),$def(self,"$even?",(function(){return this%2==0}),0),$def(self,"$floor",(function(ndigits){null==ndigits&&(ndigits=0);var f=this.$to_f();if(f%1==0&&ndigits>=0)return f;var factor=Math.pow(10,ndigits),result=Math.floor(f*factor)/factor;return f%1==0&&(result=Math.round(result)),result}),-1),$def(self,"$gcd",(function(other){$eqeqeq($$$("Integer"),other)||$Kernel.$raise($$$("TypeError"),"not an integer");for(var min=Math.abs(this),max=Math.abs(other);min>0;){var tmp=min;min=max%min,max=tmp}return max}),1),$def(self,"$gcdlcm",(function(other){return[this.$gcd(other),this.$lcm(other)]}),1),$def(self,"$integer?",(function(){return this%1==0}),0),$def(self,"$is_a?",(function $Number_is_a$ques$29(klass){var $yield=$Number_is_a$ques$29.$$p||nil;return delete $Number_is_a$ques$29.$$p,!(!$eqeq(klass,$$$("Integer"))||!$eqeqeq($$$("Integer"),this))||(!(!$eqeq(klass,$$$("Integer"))||!$eqeqeq($$$("Integer"),this))||(!(!$eqeq(klass,$$$("Float"))||!$eqeqeq($$$("Float"),this))||$send2(this,$find_super(this,"is_a?",$Number_is_a$ques$29,!1,!0),"is_a?",[klass],$yield)))}),1),$def(self,"$instance_of?",(function $Number_instance_of$ques$30(klass){var $yield=$Number_instance_of$ques$30.$$p||nil;return delete $Number_instance_of$ques$30.$$p,!(!$eqeq(klass,$$$("Integer"))||!$eqeqeq($$$("Integer"),this))||(!(!$eqeq(klass,$$$("Integer"))||!$eqeqeq($$$("Integer"),this))||(!(!$eqeq(klass,$$$("Float"))||!$eqeqeq($$$("Float"),this))||$send2(this,$find_super(this,"instance_of?",$Number_instance_of$ques$30,!1,!0),"instance_of?",[klass],$yield)))}),1),$def(self,"$lcm",(function(other){return $eqeqeq($$$("Integer"),other)||$Kernel.$raise($$$("TypeError"),"not an integer"),0==this||0==other?0:Math.abs(this*other/this.$gcd(other))}),1),$def(self,"$next",(function(){return this+1}),0),$def(self,"$nobits?",(function(mask){return 0==(this&(mask=$Opal["$coerce_to!"](mask,$$$("Integer"),"to_int")))}),1),$def(self,"$nonzero?",(function(){return 0==this?nil:this}),0),$def(self,"$numerator",(function $$numerator(){var $yield=$$numerator.$$p||nil;return delete $$numerator.$$p,$truthy(this["$nan?"]())||$truthy(this["$infinite?"]())?this:$send2(this,$find_super(this,"numerator",$$numerator,!1,!0),"numerator",[],$yield)}),0),$def(self,"$odd?",(function(){return this%2!=0}),0),$def(self,"$ord",(function(){return this}),0),$def(self,"$pow",(function(b,m){return 0==this&&$Kernel.$raise($$$("ZeroDivisionError"),"divided by 0"),void 0===m?this["$**"](b):($$$("Integer")["$==="](b)||$Kernel.$raise($$$("TypeError"),"Integer#pow() 2nd argument not allowed unless a 1st argument is integer"),b<0&&$Kernel.$raise($$$("TypeError"),"Integer#pow() 1st argument cannot be negative when 2nd argument specified"),$$$("Integer")["$==="](m)||$Kernel.$raise($$$("TypeError"),"Integer#pow() 2nd argument not allowed unless all arguments are integers"),0===m&&$Kernel.$raise($$$("ZeroDivisionError"),"divided by 0"),this["$**"](b)["$%"](m))}),-2),$def(self,"$pred",(function(){return this-1}),0),$def(self,"$quo",(function $$quo(other){var $yield=$$quo.$$p||nil;return delete $$quo.$$p,$eqeqeq($$$("Integer"),this)?$send2(this,$find_super(this,"quo",$$quo,!1,!0),"quo",[other],$yield):$rb_divide(this,other)}),1),$def(self,"$rationalize",(function(eps){var $a,$b,self=this,f=nil,n=nil;return arguments.length>1&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arguments.length+" for 0..1)"),$eqeqeq($$$("Integer"),self)?$$$("Rational").$new(self,1):$truthy(self["$infinite?"]())?$Kernel.$raise($$$("FloatDomainError"),"Infinity"):$truthy(self["$nan?"]())?$Kernel.$raise($$$("FloatDomainError"),"NaN"):$truthy(null==eps)?($b=$$$("Math").$frexp(self),f=null==($a=$to_ary($b))[0]?nil:$a[0],n=null==$a[1]?nil:$a[1],f=$$$("Math").$ldexp(f,$$$($$$("Float"),"MANT_DIG")).$to_i(),n=$rb_minus(n,$$$($$$("Float"),"MANT_DIG")),$$$("Rational").$new($rb_times(2,f),1["$<<"]($rb_minus(1,n))).$rationalize($$$("Rational").$new(1,1["$<<"]($rb_minus(1,n))))):self.$to_r().$rationalize(eps)}),-1),$def(self,"$remainder",(function(y){return $rb_minus(this,$rb_times(y,$rb_divide(this,y).$truncate()))}),1),$def(self,"$round",(function(ndigits){var $a,$b,exp=nil;if($eqeqeq($$$("Integer"),this)){if($truthy(null==ndigits))return this;if($eqeqeq($$$("Float"),ndigits)&&$truthy(ndigits["$infinite?"]())&&$Kernel.$raise($$$("RangeError"),"Infinity"),ndigits=$Opal["$coerce_to!"](ndigits,$$$("Integer"),"to_int"),$truthy($rb_lt(ndigits,$$$($$$("Integer"),"MIN")))&&$Kernel.$raise($$$("RangeError"),"out of bounds"),$truthy(ndigits>=0))return this;if(.415241*(ndigits=ndigits["$-@"]())-.125>this.$size())return 0;var f=Math.pow(10,ndigits),x=Math.floor((Math.abs(this)+f/2)/f)*f;return this<0?-x:x}if($truthy(this["$nan?"]())&&$truthy(null==ndigits)&&$Kernel.$raise($$$("FloatDomainError"),"NaN"),ndigits=$Opal["$coerce_to!"](ndigits||0,$$$("Integer"),"to_int"),$truthy($rb_le(ndigits,0)))$truthy(this["$nan?"]())?$Kernel.$raise($$$("RangeError"),"NaN"):$truthy(this["$infinite?"]())&&$Kernel.$raise($$$("FloatDomainError"),"Infinity");else{if($eqeq(ndigits,0))return Math.round(this);if($truthy(this["$nan?"]())||$truthy(this["$infinite?"]()))return this}return $b=$$$("Math").$frexp(this),null==($a=$to_ary($b))[0]?nil:$a[0],exp=null==$a[1]?nil:$a[1],$truthy($rb_ge(ndigits,$rb_minus($rb_plus($$$($$$("Float"),"DIG"),2),$truthy($rb_gt(exp,0))?$rb_divide(exp,4):$rb_minus($rb_divide(exp,3),1))))?this:$truthy($rb_lt(ndigits,($truthy($rb_gt(exp,0))?$rb_plus($rb_divide(exp,3),1):$rb_divide(exp,4))["$-@"]()))?0:Math.round(this*Math.pow(10,ndigits))/Math.pow(10,ndigits)}),-1),$def(self,"$times",(function $$times(){var block=$$times.$$p||nil;if(delete $$times.$$p,!$truthy(block))return $send(this,"enum_for",["times"],(function $$34(){return null==$$34.$$s?this:$$34.$$s}),{$$arity:0,$$s:this});for(var i=0;i=0)return f;var factor=Math.pow(10,ndigits),result=parseInt(f*factor,10)/factor;return f%1==0&&(result=Math.round(result)),result}),-1),$def(self,"$digits",(function(base){null==base&&(base=10),$rb_lt(this,0)&&$Kernel.$raise($$$($$$("Math"),"DomainError"),"out of domain"),base=$Opal["$coerce_to!"](base,$$$("Integer"),"to_int"),$truthy($rb_lt(base,2))&&$Kernel.$raise($$$("ArgumentError"),"invalid radix "+base),this!=parseInt(this)&&$Kernel.$raise($$$("NoMethodError"),"undefined method `digits' for "+this.$inspect());var value=this,result=[];if(0==this)return[0];for(;0!=value;)result.push(value%base),value=parseInt(value/base,10);return result}),-1),$def(self,"$divmod",(function $$divmod(other){var $yield=$$divmod.$$p||nil;return delete $$divmod.$$p,$truthy(this["$nan?"]())||$truthy(other["$nan?"]())?$Kernel.$raise($$$("FloatDomainError"),"NaN"):$truthy(this["$infinite?"]())?$Kernel.$raise($$$("FloatDomainError"),"Infinity"):$send2(this,$find_super(this,"divmod",$$divmod,!1,!0),"divmod",[other],$yield)}),1),$def(self,"$upto",(function $$upto(stop){var block=$$upto.$$p||nil;if(delete $$upto.$$p,block===nil)return $send(this,"enum_for",["upto",stop],(function $$35(){var self=null==$$35.$$s?this:$$35.$$s;return $eqeqeq($$$("Numeric"),stop)||$Kernel.$raise($$$("ArgumentError"),"comparison of "+self.$class()+" with "+stop.$class()+" failed"),$truthy($rb_lt(stop,self))?0:$rb_plus($rb_minus(stop,self),1)}),{$$arity:0,$$s:this});stop.$$is_number||$Kernel.$raise($$$("ArgumentError"),"comparison of "+this.$class()+" with "+stop.$class()+" failed");for(var i=this;i<=stop;i++)block(i);return this}),1),$def(self,"$zero?",(function(){return 0==this}),0),$def(self,"$size",(function(){return 4}),0),$def(self,"$nan?",(function(){return isNaN(this)}),0),$def(self,"$finite?",(function(){return this!=1/0&&this!=-1/0&&!isNaN(this)}),0),$def(self,"$infinite?",(function(){return this==1/0?1:this==-1/0?-1:nil}),0),$def(self,"$positive?",(function(){return 0!=this&&(this==1/0||1/this>0)}),0),$def(self,"$negative?",(function(){return this==-1/0||1/this<0}),0),$alias(self,"arg","angle"),$alias(self,"eql?","=="),$alias(self,"fdiv","/"),$alias(self,"inspect","to_s"),$alias(self,"kind_of?","is_a?"),$alias(self,"magnitude","abs"),$alias(self,"modulo","%"),$alias(self,"object_id","__id__"),$alias(self,"phase","angle"),$alias(self,"succ","next"),$alias(self,"to_int","to_i")}(0,$$$("Numeric"),$nesting),$const_set("::","Fixnum",$$$("Number")),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Integer"),$nesting=[self].concat($parent_nesting);self.$$is_number_class=!0,self.$$is_integer_class=!0,function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$allocate",(function(){return $Kernel.$raise($$$("TypeError"),"allocator undefined for "+this.$name())}),0),Opal.udef(self,"$new"),$def(self,"$sqrt",(function(n){return(n=$Opal["$coerce_to!"](n,$$$("Integer"),"to_int"))<0&&$Kernel.$raise($$$($$$("Math"),"DomainError"),'Numerical argument is out of domain - "isqrt"'),parseInt(Math.sqrt(n),10)}),1),$def(self,"$try_convert",(function(object){return $$("Opal")["$coerce_to?"](object,this,"to_int")}),1)}(Opal.get_singleton_class(self),$nesting),$const_set(self,"MAX",Math.pow(2,30)-1),$const_set(self,"MIN",-Math.pow(2,30))}(0,$$$("Numeric"),$nesting),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Float");[self].concat($parent_nesting);return self.$$is_number_class=!0,function(self,$parent_nesting){$def(self,"$allocate",(function(){return $Kernel.$raise($$$("TypeError"),"allocator undefined for "+this.$name())}),0),Opal.udef(self,"$new"),$def(self,"$===",(function(other){return!!other.$$is_number}),1)}(Opal.get_singleton_class(self)),$const_set(self,"INFINITY",1/0),$const_set(self,"MAX",Number.MAX_VALUE),$const_set(self,"MIN",Number.MIN_VALUE),$const_set(self,"NAN",NaN),$const_set(self,"DIG",15),$const_set(self,"MANT_DIG",53),$const_set(self,"RADIX",2),$const_set(self,"EPSILON",Number.EPSILON||2220446049250313e-31)}(0,$$$("Numeric"),$nesting)},Opal.modules["corelib/range"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$truthy=Opal.truthy,$Kernel=Opal.Kernel,$def=Opal.def,$not=Opal.not,$send2=Opal.send2,$find_super=Opal.find_super,$rb_lt=Opal.rb_lt,$rb_le=Opal.rb_le,$send=Opal.send,$eqeq=Opal.eqeq,$eqeqeq=Opal.eqeqeq,$rb_gt=Opal.rb_gt,$rb_minus=Opal.rb_minus,$Opal=Opal.Opal,$rb_divide=Opal.rb_divide,$rb_plus=Opal.rb_plus,$rb_times=Opal.rb_times,$rb_ge=Opal.rb_ge,$alias=Opal.alias;return Opal.add_stubs("require,include,attr_reader,raise,nil?,<=>,include?,!,<,<=,enum_for,size,upto,to_proc,respond_to?,class,succ,==,===,exclude_end?,eql?,begin,end,last,to_a,>,-@,-,to_i,coerce_to!,ceil,/,is_a?,new,loop,+,*,>=,each_with_index,%,step,bsearch,inspect,[],hash"),self.$require("corelib/enumerable"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Range"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;function is_infinite(self){return self.begin===nil||self.end===nil||self.begin===-1/0||self.end===1/0||self.begin===1/0||self.end===-1/0}return $proto.begin=$proto.end=$proto.excl=nil,self.$include($$$("Enumerable")),self.$$prototype.$$is_range=!0,self.$attr_reader("begin","end"),$def(self,"$initialize",(function(first,last,exclude){return null==exclude&&(exclude=!1),$truthy(this.begin)&&$Kernel.$raise($$$("NameError"),"'initialize' called twice"),$truthy(first["$<=>"](last))||$truthy(first["$nil?"]())||$truthy(last["$nil?"]())||$Kernel.$raise($$$("ArgumentError"),"bad value for range"),this.begin=first,this.end=last,this.excl=exclude}),-3),$def(self,"$===",(function(value){return this["$include?"](value)}),1),$def(self,"$count",(function $$count(){var block=$$count.$$p||nil;return delete $$count.$$p,$not(block!==nil)&&$truthy(is_infinite(this))?$$$($$$("Float"),"INFINITY"):$send2(this,$find_super(this,"count",$$count,!1,!0),"count",[],block)}),0),$def(self,"$to_a",(function $$to_a(){var $yield=$$to_a.$$p||nil;return delete $$to_a.$$p,$truthy(is_infinite(this))&&$Kernel.$raise($$$("TypeError"),"cannot convert endless range to an array"),$send2(this,$find_super(this,"to_a",$$to_a,!1,!0),"to_a",[],$yield)}),0),$def(self,"$cover?",(function(value){var beg_cmp,end_cmp,$ret_or_1=nil,$ret_or_2=nil,$ret_or_3=nil;return beg_cmp=$truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.begin["$nil?"]())?-1:$ret_or_3)?$ret_or_2:this.begin["$<=>"](value))&&$ret_or_1,end_cmp=$truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.end["$nil?"]())?-1:$ret_or_3)?$ret_or_2:value["$<=>"](this.end))&&$ret_or_1,$truthy($ret_or_1=$truthy($ret_or_2=$truthy(this.excl)?$truthy($ret_or_3=end_cmp)?$rb_lt(end_cmp,0):$ret_or_3:$truthy($ret_or_3=end_cmp)?$rb_le(end_cmp,0):$ret_or_3)?beg_cmp:$ret_or_2)?$rb_le(beg_cmp,0):$ret_or_1}),1),$def(self,"$each",(function $$each(){var last,i,limit,block=$$each.$$p||nil,current=nil,$ret_or_1=nil;if(delete $$each.$$p,block===nil)return $send(this,"enum_for",["each"],(function $$3(){return(null==$$3.$$s?this:$$3.$$s).$size()}),{$$arity:0,$$s:this});if(this.begin.$$is_number&&this.end.$$is_number){for(this.begin%1==0&&this.end%1==0||$Kernel.$raise($$$("TypeError"),"can't iterate from Float"),i=this.begin,limit=this.end+($truthy(this.excl)?0:1);i"](last),0));)Opal.yield1(block,current),current=current.$succ();return $not(this.excl)&&$eqeq(current,last)&&Opal.yield1(block,current),this}),0),$def(self,"$eql?",(function(other){var $ret_or_1,$ret_or_2;return!!$eqeqeq($$$("Range"),other)&&($truthy($ret_or_1=$truthy($ret_or_2=this.excl["$==="](other["$exclude_end?"]()))?this.begin["$eql?"](other.$begin()):$ret_or_2)?this.end["$eql?"](other.$end()):$ret_or_1)}),1),$def(self,"$exclude_end?",(function(){return this.excl}),0),$def(self,"$first",(function $$first(n){var $yield=$$first.$$p||nil;return delete $$first.$$p,$truthy(this.begin["$nil?"]())&&$Kernel.$raise($$$("RangeError"),"cannot get the minimum of beginless range"),$truthy(null==n)?this.begin:$send2(this,$find_super(this,"first",$$first,!1,!0),"first",[n],$yield)}),-1),$def(self,"$last",(function(n){return $truthy(this.end["$nil?"]())&&$Kernel.$raise($$$("RangeError"),"cannot get the maximum of endless range"),$truthy(null==n)?this.end:this.$to_a().$last(n)}),-1),$def(self,"$max",(function $$max(){var $yield=$$max.$$p||nil;return delete $$max.$$p,$truthy(this.end["$nil?"]())?$Kernel.$raise($$$("RangeError"),"cannot get the maximum of endless range"):$yield!==nil?$send2(this,$find_super(this,"max",$$max,!1,!0),"max",[],$yield):$not(this.begin["$nil?"]())&&($truthy($rb_gt(this.begin,this.end))||$truthy(this.excl)&&$eqeq(this.begin,this.end))?nil:this.excl?this.end-1:this.end}),0),$def(self,"$min",(function $$min(){var $yield=$$min.$$p||nil;return delete $$min.$$p,$truthy(this.begin["$nil?"]())?$Kernel.$raise($$$("RangeError"),"cannot get the minimum of beginless range"):$yield!==nil?$send2(this,$find_super(this,"min",$$min,!1,!0),"min",[],$yield):$not(this.end["$nil?"]())&&($truthy($rb_gt(this.begin,this.end))||$truthy(this.excl)&&$eqeq(this.begin,this.end))?nil:this.begin}),0),$def(self,"$size",(function(){var range_begin,infinity=nil,range_end=nil;return infinity=$$$($$$("Float"),"INFINITY"),$eqeq(this.begin,infinity)&&$not(this.end["$nil?"]())||$eqeq(this.end,infinity["$-@"]())&&$not(this.begin["$nil?"]())?0:$truthy(is_infinite(this))?infinity:$eqeqeq($$$("Numeric"),this.begin)&&$eqeqeq($$$("Numeric"),this.end)?(range_begin=this.begin,range_end=this.end,$truthy(this.excl)&&(range_end=$rb_minus(range_end,1)),$truthy($rb_lt(range_end,range_begin))?0:(Math.abs(range_end-range_begin)+1).$to_i()):nil}),0),$def(self,"$step",(function $$step(n){var $yield=$$step.$$p||nil,self=this,$ret_or_1=nil,i=nil;function coerceStepSize(){null==n?n=1:n.$$is_number||(n=$Opal["$coerce_to!"](n,$$$("Integer"),"to_int")),n<0?$Kernel.$raise($$$("ArgumentError"),"step can't be negative"):0===n&&$Kernel.$raise($$$("ArgumentError"),"step can't be 0")}return delete $$step.$$p,$yield===nil?($truthy(self.begin["$is_a?"]($$("Numeric")))||$truthy(self.begin["$nil?"]()))&&($truthy(self.end["$is_a?"]($$("Numeric")))||$truthy(self.end["$nil?"]()))&&$not($truthy($ret_or_1=self.begin["$nil?"]())?self.end["$nil?"]():$ret_or_1)?$$$($$$("Enumerator"),"ArithmeticSequence").$new(self,n,"step"):$send(self,"enum_for",["step",n],(function(){return coerceStepSize(),function(){if(!self.begin["$respond_to?"]("succ"))return nil;if(self.begin.$$is_string&&self.end.$$is_string)return nil;if(n%1==0)return $rb_divide(self.$size(),n).$ceil();var size,begin=self.begin,end=self.end,abs=Math.abs,floor=Math.floor,err=(abs(begin)+abs(end)+abs(end-begin))/abs(n)*$$$($$$("Float"),"EPSILON");return err>.5&&(err=.5),self.excl?(size=floor((end-begin)/n-err))*n+begin>",(function $Proc_$gt$gt$2(other){return delete $Proc_$gt$gt$2.$$p,$send($Kernel,"proc",[],(function $$3($a){var $post_args,block=$$3.$$p||nil,self=null==$$3.$$s?this:$$3.$$s,out=nil;return delete $$3.$$p,$post_args=Opal.slice.call(arguments),out=$send(self,"call",$to_a($post_args),block.$to_proc()),other.$call(out)}),{$$arity:-1,$$s:this})}),1),$def(self,"$<<",(function $Proc_$lt$lt$4(other){return delete $Proc_$lt$lt$4.$$p,$send($Kernel,"proc",[],(function $$5($a){var $post_args,block=$$5.$$p||nil,self=null==$$5.$$s?this:$$5.$$s,out=nil;return delete $$5.$$p,$post_args=Opal.slice.call(arguments),out=$send(other,"call",$to_a($post_args),block.$to_proc()),self.$call(out)}),{$$arity:-1,$$s:this})}),1),$def(self,"$to_proc",(function(){return this}),0),$def(self,"$lambda?",(function(){return!!this.$$is_lambda}),0),$def(self,"$arity",(function(){return this.$$is_curried?-1:this.$$arity}),0),$def(self,"$source_location",(function(){return this.$$is_curried,nil}),0),$def(self,"$binding",(function(){return this.$$is_curried&&$Kernel.$raise($$$("ArgumentError"),"Can't create Binding"),$truthy($$$("::","Binding","skip_raise")?"constant":nil)?$$$("Binding").$new(nil,[],this.$$s,this.$source_location()):nil}),0),$def(self,"$parameters",(function(){if(this.$$is_curried)return[["rest"]];if(this.$$parameters){if(this.$$is_lambda)return this.$$parameters;var i,length,result=[];for(i=0,length=this.$$parameters.length;iarity&&self.$$is_lambda&&!self.$$is_curried&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+length+" for "+arity+")"),length>=arity?self.$call.apply(self,args):(result=function(){return curried.apply(null,args.concat($slice.call(arguments)))},result.$$is_lambda=self.$$is_lambda,result.$$is_curried=!0,result)}return void 0===arity?arity=self.length:(arity=$Opal["$coerce_to!"](arity,$$$("Integer"),"to_int"),self.$$is_lambda&&arity!==self.length&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arity+" for "+self.length+")")),curried.$$is_lambda=self.$$is_lambda,curried.$$is_curried=!0,curried}),-1),$def(self,"$dup",(function(){var original_proc=this.$$original_proc||this,proc=function(){return original_proc.apply(this,arguments)};for(var prop in this)this.hasOwnProperty(prop)&&(proc[prop]=this[prop]);return proc}),0),$alias(self,"===","call"),$alias(self,"clone","dup"),$alias(self,"yield","call"),$alias(self,"[]","call")},Opal.modules["corelib/method"]=function(Opal){var self,$proto,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$alias=Opal.alias,$Kernel=Opal.Kernel,$send=Opal.send,$to_a=Opal.to_a;return Opal.add_stubs("attr_reader,arity,curry,>>,<<,new,class,join,source_location,raise,call,bind,to_proc"),self=$klass("::",null,"Method"),($proto=self.$$prototype).method=$proto.receiver=$proto.owner=$proto.name=nil,self.$attr_reader("owner","receiver","name"),$def(self,"$initialize",(function(receiver,owner,method,name){return this.receiver=receiver,this.owner=owner,this.name=name,this.method=method}),4),$def(self,"$arity",(function(){return this.method.$arity()}),0),$def(self,"$parameters",(function(){return this.method.$$parameters}),0),$def(self,"$source_location",(function(){var $ret_or_1;return $truthy($ret_or_1=this.method.$$source_location)?$ret_or_1:["(eval)",0]}),0),$def(self,"$comments",(function(){var $ret_or_1;return $truthy($ret_or_1=this.method.$$comments)?$ret_or_1:[]}),0),$def(self,"$call",(function $$call($a){var args,block=$$call.$$p||nil,self=this;return delete $$call.$$p,args=Opal.slice.call(arguments),self.method.$$p=block,self.method.apply(self.receiver,args)}),-1),$def(self,"$curry",(function(arity){return this.method.$curry(arity)}),-1),$def(self,"$>>",(function(other){return this.method["$>>"](other)}),1),$def(self,"$<<",(function(other){return this.method["$<<"](other)}),1),$def(self,"$unbind",(function(){return $$$("UnboundMethod").$new(this.receiver.$class(),this.owner,this.method,this.name)}),0),$def(self,"$to_proc",(function(){var proc=this.$call.bind(this);return proc.$$unbound=this.method,proc.$$is_lambda=!0,proc.$$arity=this.method.$$arity,proc.$$parameters=this.method.$$parameters,proc}),0),$def(self,"$inspect",(function(){return"#<"+this.$class()+": "+this.receiver.$class()+"#"+this.name+" (defined in "+this.owner+" in "+this.$source_location().$join(":")+")>"}),0),$alias(self,"[]","call"),$alias(self,"===","call"),function($base,$super){var self=$klass("::",null,"UnboundMethod"),$proto=self.$$prototype;return $proto.method=$proto.owner=$proto.name=$proto.source=nil,self.$attr_reader("source","owner","name"),$def(self,"$initialize",(function(source,owner,method,name){return this.source=source,this.owner=owner,this.method=method,this.name=name}),4),$def(self,"$arity",(function(){return this.method.$arity()}),0),$def(self,"$parameters",(function(){return this.method.$$parameters}),0),$def(self,"$source_location",(function(){var $ret_or_1;return $truthy($ret_or_1=this.method.$$source_location)?$ret_or_1:["(eval)",0]}),0),$def(self,"$comments",(function(){var $ret_or_1;return $truthy($ret_or_1=this.method.$$comments)?$ret_or_1:[]}),0),$def(self,"$bind",(function(object){if(this.owner.$$is_module||Opal.is_a(object,this.owner))return $$$("Method").$new(object,this.owner,this.method,this.name);$Kernel.$raise($$$("TypeError"),"can't bind singleton method to a different class (expected "+object+".kind_of?("+this.owner+" to be true)")}),1),$def(self,"$bind_call",(function $$bind_call(object,$a){var args,block=$$bind_call.$$p||nil,self=this;return delete $$bind_call.$$p,args=Opal.slice.call(arguments,1),$send(self.$bind(object),"call",$to_a(args),block.$to_proc())}),-2),$def(self,"$inspect",(function(){return"#<"+this.$class()+": "+this.source+"#"+this.name+" (defined in "+this.owner+" in "+this.$source_location().$join(":")+")>"}),0)}()},Opal.modules["corelib/variables"]=function(Opal){var nil=Opal.nil,$gvars=Opal.gvars,$const_set=Opal.const_set,$Object=Opal.Object,$hash2=Opal.hash2;return Opal.add_stubs("new"),$gvars["&"]=$gvars["~"]=$gvars["`"]=$gvars["'"]=nil,$gvars.LOADED_FEATURES=$gvars['"']=Opal.loaded_features,$gvars.LOAD_PATH=$gvars[":"]=[],$gvars["/"]="\n",$gvars[","]=nil,$const_set("::","ARGV",[]),$const_set("::","ARGF",$Object.$new()),$const_set("::","ENV",$hash2([],{})),$gvars.VERBOSE=!1,$gvars.DEBUG=!1,$gvars.SAFE=0},Opal.modules["corelib/io"]=function(Opal){var self,$proto,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$const_set=Opal.const_set,$not=Opal.not,$truthy=Opal.truthy,$def=Opal.def,$Kernel=Opal.Kernel,$gvars=Opal.gvars,$send=Opal.send,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$neqeq=Opal.neqeq,$range=Opal.range,$hash2=Opal.hash2,$eqeq=Opal.eqeq,$to_ary=Opal.to_ary,$rb_gt=Opal.rb_gt,$alias=Opal.alias,$rb_minus=Opal.rb_minus,$writer=nil;Opal.add_stubs("attr_reader,attr_accessor,!,match?,include?,size,write,String,flatten,puts,sysread_noraise,+,!=,[],ord,getc,readchar,raise,gets,==,to_str,length,split,sub,sysread,>,to_a,each_line,enum_for,getbyte,closed_write?,closed_read?,new,write_proc=,-,read_proc="),self=$klass("::",null,"IO"),($proto=self.$$prototype).fd=$proto.read_buffer=$proto.closed=nil,$const_set(self,"SEEK_SET",0),$const_set(self,"SEEK_CUR",1),$const_set(self,"SEEK_END",2),$const_set(self,"SEEK_DATA",3),$const_set(self,"SEEK_HOLE",4),$const_set(self,"READABLE",1),$const_set(self,"WRITABLE",4),self.$attr_reader("eof"),self.$attr_accessor("read_proc","sync","tty","write_proc"),$def(self,"$initialize",(function(fd,flags){return null==flags&&(flags="r"),this.fd=fd,this.flags=flags,this.eof=!1,$truthy(flags["$include?"]("r"))&&$not(flags["$match?"](/[wa+]/))?this.closed="write":$truthy(flags["$match?"](/[wa]/))&&$not(flags["$match?"](/[r+]/))?this.closed="read":nil}),-2),$def(self,"$fileno",(function(){return this.fd}),0),$def(self,"$tty?",(function(){return 1==this.tty}),0),$def(self,"$write",(function(string){return this.write_proc(string),string.$size()}),1),$def(self,"$flush",(function(){return nil}),0),$def(self,"$<<",(function(string){return this.$write(string),this}),1),$def(self,"$print",(function($a){var args,self=this;null==$gvars[","]&&($gvars[","]=nil);for(var i=0,ii=(args=Opal.slice.call(arguments)).length;i0&&$send(self,"puts",$to_a(ary))}else(line=args[i].$$is_string?args[i].valueOf():$Kernel.$String(args[i])).endsWith("\n")||(line+="\n"),self.$write(line);return nil}),-1),$def(self,"$getc",(function(){var $ret_or_1,parts=nil,ret=nil;this.read_buffer=$truthy($ret_or_1=this.read_buffer)?$ret_or_1:"",parts="";do{if(this.read_buffer=$rb_plus(this.read_buffer,parts),$neqeq(this.read_buffer,""))return ret=this.read_buffer["$[]"](0),this.read_buffer=this.read_buffer["$[]"]($range(1,-1,!1)),ret}while($truthy(parts=this.$sysread_noraise(1)));return nil}),0),$def(self,"$getbyte",(function(){var $a;return($a=this.$getc())===nil||null==$a?nil:$send($a,"ord",[])}),0),$def(self,"$readbyte",(function(){return this.$readchar().$ord()}),0),$def(self,"$readchar",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$getc())?$ret_or_1:$Kernel.$raise($$$("EOFError"),"end of file reached")}),0),$def(self,"$readline",(function($a){var $post_args,self=this,$ret_or_1=nil;return $post_args=Opal.slice.call(arguments),$truthy($ret_or_1=$send(self,"gets",$to_a($post_args)))?$ret_or_1:$Kernel.$raise($$$("EOFError"),"end of file reached")}),-1),$def(self,"$gets",(function(sep,limit,opts){var $a,$b,$c,orig_sep,seplen,$ret_or_1=nil,data=nil,ret=nil,orig_buffer=nil;null==$gvars["/"]&&($gvars["/"]=nil),null==sep&&(sep=!1),null==limit&&(limit=nil),null==opts&&(opts=$hash2([],{})),$truthy(sep.$$is_number)&&$not(limit)&&(sep=($a=[!1,sep,limit])[0],limit=$a[1],opts=$a[2]),$truthy(sep.$$is_hash)&&$not(limit)&&$eqeq(opts,$hash2([],{}))?(sep=($a=[!1,nil,sep])[0],limit=$a[1],opts=$a[2]):$truthy(limit.$$is_hash)&&$eqeq(opts,$hash2([],{}))&&(sep=($a=[sep,nil,limit])[0],limit=$a[1],opts=$a[2]),orig_sep=sep,$eqeq(sep,!1)&&(sep=$gvars["/"]),$eqeq(sep,"")&&(sep=/\r?\n\r?\n/),sep=$truthy($ret_or_1=sep)?$ret_or_1:"",$eqeq(orig_sep,"")||(sep=sep.$to_str()),seplen=$eqeq(orig_sep,"")?2:sep.$length(),$eqeq(sep," ")&&(sep=/ /),this.read_buffer=$truthy($ret_or_1=this.read_buffer)?$ret_or_1:"",data="",ret=nil;do{if(this.read_buffer=$rb_plus(this.read_buffer,data),$neqeq(sep,"")&&$truthy($truthy(sep.$$is_regexp)?this.read_buffer["$match?"](sep):this.read_buffer["$include?"](sep))){orig_buffer=this.read_buffer,$c=this.read_buffer.$split(sep,2),ret=null==($b=$to_ary($c))[0]?nil:$b[0],this.read_buffer=null==$b[1]?nil:$b[1],$neqeq(ret,orig_buffer)&&(ret=$rb_plus(ret,orig_buffer["$[]"](ret.$length(),seplen)));break}}while($truthy(data=this.$sysread_noraise($eqeq(sep,"")?65536:1)));return $truthy(ret)||(ret=($a=[$truthy($ret_or_1=this.read_buffer)?$ret_or_1:"",""])[0],this.read_buffer=$a[1],$eqeq(ret,"")&&(ret=nil)),$truthy(ret)&&($truthy(limit)&&(ret=ret["$[]"](Opal.Range.$new(0,limit,!0)),this.read_buffer=$rb_plus(ret["$[]"](Opal.Range.$new(limit,-1,!1)),this.read_buffer)),$truthy(opts["$[]"]("chomp"))&&(ret=ret.$sub(/\r?\n$/,"")),$eqeq(orig_sep,"")&&(ret=ret.$sub(/^[\r\n]+/,""))),$eqeq(orig_sep,!1)&&($gvars._=ret),ret}),-1),$def(self,"$sysread",(function(integer){var $ret_or_1;return $truthy($ret_or_1=this.read_proc(integer))?$ret_or_1:(this.eof=!0,$Kernel.$raise($$$("EOFError"),"end of file reached"))}),1),$def(self,"$sysread_noraise",(function(integer){try{return this.$sysread(integer)}catch($err){if(!Opal.rescue($err,[$$$("EOFError")]))throw $err;try{return nil}finally{Opal.pop_exception()}}}),1),$def(self,"$readpartial",(function(integer){var $a,part,$ret_or_1=nil,ret=nil;return this.read_buffer=$truthy($ret_or_1=this.read_buffer)?$ret_or_1:"",part=this.$sysread(integer),ret=($a=[$rb_plus(this.read_buffer,$truthy($ret_or_1=part)?$ret_or_1:""),""])[0],this.read_buffer=$a[1],$eqeq(ret,"")&&(ret=nil),ret}),1),$def(self,"$read",(function(integer){var $a,$b,$ret_or_1=nil,parts=nil,ret=nil;null==integer&&(integer=nil),this.read_buffer=$truthy($ret_or_1=this.read_buffer)?$ret_or_1:"",parts="",ret=nil;do{if(this.read_buffer=$rb_plus(this.read_buffer,parts),$truthy(integer)&&$truthy($rb_gt(this.read_buffer.$length(),integer)))return ret=($b=[this.read_buffer["$[]"](Opal.Range.$new(0,integer,!0)),this.read_buffer["$[]"](Opal.Range.$new(integer,-1,!1))])[0],this.read_buffer=$b[1],ret}while($truthy(parts=this.$sysread_noraise($truthy($ret_or_1=integer)?$ret_or_1:65536)));return ret=($a=[this.read_buffer,""])[0],this.read_buffer=$a[1],ret}),-1),$def(self,"$readlines",(function(separator){return null==$gvars["/"]&&($gvars["/"]=nil),null==separator&&(separator=$gvars["/"]),this.$each_line(separator).$to_a()}),-1),$def(self,"$each",(function $$each($a,$b){var $post_args,sep,args,block=$$each.$$p||nil,self=this,s=nil;if(null==$gvars["/"]&&($gvars["/"]=nil),delete $$each.$$p,($post_args=Opal.slice.call(arguments)).length>0&&(sep=$post_args.shift()),null==sep&&(sep=$gvars["/"]),args=$post_args,block===nil)return $send(self,"enum_for",["each",sep].concat($to_a(args)));for(;$truthy(s=$send(self,"gets",[sep].concat($to_a(args))));)Opal.yield1(block,s);return self}),-1),$def(self,"$each_byte",(function $$each_byte(){var block=$$each_byte.$$p||nil,s=nil;if(delete $$each_byte.$$p,block===nil)return this.$enum_for("each_byte");for(;$truthy(s=this.$getbyte());)Opal.yield1(block,s);return this}),0),$def(self,"$each_char",(function $$each_char(){var block=$$each_char.$$p||nil,s=nil;if(delete $$each_char.$$p,block===nil)return this.$enum_for("each_char");for(;$truthy(s=this.$getc());)Opal.yield1(block,s);return this}),0),$def(self,"$close",(function(){return this.closed="both"}),0),$def(self,"$close_read",(function(){return $eqeq(this.closed,"write")?this.closed="both":this.closed="read"}),0),$def(self,"$close_write",(function(){return $eqeq(this.closed,"read")?this.closed="both":this.closed="write"}),0),$def(self,"$closed?",(function(){return this.closed["$=="]("both")}),0),$def(self,"$closed_read?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.closed["$=="]("read"))?$ret_or_1:this.closed["$=="]("both")}),0),$def(self,"$closed_write?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.closed["$=="]("write"))?$ret_or_1:this.closed["$=="]("both")}),0),$def(self,"$check_writable",(function(){return $truthy(this["$closed_write?"]())?$Kernel.$raise($$$("IOError"),"not opened for writing"):nil}),0),$def(self,"$check_readable",(function(){return $truthy(this["$closed_read?"]())?$Kernel.$raise($$$("IOError"),"not opened for reading"):nil}),0),$alias(self,"each_line","each"),$alias(self,"eof?","eof"),$const_set("::","STDIN",$gvars.stdin=$$$("IO").$new(0,"r")),$const_set("::","STDOUT",$gvars.stdout=$$$("IO").$new(1,"w")),$const_set("::","STDERR",$gvars.stderr=$$$("IO").$new(2,"w"));var console=Opal.global.console;return $writer=["object"==typeof process&&"object"==typeof process.stdout?function(s){process.stdout.write(s)}:function(s){console.log(s)}],$send($$$("STDOUT"),"write_proc=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=["object"==typeof process&&"object"==typeof process.stderr?function(s){process.stderr.write(s)}:function(s){console.warn(s)}],$send($$$("STDERR"),"write_proc=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[function(s){var p=prompt();return null!==p?p+"\n":nil}],$send($$$("STDIN"),"read_proc=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]},Opal.modules["opal/regexp_anchors"]=function(Opal){var $nesting=[],$$$=(Opal.nil,Opal.$$$),$module=Opal.module,$const_set=Opal.const_set;return Opal.add_stubs("new"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set(self,"REGEXP_START","^"),$const_set(self,"REGEXP_END","$"),$const_set(self,"FORBIDDEN_STARTING_IDENTIFIER_CHARS","\\u0001-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"FORBIDDEN_ENDING_IDENTIFIER_CHARS","\\u0001-\\u0020\\u0022-\\u002F\\u003A-\\u003E\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"INLINE_IDENTIFIER_REGEXP",$$("Regexp").$new("[^"+$$$(self,"FORBIDDEN_STARTING_IDENTIFIER_CHARS")+"]*[^"+$$$(self,"FORBIDDEN_ENDING_IDENTIFIER_CHARS")+"]")),$const_set(self,"FORBIDDEN_CONST_NAME_CHARS","\\u0001-\\u0020\\u0021-\\u002F\\u003B-\\u003F\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"CONST_NAME_REGEXP",$$("Regexp").$new($$$(self,"REGEXP_START")+"(::)?[A-Z][^"+$$$(self,"FORBIDDEN_CONST_NAME_CHARS")+"]*"+$$$(self,"REGEXP_END")))}($nesting[0],$nesting)},Opal.modules["opal/mini"]=function(Opal){Opal.nil;var $Object=Opal.Object;return Opal.add_stubs("require"),$Object.$require("opal/base"),$Object.$require("corelib/nil"),$Object.$require("corelib/boolean"),$Object.$require("corelib/string"),$Object.$require("corelib/comparable"),$Object.$require("corelib/enumerable"),$Object.$require("corelib/enumerator"),$Object.$require("corelib/array"),$Object.$require("corelib/hash"),$Object.$require("corelib/number"),$Object.$require("corelib/range"),$Object.$require("corelib/proc"),$Object.$require("corelib/method"),$Object.$require("corelib/regexp"),$Object.$require("corelib/variables"),$Object.$require("corelib/io"),$Object.$require("opal/regexp_anchors")},Opal.modules["corelib/kernel/format"]=function(Opal){var self,nil=Opal.nil,$$$=Opal.$$$,$coerce_to=Opal.coerce_to,$module=Opal.module,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$Opal=Opal.Opal,$Kernel=Opal.Kernel,$gvars=Opal.gvars,$def=Opal.def,$alias=Opal.alias;return Opal.add_stubs("respond_to?,[],==,length,coerce_to?,nil?,to_a,raise,to_int,fetch,Integer,Float,to_ary,to_str,inspect,to_s"),self=$module("::","Kernel"),$def(self,"$format",(function(format_string,$a){var $post_args,args,ary=nil;null==$gvars.DEBUG&&($gvars.DEBUG=nil),$post_args=Opal.slice.call(arguments,1),$eqeq((args=$post_args).$length(),1)&&$truthy(args["$[]"](0)["$respond_to?"]("to_ary"))&&(ary=$Opal["$coerce_to?"](args["$[]"](0),$$$("Array"),"to_ary"),$truthy(ary["$nil?"]())||(args=ary.$to_a()));var end_slice,i,arg,str,exponent,width,precision,tmp_num,hash_parameter_key,closing_brace_char,base_number,base_prefix,base_neg_zero_regex,base_neg_zero_digit,next_arg,flags,result="",begin_slice=0,len=format_string.length,seq_arg_num=1,pos_arg_num=0,FNONE=0,FSHARP=1,FMINUS=2,FPLUS=4,FZERO=8,FSPACE=16,FWIDTH=32,FPREC=64,FPREC0=128;function CHECK_FOR_FLAGS(){flags&FWIDTH&&$Kernel.$raise($$$("ArgumentError"),"flag after width"),flags&FPREC0&&$Kernel.$raise($$$("ArgumentError"),"flag after precision")}function CHECK_FOR_WIDTH(){flags&FWIDTH&&$Kernel.$raise($$$("ArgumentError"),"width given twice"),flags&FPREC0&&$Kernel.$raise($$$("ArgumentError"),"width after precision")}function GET_NTH_ARG(num){return num>=args.length&&$Kernel.$raise($$$("ArgumentError"),"too few arguments"),args[num]}function GET_NEXT_ARG(){switch(pos_arg_num){case-1:$Kernel.$raise($$$("ArgumentError"),"unnumbered("+seq_arg_num+") mixed with numbered");case-2:$Kernel.$raise($$$("ArgumentError"),"unnumbered("+seq_arg_num+") mixed with named")}return GET_NTH_ARG((pos_arg_num=seq_arg_num++)-1)}function GET_POS_ARG(num){return pos_arg_num>0&&$Kernel.$raise($$$("ArgumentError"),"numbered("+num+") after unnumbered("+pos_arg_num+")"),-2===pos_arg_num&&$Kernel.$raise($$$("ArgumentError"),"numbered("+num+") after named"),num<1&&$Kernel.$raise($$$("ArgumentError"),"invalid index - "+num+"$"),pos_arg_num=-1,GET_NTH_ARG(num-1)}function GET_ARG(){return void 0===next_arg?GET_NEXT_ARG():next_arg}function READ_NUM(label){for(var num,str="";;i++){if(i===len&&$Kernel.$raise($$$("ArgumentError"),"malformed format string - %*[0-9]"),format_string.charCodeAt(i)<48||format_string.charCodeAt(i)>57)return i--,(num=parseInt(str,10)||0)>2147483647&&$Kernel.$raise($$$("ArgumentError"),label+" too big"),num;str+=format_string.charAt(i)}}function READ_NUM_AFTER_ASTER(label){var arg,num=READ_NUM(label);return"$"===format_string.charAt(i+1)?(i++,arg=GET_POS_ARG(num)):arg=GET_NEXT_ARG(),arg.$to_int()}for(i=format_string.indexOf("%");-1!==i;i=format_string.indexOf("%",i)){switch(str=void 0,flags=FNONE,width=-1,precision=-1,next_arg=void 0,end_slice=i,i++,format_string.charAt(i)){case"%":begin_slice=i;case"":case"\n":case"\0":i++;continue}format_sequence:for(;i":"}",hash_parameter_key="",i++;;i++){if(i===len&&$Kernel.$raise($$$("ArgumentError"),"malformed name - unmatched parenthesis"),format_string.charAt(i)===closing_brace_char){if(pos_arg_num>0&&$Kernel.$raise($$$("ArgumentError"),"named "+hash_parameter_key+" after unnumbered("+pos_arg_num+")"),-1===pos_arg_num&&$Kernel.$raise($$$("ArgumentError"),"named "+hash_parameter_key+" after numbered"),pos_arg_num=-2,void 0!==args[0]&&args[0].$$is_hash||$Kernel.$raise($$$("ArgumentError"),"one hash required"),next_arg=args[0].$fetch(hash_parameter_key),">"===closing_brace_char)continue format_sequence;if(str=next_arg.toString(),-1!==precision&&(str=str.slice(0,precision)),flags&FMINUS)for(;str.length=0){for(str=arg.toString();str.length=0){for(str=arg.toString(base_number);str.length>>0).toString(base_number).replace(base_neg_zero_regex,base_neg_zero_digit);str.length=0||isNaN(arg)){if(arg===1/0)str="Inf";else switch(format_string.charAt(i)){case"f":str=arg.toFixed(-1===precision?6:precision);break;case"e":case"E":str=arg.toExponential(-1===precision?6:precision);break;case"g":case"G":str=arg.toExponential(),(exponent=parseInt(str.split("e")[1],10))<-4||exponent>=(-1===precision?6:precision)||(str=arg.toPrecision(-1===precision?flags&FSHARP?6:void 0:precision))}if(flags&FMINUS)for((flags&FPLUS||flags&FSPACE)&&(str=(flags&FPLUS?"+":" ")+str);str.length=(-1===precision?6:precision)||(str=(-arg).toPrecision(-1===precision?flags&FSHARP?6:void 0:precision))}if(flags&FMINUS)for(str="-"+str;str.length=0&&seq_arg_num"}),0),$def(self,"$charsize",(function(string){for(var len=0,i=0,length=string.length;i=55296&&charcode<=56319||len++}return len}),1),$def(self,"$each_char",(function $$each_char(string){var block=$$each_char.$$p||nil;delete $$each_char.$$p;for(var low_surrogate="",i=0,length=string.length;i=56320&&charcode<=57343?low_surrogate=chr:(charcode>=55296&&charcode<=56319&&(chr=low_surrogate+chr),"UTF-8"!=string.encoding.name&&((chr=new String(chr)).encoding=string.encoding),Opal.yield1(block,chr))}}),1),$def(self,"$each_byte",(function($a){return Opal.slice.call(arguments),$Kernel.$raise($$$("NotImplementedError"))}),-1),$def(self,"$bytesize",(function($a){return Opal.slice.call(arguments),$Kernel.$raise($$$("NotImplementedError"))}),-1),$klass("::",$$$("StandardError"),"EncodingError"),$klass("::",$$$("EncodingError"),"CompatibilityError")}(),$send($$$("Encoding"),"register",["UTF-8",$hash2(["aliases","ascii"],{aliases:["CP65001"],ascii:!0})],(function $$5(){var self=null==$$5.$$s?this:$$5.$$s;return $def(self,"$each_byte",(function $$each_byte(string){var block=$$each_byte.$$p||nil;delete $$each_byte.$$p;for(var codePoint,units=1/0,length=string.length,leadSurrogate=null,i=0;i55295&&codePoint<57344){if(!leadSurrogate){if(codePoint>56319){(units-=3)>-1&&(Opal.yield1(block,239),Opal.yield1(block,191),Opal.yield1(block,189));continue}if(i+1===length){(units-=3)>-1&&(Opal.yield1(block,239),Opal.yield1(block,191),Opal.yield1(block,189));continue}leadSurrogate=codePoint;continue}if(codePoint<56320){(units-=3)>-1&&(Opal.yield1(block,239),Opal.yield1(block,191),Opal.yield1(block,189)),leadSurrogate=codePoint;continue}codePoint=65536+(leadSurrogate-55296<<10|codePoint-56320)}else leadSurrogate&&(units-=3)>-1&&(Opal.yield1(block,239),Opal.yield1(block,191),Opal.yield1(block,189));if(leadSurrogate=null,codePoint<128){if((units-=1)<0)break;Opal.yield1(block,codePoint)}else if(codePoint<2048){if((units-=2)<0)break;Opal.yield1(block,codePoint>>6|192),Opal.yield1(block,63&codePoint|128)}else if(codePoint<65536){if((units-=3)<0)break;Opal.yield1(block,codePoint>>12|224),Opal.yield1(block,codePoint>>6&63|128),Opal.yield1(block,63&codePoint|128)}else if(codePoint<1114112){if((units-=4)<0)break;Opal.yield1(block,codePoint>>18|240),Opal.yield1(block,codePoint>>12&63|128),Opal.yield1(block,codePoint>>6&63|128),Opal.yield1(block,63&codePoint|128)}}}),1),$def(self,"$bytesize",(function(string){return string.$bytes().$length()}),1)}),{$$arity:0,$$s:self}),$send($$$("Encoding"),"register",["UTF-16LE"],(function $$6(){var self=null==$$6.$$s?this:$$6.$$s;return $def(self,"$each_byte",(function $$each_byte(string){var block=$$each_byte.$$p||nil;delete $$each_byte.$$p;for(var i=0,length=string.length;i>8)}}),1),$def(self,"$bytesize",(function(string){return 2*string.length}),1)}),{$$arity:0,$$s:self}),$send($$$("Encoding"),"register",["UTF-16BE",$hash2(["inherits"],{inherits:$$$($$$("Encoding"),"UTF_16LE")})],(function $$7(){return $def(null==$$7.$$s?this:$$7.$$s,"$each_byte",(function $$each_byte(string){var block=$$each_byte.$$p||nil;delete $$each_byte.$$p;for(var i=0,length=string.length;i>8),Opal.yield1(block,255&code)}}),1)}),{$$arity:0,$$s:self}),$send($$$("Encoding"),"register",["UTF-32LE"],(function $$8(){var self=null==$$8.$$s?this:$$8.$$s;return $def(self,"$each_byte",(function $$each_byte(string){var block=$$each_byte.$$p||nil;delete $$each_byte.$$p;for(var i=0,length=string.length;i>8),Opal.yield1(block,0),Opal.yield1(block,0)}}),1),$def(self,"$bytesize",(function(string){return 4*string.length}),1)}),{$$arity:0,$$s:self}),$send($$$("Encoding"),"register",["UTF-32BE",$hash2(["inherits"],{inherits:$$$($$$("Encoding"),"UTF_32LE")})],(function $$9(){return $def(null==$$9.$$s?this:$$9.$$s,"$each_byte",(function $$each_byte(string){var block=$$each_byte.$$p||nil;delete $$each_byte.$$p;for(var i=0,length=string.length;i>8),Opal.yield1(block,255&code)}}),1)}),{$$arity:0,$$s:self}),$send($$$("Encoding"),"register",["ASCII-8BIT",$hash2(["aliases","ascii"],{aliases:["BINARY"],ascii:!0})],(function $$10(){var self=null==$$10.$$s?this:$$10.$$s;return $def(self,"$each_char",(function $$each_char(string){var block=$$each_char.$$p||nil;delete $$each_char.$$p;for(var i=0,length=string.length;i1;)r*=.125,ex++;for(r=(-.46946116*r+1.072302)*r+.3812513;ex<0;)r*=.5,ex++;for(;ex>0;)r*=2,ex--;return r=2/3*(r=2/3*(r=2/3*(r=2/3*r+1/3*x/(r*r))+1/3*x/(r*r))+1/3*x/(r*r))+1/3*x/(r*r)}),$def(self,"$cbrt",(function(x){return $$$("Math").$checked("cbrt",$$$("Math")["$float!"](x))}),1),$def(self,"$cos",(function(x){return $$$("Math").$checked("cos",$$$("Math")["$float!"](x))}),1),$truthy(void 0!==Math.cosh)||(Math.cosh=function(x){return(Math.exp(x)+Math.exp(-x))/2}),$def(self,"$cosh",(function(x){return $$$("Math").$checked("cosh",$$$("Math")["$float!"](x))}),1),$truthy(void 0!==Math.erf)||Opal.prop(Math,"erf",(function(x){var sign=1;x<0&&(sign=-1);var t=1/(1+.3275911*(x=Math.abs(x)));return sign*(1-((((1.061405429*t-1.453152027)*t+1.421413741)*t-.284496736)*t+.254829592)*t*Math.exp(-x*x))})),$def(self,"$erf",(function(x){return $$$("Math").$checked("erf",$$$("Math")["$float!"](x))}),1),$truthy(void 0!==Math.erfc)||Opal.prop(Math,"erfc",(function(x){var z=Math.abs(x),t=1/(.5*z+1),A10=-z*z-1.26551223+t*(t*(t*(t*(t*(t*(t*(t*(.17087277*t-.82215223)+1.48851587)-1.13520398)+.27886807)-.18628806)+.09678418)+.37409196)+1.00002368),a=t*Math.exp(A10);return x<0?2-a:a})),$def(self,"$erfc",(function(x){return $$$("Math").$checked("erfc",$$$("Math")["$float!"](x))}),1),$def(self,"$exp",(function(x){return $$$("Math").$checked("exp",$$$("Math")["$float!"](x))}),1),$def(self,"$frexp",(function(x){if(x=$$("Math")["$float!"](x),isNaN(x))return[NaN,0];var ex=Math.floor(Math.log(Math.abs(x))/Math.log(2))+1;return[x/Math.pow(2,ex),ex]}),1),$def(self,"$gamma",(function(n){var i,t,x,value,result,twoN,threeN,fourN,fiveN;n=$$("Math")["$float!"](n);var P=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22];if(isNaN(n))return NaN;if(0===n&&1/n<0)return-1/0;if(-1!==n&&n!==-1/0||$Kernel.$raise($$("DomainError"),'Numerical argument is out of domain - "gamma"'),$$("Integer")["$==="](n)){if(n<=0)return isFinite(n)?1/0:NaN;if(n>171)return 1/0;for(value=n-2,result=n-1;value>1;)result*=value,value--;return 0==result&&(result=1),result}if(n<.5)return Math.PI/(Math.sin(Math.PI*n)*$$$("Math").$gamma($rb_minus(1,n)));if(n>=171.35)return 1/0;if(n>85)return fiveN=(fourN=(threeN=(twoN=n*n)*n)*n)*n,Math.sqrt(2*Math.PI/n)*Math.pow(n/Math.E,n)*(1+1/(12*n)+1/(288*twoN)-139/(51840*threeN)-571/(2488320*fourN)+163879/(209018880*fiveN)+5246819/(75246796800*fiveN*n));for(n-=1,x=P[0],i=1;i,!=,divmod,**,hypot,atan2,lcm,denominator,finite?,infinite?,numerator,abs,arg,rationalize,to_f,to_i,to_r,inspect,zero?,positive?,Rational"),self.$require("corelib/numeric"),self.$require("corelib/complex/base"),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Complex"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.real=$proto.imag=nil,$defs(self,"$rect",(function(real,imag){return null==imag&&(imag=0),$eqeqeq($$$("Numeric"),real)&&$truthy(real["$real?"]())&&$eqeqeq($$$("Numeric"),imag)&&$truthy(imag["$real?"]())||$Kernel.$raise($$$("TypeError"),"not a real"),this.$new(real,imag)}),-2),$defs(self,"$polar",(function(r,theta){return null==theta&&(theta=0),$eqeqeq($$$("Numeric"),r)&&$truthy(r["$real?"]())&&$eqeqeq($$$("Numeric"),theta)&&$truthy(theta["$real?"]())||$Kernel.$raise($$$("TypeError"),"not a real"),this.$new($rb_times(r,$$$("Math").$cos(theta)),$rb_times(r,$$$("Math").$sin(theta)))}),-2),self.$attr_reader("real","imag"),$def(self,"$initialize",(function(real,imag){return null==imag&&(imag=0),this.real=real,this.imag=imag}),-2),$def(self,"$coerce",(function(other){return $eqeqeq($$$("Complex"),other)?[other,this]:$eqeqeq($$$("Numeric"),other)&&$truthy(other["$real?"]())?[$$$("Complex").$new(other,0),this]:$Kernel.$raise($$$("TypeError"),other.$class()+" can't be coerced into Complex")}),1),$def(self,"$==",(function(other){var $ret_or_1=nil;return $eqeqeq($$$("Complex"),other)?$truthy($ret_or_1=this.real["$=="](other.$real()))?this.imag["$=="](other.$imag()):$ret_or_1:$eqeqeq($$$("Numeric"),other)&&$truthy(other["$real?"]())?$truthy($ret_or_1=this.real["$=="](other))?this.imag["$=="](0):$ret_or_1:other["$=="](this)}),1),$def(self,"$-@",(function(){return $Kernel.$Complex(this.real["$-@"](),this.imag["$-@"]())}),0),$def(self,"$+",(function(other){return $eqeqeq($$$("Complex"),other)?$Kernel.$Complex($rb_plus(this.real,other.$real()),$rb_plus(this.imag,other.$imag())):$eqeqeq($$$("Numeric"),other)&&$truthy(other["$real?"]())?$Kernel.$Complex($rb_plus(this.real,other),this.imag):this.$__coerced__("+",other)}),1),$def(self,"$-",(function(other){return $eqeqeq($$$("Complex"),other)?$Kernel.$Complex($rb_minus(this.real,other.$real()),$rb_minus(this.imag,other.$imag())):$eqeqeq($$$("Numeric"),other)&&$truthy(other["$real?"]())?$Kernel.$Complex($rb_minus(this.real,other),this.imag):this.$__coerced__("-",other)}),1),$def(self,"$*",(function(other){return $eqeqeq($$$("Complex"),other)?$Kernel.$Complex($rb_minus($rb_times(this.real,other.$real()),$rb_times(this.imag,other.$imag())),$rb_plus($rb_times(this.real,other.$imag()),$rb_times(this.imag,other.$real()))):$eqeqeq($$$("Numeric"),other)&&$truthy(other["$real?"]())?$Kernel.$Complex($rb_times(this.real,other),$rb_times(this.imag,other)):this.$__coerced__("*",other)}),1),$def(self,"$/",(function(other){return $eqeqeq($$$("Complex"),other)?$eqeqeq($$$("Number"),this.real)&&$truthy(this.real["$nan?"]())||$eqeqeq($$$("Number"),this.imag)&&$truthy(this.imag["$nan?"]())||$eqeqeq($$$("Number"),other.$real())&&$truthy(other.$real()["$nan?"]())||$eqeqeq($$$("Number"),other.$imag())&&$truthy(other.$imag()["$nan?"]())?$$$("Complex").$new($$$($$$("Float"),"NAN"),$$$($$$("Float"),"NAN")):$rb_divide($rb_times(this,other.$conj()),other.$abs2()):$eqeqeq($$$("Numeric"),other)&&$truthy(other["$real?"]())?$Kernel.$Complex(this.real.$quo(other),this.imag.$quo(other)):this.$__coerced__("/",other)}),1),$def(self,"$**",(function(other){var $a,$b,$c,$d,r=nil,theta=nil,ore=nil,oim=nil,nr=nil,ntheta=nil,x=nil,z=nil,n=nil,div=nil,mod=nil;if($eqeq(other,0))return $$$("Complex").$new(1,0);if($eqeqeq($$$("Complex"),other))return $b=this.$polar(),r=null==($a=$to_ary($b))[0]?nil:$a[0],theta=null==$a[1]?nil:$a[1],ore=other.$real(),oim=other.$imag(),nr=$$$("Math").$exp($rb_minus($rb_times(ore,$$$("Math").$log(r)),$rb_times(oim,theta))),ntheta=$rb_plus($rb_times(theta,ore),$rb_times(oim,$$$("Math").$log(r))),$$$("Complex").$polar(nr,ntheta);if($eqeqeq($$$("Integer"),other)){if($truthy($rb_gt(other,0))){for(z=x=this,n=$rb_minus(other,1);$neqeq(n,0);){for($c=n.$divmod(2),div=null==($b=$to_ary($c))[0]?nil:$b[0],mod=null==$b[1]?nil:$b[1];$eqeq(mod,0);)x=$Kernel.$Complex($rb_minus($rb_times(x.$real(),x.$real()),$rb_times(x.$imag(),x.$imag())),$rb_times($rb_times(2,x.$real()),x.$imag())),$d=(n=div).$divmod(2),div=null==($c=$to_ary($d))[0]?nil:$c[0],mod=null==$c[1]?nil:$c[1];z=$rb_times(z,x),n=$rb_minus(n,1)}return z}return $rb_divide($$$("Rational").$new(1,1),this)["$**"](other["$-@"]())}return $eqeqeq($$$("Float"),other)||$eqeqeq($$$("Rational"),other)?($b=this.$polar(),r=null==($a=$to_ary($b))[0]?nil:$a[0],theta=null==$a[1]?nil:$a[1],$$$("Complex").$polar(r["$**"](other),$rb_times(theta,other))):this.$__coerced__("**",other)}),1),$def(self,"$abs",(function(){return $$$("Math").$hypot(this.real,this.imag)}),0),$def(self,"$abs2",(function(){return $rb_plus($rb_times(this.real,this.real),$rb_times(this.imag,this.imag))}),0),$def(self,"$angle",(function(){return $$$("Math").$atan2(this.imag,this.real)}),0),$def(self,"$conj",(function(){return $Kernel.$Complex(this.real,this.imag["$-@"]())}),0),$def(self,"$denominator",(function(){return this.real.$denominator().$lcm(this.imag.$denominator())}),0),$def(self,"$eql?",(function(other){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=$$("Complex")["$==="](other))?this.real.$class()["$=="](this.imag.$class()):$ret_or_2)?this["$=="](other):$ret_or_1}),1),$def(self,"$fdiv",(function(other){return $eqeqeq($$$("Numeric"),other)||$Kernel.$raise($$$("TypeError"),other.$class()+" can't be coerced into Complex"),$rb_divide(this,other)}),1),$def(self,"$finite?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.real["$finite?"]())?this.imag["$finite?"]():$ret_or_1}),0),$def(self,"$hash",(function(){return"Complex:"+this.real+":"+this.imag}),0),$def(self,"$infinite?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.real["$infinite?"]())?$ret_or_1:this.imag["$infinite?"]()}),0),$def(self,"$inspect",(function(){return"("+this+")"}),0),$def(self,"$numerator",(function(){var d;return d=this.$denominator(),$Kernel.$Complex($rb_times(this.real.$numerator(),$rb_divide(d,this.real.$denominator())),$rb_times(this.imag.$numerator(),$rb_divide(d,this.imag.$denominator())))}),0),$def(self,"$polar",(function(){return[this.$abs(),this.$arg()]}),0),$def(self,"$rationalize",(function(eps){var self=this;return arguments.length>1&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arguments.length+" for 0..1)"),$neqeq(self.imag,0)&&$Kernel.$raise($$$("RangeError"),"can't convert "+self+" into Rational"),self.$real().$rationalize(eps)}),-1),$def(self,"$real?",(function(){return!1}),0),$def(self,"$rect",(function(){return[this.real,this.imag]}),0),$def(self,"$to_f",(function(){return $eqeq(this.imag,0)||$Kernel.$raise($$$("RangeError"),"can't convert "+this+" into Float"),this.real.$to_f()}),0),$def(self,"$to_i",(function(){return $eqeq(this.imag,0)||$Kernel.$raise($$$("RangeError"),"can't convert "+this+" into Integer"),this.real.$to_i()}),0),$def(self,"$to_r",(function(){return $eqeq(this.imag,0)||$Kernel.$raise($$$("RangeError"),"can't convert "+this+" into Rational"),this.real.$to_r()}),0),$def(self,"$to_s",(function(){var result=nil;return result=this.real.$inspect(),result=$rb_plus(result,$eqeqeq($$$("Number"),this.imag)&&$truthy(this.imag["$nan?"]())||$truthy(this.imag["$positive?"]())||$truthy(this.imag["$zero?"]())?"+":"-"),result=$rb_plus(result,this.imag.$abs().$inspect()),$eqeqeq($$$("Number"),this.imag)&&($truthy(this.imag["$nan?"]())||$truthy(this.imag["$infinite?"]()))&&(result=$rb_plus(result,"*")),$rb_plus(result,"i")}),0),$const_set($nesting[0],"I",self.$new(0,1)),$defs(self,"$from_string",(function(str){var real,imag,re=/[+-]?[\d_]+(\.[\d_]+)?(e\d+)?/;str.match(re);function isFloat(){return re.test(str)}function cutFloat(){var number=str.match(re)[0];return str=str.slice(number.length),number.replace(/_/g,"")}function cutNumber(){if(isFloat()){var numerator=parseFloat(cutFloat());if("/"===str[0]){if(str=str.slice(1),isFloat()){var denominator=parseFloat(cutFloat());return $Kernel.$Rational(numerator,denominator)}return str="/"+str,numerator}return numerator}return null}return(real=cutNumber())?(imag=cutNumber())?$Kernel.$Complex(real,imag):"i"===str[0]?$Kernel.$Complex(0,real):$Kernel.$Complex(real,0):"i"===str[0]?$Kernel.$Complex(0,1):"-"===str[0]&&"i"===str[1]?$Kernel.$Complex(0,-1):"+"===str[0]&&"i"===str[1]?$Kernel.$Complex(0,1):$Kernel.$Complex(0,0)}),1),function(self,$parent_nesting){$alias(self,"rectangular","rect")}(Opal.get_singleton_class(self)),$alias(self,"arg","angle"),$alias(self,"conjugate","conj"),$alias(self,"divide","/"),$alias(self,"imaginary","imag"),$alias(self,"magnitude","abs"),$alias(self,"phase","arg"),$alias(self,"quo","/"),$alias(self,"rectangular","rect"),Opal.udef(self,"$negative?"),Opal.udef(self,"$positive?"),Opal.udef(self,"$step"),nil}(0,$$$("Numeric"),[])},Opal.modules["corelib/rational/base"]=function(Opal){Opal.nil;var self,$$$=Opal.$$$,$module=Opal.module,$def=Opal.def,$klass=Opal.klass;return Opal.add_stubs("convert,from_string"),self=$module("::","Kernel"),$def(self,"$Rational",(function(numerator,denominator){return null==denominator&&(denominator=1),$$$("Rational").$convert(numerator,denominator)}),-2),function($base,$super){var self=$klass("::",null,"String");return $def(self,"$to_r",(function(){return $$$("Rational").$from_string(this)}),0)}()},Opal.modules["corelib/rational"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$eqeq=Opal.eqeq,$Kernel=Opal.Kernel,$truthy=Opal.truthy,$rb_lt=Opal.rb_lt,$rb_divide=Opal.rb_divide,$defs=Opal.defs,$eqeqeq=Opal.eqeqeq,$not=Opal.not,$Opal=Opal.Opal,$def=Opal.def,$rb_minus=Opal.rb_minus,$rb_times=Opal.rb_times,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt,$rb_le=Opal.rb_le,$alias=Opal.alias;return Opal.add_stubs("require,to_i,==,raise,<,-@,new,gcd,/,nil?,===,reduce,to_r,!,equal?,coerce_to!,to_f,numerator,denominator,<=>,-,*,__coerced__,+,Rational,>,**,abs,ceil,with_precision,floor,<=,truncate,send"),self.$require("corelib/numeric"),self.$require("corelib/rational/base"),function($base,$super){var self=$klass("::",$super,"Rational"),$proto=self.$$prototype;return $proto.num=$proto.den=nil,$defs(self,"$reduce",(function(num,den){var gcd;if(num=num.$to_i(),den=den.$to_i(),$eqeq(den,0))$Kernel.$raise($$$("ZeroDivisionError"),"divided by 0");else if($truthy($rb_lt(den,0)))num=num["$-@"](),den=den["$-@"]();else if($eqeq(den,1))return this.$new(num,den);return gcd=num.$gcd(den),this.$new($rb_divide(num,gcd),$rb_divide(den,gcd))}),2),$defs(self,"$convert",(function(num,den){return($truthy(num["$nil?"]())||$truthy(den["$nil?"]()))&&$Kernel.$raise($$$("TypeError"),"cannot convert nil into Rational"),$eqeqeq($$$("Integer"),num)&&$eqeqeq($$$("Integer"),den)?this.$reduce(num,den):(($eqeqeq($$$("Float"),num)||$eqeqeq($$$("String"),num)||$eqeqeq($$$("Complex"),num))&&(num=num.$to_r()),($eqeqeq($$$("Float"),den)||$eqeqeq($$$("String"),den)||$eqeqeq($$$("Complex"),den))&&(den=den.$to_r()),$truthy(den["$equal?"](1))&&$not($$$("Integer")["$==="](num))?$Opal["$coerce_to!"](num,$$$("Rational"),"to_r"):$eqeqeq($$$("Numeric"),num)&&$eqeqeq($$$("Numeric"),den)?$rb_divide(num,den):this.$reduce(num,den))}),2),$def(self,"$initialize",(function(num,den){return this.num=num,this.den=den}),2),$def(self,"$numerator",(function(){return this.num}),0),$def(self,"$denominator",(function(){return this.den}),0),$def(self,"$coerce",(function(other){var $ret_or_1;return $eqeqeq($$$("Rational"),$ret_or_1=other)?[other,this]:$eqeqeq($$$("Integer"),$ret_or_1)?[other.$to_r(),this]:$eqeqeq($$$("Float"),$ret_or_1)?[other,this.$to_f()]:nil}),1),$def(self,"$==",(function(other){var $ret_or_1,$ret_or_2=nil;return $eqeqeq($$$("Rational"),$ret_or_1=other)?$truthy($ret_or_2=this.num["$=="](other.$numerator()))?this.den["$=="](other.$denominator()):$ret_or_2:$eqeqeq($$$("Integer"),$ret_or_1)?$truthy($ret_or_2=this.num["$=="](other))?this.den["$=="](1):$ret_or_2:$eqeqeq($$$("Float"),$ret_or_1)?this.$to_f()["$=="](other):other["$=="](this)}),1),$def(self,"$<=>",(function(other){var $ret_or_1;return $eqeqeq($$$("Rational"),$ret_or_1=other)?$rb_minus($rb_times(this.num,other.$denominator()),$rb_times(this.den,other.$numerator()))["$<=>"](0):$eqeqeq($$$("Integer"),$ret_or_1)?$rb_minus(this.num,$rb_times(this.den,other))["$<=>"](0):$eqeqeq($$$("Float"),$ret_or_1)?this.$to_f()["$<=>"](other):this.$__coerced__("<=>",other)}),1),$def(self,"$+",(function(other){var $ret_or_1,num=nil,den=nil;return $eqeqeq($$$("Rational"),$ret_or_1=other)?(num=$rb_plus($rb_times(this.num,other.$denominator()),$rb_times(this.den,other.$numerator())),den=$rb_times(this.den,other.$denominator()),$Kernel.$Rational(num,den)):$eqeqeq($$$("Integer"),$ret_or_1)?$Kernel.$Rational($rb_plus(this.num,$rb_times(other,this.den)),this.den):$eqeqeq($$$("Float"),$ret_or_1)?$rb_plus(this.$to_f(),other):this.$__coerced__("+",other)}),1),$def(self,"$-",(function(other){var $ret_or_1,num=nil,den=nil;return $eqeqeq($$$("Rational"),$ret_or_1=other)?(num=$rb_minus($rb_times(this.num,other.$denominator()),$rb_times(this.den,other.$numerator())),den=$rb_times(this.den,other.$denominator()),$Kernel.$Rational(num,den)):$eqeqeq($$$("Integer"),$ret_or_1)?$Kernel.$Rational($rb_minus(this.num,$rb_times(other,this.den)),this.den):$eqeqeq($$$("Float"),$ret_or_1)?$rb_minus(this.$to_f(),other):this.$__coerced__("-",other)}),1),$def(self,"$*",(function(other){var $ret_or_1,num=nil,den=nil;return $eqeqeq($$$("Rational"),$ret_or_1=other)?(num=$rb_times(this.num,other.$numerator()),den=$rb_times(this.den,other.$denominator()),$Kernel.$Rational(num,den)):$eqeqeq($$$("Integer"),$ret_or_1)?$Kernel.$Rational($rb_times(this.num,other),this.den):$eqeqeq($$$("Float"),$ret_or_1)?$rb_times(this.$to_f(),other):this.$__coerced__("*",other)}),1),$def(self,"$/",(function(other){var $ret_or_1,num=nil,den=nil;return $eqeqeq($$$("Rational"),$ret_or_1=other)?(num=$rb_times(this.num,other.$denominator()),den=$rb_times(this.den,other.$numerator()),$Kernel.$Rational(num,den)):$eqeqeq($$$("Integer"),$ret_or_1)?$eqeq(other,0)?$rb_divide(this.$to_f(),0):$Kernel.$Rational(this.num,$rb_times(this.den,other)):$eqeqeq($$$("Float"),$ret_or_1)?$rb_divide(this.$to_f(),other):this.$__coerced__("/",other)}),1),$def(self,"$**",(function(other){var $ret_or_1;return $eqeqeq($$$("Integer"),$ret_or_1=other)?$eqeq(this,0)&&$truthy($rb_lt(other,0))?$$$($$$("Float"),"INFINITY"):$truthy($rb_gt(other,0))?$Kernel.$Rational(this.num["$**"](other),this.den["$**"](other)):$truthy($rb_lt(other,0))?$Kernel.$Rational(this.den["$**"](other["$-@"]()),this.num["$**"](other["$-@"]())):$Kernel.$Rational(1,1):$eqeqeq($$$("Float"),$ret_or_1)?this.$to_f()["$**"](other):$eqeqeq($$$("Rational"),$ret_or_1)?$eqeq(other,0)?$Kernel.$Rational(1,1):$eqeq(other.$denominator(),1)?$truthy($rb_lt(other,0))?$Kernel.$Rational(this.den["$**"](other.$numerator().$abs()),this.num["$**"](other.$numerator().$abs())):$Kernel.$Rational(this.num["$**"](other.$numerator()),this.den["$**"](other.$numerator())):$eqeq(this,0)&&$truthy($rb_lt(other,0))?$Kernel.$raise($$$("ZeroDivisionError"),"divided by 0"):this.$to_f()["$**"](other):this.$__coerced__("**",other)}),1),$def(self,"$abs",(function(){return $Kernel.$Rational(this.num.$abs(),this.den.$abs())}),0),$def(self,"$ceil",(function(precision){return null==precision&&(precision=0),$eqeq(precision,0)?$rb_divide(this.num["$-@"](),this.den)["$-@"]().$ceil():this.$with_precision("ceil",precision)}),-1),$def(self,"$floor",(function(precision){return null==precision&&(precision=0),$eqeq(precision,0)?$rb_divide(this.num["$-@"](),this.den)["$-@"]().$floor():this.$with_precision("floor",precision)}),-1),$def(self,"$hash",(function(){return"Rational:"+this.num+":"+this.den}),0),$def(self,"$inspect",(function(){return"("+this+")"}),0),$def(self,"$rationalize",(function(eps){var self=this;if(arguments.length>1&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arguments.length+" for 0..1)"),null==eps)return self;for(var p2,q2,c,k,t,e=eps.$abs(),a=$rb_minus(self,e),b=$rb_plus(self,e),p0=0,p1=1,q0=1,q1=0;c=a.$ceil(),!$rb_le(c,b);)p2=(k=c-1)*p1+p0,q2=k*q1+q0,t=$rb_divide(1,$rb_minus(b,k)),b=$rb_divide(1,$rb_minus(a,k)),a=t,p0=p1,q0=q1,p1=p2,q1=q2;return $Kernel.$Rational(c*p1+p0,c*q1+q0)}),-1),$def(self,"$round",(function(precision){var num,den,approx=nil;return null==precision&&(precision=0),$eqeq(precision,0)?$eqeq(this.num,0)?0:$eqeq(this.den,1)?this.num:(num=$rb_plus($rb_times(this.num.$abs(),2),this.den),den=$rb_times(this.den,2),approx=$rb_divide(num,den).$truncate(),$truthy($rb_lt(this.num,0))?approx["$-@"]():approx):this.$with_precision("round",precision)}),-1),$def(self,"$to_f",(function(){return $rb_divide(this.num,this.den)}),0),$def(self,"$to_i",(function(){return this.$truncate()}),0),$def(self,"$to_r",(function(){return this}),0),$def(self,"$to_s",(function(){return this.num+"/"+this.den}),0),$def(self,"$truncate",(function(precision){return null==precision&&(precision=0),$eqeq(precision,0)?$truthy($rb_lt(this.num,0))?this.$ceil():this.$floor():this.$with_precision("truncate",precision)}),-1),$def(self,"$with_precision",(function(method,precision){var p,s=nil;return $eqeqeq($$$("Integer"),precision)||$Kernel.$raise($$$("TypeError"),"not an Integer"),p=10["$**"](precision),s=$rb_times(this,p),$truthy($rb_lt(precision,1))?$rb_divide(s.$send(method),p).$to_i():$Kernel.$Rational(s.$send(method),p)}),2),$defs(self,"$from_string",(function(string){var numerator,denominator,str=string.trimLeft(),re=/^[+-]?[\d_]+(\.[\d_]+)?/;str.match(re);function isFloat(){return re.test(str)}function cutFloat(){var number=str.match(re)[0];return str=str.slice(number.length),number.replace(/_/g,"")}return isFloat()?(numerator=parseFloat(cutFloat()),"/"===str[0]?(str=str.slice(1),isFloat()?(denominator=parseFloat(cutFloat()),$Kernel.$Rational(numerator,denominator)):$Kernel.$Rational(numerator,1)):$Kernel.$Rational(numerator,1)):$Kernel.$Rational(0,1)}),1),$alias(self,"divide","/"),$alias(self,"quo","/")}(0,$$$("Numeric"))},Opal.modules["corelib/time"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$slice=Opal.slice,$klass=Opal.klass,$Kernel=Opal.Kernel,$Opal=Opal.Opal,$defs=Opal.defs,$eqeqeq=Opal.eqeqeq,$def=Opal.def,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$rb_lt=Opal.rb_lt,$rb_plus=Opal.rb_plus,$rb_divide=Opal.rb_divide,$rb_minus=Opal.rb_minus,$range=Opal.range,$neqeq=Opal.neqeq,$rb_le=Opal.rb_le,$eqeq=Opal.eqeq,$alias=Opal.alias;return Opal.add_stubs("require,include,===,raise,coerce_to!,respond_to?,to_str,to_i,new,<=>,to_f,nil?,>,<,strftime,year,month,day,+,round,/,-,copy_instance_variables,initialize_dup,is_a?,zero?,wday,utc?,mon,yday,hour,min,sec,rjust,ljust,zone,to_s,[],cweek_cyear,isdst,!=,<=,==,ceil"),self.$require("corelib/comparable"),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Time"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$include($$$("Comparable"));var days_of_week=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],short_days=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],short_months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],long_months=["January","February","March","April","May","June","July","August","September","October","November","December"];function time_params(year,month,day,hour,min,sec){if(year=year.$$is_string?parseInt(year,10):$Opal["$coerce_to!"](year,$$$("Integer"),"to_int"),month===nil)month=1;else if(!month.$$is_number)if(month["$respond_to?"]("to_str"))switch((month=month.$to_str()).toLowerCase()){case"jan":month=1;break;case"feb":month=2;break;case"mar":month=3;break;case"apr":month=4;break;case"may":month=5;break;case"jun":month=6;break;case"jul":month=7;break;case"aug":month=8;break;case"sep":month=9;break;case"oct":month=10;break;case"nov":month=11;break;case"dec":month=12;break;default:month=month.$to_i()}else month=$Opal["$coerce_to!"](month,$$$("Integer"),"to_int");return(month<1||month>12)&&$Kernel.$raise($$$("ArgumentError"),"month out of range: "+month),month-=1,((day=day===nil?1:day.$$is_string?parseInt(day,10):$Opal["$coerce_to!"](day,$$$("Integer"),"to_int"))<1||day>31)&&$Kernel.$raise($$$("ArgumentError"),"day out of range: "+day),((hour=hour===nil?0:hour.$$is_string?parseInt(hour,10):$Opal["$coerce_to!"](hour,$$$("Integer"),"to_int"))<0||hour>24)&&$Kernel.$raise($$$("ArgumentError"),"hour out of range: "+hour),((min=min===nil?0:min.$$is_string?parseInt(min,10):$Opal["$coerce_to!"](min,$$$("Integer"),"to_int"))<0||min>59)&&$Kernel.$raise($$$("ArgumentError"),"min out of range: "+min),sec===nil?sec=0:sec.$$is_number||(sec=sec.$$is_string?parseInt(sec,10):$Opal["$coerce_to!"](sec,$$$("Integer"),"to_int")),(sec<0||sec>60)&&$Kernel.$raise($$$("ArgumentError"),"sec out of range: "+sec),[year,month,day,hour,min,sec]}return $defs(self,"$at",(function(seconds,frac){var result;return $$$("Time")["$==="](seconds)?(void 0!==frac&&$Kernel.$raise($$$("TypeError"),"can't convert Time into an exact number"),(result=new Date(seconds.getTime())).is_utc=seconds.is_utc,result):(seconds.$$is_number||(seconds=$Opal["$coerce_to!"](seconds,$$$("Integer"),"to_int")),void 0===frac?new Date(1e3*seconds):(frac.$$is_number||(frac=$Opal["$coerce_to!"](frac,$$$("Integer"),"to_int")),new Date(1e3*seconds+frac/1e3)))}),-2),$defs(self,"$new",(function(year,month,day,hour,min,sec,utc_offset){var args,result;return null==month&&(month=nil),null==day&&(day=nil),null==hour&&(hour=nil),null==min&&(min=nil),null==sec&&(sec=nil),null==utc_offset&&(utc_offset=nil),void 0===year?new Date:(utc_offset!==nil&&$Kernel.$raise($$$("ArgumentError"),"Opal does not support explicitly specifying UTC offset for Time"),year=(args=time_params(year,month,day,hour,min,sec))[0],month=args[1],day=args[2],hour=args[3],min=args[4],sec=args[5],result=new Date(year,month,day,hour,min,0,1e3*sec),year<100&&result.setFullYear(year),result)}),-1),$defs(self,"$local",(function(year,month,day,hour,min,sec,millisecond,_dummy1,_dummy2,_dummy3){var args,result;return null==month&&(month=nil),null==day&&(day=nil),null==hour&&(hour=nil),null==min&&(min=nil),null==sec&&(sec=nil),null==millisecond&&(millisecond=nil),null==_dummy1&&(_dummy1=nil),null==_dummy2&&(_dummy2=nil),null==_dummy3&&(_dummy3=nil),10===arguments.length&&(year=(args=$slice.call(arguments))[5],month=args[4],day=args[3],hour=args[2],min=args[1],sec=args[0]),year=(args=time_params(year,month,day,hour,min,sec))[0],month=args[1],day=args[2],hour=args[3],min=args[4],sec=args[5],result=new Date(year,month,day,hour,min,0,1e3*sec),year<100&&result.setFullYear(year),result}),-2),$defs(self,"$gm",(function(year,month,day,hour,min,sec,millisecond,_dummy1,_dummy2,_dummy3){var args,result;return null==month&&(month=nil),null==day&&(day=nil),null==hour&&(hour=nil),null==min&&(min=nil),null==sec&&(sec=nil),null==millisecond&&(millisecond=nil),null==_dummy1&&(_dummy1=nil),null==_dummy2&&(_dummy2=nil),null==_dummy3&&(_dummy3=nil),10===arguments.length&&(year=(args=$slice.call(arguments))[5],month=args[4],day=args[3],hour=args[2],min=args[1],sec=args[0]),year=(args=time_params(year,month,day,hour,min,sec))[0],month=args[1],day=args[2],hour=args[3],min=args[4],sec=args[5],result=new Date(Date.UTC(year,month,day,hour,min,0,1e3*sec)),year<100&&result.setUTCFullYear(year),result.is_utc=!0,result}),-2),$defs(self,"$now",(function(){return this.$new()}),0),$def(self,"$+",(function(other){$eqeqeq($$$("Time"),other)&&$Kernel.$raise($$$("TypeError"),"time + time?"),other.$$is_number||(other=$Opal["$coerce_to!"](other,$$$("Integer"),"to_int"));var result=new Date(this.getTime()+1e3*other);return result.is_utc=this.is_utc,result}),1),$def(self,"$-",(function(other){if($eqeqeq($$$("Time"),other))return(this.getTime()-other.getTime())/1e3;other.$$is_number||(other=$Opal["$coerce_to!"](other,$$$("Integer"),"to_int"));var result=new Date(this.getTime()-1e3*other);return result.is_utc=this.is_utc,result}),1),$def(self,"$<=>",(function(other){var r=nil;return $eqeqeq($$$("Time"),other)?this.$to_f()["$<=>"](other.$to_f()):(r=other["$<=>"](this),$truthy(r["$nil?"]())?nil:$truthy($rb_gt(r,0))?-1:$truthy($rb_lt(r,0))?1:0)}),1),$def(self,"$==",(function(other){var $ret_or_1;return $truthy($ret_or_1=$$$("Time")["$==="](other))?this.$to_f()===other.$to_f():$ret_or_1}),1),$def(self,"$asctime",(function(){return this.$strftime("%a %b %e %H:%M:%S %Y")}),0),$def(self,"$day",(function(){return this.is_utc?this.getUTCDate():this.getDate()}),0),$def(self,"$yday",(function(){var start_of_year,start_of_day;return start_of_year=$$("Time").$new(this.$year()).$to_i(),start_of_day=$$("Time").$new(this.$year(),this.$month(),this.$day()).$to_i(),86400,$rb_plus($rb_divide($rb_minus(start_of_day,start_of_year),86400).$round(),1)}),0),$def(self,"$isdst",(function(){var jan=new Date(this.getFullYear(),0,1),jul=new Date(this.getFullYear(),6,1);return this.getTimezoneOffset()"](other)["$zero?"]():$ret_or_1}),1),$def(self,"$friday?",(function(){return 5==this.$wday()}),0),$def(self,"$hash",(function(){return"Time:"+this.getTime()}),0),$def(self,"$hour",(function(){return this.is_utc?this.getUTCHours():this.getHours()}),0),$def(self,"$inspect",(function(){return $truthy(this["$utc?"]())?this.$strftime("%Y-%m-%d %H:%M:%S UTC"):this.$strftime("%Y-%m-%d %H:%M:%S %z")}),0),$def(self,"$min",(function(){return this.is_utc?this.getUTCMinutes():this.getMinutes()}),0),$def(self,"$mon",(function(){return(this.is_utc?this.getUTCMonth():this.getMonth())+1}),0),$def(self,"$monday?",(function(){return 1==this.$wday()}),0),$def(self,"$saturday?",(function(){return 6==this.$wday()}),0),$def(self,"$sec",(function(){return this.is_utc?this.getUTCSeconds():this.getSeconds()}),0),$def(self,"$succ",(function(){var result=new Date(this.getTime()+1e3);return result.is_utc=this.is_utc,result}),0),$def(self,"$usec",(function(){return 1e3*this.getMilliseconds()}),0),$def(self,"$zone",(function(){var result,string=this.toString();return"GMT"==(result=-1==string.indexOf("(")?string.match(/[A-Z]{3,4}/)[0]:string.match(/\((.+)\)(?:\s|$)/)[1])&&/(GMT\W*\d{4})/.test(string)?RegExp.$1:result}),0),$def(self,"$getgm",(function(){var result=new Date(this.getTime());return result.is_utc=!0,result}),0),$def(self,"$gmtime",(function(){return this.is_utc=!0,this}),0),$def(self,"$gmt?",(function(){return!0===this.is_utc}),0),$def(self,"$gmt_offset",(function(){return this.is_utc?0:60*-this.getTimezoneOffset()}),0),$def(self,"$strftime",(function(format){var self=this;return format.replace(/%([\-_#^0]*:{0,2})(\d+)?([EO]*)(.)/g,(function(full,flags,width,_,conv){var result="",zero=-1!==flags.indexOf("0"),pad=-1===flags.indexOf("-"),blank=-1!==flags.indexOf("_"),upcase=-1!==flags.indexOf("^"),invert=-1!==flags.indexOf("#"),colons=(flags.match(":")||[]).length;switch(width=parseInt(width,10),zero&&blank&&(flags.indexOf("0")=12?"pm":"am";break;case"p":result+=self.$hour()>=12?"PM":"AM";break;case"M":zero=!blank,result+=self.$min();break;case"S":zero=!blank,result+=self.$sec();break;case"L":zero=!blank,width=isNaN(width)?3:width,result+=self.getMilliseconds();break;case"N":width=isNaN(width)?9:width,result=(result+=self.getMilliseconds().toString().$rjust(3,"0")).$ljust(width,"0");break;case"z":var offset=self.getTimezoneOffset(),hours=Math.floor(Math.abs(offset)/60),minutes=Math.abs(offset)%60;result+=offset<0?"+":"-",result+=hours<10?"0":"",result+=hours,colons>0&&(result+=":"),result+=minutes<10?"0":"",result+=minutes,colons>1&&(result+=":00");break;case"Z":result+=self.$zone();break;case"A":result+=days_of_week[self.$wday()];break;case"a":result+=short_days[self.$wday()];break;case"u":result+=self.$wday()+1;break;case"w":result+=self.$wday();break;case"V":result+=self.$cweek_cyear()["$[]"](0).$to_s().$rjust(2,"0");break;case"G":result+=self.$cweek_cyear()["$[]"](1);break;case"g":result+=self.$cweek_cyear()["$[]"](1)["$[]"]($range(-2,-1,!1));break;case"s":result+=self.$to_i();break;case"n":result+="\n";break;case"t":result+="\t";break;case"%":result+="%";break;case"c":result+=self.$strftime("%a %b %e %T %Y");break;case"D":case"x":result+=self.$strftime("%m/%d/%y");break;case"F":result+=self.$strftime("%Y-%m-%d");break;case"v":result+=self.$strftime("%e-%^b-%4Y");break;case"r":result+=self.$strftime("%I:%M:%S %p");break;case"R":result+=self.$strftime("%H:%M");break;case"T":case"X":result+=self.$strftime("%H:%M:%S");break;default:return full}return upcase&&(result=result.toUpperCase()),invert&&(result=result.replace(/[A-Z]/,(function(c){c.toLowerCase()})).replace(/[a-z]/,(function(c){c.toUpperCase()}))),pad&&(zero||blank)&&(result=result.$rjust(isNaN(width)?2:width,blank?" ":"0")),result}))}),1),$def(self,"$sunday?",(function(){return 0==this.$wday()}),0),$def(self,"$thursday?",(function(){return 4==this.$wday()}),0),$def(self,"$to_a",(function(){return[this.$sec(),this.$min(),this.$hour(),this.$day(),this.$month(),this.$year(),this.$wday(),this.$yday(),this.$isdst(),this.$zone()]}),0),$def(self,"$to_f",(function(){return this.getTime()/1e3}),0),$def(self,"$to_i",(function(){return parseInt(this.getTime()/1e3,10)}),0),$def(self,"$tuesday?",(function(){return 2==this.$wday()}),0),$def(self,"$wday",(function(){return this.is_utc?this.getUTCDay():this.getDay()}),0),$def(self,"$wednesday?",(function(){return 3==this.$wday()}),0),$def(self,"$year",(function(){return this.is_utc?this.getUTCFullYear():this.getFullYear()}),0),$def(self,"$cweek_cyear",(function(){var jan01_wday,year=nil,offset=nil,week=nil,dec31_wday=nil;return jan01_wday=$$$("Time").$new(this.$year(),1,1).$wday(),0,year=this.$year(),$truthy($rb_le(jan01_wday,4))&&$neqeq(jan01_wday,0)?offset=$rb_minus(jan01_wday,1):(offset=$rb_minus($rb_minus(jan01_wday,7),1),$eqeq(offset,-8)&&(offset=-1)),week=$rb_divide($rb_plus(this.$yday(),offset),7).$ceil(),$truthy($rb_le(week,0))?$$$("Time").$new($rb_minus(this.$year(),1),12,31).$cweek_cyear():($eqeq(week,53)&&(dec31_wday=$$$("Time").$new(this.$year(),12,31).$wday(),$truthy($rb_le(dec31_wday,3))&&$neqeq(dec31_wday,0)&&(week=1,year=$rb_plus(year,1))),[week,year])}),0),function(self,$parent_nesting){$alias(self,"mktime","local"),$alias(self,"utc","gm")}(Opal.get_singleton_class(self)),$alias(self,"ctime","asctime"),$alias(self,"dst?","isdst"),$alias(self,"getutc","getgm"),$alias(self,"gmtoff","gmt_offset"),$alias(self,"mday","day"),$alias(self,"month","mon"),$alias(self,"to_s","inspect"),$alias(self,"tv_sec","to_i"),$alias(self,"tv_usec","usec"),$alias(self,"utc","gmtime"),$alias(self,"utc?","gmt?"),$alias(self,"utc_offset","gmt_offset")}(0,Date,[])},Opal.modules["corelib/struct"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy,$neqeq=Opal.neqeq,$eqeq=Opal.eqeq,$Opal=Opal.Opal,$send=Opal.send,$Class=Opal.Class,$to_a=Opal.to_a,$def=Opal.def,$defs=Opal.defs,$Kernel=Opal.Kernel,$rb_gt=Opal.rb_gt,$rb_minus=Opal.rb_minus,$eqeqeq=Opal.eqeqeq,$rb_lt=Opal.rb_lt,$rb_ge=Opal.rb_ge,$rb_plus=Opal.rb_plus,$alias=Opal.alias;return Opal.add_stubs("require,include,!=,upcase,[],==,class,unshift,const_name!,map,coerce_to!,new,each,define_struct_attribute,allocate,initialize,alias_method,module_eval,to_proc,const_set,raise,<<,members,define_method,instance_eval,last,>,length,-,keys,any?,join,[]=,each_with_index,hash,===,<,-@,size,>=,include?,to_sym,instance_of?,__id__,eql?,enum_for,+,name,each_pair,inspect,to_h,args,each_with_object,flatten,to_a,respond_to?,dig"),self.$require("corelib/enumerable"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Struct"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$include($$$("Enumerable")),$defs(self,"$new",(function $Struct_new$1(const_name,$a,$b){var $post_args,$kwargs,args,keyword_init,block=$Struct_new$1.$$p||nil,self=this,klass=nil;if(delete $Struct_new$1.$$p,$post_args=Opal.slice.call(arguments,1),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");if(args=$post_args,null==(keyword_init=$kwargs.$$smap.keyword_init)&&(keyword_init=!1),$truthy(const_name))if($eqeq(const_name.$class(),$$$("String"))&&$neqeq(const_name["$[]"](0).$upcase(),const_name["$[]"](0)))args.$unshift(const_name),const_name=nil;else try{const_name=$Opal["$const_name!"](const_name)}catch($err){if(!Opal.rescue($err,[$$$("TypeError"),$$$("NameError")]))throw $err;try{args.$unshift(const_name),const_name=nil}finally{Opal.pop_exception()}}return $send(args,"map",[],(function(arg){return null==arg&&(arg=nil),$Opal["$coerce_to!"](arg,$$$("String"),"to_str")}),1),klass=$send($Class,"new",[self],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return $send(args,"each",[],(function $$4(arg){return null==arg&&(arg=nil),(null==$$4.$$s?this:$$4.$$s).$define_struct_attribute(arg)}),{$$arity:1,$$s:self}),function(self,$parent_nesting){return $def(self,"$new",(function($a){var args,self=this,instance=nil;return args=Opal.slice.call(arguments),(instance=self.$allocate()).$$data={},$send(instance,"initialize",$to_a(args)),instance}),-1),self.$alias_method("[]","new")}(Opal.get_singleton_class(self))}),{$$arity:0,$$s:self}),$truthy(block)&&$send(klass,"module_eval",[],block.$to_proc()),klass.$$keyword_init=keyword_init,$truthy(const_name)&&$$$("Struct").$const_set(const_name,klass),klass}),-2),$defs(self,"$define_struct_attribute",(function(name){return $eqeq(this,$$$("Struct"))&&$Kernel.$raise($$$("ArgumentError"),"you cannot define attributes to the Struct class"),this.$members()["$<<"](name),$send(this,"define_method",[name],(function $$6(){return(null==$$6.$$s?this:$$6.$$s).$$data[name]}),{$$arity:0,$$s:this}),$send(this,"define_method",[name+"="],(function $$7(value){return null==value&&(value=nil),(null==$$7.$$s?this:$$7.$$s).$$data[name]=value}),{$$arity:1,$$s:this})}),1),$defs(self,"$members",(function(){var $ret_or_1;return null==this.members&&(this.members=nil),$eqeq(this,$$$("Struct"))&&$Kernel.$raise($$$("ArgumentError"),"the Struct class has no members"),this.members=$truthy($ret_or_1=this.members)?$ret_or_1:[]}),0),$defs(self,"$inherited",(function(klass){var members;return null==this.members&&(this.members=nil),members=this.members,$send(klass,"instance_eval",[],(function $$8(){return(null==$$8.$$s?this:$$8.$$s).members=members}),{$$arity:0,$$s:this})}),1),$def(self,"$initialize",(function($a){var $post_args,args,self=this,kwargs=nil,$ret_or_1=nil,extra=nil;return $post_args=Opal.slice.call(arguments),args=$post_args,$truthy(self.$class().$$keyword_init)?(kwargs=$truthy($ret_or_1=args.$last())?$ret_or_1:$hash2([],{}),($truthy($rb_gt(args.$length(),1))||$truthy(1===args.length&&!kwargs.$$is_hash))&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments (given "+args.$length()+", expected 0)"),extra=$rb_minus(kwargs.$keys(),self.$class().$members()),$truthy(extra["$any?"]())&&$Kernel.$raise($$$("ArgumentError"),"unknown keywords: "+extra.$join(", ")),$send(self.$class().$members(),"each",[],(function $$9(name){var $writer,self=null==$$9.$$s?this:$$9.$$s;return null==name&&(name=nil),$writer=[name,kwargs["$[]"](name)],$send(self,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})):($truthy($rb_gt(args.$length(),self.$class().$members().$length()))&&$Kernel.$raise($$$("ArgumentError"),"struct size differs"),$send(self.$class().$members(),"each_with_index",[],(function $$10(name,index){var $writer,self=null==$$10.$$s?this:$$10.$$s;return null==name&&(name=nil),null==index&&(index=nil),$writer=[name,args["$[]"](index)],$send(self,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:2,$$s:self}))}),-1),$def(self,"$initialize_copy",(function(from){this.$$data={};var i,max,name,keys=Object.keys(from.$$data);for(i=0,max=keys.length;i"):(inspect_stack["$<<"](self.$__id__()),pushed=!0,$eqeqeq($$$("Struct"),self)&&$truthy(self.$class().$name())&&(result=$rb_plus(result,self.$class()+" ")),result=$rb_plus(result,$send(self.$each_pair(),"map",[],(function(name,value){return null==name&&(name=nil),null==value&&(value=nil),name+"="+$$("Opal").$inspect(value)}),2).$join(", ")),result=$rb_plus(result,">"))}finally{$truthy(pushed)&&inspect_stack.pop()}}()}),0),$def(self,"$to_h",(function $$to_h(){var block=$$to_h.$$p||nil;return delete $$to_h.$$p,block!==nil?$send($send(this,"map",[],block.$to_proc()),"to_h",$to_a(this.$args())):$send(this.$class().$members(),"each_with_object",[$hash2([],{})],(function $$22(name,h){var $writer;return null==name&&(name=nil),null==h&&(h=nil),$writer=[name,(null==$$22.$$s?this:$$22.$$s)["$[]"](name)],$send(h,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:2,$$s:this})}),0),$def(self,"$values_at",(function($a){var $post_args,args,self=this;$post_args=Opal.slice.call(arguments);for(var result=[],i=0,len=(args=$send(args=$post_args,"map",[],(function(arg){return null==arg&&(arg=nil),arg.$$is_range?arg.$to_a():arg}),1).$flatten()).length;i>>1^(1&v?2567483615:0)};function genrand_int32(mt){var y;return--mt.left<=0&&function(mt){var j,p=0,_p=mt.state;for(mt.left=N,mt.next=0,j=228;--j;p++)_p[p]=_p[p+M]^TWIST(_p[p+0],_p[p+1]);for(j=M;--j;p++)_p[p]=_p[p+(M-N)]^TWIST(_p[p+0],_p[p+1]);_p[p]=_p[p+(M-N)]^TWIST(_p[p+0],_p[0])}(mt),y=mt.state[mt.next++],y^=y>>>11,y^=y<<7&2636928640,y^=y<<15&4022730752,(y^=y>>>18)>>>0}return{genrand_real:function(mt){return function(a,b){return(67108864*(a>>>=5)+(b>>>=6))*(1/9007199254740992)}(genrand_int32(mt),genrand_int32(mt))},init:function(s){var mt={left:0,next:N,state:new Array(N)};return function(mt,s){var j;for(mt.state[0]=s>>>0,j=1;j>30>>>0)+j,mt.state[j]&=4294967295;mt.left=1,mt.next=N}(mt,s),mt}}}(),self=$klass("::",null,"Random"),MAX_INT=Number.MAX_SAFE_INTEGER||Math.pow(2,53)-1,$const_set(self,"MERSENNE_TWISTER_GENERATOR",{new_seed:function(){return Math.round(Math.random()*MAX_INT)},reseed:function(seed){return mersenne_twister.init(seed)},rand:function(mt){return mersenne_twister.genrand_real(mt)}}),$writer=[$$$(self,"MERSENNE_TWISTER_GENERATOR")],$send(self,"generator=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]},Opal.modules["corelib/random"]=function(Opal){var self=Opal.top,$$$=(Opal.nil,Opal.$$$),$truthy=Opal.truthy,$klass=Opal.klass,$Kernel=Opal.Kernel,$defs=Opal.defs,$Opal=Opal.Opal,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$send=Opal.send;return Opal.add_stubs("require,attr_reader,to_int,raise,new_seed,coerce_to!,reseed,rand,seed,bytes,===,==,state,_verify_count,encode,join,new,chr,random_number,random_float,const_defined?,const_set"),self.$require("corelib/random/formatter"),function($base,$super){var self=$klass("::",null,"Random");self.$attr_reader("seed","state"),$defs(self,"$_verify_count",(function(count){return $truthy(count)||(count=16),"number"!=typeof count&&(count=count.$to_int()),count<0&&$Kernel.$raise($$$("ArgumentError"),"negative string size (or size too big)"),count=Math.floor(count)}),1),$def(self,"$initialize",(function(seed){return null==seed&&(seed=$$$("Random").$new_seed()),seed=$Opal["$coerce_to!"](seed,$$$("Integer"),"to_int"),this.state=seed,this.$reseed(seed)}),-1),$def(self,"$reseed",(function(seed){return this.seed=seed,this.$rng=Opal.$$rand.reseed(seed)}),1),$defs(self,"$new_seed",(function(){return Opal.$$rand.new_seed()}),0),$defs(self,"$rand",(function(limit){return $$$(this,"DEFAULT").$rand(limit)}),-1),$defs(self,"$srand",(function(n){var previous_seed;return null==n&&(n=$$$("Random").$new_seed()),n=$Opal["$coerce_to!"](n,$$$("Integer"),"to_int"),previous_seed=$$$(this,"DEFAULT").$seed(),$$$(this,"DEFAULT").$reseed(n),previous_seed}),-1),$defs(self,"$urandom",(function(size){return $$$("SecureRandom").$bytes(size)}),1),$def(self,"$==",(function(other){var $ret_or_1;return!!$eqeqeq($$$("Random"),other)&&($truthy($ret_or_1=this.$seed()["$=="](other.$seed()))?this.$state()["$=="](other.$state()):$ret_or_1)}),1),$def(self,"$bytes",(function(length){return length=$$$("Random").$_verify_count(length),$send($$$("Array"),"new",[length],(function $$2(){return(null==$$2.$$s?this:$$2.$$s).$rand(255).$chr()}),{$$arity:0,$$s:this}).$join().$encode("ASCII-8BIT")}),1),$defs(self,"$bytes",(function(length){return $$$(this,"DEFAULT").$bytes(length)}),1),$def(self,"$rand",(function(limit){return this.$random_number(limit)}),-1),$def(self,"$random_float",(function(){return this.state++,Opal.$$rand.rand(this.$rng)}),0),$defs(self,"$random_float",(function(){return $$$(this,"DEFAULT").$random_float()}),0),$defs(self,"$generator=",(function(generator){return Opal.$$rand=generator,$truthy(this["$const_defined?"]("DEFAULT"))?$$$(this,"DEFAULT").$reseed():this.$const_set("DEFAULT",this.$new(this.$new_seed()))}),1)}(),self.$require("corelib/random/mersenne_twister")},Opal.modules["corelib/unsupported"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$Kernel=Opal.Kernel,$klass=Opal.klass,$send=Opal.send,$module=Opal.module,$def=Opal.def,$alias=Opal.alias,$defs=Opal.defs;Opal.add_stubs("raise,warn,each,define_method,%");var warnings={};function handle_unsupported_feature(message){switch(Opal.config.unsupported_features_severity){case"error":$Kernel.$raise($$$("NotImplementedError"),message);break;case"warning":!function(string){if(warnings[string])return;warnings[string]=!0,self.$warn(string)}(message)}}return function($base,$super){var self=$klass("::",null,"String"),ERROR="String#%s not supported. Mutable String methods are not supported in Opal.";$send(["<<","capitalize!","chomp!","chop!","downcase!","gsub!","lstrip!","next!","reverse!","slice!","squeeze!","strip!","sub!","succ!","swapcase!","tr!","tr_s!","upcase!","prepend","[]=","clear","encode!","unicode_normalize!"],"each",[],(function $String$1(method_name){return null==method_name&&(method_name=nil),$send(null==$String$1.$$s?this:$String$1.$$s,"define_method",[method_name],(function($a){return Opal.slice.call(arguments),$Kernel.$raise($$$("NotImplementedError"),ERROR["$%"](method_name))}),-1)}),{$$arity:1,$$s:self})}(),function($base){var self=$module("::","Kernel"),ERROR="Object freezing is not supported by Opal";$def(self,"$freeze",(function(){return handle_unsupported_feature(ERROR),this}),0),$def(self,"$frozen?",(function(){return handle_unsupported_feature(ERROR),!1}),0)}(),function($base){var self=$module("::","Kernel"),ERROR="Object tainting is not supported by Opal";$def(self,"$taint",(function(){return handle_unsupported_feature(ERROR),this}),0),$def(self,"$untaint",(function(){return handle_unsupported_feature(ERROR),this}),0),$def(self,"$tainted?",(function(){return handle_unsupported_feature(ERROR),!1}),0)}(),function($base,$super){var self=$klass("::",null,"Module");$def(self,"$public",(function($a){var methods,self=this;return 0===(methods=Opal.slice.call(arguments)).length?(self.$$module_function=!1,nil):1===methods.length?methods[0]:methods}),-1),$def(self,"$private_class_method",(function($a){var methods;return 1===(methods=Opal.slice.call(arguments)).length?methods[0]:methods}),-1),$def(self,"$private_method_defined?",(function(obj){return!1}),1),$def(self,"$private_constant",(function($a){return Opal.slice.call(arguments),nil}),-1),$alias(self,"nesting","public"),$alias(self,"private","public"),$alias(self,"protected","public"),$alias(self,"protected_method_defined?","private_method_defined?"),$alias(self,"public_class_method","private_class_method"),$alias(self,"public_instance_method","instance_method"),$alias(self,"public_instance_methods","instance_methods"),$alias(self,"public_method_defined?","method_defined?")}(),function($base){var self=$module("::","Kernel");$def(self,"$private_methods",(function($a){return Opal.slice.call(arguments),[]}),-1),$alias(self,"private_instance_methods","private_methods")}(),function($base,$parent_nesting){var self=$module("::","Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$eval",(function($a){return Opal.slice.call(arguments),$Kernel.$raise($$$("NotImplementedError"),"To use Kernel#eval, you must first require 'opal-parser'. See https://github.com/opal/opal/blob/"+$$("RUBY_ENGINE_VERSION")+"/docs/opal_parser.md for details.")}),-1)}(0,[]),$defs(self,"$public",(function($a){var methods;return 1===(methods=Opal.slice.call(arguments)).length?methods[0]:methods}),-1),$defs(self,"$private",(function($a){var methods;return 1===(methods=Opal.slice.call(arguments)).length?methods[0]:methods}),-1)},Opal.queue((function(Opal){Opal.nil;var $Object=Opal.Object;return Opal.add_stubs("require,autoload"),$Object.$require("opal/base"),$Object.$require("opal/mini"),$Object.$require("corelib/kernel/format"),$Object.$require("corelib/string/encoding"),$Object.$autoload("Math","corelib/math"),$Object.$require("corelib/complex/base"),$Object.$autoload("Complex","corelib/complex"),$Object.$require("corelib/rational/base"),$Object.$autoload("Rational","corelib/rational"),$Object.$require("corelib/time"),$Object.$autoload("Struct","corelib/struct"),$Object.$require("corelib/dir"),$Object.$autoload("File","corelib/file"),$Object.$require("corelib/process/base"),$Object.$autoload("Process","corelib/process"),$Object.$autoload("Random","corelib/random"),$Object.$require("corelib/unsupported")})); +(function(global_object){"use strict";var console,nil,BasicObject,_Object,Module,Class,_Opal,Kernel;if("undefined"!=typeof globalThis?global_object=globalThis:"undefined"!=typeof global?global_object=global:"undefined"!=typeof window&&(global_object=window),"log"in(console="object"==typeof global_object.console?global_object.console:null==global_object.console?global_object.console={}:{})||(console.log=function(){}),"warn"in console||(console.warn=console.log),void 0!==global_object.Opal)return console.warn("Opal already loaded. Loading twice can cause troubles, please fix your setup."),global_object.Opal;var Opal=global_object.Opal={};Opal.global=global_object,global_object.Opal=Opal,Opal.config={missing_require_severity:"error",unsupported_features_severity:"warning",experimental_features_severity:"warning",enable_stack_trace:!0};var $has_own=Object.hasOwnProperty,$bind=Function.prototype.bind,$set_proto=Object.setPrototypeOf,$slice=Array.prototype.slice,$splice=Array.prototype.splice,unique_id=4;function $prop(object,name,initialValue){"string"==typeof object?object[name]=initialValue:Object.defineProperty(object,name,{value:initialValue,enumerable:!1,configurable:!0,writable:!0})}Opal.uid=function(){return unique_id+=2},Opal.id=function(obj){return obj.$$is_number?2*obj+1:(null!=obj.$$id||$prop(obj,"$$id",Opal.uid()),obj.$$id)},Opal.gvars={},Opal.exit=function(status){Opal.gvars.DEBUG&&console.log("Exited with status "+status)},Opal.exceptions=[],Opal.pop_exception=function(){var exception=Opal.exceptions.pop();exception?(Opal.gvars["!"]=exception,Opal.gvars["@"]=exception.$backtrace()):Opal.gvars["!"]=Opal.gvars["@"]=nil},Opal.prop=$prop,Opal.defineProperty=Opal.prop,Opal.slice=$slice;var $truthy=Opal.truthy=function(val){return!(!1===val||nil===val||null==val||val instanceof Boolean&&!0!==val.valueOf())};function invoke_tracers_for_class(klass_or_module){var i,ii,tracer;for(i=0,ii=Opal.tracers_for_class.length;i=0;i--){var ancestor=ancestors[i];for(var cvar in ancestor.$$cvars)result[cvar]=ancestor.$$cvars[cvar]}return result},Opal.class_variable_set=function(module,name,value){var i,ancestors=Opal.ancestors(module);for(i=ancestors.length-2;i>=0;i--){var ancestor=ancestors[i];if($has_own.call(ancestor.$$cvars,name))return ancestor.$$cvars[name]=value,value}return module.$$cvars[name]=value,value},Opal.class_variable_get=function(module,name,tolerant){if($has_own.call(module.$$cvars,name))return module.$$cvars[name];var i,ancestors=Opal.ancestors(module),length=ancestors.length;for(i=0;i1||(has_mlhs||has_trailing_comma)&&1===block.length)&&(arg=Opal.to_ary(arg)),(block.length>1||has_trailing_comma&&1===block.length)&&arg.$$is_array?block.apply(null,arg):block(arg)},Opal.yieldX=function(block,args){if("function"!=typeof block)throw Opal.LocalJumpError.$new("no block given");if(block.length>1&&1===args.length&&args[0].$$is_array)return block.apply(null,args[0]);if(!args.$$is_array){for(var args_ary=new Array(args.length),i=0,l=args_ary.length;i=0;k--)if(void 0!==(refinement=refinements[k]).$$refine_modules&&void 0!==(refine_modules=refinement.$$refine_modules)[ancestor]&&void 0!==(refine_module=refine_modules[ancestor]).$$prototype["$"+method])return body=refine_module.$$prototype["$"+method],Opal.send2(recv,body,method,args,block);return Opal.send(recv,method,args,block)},Opal.lambda=function(block,blockopts){return block.$$is_lambda=!0,apply_blockopts(block,blockopts),block},Opal.def=function(obj,jsid,body,blockopts){return apply_blockopts(body,blockopts),obj===Opal.top?Opal.defn(Opal.Object,jsid,body):!obj.$$eval&&obj.$$is_a_module?Opal.defn(obj,jsid,body):Opal.defs(obj,jsid,body)},Opal.defn=function(module,jsid,body){body.displayName=jsid,body.$$owner=module;var name=jsid.substr(1),proto=module.$$prototype;if(proto.hasOwnProperty("$$dummy")&&(proto=proto.$$define_methods_on),$prop(proto,jsid,body),module.$$is_module){module.$$module_function&&Opal.defs(module,jsid,body);for(var i=0,iclasses=module.$$iclasses,length=iclasses.length;i=0,i=0,ii=parts.length;ir:l["$>"](r)},Opal.rb_le=function(l,r){return"number"==typeof l&&"number"==typeof r?l<=r:l["$<="](r)},Opal.rb_ge=function(l,r){return"number"==typeof l&&"number"==typeof r?l>=r:l["$>="](r)},Opal.eqeq=function(lhs,rhs){return"number"==typeof lhs&&"number"==typeof rhs||"string"==typeof lhs&&"string"==typeof rhs?lhs===rhs:$truthy(lhs["$=="](rhs))},Opal.eqeqeq=function(lhs,rhs){return"number"==typeof lhs&&"number"==typeof rhs||"string"==typeof lhs&&"string"==typeof rhs?lhs===rhs:$truthy(lhs["$==="](rhs))},Opal.neqeq=function(lhs,rhs){return"number"==typeof lhs&&"number"==typeof rhs||"string"==typeof lhs&&"string"==typeof rhs?lhs!==rhs:$truthy(lhs["$!="](rhs))},Opal.not=function(arg){return!0!==arg&&(null==arg||!1===arg||nil===arg||$truthy(arg["$!"]()))},Opal.BasicObject=BasicObject=Opal.allocate_class("BasicObject",null),Opal.Object=_Object=Opal.allocate_class("Object",Opal.BasicObject),Opal.Module=Module=Opal.allocate_class("Module",Opal.Object),Opal.Class=Class=Opal.allocate_class("Class",Opal.Module),Opal.Opal=_Opal=Opal.allocate_module("Opal"),Opal.Kernel=Kernel=Opal.allocate_module("Kernel"),$set_proto(Opal.BasicObject,Opal.Class.$$prototype),$set_proto(Opal.Object,Opal.Class.$$prototype),$set_proto(Opal.Module,Opal.Class.$$prototype),$set_proto(Opal.Class,Opal.Class.$$prototype),BasicObject.$$const.BasicObject=BasicObject,$const_set(_Object,"BasicObject",BasicObject),$const_set(_Object,"Object",_Object),$const_set(_Object,"Module",Module),$const_set(_Object,"Class",Class),$const_set(_Object,"Opal",_Opal),$const_set(_Object,"Kernel",Kernel),BasicObject.$$class=Class,_Object.$$class=Class,Module.$$class=Class,Class.$$class=Class,_Opal.$$class=Module,Kernel.$$class=Module,$prop(_Object.$$prototype,"toString",(function(){var to_s=this.$to_s();return to_s.$$is_string&&"object"==typeof to_s?to_s.valueOf():to_s})),$prop(_Object.$$prototype,"$require",Opal.require),Opal.top=new _Object,Opal.top.$to_s=Opal.top.$inspect=function(){return"main"},Opal.top.$define_method=function top_define_method(){var args=Opal.slice.call(arguments),block=top_define_method.$$p;return delete top_define_method.$$p,Opal.send(_Object,"define_method",args,block)},Opal.NilClass=Opal.allocate_class("NilClass",Opal.Object),$const_set(_Object,"NilClass",Opal.NilClass),(nil=Opal.nil=new Opal.NilClass).$$id=4,nil.call=nil.apply=function(){throw Opal.LocalJumpError.$new("no block given")},Opal.breaker=new Error("unexpected break (old)"),Opal.returner=new Error("unexpected return"),TypeError.$$super=Error}).call(this),Opal.loaded(["corelib/runtime.js"]),Opal.modules["corelib/helpers"]=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$type_error=Opal.type_error,$coerce_to=Opal.coerce_to,$module=Opal.module,$defs=Opal.defs,$eqeqeq=Opal.eqeqeq,$Kernel=Opal.Kernel,$truthy=Opal.truthy,$Opal=Opal.Opal;return Opal.add_stubs("===,raise,respond_to?,nil?,__send__,<=>,class,coerce_to!,new,to_s,__id__"),function($base){var self=$module("::","Opal");$defs(self,"$bridge",(function(constructor,klass){return Opal.bridge(constructor,klass)}),2),$defs(self,"$coerce_to!",(function(object,type,method,$a){var $post_args,coerced=nil;return $post_args=Opal.slice.call(arguments,3),coerced=$coerce_to(object,type,method,$post_args),$eqeqeq(type,coerced)||$Kernel.$raise($type_error(object,type,method,coerced)),coerced}),-4),$defs(self,"$coerce_to?",(function(object,type,method,$a){var args,coerced=nil;return args=Opal.slice.call(arguments,3),$truthy(object["$respond_to?"](method))?(coerced=$coerce_to(object,type,method,args),$truthy(coerced["$nil?"]())?nil:($eqeqeq(type,coerced)||$Kernel.$raise($type_error(object,type,method,coerced)),coerced)):nil}),-4),$defs(self,"$try_convert",(function(object,type,method){return $eqeqeq(type,object)?object:$truthy(object["$respond_to?"](method))?object.$__send__(method):nil}),3),$defs(self,"$compare",(function(a,b){var compare;return compare=a["$<=>"](b),$truthy(compare===nil)&&$Kernel.$raise($$$("ArgumentError"),"comparison of "+a.$class()+" with "+b.$class()+" failed"),compare}),2),$defs(self,"$destructure",(function(args){if(1==args.length)return args[0];if(args.$$is_array)return args;for(var args_ary=new Array(args.length),i=0,l=args_ary.length;i=0;i--)method_name=method_names[i],(method=owner_class.$$prototype["$"+method_name])&&!method.$$stub&&(method.$$pristine=!0);return nil}),-2);var inspect_stack=[];return $defs(self,"$inspect",(function(value){var pushed=!1;return function(){try{try{return null===value?"null":void 0===value?"undefined":void 0===value.$$class?Object.prototype.toString.apply(value):"function"!=typeof value.$inspect||value.$inspect.$$stub||-1!==inspect_stack.indexOf(value.$__id__())?"#<"+value.$$class+":0x"+value.$__id__().$to_s(16)+">":(inspect_stack.push(value.$__id__()),pushed=!0,value.$inspect())}catch($err){if(!Opal.rescue($err,[$$$("Exception")]))throw $err;$err;try{return"#<"+value.$$class+":0x"+value.$__id__().$to_s(16)+">"}finally{Opal.pop_exception()}}}finally{pushed&&inspect_stack.pop()}}()}),-1)}()},Opal.modules["corelib/module"]=function(Opal){var self,$proto,nil=Opal.nil,$$$=Opal.$$$,$truthy=Opal.truthy,$coerce_to=Opal.coerce_to,$const_set=Opal.const_set,$Object=Opal.Object,$klass=Opal.klass,$defs=Opal.defs,$send=Opal.send,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$Module=Opal.Module,$Kernel=Opal.Kernel,$rb_lt=Opal.rb_lt,$rb_gt=Opal.rb_gt,$to_a=Opal.to_a,$hash2=Opal.hash2,$Opal=Opal.Opal,$eqeq=Opal.eqeq,$lambda=Opal.lambda,$range=Opal.range,$send2=Opal.send2,$find_super=Opal.find_super,$alias=Opal.alias;return Opal.add_stubs("module_eval,to_proc,===,raise,equal?,<,>,nil?,attr_reader,attr_writer,warn,attr_accessor,const_name?,class_variable_name!,const_name!,=~,new,inject,split,const_get,==,start_with?,!~,bind,call,class,append_features,included,name,cover?,size,merge,compile,proc,any?,prepend_features,prepended,to_s,__id__,constants,include?,copy_class_variables,copy_constants,class_exec,inspect"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Module"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$defs(self,"$allocate",(function(){var module=Opal.allocate_module(nil,(function(){}));return this!==Opal.Module&&Object.setPrototypeOf(module,this.$$prototype),module}),0),$def(self,"$initialize",(function $$initialize(){var block=$$initialize.$$p||nil;return delete $$initialize.$$p,block!==nil?$send(this,"module_eval",[],block.$to_proc()):nil}),0),$def(self,"$===",(function(object){return!$truthy(null==object)&&Opal.is_a(object,this)}),1),$def(self,"$<",(function(other){$eqeqeq($Module,other)||$Kernel.$raise($$$("TypeError"),"compared with non class/module");var ancestors,i,length;if(this===other)return!1;for(i=0,length=(ancestors=Opal.ancestors(this)).length;i",(function(other){return $eqeqeq($Module,other)||$Kernel.$raise($$$("TypeError"),"compared with non class/module"),$rb_lt(other,this)}),1),$def(self,"$>=",(function(other){var $ret_or_1;return $truthy($ret_or_1=this["$equal?"](other))?$ret_or_1:$rb_gt(this,other)}),1),$def(self,"$<=>",(function(other){var lt=nil;return this===other?0:$eqeqeq($Module,other)?(lt=$rb_lt(this,other),$truthy(lt["$nil?"]())?nil:$truthy(lt)?-1:1):nil}),1),$def(self,"$alias_method",(function(newname,oldname){return newname=$coerce_to(newname,$$$("String"),"to_str"),oldname=$coerce_to(oldname,$$$("String"),"to_str"),Opal.alias(this,newname,oldname),this}),2),$def(self,"$alias_native",(function(mid,jsid){return null==jsid&&(jsid=mid),Opal.alias_native(this,mid,jsid),this}),-2),$def(self,"$ancestors",(function(){return Opal.ancestors(this)}),0),$def(self,"$append_features",(function(includer){return Opal.append_features(this,includer),this}),1),$def(self,"$attr_accessor",(function($a){var $post_args,names,self=this;return $post_args=Opal.slice.call(arguments),$send(self,"attr_reader",$to_a(names=$post_args)),$send(self,"attr_writer",$to_a(names))}),-1),$def(self,"$attr",(function($a){var args,self=this;return 2!=(args=Opal.slice.call(arguments)).length||!0!==args[1]&&!1!==args[1]?$send(self,"attr_reader",$to_a(args)):(self.$warn("optional boolean argument is obsoleted",$hash2(["uplevel"],{uplevel:1})),args[1]?self.$attr_accessor(args[0]):self.$attr_reader(args[0]),nil)}),-1),$def(self,"$attr_reader",(function($a){var names,self=this;names=Opal.slice.call(arguments);for(var proto=self.$$prototype,i=names.length-1;i>=0;i--){var name=names[i],id="$"+name,ivar=Opal.ivar(name),body=function(ivar){return function(){return null==this[ivar]?nil:this[ivar]}}(ivar);Opal.prop(proto,ivar,nil),body.$$parameters=[],body.$$arity=0,Opal.defn(self,id,body)}return nil}),-1),$def(self,"$attr_writer",(function($a){var names,self=this;names=Opal.slice.call(arguments);for(var proto=self.$$prototype,i=names.length-1;i>=0;i--){var name=names[i],id="$"+name+"=",ivar=Opal.ivar(name),body=function(ivar){return function(value){return this[ivar]=value}}(ivar);body.$$parameters=[["req"]],body.$$arity=1,Opal.prop(proto,ivar,nil),Opal.defn(self,id,body)}return nil}),-1),$def(self,"$autoload",(function(const$,path){return $$("Opal")["$const_name?"](const$)||$Kernel.$raise($$$("NameError"),"autoload must be constant name: "+const$),""==path&&$Kernel.$raise($$$("ArgumentError"),"empty file name"),this.$$const.hasOwnProperty(const$)||(this.$$autoload||(this.$$autoload={}),Opal.const_cache_version++,this.$$autoload[const$]={path:path,loaded:!1,required:!1,success:!1,exception:!1}),nil}),2),$def(self,"$autoload?",(function(const$){if(this.$$autoload&&this.$$autoload[const$]&&!this.$$autoload[const$].required&&!this.$$autoload[const$].success)return this.$$autoload[const$].path;for(var ancestors=this.$ancestors(),i=0,length=ancestors.length;i=0;i--){var mod=mods[i];mod.$$is_module||$Kernel.$raise($$$("TypeError"),"wrong argument type "+mod.$class()+" (expected Module)"),mod.$append_features(self),mod.$included(self)}return self}),-1),$def(self,"$included_modules",(function(){return Opal.included_modules(this)}),0),$def(self,"$include?",(function(mod){mod.$$is_module||$Kernel.$raise($$$("TypeError"),"wrong argument type "+mod.$class()+" (expected Module)");var i,ii,mod2,ancestors=Opal.ancestors(this);for(i=0,ii=ancestors.length;i=0;i--){var mod=mods[i];mod.$$is_module||$Kernel.$raise($$$("TypeError"),"wrong argument type "+mod.$class()+" (expected Module)"),mod.$prepend_features(self),mod.$prepended(self)}return self}),-1),$def(self,"$prepend_features",(function(prepender){return this.$$is_module||$Kernel.$raise($$$("TypeError"),"wrong argument type "+this.$class()+" (expected Module)"),Opal.prepend_features(this,prepender),this}),1),$def(self,"$prepended",(function(mod){return nil}),1),$def(self,"$remove_const",(function(name){return Opal.const_remove(this,name)}),1),$def(self,"$to_s",(function(){var $ret_or_1;return $truthy($ret_or_1=Opal.Module.$name.call(this))?$ret_or_1:"#<"+(this.$$is_module?"Module":"Class")+":0x"+this.$__id__().$to_s(16)+">"}),0),$def(self,"$undef_method",(function($a){for(var names,self=this,i=0,length=(names=Opal.slice.call(arguments)).length;i":$send2(this,$find_super(this,"inspect",$$inspect,!1,!0),"inspect",[],$yield)}),0)},Opal.modules["corelib/class"]=function(Opal){var self=Opal.top,nil=Opal.nil,$klass=Opal.klass,$send=Opal.send,$defs=Opal.defs,$def=Opal.def,$rb_plus=Opal.rb_plus,$send2=Opal.send2,$find_super=Opal.find_super,$alias=Opal.alias;return Opal.add_stubs("require,class_eval,to_proc,+,subclasses,flatten,map,initialize_copy,allocate,name,to_s"),self.$require("corelib/module"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Class"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $defs(self,"$new",(function $Class_new$1(superclass){var block=$Class_new$1.$$p||nil;if(delete $Class_new$1.$$p,null==superclass&&(superclass=$$("Object")),!superclass.$$is_class)throw Opal.TypeError.$new("superclass must be a Class");var klass=Opal.allocate_class(nil,superclass);return superclass.$inherited(klass),block!==nil&&$send(klass,"class_eval",[],block.$to_proc()),klass}),-1),$def(self,"$allocate",(function(){var obj=new this.$$constructor;return obj.$$id=Opal.uid(),obj}),0),$def(self,"$descendants",(function(){return $rb_plus(this.$subclasses(),$send(this.$subclasses(),"map",[],"descendants".$to_proc()).$flatten())}),0),$def(self,"$inherited",(function(cls){return nil}),1),$def(self,"$initialize_dup",(function(original){this.$initialize_copy(original),this.$$name=null,this.$$full_name=null}),1),$def(self,"$new",(function $Class_new$2($a){var args,block=$Class_new$2.$$p||nil,self=this;delete $Class_new$2.$$p,args=Opal.slice.call(arguments);var object=self.$allocate();return Opal.send(object,object.$initialize,args,block),object}),-1),$def(self,"$subclasses",(function(){if("undefined"!=typeof WeakRef){var i,subclass,out=[];for(i=0;i":singleton_of?"#>":$send2(this,$find_super(this,"to_s",$$to_s,!1,!0),"to_s",[],null)}),0),$alias(self,"inspect","to_s")}(0,0,[])},Opal.modules["corelib/basic_object"]=function(Opal){"use strict";var self,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$def=Opal.def,$alias=Opal.alias,$truthy=Opal.truthy,$range=Opal.range,$Kernel=Opal.Kernel,$to_a=Opal.to_a,$hash2=Opal.hash2,$Opal=Opal.Opal,$send=Opal.send,$eqeq=Opal.eqeq,$rb_ge=Opal.rb_ge;return Opal.add_stubs("==,raise,inspect,!,nil?,cover?,size,merge,compile,proc,[],first,>=,length,instance_variable_get,any?,new,caller,pristine"),self=$klass("::",null,"BasicObject"),$def(self,"$initialize",(function($a){return Opal.slice.call(arguments),nil}),-1),$def(self,"$==",(function(other){return this===other}),1),$def(self,"$eql?",(function(other){return this["$=="](other)}),1),$alias(self,"equal?","=="),$def(self,"$__id__",(function(){return null!=this.$$id||Opal.prop(this,"$$id",Opal.uid()),this.$$id}),0),$def(self,"$__send__",(function $$__send__(symbol,$a){var args,block=$$__send__.$$p||nil,self=this;delete $$__send__.$$p,args=Opal.slice.call(arguments,1),symbol.$$is_string||self.$raise($$$("TypeError"),self.$inspect()+" is not a symbol nor a string");var func=self["$"+symbol];return func?(block!==nil&&(func.$$p=block),func.apply(self,args)):(block!==nil&&(self.$method_missing.$$p=block),self.$method_missing.apply(self,[symbol].concat(args)))}),-2),$def(self,"$!",(function(){return!1}),0),$def(self,"$!=",(function(other){return this["$=="](other)["$!"]()}),1),$def(self,"$instance_eval",(function $$instance_eval($a){var args,$b,block=$$instance_eval.$$p||nil,self=this,string=nil,file=nil,default_eval_options=nil,$ret_or_1=nil,compiling_options=nil,compiled=nil;if(delete $$instance_eval.$$p,args=Opal.slice.call(arguments),$truthy(block["$nil?"]())&&$truthy(!!Opal.compile))$truthy($range(1,3,!1)["$cover?"](args.$size()))||$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments (0 for 1..3)"),string=null==($b=[].concat($to_a(args)))[0]?nil:$b[0],file=null==$b[1]?nil:$b[1],null==$b[2]||$b[2],default_eval_options=$hash2(["file","eval"],{file:$truthy($ret_or_1=file)?$ret_or_1:"(eval)",eval:!0}),compiling_options=Opal.hash({arity_check:!1}).$merge(default_eval_options),compiled=$Opal.$compile(string,compiling_options),block=$send($Kernel,"proc",[],(function $$5(){var self=null==$$5.$$s?this:$$5.$$s;return new Function("Opal,self","return "+compiled)(Opal,self)}),{$$arity:0,$$s:self});else{if($truthy(block["$nil?"]())&&$truthy($rb_ge(args.$length(),1))&&$eqeq(args.$first()["$[]"](0),"@"))return self.$instance_variable_get(args.$first());$truthy(args["$any?"]())&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+args.$size()+" for 0)")}var result,old=block.$$s;if(block.$$s=null,self.$$is_a_module){self.$$eval=!0;try{result=block.call(self,self)}finally{self.$$eval=!1}}else result=block.call(self,self);return block.$$s=old,result}),-1),$def(self,"$instance_exec",(function $$instance_exec($a){var args,block=$$instance_exec.$$p||nil,self=this;delete $$instance_exec.$$p,args=Opal.slice.call(arguments),$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"no block given");var result,block_self=block.$$s;if(block.$$s=null,self.$$is_a_module){self.$$eval=!0;try{result=block.apply(self,args)}finally{self.$$eval=!1}}else result=block.apply(self,args);return block.$$s=block_self,result}),-1),$def(self,"$singleton_method_added",(function($a){return Opal.slice.call(arguments),nil}),-1),$def(self,"$singleton_method_removed",(function($a){return Opal.slice.call(arguments),nil}),-1),$def(self,"$singleton_method_undefined",(function($a){return Opal.slice.call(arguments),nil}),-1),$def(self,"$method_missing",(function $$method_missing(symbol,$a){var args,self=this,inspect_result=nil;return delete $$method_missing.$$p,args=Opal.slice.call(arguments,1),inspect_result=$Opal.$inspect(self),$Kernel.$raise($$$("NoMethodError").$new("undefined method `"+symbol+"' for "+inspect_result,symbol,args),nil,$Kernel.$caller(1))}),-2),$Opal.$pristine(self,"method_missing"),$def(self,"$respond_to_missing?",(function(method_name,include_all){return null==include_all&&(include_all=!1),!1}),-2)},Opal.modules["corelib/kernel"]=function(Opal){"use strict";var self,nil=Opal.nil,$$$=Opal.$$$,$truthy=Opal.truthy,$coerce_to=Opal.coerce_to,$respond_to=Opal.respond_to,$Opal=Opal.Opal,$module=Opal.module,$def=Opal.def,$Kernel=Opal.Kernel,$gvars=Opal.gvars,$hash2=Opal.hash2,$send=Opal.send,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$eqeq=Opal.eqeq,$eqeqeq=Opal.eqeqeq,$rb_le=Opal.rb_le,$rb_lt=Opal.rb_lt,$Object=Opal.Object,$alias=Opal.alias,$klass=Opal.klass;return Opal.add_stubs("!,=~,==,object_id,raise,new,class,coerce_to?,<<,allocate,copy_instance_variables,copy_singleton_methods,initialize_clone,initialize_copy,define_method,singleton_class,to_proc,initialize_dup,for,empty?,pop,call,append_features,extend_object,extended,gets,__id__,include?,each,instance_variables,instance_variable_get,inspect,+,to_s,instance_variable_name!,respond_to?,to_int,coerce_to!,Integer,nil?,===,enum_for,result,any?,print,format,puts,<=,length,[],readline,<,first,split,caller,map,to_str,exception,backtrace,rand,respond_to_missing?,pristine,try_convert!,expand_path,join,start_with?,new_seed,srand,tag,value,open,include"),function($base,$parent_nesting){var self=$module("::","Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$=~",(function(obj){return!1}),1),$def(self,"$!~",(function(obj){return this["$=~"](obj)["$!"]()}),1),$def(self,"$===",(function(other){var $ret_or_1;return $truthy($ret_or_1=this.$object_id()["$=="](other.$object_id()))?$ret_or_1:this["$=="](other)}),1),$def(self,"$<=>",(function(other){this.$$comparable=!0;var x=this["$=="](other);return x&&x!==nil?0:nil}),1),$def(self,"$method",(function(name){var meth=this["$"+name];return meth&&!meth.$$stub||$Kernel.$raise($$$("NameError").$new("undefined method `"+name+"' for class `"+this.$class()+"'",name)),$$$("Method").$new(this,meth.$$owner||this.$class(),meth,name)}),1),$def(self,"$methods",(function(all){return null==all&&(all=!0),$truthy(all)?Opal.methods(this):Opal.own_methods(this)}),-1),$def(self,"$public_methods",(function(all){return null==all&&(all=!0),$truthy(all)?Opal.methods(this):Opal.receiver_methods(this)}),-1),$def(self,"$Array",(function(object){var coerced;return object===nil?[]:object.$$is_array?object:(coerced=$Opal["$coerce_to?"](object,$$$("Array"),"to_ary"))!==nil||(coerced=$Opal["$coerce_to?"](object,$$$("Array"),"to_a"))!==nil?coerced:[object]}),1),$def(self,"$at_exit",(function $$at_exit(){var $ret_or_1,block=$$at_exit.$$p||nil;return null==$gvars.__at_exit__&&($gvars.__at_exit__=nil),delete $$at_exit.$$p,$gvars.__at_exit__=$truthy($ret_or_1=$gvars.__at_exit__)?$ret_or_1:[],$gvars.__at_exit__["$<<"](block),block}),0),$def(self,"$caller",(function(start,length){var stack,result;null==start&&(start=1),null==length&&(length=nil),result=[];for(var i=start+1,ii=(stack=(new Error).$backtrace()).length;i0&&(method=$post_args.shift()),null==method&&(method="each"),args=$post_args,$send($$$("Enumerator"),"for",[self,method].concat($to_a(args)),block.$to_proc())}),-1),$def(self,"$equal?",(function(other){return this===other}),1),$def(self,"$exit",(function(status){var $ret_or_1;for(null==$gvars.__at_exit__&&($gvars.__at_exit__=nil),null==status&&(status=!0),$gvars.__at_exit__=$truthy($ret_or_1=$gvars.__at_exit__)?$ret_or_1:[];!$truthy($gvars.__at_exit__["$empty?"]());)$gvars.__at_exit__.$pop().$call();return status=status.$$is_boolean?status?0:1:$coerce_to(status,$$$("Integer"),"to_int"),Opal.exit(status),nil}),-1),$def(self,"$extend",(function($a){var mods,self=this;mods=Opal.slice.call(arguments);for(var singleton=self.$singleton_class(),i=mods.length-1;i>=0;i--){var mod=mods[i];mod.$$is_module||$Kernel.$raise($$$("TypeError"),"wrong argument type "+mod.$class()+" (expected Module)"),mod.$append_features(singleton),mod.$extend_object(self),mod.$extended(self)}return self}),-1),$def(self,"$gets",(function($a){var args;return null==$gvars.stdin&&($gvars.stdin=nil),args=Opal.slice.call(arguments),$send($gvars.stdin,"gets",$to_a(args))}),-1),$def(self,"$hash",(function(){return this.$__id__()}),0),$def(self,"$initialize_copy",(function(other){return nil}),1);var inspect_stack=[];$def(self,"$inspect",(function(){var self=this,ivs=nil,id=nil,pushed=nil;return function(){try{try{return ivs="",id=self.$__id__(),$truthy(inspect_stack["$include?"](id))?ivs=" ...":(inspect_stack["$<<"](id),pushed=!0,$send(self.$instance_variables(),"each",[],(function $$7(i){var ivar,inspect;return null==i&&(i=nil),ivar=(null==$$7.$$s?this:$$7.$$s).$instance_variable_get(i),inspect=$$("Opal").$inspect(ivar),ivs=$rb_plus(ivs," "+i+"="+inspect)}),{$$arity:1,$$s:self})),"#<"+self.$class()+":0x"+id.$to_s(16)+ivs+">"}catch($err){if(!Opal.rescue($err,[$$("StandardError")]))throw $err;$err;try{return"#<"+self.$class()+":0x"+id.$to_s(16)+">"}finally{Opal.pop_exception()}}}finally{$truthy(pushed)&&inspect_stack.$pop()}}()}),0),$def(self,"$instance_of?",(function(klass){return klass.$$is_class||klass.$$is_module||$Kernel.$raise($$$("TypeError"),"class or module required"),this.$$class===klass}),1),$def(self,"$instance_variable_defined?",(function(name){return name=$Opal["$instance_variable_name!"](name),Opal.hasOwnProperty.call(this,name.substr(1))}),1),$def(self,"$instance_variable_get",(function(name){name=$Opal["$instance_variable_name!"](name);var ivar=this[Opal.ivar(name.substr(1))];return null==ivar?nil:ivar}),1),$def(self,"$instance_variable_set",(function(name,value){return name=$Opal["$instance_variable_name!"](name),this[Opal.ivar(name.substr(1))]=value}),2),$def(self,"$remove_instance_variable",(function(name){name=$Opal["$instance_variable_name!"](name);var val,key=Opal.ivar(name.substr(1));return this.hasOwnProperty(key)?(val=this[key],delete this[key],val):$Kernel.$raise($$$("NameError"),"instance variable "+name+" not defined")}),1),$def(self,"$instance_variables",(function(){var ivar,result=[];for(var name in this)this.hasOwnProperty(name)&&"$"!==name.charAt(0)&&(ivar="$"===name.substr(-1)?name.slice(0,name.length-1):name,result.push("@"+ivar));return result}),0),$def(self,"$Integer",(function(value,base){var i,str,base_digits;return value.$$is_string?"0"===value?0:(void 0===base?base=0:(1===(base=$coerce_to(base,$$$("Integer"),"to_int"))||base<0||base>36)&&$Kernel.$raise($$$("ArgumentError"),"invalid radix "+base),str=(str=(str=value.toLowerCase()).replace(/(\d)_(?=\d)/g,"$1")).replace(/^(\s*[+-]?)(0[bodx]?)/,(function(_,head,flag){switch(flag){case"0b":if(0===base||2===base)return base=2,head;case"0":case"0o":if(0===base||8===base)return base=8,head;case"0d":if(0===base||10===base)return base=10,head;case"0x":if(0===base||16===base)return base=16,head}$Kernel.$raise($$$("ArgumentError"),'invalid value for Integer(): "'+value+'"')})),base_digits="0-"+((base=0===base?10:base)<=10?base-1:"9a-"+String.fromCharCode(base-11+97)),new RegExp("^\\s*[+-]?["+base_digits+"]+\\s*$").test(str)||$Kernel.$raise($$$("ArgumentError"),'invalid value for Integer(): "'+value+'"'),i=parseInt(str,base),isNaN(i)&&$Kernel.$raise($$$("ArgumentError"),'invalid value for Integer(): "'+value+'"'),i):(void 0!==base&&$Kernel.$raise($$$("ArgumentError"),"base specified for non string value"),value===nil&&$Kernel.$raise($$$("TypeError"),"can't convert nil into Integer"),value.$$is_number?((value===1/0||value===-1/0||isNaN(value))&&$Kernel.$raise($$$("FloatDomainError"),value),Math.floor(value)):value["$respond_to?"]("to_int")&&(i=value.$to_int())!==nil?i:$Opal["$coerce_to!"](value,$$$("Integer"),"to_i"))}),-2),$def(self,"$Float",(function(value){var str;return value===nil&&$Kernel.$raise($$$("TypeError"),"can't convert nil into Float"),value.$$is_string?(str=(str=value.toString()).replace(/(\d)_(?=\d)/g,"$1"),/^\s*[-+]?0[xX][0-9a-fA-F]+\s*$/.test(str)?$Kernel.$Integer(str):(/^\s*[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?\s*$/.test(str)||$Kernel.$raise($$$("ArgumentError"),'invalid value for Float(): "'+value+'"'),parseFloat(str))):$Opal["$coerce_to!"](value,$$$("Float"),"to_f")}),1),$def(self,"$Hash",(function(arg){return $truthy(arg["$nil?"]())||$eqeq(arg,[])?$hash2([],{}):$eqeqeq($$$("Hash"),arg)?arg:$Opal["$coerce_to!"](arg,$$$("Hash"),"to_hash")}),1),$def(self,"$is_a?",(function(klass){return klass.$$is_class||klass.$$is_module||$Kernel.$raise($$$("TypeError"),"class or module required"),Opal.is_a(this,klass)}),1),$def(self,"$itself",(function(){return this}),0),$def(self,"$lambda",(function $$lambda(){var block=$$lambda.$$p||nil;return delete $$lambda.$$p,Opal.lambda(block)}),0),$def(self,"$load",(function(file){return file=$Opal["$coerce_to!"](file,$$$("String"),"to_str"),Opal.load(file)}),1),$def(self,"$loop",(function $$loop(){var $yield=$$loop.$$p||nil,e=nil;if(delete $$loop.$$p,$yield===nil)return $send(this,"enum_for",["loop"],(function(){return $$$($$$("Float"),"INFINITY")}),0);for(;$truthy(!0);)try{Opal.yieldX($yield,[])}catch($err){if(!Opal.rescue($err,[$$$("StopIteration")]))throw $err;e=$err;try{return e.$result()}finally{Opal.pop_exception()}}return this}),0),$def(self,"$nil?",(function(){return!1}),0),$def(self,"$printf",(function($a){var $post_args,args,self=this;return $post_args=Opal.slice.call(arguments),$truthy((args=$post_args)["$any?"]())&&self.$print($send(self,"format",$to_a(args))),nil}),-1),$def(self,"$proc",(function $$proc(){var block=$$proc.$$p||nil;return delete $$proc.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to create Proc object without a block"),block.$$is_lambda=!1,block}),0),$def(self,"$puts",(function($a){var strs;return null==$gvars.stdout&&($gvars.stdout=nil),strs=Opal.slice.call(arguments),$send($gvars.stdout,"puts",$to_a(strs))}),-1),$def(self,"$p",(function($a){var $post_args,args;return $post_args=Opal.slice.call(arguments),$send(args=$post_args,"each",[],(function(obj){return null==$gvars.stdout&&($gvars.stdout=nil),null==obj&&(obj=nil),$gvars.stdout.$puts(obj.$inspect())}),1),$truthy($rb_le(args.$length(),1))?args["$[]"](0):args}),-1),$def(self,"$print",(function($a){var strs;return null==$gvars.stdout&&($gvars.stdout=nil),strs=Opal.slice.call(arguments),$send($gvars.stdout,"print",$to_a(strs))}),-1),$def(self,"$readline",(function($a){var args;return null==$gvars.stdin&&($gvars.stdin=nil),args=Opal.slice.call(arguments),$send($gvars.stdin,"readline",$to_a(args))}),-1),$def(self,"$warn",(function($a,$b){var $post_args,$kwargs,strs,uplevel,$c,$d,self=this,location=nil;if(null==$gvars.VERBOSE&&($gvars.VERBOSE=nil),null==$gvars.stderr&&($gvars.stderr=nil),$post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return strs=$post_args,null==(uplevel=$kwargs.$$smap.uplevel)&&(uplevel=nil),$truthy(uplevel)&&(uplevel=$Opal["$coerce_to!"](uplevel,$$$("Integer"),"to_str"),$truthy($rb_lt(uplevel,0))&&$Kernel.$raise($$$("ArgumentError"),"negative level ("+uplevel+")"),$d=($c=self.$caller($rb_plus(uplevel,1),1).$first())===nil||null==$c?nil:$send($c,"split",[":in `"]),location=$d===nil||null==$d?nil:$send($d,"first",[]),$truthy(location)&&(location+=": "),strs=$send(strs,"map",[],(function(s){return null==s&&(s=nil),location+"warning: "+s}),1)),$truthy($gvars.VERBOSE["$nil?"]())||$truthy(strs["$empty?"]())?nil:$send($gvars.stderr,"puts",$to_a(strs))}),-1),$def(self,"$raise",(function(exception,string,backtrace){if(null==$gvars["!"]&&($gvars["!"]=nil),null==$gvars["@"]&&($gvars["@"]=nil),null==string&&(string=nil),null==backtrace&&(backtrace=nil),null==exception&&$gvars["!"]!==nil)throw $gvars["!"];throw null==exception?exception=$$$("RuntimeError").$new(""):$respond_to(exception,"$to_str")?exception=$$$("RuntimeError").$new(exception.$to_str()):exception.$$is_class&&$respond_to(exception,"$exception")?exception=exception.$exception(string):exception.$$is_exception||(exception=$$$("TypeError").$new("exception class/object expected")),backtrace!==nil&&exception.$set_backtrace(backtrace),$gvars["!"]!==nil&&Opal.exceptions.push($gvars["!"]),$gvars["!"]=exception,$gvars["@"]=exception.$backtrace(),exception}),-1),$def(self,"$rand",(function(max){return void 0===max?$$$($$$("Random"),"DEFAULT").$rand():(max.$$is_number&&(max<0&&(max=Math.abs(max)),max%1!=0&&(max=max.$to_i()),0===max&&(max=void 0)),$$$($$$("Random"),"DEFAULT").$rand(max))}),-1),$def(self,"$respond_to?",(function(name,include_all){null==include_all&&(include_all=!1);var body=this["$"+name];return"function"==typeof body&&!body.$$stub||!0!==this["$respond_to_missing?"].$$pristine&&this["$respond_to_missing?"](name,include_all)}),-2),$def(self,"$respond_to_missing?",(function(method_name,include_all){return null==include_all&&(include_all=!1),!1}),-2),$Opal.$pristine(self,"respond_to?","respond_to_missing?"),$def(self,"$require",(function(file){return"string"!=typeof file&&Opal.String&&Opal.Array&&(file=$Opal["$coerce_to!"](file,$$$("String"),"to_str")),Opal.require(file)}),1),$def(self,"$require_relative",(function(file){return $Opal["$try_convert!"](file,$$$("String"),"to_str"),file=$$$("File").$expand_path($$$("File").$join(Opal.current_file,"..",file)),Opal.require(file)}),1),$def(self,"$require_tree",(function(path,$kwargs){var autoload;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");null==(autoload=$kwargs.$$smap.autoload)&&(autoload=!1);var result=[];for(var name in path=$$$("File").$expand_path(path),"."===(path=Opal.normalize(path))&&(path=""),Opal.modules)name["$start_with?"](path)&&(autoload?result.push([name,!0]):result.push([name,Opal.require(name)]));return result}),-2),$def(self,"$singleton_class",(function(){return Opal.get_singleton_class(this)}),0),$def(self,"$sleep",(function(seconds){null==seconds&&(seconds=nil),seconds===nil&&$Kernel.$raise($$$("TypeError"),"can't convert NilClass into time interval"),seconds.$$is_number||$Kernel.$raise($$$("TypeError"),"can't convert "+seconds.$class()+" into time interval"),seconds<0&&$Kernel.$raise($$$("ArgumentError"),"time interval must be positive");for(var get_time=Opal.global.performance?function(){return performance.now()}:function(){return new Date},t=get_time();get_time()-t<=1e3*seconds;);return Math.round(seconds)}),-1),$def(self,"$srand",(function(seed){return null==seed&&(seed=$$("Random").$new_seed()),$$$("Random").$srand(seed)}),-1),$def(self,"$String",(function(str){var $ret_or_1;return $truthy($ret_or_1=$Opal["$coerce_to?"](str,$$$("String"),"to_str"))?$ret_or_1:$Opal["$coerce_to!"](str,$$$("String"),"to_s")}),1),$def(self,"$tap",(function $$tap(){var block=$$tap.$$p||nil;return delete $$tap.$$p,Opal.yield1(block,this),this}),0),$def(self,"$to_proc",(function(){return this}),0),$def(self,"$to_s",(function(){return"#<"+this.$class()+":0x"+this.$__id__().$to_s(16)+">"}),0),$def(self,"$catch",(function $Kernel_catch$17(tag){var $yield=$Kernel_catch$17.$$p||nil,$ret_or_1=nil,e=nil;delete $Kernel_catch$17.$$p,null==tag&&(tag=nil);try{return tag=$truthy($ret_or_1=tag)?$ret_or_1:$Object.$new(),Opal.yield1($yield,tag)}catch($err){if(!Opal.rescue($err,[$$$("UncaughtThrowError")]))throw $err;e=$err;try{return $eqeq(e.$tag(),tag)?e.$value():$Kernel.$raise()}finally{Opal.pop_exception()}}}),-1),$def(self,"$throw",(function(tag,obj){return null==obj&&(obj=nil),$Kernel.$raise($$$("UncaughtThrowError").$new(tag,obj))}),-2),$def(self,"$open",(function $$open($a){var args,block=$$open.$$p||nil;return delete $$open.$$p,args=Opal.slice.call(arguments),$send($$$("File"),"open",$to_a(args),block.$to_proc())}),-1),$def(self,"$yield_self",(function $$yield_self(){var $yield=$$yield_self.$$p||nil;return delete $$yield_self.$$p,$yield===nil?$send(this,"enum_for",["yield_self"],(function(){return 1}),0):Opal.yield1($yield,this)}),0),$alias(self,"fail","raise"),$alias(self,"kind_of?","is_a?"),$alias(self,"object_id","__id__"),$alias(self,"public_send","__send__"),$alias(self,"send","__send__"),$alias(self,"then","yield_self"),$alias(self,"to_enum","enum_for")}(0,[]),self=$klass("::",null,"Object"),delete $Object.$$prototype.$require,self.$include($Kernel)},Opal.modules["corelib/main"]=function(Opal){var self=Opal.top,$def=(Opal.nil,Opal.def),$Object=Opal.Object,$Kernel=Opal.Kernel;return Opal.add_stubs("include,raise"),function(self,$parent_nesting){return $def(self,"$to_s",(function(){return"main"}),0),$def(self,"$include",(function(mod){return $Object.$include(mod)}),1),$def(self,"$autoload",(function($a){var args;return args=Opal.slice.call(arguments),Opal.Object.$autoload.apply(Opal.Object,args)}),-1),$def(self,"$using",(function(mod){return $Kernel.$raise("main.using is permitted only at toplevel")}),1)}(Opal.get_singleton_class(self))},Opal.modules["corelib/error/errno"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$module=Opal.module,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$klass=Opal.klass;return Opal.add_stubs("+,errno,class,attr_reader"),function($base,$parent_nesting){var errors,i,self=$module("::","Errno"),klass=([self].concat($parent_nesting),nil);for(errors=[["EINVAL","Invalid argument",22],["EEXIST","File exists",17],["EISDIR","Is a directory",21],["EMFILE","Too many open files",24],["EACCES","Permission denied",13],["EPERM","Operation not permitted",1],["ENOENT","No such file or directory",2]],klass=nil,i=0;i0?args[0]:nil,error=new self.$$constructor(message);return error.name=self.$$name,error.message=message,error.cause=$gvars["!"],Opal.send(error,error.$initialize,args),Opal.config.enable_stack_trace&&Error.captureStackTrace&&Error.captureStackTrace(error,stack_trace_limit),error}),-1),stack_trace_limit=self.$new,$defs(self,"$exception",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send(self,"new",$to_a($post_args))}),-1),$def(self,"$initialize",(function($a){var args,self=this;return args=Opal.slice.call(arguments),self.message=args.length>0?args[0]:nil}),-1),$def(self,"$backtrace",(function(){if(this.backtrace)return this.backtrace;var backtrace=this.stack;return void 0!==backtrace&&backtrace.$$is_string?this.backtrace=correct_backtrace(backtrace.split("\n").slice(0,15)):backtrace?this.backtrace=correct_backtrace(backtrace.slice(0,15)):[]}),0),$def(self,"$backtrace_locations",(function(){var $a;return this.backtrace_locations||(this.backtrace_locations=($a=this.$backtrace())===nil||null==$a?nil:$send($a,"map",[],(function(loc){return null==loc&&(loc=nil),$$$($$$($$$("Thread"),"Backtrace"),"Location").$new(loc)}),1)),this.backtrace_locations}),0),$def(self,"$cause",(function(){return this.cause||nil}),0),$def(self,"$exception",(function(str){if(null==str&&(str=nil),str===nil||this===str)return this;var cloned=this.$clone();return cloned.message=str,this.backtrace&&(cloned.backtrace=this.backtrace.$dup()),cloned.stack=this.stack,cloned.cause=this.cause,cloned}),-1),$def(self,"$message",(function(){return this.$to_s()}),0),$def(self,"$full_message",(function(kwargs){var $b,$ret_or_1,highlight,order,first,bold_underline=nil,bold=nil,reset=nil,bt=nil,msg=nil;return null==$gvars.stderr&&($gvars.stderr=nil),null==kwargs&&(kwargs=nil),$truthy($$("Hash","skip_raise")?"constant":nil)?(order=($b=[(kwargs=$hash2(["highlight","order"],{highlight:$gvars.stderr["$tty?"](),order:"top"}).$merge($truthy($ret_or_1=kwargs)?$ret_or_1:$hash2([],{})))["$[]"]("highlight"),kwargs["$[]"]("order")])[1],$truthy([!0,!1]["$include?"](highlight=$b[0]))||$Kernel.$raise($$$("ArgumentError"),"expected true or false as highlight: "+highlight),$truthy(["top","bottom"]["$include?"](order))||$Kernel.$raise($$$("ArgumentError"),"expected :top or :bottom as order: "+order),$truthy(highlight)?(bold_underline="",bold="",reset=""):bold_underline=bold=reset="",bt=this.$backtrace().$dup(),($not(bt)||$truthy(bt["$empty?"]()))&&(bt=this.$caller()),first=bt.$shift(),msg=$rb_plus(msg=first+": ",""+bold+this.$to_s()+" ("+bold_underline+this.$class()+reset+bold+")"+reset+"\n"),msg=$rb_plus(msg,$send(bt,"map",[],(function(loc){return null==loc&&(loc=nil),"\tfrom "+loc+"\n"}),1).$join()),$truthy(this.$cause())&&(msg=$rb_plus(msg,this.$cause().$full_message($hash2(["highlight"],{highlight:highlight})))),$eqeq(order,"bottom")&&(msg=msg.$split("\n").$reverse().$join("\n"),msg=$rb_plus(bold+"Traceback"+reset+" (most recent call last):\n",msg)),msg):this.message+"\n"+this.stack}),-1),$def(self,"$inspect",(function(){var as_str=nil;return as_str=this.$to_s(),$truthy(as_str["$empty?"]())?this.$class().$to_s():"#<"+this.$class().$to_s()+": "+this.$to_s()+">"}),0),$def(self,"$set_backtrace",(function(backtrace){var i,ii,valid=!0;if(backtrace===nil)this.backtrace=nil,this.stack="";else if(backtrace.$$is_string)this.backtrace=[backtrace],this.stack=" from "+backtrace;else{if(backtrace.$$is_array){for(i=0,ii=backtrace.length;i,length,Rational"),function($base,$super,$parent_nesting){var self=$klass("::",null,"NilClass");[self].concat($parent_nesting);return self.$$prototype.$$meta=self,function(self,$parent_nesting){$def(self,"$allocate",(function(){return $Kernel.$raise($$$("TypeError"),"allocator undefined for "+this.$name())}),0),Opal.udef(self,"$new")}(Opal.get_singleton_class(self)),$def(self,"$!",(function(){return!0}),0),$def(self,"$&",(function(other){return!1}),1),$def(self,"$|",(function(other){return!1!==other&&other!==nil}),1),$def(self,"$^",(function(other){return!1!==other&&other!==nil}),1),$def(self,"$==",(function(other){return other===nil}),1),$def(self,"$dup",(function(){return nil}),0),$def(self,"$clone",(function($kwargs){if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==$kwargs.$$smap.freeze&&!0,nil}),-1),$def(self,"$inspect",(function(){return"nil"}),0),$def(self,"$nil?",(function(){return!0}),0),$def(self,"$singleton_class",(function(){return $NilClass}),0),$def(self,"$to_a",(function(){return[]}),0),$def(self,"$to_h",(function(){return Opal.hash()}),0),$def(self,"$to_i",(function(){return 0}),0),$def(self,"$to_s",(function(){return""}),0),$def(self,"$to_c",(function(){return $$$("Complex").$new(0,0)}),0),$def(self,"$rationalize",(function($a){var $post_args;return $post_args=Opal.slice.call(arguments),$truthy($rb_gt($post_args.$length(),1))&&$Kernel.$raise($$$("ArgumentError")),$Kernel.$Rational(0,1)}),-1),$def(self,"$to_r",(function(){return $Kernel.$Rational(0,1)}),0),$def(self,"$instance_variables",(function(){return[]}),0),$alias(self,"to_f","to_i")}(0,0,[])},Opal.modules["corelib/boolean"]=function(Opal){"use strict";var nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$Kernel=Opal.Kernel,$def=Opal.def,$hash2=Opal.hash2,$truthy=Opal.truthy,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$alias=Opal.alias;return Opal.add_stubs("raise,name"),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Boolean");[self].concat($parent_nesting);Opal.prop(self.$$prototype,"$$is_boolean",!0);for(var properties=["$$class","$$meta"],i=0;i,<,===,raise,class,<=>,equal?"),function($base){var self=$module("::","Comparable"),$ret_or_1=nil;function normalize(what){return Opal.is_a(what,Opal.Integer)?what:$rb_gt(what,0)?1:$rb_lt(what,0)?-1:0}function cmp_or_fail(lhs,rhs){var cmp=lhs["$<=>"](rhs);return $truthy(cmp)||function(lhs,rhs){var class_name;class_name=$eqeqeq(nil,$ret_or_1=rhs)||$eqeqeq(!0,$ret_or_1)||$eqeqeq(!1,$ret_or_1)||$eqeqeq($$$("Integer"),$ret_or_1)||$eqeqeq($$$("Float"),$ret_or_1)?rhs.$inspect():rhs.$$class,$Kernel.$raise($$$("ArgumentError"),"comparison of "+lhs.$class()+" with "+class_name+" failed")}(lhs,rhs),normalize(cmp)}return $def(self,"$==",(function(other){var cmp;return!!$truthy(this["$equal?"](other))||this["$<=>"]!=Opal.Kernel["$<=>"]&&(this.$$comparable?(delete this.$$comparable,!1):!!$truthy(cmp=this["$<=>"](other))&&0==normalize(cmp))}),1),$def(self,"$>",(function(other){return cmp_or_fail(this,other)>0}),1),$def(self,"$>=",(function(other){return cmp_or_fail(this,other)>=0}),1),$def(self,"$<",(function(other){return cmp_or_fail(this,other)<0}),1),$def(self,"$<=",(function(other){return cmp_or_fail(this,other)<=0}),1),$def(self,"$between?",(function(min,max){return!$rb_lt(this,min)&&!$rb_gt(this,max)}),2),$def(self,"$clamp",(function(min,max){var c,excl;if(null==max&&(max=nil),max===nil&&(Opal.is_a(min,Opal.Range)||$Kernel.$raise($$$("TypeError"),"wrong argument type "+min.$class()+" (expected Range)"),excl=min.excl,max=min.end,min=min.begin,max!==nil&&excl&&$Kernel.$raise($$$("ArgumentError"),"cannot clamp with an exclusive range")),min!==nil&&max!==nil&&cmp_or_fail(min,max)>0&&$Kernel.$raise($$$("ArgumentError"),"min argument must be smaller than max argument"),min!==nil){if(0==(c=cmp_or_fail(this,min)))return this;if(c<0)return min}return max!==nil&&(c=cmp_or_fail(this,max))>0?max:this}),-2)}()},Opal.modules["corelib/regexp"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$coerce_to=Opal.coerce_to,$klass=Opal.klass,$const_set=Opal.const_set,$send2=Opal.send2,$find_super=Opal.find_super,$def=Opal.def,$truthy=Opal.truthy,$gvars=Opal.gvars,$Kernel=Opal.Kernel,$Opal=Opal.Opal,$alias=Opal.alias,$send=Opal.send,$hash2=Opal.hash2,$rb_plus=Opal.rb_plus,$rb_ge=Opal.rb_ge,$to_a=Opal.to_a,$eqeqeq=Opal.eqeqeq,$rb_minus=Opal.rb_minus;return Opal.add_stubs("nil?,[],raise,escape,options,to_str,new,join,coerce_to!,!,match,coerce_to?,begin,uniq,map,scan,source,to_proc,transform_values,group_by,each_with_index,+,last,=~,attr_reader,>=,length,is_a?,include?,names,regexp,named_captures,===,captures,-,inspect,empty?,each,to_a"),$klass("::",$$$("StandardError"),"RegexpError"),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Regexp"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$const_set(self,"IGNORECASE",1),$const_set(self,"EXTENDED",2),$const_set(self,"MULTILINE",4),Opal.prop(self.$$prototype,"$$is_regexp",!0),function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$allocate",(function $$allocate(){var $yield=$$allocate.$$p||nil,allocated=nil;return delete $$allocate.$$p,(allocated=$send2(this,$find_super(this,"allocate",$$allocate,!1,!0),"allocate",[],$yield)).uninitialized=!0,allocated}),0),$def(self,"$escape",(function(string){return Opal.escape_regexp(string)}),1),$def(self,"$last_match",(function(n){return null==$gvars["~"]&&($gvars["~"]=nil),null==n&&(n=nil),$truthy(n["$nil?"]())?$gvars["~"]:$truthy($gvars["~"])?$gvars["~"]["$[]"](n):nil}),-1),$def(self,"$union",(function($a){var parts,is_first_part_array,quoted_validated,part,options,each_part_options,self=this;if(0==(parts=Opal.slice.call(arguments)).length)return/(?!)/;if(1==parts.length&&parts[0].$$is_regexp)return parts[0];is_first_part_array=parts[0].$$is_array,parts.length>1&&is_first_part_array&&$Kernel.$raise($$$("TypeError"),"no implicit conversion of Array into String"),is_first_part_array&&(parts=parts[0]),options=void 0,quoted_validated=[];for(var i=0;i=pos)return $gvars["~"]=$$$("MatchData").$new(re,md),block===nil?$gvars["~"]:Opal.yield1(block,$gvars["~"]);re.lastIndex=md.index+1}}),-2),$def(self,"$match?",(function(string,pos){var md;return this.uninitialized&&$Kernel.$raise($$$("TypeError"),"uninitialized Regexp"),void 0===pos?string!==nil&&this.test($coerce_to(string,$$$("String"),"to_str")):(pos=$coerce_to(pos,$$$("Integer"),"to_int"),string!==nil&&(string=$coerce_to(string,$$$("String"),"to_str"),!(pos<0&&(pos+=string.length)<0)&&!(null===(md=Opal.global_regexp(this).exec(string))||md.index/,$hash2(["no_matchdata"],{no_matchdata:!0})),"map",[],"first".$to_proc()).$uniq()}),0),$def(self,"$named_captures",(function(){return $send($send($send(this.$source().$scan(/\(?<(\w+)>/,$hash2(["no_matchdata"],{no_matchdata:!0})),"map",[],"first".$to_proc()).$each_with_index(),"group_by",[],"first".$to_proc()),"transform_values",[],(function(i){return null==i&&(i=nil),$send(i,"map",[],(function(j){return null==j&&(j=nil),$rb_plus(j.$last(),1)}),1)}),1)}),0),$def(self,"$~",(function(){return null==$gvars._&&($gvars._=nil),this["$=~"]($gvars._)}),0),$def(self,"$source",(function(){return this.source}),0),$def(self,"$options",(function(){this.uninitialized&&$Kernel.$raise($$$("TypeError"),"uninitialized Regexp");var result=0;return this.multiline&&(result|=$$("MULTILINE")),this.ignoreCase&&(result|=$$("IGNORECASE")),result}),0),$def(self,"$casefold?",(function(){return this.ignoreCase}),0),$alias(self,"eql?","=="),$alias(self,"to_s","source")}(0,RegExp,$nesting),function($base,$super,$parent_nesting){var self=$klass($base,null,"MatchData"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.matches=nil,self.$attr_reader("post_match","pre_match","regexp","string"),$def(self,"$initialize",(function(regexp,match_groups,$kwargs){var no_matchdata;if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");null==(no_matchdata=$kwargs.$$smap.no_matchdata)&&(no_matchdata=!1),$truthy(no_matchdata)||($gvars["~"]=this),this.regexp=regexp,this.begin=match_groups.index,this.string=match_groups.input,this.pre_match=match_groups.input.slice(0,match_groups.index),this.post_match=match_groups.input.slice(match_groups.index+match_groups[0].length),this.matches=[];for(var i=0,length=match_groups.length;i"}),0),$def(self,"$length",(function(){return this.matches.length}),0),$def(self,"$to_a",(function(){return this.matches}),0),$def(self,"$to_s",(function(){return this.matches[0]}),0),$def(self,"$values_at",(function($a){var args,self=this;args=Opal.slice.call(arguments);var i,a,index,values=[];for(i=0;i,==,=~,new,force_encoding,casecmp,empty?,ljust,ceil,/,+,rjust,floor,coerce_to!,copy_singleton_methods,initialize_clone,initialize_dup,enum_for,chomp,[],to_i,each_line,to_proc,to_a,class,match,match?,captures,proc,succ,escape,include?,upcase,unicode_normalize,pristine"),self.$require("corelib/comparable"),self.$require("corelib/regexp"),function($base,$super,$parent_nesting){var self=$klass("::",String,"String"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);function char_class_from_char_sets(sets){function explode_sequences_in_character_set(set){var i,curr_char,skip_next_dash,char_code_from,char_code_upto,char_code,result="",len=set.length;for(i=0;i0&&i(char_code_upto=set.charCodeAt(i+1))&&$Kernel.$raise($$$("ArgumentError"),'invalid range "'+char_code_from+"-"+char_code_upto+'" in string transliteration'),char_code=char_code_from+1;char_code1,set=explode_sequences_in_character_set(neg?set.slice(1):set),neg?neg_intersection=intersection(neg_intersection,set):pos_intersection=intersection(pos_intersection,set);if(pos_intersection.length>0&&neg_intersection.length>0){for(tmp="",i=0,len=pos_intersection.length;i0?"["+$$$("Regexp").$escape(pos_intersection)+"]":neg_intersection.length>0?"[^"+$$$("Regexp").$escape(neg_intersection)+"]":null}self.$include($$$("Comparable")),Opal.prop(self.$$prototype,"$$is_string",!0),Opal.prop(self.$$prototype,"$$cast",(function(string){var klass=this.$$class;return klass.$$constructor===String?string:new klass.$$constructor(string)})),$def(self,"$__id__",(function(){return this.toString()}),0),$defs(self,"$try_convert",(function(what){return $Opal["$coerce_to?"](what,$$$("String"),"to_str")}),1),$defs(self,"$new",(function($a){var args,self=this,str=(args=Opal.slice.call(arguments))[0]||"",opts=args[args.length-1];return str=$coerce_to(str,$$$("String"),"to_str"),opts&&opts.$$is_hash&&opts.$$smap.encoding&&(str=str.$force_encoding(opts.$$smap.encoding)),(str=new self.$$constructor(str)).$initialize.$$pristine||$send(str,"initialize",$to_a(args)),str}),-1),$def(self,"$initialize",(function($a,$b){var $post_args,$kwargs;if($post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return $post_args.length>0&&$post_args.shift(),null==$kwargs.$$smap.encoding&&nil,null==$kwargs.$$smap.capacity&&nil,nil}),-1),$def(self,"$%",(function(data){var self=this;return $eqeqeq($$$("Array"),data)?$send(self,"format",[self].concat($to_a(data))):self.$format(self,data)}),1),$def(self,"$*",(function(count){if((count=$coerce_to(count,$$$("Integer"),"to_int"))<0&&$Kernel.$raise($$$("ArgumentError"),"negative argument"),0===count)return this.$$cast("");var result="",string=this.toString();for(string.length*count>=1<<28&&$Kernel.$raise($$$("RangeError"),"multiply count must not overflow maximum string size");1==(1&count)&&(result+=string),0!==(count>>>=1);)string+=string;return this.$$cast(result)}),1),$def(self,"$+",(function(other){if(""==(other=$coerce_to(other,$$$("String"),"to_str"))&&this.$$class===Opal.String)return this;if(""==this&&other.$$class===Opal.String)return other;var out=this+other;return this.encoding===out.encoding&&other.encoding===out.encoding||"UTF-8"===this.encoding.name||"UTF-8"===other.encoding.name?out:Opal.enc(out,this.encoding)}),1),$def(self,"$<=>",(function(other){if($truthy(other["$respond_to?"]("to_str")))return this>(other=other.$to_str().$to_s())?1:this"](this);return cmp===nil?nil:cmp>0?-1:cmp<0?1:0}),1),$def(self,"$==",(function(other){return other.$$is_string?this.toString()===other.toString():!!$respond_to(other,"$to_str")&&other["$=="](this)}),1),$def(self,"$=~",(function(other){return other.$$is_string&&$Kernel.$raise($$$("TypeError"),"type mismatch: String given"),other["$=~"](this)}),1),$def(self,"$[]",(function(index,length){var exclude,range,size=this.length;if(index.$$is_range)return exclude=index.excl,range=index,length=index.end===nil?-1:$coerce_to(index.end,$$$("Integer"),"to_int"),index=index.begin===nil?0:$coerce_to(index.begin,$$$("Integer"),"to_int"),Math.abs(index)>size?nil:(index<0&&(index+=size),length<0&&(length+=size),exclude&&range.end!==nil||(length+=1),(length-=index)<0&&(length=0),this.$$cast(this.substr(index,length)));if(index.$$is_string)return null!=length&&$Kernel.$raise($$$("TypeError")),-1!==this.indexOf(index)?this.$$cast(index):nil;if(index.$$is_regexp){var match=this.match(index);return null===match?($gvars["~"]=nil,nil):($gvars["~"]=$$$("MatchData").$new(index,match),null==length?this.$$cast(match[0]):(length=$coerce_to(length,$$$("Integer"),"to_int"))<0&&-length=0&&length=size||index<0?nil:this.$$cast(this.substr(index,1)):(length=$coerce_to(length,$$$("Integer"),"to_int"))<0||index>size||index<0?nil:this.$$cast(this.substr(index,length))}),-2),$def(self,"$b",(function(){return new String(this).$force_encoding("binary")}),0),$def(self,"$capitalize",(function(){return this.$$cast(this.charAt(0).toUpperCase()+this.substr(1).toLowerCase())}),0),$def(self,"$casecmp",(function(other){var self=this;if(!$truthy(other["$respond_to?"]("to_str")))return nil;other=$coerce_to(other,$$$("String"),"to_str").$to_s();var ascii_only=/^[\x00-\x7F]*$/;return ascii_only.test(self)&&ascii_only.test(other)&&(self=self.toLowerCase(),other=other.toLowerCase()),self["$<=>"](other)}),1),$def(self,"$casecmp?",(function(other){var cmp=this.$casecmp(other);return cmp===nil?nil:0===cmp}),1),$def(self,"$center",(function(width,padstr){if(null==padstr&&(padstr=" "),width=$coerce_to(width,$$$("Integer"),"to_int"),padstr=$coerce_to(padstr,$$$("String"),"to_str").$to_s(),$truthy(padstr["$empty?"]())&&$Kernel.$raise($$$("ArgumentError"),"zero width padding"),$truthy(width<=this.length))return this;var ljustified=this.$ljust($rb_divide($rb_plus(width,this.length),2).$ceil(),padstr),rjustified=this.$rjust($rb_divide($rb_plus(width,this.length),2).$floor(),padstr);return this.$$cast(rjustified+ljustified.slice(this.length))}),-2),$def(self,"$chomp",(function(separator){var result;if(null==$gvars["/"]&&($gvars["/"]=nil),null==separator&&(separator=$gvars["/"]),$truthy(separator===nil||0===this.length))return this;if("\n"===(separator=$Opal["$coerce_to!"](separator,$$$("String"),"to_str").$to_s()))result=this.replace(/\r?\n?$/,"");else if(""===separator)result=this.replace(/(\r?\n)+$/,"");else if(this.length>=separator.length){this.substr(this.length-separator.length,separator.length)===separator&&(result=this.substr(0,this.length-separator.length))}return null!=result?this.$$cast(result):this}),-1),$def(self,"$chop",(function(){var result,length=this.length;return result=length<=1?"":"\n"===this.charAt(length-1)&&"\r"===this.charAt(length-2)?this.substr(0,length-2):this.substr(0,length-1),this.$$cast(result)}),0),$def(self,"$chr",(function(){return this.charAt(0)}),0),$def(self,"$clone",(function(){var copy=nil;return(copy=new String(this)).$copy_singleton_methods(this),copy.$initialize_clone(this),copy}),0),$def(self,"$dup",(function(){var copy=nil;return(copy=new String(this)).$initialize_dup(this),copy}),0),$def(self,"$count",(function($a){var sets,self=this;0===(sets=Opal.slice.call(arguments)).length&&$Kernel.$raise($$$("ArgumentError"),"ArgumentError: wrong number of arguments (0 for 1+)");var char_class=char_class_from_char_sets(sets);return null===char_class?0:self.length-self.replace(new RegExp(char_class,"g"),"").length}),-1),$def(self,"$delete",(function($a){var sets,self=this;0===(sets=Opal.slice.call(arguments)).length&&$Kernel.$raise($$$("ArgumentError"),"ArgumentError: wrong number of arguments (0 for 1+)");var char_class=char_class_from_char_sets(sets);return null===char_class?self:self.$$cast(self.replace(new RegExp(char_class,"g"),""))}),-1),$def(self,"$delete_prefix",(function(prefix){return prefix.$$is_string||(prefix=$coerce_to(prefix,$$$("String"),"to_str")),this.slice(0,prefix.length)===prefix?this.$$cast(this.slice(prefix.length)):this}),1),$def(self,"$delete_suffix",(function(suffix){return suffix.$$is_string||(suffix=$coerce_to(suffix,$$$("String"),"to_str")),this.slice(this.length-suffix.length)===suffix?this.$$cast(this.slice(0,this.length-suffix.length)):this}),1),$def(self,"$downcase",(function(){return this.$$cast(this.toLowerCase())}),0),$def(self,"$each_line",(function $$each_line($a,$b){var $post_args,$kwargs,separator,chomp,a,i,n,length,chomped,trailing,splitted,value,block=$$each_line.$$p||nil,self=this;if(null==$gvars["/"]&&($gvars["/"]=nil),delete $$each_line.$$p,$post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");if($post_args.length>0&&(separator=$post_args.shift()),null==separator&&(separator=$gvars["/"]),null==(chomp=$kwargs.$$smap.chomp)&&(chomp=!1),block===nil)return self.$enum_for("each_line",separator,$hash2(["chomp"],{chomp:chomp}));if(separator===nil)return Opal.yield1(block,self),self;if(0===(separator=$coerce_to(separator,$$$("String"),"to_str")).length){for(i=0,n=(a=self.split(/((?:\r?\n){2})(?:(?:\r?\n)*)/)).length;i=suffix.length&&self.substr(self.length-suffix.length,suffix.length)==suffix)return!0}return!1}),-1),$def(self,"$gsub",(function $$gsub(pattern,replacement){var block=$$gsub.$$p||nil,self=this;if(delete $$gsub.$$p,void 0===replacement&&block===nil)return self.$enum_for("gsub",pattern);var match,_replacement,lastIndex,result="",match_data=nil,index=0;for(pattern.$$is_regexp?pattern=$global_multiline_regexp(pattern):(pattern=$coerce_to(pattern,$$$("String"),"to_str"),pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm"));;){if(null===(match=pattern.exec(self))){$gvars["~"]=nil,result+=self.slice(index);break}match_data=$$$("MatchData").$new(pattern,match),void 0===replacement?(lastIndex=pattern.lastIndex,_replacement=block(match[0]),pattern.lastIndex=lastIndex):replacement.$$is_hash?_replacement=replacement["$[]"](match[0]).$to_s():(replacement.$$is_string||(replacement=$coerce_to(replacement,$$$("String"),"to_str")),_replacement=replacement.replace(/([\\]+)([0-9+&`'])/g,(function(original,slashes,command){if(slashes.length%2==0)return original;switch(command){case"+":for(var i=match.length-1;i>0;i--)if(void 0!==match[i])return slashes.slice(1)+match[i];return"";case"&":return slashes.slice(1)+match[0];case"`":return slashes.slice(1)+self.slice(0,match.index);case"'":return slashes.slice(1)+self.slice(match.index+match[0].length);default:return slashes.slice(1)+(match[command]||"")}})).replace(/\\\\/g,"\\")),pattern.lastIndex===match.index?(result+=self.slice(index,match.index)+_replacement+(self[match.index]||""),pattern.lastIndex+=1):result+=self.slice(index,match.index)+_replacement,index=pattern.lastIndex}return $gvars["~"]=match_data,self.$$cast(result)}),-2),$def(self,"$hash",(function(){return this.toString()}),0),$def(self,"$hex",(function(){return this.$to_i(16)}),0),$def(self,"$include?",(function(other){return other.$$is_string||(other=$coerce_to(other,$$$("String"),"to_str")),-1!==this.indexOf(other)}),1),$def(self,"$index",(function(search,offset){var index,match,regex;if(void 0===offset)offset=0;else if((offset=$coerce_to(offset,$$$("Integer"),"to_int"))<0&&(offset+=this.length)<0)return nil;if(search.$$is_regexp)for(regex=$global_multiline_regexp(search);;){if(null===(match=regex.exec(this))){$gvars["~"]=nil,index=-1;break}if(match.index>=offset){$gvars["~"]=$$$("MatchData").$new(regex,match),index=match.index;break}regex.lastIndex=match.index+1}else index=0===(search=$coerce_to(search,$$$("String"),"to_str")).length&&offset>this.length?-1:this.indexOf(search,offset);return-1===index?nil:index}),-2),$def(self,"$inspect",(function(){var self=this,meta={"":"\\a","":"\\e","\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\v":"\\v",'"':'\\"',"\\":"\\\\"};return'"'+self.replace(/[\\\"\x00-\x1f\u007F-\u009F\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,(function(chr){return meta[chr]?meta[chr]:(chr=chr.charCodeAt(0))<=255&&(self.encoding["$binary?"]()||self.internal_encoding["$binary?"]())?"\\x"+("00"+chr.toString(16).toUpperCase()).slice(-2):"\\u"+("0000"+chr.toString(16).toUpperCase()).slice(-4)})).replace(/\#[\$\@\{]/g,"\\$&")+'"'}),0),$def(self,"$intern",(function(){return this.toString()}),0),$def(self,"$lines",(function $$lines($a,$b){var $post_args,$kwargs,separator,chomp,block=$$lines.$$p||nil,self=this,e=nil;if(null==$gvars["/"]&&($gvars["/"]=nil),delete $$lines.$$p,$post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return $post_args.length>0&&(separator=$post_args.shift()),null==separator&&(separator=$gvars["/"]),null==(chomp=$kwargs.$$smap.chomp)&&(chomp=!1),e=$send(self,"each_line",[separator,$hash2(["chomp"],{chomp:chomp})],block.$to_proc()),$truthy(block)?self:e.$to_a()}),-1),$def(self,"$ljust",(function(width,padstr){if(null==padstr&&(padstr=" "),width=$coerce_to(width,$$$("Integer"),"to_int"),padstr=$coerce_to(padstr,$$$("String"),"to_str").$to_s(),$truthy(padstr["$empty?"]())&&$Kernel.$raise($$$("ArgumentError"),"zero width padding"),$truthy(width<=this.length))return this;var index=-1,result="";for(width-=this.length;++index=48&&code<=57||code>=65&&code<=90||code>=97&&code<=122)switch(code){case 57:carry=!0,code=48;break;case 90:carry=!0,code=65;break;case 122:carry=!0,code=97;break;default:carry=!1,code+=1}else-1===first_alphanum_char_index?255===code?(carry=!0,code=0):(carry=!1,code+=1):carry=!0;if(result=result.slice(0,i)+String.fromCharCode(code)+result.slice(i+1),carry&&(0===i||i===first_alphanum_char_index)){switch(code){case 65:case 97:break;default:code+=1}result=0===i?String.fromCharCode(code)+result:result.slice(0,i)+String.fromCharCode(code)+result.slice(i),carry=!1}if(!carry)break}return this.$$cast(result)}),0),$def(self,"$oct",(function(){var result,string=this,radix=8;return/^\s*_/.test(string)?0:(string=string.replace(/^(\s*[+-]?)(0[bodx]?)(.+)$/i,(function(original,head,flag,tail){switch(tail.charAt(0)){case"+":case"-":return original;case"0":if("x"===tail.charAt(1)&&"0x"===flag)return original}switch(flag){case"0b":radix=2;break;case"0":case"0o":radix=8;break;case"0d":radix=10;break;case"0x":radix=16}return head+tail})),result=parseInt(string.replace(/_(?!_)/g,""),radix),isNaN(result)?0:result)}),0),$def(self,"$ord",(function(){return"function"==typeof this.codePointAt?this.codePointAt(0):this.charCodeAt(0)}),0),$def(self,"$partition",(function(sep){var i,m;return sep.$$is_regexp?null===(m=sep.exec(this))?i=-1:($$$("MatchData").$new(sep,m),sep=m[0],i=m.index):(sep=$coerce_to(sep,$$$("String"),"to_str"),i=this.indexOf(sep)),-1===i?[this,"",""]:[this.slice(0,i),this.slice(i,i+sep.length),this.slice(i+sep.length)]}),1),$def(self,"$reverse",(function(){return this.split("").reverse().join("")}),0),$def(self,"$rindex",(function(search,offset){var i,m,r,_m;if(void 0===offset)offset=this.length;else if((offset=$coerce_to(offset,$$$("Integer"),"to_int"))<0&&(offset+=this.length)<0)return nil;if(search.$$is_regexp){for(m=null,r=$global_multiline_regexp(search);!(null===(_m=r.exec(this))||_m.index>offset);)m=_m,r.lastIndex=m.index+1;null===m?($gvars["~"]=nil,i=-1):($$$("MatchData").$new(r,m),i=m.index)}else search=$coerce_to(search,$$$("String"),"to_str"),i=this.lastIndexOf(search,offset);return-1===i?nil:i}),-2),$def(self,"$rjust",(function(width,padstr){if(null==padstr&&(padstr=" "),width=$coerce_to(width,$$$("Integer"),"to_int"),padstr=$coerce_to(padstr,$$$("String"),"to_str").$to_s(),$truthy(padstr["$empty?"]())&&$Kernel.$raise($$$("ArgumentError"),"zero width padding"),$truthy(width<=this.length))return this;var chars=Math.floor(width-this.length),patterns=Math.floor(chars/padstr.length),result=Array(patterns+1).join(padstr),remaining=chars-result.length;return this.$$cast(result+padstr.slice(0,remaining)+this)}),-2),$def(self,"$rpartition",(function(sep){var i,m,r,_m;if(sep.$$is_regexp){for(m=null,r=$global_multiline_regexp(sep);null!==(_m=r.exec(this));)m=_m,r.lastIndex=m.index+1;null===m?i=-1:($$$("MatchData").$new(r,m),sep=m[0],i=m.index)}else sep=$coerce_to(sep,$$$("String"),"to_str"),i=this.lastIndexOf(sep);return-1===i?["","",this]:[this.slice(0,i),this.slice(i,i+sep.length),this.slice(i+sep.length)]}),1),$def(self,"$rstrip",(function(){return this.replace(/[\s\u0000]*$/,"")}),0),$def(self,"$scan",(function $$scan(pattern,$kwargs){var no_matchdata,block=$$scan.$$p||nil;if(delete $$scan.$$p,null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");null==(no_matchdata=$kwargs.$$smap.no_matchdata)&&(no_matchdata=!1);var match,result=[],match_data=nil;for(pattern.$$is_regexp?pattern=$global_multiline_regexp(pattern):(pattern=$coerce_to(pattern,$$$("String"),"to_str"),pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm"));null!=(match=pattern.exec(this));)match_data=$$$("MatchData").$new(pattern,match,$hash2(["no_matchdata"],{no_matchdata:no_matchdata})),block===nil?1==match.length?result.push(match[0]):result.push(match_data.$captures()):1==match.length?Opal.yield1(block,match[0]):Opal.yield1(block,match_data.$captures()),pattern.lastIndex===match.index&&(pattern.lastIndex+=1);return no_matchdata||($gvars["~"]=match_data),block!==nil?this:result}),-2),$def(self,"$singleton_class",(function(){return Opal.get_singleton_class(this)}),0),$def(self,"$split",(function(pattern,limit){var self=this,$ret_or_1=nil;if(null==$gvars[";"]&&($gvars[";"]=nil),0===self.length)return[];if(void 0===limit)limit=0;else if(1===(limit=$Opal["$coerce_to!"](limit,$$$("Integer"),"to_int")))return[self];void 0!==pattern&&pattern!==nil||(pattern=$truthy($ret_or_1=$gvars[";"])?$ret_or_1:" ");var match,i,ii,result=[],string=self.toString(),index=0;if(pattern.$$is_regexp?pattern=$global_multiline_regexp(pattern):" "===(pattern=$coerce_to(pattern,$$$("String"),"to_str").$to_s())?(pattern=/\s+/gm,string=string.replace(/^\s+/,"")):pattern=new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gm"),1===(result=string.split(pattern)).length&&result[0]===string)return[self.$$cast(result[0])];for(;-1!==(i=result.indexOf(void 0));)result.splice(i,1);function castResult(){for(i=0;i=result.length)return castResult(),result;for(i=0;null!==match&&(i++,index=pattern.lastIndex,i+1!==limit);)match=pattern.exec(string);return result.splice(limit-1,result.length-1,string.slice(index)),castResult(),result}),-1),$def(self,"$squeeze",(function($a){var sets,self=this;if(0===(sets=Opal.slice.call(arguments)).length)return self.$$cast(self.replace(/(.)\1+/g,"$1"));var char_class=char_class_from_char_sets(sets);return null===char_class?self:self.$$cast(self.replace(new RegExp("("+char_class+")\\1+","g"),"$1"))}),-1),$def(self,"$start_with?",(function($a){for(var prefixes,self=this,i=0,length=(prefixes=Opal.slice.call(arguments)).length;i0;i--)if(void 0!==match[i])return slashes.slice(1)+match[i];return"";case"&":return slashes.slice(1)+match[0];case"`":return slashes.slice(1)+self.slice(0,match.index);case"'":return slashes.slice(1)+self.slice(match.index+match[0].length);default:return slashes.slice(1)+(match[command]||"")}})).replace(/\\\\/g,"\\"),result=self.slice(0,match.index)+replacement+self.slice(match.index+match[0].length))),self.$$cast(result)}),-2),$def(self,"$sum",(function(n){null==n&&(n=16),n=$coerce_to(n,$$$("Integer"),"to_int");for(var result=0,length=this.length,i=0;i36)&&$Kernel.$raise($$$("ArgumentError"),"invalid radix "+radix),/^\s*_/.test(string)?0:(string=string.replace(/^(\s*[+-]?)(0[bodx]?)(.+)$/,(function(original,head,flag,tail){switch(tail.charAt(0)){case"+":case"-":return original;case"0":if("x"===tail.charAt(1)&&"0x"===flag&&(0===radix||16===radix))return original}switch(flag){case"0b":if(0===radix||2===radix)return radix=2,head+tail;break;case"0":case"0o":if(0===radix||8===radix)return radix=8,head+tail;break;case"0d":if(0===radix||10===radix)return radix=10,head+tail;break;case"0x":if(0===radix||16===radix)return radix=16,head+tail}return original})),result=parseInt(string.replace(/_(?!_)/g,""),radix),isNaN(result)?0:result)}),-1),$def(self,"$to_proc",(function $$to_proc(){var method_name;return delete $$to_proc.$$p,method_name=$rb_plus("$",this.valueOf()),$send($Kernel,"proc",[],(function $$17($a){var args,block=$$17.$$p||nil;delete $$17.$$p,0===(args=Opal.slice.call(arguments)).length&&$Kernel.$raise($$$("ArgumentError"),"no receiver given");var recv=args[0];null==recv&&(recv=nil);var body=recv[method_name];return body?("function"==typeof block&&(body.$$p=block),1===args.length?body.call(recv):body.apply(recv,args.slice(1))):recv.$method_missing.apply(recv,args)}),-1)}),0),$def(self,"$to_s",(function(){return this.toString()}),0),$def(self,"$tr",(function(from,to){var i,in_range,c,ch,start,end,length;if(from=$coerce_to(from,$$$("String"),"to_str").$to_s(),to=$coerce_to(to,$$$("String"),"to_str").$to_s(),0==from.length||from===to)return this;var subs={},from_chars=from.split(""),from_length=from_chars.length,to_chars=to.split(""),to_length=to_chars.length,inverse=!1,global_sub=null;"^"===from_chars[0]&&from_chars.length>1&&(inverse=!0,from_chars.shift(),global_sub=to_chars[to_length-1],from_length-=1);var from_chars_expanded=[],last_from=null;for(in_range=!1,i=0;i(end=ch.charCodeAt(0))&&$Kernel.$raise($$$("ArgumentError"),'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration'),c=start+1;c0){var to_chars_expanded=[],last_to=null;for(in_range=!1,i=0;i(end=ch.charCodeAt(0))&&$Kernel.$raise($$$("ArgumentError"),'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration'),c=start+1;c0){var pad_char=to_length>0?to_chars[to_length-1]:"";for(i=0;i1&&(inverse=!0,from_chars.shift(),global_sub=to_chars[to_length-1],from_length-=1);var from_chars_expanded=[],last_from=null;for(in_range=!1,i=0;i(end=ch.charCodeAt(0))&&$Kernel.$raise($$$("ArgumentError"),'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration'),c=start+1;c0){var to_chars_expanded=[];for(in_range=!1,i=0;i(end=ch.charCodeAt(0))&&$Kernel.$raise($$$("ArgumentError"),'invalid range "'+String.fromCharCode(start)+"-"+String.fromCharCode(end)+'" in string transliteration'),c=start+1;c0){var pad_char=to_length>0?to_chars[to_length-1]:"";for(i=0;i,*,try_convert,<,+,-,ceil,/,size,select,to_proc,__send__,length,<=,[],push,<<,[]=,===,inspect,<=>,first,reverse,sort,take,sort_by,compare,call,dup,sort!,map!,include?,-@,key?,values,transform_values,group_by,fetch,to_h,coerce_to?,class,zip"),function($base){var self=$module("::","Enumerable");function comparableForPattern(value){return 0===value.length&&(value=[nil]),value.length>1&&(value=[value]),value}return $def(self,"$all?",(function $Enumerable_all$ques$1(pattern){try{var block=$Enumerable_all$ques$1.$$p||nil;return delete $Enumerable_all$ques$1.$$p,$truthy(void 0!==pattern)?$send(this,"each",[],(function($a){var comparable=nil;if(comparable=comparableForPattern(Opal.slice.call(arguments)),$truthy($send(pattern,"public_send",["==="].concat($to_a(comparable)))))return nil;Opal.ret(!1)}),-1):$send(this,"each",[],block!==nil?function($a){var value;if(value=Opal.slice.call(arguments),$truthy(Opal.yieldX(block,$to_a(value))))return nil;Opal.ret(!1)}:function($a){var value;if(value=Opal.slice.call(arguments),$truthy($Opal.$destructure(value)))return nil;Opal.ret(!1)},-1),!0}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$any?",(function $Enumerable_any$ques$5(pattern){try{var block=$Enumerable_any$ques$5.$$p||nil;return delete $Enumerable_any$ques$5.$$p,$truthy(void 0!==pattern)?$send(this,"each",[],(function($a){var comparable=nil;if(comparable=comparableForPattern(Opal.slice.call(arguments)),!$truthy($send(pattern,"public_send",["==="].concat($to_a(comparable)))))return nil;Opal.ret(!0)}),-1):$send(this,"each",[],block!==nil?function($a){var value;if(value=Opal.slice.call(arguments),!$truthy(Opal.yieldX(block,$to_a(value))))return nil;Opal.ret(!0)}:function($a){var value;if(value=Opal.slice.call(arguments),!$truthy($Opal.$destructure(value)))return nil;Opal.ret(!0)},-1),!1}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$chunk",(function $$chunk(){var block=$$chunk.$$p||nil;return delete $$chunk.$$p,block===nil?$send(this,"to_enum",["chunk"],(function $$9(){return(null==$$9.$$s?this:$$9.$$s).$enumerator_size()}),{$$arity:0,$$s:this}):$send($$$("Enumerator"),"new",[],(function $$10(yielder){var self=null==$$10.$$s?this:$$10.$$s;null==yielder&&(yielder=nil);var previous=nil,accumulate=[];function releaseAccumulate(){accumulate.length>0&&yielder.$yield(previous,accumulate)}self.$each.$$p=function(value){var key=$yield1(block,value);key===nil?(releaseAccumulate(),accumulate=[],previous=nil):(previous===nil||previous===key?accumulate.push(value):(releaseAccumulate(),accumulate=[value]),previous=key)},self.$each(),releaseAccumulate()}),{$$arity:1,$$s:this})}),0),$def(self,"$chunk_while",(function $$chunk_while(){var block=$$chunk_while.$$p||nil;return delete $$chunk_while.$$p,block===nil&&$Kernel.$raise($$$("ArgumentError"),"no block given"),$send(this,"slice_when",[],(function(before,after){return null==before&&(before=nil),null==after&&(after=nil),Opal.yieldX(block,[before,after])["$!"]()}),2)}),0),$def(self,"$collect",(function $$collect(){var block=$$collect.$$p||nil;if(delete $$collect.$$p,block===nil)return $send(this,"enum_for",["collect"],(function $$12(){return(null==$$12.$$s?this:$$12.$$s).$enumerator_size()}),{$$arity:0,$$s:this});var result=[];return this.$each.$$p=function(){var value=$yieldX(block,arguments);result.push(value)},this.$each(),result}),0),$def(self,"$collect_concat",(function $$collect_concat(){var block=$$collect_concat.$$p||nil;return delete $$collect_concat.$$p,block===nil?$send(this,"enum_for",["collect_concat"],(function $$13(){return(null==$$13.$$s?this:$$13.$$s).$enumerator_size()}),{$$arity:0,$$s:this}):$send(this,"map",[],(function(item){return null==item&&(item=nil),Opal.yield1(block,item)}),1).$flatten(1)}),0),$def(self,"$compact",(function(){return this.$to_a().$compact()}),0),$def(self,"$count",(function $$count(object){var block=$$count.$$p||nil,result=nil;return delete $$count.$$p,result=0,null!=object&&block!==nil&&this.$warn("warning: given block not used"),$truthy(null!=object)?block=$send($Kernel,"proc",[],(function($a){var args;return args=Opal.slice.call(arguments),$Opal.$destructure(args)["$=="](object)}),-1):$truthy(block["$nil?"]())&&(block=$send($Kernel,"proc",[],(function(){return!0}),0)),$send(this,"each",[],(function($a){var $post_args;return $post_args=Opal.slice.call(arguments),$truthy($yieldX(block,$post_args))?result++:nil}),-1),result}),-1),$def(self,"$cycle",(function $$cycle(n){var block=$$cycle.$$p||nil;if(delete $$cycle.$$p,null==n&&(n=nil),block===nil)return $send(this,"enum_for",["cycle",n],(function $$18(){var self=null==$$18.$$s?this:$$18.$$s;return $truthy(n["$nil?"]())?$truthy(self["$respond_to?"]("size"))?$$$($$$("Float"),"INFINITY"):nil:(n=$Opal["$coerce_to!"](n,$$$("Integer"),"to_int"),$truthy($rb_gt(n,0))?$rb_times(self.$enumerator_size(),n):0)}),{$$arity:0,$$s:this});if(!$truthy(n["$nil?"]())&&(n=$Opal["$coerce_to!"](n,$$$("Integer"),"to_int"),$truthy(n<=0)))return nil;var i,length,all=[];if(this.$each.$$p=function(){var param=$Opal.$destructure(arguments);$yield1(block,param);all.push(param)},this.$each(),0===all.length)return nil;if(n===nil)for(;;)for(i=0,length=all.length;i1;){for(i=0,length=all.length;in&&buffer.shift(),buffer.length==n&&$yield1(block,buffer.slice(0,n))},self.$each(),self}),1),$def(self,"$each_entry",(function $$each_entry($a){var data,block=$$each_entry.$$p||nil,self=this;return delete $$each_entry.$$p,data=Opal.slice.call(arguments),block===nil?$send(self,"to_enum",["each_entry"].concat($to_a(data)),(function $$21(){return(null==$$21.$$s?this:$$21.$$s).$enumerator_size()}),{$$arity:0,$$s:self}):(self.$each.$$p=function(){var item=$Opal.$destructure(arguments);$yield1(block,item)},self.$each.apply(self,data),self)}),-1),$def(self,"$each_slice",(function $$each_slice(n){var block=$$each_slice.$$p||nil;if(delete $$each_slice.$$p,n=$coerce_to(n,$$$("Integer"),"to_int"),$truthy(n<=0)&&$Kernel.$raise($$$("ArgumentError"),"invalid slice size"),block===nil)return $send(this,"enum_for",["each_slice",n],(function $$22(){var self=null==$$22.$$s?this:$$22.$$s;return $truthy(self["$respond_to?"]("size"))?$rb_divide(self.$size(),n).$ceil():nil}),{$$arity:0,$$s:this});var slice=[];return this.$each.$$p=function(){var param=$Opal.$destructure(arguments);slice.push(param),slice.length===n&&($yield1(block,slice),slice=[])},this.$each(),slice.length>0&&$yield1(block,slice),this}),1),$def(self,"$each_with_index",(function $$each_with_index($a){var args,block=$$each_with_index.$$p||nil,self=this;if(delete $$each_with_index.$$p,args=Opal.slice.call(arguments),block===nil)return $send(self,"enum_for",["each_with_index"].concat($to_a(args)),(function $$23(){return(null==$$23.$$s?this:$$23.$$s).$enumerator_size()}),{$$arity:0,$$s:self});var index=0;return self.$each.$$p=function(){var param=$Opal.$destructure(arguments);block(param,index),index++},self.$each.apply(self,args),self}),-1),$def(self,"$each_with_object",(function $$each_with_object(object){var block=$$each_with_object.$$p||nil;return delete $$each_with_object.$$p,block===nil?$send(this,"enum_for",["each_with_object",object],(function $$24(){return(null==$$24.$$s?this:$$24.$$s).$enumerator_size()}),{$$arity:0,$$s:this}):(this.$each.$$p=function(){var param=$Opal.$destructure(arguments);block(param,object)},this.$each(),object)}),1),$def(self,"$entries",(function($a){var args,self=this;args=Opal.slice.call(arguments);var result=[];return self.$each.$$p=function(){result.push($Opal.$destructure(arguments))},self.$each.apply(self,args),result}),-1),$def(self,"$filter_map",(function $$filter_map(){var block=$$filter_map.$$p||nil;return delete $$filter_map.$$p,block===nil?$send(this,"enum_for",["filter_map"],(function $$25(){return(null==$$25.$$s?this:$$25.$$s).$enumerator_size()}),{$$arity:0,$$s:this}):$send($send(this,"map",[],block.$to_proc()),"select",[],"itself".$to_proc())}),0),$def(self,"$find_all",(function $$find_all(){var block=$$find_all.$$p||nil;if(delete $$find_all.$$p,block===nil)return $send(this,"enum_for",["find_all"],(function $$26(){return(null==$$26.$$s?this:$$26.$$s).$enumerator_size()}),{$$arity:0,$$s:this});var result=[];return this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);$truthy(value)&&result.push(param)},this.$each(),result}),0),$def(self,"$find_index",(function $$find_index(object){try{var block=$$find_index.$$p||nil,index=nil;return delete $$find_index.$$p,$truthy(void 0===object&&block===nil)?this.$enum_for("find_index"):(null!=object&&block!==nil&&this.$warn("warning: given block not used"),index=0,$truthy(null!=object)?$send(this,"each",[],(function($a){var value;return value=Opal.slice.call(arguments),$eqeq($Opal.$destructure(value),object)&&Opal.ret(index),index+=1}),-1):$send(this,"each",[],(function($a){var value;return value=Opal.slice.call(arguments),$truthy(Opal.yieldX(block,$to_a(value)))&&Opal.ret(index),index+=1}),-1),nil)}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$first",(function(number){try{var result=nil,current=nil;return $truthy(void 0===number)?$send(this,"each",[],(function(value){null==value&&(value=nil),Opal.ret(value)}),1):(result=[],number=$coerce_to(number,$$$("Integer"),"to_int"),$truthy(number<0)&&$Kernel.$raise($$$("ArgumentError"),"attempt to take negative size"),$truthy(0==number)?[]:(current=0,$send(this,"each",[],(function($a){var args;if(args=Opal.slice.call(arguments),result.push($Opal.$destructure(args)),!$truthy(number<=++current))return nil;Opal.ret(result)}),-1),result))}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$grep",(function $$grep(pattern){var block=$$grep.$$p||nil,result=nil;return delete $$grep.$$p,result=[],$send(this,"each",[],(function($a){var value,cmp=nil;return cmp=comparableForPattern(value=Opal.slice.call(arguments)),$truthy($send(pattern,"__send__",["==="].concat($to_a(cmp))))?(block!==nil?($truthy($rb_gt(value.$length(),1))&&(value=[value]),value=Opal.yieldX(block,$to_a(value))):$truthy($rb_le(value.$length(),1))&&(value=value["$[]"](0)),result.$push(value)):nil}),-1),result}),1),$def(self,"$grep_v",(function $$grep_v(pattern){var block=$$grep_v.$$p||nil,result=nil;return delete $$grep_v.$$p,result=[],$send(this,"each",[],(function($a){var value,cmp=nil;return cmp=comparableForPattern(value=Opal.slice.call(arguments)),$truthy($send(pattern,"__send__",["==="].concat($to_a(cmp))))?nil:(block!==nil?($truthy($rb_gt(value.$length(),1))&&(value=[value]),value=Opal.yieldX(block,$to_a(value))):$truthy($rb_le(value.$length(),1))&&(value=value["$[]"](0)),result.$push(value))}),-1),result}),1),$def(self,"$group_by",(function $$group_by(){var block=$$group_by.$$p||nil,hash=nil,$ret_or_1=nil,$writer=nil;return delete $$group_by.$$p,block===nil?$send(this,"enum_for",["group_by"],(function $$33(){return(null==$$33.$$s?this:$$33.$$s).$enumerator_size()}),{$$arity:0,$$s:this}):(hash=$hash2([],{}),this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);($truthy($ret_or_1=hash["$[]"](value))?$ret_or_1:($writer=[value,[]],$send(hash,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]))["$<<"](param)},this.$each(),hash)}),0),$def(self,"$include?",(function(obj){try{return $send(this,"each",[],(function($a){var args;if(args=Opal.slice.call(arguments),!$eqeq($Opal.$destructure(args),obj))return nil;Opal.ret(!0)}),-1),!1}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),1),$def(self,"$inject",(function $$inject(object,sym){var block=$$inject.$$p||nil;delete $$inject.$$p;var result=object;return block!==nil&&void 0===sym?this.$each.$$p=function(){var value=$Opal.$destructure(arguments);void 0!==result?(value=$yieldX(block,[result,value]),result=value):result=value}:(void 0===sym&&($$$("Symbol")["$==="](object)||$Kernel.$raise($$$("TypeError"),object.$inspect()+" is not a Symbol"),sym=object,result=void 0),this.$each.$$p=function(){var value=$Opal.$destructure(arguments);result=void 0!==result?result.$__send__(sym,value):value}),this.$each(),null==result?nil:result}),-1),$def(self,"$lazy",(function(){return $send($$$($$$("Enumerator"),"Lazy"),"new",[this,this.$enumerator_size()],(function(enum$,$a){var $post_args;return null==enum$&&(enum$=nil),$post_args=Opal.slice.call(arguments,1),$send(enum$,"yield",$to_a($post_args))}),-2)}),0),$def(self,"$enumerator_size",(function(){return $truthy(this["$respond_to?"]("size"))?this.$size():nil}),0),$def(self,"$max",(function $$max(n){var result,value,block=$$max.$$p||nil;return delete $$max.$$p,void 0===n||n===nil?(this.$each.$$p=function(){var item=$Opal.$destructure(arguments);void 0!==result?((value=block!==nil?$yieldX(block,[item,result]):item["$<=>"](result))===nil&&$Kernel.$raise($$$("ArgumentError"),"comparison failed"),value>0&&(result=item)):result=item},this.$each(),void 0===result?nil:result):(n=$coerce_to(n,$$$("Integer"),"to_int"),$send(this,"sort",[],block.$to_proc()).$reverse().$first(n))}),-1),$def(self,"$max_by",(function $$max_by(n){var result,by,block=$$max_by.$$p||nil;return delete $$max_by.$$p,null==n&&(n=nil),$truthy(block)?$truthy(n["$nil?"]())?(this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);if(void 0===result)return result=param,void(by=value);value["$<=>"](by)>0&&(result=param,by=value)},this.$each(),void 0===result?nil:result):$send(this,"sort_by",[],block.$to_proc()).$reverse().$take(n):$send(this,"enum_for",["max_by",n],(function $$37(){return(null==$$37.$$s?this:$$37.$$s).$enumerator_size()}),{$$arity:0,$$s:this})}),-1),$def(self,"$min",(function $$min(n){var result,block=$$min.$$p||nil;return delete $$min.$$p,null==n&&(n=nil),$truthy(n["$nil?"]())?(this.$each.$$p=block!==nil?function(){var param=$Opal.$destructure(arguments);if(void 0!==result){var value=block(param,result);value===nil&&$Kernel.$raise($$$("ArgumentError"),"comparison failed"),value<0&&(result=param)}else result=param}:function(){var param=$Opal.$destructure(arguments);void 0!==result?$Opal.$compare(param,result)<0&&(result=param):result=param},this.$each(),void 0===result?nil:result):block!==nil?$send(this,"sort",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),Opal.yieldX(block,[a,b])}),2).$take(n):this.$sort().$take(n)}),-1),$def(self,"$min_by",(function $$min_by(n){var result,by,block=$$min_by.$$p||nil;return delete $$min_by.$$p,null==n&&(n=nil),$truthy(block)?$truthy(n["$nil?"]())?(this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);if(void 0===result)return result=param,void(by=value);value["$<=>"](by)<0&&(result=param,by=value)},this.$each(),void 0===result?nil:result):$send(this,"sort_by",[],block.$to_proc()).$take(n):$send(this,"enum_for",["min_by",n],(function $$39(){return(null==$$39.$$s?this:$$39.$$s).$enumerator_size()}),{$$arity:0,$$s:this})}),-1),$def(self,"$minmax",(function $$minmax(){var $ret_or_1,block=$$minmax.$$p||nil;delete $$minmax.$$p,block=$truthy($ret_or_1=block)?$ret_or_1:$send($Kernel,"proc",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a["$<=>"](b)}),2);var min=nil,max=nil,first_time=!0;return this.$each.$$p=function(){var element=$Opal.$destructure(arguments);if(first_time)min=max=element,first_time=!1;else{var min_cmp=block.$call(min,element);min_cmp===nil?$Kernel.$raise($$$("ArgumentError"),"comparison failed"):min_cmp>0&&(min=element);var max_cmp=block.$call(max,element);max_cmp===nil?$Kernel.$raise($$$("ArgumentError"),"comparison failed"):max_cmp<0&&(max=element)}},this.$each(),[min,max]}),0),$def(self,"$minmax_by",(function $$minmax_by(){var block=$$minmax_by.$$p||nil;if(delete $$minmax_by.$$p,!$truthy(block))return $send(this,"enum_for",["minmax_by"],(function $$41(){return(null==$$41.$$s?this:$$41.$$s).$enumerator_size()}),{$$arity:0,$$s:this});var min_by,max_by,min_result=nil,max_result=nil;return this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);(void 0===min_by||value["$<=>"](min_by)<0)&&(min_result=param,min_by=value),(void 0===max_by||value["$<=>"](max_by)>0)&&(max_result=param,max_by=value)},this.$each(),[min_result,max_result]}),0),$def(self,"$none?",(function $Enumerable_none$ques$42(pattern){try{var block=$Enumerable_none$ques$42.$$p||nil;return delete $Enumerable_none$ques$42.$$p,$truthy(void 0!==pattern)?$send(this,"each",[],(function($a){var comparable=nil;if(comparable=comparableForPattern(Opal.slice.call(arguments)),!$truthy($send(pattern,"public_send",["==="].concat($to_a(comparable)))))return nil;Opal.ret(!1)}),-1):$send(this,"each",[],block!==nil?function($a){var value;if(value=Opal.slice.call(arguments),!$truthy(Opal.yieldX(block,$to_a(value))))return nil;Opal.ret(!1)}:function($a){var value,item=nil;if(value=Opal.slice.call(arguments),item=$Opal.$destructure(value),!$truthy(item))return nil;Opal.ret(!1)},-1),!0}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$one?",(function $Enumerable_one$ques$46(pattern){try{var block=$Enumerable_one$ques$46.$$p||nil,count=nil;return delete $Enumerable_one$ques$46.$$p,count=0,$truthy(void 0!==pattern)?$send(this,"each",[],(function($a){var comparable=nil;return comparable=comparableForPattern(Opal.slice.call(arguments)),$truthy($send(pattern,"public_send",["==="].concat($to_a(comparable))))?(count=$rb_plus(count,1),$truthy($rb_gt(count,1))?void Opal.ret(!1):nil):nil}),-1):$send(this,"each",[],block!==nil?function($a){var value;return value=Opal.slice.call(arguments),$truthy(Opal.yieldX(block,$to_a(value)))?(count=$rb_plus(count,1),$truthy($rb_gt(count,1))?void Opal.ret(!1):nil):nil}:function($a){var value;return value=Opal.slice.call(arguments),$truthy($Opal.$destructure(value))?(count=$rb_plus(count,1),$truthy($rb_gt(count,1))?void Opal.ret(!1):nil):nil},-1),count["$=="](1)}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$partition",(function $$partition(){var block=$$partition.$$p||nil;if(delete $$partition.$$p,block===nil)return $send(this,"enum_for",["partition"],(function $$50(){return(null==$$50.$$s?this:$$50.$$s).$enumerator_size()}),{$$arity:0,$$s:this});var truthy=[],falsy=[];return this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);$truthy(value)?truthy.push(param):falsy.push(param)},this.$each(),[truthy,falsy]}),0),$def(self,"$reject",(function $$reject(){var block=$$reject.$$p||nil;if(delete $$reject.$$p,block===nil)return $send(this,"enum_for",["reject"],(function $$51(){return(null==$$51.$$s?this:$$51.$$s).$enumerator_size()}),{$$arity:0,$$s:this});var result=[];return this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);$truthy(value)||result.push(param)},this.$each(),result}),0),$def(self,"$reverse_each",(function $$reverse_each(){var block=$$reverse_each.$$p||nil;if(delete $$reverse_each.$$p,block===nil)return $send(this,"enum_for",["reverse_each"],(function $$52(){return(null==$$52.$$s?this:$$52.$$s).$enumerator_size()}),{$$arity:0,$$s:this});var result=[];this.$each.$$p=function(){result.push(arguments)},this.$each();for(var i=result.length-1;i>=0;i--)$yieldX(block,result[i]);return result}),0),$def(self,"$slice_before",(function $$slice_before(pattern){var block=$$slice_before.$$p||nil,self=this;return delete $$slice_before.$$p,$truthy(void 0===pattern&&block===nil)&&$Kernel.$raise($$$("ArgumentError"),"both pattern and block are given"),$truthy(void 0!==pattern&&block!==nil||arguments.length>1)&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arguments.length+" expected 1)"),$send($$$("Enumerator"),"new",[],(function $$53(e){var self=null==$$53.$$s?this:$$53.$$s;null==e&&(e=nil);var slice=[];self.$each.$$p=block!==nil?void 0===pattern?function(){var param=$Opal.$destructure(arguments),value=$yield1(block,param);$truthy(value)&&slice.length>0&&(e["$<<"](slice),slice=[]),slice.push(param)}:function(){var param=$Opal.$destructure(arguments),value=block(param,pattern.$dup());$truthy(value)&&slice.length>0&&(e["$<<"](slice),slice=[]),slice.push(param)}:function(){var param=$Opal.$destructure(arguments),value=pattern["$==="](param);$truthy(value)&&slice.length>0&&(e["$<<"](slice),slice=[]),slice.push(param)},self.$each(),slice.length>0&&e["$<<"](slice)}),{$$arity:1,$$s:self})}),-1),$def(self,"$slice_after",(function $$slice_after(pattern){var block=$$slice_after.$$p||nil,self=this;return delete $$slice_after.$$p,$truthy(void 0===pattern&&block===nil)&&$Kernel.$raise($$$("ArgumentError"),"both pattern and block are given"),$truthy(void 0!==pattern&&block!==nil||arguments.length>1)&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arguments.length+" expected 1)"),$truthy(void 0!==pattern)&&(block=$send($Kernel,"proc",[],(function(e){return null==e&&(e=nil),pattern["$==="](e)}),1)),$send($$$("Enumerator"),"new",[],(function $$55(yielder){var accumulate,self=null==$$55.$$s?this:$$55.$$s;null==yielder&&(yielder=nil),self.$each.$$p=function(){var element=$Opal.$destructure(arguments),end_chunk=$yield1(block,element);null==accumulate&&(accumulate=[]),$truthy(end_chunk)?(accumulate.push(element),yielder.$yield(accumulate),accumulate=null):accumulate.push(element)},self.$each(),null!=accumulate&&yielder.$yield(accumulate)}),{$$arity:1,$$s:self})}),-1),$def(self,"$slice_when",(function $$slice_when(){var block=$$slice_when.$$p||nil;return delete $$slice_when.$$p,block===nil&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments (0 for 1)"),$send($$$("Enumerator"),"new",[],(function $$56(yielder){var self=null==$$56.$$s?this:$$56.$$s;null==yielder&&(yielder=nil);var slice=nil,last_after=nil;self.$each_cons.$$p=function(){var params=$Opal.$destructure(arguments),before=params[0],after=params[1],match=$yieldX(block,[before,after]);last_after=after,slice===nil&&(slice=[]),$truthy(match)?(slice.push(before),yielder.$yield(slice),slice=[]):slice.push(before)},self.$each_cons(2),slice!==nil&&(slice.push(last_after),yielder.$yield(slice))}),{$$arity:1,$$s:this})}),0),$def(self,"$sort",(function $$sort(){var ary,block=$$sort.$$p||nil;return delete $$sort.$$p,ary=this.$to_a(),block===nil&&(block=$lambda((function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a["$<=>"](b)}),2)),$send(ary,"sort",[],block.$to_proc())}),0),$def(self,"$sort_by",(function $$sort_by(){var dup,block=$$sort_by.$$p||nil;return delete $$sort_by.$$p,block===nil?$send(this,"enum_for",["sort_by"],(function $$58(){return(null==$$58.$$s?this:$$58.$$s).$enumerator_size()}),{$$arity:0,$$s:this}):(dup=$send(this,"map",[],(function(){var arg=nil;return arg=$Opal.$destructure(arguments),[Opal.yield1(block,arg),arg]}),0),$send(dup,"sort!",[],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),a[0]["$<=>"](b[0])}),2),$send(dup,"map!",[],(function(i){return null==i&&(i=nil),i[1]}),1))}),0),$def(self,"$sum",(function $$sum(initial){var $yield=$$sum.$$p||nil,result=nil,compensation=nil;return delete $$sum.$$p,null==initial&&(initial=0),result=initial,compensation=0,$send(this,"each",[],(function($a){var args,item=nil,y=nil,t=nil;return args=Opal.slice.call(arguments),item=$yield!==nil?Opal.yieldX($yield,$to_a(args)):$Opal.$destructure(args),$not([$$$($$$("Float"),"INFINITY"),$$$($$$("Float"),"INFINITY")["$-@"]()]["$include?"](item))&&$truthy(item["$respond_to?"]("-"))?(y=$rb_minus(item,compensation),t=$rb_plus(result,y),compensation=$rb_minus($rb_minus(t,result),y),result=t):result=$rb_plus(result,item)}),-1),result}),-1),$def(self,"$take",(function(num){return this.$first(num)}),1),$def(self,"$take_while",(function $$take_while(){try{var block=$$take_while.$$p||nil,result=nil;return delete $$take_while.$$p,$truthy(block)?(result=[],$send(this,"each",[],(function($a){var args,value=nil;return args=Opal.slice.call(arguments),value=$Opal.$destructure(args),$truthy(Opal.yield1(block,value))||Opal.ret(result),result.push(value)}),-1)):this.$enum_for("take_while")}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),0),$def(self,"$uniq",(function $$uniq(){var block=$$uniq.$$p||nil,hash=nil;return delete $$uniq.$$p,hash=$hash2([],{}),$send(this,"each",[],(function($a){var args,value=nil,produced=nil,$writer=nil;return args=Opal.slice.call(arguments),value=$Opal.$destructure(args),produced=block!==nil?Opal.yield1(block,value):value,$truthy(hash["$key?"](produced))?nil:($send(hash,"[]=",$to_a($writer=[produced,value])),$writer[$rb_minus($writer.length,1)])}),-1),hash.$values()}),0),$def(self,"$tally",(function(hash){var out;return out=$send($send(this,"group_by",[],"itself".$to_proc()),"transform_values",[],"count".$to_proc()),$truthy(hash)?($send(out,"each",[],(function(k,v){var $writer;return null==k&&(k=nil),null==v&&(v=nil),$writer=[k,$rb_plus(hash.$fetch(k,0),v)],$send(hash,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),2),hash):out}),-1),$def(self,"$to_h",(function $$to_h($a){var args,block=$$to_h.$$p||nil,self=this;if(delete $$to_h.$$p,args=Opal.slice.call(arguments),block!==nil)return $send($send(self,"map",[],block.$to_proc()),"to_h",$to_a(args));var hash=$hash2([],{});return self.$each.$$p=function(){var key,val,param=$Opal.$destructure(arguments),ary=$Opal["$coerce_to?"](param,$$$("Array"),"to_ary");ary.$$is_array||$Kernel.$raise($$$("TypeError"),"wrong element type "+ary.$class()+" (expected array)"),2!==ary.length&&$Kernel.$raise($$$("ArgumentError"),"wrong array length (expected 2, was "+ary.$length()+")"),key=ary[0],val=ary[1],Opal.hash_put(hash,key,val)},self.$each.apply(self,args),hash}),-1),$def(self,"$zip",(function $$zip($a){var others,self=this;return delete $$zip.$$p,others=Opal.slice.call(arguments),$send(self.$to_a(),"zip",$to_a(others))}),-1),$alias(self,"find","detect"),$alias(self,"filter","find_all"),$alias(self,"flat_map","collect_concat"),$alias(self,"map","collect"),$alias(self,"member?","include?"),$alias(self,"reduce","inject"),$alias(self,"select","find_all"),$alias(self,"to_a","entries")}()},Opal.modules["corelib/enumerator/arithmetic_sequence"]=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$truthy=Opal.truthy,$to_a=Opal.to_a,$eqeq=Opal.eqeq,$Kernel=Opal.Kernel,$def=Opal.def,$rb_gt=Opal.rb_gt,$rb_lt=Opal.rb_lt,$rb_le=Opal.rb_le,$rb_ge=Opal.rb_ge,$rb_plus=Opal.rb_plus,$rb_minus=Opal.rb_minus,$eqeqeq=Opal.eqeqeq,$not=Opal.not,$rb_times=Opal.rb_times,$rb_divide=Opal.rb_divide,$alias=Opal.alias;return Opal.add_stubs("is_a?,==,raise,respond_to?,class,attr_reader,begin,end,exclude_end?,>,step,<,<=,>=,-@,_lesser_than_end?,<<,+,-,===,%,_greater_than_begin?,reverse,!,include?,*,to_i,abs,/,hash,inspect"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Enumerator"),$nesting=[self].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"ArithmeticSequence"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;$proto.step_arg2=$proto.receiver_num=$proto.step_arg1=$proto.step=$proto.range=$proto.topfx=$proto.bypfx=$proto.creation_method=$proto.skipped_arg=nil,Opal.prop(self.$$prototype,"$$is_arithmetic_seq",!0);var inf=1/0;return $def(self,"$initialize",(function(range,step,creation_method){var $a,$ret_or_1=nil;return null==creation_method&&(creation_method="step"),this.creation_method=creation_method,$truthy(range["$is_a?"]($$$("Array")))?($a=[].concat($to_a(range)),this.step_arg1=null==$a[0]?nil:$a[0],this.step_arg2=null==$a[1]?nil:$a[1],this.topfx=null==$a[2]?nil:$a[2],this.bypfx=null==$a[3]?nil:$a[3],this.receiver_num=step,this.step=1,this.range=$truthy(this.step_arg2)?(this.step=this.step_arg2,Opal.Range.$new(this.receiver_num,this.step_arg1,!1)):$truthy(this.step_arg1)?Opal.Range.$new(this.receiver_num,this.step_arg1,!1):Opal.Range.$new(this.receiver_num,nil,!1)):($truthy(step)||(this.skipped_arg=!0),$a=[range,$truthy($ret_or_1=step)?$ret_or_1:1],this.range=$a[0],this.step=$a[1]),this.object=this,$eqeq(this.step,0)&&$Kernel.$raise($$("ArgumentError"),"step can't be 0"),$truthy(this.step["$respond_to?"]("to_int"))?nil:$Kernel.$raise($$("ArgumentError"),"no implicit conversion of "+this.step.$class()+" into Integer")}),-2),self.$attr_reader("step"),$def(self,"$begin",(function(){return this.range.$begin()}),0),$def(self,"$end",(function(){return this.range.$end()}),0),$def(self,"$exclude_end?",(function(){return this.range["$exclude_end?"]()}),0),$def(self,"$_lesser_than_end?",(function(val){var end_,$ret_or_1;return end_=$truthy($ret_or_1=this.$end())?$ret_or_1:inf,$truthy($rb_gt(this.$step(),0))?$truthy(this["$exclude_end?"]())?$rb_lt(val,end_):$rb_le(val,end_):$truthy(this["$exclude_end?"]())?$rb_gt(val,end_):$rb_ge(val,end_)}),1),$def(self,"$_greater_than_begin?",(function(val){var begin_,$ret_or_1;return begin_=$truthy($ret_or_1=this.$begin())?$ret_or_1:inf["$-@"](),$truthy($rb_gt(this.$step(),0))?$rb_gt(val,begin_):$rb_lt(val,begin_)}),1),$def(self,"$first",(function(count){var iter=nil,$ret_or_1=nil,out=nil;if(iter=$truthy($ret_or_1=this.$begin())?$ret_or_1:inf["$-@"](),!$truthy(count))return $truthy(this["$_lesser_than_end?"](iter))?iter:nil;for(out=[];$truthy($truthy($ret_or_1=this["$_lesser_than_end?"](iter))?$rb_gt(count,0):$ret_or_1);)out["$<<"](iter),iter=$rb_plus(iter,this.$step()),count=$rb_minus(count,1);return out}),-1),$def(self,"$each",(function $$each(){var $ret_or_1,block=$$each.$$p||nil,iter=nil;if(delete $$each.$$p,block===nil)return this;for($eqeqeq(nil,this.$begin())&&$Kernel.$raise($$("TypeError"),"nil can't be coerced into Integer"),iter=$truthy($ret_or_1=this.$begin())?$ret_or_1:inf["$-@"]();$truthy(this["$_lesser_than_end?"](iter));)Opal.yield1(block,iter),iter=$rb_plus(iter,this.$step());return this}),0),$def(self,"$last",(function(count){var $ret_or_1=nil,iter=nil,out=nil;if($eqeqeq(inf,$ret_or_1=this.$end())||$eqeqeq(inf["$-@"](),$ret_or_1)?$Kernel.$raise($$$("FloatDomainError"),this.$end()):$eqeqeq(nil,$ret_or_1)&&$Kernel.$raise($$$("RangeError"),"cannot get the last element of endless arithmetic sequence"),iter=$rb_minus(this.$end(),$rb_minus(this.$end(),this.$begin())["$%"](this.$step())),$truthy(this["$_lesser_than_end?"](iter))||(iter=$rb_minus(iter,this.$step())),!$truthy(count))return $truthy(this["$_greater_than_begin?"](iter))?iter:nil;for(out=[];$truthy($truthy($ret_or_1=this["$_greater_than_begin?"](iter))?$rb_gt(count,0):$ret_or_1);)out["$<<"](iter),iter=$rb_minus(iter,this.$step()),count=$rb_minus(count,1);return out.$reverse()}),-1),$def(self,"$size",(function(){var step_sign,iter=nil;return step_sign=$truthy($rb_gt(this.$step(),0))?1:-1,$not(this["$_lesser_than_end?"](this.$begin()))?0:$truthy([inf["$-@"](),inf]["$include?"](this.$step()))?1:$truthy([$rb_times(inf["$-@"](),step_sign),nil]["$include?"](this.$begin()))||$truthy([$rb_times(inf,step_sign),nil]["$include?"](this.$end()))?inf:(iter=$rb_minus(this.$end(),$rb_minus(this.$end(),this.$begin())["$%"](this.$step())),$truthy(this["$_lesser_than_end?"](iter))||(iter=$rb_minus(iter,this.$step())),$rb_plus($rb_divide($rb_minus(iter,this.$begin()),this.$step()).$abs().$to_i(),1))}),0),$def(self,"$==",(function(other){var $ret_or_1,$ret_or_2,$ret_or_3,$ret_or_4;return $truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=$truthy($ret_or_4=this.$class()["$=="](other.$class()))?this.$begin()["$=="](other.$begin()):$ret_or_4)?this.$end()["$=="](other.$end()):$ret_or_3)?this.$step()["$=="](other.$step()):$ret_or_2)?this["$exclude_end?"]()["$=="](other["$exclude_end?"]()):$ret_or_1}),1),$def(self,"$hash",(function(){return[this.$begin(),this.$end(),this.$step(),this["$exclude_end?"]()].$hash()}),0),$def(self,"$inspect",(function(){var args=nil;return $truthy(this.receiver_num)?(args=$truthy(this.step_arg2)?"("+this.topfx+this.step_arg1.$inspect()+", "+this.bypfx+this.step_arg2.$inspect()+")":$truthy(this.step_arg1)?"("+this.topfx+this.step_arg1.$inspect()+")":nil,"("+this.receiver_num.$inspect()+"."+this.creation_method+args+")"):(args=$truthy(this.skipped_arg)?nil:"("+this.step+")","(("+this.range.$inspect()+")."+this.creation_method+args+")")}),0),$alias(self,"===","=="),$alias(self,"eql?","==")}(self,self,$nesting)}(0,0,[])},Opal.modules["corelib/enumerator/chain"]=function(Opal){var self,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a,$truthy=Opal.truthy,$rb_plus=Opal.rb_plus;return Opal.add_stubs("to_enum,size,each,<<,to_proc,include?,+,reverse_each,respond_to?,rewind,inspect"),function($base,$super){var self=$klass($base,$super,"Chain"),$proto=self.$$prototype;return $proto.enums=$proto.iterated=nil,$def(self,"$initialize",(function($a){var enums,self=this;return enums=Opal.slice.call(arguments),self.enums=enums,self.iterated=[],self.object=self}),-1),$def(self,"$each",(function $$each($a){var $post_args,args,block=$$each.$$p||nil,self=this;return delete $$each.$$p,$post_args=Opal.slice.call(arguments),args=$post_args,block===nil?$send(self,"to_enum",["each"].concat($to_a(args)),(function $$1(){return(null==$$1.$$s?this:$$1.$$s).$size()}),{$$arity:0,$$s:self}):($send(self.enums,"each",[],(function $$2(enum$){var self=null==$$2.$$s?this:$$2.$$s;return null==self.iterated&&(self.iterated=nil),null==enum$&&(enum$=nil),self.iterated["$<<"](enum$),$send(enum$,"each",$to_a(args),block.$to_proc())}),{$$arity:1,$$s:self}),self)}),-1),$def(self,"$size",(function($a){try{var $post_args,args,self=this,accum=nil;return $post_args=Opal.slice.call(arguments),args=$post_args,accum=0,$send(self.enums,"each",[],(function(enum$){var size;return null==enum$&&(enum$=nil),size=$send(enum$,"size",$to_a(args)),$truthy([nil,$$$($$$("Float"),"INFINITY")]["$include?"](size))&&Opal.ret(size),accum=$rb_plus(accum,size)}),1),accum}catch($returner){if($returner===Opal.returner)return $returner.$v;throw $returner}}),-1),$def(self,"$rewind",(function(){return $send(this.iterated,"reverse_each",[],(function(enum$){return null==enum$&&(enum$=nil),$truthy(enum$["$respond_to?"]("rewind"))?enum$.$rewind():nil}),1),this.iterated=[],this}),0),$def(self,"$inspect",(function(){return"#"}),0)}(self=$klass("::",null,"Enumerator"),self)},Opal.modules["corelib/enumerator/generator"]=function(Opal){var $nesting=[],nil=Opal.nil,$$$=Opal.$$$,$breaker=Opal.breaker,$klass=Opal.klass,$truthy=Opal.truthy,$Kernel=Opal.Kernel,$def=Opal.def,$send=Opal.send;return Opal.add_stubs("include,raise,new,to_proc"),function($base,$super,$parent_nesting){var $nesting=[$klass($base,null,"Enumerator")].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,null,"Generator"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.block=nil,self.$include($$$("Enumerable")),$def(self,"$initialize",(function $$initialize(){var block=$$initialize.$$p||nil;return delete $$initialize.$$p,$truthy(block)||$Kernel.$raise($$$("LocalJumpError"),"no block given"),this.block=block}),0),$def(self,"$each",(function $$each($a){var args,block=$$each.$$p||nil,self=this,yielder=nil;delete $$each.$$p,args=Opal.slice.call(arguments),yielder=$send($$("Yielder"),"new",[],block.$to_proc());try{args.unshift(yielder),Opal.yieldX(self.block,args)}catch(e){if(e===$breaker)return $breaker.$v;throw e}return self}),-1)}($nesting[0],0,$nesting)}($nesting[0],0,$nesting)},Opal.modules["corelib/enumerator/lazy"]=function(Opal){var nil=Opal.nil,$$$=Opal.$$$,$truthy=Opal.truthy,$coerce_to=Opal.coerce_to,$yield1=Opal.yield1,$yieldX=Opal.yieldX,$klass=Opal.klass,$send2=Opal.send2,$find_super=Opal.find_super,$to_a=Opal.to_a,$defs=Opal.defs,$Kernel=Opal.Kernel,$send=Opal.send,$def=Opal.def,$Opal=Opal.Opal,$rb_lt=Opal.rb_lt,$eqeqeq=Opal.eqeqeq,$rb_plus=Opal.rb_plus,$alias=Opal.alias;return Opal.add_stubs("raise,each,new,enumerator_size,yield,respond_to?,try_convert,<,===,+,for,class,to_proc,destructure,inspect"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Enumerator"),$nesting=[self].concat($parent_nesting);return function($base,$super,$parent_nesting){var self=$klass($base,$super,"Lazy"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$$prototype.enumerator=nil,$klass(self,$$$("Exception"),"StopLazyError"),$defs(self,"$for",(function $Lazy_for$1(object,$a){var $rest_arg,$yield=$Lazy_for$1.$$p||nil,self=this,lazy=nil;return delete $Lazy_for$1.$$p,$rest_arg=Opal.slice.call(arguments,1),(lazy=$send2(self,$find_super(self,"for",$Lazy_for$1,!1,!0),"for",[object].concat($to_a($rest_arg)),$yield)).enumerator=object,lazy}),-2),$def(self,"$initialize",(function $$initialize(object,size){var block=$$initialize.$$p||nil;return delete $$initialize.$$p,null==size&&(size=nil),block===nil&&$Kernel.$raise($$$("ArgumentError"),"tried to call lazy new without a block"),this.enumerator=object,$send2(this,$find_super(this,"initialize",$$initialize,!1,!0),"initialize",[size],(function(yielder,$a){var each_args;null==yielder&&(yielder=nil),each_args=Opal.slice.call(arguments,1);try{return $send(object,"each",$to_a(each_args),(function($b){var args;(args=Opal.slice.call(arguments)).unshift(yielder),$yieldX(block,args)}),-1)}catch($err){if(!Opal.rescue($err,[$$("StopLazyError")]))throw $err;try{return nil}finally{Opal.pop_exception()}}}),-2)}),-2),$def(self,"$lazy",(function(){return this}),0),$def(self,"$collect",(function $$collect(){var block=$$collect.$$p||nil;return delete $$collect.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to call lazy map without a block"),$send($$("Lazy"),"new",[this,this.$enumerator_size()],(function(enum$,$a){var $post_args;null==enum$&&(enum$=nil),$post_args=Opal.slice.call(arguments,1);var value=$yieldX(block,$post_args);enum$.$yield(value)}),-2)}),0),$def(self,"$collect_concat",(function $$collect_concat(){var block=$$collect_concat.$$p||nil;return delete $$collect_concat.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to call lazy map without a block"),$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var $post_args;null==enum$&&(enum$=nil),$post_args=Opal.slice.call(arguments,1);var value=$yieldX(block,$post_args);if(value["$respond_to?"]("force")&&value["$respond_to?"]("each"))$send(value,"each",[],(function(v){return null==v&&(v=nil),enum$.$yield(v)}),1);else{var array=$Opal.$try_convert(value,$$$("Array"),"to_ary");array===nil?enum$.$yield(value):$send(value,"each",[],(function(v){return null==v&&(v=nil),enum$.$yield(v)}),1)}}),-2)}),0),$def(self,"$drop",(function(n){var current_size,set_size,dropped=nil;return n=$coerce_to(n,$$$("Integer"),"to_int"),$truthy($rb_lt(n,0))&&$Kernel.$raise($$$("ArgumentError"),"attempt to drop negative size"),current_size=this.$enumerator_size(),set_size=$eqeqeq($$$("Integer"),current_size)&&$truthy($rb_lt(n,current_size))?n:current_size,dropped=0,$send($$("Lazy"),"new",[this,set_size],(function(enum$,$a){var args;return null==enum$&&(enum$=nil),args=Opal.slice.call(arguments,1),$truthy($rb_lt(dropped,n))?dropped=$rb_plus(dropped,1):$send(enum$,"yield",$to_a(args))}),-2)}),1),$def(self,"$drop_while",(function $$drop_while(){var block=$$drop_while.$$p||nil,succeeding=nil;return delete $$drop_while.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to call lazy drop_while without a block"),succeeding=!0,$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var args;if(null==enum$&&(enum$=nil),args=Opal.slice.call(arguments,1),!$truthy(succeeding))return $send(enum$,"yield",$to_a(args));var value=$yieldX(block,args);$truthy(value)||(succeeding=!1,$send(enum$,"yield",$to_a(args)))}),-2)}),0),$def(self,"$enum_for",(function $$enum_for($a,$b){var $post_args,method,args,block=$$enum_for.$$p||nil,self=this;return delete $$enum_for.$$p,($post_args=Opal.slice.call(arguments)).length>0&&(method=$post_args.shift()),null==method&&(method="each"),args=$post_args,$send(self.$class(),"for",[self,method].concat($to_a(args)),block.$to_proc())}),-1),$def(self,"$find_all",(function $$find_all(){var block=$$find_all.$$p||nil;return delete $$find_all.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to call lazy select without a block"),$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var $post_args,args;null==enum$&&(enum$=nil),$post_args=Opal.slice.call(arguments,1);var value=$yieldX(block,args=$post_args);$truthy(value)&&$send(enum$,"yield",$to_a(args))}),-2)}),0),$def(self,"$grep",(function $$grep(pattern){var block=$$grep.$$p||nil;return delete $$grep.$$p,$truthy(block)?$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var args;null==enum$&&(enum$=nil),args=Opal.slice.call(arguments,1);var param=$Opal.$destructure(args),value=pattern["$==="](param);$truthy(value)&&(value=$yield1(block,param),enum$.$yield($yield1(block,param)))}),-2):$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var args;null==enum$&&(enum$=nil),args=Opal.slice.call(arguments,1);var param=$Opal.$destructure(args),value=pattern["$==="](param);$truthy(value)&&enum$.$yield(param)}),-2)}),1),$def(self,"$reject",(function $$reject(){var block=$$reject.$$p||nil;return delete $$reject.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to call lazy reject without a block"),$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var $post_args,args;null==enum$&&(enum$=nil),$post_args=Opal.slice.call(arguments,1);var value=$yieldX(block,args=$post_args);$truthy(value)||$send(enum$,"yield",$to_a(args))}),-2)}),0),$def(self,"$take",(function(n){var current_size,set_size,taken=nil;return n=$coerce_to(n,$$$("Integer"),"to_int"),$truthy($rb_lt(n,0))&&$Kernel.$raise($$$("ArgumentError"),"attempt to take negative size"),current_size=this.$enumerator_size(),set_size=$eqeqeq($$$("Integer"),current_size)&&$truthy($rb_lt(n,current_size))?n:current_size,taken=0,$send($$("Lazy"),"new",[this,set_size],(function(enum$,$a){var args;return null==enum$&&(enum$=nil),args=Opal.slice.call(arguments,1),$truthy($rb_lt(taken,n))?($send(enum$,"yield",$to_a(args)),taken=$rb_plus(taken,1)):$Kernel.$raise($$("StopLazyError"))}),-2)}),1),$def(self,"$take_while",(function $$take_while(){var block=$$take_while.$$p||nil;return delete $$take_while.$$p,$truthy(block)||$Kernel.$raise($$$("ArgumentError"),"tried to call lazy take_while without a block"),$send($$("Lazy"),"new",[this,nil],(function(enum$,$a){var $post_args,args;null==enum$&&(enum$=nil),$post_args=Opal.slice.call(arguments,1);var value=$yieldX(block,args=$post_args);$truthy(value)?$send(enum$,"yield",$to_a(args)):$Kernel.$raise($$("StopLazyError"))}),-2)}),0),$def(self,"$inspect",(function(){return"#<"+this.$class()+": "+this.enumerator.$inspect()+">"}),0),$alias(self,"force","to_a"),$alias(self,"filter","find_all"),$alias(self,"flat_map","collect_concat"),$alias(self,"map","collect"),$alias(self,"select","find_all"),$alias(self,"to_enum","enum_for")}(self,self,$nesting)}(0,0,[])},Opal.modules["corelib/enumerator/yielder"]=function(Opal){var $base,$parent_nesting,$nesting=[],nil=Opal.nil,$breaker=Opal.breaker,$klass=Opal.klass,$def=Opal.def,$send=Opal.send,$to_a=Opal.to_a;return Opal.add_stubs("yield,proc"),$base=$nesting[0],$parent_nesting=$nesting,function($base,$super){var self=$klass($base,null,"Yielder");return self.$$prototype.block=nil,$def(self,"$initialize",(function $$initialize(){var block=$$initialize.$$p||nil;return delete $$initialize.$$p,this.block=block,this}),0),$def(self,"$yield",(function($a){var values,self=this;values=Opal.slice.call(arguments);var value=Opal.yieldX(self.block,values);if(value===$breaker)throw $breaker;return value}),-1),$def(self,"$<<",(function(value){return this.$yield(value),this}),1),$def(self,"$to_proc",(function(){return $send(this,"proc",[],(function $$3($a){var $post_args,self=null==$$3.$$s?this:$$3.$$s;return $post_args=Opal.slice.call(arguments),$send(self,"yield",$to_a($post_args))}),{$$arity:-1,$$s:this})}),0)}([$klass($base,null,"Enumerator")].concat($parent_nesting)[0])},Opal.modules["corelib/enumerator"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$slice=Opal.slice,$coerce_to=Opal.coerce_to,$klass=Opal.klass,$defs=Opal.defs,$truthy=Opal.truthy,$send=Opal.send,$not=Opal.not,$def=Opal.def,$rb_plus=Opal.rb_plus,$to_a=Opal.to_a,$Opal=Opal.Opal,$send2=Opal.send2,$find_super=Opal.find_super,$rb_ge=Opal.rb_ge,$Kernel=Opal.Kernel,$rb_le=Opal.rb_le,$alias=Opal.alias;return Opal.add_stubs("require,include,allocate,new,to_proc,!,respond_to?,empty?,nil?,+,class,__send__,call,enum_for,size,destructure,map,>=,length,raise,[],peek_values,<=,next_values,inspect,any?,autoload"),self.$require("corelib/enumerable"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Enumerator"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.size=$proto.args=$proto.object=$proto.method=$proto.values=$proto.cursor=nil,self.$include($$$("Enumerable")),self.$$prototype.$$is_enumerator=!0,$defs(self,"$for",(function $Enumerator_for$1(object,$a,$b){var $post_args,method,args,block=$Enumerator_for$1.$$p||nil,self=this;delete $Enumerator_for$1.$$p,($post_args=Opal.slice.call(arguments,1)).length>0&&(method=$post_args.shift()),null==method&&(method="each"),args=$post_args;var obj=self.$allocate();return obj.object=object,obj.size=block,obj.method=method,obj.args=args,obj.cursor=0,obj}),-2),$def(self,"$initialize",(function $$initialize($a){var block=$$initialize.$$p||nil,self=this;return delete $$initialize.$$p,Opal.slice.call(arguments),self.cursor=0,$truthy(block)?(self.object=$send($$("Generator"),"new",[],block.$to_proc()),self.method="each",self.args=[],self.size=arguments[0]||nil,$truthy(self.size)&&$not(self.size["$respond_to?"]("call"))?self.size=$coerce_to(self.size,$$$("Integer"),"to_int"):nil):(self.object=arguments[0],self.method=arguments[1]||"each",self.args=$slice.call(arguments,2),self.size=nil)}),-1),$def(self,"$each",(function $$each($a){var args,block=$$each.$$p||nil,self=this;return delete $$each.$$p,args=Opal.slice.call(arguments),$truthy(block["$nil?"]())&&$truthy(args["$empty?"]())?self:(args=$rb_plus(self.args,args),$truthy(block["$nil?"]())?$send(self.$class(),"new",[self.object,self.method].concat($to_a(args))):$send(self.object,"__send__",[self.method].concat($to_a(args)),block.$to_proc()))}),-1),$def(self,"$size",(function(){return $truthy(this.size["$respond_to?"]("call"))?$send(this.size,"call",$to_a(this.args)):this.size}),0),$def(self,"$with_index",(function $$with_index(offset){var block=$$with_index.$$p||nil;if(delete $$with_index.$$p,null==offset&&(offset=0),offset=$truthy(offset)?$coerce_to(offset,$$$("Integer"),"to_int"):0,!$truthy(block))return $send(this,"enum_for",["with_index",offset],(function $$2(){return(null==$$2.$$s?this:$$2.$$s).$size()}),{$$arity:0,$$s:this});var index=offset;return this.$each.$$p=function(){var param=$Opal.$destructure(arguments),value=block(param,index);return index++,value},this.$each()}),-1),$def(self,"$each_with_index",(function $$each_with_index(){var block=$$each_with_index.$$p||nil;return delete $$each_with_index.$$p,block===nil?$send(this,"enum_for",["each_with_index"],(function $$3(){return(null==$$3.$$s?this:$$3.$$s).$size()}),{$$arity:0,$$s:this}):($send2(this,$find_super(this,"each_with_index",$$each_with_index,!1,!0),"each_with_index",[],block),this.object)}),0),$def(self,"$rewind",(function(){return this.cursor=0,this}),0),$def(self,"$peek_values",(function(){var $ret_or_1;return this.values=$truthy($ret_or_1=this.values)?$ret_or_1:$send(this,"map",[],(function($a){return Opal.slice.call(arguments)}),-1),$truthy($rb_ge(this.cursor,this.values.$length()))&&$Kernel.$raise($$$("StopIteration"),"iteration reached an end"),this.values["$[]"](this.cursor)}),0),$def(self,"$peek",(function(){var values=nil;return values=this.$peek_values(),$truthy($rb_le(values.$length(),1))?values["$[]"](0):values}),0),$def(self,"$next_values",(function(){var out;return out=this.$peek_values(),this.cursor=$rb_plus(this.cursor,1),out}),0),$def(self,"$next",(function(){var values=nil;return values=this.$next_values(),$truthy($rb_le(values.$length(),1))?values["$[]"](0):values}),0),$def(self,"$feed",(function(arg){return this.$raise($$("NotImplementedError"),"Opal doesn't support Enumerator#feed")}),1),$def(self,"$+",(function(other){return $$$($$$("Enumerator"),"Chain").$new(this,other)}),1),$def(self,"$inspect",(function(){var result=nil;return result="#<"+this.$class()+": "+this.object.$inspect()+":"+this.method,$truthy(this.args["$any?"]())&&(result=$rb_plus(result,"("+this.args.$inspect()["$[]"]($$$("Range").$new(1,-2))+")")),$rb_plus(result,">")}),0),$alias(self,"with_object","each_with_object"),self.$autoload("ArithmeticSequence","corelib/enumerator/arithmetic_sequence"),self.$autoload("Chain","corelib/enumerator/chain"),self.$autoload("Generator","corelib/enumerator/generator"),self.$autoload("Lazy","corelib/enumerator/lazy"),self.$autoload("Yielder","corelib/enumerator/yielder")}(0,0,[])},Opal.modules["corelib/numeric"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$truthy=Opal.truthy,$Kernel=Opal.Kernel,$def=Opal.def,$to_ary=Opal.to_ary,$eqeqeq=Opal.eqeqeq,$rb_minus=Opal.rb_minus,$rb_times=Opal.rb_times,$rb_lt=Opal.rb_lt,$eqeq=Opal.eqeq,$rb_divide=Opal.rb_divide,$Opal=Opal.Opal,$hash2=Opal.hash2,$not=Opal.not,$send=Opal.send,$rb_ge=Opal.rb_ge,$rb_le=Opal.rb_le,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt,$alias=Opal.alias;return Opal.add_stubs("require,include,instance_of?,class,Float,respond_to?,coerce,__send__,===,raise,equal?,-,*,div,<,-@,ceil,to_f,denominator,to_r,==,floor,/,%,Complex,zero?,numerator,abs,arg,coerce_to!,round,<=>,compare,is_a?,!,new,enum_for,to_proc,negative?,>=,<=,+,to_i,truncate,>"),self.$require("corelib/comparable"),function($base,$super){var self=$klass("::",null,"Numeric");return self.$include($$$("Comparable")),$def(self,"$coerce",(function(other){return $truthy(other["$instance_of?"](this.$class()))?[other,this]:[$Kernel.$Float(other),$Kernel.$Float(this)]}),1),$def(self,"$__coerced__",(function(method,other){var $a,$b,a=nil,b=nil,$ret_or_1=nil;return $truthy(other["$respond_to?"]("coerce"))?($b=other.$coerce(this),a=null==($a=$to_ary($b))[0]?nil:$a[0],b=null==$a[1]?nil:$a[1],a.$__send__(method,b)):$eqeqeq("+",$ret_or_1=method)||$eqeqeq("-",$ret_or_1)||$eqeqeq("*",$ret_or_1)||$eqeqeq("/",$ret_or_1)||$eqeqeq("%",$ret_or_1)||$eqeqeq("&",$ret_or_1)||$eqeqeq("|",$ret_or_1)||$eqeqeq("^",$ret_or_1)||$eqeqeq("**",$ret_or_1)?$Kernel.$raise($$$("TypeError"),other.$class()+" can't be coerced into Numeric"):$eqeqeq(">",$ret_or_1)||$eqeqeq(">=",$ret_or_1)||$eqeqeq("<",$ret_or_1)||$eqeqeq("<=",$ret_or_1)||$eqeqeq("<=>",$ret_or_1)?$Kernel.$raise($$$("ArgumentError"),"comparison of "+this.$class()+" with "+other.$class()+" failed"):nil}),2),$def(self,"$<=>",(function(other){return $truthy(this["$equal?"](other))?0:nil}),1),$def(self,"$+@",(function(){return this}),0),$def(self,"$-@",(function(){return $rb_minus(0,this)}),0),$def(self,"$%",(function(other){return $rb_minus(this,$rb_times(other,this.$div(other)))}),1),$def(self,"$abs",(function(){return $rb_lt(this,0)?this["$-@"]():this}),0),$def(self,"$abs2",(function(){return $rb_times(this,this)}),0),$def(self,"$angle",(function(){return $rb_lt(this,0)?$$$($$$("Math"),"PI"):0}),0),$def(self,"$ceil",(function(ndigits){return null==ndigits&&(ndigits=0),this.$to_f().$ceil(ndigits)}),-1),$def(self,"$conj",(function(){return this}),0),$def(self,"$denominator",(function(){return this.$to_r().$denominator()}),0),$def(self,"$div",(function(other){return $eqeq(other,0)&&$Kernel.$raise($$$("ZeroDivisionError"),"divided by o"),$rb_divide(this,other).$floor()}),1),$def(self,"$divmod",(function(other){return[this.$div(other),this["$%"](other)]}),1),$def(self,"$fdiv",(function(other){return $rb_divide(this.$to_f(),other)}),1),$def(self,"$floor",(function(ndigits){return null==ndigits&&(ndigits=0),this.$to_f().$floor(ndigits)}),-1),$def(self,"$i",(function(){return $Kernel.$Complex(0,this)}),0),$def(self,"$imag",(function(){return 0}),0),$def(self,"$integer?",(function(){return!1}),0),$def(self,"$nonzero?",(function(){return $truthy(this["$zero?"]())?nil:this}),0),$def(self,"$numerator",(function(){return this.$to_r().$numerator()}),0),$def(self,"$polar",(function(){return[this.$abs(),this.$arg()]}),0),$def(self,"$quo",(function(other){return $rb_divide($Opal["$coerce_to!"](this,$$$("Rational"),"to_r"),other)}),1),$def(self,"$real",(function(){return this}),0),$def(self,"$real?",(function(){return!0}),0),$def(self,"$rect",(function(){return[this,0]}),0),$def(self,"$round",(function(digits){return this.$to_f().$round(digits)}),-1),$def(self,"$step",(function $$step($a,$b,$c){var $post_args,$kwargs,limit,step,to,by,block=$$step.$$p||nil,self=this,counter=nil;if(delete $$step.$$p,$post_args=Opal.slice.call(arguments),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");function validateParameters(){step===nil&&$Kernel.$raise($$$("TypeError"),"step must be numeric"),null!=step&&step["$=="](0)&&$Kernel.$raise($$$("ArgumentError"),"step can't be 0"),step!==nil&&null!=step||(step=1);var sign=step["$<=>"](0);sign===nil&&$Kernel.$raise($$$("ArgumentError"),"0 can't be coerced into "+step.$class()),limit!==nil&&null!=limit||(limit=sign>0?$$$($$$("Float"),"INFINITY"):$$$($$$("Float"),"INFINITY")["$-@"]()),$Opal.$compare(self,limit)}function stepFloatSize(){if(step>0&&self>limit||step<0&&self.5&&(err=.5),floor((limit-self)/step+err)+1)}function stepSize(){if(validateParameters(),0===step)return 1/0;if(step%1!=0)return stepFloatSize();if(step>0&&self>limit||step<0&&self0&&(limit=$post_args.shift()),$post_args.length>0&&(step=$post_args.shift()),to=$kwargs.$$smap.to,by=$kwargs.$$smap.by,void 0!==limit&&void 0!==to&&$Kernel.$raise($$$("ArgumentError"),"to is given twice"),void 0!==step&&void 0!==by&&$Kernel.$raise($$$("ArgumentError"),"step is given twice"),void 0!==to&&(limit=to),void 0!==by&&(step=by),void 0===limit&&(limit=nil),block===nil)return($not(limit)||$truthy(limit["$is_a?"]($$$("Numeric"))))&&($not(step)||$truthy(step["$is_a?"]($$$("Numeric"))))?$$$($$$("Enumerator"),"ArithmeticSequence").$new([limit,step,$truthy(to)?"to: ":nil,$truthy(by)?"by: ":nil],self):$send(self,"enum_for",["step",limit,step],stepSize.$to_proc());validateParameters();var isDesc=step["$negative?"](),isInf=step["$=="](0)||limit===1/0&&!isDesc||limit===-1/0&&isDesc;if(self.$$is_number&&step.$$is_number&&limit.$$is_number){if(self%1!=0||!isInf&&limit%1!=0||step%1!=0){var begin=self.$to_f().valueOf();step=step.$to_f().valueOf(),limit=limit.$to_f().valueOf();var n=stepFloatSize();if(isFinite(step))if(0===step)for(;;)block(begin);else for(var i=0;i=0?limitd)&&(d=limit),block(d)}else 0!==n&&block(begin);return self}var value=self;if(isInf)for(;;value+=step)block(value);else if(isDesc)for(;value>=limit;value+=step)block(value);else for(;value<=limit;value+=step)block(value);return self}for(counter=self;$truthy(isDesc?$rb_ge(counter,limit):$rb_le(counter,limit));)Opal.yield1(block,counter),counter=$rb_plus(counter,step)}),-1),$def(self,"$to_c",(function(){return $Kernel.$Complex(this,0)}),0),$def(self,"$to_int",(function(){return this.$to_i()}),0),$def(self,"$truncate",(function(ndigits){return null==ndigits&&(ndigits=0),this.$to_f().$truncate(ndigits)}),-1),$def(self,"$zero?",(function(){return this["$=="](0)}),0),$def(self,"$positive?",(function(){return $rb_gt(this,0)}),0),$def(self,"$negative?",(function(){return $rb_lt(this,0)}),0),$def(self,"$dup",(function(){return this}),0),$def(self,"$clone",(function($kwargs){if(null==$kwargs)$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");return null==$kwargs.$$smap.freeze&&!0,this}),-1),$def(self,"$finite?",(function(){return!0}),0),$def(self,"$infinite?",(function(){return nil}),0),$alias(self,"arg","angle"),$alias(self,"conjugate","conj"),$alias(self,"imaginary","imag"),$alias(self,"magnitude","abs"),$alias(self,"modulo","%"),$alias(self,"phase","arg"),$alias(self,"rectangular","rect")}()},Opal.modules["corelib/array"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$truthy=Opal.truthy,$falsy=Opal.falsy,$hash_ids=Opal.hash_ids,$yield1=Opal.yield1,$hash_get=Opal.hash_get,$hash_put=Opal.hash_put,$hash_delete=Opal.hash_delete,$coerce_to=Opal.coerce_to,$respond_to=Opal.respond_to,$klass=Opal.klass,$defs=Opal.defs,$Kernel=Opal.Kernel,$def=Opal.def,$Opal=Opal.Opal,$eqeqeq=Opal.eqeqeq,$hash2=Opal.hash2,$send2=Opal.send2,$find_super=Opal.find_super,$send=Opal.send,$rb_gt=Opal.rb_gt,$rb_times=Opal.rb_times,$eqeq=Opal.eqeq,$rb_minus=Opal.rb_minus,$to_a=Opal.to_a,$to_ary=Opal.to_ary,$gvars=Opal.gvars,$rb_ge=Opal.rb_ge,$rb_lt=Opal.rb_lt,$neqeq=Opal.neqeq,$alias=Opal.alias;return Opal.add_stubs("require,include,to_a,warn,raise,replace,respond_to?,to_ary,coerce_to?,===,join,to_str,hash,<=>,==,object_id,inspect,enum_for,class,bsearch_index,to_proc,nil?,coerce_to!,>,*,enumerator_size,empty?,size,map,equal?,dup,each,reduce,-,[],dig,eql?,length,exclude_end?,flatten,__id__,&,!,intersection,to_s,new,item,max,min,>=,**,delete_if,reverse,rotate,rand,at,keep_if,shuffle!,<,sort,sort_by,!=,times,[]=,<<,uniq,|,values,is_a?,end,begin,upto,reject,pristine,singleton_class"),self.$require("corelib/enumerable"),self.$require("corelib/numeric"),function($base,$super,$parent_nesting){var self=$klass("::",Array,"Array"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);function toArraySubclass(obj,klass){return klass.$$name===Opal.Array?obj:klass.$allocate().$replace(obj.$to_a())}function filterIf(self,filter,block){for(var value,raised=null,updated=new Array(self.length),i=0,i2=0,length=self.length;isize?nil:to<0&&(to+=size)<0?[]:(exclude&&index.end!==nil||(to+=1),self.slice(from,to)))}function binomial_coefficient(n,k){return n===k||0===k?1:k>0&&n>k?binomial_coefficient(n-1,k-1)+binomial_coefficient(n-1,k):0}self.$include($$$("Enumerable")),Opal.prop(self.$$prototype,"$$is_array",!0),$defs(self,"$[]",(function($a){var self=this;return toArraySubclass(Opal.slice.call(arguments),self)}),-1),$def(self,"$initialize",(function $$initialize(size,obj){var i,value,block=$$initialize.$$p||nil,self=this;if(delete $$initialize.$$p,null==size&&(size=nil),null==obj&&(obj=nil),obj!==nil&&block!==nil&&$Kernel.$warn("warning: block supersedes default value argument"),size>$$$($$$("Integer"),"MAX")&&$Kernel.$raise($$$("ArgumentError"),"array size too big"),arguments.length>2&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arguments.length+" for 0..2)"),0===arguments.length)return self.splice(0,self.length),self;if(1===arguments.length){if(size.$$is_array)return self.$replace(size.$to_a()),self;if(size["$respond_to?"]("to_ary"))return self.$replace(size.$to_ary()),self}if((size=$coerce_to(size,$$$("Integer"),"to_int"))<0&&$Kernel.$raise($$$("ArgumentError"),"negative array size"),self.splice(0,self.length),block===nil)for(i=0;i",(function(other){if($eqeqeq($$$("Array"),other))other=other.$to_a();else{if(!$truthy(other["$respond_to?"]("to_ary")))return nil;other=other.$to_ary().$to_a()}if(this.$hash()===other.$hash())return 0;for(var count=Math.min(this.length,other.length),i=0;i"](other[i]);if(0!==tmp)return tmp}return this.length["$<=>"](other.length)}),1),$def(self,"$==",(function(other){var recursed={};return function _eqeq(array,other){var i,length,a,b;if(array===other)return!0;if(!other.$$is_array)return!!$respond_to(other,"$to_ary")&&other["$=="](array);if(array.$$constructor!==Array&&(array=array.$to_a()),other.$$constructor!==Array&&(other=other.$to_a()),array.length!==other.length)return!1;for(recursed[array.$object_id()]=!0,i=0,length=array.length;i=size||index<0?nil:self[index]:(length=$coerce_to(length,Opal.Integer,"to_int"))<0||index>size||index<0?nil:self.slice(index,index+length)}(this,index,length)}),-2),$def(self,"$[]=",(function(index,value,extra){var i,old,data=nil,length=nil,size=this.length;if($eqeqeq($$$("Range"),index)){data=$eqeqeq($$$("Array"),value)?value.$to_a():$truthy(value["$respond_to?"]("to_ary"))?value.$to_ary().$to_a():[value];var exclude=index.excl,from=index.begin===nil?0:$coerce_to(index.begin,Opal.Integer,"to_int"),to=index.end===nil?-1:$coerce_to(index.end,Opal.Integer,"to_int");if(from<0&&(from+=size)<0&&$Kernel.$raise($$$("RangeError"),index.$inspect()+" out of range"),to<0&&(to+=size),exclude&&index.end!==nil||(to+=1),from>size)for(i=size;isize)for(i=size;i=this.length?nil:this[index]}),1),$def(self,"$bsearch_index",(function $$bsearch_index(){var block=$$bsearch_index.$$p||nil;if(delete $$bsearch_index.$$p,block===nil)return this.$enum_for("bsearch_index");for(var mid,val,ret,min=0,max=this.length,smaller=!1,satisfied=nil;min0;){for(i=0,length=this.length;i=0&&num=0&&function iterate(max,from,buffer,self){if(buffer.length!=max)for(var i=from;i=this.length)return nil;var result=this[index];return this.splice(index,1),result}),1),$def(self,"$delete_if",(function $$delete_if(){var block=$$delete_if.$$p||nil;return delete $$delete_if.$$p,block===nil?$send(this,"enum_for",["delete_if"],(function $$23(){return(null==$$23.$$s?this:$$23.$$s).$size()}),{$$arity:0,$$s:this}):(filterIf(this,$falsy,block),this)}),0),$def(self,"$difference",(function($a){var $post_args,self=this;return $post_args=Opal.slice.call(arguments),$send($post_args,"reduce",[self.$to_a().$dup()],(function(a,b){return null==a&&(a=nil),null==b&&(b=nil),$rb_minus(a,b)}),2)}),-1),$def(self,"$dig",(function(idx,$a){var idxs,self=this,item=nil;return idxs=Opal.slice.call(arguments,1),(item=self["$[]"](idx))===nil||0===idxs.length?item:($truthy(item["$respond_to?"]("dig"))||$Kernel.$raise($$$("TypeError"),item.$class()+" does not have #dig method"),$send(item,"dig",$to_a(idxs)))}),-2),$def(self,"$drop",(function(number){return(number=$coerce_to(number,$$$("Integer"),"to_int"))<0&&$Kernel.$raise($$$("ArgumentError")),this.slice(number)}),1),$def(self,"$dup",(function $$dup(){var $yield=$$dup.$$p||nil;return delete $$dup.$$p,this.$$class===Opal.Array&&this.$$class.$allocate.$$pristine&&this.$copy_instance_variables.$$pristine&&this.$initialize_dup.$$pristine?this.slice(0):$send2(this,$find_super(this,"dup",$$dup,!1,!0),"dup",[],$yield)}),0),$def(self,"$each",(function $$each(){var block=$$each.$$p||nil;if(delete $$each.$$p,block===nil)return $send(this,"enum_for",["each"],(function $$25(){return(null==$$25.$$s?this:$$25.$$s).$size()}),{$$arity:0,$$s:this});for(var i=0,length=this.length;i=0&&index2)&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+args.$length()+" for 0..2)"),one=null==($b=$to_ary(args))[0]?nil:$b[0],two=null==$b[1]?nil:$b[1]):($truthy(0==args.length)?$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments (0 for 1..3)"):$truthy(args.length>3)&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+args.$length()+" for 1..3)"),obj=null==($b=$to_ary(args))[0]?nil:$b[0],one=null==$b[1]?nil:$b[1],two=null==$b[2]?nil:$b[2]),$eqeqeq($$$("Range"),one)){if($truthy(two)&&$Kernel.$raise($$$("TypeError"),"length invalid with range"),left=one.begin===nil?0:$coerce_to(one.begin,$$$("Integer"),"to_int"),$truthy(left<0)&&(left+=this.length),$truthy(left<0)&&$Kernel.$raise($$$("RangeError"),one.$inspect()+" out of range"),right=one.end===nil?-1:$coerce_to(one.end,$$$("Integer"),"to_int"),$truthy(right<0)&&(right+=this.length),$truthy(one["$exclude_end?"]())||(right+=1),$truthy(right<=left))return self}else if($truthy(one))if(left=$coerce_to(one,$$$("Integer"),"to_int"),$truthy(left<0)&&(left+=this.length),$truthy(left<0)&&(left=0),$truthy(two)){if(right=$coerce_to(two,$$$("Integer"),"to_int"),$truthy(0==right))return self;right+=left}else right=this.length;else left=0,right=this.length;if($truthy(left>this.length))for(i=this.length;ithis.length)&&(this.length=right),$truthy(block))for(this.length;left0){if(index<0&&(index+=self.length+1)<0&&$Kernel.$raise($$$("IndexError"),index+" is out of bounds"),index>self.length)for(var i=self.length;ithis.length&&(count=this.length),this.slice(this.length-count,this.length))}),-1),$def(self,"$length",(function(){return this.length}),0),$def(self,"$max",(function $$max(n){var block=$$max.$$p||nil;return delete $$max.$$p,$send(this.$each(),"max",[n],block.$to_proc())}),-1),$def(self,"$min",(function $$min(){var block=$$min.$$p||nil;return delete $$min.$$p,$send(this.$each(),"min",[],block.$to_proc())}),0),$def(self,"$permutation",(function $$permutation(num){var permute,offensive,output,block=$$permutation.$$p||nil,self=this,perm=nil,used=nil;if(delete $$permutation.$$p,block===nil)return $send(self,"enum_for",["permutation",num],(function $$34(){var self=null==$$34.$$s?this:$$34.$$s;return function(from,how_many){for(var count=how_many>=0?1:0;how_many;)count*=from,from--,how_many--;return count}(self.length,void 0===num?self.length:num)}),{$$arity:0,$$s:self});if((num=void 0===num?self.length:$coerce_to(num,$$$("Integer"),"to_int"))<0||self.lengththis.length)?this.splice(0,this.length):this.splice(this.length-count,this.length))}),-1),$def(self,"$product",(function $$product($a){var $post_args,args,block=$$product.$$p||nil,self=this;delete $$product.$$p,$post_args=Opal.slice.call(arguments);var i,m,subarray,len,result=block!==nil?null:[],n=(args=$post_args).length+1,counters=new Array(n),lengths=new Array(n),arrays=new Array(n),resultlen=1;for(arrays[0]=self,i=1;i2147483647&&$Kernel.$raise($$$("RangeError"),"too big to product"),lengths[i]=len,counters[i]=0}outer_loop:for(;;){for(subarray=[],i=0;i=0&&!(i>=this.length);i--)if(this[i]["$=="](object))return i}else if(block!==nil){for(i=this.length-1;i>=0&&!(i>=this.length);i--)if(!1!==(value=block(this[i]))&&value!==nil)return i}else if(null==object)return this.$enum_for("rindex");return nil}),-1),$def(self,"$rotate",(function(n){var ary,idx,firstPart,lastPart;return null==n&&(n=1),n=$coerce_to(n,$$$("Integer"),"to_int"),1===this.length?this.slice():0===this.length?[]:(idx=n%(ary=this.slice()).length,firstPart=ary.slice(idx),lastPart=ary.slice(0,idx),firstPart.concat(lastPart))}),-1),$def(self,"$rotate!",(function(cnt){var ary;return null==cnt&&(cnt=1),0===this.length||1===this.length?this:(cnt=$coerce_to(cnt,$$$("Integer"),"to_int"),ary=this.$rotate(cnt),this.$replace(ary))}),-1),function($base,$super){var self=$klass($base,null,"SampleRandom");self.$$prototype.rng=nil,$def(self,"$initialize",(function(rng){return this.rng=rng}),1),$def(self,"$rand",(function(size){var random;return random=$coerce_to(this.rng.$rand(size),$$$("Integer"),"to_int"),$truthy(random<0)&&$Kernel.$raise($$$("RangeError"),"random value must be >= 0"),$truthy(randomthis.length&&(count=this.length),count){case 0:return[];case 1:return[this[rng.$rand(this.length)]];case 2:return(i=rng.$rand(this.length))===(j=rng.$rand(this.length))&&(j=0===i?i+1:i-1),[this[i],this[j]];default:if(this.length/count>3){for(abandon=!1,spin=0,i=1,(result=$$("Array").$new(count))[0]=rng.$rand(this.length);i100){abandon=!0;break}k=rng.$rand(this.length)}if(abandon)break;j++}if(abandon)break;result[i]=k,i++}if(!abandon){for(i=0;i=i&&$Kernel.$raise($$$("RangeError"),"random number too big "+j)):j=this.$rand(i),tmp=this[--i],this[i]=this[j],this[j]=tmp;return this}),-1),$def(self,"$slice!",(function(index,length){var result=nil,range=nil,range_start=nil,range_end=nil,start=nil;if(result=nil,$truthy(void 0===length))if($eqeqeq($$$("Range"),index)){range=index,result=this["$[]"](range),range_start=range.begin===nil?0:$coerce_to(range.begin,$$$("Integer"),"to_int"),range_end=range.end===nil?-1:$coerce_to(range.end,$$$("Integer"),"to_int"),range_start<0&&(range_start+=this.length),range_end<0?range_end+=this.length:range_end>=this.length&&(range_end=this.length-1,range.excl&&(range_end+=1));var range_length=range_end-range_start;range.excl&&range.end!==nil?range_end-=1:range_length+=1,range_start=0&&range_end=0&&range_length>0&&this.splice(range_start,range_length)}else{if((start=$coerce_to(index,$$$("Integer"),"to_int"))<0&&(start+=this.length),start<0||start>=this.length)return nil;result=this[start],0===start?this.shift():this.splice(start,1)}else{if(start=$coerce_to(index,$$$("Integer"),"to_int"),(length=$coerce_to(length,$$$("Integer"),"to_int"))<0)return nil;result=this["$[]"](start,length),start<0&&(start+=this.length),start+length>this.length&&(length=this.length-start),start=0&&this.splice(start,length)}return result}),-2),$def(self,"$sort",(function $$sort(){var block=$$sort.$$p||nil;return delete $$sort.$$p,$truthy(this.length>1)?(block===nil&&(block=function(a,b){return a["$<=>"](b)}),this.slice().sort((function(x,y){var ret=block(x,y);return ret===nil&&$Kernel.$raise($$$("ArgumentError"),"comparison of "+x.$inspect()+" with "+y.$inspect()+" failed"),$rb_gt(ret,0)?1:$rb_lt(ret,0)?-1:0}))):this}),0),$def(self,"$sort!",(function $Array_sort$excl$47(){var result,block=$Array_sort$excl$47.$$p||nil;delete $Array_sort$excl$47.$$p,result=block!==nil?$send(this.slice(),"sort",[],block.$to_proc()):this.slice().$sort(),this.length=0;for(var i=0,length=result.length;i=0;)self[len]=self[len-objectsLength],len--;for(var j=0;j=,>,==,compare_by_identity,lambda?,abs,arity,enum_for,size,respond_to?,class,dig,except!,dup,delete,new,inspect,map,to_proc,flatten,eql?,default,default_proc,default_proc=,-,default=,to_h,proc"),self.$require("corelib/enumerable"),function($base,$super,$parent_nesting){var inspect_ids,self=$klass("::",null,"Hash"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return self.$include($$$("Enumerable")),self.$$prototype.$$is_hash=!0,$defs(self,"$[]",(function($a){var argv,hash,i,self=this,argc=(argv=Opal.slice.call(arguments)).length;if(1===argc){if((hash=$Opal["$coerce_to?"](argv["$[]"](0),$$$("Hash"),"to_hash"))!==nil)return self.$allocate()["$merge!"](hash);for((argv=$Opal["$coerce_to?"](argv["$[]"](0),$$$("Array"),"to_ary"))===nil&&$Kernel.$raise($$$("ArgumentError"),"odd number of arguments for Hash"),argc=argv.length,hash=self.$allocate(),i=0;i=",(function(other){var result=nil;return other=$Opal["$coerce_to!"](other,$$$("Hash"),"to_hash"),!(this.$$keys.length",(function(other){return other=$Opal["$coerce_to!"](other,$$$("Hash"),"to_hash"),!(this.$$keys.length<=other.$$keys.length)&&$rb_ge(this,other)}),1),$def(self,"$<",(function(other){return other=$Opal["$coerce_to!"](other,$$$("Hash"),"to_hash"),$rb_gt(other,this)}),1),$def(self,"$<=",(function(other){return other=$Opal["$coerce_to!"](other,$$$("Hash"),"to_hash"),$rb_ge(other,this)}),1),$def(self,"$[]",(function(key){var value=$hash_get(this,key);return void 0!==value?value:this.$default(key)}),1),$def(self,"$[]=",(function(key,value){return $hash_put(this,key,value),value}),2),$def(self,"$assoc",(function(object){for(var key,i=0,keys=this.$$keys,length=keys.length;i"+value);return"{"+result.join(", ")+"}"}finally{top&&(inspect_ids=void 0)}}()}),0),$def(self,"$invert",(function(){for(var key,value,hash=$hash(),i=0,keys=this.$$keys,length=keys.length;i0?[key=(key=keys[0]).$$is_string?key:key.key,$hash_delete(this,key)]:this.$default(nil)}),0),$def(self,"$slice",(function($a){var keys,self=this;keys=Opal.slice.call(arguments);for(var result=$hash(),i=0,length=keys.length;i,!,**,new,<,to_f,==,nan?,infinite?,enum_for,+,-,gcd,lcm,%,/,frexp,to_i,ldexp,rationalize,*,<<,to_r,truncate,-@,size,<=,>=,inspect,coerce_to?"),self.$require("corelib/numeric"),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Number");[self].concat($parent_nesting);$Opal.$bridge(Number,self),Opal.prop(self.$$prototype,"$$is_number",!0),self.$$is_number_class=!0,function(self,$parent_nesting){$def(self,"$allocate",(function(){return $Kernel.$raise($$$("TypeError"),"allocator undefined for "+this.$name())}),0),Opal.udef(self,"$new")}(Opal.get_singleton_class(self)),$def(self,"$coerce",(function(other){if(other===nil)$Kernel.$raise($$$("TypeError"),"can't convert "+other.$class()+" into Float");else{if(other.$$is_string)return[$Kernel.$Float(other),this];if(other["$respond_to?"]("to_f"))return[$Opal["$coerce_to!"](other,$$$("Float"),"to_f"),this];if(other.$$is_number)return[other,this];$Kernel.$raise($$$("TypeError"),"can't convert "+other.$class()+" into Float")}}),1),$def(self,"$__id__",(function(){return 2*this+1}),0),$def(self,"$+",(function(other){return other.$$is_number?this+other:this.$__coerced__("+",other)}),1),$def(self,"$-",(function(other){return other.$$is_number?this-other:this.$__coerced__("-",other)}),1),$def(self,"$*",(function(other){return other.$$is_number?this*other:this.$__coerced__("*",other)}),1),$def(self,"$/",(function(other){return other.$$is_number?this/other:this.$__coerced__("/",other)}),1),$def(self,"$%",(function(other){return other.$$is_number?other==-1/0?other:0!=other?other<0||this<0?(this%other+other)%other:this%other:void $Kernel.$raise($$$("ZeroDivisionError"),"divided by 0"):this.$__coerced__("%",other)}),1),$def(self,"$&",(function(other){return other.$$is_number?this&other:this.$__coerced__("&",other)}),1),$def(self,"$|",(function(other){return other.$$is_number?this|other:this.$__coerced__("|",other)}),1),$def(self,"$^",(function(other){return other.$$is_number?this^other:this.$__coerced__("^",other)}),1),$def(self,"$<",(function(other){return other.$$is_number?this",(function(other){return other.$$is_number?this>other:this.$__coerced__(">",other)}),1),$def(self,"$>=",(function(other){return other.$$is_number?this>=other:this.$__coerced__(">=",other)}),1);$def(self,"$<=>",(function(other){try{return function(self,other){return other.$$is_number?isNaN(self)||isNaN(other)?nil:self>other?1:self",other)}(this,other)}catch($err){if(!Opal.rescue($err,[$$$("ArgumentError")]))throw $err;try{return nil}finally{Opal.pop_exception()}}}),1),$def(self,"$<<",(function(count){return(count=$Opal["$coerce_to!"](count,$$$("Integer"),"to_int"))>0?this<>-count}),1),$def(self,"$>>",(function(count){return(count=$Opal["$coerce_to!"](count,$$$("Integer"),"to_int"))>0?this>>count:this<<-count}),1),$def(self,"$[]",(function(bit){return(bit=$Opal["$coerce_to!"](bit,$$$("Integer"),"to_int"))<0?0:bit>=32?this<0?1:0:this>>bit&1}),1),$def(self,"$+@",(function(){return+this}),0),$def(self,"$-@",(function(){return-this}),0),$def(self,"$~",(function(){return~this}),0),$def(self,"$**",(function(other){return $eqeqeq($$$("Integer"),other)?$not($$$("Integer")["$==="](this))||$truthy($rb_gt(other,0))?Math.pow(this,other):$$$("Rational").$new(this,1)["$**"](other):$rb_lt(this,0)&&($eqeqeq($$$("Float"),other)||$eqeqeq($$$("Rational"),other))?$$$("Complex").$new(this,0)["$**"](other.$to_f()):$truthy(null!=other.$$is_number)?Math.pow(this,other):this.$__coerced__("**",other)}),1),$def(self,"$===",(function(other){return other.$$is_number?this.valueOf()===other.valueOf():!!other["$respond_to?"]("==")&&other["$=="](this)}),1),$def(self,"$==",(function(other){return other.$$is_number?this.valueOf()===other.valueOf():!!other["$respond_to?"]("==")&&other["$=="](this)}),1),$def(self,"$abs",(function(){return Math.abs(this)}),0),$def(self,"$abs2",(function(){return Math.abs(this*this)}),0),$def(self,"$allbits?",(function(mask){return(this&(mask=$Opal["$coerce_to!"](mask,$$$("Integer"),"to_int")))==mask}),1),$def(self,"$anybits?",(function(mask){return 0!=(this&(mask=$Opal["$coerce_to!"](mask,$$$("Integer"),"to_int")))}),1),$def(self,"$angle",(function(){return $truthy(this["$nan?"]())?this:0==this?1/this>0?0:Math.PI:this<0?Math.PI:0}),0),$def(self,"$bit_length",(function(){if($eqeqeq($$$("Integer"),this)||$Kernel.$raise($$$("NoMethodError").$new("undefined method `bit_length` for "+this+":Float","bit_length")),0===this||-1===this)return 0;for(var result=0,value=this<0?~this:this;0!=value;)result+=1,value>>>=1;return result}),0),$def(self,"$ceil",(function(ndigits){null==ndigits&&(ndigits=0);var f=this.$to_f();if(f%1==0&&ndigits>=0)return f;var factor=Math.pow(10,ndigits),result=Math.ceil(f*factor)/factor;return f%1==0&&(result=Math.round(result)),result}),-1),$def(self,"$chr",(function(encoding){return Opal.enc(String.fromCharCode(this),encoding||"BINARY")}),-1),$def(self,"$denominator",(function $$denominator(){var $yield=$$denominator.$$p||nil;return delete $$denominator.$$p,$truthy(this["$nan?"]())||$truthy(this["$infinite?"]())?1:$send2(this,$find_super(this,"denominator",$$denominator,!1,!0),"denominator",[],$yield)}),0),$def(self,"$downto",(function $$downto(stop){var block=$$downto.$$p||nil;if(delete $$downto.$$p,block===nil)return $send(this,"enum_for",["downto",stop],(function $$25(){var self=null==$$25.$$s?this:$$25.$$s;return $eqeqeq($$$("Numeric"),stop)||$Kernel.$raise($$$("ArgumentError"),"comparison of "+self.$class()+" with "+stop.$class()+" failed"),$truthy($rb_gt(stop,self))?0:$rb_plus($rb_minus(self,stop),1)}),{$$arity:0,$$s:this});stop.$$is_number||$Kernel.$raise($$$("ArgumentError"),"comparison of "+this.$class()+" with "+stop.$class()+" failed");for(var i=this;i>=stop;i--)block(i);return this}),1),$def(self,"$equal?",(function(other){var $ret_or_1;return $truthy($ret_or_1=this["$=="](other))?$ret_or_1:isNaN(this)&&isNaN(other)}),1),$def(self,"$even?",(function(){return this%2==0}),0),$def(self,"$floor",(function(ndigits){null==ndigits&&(ndigits=0);var f=this.$to_f();if(f%1==0&&ndigits>=0)return f;var factor=Math.pow(10,ndigits),result=Math.floor(f*factor)/factor;return f%1==0&&(result=Math.round(result)),result}),-1),$def(self,"$gcd",(function(other){$eqeqeq($$$("Integer"),other)||$Kernel.$raise($$$("TypeError"),"not an integer");for(var min=Math.abs(this),max=Math.abs(other);min>0;){var tmp=min;min=max%min,max=tmp}return max}),1),$def(self,"$gcdlcm",(function(other){return[this.$gcd(other),this.$lcm(other)]}),1),$def(self,"$integer?",(function(){return this%1==0}),0),$def(self,"$is_a?",(function $Number_is_a$ques$29(klass){var $yield=$Number_is_a$ques$29.$$p||nil;return delete $Number_is_a$ques$29.$$p,!(!$eqeq(klass,$$$("Integer"))||!$eqeqeq($$$("Integer"),this))||(!(!$eqeq(klass,$$$("Integer"))||!$eqeqeq($$$("Integer"),this))||(!(!$eqeq(klass,$$$("Float"))||!$eqeqeq($$$("Float"),this))||$send2(this,$find_super(this,"is_a?",$Number_is_a$ques$29,!1,!0),"is_a?",[klass],$yield)))}),1),$def(self,"$instance_of?",(function $Number_instance_of$ques$30(klass){var $yield=$Number_instance_of$ques$30.$$p||nil;return delete $Number_instance_of$ques$30.$$p,!(!$eqeq(klass,$$$("Integer"))||!$eqeqeq($$$("Integer"),this))||(!(!$eqeq(klass,$$$("Integer"))||!$eqeqeq($$$("Integer"),this))||(!(!$eqeq(klass,$$$("Float"))||!$eqeqeq($$$("Float"),this))||$send2(this,$find_super(this,"instance_of?",$Number_instance_of$ques$30,!1,!0),"instance_of?",[klass],$yield)))}),1),$def(self,"$lcm",(function(other){return $eqeqeq($$$("Integer"),other)||$Kernel.$raise($$$("TypeError"),"not an integer"),0==this||0==other?0:Math.abs(this*other/this.$gcd(other))}),1),$def(self,"$next",(function(){return this+1}),0),$def(self,"$nobits?",(function(mask){return 0==(this&(mask=$Opal["$coerce_to!"](mask,$$$("Integer"),"to_int")))}),1),$def(self,"$nonzero?",(function(){return 0==this?nil:this}),0),$def(self,"$numerator",(function $$numerator(){var $yield=$$numerator.$$p||nil;return delete $$numerator.$$p,$truthy(this["$nan?"]())||$truthy(this["$infinite?"]())?this:$send2(this,$find_super(this,"numerator",$$numerator,!1,!0),"numerator",[],$yield)}),0),$def(self,"$odd?",(function(){return this%2!=0}),0),$def(self,"$ord",(function(){return this}),0),$def(self,"$pow",(function(b,m){return 0==this&&$Kernel.$raise($$$("ZeroDivisionError"),"divided by 0"),void 0===m?this["$**"](b):($$$("Integer")["$==="](b)||$Kernel.$raise($$$("TypeError"),"Integer#pow() 2nd argument not allowed unless a 1st argument is integer"),b<0&&$Kernel.$raise($$$("TypeError"),"Integer#pow() 1st argument cannot be negative when 2nd argument specified"),$$$("Integer")["$==="](m)||$Kernel.$raise($$$("TypeError"),"Integer#pow() 2nd argument not allowed unless all arguments are integers"),0===m&&$Kernel.$raise($$$("ZeroDivisionError"),"divided by 0"),this["$**"](b)["$%"](m))}),-2),$def(self,"$pred",(function(){return this-1}),0),$def(self,"$quo",(function $$quo(other){var $yield=$$quo.$$p||nil;return delete $$quo.$$p,$eqeqeq($$$("Integer"),this)?$send2(this,$find_super(this,"quo",$$quo,!1,!0),"quo",[other],$yield):$rb_divide(this,other)}),1),$def(self,"$rationalize",(function(eps){var $a,$b,self=this,f=nil,n=nil;return arguments.length>1&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arguments.length+" for 0..1)"),$eqeqeq($$$("Integer"),self)?$$$("Rational").$new(self,1):$truthy(self["$infinite?"]())?$Kernel.$raise($$$("FloatDomainError"),"Infinity"):$truthy(self["$nan?"]())?$Kernel.$raise($$$("FloatDomainError"),"NaN"):$truthy(null==eps)?($b=$$$("Math").$frexp(self),f=null==($a=$to_ary($b))[0]?nil:$a[0],n=null==$a[1]?nil:$a[1],f=$$$("Math").$ldexp(f,$$$($$$("Float"),"MANT_DIG")).$to_i(),n=$rb_minus(n,$$$($$$("Float"),"MANT_DIG")),$$$("Rational").$new($rb_times(2,f),1["$<<"]($rb_minus(1,n))).$rationalize($$$("Rational").$new(1,1["$<<"]($rb_minus(1,n))))):self.$to_r().$rationalize(eps)}),-1),$def(self,"$remainder",(function(y){return $rb_minus(this,$rb_times(y,$rb_divide(this,y).$truncate()))}),1),$def(self,"$round",(function(ndigits){var $a,$b,exp=nil;if($eqeqeq($$$("Integer"),this)){if($truthy(null==ndigits))return this;if($eqeqeq($$$("Float"),ndigits)&&$truthy(ndigits["$infinite?"]())&&$Kernel.$raise($$$("RangeError"),"Infinity"),ndigits=$Opal["$coerce_to!"](ndigits,$$$("Integer"),"to_int"),$truthy($rb_lt(ndigits,$$$($$$("Integer"),"MIN")))&&$Kernel.$raise($$$("RangeError"),"out of bounds"),$truthy(ndigits>=0))return this;if(.415241*(ndigits=ndigits["$-@"]())-.125>this.$size())return 0;var f=Math.pow(10,ndigits),x=Math.floor((Math.abs(this)+f/2)/f)*f;return this<0?-x:x}if($truthy(this["$nan?"]())&&$truthy(null==ndigits)&&$Kernel.$raise($$$("FloatDomainError"),"NaN"),ndigits=$Opal["$coerce_to!"](ndigits||0,$$$("Integer"),"to_int"),$truthy($rb_le(ndigits,0)))$truthy(this["$nan?"]())?$Kernel.$raise($$$("RangeError"),"NaN"):$truthy(this["$infinite?"]())&&$Kernel.$raise($$$("FloatDomainError"),"Infinity");else{if($eqeq(ndigits,0))return Math.round(this);if($truthy(this["$nan?"]())||$truthy(this["$infinite?"]()))return this}return $b=$$$("Math").$frexp(this),null==($a=$to_ary($b))[0]?nil:$a[0],exp=null==$a[1]?nil:$a[1],$truthy($rb_ge(ndigits,$rb_minus($rb_plus($$$($$$("Float"),"DIG"),2),$truthy($rb_gt(exp,0))?$rb_divide(exp,4):$rb_minus($rb_divide(exp,3),1))))?this:$truthy($rb_lt(ndigits,($truthy($rb_gt(exp,0))?$rb_plus($rb_divide(exp,3),1):$rb_divide(exp,4))["$-@"]()))?0:Math.round(this*Math.pow(10,ndigits))/Math.pow(10,ndigits)}),-1),$def(self,"$times",(function $$times(){var block=$$times.$$p||nil;if(delete $$times.$$p,!$truthy(block))return $send(this,"enum_for",["times"],(function $$34(){return null==$$34.$$s?this:$$34.$$s}),{$$arity:0,$$s:this});for(var i=0;i=0)return f;var factor=Math.pow(10,ndigits),result=parseInt(f*factor,10)/factor;return f%1==0&&(result=Math.round(result)),result}),-1),$def(self,"$digits",(function(base){null==base&&(base=10),$rb_lt(this,0)&&$Kernel.$raise($$$($$$("Math"),"DomainError"),"out of domain"),base=$Opal["$coerce_to!"](base,$$$("Integer"),"to_int"),$truthy($rb_lt(base,2))&&$Kernel.$raise($$$("ArgumentError"),"invalid radix "+base),this!=parseInt(this)&&$Kernel.$raise($$$("NoMethodError"),"undefined method `digits' for "+this.$inspect());var value=this,result=[];if(0==this)return[0];for(;0!=value;)result.push(value%base),value=parseInt(value/base,10);return result}),-1),$def(self,"$divmod",(function $$divmod(other){var $yield=$$divmod.$$p||nil;return delete $$divmod.$$p,$truthy(this["$nan?"]())||$truthy(other["$nan?"]())?$Kernel.$raise($$$("FloatDomainError"),"NaN"):$truthy(this["$infinite?"]())?$Kernel.$raise($$$("FloatDomainError"),"Infinity"):$send2(this,$find_super(this,"divmod",$$divmod,!1,!0),"divmod",[other],$yield)}),1),$def(self,"$upto",(function $$upto(stop){var block=$$upto.$$p||nil;if(delete $$upto.$$p,block===nil)return $send(this,"enum_for",["upto",stop],(function $$35(){var self=null==$$35.$$s?this:$$35.$$s;return $eqeqeq($$$("Numeric"),stop)||$Kernel.$raise($$$("ArgumentError"),"comparison of "+self.$class()+" with "+stop.$class()+" failed"),$truthy($rb_lt(stop,self))?0:$rb_plus($rb_minus(stop,self),1)}),{$$arity:0,$$s:this});stop.$$is_number||$Kernel.$raise($$$("ArgumentError"),"comparison of "+this.$class()+" with "+stop.$class()+" failed");for(var i=this;i<=stop;i++)block(i);return this}),1),$def(self,"$zero?",(function(){return 0==this}),0),$def(self,"$size",(function(){return 4}),0),$def(self,"$nan?",(function(){return isNaN(this)}),0),$def(self,"$finite?",(function(){return this!=1/0&&this!=-1/0&&!isNaN(this)}),0),$def(self,"$infinite?",(function(){return this==1/0?1:this==-1/0?-1:nil}),0),$def(self,"$positive?",(function(){return 0!=this&&(this==1/0||1/this>0)}),0),$def(self,"$negative?",(function(){return this==-1/0||1/this<0}),0),$alias(self,"arg","angle"),$alias(self,"eql?","=="),$alias(self,"fdiv","/"),$alias(self,"inspect","to_s"),$alias(self,"kind_of?","is_a?"),$alias(self,"magnitude","abs"),$alias(self,"modulo","%"),$alias(self,"object_id","__id__"),$alias(self,"phase","angle"),$alias(self,"succ","next"),$alias(self,"to_int","to_i")}(0,$$$("Numeric"),$nesting),$const_set("::","Fixnum",$$$("Number")),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Integer"),$nesting=[self].concat($parent_nesting);self.$$is_number_class=!0,self.$$is_integer_class=!0,function(self,$parent_nesting){var $nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$allocate",(function(){return $Kernel.$raise($$$("TypeError"),"allocator undefined for "+this.$name())}),0),Opal.udef(self,"$new"),$def(self,"$sqrt",(function(n){return(n=$Opal["$coerce_to!"](n,$$$("Integer"),"to_int"))<0&&$Kernel.$raise($$$($$$("Math"),"DomainError"),'Numerical argument is out of domain - "isqrt"'),parseInt(Math.sqrt(n),10)}),1),$def(self,"$try_convert",(function(object){return $$("Opal")["$coerce_to?"](object,this,"to_int")}),1)}(Opal.get_singleton_class(self),$nesting),$const_set(self,"MAX",Math.pow(2,30)-1),$const_set(self,"MIN",-Math.pow(2,30))}(0,$$$("Numeric"),$nesting),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Float");[self].concat($parent_nesting);return self.$$is_number_class=!0,function(self,$parent_nesting){$def(self,"$allocate",(function(){return $Kernel.$raise($$$("TypeError"),"allocator undefined for "+this.$name())}),0),Opal.udef(self,"$new"),$def(self,"$===",(function(other){return!!other.$$is_number}),1)}(Opal.get_singleton_class(self)),$const_set(self,"INFINITY",1/0),$const_set(self,"MAX",Number.MAX_VALUE),$const_set(self,"MIN",Number.MIN_VALUE),$const_set(self,"NAN",NaN),$const_set(self,"DIG",15),$const_set(self,"MANT_DIG",53),$const_set(self,"RADIX",2),$const_set(self,"EPSILON",Number.EPSILON||2220446049250313e-31)}(0,$$$("Numeric"),$nesting)},Opal.modules["corelib/range"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$truthy=Opal.truthy,$Kernel=Opal.Kernel,$def=Opal.def,$not=Opal.not,$send2=Opal.send2,$find_super=Opal.find_super,$rb_lt=Opal.rb_lt,$rb_le=Opal.rb_le,$send=Opal.send,$eqeq=Opal.eqeq,$eqeqeq=Opal.eqeqeq,$rb_gt=Opal.rb_gt,$rb_minus=Opal.rb_minus,$Opal=Opal.Opal,$rb_divide=Opal.rb_divide,$rb_plus=Opal.rb_plus,$rb_times=Opal.rb_times,$rb_ge=Opal.rb_ge,$alias=Opal.alias;return Opal.add_stubs("require,include,attr_reader,raise,nil?,<=>,include?,!,<,<=,enum_for,size,upto,to_proc,respond_to?,class,succ,==,===,exclude_end?,eql?,begin,end,last,to_a,>,-@,-,to_i,coerce_to!,ceil,/,is_a?,new,loop,+,*,>=,each_with_index,%,step,bsearch,inspect,[],hash"),self.$require("corelib/enumerable"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Range"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;function is_infinite(self){return self.begin===nil||self.end===nil||self.begin===-1/0||self.end===1/0||self.begin===1/0||self.end===-1/0}return $proto.begin=$proto.end=$proto.excl=nil,self.$include($$$("Enumerable")),self.$$prototype.$$is_range=!0,self.$attr_reader("begin","end"),$def(self,"$initialize",(function(first,last,exclude){return null==exclude&&(exclude=!1),$truthy(this.begin)&&$Kernel.$raise($$$("NameError"),"'initialize' called twice"),$truthy(first["$<=>"](last))||$truthy(first["$nil?"]())||$truthy(last["$nil?"]())||$Kernel.$raise($$$("ArgumentError"),"bad value for range"),this.begin=first,this.end=last,this.excl=exclude}),-3),$def(self,"$===",(function(value){return this["$include?"](value)}),1),$def(self,"$count",(function $$count(){var block=$$count.$$p||nil;return delete $$count.$$p,$not(block!==nil)&&$truthy(is_infinite(this))?$$$($$$("Float"),"INFINITY"):$send2(this,$find_super(this,"count",$$count,!1,!0),"count",[],block)}),0),$def(self,"$to_a",(function $$to_a(){var $yield=$$to_a.$$p||nil;return delete $$to_a.$$p,$truthy(is_infinite(this))&&$Kernel.$raise($$$("TypeError"),"cannot convert endless range to an array"),$send2(this,$find_super(this,"to_a",$$to_a,!1,!0),"to_a",[],$yield)}),0),$def(self,"$cover?",(function(value){var beg_cmp,end_cmp,$ret_or_1=nil,$ret_or_2=nil,$ret_or_3=nil;return beg_cmp=$truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.begin["$nil?"]())?-1:$ret_or_3)?$ret_or_2:this.begin["$<=>"](value))&&$ret_or_1,end_cmp=$truthy($ret_or_1=$truthy($ret_or_2=$truthy($ret_or_3=this.end["$nil?"]())?-1:$ret_or_3)?$ret_or_2:value["$<=>"](this.end))&&$ret_or_1,$truthy($ret_or_1=$truthy($ret_or_2=$truthy(this.excl)?$truthy($ret_or_3=end_cmp)?$rb_lt(end_cmp,0):$ret_or_3:$truthy($ret_or_3=end_cmp)?$rb_le(end_cmp,0):$ret_or_3)?beg_cmp:$ret_or_2)?$rb_le(beg_cmp,0):$ret_or_1}),1),$def(self,"$each",(function $$each(){var last,i,limit,block=$$each.$$p||nil,current=nil,$ret_or_1=nil;if(delete $$each.$$p,block===nil)return $send(this,"enum_for",["each"],(function $$3(){return(null==$$3.$$s?this:$$3.$$s).$size()}),{$$arity:0,$$s:this});if(this.begin.$$is_number&&this.end.$$is_number){for(this.begin%1==0&&this.end%1==0||$Kernel.$raise($$$("TypeError"),"can't iterate from Float"),i=this.begin,limit=this.end+($truthy(this.excl)?0:1);i"](last),0));)Opal.yield1(block,current),current=current.$succ();return $not(this.excl)&&$eqeq(current,last)&&Opal.yield1(block,current),this}),0),$def(self,"$eql?",(function(other){var $ret_or_1,$ret_or_2;return!!$eqeqeq($$$("Range"),other)&&($truthy($ret_or_1=$truthy($ret_or_2=this.excl["$==="](other["$exclude_end?"]()))?this.begin["$eql?"](other.$begin()):$ret_or_2)?this.end["$eql?"](other.$end()):$ret_or_1)}),1),$def(self,"$exclude_end?",(function(){return this.excl}),0),$def(self,"$first",(function $$first(n){var $yield=$$first.$$p||nil;return delete $$first.$$p,$truthy(this.begin["$nil?"]())&&$Kernel.$raise($$$("RangeError"),"cannot get the minimum of beginless range"),$truthy(null==n)?this.begin:$send2(this,$find_super(this,"first",$$first,!1,!0),"first",[n],$yield)}),-1),$def(self,"$last",(function(n){return $truthy(this.end["$nil?"]())&&$Kernel.$raise($$$("RangeError"),"cannot get the maximum of endless range"),$truthy(null==n)?this.end:this.$to_a().$last(n)}),-1),$def(self,"$max",(function $$max(){var $yield=$$max.$$p||nil;return delete $$max.$$p,$truthy(this.end["$nil?"]())?$Kernel.$raise($$$("RangeError"),"cannot get the maximum of endless range"):$yield!==nil?$send2(this,$find_super(this,"max",$$max,!1,!0),"max",[],$yield):$not(this.begin["$nil?"]())&&($truthy($rb_gt(this.begin,this.end))||$truthy(this.excl)&&$eqeq(this.begin,this.end))?nil:this.excl?this.end-1:this.end}),0),$def(self,"$min",(function $$min(){var $yield=$$min.$$p||nil;return delete $$min.$$p,$truthy(this.begin["$nil?"]())?$Kernel.$raise($$$("RangeError"),"cannot get the minimum of beginless range"):$yield!==nil?$send2(this,$find_super(this,"min",$$min,!1,!0),"min",[],$yield):$not(this.end["$nil?"]())&&($truthy($rb_gt(this.begin,this.end))||$truthy(this.excl)&&$eqeq(this.begin,this.end))?nil:this.begin}),0),$def(self,"$size",(function(){var range_begin,infinity=nil,range_end=nil;return infinity=$$$($$$("Float"),"INFINITY"),$eqeq(this.begin,infinity)&&$not(this.end["$nil?"]())||$eqeq(this.end,infinity["$-@"]())&&$not(this.begin["$nil?"]())?0:$truthy(is_infinite(this))?infinity:$eqeqeq($$$("Numeric"),this.begin)&&$eqeqeq($$$("Numeric"),this.end)?(range_begin=this.begin,range_end=this.end,$truthy(this.excl)&&(range_end=$rb_minus(range_end,1)),$truthy($rb_lt(range_end,range_begin))?0:(Math.abs(range_end-range_begin)+1).$to_i()):nil}),0),$def(self,"$step",(function $$step(n){var $yield=$$step.$$p||nil,self=this,$ret_or_1=nil,i=nil;function coerceStepSize(){null==n?n=1:n.$$is_number||(n=$Opal["$coerce_to!"](n,$$$("Integer"),"to_int")),n<0?$Kernel.$raise($$$("ArgumentError"),"step can't be negative"):0===n&&$Kernel.$raise($$$("ArgumentError"),"step can't be 0")}return delete $$step.$$p,$yield===nil?($truthy(self.begin["$is_a?"]($$("Numeric")))||$truthy(self.begin["$nil?"]()))&&($truthy(self.end["$is_a?"]($$("Numeric")))||$truthy(self.end["$nil?"]()))&&$not($truthy($ret_or_1=self.begin["$nil?"]())?self.end["$nil?"]():$ret_or_1)?$$$($$$("Enumerator"),"ArithmeticSequence").$new(self,n,"step"):$send(self,"enum_for",["step",n],(function(){return coerceStepSize(),function(){if(!self.begin["$respond_to?"]("succ"))return nil;if(self.begin.$$is_string&&self.end.$$is_string)return nil;if(n%1==0)return $rb_divide(self.$size(),n).$ceil();var size,begin=self.begin,end=self.end,abs=Math.abs,floor=Math.floor,err=(abs(begin)+abs(end)+abs(end-begin))/abs(n)*$$$($$$("Float"),"EPSILON");return err>.5&&(err=.5),self.excl?(size=floor((end-begin)/n-err))*n+begin>",(function $Proc_$gt$gt$2(other){return delete $Proc_$gt$gt$2.$$p,$send($Kernel,"proc",[],(function $$3($a){var $post_args,block=$$3.$$p||nil,self=null==$$3.$$s?this:$$3.$$s,out=nil;return delete $$3.$$p,$post_args=Opal.slice.call(arguments),out=$send(self,"call",$to_a($post_args),block.$to_proc()),other.$call(out)}),{$$arity:-1,$$s:this})}),1),$def(self,"$<<",(function $Proc_$lt$lt$4(other){return delete $Proc_$lt$lt$4.$$p,$send($Kernel,"proc",[],(function $$5($a){var $post_args,block=$$5.$$p||nil,self=null==$$5.$$s?this:$$5.$$s,out=nil;return delete $$5.$$p,$post_args=Opal.slice.call(arguments),out=$send(other,"call",$to_a($post_args),block.$to_proc()),self.$call(out)}),{$$arity:-1,$$s:this})}),1),$def(self,"$to_proc",(function(){return this}),0),$def(self,"$lambda?",(function(){return!!this.$$is_lambda}),0),$def(self,"$arity",(function(){return this.$$is_curried?-1:this.$$arity}),0),$def(self,"$source_location",(function(){return this.$$is_curried,nil}),0),$def(self,"$binding",(function(){return this.$$is_curried&&$Kernel.$raise($$$("ArgumentError"),"Can't create Binding"),$truthy($$$("::","Binding","skip_raise")?"constant":nil)?$$$("Binding").$new(nil,[],this.$$s,this.$source_location()):nil}),0),$def(self,"$parameters",(function(){if(this.$$is_curried)return[["rest"]];if(this.$$parameters){if(this.$$is_lambda)return this.$$parameters;var i,length,result=[];for(i=0,length=this.$$parameters.length;iarity&&self.$$is_lambda&&!self.$$is_curried&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+length+" for "+arity+")"),length>=arity?self.$call.apply(self,args):(result=function(){return curried.apply(null,args.concat($slice.call(arguments)))},result.$$is_lambda=self.$$is_lambda,result.$$is_curried=!0,result)}return void 0===arity?arity=self.length:(arity=$Opal["$coerce_to!"](arity,$$$("Integer"),"to_int"),self.$$is_lambda&&arity!==self.length&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arity+" for "+self.length+")")),curried.$$is_lambda=self.$$is_lambda,curried.$$is_curried=!0,curried}),-1),$def(self,"$dup",(function(){var original_proc=this.$$original_proc||this,proc=function(){return original_proc.apply(this,arguments)};for(var prop in this)this.hasOwnProperty(prop)&&(proc[prop]=this[prop]);return proc}),0),$alias(self,"===","call"),$alias(self,"clone","dup"),$alias(self,"yield","call"),$alias(self,"[]","call")},Opal.modules["corelib/method"]=function(Opal){var self,$proto,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$def=Opal.def,$truthy=Opal.truthy,$alias=Opal.alias,$Kernel=Opal.Kernel,$send=Opal.send,$to_a=Opal.to_a;return Opal.add_stubs("attr_reader,arity,curry,>>,<<,new,class,join,source_location,raise,call,bind,to_proc"),self=$klass("::",null,"Method"),($proto=self.$$prototype).method=$proto.receiver=$proto.owner=$proto.name=nil,self.$attr_reader("owner","receiver","name"),$def(self,"$initialize",(function(receiver,owner,method,name){return this.receiver=receiver,this.owner=owner,this.name=name,this.method=method}),4),$def(self,"$arity",(function(){return this.method.$arity()}),0),$def(self,"$parameters",(function(){return this.method.$$parameters}),0),$def(self,"$source_location",(function(){var $ret_or_1;return $truthy($ret_or_1=this.method.$$source_location)?$ret_or_1:["(eval)",0]}),0),$def(self,"$comments",(function(){var $ret_or_1;return $truthy($ret_or_1=this.method.$$comments)?$ret_or_1:[]}),0),$def(self,"$call",(function $$call($a){var args,block=$$call.$$p||nil,self=this;return delete $$call.$$p,args=Opal.slice.call(arguments),self.method.$$p=block,self.method.apply(self.receiver,args)}),-1),$def(self,"$curry",(function(arity){return this.method.$curry(arity)}),-1),$def(self,"$>>",(function(other){return this.method["$>>"](other)}),1),$def(self,"$<<",(function(other){return this.method["$<<"](other)}),1),$def(self,"$unbind",(function(){return $$$("UnboundMethod").$new(this.receiver.$class(),this.owner,this.method,this.name)}),0),$def(self,"$to_proc",(function(){var proc=this.$call.bind(this);return proc.$$unbound=this.method,proc.$$is_lambda=!0,proc.$$arity=this.method.$$arity,proc.$$parameters=this.method.$$parameters,proc}),0),$def(self,"$inspect",(function(){return"#<"+this.$class()+": "+this.receiver.$class()+"#"+this.name+" (defined in "+this.owner+" in "+this.$source_location().$join(":")+")>"}),0),$alias(self,"[]","call"),$alias(self,"===","call"),function($base,$super){var self=$klass("::",null,"UnboundMethod"),$proto=self.$$prototype;return $proto.method=$proto.owner=$proto.name=$proto.source=nil,self.$attr_reader("source","owner","name"),$def(self,"$initialize",(function(source,owner,method,name){return this.source=source,this.owner=owner,this.method=method,this.name=name}),4),$def(self,"$arity",(function(){return this.method.$arity()}),0),$def(self,"$parameters",(function(){return this.method.$$parameters}),0),$def(self,"$source_location",(function(){var $ret_or_1;return $truthy($ret_or_1=this.method.$$source_location)?$ret_or_1:["(eval)",0]}),0),$def(self,"$comments",(function(){var $ret_or_1;return $truthy($ret_or_1=this.method.$$comments)?$ret_or_1:[]}),0),$def(self,"$bind",(function(object){if(this.owner.$$is_module||Opal.is_a(object,this.owner))return $$$("Method").$new(object,this.owner,this.method,this.name);$Kernel.$raise($$$("TypeError"),"can't bind singleton method to a different class (expected "+object+".kind_of?("+this.owner+" to be true)")}),1),$def(self,"$bind_call",(function $$bind_call(object,$a){var args,block=$$bind_call.$$p||nil,self=this;return delete $$bind_call.$$p,args=Opal.slice.call(arguments,1),$send(self.$bind(object),"call",$to_a(args),block.$to_proc())}),-2),$def(self,"$inspect",(function(){return"#<"+this.$class()+": "+this.source+"#"+this.name+" (defined in "+this.owner+" in "+this.$source_location().$join(":")+")>"}),0)}()},Opal.modules["corelib/variables"]=function(Opal){var nil=Opal.nil,$gvars=Opal.gvars,$const_set=Opal.const_set,$Object=Opal.Object,$hash2=Opal.hash2;return Opal.add_stubs("new"),$gvars["&"]=$gvars["~"]=$gvars["`"]=$gvars["'"]=nil,$gvars.LOADED_FEATURES=$gvars['"']=Opal.loaded_features,$gvars.LOAD_PATH=$gvars[":"]=[],$gvars["/"]="\n",$gvars[","]=nil,$const_set("::","ARGV",[]),$const_set("::","ARGF",$Object.$new()),$const_set("::","ENV",$hash2([],{})),$gvars.VERBOSE=!1,$gvars.DEBUG=!1,$gvars.SAFE=0},Opal.modules["corelib/io"]=function(Opal){var self,$proto,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$const_set=Opal.const_set,$not=Opal.not,$truthy=Opal.truthy,$def=Opal.def,$Kernel=Opal.Kernel,$gvars=Opal.gvars,$send=Opal.send,$to_a=Opal.to_a,$rb_plus=Opal.rb_plus,$neqeq=Opal.neqeq,$range=Opal.range,$hash2=Opal.hash2,$eqeq=Opal.eqeq,$to_ary=Opal.to_ary,$rb_gt=Opal.rb_gt,$alias=Opal.alias,$rb_minus=Opal.rb_minus,$writer=nil;Opal.add_stubs("attr_reader,attr_accessor,!,match?,include?,size,write,String,flatten,puts,sysread_noraise,+,!=,[],ord,getc,readchar,raise,gets,==,to_str,length,split,sub,sysread,>,to_a,each_line,enum_for,getbyte,closed_write?,closed_read?,new,write_proc=,-,read_proc="),self=$klass("::",null,"IO"),($proto=self.$$prototype).fd=$proto.read_buffer=$proto.closed=nil,$const_set(self,"SEEK_SET",0),$const_set(self,"SEEK_CUR",1),$const_set(self,"SEEK_END",2),$const_set(self,"SEEK_DATA",3),$const_set(self,"SEEK_HOLE",4),$const_set(self,"READABLE",1),$const_set(self,"WRITABLE",4),self.$attr_reader("eof"),self.$attr_accessor("read_proc","sync","tty","write_proc"),$def(self,"$initialize",(function(fd,flags){return null==flags&&(flags="r"),this.fd=fd,this.flags=flags,this.eof=!1,$truthy(flags["$include?"]("r"))&&$not(flags["$match?"](/[wa+]/))?this.closed="write":$truthy(flags["$match?"](/[wa]/))&&$not(flags["$match?"](/[r+]/))?this.closed="read":nil}),-2),$def(self,"$fileno",(function(){return this.fd}),0),$def(self,"$tty?",(function(){return 1==this.tty}),0),$def(self,"$write",(function(string){return this.write_proc(string),string.$size()}),1),$def(self,"$flush",(function(){return nil}),0),$def(self,"$<<",(function(string){return this.$write(string),this}),1),$def(self,"$print",(function($a){var args,self=this;null==$gvars[","]&&($gvars[","]=nil);for(var i=0,ii=(args=Opal.slice.call(arguments)).length;i0&&$send(self,"puts",$to_a(ary))}else(line=args[i].$$is_string?args[i].valueOf():$Kernel.$String(args[i])).endsWith("\n")||(line+="\n"),self.$write(line);return nil}),-1),$def(self,"$getc",(function(){var $ret_or_1,parts=nil,ret=nil;this.read_buffer=$truthy($ret_or_1=this.read_buffer)?$ret_or_1:"",parts="";do{if(this.read_buffer=$rb_plus(this.read_buffer,parts),$neqeq(this.read_buffer,""))return ret=this.read_buffer["$[]"](0),this.read_buffer=this.read_buffer["$[]"]($range(1,-1,!1)),ret}while($truthy(parts=this.$sysread_noraise(1)));return nil}),0),$def(self,"$getbyte",(function(){var $a;return($a=this.$getc())===nil||null==$a?nil:$send($a,"ord",[])}),0),$def(self,"$readbyte",(function(){return this.$readchar().$ord()}),0),$def(self,"$readchar",(function(){var $ret_or_1;return $truthy($ret_or_1=this.$getc())?$ret_or_1:$Kernel.$raise($$$("EOFError"),"end of file reached")}),0),$def(self,"$readline",(function($a){var $post_args,self=this,$ret_or_1=nil;return $post_args=Opal.slice.call(arguments),$truthy($ret_or_1=$send(self,"gets",$to_a($post_args)))?$ret_or_1:$Kernel.$raise($$$("EOFError"),"end of file reached")}),-1),$def(self,"$gets",(function(sep,limit,opts){var $a,$b,$c,orig_sep,seplen,$ret_or_1=nil,data=nil,ret=nil,orig_buffer=nil;null==$gvars["/"]&&($gvars["/"]=nil),null==sep&&(sep=!1),null==limit&&(limit=nil),null==opts&&(opts=$hash2([],{})),$truthy(sep.$$is_number)&&$not(limit)&&(sep=($a=[!1,sep,limit])[0],limit=$a[1],opts=$a[2]),$truthy(sep.$$is_hash)&&$not(limit)&&$eqeq(opts,$hash2([],{}))?(sep=($a=[!1,nil,sep])[0],limit=$a[1],opts=$a[2]):$truthy(limit.$$is_hash)&&$eqeq(opts,$hash2([],{}))&&(sep=($a=[sep,nil,limit])[0],limit=$a[1],opts=$a[2]),orig_sep=sep,$eqeq(sep,!1)&&(sep=$gvars["/"]),$eqeq(sep,"")&&(sep=/\r?\n\r?\n/),sep=$truthy($ret_or_1=sep)?$ret_or_1:"",$eqeq(orig_sep,"")||(sep=sep.$to_str()),seplen=$eqeq(orig_sep,"")?2:sep.$length(),$eqeq(sep," ")&&(sep=/ /),this.read_buffer=$truthy($ret_or_1=this.read_buffer)?$ret_or_1:"",data="",ret=nil;do{if(this.read_buffer=$rb_plus(this.read_buffer,data),$neqeq(sep,"")&&$truthy($truthy(sep.$$is_regexp)?this.read_buffer["$match?"](sep):this.read_buffer["$include?"](sep))){orig_buffer=this.read_buffer,$c=this.read_buffer.$split(sep,2),ret=null==($b=$to_ary($c))[0]?nil:$b[0],this.read_buffer=null==$b[1]?nil:$b[1],$neqeq(ret,orig_buffer)&&(ret=$rb_plus(ret,orig_buffer["$[]"](ret.$length(),seplen)));break}}while($truthy(data=this.$sysread_noraise($eqeq(sep,"")?65536:1)));return $truthy(ret)||(ret=($a=[$truthy($ret_or_1=this.read_buffer)?$ret_or_1:"",""])[0],this.read_buffer=$a[1],$eqeq(ret,"")&&(ret=nil)),$truthy(ret)&&($truthy(limit)&&(ret=ret["$[]"](Opal.Range.$new(0,limit,!0)),this.read_buffer=$rb_plus(ret["$[]"](Opal.Range.$new(limit,-1,!1)),this.read_buffer)),$truthy(opts["$[]"]("chomp"))&&(ret=ret.$sub(/\r?\n$/,"")),$eqeq(orig_sep,"")&&(ret=ret.$sub(/^[\r\n]+/,""))),$eqeq(orig_sep,!1)&&($gvars._=ret),ret}),-1),$def(self,"$sysread",(function(integer){var $ret_or_1;return $truthy($ret_or_1=this.read_proc(integer))?$ret_or_1:(this.eof=!0,$Kernel.$raise($$$("EOFError"),"end of file reached"))}),1),$def(self,"$sysread_noraise",(function(integer){try{return this.$sysread(integer)}catch($err){if(!Opal.rescue($err,[$$$("EOFError")]))throw $err;try{return nil}finally{Opal.pop_exception()}}}),1),$def(self,"$readpartial",(function(integer){var $a,part,$ret_or_1=nil,ret=nil;return this.read_buffer=$truthy($ret_or_1=this.read_buffer)?$ret_or_1:"",part=this.$sysread(integer),ret=($a=[$rb_plus(this.read_buffer,$truthy($ret_or_1=part)?$ret_or_1:""),""])[0],this.read_buffer=$a[1],$eqeq(ret,"")&&(ret=nil),ret}),1),$def(self,"$read",(function(integer){var $a,$b,$ret_or_1=nil,parts=nil,ret=nil;null==integer&&(integer=nil),this.read_buffer=$truthy($ret_or_1=this.read_buffer)?$ret_or_1:"",parts="",ret=nil;do{if(this.read_buffer=$rb_plus(this.read_buffer,parts),$truthy(integer)&&$truthy($rb_gt(this.read_buffer.$length(),integer)))return ret=($b=[this.read_buffer["$[]"](Opal.Range.$new(0,integer,!0)),this.read_buffer["$[]"](Opal.Range.$new(integer,-1,!1))])[0],this.read_buffer=$b[1],ret}while($truthy(parts=this.$sysread_noraise($truthy($ret_or_1=integer)?$ret_or_1:65536)));return ret=($a=[this.read_buffer,""])[0],this.read_buffer=$a[1],ret}),-1),$def(self,"$readlines",(function(separator){return null==$gvars["/"]&&($gvars["/"]=nil),null==separator&&(separator=$gvars["/"]),this.$each_line(separator).$to_a()}),-1),$def(self,"$each",(function $$each($a,$b){var $post_args,sep,args,block=$$each.$$p||nil,self=this,s=nil;if(null==$gvars["/"]&&($gvars["/"]=nil),delete $$each.$$p,($post_args=Opal.slice.call(arguments)).length>0&&(sep=$post_args.shift()),null==sep&&(sep=$gvars["/"]),args=$post_args,block===nil)return $send(self,"enum_for",["each",sep].concat($to_a(args)));for(;$truthy(s=$send(self,"gets",[sep].concat($to_a(args))));)Opal.yield1(block,s);return self}),-1),$def(self,"$each_byte",(function $$each_byte(){var block=$$each_byte.$$p||nil,s=nil;if(delete $$each_byte.$$p,block===nil)return this.$enum_for("each_byte");for(;$truthy(s=this.$getbyte());)Opal.yield1(block,s);return this}),0),$def(self,"$each_char",(function $$each_char(){var block=$$each_char.$$p||nil,s=nil;if(delete $$each_char.$$p,block===nil)return this.$enum_for("each_char");for(;$truthy(s=this.$getc());)Opal.yield1(block,s);return this}),0),$def(self,"$close",(function(){return this.closed="both"}),0),$def(self,"$close_read",(function(){return $eqeq(this.closed,"write")?this.closed="both":this.closed="read"}),0),$def(self,"$close_write",(function(){return $eqeq(this.closed,"read")?this.closed="both":this.closed="write"}),0),$def(self,"$closed?",(function(){return this.closed["$=="]("both")}),0),$def(self,"$closed_read?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.closed["$=="]("read"))?$ret_or_1:this.closed["$=="]("both")}),0),$def(self,"$closed_write?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.closed["$=="]("write"))?$ret_or_1:this.closed["$=="]("both")}),0),$def(self,"$check_writable",(function(){return $truthy(this["$closed_write?"]())?$Kernel.$raise($$$("IOError"),"not opened for writing"):nil}),0),$def(self,"$check_readable",(function(){return $truthy(this["$closed_read?"]())?$Kernel.$raise($$$("IOError"),"not opened for reading"):nil}),0),$alias(self,"each_line","each"),$alias(self,"eof?","eof"),$const_set("::","STDIN",$gvars.stdin=$$$("IO").$new(0,"r")),$const_set("::","STDOUT",$gvars.stdout=$$$("IO").$new(1,"w")),$const_set("::","STDERR",$gvars.stderr=$$$("IO").$new(2,"w"));var console=Opal.global.console;return $writer=["object"==typeof process&&"object"==typeof process.stdout?function(s){process.stdout.write(s)}:function(s){console.log(s)}],$send($$$("STDOUT"),"write_proc=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=["object"==typeof process&&"object"==typeof process.stderr?function(s){process.stderr.write(s)}:function(s){console.warn(s)}],$send($$$("STDERR"),"write_proc=",$to_a($writer)),$writer[$rb_minus($writer.length,1)],$writer=[function(s){var p=prompt();return null!==p?p+"\n":nil}],$send($$$("STDIN"),"read_proc=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]},Opal.modules["opal/regexp_anchors"]=function(Opal){var $nesting=[],$$$=(Opal.nil,Opal.$$$),$module=Opal.module,$const_set=Opal.const_set;return Opal.add_stubs("new"),function($base,$parent_nesting){var self=$module($base,"Opal"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);return $const_set(self,"REGEXP_START","^"),$const_set(self,"REGEXP_END","$"),$const_set(self,"FORBIDDEN_STARTING_IDENTIFIER_CHARS","\\u0001-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"FORBIDDEN_ENDING_IDENTIFIER_CHARS","\\u0001-\\u0020\\u0022-\\u002F\\u003A-\\u003E\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"INLINE_IDENTIFIER_REGEXP",$$("Regexp").$new("[^"+$$$(self,"FORBIDDEN_STARTING_IDENTIFIER_CHARS")+"]*[^"+$$$(self,"FORBIDDEN_ENDING_IDENTIFIER_CHARS")+"]")),$const_set(self,"FORBIDDEN_CONST_NAME_CHARS","\\u0001-\\u0020\\u0021-\\u002F\\u003B-\\u003F\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F"),$const_set(self,"CONST_NAME_REGEXP",$$("Regexp").$new($$$(self,"REGEXP_START")+"(::)?[A-Z][^"+$$$(self,"FORBIDDEN_CONST_NAME_CHARS")+"]*"+$$$(self,"REGEXP_END")))}($nesting[0],$nesting)},Opal.modules["opal/mini"]=function(Opal){Opal.nil;var $Object=Opal.Object;return Opal.add_stubs("require"),$Object.$require("opal/base"),$Object.$require("corelib/nil"),$Object.$require("corelib/boolean"),$Object.$require("corelib/string"),$Object.$require("corelib/comparable"),$Object.$require("corelib/enumerable"),$Object.$require("corelib/enumerator"),$Object.$require("corelib/array"),$Object.$require("corelib/hash"),$Object.$require("corelib/number"),$Object.$require("corelib/range"),$Object.$require("corelib/proc"),$Object.$require("corelib/method"),$Object.$require("corelib/regexp"),$Object.$require("corelib/variables"),$Object.$require("corelib/io"),$Object.$require("opal/regexp_anchors")},Opal.modules["corelib/kernel/format"]=function(Opal){var self,nil=Opal.nil,$$$=Opal.$$$,$coerce_to=Opal.coerce_to,$module=Opal.module,$truthy=Opal.truthy,$eqeq=Opal.eqeq,$Opal=Opal.Opal,$Kernel=Opal.Kernel,$gvars=Opal.gvars,$def=Opal.def,$alias=Opal.alias;return Opal.add_stubs("respond_to?,[],==,length,coerce_to?,nil?,to_a,raise,to_int,fetch,Integer,Float,to_ary,to_str,inspect,to_s"),self=$module("::","Kernel"),$def(self,"$format",(function(format_string,$a){var $post_args,args,ary=nil;null==$gvars.DEBUG&&($gvars.DEBUG=nil),$post_args=Opal.slice.call(arguments,1),$eqeq((args=$post_args).$length(),1)&&$truthy(args["$[]"](0)["$respond_to?"]("to_ary"))&&(ary=$Opal["$coerce_to?"](args["$[]"](0),$$$("Array"),"to_ary"),$truthy(ary["$nil?"]())||(args=ary.$to_a()));var end_slice,i,arg,str,exponent,width,precision,tmp_num,hash_parameter_key,closing_brace_char,base_number,base_prefix,base_neg_zero_regex,base_neg_zero_digit,next_arg,flags,result="",begin_slice=0,len=format_string.length,seq_arg_num=1,pos_arg_num=0,FNONE=0,FSHARP=1,FMINUS=2,FPLUS=4,FZERO=8,FSPACE=16,FWIDTH=32,FPREC=64,FPREC0=128;function CHECK_FOR_FLAGS(){flags&FWIDTH&&$Kernel.$raise($$$("ArgumentError"),"flag after width"),flags&FPREC0&&$Kernel.$raise($$$("ArgumentError"),"flag after precision")}function CHECK_FOR_WIDTH(){flags&FWIDTH&&$Kernel.$raise($$$("ArgumentError"),"width given twice"),flags&FPREC0&&$Kernel.$raise($$$("ArgumentError"),"width after precision")}function GET_NTH_ARG(num){return num>=args.length&&$Kernel.$raise($$$("ArgumentError"),"too few arguments"),args[num]}function GET_NEXT_ARG(){switch(pos_arg_num){case-1:$Kernel.$raise($$$("ArgumentError"),"unnumbered("+seq_arg_num+") mixed with numbered");case-2:$Kernel.$raise($$$("ArgumentError"),"unnumbered("+seq_arg_num+") mixed with named")}return GET_NTH_ARG((pos_arg_num=seq_arg_num++)-1)}function GET_POS_ARG(num){return pos_arg_num>0&&$Kernel.$raise($$$("ArgumentError"),"numbered("+num+") after unnumbered("+pos_arg_num+")"),-2===pos_arg_num&&$Kernel.$raise($$$("ArgumentError"),"numbered("+num+") after named"),num<1&&$Kernel.$raise($$$("ArgumentError"),"invalid index - "+num+"$"),pos_arg_num=-1,GET_NTH_ARG(num-1)}function GET_ARG(){return void 0===next_arg?GET_NEXT_ARG():next_arg}function READ_NUM(label){for(var num,str="";;i++){if(i===len&&$Kernel.$raise($$$("ArgumentError"),"malformed format string - %*[0-9]"),format_string.charCodeAt(i)<48||format_string.charCodeAt(i)>57)return i--,(num=parseInt(str,10)||0)>2147483647&&$Kernel.$raise($$$("ArgumentError"),label+" too big"),num;str+=format_string.charAt(i)}}function READ_NUM_AFTER_ASTER(label){var arg,num=READ_NUM(label);return"$"===format_string.charAt(i+1)?(i++,arg=GET_POS_ARG(num)):arg=GET_NEXT_ARG(),arg.$to_int()}for(i=format_string.indexOf("%");-1!==i;i=format_string.indexOf("%",i)){switch(str=void 0,flags=FNONE,width=-1,precision=-1,next_arg=void 0,end_slice=i,i++,format_string.charAt(i)){case"%":begin_slice=i;case"":case"\n":case"\0":i++;continue}format_sequence:for(;i":"}",hash_parameter_key="",i++;;i++){if(i===len&&$Kernel.$raise($$$("ArgumentError"),"malformed name - unmatched parenthesis"),format_string.charAt(i)===closing_brace_char){if(pos_arg_num>0&&$Kernel.$raise($$$("ArgumentError"),"named "+hash_parameter_key+" after unnumbered("+pos_arg_num+")"),-1===pos_arg_num&&$Kernel.$raise($$$("ArgumentError"),"named "+hash_parameter_key+" after numbered"),pos_arg_num=-2,void 0!==args[0]&&args[0].$$is_hash||$Kernel.$raise($$$("ArgumentError"),"one hash required"),next_arg=args[0].$fetch(hash_parameter_key),">"===closing_brace_char)continue format_sequence;if(str=next_arg.toString(),-1!==precision&&(str=str.slice(0,precision)),flags&FMINUS)for(;str.length=0){for(str=arg.toString();str.length=0){for(str=arg.toString(base_number);str.length>>0).toString(base_number).replace(base_neg_zero_regex,base_neg_zero_digit);str.length=0||isNaN(arg)){if(arg===1/0)str="Inf";else switch(format_string.charAt(i)){case"f":str=arg.toFixed(-1===precision?6:precision);break;case"e":case"E":str=arg.toExponential(-1===precision?6:precision);break;case"g":case"G":str=arg.toExponential(),(exponent=parseInt(str.split("e")[1],10))<-4||exponent>=(-1===precision?6:precision)||(str=arg.toPrecision(-1===precision?flags&FSHARP?6:void 0:precision))}if(flags&FMINUS)for((flags&FPLUS||flags&FSPACE)&&(str=(flags&FPLUS?"+":" ")+str);str.length=(-1===precision?6:precision)||(str=(-arg).toPrecision(-1===precision?flags&FSHARP?6:void 0:precision))}if(flags&FMINUS)for(str="-"+str;str.length=0&&seq_arg_num"}),0),$def(self,"$charsize",(function(string){for(var len=0,i=0,length=string.length;i=55296&&charcode<=56319||len++}return len}),1),$def(self,"$each_char",(function $$each_char(string){var block=$$each_char.$$p||nil;delete $$each_char.$$p;for(var low_surrogate="",i=0,length=string.length;i=56320&&charcode<=57343?low_surrogate=chr:(charcode>=55296&&charcode<=56319&&(chr=low_surrogate+chr),"UTF-8"!=string.encoding.name&&((chr=new String(chr)).encoding=string.encoding),Opal.yield1(block,chr))}}),1),$def(self,"$each_byte",(function($a){return Opal.slice.call(arguments),$Kernel.$raise($$$("NotImplementedError"))}),-1),$def(self,"$bytesize",(function($a){return Opal.slice.call(arguments),$Kernel.$raise($$$("NotImplementedError"))}),-1),$klass("::",$$$("StandardError"),"EncodingError"),$klass("::",$$$("EncodingError"),"CompatibilityError")}(),$send($$$("Encoding"),"register",["UTF-8",$hash2(["aliases","ascii"],{aliases:["CP65001"],ascii:!0})],(function $$5(){var self=null==$$5.$$s?this:$$5.$$s;return $def(self,"$each_byte",(function $$each_byte(string){var block=$$each_byte.$$p||nil;delete $$each_byte.$$p;for(var codePoint,units=1/0,length=string.length,leadSurrogate=null,i=0;i55295&&codePoint<57344){if(!leadSurrogate){if(codePoint>56319){(units-=3)>-1&&(Opal.yield1(block,239),Opal.yield1(block,191),Opal.yield1(block,189));continue}if(i+1===length){(units-=3)>-1&&(Opal.yield1(block,239),Opal.yield1(block,191),Opal.yield1(block,189));continue}leadSurrogate=codePoint;continue}if(codePoint<56320){(units-=3)>-1&&(Opal.yield1(block,239),Opal.yield1(block,191),Opal.yield1(block,189)),leadSurrogate=codePoint;continue}codePoint=65536+(leadSurrogate-55296<<10|codePoint-56320)}else leadSurrogate&&(units-=3)>-1&&(Opal.yield1(block,239),Opal.yield1(block,191),Opal.yield1(block,189));if(leadSurrogate=null,codePoint<128){if((units-=1)<0)break;Opal.yield1(block,codePoint)}else if(codePoint<2048){if((units-=2)<0)break;Opal.yield1(block,codePoint>>6|192),Opal.yield1(block,63&codePoint|128)}else if(codePoint<65536){if((units-=3)<0)break;Opal.yield1(block,codePoint>>12|224),Opal.yield1(block,codePoint>>6&63|128),Opal.yield1(block,63&codePoint|128)}else if(codePoint<1114112){if((units-=4)<0)break;Opal.yield1(block,codePoint>>18|240),Opal.yield1(block,codePoint>>12&63|128),Opal.yield1(block,codePoint>>6&63|128),Opal.yield1(block,63&codePoint|128)}}}),1),$def(self,"$bytesize",(function(string){return string.$bytes().$length()}),1)}),{$$arity:0,$$s:self}),$send($$$("Encoding"),"register",["UTF-16LE"],(function $$6(){var self=null==$$6.$$s?this:$$6.$$s;return $def(self,"$each_byte",(function $$each_byte(string){var block=$$each_byte.$$p||nil;delete $$each_byte.$$p;for(var i=0,length=string.length;i>8)}}),1),$def(self,"$bytesize",(function(string){return 2*string.length}),1)}),{$$arity:0,$$s:self}),$send($$$("Encoding"),"register",["UTF-16BE",$hash2(["inherits"],{inherits:$$$($$$("Encoding"),"UTF_16LE")})],(function $$7(){return $def(null==$$7.$$s?this:$$7.$$s,"$each_byte",(function $$each_byte(string){var block=$$each_byte.$$p||nil;delete $$each_byte.$$p;for(var i=0,length=string.length;i>8),Opal.yield1(block,255&code)}}),1)}),{$$arity:0,$$s:self}),$send($$$("Encoding"),"register",["UTF-32LE"],(function $$8(){var self=null==$$8.$$s?this:$$8.$$s;return $def(self,"$each_byte",(function $$each_byte(string){var block=$$each_byte.$$p||nil;delete $$each_byte.$$p;for(var i=0,length=string.length;i>8),Opal.yield1(block,0),Opal.yield1(block,0)}}),1),$def(self,"$bytesize",(function(string){return 4*string.length}),1)}),{$$arity:0,$$s:self}),$send($$$("Encoding"),"register",["UTF-32BE",$hash2(["inherits"],{inherits:$$$($$$("Encoding"),"UTF_32LE")})],(function $$9(){return $def(null==$$9.$$s?this:$$9.$$s,"$each_byte",(function $$each_byte(string){var block=$$each_byte.$$p||nil;delete $$each_byte.$$p;for(var i=0,length=string.length;i>8),Opal.yield1(block,255&code)}}),1)}),{$$arity:0,$$s:self}),$send($$$("Encoding"),"register",["ASCII-8BIT",$hash2(["aliases","ascii"],{aliases:["BINARY"],ascii:!0})],(function $$10(){var self=null==$$10.$$s?this:$$10.$$s;return $def(self,"$each_char",(function $$each_char(string){var block=$$each_char.$$p||nil;delete $$each_char.$$p;for(var i=0,length=string.length;i1;)r*=.125,ex++;for(r=(-.46946116*r+1.072302)*r+.3812513;ex<0;)r*=.5,ex++;for(;ex>0;)r*=2,ex--;return r=2/3*(r=2/3*(r=2/3*(r=2/3*r+1/3*x/(r*r))+1/3*x/(r*r))+1/3*x/(r*r))+1/3*x/(r*r)}),$def(self,"$cbrt",(function(x){return $$$("Math").$checked("cbrt",$$$("Math")["$float!"](x))}),1),$def(self,"$cos",(function(x){return $$$("Math").$checked("cos",$$$("Math")["$float!"](x))}),1),$truthy(void 0!==Math.cosh)||(Math.cosh=function(x){return(Math.exp(x)+Math.exp(-x))/2}),$def(self,"$cosh",(function(x){return $$$("Math").$checked("cosh",$$$("Math")["$float!"](x))}),1),$truthy(void 0!==Math.erf)||Opal.prop(Math,"erf",(function(x){var sign=1;x<0&&(sign=-1);var t=1/(1+.3275911*(x=Math.abs(x)));return sign*(1-((((1.061405429*t-1.453152027)*t+1.421413741)*t-.284496736)*t+.254829592)*t*Math.exp(-x*x))})),$def(self,"$erf",(function(x){return $$$("Math").$checked("erf",$$$("Math")["$float!"](x))}),1),$truthy(void 0!==Math.erfc)||Opal.prop(Math,"erfc",(function(x){var z=Math.abs(x),t=1/(.5*z+1),A10=-z*z-1.26551223+t*(t*(t*(t*(t*(t*(t*(t*(.17087277*t-.82215223)+1.48851587)-1.13520398)+.27886807)-.18628806)+.09678418)+.37409196)+1.00002368),a=t*Math.exp(A10);return x<0?2-a:a})),$def(self,"$erfc",(function(x){return $$$("Math").$checked("erfc",$$$("Math")["$float!"](x))}),1),$def(self,"$exp",(function(x){return $$$("Math").$checked("exp",$$$("Math")["$float!"](x))}),1),$def(self,"$frexp",(function(x){if(x=$$("Math")["$float!"](x),isNaN(x))return[NaN,0];var ex=Math.floor(Math.log(Math.abs(x))/Math.log(2))+1;return[x/Math.pow(2,ex),ex]}),1),$def(self,"$gamma",(function(n){var i,t,x,value,result,twoN,threeN,fourN,fiveN;n=$$("Math")["$float!"](n);var P=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22];if(isNaN(n))return NaN;if(0===n&&1/n<0)return-1/0;if(-1!==n&&n!==-1/0||$Kernel.$raise($$("DomainError"),'Numerical argument is out of domain - "gamma"'),$$("Integer")["$==="](n)){if(n<=0)return isFinite(n)?1/0:NaN;if(n>171)return 1/0;for(value=n-2,result=n-1;value>1;)result*=value,value--;return 0==result&&(result=1),result}if(n<.5)return Math.PI/(Math.sin(Math.PI*n)*$$$("Math").$gamma($rb_minus(1,n)));if(n>=171.35)return 1/0;if(n>85)return fiveN=(fourN=(threeN=(twoN=n*n)*n)*n)*n,Math.sqrt(2*Math.PI/n)*Math.pow(n/Math.E,n)*(1+1/(12*n)+1/(288*twoN)-139/(51840*threeN)-571/(2488320*fourN)+163879/(209018880*fiveN)+5246819/(75246796800*fiveN*n));for(n-=1,x=P[0],i=1;i,!=,divmod,**,hypot,atan2,lcm,denominator,finite?,infinite?,numerator,abs,arg,rationalize,to_f,to_i,to_r,inspect,zero?,positive?,Rational"),self.$require("corelib/numeric"),self.$require("corelib/complex/base"),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Complex"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting),$proto=self.$$prototype;return $proto.real=$proto.imag=nil,$defs(self,"$rect",(function(real,imag){return null==imag&&(imag=0),$eqeqeq($$$("Numeric"),real)&&$truthy(real["$real?"]())&&$eqeqeq($$$("Numeric"),imag)&&$truthy(imag["$real?"]())||$Kernel.$raise($$$("TypeError"),"not a real"),this.$new(real,imag)}),-2),$defs(self,"$polar",(function(r,theta){return null==theta&&(theta=0),$eqeqeq($$$("Numeric"),r)&&$truthy(r["$real?"]())&&$eqeqeq($$$("Numeric"),theta)&&$truthy(theta["$real?"]())||$Kernel.$raise($$$("TypeError"),"not a real"),this.$new($rb_times(r,$$$("Math").$cos(theta)),$rb_times(r,$$$("Math").$sin(theta)))}),-2),self.$attr_reader("real","imag"),$def(self,"$initialize",(function(real,imag){return null==imag&&(imag=0),this.real=real,this.imag=imag}),-2),$def(self,"$coerce",(function(other){return $eqeqeq($$$("Complex"),other)?[other,this]:$eqeqeq($$$("Numeric"),other)&&$truthy(other["$real?"]())?[$$$("Complex").$new(other,0),this]:$Kernel.$raise($$$("TypeError"),other.$class()+" can't be coerced into Complex")}),1),$def(self,"$==",(function(other){var $ret_or_1=nil;return $eqeqeq($$$("Complex"),other)?$truthy($ret_or_1=this.real["$=="](other.$real()))?this.imag["$=="](other.$imag()):$ret_or_1:$eqeqeq($$$("Numeric"),other)&&$truthy(other["$real?"]())?$truthy($ret_or_1=this.real["$=="](other))?this.imag["$=="](0):$ret_or_1:other["$=="](this)}),1),$def(self,"$-@",(function(){return $Kernel.$Complex(this.real["$-@"](),this.imag["$-@"]())}),0),$def(self,"$+",(function(other){return $eqeqeq($$$("Complex"),other)?$Kernel.$Complex($rb_plus(this.real,other.$real()),$rb_plus(this.imag,other.$imag())):$eqeqeq($$$("Numeric"),other)&&$truthy(other["$real?"]())?$Kernel.$Complex($rb_plus(this.real,other),this.imag):this.$__coerced__("+",other)}),1),$def(self,"$-",(function(other){return $eqeqeq($$$("Complex"),other)?$Kernel.$Complex($rb_minus(this.real,other.$real()),$rb_minus(this.imag,other.$imag())):$eqeqeq($$$("Numeric"),other)&&$truthy(other["$real?"]())?$Kernel.$Complex($rb_minus(this.real,other),this.imag):this.$__coerced__("-",other)}),1),$def(self,"$*",(function(other){return $eqeqeq($$$("Complex"),other)?$Kernel.$Complex($rb_minus($rb_times(this.real,other.$real()),$rb_times(this.imag,other.$imag())),$rb_plus($rb_times(this.real,other.$imag()),$rb_times(this.imag,other.$real()))):$eqeqeq($$$("Numeric"),other)&&$truthy(other["$real?"]())?$Kernel.$Complex($rb_times(this.real,other),$rb_times(this.imag,other)):this.$__coerced__("*",other)}),1),$def(self,"$/",(function(other){return $eqeqeq($$$("Complex"),other)?$eqeqeq($$$("Number"),this.real)&&$truthy(this.real["$nan?"]())||$eqeqeq($$$("Number"),this.imag)&&$truthy(this.imag["$nan?"]())||$eqeqeq($$$("Number"),other.$real())&&$truthy(other.$real()["$nan?"]())||$eqeqeq($$$("Number"),other.$imag())&&$truthy(other.$imag()["$nan?"]())?$$$("Complex").$new($$$($$$("Float"),"NAN"),$$$($$$("Float"),"NAN")):$rb_divide($rb_times(this,other.$conj()),other.$abs2()):$eqeqeq($$$("Numeric"),other)&&$truthy(other["$real?"]())?$Kernel.$Complex(this.real.$quo(other),this.imag.$quo(other)):this.$__coerced__("/",other)}),1),$def(self,"$**",(function(other){var $a,$b,$c,$d,r=nil,theta=nil,ore=nil,oim=nil,nr=nil,ntheta=nil,x=nil,z=nil,n=nil,div=nil,mod=nil;if($eqeq(other,0))return $$$("Complex").$new(1,0);if($eqeqeq($$$("Complex"),other))return $b=this.$polar(),r=null==($a=$to_ary($b))[0]?nil:$a[0],theta=null==$a[1]?nil:$a[1],ore=other.$real(),oim=other.$imag(),nr=$$$("Math").$exp($rb_minus($rb_times(ore,$$$("Math").$log(r)),$rb_times(oim,theta))),ntheta=$rb_plus($rb_times(theta,ore),$rb_times(oim,$$$("Math").$log(r))),$$$("Complex").$polar(nr,ntheta);if($eqeqeq($$$("Integer"),other)){if($truthy($rb_gt(other,0))){for(z=x=this,n=$rb_minus(other,1);$neqeq(n,0);){for($c=n.$divmod(2),div=null==($b=$to_ary($c))[0]?nil:$b[0],mod=null==$b[1]?nil:$b[1];$eqeq(mod,0);)x=$Kernel.$Complex($rb_minus($rb_times(x.$real(),x.$real()),$rb_times(x.$imag(),x.$imag())),$rb_times($rb_times(2,x.$real()),x.$imag())),$d=(n=div).$divmod(2),div=null==($c=$to_ary($d))[0]?nil:$c[0],mod=null==$c[1]?nil:$c[1];z=$rb_times(z,x),n=$rb_minus(n,1)}return z}return $rb_divide($$$("Rational").$new(1,1),this)["$**"](other["$-@"]())}return $eqeqeq($$$("Float"),other)||$eqeqeq($$$("Rational"),other)?($b=this.$polar(),r=null==($a=$to_ary($b))[0]?nil:$a[0],theta=null==$a[1]?nil:$a[1],$$$("Complex").$polar(r["$**"](other),$rb_times(theta,other))):this.$__coerced__("**",other)}),1),$def(self,"$abs",(function(){return $$$("Math").$hypot(this.real,this.imag)}),0),$def(self,"$abs2",(function(){return $rb_plus($rb_times(this.real,this.real),$rb_times(this.imag,this.imag))}),0),$def(self,"$angle",(function(){return $$$("Math").$atan2(this.imag,this.real)}),0),$def(self,"$conj",(function(){return $Kernel.$Complex(this.real,this.imag["$-@"]())}),0),$def(self,"$denominator",(function(){return this.real.$denominator().$lcm(this.imag.$denominator())}),0),$def(self,"$eql?",(function(other){var $ret_or_1,$ret_or_2;return $truthy($ret_or_1=$truthy($ret_or_2=$$("Complex")["$==="](other))?this.real.$class()["$=="](this.imag.$class()):$ret_or_2)?this["$=="](other):$ret_or_1}),1),$def(self,"$fdiv",(function(other){return $eqeqeq($$$("Numeric"),other)||$Kernel.$raise($$$("TypeError"),other.$class()+" can't be coerced into Complex"),$rb_divide(this,other)}),1),$def(self,"$finite?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.real["$finite?"]())?this.imag["$finite?"]():$ret_or_1}),0),$def(self,"$hash",(function(){return"Complex:"+this.real+":"+this.imag}),0),$def(self,"$infinite?",(function(){var $ret_or_1;return $truthy($ret_or_1=this.real["$infinite?"]())?$ret_or_1:this.imag["$infinite?"]()}),0),$def(self,"$inspect",(function(){return"("+this+")"}),0),$def(self,"$numerator",(function(){var d;return d=this.$denominator(),$Kernel.$Complex($rb_times(this.real.$numerator(),$rb_divide(d,this.real.$denominator())),$rb_times(this.imag.$numerator(),$rb_divide(d,this.imag.$denominator())))}),0),$def(self,"$polar",(function(){return[this.$abs(),this.$arg()]}),0),$def(self,"$rationalize",(function(eps){var self=this;return arguments.length>1&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arguments.length+" for 0..1)"),$neqeq(self.imag,0)&&$Kernel.$raise($$$("RangeError"),"can't convert "+self+" into Rational"),self.$real().$rationalize(eps)}),-1),$def(self,"$real?",(function(){return!1}),0),$def(self,"$rect",(function(){return[this.real,this.imag]}),0),$def(self,"$to_f",(function(){return $eqeq(this.imag,0)||$Kernel.$raise($$$("RangeError"),"can't convert "+this+" into Float"),this.real.$to_f()}),0),$def(self,"$to_i",(function(){return $eqeq(this.imag,0)||$Kernel.$raise($$$("RangeError"),"can't convert "+this+" into Integer"),this.real.$to_i()}),0),$def(self,"$to_r",(function(){return $eqeq(this.imag,0)||$Kernel.$raise($$$("RangeError"),"can't convert "+this+" into Rational"),this.real.$to_r()}),0),$def(self,"$to_s",(function(){var result=nil;return result=this.real.$inspect(),result=$rb_plus(result,$eqeqeq($$$("Number"),this.imag)&&$truthy(this.imag["$nan?"]())||$truthy(this.imag["$positive?"]())||$truthy(this.imag["$zero?"]())?"+":"-"),result=$rb_plus(result,this.imag.$abs().$inspect()),$eqeqeq($$$("Number"),this.imag)&&($truthy(this.imag["$nan?"]())||$truthy(this.imag["$infinite?"]()))&&(result=$rb_plus(result,"*")),$rb_plus(result,"i")}),0),$const_set($nesting[0],"I",self.$new(0,1)),$defs(self,"$from_string",(function(str){var real,imag,re=/[+-]?[\d_]+(\.[\d_]+)?(e\d+)?/;str.match(re);function isFloat(){return re.test(str)}function cutFloat(){var number=str.match(re)[0];return str=str.slice(number.length),number.replace(/_/g,"")}function cutNumber(){if(isFloat()){var numerator=parseFloat(cutFloat());if("/"===str[0]){if(str=str.slice(1),isFloat()){var denominator=parseFloat(cutFloat());return $Kernel.$Rational(numerator,denominator)}return str="/"+str,numerator}return numerator}return null}return(real=cutNumber())?(imag=cutNumber())?$Kernel.$Complex(real,imag):"i"===str[0]?$Kernel.$Complex(0,real):$Kernel.$Complex(real,0):"i"===str[0]?$Kernel.$Complex(0,1):"-"===str[0]&&"i"===str[1]?$Kernel.$Complex(0,-1):"+"===str[0]&&"i"===str[1]?$Kernel.$Complex(0,1):$Kernel.$Complex(0,0)}),1),function(self,$parent_nesting){$alias(self,"rectangular","rect")}(Opal.get_singleton_class(self)),$alias(self,"arg","angle"),$alias(self,"conjugate","conj"),$alias(self,"divide","/"),$alias(self,"imaginary","imag"),$alias(self,"magnitude","abs"),$alias(self,"phase","arg"),$alias(self,"quo","/"),$alias(self,"rectangular","rect"),Opal.udef(self,"$negative?"),Opal.udef(self,"$positive?"),Opal.udef(self,"$step"),nil}(0,$$$("Numeric"),[])},Opal.modules["corelib/rational/base"]=function(Opal){Opal.nil;var self,$$$=Opal.$$$,$module=Opal.module,$def=Opal.def,$klass=Opal.klass;return Opal.add_stubs("convert,from_string"),self=$module("::","Kernel"),$def(self,"$Rational",(function(numerator,denominator){return null==denominator&&(denominator=1),$$$("Rational").$convert(numerator,denominator)}),-2),function($base,$super){var self=$klass("::",null,"String");return $def(self,"$to_r",(function(){return $$$("Rational").$from_string(this)}),0)}()},Opal.modules["corelib/rational"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$eqeq=Opal.eqeq,$Kernel=Opal.Kernel,$truthy=Opal.truthy,$rb_lt=Opal.rb_lt,$rb_divide=Opal.rb_divide,$defs=Opal.defs,$eqeqeq=Opal.eqeqeq,$not=Opal.not,$Opal=Opal.Opal,$def=Opal.def,$rb_minus=Opal.rb_minus,$rb_times=Opal.rb_times,$rb_plus=Opal.rb_plus,$rb_gt=Opal.rb_gt,$rb_le=Opal.rb_le,$alias=Opal.alias;return Opal.add_stubs("require,to_i,==,raise,<,-@,new,gcd,/,nil?,===,reduce,to_r,!,equal?,coerce_to!,to_f,numerator,denominator,<=>,-,*,__coerced__,+,Rational,>,**,abs,ceil,with_precision,floor,<=,truncate,send"),self.$require("corelib/numeric"),self.$require("corelib/rational/base"),function($base,$super){var self=$klass("::",$super,"Rational"),$proto=self.$$prototype;return $proto.num=$proto.den=nil,$defs(self,"$reduce",(function(num,den){var gcd;if(num=num.$to_i(),den=den.$to_i(),$eqeq(den,0))$Kernel.$raise($$$("ZeroDivisionError"),"divided by 0");else if($truthy($rb_lt(den,0)))num=num["$-@"](),den=den["$-@"]();else if($eqeq(den,1))return this.$new(num,den);return gcd=num.$gcd(den),this.$new($rb_divide(num,gcd),$rb_divide(den,gcd))}),2),$defs(self,"$convert",(function(num,den){return($truthy(num["$nil?"]())||$truthy(den["$nil?"]()))&&$Kernel.$raise($$$("TypeError"),"cannot convert nil into Rational"),$eqeqeq($$$("Integer"),num)&&$eqeqeq($$$("Integer"),den)?this.$reduce(num,den):(($eqeqeq($$$("Float"),num)||$eqeqeq($$$("String"),num)||$eqeqeq($$$("Complex"),num))&&(num=num.$to_r()),($eqeqeq($$$("Float"),den)||$eqeqeq($$$("String"),den)||$eqeqeq($$$("Complex"),den))&&(den=den.$to_r()),$truthy(den["$equal?"](1))&&$not($$$("Integer")["$==="](num))?$Opal["$coerce_to!"](num,$$$("Rational"),"to_r"):$eqeqeq($$$("Numeric"),num)&&$eqeqeq($$$("Numeric"),den)?$rb_divide(num,den):this.$reduce(num,den))}),2),$def(self,"$initialize",(function(num,den){return this.num=num,this.den=den}),2),$def(self,"$numerator",(function(){return this.num}),0),$def(self,"$denominator",(function(){return this.den}),0),$def(self,"$coerce",(function(other){var $ret_or_1;return $eqeqeq($$$("Rational"),$ret_or_1=other)?[other,this]:$eqeqeq($$$("Integer"),$ret_or_1)?[other.$to_r(),this]:$eqeqeq($$$("Float"),$ret_or_1)?[other,this.$to_f()]:nil}),1),$def(self,"$==",(function(other){var $ret_or_1,$ret_or_2=nil;return $eqeqeq($$$("Rational"),$ret_or_1=other)?$truthy($ret_or_2=this.num["$=="](other.$numerator()))?this.den["$=="](other.$denominator()):$ret_or_2:$eqeqeq($$$("Integer"),$ret_or_1)?$truthy($ret_or_2=this.num["$=="](other))?this.den["$=="](1):$ret_or_2:$eqeqeq($$$("Float"),$ret_or_1)?this.$to_f()["$=="](other):other["$=="](this)}),1),$def(self,"$<=>",(function(other){var $ret_or_1;return $eqeqeq($$$("Rational"),$ret_or_1=other)?$rb_minus($rb_times(this.num,other.$denominator()),$rb_times(this.den,other.$numerator()))["$<=>"](0):$eqeqeq($$$("Integer"),$ret_or_1)?$rb_minus(this.num,$rb_times(this.den,other))["$<=>"](0):$eqeqeq($$$("Float"),$ret_or_1)?this.$to_f()["$<=>"](other):this.$__coerced__("<=>",other)}),1),$def(self,"$+",(function(other){var $ret_or_1,num=nil,den=nil;return $eqeqeq($$$("Rational"),$ret_or_1=other)?(num=$rb_plus($rb_times(this.num,other.$denominator()),$rb_times(this.den,other.$numerator())),den=$rb_times(this.den,other.$denominator()),$Kernel.$Rational(num,den)):$eqeqeq($$$("Integer"),$ret_or_1)?$Kernel.$Rational($rb_plus(this.num,$rb_times(other,this.den)),this.den):$eqeqeq($$$("Float"),$ret_or_1)?$rb_plus(this.$to_f(),other):this.$__coerced__("+",other)}),1),$def(self,"$-",(function(other){var $ret_or_1,num=nil,den=nil;return $eqeqeq($$$("Rational"),$ret_or_1=other)?(num=$rb_minus($rb_times(this.num,other.$denominator()),$rb_times(this.den,other.$numerator())),den=$rb_times(this.den,other.$denominator()),$Kernel.$Rational(num,den)):$eqeqeq($$$("Integer"),$ret_or_1)?$Kernel.$Rational($rb_minus(this.num,$rb_times(other,this.den)),this.den):$eqeqeq($$$("Float"),$ret_or_1)?$rb_minus(this.$to_f(),other):this.$__coerced__("-",other)}),1),$def(self,"$*",(function(other){var $ret_or_1,num=nil,den=nil;return $eqeqeq($$$("Rational"),$ret_or_1=other)?(num=$rb_times(this.num,other.$numerator()),den=$rb_times(this.den,other.$denominator()),$Kernel.$Rational(num,den)):$eqeqeq($$$("Integer"),$ret_or_1)?$Kernel.$Rational($rb_times(this.num,other),this.den):$eqeqeq($$$("Float"),$ret_or_1)?$rb_times(this.$to_f(),other):this.$__coerced__("*",other)}),1),$def(self,"$/",(function(other){var $ret_or_1,num=nil,den=nil;return $eqeqeq($$$("Rational"),$ret_or_1=other)?(num=$rb_times(this.num,other.$denominator()),den=$rb_times(this.den,other.$numerator()),$Kernel.$Rational(num,den)):$eqeqeq($$$("Integer"),$ret_or_1)?$eqeq(other,0)?$rb_divide(this.$to_f(),0):$Kernel.$Rational(this.num,$rb_times(this.den,other)):$eqeqeq($$$("Float"),$ret_or_1)?$rb_divide(this.$to_f(),other):this.$__coerced__("/",other)}),1),$def(self,"$**",(function(other){var $ret_or_1;return $eqeqeq($$$("Integer"),$ret_or_1=other)?$eqeq(this,0)&&$truthy($rb_lt(other,0))?$$$($$$("Float"),"INFINITY"):$truthy($rb_gt(other,0))?$Kernel.$Rational(this.num["$**"](other),this.den["$**"](other)):$truthy($rb_lt(other,0))?$Kernel.$Rational(this.den["$**"](other["$-@"]()),this.num["$**"](other["$-@"]())):$Kernel.$Rational(1,1):$eqeqeq($$$("Float"),$ret_or_1)?this.$to_f()["$**"](other):$eqeqeq($$$("Rational"),$ret_or_1)?$eqeq(other,0)?$Kernel.$Rational(1,1):$eqeq(other.$denominator(),1)?$truthy($rb_lt(other,0))?$Kernel.$Rational(this.den["$**"](other.$numerator().$abs()),this.num["$**"](other.$numerator().$abs())):$Kernel.$Rational(this.num["$**"](other.$numerator()),this.den["$**"](other.$numerator())):$eqeq(this,0)&&$truthy($rb_lt(other,0))?$Kernel.$raise($$$("ZeroDivisionError"),"divided by 0"):this.$to_f()["$**"](other):this.$__coerced__("**",other)}),1),$def(self,"$abs",(function(){return $Kernel.$Rational(this.num.$abs(),this.den.$abs())}),0),$def(self,"$ceil",(function(precision){return null==precision&&(precision=0),$eqeq(precision,0)?$rb_divide(this.num["$-@"](),this.den)["$-@"]().$ceil():this.$with_precision("ceil",precision)}),-1),$def(self,"$floor",(function(precision){return null==precision&&(precision=0),$eqeq(precision,0)?$rb_divide(this.num["$-@"](),this.den)["$-@"]().$floor():this.$with_precision("floor",precision)}),-1),$def(self,"$hash",(function(){return"Rational:"+this.num+":"+this.den}),0),$def(self,"$inspect",(function(){return"("+this+")"}),0),$def(self,"$rationalize",(function(eps){var self=this;if(arguments.length>1&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments ("+arguments.length+" for 0..1)"),null==eps)return self;for(var p2,q2,c,k,t,e=eps.$abs(),a=$rb_minus(self,e),b=$rb_plus(self,e),p0=0,p1=1,q0=1,q1=0;c=a.$ceil(),!$rb_le(c,b);)p2=(k=c-1)*p1+p0,q2=k*q1+q0,t=$rb_divide(1,$rb_minus(b,k)),b=$rb_divide(1,$rb_minus(a,k)),a=t,p0=p1,q0=q1,p1=p2,q1=q2;return $Kernel.$Rational(c*p1+p0,c*q1+q0)}),-1),$def(self,"$round",(function(precision){var num,den,approx=nil;return null==precision&&(precision=0),$eqeq(precision,0)?$eqeq(this.num,0)?0:$eqeq(this.den,1)?this.num:(num=$rb_plus($rb_times(this.num.$abs(),2),this.den),den=$rb_times(this.den,2),approx=$rb_divide(num,den).$truncate(),$truthy($rb_lt(this.num,0))?approx["$-@"]():approx):this.$with_precision("round",precision)}),-1),$def(self,"$to_f",(function(){return $rb_divide(this.num,this.den)}),0),$def(self,"$to_i",(function(){return this.$truncate()}),0),$def(self,"$to_r",(function(){return this}),0),$def(self,"$to_s",(function(){return this.num+"/"+this.den}),0),$def(self,"$truncate",(function(precision){return null==precision&&(precision=0),$eqeq(precision,0)?$truthy($rb_lt(this.num,0))?this.$ceil():this.$floor():this.$with_precision("truncate",precision)}),-1),$def(self,"$with_precision",(function(method,precision){var p,s=nil;return $eqeqeq($$$("Integer"),precision)||$Kernel.$raise($$$("TypeError"),"not an Integer"),p=10["$**"](precision),s=$rb_times(this,p),$truthy($rb_lt(precision,1))?$rb_divide(s.$send(method),p).$to_i():$Kernel.$Rational(s.$send(method),p)}),2),$defs(self,"$from_string",(function(string){var numerator,denominator,str=string.trimLeft(),re=/^[+-]?[\d_]+(\.[\d_]+)?/;str.match(re);function isFloat(){return re.test(str)}function cutFloat(){var number=str.match(re)[0];return str=str.slice(number.length),number.replace(/_/g,"")}return isFloat()?(numerator=parseFloat(cutFloat()),"/"===str[0]?(str=str.slice(1),isFloat()?(denominator=parseFloat(cutFloat()),$Kernel.$Rational(numerator,denominator)):$Kernel.$Rational(numerator,1)):$Kernel.$Rational(numerator,1)):$Kernel.$Rational(0,1)}),1),$alias(self,"divide","/"),$alias(self,"quo","/")}(0,$$$("Numeric"))},Opal.modules["corelib/time"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$slice=Opal.slice,$klass=Opal.klass,$Kernel=Opal.Kernel,$Opal=Opal.Opal,$defs=Opal.defs,$eqeqeq=Opal.eqeqeq,$def=Opal.def,$truthy=Opal.truthy,$rb_gt=Opal.rb_gt,$rb_lt=Opal.rb_lt,$rb_plus=Opal.rb_plus,$rb_divide=Opal.rb_divide,$rb_minus=Opal.rb_minus,$range=Opal.range,$neqeq=Opal.neqeq,$rb_le=Opal.rb_le,$eqeq=Opal.eqeq,$alias=Opal.alias;return Opal.add_stubs("require,include,===,raise,coerce_to!,respond_to?,to_str,to_i,new,<=>,to_f,nil?,>,<,strftime,year,month,day,+,round,/,-,copy_instance_variables,initialize_dup,is_a?,zero?,wday,utc?,mon,yday,hour,min,sec,rjust,ljust,zone,to_s,[],cweek_cyear,isdst,!=,<=,==,ceil"),self.$require("corelib/comparable"),function($base,$super,$parent_nesting){var self=$klass("::",$super,"Time"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$include($$$("Comparable"));var days_of_week=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],short_days=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],short_months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],long_months=["January","February","March","April","May","June","July","August","September","October","November","December"];function time_params(year,month,day,hour,min,sec){if(year=year.$$is_string?parseInt(year,10):$Opal["$coerce_to!"](year,$$$("Integer"),"to_int"),month===nil)month=1;else if(!month.$$is_number)if(month["$respond_to?"]("to_str"))switch((month=month.$to_str()).toLowerCase()){case"jan":month=1;break;case"feb":month=2;break;case"mar":month=3;break;case"apr":month=4;break;case"may":month=5;break;case"jun":month=6;break;case"jul":month=7;break;case"aug":month=8;break;case"sep":month=9;break;case"oct":month=10;break;case"nov":month=11;break;case"dec":month=12;break;default:month=month.$to_i()}else month=$Opal["$coerce_to!"](month,$$$("Integer"),"to_int");return(month<1||month>12)&&$Kernel.$raise($$$("ArgumentError"),"month out of range: "+month),month-=1,((day=day===nil?1:day.$$is_string?parseInt(day,10):$Opal["$coerce_to!"](day,$$$("Integer"),"to_int"))<1||day>31)&&$Kernel.$raise($$$("ArgumentError"),"day out of range: "+day),((hour=hour===nil?0:hour.$$is_string?parseInt(hour,10):$Opal["$coerce_to!"](hour,$$$("Integer"),"to_int"))<0||hour>24)&&$Kernel.$raise($$$("ArgumentError"),"hour out of range: "+hour),((min=min===nil?0:min.$$is_string?parseInt(min,10):$Opal["$coerce_to!"](min,$$$("Integer"),"to_int"))<0||min>59)&&$Kernel.$raise($$$("ArgumentError"),"min out of range: "+min),sec===nil?sec=0:sec.$$is_number||(sec=sec.$$is_string?parseInt(sec,10):$Opal["$coerce_to!"](sec,$$$("Integer"),"to_int")),(sec<0||sec>60)&&$Kernel.$raise($$$("ArgumentError"),"sec out of range: "+sec),[year,month,day,hour,min,sec]}return $defs(self,"$at",(function(seconds,frac){var result;return $$$("Time")["$==="](seconds)?(void 0!==frac&&$Kernel.$raise($$$("TypeError"),"can't convert Time into an exact number"),(result=new Date(seconds.getTime())).is_utc=seconds.is_utc,result):(seconds.$$is_number||(seconds=$Opal["$coerce_to!"](seconds,$$$("Integer"),"to_int")),void 0===frac?new Date(1e3*seconds):(frac.$$is_number||(frac=$Opal["$coerce_to!"](frac,$$$("Integer"),"to_int")),new Date(1e3*seconds+frac/1e3)))}),-2),$defs(self,"$new",(function(year,month,day,hour,min,sec,utc_offset){var args,result;return null==month&&(month=nil),null==day&&(day=nil),null==hour&&(hour=nil),null==min&&(min=nil),null==sec&&(sec=nil),null==utc_offset&&(utc_offset=nil),void 0===year?new Date:(utc_offset!==nil&&$Kernel.$raise($$$("ArgumentError"),"Opal does not support explicitly specifying UTC offset for Time"),year=(args=time_params(year,month,day,hour,min,sec))[0],month=args[1],day=args[2],hour=args[3],min=args[4],sec=args[5],result=new Date(year,month,day,hour,min,0,1e3*sec),year<100&&result.setFullYear(year),result)}),-1),$defs(self,"$local",(function(year,month,day,hour,min,sec,millisecond,_dummy1,_dummy2,_dummy3){var args,result;return null==month&&(month=nil),null==day&&(day=nil),null==hour&&(hour=nil),null==min&&(min=nil),null==sec&&(sec=nil),null==millisecond&&(millisecond=nil),null==_dummy1&&(_dummy1=nil),null==_dummy2&&(_dummy2=nil),null==_dummy3&&(_dummy3=nil),10===arguments.length&&(year=(args=$slice.call(arguments))[5],month=args[4],day=args[3],hour=args[2],min=args[1],sec=args[0]),year=(args=time_params(year,month,day,hour,min,sec))[0],month=args[1],day=args[2],hour=args[3],min=args[4],sec=args[5],result=new Date(year,month,day,hour,min,0,1e3*sec),year<100&&result.setFullYear(year),result}),-2),$defs(self,"$gm",(function(year,month,day,hour,min,sec,millisecond,_dummy1,_dummy2,_dummy3){var args,result;return null==month&&(month=nil),null==day&&(day=nil),null==hour&&(hour=nil),null==min&&(min=nil),null==sec&&(sec=nil),null==millisecond&&(millisecond=nil),null==_dummy1&&(_dummy1=nil),null==_dummy2&&(_dummy2=nil),null==_dummy3&&(_dummy3=nil),10===arguments.length&&(year=(args=$slice.call(arguments))[5],month=args[4],day=args[3],hour=args[2],min=args[1],sec=args[0]),year=(args=time_params(year,month,day,hour,min,sec))[0],month=args[1],day=args[2],hour=args[3],min=args[4],sec=args[5],result=new Date(Date.UTC(year,month,day,hour,min,0,1e3*sec)),year<100&&result.setUTCFullYear(year),result.is_utc=!0,result}),-2),$defs(self,"$now",(function(){return this.$new()}),0),$def(self,"$+",(function(other){$eqeqeq($$$("Time"),other)&&$Kernel.$raise($$$("TypeError"),"time + time?"),other.$$is_number||(other=$Opal["$coerce_to!"](other,$$$("Integer"),"to_int"));var result=new Date(this.getTime()+1e3*other);return result.is_utc=this.is_utc,result}),1),$def(self,"$-",(function(other){if($eqeqeq($$$("Time"),other))return(this.getTime()-other.getTime())/1e3;other.$$is_number||(other=$Opal["$coerce_to!"](other,$$$("Integer"),"to_int"));var result=new Date(this.getTime()-1e3*other);return result.is_utc=this.is_utc,result}),1),$def(self,"$<=>",(function(other){var r=nil;return $eqeqeq($$$("Time"),other)?this.$to_f()["$<=>"](other.$to_f()):(r=other["$<=>"](this),$truthy(r["$nil?"]())?nil:$truthy($rb_gt(r,0))?-1:$truthy($rb_lt(r,0))?1:0)}),1),$def(self,"$==",(function(other){var $ret_or_1;return $truthy($ret_or_1=$$$("Time")["$==="](other))?this.$to_f()===other.$to_f():$ret_or_1}),1),$def(self,"$asctime",(function(){return this.$strftime("%a %b %e %H:%M:%S %Y")}),0),$def(self,"$day",(function(){return this.is_utc?this.getUTCDate():this.getDate()}),0),$def(self,"$yday",(function(){var start_of_year,start_of_day;return start_of_year=$$("Time").$new(this.$year()).$to_i(),start_of_day=$$("Time").$new(this.$year(),this.$month(),this.$day()).$to_i(),86400,$rb_plus($rb_divide($rb_minus(start_of_day,start_of_year),86400).$round(),1)}),0),$def(self,"$isdst",(function(){var jan=new Date(this.getFullYear(),0,1),jul=new Date(this.getFullYear(),6,1);return this.getTimezoneOffset()"](other)["$zero?"]():$ret_or_1}),1),$def(self,"$friday?",(function(){return 5==this.$wday()}),0),$def(self,"$hash",(function(){return"Time:"+this.getTime()}),0),$def(self,"$hour",(function(){return this.is_utc?this.getUTCHours():this.getHours()}),0),$def(self,"$inspect",(function(){return $truthy(this["$utc?"]())?this.$strftime("%Y-%m-%d %H:%M:%S UTC"):this.$strftime("%Y-%m-%d %H:%M:%S %z")}),0),$def(self,"$min",(function(){return this.is_utc?this.getUTCMinutes():this.getMinutes()}),0),$def(self,"$mon",(function(){return(this.is_utc?this.getUTCMonth():this.getMonth())+1}),0),$def(self,"$monday?",(function(){return 1==this.$wday()}),0),$def(self,"$saturday?",(function(){return 6==this.$wday()}),0),$def(self,"$sec",(function(){return this.is_utc?this.getUTCSeconds():this.getSeconds()}),0),$def(self,"$succ",(function(){var result=new Date(this.getTime()+1e3);return result.is_utc=this.is_utc,result}),0),$def(self,"$usec",(function(){return 1e3*this.getMilliseconds()}),0),$def(self,"$zone",(function(){var result,string=this.toString();return"GMT"==(result=-1==string.indexOf("(")?string.match(/[A-Z]{3,4}/)[0]:string.match(/\((.+)\)(?:\s|$)/)[1])&&/(GMT\W*\d{4})/.test(string)?RegExp.$1:result}),0),$def(self,"$getgm",(function(){var result=new Date(this.getTime());return result.is_utc=!0,result}),0),$def(self,"$gmtime",(function(){return this.is_utc=!0,this}),0),$def(self,"$gmt?",(function(){return!0===this.is_utc}),0),$def(self,"$gmt_offset",(function(){return this.is_utc?0:60*-this.getTimezoneOffset()}),0),$def(self,"$strftime",(function(format){var self=this;return format.replace(/%([\-_#^0]*:{0,2})(\d+)?([EO]*)(.)/g,(function(full,flags,width,_,conv){var result="",zero=-1!==flags.indexOf("0"),pad=-1===flags.indexOf("-"),blank=-1!==flags.indexOf("_"),upcase=-1!==flags.indexOf("^"),invert=-1!==flags.indexOf("#"),colons=(flags.match(":")||[]).length;switch(width=parseInt(width,10),zero&&blank&&(flags.indexOf("0")=12?"pm":"am";break;case"p":result+=self.$hour()>=12?"PM":"AM";break;case"M":zero=!blank,result+=self.$min();break;case"S":zero=!blank,result+=self.$sec();break;case"L":zero=!blank,width=isNaN(width)?3:width,result+=self.getMilliseconds();break;case"N":width=isNaN(width)?9:width,result=(result+=self.getMilliseconds().toString().$rjust(3,"0")).$ljust(width,"0");break;case"z":var offset=self.getTimezoneOffset(),hours=Math.floor(Math.abs(offset)/60),minutes=Math.abs(offset)%60;result+=offset<0?"+":"-",result+=hours<10?"0":"",result+=hours,colons>0&&(result+=":"),result+=minutes<10?"0":"",result+=minutes,colons>1&&(result+=":00");break;case"Z":result+=self.$zone();break;case"A":result+=days_of_week[self.$wday()];break;case"a":result+=short_days[self.$wday()];break;case"u":result+=self.$wday()+1;break;case"w":result+=self.$wday();break;case"V":result+=self.$cweek_cyear()["$[]"](0).$to_s().$rjust(2,"0");break;case"G":result+=self.$cweek_cyear()["$[]"](1);break;case"g":result+=self.$cweek_cyear()["$[]"](1)["$[]"]($range(-2,-1,!1));break;case"s":result+=self.$to_i();break;case"n":result+="\n";break;case"t":result+="\t";break;case"%":result+="%";break;case"c":result+=self.$strftime("%a %b %e %T %Y");break;case"D":case"x":result+=self.$strftime("%m/%d/%y");break;case"F":result+=self.$strftime("%Y-%m-%d");break;case"v":result+=self.$strftime("%e-%^b-%4Y");break;case"r":result+=self.$strftime("%I:%M:%S %p");break;case"R":result+=self.$strftime("%H:%M");break;case"T":case"X":result+=self.$strftime("%H:%M:%S");break;default:return full}return upcase&&(result=result.toUpperCase()),invert&&(result=result.replace(/[A-Z]/,(function(c){c.toLowerCase()})).replace(/[a-z]/,(function(c){c.toUpperCase()}))),pad&&(zero||blank)&&(result=result.$rjust(isNaN(width)?2:width,blank?" ":"0")),result}))}),1),$def(self,"$sunday?",(function(){return 0==this.$wday()}),0),$def(self,"$thursday?",(function(){return 4==this.$wday()}),0),$def(self,"$to_a",(function(){return[this.$sec(),this.$min(),this.$hour(),this.$day(),this.$month(),this.$year(),this.$wday(),this.$yday(),this.$isdst(),this.$zone()]}),0),$def(self,"$to_f",(function(){return this.getTime()/1e3}),0),$def(self,"$to_i",(function(){return parseInt(this.getTime()/1e3,10)}),0),$def(self,"$tuesday?",(function(){return 2==this.$wday()}),0),$def(self,"$wday",(function(){return this.is_utc?this.getUTCDay():this.getDay()}),0),$def(self,"$wednesday?",(function(){return 3==this.$wday()}),0),$def(self,"$year",(function(){return this.is_utc?this.getUTCFullYear():this.getFullYear()}),0),$def(self,"$cweek_cyear",(function(){var jan01_wday,year=nil,offset=nil,week=nil,dec31_wday=nil;return jan01_wday=$$$("Time").$new(this.$year(),1,1).$wday(),0,year=this.$year(),$truthy($rb_le(jan01_wday,4))&&$neqeq(jan01_wday,0)?offset=$rb_minus(jan01_wday,1):(offset=$rb_minus($rb_minus(jan01_wday,7),1),$eqeq(offset,-8)&&(offset=-1)),week=$rb_divide($rb_plus(this.$yday(),offset),7).$ceil(),$truthy($rb_le(week,0))?$$$("Time").$new($rb_minus(this.$year(),1),12,31).$cweek_cyear():($eqeq(week,53)&&(dec31_wday=$$$("Time").$new(this.$year(),12,31).$wday(),$truthy($rb_le(dec31_wday,3))&&$neqeq(dec31_wday,0)&&(week=1,year=$rb_plus(year,1))),[week,year])}),0),function(self,$parent_nesting){$alias(self,"mktime","local"),$alias(self,"utc","gm")}(Opal.get_singleton_class(self)),$alias(self,"ctime","asctime"),$alias(self,"dst?","isdst"),$alias(self,"getutc","getgm"),$alias(self,"gmtoff","gmt_offset"),$alias(self,"mday","day"),$alias(self,"month","mon"),$alias(self,"to_s","inspect"),$alias(self,"tv_sec","to_i"),$alias(self,"tv_usec","usec"),$alias(self,"utc","gmtime"),$alias(self,"utc?","gmt?"),$alias(self,"utc_offset","gmt_offset")}(0,Date,[])},Opal.modules["corelib/struct"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$klass=Opal.klass,$hash2=Opal.hash2,$truthy=Opal.truthy,$neqeq=Opal.neqeq,$eqeq=Opal.eqeq,$Opal=Opal.Opal,$send=Opal.send,$Class=Opal.Class,$to_a=Opal.to_a,$def=Opal.def,$defs=Opal.defs,$Kernel=Opal.Kernel,$rb_gt=Opal.rb_gt,$rb_minus=Opal.rb_minus,$eqeqeq=Opal.eqeqeq,$rb_lt=Opal.rb_lt,$rb_ge=Opal.rb_ge,$rb_plus=Opal.rb_plus,$alias=Opal.alias;return Opal.add_stubs("require,include,!=,upcase,[],==,class,unshift,const_name!,map,coerce_to!,new,each,define_struct_attribute,allocate,initialize,alias_method,module_eval,to_proc,const_set,raise,<<,members,define_method,instance_eval,last,>,length,-,keys,any?,join,[]=,each_with_index,hash,===,<,-@,size,>=,include?,to_sym,instance_of?,__id__,eql?,enum_for,+,name,each_pair,inspect,to_h,args,each_with_object,flatten,to_a,respond_to?,dig"),self.$require("corelib/enumerable"),function($base,$super,$parent_nesting){var self=$klass("::",null,"Struct"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);self.$include($$$("Enumerable")),$defs(self,"$new",(function $Struct_new$1(const_name,$a,$b){var $post_args,$kwargs,args,keyword_init,block=$Struct_new$1.$$p||nil,self=this,klass=nil;if(delete $Struct_new$1.$$p,$post_args=Opal.slice.call(arguments,1),null==($kwargs=Opal.extract_kwargs($post_args)))$kwargs=$hash2([],{});else if(!$kwargs.$$is_hash)throw Opal.ArgumentError.$new("expected kwargs");if(args=$post_args,null==(keyword_init=$kwargs.$$smap.keyword_init)&&(keyword_init=!1),$truthy(const_name))if($eqeq(const_name.$class(),$$$("String"))&&$neqeq(const_name["$[]"](0).$upcase(),const_name["$[]"](0)))args.$unshift(const_name),const_name=nil;else try{const_name=$Opal["$const_name!"](const_name)}catch($err){if(!Opal.rescue($err,[$$$("TypeError"),$$$("NameError")]))throw $err;try{args.$unshift(const_name),const_name=nil}finally{Opal.pop_exception()}}return $send(args,"map",[],(function(arg){return null==arg&&(arg=nil),$Opal["$coerce_to!"](arg,$$$("String"),"to_str")}),1),klass=$send($Class,"new",[self],(function $$3(){var self=null==$$3.$$s?this:$$3.$$s;return $send(args,"each",[],(function $$4(arg){return null==arg&&(arg=nil),(null==$$4.$$s?this:$$4.$$s).$define_struct_attribute(arg)}),{$$arity:1,$$s:self}),function(self,$parent_nesting){return $def(self,"$new",(function($a){var args,self=this,instance=nil;return args=Opal.slice.call(arguments),(instance=self.$allocate()).$$data={},$send(instance,"initialize",$to_a(args)),instance}),-1),self.$alias_method("[]","new")}(Opal.get_singleton_class(self))}),{$$arity:0,$$s:self}),$truthy(block)&&$send(klass,"module_eval",[],block.$to_proc()),klass.$$keyword_init=keyword_init,$truthy(const_name)&&$$$("Struct").$const_set(const_name,klass),klass}),-2),$defs(self,"$define_struct_attribute",(function(name){return $eqeq(this,$$$("Struct"))&&$Kernel.$raise($$$("ArgumentError"),"you cannot define attributes to the Struct class"),this.$members()["$<<"](name),$send(this,"define_method",[name],(function $$6(){return(null==$$6.$$s?this:$$6.$$s).$$data[name]}),{$$arity:0,$$s:this}),$send(this,"define_method",[name+"="],(function $$7(value){return null==value&&(value=nil),(null==$$7.$$s?this:$$7.$$s).$$data[name]=value}),{$$arity:1,$$s:this})}),1),$defs(self,"$members",(function(){var $ret_or_1;return null==this.members&&(this.members=nil),$eqeq(this,$$$("Struct"))&&$Kernel.$raise($$$("ArgumentError"),"the Struct class has no members"),this.members=$truthy($ret_or_1=this.members)?$ret_or_1:[]}),0),$defs(self,"$inherited",(function(klass){var members;return null==this.members&&(this.members=nil),members=this.members,$send(klass,"instance_eval",[],(function $$8(){return(null==$$8.$$s?this:$$8.$$s).members=members}),{$$arity:0,$$s:this})}),1),$def(self,"$initialize",(function($a){var $post_args,args,self=this,kwargs=nil,$ret_or_1=nil,extra=nil;return $post_args=Opal.slice.call(arguments),args=$post_args,$truthy(self.$class().$$keyword_init)?(kwargs=$truthy($ret_or_1=args.$last())?$ret_or_1:$hash2([],{}),($truthy($rb_gt(args.$length(),1))||$truthy(1===args.length&&!kwargs.$$is_hash))&&$Kernel.$raise($$$("ArgumentError"),"wrong number of arguments (given "+args.$length()+", expected 0)"),extra=$rb_minus(kwargs.$keys(),self.$class().$members()),$truthy(extra["$any?"]())&&$Kernel.$raise($$$("ArgumentError"),"unknown keywords: "+extra.$join(", ")),$send(self.$class().$members(),"each",[],(function $$9(name){var $writer,self=null==$$9.$$s?this:$$9.$$s;return null==name&&(name=nil),$writer=[name,kwargs["$[]"](name)],$send(self,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:1,$$s:self})):($truthy($rb_gt(args.$length(),self.$class().$members().$length()))&&$Kernel.$raise($$$("ArgumentError"),"struct size differs"),$send(self.$class().$members(),"each_with_index",[],(function $$10(name,index){var $writer,self=null==$$10.$$s?this:$$10.$$s;return null==name&&(name=nil),null==index&&(index=nil),$writer=[name,args["$[]"](index)],$send(self,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:2,$$s:self}))}),-1),$def(self,"$initialize_copy",(function(from){this.$$data={};var i,max,name,keys=Object.keys(from.$$data);for(i=0,max=keys.length;i"):(inspect_stack["$<<"](self.$__id__()),pushed=!0,$eqeqeq($$$("Struct"),self)&&$truthy(self.$class().$name())&&(result=$rb_plus(result,self.$class()+" ")),result=$rb_plus(result,$send(self.$each_pair(),"map",[],(function(name,value){return null==name&&(name=nil),null==value&&(value=nil),name+"="+$$("Opal").$inspect(value)}),2).$join(", ")),result=$rb_plus(result,">"))}finally{$truthy(pushed)&&inspect_stack.pop()}}()}),0),$def(self,"$to_h",(function $$to_h(){var block=$$to_h.$$p||nil;return delete $$to_h.$$p,block!==nil?$send($send(this,"map",[],block.$to_proc()),"to_h",$to_a(this.$args())):$send(this.$class().$members(),"each_with_object",[$hash2([],{})],(function $$22(name,h){var $writer;return null==name&&(name=nil),null==h&&(h=nil),$writer=[name,(null==$$22.$$s?this:$$22.$$s)["$[]"](name)],$send(h,"[]=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]}),{$$arity:2,$$s:this})}),0),$def(self,"$values_at",(function($a){var $post_args,args,self=this;$post_args=Opal.slice.call(arguments);for(var result=[],i=0,len=(args=$send(args=$post_args,"map",[],(function(arg){return null==arg&&(arg=nil),arg.$$is_range?arg.$to_a():arg}),1).$flatten()).length;i>>1^(1&v?2567483615:0)};function genrand_int32(mt){var y;return--mt.left<=0&&function(mt){var j,p=0,_p=mt.state;for(mt.left=N,mt.next=0,j=228;--j;p++)_p[p]=_p[p+M]^TWIST(_p[p+0],_p[p+1]);for(j=M;--j;p++)_p[p]=_p[p+(M-N)]^TWIST(_p[p+0],_p[p+1]);_p[p]=_p[p+(M-N)]^TWIST(_p[p+0],_p[0])}(mt),y=mt.state[mt.next++],y^=y>>>11,y^=y<<7&2636928640,y^=y<<15&4022730752,(y^=y>>>18)>>>0}return{genrand_real:function(mt){return function(a,b){return(67108864*(a>>>=5)+(b>>>=6))*(1/9007199254740992)}(genrand_int32(mt),genrand_int32(mt))},init:function(s){var mt={left:0,next:N,state:new Array(N)};return function(mt,s){var j;for(mt.state[0]=s>>>0,j=1;j>30>>>0)+j,mt.state[j]&=4294967295;mt.left=1,mt.next=N}(mt,s),mt}}}(),self=$klass("::",null,"Random"),MAX_INT=Number.MAX_SAFE_INTEGER||Math.pow(2,53)-1,$const_set(self,"MERSENNE_TWISTER_GENERATOR",{new_seed:function(){return Math.round(Math.random()*MAX_INT)},reseed:function(seed){return mersenne_twister.init(seed)},rand:function(mt){return mersenne_twister.genrand_real(mt)}}),$writer=[$$$(self,"MERSENNE_TWISTER_GENERATOR")],$send(self,"generator=",$to_a($writer)),$writer[$rb_minus($writer.length,1)]},Opal.modules["corelib/random"]=function(Opal){var self=Opal.top,$$$=(Opal.nil,Opal.$$$),$truthy=Opal.truthy,$klass=Opal.klass,$Kernel=Opal.Kernel,$defs=Opal.defs,$Opal=Opal.Opal,$def=Opal.def,$eqeqeq=Opal.eqeqeq,$send=Opal.send;return Opal.add_stubs("require,attr_reader,to_int,raise,new_seed,coerce_to!,reseed,rand,seed,bytes,===,==,state,_verify_count,encode,join,new,chr,random_number,random_float,const_defined?,const_set"),self.$require("corelib/random/formatter"),function($base,$super){var self=$klass("::",null,"Random");self.$attr_reader("seed","state"),$defs(self,"$_verify_count",(function(count){return $truthy(count)||(count=16),"number"!=typeof count&&(count=count.$to_int()),count<0&&$Kernel.$raise($$$("ArgumentError"),"negative string size (or size too big)"),count=Math.floor(count)}),1),$def(self,"$initialize",(function(seed){return null==seed&&(seed=$$$("Random").$new_seed()),seed=$Opal["$coerce_to!"](seed,$$$("Integer"),"to_int"),this.state=seed,this.$reseed(seed)}),-1),$def(self,"$reseed",(function(seed){return this.seed=seed,this.$rng=Opal.$$rand.reseed(seed)}),1),$defs(self,"$new_seed",(function(){return Opal.$$rand.new_seed()}),0),$defs(self,"$rand",(function(limit){return $$$(this,"DEFAULT").$rand(limit)}),-1),$defs(self,"$srand",(function(n){var previous_seed;return null==n&&(n=$$$("Random").$new_seed()),n=$Opal["$coerce_to!"](n,$$$("Integer"),"to_int"),previous_seed=$$$(this,"DEFAULT").$seed(),$$$(this,"DEFAULT").$reseed(n),previous_seed}),-1),$defs(self,"$urandom",(function(size){return $$$("SecureRandom").$bytes(size)}),1),$def(self,"$==",(function(other){var $ret_or_1;return!!$eqeqeq($$$("Random"),other)&&($truthy($ret_or_1=this.$seed()["$=="](other.$seed()))?this.$state()["$=="](other.$state()):$ret_or_1)}),1),$def(self,"$bytes",(function(length){return length=$$$("Random").$_verify_count(length),$send($$$("Array"),"new",[length],(function $$2(){return(null==$$2.$$s?this:$$2.$$s).$rand(255).$chr()}),{$$arity:0,$$s:this}).$join().$encode("ASCII-8BIT")}),1),$defs(self,"$bytes",(function(length){return $$$(this,"DEFAULT").$bytes(length)}),1),$def(self,"$rand",(function(limit){return this.$random_number(limit)}),-1),$def(self,"$random_float",(function(){return this.state++,Opal.$$rand.rand(this.$rng)}),0),$defs(self,"$random_float",(function(){return $$$(this,"DEFAULT").$random_float()}),0),$defs(self,"$generator=",(function(generator){return Opal.$$rand=generator,$truthy(this["$const_defined?"]("DEFAULT"))?$$$(this,"DEFAULT").$reseed():this.$const_set("DEFAULT",this.$new(this.$new_seed()))}),1)}(),self.$require("corelib/random/mersenne_twister")},Opal.modules["corelib/unsupported"]=function(Opal){var self=Opal.top,nil=Opal.nil,$$$=Opal.$$$,$Kernel=Opal.Kernel,$klass=Opal.klass,$send=Opal.send,$module=Opal.module,$def=Opal.def,$alias=Opal.alias,$defs=Opal.defs;Opal.add_stubs("raise,warn,each,define_method,%");var warnings={};function handle_unsupported_feature(message){switch(Opal.config.unsupported_features_severity){case"error":$Kernel.$raise($$$("NotImplementedError"),message);break;case"warning":!function(string){if(warnings[string])return;warnings[string]=!0,self.$warn(string)}(message)}}return function($base,$super){var self=$klass("::",null,"String"),ERROR="String#%s not supported. Mutable String methods are not supported in Opal.";$send(["<<","capitalize!","chomp!","chop!","downcase!","gsub!","lstrip!","next!","reverse!","slice!","squeeze!","strip!","sub!","succ!","swapcase!","tr!","tr_s!","upcase!","prepend","[]=","clear","encode!","unicode_normalize!"],"each",[],(function $String$1(method_name){return null==method_name&&(method_name=nil),$send(null==$String$1.$$s?this:$String$1.$$s,"define_method",[method_name],(function($a){return Opal.slice.call(arguments),$Kernel.$raise($$$("NotImplementedError"),ERROR["$%"](method_name))}),-1)}),{$$arity:1,$$s:self})}(),function($base){var self=$module("::","Kernel"),ERROR="Object freezing is not supported by Opal";$def(self,"$freeze",(function(){return handle_unsupported_feature(ERROR),this}),0),$def(self,"$frozen?",(function(){return handle_unsupported_feature(ERROR),!1}),0)}(),function($base){var self=$module("::","Kernel"),ERROR="Object tainting is not supported by Opal";$def(self,"$taint",(function(){return handle_unsupported_feature(ERROR),this}),0),$def(self,"$untaint",(function(){return handle_unsupported_feature(ERROR),this}),0),$def(self,"$tainted?",(function(){return handle_unsupported_feature(ERROR),!1}),0)}(),function($base,$super){var self=$klass("::",null,"Module");$def(self,"$public",(function($a){var methods,self=this;return 0===(methods=Opal.slice.call(arguments)).length?(self.$$module_function=!1,nil):1===methods.length?methods[0]:methods}),-1),$def(self,"$private_class_method",(function($a){var methods;return 1===(methods=Opal.slice.call(arguments)).length?methods[0]:methods}),-1),$def(self,"$private_method_defined?",(function(obj){return!1}),1),$def(self,"$private_constant",(function($a){return Opal.slice.call(arguments),nil}),-1),$alias(self,"nesting","public"),$alias(self,"private","public"),$alias(self,"protected","public"),$alias(self,"protected_method_defined?","private_method_defined?"),$alias(self,"public_class_method","private_class_method"),$alias(self,"public_instance_method","instance_method"),$alias(self,"public_instance_methods","instance_methods"),$alias(self,"public_method_defined?","method_defined?")}(),function($base){var self=$module("::","Kernel");$def(self,"$private_methods",(function($a){return Opal.slice.call(arguments),[]}),-1),$alias(self,"private_instance_methods","private_methods")}(),function($base,$parent_nesting){var self=$module("::","Kernel"),$nesting=[self].concat($parent_nesting),$$=Opal.$r($nesting);$def(self,"$eval",(function($a){return Opal.slice.call(arguments),$Kernel.$raise($$$("NotImplementedError"),"To use Kernel#eval, you must first require 'opal-parser'. See https://github.com/opal/opal/blob/"+$$("RUBY_ENGINE_VERSION")+"/docs/opal_parser.md for details.")}),-1)}(0,[]),$defs(self,"$public",(function($a){var methods;return 1===(methods=Opal.slice.call(arguments)).length?methods[0]:methods}),-1),$defs(self,"$private",(function($a){var methods;return 1===(methods=Opal.slice.call(arguments)).length?methods[0]:methods}),-1)},Opal.queue((function(Opal){Opal.nil;var $Object=Opal.Object;return Opal.add_stubs("require,autoload"),$Object.$require("opal/base"),$Object.$require("opal/mini"),$Object.$require("corelib/kernel/format"),$Object.$require("corelib/string/encoding"),$Object.$autoload("Math","corelib/math"),$Object.$require("corelib/complex/base"),$Object.$autoload("Complex","corelib/complex"),$Object.$require("corelib/rational/base"),$Object.$autoload("Rational","corelib/rational"),$Object.$require("corelib/time"),$Object.$autoload("Struct","corelib/struct"),$Object.$require("corelib/dir"),$Object.$autoload("File","corelib/file"),$Object.$require("corelib/process/base"),$Object.$autoload("Process","corelib/process"),$Object.$autoload("Random","corelib/random"),$Object.$require("corelib/unsupported")})); diff --git a/opal/current/opal.min.js.gz b/opal/current/opal.min.js.gz index 21ae8eca..dcdf115e 100644 Binary files a/opal/current/opal.min.js.gz and b/opal/current/opal.min.js.gz differ diff --git a/opal/current/open-uri.js b/opal/current/open-uri.js index 9e78f029..8568b971 100644 --- a/opal/current/open-uri.js +++ b/opal/current/open-uri.js @@ -1,4 +1,4 @@ -Opal.modules["stringio"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["stringio"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $defs = Opal.defs, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $rb_ge = Opal.rb_ge, $rb_gt = Opal.rb_gt, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq, $alias = Opal.alias; Opal.add_stubs('new,call,close,attr_accessor,check_readable,==,length,===,>=,raise,>,+,-,seek,check_writable,String,[],eof?,write,read'); @@ -145,7 +145,7 @@ Opal.modules["stringio"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $$('IO'), $nesting) }; -Opal.modules["corelib/pack_unpack/format_string_parser"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/pack_unpack/format_string_parser"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $Kernel = Opal.Kernel; Opal.add_stubs('raise'); @@ -289,7 +289,7 @@ Opal.modules["corelib/pack_unpack/format_string_parser"] = function(Opal) {/* Ge })('::') }; -Opal.modules["corelib/array/pack"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/array/pack"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, nil = Opal.nil, $$$ = Opal.$$$, $coerce_to = Opal.coerce_to, $klass = Opal.klass, $Kernel = Opal.Kernel, $Opal = Opal.Opal, $def = Opal.def; Opal.add_stubs('require,raise,delete,gsub,coerce_to!,inspect'); @@ -751,7 +751,7 @@ Opal.modules["corelib/array/pack"] = function(Opal) {/* Generated by Opal 1.4.0 })('::', null); }; -Opal.modules["open-uri"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["open-uri"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $alias = Opal.alias, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $def = Opal.def, $hash2 = Opal.hash2, $defs = Opal.defs, $eqeq = Opal.eqeq, $rb_minus = Opal.rb_minus, $klass = Opal.klass, $send2 = Opal.send2, $find_super = Opal.find_super, $rb_plus = Opal.rb_plus, $eqeqeq = Opal.eqeqeq; Opal.add_stubs('require,private,=~,respond_to?,open_uri,to_proc,open_uri_original_open,module_function,open_loop,rewind,close_io,close!,closed?,close,request,==,build_response,raise,new,<<,pack,data,io,status=,-,meta_add_field,attr_reader,+,length,===,init,extend,instance_eval,status,base_uri,base_uri=,each,metas,meta_add_field2,attr_accessor,charset,find_encoding,set_encoding,force_encoding,string,find,downcase,[]=,join,meta_setup_encoding,[],utc,at,content_type_parse,scheme,open,read'); diff --git a/opal/current/optparse.js b/opal/current/optparse.js index 59ca3b0f..f479b94d 100644 --- a/opal/current/optparse.js +++ b/opal/current/optparse.js @@ -1,4 +1,4 @@ -Opal.modules["optparse/version"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["optparse/version"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $send = Opal.send, $eqeq = Opal.eqeq, $Object = Opal.Object, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $def = Opal.def, $regexp = Opal.regexp, $neqeq = Opal.neqeq; Opal.add_stubs('program_name,options,proc,to_s,==,===,join,<<,find,const_defined?,const_get,puts,[],size,search_const,call,intern,each,inject,split,raise,grep,constants,shift,!='); @@ -149,7 +149,7 @@ Opal.modules["optparse/version"] = function(Opal) {/* Generated by Opal 1.4.0 */ })(Opal.get_singleton_class($$('OptionParser')), $nesting) }; -Opal.modules["shellwords"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["shellwords"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $rb_plus = Opal.rb_plus, $send = Opal.send, $to_ary = Opal.to_ary, $truthy = Opal.truthy, $def = Opal.def, $alias = Opal.alias, $klass = Opal.klass; Opal.add_stubs('+,new,scan,raise,inspect,gsub,<<,module_function,to_s,empty?,dup,join,map,shellescape,split,escape'); @@ -259,7 +259,7 @@ Opal.modules["shellwords"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], null, $nesting); }; -Opal.modules["optparse"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["optparse"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $const_set = Opal.const_set, $module = Opal.module, $rb_plus = Opal.rb_plus, $defs = Opal.defs, $truthy = Opal.truthy, $send = Opal.send, $eqeqeq = Opal.eqeqeq, $def = Opal.def, $eqeq = Opal.eqeq, $to_ary = Opal.to_ary, $rb_gt = Opal.rb_gt, $to_a = Opal.to_a, $rb_ge = Opal.rb_ge, $hash2 = Opal.hash2, $rb_minus = Opal.rb_minus, $rb_lt = Opal.rb_lt, $rb_times = Opal.rb_times, $not = Opal.not, $slice = Opal.slice, $gvars = Opal.gvars, $alias = Opal.alias, $send2 = Opal.send2, $find_super = Opal.find_super, $rb_le = Opal.rb_le, $neqeq = Opal.neqeq, $lambda = Opal.lambda, $regexp = Opal.regexp, $enc = Opal.enc; Opal.add_stubs('freeze,new,+,gsub,quote,regexp,call,===,id2name,empty?,<<,candidate,to_proc,method,public,sort_by,size,==,[],>,shift,each,rindex,throw,include,attr_reader,>=,incompatible_argument_styles,raise,filter_backtrace,caller,pattern,match,to_a,length,private,conv,proc,block,-,fetch,[]=,join,dup,desc,arg,<,+@,*,sub,to_i,max,collect,!,ljust,to_s,=~,first,long,short,last_match,conv_arg,parse_arg,respond_to?,delete,update,invert,delete_if,unshift,push,__send__,complete,keys,list,reverse_each,summarize,concat,reverse,each_line,add_banner,compsys,catch,basename,visit,puts,help,exit,require,show_version,split,abort,program_name,ver,instance_eval,nonzero?,inc,class,add_officious,base,terminate,accept,top,reject,attr_writer,attr_accessor,version,release,pop,index,banner,<=,search,notwice,!=,any?,guess,tr,downcase,append,make_switch,define,prepend,define_head,define_tail,order!,default_argv,to_sym,parse_in_order,include?,require_exact,set_option,parse,switch_name,delete_prefix,match_nonswitch?,permute!,parse!,scan,compact,getopts,curry,select!,is_a?,message_for,formatter,&,correct,map,map!,load,expand_path,readlines,upcase,shellwords,nil?,Integer,to_f,Rational,Float,|,args,reason,additional,const_set,undef_method,default_argv=,warn,options,extend'); diff --git a/opal/current/ostruct.js b/opal/current/ostruct.js index d5952a57..70cc45a9 100644 --- a/opal/current/ostruct.js +++ b/opal/current/ostruct.js @@ -1,4 +1,4 @@ -Opal.modules["ostruct"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["ostruct"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $rb_gt = Opal.rb_gt, $neqeq = Opal.neqeq, $range = Opal.range, $send2 = Opal.send2, $find_super = Opal.find_super, $rb_plus = Opal.rb_plus, $alias = Opal.alias; Opal.add_stubs('each_pair,new_ostruct_member,[]=,-,[],to_sym,>,length,raise,new,end_with?,!=,chomp,to_s,key?,enum_for,is_a?,==,instance_variable_get,===,eql?,dup,to_n,hash,attr_reader,__send__,singleton_class,delete,respond_to?,define_singleton_method,__id__,class,any?,+,join,map,inspect'); diff --git a/opal/current/pathname.js b/opal/current/pathname.js index 6b78f0e6..32747a98 100644 --- a/opal/current/pathname.js +++ b/opal/current/pathname.js @@ -1,4 +1,4 @@ -Opal.modules["corelib/comparable"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/comparable"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil, $$$ = Opal.$$$, $truthy = Opal.truthy, $module = Opal.module, $rb_gt = Opal.rb_gt, $rb_lt = Opal.rb_lt, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $def = Opal.def; Opal.add_stubs('>,<,===,raise,class,<=>,equal?'); @@ -139,7 +139,7 @@ Opal.modules["corelib/comparable"] = function(Opal) {/* Generated by Opal 1.4.0 })('::') }; -Opal.modules["pathname"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["pathname"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $const_set = Opal.const_set, $regexp = Opal.regexp, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $eqeq = Opal.eqeq, $def = Opal.def, $defs = Opal.defs, $to_ary = Opal.to_ary, $send = Opal.send, $to_a = Opal.to_a, $neqeq = Opal.neqeq, $rb_plus = Opal.rb_plus, $not = Opal.not, $alias = Opal.alias, $module = Opal.module; Opal.add_stubs('require,include,quote,===,to_s,path,respond_to?,to_path,is_a?,nil?,raise,class,==,new,pwd,attr_reader,!,relative?,chop_basename,basename,=~,source,[],rindex,sub,absolute?,expand_path,plus,unshift,length,!=,empty?,first,shift,+,join,dirname,pop,reverse_each,directory?,extname,<=>,nonzero?,proc,casecmp,cleanpath,inspect,include?,fill,map,entries'); diff --git a/opal/current/pp.js b/opal/current/pp.js index 0b749f9d..e21b27a2 100644 --- a/opal/current/pp.js +++ b/opal/current/pp.js @@ -1,4 +1,4 @@ -Opal.modules["thread"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["thread"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $truthy = Opal.truthy, $defs = Opal.defs, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $hash2 = Opal.hash2, $Opal = Opal.Opal, $alias = Opal.alias, $const_set = Opal.const_set; Opal.add_stubs('allocate,core_initialize!,current,raise,[],coerce_key_name,[]=,-,key?,keys,private,coerce_to!,clear,empty?,size,shift,push,each,to_proc,=~,last_match,to_i,inspect,attr_reader,locked?,lock,unlock'); @@ -293,7 +293,7 @@ Opal.modules["thread"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], null, $nesting); }; -Opal.modules["stringio"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["stringio"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $defs = Opal.defs, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $rb_ge = Opal.rb_ge, $rb_gt = Opal.rb_gt, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq, $alias = Opal.alias; Opal.add_stubs('new,call,close,attr_accessor,check_readable,==,length,===,>=,raise,>,+,-,seek,check_writable,String,[],eof?,write,read'); @@ -440,7 +440,7 @@ Opal.modules["stringio"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], $$('IO'), $nesting) }; -Opal.modules["prettyprint"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["prettyprint"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $klass = Opal.klass, $send = Opal.send, $rb_times = Opal.rb_times, $defs = Opal.defs, $truthy = Opal.truthy, $def = Opal.def, $rb_lt = Opal.rb_lt, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $eqeqeq = Opal.eqeqeq, $to_a = Opal.to_a; Opal.add_stubs('dup,lambda,*,new,to_proc,flush,attr_reader,last,<,+,deq,empty?,breakables,shift,output,-,width,!,===,first,length,<<,add,break_outmost_groups,group,breakable,break?,call,text,group_sub,nest,depth,push,enq,pop,delete,each,clear,indent,current_group,newline,genspace,group_queue,[],downto,slice!,break,[]='); @@ -965,7 +965,7 @@ Opal.modules["prettyprint"] = function(Opal) {/* Generated by Opal 1.4.0 */ })($nesting[0], null, $nesting) }; -Opal.modules["pp"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["pp"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $gvars = Opal.gvars, $send = Opal.send, $defs = Opal.defs, $to_a = Opal.to_a, $module = Opal.module, $eqeq = Opal.eqeq, $hash2 = Opal.hash2, $rb_minus = Opal.rb_minus, $def = Opal.def, $truthy = Opal.truthy, $rb_plus = Opal.rb_plus, $eqeqeq = Opal.eqeqeq, $neqeq = Opal.neqeq, $not = Opal.not, $rb_gt = Opal.rb_gt, $rb_le = Opal.rb_le; Opal.add_stubs('require,new,guard_inspect_key,pp,flush,<<,bind_call,instance_method,to_proc,attr_accessor,==,[],current,compare_by_identity,[]=,-,include?,delete,text,is_a?,__getobj__,check_inspect_key,group,pretty_print_cycle,push_inspect_key,pretty_print,sharing_detection,pop_inspect_key,+,name,class,chomp,breakable,lambda,comma_breakable,__send__,call,object_address_group,seplist,pretty_print_instance_variables,===,to_s,instance_eval,include,!=,owner,inspect,respond_to?,!,pp_object,sort,instance_variables,raise,singleline_pp,dup,empty?,pp_hash,each,keys,sprintf,mcall,begin,exclude_end?,end,lines,>,size,named_captures,regexp,object_group,class_eval,string,<=,first,module_function'); diff --git a/opal/current/prettyprint.js b/opal/current/prettyprint.js index 93d4aac9..20e52fa5 100644 --- a/opal/current/prettyprint.js +++ b/opal/current/prettyprint.js @@ -1,4 +1,4 @@ -Opal.modules["prettyprint"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["prettyprint"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $klass = Opal.klass, $send = Opal.send, $rb_times = Opal.rb_times, $defs = Opal.defs, $truthy = Opal.truthy, $def = Opal.def, $rb_lt = Opal.rb_lt, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $eqeqeq = Opal.eqeqeq, $to_a = Opal.to_a; Opal.add_stubs('dup,lambda,*,new,to_proc,flush,attr_reader,last,<,+,deq,empty?,breakables,shift,output,-,width,!,===,first,length,<<,add,break_outmost_groups,group,breakable,break?,call,text,group_sub,nest,depth,push,enq,pop,delete,each,clear,indent,current_group,newline,genspace,group_queue,[],downto,slice!,break,[]='); diff --git a/opal/current/promise.js b/opal/current/promise.js index fde0e640..8564347d 100644 --- a/opal/current/promise.js +++ b/opal/current/promise.js @@ -1,4 +1,4 @@ -Opal.modules["promise"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["promise"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $klass = Opal.klass, $defs = Opal.defs, $hash2 = Opal.hash2, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $not = Opal.not, $send = Opal.send, $to_a = Opal.to_a, $rb_plus = Opal.rb_plus, $alias = Opal.alias, $send2 = Opal.send2, $find_super = Opal.find_super, $rb_le = Opal.rb_le, $rb_minus = Opal.rb_minus, $const_set = Opal.const_set; Opal.add_stubs('resolve,new,reject,attr_reader,===,value,key?,keys,!=,==,<<,>>,exception?,[],resolved?,rejected?,!,error,include?,action,realized?,raise,^,call,resolve!,exception!,any?,each,reject!,there_can_be_only_one!,then,to_proc,fail,always,trace,class,object_id,+,inspect,rescue,nil?,prev,act?,push,concat,it,proc,reverse,pop,<=,length,shift,-,wait,map,reduce,try,tap,all?,find'); diff --git a/opal/current/quickjs.js b/opal/current/quickjs.js index f8592e03..e0db9726 100644 --- a/opal/current/quickjs.js +++ b/opal/current/quickjs.js @@ -1,4 +1,4 @@ -Opal.modules["quickjs/io"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["quickjs/io"] = function(Opal) {/* Generated by Opal 1.4.1 */ var nil = Opal.nil; @@ -23,7 +23,7 @@ Opal.modules["quickjs/io"] = function(Opal) {/* Generated by Opal 1.4.0 */ }; -Opal.modules["quickjs/kernel"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["quickjs/kernel"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $const_set = Opal.const_set; @@ -31,7 +31,7 @@ Opal.modules["quickjs/kernel"] = function(Opal) {/* Generated by Opal 1.4.0 */ return Opal.exit = std.exit;; }; -Opal.modules["quickjs"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["quickjs"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, nil = Opal.nil; Opal.add_stubs('require'); diff --git a/opal/current/rbconfig.js b/opal/current/rbconfig.js index 612d0bc6..fa99da9a 100644 --- a/opal/current/rbconfig.js +++ b/opal/current/rbconfig.js @@ -1,4 +1,4 @@ -Opal.modules["rbconfig"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["rbconfig"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $const_set = Opal.const_set, $hash2 = Opal.hash2; Opal.add_stubs('split,[]'); diff --git a/opal/current/securerandom.js b/opal/current/securerandom.js index ea60f3c7..14ce98ce 100644 --- a/opal/current/securerandom.js +++ b/opal/current/securerandom.js @@ -1,4 +1,4 @@ -Opal.modules["corelib/random/formatter"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["corelib/random/formatter"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $module = Opal.module, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $range = Opal.range, $rb_divide = Opal.rb_divide, $Kernel = Opal.Kernel, $Opal = Opal.Opal; Opal.add_stubs('_verify_count,bytes,encode,strict_encode64,random_bytes,urlsafe_encode64,split,hex,[]=,-,[],map,to_proc,join,times,<<,|,ord,/,abs,random_float,raise,coerce_to!,flatten,new,random_number,length,include,extend'); @@ -180,7 +180,7 @@ Opal.modules["corelib/random/formatter"] = function(Opal) {/* Generated by Opal })('::', null, $nesting) }; -Opal.modules["securerandom"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["securerandom"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $module = Opal.module, $defs = Opal.defs; Opal.add_stubs('require,extend,warn,rand,gen_random,_verify_count,encode'); diff --git a/opal/current/set.js b/opal/current/set.js index 7c059c87..50d69495 100644 --- a/opal/current/set.js +++ b/opal/current/set.js @@ -1,4 +1,4 @@ -Opal.modules["set"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["set"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $defs = Opal.defs, $hash2 = Opal.hash2, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $Kernel = Opal.Kernel, $send = Opal.send, $def = Opal.def, $eqeq = Opal.eqeq, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $rb_lt = Opal.rb_lt, $rb_le = Opal.rb_le, $alias = Opal.alias, $module = Opal.module; Opal.add_stubs('include,new,nil?,===,raise,each,add,merge,class,respond_to?,subtract,dup,join,to_a,equal?,instance_of?,==,instance_variable_get,size,is_a?,all?,include?,[]=,-,enum_for,[],<<,replace,delete,select,reject,delete_if,to_proc,keep_if,each_key,empty?,eql?,instance_eval,clear,<,<=,any?,!,intersect?,keys'); diff --git a/opal/current/shellwords.js b/opal/current/shellwords.js index f575501d..7b5ae690 100644 --- a/opal/current/shellwords.js +++ b/opal/current/shellwords.js @@ -1,4 +1,4 @@ -Opal.modules["shellwords"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["shellwords"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $rb_plus = Opal.rb_plus, $send = Opal.send, $to_ary = Opal.to_ary, $truthy = Opal.truthy, $def = Opal.def, $alias = Opal.alias, $klass = Opal.klass; Opal.add_stubs('+,new,scan,raise,inspect,gsub,<<,module_function,to_s,empty?,dup,join,map,shellescape,split,escape'); diff --git a/opal/current/singleton.js b/opal/current/singleton.js index 91572b8f..e8c8fb1e 100644 --- a/opal/current/singleton.js +++ b/opal/current/singleton.js @@ -1,4 +1,4 @@ -Opal.modules["singleton"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["singleton"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $module = Opal.module, $def = Opal.def, $send2 = Opal.send2, $find_super = Opal.find_super, $send = Opal.send, $truthy = Opal.truthy, $defs = Opal.defs; Opal.add_stubs('raise,class,__init__,instance_eval,new,extend'); diff --git a/opal/current/stringio.js b/opal/current/stringio.js index 267806d8..c08f7a5e 100644 --- a/opal/current/stringio.js +++ b/opal/current/stringio.js @@ -1,4 +1,4 @@ -Opal.modules["stringio"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["stringio"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $defs = Opal.defs, $send2 = Opal.send2, $find_super = Opal.find_super, $def = Opal.def, $eqeqeq = Opal.eqeqeq, $truthy = Opal.truthy, $rb_ge = Opal.rb_ge, $rb_gt = Opal.rb_gt, $rb_plus = Opal.rb_plus, $rb_minus = Opal.rb_minus, $eqeq = Opal.eqeq, $alias = Opal.alias; Opal.add_stubs('new,call,close,attr_accessor,check_readable,==,length,===,>=,raise,>,+,-,seek,check_writable,String,[],eof?,write,read'); diff --git a/opal/current/strscan.js b/opal/current/strscan.js index 128d132d..726a1599 100644 --- a/opal/current/strscan.js +++ b/opal/current/strscan.js @@ -1,4 +1,4 @@ -Opal.modules["strscan"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["strscan"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $klass = Opal.klass, $def = Opal.def, $truthy = Opal.truthy, $eqeqeq = Opal.eqeqeq, $Opal = Opal.Opal, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $alias = Opal.alias; Opal.add_stubs('attr_reader,anchor,empty?,===,to_s,coerce_to!,scan_until,length,size,rest,pos=,-,private'); diff --git a/opal/current/template.js b/opal/current/template.js index f33e667a..31760f3c 100644 --- a/opal/current/template.js +++ b/opal/current/template.js @@ -1,4 +1,4 @@ -Opal.modules["template"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["template"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $defs = Opal.defs, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $def = Opal.def, $alias = Opal.alias; Opal.add_stubs('[],[]=,-,keys,attr_reader,instance_exec,new,to_proc,<<,join'); diff --git a/opal/current/thread.js b/opal/current/thread.js index 3fca674d..9dee1285 100644 --- a/opal/current/thread.js +++ b/opal/current/thread.js @@ -1,4 +1,4 @@ -Opal.modules["thread"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["thread"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], $$ = Opal.$r($nesting), nil = Opal.nil, $$$ = Opal.$$$, $klass = Opal.klass, $truthy = Opal.truthy, $defs = Opal.defs, $def = Opal.def, $send = Opal.send, $to_a = Opal.to_a, $rb_minus = Opal.rb_minus, $hash2 = Opal.hash2, $Opal = Opal.Opal, $alias = Opal.alias, $const_set = Opal.const_set; Opal.add_stubs('allocate,core_initialize!,current,raise,[],coerce_key_name,[]=,-,key?,keys,private,coerce_to!,clear,empty?,size,shift,push,each,to_proc,=~,last_match,to_i,inspect,attr_reader,locked?,lock,unlock'); diff --git a/opal/current/time.js b/opal/current/time.js index b5d8991f..2be7b6d9 100644 --- a/opal/current/time.js +++ b/opal/current/time.js @@ -1,4 +1,4 @@ -Opal.modules["time"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["time"] = function(Opal) {/* Generated by Opal 1.4.1 */ var $nesting = [], nil = Opal.nil, $klass = Opal.klass, $defs = Opal.defs, $def = Opal.def; Opal.add_stubs('strftime'); diff --git a/opal/current/yaml.js b/opal/current/yaml.js index f4432de6..d8916d71 100644 --- a/opal/current/yaml.js +++ b/opal/current/yaml.js @@ -1,4 +1,4 @@ -Opal.modules["yaml"] = function(Opal) {/* Generated by Opal 1.4.0 */ +Opal.modules["yaml"] = function(Opal) {/* Generated by Opal 1.4.1 */ var self = Opal.top, nil = Opal.nil; Opal.add_stubs('warn');